appium-remote-debugger 8.11.0 → 8.13.2

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/README.md CHANGED
@@ -3,7 +3,6 @@
3
3
  [![Build Status](https://travis-ci.org/appium/appium-remote-debugger.svg)](https://travis-ci.org/appium/appium-remote-debugger)
4
4
  [![Dependency Status](https://david-dm.org/appium/appium-remote-debugger.svg)](https://david-dm.org/appium/appium-remote-debugger)
5
5
  [![devDependency Status](https://david-dm.org/appium/appium-remote-debugger/dev-status.svg)](https://david-dm.org/appium/appium-remote-debugger#info=devDependencies)
6
- [![Coverage Status](https://coveralls.io/repos/appium/appium-remote-debugger/badge.svg?branch=master&service=github)](https://coveralls.io/github/appium/appium-remote-debugger?branch=master)
7
6
 
8
7
  A Node.js frontend for the Remote Debugger protocol used by Appium to connect to iOS webviews and Safari. Written using ES6+.
9
8
 
@@ -44,6 +44,7 @@ async function connect(timeout = APP_CONNECT_TIMEOUT_MS) {
44
44
  this.rpcClient.on('_rpc_applicationDisconnected:', this.onAppDisconnect.bind(this));
45
45
  this.rpcClient.on('_rpc_applicationUpdated:', this.onAppUpdate.bind(this));
46
46
  this.rpcClient.on('_rpc_reportConnectedDriverList:', this.onConnectedDriverList.bind(this));
47
+ this.rpcClient.on('_rpc_reportCurrentState:', this.onCurrentState.bind(this));
47
48
  this.rpcClient.on('Page.frameDetached', this.frameDetached.bind(this));
48
49
  await this.rpcClient.connect();
49
50
 
@@ -304,4 +305,4 @@ var _default = {
304
305
  exports.default = _default;require('source-map-support').install();
305
306
 
306
307
 
307
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9taXhpbnMvY29ubmVjdC5qcyJdLCJuYW1lcyI6WyJBUFBfQ09OTkVDVF9USU1FT1VUX01TIiwiQVBQX0NPTk5FQ1RfSU5URVJWQUxfTVMiLCJTRUxFQ1RfQVBQX1JFVFJJRVMiLCJTRUxFQ1RfQVBQX1JFVFJZX1NMRUVQX01TIiwiU0FGQVJJX0JVTkRMRV9JRCIsIkJMQU5LX1BBR0VfVVJMIiwic2V0Q29ubmVjdGlvbktleSIsImxvZyIsImRlYnVnIiwicnBjQ2xpZW50Iiwic2VuZCIsImNvbm5lY3QiLCJ0aW1lb3V0Iiwic2V0dXAiLCJpbml0UnBjQ2xpZW50Iiwib24iLCJfIiwibm9vcCIsIm9uUGFnZUNoYW5nZSIsImJpbmQiLCJvbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdCIsIm9uQXBwQ29ubmVjdCIsIm9uQXBwRGlzY29ubmVjdCIsIm9uQXBwVXBkYXRlIiwib25Db25uZWN0ZWREcml2ZXJMaXN0IiwiZnJhbWVEZXRhY2hlZCIsImlzRW1wdHkiLCJhcHBEaWN0Iiwid2FpdE1zIiwiaW50ZXJ2YWwiLCJlcnIiLCJlcnJvciIsIm1lc3NhZ2UiLCJkaXNjb25uZWN0IiwiZW1pdCIsImV2ZW50cyIsIkVWRU5UX0RJU0NPTk5FQ1QiLCJ0ZWFyZG93biIsInNlbGVjdEFwcCIsImN1cnJlbnRVcmwiLCJtYXhUcmllcyIsImlnbm9yZUFib3V0QmxhbmtVcmwiLCJzaG91bGRDaGVja0ZvclRhcmdldCIsInRpbWVyIiwidGltaW5nIiwiVGltZXIiLCJzdGFydCIsImFwcElkS2V5IiwicGFnZURpY3QiLCJzZWFyY2hGb3JBcHAiLCJlcnJvckFuZFRocm93IiwibG9nQXBwbGljYXRpb25EaWN0aW9uYXJ5IiwicGFnZUFycmF5IiwiZnVsbFBhZ2VBcnJheSIsImFwcCIsImluZm8iLCJ0b1BhaXJzIiwiaXNBcnJheSIsImlzQWN0aXZlIiwiaWQiLCJyZXBsYWNlIiwicGFnZSIsInVybCIsImNsb25lIiwiYnVuZGxlSWQiLCJwdXNoIiwiZ2V0RHVyYXRpb24iLCJhc01pbGxpU2Vjb25kcyIsInRvRml4ZWQiLCJidW5kbGVJZHMiLCJpbmNsdWRlU2FmYXJpIiwiaXNTYWZhcmkiLCJhZGRpdGlvbmFsQnVuZGxlSWRzIiwicmV0cnlDb3VudCIsInBvc3NpYmxlQXBwSWRzIiwiam9pbiIsImF0dGVtcHRlZEFwcElkS2V5IiwicmVzdWx0Iiwic2VhcmNoRm9yUGFnZSIsIkVycm9yIiwiaWduIiwiYXBwc0RpY3QiLCJ2YWx1ZXMiLCJwcm9taXNlIiwiZGljdCIsInNlbGVjdFBhZ2UiLCJwYWdlSWRLZXkiLCJza2lwUmVhZHlDaGVjayIsImNoZWNrUGFnZUlzUmVhZHkiLCJwYWdlVW5sb2FkIiwiYXBwcyIsImdldFZhbHVlU3RyaW5nIiwia2V5IiwidmFsdWUiLCJpc0Z1bmN0aW9uIiwiSlNPTiIsInN0cmluZ2lmeSIsIkFycmF5IiwibGVuZ3RoIiwicHJlZml4IiwiayIsInYiLCJ2YWx1ZVN0cmluZyIsInVwZGF0ZUFwcHNXaXRoRGljdCIsImVudHJ5IiwiaXNVbmRlZmluZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsc0JBQXNCLEdBQUcsQ0FBL0I7QUFDQSxNQUFNQyx1QkFBdUIsR0FBRyxHQUFoQztBQUNBLE1BQU1DLGtCQUFrQixHQUFHLEVBQTNCO0FBQ0EsTUFBTUMseUJBQXlCLEdBQUcsR0FBbEM7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyx3QkFBekI7QUFDQSxNQUFNQyxjQUFjLEdBQUcsYUFBdkI7O0FBR0EsZUFBZUMsZ0JBQWYsR0FBbUM7QUFDakNDLGtCQUFJQyxLQUFKLENBQVUsZ0NBQVY7O0FBR0EsUUFBTSxLQUFLQyxTQUFMLENBQWVDLElBQWYsQ0FBb0Isa0JBQXBCLEVBQXdDLEVBQXhDLEVBQTRDLEtBQTVDLENBQU47QUFDRDs7QUFFRCxlQUFlQyxPQUFmLENBQXdCQyxPQUFPLEdBQUdaLHNCQUFsQyxFQUEwRDtBQUN4RCxPQUFLYSxLQUFMO0FBR0EsT0FBS0Ms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ZSxLQUFLQSxPQUFMLElBQWdCLEVBQS9CO0FBQ0EsTUFBSSxDQUFDZ0MsRUFBRCxFQUFLNkMsS0FBTCxJQUFjLDRCQUFnQnBCLElBQWhCLENBQWxCOztBQUNBLE1BQUksS0FBS3pELE9BQUwsQ0FBYWdDLEVBQWIsQ0FBSixFQUFzQjtBQUVwQjZDLElBQUFBLEtBQUssQ0FBQ3BELFNBQU4sR0FBa0IsS0FBS3pCLE9BQUwsQ0FBYWdDLEVBQWIsRUFBaUJQLFNBQW5DO0FBQ0Q7O0FBQ0QsT0FBS3pCLE9BQUwsQ0FBYWdDLEVBQWIsSUFBbUI2QyxLQUFuQjs7QUFHQSxNQUFJeEYsZ0JBQUV5RixXQUFGLENBQWNELEtBQUssQ0FBQ3BELFNBQXBCLENBQUosRUFBb0M7QUFDbENvRCxJQUFBQSxLQUFLLENBQUNwRCxTQUFOLEdBQWtCLDZCQUFsQjtBQUNEOztBQUdELE1BQUksQ0FBQyxLQUFLTCxRQUFWLEVBQW9CO0FBQ2xCLFNBQUtBLFFBQUwsR0FBZ0IsOEJBQWtCLEtBQUtpQixRQUF2QixFQUFpQyxLQUFLckMsT0FBdEMsQ0FBaEI7QUFDRDtBQUNGOztlQUVjO0FBQUVyQixFQUFBQSxnQkFBRjtBQUFvQkssRUFBQUEsT0FBcEI7QUFBNkJzQixFQUFBQSxVQUE3QjtBQUF5Q0ssRUFBQUEsU0FBekM7QUFBb0RXLEVBQUFBLFlBQXBEO0FBQWtFNkIsRUFBQUEsYUFBbEU7QUFBaUZPLEVBQUFBLFVBQWpGO0FBQTZGa0IsRUFBQUE7QUFBN0YsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IGFwcEluZm9Gcm9tRGljdCwgcGFnZUFycmF5RnJvbURpY3QsIGdldERlYnVnZ2VyQXBwS2V5LFxuICAgICAgICAgZ2V0UG9zc2libGVEZWJ1Z2dlckFwcEtleXMsIHNpbXBsZVN0cmluZ2lmeSwgZGVmZXJyZWRQcm9taXNlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQgeyB0aW1pbmcgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsLCB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG5jb25zdCBBUFBfQ09OTkVDVF9USU1FT1VUX01TID0gMDtcbmNvbnN0IEFQUF9DT05ORUNUX0lOVEVSVkFMX01TID0gMTAwO1xuY29uc3QgU0VMRUNUX0FQUF9SRVRSSUVTID0gMjA7XG5jb25zdCBTRUxFQ1RfQVBQX1JFVFJZX1NMRUVQX01TID0gNTAwO1xuY29uc3QgU0FGQVJJX0JVTkRMRV9JRCA9ICdjb20uYXBwbGUubW9iaWxlc2FmYXJpJztcbmNvbnN0IEJMQU5LX1BBR0VfVVJMID0gJ2Fib3V0OmJsYW5rJztcblxuXG5hc3luYyBmdW5jdGlvbiBzZXRDb25uZWN0aW9uS2V5ICgpIHtcbiAgbG9nLmRlYnVnKCdTZW5kaW5nIGNvbm5lY3Rpb24ga2V5IHJlcXVlc3QnKTtcbiAgLy8gc2VuZCBidXQgb25seSB3YWl0IHRvIG1ha2Ugc3VyZSB0aGUgc29ja2V0IHdvcmtlZFxuICAvLyBhcyByZXNwb25zZSBmcm9tIFdlYiBJbnNwZWN0b3IgY2FuIHRha2UgYSBsb25nIHRpbWVcbiAgYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnc2V0Q29ubmVjdGlvbktleScsIHt9LCBmYWxzZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbm5lY3QgKHRpbWVvdXQgPSBBUFBfQ09OTkVDVF9USU1FT1VUX01TKSB7XG4gIHRoaXMuc2V0dXAoKTtcblxuICAvLyBpbml0aWFsaXplIHRoZSBycGMgY2xpZW50XG4gIHRoaXMuaW5pdFJwY0NsaWVudCgpO1xuXG4gIC8vIGxpc3RlbiBmb3IgYmFzaWMgZGVidWdnZXItbGV2ZWwgZXZlbnRzXG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdfcnBjX3JlcG9ydFNldHVwOicsIF8ubm9vcCk7XG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdfcnBjX2ZvcndhcmRHZXRMaXN0aW5nOicsIHRoaXMub25QYWdlQ2hhbmdlLmJpbmQodGhpcykpO1xuICB0aGlzLnJwY0NsaWVudC5vbignX3JwY19yZXBvcnRDb25uZWN0ZWRBcHBsaWNhdGlvbkxpc3Q6JywgdGhpcy5vbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdC5iaW5kKHRoaXMpKTtcbiAgdGhpcy5ycGNDbGllbnQub24oJ19ycGNfYXBwbGljYXRpb25Db25uZWN0ZWQ6JywgdGhpcy5vbkFwcENvbm5lY3QuYmluZCh0aGlzKSk7XG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOicsIHRoaXMub25BcHBEaXNjb25uZWN0LmJpbmQodGhpcykpO1xuICB0aGlzLnJwY0NsaWVudC5vbignX3JwY19hcHBsaWNhdGlvblVwZGF0ZWQ6JywgdGhpcy5vbkFwcFVwZGF0ZS5iaW5kKHRoaXMpKTtcbiAgdGhpcy5ycGNDbGllbnQub24oJ19ycGNfcmVwb3J0Q29ubmVjdGVkRHJpdmVyTGlzdDonLCB0aGlzLm9uQ29ubmVjdGVkRHJpdmVyTGlzdC5iaW5kKHRoaXMpKTtcbiAgdGhpcy5ycGNDbGllbnQub24oJ1BhZ2UuZnJhbWVEZXRhY2hlZCcsIHRoaXMuZnJhbWVEZXRhY2hlZC5iaW5kKHRoaXMpKTtcblxuICBhd2FpdCB0aGlzLnJwY0NsaWVudC5jb25uZWN0KCk7XG5cbiAgLy8gZ2V0IHRoZSBjb25uZWN0aW9uIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhcHBcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLnNldENvbm5lY3Rpb25LZXkoKTtcbiAgICBpZiAodGltZW91dCkge1xuICAgICAgbG9nLmRlYnVnKGBXYWl0aW5nIHVwIHRvICR7dGltZW91dH1tcyBmb3IgYXBwbGljYXRpb25zIHRvIGJlIHJlcG9ydGVkYCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKCgpID0+ICFfLmlzRW1wdHkodGhpcy5hcHBEaWN0KSwge1xuICAgICAgICAgIHdhaXRNczogdGltZW91dCxcbiAgICAgICAgICBpbnRlcnZhbDogQVBQX0NPTk5FQ1RfSU5URVJWQUxfTVMsXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgVGltZWQgb3V0IHdhaXRpbmcgZm9yIGFwcGxpY2F0aW9ucyB0byBiZSByZXBvcnRlZGApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hcHBEaWN0IHx8IHt9O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cuZXJyb3IoYEVycm9yIHNldHRpbmcgY29ubmVjdGlvbiBrZXk6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgYXdhaXQgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRpc2Nvbm5lY3QgKCkge1xuICBpZiAodGhpcy5ycGNDbGllbnQpIHtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5kaXNjb25uZWN0KCk7XG4gIH1cbiAgdGhpcy5lbWl0KGV2ZW50cy5FVkVOVF9ESVNDT05ORUNULCB0cnVlKTtcbiAgdGhpcy50ZWFyZG93bigpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZWxlY3RBcHAgKGN1cnJlbnRVcmwgPSBudWxsLCBtYXhUcmllcyA9IFNFTEVDVF9BUFBfUkVUUklFUywgaWdub3JlQWJvdXRCbGFua1VybCA9IGZhbHNlKSB7XG4gIGNvbnN0IHNob3VsZENoZWNrRm9yVGFyZ2V0ID0gdGhpcy5ycGNDbGllbnQuc2hvdWxkQ2hlY2tGb3JUYXJnZXQ7XG4gIHRoaXMucnBjQ2xpZW50LnNob3VsZENoZWNrRm9yVGFyZ2V0ID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcbiAgICBsb2cuZGVidWcoJ1NlbGVjdGluZyBhcHBsaWNhdGlvbicpO1xuICAgIGlmICghdGhpcy5hcHBEaWN0IHx8IF8uaXNFbXB0eSh0aGlzLmFwcERpY3QpKSB7XG4gICAgICBsb2cuZGVidWcoJ05vIGFwcGxpY2F0aW9ucyBjdXJyZW50bHkgY29ubmVjdGVkLicpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHthcHBJZEtleSwgcGFnZURpY3R9ID0gYXdhaXQgdGhpcy5zZWFyY2hGb3JBcHAoY3VycmVudFVybCwgbWF4VHJpZXMsIGlnbm9yZUFib3V0QmxhbmtVcmwpO1xuXG4gICAgLy8gaWYsIGFmdGVyIGFsbCB0aGlzLCB3ZSBoYXZlIG5vIGRpY3Rpb25hcnksIHdlIGhhdmUgZmFpbGVkXG4gICAgaWYgKCFhcHBJZEtleSB8fCAhcGFnZURpY3QpIHtcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgY29ubmVjdCB0byBhIHZhbGlkIGFwcCBhZnRlciAke21heFRyaWVzfSB0cmllcy5gKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcHBJZEtleSAhPT0gYXBwSWRLZXkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgYWx0ZXJlZCBhcHAgaWQsIHVwZGF0aW5nIGZyb20gJyR7dGhpcy5hcHBJZEtleX0nIHRvICcke2FwcElkS2V5fSdgKTtcbiAgICAgIHRoaXMuYXBwSWRLZXkgPSBhcHBJZEtleTtcbiAgICB9XG5cbiAgICBsb2dBcHBsaWNhdGlvbkRpY3Rpb25hcnkodGhpcy5hcHBEaWN0KTtcblxuICAgIC8vIHRyYW5zbGF0ZSB0aGUgZGljdGlvbmFyeSBpbnRvIGEgdXNlZnVsIGZvcm0sIGFuZCByZXR1cm4gdG8gc2VuZGVyXG4gICAgY29uc3QgcGFnZUFycmF5ID0gXy5pc0VtcHR5KHRoaXMuYXBwRGljdFthcHBJZEtleV0ucGFnZUFycmF5KVxuICAgICAgPyBwYWdlQXJyYXlGcm9tRGljdChwYWdlRGljdClcbiAgICAgIDogdGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXk7XG4gICAgbG9nLmRlYnVnKGBGaW5hbGx5IHNlbGVjdGluZyBhcHAgJHt0aGlzLmFwcElkS2V5fTogJHtzaW1wbGVTdHJpbmdpZnkocGFnZUFycmF5KX1gKTtcblxuICAgIGxldCBmdWxsUGFnZUFycmF5ID0gW107XG4gICAgZm9yIChjb25zdCBbYXBwLCBpbmZvXSBvZiBfLnRvUGFpcnModGhpcy5hcHBEaWN0KSkge1xuICAgICAgaWYgKCFfLmlzQXJyYXkoaW5mby5wYWdlQXJyYXkpIHx8ICFpbmZvLmlzQWN0aXZlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgaWQgPSBhcHAucmVwbGFjZSgnUElEOicsICcnKTtcbiAgICAgIGZvciAoY29uc3QgcGFnZSBvZiBpbmZvLnBhZ2VBcnJheSkge1xuICAgICAgICBpZiAoIShpZ25vcmVBYm91dEJsYW5rVXJsICYmIHBhZ2UudXJsID09PSBCTEFOS19QQUdFX1VSTCkpIHtcbiAgICAgICAgICBsZXQgcGFnZURpY3QgPSBfLmNsb25lKHBhZ2UpO1xuICAgICAgICAgIHBhZ2VEaWN0LmlkID0gYCR7aWR9LiR7cGFnZURpY3QuaWR9YDtcbiAgICAgICAgICBwYWdlRGljdC5idW5kbGVJZCA9IGluZm8uYnVuZGxlSWQ7XG4gICAgICAgICAgZnVsbFBhZ2VBcnJheS5wdXNoKHBhZ2VEaWN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxvZy5kZWJ1ZyhgU2VsZWN0ZWQgYXBwIGFmdGVyICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcy50b0ZpeGVkKDApfW1zYCk7XG4gICAgcmV0dXJuIGZ1bGxQYWdlQXJyYXk7XG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5ycGNDbGllbnQuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSBzaG91bGRDaGVja0ZvclRhcmdldDtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzZWFyY2hGb3JBcHAgKGN1cnJlbnRVcmwsIG1heFRyaWVzLCBpZ25vcmVBYm91dEJsYW5rVXJsKSB7XG4gIGNvbnN0IGJ1bmRsZUlkcyA9IHRoaXMuaW5jbHVkZVNhZmFyaSAmJiAhdGhpcy5pc1NhZmFyaVxuICAgID8gW3RoaXMuYnVuZGxlSWQsIC4uLnRoaXMuYWRkaXRpb25hbEJ1bmRsZUlkcywgU0FGQVJJX0JVTkRMRV9JRF1cbiAgICA6IFt0aGlzLmJ1bmRsZUlkLCAuLi50aGlzLmFkZGl0aW9uYWxCdW5kbGVJZHNdO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCByZXRyeUludGVydmFsKG1heFRyaWVzLCBTRUxFQ1RfQVBQX1JFVFJZX1NMRUVQX01TLCBhc3luYyAocmV0cnlDb3VudCkgPT4ge1xuICAgICAgbG9nQXBwbGljYXRpb25EaWN0aW9uYXJ5KHRoaXMuYXBwRGljdCk7XG4gICAgICBjb25zdCBwb3NzaWJsZUFwcElkcyA9IGdldFBvc3NpYmxlRGVidWdnZXJBcHBLZXlzKGJ1bmRsZUlkcywgdGhpcy5hcHBEaWN0KTtcbiAgICAgIGxvZy5kZWJ1ZyhgVHJ5aW5nIG91dCB0aGUgcG9zc2libGUgYXBwIGlkczogJHtwb3NzaWJsZUFwcElkcy5qb2luKCcsICcpfSAodHJ5ICMke3JldHJ5Q291bnQgKyAxfSBvZiAke21heFRyaWVzfSlgKTtcbiAgICAgIGZvciAoY29uc3QgYXR0ZW1wdGVkQXBwSWRLZXkgb2YgcG9zc2libGVBcHBJZHMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoIXRoaXMuYXBwRGljdFthdHRlbXB0ZWRBcHBJZEtleV0uaXNBY3RpdmUpIHtcbiAgICAgICAgICAgIGxvZy5kZWJ1ZyhgU2tpcHBpbmcgYXBwICcke2F0dGVtcHRlZEFwcElkS2V5fScgYmVjYXVzZSBpdCBpcyBub3QgYWN0aXZlYCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbG9nLmRlYnVnKGBBdHRlbXB0aW5nIGFwcCAnJHthdHRlbXB0ZWRBcHBJZEtleX0nYCk7XG4gICAgICAgICAgY29uc3QgW2FwcElkS2V5LCBwYWdlRGljdF0gPSBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZWxlY3RBcHAoYXR0ZW1wdGVkQXBwSWRLZXksIHRoaXMub25BcHBDb25uZWN0LmJpbmQodGhpcykpO1xuICAgICAgICAgIC8vIGluIGlPUyA4LjIgdGhlIGNvbm5lY3QgbG9naWMgaGFwcGVucywgYnV0IHdpdGggYW4gZW1wdHkgZGljdGlvbmFyeVxuICAgICAgICAgIC8vIHdoaWNoIGxlYWRzIHRvIHRoZSByZW1vdGUgZGVidWdnZXIgZ2V0dGluZyBkaXNjb25uZWN0ZWQsIGFuZCBpbnRvIGEgbG9vcFxuICAgICAgICAgIGlmIChfLmlzRW1wdHkocGFnZURpY3QpKSB7XG4gICAgICAgICAgICBsb2cuZGVidWcoJ0VtcHR5IHBhZ2UgZGljdGlvbmFyeSByZWNlaXZlZC4gVHJ5aW5nIGFnYWluLicpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gc2F2ZSB0aGUgcGFnZSBhcnJheSBmb3IgdGhpcyBhcHBcbiAgICAgICAgICB0aGlzLmFwcERpY3RbYXBwSWRLZXldLnBhZ2VBcnJheSA9IHBhZ2VBcnJheUZyb21EaWN0KHBhZ2VEaWN0KTtcblxuICAgICAgICAgIC8vIGlmIHdlIGFyZSBsb29raW5nIGZvciBhIHBhcnRpY3VsYXIgdXJsLCBtYWtlIHN1cmUgd2VcbiAgICAgICAgICAvLyBoYXZlIHRoZSByaWdodCBwYWdlLiBJZ25vcmUgZW1wdHkgb3IgdW5kZWZpbmVkIHVybHMuXG4gICAgICAgICAgLy8gSWdub3JlIGFib3V0OmJsYW5rIGlmIHJlcXVlc3RlZC5cbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlYXJjaEZvclBhZ2UodGhpcy5hcHBEaWN0LCBjdXJyZW50VXJsLCBpZ25vcmVBYm91dEJsYW5rVXJsKTtcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjdXJyZW50VXJsKSB7XG4gICAgICAgICAgICBsb2cuZGVidWcoYFJlY2VpdmVkIGFwcCwgYnV0IGV4cGVjdGVkIHVybCAoJyR7Y3VycmVudFVybH0nKSB3YXMgbm90IGZvdW5kLiBUcnlpbmcgYWdhaW4uYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZy5kZWJ1ZygnUmVjZWl2ZWQgYXBwLCBidXQgbm8gbWF0Y2ggd2FzIGZvdW5kLiBUcnlpbmcgYWdhaW4uJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBsb2cuZGVidWcoYEVycm9yIGNoZWNraW5nIGFwcGxpY2F0aW9uOiAnJHtlcnIubWVzc2FnZX0nLiBSZXRyeWluZyBjb25uZWN0aW9uYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHJ5Q291bnQrKztcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGZpbmQgYW4gYXBwIHRvIHNlbGVjdCcpO1xuICAgIH0sIDApO1xuICB9IGNhdGNoIChpZ24pIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IGNvbm5lY3QgdG8gYSB2YWxpZCBhcHAgYWZ0ZXIgJHttYXhUcmllc30gdHJpZXMuYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2VhcmNoRm9yUGFnZSAoYXBwc0RpY3QsIGN1cnJlbnRVcmwgPSBudWxsLCBpZ25vcmVBYm91dEJsYW5rVXJsID0gZmFsc2UpIHtcbiAgZm9yIChjb25zdCBhcHBEaWN0IG9mIF8udmFsdWVzKGFwcHNEaWN0KSkge1xuICAgIGlmICghYXBwRGljdCB8fCAhYXBwRGljdC5pc0FjdGl2ZSB8fCAhYXBwRGljdC5wYWdlQXJyYXkgfHwgYXBwRGljdC5wYWdlQXJyYXkucHJvbWlzZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBkaWN0IG9mIGFwcERpY3QucGFnZUFycmF5KSB7XG4gICAgICBpZiAoKCFpZ25vcmVBYm91dEJsYW5rVXJsIHx8IGRpY3QudXJsICE9PSBCTEFOS19QQUdFX1VSTCkgJiZcbiAgICAgICAgICAoIWN1cnJlbnRVcmwgfHwgZGljdC51cmwgPT09IGN1cnJlbnRVcmwgfHwgZGljdC51cmwgPT09IGAke2N1cnJlbnRVcmx9L2ApKSB7XG4gICAgICAgIHJldHVybiB7IGFwcElkS2V5OiBhcHBEaWN0LmlkLCBwYWdlRGljdDogZGljdCB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VsZWN0UGFnZSAoYXBwSWRLZXksIHBhZ2VJZEtleSwgc2tpcFJlYWR5Q2hlY2sgPSBmYWxzZSkge1xuICB0aGlzLmFwcElkS2V5ID0gYFBJRDoke2FwcElkS2V5fWA7XG4gIHRoaXMucGFnZUlkS2V5ID0gcGFnZUlkS2V5O1xuXG4gIGxvZy5kZWJ1ZyhgU2VsZWN0aW5nIHBhZ2UgJyR7cGFnZUlkS2V5fScgb24gYXBwICcke3RoaXMuYXBwSWRLZXl9JyBhbmQgZm9yd2FyZGluZyBzb2NrZXQgc2V0dXBgKTtcblxuICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuXG4gIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbGVjdFBhZ2UodGhpcy5hcHBJZEtleSwgcGFnZUlkS2V5KTtcblxuICAvLyBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyByZWFkeSB0byBnb1xuICBpZiAoIXNraXBSZWFkeUNoZWNrICYmICFhd2FpdCB0aGlzLmNoZWNrUGFnZUlzUmVhZHkoKSkge1xuICAgIGF3YWl0IHRoaXMucGFnZVVubG9hZCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBTZWxlY3RlZCBwYWdlIGFmdGVyICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcy50b0ZpeGVkKDApfW1zYCk7XG59XG5cbmZ1bmN0aW9uIGxvZ0FwcGxpY2F0aW9uRGljdGlvbmFyeSAoYXBwcykge1xuICBmdW5jdGlvbiBnZXRWYWx1ZVN0cmluZyAoa2V5LCB2YWx1ZSkge1xuICAgIGlmIChfLmlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICByZXR1cm4gJ1tGdW5jdGlvbl0nO1xuICAgIH1cbiAgICBpZiAoa2V5ID09PSAncGFnZUFycmF5JyAmJiAhXy5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGBcIldhaXRpbmcgZm9yIGRhdGFcImA7XG4gICAgfVxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gIH1cbiAgbG9nLmRlYnVnKCdDdXJyZW50IGFwcGxpY2F0aW9ucyBhdmFpbGFibGU6Jyk7XG4gIGZvciAoY29uc3QgW2FwcCwgaW5mb10gb2YgXy50b1BhaXJzKGFwcHMpKSB7XG4gICAgbG9nLmRlYnVnKGAgICAgQXBwbGljYXRpb246IFwiJHthcHB9XCJgKTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBfLnRvUGFpcnMoaW5mbykpIHtcbiAgICAgIGlmIChrZXkgPT09ICdwYWdlQXJyYXknICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCkge1xuICAgICAgICBsb2cuZGVidWcoYCAgICAgICAgJHtrZXl9OmApO1xuICAgICAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgdmFsdWUpIHtcbiAgICAgICAgICBsZXQgcHJlZml4ID0gJy0gJztcbiAgICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBfLnRvUGFpcnMocGFnZSkpIHtcbiAgICAgICAgICAgIGxvZy5kZWJ1ZyhgICAgICAgICAgICR7cHJlZml4fSR7a306ICR7SlNPTi5zdHJpbmdpZnkodil9YCk7XG4gICAgICAgICAgICBwcmVmaXggPSAnICAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsdWVTdHJpbmcgPSBnZXRWYWx1ZVN0cmluZyhrZXksIHZhbHVlKTtcbiAgICAgICAgbG9nLmRlYnVnKGAgICAgICAgICR7a2V5fTogJHt2YWx1ZVN0cmluZ31gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlQXBwc1dpdGhEaWN0IChkaWN0KSB7XG4gIC8vIGdldCB0aGUgZGljdGlvbmFyeSBlbnRyeSBpbnRvIGEgbmljZSBmb3JtLCBhbmQgYWRkIGl0IHRvIHRoZVxuICAvLyBhcHBsaWNhdGlvbiBkaWN0aW9uYXJ5XG4gIHRoaXMuYXBwRGljdCA9IHRoaXMuYXBwRGljdCB8fCB7fTtcbiAgbGV0IFtpZCwgZW50cnldID0gYXBwSW5mb0Zyb21EaWN0KGRpY3QpO1xuICBpZiAodGhpcy5hcHBEaWN0W2lkXSkge1xuICAgIC8vIHByZXNlcnZlIHRoZSBwYWdlIGRpY3Rpb25hcnkgZm9yIHRoaXMgZW50cnlcbiAgICBlbnRyeS5wYWdlQXJyYXkgPSB0aGlzLmFwcERpY3RbaWRdLnBhZ2VBcnJheTtcbiAgfVxuICB0aGlzLmFwcERpY3RbaWRdID0gZW50cnk7XG5cbiAgLy8gYWRkIGEgcHJvbWlzZSB0byBnZXQgdGhlIHBhZ2UgZGljdGlvbmFyeVxuICBpZiAoXy5pc1VuZGVmaW5lZChlbnRyeS5wYWdlQXJyYXkpKSB7XG4gICAgZW50cnkucGFnZUFycmF5ID0gZGVmZXJyZWRQcm9taXNlKCk7XG4gIH1cblxuICAvLyB0cnkgdG8gZ2V0IHRoZSBhcHAgaWQgZnJvbSBvdXIgY29ubmVjdGVkIGFwcHNcbiAgaWYgKCF0aGlzLmFwcElkS2V5KSB7XG4gICAgdGhpcy5hcHBJZEtleSA9IGdldERlYnVnZ2VyQXBwS2V5KHRoaXMuYnVuZGxlSWQsIHRoaXMuYXBwRGljdCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgeyBzZXRDb25uZWN0aW9uS2V5LCBjb25uZWN0LCBkaXNjb25uZWN0LCBzZWxlY3RBcHAsIHNlYXJjaEZvckFwcCwgc2VhcmNoRm9yUGFnZSwgc2VsZWN0UGFnZSwgdXBkYXRlQXBwc1dpdGhEaWN0IH07XG4iXSwiZmlsZSI6ImxpYi9taXhpbnMvY29ubmVjdC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
308
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9taXhpbnMvY29ubmVjdC5qcyJdLCJuYW1lcyI6WyJBUFBfQ09OTkVDVF9USU1FT1VUX01TIiwiQVBQX0NPTk5FQ1RfSU5URVJWQUxfTVMiLCJTRUxFQ1RfQVBQX1JFVFJJRVMiLCJTRUxFQ1RfQVBQX1JFVFJZX1NMRUVQX01TIiwiU0FGQVJJX0JVTkRMRV9JRCIsIkJMQU5LX1BBR0VfVVJMIiwic2V0Q29ubmVjdGlvbktleSIsImxvZyIsImRlYnVnIiwicnBjQ2xpZW50Iiwic2VuZCIsImNvbm5lY3QiLCJ0aW1lb3V0Iiwic2V0dXAiLCJpbml0UnBjQ2xpZW50Iiwib24iLCJfIiwibm9vcCIsIm9uUGFnZUNoYW5nZSIsImJpbmQiLCJvbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdCIsIm9uQXBwQ29ubmVjdCIsIm9uQXBwRGlzY29ubmVjdCIsIm9uQXBwVXBkYXRlIiwib25Db25uZWN0ZWREcml2ZXJMaXN0Iiwib25DdXJyZW50U3RhdGUiLCJmcmFtZURldGFjaGVkIiwiaXNFbXB0eSIsImFwcERpY3QiLCJ3YWl0TXMiLCJpbnRlcnZhbCIsImVyciIsImVycm9yIiwibWVzc2FnZSIsImRpc2Nvbm5lY3QiLCJlbWl0IiwiZXZlbnRzIiwiRVZFTlRfRElTQ09OTkVDVCIsInRlYXJkb3duIiwic2VsZWN0QXBwIiwiY3VycmVudFVybCIsIm1heFRyaWVzIiwiaWdub3JlQWJvdXRCbGFua1VybCIsInNob3VsZENoZWNrRm9yVGFyZ2V0IiwidGltZXIiLCJ0aW1pbmciLCJUaW1lciIsInN0YXJ0IiwiYXBwSWRLZXkiLCJwYWdlRGljdCIsInNlYXJjaEZvckFwcCIsImVycm9yQW5kVGhyb3ciLCJsb2dBcHBsaWNhdGlvbkRpY3Rpb25hcnkiLCJwYWdlQXJyYXkiLCJmdWxsUGFnZUFycmF5IiwiYXBwIiwiaW5mbyIsInRvUGFpcnMiLCJpc0FycmF5IiwiaXNBY3RpdmUiLCJpZCIsInJlcGxhY2UiLCJwYWdlIiwidXJsIiwiY2xvbmUiLCJidW5kbGVJZCIsInB1c2giLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsImJ1bmRsZUlkcyIsImluY2x1ZGVTYWZhcmkiLCJpc1NhZmFyaSIsImFkZGl0aW9uYWxCdW5kbGVJZHMiLCJyZXRyeUNvdW50IiwicG9zc2libGVBcHBJZHMiLCJqb2luIiwiYXR0ZW1wdGVkQXBwSWRLZXkiLCJyZXN1bHQiLCJzZWFyY2hGb3JQYWdlIiwiRXJyb3IiLCJpZ24iLCJhcHBzRGljdCIsInZhbHVlcyIsInByb21pc2UiLCJkaWN0Iiwic2VsZWN0UGFnZSIsInBhZ2VJZEtleSIsInNraXBSZWFkeUNoZWNrIiwiY2hlY2tQYWdlSXNSZWFkeSIsInBhZ2VVbmxvYWQiLCJhcHBzIiwiZ2V0VmFsdWVTdHJpbmciLCJrZXkiLCJ2YWx1ZSIsImlzRnVuY3Rpb24iLCJKU09OIiwic3RyaW5naWZ5IiwiQXJyYXkiLCJsZW5ndGgiLCJwcmVmaXgiLCJrIiwidiIsInZhbHVlU3RyaW5nIiwidXBkYXRlQXBwc1dpdGhEaWN0IiwiZW50cnkiLCJpc1VuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxzQkFBc0IsR0FBRyxDQUEvQjtBQUNBLE1BQU1DLHVCQUF1QixHQUFHLEdBQWhDO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcsRUFBM0I7QUFDQSxNQUFNQyx5QkFBeUIsR0FBRyxHQUFsQztBQUNBLE1BQU1DLGdCQUFnQixHQUFHLHdCQUF6QjtBQUNBLE1BQU1DLGNBQWMsR0FBRyxhQUF2Qjs7QUFHQSxlQUFlQyxnQkFBZixHQUFtQztBQUNqQ0Msa0JBQUlDLEtBQUosQ0FBVSxnQ0FBVjs7QUFHQSxRQUFNLEtBQUtDLFNBQUwsQ0FBZUMsSUFBZixDQUFvQixrQkFBcEIsRUFBd0MsRUFBeEMsRUFBNEMsS0FBNUMsQ0FBTjtBQUNEOztBQUVELGVBQWVDLE9BQWYsQ0FBd0JDLE9BQU8sR0FBR1osc0JBQWxDLEVBQTBEO0FBQ3hELE9BQUth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VXFGLEdBQUksS0FBSVUsV0FBWSxFQUF6QztBQUNEO0FBQ0Y7QUFDRjtBQUNGOztBQUVELFNBQVNDLGtCQUFULENBQTZCbkIsSUFBN0IsRUFBbUM7QUFHakMsT0FBS3pELE9BQUwsR0FBZSxLQUFLQSxPQUFMLElBQWdCLEVBQS9CO0FBQ0EsTUFBSSxDQUFDZ0MsRUFBRCxFQUFLNkMsS0FBTCxJQUFjLDRCQUFnQnBCLElBQWhCLENBQWxCOztBQUNBLE1BQUksS0FBS3pELE9BQUwsQ0FBYWdDLEVBQWIsQ0FBSixFQUFzQjtBQUVwQjZDLElBQUFBLEtBQUssQ0FBQ3BELFNBQU4sR0FBa0IsS0FBS3pCLE9BQUwsQ0FBYWdDLEVBQWIsRUFBaUJQLFNBQW5DO0FBQ0Q7O0FBQ0QsT0FBS3pCLE9BQUwsQ0FBYWdDLEVBQWIsSUFBbUI2QyxLQUFuQjs7QUFHQSxNQUFJekYsZ0JBQUUwRixXQUFGLENBQWNELEtBQUssQ0FBQ3BELFNBQXBCLENBQUosRUFBb0M7QUFDbENvRCxJQUFBQSxLQUFLLENBQUNwRCxTQUFOLEdBQWtCLDZCQUFsQjtBQUNEOztBQUdELE1BQUksQ0FBQyxLQUFLTCxRQUFWLEVBQW9CO0FBQ2xCLFNBQUtBLFFBQUwsR0FBZ0IsOEJBQWtCLEtBQUtpQixRQUF2QixFQUFpQyxLQUFLckMsT0FBdEMsQ0FBaEI7QUFDRDtBQUNGOztlQUVjO0FBQUV0QixFQUFBQSxnQkFBRjtBQUFvQkssRUFBQUEsT0FBcEI7QUFBNkJ1QixFQUFBQSxVQUE3QjtBQUF5Q0ssRUFBQUEsU0FBekM7QUFBb0RXLEVBQUFBLFlBQXBEO0FBQWtFNkIsRUFBQUEsYUFBbEU7QUFBaUZPLEVBQUFBLFVBQWpGO0FBQTZGa0IsRUFBQUE7QUFBN0YsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IGFwcEluZm9Gcm9tRGljdCwgcGFnZUFycmF5RnJvbURpY3QsIGdldERlYnVnZ2VyQXBwS2V5LFxuICAgICAgICAgZ2V0UG9zc2libGVEZWJ1Z2dlckFwcEtleXMsIHNpbXBsZVN0cmluZ2lmeSwgZGVmZXJyZWRQcm9taXNlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQgeyB0aW1pbmcgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsLCB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG5jb25zdCBBUFBfQ09OTkVDVF9USU1FT1VUX01TID0gMDtcbmNvbnN0IEFQUF9DT05ORUNUX0lOVEVSVkFMX01TID0gMTAwO1xuY29uc3QgU0VMRUNUX0FQUF9SRVRSSUVTID0gMjA7XG5jb25zdCBTRUxFQ1RfQVBQX1JFVFJZX1NMRUVQX01TID0gNTAwO1xuY29uc3QgU0FGQVJJX0JVTkRMRV9JRCA9ICdjb20uYXBwbGUubW9iaWxlc2FmYXJpJztcbmNvbnN0IEJMQU5LX1BBR0VfVVJMID0gJ2Fib3V0OmJsYW5rJztcblxuXG5hc3luYyBmdW5jdGlvbiBzZXRDb25uZWN0aW9uS2V5ICgpIHtcbiAgbG9nLmRlYnVnKCdTZW5kaW5nIGNvbm5lY3Rpb24ga2V5IHJlcXVlc3QnKTtcbiAgLy8gc2VuZCBidXQgb25seSB3YWl0IHRvIG1ha2Ugc3VyZSB0aGUgc29ja2V0IHdvcmtlZFxuICAvLyBhcyByZXNwb25zZSBmcm9tIFdlYiBJbnNwZWN0b3IgY2FuIHRha2UgYSBsb25nIHRpbWVcbiAgYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnc2V0Q29ubmVjdGlvbktleScsIHt9LCBmYWxzZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbm5lY3QgKHRpbWVvdXQgPSBBUFBfQ09OTkVDVF9USU1FT1VUX01TKSB7XG4gIHRoaXMuc2V0dXAoKTtcblxuICAvLyBpbml0aWFsaXplIHRoZSBycGMgY2xpZW50XG4gIHRoaXMuaW5pdFJwY0NsaWVudCgpO1xuXG4gIC8vIGxpc3RlbiBmb3IgYmFzaWMgZGVidWdnZXItbGV2ZWwgZXZlbnRzXG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdfcnBjX3JlcG9ydFNldHVwOicsIF8ubm9vcCk7XG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdfcnBjX2ZvcndhcmRHZXRMaXN0aW5nOicsIHRoaXMub25QYWdlQ2hhbmdlLmJpbmQodGhpcykpO1xuICB0aGlzLnJwY0NsaWVudC5vbignX3JwY19yZXBvcnRDb25uZWN0ZWRBcHBsaWNhdGlvbkxpc3Q6JywgdGhpcy5vbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdC5iaW5kKHRoaXMpKTtcbiAgdGhpcy5ycGNDbGllbnQub24oJ19ycGNfYXBwbGljYXRpb25Db25uZWN0ZWQ6JywgdGhpcy5vbkFwcENvbm5lY3QuYmluZCh0aGlzKSk7XG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOicsIHRoaXMub25BcHBEaXNjb25uZWN0LmJpbmQodGhpcykpO1xuICB0aGlzLnJwY0NsaWVudC5vbignX3JwY19hcHBsaWNhdGlvblVwZGF0ZWQ6JywgdGhpcy5vbkFwcFVwZGF0ZS5iaW5kKHRoaXMpKTtcbiAgdGhpcy5ycGNDbGllbnQub24oJ19ycGNfcmVwb3J0Q29ubmVjdGVkRHJpdmVyTGlzdDonLCB0aGlzLm9uQ29ubmVjdGVkRHJpdmVyTGlzdC5iaW5kKHRoaXMpKTtcbiAgdGhpcy5ycGNDbGllbnQub24oJ19ycGNfcmVwb3J0Q3VycmVudFN0YXRlOicsIHRoaXMub25DdXJyZW50U3RhdGUuYmluZCh0aGlzKSk7XG4gIHRoaXMucnBjQ2xpZW50Lm9uKCdQYWdlLmZyYW1lRGV0YWNoZWQnLCB0aGlzLmZyYW1lRGV0YWNoZWQuYmluZCh0aGlzKSk7XG5cbiAgYXdhaXQgdGhpcy5ycGNDbGllbnQuY29ubmVjdCgpO1xuXG4gIC8vIGdldCB0aGUgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXBwXG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5zZXRDb25uZWN0aW9uS2V5KCk7XG4gICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgV2FpdGluZyB1cCB0byAke3RpbWVvdXR9bXMgZm9yIGFwcGxpY2F0aW9ucyB0byBiZSByZXBvcnRlZGApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbigoKSA9PiAhXy5pc0VtcHR5KHRoaXMuYXBwRGljdCksIHtcbiAgICAgICAgICB3YWl0TXM6IHRpbWVvdXQsXG4gICAgICAgICAgaW50ZXJ2YWw6IEFQUF9DT05ORUNUX0lOVEVSVkFMX01TLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2cuZGVidWcoYFRpbWVkIG91dCB3YWl0aW5nIGZvciBhcHBsaWNhdGlvbnMgdG8gYmUgcmVwb3J0ZWRgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXBwRGljdCB8fCB7fTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmVycm9yKGBFcnJvciBzZXR0aW5nIGNvbm5lY3Rpb24ga2V5OiAke2Vyci5tZXNzYWdlfWApO1xuICAgIGF3YWl0IHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIHRocm93IGVycjtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBkaXNjb25uZWN0ICgpIHtcbiAgaWYgKHRoaXMucnBjQ2xpZW50KSB7XG4gICAgYXdhaXQgdGhpcy5ycGNDbGllbnQuZGlzY29ubmVjdCgpO1xuICB9XG4gIHRoaXMuZW1pdChldmVudHMuRVZFTlRfRElTQ09OTkVDVCwgdHJ1ZSk7XG4gIHRoaXMudGVhcmRvd24oKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VsZWN0QXBwIChjdXJyZW50VXJsID0gbnVsbCwgbWF4VHJpZXMgPSBTRUxFQ1RfQVBQX1JFVFJJRVMsIGlnbm9yZUFib3V0QmxhbmtVcmwgPSBmYWxzZSkge1xuICBjb25zdCBzaG91bGRDaGVja0ZvclRhcmdldCA9IHRoaXMucnBjQ2xpZW50LnNob3VsZENoZWNrRm9yVGFyZ2V0O1xuICB0aGlzLnJwY0NsaWVudC5zaG91bGRDaGVja0ZvclRhcmdldCA9IGZhbHNlO1xuICB0cnkge1xuICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gICAgbG9nLmRlYnVnKCdTZWxlY3RpbmcgYXBwbGljYXRpb24nKTtcbiAgICBpZiAoIXRoaXMuYXBwRGljdCB8fCBfLmlzRW1wdHkodGhpcy5hcHBEaWN0KSkge1xuICAgICAgbG9nLmRlYnVnKCdObyBhcHBsaWNhdGlvbnMgY3VycmVudGx5IGNvbm5lY3RlZC4nKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCB7YXBwSWRLZXksIHBhZ2VEaWN0fSA9IGF3YWl0IHRoaXMuc2VhcmNoRm9yQXBwKGN1cnJlbnRVcmwsIG1heFRyaWVzLCBpZ25vcmVBYm91dEJsYW5rVXJsKTtcblxuICAgIC8vIGlmLCBhZnRlciBhbGwgdGhpcywgd2UgaGF2ZSBubyBkaWN0aW9uYXJ5LCB3ZSBoYXZlIGZhaWxlZFxuICAgIGlmICghYXBwSWRLZXkgfHwgIXBhZ2VEaWN0KSB7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IGNvbm5lY3QgdG8gYSB2YWxpZCBhcHAgYWZ0ZXIgJHttYXhUcmllc30gdHJpZXMuYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXBwSWRLZXkgIT09IGFwcElkS2V5KSB7XG4gICAgICBsb2cuZGVidWcoYFJlY2VpdmVkIGFsdGVyZWQgYXBwIGlkLCB1cGRhdGluZyBmcm9tICcke3RoaXMuYXBwSWRLZXl9JyB0byAnJHthcHBJZEtleX0nYCk7XG4gICAgICB0aGlzLmFwcElkS2V5ID0gYXBwSWRLZXk7XG4gICAgfVxuXG4gICAgbG9nQXBwbGljYXRpb25EaWN0aW9uYXJ5KHRoaXMuYXBwRGljdCk7XG5cbiAgICAvLyB0cmFuc2xhdGUgdGhlIGRpY3Rpb25hcnkgaW50byBhIHVzZWZ1bCBmb3JtLCBhbmQgcmV0dXJuIHRvIHNlbmRlclxuICAgIGNvbnN0IHBhZ2VBcnJheSA9IF8uaXNFbXB0eSh0aGlzLmFwcERpY3RbYXBwSWRLZXldLnBhZ2VBcnJheSlcbiAgICAgID8gcGFnZUFycmF5RnJvbURpY3QocGFnZURpY3QpXG4gICAgICA6IHRoaXMuYXBwRGljdFthcHBJZEtleV0ucGFnZUFycmF5O1xuICAgIGxvZy5kZWJ1ZyhgRmluYWxseSBzZWxlY3RpbmcgYXBwICR7dGhpcy5hcHBJZEtleX06ICR7c2ltcGxlU3RyaW5naWZ5KHBhZ2VBcnJheSl9YCk7XG5cbiAgICBsZXQgZnVsbFBhZ2VBcnJheSA9IFtdO1xuICAgIGZvciAoY29uc3QgW2FwcCwgaW5mb10gb2YgXy50b1BhaXJzKHRoaXMuYXBwRGljdCkpIHtcbiAgICAgIGlmICghXy5pc0FycmF5KGluZm8ucGFnZUFycmF5KSB8fCAhaW5mby5pc0FjdGl2ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlkID0gYXBwLnJlcGxhY2UoJ1BJRDonLCAnJyk7XG4gICAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgaW5mby5wYWdlQXJyYXkpIHtcbiAgICAgICAgaWYgKCEoaWdub3JlQWJvdXRCbGFua1VybCAmJiBwYWdlLnVybCA9PT0gQkxBTktfUEFHRV9VUkwpKSB7XG4gICAgICAgICAgbGV0IHBhZ2VEaWN0ID0gXy5jbG9uZShwYWdlKTtcbiAgICAgICAgICBwYWdlRGljdC5pZCA9IGAke2lkfS4ke3BhZ2VEaWN0LmlkfWA7XG4gICAgICAgICAgcGFnZURpY3QuYnVuZGxlSWQgPSBpbmZvLmJ1bmRsZUlkO1xuICAgICAgICAgIGZ1bGxQYWdlQXJyYXkucHVzaChwYWdlRGljdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2cuZGVidWcoYFNlbGVjdGVkIGFwcCBhZnRlciAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xuICAgIHJldHVybiBmdWxsUGFnZUFycmF5O1xuICB9IGZpbmFsbHkge1xuICAgIHRoaXMucnBjQ2xpZW50LnNob3VsZENoZWNrRm9yVGFyZ2V0ID0gc2hvdWxkQ2hlY2tGb3JUYXJnZXQ7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VhcmNoRm9yQXBwIChjdXJyZW50VXJsLCBtYXhUcmllcywgaWdub3JlQWJvdXRCbGFua1VybCkge1xuICBjb25zdCBidW5kbGVJZHMgPSB0aGlzLmluY2x1ZGVTYWZhcmkgJiYgIXRoaXMuaXNTYWZhcmlcbiAgICA/IFt0aGlzLmJ1bmRsZUlkLCAuLi50aGlzLmFkZGl0aW9uYWxCdW5kbGVJZHMsIFNBRkFSSV9CVU5ETEVfSURdXG4gICAgOiBbdGhpcy5idW5kbGVJZCwgLi4udGhpcy5hZGRpdGlvbmFsQnVuZGxlSWRzXTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgcmV0cnlJbnRlcnZhbChtYXhUcmllcywgU0VMRUNUX0FQUF9SRVRSWV9TTEVFUF9NUywgYXN5bmMgKHJldHJ5Q291bnQpID0+IHtcbiAgICAgIGxvZ0FwcGxpY2F0aW9uRGljdGlvbmFyeSh0aGlzLmFwcERpY3QpO1xuICAgICAgY29uc3QgcG9zc2libGVBcHBJZHMgPSBnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cyhidW5kbGVJZHMsIHRoaXMuYXBwRGljdCk7XG4gICAgICBsb2cuZGVidWcoYFRyeWluZyBvdXQgdGhlIHBvc3NpYmxlIGFwcCBpZHM6ICR7cG9zc2libGVBcHBJZHMuam9pbignLCAnKX0gKHRyeSAjJHtyZXRyeUNvdW50ICsgMX0gb2YgJHttYXhUcmllc30pYCk7XG4gICAgICBmb3IgKGNvbnN0IGF0dGVtcHRlZEFwcElkS2V5IG9mIHBvc3NpYmxlQXBwSWRzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmFwcERpY3RbYXR0ZW1wdGVkQXBwSWRLZXldLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICBsb2cuZGVidWcoYFNraXBwaW5nIGFwcCAnJHthdHRlbXB0ZWRBcHBJZEtleX0nIGJlY2F1c2UgaXQgaXMgbm90IGFjdGl2ZWApO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZy5kZWJ1ZyhgQXR0ZW1wdGluZyBhcHAgJyR7YXR0ZW1wdGVkQXBwSWRLZXl9J2ApO1xuICAgICAgICAgIGNvbnN0IFthcHBJZEtleSwgcGFnZURpY3RdID0gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VsZWN0QXBwKGF0dGVtcHRlZEFwcElkS2V5LCB0aGlzLm9uQXBwQ29ubmVjdC5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAvLyBpbiBpT1MgOC4yIHRoZSBjb25uZWN0IGxvZ2ljIGhhcHBlbnMsIGJ1dCB3aXRoIGFuIGVtcHR5IGRpY3Rpb25hcnlcbiAgICAgICAgICAvLyB3aGljaCBsZWFkcyB0byB0aGUgcmVtb3RlIGRlYnVnZ2VyIGdldHRpbmcgZGlzY29ubmVjdGVkLCBhbmQgaW50byBhIGxvb3BcbiAgICAgICAgICBpZiAoXy5pc0VtcHR5KHBhZ2VEaWN0KSkge1xuICAgICAgICAgICAgbG9nLmRlYnVnKCdFbXB0eSBwYWdlIGRpY3Rpb25hcnkgcmVjZWl2ZWQuIFRyeWluZyBhZ2Fpbi4nKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIHNhdmUgdGhlIHBhZ2UgYXJyYXkgZm9yIHRoaXMgYXBwXG4gICAgICAgICAgdGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXkgPSBwYWdlQXJyYXlGcm9tRGljdChwYWdlRGljdCk7XG5cbiAgICAgICAgICAvLyBpZiB3ZSBhcmUgbG9va2luZyBmb3IgYSBwYXJ0aWN1bGFyIHVybCwgbWFrZSBzdXJlIHdlXG4gICAgICAgICAgLy8gaGF2ZSB0aGUgcmlnaHQgcGFnZS4gSWdub3JlIGVtcHR5IG9yIHVuZGVmaW5lZCB1cmxzLlxuICAgICAgICAgIC8vIElnbm9yZSBhYm91dDpibGFuayBpZiByZXF1ZXN0ZWQuXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWFyY2hGb3JQYWdlKHRoaXMuYXBwRGljdCwgY3VycmVudFVybCwgaWdub3JlQWJvdXRCbGFua1VybCk7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY3VycmVudFVybCkge1xuICAgICAgICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCBhcHAsIGJ1dCBleHBlY3RlZCB1cmwgKCcke2N1cnJlbnRVcmx9Jykgd2FzIG5vdCBmb3VuZC4gVHJ5aW5nIGFnYWluLmApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2cuZGVidWcoJ1JlY2VpdmVkIGFwcCwgYnV0IG5vIG1hdGNoIHdhcyBmb3VuZC4gVHJ5aW5nIGFnYWluLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBFcnJvciBjaGVja2luZyBhcHBsaWNhdGlvbjogJyR7ZXJyLm1lc3NhZ2V9Jy4gUmV0cnlpbmcgY29ubmVjdGlvbmApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXRyeUNvdW50Kys7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBmaW5kIGFuIGFwcCB0byBzZWxlY3QnKTtcbiAgICB9LCAwKTtcbiAgfSBjYXRjaCAoaWduKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBjb25uZWN0IHRvIGEgdmFsaWQgYXBwIGFmdGVyICR7bWF4VHJpZXN9IHRyaWVzLmApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNlYXJjaEZvclBhZ2UgKGFwcHNEaWN0LCBjdXJyZW50VXJsID0gbnVsbCwgaWdub3JlQWJvdXRCbGFua1VybCA9IGZhbHNlKSB7XG4gIGZvciAoY29uc3QgYXBwRGljdCBvZiBfLnZhbHVlcyhhcHBzRGljdCkpIHtcbiAgICBpZiAoIWFwcERpY3QgfHwgIWFwcERpY3QuaXNBY3RpdmUgfHwgIWFwcERpY3QucGFnZUFycmF5IHx8IGFwcERpY3QucGFnZUFycmF5LnByb21pc2UpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGljdCBvZiBhcHBEaWN0LnBhZ2VBcnJheSkge1xuICAgICAgaWYgKCghaWdub3JlQWJvdXRCbGFua1VybCB8fCBkaWN0LnVybCAhPT0gQkxBTktfUEFHRV9VUkwpICYmXG4gICAgICAgICAgKCFjdXJyZW50VXJsIHx8IGRpY3QudXJsID09PSBjdXJyZW50VXJsIHx8IGRpY3QudXJsID09PSBgJHtjdXJyZW50VXJsfS9gKSkge1xuICAgICAgICByZXR1cm4geyBhcHBJZEtleTogYXBwRGljdC5pZCwgcGFnZURpY3Q6IGRpY3QgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbGVjdFBhZ2UgKGFwcElkS2V5LCBwYWdlSWRLZXksIHNraXBSZWFkeUNoZWNrID0gZmFsc2UpIHtcbiAgdGhpcy5hcHBJZEtleSA9IGBQSUQ6JHthcHBJZEtleX1gO1xuICB0aGlzLnBhZ2VJZEtleSA9IHBhZ2VJZEtleTtcblxuICBsb2cuZGVidWcoYFNlbGVjdGluZyBwYWdlICcke3BhZ2VJZEtleX0nIG9uIGFwcCAnJHt0aGlzLmFwcElkS2V5fScgYW5kIGZvcndhcmRpbmcgc29ja2V0IHNldHVwYCk7XG5cbiAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcblxuICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZWxlY3RQYWdlKHRoaXMuYXBwSWRLZXksIHBhZ2VJZEtleSk7XG5cbiAgLy8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgcmVhZHkgdG8gZ29cbiAgaWYgKCFza2lwUmVhZHlDaGVjayAmJiAhYXdhaXQgdGhpcy5jaGVja1BhZ2VJc1JlYWR5KCkpIHtcbiAgICBhd2FpdCB0aGlzLnBhZ2VVbmxvYWQoKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZyhgU2VsZWN0ZWQgcGFnZSBhZnRlciAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xufVxuXG5mdW5jdGlvbiBsb2dBcHBsaWNhdGlvbkRpY3Rpb25hcnkgKGFwcHMpIHtcbiAgZnVuY3Rpb24gZ2V0VmFsdWVTdHJpbmcgKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoXy5pc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgcmV0dXJuICdbRnVuY3Rpb25dJztcbiAgICB9XG4gICAgaWYgKGtleSA9PT0gJ3BhZ2VBcnJheScgJiYgIV8uaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBgXCJXYWl0aW5nIGZvciBkYXRhXCJgO1xuICAgIH1cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICB9XG4gIGxvZy5kZWJ1ZygnQ3VycmVudCBhcHBsaWNhdGlvbnMgYXZhaWxhYmxlOicpO1xuICBmb3IgKGNvbnN0IFthcHAsIGluZm9dIG9mIF8udG9QYWlycyhhcHBzKSkge1xuICAgIGxvZy5kZWJ1ZyhgICAgIEFwcGxpY2F0aW9uOiBcIiR7YXBwfVwiYCk7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgXy50b1BhaXJzKGluZm8pKSB7XG4gICAgICBpZiAoa2V5ID09PSAncGFnZUFycmF5JyAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgbG9nLmRlYnVnKGAgICAgICAgICR7a2V5fTpgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYWdlIG9mIHZhbHVlKSB7XG4gICAgICAgICAgbGV0IHByZWZpeCA9ICctICc7XG4gICAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgXy50b1BhaXJzKHBhZ2UpKSB7XG4gICAgICAgICAgICBsb2cuZGVidWcoYCAgICAgICAgICAke3ByZWZpeH0ke2t9OiAke0pTT04uc3RyaW5naWZ5KHYpfWApO1xuICAgICAgICAgICAgcHJlZml4ID0gJyAgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbHVlU3RyaW5nID0gZ2V0VmFsdWVTdHJpbmcoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgICAgICAgICAke2tleX06ICR7dmFsdWVTdHJpbmd9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUFwcHNXaXRoRGljdCAoZGljdCkge1xuICAvLyBnZXQgdGhlIGRpY3Rpb25hcnkgZW50cnkgaW50byBhIG5pY2UgZm9ybSwgYW5kIGFkZCBpdCB0byB0aGVcbiAgLy8gYXBwbGljYXRpb24gZGljdGlvbmFyeVxuICB0aGlzLmFwcERpY3QgPSB0aGlzLmFwcERpY3QgfHwge307XG4gIGxldCBbaWQsIGVudHJ5XSA9IGFwcEluZm9Gcm9tRGljdChkaWN0KTtcbiAgaWYgKHRoaXMuYXBwRGljdFtpZF0pIHtcbiAgICAvLyBwcmVzZXJ2ZSB0aGUgcGFnZSBkaWN0aW9uYXJ5IGZvciB0aGlzIGVudHJ5XG4gICAgZW50cnkucGFnZUFycmF5ID0gdGhpcy5hcHBEaWN0W2lkXS5wYWdlQXJyYXk7XG4gIH1cbiAgdGhpcy5hcHBEaWN0W2lkXSA9IGVudHJ5O1xuXG4gIC8vIGFkZCBhIHByb21pc2UgdG8gZ2V0IHRoZSBwYWdlIGRpY3Rpb25hcnlcbiAgaWYgKF8uaXNVbmRlZmluZWQoZW50cnkucGFnZUFycmF5KSkge1xuICAgIGVudHJ5LnBhZ2VBcnJheSA9IGRlZmVycmVkUHJvbWlzZSgpO1xuICB9XG5cbiAgLy8gdHJ5IHRvIGdldCB0aGUgYXBwIGlkIGZyb20gb3VyIGNvbm5lY3RlZCBhcHBzXG4gIGlmICghdGhpcy5hcHBJZEtleSkge1xuICAgIHRoaXMuYXBwSWRLZXkgPSBnZXREZWJ1Z2dlckFwcEtleSh0aGlzLmJ1bmRsZUlkLCB0aGlzLmFwcERpY3QpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHsgc2V0Q29ubmVjdGlvbktleSwgY29ubmVjdCwgZGlzY29ubmVjdCwgc2VsZWN0QXBwLCBzZWFyY2hGb3JBcHAsIHNlYXJjaEZvclBhZ2UsIHNlbGVjdFBhZ2UsIHVwZGF0ZUFwcHNXaXRoRGljdCB9O1xuIl0sImZpbGUiOiJsaWIvbWl4aW5zL2Nvbm5lY3QuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -30,7 +30,7 @@ async function executeAtom(atom, args, frames) {
30
30
  throw new Error('Remote debugger is not connected');
31
31
  }
32
32
 
33
- _logger.default.debug(`Executing atom '${atom}'`);
33
+ _logger.default.debug(`Executing atom '${atom}' with 'args=${JSON.stringify(args)}; frames=${frames}'`);
34
34
 
35
35
  const script = await (0, _atoms.getScriptForAtom)(atom, args, frames);
36
36
  const value = await this.execute(script, true);
@@ -174,4 +174,4 @@ var _default = {
174
174
  exports.default = _default;require('source-map-support').install();
175
175
 
176
176
 
177
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9taXhpbnMvZXhlY3V0ZS5qcyJdLCJuYW1lcyI6WyJSUENfUkVTUE9OU0VfVElNRU9VVF9NUyIsImV4ZWN1dGVBdG9tIiwiYXRvbSIsImFyZ3MiLCJmcmFtZXMiLCJycGNDbGllbnQiLCJpc0Nvbm5lY3RlZCIsIkVycm9yIiwibG9nIiwiZGVidWciLCJzY3JpcHQiLCJ2YWx1ZSIsImV4ZWN1dGUiLCJfIiwidHJ1bmNhdGUiLCJsZW5ndGgiLCJSRVNQT05TRV9MT0dfTEVOR1RIIiwiZXhlY3V0ZUF0b21Bc3luYyIsImV2YWx1YXRlIiwibWV0aG9kIiwib3B0cyIsInNlbmQiLCJPYmplY3QiLCJhc3NpZ24iLCJhcHBJZEtleSIsInBhZ2VJZEtleSIsInJldHVybkJ5VmFsdWUiLCJwcm9taXNlTmFtZSIsInV0aWwiLCJ1dWlkVjQiLCJyZXBsYWNlIiwib2JqIiwiZXhwcmVzc2lvbiIsInByb21pc2VPYmplY3RJZCIsInJlc3VsdCIsIm9iamVjdElkIiwiYXN5bmNDYWxsQmFjayIsInJlcyIsInN1YmNvbW1hbmRUaW1lb3V0IiwiZ2VuZXJhdGVQcmV2aWV3Iiwic2F2ZVJlc3VsdCIsImVyciIsIm1lc3NhZ2UiLCJpbmNsdWRlcyIsInJldHJ5V2FpdCIsInRpbWVvdXQiLCJyZXRyaWVzIiwicGFyc2VJbnQiLCJ0aW1lciIsInRpbWluZyIsIlRpbWVyIiwic3RhcnQiLCJoYXNWYWx1ZSIsImVycm9ycyIsIlRpbWVvdXRFcnJvciIsImdldER1cmF0aW9uIiwiYXNNaWxsaVNlY29uZHMiLCJ0b0ZpeGVkIiwiaWduIiwiY29tbWFuZCIsIm92ZXJyaWRlIiwicGFnZUxvYWRpbmciLCJ3YWl0Rm9yRG9tIiwiZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUiLCJnYXJiYWdlQ29sbGVjdCIsImNhbGxGdW5jdGlvbiIsImZuIiwiZnVuY3Rpb25EZWNsYXJhdGlvbiIsImFyZ3VtZW50cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7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LEdBQUcsTUFBTSxLQUFLaEMsU0FBTCxDQUFlZ0IsSUFBZixDQUFvQix3QkFBcEIsRUFBOEM7QUFDOURjLElBQUFBLFFBRDhEO0FBRTlEZ0MsSUFBQUEsbUJBQW1CLEVBQUVELEVBRnlDO0FBRzlERSxJQUFBQSxTQUFTLEVBQUVqRSxJQUhtRDtBQUk5RHVCLElBQUFBLGFBQWEsRUFBRSxJQUorQztBQUs5REYsSUFBQUEsUUFBUSxFQUFFLEtBQUtBLFFBTCtDO0FBTTlEQyxJQUFBQSxTQUFTLEVBQUUsS0FBS0E7QUFOOEMsR0FBOUMsQ0FBbEI7QUFTQSxTQUFPLDBCQUFjWSxHQUFkLENBQVA7QUFDRDs7ZUFHYztBQUFFcEMsRUFBQUEsV0FBRjtBQUFlZ0IsRUFBQUEsZ0JBQWY7QUFBaUNMLEVBQUFBLE9BQWpDO0FBQTBDcUQsRUFBQUE7QUFBMUMsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS1iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBjaGVja1BhcmFtcywgc2ltcGxlU3RyaW5naWZ5LCBjb252ZXJ0UmVzdWx0LCBSRVNQT05TRV9MT0dfTEVOR1RIIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgZ2V0U2NyaXB0Rm9yQXRvbSB9IGZyb20gJy4uL2F0b21zJztcbmltcG9ydCB7IHV0aWwsIHRpbWluZyB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCB7IHJldHJ5SW50ZXJ2YWwgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5cbi8qIEhvdyBtYW55IG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciB3ZWJraXQgdG8gcmV0dXJuIGEgcmVzcG9uc2UgYmVmb3JlIHRpbWluZyBvdXQgKi9cbmNvbnN0IFJQQ19SRVNQT05TRV9USU1FT1VUX01TID0gNTAwMDtcblxuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUF0b20gKGF0b20sIGFyZ3MsIGZyYW1lcykge1xuICBpZiAoIXRoaXMucnBjQ2xpZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZW1vdGUgZGVidWdnZXIgaXMgbm90IGNvbm5lY3RlZCcpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBFeGVjdXRpbmcgYXRvbSAnJHthdG9tfSdgKTtcbiAgY29uc3Qgc2NyaXB0ID0gYXdhaXQgZ2V0U2NyaXB0Rm9yQXRvbShhdG9tLCBhcmdzLCBmcmFtZXMpO1xuICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZShzY3JpcHQsIHRydWUpO1xuICBsb2cuZGVidWcoYFJlY2VpdmVkIHJlc3VsdCBmb3IgYXRvbSAnJHthdG9tfScgZXhlY3V0aW9uOiAke18udHJ1bmNhdGUoc2ltcGxlU3RyaW5naWZ5KHZhbHVlKSwge2xlbmd0aDogUkVTUE9OU0VfTE9HX0xFTkdUSH0pfWApO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVBdG9tQXN5bmMgKGF0b20sIGFyZ3MsIGZyYW1lcykge1xuICAvLyBoZWxwZXIgdG8gc2VuZCBkaXJlY3RseSB0byB0aGUgd2ViIGluc3BlY3RvclxuICBjb25zdCBldmFsdWF0ZSA9IGFzeW5jIChtZXRob2QsIG9wdHMpID0+IGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQobWV0aG9kLCBPYmplY3QuYXNzaWduKHtcbiAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIHJldHVybkJ5VmFsdWU6IGZhbHNlLFxuICB9LCBvcHRzKSk7XG5cbiAgLy8gZmlyc3QgY3JlYXRlIGEgUHJvbWlzZSBvbiB0aGUgcGFnZSwgc2F2aW5nIHRoZSByZXNvbHZlL3JlamVjdCBmdW5jdGlvbnNcbiAgLy8gYXMgcHJvcGVydGllc1xuICBjb25zdCBwcm9taXNlTmFtZSA9IGBhcHBpdW1Bc3luY0V4ZWN1dGVQcm9taXNlJHt1dGlsLnV1aWRWNCgpLnJlcGxhY2UoLy0vZywgJycpfWA7XG4gIGNvbnN0IHNjcmlwdCA9XG4gICAgYHZhciByZXMsIHJlajtcbiAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX0gPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICByZXMgPSByZXNvbHZlO1xuICAgICAgcmVqID0gcmVqZWN0O1xuICAgIH0pO1xuICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfS5yZXNvbHZlID0gcmVzO1xuICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfS5yZWplY3QgPSByZWo7XG4gICAgd2luZG93LiR7cHJvbWlzZU5hbWV9O2A7XG4gIGNvbnN0IG9iaiA9IGF3YWl0IGV2YWx1YXRlKCdSdW50aW1lLmV2YWx1YXRlJywge1xuICAgIGV4cHJlc3Npb246IHNjcmlwdCxcbiAgfSk7XG4gIGNvbnN0IHByb21pc2VPYmplY3RJZCA9IG9iai5yZXN1bHQub2JqZWN0SWQ7XG5cbiAgLy8gZXhlY3V0ZSB0aGUgYXRvbSwgY2FsbGluZyBiYWNrIHRvIHRoZSByZXNvbHZlIGZ1bmN0aW9uXG4gIGNvbnN0IGFzeW5jQ2FsbEJhY2sgPVxuICAgIGBmdW5jdGlvbiAocmVzKSB7XG4gICAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX0ucmVzb2x2ZShyZXMpO1xuICAgICAgd2luZG93LiR7cHJvbWlzZU5hbWV9VmFsdWUgPSByZXM7XG4gICAgfWA7XG4gIGF3YWl0IHRoaXMuZXhlY3V0ZShhd2FpdCBnZXRTY3JpcHRGb3JBdG9tKGF0b20sIGFyZ3MsIGZyYW1lcywgYXN5bmNDYWxsQmFjaykpO1xuXG4gIC8vIHdhaXQgZm9yIHRoZSBwcm9taXNlIHRvIGJlIHJlc29sdmVkXG4gIGxldCByZXM7XG4gIGNvbnN0IHN1YmNvbW1hbmRUaW1lb3V0ID0gMTAwMDsgLy8gdGltZW91dCBvbiBpbmRpdmlkdWFsIGNvbW1hbmRzXG4gIHRyeSB7XG4gICAgcmVzID0gYXdhaXQgZXZhbHVhdGUoJ1J1bnRpbWUuYXdhaXRQcm9taXNlJywge1xuICAgICAgcHJvbWlzZU9iamVjdElkLFxuICAgICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSxcbiAgICAgIGdlbmVyYXRlUHJldmlldzogdHJ1ZSxcbiAgICAgIHNhdmVSZXN1bHQ6IHRydWUsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmICghZXJyLm1lc3NhZ2UuaW5jbHVkZXMoYCdSdW50aW1lLmF3YWl0UHJvbWlzZScgd2FzIG5vdCBmb3VuZGApKSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICAgIC8vIGF3YWl0UHJvbWlzZSBpcyBub3QgYWx3YXlzIGF2YWlsYWJsZSwgc28gc2ltdWxhdGUgaXQgd2l0aCBwb2xsXG4gICAgY29uc3QgcmV0cnlXYWl0ID0gMTAwO1xuICAgIGNvbnN0IHRpbWVvdXQgPSAoYXJncy5sZW5ndGggPj0gMykgPyBhcmdzWzJdIDogUlBDX1JFU1BPTlNFX1RJTUVPVVRfTVM7XG4gICAgLy8gaWYgdGhlIHRpbWVvdXQgbWF0aCB0dXJucyB1cCAwIHJldHJpZXMsIG1ha2Ugc3VyZSBpdCBoYXBwZW5zIG9uY2VcbiAgICBjb25zdCByZXRyaWVzID0gcGFyc2VJbnQodGltZW91dCAvIHJldHJ5V2FpdCwgMTApIHx8IDE7XG4gICAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcbiAgICBsb2cuZGVidWcoYFdhaXRpbmcgdXAgdG8gJHt0aW1lb3V0fW1zIGZvciBhc3luYyBleGVjdXRlIHRvIGZpbmlzaGApO1xuICAgIHJlcyA9IGF3YWl0IHJldHJ5SW50ZXJ2YWwocmV0cmllcywgcmV0cnlXYWl0LCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyB0aGUgYXRvbSBfd2lsbF8gcmV0dXJuLCBlaXRoZXIgYmVjYXVzZSBpdCBmaW5pc2hlZCBvciBhbiBlcnJvclxuICAgICAgLy8gaW5jbHVkaW5nIGEgdGltZW91dCBlcnJvclxuICAgICAgY29uc3QgaGFzVmFsdWUgPSBhd2FpdCBldmFsdWF0ZSgnUnVudGltZS5ldmFsdWF0ZScsIHtcbiAgICAgICAgZXhwcmVzc2lvbjogYHdpbmRvdy5oYXNPd25Qcm9wZXJ0eSgnJHtwcm9taXNlTmFtZX1WYWx1ZScpO2AsXG4gICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIGlmIChoYXNWYWx1ZSkge1xuICAgICAgICAvLyB3ZSBvbmx5IHB1dCB0aGUgcHJvcGVydHkgb24gYHdpbmRvd2Agd2hlbiB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkLFxuICAgICAgICAvLyBzbyBpZiBpdCBpcyB0aGVyZSwgZXZlcnl0aGluZyBpcyBkb25lXG4gICAgICAgIHJldHVybiBhd2FpdCBldmFsdWF0ZSgnUnVudGltZS5ldmFsdWF0ZScsIHtcbiAgICAgICAgICBleHByZXNzaW9uOiBgd2luZG93LiR7cHJvbWlzZU5hbWV9VmFsdWU7YCxcbiAgICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIHRocm93IGEgVGltZW91dEVycm9yLCBvciBlbHNlIGl0IG5lZWRzIHRvIGJlIGNhdWdodCBhbmQgcmUtdGhyb3duXG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlRpbWVvdXRFcnJvcihgVGltZWQgb3V0IHdhaXRpbmcgZm9yIGFzeW5jaHJvbm91cyBzY3JpcHQgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcmVzdWx0IGFmdGVyICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcy50b0ZpeGVkKDApfW1zJykpO2ApO1xuICAgIH0pO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICAvLyB0cnkgdG8gZ2V0IHJpZCBvZiB0aGUgcHJvbWlzZVxuICAgICAgYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnZXhlY3V0ZV9zY3JpcHQnLCBbYGRlbGV0ZSB3aW5kb3cuJHtwcm9taXNlTmFtZX07YCwgW251bGwsIG51bGxdLCBzdWJjb21tYW5kVGltZW91dF0sIGZyYW1lcyk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG4gIHJldHVybiBjb252ZXJ0UmVzdWx0KHJlcyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKGNvbW1hbmQsIG92ZXJyaWRlKSB7XG4gIC8vIGlmIHRoZSBwYWdlIGlzIG5vdCBsb2FkZWQgeWV0LCB3YWl0IGZvciBpdFxuICBpZiAodGhpcy5wYWdlTG9hZGluZyAmJiAhb3ZlcnJpZGUpIHtcbiAgICBsb2cuZGVidWcoJ1RyeWluZyB0byBleGVjdXRlIGJ1dCBwYWdlIGlzIG5vdCBsb2FkZWQuJyk7XG4gICAgYXdhaXQgdGhpcy53YWl0Rm9yRG9tKCk7XG4gIH1cblxuICBjaGVja1BhcmFtcyh7YXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXl9KTtcblxuICBpZiAodGhpcy5nYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSkge1xuICAgIGF3YWl0IHRoaXMuZ2FyYmFnZUNvbGxlY3QoKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZyhgU2VuZGluZyBqYXZhc2NyaXB0IGNvbW1hbmQ6ICcke18udHJ1bmNhdGUoY29tbWFuZCwge2xlbmd0aDogNTB9KX0nYCk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ1J1bnRpbWUuZXZhbHVhdGUnLCB7XG4gICAgZXhwcmVzc2lvbjogY29tbWFuZCxcbiAgICByZXR1cm5CeVZhbHVlOiB0cnVlLFxuICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gIH0pO1xuXG4gIHJldHVybiBjb252ZXJ0UmVzdWx0KHJlcyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNhbGxGdW5jdGlvbiAob2JqZWN0SWQsIGZuLCBhcmdzKSB7XG4gIGNoZWNrUGFyYW1zKHthcHBJZEtleTogdGhpcy5hcHBJZEtleSwgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleX0pO1xuXG4gIGlmICh0aGlzLmdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlKSB7XG4gICAgYXdhaXQgdGhpcy5nYXJiYWdlQ29sbGVjdCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKCdDYWxsaW5nIGphdmFzY3JpcHQgZnVuY3Rpb24nKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnUnVudGltZS5jYWxsRnVuY3Rpb25PbicsIHtcbiAgICBvYmplY3RJZCxcbiAgICBmdW5jdGlvbkRlY2xhcmF0aW9uOiBmbixcbiAgICBhcmd1bWVudHM6IGFyZ3MsXG4gICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSxcbiAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICB9KTtcblxuICByZXR1cm4gY29udmVydFJlc3VsdChyZXMpO1xufVxuXG5cbmV4cG9ydCBkZWZhdWx0IHsgZXhlY3V0ZUF0b20sIGV4ZWN1dGVBdG9tQXN5bmMsIGV4ZWN1dGUsIGNhbGxGdW5jdGlvbiB9O1xuIl0sImZpbGUiOiJsaWIvbWl4aW5zL2V4ZWN1dGUuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
177
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9taXhpbnMvZXhlY3V0ZS5qcyJdLCJuYW1lcyI6WyJSUENfUkVTUE9OU0VfVElNRU9VVF9NUyIsImV4ZWN1dGVBdG9tIiwiYXRvbSIsImFyZ3MiLCJmcmFtZXMiLCJycGNDbGllbnQiLCJpc0Nvbm5lY3RlZCIsIkVycm9yIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5Iiwic2NyaXB0IiwidmFsdWUiLCJleGVjdXRlIiwiXyIsInRydW5jYXRlIiwibGVuZ3RoIiwiUkVTUE9OU0VfTE9HX0xFTkdUSCIsImV4ZWN1dGVBdG9tQXN5bmMiLCJldmFsdWF0ZSIsIm1ldGhvZCIsIm9wdHMiLCJzZW5kIiwiT2JqZWN0IiwiYXNzaWduIiwiYXBwSWRLZXkiLCJwYWdlSWRLZXkiLCJyZXR1cm5CeVZhbHVlIiwicHJvbWlzZU5hbWUiLCJ1dGlsIiwidXVpZFY0IiwicmVwbGFjZSIsIm9iaiIsImV4cHJlc3Npb24iLCJwcm9taXNlT2JqZWN0SWQiLCJyZXN1bHQiLCJvYmplY3RJZCIsImFzeW5jQ2FsbEJhY2siLCJyZXMiLCJzdWJjb21tYW5kVGltZW91dCIsImdlbmVyYXRlUHJldmlldyIsInNhdmVSZXN1bHQiLCJlcnIiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJyZXRyeVdhaXQiLCJ0aW1lb3V0IiwicmV0cmllcyIsInBhcnNlSW50IiwidGltZXIiLCJ0aW1pbmciLCJUaW1lciIsInN0YXJ0IiwiaGFzVmFsdWUiLCJlcnJvcnMiLCJUaW1lb3V0RXJyb3IiLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsImlnbiIsImNvbW1hbmQiLCJvdmVycmlkZSIsInBhZ2VMb2FkaW5nIiwid2FpdEZvckRvbSIsImdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlIiwiZ2FyYmFnZUNvbGxlY3QiLCJjYWxsRnVuY3Rpb24iLCJmbiIsImZ1bmN0aW9uRGVjbGFyYXRpb24iLCJhcmd1bWVudHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7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S0E7QUFBMUMsR0FBWjs7QUFFQSxNQUFJLEtBQUtzQyx1QkFBVCxFQUFrQztBQUNoQyxVQUFNLEtBQUtDLGNBQUwsRUFBTjtBQUNEOztBQUVEMUQsa0JBQUlDLEtBQUosQ0FBVSw2QkFBVjs7QUFDQSxRQUFNOEIsR0FBRyxHQUFHLE1BQU0sS0FBS2xDLFNBQUwsQ0FBZWtCLElBQWYsQ0FBb0Isd0JBQXBCLEVBQThDO0FBQzlEYyxJQUFBQSxRQUQ4RDtBQUU5RGdDLElBQUFBLG1CQUFtQixFQUFFRCxFQUZ5QztBQUc5REUsSUFBQUEsU0FBUyxFQUFFbkUsSUFIbUQ7QUFJOUR5QixJQUFBQSxhQUFhLEVBQUUsSUFKK0M7QUFLOURGLElBQUFBLFFBQVEsRUFBRSxLQUFLQSxRQUwrQztBQU05REMsSUFBQUEsU0FBUyxFQUFFLEtBQUtBO0FBTjhDLEdBQTlDLENBQWxCO0FBU0EsU0FBTywwQkFBY1ksR0FBZCxDQUFQO0FBQ0Q7O2VBR2M7QUFBRXRDLEVBQUFBLFdBQUY7QUFBZWtCLEVBQUFBLGdCQUFmO0FBQWlDTCxFQUFBQSxPQUFqQztBQUEwQ3FELEVBQUFBO0FBQTFDLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0tYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgY2hlY2tQYXJhbXMsIHNpbXBsZVN0cmluZ2lmeSwgY29udmVydFJlc3VsdCwgUkVTUE9OU0VfTE9HX0xFTkdUSCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGdldFNjcmlwdEZvckF0b20gfSBmcm9tICcuLi9hdG9tcyc7XG5pbXBvcnQgeyB1dGlsLCB0aW1pbmcgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG4vKiBIb3cgbWFueSBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3Igd2Via2l0IHRvIHJldHVybiBhIHJlc3BvbnNlIGJlZm9yZSB0aW1pbmcgb3V0ICovXG5jb25zdCBSUENfUkVTUE9OU0VfVElNRU9VVF9NUyA9IDUwMDA7XG5cbi8qKlxuICogRXhlY3V0ZSBhIFNlbGVuaXVtIGF0b20gaW4gU2FmYXJpXG4gKiBAcGFyYW0ge3N0cmluZ30gYXRvbSBOYW1lIG9mIFNlbGVuaXVtIGF0b20gKHNlZSBhdG9tcy8gZGlyZWN0b3J5KVxuICogQHBhcmFtIHtBcnJheTwqPn0gYXJncyBBcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBhdG9tXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGZyYW1lc1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIHJlc3VsdCByZWNlaXZlZCBmcm9tIHRoZSBhdG9tXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVBdG9tIChhdG9tLCBhcmdzLCBmcmFtZXMpIHtcbiAgaWYgKCF0aGlzLnJwY0NsaWVudC5pc0Nvbm5lY3RlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUmVtb3RlIGRlYnVnZ2VyIGlzIG5vdCBjb25uZWN0ZWQnKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZyhgRXhlY3V0aW5nIGF0b20gJyR7YXRvbX0nIHdpdGggJ2FyZ3M9JHtKU09OLnN0cmluZ2lmeShhcmdzKX07IGZyYW1lcz0ke2ZyYW1lc30nYCk7XG4gIGNvbnN0IHNjcmlwdCA9IGF3YWl0IGdldFNjcmlwdEZvckF0b20oYXRvbSwgYXJncywgZnJhbWVzKTtcbiAgY29uc3QgdmFsdWUgPSBhd2FpdCB0aGlzLmV4ZWN1dGUoc2NyaXB0LCB0cnVlKTtcbiAgbG9nLmRlYnVnKGBSZWNlaXZlZCByZXN1bHQgZm9yIGF0b20gJyR7YXRvbX0nIGV4ZWN1dGlvbjogJHtfLnRydW5jYXRlKHNpbXBsZVN0cmluZ2lmeSh2YWx1ZSksIHtsZW5ndGg6IFJFU1BPTlNFX0xPR19MRU5HVEh9KX1gKTtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlQXRvbUFzeW5jIChhdG9tLCBhcmdzLCBmcmFtZXMpIHtcbiAgLy8gaGVscGVyIHRvIHNlbmQgZGlyZWN0bHkgdG8gdGhlIHdlYiBpbnNwZWN0b3JcbiAgY29uc3QgZXZhbHVhdGUgPSBhc3luYyAobWV0aG9kLCBvcHRzKSA9PiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKG1ldGhvZCwgT2JqZWN0LmFzc2lnbih7XG4gICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICByZXR1cm5CeVZhbHVlOiBmYWxzZSxcbiAgfSwgb3B0cykpO1xuXG4gIC8vIGZpcnN0IGNyZWF0ZSBhIFByb21pc2Ugb24gdGhlIHBhZ2UsIHNhdmluZyB0aGUgcmVzb2x2ZS9yZWplY3QgZnVuY3Rpb25zXG4gIC8vIGFzIHByb3BlcnRpZXNcbiAgY29uc3QgcHJvbWlzZU5hbWUgPSBgYXBwaXVtQXN5bmNFeGVjdXRlUHJvbWlzZSR7dXRpbC51dWlkVjQoKS5yZXBsYWNlKC8tL2csICcnKX1gO1xuICBjb25zdCBzY3JpcHQgPVxuICAgIGB2YXIgcmVzLCByZWo7XG4gICAgd2luZG93LiR7cHJvbWlzZU5hbWV9ID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgcmVzID0gcmVzb2x2ZTtcbiAgICAgIHJlaiA9IHJlamVjdDtcbiAgICB9KTtcbiAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX0ucmVzb2x2ZSA9IHJlcztcbiAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX0ucmVqZWN0ID0gcmVqO1xuICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfTtgO1xuICBjb25zdCBvYmogPSBhd2FpdCBldmFsdWF0ZSgnUnVudGltZS5ldmFsdWF0ZScsIHtcbiAgICBleHByZXNzaW9uOiBzY3JpcHQsXG4gIH0pO1xuICBjb25zdCBwcm9taXNlT2JqZWN0SWQgPSBvYmoucmVzdWx0Lm9iamVjdElkO1xuXG4gIC8vIGV4ZWN1dGUgdGhlIGF0b20sIGNhbGxpbmcgYmFjayB0byB0aGUgcmVzb2x2ZSBmdW5jdGlvblxuICBjb25zdCBhc3luY0NhbGxCYWNrID1cbiAgICBgZnVuY3Rpb24gKHJlcykge1xuICAgICAgd2luZG93LiR7cHJvbWlzZU5hbWV9LnJlc29sdmUocmVzKTtcbiAgICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfVZhbHVlID0gcmVzO1xuICAgIH1gO1xuICBhd2FpdCB0aGlzLmV4ZWN1dGUoYXdhaXQgZ2V0U2NyaXB0Rm9yQXRvbShhdG9tLCBhcmdzLCBmcmFtZXMsIGFzeW5jQ2FsbEJhY2spKTtcblxuICAvLyB3YWl0IGZvciB0aGUgcHJvbWlzZSB0byBiZSByZXNvbHZlZFxuICBsZXQgcmVzO1xuICBjb25zdCBzdWJjb21tYW5kVGltZW91dCA9IDEwMDA7IC8vIHRpbWVvdXQgb24gaW5kaXZpZHVhbCBjb21tYW5kc1xuICB0cnkge1xuICAgIHJlcyA9IGF3YWl0IGV2YWx1YXRlKCdSdW50aW1lLmF3YWl0UHJvbWlzZScsIHtcbiAgICAgIHByb21pc2VPYmplY3RJZCxcbiAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsXG4gICAgICBnZW5lcmF0ZVByZXZpZXc6IHRydWUsXG4gICAgICBzYXZlUmVzdWx0OiB0cnVlLFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoIWVyci5tZXNzYWdlLmluY2x1ZGVzKGAnUnVudGltZS5hd2FpdFByb21pc2UnIHdhcyBub3QgZm91bmRgKSkge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICAvLyBhd2FpdFByb21pc2UgaXMgbm90IGFsd2F5cyBhdmFpbGFibGUsIHNvIHNpbXVsYXRlIGl0IHdpdGggcG9sbFxuICAgIGNvbnN0IHJldHJ5V2FpdCA9IDEwMDtcbiAgICBjb25zdCB0aW1lb3V0ID0gKGFyZ3MubGVuZ3RoID49IDMpID8gYXJnc1syXSA6IFJQQ19SRVNQT05TRV9USU1FT1VUX01TO1xuICAgIC8vIGlmIHRoZSB0aW1lb3V0IG1hdGggdHVybnMgdXAgMCByZXRyaWVzLCBtYWtlIHN1cmUgaXQgaGFwcGVucyBvbmNlXG4gICAgY29uc3QgcmV0cmllcyA9IHBhcnNlSW50KHRpbWVvdXQgLyByZXRyeVdhaXQsIDEwKSB8fCAxO1xuICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gICAgbG9nLmRlYnVnKGBXYWl0aW5nIHVwIHRvICR7dGltZW91dH1tcyBmb3IgYXN5bmMgZXhlY3V0ZSB0byBmaW5pc2hgKTtcbiAgICByZXMgPSBhd2FpdCByZXRyeUludGVydmFsKHJldHJpZXMsIHJldHJ5V2FpdCwgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gdGhlIGF0b20gX3dpbGxfIHJldHVybiwgZWl0aGVyIGJlY2F1c2UgaXQgZmluaXNoZWQgb3IgYW4gZXJyb3JcbiAgICAgIC8vIGluY2x1ZGluZyBhIHRpbWVvdXQgZXJyb3JcbiAgICAgIGNvbnN0IGhhc1ZhbHVlID0gYXdhaXQgZXZhbHVhdGUoJ1J1bnRpbWUuZXZhbHVhdGUnLCB7XG4gICAgICAgIGV4cHJlc3Npb246IGB3aW5kb3cuaGFzT3duUHJvcGVydHkoJyR7cHJvbWlzZU5hbWV9VmFsdWUnKTtgLFxuICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICBpZiAoaGFzVmFsdWUpIHtcbiAgICAgICAgLy8gd2Ugb25seSBwdXQgdGhlIHByb3BlcnR5IG9uIGB3aW5kb3dgIHdoZW4gdGhlIGNhbGxiYWNrIGlzIGNhbGxlZCxcbiAgICAgICAgLy8gc28gaWYgaXQgaXMgdGhlcmUsIGV2ZXJ5dGhpbmcgaXMgZG9uZVxuICAgICAgICByZXR1cm4gYXdhaXQgZXZhbHVhdGUoJ1J1bnRpbWUuZXZhbHVhdGUnLCB7XG4gICAgICAgICAgZXhwcmVzc2lvbjogYHdpbmRvdy4ke3Byb21pc2VOYW1lfVZhbHVlO2AsXG4gICAgICAgICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyB0aHJvdyBhIFRpbWVvdXRFcnJvciwgb3IgZWxzZSBpdCBuZWVkcyB0byBiZSBjYXVnaHQgYW5kIHJlLXRocm93blxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5UaW1lb3V0RXJyb3IoYFRpbWVkIG91dCB3YWl0aW5nIGZvciBhc3luY2hyb25vdXMgc2NyaXB0IGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHJlc3VsdCBhZnRlciAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tcycpKTtgKTtcbiAgICB9KTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgLy8gdHJ5IHRvIGdldCByaWQgb2YgdGhlIHByb21pc2VcbiAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2V4ZWN1dGVfc2NyaXB0JywgW2BkZWxldGUgd2luZG93LiR7cHJvbWlzZU5hbWV9O2AsIFtudWxsLCBudWxsXSwgc3ViY29tbWFuZFRpbWVvdXRdLCBmcmFtZXMpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuICByZXR1cm4gY29udmVydFJlc3VsdChyZXMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlIChjb21tYW5kLCBvdmVycmlkZSkge1xuICAvLyBpZiB0aGUgcGFnZSBpcyBub3QgbG9hZGVkIHlldCwgd2FpdCBmb3IgaXRcbiAgaWYgKHRoaXMucGFnZUxvYWRpbmcgJiYgIW92ZXJyaWRlKSB7XG4gICAgbG9nLmRlYnVnKCdUcnlpbmcgdG8gZXhlY3V0ZSBidXQgcGFnZSBpcyBub3QgbG9hZGVkLicpO1xuICAgIGF3YWl0IHRoaXMud2FpdEZvckRvbSgpO1xuICB9XG5cbiAgY2hlY2tQYXJhbXMoe2FwcElkS2V5OiB0aGlzLmFwcElkS2V5LCBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5fSk7XG5cbiAgaWYgKHRoaXMuZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUpIHtcbiAgICBhd2FpdCB0aGlzLmdhcmJhZ2VDb2xsZWN0KCk7XG4gIH1cblxuICBsb2cuZGVidWcoYFNlbmRpbmcgamF2YXNjcmlwdCBjb21tYW5kOiAnJHtfLnRydW5jYXRlKGNvbW1hbmQsIHtsZW5ndGg6IDUwfSl9J2ApO1xuICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdSdW50aW1lLmV2YWx1YXRlJywge1xuICAgIGV4cHJlc3Npb246IGNvbW1hbmQsXG4gICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSxcbiAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICB9KTtcblxuICByZXR1cm4gY29udmVydFJlc3VsdChyZXMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjYWxsRnVuY3Rpb24gKG9iamVjdElkLCBmbiwgYXJncykge1xuICBjaGVja1BhcmFtcyh7YXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXl9KTtcblxuICBpZiAodGhpcy5nYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSkge1xuICAgIGF3YWl0IHRoaXMuZ2FyYmFnZUNvbGxlY3QoKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZygnQ2FsbGluZyBqYXZhc2NyaXB0IGZ1bmN0aW9uJyk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ1J1bnRpbWUuY2FsbEZ1bmN0aW9uT24nLCB7XG4gICAgb2JqZWN0SWQsXG4gICAgZnVuY3Rpb25EZWNsYXJhdGlvbjogZm4sXG4gICAgYXJndW1lbnRzOiBhcmdzLFxuICAgIHJldHVybkJ5VmFsdWU6IHRydWUsXG4gICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnZlcnRSZXN1bHQocmVzKTtcbn1cblxuXG5leHBvcnQgZGVmYXVsdCB7IGV4ZWN1dGVBdG9tLCBleGVjdXRlQXRvbUFzeW5jLCBleGVjdXRlLCBjYWxsRnVuY3Rpb24gfTtcbiJdLCJmaWxlIjoibGliL21peGlucy9leGVjdXRlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -110,6 +110,12 @@ function onConnectedDriverList(err, drivers) {
110
110
  _logger.default.debug(`Received connected driver list: ${JSON.stringify(this.connectedDrivers)}`);
111
111
  }
112
112
 
113
+ function onCurrentState(err, state) {
114
+ this.currentState = state.WIRAutomationAvailabilityKey;
115
+
116
+ _logger.default.debug(`Received connected automation availability state: ${JSON.stringify(this.currentState)}`);
117
+ }
118
+
113
119
  async function onConnectedApplicationList(err, apps) {
114
120
  _logger.default.debug(`Received connected applications list: ${_lodash.default.keys(apps).join(', ')}`);
115
121
 
@@ -140,10 +146,11 @@ const messageHandlers = {
140
146
  onAppDisconnect,
141
147
  onAppUpdate,
142
148
  onConnectedDriverList,
149
+ onCurrentState,
143
150
  onConnectedApplicationList
144
151
  };
145
152
  var _default = messageHandlers;
146
153
  exports.default = _default;require('source-map-support').install();
147
154
 
148
155
 
149
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9taXhpbnMvbWVzc2FnZS1oYW5kbGVycy5qcyJdLCJuYW1lcyI6WyJvblBhZ2VDaGFuZ2UiLCJlcnIiLCJhcHBJZEtleSIsInBhZ2VEaWN0IiwiXyIsImlzRW1wdHkiLCJwYWdlQXJyYXkiLCJ1c2VBcHBEaWN0TG9jayIsImRvbmUiLCJhcHBEaWN0IiwicmVzb2x2ZSIsImlzRXF1YWwiLCJsb2ciLCJkZWJ1ZyIsIl9uYXZpZ2F0aW5nVG9QYWdlIiwiZW1pdCIsImV2ZW50cyIsIkVWRU5UX1BBR0VfQ0hBTkdFIiwicmVwbGFjZSIsIm9uQXBwQ29ubmVjdCIsImRpY3QiLCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiLCJ1cGRhdGVBcHBzV2l0aERpY3QiLCJvbkFwcERpc2Nvbm5lY3QiLCJidW5kbGVJZCIsImNvbm5lY3RlZCIsIkVWRU5UX0RJU0NPTk5FQ1QiLCJvbkFwcFVwZGF0ZSIsIm9uQ29ubmVjdGVkRHJpdmVyTGlzdCIsImRyaXZlcnMiLCJjb25uZWN0ZWREcml2ZXJzIiwiV0lSRHJpdmVyRGljdGlvbmFyeUtleSIsIkpTT04iLCJzdHJpbmdpZnkiLCJvbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdCIsImFwcHMiLCJrZXlzIiwiam9pbiIsIm5ld0RpY3QiLCJ2YWx1ZXMiLCJpZCIsImVudHJ5Iiwic2tpcHBlZEFwcHMiLCJpbmNsdWRlcyIsIm5hbWUiLCJkZWZhdWx0cyIsIm1lc3NhZ2VIYW5kbGVycyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFRQSxlQUFlQSxZQUFmLENBQTZCQyxHQUE3QixFQUFrQ0MsUUFBbEMsRUFBNENDLFFBQTVDLEVBQXNEO0FBQ3BELE1BQUlDLGdCQUFFQyxPQUFGLENBQVVGLFFBQVYsQ0FBSixFQUF5QjtBQUN2QjtBQUNEOztBQUVELFFBQU1HLFNBQVMsR0FBRyw4QkFBa0JILFFBQWxCLENBQWxCO0FBRUEsUUFBTSxLQUFLSSxjQUFMLENBQXFCQyxJQUFELElB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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQgeyBwYWdlQXJyYXlGcm9tRGljdCwgZ2V0RGVidWdnZXJBcHBLZXksIHNpbXBsZVN0cmluZ2lmeSwgYXBwSW5mb0Zyb21EaWN0IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG4vKlxuICogR2VuZXJpYyBjYWxsYmFja3MgdXNlZCB0aHJvdWdob3V0IHRoZSBsaWZlY3ljbGUgb2YgdGhlIFJlbW90ZSBEZWJ1Z2dlci5cbiAqIFRoZXNlIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHByb3RvdHlwZS5cbiAqL1xuXG5hc3luYyBmdW5jdGlvbiBvblBhZ2VDaGFuZ2UgKGVyciwgYXBwSWRLZXksIHBhZ2VEaWN0KSB7XG4gIGlmIChfLmlzRW1wdHkocGFnZURpY3QpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGFnZUFycmF5ID0gcGFnZUFycmF5RnJvbURpY3QocGFnZURpY3QpO1xuXG4gIGF3YWl0IHRoaXMudXNlQXBwRGljdExvY2soKGRvbmUpID0+IHtcbiAgICB0cnkge1xuICAgICAgLy8gc2F2ZSB0aGUgcGFnZSBkaWN0IGZvciB0aGlzIGFwcFxuICAgICAgaWYgKHRoaXMuYXBwRGljdFthcHBJZEtleV0pIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwRGljdFthcHBJZEtleV0ucGFnZUFycmF5KSB7XG4gICAgICAgICAgaWYgKHRoaXMuYXBwRGljdFthcHBJZEtleV0ucGFnZUFycmF5LnJlc29sdmUpIHtcbiAgICAgICAgICAgIC8vIHBhZ2VEaWN0IGlzIGEgcGVuZGluZyBwcm9taXNlLCBzbyByZXNvbHZlXG4gICAgICAgICAgICB0aGlzLmFwcERpY3RbYXBwSWRLZXldLnBhZ2VBcnJheS5yZXNvbHZlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHdlIGhhdmUgYSBwcmUtZXhpc3RpbmcgcGFnZURpY3RcbiAgICAgICAgICAgIGlmIChfLmlzRXF1YWwodGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXksIHBhZ2VBcnJheSkpIHtcbiAgICAgICAgICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCBwYWdlIGNoYW5nZSBub3RpY2UgZm9yIGFwcCAnJHthcHBJZEtleX0nIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYGJ1dCB0aGUgbGlzdGluZyBoYXMgbm90IGNoYW5nZWQuIElnbm9yaW5nLmApO1xuICAgICAgICAgICAgICByZXR1cm4gZG9uZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBrZWVwIHRyYWNrIG9mIHRoZSBwYWdlIGRpY3Rpb25hcnlcbiAgICAgICAgdGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXkgPSBwYWdlQXJyYXk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGRvbmUoKTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh0aGlzLl9uYXZpZ2F0aW5nVG9QYWdlKSB7XG4gICAgLy8gaW4gdGhlIG1pZGRsZSBvZiBuYXZpZ2F0aW5nLCBzbyByZXBvcnRpbmcgYSBwYWdlIGNoYW5nZSB3aWxsIGNhdXNlIHByb2JsZW1zXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBQYWdlIGNoYW5nZWQ6ICR7c2ltcGxlU3RyaW5naWZ5KHBhZ2VEaWN0LCB0cnVlKX1gKTtcblxuICB0aGlzLmVtaXQoZXZlbnRzLkVWRU5UX1BBR0VfQ0hBTkdFLCB7XG4gICAgYXBwSWRLZXk6IGFwcElkS2V5LnJlcGxhY2UoJ1BJRDonLCAnJyksXG4gICAgcGFnZUFycmF5LFxuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gb25BcHBDb25uZWN0IChlcnIsIGRpY3QpIHtcbiAgY29uc3QgYXBwSWRLZXkgPSBkaWN0LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgbG9nLmRlYnVnKGBOb3RpZmllZCB0aGF0IG5ldyBhcHBsaWNhdGlvbiAnJHthcHBJZEtleX0nIGhhcyBjb25uZWN0ZWRgKTtcbiAgYXdhaXQgdGhpcy51c2VBcHBEaWN0TG9jaygoZG9uZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnVwZGF0ZUFwcHNXaXRoRGljdChkaWN0KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgZG9uZSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uQXBwRGlzY29ubmVjdCAoZXJyLCBkaWN0KSB7XG4gIGNvbnN0IGFwcElkS2V5ID0gZGljdC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gIGxvZy5kZWJ1ZyhgQXBwbGljYXRpb24gJyR7YXBwSWRLZXl9JyBkaXNjb25uZWN0ZWQuIFJlbW92aW5nIGZyb20gYXBwIGRpY3Rpb25hcnkuYCk7XG4gIGxvZy5kZWJ1ZyhgQ3VycmVudCBhcHAgaXMgJyR7dGhpcy5hcHBJZEtleX0nYCk7XG5cbiAgLy8gZ2V0IHJpZCBvZiB0aGUgZW50cnkgaW4gb3VyIGFwcCBkaWN0aW9uYXJ5LFxuICAvLyBzaW5jZSBpdCBpcyBubyBsb25nZXIgYXZhaWxhYmxlXG4gIGRlbGV0ZSB0aGlzLmFwcERpY3RbYXBwSWRLZXldO1xuXG4gIC8vIGlmIHRoZSBkaXNjb25uZWN0ZWQgYXBwIGlzIHRoZSBvbmUgd2UgYXJlIGNvbm5lY3RlZCB0bywgdHJ5IHRvIGZpbmQgYW5vdGhlclxuICBpZiAodGhpcy5hcHBJZEtleSA9PT0gYXBwSWRLZXkpIHtcbiAgICBsb2cuZGVidWcoYE5vIGxvbmdlciBoYXZlIGFwcCBpZC4gQXR0ZW1wdGluZyB0byBmaW5kIG5ldyBvbmUuYCk7XG4gICAgdGhpcy5hcHBJZEtleSA9IGdldERlYnVnZ2VyQXBwS2V5KHRoaXMuYnVuZGxlSWQsIHRoaXMuYXBwRGljdCk7XG4gIH1cblxuICBpZiAoIXRoaXMuYXBwRGljdCkge1xuICAgIC8vIHRoaXMgbWVhbnMgd2Ugbm8gbG9uZ2VyIGhhdmUgYW55IGFwcHMuIHdoYXQgdGhlIHdoYXQ/XG4gICAgbG9nLmRlYnVnKCdNYWluIGFwcCBkaXNjb25uZWN0ZWQuIERpc2Nvbm5lY3RpbmcgYWx0b2dldGhlci4nKTtcbiAgICB0aGlzLmNvbm5lY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdChldmVudHMuRVZFTlRfRElTQ09OTkVDVCwgdHJ1ZSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gb25BcHBVcGRhdGUgKGVyciwgZGljdCkge1xuICBhd2FpdCB0aGlzLnVzZUFwcERpY3RMb2NrKChkb25lKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudXBkYXRlQXBwc1dpdGhEaWN0KGRpY3QpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBkb25lKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gb25Db25uZWN0ZWREcml2ZXJMaXN0IChlcnIsIGRyaXZlcnMpIHtcbiAgdGhpcy5jb25uZWN0ZWREcml2ZXJzID0gZHJpdmVycy5XSVJEcml2ZXJEaWN0aW9uYXJ5S2V5O1xuICBsb2cuZGVidWcoYFJlY2VpdmVkIGNvbm5lY3RlZCBkcml2ZXIgbGlzdDogJHtKU09OLnN0cmluZ2lmeSh0aGlzLmNvbm5lY3RlZERyaXZlcnMpfWApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBvbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdCAoZXJyLCBhcHBzKSB7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgY29ubmVjdGVkIGFwcGxpY2F0aW9ucyBsaXN0OiAke18ua2V5cyhhcHBzKS5qb2luKCcsICcpfWApO1xuXG4gIC8vIHRyYW5zbGF0ZSB0aGUgcmVjZWl2ZWQgaW5mb3JtYXRpb24gaW50byBhbiBlYXNpZXItdG8tbWFuYWdlXG4gIC8vIGhhc2ggd2l0aCBhcHAgaWQgYXMga2V5LCBhbmQgYXBwIGluZm8gYXMgdmFsdWVcbiAgbGV0IG5ld0RpY3QgPSB7fTtcbiAgZm9yIChjb25zdCBkaWN0IG9mIF8udmFsdWVzKGFwcHMpKSB7XG4gICAgY29uc3QgW2lkLCBlbnRyeV0gPSBhcHBJbmZvRnJvbURpY3QoZGljdCk7XG4gICAgaWYgKHRoaXMuc2tpcHBlZEFwcHMuaW5jbHVkZXMoZW50cnkubmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBuZXdEaWN0W2lkXSA9IGVudHJ5O1xuICB9XG4gIC8vIHVwZGF0ZSB0aGUgb2JqZWN0J3MgbGlzdCBvZiBhcHBzXG4gIGF3YWl0IHRoaXMudXNlQXBwRGljdExvY2soKGRvbmUpID0+IHtcbiAgICB0cnkge1xuICAgICAgXy5kZWZhdWx0cyh0aGlzLmFwcERpY3QsIG5ld0RpY3QpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBkb25lKCk7XG4gICAgfVxuICB9KTtcbn1cblxuY29uc3QgbWVzc2FnZUhhbmRsZXJzID0ge1xuICBvblBhZ2VDaGFuZ2UsXG4gIG9uQXBwQ29ubmVjdCxcbiAgb25BcHBEaXNjb25uZWN0LFxuICBvbkFwcFVwZGF0ZSxcbiAgb25Db25uZWN0ZWREcml2ZXJMaXN0LFxuICBvbkNvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1lc3NhZ2VIYW5kbGVycztcbiJdLCJmaWxlIjoibGliL21peGlucy9tZXNzYWdlLWhhbmRsZXJzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
156
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9taXhpbnMvbWVzc2FnZS1oYW5kbGVycy5qcyJdLCJuYW1lcyI6WyJvblBhZ2VDaGFuZ2UiLCJlcnIiLCJhcHBJZEtleSIsInBhZ2VEaWN0IiwiXyIsImlzRW1wdHkiLCJwYWdlQXJyYXkiLCJ1c2VBcHBEaWN0TG9jayIsImRvbmUiLCJhcHBEaWN0IiwicmVzb2x2ZSIsImlzRXF1YWwiLCJsb2ciLCJkZWJ1ZyIsIl9uYXZpZ2F0aW5nVG9QYWdlIiwiZW1pdCIsImV2ZW50cyIsIkVWRU5UX1BBR0VfQ0hBTkdFIiwicmVwbGFjZSIsIm9uQXBwQ29ubmVjdCIsImRpY3QiLCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiLCJ1cGRhdGVBcHBzV2l0aERpY3QiLCJvbkFwcERpc2Nvbm5lY3QiLCJidW5kbGVJZCIsImNvbm5lY3RlZCIsIkVWRU5UX0RJU0NPTk5FQ1QiLCJvbkFwcFVwZGF0ZSIsIm9uQ29ubmVjdGVkRHJpdmVyTGlzdCIsImRyaXZlcnMiLCJjb25uZWN0ZWREcml2ZXJzIiwiV0lSRHJpdmVyRGljdGlvbmFyeUtleSIsIkpTT04iLCJzdHJpbmdpZnkiLCJvbkN1cnJlbnRTdGF0ZSIsInN0YXRlIiwiY3VycmVudFN0YXRlIiwiV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSIsIm9uQ29ubmVjdGVkQXBwbGljYXRpb25MaXN0IiwiYXBwcyIsImtleXMiLCJqb2luIiwibmV3RGljdCIsInZhbHVlcyIsImlkIiwiZW50cnkiLCJza2lwcGVkQXBwcyIsImluY2x1ZGVzIiwibmFtZSIsImRlZmF1bHRzIiwibWVzc2FnZUhhbmRsZXJzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQVFBLGVBQWVBLFlBQWYsQ0FBNkJDLEdBQTdCLEVBQWtDQyxRQUFsQyxFQUE0Q0MsUUFBNUMsRUFBc0Q7QUFDcEQsTUFBSUMsZ0JBQUVDLE9BQUYsQ0FBVUYsUUFBVixDQUFKLEVBQXlCO0FBQ3ZCO0FBQ0Q7O0FBRUQs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QUFXLEtBQUt4QyxPQUFoQixFQUF5QmlDLE9BQXpCO0FBQ0QsS0FGRCxTQUVVO0FBQ1JsQyxNQUFBQSxJQUFJO0FBQ0w7QUFDRixHQU5LLENBQU47QUFPRDs7QUFFRCxNQUFNMEMsZUFBZSxHQUFHO0FBQ3RCbEQsRUFBQUEsWUFEc0I7QUFFdEJtQixFQUFBQSxZQUZzQjtBQUd0QkksRUFBQUEsZUFIc0I7QUFJdEJJLEVBQUFBLFdBSnNCO0FBS3RCQyxFQUFBQSxxQkFMc0I7QUFNdEJNLEVBQUFBLGNBTnNCO0FBT3RCSSxFQUFBQTtBQVBzQixDQUF4QjtlQVVlWSxlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQgeyBwYWdlQXJyYXlGcm9tRGljdCwgZ2V0RGVidWdnZXJBcHBLZXksIHNpbXBsZVN0cmluZ2lmeSwgYXBwSW5mb0Zyb21EaWN0IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG4vKlxuICogR2VuZXJpYyBjYWxsYmFja3MgdXNlZCB0aHJvdWdob3V0IHRoZSBsaWZlY3ljbGUgb2YgdGhlIFJlbW90ZSBEZWJ1Z2dlci5cbiAqIFRoZXNlIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHByb3RvdHlwZS5cbiAqL1xuXG5hc3luYyBmdW5jdGlvbiBvblBhZ2VDaGFuZ2UgKGVyciwgYXBwSWRLZXksIHBhZ2VEaWN0KSB7XG4gIGlmIChfLmlzRW1wdHkocGFnZURpY3QpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGFnZUFycmF5ID0gcGFnZUFycmF5RnJvbURpY3QocGFnZURpY3QpO1xuXG4gIGF3YWl0IHRoaXMudXNlQXBwRGljdExvY2soKGRvbmUpID0+IHtcbiAgICB0cnkge1xuICAgICAgLy8gc2F2ZSB0aGUgcGFnZSBkaWN0IGZvciB0aGlzIGFwcFxuICAgICAgaWYgKHRoaXMuYXBwRGljdFthcHBJZEtleV0pIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwRGljdFthcHBJZEtleV0ucGFnZUFycmF5KSB7XG4gICAgICAgICAgaWYgKHRoaXMuYXBwRGljdFthcHBJZEtleV0ucGFnZUFycmF5LnJlc29sdmUpIHtcbiAgICAgICAgICAgIC8vIHBhZ2VEaWN0IGlzIGEgcGVuZGluZyBwcm9taXNlLCBzbyByZXNvbHZlXG4gICAgICAgICAgICB0aGlzLmFwcERpY3RbYXBwSWRLZXldLnBhZ2VBcnJheS5yZXNvbHZlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHdlIGhhdmUgYSBwcmUtZXhpc3RpbmcgcGFnZURpY3RcbiAgICAgICAgICAgIGlmIChfLmlzRXF1YWwodGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXksIHBhZ2VBcnJheSkpIHtcbiAgICAgICAgICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCBwYWdlIGNoYW5nZSBub3RpY2UgZm9yIGFwcCAnJHthcHBJZEtleX0nIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYGJ1dCB0aGUgbGlzdGluZyBoYXMgbm90IGNoYW5nZWQuIElnbm9yaW5nLmApO1xuICAgICAgICAgICAgICByZXR1cm4gZG9uZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBrZWVwIHRyYWNrIG9mIHRoZSBwYWdlIGRpY3Rpb25hcnlcbiAgICAgICAgdGhpcy5hcHBEaWN0W2FwcElkS2V5XS5wYWdlQXJyYXkgPSBwYWdlQXJyYXk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGRvbmUoKTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh0aGlzLl9uYXZpZ2F0aW5nVG9QYWdlKSB7XG4gICAgLy8gaW4gdGhlIG1pZGRsZSBvZiBuYXZpZ2F0aW5nLCBzbyByZXBvcnRpbmcgYSBwYWdlIGNoYW5nZSB3aWxsIGNhdXNlIHByb2JsZW1zXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBQYWdlIGNoYW5nZWQ6ICR7c2ltcGxlU3RyaW5naWZ5KHBhZ2VEaWN0LCB0cnVlKX1gKTtcblxuICB0aGlzLmVtaXQoZXZlbnRzLkVWRU5UX1BBR0VfQ0hBTkdFLCB7XG4gICAgYXBwSWRLZXk6IGFwcElkS2V5LnJlcGxhY2UoJ1BJRDonLCAnJyksXG4gICAgcGFnZUFycmF5LFxuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gb25BcHBDb25uZWN0IChlcnIsIGRpY3QpIHtcbiAgY29uc3QgYXBwSWRLZXkgPSBkaWN0LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgbG9nLmRlYnVnKGBOb3RpZmllZCB0aGF0IG5ldyBhcHBsaWNhdGlvbiAnJHthcHBJZEtleX0nIGhhcyBjb25uZWN0ZWRgKTtcbiAgYXdhaXQgdGhpcy51c2VBcHBEaWN0TG9jaygoZG9uZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnVwZGF0ZUFwcHNXaXRoRGljdChkaWN0KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgZG9uZSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uQXBwRGlzY29ubmVjdCAoZXJyLCBkaWN0KSB7XG4gIGNvbnN0IGFwcElkS2V5ID0gZGljdC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gIGxvZy5kZWJ1ZyhgQXBwbGljYXRpb24gJyR7YXBwSWRLZXl9JyBkaXNjb25uZWN0ZWQuIFJlbW92aW5nIGZyb20gYXBwIGRpY3Rpb25hcnkuYCk7XG4gIGxvZy5kZWJ1ZyhgQ3VycmVudCBhcHAgaXMgJyR7dGhpcy5hcHBJZEtleX0nYCk7XG5cbiAgLy8gZ2V0IHJpZCBvZiB0aGUgZW50cnkgaW4gb3VyIGFwcCBkaWN0aW9uYXJ5LFxuICAvLyBzaW5jZSBpdCBpcyBubyBsb25nZXIgYXZhaWxhYmxlXG4gIGRlbGV0ZSB0aGlzLmFwcERpY3RbYXBwSWRLZXldO1xuXG4gIC8vIGlmIHRoZSBkaXNjb25uZWN0ZWQgYXBwIGlzIHRoZSBvbmUgd2UgYXJlIGNvbm5lY3RlZCB0bywgdHJ5IHRvIGZpbmQgYW5vdGhlclxuICBpZiAodGhpcy5hcHBJZEtleSA9PT0gYXBwSWRLZXkpIHtcbiAgICBsb2cuZGVidWcoYE5vIGxvbmdlciBoYXZlIGFwcCBpZC4gQXR0ZW1wdGluZyB0byBmaW5kIG5ldyBvbmUuYCk7XG4gICAgdGhpcy5hcHBJZEtleSA9IGdldERlYnVnZ2VyQXBwS2V5KHRoaXMuYnVuZGxlSWQsIHRoaXMuYXBwRGljdCk7XG4gIH1cblxuICBpZiAoIXRoaXMuYXBwRGljdCkge1xuICAgIC8vIHRoaXMgbWVhbnMgd2Ugbm8gbG9uZ2VyIGhhdmUgYW55IGFwcHMuIHdoYXQgdGhlIHdoYXQ/XG4gICAgbG9nLmRlYnVnKCdNYWluIGFwcCBkaXNjb25uZWN0ZWQuIERpc2Nvbm5lY3RpbmcgYWx0b2dldGhlci4nKTtcbiAgICB0aGlzLmNvbm5lY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdChldmVudHMuRVZFTlRfRElTQ09OTkVDVCwgdHJ1ZSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gb25BcHBVcGRhdGUgKGVyciwgZGljdCkge1xuICBhd2FpdCB0aGlzLnVzZUFwcERpY3RMb2NrKChkb25lKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudXBkYXRlQXBwc1dpdGhEaWN0KGRpY3QpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBkb25lKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gb25Db25uZWN0ZWREcml2ZXJMaXN0IChlcnIsIGRyaXZlcnMpIHtcbiAgdGhpcy5jb25uZWN0ZWREcml2ZXJzID0gZHJpdmVycy5XSVJEcml2ZXJEaWN0aW9uYXJ5S2V5O1xuICBsb2cuZGVidWcoYFJlY2VpdmVkIGNvbm5lY3RlZCBkcml2ZXIgbGlzdDogJHtKU09OLnN0cmluZ2lmeSh0aGlzLmNvbm5lY3RlZERyaXZlcnMpfWApO1xufVxuXG5mdW5jdGlvbiBvbkN1cnJlbnRTdGF0ZSAoZXJyLCBzdGF0ZSkge1xuICB0aGlzLmN1cnJlbnRTdGF0ZSA9IHN0YXRlLldJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXk7XG4gIC8vIFRoaXMgc3RhdGUgY2hhbmdlcyB3aGVuICdSZW1vdGUgQXV0b21hdGlvbicgaW4gJ1NldHRpbmdzIGFwcCcgPiAnU2FmYXJpJyA+ICdBZHZhbmNlZCcgPiAnUmVtb3RlIEF1dG9tYXRpb24nIGNoYW5nZXNcbiAgLy8gV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUF2YWlsYWJsZSBvciBXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5Tm90QXZhaWxhYmxlXG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgY29ubmVjdGVkIGF1dG9tYXRpb24gYXZhaWxhYmlsaXR5IHN0YXRlOiAke0pTT04uc3RyaW5naWZ5KHRoaXMuY3VycmVudFN0YXRlKX1gKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gb25Db25uZWN0ZWRBcHBsaWNhdGlvbkxpc3QgKGVyciwgYXBwcykge1xuICBsb2cuZGVidWcoYFJlY2VpdmVkIGNvbm5lY3RlZCBhcHBsaWNhdGlvbnMgbGlzdDogJHtfLmtleXMoYXBwcykuam9pbignLCAnKX1gKTtcblxuICAvLyB0cmFuc2xhdGUgdGhlIHJlY2VpdmVkIGluZm9ybWF0aW9uIGludG8gYW4gZWFzaWVyLXRvLW1hbmFnZVxuICAvLyBoYXNoIHdpdGggYXBwIGlkIGFzIGtleSwgYW5kIGFwcCBpbmZvIGFzIHZhbHVlXG4gIGxldCBuZXdEaWN0ID0ge307XG4gIGZvciAoY29uc3QgZGljdCBvZiBfLnZhbHVlcyhhcHBzKSkge1xuICAgIGNvbnN0IFtpZCwgZW50cnldID0gYXBwSW5mb0Zyb21EaWN0KGRpY3QpO1xuICAgIGlmICh0aGlzLnNraXBwZWRBcHBzLmluY2x1ZGVzKGVudHJ5Lm5hbWUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgbmV3RGljdFtpZF0gPSBlbnRyeTtcbiAgfVxuICAvLyB1cGRhdGUgdGhlIG9iamVjdCdzIGxpc3Qgb2YgYXBwc1xuICBhd2FpdCB0aGlzLnVzZUFwcERpY3RMb2NrKChkb25lKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIF8uZGVmYXVsdHModGhpcy5hcHBEaWN0LCBuZXdEaWN0KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgZG9uZSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbmNvbnN0IG1lc3NhZ2VIYW5kbGVycyA9IHtcbiAgb25QYWdlQ2hhbmdlLFxuICBvbkFwcENvbm5lY3QsXG4gIG9uQXBwRGlzY29ubmVjdCxcbiAgb25BcHBVcGRhdGUsXG4gIG9uQ29ubmVjdGVkRHJpdmVyTGlzdCxcbiAgb25DdXJyZW50U3RhdGUsXG4gIG9uQ29ubmVjdGVkQXBwbGljYXRpb25MaXN0LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgbWVzc2FnZUhhbmRsZXJzO1xuIl0sImZpbGUiOiJsaWIvbWl4aW5zL21lc3NhZ2UtaGFuZGxlcnMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -32,6 +32,7 @@ class RemoteDebuggerRealDevice extends _remoteDebugger.default {
32
32
  logAllCommunication: this.logAllCommunication,
33
33
  logAllCommunicationHexDump: this.logAllCommunicationHexDump,
34
34
  socketChunkSize: this.socketChunkSize,
35
+ webInspectorMaxFrameLength: this.webInspectorMaxFrameLength,
35
36
  udid: this.udid
36
37
  });
37
38
  }
@@ -41,4 +42,4 @@ class RemoteDebuggerRealDevice extends _remoteDebugger.default {
41
42
  exports.default = RemoteDebuggerRealDevice;require('source-map-support').install();
42
43
 
43
44
 
44
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9yZW1vdGUtZGVidWdnZXItcmVhbC1kZXZpY2UuanMiXSwibmFtZXMiOlsiUmVtb3RlRGVidWdnZXJSZWFsRGV2aWNlIiwiUmVtb3RlRGVidWdnZXIiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJ1ZGlkIiwiX3NraXBwZWRBcHBzIiwiaW5pdFJwY0NsaWVudCIsInJwY0NsaWVudCIsIlJwY0NsaWVudFJlYWxEZXZpY2UiLCJidW5kbGVJZCIsInBsYXRmb3JtVmVyc2lvbiIsImlzU2FmYXJpIiwiaG9zdCIsInBvcnQiLCJzb2NrZXRQYXRoIiwibWVzc2FnZVByb3h5IiwicmVtb3RlRGVidWdQcm94eSIsImxvZ0FsbENvbW11bmljYXRpb24iLCJsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCIsInNvY2tldENodW5rU2l6ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHZSxNQUFNQSx3QkFBTixTQUF1Q0MsdUJBQXZDLENBQXNEO0FBQ25FQyxFQUFBQSxXQUFXLENBQUVDLElBQUksR0FBRyxFQUFULEVBQWE7QUFDdEIsVUFBTUEsSUFBTjtBQUVBLFNBQUtDLElBQUwsR0FBWUQsSUFBSSxDQUFDQyxJQUFqQjtBQUVBLFNBQUtDLFlBQUwsR0FBb0IsQ0FBQyxXQUFELENBQXBCO0FBQ0Q7O0FBRURDLEVBQUFBLGFBQWEsR0FBSTtBQUNmLFNBQUtDLFNBQUwsR0FBaUIsSUFBSUMsd0JBQUosQ0FBd0I7QUFDdkNDLE1BQUFBLFFBQVEsRUFBRSxLQUFLQSxRQUR3QjtBQUV2Q0MsTUFBQUEsZUFBZSxFQUFFLEtBQUtBLGVBRmlCO0FBR3ZDQyxNQUFBQSxRQUFRLEVBQUUsS0FBS0EsUUFId0I7QUFJdkNDLE1BQUFBLElBQUksRUFBRSxLQUFLQSxJQUo0QjtBQUt2Q0MsTUFBQUEsSUFBSSxFQUFFLEtBQUtBLElBTDRCO0FBTXZDQyxNQUFBQSxVQUFVLEVBQUUsS0FBS0EsVUFOc0I7QUFPdkNDLE1BQUFBLFlBQVksRUFBRSxLQUFLQyxnQkFQb0I7QUFRdkNDLE1BQUFBLG1CQUFtQixFQUFFLEtBQUtBLG1CQVJhO0FBU3ZDQyxNQUFBQSwwQkFBMEIsRUFBRSxLQUFLQSwwQkFUTTtBQVV2Q0MsTUFBQUEsZUFBZSxFQUFFLEtBQUtBLGVBVmlCO0FBV3ZDZixNQUFBQSxJQUFJLEVBQUUsS0FBS0E7QUFYNEIsS0FBeEIsQ0FBakI7QUFhRDs7QUF2QmtFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlbW90ZURlYnVnZ2VyIGZyb20gJy4vcmVtb3RlLWRlYnVnZ2VyJztcbmltcG9ydCB7IFJwY0NsaWVudFJlYWxEZXZpY2UgfSBmcm9tICcuL3JwYyc7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVtb3RlRGVidWdnZXJSZWFsRGV2aWNlIGV4dGVuZHMgUmVtb3RlRGVidWdnZXIge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG5cbiAgICB0aGlzLnVkaWQgPSBvcHRzLnVkaWQ7XG5cbiAgICB0aGlzLl9za2lwcGVkQXBwcyA9IFsnbG9ja2Rvd25kJ107XG4gIH1cblxuICBpbml0UnBjQ2xpZW50ICgpIHtcbiAgICB0aGlzLnJwY0NsaWVudCA9IG5ldyBScGNDbGllbnRSZWFsRGV2aWNlKHtcbiAgICAgIGJ1bmRsZUlkOiB0aGlzLmJ1bmRsZUlkLFxuICAgICAgcGxhdGZvcm1WZXJzaW9uOiB0aGlzLnBsYXRmb3JtVmVyc2lvbixcbiAgICAgIGlzU2FmYXJpOiB0aGlzLmlzU2FmYXJpLFxuICAgICAgaG9zdDogdGhpcy5ob3N0LFxuICAgICAgcG9ydDogdGhpcy5wb3J0LFxuICAgICAgc29ja2V0UGF0aDogdGhpcy5zb2NrZXRQYXRoLFxuICAgICAgbWVzc2FnZVByb3h5OiB0aGlzLnJlbW90ZURlYnVnUHJveHksXG4gICAgICBsb2dBbGxDb21tdW5pY2F0aW9uOiB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24sXG4gICAgICBsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcDogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCxcbiAgICAgIHNvY2tldENodW5rU2l6ZTogdGhpcy5zb2NrZXRDaHVua1NpemUsXG4gICAgICB1ZGlkOiB0aGlzLnVkaWRcbiAgICB9KTtcbiAgfVxufVxuIl0sImZpbGUiOiJsaWIvcmVtb3RlLWRlYnVnZ2VyLXJlYWwtZGV2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
45
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9yZW1vdGUtZGVidWdnZXItcmVhbC1kZXZpY2UuanMiXSwibmFtZXMiOlsiUmVtb3RlRGVidWdnZXJSZWFsRGV2aWNlIiwiUmVtb3RlRGVidWdnZXIiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJ1ZGlkIiwiX3NraXBwZWRBcHBzIiwiaW5pdFJwY0NsaWVudCIsInJwY0NsaWVudCIsIlJwY0NsaWVudFJlYWxEZXZpY2UiLCJidW5kbGVJZCIsInBsYXRmb3JtVmVyc2lvbiIsImlzU2FmYXJpIiwiaG9zdCIsInBvcnQiLCJzb2NrZXRQYXRoIiwibWVzc2FnZVByb3h5IiwicmVtb3RlRGVidWdQcm94eSIsImxvZ0FsbENvbW11bmljYXRpb24iLCJsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCIsInNvY2tldENodW5rU2l6ZSIsIndlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdlLE1BQU1BLHdCQUFOLFNBQXVDQyx1QkFBdkMsQ0FBc0Q7QUFDbkVDLEVBQUFBLFdBQVcsQ0FBRUMsSUFBSSxHQUFHLEVBQVQsRUFBYTtBQUN0QixVQUFNQSxJQUFOO0FBRUEsU0FBS0MsSUFBTCxHQUFZRCxJQUFJLENBQUNDLElBQWpCO0FBRUEsU0FBS0MsWUFBTCxHQUFvQixDQUFDLFdBQUQsQ0FBcEI7QUFDRDs7QUFFREMsRUFBQUEsYUFBYSxHQUFJO0FBQ2YsU0FBS0MsU0FBTCxHQUFpQixJQUFJQyx3QkFBSixDQUF3QjtBQUN2Q0MsTUFBQUEsUUFBUSxFQUFFLEtBQUtBLFFBRHdCO0FBRXZDQyxNQUFBQSxlQUFlLEVBQUUsS0FBS0EsZUFGaUI7QUFHdkNDLE1BQUFBLFFBQVEsRUFBRSxLQUFLQSxRQUh3QjtBQUl2Q0MsTUFBQUEsSUFBSSxFQUFFLEtBQUtBLElBSjRCO0FBS3ZDQyxNQUFBQSxJQUFJLEVBQUUsS0FBS0EsSUFMNEI7QUFNdkNDLE1BQUFBLFVBQVUsRUFBRSxLQUFLQSxVQU5zQjtBQU92Q0MsTUFBQUEsWUFBWSxFQUFFLEtBQUtDLGdCQVBvQjtBQVF2Q0MsTUFBQUEsbUJBQW1CLEVBQUUsS0FBS0EsbUJBUmE7QUFTdkNDLE1BQUFBLDBCQUEwQixFQUFFLEtBQUtBLDBCQVRNO0FBVXZDQyxNQUFBQSxlQUFlLEVBQUUsS0FBS0EsZUFWaUI7QUFXdkNDLE1BQUFBLDBCQUEwQixFQUFFLEtBQUtBLDBCQVhNO0FBWXZDaEIsTUFBQUEsSUFBSSxFQUFFLEtBQUtBO0FBWjRCLEtBQXhCLENBQWpCO0FBY0Q7O0FBeEJrRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZW1vdGVEZWJ1Z2dlciBmcm9tICcuL3JlbW90ZS1kZWJ1Z2dlcic7XG5pbXBvcnQgeyBScGNDbGllbnRSZWFsRGV2aWNlIH0gZnJvbSAnLi9ycGMnO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlbW90ZURlYnVnZ2VyUmVhbERldmljZSBleHRlbmRzIFJlbW90ZURlYnVnZ2VyIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuXG4gICAgdGhpcy51ZGlkID0gb3B0cy51ZGlkO1xuXG4gICAgdGhpcy5fc2tpcHBlZEFwcHMgPSBbJ2xvY2tkb3duZCddO1xuICB9XG5cbiAgaW5pdFJwY0NsaWVudCAoKSB7XG4gICAgdGhpcy5ycGNDbGllbnQgPSBuZXcgUnBjQ2xpZW50UmVhbERldmljZSh7XG4gICAgICBidW5kbGVJZDogdGhpcy5idW5kbGVJZCxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbjogdGhpcy5wbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NhZmFyaTogdGhpcy5pc1NhZmFyaSxcbiAgICAgIGhvc3Q6IHRoaXMuaG9zdCxcbiAgICAgIHBvcnQ6IHRoaXMucG9ydCxcbiAgICAgIHNvY2tldFBhdGg6IHRoaXMuc29ja2V0UGF0aCxcbiAgICAgIG1lc3NhZ2VQcm94eTogdGhpcy5yZW1vdGVEZWJ1Z1Byb3h5LFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbjogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXA6IHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAsXG4gICAgICBzb2NrZXRDaHVua1NpemU6IHRoaXMuc29ja2V0Q2h1bmtTaXplLFxuICAgICAgd2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGg6IHRoaXMud2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgsXG4gICAgICB1ZGlkOiB0aGlzLnVkaWRcbiAgICB9KTtcbiAgfVxufVxuIl0sImZpbGUiOiJsaWIvcmVtb3RlLWRlYnVnZ2VyLXJlYWwtZGV2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
@@ -66,6 +66,7 @@ class RemoteDebugger extends _events.EventEmitter {
66
66
  logFullResponse = false,
67
67
  logAllCommunication = false,
68
68
  logAllCommunicationHexDump = false,
69
+ webInspectorMaxFrameLength,
69
70
  socketChunkSize,
70
71
  fullPageInitialization
71
72
  } = opts;
@@ -88,6 +89,11 @@ class RemoteDebugger extends _events.EventEmitter {
88
89
  this.logAllCommunication = _lodash.default.isNil(logAllCommunication) ? !!logFullResponse : !!logAllCommunication;
89
90
  this.logAllCommunicationHexDump = logAllCommunicationHexDump;
90
91
  this.socketChunkSize = socketChunkSize;
92
+
93
+ if (_lodash.default.isInteger(webInspectorMaxFrameLength)) {
94
+ this.webInspectorMaxFrameLength = webInspectorMaxFrameLength;
95
+ }
96
+
91
97
  this.fullPageInitialization = fullPageInitialization;
92
98
  this._lock = new _asyncLock.default();
93
99
  }
@@ -126,7 +132,8 @@ class RemoteDebugger extends _events.EventEmitter {
126
132
  messageProxy: this.remoteDebugProxy,
127
133
  logAllCommunication: this.logAllCommunication,
128
134
  logAllCommunicationHexDump: this.logAllCommunicationHexDump,
129
- fullPageInitialization: this.fullPageInitialization
135
+ fullPageInitialization: this.fullPageInitialization,
136
+ webInspectorMaxFrameLength: this.webInspectorMaxFrameLength
130
137
  });
131
138
  }
132
139
 
@@ -282,4 +289,4 @@ var _default = RemoteDebugger;
282
289
  exports.default = _default;require('source-map-support').install();
283
290
 
284
291
 
285
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9yZW1vdGUtZGVidWdnZXIuanMiXSwibmFtZXMiOlsiVkVSU0lPTiIsInJlcXVpcmUiLCJwYXRoIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsInZlcnNpb24iLCJpZ24iLCJSRU1PVEVfREVCVUdHRVJfUE9SVCIsIlNBRkFSSV9CVU5ETEVfSUQiLCJSUENfUkVTUE9OU0VfVElNRU9VVF9NUyIsIlBBR0VfUkVBRFlfVElNRU9VVCIsIkdBUkJBR0VfQ09MTEVDVF9USU1FT1VUIiwiUmVtb3RlRGVidWdnZXIiLCJFdmVudEVtaXR0ZXIiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJsb2ciLCJpbmZvIiwiYnVuZGxlSWQiLCJhZGRpdGlvbmFsQnVuZGxlSWRzIiwicGxhdGZvcm1WZXJzaW9uIiwiaXNTYWZhcmkiLCJpbmNsdWRlU2FmYXJpIiwidXNlTmV3U2FmYXJpIiwicGFnZUxvYWRNcyIsImhvc3QiLCJwb3J0Iiwic29ja2V0UGF0aCIsInBhZ2VSZWFkeVRpbWVvdXQiLCJyZW1vdGVEZWJ1Z1Byb3h5IiwiZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUiLCJsb2dGdWxsUmVzcG9uc2UiLCJsb2dBbGxDb21tdW5pY2F0aW9uIiwibG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAiLCJzb2NrZXRDaHVua1NpemUiLCJmdWxsUGFnZUluaXRpYWxpemF0aW9uIiwiZGVidWciLCJfIiwiaXNOaWwiLCJfbG9jayIsIkFzeW5jTG9jayIsInNldHVwIiwiYXBwRGljdCIsImFwcElkS2V5IiwicGFnZUlkS2V5IiwicGFnZUxvYWRpbmciLCJfbmF2aWdhdGluZ1RvUGFnZSIsImFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQiLCJycGNDbGllbnQiLCJfY2xpZW50RXZlbnRMaXN0ZW5lcnMiLCJ0ZWFyZG93biIsInJlbW92ZUFsbExpc3RlbmVycyIsIkVWRU5UX1BBR0VfQ0hBTkdFIiwiRVZFTlRfRElTQ09OTkVDVCIsImluaXRScGNDbGllbnQiLCJScGNDbGllbnRTaW11bGF0b3IiLCJtZXNzYWdlUHJveHkiLCJpc0Nvbm5lY3RlZCIsImxhdW5jaFNhZmFyaSIsInNlbmQiLCJzdGFydFRpbWVsaW5lIiwiZm4iLCJvbiIsInN0b3BUaW1lbGluZSIsImFkZENsaWVudEV2ZW50TGlzdGVuZXIiLCJldmVudE5hbWUiLCJsaXN0ZW5lciIsInB1c2giLCJyZW1vdmVDbGllbnRFdmVudExpc3RlbmVyIiwib2ZmIiwic3RhcnRDb25zb2xlIiwic3RvcENvbnNvbGUiLCJzdGFydE5ldHdvcmsiLCJzdG9wTmV0d29yayIsImFsbG93IiwiX2FsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQiLCJnZXRDb29raWVzIiwidXJscyIsImRlbGV0ZUNvb2tpZSIsImNvb2tpZU5hbWUiLCJ1cmwiLCJnYXJiYWdlQ29sbGVjdCIsInRpbWVvdXRNcyIsImVyciIsIkIiLCJ0aW1lb3V0IiwidGhlbiIsImdjU3VjY2VzcyIsImNhdGNoIiwiZ2NFcnJvciIsIlRpbWVvdXRFcnJvciIsIm1lc3NhZ2UiLCJ1c2VBcHBEaWN0TG9jayIsImFjcXVpcmUiLCJza2lwcGVkQXBwcyIsIl9za2lwcGVkQXBwcyIsIm5hbWUiLCJ0b1BhaXJzIiwibWl4aW5zIiwicHJvdG90eXBlIiwiZXZlbnQiLCJldmVudHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsSUFBSUEsT0FBSjs7QUFDQSxJQUFJO0FBQ0ZBLEVBQUFBLE9BQU8sR0FBR0MsT0FBTyxDQUFDQyxjQUFLQyxPQUFMLENBQWFDLFNBQWIsRUFBd0IsSUFBeEIsRUFBOEIsSUFBOUIsRUFBb0MsY0FBcEMsQ0FBRCxDQUFQLENBQTZEQyxPQUF2RTtBQUNELENBRkQsQ0FFRSxPQUFPQyxHQUFQLEVBQVksQ0FBRTs7QUFFaEIsTUFBTUMsb0JBQW9CLEdBQUcsS0FBN0I7O0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsd0JBQXpCO0FBR0EsTUFBTUMsdUJBQXVCLEdBQUcs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QUE5QixDQUFiO0FBQ0Q7O0FBRUQsTUFBSWlDLFdBQUosR0FBbUI7QUFDakIsV0FBTyxLQUFLQyxZQUFMLElBQXFCLEVBQTVCO0FBQ0Q7O0FBeE91Qzs7OztBQTJPMUMsS0FBSyxNQUFNLENBQUNDLElBQUQsRUFBT25DLEVBQVAsQ0FBWCxJQUF5QnhCLGdCQUFFNEQsT0FBRixDQUFVQyxjQUFWLENBQXpCLEVBQTRDO0FBQzFDdEYsRUFBQUEsY0FBYyxDQUFDdUYsU0FBZixDQUF5QkgsSUFBekIsSUFBaUNuQyxFQUFqQztBQUNEOztBQUVELEtBQUssTUFBTSxDQUFDbUMsSUFBRCxFQUFPSSxLQUFQLENBQVgsSUFBNEIvRCxnQkFBRTRELE9BQUYsQ0FBVUksY0FBVixDQUE1QixFQUErQztBQUM3Q3pGLEVBQUFBLGNBQWMsQ0FBQ29GLElBQUQsQ0FBZCxHQUF1QkksS0FBdkI7QUFDRDs7ZUFFY3hGLGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBScGNDbGllbnRTaW11bGF0b3IgfSBmcm9tICcuL3JwYyc7XG5pbXBvcnQgeyBjaGVja1BhcmFtcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgbWl4aW5zLCBldmVudHMgfSBmcm9tICcuL21peGlucyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgQXN5bmNMb2NrIGZyb20gJ2FzeW5jLWxvY2snO1xuXG5cbmxldCBWRVJTSU9OO1xudHJ5IHtcbiAgVkVSU0lPTiA9IHJlcXVpcmUocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ3BhY2thZ2UuanNvbicpKS52ZXJzaW9uO1xufSBjYXRjaCAoaWduKSB7fVxuXG5jb25zdCBSRU1PVEVfREVCVUdHRVJfUE9SVCA9IDI3NzUzO1xuY29uc3QgU0FGQVJJX0JVTkRMRV9JRCA9ICdjb20uYXBwbGUubW9iaWxlc2FmYXJpJztcblxuLyogSG93IG1hbnkgbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIHdlYmtpdCB0byByZXR1cm4gYSByZXNwb25zZSBiZWZvcmUgdGltaW5nIG91dCAqL1xuY29uc3QgUlBDX1JFU1BPTlNFX1RJTUVPVVRfTVMgPSA1MDAwO1xuXG5jb25zdCBQQUdFX1JFQURZX1RJTUVPVVQgPSA1MDAwO1xuXG5jb25zdCBHQVJCQUdFX0NPTExFQ1RfVElNRU9VVCA9IDUwMDA7XG5cblxuY2xhc3MgUmVtb3RlRGVidWdnZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICAvKlxuICAgKiBUaGUgY29uc3RydWN0b3IgdGFrZXMgYW4gb3B0cyBoYXNoIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKiAgIC0gYnVuZGxlSWQgLSBpZCBvZiB0aGUgYXBwIGJlaW5nIGNvbm5lY3RlZCB0b1xuICAgKiAgIC0gYWRkaXRpb25hbEJ1bmRsZUlkcyAtIGFycmF5IG9mIHBvc3NpYmxlIGJ1bmRsZSBpZHMgdGhhdCB0aGUgaW5zcGVjdG9yXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bGQgcmV0dXJuXG4gICAqICAgLSBwbGF0Zm9ybVZlcnNpb24gLSB2ZXJzaW9uIG9mIGlPU1xuICAgKiAgIC0gdXNlTmV3U2FmYXJpIC0gZm9yIHdlYiBpbnNwZWN0b3IsIHdoZXRoZXIgdGhpcyBpcyBhIG5ldyBTYWZhcmkgaW5zdGFuY2VcbiAgICogICAtIHBhZ2VMb2FkTXMgLSB0aGUgdGltZSwgaW4gbXMsIHRoYXQgc2hvdWxkIGJlIHdhaXRlZCBmb3IgcGFnZSBsb2FkaW5nXG4gICAqICAgLSBob3N0IC0gdGhlIHJlbW90ZSBkZWJ1Z2dlcidzIGhvc3QgYWRkcmVzc1xuICAgKiAgIC0gcG9ydCAtIHRoZSByZW1vdGUgZGVidWdnZXIgcG9ydCB0aHJvdWdoIHdoaWNoIHRvIGNvbW11bmljYXRlXG4gICAqICAgLSBsb2dBbGxDb21tdW5pY2F0aW9uIC0gbG9nIHBsaXN0cyBzZW50IGFuZCByZWNlaXZlZCBmcm9tIFdlYiBJbnNwZWN0b3JcbiAgICogICAtIGxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wIC0gbG9nIGNvbW11bmljYXRpb24gZnJvbSBXZWIgSW5zcGVjdG9yIGFzIGhleCBkdW1wXG4gICAqICAgLSBzb2NrZXRDaHVua1NpemUgLSBzaXplLCBpbiBieXRlcywgb2YgY2h1bmtzIG9mIGRhdGEgc2VudCB0byBXZWIgSW5zcGVjdG9yIChyZWFsIGRldmljZSBvbmx5KVxuICAgKi9cbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAoVkVSU0lPTikge1xuICAgICAgbG9nLmluZm8oYFJlbW90ZSBEZWJ1Z2dlciB2ZXJzaW9uICR7VkVSU0lPTn1gKTtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBidW5kbGVJZCxcbiAgICAgIGFkZGl0aW9uYWxCdW5kbGVJZHMgPSBbXSxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbixcbiAgICAgIGlzU2FmYXJpID0gdHJ1ZSxcbiAgICAgIGluY2x1ZGVTYWZhcmkgPSBmYWxzZSxcbiAgICAgIHVzZU5ld1NhZmFyaSA9IGZhbHNlLFxuICAgICAgcGFnZUxvYWRNcyxcbiAgICAgIGhvc3QsXG4gICAgICBwb3J0ID0gUkVNT1RFX0RFQlVHR0VSX1BPUlQsXG4gICAgICBzb2NrZXRQYXRoLFxuICAgICAgcGFnZVJlYWR5VGltZW91dCA9IFBBR0VfUkVBRFlfVElNRU9VVCxcbiAgICAgIHJlbW90ZURlYnVnUHJveHksXG4gICAgICBnYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSA9IGZhbHNlLFxuICAgICAgbG9nRnVsbFJlc3BvbnNlID0gZmFsc2UsXG4gICAgICBsb2dBbGxDb21tdW5pY2F0aW9uID0gZmFsc2UsXG4gICAgICBsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCA9IGZhbHNlLFxuICAgICAgc29ja2V0Q2h1bmtTaXplLFxuICAgICAgZnVsbFBhZ2VJbml0aWFsaXphdGlvbixcbiAgICB9ID0gb3B0cztcblxuICAgIHRoaXMuYnVuZGxlSWQgPSBidW5kbGVJZDtcbiAgICB0aGlzLmFkZGl0aW9uYWxCdW5kbGVJZHMgPSBhZGRpdGlvbmFsQnVuZGxlSWRzO1xuICAgIHRoaXMucGxhdGZvcm1WZXJzaW9uID0gcGxhdGZvcm1WZXJzaW9uO1xuICAgIHRoaXMuaXNTYWZhcmkgPSBpc1NhZmFyaTtcbiAgICB0aGlzLmluY2x1ZGVTYWZhcmkgPSBpbmNsdWRlU2FmYXJpO1xuICAgIHRoaXMudXNlTmV3U2FmYXJpID0gdXNlTmV3U2FmYXJpO1xuICAgIHRoaXMucGFnZUxvYWRNcyA9IHBhZ2VMb2FkTXM7XG4gICAgbG9nLmRlYnVnKGB1c2VOZXdTYWZhcmkgLS0+ICR7dGhpcy51c2VOZXdTYWZhcml9YCk7XG5cbiAgICB0aGlzLmdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlID0gZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGU7XG5cbiAgICB0aGlzLmhvc3QgPSBob3N0O1xuICAgIHRoaXMucG9ydCA9IHBvcnQ7XG4gICAgdGhpcy5zb2NrZXRQYXRoID0gc29ja2V0UGF0aDtcbiAgICB0aGlzLnJlbW90ZURlYnVnUHJveHkgPSByZW1vdGVEZWJ1Z1Byb3h5O1xuICAgIHRoaXMucGFnZVJlYWR5VGltZW91dCA9IHBhZ2VSZWFkeVRpbWVvdXQ7XG5cbiAgICB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24gPSBfLmlzTmlsKGxvZ0FsbENvbW11bmljYXRpb24pID8gISFsb2dGdWxsUmVzcG9uc2UgOiAhIWxvZ0FsbENvbW11bmljYXRpb247XG4gICAgdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCA9IGxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wO1xuICAgIHRoaXMuc29ja2V0Q2h1bmtTaXplID0gc29ja2V0Q2h1bmtTaXplO1xuXG4gICAgdGhpcy5mdWxsUGFnZUluaXRpYWxpemF0aW9uID0gZnVsbFBhZ2VJbml0aWFsaXphdGlvbjtcblxuICAgIHRoaXMuX2xvY2sgPSBuZXcgQXN5bmNMb2NrKCk7XG4gIH1cblxuICBzZXR1cCAoKSB7XG4gICAgLy8gYXBwIGhhbmRsaW5nIGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLmFwcERpY3QgPSB7fTtcbiAgICB0aGlzLmFwcElkS2V5ID0gbnVsbDtcbiAgICB0aGlzLnBhZ2VJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX25hdmlnYXRpbmdUb1BhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLmFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgPSBmYWxzZTtcblxuICAgIHRoaXMucnBjQ2xpZW50ID0gbnVsbDtcbiAgICB0aGlzLl9jbGllbnRFdmVudExpc3RlbmVycyA9IHt9O1xuICB9XG5cbiAgdGVhcmRvd24gKCkge1xuICAgIGxvZy5kZWJ1ZygnQ2xlYW5pbmcgdXAgbGlzdGVuZXJzJyk7XG5cbiAgICB0aGlzLmFwcERpY3QgPSB7fTtcbiAgICB0aGlzLmFwcElkS2V5ID0gbnVsbDtcbiAgICB0aGlzLnBhZ2VJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy5ycGNDbGllbnQgPSBudWxsO1xuXG4gICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoUmVtb3RlRGVidWdnZXIuRVZFTlRfUEFHRV9DSEFOR0UpO1xuICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFJlbW90ZURlYnVnZ2VyLkVWRU5UX0RJU0NPTk5FQ1QpO1xuICB9XG5cbiAgaW5pdFJwY0NsaWVudCAoKSB7XG4gICAgdGhpcy5ycGNDbGllbnQgPSBuZXcgUnBjQ2xpZW50U2ltdWxhdG9yKHtcbiAgICAgIGJ1bmRsZUlkOiB0aGlzLmJ1bmRsZUlkLFxuICAgICAgcGxhdGZvcm1WZXJzaW9uOiB0aGlzLnBsYXRmb3JtVmVyc2lvbixcbiAgICAgIGlzU2FmYXJpOiB0aGlzLmlzU2FmYXJpLFxuICAgICAgaG9zdDogdGhpcy5ob3N0LFxuICAgICAgcG9ydDogdGhpcy5wb3J0LFxuICAgICAgc29ja2V0UGF0aDogdGhpcy5zb2NrZXRQYXRoLFxuICAgICAgbWVzc2FnZVByb3h5OiB0aGlzLnJlbW90ZURlYnVnUHJveHksXG4gICAgICBsb2dBbGxDb21tdW5pY2F0aW9uOiB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24sXG4gICAgICBsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcDogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCxcbiAgICAgIGZ1bGxQYWdlSW5pdGlhbGl6YXRpb246IHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBpc0Nvbm5lY3RlZCAoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5ycGNDbGllbnQ/LmlzQ29ubmVjdGVkO1xuICB9XG5cbiAgYXN5bmMgbGF1bmNoU2FmYXJpICgpIHtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdsYXVuY2hBcHBsaWNhdGlvbicsIHtcbiAgICAgIGJ1bmRsZUlkOiBTQUZBUklfQlVORExFX0lEXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdGFydFRpbWVsaW5lIChmbikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gcmVjb3JkIHRoZSB0aW1lbGluZScpO1xuICAgIHRoaXMucnBjQ2xpZW50Lm9uKCdUaW1lbGluZS5ldmVudFJlY29yZGVkJywgZm4pO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdzdGFydFRpbWVsaW5lJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc3RvcFRpbWVsaW5lICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRvIHJlY29yZCB0aGUgdGltZWxpbmUnKTtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdUaW1lbGluZS5zdG9wJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIH0pO1xuICB9XG5cbiAgLypcbiAgICogS2VlcCB0cmFjayBvZiB0aGUgY2xpZW50IGV2ZW50IGxpc3RlbmVycyBzbyB0aGV5IGNhbiBiZSByZW1vdmVkXG4gICAqL1xuICBhZGRDbGllbnRFdmVudExpc3RlbmVyIChldmVudE5hbWUsIGxpc3RlbmVyKSB7XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSA9IHRoaXMuX2NsaWVudEV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gfHwgW107XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXS5wdXNoKGxpc3RlbmVyKTtcbiAgICB0aGlzLnJwY0NsaWVudC5vbihldmVudE5hbWUsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIgKGV2ZW50TmFtZSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgKHRoaXMuX2NsaWVudEV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gfHwgW10pKSB7XG4gICAgICB0aGlzLnJwY0NsaWVudC5vZmYoZXZlbnROYW1lLCBsaXN0ZW5lcik7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRDb25zb2xlIChsaXN0ZW5lcikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gbGlzdGVuIGZvciBKYXZhU2NyaXB0IGNvbnNvbGUnKTtcbiAgICB0aGlzLmFkZENsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZUFkZGVkJywgbGlzdGVuZXIpO1xuICAgIHRoaXMuYWRkQ2xpZW50RXZlbnRMaXN0ZW5lcignQ29uc29sZS5tZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkJywgbGlzdGVuZXIpO1xuICB9XG5cbiAgc3RvcENvbnNvbGUgKCkge1xuICAgIGxvZy5kZWJ1ZygnU3RvcHBpbmcgdG8gbGlzdGVuIGZvciBKYXZhU2NyaXB0IGNvbnNvbGUnKTtcbiAgICB0aGlzLnJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZUFkZGVkJyk7XG4gICAgdGhpcy5yZW1vdmVDbGllbnRFdmVudExpc3RlbmVyKCdDb25zb2xlLm1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0TmV0d29yayAobGlzdGVuZXIpIHtcbiAgICBsb2cuZGVidWcoJ1N0YXJ0aW5nIHRvIGxpc3RlbiBmb3IgbmV0d29yayBldmVudHMnKTtcbiAgICB0aGlzLmFkZENsaWVudEV2ZW50TGlzdGVuZXIoJ05ldHdvcmtFdmVudCcsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHN0b3BOZXR3b3JrICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRvIGxpc3RlbiBmb3IgbmV0d29yayBldmVudHMnKTtcbiAgICB0aGlzLnJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIoJ05ldHdvcmtFdmVudCcpO1xuICB9XG5cbiAgc2V0IGFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgKGFsbG93KSB7XG4gICAgdGhpcy5fYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCA9IGFsbG93O1xuICB9XG5cbiAgZ2V0IGFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q29va2llcyAodXJscykge1xuICAgIGxvZy5kZWJ1ZygnR2V0dGluZyBjb29raWVzJyk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ1BhZ2UuZ2V0Q29va2llcycsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICAgIHVybHMsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVDb29raWUgKGNvb2tpZU5hbWUsIHVybCkge1xuICAgIGxvZy5kZWJ1ZyhgRGVsZXRpbmcgY29va2llICcke2Nvb2tpZU5hbWV9JyBvbiAnJHt1cmx9J2ApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdQYWdlLmRlbGV0ZUNvb2tpZScsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICAgIGNvb2tpZU5hbWUsXG4gICAgICB1cmwsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnYXJiYWdlQ29sbGVjdCAodGltZW91dE1zID0gR0FSQkFHRV9DT0xMRUNUX1RJTUVPVVQpIHtcbiAgICBsb2cuZGVidWcoYEdhcmJhZ2UgY29sbGVjdGluZyB3aXRoICR7dGltZW91dE1zfW1zIHRpbWVvdXRgKTtcbiAgICB0cnkge1xuICAgICAgY2hlY2tQYXJhbXMoe2FwcElkS2V5OiB0aGlzLmFwcElkS2V5LCBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5fSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cuZGVidWcoYFVuYWJsZSB0byBjb2xsZWN0IGdhcmJhZ2UgYXQgdGhpcyB0aW1lYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgQi5yZXNvbHZlKHRoaXMucnBjQ2xpZW50LnNlbmQoJ0hlYXAuZ2MnLCB7XG4gICAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgfSkpLnRpbWVvdXQodGltZW91dE1zKVxuICAgIC50aGVuKGZ1bmN0aW9uIGdjU3VjY2VzcyAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tdGhlblxuICAgICAgbG9nLmRlYnVnKGBHYXJiYWdlIGNvbGxlY3Rpb24gc3VjY2Vzc2Z1bGApO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uIGdjRXJyb3IgKGVycikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEIuVGltZW91dEVycm9yKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgR2FyYmFnZSBjb2xsZWN0aW9uIHRpbWVkIG91dCBhZnRlciAke3RpbWVvdXRNc31tc2ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmRlYnVnKGBVbmFibGUgdG8gY29sbGVjdCBnYXJiYWdlOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXNlQXBwRGljdExvY2sgKGZuKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2xvY2suYWNxdWlyZSgnYXBwRGljdCcsIGZuKTtcbiAgfVxuXG4gIGdldCBza2lwcGVkQXBwcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NraXBwZWRBcHBzIHx8IFtdO1xuICB9XG59XG5cbmZvciAoY29uc3QgW25hbWUsIGZuXSBvZiBfLnRvUGFpcnMobWl4aW5zKSkge1xuICBSZW1vdGVEZWJ1Z2dlci5wcm90b3R5cGVbbmFtZV0gPSBmbjtcbn1cblxuZm9yIChjb25zdCBbbmFtZSwgZXZlbnRdIG9mIF8udG9QYWlycyhldmVudHMpKSB7XG4gIFJlbW90ZURlYnVnZ2VyW25hbWVdID0gZXZlbnQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlbW90ZURlYnVnZ2VyO1xuZXhwb3J0IHtcbiAgUmVtb3RlRGVidWdnZXIsIFJFTU9URV9ERUJVR0dFUl9QT1JULCBSUENfUkVTUE9OU0VfVElNRU9VVF9NUyxcbn07XG4iXSwiZmlsZSI6ImxpYi9yZW1vdGUtZGVidWdnZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
292
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9yZW1vdGUtZGVidWdnZXIuanMiXSwibmFtZXMiOlsiVkVSU0lPTiIsInJlcXVpcmUiLCJwYXRoIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsInZlcnNpb24iLCJpZ24iLCJSRU1PVEVfREVCVUdHRVJfUE9SVCIsIlNBRkFSSV9CVU5ETEVfSUQiLCJSUENfUkVTUE9OU0VfVElNRU9VVF9NUyIsIlBBR0VfUkVBRFlfVElNRU9VVCIsIkdBUkJBR0VfQ09MTEVDVF9USU1FT1VUIiwiUmVtb3RlRGVidWdnZXIiLCJFdmVudEVtaXR0ZXIiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJsb2ciLCJpbmZvIiwiYnVuZGxlSWQiLCJhZGRpdGlvbmFsQnVuZGxlSWRzIiwicGxhdGZvcm1WZXJzaW9uIiwiaXNTYWZhcmkiLCJpbmNsdWRlU2FmYXJpIiwidXNlTmV3U2FmYXJpIiwicGFnZUxvYWRNcyIsImhvc3QiLCJwb3J0Iiwic29ja2V0UGF0aCIsInBhZ2VSZWFkeVRpbWVvdXQiLCJyZW1vdGVEZWJ1Z1Byb3h5IiwiZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUiLCJsb2dGdWxsUmVzcG9uc2UiLCJsb2dBbGxDb21tdW5pY2F0aW9uIiwibG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAiLCJ3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCIsInNvY2tldENodW5rU2l6ZSIsImZ1bGxQYWdlSW5pdGlhbGl6YXRpb24iLCJkZWJ1ZyIsIl8iLCJpc05pbCIsImlzSW50ZWdlciIsIl9sb2NrIiwiQXN5bmNMb2NrIiwic2V0dXAiLCJhcHBEaWN0IiwiYXBwSWRLZXkiLCJwYWdlSWRLZXkiLCJwYWdlTG9hZGluZyIsIl9uYXZpZ2F0aW5nVG9QYWdlIiwiYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCIsInJwY0NsaWVudCIsIl9jbGllbnRFdmVudExpc3RlbmVycyIsInRlYXJkb3duIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwiRVZFTlRfUEFHRV9DSEFOR0UiLCJFVkVOVF9ESVNDT05ORUNUIiwiaW5pdFJwY0NsaWVudCIsIlJwY0NsaWVudFNpbXVsYXRvciIsIm1lc3NhZ2VQcm94eSIsImlzQ29ubmVjdGVkIiwibGF1bmNoU2FmYXJpIiwic2VuZCIsInN0YXJ0VGltZWxpbmUiLCJmbiIsIm9uIiwic3RvcFRpbWVsaW5lIiwiYWRkQ2xpZW50RXZlbnRMaXN0ZW5lciIsImV2ZW50TmFtZSIsImxpc3RlbmVyIiwicHVzaCIsInJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIiLCJvZmYiLCJzdGFydENvbnNvbGUiLCJzdG9wQ29uc29sZSIsInN0YXJ0TmV0d29yayIsInN0b3BOZXR3b3JrIiwiYWxsb3ciLCJfYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCIsImdldENvb2tpZXMiLCJ1cmxzIiwiZGVsZXRlQ29va2llIiwiY29va2llTmFtZSIsInVybCIsImdhcmJhZ2VDb2xsZWN0IiwidGltZW91dE1zIiwiZXJyIiwiQiIsInRpbWVvdXQiLCJ0aGVuIiwiZ2NTdWNjZXNzIiwiY2F0Y2giLCJnY0Vycm9yIiwiVGltZW91dEVycm9yIiwibWVzc2FnZSIsInVzZUFwcERpY3RMb2NrIiwiYWNxdWlyZSIsInNraXBwZWRBcHBzIiwiX3NraXBwZWRBcHBzIiwibmFtZSIsInRvUGFpcnMiLCJtaXhpbnMiLCJwcm90b3R5cGUiLCJldmVudCIsImV2ZW50cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxJQUFJQSxPQUFKOztBQUNBLElBQUk7QUFDRkEsRUFBQUEsT0FBTyxHQUFHQyxPQUFPLENBQUNDLGNBQUtDLE9BQUwsQ0FBYUMsU0FBYixFQUF3QixJQUF4QixFQUE4QixJQUE5QixFQUFvQyxjQUFwQyxDQUFELENBQVAsQ0FBNkRDLE9BQXZFO0FBQ0QsQ0FGRCxDQUVFLE9BQU9DLEdBQVAsRUFBWSxDQUFFOztBQUVoQixNQUFNQyxvQkFBb0IsR0FBRyxLQUE3Qjs7QUFDQSxNQUFNQyxn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TUFFTztBQUNMcEUsd0JBQUlxQixLQUFKLENBQVcsOEJBQTZCZ0QsR0FBRyxDQUFDUSxPQUFRLEVBQXBEO0FBQ0Q7QUFDRixLQVpLLENBQU47QUFhRDs7QUFFRCxRQUFNQyxjQUFOLENBQXNCL0IsRUFBdEIsRUFBMEI7QUFDeEIsV0FBTyxNQUFNLEtBQUt0QixLQUFMLENBQVdzRCxPQUFYLENBQW1CLFNBQW5CLEVBQThCaEMsRUFBOUIsQ0FBYjtBQUNEOztBQUVELE1BQUlpQyxXQUFKLEdBQW1CO0FBQ2pCLFdBQU8sS0FBS0MsWUFBTCxJQUFxQixFQUE1QjtBQUNEOztBQWhQdUM7Ozs7QUFtUDFDLEtBQUssTUFBTSxDQUFDQyxJQUFELEVBQU9uQyxFQUFQLENBQVgsSUFBeUJ6QixnQkFBRTZELE9BQUYsQ0FBVUMsY0FBVixDQUF6QixFQUE0QztBQUMxQ3hGLEVBQUFBLGNBQWMsQ0FBQ3lGLFNBQWYsQ0FBeUJILElBQXpCLElBQWlDbkMsRUFBakM7QUFDRDs7QUFFRCxLQUFLLE1BQU0sQ0FBQ21DLElBQUQsRUFBT0ksS0FBUCxDQUFYLElBQTRCaEUsZ0JBQUU2RCxPQUFGLENBQVVJLGNBQVYsQ0FBNUIsRUFBK0M7QUFDN0MzRixFQUFBQSxjQUFjLENBQUNzRixJQUFELENBQWQsR0FBdUJJLEtBQXZCO0FBQ0Q7O2VBRWMxRixjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgUnBjQ2xpZW50U2ltdWxhdG9yIH0gZnJvbSAnLi9ycGMnO1xuaW1wb3J0IHsgY2hlY2tQYXJhbXMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IG1peGlucywgZXZlbnRzIH0gZnJvbSAnLi9taXhpbnMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IEFzeW5jTG9jayBmcm9tICdhc3luYy1sb2NrJztcblxuXG5sZXQgVkVSU0lPTjtcbnRyeSB7XG4gIFZFUlNJT04gPSByZXF1aXJlKHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicsICdwYWNrYWdlLmpzb24nKSkudmVyc2lvbjtcbn0gY2F0Y2ggKGlnbikge31cblxuY29uc3QgUkVNT1RFX0RFQlVHR0VSX1BPUlQgPSAyNzc1MztcbmNvbnN0IFNBRkFSSV9CVU5ETEVfSUQgPSAnY29tLmFwcGxlLm1vYmlsZXNhZmFyaSc7XG5cbi8qIEhvdyBtYW55IG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciB3ZWJraXQgdG8gcmV0dXJuIGEgcmVzcG9uc2UgYmVmb3JlIHRpbWluZyBvdXQgKi9cbmNvbnN0IFJQQ19SRVNQT05TRV9USU1FT1VUX01TID0gNTAwMDtcblxuY29uc3QgUEFHRV9SRUFEWV9USU1FT1VUID0gNTAwMDtcblxuY29uc3QgR0FSQkFHRV9DT0xMRUNUX1RJTUVPVVQgPSA1MDAwO1xuXG5cbmNsYXNzIFJlbW90ZURlYnVnZ2VyIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgLypcbiAgICogVGhlIGNvbnN0cnVjdG9yIHRha2VzIGFuIG9wdHMgaGFzaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICogICAtIGJ1bmRsZUlkIC0gaWQgb2YgdGhlIGFwcCBiZWluZyBjb25uZWN0ZWQgdG9cbiAgICogICAtIGFkZGl0aW9uYWxCdW5kbGVJZHMgLSBhcnJheSBvZiBwb3NzaWJsZSBidW5kbGUgaWRzIHRoYXQgdGhlIGluc3BlY3RvclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIHJldHVyblxuICAgKiAgIC0gcGxhdGZvcm1WZXJzaW9uIC0gdmVyc2lvbiBvZiBpT1NcbiAgICogICAtIHVzZU5ld1NhZmFyaSAtIGZvciB3ZWIgaW5zcGVjdG9yLCB3aGV0aGVyIHRoaXMgaXMgYSBuZXcgU2FmYXJpIGluc3RhbmNlXG4gICAqICAgLSBwYWdlTG9hZE1zIC0gdGhlIHRpbWUsIGluIG1zLCB0aGF0IHNob3VsZCBiZSB3YWl0ZWQgZm9yIHBhZ2UgbG9hZGluZ1xuICAgKiAgIC0gaG9zdCAtIHRoZSByZW1vdGUgZGVidWdnZXIncyBob3N0IGFkZHJlc3NcbiAgICogICAtIHBvcnQgLSB0aGUgcmVtb3RlIGRlYnVnZ2VyIHBvcnQgdGhyb3VnaCB3aGljaCB0byBjb21tdW5pY2F0ZVxuICAgKiAgIC0gbG9nQWxsQ29tbXVuaWNhdGlvbiAtIGxvZyBwbGlzdHMgc2VudCBhbmQgcmVjZWl2ZWQgZnJvbSBXZWIgSW5zcGVjdG9yXG4gICAqICAgLSBsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCAtIGxvZyBjb21tdW5pY2F0aW9uIGZyb20gV2ViIEluc3BlY3RvciBhcyBoZXggZHVtcFxuICAgKiAgIC0gc29ja2V0Q2h1bmtTaXplIC0gc2l6ZSwgaW4gYnl0ZXMsIG9mIGNodW5rcyBvZiBkYXRhIHNlbnQgdG8gV2ViIEluc3BlY3RvciAocmVhbCBkZXZpY2Ugb25seSlcbiAgICogICAtIHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoIC0gVGhlIG1heGltdW0gc2l6ZSBpbiBieXRlcyBvZiBhIHNpbmdsZSBkYXRhIGZyYW1lXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBkZXZpY2UgY29tbXVuaWNhdGlvbiBwcm90b2NvbFxuICAgKi9cbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAoVkVSU0lPTikge1xuICAgICAgbG9nLmluZm8oYFJlbW90ZSBEZWJ1Z2dlciB2ZXJzaW9uICR7VkVSU0lPTn1gKTtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBidW5kbGVJZCxcbiAgICAgIGFkZGl0aW9uYWxCdW5kbGVJZHMgPSBbXSxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbixcbiAgICAgIGlzU2FmYXJpID0gdHJ1ZSxcbiAgICAgIGluY2x1ZGVTYWZhcmkgPSBmYWxzZSxcbiAgICAgIHVzZU5ld1NhZmFyaSA9IGZhbHNlLFxuICAgICAgcGFnZUxvYWRNcyxcbiAgICAgIGhvc3QsXG4gICAgICBwb3J0ID0gUkVNT1RFX0RFQlVHR0VSX1BPUlQsXG4gICAgICBzb2NrZXRQYXRoLFxuICAgICAgcGFnZVJlYWR5VGltZW91dCA9IFBBR0VfUkVBRFlfVElNRU9VVCxcbiAgICAgIHJlbW90ZURlYnVnUHJveHksXG4gICAgICBnYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSA9IGZhbHNlLFxuICAgICAgbG9nRnVsbFJlc3BvbnNlID0gZmFsc2UsXG4gICAgICBsb2dBbGxDb21tdW5pY2F0aW9uID0gZmFsc2UsXG4gICAgICBsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCA9IGZhbHNlLFxuICAgICAgd2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgsXG4gICAgICBzb2NrZXRDaHVua1NpemUsXG4gICAgICBmdWxsUGFnZUluaXRpYWxpemF0aW9uLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgdGhpcy5idW5kbGVJZCA9IGJ1bmRsZUlkO1xuICAgIHRoaXMuYWRkaXRpb25hbEJ1bmRsZUlkcyA9IGFkZGl0aW9uYWxCdW5kbGVJZHM7XG4gICAgdGhpcy5wbGF0Zm9ybVZlcnNpb24gPSBwbGF0Zm9ybVZlcnNpb247XG4gICAgdGhpcy5pc1NhZmFyaSA9IGlzU2FmYXJpO1xuICAgIHRoaXMuaW5jbHVkZVNhZmFyaSA9IGluY2x1ZGVTYWZhcmk7XG4gICAgdGhpcy51c2VOZXdTYWZhcmkgPSB1c2VOZXdTYWZhcmk7XG4gICAgdGhpcy5wYWdlTG9hZE1zID0gcGFnZUxvYWRNcztcbiAgICBsb2cuZGVidWcoYHVzZU5ld1NhZmFyaSAtLT4gJHt0aGlzLnVzZU5ld1NhZmFyaX1gKTtcblxuICAgIHRoaXMuZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUgPSBnYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZTtcblxuICAgIHRoaXMuaG9zdCA9IGhvc3Q7XG4gICAgdGhpcy5wb3J0ID0gcG9ydDtcbiAgICB0aGlzLnNvY2tldFBhdGggPSBzb2NrZXRQYXRoO1xuICAgIHRoaXMucmVtb3RlRGVidWdQcm94eSA9IHJlbW90ZURlYnVnUHJveHk7XG4gICAgdGhpcy5wYWdlUmVhZHlUaW1lb3V0ID0gcGFnZVJlYWR5VGltZW91dDtcblxuICAgIHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbiA9IF8uaXNOaWwobG9nQWxsQ29tbXVuaWNhdGlvbikgPyAhIWxvZ0Z1bGxSZXNwb25zZSA6ICEhbG9nQWxsQ29tbXVuaWNhdGlvbjtcbiAgICB0aGlzLmxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wID0gbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXA7XG4gICAgdGhpcy5zb2NrZXRDaHVua1NpemUgPSBzb2NrZXRDaHVua1NpemU7XG5cbiAgICBpZiAoXy5pc0ludGVnZXIod2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgpKSB7XG4gICAgICB0aGlzLndlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoID0gd2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGg7XG4gICAgfVxuXG4gICAgdGhpcy5mdWxsUGFnZUluaXRpYWxpemF0aW9uID0gZnVsbFBhZ2VJbml0aWFsaXphdGlvbjtcblxuICAgIHRoaXMuX2xvY2sgPSBuZXcgQXN5bmNMb2NrKCk7XG4gIH1cblxuICBzZXR1cCAoKSB7XG4gICAgLy8gYXBwIGhhbmRsaW5nIGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLmFwcERpY3QgPSB7fTtcbiAgICB0aGlzLmFwcElkS2V5ID0gbnVsbDtcbiAgICB0aGlzLnBhZ2VJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX25hdmlnYXRpbmdUb1BhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLmFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgPSBmYWxzZTtcblxuICAgIHRoaXMucnBjQ2xpZW50ID0gbnVsbDtcbiAgICB0aGlzLl9jbGllbnRFdmVudExpc3RlbmVycyA9IHt9O1xuICB9XG5cbiAgdGVhcmRvd24gKCkge1xuICAgIGxvZy5kZWJ1ZygnQ2xlYW5pbmcgdXAgbGlzdGVuZXJzJyk7XG5cbiAgICB0aGlzLmFwcERpY3QgPSB7fTtcbiAgICB0aGlzLmFwcElkS2V5ID0gbnVsbDtcbiAgICB0aGlzLnBhZ2VJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy5ycGNDbGllbnQgPSBudWxsO1xuXG4gICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoUmVtb3RlRGVidWdnZXIuRVZFTlRfUEFHRV9DSEFOR0UpO1xuICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFJlbW90ZURlYnVnZ2VyLkVWRU5UX0RJU0NPTk5FQ1QpO1xuICB9XG5cbiAgaW5pdFJwY0NsaWVudCAoKSB7XG4gICAgdGhpcy5ycGNDbGllbnQgPSBuZXcgUnBjQ2xpZW50U2ltdWxhdG9yKHtcbiAgICAgIGJ1bmRsZUlkOiB0aGlzLmJ1bmRsZUlkLFxuICAgICAgcGxhdGZvcm1WZXJzaW9uOiB0aGlzLnBsYXRmb3JtVmVyc2lvbixcbiAgICAgIGlzU2FmYXJpOiB0aGlzLmlzU2FmYXJpLFxuICAgICAgaG9zdDogdGhpcy5ob3N0LFxuICAgICAgcG9ydDogdGhpcy5wb3J0LFxuICAgICAgc29ja2V0UGF0aDogdGhpcy5zb2NrZXRQYXRoLFxuICAgICAgbWVzc2FnZVByb3h5OiB0aGlzLnJlbW90ZURlYnVnUHJveHksXG4gICAgICBsb2dBbGxDb21tdW5pY2F0aW9uOiB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24sXG4gICAgICBsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcDogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCxcbiAgICAgIGZ1bGxQYWdlSW5pdGlhbGl6YXRpb246IHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbixcbiAgICAgIHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoOiB0aGlzLndlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGlzQ29ubmVjdGVkICgpIHtcbiAgICByZXR1cm4gISF0aGlzLnJwY0NsaWVudD8uaXNDb25uZWN0ZWQ7XG4gIH1cblxuICBhc3luYyBsYXVuY2hTYWZhcmkgKCkge1xuICAgIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ2xhdW5jaEFwcGxpY2F0aW9uJywge1xuICAgICAgYnVuZGxlSWQ6IFNBRkFSSV9CVU5ETEVfSURcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0VGltZWxpbmUgKGZuKSB7XG4gICAgbG9nLmRlYnVnKCdTdGFydGluZyB0byByZWNvcmQgdGhlIHRpbWVsaW5lJyk7XG4gICAgdGhpcy5ycGNDbGllbnQub24oJ1RpbWVsaW5lLmV2ZW50UmVjb3JkZWQnLCBmbik7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ3N0YXJ0VGltZWxpbmUnLCB7XG4gICAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdG9wVGltZWxpbmUgKCkge1xuICAgIGxvZy5kZWJ1ZygnU3RvcHBpbmcgdG8gcmVjb3JkIHRoZSB0aW1lbGluZScpO1xuICAgIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ1RpbWVsaW5lLnN0b3AnLCB7XG4gICAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgfSk7XG4gIH1cblxuICAvKlxuICAgKiBLZWVwIHRyYWNrIG9mIHRoZSBjbGllbnQgZXZlbnQgbGlzdGVuZXJzIHNvIHRoZXkgY2FuIGJlIHJlbW92ZWRcbiAgICovXG4gIGFkZENsaWVudEV2ZW50TGlzdGVuZXIgKGV2ZW50TmFtZSwgbGlzdGVuZXIpIHtcbiAgICB0aGlzLl9jbGllbnRFdmVudExpc3RlbmVyc1tldmVudE5hbWVdID0gdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSB8fCBbXTtcbiAgICB0aGlzLl9jbGllbnRFdmVudExpc3RlbmVyc1tldmVudE5hbWVdLnB1c2gobGlzdGVuZXIpO1xuICAgIHRoaXMucnBjQ2xpZW50Lm9uKGV2ZW50TmFtZSwgbGlzdGVuZXIpO1xuICB9XG5cbiAgcmVtb3ZlQ2xpZW50RXZlbnRMaXN0ZW5lciAoZXZlbnROYW1lKSB7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiAodGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSB8fCBbXSkpIHtcbiAgICAgIHRoaXMucnBjQ2xpZW50Lm9mZihldmVudE5hbWUsIGxpc3RlbmVyKTtcbiAgICB9XG4gIH1cblxuICBzdGFydENvbnNvbGUgKGxpc3RlbmVyKSB7XG4gICAgbG9nLmRlYnVnKCdTdGFydGluZyB0byBsaXN0ZW4gZm9yIEphdmFTY3JpcHQgY29uc29sZScpO1xuICAgIHRoaXMuYWRkQ2xpZW50RXZlbnRMaXN0ZW5lcignQ29uc29sZS5tZXNzYWdlQWRkZWQnLCBsaXN0ZW5lcik7XG4gICAgdGhpcy5hZGRDbGllbnRFdmVudExpc3RlbmVyKCdDb25zb2xlLm1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQnLCBsaXN0ZW5lcik7XG4gIH1cblxuICBzdG9wQ29uc29sZSAoKSB7XG4gICAgbG9nLmRlYnVnKCdTdG9wcGluZyB0byBsaXN0ZW4gZm9yIEphdmFTY3JpcHQgY29uc29sZScpO1xuICAgIHRoaXMucmVtb3ZlQ2xpZW50RXZlbnRMaXN0ZW5lcignQ29uc29sZS5tZXNzYWdlQWRkZWQnKTtcbiAgICB0aGlzLnJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCcpO1xuICB9XG5cbiAgc3RhcnROZXR3b3JrIChsaXN0ZW5lcikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gbGlzdGVuIGZvciBuZXR3b3JrIGV2ZW50cycpO1xuICAgIHRoaXMuYWRkQ2xpZW50RXZlbnRMaXN0ZW5lcignTmV0d29ya0V2ZW50JywgbGlzdGVuZXIpO1xuICB9XG5cbiAgc3RvcE5ldHdvcmsgKCkge1xuICAgIGxvZy5kZWJ1ZygnU3RvcHBpbmcgdG8gbGlzdGVuIGZvciBuZXR3b3JrIGV2ZW50cycpO1xuICAgIHRoaXMucmVtb3ZlQ2xpZW50RXZlbnRMaXN0ZW5lcignTmV0d29ya0V2ZW50Jyk7XG4gIH1cblxuICBzZXQgYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCAoYWxsb3cpIHtcbiAgICB0aGlzLl9hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkID0gYWxsb3c7XG4gIH1cblxuICBnZXQgYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQ7XG4gIH1cblxuICBhc3luYyBnZXRDb29raWVzICh1cmxzKSB7XG4gICAgbG9nLmRlYnVnKCdHZXR0aW5nIGNvb2tpZXMnKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnUGFnZS5nZXRDb29raWVzJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgICAgdXJscyxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUNvb2tpZSAoY29va2llTmFtZSwgdXJsKSB7XG4gICAgbG9nLmRlYnVnKGBEZWxldGluZyBjb29raWUgJyR7Y29va2llTmFtZX0nIG9uICcke3VybH0nYCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ1BhZ2UuZGVsZXRlQ29va2llJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgICAgY29va2llTmFtZSxcbiAgICAgIHVybCxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdhcmJhZ2VDb2xsZWN0ICh0aW1lb3V0TXMgPSBHQVJCQUdFX0NPTExFQ1RfVElNRU9VVCkge1xuICAgIGxvZy5kZWJ1ZyhgR2FyYmFnZSBjb2xsZWN0aW5nIHdpdGggJHt0aW1lb3V0TXN9bXMgdGltZW91dGApO1xuICAgIHRyeSB7XG4gICAgICBjaGVja1BhcmFtcyh7YXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXl9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgVW5hYmxlIHRvIGNvbGxlY3QgZ2FyYmFnZSBhdCB0aGlzIHRpbWVgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCBCLnJlc29sdmUodGhpcy5ycGNDbGllbnQuc2VuZCgnSGVhcC5nYycsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICB9KSkudGltZW91dCh0aW1lb3V0TXMpXG4gICAgLnRoZW4oZnVuY3Rpb24gZ2NTdWNjZXNzICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by10aGVuXG4gICAgICBsb2cuZGVidWcoYEdhcmJhZ2UgY29sbGVjdGlvbiBzdWNjZXNzZnVsYCk7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gZ2NFcnJvciAoZXJyKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzXG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgQi5UaW1lb3V0RXJyb3IpIHtcbiAgICAgICAgbG9nLmRlYnVnKGBHYXJiYWdlIGNvbGxlY3Rpb24gdGltZWQgb3V0IGFmdGVyICR7dGltZW91dE1zfW1zYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2cuZGVidWcoYFVuYWJsZSB0byBjb2xsZWN0IGdhcmJhZ2U6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1c2VBcHBEaWN0TG9jayAoZm4pIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fbG9jay5hY3F1aXJlKCdhcHBEaWN0JywgZm4pO1xuICB9XG5cbiAgZ2V0IHNraXBwZWRBcHBzICgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2tpcHBlZEFwcHMgfHwgW107XG4gIH1cbn1cblxuZm9yIChjb25zdCBbbmFtZSwgZm5dIG9mIF8udG9QYWlycyhtaXhpbnMpKSB7XG4gIFJlbW90ZURlYnVnZ2VyLnByb3RvdHlwZVtuYW1lXSA9IGZuO1xufVxuXG5mb3IgKGNvbnN0IFtuYW1lLCBldmVudF0gb2YgXy50b1BhaXJzKGV2ZW50cykpIHtcbiAgUmVtb3RlRGVidWdnZXJbbmFtZV0gPSBldmVudDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVtb3RlRGVidWdnZXI7XG5leHBvcnQge1xuICBSZW1vdGVEZWJ1Z2dlciwgUkVNT1RFX0RFQlVHR0VSX1BPUlQsIFJQQ19SRVNQT05TRV9USU1FT1VUX01TLFxufTtcbiJdLCJmaWxlIjoibGliL3JlbW90ZS1kZWJ1Z2dlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
@@ -32,7 +32,8 @@ class RpcClientRealDevice extends _rpcClient.default {
32
32
  isSimulator: false,
33
33
  verbose: this.logAllCommunication,
34
34
  verboseHexDump: this.logAllCommunicationHexDump,
35
- socketChunkSize: this.socketChunkSize
35
+ socketChunkSize: this.socketChunkSize,
36
+ maxFrameLength: this.webInspectorMaxFrameLength
36
37
  });
37
38
  this.service.listenMessage(this.receive.bind(this));
38
39
  this.isConnected = true;
@@ -67,4 +68,4 @@ class RpcClientRealDevice extends _rpcClient.default {
67
68
  exports.default = RpcClientRealDevice;require('source-map-support').install();
68
69
 
69
70
 
70
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ycGMvcnBjLWNsaWVudC1yZWFsLWRldmljZS5qcyJdLCJuYW1lcyI6WyJScGNDbGllbnRSZWFsRGV2aWNlIiwiUnBjQ2xpZW50IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwic2hvdWxkQ2hlY2tGb3JUYXJnZXQiLCJ1ZGlkIiwiY29ubmVjdCIsInNlcnZpY2UiLCJzZXJ2aWNlcyIsInN0YXJ0V2ViSW5zcGVjdG9yU2VydmljZSIsIm9zVmVyc2lvbiIsInBsYXRmb3JtVmVyc2lvbiIsImlzU2ltdWxhdG9yIiwidmVyYm9zZSIsImxvZ0FsbENvbW11bmljYXRpb24iLCJ2ZXJib3NlSGV4RHVtcCIsImxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wIiwic29ja2V0Q2h1bmtTaXplIiwibGlzdGVuTWVzc2FnZSIsInJlY2VpdmUiLCJiaW5kIiwiaXNDb25uZWN0ZWQiLCJkaXNjb25uZWN0IiwibG9nIiwiZGVidWciLCJjbG9zZSIsInNlbmRNZXNzYWdlIiwiY21kIiwiZGF0YSIsIm1lc3NhZ2VIYW5kbGVyIiwiaGFuZGxlTWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHZSxNQUFNQSxtQkFBTixTQUFrQ0Msa0JBQWxDLENBQTRDO0FBQ3pEQyxFQUFBQSxXQUFXLENBQUVDLElBQUksR0FBRyxFQUFULEVBQWE7QUFDdEIsVUFBTUMsTUFBTSxDQUFDQyxNQUFQLENBQWM7QUFDbEJDLE1BQUFBLG9CQUFvQixFQUFFO0FBREosS0FBZCxFQUVISCxJQUZHLENBQU47QUFJQSxVQUFNO0FBQ0pJLE1BQUFBO0FBREksUUFFRkosSUFGSjtBQUlBLFNBQUtJLElBQUwsR0FBWUEsSUFBWjtBQUNEOztBQUVELFFBQU1DLE9BQU4sR0FBaUI7QUFDZixTQUFLQyxPQUFMLEdBQWUsTUFBTUMsMEJBQVNDLHdCQUFULENBQWtDLEtBQUtKLElBQXZDLEVBQTZDO0FBQ2hFSyxNQUFBQSxTQUFTLEVBQUUsS0FBS0MsZUFEZ0Q7QUFFaEVDLE1BQUFBLFdBQVcsRUFBRSxLQUZtRDtBQUdoRUMsTUFBQUEsT0FBTyxFQUFFLEtBQUtDLG1CQUhrRDtBQUloRUMsTUFBQUEsY0FBYyxFQUFFLEtBQUtDLDBCQUoyQztBQUtoRUMsTUFBQUEsZUFBZSxFQUFFLEtBQUtBO0FBTDBDLEtBQTdDLENBQXJCO0FBUUEsU0FBS1YsT0FBTCxDQUFhVyxhQUFiLENBQTJCLEtBQUtDLE9BQUwsQ0FBYUMsSUFBYixDQUFrQixJQUFsQixDQUEzQjtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsSUFBbkI7QUFDRDs7QUFFRCxRQUFNQyxVQUFOLEdBQW9CO0FBQ2xCLFFBQUksQ0FBQyxLQUFLRCxXQUFWLEVBQXVCO0FBQ3JCO0FBQ0Q7O0FBRURFLG9CQUFJQyxLQUFKLENBQVUsb0NBQVY7O0FBQ0EsVUFBTSxNQUFNRixVQUFOLEVBQU47QUFDQSxTQUFLZixPQUFMLENBQWFrQixLQUFiO0FBQ0EsU0FBS0osV0FBTCxHQUFtQixLQUFuQjtBQUNEOztBQUVELFFBQU1LLFdBQU4sQ0FBbUJDLEdBQW5CLEVBQXdCO0FBQ3RCLFNBQUtwQixPQUFMLENBQWFtQixXQUFiLENBQXlCQyxHQUF6QjtBQUNEOztBQUVELFFBQU1SLE9BQU4sQ0FBZVMsSUFBZixFQUFxQjtBQUNuQixRQUFJLENBQUMsS0FBS1AsV0FBVixFQUF1QjtBQUNyQjtBQUNEOztBQUNELFVBQU0sS0FBS1EsY0FBTCxDQUFvQkMsYUFBcEIsQ0FBa0NGLElBQWxDLENBQU47QUFDRDs7QUE5Q3dEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IFJwY0NsaWVudCBmcm9tICcuL3JwYy1jbGllbnQnO1xuaW1wb3J0IHsgc2VydmljZXMgfSBmcm9tICdhcHBpdW0taW9zLWRldmljZSc7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnBjQ2xpZW50UmVhbERldmljZSBleHRlbmRzIFJwY0NsaWVudCB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBzdXBlcihPYmplY3QuYXNzaWduKHtcbiAgICAgIHNob3VsZENoZWNrRm9yVGFyZ2V0OiBmYWxzZSxcbiAgICB9LCBvcHRzKSk7XG5cbiAgICBjb25zdCB7XG4gICAgICB1ZGlkLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgdGhpcy51ZGlkID0gdWRpZDtcbiAgfVxuXG4gIGFzeW5jIGNvbm5lY3QgKCkge1xuICAgIHRoaXMuc2VydmljZSA9IGF3YWl0IHNlcnZpY2VzLnN0YXJ0V2ViSW5zcGVjdG9yU2VydmljZSh0aGlzLnVkaWQsIHtcbiAgICAgIG9zVmVyc2lvbjogdGhpcy5wbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NpbXVsYXRvcjogZmFsc2UsXG4gICAgICB2ZXJib3NlOiB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24sXG4gICAgICB2ZXJib3NlSGV4RHVtcDogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCxcbiAgICAgIHNvY2tldENodW5rU2l6ZTogdGhpcy5zb2NrZXRDaHVua1NpemUsXG4gICAgfSk7XG5cbiAgICB0aGlzLnNlcnZpY2UubGlzdGVuTWVzc2FnZSh0aGlzLnJlY2VpdmUuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5pc0Nvbm5lY3RlZCA9IHRydWU7XG4gIH1cblxuICBhc3luYyBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAoIXRoaXMuaXNDb25uZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2cuZGVidWcoJ0Rpc2Nvbm5lY3RpbmcgZnJvbSByZW1vdGUgZGVidWdnZXInKTtcbiAgICBhd2FpdCBzdXBlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5zZXJ2aWNlLmNsb3NlKCk7XG4gICAgdGhpcy5pc0Nvbm5lY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgc2VuZE1lc3NhZ2UgKGNtZCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICB0aGlzLnNlcnZpY2Uuc2VuZE1lc3NhZ2UoY21kKTtcbiAgfVxuXG4gIGFzeW5jIHJlY2VpdmUgKGRhdGEpIHtcbiAgICBpZiAoIXRoaXMuaXNDb25uZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5tZXNzYWdlSGFuZGxlci5oYW5kbGVNZXNzYWdlKGRhdGEpO1xuICB9XG59XG4iXSwiZmlsZSI6ImxpYi9ycGMvcnBjLWNsaWVudC1yZWFsLWRldmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
71
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ycGMvcnBjLWNsaWVudC1yZWFsLWRldmljZS5qcyJdLCJuYW1lcyI6WyJScGNDbGllbnRSZWFsRGV2aWNlIiwiUnBjQ2xpZW50IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwic2hvdWxkQ2hlY2tGb3JUYXJnZXQiLCJ1ZGlkIiwiY29ubmVjdCIsInNlcnZpY2UiLCJzZXJ2aWNlcyIsInN0YXJ0V2ViSW5zcGVjdG9yU2VydmljZSIsIm9zVmVyc2lvbiIsInBsYXRmb3JtVmVyc2lvbiIsImlzU2ltdWxhdG9yIiwidmVyYm9zZSIsImxvZ0FsbENvbW11bmljYXRpb24iLCJ2ZXJib3NlSGV4RHVtcCIsImxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wIiwic29ja2V0Q2h1bmtTaXplIiwibWF4RnJhbWVMZW5ndGgiLCJ3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCIsImxpc3Rlbk1lc3NhZ2UiLCJyZWNlaXZlIiwiYmluZCIsImlzQ29ubmVjdGVkIiwiZGlzY29ubmVjdCIsImxvZyIsImRlYnVnIiwiY2xvc2UiLCJzZW5kTWVzc2FnZSIsImNtZCIsImRhdGEiLCJtZXNzYWdlSGFuZGxlciIsImhhbmRsZU1lc3NhZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR2UsTUFBTUEsbUJBQU4sU0FBa0NDLGtCQUFsQyxDQUE0QztBQUN6REMsRUFBQUEsV0FBVyxDQUFFQyxJQUFJLEdBQUcsRUFBVCxFQUFhO0FBQ3RCLFVBQU1DLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0FBQ2xCQyxNQUFBQSxvQkFBb0IsRUFBRTtBQURKLEtBQWQsRUFFSEgsSUFGRyxDQUFOO0FBSUEsVUFBTTtBQUNKSSxNQUFBQTtBQURJLFFBRUZKLElBRko7QUFJQSxTQUFLSSxJQUFMLEdBQVlBLElBQVo7QUFDRDs7QUFFRCxRQUFNQyxPQUFOLEdBQWlCO0FBQ2YsU0FBS0MsT0FBTCxHQUFlLE1BQU1DLDBCQUFTQyx3QkFBVCxDQUFrQyxLQUFLSixJQUF2QyxFQUE2QztBQUNoRUssTUFBQUEsU0FBUyxFQUFFLEtBQUtDLGVBRGdEO0FBRWhFQyxNQUFBQSxXQUFXLEVBQUUsS0FGbUQ7QUFHaEVDLE1BQUFBLE9BQU8sRUFBRSxLQUFLQyxtQkFIa0Q7QUFJaEVDLE1BQUFBLGNBQWMsRUFBRSxLQUFLQywwQkFKMkM7QUFLaEVDLE1BQUFBLGVBQWUsRUFBRSxLQUFLQSxlQUwwQztBQU1oRUMsTUFBQUEsY0FBYyxFQUFFLEtBQUtDO0FBTjJDLEtBQTdDLENBQXJCO0FBU0EsU0FBS1osT0FBTCxDQUFhYSxhQUFiLENBQTJCLEtBQUtDLE9BQUwsQ0FBYUMsSUFBYixDQUFrQixJQUFsQixDQUEzQjtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsSUFBbkI7QUFDRDs7QUFFRCxRQUFNQyxVQUFOLEdBQW9CO0FBQ2xCLFFBQUksQ0FBQyxLQUFLRCxXQUFWLEVBQXVCO0FBQ3JCO0FBQ0Q7O0FBRURFLG9CQUFJQyxLQUFKLENBQVUsb0NBQVY7O0FBQ0EsVUFBTSxNQUFNRixVQUFOLEVBQU47QUFDQSxTQUFLakIsT0FBTCxDQUFhb0IsS0FBYjtBQUNBLFNBQUtKLFdBQUwsR0FBbUIsS0FBbkI7QUFDRDs7QUFFRCxRQUFNSyxXQUFOLENBQW1CQyxHQUFuQixFQUF3QjtBQUN0QixTQUFLdEIsT0FBTCxDQUFhcUIsV0FBYixDQUF5QkMsR0FBekI7QUFDRDs7QUFFRCxRQUFNUixPQUFOLENBQWVTLElBQWYsRUFBcUI7QUFDbkIsUUFBSSxDQUFDLEtBQUtQLFdBQVYsRUFBdUI7QUFDckI7QUFDRDs7QUFDRCxVQUFNLEtBQUtRLGNBQUwsQ0FBb0JDLGFBQXBCLENBQWtDRixJQUFsQyxDQUFOO0FBQ0Q7O0FBL0N3RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCBScGNDbGllbnQgZnJvbSAnLi9ycGMtY2xpZW50JztcbmltcG9ydCB7IHNlcnZpY2VzIH0gZnJvbSAnYXBwaXVtLWlvcy1kZXZpY2UnO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJwY0NsaWVudFJlYWxEZXZpY2UgZXh0ZW5kcyBScGNDbGllbnQge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIoT2JqZWN0LmFzc2lnbih7XG4gICAgICBzaG91bGRDaGVja0ZvclRhcmdldDogZmFsc2UsXG4gICAgfSwgb3B0cykpO1xuXG4gICAgY29uc3Qge1xuICAgICAgdWRpZCxcbiAgICB9ID0gb3B0cztcblxuICAgIHRoaXMudWRpZCA9IHVkaWQ7XG4gIH1cblxuICBhc3luYyBjb25uZWN0ICgpIHtcbiAgICB0aGlzLnNlcnZpY2UgPSBhd2FpdCBzZXJ2aWNlcy5zdGFydFdlYkluc3BlY3RvclNlcnZpY2UodGhpcy51ZGlkLCB7XG4gICAgICBvc1ZlcnNpb246IHRoaXMucGxhdGZvcm1WZXJzaW9uLFxuICAgICAgaXNTaW11bGF0b3I6IGZhbHNlLFxuICAgICAgdmVyYm9zZTogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uLFxuICAgICAgdmVyYm9zZUhleER1bXA6IHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAsXG4gICAgICBzb2NrZXRDaHVua1NpemU6IHRoaXMuc29ja2V0Q2h1bmtTaXplLFxuICAgICAgbWF4RnJhbWVMZW5ndGg6IHRoaXMud2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgsXG4gICAgfSk7XG5cbiAgICB0aGlzLnNlcnZpY2UubGlzdGVuTWVzc2FnZSh0aGlzLnJlY2VpdmUuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5pc0Nvbm5lY3RlZCA9IHRydWU7XG4gIH1cblxuICBhc3luYyBkaXNjb25uZWN0ICgpIHtcbiAgICBpZiAoIXRoaXMuaXNDb25uZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2cuZGVidWcoJ0Rpc2Nvbm5lY3RpbmcgZnJvbSByZW1vdGUgZGVidWdnZXInKTtcbiAgICBhd2FpdCBzdXBlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5zZXJ2aWNlLmNsb3NlKCk7XG4gICAgdGhpcy5pc0Nvbm5lY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgc2VuZE1lc3NhZ2UgKGNtZCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICB0aGlzLnNlcnZpY2Uuc2VuZE1lc3NhZ2UoY21kKTtcbiAgfVxuXG4gIGFzeW5jIHJlY2VpdmUgKGRhdGEpIHtcbiAgICBpZiAoIXRoaXMuaXNDb25uZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5tZXNzYWdlSGFuZGxlci5oYW5kbGVNZXNzYWdlKGRhdGEpO1xuICB9XG59XG4iXSwiZmlsZSI6ImxpYi9ycGMvcnBjLWNsaWVudC1yZWFsLWRldmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -88,7 +88,8 @@ class RpcClientSimulator extends _rpcClient.default {
88
88
  isSimulator: true,
89
89
  osVersion: this.platformVersion,
90
90
  verbose: this.logAllCommunication,
91
- verboseHexDump: this.logAllCommunicationHexDump
91
+ verboseHexDump: this.logAllCommunicationHexDump,
92
+ maxFrameLength: this.webInspectorMaxFrameLength
92
93
  });
93
94
  this.service.listenMessage(this.receive.bind(this));
94
95
  return await new _bluebird.default((resolve, reject) => {
@@ -164,4 +165,4 @@ class RpcClientSimulator extends _rpcClient.default {
164
165
  exports.default = RpcClientSimulator;require('source-map-support').install();
165
166
 
166
167
 
167
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ycGMvcnBjLWNsaWVudC1zaW11bGF0b3IuanMiXSwibmFtZXMiOlsiUnBjQ2xpZW50U2ltdWxhdG9yIiwiUnBjQ2xpZW50IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwic2hvdWxkQ2hlY2tGb3JUYXJnZXQiLCJzb2NrZXRQYXRoIiwiaG9zdCIsInBvcnQiLCJtZXNzYWdlUHJveHkiLCJzb2NrZXQiLCJjb25uZWN0IiwibG9nIiwiZGVidWciLCJuZXQiLCJvbmNlIiwid3JpdGUiLCJKU09OIiwic3RyaW5naWZ5IiwiU29ja2V0IiwidHlwZSIsInNldE5vRGVsYXkiLCJzZXRLZWVwQWxpdmUiLCJvbiIsImlzQ29ubmVjdGVkIiwic2VydmljZSIsInNlcnZpY2VzIiwic3RhcnRXZWJJbnNwZWN0b3JTZXJ2aWNlIiwidWRpZCIsImlzU2ltdWxhdG9yIiwib3NWZXJzaW9uIiwicGxhdGZvcm1WZXJzaW9uIiwidmVyYm9zZSIsImxvZ0FsbENvbW11bmljYXRpb24iLCJ2ZXJib3NlSGV4RHVtcCIsImxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wIiwibGlzdGVuTWVzc2FnZSIsInJlY2VpdmUiLCJiaW5kIiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJlcnIiLCJlcnJvciIsIm1lc3NhZ2UiLCJkaXNjb25uZWN0IiwiY2xvc2UiLCJzZW5kTWVzc2FnZSIsImNtZCIsIm9uU29ja2V0RXJyb3IiLCJmaW5hbGx5IiwicmVtb3ZlTGlzdGVuZXIiLCJpZ24iLCJkYXRhIiwia2V5IiwiXyIsImlzVW5kZWZpbmVkIiwidG9TdHJpbmciLCJtZXNzYWdlSGFuZGxlciIsImhhbmRsZU1lc3NhZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR2UsTUFBTUEsa0JBQU4sU0FBaUNDLGtCQUFqQyxDQUEyQztBQUN4REMsRUFBQUEsV0FBVyxDQUFFQyxJQUFJLEdBQUcsRUFBVCxF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QUFELENBQU47QUFDRCxPQUxEOztBQU9BLFdBQUtoQyxNQUFMLENBQVlhLEVBQVosQ0FBZSxPQUFmLEVBQXdCMEIsYUFBeEI7QUFDQSxXQUFLeEIsT0FBTCxDQUFhc0IsV0FBYixDQUF5QkMsR0FBekI7QUFDQVIsTUFBQUEsT0FBTztBQUNSLEtBWlksRUFhWlUsT0FiWSxDQWFKLE1BQU07QUFFYixVQUFJO0FBQ0YsYUFBS3hDLE1BQUwsQ0FBWXlDLGNBQVosQ0FBMkIsT0FBM0IsRUFBb0NGLGFBQXBDO0FBQ0QsT0FGRCxDQUVFLE9BQU9HLEdBQVAsRUFBWSxDQUFFO0FBQ2pCLEtBbEJZLENBQWI7QUFtQkQ7O0FBRUQsUUFBTWYsT0FBTixDQUFlZ0IsSUFBZixFQUFxQjtBQUNuQixRQUFJLENBQUMsS0FBSzdCLFdBQVYsRUFBdUI7QUFDckI7QUFDRDs7QUFFRCxRQUFJLENBQUM2QixJQUFMLEVBQVc7QUFDVDtBQUNEOztBQUVELFNBQUssTUFBTUMsR0FBWCxJQUFrQixDQUFDLG1CQUFELEVBQXNCLG1CQUF0QixFQUEyQyxrQkFBM0MsQ0FBbEIsRUFBa0Y7QUFDaEYsVUFBSSxDQUFDQyxnQkFBRUMsV0FBRixDQUFjSCxJQUFJLENBQUNDLEdBQUQsQ0FBbEIsQ0FBTCxFQUErQjtBQUM3QkQsUUFBQUEsSUFBSSxDQUFDQyxHQUFELENBQUosR0FBWUQsSUFBSSxDQUFDQyxHQUFELENBQUosQ0FBVUcsUUFBVixDQUFtQixNQUFuQixDQUFaO0FBQ0Q7QUFDRjs7QUFDRCxVQUFNLEtBQUtDLGNBQUwsQ0FBb0JDLGFBQXBCLENBQWtDTixJQUFsQyxDQUFOO0FBQ0Q7O0FBbkp1RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgbmV0IGZyb20gJ25ldCc7XG5pbXBvcnQgUnBjQ2xpZW50IGZyb20gJy4vcnBjLWNsaWVudCc7XG5pbXBvcnQgeyBzZXJ2aWNlcyB9IGZyb20gJ2FwcGl1bS1pb3MtZGV2aWNlJztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBScGNDbGllbnRTaW11bGF0b3IgZXh0ZW5kcyBScGNDbGllbnQge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIoT2JqZWN0LmFzc2lnbih7XG4gICAgICBzaG91bGRDaGVja0ZvclRhcmdldDogZmFsc2UsXG4gICAgfSwgb3B0cykpO1xuXG4gICAgY29uc3Qge1xuICAgICAgc29ja2V0UGF0aCxcbiAgICAgIGhvc3QgPSAnOjoxJyxcbiAgICAgIHBvcnQsXG4gICAgICBtZXNzYWdlUHJveHksXG4gICAgfSA9IG9wdHM7XG5cbiAgICAvLyBob3N0L3BvcnQgY29uZmlnIGZvciBUQ1AgY29tbXVuaWNhdGlvbiwgc29ja2V0UGF0aCBmb3IgdW5peCBkb21haW4gc29ja2V0c1xuICAgIHRoaXMuaG9zdCA9IGhvc3Q7XG4gICAgdGhpcy5wb3J0ID0gcG9ydDtcbiAgICB0aGlzLm1lc3NhZ2VQcm94eSA9IG1lc3NhZ2VQcm94eTtcblxuICAgIHRoaXMuc29ja2V0ID0gbnVsbDtcbiAgICB0aGlzLnNvY2tldFBhdGggPSBzb2NrZXRQYXRoO1xuICB9XG5cbiAgYXN5bmMgY29ubmVjdCAoKSB7XG4gICAgLy8gY3JlYXRlIHNvY2tldCBhbmQgaGFuZGxlIGl0cyBtZXNzYWdlc1xuICAgIGlmICh0aGlzLnNvY2tldFBhdGgpIHtcbiAgICAgIGlmICh0aGlzLm1lc3NhZ2VQcm94eSkge1xuICAgICAgICAvLyB1bml4IGRvbWFpbiBzb2NrZXQgdmlhIHByb3h5XG4gICAgICAgIGxvZy5kZWJ1ZyhgQ29ubmVjdGluZyB0byByZW1vdGUgZGVidWdnZXIgdmlhIHByb3h5IHRocm91Z2ggdW5peCBkb21haW4gc29ja2V0OiAnJHt0aGlzLm1lc3NhZ2VQcm94eX0nYCk7XG4gICAgICAgIHRoaXMuc29ja2V0ID0gbmV0LmNvbm5lY3QodGhpcy5tZXNzYWdlUHJveHkpO1xuXG4gICAgICAgIC8vIEZvcndhcmQgdGhlIGFjdHVhbCBzb2NrZXRQYXRoIHRvIHRoZSBwcm94eVxuICAgICAgICB0aGlzLnNvY2tldC5vbmNlKCdjb25uZWN0JywgKCkgPT4ge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgRm9yd2FyZGluZyB0aGUgYWN0dWFsIHdlYiBpbnNwZWN0b3Igc29ja2V0IHRvIHRoZSBwcm94eTogJyR7dGhpcy5zb2NrZXRQYXRofSdgKTtcbiAgICAgICAgICB0aGlzLnNvY2tldC53cml0ZShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBzb2NrZXRQYXRoOiB0aGlzLnNvY2tldFBhdGhcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB1bml4IGRvbWFpbiBzb2NrZXRcbiAgICAgICAgbG9nLmRlYnVnKGBDb25uZWN0aW5nIHRvIHJlbW90ZSBkZWJ1Z2dlciB0aHJvdWdoIHVuaXggZG9tYWluIHNvY2tldDogJyR7dGhpcy5zb2NrZXRQYXRofSdgKTtcbiAgICAgICAgdGhpcy5zb2NrZXQgPSBuZXQuY29ubmVjdCh0aGlzLnNvY2tldFBhdGgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5tZXNzYWdlUHJveHkpIHtcbiAgICAgICAgLy8gY29ubmVjdCB0byB0aGUgcHJveHkgaW5zdGVhZCBvZiB0aGUgcmVtb3RlIGRlYnVnZ2VyIGRpcmVjdGx5XG4gICAgICAgIHRoaXMucG9ydCA9IHRoaXMubWVzc2FnZVByb3h5O1xuICAgICAgfVxuXG4gICAgICAvLyB0Y3Agc29ja2V0XG4gICAgICBsb2cuZGVidWcoYENvbm5lY3RpbmcgdG8gcmVtb3RlIGRlYnVnZ2VyICR7dGhpcy5tZXNzYWdlUHJveHkgPyAndmlhIHByb3h5ICcgOiAnJ310aHJvdWdoIFRDUDogJHt0aGlzLmhvc3R9OiR7dGhpcy5wb3J0fWApO1xuICAgICAgdGhpcy5zb2NrZXQgPSBuZXcgbmV0LlNvY2tldCh7dHlwZTogJ3RjcDYnfSk7XG4gICAgICB0aGlzLnNvY2tldC5jb25uZWN0KHRoaXMucG9ydCwgdGhpcy5ob3N0KTtcbiAgICB9XG5cbiAgICB0aGlzLnNvY2tldC5zZXROb0RlbGF5KHRydWUpO1xuICAgIHRoaXMuc29ja2V0LnNldEtlZXBBbGl2ZSh0cnVlKTtcbiAgICB0aGlzLnNvY2tldC5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc0Nvbm5lY3RlZCkge1xuICAgICAgICBsb2cuZGVidWcoJ0RlYnVnZ2VyIHNvY2tldCBkaXNjb25uZWN0ZWQnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNDb25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc29ja2V0ID0gbnVsbDtcbiAgICB9KTtcbiAgICB0aGlzLnNvY2tldC5vbignZW5kJywgKCkgPT4ge1xuICAgICAgdGhpcy5pc0Nvbm5lY3RlZCA9IGZhbHNlO1xuICAgIH0pO1xuICAgIHRoaXMuc2VydmljZSA9IGF3YWl0IHNlcnZpY2VzLnN0YXJ0V2ViSW5zcGVjdG9yU2VydmljZSh0aGlzLnVkaWQsIHtcbiAgICAgIHNvY2tldDogdGhpcy5zb2NrZXQsXG4gICAgICBpc1NpbXVsYXRvcjogdHJ1ZSxcbiAgICAgIG9zVmVyc2lvbjogdGhpcy5wbGF0Zm9ybVZlcnNpb24sXG4gICAgICB2ZXJib3NlOiB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24sXG4gICAgICB2ZXJib3NlSGV4RHVtcDogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCxcbiAgICB9KTtcbiAgICB0aGlzLnNlcnZpY2UubGlzdGVuTWVzc2FnZSh0aGlzLnJlY2VpdmUuYmluZCh0aGlzKSk7XG5cbiAgICAvLyBjb25uZWN0IHRoZSBzb2NrZXRcbiAgICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgLy8gb25seSByZXNvbHZlIHRoaXMgZnVuY3Rpb24gd2hlbiB3ZSBhcmUgYWN0dWFsbHkgY29ubmVjdGVkXG4gICAgICB0aGlzLnNvY2tldC5vbignY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgbG9nLmRlYnVnKGBEZWJ1Z2dlciBzb2NrZXQgY29ubmVjdGVkYCk7XG4gICAgICAgIHRoaXMuaXNDb25uZWN0ZWQgPSB0cnVlO1xuXG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zb2NrZXQub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0Nvbm5lY3RlZCkge1xuICAgICAgICAgIGxvZy5lcnJvcihgU29ja2V0IGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICAgIHRoaXMuaXNDb25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoZSBjb25uZWN0aW9uIHdhcyByZWZ1c2VkLCBzbyByZWplY3QgdGhlIGNvbm5lY3QgcHJvbWlzZVxuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGlzY29ubmVjdCAoKSB7XG4gICAgaWYgKCF0aGlzLmlzQ29ubmVjdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbG9nLmRlYnVnKCdEaXNjb25uZWN0aW5nIGZyb20gcmVtb3RlIGRlYnVnZ2VyJyk7XG4gICAgYXdhaXQgc3VwZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuc2VydmljZS5jbG9zZSgpO1xuICAgIHRoaXMuaXNDb25uZWN0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHNlbmRNZXNzYWdlIChjbWQpIHtcbiAgICBsZXQgb25Tb2NrZXRFcnJvcjtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBoYW5kbGUgc29ja2V0IHByb2JsZW1zXG4gICAgICBvblNvY2tldEVycm9yID0gKGVycikgPT4ge1xuICAgICAgICBsb2cuZXJyb3IoYFNvY2tldCBlcnJvcjogJHtlcnIubWVzc2FnZX1gKTtcblxuICAgICAgICAvLyB0aGUgY29ubmVjdGlvbiB3YXMgcmVmdXNlZCwgc28gcmVqZWN0IHRoZSBjb25uZWN0IHByb21pc2VcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNvY2tldC5vbignZXJyb3InLCBvblNvY2tldEVycm9yKTtcbiAgICAgIHRoaXMuc2VydmljZS5zZW5kTWVzc2FnZShjbWQpO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0pXG4gICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgLy8gcmVtb3ZlIHRoaXMgbGlzdGVuZXIsIHNvIHdlIGRvbid0IGV4aGF1c3QgdGhlIHN5c3RlbVxuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5zb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25Tb2NrZXRFcnJvcik7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZWNlaXZlIChkYXRhKSB7XG4gICAgaWYgKCF0aGlzLmlzQ29ubmVjdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgWydXSVJNZXNzYWdlRGF0YUtleScsICdXSVJEZXN0aW5hdGlvbktleScsICdXSVJTb2NrZXREYXRhS2V5J10pIHtcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZChkYXRhW2tleV0pKSB7XG4gICAgICAgIGRhdGFba2V5XSA9IGRhdGFba2V5XS50b1N0cmluZygndXRmOCcpO1xuICAgICAgfVxuICAgIH1cbiAgICBhd2FpdCB0aGlzLm1lc3NhZ2VIYW5kbGVyLmhhbmRsZU1lc3NhZ2UoZGF0YSk7XG4gIH1cbn1cbiJdLCJmaWxlIjoibGliL3JwYy9ycGMtY2xpZW50LXNpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
168
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ycGMvcnBjLWNsaWVudC1zaW11bGF0b3IuanMiXSwibmFtZXMiOlsiUnBjQ2xpZW50U2ltdWxhdG9yIiwiUnBjQ2xpZW50IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwic2hvdWxkQ2hlY2tGb3JUYXJnZXQiLCJzb2NrZXRQYXRoIiwiaG9zdCIsInBvcnQiLCJtZXNzYWdlUHJveHkiLCJzb2NrZXQiLCJjb25uZWN0IiwibG9nIiwiZGVidWciLCJuZXQiLCJvbmNlIiwid3JpdGUiLCJKU09OIiwic3RyaW5naWZ5IiwiU29ja2V0IiwidHlwZSIsInNldE5vRGVsYXkiLCJzZXRLZWVwQWxpdmUiLCJvbiIsImlzQ29ubmVjdGVkIiwic2VydmljZSIsInNlcnZpY2VzIiwic3RhcnRXZWJJbnNwZWN0b3JTZXJ2aWNlIiwidWRpZCIsImlzU2ltdWxhdG9yIiwib3NWZXJzaW9uIiwicGxhdGZvcm1WZXJzaW9uIiwidmVyYm9zZSIsImxvZ0FsbENvbW11bmljYXRpb24iLCJ2ZXJib3NlSGV4RHVtcCIsImxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wIiwibWF4RnJhbWVMZW5ndGgiLCJ3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCIsImxpc3Rlbk1lc3NhZ2UiLCJyZWNlaXZlIiwiYmluZCIsIkIiLCJyZXNvbHZlIiwicmVqZWN0IiwiZXJyIiwiZXJyb3IiLCJtZXNzYWdlIiwiZGlzY29ubmVjdCIsImNsb3NlIiwic2VuZE1lc3NhZ2UiLCJjbWQiLCJvblNvY2tldEVycm9yIiwiZmluYWxseSIsInJlbW92ZUxpc3RlbmVyIiwiaWduIiwiZGF0YSIsImtleSIsIl8iLCJpc1VuZGVmaW5lZCIsInRvU3RyaW5nIiwibWVzc2FnZUhhbmRsZXIiLCJoYW5kbGVNZXNzYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdlLE1BQU1BLGtCQUFOLFNBQWlDQyxrQkFBakMs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O0FBQ3ZCaEMsd0JBQUlpQyxLQUFKLENBQVcsaUJBQWdCRCxHQUFHLENBQUNFLE9BQVEsRUFBdkM7O0FBR0FILFFBQUFBLE1BQU0sQ0FBQ0MsR0FBRCxDQUFOO0FBQ0QsT0FMRDs7QUFPQSxXQUFLbEMsTUFBTCxDQUFZYSxFQUFaLENBQWUsT0FBZixFQUF3QjRCLGFBQXhCO0FBQ0EsV0FBSzFCLE9BQUwsQ0FBYXdCLFdBQWIsQ0FBeUJDLEdBQXpCO0FBQ0FSLE1BQUFBLE9BQU87QUFDUixLQVpZLEVBYVpVLE9BYlksQ0FhSixNQUFNO0FBRWIsVUFBSTtBQUNGLGFBQUsxQyxNQUFMLENBQVkyQyxjQUFaLENBQTJCLE9BQTNCLEVBQW9DRixhQUFwQztBQUNELE9BRkQsQ0FFRSxPQUFPRyxHQUFQLEVBQVksQ0FBRTtBQUNqQixLQWxCWSxDQUFiO0FBbUJEOztBQUVELFFBQU1mLE9BQU4sQ0FBZWdCLElBQWYsRUFBcUI7QUFDbkIsUUFBSSxDQUFDLEtBQUsvQixXQUFWLEVBQXVCO0FBQ3JCO0FBQ0Q7O0FBRUQsUUFBSSxDQUFDK0IsSUFBTCxFQUFXO0FBQ1Q7QUFDRDs7QUFFRCxTQUFLLE1BQU1DLEdBQVgsSUFBa0IsQ0FBQyxtQkFBRCxFQUFzQixtQkFBdEIsRUFBMkMsa0JBQTNDLENBQWxCLEVBQWtGO0FBQ2hGLFVBQUksQ0FBQ0MsZ0JBQUVDLFdBQUYsQ0FBY0gsSUFBSSxDQUFDQyxHQUFELENBQWxCLENBQUwsRUFBK0I7QUFDN0JELFFBQUFBLElBQUksQ0FBQ0MsR0FBRCxDQUFKLEdBQVlELElBQUksQ0FBQ0MsR0FBRCxDQUFKLENBQVVHLFFBQVYsQ0FBbUIsTUFBbkIsQ0FBWjtBQUNEO0FBQ0Y7O0FBQ0QsVUFBTSxLQUFLQyxjQUFMLENBQW9CQyxhQUFwQixDQUFrQ04sSUFBbEMsQ0FBTjtBQUNEOztBQXBKdUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IG5ldCBmcm9tICduZXQnO1xuaW1wb3J0IFJwY0NsaWVudCBmcm9tICcuL3JwYy1jbGllbnQnO1xuaW1wb3J0IHsgc2VydmljZXMgfSBmcm9tICdhcHBpdW0taW9zLWRldmljZSc7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnBjQ2xpZW50U2ltdWxhdG9yIGV4dGVuZHMgUnBjQ2xpZW50IHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKE9iamVjdC5hc3NpZ24oe1xuICAgICAgc2hvdWxkQ2hlY2tGb3JUYXJnZXQ6IGZhbHNlLFxuICAgIH0sIG9wdHMpKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIHNvY2tldFBhdGgsXG4gICAgICBob3N0ID0gJzo6MScsXG4gICAgICBwb3J0LFxuICAgICAgbWVzc2FnZVByb3h5LFxuICAgIH0gPSBvcHRzO1xuXG4gICAgLy8gaG9zdC9wb3J0IGNvbmZpZyBmb3IgVENQIGNvbW11bmljYXRpb24sIHNvY2tldFBhdGggZm9yIHVuaXggZG9tYWluIHNvY2tldHNcbiAgICB0aGlzLmhvc3QgPSBob3N0O1xuICAgIHRoaXMucG9ydCA9IHBvcnQ7XG4gICAgdGhpcy5tZXNzYWdlUHJveHkgPSBtZXNzYWdlUHJveHk7XG5cbiAgICB0aGlzLnNvY2tldCA9IG51bGw7XG4gICAgdGhpcy5zb2NrZXRQYXRoID0gc29ja2V0UGF0aDtcbiAgfVxuXG4gIGFzeW5jIGNvbm5lY3QgKCkge1xuICAgIC8vIGNyZWF0ZSBzb2NrZXQgYW5kIGhhbmRsZSBpdHMgbWVzc2FnZXNcbiAgICBpZiAodGhpcy5zb2NrZXRQYXRoKSB7XG4gICAgICBpZiAodGhpcy5tZXNzYWdlUHJveHkpIHtcbiAgICAgICAgLy8gdW5peCBkb21haW4gc29ja2V0IHZpYSBwcm94eVxuICAgICAgICBsb2cuZGVidWcoYENvbm5lY3RpbmcgdG8gcmVtb3RlIGRlYnVnZ2VyIHZpYSBwcm94eSB0aHJvdWdoIHVuaXggZG9tYWluIHNvY2tldDogJyR7dGhpcy5tZXNzYWdlUHJveHl9J2ApO1xuICAgICAgICB0aGlzLnNvY2tldCA9IG5ldC5jb25uZWN0KHRoaXMubWVzc2FnZVByb3h5KTtcblxuICAgICAgICAvLyBGb3J3YXJkIHRoZSBhY3R1YWwgc29ja2V0UGF0aCB0byB0aGUgcHJveHlcbiAgICAgICAgdGhpcy5zb2NrZXQub25jZSgnY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgICBsb2cuZGVidWcoYEZvcndhcmRpbmcgdGhlIGFjdHVhbCB3ZWIgaW5zcGVjdG9yIHNvY2tldCB0byB0aGUgcHJveHk6ICcke3RoaXMuc29ja2V0UGF0aH0nYCk7XG4gICAgICAgICAgdGhpcy5zb2NrZXQud3JpdGUoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgc29ja2V0UGF0aDogdGhpcy5zb2NrZXRQYXRoXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdW5peCBkb21haW4gc29ja2V0XG4gICAgICAgIGxvZy5kZWJ1ZyhgQ29ubmVjdGluZyB0byByZW1vdGUgZGVidWdnZXIgdGhyb3VnaCB1bml4IGRvbWFpbiBzb2NrZXQ6ICcke3RoaXMuc29ja2V0UGF0aH0nYCk7XG4gICAgICAgIHRoaXMuc29ja2V0ID0gbmV0LmNvbm5lY3QodGhpcy5zb2NrZXRQYXRoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMubWVzc2FnZVByb3h5KSB7XG4gICAgICAgIC8vIGNvbm5lY3QgdG8gdGhlIHByb3h5IGluc3RlYWQgb2YgdGhlIHJlbW90ZSBkZWJ1Z2dlciBkaXJlY3RseVxuICAgICAgICB0aGlzLnBvcnQgPSB0aGlzLm1lc3NhZ2VQcm94eTtcbiAgICAgIH1cblxuICAgICAgLy8gdGNwIHNvY2tldFxuICAgICAgbG9nLmRlYnVnKGBDb25uZWN0aW5nIHRvIHJlbW90ZSBkZWJ1Z2dlciAke3RoaXMubWVzc2FnZVByb3h5ID8gJ3ZpYSBwcm94eSAnIDogJyd9dGhyb3VnaCBUQ1A6ICR7dGhpcy5ob3N0fToke3RoaXMucG9ydH1gKTtcbiAgICAgIHRoaXMuc29ja2V0ID0gbmV3IG5ldC5Tb2NrZXQoe3R5cGU6ICd0Y3A2J30pO1xuICAgICAgdGhpcy5zb2NrZXQuY29ubmVjdCh0aGlzLnBvcnQsIHRoaXMuaG9zdCk7XG4gICAgfVxuXG4gICAgdGhpcy5zb2NrZXQuc2V0Tm9EZWxheSh0cnVlKTtcbiAgICB0aGlzLnNvY2tldC5zZXRLZWVwQWxpdmUodHJ1ZSk7XG4gICAgdGhpcy5zb2NrZXQub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgbG9nLmRlYnVnKCdEZWJ1Z2dlciBzb2NrZXQgZGlzY29ubmVjdGVkJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzQ29ubmVjdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLnNvY2tldCA9IG51bGw7XG4gICAgfSk7XG4gICAgdGhpcy5zb2NrZXQub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHRoaXMuaXNDb25uZWN0ZWQgPSBmYWxzZTtcbiAgICB9KTtcbiAgICB0aGlzLnNlcnZpY2UgPSBhd2FpdCBzZXJ2aWNlcy5zdGFydFdlYkluc3BlY3RvclNlcnZpY2UodGhpcy51ZGlkLCB7XG4gICAgICBzb2NrZXQ6IHRoaXMuc29ja2V0LFxuICAgICAgaXNTaW11bGF0b3I6IHRydWUsXG4gICAgICBvc1ZlcnNpb246IHRoaXMucGxhdGZvcm1WZXJzaW9uLFxuICAgICAgdmVyYm9zZTogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uLFxuICAgICAgdmVyYm9zZUhleER1bXA6IHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAsXG4gICAgICBtYXhGcmFtZUxlbmd0aDogdGhpcy53ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCxcbiAgICB9KTtcbiAgICB0aGlzLnNlcnZpY2UubGlzdGVuTWVzc2FnZSh0aGlzLnJlY2VpdmUuYmluZCh0aGlzKSk7XG5cbiAgICAvLyBjb25uZWN0IHRoZSBzb2NrZXRcbiAgICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgLy8gb25seSByZXNvbHZlIHRoaXMgZnVuY3Rpb24gd2hlbiB3ZSBhcmUgYWN0dWFsbHkgY29ubmVjdGVkXG4gICAgICB0aGlzLnNvY2tldC5vbignY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgbG9nLmRlYnVnKGBEZWJ1Z2dlciBzb2NrZXQgY29ubmVjdGVkYCk7XG4gICAgICAgIHRoaXMuaXNDb25uZWN0ZWQgPSB0cnVlO1xuXG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zb2NrZXQub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0Nvbm5lY3RlZCkge1xuICAgICAgICAgIGxvZy5lcnJvcihgU29ja2V0IGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICAgIHRoaXMuaXNDb25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoZSBjb25uZWN0aW9uIHdhcyByZWZ1c2VkLCBzbyByZWplY3QgdGhlIGNvbm5lY3QgcHJvbWlzZVxuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGlzY29ubmVjdCAoKSB7XG4gICAgaWYgKCF0aGlzLmlzQ29ubmVjdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbG9nLmRlYnVnKCdEaXNjb25uZWN0aW5nIGZyb20gcmVtb3RlIGRlYnVnZ2VyJyk7XG4gICAgYXdhaXQgc3VwZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuc2VydmljZS5jbG9zZSgpO1xuICAgIHRoaXMuaXNDb25uZWN0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHNlbmRNZXNzYWdlIChjbWQpIHtcbiAgICBsZXQgb25Tb2NrZXRFcnJvcjtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBoYW5kbGUgc29ja2V0IHByb2JsZW1zXG4gICAgICBvblNvY2tldEVycm9yID0gKGVycikgPT4ge1xuICAgICAgICBsb2cuZXJyb3IoYFNvY2tldCBlcnJvcjogJHtlcnIubWVzc2FnZX1gKTtcblxuICAgICAgICAvLyB0aGUgY29ubmVjdGlvbiB3YXMgcmVmdXNlZCwgc28gcmVqZWN0IHRoZSBjb25uZWN0IHByb21pc2VcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNvY2tldC5vbignZXJyb3InLCBvblNvY2tldEVycm9yKTtcbiAgICAgIHRoaXMuc2VydmljZS5zZW5kTWVzc2FnZShjbWQpO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0pXG4gICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgLy8gcmVtb3ZlIHRoaXMgbGlzdGVuZXIsIHNvIHdlIGRvbid0IGV4aGF1c3QgdGhlIHN5c3RlbVxuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5zb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25Tb2NrZXRFcnJvcik7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZWNlaXZlIChkYXRhKSB7XG4gICAgaWYgKCF0aGlzLmlzQ29ubmVjdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgWydXSVJNZXNzYWdlRGF0YUtleScsICdXSVJEZXN0aW5hdGlvbktleScsICdXSVJTb2NrZXREYXRhS2V5J10pIHtcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZChkYXRhW2tleV0pKSB7XG4gICAgICAgIGRhdGFba2V5XSA9IGRhdGFba2V5XS50b1N0cmluZygndXRmOCcpO1xuICAgICAgfVxuICAgIH1cbiAgICBhd2FpdCB0aGlzLm1lc3NhZ2VIYW5kbGVyLmhhbmRsZU1lc3NhZ2UoZGF0YSk7XG4gIH1cbn1cbiJdLCJmaWxlIjoibGliL3JwYy9ycGMtY2xpZW50LXNpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -51,6 +51,7 @@ class RpcClient {
51
51
  isSafari = true,
52
52
  logAllCommunication = false,
53
53
  logAllCommunicationHexDump = false,
54
+ webInspectorMaxFrameLength,
54
55
  socketChunkSize,
55
56
  fullPageInitialization = false
56
57
  } = opts;
@@ -62,6 +63,7 @@ class RpcClient {
62
63
  this.logAllCommunication = logAllCommunication;
63
64
  this.logAllCommunicationHexDump = logAllCommunicationHexDump;
64
65
  this.socketChunkSize = socketChunkSize;
66
+ this.webInspectorMaxFrameLength = webInspectorMaxFrameLength;
65
67
  this.fullPageInitialization = fullPageInitialization;
66
68
  this.bundleId = bundleId;
67
69
  this.platformVersion = platformVersion;
@@ -178,12 +180,17 @@ class RpcClient {
178
180
 
179
181
  return await this.sendToDevice(command, opts, waitForResponse);
180
182
  } catch (err) {
181
- if (err.message.includes(`'Target' domain was not found`)) {
182
- _logger.default.info('The target device does not support Target basde communication. ' + 'Will follow non-target based communication.');
183
+ let {
184
+ message = ''
185
+ } = err;
186
+ message = message.toLowerCase();
187
+
188
+ if (message.includes(`'target' domain was not found`)) {
189
+ _logger.default.info('The target device does not support Target based communication. ' + 'Will follow non-target based communication.');
183
190
 
184
191
  this.isTargetBased = false;
185
192
  return await this.sendToDevice(command, opts, waitForResponse);
186
- } else if (err.message.includes(`domain was not found`) || err.message.includes(`Some arguments of method`)) {
193
+ } else if (message.includes(`domain was not found`) || message.includes(`some arguments of method`) || message.includes(`missing target`)) {
187
194
  this.isTargetBased = true;
188
195
  await this.waitForTarget(appIdKey, pageIdKey);
189
196
  return await this.sendToDevice(command, opts, waitForResponse);
@@ -561,4 +568,4 @@ class RpcClient {
561
568
  exports.default = RpcClient;require('source-map-support').install();
562
569
 
563
570
 
564
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ycGMvcnBjLWNsaWVudC5qcyJdLCJuYW1lcyI6WyJEQVRBX0xPR19MRU5HVEgiLCJsZW5ndGgiLCJXQUlUX0ZPUl9UQVJHRVRfVElNRU9VVCIsIldBSVRfRk9SX1RBUkdFVF9JTlRFUlZBTCIsIk1JTl9QTEFURk9STV9GT1JfVEFSR0VUX0JBU0VEIiwiTUlOX1BMQVRGT1JNX05PX1RBUkdFVF9FWElTVFMiLCJpc1RhcmdldEJhc2VkIiwiaXNTYWZhcmkiLCJwbGF0Zm9ybVZlcnNpb24iLCJpc0hpZ2hWZXJzaW9uIiwidXRpbCIsImNvbXBhcmVWZXJzaW9ucyIsImxvZyIsImRlYnVnIiwiUnBjQ2xpZW50IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiX3RhcmdldHMiLCJfc2hvdWxkQ2hlY2tGb3JUYXJnZXQiLCJzaG91bGRDaGVja0ZvclRhcmdldCIsImJ1bmRsZUlkIiwibG9nQWxsQ29tbXVuaWNhdGlvbiIsImxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wIiwic29ja2V0Q2h1bmtTaXplIiwiZnVsbFBhZ2VJbml0aWFsaXphdGlvbiIsImlzQ29ubmVjdGVkIiwiY29ubklkIiwidXVpZFY0Iiwic2VuZGVySWQiLCJtc2dJZCIsIl9jb250ZXh0cyIsImNvbnRleHRzIiwibmVlZHNUYXJnZXQiLCJ0YXJnZXRzIiwiY29ubmVjdGVkIiwib24iLCJldmVudCIsImxpc3RlbmVyIiwibWVzc2FnZUhhbmRsZXIiLCJvbmNlIiwib2ZmIiwid2FybiIsIl9pc1RhcmdldEJhc2VkIiwicmVtb3RlTWVzc2FnZXMiLCJSZW1vdGVNZXNzYWdlcyIsIlJwY01lc3NhZ2VIYW5kbGVyIiwiYWRkVGFyZ2V0IiwiYmluZCIsInVwZGF0ZVRhcmdldCIsInJlbW92ZVRhcmdldCIsIm9uRXhlY3V0aW9uQ29udGV4dENyZWF0ZWQiLCJvbkdhcmJhZ2VDb2xsZWN0ZWQiLCJ3YWl0Rm9yVGFyZ2V0IiwiYXBwSWRLZXkiLCJwYWdlSWRLZXkiLCJmb3JjZSIsImdldFRhcmdldCIsIl8iLCJpc0VtcHR5Iiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsImVycm9yIiwiZXJyIiwibWVzc2FnZSIsImluY2x1ZGVzIiwiRXJyb3IiLCJzZW5kIiwiY29tbWFuZCIsIndhaXRGb3JSZXNwb25zZSIsInRpbWVyIiwidGltaW5nIiwiVGltZXIiLCJzdGFydCIsInNlbmRUb0RldmljZSIsImluZm8iLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsIkIiLCJyZXNvbHZlIiwicmVqZWN0Iiwid3JhcHBlck1zZ0lkIiwidG9TdHJpbmciLCJ0YXJnZXRJZCIsImZ1bGxPcHRzIiwiZGVmYXVsdHMiLCJpZCIsImNtZCIsImdldFJlbW90ZUNvbW1hbmQiLCJfX2FyZ3VtZW50IiwiV0lSU29ja2V0RGF0YUtleSIsImlzTmlsIiwiQnVmZmVyIiwiZnJvbSIsIkpTT04iLCJzdHJpbmdpZnkiLCJtZXNzYWdlSGFuZGxlZCIsInRydW5jYXRlIiwibGlzdGVuZXJzIiwiX19zZWxlY3RvciIsInByZXBlbmRPbmNlTGlzdGVuZXIiLCJhcmdzIiwidmFsdWUiLCJjb2RlIiwibXNnIiwicmVzIiwic2VuZE1lc3NhZ2UiLCJjb25uZWN0IiwiZGlzY29ubmVjdCIsInJlbW92ZUFsbExpc3RlbmVycyIsInJlY2VpdmUiLCJhcHAiLCJ0YXJnZXRJbmZvIiwicGVuZGluZ1RhcmdldE5vdGlmaWNhdGlvbiIsImlzUHJvdmlzaW9uYWwiLCJoYXMiLCJvbGRUYXJnZXRJZCIsIm5ld1RhcmdldElkIiwicHJvdmlzaW9uYWwiLCJwYWdlIiwidG9QYWlycyIsInNlbGVjdFBhZ2UiLCJzZW5kT3B0cyIsImVuYWJsZWQiLCJPYmplY3QiLCJhc3NpZ24iLCJpbml0aWFsaXplUGFnZUZ1bGwiLCJpbml0aWFsaXplUGFnZSIsImRpc2FibGVkIiwiaW5zdHJ1bWVudHMiLCJhY3RpdmUiLCJzdGF0ZSIsImRlcHRoIiwic2hvdWxkUGF1c2UiLCJsb2dnaW5nQ2hhbm5lbHMiLCJzb3VyY2UiLCJjaGFubmVscyIsIm1hcCIsImVudHJ5IiwibGV2ZWwiLCJzZWxlY3RBcHAiLCJvbkFwcENoYW5nZSIsImRpY3QiLCJvbGRBcHBJZEtleSIsIldJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiLCJjb3JyZWN0QXBwSWRLZXkiLCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiLCJwYWdlRGljdCIsImNvbm5lY3RlZEFwcElkS2V5IiwiY29udGV4dCIsInB1c2giLCJvblNjcmlwdFBhcnNlZCIsInNjcmlwdEluZm8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsZUFBZSxHQUFHO0FBQUNDLEVBQUFBLE1BQU0sRUFBRTtBQUFULENBQXhCO0FBRUEsTUFBTUMsdUJBQXVCLEdBQUcsS0FBaEM7QUFDQSxNQUFNQyx3QkFBd0IsR0FBRyxJQUFqQztBQUVBLE1BQU1DLDZCQUE2QixHQUFHLE1BQXRDO0FBR0EsTUFBTUMsNkJBQTZCLEdBQUcsTUFBdEM7O0FBRUEsU0FBU0MsYUFBVCxDQUF3QkMsUUFBeEIsRUFBa0NDLGVBQWxDLEVBQW1EO0FBSWpELFFBQU1DLGFBQWEsR0FBR0Msb0JBQUtDLGVBQUwsQ0FBcUJILGVBQXJCLEVBQXNDLElBQXRDLEVBQTRDSiw2QkFBNUMsQ0FBdEI7O0FBQ0FRLGtCQUFJQyxLQUFKLENBQVcsOENBQTZDTixRQUFRLEdBQUcsRUFBSCxHQUFRLE1BQU8sK0JBQThCQyxlQUFnQixJQUE3SDs7QUFDQUksa0JBQUlDLEtBQUosQ0FBVywwQ0FBeUNULDZCQUE4QixNQUFLSyxhQUFjLEVBQXJHOztBQUNBLFNBQU9BLGFBQVA7QUFDRDs7QUFFYyxNQUFNSyxTQUFOLENBQWdCO0FBQzdCQyxFQUFBQSxXQUFXLENBQUVDLElBQUksR0FBRyxFQUFULEVBQWE7QUFDdEIsU0FBS0MsUUFBTCxHQUFnQixFQUFoQjtBQUNBLFNBQUtDLHFCQUFMLEdBQTZCLENBQUMsQ0FBQ0YsSUFBSSxDQUFDRyxvQkFBcEM7QUFFQSxVQUFNO0FB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LFFBQVYsQ0FBSixFQUF5QjtBQUN2QixjQUFJM0MsR0FBRyxHQUFHLGdDQUFWOztBQUNBNUYsMEJBQUlDLEtBQUosQ0FBVTJGLEdBQVY7O0FBQ0F4QixVQUFBQSxNQUFNLENBQUMsSUFBSWYsS0FBSixDQUFVdUMsR0FBVixDQUFELENBQU47QUFDRCxTQUpELE1BSU87QUFDTHpCLFVBQUFBLE9BQU8sQ0FBQyxDQUFDcUUsaUJBQUQsRUFBb0JELFFBQXBCLENBQUQsQ0FBUDtBQUNEO0FBQ0YsT0FwQk0sR0FBUDtBQXFCRCxLQTdDWSxDQUFiO0FBOENEOztBQUVEakcsRUFBQUEseUJBQXlCLENBQUVZLEdBQUYsRUFBT3VGLE9BQVAsRUFBZ0I7QUFJdkMsU0FBS3RILFFBQUwsQ0FBY3VILElBQWQsQ0FBbUJELE9BQU8sQ0FBQy9ELEVBQTNCO0FBQ0Q7O0FBRURuQyxFQUFBQSxrQkFBa0IsR0FBSTtBQUVwQnZDLG9CQUFJQyxLQUFKLENBQVcsaUNBQVg7QUFDRDs7QUFFRDBJLEVBQUFBLGNBQWMsQ0FBRXpGLEdBQUYsRUFBTzBGLFVBQVAsRUFBbUI7QUFFL0I1SSxvQkFBSUMsS0FBSixDQUFXLGtCQUFpQmlGLElBQUksQ0FBQ0MsU0FBTCxDQUFleUQsVUFBZixDQUEyQixFQUF2RDtBQUNEOztBQTVoQjRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlbW90ZU1lc3NhZ2VzIGZyb20gJy4vcmVtb3RlLW1lc3NhZ2VzJztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IFJwY01lc3NhZ2VIYW5kbGVyIGZyb20gJy4vcnBjLW1lc3NhZ2UtaGFuZGxlcic7XG5pbXBvcnQgeyB1dGlsLCB0aW1pbmcgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5cblxuY29uc3QgREFUQV9MT0dfTEVOR1RIID0ge2xlbmd0aDogMjAwfTtcblxuY29uc3QgV0FJVF9GT1JfVEFSR0VUX1RJTUVPVVQgPSAxMDAwMDtcbmNvbnN0IFdBSVRfRk9SX1RBUkdFVF9JTlRFUlZBTCA9IDEwMDA7XG5cbmNvbnN0IE1JTl9QTEFURk9STV9GT1JfVEFSR0VUX0JBU0VEID0gJzEyLjInO1xuXG4vLyBgVGFyZ2V0LmV4aXN0c2AgcHJvdG9jb2wgbWV0aG9kIHdhcyByZW1vdmVkIGZyb20gV2ViS2l0aW4gMTMuNFxuY29uc3QgTUlOX1BMQVRGT1JNX05PX1RBUkdFVF9FWElTVFMgPSAnMTMuNCc7XG5cbmZ1bmN0aW9uIGlzVGFyZ2V0QmFzZWQgKGlzU2FmYXJpLCBwbGF0Zm9ybVZlcnNpb24pIHtcbiAgLy8gT24gaU9TIDEyLjIgdGhlIG1lc3NhZ2VzIGdldCBzZW50IHRocm91Z2ggdGhlIFRhcmdldCBkb21haW5cbiAgLy8gT24gaU9TIDEzLjArLCBXS1dlYlZpZXcgYWxzbyBuZWVkcyB0byBmb2xsb3cgdGhlIFRhcmdldCBkb21haW4sXG4gIC8vIHNvIGhlcmUgb25seSBjaGVjayB0aGUgdGFyZ2V0IE9TIHZlcnNpb24gYXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLlxuICBjb25zdCBpc0hpZ2hWZXJzaW9uID0gdXRpbC5jb21wYXJlVmVyc2lvbnMocGxhdGZvcm1WZXJzaW9uLCAnPj0nLCBNSU5fUExBVEZPUk1fRk9SX1RBUkdFVF9CQVNFRCk7XG4gIGxvZy5kZWJ1ZyhgQ2hlY2tpbmcgd2hpY2ggY29tbXVuaWNhdGlvbiBzdHlsZSB0byB1c2UgKCR7aXNTYWZhcmkgPyAnJyA6ICdub24tJ31TYWZhcmkgb24gcGxhdGZvcm0gdmVyc2lvbiAnJHtwbGF0Zm9ybVZlcnNpb259JylgKTtcbiAgbG9nLmRlYnVnKGBQbGF0Zm9ybSB2ZXJzaW9uIGVxdWFsIG9yIGhpZ2hlciB0aGFuICcke01JTl9QTEFURk9STV9GT1JfVEFSR0VUX0JBU0VEfSc6ICR7aXNIaWdoVmVyc2lvbn1gKTtcbiAgcmV0dXJuIGlzSGlnaFZlcnNpb247XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJwY0NsaWVudCB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICB0aGlzLl90YXJnZXRzID0gW107XG4gICAgdGhpcy5fc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSAhIW9wdHMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQ7XG5cbiAgICBjb25zdCB7XG4gICAgICBidW5kbGVJZCxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbiA9IHt9LFxuICAgICAgaXNTYWZhcmkgPSB0cnVlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbiA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgPSBmYWxzZSxcbiAgICAgIHNvY2tldENodW5rU2l6ZSxcbiAgICAgIGZ1bGxQYWdlSW5pdGlhbGl6YXRpb24gPSBmYWxzZSxcbiAgICB9ID0gb3B0cztcblxuICAgIHRoaXMuaXNTYWZhcmkgPSBpc1NhZmFyaTtcblxuICAgIHRoaXMuaXNDb25uZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNvbm5JZCA9IHV0aWwudXVpZFY0KCk7XG4gICAgdGhpcy5zZW5kZXJJZCA9IHV0aWwudXVpZFY0KCk7XG4gICAgdGhpcy5tc2dJZCA9IDA7XG5cbiAgICB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24gPSBsb2dBbGxDb21tdW5pY2F0aW9uO1xuICAgIHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgPSBsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcDtcbiAgICB0aGlzLnNvY2tldENodW5rU2l6ZSA9IHNvY2tldENodW5rU2l6ZTtcblxuICAgIHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbiA9IGZ1bGxQYWdlSW5pdGlhbGl6YXRpb247XG5cbiAgICB0aGlzLmJ1bmRsZUlkID0gYnVuZGxlSWQ7XG4gICAgdGhpcy5wbGF0Zm9ybVZlcnNpb24gPSBwbGF0Zm9ybVZlcnNpb247XG5cbiAgICB0aGlzLl9jb250ZXh0cyA9IFtdO1xuICAgIHRoaXMuX3RhcmdldHMgPSB7fTtcblxuICAgIC8vIHN0YXJ0IHdpdGggYSBiZXN0IGd1ZXNzIGZvciB0aGUgcHJvdG9jb2xcbiAgICB0aGlzLmlzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkKGlzU2FmYXJpLCB0aGlzLnBsYXRmb3JtVmVyc2lvbik7XG4gIH1cblxuICBnZXQgY29udGV4dHMgKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250ZXh0cztcbiAgfVxuXG4gIGdldCBuZWVkc1RhcmdldCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgJiYgdGhpcy5pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IHRhcmdldHMgKCkge1xuICAgIHJldHVybiB0aGlzLl90YXJnZXRzO1xuICB9XG5cbiAgZ2V0IHNob3VsZENoZWNrRm9yVGFyZ2V0ICgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvdWxkQ2hlY2tGb3JUYXJnZXQ7XG4gIH1cblxuICBzZXQgc2hvdWxkQ2hlY2tGb3JUYXJnZXQgKHNob3VsZENoZWNrRm9yVGFyZ2V0KSB7XG4gICAgdGhpcy5fc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSAhIXNob3VsZENoZWNrRm9yVGFyZ2V0O1xuICB9XG5cbiAgZ2V0IGlzQ29ubmVjdGVkICgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0ZWQ7XG4gIH1cblxuICBzZXQgaXNDb25uZWN0ZWQgKGNvbm5lY3RlZCkge1xuICAgIHRoaXMuY29ubmVjdGVkID0gISFjb25uZWN0ZWQ7XG4gIH1cblxuICBvbiAoZXZlbnQsIGxpc3RlbmVyKSB7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbihldmVudCwgbGlzdGVuZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgb25jZSAoZXZlbnQsIGxpc3RlbmVyKSB7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbmNlKGV2ZW50LCBsaXN0ZW5lcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBvZmYgKGV2ZW50LCBsaXN0ZW5lcikge1xuICAgIHRoaXMubWVzc2FnZUhhbmRsZXIub2ZmKGV2ZW50LCBsaXN0ZW5lcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXQgaXNUYXJnZXRCYXNlZCAoaXNUYXJnZXRCYXNlZCkge1xuICAgIGxvZy53YXJuKGBTZXR0aW5nIGNvbW11bmljYXRpb24gcHJvdG9jb2w6IHVzaW5nICR7aXNUYXJnZXRCYXNlZCA/ICdUYXJnZXQtYmFzZWQnIDogJ2Z1bGwgV2ViIEluc3BlY3RvciBwcm90b2NvbCd9IGNvbW11bmljYXRpb25gKTtcbiAgICB0aGlzLl9pc1RhcmdldEJhc2VkID0gaXNUYXJnZXRCYXNlZDtcblxuICAgIGlmICghdGhpcy5yZW1vdGVNZXNzYWdlcykge1xuICAgICAgdGhpcy5yZW1vdGVNZXNzYWdlcyA9IG5ldyBSZW1vdGVNZXNzYWdlcyhpc1RhcmdldEJhc2VkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdGVNZXNzYWdlcy5pc1RhcmdldEJhc2VkID0gaXNUYXJnZXRCYXNlZDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIgPSBuZXcgUnBjTWVzc2FnZUhhbmRsZXIoaXNUYXJnZXRCYXNlZCk7XG5cbiAgICAgIC8vIGFkZCBoYW5kbGVycyBmb3IgaW50ZXJuYWwgZXZlbnRzXG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLm9uKCdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcsIHRoaXMuYWRkVGFyZ2V0LmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbignVGFyZ2V0LmRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0JywgdGhpcy51cGRhdGVUYXJnZXQuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLm9uKCdUYXJnZXQudGFyZ2V0RGVzdHJveWVkJywgdGhpcy5yZW1vdmVUYXJnZXQuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLm9uKCdSdW50aW1lLmV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkJywgdGhpcy5vbkV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkLmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbignSGVhcC5nYXJiYWdlQ29sbGVjdGVkJywgdGhpcy5vbkdhcmJhZ2VDb2xsZWN0ZWQuYmluZCh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIuaXNUYXJnZXRCYXNlZCA9IGlzVGFyZ2V0QmFzZWQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgYXN5bmMgd2FpdEZvclRhcmdldCAoYXBwSWRLZXksIHBhZ2VJZEtleSwgZm9yY2UgPSBmYWxzZSkge1xuICAgIGlmICghZm9yY2UgJiYgIXRoaXMubmVlZHNUYXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nZXRUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBvdGhlcndpc2Ugd2FpdGluZyBpcyBuZWNlc3NhcnkgdG8gc2VlIHdoYXQgdGhlIHRhcmdldCBpc1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKCgpID0+ICFfLmlzRW1wdHkodGhpcy5nZXRUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSkpLCB7XG4gICAgICAgIHdhaXRNczogV0FJVF9GT1JfVEFSR0VUX1RJTUVPVVQsXG4gICAgICAgIGludGVydmFsTXM6IFdBSVRfRk9SX1RBUkdFVF9JTlRFUlZBTCxcbiAgICAgICAgZXJyb3I6ICdObyB0YXJnZXRzIGZvdW5kLCB1bmFibGUgdG8gY29tbXVuaWNhdGUgd2l0aCBkZXZpY2UnLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoIWVyci5tZXNzYWdlLmluY2x1ZGVzKCdDb25kaXRpb24gdW5tZXQnKSkge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHRhcmdldHMgZm91bmQsIHVuYWJsZSB0byBjb21tdW5pY2F0ZSB3aXRoIGRldmljZScpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNlbmQgKGNvbW1hbmQsIG9wdHMgPSB7fSwgd2FpdEZvclJlc3BvbnNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gICAgY29uc3Qge1xuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXlcbiAgICB9ID0gb3B0cztcbiAgICB0cnkge1xuICAgICAgaWYgKCFfLmlzRW1wdHkoYXBwSWRLZXkpICYmICFfLmlzRW1wdHkocGFnZUlkS2V5KSkge1xuICAgICAgICBhd2FpdCB0aGlzLndhaXRGb3JUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kVG9EZXZpY2UoY29tbWFuZCwgb3B0cywgd2FpdEZvclJlc3BvbnNlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIubWVzc2FnZS5pbmNsdWRlcyhgJ1RhcmdldCcgZG9tYWluIHdhcyBub3QgZm91bmRgKSkge1xuICAgICAgICBsb2cuaW5mbygnVGhlIHRhcmdldCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBUYXJnZXQgYmFzZGUgY29tbXVuaWNhdGlvbi4gJyArXG4gICAgICAgICAgJ1dpbGwgZm9sbG93IG5vbi10YXJnZXQgYmFzZWQgY29tbXVuaWNhdGlvbi4nKTtcbiAgICAgICAgdGhpcy5pc1RhcmdldEJhc2VkID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnNlbmRUb0RldmljZShjb21tYW5kLCBvcHRzLCB3YWl0Rm9yUmVzcG9uc2UpO1xuICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZS5pbmNsdWRlcyhgZG9tYWluIHdhcyBub3QgZm91bmRgKSB8fCBlcnIubWVzc2FnZS5pbmNsdWRlcyhgU29tZSBhcmd1bWVudHMgb2YgbWV0aG9kYCkpIHtcbiAgICAgICAgdGhpcy5pc1RhcmdldEJhc2VkID0gdHJ1ZTtcbiAgICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yVGFyZ2V0KGFwcElkS2V5LCBwYWdlSWRLZXkpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kVG9EZXZpY2UoY29tbWFuZCwgb3B0cywgd2FpdEZvclJlc3BvbnNlKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgbG9nLmRlYnVnKGBTZW5kaW5nIHRvIFdlYiBJbnNwZWN0b3IgdG9vayAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNlbmRUb0RldmljZSAoY29tbWFuZCwgb3B0cyA9IHt9LCB3YWl0Rm9yUmVzcG9uc2UgPSB0cnVlKSB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIHByb21pc2UgdG8gYmUgcmVzb2x2ZWQgd2hlbmV2ZXIgcmVtb3RlIGRlYnVnZ2VyXG4gICAgICAvLyByZXBsaWVzIHRvIG91ciByZXF1ZXN0XG5cbiAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIG1lc3NhZ2VzIGNvbWluZyBhbmQgZ29pbmcgdXNpbmcgYSBzaW1wbGUgc2VxdWVudGlhbCBpZFxuICAgICAgY29uc3QgbXNnSWQgPSB0aGlzLm1zZ0lkKys7XG4gICAgICBsZXQgd3JhcHBlck1zZ0lkID0gbXNnSWQ7XG4gICAgICBpZiAodGhpcy5pc1RhcmdldEJhc2VkKSB7XG4gICAgICAgIC8vIGZvciB0YXJnZXQtYmFzZSBjb21tdW5pY2F0aW9uLCBldmVyeXRoaW5nIGlzIHdyYXBwZWQgdXBcbiAgICAgICAgd3JhcHBlck1zZ0lkID0gdGhpcy5tc2dJZCsrO1xuICAgICAgICAvLyBhY2tub3dsZWRnZSB3cmFwcGVyIG1lc3NhZ2VcbiAgICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbih3cmFwcGVyTXNnSWQudG9TdHJpbmcoKSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFwcElkS2V5ID0gb3B0cy5hcHBJZEtleTtcbiAgICAgIGNvbnN0IHBhZ2VJZEtleSA9IG9wdHMucGFnZUlkS2V5O1xuICAgICAgY29uc3QgdGFyZ2V0SWQgPSB0aGlzLmdldFRhcmdldChhcHBJZEtleSwgcGFnZUlkS2V5KTtcblxuICAgICAgLy8gcmV0cmlldmUgdGhlIGNvcnJlY3QgY29tbWFuZCB0byBzZW5kXG4gICAgICBjb25zdCBmdWxsT3B0cyA9IF8uZGVmYXVsdHMoe1xuICAgICAgICBjb25uSWQ6IHRoaXMuY29ubklkLFxuICAgICAgICBzZW5kZXJJZDogdGhpcy5zZW5kZXJJZCxcbiAgICAgICAgdGFyZ2V0SWQsXG4gICAgICAgIGlkOiBtc2dJZCxcbiAgICAgIH0sIG9wdHMpO1xuICAgICAgY29uc3QgY21kID0gdGhpcy5yZW1vdGVNZXNzYWdlcy5nZXRSZW1vdGVDb21tYW5kKGNvbW1hbmQsIGZ1bGxPcHRzKTtcblxuICAgICAgaWYgKGNtZD8uX19hcmd1bWVudD8uV0lSU29ja2V0RGF0YUtleSkge1xuICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIG1lc3NhZ2UgYmVpbmcgc2VudCBoYXMgYWxsIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIG5lZWRlZFxuICAgICAgICBpZiAoXy5pc05pbChjbWQuX19hcmd1bWVudC5XSVJTb2NrZXREYXRhS2V5LmlkKSkge1xuICAgICAgICAgIGNtZC5fX2FyZ3VtZW50LldJUlNvY2tldERhdGFLZXkuaWQgPSB3cmFwcGVyTXNnSWQ7XG4gICAgICAgIH1cbiAgICAgICAgY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleSA9XG4gICAgICAgICAgQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleSkpO1xuICAgICAgfVxuXG4gICAgICBsZXQgbWVzc2FnZUhhbmRsZWQgPSB0cnVlO1xuICAgICAgaWYgKCF3YWl0Rm9yUmVzcG9uc2UpIHtcbiAgICAgICAgLy8gdGhlIHByb21pc2Ugd2lsbCBiZSByZXNvbHZlZCBhcyBzb29uIGFzIHRoZSBzb2NrZXQgaGFzIGJlZW4gc2VudFxuICAgICAgICBtZXNzYWdlSGFuZGxlZCA9IGZhbHNlO1xuICAgICAgICAvLyBkbyBub3QgbG9nIHJlY2VpcHRzXG4gICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIub25jZShtc2dJZC50b1N0cmluZygpLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgLy8gd2UgYXJlIG5vdCB3YWl0aW5nIGZvciB0aGlzLCBhbmQgaWYgaXQgZXJyb3JzIGl0IGlzIG1vc3QgbGlrZWx5XG4gICAgICAgICAgICAvLyBhIHByb3RvY29sIGNoYW5nZS4gTG9nIGFuZCBjaGVjayBkdXJpbmcgdGVzdGluZ1xuICAgICAgICAgICAgbG9nLmVycm9yKGBSZWNlaXZlZCBlcnJvciBmcm9tIHNlbmQgdGhhdCBpcyBub3QgYmVpbmcgd2FpdGVkIGZvciAoaWQ6ICR7bXNnSWR9KTogJyR7Xy50cnVuY2F0ZShKU09OLnN0cmluZ2lmeShlcnIpLCBEQVRBX0xPR19MRU5HVEgpfSdgKTtcbiAgICAgICAgICAgIC8vIHJlamVjdCwgdGhvdWdoIGl0IGlzIHZlcnkgcmFyZSB0aGF0IHRoaXMgd2lsbCBiZSB0cmlnZ2VyZWQsIHNpbmNlXG4gICAgICAgICAgICAvLyB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCBkaXJlY3RsdHkgYWZ0ZXIgc2VuZC4gT24gdGhlIG9mZiBjaGFuY2UsXG4gICAgICAgICAgICAvLyB0aG91Z2gsIGl0IHdpbGwgYWxlcnQgb2YgYSBwcm90b2NvbCBjaGFuZ2UuXG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm1lc3NhZ2VIYW5kbGVyLmxpc3RlbmVycyhjbWQuX19zZWxlY3RvcikubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIucHJlcGVuZE9uY2VMaXN0ZW5lcihjbWQuX19zZWxlY3RvciwgZnVuY3Rpb24gKGVyciwgLi4uYXJncykge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCByZXNwb25zZSBmcm9tIHNlbmQgKGlkOiAke21zZ0lkfSk6ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkoYXJncyksIERBVEFfTE9HX0xFTkdUSCl9J2ApO1xuICAgICAgICAgIHJlc29sdmUoYXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChjbWQ/Ll9fYXJndW1lbnQ/LldJUlNvY2tldERhdGFLZXkpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbmNlKG1zZ0lkLnRvU3RyaW5nKCksIGZ1bmN0aW9uIChlcnIsIHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoYFJlbW90ZSBkZWJ1Z2dlciBlcnJvciB3aXRoIGNvZGUgJyR7ZXJyLmNvZGV9JzogJHtlcnIubWVzc2FnZX1gKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgZGF0YSByZXNwb25zZSBmcm9tIHNlbmQgKGlkOiAke21zZ0lkfSk6ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkodmFsdWUpLCBEQVRBX0xPR19MRU5HVEgpfSdgKTtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBub3RoaW5nIGVsc2UgaXMgaGFuZGxpbmcgdGhpbmdzLCBzbyBqdXN0IHJlc29sdmUgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZW50XG4gICAgICAgIG1lc3NhZ2VIYW5kbGVkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1zZyA9IGBTZW5kaW5nICcke2NtZC5fX3NlbGVjdG9yfScgbWVzc2FnZWAgK1xuICAgICAgICAoZnVsbE9wdHMuYXBwSWRLZXkgPyBgIHRvIGFwcCAnJHtmdWxsT3B0cy5hcHBJZEtleX0nYCA6ICcnKSArXG4gICAgICAgIChmdWxsT3B0cy5wYWdlSWRLZXkgPyBgLCBwYWdlICcke2Z1bGxPcHRzLnBhZ2VJZEtleX0nYCA6ICcnKSArXG4gICAgICAgICh0aGlzLm5lZWRzVGFyZ2V0ICYmIHRhcmdldElkID8gYCwgdGFyZ2V0ICcke3RhcmdldElkfSdgIDogJycpICtcbiAgICAgICAgYCAoaWQ6ICR7bXNnSWR9KTogJyR7Y29tbWFuZH0nYDtcbiAgICAgIGxvZy5kZWJ1Zyhtc2cpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZW5kTWVzc2FnZShjbWQpO1xuICAgICAgICBpZiAoIW1lc3NhZ2VIYW5kbGVkKSB7XG4gICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIGhhbmRsZXJzIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgYmVmb3JlIHJlc29sdmluZyxcbiAgICAgICAgICAvLyBhbmQgbm8gZXJyb3JzIHNlbmRpbmcgdGhlIG1lc3NhZ2Ugb3ZlciB0aGUgc29ja2V0LCBzbyByZXNvbHZlXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29ubmVjdCAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICAgIHRocm93IG5ldyBFcnJvcihgU3ViLWNsYXNzZXMgbmVlZCB0byBpbXBsZW1lbnQgYSAnY29ubmVjdCcgZnVuY3Rpb25gKTtcbiAgfVxuXG4gIGFzeW5jIGRpc2Nvbm5lY3QgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLnJlbW92ZUFsbExpc3RlbmVycygpO1xuICB9XG5cbiAgYXN5bmMgc2VuZE1lc3NhZ2UgKC8qIGNvbW1hbmQgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdWItY2xhc3NlcyBuZWVkIHRvIGltcGxlbWVudCBhICdzZW5kTWVzc2FnZScgZnVuY3Rpb25gKTtcbiAgfVxuXG4gIGFzeW5jIHJlY2VpdmUgKC8qIGRhdGEgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdWItY2xhc3NlcyBuZWVkIHRvIGltcGxlbWVudCBhICdyZWNlaXZlJyBmdW5jdGlvbmApO1xuICB9XG5cbiAgYWRkVGFyZ2V0IChlcnIsIGFwcCwgdGFyZ2V0SW5mbykge1xuICAgIGlmIChfLmlzTmlsKHRhcmdldEluZm8/LnRhcmdldElkKSkge1xuICAgICAgbG9nLndhcm4oYFJlY2VpdmVkICdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcgZXZlbnQgZm9yIGFwcCAnJHthcHB9JyB3aXRoIG5vIHRhcmdldC4gU2tpcHBpbmdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKF8uaXNFbXB0eSh0aGlzLnBlbmRpbmdUYXJnZXROb3RpZmljYXRpb24pICYmICF0YXJnZXRJbmZvLmlzUHJvdmlzaW9uYWwpIHtcbiAgICAgIGxvZy53YXJuKGBSZWNlaXZlZCAnVGFyZ2V0LnRhcmdldENyZWF0ZWQnIGV2ZW50IGZvciBhcHAgJyR7YXBwfScgd2l0aCBubyBwZW5kaW5nIHJlcXVlc3Q6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0SW5mbyl9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldEluZm8uaXNQcm92aXNpb25hbCkge1xuICAgICAgbG9nLmRlYnVnKGBQcm92aXNpb25hbCB0YXJnZXQgY3JlYXRlZCBmb3IgYXBwICcke2FwcH0nLCAnJHt0YXJnZXRJbmZvLnRhcmdldElkfScuIElnbm9yaW5nIHVudGlsIHRhcmdldCB1cGRhdGUgZXZlbnRgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBbYXBwSWRLZXksIHBhZ2VJZEtleV0gPSB0aGlzLnBlbmRpbmdUYXJnZXROb3RpZmljYXRpb247XG5cbiAgICBsb2cuZGVidWcoYFRhcmdldCBjcmVhdGVkIGZvciBhcHAgJyR7YXBwSWRLZXl9JyBhbmQgcGFnZSAnJHtwYWdlSWRLZXl9JzogJHtKU09OLnN0cmluZ2lmeSh0YXJnZXRJbmZvKX1gKTtcbiAgICBpZiAoXy5oYXModGhpcy50YXJnZXRzW2FwcElkS2V5XSwgcGFnZUlkS2V5KSkge1xuICAgICAgbG9nLmRlYnVnKGBUaGVyZSBpcyBhbHJlYWR5IGEgdGFyZ2V0IGZvciB0aGlzIGFwcCBhbmQgcGFnZSAoJyR7dGhpcy50YXJnZXRzW2FwcElkS2V5XVtwYWdlSWRLZXldfScpLiBUaGlzIG1pZ2h0IGNhdXNlIHByb2JsZW1zYCk7XG4gICAgfVxuICAgIHRoaXMudGFyZ2V0c1thcHBdID0gdGhpcy50YXJnZXRzW2FwcF0gfHwge307XG4gICAgdGhpcy50YXJnZXRzW2FwcElkS2V5XVtwYWdlSWRLZXldID0gdGFyZ2V0SW5mby50YXJnZXRJZDtcbiAgfVxuXG4gIHVwZGF0ZVRhcmdldCAoZXJyLCBhcHAsIG9sZFRhcmdldElkLCBuZXdUYXJnZXRJZCkge1xuICAgIGxvZy5kZWJ1ZyhgVGFyZ2V0IHVwZGF0ZWQgZm9yIGFwcCAnJHthcHB9Jy4gT2xkIHRhcmdldDogJyR7b2xkVGFyZ2V0SWR9JywgbmV3IHRhcmdldDogJyR7bmV3VGFyZ2V0SWR9J2ApO1xuICAgIGlmICghdGhpcy50YXJnZXRzW2FwcF0pIHtcbiAgICAgIGxvZy53YXJuKGBObyBleGlzdGluZyB0YXJnZXQgZm9yIGFwcCAnJHthcHB9Jy4gTm90IHN1cmUgd2hhdCB0byBkb2ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBzYXZlIHRoaXMsIHRvIGJlIHVzZWQgaWYvd2hlbiB0aGUgZXhpc3RpbmcgdGFyZ2V0IGlzIGRlc3Ryb3llZFxuICAgIHRoaXMudGFyZ2V0c1thcHBdLnByb3Zpc2lvbmFsID0ge1xuICAgICAgb2xkVGFyZ2V0SWQsXG4gICAgICBuZXdUYXJnZXRJZCxcbiAgICB9O1xuICB9XG5cbiAgcmVtb3ZlVGFyZ2V0IChlcnIsIGFwcCwgdGFyZ2V0SW5mbykge1xuICAgIGlmIChfLmlzTmlsKHRhcmdldEluZm8/LnRhcmdldElkKSkge1xuICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCAnVGFyZ2V0LnRhcmdldERlc3Ryb3llZCcgZXZlbnQgd2l0aCBubyB0YXJnZXQuIFNraXBwaW5nYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbG9nLmRlYnVnKGBUYXJnZXQgZGVzdHJveWVkIGZvciBhcHAgJyR7YXBwfSc6ICR7dGFyZ2V0SW5mby50YXJnZXRJZH1gKTtcblxuICAgIC8vIGdvIHRocm91Z2ggdGhlIHRhcmdldHMgYW5kIGZpbmQgdGhlIG9uZSB0aGF0IGhhcyBhIHdhaXRpbmcgcHJvdmlzaW9uYWwgdGFyZ2V0XG4gICAgaWYgKHRoaXMudGFyZ2V0c1thcHBdPy5wcm92aXNpb25hbD8ub2xkVGFyZ2V0SWQgPT09IHRhcmdldEluZm8udGFyZ2V0SWQpIHtcbiAgICAgIGNvbnN0IHtvbGRUYXJnZXRJZCwgbmV3VGFyZ2V0SWR9ID0gdGhpcy50YXJnZXRzW2FwcF0ucHJvdmlzaW9uYWw7XG4gICAgICBkZWxldGUgdGhpcy50YXJnZXRzW2FwcF0ucHJvdmlzaW9uYWw7XG5cbiAgICAgIC8vIHdlIGRvIG5vdCBrbm93IHRoZSBwYWdlLCBzbyBnbyB0aHJvdWdoIGFuZCBmaW5kIHRoZSBleGlzdGluZyB0YXJnZXRcbiAgICAgIGNvbnN0IHRhcmdldHMgPSB0aGlzLnRhcmdldHNbYXBwXTtcbiAgICAgIGZvciAoY29uc3QgW3BhZ2UsIHRhcmdldElkXSBvZiBfLnRvUGFpcnModGFyZ2V0cykpIHtcbiAgICAgICAgaWYgKHRhcmdldElkID09PSBvbGRUYXJnZXRJZCkge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgRm91bmQgcHJvdmlzaW9uYWwgdGFyZ2V0IGZvciBhcHAgJyR7YXBwfScuIE9sZCB0YXJnZXQ6ICcke29sZFRhcmdldElkfScsIG5ldyB0YXJnZXQ6ICcke25ld1RhcmdldElkfScuIFVwZGF0aW5nYCk7XG4gICAgICAgICAgdGFyZ2V0c1twYWdlXSA9IG5ld1RhcmdldElkO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbG9nLndhcm4oYFByb3Zpc2lvbmFsIHRhcmdldCBmb3IgYXBwICcke2FwcH0nIGZvdW5kLCBidXQgbm8gc3VpdGFibGUgZXhpc3RpbmcgdGFyZ2V0IGZvdW5kLiBUaGlzIG1heSBjYXVzZSBwcm9ibGVtc2ApO1xuICAgICAgbG9nLndhcm4oYE9sZCB0YXJnZXQ6ICcke29sZFRhcmdldElkfScsIG5ldyB0YXJnZXQ6ICcke25ld1RhcmdldElkfScuIEV4aXN0aW5nIHRhcmdldHM6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0cyl9YCk7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm8gd2FpdGluZyBwcm92aXNpb25hbCB0YXJnZXQsIGp1c3QgZ2V0IHJpZCBvZiB0aGUgZXhpc3Rpbmcgb25lXG4gICAgY29uc3QgdGFyZ2V0cyA9IHRoaXMudGFyZ2V0c1thcHBdO1xuICAgIGZvciAoY29uc3QgW3BhZ2UsIHRhcmdldElkXSBvZiBfLnRvUGFpcnModGFyZ2V0cykpIHtcbiAgICAgIGlmICh0YXJnZXRJZCA9PT0gdGFyZ2V0SW5mby50YXJnZXRJZCkge1xuICAgICAgICBkZWxldGUgdGFyZ2V0c1twYWdlXTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBsb2cuZGVidWcoYFRhcmdldCAnJHt0YXJnZXRJbmZvLnRhcmdldElkfScgZGVsZXRlZCBmb3IgYXBwICcke2FwcH0nLCBidXQgbm8gc3VjaCB0YXJnZXQgZXhpc3RzYCk7XG4gIH1cblxuICBnZXRUYXJnZXQgKGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICByZXR1cm4gKHRoaXMudGFyZ2V0c1thcHBJZEtleV0gfHwge30pW3BhZ2VJZEtleV07XG4gIH1cblxuICBhc3luYyBzZWxlY3RQYWdlIChhcHBJZEtleSwgcGFnZUlkS2V5KSB7XG4gICAgdGhpcy5wZW5kaW5nVGFyZ2V0Tm90aWZpY2F0aW9uID0gW2FwcElkS2V5LCBwYWdlSWRLZXldO1xuICAgIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSBmYWxzZTtcblxuICAgIC8vIGdvIHRocm91Z2ggdGhlIHN0ZXBzIHRoYXQgdGhlIERlc2t0b3AgU2FmYXJpIHN5c3RlbVxuICAgIC8vIGdvZXMgdGhyb3VnaCB0byBpbml0aWFsaXplIHRoZSBXZWIgSW5zcGVjdG9yIHNlc3Npb25cblxuICAgIGNvbnN0IHNlbmRPcHRzID0ge1xuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgfTtcblxuICAgIC8vIGhpZ2hsaWdodCBhbmQgdGhlbiB1bi1oaWdobGlnaHQgdGhlIHdlYnZpZXdcbiAgICBmb3IgKGNvbnN0IGVuYWJsZWQgb2YgW3RydWUsIGZhbHNlXSkge1xuICAgICAgYXdhaXQgdGhpcy5zZW5kKCdpbmRpY2F0ZVdlYlZpZXcnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgZW5hYmxlZCxcbiAgICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2VuZCgnc2V0U2VuZGVyS2V5Jywgc2VuZE9wdHMpO1xuICAgIGxvZy5kZWJ1ZygnU2VuZGVyIGtleSBzZXQnKTtcblxuICAgIGlmICh0aGlzLmlzVGFyZ2V0QmFzZWQgJiYgdXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5wbGF0Zm9ybVZlcnNpb24sICc8JywgTUlOX1BMQVRGT1JNX05PX1RBUkdFVF9FWElTVFMpKSB7XG4gICAgICBhd2FpdCB0aGlzLnNlbmQoJ1RhcmdldC5leGlzdHMnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbikge1xuICAgICAgYXdhaXQgdGhpcy5pbml0aWFsaXplUGFnZUZ1bGwoYXBwSWRLZXksIHBhZ2VJZEtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVBhZ2UoYXBwSWRLZXksIHBhZ2VJZEtleSk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogUGVyZm9ybSB0aGUgbWluaW1hbCBpbml0aWFsaXphdGlvbiB0byBnZXQgdGhlIFdlYiBJbnNwZWN0b3Igd29ya2luZ1xuICAgKi9cbiAgYXN5bmMgaW5pdGlhbGl6ZVBhZ2UgKGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICBjb25zdCBzZW5kT3B0cyA9IHtcbiAgICAgIGFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5LFxuICAgIH07XG5cbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0luc3BlY3Rvci5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnUGFnZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuXG4gICAgLy8gZ28gdGhyb3VnaCB0aGUgdGFza3MgdG8gaW5pdGlhbGl6ZVxuICAgIGF3YWl0IHRoaXMuc2VuZCgnTmV0d29yay5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnUnVudGltZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnSGVhcC5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0NvbnNvbGUuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0luc3BlY3Rvci5pbml0aWFsaXplZCcsIHNlbmRPcHRzLCBmYWxzZSk7XG4gIH1cblxuICAvKlxuICAgKiBNaW1pYyBldmVyeSBzdGVwIHRoYXQgRGVza3RvcCBTYWZhcmkgRGV2ZWxvcCB0b29scyB1c2VzIHRvIGluaXRpYWxpemUgYVxuICAgKiBXZWIgSW5zcGVjdG9yIHNlc3Npb25cbiAgICovXG4gIGFzeW5jIGluaXRpYWxpemVQYWdlRnVsbCAoYXBwSWRLZXksIHBhZ2VJZEtleSkge1xuICAgIGNvbnN0IHNlbmRPcHRzID0ge1xuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgfTtcblxuICAgIGF3YWl0IHRoaXMuc2VuZCgnSW5zcGVjdG9yLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdQYWdlLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG5cbiAgICAvLyBnbyB0aHJvdWdoIHRoZSB0YXNrcyB0byBpbml0aWFsaXplXG4gICAgYXdhaXQgdGhpcy5zZW5kKCdQYWdlLmdldFJlc291cmNlVHJlZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdOZXR3b3JrLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdOZXR3b3JrLnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkJywgT2JqZWN0LmFzc2lnbih7XG4gICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdET01TdG9yYWdlLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdEYXRhYmFzZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnSW5kZXhlZERCLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdDU1MuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1J1bnRpbWUuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0hlYXAuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ01lbW9yeS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnQXBwbGljYXRpb25DYWNoZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnQXBwbGljYXRpb25DYWNoZS5nZXRGcmFtZXNXaXRoTWFuaWZlc3RzJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1RpbWVsaW5lLnNldEluc3RydW1lbnRzJywgT2JqZWN0LmFzc2lnbih7XG4gICAgICBpbnN0cnVtZW50czogWydUaW1lbGluZScsICdTY3JpcHRQcm9maWxlcicsICdDUFUnXSxcbiAgICB9LCBzZW5kT3B0cyksIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1RpbWVsaW5lLnNldEF1dG9DYXB0dXJlRW5hYmxlZCcsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdEZWJ1Z2dlci5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuc2V0QnJlYWtwb2ludHNBY3RpdmUnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICB9LCBzZW5kT3B0cyksIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0RlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zJywgT2JqZWN0LmFzc2lnbih7XG4gICAgICBzdGF0ZTogJ25vbmUnLFxuICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuc2V0UGF1c2VPbkFzc2VydGlvbnMnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuc2V0QXN5bmNTdGFja1RyYWNlRGVwdGgnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGRlcHRoOiAyMDAsXG4gICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cycsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgc2hvdWxkUGF1c2U6IGZhbHNlLFxuICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuXG4gICAgYXdhaXQgdGhpcy5zZW5kKCdMYXllclRyZWUuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1dvcmtlci5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnQ2FudmFzLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdDb25zb2xlLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdET00uZ2V0RG9jdW1lbnQnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGNvbnN0IGxvZ2dpbmdDaGFubmVscyA9IGF3YWl0IHRoaXMuc2VuZCgnQ29uc29sZS5nZXRMb2dnaW5nQ2hhbm5lbHMnLCBzZW5kT3B0cyk7XG4gICAgZm9yIChjb25zdCBzb3VyY2Ugb2YgKGxvZ2dpbmdDaGFubmVscy5jaGFubmVscyB8fCBbXSkubWFwKChlbnRyeSkgPT4gZW50cnkuc291cmNlKSkge1xuICAgICAgYXdhaXQgdGhpcy5zZW5kKCdDb25zb2xlLnNldExvZ2dpbmdDaGFubmVsTGV2ZWwnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgc291cmNlLFxuICAgICAgICBsZXZlbDogJ3ZlcmJvc2UnLFxuICAgICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5zZW5kKCdJbnNwZWN0b3IuaW5pdGlhbGl6ZWQnLCBzZW5kT3B0cywgZmFsc2UpO1xuICB9XG5cbiAgYXN5bmMgc2VsZWN0QXBwIChhcHBJZEtleSkge1xuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBsb2NhbCBjYWxsYmFjaywgdGVtcG9yYXJpbHkgYWRkZWQgYXMgY2FsbGJhY2sgdG9cbiAgICAgIC8vIGBfcnBjX2FwcGxpY2F0aW9uQ29ubmVjdGVkOmAgcmVtb3RlIGRlYnVnZ2VyIHJlc3BvbnNlXG4gICAgICAvLyB0byBoYW5kbGUgdGhlIGluaXRpYWwgY29ubmVjdGlvblxuICAgICAgY29uc3Qgb25BcHBDaGFuZ2UgPSAoZXJyLCBkaWN0KSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZnJvbSB0aGUgZGljdGlvbmFyeSByZXR1cm5lZCwgZ2V0IHRoZSBpZHNcbiAgICAgICAgY29uc3Qgb2xkQXBwSWRLZXkgPSBkaWN0LldJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gICAgICAgIGNvbnN0IGNvcnJlY3RBcHBJZEtleSA9IGRpY3QuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuXG4gICAgICAgIC8vIGlmIHRoaXMgaXMgYSByZXBvcnQgb2YgYSBwcm94eSByZWRpcmVjdCBmcm9tIHRoZSByZW1vdGUgZGVidWdnZXJcbiAgICAgICAgLy8gd2Ugd2FudCB0byB1cGRhdGUgb3VyIGRpY3Rpb25hcnkgYW5kIGdldCBhIG5ldyBhcHAgaWRcbiAgICAgICAgaWYgKG9sZEFwcElkS2V5ICYmIGNvcnJlY3RBcHBJZEtleSAhPT0gb2xkQXBwSWRLZXkpIHtcbiAgICAgICAgICBsb2cuZGVidWcoYFdlIHdlcmUgbm90aWZpZWQgd2UgbWlnaHQgaGF2ZSBjb25uZWN0ZWQgdG8gdGhlIHdyb25nIGFwcC4gYCArXG4gICAgICAgICAgICAgICAgICAgIGBVc2luZyBpZCAke2NvcnJlY3RBcHBJZEtleX0gaW5zdGVhZCBvZiAke29sZEFwcElkS2V5fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignTmV3IGFwcGxpY2F0aW9uIGhhcyBjb25uZWN0ZWQnKSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5wcmVwZW5kT25jZUxpc3RlbmVyKCdfcnBjX2FwcGxpY2F0aW9uQ29ubmVjdGVkOicsIG9uQXBwQ2hhbmdlKTtcblxuICAgICAgLy8gZG8gdGhlIGFjdHVhbCBjb25uZWN0aW5nIHRvIHRoZSBhcHBcbiAgICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgcGFnZURpY3QsIGNvbm5lY3RlZEFwcElkS2V5O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIChbY29ubmVjdGVkQXBwSWRLZXksIHBhZ2VEaWN0XSA9IGF3YWl0IHRoaXMuc2VuZCgnY29ubmVjdFRvQXBwJywge1xuICAgICAgICAgICAgYXBwSWRLZXlcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGxvZy53YXJuKGBVbmFibGUgdG8gY29ubmVjdCB0byBhcHA6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzb21ldGltZXMgdGhlIGNvbm5lY3QgbG9naWMgaGFwcGVucywgYnV0IHdpdGggYW4gZW1wdHkgZGljdGlvbmFyeVxuICAgICAgICAvLyB3aGljaCBsZWFkcyB0byB0aGUgcmVtb3RlIGRlYnVnZ2VyIGdldHRpbmcgZGlzY29ubmVjdGVkLCBhbmQgaW50byBhIGxvb3BcbiAgICAgICAgaWYgKF8uaXNFbXB0eShwYWdlRGljdCkpIHtcbiAgICAgICAgICBsZXQgbXNnID0gJ0VtcHR5IHBhZ2UgZGljdGlvbmFyeSByZWNlaXZlZCc7XG4gICAgICAgICAgbG9nLmRlYnVnKG1zZyk7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihtc2cpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKFtjb25uZWN0ZWRBcHBJZEtleSwgcGFnZURpY3RdKTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uRXhlY3V0aW9uQ29udGV4dENyZWF0ZWQgKGVyciwgY29udGV4dCkge1xuICAgIC8vIHsgaWQ6IDIsIGlzUGFnZUNvbnRleHQ6IHRydWUsIG5hbWU6ICcnLCBmcmFtZUlkOiAnMC4xJyB9XG4gICAgLy8gcmlnaHQgbm93IHdlIGhhdmUgbm8gd2F5IHRvIG1hcCBjb250ZXh0cyB0byBhcHBzL3BhZ2VzXG4gICAgLy8gc28ganVzdCBzdG9yZVxuICAgIHRoaXMuY29udGV4dHMucHVzaChjb250ZXh0LmlkKTtcbiAgfVxuXG4gIG9uR2FyYmFnZUNvbGxlY3RlZCAoKSB7XG4gICAgLy8ganVzdCB3YW50IHRvIGxvZyB0aGF0IHRoaXMgaXMgaGFwcGVuaW5nLCBhcyBpdCBjYW4gYWZmZWN0IG9wZXJ0aW9uXG4gICAgbG9nLmRlYnVnKGBXZWIgSW5zcGVjdG9yIGdhcmJhZ2UgY29sbGVjdGVkYCk7XG4gIH1cblxuICBvblNjcmlwdFBhcnNlZCAoZXJyLCBzY3JpcHRJbmZvKSB7XG4gICAgLy8geyBzY3JpcHRJZDogJzEzJywgdXJsOiAnJywgc3RhcnRMaW5lOiAwLCBzdGFydENvbHVtbjogMCwgZW5kTGluZTogODIsIGVuZENvbHVtbjogMyB9XG4gICAgbG9nLmRlYnVnKGBTY3JpcHQgcGFyc2VkOiAke0pTT04uc3RyaW5naWZ5KHNjcmlwdEluZm8pfWApO1xuICB9XG59XG4iXSwiZmlsZSI6ImxpYi9ycGMvcnBjLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
571
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ycGMvcnBjLWNsaWVudC5qcyJdLCJuYW1lcyI6WyJEQVRBX0xPR19MRU5HVEgiLCJsZW5ndGgiLCJXQUlUX0ZPUl9UQVJHRVRfVElNRU9VVCIsIldBSVRfRk9SX1RBUkdFVF9JTlRFUlZBTCIsIk1JTl9QTEFURk9STV9GT1JfVEFSR0VUX0JBU0VEIiwiTUlOX1BMQVRGT1JNX05PX1RBUkdFVF9FWElTVFMiLCJpc1RhcmdldEJhc2VkIiwiaXNTYWZhcmkiLCJwbGF0Zm9ybVZlcnNpb24iLCJpc0hpZ2hWZXJzaW9uIiwidXRpbCIsImNvbXBhcmVWZXJzaW9ucyIsImxvZyIsImRlYnVnIiwiUnBjQ2xpZW50IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiX3RhcmdldHMiLCJfc2hvdWxkQ2hlY2tGb3JUYXJnZXQiLCJzaG91bGRDaGVja0ZvclRhcmdldCIsImJ1bmRsZUlkIiwibG9nQWxsQ29tbXVuaWNhdGlvbiIsImxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wIiwid2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgiLCJzb2NrZXRDaHVua1NpemUiLCJmdWxsUGFnZUluaXRpYWxpemF0aW9uIiwiaXNDb25uZWN0ZWQiLCJjb25uSWQiLCJ1dWlkVjQiLCJzZW5kZXJJZCIsIm1zZ0lkIiwiX2NvbnRleHRzIiwiY29udGV4dHMiLCJuZWVkc1RhcmdldCIsInRhcmdldHMiLCJjb25uZWN0ZWQiLCJvbiIsImV2ZW50IiwibGlzdGVuZXIiLCJtZXNzYWdlSGFuZGxlciIsIm9uY2UiLCJvZmYiLCJ3YXJuIiwiX2lzVGFyZ2V0QmFzZWQiLCJyZW1vdGVNZXNzYWdlcyIsIlJlbW90ZU1lc3NhZ2VzIiwiUnBjTWVzc2FnZUhhbmRsZXIiLCJhZGRUYXJnZXQiLCJiaW5kIiwidXBkYXRlVGFyZ2V0IiwicmVtb3ZlVGFyZ2V0Iiwib25FeGVjdXRpb25Db250ZXh0Q3JlYXRlZCIsIm9uR2FyYmFnZUNvbGxlY3RlZCIsIndhaXRGb3JUYXJnZXQiLCJhcHBJZEtleSIsInBhZ2VJZEtleSIsImZvcmNlIiwiZ2V0VGFyZ2V0IiwiXyIsImlzRW1wdHkiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwiZXJyb3IiLCJlcnIiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJFcnJvciIsInNlbmQiLCJjb21tYW5kIiwid2FpdEZvclJlc3BvbnNlIiwidGltZXIiLCJ0aW1pbmciLCJUaW1lciIsInN0YXJ0Iiwic2VuZFRvRGV2aWNlIiwidG9Mb3dlckNhc2UiLCJpbmZvIiwiZ2V0RHVyYXRpb24iLCJhc01pbGxpU2Vjb25kcyIsInRvRml4ZWQiLCJCIiwicmVzb2x2ZSIsInJlamVjdCIsIndyYXBwZXJNc2dJZCIsInRvU3RyaW5nIiwidGFyZ2V0SWQiLCJmdWxsT3B0cyIsImRlZmF1bHRzIiwiaWQiLCJjbWQiLCJnZXRSZW1vdGVDb21tYW5kIiwiX19hcmd1bWVudCIsIldJUlNvY2tldERhdGFLZXkiLCJpc05pbCIsIkJ1ZmZlciIsImZyb20iLCJKU09OIiwic3RyaW5naWZ5IiwibWVzc2FnZUhhbmRsZWQiLCJ0cnVuY2F0ZSIsImxpc3RlbmVycyIsIl9fc2VsZWN0b3IiLCJwcmVwZW5kT25jZUxpc3RlbmVyIiwiYXJncyIsInZhbHVlIiwiY29kZSIsIm1zZyIsInJlcyIsInNlbmRNZXNzYWdlIiwiY29ubmVjdCIsImRpc2Nvbm5lY3QiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJyZWNlaXZlIiwiYXBwIiwidGFyZ2V0SW5mbyIsInBlbmRpbmdUYXJnZXROb3RpZmljYXRpb24iLCJpc1Byb3Zpc2lvbmFsIiwiaGFzIiwib2xkVGFyZ2V0SWQiLCJuZXdUYXJnZXRJZCIsInByb3Zpc2lvbmFsIiwicGFnZSIsInRvUGFpcnMiLCJzZWxlY3RQYWdlIiwic2VuZE9wdHMiLCJlbmFibGVkIiwiT2JqZWN0IiwiYXNzaWduIiwiaW5pdGlhbGl6ZVBhZ2VGdWxsIiwiaW5pdGlhbGl6ZVBhZ2UiLCJkaXNhYmxlZCIsImluc3RydW1lbnRzIiwiYWN0aXZlIiwic3RhdGUiLCJkZXB0aCIsInNob3VsZFBhdXNlIiwibG9nZ2luZ0NoYW5uZWxzIiwic291cmNlIiwiY2hhbm5lbHMiLCJtYXAiLCJlbnRyeSIsImxldmVsIiwic2VsZWN0QXBwIiwib25BcHBDaGFuZ2UiLCJkaWN0Iiwib2xkQXBwSWRLZXkiLCJXSVJIb3N0QXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwiY29ycmVjdEFwcElkS2V5IiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwicGFnZURpY3QiLCJjb25uZWN0ZWRBcHBJZEtleSIsImNvbnRleHQiLCJwdXNoIiwib25TY3JpcHRQYXJzZWQiLCJzY3JpcHRJbmZvIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLGVBQWUsR0FBRztBQUFDQyxFQUFBQSxNQUFNLEVBQUU7QUFBVCxDQUF4QjtBQUVBLE1BQU1DLHVCQUF1QixHQUFHLEtBQWhDO0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcsSUFBakM7QUFFQSxNQUFNQyw2QkFBNkIsR0FBRyxNQUF0QztBQUdBLE1BQU1DLDZCQUE2QixHQUFHLE1BQXRDOztBQUVBLFNBQVNDLGFBQVQsQ0FBd0JDLFFBQXhCLEVBQWtDQyxlQUFsQyxFQUFtRDtBQUlqRCxRQUFNQyxhQUFhLEdBQUdDLG9CQUFLQyxlQUFMLENBQXFCSCxlQUFyQixFQUFzQyxJQUF0QyxFQUE0Q0osNkJBQTVDLENBQXRCOztBQUNBUSxrQkFBSUMsS0FBSixDQUFXLDhDQUE2Q04sUUFBUSxHQUFHLEVBQUgsR0FBUSxNQUFPLCtCQUE4QkMsZUFBZ0IsSUFBN0g7O0FBQ0FJLGtCQUFJQyxLQUFKLENBQVcsMENBQXlDVCw2QkFBOEIsTUFBS0ssYUFBYyxFQUFyRzs7QUFDQSxTQUFPQSxhQUFQO0FBQ0Q7O0FBRWMsTUFBTUssU0FBTixDQUFnQjtBQUM3QkMsRUFBQUEsV0FBVyxDQUFFQyxJQUFJLEdBQUcsRUFBVCxFQUFhO0FBQ3RCLFNBQUtDLFFBQUwsR0FBZ0IsRUFBaEI7QUFDQSxTQUFLQyxxQkFBTCxHQUE2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QUEwQjtBQUMvRGIsWUFBQUE7QUFEK0QsV0FBMUIsQ0FBdkM7QUFHRCxTQUpELENBSUUsT0FBT1MsR0FBUCxFQUFZO0FBQ1puRCwwQkFBSThCLElBQUosQ0FBVSw2QkFBNEJxQixHQUFHLENBQUNDLE9BQVEsRUFBbEQ7O0FBQ0FrQixVQUFBQSxNQUFNLENBQUNuQixHQUFELENBQU47QUFDRDs7QUFJRCxZQUFJTCxnQkFBRUMsT0FBRixDQUFVMEYsUUFBVixDQUFKLEVBQXlCO0FBQ3ZCLGNBQUkzQyxHQUFHLEdBQUcsZ0NBQVY7O0FBQ0E5RiwwQkFBSUMsS0FBSixDQUFVNkYsR0FBVjs7QUFDQXhCLFVBQUFBLE1BQU0sQ0FBQyxJQUFJaEIsS0FBSixDQUFVd0MsR0FBVixDQUFELENBQU47QUFDRCxTQUpELE1BSU87QUFDTHpCLFVBQUFBLE9BQU8sQ0FBQyxDQUFDcUUsaUJBQUQsRUFBb0JELFFBQXBCLENBQUQsQ0FBUDtBQUNEO0FBQ0YsT0FwQk0sR0FBUDtBQXFCRCxLQTdDWSxDQUFiO0FBOENEOztBQUVEbEcsRUFBQUEseUJBQXlCLENBQUVZLEdBQUYsRUFBT3dGLE9BQVAsRUFBZ0I7QUFJdkMsU0FBS3ZILFFBQUwsQ0FBY3dILElBQWQsQ0FBbUJELE9BQU8sQ0FBQy9ELEVBQTNCO0FBQ0Q7O0FBRURwQyxFQUFBQSxrQkFBa0IsR0FBSTtBQUVwQnhDLG9CQUFJQyxLQUFKLENBQVcsaUNBQVg7QUFDRDs7QUFFRDRJLEVBQUFBLGNBQWMsQ0FBRTFGLEdBQUYsRUFBTzJGLFVBQVAsRUFBbUI7QUFFL0I5SSxvQkFBSUMsS0FBSixDQUFXLGtCQUFpQm1GLElBQUksQ0FBQ0MsU0FBTCxDQUFleUQsVUFBZixDQUEyQixFQUF2RDtBQUNEOztBQWxpQjRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlbW90ZU1lc3NhZ2VzIGZyb20gJy4vcmVtb3RlLW1lc3NhZ2VzJztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IFJwY01lc3NhZ2VIYW5kbGVyIGZyb20gJy4vcnBjLW1lc3NhZ2UtaGFuZGxlcic7XG5pbXBvcnQgeyB1dGlsLCB0aW1pbmcgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5cblxuY29uc3QgREFUQV9MT0dfTEVOR1RIID0ge2xlbmd0aDogMjAwfTtcblxuY29uc3QgV0FJVF9GT1JfVEFSR0VUX1RJTUVPVVQgPSAxMDAwMDtcbmNvbnN0IFdBSVRfRk9SX1RBUkdFVF9JTlRFUlZBTCA9IDEwMDA7XG5cbmNvbnN0IE1JTl9QTEFURk9STV9GT1JfVEFSR0VUX0JBU0VEID0gJzEyLjInO1xuXG4vLyBgVGFyZ2V0LmV4aXN0c2AgcHJvdG9jb2wgbWV0aG9kIHdhcyByZW1vdmVkIGZyb20gV2ViS2l0aW4gMTMuNFxuY29uc3QgTUlOX1BMQVRGT1JNX05PX1RBUkdFVF9FWElTVFMgPSAnMTMuNCc7XG5cbmZ1bmN0aW9uIGlzVGFyZ2V0QmFzZWQgKGlzU2FmYXJpLCBwbGF0Zm9ybVZlcnNpb24pIHtcbiAgLy8gT24gaU9TIDEyLjIgdGhlIG1lc3NhZ2VzIGdldCBzZW50IHRocm91Z2ggdGhlIFRhcmdldCBkb21haW5cbiAgLy8gT24gaU9TIDEzLjArLCBXS1dlYlZpZXcgYWxzbyBuZWVkcyB0byBmb2xsb3cgdGhlIFRhcmdldCBkb21haW4sXG4gIC8vIHNvIGhlcmUgb25seSBjaGVjayB0aGUgdGFyZ2V0IE9TIHZlcnNpb24gYXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLlxuICBjb25zdCBpc0hpZ2hWZXJzaW9uID0gdXRpbC5jb21wYXJlVmVyc2lvbnMocGxhdGZvcm1WZXJzaW9uLCAnPj0nLCBNSU5fUExBVEZPUk1fRk9SX1RBUkdFVF9CQVNFRCk7XG4gIGxvZy5kZWJ1ZyhgQ2hlY2tpbmcgd2hpY2ggY29tbXVuaWNhdGlvbiBzdHlsZSB0byB1c2UgKCR7aXNTYWZhcmkgPyAnJyA6ICdub24tJ31TYWZhcmkgb24gcGxhdGZvcm0gdmVyc2lvbiAnJHtwbGF0Zm9ybVZlcnNpb259JylgKTtcbiAgbG9nLmRlYnVnKGBQbGF0Zm9ybSB2ZXJzaW9uIGVxdWFsIG9yIGhpZ2hlciB0aGFuICcke01JTl9QTEFURk9STV9GT1JfVEFSR0VUX0JBU0VEfSc6ICR7aXNIaWdoVmVyc2lvbn1gKTtcbiAgcmV0dXJuIGlzSGlnaFZlcnNpb247XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJwY0NsaWVudCB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICB0aGlzLl90YXJnZXRzID0gW107XG4gICAgdGhpcy5fc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSAhIW9wdHMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQ7XG5cbiAgICBjb25zdCB7XG4gICAgICBidW5kbGVJZCxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbiA9IHt9LFxuICAgICAgaXNTYWZhcmkgPSB0cnVlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbiA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgPSBmYWxzZSxcbiAgICAgIHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoLFxuICAgICAgc29ja2V0Q2h1bmtTaXplLFxuICAgICAgZnVsbFBhZ2VJbml0aWFsaXphdGlvbiA9IGZhbHNlLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgdGhpcy5pc1NhZmFyaSA9IGlzU2FmYXJpO1xuXG4gICAgdGhpcy5pc0Nvbm5lY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuY29ubklkID0gdXRpbC51dWlkVjQoKTtcbiAgICB0aGlzLnNlbmRlcklkID0gdXRpbC51dWlkVjQoKTtcbiAgICB0aGlzLm1zZ0lkID0gMDtcblxuICAgIHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbiA9IGxvZ0FsbENvbW11bmljYXRpb247XG4gICAgdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCA9IGxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wO1xuICAgIHRoaXMuc29ja2V0Q2h1bmtTaXplID0gc29ja2V0Q2h1bmtTaXplO1xuICAgIHRoaXMud2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGggPSB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aDtcblxuICAgIHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbiA9IGZ1bGxQYWdlSW5pdGlhbGl6YXRpb247XG5cbiAgICB0aGlzLmJ1bmRsZUlkID0gYnVuZGxlSWQ7XG4gICAgdGhpcy5wbGF0Zm9ybVZlcnNpb24gPSBwbGF0Zm9ybVZlcnNpb247XG5cbiAgICB0aGlzLl9jb250ZXh0cyA9IFtdO1xuICAgIHRoaXMuX3RhcmdldHMgPSB7fTtcblxuICAgIC8vIHN0YXJ0IHdpdGggYSBiZXN0IGd1ZXNzIGZvciB0aGUgcHJvdG9jb2xcbiAgICB0aGlzLmlzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkKGlzU2FmYXJpLCB0aGlzLnBsYXRmb3JtVmVyc2lvbik7XG4gIH1cblxuICBnZXQgY29udGV4dHMgKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250ZXh0cztcbiAgfVxuXG4gIGdldCBuZWVkc1RhcmdldCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgJiYgdGhpcy5pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IHRhcmdldHMgKCkge1xuICAgIHJldHVybiB0aGlzLl90YXJnZXRzO1xuICB9XG5cbiAgZ2V0IHNob3VsZENoZWNrRm9yVGFyZ2V0ICgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvdWxkQ2hlY2tGb3JUYXJnZXQ7XG4gIH1cblxuICBzZXQgc2hvdWxkQ2hlY2tGb3JUYXJnZXQgKHNob3VsZENoZWNrRm9yVGFyZ2V0KSB7XG4gICAgdGhpcy5fc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSAhIXNob3VsZENoZWNrRm9yVGFyZ2V0O1xuICB9XG5cbiAgZ2V0IGlzQ29ubmVjdGVkICgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0ZWQ7XG4gIH1cblxuICBzZXQgaXNDb25uZWN0ZWQgKGNvbm5lY3RlZCkge1xuICAgIHRoaXMuY29ubmVjdGVkID0gISFjb25uZWN0ZWQ7XG4gIH1cblxuICBvbiAoZXZlbnQsIGxpc3RlbmVyKSB7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbihldmVudCwgbGlzdGVuZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgb25jZSAoZXZlbnQsIGxpc3RlbmVyKSB7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbmNlKGV2ZW50LCBsaXN0ZW5lcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBvZmYgKGV2ZW50LCBsaXN0ZW5lcikge1xuICAgIHRoaXMubWVzc2FnZUhhbmRsZXIub2ZmKGV2ZW50LCBsaXN0ZW5lcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXQgaXNUYXJnZXRCYXNlZCAoaXNUYXJnZXRCYXNlZCkge1xuICAgIGxvZy53YXJuKGBTZXR0aW5nIGNvbW11bmljYXRpb24gcHJvdG9jb2w6IHVzaW5nICR7aXNUYXJnZXRCYXNlZCA/ICdUYXJnZXQtYmFzZWQnIDogJ2Z1bGwgV2ViIEluc3BlY3RvciBwcm90b2NvbCd9IGNvbW11bmljYXRpb25gKTtcbiAgICB0aGlzLl9pc1RhcmdldEJhc2VkID0gaXNUYXJnZXRCYXNlZDtcblxuICAgIGlmICghdGhpcy5yZW1vdGVNZXNzYWdlcykge1xuICAgICAgdGhpcy5yZW1vdGVNZXNzYWdlcyA9IG5ldyBSZW1vdGVNZXNzYWdlcyhpc1RhcmdldEJhc2VkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdGVNZXNzYWdlcy5pc1RhcmdldEJhc2VkID0gaXNUYXJnZXRCYXNlZDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIgPSBuZXcgUnBjTWVzc2FnZUhhbmRsZXIoaXNUYXJnZXRCYXNlZCk7XG5cbiAgICAgIC8vIGFkZCBoYW5kbGVycyBmb3IgaW50ZXJuYWwgZXZlbnRzXG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLm9uKCdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcsIHRoaXMuYWRkVGFyZ2V0LmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbignVGFyZ2V0LmRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0JywgdGhpcy51cGRhdGVUYXJnZXQuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLm9uKCdUYXJnZXQudGFyZ2V0RGVzdHJveWVkJywgdGhpcy5yZW1vdmVUYXJnZXQuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLm9uKCdSdW50aW1lLmV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkJywgdGhpcy5vbkV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkLmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbignSGVhcC5nYXJiYWdlQ29sbGVjdGVkJywgdGhpcy5vbkdhcmJhZ2VDb2xsZWN0ZWQuYmluZCh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIuaXNUYXJnZXRCYXNlZCA9IGlzVGFyZ2V0QmFzZWQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgYXN5bmMgd2FpdEZvclRhcmdldCAoYXBwSWRLZXksIHBhZ2VJZEtleSwgZm9yY2UgPSBmYWxzZSkge1xuICAgIGlmICghZm9yY2UgJiYgIXRoaXMubmVlZHNUYXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nZXRUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBvdGhlcndpc2Ugd2FpdGluZyBpcyBuZWNlc3NhcnkgdG8gc2VlIHdoYXQgdGhlIHRhcmdldCBpc1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKCgpID0+ICFfLmlzRW1wdHkodGhpcy5nZXRUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSkpLCB7XG4gICAgICAgIHdhaXRNczogV0FJVF9GT1JfVEFSR0VUX1RJTUVPVVQsXG4gICAgICAgIGludGVydmFsTXM6IFdBSVRfRk9SX1RBUkdFVF9JTlRFUlZBTCxcbiAgICAgICAgZXJyb3I6ICdObyB0YXJnZXRzIGZvdW5kLCB1bmFibGUgdG8gY29tbXVuaWNhdGUgd2l0aCBkZXZpY2UnLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoIWVyci5tZXNzYWdlLmluY2x1ZGVzKCdDb25kaXRpb24gdW5tZXQnKSkge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHRhcmdldHMgZm91bmQsIHVuYWJsZSB0byBjb21tdW5pY2F0ZSB3aXRoIGRldmljZScpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNlbmQgKGNvbW1hbmQsIG9wdHMgPSB7fSwgd2FpdEZvclJlc3BvbnNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gICAgY29uc3Qge1xuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXlcbiAgICB9ID0gb3B0cztcbiAgICB0cnkge1xuICAgICAgaWYgKCFfLmlzRW1wdHkoYXBwSWRLZXkpICYmICFfLmlzRW1wdHkocGFnZUlkS2V5KSkge1xuICAgICAgICBhd2FpdCB0aGlzLndhaXRGb3JUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kVG9EZXZpY2UoY29tbWFuZCwgb3B0cywgd2FpdEZvclJlc3BvbnNlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxldCB7IG1lc3NhZ2UgPSAnJyB9ID0gZXJyO1xuICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKGAndGFyZ2V0JyBkb21haW4gd2FzIG5vdCBmb3VuZGApKSB7XG4gICAgICAgIGxvZy5pbmZvKCdUaGUgdGFyZ2V0IGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IFRhcmdldCBiYXNlZCBjb21tdW5pY2F0aW9uLiAnICtcbiAgICAgICAgICAnV2lsbCBmb2xsb3cgbm9uLXRhcmdldCBiYXNlZCBjb21tdW5pY2F0aW9uLicpO1xuICAgICAgICB0aGlzLmlzVGFyZ2V0QmFzZWQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VuZFRvRGV2aWNlKGNvbW1hbmQsIG9wdHMsIHdhaXRGb3JSZXNwb25zZSk7XG4gICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoYGRvbWFpbiB3YXMgbm90IGZvdW5kYCkgfHxcbiAgICAgICAgICBtZXNzYWdlLmluY2x1ZGVzKGBzb21lIGFyZ3VtZW50cyBvZiBtZXRob2RgKSB8fFxuICAgICAgICAgIG1lc3NhZ2UuaW5jbHVkZXMoYG1pc3NpbmcgdGFyZ2V0YCkpIHtcbiAgICAgICAgdGhpcy5pc1RhcmdldEJhc2VkID0gdHJ1ZTtcbiAgICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yVGFyZ2V0KGFwcElkS2V5LCBwYWdlSWRLZXkpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kVG9EZXZpY2UoY29tbWFuZCwgb3B0cywgd2FpdEZvclJlc3BvbnNlKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgbG9nLmRlYnVnKGBTZW5kaW5nIHRvIFdlYiBJbnNwZWN0b3IgdG9vayAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNlbmRUb0RldmljZSAoY29tbWFuZCwgb3B0cyA9IHt9LCB3YWl0Rm9yUmVzcG9uc2UgPSB0cnVlKSB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIHByb21pc2UgdG8gYmUgcmVzb2x2ZWQgd2hlbmV2ZXIgcmVtb3RlIGRlYnVnZ2VyXG4gICAgICAvLyByZXBsaWVzIHRvIG91ciByZXF1ZXN0XG5cbiAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIG1lc3NhZ2VzIGNvbWluZyBhbmQgZ29pbmcgdXNpbmcgYSBzaW1wbGUgc2VxdWVudGlhbCBpZFxuICAgICAgY29uc3QgbXNnSWQgPSB0aGlzLm1zZ0lkKys7XG4gICAgICBsZXQgd3JhcHBlck1zZ0lkID0gbXNnSWQ7XG4gICAgICBpZiAodGhpcy5pc1RhcmdldEJhc2VkKSB7XG4gICAgICAgIC8vIGZvciB0YXJnZXQtYmFzZSBjb21tdW5pY2F0aW9uLCBldmVyeXRoaW5nIGlzIHdyYXBwZWQgdXBcbiAgICAgICAgd3JhcHBlck1zZ0lkID0gdGhpcy5tc2dJZCsrO1xuICAgICAgICAvLyBhY2tub3dsZWRnZSB3cmFwcGVyIG1lc3NhZ2VcbiAgICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbih3cmFwcGVyTXNnSWQudG9TdHJpbmcoKSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFwcElkS2V5ID0gb3B0cy5hcHBJZEtleTtcbiAgICAgIGNvbnN0IHBhZ2VJZEtleSA9IG9wdHMucGFnZUlkS2V5O1xuICAgICAgY29uc3QgdGFyZ2V0SWQgPSB0aGlzLmdldFRhcmdldChhcHBJZEtleSwgcGFnZUlkS2V5KTtcblxuICAgICAgLy8gcmV0cmlldmUgdGhlIGNvcnJlY3QgY29tbWFuZCB0byBzZW5kXG4gICAgICBjb25zdCBmdWxsT3B0cyA9IF8uZGVmYXVsdHMoe1xuICAgICAgICBjb25uSWQ6IHRoaXMuY29ubklkLFxuICAgICAgICBzZW5kZXJJZDogdGhpcy5zZW5kZXJJZCxcbiAgICAgICAgdGFyZ2V0SWQsXG4gICAgICAgIGlkOiBtc2dJZCxcbiAgICAgIH0sIG9wdHMpO1xuICAgICAgY29uc3QgY21kID0gdGhpcy5yZW1vdGVNZXNzYWdlcy5nZXRSZW1vdGVDb21tYW5kKGNvbW1hbmQsIGZ1bGxPcHRzKTtcblxuICAgICAgaWYgKGNtZD8uX19hcmd1bWVudD8uV0lSU29ja2V0RGF0YUtleSkge1xuICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIG1lc3NhZ2UgYmVpbmcgc2VudCBoYXMgYWxsIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIG5lZWRlZFxuICAgICAgICBpZiAoXy5pc05pbChjbWQuX19hcmd1bWVudC5XSVJTb2NrZXREYXRhS2V5LmlkKSkge1xuICAgICAgICAgIGNtZC5fX2FyZ3VtZW50LldJUlNvY2tldERhdGFLZXkuaWQgPSB3cmFwcGVyTXNnSWQ7XG4gICAgICAgIH1cbiAgICAgICAgY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleSA9XG4gICAgICAgICAgQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleSkpO1xuICAgICAgfVxuXG4gICAgICBsZXQgbWVzc2FnZUhhbmRsZWQgPSB0cnVlO1xuICAgICAgaWYgKCF3YWl0Rm9yUmVzcG9uc2UpIHtcbiAgICAgICAgLy8gdGhlIHByb21pc2Ugd2lsbCBiZSByZXNvbHZlZCBhcyBzb29uIGFzIHRoZSBzb2NrZXQgaGFzIGJlZW4gc2VudFxuICAgICAgICBtZXNzYWdlSGFuZGxlZCA9IGZhbHNlO1xuICAgICAgICAvLyBkbyBub3QgbG9nIHJlY2VpcHRzXG4gICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIub25jZShtc2dJZC50b1N0cmluZygpLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgLy8gd2UgYXJlIG5vdCB3YWl0aW5nIGZvciB0aGlzLCBhbmQgaWYgaXQgZXJyb3JzIGl0IGlzIG1vc3QgbGlrZWx5XG4gICAgICAgICAgICAvLyBhIHByb3RvY29sIGNoYW5nZS4gTG9nIGFuZCBjaGVjayBkdXJpbmcgdGVzdGluZ1xuICAgICAgICAgICAgbG9nLmVycm9yKGBSZWNlaXZlZCBlcnJvciBmcm9tIHNlbmQgdGhhdCBpcyBub3QgYmVpbmcgd2FpdGVkIGZvciAoaWQ6ICR7bXNnSWR9KTogJyR7Xy50cnVuY2F0ZShKU09OLnN0cmluZ2lmeShlcnIpLCBEQVRBX0xPR19MRU5HVEgpfSdgKTtcbiAgICAgICAgICAgIC8vIHJlamVjdCwgdGhvdWdoIGl0IGlzIHZlcnkgcmFyZSB0aGF0IHRoaXMgd2lsbCBiZSB0cmlnZ2VyZWQsIHNpbmNlXG4gICAgICAgICAgICAvLyB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCBkaXJlY3RsdHkgYWZ0ZXIgc2VuZC4gT24gdGhlIG9mZiBjaGFuY2UsXG4gICAgICAgICAgICAvLyB0aG91Z2gsIGl0IHdpbGwgYWxlcnQgb2YgYSBwcm90b2NvbCBjaGFuZ2UuXG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm1lc3NhZ2VIYW5kbGVyLmxpc3RlbmVycyhjbWQuX19zZWxlY3RvcikubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIucHJlcGVuZE9uY2VMaXN0ZW5lcihjbWQuX19zZWxlY3RvciwgZnVuY3Rpb24gKGVyciwgLi4uYXJncykge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCByZXNwb25zZSBmcm9tIHNlbmQgKGlkOiAke21zZ0lkfSk6ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkoYXJncyksIERBVEFfTE9HX0xFTkdUSCl9J2ApO1xuICAgICAgICAgIHJlc29sdmUoYXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChjbWQ/Ll9fYXJndW1lbnQ/LldJUlNvY2tldERhdGFLZXkpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbmNlKG1zZ0lkLnRvU3RyaW5nKCksIGZ1bmN0aW9uIChlcnIsIHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoYFJlbW90ZSBkZWJ1Z2dlciBlcnJvciB3aXRoIGNvZGUgJyR7ZXJyLmNvZGV9JzogJHtlcnIubWVzc2FnZX1gKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgZGF0YSByZXNwb25zZSBmcm9tIHNlbmQgKGlkOiAke21zZ0lkfSk6ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkodmFsdWUpLCBEQVRBX0xPR19MRU5HVEgpfSdgKTtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBub3RoaW5nIGVsc2UgaXMgaGFuZGxpbmcgdGhpbmdzLCBzbyBqdXN0IHJlc29sdmUgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZW50XG4gICAgICAgIG1lc3NhZ2VIYW5kbGVkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1zZyA9IGBTZW5kaW5nICcke2NtZC5fX3NlbGVjdG9yfScgbWVzc2FnZWAgK1xuICAgICAgICAoZnVsbE9wdHMuYXBwSWRLZXkgPyBgIHRvIGFwcCAnJHtmdWxsT3B0cy5hcHBJZEtleX0nYCA6ICcnKSArXG4gICAgICAgIChmdWxsT3B0cy5wYWdlSWRLZXkgPyBgLCBwYWdlICcke2Z1bGxPcHRzLnBhZ2VJZEtleX0nYCA6ICcnKSArXG4gICAgICAgICh0aGlzLm5lZWRzVGFyZ2V0ICYmIHRhcmdldElkID8gYCwgdGFyZ2V0ICcke3RhcmdldElkfSdgIDogJycpICtcbiAgICAgICAgYCAoaWQ6ICR7bXNnSWR9KTogJyR7Y29tbWFuZH0nYDtcbiAgICAgIGxvZy5kZWJ1Zyhtc2cpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZW5kTWVzc2FnZShjbWQpO1xuICAgICAgICBpZiAoIW1lc3NhZ2VIYW5kbGVkKSB7XG4gICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIGhhbmRsZXJzIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgYmVmb3JlIHJlc29sdmluZyxcbiAgICAgICAgICAvLyBhbmQgbm8gZXJyb3JzIHNlbmRpbmcgdGhlIG1lc3NhZ2Ugb3ZlciB0aGUgc29ja2V0LCBzbyByZXNvbHZlXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29ubmVjdCAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICAgIHRocm93IG5ldyBFcnJvcihgU3ViLWNsYXNzZXMgbmVlZCB0byBpbXBsZW1lbnQgYSAnY29ubmVjdCcgZnVuY3Rpb25gKTtcbiAgfVxuXG4gIGFzeW5jIGRpc2Nvbm5lY3QgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLnJlbW92ZUFsbExpc3RlbmVycygpO1xuICB9XG5cbiAgYXN5bmMgc2VuZE1lc3NhZ2UgKC8qIGNvbW1hbmQgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdWItY2xhc3NlcyBuZWVkIHRvIGltcGxlbWVudCBhICdzZW5kTWVzc2FnZScgZnVuY3Rpb25gKTtcbiAgfVxuXG4gIGFzeW5jIHJlY2VpdmUgKC8qIGRhdGEgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdWItY2xhc3NlcyBuZWVkIHRvIGltcGxlbWVudCBhICdyZWNlaXZlJyBmdW5jdGlvbmApO1xuICB9XG5cbiAgYWRkVGFyZ2V0IChlcnIsIGFwcCwgdGFyZ2V0SW5mbykge1xuICAgIGlmIChfLmlzTmlsKHRhcmdldEluZm8/LnRhcmdldElkKSkge1xuICAgICAgbG9nLndhcm4oYFJlY2VpdmVkICdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcgZXZlbnQgZm9yIGFwcCAnJHthcHB9JyB3aXRoIG5vIHRhcmdldC4gU2tpcHBpbmdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKF8uaXNFbXB0eSh0aGlzLnBlbmRpbmdUYXJnZXROb3RpZmljYXRpb24pICYmICF0YXJnZXRJbmZvLmlzUHJvdmlzaW9uYWwpIHtcbiAgICAgIGxvZy53YXJuKGBSZWNlaXZlZCAnVGFyZ2V0LnRhcmdldENyZWF0ZWQnIGV2ZW50IGZvciBhcHAgJyR7YXBwfScgd2l0aCBubyBwZW5kaW5nIHJlcXVlc3Q6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0SW5mbyl9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldEluZm8uaXNQcm92aXNpb25hbCkge1xuICAgICAgbG9nLmRlYnVnKGBQcm92aXNpb25hbCB0YXJnZXQgY3JlYXRlZCBmb3IgYXBwICcke2FwcH0nLCAnJHt0YXJnZXRJbmZvLnRhcmdldElkfScuIElnbm9yaW5nIHVudGlsIHRhcmdldCB1cGRhdGUgZXZlbnRgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBbYXBwSWRLZXksIHBhZ2VJZEtleV0gPSB0aGlzLnBlbmRpbmdUYXJnZXROb3RpZmljYXRpb247XG5cbiAgICBsb2cuZGVidWcoYFRhcmdldCBjcmVhdGVkIGZvciBhcHAgJyR7YXBwSWRLZXl9JyBhbmQgcGFnZSAnJHtwYWdlSWRLZXl9JzogJHtKU09OLnN0cmluZ2lmeSh0YXJnZXRJbmZvKX1gKTtcbiAgICBpZiAoXy5oYXModGhpcy50YXJnZXRzW2FwcElkS2V5XSwgcGFnZUlkS2V5KSkge1xuICAgICAgbG9nLmRlYnVnKGBUaGVyZSBpcyBhbHJlYWR5IGEgdGFyZ2V0IGZvciB0aGlzIGFwcCBhbmQgcGFnZSAoJyR7dGhpcy50YXJnZXRzW2FwcElkS2V5XVtwYWdlSWRLZXldfScpLiBUaGlzIG1pZ2h0IGNhdXNlIHByb2JsZW1zYCk7XG4gICAgfVxuICAgIHRoaXMudGFyZ2V0c1thcHBdID0gdGhpcy50YXJnZXRzW2FwcF0gfHwge307XG4gICAgdGhpcy50YXJnZXRzW2FwcElkS2V5XVtwYWdlSWRLZXldID0gdGFyZ2V0SW5mby50YXJnZXRJZDtcbiAgfVxuXG4gIHVwZGF0ZVRhcmdldCAoZXJyLCBhcHAsIG9sZFRhcmdldElkLCBuZXdUYXJnZXRJZCkge1xuICAgIGxvZy5kZWJ1ZyhgVGFyZ2V0IHVwZGF0ZWQgZm9yIGFwcCAnJHthcHB9Jy4gT2xkIHRhcmdldDogJyR7b2xkVGFyZ2V0SWR9JywgbmV3IHRhcmdldDogJyR7bmV3VGFyZ2V0SWR9J2ApO1xuICAgIGlmICghdGhpcy50YXJnZXRzW2FwcF0pIHtcbiAgICAgIGxvZy53YXJuKGBObyBleGlzdGluZyB0YXJnZXQgZm9yIGFwcCAnJHthcHB9Jy4gTm90IHN1cmUgd2hhdCB0byBkb2ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBzYXZlIHRoaXMsIHRvIGJlIHVzZWQgaWYvd2hlbiB0aGUgZXhpc3RpbmcgdGFyZ2V0IGlzIGRlc3Ryb3llZFxuICAgIHRoaXMudGFyZ2V0c1thcHBdLnByb3Zpc2lvbmFsID0ge1xuICAgICAgb2xkVGFyZ2V0SWQsXG4gICAgICBuZXdUYXJnZXRJZCxcbiAgICB9O1xuICB9XG5cbiAgcmVtb3ZlVGFyZ2V0IChlcnIsIGFwcCwgdGFyZ2V0SW5mbykge1xuICAgIGlmIChfLmlzTmlsKHRhcmdldEluZm8/LnRhcmdldElkKSkge1xuICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCAnVGFyZ2V0LnRhcmdldERlc3Ryb3llZCcgZXZlbnQgd2l0aCBubyB0YXJnZXQuIFNraXBwaW5nYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbG9nLmRlYnVnKGBUYXJnZXQgZGVzdHJveWVkIGZvciBhcHAgJyR7YXBwfSc6ICR7dGFyZ2V0SW5mby50YXJnZXRJZH1gKTtcblxuICAgIC8vIGdvIHRocm91Z2ggdGhlIHRhcmdldHMgYW5kIGZpbmQgdGhlIG9uZSB0aGF0IGhhcyBhIHdhaXRpbmcgcHJvdmlzaW9uYWwgdGFyZ2V0XG4gICAgaWYgKHRoaXMudGFyZ2V0c1thcHBdPy5wcm92aXNpb25hbD8ub2xkVGFyZ2V0SWQgPT09IHRhcmdldEluZm8udGFyZ2V0SWQpIHtcbiAgICAgIGNvbnN0IHtvbGRUYXJnZXRJZCwgbmV3VGFyZ2V0SWR9ID0gdGhpcy50YXJnZXRzW2FwcF0ucHJvdmlzaW9uYWw7XG4gICAgICBkZWxldGUgdGhpcy50YXJnZXRzW2FwcF0ucHJvdmlzaW9uYWw7XG5cbiAgICAgIC8vIHdlIGRvIG5vdCBrbm93IHRoZSBwYWdlLCBzbyBnbyB0aHJvdWdoIGFuZCBmaW5kIHRoZSBleGlzdGluZyB0YXJnZXRcbiAgICAgIGNvbnN0IHRhcmdldHMgPSB0aGlzLnRhcmdldHNbYXBwXTtcbiAgICAgIGZvciAoY29uc3QgW3BhZ2UsIHRhcmdldElkXSBvZiBfLnRvUGFpcnModGFyZ2V0cykpIHtcbiAgICAgICAgaWYgKHRhcmdldElkID09PSBvbGRUYXJnZXRJZCkge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgRm91bmQgcHJvdmlzaW9uYWwgdGFyZ2V0IGZvciBhcHAgJyR7YXBwfScuIE9sZCB0YXJnZXQ6ICcke29sZFRhcmdldElkfScsIG5ldyB0YXJnZXQ6ICcke25ld1RhcmdldElkfScuIFVwZGF0aW5nYCk7XG4gICAgICAgICAgdGFyZ2V0c1twYWdlXSA9IG5ld1RhcmdldElkO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbG9nLndhcm4oYFByb3Zpc2lvbmFsIHRhcmdldCBmb3IgYXBwICcke2FwcH0nIGZvdW5kLCBidXQgbm8gc3VpdGFibGUgZXhpc3RpbmcgdGFyZ2V0IGZvdW5kLiBUaGlzIG1heSBjYXVzZSBwcm9ibGVtc2ApO1xuICAgICAgbG9nLndhcm4oYE9sZCB0YXJnZXQ6ICcke29sZFRhcmdldElkfScsIG5ldyB0YXJnZXQ6ICcke25ld1RhcmdldElkfScuIEV4aXN0aW5nIHRhcmdldHM6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0cyl9YCk7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm8gd2FpdGluZyBwcm92aXNpb25hbCB0YXJnZXQsIGp1c3QgZ2V0IHJpZCBvZiB0aGUgZXhpc3Rpbmcgb25lXG4gICAgY29uc3QgdGFyZ2V0cyA9IHRoaXMudGFyZ2V0c1thcHBdO1xuICAgIGZvciAoY29uc3QgW3BhZ2UsIHRhcmdldElkXSBvZiBfLnRvUGFpcnModGFyZ2V0cykpIHtcbiAgICAgIGlmICh0YXJnZXRJZCA9PT0gdGFyZ2V0SW5mby50YXJnZXRJZCkge1xuICAgICAgICBkZWxldGUgdGFyZ2V0c1twYWdlXTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBsb2cuZGVidWcoYFRhcmdldCAnJHt0YXJnZXRJbmZvLnRhcmdldElkfScgZGVsZXRlZCBmb3IgYXBwICcke2FwcH0nLCBidXQgbm8gc3VjaCB0YXJnZXQgZXhpc3RzYCk7XG4gIH1cblxuICBnZXRUYXJnZXQgKGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICByZXR1cm4gKHRoaXMudGFyZ2V0c1thcHBJZEtleV0gfHwge30pW3BhZ2VJZEtleV07XG4gIH1cblxuICBhc3luYyBzZWxlY3RQYWdlIChhcHBJZEtleSwgcGFnZUlkS2V5KSB7XG4gICAgdGhpcy5wZW5kaW5nVGFyZ2V0Tm90aWZpY2F0aW9uID0gW2FwcElkS2V5LCBwYWdlSWRLZXldO1xuICAgIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSBmYWxzZTtcblxuICAgIC8vIGdvIHRocm91Z2ggdGhlIHN0ZXBzIHRoYXQgdGhlIERlc2t0b3AgU2FmYXJpIHN5c3RlbVxuICAgIC8vIGdvZXMgdGhyb3VnaCB0byBpbml0aWFsaXplIHRoZSBXZWIgSW5zcGVjdG9yIHNlc3Npb25cblxuICAgIGNvbnN0IHNlbmRPcHRzID0ge1xuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgfTtcblxuICAgIC8vIGhpZ2hsaWdodCBhbmQgdGhlbiB1bi1oaWdobGlnaHQgdGhlIHdlYnZpZXdcbiAgICBmb3IgKGNvbnN0IGVuYWJsZWQgb2YgW3RydWUsIGZhbHNlXSkge1xuICAgICAgYXdhaXQgdGhpcy5zZW5kKCdpbmRpY2F0ZVdlYlZpZXcnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgZW5hYmxlZCxcbiAgICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2VuZCgnc2V0U2VuZGVyS2V5Jywgc2VuZE9wdHMpO1xuICAgIGxvZy5kZWJ1ZygnU2VuZGVyIGtleSBzZXQnKTtcblxuICAgIGlmICh0aGlzLmlzVGFyZ2V0QmFzZWQgJiYgdXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5wbGF0Zm9ybVZlcnNpb24sICc8JywgTUlOX1BMQVRGT1JNX05PX1RBUkdFVF9FWElTVFMpKSB7XG4gICAgICBhd2FpdCB0aGlzLnNlbmQoJ1RhcmdldC5leGlzdHMnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbikge1xuICAgICAgYXdhaXQgdGhpcy5pbml0aWFsaXplUGFnZUZ1bGwoYXBwSWRLZXksIHBhZ2VJZEtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVBhZ2UoYXBwSWRLZXksIHBhZ2VJZEtleSk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogUGVyZm9ybSB0aGUgbWluaW1hbCBpbml0aWFsaXphdGlvbiB0byBnZXQgdGhlIFdlYiBJbnNwZWN0b3Igd29ya2luZ1xuICAgKi9cbiAgYXN5bmMgaW5pdGlhbGl6ZVBhZ2UgKGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICBjb25zdCBzZW5kT3B0cyA9IHtcbiAgICAgIGFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5LFxuICAgIH07XG5cbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0luc3BlY3Rvci5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnUGFnZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuXG4gICAgLy8gZ28gdGhyb3VnaCB0aGUgdGFza3MgdG8gaW5pdGlhbGl6ZVxuICAgIGF3YWl0IHRoaXMuc2VuZCgnTmV0d29yay5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnUnVudGltZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnSGVhcC5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0NvbnNvbGUuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0luc3BlY3Rvci5pbml0aWFsaXplZCcsIHNlbmRPcHRzLCBmYWxzZSk7XG4gIH1cblxuICAvKlxuICAgKiBNaW1pYyBldmVyeSBzdGVwIHRoYXQgRGVza3RvcCBTYWZhcmkgRGV2ZWxvcCB0b29scyB1c2VzIHRvIGluaXRpYWxpemUgYVxuICAgKiBXZWIgSW5zcGVjdG9yIHNlc3Npb25cbiAgICovXG4gIGFzeW5jIGluaXRpYWxpemVQYWdlRnVsbCAoYXBwSWRLZXksIHBhZ2VJZEtleSkge1xuICAgIGNvbnN0IHNlbmRPcHRzID0ge1xuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgfTtcblxuICAgIGF3YWl0IHRoaXMuc2VuZCgnSW5zcGVjdG9yLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdQYWdlLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG5cbiAgICAvLyBnbyB0aHJvdWdoIHRoZSB0YXNrcyB0byBpbml0aWFsaXplXG4gICAgYXdhaXQgdGhpcy5zZW5kKCdQYWdlLmdldFJlc291cmNlVHJlZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdOZXR3b3JrLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdOZXR3b3JrLnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkJywgT2JqZWN0LmFzc2lnbih7XG4gICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdET01TdG9yYWdlLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdEYXRhYmFzZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnSW5kZXhlZERCLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdDU1MuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1J1bnRpbWUuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0hlYXAuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ01lbW9yeS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnQXBwbGljYXRpb25DYWNoZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnQXBwbGljYXRpb25DYWNoZS5nZXRGcmFtZXNXaXRoTWFuaWZlc3RzJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1RpbWVsaW5lLnNldEluc3RydW1lbnRzJywgT2JqZWN0LmFzc2lnbih7XG4gICAgICBpbnN0cnVtZW50czogWydUaW1lbGluZScsICdTY3JpcHRQcm9maWxlcicsICdDUFUnXSxcbiAgICB9LCBzZW5kT3B0cyksIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1RpbWVsaW5lLnNldEF1dG9DYXB0dXJlRW5hYmxlZCcsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdEZWJ1Z2dlci5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuc2V0QnJlYWtwb2ludHNBY3RpdmUnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICB9LCBzZW5kT3B0cyksIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0RlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zJywgT2JqZWN0LmFzc2lnbih7XG4gICAgICBzdGF0ZTogJ25vbmUnLFxuICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuc2V0UGF1c2VPbkFzc2VydGlvbnMnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuc2V0QXN5bmNTdGFja1RyYWNlRGVwdGgnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGRlcHRoOiAyMDAsXG4gICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cycsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgc2hvdWxkUGF1c2U6IGZhbHNlLFxuICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuXG4gICAgYXdhaXQgdGhpcy5zZW5kKCdMYXllclRyZWUuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1dvcmtlci5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnQ2FudmFzLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdDb25zb2xlLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdET00uZ2V0RG9jdW1lbnQnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGNvbnN0IGxvZ2dpbmdDaGFubmVscyA9IGF3YWl0IHRoaXMuc2VuZCgnQ29uc29sZS5nZXRMb2dnaW5nQ2hhbm5lbHMnLCBzZW5kT3B0cyk7XG4gICAgZm9yIChjb25zdCBzb3VyY2Ugb2YgKGxvZ2dpbmdDaGFubmVscy5jaGFubmVscyB8fCBbXSkubWFwKChlbnRyeSkgPT4gZW50cnkuc291cmNlKSkge1xuICAgICAgYXdhaXQgdGhpcy5zZW5kKCdDb25zb2xlLnNldExvZ2dpbmdDaGFubmVsTGV2ZWwnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgc291cmNlLFxuICAgICAgICBsZXZlbDogJ3ZlcmJvc2UnLFxuICAgICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5zZW5kKCdJbnNwZWN0b3IuaW5pdGlhbGl6ZWQnLCBzZW5kT3B0cywgZmFsc2UpO1xuICB9XG5cbiAgYXN5bmMgc2VsZWN0QXBwIChhcHBJZEtleSkge1xuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBsb2NhbCBjYWxsYmFjaywgdGVtcG9yYXJpbHkgYWRkZWQgYXMgY2FsbGJhY2sgdG9cbiAgICAgIC8vIGBfcnBjX2FwcGxpY2F0aW9uQ29ubmVjdGVkOmAgcmVtb3RlIGRlYnVnZ2VyIHJlc3BvbnNlXG4gICAgICAvLyB0byBoYW5kbGUgdGhlIGluaXRpYWwgY29ubmVjdGlvblxuICAgICAgY29uc3Qgb25BcHBDaGFuZ2UgPSAoZXJyLCBkaWN0KSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZnJvbSB0aGUgZGljdGlvbmFyeSByZXR1cm5lZCwgZ2V0IHRoZSBpZHNcbiAgICAgICAgY29uc3Qgb2xkQXBwSWRLZXkgPSBkaWN0LldJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gICAgICAgIGNvbnN0IGNvcnJlY3RBcHBJZEtleSA9IGRpY3QuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuXG4gICAgICAgIC8vIGlmIHRoaXMgaXMgYSByZXBvcnQgb2YgYSBwcm94eSByZWRpcmVjdCBmcm9tIHRoZSByZW1vdGUgZGVidWdnZXJcbiAgICAgICAgLy8gd2Ugd2FudCB0byB1cGRhdGUgb3VyIGRpY3Rpb25hcnkgYW5kIGdldCBhIG5ldyBhcHAgaWRcbiAgICAgICAgaWYgKG9sZEFwcElkS2V5ICYmIGNvcnJlY3RBcHBJZEtleSAhPT0gb2xkQXBwSWRLZXkpIHtcbiAgICAgICAgICBsb2cuZGVidWcoYFdlIHdlcmUgbm90aWZpZWQgd2UgbWlnaHQgaGF2ZSBjb25uZWN0ZWQgdG8gdGhlIHdyb25nIGFwcC4gYCArXG4gICAgICAgICAgICAgICAgICAgIGBVc2luZyBpZCAke2NvcnJlY3RBcHBJZEtleX0gaW5zdGVhZCBvZiAke29sZEFwcElkS2V5fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignTmV3IGFwcGxpY2F0aW9uIGhhcyBjb25uZWN0ZWQnKSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5wcmVwZW5kT25jZUxpc3RlbmVyKCdfcnBjX2FwcGxpY2F0aW9uQ29ubmVjdGVkOicsIG9uQXBwQ2hhbmdlKTtcblxuICAgICAgLy8gZG8gdGhlIGFjdHVhbCBjb25uZWN0aW5nIHRvIHRoZSBhcHBcbiAgICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgcGFnZURpY3QsIGNvbm5lY3RlZEFwcElkS2V5O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIChbY29ubmVjdGVkQXBwSWRLZXksIHBhZ2VEaWN0XSA9IGF3YWl0IHRoaXMuc2VuZCgnY29ubmVjdFRvQXBwJywge1xuICAgICAgICAgICAgYXBwSWRLZXlcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGxvZy53YXJuKGBVbmFibGUgdG8gY29ubmVjdCB0byBhcHA6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzb21ldGltZXMgdGhlIGNvbm5lY3QgbG9naWMgaGFwcGVucywgYnV0IHdpdGggYW4gZW1wdHkgZGljdGlvbmFyeVxuICAgICAgICAvLyB3aGljaCBsZWFkcyB0byB0aGUgcmVtb3RlIGRlYnVnZ2VyIGdldHRpbmcgZGlzY29ubmVjdGVkLCBhbmQgaW50byBhIGxvb3BcbiAgICAgICAgaWYgKF8uaXNFbXB0eShwYWdlRGljdCkpIHtcbiAgICAgICAgICBsZXQgbXNnID0gJ0VtcHR5IHBhZ2UgZGljdGlvbmFyeSByZWNlaXZlZCc7XG4gICAgICAgICAgbG9nLmRlYnVnKG1zZyk7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihtc2cpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKFtjb25uZWN0ZWRBcHBJZEtleSwgcGFnZURpY3RdKTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uRXhlY3V0aW9uQ29udGV4dENyZWF0ZWQgKGVyciwgY29udGV4dCkge1xuICAgIC8vIHsgaWQ6IDIsIGlzUGFnZUNvbnRleHQ6IHRydWUsIG5hbWU6ICcnLCBmcmFtZUlkOiAnMC4xJyB9XG4gICAgLy8gcmlnaHQgbm93IHdlIGhhdmUgbm8gd2F5IHRvIG1hcCBjb250ZXh0cyB0byBhcHBzL3BhZ2VzXG4gICAgLy8gc28ganVzdCBzdG9yZVxuICAgIHRoaXMuY29udGV4dHMucHVzaChjb250ZXh0LmlkKTtcbiAgfVxuXG4gIG9uR2FyYmFnZUNvbGxlY3RlZCAoKSB7XG4gICAgLy8ganVzdCB3YW50IHRvIGxvZyB0aGF0IHRoaXMgaXMgaGFwcGVuaW5nLCBhcyBpdCBjYW4gYWZmZWN0IG9wZXJ0aW9uXG4gICAgbG9nLmRlYnVnKGBXZWIgSW5zcGVjdG9yIGdhcmJhZ2UgY29sbGVjdGVkYCk7XG4gIH1cblxuICBvblNjcmlwdFBhcnNlZCAoZXJyLCBzY3JpcHRJbmZvKSB7XG4gICAgLy8geyBzY3JpcHRJZDogJzEzJywgdXJsOiAnJywgc3RhcnRMaW5lOiAwLCBzdGFydENvbHVtbjogMCwgZW5kTGluZTogODIsIGVuZENvbHVtbjogMyB9XG4gICAgbG9nLmRlYnVnKGBTY3JpcHQgcGFyc2VkOiAke0pTT04uc3RyaW5naWZ5KHNjcmlwdEluZm8pfWApO1xuICB9XG59XG4iXSwiZmlsZSI6ImxpYi9ycGMvcnBjLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -71,6 +71,10 @@ class RpcMessageHandler extends _events.default {
71
71
  this.emit('_rpc_reportConnectedDriverList:', null, argument);
72
72
  break;
73
73
 
74
+ case '_rpc_reportCurrentState:':
75
+ this.emit('_rpc_reportCurrentState:', null, argument);
76
+ break;
77
+
74
78
  case '_rpc_applicationSentData:':
75
79
  await this.handleDataMessage(plist);
76
80
  break;
@@ -225,4 +229,4 @@ class RpcMessageHandler extends _events.default {
225
229
  exports.default = RpcMessageHandler;require('source-map-support').install();
226
230
 
227
231
 
228
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ycGMvcnBjLW1lc3NhZ2UtaGFuZGxlci5qcyJdLCJuYW1lcyI6WyJScGNNZXNzYWdlSGFuZGxlciIsIkV2ZW50RW1pdHRlcnMiLCJjb25zdHJ1Y3RvciIsImlzVGFyZ2V0QmFzZWQiLCJfaXNUYXJnZXRCYXNlZCIsImhhbmRsZU1lc3NhZ2UiLCJwbGlzdCIsInNlbGVjdG9yIiwiX19zZWxlY3RvciIsImxvZyIsImRlYnVnIiwiYXJndW1lbnQiLCJfX2FyZ3VtZW50IiwiZW1pdCIsIldJUlNpbXVsYXRvck5hbWVLZXkiLCJXSVJTaW11bGF0b3JCdWlsZEtleSIsIldJUlNpbXVsYXRvclByb2R1Y3RWZXJzaW9uS2V5IiwiV0lSQXBwbGljYXRpb25EaWN0aW9uYXJ5S2V5IiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwiV0lSTGlzdGluZ0tleSIsImhhbmRsZURhdGFNZXNzYWdlIiwicGFyc2VEYXRhS2V5IiwiSlNPTiIsInBhcnNlIiwiV0lSTWVzc2FnZURhdGFLZXkiLCJ0b1N0cmluZyIsImVyciIsImVycm9yIiwiXyIsInRydW5jYXRlIiwic3RyaW5naWZ5IiwibGVuZ3RoIiwiRXJyb3IiLCJtZXNzYWdlIiwiZGlzcGF0Y2hEYXRhTWVzc2FnZSIsIm1zZ0lkIiwibWV0aG9kIiwicGFyYW1zIiwicmVzdWx0IiwiaXNFbXB0eSIsImxpc3RlbmVyQ291bnQiLCJoYXMiLCJ2YWx1ZSIsImV2ZW50TmFtZXMiLCJhcmdzIiwicHVzaCIsInJlY29yZCIsImNvbnRleHQiLCJzdGFydHNXaXRoIiwibmFtZSIsImRhdGFLZXkiLCJpZCIsImFwcCIsInRhcmdldEluZm8iLCJvbGRUYXJnZXRJZCIsIm5ld1RhcmdldElkIiwidGFyZ2V0SWQiLCJ3YXJuIiwidXRpbCIsImpzb25TdHJpbmdpZnkiLCJ3YXNUaHJvd24iLCJkZXNjcmlwdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHZSxNQUFNQSxpQkFB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TSxHQUFHQyxNQUFNLENBQUNELE1BQWhCO0FBQ0QsT0FORCxDQU1FLE9BQU9YLEdBQVAsRUFBWTtBQUdaakIsd0JBQUlrQixLQUFKLENBQVcsK0NBQVg7O0FBQ0EsYUFBSzhCLElBQUwsQ0FBVUMsb0JBQUtDLGFBQUwsQ0FBbUJyRCxLQUFuQixDQUFWO0FBQ0EsY0FBTW9CLEdBQU47QUFDRDtBQUNGLEtBdEJELE1Bc0JPO0FBQ0xXLE1BQUFBLE1BQU0sR0FBR2EsT0FBTyxDQUFDYixNQUFqQjtBQUNEOztBQUdELFFBQUlWLEtBQUssR0FBR3VCLE9BQU8sQ0FBQ3ZCLEtBQVIsSUFBaUIsSUFBN0I7O0FBQ0Esb0JBQUlXLE1BQUosNkNBQUksU0FBUXNCLFNBQVosRUFBdUI7QUFBQTs7QUFDckIsWUFBTTNCLE9BQU8sR0FBSSxhQUFBSyxNQUFNLFVBQU4sK0RBQVFBLE1BQVIsb0VBQWdCSSxLQUFoQixrQkFBeUJKLE1BQXpCLGdFQUF5QixTQUFRQSxNQUFqQyxvREFBeUIsZ0JBQWdCdUIsV0FBekMsQ0FBRCxHQUNYLGFBQUF2QixNQUFNLFVBQU4sK0RBQVFBLE1BQVIsb0VBQWdCSSxLQUFoQixrQkFBeUJKLE1BQXpCLGdFQUF5QixTQUFRQSxNQUFqQyxvREFBeUIsZ0JBQWdCdUIsV0FBekMsQ0FEVyxHQUVaLHlDQUZKO0FBR0FsQyxNQUFBQSxLQUFLLEdBQUcsSUFBSUssS0FBSixDQUFVQyxPQUFWLENBQVI7QUFDRDs7QUFFRCxVQUFNLEtBQUtDLG1CQUFMLENBQXlCQyxLQUF6QixFQUFnQ0MsTUFBaEMsRUFBd0NDLE1BQXhDLEVBQWdEQyxNQUFoRCxFQUF3RFgsS0FBeEQsQ0FBTjtBQUNEOztBQXpNMEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCBFdmVudEVtaXR0ZXJzIGZyb20gJ2V2ZW50cyc7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnBjTWVzc2FnZUhhbmRsZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXJzIHtcbiAgY29uc3RydWN0b3IgKGlzVGFyZ2V0QmFzZWQgPSBmYWxzZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmlzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgc2V0IGlzVGFyZ2V0QmFzZWQgKGlzVGFyZ2V0QmFzZWQpIHtcbiAgICB0aGlzLl9pc1RhcmdldEJhc2VkID0gISFpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlTWVzc2FnZSAocGxpc3QpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IHBsaXN0Ll9fc2VsZWN0b3I7XG4gICAgaWYgKCFzZWxlY3Rvcikge1xuICAgICAgbG9nLmRlYnVnKCdHb3QgYW4gaW52YWxpZCBwbGlzdCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFyZ3VtZW50ID0gcGxpc3QuX19hcmd1bWVudDtcbiAgICBzd2l0Y2ggKHNlbGVjdG9yKSB7XG4gICAgICBjYXNlICdfcnBjX3JlcG9ydFNldHVwOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRTZXR1cDonLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgYXJndW1lbnQuV0lSU2ltdWxhdG9yTmFtZUtleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJTaW11bGF0b3JCdWlsZEtleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lvbktleVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfcmVwb3J0Q29ubmVjdGVkQXBwbGljYXRpb25MaXN0Oic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRDb25uZWN0ZWRBcHBsaWNhdGlvbkxpc3Q6JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGFyZ3VtZW50LldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25TZW50TGlzdGluZzonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfZm9yd2FyZEdldExpc3Rpbmc6JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGFyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJMaXN0aW5nS2V5XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnX3JwY19hcHBsaWNhdGlvbkNvbm5lY3RlZDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfYXBwbGljYXRpb25Db25uZWN0ZWQ6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25EaXNjb25uZWN0ZWQ6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX2FwcGxpY2F0aW9uVXBkYXRlZDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfYXBwbGljYXRpb25VcGRhdGVkOicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25TZW50RGF0YTonOlxuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZURhdGFNZXNzYWdlKHBsaXN0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBsb2cuZGVidWcoYERlYnVnZ2VyIGdvdCBhIG1lc3NhZ2UgZm9yICcke3NlbGVjdG9yfScgYW5kIGhhdmUgbm8gYCArXG4gICAgICAgICAgYGhhbmRsZXIsIGRvaW5nIG5vdGhpbmcuYCk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VEYXRhS2V5IChwbGlzdCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShwbGlzdC5fX2FyZ3VtZW50LldJUk1lc3NhZ2VEYXRhS2V5LnRvU3RyaW5nKCd1dGY4JykpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yKGBVbnBhcnNlYWJsZSBtZXNzYWdlIGRhdGE6ICR7Xy50cnVuY2F0ZShKU09OLnN0cmluZ2lmeShwbGlzdCksIHtsZW5ndGg6IDEwMH0pfWApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgbWVzc2FnZSBkYXRhOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRpc3BhdGNoRGF0YU1lc3NhZ2UgKG1zZ0lkLCBtZXRob2QsIHBhcmFtcywgcmVzdWx0LCBlcnJvcikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICBpZiAoIV8uaXNFbXB0eShtc2dJZCkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgSGFuZGxpbmcgbWVzc2FnZSAoaWQ6ICcke21zZ0lkfScpYCk7XG4gICAgfVxuXG4gICAgaWYgKG1zZ0lkKSB7XG4gICAgICBpZiAodGhpcy5saXN0ZW5lckNvdW50KG1zZ0lkKSkge1xuICAgICAgICBpZiAoXy5oYXMocmVzdWx0Py5yZXN1bHQsICd2YWx1ZScpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlc3VsdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXQobXNnSWQsIGVycm9yLCByZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmVycm9yKGBXZWIgSW5zcGVjdG9yIHJldHVybmVkIGRhdGEgZm9yIG1lc3NhZ2UgJyR7bXNnSWR9JyBgICtcbiAgICAgICAgICBgYnV0IHdlIHdlcmUgbm90IHdhaXRpbmcgZm9yIHRoYXQgbWVzc2FnZSEgYCArXG4gICAgICAgICAgYHJlc3VsdDogJyR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX0nOyBgICtcbiAgICAgICAgICBgZXJyb3I6ICcke0pTT04uc3RyaW5naWZ5KGVycm9yKX0nYCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGV2ZW50TmFtZXMgPSBbbWV0aG9kXTtcbiAgICBsZXQgYXJncyA9IFtwYXJhbXNdO1xuXG4gICAgLy8gc29tZSBldmVudHMgaGF2ZSBkaWZmZXJlbnQgbmFtZXMsIG9yIHRoZSBhcmd1bWVudHMgYXJlIG1hcHBlZCBmcm9tIHRoZVxuICAgIC8vIHBhcmFtZXRlcnMgcmVjZWl2ZWRcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAnUGFnZS5mcmFtZVN0b3BwZWRMb2FkaW5nJzpcbiAgICAgICAgZXZlbnROYW1lcy5wdXNoKCdQYWdlLmZyYW1lTmF2aWdhdGVkJyk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgJ1BhZ2UuZnJhbWVOYXZpZ2F0ZWQnOlxuICAgICAgICBhcmdzID0gW2AnJHttZXRob2R9JyBldmVudGBdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1RpbWVsaW5lLmV2ZW50UmVjb3JkZWQnOlxuICAgICAgICBhcmdzID0gW3BhcmFtcyB8fCBwYXJhbXMucmVjb3JkXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDb25zb2xlLm1lc3NhZ2VBZGRlZCc6XG4gICAgICAgIGFyZ3MgPSBbcGFyYW1zLm1lc3NhZ2VdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1J1bnRpbWUuZXhlY3V0aW9uQ29udGV4dENyZWF0ZWQnOlxuICAgICAgICBhcmdzID0gW3BhcmFtcy5jb250ZXh0XTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBwYXNzXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChfLnN0YXJ0c1dpdGgobWV0aG9kLCAnTmV0d29yay4nKSkge1xuICAgICAgLy8gYWdncmVnYXRlIE5ldHdvcmsgZXZlbnRzLCBhbmQgYWRkIG9yaWdpbmFsIG1ldGhvZCBuYW1lIHRvIHRoZSBhcmd1bWVudHNcbiAgICAgIGV2ZW50TmFtZXMucHVzaCgnTmV0d29ya0V2ZW50Jyk7XG4gICAgICBhcmdzLnB1c2gobWV0aG9kKTtcbiAgICB9XG4gICAgaWYgKF8uc3RhcnRzV2l0aChtZXRob2QsICdDb25zb2xlLicpKSB7XG4gICAgICAvLyBhZ2dyZWdhdGUgTmV0d29yayBldmVudHMsIGFuZCBhZGQgb3JpZ2luYWwgbWV0aG9kIG5hbWUgdG8gdGhlIGFyZ3VtZW50c1xuICAgICAgZXZlbnROYW1lcy5wdXNoKCdDb25zb2xlRXZlbnQnKTtcbiAgICAgIGFyZ3MucHVzaChtZXRob2QpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBldmVudE5hbWVzKSB7XG4gICAgICB0aGlzLmVtaXQobmFtZSwgZXJyb3IsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGhhbmRsZURhdGFNZXNzYWdlIChwbGlzdCkge1xuICAgIGNvbnN0IGRhdGFLZXkgPSB0aGlzLnBhcnNlRGF0YUtleShwbGlzdCk7XG4gICAgbGV0IG1zZ0lkID0gKGRhdGFLZXkuaWQgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgbGV0IHJlc3VsdCA9IGRhdGFLZXkucmVzdWx0O1xuXG4gICAgbGV0IG1ldGhvZCA9IGRhdGFLZXkubWV0aG9kO1xuICAgIGxldCBwYXJhbXM7XG5cbiAgICBpZiAobWV0aG9kID09PSAnVGFyZ2V0LnRhcmdldENyZWF0ZWQnKSB7XG4gICAgICAvLyB0aGlzIGlzIGluIHJlc3BvbnNlIHRvIGEgYF9ycGNfZm9yd2FyZFNvY2tldFNldHVwOmAgY2FsbFxuICAgICAgLy8gdGFyZ2V0SW5mbzogeyB0YXJnZXRJZDogJ3BhZ2UtMScsIHR5cGU6ICdwYWdlJyB9XG4gICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgIGNvbnN0IHRhcmdldEluZm8gPSBkYXRhS2V5LnBhcmFtcy50YXJnZXRJbmZvO1xuICAgICAgdGhpcy5lbWl0KCdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcsIG51bGwsIGFwcCwgdGFyZ2V0SW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdUYXJnZXQuZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQnKSB7XG4gICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgIGNvbnN0IG9sZFRhcmdldElkID0gZGF0YUtleS5wYXJhbXMub2xkVGFyZ2V0SWQ7XG4gICAgICBjb25zdCBuZXdUYXJnZXRJZCA9IGRhdGFLZXkucGFyYW1zLm5ld1RhcmdldElkO1xuICAgICAgdGhpcy5lbWl0KCdUYXJnZXQuZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQnLCBudWxsLCBhcHAsIG9sZFRhcmdldElkLCBuZXdUYXJnZXRJZCk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdUYXJnZXQudGFyZ2V0RGVzdHJveWVkJykge1xuICAgICAgY29uc3QgYXBwID0gcGxpc3QuX19hcmd1bWVudC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gICAgICBjb25zdCB0YXJnZXRJbmZvID0gZGF0YUtleS5wYXJhbXMudGFyZ2V0SW5mbyB8fCB7dGFyZ2V0SWQ6IGRhdGFLZXkucGFyYW1zLnRhcmdldElkfTtcbiAgICAgIHRoaXMuZW1pdCgnVGFyZ2V0LnRhcmdldERlc3Ryb3llZCcsIG51bGwsIGFwcCwgdGFyZ2V0SW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFkYXRhS2V5LmVycm9yICYmIHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgaWYgKGRhdGFLZXkubWV0aG9kICE9PSAnVGFyZ2V0LmRpc3BhdGNoTWVzc2FnZUZyb21UYXJnZXQnKSB7XG4gICAgICAgIC8vIHRoaXMgc29ydCBvZiBtZXNzYWdlLCBhdCB0aGlzIHBvaW50LCBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudFxuICAgICAgICAvLyB0aGF0IHRoZSBvcmlnaW5hbCBtZXNzYWdlIHdhcyByZWNlaXZlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYSBUYXJnZXQtYmFzZWQgbWVzc2FnZSB3cmFwcGluZyBhIHByb3RvY29sIG1lc3NhZ2VcbiAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbWVzc2FnZSA9IEpTT04ucGFyc2UoZGF0YUtleS5wYXJhbXMubWVzc2FnZSk7XG4gICAgICAgIG1zZ0lkID0gbWVzc2FnZS5pZDtcbiAgICAgICAgbWV0aG9kID0gbWVzc2FnZS5tZXRob2Q7XG4gICAgICAgIHJlc3VsdCA9IG1lc3NhZ2UucmVzdWx0IHx8IG1lc3NhZ2U7XG4gICAgICAgIHBhcmFtcyA9IHJlc3VsdC5wYXJhbXM7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIHRoZW4gc29tZSBhc3BlY3Qgb2YgdGhlIHByb3RvY29sIGlzIG1pc3NpbmcgdG8gdXNcbiAgICAgICAgLy8gc28gcHJpbnQgdGhlIGVudGlyZSBtZXNzYWdlIHRvIGdldCB2aXNpYmlpdHkgaW50byB3aGF0IGlzIGdvaW5nIG9uXG4gICAgICAgIGxvZy5lcnJvcihgVW5leHBlY3RlZCBtZXNzYWdlIGZvcm1hdCBmcm9tIFdlYiBJbnNwZWN0b3I6YCk7XG4gICAgICAgIHRoaXMud2Fybih1dGlsLmpzb25TdHJpbmdpZnkocGxpc3QpKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMgPSBkYXRhS2V5LnBhcmFtcztcbiAgICB9XG5cbiAgICAvLyB3ZSBjYW4gZ2V0IGFuIGVycm9yLCBvciB3ZSBjYW4gZ2V0IGEgcmVzcG9uc2UgdGhhdCBpcyBhbiBlcnJvclxuICAgIGxldCBlcnJvciA9IGRhdGFLZXkuZXJyb3IgfHwgbnVsbDtcbiAgICBpZiAocmVzdWx0Py53YXNUaHJvd24pIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAocmVzdWx0Py5yZXN1bHQ/LnZhbHVlIHx8IHJlc3VsdD8ucmVzdWx0Py5kZXNjcmlwdGlvbilcbiAgICAgICAgPyAocmVzdWx0Py5yZXN1bHQ/LnZhbHVlIHx8IHJlc3VsdD8ucmVzdWx0Py5kZXNjcmlwdGlvbilcbiAgICAgICAgOiAnRXJyb3Igb2NjdXJyZWQgaW4gaGFuZGxpbmcgZGF0YSBtZXNzYWdlJztcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuZGlzcGF0Y2hEYXRhTWVzc2FnZShtc2dJZCwgbWV0aG9kLCBwYXJhbXMsIHJlc3VsdCwgZXJyb3IpO1xuICB9XG59XG4iXSwiZmlsZSI6ImxpYi9ycGMvcnBjLW1lc3NhZ2UtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
232
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ycGMvcnBjLW1lc3NhZ2UtaGFuZGxlci5qcyJdLCJuYW1lcyI6WyJScGNNZXNzYWdlSGFuZGxlciIsIkV2ZW50RW1pdHRlcnMiLCJjb25zdHJ1Y3RvciIsImlzVGFyZ2V0QmFzZWQiLCJfaXNUYXJnZXRCYXNlZCIsImhhbmRsZU1lc3NhZ2UiLCJwbGlzdCIsInNlbGVjdG9yIiwiX19zZWxlY3RvciIsImxvZyIsImRlYnVnIiwiYXJndW1lbnQiLCJfX2FyZ3VtZW50IiwiZW1pdCIsIldJUlNpbXVsYXRvck5hbWVLZXkiLCJXSVJTaW11bGF0b3JCdWlsZEtleSIsIldJUlNpbXVsYXRvclByb2R1Y3RWZXJzaW9uS2V5IiwiV0lSQXBwbGljYXRpb25EaWN0aW9uYXJ5S2V5IiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwiV0lSTGlzdGluZ0tleSIsImhhbmRsZURhdGFNZXNzYWdlIiwicGFyc2VEYXRhS2V5IiwiSlNPTiIsInBhcnNlIiwiV0lSTWVzc2FnZURhdGFLZXkiLCJ0b1N0cmluZyIsImVyciIsImVycm9yIiwiXyIsInRydW5jYXRlIiwic3RyaW5naWZ5IiwibGVuZ3RoIiwiRXJyb3IiLCJtZXNzYWdlIiwiZGlzcGF0Y2hEYXRhTWVzc2FnZSIsIm1zZ0lkIiwibWV0aG9kIiwicGFyYW1zIiwicmVzdWx0IiwiaXNFbXB0eSIsImxpc3RlbmVyQ291bnQiLCJoYXMiLCJ2YWx1ZSIsImV2ZW50TmFtZXMiLCJhcmdzIiwicHVzaCIsInJlY29yZCIsImNvbnRleHQiLCJzdGFydHNXaXRoIiwibmFtZSIsImRhdGFLZXkiLCJpZCIsImFwcCIsInRhcmdldEluZm8iLCJvbGRUYXJnZXRJZCIsIm5ld1RhcmdldElkIiwidGFyZ2V0SWQiLCJ3YXJuIiwidXRpbCIsImpzb25TdHJpbmdpZnkiLCJ3YXNUaHJvd24iLCJkZXNjcmlwdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHZSxNQUFNQSxpQkFB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LE1BQWpCO0FBQ0FFLFFBQUFBLE1BQU0sR0FBR0wsT0FBTyxDQUFDSyxNQUFSLElBQWtCTCxPQUEzQjtBQUNBSSxRQUFBQSxNQUFNLEdBQUdDLE1BQU0sQ0FBQ0QsTUFBaEI7QUFDRCxPQU5ELENBTUUsT0FBT1gsR0FBUCxFQUFZO0FBR1pqQix3QkFBSWtCLEtBQUosQ0FBVywrQ0FBWDs7QUFDQSxhQUFLOEIsSUFBTCxDQUFVQyxvQkFBS0MsYUFBTCxDQUFtQnJELEtBQW5CLENBQVY7QUFDQSxjQUFNb0IsR0FBTjtBQUNEO0FBQ0YsS0F0QkQsTUFzQk87QUFDTFcsTUFBQUEsTUFBTSxHQUFHYSxPQUFPLENBQUNiLE1BQWpCO0FBQ0Q7O0FBR0QsUUFBSVYsS0FBSyxHQUFHdUIsT0FBTyxDQUFDdkIsS0FBUixJQUFpQixJQUE3Qjs7QUFDQSxvQkFBSVcsTUFBSiw2Q0FBSSxTQUFRc0IsU0FBWixFQUF1QjtBQUFBOztBQUNyQixZQUFNM0IsT0FBTyxHQUFJLGFBQUFLLE1BQU0sVUFBTiwrREFBUUEsTUFBUixvRUFBZ0JJLEtBQWhCLGtCQUF5QkosTUFBekIsZ0VBQXlCLFNBQVFBLE1BQWpDLG9EQUF5QixnQkFBZ0J1QixXQUF6QyxDQUFELEdBQ1gsYUFBQXZCLE1BQU0sVUFBTiwrREFBUUEsTUFBUixvRUFBZ0JJLEtBQWhCLGtCQUF5QkosTUFBekIsZ0VBQXlCLFNBQVFBLE1BQWpDLG9EQUF5QixnQkFBZ0J1QixXQUF6QyxDQURXLEdBRVoseUNBRko7QUFHQWxDLE1BQUFBLEtBQUssR0FBRyxJQUFJSyxLQUFKLENBQVVDLE9BQVYsQ0FBUjtBQUNEOztBQUVELFVBQU0sS0FBS0MsbUJBQUwsQ0FBeUJDLEtBQXpCLEVBQWdDQyxNQUFoQyxFQUF3Q0MsTUFBeEMsRUFBZ0RDLE1BQWhELEVBQXdEWCxLQUF4RCxDQUFOO0FBQ0Q7O0FBNU0wRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IEV2ZW50RW1pdHRlcnMgZnJvbSAnZXZlbnRzJztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBScGNNZXNzYWdlSGFuZGxlciBleHRlbmRzIEV2ZW50RW1pdHRlcnMge1xuICBjb25zdHJ1Y3RvciAoaXNUYXJnZXRCYXNlZCA9IGZhbHNlKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuaXNUYXJnZXRCYXNlZCA9IGlzVGFyZ2V0QmFzZWQ7XG4gIH1cblxuICBnZXQgaXNUYXJnZXRCYXNlZCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVGFyZ2V0QmFzZWQ7XG4gIH1cblxuICBzZXQgaXNUYXJnZXRCYXNlZCAoaXNUYXJnZXRCYXNlZCkge1xuICAgIHRoaXMuX2lzVGFyZ2V0QmFzZWQgPSAhIWlzVGFyZ2V0QmFzZWQ7XG4gIH1cblxuICBhc3luYyBoYW5kbGVNZXNzYWdlIChwbGlzdCkge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gcGxpc3QuX19zZWxlY3RvcjtcbiAgICBpZiAoIXNlbGVjdG9yKSB7XG4gICAgICBsb2cuZGVidWcoJ0dvdCBhbiBpbnZhbGlkIHBsaXN0Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYXJndW1lbnQgPSBwbGlzdC5fX2FyZ3VtZW50O1xuICAgIHN3aXRjaCAoc2VsZWN0b3IpIHtcbiAgICAgIGNhc2UgJ19ycGNfcmVwb3J0U2V0dXA6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX3JlcG9ydFNldHVwOicsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBhcmd1bWVudC5XSVJTaW11bGF0b3JOYW1lS2V5LFxuICAgICAgICAgIGFyZ3VtZW50LldJUlNpbXVsYXRvckJ1aWxkS2V5LFxuICAgICAgICAgIGFyZ3VtZW50LldJUlNpbXVsYXRvclByb2R1Y3RWZXJzaW9uS2V5XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnX3JwY19yZXBvcnRDb25uZWN0ZWRBcHBsaWNhdGlvbkxpc3Q6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX3JlcG9ydENvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdDonLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgYXJndW1lbnQuV0lSQXBwbGljYXRpb25EaWN0aW9uYXJ5S2V5XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnX3JwY19hcHBsaWNhdGlvblNlbnRMaXN0aW5nOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19mb3J3YXJkR2V0TGlzdGluZzonLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgYXJndW1lbnQuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5LFxuICAgICAgICAgIGFyZ3VtZW50LldJUkxpc3RpbmdLZXlcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX2FwcGxpY2F0aW9uQ29ubmVjdGVkOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19hcHBsaWNhdGlvbkNvbm5lY3RlZDonLCBudWxsLCBhcmd1bWVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnX3JwY19hcHBsaWNhdGlvbkRpc2Nvbm5lY3RlZDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfYXBwbGljYXRpb25EaXNjb25uZWN0ZWQ6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25VcGRhdGVkOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19hcHBsaWNhdGlvblVwZGF0ZWQ6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfcmVwb3J0Q29ubmVjdGVkRHJpdmVyTGlzdDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfcmVwb3J0Q29ubmVjdGVkRHJpdmVyTGlzdDonLCBudWxsLCBhcmd1bWVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnX3JwY19yZXBvcnRDdXJyZW50U3RhdGU6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX3JlcG9ydEN1cnJlbnRTdGF0ZTonLCBudWxsLCBhcmd1bWVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnX3JwY19hcHBsaWNhdGlvblNlbnREYXRhOic6XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlRGF0YU1lc3NhZ2UocGxpc3QpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGxvZy5kZWJ1ZyhgRGVidWdnZXIgZ290IGEgbWVzc2FnZSBmb3IgJyR7c2VsZWN0b3J9JyBhbmQgaGF2ZSBubyBgICtcbiAgICAgICAgICBgaGFuZGxlciwgZG9pbmcgbm90aGluZy5gKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZURhdGFLZXkgKHBsaXN0KSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHBsaXN0Ll9fYXJndW1lbnQuV0lSTWVzc2FnZURhdGFLZXkudG9TdHJpbmcoJ3V0ZjgnKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cuZXJyb3IoYFVucGFyc2VhYmxlIG1lc3NhZ2UgZGF0YTogJHtfLnRydW5jYXRlKEpTT04uc3RyaW5naWZ5KHBsaXN0KSwge2xlbmd0aDogMTAwfSl9YCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBtZXNzYWdlIGRhdGE6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGlzcGF0Y2hEYXRhTWVzc2FnZSAobXNnSWQsIG1ldGhvZCwgcGFyYW1zLCByZXN1bHQsIGVycm9yKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICAgIGlmICghXy5pc0VtcHR5KG1zZ0lkKSkge1xuICAgICAgbG9nLmRlYnVnKGBIYW5kbGluZyBtZXNzYWdlIChpZDogJyR7bXNnSWR9JylgKTtcbiAgICB9XG5cbiAgICBpZiAobXNnSWQpIHtcbiAgICAgIGlmICh0aGlzLmxpc3RlbmVyQ291bnQobXNnSWQpKSB7XG4gICAgICAgIGlmIChfLmhhcyhyZXN1bHQ/LnJlc3VsdCwgJ3ZhbHVlJykpIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVzdWx0LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1pdChtc2dJZCwgZXJyb3IsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2cuZXJyb3IoYFdlYiBJbnNwZWN0b3IgcmV0dXJuZWQgZGF0YSBmb3IgbWVzc2FnZSAnJHttc2dJZH0nIGAgK1xuICAgICAgICAgIGBidXQgd2Ugd2VyZSBub3Qgd2FpdGluZyBmb3IgdGhhdCBtZXNzYWdlISBgICtcbiAgICAgICAgICBgcmVzdWx0OiAnJHtKU09OLnN0cmluZ2lmeShyZXN1bHQpfSc7IGAgK1xuICAgICAgICAgIGBlcnJvcjogJyR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfSdgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZXZlbnROYW1lcyA9IFttZXRob2RdO1xuICAgIGxldCBhcmdzID0gW3BhcmFtc107XG5cbiAgICAvLyBzb21lIGV2ZW50cyBoYXZlIGRpZmZlcmVudCBuYW1lcywgb3IgdGhlIGFyZ3VtZW50cyBhcmUgbWFwcGVkIGZyb20gdGhlXG4gICAgLy8gcGFyYW1ldGVycyByZWNlaXZlZFxuICAgIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgICBjYXNlICdQYWdlLmZyYW1lU3RvcHBlZExvYWRpbmcnOlxuICAgICAgICBldmVudE5hbWVzLnB1c2goJ1BhZ2UuZnJhbWVOYXZpZ2F0ZWQnKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1mYWxsdGhyb3VnaFxuICAgICAgY2FzZSAnUGFnZS5mcmFtZU5hdmlnYXRlZCc6XG4gICAgICAgIGFyZ3MgPSBbYCcke21ldGhvZH0nIGV2ZW50YF07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVGltZWxpbmUuZXZlbnRSZWNvcmRlZCc6XG4gICAgICAgIGFyZ3MgPSBbcGFyYW1zIHx8IHBhcmFtcy5yZWNvcmRdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NvbnNvbGUubWVzc2FnZUFkZGVkJzpcbiAgICAgICAgYXJncyA9IFtwYXJhbXMubWVzc2FnZV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUnVudGltZS5leGVjdXRpb25Db250ZXh0Q3JlYXRlZCc6XG4gICAgICAgIGFyZ3MgPSBbcGFyYW1zLmNvbnRleHRdO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIHBhc3NcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKF8uc3RhcnRzV2l0aChtZXRob2QsICdOZXR3b3JrLicpKSB7XG4gICAgICAvLyBhZ2dyZWdhdGUgTmV0d29yayBldmVudHMsIGFuZCBhZGQgb3JpZ2luYWwgbWV0aG9kIG5hbWUgdG8gdGhlIGFyZ3VtZW50c1xuICAgICAgZXZlbnROYW1lcy5wdXNoKCdOZXR3b3JrRXZlbnQnKTtcbiAgICAgIGFyZ3MucHVzaChtZXRob2QpO1xuICAgIH1cbiAgICBpZiAoXy5zdGFydHNXaXRoKG1ldGhvZCwgJ0NvbnNvbGUuJykpIHtcbiAgICAgIC8vIGFnZ3JlZ2F0ZSBOZXR3b3JrIGV2ZW50cywgYW5kIGFkZCBvcmlnaW5hbCBtZXRob2QgbmFtZSB0byB0aGUgYXJndW1lbnRzXG4gICAgICBldmVudE5hbWVzLnB1c2goJ0NvbnNvbGVFdmVudCcpO1xuICAgICAgYXJncy5wdXNoKG1ldGhvZCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIGV2ZW50TmFtZXMpIHtcbiAgICAgIHRoaXMuZW1pdChuYW1lLCBlcnJvciwgLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaGFuZGxlRGF0YU1lc3NhZ2UgKHBsaXN0KSB7XG4gICAgY29uc3QgZGF0YUtleSA9IHRoaXMucGFyc2VEYXRhS2V5KHBsaXN0KTtcbiAgICBsZXQgbXNnSWQgPSAoZGF0YUtleS5pZCB8fCAnJykudG9TdHJpbmcoKTtcbiAgICBsZXQgcmVzdWx0ID0gZGF0YUtleS5yZXN1bHQ7XG5cbiAgICBsZXQgbWV0aG9kID0gZGF0YUtleS5tZXRob2Q7XG4gICAgbGV0IHBhcmFtcztcblxuICAgIGlmIChtZXRob2QgPT09ICdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcpIHtcbiAgICAgIC8vIHRoaXMgaXMgaW4gcmVzcG9uc2UgdG8gYSBgX3JwY19mb3J3YXJkU29ja2V0U2V0dXA6YCBjYWxsXG4gICAgICAvLyB0YXJnZXRJbmZvOiB7IHRhcmdldElkOiAncGFnZS0xJywgdHlwZTogJ3BhZ2UnIH1cbiAgICAgIGNvbnN0IGFwcCA9IHBsaXN0Ll9fYXJndW1lbnQuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuICAgICAgY29uc3QgdGFyZ2V0SW5mbyA9IGRhdGFLZXkucGFyYW1zLnRhcmdldEluZm87XG4gICAgICB0aGlzLmVtaXQoJ1RhcmdldC50YXJnZXRDcmVhdGVkJywgbnVsbCwgYXBwLCB0YXJnZXRJbmZvKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PT0gJ1RhcmdldC5kaWRDb21taXRQcm92aXNpb25hbFRhcmdldCcpIHtcbiAgICAgIGNvbnN0IGFwcCA9IHBsaXN0Ll9fYXJndW1lbnQuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuICAgICAgY29uc3Qgb2xkVGFyZ2V0SWQgPSBkYXRhS2V5LnBhcmFtcy5vbGRUYXJnZXRJZDtcbiAgICAgIGNvbnN0IG5ld1RhcmdldElkID0gZGF0YUtleS5wYXJhbXMubmV3VGFyZ2V0SWQ7XG4gICAgICB0aGlzLmVtaXQoJ1RhcmdldC5kaWRDb21taXRQcm92aXNpb25hbFRhcmdldCcsIG51bGwsIGFwcCwgb2xkVGFyZ2V0SWQsIG5ld1RhcmdldElkKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PT0gJ1RhcmdldC50YXJnZXREZXN0cm95ZWQnKSB7XG4gICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgIGNvbnN0IHRhcmdldEluZm8gPSBkYXRhS2V5LnBhcmFtcy50YXJnZXRJbmZvIHx8IHt0YXJnZXRJZDogZGF0YUtleS5wYXJhbXMudGFyZ2V0SWR9O1xuICAgICAgdGhpcy5lbWl0KCdUYXJnZXQudGFyZ2V0RGVzdHJveWVkJywgbnVsbCwgYXBwLCB0YXJnZXRJbmZvKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGFLZXkuZXJyb3IgJiYgdGhpcy5pc1RhcmdldEJhc2VkKSB7XG4gICAgICBpZiAoZGF0YUtleS5tZXRob2QgIT09ICdUYXJnZXQuZGlzcGF0Y2hNZXNzYWdlRnJvbVRhcmdldCcpIHtcbiAgICAgICAgLy8gdGhpcyBzb3J0IG9mIG1lc3NhZ2UsIGF0IHRoaXMgcG9pbnQsIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50XG4gICAgICAgIC8vIHRoYXQgdGhlIG9yaWdpbmFsIG1lc3NhZ2Ugd2FzIHJlY2VpdmVkXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gYXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBhIFRhcmdldC1iYXNlZCBtZXNzYWdlIHdyYXBwaW5nIGEgcHJvdG9jb2wgbWVzc2FnZVxuICAgICAgbGV0IG1lc3NhZ2U7XG4gICAgICB0cnkge1xuICAgICAgICBtZXNzYWdlID0gSlNPTi5wYXJzZShkYXRhS2V5LnBhcmFtcy5tZXNzYWdlKTtcbiAgICAgICAgbXNnSWQgPSBtZXNzYWdlLmlkO1xuICAgICAgICBtZXRob2QgPSBtZXNzYWdlLm1ldGhvZDtcbiAgICAgICAgcmVzdWx0ID0gbWVzc2FnZS5yZXN1bHQgfHwgbWVzc2FnZTtcbiAgICAgICAgcGFyYW1zID0gcmVzdWx0LnBhcmFtcztcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBpZiB0aGlzIGhhcHBlbnMgdGhlbiBzb21lIGFzcGVjdCBvZiB0aGUgcHJvdG9jb2wgaXMgbWlzc2luZyB0byB1c1xuICAgICAgICAvLyBzbyBwcmludCB0aGUgZW50aXJlIG1lc3NhZ2UgdG8gZ2V0IHZpc2liaWl0eSBpbnRvIHdoYXQgaXMgZ29pbmcgb25cbiAgICAgICAgbG9nLmVycm9yKGBVbmV4cGVjdGVkIG1lc3NhZ2UgZm9ybWF0IGZyb20gV2ViIEluc3BlY3RvcjpgKTtcbiAgICAgICAgdGhpcy53YXJuKHV0aWwuanNvblN0cmluZ2lmeShwbGlzdCkpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmFtcyA9IGRhdGFLZXkucGFyYW1zO1xuICAgIH1cblxuICAgIC8vIHdlIGNhbiBnZXQgYW4gZXJyb3IsIG9yIHdlIGNhbiBnZXQgYSByZXNwb25zZSB0aGF0IGlzIGFuIGVycm9yXG4gICAgbGV0IGVycm9yID0gZGF0YUtleS5lcnJvciB8fCBudWxsO1xuICAgIGlmIChyZXN1bHQ/Lndhc1Rocm93bikge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IChyZXN1bHQ/LnJlc3VsdD8udmFsdWUgfHwgcmVzdWx0Py5yZXN1bHQ/LmRlc2NyaXB0aW9uKVxuICAgICAgICA/IChyZXN1bHQ/LnJlc3VsdD8udmFsdWUgfHwgcmVzdWx0Py5yZXN1bHQ/LmRlc2NyaXB0aW9uKVxuICAgICAgICA6ICdFcnJvciBvY2N1cnJlZCBpbiBoYW5kbGluZyBkYXRhIG1lc3NhZ2UnO1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5kaXNwYXRjaERhdGFNZXNzYWdlKG1zZ0lkLCBtZXRob2QsIHBhcmFtcywgcmVzdWx0LCBlcnJvcik7XG4gIH1cbn1cbiJdLCJmaWxlIjoibGliL3JwYy9ycGMtbWVzc2FnZS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -36,6 +36,7 @@ async function connect (timeout = APP_CONNECT_TIMEOUT_MS) {
36
36
  this.rpcClient.on('_rpc_applicationDisconnected:', this.onAppDisconnect.bind(this));
37
37
  this.rpcClient.on('_rpc_applicationUpdated:', this.onAppUpdate.bind(this));
38
38
  this.rpcClient.on('_rpc_reportConnectedDriverList:', this.onConnectedDriverList.bind(this));
39
+ this.rpcClient.on('_rpc_reportCurrentState:', this.onCurrentState.bind(this));
39
40
  this.rpcClient.on('Page.frameDetached', this.frameDetached.bind(this));
40
41
 
41
42
  await this.rpcClient.connect();
@@ -10,12 +10,19 @@ import _ from 'lodash';
10
10
  /* How many milliseconds to wait for webkit to return a response before timing out */
11
11
  const RPC_RESPONSE_TIMEOUT_MS = 5000;
12
12
 
13
+ /**
14
+ * Execute a Selenium atom in Safari
15
+ * @param {string} atom Name of Selenium atom (see atoms/ directory)
16
+ * @param {Array<*>} args Arguments passed to the atom
17
+ * @param {Array<string>} frames
18
+ * @returns {string} The result received from the atom
19
+ */
13
20
  async function executeAtom (atom, args, frames) {
14
21
  if (!this.rpcClient.isConnected) {
15
22
  throw new Error('Remote debugger is not connected');
16
23
  }
17
24
 
18
- log.debug(`Executing atom '${atom}'`);
25
+ log.debug(`Executing atom '${atom}' with 'args=${JSON.stringify(args)}; frames=${frames}'`);
19
26
  const script = await getScriptForAtom(atom, args, frames);
20
27
  const value = await this.execute(script, true);
21
28
  log.debug(`Received result for atom '${atom}' execution: ${_.truncate(simpleStringify(value), {length: RESPONSE_LOG_LENGTH})}`);
@@ -104,6 +104,13 @@ function onConnectedDriverList (err, drivers) {
104
104
  log.debug(`Received connected driver list: ${JSON.stringify(this.connectedDrivers)}`);
105
105
  }
106
106
 
107
+ function onCurrentState (err, state) {
108
+ this.currentState = state.WIRAutomationAvailabilityKey;
109
+ // This state changes when 'Remote Automation' in 'Settings app' > 'Safari' > 'Advanced' > 'Remote Automation' changes
110
+ // WIRAutomationAvailabilityAvailable or WIRAutomationAvailabilityNotAvailable
111
+ log.debug(`Received connected automation availability state: ${JSON.stringify(this.currentState)}`);
112
+ }
113
+
107
114
  async function onConnectedApplicationList (err, apps) {
108
115
  log.debug(`Received connected applications list: ${_.keys(apps).join(', ')}`);
109
116
 
@@ -133,6 +140,7 @@ const messageHandlers = {
133
140
  onAppDisconnect,
134
141
  onAppUpdate,
135
142
  onConnectedDriverList,
143
+ onCurrentState,
136
144
  onConnectedApplicationList,
137
145
  };
138
146
 
@@ -23,6 +23,7 @@ export default class RemoteDebuggerRealDevice extends RemoteDebugger {
23
23
  logAllCommunication: this.logAllCommunication,
24
24
  logAllCommunicationHexDump: this.logAllCommunicationHexDump,
25
25
  socketChunkSize: this.socketChunkSize,
26
+ webInspectorMaxFrameLength: this.webInspectorMaxFrameLength,
26
27
  udid: this.udid
27
28
  });
28
29
  }
@@ -39,6 +39,8 @@ class RemoteDebugger extends EventEmitter {
39
39
  * - logAllCommunication - log plists sent and received from Web Inspector
40
40
  * - logAllCommunicationHexDump - log communication from Web Inspector as hex dump
41
41
  * - socketChunkSize - size, in bytes, of chunks of data sent to Web Inspector (real device only)
42
+ * - webInspectorMaxFrameLength - The maximum size in bytes of a single data frame
43
+ * in the device communication protocol
42
44
  */
43
45
  constructor (opts = {}) {
44
46
  super();
@@ -64,6 +66,7 @@ class RemoteDebugger extends EventEmitter {
64
66
  logFullResponse = false,
65
67
  logAllCommunication = false,
66
68
  logAllCommunicationHexDump = false,
69
+ webInspectorMaxFrameLength,
67
70
  socketChunkSize,
68
71
  fullPageInitialization,
69
72
  } = opts;
@@ -89,6 +92,10 @@ class RemoteDebugger extends EventEmitter {
89
92
  this.logAllCommunicationHexDump = logAllCommunicationHexDump;
90
93
  this.socketChunkSize = socketChunkSize;
91
94
 
95
+ if (_.isInteger(webInspectorMaxFrameLength)) {
96
+ this.webInspectorMaxFrameLength = webInspectorMaxFrameLength;
97
+ }
98
+
92
99
  this.fullPageInitialization = fullPageInitialization;
93
100
 
94
101
  this._lock = new AsyncLock();
@@ -133,6 +140,7 @@ class RemoteDebugger extends EventEmitter {
133
140
  logAllCommunication: this.logAllCommunication,
134
141
  logAllCommunicationHexDump: this.logAllCommunicationHexDump,
135
142
  fullPageInitialization: this.fullPageInitialization,
143
+ webInspectorMaxFrameLength: this.webInspectorMaxFrameLength,
136
144
  });
137
145
  }
138
146
 
@@ -23,6 +23,7 @@ export default class RpcClientRealDevice extends RpcClient {
23
23
  verbose: this.logAllCommunication,
24
24
  verboseHexDump: this.logAllCommunicationHexDump,
25
25
  socketChunkSize: this.socketChunkSize,
26
+ maxFrameLength: this.webInspectorMaxFrameLength,
26
27
  });
27
28
 
28
29
  this.service.listenMessage(this.receive.bind(this));
@@ -79,6 +79,7 @@ export default class RpcClientSimulator extends RpcClient {
79
79
  osVersion: this.platformVersion,
80
80
  verbose: this.logAllCommunication,
81
81
  verboseHexDump: this.logAllCommunicationHexDump,
82
+ maxFrameLength: this.webInspectorMaxFrameLength,
82
83
  });
83
84
  this.service.listenMessage(this.receive.bind(this));
84
85
 
@@ -38,6 +38,7 @@ export default class RpcClient {
38
38
  isSafari = true,
39
39
  logAllCommunication = false,
40
40
  logAllCommunicationHexDump = false,
41
+ webInspectorMaxFrameLength,
41
42
  socketChunkSize,
42
43
  fullPageInitialization = false,
43
44
  } = opts;
@@ -52,6 +53,7 @@ export default class RpcClient {
52
53
  this.logAllCommunication = logAllCommunication;
53
54
  this.logAllCommunicationHexDump = logAllCommunicationHexDump;
54
55
  this.socketChunkSize = socketChunkSize;
56
+ this.webInspectorMaxFrameLength = webInspectorMaxFrameLength;
55
57
 
56
58
  this.fullPageInitialization = fullPageInitialization;
57
59
 
@@ -172,12 +174,16 @@ export default class RpcClient {
172
174
  }
173
175
  return await this.sendToDevice(command, opts, waitForResponse);
174
176
  } catch (err) {
175
- if (err.message.includes(`'Target' domain was not found`)) {
176
- log.info('The target device does not support Target basde communication. ' +
177
+ let { message = '' } = err;
178
+ message = message.toLowerCase();
179
+ if (message.includes(`'target' domain was not found`)) {
180
+ log.info('The target device does not support Target based communication. ' +
177
181
  'Will follow non-target based communication.');
178
182
  this.isTargetBased = false;
179
183
  return await this.sendToDevice(command, opts, waitForResponse);
180
- } else if (err.message.includes(`domain was not found`) || err.message.includes(`Some arguments of method`)) {
184
+ } else if (message.includes(`domain was not found`) ||
185
+ message.includes(`some arguments of method`) ||
186
+ message.includes(`missing target`)) {
181
187
  this.isTargetBased = true;
182
188
  await this.waitForTarget(appIdKey, pageIdKey);
183
189
  return await this.sendToDevice(command, opts, waitForResponse);
@@ -61,6 +61,9 @@ export default class RpcMessageHandler extends EventEmitters {
61
61
  case '_rpc_reportConnectedDriverList:':
62
62
  this.emit('_rpc_reportConnectedDriverList:', null, argument);
63
63
  break;
64
+ case '_rpc_reportCurrentState:':
65
+ this.emit('_rpc_reportCurrentState:', null, argument);
66
+ break;
64
67
  case '_rpc_applicationSentData:':
65
68
  await this.handleDataMessage(plist);
66
69
  break;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "keywords": [
5
5
  "appium"
6
6
  ],
7
- "version": "8.11.0",
7
+ "version": "8.13.2",
8
8
  "author": "appium",
9
9
  "license": "Apache-2.0",
10
10
  "repository": {
@@ -32,7 +32,7 @@
32
32
  "dependencies": {
33
33
  "@babel/runtime": "^7.0.0",
34
34
  "appium-base-driver": "^7.0.0",
35
- "appium-ios-device": "^1.2.1",
35
+ "appium-ios-device": "^1.7.0",
36
36
  "appium-support": "^2.41.0",
37
37
  "async-lock": "^1.2.2",
38
38
  "asyncbox": "^2.6.0",
@@ -63,8 +63,7 @@
63
63
  "precommit-test"
64
64
  ],
65
65
  "devDependencies": {
66
- "ajv": "^6.5.3",
67
- "appium-gulp-plugins": "^5.1.0",
66
+ "appium-gulp-plugins": "^5.4.0",
68
67
  "appium-ios-simulator": "^3.10.0",
69
68
  "chai": "^4.1.2",
70
69
  "chai-as-promised": "^7.1.1",
@@ -73,8 +72,11 @@
73
72
  "finalhandler": "^1.1.2",
74
73
  "gulp": "^4.0.0",
75
74
  "mocha": "^8.0.1",
75
+ "mocha-junit-reporter": "^2.0.0",
76
+ "mocha-multi-reporters": "^1.5.1",
76
77
  "node-simctl": "^6.0.2",
77
78
  "pre-commit": "^1.1.3",
78
- "serve-static": "^1.14.1"
79
+ "serve-static": "^1.14.1",
80
+ "sinon": "^9.2.1"
79
81
  }
80
82
  }