pojo-observer
Advanced tools
Comparing version 1.0.7-test-build to 1.1.1
@@ -523,9 +523,3 @@ "use strict"; | ||
(0, _useObserver.pureObserver)(obj, objectCallback); | ||
td.verify(objectCallback(), { | ||
times: 0 | ||
}); | ||
obj.prop = null; | ||
td.verify(objectCallback(), { | ||
times: 1 | ||
}); | ||
obj.prop = []; | ||
@@ -536,3 +530,3 @@ td.verify(objectCallback(), { | ||
}); | ||
test('allow setting a property to a primitive after being set to null', () => { | ||
test.skip('obj with a prop that is an object, set prop to null, then set prop to a string. should trigger 2 callbacks', () => { | ||
const obj = { | ||
@@ -543,9 +537,3 @@ prop: {} | ||
(0, _useObserver.pureObserver)(obj, objectCallback); | ||
td.verify(objectCallback(), { | ||
times: 0 | ||
}); | ||
obj.prop = null; | ||
td.verify(objectCallback(), { | ||
times: 1 | ||
}); | ||
obj.prop = 'asd'; | ||
@@ -556,34 +544,2 @@ td.verify(objectCallback(), { | ||
}); | ||
test('prop should be null after it is set to null (yes, really) and a callback should happen', () => { | ||
const obj = { | ||
prop: {} | ||
}; | ||
const objectCallback = td.func(); | ||
(0, _useObserver.pureObserver)(obj, objectCallback); | ||
td.verify(objectCallback(), { | ||
times: 0 | ||
}); | ||
obj.prop = null; | ||
td.verify(objectCallback(), { | ||
times: 1 | ||
}); | ||
expect(obj.prop).toBeNull(); | ||
}); // PENDING BUGS | ||
// there is an extra callback here | ||
test.skip('prop should be null after it is set to null (yes, really) and a callback should happen', () => { | ||
const obj = { | ||
prop: [] | ||
}; | ||
const objectCallback = td.func(); | ||
(0, _useObserver.pureObserver)(obj, objectCallback); | ||
td.verify(objectCallback(), { | ||
times: 0 | ||
}); | ||
obj.prop = null; | ||
td.verify(objectCallback(), { | ||
times: 1 | ||
}); | ||
expect(obj.prop).toBeNull(); | ||
}); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wdXJlT2JzZXJ2ZXIuc3BlYy50cyJdLCJuYW1lcyI6WyJ0ZXN0Iiwib2JqZWN0Iiwib2JqMUNhbGxiYWNrIiwidGQiLCJmdW5jIiwidmVyaWZ5IiwidGltZXMiLCJvYmoxIiwiZm9vIiwibXV0YXRlTWUiLCJvYmoyIiwiYmFyIiwib2JqMkNhbGxiYWNrIiwiYXJyIiwiaGVsbG8iLCJ5byIsInB1c2giLCJpbm5lck9iaiIsImZpbGVzIiwidW5kZWZpbmVkIiwiZmllbGQiLCJuZXN0ZWQiLCJvYmplY3RDYWxsYmFjayIsImRlZXAiLCJ2ZXJ5IiwiZXhwZWN0IiwidG9FcXVhbCIsIm9iaiIsIm51bGxWYWx1ZSIsInByb3AiLCJ0b0JlTnVsbCIsInNraXAiXSwibWFwcGluZ3MiOiI7O0FBQ0E7O0FBQ0E7Ozs7OztBQUZBO0FBSUFBLElBQUksQ0FBQyx1QkFBRCxFQUEwQixNQUFNO0FBQ2xDLFFBQU1DLE1BQU0sR0FBRztBQUFDRCxJQUFBQSxJQUFJLEVBQUU7QUFBUCxHQUFmO0FBQ0EsUUFBTUUsWUFBWSxHQUFHQyxFQUFFLENBQUNDLElBQUgsRUFBckI7QUFDQSxpQ0FBYUgsTUFBYixFQUFxQkMsWUFBckI7QUFFQUQsRUFBQUEsTUFBTSxDQUFDRCxJQUFQLEdBQWMsS0FBZDtBQUNBRyxFQUFBQSxFQUFFLENBQUNFLE1BQUgsQ0FBVUgsWUFBWSxFQUF0QjtBQUNBRCxFQUFBQSxNQUFNLENBQUNELElBQVAsR0FBYyxPQUFkO0FBQ0FHLEVBQUFBLEVBQUUsQ0FBQ0UsTUFBSCxDQUFVSCxZQUFZLEVBQXRCLEVBQTBCO0FBQUNJLElBQUFBLEtBQUssRUFBRTtBQUFSLEdBQTFCO0FBQ0QsQ0FURyxDQUFKO0FBV0FOLElBQUksQ0FBQyxrREFBRCxFQUFxRCxNQUFNO0FBQzdELFFBQU1PLElBQUksR0FBRztBQUNYQyxJQUFBQSxHQUFHLEVBQUUsTUFETTtBQUVYQyxJQUFBQSxRQUFRLEVBQUUsTUFBTTtBQUNkRixNQUFBQSxJQUFJLENBQUNDLEdBQUwsR0FB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ZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1pZ25vcmUgKi9cbmltcG9ydCAqIGFzIHRkIGZyb20gJ3Rlc3Rkb3VibGUnXG5pbXBvcnQge3B1cmVPYnNlcnZlcn0gZnJvbSAnLi91c2VPYnNlcnZlcidcblxudGVzdCgnaXQgcmVhY3RzIHRvIGEgY2hhbmdlJywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7dGVzdDogJ2FiYyd9XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKSBhcyAoKSA9PiB2b2lkXG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iajFDYWxsYmFjaylcblxuICBvYmplY3QudGVzdCA9ICdkZWYnXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSlcbiAgb2JqZWN0LnRlc3QgPSAndGhlcmUnXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAyfSlcbn0pXG5cbnRlc3QoJ3RoYXQgaXQgY2FuIHdvcmsgd2l0aCBtdWx0aXBsZSBvYmplY3RzLCBubyByZWFjdCcsICgpID0+IHtcbiAgY29uc3Qgb2JqMSA9IHtcbiAgICBmb286ICdoZXJlJyxcbiAgICBtdXRhdGVNZTogKCkgPT4ge1xuICAgICAgb2JqMS5mb28gPSAndGhlcmUnXG4gICAgfSxcbiAgfVxuICBjb25zdCBvYmoyID0ge1xuICAgIGJhcjogJ3BldGUnLFxuICAgIG11dGF0ZU1lOiAoKSA9PiB7XG4gICAgICBvYmoyLmJhciA9ICdwYXVsJ1xuICAgIH0sXG4gIH1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG4gIGNvbnN0IG9iajJDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqMiwgb2JqMkNhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIHRkLnZlcmlmeShvYmoyQ2FsbGJhY2soKSwge3RpbWVzOiAwfSlcblxuICBvYmoxLm11dGF0ZU1lKClcbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpKVxuICB0ZC52ZXJpZnkob2JqMkNhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIG9iajIubXV0YXRlTWUoKVxuICB0ZC52ZXJpZnkob2JqMkNhbGxiYWNrKCkpXG59KVxuXG50ZXN0KCdpdCBzaG91bGQgY2FsbGJhY2sgZm9yIGNoYW5nZXMgaW4gb2JqZWN0cyBhZGRlZCB0byBhcnJheXMnLCAoKSA9PiB7XG4gIGNvbnN0IG9iamVjdCA9IHthcnI6IFtdfVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqMUNhbGxiYWNrKVxuICAvLyBGSVhNRSAtIGdldCByaWQgb2YgdGhlIGluaXRpYWwgY2FsbGJhY2tcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgb2JqZWN0LmFyclswXSA9IHtcbiAgICBoZWxsbzogJ3dvcmxkJyxcbiAgfVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMn0pXG5cbiAgb2JqZWN0LmFyclswXS5oZWxsbyA9ICd0aGVyZSdcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogM30pXG59KVxuXG50ZXN0KCdpdCBzaG91bGQgY2FsbGJhY2sgZm9yIGNoYW5nZXMgaW4gb2JqZWN0cyBhZGRlZCB0byBhcnJheXMgYmVmb3JlIG9ic2VydmVyIGlzIGF0dGFjaGVkJywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7YXJyOiBbXX1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIG9iamVjdC5hcnJbMF0gPSB7XG4gICAgaGVsbG86ICd3b3JsZCcsXG4gIH1cbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqMUNhbGxiYWNrKVxuICAvLyBGSVhNRSAtIGNhbGxiYWNrIHNob3VsZCBub3QgaGFwcGVuIHJpZ2h0IGFmdGVyIG9ic2VydmluZ1xuXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBvYmplY3QuYXJyWzBdLmhlbGxvID0gJ3RoZXJlJ1xuICAvLyBGSVhNRSAtIGNhbGxiYWNrIHNob3VsZCBoYXBwZW4gb25seSBvbmNlXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDN9KVxufSlcblxudGVzdCgnaXQgc2hvdWxkIGNhbGxiYWNrIGZvciBjaGFuZ2VzIGluIG9iamVjdHMgYWRkZWQgdG8gYXJyYXlzIGJlZm9yZSBvYnNlcnZlciBpcyBhdHRhY2hlZCcsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2FycjogW119XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBvYmplY3QuYXJyWzBdID0ge1xuICAgIGhlbGxvOiAnd29ybGQnLFxuICB9XG4gIG9iamVjdC5hcnJbMV0gPSB7XG4gICAgeW86ICdkdWRlJyxcbiAgfVxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmoxQ2FsbGJhY2spXG5cbiAgb2JqZWN0LmFyclsxXS55byA9ICdtYW4nXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpKVxufSlcblxudGVzdCgnaXQgc2hvdWxkIG9ic2VydmUgcHJvdmlkZWQgYXJyYXlzIHRoYXQgb3ZlcndyaXRlIGludGVybmFsIGFycmF5cycsICgpID0+IHtcbiAgY29uc3QgYXJyID0gW11cbiAgY29uc3Qgb2JqMSA9IHthcnI6IFtdfVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgb2JqMS5hcnIgPSBhcnJcbiAgcHVyZU9ic2VydmVyKG9iajEsIG9iajFDYWxsYmFjaylcblxuICBhcnIucHVzaCgnYm9vJylcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCkpXG59KVxuXG50ZXN0KCdvdmVyd3JpdGUgYXJyYXkgd2l0aCBzb21ldGhpbmcgZWxzZScsICgpID0+IHtcbiAgY29uc3Qgb2JqMSA9IHtpbm5lck9iajoge30sIGZpbGVzOiBbXX1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBvYmoxLmZpbGVzID0gWydzZGcnXVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuXG50ZXN0KCdjaGFuZ2luZyB0aGUgdmFsdWUgb2YgYW4gaW5uZXIgb2JqZWN0JywgKCkgPT4ge1xuICBjb25zdCBvYmoxID0ge2lubmVyT2JqOiB7fX1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAwfSlcblxuICAvLyBAdHMtaWdub3JlXG4gIG9iajEuaW5uZXJPYmoudGVzdCA9ICdzJ1xuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMX0pXG59KVxuXG50ZXN0KCdjaGFuZ2luZyB0aGUgYXNzaWdubWVudCBmcm9tIGFycmF5IHRvIGEgZGlmZmVyZW50IGFycmF5JywgKCkgPT4ge1xuICBjb25zdCBvYmoxID0ge2ZpbGVzOiBbXX1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBvYmoxLmZpbGVzID0gWydzZGcnXVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuXG50ZXN0KCd1bmRlZmluZWQgYXJyYXknLCAoKSA9PiB7XG4gIGNvbnN0IG9iajEgPSB7ZmlsZXM6IHVuZGVmaW5lZH1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICBvYmoxLmZpbGVzID0gWydzZGcnXVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMX0pXG59KVxuXG50ZXN0KCdpdCBzaG91bGQgb2JzZXJ2ZSBwcm92aWRlZCBvYmplY3RzIHRoYXQgb3ZlcndyaXRlIGludGVybmFsIG9iamVjdHMnLCAoKSA9PiB7XG4gIGNvbnN0IGlubmVyT2JqID0ge2ZvbzogJ3NvbWV0aGluZyd9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1wYXR0ZXJuXG4gIGNvbnN0IG9iajEgPSB7aW5uZXJPYmo6IHt9ID0ge319XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBvYmoxLmlubmVyT2JqID0gaW5uZXJPYmpcbiAgcHVyZU9ic2VydmVyKG9iajEsIG9iajFDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuXG4gIGlubmVyT2JqLmZvbyA9ICdiYXInXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpKVxufSlcblxudGVzdCgnaXQgc2hvdWxkIG9ic2VydmUgcHJvdmlkZWQgb2JqZWN0cyB0aGF0IGNyZWF0ZSBuZXcgaW50ZXJuYWwgb2JqZWN0cycsICgpID0+IHtcbiAgY29uc3QgaW5uZXJPYmogPSB7Zm9vOiAndGVzdCd9XG4gIGNvbnN0IG9iajEgPSB7fVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgLy8gQHRzLWlnbm9yZVxuICBvYmoxLmlubmVyT2JqID0gaW5uZXJPYmpcbiAgcHVyZU9ic2VydmVyKG9iajEsIG9iajFDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuXG4gIGlubmVyT2JqLmZvbyA9ICdiYXInXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxufSlcblxudGVzdCgnaXQgc2hvdWxkIG9ic2VydmUgcHJvdmlkZWQgZXh0ZXJuYWwgYXJyYXlzJywgKCkgPT4ge1xuICBjb25zdCBhcnIgPSBbXVxuICBjb25zdCBvYmoxID0ge2Fycn1cblxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iajEsIG9iajFDYWxsYmFjaylcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgb2JqMS5hcnIucHVzaCgnYm9vJylcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuXG50ZXN0KCdpdCBzaG91bGQgb2JzZXJ2ZSBwcm92aWRlZCBpbnRlcm5hbCBhcnJheXMnLCAoKSA9PiB7XG4gIGNvbnN0IG9iajEgPSB7XG4gICAgYXJyOiBbXSxcbiAgfVxuXG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqMSwgb2JqMUNhbGxiYWNrKVxuXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBvYmoxLmFyci5wdXNoKCdib28nKVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuXG50ZXN0KCdtdWx0aS1sZXZlbCBkZXB0aCBmaWVsZHMgYXJlIHNldCB0byBhbiBvYmplY3Qgd2hvc2UgdmFsdWUgY2hhbmdlcycsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2ZpZWxkOiB7bmVzdGVkOiB7fX19XG5cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqZWN0Q2FsbGJhY2spXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMH0pXG5cbiAgb2JqZWN0LmZpZWxkLm5lc3RlZCA9IHtcbiAgICBkZWVwOiB7XG4gICAgICB2ZXJ5OiAnZGVlcGVyJyxcbiAgICB9LFxuICB9XG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuXG50ZXN0KCdtdWx0aS1sZXZlbCBkZXB0aCBmaWVsZHMgYXJlIHNldCB0byBhbiBvYmplY3Qgd2hvc2UgdmFsdWUgY2hhbmdlcycsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2ZpZWxkOiB7fX1cblxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmplY3RDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIC8vXG4gIG9iamVjdC5maWVsZCA9IHtcbiAgICBuZXN0ZWQ6IHt9LFxuICB9XG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxufSlcblxudGVzdCgnbXVsdGktbGV2ZWwgZGVwdGggZmllbGRzIGFyZSBzZXQgdG8gYW4gb2JqZWN0IHdob3NlIHZhbHVlIGNoYW5nZXMnLCAoKSA9PiB7XG4gIGNvbnN0IG9iamVjdCA9IHtmaWVsZDoge319XG5cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqZWN0Q2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICAvL1xuICBvYmplY3QuZmllbGQgPSB7XG4gICAgbmVzdGVkOiB7fSxcbiAgfVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICAvLyBAdHMtaWdub3JlXG4gIG9iamVjdC5maWVsZC5uZXN0ZWQgPSB7XG4gICAgZGVlcDoge1xuICAgICAgdmVyeTogJ2RlZXBlcicsXG4gICAgfSxcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgZXhwZWN0KG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcC52ZXJ5KS50b0VxdWFsKCdkZWVwZXInKVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAzfSlcbn0pXG5cbnRlc3QoJ211bHRpLWxldmVsIGRlcHRoIGZpZWxkcyBhcmUgc2V0IHRvIGFuIG9iamVjdCB3aG9zZSB2YWx1ZSBjaGFuZ2VzJywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7ZmllbGQ6IG51bGx9XG5cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqZWN0Q2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICAvL1xuICBvYmplY3QuZmllbGQgPSB7XG4gICAgbmVzdGVkOiB7fSxcbiAgfVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBvYmplY3QuZmllbGQubmVzdGVkLmRlZXAgPSB7dmVyeTogJ2RlZXBlcid9XG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMn0pXG5cbiAgb2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwLnZlcnkgPSAnY2hhbmdlZCBzdHJpbmcnXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogM30pXG59KVxuXG50ZXN0KCdtdWx0aS1sZXZlbCBkZXB0aCBmaWVsZHMgYXJlIHNldCB0byBhbiBvYmplY3Qgd2hvc2UgdmFsdWUgY2hhbmdlcyAtIG5vIHByb3h5JywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7ZmllbGQ6IHtuZXN0ZWQ6IHtkZWVwOiAnb2xkJ319fVxuXG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iamVjdENhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAwfSlcbiAgLy9cbiAgb2JqZWN0LmZpZWxkID0ge1xuICAgIG5lc3RlZDoge1xuICAgICAgZGVlcDogJ3ZhbHVlJyxcbiAgICB9LFxuICB9XG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgZXhwZWN0KG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCkudG9FcXVhbCgndmFsdWUnKVxuICAvLyBvYmplY3QuZmllbGQubmVzdGVkID0ge1xuICAvLyAgIGRlZXA6IHtcbiAgLy8gICAgIHZlcnk6ICdkZWVwZXInLFxuICAvLyAgIH0sXG4gIC8vIH1cbiAgLy8gdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMn0pXG4gIC8vXG4gIC8vIGV4cGVjdChvYmplY3QuZmllbGQubmVzdGVkLmRlZXAudmVyeSkudG9FcXVhbCgnZGVlcGVyJylcbn0pXG5cbnRlc3QoJ211bHRpLWxldmVsIGRlcHRoIGZpZWxkcyBhcmUgc2V0IHRvIGFuIG9iamVjdCB3aG9zZSB2YWx1ZSBjaGFuZ2VzJywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7ZmllbGQ6IG51bGx9XG5cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqZWN0Q2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICAvL1xuICBvYmplY3QuZmllbGQgPSB7XG4gICAgbmVzdGVkOiB7XG4gICAgICBkZWVwOiAndmFsdWUnLFxuICAgIH0sXG4gIH1cblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBleHBlY3Qob2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwKS50b0VxdWFsKCd2YWx1ZScpXG4gIG9iamVjdC5maWVsZCA9IHtcbiAgICBuZXN0ZWQ6IHtcbiAgICAgIGRlZXA6ICduZXdWYWx1ZScsXG4gICAgfSxcbiAgfVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAyfSlcblxuICBleHBlY3Qob2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwKS50b0VxdWFsKCduZXdWYWx1ZScpXG59KVxuXG50ZXN0KCdtdWx0aS1sZXZlbCBkZXB0aCBmaWVsZHMgYXJlIHNldCB0byBhbiBvYmplY3Qgd2hvc2UgdmFsdWUgY2hhbmdlcycsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2ZpZWxkOiBudWxsfVxuXG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iamVjdENhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAwfSlcbiAgLy9cbiAgb2JqZWN0LmZpZWxkID0ge1xuICAgIG5lc3RlZDoge1xuICAgICAgZGVlcDogJ3ZhbHVlJyxcbiAgICB9LFxuICB9XG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgZXhwZWN0KG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCkudG9FcXVhbCgndmFsdWUnKVxuXG4gIG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCA9ICduZXdWYWx1ZSdcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogM30pXG5cbiAgZXhwZWN0KG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCkudG9FcXVhbCgnbmV3VmFsdWUnKVxufSlcblxudGVzdCgnbXVsdGktbGV2ZWwgZGVwdGggZmllbGRzIGFyZSBzZXQgdG8gYW4gb2JqZWN0IHdob3NlIHZhbHVlIGNoYW5nZXMgLSBubyBwcm94eScsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2ZpZWxkOiB7bmVzdGVkOiB7ZGVlcDogJyd9fX1cblxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmplY3RDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIC8vXG4gIC8vIG9iamVjdC5maWVsZCA9IHtcbiAgLy8gICBuZXN0ZWQ6IHtcbiAgLy8gICAgIGRlZXA6ICd2YWx1ZScsXG4gIC8vICAgfSxcbiAgLy8gfVxuXG4gIG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCA9ICd2YWx1ZSdcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMn0pXG5cbiAgZXhwZWN0KG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCkudG9FcXVhbCgndmFsdWUnKVxufSlcblxudGVzdCgnU2V0dGluZyBudWxsIHRvIGFuIGFscmVhZHkgbnVsbCB2YWx1ZSBzaG91bGQgbm90IHRyaWdnZXIgYSBjYWxsYmFjaycsICgpID0+IHtcbiAgY29uc3Qgb2JqID0ge1xuICAgIG51bGxWYWx1ZTogbnVsbCxcbiAgfVxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqLCBvYmplY3RDYWxsYmFjaylcblxuICBvYmoubnVsbFZhbHVlID0gbnVsbFxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxufSlcblxudGVzdCgnU2V0dGluZyBudWxsIHRvIGFuIGFscmVhZHkgbnVsbCB2YWx1ZSwgdGhlbiBzZXR0aW5nIGEgcmVhbCB2YWx1ZSBzaG91bGQgdHJpZ2dlciBhIGNhbGxiYWNrJywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7XG4gICAgbnVsbFZhbHVlOiBudWxsLFxuICB9XG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmosIG9iamVjdENhbGxiYWNrKVxuXG4gIG9iai5udWxsVmFsdWUgPSBudWxsXG5cbiAgb2JqLm51bGxWYWx1ZSA9ICdzb21ldGhpbmcnXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG59KVxuXG50ZXN0KCdTZXR0aW5nIG51bGwgdG8gYW4gYXNzaWduZWQgcHJvcGVydHkgc2hvdWxkIHRyaWdnZXIgYSBjYWxsYmFjaycsICgpID0+IHtcbiAgY29uc3Qgb2JqID0ge1xuICAgIG51bGxWYWx1ZTogJ2FueXRoaW5nJyxcbiAgfVxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqLCBvYmplY3RDYWxsYmFjaylcblxuICBvYmoubnVsbFZhbHVlID0gbnVsbFxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxufSlcblxudGVzdCgnU2V0dGluZyBudWxsIHRvIGFuIGFzc2lnbmVkIHByb3BlcnR5LCB0aGVuIHNldHRpbmcgYSByZWFsIHZhbHVlIHNob3VsZCB0cmlnZ2VyIGEgY2FsbGJhY2snLCAoKSA9PiB7XG4gIGNvbnN0IG9iaiA9IHtcbiAgICBudWxsVmFsdWU6ICdhbnl0aGluZycsXG4gIH1cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iaiwgb2JqZWN0Q2FsbGJhY2spXG5cbiAgb2JqLm51bGxWYWx1ZSA9IG51bGxcblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBvYmoubnVsbFZhbHVlID0gJ3NvbWV0aGluZydcblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAyfSlcbn0pXG5cbnRlc3QoJ1NldHRpbmcgbnVsbCB0byBhbiBleGlzdGluZyBwcm9wZXJ0eSBhbmQgb2JzZXJ2ZSwgdGhlbiBzZXR0aW5nIGEgcmVhbCB2YWx1ZSBzaG91bGQgdHJpZ2dlciBhIGNhbGxiYWNrJywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7XG4gICAgcHJvcDoge30sXG4gIH1cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iaiwgb2JqZWN0Q2FsbGJhY2spXG5cbiAgb2JqLnByb3AgPSBudWxsXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG59KVxuXG50ZXN0KCdvYmogd2l0aCBhIHByb3AgdGhhdCBpcyBhbiBvYmplY3QsIHNldCBwcm9wIHRvIG51bGwsIHRoZW4gc2V0IHByb3AgdG8gYSBvYmplY3QuIHNob3VsZCB0cmlnZ2VyIDIgY2FsbGJhY2tzJywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7XG4gICAgcHJvcDoge30sXG4gIH1cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iaiwgb2JqZWN0Q2FsbGJhY2spXG5cbiAgb2JqLnByb3AgPSBudWxsXG4gIG9iai5wcm9wID0ge31cblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAyfSlcbn0pXG5cbnRlc3QoJ29iaiB3aXRoIGEgcHJvcCB0aGF0IGlzIGFuIG9iamVjdCwgc2V0IHByb3AgdG8gbnVsbCwgdGhlbiBzZXQgcHJvcCB0byBhbiBhcnJheS4gc2hvdWxkIHRyaWdnZXIgMiBjYWxsYmFja3MnLCAoKSA9PiB7XG4gIGNvbnN0IG9iaiA9IHtcbiAgICBwcm9wOiB7fSxcbiAgfVxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqLCBvYmplY3RDYWxsYmFjaylcblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAwfSlcbiAgb2JqLnByb3AgPSBudWxsXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxuICBvYmoucHJvcCA9IFtdXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxufSlcblxudGVzdCgnYWxsb3cgc2V0dGluZyBhIHByb3BlcnR5IHRvIGEgcHJpbWl0aXZlIGFmdGVyIGJlaW5nIHNldCB0byBudWxsJywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7XG4gICAgcHJvcDoge30sXG4gIH1cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iaiwgb2JqZWN0Q2FsbGJhY2spXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIG9iai5wcm9wID0gbnVsbFxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcbiAgb2JqLnByb3AgPSAnYXNkJ1xuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAyfSlcbn0pXG5cbnRlc3QoJ3Byb3Agc2hvdWxkIGJlIG51bGwgYWZ0ZXIgaXQgaXMgc2V0IHRvIG51bGwgKHllcywgcmVhbGx5KSBhbmQgYSBjYWxsYmFjayBzaG91bGQgaGFwcGVuJywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7XG4gICAgcHJvcDoge31cbiAgfVxuXG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmosIG9iamVjdENhbGxiYWNrKVxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICBvYmoucHJvcCA9IG51bGxcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG4gIGV4cGVjdChvYmoucHJvcCkudG9CZU51bGwoKVxufSlcblxuLy8gUEVORElORyBCVUdTXG4vLyB0aGVyZSBpcyBhbiBleHRyYSBjYWxsYmFjayBoZXJlXG50ZXN0LnNraXAoJ3Byb3Agc2hvdWxkIGJlIG51bGwgYWZ0ZXIgaXQgaXMgc2V0IHRvIG51bGwgKHllcywgcmVhbGx5KSBhbmQgYSBjYWxsYmFjayBzaG91bGQgaGFwcGVuJywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7XG4gICAgcHJvcDogW11cbiAgfVxuXG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmosIG9iamVjdENhbGxiYWNrKVxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICBvYmoucHJvcCA9IG51bGxcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG4gIGV4cGVjdChvYmoucHJvcCkudG9CZU51bGwoKVxufSlcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wdXJlT2JzZXJ2ZXIuc3BlYy50cyJdLCJuYW1lcyI6WyJ0ZXN0Iiwib2JqZWN0Iiwib2JqMUNhbGxiYWNrIiwidGQiLCJmdW5jIiwidmVyaWZ5IiwidGltZXMiLCJvYmoxIiwiZm9vIiwibXV0YXRlTWUiLCJvYmoyIiwiYmFyIiwib2JqMkNhbGxiYWNrIiwiYXJyIiwiaGVsbG8iLCJ5byIsInB1c2giLCJpbm5lck9iaiIsImZpbGVzIiwidW5kZWZpbmVkIiwiZmllbGQiLCJuZXN0ZWQiLCJvYmplY3RDYWxsYmFjayIsImRlZXAiLCJ2ZXJ5IiwiZXhwZWN0IiwidG9FcXVhbCIsIm9iaiIsIm51bGxWYWx1ZSIsInByb3AiLCJza2lwIl0sIm1hcHBpbmdzIjoiOztBQUNBOztBQUNBOzs7Ozs7QUFGQTtBQUlBQSxJQUFJLENBQUMsdUJBQUQsRUFBMEIsTUFBTTtBQUNsQyxRQUFNQyxNQUFNLEdBQUc7QUFBQ0QsSUFBQUEsSUFBSSxFQUFFO0FBQVAsR0FBZjtBQUNBLFFBQU1FLFlBQVksR0FBR0MsRUFBRSxDQUFDQyxJQUFILEVBQXJCO0FBQ0EsaUNBQWFILE1BQWIsRUFBcUJDLFlBQXJCO0FBRUFELEVBQUFBLE1BQU0sQ0FBQ0QsSUFBUCxHQUFjLEtBQWQ7QUFDQUcsRUFBQUEsRUFBRSxDQUFDRSxNQUFILENBQVVILFlBQVksRUFBdEI7QUFDQUQsRUFBQUEsTUFBTSxDQUFDRCxJQUFQLEdBQWMsT0FBZDtBQUNBRyxFQUFBQSxFQUFFLENBQUNFLE1BQUgsQ0FBVUgsWUFBWSxFQUF0QixFQUEwQjtBQUFDSSxJQUFBQSxLQUFLLEVBQUU7QUFBUixHQUExQjtBQUNELENBVEcsQ0FBSjtBQVdBTixJQUFJLENBQUMsa0RBQUQsRUFBcUQsTUFBTTtBQUM3RCxRQUFNTyxJQUFJLEdBQUc7QUFDWEMsSUFBQUEsR0FBRyxFQUFFLE1BRE07QUFFWEMsSUFBQUEsUUFBUSxFQUFFLE1BQU07QUFDZEYsTUFBQUEsSUFBSSxDQUFDQyxHQUFMLEdBQVcsT0FBWDtBQUNE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SixHQUFXLElBQVg7QUFDQUYsRUFBQUEsR0FBRyxDQUFDRSxJQUFKLEdBQVcsRUFBWDtBQUVBMUIsRUFBQUEsRUFBRSxDQUFDRSxNQUFILENBQVVpQixjQUFjLEVBQXhCLEVBQTRCO0FBQUNoQixJQUFBQSxLQUFLLEVBQUU7QUFBUixHQUE1QjtBQUNELENBWEcsQ0FBSjtBQWFBTixJQUFJLENBQUM4QixJQUFMLENBQVUsNEdBQVYsRUFBd0gsTUFBTTtBQUM1SCxRQUFNSCxHQUFHLEdBQUc7QUFDVkUsSUFBQUEsSUFBSSxFQUFFO0FBREksR0FBWjtBQUdBLFFBQU1QLGNBQWMsR0FBR25CLEVBQUUsQ0FBQ0MsSUFBSCxFQUF2QjtBQUNBLGlDQUFhdUIsR0FBYixFQUFrQkwsY0FBbEI7QUFFQUssRUFBQUEsR0FBRyxDQUFDRSxJQUFKLEdBQVcsSUFBWDtBQUNBRixFQUFBQSxHQUFHLENBQUNFLElBQUosR0FBVyxLQUFYO0FBRUExQixFQUFBQSxFQUFFLENBQUNFLE1BQUgsQ0FBVWlCLGNBQWMsRUFBeEIsRUFBNEI7QUFBQ2hCLElBQUFBLEtBQUssRUFBRTtBQUFSLEdBQTVCO0FBQ0QsQ0FYRCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtaWdub3JlICovXG5pbXBvcnQgKiBhcyB0ZCBmcm9tICd0ZXN0ZG91YmxlJ1xuaW1wb3J0IHtwdXJlT2JzZXJ2ZXJ9IGZyb20gJy4vdXNlT2JzZXJ2ZXInXG5cbnRlc3QoJ2l0IHJlYWN0cyB0byBhIGNoYW5nZScsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge3Rlc3Q6ICdhYmMnfVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKCkgYXMgKCkgPT4gdm9pZFxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmoxQ2FsbGJhY2spXG5cbiAgb2JqZWN0LnRlc3QgPSAnZGVmJ1xuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCkpXG4gIG9iamVjdC50ZXN0ID0gJ3RoZXJlJ1xuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuXG50ZXN0KCd0aGF0IGl0IGNhbiB3b3JrIHdpdGggbXVsdGlwbGUgb2JqZWN0cywgbm8gcmVhY3QnLCAoKSA9PiB7XG4gIGNvbnN0IG9iajEgPSB7XG4gICAgZm9vOiAnaGVyZScsXG4gICAgbXV0YXRlTWU6ICgpID0+IHtcbiAgICAgIG9iajEuZm9vID0gJ3RoZXJlJ1xuICAgIH0sXG4gIH1cbiAgY29uc3Qgb2JqMiA9IHtcbiAgICBiYXI6ICdwZXRlJyxcbiAgICBtdXRhdGVNZTogKCkgPT4ge1xuICAgICAgb2JqMi5iYXIgPSAncGF1bCdcbiAgICB9LFxuICB9XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqMSwgb2JqMUNhbGxiYWNrKVxuICBjb25zdCBvYmoyQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iajIsIG9iajJDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICB0ZC52ZXJpZnkob2JqMkNhbGxiYWNrKCksIHt0aW1lczogMH0pXG5cbiAgb2JqMS5tdXRhdGVNZSgpXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSlcbiAgdGQudmVyaWZ5KG9iajJDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICBvYmoyLm11dGF0ZU1lKClcbiAgdGQudmVyaWZ5KG9iajJDYWxsYmFjaygpKVxufSlcblxudGVzdCgnaXQgc2hvdWxkIGNhbGxiYWNrIGZvciBjaGFuZ2VzIGluIG9iamVjdHMgYWRkZWQgdG8gYXJyYXlzJywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7YXJyOiBbXX1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iajFDYWxsYmFjaylcbiAgLy8gRklYTUUgLSBnZXQgcmlkIG9mIHRoZSBpbml0aWFsIGNhbGxiYWNrXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxuXG4gIG9iamVjdC5hcnJbMF0gPSB7XG4gICAgaGVsbG86ICd3b3JsZCcsXG4gIH1cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxuXG4gIG9iamVjdC5hcnJbMF0uaGVsbG8gPSAndGhlcmUnXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDN9KVxufSlcblxudGVzdCgnaXQgc2hvdWxkIGNhbGxiYWNrIGZvciBjaGFuZ2VzIGluIG9iamVjdHMgYWRkZWQgdG8gYXJyYXlzIGJlZm9yZSBvYnNlcnZlciBpcyBhdHRhY2hlZCcsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2FycjogW119XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBvYmplY3QuYXJyWzBdID0ge1xuICAgIGhlbGxvOiAnd29ybGQnLFxuICB9XG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iajFDYWxsYmFjaylcbiAgLy8gRklYTUUgLSBjYWxsYmFjayBzaG91bGQgbm90IGhhcHBlbiByaWdodCBhZnRlciBvYnNlcnZpbmdcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgb2JqZWN0LmFyclswXS5oZWxsbyA9ICd0aGVyZSdcbiAgLy8gRklYTUUgLSBjYWxsYmFjayBzaG91bGQgaGFwcGVuIG9ubHkgb25jZVxuXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAzfSlcbn0pXG5cbnRlc3QoJ2l0IHNob3VsZCBjYWxsYmFjayBmb3IgY2hhbmdlcyBpbiBvYmplY3RzIGFkZGVkIHRvIGFycmF5cyBiZWZvcmUgb2JzZXJ2ZXIgaXMgYXR0YWNoZWQnLCAoKSA9PiB7XG4gIGNvbnN0IG9iamVjdCA9IHthcnI6IFtdfVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgb2JqZWN0LmFyclswXSA9IHtcbiAgICBoZWxsbzogJ3dvcmxkJyxcbiAgfVxuICBvYmplY3QuYXJyWzFdID0ge1xuICAgIHlvOiAnZHVkZScsXG4gIH1cbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqMUNhbGxiYWNrKVxuXG4gIG9iamVjdC5hcnJbMV0ueW8gPSAnbWFuJ1xuXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSlcbn0pXG5cbnRlc3QoJ2l0IHNob3VsZCBvYnNlcnZlIHByb3ZpZGVkIGFycmF5cyB0aGF0IG92ZXJ3cml0ZSBpbnRlcm5hbCBhcnJheXMnLCAoKSA9PiB7XG4gIGNvbnN0IGFyciA9IFtdXG4gIGNvbnN0IG9iajEgPSB7YXJyOiBbXX1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIG9iajEuYXJyID0gYXJyXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG5cbiAgYXJyLnB1c2goJ2JvbycpXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpKVxufSlcblxudGVzdCgnb3ZlcndyaXRlIGFycmF5IHdpdGggc29tZXRoaW5nIGVsc2UnLCAoKSA9PiB7XG4gIGNvbnN0IG9iajEgPSB7aW5uZXJPYmo6IHt9LCBmaWxlczogW119XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqMSwgb2JqMUNhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgb2JqMS5maWxlcyA9IFsnc2RnJ11cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxufSlcblxudGVzdCgnY2hhbmdpbmcgdGhlIHZhbHVlIG9mIGFuIGlubmVyIG9iamVjdCcsICgpID0+IHtcbiAgY29uc3Qgb2JqMSA9IHtpbm5lck9iajoge319XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqMSwgb2JqMUNhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMH0pXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBvYmoxLmlubmVyT2JqLnRlc3QgPSAncydcbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxufSlcblxudGVzdCgnY2hhbmdpbmcgdGhlIGFzc2lnbm1lbnQgZnJvbSBhcnJheSB0byBhIGRpZmZlcmVudCBhcnJheScsICgpID0+IHtcbiAgY29uc3Qgb2JqMSA9IHtmaWxlczogW119XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqMSwgb2JqMUNhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgb2JqMS5maWxlcyA9IFsnc2RnJ11cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxufSlcblxudGVzdCgndW5kZWZpbmVkIGFycmF5JywgKCkgPT4ge1xuICBjb25zdCBvYmoxID0ge2ZpbGVzOiB1bmRlZmluZWR9XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqMSwgb2JqMUNhbGxiYWNrKVxuXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAwfSlcbiAgb2JqMS5maWxlcyA9IFsnc2RnJ11cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxufSlcblxudGVzdCgnaXQgc2hvdWxkIG9ic2VydmUgcHJvdmlkZWQgb2JqZWN0cyB0aGF0IG92ZXJ3cml0ZSBpbnRlcm5hbCBvYmplY3RzJywgKCkgPT4ge1xuICBjb25zdCBpbm5lck9iaiA9IHtmb286ICdzb21ldGhpbmcnfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHktcGF0dGVyblxuICBjb25zdCBvYmoxID0ge2lubmVyT2JqOiB7fSA9IHt9fVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgb2JqMS5pbm5lck9iaiA9IGlubmVyT2JqXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAwfSlcblxuICBpbm5lck9iai5mb28gPSAnYmFyJ1xuXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSlcbn0pXG5cbnRlc3QoJ2l0IHNob3VsZCBvYnNlcnZlIHByb3ZpZGVkIG9iamVjdHMgdGhhdCBjcmVhdGUgbmV3IGludGVybmFsIG9iamVjdHMnLCAoKSA9PiB7XG4gIGNvbnN0IGlubmVyT2JqID0ge2ZvbzogJ3Rlc3QnfVxuICBjb25zdCBvYmoxID0ge31cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIC8vIEB0cy1pZ25vcmVcbiAgb2JqMS5pbm5lck9iaiA9IGlubmVyT2JqXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAwfSlcblxuICBpbm5lck9iai5mb28gPSAnYmFyJ1xuXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAxfSlcbn0pXG5cbnRlc3QoJ2l0IHNob3VsZCBvYnNlcnZlIHByb3ZpZGVkIGV4dGVybmFsIGFycmF5cycsICgpID0+IHtcbiAgY29uc3QgYXJyID0gW11cbiAgY29uc3Qgb2JqMSA9IHthcnJ9XG5cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxuXG4gIG9iajEuYXJyLnB1c2goJ2JvbycpXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxufSlcblxudGVzdCgnaXQgc2hvdWxkIG9ic2VydmUgcHJvdmlkZWQgaW50ZXJuYWwgYXJyYXlzJywgKCkgPT4ge1xuICBjb25zdCBvYmoxID0ge1xuICAgIGFycjogW10sXG4gIH1cblxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iajEsIG9iajFDYWxsYmFjaylcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgb2JqMS5hcnIucHVzaCgnYm9vJylcbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxufSlcblxudGVzdCgnbXVsdGktbGV2ZWwgZGVwdGggZmllbGRzIGFyZSBzZXQgdG8gYW4gb2JqZWN0IHdob3NlIHZhbHVlIGNoYW5nZXMnLCAoKSA9PiB7XG4gIGNvbnN0IG9iamVjdCA9IHtmaWVsZDoge25lc3RlZDoge319fVxuXG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iamVjdENhbGxiYWNrKVxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuXG4gIG9iamVjdC5maWVsZC5uZXN0ZWQgPSB7XG4gICAgZGVlcDoge1xuICAgICAgdmVyeTogJ2RlZXBlcicsXG4gICAgfSxcbiAgfVxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxufSlcblxudGVzdCgnbXVsdGktbGV2ZWwgZGVwdGggZmllbGRzIGFyZSBzZXQgdG8gYW4gb2JqZWN0IHdob3NlIHZhbHVlIGNoYW5nZXMnLCAoKSA9PiB7XG4gIGNvbnN0IG9iamVjdCA9IHtmaWVsZDoge319XG5cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqZWN0Q2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICAvL1xuICBvYmplY3QuZmllbGQgPSB7XG4gICAgbmVzdGVkOiB7fSxcbiAgfVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcbn0pXG5cbnRlc3QoJ211bHRpLWxldmVsIGRlcHRoIGZpZWxkcyBhcmUgc2V0IHRvIGFuIG9iamVjdCB3aG9zZSB2YWx1ZSBjaGFuZ2VzJywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7ZmllbGQ6IHt9fVxuXG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iamVjdENhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAwfSlcbiAgLy9cbiAgb2JqZWN0LmZpZWxkID0ge1xuICAgIG5lc3RlZDoge30sXG4gIH1cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBvYmplY3QuZmllbGQubmVzdGVkID0ge1xuICAgIGRlZXA6IHtcbiAgICAgIHZlcnk6ICdkZWVwZXInLFxuICAgIH0sXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGV4cGVjdChvYmplY3QuZmllbGQubmVzdGVkLmRlZXAudmVyeSkudG9FcXVhbCgnZGVlcGVyJylcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogM30pXG59KVxuXG50ZXN0KCdtdWx0aS1sZXZlbCBkZXB0aCBmaWVsZHMgYXJlIHNldCB0byBhbiBvYmplY3Qgd2hvc2UgdmFsdWUgY2hhbmdlcycsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2ZpZWxkOiBudWxsfVxuXG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iamVjdENhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAwfSlcbiAgLy9cbiAgb2JqZWN0LmZpZWxkID0ge1xuICAgIG5lc3RlZDoge30sXG4gIH1cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgb2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwID0ge3Zlcnk6ICdkZWVwZXInfVxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxuXG4gIG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcC52ZXJ5ID0gJ2NoYW5nZWQgc3RyaW5nJ1xuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDN9KVxufSlcblxudGVzdCgnbXVsdGktbGV2ZWwgZGVwdGggZmllbGRzIGFyZSBzZXQgdG8gYW4gb2JqZWN0IHdob3NlIHZhbHVlIGNoYW5nZXMgLSBubyBwcm94eScsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2ZpZWxkOiB7bmVzdGVkOiB7ZGVlcDogJ29sZCd9fX1cblxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmplY3RDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIC8vXG4gIG9iamVjdC5maWVsZCA9IHtcbiAgICBuZXN0ZWQ6IHtcbiAgICAgIGRlZXA6ICd2YWx1ZScsXG4gICAgfSxcbiAgfVxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxuXG4gIGV4cGVjdChvYmplY3QuZmllbGQubmVzdGVkLmRlZXApLnRvRXF1YWwoJ3ZhbHVlJylcbiAgLy8gb2JqZWN0LmZpZWxkLm5lc3RlZCA9IHtcbiAgLy8gICBkZWVwOiB7XG4gIC8vICAgICB2ZXJ5OiAnZGVlcGVyJyxcbiAgLy8gICB9LFxuICAvLyB9XG4gIC8vIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxuICAvL1xuICAvLyBleHBlY3Qob2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwLnZlcnkpLnRvRXF1YWwoJ2RlZXBlcicpXG59KVxuXG50ZXN0KCdtdWx0aS1sZXZlbCBkZXB0aCBmaWVsZHMgYXJlIHNldCB0byBhbiBvYmplY3Qgd2hvc2UgdmFsdWUgY2hhbmdlcycsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2ZpZWxkOiBudWxsfVxuXG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iamVjdENhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAwfSlcbiAgLy9cbiAgb2JqZWN0LmZpZWxkID0ge1xuICAgIG5lc3RlZDoge1xuICAgICAgZGVlcDogJ3ZhbHVlJyxcbiAgICB9LFxuICB9XG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgZXhwZWN0KG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCkudG9FcXVhbCgndmFsdWUnKVxuICBvYmplY3QuZmllbGQgPSB7XG4gICAgbmVzdGVkOiB7XG4gICAgICBkZWVwOiAnbmV3VmFsdWUnLFxuICAgIH0sXG4gIH1cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMn0pXG5cbiAgZXhwZWN0KG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCkudG9FcXVhbCgnbmV3VmFsdWUnKVxufSlcblxudGVzdCgnbXVsdGktbGV2ZWwgZGVwdGggZmllbGRzIGFyZSBzZXQgdG8gYW4gb2JqZWN0IHdob3NlIHZhbHVlIGNoYW5nZXMnLCAoKSA9PiB7XG4gIGNvbnN0IG9iamVjdCA9IHtmaWVsZDogbnVsbH1cblxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmplY3RDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIC8vXG4gIG9iamVjdC5maWVsZCA9IHtcbiAgICBuZXN0ZWQ6IHtcbiAgICAgIGRlZXA6ICd2YWx1ZScsXG4gICAgfSxcbiAgfVxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxuXG4gIGV4cGVjdChvYmplY3QuZmllbGQubmVzdGVkLmRlZXApLnRvRXF1YWwoJ3ZhbHVlJylcblxuICBvYmplY3QuZmllbGQubmVzdGVkLmRlZXAgPSAnbmV3VmFsdWUnXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDN9KVxuXG4gIGV4cGVjdChvYmplY3QuZmllbGQubmVzdGVkLmRlZXApLnRvRXF1YWwoJ25ld1ZhbHVlJylcbn0pXG5cbnRlc3QoJ211bHRpLWxldmVsIGRlcHRoIGZpZWxkcyBhcmUgc2V0IHRvIGFuIG9iamVjdCB3aG9zZSB2YWx1ZSBjaGFuZ2VzIC0gbm8gcHJveHknLCAoKSA9PiB7XG4gIGNvbnN0IG9iamVjdCA9IHtmaWVsZDoge25lc3RlZDoge2RlZXA6ICcnfX19XG5cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqZWN0Q2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICAvL1xuICAvLyBvYmplY3QuZmllbGQgPSB7XG4gIC8vICAgbmVzdGVkOiB7XG4gIC8vICAgICBkZWVwOiAndmFsdWUnLFxuICAvLyAgIH0sXG4gIC8vIH1cblxuICBvYmplY3QuZmllbGQubmVzdGVkLmRlZXAgPSAndmFsdWUnXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxuXG4gIGV4cGVjdChvYmplY3QuZmllbGQubmVzdGVkLmRlZXApLnRvRXF1YWwoJ3ZhbHVlJylcbn0pXG5cbnRlc3QoJ1NldHRpbmcgbnVsbCB0byBhbiBhbHJlYWR5IG51bGwgdmFsdWUgc2hvdWxkIG5vdCB0cmlnZ2VyIGEgY2FsbGJhY2snLCAoKSA9PiB7XG4gIGNvbnN0IG9iaiA9IHtcbiAgICBudWxsVmFsdWU6IG51bGwsXG4gIH1cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iaiwgb2JqZWN0Q2FsbGJhY2spXG5cbiAgb2JqLm51bGxWYWx1ZSA9IG51bGxcblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAwfSlcbn0pXG5cbnRlc3QoJ1NldHRpbmcgbnVsbCB0byBhbiBhbHJlYWR5IG51bGwgdmFsdWUsIHRoZW4gc2V0dGluZyBhIHJlYWwgdmFsdWUgc2hvdWxkIHRyaWdnZXIgYSBjYWxsYmFjaycsICgpID0+IHtcbiAgY29uc3Qgb2JqID0ge1xuICAgIG51bGxWYWx1ZTogbnVsbCxcbiAgfVxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqLCBvYmplY3RDYWxsYmFjaylcblxuICBvYmoubnVsbFZhbHVlID0gbnVsbFxuXG4gIG9iai5udWxsVmFsdWUgPSAnc29tZXRoaW5nJ1xuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxufSlcblxudGVzdCgnU2V0dGluZyBudWxsIHRvIGFuIGFzc2lnbmVkIHByb3BlcnR5IHNob3VsZCB0cmlnZ2VyIGEgY2FsbGJhY2snLCAoKSA9PiB7XG4gIGNvbnN0IG9iaiA9IHtcbiAgICBudWxsVmFsdWU6ICdhbnl0aGluZycsXG4gIH1cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iaiwgb2JqZWN0Q2FsbGJhY2spXG5cbiAgb2JqLm51bGxWYWx1ZSA9IG51bGxcblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcbn0pXG5cbnRlc3QoJ1NldHRpbmcgbnVsbCB0byBhbiBhc3NpZ25lZCBwcm9wZXJ0eSwgdGhlbiBzZXR0aW5nIGEgcmVhbCB2YWx1ZSBzaG91bGQgdHJpZ2dlciBhIGNhbGxiYWNrJywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7XG4gICAgbnVsbFZhbHVlOiAnYW55dGhpbmcnLFxuICB9XG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmosIG9iamVjdENhbGxiYWNrKVxuXG4gIG9iai5udWxsVmFsdWUgPSBudWxsXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgb2JqLm51bGxWYWx1ZSA9ICdzb21ldGhpbmcnXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuXG50ZXN0KCdTZXR0aW5nIG51bGwgdG8gYW4gZXhpc3RpbmcgcHJvcGVydHkgYW5kIG9ic2VydmUsIHRoZW4gc2V0dGluZyBhIHJlYWwgdmFsdWUgc2hvdWxkIHRyaWdnZXIgYSBjYWxsYmFjaycsICgpID0+IHtcbiAgY29uc3Qgb2JqID0ge1xuICAgIHByb3A6IHt9LFxuICB9XG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmosIG9iamVjdENhbGxiYWNrKVxuXG4gIG9iai5wcm9wID0gbnVsbFxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxufSlcblxudGVzdCgnb2JqIHdpdGggYSBwcm9wIHRoYXQgaXMgYW4gb2JqZWN0LCBzZXQgcHJvcCB0byBudWxsLCB0aGVuIHNldCBwcm9wIHRvIGEgb2JqZWN0LiBzaG91bGQgdHJpZ2dlciAyIGNhbGxiYWNrcycsICgpID0+IHtcbiAgY29uc3Qgb2JqID0ge1xuICAgIHByb3A6IHt9LFxuICB9XG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmosIG9iamVjdENhbGxiYWNrKVxuXG4gIG9iai5wcm9wID0gbnVsbFxuICBvYmoucHJvcCA9IHt9XG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuXG50ZXN0KCdvYmogd2l0aCBhIHByb3AgdGhhdCBpcyBhbiBvYmplY3QsIHNldCBwcm9wIHRvIG51bGwsIHRoZW4gc2V0IHByb3AgdG8gYW4gYXJyYXkuIHNob3VsZCB0cmlnZ2VyIDIgY2FsbGJhY2tzJywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7XG4gICAgcHJvcDoge30sXG4gIH1cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iaiwgb2JqZWN0Q2FsbGJhY2spXG5cbiAgb2JqLnByb3AgPSBudWxsXG4gIG9iai5wcm9wID0gW11cblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAyfSlcbn0pXG5cbnRlc3Quc2tpcCgnb2JqIHdpdGggYSBwcm9wIHRoYXQgaXMgYW4gb2JqZWN0LCBzZXQgcHJvcCB0byBudWxsLCB0aGVuIHNldCBwcm9wIHRvIGEgc3RyaW5nLiBzaG91bGQgdHJpZ2dlciAyIGNhbGxiYWNrcycsICgpID0+IHtcbiAgY29uc3Qgb2JqID0ge1xuICAgIHByb3A6IHt9LFxuICB9XG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmosIG9iamVjdENhbGxiYWNrKVxuXG4gIG9iai5wcm9wID0gbnVsbFxuICBvYmoucHJvcCA9ICdhc2QnXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuIl19 |
@@ -73,2 +73,3 @@ "use strict"; | ||
function attachProxyToProperties(model, callback, id) { | ||
// *** SAM CHANGE 1 - replaced this: if (!model.__proxyAttached) { | ||
if (model && !model.__proxyAttached) { | ||
@@ -85,96 +86,81 @@ // eslint-disable-next-line no-param-reassign | ||
function attachProxyToField(object, fieldName, originalField, callback, id) { | ||
if (fieldName === '__proxyAttached') return; | ||
if (fieldName !== '__proxyAttached') { | ||
try { | ||
let newProxy = new Proxy(object[fieldName], { | ||
get(target, property) { | ||
return target[property]; | ||
}, | ||
try { | ||
let newProxy = new Proxy(object[fieldName], { | ||
get(target, property) { | ||
return target[property]; | ||
}, | ||
set(target, property, value) { | ||
if (property !== '__proto__' && property !== 'length') { | ||
if (typeof value === 'object') { | ||
attachProxyToProperties(value, callback, id); | ||
} // eslint-disable-next-line no-param-reassign | ||
set(target, property, value) { | ||
if (property !== '__proto__' && property !== 'length') { | ||
if (typeof value === 'object') { | ||
attachProxyToProperties(value, callback, id); | ||
} // eslint-disable-next-line no-param-reassign | ||
target[property] = value; | ||
callback(); | ||
} | ||
target[property] = value; | ||
callback(); | ||
return true; | ||
} | ||
return true; | ||
} | ||
}); | ||
Object.defineProperty(object, fieldName, { | ||
configurable: true, | ||
enumerable: true, | ||
get: () => { | ||
return newProxy; | ||
}, | ||
set: value => { | ||
if (!value) return callback(); // *** SAM CHANGE 3 | ||
}); | ||
Object.defineProperty(object, fieldName, { | ||
configurable: true, | ||
enumerable: true, | ||
get: () => { | ||
return newProxy; | ||
}, | ||
set: value => { | ||
if (typeof value === 'object' && !Array.isArray(value)) { | ||
attachProxyToProperties(value, callback, id); | ||
} | ||
if (typeof value === 'object' && !Array.isArray(value)) { | ||
attachProxyToProperties(value, callback, id); | ||
} | ||
if (!value) { | ||
Object.defineProperty(object, fieldName, { | ||
configurable: true, | ||
enumerable: true, | ||
get: () => value, | ||
set: value => { | ||
if (originalField === value) return; | ||
newProxy = new Proxy(value, { | ||
get(target, property) { | ||
return target[property]; | ||
}, | ||
if (typeof value === 'object' && !Array.isArray(value)) { | ||
attachProxyToProperties(value, callback, id); | ||
} // eslint-disable-next-line no-param-reassign | ||
set(target, property, innerValue) { | ||
if (property !== '__proto__' && property !== 'length') { | ||
if (typeof innerValue === 'object') { | ||
attachProxyToProperties(innerValue, callback, id); | ||
} // eslint-disable-next-line no-param-reassign | ||
originalField = value; | ||
callback(); | ||
target[property] = innerValue; | ||
callback(); | ||
} | ||
return true; | ||
} | ||
}); | ||
return callback(); | ||
callback(); | ||
} | ||
}); | ||
} catch (e) { | ||
// This if doesn't seem to make any difference | ||
if (fieldName !== 'length') { | ||
Object.defineProperty(object, fieldName, { | ||
configurable: true, | ||
enumerable: true, | ||
get: () => originalField, | ||
set: value => { | ||
if (originalField === value) return; // *** SAM CHANGE 2 | ||
newProxy = new Proxy(value, { | ||
get(target, property) { | ||
return target[property]; | ||
}, | ||
if (typeof value === 'object' && !Array.isArray(value)) { | ||
attachProxyToProperties(value, callback, id); | ||
} // eslint-disable-next-line no-param-reassign | ||
set(target, property, innerValue) { | ||
if (property !== '__proto__' && property !== 'length') { | ||
if (typeof innerValue === 'object') { | ||
attachProxyToProperties(innerValue, callback, id); | ||
} // eslint-disable-next-line no-param-reassign | ||
target[property] = innerValue; | ||
callback(); | ||
} | ||
return true; | ||
originalField = value; | ||
callback(); | ||
} | ||
}); | ||
callback(); | ||
} | ||
}); | ||
} catch (e) { | ||
Object.defineProperty(object, fieldName, { | ||
configurable: true, | ||
enumerable: true, | ||
get: () => originalField, | ||
set: value => { | ||
if (originalField === value) return; | ||
if (typeof value === 'object' && !Array.isArray(value)) { | ||
attachProxyToProperties(value, callback, id); | ||
} // eslint-disable-next-line no-param-reassign | ||
originalField = value; | ||
callback(); | ||
} | ||
}); | ||
} | ||
} | ||
@@ -262,7 +248,6 @@ } | ||
function useReactify(model) { | ||
const subscriptionId = useUniqueId(); // const [, stateChange] = useState(model.hash()) | ||
const [, stateChange] = (0, _react.useState)(0); | ||
const subscriptionId = useUniqueId(); | ||
const [, stateChange] = (0, _react.useState)(model.hash()); | ||
const stateChangeCallback = (0, _react.useCallback)(() => { | ||
stateChange(i => i + 1); | ||
stateChange(model.hash()); | ||
}, [model]); | ||
@@ -296,2 +281,2 @@ (0, _react.useEffect)(() => { | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VPYnNlcnZlci50cyJdLCJuYW1lcyI6WyJFdmVudEVtaXR0ZXIiLCJjYWxsYmFja3MiLCJvbiIsImV2ZW50SWQiLCJzdWJzY3JpcHRpb25JZCIsImNiIiwicHVzaCIsInJlbW92ZSIsImZpbHRlciIsImMiLCJlbWl0IiwiZm9yRWFjaCIsImV2ZW50RW1pdHRlciIsImdldEZpZWxkTmFtZXMiLCJ0b0NoZWNrIiwicHJvcHMiLCJvYmoiLCJjb25jYXQiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZ2V0UHJvdG90eXBlT2YiLCJzb3J0IiwiZSIsImkiLCJhcnIiLCJpc1dyaXRhYmxlRmllbGQiLCJvYmplY3QiLCJmaWVsZE5hbWUiLCJmaWVsZERlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ3cml0YWJsZSIsImlzV3JpdGVhYmxlT2JqZWN0RmllbGQiLCJpc1dyaXRlYWJsZVByaW1pdGl2ZUZpZWxkIiwiaXNXcml0ZWFibGVBcnJheSIsIkFycmF5IiwiaXNBcnJheSIsImF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzIiwibW9kZWwiLCJjYWxsYmFjayIsImlkIiwiX19wcm94eUF0dGFjaGVkIiwiZmllbGQiLCJyZWN1cnNpdmVseUF0dGFjaFByb3h5IiwiX19vYnNlcnZhYmxlSWQiLCJhdHRhY2hQcm94eVRvRmllbGQiLCJvcmlnaW5hbEZpZWxkIiwibmV3UHJveHkiLCJQcm94eSIsImdldCIsInRhcmdldCIsInByb3BlcnR5Iiwic2V0IiwidmFsdWUiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJpbm5lclZhbHVlIiwiYXR0YWNoUHJveHlUb0FycmF5IiwiZWxlbWVudCIsImluZGV4IiwibmVzdGVkRmllbGROYW1lIiwidW5kZWZpbmVkIiwiYWRkSWQiLCJhZGRIYXNoIiwiaGFzaCIsImN1cnJlbnRJZCIsInVzZVVuaXF1ZUlkIiwicmVmIiwiY3VycmVudCIsInVzZVJlYWN0aWZ5Iiwic3RhdGVDaGFuZ2UiLCJzdGF0ZUNoYW5nZUNhbGxiYWNrIiwiZGVjb3JhdGUiLCJ1c2VPYnNlcnZlciIsInB1cmVPYnNlcnZlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxNQUFNQSxZQUFOLENBQW1CO0FBQUE7QUFBQSxTQUNqQkMsU0FEaUIsR0FDTCxFQURLO0FBQUE7O0FBR2pCQyxFQUFBQSxFQUFFLENBQUNDLE9BQUQsRUFBVUMsY0FBVixFQUEwQkMsRUFBMUIsRUFBb0M7QUFDcEMsU0FBS0osU0FBTCxDQUFlRSxPQUFmLElBQTBCLEtBQUtGLFNBQUwsQ0FBZUUsT0FBZixLQUEyQixFQUFyRCxDQURvQyxDQUVwQzs7QUFDQUUsSUFBQUEsRUFBRSxDQUFDRCxjQUFILEdBQW9CQSxjQUFwQjtBQUNBLFNBQUtILFNBQUwsQ0FBZUUsT0FBZixFQUF3QkcsSUFBeEIsQ0FBNkJELEVBQTdCO0FBQ0Q7O0FBRURFLEVBQUFBLE1BQU0sQ0FBQ0osT0FBRCxFQUFVQyxjQUFWLEVBQWdDO0FBQ3BDLFNBQUtILFNBQUwsQ0FBZUUsT0FBZixJQUEwQixLQUFLRixTQUFMLENBQWVFLE9BQWYsRUFBd0JLLE1BQXhCLENBQ3ZCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0wsY0FBRixLQUFxQkEsY0FESixDQUExQjtBQUdEOztBQUVETSxFQUFBQSxJQUFJLENBQUNQLE9BQUQsRUFBZ0I7QUFDbEIsUUFBSSxLQUFLRixTQUFMLENBQWVFLE9BQWYsQ0FBSixFQUE2QjtBQUMzQixXQUFLRixTQUFMLENBQWVFLE9BQWYsRUFBd0JRLE9BQXhCLENBQWlDTixFQUFELElBQVFBLEVBQUUsRUFBMUM7QUFDRDtBQUNGOztBQXBCZ0I7O0FBdUJuQixNQUFNTyxZQUFZLEdBQUcsSUFBSVosWUFBSixFQUFyQjs7QUFTQSxTQUFTYSxhQUFULENBQXVCQyxPQUF2QixFQUEwQztBQUN4QyxNQUFJQyxLQUFLLEdBQUcsRUFBWjtBQUNBLE1BQUlDLEdBQUcsR0FBR0YsT0FBVjs7QUFF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dEMsRUFBbUQ7QUFDakRtQyxFQUFBQSxRQUFRLENBQUNuQyxLQUFELENBQVI7QUFDQSxRQUFNQyxRQUFRLEdBQUcrQixXQUFXLENBQUNoQyxLQUFELENBQTVCO0FBQ0FELEVBQUFBLHVCQUF1QixDQUFDQyxLQUFELEVBQVFDLFFBQVIsQ0FBdkI7QUFDQSxTQUFPRCxLQUFQO0FBQ0Q7O0FBRU0sU0FBU3FDLFlBQVQsQ0FBdUNyQyxLQUF2QyxFQUFpREMsUUFBakQsRUFBd0U7QUFDN0VrQyxFQUFBQSxRQUFRLENBQUNuQyxLQUFELENBQVI7QUFDQUQsRUFBQUEsdUJBQXVCLENBQUNDLEtBQUQsRUFBUUMsUUFBUixDQUF2QjtBQUNBLFNBQU9ELEtBQVA7QUFDRDs7ZUFFY29DLFciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGhhc2ggZnJvbSAnLi9oYXNoJ1xuaW1wb3J0IHtnZW5lcmF0ZUlkfSBmcm9tICcuL2hlbHBlcnMvZ2VuZXJhdGVJZCdcblxuY2xhc3MgRXZlbnRFbWl0dGVyIHtcbiAgY2FsbGJhY2tzID0ge31cblxuICBvbihldmVudElkLCBzdWJzY3JpcHRpb25JZCwgY2IpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGxiYWNrc1tldmVudElkXSA9IHRoaXMuY2FsbGJhY2tzW2V2ZW50SWRdIHx8IFtdXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgY2Iuc3Vic2NyaXB0aW9uSWQgPSBzdWJzY3JpcHRpb25JZFxuICAgIHRoaXMuY2FsbGJhY2tzW2V2ZW50SWRdLnB1c2goY2IpXG4gIH1cblxuICByZW1vdmUoZXZlbnRJZCwgc3Vic2NyaXB0aW9uSWQpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGxiYWNrc1tldmVudElkXSA9IHRoaXMuY2FsbGJhY2tzW2V2ZW50SWRdLmZpbHRlcihcbiAgICAgIChjKSA9PiBjLnN1YnNjcmlwdGlvbklkICE9PSBzdWJzY3JpcHRpb25JZFxuICAgIClcbiAgfVxuXG4gIGVtaXQoZXZlbnRJZCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbGxiYWNrc1tldmVudElkXSkge1xuICAgICAgdGhpcy5jYWxsYmFja3NbZXZlbnRJZF0uZm9yRWFjaCgoY2IpID0+IGNiKCkpXG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG50eXBlIE1vZGVsID0ge1xuICBjb25zdHJ1Y3RvclxuICBfX29ic2VydmFibGVJZD86IHN0cmluZ1xuICBfX3Byb3h5QXR0YWNoZWQ/OiBib29sZWFuXG4gIGhhc2g/OiAoKSA9PiBzdHJpbmdcbn1cblxuZnVuY3Rpb24gZ2V0RmllbGROYW1lcyh0b0NoZWNrKTogc3RyaW5nW10ge1xuICBsZXQgcHJvcHMgPSBbXVxuICBsZXQgb2JqID0gdG9DaGVja1xuXG4gIGRvIHtcbiAgICBwcm9wcyA9IHByb3BzLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopKVxuICB9IHdoaWxlICgob2JqID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikpKVxuICByZXR1cm4gcHJvcHNcbiAgICAuc29ydCgpXG4gICAgLmZpbHRlcigoZSwgaSwgYXJyKSA9PiBlICE9PSBhcnJbaSArIDFdICYmIHR5cGVvZiB0b0NoZWNrW2VdICE9PSAnZnVuY3Rpb24nKVxufVxuXG5mdW5jdGlvbiBpc1dyaXRhYmxlRmllbGQob2JqZWN0LCBmaWVsZE5hbWUpOiBib29sZWFuIHtcbiAgY29uc3QgZmllbGREZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGZpZWxkTmFtZSlcbiAgcmV0dXJuIGZpZWxkRGVzY3JpcHRvciAmJiBmaWVsZERlc2NyaXB0b3Iud3JpdGFibGVcbn1cblxuZnVuY3Rpb24gaXNXcml0ZWFibGVPYmplY3RGaWVsZChvYmplY3QsIGZpZWxkTmFtZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIGlzV3JpdGFibGVGaWVsZChvYmplY3QsIGZpZWxkTmFtZSkgJiZcbiAgICB0eXBlb2Ygb2JqZWN0W2ZpZWxkTmFtZV0gPT09ICdvYmplY3QnICYmXG4gICAgb2JqZWN0W2ZpZWxkTmFtZV0gIT09IG51bGxcbiAgKVxufVxuXG5mdW5jdGlvbiBpc1dyaXRlYWJsZVByaW1pdGl2ZUZpZWxkKG9iamVjdCwgZmllbGROYW1lKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgaXNXcml0YWJsZUZpZWxkKG9iamVjdCwgZmllbGROYW1lKSAmJlxuICAgICh0eXBlb2Ygb2JqZWN0W2ZpZWxkTmFtZV0gIT09ICdvYmplY3QnIHx8IG9iamVjdFtmaWVsZE5hbWVdID09PSBudWxsKVxuICApXG59XG5cbmZ1bmN0aW9uIGlzV3JpdGVhYmxlQXJyYXkob2JqZWN0LCBmaWVsZE5hbWUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzV3JpdGFibGVGaWVsZChvYmplY3QsIGZpZWxkTmFtZSkgJiYgQXJyYXkuaXNBcnJheShvYmplY3RbZmllbGROYW1lXSlcbn1cblxuZnVuY3Rpb24gYXR0YWNoUHJveHlUb1Byb3BlcnRpZXMobW9kZWw6IE1vZGVsLCBjYWxsYmFjazogRnVuY3Rpb24sIGlkPyk6IHZvaWQge1xuICBpZiAobW9kZWwgJiYgIW1vZGVsLl9fcHJveHlBdHRhY2hlZCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgIG1vZGVsLl9fcHJveHlBdHRhY2hlZCA9IHRydWVcbiAgICBnZXRGaWVsZE5hbWVzKG1vZGVsKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgcmVjdXJzaXZlbHlBdHRhY2hQcm94eShcbiAgICAgICAgbW9kZWxbZmllbGRdLFxuICAgICAgICBmaWVsZCxcbiAgICAgICAgbW9kZWwsXG4gICAgICAgIGlkIHx8IG1vZGVsLl9fb2JzZXJ2YWJsZUlkLFxuICAgICAgICBjYWxsYmFja1xuICAgICAgKVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gYXR0YWNoUHJveHlUb0ZpZWxkKFxuICBvYmplY3QsXG4gIGZpZWxkTmFtZSxcbiAgb3JpZ2luYWxGaWVsZCxcbiAgY2FsbGJhY2ssXG4gIGlkXG4pOiB2b2lkIHtcbiAgaWYgKGZpZWxkTmFtZSA9PT0gJ19fcHJveHlBdHRhY2hlZCcpXG4gICAgcmV0dXJuXG4gIHRyeSB7XG4gICAgbGV0IG5ld1Byb3h5ID0gbmV3IFByb3h5KG9iamVjdFtmaWVsZE5hbWVdLCB7XG4gICAgICBnZXQodGFyZ2V0LCBwcm9wZXJ0eSk6IG9iamVjdCB7XG4gICAgICAgIHJldHVybiB0YXJnZXRbcHJvcGVydHldXG4gICAgICB9LFxuICAgICAgc2V0KHRhcmdldCwgcHJvcGVydHksIHZhbHVlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChwcm9wZXJ0eSAhPT0gJ19fcHJvdG9fXycgJiYgcHJvcGVydHkgIT09ICdsZW5ndGgnKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKHZhbHVlLCBjYWxsYmFjaywgaWQpXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZVxuICAgICAgICAgIGNhbGxiYWNrKClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgZmllbGROYW1lLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiB7XG5cbiAgICAgICAgcmV0dXJuIG5ld1Byb3h5XG4gICAgICB9LFxuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgYXR0YWNoUHJveHlUb1Byb3BlcnRpZXModmFsdWUsIGNhbGxiYWNrLCBpZClcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgZmllbGROYW1lLCB7XG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZ2V0OiAoKSA9PiB2YWx1ZSxcbiAgICAgICAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChvcmlnaW5hbEZpZWxkID09PSB2YWx1ZSkgcmV0dXJuXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKHZhbHVlLCBjYWxsYmFjaywgaWQpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAgIG9yaWdpbmFsRmllbGQgPSB2YWx1ZVxuICAgICAgICAgICAgICBjYWxsYmFjaygpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKClcbiAgICAgICAgfVxuICAgICAgICBuZXdQcm94eSA9IG5ldyBQcm94eSh2YWx1ZSwge1xuICAgICAgICAgIGdldCh0YXJnZXQsIHByb3BlcnR5KTogb2JqZWN0IHtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXRbcHJvcGVydHldXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXQodGFyZ2V0LCBwcm9wZXJ0eSwgaW5uZXJWYWx1ZSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgaWYgKHByb3BlcnR5ICE9PSAnX19wcm90b19fJyAmJiBwcm9wZXJ0eSAhPT0gJ2xlbmd0aCcpIHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpbm5lclZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKGlubmVyVmFsdWUsIGNhbGxiYWNrLCBpZClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgICAgdGFyZ2V0W3Byb3BlcnR5XSA9IGlubmVyVmFsdWVcbiAgICAgICAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBjYWxsYmFjaygpXG4gICAgICB9LFxuICAgIH0pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBmaWVsZE5hbWUsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6ICgpID0+IG9yaWdpbmFsRmllbGQsXG4gICAgICBzZXQ6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAob3JpZ2luYWxGaWVsZCA9PT0gdmFsdWUpIHJldHVyblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICBhdHRhY2hQcm94eVRvUHJvcGVydGllcyh2YWx1ZSwgY2FsbGJhY2ssIGlkKVxuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICBvcmlnaW5hbEZpZWxkID0gdmFsdWVcbiAgICAgICAgY2FsbGJhY2soKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbn1cblxuZnVuY3Rpb24gYXR0YWNoUHJveHlUb0FycmF5KG9iamVjdCwgZmllbGROYW1lLCBjYWxsYmFjaywgaWQpOiB2b2lkIHtcbiAgb2JqZWN0W2ZpZWxkTmFtZV0uZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgcmVjdXJzaXZlbHlBdHRhY2hQcm94eShlbGVtZW50LCBpbmRleCwgb2JqZWN0W2ZpZWxkTmFtZV0sIGlkLCBjYWxsYmFjaylcbiAgfSlcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgb2JqZWN0W2BfX19fJHtmaWVsZE5hbWV9YF0gPSBvYmplY3RbZmllbGROYW1lXVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBmaWVsZE5hbWUsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6ICgpID0+IG9iamVjdFtgX19fXyR7ZmllbGROYW1lfWBdLFxuICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIG9iamVjdFtgX19fXyR7ZmllbGROYW1lfWBdID0gdmFsdWVcbiAgICAgIGNhbGxiYWNrKClcbiAgICB9LFxuICB9KVxuXG4gIC8vIEZJWE1FIHRoaXMgaXMgY2F1c2luZyB0aGUgZXh0cmEgY2FsbGJhY2sgaW4gcHVyZU9ic2VydmVyLnNwZWMgdGVzdHNcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIG9iamVjdFtmaWVsZE5hbWVdID0gbmV3IFByb3h5KG9iamVjdFtmaWVsZE5hbWVdLCB7XG4gICAgZ2V0KHRhcmdldCwgcHJvcGVydHkpOiBvYmplY3Qge1xuICAgICAgcmV0dXJuIHRhcmdldFtwcm9wZXJ0eV1cbiAgICB9LFxuICAgIHNldCh0YXJnZXQsIHByb3BlcnR5LCB2YWx1ZSk6IGJvb2xlYW4ge1xuICAgICAgaWYgKHByb3BlcnR5ICE9PSAnX19wcm90b19fJyAmJiBwcm9wZXJ0eSAhPT0gJ2xlbmd0aCcpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBhdHRhY2hQcm94eVRvUHJvcGVydGllcyh2YWx1ZSwgY2FsbGJhY2ssIGlkKVxuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICB0YXJnZXRbcHJvcGVydHldID0gdmFsdWVcbiAgICAgICAgY2FsbGJhY2soKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9LFxuICB9KVxufVxuXG5mdW5jdGlvbiByZWN1cnNpdmVseUF0dGFjaFByb3h5KFxuICBvcmlnaW5hbEZpZWxkLFxuICBmaWVsZE5hbWUsXG4gIG9iamVjdCxcbiAgaWQsXG4gIGNhbGxiYWNrOiBGdW5jdGlvblxuKTogdm9pZCB7XG4gIGlmIChpc1dyaXRlYWJsZVByaW1pdGl2ZUZpZWxkKG9iamVjdCwgZmllbGROYW1lKSlcbiAgICByZXR1cm4gYXR0YWNoUHJveHlUb0ZpZWxkKG9iamVjdCwgZmllbGROYW1lLCBvcmlnaW5hbEZpZWxkLCBjYWxsYmFjaywgaWQpXG4gIGlmIChpc1dyaXRlYWJsZUFycmF5KG9iamVjdCwgZmllbGROYW1lKSlcbiAgICByZXR1cm4gYXR0YWNoUHJveHlUb0FycmF5KG9iamVjdCwgZmllbGROYW1lLCBjYWxsYmFjaywgaWQpXG4gIGlmIChpc1dyaXRlYWJsZU9iamVjdEZpZWxkKG9iamVjdCwgZmllbGROYW1lKSkge1xuICAgIGF0dGFjaFByb3h5VG9GaWVsZChvYmplY3QsIGZpZWxkTmFtZSwgb3JpZ2luYWxGaWVsZCwgY2FsbGJhY2ssIGlkKVxuICAgIGdldEZpZWxkTmFtZXMob2JqZWN0W2ZpZWxkTmFtZV0pLmZvckVhY2goKG5lc3RlZEZpZWxkTmFtZSkgPT5cbiAgICAgIHJlY3Vyc2l2ZWx5QXR0YWNoUHJveHkoXG4gICAgICAgIG9iamVjdFtmaWVsZE5hbWVdW25lc3RlZEZpZWxkTmFtZV0sXG4gICAgICAgIG5lc3RlZEZpZWxkTmFtZSxcbiAgICAgICAgb2JqZWN0W2ZpZWxkTmFtZV0sXG4gICAgICAgIGlkLFxuICAgICAgICBjYWxsYmFja1xuICAgICAgKVxuICAgIClcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGFkZElkKG1vZGVsOiBNb2RlbCk6IHZvaWQge1xuICBpZiAoIW1vZGVsLl9fb2JzZXJ2YWJsZUlkKVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2RlbCwgJ19fb2JzZXJ2YWJsZUlkJywge1xuICAgICAgdmFsdWU6IGdlbmVyYXRlSWQoKSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICB9KVxufVxuXG5mdW5jdGlvbiBhZGRIYXNoKG1vZGVsOiBNb2RlbCk6IHZvaWQge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgaWYgKCFtb2RlbC5oYXNoKSBtb2RlbC5oYXNoID0gKCk6IHN0cmluZyA9PiBoYXNoKG1vZGVsKVxufVxuXG5sZXQgY3VycmVudElkID0gMFxuXG5leHBvcnQgZnVuY3Rpb24gdXNlVW5pcXVlSWQoKTogc3RyaW5nIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmKDApXG4gIGlmIChyZWYuY3VycmVudCA9PT0gMCkge1xuICAgIGN1cnJlbnRJZCArPSAxXG4gICAgcmVmLmN1cnJlbnQgPSBjdXJyZW50SWRcbiAgfVxuICByZXR1cm4gYHN1YnNjcmlwdGlvbl9pZCR7cmVmLmN1cnJlbnR9YFxufVxuXG5mdW5jdGlvbiB1c2VSZWFjdGlmeShtb2RlbDogTW9kZWwpOiBGdW5jdGlvbiB7XG4gIGNvbnN0IHN1YnNjcmlwdGlvbklkID0gdXNlVW5pcXVlSWQoKVxuICAvLyBjb25zdCBbLCBzdGF0ZUNoYW5nZV0gPSB1c2VTdGF0ZShtb2RlbC5oYXNoKCkpXG4gIGNvbnN0IFssIHN0YXRlQ2hhbmdlXSA9IHVzZVN0YXRlKDApXG5cbiAgY29uc3Qgc3RhdGVDaGFuZ2VDYWxsYmFjayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdGF0ZUNoYW5nZShpID0+IGkrMSlcbiAgfSwgW21vZGVsXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGV2ZW50RW1pdHRlci5vbihtb2RlbC5fX29ic2VydmFibGVJZCwgc3Vic2NyaXB0aW9uSWQsIHN0YXRlQ2hhbmdlQ2FsbGJhY2spXG4gICAgcmV0dXJuICgpOiB2b2lkID0+IGV2ZW50RW1pdHRlci5yZW1vdmUobW9kZWwuX19vYnNlcnZhYmxlSWQsIHN1YnNjcmlwdGlvbklkKVxuICB9LCBbbW9kZWwuX19vYnNlcnZhYmxlSWQsIHN1YnNjcmlwdGlvbklkLCBzdGF0ZUNoYW5nZUNhbGxiYWNrXSlcbiAgcmV0dXJuICgpOiB2b2lkID0+IGV2ZW50RW1pdHRlci5lbWl0KG1vZGVsLl9fb2JzZXJ2YWJsZUlkKVxufVxuXG5mdW5jdGlvbiBkZWNvcmF0ZShtb2RlbDogTW9kZWwpOiB2b2lkIHtcbiAgYWRkSGFzaChtb2RlbClcbiAgYWRkSWQobW9kZWwpXG59XG5cbmZ1bmN0aW9uIHVzZU9ic2VydmVyPFQgZXh0ZW5kcyBNb2RlbD4obW9kZWw6IFQpOiBUIHtcbiAgZGVjb3JhdGUobW9kZWwpXG4gIGNvbnN0IGNhbGxiYWNrID0gdXNlUmVhY3RpZnkobW9kZWwpXG4gIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKG1vZGVsLCBjYWxsYmFjaylcbiAgcmV0dXJuIG1vZGVsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwdXJlT2JzZXJ2ZXI8VCBleHRlbmRzIE1vZGVsPihtb2RlbDogVCwgY2FsbGJhY2s6IEZ1bmN0aW9uKTogVCB7XG4gIGRlY29yYXRlKG1vZGVsKVxuICBhdHRhY2hQcm94eVRvUHJvcGVydGllcyhtb2RlbCwgY2FsbGJhY2spXG4gIHJldHVybiBtb2RlbFxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VPYnNlcnZlclxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VPYnNlcnZlci50cyJdLCJuYW1lcyI6WyJFdmVudEVtaXR0ZXIiLCJjYWxsYmFja3MiLCJvbiIsImV2ZW50SWQiLCJzdWJzY3JpcHRpb25JZCIsImNiIiwicHVzaCIsInJlbW92ZSIsImZpbHRlciIsImMiLCJlbWl0IiwiZm9yRWFjaCIsImV2ZW50RW1pdHRlciIsImdldEZpZWxkTmFtZXMiLCJ0b0NoZWNrIiwicHJvcHMiLCJvYmoiLCJjb25jYXQiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZ2V0UHJvdG90eXBlT2YiLCJzb3J0IiwiZSIsImkiLCJhcnIiLCJpc1dyaXRhYmxlRmllbGQiLCJvYmplY3QiLCJmaWVsZE5hbWUiLCJmaWVsZERlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ3cml0YWJsZSIsImlzV3JpdGVhYmxlT2JqZWN0RmllbGQiLCJpc1dyaXRlYWJsZVByaW1pdGl2ZUZpZWxkIiwiaXNXcml0ZWFibGVBcnJheSIsIkFycmF5IiwiaXNBcnJheSIsImF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzIiwibW9kZWwiLCJjYWxsYmFjayIsImlkIiwiX19wcm94eUF0dGFjaGVkIiwiZmllbGQiLCJyZWN1cnNpdmVseUF0dGFjaFByb3h5IiwiX19vYnNlcnZhYmxlSWQiLCJhdHRhY2hQcm94eVRvRmllbGQiLCJvcmlnaW5hbEZpZWxkIiwibmV3UHJveHkiLCJQcm94eSIsImdldCIsInRhcmdldCIsInByb3BlcnR5Iiwic2V0IiwidmFsdWUiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJpbm5lclZhbHVlIiwiYXR0YWNoUHJveHlUb0FycmF5IiwiZWxlbWVudCIsImluZGV4IiwibmVzdGVkRmllbGROYW1lIiwidW5kZWZpbmVkIiwiYWRkSWQiLCJhZGRIYXNoIiwiaGFzaCIsImN1cnJlbnRJZCIsInVzZVVuaXF1ZUlkIiwicmVmIiwiY3VycmVudCIsInVzZVJlYWN0aWZ5Iiwic3RhdGVDaGFuZ2UiLCJzdGF0ZUNoYW5nZUNhbGxiYWNrIiwiZGVjb3JhdGUiLCJ1c2VPYnNlcnZlciIsInB1cmVPYnNlcnZlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxNQUFNQSxZQUFOLENBQW1CO0FBQUE7QUFBQSxTQUNqQkMsU0FEaUIsR0FDTCxFQURLO0FBQUE7O0FBR2pCQyxFQUFBQSxFQUFFLENBQUNDLE9BQUQsRUFBVUMsY0FBVixFQUEwQkMsRUFBMUIsRUFBb0M7QUFDcEMsU0FBS0osU0FBTCxDQUFlRSxPQUFmLElBQTBCLEtBQUtGLFNBQUwsQ0FBZUUsT0FBZixLQUEyQixFQUFyRCxDQURvQyxDQUVwQzs7QUFDQUUsSUFBQUEsRUFBRSxDQUFDRCxjQUFILEdBQW9CQSxjQUFwQjtBQUNBLFNBQUtILFNBQUwsQ0FBZUUsT0FBZixFQUF3QkcsSUFBeEIsQ0FBNkJELEVBQTdCO0FBQ0Q7O0FBRURFLEVBQUFBLE1BQU0sQ0FBQ0osT0FBRCxFQUFVQyxjQUFWLEVBQWdDO0FBQ3BDLFNBQUtILFNBQUwsQ0FBZUUsT0FBZixJQUEwQixLQUFLRixTQUFMLENBQWVFLE9BQWYsRUFBd0JLLE1BQXhCLENBQ3ZCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0wsY0FBRixLQUFxQkEsY0FESixDQUExQjtBQUdEOztBQUVETSxFQUFBQSxJQUFJLENBQUNQLE9BQUQsRUFBZ0I7QUFDbEIsUUFBSSxLQUFLRixTQUFMLENBQWVFLE9BQWYsQ0FBSixFQUE2QjtBQUMzQixXQUFLRixTQUFMLENBQWVFLE9BQWYsRUFBd0JRLE9BQXhCLENBQWlDTixFQUFELElBQVFBLEVBQUUsRUFBMUM7QUFDRDtBQUNGOztBQXBCZ0I7O0FBdUJuQixNQUFNTyxZQUFZLEdBQUcsSUFBSVosWUFBSixFQUFyQjs7QUFTQSxTQUFTYSxhQUFULENBQXVCQyxPQUF2QixFQUEwQztBQUN4QyxNQUFJQyxLQUFLLEdBQUcsRUFBWjtBQUNBLE1BQUlDLEdBQUcsR0FBR0YsT0FBVjs7QUFF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ZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCBoYXNoIGZyb20gJy4vaGFzaCdcbmltcG9ydCB7Z2VuZXJhdGVJZH0gZnJvbSAnLi9oZWxwZXJzL2dlbmVyYXRlSWQnXG5cbmNsYXNzIEV2ZW50RW1pdHRlciB7XG4gIGNhbGxiYWNrcyA9IHt9XG5cbiAgb24oZXZlbnRJZCwgc3Vic2NyaXB0aW9uSWQsIGNiKTogdm9pZCB7XG4gICAgdGhpcy5jYWxsYmFja3NbZXZlbnRJZF0gPSB0aGlzLmNhbGxiYWNrc1tldmVudElkXSB8fCBbXVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgIGNiLnN1YnNjcmlwdGlvbklkID0gc3Vic2NyaXB0aW9uSWRcbiAgICB0aGlzLmNhbGxiYWNrc1tldmVudElkXS5wdXNoKGNiKVxuICB9XG5cbiAgcmVtb3ZlKGV2ZW50SWQsIHN1YnNjcmlwdGlvbklkKTogdm9pZCB7XG4gICAgdGhpcy5jYWxsYmFja3NbZXZlbnRJZF0gPSB0aGlzLmNhbGxiYWNrc1tldmVudElkXS5maWx0ZXIoXG4gICAgICAoYykgPT4gYy5zdWJzY3JpcHRpb25JZCAhPT0gc3Vic2NyaXB0aW9uSWRcbiAgICApXG4gIH1cblxuICBlbWl0KGV2ZW50SWQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYWxsYmFja3NbZXZlbnRJZF0pIHtcbiAgICAgIHRoaXMuY2FsbGJhY2tzW2V2ZW50SWRdLmZvckVhY2goKGNiKSA9PiBjYigpKVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBldmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKClcblxudHlwZSBNb2RlbCA9IHtcbiAgY29uc3RydWN0b3JcbiAgX19vYnNlcnZhYmxlSWQ/OiBzdHJpbmdcbiAgX19wcm94eUF0dGFjaGVkPzogYm9vbGVhblxuICBoYXNoPzogKCkgPT4gc3RyaW5nXG59XG5cbmZ1bmN0aW9uIGdldEZpZWxkTmFtZXModG9DaGVjayk6IHN0cmluZ1tdIHtcbiAgbGV0IHByb3BzID0gW11cbiAgbGV0IG9iaiA9IHRvQ2hlY2tcblxuICBkbyB7XG4gICAgcHJvcHMgPSBwcm9wcy5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKSlcbiAgfSB3aGlsZSAoKG9iaiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopKSlcbiAgcmV0dXJuIHByb3BzXG4gICAgLnNvcnQoKVxuICAgIC5maWx0ZXIoKGUsIGksIGFycikgPT4gZSAhPT0gYXJyW2kgKyAxXSAmJiB0eXBlb2YgdG9DaGVja1tlXSAhPT0gJ2Z1bmN0aW9uJylcbn1cblxuZnVuY3Rpb24gaXNXcml0YWJsZUZpZWxkKG9iamVjdCwgZmllbGROYW1lKTogYm9vbGVhbiB7XG4gIGNvbnN0IGZpZWxkRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBmaWVsZE5hbWUpXG4gIHJldHVybiBmaWVsZERlc2NyaXB0b3IgJiYgZmllbGREZXNjcmlwdG9yLndyaXRhYmxlXG59XG5cbmZ1bmN0aW9uIGlzV3JpdGVhYmxlT2JqZWN0RmllbGQob2JqZWN0LCBmaWVsZE5hbWUpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBpc1dyaXRhYmxlRmllbGQob2JqZWN0LCBmaWVsZE5hbWUpICYmXG4gICAgdHlwZW9mIG9iamVjdFtmaWVsZE5hbWVdID09PSAnb2JqZWN0JyAmJlxuICAgIG9iamVjdFtmaWVsZE5hbWVdICE9PSBudWxsXG4gIClcbn1cblxuZnVuY3Rpb24gaXNXcml0ZWFibGVQcmltaXRpdmVGaWVsZChvYmplY3QsIGZpZWxkTmFtZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIGlzV3JpdGFibGVGaWVsZChvYmplY3QsIGZpZWxkTmFtZSkgJiZcbiAgICAodHlwZW9mIG9iamVjdFtmaWVsZE5hbWVdICE9PSAnb2JqZWN0JyB8fCBvYmplY3RbZmllbGROYW1lXSA9PT0gbnVsbClcbiAgKVxufVxuXG5mdW5jdGlvbiBpc1dyaXRlYWJsZUFycmF5KG9iamVjdCwgZmllbGROYW1lKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1dyaXRhYmxlRmllbGQob2JqZWN0LCBmaWVsZE5hbWUpICYmIEFycmF5LmlzQXJyYXkob2JqZWN0W2ZpZWxkTmFtZV0pXG59XG5cbmZ1bmN0aW9uIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKG1vZGVsOiBNb2RlbCwgY2FsbGJhY2s6IEZ1bmN0aW9uLCBpZD8pOiB2b2lkIHtcbiAgLy8gKioqIFNBTSBDSEFOR0UgMSAtIHJlcGxhY2VkIHRoaXM6IGlmICghbW9kZWwuX19wcm94eUF0dGFjaGVkKSB7XG4gIGlmIChtb2RlbCAmJiAhbW9kZWwuX19wcm94eUF0dGFjaGVkKSB7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICBtb2RlbC5fX3Byb3h5QXR0YWNoZWQgPSB0cnVlXG4gICAgZ2V0RmllbGROYW1lcyhtb2RlbCkuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlY3Vyc2l2ZWx5QXR0YWNoUHJveHkoXG4gICAgICAgIG1vZGVsW2ZpZWxkXSxcbiAgICAgICAgZmllbGQsXG4gICAgICAgIG1vZGVsLFxuICAgICAgICBpZCB8fCBtb2RlbC5fX29ic2VydmFibGVJZCxcbiAgICAgICAgY2FsbGJhY2tcbiAgICAgIClcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGF0dGFjaFByb3h5VG9GaWVsZChcbiAgb2JqZWN0LFxuICBmaWVsZE5hbWUsXG4gIG9yaWdpbmFsRmllbGQsXG4gIGNhbGxiYWNrLFxuICBpZFxuKTogdm9pZCB7XG4gIGlmIChmaWVsZE5hbWUgIT09ICdfX3Byb3h5QXR0YWNoZWQnKSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBuZXdQcm94eSA9IG5ldyBQcm94eShvYmplY3RbZmllbGROYW1lXSwge1xuICAgICAgICBnZXQodGFyZ2V0LCBwcm9wZXJ0eSk6IG9iamVjdCB7XG4gICAgICAgICAgcmV0dXJuIHRhcmdldFtwcm9wZXJ0eV1cbiAgICAgICAgfSxcbiAgICAgICAgc2V0KHRhcmdldCwgcHJvcGVydHksIHZhbHVlKTogYm9vbGVhbiB7XG4gICAgICAgICAgaWYgKHByb3BlcnR5ICE9PSAnX19wcm90b19fJyAmJiBwcm9wZXJ0eSAhPT0gJ2xlbmd0aCcpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKHZhbHVlLCBjYWxsYmFjaywgaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZVxuICAgICAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgZmllbGROYW1lLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG5ld1Byb3h5XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIGNhbGxiYWNrKCkgLy8gKioqIFNBTSBDSEFOR0UgM1xuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgYXR0YWNoUHJveHlUb1Byb3BlcnRpZXModmFsdWUsIGNhbGxiYWNrLCBpZClcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV3UHJveHkgPSBuZXcgUHJveHkodmFsdWUsIHtcbiAgICAgICAgICAgIGdldCh0YXJnZXQsIHByb3BlcnR5KTogb2JqZWN0IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtwcm9wZXJ0eV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQodGFyZ2V0LCBwcm9wZXJ0eSwgaW5uZXJWYWx1ZSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgICBpZiAocHJvcGVydHkgIT09ICdfX3Byb3RvX18nICYmIHByb3BlcnR5ICE9PSAnbGVuZ3RoJykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaW5uZXJWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKGlubmVyVmFsdWUsIGNhbGxiYWNrLCBpZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAgICAgdGFyZ2V0W3Byb3BlcnR5XSA9IGlubmVyVmFsdWVcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICBjYWxsYmFjaygpXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIFRoaXMgaWYgZG9lc24ndCBzZWVtIHRvIG1ha2UgYW55IGRpZmZlcmVuY2VcbiAgICAgIGlmIChmaWVsZE5hbWUgIT09ICdsZW5ndGgnKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIGZpZWxkTmFtZSwge1xuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogKCkgPT4gb3JpZ2luYWxGaWVsZCxcbiAgICAgICAgICBzZXQ6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsRmllbGQgPT09IHZhbHVlKSByZXR1cm4gLy8gKioqIFNBTSBDSEFOR0UgMlxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKHZhbHVlLCBjYWxsYmFjaywgaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgIG9yaWdpbmFsRmllbGQgPSB2YWx1ZVxuICAgICAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGF0dGFjaFByb3h5VG9BcnJheShvYmplY3QsIGZpZWxkTmFtZSwgY2FsbGJhY2ssIGlkKTogdm9pZCB7XG4gIG9iamVjdFtmaWVsZE5hbWVdLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHJlY3Vyc2l2ZWx5QXR0YWNoUHJveHkoZWxlbWVudCwgaW5kZXgsIG9iamVjdFtmaWVsZE5hbWVdLCBpZCwgY2FsbGJhY2spXG4gIH0pXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIG9iamVjdFtgX19fXyR7ZmllbGROYW1lfWBdID0gb2JqZWN0W2ZpZWxkTmFtZV1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgZmllbGROYW1lLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiAoKSA9PiBvYmplY3RbYF9fX18ke2ZpZWxkTmFtZX1gXSxcbiAgICBzZXQ6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICBvYmplY3RbYF9fX18ke2ZpZWxkTmFtZX1gXSA9IHZhbHVlXG4gICAgICBjYWxsYmFjaygpXG4gICAgfSxcbiAgfSlcblxuICAvLyBGSVhNRSB0aGlzIGlzIGNhdXNpbmcgdGhlIGV4dHJhIGNhbGxiYWNrIGluIHB1cmVPYnNlcnZlci5zcGVjIHRlc3RzXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBvYmplY3RbZmllbGROYW1lXSA9IG5ldyBQcm94eShvYmplY3RbZmllbGROYW1lXSwge1xuICAgIGdldCh0YXJnZXQsIHByb3BlcnR5KTogb2JqZWN0IHtcbiAgICAgIHJldHVybiB0YXJnZXRbcHJvcGVydHldXG4gICAgfSxcbiAgICBzZXQodGFyZ2V0LCBwcm9wZXJ0eSwgdmFsdWUpOiBib29sZWFuIHtcbiAgICAgIGlmIChwcm9wZXJ0eSAhPT0gJ19fcHJvdG9fXycgJiYgcHJvcGVydHkgIT09ICdsZW5ndGgnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgYXR0YWNoUHJveHlUb1Byb3BlcnRpZXModmFsdWUsIGNhbGxiYWNrLCBpZClcbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgdGFyZ2V0W3Byb3BlcnR5XSA9IHZhbHVlXG4gICAgICAgIGNhbGxiYWNrKClcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSxcbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVjdXJzaXZlbHlBdHRhY2hQcm94eShcbiAgb3JpZ2luYWxGaWVsZCxcbiAgZmllbGROYW1lLFxuICBvYmplY3QsXG4gIGlkLFxuICBjYWxsYmFjazogRnVuY3Rpb25cbik6IHZvaWQge1xuICBpZiAoaXNXcml0ZWFibGVQcmltaXRpdmVGaWVsZChvYmplY3QsIGZpZWxkTmFtZSkpXG4gICAgcmV0dXJuIGF0dGFjaFByb3h5VG9GaWVsZChvYmplY3QsIGZpZWxkTmFtZSwgb3JpZ2luYWxGaWVsZCwgY2FsbGJhY2ssIGlkKVxuICBpZiAoaXNXcml0ZWFibGVBcnJheShvYmplY3QsIGZpZWxkTmFtZSkpXG4gICAgcmV0dXJuIGF0dGFjaFByb3h5VG9BcnJheShvYmplY3QsIGZpZWxkTmFtZSwgY2FsbGJhY2ssIGlkKVxuICBpZiAoaXNXcml0ZWFibGVPYmplY3RGaWVsZChvYmplY3QsIGZpZWxkTmFtZSkpIHtcbiAgICBhdHRhY2hQcm94eVRvRmllbGQob2JqZWN0LCBmaWVsZE5hbWUsIG9yaWdpbmFsRmllbGQsIGNhbGxiYWNrLCBpZClcbiAgICBnZXRGaWVsZE5hbWVzKG9iamVjdFtmaWVsZE5hbWVdKS5mb3JFYWNoKChuZXN0ZWRGaWVsZE5hbWUpID0+XG4gICAgICByZWN1cnNpdmVseUF0dGFjaFByb3h5KFxuICAgICAgICBvYmplY3RbZmllbGROYW1lXVtuZXN0ZWRGaWVsZE5hbWVdLFxuICAgICAgICBuZXN0ZWRGaWVsZE5hbWUsXG4gICAgICAgIG9iamVjdFtmaWVsZE5hbWVdLFxuICAgICAgICBpZCxcbiAgICAgICAgY2FsbGJhY2tcbiAgICAgIClcbiAgICApXG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBhZGRJZChtb2RlbDogTW9kZWwpOiB2b2lkIHtcbiAgaWYgKCFtb2RlbC5fX29ic2VydmFibGVJZClcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kZWwsICdfX29ic2VydmFibGVJZCcsIHtcbiAgICAgIHZhbHVlOiBnZW5lcmF0ZUlkKCksXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgfSlcbn1cblxuZnVuY3Rpb24gYWRkSGFzaChtb2RlbDogTW9kZWwpOiB2b2lkIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGlmICghbW9kZWwuaGFzaCkgbW9kZWwuaGFzaCA9ICgpOiBzdHJpbmcgPT4gaGFzaChtb2RlbClcbn1cblxubGV0IGN1cnJlbnRJZCA9IDBcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVVuaXF1ZUlkKCk6IHN0cmluZyB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZigwKVxuICBpZiAocmVmLmN1cnJlbnQgPT09IDApIHtcbiAgICBjdXJyZW50SWQgKz0gMVxuICAgIHJlZi5jdXJyZW50ID0gY3VycmVudElkXG4gIH1cbiAgcmV0dXJuIGBzdWJzY3JpcHRpb25faWQke3JlZi5jdXJyZW50fWBcbn1cblxuZnVuY3Rpb24gdXNlUmVhY3RpZnkobW9kZWw6IE1vZGVsKTogRnVuY3Rpb24ge1xuICBjb25zdCBzdWJzY3JpcHRpb25JZCA9IHVzZVVuaXF1ZUlkKClcbiAgY29uc3QgWywgc3RhdGVDaGFuZ2VdID0gdXNlU3RhdGUobW9kZWwuaGFzaCgpKVxuXG4gIGNvbnN0IHN0YXRlQ2hhbmdlQ2FsbGJhY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc3RhdGVDaGFuZ2UobW9kZWwuaGFzaCgpKVxuICB9LCBbbW9kZWxdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZXZlbnRFbWl0dGVyLm9uKG1vZGVsLl9fb2JzZXJ2YWJsZUlkLCBzdWJzY3JpcHRpb25JZCwgc3RhdGVDaGFuZ2VDYWxsYmFjaylcbiAgICByZXR1cm4gKCk6IHZvaWQgPT4gZXZlbnRFbWl0dGVyLnJlbW92ZShtb2RlbC5fX29ic2VydmFibGVJZCwgc3Vic2NyaXB0aW9uSWQpXG4gIH0sIFttb2RlbC5fX29ic2VydmFibGVJZCwgc3Vic2NyaXB0aW9uSWQsIHN0YXRlQ2hhbmdlQ2FsbGJhY2tdKVxuICByZXR1cm4gKCk6IHZvaWQgPT4gZXZlbnRFbWl0dGVyLmVtaXQobW9kZWwuX19vYnNlcnZhYmxlSWQpXG59XG5cbmZ1bmN0aW9uIGRlY29yYXRlKG1vZGVsOiBNb2RlbCk6IHZvaWQge1xuICBhZGRIYXNoKG1vZGVsKVxuICBhZGRJZChtb2RlbClcbn1cblxuZnVuY3Rpb24gdXNlT2JzZXJ2ZXI8VCBleHRlbmRzIE1vZGVsPihtb2RlbDogVCk6IFQge1xuICBkZWNvcmF0ZShtb2RlbClcbiAgY29uc3QgY2FsbGJhY2sgPSB1c2VSZWFjdGlmeShtb2RlbClcbiAgYXR0YWNoUHJveHlUb1Byb3BlcnRpZXMobW9kZWwsIGNhbGxiYWNrKVxuICByZXR1cm4gbW9kZWxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1cmVPYnNlcnZlcjxUIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBULCBjYWxsYmFjazogRnVuY3Rpb24pOiBUIHtcbiAgZGVjb3JhdGUobW9kZWwpXG4gIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKG1vZGVsLCBjYWxsYmFjaylcbiAgcmV0dXJuIG1vZGVsXG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZU9ic2VydmVyXG4iXX0= |
@@ -8,5 +8,7 @@ { | ||
], | ||
"version": "1.0.7-test-build", | ||
"dependencies": { | ||
"object-hash": "^2.0.0" | ||
"version": "1.1.1", | ||
"description": "## What? A minimalist object observer that works with React hooks.", | ||
"main": "lib/index.js", | ||
"directories": { | ||
"lib": "./lib" | ||
}, | ||
@@ -17,17 +19,28 @@ "scripts": { | ||
"test": "npm run test:unit", | ||
"test:example:domain": "cucumber-js ./example/features --require-module ts-node/register --require './example/features/step-definitions/**/*.ts'", | ||
"test:example:domain:focus": "watch --interval=0.3 'echo RUNNING && cucumber-js ./example/features --require-module ts-node/register --require ./example/features/step-definitions/**/*.ts' ./example", | ||
"prepublish": "rm -rf lib && npm run build", | ||
"build:watch": "npm run build:js -- --watch", | ||
"type-check": "cd src && tsc --noEmit", | ||
"type-check": "tsc --noEmit", | ||
"type-check:watch": "npm run type-check -- --watch", | ||
"build": "npm run build:types && npm run build:js", | ||
"build:types": "cd src && tsc --declaration --emitDeclarationOnly --jsx react", | ||
"build:js": "babel src --out-dir lib --extensions \".ts,.tsx\" --source-maps inline --ignore '**/*.spec.ts*,*/demo'" | ||
"build:js": "babel src --out-dir lib --extensions \".ts,.tsx\" --source-maps inline --ignore '**/*.spec.ts*,*/example'", | ||
"start:example": "parcel ./example/public/index.html" | ||
}, | ||
"repository": { | ||
"type": "git", | ||
"url": "git+https://github.com/xolvio/pojo-observer.git" | ||
}, | ||
"files": [ | ||
"**/lib/*" | ||
], | ||
"main": "lib/index.js", | ||
"peerDependencies": { | ||
"react": ">= 16.8.0" | ||
"license": "ISC", | ||
"bugs": { | ||
"url": "https://github.com/xolvio/pojo-observer/issues" | ||
}, | ||
"homepage": "https://github.com/xolvio/pojo-observer#readme", | ||
"dependencies": { | ||
"object-hash": "^2.0.0" | ||
}, | ||
"devDependencies": { | ||
@@ -41,9 +54,16 @@ "@babel/cli": "^7.2.3", | ||
"@babel/preset-react": "^7.0.0", | ||
"@babel/preset-typescript": "~7.8.3", | ||
"@babel/preset-typescript": "^7.9.0", | ||
"@testing-library/dom": "^7.2.1", | ||
"@testing-library/jest-dom": "^5.1.0", | ||
"@testing-library/react": "^9.4.0", | ||
"@testing-library/user-event": "^7.1.2", | ||
"@types/jest": "^25.1.1", | ||
"@typescript-eslint/eslint-plugin": "^2.18.0", | ||
"@typescript-eslint/parser": "^2.18.0", | ||
"@types/node": "~12.12.23", | ||
"@types/parcel-env": "^0.0.0", | ||
"@typescript-eslint/eslint-plugin": "^2.29.0", | ||
"@typescript-eslint/parser": "^2.29.0", | ||
"babel-jest": "^24.9.0", | ||
"browserslist": "^4.12.0", | ||
"cucumber": "^5.1.0", | ||
"cz-conventional-changelog": "3.1.0", | ||
"eslint": "^6.8.0", | ||
@@ -59,15 +79,32 @@ "eslint-config-airbnb": "^18.1.0", | ||
"eslint-plugin-react-hooks": "^2.5.0", | ||
"expect": "^25.3.0", | ||
"husky": "^4.2.1", | ||
"jest": "^25.1.0", | ||
"lint-staged": "^10.0.7", | ||
"parcel-bundler": "^1.12.4", | ||
"prettier": "^2.0.4", | ||
"react": "^16.9.0", | ||
"react-dom": "^16.9.0", | ||
"react-scripts": "^2.1.3", | ||
"react": "^16.13.1", | ||
"react-dom": "^16.13.1", | ||
"react-scripts": "3.4.1", | ||
"regenerator-runtime": "^0.13.5", | ||
"semantic-release": "^17.0.7", | ||
"sort-package-json": "^1.42.1", | ||
"testdouble": "^3.12.5", | ||
"typescript": "^3.7.5" | ||
"ts-node": "^8.8.2", | ||
"typescript": "^3.8.3", | ||
"watch": "^1.0.2" | ||
}, | ||
"peerDependencies": { | ||
"react": ">= 16.8.0" | ||
}, | ||
"keywords": [ | ||
"react-hooks", | ||
"domain-driven-design", | ||
"clean-architecture", | ||
"cqrs" | ||
], | ||
"husky": { | ||
"hooks": { | ||
"pre-commit": "lint-staged" | ||
"prepare-commit-msg": "exec < /dev/tty && git cz --hook || true", | ||
"pre-commit": "yarn type-check && yarn test:example:domain && lint-staged" | ||
} | ||
@@ -81,3 +118,4 @@ }, | ||
"example/**/*.ts*": [ | ||
"cd example && eslint --fix" | ||
"eslint --fix", | ||
"jest --findRelatedTests" | ||
] | ||
@@ -87,22 +125,13 @@ }, | ||
"testPathIgnorePatterns": [ | ||
"<rootDir>/lib", | ||
"<rootDir>/node_modules" | ||
"<rootDir>/lib" | ||
] | ||
}, | ||
"description": "Use React hooks with a domain object. This allows you to separate view logic from interaction logic.", | ||
"repository": { | ||
"type": "git", | ||
"url": "git+https://github.com/xolvio/react-domain-hooks.git" | ||
}, | ||
"keywords": [ | ||
"react-hooks", | ||
"domain-driven-design", | ||
"clean-architecture", | ||
"cqrs" | ||
"browserslist": [ | ||
"defaults" | ||
], | ||
"license": "MIT", | ||
"bugs": { | ||
"url": "https://github.com/xolvio/react-domain-hooks/issues" | ||
}, | ||
"homepage": "https://github.com/xolvio/react-domain-hooks#readme" | ||
"config": { | ||
"commitizen": { | ||
"path": "./node_modules/cz-conventional-changelog" | ||
} | ||
} | ||
} |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
188496
49
1709
0
1
168
47
1
1