pojo-observer
Advanced tools
Comparing version 1.0.6-alpha to 1.0.7-alpha
@@ -529,3 +529,3 @@ "use strict"; | ||
}); | ||
test('obj with a prop that is an object, set prop to null, then set prop to a string. should trigger 2 callbacks', () => { | ||
test('allow setting a property to a primitive after being set to null', () => { | ||
const obj = { | ||
@@ -542,2 +542,28 @@ prop: {} | ||
}); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wdXJlT2JzZXJ2ZXIuc3BlYy50cyJdLCJuYW1lcyI6WyJ0ZXN0Iiwib2JqZWN0Iiwib2JqMUNhbGxiYWNrIiwidGQiLCJmdW5jIiwidmVyaWZ5IiwidGltZXMiLCJvYmoxIiwiZm9vIiwibXV0YXRlTWUiLCJvYmoyIiwiYmFyIiwib2JqMkNhbGxiYWNrIiwiYXJyIiwiaGVsbG8iLCJ5byIsInB1c2giLCJpbm5lck9iaiIsImZpbGVzIiwidW5kZWZpbmVkIiwiZmllbGQiLCJuZXN0ZWQiLCJvYmplY3RDYWxsYmFjayIsImRlZXAiLCJ2ZXJ5IiwiZXhwZWN0IiwidG9FcXVhbCIsIm9iaiIsIm51bGxWYWx1ZSIsInByb3AiXSwibWFwcGluZ3MiOiI7O0FBQ0E7O0FBQ0E7Ozs7OztBQUZBO0FBSUFBLElBQUksQ0FBQyx1QkFBRCxFQUEwQixNQUFNO0FBQ2xDLFFBQU1DLE1BQU0sR0FBRztBQUFDRCxJQUFBQSxJQUFJLEVBQUU7QUFBUCxHQUFmO0FBQ0EsUUFBTUUsWUFBWSxHQUFHQyxFQUFFLENBQUNDLElBQUgsRUFBckI7QUFDQSxpQ0FBYUgsTUFBYixFQUFxQkMsWUFBckI7QUFFQUQsRUFBQUEsTUFBTSxDQUFDRCxJQUFQLEdBQWMsS0FBZDtBQUNBRyxFQUFBQSxFQUFFLENBQUNFLE1BQUgsQ0FBVUgsWUFBWSxFQUF0QjtBQUNBRCxFQUFBQSxNQUFNLENBQUNELElBQVAsR0FBYyxPQUFkO0FBQ0FHLEVBQUFBLEVBQUUsQ0FBQ0UsTUFBSCxDQUFVSCxZQUFZLEVBQXRCLEVBQTBCO0FBQUNJLElBQUFBLEtBQUssRUFBRTtBQUFSLEdBQTFCO0FBQ0QsQ0FURyxDQUFKO0FBV0FOLElBQUksQ0FBQyxrREFBRCxFQUFxRCxNQUFNO0FBQzdELFFBQU1PLElBQUksR0FBRztBQUNYQyxJQUFBQSxHQUFHLEVBQUUsTUFETTtBQUVYQyxJQUFBQSxRQUFRLEVBQUUsTUFBTTtBQUNkRixNQUFBQSxJQUFJLENBQUNDLEdBQUwsR0FBVyxPQUFYO0FBQ0Q7QUFKVSxH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SUFBWDtBQUNBRixFQUFBQSxHQUFHLENBQUNFLElBQUosR0FBVyxFQUFYO0FBRUExQixFQUFBQSxFQUFFLENBQUNFLE1BQUgsQ0FBVWlCLGNBQWMsRUFBeEIsRUFBNEI7QUFBQ2hCLElBQUFBLEtBQUssRUFBRTtBQUFSLEdBQTVCO0FBQ0QsQ0FYRyxDQUFKO0FBYUFOLElBQUksQ0FBQyw0R0FBRCxFQUErRyxNQUFNO0FBQ3ZILFFBQU0yQixHQUFHLEdBQUc7QUFDVkUsSUFBQUEsSUFBSSxFQUFFO0FBREksR0FBWjtBQUdBLFFBQU1QLGNBQWMsR0FBR25CLEVBQUUsQ0FBQ0MsSUFBSCxFQUF2QjtBQUNBLGlDQUFhdUIsR0FBYixFQUFrQkwsY0FBbEI7QUFFQUssRUFBQUEsR0FBRyxDQUFDRSxJQUFKLEdBQVcsSUFBWDtBQUNBRixFQUFBQSxHQUFHLENBQUNFLElBQUosR0FBVyxLQUFYO0FBRUExQixFQUFBQSxFQUFFLENBQUNFLE1BQUgsQ0FBVWlCLGNBQWMsRUFBeEIsRUFBNEI7QUFBQ2hCLElBQUFBLEtBQUssRUFBRTtBQUFSLEdBQTVCO0FBQ0QsQ0FYRyxDQUFKIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1pZ25vcmUgKi9cbmltcG9ydCAqIGFzIHRkIGZyb20gJ3Rlc3Rkb3VibGUnXG5pbXBvcnQge3B1cmVPYnNlcnZlcn0gZnJvbSAnLi91c2VPYnNlcnZlcidcblxudGVzdCgnaXQgcmVhY3RzIHRvIGEgY2hhbmdlJywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7dGVzdDogJ2FiYyd9XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKSBhcyAoKSA9PiB2b2lkXG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iajFDYWxsYmFjaylcblxuICBvYmplY3QudGVzdCA9ICdkZWYnXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSlcbiAgb2JqZWN0LnRlc3QgPSAndGhlcmUnXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAyfSlcbn0pXG5cbnRlc3QoJ3RoYXQgaXQgY2FuIHdvcmsgd2l0aCBtdWx0aXBsZSBvYmplY3RzLCBubyByZWFjdCcsICgpID0+IHtcbiAgY29uc3Qgb2JqMSA9IHtcbiAgICBmb286ICdoZXJlJyxcbiAgICBtdXRhdGVNZTogKCkgPT4ge1xuICAgICAgb2JqMS5mb28gPSAndGhlcmUnXG4gICAgfSxcbiAgfVxuICBjb25zdCBvYmoyID0ge1xuICAgIGJhcjogJ3BldGUnLFxuICAgIG11dGF0ZU1lOiAoKSA9PiB7XG4gICAgICBvYmoyLmJhciA9ICdwYXVsJ1xuICAgIH0sXG4gIH1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG4gIGNvbnN0IG9iajJDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqMiwgb2JqMkNhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIHRkLnZlcmlmeShvYmoyQ2FsbGJhY2soKSwge3RpbWVzOiAwfSlcblxuICBvYmoxLm11dGF0ZU1lKClcbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpKVxuICB0ZC52ZXJpZnkob2JqMkNhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIG9iajIubXV0YXRlTWUoKVxuICB0ZC52ZXJpZnkob2JqMkNhbGxiYWNrKCkpXG59KVxuXG50ZXN0KCdpdCBzaG91bGQgY2FsbGJhY2sgZm9yIGNoYW5nZXMgaW4gb2JqZWN0cyBhZGRlZCB0byBhcnJheXMnLCAoKSA9PiB7XG4gIGNvbnN0IG9iamVjdCA9IHthcnI6IFtdfVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqMUNhbGxiYWNrKVxuICAvLyBGSVhNRSAtIGdldCByaWQgb2YgdGhlIGluaXRpYWwgY2FsbGJhY2tcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgb2JqZWN0LmFyclswXSA9IHtcbiAgICBoZWxsbzogJ3dvcmxkJyxcbiAgfVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMn0pXG5cbiAgb2JqZWN0LmFyclswXS5oZWxsbyA9ICd0aGVyZSdcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogM30pXG59KVxuXG50ZXN0KCdpdCBzaG91bGQgY2FsbGJhY2sgZm9yIGNoYW5nZXMgaW4gb2JqZWN0cyBhZGRlZCB0byBhcnJheXMgYmVmb3JlIG9ic2VydmVyIGlzIGF0dGFjaGVkJywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7YXJyOiBbXX1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIG9iamVjdC5hcnJbMF0gPSB7XG4gICAgaGVsbG86ICd3b3JsZCcsXG4gIH1cbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqMUNhbGxiYWNrKVxuICAvLyBGSVhNRSAtIGNhbGxiYWNrIHNob3VsZCBub3QgaGFwcGVuIHJpZ2h0IGFmdGVyIG9ic2VydmluZ1xuXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBvYmplY3QuYXJyWzBdLmhlbGxvID0gJ3RoZXJlJ1xuICAvLyBGSVhNRSAtIGNhbGxiYWNrIHNob3VsZCBoYXBwZW4gb25seSBvbmNlXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDN9KVxufSlcblxudGVzdCgnaXQgc2hvdWxkIGNhbGxiYWNrIGZvciBjaGFuZ2VzIGluIG9iamVjdHMgYWRkZWQgdG8gYXJyYXlzIGJlZm9yZSBvYnNlcnZlciBpcyBhdHRhY2hlZCcsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2FycjogW119XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBvYmplY3QuYXJyWzBdID0ge1xuICAgIGhlbGxvOiAnd29ybGQnLFxuICB9XG4gIG9iamVjdC5hcnJbMV0gPSB7XG4gICAgeW86ICdkdWRlJyxcbiAgfVxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmoxQ2FsbGJhY2spXG5cbiAgb2JqZWN0LmFyclsxXS55byA9ICdtYW4nXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpKVxufSlcblxudGVzdCgnaXQgc2hvdWxkIG9ic2VydmUgcHJvdmlkZWQgYXJyYXlzIHRoYXQgb3ZlcndyaXRlIGludGVybmFsIGFycmF5cycsICgpID0+IHtcbiAgY29uc3QgYXJyID0gW11cbiAgY29uc3Qgb2JqMSA9IHthcnI6IFtdfVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgb2JqMS5hcnIgPSBhcnJcbiAgcHVyZU9ic2VydmVyKG9iajEsIG9iajFDYWxsYmFjaylcblxuICBhcnIucHVzaCgnYm9vJylcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCkpXG59KVxuXG50ZXN0KCdvdmVyd3JpdGUgYXJyYXkgd2l0aCBzb21ldGhpbmcgZWxzZScsICgpID0+IHtcbiAgY29uc3Qgb2JqMSA9IHtpbm5lck9iajoge30sIGZpbGVzOiBbXX1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBvYmoxLmZpbGVzID0gWydzZGcnXVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuXG50ZXN0KCdjaGFuZ2luZyB0aGUgdmFsdWUgb2YgYW4gaW5uZXIgb2JqZWN0JywgKCkgPT4ge1xuICBjb25zdCBvYmoxID0ge2lubmVyT2JqOiB7fX1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAwfSlcblxuICAvLyBAdHMtaWdub3JlXG4gIG9iajEuaW5uZXJPYmoudGVzdCA9ICdzJ1xuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMX0pXG59KVxuXG50ZXN0KCdjaGFuZ2luZyB0aGUgYXNzaWdubWVudCBmcm9tIGFycmF5IHRvIGEgZGlmZmVyZW50IGFycmF5JywgKCkgPT4ge1xuICBjb25zdCBvYmoxID0ge2ZpbGVzOiBbXX1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBvYmoxLmZpbGVzID0gWydzZGcnXVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuXG50ZXN0KCd1bmRlZmluZWQgYXJyYXknLCAoKSA9PiB7XG4gIGNvbnN0IG9iajEgPSB7ZmlsZXM6IHVuZGVmaW5lZH1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICBvYmoxLmZpbGVzID0gWydzZGcnXVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMX0pXG59KVxuXG50ZXN0KCdpdCBzaG91bGQgb2JzZXJ2ZSBwcm92aWRlZCBvYmplY3RzIHRoYXQgb3ZlcndyaXRlIGludGVybmFsIG9iamVjdHMnLCAoKSA9PiB7XG4gIGNvbnN0IGlubmVyT2JqID0ge2ZvbzogJ3NvbWV0aGluZyd9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1wYXR0ZXJuXG4gIGNvbnN0IG9iajEgPSB7aW5uZXJPYmo6IHt9ID0ge319XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBvYmoxLmlubmVyT2JqID0gaW5uZXJPYmpcbiAgcHVyZU9ic2VydmVyKG9iajEsIG9iajFDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuXG4gIGlubmVyT2JqLmZvbyA9ICdiYXInXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpKVxufSlcblxudGVzdCgnaXQgc2hvdWxkIG9ic2VydmUgcHJvdmlkZWQgb2JqZWN0cyB0aGF0IGNyZWF0ZSBuZXcgaW50ZXJuYWwgb2JqZWN0cycsICgpID0+IHtcbiAgY29uc3QgaW5uZXJPYmogPSB7Zm9vOiAndGVzdCd9XG4gIGNvbnN0IG9iajEgPSB7fVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgLy8gQHRzLWlnbm9yZVxuICBvYmoxLmlubmVyT2JqID0gaW5uZXJPYmpcbiAgcHVyZU9ic2VydmVyKG9iajEsIG9iajFDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuXG4gIGlubmVyT2JqLmZvbyA9ICdiYXInXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxufSlcblxudGVzdCgnaXQgc2hvdWxkIG9ic2VydmUgcHJvdmlkZWQgZXh0ZXJuYWwgYXJyYXlzJywgKCkgPT4ge1xuICBjb25zdCBhcnIgPSBbXVxuICBjb25zdCBvYmoxID0ge2Fycn1cblxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iajEsIG9iajFDYWxsYmFjaylcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgb2JqMS5hcnIucHVzaCgnYm9vJylcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuXG50ZXN0KCdpdCBzaG91bGQgb2JzZXJ2ZSBwcm92aWRlZCBpbnRlcm5hbCBhcnJheXMnLCAoKSA9PiB7XG4gIGNvbnN0IG9iajEgPSB7XG4gICAgYXJyOiBbXSxcbiAgfVxuXG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqMSwgb2JqMUNhbGxiYWNrKVxuXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBvYmoxLmFyci5wdXNoKCdib28nKVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuXG50ZXN0KCdtdWx0aS1sZXZlbCBkZXB0aCBmaWVsZHMgYXJlIHNldCB0byBhbiBvYmplY3Qgd2hvc2UgdmFsdWUgY2hhbmdlcycsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2ZpZWxkOiB7bmVzdGVkOiB7fX19XG5cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqZWN0Q2FsbGJhY2spXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMH0pXG5cbiAgb2JqZWN0LmZpZWxkLm5lc3RlZCA9IHtcbiAgICBkZWVwOiB7XG4gICAgICB2ZXJ5OiAnZGVlcGVyJyxcbiAgICB9LFxuICB9XG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuXG50ZXN0KCdtdWx0aS1sZXZlbCBkZXB0aCBmaWVsZHMgYXJlIHNldCB0byBhbiBvYmplY3Qgd2hvc2UgdmFsdWUgY2hhbmdlcycsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2ZpZWxkOiB7fX1cblxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmplY3RDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIC8vXG4gIG9iamVjdC5maWVsZCA9IHtcbiAgICBuZXN0ZWQ6IHt9LFxuICB9XG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxufSlcblxudGVzdCgnbXVsdGktbGV2ZWwgZGVwdGggZmllbGRzIGFyZSBzZXQgdG8gYW4gb2JqZWN0IHdob3NlIHZhbHVlIGNoYW5nZXMnLCAoKSA9PiB7XG4gIGNvbnN0IG9iamVjdCA9IHtmaWVsZDoge319XG5cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqZWN0Q2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICAvL1xuICBvYmplY3QuZmllbGQgPSB7XG4gICAgbmVzdGVkOiB7fSxcbiAgfVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICAvLyBAdHMtaWdub3JlXG4gIG9iamVjdC5maWVsZC5uZXN0ZWQgPSB7XG4gICAgZGVlcDoge1xuICAgICAgdmVyeTogJ2RlZXBlcicsXG4gICAgfSxcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgZXhwZWN0KG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcC52ZXJ5KS50b0VxdWFsKCdkZWVwZXInKVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAzfSlcbn0pXG5cbnRlc3QoJ211bHRpLWxldmVsIGRlcHRoIGZpZWxkcyBhcmUgc2V0IHRvIGFuIG9iamVjdCB3aG9zZSB2YWx1ZSBjaGFuZ2VzJywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7ZmllbGQ6IG51bGx9XG5cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqZWN0Q2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICAvL1xuICBvYmplY3QuZmllbGQgPSB7XG4gICAgbmVzdGVkOiB7fSxcbiAgfVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBvYmplY3QuZmllbGQubmVzdGVkLmRlZXAgPSB7dmVyeTogJ2RlZXBlcid9XG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMn0pXG5cbiAgb2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwLnZlcnkgPSAnY2hhbmdlZCBzdHJpbmcnXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogM30pXG59KVxuXG50ZXN0KCdtdWx0aS1sZXZlbCBkZXB0aCBmaWVsZHMgYXJlIHNldCB0byBhbiBvYmplY3Qgd2hvc2UgdmFsdWUgY2hhbmdlcyAtIG5vIHByb3h5JywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7ZmllbGQ6IHtuZXN0ZWQ6IHtkZWVwOiAnb2xkJ319fVxuXG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iamVjdENhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAwfSlcbiAgLy9cbiAgb2JqZWN0LmZpZWxkID0ge1xuICAgIG5lc3RlZDoge1xuICAgICAgZGVlcDogJ3ZhbHVlJyxcbiAgICB9LFxuICB9XG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgZXhwZWN0KG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCkudG9FcXVhbCgndmFsdWUnKVxuICAvLyBvYmplY3QuZmllbGQubmVzdGVkID0ge1xuICAvLyAgIGRlZXA6IHtcbiAgLy8gICAgIHZlcnk6ICdkZWVwZXInLFxuICAvLyAgIH0sXG4gIC8vIH1cbiAgLy8gdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMn0pXG4gIC8vXG4gIC8vIGV4cGVjdChvYmplY3QuZmllbGQubmVzdGVkLmRlZXAudmVyeSkudG9FcXVhbCgnZGVlcGVyJylcbn0pXG5cbnRlc3QoJ211bHRpLWxldmVsIGRlcHRoIGZpZWxkcyBhcmUgc2V0IHRvIGFuIG9iamVjdCB3aG9zZSB2YWx1ZSBjaGFuZ2VzJywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7ZmllbGQ6IG51bGx9XG5cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqZWN0Q2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICAvL1xuICBvYmplY3QuZmllbGQgPSB7XG4gICAgbmVzdGVkOiB7XG4gICAgICBkZWVwOiAndmFsdWUnLFxuICAgIH0sXG4gIH1cblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBleHBlY3Qob2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwKS50b0VxdWFsKCd2YWx1ZScpXG4gIG9iamVjdC5maWVsZCA9IHtcbiAgICBuZXN0ZWQ6IHtcbiAgICAgIGRlZXA6ICduZXdWYWx1ZScsXG4gICAgfSxcbiAgfVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAyfSlcblxuICBleHBlY3Qob2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwKS50b0VxdWFsKCduZXdWYWx1ZScpXG59KVxuXG50ZXN0KCdtdWx0aS1sZXZlbCBkZXB0aCBmaWVsZHMgYXJlIHNldCB0byBhbiBvYmplY3Qgd2hvc2UgdmFsdWUgY2hhbmdlcycsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2ZpZWxkOiBudWxsfVxuXG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iamVjdENhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAwfSlcbiAgLy9cbiAgb2JqZWN0LmZpZWxkID0ge1xuICAgIG5lc3RlZDoge1xuICAgICAgZGVlcDogJ3ZhbHVlJyxcbiAgICB9LFxuICB9XG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG5cbiAgZXhwZWN0KG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCkudG9FcXVhbCgndmFsdWUnKVxuXG4gIG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCA9ICduZXdWYWx1ZSdcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogM30pXG5cbiAgZXhwZWN0KG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCkudG9FcXVhbCgnbmV3VmFsdWUnKVxufSlcblxudGVzdCgnbXVsdGktbGV2ZWwgZGVwdGggZmllbGRzIGFyZSBzZXQgdG8gYW4gb2JqZWN0IHdob3NlIHZhbHVlIGNoYW5nZXMgLSBubyBwcm94eScsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2ZpZWxkOiB7bmVzdGVkOiB7ZGVlcDogJyd9fX1cblxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmplY3RDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIC8vXG4gIC8vIG9iamVjdC5maWVsZCA9IHtcbiAgLy8gICBuZXN0ZWQ6IHtcbiAgLy8gICAgIGRlZXA6ICd2YWx1ZScsXG4gIC8vICAgfSxcbiAgLy8gfVxuXG4gIG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCA9ICd2YWx1ZSdcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMn0pXG5cbiAgZXhwZWN0KG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCkudG9FcXVhbCgndmFsdWUnKVxufSlcblxudGVzdCgnU2V0dGluZyBudWxsIHRvIGFuIGFscmVhZHkgbnVsbCB2YWx1ZSBzaG91bGQgbm90IHRyaWdnZXIgYSBjYWxsYmFjaycsICgpID0+IHtcbiAgY29uc3Qgb2JqID0ge1xuICAgIG51bGxWYWx1ZTogbnVsbCxcbiAgfVxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqLCBvYmplY3RDYWxsYmFjaylcblxuICBvYmoubnVsbFZhbHVlID0gbnVsbFxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxufSlcblxudGVzdCgnU2V0dGluZyBudWxsIHRvIGFuIGFscmVhZHkgbnVsbCB2YWx1ZSwgdGhlbiBzZXR0aW5nIGEgcmVhbCB2YWx1ZSBzaG91bGQgdHJpZ2dlciBhIGNhbGxiYWNrJywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7XG4gICAgbnVsbFZhbHVlOiBudWxsLFxuICB9XG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmosIG9iamVjdENhbGxiYWNrKVxuXG4gIG9iai5udWxsVmFsdWUgPSBudWxsXG5cbiAgb2JqLm51bGxWYWx1ZSA9ICdzb21ldGhpbmcnXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG59KVxuXG50ZXN0KCdTZXR0aW5nIG51bGwgdG8gYW4gYXNzaWduZWQgcHJvcGVydHkgc2hvdWxkIHRyaWdnZXIgYSBjYWxsYmFjaycsICgpID0+IHtcbiAgY29uc3Qgb2JqID0ge1xuICAgIG51bGxWYWx1ZTogJ2FueXRoaW5nJyxcbiAgfVxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqLCBvYmplY3RDYWxsYmFjaylcblxuICBvYmoubnVsbFZhbHVlID0gbnVsbFxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxufSlcblxudGVzdCgnU2V0dGluZyBudWxsIHRvIGFuIGFzc2lnbmVkIHByb3BlcnR5LCB0aGVuIHNldHRpbmcgYSByZWFsIHZhbHVlIHNob3VsZCB0cmlnZ2VyIGEgY2FsbGJhY2snLCAoKSA9PiB7XG4gIGNvbnN0IG9iaiA9IHtcbiAgICBudWxsVmFsdWU6ICdhbnl0aGluZycsXG4gIH1cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iaiwgb2JqZWN0Q2FsbGJhY2spXG5cbiAgb2JqLm51bGxWYWx1ZSA9IG51bGxcblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBvYmoubnVsbFZhbHVlID0gJ3NvbWV0aGluZydcblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAyfSlcbn0pXG5cbnRlc3QoJ1NldHRpbmcgbnVsbCB0byBhbiBleGlzdGluZyBwcm9wZXJ0eSBhbmQgb2JzZXJ2ZSwgdGhlbiBzZXR0aW5nIGEgcmVhbCB2YWx1ZSBzaG91bGQgdHJpZ2dlciBhIGNhbGxiYWNrJywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7XG4gICAgcHJvcDoge30sXG4gIH1cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iaiwgb2JqZWN0Q2FsbGJhY2spXG5cbiAgb2JqLnByb3AgPSBudWxsXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG59KVxuXG50ZXN0KCdvYmogd2l0aCBhIHByb3AgdGhhdCBpcyBhbiBvYmplY3QsIHNldCBwcm9wIHRvIG51bGwsIHRoZW4gc2V0IHByb3AgdG8gYSBvYmplY3QuIHNob3VsZCB0cmlnZ2VyIDIgY2FsbGJhY2tzJywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7XG4gICAgcHJvcDoge30sXG4gIH1cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iaiwgb2JqZWN0Q2FsbGJhY2spXG5cbiAgb2JqLnByb3AgPSBudWxsXG4gIG9iai5wcm9wID0ge31cblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAyfSlcbn0pXG5cbnRlc3QoJ29iaiB3aXRoIGEgcHJvcCB0aGF0IGlzIGFuIG9iamVjdCwgc2V0IHByb3AgdG8gbnVsbCwgdGhlbiBzZXQgcHJvcCB0byBhbiBhcnJheS4gc2hvdWxkIHRyaWdnZXIgMiBjYWxsYmFja3MnLCAoKSA9PiB7XG4gIGNvbnN0IG9iaiA9IHtcbiAgICBwcm9wOiB7fSxcbiAgfVxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqLCBvYmplY3RDYWxsYmFjaylcblxuICBvYmoucHJvcCA9IG51bGxcbiAgb2JqLnByb3AgPSBbXVxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxufSlcblxudGVzdCgnb2JqIHdpdGggYSBwcm9wIHRoYXQgaXMgYW4gb2JqZWN0LCBzZXQgcHJvcCB0byBudWxsLCB0aGVuIHNldCBwcm9wIHRvIGEgc3RyaW5nLiBzaG91bGQgdHJpZ2dlciAyIGNhbGxiYWNrcycsICgpID0+IHtcbiAgY29uc3Qgb2JqID0ge1xuICAgIHByb3A6IHt9LFxuICB9XG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmosIG9iamVjdENhbGxiYWNrKVxuXG4gIG9iai5wcm9wID0gbnVsbFxuICBvYmoucHJvcCA9ICdhc2QnXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuIl19 | ||
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); | ||
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); | ||
obj.prop = null; | ||
expect(obj.prop).toBeNull(); | ||
td.verify(objectCallback(), { | ||
times: 1 | ||
}); | ||
}); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wdXJlT2JzZXJ2ZXIuc3BlYy50cyJdLCJuYW1lcyI6WyJ0ZXN0Iiwib2JqZWN0Iiwib2JqMUNhbGxiYWNrIiwidGQiLCJmdW5jIiwidmVyaWZ5IiwidGltZXMiLCJvYmoxIiwiZm9vIiwibXV0YXRlTWUiLCJvYmoyIiwiYmFyIiwib2JqMkNhbGxiYWNrIiwiYXJyIiwiaGVsbG8iLCJ5byIsInB1c2giLCJpbm5lck9iaiIsImZpbGVzIiwidW5kZWZpbmVkIiwiZmllbGQiLCJuZXN0ZWQiLCJvYmplY3RDYWxsYmFjayIsImRlZXAiLCJ2ZXJ5IiwiZXhwZWN0IiwidG9FcXVhbCIsIm9iaiIsIm51bGxWYWx1ZSIsInByb3AiLCJ0b0JlTnVsbCIsInNraXAiXSwibWFwcGluZ3MiOiI7O0FBQ0E7O0FBQ0E7Ozs7OztBQUZBO0FBSUFBLElBQUksQ0FBQyx1QkFBRCxFQUEwQixNQUFNO0FBQ2xDLFFBQU1DLE1BQU0sR0FBRztBQUFDRCxJQUFBQSxJQUFJLEVBQUU7QUFBUCxHQUFmO0FBQ0EsUUFBTUUsWUFBWSxHQUFHQyxFQUFFLENBQUNDLElBQUgsRUFBckI7QUFDQSxpQ0FBYUgsTUFBYixFQUFxQkMsWUFBckI7QUFFQUQsRUFBQUEsTUFBTSxDQUFDRCxJQUFQLEdBQWMsS0FBZDtBQUNBRyxFQUFBQSxFQUFFLENBQUNFLE1BQUgsQ0FBVUgsWUFBWSxFQUF0QjtBQUNBRCxFQUFBQSxNQUFNLENBQUNELElBQVAsR0FBYyxPQUFkO0FBQ0FHLEVBQUFBLEVBQUUsQ0FBQ0UsTUFBSCxDQUFVSCxZQUFZLEVBQXRCLEVBQTBCO0FBQUNJLElBQUFBLEtBQUssRUFBRTtBQUFSLEdBQTFCO0FBQ0QsQ0FURyxDQUFKO0FBV0FOLElBQUksQ0FBQyxrREFBRCxFQUFxRCxNQUFNO0FBQzdELFFBQU1PLElBQUksR0FBRztBQUNYQyxJQUFBQSxHQUFHLEVBQUUsTUFETTtBQUVYQyxJQUFBQSxRQUFRLEVBQUUsTUFBTTtBQUNkRixNQUFBQSxJQUFJLENBQUNDLEdBQUwsR0FB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QUFMLENBQVUsd0ZBQVYsRUFBb0csTUFBTTtBQUN4RyxRQUFNSixHQUFHLEdBQUc7QUFDVkUsSUFBQUEsSUFBSSxFQUFFO0FBREksR0FBWjtBQUlBLFFBQU1QLGNBQWMsR0FBR25CLEVBQUUsQ0FBQ0MsSUFBSCxFQUF2QjtBQUNBLGlDQUFhdUIsR0FBYixFQUFrQkwsY0FBbEI7QUFFQUssRUFBQUEsR0FBRyxDQUFDRSxJQUFKLEdBQVcsSUFBWDtBQUVBSixFQUFBQSxNQUFNLENBQUNFLEdBQUcsQ0FBQ0UsSUFBTCxDQUFOLENBQWlCQyxRQUFqQjtBQUNBM0IsRUFBQUEsRUFBRSxDQUFDRSxNQUFILENBQVVpQixjQUFjLEVBQXhCLEVBQTRCO0FBQUNoQixJQUFBQSxLQUFLLEVBQUU7QUFBUixHQUE1QjtBQUNELENBWkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWlnbm9yZSAqL1xuaW1wb3J0ICogYXMgdGQgZnJvbSAndGVzdGRvdWJsZSdcbmltcG9ydCB7cHVyZU9ic2VydmVyfSBmcm9tICcuL3VzZU9ic2VydmVyJ1xuXG50ZXN0KCdpdCByZWFjdHMgdG8gYSBjaGFuZ2UnLCAoKSA9PiB7XG4gIGNvbnN0IG9iamVjdCA9IHt0ZXN0OiAnYWJjJ31cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpIGFzICgpID0+IHZvaWRcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqMUNhbGxiYWNrKVxuXG4gIG9iamVjdC50ZXN0ID0gJ2RlZidcbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpKVxuICBvYmplY3QudGVzdCA9ICd0aGVyZSdcbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxufSlcblxudGVzdCgndGhhdCBpdCBjYW4gd29yayB3aXRoIG11bHRpcGxlIG9iamVjdHMsIG5vIHJlYWN0JywgKCkgPT4ge1xuICBjb25zdCBvYmoxID0ge1xuICAgIGZvbzogJ2hlcmUnLFxuICAgIG11dGF0ZU1lOiAoKSA9PiB7XG4gICAgICBvYmoxLmZvbyA9ICd0aGVyZSdcbiAgICB9LFxuICB9XG4gIGNvbnN0IG9iajIgPSB7XG4gICAgYmFyOiAncGV0ZScsXG4gICAgbXV0YXRlTWU6ICgpID0+IHtcbiAgICAgIG9iajIuYmFyID0gJ3BhdWwnXG4gICAgfSxcbiAgfVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iajEsIG9iajFDYWxsYmFjaylcbiAgY29uc3Qgb2JqMkNhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmoyLCBvYmoyQ2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAwfSlcbiAgdGQudmVyaWZ5KG9iajJDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuXG4gIG9iajEubXV0YXRlTWUoKVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCkpXG4gIHRkLnZlcmlmeShvYmoyQ2FsbGJhY2soKSwge3RpbWVzOiAwfSlcbiAgb2JqMi5tdXRhdGVNZSgpXG4gIHRkLnZlcmlmeShvYmoyQ2FsbGJhY2soKSlcbn0pXG5cbnRlc3QoJ2l0IHNob3VsZCBjYWxsYmFjayBmb3IgY2hhbmdlcyBpbiBvYmplY3RzIGFkZGVkIHRvIGFycmF5cycsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2FycjogW119XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmoxQ2FsbGJhY2spXG4gIC8vIEZJWE1FIC0gZ2V0IHJpZCBvZiB0aGUgaW5pdGlhbCBjYWxsYmFja1xuXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBvYmplY3QuYXJyWzBdID0ge1xuICAgIGhlbGxvOiAnd29ybGQnLFxuICB9XG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAyfSlcblxuICBvYmplY3QuYXJyWzBdLmhlbGxvID0gJ3RoZXJlJ1xuXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAzfSlcbn0pXG5cbnRlc3QoJ2l0IHNob3VsZCBjYWxsYmFjayBmb3IgY2hhbmdlcyBpbiBvYmplY3RzIGFkZGVkIHRvIGFycmF5cyBiZWZvcmUgb2JzZXJ2ZXIgaXMgYXR0YWNoZWQnLCAoKSA9PiB7XG4gIGNvbnN0IG9iamVjdCA9IHthcnI6IFtdfVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgb2JqZWN0LmFyclswXSA9IHtcbiAgICBoZWxsbzogJ3dvcmxkJyxcbiAgfVxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmoxQ2FsbGJhY2spXG4gIC8vIEZJWE1FIC0gY2FsbGJhY2sgc2hvdWxkIG5vdCBoYXBwZW4gcmlnaHQgYWZ0ZXIgb2JzZXJ2aW5nXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxuXG4gIG9iamVjdC5hcnJbMF0uaGVsbG8gPSAndGhlcmUnXG4gIC8vIEZJWE1FIC0gY2FsbGJhY2sgc2hvdWxkIGhhcHBlbiBvbmx5IG9uY2VcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogM30pXG59KVxuXG50ZXN0KCdpdCBzaG91bGQgY2FsbGJhY2sgZm9yIGNoYW5nZXMgaW4gb2JqZWN0cyBhZGRlZCB0byBhcnJheXMgYmVmb3JlIG9ic2VydmVyIGlzIGF0dGFjaGVkJywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7YXJyOiBbXX1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIG9iamVjdC5hcnJbMF0gPSB7XG4gICAgaGVsbG86ICd3b3JsZCcsXG4gIH1cbiAgb2JqZWN0LmFyclsxXSA9IHtcbiAgICB5bzogJ2R1ZGUnLFxuICB9XG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iajFDYWxsYmFjaylcblxuICBvYmplY3QuYXJyWzFdLnlvID0gJ21hbidcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCkpXG59KVxuXG50ZXN0KCdpdCBzaG91bGQgb2JzZXJ2ZSBwcm92aWRlZCBhcnJheXMgdGhhdCBvdmVyd3JpdGUgaW50ZXJuYWwgYXJyYXlzJywgKCkgPT4ge1xuICBjb25zdCBhcnIgPSBbXVxuICBjb25zdCBvYmoxID0ge2FycjogW119XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBvYmoxLmFyciA9IGFyclxuICBwdXJlT2JzZXJ2ZXIob2JqMSwgb2JqMUNhbGxiYWNrKVxuXG4gIGFyci5wdXNoKCdib28nKVxuXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSlcbn0pXG5cbnRlc3QoJ292ZXJ3cml0ZSBhcnJheSB3aXRoIHNvbWV0aGluZyBlbHNlJywgKCkgPT4ge1xuICBjb25zdCBvYmoxID0ge2lubmVyT2JqOiB7fSwgZmlsZXM6IFtdfVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iajEsIG9iajFDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxuXG4gIG9iajEuZmlsZXMgPSBbJ3NkZyddXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAyfSlcbn0pXG5cbnRlc3QoJ2NoYW5naW5nIHRoZSB2YWx1ZSBvZiBhbiBpbm5lciBvYmplY3QnLCAoKSA9PiB7XG4gIGNvbnN0IG9iajEgPSB7aW5uZXJPYmo6IHt9fVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iajEsIG9iajFDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgb2JqMS5pbm5lck9iai50ZXN0ID0gJ3MnXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAxfSlcbn0pXG5cbnRlc3QoJ2NoYW5naW5nIHRoZSBhc3NpZ25tZW50IGZyb20gYXJyYXkgdG8gYSBkaWZmZXJlbnQgYXJyYXknLCAoKSA9PiB7XG4gIGNvbnN0IG9iajEgPSB7ZmlsZXM6IFtdfVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iajEsIG9iajFDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxuXG4gIG9iajEuZmlsZXMgPSBbJ3NkZyddXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAyfSlcbn0pXG5cbnRlc3QoJ3VuZGVmaW5lZCBhcnJheScsICgpID0+IHtcbiAgY29uc3Qgb2JqMSA9IHtmaWxlczogdW5kZWZpbmVkfVxuICBjb25zdCBvYmoxQ2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iajEsIG9iajFDYWxsYmFjaylcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIG9iajEuZmlsZXMgPSBbJ3NkZyddXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAxfSlcbn0pXG5cbnRlc3QoJ2l0IHNob3VsZCBvYnNlcnZlIHByb3ZpZGVkIG9iamVjdHMgdGhhdCBvdmVyd3JpdGUgaW50ZXJuYWwgb2JqZWN0cycsICgpID0+IHtcbiAgY29uc3QgaW5uZXJPYmogPSB7Zm9vOiAnc29tZXRoaW5nJ31cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LXBhdHRlcm5cbiAgY29uc3Qgb2JqMSA9IHtpbm5lck9iajoge30gPSB7fX1cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIG9iajEuaW5uZXJPYmogPSBpbm5lck9ialxuICBwdXJlT2JzZXJ2ZXIob2JqMSwgb2JqMUNhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMH0pXG5cbiAgaW5uZXJPYmouZm9vID0gJ2JhcidcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCkpXG59KVxuXG50ZXN0KCdpdCBzaG91bGQgb2JzZXJ2ZSBwcm92aWRlZCBvYmplY3RzIHRoYXQgY3JlYXRlIG5ldyBpbnRlcm5hbCBvYmplY3RzJywgKCkgPT4ge1xuICBjb25zdCBpbm5lck9iaiA9IHtmb286ICd0ZXN0J31cbiAgY29uc3Qgb2JqMSA9IHt9XG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICAvLyBAdHMtaWdub3JlXG4gIG9iajEuaW5uZXJPYmogPSBpbm5lck9ialxuICBwdXJlT2JzZXJ2ZXIob2JqMSwgb2JqMUNhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMH0pXG5cbiAgaW5uZXJPYmouZm9vID0gJ2JhcidcblxuICB0ZC52ZXJpZnkob2JqMUNhbGxiYWNrKCksIHt0aW1lczogMX0pXG59KVxuXG50ZXN0KCdpdCBzaG91bGQgb2JzZXJ2ZSBwcm92aWRlZCBleHRlcm5hbCBhcnJheXMnLCAoKSA9PiB7XG4gIGNvbnN0IGFyciA9IFtdXG4gIGNvbnN0IG9iajEgPSB7YXJyfVxuXG4gIGNvbnN0IG9iajFDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqMSwgb2JqMUNhbGxiYWNrKVxuXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBvYmoxLmFyci5wdXNoKCdib28nKVxuXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAyfSlcbn0pXG5cbnRlc3QoJ2l0IHNob3VsZCBvYnNlcnZlIHByb3ZpZGVkIGludGVybmFsIGFycmF5cycsICgpID0+IHtcbiAgY29uc3Qgb2JqMSA9IHtcbiAgICBhcnI6IFtdLFxuICB9XG5cbiAgY29uc3Qgb2JqMUNhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmoxLCBvYmoxQ2FsbGJhY2spXG5cbiAgdGQudmVyaWZ5KG9iajFDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxuXG4gIG9iajEuYXJyLnB1c2goJ2JvbycpXG4gIHRkLnZlcmlmeShvYmoxQ2FsbGJhY2soKSwge3RpbWVzOiAyfSlcbn0pXG5cbnRlc3QoJ211bHRpLWxldmVsIGRlcHRoIGZpZWxkcyBhcmUgc2V0IHRvIGFuIG9iamVjdCB3aG9zZSB2YWx1ZSBjaGFuZ2VzJywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7ZmllbGQ6IHtuZXN0ZWQ6IHt9fX1cblxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmplY3RDYWxsYmFjaylcblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAwfSlcblxuICBvYmplY3QuZmllbGQubmVzdGVkID0ge1xuICAgIGRlZXA6IHtcbiAgICAgIHZlcnk6ICdkZWVwZXInLFxuICAgIH0sXG4gIH1cblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAyfSlcbn0pXG5cbnRlc3QoJ211bHRpLWxldmVsIGRlcHRoIGZpZWxkcyBhcmUgc2V0IHRvIGFuIG9iamVjdCB3aG9zZSB2YWx1ZSBjaGFuZ2VzJywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7ZmllbGQ6IHt9fVxuXG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iamVjdENhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAwfSlcbiAgLy9cbiAgb2JqZWN0LmZpZWxkID0ge1xuICAgIG5lc3RlZDoge30sXG4gIH1cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG59KVxuXG50ZXN0KCdtdWx0aS1sZXZlbCBkZXB0aCBmaWVsZHMgYXJlIHNldCB0byBhbiBvYmplY3Qgd2hvc2UgdmFsdWUgY2hhbmdlcycsICgpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge2ZpZWxkOiB7fX1cblxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmplY3RDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIC8vXG4gIG9iamVjdC5maWVsZCA9IHtcbiAgICBuZXN0ZWQ6IHt9LFxuICB9XG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgb2JqZWN0LmZpZWxkLm5lc3RlZCA9IHtcbiAgICBkZWVwOiB7XG4gICAgICB2ZXJ5OiAnZGVlcGVyJyxcbiAgICB9LFxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBleHBlY3Qob2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwLnZlcnkpLnRvRXF1YWwoJ2RlZXBlcicpXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDN9KVxufSlcblxudGVzdCgnbXVsdGktbGV2ZWwgZGVwdGggZmllbGRzIGFyZSBzZXQgdG8gYW4gb2JqZWN0IHdob3NlIHZhbHVlIGNoYW5nZXMnLCAoKSA9PiB7XG4gIGNvbnN0IG9iamVjdCA9IHtmaWVsZDogbnVsbH1cblxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmplY3RDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIC8vXG4gIG9iamVjdC5maWVsZCA9IHtcbiAgICBuZXN0ZWQ6IHt9LFxuICB9XG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxuXG4gIG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcCA9IHt2ZXJ5OiAnZGVlcGVyJ31cblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAyfSlcblxuICBvYmplY3QuZmllbGQubmVzdGVkLmRlZXAudmVyeSA9ICdjaGFuZ2VkIHN0cmluZydcblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAzfSlcbn0pXG5cbnRlc3QoJ211bHRpLWxldmVsIGRlcHRoIGZpZWxkcyBhcmUgc2V0IHRvIGFuIG9iamVjdCB3aG9zZSB2YWx1ZSBjaGFuZ2VzIC0gbm8gcHJveHknLCAoKSA9PiB7XG4gIGNvbnN0IG9iamVjdCA9IHtmaWVsZDoge25lc3RlZDoge2RlZXA6ICdvbGQnfX19XG5cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqZWN0Q2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICAvL1xuICBvYmplY3QuZmllbGQgPSB7XG4gICAgbmVzdGVkOiB7XG4gICAgICBkZWVwOiAndmFsdWUnLFxuICAgIH0sXG4gIH1cblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBleHBlY3Qob2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwKS50b0VxdWFsKCd2YWx1ZScpXG4gIC8vIG9iamVjdC5maWVsZC5uZXN0ZWQgPSB7XG4gIC8vICAgZGVlcDoge1xuICAvLyAgICAgdmVyeTogJ2RlZXBlcicsXG4gIC8vICAgfSxcbiAgLy8gfVxuICAvLyB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAyfSlcbiAgLy9cbiAgLy8gZXhwZWN0KG9iamVjdC5maWVsZC5uZXN0ZWQuZGVlcC52ZXJ5KS50b0VxdWFsKCdkZWVwZXInKVxufSlcblxudGVzdCgnbXVsdGktbGV2ZWwgZGVwdGggZmllbGRzIGFyZSBzZXQgdG8gYW4gb2JqZWN0IHdob3NlIHZhbHVlIGNoYW5nZXMnLCAoKSA9PiB7XG4gIGNvbnN0IG9iamVjdCA9IHtmaWVsZDogbnVsbH1cblxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqZWN0LCBvYmplY3RDYWxsYmFjaylcbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMH0pXG4gIC8vXG4gIG9iamVjdC5maWVsZCA9IHtcbiAgICBuZXN0ZWQ6IHtcbiAgICAgIGRlZXA6ICd2YWx1ZScsXG4gICAgfSxcbiAgfVxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxuXG4gIGV4cGVjdChvYmplY3QuZmllbGQubmVzdGVkLmRlZXApLnRvRXF1YWwoJ3ZhbHVlJylcbiAgb2JqZWN0LmZpZWxkID0ge1xuICAgIG5lc3RlZDoge1xuICAgICAgZGVlcDogJ25ld1ZhbHVlJyxcbiAgICB9LFxuICB9XG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxuXG4gIGV4cGVjdChvYmplY3QuZmllbGQubmVzdGVkLmRlZXApLnRvRXF1YWwoJ25ld1ZhbHVlJylcbn0pXG5cbnRlc3QoJ211bHRpLWxldmVsIGRlcHRoIGZpZWxkcyBhcmUgc2V0IHRvIGFuIG9iamVjdCB3aG9zZSB2YWx1ZSBjaGFuZ2VzJywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7ZmllbGQ6IG51bGx9XG5cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iamVjdCwgb2JqZWN0Q2FsbGJhY2spXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDB9KVxuICAvL1xuICBvYmplY3QuZmllbGQgPSB7XG4gICAgbmVzdGVkOiB7XG4gICAgICBkZWVwOiAndmFsdWUnLFxuICAgIH0sXG4gIH1cblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcblxuICBleHBlY3Qob2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwKS50b0VxdWFsKCd2YWx1ZScpXG5cbiAgb2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwID0gJ25ld1ZhbHVlJ1xuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAzfSlcblxuICBleHBlY3Qob2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwKS50b0VxdWFsKCduZXdWYWx1ZScpXG59KVxuXG50ZXN0KCdtdWx0aS1sZXZlbCBkZXB0aCBmaWVsZHMgYXJlIHNldCB0byBhbiBvYmplY3Qgd2hvc2UgdmFsdWUgY2hhbmdlcyAtIG5vIHByb3h5JywgKCkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7ZmllbGQ6IHtuZXN0ZWQ6IHtkZWVwOiAnJ319fVxuXG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmplY3QsIG9iamVjdENhbGxiYWNrKVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAwfSlcbiAgLy9cbiAgLy8gb2JqZWN0LmZpZWxkID0ge1xuICAvLyAgIG5lc3RlZDoge1xuICAvLyAgICAgZGVlcDogJ3ZhbHVlJyxcbiAgLy8gICB9LFxuICAvLyB9XG5cbiAgb2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwID0gJ3ZhbHVlJ1xuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAyfSlcblxuICBleHBlY3Qob2JqZWN0LmZpZWxkLm5lc3RlZC5kZWVwKS50b0VxdWFsKCd2YWx1ZScpXG59KVxuXG50ZXN0KCdTZXR0aW5nIG51bGwgdG8gYW4gYWxyZWFkeSBudWxsIHZhbHVlIHNob3VsZCBub3QgdHJpZ2dlciBhIGNhbGxiYWNrJywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7XG4gICAgbnVsbFZhbHVlOiBudWxsLFxuICB9XG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmosIG9iamVjdENhbGxiYWNrKVxuXG4gIG9iai5udWxsVmFsdWUgPSBudWxsXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMH0pXG59KVxuXG50ZXN0KCdTZXR0aW5nIG51bGwgdG8gYW4gYWxyZWFkeSBudWxsIHZhbHVlLCB0aGVuIHNldHRpbmcgYSByZWFsIHZhbHVlIHNob3VsZCB0cmlnZ2VyIGEgY2FsbGJhY2snLCAoKSA9PiB7XG4gIGNvbnN0IG9iaiA9IHtcbiAgICBudWxsVmFsdWU6IG51bGwsXG4gIH1cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iaiwgb2JqZWN0Q2FsbGJhY2spXG5cbiAgb2JqLm51bGxWYWx1ZSA9IG51bGxcblxuICBvYmoubnVsbFZhbHVlID0gJ3NvbWV0aGluZydcblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcbn0pXG5cbnRlc3QoJ1NldHRpbmcgbnVsbCB0byBhbiBhc3NpZ25lZCBwcm9wZXJ0eSBzaG91bGQgdHJpZ2dlciBhIGNhbGxiYWNrJywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7XG4gICAgbnVsbFZhbHVlOiAnYW55dGhpbmcnLFxuICB9XG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmosIG9iamVjdENhbGxiYWNrKVxuXG4gIG9iai5udWxsVmFsdWUgPSBudWxsXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG59KVxuXG50ZXN0KCdTZXR0aW5nIG51bGwgdG8gYW4gYXNzaWduZWQgcHJvcGVydHksIHRoZW4gc2V0dGluZyBhIHJlYWwgdmFsdWUgc2hvdWxkIHRyaWdnZXIgYSBjYWxsYmFjaycsICgpID0+IHtcbiAgY29uc3Qgb2JqID0ge1xuICAgIG51bGxWYWx1ZTogJ2FueXRoaW5nJyxcbiAgfVxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqLCBvYmplY3RDYWxsYmFjaylcblxuICBvYmoubnVsbFZhbHVlID0gbnVsbFxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDF9KVxuXG4gIG9iai5udWxsVmFsdWUgPSAnc29tZXRoaW5nJ1xuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxufSlcblxudGVzdCgnU2V0dGluZyBudWxsIHRvIGFuIGV4aXN0aW5nIHByb3BlcnR5IGFuZCBvYnNlcnZlLCB0aGVuIHNldHRpbmcgYSByZWFsIHZhbHVlIHNob3VsZCB0cmlnZ2VyIGEgY2FsbGJhY2snLCAoKSA9PiB7XG4gIGNvbnN0IG9iaiA9IHtcbiAgICBwcm9wOiB7fSxcbiAgfVxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqLCBvYmplY3RDYWxsYmFjaylcblxuICBvYmoucHJvcCA9IG51bGxcblxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcbn0pXG5cbnRlc3QoJ29iaiB3aXRoIGEgcHJvcCB0aGF0IGlzIGFuIG9iamVjdCwgc2V0IHByb3AgdG8gbnVsbCwgdGhlbiBzZXQgcHJvcCB0byBhIG9iamVjdC4gc2hvdWxkIHRyaWdnZXIgMiBjYWxsYmFja3MnLCAoKSA9PiB7XG4gIGNvbnN0IG9iaiA9IHtcbiAgICBwcm9wOiB7fSxcbiAgfVxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqLCBvYmplY3RDYWxsYmFjaylcblxuICBvYmoucHJvcCA9IG51bGxcbiAgb2JqLnByb3AgPSB7fVxuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxufSlcblxudGVzdCgnb2JqIHdpdGggYSBwcm9wIHRoYXQgaXMgYW4gb2JqZWN0LCBzZXQgcHJvcCB0byBudWxsLCB0aGVuIHNldCBwcm9wIHRvIGFuIGFycmF5LiBzaG91bGQgdHJpZ2dlciAyIGNhbGxiYWNrcycsICgpID0+IHtcbiAgY29uc3Qgb2JqID0ge1xuICAgIHByb3A6IHt9LFxuICB9XG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmosIG9iamVjdENhbGxiYWNrKVxuXG4gIG9iai5wcm9wID0gbnVsbFxuICBvYmoucHJvcCA9IFtdXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMn0pXG59KVxuXG50ZXN0KCdhbGxvdyBzZXR0aW5nIGEgcHJvcGVydHkgdG8gYSBwcmltaXRpdmUgYWZ0ZXIgYmVpbmcgc2V0IHRvIG51bGwnLCAoKSA9PiB7XG4gIGNvbnN0IG9iaiA9IHtcbiAgICBwcm9wOiB7fSxcbiAgfVxuICBjb25zdCBvYmplY3RDYWxsYmFjayA9IHRkLmZ1bmMoKVxuICBwdXJlT2JzZXJ2ZXIob2JqLCBvYmplY3RDYWxsYmFjaylcblxuICBvYmoucHJvcCA9IG51bGxcbiAgb2JqLnByb3AgPSAnYXNkJ1xuXG4gIHRkLnZlcmlmeShvYmplY3RDYWxsYmFjaygpLCB7dGltZXM6IDJ9KVxufSlcblxudGVzdCgncHJvcCBzaG91bGQgYmUgbnVsbCBhZnRlciBpdCBpcyBzZXQgdG8gbnVsbCAoeWVzLCByZWFsbHkpIGFuZCBhIGNhbGxiYWNrIHNob3VsZCBoYXBwZW4nLCAoKSA9PiB7XG4gIGNvbnN0IG9iaiA9IHtcbiAgICBwcm9wOiB7fVxuICB9XG5cbiAgY29uc3Qgb2JqZWN0Q2FsbGJhY2sgPSB0ZC5mdW5jKClcbiAgcHVyZU9ic2VydmVyKG9iaiwgb2JqZWN0Q2FsbGJhY2spXG5cbiAgb2JqLnByb3AgPSBudWxsXG5cbiAgdGQudmVyaWZ5KG9iamVjdENhbGxiYWNrKCksIHt0aW1lczogMX0pXG4gIGV4cGVjdChvYmoucHJvcCkudG9CZU51bGwoKVxufSlcblxuLy8gUEVORElORyBCVUdTXG4vLyB0aGVyZSBpcyBhbiBleHRyYSBjYWxsYmFjayBoZXJlXG50ZXN0LnNraXAoJ3Byb3Agc2hvdWxkIGJlIG51bGwgYWZ0ZXIgaXQgaXMgc2V0IHRvIG51bGwgKHllcywgcmVhbGx5KSBhbmQgYSBjYWxsYmFjayBzaG91bGQgaGFwcGVuJywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7XG4gICAgcHJvcDogW11cbiAgfVxuXG4gIGNvbnN0IG9iamVjdENhbGxiYWNrID0gdGQuZnVuYygpXG4gIHB1cmVPYnNlcnZlcihvYmosIG9iamVjdENhbGxiYWNrKVxuXG4gIG9iai5wcm9wID0gbnVsbFxuXG4gIGV4cGVjdChvYmoucHJvcCkudG9CZU51bGwoKVxuICB0ZC52ZXJpZnkob2JqZWN0Q2FsbGJhY2soKSwge3RpbWVzOiAxfSlcbn0pXG4iXX0= |
@@ -85,81 +85,97 @@ "use strict"; | ||
function attachProxyToField(object, fieldName, originalField, callback, id) { | ||
if (fieldName !== '__proxyAttached') { | ||
try { | ||
let newProxy = new Proxy(object[fieldName], { | ||
get(target, property) { | ||
return target[property]; | ||
}, | ||
if (fieldName === '__proxyAttached') return; | ||
set(target, property, value) { | ||
if (property !== '__proto__' && property !== 'length') { | ||
if (typeof value === 'object') { | ||
attachProxyToProperties(value, callback, id); | ||
} // eslint-disable-next-line no-param-reassign | ||
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 | ||
target[property] = value; | ||
callback(); | ||
} | ||
return true; | ||
target[property] = value; | ||
callback(); | ||
} | ||
}); | ||
Object.defineProperty(object, fieldName, { | ||
configurable: true, | ||
enumerable: true, | ||
get: () => { | ||
return newProxy; | ||
}, | ||
set: value => { | ||
if (!value) return callback(); // *** SAM CHANGE 3 | ||
return true; | ||
} | ||
if (typeof value === 'object' && !Array.isArray(value)) { | ||
attachProxyToProperties(value, callback, id); | ||
} | ||
}); | ||
Object.defineProperty(object, fieldName, { | ||
configurable: true, | ||
enumerable: true, | ||
get: () => { | ||
return newProxy; | ||
}, | ||
set: value => { | ||
if (typeof value === 'object' && !Array.isArray(value)) { | ||
attachProxyToProperties(value, callback, id); | ||
} // *** SAM CHANGE 3 | ||
newProxy = new Proxy(value, { | ||
get(target, property) { | ||
return target[property]; | ||
}, | ||
set(target, property, innerValue) { | ||
if (property !== '__proto__' && property !== 'length') { | ||
if (typeof innerValue === 'object') { | ||
attachProxyToProperties(innerValue, callback, id); | ||
} // eslint-disable-next-line no-param-reassign | ||
if (!value) { | ||
Object.defineProperty(object, fieldName, { | ||
configurable: true, | ||
enumerable: true, | ||
get: () => value, | ||
set: value => { | ||
if (originalField === value) return; // *** SAM CHANGE 2 | ||
if (typeof value === 'object' && !Array.isArray(value)) { | ||
attachProxyToProperties(value, callback, id); | ||
} // eslint-disable-next-line no-param-reassign | ||
target[property] = innerValue; | ||
callback(); | ||
} | ||
return true; | ||
originalField = value; | ||
callback(); | ||
} | ||
}); | ||
callback(); | ||
return 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 | ||
if (typeof value === 'object' && !Array.isArray(value)) { | ||
attachProxyToProperties(value, callback, id); | ||
} // eslint-disable-next-line no-param-reassign | ||
newProxy = new Proxy(value, { | ||
get(target, property) { | ||
return target[property]; | ||
}, | ||
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; | ||
} | ||
}); | ||
callback(); | ||
} | ||
} | ||
}); | ||
} catch (e) { | ||
Object.defineProperty(object, fieldName, { | ||
configurable: true, | ||
enumerable: true, | ||
get: () => originalField, | ||
set: value => { | ||
if (originalField === value) return; // *** SAM CHANGE 2 | ||
if (typeof value === 'object' && !Array.isArray(value)) { | ||
attachProxyToProperties(value, callback, id); | ||
} // eslint-disable-next-line no-param-reassign | ||
originalField = value; | ||
callback(); | ||
} | ||
}); | ||
} | ||
@@ -279,2 +295,2 @@ } | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VPYnNlcnZlci50cyJdLCJuYW1lcyI6WyJFdmVudEVtaXR0ZXIiLCJjYWxsYmFja3MiLCJvbiIsImV2ZW50SWQiLCJzdWJzY3JpcHRpb25JZCIsImNiIiwicHVzaCIsInJlbW92ZSIsImZpbHRlciIsImMiLCJlbWl0IiwiZm9yRWFjaCIsImV2ZW50RW1pdHRlciIsImdldEZpZWxkTmFtZXMiLCJ0b0NoZWNrIiwicHJvcHMiLCJvYmoiLCJjb25jYXQiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZ2V0UHJvdG90eXBlT2YiLCJzb3J0IiwiZSIsImkiLCJhcnIiLCJpc1dyaXRhYmxlRmllbGQiLCJvYmplY3QiLCJmaWVsZE5hbWUiLCJmaWVsZERlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ3cml0YWJsZSIsImlzV3JpdGVhYmxlT2JqZWN0RmllbGQiLCJpc1dyaXRlYWJsZVByaW1pdGl2ZUZpZWxkIiwiaXNXcml0ZWFibGVBcnJheSIsIkFycmF5IiwiaXNBcnJheSIsImF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzIiwibW9kZWwiLCJjYWxsYmFjayIsImlkIiwiX19wcm94eUF0dGFjaGVkIiwiZmllbGQiLCJyZWN1cnNpdmVseUF0dGFjaFByb3h5IiwiX19vYnNlcnZhYmxlSWQiLCJhdHRhY2hQcm94eVRvRmllbGQiLCJvcmlnaW5hbEZpZWxkIiwibmV3UHJveHkiLCJQcm94eSIsImdldCIsInRhcmdldCIsInByb3BlcnR5Iiwic2V0IiwidmFsdWUiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJpbm5lclZhbHVlIiwiYXR0YWNoUHJveHlUb0FycmF5IiwiZWxlbWVudCIsImluZGV4IiwibmVzdGVkRmllbGROYW1lIiwidW5kZWZpbmVkIiwiYWRkSWQiLCJhZGRIYXNoIiwiaGFzaCIsImN1cnJlbnRJZCIsInVzZVVuaXF1ZUlkIiwicmVmIiwiY3VycmVudCIsInVzZVJlYWN0aWZ5Iiwic3RhdGVDaGFuZ2UiLCJzdGF0ZUNoYW5nZUNhbGxiYWNrIiwiZGVjb3JhdGUiLCJ1c2VPYnNlcnZlciIsInB1cmVPYnNlcnZlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxNQUFNQSxZQUFOLENBQW1CO0FBQUE7QUFBQSxTQUNqQkMsU0FEaUIsR0FDTCxFQURLO0FBQUE7O0FBR2pCQyxFQUFBQSxFQUFFLENBQUNDLE9BQUQsRUFBVUMsY0FBVixFQUEwQkMsRUFBMUIsRUFBb0M7QUFDcEMsU0FBS0osU0FBTCxDQUFlRSxPQUFmLElBQTBCLEtBQUtGLFNBQUwsQ0FBZUUsT0FBZixLQUEyQixFQUFyRCxDQURvQyxDQUVwQzs7QUFDQUUsSUFBQUEsRUFBRSxDQUFDRCxjQUFILEdBQW9CQSxjQUFwQjtBQUNBLFNBQUtILFNBQUwsQ0FBZUUsT0FBZixFQUF3QkcsSUFBeEIsQ0FBNkJELEVBQTdCO0FBQ0Q7O0FBRURFLEVBQUFBLE1BQU0sQ0FBQ0osT0FBRCxFQUFVQyxjQUFWLEVBQWdDO0FBQ3BDLFNBQUtILFNBQUwsQ0FBZUUsT0FBZixJQUEwQixLQUFLRixTQUFMLENBQWVFLE9BQWYsRUFBd0JLLE1BQXhCLENBQ3ZCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0wsY0FBRixLQUFxQkEsY0FESixDQUExQjtBQUdEOztBQUVETSxFQUFBQSxJQUFJLENBQUNQLE9BQUQsRUFBZ0I7QUFDbEIsUUFBSSxLQUFLRixTQUFMLENBQWVFLE9BQWYsQ0FBSixFQUE2QjtBQUMzQixXQUFLRixTQUFMLENBQWVFLE9BQWYsRUFBd0JRLE9BQXhCLENBQWlDTixFQUFELElBQVFBLEVBQUUsRUFBMUM7QUFDRDtBQUNGOztBQXBCZ0I7O0FBdUJuQixNQUFNTyxZQUFZLEdBQUcsSUFBSVosWUFBSixFQUFyQjs7QUFTQSxTQUFTYSxhQUFULENBQXVCQyxPQUF2QixFQUEwQztBQUN4QyxNQUFJQyxLQUFLLEdBQUcsRUFBWjtBQUNBLE1BQUlDLEdBQUcsR0FBR0YsT0FBVjs7QUFF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ZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCdcbmltcG9ydCBoYXNoIGZyb20gJy4vaGFzaCdcbmltcG9ydCB7Z2VuZXJhdGVJZH0gZnJvbSAnLi9oZWxwZXJzL2dlbmVyYXRlSWQnXG5cbmNsYXNzIEV2ZW50RW1pdHRlciB7XG4gIGNhbGxiYWNrcyA9IHt9XG5cbiAgb24oZXZlbnRJZCwgc3Vic2NyaXB0aW9uSWQsIGNiKTogdm9pZCB7XG4gICAgdGhpcy5jYWxsYmFja3NbZXZlbnRJZF0gPSB0aGlzLmNhbGxiYWNrc1tldmVudElkXSB8fCBbXVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgIGNiLnN1YnNjcmlwdGlvbklkID0gc3Vic2NyaXB0aW9uSWRcbiAgICB0aGlzLmNhbGxiYWNrc1tldmVudElkXS5wdXNoKGNiKVxuICB9XG5cbiAgcmVtb3ZlKGV2ZW50SWQsIHN1YnNjcmlwdGlvbklkKTogdm9pZCB7XG4gICAgdGhpcy5jYWxsYmFja3NbZXZlbnRJZF0gPSB0aGlzLmNhbGxiYWNrc1tldmVudElkXS5maWx0ZXIoXG4gICAgICAoYykgPT4gYy5zdWJzY3JpcHRpb25JZCAhPT0gc3Vic2NyaXB0aW9uSWRcbiAgICApXG4gIH1cblxuICBlbWl0KGV2ZW50SWQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYWxsYmFja3NbZXZlbnRJZF0pIHtcbiAgICAgIHRoaXMuY2FsbGJhY2tzW2V2ZW50SWRdLmZvckVhY2goKGNiKSA9PiBjYigpKVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBldmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKClcblxudHlwZSBNb2RlbCA9IHtcbiAgY29uc3RydWN0b3JcbiAgX19vYnNlcnZhYmxlSWQ/OiBzdHJpbmdcbiAgX19wcm94eUF0dGFjaGVkPzogYm9vbGVhblxuICBoYXNoPzogKCkgPT4gc3RyaW5nXG59XG5cbmZ1bmN0aW9uIGdldEZpZWxkTmFtZXModG9DaGVjayk6IHN0cmluZ1tdIHtcbiAgbGV0IHByb3BzID0gW11cbiAgbGV0IG9iaiA9IHRvQ2hlY2tcblxuICBkbyB7XG4gICAgcHJvcHMgPSBwcm9wcy5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKSlcbiAgfSB3aGlsZSAoKG9iaiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopKSlcbiAgcmV0dXJuIHByb3BzXG4gICAgLnNvcnQoKVxuICAgIC5maWx0ZXIoKGUsIGksIGFycikgPT4gZSAhPT0gYXJyW2kgKyAxXSAmJiB0eXBlb2YgdG9DaGVja1tlXSAhPT0gJ2Z1bmN0aW9uJylcbn1cblxuZnVuY3Rpb24gaXNXcml0YWJsZUZpZWxkKG9iamVjdCwgZmllbGROYW1lKTogYm9vbGVhbiB7XG4gIGNvbnN0IGZpZWxkRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBmaWVsZE5hbWUpXG4gIHJldHVybiBmaWVsZERlc2NyaXB0b3IgJiYgZmllbGREZXNjcmlwdG9yLndyaXRhYmxlXG59XG5cbmZ1bmN0aW9uIGlzV3JpdGVhYmxlT2JqZWN0RmllbGQob2JqZWN0LCBmaWVsZE5hbWUpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBpc1dyaXRhYmxlRmllbGQob2JqZWN0LCBmaWVsZE5hbWUpICYmXG4gICAgdHlwZW9mIG9iamVjdFtmaWVsZE5hbWVdID09PSAnb2JqZWN0JyAmJlxuICAgIG9iamVjdFtmaWVsZE5hbWVdICE9PSBudWxsXG4gIClcbn1cblxuZnVuY3Rpb24gaXNXcml0ZWFibGVQcmltaXRpdmVGaWVsZChvYmplY3QsIGZpZWxkTmFtZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIGlzV3JpdGFibGVGaWVsZChvYmplY3QsIGZpZWxkTmFtZSkgJiZcbiAgICAodHlwZW9mIG9iamVjdFtmaWVsZE5hbWVdICE9PSAnb2JqZWN0JyB8fCBvYmplY3RbZmllbGROYW1lXSA9PT0gbnVsbClcbiAgKVxufVxuXG5mdW5jdGlvbiBpc1dyaXRlYWJsZUFycmF5KG9iamVjdCwgZmllbGROYW1lKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1dyaXRhYmxlRmllbGQob2JqZWN0LCBmaWVsZE5hbWUpICYmIEFycmF5LmlzQXJyYXkob2JqZWN0W2ZpZWxkTmFtZV0pXG59XG5cbmZ1bmN0aW9uIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKG1vZGVsOiBNb2RlbCwgY2FsbGJhY2s6IEZ1bmN0aW9uLCBpZD8pOiB2b2lkIHtcbiAgLy8gKioqIFNBTSBDSEFOR0UgMSAtIHJlcGxhY2VkIHRoaXM6IGlmICghbW9kZWwuX19wcm94eUF0dGFjaGVkKSB7XG4gIGlmIChtb2RlbCAmJiAhbW9kZWwuX19wcm94eUF0dGFjaGVkKSB7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICBtb2RlbC5fX3Byb3h5QXR0YWNoZWQgPSB0cnVlXG4gICAgZ2V0RmllbGROYW1lcyhtb2RlbCkuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlY3Vyc2l2ZWx5QXR0YWNoUHJveHkoXG4gICAgICAgIG1vZGVsW2ZpZWxkXSxcbiAgICAgICAgZmllbGQsXG4gICAgICAgIG1vZGVsLFxuICAgICAgICBpZCB8fCBtb2RlbC5fX29ic2VydmFibGVJZCxcbiAgICAgICAgY2FsbGJhY2tcbiAgICAgIClcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGF0dGFjaFByb3h5VG9GaWVsZChcbiAgb2JqZWN0LFxuICBmaWVsZE5hbWUsXG4gIG9yaWdpbmFsRmllbGQsXG4gIGNhbGxiYWNrLFxuICBpZFxuKTogdm9pZCB7XG4gIGlmIChmaWVsZE5hbWUgIT09ICdfX3Byb3h5QXR0YWNoZWQnKSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBuZXdQcm94eSA9IG5ldyBQcm94eShvYmplY3RbZmllbGROYW1lXSwge1xuICAgICAgICBnZXQodGFyZ2V0LCBwcm9wZXJ0eSk6IG9iamVjdCB7XG4gICAgICAgICAgcmV0dXJuIHRhcmdldFtwcm9wZXJ0eV1cbiAgICAgICAgfSxcbiAgICAgICAgc2V0KHRhcmdldCwgcHJvcGVydHksIHZhbHVlKTogYm9vbGVhbiB7XG4gICAgICAgICAgaWYgKHByb3BlcnR5ICE9PSAnX19wcm90b19fJyAmJiBwcm9wZXJ0eSAhPT0gJ2xlbmd0aCcpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKHZhbHVlLCBjYWxsYmFjaywgaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZVxuICAgICAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgZmllbGROYW1lLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG5ld1Byb3h5XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIGNhbGxiYWNrKCkgLy8gKioqIFNBTSBDSEFOR0UgM1xuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgYXR0YWNoUHJveHlUb1Byb3BlcnRpZXModmFsdWUsIGNhbGxiYWNrLCBpZClcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV3UHJveHkgPSBuZXcgUHJveHkodmFsdWUsIHtcbiAgICAgICAgICAgIGdldCh0YXJnZXQsIHByb3BlcnR5KTogb2JqZWN0IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtwcm9wZXJ0eV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQodGFyZ2V0LCBwcm9wZXJ0eSwgaW5uZXJWYWx1ZSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgICBpZiAocHJvcGVydHkgIT09ICdfX3Byb3RvX18nICYmIHByb3BlcnR5ICE9PSAnbGVuZ3RoJykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaW5uZXJWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKGlubmVyVmFsdWUsIGNhbGxiYWNrLCBpZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAgICAgdGFyZ2V0W3Byb3BlcnR5XSA9IGlubmVyVmFsdWVcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICBjYWxsYmFjaygpXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIFRoaXMgaWYgZG9lc24ndCBzZWVtIHRvIG1ha2UgYW55IGRpZmZlcmVuY2VcbiAgICAgIGlmIChmaWVsZE5hbWUgIT09ICdsZW5ndGgnKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIGZpZWxkTmFtZSwge1xuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGdldDogKCkgPT4gb3JpZ2luYWxGaWVsZCxcbiAgICAgICAgICBzZXQ6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsRmllbGQgPT09IHZhbHVlKSByZXR1cm4gLy8gKioqIFNBTSBDSEFOR0UgMlxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKHZhbHVlLCBjYWxsYmFjaywgaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgIG9yaWdpbmFsRmllbGQgPSB2YWx1ZVxuICAgICAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGF0dGFjaFByb3h5VG9BcnJheShvYmplY3QsIGZpZWxkTmFtZSwgY2FsbGJhY2ssIGlkKTogdm9pZCB7XG4gIG9iamVjdFtmaWVsZE5hbWVdLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHJlY3Vyc2l2ZWx5QXR0YWNoUHJveHkoZWxlbWVudCwgaW5kZXgsIG9iamVjdFtmaWVsZE5hbWVdLCBpZCwgY2FsbGJhY2spXG4gIH0pXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIG9iamVjdFtgX19fXyR7ZmllbGROYW1lfWBdID0gb2JqZWN0W2ZpZWxkTmFtZV1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgZmllbGROYW1lLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiAoKSA9PiBvYmplY3RbYF9fX18ke2ZpZWxkTmFtZX1gXSxcbiAgICBzZXQ6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICBvYmplY3RbYF9fX18ke2ZpZWxkTmFtZX1gXSA9IHZhbHVlXG4gICAgICBjYWxsYmFjaygpXG4gICAgfSxcbiAgfSlcblxuICAvLyBGSVhNRSB0aGlzIGlzIGNhdXNpbmcgdGhlIGV4dHJhIGNhbGxiYWNrIGluIHB1cmVPYnNlcnZlci5zcGVjIHRlc3RzXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBvYmplY3RbZmllbGROYW1lXSA9IG5ldyBQcm94eShvYmplY3RbZmllbGROYW1lXSwge1xuICAgIGdldCh0YXJnZXQsIHByb3BlcnR5KTogb2JqZWN0IHtcbiAgICAgIHJldHVybiB0YXJnZXRbcHJvcGVydHldXG4gICAgfSxcbiAgICBzZXQodGFyZ2V0LCBwcm9wZXJ0eSwgdmFsdWUpOiBib29sZWFuIHtcbiAgICAgIGlmIChwcm9wZXJ0eSAhPT0gJ19fcHJvdG9fXycgJiYgcHJvcGVydHkgIT09ICdsZW5ndGgnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgYXR0YWNoUHJveHlUb1Byb3BlcnRpZXModmFsdWUsIGNhbGxiYWNrLCBpZClcbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgdGFyZ2V0W3Byb3BlcnR5XSA9IHZhbHVlXG4gICAgICAgIGNhbGxiYWNrKClcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSxcbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVjdXJzaXZlbHlBdHRhY2hQcm94eShcbiAgb3JpZ2luYWxGaWVsZCxcbiAgZmllbGROYW1lLFxuICBvYmplY3QsXG4gIGlkLFxuICBjYWxsYmFjazogRnVuY3Rpb25cbik6IHZvaWQge1xuICBpZiAoaXNXcml0ZWFibGVQcmltaXRpdmVGaWVsZChvYmplY3QsIGZpZWxkTmFtZSkpXG4gICAgcmV0dXJuIGF0dGFjaFByb3h5VG9GaWVsZChvYmplY3QsIGZpZWxkTmFtZSwgb3JpZ2luYWxGaWVsZCwgY2FsbGJhY2ssIGlkKVxuICBpZiAoaXNXcml0ZWFibGVBcnJheShvYmplY3QsIGZpZWxkTmFtZSkpXG4gICAgcmV0dXJuIGF0dGFjaFByb3h5VG9BcnJheShvYmplY3QsIGZpZWxkTmFtZSwgY2FsbGJhY2ssIGlkKVxuICBpZiAoaXNXcml0ZWFibGVPYmplY3RGaWVsZChvYmplY3QsIGZpZWxkTmFtZSkpIHtcbiAgICBhdHRhY2hQcm94eVRvRmllbGQob2JqZWN0LCBmaWVsZE5hbWUsIG9yaWdpbmFsRmllbGQsIGNhbGxiYWNrLCBpZClcbiAgICBnZXRGaWVsZE5hbWVzKG9iamVjdFtmaWVsZE5hbWVdKS5mb3JFYWNoKChuZXN0ZWRGaWVsZE5hbWUpID0+XG4gICAgICByZWN1cnNpdmVseUF0dGFjaFByb3h5KFxuICAgICAgICBvYmplY3RbZmllbGROYW1lXVtuZXN0ZWRGaWVsZE5hbWVdLFxuICAgICAgICBuZXN0ZWRGaWVsZE5hbWUsXG4gICAgICAgIG9iamVjdFtmaWVsZE5hbWVdLFxuICAgICAgICBpZCxcbiAgICAgICAgY2FsbGJhY2tcbiAgICAgIClcbiAgICApXG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBhZGRJZChtb2RlbDogTW9kZWwpOiB2b2lkIHtcbiAgaWYgKCFtb2RlbC5fX29ic2VydmFibGVJZClcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kZWwsICdfX29ic2VydmFibGVJZCcsIHtcbiAgICAgIHZhbHVlOiBnZW5lcmF0ZUlkKCksXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgfSlcbn1cblxuZnVuY3Rpb24gYWRkSGFzaChtb2RlbDogTW9kZWwpOiB2b2lkIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGlmICghbW9kZWwuaGFzaCkgbW9kZWwuaGFzaCA9ICgpOiBzdHJpbmcgPT4gaGFzaChtb2RlbClcbn1cblxubGV0IGN1cnJlbnRJZCA9IDBcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVVuaXF1ZUlkKCk6IHN0cmluZyB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZigwKVxuICBpZiAocmVmLmN1cnJlbnQgPT09IDApIHtcbiAgICBjdXJyZW50SWQgKz0gMVxuICAgIHJlZi5jdXJyZW50ID0gY3VycmVudElkXG4gIH1cbiAgcmV0dXJuIGBzdWJzY3JpcHRpb25faWQke3JlZi5jdXJyZW50fWBcbn1cblxuZnVuY3Rpb24gdXNlUmVhY3RpZnkobW9kZWw6IE1vZGVsKTogRnVuY3Rpb24ge1xuICBjb25zdCBzdWJzY3JpcHRpb25JZCA9IHVzZVVuaXF1ZUlkKClcbiAgY29uc3QgWywgc3RhdGVDaGFuZ2VdID0gdXNlU3RhdGUobW9kZWwuaGFzaCgpKVxuXG4gIGNvbnN0IHN0YXRlQ2hhbmdlQ2FsbGJhY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc3RhdGVDaGFuZ2UobW9kZWwuaGFzaCgpKVxuICB9LCBbbW9kZWxdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZXZlbnRFbWl0dGVyLm9uKG1vZGVsLl9fb2JzZXJ2YWJsZUlkLCBzdWJzY3JpcHRpb25JZCwgc3RhdGVDaGFuZ2VDYWxsYmFjaylcbiAgICByZXR1cm4gKCk6IHZvaWQgPT4gZXZlbnRFbWl0dGVyLnJlbW92ZShtb2RlbC5fX29ic2VydmFibGVJZCwgc3Vic2NyaXB0aW9uSWQpXG4gIH0sIFttb2RlbC5fX29ic2VydmFibGVJZCwgc3Vic2NyaXB0aW9uSWQsIHN0YXRlQ2hhbmdlQ2FsbGJhY2tdKVxuICByZXR1cm4gKCk6IHZvaWQgPT4gZXZlbnRFbWl0dGVyLmVtaXQobW9kZWwuX19vYnNlcnZhYmxlSWQpXG59XG5cbmZ1bmN0aW9uIGRlY29yYXRlKG1vZGVsOiBNb2RlbCk6IHZvaWQge1xuICBhZGRIYXNoKG1vZGVsKVxuICBhZGRJZChtb2RlbClcbn1cblxuZnVuY3Rpb24gdXNlT2JzZXJ2ZXI8VCBleHRlbmRzIE1vZGVsPihtb2RlbDogVCk6IFQge1xuICBkZWNvcmF0ZShtb2RlbClcbiAgY29uc3QgY2FsbGJhY2sgPSB1c2VSZWFjdGlmeShtb2RlbClcbiAgYXR0YWNoUHJveHlUb1Byb3BlcnRpZXMobW9kZWwsIGNhbGxiYWNrKVxuICByZXR1cm4gbW9kZWxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1cmVPYnNlcnZlcjxUIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBULCBjYWxsYmFjazogRnVuY3Rpb24pOiBUIHtcbiAgZGVjb3JhdGUobW9kZWwpXG4gIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKG1vZGVsLCBjYWxsYmFjaylcbiAgcmV0dXJuIG1vZGVsXG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZU9ic2VydmVyXG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VPYnNlcnZlci50cyJdLCJuYW1lcyI6WyJFdmVudEVtaXR0ZXIiLCJjYWxsYmFja3MiLCJvbiIsImV2ZW50SWQiLCJzdWJzY3JpcHRpb25JZCIsImNiIiwicHVzaCIsInJlbW92ZSIsImZpbHRlciIsImMiLCJlbWl0IiwiZm9yRWFjaCIsImV2ZW50RW1pdHRlciIsImdldEZpZWxkTmFtZXMiLCJ0b0NoZWNrIiwicHJvcHMiLCJvYmoiLCJjb25jYXQiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZ2V0UHJvdG90eXBlT2YiLCJzb3J0IiwiZSIsImkiLCJhcnIiLCJpc1dyaXRhYmxlRmllbGQiLCJvYmplY3QiLCJmaWVsZE5hbWUiLCJmaWVsZERlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ3cml0YWJsZSIsImlzV3JpdGVhYmxlT2JqZWN0RmllbGQiLCJpc1dyaXRlYWJsZVByaW1pdGl2ZUZpZWxkIiwiaXNXcml0ZWFibGVBcnJheSIsIkFycmF5IiwiaXNBcnJheSIsImF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzIiwibW9kZWwiLCJjYWxsYmFjayIsImlkIiwiX19wcm94eUF0dGFjaGVkIiwiZmllbGQiLCJyZWN1cnNpdmVseUF0dGFjaFByb3h5IiwiX19vYnNlcnZhYmxlSWQiLCJhdHRhY2hQcm94eVRvRmllbGQiLCJvcmlnaW5hbEZpZWxkIiwibmV3UHJveHkiLCJQcm94eSIsImdldCIsInRhcmdldCIsInByb3BlcnR5Iiwic2V0IiwidmFsdWUiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJpbm5lclZhbHVlIiwiYXR0YWNoUHJveHlUb0FycmF5IiwiZWxlbWVudCIsImluZGV4IiwibmVzdGVkRmllbGROYW1lIiwidW5kZWZpbmVkIiwiYWRkSWQiLCJhZGRIYXNoIiwiaGFzaCIsImN1cnJlbnRJZCIsInVzZVVuaXF1ZUlkIiwicmVmIiwiY3VycmVudCIsInVzZVJlYWN0aWZ5Iiwic3RhdGVDaGFuZ2UiLCJzdGF0ZUNoYW5nZUNhbGxiYWNrIiwiZGVjb3JhdGUiLCJ1c2VPYnNlcnZlciIsInB1cmVPYnNlcnZlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxNQUFNQSxZQUFOLENBQW1CO0FBQUE7QUFBQSxTQUNqQkMsU0FEaUIsR0FDTCxFQURLO0FBQUE7O0FBR2pCQyxFQUFBQSxFQUFFLENBQUNDLE9BQUQsRUFBVUMsY0FBVixFQUEwQkMsRUFBMUIsRUFBb0M7QUFDcEMsU0FBS0osU0FBTCxDQUFlRSxPQUFmLElBQTBCLEtBQUtGLFNBQUwsQ0FBZUUsT0FBZixLQUEyQixFQUFyRCxDQURvQyxDQUVwQzs7QUFDQUUsSUFBQUEsRUFBRSxDQUFDRCxjQUFILEdBQW9CQSxjQUFwQjtBQUNBLFNBQUtILFNBQUwsQ0FBZUUsT0FBZixFQUF3QkcsSUFBeEIsQ0FBNkJELEVBQTdCO0FBQ0Q7O0FBRURFLEVBQUFBLE1BQU0sQ0FBQ0osT0FBRCxFQUFVQyxjQUFWLEVBQWdDO0FBQ3BDLFNBQUtILFNBQUwsQ0FBZUUsT0FBZixJQUEwQixLQUFLRixTQUFMLENBQWVFLE9BQWYsRUFBd0JLLE1BQXhCLENBQ3ZCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0wsY0FBRixLQUFxQkEsY0FESixDQUExQjtBQUdEOztBQUVETSxFQUFBQSxJQUFJLENBQUNQLE9BQUQsRUFBZ0I7QUFDbEIsUUFBSSxLQUFLRixTQUFMLENBQWVFLE9BQWYsQ0FBSixFQUE2QjtBQUMzQixXQUFLRixTQUFMLENBQWVFLE9BQWYsRUFBd0JRLE9BQXhCLENBQWlDTixFQUFELElBQVFBLEVBQUUsRUFBMUM7QUFDRDtBQUNGOztBQXBCZ0I7O0FBdUJuQixNQUFNTyxZQUFZLEdBQUcsSUFBSVosWUFBSixFQUFyQjs7QUFTQSxTQUFTYSxhQUFULENBQXVCQyxPQUF2QixFQUEwQztBQUN4QyxNQUFJQyxLQUFLLEdBQUcsRUFBWjtBQUNBLE1BQUlDLEdBQUcsR0FBR0YsT0FBVjs7QUFF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RCxDQUFMO0FBQ0Q7O0FBRUQsU0FBU29DLFdBQVQsQ0FBc0NwQyxLQUF0QyxFQUFtRDtBQUNqRG1DLEVBQUFBLFFBQVEsQ0FBQ25DLEtBQUQsQ0FBUjtBQUNBLFFBQU1DLFFBQVEsR0FBRytCLFdBQVcsQ0FBQ2hDLEtBQUQsQ0FBNUI7QUFDQUQsRUFBQUEsdUJBQXVCLENBQUNDLEtBQUQsRUFBUUMsUUFBUixDQUF2QjtBQUNBLFNBQU9ELEtBQVA7QUFDRDs7QUFFTSxTQUFTcUMsWUFBVCxDQUF1Q3JDLEtBQXZDLEVBQWlEQyxRQUFqRCxFQUF3RTtBQUM3RWtDLEVBQUFBLFFBQVEsQ0FBQ25DLEtBQUQsQ0FBUjtBQUNBRCxFQUFBQSx1QkFBdUIsQ0FBQ0MsS0FBRCxFQUFRQyxRQUFSLENBQXZCO0FBQ0EsU0FBT0QsS0FBUDtBQUNEOztlQUVjb0MsVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXG5pbXBvcnQgaGFzaCBmcm9tICcuL2hhc2gnXG5pbXBvcnQge2dlbmVyYXRlSWR9IGZyb20gJy4vaGVscGVycy9nZW5lcmF0ZUlkJ1xuXG5jbGFzcyBFdmVudEVtaXR0ZXIge1xuICBjYWxsYmFja3MgPSB7fVxuXG4gIG9uKGV2ZW50SWQsIHN1YnNjcmlwdGlvbklkLCBjYik6IHZvaWQge1xuICAgIHRoaXMuY2FsbGJhY2tzW2V2ZW50SWRdID0gdGhpcy5jYWxsYmFja3NbZXZlbnRJZF0gfHwgW11cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICBjYi5zdWJzY3JpcHRpb25JZCA9IHN1YnNjcmlwdGlvbklkXG4gICAgdGhpcy5jYWxsYmFja3NbZXZlbnRJZF0ucHVzaChjYilcbiAgfVxuXG4gIHJlbW92ZShldmVudElkLCBzdWJzY3JpcHRpb25JZCk6IHZvaWQge1xuICAgIHRoaXMuY2FsbGJhY2tzW2V2ZW50SWRdID0gdGhpcy5jYWxsYmFja3NbZXZlbnRJZF0uZmlsdGVyKFxuICAgICAgKGMpID0+IGMuc3Vic2NyaXB0aW9uSWQgIT09IHN1YnNjcmlwdGlvbklkXG4gICAgKVxuICB9XG5cbiAgZW1pdChldmVudElkKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FsbGJhY2tzW2V2ZW50SWRdKSB7XG4gICAgICB0aGlzLmNhbGxiYWNrc1tldmVudElkXS5mb3JFYWNoKChjYikgPT4gY2IoKSlcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgZXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbnR5cGUgTW9kZWwgPSB7XG4gIGNvbnN0cnVjdG9yXG4gIF9fb2JzZXJ2YWJsZUlkPzogc3RyaW5nXG4gIF9fcHJveHlBdHRhY2hlZD86IGJvb2xlYW5cbiAgaGFzaD86ICgpID0+IHN0cmluZ1xufVxuXG5mdW5jdGlvbiBnZXRGaWVsZE5hbWVzKHRvQ2hlY2spOiBzdHJpbmdbXSB7XG4gIGxldCBwcm9wcyA9IFtdXG4gIGxldCBvYmogPSB0b0NoZWNrXG5cbiAgZG8ge1xuICAgIHByb3BzID0gcHJvcHMuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikpXG4gIH0gd2hpbGUgKChvYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSkpXG4gIHJldHVybiBwcm9wc1xuICAgIC5zb3J0KClcbiAgICAuZmlsdGVyKChlLCBpLCBhcnIpID0+IGUgIT09IGFycltpICsgMV0gJiYgdHlwZW9mIHRvQ2hlY2tbZV0gIT09ICdmdW5jdGlvbicpXG59XG5cbmZ1bmN0aW9uIGlzV3JpdGFibGVGaWVsZChvYmplY3QsIGZpZWxkTmFtZSk6IGJvb2xlYW4ge1xuICBjb25zdCBmaWVsZERlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgZmllbGROYW1lKVxuICByZXR1cm4gZmllbGREZXNjcmlwdG9yICYmIGZpZWxkRGVzY3JpcHRvci53cml0YWJsZVxufVxuXG5mdW5jdGlvbiBpc1dyaXRlYWJsZU9iamVjdEZpZWxkKG9iamVjdCwgZmllbGROYW1lKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgaXNXcml0YWJsZUZpZWxkKG9iamVjdCwgZmllbGROYW1lKSAmJlxuICAgIHR5cGVvZiBvYmplY3RbZmllbGROYW1lXSA9PT0gJ29iamVjdCcgJiZcbiAgICBvYmplY3RbZmllbGROYW1lXSAhPT0gbnVsbFxuICApXG59XG5cbmZ1bmN0aW9uIGlzV3JpdGVhYmxlUHJpbWl0aXZlRmllbGQob2JqZWN0LCBmaWVsZE5hbWUpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBpc1dyaXRhYmxlRmllbGQob2JqZWN0LCBmaWVsZE5hbWUpICYmXG4gICAgKHR5cGVvZiBvYmplY3RbZmllbGROYW1lXSAhPT0gJ29iamVjdCcgfHwgb2JqZWN0W2ZpZWxkTmFtZV0gPT09IG51bGwpXG4gIClcbn1cblxuZnVuY3Rpb24gaXNXcml0ZWFibGVBcnJheShvYmplY3QsIGZpZWxkTmFtZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNXcml0YWJsZUZpZWxkKG9iamVjdCwgZmllbGROYW1lKSAmJiBBcnJheS5pc0FycmF5KG9iamVjdFtmaWVsZE5hbWVdKVxufVxuXG5mdW5jdGlvbiBhdHRhY2hQcm94eVRvUHJvcGVydGllcyhtb2RlbDogTW9kZWwsIGNhbGxiYWNrOiBGdW5jdGlvbiwgaWQ/KTogdm9pZCB7XG4gIC8vICoqKiBTQU0gQ0hBTkdFIDEgLSByZXBsYWNlZCB0aGlzOiBpZiAoIW1vZGVsLl9fcHJveHlBdHRhY2hlZCkge1xuICBpZiAobW9kZWwgJiYgIW1vZGVsLl9fcHJveHlBdHRhY2hlZCkge1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgbW9kZWwuX19wcm94eUF0dGFjaGVkID0gdHJ1ZVxuICAgIGdldEZpZWxkTmFtZXMobW9kZWwpLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZWN1cnNpdmVseUF0dGFjaFByb3h5KFxuICAgICAgICBtb2RlbFtmaWVsZF0sXG4gICAgICAgIGZpZWxkLFxuICAgICAgICBtb2RlbCxcbiAgICAgICAgaWQgfHwgbW9kZWwuX19vYnNlcnZhYmxlSWQsXG4gICAgICAgIGNhbGxiYWNrXG4gICAgICApXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBhdHRhY2hQcm94eVRvRmllbGQoXG4gIG9iamVjdCxcbiAgZmllbGROYW1lLFxuICBvcmlnaW5hbEZpZWxkLFxuICBjYWxsYmFjayxcbiAgaWRcbik6IHZvaWQge1xuICBpZiAoZmllbGROYW1lID09PSAnX19wcm94eUF0dGFjaGVkJylcbiAgICByZXR1cm5cbiAgdHJ5IHtcbiAgICBsZXQgbmV3UHJveHkgPSBuZXcgUHJveHkob2JqZWN0W2ZpZWxkTmFtZV0sIHtcbiAgICAgIGdldCh0YXJnZXQsIHByb3BlcnR5KTogb2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHRhcmdldFtwcm9wZXJ0eV1cbiAgICAgIH0sXG4gICAgICBzZXQodGFyZ2V0LCBwcm9wZXJ0eSwgdmFsdWUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHByb3BlcnR5ICE9PSAnX19wcm90b19fJyAmJiBwcm9wZXJ0eSAhPT0gJ2xlbmd0aCcpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgYXR0YWNoUHJveHlUb1Byb3BlcnRpZXModmFsdWUsIGNhbGxiYWNrLCBpZClcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgdGFyZ2V0W3Byb3BlcnR5XSA9IHZhbHVlXG4gICAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBmaWVsZE5hbWUsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6ICgpID0+IHtcblxuICAgICAgICByZXR1cm4gbmV3UHJveHlcbiAgICAgIH0sXG4gICAgICBzZXQ6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICBhdHRhY2hQcm94eVRvUHJvcGVydGllcyh2YWx1ZSwgY2FsbGJhY2ssIGlkKVxuICAgICAgICB9XG4gICAgICAgIC8vICoqKiBTQU0gQ0hBTkdFIDNcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIGZpZWxkTmFtZSwge1xuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGdldDogKCkgPT4gdmFsdWUsXG4gICAgICAgICAgICBzZXQ6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAob3JpZ2luYWxGaWVsZCA9PT0gdmFsdWUpIHJldHVybiAvLyAqKiogU0FNIENIQU5HRSAyXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKHZhbHVlLCBjYWxsYmFjaywgaWQpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAgIG9yaWdpbmFsRmllbGQgPSB2YWx1ZVxuICAgICAgICAgICAgICBjYWxsYmFjaygpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKClcbiAgICAgICAgfVxuICAgICAgICBuZXdQcm94eSA9IG5ldyBQcm94eSh2YWx1ZSwge1xuICAgICAgICAgIGdldCh0YXJnZXQsIHByb3BlcnR5KTogb2JqZWN0IHtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXRbcHJvcGVydHldXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXQodGFyZ2V0LCBwcm9wZXJ0eSwgaW5uZXJWYWx1ZSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgaWYgKHByb3BlcnR5ICE9PSAnX19wcm90b19fJyAmJiBwcm9wZXJ0eSAhPT0gJ2xlbmd0aCcpIHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpbm5lclZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKGlubmVyVmFsdWUsIGNhbGxiYWNrLCBpZClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgICAgdGFyZ2V0W3Byb3BlcnR5XSA9IGlubmVyVmFsdWVcbiAgICAgICAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBjYWxsYmFjaygpXG4gICAgICB9LFxuICAgIH0pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBmaWVsZE5hbWUsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6ICgpID0+IG9yaWdpbmFsRmllbGQsXG4gICAgICBzZXQ6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAob3JpZ2luYWxGaWVsZCA9PT0gdmFsdWUpIHJldHVybiAvLyAqKiogU0FNIENIQU5HRSAyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKHZhbHVlLCBjYWxsYmFjaywgaWQpXG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIG9yaWdpbmFsRmllbGQgPSB2YWx1ZVxuICAgICAgICBjYWxsYmFjaygpXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxufVxuXG5mdW5jdGlvbiBhdHRhY2hQcm94eVRvQXJyYXkob2JqZWN0LCBmaWVsZE5hbWUsIGNhbGxiYWNrLCBpZCk6IHZvaWQge1xuICBvYmplY3RbZmllbGROYW1lXS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICByZWN1cnNpdmVseUF0dGFjaFByb3h5KGVsZW1lbnQsIGluZGV4LCBvYmplY3RbZmllbGROYW1lXSwgaWQsIGNhbGxiYWNrKVxuICB9KVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBvYmplY3RbYF9fX18ke2ZpZWxkTmFtZX1gXSA9IG9iamVjdFtmaWVsZE5hbWVdXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIGZpZWxkTmFtZSwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogKCkgPT4gb2JqZWN0W2BfX19fJHtmaWVsZE5hbWV9YF0sXG4gICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgb2JqZWN0W2BfX19fJHtmaWVsZE5hbWV9YF0gPSB2YWx1ZVxuICAgICAgY2FsbGJhY2soKVxuICAgIH0sXG4gIH0pXG5cbiAgLy8gRklYTUUgdGhpcyBpcyBjYXVzaW5nIHRoZSBleHRyYSBjYWxsYmFjayBpbiBwdXJlT2JzZXJ2ZXIuc3BlYyB0ZXN0c1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgb2JqZWN0W2ZpZWxkTmFtZV0gPSBuZXcgUHJveHkob2JqZWN0W2ZpZWxkTmFtZV0sIHtcbiAgICBnZXQodGFyZ2V0LCBwcm9wZXJ0eSk6IG9iamVjdCB7XG4gICAgICByZXR1cm4gdGFyZ2V0W3Byb3BlcnR5XVxuICAgIH0sXG4gICAgc2V0KHRhcmdldCwgcHJvcGVydHksIHZhbHVlKTogYm9vbGVhbiB7XG4gICAgICBpZiAocHJvcGVydHkgIT09ICdfX3Byb3RvX18nICYmIHByb3BlcnR5ICE9PSAnbGVuZ3RoJykge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKHZhbHVlLCBjYWxsYmFjaywgaWQpXG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSB2YWx1ZVxuICAgICAgICBjYWxsYmFjaygpXG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0sXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHJlY3Vyc2l2ZWx5QXR0YWNoUHJveHkoXG4gIG9yaWdpbmFsRmllbGQsXG4gIGZpZWxkTmFtZSxcbiAgb2JqZWN0LFxuICBpZCxcbiAgY2FsbGJhY2s6IEZ1bmN0aW9uXG4pOiB2b2lkIHtcbiAgaWYgKGlzV3JpdGVhYmxlUHJpbWl0aXZlRmllbGQob2JqZWN0LCBmaWVsZE5hbWUpKVxuICAgIHJldHVybiBhdHRhY2hQcm94eVRvRmllbGQob2JqZWN0LCBmaWVsZE5hbWUsIG9yaWdpbmFsRmllbGQsIGNhbGxiYWNrLCBpZClcbiAgaWYgKGlzV3JpdGVhYmxlQXJyYXkob2JqZWN0LCBmaWVsZE5hbWUpKVxuICAgIHJldHVybiBhdHRhY2hQcm94eVRvQXJyYXkob2JqZWN0LCBmaWVsZE5hbWUsIGNhbGxiYWNrLCBpZClcbiAgaWYgKGlzV3JpdGVhYmxlT2JqZWN0RmllbGQob2JqZWN0LCBmaWVsZE5hbWUpKSB7XG4gICAgYXR0YWNoUHJveHlUb0ZpZWxkKG9iamVjdCwgZmllbGROYW1lLCBvcmlnaW5hbEZpZWxkLCBjYWxsYmFjaywgaWQpXG4gICAgZ2V0RmllbGROYW1lcyhvYmplY3RbZmllbGROYW1lXSkuZm9yRWFjaCgobmVzdGVkRmllbGROYW1lKSA9PlxuICAgICAgcmVjdXJzaXZlbHlBdHRhY2hQcm94eShcbiAgICAgICAgb2JqZWN0W2ZpZWxkTmFtZV1bbmVzdGVkRmllbGROYW1lXSxcbiAgICAgICAgbmVzdGVkRmllbGROYW1lLFxuICAgICAgICBvYmplY3RbZmllbGROYW1lXSxcbiAgICAgICAgaWQsXG4gICAgICAgIGNhbGxiYWNrXG4gICAgICApXG4gICAgKVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gYWRkSWQobW9kZWw6IE1vZGVsKTogdm9pZCB7XG4gIGlmICghbW9kZWwuX19vYnNlcnZhYmxlSWQpXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZGVsLCAnX19vYnNlcnZhYmxlSWQnLCB7XG4gICAgICB2YWx1ZTogZ2VuZXJhdGVJZCgpLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgIH0pXG59XG5cbmZ1bmN0aW9uIGFkZEhhc2gobW9kZWw6IE1vZGVsKTogdm9pZCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBpZiAoIW1vZGVsLmhhc2gpIG1vZGVsLmhhc2ggPSAoKTogc3RyaW5nID0+IGhhc2gobW9kZWwpXG59XG5cbmxldCBjdXJyZW50SWQgPSAwXG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VVbmlxdWVJZCgpOiBzdHJpbmcge1xuICBjb25zdCByZWYgPSB1c2VSZWYoMClcbiAgaWYgKHJlZi5jdXJyZW50ID09PSAwKSB7XG4gICAgY3VycmVudElkICs9IDFcbiAgICByZWYuY3VycmVudCA9IGN1cnJlbnRJZFxuICB9XG4gIHJldHVybiBgc3Vic2NyaXB0aW9uX2lkJHtyZWYuY3VycmVudH1gXG59XG5cbmZ1bmN0aW9uIHVzZVJlYWN0aWZ5KG1vZGVsOiBNb2RlbCk6IEZ1bmN0aW9uIHtcbiAgY29uc3Qgc3Vic2NyaXB0aW9uSWQgPSB1c2VVbmlxdWVJZCgpXG4gIGNvbnN0IFssIHN0YXRlQ2hhbmdlXSA9IHVzZVN0YXRlKG1vZGVsLmhhc2goKSlcblxuICBjb25zdCBzdGF0ZUNoYW5nZUNhbGxiYWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHN0YXRlQ2hhbmdlKG1vZGVsLmhhc2goKSlcbiAgfSwgW21vZGVsXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGV2ZW50RW1pdHRlci5vbihtb2RlbC5fX29ic2VydmFibGVJZCwgc3Vic2NyaXB0aW9uSWQsIHN0YXRlQ2hhbmdlQ2FsbGJhY2spXG4gICAgcmV0dXJuICgpOiB2b2lkID0+IGV2ZW50RW1pdHRlci5yZW1vdmUobW9kZWwuX19vYnNlcnZhYmxlSWQsIHN1YnNjcmlwdGlvbklkKVxuICB9LCBbbW9kZWwuX19vYnNlcnZhYmxlSWQsIHN1YnNjcmlwdGlvbklkLCBzdGF0ZUNoYW5nZUNhbGxiYWNrXSlcbiAgcmV0dXJuICgpOiB2b2lkID0+IGV2ZW50RW1pdHRlci5lbWl0KG1vZGVsLl9fb2JzZXJ2YWJsZUlkKVxufVxuXG5mdW5jdGlvbiBkZWNvcmF0ZShtb2RlbDogTW9kZWwpOiB2b2lkIHtcbiAgYWRkSGFzaChtb2RlbClcbiAgYWRkSWQobW9kZWwpXG59XG5cbmZ1bmN0aW9uIHVzZU9ic2VydmVyPFQgZXh0ZW5kcyBNb2RlbD4obW9kZWw6IFQpOiBUIHtcbiAgZGVjb3JhdGUobW9kZWwpXG4gIGNvbnN0IGNhbGxiYWNrID0gdXNlUmVhY3RpZnkobW9kZWwpXG4gIGF0dGFjaFByb3h5VG9Qcm9wZXJ0aWVzKG1vZGVsLCBjYWxsYmFjaylcbiAgcmV0dXJuIG1vZGVsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwdXJlT2JzZXJ2ZXI8VCBleHRlbmRzIE1vZGVsPihtb2RlbDogVCwgY2FsbGJhY2s6IEZ1bmN0aW9uKTogVCB7XG4gIGRlY29yYXRlKG1vZGVsKVxuICBhdHRhY2hQcm94eVRvUHJvcGVydGllcyhtb2RlbCwgY2FsbGJhY2spXG4gIHJldHVybiBtb2RlbFxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VPYnNlcnZlclxuIl19 |
@@ -8,3 +8,3 @@ { | ||
], | ||
"version": "1.0.6-alpha", | ||
"version": "1.0.7-alpha", | ||
"dependencies": { | ||
@@ -83,3 +83,4 @@ "object-hash": "^2.0.0" | ||
"testPathIgnorePatterns": [ | ||
"<rootDir>/lib" | ||
"<rootDir>/lib", | ||
"<rootDir>/node_modules" | ||
] | ||
@@ -86,0 +87,0 @@ }, |
177133
1596