appium-uiautomator2-driver 2.1.2 → 2.1.3

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
@@ -66,9 +66,9 @@ appium:appWaitPackage | Identifier of the first package that is invoked first. I
66
66
  appium:appWaitDuration | Maximum amount of milliseconds to wait until the application under test is started (e. g. an activity returns the control to the caller). `20000` ms by default. Read [How To Troubleshoot Activities Startup](https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/android/activity-startup.md) for more details
67
67
  appium:androidInstallTimeout | Maximum amount of milliseconds to wait until the application under test is installed. `90000` ms by default
68
68
  appium:appWaitForLaunch | Whether to block until the app under test returns the control to the caller after its activity has been started by Activity Manager (`true`, the default value) or to continue the test without waiting for that (`false`).
69
- appium:intentCategory | Set an optional intent category to be applied when starting the given appActivity by [Activity Manager](https://developer.android.com/studio/command-line/adb#am)
70
- appium:intentAction | Set an optional intent action to be applied when starting the given appActivity by [Activity Manager](https://developer.android.com/studio/command-line/adb#am)
71
- appium:intentFlags | Set an optional intent flags to be applied when starting the given appActivity by [Activity Manager](https://developer.android.com/studio/command-line/adb#am)
69
+ appium:intentCategory | Set an optional intent category to be applied when starting the given appActivity by [Activity Manager](https://developer.android.com/studio/command-line/adb#am). Defaults to `android.intent.category.LAUNCHER`. Please use [mobile:startActivity](#mobile-startactivity) in case you don't set an explicit value.
70
+ appium:intentAction | Set an optional intent action to be applied when starting the given appActivity by [Activity Manager](https://developer.android.com/studio/command-line/adb#am). Dfaults to `android.intent.action.MAIN`. Please use [mobile:startActivity](#mobile-startactivity) in case you don't set an explicit value.
71
+ appium:intentFlags | Set an optional intent flags to be applied when starting the given appActivity by [Activity Manager](https://developer.android.com/studio/command-line/adb#am). Defaults to `0x10200000` (FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_RESET_TASK_IF_NEEDED flags). Please use [mobile:startActivity](#mobile-startactivity) in case you don't set an explicit value.
72
72
  appium:optionalIntentArguments | Set an optional intent arguments to be applied when starting the given appActivity by [Activity Manager](https://developer.android.com/studio/command-line/adb#am)
73
73
  appium:dontStopAppOnReset | Set it to `true` if you don't want the application to be restarted if it was already running. `false` by default
74
74
  appium:autoLaunch | Whether to launch the application under test automatically (`true`, the default value) after a test starts
package/build/index.js CHANGED
@@ -49,4 +49,4 @@ var _default = AndroidUiautomator2Driver;
49
49
  exports.default = _default;require('source-map-support').install();
50
50
 
51
51
 
52
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6WyJBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyIiwiZHJpdmVyIiwic3RhcnRTZXJ2ZXIiLCJzZXJ2ZXIiLCJERUZBVUxUX0hPU1QiLCJERUZBVUxUX1BPUlQiLCJtYWluIiwiZ2V0QXJnVmFsdWUiLCJhcmdOYW1lIiwiYXJnSW5kZXgiLCJwcm9jZXNzIiwiYXJndiIsImluZGV4T2YiLCJwb3J0IiwicGFyc2VJbnQiLCJob3N0IiwicmVxdWlyZSIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiLi4iLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptYWluXG5cbmltcG9ydCB7IGFzeW5jaWZ5IH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0ICogYXMgZHJpdmVyIGZyb20gJy4vbGliL2RyaXZlcic7XG5pbXBvcnQgKiBhcyBzZXJ2ZXIgZnJvbSAnLi9saWIvc2VydmVyJztcblxuXG5jb25zdCB7IEFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIgfSA9IGRyaXZlcjtcbmNvbnN0IHsgc3RhcnRTZXJ2ZXIgfSA9IHNlcnZlcjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSE9TVCA9ICdsb2NhbGhvc3QnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUE9SVCA9IDQ4ODQ7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4gKCkge1xuICBjb25zdCBnZXRBcmdWYWx1ZSA9IChhcmdOYW1lKSA9PiB7XG4gICAgY29uc3QgYXJnSW5kZXggPSBwcm9jZXNzLmFyZ3YuaW5kZXhPZihhcmdOYW1lKTtcbiAgICByZXR1cm4gYXJnSW5kZXggPiAwID8gcHJvY2Vzcy5hcmd2W2FyZ0luZGV4ICsgMV0gOiBudWxsO1xuICB9O1xuICBjb25zdCBwb3J0ID0gcGFyc2VJbnQoZ2V0QXJnVmFsdWUoJy0tcG9ydCcpLCAxMCkgfHwgREVGQVVMVF9QT1JUO1xuICBjb25zdCBob3N0ID0gZ2V0QXJnVmFsdWUoJy0taG9zdCcpIHx8IERFRkFVTFRfSE9TVDtcbiAgcmV0dXJuIGF3YWl0IHN0YXJ0U2VydmVyKHBvcnQsIGhvc3QpO1xufVxuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgYXN5bmNpZnkobWFpbik7XG59XG5cbmV4cG9ydCB7IEFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIsIHN0YXJ0U2VydmVyIH07XG5leHBvcnQgZGVmYXVsdCBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7O0FBR0EsTUFBTTtFQUFFQTtBQUFGLElBQWdDQyxNQUF0Qzs7QUFDQSxNQUFNO0VBQUVDO0FBQUYsSUFBa0JDLE1BQXhCOztBQUVPLE1BQU1DLFlBQVksR0FBRyxXQUFyQjs7QUFDQSxNQUFNQyxZQUFZLEdBQUcsSUFBckI7OztBQUVQLGVBQWVDLElBQWYsR0FBdUI7RUFDckIsTUFBTUMsV0FBVyxHQUFJQyxPQUFELElBQWE7SUFDL0IsTUFBTUMsUUFBUSxHQUFHQyxPQUFPLENBQUNDLElBQVIsQ0FBYUMsT0FBYixDQUFxQkosT0FBckIsQ0FBakI7SUFDQSxPQUFPQyxRQUFRLEdBQUcsQ0FBWCxHQUFlQyxPQUFPLENBQUNDLElBQVIsQ0FBYUYsUUFBUSxHQUFHLENBQXhCLENBQWYsR0FBNEMsSUFBbkQ7RUFDRCxDQUhEOztFQUlBLE1BQU1JLElBQUksR0FBR0MsUUFBUSxDQUFDUCxXQUFXLENBQUMsUUFBRCxDQUFaLEVBQXdCLEVBQXhCLENBQVIsSUFBdUNGLFlBQXBEO0VBQ0EsTUFBTVUsSUFBSSxHQUFHUixXQUFXLENBQUMsUUFBRCxDQUFYLElBQXlCSCxZQUF0QztFQUNBLE9BQU8sTUFBTUYsV0FBVyxDQUFDVyxJQUFELEVBQU9FLElBQVAsQ0FBeEI7QUFDRDs7QUFFRCxJQUFJQyxPQUFPLENBQUNWLElBQVIsS0FBaUJXLE1BQXJCLEVBQTZCO0VBQzNCLHdCQUFTWCxJQUFUO0FBQ0Q7O2VBR2NOLHlCIn0=
52
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6WyJBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyIiwiZHJpdmVyIiwic3RhcnRTZXJ2ZXIiLCJzZXJ2ZXIiLCJERUZBVUxUX0hPU1QiLCJERUZBVUxUX1BPUlQiLCJtYWluIiwiZ2V0QXJnVmFsdWUiLCJhcmdOYW1lIiwiYXJnSW5kZXgiLCJwcm9jZXNzIiwiYXJndiIsImluZGV4T2YiLCJwb3J0IiwicGFyc2VJbnQiLCJob3N0IiwicmVxdWlyZSIsIm1vZHVsZSIsImFzeW5jaWZ5Il0sInNvdXJjZVJvb3QiOiIuLiIsInNvdXJjZXMiOlsiaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1haW5cblxuaW1wb3J0IHsgYXN5bmNpZnkgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgKiBhcyBkcml2ZXIgZnJvbSAnLi9saWIvZHJpdmVyJztcbmltcG9ydCAqIGFzIHNlcnZlciBmcm9tICcuL2xpYi9zZXJ2ZXInO1xuXG5cbmNvbnN0IHsgQW5kcm9pZFVpYXV0b21hdG9yMkRyaXZlciB9ID0gZHJpdmVyO1xuY29uc3QgeyBzdGFydFNlcnZlciB9ID0gc2VydmVyO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9IT1NUID0gJ2xvY2FsaG9zdCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QT1JUID0gNDg4NDtcblxuYXN5bmMgZnVuY3Rpb24gbWFpbiAoKSB7XG4gIGNvbnN0IGdldEFyZ1ZhbHVlID0gKGFyZ05hbWUpID0+IHtcbiAgICBjb25zdCBhcmdJbmRleCA9IHByb2Nlc3MuYXJndi5pbmRleE9mKGFyZ05hbWUpO1xuICAgIHJldHVybiBhcmdJbmRleCA+IDAgPyBwcm9jZXNzLmFyZ3ZbYXJnSW5kZXggKyAxXSA6IG51bGw7XG4gIH07XG4gIGNvbnN0IHBvcnQgPSBwYXJzZUludChnZXRBcmdWYWx1ZSgnLS1wb3J0JyksIDEwKSB8fCBERUZBVUxUX1BPUlQ7XG4gIGNvbnN0IGhvc3QgPSBnZXRBcmdWYWx1ZSgnLS1ob3N0JykgfHwgREVGQVVMVF9IT1NUO1xuICByZXR1cm4gYXdhaXQgc3RhcnRTZXJ2ZXIocG9ydCwgaG9zdCk7XG59XG5cbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBhc3luY2lmeShtYWluKTtcbn1cblxuZXhwb3J0IHsgQW5kcm9pZFVpYXV0b21hdG9yMkRyaXZlciwgc3RhcnRTZXJ2ZXIgfTtcbmV4cG9ydCBkZWZhdWx0IEFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOzs7Ozs7QUFHQSxNQUFNO0VBQUVBO0FBQUYsSUFBZ0NDLE1BQXRDOztBQUNBLE1BQU07RUFBRUM7QUFBRixJQUFrQkMsTUFBeEI7O0FBRU8sTUFBTUMsWUFBWSxHQUFHLFdBQXJCOztBQUNBLE1BQU1DLFlBQVksR0FBRyxJQUFyQjs7O0FBRVAsZUFBZUMsSUFBZixHQUF1QjtFQUNyQixNQUFNQyxXQUFXLEdBQUlDLE9BQUQsSUFBYTtJQUMvQixNQUFNQyxRQUFRLEdBQUdDLE9BQU8sQ0FBQ0MsSUFBUixDQUFhQyxPQUFiLENBQXFCSixPQUFyQixDQUFqQjtJQUNBLE9BQU9DLFFBQVEsR0FBRyxDQUFYLEdBQWVDLE9BQU8sQ0FBQ0MsSUFBUixDQUFhRixRQUFRLEdBQUcsQ0FBeEIsQ0FBZixHQUE0QyxJQUFuRDtFQUNELENBSEQ7O0VBSUEsTUFBTUksSUFBSSxHQUFHQyxRQUFRLENBQUNQLFdBQVcsQ0FBQyxRQUFELENBQVosRUFBd0IsRUFBeEIsQ0FBUixJQUF1Q0YsWUFBcEQ7RUFDQSxNQUFNVSxJQUFJLEdBQUdSLFdBQVcsQ0FBQyxRQUFELENBQVgsSUFBeUJILFlBQXRDO0VBQ0EsT0FBTyxNQUFNRixXQUFXLENBQUNXLElBQUQsRUFBT0UsSUFBUCxDQUF4QjtBQUNEOztBQUVELElBQUlDLE9BQU8sQ0FBQ1YsSUFBUixLQUFpQlcsTUFBckIsRUFBNkI7RUFDM0IsSUFBQUMsa0JBQUEsRUFBU1osSUFBVDtBQUNEOztlQUdjTix5QiJ9
@@ -187,4 +187,4 @@ var _default = extensions;
187
187
  exports.default = _default;require('source-map-support').install();
188
188
 
189
189
 
190
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2VsZW1lbnQuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwidG9Cb29sIiwicyIsIl8iLCJpc1N0cmluZyIsInRvTG93ZXJDYXNlIiwiYWN0aXZlIiwidWlhdXRvbWF0b3IyIiwiandwcm94eSIsImNvbW1hbmQiLCJnZXRBdHRyaWJ1dGUiLCJhdHRyaWJ1dGUiLCJlbGVtZW50SWQiLCJlbGVtZW50RGlzcGxheWVkIiwiZWxlbWVudEVuYWJsZWQiLCJlbGVtZW50U2VsZWN0ZWQiLCJnZXROYW1lIiwiZ2V0TG9jYXRpb24iLCJnZXRTaXplIiwidG91Y2hMb25nQ2xpY2siLCJlbGVtZW50IiwieCIsInkiLCJkdXJhdGlvbiIsInBhcmFtcyIsInRvdWNoRG93biIsInRvdWNoVXAiLCJ0b3VjaE1vdmUiLCJkb1NldEVsZW1lbnRWYWx1ZSIsInNldFZhbHVlSW1tZWRpYXRlIiwia2V5cyIsInRleHQiLCJpc0FycmF5Iiwiam9pbiIsInJlcGxhY2UiLCJ1bmljb2RlS2V5Ym9hcmQiLCJvcHRzIiwiZ2V0VGV4dCIsImNsaWNrIiwiZ2V0RWxlbWVudFNjcmVlbnNob3QiLCJ0YXAiLCJjb3VudCIsImFyZUNvb3JkaW5hdGVzRGVmaW5lZCIsInV0aWwiLCJoYXNWYWx1ZSIsIkVycm9yIiwiaSIsIlczQ19FTEVNRU5UX0tFWSIsImNsZWFyIiwiZ2V0RWxlbWVudFJlY3QiLCJpc1dlYkNvbnRleHQiLCJsb2ciLCJkZWJ1ZyIsImNocm9tZWRyaXZlciIsImRvd25zdHJlYW1Qcm90b2NvbCIsIlBST1RPQ09MUyIsIk1KU09OV1AiLCJ3aWR0aCIsImhlaWdodCIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9lbGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IFBST1RPQ09MUywgVzNDX0VMRU1FTlRfS0VZIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gdG9Cb29sIChzKSB7XG4gIHJldHVybiBfLmlzU3RyaW5nKHMpID8gKHMudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnKSA6ICEhcztcbn1cblxuY29tbWFuZHMuYWN0aXZlID0gYXN5bmMgZnVuY3Rpb24gYWN0aXZlICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2VsZW1lbnQvYWN0aXZlJywgJ0dFVCcpO1xufTtcblxuY29tbWFuZHMuZ2V0QXR0cmlidXRlID0gYXN5bmMgZnVuY3Rpb24gKGF0dHJpYnV0ZSwgZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS9hdHRyaWJ1dGUvJHthdHRyaWJ1dGV9YCwgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLmVsZW1lbnREaXNwbGF5ZWQgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudElkKSB7XG4gIHJldHVybiB0b0Jvb2woYXdhaXQgdGhpcy5nZXRBdHRyaWJ1dGUoJ2Rpc3BsYXllZCcsIGVsZW1lbnRJZCkpO1xufTtcblxuY29tbWFuZHMuZWxlbWVudEVuYWJsZWQgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudElkKSB7XG4gIHJldHVybiB0b0Jvb2woYXdhaXQgdGhpcy5nZXRBdHRyaWJ1dGUoJ2VuYWJsZWQnLCBlbGVtZW50SWQpKTtcbn07XG5cbmNvbW1hbmRzLmVsZW1lbnRTZWxlY3RlZCA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIHRvQm9vbChhd2FpdCB0aGlzLmdldEF0dHJpYnV0ZSgnc2VsZWN0ZWQnLCBlbGVtZW50SWQpKTtcbn07XG5cbmNvbW1hbmRzLmdldE5hbWUgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS9uYW1lYCwgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLmdldExvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vbG9jYXRpb25gLCAnR0VUJywge30pO1xufTtcblxuY29tbWFuZHMuZ2V0U2l6ZSA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50SWR9L3NpemVgLCAnR0VUJywge30pO1xufTtcblxuY29tbWFuZHMudG91Y2hMb25nQ2xpY2sgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudCwgeCwgeSwgZHVyYXRpb24pIHtcbiAgbGV0IHBhcmFtcyA9IHtlbGVtZW50LCB4LCB5LCBkdXJhdGlvbn07XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC90b3VjaC9sb25nY2xpY2tgLCAnUE9TVCcsIHtwYXJhbXN9KTtcbn07XG5cbmNvbW1hbmRzLnRvdWNoRG93biA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50LCB4LCB5KSB7XG4gIGxldCBwYXJhbXMgPSB7ZWxlbWVudCwgeCwgeX07XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC90b3VjaC9kb3duYCwgJ1BPU1QnLCB7cGFyYW1zfSk7XG59O1xuXG5jb21tYW5kcy50b3VjaFVwID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnQsIHgsIHkpIHtcbiAgbGV0IHBhcmFtcyA9IHtlbGVtZW50LCB4LCB5fTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL3RvdWNoL3VwYCwgJ1BPU1QnLCB7cGFyYW1zfSk7XG59O1xuXG5jb21tYW5kcy50b3VjaE1vdmUgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudCwgeCwgeSkge1xuICBsZXQgcGFyYW1zID0ge2VsZW1lbnQsIHgsIHl9O1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvdG91Y2gvbW92ZWAsICdQT1NUJywge3BhcmFtc30pO1xufTtcblxuaGVscGVycy5kb1NldEVsZW1lbnRWYWx1ZSA9IGFzeW5jIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtwYXJhbXMuZWxlbWVudElkfS92YWx1ZWAsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmNvbW1hbmRzLnNldFZhbHVlSW1tZWRpYXRlID0gYXN5bmMgZnVuY3Rpb24gKGtleXMsIGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vdmFsdWVgLCAnUE9TVCcsIHtcbiAgICBlbGVtZW50SWQsXG4gICAgdGV4dDogXy5pc0FycmF5KGtleXMpID8ga2V5cy5qb2luKCcnKSA6IGtleXMsXG4gICAgcmVwbGFjZTogZmFsc2UsXG4gICAgdW5pY29kZUtleWJvYXJkOiB0aGlzLm9wdHMudW5pY29kZUtleWJvYXJkLFxuICB9KTtcbn07XG5cbmNvbW1hbmRzLmdldFRleHQgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS90ZXh0YCwgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLmNsaWNrID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50fS9jbGlja2AsICdQT1NUJywge2VsZW1lbnR9KTtcbn07XG5cbmNvbW1hbmRzLmdldEVsZW1lbnRTY3JlZW5zaG90ID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50fS9zY3JlZW5zaG90YCwgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLnRhcCA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQgPSBudWxsLCB4ID0gbnVsbCwgeSA9IG51bGwsIGNvdW50ID0gMSkge1xuICBjb25zdCBhcmVDb29yZGluYXRlc0RlZmluZWQgPSB1dGlsLmhhc1ZhbHVlKHgpICYmIHV0aWwuaGFzVmFsdWUoeSk7XG4gIGlmICghdXRpbC5oYXNWYWx1ZShlbGVtZW50SWQpICYmICFhcmVDb29yZGluYXRlc0RlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVpdGhlciBlbGVtZW50IGlkIHRvIHRhcCBvciBib3RoIGFic29sdXRlIGNvb3JkaW5hdGVzIHNob3VsZCBiZSBkZWZpbmVkYCk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICBpZiAodXRpbC5oYXNWYWx1ZShlbGVtZW50SWQpICYmICFhcmVDb29yZGluYXRlc0RlZmluZWQpIHtcbiAgICAgIC8vIHdlIGFyZSBlaXRoZXIgdGFwcGluZyBvbiB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgZWxlbWVudFxuICAgICAgLy8gb3IgYW4gb2Zmc2V0IGZyb20gdGhlIHRvcCBsZWZ0IGNvcm5lclxuICAgICAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vY2xpY2tgLCAnUE9TVCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vdGFwYCwgJ1BPU1QnLCB7XG4gICAgICAgIHgsIHksXG4gICAgICAgIFtXM0NfRUxFTUVOVF9LRVldOiBlbGVtZW50SWQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn07XG5cbmNvbW1hbmRzLmNsZWFyID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vY2xlYXJgLCAnUE9TVCcsIHtlbGVtZW50SWR9KTtcbn07XG5cbmNvbW1hbmRzLmdldEVsZW1lbnRSZWN0ID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRoaXMubG9nLmRlYnVnKGBEZXRlY3RlZCBkb3duc3RyZWFtIGNocm9tZWRyaXZlciBwcm90b2NvbDogJHt0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmRvd25zdHJlYW1Qcm90b2NvbH1gKTtcbiAgICBpZiAodGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5kb3duc3RyZWFtUHJvdG9jb2wgPT09IFBST1RPQ09MUy5NSlNPTldQKSB7XG4gICAgICBjb25zdCB7eCwgeX0gPSBhd2FpdCB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS9sb2NhdGlvbmAsICdHRVQnKTtcbiAgICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IGF3YWl0IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50SWR9L3NpemVgLCAnR0VUJyk7XG4gICAgICByZXR1cm4ge3gsIHksIHdpZHRoLCBoZWlnaHR9O1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vcmVjdGAsICdHRVQnKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vcmVjdGAsICdHRVQnKTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7OztBQUVBLFNBQVNDLE1BQVQsQ0FBaUJDLENBQWpCLEVBQW9CO0VBQ2xCLE9BQU9DLGdCQUFFQyxRQUFGLENBQVdGLENBQVgsSUFBaUJBLENBQUMsQ0FBQ0csV0FBRixPQUFvQixNQUFyQyxHQUErQyxDQUFDLENBQUNILENBQXhEO0FBQ0Q7O0FBRURKLFFBQVEsQ0FBQ1EsTUFBVCxHQUFrQixlQUFlQSxNQUFmLEdBQXlCO0VBQ3pDLE9BQU8sTUFBTSxLQUFLQyxZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsT0FBMUIsQ0FBa0MsaUJBQWxDLEVBQXFELEtBQXJELENBQWI7QUFDRCxDQUZEOztBQUlBWCxRQUFRLENBQUNZLFlBQVQsR0FBd0IsZ0JBQWdCQyxTQUFoQixFQUEyQkMsU0FBM0IsRUFBc0M7RUFDNUQsT0FBTyxNQUFNLEtBQUtMLFlBQUwsQ0FBa0JDLE9BQWxCLENBQTBCQyxPQUExQixDQUFtQyxZQUFXRyxTQUFVLGNBQWFELFNBQVUsRUFBL0UsRUFBa0YsS0FBbEYsRUFBeUYsRUFB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
190
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2VsZW1lbnQuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwidG9Cb29sIiwicyIsIl8iLCJpc1N0cmluZyIsInRvTG93ZXJDYXNlIiwiYWN0aXZlIiwidWlhdXRvbWF0b3IyIiwiandwcm94eSIsImNvbW1hbmQiLCJnZXRBdHRyaWJ1dGUiLCJhdHRyaWJ1dGUiLCJlbGVtZW50SWQiLCJlbGVtZW50RGlzcGxheWVkIiwiZWxlbWVudEVuYWJsZWQiLCJlbGVtZW50U2VsZWN0ZWQiLCJnZXROYW1lIiwiZ2V0TG9jYXRpb24iLCJnZXRTaXplIiwidG91Y2hMb25nQ2xpY2siLCJlbGVtZW50IiwieCIsInkiLCJkdXJhdGlvbiIsInBhcmFtcyIsInRvdWNoRG93biIsInRvdWNoVXAiLCJ0b3VjaE1vdmUiLCJkb1NldEVsZW1lbnRWYWx1ZSIsInNldFZhbHVlSW1tZWRpYXRlIiwia2V5cyIsInRleHQiLCJpc0FycmF5Iiwiam9pbiIsInJlcGxhY2UiLCJ1bmljb2RlS2V5Ym9hcmQiLCJvcHRzIiwiZ2V0VGV4dCIsImNsaWNrIiwiZ2V0RWxlbWVudFNjcmVlbnNob3QiLCJ0YXAiLCJjb3VudCIsImFyZUNvb3JkaW5hdGVzRGVmaW5lZCIsInV0aWwiLCJoYXNWYWx1ZSIsIkVycm9yIiwiaSIsIlczQ19FTEVNRU5UX0tFWSIsImNsZWFyIiwiZ2V0RWxlbWVudFJlY3QiLCJpc1dlYkNvbnRleHQiLCJsb2ciLCJkZWJ1ZyIsImNocm9tZWRyaXZlciIsImRvd25zdHJlYW1Qcm90b2NvbCIsIlBST1RPQ09MUyIsIk1KU09OV1AiLCJ3aWR0aCIsImhlaWdodCIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9lbGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IFBST1RPQ09MUywgVzNDX0VMRU1FTlRfS0VZIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gdG9Cb29sIChzKSB7XG4gIHJldHVybiBfLmlzU3RyaW5nKHMpID8gKHMudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnKSA6ICEhcztcbn1cblxuY29tbWFuZHMuYWN0aXZlID0gYXN5bmMgZnVuY3Rpb24gYWN0aXZlICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2VsZW1lbnQvYWN0aXZlJywgJ0dFVCcpO1xufTtcblxuY29tbWFuZHMuZ2V0QXR0cmlidXRlID0gYXN5bmMgZnVuY3Rpb24gKGF0dHJpYnV0ZSwgZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS9hdHRyaWJ1dGUvJHthdHRyaWJ1dGV9YCwgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLmVsZW1lbnREaXNwbGF5ZWQgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudElkKSB7XG4gIHJldHVybiB0b0Jvb2woYXdhaXQgdGhpcy5nZXRBdHRyaWJ1dGUoJ2Rpc3BsYXllZCcsIGVsZW1lbnRJZCkpO1xufTtcblxuY29tbWFuZHMuZWxlbWVudEVuYWJsZWQgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudElkKSB7XG4gIHJldHVybiB0b0Jvb2woYXdhaXQgdGhpcy5nZXRBdHRyaWJ1dGUoJ2VuYWJsZWQnLCBlbGVtZW50SWQpKTtcbn07XG5cbmNvbW1hbmRzLmVsZW1lbnRTZWxlY3RlZCA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIHRvQm9vbChhd2FpdCB0aGlzLmdldEF0dHJpYnV0ZSgnc2VsZWN0ZWQnLCBlbGVtZW50SWQpKTtcbn07XG5cbmNvbW1hbmRzLmdldE5hbWUgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS9uYW1lYCwgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLmdldExvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vbG9jYXRpb25gLCAnR0VUJywge30pO1xufTtcblxuY29tbWFuZHMuZ2V0U2l6ZSA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50SWR9L3NpemVgLCAnR0VUJywge30pO1xufTtcblxuY29tbWFuZHMudG91Y2hMb25nQ2xpY2sgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudCwgeCwgeSwgZHVyYXRpb24pIHtcbiAgbGV0IHBhcmFtcyA9IHtlbGVtZW50LCB4LCB5LCBkdXJhdGlvbn07XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC90b3VjaC9sb25nY2xpY2tgLCAnUE9TVCcsIHtwYXJhbXN9KTtcbn07XG5cbmNvbW1hbmRzLnRvdWNoRG93biA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50LCB4LCB5KSB7XG4gIGxldCBwYXJhbXMgPSB7ZWxlbWVudCwgeCwgeX07XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC90b3VjaC9kb3duYCwgJ1BPU1QnLCB7cGFyYW1zfSk7XG59O1xuXG5jb21tYW5kcy50b3VjaFVwID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnQsIHgsIHkpIHtcbiAgbGV0IHBhcmFtcyA9IHtlbGVtZW50LCB4LCB5fTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL3RvdWNoL3VwYCwgJ1BPU1QnLCB7cGFyYW1zfSk7XG59O1xuXG5jb21tYW5kcy50b3VjaE1vdmUgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudCwgeCwgeSkge1xuICBsZXQgcGFyYW1zID0ge2VsZW1lbnQsIHgsIHl9O1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvdG91Y2gvbW92ZWAsICdQT1NUJywge3BhcmFtc30pO1xufTtcblxuaGVscGVycy5kb1NldEVsZW1lbnRWYWx1ZSA9IGFzeW5jIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtwYXJhbXMuZWxlbWVudElkfS92YWx1ZWAsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmNvbW1hbmRzLnNldFZhbHVlSW1tZWRpYXRlID0gYXN5bmMgZnVuY3Rpb24gKGtleXMsIGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vdmFsdWVgLCAnUE9TVCcsIHtcbiAgICBlbGVtZW50SWQsXG4gICAgdGV4dDogXy5pc0FycmF5KGtleXMpID8ga2V5cy5qb2luKCcnKSA6IGtleXMsXG4gICAgcmVwbGFjZTogZmFsc2UsXG4gICAgdW5pY29kZUtleWJvYXJkOiB0aGlzLm9wdHMudW5pY29kZUtleWJvYXJkLFxuICB9KTtcbn07XG5cbmNvbW1hbmRzLmdldFRleHQgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS90ZXh0YCwgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLmNsaWNrID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50fS9jbGlja2AsICdQT1NUJywge2VsZW1lbnR9KTtcbn07XG5cbmNvbW1hbmRzLmdldEVsZW1lbnRTY3JlZW5zaG90ID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50fS9zY3JlZW5zaG90YCwgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLnRhcCA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQgPSBudWxsLCB4ID0gbnVsbCwgeSA9IG51bGwsIGNvdW50ID0gMSkge1xuICBjb25zdCBhcmVDb29yZGluYXRlc0RlZmluZWQgPSB1dGlsLmhhc1ZhbHVlKHgpICYmIHV0aWwuaGFzVmFsdWUoeSk7XG4gIGlmICghdXRpbC5oYXNWYWx1ZShlbGVtZW50SWQpICYmICFhcmVDb29yZGluYXRlc0RlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVpdGhlciBlbGVtZW50IGlkIHRvIHRhcCBvciBib3RoIGFic29sdXRlIGNvb3JkaW5hdGVzIHNob3VsZCBiZSBkZWZpbmVkYCk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICBpZiAodXRpbC5oYXNWYWx1ZShlbGVtZW50SWQpICYmICFhcmVDb29yZGluYXRlc0RlZmluZWQpIHtcbiAgICAgIC8vIHdlIGFyZSBlaXRoZXIgdGFwcGluZyBvbiB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgZWxlbWVudFxuICAgICAgLy8gb3IgYW4gb2Zmc2V0IGZyb20gdGhlIHRvcCBsZWZ0IGNvcm5lclxuICAgICAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vY2xpY2tgLCAnUE9TVCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vdGFwYCwgJ1BPU1QnLCB7XG4gICAgICAgIHgsIHksXG4gICAgICAgIFtXM0NfRUxFTUVOVF9LRVldOiBlbGVtZW50SWQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn07XG5cbmNvbW1hbmRzLmNsZWFyID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vY2xlYXJgLCAnUE9TVCcsIHtlbGVtZW50SWR9KTtcbn07XG5cbmNvbW1hbmRzLmdldEVsZW1lbnRSZWN0ID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRoaXMubG9nLmRlYnVnKGBEZXRlY3RlZCBkb3duc3RyZWFtIGNocm9tZWRyaXZlciBwcm90b2NvbDogJHt0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmRvd25zdHJlYW1Qcm90b2NvbH1gKTtcbiAgICBpZiAodGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5kb3duc3RyZWFtUHJvdG9jb2wgPT09IFBST1RPQ09MUy5NSlNPTldQKSB7XG4gICAgICBjb25zdCB7eCwgeX0gPSBhd2FpdCB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS9sb2NhdGlvbmAsICdHRVQnKTtcbiAgICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IGF3YWl0IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50SWR9L3NpemVgLCAnR0VUJyk7XG4gICAgICByZXR1cm4ge3gsIHksIHdpZHRoLCBoZWlnaHR9O1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vcmVjdGAsICdHRVQnKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vcmVjdGAsICdHRVQnKTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7OztBQUVBLFNBQVNDLE1BQVQsQ0FBaUJDLENBQWpCLEVBQW9CO0VBQ2xCLE9BQU9DLGVBQUEsQ0FBRUMsUUFBRixDQUFXRixDQUFYLElBQWlCQSxDQUFDLENBQUNHLFdBQUYsT0FBb0IsTUFBckMsR0FBK0MsQ0FBQyxDQUFDSCxDQUF4RDtBQUNEOztBQUVESixRQUFRLENBQUNRLE1BQVQsR0FBa0IsZUFBZUEsTUFBZixHQUF5QjtFQUN6QyxPQUFPLE1BQU0sS0FBS0MsWUFBTCxDQUFrQkMsT0FBbEIsQ0FBMEJDLE9BQTFCLENBQWtDLGlCQUFsQyxFQUFxRCxLQUFyRCxDQUFiO0FBQ0QsQ0FGRDs7QUFJQVgsUUFBUSxDQUFDWSxZQUFULEdBQXdCLGdCQUFnQkMsU0FBaEIsRUFBMkJDLFNBQTNCLEVBQXNDO0VBQzVELE9BQU8sTUFBTSxLQUFLTCxZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsT0FBMUIsQ0FBbUMsWUFBV0csU0FBVSxjQUFhRCxTQUFVLEVBQS9FLEVBQWtGLEtBQWxGLEVBQXlGLEVBQXpGLENBQWI7QUFDRCxDQUZEOztBQUlBYixRQUFRLENBQUNlLGdCQUFULEdBQTRCLGdCQUFnQkQsU0FBaEIsRUFBMkI7RUFDckQsT0FBT1gsTUFBTSxDQUFDLE1BQU0sS0FBS1MsWUFBTCxDQUFrQixXQUFsQixFQUErQkUsU0FBL0IsQ0FBUCxDQUFiO0FBQ0QsQ0FGRDs7QUFJQWQsUUFBUSxDQUFDZ0IsY0FBVCxHQUEwQixnQkFBZ0JGLFNBQWhCLEVBQTJCO0VBQ25ELE9BQU9YLE1BQU0sQ0FBQyxNQUFNLEtBQUtTLFlBQUwsQ0FBa0IsU0FBbEIsRUFBNkJFLFNBQTdCLENBQVAsQ0FBYjtBQUNELENBRkQ7O0FBSUFkLFFBQVEsQ0FBQ2lCLGVBQVQsR0FBMkIsZ0JBQWdCSCxTQUFoQixFQUEyQjtFQUNwRCxPQUFPWCxNQUFNLENBQUMsTUFBTSxLQUFLUyxZQUFMLENBQWtCLFVBQWxCLEVBQThCRSxTQUE5QixDQUFQLENBQWI7QUFDRCxDQUZEOztBQUlBZCxRQUFRLENBQUNrQixPQUFULEdBQW1CLGdCQUFnQkosU0FBaEIsRUFBMkI7RUFDNUMsT0FBTyxNQUFNLEtBQUtMLFlBQUwsQ0FBa0JDLE9BQWxCLENBQTBCQyxPQUExQixDQUFtQyxZQUFXRyxTQUFVLE9BQXhELEVBQWdFLEtBQWhFLEVBQXVFLEVBQXZFLENBQWI7QUFDRCxDQUZEOztBQUlBZCxRQUFRLENBQUNtQixXQUFULEdBQXVCLGdCQUFnQkwsU0FBaEIsRUFBMkI7RUFDaEQsT0FBTyxNQUFNLEtBQUtMLFlBQUwsQ0FBa0JDLE9BQWxCLENBQTBCQyxPQUExQixDQUFtQyxZQUFXRyxTQUFVLFdBQXhELEVBQW9FLEtBQXBFLEVBQTJFLEVBQTNFLENBQWI7QUFDRCxDQUZEOztBQUlBZCxRQUFRLENBQUNvQixPQUFULEdBQW1CLGdCQUFnQk4sU0FBaEIsRUFBMkI7RUFDNUMsT0FBTyxNQUFNLEtBQUtMLFlBQUwsQ0FBa0JDLE9BQWxCLENBQTBCQyxPQUExQixDQUFtQyxZQUFXRyxTQUFVLE9BQXhELEVBQWdFLEtBQWhFLEVBQXVFLEVBQXZFLENBQWI7QUFDRCxDQUZEOztBQUlBZCxRQUFRLENBQUNxQixjQUFULEdBQTBCLGdCQUFnQkMsT0FBaEIsRUFBeUJDLENBQXpCLEVBQTRCQyxDQUE1QixFQUErQkMsUUFBL0IsRUFBeUM7RUFDakUsSUFBSUMsTUFBTSxHQUFHO0lBQUNKLE9BQUQ7SUFBVUMsQ0FBVjtJQUFhQyxDQUFiO0lBQWdCQztFQUFoQixDQUFiO0VBQ0EsT0FBTyxNQUFNLEtBQUtoQixZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsT0FBMUIsQ0FBbUMsa0JBQW5DLEVBQXNELE1BQXRELEVBQThEO0lBQUNlO0VBQUQsQ0FBOUQsQ0FBYjtBQUNELENBSEQ7O0FBS0ExQixRQUFRLENBQUMyQixTQUFULEdBQXFCLGdCQUFnQkwsT0FBaEIsRUFBeUJDLENBQXpCLEVBQTRCQyxDQUE1QixFQUErQjtFQUNsRCxJQUFJRSxNQUFNLEdBQUc7SUFBQ0osT0FBRDtJQUFVQyxDQUFWO0lBQWFDO0VBQWIsQ0FBYjtFQUNBLE9BQU8sTUFBTSxLQUFLZixZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsT0FBMUIsQ0FBbUMsYUFBbkMsRUFBaUQsTUFBakQsRUFBeUQ7SUFBQ2U7RUFBRCxDQUF6RCxDQUFiO0FBQ0QsQ0FIRDs7QUFLQTFCLFFBQVEsQ0FBQzRCLE9BQVQsR0FBbUIsZ0JBQWdCTixPQUFoQixFQUF5QkMsQ0FBekIsRUFBNEJDLENBQTVCLEVBQStCO0VBQ2hELElBQUlFLE1BQU0sR0FBRztJQUFDSixPQUFEO0lBQVVDLENBQVY7SUFBYUM7RUFBYixDQUFiO0VBQ0EsT0FBTyxNQUFNLEtBQUtmLFlBQUwsQ0FBa0JDLE9BQWxCLENBQTBCQyxPQUExQixDQUFtQyxXQUFuQyxFQUErQyxNQUEvQyxFQUF1RDtJQUFDZTtFQUFELENBQXZELENBQWI7QUFDRCxDQUhEOztBQUtBMUIsUUFBUSxDQUFDNkIsU0FBVCxHQUFxQixnQkFBZ0JQLE9BQWhCLEVBQXlCQyxDQUF6QixFQUE0QkMsQ0FBNUIsRUFBK0I7RUFDbEQsSUFBSUUsTUFBTSxHQUFHO0lBQUNKLE9BQUQ7SUFBVUMsQ0FBVjtJQUFhQztFQUFiLENBQWI7RUFDQSxPQUFPLE1BQU0sS0FBS2YsWUFBTCxDQUFrQkMsT0FBbEIsQ0FBMEJDLE9BQTFCLENBQW1DLGFBQW5DLEVBQWlELE1BQWpELEVBQXlEO0lBQUNlO0VBQUQsQ0FBekQsQ0FBYjtBQUNELENBSEQ7O0FBS0F6QixPQUFPLENBQUM2QixpQkFBUixHQUE0QixnQkFBZ0JKLE1BQWhCLEVBQXdCO0VBQ2xELE9BQU8sTUFBTSxLQUFLakIsWUFBTCxDQUFrQkMsT0FBbEIsQ0FBMEJDLE9BQTFCLENBQW1DLFlBQVdlLE1BQU0sQ0FBQ1osU0FBVSxRQUEvRCxFQUF3RSxNQUF4RSxFQUFnRlksTUFBaEYsQ0FBYjtBQUNELENBRkQ7O0FBSUExQixRQUFRLENBQUMrQixpQkFBVCxHQUE2QixnQkFBZ0JDLElBQWhCLEVBQXNCbEIsU0FBdEIsRUFBaUM7RUFDNUQsT0FBTyxNQUFNLEtBQUtMLFlBQUwsQ0FBa0JDLE9BQWxCLENBQTBCQyxPQUExQixDQUFtQyxZQUFXRyxTQUFVLFFBQXhELEVBQWlFLE1BQWpFLEVBQXlFO0lBQ3BGQSxTQURvRjtJQUVwRm1CLElBQUksRUFBRTVCLGVBQUEsQ0FBRTZCLE9BQUYsQ0FBVUYsSUFBVixJQUFrQkEsSUFBSSxDQUFDRyxJQUFMLENBQVUsRUFBVixDQUFsQixHQUFrQ0gsSUFGNEM7SUFHcEZJLE9BQU8sRUFBRSxLQUgyRTtJQUlwRkMsZUFBZSxFQUFFLEtBQUtDLElBQUwsQ0FBVUQ7RUFKeUQsQ0FBekUsQ0FBYjtBQU1ELENBUEQ7O0FBU0FyQyxRQUFRLENBQUN1QyxPQUFULEdBQW1CLGdCQUFnQnpCLFNBQWhCLEVBQTJCO0VBQzVDLE9BQU8sTUFBTSxLQUFLTCxZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsT0FBMUIsQ0FBbUMsWUFBV0csU0FBVSxPQUF4RCxFQUFnRSxLQUFoRSxFQUF1RSxFQUF2RSxDQUFiO0FBQ0QsQ0FGRDs7QUFJQWQsUUFBUSxDQUFDd0MsS0FBVCxHQUFpQixnQkFBZ0JsQixPQUFoQixFQUF5QjtFQUN4QyxPQUFPLE1BQU0sS0FBS2IsWUFBTCxDQUFrQkMsT0FBbEIsQ0FBMEJDLE9BQTFCLENBQW1DLFlBQVdXLE9BQVEsUUFBdEQsRUFBK0QsTUFBL0QsRUFBdUU7SUFBQ0E7RUFBRCxDQUF2RSxDQUFiO0FBQ0QsQ0FGRDs7QUFJQXRCLFFBQVEsQ0FBQ3lDLG9CQUFULEdBQWdDLGdCQUFnQm5CLE9BQWhCLEVBQXlCO0VBQ3ZELE9BQU8sTUFBTSxLQUFLYixZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsT0FBMUIsQ0FBbUMsWUFBV1csT0FBUSxhQUF0RCxFQUFvRSxLQUFwRSxFQUEyRSxFQUEzRSxDQUFiO0FBQ0QsQ0FGRDs7QUFJQXRCLFFBQVEsQ0FBQzBDLEdBQVQsR0FBZSxnQkFBZ0I1QixTQUFTLEdBQUcsSUFBNUIsRUFBa0NTLENBQUMsR0FBRyxJQUF0QyxFQUE0Q0MsQ0FBQyxHQUFHLElBQWhELEVBQXNEbUIsS0FBSyxHQUFHLENBQTlELEVBQWlFO0VBQzlFLE1BQU1DLHFCQUFxQixHQUFHQyxhQUFBLENBQUtDLFFBQUwsQ0FBY3ZCLENBQWQsS0FBb0JzQixhQUFBLENBQUtDLFFBQUwsQ0FBY3RCLENBQWQsQ0FBbEQ7O0VBQ0EsSUFBSSxDQUFDcUIsYUFBQSxDQUFLQyxRQUFMLENBQWNoQyxTQUFkLENBQUQsSUFBNkIsQ0FBQzhCLHFCQUFsQyxFQUF5RDtJQUN2RCxNQUFNLElBQUlHLEtBQUosQ0FBVyx5RUFBWCxDQUFOO0VBQ0Q7O0VBRUQsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHTCxLQUFwQixFQUEyQkssQ0FBQyxFQUE1QixFQUFnQztJQUM5QixJQUFJSCxhQUFBLENBQUtDLFFBQUwsQ0FBY2hDLFNBQWQsS0FBNEIsQ0FBQzhCLHFCQUFqQyxFQUF3RDtNQUd0RCxNQUFNLEtBQUtuQyxZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsT0FBMUIsQ0FBbUMsWUFBV0csU0FBVSxRQUF4RCxFQUFpRSxNQUFqRSxDQUFOO0lBQ0QsQ0FKRCxNQUlPO01BQ0wsTUFBTSxLQUFLTCxZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsT0FBMUIsQ0FBbUMsYUFBbkMsRUFBaUQsTUFBakQsRUFBeUQ7UUFDN0RZLENBRDZEO1FBQzFEQyxDQUQwRDtRQUU3RCxDQUFDeUIsMkJBQUQsR0FBbUJuQztNQUYwQyxDQUF6RCxDQUFOO0lBSUQ7RUFDRjtBQUNGLENBbEJEOztBQW9CQWQsUUFBUSxDQUFDa0QsS0FBVCxHQUFpQixnQkFBZ0JwQyxTQUFoQixFQUEyQjtFQUMxQyxPQUFPLE1BQU0sS0FBS0wsWUFBTCxDQUFrQkMsT0FBbEIsQ0FBMEJDLE9BQTFCLENBQW1DLFlBQVdHLFNBQVUsUUFBeEQsRUFBaUUsTUFBakUsRUFBeUU7SUFBQ0E7RUFBRCxDQUF6RSxDQUFiO0FBQ0QsQ0FGRDs7QUFJQWQsUUFBUSxDQUFDbUQsY0FBVCxHQUEwQixnQkFBZ0JyQyxTQUFoQixFQUEyQjtFQUNuRCxJQUFJLEtBQUtzQyxZQUFMLEVBQUosRUFBeUI7SUFDdkIsS0FBS0MsR0FBTCxDQUFTQyxLQUFULENBQWdCLDhDQUE2QyxLQUFLQyxZQUFMLENBQWtCN0MsT0FBbEIsQ0FBMEI4QyxrQkFBbUIsRUFBMUc7O0lBQ0EsSUFBSSxLQUFLRCxZQUFMLENBQWtCN0MsT0FBbEIsQ0FBMEI4QyxrQkFBMUIsS0FBaURDLHFCQUFBLENBQVVDLE9BQS9ELEVBQXdFO01BQ3RFLE1BQU07UUFBQ25DLENBQUQ7UUFBSUM7TUFBSixJQUFTLE1BQU0sS0FBSytCLFlBQUwsQ0FBa0I3QyxPQUFsQixDQUEwQkMsT0FBMUIsQ0FBbUMsWUFBV0csU0FBVSxXQUF4RCxFQUFvRSxLQUFwRSxDQUFyQjtNQUNBLE1BQU07UUFBQzZDLEtBQUQ7UUFBUUM7TUFBUixJQUFrQixNQUFNLEtBQUtMLFlBQUwsQ0FBa0I3QyxPQUFsQixDQUEwQkMsT0FBMUIsQ0FBbUMsWUFBV0csU0FBVSxPQUF4RCxFQUFnRSxLQUFoRSxDQUE5QjtNQUNBLE9BQU87UUFBQ1MsQ0FBRDtRQUFJQyxDQUFKO1FBQU9tQyxLQUFQO1FBQWNDO01BQWQsQ0FBUDtJQUNEOztJQUNELE9BQU8sTUFBTSxLQUFLTCxZQUFMLENBQWtCN0MsT0FBbEIsQ0FBMEJDLE9BQTFCLENBQW1DLFlBQVdHLFNBQVUsT0FBeEQsRUFBZ0UsS0FBaEUsQ0FBYjtFQUNEOztFQUNELE9BQU8sTUFBTSxLQUFLTCxZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsT0FBMUIsQ0FBbUMsWUFBV0csU0FBVSxPQUF4RCxFQUFnRSxLQUFoRSxDQUFiO0FBQ0QsQ0FYRDs7QUFhQStDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjNUQsVUFBZCxFQUEwQkYsUUFBMUIsRUFBb0NDLE9BQXBDO2VBRWVDLFUifQ==
@@ -255,4 +255,4 @@ var _default = extensions;
255
255
  exports.default = _default;require('source-map-support').install();
256
256
 
257
257
 
258
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2dlbmVyYWwuanMiLCJuYW1lcyI6WyJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZ2V0UGFnZVNvdXJjZSIsInVpYXV0b21hdG9yMiIsImp3cHJveHkiLCJjb21tYW5kIiwiZ2V0Q2xpcGJvYXJkIiwiYWRiIiwiZ2V0QXBpTGV2ZWwiLCJkb1NlbmRLZXlzIiwicGFyYW1zIiwia2V5ZXZlbnQiLCJrZXljb2RlIiwibWV0YXN0YXRlIiwibG9nIiwiZGVidWciLCJiYWNrIiwiZ2V0U3RyaW5ncyIsImxhbmd1YWdlIiwiZ2V0RGV2aWNlTGFuZ3VhZ2UiLCJpbmZvIiwicHJlcHJvY2Vzc1N0cmluZ3NNYXAiLCJtYXBwaW5nIiwicmVzdWx0Iiwia2V5IiwidmFsdWUiLCJfIiwidG9QYWlycyIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImFwa1N0cmluZ3MiLCJvcHRzIiwiYXBwIiwiYXBwUGFja2FnZSIsImVycm9yQW5kVGhyb3ciLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJwdWxsQXBrIiwiZXJyIiwibWVzc2FnZSIsImZzIiwiZXhpc3RzIiwiZXh0cmFjdFN0cmluZ3NGcm9tQXBrIiwicmltcmFmIiwiZ2V0RGlzcGxheURlbnNpdHkiLCJnZXRXaW5kb3dTaXplIiwiZ2V0V2luZG93UmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwieCIsInkiLCJleGVjdXRlTW9iaWxlIiwibW9iaWxlQ29tbWFuZCIsIm1vYmlsZUNvbW1hbmRzTWFwcGluZyIsInNoZWxsIiwiZXhlY0VtdUNvbnNvbGVDb21tYW5kIiwiZHJhZ0dlc3R1cmUiLCJmbGluZ0dlc3R1cmUiLCJkb3VibGVDbGlja0dlc3R1cmUiLCJjbGlja0dlc3R1cmUiLCJsb25nQ2xpY2tHZXN0dXJlIiwicGluY2hDbG9zZUdlc3R1cmUiLCJwaW5jaE9wZW5HZXN0dXJlIiwic3dpcGVHZXN0dXJlIiwic2Nyb2xsR2VzdHVyZSIsInNjcm9sbEJhY2tUbyIsInNjcm9sbCIsInZpZXdwb3J0U2NyZWVuc2hvdCIsInZpZXdwb3J0UmVjdCIsImRlZXBMaW5rIiwic3RhcnRMb2dzQnJvYWRjYXN0Iiwic3RvcExvZ3NCcm9hZGNhc3QiLCJhY2NlcHRBbGVydCIsImRpc21pc3NBbGVydCIsImJhdHRlcnlJbmZvIiwiZGV2aWNlSW5mbyIsImdldERldmljZVRpbWUiLCJjaGFuZ2VQZXJtaXNzaW9ucyIsImdldFBlcm1pc3Npb25zIiwicGVyZm9ybUVkaXRvckFjdGlvbiIsInN0YXJ0U2NyZWVuU3RyZWFtaW5nIiwic3RvcFNjcmVlblN0cmVhbWluZyIsImdldE5vdGlmaWNhdGlvbnMiLCJsaXN0U21zIiwidHlwZSIsInNlbnNvclNldCIsImRlbGV0ZUZpbGUiLCJjbGVhckFwcCIsInN0YXJ0QWN0aXZpdHkiLCJzdGFydFNlcnZpY2UiLCJzdG9wU2VydmljZSIsImJyb2FkY2FzdCIsImdldENvbnRleHRzIiwiaW5zdGFsbE11bHRpcGxlQXBrcyIsInVubG9jayIsInJlZnJlc2hHcHNDYWNoZSIsImhhcyIsImVycm9ycyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJrZXlzIiwibW9iaWxlVmlld3BvcnRTY3JlZW5zaG90IiwiZ2V0Vmlld3BvcnRTY3JlZW5zaG90IiwibW9iaWxlVmlld1BvcnRSZWN0IiwiZ2V0Vmlld1BvcnRSZWN0Iiwic2V0VXJsIiwidXJsIiwic3RhcnRVcmkiLCJtb2JpbGVEZWVwTGluayIsInBhY2thZ2UiLCJwa2ciLCJ3YWl0Rm9yTGF1bmNoIiwib3Blbk5vdGlmaWNhdGlvbnMiLCJ1cGRhdGVTZXR0aW5ncyIsInNldHRpbmdzIiwidXBkYXRlIiwiZ2V0U2V0dGluZ3MiLCJkcml2ZXJTZXR0aW5ncyIsInNlcnZlclNldHRpbmdzIiwid3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QiLCJ3cmFwcGVkIiwic3VzcGVuZENocm9tZWRyaXZlclByb3h5IiwiY2hyb21lZHJpdmVyIiwicHJveHlSZXFSZXMiLCJiaW5kIiwicHJveHlDb21tYW5kIiwiandwUHJveHlBY3RpdmUiLCJtb2JpbGVHZXREZXZpY2VJbmZvIiwibW9iaWxlVHlwZSIsInRleHQiLCJpc1VuZGVmaW5lZCIsInR5cGVVbmljb2RlIiwibW9iaWxlSW5zdGFsbE11bHRpcGxlQXBrcyIsImlzQXJyYXkiLCJhcGtzIiwiaXNFbXB0eSIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiQiIsImFsbCIsIm1hcCIsImNvbmZpZ3VyZUFwcCIsIkFQS19FWFRFTlNJT04iLCJvcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2dlbmVyYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgZnMsIHRlbXBEaXIgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgQVBLX0VYVEVOU0lPTiB9IGZyb20gJy4uL2V4dGVuc2lvbnMnO1xuXG5sZXQgZXh0ZW5zaW9ucyA9IHt9LFxuICAgIGNvbW1hbmRzID0ge30sXG4gICAgaGVscGVycyA9IHt9O1xuXG5jb21tYW5kcy5nZXRQYWdlU291cmNlID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvc291cmNlJywgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLmdldENsaXBib2FyZCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIChhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpIDwgMjkpXG4gICAgPyAoYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL2RldmljZS9nZXRfY2xpcGJvYXJkJywgJ1BPU1QnLCB7fSkpXG4gICAgOiAoYXdhaXQgdGhpcy5hZGIuZ2V0Q2xpcGJvYXJkKCkpO1xufTtcblxuLy8gTmVlZCB0byBvdmVycmlkZSB0aGlzIGZvciBjb3JyZWN0IHVuaWNvZGUgc3VwcG9ydFxuY29tbWFuZHMuZG9TZW5kS2V5cyA9IGFzeW5jIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcva2V5cycsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbi8vIHVpYXV0b21hdG9yMiBkb2Vzbid0IHN1cHBvcnQgbWV0YXN0YXRlIGZvciBrZXlldmVudHNcbmNvbW1hbmRzLmtleWV2ZW50ID0gYXN5bmMgZnVuY3Rpb24gKGtleWNvZGUsIG1ldGFzdGF0ZSkge1xuICB0aGlzLmxvZy5kZWJ1ZyhgSWdub3JpbmcgbWV0YXN0YXRlICR7bWV0YXN0YXRlfWApO1xuICBhd2FpdCB0aGlzLmFkYi5rZXlldmVudChrZXljb2RlKTtcbn07XG5cbi8vIFVzZSBBREIgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBVaUF1dG9tYXRvclxuY29tbWFuZHMuYmFjayA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoNCk7XG59O1xuXG5jb21tYW5kcy5nZXRTdHJpbmdzID0gYXN5bmMgZnVuY3Rpb24gKGxhbmd1YWdlKSB7XG4gIGlmICghbGFuZ3VhZ2UpIHtcbiAgICBsYW5ndWFnZSA9IGF3YWl0IHRoaXMuYWRiLmdldERldmljZUxhbmd1YWdlKCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgTm8gbGFuZ3VhZ2Ugc3BlY2lmaWVkLCByZXR1cm5pbmcgc3RyaW5ncyBmb3I6ICR7bGFuZ3VhZ2V9YCk7XG4gIH1cblxuICAvLyBDbGllbnRzIHJlcXVpcmUgdGhlIHJlc3VsdGluZyBtYXBwaW5nIHRvIGhhdmUgYm90aCBrZXlzXG4gIC8vIGFuZCB2YWx1ZXMgb2YgdHlwZSBzdHJpbmdcbiAgY29uc3QgcHJlcHJvY2Vzc1N0cmluZ3NNYXAgPSBmdW5jdGlvbiAobWFwcGluZykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhtYXBwaW5nKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBfLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGlmICh0aGlzLmFwa1N0cmluZ3NbbGFuZ3VhZ2VdKSB7XG4gICAgLy8gUmV0dXJuIGNhY2hlZCBzdHJpbmdzXG4gICAgcmV0dXJuIHByZXByb2Nlc3NTdHJpbmdzTWFwKHRoaXMuYXBrU3RyaW5nc1tsYW5ndWFnZV0pO1xuICB9XG5cbiAgaWYgKCF0aGlzLm9wdHMuYXBwICYmICF0aGlzLm9wdHMuYXBwUGFja2FnZSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coXCJPbmUgb2YgJ2FwcCcgb3IgJ2FwcFBhY2thZ2UnIGNhcGFiaWxpdGllcyBzaG91bGQgbXVzdCBiZSBzcGVjaWZpZWRcIik7XG4gIH1cblxuICBsZXQgYXBwID0gdGhpcy5vcHRzLmFwcDtcbiAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICB0cnkge1xuICAgIGlmICghYXBwKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhcHAgPSBhd2FpdCB0aGlzLmFkYi5wdWxsQXBrKHRoaXMub3B0cy5hcHBQYWNrYWdlLCB0bXBSb290KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBGYWlsZWQgdG8gcHVsbCBhbiBhcGsgZnJvbSAnJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0nLiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhhcHApKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaGUgYXBwIGF0ICcke2FwcH0nIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHthcGtTdHJpbmdzfSA9IGF3YWl0IHRoaXMuYWRiLmV4dHJhY3RTdHJpbmdzRnJvbUFwayhhcHAsIGxhbmd1YWdlLCB0bXBSb290KTtcbiAgICAgIHRoaXMuYXBrU3RyaW5nc1tsYW5ndWFnZV0gPSBhcGtTdHJpbmdzO1xuICAgICAgcmV0dXJuIHByZXByb2Nlc3NTdHJpbmdzTWFwKGFwa1N0cmluZ3MpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgQ2Fubm90IGV4dHJhY3Qgc3RyaW5ncyBmcm9tICcke2FwcH0nLiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICB9XG59O1xuXG5jb21tYW5kcy5nZXREaXNwbGF5RGVuc2l0eSA9IGFzeW5jIGZ1bmN0aW9uIGdldERpc3BsYXlEZW5zaXR5ICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvZGlzcGxheV9kZW5zaXR5JywgJ0dFVCcsIHt9KTtcbn07XG5cbi8vIG1lbW9pemVkIGluIGNvbnN0cnVjdG9yXG5jb21tYW5kcy5nZXRXaW5kb3dTaXplID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvd2luZG93L2N1cnJlbnQvc2l6ZScsICdHRVQnLCB7fSk7XG59O1xuXG4vLyBGb3IgVzNDXG5jb21tYW5kcy5nZXRXaW5kb3dSZWN0ID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSBhd2FpdCB0aGlzLmdldFdpbmRvd1NpemUoKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeDogMCxcbiAgICB5OiAwLFxuICB9O1xufTtcblxuZXh0ZW5zaW9ucy5leGVjdXRlTW9iaWxlID0gYXN5bmMgZnVuY3Rpb24gKG1vYmlsZUNvbW1hbmQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBtb2JpbGVDb21tYW5kc01hcHBpbmcgPSB7XG4gICAgc2hlbGw6ICdtb2JpbGVTaGVsbCcsXG5cbiAgICBleGVjRW11Q29uc29sZUNvbW1hbmQ6ICdtb2JpbGVFeGVjRW11Q29uc29sZUNvbW1hbmQnLFxuXG4gICAgZHJhZ0dlc3R1cmU6ICdtb2JpbGVEcmFnR2VzdHVyZScsXG4gICAgZmxpbmdHZXN0dXJlOiAnbW9iaWxlRmxpbmdHZXN0dXJlJyxcbiAgICBkb3VibGVDbGlja0dlc3R1cmU6ICdtb2JpbGVEb3VibGVDbGlja0dlc3R1cmUnLFxuICAgIGNsaWNrR2VzdHVyZTogJ21vYmlsZUNsaWNrR2VzdHVyZScsXG4gICAgbG9uZ0NsaWNrR2VzdHVyZTogJ21vYmlsZUxvbmdDbGlja0dlc3R1cmUnLFxuICAgIHBpbmNoQ2xvc2VHZXN0dXJlOiAnbW9iaWxlUGluY2hDbG9zZUdlc3R1cmUnLFxuICAgIHBpbmNoT3Blbkdlc3R1cmU6ICdtb2JpbGVQaW5jaE9wZW5HZXN0dXJlJyxcbiAgICBzd2lwZUdlc3R1cmU6ICdtb2JpbGVTd2lwZUdlc3R1cmUnLFxuICAgIHNjcm9sbEdlc3R1cmU6ICdtb2JpbGVTY3JvbGxHZXN0dXJlJyxcbiAgICBzY3JvbGxCYWNrVG86ICdtb2JpbGVTY3JvbGxCYWNrVG8nLFxuICAgIHNjcm9sbDogJ21vYmlsZVNjcm9sbCcsXG4gICAgdmlld3BvcnRTY3JlZW5zaG90OiAnbW9iaWxlVmlld3BvcnRTY3JlZW5zaG90JyxcbiAgICB2aWV3cG9ydFJlY3Q6ICdtb2JpbGVWaWV3UG9ydFJlY3QnLFxuXG4gICAgZGVlcExpbms6ICdtb2JpbGVEZWVwTGluaycsXG5cbiAgICBzdGFydExvZ3NCcm9hZGNhc3Q6ICdtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QnLFxuICAgIHN0b3BMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RvcExvZ3NCcm9hZGNhc3QnLFxuXG4gICAgYWNjZXB0QWxlcnQ6ICdtb2JpbGVBY2NlcHRBbGVydCcsXG4gICAgZGlzbWlzc0FsZXJ0OiAnbW9iaWxlRGlzbWlzc0FsZXJ0JyxcblxuICAgIGJhdHRlcnlJbmZvOiAnbW9iaWxlR2V0QmF0dGVyeUluZm8nLFxuXG4gICAgZGV2aWNlSW5mbzogJ21vYmlsZUdldERldmljZUluZm8nLFxuXG4gICAgZ2V0RGV2aWNlVGltZTogJ21vYmlsZUdldERldmljZVRpbWUnLFxuXG4gICAgY2hhbmdlUGVybWlzc2lvbnM6ICdtb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucycsXG4gICAgZ2V0UGVybWlzc2lvbnM6ICdtb2JpbGVHZXRQZXJtaXNzaW9ucycsXG5cbiAgICBwZXJmb3JtRWRpdG9yQWN0aW9uOiAnbW9iaWxlUGVyZm9ybUVkaXRvckFjdGlvbicsXG5cbiAgICBzdGFydFNjcmVlblN0cmVhbWluZzogJ21vYmlsZVN0YXJ0U2NyZWVuU3RyZWFtaW5nJyxcbiAgICBzdG9wU2NyZWVuU3RyZWFtaW5nOiAnbW9iaWxlU3RvcFNjcmVlblN0cmVhbWluZycsXG5cbiAgICBnZXROb3RpZmljYXRpb25zOiAnbW9iaWxlR2V0Tm90aWZpY2F0aW9ucycsXG5cbiAgICBsaXN0U21zOiAnbW9iaWxlTGlzdFNtcycsXG5cbiAgICB0eXBlOiAnbW9iaWxlVHlwZScsXG4gICAgc2Vuc29yU2V0OiAnc2Vuc29yU2V0JyxcblxuICAgIGRlbGV0ZUZpbGU6ICdtb2JpbGVEZWxldGVGaWxlJyxcblxuICAgIGNsZWFyQXBwOiAnbW9iaWxlQ2xlYXJBcHAnLFxuXG4gICAgc3RhcnRBY3Rpdml0eTogJ21vYmlsZVN0YXJ0QWN0aXZpdHknLFxuICAgIHN0YXJ0U2VydmljZTogJ21vYmlsZVN0YXJ0U2VydmljZScsXG4gICAgc3RvcFNlcnZpY2U6ICdtb2JpbGVTdG9wU2VydmljZScsXG4gICAgYnJvYWRjYXN0OiAnbW9iaWxlQnJvYWRjYXN0JyxcblxuICAgIGdldENvbnRleHRzOiAnbW9iaWxlR2V0Q29udGV4dHMnLFxuXG4gICAgaW5zdGFsbE11bHRpcGxlQXBrczogJ21vYmlsZUluc3RhbGxNdWx0aXBsZUFwa3MnLFxuXG4gICAgdW5sb2NrOiAnbW9iaWxlVW5sb2NrJyxcblxuICAgIHJlZnJlc2hHcHNDYWNoZTogJ21vYmlsZVJlZnJlc2hHcHNDYWNoZScsXG4gIH07XG5cbiAgaWYgKCFfLmhhcyhtb2JpbGVDb21tYW5kc01hcHBpbmcsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kIFwiJHttb2JpbGVDb21tYW5kfVwiLiBgICtcbiAgICAgIGBPbmx5ICR7Xy5rZXlzKG1vYmlsZUNvbW1hbmRzTWFwcGluZyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbbW9iaWxlQ29tbWFuZHNNYXBwaW5nW21vYmlsZUNvbW1hbmRdXShvcHRzKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVZpZXdwb3J0U2NyZWVuc2hvdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Vmlld3BvcnRTY3JlZW5zaG90KCk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFJlY3RhbmdsZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGxlZnQgLSBUaGUgbGVmdCBjb29yZGluYXRlIG9mIHRoZSBSZWN0YW5nbGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gdG9wIC0gVGhlIHRvcCBjb29yZGluYXRlIG9mIHRoZSBSZWN0YW5nbGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gd2lkdGggLSBUaGUgd2lkdGggb2YgUmVjdGFuZ2xlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGhlaWdodCAtIFRoZSBoZWlnaHQgb2YgUmVjdGFuZ2xlLlxuICovXG5cbi8qKlxuICogUmV0dXJucyB0aGUgdmlld3BvcnQgY29vcmRpbmF0ZXMuXG4gKiBAcmV0dXJucyB7UmVjdGFuZ2xlfSBUaGUgdmlld3BvcnQgY29vcmRpbmF0ZXMuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVZpZXdQb3J0UmVjdCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVZpZXdQb3J0UmVjdCAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmdldFZpZXdQb3J0UmVjdCgpO1xufTtcblxuY29tbWFuZHMuc2V0VXJsID0gYXN5bmMgZnVuY3Rpb24gKHVybCkge1xuICBhd2FpdCB0aGlzLmFkYi5zdGFydFVyaSh1cmwsIHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gRGVlcExpbmtPcHRzXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IHVybCAtIFRoZSBuYW1lIG9mIFVSTCB0byBzdGFydC5cbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gcGFja2FnZSAtIFRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlIHRvIHN0YXJ0IHRoZSBVUkkgd2l0aC5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IHdhaXRGb3JMYXVuY2ggW3RydWVdIC0gaWYgYGZhbHNlYCB0aGVuIGFkYiB3b24ndCB3YWl0XG4gKiBmb3IgdGhlIHN0YXJ0ZWQgYWN0aXZpdHkgdG8gcmV0dXJuIHRoZSBjb250cm9sXG4gKi9cblxuLyoqXG4gKiBTdGFydCBVUkwgdGhhdCB0YWtlIHVzZXJzIGRpcmVjdGx5IHRvIHNwZWNpZmljIGNvbnRlbnQgaW4gdGhlIGFwcFxuICogQHBhcmFtIHtEZWVwTGlua09wdHN9IG9wdHNcbiAqL1xuY29tbWFuZHMubW9iaWxlRGVlcExpbmsgPSBhc3luYyBmdW5jdGlvbiAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1cmwsXG4gICAgcGFja2FnZTogcGtnLFxuICAgIHdhaXRGb3JMYXVuY2gsXG4gIH0gPSBvcHRzO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc3RhcnRVcmkodXJsLCBwa2csIHsgd2FpdEZvckxhdW5jaCB9KTtcbn07XG5cbmNvbW1hbmRzLm9wZW5Ob3RpZmljYXRpb25zID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL2RldmljZS9vcGVuX25vdGlmaWNhdGlvbnMnLCAnUE9TVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLnVwZGF0ZVNldHRpbmdzID0gYXN5bmMgZnVuY3Rpb24gKHNldHRpbmdzKSB7XG4gIGF3YWl0IHRoaXMuc2V0dGluZ3MudXBkYXRlKHNldHRpbmdzKTtcbiAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL3NldHRpbmdzJywgJ1BPU1QnLCB7c2V0dGluZ3N9KTtcbn07XG5cbmNvbW1hbmRzLmdldFNldHRpbmdzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBjb25zdCBkcml2ZXJTZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3MuZ2V0U2V0dGluZ3MoKTtcbiAgY29uc3Qgc2VydmVyU2V0dGluZ3MgPSBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vc2V0dGluZ3MnLCAnR0VUJyk7XG4gIHJldHVybiB7Li4uZHJpdmVyU2V0dGluZ3MsIC4uLnNlcnZlclNldHRpbmdzfTtcbn07XG5cbi8qKlxuICogT3ZlcnJpZGluZyBhcHBpdW0tYW5kcm9pZC1kcml2ZXIncyB3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCxcbiAqIHVubGlrZSBpbiBhcHBpdW0tYW5kcm9pZC1kcml2ZXIgYXZvaWRpbmcgYWRiIHJlc3RhcnRpbmcgYXMgaXQgaW50ZXJuXG4gKiBraWxscyBVaUF1dG9tYXRvcjIgc2VydmVyIHJ1bm5pbmcgaW4gdGhlIGRldmljZS5cbiAqKi9cbmhlbHBlcnMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QgPSBhc3luYyBmdW5jdGlvbiAod3JhcHBlZCkge1xuICBhd2FpdCB3cmFwcGVkKCk7XG59O1xuXG4vLyBTdG9wIHByb3h5aW5nIHRvIGFueSBDaHJvbWVkcml2ZXIgYW5kIHJlZGlyZWN0IHRvIHVpYXV0b21hdG9yMlxuaGVscGVycy5zdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2hyb21lZHJpdmVyID0gbnVsbDtcbiAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMudWlhdXRvbWF0b3IyLnByb3h5UmVxUmVzLmJpbmQodGhpcy51aWF1dG9tYXRvcjIpO1xuICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMudWlhdXRvbWF0b3IyLnByb3h5Q29tbWFuZC5iaW5kKHRoaXMudWlhdXRvbWF0b3IyKTtcbiAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IHRydWU7XG59O1xuXG4vKipcbiAqIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBpbmZvIGVudHJpZXMgY2FuIGJlIGZvdW5kIGF0XG4gKiBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS11aWF1dG9tYXRvcjItc2VydmVyL2Jsb2IvbWFzdGVyL2FwcC9zcmMvbWFpbi9qYXZhL2lvL2FwcGl1bS91aWF1dG9tYXRvcjIvaGFuZGxlci9HZXREZXZpY2VJbmZvLmphdmFcbiAqL1xuY29tbWFuZHMubW9iaWxlR2V0RGV2aWNlSW5mbyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvaW5mbycsICdHRVQnKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gVHlwaW5nT3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfG51bWJlcnxib29sZWFufSB0ZXh0IC0gVGhlIHRleHQgdG8gdHlwZVxuICovXG5cbi8qKlxuICogVHlwZXMgdGhlIGdpdmVuIFVuaWNvZGUgc3RyaW5nLlxuICogSXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGUgZm9jdXMgaXMgYWxyZWFkeSBwdXRcbiAqIHRvIHRoZSBkZXN0aW5hdGlvbiBpbnB1dCBmaWVsZCBiZWZvcmUgdGhpcyBtZXRob2QgaXMgY2FsbGVkLlxuICpcbiAqIEBwYXJhbSB7VHlwaW5nT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgaW5wdXQgdGV4dCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgc2VudCB0byBhZGJcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBgdGV4dGAgcHJvcGVydHkgaGFzIG5vdCBiZWVuIHByb3ZpZGVkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVR5cGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVUeXBlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRleHQsXG4gIH0gPSBvcHRzO1xuICBpZiAoXy5pc1VuZGVmaW5lZCh0ZXh0KSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYFRoZSAndGV4dCcgYXJndW1lbnQgaXMgbWFuZGF0b3J5YCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnR5cGVVbmljb2RlKHRleHQpO1xufTtcblxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEluc3RhbGxPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGFsbG93VGVzdFBhY2thZ2VzIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSBpbiBvcmRlciB0byBhbGxvdyB0ZXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBpbnN0YWxsYXRpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHVzZVNkY2FyZCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gaW5zdGFsbCB0aGUgYXBwIG9uIHNkY2FyZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgdGhlIGRldmljZSBtZW1vcnkuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGdyYW50UGVybWlzc2lvbnMgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGdyYW50IGFsbCB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnMgcmVxdWVzdGVkIGluIHRoZSBhcHBsaWNhdGlvbidzIG1hbmlmZXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGluc3RhbGxhdGlvbiBpcyBjb21wbGV0ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXIgQW5kcm9pZCA2Ky5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVwbGFjZSBbdHJ1ZV0gLSBTZXQgaXQgdG8gZmFsc2UgaWYgeW91IGRvbid0IHdhbnRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYXBwbGljYXRpb24gdG8gYmUgdXBncmFkZWQvcmVpbnN0YWxsZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdCBpcyBhbHJlYWR5IHByZXNlbnQgb24gdGhlIGRldmljZS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcGFydGlhbEluc3RhbGwgW2ZhbHNlXSAtIEluc3RhbGwgYXBrcyBwYXJ0aWFsbHkuIEl0IGlzIHVzZWQgZm9yICdpbnN0YWxsLW11bHRpcGxlJy5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9hbmRyb2lkLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8xMTEwNjQvd2hhdC1pcy1hLXBhcnRpYWwtYXBwbGljYXRpb24taW5zdGFsbC12aWEtYWRiXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBJbnN0YWxsTXVsdGlwbGVBcGtzT3B0aW9uc1xuICogQHByb3BlcnR5IHtBcnJheTxzdHJpbmc+fSBhcGtzIC0gVGhlIGxpc3Qgb2YgQVBLcyB0byBpbnN0YWxsLiBFYWNoIEFQSyBzaG91bGQgYmUgYSBwYXRoIHRvIGEgYXBrXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBkb3dubG9hZGFibGUgVVJMIGFzIEhUVFAvSFRUUFMuXG4gKiBAcHJvcGVydHkge0luc3RhbGxPcHRpb25zfSBvcHRpb25zXG4gKi9cblxuLyoqXG4gKiBJbnN0YWxsIG11bHRpcGxlIEFQS3Mgd2l0aCBgaW5zdGFsbC1tdWx0aXBsZWAgb3B0aW9uLlxuICpcbiAqIEBwYXJhbSB7SW5zdGFsbE11bHRpcGxlQXBrc09wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBhbiBlcnJvciBvY2N1cmVkIHdoaWxlIGluc3RhbGxpbmcgdGhlIGdpdmVuIEFQS3MuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUluc3RhbGxNdWx0aXBsZUFwa3MgPSBhc3luYyBmdW5jdGlvbiAob3B0cyA9IHt9KSB7XG4gIGlmICghXy5pc0FycmF5KG9wdHMuYXBrcykgfHwgXy5pc0VtcHR5KG9wdHMuYXBrcykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKCdObyBhcGtzIGFyZSBnaXZlbiB0byBpbnN0YWxsJyk7XG4gIH1cbiAgY29uc3QgYXBrcyA9IGF3YWl0IEIuYWxsKG9wdHMuYXBrc1xuICAgIC5tYXAoKGFwcCkgPT4gdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcChhcHAsIFtBUEtfRVhURU5TSU9OXSkpKTtcbiAgYXdhaXQgdGhpcy5hZGIuaW5zdGFsbE11bHRpcGxlQXBrcyhhcGtzLCBvcHRzLm9wdGlvbnMpO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5cbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBSUEsVUFBVSxHQUFHLEVBQWpC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
258
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2dlbmVyYWwuanMiLCJuYW1lcyI6WyJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZ2V0UGFnZVNvdXJjZSIsInVpYXV0b21hdG9yMiIsImp3cHJveHkiLCJjb21tYW5kIiwiZ2V0Q2xpcGJvYXJkIiwiYWRiIiwiZ2V0QXBpTGV2ZWwiLCJkb1NlbmRLZXlzIiwicGFyYW1zIiwia2V5ZXZlbnQiLCJrZXljb2RlIiwibWV0YXN0YXRlIiwibG9nIiwiZGVidWciLCJiYWNrIiwiZ2V0U3RyaW5ncyIsImxhbmd1YWdlIiwiZ2V0RGV2aWNlTGFuZ3VhZ2UiLCJpbmZvIiwicHJlcHJvY2Vzc1N0cmluZ3NNYXAiLCJtYXBwaW5nIiwicmVzdWx0Iiwia2V5IiwidmFsdWUiLCJfIiwidG9QYWlycyIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImFwa1N0cmluZ3MiLCJvcHRzIiwiYXBwIiwiYXBwUGFja2FnZSIsImVycm9yQW5kVGhyb3ciLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJwdWxsQXBrIiwiZXJyIiwibWVzc2FnZSIsImZzIiwiZXhpc3RzIiwiZXh0cmFjdFN0cmluZ3NGcm9tQXBrIiwicmltcmFmIiwiZ2V0RGlzcGxheURlbnNpdHkiLCJnZXRXaW5kb3dTaXplIiwiZ2V0V2luZG93UmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwieCIsInkiLCJleGVjdXRlTW9iaWxlIiwibW9iaWxlQ29tbWFuZCIsIm1vYmlsZUNvbW1hbmRzTWFwcGluZyIsInNoZWxsIiwiZXhlY0VtdUNvbnNvbGVDb21tYW5kIiwiZHJhZ0dlc3R1cmUiLCJmbGluZ0dlc3R1cmUiLCJkb3VibGVDbGlja0dlc3R1cmUiLCJjbGlja0dlc3R1cmUiLCJsb25nQ2xpY2tHZXN0dXJlIiwicGluY2hDbG9zZUdlc3R1cmUiLCJwaW5jaE9wZW5HZXN0dXJlIiwic3dpcGVHZXN0dXJlIiwic2Nyb2xsR2VzdHVyZSIsInNjcm9sbEJhY2tUbyIsInNjcm9sbCIsInZpZXdwb3J0U2NyZWVuc2hvdCIsInZpZXdwb3J0UmVjdCIsImRlZXBMaW5rIiwic3RhcnRMb2dzQnJvYWRjYXN0Iiwic3RvcExvZ3NCcm9hZGNhc3QiLCJhY2NlcHRBbGVydCIsImRpc21pc3NBbGVydCIsImJhdHRlcnlJbmZvIiwiZGV2aWNlSW5mbyIsImdldERldmljZVRpbWUiLCJjaGFuZ2VQZXJtaXNzaW9ucyIsImdldFBlcm1pc3Npb25zIiwicGVyZm9ybUVkaXRvckFjdGlvbiIsInN0YXJ0U2NyZWVuU3RyZWFtaW5nIiwic3RvcFNjcmVlblN0cmVhbWluZyIsImdldE5vdGlmaWNhdGlvbnMiLCJsaXN0U21zIiwidHlwZSIsInNlbnNvclNldCIsImRlbGV0ZUZpbGUiLCJjbGVhckFwcCIsInN0YXJ0QWN0aXZpdHkiLCJzdGFydFNlcnZpY2UiLCJzdG9wU2VydmljZSIsImJyb2FkY2FzdCIsImdldENvbnRleHRzIiwiaW5zdGFsbE11bHRpcGxlQXBrcyIsInVubG9jayIsInJlZnJlc2hHcHNDYWNoZSIsImhhcyIsImVycm9ycyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJrZXlzIiwibW9iaWxlVmlld3BvcnRTY3JlZW5zaG90IiwiZ2V0Vmlld3BvcnRTY3JlZW5zaG90IiwibW9iaWxlVmlld1BvcnRSZWN0IiwiZ2V0Vmlld1BvcnRSZWN0Iiwic2V0VXJsIiwidXJsIiwic3RhcnRVcmkiLCJtb2JpbGVEZWVwTGluayIsInBhY2thZ2UiLCJwa2ciLCJ3YWl0Rm9yTGF1bmNoIiwib3Blbk5vdGlmaWNhdGlvbnMiLCJ1cGRhdGVTZXR0aW5ncyIsInNldHRpbmdzIiwidXBkYXRlIiwiZ2V0U2V0dGluZ3MiLCJkcml2ZXJTZXR0aW5ncyIsInNlcnZlclNldHRpbmdzIiwid3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QiLCJ3cmFwcGVkIiwic3VzcGVuZENocm9tZWRyaXZlclByb3h5IiwiY2hyb21lZHJpdmVyIiwicHJveHlSZXFSZXMiLCJiaW5kIiwicHJveHlDb21tYW5kIiwiandwUHJveHlBY3RpdmUiLCJtb2JpbGVHZXREZXZpY2VJbmZvIiwibW9iaWxlVHlwZSIsInRleHQiLCJpc1VuZGVmaW5lZCIsInR5cGVVbmljb2RlIiwibW9iaWxlSW5zdGFsbE11bHRpcGxlQXBrcyIsImlzQXJyYXkiLCJhcGtzIiwiaXNFbXB0eSIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiQiIsImFsbCIsIm1hcCIsImNvbmZpZ3VyZUFwcCIsIkFQS19FWFRFTlNJT04iLCJvcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2dlbmVyYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgZnMsIHRlbXBEaXIgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgQVBLX0VYVEVOU0lPTiB9IGZyb20gJy4uL2V4dGVuc2lvbnMnO1xuXG5sZXQgZXh0ZW5zaW9ucyA9IHt9LFxuICAgIGNvbW1hbmRzID0ge30sXG4gICAgaGVscGVycyA9IHt9O1xuXG5jb21tYW5kcy5nZXRQYWdlU291cmNlID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvc291cmNlJywgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLmdldENsaXBib2FyZCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIChhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpIDwgMjkpXG4gICAgPyAoYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL2RldmljZS9nZXRfY2xpcGJvYXJkJywgJ1BPU1QnLCB7fSkpXG4gICAgOiAoYXdhaXQgdGhpcy5hZGIuZ2V0Q2xpcGJvYXJkKCkpO1xufTtcblxuLy8gTmVlZCB0byBvdmVycmlkZSB0aGlzIGZvciBjb3JyZWN0IHVuaWNvZGUgc3VwcG9ydFxuY29tbWFuZHMuZG9TZW5kS2V5cyA9IGFzeW5jIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcva2V5cycsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbi8vIHVpYXV0b21hdG9yMiBkb2Vzbid0IHN1cHBvcnQgbWV0YXN0YXRlIGZvciBrZXlldmVudHNcbmNvbW1hbmRzLmtleWV2ZW50ID0gYXN5bmMgZnVuY3Rpb24gKGtleWNvZGUsIG1ldGFzdGF0ZSkge1xuICB0aGlzLmxvZy5kZWJ1ZyhgSWdub3JpbmcgbWV0YXN0YXRlICR7bWV0YXN0YXRlfWApO1xuICBhd2FpdCB0aGlzLmFkYi5rZXlldmVudChrZXljb2RlKTtcbn07XG5cbi8vIFVzZSBBREIgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBVaUF1dG9tYXRvclxuY29tbWFuZHMuYmFjayA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoNCk7XG59O1xuXG5jb21tYW5kcy5nZXRTdHJpbmdzID0gYXN5bmMgZnVuY3Rpb24gKGxhbmd1YWdlKSB7XG4gIGlmICghbGFuZ3VhZ2UpIHtcbiAgICBsYW5ndWFnZSA9IGF3YWl0IHRoaXMuYWRiLmdldERldmljZUxhbmd1YWdlKCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgTm8gbGFuZ3VhZ2Ugc3BlY2lmaWVkLCByZXR1cm5pbmcgc3RyaW5ncyBmb3I6ICR7bGFuZ3VhZ2V9YCk7XG4gIH1cblxuICAvLyBDbGllbnRzIHJlcXVpcmUgdGhlIHJlc3VsdGluZyBtYXBwaW5nIHRvIGhhdmUgYm90aCBrZXlzXG4gIC8vIGFuZCB2YWx1ZXMgb2YgdHlwZSBzdHJpbmdcbiAgY29uc3QgcHJlcHJvY2Vzc1N0cmluZ3NNYXAgPSBmdW5jdGlvbiAobWFwcGluZykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhtYXBwaW5nKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBfLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGlmICh0aGlzLmFwa1N0cmluZ3NbbGFuZ3VhZ2VdKSB7XG4gICAgLy8gUmV0dXJuIGNhY2hlZCBzdHJpbmdzXG4gICAgcmV0dXJuIHByZXByb2Nlc3NTdHJpbmdzTWFwKHRoaXMuYXBrU3RyaW5nc1tsYW5ndWFnZV0pO1xuICB9XG5cbiAgaWYgKCF0aGlzLm9wdHMuYXBwICYmICF0aGlzLm9wdHMuYXBwUGFja2FnZSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coXCJPbmUgb2YgJ2FwcCcgb3IgJ2FwcFBhY2thZ2UnIGNhcGFiaWxpdGllcyBzaG91bGQgbXVzdCBiZSBzcGVjaWZpZWRcIik7XG4gIH1cblxuICBsZXQgYXBwID0gdGhpcy5vcHRzLmFwcDtcbiAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICB0cnkge1xuICAgIGlmICghYXBwKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhcHAgPSBhd2FpdCB0aGlzLmFkYi5wdWxsQXBrKHRoaXMub3B0cy5hcHBQYWNrYWdlLCB0bXBSb290KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBGYWlsZWQgdG8gcHVsbCBhbiBhcGsgZnJvbSAnJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0nLiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhhcHApKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaGUgYXBwIGF0ICcke2FwcH0nIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHthcGtTdHJpbmdzfSA9IGF3YWl0IHRoaXMuYWRiLmV4dHJhY3RTdHJpbmdzRnJvbUFwayhhcHAsIGxhbmd1YWdlLCB0bXBSb290KTtcbiAgICAgIHRoaXMuYXBrU3RyaW5nc1tsYW5ndWFnZV0gPSBhcGtTdHJpbmdzO1xuICAgICAgcmV0dXJuIHByZXByb2Nlc3NTdHJpbmdzTWFwKGFwa1N0cmluZ3MpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgQ2Fubm90IGV4dHJhY3Qgc3RyaW5ncyBmcm9tICcke2FwcH0nLiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICB9XG59O1xuXG5jb21tYW5kcy5nZXREaXNwbGF5RGVuc2l0eSA9IGFzeW5jIGZ1bmN0aW9uIGdldERpc3BsYXlEZW5zaXR5ICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvZGlzcGxheV9kZW5zaXR5JywgJ0dFVCcsIHt9KTtcbn07XG5cbi8vIG1lbW9pemVkIGluIGNvbnN0cnVjdG9yXG5jb21tYW5kcy5nZXRXaW5kb3dTaXplID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvd2luZG93L2N1cnJlbnQvc2l6ZScsICdHRVQnLCB7fSk7XG59O1xuXG4vLyBGb3IgVzNDXG5jb21tYW5kcy5nZXRXaW5kb3dSZWN0ID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSBhd2FpdCB0aGlzLmdldFdpbmRvd1NpemUoKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeDogMCxcbiAgICB5OiAwLFxuICB9O1xufTtcblxuZXh0ZW5zaW9ucy5leGVjdXRlTW9iaWxlID0gYXN5bmMgZnVuY3Rpb24gKG1vYmlsZUNvbW1hbmQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBtb2JpbGVDb21tYW5kc01hcHBpbmcgPSB7XG4gICAgc2hlbGw6ICdtb2JpbGVTaGVsbCcsXG5cbiAgICBleGVjRW11Q29uc29sZUNvbW1hbmQ6ICdtb2JpbGVFeGVjRW11Q29uc29sZUNvbW1hbmQnLFxuXG4gICAgZHJhZ0dlc3R1cmU6ICdtb2JpbGVEcmFnR2VzdHVyZScsXG4gICAgZmxpbmdHZXN0dXJlOiAnbW9iaWxlRmxpbmdHZXN0dXJlJyxcbiAgICBkb3VibGVDbGlja0dlc3R1cmU6ICdtb2JpbGVEb3VibGVDbGlja0dlc3R1cmUnLFxuICAgIGNsaWNrR2VzdHVyZTogJ21vYmlsZUNsaWNrR2VzdHVyZScsXG4gICAgbG9uZ0NsaWNrR2VzdHVyZTogJ21vYmlsZUxvbmdDbGlja0dlc3R1cmUnLFxuICAgIHBpbmNoQ2xvc2VHZXN0dXJlOiAnbW9iaWxlUGluY2hDbG9zZUdlc3R1cmUnLFxuICAgIHBpbmNoT3Blbkdlc3R1cmU6ICdtb2JpbGVQaW5jaE9wZW5HZXN0dXJlJyxcbiAgICBzd2lwZUdlc3R1cmU6ICdtb2JpbGVTd2lwZUdlc3R1cmUnLFxuICAgIHNjcm9sbEdlc3R1cmU6ICdtb2JpbGVTY3JvbGxHZXN0dXJlJyxcbiAgICBzY3JvbGxCYWNrVG86ICdtb2JpbGVTY3JvbGxCYWNrVG8nLFxuICAgIHNjcm9sbDogJ21vYmlsZVNjcm9sbCcsXG4gICAgdmlld3BvcnRTY3JlZW5zaG90OiAnbW9iaWxlVmlld3BvcnRTY3JlZW5zaG90JyxcbiAgICB2aWV3cG9ydFJlY3Q6ICdtb2JpbGVWaWV3UG9ydFJlY3QnLFxuXG4gICAgZGVlcExpbms6ICdtb2JpbGVEZWVwTGluaycsXG5cbiAgICBzdGFydExvZ3NCcm9hZGNhc3Q6ICdtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QnLFxuICAgIHN0b3BMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RvcExvZ3NCcm9hZGNhc3QnLFxuXG4gICAgYWNjZXB0QWxlcnQ6ICdtb2JpbGVBY2NlcHRBbGVydCcsXG4gICAgZGlzbWlzc0FsZXJ0OiAnbW9iaWxlRGlzbWlzc0FsZXJ0JyxcblxuICAgIGJhdHRlcnlJbmZvOiAnbW9iaWxlR2V0QmF0dGVyeUluZm8nLFxuXG4gICAgZGV2aWNlSW5mbzogJ21vYmlsZUdldERldmljZUluZm8nLFxuXG4gICAgZ2V0RGV2aWNlVGltZTogJ21vYmlsZUdldERldmljZVRpbWUnLFxuXG4gICAgY2hhbmdlUGVybWlzc2lvbnM6ICdtb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucycsXG4gICAgZ2V0UGVybWlzc2lvbnM6ICdtb2JpbGVHZXRQZXJtaXNzaW9ucycsXG5cbiAgICBwZXJmb3JtRWRpdG9yQWN0aW9uOiAnbW9iaWxlUGVyZm9ybUVkaXRvckFjdGlvbicsXG5cbiAgICBzdGFydFNjcmVlblN0cmVhbWluZzogJ21vYmlsZVN0YXJ0U2NyZWVuU3RyZWFtaW5nJyxcbiAgICBzdG9wU2NyZWVuU3RyZWFtaW5nOiAnbW9iaWxlU3RvcFNjcmVlblN0cmVhbWluZycsXG5cbiAgICBnZXROb3RpZmljYXRpb25zOiAnbW9iaWxlR2V0Tm90aWZpY2F0aW9ucycsXG5cbiAgICBsaXN0U21zOiAnbW9iaWxlTGlzdFNtcycsXG5cbiAgICB0eXBlOiAnbW9iaWxlVHlwZScsXG4gICAgc2Vuc29yU2V0OiAnc2Vuc29yU2V0JyxcblxuICAgIGRlbGV0ZUZpbGU6ICdtb2JpbGVEZWxldGVGaWxlJyxcblxuICAgIGNsZWFyQXBwOiAnbW9iaWxlQ2xlYXJBcHAnLFxuXG4gICAgc3RhcnRBY3Rpdml0eTogJ21vYmlsZVN0YXJ0QWN0aXZpdHknLFxuICAgIHN0YXJ0U2VydmljZTogJ21vYmlsZVN0YXJ0U2VydmljZScsXG4gICAgc3RvcFNlcnZpY2U6ICdtb2JpbGVTdG9wU2VydmljZScsXG4gICAgYnJvYWRjYXN0OiAnbW9iaWxlQnJvYWRjYXN0JyxcblxuICAgIGdldENvbnRleHRzOiAnbW9iaWxlR2V0Q29udGV4dHMnLFxuXG4gICAgaW5zdGFsbE11bHRpcGxlQXBrczogJ21vYmlsZUluc3RhbGxNdWx0aXBsZUFwa3MnLFxuXG4gICAgdW5sb2NrOiAnbW9iaWxlVW5sb2NrJyxcblxuICAgIHJlZnJlc2hHcHNDYWNoZTogJ21vYmlsZVJlZnJlc2hHcHNDYWNoZScsXG4gIH07XG5cbiAgaWYgKCFfLmhhcyhtb2JpbGVDb21tYW5kc01hcHBpbmcsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kIFwiJHttb2JpbGVDb21tYW5kfVwiLiBgICtcbiAgICAgIGBPbmx5ICR7Xy5rZXlzKG1vYmlsZUNvbW1hbmRzTWFwcGluZyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbbW9iaWxlQ29tbWFuZHNNYXBwaW5nW21vYmlsZUNvbW1hbmRdXShvcHRzKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVZpZXdwb3J0U2NyZWVuc2hvdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Vmlld3BvcnRTY3JlZW5zaG90KCk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFJlY3RhbmdsZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGxlZnQgLSBUaGUgbGVmdCBjb29yZGluYXRlIG9mIHRoZSBSZWN0YW5nbGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gdG9wIC0gVGhlIHRvcCBjb29yZGluYXRlIG9mIHRoZSBSZWN0YW5nbGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gd2lkdGggLSBUaGUgd2lkdGggb2YgUmVjdGFuZ2xlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGhlaWdodCAtIFRoZSBoZWlnaHQgb2YgUmVjdGFuZ2xlLlxuICovXG5cbi8qKlxuICogUmV0dXJucyB0aGUgdmlld3BvcnQgY29vcmRpbmF0ZXMuXG4gKiBAcmV0dXJucyB7UmVjdGFuZ2xlfSBUaGUgdmlld3BvcnQgY29vcmRpbmF0ZXMuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVZpZXdQb3J0UmVjdCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVZpZXdQb3J0UmVjdCAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmdldFZpZXdQb3J0UmVjdCgpO1xufTtcblxuY29tbWFuZHMuc2V0VXJsID0gYXN5bmMgZnVuY3Rpb24gKHVybCkge1xuICBhd2FpdCB0aGlzLmFkYi5zdGFydFVyaSh1cmwsIHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gRGVlcExpbmtPcHRzXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IHVybCAtIFRoZSBuYW1lIG9mIFVSTCB0byBzdGFydC5cbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gcGFja2FnZSAtIFRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlIHRvIHN0YXJ0IHRoZSBVUkkgd2l0aC5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IHdhaXRGb3JMYXVuY2ggW3RydWVdIC0gaWYgYGZhbHNlYCB0aGVuIGFkYiB3b24ndCB3YWl0XG4gKiBmb3IgdGhlIHN0YXJ0ZWQgYWN0aXZpdHkgdG8gcmV0dXJuIHRoZSBjb250cm9sXG4gKi9cblxuLyoqXG4gKiBTdGFydCBVUkwgdGhhdCB0YWtlIHVzZXJzIGRpcmVjdGx5IHRvIHNwZWNpZmljIGNvbnRlbnQgaW4gdGhlIGFwcFxuICogQHBhcmFtIHtEZWVwTGlua09wdHN9IG9wdHNcbiAqL1xuY29tbWFuZHMubW9iaWxlRGVlcExpbmsgPSBhc3luYyBmdW5jdGlvbiAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1cmwsXG4gICAgcGFja2FnZTogcGtnLFxuICAgIHdhaXRGb3JMYXVuY2gsXG4gIH0gPSBvcHRzO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc3RhcnRVcmkodXJsLCBwa2csIHsgd2FpdEZvckxhdW5jaCB9KTtcbn07XG5cbmNvbW1hbmRzLm9wZW5Ob3RpZmljYXRpb25zID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL2RldmljZS9vcGVuX25vdGlmaWNhdGlvbnMnLCAnUE9TVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLnVwZGF0ZVNldHRpbmdzID0gYXN5bmMgZnVuY3Rpb24gKHNldHRpbmdzKSB7XG4gIGF3YWl0IHRoaXMuc2V0dGluZ3MudXBkYXRlKHNldHRpbmdzKTtcbiAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL3NldHRpbmdzJywgJ1BPU1QnLCB7c2V0dGluZ3N9KTtcbn07XG5cbmNvbW1hbmRzLmdldFNldHRpbmdzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBjb25zdCBkcml2ZXJTZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3MuZ2V0U2V0dGluZ3MoKTtcbiAgY29uc3Qgc2VydmVyU2V0dGluZ3MgPSBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vc2V0dGluZ3MnLCAnR0VUJyk7XG4gIHJldHVybiB7Li4uZHJpdmVyU2V0dGluZ3MsIC4uLnNlcnZlclNldHRpbmdzfTtcbn07XG5cbi8qKlxuICogT3ZlcnJpZGluZyBhcHBpdW0tYW5kcm9pZC1kcml2ZXIncyB3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCxcbiAqIHVubGlrZSBpbiBhcHBpdW0tYW5kcm9pZC1kcml2ZXIgYXZvaWRpbmcgYWRiIHJlc3RhcnRpbmcgYXMgaXQgaW50ZXJuXG4gKiBraWxscyBVaUF1dG9tYXRvcjIgc2VydmVyIHJ1bm5pbmcgaW4gdGhlIGRldmljZS5cbiAqKi9cbmhlbHBlcnMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QgPSBhc3luYyBmdW5jdGlvbiAod3JhcHBlZCkge1xuICBhd2FpdCB3cmFwcGVkKCk7XG59O1xuXG4vLyBTdG9wIHByb3h5aW5nIHRvIGFueSBDaHJvbWVkcml2ZXIgYW5kIHJlZGlyZWN0IHRvIHVpYXV0b21hdG9yMlxuaGVscGVycy5zdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2hyb21lZHJpdmVyID0gbnVsbDtcbiAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMudWlhdXRvbWF0b3IyLnByb3h5UmVxUmVzLmJpbmQodGhpcy51aWF1dG9tYXRvcjIpO1xuICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMudWlhdXRvbWF0b3IyLnByb3h5Q29tbWFuZC5iaW5kKHRoaXMudWlhdXRvbWF0b3IyKTtcbiAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IHRydWU7XG59O1xuXG4vKipcbiAqIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBpbmZvIGVudHJpZXMgY2FuIGJlIGZvdW5kIGF0XG4gKiBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS11aWF1dG9tYXRvcjItc2VydmVyL2Jsb2IvbWFzdGVyL2FwcC9zcmMvbWFpbi9qYXZhL2lvL2FwcGl1bS91aWF1dG9tYXRvcjIvaGFuZGxlci9HZXREZXZpY2VJbmZvLmphdmFcbiAqL1xuY29tbWFuZHMubW9iaWxlR2V0RGV2aWNlSW5mbyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9kZXZpY2UvaW5mbycsICdHRVQnKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gVHlwaW5nT3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfG51bWJlcnxib29sZWFufSB0ZXh0IC0gVGhlIHRleHQgdG8gdHlwZVxuICovXG5cbi8qKlxuICogVHlwZXMgdGhlIGdpdmVuIFVuaWNvZGUgc3RyaW5nLlxuICogSXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGUgZm9jdXMgaXMgYWxyZWFkeSBwdXRcbiAqIHRvIHRoZSBkZXN0aW5hdGlvbiBpbnB1dCBmaWVsZCBiZWZvcmUgdGhpcyBtZXRob2QgaXMgY2FsbGVkLlxuICpcbiAqIEBwYXJhbSB7VHlwaW5nT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgaW5wdXQgdGV4dCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgc2VudCB0byBhZGJcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBgdGV4dGAgcHJvcGVydHkgaGFzIG5vdCBiZWVuIHByb3ZpZGVkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVR5cGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVUeXBlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRleHQsXG4gIH0gPSBvcHRzO1xuICBpZiAoXy5pc1VuZGVmaW5lZCh0ZXh0KSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYFRoZSAndGV4dCcgYXJndW1lbnQgaXMgbWFuZGF0b3J5YCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnR5cGVVbmljb2RlKHRleHQpO1xufTtcblxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEluc3RhbGxPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGFsbG93VGVzdFBhY2thZ2VzIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSBpbiBvcmRlciB0byBhbGxvdyB0ZXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBpbnN0YWxsYXRpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHVzZVNkY2FyZCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gaW5zdGFsbCB0aGUgYXBwIG9uIHNkY2FyZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgdGhlIGRldmljZSBtZW1vcnkuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGdyYW50UGVybWlzc2lvbnMgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGdyYW50IGFsbCB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnMgcmVxdWVzdGVkIGluIHRoZSBhcHBsaWNhdGlvbidzIG1hbmlmZXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGluc3RhbGxhdGlvbiBpcyBjb21wbGV0ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXIgQW5kcm9pZCA2Ky5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVwbGFjZSBbdHJ1ZV0gLSBTZXQgaXQgdG8gZmFsc2UgaWYgeW91IGRvbid0IHdhbnRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYXBwbGljYXRpb24gdG8gYmUgdXBncmFkZWQvcmVpbnN0YWxsZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdCBpcyBhbHJlYWR5IHByZXNlbnQgb24gdGhlIGRldmljZS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcGFydGlhbEluc3RhbGwgW2ZhbHNlXSAtIEluc3RhbGwgYXBrcyBwYXJ0aWFsbHkuIEl0IGlzIHVzZWQgZm9yICdpbnN0YWxsLW11bHRpcGxlJy5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9hbmRyb2lkLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8xMTEwNjQvd2hhdC1pcy1hLXBhcnRpYWwtYXBwbGljYXRpb24taW5zdGFsbC12aWEtYWRiXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBJbnN0YWxsTXVsdGlwbGVBcGtzT3B0aW9uc1xuICogQHByb3BlcnR5IHtBcnJheTxzdHJpbmc+fSBhcGtzIC0gVGhlIGxpc3Qgb2YgQVBLcyB0byBpbnN0YWxsLiBFYWNoIEFQSyBzaG91bGQgYmUgYSBwYXRoIHRvIGEgYXBrXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBkb3dubG9hZGFibGUgVVJMIGFzIEhUVFAvSFRUUFMuXG4gKiBAcHJvcGVydHkge0luc3RhbGxPcHRpb25zfSBvcHRpb25zXG4gKi9cblxuLyoqXG4gKiBJbnN0YWxsIG11bHRpcGxlIEFQS3Mgd2l0aCBgaW5zdGFsbC1tdWx0aXBsZWAgb3B0aW9uLlxuICpcbiAqIEBwYXJhbSB7SW5zdGFsbE11bHRpcGxlQXBrc09wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBhbiBlcnJvciBvY2N1cmVkIHdoaWxlIGluc3RhbGxpbmcgdGhlIGdpdmVuIEFQS3MuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUluc3RhbGxNdWx0aXBsZUFwa3MgPSBhc3luYyBmdW5jdGlvbiAob3B0cyA9IHt9KSB7XG4gIGlmICghXy5pc0FycmF5KG9wdHMuYXBrcykgfHwgXy5pc0VtcHR5KG9wdHMuYXBrcykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKCdObyBhcGtzIGFyZSBnaXZlbiB0byBpbnN0YWxsJyk7XG4gIH1cbiAgY29uc3QgYXBrcyA9IGF3YWl0IEIuYWxsKG9wdHMuYXBrc1xuICAgIC5tYXAoKGFwcCkgPT4gdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcChhcHAsIFtBUEtfRVhURU5TSU9OXSkpKTtcbiAgYXdhaXQgdGhpcy5hZGIuaW5zdGFsbE11bHRpcGxlQXBrcyhhcGtzLCBvcHRzLm9wdGlvbnMpO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5cbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBSUEsVUFBVSxHQUFHLEVBQWpC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
@@ -226,4 +226,4 @@ var _default = commands;
226
226
  exports.default = _default;require('source-map-support').install();
227
227
 
228
228
 
229
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2dlc3R1cmVzLmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJ0b09yaWdpbiIsImVsZW1lbnQiLCJ1dGlsIiwid3JhcEVsZW1lbnQiLCJ1bndyYXBFbGVtZW50IiwidW5kZWZpbmVkIiwidG9Qb2ludCIsIngiLCJ5IiwiXyIsImlzRmluaXRlIiwidG9SZWN0IiwibGVmdCIsInRvcCIsIndpZHRoIiwiaGVpZ2h0Iiwic29tZSIsInYiLCJtb2JpbGVDbGlja0dlc3R1cmUiLCJvcHRzIiwiZWxlbWVudElkIiwidWlhdXRvbWF0b3IyIiwiandwcm94eSIsImNvbW1hbmQiLCJvcmlnaW4iLCJvZmZzZXQiLCJtb2JpbGVMb25nQ2xpY2tHZXN0dXJlIiwiZHVyYXRpb24iLCJtb2JpbGVEb3VibGVDbGlja0dlc3R1cmUiLCJtb2JpbGVEcmFnR2VzdHVyZSIsInN0YXJ0WCIsInN0YXJ0WSIsImVuZFgiLCJlbmRZIiwic3BlZWQiLCJzdGFydCIsImVuZCIsIm1vYmlsZUZsaW5nR2VzdHVyZSIsImRpcmVjdGlvbiIsImFyZWEiLCJtb2JpbGVQaW5jaENsb3NlR2VzdHVyZSIsInBlcmNlbnQiLCJtb2JpbGVQaW5jaE9wZW5HZXN0dXJlIiwibW9iaWxlU3dpcGVHZXN0dXJlIiwibW9iaWxlU2Nyb2xsR2VzdHVyZSIsIm1vYmlsZVNjcm9sbEJhY2tUbyIsImVsZW1lbnRUb0lkIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJtb2JpbGVTY3JvbGwiLCJzdHJhdGVneSIsInNlbGVjdG9yIiwibWF4U3dpcGVzIiwicGFyYW1zIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2dlc3R1cmVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5cbmZ1bmN0aW9uIHRvT3JpZ2luIChlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID8gdXRpbC53cmFwRWxlbWVudCh1dGlsLnVud3JhcEVsZW1lbnQoZWxlbWVudCkpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB0b1BvaW50ICh4LCB5KSB7XG4gIHJldHVybiBfLmlzRmluaXRlKHgpICYmIF8uaXNGaW5pdGUoeSkgPyB7eCwgeX0gOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHRvUmVjdCAobGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0KSB7XG4gIHJldHVybiBbbGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0XS5zb21lKCh2KSA9PiAhXy5pc0Zpbml0ZSh2KSlcbiAgICA/IHVuZGVmaW5lZFxuICAgIDoge2xlZnQsIHRvcCwgd2lkdGgsIGhlaWdodH07XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ2xpY2tPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCAtIFRoZSBpZCBvZiB0aGUgZWxlbWVudCB0byBiZSBjbGlja2VkLlxuICogSWYgdGhlIGVsZW1lbnQgaXMgbWlzc2luZyB0aGVuIGJvdGggY2xpY2sgb2Zmc2V0IGNvb3JkaW5hdGVzIG11c3QgYmUgcHJvdmlkZWQuXG4gKiBJZiBib3RoIHRoZSBlbGVtZW50IGlkIGFuZCBvZmZzZXQgYXJlIHByb3ZpZGVkIHRoZW4gdGhlIGNvb3JkaW5hdGVzXG4gKiBhcmUgcGFyc2VkIGFzIHJlbGF0aXZlIG9mZnNldHMgZnJvbSB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBlbGVtZW50LlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IC0gVGhlIHggY29vcmRpbmF0ZSB0byBjbGljayBvblxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IC0gVGhlIHkgY29vcmRpbmF0ZSB0byBjbGljayBvblxuICovXG5cbi8qKlxuICogUGVyZm9ybXMgYSBzaW1wbGUgY2xpY2svdGFwIGdlc3R1cmVcbiAqXG4gKiBAcGFyYW0gez9DbGlja09wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBwcm92aWRlZCBvcHRpb25zIGFyZSBub3QgdmFsaWRcbiAqL1xuY29tbWFuZHMubW9iaWxlQ2xpY2tHZXN0dXJlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlQ2xpY2tHZXN0dXJlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGVsZW1lbnRJZCxcbiAgICB4LCB5LFxuICB9ID0gb3B0cztcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9nZXN0dXJlcy9jbGljaycsICdQT1NUJywge1xuICAgIG9yaWdpbjogdG9PcmlnaW4oZWxlbWVudElkKSxcbiAgICBvZmZzZXQ6IHRvUG9pbnQoeCwgeSksXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBMb25nQ2xpY2tPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCAtIFRoZSBpZCBvZiB0aGUgZWxlbWVudCB0byBiZSBjbGlja2VkLlxuICogSWYgdGhlIGVsZW1lbnQgaXMgbWlzc2luZyB0aGVuIGJvdGggY2xpY2sgb2Zmc2V0IGNvb3JkaW5hdGVzIG11c3QgYmUgcHJvdmlkZWQuXG4gKiBJZiBib3RoIHRoZSBlbGVtZW50IGlkIGFuZCBvZmZzZXQgYXJlIHByb3ZpZGVkIHRoZW4gdGhlIGNvb3JkaW5hdGVzXG4gKiBhcmUgcGFyc2VkIGFzIHJlbGF0aXZlIG9mZnNldHMgZnJvbSB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBlbGVtZW50LlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IC0gVGhlIHggY29vcmRpbmF0ZSB0byBjbGljayBvblxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IC0gVGhlIHkgY29vcmRpbmF0ZSB0byBjbGljayBvblxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBkdXJhdGlvbiBbNTAwXSAtIENsaWNrIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy5cbiAqIFRoZSB2YWx1ZSBtdXN0IG5vdCBiZSBuZWdhdGl2ZVxuICovXG5cbi8qKlxuICogUGVyZm9ybXMgYSBjbGljayB0aGF0IGxhc3RzIGZvciB0aGUgZ2l2ZW4gZHVyYXRpb25cbiAqXG4gKiBAcGFyYW0gez9Mb25nQ2xpY2tPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgcHJvdmlkZWQgb3B0aW9ucyBhcmUgbm90IHZhbGlkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUxvbmdDbGlja0dlc3R1cmUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVMb25nQ2xpY2tHZXN0dXJlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGVsZW1lbnRJZCxcbiAgICB4LCB5LFxuICAgIGR1cmF0aW9uLFxuICB9ID0gb3B0cztcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9nZXN0dXJlcy9sb25nX2NsaWNrJywgJ1BPU1QnLCB7XG4gICAgb3JpZ2luOiB0b09yaWdpbihlbGVtZW50SWQpLFxuICAgIG9mZnNldDogdG9Qb2ludCh4LCB5KSxcbiAgICBkdXJhdGlvbixcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERvdWJsZUNsaWNrT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgLSBUaGUgaWQgb2YgdGhlIGVsZW1lbnQgdG8gYmUgZG91YmxlIGNsaWNrZWQuXG4gKiBJZiB0aGUgZWxlbWVudCBpcyBtaXNzaW5nIHRoZW4gYm90aCBjbGljayBvZmZzZXQgY29vcmRpbmF0ZXMgbXVzdCBiZSBwcm92aWRlZC5cbiAqIElmIGJvdGggdGhlIGVsZW1lbnQgaWQgYW5kIG9mZnNldCBhcmUgcHJvdmlkZWQgdGhlbiB0aGUgY29vcmRpbmF0ZXNcbiAqIGFyZSBwYXJzZWQgYXMgcmVsYXRpdmUgb2Zmc2V0cyBmcm9tIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGVsZW1lbnQuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHggLSBUaGUgeCBjb29yZGluYXRlIHRvIGRvdWJsZSBjbGljayBvblxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IC0gVGhlIHkgY29vcmRpbmF0ZSB0byBkb3VibGUgY2xpY2sgb25cbiAqL1xuXG4vKipcbiAqIFBlcmZvcm1zIGEgY2xpY2sgdGhhdCBsYXN0cyBmb3IgdGhlIGdpdmVuIGR1cmF0aW9uXG4gKlxuICogQHBhcmFtIHs/RG91YmxlQ2xpY2tPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgcHJvdmlkZWQgb3B0aW9ucyBhcmUgbm90IHZhbGlkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZURvdWJsZUNsaWNrR2VzdHVyZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZURvdWJsZUNsaWNrR2VzdHVyZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBlbGVtZW50SWQsXG4gICAgeCwgeSxcbiAgfSA9IG9wdHM7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vZ2VzdHVyZXMvZG91YmxlX2NsaWNrJywgJ1BPU1QnLCB7XG4gICAgb3JpZ2luOiB0b09yaWdpbihlbGVtZW50SWQpLFxuICAgIG9mZnNldDogdG9Qb2ludCh4LCB5KSxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERyYWdPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCAtIFRoZSBpZCBvZiB0aGUgZWxlbWVudCB0byBiZSBkcmFnZ2VkLlxuICogSWYgdGhlIGVsZW1lbnQgaWQgaXMgbWlzc2luZyB0aGVuIHRoZSBzdGFydCBjb29yZGluYXRlcyBtdXN0IGJlIHByb3ZpZGVkLlxuICogSWYgYm90aCB0aGUgZWxlbWVudCBpZCBhbmQgdGhlIHN0YXJ0IGNvb3JkaW5hdGVzIGFyZSBwcm92aWRlZCB0aGVuIHRoZXNlXG4gKiBjb29yZGluYXRlcyBhcmUgY29uc2lkZXJlZCBhcyBvZmZzZXRzIGZyb20gdGhlIHRvcCBsZWZ0IGVsZW1lbnQgY29ybmVyLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzdGFydFggLSBUaGUgeCBjb29yZGluYXRlIHdoZXJlIHRoZSBkcmFnZ2luZyBzdGFydHNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gc3RhcnRZIC0gVGhlIHkgY29vcmRpbmF0ZSB3aGVyZSB0aGUgZHJhZ2dpbmcgc3RhcnRzXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IGVuZFggLSBUaGUgeCBjb29yZGluYXRlIHdoZXJlIHRoZSBkcmFnZ2luZyBlbmRzXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IGVuZFkgLSBUaGUgeSBjb29yZGluYXRlIHdoZXJlIHRoZSBkcmFnZ2luZyBlbmRzXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHNwZWVkIFsyNTAwICogZGlzcGxheURlbnNpdHldIC0gVGhlIHNwZWVkIGF0IHdoaWNoIHRvIHBlcmZvcm1cbiAqIHRoaXMgZ2VzdHVyZSBpbiBwaXhlbHMgcGVyIHNlY29uZC4gVGhlIHZhbHVlIG11c3Qgbm90IGJlIG5lZ2F0aXZlXG4gKi9cblxuLyoqXG4gKiBEcmFncyB0aGlzIG9iamVjdCB0byB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSB7P0RyYWdPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgcHJvdmlkZWQgb3B0aW9ucyBhcmUgbm90IHZhbGlkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZURyYWdHZXN0dXJlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlRHJhZ0dlc3R1cmUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZWxlbWVudElkLFxuICAgIHN0YXJ0WCwgc3RhcnRZLFxuICAgIGVuZFgsIGVuZFksXG4gICAgc3BlZWQsXG4gIH0gPSBvcHRzO1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL2dlc3R1cmVzL2RyYWcnLCAnUE9TVCcsIHtcbiAgICBvcmlnaW46IHRvT3JpZ2luKGVsZW1lbnRJZCksXG4gICAgc3RhcnQ6IHRvUG9pbnQoc3RhcnRYLCBzdGFydFkpLFxuICAgIGVuZDogdG9Qb2ludChlbmRYLCBlbmRZKSxcbiAgICBzcGVlZCxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEZsaW5nT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgLSBUaGUgaWQgb2YgdGhlIGVsZW1lbnQgdG8gYmUgZmxpbmdlZC5cbiAqIElmIHRoZSBlbGVtZW50IGlkIGlzIG1pc3NpbmcgdGhlbiBmbGluZyBib3VuZGluZyBhcmVhIG11c3QgYmUgcHJvdmlkZWQuXG4gKiBJZiBib3RoIHRoZSBlbGVtZW50IGlkIGFuZCB0aGUgZmxpbmcgYm91bmRpbmcgYXJlYSBhcmUgcHJvdmlkZWQgdGhlbiB0aGlzXG4gKiBhcmVhIGlzIGVmZmVjdGl2ZWx5IGlnbm9yZWQuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGxlZnQgLSBUaGUgbGVmdCBjb29yZGluYXRlIG9mIHRoZSBmbGluZyBib3VuZGluZyBhcmVhXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHRvcCAtIFRoZSB0b3AgY29vcmRpbmF0ZSBvZiB0aGUgZmxpbmcgYm91bmRpbmcgYXJlYVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB3aWR0aCAtIFRoZSB3aWR0aCBvZiB0aGUgZmxpbmcgYm91bmRpbmcgYXJlYVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBoZWlnaHQgLSBUaGUgaGVpZ2h0IG9mIHRoZSBmbGluZyBib3VuZGluZyBhcmVhXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IGRpcmVjdGlvbiAtIERpcmVjdGlvbiBvZiB0aGUgZmxpbmcuXG4gKiBBY2NlcHRhYmxlIHZhbHVlcyBhcmU6IGB1cGAsIGBkb3duYCwgYGxlZnRgIGFuZCBgcmlnaHRgIChjYXNlIGluc2Vuc2l0aXZlKVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzcGVlZCBbNzUwMCAqIGRpc3BsYXlEZW5zaXR5XSAtIFRoZSBzcGVlZCBhdCB3aGljaCB0byBwZXJmb3JtIHRoaXNcbiAqIGdlc3R1cmUgaW4gcGl4ZWxzIHBlciBzZWNvbmQuIFRoZSB2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbWluaW11bSBmbGluZ1xuICogdmVsb2NpdHkgZm9yIHRoZSBnaXZlbiB2aWV3ICg1MCBieSBkZWZhdWx0KVxuICovXG5cbi8qKlxuICogRHJhZ3MgdG8gdGhlIHNwZWNpZmllZCBsb2NhdGlvbi5cbiAqXG4gKiBAcGFyYW0gez9GbGluZ09wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBwcm92aWRlZCBvcHRpb25zIGFyZSBub3QgdmFsaWRcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBvYmplY3QgY2FuIHN0aWxsIHNjcm9sbCBpbiB0aGUgZ2l2ZW4gZGlyZWN0aW9uLlxuICovXG5jb21tYW5kcy5tb2JpbGVGbGluZ0dlc3R1cmUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVGbGluZ0dlc3R1cmUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZWxlbWVudElkLFxuICAgIGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCxcbiAgICBkaXJlY3Rpb24sXG4gICAgc3BlZWQsXG4gIH0gPSBvcHRzO1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL2dlc3R1cmVzL2ZsaW5nJywgJ1BPU1QnLCB7XG4gICAgb3JpZ2luOiB0b09yaWdpbihlbGVtZW50SWQpLFxuICAgIGFyZWE6IHRvUmVjdChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQpLFxuICAgIGRpcmVjdGlvbixcbiAgICBzcGVlZCxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFBpbmNoT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgLSBUaGUgaWQgb2YgdGhlIGVsZW1lbnQgdG8gYmUgcGluY2hlZC5cbiAqIElmIHRoZSBlbGVtZW50IGlkIGlzIG1pc3NpbmcgdGhlbiBwaW5jaCBib3VuZGluZyBhcmVhIG11c3QgYmUgcHJvdmlkZWQuXG4gKiBJZiBib3RoIHRoZSBlbGVtZW50IGlkIGFuZCB0aGUgcGluY2ggYm91bmRpbmcgYXJlYSBhcmUgcHJvdmlkZWQgdGhlbiB0aGVcbiAqIGFyZWEgaXMgZWZmZWN0aXZlbHkgaWdub3JlZC5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gbGVmdCAtIFRoZSBsZWZ0IGNvb3JkaW5hdGUgb2YgdGhlIHBpbmNoIGJvdW5kaW5nIGFyZWFcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdG9wIC0gVGhlIHRvcCBjb29yZGluYXRlIG9mIHRoZSBwaW5jaCBib3VuZGluZyBhcmVhXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHdpZHRoIC0gVGhlIHdpZHRoIG9mIHRoZSBwaW5jaCBib3VuZGluZyBhcmVhXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGhlaWdodCAtIFRoZSBoZWlnaHQgb2YgdGhlIHBpbmNoIGJvdW5kaW5nIGFyZWFcbiAqIEBwcm9wZXJ0eSB7IW51bWJlcn0gcGVyY2VudCAtIFRoZSBzaXplIG9mIHRoZSBwaW5jaCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHBpbmNoIGFyZWEgc2l6ZS5cbiAqIFZhbGlkIHZhbHVlcyBtdXN0IGJlIGZsb2F0IG51bWJlcnMgaW4gcmFuZ2UgMC4uMSwgd2hlcmUgMS4wIGlzIDEwMCVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gc3BlZWQgWzI1MDAgKiBkaXNwbGF5RGVuc2l0eV0gLSBUaGUgc3BlZWQgYXQgd2hpY2ggdG8gcGVyZm9ybVxuICogdGhpcyBnZXN0dXJlIGluIHBpeGVscyBwZXIgc2Vjb25kLiBUaGUgdmFsdWUgbXVzdCBub3QgYmUgbmVnYXRpdmVcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm1zIGEgcGluY2ggY2xvc2UgZ2VzdHVyZS5cbiAqXG4gKiBAcGFyYW0gez9QaW5jaE9wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBwcm92aWRlZCBvcHRpb25zIGFyZSBub3QgdmFsaWRcbiAqL1xuY29tbWFuZHMubW9iaWxlUGluY2hDbG9zZUdlc3R1cmUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVQaW5jaENsb3NlR2VzdHVyZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBlbGVtZW50SWQsXG4gICAgbGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0LFxuICAgIHBlcmNlbnQsXG4gICAgc3BlZWQsXG4gIH0gPSBvcHRzO1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL2dlc3R1cmVzL3BpbmNoX2Nsb3NlJywgJ1BPU1QnLCB7XG4gICAgb3JpZ2luOiB0b09yaWdpbihlbGVtZW50SWQpLFxuICAgIGFyZWE6IHRvUmVjdChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQpLFxuICAgIHBlcmNlbnQsXG4gICAgc3BlZWQsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBQZXJmb3JtcyBhIHBpbmNoIG9wZW4gZ2VzdHVyZS5cbiAqXG4gKiBAcGFyYW0gez9QaW5jaE9wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBwcm92aWRlZCBvcHRpb25zIGFyZSBub3QgdmFsaWRcbiAqL1xuY29tbWFuZHMubW9iaWxlUGluY2hPcGVuR2VzdHVyZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVBpbmNoT3Blbkdlc3R1cmUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZWxlbWVudElkLFxuICAgIGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCxcbiAgICBwZXJjZW50LFxuICAgIHNwZWVkLFxuICB9ID0gb3B0cztcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9nZXN0dXJlcy9waW5jaF9vcGVuJywgJ1BPU1QnLCB7XG4gICAgb3JpZ2luOiB0b09yaWdpbihlbGVtZW50SWQpLFxuICAgIGFyZWE6IHRvUmVjdChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQpLFxuICAgIHBlcmNlbnQsXG4gICAgc3BlZWQsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTd2lwZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIC0gVGhlIGlkIG9mIHRoZSBlbGVtZW50IHRvIGJlIHN3aXBlZC5cbiAqIElmIHRoZSBlbGVtZW50IGlkIGlzIG1pc3NpbmcgdGhlbiBzd2lwZSBib3VuZGluZyBhcmVhIG11c3QgYmUgcHJvdmlkZWQuXG4gKiBJZiBib3RoIHRoZSBlbGVtZW50IGlkIGFuZCB0aGUgc3dpcGUgYm91bmRpbmcgYXJlYSBhcmUgcHJvdmlkZWQgdGhlbiB0aGVcbiAqIGFyZWEgaXMgZWZmZWN0aXZlbHkgaWdub3JlZC5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gbGVmdCAtIFRoZSBsZWZ0IGNvb3JkaW5hdGUgb2YgdGhlIHN3aXBlIGJvdW5kaW5nIGFyZWFcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdG9wIC0gVGhlIHRvcCBjb29yZGluYXRlIG9mIHRoZSBzd2lwZSBib3VuZGluZyBhcmVhXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHdpZHRoIC0gVGhlIHdpZHRoIG9mIHRoZSBzd2lwZSBib3VuZGluZyBhcmVhXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGhlaWdodCAtIFRoZSBoZWlnaHQgb2YgdGhlIHN3aXBlIGJvdW5kaW5nIGFyZWFcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gZGlyZWN0aW9uIC0gRGlyZWN0aW9uIG9mIHRoZSBzd2lwZS5cbiAqIEFjY2VwdGFibGUgdmFsdWVzIGFyZTogYHVwYCwgYGRvd25gLCBgbGVmdGAgYW5kIGByaWdodGAgKGNhc2UgaW5zZW5zaXRpdmUpXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IHBlcmNlbnQgLSBUaGUgc2l6ZSBvZiB0aGUgc3dpcGUgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBzd2lwZSBhcmVhIHNpemUuXG4gKiBWYWxpZCB2YWx1ZXMgbXVzdCBiZSBmbG9hdCBudW1iZXJzIGluIHJhbmdlIDAuLjEsIHdoZXJlIDEuMCBpcyAxMDAlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHNwZWVkIFs1MDAwICogZGlzcGxheURlbnNpdHldIC0gVGhlIHNwZWVkIGF0IHdoaWNoIHRvIHBlcmZvcm0gdGhpc1xuICogZ2VzdHVyZSBpbiBwaXhlbHMgcGVyIHNlY29uZC4gVGhlIHZhbHVlIG11c3Qgbm90IGJlIG5lZ2F0aXZlXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtcyBhIHN3aXBlIGdlc3R1cmUuXG4gKlxuICogQHBhcmFtIHs/U3dpcGVPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgcHJvdmlkZWQgb3B0aW9ucyBhcmUgbm90IHZhbGlkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVN3aXBlR2VzdHVyZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN3aXBlR2VzdHVyZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBlbGVtZW50SWQsXG4gICAgbGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0LFxuICAgIGRpcmVjdGlvbixcbiAgICBwZXJjZW50LFxuICAgIHNwZWVkLFxuICB9ID0gb3B0cztcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9nZXN0dXJlcy9zd2lwZScsICdQT1NUJywge1xuICAgIG9yaWdpbjogdG9PcmlnaW4oZWxlbWVudElkKSxcbiAgICBhcmVhOiB0b1JlY3QobGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0KSxcbiAgICBkaXJlY3Rpb24sXG4gICAgcGVyY2VudCxcbiAgICBzcGVlZCxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNjcm9sbE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIC0gVGhlIGlkIG9mIHRoZSBlbGVtZW50IHRvIGJlIHNjcm9sbGVkLlxuICogSWYgdGhlIGVsZW1lbnQgaWQgaXMgbWlzc2luZyB0aGVuIHNjcm9sbCBib3VuZGluZyBhcmVhIG11c3QgYmUgcHJvdmlkZWQuXG4gKiBJZiBib3RoIHRoZSBlbGVtZW50IGlkIGFuZCB0aGUgc2Nyb2xsIGJvdW5kaW5nIGFyZWEgYXJlIHByb3ZpZGVkIHRoZW4gdGhpc1xuICogYXJlYSBpcyBlZmZlY3RpdmVseSBpZ25vcmVkLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBsZWZ0IC0gVGhlIGxlZnQgY29vcmRpbmF0ZSBvZiB0aGUgc2Nyb2xsIGJvdW5kaW5nIGFyZWFcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdG9wIC0gVGhlIHRvcCBjb29yZGluYXRlIG9mIHRoZSBzY3JvbGwgYm91bmRpbmcgYXJlYVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB3aWR0aCAtIFRoZSB3aWR0aCBvZiB0aGUgc2Nyb2xsIGJvdW5kaW5nIGFyZWFcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gaGVpZ2h0IC0gVGhlIGhlaWdodCBvZiB0aGUgc2Nyb2xsIGJvdW5kaW5nIGFyZWFcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gZGlyZWN0aW9uIC0gRGlyZWN0aW9uIG9mIHRoZSBzY3JvbGwuXG4gKiBBY2NlcHRhYmxlIHZhbHVlcyBhcmU6IGB1cGAsIGBkb3duYCwgYGxlZnRgIGFuZCBgcmlnaHRgIChjYXNlIGluc2Vuc2l0aXZlKVxuICogQHByb3BlcnR5IHshbnVtYmVyfSBwZXJjZW50IC0gVGhlIHNpemUgb2YgdGhlIHNjcm9sbCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHNjcm9sbGluZyBhcmVhIHNpemUuXG4gKiBWYWxpZCB2YWx1ZXMgbXVzdCBiZSBmbG9hdCBudW1iZXJzIGdyZWF0ZXIgdGhhbiB6ZXJvLCB3aGVyZSAxLjAgaXMgMTAwJVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzcGVlZCBbNTAwMCAqIGRpc3BsYXlEZW5zaXR5XSAtIFRoZSBzcGVlZCBhdCB3aGljaCB0byBwZXJmb3JtIHRoaXMgZ2VzdHVyZVxuICogaW4gcGl4ZWxzIHBlciBzZWNvbmQuIFRoZSB2YWx1ZSBtdXN0IG5vdCBiZSBuZWdhdGl2ZVxuICovXG5cbi8qKlxuICogUGVyZm9ybXMgYSBzY3JvbGwgZ2VzdHVyZS5cbiAqXG4gKiBAcGFyYW0gez9TY3JvbGxPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgcHJvdmlkZWQgb3B0aW9ucyBhcmUgbm90IHZhbGlkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgb2JqZWN0IGNhbiBzdGlsbCBzY3JvbGwgaW4gdGhlIGdpdmVuIGRpcmVjdGlvbi5cbiAqL1xuY29tbWFuZHMubW9iaWxlU2Nyb2xsR2VzdHVyZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVNjcm9sbEdlc3R1cmUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZWxlbWVudElkLFxuICAgIGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCxcbiAgICBkaXJlY3Rpb24sXG4gICAgcGVyY2VudCxcbiAgICBzcGVlZCxcbiAgfSA9IG9wdHM7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vZ2VzdHVyZXMvc2Nyb2xsJywgJ1BPU1QnLCB7XG4gICAgb3JpZ2luOiB0b09yaWdpbihlbGVtZW50SWQpLFxuICAgIGFyZWE6IHRvUmVjdChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQpLFxuICAgIGRpcmVjdGlvbixcbiAgICBwZXJjZW50LFxuICAgIHNwZWVkLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU2Nyb2xsRWxlbWVudFRvRWxlbWVudE9wdHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBlbGVtZW50SWQgVGhlIGlkZW50aWZpZXIgb2YgdGhlIHNjcm9sbGFibGUgZWxlbWVudCxcbiAqIHdoaWNoIGlzIGdvaW5nIHRvIGJlIHNjcm9sbGVkLiBJdCBpcyByZXF1aXJlZCB0aGlzIGVsZW1lbnRcbiAqIGlzIGEgdmFsaWQgc2Nyb2xsYWJsZSBjb250YWluZXIgYW5kIGl0IHdhcyBsb2NhdGVkIGJ5IGAtYW5kcm9pZCB1aWF1dG9tYXRvcmBcbiAqIHN0cmF0ZWd5LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGVsZW1lbnRUb0lkIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtLCB3aGljaCBiZWxvbmdzXG4gKiB0byB0aGUgc2Nyb2xsYWJsZSBlbGVtZW50IGFib3ZlLCBhbmQgd2hpY2ggc2hvdWxkIGJlY29tZSB2aXNpYmxlIGFmdGVyXG4gKiB0aGUgc2Nyb2xsaW5nIG9wZXJhdGlvbiBpcyBmaW5pc2hlZC4gSXQgaXMgcmVxdWlyZWQgdGhpcyBlbGVtZW50XG4gKiB3YXMgbG9jYXRlZCBieSBgLWFuZHJvaWQgdWlhdXRvbWF0b3JgIHN0cmF0ZWd5LlxuICovXG5cbi8qKlxuICogU2Nyb2xscyB0aGUgZ2l2ZW4gc2Nyb2xsYWJsZSBlbGVtZW50IGBlbGVtZW50SWRgIHVudGlsIGBlbGVtZW50VG9JZGBcbiAqIGJlY29tZXMgdmlzaWJsZS4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIGltbWVkaWF0ZWx5IGlmIHRoZSBgZWxlbWVudFRvSWRgXG4gKiBpcyBhbHJlYWR5IHZpc2libGUgaW4gdGhlIHZpZXcgcG9ydC4gT3RoZXJ3aXNlIGl0IHdvdWxkIHNjcm9sbFxuICogdG8gdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBzY3JvbGxhYmxlIGNvbnRyb2wgYW5kIHRyaWVzIHRvIHJlYWNoIHRoZSBkZXN0aW5hdGlvbiBlbGVtZW50XG4gKiBieSBzY3JvbGxpbmcgaXRzIHBhcmVudCB0byB0aGUgZW5kIHN0ZXAgYnkgc3RlcC4gVGhlIHNjcm9sbCBkaXJlY3Rpb24gKHZlcnRpY2FsIG9yIGhvcml6b250YWwpXG4gKiBpcyBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5LlxuICpcbiAqIEBwYXJhbSB7U2Nyb2xsRWxlbWVudFRvRWxlbWVudE9wdHN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGUgc2Nyb2xsaW5nIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVNjcm9sbEJhY2tUbyA9IGFzeW5jIGZ1bmN0aW9uIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2VsZW1lbnRJZCwgZWxlbWVudFRvSWR9ID0gb3B0cztcbiAgaWYgKCFlbGVtZW50SWQgfHwgIWVsZW1lbnRUb0lkKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgQm90aCBlbGVtZW50SWQgYW5kIGVsZW1lbnRUb0lkIGFyZ3VtZW50cyBtdXN0IGJlIHByb3ZpZGVkYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChcbiAgICBgL2FwcGl1bS9lbGVtZW50LyR7dXRpbC51bndyYXBFbGVtZW50KGVsZW1lbnRJZCl9L3Njcm9sbF90by8ke3V0aWwudW53cmFwRWxlbWVudChlbGVtZW50VG9JZCl9YCwgJ1BPU1QnLCB7fSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNjcm9sbE9wdHNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIFRoZSBpZGVudGlmaWVyIG9mIGFuIGVsZW1lbnQuIEl0IGlzIHJlcXVpcmVkIHRoaXMgZWxlbWVudFxuICogaXMgYSB2YWxpZCBzY3JvbGxhYmxlIGNvbnRhaW5lciBhbmQgaXQgd2FzIGxvY2F0ZWQgYnkgYC1hbmRyb2lkIHVpYXV0b21hdG9yYFxuICogc3RyYXRlZ3kuIElmIHRoaXMgcHJvcGVydHkgaXMgbm90IHByb3ZpZGVkIHRoZW4gdGhlIGZpcnN0IGN1cnJlbnRseSBhdmFpbGFibGUgc2Nyb2xsYWJsZSB2aWV3XG4gKiBpcyBzZWxlY3RlZCBmb3IgdGhlIGludGVyYWN0aW9uLlxuICogQHByb3BlcnR5IHshc3RyaW5nfSBzdHJhdGVneSBUaGUgZm9sbG93aW5nIHN0cmF0ZWdpZXMgYXJlIHN1cHBvcnRlZDpcbiAqIC0gYGFjY2Vzc2liaWxpdHkgaWRgIChVaVNlbGVjdG9yKCkuZGVzY3JpcHRpb24pXG4gKiAtIGBjbGFzcyBuYW1lYCAoVWlTZWxlY3RvcigpLmNsYXNzTmFtZSlcbiAqIC0gYC1hbmRyb2lkIHVpYXV0b21hdG9yYCAoVWlTZWxlY3RvcilcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gc2VsZWN0b3IgVGhlIGNvcnJlc3BvbmRpbmcgbG9va3VwIHZhbHVlIGZvciB0aGUgZ2l2ZW5cbiAqIHN0cmF0ZWd5LlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBtYXhTd2lwZXMgVGhlIG1heGltdW0gbnVtYmVyIG9mIHN3aXBlcyB0byBwZXJmb3JtXG4gKiBvbiB0aGUgdGFyZ2V0IHNjcm9sbGFibGUgdmlldyBpbiBvcmRlciB0byByZWFjaCB0aGUgZGVzdGluYXRpb24gZWxlbWVudC5cbiAqIEluIGNhc2UgdGhpcyB2YWx1ZSBpcyB1bnNldCB0aGVuIGl0IHdvdWxkIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBzY3JvbGxhYmxlXG4gKiBlbGVtZW50IGl0c2VsZiAodnVhIGBnZXRNYXhTZWFyY2hTd2lwZXMoKWAgcHJvcGVydHkpLlxuICovXG5cbi8qKlxuICogU2Nyb2xscyB0aGUgZ2l2ZW4gc2Nyb2xsYWJsZSBlbGVtZW50IHVudGlsIHRoZSBlbGVtZW50IGlkZW50aWZpZWRcbiAqIGJ5IGBzdHJhdGVneWAgYW5kIGBzZWxlY3RvcmAgYmVjb21lcyB2aXNpYmxlLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgaW1tZWRpYXRlbHkgaWYgdGhlXG4gKiBkZXN0aW5hdGlvbiBlbGVtZW50IGlzIGFscmVhZHkgdmlzaWJsZSBpbiB0aGUgdmlldyBwb3J0LiBPdGhlcndpc2UgaXQgd291bGQgc2Nyb2xsXG4gKiB0byB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgdGhlIHNjcm9sbGFibGUgY29udHJvbCBhbmQgdHJpZXMgdG8gcmVhY2ggdGhlIGRlc3RpbmF0aW9uIGVsZW1lbnRcbiAqIGJ5IHNjcm9sbGluZyBpdHMgcGFyZW50IHRvIHRoZSBlbmQgc3RlcCBieSBzdGVwLiBUaGUgc2Nyb2xsIGRpcmVjdGlvbiAodmVydGljYWwgb3IgaG9yaXpvbnRhbClcbiAqIGlzIGRldGVjdGVkIGF1dG9tYXRpY2FsbHkuXG4gKlxuICogQHBhcmFtIHtTY3JvbGxPcHRzfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlIHNjcm9sbGluZyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZFxuICovXG5jb21tYW5kcy5tb2JpbGVTY3JvbGwgPSBhc3luYyBmdW5jdGlvbiAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBlbGVtZW50LCBlbGVtZW50SWQsIC8vIGBlbGVtZW50YCBpcyBkZXByZWNhdGVkLCB1c2UgYGVsZW1lbnRJZGAgaW5zdGVhZFxuICAgIHN0cmF0ZWd5LCBzZWxlY3RvciwgbWF4U3dpcGVzXG4gIH0gPSBvcHRzO1xuICBpZiAoIXN0cmF0ZWd5IHx8ICFzZWxlY3Rvcikge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYEJvdGggc3RyYXRlZ3kgYW5kIHNlbGVjdG9yIGFyZ3VtZW50cyBtdXN0IGJlIHByb3ZpZGVkYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL3RvdWNoL3Njcm9sbCcsICdQT1NUJywge1xuICAgIG9yaWdpbjogdG9PcmlnaW4oZWxlbWVudElkIHx8IGVsZW1lbnQpLFxuICAgIHBhcmFtczoge3N0cmF0ZWd5LCBzZWxlY3RvciwgbWF4U3dpcGVzfSxcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7O0FBR0EsU0FBU0MsUUFBVCxDQUFtQkMsT0FBbkIsRUFBNEI7RUFDMUIsT0FBT0EsT0FBTyxHQUFHQyxjQUFLQyxX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
229
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2dlc3R1cmVzLmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJ0b09yaWdpbiIsImVsZW1lbnQiLCJ1dGlsIiwid3JhcEVsZW1lbnQiLCJ1bndyYXBFbGVtZW50IiwidW5kZWZpbmVkIiwidG9Qb2ludCIsIngiLCJ5IiwiXyIsImlzRmluaXRlIiwidG9SZWN0IiwibGVmdCIsInRvcCIsIndpZHRoIiwiaGVpZ2h0Iiwic29tZSIsInYiLCJtb2JpbGVDbGlja0dlc3R1cmUiLCJvcHRzIiwiZWxlbWVudElkIiwidWlhdXRvbWF0b3IyIiwiandwcm94eSIsImNvbW1hbmQiLCJvcmlnaW4iLCJvZmZzZXQiLCJtb2JpbGVMb25nQ2xpY2tHZXN0dXJlIiwiZHVyYXRpb24iLCJtb2JpbGVEb3VibGVDbGlja0dlc3R1cmUiLCJtb2JpbGVEcmFnR2VzdHVyZSIsInN0YXJ0WCIsInN0YXJ0WSIsImVuZFgiLCJlbmRZIiwic3BlZWQiLCJzdGFydCIsImVuZCIsIm1vYmlsZUZsaW5nR2VzdHVyZSIsImRpcmVjdGlvbiIsImFyZWEiLCJtb2JpbGVQaW5jaENsb3NlR2VzdHVyZSIsInBlcmNlbnQiLCJtb2JpbGVQaW5jaE9wZW5HZXN0dXJlIiwibW9iaWxlU3dpcGVHZXN0dXJlIiwibW9iaWxlU2Nyb2xsR2VzdHVyZSIsIm1vYmlsZVNjcm9sbEJhY2tUbyIsImVsZW1lbnRUb0lkIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJtb2JpbGVTY3JvbGwiLCJzdHJhdGVneSIsInNlbGVjdG9yIiwibWF4U3dpcGVzIiwicGFyYW1zIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2dlc3R1cmVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5cbmZ1bmN0aW9uIHRvT3JpZ2luIChlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID8gdXRpbC53cmFwRWxlbWVudCh1dGlsLnVud3JhcEVsZW1lbnQoZWxlbWVudCkpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB0b1BvaW50ICh4LCB5KSB7XG4gIHJldHVybiBfLmlzRmluaXRlKHgpICYmIF8uaXNGaW5pdGUoeSkgPyB7eCwgeX0gOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHRvUmVjdCAobGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0KSB7XG4gIHJldHVybiBbbGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0XS5zb21lKCh2KSA9PiAhXy5pc0Zpbml0ZSh2KSlcbiAgICA/IHVuZGVmaW5lZFxuICAgIDoge2xlZnQsIHRvcCwgd2lkdGgsIGhlaWdodH07XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ2xpY2tPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCAtIFRoZSBpZCBvZiB0aGUgZWxlbWVudCB0byBiZSBjbGlja2VkLlxuICogSWYgdGhlIGVsZW1lbnQgaXMgbWlzc2luZyB0aGVuIGJvdGggY2xpY2sgb2Zmc2V0IGNvb3JkaW5hdGVzIG11c3QgYmUgcHJvdmlkZWQuXG4gKiBJZiBib3RoIHRoZSBlbGVtZW50IGlkIGFuZCBvZmZzZXQgYXJlIHByb3ZpZGVkIHRoZW4gdGhlIGNvb3JkaW5hdGVzXG4gKiBhcmUgcGFyc2VkIGFzIHJlbGF0aXZlIG9mZnNldHMgZnJvbSB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBlbGVtZW50LlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IC0gVGhlIHggY29vcmRpbmF0ZSB0byBjbGljayBvblxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IC0gVGhlIHkgY29vcmRpbmF0ZSB0byBjbGljayBvblxuICovXG5cbi8qKlxuICogUGVyZm9ybXMgYSBzaW1wbGUgY2xpY2svdGFwIGdlc3R1cmVcbiAqXG4gKiBAcGFyYW0gez9DbGlja09wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBwcm92aWRlZCBvcHRpb25zIGFyZSBub3QgdmFsaWRcbiAqL1xuY29tbWFuZHMubW9iaWxlQ2xpY2tHZXN0dXJlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlQ2xpY2tHZXN0dXJlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGVsZW1lbnRJZCxcbiAgICB4LCB5LFxuICB9ID0gb3B0cztcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9nZXN0dXJlcy9jbGljaycsICdQT1NUJywge1xuICAgIG9yaWdpbjogdG9PcmlnaW4oZWxlbWVudElkKSxcbiAgICBvZmZzZXQ6IHRvUG9pbnQoeCwgeSksXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBMb25nQ2xpY2tPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCAtIFRoZSBpZCBvZiB0aGUgZWxlbWVudCB0byBiZSBjbGlja2VkLlxuICogSWYgdGhlIGVsZW1lbnQgaXMgbWlzc2luZyB0aGVuIGJvdGggY2xpY2sgb2Zmc2V0IGNvb3JkaW5hdGVzIG11c3QgYmUgcHJvdmlkZWQuXG4gKiBJZiBib3RoIHRoZSBlbGVtZW50IGlkIGFuZCBvZmZzZXQgYXJlIHByb3ZpZGVkIHRoZW4gdGhlIGNvb3JkaW5hdGVzXG4gKiBhcmUgcGFyc2VkIGFzIHJlbGF0aXZlIG9mZnNldHMgZnJvbSB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBlbGVtZW50LlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IC0gVGhlIHggY29vcmRpbmF0ZSB0byBjbGljayBvblxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IC0gVGhlIHkgY29vcmRpbmF0ZSB0byBjbGljayBvblxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBkdXJhdGlvbiBbNTAwXSAtIENsaWNrIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy5cbiAqIFRoZSB2YWx1ZSBtdXN0IG5vdCBiZSBuZWdhdGl2ZVxuICovXG5cbi8qKlxuICogUGVyZm9ybXMgYSBjbGljayB0aGF0IGxhc3RzIGZvciB0aGUgZ2l2ZW4gZHVyYXRpb25cbiAqXG4gKiBAcGFyYW0gez9Mb25nQ2xpY2tPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgcHJvdmlkZWQgb3B0aW9ucyBhcmUgbm90IHZhbGlkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUxvbmdDbGlja0dlc3R1cmUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVMb25nQ2xpY2tHZXN0dXJlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGVsZW1lbnRJZCxcbiAgICB4LCB5LFxuICAgIGR1cmF0aW9uLFxuICB9ID0gb3B0cztcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9nZXN0dXJlcy9sb25nX2NsaWNrJywgJ1BPU1QnLCB7XG4gICAgb3JpZ2luOiB0b09yaWdpbihlbGVtZW50SWQpLFxuICAgIG9mZnNldDogdG9Qb2ludCh4LCB5KSxcbiAgICBkdXJhdGlvbixcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERvdWJsZUNsaWNrT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgLSBUaGUgaWQgb2YgdGhlIGVsZW1lbnQgdG8gYmUgZG91YmxlIGNsaWNrZWQuXG4gKiBJZiB0aGUgZWxlbWVudCBpcyBtaXNzaW5nIHRoZW4gYm90aCBjbGljayBvZmZzZXQgY29vcmRpbmF0ZXMgbXVzdCBiZSBwcm92aWRlZC5cbiAqIElmIGJvdGggdGhlIGVsZW1lbnQgaWQgYW5kIG9mZnNldCBhcmUgcHJvdmlkZWQgdGhlbiB0aGUgY29vcmRpbmF0ZXNcbiAqIGFyZSBwYXJzZWQgYXMgcmVsYXRpdmUgb2Zmc2V0cyBmcm9tIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGVsZW1lbnQuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHggLSBUaGUgeCBjb29yZGluYXRlIHRvIGRvdWJsZSBjbGljayBvblxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IC0gVGhlIHkgY29vcmRpbmF0ZSB0byBkb3VibGUgY2xpY2sgb25cbiAqL1xuXG4vKipcbiAqIFBlcmZvcm1zIGEgY2xpY2sgdGhhdCBsYXN0cyBmb3IgdGhlIGdpdmVuIGR1cmF0aW9uXG4gKlxuICogQHBhcmFtIHs/RG91YmxlQ2xpY2tPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgcHJvdmlkZWQgb3B0aW9ucyBhcmUgbm90IHZhbGlkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZURvdWJsZUNsaWNrR2VzdHVyZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZURvdWJsZUNsaWNrR2VzdHVyZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBlbGVtZW50SWQsXG4gICAgeCwgeSxcbiAgfSA9IG9wdHM7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vZ2VzdHVyZXMvZG91YmxlX2NsaWNrJywgJ1BPU1QnLCB7XG4gICAgb3JpZ2luOiB0b09yaWdpbihlbGVtZW50SWQpLFxuICAgIG9mZnNldDogdG9Qb2ludCh4LCB5KSxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERyYWdPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCAtIFRoZSBpZCBvZiB0aGUgZWxlbWVudCB0byBiZSBkcmFnZ2VkLlxuICogSWYgdGhlIGVsZW1lbnQgaWQgaXMgbWlzc2luZyB0aGVuIHRoZSBzdGFydCBjb29yZGluYXRlcyBtdXN0IGJlIHByb3ZpZGVkLlxuICogSWYgYm90aCB0aGUgZWxlbWVudCBpZCBhbmQgdGhlIHN0YXJ0IGNvb3JkaW5hdGVzIGFyZSBwcm92aWRlZCB0aGVuIHRoZXNlXG4gKiBjb29yZGluYXRlcyBhcmUgY29uc2lkZXJlZCBhcyBvZmZzZXRzIGZyb20gdGhlIHRvcCBsZWZ0IGVsZW1lbnQgY29ybmVyLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzdGFydFggLSBUaGUgeCBjb29yZGluYXRlIHdoZXJlIHRoZSBkcmFnZ2luZyBzdGFydHNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gc3RhcnRZIC0gVGhlIHkgY29vcmRpbmF0ZSB3aGVyZSB0aGUgZHJhZ2dpbmcgc3RhcnRzXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IGVuZFggLSBUaGUgeCBjb29yZGluYXRlIHdoZXJlIHRoZSBkcmFnZ2luZyBlbmRzXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IGVuZFkgLSBUaGUgeSBjb29yZGluYXRlIHdoZXJlIHRoZSBkcmFnZ2luZyBlbmRzXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHNwZWVkIFsyNTAwICogZGlzcGxheURlbnNpdHldIC0gVGhlIHNwZWVkIGF0IHdoaWNoIHRvIHBlcmZvcm1cbiAqIHRoaXMgZ2VzdHVyZSBpbiBwaXhlbHMgcGVyIHNlY29uZC4gVGhlIHZhbHVlIG11c3Qgbm90IGJlIG5lZ2F0aXZlXG4gKi9cblxuLyoqXG4gKiBEcmFncyB0aGlzIG9iamVjdCB0byB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSB7P0RyYWdPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgcHJvdmlkZWQgb3B0aW9ucyBhcmUgbm90IHZhbGlkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZURyYWdHZXN0dXJlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlRHJhZ0dlc3R1cmUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZWxlbWVudElkLFxuICAgIHN0YXJ0WCwgc3RhcnRZLFxuICAgIGVuZFgsIGVuZFksXG4gICAgc3BlZWQsXG4gIH0gPSBvcHRzO1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL2dlc3R1cmVzL2RyYWcnLCAnUE9TVCcsIHtcbiAgICBvcmlnaW46IHRvT3JpZ2luKGVsZW1lbnRJZCksXG4gICAgc3RhcnQ6IHRvUG9pbnQoc3RhcnRYLCBzdGFydFkpLFxuICAgIGVuZDogdG9Qb2ludChlbmRYLCBlbmRZKSxcbiAgICBzcGVlZCxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEZsaW5nT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgLSBUaGUgaWQgb2YgdGhlIGVsZW1lbnQgdG8gYmUgZmxpbmdlZC5cbiAqIElmIHRoZSBlbGVtZW50IGlkIGlzIG1pc3NpbmcgdGhlbiBmbGluZyBib3VuZGluZyBhcmVhIG11c3QgYmUgcHJvdmlkZWQuXG4gKiBJZiBib3RoIHRoZSBlbGVtZW50IGlkIGFuZCB0aGUgZmxpbmcgYm91bmRpbmcgYXJlYSBhcmUgcHJvdmlkZWQgdGhlbiB0aGlzXG4gKiBhcmVhIGlzIGVmZmVjdGl2ZWx5IGlnbm9yZWQuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGxlZnQgLSBUaGUgbGVmdCBjb29yZGluYXRlIG9mIHRoZSBmbGluZyBib3VuZGluZyBhcmVhXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHRvcCAtIFRoZSB0b3AgY29vcmRpbmF0ZSBvZiB0aGUgZmxpbmcgYm91bmRpbmcgYXJlYVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB3aWR0aCAtIFRoZSB3aWR0aCBvZiB0aGUgZmxpbmcgYm91bmRpbmcgYXJlYVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBoZWlnaHQgLSBUaGUgaGVpZ2h0IG9mIHRoZSBmbGluZyBib3VuZGluZyBhcmVhXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IGRpcmVjdGlvbiAtIERpcmVjdGlvbiBvZiB0aGUgZmxpbmcuXG4gKiBBY2NlcHRhYmxlIHZhbHVlcyBhcmU6IGB1cGAsIGBkb3duYCwgYGxlZnRgIGFuZCBgcmlnaHRgIChjYXNlIGluc2Vuc2l0aXZlKVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzcGVlZCBbNzUwMCAqIGRpc3BsYXlEZW5zaXR5XSAtIFRoZSBzcGVlZCBhdCB3aGljaCB0byBwZXJmb3JtIHRoaXNcbiAqIGdlc3R1cmUgaW4gcGl4ZWxzIHBlciBzZWNvbmQuIFRoZSB2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbWluaW11bSBmbGluZ1xuICogdmVsb2NpdHkgZm9yIHRoZSBnaXZlbiB2aWV3ICg1MCBieSBkZWZhdWx0KVxuICovXG5cbi8qKlxuICogRHJhZ3MgdG8gdGhlIHNwZWNpZmllZCBsb2NhdGlvbi5cbiAqXG4gKiBAcGFyYW0gez9GbGluZ09wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBwcm92aWRlZCBvcHRpb25zIGFyZSBub3QgdmFsaWRcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBvYmplY3QgY2FuIHN0aWxsIHNjcm9sbCBpbiB0aGUgZ2l2ZW4gZGlyZWN0aW9uLlxuICovXG5jb21tYW5kcy5tb2JpbGVGbGluZ0dlc3R1cmUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVGbGluZ0dlc3R1cmUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZWxlbWVudElkLFxuICAgIGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCxcbiAgICBkaXJlY3Rpb24sXG4gICAgc3BlZWQsXG4gIH0gPSBvcHRzO1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL2dlc3R1cmVzL2ZsaW5nJywgJ1BPU1QnLCB7XG4gICAgb3JpZ2luOiB0b09yaWdpbihlbGVtZW50SWQpLFxuICAgIGFyZWE6IHRvUmVjdChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQpLFxuICAgIGRpcmVjdGlvbixcbiAgICBzcGVlZCxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFBpbmNoT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgLSBUaGUgaWQgb2YgdGhlIGVsZW1lbnQgdG8gYmUgcGluY2hlZC5cbiAqIElmIHRoZSBlbGVtZW50IGlkIGlzIG1pc3NpbmcgdGhlbiBwaW5jaCBib3VuZGluZyBhcmVhIG11c3QgYmUgcHJvdmlkZWQuXG4gKiBJZiBib3RoIHRoZSBlbGVtZW50IGlkIGFuZCB0aGUgcGluY2ggYm91bmRpbmcgYXJlYSBhcmUgcHJvdmlkZWQgdGhlbiB0aGVcbiAqIGFyZWEgaXMgZWZmZWN0aXZlbHkgaWdub3JlZC5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gbGVmdCAtIFRoZSBsZWZ0IGNvb3JkaW5hdGUgb2YgdGhlIHBpbmNoIGJvdW5kaW5nIGFyZWFcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdG9wIC0gVGhlIHRvcCBjb29yZGluYXRlIG9mIHRoZSBwaW5jaCBib3VuZGluZyBhcmVhXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHdpZHRoIC0gVGhlIHdpZHRoIG9mIHRoZSBwaW5jaCBib3VuZGluZyBhcmVhXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGhlaWdodCAtIFRoZSBoZWlnaHQgb2YgdGhlIHBpbmNoIGJvdW5kaW5nIGFyZWFcbiAqIEBwcm9wZXJ0eSB7IW51bWJlcn0gcGVyY2VudCAtIFRoZSBzaXplIG9mIHRoZSBwaW5jaCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHBpbmNoIGFyZWEgc2l6ZS5cbiAqIFZhbGlkIHZhbHVlcyBtdXN0IGJlIGZsb2F0IG51bWJlcnMgaW4gcmFuZ2UgMC4uMSwgd2hlcmUgMS4wIGlzIDEwMCVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gc3BlZWQgWzI1MDAgKiBkaXNwbGF5RGVuc2l0eV0gLSBUaGUgc3BlZWQgYXQgd2hpY2ggdG8gcGVyZm9ybVxuICogdGhpcyBnZXN0dXJlIGluIHBpeGVscyBwZXIgc2Vjb25kLiBUaGUgdmFsdWUgbXVzdCBub3QgYmUgbmVnYXRpdmVcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm1zIGEgcGluY2ggY2xvc2UgZ2VzdHVyZS5cbiAqXG4gKiBAcGFyYW0gez9QaW5jaE9wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBwcm92aWRlZCBvcHRpb25zIGFyZSBub3QgdmFsaWRcbiAqL1xuY29tbWFuZHMubW9iaWxlUGluY2hDbG9zZUdlc3R1cmUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVQaW5jaENsb3NlR2VzdHVyZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBlbGVtZW50SWQsXG4gICAgbGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0LFxuICAgIHBlcmNlbnQsXG4gICAgc3BlZWQsXG4gIH0gPSBvcHRzO1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvYXBwaXVtL2dlc3R1cmVzL3BpbmNoX2Nsb3NlJywgJ1BPU1QnLCB7XG4gICAgb3JpZ2luOiB0b09yaWdpbihlbGVtZW50SWQpLFxuICAgIGFyZWE6IHRvUmVjdChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQpLFxuICAgIHBlcmNlbnQsXG4gICAgc3BlZWQsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBQZXJmb3JtcyBhIHBpbmNoIG9wZW4gZ2VzdHVyZS5cbiAqXG4gKiBAcGFyYW0gez9QaW5jaE9wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiBwcm92aWRlZCBvcHRpb25zIGFyZSBub3QgdmFsaWRcbiAqL1xuY29tbWFuZHMubW9iaWxlUGluY2hPcGVuR2VzdHVyZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVBpbmNoT3Blbkdlc3R1cmUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZWxlbWVudElkLFxuICAgIGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCxcbiAgICBwZXJjZW50LFxuICAgIHNwZWVkLFxuICB9ID0gb3B0cztcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9nZXN0dXJlcy9waW5jaF9vcGVuJywgJ1BPU1QnLCB7XG4gICAgb3JpZ2luOiB0b09yaWdpbihlbGVtZW50SWQpLFxuICAgIGFyZWE6IHRvUmVjdChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQpLFxuICAgIHBlcmNlbnQsXG4gICAgc3BlZWQsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTd2lwZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIC0gVGhlIGlkIG9mIHRoZSBlbGVtZW50IHRvIGJlIHN3aXBlZC5cbiAqIElmIHRoZSBlbGVtZW50IGlkIGlzIG1pc3NpbmcgdGhlbiBzd2lwZSBib3VuZGluZyBhcmVhIG11c3QgYmUgcHJvdmlkZWQuXG4gKiBJZiBib3RoIHRoZSBlbGVtZW50IGlkIGFuZCB0aGUgc3dpcGUgYm91bmRpbmcgYXJlYSBhcmUgcHJvdmlkZWQgdGhlbiB0aGVcbiAqIGFyZWEgaXMgZWZmZWN0aXZlbHkgaWdub3JlZC5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gbGVmdCAtIFRoZSBsZWZ0IGNvb3JkaW5hdGUgb2YgdGhlIHN3aXBlIGJvdW5kaW5nIGFyZWFcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdG9wIC0gVGhlIHRvcCBjb29yZGluYXRlIG9mIHRoZSBzd2lwZSBib3VuZGluZyBhcmVhXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHdpZHRoIC0gVGhlIHdpZHRoIG9mIHRoZSBzd2lwZSBib3VuZGluZyBhcmVhXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGhlaWdodCAtIFRoZSBoZWlnaHQgb2YgdGhlIHN3aXBlIGJvdW5kaW5nIGFyZWFcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gZGlyZWN0aW9uIC0gRGlyZWN0aW9uIG9mIHRoZSBzd2lwZS5cbiAqIEFjY2VwdGFibGUgdmFsdWVzIGFyZTogYHVwYCwgYGRvd25gLCBgbGVmdGAgYW5kIGByaWdodGAgKGNhc2UgaW5zZW5zaXRpdmUpXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IHBlcmNlbnQgLSBUaGUgc2l6ZSBvZiB0aGUgc3dpcGUgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBzd2lwZSBhcmVhIHNpemUuXG4gKiBWYWxpZCB2YWx1ZXMgbXVzdCBiZSBmbG9hdCBudW1iZXJzIGluIHJhbmdlIDAuLjEsIHdoZXJlIDEuMCBpcyAxMDAlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHNwZWVkIFs1MDAwICogZGlzcGxheURlbnNpdHldIC0gVGhlIHNwZWVkIGF0IHdoaWNoIHRvIHBlcmZvcm0gdGhpc1xuICogZ2VzdHVyZSBpbiBwaXhlbHMgcGVyIHNlY29uZC4gVGhlIHZhbHVlIG11c3Qgbm90IGJlIG5lZ2F0aXZlXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtcyBhIHN3aXBlIGdlc3R1cmUuXG4gKlxuICogQHBhcmFtIHs/U3dpcGVPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgcHJvdmlkZWQgb3B0aW9ucyBhcmUgbm90IHZhbGlkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVN3aXBlR2VzdHVyZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN3aXBlR2VzdHVyZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBlbGVtZW50SWQsXG4gICAgbGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0LFxuICAgIGRpcmVjdGlvbixcbiAgICBwZXJjZW50LFxuICAgIHNwZWVkLFxuICB9ID0gb3B0cztcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL2FwcGl1bS9nZXN0dXJlcy9zd2lwZScsICdQT1NUJywge1xuICAgIG9yaWdpbjogdG9PcmlnaW4oZWxlbWVudElkKSxcbiAgICBhcmVhOiB0b1JlY3QobGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0KSxcbiAgICBkaXJlY3Rpb24sXG4gICAgcGVyY2VudCxcbiAgICBzcGVlZCxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNjcm9sbE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIC0gVGhlIGlkIG9mIHRoZSBlbGVtZW50IHRvIGJlIHNjcm9sbGVkLlxuICogSWYgdGhlIGVsZW1lbnQgaWQgaXMgbWlzc2luZyB0aGVuIHNjcm9sbCBib3VuZGluZyBhcmVhIG11c3QgYmUgcHJvdmlkZWQuXG4gKiBJZiBib3RoIHRoZSBlbGVtZW50IGlkIGFuZCB0aGUgc2Nyb2xsIGJvdW5kaW5nIGFyZWEgYXJlIHByb3ZpZGVkIHRoZW4gdGhpc1xuICogYXJlYSBpcyBlZmZlY3RpdmVseSBpZ25vcmVkLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBsZWZ0IC0gVGhlIGxlZnQgY29vcmRpbmF0ZSBvZiB0aGUgc2Nyb2xsIGJvdW5kaW5nIGFyZWFcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdG9wIC0gVGhlIHRvcCBjb29yZGluYXRlIG9mIHRoZSBzY3JvbGwgYm91bmRpbmcgYXJlYVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB3aWR0aCAtIFRoZSB3aWR0aCBvZiB0aGUgc2Nyb2xsIGJvdW5kaW5nIGFyZWFcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gaGVpZ2h0IC0gVGhlIGhlaWdodCBvZiB0aGUgc2Nyb2xsIGJvdW5kaW5nIGFyZWFcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gZGlyZWN0aW9uIC0gRGlyZWN0aW9uIG9mIHRoZSBzY3JvbGwuXG4gKiBBY2NlcHRhYmxlIHZhbHVlcyBhcmU6IGB1cGAsIGBkb3duYCwgYGxlZnRgIGFuZCBgcmlnaHRgIChjYXNlIGluc2Vuc2l0aXZlKVxuICogQHByb3BlcnR5IHshbnVtYmVyfSBwZXJjZW50IC0gVGhlIHNpemUgb2YgdGhlIHNjcm9sbCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHNjcm9sbGluZyBhcmVhIHNpemUuXG4gKiBWYWxpZCB2YWx1ZXMgbXVzdCBiZSBmbG9hdCBudW1iZXJzIGdyZWF0ZXIgdGhhbiB6ZXJvLCB3aGVyZSAxLjAgaXMgMTAwJVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzcGVlZCBbNTAwMCAqIGRpc3BsYXlEZW5zaXR5XSAtIFRoZSBzcGVlZCBhdCB3aGljaCB0byBwZXJmb3JtIHRoaXMgZ2VzdHVyZVxuICogaW4gcGl4ZWxzIHBlciBzZWNvbmQuIFRoZSB2YWx1ZSBtdXN0IG5vdCBiZSBuZWdhdGl2ZVxuICovXG5cbi8qKlxuICogUGVyZm9ybXMgYSBzY3JvbGwgZ2VzdHVyZS5cbiAqXG4gKiBAcGFyYW0gez9TY3JvbGxPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgcHJvdmlkZWQgb3B0aW9ucyBhcmUgbm90IHZhbGlkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgb2JqZWN0IGNhbiBzdGlsbCBzY3JvbGwgaW4gdGhlIGdpdmVuIGRpcmVjdGlvbi5cbiAqL1xuY29tbWFuZHMubW9iaWxlU2Nyb2xsR2VzdHVyZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVNjcm9sbEdlc3R1cmUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgZWxlbWVudElkLFxuICAgIGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCxcbiAgICBkaXJlY3Rpb24sXG4gICAgcGVyY2VudCxcbiAgICBzcGVlZCxcbiAgfSA9IG9wdHM7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vZ2VzdHVyZXMvc2Nyb2xsJywgJ1BPU1QnLCB7XG4gICAgb3JpZ2luOiB0b09yaWdpbihlbGVtZW50SWQpLFxuICAgIGFyZWE6IHRvUmVjdChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQpLFxuICAgIGRpcmVjdGlvbixcbiAgICBwZXJjZW50LFxuICAgIHNwZWVkLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU2Nyb2xsRWxlbWVudFRvRWxlbWVudE9wdHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBlbGVtZW50SWQgVGhlIGlkZW50aWZpZXIgb2YgdGhlIHNjcm9sbGFibGUgZWxlbWVudCxcbiAqIHdoaWNoIGlzIGdvaW5nIHRvIGJlIHNjcm9sbGVkLiBJdCBpcyByZXF1aXJlZCB0aGlzIGVsZW1lbnRcbiAqIGlzIGEgdmFsaWQgc2Nyb2xsYWJsZSBjb250YWluZXIgYW5kIGl0IHdhcyBsb2NhdGVkIGJ5IGAtYW5kcm9pZCB1aWF1dG9tYXRvcmBcbiAqIHN0cmF0ZWd5LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGVsZW1lbnRUb0lkIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtLCB3aGljaCBiZWxvbmdzXG4gKiB0byB0aGUgc2Nyb2xsYWJsZSBlbGVtZW50IGFib3ZlLCBhbmQgd2hpY2ggc2hvdWxkIGJlY29tZSB2aXNpYmxlIGFmdGVyXG4gKiB0aGUgc2Nyb2xsaW5nIG9wZXJhdGlvbiBpcyBmaW5pc2hlZC4gSXQgaXMgcmVxdWlyZWQgdGhpcyBlbGVtZW50XG4gKiB3YXMgbG9jYXRlZCBieSBgLWFuZHJvaWQgdWlhdXRvbWF0b3JgIHN0cmF0ZWd5LlxuICovXG5cbi8qKlxuICogU2Nyb2xscyB0aGUgZ2l2ZW4gc2Nyb2xsYWJsZSBlbGVtZW50IGBlbGVtZW50SWRgIHVudGlsIGBlbGVtZW50VG9JZGBcbiAqIGJlY29tZXMgdmlzaWJsZS4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIGltbWVkaWF0ZWx5IGlmIHRoZSBgZWxlbWVudFRvSWRgXG4gKiBpcyBhbHJlYWR5IHZpc2libGUgaW4gdGhlIHZpZXcgcG9ydC4gT3RoZXJ3aXNlIGl0IHdvdWxkIHNjcm9sbFxuICogdG8gdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBzY3JvbGxhYmxlIGNvbnRyb2wgYW5kIHRyaWVzIHRvIHJlYWNoIHRoZSBkZXN0aW5hdGlvbiBlbGVtZW50XG4gKiBieSBzY3JvbGxpbmcgaXRzIHBhcmVudCB0byB0aGUgZW5kIHN0ZXAgYnkgc3RlcC4gVGhlIHNjcm9sbCBkaXJlY3Rpb24gKHZlcnRpY2FsIG9yIGhvcml6b250YWwpXG4gKiBpcyBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5LlxuICpcbiAqIEBwYXJhbSB7U2Nyb2xsRWxlbWVudFRvRWxlbWVudE9wdHN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGUgc2Nyb2xsaW5nIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVNjcm9sbEJhY2tUbyA9IGFzeW5jIGZ1bmN0aW9uIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2VsZW1lbnRJZCwgZWxlbWVudFRvSWR9ID0gb3B0cztcbiAgaWYgKCFlbGVtZW50SWQgfHwgIWVsZW1lbnRUb0lkKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgQm90aCBlbGVtZW50SWQgYW5kIGVsZW1lbnRUb0lkIGFyZ3VtZW50cyBtdXN0IGJlIHByb3ZpZGVkYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChcbiAgICBgL2FwcGl1bS9lbGVtZW50LyR7dXRpbC51bndyYXBFbGVtZW50KGVsZW1lbnRJZCl9L3Njcm9sbF90by8ke3V0aWwudW53cmFwRWxlbWVudChlbGVtZW50VG9JZCl9YCwgJ1BPU1QnLCB7fSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNjcm9sbE9wdHNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIFRoZSBpZGVudGlmaWVyIG9mIGFuIGVsZW1lbnQuIEl0IGlzIHJlcXVpcmVkIHRoaXMgZWxlbWVudFxuICogaXMgYSB2YWxpZCBzY3JvbGxhYmxlIGNvbnRhaW5lciBhbmQgaXQgd2FzIGxvY2F0ZWQgYnkgYC1hbmRyb2lkIHVpYXV0b21hdG9yYFxuICogc3RyYXRlZ3kuIElmIHRoaXMgcHJvcGVydHkgaXMgbm90IHByb3ZpZGVkIHRoZW4gdGhlIGZpcnN0IGN1cnJlbnRseSBhdmFpbGFibGUgc2Nyb2xsYWJsZSB2aWV3XG4gKiBpcyBzZWxlY3RlZCBmb3IgdGhlIGludGVyYWN0aW9uLlxuICogQHByb3BlcnR5IHshc3RyaW5nfSBzdHJhdGVneSBUaGUgZm9sbG93aW5nIHN0cmF0ZWdpZXMgYXJlIHN1cHBvcnRlZDpcbiAqIC0gYGFjY2Vzc2liaWxpdHkgaWRgIChVaVNlbGVjdG9yKCkuZGVzY3JpcHRpb24pXG4gKiAtIGBjbGFzcyBuYW1lYCAoVWlTZWxlY3RvcigpLmNsYXNzTmFtZSlcbiAqIC0gYC1hbmRyb2lkIHVpYXV0b21hdG9yYCAoVWlTZWxlY3RvcilcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gc2VsZWN0b3IgVGhlIGNvcnJlc3BvbmRpbmcgbG9va3VwIHZhbHVlIGZvciB0aGUgZ2l2ZW5cbiAqIHN0cmF0ZWd5LlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBtYXhTd2lwZXMgVGhlIG1heGltdW0gbnVtYmVyIG9mIHN3aXBlcyB0byBwZXJmb3JtXG4gKiBvbiB0aGUgdGFyZ2V0IHNjcm9sbGFibGUgdmlldyBpbiBvcmRlciB0byByZWFjaCB0aGUgZGVzdGluYXRpb24gZWxlbWVudC5cbiAqIEluIGNhc2UgdGhpcyB2YWx1ZSBpcyB1bnNldCB0aGVuIGl0IHdvdWxkIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBzY3JvbGxhYmxlXG4gKiBlbGVtZW50IGl0c2VsZiAodnVhIGBnZXRNYXhTZWFyY2hTd2lwZXMoKWAgcHJvcGVydHkpLlxuICovXG5cbi8qKlxuICogU2Nyb2xscyB0aGUgZ2l2ZW4gc2Nyb2xsYWJsZSBlbGVtZW50IHVudGlsIHRoZSBlbGVtZW50IGlkZW50aWZpZWRcbiAqIGJ5IGBzdHJhdGVneWAgYW5kIGBzZWxlY3RvcmAgYmVjb21lcyB2aXNpYmxlLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgaW1tZWRpYXRlbHkgaWYgdGhlXG4gKiBkZXN0aW5hdGlvbiBlbGVtZW50IGlzIGFscmVhZHkgdmlzaWJsZSBpbiB0aGUgdmlldyBwb3J0LiBPdGhlcndpc2UgaXQgd291bGQgc2Nyb2xsXG4gKiB0byB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgdGhlIHNjcm9sbGFibGUgY29udHJvbCBhbmQgdHJpZXMgdG8gcmVhY2ggdGhlIGRlc3RpbmF0aW9uIGVsZW1lbnRcbiAqIGJ5IHNjcm9sbGluZyBpdHMgcGFyZW50IHRvIHRoZSBlbmQgc3RlcCBieSBzdGVwLiBUaGUgc2Nyb2xsIGRpcmVjdGlvbiAodmVydGljYWwgb3IgaG9yaXpvbnRhbClcbiAqIGlzIGRldGVjdGVkIGF1dG9tYXRpY2FsbHkuXG4gKlxuICogQHBhcmFtIHtTY3JvbGxPcHRzfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlIHNjcm9sbGluZyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZFxuICovXG5jb21tYW5kcy5tb2JpbGVTY3JvbGwgPSBhc3luYyBmdW5jdGlvbiAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBlbGVtZW50LCBlbGVtZW50SWQsIC8vIGBlbGVtZW50YCBpcyBkZXByZWNhdGVkLCB1c2UgYGVsZW1lbnRJZGAgaW5zdGVhZFxuICAgIHN0cmF0ZWd5LCBzZWxlY3RvciwgbWF4U3dpcGVzXG4gIH0gPSBvcHRzO1xuICBpZiAoIXN0cmF0ZWd5IHx8ICFzZWxlY3Rvcikge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYEJvdGggc3RyYXRlZ3kgYW5kIHNlbGVjdG9yIGFyZ3VtZW50cyBtdXN0IGJlIHByb3ZpZGVkYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnL3RvdWNoL3Njcm9sbCcsICdQT1NUJywge1xuICAgIG9yaWdpbjogdG9PcmlnaW4oZWxlbWVudElkIHx8IGVsZW1lbnQpLFxuICAgIHBhcmFtczoge3N0cmF0ZWd5LCBzZWxlY3RvciwgbWF4U3dpcGVzfSxcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7O0FBR0EsU0FBU0MsUUFBVCxDQUFtQkMsT0FBbkIsRUFBNEI7RUFDMUIsT0FBT0EsT0FBTyxHQUFHQyxhQUFBLENB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
@@ -46,4 +46,4 @@ var _default = extensions;
46
46
  exports.default = _default;require('source-map-support').install();
47
47
 
48
48
 
49
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3ZpZXdwb3J0LmpzIiwibmFtZXMiOlsiZXh0ZW5zaW9ucyIsImNvbW1hbmRzIiwiZ2V0U3RhdHVzQmFySGVpZ2h0Iiwic3RhdHVzQmFyIiwidWlhdXRvbWF0b3IyIiwiandwcm94eSIsImNvbW1hbmQiLCJnZXREZXZpY2VQaXhlbFJhdGlvIiwiZ2V0Vmlld3BvcnRTY3JlZW5zaG90Iiwic2NyZWVuc2hvdCIsImdldFNjcmVlbnNob3QiLCJyZWN0IiwiZ2V0Vmlld1BvcnRSZWN0IiwiaW1hZ2VVdGlsIiwiY3JvcEJhc2U2NEltYWdlIiwid2luZG93U2l6ZSIsImdldFdpbmRvd1NpemUiLCJzdGF0dXNCYXJIZWlnaHQiLCJsZWZ0IiwidG9wIiwid2lkdGgiLCJoZWlnaHQiLCJPYmplY3QiLCJhc3NpZ24iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvdmlld3BvcnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW1hZ2VVdGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuXG5sZXQgZXh0ZW5zaW9ucyA9IHt9LCBjb21tYW5kcyA9IHt9O1xuXG4vLyBtZW1vaXplZCBpbiBjb25zdHJ1Y3RvclxuY29tbWFuZHMuZ2V0U3RhdHVzQmFySGVpZ2h0ID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBjb25zdCB7c3RhdHVzQmFyfSA9IGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9kZXZpY2Uvc3lzdGVtX2JhcnNgLCAnR0VUJywge30pO1xuICByZXR1cm4gc3RhdHVzQmFyO1xufTtcblxuLy8gbWVtb2l6ZWQgaW4gY29uc3RydWN0b3JcbmNvbW1hbmRzLmdldERldmljZVBpeGVsUmF0aW8gPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vZGV2aWNlL3BpeGVsX3JhdGlvJywgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLmdldFZpZXdwb3J0U2NyZWVuc2hvdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgc2NyZWVuc2hvdCA9IGF3YWl0IHRoaXMuZ2V0U2NyZWVuc2hvdCgpO1xuICBjb25zdCByZWN0ID0gYXdhaXQgdGhpcy5nZXRWaWV3UG9ydFJlY3QoKTtcbiAgcmV0dXJuIGF3YWl0IGltYWdlVXRpbC5jcm9wQmFzZTY0SW1hZ2Uoc2NyZWVuc2hvdCwgcmVjdCk7XG59O1xuXG5jb21tYW5kcy5nZXRWaWV3UG9ydFJlY3QgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHdpbmRvd1NpemUgPSBhd2FpdCB0aGlzLmdldFdpbmRvd1NpemUoKTtcbiAgY29uc3Qgc3RhdHVzQmFySGVpZ2h0ID0gYXdhaXQgdGhpcy5nZXRTdGF0dXNCYXJIZWlnaHQoKTtcbiAgLy8gYW5kcm9pZCByZXR1cm5zIHRoZSB1cHNjYWxlZCB3aW5kb3cgc2l6ZSwgc28gdG8gZ2V0IHRoZSB0cnVlIHNpemUgb2YgdGhlXG4gIC8vIHJlY3Qgd2UgaGF2ZSB0byBkb3duc2NhbGVcbiAgcmV0dXJuIHtcbiAgICBsZWZ0OiAwLFxuICAgIHRvcDogc3RhdHVzQmFySGVpZ2h0LFxuICAgIHdpZHRoOiB3aW5kb3dTaXplLndpZHRoLFxuICAgIGhlaWdodDogd2luZG93U2l6ZS5oZWlnaHQgLSBzdGF0dXNCYXJIZWlnaHRcbiAgfTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMpO1xuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUdBLElBQUlBLFVBQVUsR0FBRyxFQUFqQjtBQUFBLElBQXFCQyxRQUFRLEdBQUcsRUFBaEM7OztBQUdBQSxRQUFRLENBQUNDLGtCQUFULEdBQThCLGtCQUFrQjtFQUM5QyxNQUFNO0lBQUNDO0VBQUQsSUFBYyxNQUFNLEtBQUtDLFlBQUwsQ0FBa0JDLE9BQWxCLENBQTBCQyxPQUExQixDQUFtQyw0QkFBbkMsRUFBZ0UsS0FBaEUsRUFBdUUsRUFBdkUsQ0FBMUI7RUFDQSxPQUFPSCxTQUFQO0FBQ0QsQ0FIRDs7QUFNQUYsUUFBUSxDQUFDTSxtQkFBVCxHQUErQixrQkFBa0I7RUFDL0MsT0FBTyxNQUFNLEtBQUtILFlBQUwsQ0FBa0JDLE9BQWxCLENBQTBCQyxPQUExQixDQUFrQyw0QkFBbEMsRUFBZ0UsS0FBaEUsRUFBdUUsRUFBdkUsQ0FBYjtBQUNELENBRkQ7O0FBSUFMLFFBQVEsQ0FBQ08scUJBQVQsR0FBaUMsa0JBQWtCO0VBQ2pELE1BQU1DLFVBQVUsR0FBRyxNQUFNLEtBQUtDLGFBQUwsRUFBekI7RUFDQSxNQUFNQyxJQUFJLEdBQUcsTUFBTSxLQUFLQyxlQUFMLEVBQW5CO0VBQ0EsT0FBTyxNQUFNQyxtQkFBVUMsZUFBVixDQUEwQkwsVUFBMUIsRUFBc0NFLElBQXRDLENBQWI7QUFDRCxDQUpEOztBQU1BVixRQUFRLENBQUNXLGVBQVQsR0FBMkIsa0JBQWtCO0VBQzNDLE1BQU1HLFVBQVUsR0FBRyxNQUFNLEtBQUtDLGFBQUwsRUFBekI7RUFDQSxNQUFNQyxlQUFlLEdBQUcsTUFBTSxLQUFLZixrQkFBTCxFQUE5QjtFQUdBLE9BQU87SUFDTGdCLElBQUksRUFBRSxDQUREO0lBRUxDLEdBQUcsRUFBRUYsZUFGQTtJQUdMRyxLQUFLLEVBQUVMLFVBQVUsQ0FBQ0ssS0FIYjtJQUlMQyxNQUFNLEVBQUVOLFVBQVUsQ0FBQ00sTUFBWCxHQUFvQko7RUFKdkIsQ0FBUDtBQU1ELENBWEQ7O0FBYUFLLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjdkIsVUFBZCxFQUEwQkMsUUFBMUI7ZUFFZUQsVSJ9
49
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3ZpZXdwb3J0LmpzIiwibmFtZXMiOlsiZXh0ZW5zaW9ucyIsImNvbW1hbmRzIiwiZ2V0U3RhdHVzQmFySGVpZ2h0Iiwic3RhdHVzQmFyIiwidWlhdXRvbWF0b3IyIiwiandwcm94eSIsImNvbW1hbmQiLCJnZXREZXZpY2VQaXhlbFJhdGlvIiwiZ2V0Vmlld3BvcnRTY3JlZW5zaG90Iiwic2NyZWVuc2hvdCIsImdldFNjcmVlbnNob3QiLCJyZWN0IiwiZ2V0Vmlld1BvcnRSZWN0IiwiaW1hZ2VVdGlsIiwiY3JvcEJhc2U2NEltYWdlIiwid2luZG93U2l6ZSIsImdldFdpbmRvd1NpemUiLCJzdGF0dXNCYXJIZWlnaHQiLCJsZWZ0IiwidG9wIiwid2lkdGgiLCJoZWlnaHQiLCJPYmplY3QiLCJhc3NpZ24iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvdmlld3BvcnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW1hZ2VVdGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuXG5sZXQgZXh0ZW5zaW9ucyA9IHt9LCBjb21tYW5kcyA9IHt9O1xuXG4vLyBtZW1vaXplZCBpbiBjb25zdHJ1Y3RvclxuY29tbWFuZHMuZ2V0U3RhdHVzQmFySGVpZ2h0ID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBjb25zdCB7c3RhdHVzQmFyfSA9IGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2FwcGl1bS9kZXZpY2Uvc3lzdGVtX2JhcnNgLCAnR0VUJywge30pO1xuICByZXR1cm4gc3RhdHVzQmFyO1xufTtcblxuLy8gbWVtb2l6ZWQgaW4gY29uc3RydWN0b3JcbmNvbW1hbmRzLmdldERldmljZVBpeGVsUmF0aW8gPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy9hcHBpdW0vZGV2aWNlL3BpeGVsX3JhdGlvJywgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLmdldFZpZXdwb3J0U2NyZWVuc2hvdCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgc2NyZWVuc2hvdCA9IGF3YWl0IHRoaXMuZ2V0U2NyZWVuc2hvdCgpO1xuICBjb25zdCByZWN0ID0gYXdhaXQgdGhpcy5nZXRWaWV3UG9ydFJlY3QoKTtcbiAgcmV0dXJuIGF3YWl0IGltYWdlVXRpbC5jcm9wQmFzZTY0SW1hZ2Uoc2NyZWVuc2hvdCwgcmVjdCk7XG59O1xuXG5jb21tYW5kcy5nZXRWaWV3UG9ydFJlY3QgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHdpbmRvd1NpemUgPSBhd2FpdCB0aGlzLmdldFdpbmRvd1NpemUoKTtcbiAgY29uc3Qgc3RhdHVzQmFySGVpZ2h0ID0gYXdhaXQgdGhpcy5nZXRTdGF0dXNCYXJIZWlnaHQoKTtcbiAgLy8gYW5kcm9pZCByZXR1cm5zIHRoZSB1cHNjYWxlZCB3aW5kb3cgc2l6ZSwgc28gdG8gZ2V0IHRoZSB0cnVlIHNpemUgb2YgdGhlXG4gIC8vIHJlY3Qgd2UgaGF2ZSB0byBkb3duc2NhbGVcbiAgcmV0dXJuIHtcbiAgICBsZWZ0OiAwLFxuICAgIHRvcDogc3RhdHVzQmFySGVpZ2h0LFxuICAgIHdpZHRoOiB3aW5kb3dTaXplLndpZHRoLFxuICAgIGhlaWdodDogd2luZG93U2l6ZS5oZWlnaHQgLSBzdGF0dXNCYXJIZWlnaHRcbiAgfTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMpO1xuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUdBLElBQUlBLFVBQVUsR0FBRyxFQUFqQjtBQUFBLElBQXFCQyxRQUFRLEdBQUcsRUFBaEM7OztBQUdBQSxRQUFRLENBQUNDLGtCQUFULEdBQThCLGtCQUFrQjtFQUM5QyxNQUFNO0lBQUNDO0VBQUQsSUFBYyxNQUFNLEtBQUtDLFlBQUwsQ0FBa0JDLE9BQWxCLENBQTBCQyxPQUExQixDQUFtQyw0QkFBbkMsRUFBZ0UsS0FBaEUsRUFBdUUsRUFBdkUsQ0FBMUI7RUFDQSxPQUFPSCxTQUFQO0FBQ0QsQ0FIRDs7QUFNQUYsUUFBUSxDQUFDTSxtQkFBVCxHQUErQixrQkFBa0I7RUFDL0MsT0FBTyxNQUFNLEtBQUtILFlBQUwsQ0FBa0JDLE9BQWxCLENBQTBCQyxPQUExQixDQUFrQyw0QkFBbEMsRUFBZ0UsS0FBaEUsRUFBdUUsRUFBdkUsQ0FBYjtBQUNELENBRkQ7O0FBSUFMLFFBQVEsQ0FBQ08scUJBQVQsR0FBaUMsa0JBQWtCO0VBQ2pELE1BQU1DLFVBQVUsR0FBRyxNQUFNLEtBQUtDLGFBQUwsRUFBekI7RUFDQSxNQUFNQyxJQUFJLEdBQUcsTUFBTSxLQUFLQyxlQUFMLEVBQW5CO0VBQ0EsT0FBTyxNQUFNQyxrQkFBQSxDQUFVQyxlQUFWLENBQTBCTCxVQUExQixFQUFzQ0UsSUFBdEMsQ0FBYjtBQUNELENBSkQ7O0FBTUFWLFFBQVEsQ0FBQ1csZUFBVCxHQUEyQixrQkFBa0I7RUFDM0MsTUFBTUcsVUFBVSxHQUFHLE1BQU0sS0FBS0MsYUFBTCxFQUF6QjtFQUNBLE1BQU1DLGVBQWUsR0FBRyxNQUFNLEtBQUtmLGtCQUFMLEVBQTlCO0VBR0EsT0FBTztJQUNMZ0IsSUFBSSxFQUFFLENBREQ7SUFFTEMsR0FBRyxFQUFFRixlQUZBO0lBR0xHLEtBQUssRUFBRUwsVUFBVSxDQUFDSyxLQUhiO0lBSUxDLE1BQU0sRUFBRU4sVUFBVSxDQUFDTSxNQUFYLEdBQW9CSjtFQUp2QixDQUFQO0FBTUQsQ0FYRDs7QUFhQUssTUFBTSxDQUFDQyxNQUFQLENBQWN2QixVQUFkLEVBQTBCQyxRQUExQjtlQUVlRCxVIn0=
@@ -237,4 +237,4 @@ var _default = CssConverter;
237
237
  exports.default = _default;require('source-map-support').install();
238
238
 
239
239
 
240
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2Nzcy1jb252ZXJ0ZXIuanMiLCJuYW1lcyI6WyJwYXJzZXIiLCJDc3NTZWxlY3RvclBhcnNlciIsInJlZ2lzdGVyU2VsZWN0b3JQc2V1ZG9zIiwicmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzIiwicmVnaXN0ZXJBdHRyRXF1YWxpdHlNb2RzIiwiZW5hYmxlU3Vic3RpdHV0ZXMiLCJSRVNPVVJDRV9JRCIsIklEX0xPQ0FUT1JfUEFUVEVSTiIsIkJPT0xFQU5fQVRUUlMiLCJOVU1FUklDX0FUVFJTIiwiU1RSX0FUVFJTIiwiQUxMX0FUVFJTIiwiQVRUUklCVVRFX0FMSUFTRVMiLCJ0b1NuYWtlQ2FzZSIsInN0ciIsInRva2VucyIsInNwbGl0IiwibWFwIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInRvTG93ZXJDYXNlIiwib3V0Iiwiam9pbiIsImFzc2VydEdldEJvb2wiLCJjc3MiLCJ2YWwiLCJ2YWx1ZSIsImluY2x1ZGVzIiwiRXJyb3IiLCJuYW1lIiwiYXNzZXJ0R2V0QXR0ck5hbWUiLCJhdHRyTmFtZSIsIm9mZmljaWFsQXR0ciIsImFsaWFzQXR0cnMiLCJnZXRXb3JkTWF0Y2hlclJlZ2V4Iiwid29yZCIsIkNzc0NvbnZlcnRlciIsImNvbnN0cnVjdG9yIiwic2VsZWN0b3IiLCJwa2ciLCJmb3JtYXRJZExvY2F0b3IiLCJsb2NhdG9yIiwidGVzdCIsInBhcnNlQXR0ciIsImNzc0F0dHIiLCJ2YWx1ZVR5cGUiLCJtZXRob2ROYW1lIiwib3BlcmF0b3IiLCJwYXJzZVBzZXVkbyIsImNzc1BzZXVkbyIsInBzZXVkb05hbWUiLCJwYXJzZUNzc1J1bGUiLCJjc3NSdWxlIiwibmVzdGluZ09wZXJhdG9yIiwidWlBdXRvbWF0b3JTZWxlY3RvciIsInRhZ05hbWUiLCJhbmRyb2lkQ2xhc3MiLCJjbGFzc05hbWVzIiwiY3NzQ2xhc3NOYW1lcyIsInB1c2giLCJpZCIsImF0dHJzIiwiYXR0ciIsInBzZXVkb3MiLCJwc2V1ZG8iLCJydWxlIiwicGFyc2VDc3NPYmplY3QiLCJ0eXBlIiwic2VsZWN0b3JzIiwidG9VaUF1dG9tYXRvclNlbGVjdG9yIiwiY3NzT2JqIiwicGFyc2UiLCJlIiwiZXJyb3JzIiwiSW52YWxpZFNlbGVjdG9yRXJyb3IiXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvY3NzLWNvbnZlcnRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDc3NTZWxlY3RvclBhcnNlciB9IGZyb20gJ2Nzcy1zZWxlY3Rvci1wYXJzZXInO1xuaW1wb3J0IHsgZXNjYXBlUmVnRXhwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBwYXJzZXIgPSBuZXcgQ3NzU2VsZWN0b3JQYXJzZXIoKTtcbnBhcnNlci5yZWdpc3RlclNlbGVjdG9yUHNldWRvcygnaGFzJyk7XG5wYXJzZXIucmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzKCc+JywgJysnLCAnficpO1xucGFyc2VyLnJlZ2lzdGVyQXR0ckVxdWFsaXR5TW9kcygnXicsICckJywgJyonLCAnficpO1xucGFyc2VyLmVuYWJsZVN1YnN0aXR1dGVzKCk7XG5cbmNvbnN0IFJFU09VUkNFX0lEID0gJ3Jlc291cmNlLWlkJztcbmNvbnN0IElEX0xPQ0FUT1JfUEFUVEVSTiA9IC9eW2EtekEtWl9dW2EtekEtWjAtOS5fXSo6aWRcXC9bXFxTXSskLztcblxuY29uc3QgQk9PTEVBTl9BVFRSUyA9IFtcbiAgJ2NoZWNrYWJsZScsICdjaGVja2VkJywgJ2NsaWNrYWJsZScsICdlbmFibGVkJywgJ2ZvY3VzYWJsZScsXG4gICdmb2N1c2VkJywgJ2xvbmctY2xpY2thYmxlJywgJ3Njcm9sbGFibGUnLCAnc2VsZWN0ZWQnLFxuXTtcblxuY29uc3QgTlVNRVJJQ19BVFRSUyA9IFtcbiAgJ2luZGV4JywgJ2luc3RhbmNlJyxcbl07XG5cbmNvbnN0IFNUUl9BVFRSUyA9IFtcbiAgJ2Rlc2NyaXB0aW9uJywgUkVTT1VSQ0VfSUQsICd0ZXh0JywgJ2NsYXNzLW5hbWUnLCAncGFja2FnZS1uYW1lJ1xuXTtcblxuY29uc3QgQUxMX0FUVFJTID0gW1xuICAuLi5CT09MRUFOX0FUVFJTLFxuICAuLi5OVU1FUklDX0FUVFJTLFxuICAuLi5TVFJfQVRUUlMsXG5dO1xuXG5jb25zdCBBVFRSSUJVVEVfQUxJQVNFUyA9IFtcbiAgW1JFU09VUkNFX0lELCBbJ2lkJ11dLFxuICBbJ2Rlc2NyaXB0aW9uJywgW1xuICAgICdjb250ZW50LWRlc2NyaXB0aW9uJywgJ2NvbnRlbnQtZGVzYycsXG4gICAgJ2Rlc2MnLCAnYWNjZXNzaWJpbGl0eS1pZCcsXG4gIF1dLFxuICBbJ2luZGV4JywgWydudGgtY2hpbGQnXV0sXG5dO1xuXG4vKipcbiAqIENvbnZlcnQgaHlwaGVuIHNlcGFyYXRlZCB3b3JkIHRvIHNuYWtlIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgaHlwaGVuIHNlcGFyYXRlZCB3b3JkIHRyYW5zbGF0ZWQgdG8gc25ha2UgY2FzZVxuICovXG5mdW5jdGlvbiB0b1NuYWtlQ2FzZSAoc3RyKSB7XG4gIGlmICghc3RyKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IHRva2VucyA9IHN0ci5zcGxpdCgnLScpLm1hcCgoc3RyKSA9PiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSk7XG4gIGNvbnN0IG91dCA9IHRva2Vucy5qb2luKCcnKTtcbiAgcmV0dXJuIG91dC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIG91dC5zbGljZSgxKTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDc3NOYW1lVmFsdWVPYmplY3RcbiAqIEBwcm9wZXJ0eSB7P25hbWV9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIENTUyBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBDU1Mgb2JqZWN0XG4gKi9cblxuLyoqXG4gKiBHZXQgdGhlIGJvb2xlYW4gZnJvbSBhIENTUyBvYmplY3QuIElmIGVtcHR5LCByZXR1cm4gdHJ1ZS4gSWYgbm90IHRydWUvZmFsc2UvZW1wdHksIHRocm93IGV4Y2VwdGlvblxuICpcbiAqIEBwYXJhbSB7Q3NzTmFtZVZhbHVlT2JqZWN0fSBjc3MgQSBDU1Mgb2JqZWN0IHRoYXQgaGFzICduYW1lJyBhbmQgJ3ZhbHVlJ1xuICogQHJldHVybnMge3N0cmluZ30gRWl0aGVyICd0cnVlJyBvciAnZmFsc2UnLiBJZiB2YWx1ZSBpcyBlbXB0eSwgcmV0dXJuICd0cnVlJ1xuICovXG5mdW5jdGlvbiBhc3NlcnRHZXRCb29sIChjc3MpIHtcbiAgY29uc3QgdmFsID0gY3NzLnZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICd0cnVlJzsgLy8gYW4gb21pdHRlZCBib29sZWFuIGF0dHJpYnV0ZSBtZWFucyAndHJ1ZScgKGUuZy46IGlucHV0W2NoZWNrZWRdIG1lYW5zIGNoZWNrZWQgaXMgdHJ1ZSlcbiAgaWYgKFsndHJ1ZScsICdmYWxzZSddLmluY2x1ZGVzKHZhbCkpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzLm5hbWV9JyBtdXN0IGJlIHRydWUsIGZhbHNlIG9yIGVtcHR5LiBGb3VuZCAnJHtjc3MudmFsdWV9J2ApO1xufVxuXG4vKipcbiAqIEdldCB0aGUgY2Fub25pY2FsIGZvcm0gb2YgYSBDU1MgYXR0cmlidXRlIG5hbWVcbiAqXG4gKiBDb252ZXJ0cyB0byBsb3dlcmNhc2UgYW5kIGlmIGFuIGF0dHJpYnV0ZSBuYW1lIGlzIGFuIGFsaWFzIGZvciBzb21ldGhpbmcgZWxzZSwgcmV0dXJuXG4gKiB3aGF0IGl0IGlzIGFuIGFsaWFzIGZvclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjc3MgQ1NTIG9iamVjdFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNhbm9uaWNhbCBhdHRyaWJ1dGUgbmFtZVxuICovXG5mdW5jdGlvbiBhc3NlcnRHZXRBdHRyTmFtZSAoY3NzKSB7XG4gIGNvbnN0IGF0dHJOYW1lID0gY3NzLm5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAvLyBDaGVjayBpZiBpdCdzIHN1cHBvcnRlZCBhbmQgaWYgaXQgaXMsIHJldHVybiBpdFxuICBpZiAoQUxMX0FUVFJTLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgIHJldHVybiBhdHRyTmFtZS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgLy8gSWYgYXR0ck5hbWUgaXMgYW4gYWxpYXMgZm9yIHNvbWV0aGluZyBlbHNlLCByZXR1cm4gdGhhdFxuICBmb3IgKGNvbnN0IFtvZmZpY2lhbEF0dHIsIGFsaWFzQXR0cnNdIG9mIEFUVFJJQlVURV9BTElBU0VTKSB7XG4gICAgaWYgKGFsaWFzQXR0cnMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gb2ZmaWNpYWxBdHRyO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IGEgdmFsaWQgYXR0cmlidXRlLiBgICtcbiAgICBgU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlICcke0FMTF9BVFRSUy5qb2luKCcsICcpfSdgKTtcbn1cblxuLyoqXG4gKiBHZXQgYSByZWdleCB0aGF0IG1hdGNoZXMgYSB3aG9sZSB3b3JkLiBGb3IgdGhlIH49IENTUyBhdHRyaWJ1dGUgc2VsZWN0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHdvcmRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcmVnZXggXCJ3b3JkXCIgbWF0Y2hlclxuICovXG5mdW5jdGlvbiBnZXRXb3JkTWF0Y2hlclJlZ2V4ICh3b3JkKSB7XG4gIHJldHVybiBgXFxcXGIoXFxcXHcqJHtlc2NhcGVSZWdFeHAod29yZCl9XFxcXHcqKVxcXFxiYDtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDc3NBdHRyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlVHlwZSBUeXBlIG9mIGF0dHJpYnV0ZSAobXVzdCBiZSBzdHJpbmcgb3IgZW1wdHkpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlIFZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIGJldHdlZW4gdmFsdWUgYW5kIHZhbHVlIHR5cGUgKD0sICo9LCAsIF49LCAkPSlcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc1J1bGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbmVzdGluZ09wZXJhdG9yIFRoZSBuZXN0aW5nIG9wZXJhdG9yIChha2E6IGNvbWJpbmF0b3IgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NTU19TZWxlY3RvcnMpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHRhZ05hbWUgVGhlIHRhZyBuYW1lIChha2E6IHR5cGUgc2VsZWN0b3IgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL1R5cGVfc2VsZWN0b3JzKVxuICogQHByb3BlcnR5IHs/c3RyaW5nW119IGNsYXNzTmFtZXMgQW4gYXJyYXkgb2YgQ1NTIGNsYXNzIG5hbWVzXG4gKiBAcHJvcGVydHkgez9Dc3NBdHRyW119IGF0dHJzIEFuIGFycmF5IG9mIENTUyBhdHRyaWJ1dGVzXG4gKiBAcHJvcGVydHkgez9Dc3NQc2V1ZG9bXX0gYXR0cnMgQW4gYXJyYXkgb2YgQ1NTIHBzZXVkb3NcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWQgQ1NTIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P0Nzc1J1bGV9IHJ1bGUgQSBkZXNjZW5kYW50IG9mIHRoaXMgQ1NTIHJ1bGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc09iamVjdFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB0eXBlIFR5cGUgb2YgQ1NTIG9iamVjdC4gJ3J1bGUnLCAncnVsZXNldCcgb3IgJ3NlbGVjdG9ycydcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc1BzZXVkb1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2YWx1ZVR5cGUgVGhlIHR5cGUgb2YgQ1NTIHBzZXVkbyBzZWxlY3RvciAoaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvY3NzLXNlbGVjdG9yLXBhcnNlciBmb3IgcmVmZXJlbmNlKVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwc2V1ZG8gc2VsZWN0b3JcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwc2V1ZG8gc2VsZWN0b3JcbiAqL1xuXG5jbGFzcyBDc3NDb252ZXJ0ZXIge1xuXG4gIGNvbnN0cnVjdG9yIChzZWxlY3RvciwgcGtnKSB7XG4gICAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHRoaXMucGtnID0gcGtnO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBgPHBrZ05hbWU+OmlkL2AgcHJlZml4IHRvIGJlZ2lubmluZyBvZiBzdHJpbmcgaWYgaXQncyBub3QgdGhlcmUgYWxyZWFkeVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRvciBUaGUgaW5pdGlhbCBsb2NhdG9yXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyB3aXRoIGA8cGtnTmFtZT46aWQvYCBwcmVwZW5kZWQgKGlmIGl0IHdhc24ndCBhbHJlYWR5KVxuICAgKi9cbiAgZm9ybWF0SWRMb2NhdG9yIChsb2NhdG9yKSB7XG4gICAgcmV0dXJuIElEX0xPQ0FUT1JfUEFUVEVSTi50ZXN0KGxvY2F0b3IpXG4gICAgICA/IGxvY2F0b3JcbiAgICAgIDogYCR7dGhpcy5wa2cgfHwgJ2FuZHJvaWQnfTppZC8ke2xvY2F0b3J9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIGF0dHJpYnV0ZSBpbnRvIGEgVWlTZWxlY3RvciBtZXRob2QgY2FsbFxuICAgKlxuICAgKiBAcGFyYW0ge0Nzc0F0dHJ9IGNzc0F0dHIgQ1NTIGF0dHJpYnV0ZSBvYmplY3RcbiAgICogQHJldHVybnMge3N0cmluZ30gQ1NTIGF0dHJpYnV0ZSBwYXJzZWQgYXMgVWlTZWxlY3RvclxuICAgKi9cbiAgcGFyc2VBdHRyIChjc3NBdHRyKSB7XG4gICAgaWYgKGNzc0F0dHIudmFsdWVUeXBlICYmIGNzc0F0dHIudmFsdWVUeXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3NBdHRyLm5hbWV9PSR7Y3NzQXR0ci52YWx1ZX0nIGlzIGFuIGludmFsaWQgYXR0cmlidXRlLiBgICtcbiAgICAgICAgYE9ubHkgJ3N0cmluZycgYW5kIGVtcHR5IGF0dHJpYnV0ZSB0eXBlcyBhcmUgc3VwcG9ydGVkLiBGb3VuZCAnJHtjc3NBdHRyLnZhbHVlVHlwZX0nYCk7XG4gICAgfVxuICAgIGNvbnN0IGF0dHJOYW1lID0gYXNzZXJ0R2V0QXR0ck5hbWUoY3NzQXR0cik7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHRvU25ha2VDYXNlKGF0dHJOYW1lKTtcblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgaXQncyBhIHN1cHBvcnRlZCBhdHRyaWJ1dGVcbiAgICBpZiAoIVNUUl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkgJiYgIUJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IHN1cHBvcnRlZC4gU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlIGAgK1xuICAgICAgICBgJyR7Wy4uLlNUUl9BVFRSUywgLi4uQk9PTEVBTl9BVFRSU10uam9pbignLCAnKX0nYCk7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgYm9vbGVhbiwgaWYgaXQncyBhIGJvb2xlYW4gYXR0cmlidXRlXG4gICAgaWYgKEJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9KCR7YXNzZXJ0R2V0Qm9vbChjc3NBdHRyKX0pYDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UgcGFyc2UgYXMgc3RyaW5nXG4gICAgbGV0IHZhbHVlID0gY3NzQXR0ci52YWx1ZSB8fCAnJztcbiAgICBpZiAoYXR0ck5hbWUgPT09IFJFU09VUkNFX0lEKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuZm9ybWF0SWRMb2NhdG9yKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCJcIilgO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY3NzQXR0ci5vcGVyYXRvcikge1xuICAgICAgY2FzZSAnPSc6XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX0oXCIke3ZhbHVlfVwiKWA7XG4gICAgICBjYXNlICcqPSc6XG4gICAgICAgIGlmIChbJ2Rlc2NyaXB0aW9uJywgJ3RleHQnXS5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9Q29udGFpbnMoXCIke3ZhbHVlfVwiKWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke2VzY2FwZVJlZ0V4cCh2YWx1ZSl9XCIpYDtcbiAgICAgIGNhc2UgJ149JzpcbiAgICAgICAgaWYgKFsnZGVzY3JpcHRpb24nLCAndGV4dCddLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1TdGFydHNXaXRoKFwiJHt2YWx1ZX1cIilgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1NYXRjaGVzKFwiXiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX1cIilgO1xuICAgICAgY2FzZSAnJD0nOlxuICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX0kXCIpYDtcbiAgICAgIGNhc2UgJ349JzpcbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke2dldFdvcmRNYXRjaGVyUmVnZXgodmFsdWUpfVwiKWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBVbnJlYWNoYWJsZSwgYnV0IGFkZGluZyBlcnJvciBpbiBjYXNlIGEgbmV3IENTUyBhdHRyaWJ1dGUgaXMgYWRkZWQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgQ1NTIGF0dHJpYnV0ZSBvcGVyYXRvciAnJHtjc3NBdHRyLm9wZXJhdG9yfScuIGAgK1xuICAgICAgICAgIGAgJz0nLCAnKj0nLCAnXj0nLCAnJD0nIGFuZCAnfj0nIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgcHNldWRvIGNsYXNzIHRvIGEgVWlTZWxlY3RvclxuICAgKlxuICAgKiBAcGFyYW0ge0Nzc1BzZXVkb30gY3NzUHNldWRvIENTUyBQc2V1ZG8gY2xhc3NcbiAgICogQHJldHVybnMge3N0cmluZ30gUHNldWRvIHNlbGVjdG9yIHBhcnNlZCBhcyBVaVNlbGVjdG9yXG4gICAqL1xuICBwYXJzZVBzZXVkbyAoY3NzUHNldWRvKSB7XG4gICAgaWYgKGNzc1BzZXVkby52YWx1ZVR5cGUgJiYgY3NzUHNldWRvLnZhbHVlVHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzUHNldWRvLm5hbWV9PSR7Y3NzUHNldWRvLnZhbHVlfScuIGAgK1xuICAgICAgICBgVW5zdXBwb3J0ZWQgY3NzIHBzZXVkbyBjbGFzcyB2YWx1ZSB0eXBlOiAnJHtjc3NQc2V1ZG8udmFsdWVUeXBlfScuIE9ubHkgJ3N0cmluZycgdHlwZSBvciBlbXB0eSBpcyBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHNldWRvTmFtZSA9IGFzc2VydEdldEF0dHJOYW1lKGNzc1BzZXVkbyk7XG5cbiAgICBpZiAoQk9PTEVBTl9BVFRSUy5pbmNsdWRlcyhwc2V1ZG9OYW1lKSkge1xuICAgICAgcmV0dXJuIGAuJHt0b1NuYWtlQ2FzZShwc2V1ZG9OYW1lKX0oJHthc3NlcnRHZXRCb29sKGNzc1BzZXVkbyl9KWA7XG4gICAgfVxuXG4gICAgaWYgKE5VTUVSSUNfQVRUUlMuaW5jbHVkZXMocHNldWRvTmFtZSkpIHtcbiAgICAgIHJldHVybiBgLiR7cHNldWRvTmFtZX0oJHtjc3NQc2V1ZG8udmFsdWV9KWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgcnVsZSB0byBhIFVpU2VsZWN0b3JcbiAgICogQHBhcmFtIHtDc3NSdWxlfSBjc3NSdWxlIENTUyBydWxlIGRlZmluaXRpb25cbiAgICovXG4gIHBhcnNlQ3NzUnVsZSAoY3NzUnVsZSkge1xuICAgIGNvbnN0IHsgbmVzdGluZ09wZXJhdG9yIH0gPSBjc3NSdWxlO1xuICAgIGlmIChuZXN0aW5nT3BlcmF0b3IgJiYgbmVzdGluZ09wZXJhdG9yICE9PSAnICcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7bmVzdGluZ09wZXJhdG9yfScgaXMgbm90IGEgc3VwcG9ydGVkIGNvbWJpbmF0b3IuIGAgK1xuICAgICAgICBgT25seSBjaGlsZCBjb21iaW5hdG9yICg+KSBhbmQgZGVzY2VuZGFudCBjb21iaW5hdG9yIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuXG4gICAgbGV0IHVpQXV0b21hdG9yU2VsZWN0b3IgPSAnbmV3IFVpU2VsZWN0b3IoKSc7XG4gICAgaWYgKGNzc1J1bGUudGFnTmFtZSAmJiBjc3NSdWxlLnRhZ05hbWUgIT09ICcqJykge1xuICAgICAgbGV0IGFuZHJvaWRDbGFzcyA9IFtjc3NSdWxlLnRhZ05hbWVdO1xuICAgICAgaWYgKGNzc1J1bGUuY2xhc3NOYW1lcykge1xuICAgICAgICBmb3IgKGNvbnN0IGNzc0NsYXNzTmFtZXMgb2YgY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICAgICAgYW5kcm9pZENsYXNzLnB1c2goY3NzQ2xhc3NOYW1lcyk7XG4gICAgICAgIH1cbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLmNsYXNzTmFtZShcIiR7YW5kcm9pZENsYXNzLmpvaW4oJy4nKX1cIilgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLmNsYXNzTmFtZU1hdGNoZXMoXCIke2Nzc1J1bGUudGFnTmFtZX1cIilgO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2xhc3NOYW1lTWF0Y2hlcyhcIiR7Y3NzUnVsZS5jbGFzc05hbWVzLmpvaW4oJ1xcXFwuJyl9XCIpYDtcbiAgICB9XG4gICAgaWYgKGNzc1J1bGUuaWQpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5yZXNvdXJjZUlkKFwiJHt0aGlzLmZvcm1hdElkTG9jYXRvcihjc3NSdWxlLmlkKX1cIilgO1xuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5hdHRycykge1xuICAgICAgZm9yIChjb25zdCBhdHRyIG9mIGNzc1J1bGUuYXR0cnMpIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSB0aGlzLnBhcnNlQXR0cihhdHRyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNzc1J1bGUucHNldWRvcykge1xuICAgICAgZm9yIChjb25zdCBwc2V1ZG8gb2YgY3NzUnVsZS5wc2V1ZG9zKSB7XG4gICAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gdGhpcy5wYXJzZVBzZXVkbyhwc2V1ZG8pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5ydWxlKSB7XG4gICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2hpbGRTZWxlY3Rvcigke3RoaXMucGFyc2VDc3NSdWxlKGNzc1J1bGUucnVsZSl9KWA7XG4gICAgfVxuICAgIHJldHVybiB1aUF1dG9tYXRvclNlbGVjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgQ1NTIG9iamVjdCB0byBVaUF1dG9tYXRvcjIgc2VsZWN0b3JcbiAgICogQHBhcmFtIHtDc3NPYmplY3R9IGNzcyBDU1Mgb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgb2JqZWN0IHBhcnNlZCBhcyBhIFVpU2VsZWN0b3JcbiAgICovXG4gIHBhcnNlQ3NzT2JqZWN0IChjc3MpIHtcbiAgICBzd2l0Y2ggKGNzcy50eXBlKSB7XG4gICAgICBjYXNlICdydWxlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NSdWxlKGNzcyk7XG4gICAgICBjYXNlICdydWxlU2V0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NPYmplY3QoY3NzLnJ1bGUpO1xuICAgICAgY2FzZSAnc2VsZWN0b3JzJzpcbiAgICAgICAgcmV0dXJuIGNzcy5zZWxlY3RvcnMubWFwKChzZWxlY3RvcikgPT4gdGhpcy5wYXJzZUNzc09iamVjdChzZWxlY3RvcikpLmpvaW4oJzsgJyk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIFRoaXMgaXMgbmV2ZXIgcmVhY2hhYmxlLCBidXQgaWYgaXQgZXZlciBpcyBkbyB0aGlzLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVpQXV0b21hdG9yIGRvZXMgbm90IHN1cHBvcnQgJyR7Y3NzLnR5cGV9JyBjc3MuIE9ubHkgc3VwcG9ydHMgJ3J1bGUnLCAncnVsZVNldCcsICdzZWxlY3RvcnMnIGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIHNlbGVjdG9yIHRvIGEgVWlBdXRvbWF0b3IyIHNlbGVjdG9yXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgc2VsZWN0b3IgY29udmVydGVkIHRvIGEgVWlTZWxlY3RvclxuICAgKi9cbiAgdG9VaUF1dG9tYXRvclNlbGVjdG9yICgpIHtcbiAgICBsZXQgY3NzT2JqO1xuICAgIHRyeSB7XG4gICAgICBjc3NPYmogPSBwYXJzZXIucGFyc2UodGhpcy5zZWxlY3Rvcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkU2VsZWN0b3JFcnJvcihgSW52YWxpZCBDU1Mgc2VsZWN0b3IgJyR7dGhpcy5zZWxlY3Rvcn0nLiBSZWFzb246ICcke2V9J2ApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NPYmplY3QoY3NzT2JqKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRTZWxlY3RvckVycm9yKGBVbnN1cHBvcnRlZCBDU1Mgc2VsZWN0b3IgJyR7dGhpcy5zZWxlY3Rvcn0nLiBSZWFzb246ICcke2V9J2ApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDc3NDb252ZXJ0ZXI7Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxNQUFNLEdBQUcsSUFBSUMsb0NBQUosRUFBZjtBQUNBRCxNQUFNLENBQUNFLHVCQUFQLENBQStCLEtBQS9CO0FBQ0FGLE1BQU0sQ0FBQ0csd0JBQVAsQ0FBZ0MsR0FBaEMsRUFBcUMsR0FBckMsRUFBMEMsR0FBMUM7QUFDQUgsTUFBTSxDQUFDSSx3QkFBUCxDQUFnQyxHQUFoQyxFQUFxQyxHQUFyQyxFQUEwQyxHQUExQyxFQUErQyxHQUEvQztBQUNBSixNQUFNLENBQUNLLGlCQUFQO0FBRUEsTUFBTUMsV0FBVyxHQUFHLGFBQXBCO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcscUNBQTNCO0FBRUEsTUFBTUMsYUFBYSxHQUFHLENBQ3BCLFdBRG9CLEVBQ1AsU0FETyxFQUNJLFdBREosRUFDaUIsU0FEakIsRUFDNEIsV0FENUIsRUFFcEIsU0FGb0IsRUFFVCxnQkFGUyxFQUVTLFlBRlQsRUFFdUIsVUFGdkIsQ0FBdEI7QUFLQSxNQUFNQyxhQUFhLEdBQUcsQ0FDcEIsT0FEb0IsRUFDWCxVQURXLENBQXRCO0FBSUEsTUFBTUMs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
240
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2Nzcy1jb252ZXJ0ZXIuanMiLCJuYW1lcyI6WyJwYXJzZXIiLCJDc3NTZWxlY3RvclBhcnNlciIsInJlZ2lzdGVyU2VsZWN0b3JQc2V1ZG9zIiwicmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzIiwicmVnaXN0ZXJBdHRyRXF1YWxpdHlNb2RzIiwiZW5hYmxlU3Vic3RpdHV0ZXMiLCJSRVNPVVJDRV9JRCIsIklEX0xPQ0FUT1JfUEFUVEVSTiIsIkJPT0xFQU5fQVRUUlMiLCJOVU1FUklDX0FUVFJTIiwiU1RSX0FUVFJTIiwiQUxMX0FUVFJTIiwiQVRUUklCVVRFX0FMSUFTRVMiLCJ0b1NuYWtlQ2FzZSIsInN0ciIsInRva2VucyIsInNwbGl0IiwibWFwIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInRvTG93ZXJDYXNlIiwib3V0Iiwiam9pbiIsImFzc2VydEdldEJvb2wiLCJjc3MiLCJ2YWwiLCJ2YWx1ZSIsImluY2x1ZGVzIiwiRXJyb3IiLCJuYW1lIiwiYXNzZXJ0R2V0QXR0ck5hbWUiLCJhdHRyTmFtZSIsIm9mZmljaWFsQXR0ciIsImFsaWFzQXR0cnMiLCJnZXRXb3JkTWF0Y2hlclJlZ2V4Iiwid29yZCIsImVzY2FwZVJlZ0V4cCIsIkNzc0NvbnZlcnRlciIsImNvbnN0cnVjdG9yIiwic2VsZWN0b3IiLCJwa2ciLCJmb3JtYXRJZExvY2F0b3IiLCJsb2NhdG9yIiwidGVzdCIsInBhcnNlQXR0ciIsImNzc0F0dHIiLCJ2YWx1ZVR5cGUiLCJtZXRob2ROYW1lIiwib3BlcmF0b3IiLCJwYXJzZVBzZXVkbyIsImNzc1BzZXVkbyIsInBzZXVkb05hbWUiLCJwYXJzZUNzc1J1bGUiLCJjc3NSdWxlIiwibmVzdGluZ09wZXJhdG9yIiwidWlBdXRvbWF0b3JTZWxlY3RvciIsInRhZ05hbWUiLCJhbmRyb2lkQ2xhc3MiLCJjbGFzc05hbWVzIiwiY3NzQ2xhc3NOYW1lcyIsInB1c2giLCJpZCIsImF0dHJzIiwiYXR0ciIsInBzZXVkb3MiLCJwc2V1ZG8iLCJydWxlIiwicGFyc2VDc3NPYmplY3QiLCJ0eXBlIiwic2VsZWN0b3JzIiwidG9VaUF1dG9tYXRvclNlbGVjdG9yIiwiY3NzT2JqIiwicGFyc2UiLCJlIiwiZXJyb3JzIiwiSW52YWxpZFNlbGVjdG9yRXJyb3IiXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvY3NzLWNvbnZlcnRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDc3NTZWxlY3RvclBhcnNlciB9IGZyb20gJ2Nzcy1zZWxlY3Rvci1wYXJzZXInO1xuaW1wb3J0IHsgZXNjYXBlUmVnRXhwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBwYXJzZXIgPSBuZXcgQ3NzU2VsZWN0b3JQYXJzZXIoKTtcbnBhcnNlci5yZWdpc3RlclNlbGVjdG9yUHNldWRvcygnaGFzJyk7XG5wYXJzZXIucmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzKCc+JywgJysnLCAnficpO1xucGFyc2VyLnJlZ2lzdGVyQXR0ckVxdWFsaXR5TW9kcygnXicsICckJywgJyonLCAnficpO1xucGFyc2VyLmVuYWJsZVN1YnN0aXR1dGVzKCk7XG5cbmNvbnN0IFJFU09VUkNFX0lEID0gJ3Jlc291cmNlLWlkJztcbmNvbnN0IElEX0xPQ0FUT1JfUEFUVEVSTiA9IC9eW2EtekEtWl9dW2EtekEtWjAtOS5fXSo6aWRcXC9bXFxTXSskLztcblxuY29uc3QgQk9PTEVBTl9BVFRSUyA9IFtcbiAgJ2NoZWNrYWJsZScsICdjaGVja2VkJywgJ2NsaWNrYWJsZScsICdlbmFibGVkJywgJ2ZvY3VzYWJsZScsXG4gICdmb2N1c2VkJywgJ2xvbmctY2xpY2thYmxlJywgJ3Njcm9sbGFibGUnLCAnc2VsZWN0ZWQnLFxuXTtcblxuY29uc3QgTlVNRVJJQ19BVFRSUyA9IFtcbiAgJ2luZGV4JywgJ2luc3RhbmNlJyxcbl07XG5cbmNvbnN0IFNUUl9BVFRSUyA9IFtcbiAgJ2Rlc2NyaXB0aW9uJywgUkVTT1VSQ0VfSUQsICd0ZXh0JywgJ2NsYXNzLW5hbWUnLCAncGFja2FnZS1uYW1lJ1xuXTtcblxuY29uc3QgQUxMX0FUVFJTID0gW1xuICAuLi5CT09MRUFOX0FUVFJTLFxuICAuLi5OVU1FUklDX0FUVFJTLFxuICAuLi5TVFJfQVRUUlMsXG5dO1xuXG5jb25zdCBBVFRSSUJVVEVfQUxJQVNFUyA9IFtcbiAgW1JFU09VUkNFX0lELCBbJ2lkJ11dLFxuICBbJ2Rlc2NyaXB0aW9uJywgW1xuICAgICdjb250ZW50LWRlc2NyaXB0aW9uJywgJ2NvbnRlbnQtZGVzYycsXG4gICAgJ2Rlc2MnLCAnYWNjZXNzaWJpbGl0eS1pZCcsXG4gIF1dLFxuICBbJ2luZGV4JywgWydudGgtY2hpbGQnXV0sXG5dO1xuXG4vKipcbiAqIENvbnZlcnQgaHlwaGVuIHNlcGFyYXRlZCB3b3JkIHRvIHNuYWtlIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgaHlwaGVuIHNlcGFyYXRlZCB3b3JkIHRyYW5zbGF0ZWQgdG8gc25ha2UgY2FzZVxuICovXG5mdW5jdGlvbiB0b1NuYWtlQ2FzZSAoc3RyKSB7XG4gIGlmICghc3RyKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IHRva2VucyA9IHN0ci5zcGxpdCgnLScpLm1hcCgoc3RyKSA9PiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSk7XG4gIGNvbnN0IG91dCA9IHRva2Vucy5qb2luKCcnKTtcbiAgcmV0dXJuIG91dC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIG91dC5zbGljZSgxKTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDc3NOYW1lVmFsdWVPYmplY3RcbiAqIEBwcm9wZXJ0eSB7P25hbWV9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIENTUyBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBDU1Mgb2JqZWN0XG4gKi9cblxuLyoqXG4gKiBHZXQgdGhlIGJvb2xlYW4gZnJvbSBhIENTUyBvYmplY3QuIElmIGVtcHR5LCByZXR1cm4gdHJ1ZS4gSWYgbm90IHRydWUvZmFsc2UvZW1wdHksIHRocm93IGV4Y2VwdGlvblxuICpcbiAqIEBwYXJhbSB7Q3NzTmFtZVZhbHVlT2JqZWN0fSBjc3MgQSBDU1Mgb2JqZWN0IHRoYXQgaGFzICduYW1lJyBhbmQgJ3ZhbHVlJ1xuICogQHJldHVybnMge3N0cmluZ30gRWl0aGVyICd0cnVlJyBvciAnZmFsc2UnLiBJZiB2YWx1ZSBpcyBlbXB0eSwgcmV0dXJuICd0cnVlJ1xuICovXG5mdW5jdGlvbiBhc3NlcnRHZXRCb29sIChjc3MpIHtcbiAgY29uc3QgdmFsID0gY3NzLnZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICd0cnVlJzsgLy8gYW4gb21pdHRlZCBib29sZWFuIGF0dHJpYnV0ZSBtZWFucyAndHJ1ZScgKGUuZy46IGlucHV0W2NoZWNrZWRdIG1lYW5zIGNoZWNrZWQgaXMgdHJ1ZSlcbiAgaWYgKFsndHJ1ZScsICdmYWxzZSddLmluY2x1ZGVzKHZhbCkpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzLm5hbWV9JyBtdXN0IGJlIHRydWUsIGZhbHNlIG9yIGVtcHR5LiBGb3VuZCAnJHtjc3MudmFsdWV9J2ApO1xufVxuXG4vKipcbiAqIEdldCB0aGUgY2Fub25pY2FsIGZvcm0gb2YgYSBDU1MgYXR0cmlidXRlIG5hbWVcbiAqXG4gKiBDb252ZXJ0cyB0byBsb3dlcmNhc2UgYW5kIGlmIGFuIGF0dHJpYnV0ZSBuYW1lIGlzIGFuIGFsaWFzIGZvciBzb21ldGhpbmcgZWxzZSwgcmV0dXJuXG4gKiB3aGF0IGl0IGlzIGFuIGFsaWFzIGZvclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjc3MgQ1NTIG9iamVjdFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNhbm9uaWNhbCBhdHRyaWJ1dGUgbmFtZVxuICovXG5mdW5jdGlvbiBhc3NlcnRHZXRBdHRyTmFtZSAoY3NzKSB7XG4gIGNvbnN0IGF0dHJOYW1lID0gY3NzLm5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAvLyBDaGVjayBpZiBpdCdzIHN1cHBvcnRlZCBhbmQgaWYgaXQgaXMsIHJldHVybiBpdFxuICBpZiAoQUxMX0FUVFJTLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgIHJldHVybiBhdHRyTmFtZS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgLy8gSWYgYXR0ck5hbWUgaXMgYW4gYWxpYXMgZm9yIHNvbWV0aGluZyBlbHNlLCByZXR1cm4gdGhhdFxuICBmb3IgKGNvbnN0IFtvZmZpY2lhbEF0dHIsIGFsaWFzQXR0cnNdIG9mIEFUVFJJQlVURV9BTElBU0VTKSB7XG4gICAgaWYgKGFsaWFzQXR0cnMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gb2ZmaWNpYWxBdHRyO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IGEgdmFsaWQgYXR0cmlidXRlLiBgICtcbiAgICBgU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlICcke0FMTF9BVFRSUy5qb2luKCcsICcpfSdgKTtcbn1cblxuLyoqXG4gKiBHZXQgYSByZWdleCB0aGF0IG1hdGNoZXMgYSB3aG9sZSB3b3JkLiBGb3IgdGhlIH49IENTUyBhdHRyaWJ1dGUgc2VsZWN0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHdvcmRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcmVnZXggXCJ3b3JkXCIgbWF0Y2hlclxuICovXG5mdW5jdGlvbiBnZXRXb3JkTWF0Y2hlclJlZ2V4ICh3b3JkKSB7XG4gIHJldHVybiBgXFxcXGIoXFxcXHcqJHtlc2NhcGVSZWdFeHAod29yZCl9XFxcXHcqKVxcXFxiYDtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDc3NBdHRyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlVHlwZSBUeXBlIG9mIGF0dHJpYnV0ZSAobXVzdCBiZSBzdHJpbmcgb3IgZW1wdHkpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlIFZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIGJldHdlZW4gdmFsdWUgYW5kIHZhbHVlIHR5cGUgKD0sICo9LCAsIF49LCAkPSlcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc1J1bGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbmVzdGluZ09wZXJhdG9yIFRoZSBuZXN0aW5nIG9wZXJhdG9yIChha2E6IGNvbWJpbmF0b3IgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NTU19TZWxlY3RvcnMpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHRhZ05hbWUgVGhlIHRhZyBuYW1lIChha2E6IHR5cGUgc2VsZWN0b3IgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL1R5cGVfc2VsZWN0b3JzKVxuICogQHByb3BlcnR5IHs/c3RyaW5nW119IGNsYXNzTmFtZXMgQW4gYXJyYXkgb2YgQ1NTIGNsYXNzIG5hbWVzXG4gKiBAcHJvcGVydHkgez9Dc3NBdHRyW119IGF0dHJzIEFuIGFycmF5IG9mIENTUyBhdHRyaWJ1dGVzXG4gKiBAcHJvcGVydHkgez9Dc3NQc2V1ZG9bXX0gYXR0cnMgQW4gYXJyYXkgb2YgQ1NTIHBzZXVkb3NcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWQgQ1NTIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P0Nzc1J1bGV9IHJ1bGUgQSBkZXNjZW5kYW50IG9mIHRoaXMgQ1NTIHJ1bGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc09iamVjdFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB0eXBlIFR5cGUgb2YgQ1NTIG9iamVjdC4gJ3J1bGUnLCAncnVsZXNldCcgb3IgJ3NlbGVjdG9ycydcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc1BzZXVkb1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2YWx1ZVR5cGUgVGhlIHR5cGUgb2YgQ1NTIHBzZXVkbyBzZWxlY3RvciAoaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvY3NzLXNlbGVjdG9yLXBhcnNlciBmb3IgcmVmZXJlbmNlKVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwc2V1ZG8gc2VsZWN0b3JcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwc2V1ZG8gc2VsZWN0b3JcbiAqL1xuXG5jbGFzcyBDc3NDb252ZXJ0ZXIge1xuXG4gIGNvbnN0cnVjdG9yIChzZWxlY3RvciwgcGtnKSB7XG4gICAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHRoaXMucGtnID0gcGtnO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBgPHBrZ05hbWU+OmlkL2AgcHJlZml4IHRvIGJlZ2lubmluZyBvZiBzdHJpbmcgaWYgaXQncyBub3QgdGhlcmUgYWxyZWFkeVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRvciBUaGUgaW5pdGlhbCBsb2NhdG9yXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyB3aXRoIGA8cGtnTmFtZT46aWQvYCBwcmVwZW5kZWQgKGlmIGl0IHdhc24ndCBhbHJlYWR5KVxuICAgKi9cbiAgZm9ybWF0SWRMb2NhdG9yIChsb2NhdG9yKSB7XG4gICAgcmV0dXJuIElEX0xPQ0FUT1JfUEFUVEVSTi50ZXN0KGxvY2F0b3IpXG4gICAgICA/IGxvY2F0b3JcbiAgICAgIDogYCR7dGhpcy5wa2cgfHwgJ2FuZHJvaWQnfTppZC8ke2xvY2F0b3J9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIGF0dHJpYnV0ZSBpbnRvIGEgVWlTZWxlY3RvciBtZXRob2QgY2FsbFxuICAgKlxuICAgKiBAcGFyYW0ge0Nzc0F0dHJ9IGNzc0F0dHIgQ1NTIGF0dHJpYnV0ZSBvYmplY3RcbiAgICogQHJldHVybnMge3N0cmluZ30gQ1NTIGF0dHJpYnV0ZSBwYXJzZWQgYXMgVWlTZWxlY3RvclxuICAgKi9cbiAgcGFyc2VBdHRyIChjc3NBdHRyKSB7XG4gICAgaWYgKGNzc0F0dHIudmFsdWVUeXBlICYmIGNzc0F0dHIudmFsdWVUeXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3NBdHRyLm5hbWV9PSR7Y3NzQXR0ci52YWx1ZX0nIGlzIGFuIGludmFsaWQgYXR0cmlidXRlLiBgICtcbiAgICAgICAgYE9ubHkgJ3N0cmluZycgYW5kIGVtcHR5IGF0dHJpYnV0ZSB0eXBlcyBhcmUgc3VwcG9ydGVkLiBGb3VuZCAnJHtjc3NBdHRyLnZhbHVlVHlwZX0nYCk7XG4gICAgfVxuICAgIGNvbnN0IGF0dHJOYW1lID0gYXNzZXJ0R2V0QXR0ck5hbWUoY3NzQXR0cik7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHRvU25ha2VDYXNlKGF0dHJOYW1lKTtcblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgaXQncyBhIHN1cHBvcnRlZCBhdHRyaWJ1dGVcbiAgICBpZiAoIVNUUl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkgJiYgIUJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IHN1cHBvcnRlZC4gU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlIGAgK1xuICAgICAgICBgJyR7Wy4uLlNUUl9BVFRSUywgLi4uQk9PTEVBTl9BVFRSU10uam9pbignLCAnKX0nYCk7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgYm9vbGVhbiwgaWYgaXQncyBhIGJvb2xlYW4gYXR0cmlidXRlXG4gICAgaWYgKEJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9KCR7YXNzZXJ0R2V0Qm9vbChjc3NBdHRyKX0pYDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UgcGFyc2UgYXMgc3RyaW5nXG4gICAgbGV0IHZhbHVlID0gY3NzQXR0ci52YWx1ZSB8fCAnJztcbiAgICBpZiAoYXR0ck5hbWUgPT09IFJFU09VUkNFX0lEKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuZm9ybWF0SWRMb2NhdG9yKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCJcIilgO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY3NzQXR0ci5vcGVyYXRvcikge1xuICAgICAgY2FzZSAnPSc6XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX0oXCIke3ZhbHVlfVwiKWA7XG4gICAgICBjYXNlICcqPSc6XG4gICAgICAgIGlmIChbJ2Rlc2NyaXB0aW9uJywgJ3RleHQnXS5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9Q29udGFpbnMoXCIke3ZhbHVlfVwiKWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke2VzY2FwZVJlZ0V4cCh2YWx1ZSl9XCIpYDtcbiAgICAgIGNhc2UgJ149JzpcbiAgICAgICAgaWYgKFsnZGVzY3JpcHRpb24nLCAndGV4dCddLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1TdGFydHNXaXRoKFwiJHt2YWx1ZX1cIilgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1NYXRjaGVzKFwiXiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX1cIilgO1xuICAgICAgY2FzZSAnJD0nOlxuICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX0kXCIpYDtcbiAgICAgIGNhc2UgJ349JzpcbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke2dldFdvcmRNYXRjaGVyUmVnZXgodmFsdWUpfVwiKWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBVbnJlYWNoYWJsZSwgYnV0IGFkZGluZyBlcnJvciBpbiBjYXNlIGEgbmV3IENTUyBhdHRyaWJ1dGUgaXMgYWRkZWQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgQ1NTIGF0dHJpYnV0ZSBvcGVyYXRvciAnJHtjc3NBdHRyLm9wZXJhdG9yfScuIGAgK1xuICAgICAgICAgIGAgJz0nLCAnKj0nLCAnXj0nLCAnJD0nIGFuZCAnfj0nIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgcHNldWRvIGNsYXNzIHRvIGEgVWlTZWxlY3RvclxuICAgKlxuICAgKiBAcGFyYW0ge0Nzc1BzZXVkb30gY3NzUHNldWRvIENTUyBQc2V1ZG8gY2xhc3NcbiAgICogQHJldHVybnMge3N0cmluZ30gUHNldWRvIHNlbGVjdG9yIHBhcnNlZCBhcyBVaVNlbGVjdG9yXG4gICAqL1xuICBwYXJzZVBzZXVkbyAoY3NzUHNldWRvKSB7XG4gICAgaWYgKGNzc1BzZXVkby52YWx1ZVR5cGUgJiYgY3NzUHNldWRvLnZhbHVlVHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzUHNldWRvLm5hbWV9PSR7Y3NzUHNldWRvLnZhbHVlfScuIGAgK1xuICAgICAgICBgVW5zdXBwb3J0ZWQgY3NzIHBzZXVkbyBjbGFzcyB2YWx1ZSB0eXBlOiAnJHtjc3NQc2V1ZG8udmFsdWVUeXBlfScuIE9ubHkgJ3N0cmluZycgdHlwZSBvciBlbXB0eSBpcyBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHNldWRvTmFtZSA9IGFzc2VydEdldEF0dHJOYW1lKGNzc1BzZXVkbyk7XG5cbiAgICBpZiAoQk9PTEVBTl9BVFRSUy5pbmNsdWRlcyhwc2V1ZG9OYW1lKSkge1xuICAgICAgcmV0dXJuIGAuJHt0b1NuYWtlQ2FzZShwc2V1ZG9OYW1lKX0oJHthc3NlcnRHZXRCb29sKGNzc1BzZXVkbyl9KWA7XG4gICAgfVxuXG4gICAgaWYgKE5VTUVSSUNfQVRUUlMuaW5jbHVkZXMocHNldWRvTmFtZSkpIHtcbiAgICAgIHJldHVybiBgLiR7cHNldWRvTmFtZX0oJHtjc3NQc2V1ZG8udmFsdWV9KWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgcnVsZSB0byBhIFVpU2VsZWN0b3JcbiAgICogQHBhcmFtIHtDc3NSdWxlfSBjc3NSdWxlIENTUyBydWxlIGRlZmluaXRpb25cbiAgICovXG4gIHBhcnNlQ3NzUnVsZSAoY3NzUnVsZSkge1xuICAgIGNvbnN0IHsgbmVzdGluZ09wZXJhdG9yIH0gPSBjc3NSdWxlO1xuICAgIGlmIChuZXN0aW5nT3BlcmF0b3IgJiYgbmVzdGluZ09wZXJhdG9yICE9PSAnICcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7bmVzdGluZ09wZXJhdG9yfScgaXMgbm90IGEgc3VwcG9ydGVkIGNvbWJpbmF0b3IuIGAgK1xuICAgICAgICBgT25seSBjaGlsZCBjb21iaW5hdG9yICg+KSBhbmQgZGVzY2VuZGFudCBjb21iaW5hdG9yIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuXG4gICAgbGV0IHVpQXV0b21hdG9yU2VsZWN0b3IgPSAnbmV3IFVpU2VsZWN0b3IoKSc7XG4gICAgaWYgKGNzc1J1bGUudGFnTmFtZSAmJiBjc3NSdWxlLnRhZ05hbWUgIT09ICcqJykge1xuICAgICAgbGV0IGFuZHJvaWRDbGFzcyA9IFtjc3NSdWxlLnRhZ05hbWVdO1xuICAgICAgaWYgKGNzc1J1bGUuY2xhc3NOYW1lcykge1xuICAgICAgICBmb3IgKGNvbnN0IGNzc0NsYXNzTmFtZXMgb2YgY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICAgICAgYW5kcm9pZENsYXNzLnB1c2goY3NzQ2xhc3NOYW1lcyk7XG4gICAgICAgIH1cbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLmNsYXNzTmFtZShcIiR7YW5kcm9pZENsYXNzLmpvaW4oJy4nKX1cIilgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLmNsYXNzTmFtZU1hdGNoZXMoXCIke2Nzc1J1bGUudGFnTmFtZX1cIilgO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2xhc3NOYW1lTWF0Y2hlcyhcIiR7Y3NzUnVsZS5jbGFzc05hbWVzLmpvaW4oJ1xcXFwuJyl9XCIpYDtcbiAgICB9XG4gICAgaWYgKGNzc1J1bGUuaWQpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5yZXNvdXJjZUlkKFwiJHt0aGlzLmZvcm1hdElkTG9jYXRvcihjc3NSdWxlLmlkKX1cIilgO1xuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5hdHRycykge1xuICAgICAgZm9yIChjb25zdCBhdHRyIG9mIGNzc1J1bGUuYXR0cnMpIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSB0aGlzLnBhcnNlQXR0cihhdHRyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNzc1J1bGUucHNldWRvcykge1xuICAgICAgZm9yIChjb25zdCBwc2V1ZG8gb2YgY3NzUnVsZS5wc2V1ZG9zKSB7XG4gICAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gdGhpcy5wYXJzZVBzZXVkbyhwc2V1ZG8pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5ydWxlKSB7XG4gICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2hpbGRTZWxlY3Rvcigke3RoaXMucGFyc2VDc3NSdWxlKGNzc1J1bGUucnVsZSl9KWA7XG4gICAgfVxuICAgIHJldHVybiB1aUF1dG9tYXRvclNlbGVjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgQ1NTIG9iamVjdCB0byBVaUF1dG9tYXRvcjIgc2VsZWN0b3JcbiAgICogQHBhcmFtIHtDc3NPYmplY3R9IGNzcyBDU1Mgb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgb2JqZWN0IHBhcnNlZCBhcyBhIFVpU2VsZWN0b3JcbiAgICovXG4gIHBhcnNlQ3NzT2JqZWN0IChjc3MpIHtcbiAgICBzd2l0Y2ggKGNzcy50eXBlKSB7XG4gICAgICBjYXNlICdydWxlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NSdWxlKGNzcyk7XG4gICAgICBjYXNlICdydWxlU2V0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NPYmplY3QoY3NzLnJ1bGUpO1xuICAgICAgY2FzZSAnc2VsZWN0b3JzJzpcbiAgICAgICAgcmV0dXJuIGNzcy5zZWxlY3RvcnMubWFwKChzZWxlY3RvcikgPT4gdGhpcy5wYXJzZUNzc09iamVjdChzZWxlY3RvcikpLmpvaW4oJzsgJyk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIFRoaXMgaXMgbmV2ZXIgcmVhY2hhYmxlLCBidXQgaWYgaXQgZXZlciBpcyBkbyB0aGlzLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVpQXV0b21hdG9yIGRvZXMgbm90IHN1cHBvcnQgJyR7Y3NzLnR5cGV9JyBjc3MuIE9ubHkgc3VwcG9ydHMgJ3J1bGUnLCAncnVsZVNldCcsICdzZWxlY3RvcnMnIGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIHNlbGVjdG9yIHRvIGEgVWlBdXRvbWF0b3IyIHNlbGVjdG9yXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgc2VsZWN0b3IgY29udmVydGVkIHRvIGEgVWlTZWxlY3RvclxuICAgKi9cbiAgdG9VaUF1dG9tYXRvclNlbGVjdG9yICgpIHtcbiAgICBsZXQgY3NzT2JqO1xuICAgIHRyeSB7XG4gICAgICBjc3NPYmogPSBwYXJzZXIucGFyc2UodGhpcy5zZWxlY3Rvcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkU2VsZWN0b3JFcnJvcihgSW52YWxpZCBDU1Mgc2VsZWN0b3IgJyR7dGhpcy5zZWxlY3Rvcn0nLiBSZWFzb246ICcke2V9J2ApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NPYmplY3QoY3NzT2JqKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRTZWxlY3RvckVycm9yKGBVbnN1cHBvcnRlZCBDU1Mgc2VsZWN0b3IgJyR7dGhpcy5zZWxlY3Rvcn0nLiBSZWFzb246ICcke2V9J2ApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDc3NDb252ZXJ0ZXI7Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxNQUFNLEdBQUcsSUFBSUMsb0NBQUosRUFBZjtBQUNBRCxNQUFNLENBQUNFLHVCQUFQLENBQStCLEtBQS9CO0FBQ0FGLE1BQU0sQ0FBQ0csd0JBQVAsQ0FBZ0MsR0FBaEMsRUFBcUMsR0FBckMsRUFBMEMsR0FBMUM7QUFDQUgsTUFBTSxDQUFDSSx3QkFBUCxDQUFnQyxHQUFoQyxFQUFxQyxHQUFyQyxFQUEwQyxHQUExQyxFQUErQyxHQUEvQztBQUNBSixNQUFNLENBQUNLLGlCQUFQO0FBRUEsTUFBTUMsV0FBVyxHQUFHLGFBQXBCO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcscUNBQTNCO0FBRUEsTUFBTUMsYUFBYSxHQUFHLENBQ3BCLFdBRG9CLEVBQ1AsU0FETyxFQUNJLFdBREosRUFDaUIsU0FEakIsRUFDNEIsV0FENUIsRUFFcEIsU0FGb0IsRUFFVCxnQkFGUyxFQUVTLFlBRlQsRUFFdUIsVUFGdkIsQ0FBdEI7QUFLQSxNQUFNQyxhQUFhLEdBQUcsQ0FDcEIsT0FEb0IsRUFDWCxVQURXLENB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