appium-android-driver 5.0.11 → 5.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.js +1 -1
- package/build/lib/android-helpers.js +1 -1
- package/build/lib/bootstrap.js +1 -1
- package/build/lib/commands/actions.js +1 -1
- package/build/lib/commands/alert.js +1 -1
- package/build/lib/commands/app-management.js +24 -11
- package/build/lib/commands/context.js +1 -1
- package/build/lib/commands/element.js +1 -1
- package/build/lib/commands/emu-console.js +1 -1
- package/build/lib/commands/execute.js +1 -1
- package/build/lib/commands/file-actions.js +1 -1
- package/build/lib/commands/find.js +1 -1
- package/build/lib/commands/general.js +1 -1
- package/build/lib/commands/ime.js +1 -1
- package/build/lib/commands/intent.js +1 -1
- package/build/lib/commands/log.js +1 -1
- package/build/lib/commands/network.js +1 -1
- package/build/lib/commands/performance.js +1 -1
- package/build/lib/commands/recordscreen.js +1 -1
- package/build/lib/commands/shell.js +1 -1
- package/build/lib/commands/streamscreen.js +1 -1
- package/build/lib/commands/system-bars.js +1 -1
- package/build/lib/commands/touch.js +1 -1
- package/build/lib/driver.js +1 -1
- package/build/lib/logger.js +1 -1
- package/build/lib/server.js +1 -1
- package/build/lib/uiautomator.js +1 -1
- package/build/lib/unlock-helpers.js +1 -1
- package/build/lib/webview-helpers.js +1 -1
- package/lib/commands/app-management.js +33 -15
- package/package.json +7 -6
|
@@ -156,4 +156,4 @@ var _default = extensions;
|
|
|
156
156
|
exports.default = _default;require('source-map-support').install();
|
|
157
157
|
|
|
158
158
|
|
|
159
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2xvZy5qcyIsIm5hbWVzIjpbIkdFVF9TRVJWRVJfTE9HU19GRUFUVVJFIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsIldFQlNPQ0tFVF9FTkRQT0lOVCIsInNlc3Npb25JZCIsIkRFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIiwidG9Mb2dSZWNvcmQiLCJ0aW1lc3RhbXAiLCJsZXZlbCIsIm1lc3NhZ2UiLCJzdXBwb3J0ZWRMb2dUeXBlcyIsImxvZ2NhdCIsImRlc2NyaXB0aW9uIiwiZ2V0dGVyIiwic2VsZiIsImFkYiIsImdldExvZ2NhdExvZ3MiLCJidWdyZXBvcnQiLCJvdXRwdXQiLCJEYXRlIiwibm93Iiwic3BsaXQiLCJvcyIsIkVPTCIsIm1hcCIsIngiLCJzZXJ2ZXIiLCJlbnN1cmVGZWF0dXJlRW5hYmxlZCIsImxvZyIsInVud3JhcCIsInJlY29yZCIsIl8iLCJpc0VtcHR5IiwicHJlZml4IiwibW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0IiwicGF0aG5hbWUiLCJnZXRXZWJTb2NrZXRIYW5kbGVycyIsImRlYnVnIiwiaW5mbyIsIndzcyIsIldlYlNvY2tldCIsIlNlcnZlciIsIm5vU2VydmVyIiwib24iLCJ3cyIsInJlcSIsInJlbW90ZUlwIiwiaGVhZGVycyIsImNvbm5lY3Rpb24iLCJyZW1vdGVBZGRyZXNzIiwiX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyIiwibG9nUmVjb3JkIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwic2V0TG9nY2F0TGlzdGVuZXIiLCJjb2RlIiwicmVhc29uIiwicmVtb3ZlTG9nY2F0TGlzdGVuZXIiLCJpZ24iLCJjbG9zZU1zZyIsInRvU3RyaW5nIiwiYWRkV2ViU29ja2V0SGFuZGxlciIsIm1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0IiwicmVtb3ZlV2ViU29ja2V0SGFuZGxlciIsImdldExvZ1R5cGVzIiwibmF0aXZlTG9nVHlwZXMiLCJCYXNlRHJpdmVyIiwicHJvdG90eXBlIiwiY2FsbCIsImlzV2ViQ29udGV4dCIsIndlYkxvZ1R5cGVzIiwiY2hyb21lZHJpdmVyIiwiandwcm94eSIsImNvbW1hbmQiLCJnZXRMb2ciLCJsb2dUeXBlIiwia2V5cyIsImluY2x1ZGVzIiwidHlwZSIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9sb2cuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgV2ViU29ja2V0IGZyb20gJ3dzJztcbmltcG9ydCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYLCBCYXNlRHJpdmVyIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cbmNvbnN0IEdFVF9TRVJWRVJfTE9HU19GRUFUVVJFID0gJ2dldF9zZXJ2ZXJfbG9ncyc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29uc3QgV0VCU09DS0VUX0VORFBPSU5UID0gKHNlc3Npb25JZCkgPT4gYCR7REVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVh9L3Nlc3Npb24vJHtzZXNzaW9uSWR9L2FwcGl1bS9kZXZpY2UvbG9nY2F0YDtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL1NlbGVuaXVtSFEvc2VsZW5pdW0vYmxvYi8wZDQyNTY3NmIzYzlkZjI2MWRkNjQxOTE3Zjg2N2Q0ZDVjZTc3NzRkL2phdmEvY2xpZW50L3NyYy9vcmcvb3BlbnFhL3NlbGVuaXVtL2xvZ2dpbmcvTG9nRW50cnkuamF2YVxuZnVuY3Rpb24gdG9Mb2dSZWNvcmQgKHRpbWVzdGFtcCwgbGV2ZWwsIG1lc3NhZ2UpIHtcbiAgcmV0dXJuIHtcbiAgICB0aW1lc3RhbXAsXG4gICAgbGV2ZWwsXG4gICAgbWVzc2FnZSxcbiAgfTtcbn1cblxuZXh0ZW5zaW9ucy5zdXBwb3J0ZWRMb2dUeXBlcyA9IHtcbiAgbG9nY2F0OiB7XG4gICAgZGVzY3JpcHRpb246ICdMb2dzIGZvciBBbmRyb2lkIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZSBhbmQgZW11bGF0b3JzIHZpYSBBREInLFxuICAgIGdldHRlcjogYXN5bmMgKHNlbGYpID0+IGF3YWl0IHNlbGYuYWRiLmdldExvZ2NhdExvZ3MoKSxcbiAgfSxcbiAgYnVncmVwb3J0OiB7XG4gICAgZGVzY3JpcHRpb246IGAnYWRiIGJ1Z3JlcG9ydCcgb3V0cHV0IGZvciBhZHZhbmNlZCBpc3N1ZXMgZGlhZ25vc3RpY2AsXG4gICAgZ2V0dGVyOiBhc3luYyAoc2VsZikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgc2VsZi5hZGIuYnVncmVwb3J0KCk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIG91dHB1dC5zcGxpdChvcy5FT0wpXG4gICAgICAgIC5tYXAoKHgpID0+IHRvTG9nUmVjb3JkKHRpbWVzdGFtcCwgJ0FMTCcsIHgpKTtcbiAgICB9LFxuICB9LFxuICBzZXJ2ZXI6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0FwcGl1bSBzZXJ2ZXIgbG9ncycsXG4gICAgZ2V0dGVyOiAoc2VsZikgPT4ge1xuICAgICAgc2VsZi5lbnN1cmVGZWF0dXJlRW5hYmxlZChHRVRfU0VSVkVSX0xPR1NfRkVBVFVSRSk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIGxvZy51bndyYXAoKS5yZWNvcmRcbiAgICAgICAgLm1hcCgoeCkgPT4gdG9Mb2dSZWNvcmQodGltZXN0YW1wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQUxMJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5pc0VtcHR5KHgucHJlZml4KSA/IHgubWVzc2FnZSA6IGBbJHt4LnByZWZpeH1dICR7eC5tZXNzYWdlfWApXG4gICAgICAgICk7XG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogU3RhcnRzIEFuZHJvaWQgbG9nY2F0IGJyb2FkY2FzdCB3ZWJzb2NrZXQgb24gdGhlIHNhbWUgaG9zdCBhbmQgcG9ydFxuICogd2hlcmUgQXBwaXVtIHNlcnZlciBpcyBydW5uaW5nIGF0IGAvd3Mvc2Vzc2lvbi86c2Vzc2lvbklkOi9hcHBpdW0vbG9nY2F0YCBlbmRwb2ludC4gVGhlIG1ldGhvZFxuICogd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlIHdlYiBzb2NrZXQgaXMgYWxyZWFkeSBsaXN0ZW5pbmcuXG4gKlxuICogRWFjaCBjb25uZWN0ZWQgd2Vic29ja2V0IGxpc3RlbmVyIHdpbGwgcmVjZWl2ZSBsb2djYXQgbG9nIGxpbmVzXG4gKiBhcyBzb29uIGFzIHRoZXkgYXJlIHZpc2libGUgdG8gQXBwaXVtLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgKCkge1xuICBjb25zdCBwYXRobmFtZSA9IFdFQlNPQ0tFVF9FTkRQT0lOVCh0aGlzLnNlc3Npb25JZCk7XG4gIGlmICghXy5pc0VtcHR5KGF3YWl0IHRoaXMuc2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKHBhdGhuYW1lKSkpIHtcbiAgICBsb2cuZGVidWcoYFRoZSBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyIGlzIGFscmVhZHkgbGlzdGVuaW5nIGF0ICR7cGF0aG5hbWV9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nLmluZm8oYEFzc2lnbmluZyBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyIHRvICR7cGF0aG5hbWV9YCk7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJzb2NrZXRzL3dzL2Jsb2IvbWFzdGVyL2RvYy93cy5tZFxuICBjb25zdCB3c3MgPSBuZXcgV2ViU29ja2V0LlNlcnZlcih7XG4gICAgbm9TZXJ2ZXI6IHRydWUsXG4gIH0pO1xuICB3c3Mub24oJ2Nvbm5lY3Rpb24nLCAod3MsIHJlcSkgPT4ge1xuICAgIGlmIChyZXEpIHtcbiAgICAgIGNvbnN0IHJlbW90ZUlwID0gXy5pc0VtcHR5KHJlcS5oZWFkZXJzWyd4LWZvcndhcmRlZC1mb3InXSlcbiAgICAgICAgPyByZXEuY29ubmVjdGlvbj8ucmVtb3RlQWRkcmVzc1xuICAgICAgICA6IHJlcS5oZWFkZXJzWyd4LWZvcndhcmRlZC1mb3InXTtcbiAgICAgIGxvZy5kZWJ1ZyhgRXN0YWJsaXNoZWQgYSBuZXcgbG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgY29ubmVjdGlvbiBmcm9tICR7cmVtb3RlSXB9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kZWJ1ZygnRXN0YWJsaXNoZWQgYSBuZXcgbG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgY29ubmVjdGlvbicpO1xuICAgIH1cblxuICAgIGlmIChfLmlzRW1wdHkodGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIpKSB7XG4gICAgICB0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lciA9IChsb2dSZWNvcmQpID0+IHtcbiAgICAgICAgaWYgKHdzPy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgICAgIHdzLnNlbmQobG9nUmVjb3JkLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLmFkYi5zZXRMb2djYXRMaXN0ZW5lcih0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcik7XG5cbiAgICB3cy5vbignY2xvc2UnLCAoY29kZSwgcmVhc29uKSA9PiB7XG4gICAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcikpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLmFkYi5yZW1vdmVMb2djYXRMaXN0ZW5lcih0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcik7XG4gICAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICAgICAgdGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBsZXQgY2xvc2VNc2cgPSAnTG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgaXMgY2xvc2VkLic7XG4gICAgICBpZiAoIV8uaXNFbXB0eShjb2RlKSkge1xuICAgICAgICBjbG9zZU1zZyArPSBgIENvZGU6ICR7Y29kZX0uYDtcbiAgICAgIH1cbiAgICAgIGlmICghXy5pc0VtcHR5KHJlYXNvbikpIHtcbiAgICAgICAgY2xvc2VNc2cgKz0gYCBSZWFzb246ICR7cmVhc29uLnRvU3RyaW5nKCl9LmA7XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoY2xvc2VNc2cpO1xuICAgIH0pO1xuICB9KTtcbiAgYXdhaXQgdGhpcy5zZXJ2ZXIuYWRkV2ViU29ja2V0SGFuZGxlcihwYXRobmFtZSwgd3NzKTtcbn07XG5cbi8qKlxuICogU3RvcHMgdGhlIHByZXZpb3VzbHkgc3RhcnRlZCBsb2djYXQgYnJvYWRjYXN0aW5nIHdlc29ja2V0IHNlcnZlci5cbiAqIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIG5vIHNlcnZlciBpcyBydW5uaW5nLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0ICgpIHtcbiAgY29uc3QgcGF0aG5hbWUgPSBXRUJTT0NLRVRfRU5EUE9JTlQodGhpcy5zZXNzaW9uSWQpO1xuICBpZiAoXy5pc0VtcHR5KGF3YWl0IHRoaXMuc2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKHBhdGhuYW1lKSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRoZSBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyJyk7XG4gIGF3YWl0IHRoaXMuc2VydmVyLnJlbW92ZVdlYlNvY2tldEhhbmRsZXIocGF0aG5hbWUpO1xufTtcblxuY29tbWFuZHMuZ2V0TG9nVHlwZXMgPSBhc3luYyBmdW5jdGlvbiBnZXRMb2dUeXBlcyAoKSB7XG4gIGNvbnN0IG5hdGl2ZUxvZ1R5cGVzID0gYXdhaXQgQmFzZURyaXZlci5wcm90b3R5cGUuZ2V0TG9nVHlwZXMuY2FsbCh0aGlzKTtcbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBjb25zdCB3ZWJMb2dUeXBlcyA9IGF3YWl0IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZCgnL2xvZy90eXBlcycsICdHRVQnKTtcbiAgICByZXR1cm4gWy4uLm5hdGl2ZUxvZ1R5cGVzLCAuLi53ZWJMb2dUeXBlc107XG4gIH1cbiAgcmV0dXJuIG5hdGl2ZUxvZ1R5cGVzO1xufTtcblxuY29tbWFuZHMuZ2V0TG9nID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9nIChsb2dUeXBlKSB7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpICYmICFfLmtleXModGhpcy5zdXBwb3J0ZWRMb2dUeXBlcykuaW5jbHVkZXMobG9nVHlwZSkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5jb21tYW5kKCcvbG9nJywgJ1BPU1QnLCB7dHlwZTogbG9nVHlwZX0pO1xuICB9XG4gIHJldHVybiBhd2FpdCBCYXNlRHJpdmVyLnByb3RvdHlwZS5nZXRMb2cuY2FsbCh0aGlzLCBsb2dUeXBlKTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsdUJBQXVCLEdBQUcsaUJBQWhDO0FBRUEsSUFBSUMsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7OztBQUVBLE1BQU1DLGtCQUFrQixHQUFJQyxTQUFELElBQWdCLEdBQUVDLHNDQUEyQixZQUFXRCxTQUFVLHVCQUE3Rjs7QUFHQSxTQUFTRSxXQUFULENBQXNCQyxTQUF0QixFQUFpQ0MsS0FBakMsRUFBd0NDLE9BQXhDLEVBQWlEO0VBQy9DLE9BQU87SUFDTEYsU0FESztJQUVMQyxLQUZLO0lBR0xDO0VBSEssQ0FBUDtBQUtEOztBQUVEUCxVQUFVLENBQUNRLGlCQUFYLEdBQStCO0VBQzdCQyxNQUFNLEVBQUU7SUFDTkMsV0FBVyxFQUFFLG9FQURQO0lBRU5DLE1BQU0sRUFBRSxNQUFPQyxJQUFQLElBQWdCLE1BQU1BLElBQUksQ0FBQ0MsR0FBTCxDQUFTQyxhQUFUO0VBRnhCLENBRHFCO0VBSzdCQyxTQUFTLEVBQUU7SUFDVEwsV0FBVyxFQUFHLHVEQURMO0lBRVRDLE1BQU0sRUFBRSxNQUFPQyxJQUFQLElBQWdCO01BQ3RCLE1BQU1JLE1BQU0sR0FBRyxNQUFNSixJQUFJLENBQUNDLEdBQUwsQ0FBU0UsU0FBVCxFQUFyQjtNQUNBLE1BQU1WLFNBQVMsR0FBR1ksSUFBSSxDQUFDQyxHQUFMLEVBQWxCO01BQ0EsT0FBT0YsTUFBTSxDQUFDRyxLQUFQLENBQWFDLFlBQUdDLEdBQWhCLEVBQ0pDLEdBREksQ0FDQ0MsQ0FBRCxJQUFPbkIsV0FBVyxDQUFDQyxTQUFELEVBQVksS0FBWixFQUFtQmtCLENBQW5CLENBRGxCLENBQVA7SUFFRDtFQVBRLENBTGtCO0VBYzdCQyxNQUFNLEVBQUU7SUFDTmQsV0FBVyxFQUFFLG9CQURQO0lBRU5DLE1BQU0sRUFBR0MsSUFBRCxJQUFVO01BQ2hCQSxJQUFJLENBQUNhLG9CQUFMLENBQTBCNUIsdUJBQTFCO01BQ0EsTUFBTVEsU0FBUyxHQUFHWSxJQUFJLENBQUNDLEdBQUwsRUFBbEI7TUFDQSxPQUFPUSxnQkFBSUMsTUFBSixHQUFhQyxNQUFiLENBQ0pOLEdBREksQ0FDQ0MsQ0FBRCxJQUFPbkIsV0FBVyxDQUFDQyxTQUFELEVBQ0MsS0FERCxFQUVDd0IsZ0JBQUVDLE9BQUYsQ0FBVVAsQ0FBQyxDQUFDUSxNQUFaLElBQXNCUixDQUFDLENBQUNoQixPQUF4QixHQUFtQyxJQUFHZ0IsQ0FBQyxDQUFDUSxNQUFPLEtBQUlSLENBQUMsQ0FBQ2hCLE9BQVEsRUFGOUQsQ0FEbEIsQ0FBUDtJQUtEO0VBVks7QUFkcUIsQ0FBL0I7O0FBb0NBVCxRQUFRLENBQUNrQyx3QkFBVCxHQUFvQyxlQUFlQSx3QkFBZixHQUEyQztFQUM3RSxNQUFNQyxRQUFRLEdBQUdoQyxrQkFBa0IsQ0FBQyxLQUFLQyxTQUFOLENBQW5DOztFQUNBLElBQUksQ0FBQzJCLGdCQUFFQyxPQUFGLENBQVUsTUFBTSxLQUFLTixNQUFMLENBQVlVLG9CQUFaLENBQWlDRCxRQUFqQyxDQUFoQixDQUFMLEVBQWtFO0lBQ2hFUCxnQkFBSVMsS0FBSixDQUFXLHFFQUFvRUYsUUFBUyxFQUF4Rjs7SUFDQTtFQUNEOztFQUVEUCxnQkFBSVUsSUFBSixDQUFVLHNEQUFxREgsUUFBUyxFQUF4RTs7RUFFQSxNQUFNSSxHQUFHLEdBQUcsSUFBSUMsWUFBVUMsTUFBZCxDQUFxQjtJQUMvQkMsUUFBUSxFQUFFO0VBRHFCLENBQXJCLENBQVo7RUFHQUgsR0FBRyxDQUFDSSxFQUFKLENBQU8sWUFBUCxFQUFxQixDQUFDQyxFQUFELEVBQUtDLEdBQUwsS0FBYTtJQUNoQyxJQUFJQSxHQUFKLEVBQVM7TUFBQTs7TUFDUCxNQUFNQyxRQUFRLEdBQUdmLGdCQUFFQyxPQUFGLENBQVVhLEdBQUcsQ0FBQ0UsT0FBSixDQUFZLGlCQUFaLENBQVYsdUJBQ2JGLEdBQUcsQ0FBQ0csVUFEUyxvREFDYixnQkFBZ0JDLGFBREgsR0FFYkosR0FBRyxDQUFDRSxPQUFKLENBQVksaUJBQVosQ0FGSjs7TUFHQW5CLGdCQUFJUyxLQUFKLENBQVcsZ0VBQStEUyxRQUFTLEVBQW5GO0lBQ0QsQ0FMRCxNQUtPO01BQ0xsQixnQkFBSVMsS0FBSixDQUFVLHlEQUFWO0lBQ0Q7O0lBRUQsSUFBSU4sZ0JBQUVDLE9BQUYsQ0FBVSxLQUFLa0Isd0JBQWYsQ0FBSixFQUE4QztNQUM1QyxLQUFLQSx3QkFBTCxHQUFpQ0MsU0FBRCxJQUFlO1FBQzdDLElBQUksQ0FBQVAsRUFBRSxTQUFGLElBQUFBLEVBQUUsV0FBRixZQUFBQSxFQUFFLENBQUVRLFVBQUosTUFBbUJaLFlBQVVhLElBQWpDLEVBQXVDO1VBQ3JDVCxFQUFFLENBQUNVLElBQUgsQ0FBUUgsU0FBUyxDQUFDMUMsT0FBbEI7UUFDRDtNQUNGLENBSkQ7SUFLRDs7SUFDRCxLQUFLTSxHQUFMLENBQVN3QyxpQkFBVCxDQUEyQixLQUFLTCx3QkFBaEM7SUFFQU4sRUFBRSxDQUFDRCxFQUFILENBQU0sT0FBTixFQUFlLENBQUNhLElBQUQsRUFBT0MsTUFBUCxLQUFrQjtNQUMvQixJQUFJLENBQUMxQixnQkFBRUMsT0FBRixDQUFVLEtBQUtrQix3QkFBZixDQUFMLEVBQStDO1FBQzdDLElBQUk7VUFDRixLQUFLbkMsR0FBTCxDQUFTMkMsb0JBQVQsQ0FBOEIsS0FBS1Isd0JBQW5DO1FBQ0QsQ0FGRCxDQUVFLE9BQU9TLEdBQVAsRUFBWSxDQUFFOztRQUNoQixLQUFLVCx3QkFBTCxHQUFnQyxJQUFoQztNQUNEOztNQUVELElBQUlVLFFBQVEsR0FBRyx1Q0FBZjs7TUFDQSxJQUFJLENBQUM3QixnQkFBRUMsT0FBRixDQUFVd0IsSUFBVixDQUFMLEVBQXNCO1FBQ3BCSSxRQUFRLElBQUssVUFBU0osSUFBSyxHQUEzQjtNQUNEOztNQUNELElBQUksQ0FBQ3pCLGdCQUFFQyxPQUFGLENBQVV5QixNQUFWLENBQUwsRUFBd0I7UUFDdEJHLFFBQVEsSUFBSyxZQUFXSCxNQUFNLENBQUNJLFFBQVAsRUFBa0IsR0FBMUM7TUFDRDs7TUFDRGpDLGdCQUFJUyxLQUFKLENBQVV1QixRQUFWO0lBQ0QsQ0FoQkQ7RUFpQkQsQ0FwQ0Q7RUFxQ0EsTUFBTSxLQUFLbEMsTUFBTCxDQUFZb0MsbUJBQVosQ0FBZ0MzQixRQUFoQyxFQUEwQ0ksR0FBMUMsQ0FBTjtBQUNELENBbEREOztBQXdEQXZDLFFBQVEsQ0FBQytELHVCQUFULEdBQW1DLGVBQWVBLHVCQUFmLEdBQTBDO0VBQzNFLE1BQU01QixRQUFRLEdBQUdoQyxrQkFBa0IsQ0FBQyxLQUFLQyxTQUFOLENBQW5DOztFQUNBLElBQUkyQixnQkFBRUMsT0FBRixDQUFVLE1BQU0sS0FBS04sTUFBTCxDQUFZVSxvQkFBWixDQUFpQ0QsUUFBakMsQ0FBaEIsQ0FBSixFQUFpRTtJQUMvRDtFQUNEOztFQUVEUCxnQkFBSVMsS0FBSixDQUFVLG9EQUFWOztFQUNBLE1BQU0sS0FBS1gsTUFBTCxDQUFZc0Msc0JBQVosQ0FBbUM3QixRQUFuQyxDQUFOO0FBQ0QsQ0FSRDs7QUFVQW5DLFFBQVEsQ0FBQ2lFLFdBQVQsR0FBdUIsZUFBZUEsV0FBZixHQUE4QjtFQUNuRCxNQUFNQyxjQUFjLEdBQUcsTUFBTUMsdUJBQVdDLFNBQVgsQ0FBcUJILFdBQXJCLENBQWlDSSxJQUFqQyxDQUFzQyxJQUF0QyxDQUE3Qjs7RUFDQSxJQUFJLEtBQUtDLFlBQUwsRUFBSixFQUF5QjtJQUN2QixNQUFNQyxXQUFXLEdBQUcsTUFBTSxLQUFLQyxZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsT0FBMUIsQ0FBa0MsWUFBbEMsRUFBZ0QsS0FBaEQsQ0FBMUI7SUFDQSxPQUFPLENBQUMsR0FBR1IsY0FBSixFQUFvQixHQUFHSyxXQUF2QixDQUFQO0VBQ0Q7O0VBQ0QsT0FBT0wsY0FBUDtBQUNELENBUEQ7O0FBU0FsRSxRQUFRLENBQUMyRSxNQUFULEdBQWtCLGVBQWVBLE1BQWYsQ0FBdUJDLE9BQXZCLEVBQWdDO0VBQ2hELElBQUksS0FBS04sWUFBTCxNQUF1QixDQUFDdkMsZ0JBQUU4QyxJQUFGLENBQU8sS0FBS25FLGlCQUFaLEVBQStCb0UsUUFBL0IsQ0FBd0NGLE9BQXhDLENBQTVCLEVBQThFO0lBQzVFLE9BQU8sTUFBTSxLQUFLSixZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsT0FBMUIsQ0FBa0MsTUFBbEMsRUFBMEMsTUFBMUMsRUFBa0Q7TUFBQ0ssSUFBSSxFQUFFSDtJQUFQLENBQWxELENBQWI7RUFDRDs7RUFDRCxPQUFPLE1BQU1ULHVCQUFXQyxTQUFYLENBQXFCTyxNQUFyQixDQUE0Qk4sSUFBNUIsQ0FBaUMsSUFBakMsRUFBdUNPLE9BQXZDLENBQWI7QUFDRCxDQUxEOztBQU9BSSxNQUFNLENBQUNDLE1BQVAsQ0FBYy9FLFVBQWQsRUFBMEJGLFFBQTFCLEVBQW9DQyxPQUFwQztlQUVlQyxVIn0=
|
|
159
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2xvZy5qcyIsIm5hbWVzIjpbIkdFVF9TRVJWRVJfTE9HU19GRUFUVVJFIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsIldFQlNPQ0tFVF9FTkRQT0lOVCIsInNlc3Npb25JZCIsIkRFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIiwidG9Mb2dSZWNvcmQiLCJ0aW1lc3RhbXAiLCJsZXZlbCIsIm1lc3NhZ2UiLCJzdXBwb3J0ZWRMb2dUeXBlcyIsImxvZ2NhdCIsImRlc2NyaXB0aW9uIiwiZ2V0dGVyIiwic2VsZiIsImFkYiIsImdldExvZ2NhdExvZ3MiLCJidWdyZXBvcnQiLCJvdXRwdXQiLCJEYXRlIiwibm93Iiwic3BsaXQiLCJvcyIsIkVPTCIsIm1hcCIsIngiLCJzZXJ2ZXIiLCJlbnN1cmVGZWF0dXJlRW5hYmxlZCIsImxvZyIsInVud3JhcCIsInJlY29yZCIsIl8iLCJpc0VtcHR5IiwicHJlZml4IiwibW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0IiwicGF0aG5hbWUiLCJnZXRXZWJTb2NrZXRIYW5kbGVycyIsImRlYnVnIiwiaW5mbyIsIndzcyIsIldlYlNvY2tldCIsIlNlcnZlciIsIm5vU2VydmVyIiwib24iLCJ3cyIsInJlcSIsInJlbW90ZUlwIiwiaGVhZGVycyIsImNvbm5lY3Rpb24iLCJyZW1vdGVBZGRyZXNzIiwiX2xvZ2NhdFdlYnNvY2tldExpc3RlbmVyIiwibG9nUmVjb3JkIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwic2V0TG9nY2F0TGlzdGVuZXIiLCJjb2RlIiwicmVhc29uIiwicmVtb3ZlTG9nY2F0TGlzdGVuZXIiLCJpZ24iLCJjbG9zZU1zZyIsInRvU3RyaW5nIiwiYWRkV2ViU29ja2V0SGFuZGxlciIsIm1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0IiwicmVtb3ZlV2ViU29ja2V0SGFuZGxlciIsImdldExvZ1R5cGVzIiwibmF0aXZlTG9nVHlwZXMiLCJCYXNlRHJpdmVyIiwicHJvdG90eXBlIiwiY2FsbCIsImlzV2ViQ29udGV4dCIsIndlYkxvZ1R5cGVzIiwiY2hyb21lZHJpdmVyIiwiandwcm94eSIsImNvbW1hbmQiLCJnZXRMb2ciLCJsb2dUeXBlIiwia2V5cyIsImluY2x1ZGVzIiwidHlwZSIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9sb2cuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgV2ViU29ja2V0IGZyb20gJ3dzJztcbmltcG9ydCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYLCBCYXNlRHJpdmVyIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cbmNvbnN0IEdFVF9TRVJWRVJfTE9HU19GRUFUVVJFID0gJ2dldF9zZXJ2ZXJfbG9ncyc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29uc3QgV0VCU09DS0VUX0VORFBPSU5UID0gKHNlc3Npb25JZCkgPT4gYCR7REVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVh9L3Nlc3Npb24vJHtzZXNzaW9uSWR9L2FwcGl1bS9kZXZpY2UvbG9nY2F0YDtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL1NlbGVuaXVtSFEvc2VsZW5pdW0vYmxvYi8wZDQyNTY3NmIzYzlkZjI2MWRkNjQxOTE3Zjg2N2Q0ZDVjZTc3NzRkL2phdmEvY2xpZW50L3NyYy9vcmcvb3BlbnFhL3NlbGVuaXVtL2xvZ2dpbmcvTG9nRW50cnkuamF2YVxuZnVuY3Rpb24gdG9Mb2dSZWNvcmQgKHRpbWVzdGFtcCwgbGV2ZWwsIG1lc3NhZ2UpIHtcbiAgcmV0dXJuIHtcbiAgICB0aW1lc3RhbXAsXG4gICAgbGV2ZWwsXG4gICAgbWVzc2FnZSxcbiAgfTtcbn1cblxuZXh0ZW5zaW9ucy5zdXBwb3J0ZWRMb2dUeXBlcyA9IHtcbiAgbG9nY2F0OiB7XG4gICAgZGVzY3JpcHRpb246ICdMb2dzIGZvciBBbmRyb2lkIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZSBhbmQgZW11bGF0b3JzIHZpYSBBREInLFxuICAgIGdldHRlcjogYXN5bmMgKHNlbGYpID0+IGF3YWl0IHNlbGYuYWRiLmdldExvZ2NhdExvZ3MoKSxcbiAgfSxcbiAgYnVncmVwb3J0OiB7XG4gICAgZGVzY3JpcHRpb246IGAnYWRiIGJ1Z3JlcG9ydCcgb3V0cHV0IGZvciBhZHZhbmNlZCBpc3N1ZXMgZGlhZ25vc3RpY2AsXG4gICAgZ2V0dGVyOiBhc3luYyAoc2VsZikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgc2VsZi5hZGIuYnVncmVwb3J0KCk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIG91dHB1dC5zcGxpdChvcy5FT0wpXG4gICAgICAgIC5tYXAoKHgpID0+IHRvTG9nUmVjb3JkKHRpbWVzdGFtcCwgJ0FMTCcsIHgpKTtcbiAgICB9LFxuICB9LFxuICBzZXJ2ZXI6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0FwcGl1bSBzZXJ2ZXIgbG9ncycsXG4gICAgZ2V0dGVyOiAoc2VsZikgPT4ge1xuICAgICAgc2VsZi5lbnN1cmVGZWF0dXJlRW5hYmxlZChHRVRfU0VSVkVSX0xPR1NfRkVBVFVSRSk7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgcmV0dXJuIGxvZy51bndyYXAoKS5yZWNvcmRcbiAgICAgICAgLm1hcCgoeCkgPT4gdG9Mb2dSZWNvcmQodGltZXN0YW1wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQUxMJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5pc0VtcHR5KHgucHJlZml4KSA/IHgubWVzc2FnZSA6IGBbJHt4LnByZWZpeH1dICR7eC5tZXNzYWdlfWApXG4gICAgICAgICk7XG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogU3RhcnRzIEFuZHJvaWQgbG9nY2F0IGJyb2FkY2FzdCB3ZWJzb2NrZXQgb24gdGhlIHNhbWUgaG9zdCBhbmQgcG9ydFxuICogd2hlcmUgQXBwaXVtIHNlcnZlciBpcyBydW5uaW5nIGF0IGAvd3Mvc2Vzc2lvbi86c2Vzc2lvbklkOi9hcHBpdW0vbG9nY2F0YCBlbmRwb2ludC4gVGhlIG1ldGhvZFxuICogd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlIHdlYiBzb2NrZXQgaXMgYWxyZWFkeSBsaXN0ZW5pbmcuXG4gKlxuICogRWFjaCBjb25uZWN0ZWQgd2Vic29ja2V0IGxpc3RlbmVyIHdpbGwgcmVjZWl2ZSBsb2djYXQgbG9nIGxpbmVzXG4gKiBhcyBzb29uIGFzIHRoZXkgYXJlIHZpc2libGUgdG8gQXBwaXVtLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QgKCkge1xuICBjb25zdCBwYXRobmFtZSA9IFdFQlNPQ0tFVF9FTkRQT0lOVCh0aGlzLnNlc3Npb25JZCk7XG4gIGlmICghXy5pc0VtcHR5KGF3YWl0IHRoaXMuc2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKHBhdGhuYW1lKSkpIHtcbiAgICBsb2cuZGVidWcoYFRoZSBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyIGlzIGFscmVhZHkgbGlzdGVuaW5nIGF0ICR7cGF0aG5hbWV9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nLmluZm8oYEFzc2lnbmluZyBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyIHRvICR7cGF0aG5hbWV9YCk7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJzb2NrZXRzL3dzL2Jsb2IvbWFzdGVyL2RvYy93cy5tZFxuICBjb25zdCB3c3MgPSBuZXcgV2ViU29ja2V0LlNlcnZlcih7XG4gICAgbm9TZXJ2ZXI6IHRydWUsXG4gIH0pO1xuICB3c3Mub24oJ2Nvbm5lY3Rpb24nLCAod3MsIHJlcSkgPT4ge1xuICAgIGlmIChyZXEpIHtcbiAgICAgIGNvbnN0IHJlbW90ZUlwID0gXy5pc0VtcHR5KHJlcS5oZWFkZXJzWyd4LWZvcndhcmRlZC1mb3InXSlcbiAgICAgICAgPyByZXEuY29ubmVjdGlvbj8ucmVtb3RlQWRkcmVzc1xuICAgICAgICA6IHJlcS5oZWFkZXJzWyd4LWZvcndhcmRlZC1mb3InXTtcbiAgICAgIGxvZy5kZWJ1ZyhgRXN0YWJsaXNoZWQgYSBuZXcgbG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgY29ubmVjdGlvbiBmcm9tICR7cmVtb3RlSXB9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kZWJ1ZygnRXN0YWJsaXNoZWQgYSBuZXcgbG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgY29ubmVjdGlvbicpO1xuICAgIH1cblxuICAgIGlmIChfLmlzRW1wdHkodGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIpKSB7XG4gICAgICB0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lciA9IChsb2dSZWNvcmQpID0+IHtcbiAgICAgICAgaWYgKHdzPy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgICAgIHdzLnNlbmQobG9nUmVjb3JkLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLmFkYi5zZXRMb2djYXRMaXN0ZW5lcih0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcik7XG5cbiAgICB3cy5vbignY2xvc2UnLCAoY29kZSwgcmVhc29uKSA9PiB7XG4gICAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcikpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLmFkYi5yZW1vdmVMb2djYXRMaXN0ZW5lcih0aGlzLl9sb2djYXRXZWJzb2NrZXRMaXN0ZW5lcik7XG4gICAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICAgICAgdGhpcy5fbG9nY2F0V2Vic29ja2V0TGlzdGVuZXIgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBsZXQgY2xvc2VNc2cgPSAnTG9nY2F0IGxpc3RlbmVyIHdlYiBzb2NrZXQgaXMgY2xvc2VkLic7XG4gICAgICBpZiAoIV8uaXNFbXB0eShjb2RlKSkge1xuICAgICAgICBjbG9zZU1zZyArPSBgIENvZGU6ICR7Y29kZX0uYDtcbiAgICAgIH1cbiAgICAgIGlmICghXy5pc0VtcHR5KHJlYXNvbikpIHtcbiAgICAgICAgY2xvc2VNc2cgKz0gYCBSZWFzb246ICR7cmVhc29uLnRvU3RyaW5nKCl9LmA7XG4gICAgICB9XG4gICAgICBsb2cuZGVidWcoY2xvc2VNc2cpO1xuICAgIH0pO1xuICB9KTtcbiAgYXdhaXQgdGhpcy5zZXJ2ZXIuYWRkV2ViU29ja2V0SGFuZGxlcihwYXRobmFtZSwgd3NzKTtcbn07XG5cbi8qKlxuICogU3RvcHMgdGhlIHByZXZpb3VzbHkgc3RhcnRlZCBsb2djYXQgYnJvYWRjYXN0aW5nIHdlc29ja2V0IHNlcnZlci5cbiAqIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIG5vIHNlcnZlciBpcyBydW5uaW5nLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0b3BMb2dzQnJvYWRjYXN0ICgpIHtcbiAgY29uc3QgcGF0aG5hbWUgPSBXRUJTT0NLRVRfRU5EUE9JTlQodGhpcy5zZXNzaW9uSWQpO1xuICBpZiAoXy5pc0VtcHR5KGF3YWl0IHRoaXMuc2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKHBhdGhuYW1lKSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRoZSBsb2djYXQgYnJvYWRjYXN0aW5nIHdlYiBzb2NrZXQgc2VydmVyJyk7XG4gIGF3YWl0IHRoaXMuc2VydmVyLnJlbW92ZVdlYlNvY2tldEhhbmRsZXIocGF0aG5hbWUpO1xufTtcblxuY29tbWFuZHMuZ2V0TG9nVHlwZXMgPSBhc3luYyBmdW5jdGlvbiBnZXRMb2dUeXBlcyAoKSB7XG4gIGNvbnN0IG5hdGl2ZUxvZ1R5cGVzID0gYXdhaXQgQmFzZURyaXZlci5wcm90b3R5cGUuZ2V0TG9nVHlwZXMuY2FsbCh0aGlzKTtcbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBjb25zdCB3ZWJMb2dUeXBlcyA9IGF3YWl0IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZCgnL2xvZy90eXBlcycsICdHRVQnKTtcbiAgICByZXR1cm4gWy4uLm5hdGl2ZUxvZ1R5cGVzLCAuLi53ZWJMb2dUeXBlc107XG4gIH1cbiAgcmV0dXJuIG5hdGl2ZUxvZ1R5cGVzO1xufTtcblxuY29tbWFuZHMuZ2V0TG9nID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9nIChsb2dUeXBlKSB7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpICYmICFfLmtleXModGhpcy5zdXBwb3J0ZWRMb2dUeXBlcykuaW5jbHVkZXMobG9nVHlwZSkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5jb21tYW5kKCcvbG9nJywgJ1BPU1QnLCB7dHlwZTogbG9nVHlwZX0pO1xuICB9XG4gIHJldHVybiBhd2FpdCBCYXNlRHJpdmVyLnByb3RvdHlwZS5nZXRMb2cuY2FsbCh0aGlzLCBsb2dUeXBlKTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsdUJBQXVCLEdBQUcsaUJBQWhDO0FBRUEsSUFBSUMsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxH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
|
|
@@ -256,4 +256,4 @@ var _default = extensions;
|
|
|
256
256
|
exports.default = _default;require('source-map-support').install();
|
|
257
257
|
|
|
258
258
|
|
|
259
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL25ldHdvcmsuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiQUlSUExBTkVfTU9ERV9NQVNLIiwiV0lGSV9NQVNLIiwiREFUQV9NQVNLIiwiR0VPX0VQU0lMT04iLCJOdW1iZXIiLCJNSU5fVkFMVUUiLCJnZXROZXR3b3JrQ29ubmVjdGlvbiIsImxvZyIsImluZm8iLCJhaXJwbGFuZU1vZGVPbiIsImFkYiIsImlzQWlycGxhbmVNb2RlT24iLCJjb25uZWN0aW9uIiwid2lmaU9uIiwiaXNXaWZpT24iLCJkYXRhT24iLCJpc0RhdGFPbiIsInNldE5ldHdvcmtDb25uZWN0aW9uIiwidHlwZSIsInNob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSIsInNob3VsZEVuYWJsZVdpZmkiLCJzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiIsImN1cnJlbnRTdGF0ZSIsImlzQWlycGxhbmVNb2RlRW5hYmxlZCIsImlzV2lGaUVuYWJsZWQiLCJpc0RhdGFFbmFibGVkIiwid3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QiLCJzZXRBaXJwbGFuZU1vZGUiLCJicm9hZGNhc3RBaXJwbGFuZU1vZGUiLCJzZXRXaWZpU3RhdGUiLCJzZXREYXRhU3RhdGUiLCJpc0VtdWxhdG9yIiwid2lmaSIsInRvZ2dsZURhdGEiLCJkYXRhIiwic2V0V2lmaUFuZERhdGEiLCJ0b2dnbGVXaUZpIiwidG9nZ2xlRmxpZ2h0TW9kZSIsImZsaWdodE1vZGUiLCJzZXRHZW9Mb2NhdGlvbiIsImxvY2F0aW9uIiwiZ2V0R2VvTG9jYXRpb24iLCJlIiwid2FybiIsIm1lc3NhZ2UiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsImFsdGl0dWRlIiwibW9iaWxlUmVmcmVzaEdwc0NhY2hlIiwib3B0cyIsInRpbWVvdXRNcyIsInJlZnJlc2hHZW9Mb2NhdGlvbkNhY2hlIiwicGFyc2VGbG9hdCIsIktleUNvZGUiLCJVUCIsIkRPV04iLCJSSUdIVCIsIkNFTlRFUiIsInRvZ2dsZUxvY2F0aW9uU2VydmljZXMiLCJhcGkiLCJnZXRBcGlMZXZlbCIsInByb3ZpZGVycyIsImdldExvY2F0aW9uUHJvdmlkZXJzIiwiaXNHcHNFbmFibGVkIiwiaW5kZXhPZiIsInRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIiLCJzZXEiLCJwdXNoIiwia2V5ZXZlbnQiLCJ0b2dnbGVTZXR0aW5nIiwiZXJyb3JzIiwiTm90WWV0SW1wbGVtZW50ZWRFcnJvciIsInNldHRpbmciLCJwcmVLZXlTZXEiLCJfIiwiaXNOdWxsIiwib3BlblNldHRpbmdzQWN0aXZpdHkiLCJrZXkiLCJkb0tleSIsImFwcFBhY2thZ2UiLCJhcHBBY3Rpdml0eSIsImdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkiLCJ3YWl0Rm9yTm90QWN0aXZpdHkiLCJpZ24iLCJiYWNrIiwiQiIsImRlbGF5Iiwid3JhcHBlZCIsImJvb3RzdHJhcCIsImlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biIsInJlc3RhcnQiLCJzdGFydCIsImRpc2FibGVBbmRyb2lkV2F0Y2hlcnMiLCJhY2NlcHRTc2xDZXJ0cyIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9uZXR3b3JrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb25zdCBBSVJQTEFORV9NT0RFX01BU0sgPSAwYjAwMTtcbmNvbnN0IFdJRklfTUFTSyA9IDBiMDEwO1xuY29uc3QgREFUQV9NQVNLID0gMGIxMDA7XG4vLyBUaGUgdmFsdWUgY2xvc2UgdG8gemVybywgYnV0IG5vdCB6ZXJvLCBpcyBuZWVkZWRcbi8vIHRvIHRyaWNrIEpTT04gZ2VuZXJhdGlvbiBhbmQgc2VuZCBhIGZsb2F0IHZhbHVlIGluc3RlYWQgb2YgYW4gaW50ZWdlcixcbi8vIFRoaXMgYWxsb3dzIHN0cmljdGx5LXR5cGVkIGNsaWVudHMsIGxpa2UgSmF2YSwgdG8gcHJvcGVybHlcbi8vIHBhcnNlIGl0LiBPdGhlcndpc2UgZmxvYXQgMC4wIGlzIGFsd2F5cyByZXByZXNlbnRlZCBhcyBpbnRlZ2VyIDAgaW4gSlMuXG4vLyBUaGUgdmFsdWUgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIERCTF9FUFNJTE9OIChodHRwczovL29wZW5zb3VyY2UuYXBwbGUuY29tL3NvdXJjZS9MaWJjL0xpYmMtNDk4L2luY2x1ZGUvZmxvYXQuaClcbmNvbnN0IEdFT19FUFNJTE9OID0gTnVtYmVyLk1JTl9WQUxVRTtcblxuY29tbWFuZHMuZ2V0TmV0d29ya0Nvbm5lY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBnZXROZXR3b3JrQ29ubmVjdGlvbiAoKSB7XG4gIHRoaXMubG9nLmluZm8oJ0dldHRpbmcgbmV0d29yayBjb25uZWN0aW9uJyk7XG4gIGxldCBhaXJwbGFuZU1vZGVPbiA9IGF3YWl0IHRoaXMuYWRiLmlzQWlycGxhbmVNb2RlT24oKTtcbiAgbGV0IGNvbm5lY3Rpb24gPSBhaXJwbGFuZU1vZGVPbiA/IEFJUlBMQU5FX01PREVfTUFTSyA6IDA7XG5cbiAgLy8gbm8gbmVlZCB0byBjaGVjayBhbnl0aGluZyBlbHNlIGlmIHdlIGFyZSBpbiBhaXJwbGFuZSBtb2RlXG4gIGlmICghYWlycGxhbmVNb2RlT24pIHtcbiAgICBsZXQgd2lmaU9uID0gYXdhaXQgdGhpcy5pc1dpZmlPbigpO1xuICAgIGNvbm5lY3Rpb24gfD0gKHdpZmlPbiA/IFdJRklfTUFTSyA6IDApO1xuICAgIGxldCBkYXRhT24gPSBhd2FpdCB0aGlzLmFkYi5pc0RhdGFPbigpO1xuICAgIGNvbm5lY3Rpb24gfD0gKGRhdGFPbiA/IERBVEFfTUFTSyA6IDApO1xuICB9XG5cbiAgcmV0dXJuIGNvbm5lY3Rpb247XG59O1xuXG4vKipcbiAqIGRlY291cGxpbmcgdG8gb3ZlcnJpZGUgdGhlIGJlaGF2aW91ciBpbiBvdGhlciBkcml2ZXJzIGxpa2UgVWlBdXRvbWF0b3IyLlxuICovXG5jb21tYW5kcy5pc1dpZmlPbiA9IGFzeW5jIGZ1bmN0aW9uIGlzV2lmaU9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmlzV2lmaU9uKCk7XG59O1xuXG5jb21tYW5kcy5zZXROZXR3b3JrQ29ubmVjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHNldE5ldHdvcmtDb25uZWN0aW9uICh0eXBlKSB7XG4gIHRoaXMubG9nLmluZm8oJ1NldHRpbmcgbmV0d29yayBjb25uZWN0aW9uJyk7XG4gIC8vIGRlY29kZSB0aGUgaW5wdXRcbiAgY29uc3Qgc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlID0gKHR5cGUgJiBBSVJQTEFORV9NT0RFX01BU0spICE9PSAwO1xuICBjb25zdCBzaG91bGRFbmFibGVXaWZpID0gKHR5cGUgJiBXSUZJX01BU0spICE9PSAwO1xuICBjb25zdCBzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiA9ICh0eXBlICYgREFUQV9NQVNLKSAhPT0gMDtcblxuICBjb25zdCBjdXJyZW50U3RhdGUgPSBhd2FpdCB0aGlzLmdldE5ldHdvcmtDb25uZWN0aW9uKCk7XG4gIGNvbnN0IGlzQWlycGxhbmVNb2RlRW5hYmxlZCA9IChjdXJyZW50U3RhdGUgJiBBSVJQTEFORV9NT0RFX01BU0spICE9PSAwO1xuICBjb25zdCBpc1dpRmlFbmFibGVkID0gKGN1cnJlbnRTdGF0ZSAmIFdJRklfTUFTSykgIT09IDA7XG4gIGNvbnN0IGlzRGF0YUVuYWJsZWQgPSAoY3VycmVudFN0YXRlICYgREFUQV9NQVNLKSAhPT0gMDtcblxuICBpZiAoc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlICE9PSBpc0FpcnBsYW5lTW9kZUVuYWJsZWQpIHtcbiAgICBhd2FpdCB0aGlzLndyYXBCb290c3RyYXBEaXNjb25uZWN0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEFpcnBsYW5lTW9kZShzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUpO1xuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0QWlycGxhbmVNb2RlKHNob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgTm90IGNoYW5naW5nIGFpcnBsYW5lIG1vZGUsIHNpbmNlIGl0IGlzIGFscmVhZHkgYCArXG4gICAgICAgICAgICAgYCR7c2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJ31gKTtcbiAgfVxuXG4gIGlmIChzaG91bGRFbmFibGVXaWZpID09PSBpc1dpRmlFbmFibGVkICYmIHNob3VsZEVuYWJsZURhdGFDb25uZWN0aW9uID09PSBpc0RhdGFFbmFibGVkKSB7XG4gICAgdGhpcy5sb2cuaW5mbygnTm90IGNoYW5naW5nIGRhdGEgY29ubmVjdGlvbi9XaS1GaSBzdGF0ZXMsIHNpbmNlIHRoZXkgYXJlIGFscmVhZHkgc2V0IHRvIGV4cGVjdGVkIHZhbHVlcycpO1xuICAgIGlmIChhd2FpdCB0aGlzLmFkYi5pc0FpcnBsYW5lTW9kZU9uKCkpIHtcbiAgICAgIHJldHVybiBBSVJQTEFORV9NT0RFX01BU0sgfCBjdXJyZW50U3RhdGU7XG4gICAgfVxuICAgIHJldHVybiB+QUlSUExBTkVfTU9ERV9NQVNLICYgY3VycmVudFN0YXRlO1xuICB9XG5cbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgaWYgKHNob3VsZEVuYWJsZVdpZmkgIT09IGlzV2lGaUVuYWJsZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0V2lmaVN0YXRlKHNob3VsZEVuYWJsZVdpZmkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBOb3QgY2hhbmdpbmcgV2ktRmkgc3RhdGUsIHNpbmNlIGl0IGlzIGFscmVhZHkgYCArXG4gICAgICAgIGAke3Nob3VsZEVuYWJsZVdpZmkgPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ05vdCBjaGFuZ2luZyBkYXRhIGNvbm5lY3Rpb24gc3RhdGUsIGJlY2F1c2UgYWlycGxhbmUgbW9kZSBpcyBlbmFibGVkJyk7XG4gICAgfSBlbHNlIGlmIChzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiA9PT0gaXNEYXRhRW5hYmxlZCkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgTm90IGNoYW5naW5nIGRhdGEgY29ubmVjdGlvbiBzdGF0ZSwgc2luY2UgaXQgaXMgYWxyZWFkeSBgICtcbiAgICAgICAgYCR7c2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24gPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zZXREYXRhU3RhdGUoc2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24sIHRoaXMuaXNFbXVsYXRvcigpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBhd2FpdCB0aGlzLmdldE5ldHdvcmtDb25uZWN0aW9uKCk7XG59O1xuXG4vKipcbiAqIGRlY291cGxpbmcgdG8gb3ZlcnJpZGUgYmVoYXZpb3VyIGluIG90aGVyIGRyaXZlcnMgbGlrZSBVaUF1dG9tYXRvcjIuXG4gKi9cbmNvbW1hbmRzLnNldFdpZmlTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHNldFdpZmlTdGF0ZSAod2lmaSkge1xuICBhd2FpdCB0aGlzLmFkYi5zZXRXaWZpU3RhdGUod2lmaSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xufTtcblxuY29tbWFuZHMudG9nZ2xlRGF0YSA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZURhdGEgKCkge1xuICBsZXQgZGF0YSA9ICEoYXdhaXQgdGhpcy5hZGIuaXNEYXRhT24oKSk7XG4gIHRoaXMubG9nLmluZm8oYFR1cm5pbmcgbmV0d29yayBkYXRhICR7ZGF0YSA/ICdvbicgOiAnb2ZmJ31gKTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2V0V2lmaUFuZERhdGEoe2RhdGF9LCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gIH0pO1xufTtcblxuY29tbWFuZHMudG9nZ2xlV2lGaSA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZVdpRmkgKCkge1xuICBsZXQgd2lmaSA9ICEoYXdhaXQgdGhpcy5hZGIuaXNXaWZpT24oKSk7XG4gIHRoaXMubG9nLmluZm8oYFR1cm5pbmcgV2lGaSAke3dpZmkgPyAnb24nIDogJ29mZid9YCk7XG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuYWRiLnNldFdpZmlBbmREYXRhKHt3aWZpfSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnRvZ2dsZUZsaWdodE1vZGUgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVGbGlnaHRNb2RlICgpIHtcbiAgLypcbiAgICogVE9ETzogSW1wbGVtZW50IGlzUmVhbERldmljZSgpLiBUaGlzIG1ldGhvZCBmYWlscyBvblxuICAgKiByZWFsIGRldmljZXMsIGl0IHNob3VsZCB0aHJvdyBhIE5vdFlldEltcGxlbWVudGVkRXJyb3JcbiAgICovXG4gIGxldCBmbGlnaHRNb2RlID0gIShhd2FpdCB0aGlzLmFkYi5pc0FpcnBsYW5lTW9kZU9uKCkpO1xuICB0aGlzLmxvZy5pbmZvKGBUdXJuaW5nIGZsaWdodCBtb2RlICR7ZmxpZ2h0TW9kZSA/ICdvbicgOiAnb2ZmJ31gKTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2V0QWlycGxhbmVNb2RlKGZsaWdodE1vZGUpO1xuICB9KTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0QWlycGxhbmVNb2RlKGZsaWdodE1vZGUpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnNldEdlb0xvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0R2VvTG9jYXRpb24gKGxvY2F0aW9uKSB7XG4gIGF3YWl0IHRoaXMuYWRiLnNldEdlb0xvY2F0aW9uKGxvY2F0aW9uLCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0R2VvTG9jYXRpb24oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRoaXMubG9nLndhcm4oYENvdWxkIG5vdCBnZXQgdGhlIGN1cnJlbnQgZ2VvbG9jYXRpb24gaW5mbzogJHtlLm1lc3NhZ2V9YCk7XG4gICAgdGhpcy5sb2cud2FybihgUmV0dXJuaW5nIHRoZSBkZWZhdWx0IHplcm8nZWQgdmFsdWVzYCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhdGl0dWRlOiBHRU9fRVBTSUxPTixcbiAgICAgIGxvbmdpdHVkZTogR0VPX0VQU0lMT04sXG4gICAgICBhbHRpdHVkZTogR0VPX0VQU0lMT04sXG4gICAgfTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBHcHNDYWNoZVJlZnJlc2hPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZW91dE1zIFsyMDAwMF0gVGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kc1xuICogdG8gYmxvY2sgdW50aWwgR1BTIGNhY2hlIGlzIHJlZnJlc2hlZC4gUHJvdmlkaW5nIHplcm8gb3IgYSBuZWdhdGl2ZVxuICogdmFsdWUgdG8gaXQgc2tpcHMgd2FpdGluZyBjb21wbGV0ZWx5LlxuICovXG5cbi8qKlxuICogU2VuZHMgYW4gYXN5bmMgcmVxdWVzdCB0byByZWZyZXNoIHRoZSBHUFMgY2FjaGUuXG4gKiBUaGlzIGZlYXR1cmUgb25seSB3b3JrcyBpZiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QgaGFzXG4gKiBHb29nbGUgUGxheSBTZXJ2aWNlcyBpbnN0YWxsZWQuIEluIGNhc2UgdGhlIHZhbmlsbGFcbiAqIExvY2F0aW9uTWFuYWdlciBpcyB1c2VkIHRoZSBkZXZpY2UgQVBJIGxldmVsIG11c3QgYmUgYXRcbiAqIHZlcnNpb24gMzAgKEFuZHJvaWQgUikgb3IgaGlnaGVyLlxuICpcbiAqIEBwYXJhbSB7R3BzQ2FjaGVSZWZyZXNoT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tb2JpbGVSZWZyZXNoR3BzQ2FjaGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVSZWZyZXNoR3BzQ2FjaGUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7IHRpbWVvdXRNcyB9ID0gb3B0cztcbiAgYXdhaXQgdGhpcy5hZGIucmVmcmVzaEdlb0xvY2F0aW9uQ2FjaGUodGltZW91dE1zKTtcbn07XG5cbmNvbW1hbmRzLmdldEdlb0xvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gZ2V0R2VvTG9jYXRpb24gKCkge1xuICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWx0aXR1ZGV9ID0gYXdhaXQgdGhpcy5hZGIuZ2V0R2VvTG9jYXRpb24oKTtcbiAgcmV0dXJuIHtcbiAgICBsYXRpdHVkZTogcGFyc2VGbG9hdChsYXRpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gICAgbG9uZ2l0dWRlOiBwYXJzZUZsb2F0KGxvbmdpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gICAgYWx0aXR1ZGU6IHBhcnNlRmxvYXQoYWx0aXR1ZGUpIHx8IEdFT19FUFNJTE9OLFxuICB9O1xufTtcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3JlZmVyZW5jZS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQuaHRtbCNLRVlDT0RFX0RQQURfQ0VOVEVSXG4vLyBpbiB0aGUgYW5kcm9pZCBkb2NzLCB0aGlzIGlzIGhvdyB0aGUga2V5Y29kZXMgYXJlIGRlZmluZWRcbmNvbnN0IEtleUNvZGUgPSB7XG4gIFVQOiAxOSxcbiAgRE9XTjogMjAsXG4gIFJJR0hUOiAyMixcbiAgQ0VOVEVSOiAyM1xufTtcbmNvbW1hbmRzLnRvZ2dsZUxvY2F0aW9uU2VydmljZXMgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVMb2NhdGlvblNlcnZpY2VzICgpIHtcbiAgdGhpcy5sb2cuaW5mbygnVG9nZ2xpbmcgbG9jYXRpb24gc2VydmljZXMnKTtcbiAgbGV0IGFwaSA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gIGlmICh0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIGxldCBwcm92aWRlcnMgPSBhd2FpdCB0aGlzLmFkYi5nZXRMb2NhdGlvblByb3ZpZGVycygpO1xuICAgIGxldCBpc0dwc0VuYWJsZWQgPSBwcm92aWRlcnMuaW5kZXhPZignZ3BzJykgIT09IC0xO1xuICAgIGF3YWl0IHRoaXMuYWRiLnRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIoIWlzR3BzRW5hYmxlZCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGFwaSA+IDE1KSB7XG4gICAgbGV0IHNlcSA9IFtLZXlDb2RlLlVQLCBLZXlDb2RlLlVQXTtcbiAgICBpZiAoYXBpID09PSAxNikge1xuICAgICAgLy8gVGhpcyB2ZXJzaW9uIG9mIEFuZHJvaWQgaGFzIGEgXCJwYXJlbnRcIiBidXR0b24gaW4gaXRzIGFjdGlvbiBiYXJcbiAgICAgIHNlcS5wdXNoKEtleUNvZGUuRE9XTik7XG4gICAgfSBlbHNlIGlmIChhcGkgPCAyOCkge1xuICAgICAgLy8gTmV3ZXIgdmVyc2lvbnMgb2YgQW5kcm9pZCBoYXZlIHRoZSB0b2dnbGUgaW4gdGhlIEFjdGlvbiBiYXJcbiAgICAgIHNlcSA9IFtLZXlDb2RlLlJJR0hULCBLZXlDb2RlLlJJR0hULCBLZXlDb2RlLlVQXTtcbiAgICAgIC8qXG4gICAgICAgKiBPbmNlIHRoZSBMb2NhdGlvbiBzZXJ2aWNlcyBzd2l0Y2ggaXMgT0ZGLCBpdCB3b24ndCByZWNlaXZlIGZvY3VzXG4gICAgICAgKiB3aGVuIGdvaW5nIGJhY2sgdG8gdGhlIExvY2F0aW9uIFNlcnZpY2VzIHNldHRpbmdzIHNjcmVlbiB1bmxlc3Mgd2VcbiAgICAgICAqIHNlbmQgYSBkdW1teSBrZXlldmVudCAoVVApICpiZWZvcmUqIG9wZW5pbmcgdGhlIHNldHRpbmdzIHNjcmVlblxuICAgICAgICovXG4gICAgICBhd2FpdCB0aGlzLmFkYi5rZXlldmVudChLZXlDb2RlLlVQKTtcbiAgICB9IGVsc2UgaWYgKGFwaSA+PSAyOCkge1xuICAgICAgLy8gRXZlbiBuZXdlciB2ZXJzaW9ucyBvZiBhbmRyb2lkIGhhdmUgdGhlIHRvZ2dsZSBpbiBhIGJhciBiZWxvdyB0aGUgYWN0aW9uIGJhclxuICAgICAgLy8gdGhpcyBtZWFucyBhIHNpbmdsZSByaWdodCBjbGljayB3aWxsIGNhdXNlIGl0IHRvIGJlIHNlbGVjdGVkLlxuICAgICAgc2VxID0gW0tleUNvZGUuUklHSFRdO1xuICAgICAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoS2V5Q29kZS5VUCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudG9nZ2xlU2V0dGluZygnTE9DQVRJT05fU09VUkNFX1NFVFRJTkdTJywgc2VxKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGVyZSdzIG5vIGdsb2JhbCBsb2NhdGlvbiBzZXJ2aWNlcyB0b2dnbGUgb24gb2xkZXIgQW5kcm9pZCB2ZXJzaW9uc1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90WWV0SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG59O1xuXG5oZWxwZXJzLnRvZ2dsZVNldHRpbmcgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVTZXR0aW5nIChzZXR0aW5nLCBwcmVLZXlTZXEpIHtcbiAgLypcbiAgICogcHJlS2V5U2VxIGlzIHRoZSBrZXlldmVudCBzZXF1ZW5jZSB0byBzZW5kIG92ZXIgQURCIGluIG9yZGVyXG4gICAqIHRvIHBvc2l0aW9uIHRoZSBjdXJzb3Igb24gdGhlIHJpZ2h0IG9wdGlvbi5cbiAgICogQnkgZGVmYXVsdCBpdCdzIFt1cCwgdXAsIGRvd25dIGJlY2F1c2Ugd2UgdXN1YWxseSB0YXJnZXQgdGhlIDFzdCBpdGVtIGluXG4gICAqIHRoZSBzY3JlZW4sIGFuZCBzb21ldGltZXMgd2hlbiBvcGVuaW5nIHNldHRpbmdzIGFjdGl2aXRpZXMgdGhlIGN1cnNvciBpc1xuICAgKiBhbHJlYWR5IHBvc2l0aW9ubmVkIG9uIHRoZSAxc3QgaXRlbSwgYnV0IHdlIGNhbid0IGtub3cgZm9yIHN1cmVcbiAgICovXG4gIGlmIChfLmlzTnVsbChwcmVLZXlTZXEpKSB7XG4gICAgcHJlS2V5U2VxID0gW0tleUNvZGUuVVAsIEtleUNvZGUuVVAsIEtleUNvZGUuRE9XTl07XG4gIH1cblxuICBhd2FpdCB0aGlzLm9wZW5TZXR0aW5nc0FjdGl2aXR5KHNldHRpbmcpO1xuXG4gIGZvciAobGV0IGtleSBvZiBwcmVLZXlTZXEpIHtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KGtleSk7XG4gIH1cblxuICBsZXQge2FwcFBhY2thZ2UsIGFwcEFjdGl2aXR5fSA9IGF3YWl0IHRoaXMuYWRiLmdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkoKTtcblxuICAvKlxuICAgKiBDbGljayBhbmQgaGFuZGxlIHBvdGVudGlhbCBBREIgZGlzY29ubmVjdCB0aGF0IG9jY3VycyBvbiBvZmZpY2lhbFxuICAgKiBlbXVsYXRvciB3aGVuIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24gaXMgZGlzYWJsZWRcbiAgICovXG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuZG9LZXkoS2V5Q29kZS5DRU5URVIpO1xuICB9KTtcblxuICAvKlxuICAgKiBJbiBvbmUgcGFydGljdWxhciBjYXNlIChlbmFibGUgTG9jYXRpb24gU2VydmljZXMpLCBhIHBvcC11cCBpc1xuICAgKiBkaXNwbGF5ZWQgb24gc29tZSBwbGF0Zm9ybXMgc28gdGhlIHVzZXIgYWNjZXB0cyBvciByZWZ1c2VzIHRoYXQgR29vZ2xlXG4gICAqIGNvbGxlY3RzIGxvY2F0aW9uIGRhdGEuIFNvIHdlIHdhaXQgZm9yIHRoYXQgcG9wLXVwIHRvIG9wZW4sIGlmIGl0XG4gICAqIGRvZXNuJ3QgdGhlbiBwcm9jZWVkXG4gICAqL1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuYWRiLndhaXRGb3JOb3RBY3Rpdml0eShhcHBQYWNrYWdlLCBhcHBBY3Rpdml0eSwgNTAwMCk7XG4gICAgYXdhaXQgdGhpcy5kb0tleShLZXlDb2RlLlJJR0hUKTtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KEtleUNvZGUuQ0VOVEVSKTtcbiAgICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yTm90QWN0aXZpdHkoYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksIDUwMDApO1xuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgYXdhaXQgdGhpcy5hZGIuYmFjaygpO1xufTtcblxuaGVscGVycy5kb0tleSA9IGFzeW5jIGZ1bmN0aW9uIGRvS2V5IChrZXkpIHtcbiAgLy8gVE9ETzogQ29uZmlybSB3ZSBuZWVkIHRoaXMgZGVsYXkuIFNlZW1zIHRvIHdvcmsgd2l0aG91dCBpdC5cbiAgYXdhaXQgQi5kZWxheSgyMDAwKTtcbiAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoa2V5KTtcbn07XG5cbmhlbHBlcnMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QgPSBhc3luYyBmdW5jdGlvbiB3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCAod3JhcHBlZCkge1xuICBpZiAoIXRoaXMuYm9vdHN0cmFwKSB7XG4gICAgcmV0dXJuIGF3YWl0IHdyYXBwZWQoKTtcbiAgfVxuXG4gIHRoaXMuYm9vdHN0cmFwLmlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biA9IHRydWU7XG4gIHRyeSB7XG4gICAgYXdhaXQgd3JhcHBlZCgpO1xuICAgIGF3YWl0IHRoaXMuYWRiLnJlc3RhcnQoKTtcbiAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zdGFydCh0aGlzLm9wdHMuYXBwUGFja2FnZSwgdGhpcy5vcHRzLmRpc2FibGVBbmRyb2lkV2F0Y2hlcnMsIHRoaXMub3B0cy5hY2NlcHRTc2xDZXJ0cyk7XG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5ib290c3RyYXAuaWdub3JlVW5leHBlY3RlZFNodXRkb3duID0gZmFsc2U7XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7O0FBRUEsTUFBTUMsa0JBQWtCLEdBQUcsS0FBM0I7QUFDQSxNQUFNQyxTQUFTLEdBQUcsS0FBbEI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsS0FBbEI7QUFNQSxNQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsU0FBM0I7O0FBRUFSLFFBQVEsQ0FBQ1Msb0JBQVQsR0FBZ0MsZUFBZUEsb0JBQWYsR0FBdUM7RUFDckUsS0FBS0MsR0FBTCxDQUFTQyxJQUFULENBQWMsNEJBQWQ7RUFDQSxJQUFJQyxjQUFjLEdBQUcsTUFBTSxLQUFLQyxHQUFMLENBQVNDLGdCQUFULEVBQTNCO0VBQ0EsSUFBSUMsVUFBVSxHQUFHSCxjQUFjLEdBQUdULGtCQUFILEdBQXdCLENBQXZEOztFQUdBLElBQUksQ0FBQ1MsY0FBTCxFQUFxQjtJQUNuQixJQUFJSSxNQUFNLEdBQUcsTUFBTSxLQUFLQyxRQUFMLEVBQW5CO0lBQ0FGLFVBQVUsSUFBS0MsTUFBTSxHQUFHWixTQUFILEdBQWUsQ0FBcEM7SUFDQSxJQUFJYyxNQUFNLEdBQUcsTUFBTSxLQUFLTCxHQUFMLENBQVNNLFFBQVQsRUFBbkI7SUFDQUos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
|
|
259
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL25ldHdvcmsuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiQUlSUExBTkVfTU9ERV9NQVNLIiwiV0lGSV9NQVNLIiwiREFUQV9NQVNLIiwiR0VPX0VQU0lMT04iLCJOdW1iZXIiLCJNSU5fVkFMVUUiLCJnZXROZXR3b3JrQ29ubmVjdGlvbiIsImxvZyIsImluZm8iLCJhaXJwbGFuZU1vZGVPbiIsImFkYiIsImlzQWlycGxhbmVNb2RlT24iLCJjb25uZWN0aW9uIiwid2lmaU9uIiwiaXNXaWZpT24iLCJkYXRhT24iLCJpc0RhdGFPbiIsInNldE5ldHdvcmtDb25uZWN0aW9uIiwidHlwZSIsInNob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSIsInNob3VsZEVuYWJsZVdpZmkiLCJzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiIsImN1cnJlbnRTdGF0ZSIsImlzQWlycGxhbmVNb2RlRW5hYmxlZCIsImlzV2lGaUVuYWJsZWQiLCJpc0RhdGFFbmFibGVkIiwid3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QiLCJzZXRBaXJwbGFuZU1vZGUiLCJicm9hZGNhc3RBaXJwbGFuZU1vZGUiLCJzZXRXaWZpU3RhdGUiLCJzZXREYXRhU3RhdGUiLCJpc0VtdWxhdG9yIiwid2lmaSIsInRvZ2dsZURhdGEiLCJkYXRhIiwic2V0V2lmaUFuZERhdGEiLCJ0b2dnbGVXaUZpIiwidG9nZ2xlRmxpZ2h0TW9kZSIsImZsaWdodE1vZGUiLCJzZXRHZW9Mb2NhdGlvbiIsImxvY2F0aW9uIiwiZ2V0R2VvTG9jYXRpb24iLCJlIiwid2FybiIsIm1lc3NhZ2UiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsImFsdGl0dWRlIiwibW9iaWxlUmVmcmVzaEdwc0NhY2hlIiwib3B0cyIsInRpbWVvdXRNcyIsInJlZnJlc2hHZW9Mb2NhdGlvbkNhY2hlIiwicGFyc2VGbG9hdCIsIktleUNvZGUiLCJVUCIsIkRPV04iLCJSSUdIVCIsIkNFTlRFUiIsInRvZ2dsZUxvY2F0aW9uU2VydmljZXMiLCJhcGkiLCJnZXRBcGlMZXZlbCIsInByb3ZpZGVycyIsImdldExvY2F0aW9uUHJvdmlkZXJzIiwiaXNHcHNFbmFibGVkIiwiaW5kZXhPZiIsInRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIiLCJzZXEiLCJwdXNoIiwia2V5ZXZlbnQiLCJ0b2dnbGVTZXR0aW5nIiwiZXJyb3JzIiwiTm90WWV0SW1wbGVtZW50ZWRFcnJvciIsInNldHRpbmciLCJwcmVLZXlTZXEiLCJfIiwiaXNOdWxsIiwib3BlblNldHRpbmdzQWN0aXZpdHkiLCJrZXkiLCJkb0tleSIsImFwcFBhY2thZ2UiLCJhcHBBY3Rpdml0eSIsImdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkiLCJ3YWl0Rm9yTm90QWN0aXZpdHkiLCJpZ24iLCJiYWNrIiwiQiIsImRlbGF5Iiwid3JhcHBlZCIsImJvb3RzdHJhcCIsImlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biIsInJlc3RhcnQiLCJzdGFydCIsImRpc2FibGVBbmRyb2lkV2F0Y2hlcnMiLCJhY2NlcHRTc2xDZXJ0cyIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9uZXR3b3JrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb25zdCBBSVJQTEFORV9NT0RFX01BU0sgPSAwYjAwMTtcbmNvbnN0IFdJRklfTUFTSyA9IDBiMDEwO1xuY29uc3QgREFUQV9NQVNLID0gMGIxMDA7XG4vLyBUaGUgdmFsdWUgY2xvc2UgdG8gemVybywgYnV0IG5vdCB6ZXJvLCBpcyBuZWVkZWRcbi8vIHRvIHRyaWNrIEpTT04gZ2VuZXJhdGlvbiBhbmQgc2VuZCBhIGZsb2F0IHZhbHVlIGluc3RlYWQgb2YgYW4gaW50ZWdlcixcbi8vIFRoaXMgYWxsb3dzIHN0cmljdGx5LXR5cGVkIGNsaWVudHMsIGxpa2UgSmF2YSwgdG8gcHJvcGVybHlcbi8vIHBhcnNlIGl0LiBPdGhlcndpc2UgZmxvYXQgMC4wIGlzIGFsd2F5cyByZXByZXNlbnRlZCBhcyBpbnRlZ2VyIDAgaW4gSlMuXG4vLyBUaGUgdmFsdWUgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIERCTF9FUFNJTE9OIChodHRwczovL29wZW5zb3VyY2UuYXBwbGUuY29tL3NvdXJjZS9MaWJjL0xpYmMtNDk4L2luY2x1ZGUvZmxvYXQuaClcbmNvbnN0IEdFT19FUFNJTE9OID0gTnVtYmVyLk1JTl9WQUxVRTtcblxuY29tbWFuZHMuZ2V0TmV0d29ya0Nvbm5lY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBnZXROZXR3b3JrQ29ubmVjdGlvbiAoKSB7XG4gIHRoaXMubG9nLmluZm8oJ0dldHRpbmcgbmV0d29yayBjb25uZWN0aW9uJyk7XG4gIGxldCBhaXJwbGFuZU1vZGVPbiA9IGF3YWl0IHRoaXMuYWRiLmlzQWlycGxhbmVNb2RlT24oKTtcbiAgbGV0IGNvbm5lY3Rpb24gPSBhaXJwbGFuZU1vZGVPbiA/IEFJUlBMQU5FX01PREVfTUFTSyA6IDA7XG5cbiAgLy8gbm8gbmVlZCB0byBjaGVjayBhbnl0aGluZyBlbHNlIGlmIHdlIGFyZSBpbiBhaXJwbGFuZSBtb2RlXG4gIGlmICghYWlycGxhbmVNb2RlT24pIHtcbiAgICBsZXQgd2lmaU9uID0gYXdhaXQgdGhpcy5pc1dpZmlPbigpO1xuICAgIGNvbm5lY3Rpb24gfD0gKHdpZmlPbiA/IFdJRklfTUFTSyA6IDApO1xuICAgIGxldCBkYXRhT24gPSBhd2FpdCB0aGlzLmFkYi5pc0RhdGFPbigpO1xuICAgIGNvbm5lY3Rpb24gfD0gKGRhdGFPbiA/IERBVEFfTUFTSyA6IDApO1xuICB9XG5cbiAgcmV0dXJuIGNvbm5lY3Rpb247XG59O1xuXG4vKipcbiAqIGRlY291cGxpbmcgdG8gb3ZlcnJpZGUgdGhlIGJlaGF2aW91ciBpbiBvdGhlciBkcml2ZXJzIGxpa2UgVWlBdXRvbWF0b3IyLlxuICovXG5jb21tYW5kcy5pc1dpZmlPbiA9IGFzeW5jIGZ1bmN0aW9uIGlzV2lmaU9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmlzV2lmaU9uKCk7XG59O1xuXG5jb21tYW5kcy5zZXROZXR3b3JrQ29ubmVjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHNldE5ldHdvcmtDb25uZWN0aW9uICh0eXBlKSB7XG4gIHRoaXMubG9nLmluZm8oJ1NldHRpbmcgbmV0d29yayBjb25uZWN0aW9uJyk7XG4gIC8vIGRlY29kZSB0aGUgaW5wdXRcbiAgY29uc3Qgc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlID0gKHR5cGUgJiBBSVJQTEFORV9NT0RFX01BU0spICE9PSAwO1xuICBjb25zdCBzaG91bGRFbmFibGVXaWZpID0gKHR5cGUgJiBXSUZJX01BU0spICE9PSAwO1xuICBjb25zdCBzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiA9ICh0eXBlICYgREFUQV9NQVNLKSAhPT0gMDtcblxuICBjb25zdCBjdXJyZW50U3RhdGUgPSBhd2FpdCB0aGlzLmdldE5ldHdvcmtDb25uZWN0aW9uKCk7XG4gIGNvbnN0IGlzQWlycGxhbmVNb2RlRW5hYmxlZCA9IChjdXJyZW50U3RhdGUgJiBBSVJQTEFORV9NT0RFX01BU0spICE9PSAwO1xuICBjb25zdCBpc1dpRmlFbmFibGVkID0gKGN1cnJlbnRTdGF0ZSAmIFdJRklfTUFTSykgIT09IDA7XG4gIGNvbnN0IGlzRGF0YUVuYWJsZWQgPSAoY3VycmVudFN0YXRlICYgREFUQV9NQVNLKSAhPT0gMDtcblxuICBpZiAoc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlICE9PSBpc0FpcnBsYW5lTW9kZUVuYWJsZWQpIHtcbiAgICBhd2FpdCB0aGlzLndyYXBCb290c3RyYXBEaXNjb25uZWN0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEFpcnBsYW5lTW9kZShzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUpO1xuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0QWlycGxhbmVNb2RlKHNob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgTm90IGNoYW5naW5nIGFpcnBsYW5lIG1vZGUsIHNpbmNlIGl0IGlzIGFscmVhZHkgYCArXG4gICAgICAgICAgICAgYCR7c2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJ31gKTtcbiAgfVxuXG4gIGlmIChzaG91bGRFbmFibGVXaWZpID09PSBpc1dpRmlFbmFibGVkICYmIHNob3VsZEVuYWJsZURhdGFDb25uZWN0aW9uID09PSBpc0RhdGFFbmFibGVkKSB7XG4gICAgdGhpcy5sb2cuaW5mbygnTm90IGNoYW5naW5nIGRhdGEgY29ubmVjdGlvbi9XaS1GaSBzdGF0ZXMsIHNpbmNlIHRoZXkgYXJlIGFscmVhZHkgc2V0IHRvIGV4cGVjdGVkIHZhbHVlcycpO1xuICAgIGlmIChhd2FpdCB0aGlzLmFkYi5pc0FpcnBsYW5lTW9kZU9uKCkpIHtcbiAgICAgIHJldHVybiBBSVJQTEFORV9NT0RFX01BU0sgfCBjdXJyZW50U3RhdGU7XG4gICAgfVxuICAgIHJldHVybiB+QUlSUExBTkVfTU9ERV9NQVNLICYgY3VycmVudFN0YXRlO1xuICB9XG5cbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgaWYgKHNob3VsZEVuYWJsZVdpZmkgIT09IGlzV2lGaUVuYWJsZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0V2lmaVN0YXRlKHNob3VsZEVuYWJsZVdpZmkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBOb3QgY2hhbmdpbmcgV2ktRmkgc3RhdGUsIHNpbmNlIGl0IGlzIGFscmVhZHkgYCArXG4gICAgICAgIGAke3Nob3VsZEVuYWJsZVdpZmkgPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ05vdCBjaGFuZ2luZyBkYXRhIGNvbm5lY3Rpb24gc3RhdGUsIGJlY2F1c2UgYWlycGxhbmUgbW9kZSBpcyBlbmFibGVkJyk7XG4gICAgfSBlbHNlIGlmIChzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiA9PT0gaXNEYXRhRW5hYmxlZCkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgTm90IGNoYW5naW5nIGRhdGEgY29ubmVjdGlvbiBzdGF0ZSwgc2luY2UgaXQgaXMgYWxyZWFkeSBgICtcbiAgICAgICAgYCR7c2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24gPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zZXREYXRhU3RhdGUoc2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24sIHRoaXMuaXNFbXVsYXRvcigpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBhd2FpdCB0aGlzLmdldE5ldHdvcmtDb25uZWN0aW9uKCk7XG59O1xuXG4vKipcbiAqIGRlY291cGxpbmcgdG8gb3ZlcnJpZGUgYmVoYXZpb3VyIGluIG90aGVyIGRyaXZlcnMgbGlrZSBVaUF1dG9tYXRvcjIuXG4gKi9cbmNvbW1hbmRzLnNldFdpZmlTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHNldFdpZmlTdGF0ZSAod2lmaSkge1xuICBhd2FpdCB0aGlzLmFkYi5zZXRXaWZpU3RhdGUod2lmaSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xufTtcblxuY29tbWFuZHMudG9nZ2xlRGF0YSA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZURhdGEgKCkge1xuICBsZXQgZGF0YSA9ICEoYXdhaXQgdGhpcy5hZGIuaXNEYXRhT24oKSk7XG4gIHRoaXMubG9nLmluZm8oYFR1cm5pbmcgbmV0d29yayBkYXRhICR7ZGF0YSA/ICdvbicgOiAnb2ZmJ31gKTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2V0V2lmaUFuZERhdGEoe2RhdGF9LCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gIH0pO1xufTtcblxuY29tbWFuZHMudG9nZ2xlV2lGaSA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZVdpRmkgKCkge1xuICBsZXQgd2lmaSA9ICEoYXdhaXQgdGhpcy5hZGIuaXNXaWZpT24oKSk7XG4gIHRoaXMubG9nLmluZm8oYFR1cm5pbmcgV2lGaSAke3dpZmkgPyAnb24nIDogJ29mZid9YCk7XG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuYWRiLnNldFdpZmlBbmREYXRhKHt3aWZpfSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnRvZ2dsZUZsaWdodE1vZGUgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVGbGlnaHRNb2RlICgpIHtcbiAgLypcbiAgICogVE9ETzogSW1wbGVtZW50IGlzUmVhbERldmljZSgpLiBUaGlzIG1ldGhvZCBmYWlscyBvblxuICAgKiByZWFsIGRldmljZXMsIGl0IHNob3VsZCB0aHJvdyBhIE5vdFlldEltcGxlbWVudGVkRXJyb3JcbiAgICovXG4gIGxldCBmbGlnaHRNb2RlID0gIShhd2FpdCB0aGlzLmFkYi5pc0FpcnBsYW5lTW9kZU9uKCkpO1xuICB0aGlzLmxvZy5pbmZvKGBUdXJuaW5nIGZsaWdodCBtb2RlICR7ZmxpZ2h0TW9kZSA/ICdvbicgOiAnb2ZmJ31gKTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2V0QWlycGxhbmVNb2RlKGZsaWdodE1vZGUpO1xuICB9KTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0QWlycGxhbmVNb2RlKGZsaWdodE1vZGUpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnNldEdlb0xvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0R2VvTG9jYXRpb24gKGxvY2F0aW9uKSB7XG4gIGF3YWl0IHRoaXMuYWRiLnNldEdlb0xvY2F0aW9uKGxvY2F0aW9uLCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0R2VvTG9jYXRpb24oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRoaXMubG9nLndhcm4oYENvdWxkIG5vdCBnZXQgdGhlIGN1cnJlbnQgZ2VvbG9jYXRpb24gaW5mbzogJHtlLm1lc3NhZ2V9YCk7XG4gICAgdGhpcy5sb2cud2FybihgUmV0dXJuaW5nIHRoZSBkZWZhdWx0IHplcm8nZWQgdmFsdWVzYCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhdGl0dWRlOiBHRU9fRVBTSUxPTixcbiAgICAgIGxvbmdpdHVkZTogR0VPX0VQU0lMT04sXG4gICAgICBhbHRpdHVkZTogR0VPX0VQU0lMT04sXG4gICAgfTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBHcHNDYWNoZVJlZnJlc2hPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZW91dE1zIFsyMDAwMF0gVGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kc1xuICogdG8gYmxvY2sgdW50aWwgR1BTIGNhY2hlIGlzIHJlZnJlc2hlZC4gUHJvdmlkaW5nIHplcm8gb3IgYSBuZWdhdGl2ZVxuICogdmFsdWUgdG8gaXQgc2tpcHMgd2FpdGluZyBjb21wbGV0ZWx5LlxuICovXG5cbi8qKlxuICogU2VuZHMgYW4gYXN5bmMgcmVxdWVzdCB0byByZWZyZXNoIHRoZSBHUFMgY2FjaGUuXG4gKiBUaGlzIGZlYXR1cmUgb25seSB3b3JrcyBpZiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QgaGFzXG4gKiBHb29nbGUgUGxheSBTZXJ2aWNlcyBpbnN0YWxsZWQuIEluIGNhc2UgdGhlIHZhbmlsbGFcbiAqIExvY2F0aW9uTWFuYWdlciBpcyB1c2VkIHRoZSBkZXZpY2UgQVBJIGxldmVsIG11c3QgYmUgYXRcbiAqIHZlcnNpb24gMzAgKEFuZHJvaWQgUikgb3IgaGlnaGVyLlxuICpcbiAqIEBwYXJhbSB7R3BzQ2FjaGVSZWZyZXNoT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tb2JpbGVSZWZyZXNoR3BzQ2FjaGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVSZWZyZXNoR3BzQ2FjaGUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7IHRpbWVvdXRNcyB9ID0gb3B0cztcbiAgYXdhaXQgdGhpcy5hZGIucmVmcmVzaEdlb0xvY2F0aW9uQ2FjaGUodGltZW91dE1zKTtcbn07XG5cbmNvbW1hbmRzLmdldEdlb0xvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gZ2V0R2VvTG9jYXRpb24gKCkge1xuICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWx0aXR1ZGV9ID0gYXdhaXQgdGhpcy5hZGIuZ2V0R2VvTG9jYXRpb24oKTtcbiAgcmV0dXJuIHtcbiAgICBsYXRpdHVkZTogcGFyc2VGbG9hdChsYXRpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gICAgbG9uZ2l0dWRlOiBwYXJzZUZsb2F0KGxvbmdpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gICAgYWx0aXR1ZGU6IHBhcnNlRmxvYXQoYWx0aXR1ZGUpIHx8IEdFT19FUFNJTE9OLFxuICB9O1xufTtcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3JlZmVyZW5jZS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQuaHRtbCNLRVlDT0RFX0RQQURfQ0VOVEVSXG4vLyBpbiB0aGUgYW5kcm9pZCBkb2NzLCB0aGlzIGlzIGhvdyB0aGUga2V5Y29kZXMgYXJlIGRlZmluZWRcbmNvbnN0IEtleUNvZGUgPSB7XG4gIFVQOiAxOSxcbiAgRE9XTjogMjAsXG4gIFJJR0hUOiAyMixcbiAgQ0VOVEVSOiAyM1xufTtcbmNvbW1hbmRzLnRvZ2dsZUxvY2F0aW9uU2VydmljZXMgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVMb2NhdGlvblNlcnZpY2VzICgpIHtcbiAgdGhpcy5sb2cuaW5mbygnVG9nZ2xpbmcgbG9jYXRpb24gc2VydmljZXMnKTtcbiAgbGV0IGFwaSA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gIGlmICh0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIGxldCBwcm92aWRlcnMgPSBhd2FpdCB0aGlzLmFkYi5nZXRMb2NhdGlvblByb3ZpZGVycygpO1xuICAgIGxldCBpc0dwc0VuYWJsZWQgPSBwcm92aWRlcnMuaW5kZXhPZignZ3BzJykgIT09IC0xO1xuICAgIGF3YWl0IHRoaXMuYWRiLnRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIoIWlzR3BzRW5hYmxlZCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGFwaSA+IDE1KSB7XG4gICAgbGV0IHNlcSA9IFtLZXlDb2RlLlVQLCBLZXlDb2RlLlVQXTtcbiAgICBpZiAoYXBpID09PSAxNikge1xuICAgICAgLy8gVGhpcyB2ZXJzaW9uIG9mIEFuZHJvaWQgaGFzIGEgXCJwYXJlbnRcIiBidXR0b24gaW4gaXRzIGFjdGlvbiBiYXJcbiAgICAgIHNlcS5wdXNoKEtleUNvZGUuRE9XTik7XG4gICAgfSBlbHNlIGlmIChhcGkgPCAyOCkge1xuICAgICAgLy8gTmV3ZXIgdmVyc2lvbnMgb2YgQW5kcm9pZCBoYXZlIHRoZSB0b2dnbGUgaW4gdGhlIEFjdGlvbiBiYXJcbiAgICAgIHNlcSA9IFtLZXlDb2RlLlJJR0hULCBLZXlDb2RlLlJJR0hULCBLZXlDb2RlLlVQXTtcbiAgICAgIC8qXG4gICAgICAgKiBPbmNlIHRoZSBMb2NhdGlvbiBzZXJ2aWNlcyBzd2l0Y2ggaXMgT0ZGLCBpdCB3b24ndCByZWNlaXZlIGZvY3VzXG4gICAgICAgKiB3aGVuIGdvaW5nIGJhY2sgdG8gdGhlIExvY2F0aW9uIFNlcnZpY2VzIHNldHRpbmdzIHNjcmVlbiB1bmxlc3Mgd2VcbiAgICAgICAqIHNlbmQgYSBkdW1teSBrZXlldmVudCAoVVApICpiZWZvcmUqIG9wZW5pbmcgdGhlIHNldHRpbmdzIHNjcmVlblxuICAgICAgICovXG4gICAgICBhd2FpdCB0aGlzLmFkYi5rZXlldmVudChLZXlDb2RlLlVQKTtcbiAgICB9IGVsc2UgaWYgKGFwaSA+PSAyOCkge1xuICAgICAgLy8gRXZlbiBuZXdlciB2ZXJzaW9ucyBvZiBhbmRyb2lkIGhhdmUgdGhlIHRvZ2dsZSBpbiBhIGJhciBiZWxvdyB0aGUgYWN0aW9uIGJhclxuICAgICAgLy8gdGhpcyBtZWFucyBhIHNpbmdsZSByaWdodCBjbGljayB3aWxsIGNhdXNlIGl0IHRvIGJlIHNlbGVjdGVkLlxuICAgICAgc2VxID0gW0tleUNvZGUuUklHSFRdO1xuICAgICAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoS2V5Q29kZS5VUCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudG9nZ2xlU2V0dGluZygnTE9DQVRJT05fU09VUkNFX1NFVFRJTkdTJywgc2VxKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGVyZSdzIG5vIGdsb2JhbCBsb2NhdGlvbiBzZXJ2aWNlcyB0b2dnbGUgb24gb2xkZXIgQW5kcm9pZCB2ZXJzaW9uc1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90WWV0SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG59O1xuXG5oZWxwZXJzLnRvZ2dsZVNldHRpbmcgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVTZXR0aW5nIChzZXR0aW5nLCBwcmVLZXlTZXEpIHtcbiAgLypcbiAgICogcHJlS2V5U2VxIGlzIHRoZSBrZXlldmVudCBzZXF1ZW5jZSB0byBzZW5kIG92ZXIgQURCIGluIG9yZGVyXG4gICAqIHRvIHBvc2l0aW9uIHRoZSBjdXJzb3Igb24gdGhlIHJpZ2h0IG9wdGlvbi5cbiAgICogQnkgZGVmYXVsdCBpdCdzIFt1cCwgdXAsIGRvd25dIGJlY2F1c2Ugd2UgdXN1YWxseSB0YXJnZXQgdGhlIDFzdCBpdGVtIGluXG4gICAqIHRoZSBzY3JlZW4sIGFuZCBzb21ldGltZXMgd2hlbiBvcGVuaW5nIHNldHRpbmdzIGFjdGl2aXRpZXMgdGhlIGN1cnNvciBpc1xuICAgKiBhbHJlYWR5IHBvc2l0aW9ubmVkIG9uIHRoZSAxc3QgaXRlbSwgYnV0IHdlIGNhbid0IGtub3cgZm9yIHN1cmVcbiAgICovXG4gIGlmIChfLmlzTnVsbChwcmVLZXlTZXEpKSB7XG4gICAgcHJlS2V5U2VxID0gW0tleUNvZGUuVVAsIEtleUNvZGUuVVAsIEtleUNvZGUuRE9XTl07XG4gIH1cblxuICBhd2FpdCB0aGlzLm9wZW5TZXR0aW5nc0FjdGl2aXR5KHNldHRpbmcpO1xuXG4gIGZvciAobGV0IGtleSBvZiBwcmVLZXlTZXEpIHtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KGtleSk7XG4gIH1cblxuICBsZXQge2FwcFBhY2thZ2UsIGFwcEFjdGl2aXR5fSA9IGF3YWl0IHRoaXMuYWRiLmdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkoKTtcblxuICAvKlxuICAgKiBDbGljayBhbmQgaGFuZGxlIHBvdGVudGlhbCBBREIgZGlzY29ubmVjdCB0aGF0IG9jY3VycyBvbiBvZmZpY2lhbFxuICAgKiBlbXVsYXRvciB3aGVuIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24gaXMgZGlzYWJsZWRcbiAgICovXG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuZG9LZXkoS2V5Q29kZS5DRU5URVIpO1xuICB9KTtcblxuICAvKlxuICAgKiBJbiBvbmUgcGFydGljdWxhciBjYXNlIChlbmFibGUgTG9jYXRpb24gU2VydmljZXMpLCBhIHBvcC11cCBpc1xuICAgKiBkaXNwbGF5ZWQgb24gc29tZSBwbGF0Zm9ybXMgc28gdGhlIHVzZXIgYWNjZXB0cyBvciByZWZ1c2VzIHRoYXQgR29vZ2xlXG4gICAqIGNvbGxlY3RzIGxvY2F0aW9uIGRhdGEuIFNvIHdlIHdhaXQgZm9yIHRoYXQgcG9wLXVwIHRvIG9wZW4sIGlmIGl0XG4gICAqIGRvZXNuJ3QgdGhlbiBwcm9jZWVkXG4gICAqL1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuYWRiLndhaXRGb3JOb3RBY3Rpdml0eShhcHBQYWNrYWdlLCBhcHBBY3Rpdml0eSwgNTAwMCk7XG4gICAgYXdhaXQgdGhpcy5kb0tleShLZXlDb2RlLlJJR0hUKTtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KEtleUNvZGUuQ0VOVEVSKTtcbiAgICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yTm90QWN0aXZpdHkoYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksIDUwMDApO1xuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgYXdhaXQgdGhpcy5hZGIuYmFjaygpO1xufTtcblxuaGVscGVycy5kb0tleSA9IGFzeW5jIGZ1bmN0aW9uIGRvS2V5IChrZXkpIHtcbiAgLy8gVE9ETzogQ29uZmlybSB3ZSBuZWVkIHRoaXMgZGVsYXkuIFNlZW1zIHRvIHdvcmsgd2l0aG91dCBpdC5cbiAgYXdhaXQgQi5kZWxheSgyMDAwKTtcbiAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoa2V5KTtcbn07XG5cbmhlbHBlcnMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QgPSBhc3luYyBmdW5jdGlvbiB3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCAod3JhcHBlZCkge1xuICBpZiAoIXRoaXMuYm9vdHN0cmFwKSB7XG4gICAgcmV0dXJuIGF3YWl0IHdyYXBwZWQoKTtcbiAgfVxuXG4gIHRoaXMuYm9vdHN0cmFwLmlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biA9IHRydWU7XG4gIHRyeSB7XG4gICAgYXdhaXQgd3JhcHBlZCgpO1xuICAgIGF3YWl0IHRoaXMuYWRiLnJlc3RhcnQoKTtcbiAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zdGFydCh0aGlzLm9wdHMuYXBwUGFja2FnZSwgdGhpcy5vcHRzLmRpc2FibGVBbmRyb2lkV2F0Y2hlcnMsIHRoaXMub3B0cy5hY2NlcHRTc2xDZXJ0cyk7XG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5ib290c3RyYXAuaWdub3JlVW5leHBlY3RlZFNodXRkb3duID0gZmFsc2U7XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7O0FBRUEsTUFBTUMsa0JBQWtCLEdBQUcsS0FBM0I7QUFDQSxNQUFNQyxTQUFTLEdBQUcsS0FBbEI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsS0FBbEI7QUFNQSxNQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsU0FBM0I7O0FBRUFSLFFBQVEsQ0FBQ1Msb0JBQVQsR0FBZ0MsZUFBZUEsb0JBQWYsR0FBdUM7RUFDckUsS0FBS0MsR0FBTCxDQUFTQyxJQUFULENBQWMsNEJBQWQ7RUFDQSxJQUFJQyxjQUFjLEdBQUcsTUFBTSxLQUFLQyxHQUFMLENBQVNDLGdCQUFULEVBQTNCO0VBQ0EsSUFBSUMsVUFBVSxHQUFHSCxjQUFjLEdBQUdULGtCQUFILEdBQXdCLENBQXZEOztFQUdBLElBQUksQ0FBQ1MsY0FBTCxFQUFxQjtJQUNuQixJQUFJSSxNQUFNLEdBQUcsTUFBTSxLQUFLQyxRQUFMLEVBQW5CO0lBQ0FGLFVBQVUsSUFBS0MsTUFBTSxHQUFHWixTQUFILEdBQWUsQ0FBcEM7SUFDQSxJQUFJYyxNQUFNLEdBQUcsTUFBTSxLQUFLTCxHQUFMLENBQVNNLFFBQVQsRUFBbkI7SUFDQUos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
|
|
@@ -326,4 +326,4 @@ var _default = extensions;
|
|
|
326
326
|
exports.default = _default;require('source-map-support').install();
|
|
327
327
|
|
|
328
328
|
|
|
329
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3BlcmZvcm1hbmNlLmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsIk5FVFdPUktfS0VZUyIsIkNQVV9LRVlTIiwiQkFUVEVSWV9LRVlTIiwiTUVNT1JZX0tFWVMiLCJTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFUyIsIk9iamVjdCIsImZyZWV6ZSIsImNwdWluZm8iLCJtZW1vcnlpbmZvIiwiYmF0dGVyeWluZm8iLCJuZXR3b3JraW5mbyIsIk1FTUlORk9fVElUTEVTIiwiTkFUSVZFIiwiREFMVklLIiwiRUdMIiwiR0wiLCJNVFJBQ0siLCJUT1RBTCIsIkhFQVAiLCJSRVRSWV9QQVVTRV9NUyIsInBhcnNlTWVtaW5mb0ZvckFwaTE5VG8yOSIsImVudHJpZXMiLCJ2YWxEaWN0IiwidHlwZSIsInN1YlR5cGUiLCJuYXRpdmVQc3MiLCJuYXRpdmVQcml2YXRlRGlydHkiLCJuYXRpdmVIZWFwU2l6ZSIsIm5hdGl2ZUhlYXBBbGxvY2F0ZWRTaXplIiwiZGFsdmlrUHNzIiwiZGFsdmlrUHJpdmF0ZURpcnR5IiwiZWdsUHNzIiwiZWdsUHJpdmF0ZURpcnR5IiwiZ2xQc3MiLCJnbFByaXZhdGVEaXJ0eSIsImxlbmd0aCIsInRvdGFsUHNzIiwidG90YWxQcml2YXRlRGlydHkiLCJwYXJzZU1lbWluZm9Gb3JBcGlCZWxvdzE5IiwicGFyc2VNZW1pbmZvRm9yQXBpQWJvdmUyOSIsIm5hdGl2ZVJzcyIsImRhbHZpa1JzcyIsInRvdGFsUnNzIiwiZ2V0UGVyZm9ybWFuY2VEYXRhVHlwZXMiLCJfIiwia2V5cyIsImdldFBlcmZvcm1hbmNlRGF0YSIsInBhY2thZ2VOYW1lIiwiZGF0YVR5cGUiLCJyZXRyaWVzIiwidG9Mb3dlciIsImdldEJhdHRlcnlJbmZvIiwiZ2V0Q1BVSW5mbyIsImdldE1lbW9yeUluZm8iLCJnZXROZXR3b3JrVHJhZmZpY0luZm8iLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJvdXRwdXQiLCJhZGIiLCJzaGVsbCIsImUiLCJzdGRlcnIiLCJsb2ciLCJpbmZvIiwidXNhZ2VzUGF0dGVybiIsIlJlZ0V4cCIsImVzY2FwZVJlZ0V4cCIsIm1hdGNoIiwiZXhlYyIsImRlYnVnIiwiY21kIiwiZGF0YSIsInBvd2VyIiwicGFyc2VJbnQiLCJzcGxpdCIsInRyaW0iLCJOdW1iZXIiLCJpc05hTiIsImNsb25lIiwidG9TdHJpbmciLCJhcGlMZXZlbCIsImdldEFwaUxldmVsIiwibGluZSIsImZpbHRlciIsIkJvb2xlYW4iLCJoZWFkZXJzIiwidmFsdWVzIiwibWFwIiwiaGVhZGVyIiwicmV0dXJuVmFsdWUiLCJidWNrZXREdXJhdGlvbiIsImJ1Y2tldFN0YXJ0IiwiYWN0aXZlVGltZSIsInJ4Qnl0ZXMiLCJyeFBhY2tldHMiLCJ0eEJ5dGVzIiwidHhQYWNrZXRzIiwib3BlcmF0aW9ucyIsImluZGV4IiwiZnJvbVh0c3RhdHMiLCJpbmRleE9mIiwic3RhcnQiLCJkZWxpbWl0ZXIiLCJlbmQiLCJwZW5kaW5nQnl0ZXMiLCJzdWJzdHJpbmciLCJhcnJheUxpc3QiLCJqIiwiayIsInJldHVybkluZGV4IiwiaSIsImlzRXF1YWwiLCJpc1VuZGVmaW5lZCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9wZXJmb3JtYW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcblxuY29uc3QgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbnN0IE5FVFdPUktfS0VZUyA9IFtcbiAgWydidWNrZXRTdGFydCcsICdhY3RpdmVUaW1lJywgJ3J4Qnl0ZXMnLCAncnhQYWNrZXRzJywgJ3R4Qnl0ZXMnLCAndHhQYWNrZXRzJywgJ29wZXJhdGlvbnMnLCAnYnVja2V0RHVyYXRpb24nXSxcbiAgWydzdCcsICdhY3RpdmVUaW1lJywgJ3JiJywgJ3JwJywgJ3RiJywgJ3RwJywgJ29wJywgJ2J1Y2tldER1cmF0aW9uJ11cbl07XG5jb25zdCBDUFVfS0VZUyA9IFsndXNlcicsICdrZXJuZWwnXTtcbmNvbnN0IEJBVFRFUllfS0VZUyA9IFsncG93ZXInXTtcbmNvbnN0IE1FTU9SWV9LRVlTID0gW1xuICAndG90YWxQcml2YXRlRGlydHknLCAnbmF0aXZlUHJpdmF0ZURpcnR5JywgJ2RhbHZpa1ByaXZhdGVEaXJ0eScsXG4gICdlZ2xQcml2YXRlRGlydHknLCAnZ2xQcml2YXRlRGlydHknLFxuICAndG90YWxQc3MnLCAnbmF0aXZlUHNzJywgJ2RhbHZpa1BzcycsICdlZ2xQc3MnLCAnZ2xQc3MnLFxuICAnbmF0aXZlSGVhcEFsbG9jYXRlZFNpemUnLCAnbmF0aXZlSGVhcFNpemUnLFxuICAnbmF0aXZlUnNzJywgJ2RhbHZpa1JzcycsICd0b3RhbFJzcydcbl07XG5jb25zdCBTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFUyA9IE9iamVjdC5mcmVlemUoe1xuICBjcHVpbmZvOiAndGhlIGFtb3VudCBvZiBjcHUgYnkgdXNlciBhbmQga2VybmVsIHByb2Nlc3MgLSBjcHUgaW5mb3JtYXRpb24gZm9yIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZXMgYW5kIHNpbXVsYXRvcnMnLFxuICBtZW1vcnlpbmZvOiAndGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBieSB0aGUgcHJvY2VzcyAtIG1lbW9yeSBpbmZvcm1hdGlvbiBmb3IgYXBwbGljYXRpb25zIG9uIHJlYWwgZGV2aWNlcyBhbmQgc2ltdWxhdG9ycycsXG4gIGJhdHRlcnlpbmZvOiAndGhlIHJlbWFpbmluZyBiYXR0ZXJ5IHBvd2VyIC0gYmF0dGVyeSBwb3dlciBpbmZvcm1hdGlvbiBmb3IgYXBwbGljYXRpb25zIG9uIHJlYWwgZGV2aWNlcyBhbmQgc2ltdWxhdG9ycycsXG4gIG5ldHdvcmtpbmZvOiAndGhlIG5ldHdvcmsgc3RhdGlzdGljcyAtIG5ldHdvcmsgcngvdHggaW5mb3JtYXRpb24gZm9yIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZXMgYW5kIHNpbXVsYXRvcnMnXG59KTtcbmNvbnN0IE1FTUlORk9fVElUTEVTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIE5BVElWRTogJ05hdGl2ZScsXG4gIERBTFZJSzogJ0RhbHZpaycsXG4gIEVHTDogJ0VHTCcsXG4gIEdMOiAnR0wnLFxuICBNVFJBQ0s6ICdtdHJhY2snLFxuICBUT1RBTDogJ1RPVEFMJyxcbiAgSEVBUDogJ0hlYXAnXG59KTtcbmNvbnN0IFJFVFJZX1BBVVNFX01TID0gMTAwMDtcblxuLyoqXG4gKiBBUEkgbGV2ZWwgYmV0d2VlbiAxOCBhbmQgMzBcbiAqIFsnPFN5c3RlbSBUeXBlPicsICc8TWVtb3J5IFR5cGU+JywgPHBzcyB0b3RhbD4sIDxwcml2YXRlIGRpcnR5PiwgPHByaXZhdGUgY2xlYW4+LCA8c3dhcFBzcyBkaXJ0eT4sIDxoZWFwIHNpemU+LCA8aGVhcCBhbGxvYz4sIDxoZWFwIGZyZWU+XVxuICogZXhjZXB0ICdUT1RBTCcsIHdoaWNoIHNraXBzIHRoZSBzZWNvbmQgdHlwZSBuYW1lXG4gKiAhISEgdmFsRGljdCBnZXRzIG11dGF0ZWRcbiAqL1xuZnVuY3Rpb24gcGFyc2VNZW1pbmZvRm9yQXBpMTlUbzI5IChlbnRyaWVzLCB2YWxEaWN0KSB7XG4gIGNvbnN0IFt0eXBlLCBzdWJUeXBlXSA9IGVudHJpZXM7XG4gIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5OQVRJVkUgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuSEVBUCkge1xuICAgIFssLCB2YWxEaWN0Lm5hdGl2ZVBzcywgdmFsRGljdC5uYXRpdmVQcml2YXRlRGlydHksLCwgdmFsRGljdC5uYXRpdmVIZWFwU2l6ZSwgdmFsRGljdC5uYXRpdmVIZWFwQWxsb2NhdGVkU2l6ZV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkRBTFZJSyAmJiBzdWJUeXBlID09PSBNRU1JTkZPX1RJVExFUy5IRUFQKSB7XG4gICAgWywsIHZhbERpY3QuZGFsdmlrUHNzLCB2YWxEaWN0LmRhbHZpa1ByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkVHTCAmJiBzdWJUeXBlID09PSBNRU1JTkZPX1RJVExFUy5NVFJBQ0spIHtcbiAgICBbLCwgdmFsRGljdC5lZ2xQc3MsIHZhbERpY3QuZWdsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuR0wgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTVRSQUNLKSB7XG4gICAgWywsIHZhbERpY3QuZ2xQc3MsIHZhbERpY3QuZ2xQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5UT1RBTCAmJiBlbnRyaWVzLmxlbmd0aCA9PT0gOCkge1xuICAgIC8vIHRoZXJlIGFyZSB0d28gdG90YWxzLCBhbmQgd2Ugb25seSB3YW50IHRoZSBmdWxsIGxpc3RpbmcsIHdoaWNoIGhhcyA4IGVudHJpZXNcbiAgICBbLCB2YWxEaWN0LnRvdGFsUHNzLCB2YWxEaWN0LnRvdGFsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH1cbn1cblxuLyoqXG4gKiBbJzxTeXN0ZW0gVHlwZScsICc8cHBzPicsICc8c2hhcmVkIGRpcnR5PicsICc8cHJpdmF0ZSBkaXJ0eT4nLCAnPGhlYXAgc2l6ZT4nLCAnPGhlYXAgYWxsb2M+JywgJzxoZWFwIGZyZWU+J11cbiAqICEhISB2YWxEaWN0IGdldHMgbXV0YXRlZFxuICovXG5mdW5jdGlvbiBwYXJzZU1lbWluZm9Gb3JBcGlCZWxvdzE5IChlbnRyaWVzLCB2YWxEaWN0KSB7XG4gIGNvbnN0IHR5cGUgPSBlbnRyaWVzWzBdO1xuICBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTkFUSVZFKSB7XG4gICAgWywgdmFsRGljdC5uYXRpdmVQc3MsLCB2YWxEaWN0Lm5hdGl2ZVByaXZhdGVEaXJ0eSwgdmFsRGljdC5uYXRpdmVIZWFwU2l6ZSwgdmFsRGljdC5uYXRpdmVIZWFwQWxsb2NhdGVkU2l6ZV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkRBTFZJSykge1xuICAgIFssIHZhbERpY3QuZGFsdmlrUHNzLCwgdmFsRGljdC5kYWx2aWtQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5FR0wpIHtcbiAgICBbLCB2YWxEaWN0LmVnbFBzcywsIHZhbERpY3QuZWdsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuR0wpIHtcbiAgICBbLCB2YWxEaWN0LmdsUHNzLCwgdmFsRGljdC5nbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLlRPVEFMKSB7XG4gICAgWywgdmFsRGljdC50b3RhbFBzcywsIHZhbERpY3QudG90YWxQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfVxufVxuXG4vKipcbiAqIEFQSSBsZXZlbCAzMCBhbmQgYWJvdmVcbiAqIFsnPFN5c3RlbSBUeXBlPicsICc8TWVtb3J5IFR5cGU+JywgPHBzcyB0b3RhbD4sIDxwcml2YXRlIGRpcnR5PiwgPHByaXZhdGUgY2xlYW4+LCA8c3dhcFBzcyBkaXJ0eT4sIDxyc3MgdG90YWw+LCA8aGVhcCBzaXplPiwgPGhlYXAgYWxsb2M+LCA8aGVhcCBmcmVlPl1cbiAqICEhISB2YWxEaWN0IGdldHMgbXV0YXRlZFxuICovXG5mdW5jdGlvbiBwYXJzZU1lbWluZm9Gb3JBcGlBYm92ZTI5IChlbnRyaWVzLCB2YWxEaWN0KSB7XG4gIGNvbnN0IFt0eXBlLCBzdWJUeXBlXSA9IGVudHJpZXM7XG4gIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5OQVRJVkUgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuSEVBUCkge1xuICAgIFssLCB2YWxEaWN0Lm5hdGl2ZVBzcywgdmFsRGljdC5uYXRpdmVQcml2YXRlRGlydHksLCwgdmFsRGljdC5uYXRpdmVSc3MsIHZhbERpY3QubmF0aXZlSGVhcFNpemUsIHZhbERpY3QubmF0aXZlSGVhcEFsbG9jYXRlZFNpemVdID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5EQUxWSUsgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuSEVBUCkge1xuICAgIFssLCB2YWxEaWN0LmRhbHZpa1BzcywgdmFsRGljdC5kYWx2aWtQcml2YXRlRGlydHksLCwgdmFsRGljdC5kYWx2aWtSc3NdID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5FR0wgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTVRSQUNLKSB7XG4gICAgWywsIHZhbERpY3QuZWdsUHNzLCB2YWxEaWN0LmVnbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkdMICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLk1UUkFDSykge1xuICAgIFssLCB2YWxEaWN0LmdsUHNzLCB2YWxEaWN0LmdsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuVE9UQUwgJiYgZW50cmllcy5sZW5ndGggPT09IDkpIHtcbiAgICAvLyBoYXMgOSBlbnRyaWVzXG4gICAgWywgdmFsRGljdC50b3RhbFBzcywgdmFsRGljdC50b3RhbFByaXZhdGVEaXJ0eSwsLCB2YWxEaWN0LnRvdGFsUnNzXSA9IGVudHJpZXM7XG4gIH1cbn1cblxuLy9cbi8vIHJldHVybnMgdGhlIGluZm9ybWF0aW9uIHR5cGUgb2YgdGhlIHN5c3RlbSBzdGF0ZSB3aGljaCBpcyBzdXBwb3J0ZWQgdG8gcmVhZCBhcyBsaWtlIGNwdSwgbWVtb3J5LCBuZXR3b3JrIHRyYWZmaWMsIGFuZCBiYXR0ZXJ5LlxuLy8gb3V0cHV0IC0gYXJyYXkgbGlrZSBiZWxvd1xuLy8gW2NwdWluZm8sIGJhdHRlcnlpbmZvLCBuZXR3b3JraW5mbywgbWVtb3J5aW5mb11cbi8vXG5jb21tYW5kcy5nZXRQZXJmb3JtYW5jZURhdGFUeXBlcyA9IGZ1bmN0aW9uIGdldFBlcmZvcm1hbmNlRGF0YVR5cGVzICgpIHtcbiAgcmV0dXJuIF8ua2V5cyhTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFUyk7XG59O1xuXG4vKipcbiAqIEByZXR1cm5zIFRoZSBpbmZvcm1hdGlvbiB0eXBlIG9mIHRoZSBzeXN0ZW0gc3RhdGUgd2hpY2ggaXMgc3VwcG9ydGVkIHRvIHJlYWQgYXMgbGlrZSBjcHUsIG1lbW9yeSwgbmV0d29yayB0cmFmZmljLCBhbmQgYmF0dGVyeS5cbiAqIGlucHV0IC0gKHBhY2thZ2VOYW1lKSB0aGUgcGFja2FnZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvblxuICogICAgICAgIChkYXRhVHlwZSkgdGhlIHR5cGUgb2Ygc3lzdGVtIHN0YXRlIHdoaWNoIHdhbnRzIHRvIHJlYWQuIEl0IHNob3VsZCBiZSBvbmUgb2YgdGhlIGtleXMgb2YgdGhlIFNVUFBPUlRFRF9QRVJGT1JNQU5DRV9EQVRBX1RZUEVTXG4gKiAgICAgICAgKGRhdGFSZWFkVGltZW91dCkgdGhlIG51bWJlciBvZiBhdHRlbXB0cyB0byByZWFkXG4gKiBvdXRwdXQgLSB0YWJsZSBvZiB0aGUgcGVyZm9ybWFuY2UgZGF0YSwgVGhlIGZpcnN0IGxpbmUgb2YgdGhlIHRhYmxlIHJlcHJlc2VudHMgdGhlIHR5cGUgb2YgZGF0YS4gVGhlIHJlbWFpbmluZyBsaW5lcyByZXByZXNlbnQgdGhlIHZhbHVlcyBvZiB0aGUgZGF0YS5cbiAqXG4gKiBpbiBjYXNlIG9mIGJhdHRlcnkgaW5mbyA6IFtbcG93ZXJdLCBbMjNdXVxuICogaW4gY2FzZSBvZiBtZW1vcnkgaW5mbyA6ICBbW3RvdGFsUHJpdmF0ZURpcnR5LCBuYXRpdmVQcml2YXRlRGlydHksIGRhbHZpa1ByaXZhdGVEaXJ0eSwgZWdsUHJpdmF0ZURpcnR5LCBnbFByaXZhdGVEaXJ0eSwgdG90YWxQc3MsXG4gKiAgIG5hdGl2ZVBzcywgZGFsdmlrUHNzLCBlZ2xQc3MsIGdsUHNzLCBuYXRpdmVIZWFwQWxsb2NhdGVkU2l6ZSwgbmF0aXZlSGVhcFNpemVdLCBbMTgzNjAsIDgyOTYsIDYxMzIsIG51bGwsIG51bGwsIDQyNTg4LCA4NDA2LCA3MDI0LCBudWxsLCBudWxsLCAyNjUxOSwgMTAzNDRdXVxuICogaW4gY2FzZSBvZiBuZXR3b3JrIGluZm8gOiBbW2J1Y2tldFN0YXJ0LCBhY3RpdmVUaW1lLCByeEJ5dGVzLCByeFBhY2tldHMsIHR4Qnl0ZXMsIHR4UGFja2V0cywgb3BlcmF0aW9ucywgYnVja2V0RHVyYXRpb24sXSxcbiAqICAgWzE0NzgwOTE2MDAwMDAsIG51bGwsIDEwOTkwNzUsIDYxMDk0NywgOTI4LCAxMTQzNjIsIDc2OSwgMCwgMzYwMDAwMF0sIFsxNDc4MDk1MjAwMDAwLCBudWxsLCAxMzA2MzAwLCA0MDU5OTcsIDUwOSwgNDYzNTksIDM3MCwgMCwgMzYwMDAwMF1dXG4gKiBpbiBjYXNlIG9mIG5ldHdvcmsgaW5mbyA6IFtbc3QsIGFjdGl2ZVRpbWUsIHJiLCBycCwgdGIsIHRwLCBvcCwgYnVja2V0RHVyYXRpb25dLCBbMTQ3ODA4ODAwMCwgbnVsbCwgbnVsbCwgMzIxMTUyOTYsIDM0MjkxLCAyOTU2ODA1LCAyNTcwNSwgMCwgMzYwMF0sXG4gKiAgIFsxNDc4MDkxNjAwLCBudWxsLCBudWxsLCAyNzE0NjgzLCAxMTgyMSwgMTQyMDU2NCwgMTI2NTAsIDAsIDM2MDBdLCBbMTQ3ODA5NTIwMCwgbnVsbCwgbnVsbCwgMTAwNzkyMTMsIDE5OTYyLCAyNDg3NzA1LCAyMDAxNSwgMCwgMzYwMF0sXG4gKiAgIFsxNDc4MDk4ODAwLCBudWxsLCBudWxsLCA0NDQ0NDMzLCAxMDIyNywgMTQzMDM1NiwgMTA0OTMsIDAsIDM2MDBdXVxuICogaW4gY2FzZSBvZiBjcHUgaW5mbyA6IFtbdXNlciwga2VybmVsXSwgWzAuOSwgMS4zXV1cbiAqL1xuY29tbWFuZHMuZ2V0UGVyZm9ybWFuY2VEYXRhID0gYXN5bmMgZnVuY3Rpb24gZ2V0UGVyZm9ybWFuY2VEYXRhIChwYWNrYWdlTmFtZSwgZGF0YVR5cGUsIHJldHJpZXMgPSAyKSB7XG4gIHN3aXRjaCAoXy50b0xvd2VyKGRhdGFUeXBlKSkge1xuICAgIGNhc2UgJ2JhdHRlcnlpbmZvJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEJhdHRlcnlJbmZvKHJldHJpZXMpO1xuICAgIGNhc2UgJ2NwdWluZm8nOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Q1BVSW5mbyhwYWNrYWdlTmFtZSwgcmV0cmllcyk7XG4gICAgY2FzZSAnbWVtb3J5aW5mbyc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRNZW1vcnlJbmZvKHBhY2thZ2VOYW1lLCByZXRyaWVzKTtcbiAgICBjYXNlICduZXR3b3JraW5mbyc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXROZXR3b3JrVHJhZmZpY0luZm8ocmV0cmllcyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gcGVyZm9ybWFuY2UgZGF0YSBvZiB0eXBlICcke2RhdGFUeXBlfScgZm91bmQuIGAgK1xuICAgICAgICBgT25seSB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgc3VwcG9ydGVkOiAke0pTT04uc3RyaW5naWZ5KFNVUFBPUlRFRF9QRVJGT1JNQU5DRV9EQVRBX1RZUEVTLCAnICcsIDIpfWApO1xuICB9XG59O1xuXG5oZWxwZXJzLmdldENQVUluZm8gPSBhc3luYyBmdW5jdGlvbiBnZXRDUFVJbmZvIChwYWNrYWdlTmFtZSwgcmV0cmllcyA9IDIpIHtcbiAgLy8gVE9ETzogZmlndXJlIG91dCB3aHkgdGhpcyBpc1xuICAvLyBzb21ldGltZXMsIHRoZSBmdW5jdGlvbiBvZiAnYWRiLnNoZWxsJyBmYWlscy4gd2hlbiBJIHRlc3RlZCB0aGlzIGZ1bmN0aW9uIG9uIHRoZSB0YXJnZXQgb2YgJ0dhbGF4eSBOb3RlNScsXG4gIC8vIGFkYi5zaGVsbChkdW1wc3lzIGNwdWluZm8pIHJldHVybnMgY3B1IGRhdGFzIGZvciBvdGhlciBhcHBsaWNhdGlvbiBwYWNrYWdlcywgYnV0IEkgY2FuJ3QgZmluZCB0aGUgZGF0YSBmb3IgcGFja2FnZU5hbWUuXG4gIC8vIEl0IHVzdWFsbHkgZmFpbHMgMzAgdGltZXMgYW5kIHN1Y2Nlc3MgZm9yIHRoZSBuZXh0IHRpbWUsXG4gIC8vIFNpbmNlIHRoZW4sIGhlIGhhcyBjb250aW51ZWQgdG8gc3VjY2VlZC5cbiAgcmV0dXJuIGF3YWl0IHJldHJ5SW50ZXJ2YWwocmV0cmllcywgUkVUUllfUEFVU0VfTVMsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgb3V0cHV0O1xuICAgIHRyeSB7XG4gICAgICBvdXRwdXQgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ2R1bXBzeXMnLCAnY3B1aW5mbyddKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5zdGRlcnIpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhlLnN0ZGVycik7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICAvLyBgb3V0cHV0YCB3aWxsIGJlIHNvbWV0aGluZyBsaWtlXG4gICAgLy8gICAgKzAlIDIyMDkvaW8uYXBwaXVtLmFuZHJvaWQuYXBpczogMC4xJSB1c2VyICsgMC4yJSBrZXJuZWwgLyBmYXVsdHM6IDcwIG1pbm9yXG4gICAgY29uc3QgdXNhZ2VzUGF0dGVybiA9XG4gICAgICBuZXcgUmVnRXhwKGBeLitcXFxcLyR7Xy5lc2NhcGVSZWdFeHAocGFja2FnZU5hbWUpfTpcXFxcRCsoW1xcXFxkLl0rKSVcXFxccyt1c2VyXFxcXHMrXFxcXCtcXFxccysoW1xcXFxkLl0rKSVcXFxccytrZXJuZWxgLCAnbScpO1xuICAgIGNvbnN0IG1hdGNoID0gdXNhZ2VzUGF0dGVybi5leGVjKG91dHB1dCk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhpcy5sb2cuZGVidWcob3V0cHV0KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIGNwdSB1c2FnZSBkYXRhIGZvciAnJHtwYWNrYWdlTmFtZX0nLiBDaGVjayB0aGUgc2VydmVyIGxvZyBmb3IgbW9yZSBkZXRhaWxzYCk7XG4gICAgfVxuICAgIHJldHVybiBbQ1BVX0tFWVMsIFttYXRjaFsxXSwgbWF0Y2hbMl1dXTtcbiAgfSk7XG59O1xuXG5oZWxwZXJzLmdldEJhdHRlcnlJbmZvID0gYXN5bmMgZnVuY3Rpb24gZ2V0QmF0dGVyeUluZm8gKHJldHJpZXMgPSAyKSB7XG4gIHJldHVybiBhd2FpdCByZXRyeUludGVydmFsKHJldHJpZXMsIFJFVFJZX1BBVVNFX01TLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IGNtZCA9IFsnZHVtcHN5cycsICdiYXR0ZXJ5JywgJ3wnLCAnZ3JlcCcsICdsZXZlbCddO1xuICAgIGxldCBkYXRhID0gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbiAgICBpZiAoIWRhdGEpIHRocm93IG5ldyBFcnJvcignTm8gZGF0YSBmcm9tIGR1bXBzeXMnKTsgLy9lc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG5cbiAgICBsZXQgcG93ZXIgPSBwYXJzZUludCgoZGF0YS5zcGxpdCgnOicpWzFdIHx8ICcnKS50cmltKCksIDEwKTtcblxuICAgIGlmICghTnVtYmVyLmlzTmFOKHBvd2VyKSkge1xuICAgICAgcmV0dXJuIFtfLmNsb25lKEJBVFRFUllfS0VZUyksIFtwb3dlci50b1N0cmluZygpXV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIGJhdHRlcnkgZGF0YTogJyR7ZGF0YX0nYCk7XG4gICAgfVxuICB9KTtcbn07XG5cbmhlbHBlcnMuZ2V0TWVtb3J5SW5mbyA9IGFzeW5jIGZ1bmN0aW9uIGdldE1lbW9yeUluZm8gKHBhY2thZ2VOYW1lLCByZXRyaWVzID0gMikge1xuICByZXR1cm4gYXdhaXQgcmV0cnlJbnRlcnZhbChyZXRyaWVzLCBSRVRSWV9QQVVTRV9NUywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNtZCA9IFtcbiAgICAgICdkdW1wc3lzJywgJ21lbWluZm8nLCBgJyR7cGFja2FnZU5hbWV9J2AsXG4gICAgICAnfCcsICdncmVwJywgJy1FJyxcbiAgICAgIGAnJHtNRU1JTkZPX1RJVExFUy5OQVRJVkV9fCR7TUVNSU5GT19USVRMRVMuREFMVklLfXwke01FTUlORk9fVElUTEVTLkVHTH1gICtcbiAgICAgIGB8JHtNRU1JTkZPX1RJVExFUy5HTH18JHtNRU1JTkZPX1RJVExFUy5UT1RBTH0nYFxuICAgIF07XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGRhdGEgZnJvbSBkdW1wc3lzJyk7XG4gICAgfVxuICAgIGNvbnN0IHZhbERpY3QgPSB7dG90YWxQcml2YXRlRGlydHk6ICcnfTtcbiAgICBjb25zdCBhcGlMZXZlbCA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGRhdGEuc3BsaXQoJ1xcbicpKSB7XG4gICAgICBjb25zdCBlbnRyaWVzID0gbGluZS50cmltKCkuc3BsaXQoL1xccysvKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICBpZiAoYXBpTGV2ZWwgPj0gMzApIHtcbiAgICAgICAgcGFyc2VNZW1pbmZvRm9yQXBpQWJvdmUyOShlbnRyaWVzLCB2YWxEaWN0KTtcbiAgICAgIH0gZWxzZSBpZiAoYXBpTGV2ZWwgPiAxOCAmJiBhcGlMZXZlbCA8IDMwKSB7XG4gICAgICAgIHBhcnNlTWVtaW5mb0ZvckFwaTE5VG8yOShlbnRyaWVzLCB2YWxEaWN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlTWVtaW5mb0ZvckFwaUJlbG93MTkoZW50cmllcywgdmFsRGljdCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2YWxEaWN0LnRvdGFsUHJpdmF0ZURpcnR5ICYmIHZhbERpY3QudG90YWxQcml2YXRlRGlydHkgIT09ICdub2RleCcpIHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBfLmNsb25lKE1FTU9SWV9LRVlTKTtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IGhlYWRlcnMubWFwKChoZWFkZXIpID0+IHZhbERpY3RbaGVhZGVyXSk7XG4gICAgICByZXR1cm4gW2hlYWRlcnMsIHZhbHVlc107XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgbWVtb3J5IGRhdGE6ICcke2RhdGF9J2ApO1xuICB9KTtcbn07XG5cbmhlbHBlcnMuZ2V0TmV0d29ya1RyYWZmaWNJbmZvID0gYXN5bmMgZnVuY3Rpb24gZ2V0TmV0d29ya1RyYWZmaWNJbmZvIChyZXRyaWVzID0gMikge1xuICByZXR1cm4gYXdhaXQgcmV0cnlJbnRlcnZhbChyZXRyaWVzLCBSRVRSWV9QQVVTRV9NUywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCByZXR1cm5WYWx1ZSA9IFtdO1xuICAgIGxldCBidWNrZXREdXJhdGlvbiwgYnVja2V0U3RhcnQsIGFjdGl2ZVRpbWUsIHJ4Qnl0ZXMsIHJ4UGFja2V0cywgdHhCeXRlcywgdHhQYWNrZXRzLCBvcGVyYXRpb25zO1xuXG4gICAgbGV0IGNtZCA9IFsnZHVtcHN5cycsICduZXRzdGF0cyddO1xuICAgIGxldCBkYXRhID0gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbiAgICBpZiAoIWRhdGEpIHRocm93IG5ldyBFcnJvcignTm8gZGF0YSBmcm9tIGR1bXBzeXMnKTsgLy9lc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG5cbiAgICAvLyBJbiBjYXNlIG9mIG5ldHdvcmsgdHJhZmZpYyBpbmZvcm1hdGlvbiwgaXQgaXMgZGlmZmVyZW50IGZvciB0aGUgcmV0dXJuIGRhdGEgYmV0d2VlbiBlbXVsYXRvciBhbmQgcmVhbCBkZXZpY2UuXG4gICAgLy8gdGhlIHJldHVybiBkYXRhIG9mIGVtdWxhdG9yXG4gICAgLy8gICBYdCBzdGF0czpcbiAgICAvLyAgIFBlbmRpbmcgYnl0ZXM6IDM5MjUwXG4gICAgLy8gICBIaXN0b3J5IHNpbmNlIGJvb3Q6XG4gICAgLy8gICBpZGVudD1bW3R5cGU9V0lGSSwgc3ViVHlwZT1DT01CSU5FRCwgbmV0d29ya0lkPVwiV2lyZWRTU0lEXCJdXSB1aWQ9LTEgc2V0PUFMTCB0YWc9MHgwXG4gICAgLy8gICBOZXR3b3JrU3RhdHNIaXN0b3J5OiBidWNrZXREdXJhdGlvbj0zNjAwMDAwXG4gICAgLy8gICBidWNrZXRTdGFydD0xNDc4MDk4ODAwMDAwIGFjdGl2ZVRpbWU9MzE4MjQgcnhCeXRlcz0yMTUwMiByeFBhY2tldHM9NzggdHhCeXRlcz0xNzc0OCB0eFBhY2tldHM9OTAgb3BlcmF0aW9ucz0wXG4gICAgLy9cbiAgICAvLyA3LjFcbiAgICAvLyAgIFh0IHN0YXRzOlxuICAgIC8vICAgUGVuZGluZyBieXRlczogNDgxNDg3XG4gICAgLy8gICBIaXN0b3J5IHNpbmNlIGJvb3Q6XG4gICAgLy8gICBpZGVudD1be3R5cGU9TU9CSUxFLCBzdWJUeXBlPUNPTUJJTkVELCBzdWJzY3JpYmVySWQ9MzEwMjYwLi4uLCBtZXRlcmVkPXRydWV9XSB1aWQ9LTEgc2V0PUFMTCB0YWc9MHgwXG4gICAgLy8gICAgIE5ldHdvcmtTdGF0c0hpc3Rvcnk6IGJ1Y2tldER1cmF0aW9uPTM2MDBcbiAgICAvLyAgICAgICBzdD0xNDgzOTg0ODAwIHJiPTAgcnA9MCB0Yj0xMjAzMSB0cD0xODQgb3A9MFxuICAgIC8vICAgICAgIHN0PTE0ODM5ODg0MDAgcmI9MCBycD0wIHRiPTM4NDc2IHRwPTU4NyBvcD0wXG4gICAgLy8gICAgICAgc3Q9MTQ4Mzk5OTIwMCByYj0zMTU2MTYgcnA9NDAwIHRiPTk0ODAwIHRwPTM2MiBvcD0wXG4gICAgLy8gICAgICAgc3Q9MTQ4NDAwMjgwMCByYj0xNTgyNiBycD0yMCB0Yj00NzM4IHRwPTE2IG9wPTBcbiAgICAvL1xuICAgIC8vIHRoZSByZXR1cm4gZGF0YSBvZiByZWFsIGRldmljZVxuICAgIC8vICAgWHQgc3RhdHM6XG4gICAgLy8gICBQZW5kaW5nIGJ5dGVzOiAwXG4gICAgLy8gICBIaXN0b3J5IHNpbmNlIGJvb3Q6XG4gICAgLy8gICBpZGVudD1be3R5cGU9TU9CSUxFLCBzdWJUeXBlPUNPTUJJTkVELCBzdWJzY3JpYmVySWQ9NDUwMDUwLi4ufV0gdWlkPS0xIHNldD1BTEwgdGFnPTB4MFxuICAgIC8vICAgTmV0d29ya1N0YXRzSGlzdG9yeTogYnVja2V0RHVyYXRpb249MzYwMFxuICAgIC8vICAgc3Q9MTQ3ODA4ODAwMCByYj0zMjExNTI5NiBycD0zNDI5MSB0Yj0yOTU2ODA1IHRwPTI1NzA1IG9wPTBcbiAgICAvLyAgIHN0PTE0NzgwOTE2MDAgcmI9MjcxNDY4MyBycD0xMTgyMSB0Yj0xNDIwNTY0IHRwPTEyNjUwIG9wPTBcbiAgICAvLyAgIHN0PTE0NzgwOTUyMDAgcmI9MTAwNzkyMTMgcnA9MTk5NjIgdGI9MjQ4NzcwNSB0cD0yMDAxNSBvcD0wXG4gICAgLy8gICBzdD0xNDc4MDk4ODAwIHJiPTQ0NDQ0MzMgcnA9MTAyMjcgdGI9MTQzMDM1NiB0cD0xMDQ5MyBvcD0wXG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBsZXQgZnJvbVh0c3RhdHMgPSBkYXRhLmluZGV4T2YoJ1h0IHN0YXRzOicpO1xuXG4gICAgbGV0IHN0YXJ0ID0gZGF0YS5pbmRleE9mKCdQZW5kaW5nIGJ5dGVzOicsIGZyb21YdHN0YXRzKTtcbiAgICBsZXQgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc6Jywgc3RhcnQgKyAxKTtcbiAgICBsZXQgZW5kID0gZGF0YS5pbmRleE9mKCdcXG4nLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICBsZXQgcGVuZGluZ0J5dGVzID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG5cbiAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZignYnVja2V0RHVyYXRpb24nLCBlbmQgKyAxKTtcbiAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJ1xcbicsIGRlbGltaXRlciArIDEpO1xuICAgICAgYnVja2V0RHVyYXRpb24gPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgZGF0YSA9IGRhdGEuc3Vic3RyaW5nKGVuZCArIDEsIGRhdGEubGVuZ3RoKTtcbiAgICAgIGxldCBhcnJheUxpc3QgPSBkYXRhLnNwbGl0KCdcXG4nKTtcblxuICAgICAgaWYgKGFycmF5TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHN0YXJ0ID0gLTE7XG5cbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBORVRXT1JLX0tFWVMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICBzdGFydCA9IGFycmF5TGlzdFswXS5pbmRleE9mKE5FVFdPUktfS0VZU1tqXVswXSk7XG5cbiAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgaW5kZXggPSBqO1xuICAgICAgICAgICAgcmV0dXJuVmFsdWVbMF0gPSBbXTtcblxuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBORVRXT1JLX0tFWVNbal0ubGVuZ3RoOyArK2spIHtcbiAgICAgICAgICAgICAgcmV0dXJuVmFsdWVbMF1ba10gPSBORVRXT1JLX0tFWVNbal1ba107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmV0dXJuSW5kZXggPSAxO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5TGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGRhdGEgPSBhcnJheUxpc3RbaV07XG4gICAgICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoTkVUV09SS19LRVlTW2luZGV4XVswXSk7XG5cbiAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc9Jywgc3RhcnQgKyAxKTtcbiAgICAgICAgICAgIGVuZCA9IGRhdGEuaW5kZXhPZignICcsIGRlbGltaXRlciArIDEpO1xuICAgICAgICAgICAgYnVja2V0U3RhcnQgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcblxuICAgICAgICAgICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgICAgICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZihORVRXT1JLX0tFWVNbaW5kZXhdWzFdLCBlbmQgKyAxKTtcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgICAgICAgICAgIGVuZCA9IGRhdGEuaW5kZXhPZignICcsIGRlbGltaXRlciArIDEpO1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRpbWUgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bMl0sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCcgJywgZGVsaW1pdGVyICsgMSk7XG4gICAgICAgICAgICAgICAgcnhCeXRlcyA9IGRhdGEuc3Vic3RyaW5nKGRlbGltaXRlciArIDEsIGVuZCkudHJpbSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChlbmQgPiBkZWxpbWl0ZXIpIHtcbiAgICAgICAgICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoTkVUV09SS19LRVlTW2luZGV4XVszXSwgZW5kICsgMSk7XG4gICAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc9Jywgc3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJyAnLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgICAgICAgICAgICByeFBhY2tldHMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bNF0sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCcgJywgZGVsaW1pdGVyICsgMSk7XG4gICAgICAgICAgICAgICAgdHhCeXRlcyA9IGRhdGEuc3Vic3RyaW5nKGRlbGltaXRlciArIDEsIGVuZCkudHJpbSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChlbmQgPiBkZWxpbWl0ZXIpIHtcbiAgICAgICAgICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoTkVUV09SS19LRVlTW2luZGV4XVs1XSwgZW5kICsgMSk7XG4gICAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc9Jywgc3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJyAnLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgICAgICAgICAgICB0eFBhY2tldHMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bNl0sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9ucyA9IGRhdGEuc3Vic3RyaW5nKGRlbGltaXRlciArIDEsIGVuZCkudHJpbSgpO1xuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVyblZhbHVlW3JldHVybkluZGV4KytdID0gW2J1Y2tldFN0YXJ0LCBhY3RpdmVUaW1lLCByeEJ5dGVzLCByeFBhY2tldHMsIHR4Qnl0ZXMsIHR4UGFja2V0cywgb3BlcmF0aW9ucywgYnVja2V0RHVyYXRpb25dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghXy5pc0VxdWFsKHBlbmRpbmdCeXRlcywgJycpICYmICFfLmlzVW5kZWZpbmVkKHBlbmRpbmdCeXRlcykgJiYgIV8uaXNFcXVhbChwZW5kaW5nQnl0ZXMsICdub2RleCcpKSB7XG4gICAgICByZXR1cm4gcmV0dXJuVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIG5ldHdvcmsgdHJhZmZpYyBkYXRhOiAnJHtkYXRhfSdgKTtcbiAgICB9XG4gIH0pO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQge1xuICBjb21tYW5kcywgaGVscGVycywgU1VQUE9SVEVEX1BFUkZPUk1BTkNFX0RBVEFfVFlQRVMsIENQVV9LRVlTLCBNRU1PUllfS0VZUyxcbiAgQkFUVEVSWV9LRVlTLCBORVRXT1JLX0tFWVMsXG59O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcblxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjtBQUFBLE1BQXFCQyxPQUFPLEdBQUcsRUFBL0I7QUFBQSxNQUFtQ0MsVUFBVSxHQUFHLEVBQWhEOzs7QUFFQSxNQUFNQyxZQUFZLEdBQUcsQ0FDbkIsQ0FBQyxhQUFELEVBQWdCLFlBQWhCLEVBQThCLFNBQTlCLEVBQXlDLFdBQXpDLEVBQXNELFNBQXRELEVBQWlFLFdBQWpFLEVBQThFLFlBQTlFLEVBQTRGLGdCQUE1RixDQURtQixFQUVuQixDQUFDLElBQUQsRUFBTyxZQUFQLEVBQXFCLElBQXJCLEVBQTJCLElBQTNCLEVBQWlDLElBQWpDLEVBQXVDLElBQXZDLEVBQTZDLElBQTdDLEVBQW1ELGdCQUFuRCxDQUZtQixDQUFyQjs7QUFJQSxNQUFNQyxRQUFRLEdBQUcsQ0FBQyxNQUFELEVBQVMsUUFBVCxDQUFqQjs7QUFDQSxNQUFNQyxZQUFZLEdBQUcsQ0FBQyxPQUFELENBQXJCOztBQUNBLE1BQU1DLFdBQVcsR0FBRyxDQUNsQixtQkFEa0IsRUFDRyxvQkFESCxFQUN5QixvQkFEekIsRUFFbEIsaUJBRmtCLEVBRUMsZ0JBRkQsRUFHbEIsVUFIa0IsRUFHTixXQUhNLEVBR08sV0FIUCxFQUdvQixRQUhwQixFQUc4QixPQUg5QixFQUlsQix5QkFKa0IsRUFJUyxnQkFKVCxFQUtsQixXQUxrQixFQUtMLFdBTEssRUFLUSxVQUxSLENBQXBCOztBQU9BLE1BQU1DLGdDQUFnQyxHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBYztFQUNyREMsT0FBTyxFQUFFLGdIQUQ0QztFQUVyREMsVUFBVSxFQUFFLCtHQUZ5QztFQUdyREMsV0FBVyxFQUFFLHlHQUh3QztFQUlyREMsV0FBVyxFQUFFO0FBSndDLENBQWQsQ0FBekM7O0FBTUEsTUFBTUMsY0FBYyxHQUFHTixNQUFNLENBQUNDLE1BQVAsQ0FBYztFQUNuQ00sTUFBTSxFQUFFLFFBRDJCO0VBRW5DQyxNQUFNLEVBQUUsUUFGMkI7RUFHbkNDLEdBQUcsRUFBRSxLQUg4QjtFQUluQ0MsRUFBRSxFQUFFLElBSitCO0VBS25DQyxNQUFNLEVBQUUsUUFMMkI7RUFNbkNDLEtBQUssRUFBRSxPQU40QjtFQU9uQ0MsSUFBSSxFQUFFO0FBUDZCLENBQWQsQ0FBdkI7QUFTQSxNQUFNQyxjQUFjLEdBQUcsSUFBdkI7O0FBUUEsU0FBU0Msd0JBQVQsQ0FBbUNDLE9BQW5DLEVBQTRDQyxPQUE1QyxFQUFxRDtFQUNuRCxNQUFNLENBQUNDLElBQUQsRUFBT0MsT0FBUCxJQUFrQkgsT0FBeEI7O0VBQ0EsSUFBSUUsSUFBSSxLQUFLWixjQUFjLENBQUNDLE1BQXhCLElBQWtDWSxPQUFPLEtBQUtiLGNBQWMsQ0FBQ08sSUFBakUsRUFBdUU7SUFDckUsSUFBSUksT0FBTyxDQUFDRyxTQUFaLEVBQXVCSCxPQUFPLENBQUNJLGtCQUEvQixJQUFxREosT0FBTyxDQUFDSyxjQUE3RCxFQUE2RUwsT0FBTyxDQUFDTSx1QkFBckYsSUFBZ0hQLE9BQWhIO0VBQ0QsQ0FGRCxNQUVPLElBQUlFLElBQUksS0FBS1osY0FBYyxDQUFDRSxNQUF4QixJQUFrQ1csT0FBTyxLQUFLYixjQUFjLENBQUNPLElBQWpFLEVBQXVFO0lBQzVFLElBQUlJLE9BQU8sQ0FBQ08sU0FBWixFQUF1QlAsT0FBTyxDQUFDUSxrQkFBL0IsSUFBcURULE9BQXJEO0VBQ0QsQ0FGTSxNQUVBLElBQUlFLElBQUksS0FBS1osY0FBYyxDQUFDRyxHQUF4QixJQUErQlUsT0FBTyxLQUFLYixjQUFjLENBQUNLLE1BQTlELEVBQXNFO0lBQzNFLElBQUlNLE9BQU8sQ0FBQ1MsTUFBWixFQUFvQlQsT0FBTyxDQUFDVSxlQUE1QixJQUErQ1gsT0FBL0M7RUFDRCxDQUZNLE1BRUEsSUFBSUUsSUFBSSxLQUFLWixjQUFjLENBQUNJLEVBQXhCLElBQThCUyxPQUFPLEtBQUtiLGNBQWMsQ0FBQ0ssTUFBN0QsRUFBcUU7SUFDMUUsSUFBSU0sT0FBTyxDQUFDVyxLQUFaLEVBQW1CWCxPQUFPLENBQUNZLGNBQTNCLElBQTZDYixPQUE3QztFQUNELENBRk0sTUFFQSxJQUFJRSxJQUFJLEtBQUtaLGNBQWMsQ0FBQ00sS0FBeEIsSUFBaUNJLE9BQU8sQ0FBQ2MsTUFBUixLQUFtQixDQUF4RCxFQUEyRDtJQUVoRSxHQUFHYixPQUFPLENBQUNjLFFBQVgsRUFBcUJkLE9BQU8sQ0FBQ2UsaUJBQTdCLElBQWtEaEIsT0FBbEQ7RUFDRDtBQUNGOztBQU1ELFNBQVNpQix5QkFBVCxDQUFvQ2pCLE9BQXBDLEVBQTZDQyxPQUE3QyxFQUFzRDtFQUNwRCxNQUFNQyxJQUFJLEdBQUdGLE9BQU8sQ0FBQyxDQUFELENBQXBCOztFQUNBLElBQUlFLElBQUksS0FBS1osY0FBYyxDQUFDQyxNQUE1QixFQUFvQztJQUNsQyxHQUFHVSxPQUFPLENBQUNHLFNBQVgsR0FBdUJILE9BQU8sQ0FBQ0ksa0JBQS9CLEVBQW1ESixPQUFPLENBQUNLLGNBQTNELEVBQTJFTCxPQUFPLENBQUNNLHVCQUFuRixJQUE4R1AsT0FBOUc7RUFDRCxDQUZELE1BRU8sSUFBSUUsSUFBSSxLQUFLWixjQUFjLENBQUNFLE1BQTVCLEVBQW9DO0lBQ3pDLEdBQUdTLE9BQU8sQ0FBQ08sU0FBWCxHQUF1QlAsT0FBTyxDQUFDUSxrQkFBL0IsSUFBcURULE9BQXJEO0VBQ0QsQ0FGTSxNQUVBLElBQUlFLElBQUksS0FBS1osY0FBYyxDQUFDRyxHQUE1QixFQUFpQztJQUN0QyxHQUFHUSxPQUFPLENBQUNTLE1BQVgsR0FBb0JULE9BQU8sQ0FBQ1UsZUFBNUIsSUFBK0NYLE9BQS9DO0VBQ0QsQ0FGTSxNQUVBLElBQUlFLElBQUksS0FBS1osY0FBYyxDQUFDSSxFQUE1QixFQUFnQztJQUNyQyxHQUFHTyxPQUFPLENBQUNXLEtBQVgsR0FBbUJYLE9BQU8sQ0FBQ1ksY0FBM0IsSUFBNkNiLE9BQTdDO0VBQ0QsQ0FGTSxNQUVBLElBQUlFLElBQUksS0FBS1osY0FBYyxDQUFDTSxLQUE1QixFQUFtQztJQUN4QyxHQUFHSyxPQUFPLENBQUNjLFFBQVgsR0FBc0JkLE9BQU8sQ0FBQ2UsaUJBQTlCLElBQW1EaEIsT0FBbkQ7RUFDRDtBQUNGOztBQU9ELFNBQVNrQix5QkFBVCxDQUFvQ2xCLE9BQXBDLEVBQTZDQyxPQUE3QyxFQUFzRDtFQUNwRCxNQUFNLENBQUNDLElBQUQsRUFBT0MsT0FBUCxJQUFrQkgsT0FBeEI7O0VBQ0EsSUFBSUUsSUFBSSxLQUFLWixjQUFjLENBQUNDLE1BQXhCLElBQWtDWSxPQUFPLEtBQUtiLGNBQWMsQ0FBQ08sSUFBakUsRUFBdUU7SUFDckUsSUFBSUksT0FBTyxDQUFDRyxTQUFaLEVBQXVCSCxPQUFPLENBQUNJLGtCQUEvQixJQUFxREosT0FBTyxDQUFDa0IsU0FBN0QsRUFBd0VsQixPQUFPLENBQUNLLGNBQWhGLEVBQWdHTCxPQUFPLENBQUNNLHVCQUF4RyxJQUFtSVAsT0FBbkk7RUFDRCxDQUZELE1BRU8sSUFBSUUsSUFBSSxLQUFLWixjQUFjLENBQUNFLE1BQXhCLElBQWtDVyxPQUFPLEtBQUtiLGNBQWMsQ0FBQ08sSUFBakUsRUFBdUU7SUFDNUUsSUFBSUksT0FBTyxDQUFDTyxTQUFaLEVBQXVCUCxPQUFPLENBQUNRLGtCQUEvQixJQUFxRFIsT0FBTyxDQUFDbUIsU0FBN0QsSUFBMEVwQixPQUExRTtFQUNELENBRk0sTUFFQSxJQUFJRSxJQUFJLEtBQUtaLGNBQWMsQ0FBQ0csR0FBeEIsSUFBK0JVLE9BQU8sS0FBS2IsY0FBYyxDQUFDSyxNQUE5RCxFQUFzRTtJQUMzRSxJQUFJTSxPQUFPLENBQUNTLE1BQVosRUFBb0JULE9BQU8sQ0FBQ1UsZUFBNUIsSUFBK0NYLE9BQS9DO0VBQ0QsQ0FGTSxNQUVBLElBQUlFLElBQUksS0FBS1osY0FBYyxDQUFDSSxFQUF4QixJQUE4QlMsT0FBTyxLQUFLYixjQUFjLENBQUNLLE1BQTdELEVBQXFFO0lBQzFFLElBQUlNLE9BQU8sQ0FBQ1csS0FBWixFQUFtQlgsT0FBTyxDQUFDWSxjQUEzQixJQUE2Q2IsT0FBN0M7RUFDRCxDQUZNLE1BRUEsSUFBSUUsSUFBSSxLQUFLWixjQUFjLENBQUNNLEtBQXhCLElBQWlDSSxPQUFPLENBQUNjLE1BQVIsS0FBbUIsQ0FBeEQsRUFBMkQ7SUFFaEUsR0FBR2IsT0FBTyxDQUFDYyxRQUFYLEVBQXFCZCxPQUFPLENBQUNlLGlCQUE3QixJQUFrRGYsT0FBTyxDQUFDb0IsUUFBMUQsSUFBc0VyQixPQUF0RTtFQUNEO0FBQ0Y7O0FBT0R4QixRQUFRLENBQUM4Qyx1QkFBVCxHQUFtQyxTQUFTQSx1QkFBVCxHQUFvQztFQUNyRSxPQUFPQyxnQkFBRUMsSUFBRixDQUFPekMsZ0NBQVAsQ0FBUDtBQUNELENBRkQ7O0FBcUJBUCxRQUFRLENBQUNpRCxrQkFBVCxHQUE4QixlQUFlQSxrQkFBZixDQUFtQ0MsV0FBbkMsRUFBZ0RDLFFBQWhELEVBQTBEQyxPQUFPLEdBQUcsQ0FBcEUsRUFBdUU7RUFDbkcsUUFBUUwsZ0JBQUVNLE9BQUYsQ0FBVUYsUUFBVixDQUFSO0lBQ0UsS0FBSyxhQUFMO01BQ0UsT0FBTyxNQUFNLEtBQUtHLGNBQUwsQ0FBb0JGLE9BQXBCLENBQWI7O0lBQ0YsS0FBSyxTQUFMO01BQ0UsT0FBTyxNQUFNLEtBQUtHLFVBQUwsQ0FBZ0JMLFdBQWhCLEVBQTZCRSxPQUE3QixDQUFiOztJQUNGLEtBQUssWUFBTDtNQUNFLE9BQU8sTUFBTSxLQUFLSSxhQUFMLENBQW1CTixXQUFuQixFQUFnQ0UsT0FBaEMsQ0FBYjs7SUFDRixLQUFLLGFBQUw7TUFDRSxPQUFPLE1BQU0sS0FBS0sscUJBQUwsQ0FBMkJMLE9BQTNCLENBQWI7O0lBQ0Y7TUFDRSxNQUFNLElBQUlNLEtBQUosQ0FBVyxnQ0FBK0JQLFFBQVMsV0FBekMsR0FDYiw0Q0FBMkNRLElBQUksQ0FBQ0MsU0FBTCxDQUFlckQsZ0NBQWYsRUFBaUQsR0FBakQsRUFBc0QsQ0FBdEQsQ0FBeUQsRUFEakcsQ0FBTjtFQVZKO0FBYUQsQ0FkRDs7QUFnQkFOLE9BQU8sQ0FBQ3NELFVBQVIsR0FBcUIsZUFBZUEsVUFBZixDQUEyQkwsV0FBM0IsRUFBd0NFLE9BQU8sR0FBRyxDQUFsRCxFQUFxRDtFQU14RSxPQUFPLE1BQU0sNkJBQWNBLE9BQWQsRUFBdUI5QixjQUF2QixFQUF1QyxZQUFZO0lBQzlELElBQUl1QyxNQUFKOztJQUNBLElBQUk7TUFDRkEsTUFBTSxHQUFHLE1BQU0sS0FBS0MsR0FBTCxDQUFTQyxLQUFULENBQWUsQ0FBQyxTQUFELEVBQVksU0FBWixDQUFmLENBQWY7SUFDRCxDQUZELENBRUUsT0FBT0MsQ0FBUCxFQUFVO01BQ1YsSUFBSUEsQ0FBQyxDQUFDQyxNQUFOLEVBQWM7UUFDWixLQUFLQyxHQUFMLENBQVNDLElBQVQsQ0FBY0gsQ0FBQyxDQUFDQyxNQUFoQjtNQUNEOztNQUNELE1BQU1ELENBQU47SUFDRDs7SUFHRCxNQUFNSSxhQUFhLEdBQ2pCLElBQUlDLE1BQUosQ0FBWSxTQUFRdEIsZ0JBQUV1QixZQUFGLENBQWVwQixXQUFmLENBQTRCLHdEQUFoRCxFQUF5RyxHQUF6RyxDQURGO0lBRUEsTUFBTXFCLEtBQUssR0FBR0gsYUFBYSxDQUFDSSxJQUFkLENBQW1CWCxNQUFuQixDQUFkOztJQUNBLElBQUksQ0FBQ1UsS0FBTCxFQUFZO01BQ1YsS0FBS0wsR0FBTCxDQUFTTyxLQUFULENBQWVaLE1BQWY7TUFDQSxNQUFNLElBQUlILEtBQUosQ0FBVyx1Q0FBc0NSLFdBQVksMENBQTdELENBQU47SUFDRDs7SUFDRCxPQUFPLENBQUM5QyxRQUFELEVBQVcsQ0FBQ21FLEtBQUssQ0FBQyxDQUFELENBQU4sRUFBV0EsS0FBSyxDQUFDLENBQUQsQ0FBaEIsQ0FBWCxDQUFQO0VBQ0QsQ0FwQlksQ0FBYjtBQXFCRCxDQTNCRDs7QUE2QkF0RSxPQUFPLENBQUNxRCxjQUFSLEdBQXlCLGVBQWVBLGNBQWYsQ0FBK0JGLE9BQU8sR0FBRyxDQUF6QyxFQUE0QztFQUNuRSxPQUFPLE1BQU0sNkJBQWNBLE9BQWQsRUFBdUI5QixjQUF2QixFQUF1QyxZQUFZO0lBQzlELElBQUlvRCxHQUFHLEdBQUcsQ0FBQyxTQUFELEVBQVksU0FBWixFQUF1QixHQUF2QixFQUE0QixNQUE1QixFQUFvQyxPQUFwQyxDQUFWO0lBQ0EsSUFBSUMsSUFBSSxHQUFHLE1BQU0sS0FBS2IsR0FBTCxDQUFTQyxLQUFULENBQWVXLEdBQWYsQ0FBakI7SUFDQSxJQUFJLENBQUNDLElBQUwsRUFBVyxNQUFNLElBQUlqQixLQUFKLENBQVUsc0JBQVYsQ0FBTjtJQUVYLElBQUlrQixLQUFLLEdBQUdDLFFBQVEsQ0FBQyxDQUFDRixJQUFJLENBQUNHLEtBQUwsQ0FBVyxHQUFYLEVBQWdCLENBQWhCLEtBQXNCLEVBQXZCLEVBQTJCQyxJQUEzQixFQUFELEVBQW9DLEVBQXBDLENBQXBCOztJQUVBLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxLQUFQLENBQWFMLEtBQWIsQ0FBTCxFQUEwQjtNQUN4QixPQUFPLENBQUM3QixnQkFBRW1DLEtBQUYsQ0FBUTdFLFlBQVIsQ0FBRCxFQUF3QixDQUFDdUUsS0FBSyxDQUFDTyxRQUFOLEVBQUQsQ0FBeEIsQ0FBUDtJQUNELENBRkQsTUFFTztNQUNMLE1BQU0sSUFBSXpCLEtBQUosQ0FBVyxrQ0FBaUNpQixJQUFLLEdBQWpELENBQU47SUFDRDtFQUNGLENBWlksQ0FBYjtBQWFELENBZEQ7O0FBZ0JBMUUsT0FBTyxDQUFDdUQsYUFBUixHQUF3QixlQUFlQSxhQUFmLENBQThCTixXQUE5QixFQUEyQ0UsT0FBTyxHQUFHLENBQXJELEVBQXdEO0VBQzlFLE9BQU8sTUFBTSw2QkFBY0EsT0FBZCxFQUF1QjlCLGNBQXZCLEVBQXVDLFlBQVk7SUFDOUQsTUFBTW9ELEdBQUcsR0FBRyxDQUNWLFNBRFUsRUFDQyxTQURELEVBQ2EsSUFBR3hCLFdBQVksR0FENUIsRUFFVixHQUZVLEVBRUwsTUFGSyxFQUVHLElBRkgsRUFHVCxJQUFHcEMsY0FBYyxDQUFDQyxNQUFPLElBQUdELGNBQWMsQ0FBQ0UsTUFBTyxJQUFHRixjQUFjLENBQUNHLEdBQUksRUFBekUsR0FDQyxJQUFHSCxjQUFjLENBQUNJLEVBQUcsSUFBR0osY0FBYyxDQUFDTSxLQUFNLEdBSnBDLENBQVo7SUFNQSxNQUFNdUQsSUFBSSxHQUFHLE1BQU0sS0FBS2IsR0FBTCxDQUFTQyxLQUFULENBQWVXLEdBQWYsQ0FBbkI7O0lBQ0EsSUFBSSxDQUFDQyxJQUFMLEVBQVc7TUFDVCxNQUFNLElBQUlqQixLQUFKLENBQVUsc0JBQVYsQ0FBTjtJQUNEOztJQUNELE1BQU1qQyxPQUFPLEdBQUc7TUFBQ2UsaUJBQWlCLEVBQUU7SUFBcEIsQ0FBaEI7SUFDQSxNQUFNNEMsUUFBUSxHQUFHLE1BQU0sS0FBS3RCLEdBQUwsQ0FBU3VCLFdBQVQsRUFBdkI7O0lBQ0EsS0FBSyxNQUFNQyxJQUFYLElBQW1CWCxJQUFJLENBQUNHLEtBQUwsQ0FBVyxJQUFYLENBQW5CLEVBQXFDO01BQ25DLE1BQU10RCxPQUFPLEdBQUc4RCxJQUFJLENBQUNQLElBQUwsR0FBWUQsS0FBWixDQUFrQixLQUFsQixFQUF5QlMsTUFBekIsQ0FBZ0NDLE9BQWhDLENBQWhCOztNQUNBLElBQUlKLFFBQVEsSUFBSSxFQUFoQixFQUFvQjtRQUNsQjFDLHlCQUF5QixDQUFDbEIsT0FBRCxFQUFVQyxPQUFWLENBQXpCO01BQ0QsQ0FGRCxNQUVPLElBQUkyRCxRQUFRLEdBQUcsRUFBWCxJQUFpQkEsUUFBUSxHQUFHLEVBQWhDLEVBQW9DO1FBQ3pDN0Qsd0JBQXdCLENBQUNDLE9BQUQsRUFBVUMsT0FBVixDQUF4QjtNQUNELENBRk0sTUFFQTtRQUNMZ0IseUJBQXlCLENBQUNqQixPQUFELEVBQVVDLE9BQVYsQ0FBekI7TUFDRDtJQUNGOztJQUNELElBQUlBLE9BQU8sQ0FBQ2UsaUJBQVIsSUFBNkJmLE9BQU8sQ0FBQ2UsaUJBQVIsS0FBOEIsT0FBL0QsRUFBd0U7TUFDdEUsTUFBTWlELE9BQU8sR0FBRzFDLGdCQUFFbUMsS0FBRixDQUFRNUUsV0FBUixDQUFoQjs7TUFDQSxNQUFNb0YsTUFBTSxHQUFHRCxPQUFPLENBQUNFLEdBQVIsQ0FBYUMsTUFBRCxJQUFZbkUsT0FBTyxDQUFDbUUsTUFBRCxDQUEvQixDQUFmO01BQ0EsT0FBTyxDQUFDSCxPQUFELEVBQVVDLE1BQVYsQ0FBUDtJQUNEOztJQUVELE1BQU0sSUFBSWhDLEtBQUosQ0FBVyxpQ0FBZ0NpQixJQUFLLEdBQWhELENBQU47RUFDRCxDQTlCWSxDQUFiO0FBK0JELENBaENEOztBQWtDQTFFLE9BQU8sQ0FBQ3dELHFCQUFSLEdBQWdDLGVBQWVBLHFCQUFmLENBQXNDTCxPQUFPLEdBQUcsQ0FBaEQsRUFBbUQ7RUFDakYsT0FBTyxNQUFNLDZCQUFjQSxPQUFkLEVBQXVCOUIsY0FBdkIsRUFBdUMsWUFBWTtJQUM5RCxJQUFJdUUsV0FBVyxHQUFHLEVBQWxCO0lBQ0EsSUFBSUMsY0FBSixFQUFvQkMsV0FBcEIsRUFBaUNDLFVBQWpDLEVBQTZDQyxPQUE3QyxFQUFzREMsU0FBdEQsRUFBaUVDLE9BQWpFLEVBQTBFQyxTQUExRSxFQUFxRkMsVUFBckY7SUFFQSxJQUFJM0IsR0FBRyxHQUFHLENBQUMsU0FBRCxFQUFZLFVBQVosQ0FBVjtJQUNBLElBQUlDLElBQUksR0FBRyxNQUFNLEtBQUtiLEdBQUwsQ0FBU0MsS0FBVCxDQUFlVyxHQUFmLENBQWpCO0lBQ0EsSUFBSSxDQUFDQyxJQUFMLEVBQVcsTUFBTSxJQUFJakIsS0FBSixDQUFVLHNCQUFWLENBQU47SUFnQ1gsSUFBSTRDLEtBQUssR0FBRyxDQUFaO0lBQ0EsSUFBSUMsV0FBVyxHQUFHNUIsSUFBSSxDQUFDNkIsT0FBTCxDQUFhLFdBQWIsQ0FBbEI7SUFFQSxJQUFJQyxLQUFLLEdBQUc5QixJQUFJLENBQUM2QixPQUFMLENBQWEsZ0JBQWIsRUFBK0JELFdBQS9CLENBQVo7SUFDQSxJQUFJRyxTQUFTLEdBQUcvQixJQUFJLENBQUM2QixPQUFMLENBQWEsR0FBYixFQUFrQkMsS0FBSyxHQUFHLENBQTFCLENBQWhCO0lBQ0EsSUFBSUUsR0FBRyxHQUFHaEMsSUFBSSxDQUFDNkIsT0FBTCxDQUFhLElBQWIsRUFBbUJFLFNBQVMsR0FBRyxDQUEvQixDQUFWO0lBQ0EsSUFBSUUsWUFBWSxHQUFHakMsSUFBSSxDQUFDa0MsU0FBTCxDQUFlSCxTQUFTLEdBQUcsQ0FBM0IsRUFBOEJDLEdBQTlCLEVBQW1DNUIsSUFBbkMsRUFBbkI7O0lBRUEsSUFBSTRCLEdBQUcsR0FBR0QsU0FBVixFQUFxQjtNQUNuQkQsS0FBSyxHQUFHOUIsSUFBSSxDQUFDNkIsT0FBTCxDQUFhLGdCQUFiLEVBQStCRyxHQUFHLEdBQUcsQ0FBckMsQ0FBUjtNQUNBRCxTQUFTLEdBQUcvQixJQUFJLENBQUM2QixPQUFMLENBQWEsR0FBYixFQUFrQkMsS0FBSyxHQUFHLENBQTFCLENBQVo7TUFDQUUsR0FBRyxHQUFHaEMsSUFBSSxDQUFDNkIsT0FBTCxDQUFhLElBQWIsRUFBbUJFLFNBQVMsR0FBRyxDQUEvQixDQUFOO01BQ0FaLGNBQWMsR0FBR25CLElBQUksQ0FBQ2tDLFNBQUwsQ0FBZUgsU0FBUyxHQUFHLENBQTNCLEVBQThCQyxHQUE5QixFQUFtQzVCLElBQW5DLEVBQWpCO0lBQ0Q7O0lBRUQsSUFBSTBCLEtBQUssSUFBSSxDQUFiLEVBQWdCO01BQ2Q5QixJQUFJLEdBQUdBLElBQUksQ0FBQ2tDLFNBQUwsQ0FBZUYsR0FBRyxHQUFHLENBQXJCLEVBQXdCaEMsSUFBSSxDQUFDckMsTUFBN0IsQ0FBUDtNQUNBLElBQUl3RSxTQUFTLEdBQUduQyxJQUFJLENBQUNHLEtBQUwsQ0FBVyxJQUFYLENBQWhCOztNQUVBLElBQUlnQyxTQUFTLENBQUN4RSxNQUFWLEdBQW1CLENBQXZCLEVBQTBCO1FBQ3hCbUUsS0FBSyxHQUFHLENBQUMsQ0FBVDs7UUFFQSxLQUFLLElBQUlNLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUc1RyxZQUFZLENBQUNtQyxNQUFqQyxFQUF5QyxFQUFFeUUsQ0FBM0MsRUFBOEM7VUFDNUNOLEtBQUssR0FBR0ssU0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFhTixPQUFiLENBQXFCckcsWUFBWSxDQUFDNEcsQ0FBRCxDQUFaLENBQWdCLENBQWhCLENBQXJCLENBQVI7O1VBRUEsSUFBSU4sS0FBSyxJQUFJLENBQWIsRUFBZ0I7WUFDZEgsS0FBSyxHQUFHUyxDQUFSO1lBQ0FsQixXQUFXLENBQUMsQ0FBRCxDQUFYLEdBQWlCLEVBQWpCOztZQUVBLEtBQUssSUFBSW1CLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUc3RyxZQUFZLENBQUM0RyxDQUFELENBQVosQ0FBZ0J6RSxNQUFwQyxFQUE0QyxFQUFFMEUsQ0FBOUMsRUFBaUQ7Y0FDL0NuQixXQUFXLENBQUMsQ0FBRCxDQUFYLENBQWVtQixDQUFmLElBQW9CN0csWUFBWSxDQUFDNEcsQ0FBRCxDQUFaLENBQWdCQyxDQUFoQixDQUFwQjtZQUNEOztZQUNEO1VBQ0Q7UUFDRjs7UUFFRCxJQUFJQyxXQUFXLEdBQUcsQ0FBbEI7O1FBQ0EsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHSixTQUFTLENBQUN4RSxNQUE5QixFQUFzQzRFLENBQUMsRUFBdkMsRUFBMkM7VUFDekN2QyxJQUFJLEdBQUdtQyxTQUFTLENBQUNJLENBQUQsQ0FBaEI7VUFDQVQsS0FBSyxHQUFHOUIsSUFBSSxDQUFDNkIsT0FBTCxDQUFhckcsWUFBWSxDQUFDbUcsS0FBRCxDQUFaLENBQW9CLENBQXBCLENBQWIsQ0FBUjs7VUFFQSxJQUFJRyxLQUFLLElBQUksQ0FBYixFQUFnQjtZQUNkQyxTQUFTLEdBQUcvQixJQUFJLENBQUM2QixPQUFMLENBQWEsR0FBYixFQUFrQkMsS0FBSyxHQUFHLENBQTFCLENBQVo7WUFDQUUsR0FBRyxHQUFHaEMsSUFBSSxDQUFDNkIsT0FBTCxDQUFhLEdBQWIsRUFBa0JFLFNBQVMsR0FBRyxDQUE5QixDQUFOO1lBQ0FYLFdBQVcsR0FBR3BCLElBQUksQ0FBQ2tDLFNBQUwsQ0FBZUgsU0FBUyxHQUFHLENBQTNCLEVBQThCQyxHQUE5QixFQUFtQzVCLElBQW5DLEVBQWQ7O1lBRUEsSUFBSTRCLEdBQUcsR0FBR0QsU0FBVixFQUFxQjtjQUNuQkQsS0FBSyxHQUFHOUIsSUFBSSxDQUFDNkIsT0FBTCxDQUFhckcsWUFBWSxDQUFDbUcsS0FBRCxDQUFaLENBQW9CLENBQXBCLENBQWIsRUFBcUNLLEdBQUcsR0FBRyxDQUEzQyxDQUFSOztjQUNBLElBQUlGLEtBQUssSUFBSSxDQUFiLEVBQWdCO2dCQUNkQyxTQUFTLEdBQUcvQixJQUFJLENBQUM2QixPQUFMLENBQWEsR0FBYixFQUFrQkMsS0FBSyxHQUFHLENBQTFCLENBQVo7Z0JBQ0FFLEdBQUcsR0FBR2hDLElBQUksQ0FBQzZCLE9BQUwsQ0FBYSxHQUFiLEVBQWtCRSxTQUFTLEdBQUcsQ0FBOUIsQ0FBTjtnQkFDQVYsVUFBVSxHQUFHckIsSUFBSSxDQUFDa0MsU0FBTCxDQUFlSCxTQUFTLEdBQUcsQ0FBM0IsRUFBOEJDLEdBQTlCLEVBQW1DNUIsSUFBbkMsRUFBYjtjQUNEO1lBQ0Y7O1lBRUQsSUFBSTRCLEdBQUcsR0FBR0QsU0FBVixFQUFxQjtjQUNuQkQsS0FBSyxHQUFHOUIsSUFBSSxDQUFDNkIsT0FBTCxDQUFhckcsWUFBWSxDQUFDbUcsS0FBRCxDQUFaLENBQW9CLENBQXBCLENBQWIsRUFBcUNLLEdBQUcsR0FBRyxDQUEzQyxDQUFSOztjQUNBLElBQUlGLEtBQUssSUFBSSxDQUFiLEVBQWdCO2dCQUNkQyxTQUFTLEdBQUcvQixJQUFJLENBQUM2QixPQUFMLENBQWEsR0FBYixFQUFrQkMsS0FBSyxHQUFHLENBQTFCLENBQVo7Z0JBQ0FFLEdBQUcsR0FBR2hDLElBQUksQ0FBQzZCLE9BQUwsQ0FBYSxHQUFiLEVBQWtCRSxTQUFTLEdBQUcsQ0FBOUIsQ0FBTjtnQkFDQVQsT0FBTyxHQUFHdEIsSUFBSSxDQUFDa0MsU0FBTCxDQUFlSCxTQUFTLEdBQUcsQ0FBM0IsRUFBOEJDLEdBQTlCLEVBQW1DNUIsSUFBbkMsRUFBVjtjQUNEO1lBQ0Y7O1lBRUQsSUFBSTRCLEdBQUcsR0FBR0QsU0FBVixFQUFxQjtjQUNuQkQsS0FBSyxHQUFHOUIsSUFBSSxDQUFDNkIsT0FBTCxDQUFhckcsWUFBWSxDQUFDbUcsS0FBRCxDQUFaLENBQW9CLENBQXBCLENBQWIsRUFBcUNLLEdBQUcsR0FBRyxDQUEzQyxDQUFSOztjQUNBLElBQUlGLEtBQUssSUFBSSxDQUFiLEVBQWdCO2dCQUNkQyxTQUFTLEdBQUcvQixJQUFJLENBQUM2QixPQUFMLENBQWEsR0FBYixFQUFrQkMsS0FBSyxHQUFHLENBQTFCLENBQVo7Z0JBQ0FFLEdBQUcsR0FBR2hDLElBQUksQ0FBQzZCLE9BQUwsQ0FBYSxHQUFiLEVBQWtCRSxTQUFTLEdBQUcsQ0FBOUIsQ0FBTjtnQkFDQVIsU0FBUyxHQUFHdkIsSUFBSSxDQUFDa0MsU0FBTCxDQUFlSCxTQUFTLEdBQUcsQ0FBM0IsRUFBOEJDLEdBQTlCLEVBQW1DNUIsSUFBbkMsRUFBWjtjQUNEO1lBQ0Y7O1lBRUQsSUFBSTRCLEdBQUcsR0FBR0QsU0FBVixFQUFxQjtjQUNuQkQsS0FBSyxHQUFHOUIsSUFBSSxDQUFDNkIsT0FBTCxDQUFhckcsWUFBWSxDQUFDbUcsS0FBRCxDQUFaLENBQW9CLENBQXBCLENBQWIsRUFBcUNLLEdBQUcsR0FBRyxDQUEzQyxDQUFSOztjQUNBLElBQUlGLEtBQUssSUFBSSxDQUFiLEVBQWdCO2dCQUNkQyxTQUFTLEdBQUcvQixJQUFJLENBQUM2QixPQUFMLENBQWEsR0FBYixFQUFrQkMsS0FBSyxHQUFHLENBQTFCLENBQVo7Z0JBQ0FFLEdBQUcsR0FBR2hDLElBQUksQ0FBQzZCLE9BQUwsQ0FBYSxHQUFiLEVBQWtCRSxTQUFTLEdBQUcsQ0FBOUIsQ0FBTjtnQkFDQVAsT0FBTyxHQUFHeEIsSUFBSSxDQUFDa0MsU0FBTCxDQUFlSCxTQUFTLEdBQUcsQ0FBM0IsRUFBOEJDLEdBQTlCLEVBQW1DNUIsSUFBbkMsRUFBVjtjQUNEO1lBQ0Y7O1lBRUQsSUFBSTRCLEdBQUcsR0FBR0QsU0FBVixFQUFxQjtjQUNuQkQsS0FBSyxHQUFHOUIsSUFBSSxDQUFDNkIsT0FBTCxDQUFhckcsWUFBWSxDQUFDbUcsS0FBRCxDQUFaLENBQW9CLENBQXBCLENBQWIsRUFBcUNLLEdBQUcsR0FBRyxDQUEzQyxDQUFSOztjQUNBLElBQUlGLEtBQUssSUFBSSxDQUFiLEVBQWdCO2dCQUNkQyxTQUFTLEdBQUcvQixJQUFJLENBQUM2QixPQUFMLENBQWEsR0FBYixFQUFrQkMsS0FBSyxHQUFHLENBQTFCLENBQVo7Z0JBQ0FFLEdBQUcsR0FBR2hDLElBQUksQ0FBQzZCLE9BQUwsQ0FBYSxHQUFiLEVBQWtCRSxTQUFTLEdBQUcsQ0FBOUIsQ0FBTjtnQkFDQU4sU0FBUyxHQUFHekIsSUFBSSxDQUFDa0MsU0FBTCxDQUFlSCxTQUFTLEdBQUcsQ0FBM0IsRUFBOEJDLEdBQTlCLEVBQW1DNUIsSUFBbkMsRUFBWjtjQUNEO1lBQ0Y7O1lBRUQsSUFBSTRCLEdBQUcsR0FBR0QsU0FBVixFQUFxQjtjQUNuQkQsS0FBSyxHQUFHOUIsSUFBSSxDQUFDNkIsT0FBTCxDQUFhckcsWUFBWSxDQUFDbUcsS0FBRCxDQUFaLENBQW9CLENBQXBCLENBQWIsRUFBcUNLLEdBQUcsR0FBRyxDQUEzQyxDQUFSOztjQUNBLElBQUlGLEtBQUssSUFBSSxDQUFiLEVBQWdCO2dCQUNkQyxTQUFTLEdBQUcvQixJQUFJLENBQUM2QixPQUFMLENBQWEsR0FBYixFQUFrQkMsS0FBSyxHQUFHLENBQTFCLENBQVo7Z0JBQ0FFLEdBQUcsR0FBR2hDLElBQUksQ0FBQ3JDLE1BQVg7Z0JBQ0ErRCxVQUFVLEdBQUcxQixJQUFJLENBQUNrQyxTQUFMLENBQWVILFNBQVMsR0FBRyxDQUEzQixFQUE4QkMsR0FBOUIsRUFBbUM1QixJQUFuQyxFQUFiO2NBRUQ7WUFDRjs7WUFDRGMsV0FBVyxDQUFDb0IsV0FBVyxFQUFaLENBQVgsR0FBNkIsQ0FBQ2xCLFdBQUQsRUFBY0MsVUFBZCxFQUEwQkMsT0FBMUIsRUFBbUNDLFNBQW5DLEVBQThDQyxPQUE5QyxFQUF1REMsU0FBdkQsRUFBa0VDLFVBQWxFLEVBQThFUCxjQUE5RSxDQUE3QjtVQUNEO1FBQ0Y7TUFDRjtJQUNGOztJQUVELElBQUksQ0FBQy9DLGdCQUFFb0UsT0FBRixDQUFVUCxZQUFWLEVBQXdCLEVBQXhCLENBQUQsSUFBZ0MsQ0FBQzdELGdCQUFFcUUsV0FBRixDQUFjUixZQUFkLENBQWpDLElBQWdFLENBQUM3RCxnQkFBRW9FLE9BQUYsQ0FBVVAsWUFBVixFQUF3QixPQUF4QixDQUFyRSxFQUF1RztNQUNyRyxPQUFPZixXQUFQO0lBQ0QsQ0FGRCxNQUVPO01BQ0wsTUFBTSxJQUFJbkMsS0FBSixDQUFXLDBDQUF5Q2lCLElBQUssR0FBekQsQ0FBTjtJQUNEO0VBQ0YsQ0FySlksQ0FBYjtBQXNKRCxDQXZKRDs7QUF5SkFuRSxNQUFNLENBQUM2RyxNQUFQLENBQWNuSCxVQUFkLEVBQTBCRixRQUExQixFQUFvQ0MsT0FBcEM7ZUFLZUMsVSJ9
|
|
329
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3BlcmZvcm1hbmNlLmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsIk5FVFdPUktfS0VZUyIsIkNQVV9LRVlTIiwiQkFUVEVSWV9LRVlTIiwiTUVNT1JZX0tFWVMiLCJTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFUyIsIk9iamVjdCIsImZyZWV6ZSIsImNwdWluZm8iLCJtZW1vcnlpbmZvIiwiYmF0dGVyeWluZm8iLCJuZXR3b3JraW5mbyIsIk1FTUlORk9fVElUTEVTIiwiTkFUSVZFIiwiREFMVklLIiwiRUdMIiwiR0wiLCJNVFJBQ0siLCJUT1RBTCIsIkhFQVAiLCJSRVRSWV9QQVVTRV9NUyIsInBhcnNlTWVtaW5mb0ZvckFwaTE5VG8yOSIsImVudHJpZXMiLCJ2YWxEaWN0IiwidHlwZSIsInN1YlR5cGUiLCJuYXRpdmVQc3MiLCJuYXRpdmVQcml2YXRlRGlydHkiLCJuYXRpdmVIZWFwU2l6ZSIsIm5hdGl2ZUhlYXBBbGxvY2F0ZWRTaXplIiwiZGFsdmlrUHNzIiwiZGFsdmlrUHJpdmF0ZURpcnR5IiwiZWdsUHNzIiwiZWdsUHJpdmF0ZURpcnR5IiwiZ2xQc3MiLCJnbFByaXZhdGVEaXJ0eSIsImxlbmd0aCIsInRvdGFsUHNzIiwidG90YWxQcml2YXRlRGlydHkiLCJwYXJzZU1lbWluZm9Gb3JBcGlCZWxvdzE5IiwicGFyc2VNZW1pbmZvRm9yQXBpQWJvdmUyOSIsIm5hdGl2ZVJzcyIsImRhbHZpa1JzcyIsInRvdGFsUnNzIiwiZ2V0UGVyZm9ybWFuY2VEYXRhVHlwZXMiLCJfIiwia2V5cyIsImdldFBlcmZvcm1hbmNlRGF0YSIsInBhY2thZ2VOYW1lIiwiZGF0YVR5cGUiLCJyZXRyaWVzIiwidG9Mb3dlciIsImdldEJhdHRlcnlJbmZvIiwiZ2V0Q1BVSW5mbyIsImdldE1lbW9yeUluZm8iLCJnZXROZXR3b3JrVHJhZmZpY0luZm8iLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZXRyeUludGVydmFsIiwib3V0cHV0IiwiYWRiIiwic2hlbGwiLCJlIiwic3RkZXJyIiwibG9nIiwiaW5mbyIsInVzYWdlc1BhdHRlcm4iLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaCIsImV4ZWMiLCJkZWJ1ZyIsImNtZCIsImRhdGEiLCJwb3dlciIsInBhcnNlSW50Iiwic3BsaXQiLCJ0cmltIiwiTnVtYmVyIiwiaXNOYU4iLCJjbG9uZSIsInRvU3RyaW5nIiwiYXBpTGV2ZWwiLCJnZXRBcGlMZXZlbCIsImxpbmUiLCJmaWx0ZXIiLCJCb29sZWFuIiwiaGVhZGVycyIsInZhbHVlcyIsIm1hcCIsImhlYWRlciIsInJldHVyblZhbHVlIiwiYnVja2V0RHVyYXRpb24iLCJidWNrZXRTdGFydCIsImFjdGl2ZVRpbWUiLCJyeEJ5dGVzIiwicnhQYWNrZXRzIiwidHhCeXRlcyIsInR4UGFja2V0cyIsIm9wZXJhdGlvbnMiLCJpbmRleCIsImZyb21YdHN0YXRzIiwiaW5kZXhPZiIsInN0YXJ0IiwiZGVsaW1pdGVyIiwiZW5kIiwicGVuZGluZ0J5dGVzIiwic3Vic3RyaW5nIiwiYXJyYXlMaXN0IiwiaiIsImsiLCJyZXR1cm5JbmRleCIsImkiLCJpc0VxdWFsIiwiaXNVbmRlZmluZWQiLCJhc3NpZ24iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvcGVyZm9ybWFuY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHJldHJ5SW50ZXJ2YWwgfSBmcm9tICdhc3luY2JveCc7XG5cbmNvbnN0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb25zdCBORVRXT1JLX0tFWVMgPSBbXG4gIFsnYnVja2V0U3RhcnQnLCAnYWN0aXZlVGltZScsICdyeEJ5dGVzJywgJ3J4UGFja2V0cycsICd0eEJ5dGVzJywgJ3R4UGFja2V0cycsICdvcGVyYXRpb25zJywgJ2J1Y2tldER1cmF0aW9uJ10sXG4gIFsnc3QnLCAnYWN0aXZlVGltZScsICdyYicsICdycCcsICd0YicsICd0cCcsICdvcCcsICdidWNrZXREdXJhdGlvbiddXG5dO1xuY29uc3QgQ1BVX0tFWVMgPSBbJ3VzZXInLCAna2VybmVsJ107XG5jb25zdCBCQVRURVJZX0tFWVMgPSBbJ3Bvd2VyJ107XG5jb25zdCBNRU1PUllfS0VZUyA9IFtcbiAgJ3RvdGFsUHJpdmF0ZURpcnR5JywgJ25hdGl2ZVByaXZhdGVEaXJ0eScsICdkYWx2aWtQcml2YXRlRGlydHknLFxuICAnZWdsUHJpdmF0ZURpcnR5JywgJ2dsUHJpdmF0ZURpcnR5JyxcbiAgJ3RvdGFsUHNzJywgJ25hdGl2ZVBzcycsICdkYWx2aWtQc3MnLCAnZWdsUHNzJywgJ2dsUHNzJyxcbiAgJ25hdGl2ZUhlYXBBbGxvY2F0ZWRTaXplJywgJ25hdGl2ZUhlYXBTaXplJyxcbiAgJ25hdGl2ZVJzcycsICdkYWx2aWtSc3MnLCAndG90YWxSc3MnXG5dO1xuY29uc3QgU1VQUE9SVEVEX1BFUkZPUk1BTkNFX0RBVEFfVFlQRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgY3B1aW5mbzogJ3RoZSBhbW91bnQgb2YgY3B1IGJ5IHVzZXIgYW5kIGtlcm5lbCBwcm9jZXNzIC0gY3B1IGluZm9ybWF0aW9uIGZvciBhcHBsaWNhdGlvbnMgb24gcmVhbCBkZXZpY2VzIGFuZCBzaW11bGF0b3JzJyxcbiAgbWVtb3J5aW5mbzogJ3RoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgYnkgdGhlIHByb2Nlc3MgLSBtZW1vcnkgaW5mb3JtYXRpb24gZm9yIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZXMgYW5kIHNpbXVsYXRvcnMnLFxuICBiYXR0ZXJ5aW5mbzogJ3RoZSByZW1haW5pbmcgYmF0dGVyeSBwb3dlciAtIGJhdHRlcnkgcG93ZXIgaW5mb3JtYXRpb24gZm9yIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZXMgYW5kIHNpbXVsYXRvcnMnLFxuICBuZXR3b3JraW5mbzogJ3RoZSBuZXR3b3JrIHN0YXRpc3RpY3MgLSBuZXR3b3JrIHJ4L3R4IGluZm9ybWF0aW9uIGZvciBhcHBsaWNhdGlvbnMgb24gcmVhbCBkZXZpY2VzIGFuZCBzaW11bGF0b3JzJ1xufSk7XG5jb25zdCBNRU1JTkZPX1RJVExFUyA9IE9iamVjdC5mcmVlemUoe1xuICBOQVRJVkU6ICdOYXRpdmUnLFxuICBEQUxWSUs6ICdEYWx2aWsnLFxuICBFR0w6ICdFR0wnLFxuICBHTDogJ0dMJyxcbiAgTVRSQUNLOiAnbXRyYWNrJyxcbiAgVE9UQUw6ICdUT1RBTCcsXG4gIEhFQVA6ICdIZWFwJ1xufSk7XG5jb25zdCBSRVRSWV9QQVVTRV9NUyA9IDEwMDA7XG5cbi8qKlxuICogQVBJIGxldmVsIGJldHdlZW4gMTggYW5kIDMwXG4gKiBbJzxTeXN0ZW0gVHlwZT4nLCAnPE1lbW9yeSBUeXBlPicsIDxwc3MgdG90YWw+LCA8cHJpdmF0ZSBkaXJ0eT4sIDxwcml2YXRlIGNsZWFuPiwgPHN3YXBQc3MgZGlydHk+LCA8aGVhcCBzaXplPiwgPGhlYXAgYWxsb2M+LCA8aGVhcCBmcmVlPl1cbiAqIGV4Y2VwdCAnVE9UQUwnLCB3aGljaCBza2lwcyB0aGUgc2Vjb25kIHR5cGUgbmFtZVxuICogISEhIHZhbERpY3QgZ2V0cyBtdXRhdGVkXG4gKi9cbmZ1bmN0aW9uIHBhcnNlTWVtaW5mb0ZvckFwaTE5VG8yOSAoZW50cmllcywgdmFsRGljdCkge1xuICBjb25zdCBbdHlwZSwgc3ViVHlwZV0gPSBlbnRyaWVzO1xuICBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTkFUSVZFICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLkhFQVApIHtcbiAgICBbLCwgdmFsRGljdC5uYXRpdmVQc3MsIHZhbERpY3QubmF0aXZlUHJpdmF0ZURpcnR5LCwsIHZhbERpY3QubmF0aXZlSGVhcFNpemUsIHZhbERpY3QubmF0aXZlSGVhcEFsbG9jYXRlZFNpemVdID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5EQUxWSUsgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuSEVBUCkge1xuICAgIFssLCB2YWxEaWN0LmRhbHZpa1BzcywgdmFsRGljdC5kYWx2aWtQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5FR0wgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTVRSQUNLKSB7XG4gICAgWywsIHZhbERpY3QuZWdsUHNzLCB2YWxEaWN0LmVnbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkdMICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLk1UUkFDSykge1xuICAgIFssLCB2YWxEaWN0LmdsUHNzLCB2YWxEaWN0LmdsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuVE9UQUwgJiYgZW50cmllcy5sZW5ndGggPT09IDgpIHtcbiAgICAvLyB0aGVyZSBhcmUgdHdvIHRvdGFscywgYW5kIHdlIG9ubHkgd2FudCB0aGUgZnVsbCBsaXN0aW5nLCB3aGljaCBoYXMgOCBlbnRyaWVzXG4gICAgWywgdmFsRGljdC50b3RhbFBzcywgdmFsRGljdC50b3RhbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9XG59XG5cbi8qKlxuICogWyc8U3lzdGVtIFR5cGUnLCAnPHBwcz4nLCAnPHNoYXJlZCBkaXJ0eT4nLCAnPHByaXZhdGUgZGlydHk+JywgJzxoZWFwIHNpemU+JywgJzxoZWFwIGFsbG9jPicsICc8aGVhcCBmcmVlPiddXG4gKiAhISEgdmFsRGljdCBnZXRzIG11dGF0ZWRcbiAqL1xuZnVuY3Rpb24gcGFyc2VNZW1pbmZvRm9yQXBpQmVsb3cxOSAoZW50cmllcywgdmFsRGljdCkge1xuICBjb25zdCB0eXBlID0gZW50cmllc1swXTtcbiAgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLk5BVElWRSkge1xuICAgIFssIHZhbERpY3QubmF0aXZlUHNzLCwgdmFsRGljdC5uYXRpdmVQcml2YXRlRGlydHksIHZhbERpY3QubmF0aXZlSGVhcFNpemUsIHZhbERpY3QubmF0aXZlSGVhcEFsbG9jYXRlZFNpemVdID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5EQUxWSUspIHtcbiAgICBbLCB2YWxEaWN0LmRhbHZpa1BzcywsIHZhbERpY3QuZGFsdmlrUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuRUdMKSB7XG4gICAgWywgdmFsRGljdC5lZ2xQc3MsLCB2YWxEaWN0LmVnbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkdMKSB7XG4gICAgWywgdmFsRGljdC5nbFBzcywsIHZhbERpY3QuZ2xQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5UT1RBTCkge1xuICAgIFssIHZhbERpY3QudG90YWxQc3MsLCB2YWxEaWN0LnRvdGFsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH1cbn1cblxuLyoqXG4gKiBBUEkgbGV2ZWwgMzAgYW5kIGFib3ZlXG4gKiBbJzxTeXN0ZW0gVHlwZT4nLCAnPE1lbW9yeSBUeXBlPicsIDxwc3MgdG90YWw+LCA8cHJpdmF0ZSBkaXJ0eT4sIDxwcml2YXRlIGNsZWFuPiwgPHN3YXBQc3MgZGlydHk+LCA8cnNzIHRvdGFsPiwgPGhlYXAgc2l6ZT4sIDxoZWFwIGFsbG9jPiwgPGhlYXAgZnJlZT5dXG4gKiAhISEgdmFsRGljdCBnZXRzIG11dGF0ZWRcbiAqL1xuZnVuY3Rpb24gcGFyc2VNZW1pbmZvRm9yQXBpQWJvdmUyOSAoZW50cmllcywgdmFsRGljdCkge1xuICBjb25zdCBbdHlwZSwgc3ViVHlwZV0gPSBlbnRyaWVzO1xuICBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTkFUSVZFICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLkhFQVApIHtcbiAgICBbLCwgdmFsRGljdC5uYXRpdmVQc3MsIHZhbERpY3QubmF0aXZlUHJpdmF0ZURpcnR5LCwsIHZhbERpY3QubmF0aXZlUnNzLCB2YWxEaWN0Lm5hdGl2ZUhlYXBTaXplLCB2YWxEaWN0Lm5hdGl2ZUhlYXBBbGxvY2F0ZWRTaXplXSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuREFMVklLICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLkhFQVApIHtcbiAgICBbLCwgdmFsRGljdC5kYWx2aWtQc3MsIHZhbERpY3QuZGFsdmlrUHJpdmF0ZURpcnR5LCwsIHZhbERpY3QuZGFsdmlrUnNzXSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuRUdMICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLk1UUkFDSykge1xuICAgIFssLCB2YWxEaWN0LmVnbFBzcywgdmFsRGljdC5lZ2xQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5HTCAmJiBzdWJUeXBlID09PSBNRU1JTkZPX1RJVExFUy5NVFJBQ0spIHtcbiAgICBbLCwgdmFsRGljdC5nbFBzcywgdmFsRGljdC5nbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLlRPVEFMICYmIGVudHJpZXMubGVuZ3RoID09PSA5KSB7XG4gICAgLy8gaGFzIDkgZW50cmllc1xuICAgIFssIHZhbERpY3QudG90YWxQc3MsIHZhbERpY3QudG90YWxQcml2YXRlRGlydHksLCwgdmFsRGljdC50b3RhbFJzc10gPSBlbnRyaWVzO1xuICB9XG59XG5cbi8vXG4vLyByZXR1cm5zIHRoZSBpbmZvcm1hdGlvbiB0eXBlIG9mIHRoZSBzeXN0ZW0gc3RhdGUgd2hpY2ggaXMgc3VwcG9ydGVkIHRvIHJlYWQgYXMgbGlrZSBjcHUsIG1lbW9yeSwgbmV0d29yayB0cmFmZmljLCBhbmQgYmF0dGVyeS5cbi8vIG91dHB1dCAtIGFycmF5IGxpa2UgYmVsb3dcbi8vIFtjcHVpbmZvLCBiYXR0ZXJ5aW5mbywgbmV0d29ya2luZm8sIG1lbW9yeWluZm9dXG4vL1xuY29tbWFuZHMuZ2V0UGVyZm9ybWFuY2VEYXRhVHlwZXMgPSBmdW5jdGlvbiBnZXRQZXJmb3JtYW5jZURhdGFUeXBlcyAoKSB7XG4gIHJldHVybiBfLmtleXMoU1VQUE9SVEVEX1BFUkZPUk1BTkNFX0RBVEFfVFlQRVMpO1xufTtcblxuLyoqXG4gKiBAcmV0dXJucyBUaGUgaW5mb3JtYXRpb24gdHlwZSBvZiB0aGUgc3lzdGVtIHN0YXRlIHdoaWNoIGlzIHN1cHBvcnRlZCB0byByZWFkIGFzIGxpa2UgY3B1LCBtZW1vcnksIG5ldHdvcmsgdHJhZmZpYywgYW5kIGJhdHRlcnkuXG4gKiBpbnB1dCAtIChwYWNrYWdlTmFtZSkgdGhlIHBhY2thZ2UgbmFtZSBvZiB0aGUgYXBwbGljYXRpb25cbiAqICAgICAgICAoZGF0YVR5cGUpIHRoZSB0eXBlIG9mIHN5c3RlbSBzdGF0ZSB3aGljaCB3YW50cyB0byByZWFkLiBJdCBzaG91bGQgYmUgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFU1xuICogICAgICAgIChkYXRhUmVhZFRpbWVvdXQpIHRoZSBudW1iZXIgb2YgYXR0ZW1wdHMgdG8gcmVhZFxuICogb3V0cHV0IC0gdGFibGUgb2YgdGhlIHBlcmZvcm1hbmNlIGRhdGEsIFRoZSBmaXJzdCBsaW5lIG9mIHRoZSB0YWJsZSByZXByZXNlbnRzIHRoZSB0eXBlIG9mIGRhdGEuIFRoZSByZW1haW5pbmcgbGluZXMgcmVwcmVzZW50IHRoZSB2YWx1ZXMgb2YgdGhlIGRhdGEuXG4gKlxuICogaW4gY2FzZSBvZiBiYXR0ZXJ5IGluZm8gOiBbW3Bvd2VyXSwgWzIzXV1cbiAqIGluIGNhc2Ugb2YgbWVtb3J5IGluZm8gOiAgW1t0b3RhbFByaXZhdGVEaXJ0eSwgbmF0aXZlUHJpdmF0ZURpcnR5LCBkYWx2aWtQcml2YXRlRGlydHksIGVnbFByaXZhdGVEaXJ0eSwgZ2xQcml2YXRlRGlydHksIHRvdGFsUHNzLFxuICogICBuYXRpdmVQc3MsIGRhbHZpa1BzcywgZWdsUHNzLCBnbFBzcywgbmF0aXZlSGVhcEFsbG9jYXRlZFNpemUsIG5hdGl2ZUhlYXBTaXplXSwgWzE4MzYwLCA4Mjk2LCA2MTMyLCBudWxsLCBudWxsLCA0MjU4OCwgODQwNiwgNzAyNCwgbnVsbCwgbnVsbCwgMjY1MTksIDEwMzQ0XV1cbiAqIGluIGNhc2Ugb2YgbmV0d29yayBpbmZvIDogW1tidWNrZXRTdGFydCwgYWN0aXZlVGltZSwgcnhCeXRlcywgcnhQYWNrZXRzLCB0eEJ5dGVzLCB0eFBhY2tldHMsIG9wZXJhdGlvbnMsIGJ1Y2tldER1cmF0aW9uLF0sXG4gKiAgIFsxNDc4MDkxNjAwMDAwLCBudWxsLCAxMDk5MDc1LCA2MTA5NDcsIDkyOCwgMTE0MzYyLCA3NjksIDAsIDM2MDAwMDBdLCBbMTQ3ODA5NTIwMDAwMCwgbnVsbCwgMTMwNjMwMCwgNDA1OTk3LCA1MDksIDQ2MzU5LCAzNzAsIDAsIDM2MDAwMDBdXVxuICogaW4gY2FzZSBvZiBuZXR3b3JrIGluZm8gOiBbW3N0LCBhY3RpdmVUaW1lLCByYiwgcnAsIHRiLCB0cCwgb3AsIGJ1Y2tldER1cmF0aW9uXSwgWzE0NzgwODgwMDAsIG51bGwsIG51bGwsIDMyMTE1Mjk2LCAzNDI5MSwgMjk1NjgwNSwgMjU3MDUsIDAsIDM2MDBdLFxuICogICBbMTQ3ODA5MTYwMCwgbnVsbCwgbnVsbCwgMjcxNDY4MywgMTE4MjEsIDE0MjA1NjQsIDEyNjUwLCAwLCAzNjAwXSwgWzE0NzgwOTUyMDAsIG51bGwsIG51bGwsIDEwMDc5MjEzLCAxOTk2MiwgMjQ4NzcwNSwgMjAwMTUsIDAsIDM2MDBdLFxuICogICBbMTQ3ODA5ODgwMCwgbnVsbCwgbnVsbCwgNDQ0NDQzMywgMTAyMjcsIDE0MzAzNTYsIDEwNDkzLCAwLCAzNjAwXV1cbiAqIGluIGNhc2Ugb2YgY3B1IGluZm8gOiBbW3VzZXIsIGtlcm5lbF0sIFswLjksIDEuM11dXG4gKi9cbmNvbW1hbmRzLmdldFBlcmZvcm1hbmNlRGF0YSA9IGFzeW5jIGZ1bmN0aW9uIGdldFBlcmZvcm1hbmNlRGF0YSAocGFja2FnZU5hbWUsIGRhdGFUeXBlLCByZXRyaWVzID0gMikge1xuICBzd2l0Y2ggKF8udG9Mb3dlcihkYXRhVHlwZSkpIHtcbiAgICBjYXNlICdiYXR0ZXJ5aW5mbyc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRCYXR0ZXJ5SW5mbyhyZXRyaWVzKTtcbiAgICBjYXNlICdjcHVpbmZvJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldENQVUluZm8ocGFja2FnZU5hbWUsIHJldHJpZXMpO1xuICAgIGNhc2UgJ21lbW9yeWluZm8nOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TWVtb3J5SW5mbyhwYWNrYWdlTmFtZSwgcmV0cmllcyk7XG4gICAgY2FzZSAnbmV0d29ya2luZm8nOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TmV0d29ya1RyYWZmaWNJbmZvKHJldHJpZXMpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHBlcmZvcm1hbmNlIGRhdGEgb2YgdHlwZSAnJHtkYXRhVHlwZX0nIGZvdW5kLiBgICtcbiAgICAgICAgYE9ubHkgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHN1cHBvcnRlZDogJHtKU09OLnN0cmluZ2lmeShTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFUywgJyAnLCAyKX1gKTtcbiAgfVxufTtcblxuaGVscGVycy5nZXRDUFVJbmZvID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q1BVSW5mbyAocGFja2FnZU5hbWUsIHJldHJpZXMgPSAyKSB7XG4gIC8vIFRPRE86IGZpZ3VyZSBvdXQgd2h5IHRoaXMgaXNcbiAgLy8gc29tZXRpbWVzLCB0aGUgZnVuY3Rpb24gb2YgJ2FkYi5zaGVsbCcgZmFpbHMuIHdoZW4gSSB0ZXN0ZWQgdGhpcyBmdW5jdGlvbiBvbiB0aGUgdGFyZ2V0IG9mICdHYWxheHkgTm90ZTUnLFxuICAvLyBhZGIuc2hlbGwoZHVtcHN5cyBjcHVpbmZvKSByZXR1cm5zIGNwdSBkYXRhcyBmb3Igb3RoZXIgYXBwbGljYXRpb24gcGFja2FnZXMsIGJ1dCBJIGNhbid0IGZpbmQgdGhlIGRhdGEgZm9yIHBhY2thZ2VOYW1lLlxuICAvLyBJdCB1c3VhbGx5IGZhaWxzIDMwIHRpbWVzIGFuZCBzdWNjZXNzIGZvciB0aGUgbmV4dCB0aW1lLFxuICAvLyBTaW5jZSB0aGVuLCBoZSBoYXMgY29udGludWVkIHRvIHN1Y2NlZWQuXG4gIHJldHVybiBhd2FpdCByZXRyeUludGVydmFsKHJldHJpZXMsIFJFVFJZX1BBVVNFX01TLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IG91dHB1dDtcbiAgICB0cnkge1xuICAgICAgb3V0cHV0ID0gYXdhaXQgdGhpcy5hZGIuc2hlbGwoWydkdW1wc3lzJywgJ2NwdWluZm8nXSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUuc3RkZXJyKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oZS5zdGRlcnIpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgLy8gYG91dHB1dGAgd2lsbCBiZSBzb21ldGhpbmcgbGlrZVxuICAgIC8vICAgICswJSAyMjA5L2lvLmFwcGl1bS5hbmRyb2lkLmFwaXM6IDAuMSUgdXNlciArIDAuMiUga2VybmVsIC8gZmF1bHRzOiA3MCBtaW5vclxuICAgIGNvbnN0IHVzYWdlc1BhdHRlcm4gPVxuICAgICAgbmV3IFJlZ0V4cChgXi4rXFxcXC8ke18uZXNjYXBlUmVnRXhwKHBhY2thZ2VOYW1lKX06XFxcXEQrKFtcXFxcZC5dKyklXFxcXHMrdXNlclxcXFxzK1xcXFwrXFxcXHMrKFtcXFxcZC5dKyklXFxcXHMra2VybmVsYCwgJ20nKTtcbiAgICBjb25zdCBtYXRjaCA9IHVzYWdlc1BhdHRlcm4uZXhlYyhvdXRwdXQpO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKG91dHB1dCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBjcHUgdXNhZ2UgZGF0YSBmb3IgJyR7cGFja2FnZU5hbWV9Jy4gQ2hlY2sgdGhlIHNlcnZlciBsb2cgZm9yIG1vcmUgZGV0YWlsc2ApO1xuICAgIH1cbiAgICByZXR1cm4gW0NQVV9LRVlTLCBbbWF0Y2hbMV0sIG1hdGNoWzJdXV07XG4gIH0pO1xufTtcblxuaGVscGVycy5nZXRCYXR0ZXJ5SW5mbyA9IGFzeW5jIGZ1bmN0aW9uIGdldEJhdHRlcnlJbmZvIChyZXRyaWVzID0gMikge1xuICByZXR1cm4gYXdhaXQgcmV0cnlJbnRlcnZhbChyZXRyaWVzLCBSRVRSWV9QQVVTRV9NUywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBjbWQgPSBbJ2R1bXBzeXMnLCAnYmF0dGVyeScsICd8JywgJ2dyZXAnLCAnbGV2ZWwnXTtcbiAgICBsZXQgZGF0YSA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG4gICAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ05vIGRhdGEgZnJvbSBkdW1wc3lzJyk7IC8vZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuXG4gICAgbGV0IHBvd2VyID0gcGFyc2VJbnQoKGRhdGEuc3BsaXQoJzonKVsxXSB8fCAnJykudHJpbSgpLCAxMCk7XG5cbiAgICBpZiAoIU51bWJlci5pc05hTihwb3dlcikpIHtcbiAgICAgIHJldHVybiBbXy5jbG9uZShCQVRURVJZX0tFWVMpLCBbcG93ZXIudG9TdHJpbmcoKV1dO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBiYXR0ZXJ5IGRhdGE6ICcke2RhdGF9J2ApO1xuICAgIH1cbiAgfSk7XG59O1xuXG5oZWxwZXJzLmdldE1lbW9yeUluZm8gPSBhc3luYyBmdW5jdGlvbiBnZXRNZW1vcnlJbmZvIChwYWNrYWdlTmFtZSwgcmV0cmllcyA9IDIpIHtcbiAgcmV0dXJuIGF3YWl0IHJldHJ5SW50ZXJ2YWwocmV0cmllcywgUkVUUllfUEFVU0VfTVMsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjbWQgPSBbXG4gICAgICAnZHVtcHN5cycsICdtZW1pbmZvJywgYCcke3BhY2thZ2VOYW1lfSdgLFxuICAgICAgJ3wnLCAnZ3JlcCcsICctRScsXG4gICAgICBgJyR7TUVNSU5GT19USVRMRVMuTkFUSVZFfXwke01FTUlORk9fVElUTEVTLkRBTFZJS318JHtNRU1JTkZPX1RJVExFUy5FR0x9YCArXG4gICAgICBgfCR7TUVNSU5GT19USVRMRVMuR0x9fCR7TUVNSU5GT19USVRMRVMuVE9UQUx9J2BcbiAgICBdO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChjbWQpO1xuICAgIGlmICghZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBkYXRhIGZyb20gZHVtcHN5cycpO1xuICAgIH1cbiAgICBjb25zdCB2YWxEaWN0ID0ge3RvdGFsUHJpdmF0ZURpcnR5OiAnJ307XG4gICAgY29uc3QgYXBpTGV2ZWwgPSBhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBkYXRhLnNwbGl0KCdcXG4nKSkge1xuICAgICAgY29uc3QgZW50cmllcyA9IGxpbmUudHJpbSgpLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgaWYgKGFwaUxldmVsID49IDMwKSB7XG4gICAgICAgIHBhcnNlTWVtaW5mb0ZvckFwaUFib3ZlMjkoZW50cmllcywgdmFsRGljdCk7XG4gICAgICB9IGVsc2UgaWYgKGFwaUxldmVsID4gMTggJiYgYXBpTGV2ZWwgPCAzMCkge1xuICAgICAgICBwYXJzZU1lbWluZm9Gb3JBcGkxOVRvMjkoZW50cmllcywgdmFsRGljdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZU1lbWluZm9Gb3JBcGlCZWxvdzE5KGVudHJpZXMsIHZhbERpY3QpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodmFsRGljdC50b3RhbFByaXZhdGVEaXJ0eSAmJiB2YWxEaWN0LnRvdGFsUHJpdmF0ZURpcnR5ICE9PSAnbm9kZXgnKSB7XG4gICAgICBjb25zdCBoZWFkZXJzID0gXy5jbG9uZShNRU1PUllfS0VZUyk7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBoZWFkZXJzLm1hcCgoaGVhZGVyKSA9PiB2YWxEaWN0W2hlYWRlcl0pO1xuICAgICAgcmV0dXJuIFtoZWFkZXJzLCB2YWx1ZXNdO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIG1lbW9yeSBkYXRhOiAnJHtkYXRhfSdgKTtcbiAgfSk7XG59O1xuXG5oZWxwZXJzLmdldE5ldHdvcmtUcmFmZmljSW5mbyA9IGFzeW5jIGZ1bmN0aW9uIGdldE5ldHdvcmtUcmFmZmljSW5mbyAocmV0cmllcyA9IDIpIHtcbiAgcmV0dXJuIGF3YWl0IHJldHJ5SW50ZXJ2YWwocmV0cmllcywgUkVUUllfUEFVU0VfTVMsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBbXTtcbiAgICBsZXQgYnVja2V0RHVyYXRpb24sIGJ1Y2tldFN0YXJ0LCBhY3RpdmVUaW1lLCByeEJ5dGVzLCByeFBhY2tldHMsIHR4Qnl0ZXMsIHR4UGFja2V0cywgb3BlcmF0aW9ucztcblxuICAgIGxldCBjbWQgPSBbJ2R1bXBzeXMnLCAnbmV0c3RhdHMnXTtcbiAgICBsZXQgZGF0YSA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG4gICAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ05vIGRhdGEgZnJvbSBkdW1wc3lzJyk7IC8vZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuXG4gICAgLy8gSW4gY2FzZSBvZiBuZXR3b3JrIHRyYWZmaWMgaW5mb3JtYXRpb24sIGl0IGlzIGRpZmZlcmVudCBmb3IgdGhlIHJldHVybiBkYXRhIGJldHdlZW4gZW11bGF0b3IgYW5kIHJlYWwgZGV2aWNlLlxuICAgIC8vIHRoZSByZXR1cm4gZGF0YSBvZiBlbXVsYXRvclxuICAgIC8vICAgWHQgc3RhdHM6XG4gICAgLy8gICBQZW5kaW5nIGJ5dGVzOiAzOTI1MFxuICAgIC8vICAgSGlzdG9yeSBzaW5jZSBib290OlxuICAgIC8vICAgaWRlbnQ9W1t0eXBlPVdJRkksIHN1YlR5cGU9Q09NQklORUQsIG5ldHdvcmtJZD1cIldpcmVkU1NJRFwiXV0gdWlkPS0xIHNldD1BTEwgdGFnPTB4MFxuICAgIC8vICAgTmV0d29ya1N0YXRzSGlzdG9yeTogYnVja2V0RHVyYXRpb249MzYwMDAwMFxuICAgIC8vICAgYnVja2V0U3RhcnQ9MTQ3ODA5ODgwMDAwMCBhY3RpdmVUaW1lPTMxODI0IHJ4Qnl0ZXM9MjE1MDIgcnhQYWNrZXRzPTc4IHR4Qnl0ZXM9MTc3NDggdHhQYWNrZXRzPTkwIG9wZXJhdGlvbnM9MFxuICAgIC8vXG4gICAgLy8gNy4xXG4gICAgLy8gICBYdCBzdGF0czpcbiAgICAvLyAgIFBlbmRpbmcgYnl0ZXM6IDQ4MTQ4N1xuICAgIC8vICAgSGlzdG9yeSBzaW5jZSBib290OlxuICAgIC8vICAgaWRlbnQ9W3t0eXBlPU1PQklMRSwgc3ViVHlwZT1DT01CSU5FRCwgc3Vic2NyaWJlcklkPTMxMDI2MC4uLiwgbWV0ZXJlZD10cnVlfV0gdWlkPS0xIHNldD1BTEwgdGFnPTB4MFxuICAgIC8vICAgICBOZXR3b3JrU3RhdHNIaXN0b3J5OiBidWNrZXREdXJhdGlvbj0zNjAwXG4gICAgLy8gICAgICAgc3Q9MTQ4Mzk4NDgwMCByYj0wIHJwPTAgdGI9MTIwMzEgdHA9MTg0IG9wPTBcbiAgICAvLyAgICAgICBzdD0xNDgzOTg4NDAwIHJiPTAgcnA9MCB0Yj0zODQ3NiB0cD01ODcgb3A9MFxuICAgIC8vICAgICAgIHN0PTE0ODM5OTkyMDAgcmI9MzE1NjE2IHJwPTQwMCB0Yj05NDgwMCB0cD0zNjIgb3A9MFxuICAgIC8vICAgICAgIHN0PTE0ODQwMDI4MDAgcmI9MTU4MjYgcnA9MjAgdGI9NDczOCB0cD0xNiBvcD0wXG4gICAgLy9cbiAgICAvLyB0aGUgcmV0dXJuIGRhdGEgb2YgcmVhbCBkZXZpY2VcbiAgICAvLyAgIFh0IHN0YXRzOlxuICAgIC8vICAgUGVuZGluZyBieXRlczogMFxuICAgIC8vICAgSGlzdG9yeSBzaW5jZSBib290OlxuICAgIC8vICAgaWRlbnQ9W3t0eXBlPU1PQklMRSwgc3ViVHlwZT1DT01CSU5FRCwgc3Vic2NyaWJlcklkPTQ1MDA1MC4uLn1dIHVpZD0tMSBzZXQ9QUxMIHRhZz0weDBcbiAgICAvLyAgIE5ldHdvcmtTdGF0c0hpc3Rvcnk6IGJ1Y2tldER1cmF0aW9uPTM2MDBcbiAgICAvLyAgIHN0PTE0NzgwODgwMDAgcmI9MzIxMTUyOTYgcnA9MzQyOTEgdGI9Mjk1NjgwNSB0cD0yNTcwNSBvcD0wXG4gICAgLy8gICBzdD0xNDc4MDkxNjAwIHJiPTI3MTQ2ODMgcnA9MTE4MjEgdGI9MTQyMDU2NCB0cD0xMjY1MCBvcD0wXG4gICAgLy8gICBzdD0xNDc4MDk1MjAwIHJiPTEwMDc5MjEzIHJwPTE5OTYyIHRiPTI0ODc3MDUgdHA9MjAwMTUgb3A9MFxuICAgIC8vICAgc3Q9MTQ3ODA5ODgwMCByYj00NDQ0NDMzIHJwPTEwMjI3IHRiPTE0MzAzNTYgdHA9MTA0OTMgb3A9MFxuICAgIGxldCBpbmRleCA9IDA7XG4gICAgbGV0IGZyb21YdHN0YXRzID0gZGF0YS5pbmRleE9mKCdYdCBzdGF0czonKTtcblxuICAgIGxldCBzdGFydCA9IGRhdGEuaW5kZXhPZignUGVuZGluZyBieXRlczonLCBmcm9tWHRzdGF0cyk7XG4gICAgbGV0IGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignOicsIHN0YXJ0ICsgMSk7XG4gICAgbGV0IGVuZCA9IGRhdGEuaW5kZXhPZignXFxuJywgZGVsaW1pdGVyICsgMSk7XG4gICAgbGV0IHBlbmRpbmdCeXRlcyA9IGRhdGEuc3Vic3RyaW5nKGRlbGltaXRlciArIDEsIGVuZCkudHJpbSgpO1xuXG4gICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoJ2J1Y2tldER1cmF0aW9uJywgZW5kICsgMSk7XG4gICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCdcXG4nLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgIGJ1Y2tldER1cmF0aW9uID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgIGRhdGEgPSBkYXRhLnN1YnN0cmluZyhlbmQgKyAxLCBkYXRhLmxlbmd0aCk7XG4gICAgICBsZXQgYXJyYXlMaXN0ID0gZGF0YS5zcGxpdCgnXFxuJyk7XG5cbiAgICAgIGlmIChhcnJheUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICBzdGFydCA9IC0xO1xuXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgTkVUV09SS19LRVlTLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgc3RhcnQgPSBhcnJheUxpc3RbMF0uaW5kZXhPZihORVRXT1JLX0tFWVNbal1bMF0pO1xuXG4gICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgIGluZGV4ID0gajtcbiAgICAgICAgICAgIHJldHVyblZhbHVlWzBdID0gW107XG5cbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgTkVUV09SS19LRVlTW2pdLmxlbmd0aDsgKytrKSB7XG4gICAgICAgICAgICAgIHJldHVyblZhbHVlWzBdW2tdID0gTkVUV09SS19LRVlTW2pdW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJldHVybkluZGV4ID0gMTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheUxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBkYXRhID0gYXJyYXlMaXN0W2ldO1xuICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bMF0pO1xuXG4gICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJyAnLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgICAgICAgIGJ1Y2tldFN0YXJ0ID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG5cbiAgICAgICAgICAgIGlmIChlbmQgPiBkZWxpbWl0ZXIpIHtcbiAgICAgICAgICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoTkVUV09SS19LRVlTW2luZGV4XVsxXSwgZW5kICsgMSk7XG4gICAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc9Jywgc3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJyAnLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgICAgICAgICAgICBhY3RpdmVUaW1lID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgICAgICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZihORVRXT1JLX0tFWVNbaW5kZXhdWzJdLCBlbmQgKyAxKTtcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgICAgICAgICAgIGVuZCA9IGRhdGEuaW5kZXhPZignICcsIGRlbGltaXRlciArIDEpO1xuICAgICAgICAgICAgICAgIHJ4Qnl0ZXMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bM10sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCcgJywgZGVsaW1pdGVyICsgMSk7XG4gICAgICAgICAgICAgICAgcnhQYWNrZXRzID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgICAgICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZihORVRXT1JLX0tFWVNbaW5kZXhdWzRdLCBlbmQgKyAxKTtcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgICAgICAgICAgIGVuZCA9IGRhdGEuaW5kZXhPZignICcsIGRlbGltaXRlciArIDEpO1xuICAgICAgICAgICAgICAgIHR4Qnl0ZXMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bNV0sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCcgJywgZGVsaW1pdGVyICsgMSk7XG4gICAgICAgICAgICAgICAgdHhQYWNrZXRzID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgICAgICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZihORVRXT1JLX0tFWVNbaW5kZXhdWzZdLCBlbmQgKyAxKTtcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgICAgICAgICAgIGVuZCA9IGRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm5WYWx1ZVtyZXR1cm5JbmRleCsrXSA9IFtidWNrZXRTdGFydCwgYWN0aXZlVGltZSwgcnhCeXRlcywgcnhQYWNrZXRzLCB0eEJ5dGVzLCB0eFBhY2tldHMsIG9wZXJhdGlvbnMsIGJ1Y2tldER1cmF0aW9uXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIV8uaXNFcXVhbChwZW5kaW5nQnl0ZXMsICcnKSAmJiAhXy5pc1VuZGVmaW5lZChwZW5kaW5nQnl0ZXMpICYmICFfLmlzRXF1YWwocGVuZGluZ0J5dGVzLCAnbm9kZXgnKSkge1xuICAgICAgcmV0dXJuIHJldHVyblZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBuZXR3b3JrIHRyYWZmaWMgZGF0YTogJyR7ZGF0YX0nYCk7XG4gICAgfVxuICB9KTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHtcbiAgY29tbWFuZHMsIGhlbHBlcnMsIFNVUFBPUlRFRF9QRVJGT1JNQU5DRV9EQVRBX1RZUEVTLCBDUFVfS0VZUywgTUVNT1JZX0tFWVMsXG4gIEJBVFRFUllfS0VZUywgTkVUV09SS19LRVlTLFxufTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7QUFBQSxNQUFxQkMsT0FBTyxHQUFHLEVBQS9CO0FBQUEsTUFBbUNDLFVBQVUsR0FBRyxFQUFoRDs7O0FBRUEsTUFBTUMsWUFBWSxHQUFHLENBQ25CLENBQUMsYUFBRCxFQUFnQixZQUFoQixFQUE4QixTQUE5QixFQUF5QyxXQUF6QyxFQUFzRCxTQUF0RCxFQUFpRSxXQUFqRSxFQUE4RSxZQUE5RSxFQUE0RixnQkFBNUYsQ0FEbUIsRUFFbkIsQ0FBQyxJQUFELEVBQU8sWUFBUCxFQUFxQixJQUFyQixFQUEyQixJQUEzQixFQUFpQyxJQUFqQyxFQUF1QyxJQUF2QyxFQUE2QyxJQUE3QyxFQUFtRCxnQkFBbkQsQ0FGbUIsQ0FBckI7O0FBSUEsTUFBTUMsUUFBUSxHQUFHLENBQUMsTUFBRCxFQUFTLFFBQVQsQ0FBakI7O0FBQ0EsTUFBTUMsWUFBWSxHQUFHLENBQUMsT0FBRCxDQUFyQjs7QUFDQSxNQUFNQyxXQUFXLEdBQUcsQ0FDbEIsbUJBRGtCLEVBQ0csb0JBREgsRUFDeUIsb0JBRHpCLEVBRWxCLGlCQUZrQixFQUVD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
|
|
@@ -307,4 +307,4 @@ var _default = commands;
|
|
|
307
307
|
exports.default = _default;require('source-map-support').install();
|
|
308
308
|
|
|
309
309
|
|
|
310
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3JlY29yZHNjcmVlbi5qcyIsIm5hbWVzIjpbImNvbW1hbmRzIiwiUkVUUllfUEFVU0UiLCJSRVRSWV9USU1FT1VUIiwiTUFYX1JFQ09SRElOR19USU1FX1NFQyIsIk1BWF9USU1FX1NFQyIsIkRFRkFVTFRfUkVDT1JESU5HX1RJTUVfU0VDIiwiUFJPQ0VTU19TSFVURE9XTl9USU1FT1VUIiwiU0NSRUVOUkVDT1JEX0JJTkFSWSIsIkRFRkFVTFRfRVhUIiwiTUlOX0VNVUxBVE9SX0FQSV9MRVZFTCIsIkZGTVBFR19CSU5BUlkiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJ1cGxvYWRSZWNvcmRlZE1lZGlhIiwibG9jYWxGaWxlIiwicmVtb3RlUGF0aCIsInVwbG9hZE9wdGlvbnMiLCJfIiwiaXNFbXB0eSIsInV0aWwiLCJ0b0luTWVtb3J5QmFzZTY0IiwidG9TdHJpbmciLCJ1c2VyIiwicGFzcyIsIm1ldGhvZCIsImhlYWRlcnMiLCJmaWxlRmllbGROYW1lIiwiZm9ybUZpZWxkcyIsIm9wdGlvbnMiLCJhdXRoIiwibmV0IiwidXBsb2FkRmlsZSIsInZlcmlmeVNjcmVlblJlY29yZElzU3VwcG9ydGVkIiwiYWRiIiwiaXNFbXVsYXRvciIsImFwaUxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJFcnJvciIsInNjaGVkdWxlU2NyZWVuUmVjb3JkIiwicmVjb3JkaW5nUHJvcGVydGllcyIsImxvZyIsInN0b3BwZWQiLCJ0aW1lciIsInZpZGVvU2l6ZSIsImJpdFJhdGUiLCJ0aW1lTGltaXQiLCJidWdSZXBvcnQiLCJjdXJyZW50VGltZUxpbWl0IiwiaGFzVmFsdWUiLCJjdXJyZW50VGltZUxpbWl0SW50IiwicGFyc2VJbnQiLCJpc05hTiIsInBhdGhPbkRldmljZSIsInV1aWRWNCIsInN1YnN0cmluZyIsInJlY29yZGluZ1Byb2MiLCJzY3JlZW5yZWNvcmQiLCJvbiIsImN1cnJlbnREdXJhdGlvbiIsImdldER1cmF0aW9uIiwiYXNTZWNvbmRzIiwidG9GaXhlZCIsImRlYnVnIiwidGltZUxpbWl0SW50IiwiY2h1bmtEdXJhdGlvbiIsImNhdGNoIiwiZSIsImVycm9yIiwic3RhY2siLCJzdGFydCIsImZpbGVFeGlzdHMiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwicmVjb3JkcyIsInB1c2giLCJyZWNvcmRpbmdQcm9jZXNzIiwibWVyZ2VTY3JlZW5SZWNvcmRzIiwibWVkaWFGaWxlcyIsImZzIiwid2hpY2giLCJjb25maWdDb250ZW50IiwibWFwIiwieCIsImpvaW4iLCJjb25maWdGaWxlIiwicGF0aCIsInJlc29sdmUiLCJkaXJuYW1lIiwid3JpdGVGaWxlIiwicmVzdWx0IiwiTWF0aCIsImZsb29yIiwiRGF0ZSIsImFyZ3MiLCJpbmZvIiwidGVybWluYXRlQmFja2dyb3VuZFNjcmVlblJlY29yZGluZyIsImZvcmNlIiwicGlkcyIsImdldFBJRHNCeU5hbWUiLCJwIiwic2hlbGwiLCJlcnIiLCJtZXNzYWdlIiwic3RhcnRSZWNvcmRpbmdTY3JlZW4iLCJmb3JjZVJlc3RhcnQiLCJzdG9wUmVjb3JkaW5nU2NyZWVuIiwid2FybiIsIl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzIiwicmVjb3JkIiwicmltcmFmIiwidGltZW91dCIsInBhcnNlRmxvYXQiLCJ0aW1pbmciLCJUaW1lciIsImlzUnVubmluZyIsInN0b3AiLCJlcnJvckFuZFRocm93IiwidG1wUm9vdCIsInRlbXBEaXIiLCJvcGVuRGlyIiwibG9jYWxSZWNvcmRzIiwicG9zaXgiLCJiYXNlbmFtZSIsInB1bGwiLCJsYXN0IiwicmVzdWx0RmlsZVBhdGgiLCJsZW5ndGgiLCJzaXplIiwic3RhdCIsInRvUmVhZGFibGVTaXplU3RyaW5nIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL3JlY29yZHNjcmVlbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IHV0aWwsIGZzLCBuZXQsIHRlbXBEaXIsIHN5c3RlbSwgdGltaW5nIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuY29uc3QgUkVUUllfUEFVU0UgPSAzMDA7XG5jb25zdCBSRVRSWV9USU1FT1VUID0gNTAwMDtcbmNvbnN0IE1BWF9SRUNPUkRJTkdfVElNRV9TRUMgPSA2MCAqIDM7XG5jb25zdCBNQVhfVElNRV9TRUMgPSA2MCAqIDMwO1xuY29uc3QgREVGQVVMVF9SRUNPUkRJTkdfVElNRV9TRUMgPSBNQVhfUkVDT1JESU5HX1RJTUVfU0VDO1xuY29uc3QgUFJPQ0VTU19TSFVURE9XTl9USU1FT1VUID0gMTAgKiAxMDAwO1xuY29uc3QgU0NSRUVOUkVDT1JEX0JJTkFSWSA9ICdzY3JlZW5yZWNvcmQnO1xuY29uc3QgREVGQVVMVF9FWFQgPSAnLm1wNCc7XG5jb25zdCBNSU5fRU1VTEFUT1JfQVBJX0xFVkVMID0gMjc7XG5jb25zdCBGRk1QRUdfQklOQVJZID0gYGZmbXBlZyR7c3lzdGVtLmlzV2luZG93cygpID8gJy5leGUnIDogJyd9YDtcblxuYXN5bmMgZnVuY3Rpb24gdXBsb2FkUmVjb3JkZWRNZWRpYSAobG9jYWxGaWxlLCByZW1vdGVQYXRoID0gbnVsbCwgdXBsb2FkT3B0aW9ucyA9IHt9KSB7XG4gIGlmIChfLmlzRW1wdHkocmVtb3RlUGF0aCkpIHtcbiAgICByZXR1cm4gKGF3YWl0IHV0aWwudG9Jbk1lbW9yeUJhc2U2NChsb2NhbEZpbGUpKS50b1N0cmluZygpO1xuICB9XG5cbiAgY29uc3Qge3VzZXIsIHBhc3MsIG1ldGhvZCwgaGVhZGVycywgZmlsZUZpZWxkTmFtZSwgZm9ybUZpZWxkc30gPSB1cGxvYWRPcHRpb25zO1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgIG1ldGhvZDogbWV0aG9kIHx8ICdQVVQnLFxuICAgIGhlYWRlcnMsXG4gICAgZmlsZUZpZWxkTmFtZSxcbiAgICBmb3JtRmllbGRzLFxuICB9O1xuICBpZiAodXNlciAmJiBwYXNzKSB7XG4gICAgb3B0aW9ucy5hdXRoID0ge3VzZXIsIHBhc3N9O1xuICB9XG4gIGF3YWl0IG5ldC51cGxvYWRGaWxlKGxvY2FsRmlsZSwgcmVtb3RlUGF0aCwgb3B0aW9ucyk7XG4gIHJldHVybiAnJztcbn1cblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5U2NyZWVuUmVjb3JkSXNTdXBwb3J0ZWQgKGFkYiwgaXNFbXVsYXRvcikge1xuICBjb25zdCBhcGlMZXZlbCA9IGF3YWl0IGFkYi5nZXRBcGlMZXZlbCgpO1xuICBpZiAoaXNFbXVsYXRvciAmJiBhcGlMZXZlbCA8IE1JTl9FTVVMQVRPUl9BUElfTEVWRUwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNjcmVlbiByZWNvcmRpbmcgZG9lcyBub3Qgd29yayBvbiBlbXVsYXRvcnMgcnVubmluZyBBbmRyb2lkIEFQSSBsZXZlbCBsZXNzIHRoYW4gJHtNSU5fRU1VTEFUT1JfQVBJX0xFVkVMfWApO1xuICB9XG4gIGlmIChhcGlMZXZlbCA8IDE5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTY3JlZW4gcmVjb3JkaW5nIG5vdCBhdmFpbGFibGUgb24gQVBJIExldmVsICR7YXBpTGV2ZWx9LiBNaW5pbXVtIEFQSSBMZXZlbCBpcyAxOS5gKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzY2hlZHVsZVNjcmVlblJlY29yZCAoYWRiLCByZWNvcmRpbmdQcm9wZXJ0aWVzLCBsb2cgPSBudWxsKSB7XG4gIGlmIChyZWNvcmRpbmdQcm9wZXJ0aWVzLnN0b3BwZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7XG4gICAgdGltZXIsXG4gICAgdmlkZW9TaXplLFxuICAgIGJpdFJhdGUsXG4gICAgdGltZUxpbWl0LFxuICAgIGJ1Z1JlcG9ydCxcbiAgfSA9IHJlY29yZGluZ1Byb3BlcnRpZXM7XG5cbiAgbGV0IGN1cnJlbnRUaW1lTGltaXQgPSBNQVhfUkVDT1JESU5HX1RJTUVfU0VDO1xuICBpZiAodXRpbC5oYXNWYWx1ZShyZWNvcmRpbmdQcm9wZXJ0aWVzLmN1cnJlbnRUaW1lTGltaXQpKSB7XG4gICAgY29uc3QgY3VycmVudFRpbWVMaW1pdEludCA9IHBhcnNlSW50KHJlY29yZGluZ1Byb3BlcnRpZXMuY3VycmVudFRpbWVMaW1pdCwgMTApO1xuICAgIGlmICghaXNOYU4oY3VycmVudFRpbWVMaW1pdEludCkgJiYgY3VycmVudFRpbWVMaW1pdEludCA8IE1BWF9SRUNPUkRJTkdfVElNRV9TRUMpIHtcbiAgICAgIGN1cnJlbnRUaW1lTGltaXQgPSBjdXJyZW50VGltZUxpbWl0SW50O1xuICAgIH1cbiAgfVxuICBjb25zdCBwYXRoT25EZXZpY2UgPSBgL3NkY2FyZC8ke3V0aWwudXVpZFY0KCkuc3Vic3RyaW5nKDAsIDgpfSR7REVGQVVMVF9FWFR9YDtcbiAgY29uc3QgcmVjb3JkaW5nUHJvYyA9IGFkYi5zY3JlZW5yZWNvcmQocGF0aE9uRGV2aWNlLCB7XG4gICAgdmlkZW9TaXplLFxuICAgIGJpdFJhdGUsXG4gICAgdGltZUxpbWl0OiBjdXJyZW50VGltZUxpbWl0LFxuICAgIGJ1Z1JlcG9ydCxcbiAgfSk7XG5cbiAgcmVjb3JkaW5nUHJvYy5vbignZW5kJywgKCkgPT4ge1xuICAgIGlmIChyZWNvcmRpbmdQcm9wZXJ0aWVzLnN0b3BwZWQgfHwgIXV0aWwuaGFzVmFsdWUodGltZUxpbWl0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50RHVyYXRpb24gPSB0aW1lci5nZXREdXJhdGlvbigpLmFzU2Vjb25kcy50b0ZpeGVkKDApO1xuICAgIGxvZz8uZGVidWcoYFRoZSBvdmVyYWxsIHNjcmVlbiByZWNvcmRpbmcgZHVyYXRpb24gaXMgJHtjdXJyZW50RHVyYXRpb259cyBzbyBmYXJgKTtcbiAgICBjb25zdCB0aW1lTGltaXRJbnQgPSBwYXJzZUludCh0aW1lTGltaXQsIDEwKTtcbiAgICBpZiAoaXNOYU4odGltZUxpbWl0SW50KSB8fCBjdXJyZW50RHVyYXRpb24gPj0gdGltZUxpbWl0SW50KSB7XG4gICAgICBsb2c/LmRlYnVnKCdUaGVyZSBpcyBubyBuZWVkIHRvIHN0YXJ0IHRoZSBuZXh0IHJlY29yZGluZyBjaHVuaycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJlY29yZGluZ1Byb3BlcnRpZXMuY3VycmVudFRpbWVMaW1pdCA9IHRpbWVMaW1pdEludCAtIGN1cnJlbnREdXJhdGlvbjtcbiAgICBjb25zdCBjaHVua0R1cmF0aW9uID0gcmVjb3JkaW5nUHJvcGVydGllcy5jdXJyZW50VGltZUxpbWl0IDwgTUFYX1JFQ09SRElOR19USU1FX1NFQ1xuICAgICAgPyByZWNvcmRpbmdQcm9wZXJ0aWVzLmN1cnJlbnRUaW1lTGltaXRcbiAgICAgIDogTUFYX1JFQ09SRElOR19USU1FX1NFQztcbiAgICBsb2c/LmRlYnVnKGBTdGFydGluZyB0aGUgbmV4dCAke2NodW5rRHVyYXRpb259cy1jaHVuayBgICtcbiAgICAgIGBvZiBzY3JlZW4gcmVjb3JkaW5nIGluIG9yZGVyIHRvIGFjaGlldmUgJHt0aW1lTGltaXRJbnR9cyB0b3RhbCBkdXJhdGlvbmApO1xuICAgIHNjaGVkdWxlU2NyZWVuUmVjb3JkKGFkYiwgcmVjb3JkaW5nUHJvcGVydGllcywgbG9nKVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGxvZz8uZXJyb3IoZS5zdGFjayk7XG4gICAgICAgIHJlY29yZGluZ1Byb3BlcnRpZXMuc3RvcHBlZCA9IHRydWU7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgYXdhaXQgcmVjb3JkaW5nUHJvYy5zdGFydCgwKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IGF3YWl0IGFkYi5maWxlRXhpc3RzKHBhdGhPbkRldmljZSksXG4gICAgICB7d2FpdE1zOiBSRVRSWV9USU1FT1VULCBpbnRlcnZhbE1zOiBSRVRSWV9QQVVTRX0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZXhwZWN0ZWQgc2NyZWVuIHJlY29yZCBmaWxlICcke3BhdGhPbkRldmljZX0nIGRvZXMgbm90IGV4aXN0IGFmdGVyICR7UkVUUllfVElNRU9VVH1tcy4gYCArXG4gICAgICBgSXMgJHtTQ1JFRU5SRUNPUkRfQklOQVJZfSB1dGlsaXR5IGF2YWlsYWJsZSBhbmQgb3BlcmF0aW9uYWwgb24gdGhlIGRldmljZSB1bmRlciB0ZXN0P2ApO1xuICB9XG5cbiAgcmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRzLnB1c2gocGF0aE9uRGV2aWNlKTtcbiAgcmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRpbmdQcm9jZXNzID0gcmVjb3JkaW5nUHJvYztcbn1cblxuYXN5bmMgZnVuY3Rpb24gbWVyZ2VTY3JlZW5SZWNvcmRzIChtZWRpYUZpbGVzLCBsb2cgPSBudWxsKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMud2hpY2goRkZNUEVHX0JJTkFSWSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7RkZNUEVHX0JJTkFSWX0gdXRpbGl0eSBpcyBub3QgYXZhaWxhYmxlIGluIFBBVEguIFBsZWFzZSBpbnN0YWxsIGl0IGZyb20gaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy9gKTtcbiAgfVxuICBjb25zdCBjb25maWdDb250ZW50ID0gbWVkaWFGaWxlc1xuICAgIC5tYXAoKHgpID0+IGBmaWxlICcke3h9J2ApXG4gICAgLmpvaW4oJ1xcbicpO1xuICBjb25zdCBjb25maWdGaWxlID0gcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZShtZWRpYUZpbGVzWzBdKSwgJ2NvbmZpZy50eHQnKTtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGNvbmZpZ0ZpbGUsIGNvbmZpZ0NvbnRlbnQsICd1dGY4Jyk7XG4gIGxvZz8uZGVidWcoYEdlbmVyYXRlZCBmZm1wZWcgbWVyZ2luZyBjb25maWcgJyR7Y29uZmlnRmlsZX0nIHdpdGggaXRlbXM6XFxuJHtjb25maWdDb250ZW50fWApO1xuICBjb25zdCByZXN1bHQgPSBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKG1lZGlhRmlsZXNbMF0pLCBgbWVyZ2VfJHtNYXRoLmZsb29yKG5ldyBEYXRlKCkpfSR7REVGQVVMVF9FWFR9YCk7XG4gIGNvbnN0IGFyZ3MgPSBbJy1zYWZlJywgJzAnLCAnLWYnLCAnY29uY2F0JywgJy1pJywgY29uZmlnRmlsZSwgJy1jJywgJ2NvcHknLCByZXN1bHRdO1xuICBsb2c/LmluZm8oYEluaXRpYXRpbmcgc2NyZWVuIHJlY29yZHMgbWVyZ2luZyB1c2luZyB0aGUgY29tbWFuZCAnJHtGRk1QRUdfQklOQVJZfSAke2FyZ3Muam9pbignICcpfSdgKTtcbiAgYXdhaXQgZXhlYyhGRk1QRUdfQklOQVJZLCBhcmdzKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdGVybWluYXRlQmFja2dyb3VuZFNjcmVlblJlY29yZGluZyAoYWRiLCBmb3JjZSA9IHRydWUpIHtcbiAgY29uc3QgcGlkcyA9IChhd2FpdCBhZGIuZ2V0UElEc0J5TmFtZShTQ1JFRU5SRUNPUkRfQklOQVJZKSlcbiAgICAubWFwKChwKSA9PiBgJHtwfWApO1xuICBpZiAoXy5pc0VtcHR5KHBpZHMpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBhZGIuc2hlbGwoWydraWxsJywgZm9yY2UgPyAnLTE1JyA6ICctMicsIC4uLnBpZHNdKTtcbiAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IF8uaXNFbXB0eShhd2FpdCBhZGIuZ2V0UElEc0J5TmFtZShTQ1JFRU5SRUNPUkRfQklOQVJZKSksIHtcbiAgICAgIHdhaXRNczogUFJPQ0VTU19TSFVURE9XTl9USU1FT1VULFxuICAgICAgaW50ZXJ2YWxNczogNTAwLFxuICAgIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBzdG9wIHRoZSBiYWNrZ3JvdW5kIHNjcmVlbiByZWNvcmRpbmc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0UmVjb3JkaW5nT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcmVtb3RlUGF0aCAtIFRoZSBwYXRoIHRvIHRoZSByZW1vdGUgbG9jYXRpb24sIHdoZXJlIHRoZSBjYXB0dXJlZCB2aWRlbyBzaG91bGQgYmUgdXBsb2FkZWQuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHByb3RvY29scyBhcmUgc3VwcG9ydGVkOiBodHRwL2h0dHBzLCBmdHAuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdWxsIG9yIGVtcHR5IHN0cmluZyB2YWx1ZSAodGhlIGRlZmF1bHQgc2V0dGluZykgbWVhbnMgdGhlIGNvbnRlbnQgb2YgcmVzdWx0aW5nXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIHNob3VsZCBiZSBlbmNvZGVkIGFzIEJhc2U2NCBhbmQgcGFzc2VkIGFzIHRoZSBlbmRwb3VudCByZXNwb25zZSB2YWx1ZS5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB0aGUgZ2VuZXJhdGVkIG1lZGlhIGZpbGUgaXMgdG9vIGJpZyB0b1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml0IGludG8gdGhlIGF2YWlsYWJsZSBwcm9jZXNzIG1lbW9yeS5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIG9ubHkgaGFzIGFuIGVmZmVjdCBpZiB0aGVyZSBpcyBzY3JlZW4gcmVjb3JkaW5nIHByb2Nlc3MgaW4gcHJvZ3JlZXNzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYGZvcmNlUmVzdGFydGAgcGFyYW1ldGVyIGlzIG5vdCBzZXQgdG8gYHRydWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1c2VyIC0gVGhlIG5hbWUgb2YgdGhlIHVzZXIgZm9yIHRoZSByZW1vdGUgYXV0aGVudGljYXRpb24uIE9ubHkgd29ya3MgaWYgYHJlbW90ZVBhdGhgIGlzIHByb3ZpZGVkLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYXNzIC0gVGhlIHBhc3N3b3JkIGZvciB0aGUgcmVtb3RlIGF1dGhlbnRpY2F0aW9uLiBPbmx5IHdvcmtzIGlmIGByZW1vdGVQYXRoYCBpcyBwcm92aWRlZC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWV0aG9kIFtQVVRdIC0gVGhlIGh0dHAgbXVsdGlwYXJ0IHVwbG9hZCBtZXRob2QgbmFtZS4gT25seSB3b3JrcyBpZiBgcmVtb3RlUGF0aGAgaXMgcHJvdmlkZWQuXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGhlYWRlcnMgLSBBZGRpdGlvbmFsIGhlYWRlcnMgbWFwcGluZyBmb3IgbXVsdGlwYXJ0IGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmaWxlRmllbGROYW1lIFtmaWxlXSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtIGZpZWxkLCB3aGVyZSB0aGUgZmlsZSBjb250ZW50IEJMT0Igc2hvdWxkIGJlIHN0b3JlZCBmb3JcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwKHMpIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7P09iamVjdHxBcnJheTxQYWlyPn0gZm9ybUZpZWxkcyAtIEFkZGl0aW9uYWwgZm9ybSBmaWVsZHMgZm9yIG11bHRpcGFydCBodHRwKHMpIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmlkZW9TaXplIC0gVGhlIGZvcm1hdCBpcyB3aWR0aHhoZWlnaHQuXG4gKiAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBkZXZpY2UncyBuYXRpdmUgZGlzcGxheSByZXNvbHV0aW9uIChpZiBzdXBwb3J0ZWQpLFxuICogICAgICAgICAgICAgICAgICAxMjgweDcyMCBpZiBub3QuIEZvciBiZXN0IHJlc3VsdHMsXG4gKiAgICAgICAgICAgICAgICAgIHVzZSBhIHNpemUgc3VwcG9ydGVkIGJ5IHlvdXIgZGV2aWNlJ3MgQWR2YW5jZWQgVmlkZW8gQ29kaW5nIChBVkMpIGVuY29kZXIuXG4gKiAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBcIjEyODB4NzIwXCJcbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGJ1Z1JlcG9ydCAtIFNldCBpdCB0byBgdHJ1ZWAgaW4gb3JkZXIgdG8gZGlzcGxheSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZSB2aWRlbyBvdmVybGF5LFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyBhIHRpbWVzdGFtcCwgdGhhdCBpcyBoZWxwZnVsIGluIHZpZGVvcyBjYXB0dXJlZCB0byBpbGx1c3RyYXRlIGJ1Z3MuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCBzaW5jZSBBUEkgbGV2ZWwgMjcgKEFuZHJvaWQgUCkuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8bnVtYmVyfSB0aW1lTGltaXQgLSBUaGUgbWF4aW11bSByZWNvcmRpbmcgdGltZSwgaW4gc2Vjb25kcy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTgwICgzIG1pbnV0ZXMpLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1heGltdW0gdmFsdWUgaXMgMTgwMCAoMzAgbWludXRlcykuIElmIHRoZSBwYXNzZWQgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIDE4MCB0aGVuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYWxnb3JpdGhtIHdpbGwgdHJ5IHRvIHNjaGVkdWxlIG11bHRpcGxlIHNjcmVlbiByZWNvcmRpbmcgY2h1bmtzIGFuZCBtZXJnZSB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdGluZyB2aWRlb3MgaW50byBhIHNpbmdsZSBtZWRpYSBmaWxlIHVzaW5nIGBmZm1wZWdgIHV0aWxpdHkuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgdXRpbGl0eSBpcyBub3QgYXZhaWxhYmxlIGluIFBBVEggdGhlbiB0aGUgbW9zdCByZWNlbnQgc2NyZWVuIHJlY29yZGluZyBjaHVuayBpc1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29pbmcgdG8gYmUgcmV0dXJuZWQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8bnVtYmVyfSBiaXRSYXRlIC0gVGhlIHZpZGVvIGJpdCByYXRlIGZvciB0aGUgdmlkZW8sIGluIGJpdHMgcGVyIHNlY29uZC5cbiAqICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDQwMDAwMDAgKDQgTWJpdC9zKS4gWW91IGNhbiBpbmNyZWFzZSB0aGUgYml0IHJhdGUgdG8gaW1wcm92ZSB2aWRlbyBxdWFsaXR5LFxuICogICAgICAgICAgICAgICAgYnV0IGRvaW5nIHNvIHJlc3VsdHMgaW4gbGFyZ2VyIG1vdmllIGZpbGVzLlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gZm9yY2VSZXN0YXJ0IC0gV2hldGhlciB0byB0cnkgdG8gY2F0Y2ggYW5kIHVwbG9hZC9yZXR1cm4gdGhlIGN1cnJlbnRseSBydW5uaW5nIHNjcmVlbiByZWNvcmRpbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChgZmFsc2VgLCB0aGUgZGVmYXVsdCBzZXR0aW5nKSBvciBpZ25vcmUgdGhlIHJlc3VsdCBvZiBpdCBhbmQgc3RhcnQgYSBuZXcgcmVjb3JkaW5nXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbW1lZGlhdGVseSAoYHRydWVgKS5cbiAqL1xuXG4vKipcbiAqIFJlY29yZCB0aGUgZGlzcGxheSBvZiBhIHJlYWwgZGV2aWNlcyBydW5uaW5nIEFuZHJvaWQgNC40IChBUEkgbGV2ZWwgMTkpIGFuZCBoaWdoZXIuXG4gKiBFbXVsYXRvcnMgYXJlIHN1cHBvcnRlZCBzaW5jZSBBUEkgbGV2ZWwgMjcgKEFuZHJvaWQgUCkuXG4gKiBJdCByZWNvcmRzIHNjcmVlbiBhY3Rpdml0eSB0byBhbiBNUEVHLTQgZmlsZS4gQXVkaW8gaXMgbm90IHJlY29yZGVkIHdpdGggdGhlIHZpZGVvIGZpbGUuXG4gKiBJZiBzY3JlZW4gcmVjb3JkaW5nIGhhcyBiZWVuIGFscmVhZHkgc3RhcnRlZCB0aGVuIHRoZSBjb21tYW5kIHdpbGwgc3RvcCBpdCBmb3JjZWZ1bGx5IGFuZCBzdGFydCBhIG5ldyBvbmUuXG4gKiBUaGUgcHJldmlvdXNseSByZWNvcmRlZCB2aWRlbyBmaWxlIHdpbGwgYmUgZGVsZXRlZC5cbiAqXG4gKiBAcGFyYW0gez9TdGFydFJlY29yZGluZ09wdGlvbnN9IG9wdGlvbnMgLSBUaGUgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQtZW5jb2RlZCBjb250ZW50IG9mIHRoZSByZWNvcmRlZCBtZWRpYSBmaWxlIGlmXG4gKiAgICAgICAgICAgICAgICAgICBhbnkgc2NyZWVuIHJlY29yZGluZyBpcyBjdXJyZW50bHkgcnVubmluZyBvciBhbiBlbXB0eSBzdHJpbmcuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgc2NyZWVuIHJlY29yZGluZyBoYXMgZmFpbGVkIHRvIHN0YXJ0IG9yIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGRldmljZSB1bmRlciB0ZXN0LlxuICovXG5jb21tYW5kcy5zdGFydFJlY29yZGluZ1NjcmVlbiA9IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0UmVjb3JkaW5nU2NyZWVuIChvcHRpb25zID0ge30pIHtcbiAgYXdhaXQgdmVyaWZ5U2NyZWVuUmVjb3JkSXNTdXBwb3J0ZWQodGhpcy5hZGIsIHRoaXMuaXNFbXVsYXRvcigpKTtcblxuICBsZXQgcmVzdWx0ID0gJyc7XG4gIGNvbnN0IHt2aWRlb1NpemUsIHRpbWVMaW1pdCA9IERFRkFVTFRfUkVDT1JESU5HX1RJTUVfU0VDLCBidWdSZXBvcnQsIGJpdFJhdGUsIGZvcmNlUmVzdGFydH0gPSBvcHRpb25zO1xuICBpZiAoIWZvcmNlUmVzdGFydCkge1xuICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMuc3RvcFJlY29yZGluZ1NjcmVlbihvcHRpb25zKTtcbiAgfVxuXG4gIGlmIChhd2FpdCB0ZXJtaW5hdGVCYWNrZ3JvdW5kU2NyZWVuUmVjb3JkaW5nKHRoaXMuYWRiLCB0cnVlKSkge1xuICAgIHRoaXMubG9nLndhcm4oYFRoZXJlIHdlcmUgc29tZSAke1NDUkVFTlJFQ09SRF9CSU5BUll9IHByb2Nlc3MgbGVmdG92ZXJzIHJ1bm5pbmcgYCArXG4gICAgICBgaW4gdGhlIGJhY2tncm91bmQuIE1ha2Ugc3VyZSB5b3Ugc3RvcCBzY3JlZW4gcmVjb3JkaW5nIGVhY2ggdGltZSBhZnRlciBpdCBpcyBzdGFydGVkLCBgICtcbiAgICAgIGBvdGhlcndpc2UgdGhlIHJlY29yZGVkIG1lZGlhIG1pZ2h0IHF1aWNrbHkgZXhjZWVkIGFsbCB0aGUgZnJlZSBzcGFjZSBvbiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QuYCk7XG4gIH1cblxuICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzKSkge1xuICAgIGZvciAoY29uc3QgcmVjb3JkIG9mICh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZHMgfHwgW10pKSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5yaW1yYWYocmVjb3JkKTtcbiAgICB9XG4gICAgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcyA9IG51bGw7XG4gIH1cblxuICBjb25zdCB0aW1lb3V0ID0gcGFyc2VGbG9hdCh0aW1lTGltaXQpO1xuICBpZiAoaXNOYU4odGltZW91dCkgfHwgdGltZW91dCA+IE1BWF9USU1FX1NFQyB8fCB0aW1lb3V0IDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSB0aW1lTGltaXQgdmFsdWUgbXVzdCBiZSBpbiByYW5nZSBbMSwgJHtNQVhfVElNRV9TRUN9XSBzZWNvbmRzLiBgICtcbiAgICAgIGBUaGUgdmFsdWUgb2YgJyR7dGltZUxpbWl0fScgaGFzIGJlZW4gcGFzc2VkIGluc3RlYWQuYCk7XG4gIH1cblxuICB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzID0ge1xuICAgIHRpbWVyOiBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKSxcbiAgICB2aWRlb1NpemUsXG4gICAgdGltZUxpbWl0LFxuICAgIGN1cnJlbnRUaW1lTGltaXQ6IHRpbWVMaW1pdCxcbiAgICBiaXRSYXRlLFxuICAgIGJ1Z1JlcG9ydCxcbiAgICByZWNvcmRzOiBbXSxcbiAgICByZWNvcmRpbmdQcm9jZXNzOiBudWxsLFxuICAgIHN0b3BwZWQ6IGZhbHNlLFxuICB9O1xuICBhd2FpdCBzY2hlZHVsZVNjcmVlblJlY29yZCh0aGlzLmFkYiwgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcywgdGhpcy5sb2cpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdG9wUmVjb3JkaW5nT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcmVtb3RlUGF0aCAtIFRoZSBwYXRoIHRvIHRoZSByZW1vdGUgbG9jYXRpb24sIHdoZXJlIHRoZSByZXN1bHRpbmcgdmlkZW8gc2hvdWxkIGJlIHVwbG9hZGVkLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZDogaHR0cC9odHRwcywgZnRwLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVsbCBvciBlbXB0eSBzdHJpbmcgdmFsdWUgKHRoZSBkZWZhdWx0IHNldHRpbmcpIG1lYW5zIHRoZSBjb250ZW50IG9mIHJlc3VsdGluZ1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBzaG91bGQgYmUgZW5jb2RlZCBhcyBCYXNlNjQgYW5kIHBhc3NlZCBhcyB0aGUgZW5kcG91bnQgcmVzcG9uc2UgdmFsdWUuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgdGhlIGdlbmVyYXRlZCBtZWRpYSBmaWxlIGlzIHRvbyBiaWcgdG9cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpdCBpbnRvIHRoZSBhdmFpbGFibGUgcHJvY2VzcyBtZW1vcnkuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVzZXIgLSBUaGUgbmFtZSBvZiB0aGUgdXNlciBmb3IgdGhlIHJlbW90ZSBhdXRoZW50aWNhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFzcyAtIFRoZSBwYXNzd29yZCBmb3IgdGhlIHJlbW90ZSBhdXRoZW50aWNhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWV0aG9kIC0gVGhlIGh0dHAgbXVsdGlwYXJ0IHVwbG9hZCBtZXRob2QgbmFtZS4gVGhlICdQVVQnIG9uZSBpcyB1c2VkIGJ5IGRlZmF1bHQuXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGhlYWRlcnMgLSBBZGRpdGlvbmFsIGhlYWRlcnMgbWFwcGluZyBmb3IgbXVsdGlwYXJ0IGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmaWxlRmllbGROYW1lIFtmaWxlXSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtIGZpZWxkLCB3aGVyZSB0aGUgZmlsZSBjb250ZW50IEJMT0Igc2hvdWxkIGJlIHN0b3JlZCBmb3JcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwKHMpIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7P09iamVjdHxBcnJheTxQYWlyPn0gZm9ybUZpZWxkcyAtIEFkZGl0aW9uYWwgZm9ybSBmaWVsZHMgZm9yIG11bHRpcGFydCBodHRwKHMpIHVwbG9hZHNcbiAqL1xuXG4vKipcbiAqIFN0b3AgcmVjb3JkaW5nIHRoZSBzY3JlZW4uXG4gKiBJZiBubyBzY3JlZW4gcmVjb3JkaW5nIGhhcyBiZWVuIHN0YXJ0ZWQgYmVmb3JlIHRoZW4gdGhlIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gez9TdG9wUmVjb3JkaW5nT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NC1lbmNvZGVkIGNvbnRlbnQgb2YgdGhlIHJlY29yZGVkIG1lZGlhIGZpbGUgaWYgJ3JlbW90ZVBhdGgnXG4gKiAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgaXMgZmFsc3kgb3IgYW4gZW1wdHkgc3RyaW5nLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBnZXR0aW5nIHRoZSBuYW1lIG9mIGEgbWVkaWEgZmlsZVxuICogICAgICAgICAgICAgICAgIG9yIHRoZSBmaWxlIGNvbnRlbnQgY2Fubm90IGJlIHVwbG9hZGVkIHRvIHRoZSByZW1vdGUgbG9jYXRpb25cbiAqICAgICAgICAgICAgICAgICBvciBzY3JlZW4gcmVjb3JkaW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGRldmljZSB1bmRlciB0ZXN0LlxuICovXG5jb21tYW5kcy5zdG9wUmVjb3JkaW5nU2NyZWVuID0gYXN5bmMgZnVuY3Rpb24gc3RvcFJlY29yZGluZ1NjcmVlbiAob3B0aW9ucyA9IHt9KSB7XG4gIGF3YWl0IHZlcmlmeVNjcmVlblJlY29yZElzU3VwcG9ydGVkKHRoaXMuYWRiLCB0aGlzLmlzRW11bGF0b3IoKSk7XG5cbiAgaWYgKCFfLmlzRW1wdHkodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcykpIHtcbiAgICB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnN0b3BwZWQgPSB0cnVlO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCB0ZXJtaW5hdGVCYWNrZ3JvdW5kU2NyZWVuUmVjb3JkaW5nKHRoaXMuYWRiLCBmYWxzZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMubG9nLndhcm4oZXJyLm1lc3NhZ2UpO1xuICAgIGlmICghXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMpKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKCdUaGUgcmVzdWx0aW5nIHZpZGVvIG1pZ2h0IGJlIGNvcnJ1cHRlZCcpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChfLmlzRW1wdHkodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcykpIHtcbiAgICB0aGlzLmxvZy5pbmZvKGBTY3JlZW4gcmVjb3JkaW5nIGhhcyBub3QgYmVlbiBwcmV2aW91c2x5IHN0YXJ0ZWQgYnkgQXBwaXVtLiBUaGVyZSBpcyBub3RoaW5nIHRvIHN0b3BgKTtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZiAodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRpbmdQcm9jZXNzICYmIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3JkaW5nUHJvY2Vzcy5pc1J1bm5pbmcpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRpbmdQcm9jZXNzLnN0b3AoJ1NJR0lOVCcsIFBST0NFU1NfU0hVVERPV05fVElNRU9VVCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVW5hYmxlIHRvIHN0b3Agc2NyZWVuIHJlY29yZGluZyB3aXRoaW4gJHtQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVR9bXNgKTtcbiAgICB9XG4gICAgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRpbmdQcm9jZXNzID0gbnVsbDtcbiAgfVxuXG4gIGlmIChfLmlzRW1wdHkodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRzKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYE5vIHNjcmVlbiByZWNvcmRpbmdzIGhhdmUgYmVlbiBzdG9yZWQgb24gdGhlIGRldmljZSBzbyBmYXIuIGAgK1xuICAgICAgYEFyZSB5b3Ugc3VyZSB0aGUgJHtTQ1JFRU5SRUNPUkRfQklOQVJZfSB1dGlsaXR5IHdvcmtzIGFzIGV4cGVjdGVkP2ApO1xuICB9XG5cbiAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICB0cnkge1xuICAgIGNvbnN0IGxvY2FsUmVjb3JkcyA9IFtdO1xuICAgIGZvciAoY29uc3QgcGF0aE9uRGV2aWNlIG9mIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3Jkcykge1xuICAgICAgbG9jYWxSZWNvcmRzLnB1c2gocGF0aC5yZXNvbHZlKHRtcFJvb3QsIHBhdGgucG9zaXguYmFzZW5hbWUocGF0aE9uRGV2aWNlKSkpO1xuICAgICAgYXdhaXQgdGhpcy5hZGIucHVsbChwYXRoT25EZXZpY2UsIF8ubGFzdChsb2NhbFJlY29yZHMpKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnJpbXJhZihwYXRoT25EZXZpY2UpO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0RmlsZVBhdGggPSBfLmxhc3QobG9jYWxSZWNvcmRzKTtcbiAgICBpZiAobG9jYWxSZWNvcmRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYEdvdCAke2xvY2FsUmVjb3Jkcy5sZW5ndGh9IHNjcmVlbiByZWNvcmRpbmdzLiBUcnlpbmcgdG8gbWVyZ2UgdGhlbWApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0RmlsZVBhdGggPSBhd2FpdCBtZXJnZVNjcmVlblJlY29yZHMobG9jYWxSZWNvcmRzLCB0aGlzLmxvZyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYENhbm5vdCBtZXJnZSB0aGUgcmVjb3JkZWQgZmlsZXMuIFRoZSBtb3N0IHJlY2VudCBzY3JlZW4gcmVjb3JkaW5nIGlzIGdvaW5nIHRvIGJlIHJldHVybmVkIGFzIHRoZSByZXN1bHQuIGAgK1xuICAgICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChfLmlzRW1wdHkob3B0aW9ucy5yZW1vdGVQYXRoKSkge1xuICAgICAgY29uc3Qge3NpemV9ID0gYXdhaXQgZnMuc3RhdChyZXN1bHRGaWxlUGF0aCk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgVGhlIHNpemUgb2YgdGhlIHJlc3VsdGluZyBzY3JlZW4gcmVjb3JkaW5nIGlzICR7dXRpbC50b1JlYWRhYmxlU2l6ZVN0cmluZyhzaXplKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHVwbG9hZFJlY29yZGVkTWVkaWEocmVzdWx0RmlsZVBhdGgsIG9wdGlvbnMucmVtb3RlUGF0aCwgb3B0aW9ucyk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICAgIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMgPSBudWxsO1xuICB9XG59O1xuXG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7O0FBRUEsTUFBTUMsV0FBVyxHQUFHLEdBQXBCO0FBQ0EsTUFBTUMsYUFBYSxHQUFHLElBQXRCO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFwQztBQUNBLE1BQU1D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
|
|
310
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3JlY29yZHNjcmVlbi5qcyIsIm5hbWVzIjpbImNvbW1hbmRzIiwiUkVUUllfUEFVU0UiLCJSRVRSWV9USU1FT1VUIiwiTUFYX1JFQ09SRElOR19USU1FX1NFQyIsIk1BWF9USU1FX1NFQyIsIkRFRkFVTFRfUkVDT1JESU5HX1RJTUVfU0VDIiwiUFJPQ0VTU19TSFVURE9XTl9USU1FT1VUIiwiU0NSRUVOUkVDT1JEX0JJTkFSWSIsIkRFRkFVTFRfRVhUIiwiTUlOX0VNVUxBVE9SX0FQSV9MRVZFTCIsIkZGTVBFR19CSU5BUlkiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJ1cGxvYWRSZWNvcmRlZE1lZGlhIiwibG9jYWxGaWxlIiwicmVtb3RlUGF0aCIsInVwbG9hZE9wdGlvbnMiLCJfIiwiaXNFbXB0eSIsInV0aWwiLCJ0b0luTWVtb3J5QmFzZTY0IiwidG9TdHJpbmciLCJ1c2VyIiwicGFzcyIsIm1ldGhvZCIsImhlYWRlcnMiLCJmaWxlRmllbGROYW1lIiwiZm9ybUZpZWxkcyIsIm9wdGlvbnMiLCJhdXRoIiwibmV0IiwidXBsb2FkRmlsZSIsInZlcmlmeVNjcmVlblJlY29yZElzU3VwcG9ydGVkIiwiYWRiIiwiaXNFbXVsYXRvciIsImFwaUxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJFcnJvciIsInNjaGVkdWxlU2NyZWVuUmVjb3JkIiwicmVjb3JkaW5nUHJvcGVydGllcyIsImxvZyIsInN0b3BwZWQiLCJ0aW1lciIsInZpZGVvU2l6ZSIsImJpdFJhdGUiLCJ0aW1lTGltaXQiLCJidWdSZXBvcnQiLCJjdXJyZW50VGltZUxpbWl0IiwiaGFzVmFsdWUiLCJjdXJyZW50VGltZUxpbWl0SW50IiwicGFyc2VJbnQiLCJpc05hTiIsInBhdGhPbkRldmljZSIsInV1aWRWNCIsInN1YnN0cmluZyIsInJlY29yZGluZ1Byb2MiLCJzY3JlZW5yZWNvcmQiLCJvbiIsImN1cnJlbnREdXJhdGlvbiIsImdldER1cmF0aW9uIiwiYXNTZWNvbmRzIiwidG9GaXhlZCIsImRlYnVnIiwidGltZUxpbWl0SW50IiwiY2h1bmtEdXJhdGlvbiIsImNhdGNoIiwiZSIsImVycm9yIiwic3RhY2siLCJzdGFydCIsIndhaXRGb3JDb25kaXRpb24iLCJmaWxlRXhpc3RzIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsInJlY29yZHMiLCJwdXNoIiwicmVjb3JkaW5nUHJvY2VzcyIsIm1lcmdlU2NyZWVuUmVjb3JkcyIsIm1lZGlhRmlsZXMiLCJmcyIsIndoaWNoIiwiY29uZmlnQ29udGVudCIsIm1hcCIsIngiLCJqb2luIiwiY29uZmlnRmlsZSIsInBhdGgiLCJyZXNvbHZlIiwiZGlybmFtZSIsIndyaXRlRmlsZSIsInJlc3VsdCIsIk1hdGgiLCJmbG9vciIsIkRhdGUiLCJhcmdzIiwiaW5mbyIsImV4ZWMiLCJ0ZXJtaW5hdGVCYWNrZ3JvdW5kU2NyZWVuUmVjb3JkaW5nIiwiZm9yY2UiLCJwaWRzIiwiZ2V0UElEc0J5TmFtZSIsInAiLCJzaGVsbCIsImVyciIsIm1lc3NhZ2UiLCJzdGFydFJlY29yZGluZ1NjcmVlbiIsImZvcmNlUmVzdGFydCIsInN0b3BSZWNvcmRpbmdTY3JlZW4iLCJ3YXJuIiwiX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMiLCJyZWNvcmQiLCJyaW1yYWYiLCJ0aW1lb3V0IiwicGFyc2VGbG9hdCIsInRpbWluZyIsIlRpbWVyIiwiaXNSdW5uaW5nIiwic3RvcCIsImVycm9yQW5kVGhyb3ciLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJsb2NhbFJlY29yZHMiLCJwb3NpeCIsImJhc2VuYW1lIiwicHVsbCIsImxhc3QiLCJyZXN1bHRGaWxlUGF0aCIsImxlbmd0aCIsInNpemUiLCJzdGF0IiwidG9SZWFkYWJsZVNpemVTdHJpbmciXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvcmVjb3Jkc2NyZWVuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgdXRpbCwgZnMsIG5ldCwgdGVtcERpciwgc3lzdGVtLCB0aW1pbmcgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5jb25zdCBSRVRSWV9QQVVTRSA9IDMwMDtcbmNvbnN0IFJFVFJZX1RJTUVPVVQgPSA1MDAwO1xuY29uc3QgTUFYX1JFQ09SRElOR19USU1FX1NFQyA9IDYwICogMztcbmNvbnN0IE1BWF9USU1FX1NFQyA9IDYwICogMzA7XG5jb25zdCBERUZBVUxUX1JFQ09SRElOR19USU1FX1NFQyA9IE1BWF9SRUNPUkRJTkdfVElNRV9TRUM7XG5jb25zdCBQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVQgPSAxMCAqIDEwMDA7XG5jb25zdCBTQ1JFRU5SRUNPUkRfQklOQVJZID0gJ3NjcmVlbnJlY29yZCc7XG5jb25zdCBERUZBVUxUX0VYVCA9ICcubXA0JztcbmNvbnN0IE1JTl9FTVVMQVRPUl9BUElfTEVWRUwgPSAyNztcbmNvbnN0IEZGTVBFR19CSU5BUlkgPSBgZmZtcGVnJHtzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnLmV4ZScgOiAnJ31gO1xuXG5hc3luYyBmdW5jdGlvbiB1cGxvYWRSZWNvcmRlZE1lZGlhIChsb2NhbEZpbGUsIHJlbW90ZVBhdGggPSBudWxsLCB1cGxvYWRPcHRpb25zID0ge30pIHtcbiAgaWYgKF8uaXNFbXB0eShyZW1vdGVQYXRoKSkge1xuICAgIHJldHVybiAoYXdhaXQgdXRpbC50b0luTWVtb3J5QmFzZTY0KGxvY2FsRmlsZSkpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBjb25zdCB7dXNlciwgcGFzcywgbWV0aG9kLCBoZWFkZXJzLCBmaWxlRmllbGROYW1lLCBmb3JtRmllbGRzfSA9IHVwbG9hZE9wdGlvbnM7XG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgbWV0aG9kOiBtZXRob2QgfHwgJ1BVVCcsXG4gICAgaGVhZGVycyxcbiAgICBmaWxlRmllbGROYW1lLFxuICAgIGZvcm1GaWVsZHMsXG4gIH07XG4gIGlmICh1c2VyICYmIHBhc3MpIHtcbiAgICBvcHRpb25zLmF1dGggPSB7dXNlciwgcGFzc307XG4gIH1cbiAgYXdhaXQgbmV0LnVwbG9hZEZpbGUobG9jYWxGaWxlLCByZW1vdGVQYXRoLCBvcHRpb25zKTtcbiAgcmV0dXJuICcnO1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlTY3JlZW5SZWNvcmRJc1N1cHBvcnRlZCAoYWRiLCBpc0VtdWxhdG9yKSB7XG4gIGNvbnN0IGFwaUxldmVsID0gYXdhaXQgYWRiLmdldEFwaUxldmVsKCk7XG4gIGlmIChpc0VtdWxhdG9yICYmIGFwaUxldmVsIDwgTUlOX0VNVUxBVE9SX0FQSV9MRVZFTCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2NyZWVuIHJlY29yZGluZyBkb2VzIG5vdCB3b3JrIG9uIGVtdWxhdG9ycyBydW5uaW5nIEFuZHJvaWQgQVBJIGxldmVsIGxlc3MgdGhhbiAke01JTl9FTVVMQVRPUl9BUElfTEVWRUx9YCk7XG4gIH1cbiAgaWYgKGFwaUxldmVsIDwgMTkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNjcmVlbiByZWNvcmRpbmcgbm90IGF2YWlsYWJsZSBvbiBBUEkgTGV2ZWwgJHthcGlMZXZlbH0uIE1pbmltdW0gQVBJIExldmVsIGlzIDE5LmApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNjaGVkdWxlU2NyZWVuUmVjb3JkIChhZGIsIHJlY29yZGluZ1Byb3BlcnRpZXMsIGxvZyA9IG51bGwpIHtcbiAgaWYgKHJlY29yZGluZ1Byb3BlcnRpZXMuc3RvcHBlZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICB0aW1lcixcbiAgICB2aWRlb1NpemUsXG4gICAgYml0UmF0ZSxcbiAgICB0aW1lTGltaXQsXG4gICAgYnVnUmVwb3J0LFxuICB9ID0gcmVjb3JkaW5nUHJvcGVydGllcztcblxuICBsZXQgY3VycmVudFRpbWVMaW1pdCA9IE1BWF9SRUNPUkRJTkdfVElNRV9TRUM7XG4gIGlmICh1dGlsLmhhc1ZhbHVlKHJlY29yZGluZ1Byb3BlcnRpZXMuY3VycmVudFRpbWVMaW1pdCkpIHtcbiAgICBjb25zdCBjdXJyZW50VGltZUxpbWl0SW50ID0gcGFyc2VJbnQocmVjb3JkaW5nUHJvcGVydGllcy5jdXJyZW50VGltZUxpbWl0LCAxMCk7XG4gICAgaWYgKCFpc05hTihjdXJyZW50VGltZUxpbWl0SW50KSAmJiBjdXJyZW50VGltZUxpbWl0SW50IDwgTUFYX1JFQ09SRElOR19USU1FX1NFQykge1xuICAgICAgY3VycmVudFRpbWVMaW1pdCA9IGN1cnJlbnRUaW1lTGltaXRJbnQ7XG4gICAgfVxuICB9XG4gIGNvbnN0IHBhdGhPbkRldmljZSA9IGAvc2RjYXJkLyR7dXRpbC51dWlkVjQoKS5zdWJzdHJpbmcoMCwgOCl9JHtERUZBVUxUX0VYVH1gO1xuICBjb25zdCByZWNvcmRpbmdQcm9jID0gYWRiLnNjcmVlbnJlY29yZChwYXRoT25EZXZpY2UsIHtcbiAgICB2aWRlb1NpemUsXG4gICAgYml0UmF0ZSxcbiAgICB0aW1lTGltaXQ6IGN1cnJlbnRUaW1lTGltaXQsXG4gICAgYnVnUmVwb3J0LFxuICB9KTtcblxuICByZWNvcmRpbmdQcm9jLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgaWYgKHJlY29yZGluZ1Byb3BlcnRpZXMuc3RvcHBlZCB8fCAhdXRpbC5oYXNWYWx1ZSh0aW1lTGltaXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnREdXJhdGlvbiA9IHRpbWVyLmdldER1cmF0aW9uKCkuYXNTZWNvbmRzLnRvRml4ZWQoMCk7XG4gICAgbG9nPy5kZWJ1ZyhgVGhlIG92ZXJhbGwgc2NyZWVuIHJlY29yZGluZyBkdXJhdGlvbiBpcyAke2N1cnJlbnREdXJhdGlvbn1zIHNvIGZhcmApO1xuICAgIGNvbnN0IHRpbWVMaW1pdEludCA9IHBhcnNlSW50KHRpbWVMaW1pdCwgMTApO1xuICAgIGlmIChpc05hTih0aW1lTGltaXRJbnQpIHx8IGN1cnJlbnREdXJhdGlvbiA+PSB0aW1lTGltaXRJbnQpIHtcbiAgICAgIGxvZz8uZGVidWcoJ1RoZXJlIGlzIG5vIG5lZWQgdG8gc3RhcnQgdGhlIG5leHQgcmVjb3JkaW5nIGNodW5rJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmVjb3JkaW5nUHJvcGVydGllcy5jdXJyZW50VGltZUxpbWl0ID0gdGltZUxpbWl0SW50IC0gY3VycmVudER1cmF0aW9uO1xuICAgIGNvbnN0IGNodW5rRHVyYXRpb24gPSByZWNvcmRpbmdQcm9wZXJ0aWVzLmN1cnJlbnRUaW1lTGltaXQgPCBNQVhfUkVDT1JESU5HX1RJTUVfU0VDXG4gICAgICA/IHJlY29yZGluZ1Byb3BlcnRpZXMuY3VycmVudFRpbWVMaW1pdFxuICAgICAgOiBNQVhfUkVDT1JESU5HX1RJTUVfU0VDO1xuICAgIGxvZz8uZGVidWcoYFN0YXJ0aW5nIHRoZSBuZXh0ICR7Y2h1bmtEdXJhdGlvbn1zLWNodW5rIGAgK1xuICAgICAgYG9mIHNjcmVlbiByZWNvcmRpbmcgaW4gb3JkZXIgdG8gYWNoaWV2ZSAke3RpbWVMaW1pdEludH1zIHRvdGFsIGR1cmF0aW9uYCk7XG4gICAgc2NoZWR1bGVTY3JlZW5SZWNvcmQoYWRiLCByZWNvcmRpbmdQcm9wZXJ0aWVzLCBsb2cpXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgbG9nPy5lcnJvcihlLnN0YWNrKTtcbiAgICAgICAgcmVjb3JkaW5nUHJvcGVydGllcy5zdG9wcGVkID0gdHJ1ZTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBhd2FpdCByZWNvcmRpbmdQcm9jLnN0YXJ0KDApO1xuICB0cnkge1xuICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4gYXdhaXQgYWRiLmZpbGVFeGlzdHMocGF0aE9uRGV2aWNlKSxcbiAgICAgIHt3YWl0TXM6IFJFVFJZX1RJTUVPVVQsIGludGVydmFsTXM6IFJFVFJZX1BBVVNFfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBleHBlY3RlZCBzY3JlZW4gcmVjb3JkIGZpbGUgJyR7cGF0aE9uRGV2aWNlfScgZG9lcyBub3QgZXhpc3QgYWZ0ZXIgJHtSRVRSWV9USU1FT1VUfW1zLiBgICtcbiAgICAgIGBJcyAke1NDUkVFTlJFQ09SRF9CSU5BUll9IHV0aWxpdHkgYXZhaWxhYmxlIGFuZCBvcGVyYXRpb25hbCBvbiB0aGUgZGV2aWNlIHVuZGVyIHRlc3Q/YCk7XG4gIH1cblxuICByZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZHMucHVzaChwYXRoT25EZXZpY2UpO1xuICByZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZGluZ1Byb2Nlc3MgPSByZWNvcmRpbmdQcm9jO1xufVxuXG5hc3luYyBmdW5jdGlvbiBtZXJnZVNjcmVlblJlY29yZHMgKG1lZGlhRmlsZXMsIGxvZyA9IG51bGwpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy53aGljaChGRk1QRUdfQklOQVJZKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtGRk1QRUdfQklOQVJZfSB1dGlsaXR5IGlzIG5vdCBhdmFpbGFibGUgaW4gUEFUSC4gUGxlYXNlIGluc3RhbGwgaXQgZnJvbSBodHRwczovL3d3dy5mZm1wZWcub3JnL2ApO1xuICB9XG4gIGNvbnN0IGNvbmZpZ0NvbnRlbnQgPSBtZWRpYUZpbGVzXG4gICAgLm1hcCgoeCkgPT4gYGZpbGUgJyR7eH0nYClcbiAgICAuam9pbignXFxuJyk7XG4gIGNvbnN0IGNvbmZpZ0ZpbGUgPSBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKG1lZGlhRmlsZXNbMF0pLCAnY29uZmlnLnR4dCcpO1xuICBhd2FpdCBmcy53cml0ZUZpbGUoY29uZmlnRmlsZSwgY29uZmlnQ29udGVudCwgJ3V0ZjgnKTtcbiAgbG9nPy5kZWJ1ZyhgR2VuZXJhdGVkIGZmbXBlZyBtZXJnaW5nIGNvbmZpZyAnJHtjb25maWdGaWxlfScgd2l0aCBpdGVtczpcXG4ke2NvbmZpZ0NvbnRlbnR9YCk7XG4gIGNvbnN0IHJlc3VsdCA9IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUobWVkaWFGaWxlc1swXSksIGBtZXJnZV8ke01hdGguZmxvb3IobmV3IERhdGUoKSl9JHtERUZBVUxUX0VYVH1gKTtcbiAgY29uc3QgYXJncyA9IFsnLXNhZmUnLCAnMCcsICctZicsICdjb25jYXQnLCAnLWknLCBjb25maWdGaWxlLCAnLWMnLCAnY29weScsIHJlc3VsdF07XG4gIGxvZz8uaW5mbyhgSW5pdGlhdGluZyBzY3JlZW4gcmVjb3JkcyBtZXJnaW5nIHVzaW5nIHRoZSBjb21tYW5kICcke0ZGTVBFR19CSU5BUll9ICR7YXJncy5qb2luKCcgJyl9J2ApO1xuICBhd2FpdCBleGVjKEZGTVBFR19CSU5BUlksIGFyZ3MpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiB0ZXJtaW5hdGVCYWNrZ3JvdW5kU2NyZWVuUmVjb3JkaW5nIChhZGIsIGZvcmNlID0gdHJ1ZSkge1xuICBjb25zdCBwaWRzID0gKGF3YWl0IGFkYi5nZXRQSURzQnlOYW1lKFNDUkVFTlJFQ09SRF9CSU5BUlkpKVxuICAgIC5tYXAoKHApID0+IGAke3B9YCk7XG4gIGlmIChfLmlzRW1wdHkocGlkcykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGFkYi5zaGVsbChbJ2tpbGwnLCBmb3JjZSA/ICctMTUnIDogJy0yJywgLi4ucGlkc10pO1xuICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4gXy5pc0VtcHR5KGF3YWl0IGFkYi5nZXRQSURzQnlOYW1lKFNDUkVFTlJFQ09SRF9CSU5BUlkpKSwge1xuICAgICAgd2FpdE1zOiBQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVQsXG4gICAgICBpbnRlcnZhbE1zOiA1MDAsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHN0b3AgdGhlIGJhY2tncm91bmQgc2NyZWVuIHJlY29yZGluZzogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxufVxuXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RhcnRSZWNvcmRpbmdPcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZW1vdGVQYXRoIC0gVGhlIHBhdGggdG8gdGhlIHJlbW90ZSBsb2NhdGlvbiwgd2hlcmUgdGhlIGNhcHR1cmVkIHZpZGVvIHNob3VsZCBiZSB1cGxvYWRlZC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWQ6IGh0dHAvaHR0cHMsIGZ0cC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bGwgb3IgZW1wdHkgc3RyaW5nIHZhbHVlICh0aGUgZGVmYXVsdCBzZXR0aW5nKSBtZWFucyB0aGUgY29udGVudCBvZiByZXN1bHRpbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgc2hvdWxkIGJlIGVuY29kZWQgYXMgQmFzZTY0IGFuZCBwYXNzZWQgYXMgdGhlIGVuZHBvdW50IHJlc3BvbnNlIHZhbHVlLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHRoZSBnZW5lcmF0ZWQgbWVkaWEgZmlsZSBpcyB0b28gYmlnIHRvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXQgaW50byB0aGUgYXZhaWxhYmxlIHByb2Nlc3MgbWVtb3J5LlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gb25seSBoYXMgYW4gZWZmZWN0IGlmIHRoZXJlIGlzIHNjcmVlbiByZWNvcmRpbmcgcHJvY2VzcyBpbiBwcm9ncmVlc3NcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBgZm9yY2VSZXN0YXJ0YCBwYXJhbWV0ZXIgaXMgbm90IHNldCB0byBgdHJ1ZWAuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVzZXIgLSBUaGUgbmFtZSBvZiB0aGUgdXNlciBmb3IgdGhlIHJlbW90ZSBhdXRoZW50aWNhdGlvbi4gT25seSB3b3JrcyBpZiBgcmVtb3RlUGF0aGAgaXMgcHJvdmlkZWQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhc3MgLSBUaGUgcGFzc3dvcmQgZm9yIHRoZSByZW1vdGUgYXV0aGVudGljYXRpb24uIE9ubHkgd29ya3MgaWYgYHJlbW90ZVBhdGhgIGlzIHByb3ZpZGVkLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtZXRob2QgW1BVVF0gLSBUaGUgaHR0cCBtdWx0aXBhcnQgdXBsb2FkIG1ldGhvZCBuYW1lLiBPbmx5IHdvcmtzIGlmIGByZW1vdGVQYXRoYCBpcyBwcm92aWRlZC5cbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaGVhZGVycyAtIEFkZGl0aW9uYWwgaGVhZGVycyBtYXBwaW5nIGZvciBtdWx0aXBhcnQgaHR0cChzKSB1cGxvYWRzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZpbGVGaWVsZE5hbWUgW2ZpbGVdIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm0gZmllbGQsIHdoZXJlIHRoZSBmaWxlIGNvbnRlbnQgQkxPQiBzaG91bGQgYmUgc3RvcmVkIGZvclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/T2JqZWN0fEFycmF5PFBhaXI+fSBmb3JtRmllbGRzIC0gQWRkaXRpb25hbCBmb3JtIGZpZWxkcyBmb3IgbXVsdGlwYXJ0IGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2aWRlb1NpemUgLSBUaGUgZm9ybWF0IGlzIHdpZHRoeGhlaWdodC5cbiAqICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgdGhlIGRldmljZSdzIG5hdGl2ZSBkaXNwbGF5IHJlc29sdXRpb24gKGlmIHN1cHBvcnRlZCksXG4gKiAgICAgICAgICAgICAgICAgIDEyODB4NzIwIGlmIG5vdC4gRm9yIGJlc3QgcmVzdWx0cyxcbiAqICAgICAgICAgICAgICAgICAgdXNlIGEgc2l6ZSBzdXBwb3J0ZWQgYnkgeW91ciBkZXZpY2UncyBBZHZhbmNlZCBWaWRlbyBDb2RpbmcgKEFWQykgZW5jb2Rlci5cbiAqICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIFwiMTI4MHg3MjBcIlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gYnVnUmVwb3J0IC0gU2V0IGl0IHRvIGB0cnVlYCBpbiBvcmRlciB0byBkaXNwbGF5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlIHZpZGVvIG92ZXJsYXksXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIGEgdGltZXN0YW1wLCB0aGF0IGlzIGhlbHBmdWwgaW4gdmlkZW9zIGNhcHR1cmVkIHRvIGlsbHVzdHJhdGUgYnVncy5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIHNpbmNlIEFQSSBsZXZlbCAyNyAoQW5kcm9pZCBQKS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHRpbWVMaW1pdCAtIFRoZSBtYXhpbXVtIHJlY29yZGluZyB0aW1lLCBpbiBzZWNvbmRzLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxODAgKDMgbWludXRlcykuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWF4aW11bSB2YWx1ZSBpcyAxODAwICgzMCBtaW51dGVzKS4gSWYgdGhlIHBhc3NlZCB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gMTgwIHRoZW5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhbGdvcml0aG0gd2lsbCB0cnkgdG8gc2NoZWR1bGUgbXVsdGlwbGUgc2NyZWVuIHJlY29yZGluZyBjaHVua3MgYW5kIG1lcmdlIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0aW5nIHZpZGVvcyBpbnRvIGEgc2luZ2xlIG1lZGlhIGZpbGUgdXNpbmcgYGZmbXBlZ2AgdXRpbGl0eS5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSB1dGlsaXR5IGlzIG5vdCBhdmFpbGFibGUgaW4gUEFUSCB0aGVuIHRoZSBtb3N0IHJlY2VudCBzY3JlZW4gcmVjb3JkaW5nIGNodW5rIGlzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb2luZyB0byBiZSByZXR1cm5lZC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IGJpdFJhdGUgLSBUaGUgdmlkZW8gYml0IHJhdGUgZm9yIHRoZSB2aWRlbywgaW4gYml0cyBwZXIgc2Vjb25kLlxuICogICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgNDAwMDAwMCAoNCBNYml0L3MpLiBZb3UgY2FuIGluY3JlYXNlIHRoZSBiaXQgcmF0ZSB0byBpbXByb3ZlIHZpZGVvIHF1YWxpdHksXG4gKiAgICAgICAgICAgICAgICBidXQgZG9pbmcgc28gcmVzdWx0cyBpbiBsYXJnZXIgbW92aWUgZmlsZXMuXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBmb3JjZVJlc3RhcnQgLSBXaGV0aGVyIHRvIHRyeSB0byBjYXRjaCBhbmQgdXBsb2FkL3JldHVybiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgc2NyZWVuIHJlY29yZGluZ1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGBmYWxzZWAsIHRoZSBkZWZhdWx0IHNldHRpbmcpIG9yIGlnbm9yZSB0aGUgcmVzdWx0IG9mIGl0IGFuZCBzdGFydCBhIG5ldyByZWNvcmRpbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZWx5IChgdHJ1ZWApLlxuICovXG5cbi8qKlxuICogUmVjb3JkIHRoZSBkaXNwbGF5IG9mIGEgcmVhbCBkZXZpY2VzIHJ1bm5pbmcgQW5kcm9pZCA0LjQgKEFQSSBsZXZlbCAxOSkgYW5kIGhpZ2hlci5cbiAqIEVtdWxhdG9ycyBhcmUgc3VwcG9ydGVkIHNpbmNlIEFQSSBsZXZlbCAyNyAoQW5kcm9pZCBQKS5cbiAqIEl0IHJlY29yZHMgc2NyZWVuIGFjdGl2aXR5IHRvIGFuIE1QRUctNCBmaWxlLiBBdWRpbyBpcyBub3QgcmVjb3JkZWQgd2l0aCB0aGUgdmlkZW8gZmlsZS5cbiAqIElmIHNjcmVlbiByZWNvcmRpbmcgaGFzIGJlZW4gYWxyZWFkeSBzdGFydGVkIHRoZW4gdGhlIGNvbW1hbmQgd2lsbCBzdG9wIGl0IGZvcmNlZnVsbHkgYW5kIHN0YXJ0IGEgbmV3IG9uZS5cbiAqIFRoZSBwcmV2aW91c2x5IHJlY29yZGVkIHZpZGVvIGZpbGUgd2lsbCBiZSBkZWxldGVkLlxuICpcbiAqIEBwYXJhbSB7P1N0YXJ0UmVjb3JkaW5nT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NC1lbmNvZGVkIGNvbnRlbnQgb2YgdGhlIHJlY29yZGVkIG1lZGlhIGZpbGUgaWZcbiAqICAgICAgICAgICAgICAgICAgIGFueSBzY3JlZW4gcmVjb3JkaW5nIGlzIGN1cnJlbnRseSBydW5uaW5nIG9yIGFuIGVtcHR5IHN0cmluZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBzY3JlZW4gcmVjb3JkaW5nIGhhcyBmYWlsZWQgdG8gc3RhcnQgb3IgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QuXG4gKi9cbmNvbW1hbmRzLnN0YXJ0UmVjb3JkaW5nU2NyZWVuID0gYXN5bmMgZnVuY3Rpb24gc3RhcnRSZWNvcmRpbmdTY3JlZW4gKG9wdGlvbnMgPSB7fSkge1xuICBhd2FpdCB2ZXJpZnlTY3JlZW5SZWNvcmRJc1N1cHBvcnRlZCh0aGlzLmFkYiwgdGhpcy5pc0VtdWxhdG9yKCkpO1xuXG4gIGxldCByZXN1bHQgPSAnJztcbiAgY29uc3Qge3ZpZGVvU2l6ZSwgdGltZUxpbWl0ID0gREVGQVVMVF9SRUNPUkRJTkdfVElNRV9TRUMsIGJ1Z1JlcG9ydCwgYml0UmF0ZSwgZm9yY2VSZXN0YXJ0fSA9IG9wdGlvbnM7XG4gIGlmICghZm9yY2VSZXN0YXJ0KSB7XG4gICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5zdG9wUmVjb3JkaW5nU2NyZWVuKG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKGF3YWl0IHRlcm1pbmF0ZUJhY2tncm91bmRTY3JlZW5SZWNvcmRpbmcodGhpcy5hZGIsIHRydWUpKSB7XG4gICAgdGhpcy5sb2cud2FybihgVGhlcmUgd2VyZSBzb21lICR7U0NSRUVOUkVDT1JEX0JJTkFSWX0gcHJvY2VzcyBsZWZ0b3ZlcnMgcnVubmluZyBgICtcbiAgICAgIGBpbiB0aGUgYmFja2dyb3VuZC4gTWFrZSBzdXJlIHlvdSBzdG9wIHNjcmVlbiByZWNvcmRpbmcgZWFjaCB0aW1lIGFmdGVyIGl0IGlzIHN0YXJ0ZWQsIGAgK1xuICAgICAgYG90aGVyd2lzZSB0aGUgcmVjb3JkZWQgbWVkaWEgbWlnaHQgcXVpY2tseSBleGNlZWQgYWxsIHRoZSBmcmVlIHNwYWNlIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdC5gKTtcbiAgfVxuXG4gIGlmICghXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMpKSB7XG4gICAgZm9yIChjb25zdCByZWNvcmQgb2YgKHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3JkcyB8fCBbXSkpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnJpbXJhZihyZWNvcmQpO1xuICAgIH1cbiAgICB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzID0gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHRpbWVvdXQgPSBwYXJzZUZsb2F0KHRpbWVMaW1pdCk7XG4gIGlmIChpc05hTih0aW1lb3V0KSB8fCB0aW1lb3V0ID4gTUFYX1RJTUVfU0VDIHx8IHRpbWVvdXQgPD0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHRpbWVMaW1pdCB2YWx1ZSBtdXN0IGJlIGluIHJhbmdlIFsxLCAke01BWF9USU1FX1NFQ31dIHNlY29uZHMuIGAgK1xuICAgICAgYFRoZSB2YWx1ZSBvZiAnJHt0aW1lTGltaXR9JyBoYXMgYmVlbiBwYXNzZWQgaW5zdGVhZC5gKTtcbiAgfVxuXG4gIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMgPSB7XG4gICAgdGltZXI6IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpLFxuICAgIHZpZGVvU2l6ZSxcbiAgICB0aW1lTGltaXQsXG4gICAgY3VycmVudFRpbWVMaW1pdDogdGltZUxpbWl0LFxuICAgIGJpdFJhdGUsXG4gICAgYnVnUmVwb3J0LFxuICAgIHJlY29yZHM6IFtdLFxuICAgIHJlY29yZGluZ1Byb2Nlc3M6IG51bGwsXG4gICAgc3RvcHBlZDogZmFsc2UsXG4gIH07XG4gIGF3YWl0IHNjaGVkdWxlU2NyZWVuUmVjb3JkKHRoaXMuYWRiLCB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLCB0aGlzLmxvZyk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0b3BSZWNvcmRpbmdPcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZW1vdGVQYXRoIC0gVGhlIHBhdGggdG8gdGhlIHJlbW90ZSBsb2NhdGlvbiwgd2hlcmUgdGhlIHJlc3VsdGluZyB2aWRlbyBzaG91bGQgYmUgdXBsb2FkZWQuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHByb3RvY29scyBhcmUgc3VwcG9ydGVkOiBodHRwL2h0dHBzLCBmdHAuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdWxsIG9yIGVtcHR5IHN0cmluZyB2YWx1ZSAodGhlIGRlZmF1bHQgc2V0dGluZykgbWVhbnMgdGhlIGNvbnRlbnQgb2YgcmVzdWx0aW5nXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIHNob3VsZCBiZSBlbmNvZGVkIGFzIEJhc2U2NCBhbmQgcGFzc2VkIGFzIHRoZSBlbmRwb3VudCByZXNwb25zZSB2YWx1ZS5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB0aGUgZ2VuZXJhdGVkIG1lZGlhIGZpbGUgaXMgdG9vIGJpZyB0b1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml0IGludG8gdGhlIGF2YWlsYWJsZSBwcm9jZXNzIG1lbW9yeS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXNlciAtIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGZvciB0aGUgcmVtb3RlIGF1dGhlbnRpY2F0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYXNzIC0gVGhlIHBhc3N3b3JkIGZvciB0aGUgcmVtb3RlIGF1dGhlbnRpY2F0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtZXRob2QgLSBUaGUgaHR0cCBtdWx0aXBhcnQgdXBsb2FkIG1ldGhvZCBuYW1lLiBUaGUgJ1BVVCcgb25lIGlzIHVzZWQgYnkgZGVmYXVsdC5cbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaGVhZGVycyAtIEFkZGl0aW9uYWwgaGVhZGVycyBtYXBwaW5nIGZvciBtdWx0aXBhcnQgaHR0cChzKSB1cGxvYWRzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZpbGVGaWVsZE5hbWUgW2ZpbGVdIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm0gZmllbGQsIHdoZXJlIHRoZSBmaWxlIGNvbnRlbnQgQkxPQiBzaG91bGQgYmUgc3RvcmVkIGZvclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/T2JqZWN0fEFycmF5PFBhaXI+fSBmb3JtRmllbGRzIC0gQWRkaXRpb25hbCBmb3JtIGZpZWxkcyBmb3IgbXVsdGlwYXJ0IGh0dHAocykgdXBsb2Fkc1xuICovXG5cbi8qKlxuICogU3RvcCByZWNvcmRpbmcgdGhlIHNjcmVlbi5cbiAqIElmIG5vIHNjcmVlbiByZWNvcmRpbmcgaGFzIGJlZW4gc3RhcnRlZCBiZWZvcmUgdGhlbiB0aGUgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7P1N0b3BSZWNvcmRpbmdPcHRpb25zfSBvcHRpb25zIC0gVGhlIGF2YWlsYWJsZSBvcHRpb25zLlxuICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0LWVuY29kZWQgY29udGVudCBvZiB0aGUgcmVjb3JkZWQgbWVkaWEgZmlsZSBpZiAncmVtb3RlUGF0aCdcbiAqICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciBpcyBmYWxzeSBvciBhbiBlbXB0eSBzdHJpbmcuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGdldHRpbmcgdGhlIG5hbWUgb2YgYSBtZWRpYSBmaWxlXG4gKiAgICAgICAgICAgICAgICAgb3IgdGhlIGZpbGUgY29udGVudCBjYW5ub3QgYmUgdXBsb2FkZWQgdG8gdGhlIHJlbW90ZSBsb2NhdGlvblxuICogICAgICAgICAgICAgICAgIG9yIHNjcmVlbiByZWNvcmRpbmcgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QuXG4gKi9cbmNvbW1hbmRzLnN0b3BSZWNvcmRpbmdTY3JlZW4gPSBhc3luYyBmdW5jdGlvbiBzdG9wUmVjb3JkaW5nU2NyZWVuIChvcHRpb25zID0ge30pIHtcbiAgYXdhaXQgdmVyaWZ5U2NyZWVuUmVjb3JkSXNTdXBwb3J0ZWQodGhpcy5hZGIsIHRoaXMuaXNFbXVsYXRvcigpKTtcblxuICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzKSkge1xuICAgIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMuc3RvcHBlZCA9IHRydWU7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IHRlcm1pbmF0ZUJhY2tncm91bmRTY3JlZW5SZWNvcmRpbmcodGhpcy5hZGIsIGZhbHNlKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5sb2cud2FybihlcnIubWVzc2FnZSk7XG4gICAgaWYgKCFfLmlzRW1wdHkodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcykpIHtcbiAgICAgIHRoaXMubG9nLndhcm4oJ1RoZSByZXN1bHRpbmcgdmlkZW8gbWlnaHQgYmUgY29ycnVwdGVkJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKF8uaXNFbXB0eSh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzKSkge1xuICAgIHRoaXMubG9nLmluZm8oYFNjcmVlbiByZWNvcmRpbmcgaGFzIG5vdCBiZWVuIHByZXZpb3VzbHkgc3RhcnRlZCBieSBBcHBpdW0uIFRoZXJlIGlzIG5vdGhpbmcgdG8gc3RvcGApO1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGlmICh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZGluZ1Byb2Nlc3MgJiYgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRpbmdQcm9jZXNzLmlzUnVubmluZykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZGluZ1Byb2Nlc3Muc3RvcCgnU0lHSU5UJywgUFJPQ0VTU19TSFVURE9XTl9USU1FT1VUKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBVbmFibGUgdG8gc3RvcCBzY3JlZW4gcmVjb3JkaW5nIHdpdGhpbiAke1BST0NFU1NfU0hVVERPV05fVElNRU9VVH1tc2ApO1xuICAgIH1cbiAgICB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZGluZ1Byb2Nlc3MgPSBudWxsO1xuICB9XG5cbiAgaWYgKF8uaXNFbXB0eSh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZHMpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgTm8gc2NyZWVuIHJlY29yZGluZ3MgaGF2ZSBiZWVuIHN0b3JlZCBvbiB0aGUgZGV2aWNlIHNvIGZhci4gYCArXG4gICAgICBgQXJlIHlvdSBzdXJlIHRoZSAke1NDUkVFTlJFQ09SRF9CSU5BUll9IHV0aWxpdHkgd29ya3MgYXMgZXhwZWN0ZWQ/YCk7XG4gIH1cblxuICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gIHRyeSB7XG4gICAgY29uc3QgbG9jYWxSZWNvcmRzID0gW107XG4gICAgZm9yIChjb25zdCBwYXRoT25EZXZpY2Ugb2YgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRzKSB7XG4gICAgICBsb2NhbFJlY29yZHMucHVzaChwYXRoLnJlc29sdmUodG1wUm9vdCwgcGF0aC5wb3NpeC5iYXNlbmFtZShwYXRoT25EZXZpY2UpKSk7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5wdWxsKHBhdGhPbkRldmljZSwgXy5sYXN0KGxvY2FsUmVjb3JkcykpO1xuICAgICAgYXdhaXQgdGhpcy5hZGIucmltcmFmKHBhdGhPbkRldmljZSk7XG4gICAgfVxuICAgIGxldCByZXN1bHRGaWxlUGF0aCA9IF8ubGFzdChsb2NhbFJlY29yZHMpO1xuICAgIGlmIChsb2NhbFJlY29yZHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgR290ICR7bG9jYWxSZWNvcmRzLmxlbmd0aH0gc2NyZWVuIHJlY29yZGluZ3MuIFRyeWluZyB0byBtZXJnZSB0aGVtYCk7XG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHRGaWxlUGF0aCA9IGF3YWl0IG1lcmdlU2NyZWVuUmVjb3Jkcyhsb2NhbFJlY29yZHMsIHRoaXMubG9nKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgQ2Fubm90IG1lcmdlIHRoZSByZWNvcmRlZCBmaWxlcy4gVGhlIG1vc3QgcmVjZW50IHNjcmVlbiByZWNvcmRpbmcgaXMgZ29pbmcgdG8gYmUgcmV0dXJuZWQgYXMgdGhlIHJlc3VsdC4gYCArXG4gICAgICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKF8uaXNFbXB0eShvcHRpb25zLnJlbW90ZVBhdGgpKSB7XG4gICAgICBjb25zdCB7c2l6ZX0gPSBhd2FpdCBmcy5zdGF0KHJlc3VsdEZpbGVQYXRoKTtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBUaGUgc2l6ZSBvZiB0aGUgcmVzdWx0aW5nIHNjcmVlbiByZWNvcmRpbmcgaXMgJHt1dGlsLnRvUmVhZGFibGVTaXplU3RyaW5nKHNpemUpfWApO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdXBsb2FkUmVjb3JkZWRNZWRpYShyZXN1bHRGaWxlUGF0aCwgb3B0aW9ucy5yZW1vdGVQYXRoLCBvcHRpb25zKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yaW1yYWYodG1wUm9vdCk7XG4gICAgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcyA9IG51bGw7XG4gIH1cbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjs7QUFFQSxNQUFNQyxXQUFXLEdBQUcsR0FBcEI7QUFDQSxNQUFNQyxhQUFhLEdBQUcsSUFBdEI7QUFDQSxNQUFNQyxzQkFBc0Is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
|
|
@@ -62,4 +62,4 @@ var _default = commands;
|
|
|
62
62
|
exports.default = _default;require('source-map-support').install();
|
|
63
63
|
|
|
64
64
|
|
|
65
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3NoZWxsLmpzIiwibmFtZXMiOlsiQURCX1NIRUxMX0ZFQVRVUkUiLCJjb21tYW5kcyIsIm1vYmlsZVNoZWxsIiwib3B0cyIsImVuc3VyZUZlYXR1cmVFbmFibGVkIiwiY29tbWFuZCIsImFyZ3MiLCJ0aW1lb3V0IiwiaW5jbHVkZVN0ZGVyciIsIl8iLCJpc1N0cmluZyIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiYWRiQXJncyIsImFkYiIsImV4ZWN1dGFibGUiLCJkZWZhdWx0QXJncyIsImlzQXJyYXkiLCJsb2ciLCJkZWJ1ZyIsInBhdGgiLCJ1dGlsIiwicXVvdGUiLCJzdGRvdXQiLCJzdGRlcnIiLCJleGVjIiwiZXJyIiwiZXJyb3JBbmRUaHJvdyIsIm1lc3NhZ2UiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvc2hlbGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuY29uc3QgQURCX1NIRUxMX0ZFQVRVUkUgPSAnYWRiX3NoZWxsJztcblxubGV0IGNvbW1hbmRzID0ge307XG5cbmNvbW1hbmRzLm1vYmlsZVNoZWxsID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU2hlbGwgKG9wdHMgPSB7fSkge1xuICB0aGlzLmVuc3VyZUZlYXR1cmVFbmFibGVkKEFEQl9TSEVMTF9GRUFUVVJFKTtcblxuICBjb25zdCB7XG4gICAgY29tbWFuZCxcbiAgICBhcmdzID0gW10sXG4gICAgdGltZW91dCA9IDIwMDAwLFxuICAgIGluY2x1ZGVTdGRlcnIsXG4gIH0gPSBvcHRzO1xuXG4gIGlmICghXy5pc1N0cmluZyhjb21tYW5kKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFRoZSAnY29tbWFuZCcgYXJndW1lbnQgaXMgbWFuZGF0b3J5YCk7XG4gIH1cblxuICBjb25zdCBhZGJBcmdzID0gW1xuICAgIC4uLnRoaXMuYWRiLmV4ZWN1dGFibGUuZGVmYXVsdEFyZ3MsXG4gICAgJ3NoZWxsJyxcbiAgICBjb21tYW5kLFxuICAgIC4uLihfLmlzQXJyYXkoYXJncykgPyBhcmdzIDogW2FyZ3NdKVxuICBdO1xuICB0aGlzLmxvZy5kZWJ1ZyhgUnVubmluZyAnJHt0aGlzLmFkYi5leGVjdXRhYmxlLnBhdGh9ICR7dXRpbC5xdW90ZShhZGJBcmdzKX0nYCk7XG4gIHRyeSB7XG4gICAgY29uc3Qge3N0ZG91dCwgc3RkZXJyfSA9IGF3YWl0IGV4ZWModGhpcy5hZGIuZXhlY3V0YWJsZS5wYXRoLCBhZGJBcmdzLCB7dGltZW91dH0pO1xuICAgIGlmIChpbmNsdWRlU3RkZXJyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGRvdXQsXG4gICAgICAgIHN0ZGVyclxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHN0ZG91dDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgQ2Fubm90IGV4ZWN1dGUgdGhlICcke2NvbW1hbmR9JyBzaGVsbCBjb21tYW5kLiBgICtcbiAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX0uIGAgK1xuICAgICAgYFN0ZE91dDogJHtlcnIuc3Rkb3V0fS4gU3RkRXJyOiAke2Vyci5zdGRlcnJ9YCk7XG4gIH1cbn07XG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxpQkFBaUIsR0FBRyxXQUExQjtBQUVBLElBQUlDLFFBQVEsR0FBRyxFQUFmOzs7QUFFQUEsUUFBUSxDQUFDQyxXQUFULEdBQXVCLGVBQWVBLFdBQWYsQ0FBNEJDLElBQUksR0FBRyxFQUFuQyxFQUF1QztFQUM1RCxLQUFLQyxvQkFBTCxDQUEwQkosaUJBQTFCO0VBRUEsTUFBTTtJQUNKSyxPQURJO0lBRUpDLElBQUksR0FBRyxFQUZIO0lBR0pDLE9BQU8sR0FBRyxLQUhOO0lBSUpDO0VBSkksSUFLRkwsSUFMSjs7RUFPQSxJQUFJLENBQUNNLGVBQUEsQ0FBRUMsUUFBRixDQUFXTCxPQUFYLENBQUwsRUFBMEI7SUFDeEIsTUFBTSxJQUFJTSxrQkFBQSxDQUFPQyxvQkFBWCxDQUFpQyxxQ0FBakMsQ0FBTjtFQUNEOztFQUVELE1BQU1DLE9BQU8sR0FBRyxDQUNkLEdBQUcsS0FBS0MsR0FBTCxDQUFTQyxVQUFULENBQW9CQyxXQURULEVBRWQsT0FGYyxFQUdkWCxPQUhjLEVBSWQsSUFBSUksZUFBQSxDQUFFUSxPQUFGLENBQVVYLElBQVYsSUFBa0JBLElBQWxCLEdBQXlCLENBQUNBLElBQUQsQ0FBN0IsQ0FKYyxDQUFoQjtFQU1BLEtBQUtZLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQixZQUFXLEtBQUtMLEdBQUwsQ0FBU0MsVUFBVCxDQUFvQkssSUFBSyxJQUFHQyxhQUFBLENBQUtDLEtBQUwsQ0FBV1QsT0FBWCxDQUFvQixHQUEzRTs7RUFDQSxJQUFJO0lBQ0YsTUFBTTtNQUFDVSxNQUFEO01BQVNDO0lBQVQsSUFBbUIsTUFBTSxJQUFBQyxrQkFBQSxFQUFLLEtBQUtYLEdBQUwsQ0FBU0MsVUFBVCxDQUFvQkssSUFBekIsRUFBK0JQLE9BQS9CLEVBQXdDO01BQUNOO0lBQUQsQ0FBeEMsQ0FBL0I7O0lBQ0EsSUFBSUMsYUFBSixFQUFtQjtNQUNqQixPQUFPO1FBQ0xlLE1BREs7UUFFTEM7TUFGSyxDQUFQO0lBSUQ7O0lBQ0QsT0FBT0QsTUFBUDtFQUNELENBVEQsQ0FTRSxPQUFPRyxHQUFQLEVBQVk7SUFDWixLQUFLUixHQUFMLENBQVNTLGFBQVQsQ0FBd0IsdUJBQXNCdEIsT0FBUSxtQkFBL0IsR0FDcEIsbUJBQWtCcUIsR0FBRyxDQUFDRSxPQUFRLElBRFYsR0FFcEIsV0FBVUYsR0FBRyxDQUFDSCxNQUFPLGFBQVlHLEdBQUcsQ0FBQ0YsTUFBTyxFQUYvQztFQUdEO0FBQ0YsQ0FuQ0Q7O2VBc0NldkIsUSJ9
|