verdaccio 5.3.2 → 5.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/CODE_OF_CONDUCT.md +10 -10
  3. package/CONTRIBUTING.md +28 -27
  4. package/README.md +6 -5
  5. package/SECURITY.md +8 -9
  6. package/build/api/debug/index.js +1 -1
  7. package/build/api/endpoint/api/dist-tags.js +4 -4
  8. package/build/api/endpoint/api/package.js +3 -3
  9. package/build/api/endpoint/api/ping.js +1 -1
  10. package/build/api/endpoint/api/publish.js +11 -11
  11. package/build/api/endpoint/api/star.js +5 -5
  12. package/build/api/endpoint/api/stars.js +1 -1
  13. package/build/api/endpoint/api/user.js +19 -9
  14. package/build/api/endpoint/api/v1/index.js +26 -0
  15. package/build/api/endpoint/api/v1/profile.js +13 -5
  16. package/build/api/endpoint/api/v1/search.js +4 -4
  17. package/build/api/endpoint/api/v1/token.js +20 -11
  18. package/build/api/endpoint/api/whoami.js +1 -1
  19. package/build/api/endpoint/index.js +11 -14
  20. package/build/api/index.js +23 -17
  21. package/build/api/middleware.js +6 -6
  22. package/build/api/rate-limiter.js +24 -0
  23. package/build/api/web/api.js +6 -18
  24. package/build/api/web/endpoint/index.js +51 -0
  25. package/build/api/web/endpoint/package.js +16 -11
  26. package/build/api/web/endpoint/search.js +9 -3
  27. package/build/api/web/endpoint/user.js +11 -5
  28. package/build/api/web/html/renderHTML.js +13 -9
  29. package/build/api/web/html/template.js +1 -1
  30. package/build/api/web/index.js +14 -11
  31. package/build/config/env.js +1 -1
  32. package/build/index.js +1 -1
  33. package/build/lib/auth-utils.js +15 -8
  34. package/build/lib/auth.js +7 -17
  35. package/build/lib/bootstrap.js +8 -8
  36. package/build/lib/cli/cli.js +3 -3
  37. package/build/lib/cli/commands/info.js +3 -3
  38. package/build/lib/cli/commands/init.js +3 -3
  39. package/build/lib/cli/commands/version.js +1 -1
  40. package/build/lib/cli/utils.js +3 -3
  41. package/build/lib/config-path.js +3 -3
  42. package/build/lib/config-utils.js +3 -3
  43. package/build/lib/config.js +16 -31
  44. package/build/lib/constants.js +5 -4
  45. package/build/lib/crypto-utils.js +3 -3
  46. package/build/lib/local-storage.js +7 -15
  47. package/build/lib/logger/formatter/index.js +1 -1
  48. package/build/lib/logger/formatter/prettifier.js +3 -3
  49. package/build/lib/logger/levels.js +1 -1
  50. package/build/lib/logger/logger.js +10 -6
  51. package/build/lib/logger/utils.js +1 -1
  52. package/build/lib/metadata-utils.js +3 -3
  53. package/build/lib/notify/index.js +3 -3
  54. package/build/lib/notify/notify-request.js +5 -5
  55. package/build/lib/plugin-loader.js +4 -4
  56. package/build/lib/search.js +2 -6
  57. package/build/lib/storage-utils.js +3 -3
  58. package/build/lib/storage.js +10 -22
  59. package/build/lib/up-storage.js +14 -45
  60. package/build/lib/uplink-util.js +1 -1
  61. package/build/lib/utils.js +32 -14
  62. package/build/utils/user.js +1 -1
  63. package/conf/README.md +3 -3
  64. package/conf/default.yaml +3 -1
  65. package/conf/docker.yaml +3 -1
  66. package/eslintrc.js +92 -92
  67. package/index.js +1 -1
  68. package/package.json +66 -59
  69. package/prettier.config.js +15 -0
  70. package/tsconfig.json +3 -10
  71. package/yarn-plugins/plugin-postinstall.js +10 -10
@@ -10,33 +10,33 @@ exports.removeTarball = removeTarball;
10
10
  exports.unPublishPackage = unPublishPackage;
11
11
  exports.uploadPackageTarball = uploadPackageTarball;
12
12
 
13
- var _path = _interopRequireDefault(require("path"));
13
+ var _debug = _interopRequireDefault(require("debug"));
14
14
 
15
15
  var _lodash = _interopRequireDefault(require("lodash"));
16
16
 
17
- var _debug = _interopRequireDefault(require("debug"));
18
-
19
17
  var _mime = _interopRequireDefault(require("mime"));
20
18
 
21
- var _constants = require("../../../lib/constants");
19
+ var _path = _interopRequireDefault(require("path"));
22
20
 
23
- var _utils = require("../../../lib/utils");
21
+ var _constants = require("../../../lib/constants");
24
22
 
25
- var _middleware = require("../../middleware");
23
+ var _logger = require("../../../lib/logger");
26
24
 
27
25
  var _notify = require("../../../lib/notify");
28
26
 
29
- var _logger = require("../../../lib/logger");
30
-
31
27
  var _storageUtils = require("../../../lib/storage-utils");
32
28
 
29
+ var _utils = require("../../../lib/utils");
30
+
31
+ var _middleware = require("../../middleware");
32
+
33
33
  var _star = _interopRequireDefault(require("./star"));
34
34
 
35
35
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
36
36
 
37
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
37
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
38
38
 
39
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
39
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
40
40
 
41
41
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
42
42
 
@@ -388,4 +388,4 @@ function uploadPackageTarball(storage) {
388
388
  });
389
389
  };
390
390
  }
391
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3B1Ymxpc2gudHMiXSwibmFtZXMiOlsiZGVidWciLCJwdWJsaXNoIiwicm91dGVyIiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJjYW4iLCJwdXQiLCJtaW1lIiwiZ2V0VHlwZSIsImV4cGVjdEpzb24iLCJwdWJsaXNoUGFja2FnZSIsImRlbGV0ZSIsInVuUHVibGlzaFBhY2thZ2UiLCJyZW1vdmVUYXJiYWxsIiwiSEVBREVSUyIsIk9DVEVUX1NUUkVBTSIsInVwbG9hZFBhY2thZ2VUYXJiYWxsIiwiYWRkVmVyc2lvbiIsInN0YXJBcGkiLCJyZXEiLCJyZXMiLCJuZXh0IiwicGFja2FnZU5hbWUiLCJwYXJhbXMiLCJwYWNrYWdlIiwiY3JlYXRlVGFyYmFsbCIsImZpbGVuYW1lIiwiZGF0YSIsImNiIiwic3RyZWFtIiwiYWRkVGFyYmFsbCIsIm9uIiwiZXJyIiwiZW5kIiwiQnVmZmVyIiwiZnJvbSIsImRvbmUiLCJjcmVhdGVWZXJzaW9uIiwidmVyc2lvbiIsIm1ldGFkYXRhIiwiYWRkVGFncyIsInRhZ3MiLCJtZXJnZVRhZ3MiLCJhZnRlckNoYW5nZSIsImVycm9yIiwib2tNZXNzYWdlIiwibWV0YWRhdGFDb3B5IiwiX2F0dGFjaG1lbnRzIiwidmVyc2lvbnMiLCJfIiwiaXNOaWwiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJDUkVBVEVEIiwib2siLCJzdWNjZXNzIiwiaXNJbnZhbGlkQm9keUZvcm1hdCIsImxvZ2dlciIsImluZm8iLCJFcnJvckNvZGUiLCJnZXRCYWRSZXF1ZXN0IiwiQVBJX0VSUk9SIiwiVU5TVVBPUlRFRF9SRUdJU1RSWV9DQUxMIiwiQ09ORkxJQ1QiLCJmaXJzdEF0dGFjaG1lbnRLZXkiLCJPYmplY3QiLCJrZXlzIiwiUGF0aCIsImJhc2VuYW1lIiwidmVyc2lvblRvUHVibGlzaCIsInZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCIsInJlYWRtZSIsIlN0cmluZyIsIkRJU1RfVEFHUyIsInJlbW90ZV91c2VyIiwibmFtZSIsImJvZHkiLCJ1c2VycyIsIl9yZXYiLCJpc0VtcHR5IiwicmVtb3RlIiwiYWxsb3dfdW5wdWJsaXNoIiwiY2hhbmdlUGFja2FnZSIsInJldmlzaW9uIiwiQVBJX01FU1NBR0UiLCJQS0dfQ0hBTkdFRCIsImFkZFBhY2thZ2UiLCJQS0dfQ1JFQVRFRCIsImdldEJhZERhdGEiLCJCQURfUEFDS0FHRV9EQVRBIiwicmVtb3ZlUGFja2FnZSIsIlBLR19SRU1PVkVEIiwiVEFSQkFMTF9SRU1PVkVEIiwidGFnIiwiUEtHX1BVQkxJU0hFRCIsInBpcGUiLCJjb21wbGV0ZSIsImFib3J0IiwibG9jYWxzIiwicmVwb3J0X2Vycm9yIiwiVEFSQkFMTF9VUExPQURFRCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxNQUFNQSxLQUFLLEdBQUcsb0JBQVcsbUJBQVgsQ0FBZDs7QUFFZSxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUFpQ0MsSUFBakMsRUFBOENDLE9BQTlDLEVBQXdFQyxNQUF4RSxFQUE4RjtBQUMzRyxRQUFNQyxHQUFHLEdBQUcsdUJBQU1ILElBQU4sQ0FBWjtBQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QU8sQ0FBQzJCLFVBQVIsQ0FBbUJSLFdBQW5CLEVBQWdDSCxHQUFHLENBQUNJLE1BQUosQ0FBV0csUUFBM0MsQ0FBZjtBQUNBUCxJQUFBQSxHQUFHLENBQUM4RSxJQUFKLENBQVNwRSxNQUFULEVBSHdGLENBS3hGOztBQUNBLFFBQUlxRSxRQUFRLEdBQUcsS0FBZjtBQUNBL0UsSUFBQUEsR0FBRyxDQUFDWSxFQUFKLENBQU8sS0FBUCxFQUFjLFlBQVk7QUFDeEJtRSxNQUFBQSxRQUFRLEdBQUcsSUFBWDtBQUNBckUsTUFBQUEsTUFBTSxDQUFDTyxJQUFQO0FBQ0QsS0FIRDtBQUtBakIsSUFBQUEsR0FBRyxDQUFDWSxFQUFKLENBQU8sT0FBUCxFQUFnQixZQUFZO0FBQzFCLFVBQUksQ0FBQ21FLFFBQUwsRUFBZTtBQUNickUsUUFBQUEsTUFBTSxDQUFDc0UsS0FBUDtBQUNEO0FBQ0YsS0FKRDtBQU1BdEUsSUFBQUEsTUFBTSxDQUFDRSxFQUFQLENBQVUsT0FBVixFQUFtQixVQUFVQyxHQUFWLEVBQWU7QUFDaEMsYUFBT1osR0FBRyxDQUFDZ0YsTUFBSixDQUFXQyxZQUFYLENBQXdCckUsR0FBeEIsQ0FBUDtBQUNELEtBRkQ7QUFJQUgsSUFBQUEsTUFBTSxDQUFDRSxFQUFQLENBQVUsU0FBVixFQUFxQixZQUFZO0FBQy9CWCxNQUFBQSxHQUFHLENBQUNpQyxNQUFKLENBQVdDLHVCQUFZQyxPQUF2QjtBQUNBLGFBQU9sQyxJQUFJLENBQUM7QUFDVm1DLFFBQUFBLEVBQUUsRUFBRThCLHVCQUFZZ0I7QUFETixPQUFELENBQVg7QUFHRCxLQUxEO0FBTUQsR0E1QkQ7QUE2QkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lJztcblxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBDb25maWcsIENhbGxiYWNrLCBNZXJnZVRhZ3MsIFZlcnNpb24sIFBhY2thZ2UgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7IEFQSV9NRVNTQUdFLCBIRUFERVJTLCBESVNUX1RBR1MsIEFQSV9FUlJPUiwgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IHZhbGlkYXRlTWV0YWRhdGEsIGlzT2JqZWN0LCBFcnJvckNvZGUsIGhhc0RpZmZPbmVLZXksIGlzUmVsYXRlZFRvRGVwcmVjYXRpb24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgbWVkaWEsIGV4cGVjdEpzb24sIGFsbG93IH0gZnJvbSAnLi4vLi4vbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBub3RpZnkgfSBmcm9tICcuLi8uLi8uLi9saWIvbm90aWZ5JztcblxuaW1wb3J0IHsgSUF1dGgsICRSZXNwb25zZUV4dGVuZCwgJFJlcXVlc3RFeHRlbmQsICROZXh0RnVuY3Rpb25WZXIsIElTdG9yYWdlSGFuZGxlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHsgaXNQdWJsaXNoYWJsZVBhY2thZ2UgfSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZS11dGlscyc7XG5pbXBvcnQgc3RhciBmcm9tICcuL3N0YXInO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzpwdWJsaXNoJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHB1Ymxpc2gocm91dGVyOiBSb3V0ZXIsIGF1dGg6IElBdXRoLCBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgpO1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSAvIHVwZGF0ZSBwYWNrYWdlIC8gdW4vc3RhcnQgYSBwYWNrYWdlXG4gICAqXG4gICAqIFRoZXJlIGFyZSBtdWx0aXBsZXMgc2NlbmFyaW9zIGhlcmUgdG8gYmUgY29uc2lkZXJlZDpcbiAgICpcbiAgICogMS4gUHVibGlzaCBzY2VuYXJpb1xuICAgKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSBjb25zaXN0IG9mIGF0IGxlYXN0IDEgc3RlcCAoUFVUKSB3aXRoIGEgbWV0YWRhdGEgcGF5bG9hZC5cbiAgICogV2hlbiBhIHBhY2thZ2UgaXMgcHVibGlzaGVkLCBhbiBfYXR0YWNobWVudCBwcm9wZXJ0eSBpcyBwcmVzZW50IHRoYXQgY29udGFpbnMgdGhlIGRhdGFcbiAgICogb2YgdGhlIHRhcmJhbGwuXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiBwdWJsaXNoLlxuICAgKlxuICAgKiAgbnBtIGh0dHAgZmV0Y2ggUFVUIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEgOTYyN21zXG4gICAgICBucG0gaW5mbyBsaWZlY3ljbGUgQHNjb3BlL3Rlc3QxQDEuMC4xfnB1Ymxpc2g6IEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIGluZm8gbGlmZWN5Y2xlIEBzY29wZS90ZXN0MUAxLjAuMX5wb3N0cHVibGlzaDogQHNjb3BlL3Rlc3QxQDEuMC4xXG4gICAgICArIEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIHZlcmIgZXhpdCBbIDAsIHRydWUgXVxuICAgKlxuICAgKlxuICAgKiAyLiBVbnB1Ymxpc2ggc2NlbmFyaW9cbiAgICpcbiAgICogVW5wdWJsaXNoIGNvbnNpc3QgaW4gMyBzdGVwcy5cbiAgICogIDEuIFRyeSB0byBmZXRjaCAgbWV0YWRhdGEgLT4gaWYgaXQgZmFpbHMsIHJldHVybiA0MDRcbiAgICogIDIuIENvbXB1dGUgbWV0YWRhdGEgbG9jYWxseSAoY2xpZW50IHNpZGUpIGFuZCBzZW5kIGEgbXV0YXRlIHBheWxvYWQgZXhjbHVkaW5nIHRoZSB2ZXJzaW9uIHRvIGJlIHVucHVibGlzaGVkXG4gICAqICAgIGVnOiBpZiBtZXRhZGF0YSByZWZsZWN0cyAxLjAuMSwgMS4wLjIgYW5kIDEuMC4zLCB0aGUgY29tcHV0ZWQgbWV0YWRhdGEgd29uJ3QgaW5jbHVkZSAxLjAuMy5cbiAgICogIDMuIE9uY2UgdGhlIHNlY29uZCBzdGVwIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZCwgZGVsZXRlIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiAgQWxsIHRoZXNlIHN0ZXBzIGFyZSBjb25zZWN1dGl2ZSBhbmQgcmVxdWlyZWQsIHRoZXJlIGlzIG5vIHRyYW5zYWNpb25zIGhlcmUsIGlmIHN0ZXAgMyBmYWlscywgbWV0YWRhdGEgbWlnaHRcbiAgICogIGdldCBjb3JydXB0ZWQuXG4gICAqXG4gICAqICBOb3RlIHRoZSB1bnB1Ymxpc2ggY2FsbCB3aWxsIHN1ZmZpeCBpbiB0aGUgdXJsIGEgLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCByZXZpc2lvbiBudW1iZXIsIHRoaXMgbm90XG4gICAqICB1c2VkIGludGVybmFsbHkuXG4gICAqXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiB1bnB1Ymxpc2guXG4gICAqXG4gICAqIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTY4MG1zXG4gICAgIG5wbSBodHRwIGZldGNoIFBVVCAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCA5NTY2MDZtcyBhdHRlbXB0ICMyXG4gICAgIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTYwMW1zXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy0vdGVzdDEtMS4wLjMudGd6Ly1yZXYvMTYtZTExYzhkYjI4MmIyZDk5MiAxOW1zXG4gICAqXG4gICAqIDMuIFN0YXIgYSBwYWNrYWdlXG4gICAqXG4gICAqIFBlcm1pc3Npb25zOiBzdGFydCBhIHBhY2thZ2UgZGVwZW5kcyBvZiB0aGUgcHVibGlzaCBhbmQgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCB0aGVyZSBpcyBubyBzcGVjaWZpYyBmbGFnIGZvciBzdGFyIG9yIHVuIHN0YXJ0LlxuICAgKiBUaGUgVVJMIGZvciBzdGFyIGlzIHNpbWlsYXIgdG8gdGhlIHVucHVibGlzaCAoY2hhbmdlIHBhY2thZ2UgZm9ybWF0KVxuICAgKlxuICAgKiBucG0gaGFzIG5vIGVucG9pbnQgZm9yIHN0YXIgYSBwYWNrYWdlLCByYXRoZXIgbXV0YXRlIHRoZSBtZXRhZGF0YSBhbmQgYWN0cyBhcywgdGhlIGRpZmZlcmVuY2UgaXMgdGhlXG4gICAqIHVzZXJzIHByb3BlcnR5IHdoaWNoIGlzIHBhcnQgb2YgdGhlIHBheWxvYWQgYW5kIHRoZSBib2R5IG9ubHkgaW5jbHVkZXNcbiAgICpcbiAgICoge1xuXHRcdCAgXCJfaWRcIjogcGtnTmFtZSxcblx0ICBcdFwiX3JldlwiOiBcIjMtYjBjZGFlZmM5YmRiNzdjOFwiLFxuXHRcdCAgXCJ1c2Vyc1wiOiB7XG5cdFx0ICAgIFt1c2VybmFtZV06IGJvb2xlYW4gdmFsdWUgKHRydWUsIGZhbHNlKVxuXHRcdCAgfVxuXHR9XG4gICAqXG4gICAqL1xuICByb3V0ZXIucHV0KCcvOnBhY2thZ2UvOl9yZXY/LzpyZXZpc2lvbj8nLCBjYW4oJ3B1Ymxpc2gnKSwgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLCBleHBlY3RKc29uLCBwdWJsaXNoUGFja2FnZShzdG9yYWdlLCBjb25maWcsIGF1dGgpKTtcblxuICAvKipcbiAgICogVW4tcHVibGlzaGluZyBhbiBlbnRpcmUgcGFja2FnZS5cbiAgICpcbiAgICogVGhpcyBzY2VuYXJpbyBoYXBwZW5zIHdoZW4gdGhlIGZpcnN0IGNhbGwgZGV0ZWN0IHRoZXJlIGlzIG9ubHkgb25lIHZlcnNpb24gcmVtYWluaW5nXG4gICAqIGluIHRoZSBtZXRhZGF0YSwgdGhlbiB0aGUgY2xpZW50IGRlY2lkZXMgdG8gREVMRVRFIHRoZSByZXNvdXJjZVxuICAgKiBucG0gaHR0cCBmZXRjaCBHRVQgMzA0IGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDEwNzZtcyAoZnJvbSBjYWNoZSlcbiAgICAgbnBtIGh0dHAgZmV0Y2ggREVMRVRFIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEvLXJldi8xOC1kOGViZTMwMjBiZDRhYzljIDIybXNcbiAgICovXG4gIHJvdXRlci5kZWxldGUoJy86cGFja2FnZS8tcmV2LyonLCBjYW4oJ3VucHVibGlzaCcpLCB1blB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2UpKTtcblxuICAvLyByZW1vdmluZyBhIHRhcmJhbGxcbiAgcm91dGVyLmRlbGV0ZSgnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLy1yZXYvOnJldmlzaW9uJywgY2FuKCd1bnB1Ymxpc2gnKSwgY2FuKCdwdWJsaXNoJyksIHJlbW92ZVRhcmJhbGwoc3RvcmFnZSkpO1xuXG4gIC8vIHVwbG9hZGluZyBwYWNrYWdlIHRhcmJhbGxcbiAgcm91dGVyLnB1dCgnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLyonLCBjYW4oJ3B1Ymxpc2gnKSwgbWVkaWEoSEVBREVSUy5PQ1RFVF9TVFJFQU0pLCB1cGxvYWRQYWNrYWdlVGFyYmFsbChzdG9yYWdlKSk7XG5cbiAgLy8gYWRkaW5nIGEgdmVyc2lvblxuICByb3V0ZXIucHV0KCcvOnBhY2thZ2UvOnZlcnNpb24vLXRhZy86dGFnJywgY2FuKCdwdWJsaXNoJyksIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSwgZXhwZWN0SnNvbiwgYWRkVmVyc2lvbihzdG9yYWdlKSk7XG59XG5cbi8qKlxuICogUHVibGlzaCBhIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlciwgY29uZmlnOiBDb25maWcsIGF1dGg6IElBdXRoKTogYW55IHtcbiAgY29uc3Qgc3RhckFwaSA9IHN0YXIoc3RvcmFnZSk7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBkZWJ1ZygncHVibGlzaGluZyBvciB1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAvKipcbiAgICAgKiBXcml0ZSB0YXJiYWxsIG9mIHN0cmVhbSBkYXRhIGZyb20gcGFja2FnZSBjbGllbnRzLlxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZVRhcmJhbGwgPSBmdW5jdGlvbiAoZmlsZW5hbWU6IHN0cmluZywgZGF0YSwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBzdG9yYWdlLmFkZFRhcmJhbGwocGFja2FnZU5hbWUsIGZpbGVuYW1lKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNiKGVycik7XG4gICAgICB9KTtcbiAgICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2IoKTtcbiAgICAgIH0pO1xuICAgICAgLy8gdGhpcyBpcyBkdW1iIGFuZCBtZW1vcnktY29uc3VtaW5nLCBidXQgd2hhdCBjaG9pY2VzIGRvIHdlIGhhdmU/XG4gICAgICAvLyBmbG93OiB3ZSBuZWVkIGZpcnN0IHJlZmFjdG9yIHRoaXMgZmlsZSBiZWZvcmUgZGVjaWRlcyB3aGljaCB0eXBlIHVzZSBoZXJlXG4gICAgICBzdHJlYW0uZW5kKEJ1ZmZlci5mcm9tKGRhdGEuZGF0YSwgJ2Jhc2U2NCcpKTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgcGFja2FnZSB2ZXJzaW9uIGluIHN0b3JhZ2VcbiAgICAgKi9cbiAgICBjb25zdCBjcmVhdGVWZXJzaW9uID0gZnVuY3Rpb24gKHZlcnNpb246IHN0cmluZywgbWV0YWRhdGE6IFZlcnNpb24sIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCBtZXRhZGF0YSwgbnVsbCwgY2IpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbmV3IHRhZ3MgaW4gc3RvcmFnZVxuICAgICAqL1xuICAgIGNvbnN0IGFkZFRhZ3MgPSBmdW5jdGlvbiAodGFnczogTWVyZ2VUYWdzLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHBhY2thZ2VOYW1lLCB0YWdzLCBjYik7XG4gICAgfTtcblxuICAgIGNvbnN0IGFmdGVyQ2hhbmdlID0gZnVuY3Rpb24gKGVycm9yLCBva01lc3NhZ2UsIG1ldGFkYXRhKTogdm9pZCB7XG4gICAgICBjb25zdCBtZXRhZGF0YUNvcHk6IFBhY2thZ2UgPSB7IC4uLm1ldGFkYXRhIH07XG5cbiAgICAgIGNvbnN0IHsgX2F0dGFjaG1lbnRzLCB2ZXJzaW9ucyB9ID0gbWV0YWRhdGFDb3B5O1xuXG4gICAgICAvLyBgbnBtIHN0YXJgIHdvdWxkbid0IGhhdmUgYXR0YWNobWVudHNcbiAgICAgIC8vIGFuZCBgbnBtIGRlcHJlY2F0ZWAgd291bGQgaGF2ZSBhdHRhY2htZW50cyBhcyBhIGVtcHR5IG9iamVjdCwgaS5lIHt9XG4gICAgICBpZiAoXy5pc05pbChfYXR0YWNobWVudHMpIHx8IEpTT04uc3RyaW5naWZ5KF9hdHRhY2htZW50cykgPT09ICd7fScpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogb2tNZXNzYWdlLFxuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBucG0tcmVnaXN0cnktY2xpZW50IDAuMysgZW1iZWRzIHRhcmJhbGwgaW50byB0aGUganNvbiB1cGxvYWRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3MvbnBtLXJlZ2lzdHJ5LWNsaWVudC9jb21taXQvZTlmYmViOGI2N2YyNDkzOTRmNzM1Yzc0ZWYxMWZlNDcyMGQ0NmNhMFxuICAgICAgLy8gaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL3JsaWR3a2Evc2lub3BpYS9pc3N1ZXMvMzEsIGRlYWxpbmcgd2l0aCBpdCBoZXJlOlxuICAgICAgY29uc3QgaXNJbnZhbGlkQm9keUZvcm1hdCA9IGlzT2JqZWN0KF9hdHRhY2htZW50cykgPT09IGZhbHNlIHx8IGhhc0RpZmZPbmVLZXkoX2F0dGFjaG1lbnRzKSB8fCBpc09iamVjdCh2ZXJzaW9ucykgPT09IGZhbHNlIHx8IGhhc0RpZmZPbmVLZXkodmVyc2lvbnMpO1xuXG4gICAgICBpZiAoaXNJbnZhbGlkQm9keUZvcm1hdCkge1xuICAgICAgICAvLyBucG0gaXMgZG9pbmcgc29tZXRoaW5nIHN0cmFuZ2UgYWdhaW5cbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIGluIG5vcm1hbCBjaXJjdW1zdGFuY2VzLCByZXBvcnQgaXQgYXMgYSBidWdcbiAgICAgICAgbG9nZ2VyLmluZm8oeyBwYWNrYWdlTmFtZSB9LCBgd3JvbmcgcGFja2FnZSBmb3JtYXQgb24gcHVibGlzaCBhIHBhY2thZ2UgQHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoQVBJX0VSUk9SLlVOU1VQT1JURURfUkVHSVNUUllfQ0FMTCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzICE9PSBIVFRQX1NUQVRVUy5DT05GTElDVCkge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQgZG9jdW1lbnQgaXMgZWl0aGVyIGNyZWF0ZWQgb3IgZXhpc3RlZCBiZWZvcmVcbiAgICAgIGNvbnN0IFtmaXJzdEF0dGFjaG1lbnRLZXldID0gT2JqZWN0LmtleXMoX2F0dGFjaG1lbnRzKTtcblxuICAgICAgY3JlYXRlVGFyYmFsbChQYXRoLmJhc2VuYW1lKGZpcnN0QXR0YWNobWVudEtleSksIF9hdHRhY2htZW50c1tmaXJzdEF0dGFjaG1lbnRLZXldLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmVyc2lvblRvUHVibGlzaCA9IE9iamVjdC5rZXlzKHZlcnNpb25zKVswXTtcbiAgICAgICAgY29uc3QgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoID0gdmVyc2lvbnNbdmVyc2lvblRvUHVibGlzaF07XG5cbiAgICAgICAgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSA9IF8uaXNOaWwodmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSkgPT09IGZhbHNlID8gU3RyaW5nKHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUpIDogJyc7XG5cbiAgICAgICAgY3JlYXRlVmVyc2lvbih2ZXJzaW9uVG9QdWJsaXNoLCB2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFkZFRhZ3MobWV0YWRhdGFDb3B5W0RJU1RfVEFHU10sIGFzeW5jIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgbm90aWZ5KG1ldGFkYXRhQ29weSwgY29uZmlnLCByZXEucmVtb3RlX3VzZXIsIGAke21ldGFkYXRhQ29weS5uYW1lfUAke3ZlcnNpb25Ub1B1Ymxpc2h9YCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBlcnJvciB9LCAnbm90aWZ5IGJhdGNoIHNlcnZpY2UgaGFzIGZhaWxlZDogQHtlcnJvcn0nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KHsgb2s6IG9rTWVzc2FnZSwgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgaWYgKGlzUHVibGlzaGFibGVQYWNrYWdlKHJlcS5ib2R5KSA9PT0gZmFsc2UgJiYgaXNPYmplY3QocmVxLmJvZHkudXNlcnMpKSB7XG4gICAgICByZXR1cm4gc3RhckFwaShyZXEsIHJlcywgbmV4dCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gdmFsaWRhdGVNZXRhZGF0YShyZXEuYm9keSwgcGFja2FnZU5hbWUpO1xuICAgICAgLy8gY2hlY2sgX2F0dGFjaG1lbnRzIHRvIGRpc3Rpbmd1aXNoIHB1Ymxpc2ggYW5kIGRlcHJlY2F0ZVxuICAgICAgaWYgKHJlcS5wYXJhbXMuX3JldiB8fCAoaXNSZWxhdGVkVG9EZXByZWNhdGlvbihyZXEuYm9keSkgJiYgXy5pc0VtcHR5KHJlcS5ib2R5Ll9hdHRhY2htZW50cykpKSB7XG4gICAgICAgIGRlYnVnKCd1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgLy8gd2UgY2hlY2sgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCBhbiB1cGRhdGUgaXMgYmFzaWNhbGx5IHJlbW92ZSB2ZXJzaW9uc1xuICAgICAgICBjb25zdCByZW1vdGUgPSByZXEucmVtb3RlX3VzZXI7XG4gICAgICAgIGF1dGguYWxsb3dfdW5wdWJsaXNoKHsgcGFja2FnZU5hbWUgfSwgcmVtb3RlLCAoZXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lIH0sIGBub3QgYWxsb3dlZCB0byB1bnB1Ymxpc2ggYSB2ZXJzaW9uIGZvciBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdG9yYWdlLmNoYW5nZVBhY2thZ2UocGFja2FnZU5hbWUsIG1ldGFkYXRhLCByZXEucGFyYW1zLnJldmlzaW9uLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ0hBTkdFRCwgbWV0YWRhdGEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYnVnKCdhZGRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIHN0b3JhZ2UuYWRkUGFja2FnZShwYWNrYWdlTmFtZSwgbWV0YWRhdGEsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ1JFQVRFRCwgbWV0YWRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKHsgcGFja2FnZU5hbWUgfSwgJ2Vycm9yIG9uIHB1Ymxpc2gsIGJhZCBwYWNrYWdlIGRhdGEgZm9yIEB7cGFja2FnZU5hbWV9Jyk7XG4gICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkRGF0YShBUElfRVJST1IuQkFEX1BBQ0tBR0VfREFUQSkpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiB1bi1wdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5QdWJsaXNoUGFja2FnZShzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCd1bnB1Ymxpc2hpbmcgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgc3RvcmFnZS5yZW1vdmVQYWNrYWdlKHBhY2thZ2VOYW1lLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuUEtHX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVsZXRlIHRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRhcmJhbGwoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBjb25zdCB7IGZpbGVuYW1lLCByZXZpc2lvbiB9ID0gcmVxLnBhcmFtcztcbiAgICBkZWJ1ZygncmVtb3ZpbmcgYSB0YXJiYWxsIGZvciAlby0lby0lbycsIHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24pO1xuICAgIHN0b3JhZ2UucmVtb3ZlVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgZGVidWcoJ3N1Y2Nlc3MgcmVtb3ZlIHRhcmJhbGwgZm9yICVvLSVvLSVvJywgcGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbik7XG4gICAgICByZXR1cm4gbmV4dCh7IG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG4vKipcbiAqIEFkZHMgYSBuZXcgdmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkVmVyc2lvbihzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmVyc2lvbiwgdGFnIH0gPSByZXEucGFyYW1zO1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCByZXEuYm9keSwgdGFnLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5QS0dfUFVCTElTSEVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogdXBsb2FkUGFja2FnZVRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwbG9hZFBhY2thZ2VUYXJiYWxsKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5hZGRUYXJiYWxsKHBhY2thZ2VOYW1lLCByZXEucGFyYW1zLmZpbGVuYW1lKTtcbiAgICByZXEucGlwZShzdHJlYW0pO1xuXG4gICAgLy8gY2hlY2tpbmcgaWYgZW5kIGV2ZW50IGNhbWUgYmVmb3JlIGNsb3NpbmdcbiAgICBsZXQgY29tcGxldGUgPSBmYWxzZTtcbiAgICByZXEub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfSk7XG5cbiAgICByZXEub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb21wbGV0ZSkge1xuICAgICAgICBzdHJlYW0uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1VQTE9BREVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG4iXX0=
391
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3B1Ymxpc2gudHMiXSwibmFtZXMiOlsiZGVidWciLCJwdWJsaXNoIiwicm91dGVyIiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJjYW4iLCJwdXQiLCJtaW1lIiwiZ2V0VHlwZSIsImV4cGVjdEpzb24iLCJwdWJsaXNoUGFja2FnZSIsImRlbGV0ZSIsInVuUHVibGlzaFBhY2thZ2UiLCJyZW1vdmVUYXJiYWxsIiwiSEVBREVSUyIsIk9DVEVUX1NUUkVBTSIsInVwbG9hZFBhY2thZ2VUYXJiYWxsIiwiYWRkVmVyc2lvbiIsInN0YXJBcGkiLCJyZXEiLCJyZXMiLCJuZXh0IiwicGFja2FnZU5hbWUiLCJwYXJhbXMiLCJwYWNrYWdlIiwiY3JlYXRlVGFyYmFsbCIsImZpbGVuYW1lIiwiZGF0YSIsImNiIiwic3RyZWFtIiwiYWRkVGFyYmFsbCIsIm9uIiwiZXJyIiwiZW5kIiwiQnVmZmVyIiwiZnJvbSIsImRvbmUiLCJjcmVhdGVWZXJzaW9uIiwidmVyc2lvbiIsIm1ldGFkYXRhIiwiYWRkVGFncyIsInRhZ3MiLCJtZXJnZVRhZ3MiLCJhZnRlckNoYW5nZSIsImVycm9yIiwib2tNZXNzYWdlIiwibWV0YWRhdGFDb3B5IiwiX2F0dGFjaG1lbnRzIiwidmVyc2lvbnMiLCJfIiwiaXNOaWwiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJDUkVBVEVEIiwib2siLCJzdWNjZXNzIiwiaXNJbnZhbGlkQm9keUZvcm1hdCIsImxvZ2dlciIsImluZm8iLCJFcnJvckNvZGUiLCJnZXRCYWRSZXF1ZXN0IiwiQVBJX0VSUk9SIiwiVU5TVVBPUlRFRF9SRUdJU1RSWV9DQUxMIiwiQ09ORkxJQ1QiLCJmaXJzdEF0dGFjaG1lbnRLZXkiLCJPYmplY3QiLCJrZXlzIiwiUGF0aCIsImJhc2VuYW1lIiwidmVyc2lvblRvUHVibGlzaCIsInZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCIsInJlYWRtZSIsIlN0cmluZyIsIkRJU1RfVEFHUyIsInJlbW90ZV91c2VyIiwibmFtZSIsImJvZHkiLCJ1c2VycyIsIl9yZXYiLCJpc0VtcHR5IiwicmVtb3RlIiwiYWxsb3dfdW5wdWJsaXNoIiwiY2hhbmdlUGFja2FnZSIsInJldmlzaW9uIiwiQVBJX01FU1NBR0UiLCJQS0dfQ0hBTkdFRCIsImFkZFBhY2thZ2UiLCJQS0dfQ1JFQVRFRCIsImdldEJhZERhdGEiLCJCQURfUEFDS0FHRV9EQVRBIiwicmVtb3ZlUGFja2FnZSIsIlBLR19SRU1PVkVEIiwiVEFSQkFMTF9SRU1PVkVEIiwidGFnIiwiUEtHX1BVQkxJU0hFRCIsInBpcGUiLCJjb21wbGV0ZSIsImFib3J0IiwibG9jYWxzIiwicmVwb3J0X2Vycm9yIiwiVEFSQkFMTF9VUExPQURFRCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBS0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxNQUFNQSxLQUFLLEdBQUcsb0JBQVcsbUJBQVgsQ0FBZDs7QUFFZSxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUFpQ0MsSUFBakMsRUFBOENDLE9BQTlDLEVBQXdFQyxNQUF4RSxFQUE4RjtBQUMzRyxRQUFNQyxHQUFHLEdBQUcsdUJBQU1ILElBQU4sQ0FBWjtBQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QU8sQ0FBQzJCLFVBQVIsQ0FBbUJSLFdBQW5CLEVBQWdDSCxHQUFHLENBQUNJLE1BQUosQ0FBV0csUUFBM0MsQ0FBZjtBQUNBUCxJQUFBQSxHQUFHLENBQUM4RSxJQUFKLENBQVNwRSxNQUFULEVBSHdGLENBS3hGOztBQUNBLFFBQUlxRSxRQUFRLEdBQUcsS0FBZjtBQUNBL0UsSUFBQUEsR0FBRyxDQUFDWSxFQUFKLENBQU8sS0FBUCxFQUFjLFlBQVk7QUFDeEJtRSxNQUFBQSxRQUFRLEdBQUcsSUFBWDtBQUNBckUsTUFBQUEsTUFBTSxDQUFDTyxJQUFQO0FBQ0QsS0FIRDtBQUtBakIsSUFBQUEsR0FBRyxDQUFDWSxFQUFKLENBQU8sT0FBUCxFQUFnQixZQUFZO0FBQzFCLFVBQUksQ0FBQ21FLFFBQUwsRUFBZTtBQUNickUsUUFBQUEsTUFBTSxDQUFDc0UsS0FBUDtBQUNEO0FBQ0YsS0FKRDtBQU1BdEUsSUFBQUEsTUFBTSxDQUFDRSxFQUFQLENBQVUsT0FBVixFQUFtQixVQUFVQyxHQUFWLEVBQWU7QUFDaEMsYUFBT1osR0FBRyxDQUFDZ0YsTUFBSixDQUFXQyxZQUFYLENBQXdCckUsR0FBeEIsQ0FBUDtBQUNELEtBRkQ7QUFJQUgsSUFBQUEsTUFBTSxDQUFDRSxFQUFQLENBQVUsU0FBVixFQUFxQixZQUFZO0FBQy9CWCxNQUFBQSxHQUFHLENBQUNpQyxNQUFKLENBQVdDLHVCQUFZQyxPQUF2QjtBQUNBLGFBQU9sQyxJQUFJLENBQUM7QUFDVm1DLFFBQUFBLEVBQUUsRUFBRThCLHVCQUFZZ0I7QUFETixPQUFELENBQVg7QUFHRCxLQUxEO0FBTUQsR0E1QkQ7QUE2QkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lJztcbmltcG9ydCBQYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyBDYWxsYmFjaywgQ29uZmlnLCBNZXJnZVRhZ3MsIFBhY2thZ2UsIFZlcnNpb24gfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCwgSUF1dGgsIElTdG9yYWdlSGFuZGxlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgQVBJX01FU1NBR0UsIERJU1RfVEFHUywgSEVBREVSUywgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHsgbm90aWZ5IH0gZnJvbSAnLi4vLi4vLi4vbGliL25vdGlmeSc7XG5pbXBvcnQgeyBpc1B1Ymxpc2hhYmxlUGFja2FnZSB9IGZyb20gJy4uLy4uLy4uL2xpYi9zdG9yYWdlLXV0aWxzJztcbmltcG9ydCB7IEVycm9yQ29kZSwgaGFzRGlmZk9uZUtleSwgaXNPYmplY3QsIGlzUmVsYXRlZFRvRGVwcmVjYXRpb24sIHZhbGlkYXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgYWxsb3csIGV4cGVjdEpzb24sIG1lZGlhIH0gZnJvbSAnLi4vLi4vbWlkZGxld2FyZSc7XG5pbXBvcnQgc3RhciBmcm9tICcuL3N0YXInO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzpwdWJsaXNoJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHB1Ymxpc2gocm91dGVyOiBSb3V0ZXIsIGF1dGg6IElBdXRoLCBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgpO1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSAvIHVwZGF0ZSBwYWNrYWdlIC8gdW4vc3RhcnQgYSBwYWNrYWdlXG4gICAqXG4gICAqIFRoZXJlIGFyZSBtdWx0aXBsZXMgc2NlbmFyaW9zIGhlcmUgdG8gYmUgY29uc2lkZXJlZDpcbiAgICpcbiAgICogMS4gUHVibGlzaCBzY2VuYXJpb1xuICAgKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSBjb25zaXN0IG9mIGF0IGxlYXN0IDEgc3RlcCAoUFVUKSB3aXRoIGEgbWV0YWRhdGEgcGF5bG9hZC5cbiAgICogV2hlbiBhIHBhY2thZ2UgaXMgcHVibGlzaGVkLCBhbiBfYXR0YWNobWVudCBwcm9wZXJ0eSBpcyBwcmVzZW50IHRoYXQgY29udGFpbnMgdGhlIGRhdGFcbiAgICogb2YgdGhlIHRhcmJhbGwuXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiBwdWJsaXNoLlxuICAgKlxuICAgKiAgbnBtIGh0dHAgZmV0Y2ggUFVUIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEgOTYyN21zXG4gICAgICBucG0gaW5mbyBsaWZlY3ljbGUgQHNjb3BlL3Rlc3QxQDEuMC4xfnB1Ymxpc2g6IEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIGluZm8gbGlmZWN5Y2xlIEBzY29wZS90ZXN0MUAxLjAuMX5wb3N0cHVibGlzaDogQHNjb3BlL3Rlc3QxQDEuMC4xXG4gICAgICArIEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIHZlcmIgZXhpdCBbIDAsIHRydWUgXVxuICAgKlxuICAgKlxuICAgKiAyLiBVbnB1Ymxpc2ggc2NlbmFyaW9cbiAgICpcbiAgICogVW5wdWJsaXNoIGNvbnNpc3QgaW4gMyBzdGVwcy5cbiAgICogIDEuIFRyeSB0byBmZXRjaCAgbWV0YWRhdGEgLT4gaWYgaXQgZmFpbHMsIHJldHVybiA0MDRcbiAgICogIDIuIENvbXB1dGUgbWV0YWRhdGEgbG9jYWxseSAoY2xpZW50IHNpZGUpIGFuZCBzZW5kIGEgbXV0YXRlIHBheWxvYWQgZXhjbHVkaW5nIHRoZSB2ZXJzaW9uIHRvIGJlIHVucHVibGlzaGVkXG4gICAqICAgIGVnOiBpZiBtZXRhZGF0YSByZWZsZWN0cyAxLjAuMSwgMS4wLjIgYW5kIDEuMC4zLCB0aGUgY29tcHV0ZWQgbWV0YWRhdGEgd29uJ3QgaW5jbHVkZSAxLjAuMy5cbiAgICogIDMuIE9uY2UgdGhlIHNlY29uZCBzdGVwIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZCwgZGVsZXRlIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiAgQWxsIHRoZXNlIHN0ZXBzIGFyZSBjb25zZWN1dGl2ZSBhbmQgcmVxdWlyZWQsIHRoZXJlIGlzIG5vIHRyYW5zYWNpb25zIGhlcmUsIGlmIHN0ZXAgMyBmYWlscywgbWV0YWRhdGEgbWlnaHRcbiAgICogIGdldCBjb3JydXB0ZWQuXG4gICAqXG4gICAqICBOb3RlIHRoZSB1bnB1Ymxpc2ggY2FsbCB3aWxsIHN1ZmZpeCBpbiB0aGUgdXJsIGEgLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCByZXZpc2lvbiBudW1iZXIsIHRoaXMgbm90XG4gICAqICB1c2VkIGludGVybmFsbHkuXG4gICAqXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiB1bnB1Ymxpc2guXG4gICAqXG4gICAqIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTY4MG1zXG4gICAgIG5wbSBodHRwIGZldGNoIFBVVCAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCA5NTY2MDZtcyBhdHRlbXB0ICMyXG4gICAgIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTYwMW1zXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy0vdGVzdDEtMS4wLjMudGd6Ly1yZXYvMTYtZTExYzhkYjI4MmIyZDk5MiAxOW1zXG4gICAqXG4gICAqIDMuIFN0YXIgYSBwYWNrYWdlXG4gICAqXG4gICAqIFBlcm1pc3Npb25zOiBzdGFydCBhIHBhY2thZ2UgZGVwZW5kcyBvZiB0aGUgcHVibGlzaCBhbmQgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCB0aGVyZSBpcyBubyBzcGVjaWZpYyBmbGFnIGZvciBzdGFyIG9yIHVuIHN0YXJ0LlxuICAgKiBUaGUgVVJMIGZvciBzdGFyIGlzIHNpbWlsYXIgdG8gdGhlIHVucHVibGlzaCAoY2hhbmdlIHBhY2thZ2UgZm9ybWF0KVxuICAgKlxuICAgKiBucG0gaGFzIG5vIGVucG9pbnQgZm9yIHN0YXIgYSBwYWNrYWdlLCByYXRoZXIgbXV0YXRlIHRoZSBtZXRhZGF0YSBhbmQgYWN0cyBhcywgdGhlIGRpZmZlcmVuY2UgaXMgdGhlXG4gICAqIHVzZXJzIHByb3BlcnR5IHdoaWNoIGlzIHBhcnQgb2YgdGhlIHBheWxvYWQgYW5kIHRoZSBib2R5IG9ubHkgaW5jbHVkZXNcbiAgICpcbiAgICoge1xuXHRcdCAgXCJfaWRcIjogcGtnTmFtZSxcblx0ICBcdFwiX3JldlwiOiBcIjMtYjBjZGFlZmM5YmRiNzdjOFwiLFxuXHRcdCAgXCJ1c2Vyc1wiOiB7XG5cdFx0ICAgIFt1c2VybmFtZV06IGJvb2xlYW4gdmFsdWUgKHRydWUsIGZhbHNlKVxuXHRcdCAgfVxuXHR9XG4gICAqXG4gICAqL1xuICByb3V0ZXIucHV0KCcvOnBhY2thZ2UvOl9yZXY/LzpyZXZpc2lvbj8nLCBjYW4oJ3B1Ymxpc2gnKSwgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLCBleHBlY3RKc29uLCBwdWJsaXNoUGFja2FnZShzdG9yYWdlLCBjb25maWcsIGF1dGgpKTtcblxuICAvKipcbiAgICogVW4tcHVibGlzaGluZyBhbiBlbnRpcmUgcGFja2FnZS5cbiAgICpcbiAgICogVGhpcyBzY2VuYXJpbyBoYXBwZW5zIHdoZW4gdGhlIGZpcnN0IGNhbGwgZGV0ZWN0IHRoZXJlIGlzIG9ubHkgb25lIHZlcnNpb24gcmVtYWluaW5nXG4gICAqIGluIHRoZSBtZXRhZGF0YSwgdGhlbiB0aGUgY2xpZW50IGRlY2lkZXMgdG8gREVMRVRFIHRoZSByZXNvdXJjZVxuICAgKiBucG0gaHR0cCBmZXRjaCBHRVQgMzA0IGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDEwNzZtcyAoZnJvbSBjYWNoZSlcbiAgICAgbnBtIGh0dHAgZmV0Y2ggREVMRVRFIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEvLXJldi8xOC1kOGViZTMwMjBiZDRhYzljIDIybXNcbiAgICovXG4gIHJvdXRlci5kZWxldGUoJy86cGFja2FnZS8tcmV2LyonLCBjYW4oJ3VucHVibGlzaCcpLCB1blB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2UpKTtcblxuICAvLyByZW1vdmluZyBhIHRhcmJhbGxcbiAgcm91dGVyLmRlbGV0ZSgnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLy1yZXYvOnJldmlzaW9uJywgY2FuKCd1bnB1Ymxpc2gnKSwgY2FuKCdwdWJsaXNoJyksIHJlbW92ZVRhcmJhbGwoc3RvcmFnZSkpO1xuXG4gIC8vIHVwbG9hZGluZyBwYWNrYWdlIHRhcmJhbGxcbiAgcm91dGVyLnB1dCgnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLyonLCBjYW4oJ3B1Ymxpc2gnKSwgbWVkaWEoSEVBREVSUy5PQ1RFVF9TVFJFQU0pLCB1cGxvYWRQYWNrYWdlVGFyYmFsbChzdG9yYWdlKSk7XG5cbiAgLy8gYWRkaW5nIGEgdmVyc2lvblxuICByb3V0ZXIucHV0KCcvOnBhY2thZ2UvOnZlcnNpb24vLXRhZy86dGFnJywgY2FuKCdwdWJsaXNoJyksIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSwgZXhwZWN0SnNvbiwgYWRkVmVyc2lvbihzdG9yYWdlKSk7XG59XG5cbi8qKlxuICogUHVibGlzaCBhIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlciwgY29uZmlnOiBDb25maWcsIGF1dGg6IElBdXRoKTogYW55IHtcbiAgY29uc3Qgc3RhckFwaSA9IHN0YXIoc3RvcmFnZSk7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBkZWJ1ZygncHVibGlzaGluZyBvciB1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAvKipcbiAgICAgKiBXcml0ZSB0YXJiYWxsIG9mIHN0cmVhbSBkYXRhIGZyb20gcGFja2FnZSBjbGllbnRzLlxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZVRhcmJhbGwgPSBmdW5jdGlvbiAoZmlsZW5hbWU6IHN0cmluZywgZGF0YSwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBzdG9yYWdlLmFkZFRhcmJhbGwocGFja2FnZU5hbWUsIGZpbGVuYW1lKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNiKGVycik7XG4gICAgICB9KTtcbiAgICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2IoKTtcbiAgICAgIH0pO1xuICAgICAgLy8gdGhpcyBpcyBkdW1iIGFuZCBtZW1vcnktY29uc3VtaW5nLCBidXQgd2hhdCBjaG9pY2VzIGRvIHdlIGhhdmU/XG4gICAgICAvLyBmbG93OiB3ZSBuZWVkIGZpcnN0IHJlZmFjdG9yIHRoaXMgZmlsZSBiZWZvcmUgZGVjaWRlcyB3aGljaCB0eXBlIHVzZSBoZXJlXG4gICAgICBzdHJlYW0uZW5kKEJ1ZmZlci5mcm9tKGRhdGEuZGF0YSwgJ2Jhc2U2NCcpKTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgcGFja2FnZSB2ZXJzaW9uIGluIHN0b3JhZ2VcbiAgICAgKi9cbiAgICBjb25zdCBjcmVhdGVWZXJzaW9uID0gZnVuY3Rpb24gKHZlcnNpb246IHN0cmluZywgbWV0YWRhdGE6IFZlcnNpb24sIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCBtZXRhZGF0YSwgbnVsbCwgY2IpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbmV3IHRhZ3MgaW4gc3RvcmFnZVxuICAgICAqL1xuICAgIGNvbnN0IGFkZFRhZ3MgPSBmdW5jdGlvbiAodGFnczogTWVyZ2VUYWdzLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHBhY2thZ2VOYW1lLCB0YWdzLCBjYik7XG4gICAgfTtcblxuICAgIGNvbnN0IGFmdGVyQ2hhbmdlID0gZnVuY3Rpb24gKGVycm9yLCBva01lc3NhZ2UsIG1ldGFkYXRhKTogdm9pZCB7XG4gICAgICBjb25zdCBtZXRhZGF0YUNvcHk6IFBhY2thZ2UgPSB7IC4uLm1ldGFkYXRhIH07XG5cbiAgICAgIGNvbnN0IHsgX2F0dGFjaG1lbnRzLCB2ZXJzaW9ucyB9ID0gbWV0YWRhdGFDb3B5O1xuXG4gICAgICAvLyBgbnBtIHN0YXJgIHdvdWxkbid0IGhhdmUgYXR0YWNobWVudHNcbiAgICAgIC8vIGFuZCBgbnBtIGRlcHJlY2F0ZWAgd291bGQgaGF2ZSBhdHRhY2htZW50cyBhcyBhIGVtcHR5IG9iamVjdCwgaS5lIHt9XG4gICAgICBpZiAoXy5pc05pbChfYXR0YWNobWVudHMpIHx8IEpTT04uc3RyaW5naWZ5KF9hdHRhY2htZW50cykgPT09ICd7fScpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogb2tNZXNzYWdlLFxuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBucG0tcmVnaXN0cnktY2xpZW50IDAuMysgZW1iZWRzIHRhcmJhbGwgaW50byB0aGUganNvbiB1cGxvYWRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3MvbnBtLXJlZ2lzdHJ5LWNsaWVudC9jb21taXQvZTlmYmViOGI2N2YyNDkzOTRmNzM1Yzc0ZWYxMWZlNDcyMGQ0NmNhMFxuICAgICAgLy8gaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL3JsaWR3a2Evc2lub3BpYS9pc3N1ZXMvMzEsIGRlYWxpbmcgd2l0aCBpdCBoZXJlOlxuICAgICAgY29uc3QgaXNJbnZhbGlkQm9keUZvcm1hdCA9IGlzT2JqZWN0KF9hdHRhY2htZW50cykgPT09IGZhbHNlIHx8IGhhc0RpZmZPbmVLZXkoX2F0dGFjaG1lbnRzKSB8fCBpc09iamVjdCh2ZXJzaW9ucykgPT09IGZhbHNlIHx8IGhhc0RpZmZPbmVLZXkodmVyc2lvbnMpO1xuXG4gICAgICBpZiAoaXNJbnZhbGlkQm9keUZvcm1hdCkge1xuICAgICAgICAvLyBucG0gaXMgZG9pbmcgc29tZXRoaW5nIHN0cmFuZ2UgYWdhaW5cbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIGluIG5vcm1hbCBjaXJjdW1zdGFuY2VzLCByZXBvcnQgaXQgYXMgYSBidWdcbiAgICAgICAgbG9nZ2VyLmluZm8oeyBwYWNrYWdlTmFtZSB9LCBgd3JvbmcgcGFja2FnZSBmb3JtYXQgb24gcHVibGlzaCBhIHBhY2thZ2UgQHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoQVBJX0VSUk9SLlVOU1VQT1JURURfUkVHSVNUUllfQ0FMTCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzICE9PSBIVFRQX1NUQVRVUy5DT05GTElDVCkge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQgZG9jdW1lbnQgaXMgZWl0aGVyIGNyZWF0ZWQgb3IgZXhpc3RlZCBiZWZvcmVcbiAgICAgIGNvbnN0IFtmaXJzdEF0dGFjaG1lbnRLZXldID0gT2JqZWN0LmtleXMoX2F0dGFjaG1lbnRzKTtcblxuICAgICAgY3JlYXRlVGFyYmFsbChQYXRoLmJhc2VuYW1lKGZpcnN0QXR0YWNobWVudEtleSksIF9hdHRhY2htZW50c1tmaXJzdEF0dGFjaG1lbnRLZXldLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmVyc2lvblRvUHVibGlzaCA9IE9iamVjdC5rZXlzKHZlcnNpb25zKVswXTtcbiAgICAgICAgY29uc3QgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoID0gdmVyc2lvbnNbdmVyc2lvblRvUHVibGlzaF07XG5cbiAgICAgICAgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSA9IF8uaXNOaWwodmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSkgPT09IGZhbHNlID8gU3RyaW5nKHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUpIDogJyc7XG5cbiAgICAgICAgY3JlYXRlVmVyc2lvbih2ZXJzaW9uVG9QdWJsaXNoLCB2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFkZFRhZ3MobWV0YWRhdGFDb3B5W0RJU1RfVEFHU10sIGFzeW5jIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgbm90aWZ5KG1ldGFkYXRhQ29weSwgY29uZmlnLCByZXEucmVtb3RlX3VzZXIsIGAke21ldGFkYXRhQ29weS5uYW1lfUAke3ZlcnNpb25Ub1B1Ymxpc2h9YCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBlcnJvciB9LCAnbm90aWZ5IGJhdGNoIHNlcnZpY2UgaGFzIGZhaWxlZDogQHtlcnJvcn0nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KHsgb2s6IG9rTWVzc2FnZSwgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgaWYgKGlzUHVibGlzaGFibGVQYWNrYWdlKHJlcS5ib2R5KSA9PT0gZmFsc2UgJiYgaXNPYmplY3QocmVxLmJvZHkudXNlcnMpKSB7XG4gICAgICByZXR1cm4gc3RhckFwaShyZXEsIHJlcywgbmV4dCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gdmFsaWRhdGVNZXRhZGF0YShyZXEuYm9keSwgcGFja2FnZU5hbWUpO1xuICAgICAgLy8gY2hlY2sgX2F0dGFjaG1lbnRzIHRvIGRpc3Rpbmd1aXNoIHB1Ymxpc2ggYW5kIGRlcHJlY2F0ZVxuICAgICAgaWYgKHJlcS5wYXJhbXMuX3JldiB8fCAoaXNSZWxhdGVkVG9EZXByZWNhdGlvbihyZXEuYm9keSkgJiYgXy5pc0VtcHR5KHJlcS5ib2R5Ll9hdHRhY2htZW50cykpKSB7XG4gICAgICAgIGRlYnVnKCd1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgLy8gd2UgY2hlY2sgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCBhbiB1cGRhdGUgaXMgYmFzaWNhbGx5IHJlbW92ZSB2ZXJzaW9uc1xuICAgICAgICBjb25zdCByZW1vdGUgPSByZXEucmVtb3RlX3VzZXI7XG4gICAgICAgIGF1dGguYWxsb3dfdW5wdWJsaXNoKHsgcGFja2FnZU5hbWUgfSwgcmVtb3RlLCAoZXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lIH0sIGBub3QgYWxsb3dlZCB0byB1bnB1Ymxpc2ggYSB2ZXJzaW9uIGZvciBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdG9yYWdlLmNoYW5nZVBhY2thZ2UocGFja2FnZU5hbWUsIG1ldGFkYXRhLCByZXEucGFyYW1zLnJldmlzaW9uLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ0hBTkdFRCwgbWV0YWRhdGEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYnVnKCdhZGRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIHN0b3JhZ2UuYWRkUGFja2FnZShwYWNrYWdlTmFtZSwgbWV0YWRhdGEsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ1JFQVRFRCwgbWV0YWRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKHsgcGFja2FnZU5hbWUgfSwgJ2Vycm9yIG9uIHB1Ymxpc2gsIGJhZCBwYWNrYWdlIGRhdGEgZm9yIEB7cGFja2FnZU5hbWV9Jyk7XG4gICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkRGF0YShBUElfRVJST1IuQkFEX1BBQ0tBR0VfREFUQSkpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiB1bi1wdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5QdWJsaXNoUGFja2FnZShzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCd1bnB1Ymxpc2hpbmcgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgc3RvcmFnZS5yZW1vdmVQYWNrYWdlKHBhY2thZ2VOYW1lLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuUEtHX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVsZXRlIHRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRhcmJhbGwoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBjb25zdCB7IGZpbGVuYW1lLCByZXZpc2lvbiB9ID0gcmVxLnBhcmFtcztcbiAgICBkZWJ1ZygncmVtb3ZpbmcgYSB0YXJiYWxsIGZvciAlby0lby0lbycsIHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24pO1xuICAgIHN0b3JhZ2UucmVtb3ZlVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgZGVidWcoJ3N1Y2Nlc3MgcmVtb3ZlIHRhcmJhbGwgZm9yICVvLSVvLSVvJywgcGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbik7XG4gICAgICByZXR1cm4gbmV4dCh7IG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG4vKipcbiAqIEFkZHMgYSBuZXcgdmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkVmVyc2lvbihzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmVyc2lvbiwgdGFnIH0gPSByZXEucGFyYW1zO1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCByZXEuYm9keSwgdGFnLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5QS0dfUFVCTElTSEVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogdXBsb2FkUGFja2FnZVRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwbG9hZFBhY2thZ2VUYXJiYWxsKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5hZGRUYXJiYWxsKHBhY2thZ2VOYW1lLCByZXEucGFyYW1zLmZpbGVuYW1lKTtcbiAgICByZXEucGlwZShzdHJlYW0pO1xuXG4gICAgLy8gY2hlY2tpbmcgaWYgZW5kIGV2ZW50IGNhbWUgYmVmb3JlIGNsb3NpbmdcbiAgICBsZXQgY29tcGxldGUgPSBmYWxzZTtcbiAgICByZXEub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfSk7XG5cbiAgICByZXEub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb21wbGV0ZSkge1xuICAgICAgICBzdHJlYW0uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1VQTE9BREVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG4iXX0=
@@ -5,17 +5,17 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = _default;
7
7
 
8
- var _lodash = _interopRequireDefault(require("lodash"));
9
-
10
8
  var _debug = _interopRequireDefault(require("debug"));
11
9
 
10
+ var _lodash = _interopRequireDefault(require("lodash"));
11
+
12
12
  var _constants = require("../../../lib/constants");
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
16
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
16
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
17
 
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
18
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
19
 
20
20
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
21
 
@@ -87,4 +87,4 @@ function _default(storage) {
87
87
  });
88
88
  };
89
89
  }
90
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3N0YXIudHMiXSwibmFtZXMiOlsiZGVidWciLCJzdG9yYWdlIiwidmFsaWRhdGVJbnB1dHMiLCJuZXdVc2VycyIsImxvY2FsVXNlcnMiLCJ1c2VybmFtZSIsImlzU3RhciIsImlzRXhpc3Rsb2NhbFVzZXJzIiwiXyIsImlzTmlsIiwicmVxIiwicmVzIiwibmV4dCIsIm5hbWUiLCJwYXJhbXMiLCJwYWNrYWdlIiwiYWZ0ZXJDaGFuZ2VQYWNrYWdlIiwiZXJyIiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJPSyIsInN1Y2Nlc3MiLCJnZXRQYWNrYWdlIiwiY2FsbGJhY2siLCJpbmZvIiwibmV3U3RhclVzZXIiLCJib2R5IiwiVVNFUlMiLCJyZW1vdGVVc2VybmFtZSIsInJlbW90ZV91c2VyIiwibG9jYWxTdGFyVXNlcnMiLCJPYmplY3QiLCJrZXlzIiwiaW5jbHVkZXMiLCJ1c2VycyIsInJlZHVjZSIsInZhbHVlIiwia2V5IiwiY2hhbmdlUGFja2FnZSIsIl9yZXYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFHQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUlBLE1BQU1BLEtBQUssR0FBRyxvQkFBVyxnQkFBWCxDQUFkOztBQUNlLGtCQUFVQyxPQUFWLEVBQTBHO0FBQ3ZILFFBQU1DLGNBQWMsR0FBRyxDQUFDQyxRQUFELEVBQVdDLFVBQVgsRUFBdUJDLFFBQXZCLEVBQWlDQyxNQUFqQyxLQUFxRDtBQUMxRSxVQUFNQyxpQkFBaUIsR0FBR0MsZ0JBQUVDLEtBQUYsQ0FBUUwsVUFBVSxDQUFDQyxRQUFELENBQWxCLE1BQWtDLEtBQTVEOztBQUNBLFFBQUlDLE1BQU0sSUFBSUMsaUJBQVYsSUFBK0JILFVBQVUsQ0FBQ0MsUUFBRCxDQUE3QyxFQUF5RDtBQUN2RCxhQUFPLElBQVA7QUFDRCxLQUZELE1BRU8sSUFBSSxDQUFDQyxNQUFELElBQVdDLGlCQUFmLEVBQWtDO0FBQ3ZDLGFBQU8sS0FBUDtBQUNELEtBRk0sTUFFQSxJQUFJLENBQUNELE1BQUQsSUFBVyxDQUFDQyxpQkFBaEIsRUFBbUM7QUFDeEMsYUFBTyxJQUFQO0FBQ0Q7O0FBQ0QsV0FBTyxLQUFQO0FBQ0QsR0FWRDs7QUFZQSxTQUFPLENBQUNHLEdBQUQsRUFBc0JDLEdBQXRCLEVBQXFDQyxJQUFyQyxLQUFzRTtBQUMzRSxVQUFNQyxJQUFJLEdBQUdILEdBQUcsQ0FBQ0ksTUFBSixDQUFXQyxPQUF4QjtBQUNBZixJQUFBQSxLQUFLLENBQUMsMkJBQUQsRUFBOEJhLElBQTlCLENBQUw7O0FBQ0EsVUFBTUcsa0JBQWtCLEdBQUcsVUFBVUMsR0FBVixFQUF1QjtBQUNoRCxVQUFJQSxHQUFKLEVBQVM7QUFDUCxlQUFPTCxJQUFJLENBQUNLLEdBQUQsQ0FBWDtBQUNEOztBQUNETixNQUFBQSxHQUFHLENBQUNPLE1BQUosQ0FBV0MsdUJBQVlDLEVBQXZCO0FBQ0FSLE1BQUFBLElBQUksQ0FBQztBQUNIUyxRQUFBQSxPQUFPLEVBQUU7QUFETixPQUFELENBQUo7QUFHRCxLQVJEOztBQVVBcEIsSUFBQUEsT0FBTyxDQUFDcUIsVUFBUixDQUFtQjtBQUNqQlQsTUFBQUEsSUFEaUI7QUFFakJILE1BQUFBLEdBRmlCO0FBR2pCYSxNQUFBQSxRQUFRLEVBQUUsVUFBVU4sR0FBVixFQUFlTyxJQUFmLEVBQXFCO0FBQzdCLFlBQUlQLEdBQUosRUFBUztBQUNQLGlCQUFPTCxJQUFJLENBQUNLLEdBQUQsQ0FBWDtBQUNEOztBQUNELGNBQU1RLFdBQVcsR0FBR2YsR0FBRyxDQUFDZ0IsSUFBSixDQUFTQyxnQkFBVCxDQUFwQjtBQUNBLGNBQU1DLGNBQWMsR0FBR2xCLEdBQUcsQ0FBQ21CLFdBQUosQ0FBZ0JoQixJQUF2QztBQUNBLGNBQU1pQixjQUFjLEdBQUdOLElBQUksQ0FBQ0csZ0JBQUQsQ0FBM0IsQ0FONkIsQ0FPN0I7O0FBQ0EsY0FBTXJCLE1BQU0sR0FBR3lCLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZUCxXQUFaLEVBQXlCUSxRQUF6QixDQUFrQ0wsY0FBbEMsQ0FBZjs7QUFDQSxZQUFJcEIsZ0JBQUVDLEtBQUYsQ0FBUXFCLGNBQVIsTUFBNEIsS0FBNUIsSUFBcUM1QixjQUFjLENBQUN1QixXQUFELEVBQWNLLGNBQWQsRUFBOEJGLGNBQTlCLEVBQThDdEIsTUFBOUMsQ0FBdkQsRUFBOEc7QUFDNUcsaUJBQU9VLGtCQUFrQixFQUF6QjtBQUNEOztBQUNELGNBQU1rQixLQUFLLEdBQUc1QixNQUFNLG1DQUVYd0IsY0FGVztBQUdkLFdBQUNGLGNBQUQsR0FBa0I7QUFISixhQUtoQnBCLGdCQUFFMkIsTUFBRixDQUNFTCxjQURGLEVBRUUsQ0FBQ0ksS0FBRCxFQUFRRSxLQUFSLEVBQWVDLEdBQWYsS0FBdUI7QUFDckIsY0FBSUEsR0FBRyxLQUFLVCxjQUFaLEVBQTRCO0FBQzFCTSxZQUFBQSxLQUFLLENBQUNHLEdBQUQsQ0FBTCxHQUFhRCxLQUFiO0FBQ0Q7O0FBQ0QsaUJBQU9GLEtBQVA7QUFDRCxTQVBILEVBUUUsRUFSRixDQUxKO0FBZUFqQyxRQUFBQSxPQUFPLENBQUNxQyxhQUFSLENBQXNCekIsSUFBdEIsa0NBQWlDVyxJQUFqQztBQUF1Q1UsVUFBQUE7QUFBdkMsWUFBZ0R4QixHQUFHLENBQUNnQixJQUFKLENBQVNhLElBQXpELEVBQStELFVBQVV0QixHQUFWLEVBQWU7QUFDNUVELFVBQUFBLGtCQUFrQixDQUFDQyxHQUFELENBQWxCO0FBQ0QsU0FGRDtBQUdEO0FBakNnQixLQUFuQjtBQW1DRCxHQWhERDtBQWlERCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG5cbmltcG9ydCB7IFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgVVNFUlMsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyAkUmVxdWVzdEV4dGVuZCwgJE5leHRGdW5jdGlvblZlciwgSVN0b3JhZ2VIYW5kbGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvOnN0YXInKTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpOiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcikgPT4gdm9pZCB7XG4gIGNvbnN0IHZhbGlkYXRlSW5wdXRzID0gKG5ld1VzZXJzLCBsb2NhbFVzZXJzLCB1c2VybmFtZSwgaXNTdGFyKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgaXNFeGlzdGxvY2FsVXNlcnMgPSBfLmlzTmlsKGxvY2FsVXNlcnNbdXNlcm5hbWVdKSA9PT0gZmFsc2U7XG4gICAgaWYgKGlzU3RhciAmJiBpc0V4aXN0bG9jYWxVc2VycyAmJiBsb2NhbFVzZXJzW3VzZXJuYW1lXSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghaXNTdGFyICYmIGlzRXhpc3Rsb2NhbFVzZXJzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghaXNTdGFyICYmICFpc0V4aXN0bG9jYWxVc2Vycykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICByZXR1cm4gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkID0+IHtcbiAgICBjb25zdCBuYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCdzdGFycmluZyBhIHBhY2thZ2UgZm9yICVvJywgbmFtZSk7XG4gICAgY29uc3QgYWZ0ZXJDaGFuZ2VQYWNrYWdlID0gZnVuY3Rpb24gKGVycj86IEVycm9yKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgIG5leHQoe1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHN0b3JhZ2UuZ2V0UGFja2FnZSh7XG4gICAgICBuYW1lLFxuICAgICAgcmVxLFxuICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIChlcnIsIGluZm8pIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3U3RhclVzZXIgPSByZXEuYm9keVtVU0VSU107XG4gICAgICAgIGNvbnN0IHJlbW90ZVVzZXJuYW1lID0gcmVxLnJlbW90ZV91c2VyLm5hbWU7XG4gICAgICAgIGNvbnN0IGxvY2FsU3RhclVzZXJzID0gaW5mb1tVU0VSU107XG4gICAgICAgIC8vIENoZWNrIGlzIHN0YXIgb3IgdW5zdGFyXG4gICAgICAgIGNvbnN0IGlzU3RhciA9IE9iamVjdC5rZXlzKG5ld1N0YXJVc2VyKS5pbmNsdWRlcyhyZW1vdGVVc2VybmFtZSk7XG4gICAgICAgIGlmIChfLmlzTmlsKGxvY2FsU3RhclVzZXJzKSA9PT0gZmFsc2UgJiYgdmFsaWRhdGVJbnB1dHMobmV3U3RhclVzZXIsIGxvY2FsU3RhclVzZXJzLCByZW1vdGVVc2VybmFtZSwgaXNTdGFyKSkge1xuICAgICAgICAgIHJldHVybiBhZnRlckNoYW5nZVBhY2thZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1c2VycyA9IGlzU3RhclxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5sb2NhbFN0YXJVc2VycyxcbiAgICAgICAgICAgICAgW3JlbW90ZVVzZXJuYW1lXTogdHJ1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IF8ucmVkdWNlKFxuICAgICAgICAgICAgICBsb2NhbFN0YXJVc2VycyxcbiAgICAgICAgICAgICAgKHVzZXJzLCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gcmVtb3RlVXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgIHVzZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVzZXJzO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcbiAgICAgICAgc3RvcmFnZS5jaGFuZ2VQYWNrYWdlKG5hbWUsIHsgLi4uaW5mbywgdXNlcnMgfSwgcmVxLmJvZHkuX3JldiwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlUGFja2FnZShlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG59XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3N0YXIudHMiXSwibmFtZXMiOlsiZGVidWciLCJzdG9yYWdlIiwidmFsaWRhdGVJbnB1dHMiLCJuZXdVc2VycyIsImxvY2FsVXNlcnMiLCJ1c2VybmFtZSIsImlzU3RhciIsImlzRXhpc3Rsb2NhbFVzZXJzIiwiXyIsImlzTmlsIiwicmVxIiwicmVzIiwibmV4dCIsIm5hbWUiLCJwYXJhbXMiLCJwYWNrYWdlIiwiYWZ0ZXJDaGFuZ2VQYWNrYWdlIiwiZXJyIiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJPSyIsInN1Y2Nlc3MiLCJnZXRQYWNrYWdlIiwiY2FsbGJhY2siLCJpbmZvIiwibmV3U3RhclVzZXIiLCJib2R5IiwiVVNFUlMiLCJyZW1vdGVVc2VybmFtZSIsInJlbW90ZV91c2VyIiwibG9jYWxTdGFyVXNlcnMiLCJPYmplY3QiLCJrZXlzIiwiaW5jbHVkZXMiLCJ1c2VycyIsInJlZHVjZSIsInZhbHVlIiwia2V5IiwiY2hhbmdlUGFja2FnZSIsIl9yZXYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFFQTs7QUFHQTs7Ozs7Ozs7OztBQUdBLE1BQU1BLEtBQUssR0FBRyxvQkFBVyxnQkFBWCxDQUFkOztBQUNlLGtCQUFVQyxPQUFWLEVBQTBHO0FBQ3ZILFFBQU1DLGNBQWMsR0FBRyxDQUFDQyxRQUFELEVBQVdDLFVBQVgsRUFBdUJDLFFBQXZCLEVBQWlDQyxNQUFqQyxLQUFxRDtBQUMxRSxVQUFNQyxpQkFBaUIsR0FBR0MsZ0JBQUVDLEtBQUYsQ0FBUUwsVUFBVSxDQUFDQyxRQUFELENBQWxCLE1BQWtDLEtBQTVEOztBQUNBLFFBQUlDLE1BQU0sSUFBSUMsaUJBQVYsSUFBK0JILFVBQVUsQ0FBQ0MsUUFBRCxDQUE3QyxFQUF5RDtBQUN2RCxhQUFPLElBQVA7QUFDRCxLQUZELE1BRU8sSUFBSSxDQUFDQyxNQUFELElBQVdDLGlCQUFmLEVBQWtDO0FBQ3ZDLGFBQU8sS0FBUDtBQUNELEtBRk0sTUFFQSxJQUFJLENBQUNELE1BQUQsSUFBVyxDQUFDQyxpQkFBaEIsRUFBbUM7QUFDeEMsYUFBTyxJQUFQO0FBQ0Q7O0FBQ0QsV0FBTyxLQUFQO0FBQ0QsR0FWRDs7QUFZQSxTQUFPLENBQUNHLEdBQUQsRUFBc0JDLEdBQXRCLEVBQXFDQyxJQUFyQyxLQUFzRTtBQUMzRSxVQUFNQyxJQUFJLEdBQUdILEdBQUcsQ0FBQ0ksTUFBSixDQUFXQyxPQUF4QjtBQUNBZixJQUFBQSxLQUFLLENBQUMsMkJBQUQsRUFBOEJhLElBQTlCLENBQUw7O0FBQ0EsVUFBTUcsa0JBQWtCLEdBQUcsVUFBVUMsR0FBVixFQUF1QjtBQUNoRCxVQUFJQSxHQUFKLEVBQVM7QUFDUCxlQUFPTCxJQUFJLENBQUNLLEdBQUQsQ0FBWDtBQUNEOztBQUNETixNQUFBQSxHQUFHLENBQUNPLE1BQUosQ0FBV0MsdUJBQVlDLEVBQXZCO0FBQ0FSLE1BQUFBLElBQUksQ0FBQztBQUNIUyxRQUFBQSxPQUFPLEVBQUU7QUFETixPQUFELENBQUo7QUFHRCxLQVJEOztBQVVBcEIsSUFBQUEsT0FBTyxDQUFDcUIsVUFBUixDQUFtQjtBQUNqQlQsTUFBQUEsSUFEaUI7QUFFakJILE1BQUFBLEdBRmlCO0FBR2pCYSxNQUFBQSxRQUFRLEVBQUUsVUFBVU4sR0FBVixFQUFlTyxJQUFmLEVBQXFCO0FBQzdCLFlBQUlQLEdBQUosRUFBUztBQUNQLGlCQUFPTCxJQUFJLENBQUNLLEdBQUQsQ0FBWDtBQUNEOztBQUNELGNBQU1RLFdBQVcsR0FBR2YsR0FBRyxDQUFDZ0IsSUFBSixDQUFTQyxnQkFBVCxDQUFwQjtBQUNBLGNBQU1DLGNBQWMsR0FBR2xCLEdBQUcsQ0FBQ21CLFdBQUosQ0FBZ0JoQixJQUF2QztBQUNBLGNBQU1pQixjQUFjLEdBQUdOLElBQUksQ0FBQ0csZ0JBQUQsQ0FBM0IsQ0FONkIsQ0FPN0I7O0FBQ0EsY0FBTXJCLE1BQU0sR0FBR3lCLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZUCxXQUFaLEVBQXlCUSxRQUF6QixDQUFrQ0wsY0FBbEMsQ0FBZjs7QUFDQSxZQUFJcEIsZ0JBQUVDLEtBQUYsQ0FBUXFCLGNBQVIsTUFBNEIsS0FBNUIsSUFBcUM1QixjQUFjLENBQUN1QixXQUFELEVBQWNLLGNBQWQsRUFBOEJGLGNBQTlCLEVBQThDdEIsTUFBOUMsQ0FBdkQsRUFBOEc7QUFDNUcsaUJBQU9VLGtCQUFrQixFQUF6QjtBQUNEOztBQUNELGNBQU1rQixLQUFLLEdBQUc1QixNQUFNLG1DQUVYd0IsY0FGVztBQUdkLFdBQUNGLGNBQUQsR0FBa0I7QUFISixhQUtoQnBCLGdCQUFFMkIsTUFBRixDQUNFTCxjQURGLEVBRUUsQ0FBQ0ksS0FBRCxFQUFRRSxLQUFSLEVBQWVDLEdBQWYsS0FBdUI7QUFDckIsY0FBSUEsR0FBRyxLQUFLVCxjQUFaLEVBQTRCO0FBQzFCTSxZQUFBQSxLQUFLLENBQUNHLEdBQUQsQ0FBTCxHQUFhRCxLQUFiO0FBQ0Q7O0FBQ0QsaUJBQU9GLEtBQVA7QUFDRCxTQVBILEVBUUUsRUFSRixDQUxKO0FBZUFqQyxRQUFBQSxPQUFPLENBQUNxQyxhQUFSLENBQXNCekIsSUFBdEIsa0NBQWlDVyxJQUFqQztBQUF1Q1UsVUFBQUE7QUFBdkMsWUFBZ0R4QixHQUFHLENBQUNnQixJQUFKLENBQVNhLElBQXpELEVBQStELFVBQVV0QixHQUFWLEVBQWU7QUFDNUVELFVBQUFBLGtCQUFrQixDQUFDQyxHQUFELENBQWxCO0FBQ0QsU0FGRDtBQUdEO0FBakNnQixLQUFuQjtBQW1DRCxHQWhERDtBQWlERCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG5pbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsIElTdG9yYWdlSGFuZGxlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEhUVFBfU1RBVFVTLCBVU0VSUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvOnN0YXInKTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpOiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcikgPT4gdm9pZCB7XG4gIGNvbnN0IHZhbGlkYXRlSW5wdXRzID0gKG5ld1VzZXJzLCBsb2NhbFVzZXJzLCB1c2VybmFtZSwgaXNTdGFyKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgaXNFeGlzdGxvY2FsVXNlcnMgPSBfLmlzTmlsKGxvY2FsVXNlcnNbdXNlcm5hbWVdKSA9PT0gZmFsc2U7XG4gICAgaWYgKGlzU3RhciAmJiBpc0V4aXN0bG9jYWxVc2VycyAmJiBsb2NhbFVzZXJzW3VzZXJuYW1lXSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghaXNTdGFyICYmIGlzRXhpc3Rsb2NhbFVzZXJzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghaXNTdGFyICYmICFpc0V4aXN0bG9jYWxVc2Vycykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICByZXR1cm4gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkID0+IHtcbiAgICBjb25zdCBuYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCdzdGFycmluZyBhIHBhY2thZ2UgZm9yICVvJywgbmFtZSk7XG4gICAgY29uc3QgYWZ0ZXJDaGFuZ2VQYWNrYWdlID0gZnVuY3Rpb24gKGVycj86IEVycm9yKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgIG5leHQoe1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHN0b3JhZ2UuZ2V0UGFja2FnZSh7XG4gICAgICBuYW1lLFxuICAgICAgcmVxLFxuICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIChlcnIsIGluZm8pIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3U3RhclVzZXIgPSByZXEuYm9keVtVU0VSU107XG4gICAgICAgIGNvbnN0IHJlbW90ZVVzZXJuYW1lID0gcmVxLnJlbW90ZV91c2VyLm5hbWU7XG4gICAgICAgIGNvbnN0IGxvY2FsU3RhclVzZXJzID0gaW5mb1tVU0VSU107XG4gICAgICAgIC8vIENoZWNrIGlzIHN0YXIgb3IgdW5zdGFyXG4gICAgICAgIGNvbnN0IGlzU3RhciA9IE9iamVjdC5rZXlzKG5ld1N0YXJVc2VyKS5pbmNsdWRlcyhyZW1vdGVVc2VybmFtZSk7XG4gICAgICAgIGlmIChfLmlzTmlsKGxvY2FsU3RhclVzZXJzKSA9PT0gZmFsc2UgJiYgdmFsaWRhdGVJbnB1dHMobmV3U3RhclVzZXIsIGxvY2FsU3RhclVzZXJzLCByZW1vdGVVc2VybmFtZSwgaXNTdGFyKSkge1xuICAgICAgICAgIHJldHVybiBhZnRlckNoYW5nZVBhY2thZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1c2VycyA9IGlzU3RhclxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5sb2NhbFN0YXJVc2VycyxcbiAgICAgICAgICAgICAgW3JlbW90ZVVzZXJuYW1lXTogdHJ1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IF8ucmVkdWNlKFxuICAgICAgICAgICAgICBsb2NhbFN0YXJVc2VycyxcbiAgICAgICAgICAgICAgKHVzZXJzLCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gcmVtb3RlVXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgIHVzZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVzZXJzO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcbiAgICAgICAgc3RvcmFnZS5jaGFuZ2VQYWNrYWdlKG5hbWUsIHsgLi4uaW5mbywgdXNlcnMgfSwgcmVxLmJvZHkuX3JldiwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlUGFja2FnZShlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG59XG4iXX0=
@@ -33,4 +33,4 @@ function _default(route, storage) {
33
33
  });
34
34
  });
35
35
  }
36
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3N0YXJzLnRzIl0sIm5hbWVzIjpbInJvdXRlIiwic3RvcmFnZSIsImdldCIsInJlcSIsInJlcyIsIm5leHQiLCJyZW1vdGVVc2VybmFtZSIsInJlbW90ZV91c2VyIiwibmFtZSIsImdldExvY2FsRGF0YWJhc2UiLCJlcnIiLCJsb2NhbFBhY2thZ2VzIiwiZmlsdGVyZWRQYWNrYWdlcyIsImZpbHRlciIsImxvY2FsUGFja2FnZSIsIl8iLCJrZXlzIiwiVVNFUlMiLCJpbmNsdWRlcyIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiT0siLCJyb3dzIiwibWFwIiwiZmlsdGVyZWRQYWNrYWdlIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQTs7QUFHQTs7OztBQVBBO0FBQ0E7QUFDQTtBQUNBO0FBU2Usa0JBQVVBLEtBQVYsRUFBeUJDLE9BQXpCLEVBQXlEO0FBQ3RFRCxFQUFBQSxLQUFLLENBQUNFLEdBQU4sQ0FDRSx3QkFERixFQUVFLENBQUNDLEdBQUQsRUFBc0JDLEdBQXRCLEVBQXFDQyxJQUFyQyxLQUFzRTtBQUNwRSxVQUFNQyxjQUFjLEdBQUdILEdBQUcsQ0FBQ0ksV0FBSixDQUFnQkMsSUFBdkM7QUFFQVAsSUFBQUEsT0FBTyxDQUFDUSxnQkFBUixDQUF5QixDQUFDQyxHQUFELEVBQU1DLGFBQU4sS0FBa0M7QUFDekQsVUFBSUQsR0FBSixFQUFTO0FBQ1AsZUFBT0wsSUFBSSxDQUFDSyxHQUFELENBQVg7QUFDRDs7QUFFRCxZQUFNRSxnQkFBMEIsR0FBR0QsYUFBYSxDQUFDRSxNQUFkLENBQXNCQyxZQUFELElBQ3REQyxnQkFBRUMsSUFBRixDQUFPRixZQUFZLENBQUNHLGdCQUFELENBQW5CLEVBQTRCQyxRQUE1QixDQUFxQ1osY0FBckMsQ0FEaUMsQ0FBbkM7QUFJQUYsTUFBQUEsR0FBRyxDQUFDZSxNQUFKLENBQVdDLHVCQUFZQyxFQUF2QjtBQUNBaEIsTUFBQUEsSUFBSSxDQUFDO0FBQ0hpQixRQUFBQSxJQUFJLEVBQUVWLGdCQUFnQixDQUFDVyxHQUFqQixDQUFzQkMsZUFBRCxLQUErQjtBQUN4REMsVUFBQUEsS0FBSyxFQUFFRCxlQUFlLENBQUNoQjtBQURpQyxTQUEvQixDQUFyQjtBQURILE9BQUQsQ0FBSjtBQUtELEtBZkQ7QUFnQkQsR0FyQkg7QUF1QkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuXG4gKi9cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSZXNwb25zZSwgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBQYWNrYWdlIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBVU0VSUywgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7ICRSZXF1ZXN0RXh0ZW5kLCAkTmV4dEZ1bmN0aW9uVmVyLCBJU3RvcmFnZUhhbmRsZXIgfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcyc7XG5cbnR5cGUgUGFja2FnZXMgPSBQYWNrYWdlW107XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChyb3V0ZTogUm91dGVyLCBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpOiB2b2lkIHtcbiAgcm91dGUuZ2V0KFxuICAgICcvLS9fdmlldy9zdGFycmVkQnlVc2VyJyxcbiAgICAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgcmVtb3RlVXNlcm5hbWUgPSByZXEucmVtb3RlX3VzZXIubmFtZTtcblxuICAgICAgc3RvcmFnZS5nZXRMb2NhbERhdGFiYXNlKChlcnIsIGxvY2FsUGFja2FnZXM6IFBhY2thZ2VzKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyZWRQYWNrYWdlczogUGFja2FnZXMgPSBsb2NhbFBhY2thZ2VzLmZpbHRlcigobG9jYWxQYWNrYWdlOiBQYWNrYWdlKSA9PlxuICAgICAgICAgIF8ua2V5cyhsb2NhbFBhY2thZ2VbVVNFUlNdKS5pbmNsdWRlcyhyZW1vdGVVc2VybmFtZSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgICAgbmV4dCh7XG4gICAgICAgICAgcm93czogZmlsdGVyZWRQYWNrYWdlcy5tYXAoKGZpbHRlcmVkUGFja2FnZTogUGFja2FnZSkgPT4gKHtcbiAgICAgICAgICAgIHZhbHVlOiBmaWx0ZXJlZFBhY2thZ2UubmFtZVxuICAgICAgICAgIH0pKVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcbn1cbiJdfQ==
36
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3N0YXJzLnRzIl0sIm5hbWVzIjpbInJvdXRlIiwic3RvcmFnZSIsImdldCIsInJlcSIsInJlcyIsIm5leHQiLCJyZW1vdGVVc2VybmFtZSIsInJlbW90ZV91c2VyIiwibmFtZSIsImdldExvY2FsRGF0YWJhc2UiLCJlcnIiLCJsb2NhbFBhY2thZ2VzIiwiZmlsdGVyZWRQYWNrYWdlcyIsImZpbHRlciIsImxvY2FsUGFja2FnZSIsIl8iLCJrZXlzIiwiVVNFUlMiLCJpbmNsdWRlcyIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiT0siLCJyb3dzIiwibWFwIiwiZmlsdGVyZWRQYWNrYWdlIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFLQTs7QUFLQTs7OztBQVZBO0FBQ0E7QUFDQTtBQUNBO0FBV2Usa0JBQVVBLEtBQVYsRUFBeUJDLE9BQXpCLEVBQXlEO0FBQ3RFRCxFQUFBQSxLQUFLLENBQUNFLEdBQU4sQ0FBVSx3QkFBVixFQUFvQyxDQUFDQyxHQUFELEVBQXNCQyxHQUF0QixFQUFxQ0MsSUFBckMsS0FBc0U7QUFDeEcsVUFBTUMsY0FBYyxHQUFHSCxHQUFHLENBQUNJLFdBQUosQ0FBZ0JDLElBQXZDO0FBRUFQLElBQUFBLE9BQU8sQ0FBQ1EsZ0JBQVIsQ0FBeUIsQ0FBQ0MsR0FBRCxFQUFNQyxhQUFOLEtBQWtDO0FBQ3pELFVBQUlELEdBQUosRUFBUztBQUNQLGVBQU9MLElBQUksQ0FBQ0ssR0FBRCxDQUFYO0FBQ0Q7O0FBRUQsWUFBTUUsZ0JBQTBCLEdBQUdELGFBQWEsQ0FBQ0UsTUFBZCxDQUFzQkMsWUFBRCxJQUEyQkMsZ0JBQUVDLElBQUYsQ0FBT0YsWUFBWSxDQUFDRyxnQkFBRCxDQUFuQixFQUE0QkMsUUFBNUIsQ0FBcUNaLGNBQXJDLENBQWhELENBQW5DO0FBRUFGLE1BQUFBLEdBQUcsQ0FBQ2UsTUFBSixDQUFXQyx1QkFBWUMsRUFBdkI7QUFDQWhCLE1BQUFBLElBQUksQ0FBQztBQUNIaUIsUUFBQUEsSUFBSSxFQUFFVixnQkFBZ0IsQ0FBQ1csR0FBakIsQ0FBc0JDLGVBQUQsS0FBK0I7QUFDeERDLFVBQUFBLEtBQUssRUFBRUQsZUFBZSxDQUFDaEI7QUFEaUMsU0FBL0IsQ0FBckI7QUFESCxPQUFELENBQUo7QUFLRCxLQWJEO0FBY0QsR0FqQkQ7QUFrQkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuXG4gKi9cbmltcG9ydCB7IFJlc3BvbnNlLCBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsIElTdG9yYWdlSGFuZGxlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEhUVFBfU1RBVFVTLCBVU0VSUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuXG50eXBlIFBhY2thZ2VzID0gUGFja2FnZVtdO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGU6IFJvdXRlciwgc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyKTogdm9pZCB7XG4gIHJvdXRlLmdldCgnLy0vX3ZpZXcvc3RhcnJlZEJ5VXNlcicsIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCA9PiB7XG4gICAgY29uc3QgcmVtb3RlVXNlcm5hbWUgPSByZXEucmVtb3RlX3VzZXIubmFtZTtcblxuICAgIHN0b3JhZ2UuZ2V0TG9jYWxEYXRhYmFzZSgoZXJyLCBsb2NhbFBhY2thZ2VzOiBQYWNrYWdlcykgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWx0ZXJlZFBhY2thZ2VzOiBQYWNrYWdlcyA9IGxvY2FsUGFja2FnZXMuZmlsdGVyKChsb2NhbFBhY2thZ2U6IFBhY2thZ2UpID0+IF8ua2V5cyhsb2NhbFBhY2thZ2VbVVNFUlNdKS5pbmNsdWRlcyhyZW1vdGVVc2VybmFtZSkpO1xuXG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgIG5leHQoe1xuICAgICAgICByb3dzOiBmaWx0ZXJlZFBhY2thZ2VzLm1hcCgoZmlsdGVyZWRQYWNrYWdlOiBQYWNrYWdlKSA9PiAoe1xuICAgICAgICAgIHZhbHVlOiBmaWx0ZXJlZFBhY2thZ2UubmFtZSxcbiAgICAgICAgfSkpLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuIl19
@@ -5,28 +5,35 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = _default;
7
7
 
8
- var _lodash = _interopRequireDefault(require("lodash"));
9
-
10
8
  var _cookies = _interopRequireDefault(require("cookies"));
11
9
 
12
- var _utils = require("../../../lib/utils");
10
+ var _express = _interopRequireDefault(require("express"));
13
11
 
14
- var _constants = require("../../../lib/constants");
12
+ var _lodash = _interopRequireDefault(require("lodash"));
15
13
 
16
14
  var _authUtils = require("../../../lib/auth-utils");
17
15
 
16
+ var _constants = require("../../../lib/constants");
17
+
18
18
  var _logger = require("../../../lib/logger");
19
19
 
20
+ var _utils = require("../../../lib/utils");
21
+
22
+ var _rateLimiter = require("../../rate-limiter");
23
+
20
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
25
 
22
26
  function _default(route, auth, config) {
23
- route.get('/-/user/:org_couchdb_user', function (req, res, next) {
27
+ /* eslint new-cap:off */
28
+ const userRouter = _express.default.Router();
29
+
30
+ userRouter.get('/-/user/:org_couchdb_user', (0, _rateLimiter.limiter)(config === null || config === void 0 ? void 0 : config.userRateLimit), function (req, res, next) {
24
31
  res.status(_constants.HTTP_STATUS.OK);
25
32
  next({
26
33
  ok: (0, _authUtils.getAuthenticatedMessage)(req.remote_user.name)
27
34
  });
28
35
  });
29
- route.put('/-/user/:org_couchdb_user/:_rev?/:revision?', function (req, res, next) {
36
+ userRouter.put('/-/user/:org_couchdb_user/:_rev?/:revision?', (0, _rateLimiter.limiter)(config === null || config === void 0 ? void 0 : config.userRateLimit), function (req, res, next) {
30
37
  const {
31
38
  name,
32
39
  password
@@ -47,6 +54,7 @@ function _default(route, auth, config) {
47
54
  const restoredRemoteUser = (0, _authUtils.createRemoteUser)(name, user.groups || []);
48
55
  const token = await (0, _authUtils.getApiToken)(auth, config, restoredRemoteUser, password);
49
56
  res.status(_constants.HTTP_STATUS.CREATED);
57
+ res.set(_constants.HEADERS.CACHE_CONTROL, 'no-cache, no-store');
50
58
  return next({
51
59
  ok: (0, _authUtils.getAuthenticatedMessage)(req.remote_user.name),
52
60
  token
@@ -73,6 +81,7 @@ function _default(route, auth, config) {
73
81
  const token = name && password ? await (0, _authUtils.getApiToken)(auth, config, user, password) : undefined;
74
82
  req.remote_user = user;
75
83
  res.status(_constants.HTTP_STATUS.CREATED);
84
+ res.set(_constants.HEADERS.CACHE_CONTROL, 'no-cache, no-store');
76
85
  return next({
77
86
  ok: `user '${req.body.name}' created`,
78
87
  token
@@ -80,7 +89,7 @@ function _default(route, auth, config) {
80
89
  });
81
90
  }
82
91
  });
83
- route.delete('/-/user/token/*', function (req, res, next) {
92
+ userRouter.delete('/-/user/token/*', (0, _rateLimiter.limiter)(config === null || config === void 0 ? void 0 : config.userRateLimit), function (req, res, next) {
84
93
  res.status(_constants.HTTP_STATUS.OK);
85
94
  next({
86
95
  ok: _constants.API_MESSAGE.LOGGED_OUT
@@ -88,7 +97,7 @@ function _default(route, auth, config) {
88
97
  }); // placeholder 'cause npm require to be authenticated to publish
89
98
  // we do not do any real authentication yet
90
99
 
91
- route.post('/_session', _cookies.default.express(), function (req, res, next) {
100
+ userRouter.post('/_session', _cookies.default.express(), function (req, res, next) {
92
101
  res.cookies.set('AuthSession', String(Math.random()), (0, _authUtils.createSessionToken)());
93
102
  next({
94
103
  ok: true,
@@ -96,5 +105,6 @@ function _default(route, auth, config) {
96
105
  roles: []
97
106
  });
98
107
  });
108
+ route.use(userRouter);
99
109
  }
100
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3VzZXIudHMiXSwibmFtZXMiOlsicm91dGUiLCJhdXRoIiwiY29uZmlnIiwiZ2V0IiwicmVxIiwicmVzIiwibmV4dCIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiT0siLCJvayIsInJlbW90ZV91c2VyIiwibmFtZSIsInB1dCIsInBhc3N3b3JkIiwiYm9keSIsInJlbW90ZU5hbWUiLCJfIiwiaXNOaWwiLCJhdXRoZW50aWNhdGUiLCJjYWxsYmFja0F1dGhlbnRpY2F0ZSIsImVyciIsInVzZXIiLCJsb2dnZXIiLCJlcnJvciIsIkVycm9yQ29kZSIsImdldENvZGUiLCJVTkFVVEhPUklaRUQiLCJBUElfRVJST1IiLCJCQURfVVNFUk5BTUVfUEFTU1dPUkQiLCJyZXN0b3JlZFJlbW90ZVVzZXIiLCJncm91cHMiLCJ0b2tlbiIsIkNSRUFURUQiLCJCQURfUkVRVUVTVCIsIlBBU1NXT1JEX1NIT1JUIiwiYWRkX3VzZXIiLCJJTlRFUk5BTF9FUlJPUiIsIm1lc3NhZ2UiLCJnZXRDb25mbGljdCIsInVuZGVmaW5lZCIsImRlbGV0ZSIsIkFQSV9NRVNTQUdFIiwiTE9HR0VEX09VVCIsInBvc3QiLCJDb29raWVzIiwiZXhwcmVzcyIsImNvb2tpZXMiLCJzZXQiLCJTdHJpbmciLCJNYXRoIiwicmFuZG9tIiwicm9sZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUllLGtCQUFVQSxLQUFWLEVBQXlCQyxJQUF6QixFQUFzQ0MsTUFBdEMsRUFBNEQ7QUFDekVGLEVBQUFBLEtBQUssQ0FBQ0csR0FBTixDQUFVLDJCQUFWLEVBQXVDLFVBQVVDLEdBQVYsRUFBK0JDLEdBQS9CLEVBQThDQyxJQUE5QyxFQUE0RTtBQUNqSEQsSUFBQUEsR0FBRyxDQUFDRSxNQUFKLENBQVdDLHVCQUFZQyxFQUF2QjtBQUNBSCxJQUFBQSxJQUFJLENBQUM7QUFDSEksTUFB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LENBQUNFLE1BQUosQ0FBV0MsdUJBQVl5QixPQUF2QjtBQUNBLGVBQU8zQixJQUFJLENBQUM7QUFDVkksVUFBQUEsRUFBRSxFQUFHLFNBQVFOLEdBQUcsQ0FBQ1csSUFBSixDQUFTSCxJQUFLLFdBRGpCO0FBRVZvQixVQUFBQTtBQUZVLFNBQUQsQ0FBWDtBQUlELE9BbkJEO0FBb0JEO0FBQ0YsR0FoREQ7QUFrREFoQyxFQUFBQSxLQUFLLENBQUN5QyxNQUFOLENBQWEsaUJBQWIsRUFBZ0MsVUFBVXJDLEdBQVYsRUFBK0JDLEdBQS9CLEVBQThDQyxJQUE5QyxFQUE0RTtBQUMxR0QsSUFBQUEsR0FBRyxDQUFDRSxNQUFKLENBQVdDLHVCQUFZQyxFQUF2QjtBQUNBSCxJQUFBQSxJQUFJLENBQUM7QUFDSEksTUFBQUEsRUFBRSxFQUFFZ0MsdUJBQVlDO0FBRGIsS0FBRCxDQUFKO0FBR0QsR0FMRCxFQTFEeUUsQ0FpRXpFO0FBQ0E7O0FBQ0EzQyxFQUFBQSxLQUFLLENBQUM0QyxJQUFOLENBQVcsV0FBWCxFQUF3QkMsaUJBQVFDLE9BQVIsRUFBeEIsRUFBMkMsVUFBVTFDLEdBQVYsRUFBK0JDLEdBQS9CLEVBQXFEQyxJQUFyRCxFQUFtRjtBQUM1SEQsSUFBQUEsR0FBRyxDQUFDMEMsT0FBSixDQUFZQyxHQUFaLENBQWdCLGFBQWhCLEVBQStCQyxNQUFNLENBQUNDLElBQUksQ0FBQ0MsTUFBTCxFQUFELENBQXJDLEVBQXNELG9DQUF0RDtBQUVBN0MsSUFBQUEsSUFBSSxDQUFDO0FBQ0hJLE1BQUFBLEVBQUUsRUFBRSxJQUREO0FBRUhFLE1BQUFBLElBQUksRUFBRSxVQUZIO0FBR0h3QyxNQUFBQSxLQUFLLEVBQUU7QUFISixLQUFELENBQUo7QUFLRCxHQVJEO0FBU0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IENvb2tpZXMgZnJvbSAnY29va2llcyc7XG5cbmltcG9ydCB7IENvbmZpZywgUmVtb3RlVXNlciB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgUmVzcG9uc2UsIFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgRXJyb3JDb2RlIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgQVBJX01FU1NBR0UsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjcmVhdGVSZW1vdGVVc2VyLCBjcmVhdGVTZXNzaW9uVG9rZW4sIGdldEFwaVRva2VuLCBnZXRBdXRoZW50aWNhdGVkTWVzc2FnZSwgdmFsaWRhdGVQYXNzd29yZCB9IGZyb20gJy4uLy4uLy4uL2xpYi9hdXRoLXV0aWxzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuXG5pbXBvcnQgeyAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kLCAkTmV4dEZ1bmN0aW9uVmVyLCBJQXV0aCB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlOiBSb3V0ZXIsIGF1dGg6IElBdXRoLCBjb25maWc6IENvbmZpZyk6IHZvaWQge1xuICByb3V0ZS5nZXQoJy8tL3VzZXIvOm9yZ19jb3VjaGRiX3VzZXInLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuT0spO1xuICAgIG5leHQoe1xuICAgICAgb2s6IGdldEF1dGhlbnRpY2F0ZWRNZXNzYWdlKHJlcS5yZW1vdGVfdXNlci5uYW1lKSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcm91dGUucHV0KCcvLS91c2VyLzpvcmdfY291Y2hkYl91c2VyLzpfcmV2Py86cmV2aXNpb24/JywgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCB7IG5hbWUsIHBhc3N3b3JkIH0gPSByZXEuYm9keTtcbiAgICBjb25zdCByZW1vdGVOYW1lID0gcmVxLnJlbW90ZV91c2VyLm5hbWU7XG5cbiAgICBpZiAoXy5pc05pbChyZW1vdGVOYW1lKSA9PT0gZmFsc2UgJiYgXy5pc05pbChuYW1lKSA9PT0gZmFsc2UgJiYgcmVtb3RlTmFtZSA9PT0gbmFtZSkge1xuICAgICAgYXV0aC5hdXRoZW50aWNhdGUobmFtZSwgcGFzc3dvcmQsIGFzeW5jIGZ1bmN0aW9uIGNhbGxiYWNrQXV0aGVudGljYXRlKGVyciwgdXNlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKHsgbmFtZSwgZXJyIH0sICdhdXRoZW50aWNhdGluZyBmb3IgdXNlciBAe3VzZXJuYW1lfSBmYWlsZWQuIEVycm9yOiBAe2Vyci5tZXNzYWdlfScpO1xuICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLlVOQVVUSE9SSVpFRCwgQVBJX0VSUk9SLkJBRF9VU0VSTkFNRV9QQVNTV09SRCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdG9yZWRSZW1vdGVVc2VyOiBSZW1vdGVVc2VyID0gY3JlYXRlUmVtb3RlVXNlcihuYW1lLCB1c2VyLmdyb3VwcyB8fCBbXSk7XG4gICAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgZ2V0QXBpVG9rZW4oYXV0aCwgY29uZmlnLCByZXN0b3JlZFJlbW90ZVVzZXIsIHBhc3N3b3JkKTtcblxuICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuXG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogZ2V0QXV0aGVudGljYXRlZE1lc3NhZ2UocmVxLnJlbW90ZV91c2VyLm5hbWUpLFxuICAgICAgICAgIHRva2VuLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodmFsaWRhdGVQYXNzd29yZChwYXNzd29yZCkgPT09IGZhbHNlKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLkJBRF9SRVFVRVNULCBBUElfRVJST1IuUEFTU1dPUkRfU0hPUlQoKSkpO1xuICAgICAgfVxuXG4gICAgICBhdXRoLmFkZF91c2VyKG5hbWUsIHBhc3N3b3JkLCBhc3luYyBmdW5jdGlvbiAoZXJyLCB1c2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA+PSBIVFRQX1NUQVRVUy5CQURfUkVRVUVTVCAmJiBlcnIuc3RhdHVzIDwgSFRUUF9TVEFUVVMuSU5URVJOQUxfRVJST1IpIHtcbiAgICAgICAgICAgIC8vIFdpdGggbnBtIHJlZ2lzdGVyaW5nIGlzIHRoZSBzYW1lIGFzIGxvZ2dpbmcgaW4sXG4gICAgICAgICAgICAvLyBhbmQgbnBtIGFjY2VwdHMgb25seSBhbiA0MDkgZXJyb3IuXG4gICAgICAgICAgICAvLyBTbywgY2hhbmdpbmcgc3RhdHVzIGNvZGUgaGVyZS5cbiAgICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKGVyci5zdGF0dXMsIGVyci5tZXNzYWdlKSB8fCBFcnJvckNvZGUuZ2V0Q29uZmxpY3QoZXJyLm1lc3NhZ2UpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRva2VuID0gbmFtZSAmJiBwYXNzd29yZCA/IGF3YWl0IGdldEFwaVRva2VuKGF1dGgsIGNvbmZpZywgdXNlciwgcGFzc3dvcmQpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IHVzZXI7XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogYHVzZXIgJyR7cmVxLmJvZHkubmFtZX0nIGNyZWF0ZWRgLFxuICAgICAgICAgIHRva2VuLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcm91dGUuZGVsZXRlKCcvLS91c2VyL3Rva2VuLyonLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuT0spO1xuICAgIG5leHQoe1xuICAgICAgb2s6IEFQSV9NRVNTQUdFLkxPR0dFRF9PVVQsXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIHBsYWNlaG9sZGVyICdjYXVzZSBucG0gcmVxdWlyZSB0byBiZSBhdXRoZW50aWNhdGVkIHRvIHB1Ymxpc2hcbiAgLy8gd2UgZG8gbm90IGRvIGFueSByZWFsIGF1dGhlbnRpY2F0aW9uIHlldFxuICByb3V0ZS5wb3N0KCcvX3Nlc3Npb24nLCBDb29raWVzLmV4cHJlc3MoKSwgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgcmVzLmNvb2tpZXMuc2V0KCdBdXRoU2Vzc2lvbicsIFN0cmluZyhNYXRoLnJhbmRvbSgpKSwgY3JlYXRlU2Vzc2lvblRva2VuKCkpO1xuXG4gICAgbmV4dCh7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIG5hbWU6ICdzb21lYm9keScsXG4gICAgICByb2xlczogW10sXG4gICAgfSk7XG4gIH0pO1xufVxuIl19
110
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3VzZXIudHMiXSwibmFtZXMiOlsicm91dGUiLCJhdXRoIiwiY29uZmlnIiwidXNlclJvdXRlciIsImV4cHJlc3MiLCJSb3V0ZXIiLCJnZXQiLCJ1c2VyUmF0ZUxpbWl0IiwicmVxIiwicmVzIiwibmV4dCIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiT0siLCJvayIsInJlbW90ZV91c2VyIiwibmFtZSIsInB1dCIsInBhc3N3b3JkIiwiYm9keSIsInJlbW90ZU5hbWUiLCJfIiwiaXNOaWwiLCJhdXRoZW50aWNhdGUiLCJjYWxsYmFja0F1dGhlbnRpY2F0ZSIsImVyciIsInVzZXIiLCJsb2dnZXIiLCJlcnJvciIsIkVycm9yQ29kZSIsImdldENvZGUiLCJVTkFVVEhPUklaRUQiLCJBUElfRVJST1IiLCJCQURfVVNFUk5BTUVfUEFTU1dPUkQiLCJyZXN0b3JlZFJlbW90ZVVzZXIiLCJncm91cHMiLCJ0b2tlbiIsIkNSRUFURUQiLCJzZXQiLCJIRUFERVJTIiwiQ0FDSEVfQ09OVFJPTCIsIkJBRF9SRVFVRVNUIiwiUEFTU1dPUkRfU0hPUlQiLCJhZGRfdXNlciIsIklOVEVSTkFMX0VSUk9SIiwibWVzc2FnZSIsImdldENvbmZsaWN0IiwidW5kZWZpbmVkIiwiZGVsZXRlIiwiQVBJX01FU1NBR0UiLCJMT0dHRURfT1VUIiwicG9zdCIsIkNvb2tpZXMiLCJjb29raWVzIiwiU3RyaW5nIiwiTWF0aCIsInJhbmRvbSIsInJvbGVzIiwidXNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBS0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFZSxrQkFBVUEsS0FBVixFQUF5QkMsSUFBekIsRUFBc0NDLE1BQXRDLEVBQTREO0FBQ3pFO0FBQ0EsUUFBTUMsVUFBVSxHQUFHQyxpQkFBUUMsTUFBUixFQUFuQjs7QUFFQUYsRUFBQUEsVUFBVSxDQUFDRyxHQUFYLENBQWUsMkJBQWYs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LE9BQVIsRUFBN0IsRUFBZ0QsVUFBVUksR0FBVixFQUErQkMsR0FBL0IsRUFBcURDLElBQXJELEVBQW1GO0FBQ2pJRCxJQUFBQSxHQUFHLENBQUM0QyxPQUFKLENBQVlmLEdBQVosQ0FBZ0IsYUFBaEIsRUFBK0JnQixNQUFNLENBQUNDLElBQUksQ0FBQ0MsTUFBTCxFQUFELENBQXJDLEVBQXNELG9DQUF0RDtBQUVBOUMsSUFBQUEsSUFBSSxDQUFDO0FBQ0hJLE1BQUFBLEVBQUUsRUFBRSxJQUREO0FBRUhFLE1BQUFBLElBQUksRUFBRSxVQUZIO0FBR0h5QyxNQUFBQSxLQUFLLEVBQUU7QUFISixLQUFELENBQUo7QUFLRCxHQVJEO0FBVUF6RCxFQUFBQSxLQUFLLENBQUMwRCxHQUFOLENBQVV2RCxVQUFWO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29va2llcyBmcm9tICdjb29raWVzJztcbmltcG9ydCBleHByZXNzLCB7IFJlc3BvbnNlLCBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IENvbmZpZywgUmVtb3RlVXNlciB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kLCBJQXV0aCB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZVJlbW90ZVVzZXIsIGNyZWF0ZVNlc3Npb25Ub2tlbiwgZ2V0QXBpVG9rZW4sIGdldEF1dGhlbnRpY2F0ZWRNZXNzYWdlLCB2YWxpZGF0ZVBhc3N3b3JkIH0gZnJvbSAnLi4vLi4vLi4vbGliL2F1dGgtdXRpbHMnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBBUElfTUVTU0FHRSwgSEVBREVSUywgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHsgRXJyb3JDb2RlIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB7IGxpbWl0ZXIgfSBmcm9tICcuLi8uLi9yYXRlLWxpbWl0ZXInO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGU6IFJvdXRlciwgYXV0aDogSUF1dGgsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIC8qIGVzbGludCBuZXctY2FwOm9mZiAqL1xuICBjb25zdCB1c2VyUm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcblxuICB1c2VyUm91dGVyLmdldCgnLy0vdXNlci86b3JnX2NvdWNoZGJfdXNlcicsIGxpbWl0ZXIoY29uZmlnPy51c2VyUmF0ZUxpbWl0KSwgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICBuZXh0KHtcbiAgICAgIG9rOiBnZXRBdXRoZW50aWNhdGVkTWVzc2FnZShyZXEucmVtb3RlX3VzZXIubmFtZSksXG4gICAgfSk7XG4gIH0pO1xuXG4gIHVzZXJSb3V0ZXIucHV0KCcvLS91c2VyLzpvcmdfY291Y2hkYl91c2VyLzpfcmV2Py86cmV2aXNpb24/JywgbGltaXRlcihjb25maWc/LnVzZXJSYXRlTGltaXQpLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgbmFtZSwgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IHJlbW90ZU5hbWUgPSByZXEucmVtb3RlX3VzZXIubmFtZTtcblxuICAgIGlmIChfLmlzTmlsKHJlbW90ZU5hbWUpID09PSBmYWxzZSAmJiBfLmlzTmlsKG5hbWUpID09PSBmYWxzZSAmJiByZW1vdGVOYW1lID09PSBuYW1lKSB7XG4gICAgICBhdXRoLmF1dGhlbnRpY2F0ZShuYW1lLCBwYXNzd29yZCwgYXN5bmMgZnVuY3Rpb24gY2FsbGJhY2tBdXRoZW50aWNhdGUoZXJyLCB1c2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBuYW1lLCBlcnIgfSwgJ2F1dGhlbnRpY2F0aW5nIGZvciB1c2VyIEB7dXNlcm5hbWV9IGZhaWxlZC4gRXJyb3I6IEB7ZXJyLm1lc3NhZ2V9Jyk7XG4gICAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuVU5BVVRIT1JJWkVELCBBUElfRVJST1IuQkFEX1VTRVJOQU1FX1BBU1NXT1JEKSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN0b3JlZFJlbW90ZVVzZXI6IFJlbW90ZVVzZXIgPSBjcmVhdGVSZW1vdGVVc2VyKG5hbWUsIHVzZXIuZ3JvdXBzIHx8IFtdKTtcbiAgICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCBnZXRBcGlUb2tlbihhdXRoLCBjb25maWcsIHJlc3RvcmVkUmVtb3RlVXNlciwgcGFzc3dvcmQpO1xuXG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJlcy5zZXQoSEVBREVSUy5DQUNIRV9DT05UUk9MLCAnbm8tY2FjaGUsIG5vLXN0b3JlJyk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogZ2V0QXV0aGVudGljYXRlZE1lc3NhZ2UocmVxLnJlbW90ZV91c2VyLm5hbWUpLFxuICAgICAgICAgIHRva2VuLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodmFsaWRhdGVQYXNzd29yZChwYXNzd29yZCkgPT09IGZhbHNlKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLkJBRF9SRVFVRVNULCBBUElfRVJST1IuUEFTU1dPUkRfU0hPUlQoKSkpO1xuICAgICAgfVxuXG4gICAgICBhdXRoLmFkZF91c2VyKG5hbWUsIHBhc3N3b3JkLCBhc3luYyBmdW5jdGlvbiAoZXJyLCB1c2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA+PSBIVFRQX1NUQVRVUy5CQURfUkVRVUVTVCAmJiBlcnIuc3RhdHVzIDwgSFRUUF9TVEFUVVMuSU5URVJOQUxfRVJST1IpIHtcbiAgICAgICAgICAgIC8vIFdpdGggbnBtIHJlZ2lzdGVyaW5nIGlzIHRoZSBzYW1lIGFzIGxvZ2dpbmcgaW4sXG4gICAgICAgICAgICAvLyBhbmQgbnBtIGFjY2VwdHMgb25seSBhbiA0MDkgZXJyb3IuXG4gICAgICAgICAgICAvLyBTbywgY2hhbmdpbmcgc3RhdHVzIGNvZGUgaGVyZS5cbiAgICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKGVyci5zdGF0dXMsIGVyci5tZXNzYWdlKSB8fCBFcnJvckNvZGUuZ2V0Q29uZmxpY3QoZXJyLm1lc3NhZ2UpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRva2VuID0gbmFtZSAmJiBwYXNzd29yZCA/IGF3YWl0IGdldEFwaVRva2VuKGF1dGgsIGNvbmZpZywgdXNlciwgcGFzc3dvcmQpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IHVzZXI7XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJlcy5zZXQoSEVBREVSUy5DQUNIRV9DT05UUk9MLCAnbm8tY2FjaGUsIG5vLXN0b3JlJyk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogYHVzZXIgJyR7cmVxLmJvZHkubmFtZX0nIGNyZWF0ZWRgLFxuICAgICAgICAgIHRva2VuLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgdXNlclJvdXRlci5kZWxldGUoJy8tL3VzZXIvdG9rZW4vKicsIGxpbWl0ZXIoY29uZmlnPy51c2VyUmF0ZUxpbWl0KSwgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICBuZXh0KHtcbiAgICAgIG9rOiBBUElfTUVTU0FHRS5MT0dHRURfT1VULFxuICAgIH0pO1xuICB9KTtcblxuICAvLyBwbGFjZWhvbGRlciAnY2F1c2UgbnBtIHJlcXVpcmUgdG8gYmUgYXV0aGVudGljYXRlZCB0byBwdWJsaXNoXG4gIC8vIHdlIGRvIG5vdCBkbyBhbnkgcmVhbCBhdXRoZW50aWNhdGlvbiB5ZXRcbiAgdXNlclJvdXRlci5wb3N0KCcvX3Nlc3Npb24nLCBDb29raWVzLmV4cHJlc3MoKSwgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgcmVzLmNvb2tpZXMuc2V0KCdBdXRoU2Vzc2lvbicsIFN0cmluZyhNYXRoLnJhbmRvbSgpKSwgY3JlYXRlU2Vzc2lvblRva2VuKCkpO1xuXG4gICAgbmV4dCh7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIG5hbWU6ICdzb21lYm9keScsXG4gICAgICByb2xlczogW10sXG4gICAgfSk7XG4gIH0pO1xuXG4gIHJvdXRlLnVzZSh1c2VyUm91dGVyKTtcbn1cbiJdfQ==
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _express = require("express");
9
+
10
+ var _profile = _interopRequireDefault(require("./profile"));
11
+
12
+ var _token = _interopRequireDefault(require("./token"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ var _default = (auth, storage, config) => {
17
+ const route = (0, _express.Router)();
18
+ /* eslint new-cap: 0 */
19
+
20
+ route.use('/-/npm/v1/', (0, _profile.default)(auth, config));
21
+ route.use('/-/npm/v1/', (0, _token.default)(auth, storage, config));
22
+ return route;
23
+ };
24
+
25
+ exports.default = _default;
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3YxL2luZGV4LnRzIl0sIm5hbWVzIjpbImF1dGgiLCJzdG9yYWdlIiwiY29uZmlnIiwicm91dGUiLCJ1c2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7OztlQUVlLENBQUNBLElBQUQsRUFBT0MsT0FBUCxFQUFnQkMsTUFBaEIsS0FBMkI7QUFDeEMsUUFBTUMsS0FBSyxHQUFHLHNCQUFkO0FBQXdCOztBQUN4QkEsRUFBQUEsS0FBSyxDQUFDQyxHQUFOLENBQVUsWUFBVixFQUF3QixzQkFBUUosSUFBUixFQUFjRSxNQUFkLENBQXhCO0FBQ0FDLEVBQUFBLEtBQUssQ0FBQ0MsR0FBTixDQUFVLFlBQVYsRUFBd0Isb0JBQU1KLElBQU4sRUFBWUMsT0FBWixFQUFxQkMsTUFBckIsQ0FBeEI7QUFDQSxTQUFPQyxLQUFQO0FBQ0QsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3BvbnNlLCBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcblxuaW1wb3J0IHByb2ZpbGUgZnJvbSAnLi9wcm9maWxlJztcbmltcG9ydCB0b2tlbiBmcm9tICcuL3Rva2VuJztcblxuZXhwb3J0IGRlZmF1bHQgKGF1dGgsIHN0b3JhZ2UsIGNvbmZpZykgPT4ge1xuICBjb25zdCByb3V0ZSA9IFJvdXRlcigpOyAvKiBlc2xpbnQgbmV3LWNhcDogMCAqL1xuICByb3V0ZS51c2UoJy8tL25wbS92MS8nLCBwcm9maWxlKGF1dGgsIGNvbmZpZykpO1xuICByb3V0ZS51c2UoJy8tL25wbS92MS8nLCB0b2tlbihhdXRoLCBzdG9yYWdlLCBjb25maWcpKTtcbiAgcmV0dXJuIHJvdXRlO1xufTtcbiJdfQ==
@@ -5,17 +5,24 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = _default;
7
7
 
8
+ var _express = require("express");
9
+
8
10
  var _lodash = _interopRequireDefault(require("lodash"));
9
11
 
12
+ var _authUtils = require("../../../../lib/auth-utils");
13
+
10
14
  var _constants = require("../../../../lib/constants");
11
15
 
12
16
  var _utils = require("../../../../lib/utils");
13
17
 
14
- var _authUtils = require("../../../../lib/auth-utils");
18
+ var _rateLimiter = require("../../../rate-limiter");
15
19
 
16
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
21
 
18
- function _default(route, auth) {
22
+ function _default(auth, config) {
23
+ const profileRoute = (0, _express.Router)();
24
+ /* eslint new-cap: 0 */
25
+
19
26
  function buildProfile(name) {
20
27
  return {
21
28
  tfa: false,
@@ -29,7 +36,7 @@ function _default(route, auth) {
29
36
  };
30
37
  }
31
38
 
32
- route.get('/-/npm/v1/user', function (req, res, next) {
39
+ profileRoute.get('/user', (0, _rateLimiter.limiter)(config === null || config === void 0 ? void 0 : config.userRateLimit), function (req, res, next) {
33
40
  if (_lodash.default.isNil(req.remote_user.name) === false) {
34
41
  return next(buildProfile(req.remote_user.name));
35
42
  }
@@ -39,7 +46,7 @@ function _default(route, auth) {
39
46
  message: _constants.API_ERROR.MUST_BE_LOGGED
40
47
  });
41
48
  });
42
- route.post('/-/npm/v1/user', function (req, res, next) {
49
+ profileRoute.post('/user', (0, _rateLimiter.limiter)(config === null || config === void 0 ? void 0 : config.userRateLimit), function (req, res, next) {
43
50
  if (_lodash.default.isNil(req.remote_user.name)) {
44
51
  res.status(_constants.HTTP_STATUS.UNAUTHORIZED);
45
52
  return next({
@@ -79,5 +86,6 @@ function _default(route, auth) {
79
86
  return next(_utils.ErrorCode.getCode(_constants.HTTP_STATUS.INTERNAL_ERROR, _constants.APP_ERROR.PROFILE_ERROR));
80
87
  }
81
88
  });
89
+ return profileRoute;
82
90
  }
83
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3YxL3Byb2ZpbGUudHMiXSwibmFtZXMiOlsicm91dGUiLCJhdXRoIiwiYnVpbGRQcm9maWxlIiwibmFtZSIsInRmYSIsImVtYWlsIiwiZW1haWxfdmVyaWZpZWQiLCJjcmVhdGVkIiwidXBkYXRlZCIsImNpZHJfd2hpdGVsaXN0IiwiZnVsbG5hbWUiLCJnZXQiLCJyZXEiLCJyZXMiLCJuZXh0IiwiXyIsImlzTmlsIiwicmVtb3RlX3VzZXIiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIlVOQVVUSE9SSVpFRCIsIm1lc3NhZ2UiLCJBUElfRVJST1IiLCJNVVNUX0JFX0xPR0dFRCIsInBvc3QiLCJwYXNzd29yZCIsImJvZHkiLCJuZXciLCJFcnJvckNvZGUiLCJnZXRDb2RlIiwiUEFTU1dPUkRfU0hPUlQiLCJjaGFuZ2VQYXNzd29yZCIsIm9sZCIsImVyciIsImlzVXBkYXRlZCIsImlzTnVsbCIsImdldENvbmZsaWN0IiwiZ2V0SW50ZXJuYWxFcnJvciIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsIlNFUlZJQ0VfVU5BVkFJTEFCTEUiLCJTVVBQT1JUX0VSUk9SUyIsIlRGQV9ESVNBQkxFRCIsIklOVEVSTkFMX0VSUk9SIiwiQVBQX0VSUk9SIiwiUFJPRklMRV9FUlJPUiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOztBQUNBOztBQUNBOzs7O0FBZWUsa0JBQVVBLEtBQVYsRUFBeUJDLElBQXpCLEVBQTRDO0FBQ3pELFdBQVNDLFlBQVQsQ0FBc0JDLElBQXRCLEVBQTZDO0FBQzNDLFdBQU87QUFDTEMsTUFBQUEsR0FBRyxFQUFFLEtBREE7QUFFTEQsTUFBQUEsSUFGSztBQUdMRSxNQUFBQSxLQUFLLEVBQUUsRUFIRjtBQUlMQyxNQUFBQSxjQUFjLEVBQUUsS0FKWDtBQUtMQyxNQUFBQSxPQUFPLEVBQUUsRUFMSjtBQU1MQyxNQUFBQSxPQUFPLEVBQUUsRUFOSjtBQU9MQyxNQUFBQSxj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OENEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFJlc3BvbnNlLCBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgQVBQX0VSUk9SLCBIVFRQX1NUQVRVUywgU1VQUE9SVF9FUlJPUlMgfSBmcm9tICcuLi8uLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uLy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyB2YWxpZGF0ZVBhc3N3b3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbGliL2F1dGgtdXRpbHMnO1xuXG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgSUF1dGggfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZmlsZSB7XG4gIHRmYTogYm9vbGVhbjtcbiAgbmFtZTogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBlbWFpbF92ZXJpZmllZDogYm9vbGVhbjtcbiAgY3JlYXRlZDogc3RyaW5nO1xuICB1cGRhdGVkOiBzdHJpbmc7XG4gIGNpZHJfd2hpdGVsaXN0OiBzdHJpbmdbXSB8IG51bGw7XG4gIGZ1bGxuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChyb3V0ZTogUm91dGVyLCBhdXRoOiBJQXV0aCk6IHZvaWQge1xuICBmdW5jdGlvbiBidWlsZFByb2ZpbGUobmFtZTogc3RyaW5nKTogUHJvZmlsZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRmYTogZmFsc2UsXG4gICAgICBuYW1lLFxuICAgICAgZW1haWw6ICcnLFxuICAgICAgZW1haWxfdmVyaWZpZWQ6IGZhbHNlLFxuICAgICAgY3JlYXRlZDogJycsXG4gICAgICB1cGRhdGVkOiAnJyxcbiAgICAgIGNpZHJfd2hpdGVsaXN0OiBudWxsLFxuICAgICAgZnVsbG5hbWU6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHJvdXRlLmdldChcbiAgICAnLy0vbnBtL3YxL3VzZXInLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBpZiAoXy5pc05pbChyZXEucmVtb3RlX3VzZXIubmFtZSkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGJ1aWxkUHJvZmlsZShyZXEucmVtb3RlX3VzZXIubmFtZSkpO1xuICAgICAgfVxuXG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLlVOQVVUSE9SSVpFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG1lc3NhZ2U6IEFQSV9FUlJPUi5NVVNUX0JFX0xPR0dFRFxuICAgICAgfSk7XG4gICAgfVxuICApO1xuXG4gIHJvdXRlLnBvc3QoXG4gICAgJy8tL25wbS92MS91c2VyJyxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgaWYgKF8uaXNOaWwocmVxLnJlbW90ZV91c2VyLm5hbWUpKSB7XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuVU5BVVRIT1JJWkVEKTtcbiAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgIG1lc3NhZ2U6IEFQSV9FUlJPUi5NVVNUX0JFX0xPR0dFRFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBwYXNzd29yZCwgdGZhIH0gPSByZXEuYm9keTtcbiAgICAgIGNvbnN0IHsgbmFtZSB9ID0gcmVxLnJlbW90ZV91c2VyO1xuXG4gICAgICBpZiAoXy5pc05pbChwYXNzd29yZCkgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmICh2YWxpZGF0ZVBhc3N3b3JkKHBhc3N3b3JkLm5ldykgPT09IGZhbHNlKSB7XG4gICAgICAgICAgLyogZXNsaW50IG5ldy1jYXA6b2ZmICovXG4gICAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuVU5BVVRIT1JJWkVELCBBUElfRVJST1IuUEFTU1dPUkRfU0hPUlQoKSkpO1xuICAgICAgICAgIC8qIGVzbGludCBuZXctY2FwOm9mZiAqL1xuICAgICAgICB9XG5cbiAgICAgICAgYXV0aC5jaGFuZ2VQYXNzd29yZChcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHBhc3N3b3JkLm9sZCxcbiAgICAgICAgICBwYXNzd29yZC5uZXcsXG4gICAgICAgICAgKGVyciwgaXNVcGRhdGVkKTogJE5leHRGdW5jdGlvblZlciA9PiB7XG4gICAgICAgICAgICBpZiAoXy5pc051bGwoZXJyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQoXG4gICAgICAgICAgICAgICAgRXJyb3JDb2RlLmdldENvZGUoZXJyLnN0YXR1cywgZXJyLm1lc3NhZ2UpIHx8IEVycm9yQ29kZS5nZXRDb25mbGljdChlcnIubWVzc2FnZSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzVXBkYXRlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dChidWlsZFByb2ZpbGUocmVxLnJlbW90ZV91c2VyLm5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKEFQSV9FUlJPUi5JTlRFUk5BTF9TRVJWRVJfRVJST1IpKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKF8uaXNOaWwodGZhKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoXG4gICAgICAgICAgRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuU0VSVklDRV9VTkFWQUlMQUJMRSwgU1VQUE9SVF9FUlJPUlMuVEZBX0RJU0FCTEVEKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuSU5URVJOQUxfRVJST1IsIEFQUF9FUlJPUi5QUk9GSUxFX0VSUk9SKSk7XG4gICAgICB9XG4gICAgfVxuICApO1xufVxuIl19
91
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3YxL3Byb2ZpbGUudHMiXSwibmFtZXMiOlsiYXV0aCIsImNvbmZpZyIsInByb2ZpbGVSb3V0ZSIsImJ1aWxkUHJvZmlsZSIsIm5hbWUiLCJ0ZmEiLCJlbWFpbCIsImVtYWlsX3ZlcmlmaWVkIiwiY3JlYXRlZCIsInVwZGF0ZWQiLCJjaWRyX3doaXRlbGlzdCIsImZ1bGxuYW1lIiwiZ2V0IiwidXNlclJhdGVMaW1pdCIsInJlcSIsInJlcyIsIm5leHQiLCJfIiwiaXNOaWwiLCJyZW1vdGVfdXNlciIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiVU5BVVRIT1JJWkVEIiwibWVzc2FnZSIsIkFQSV9FUlJPUiIsIk1VU1RfQkVfTE9HR0VEIiwicG9zdCIsInBhc3N3b3JkIiwiYm9keSIsIm5ldyIsIkVycm9yQ29kZSIsImdldENvZGUiLCJQQVNTV09SRF9TSE9SVCIsImNoYW5nZVBhc3N3b3JkIiwib2xkIiwiZXJyIiwiaXNVcGRhdGVkIiwiaXNOdWxsIiwiZ2V0Q29uZmxpY3QiLCJnZXRJbnRlcm5hbEVycm9yIiwiSU5URVJOQUxfU0VSVkVSX0VSUk9SIiwiU0VSVklDRV9VTkFWQUlMQUJMRSIsIlNVUFBPUlRfRVJST1JTIiwiVEZBX0RJU0FCTEVEIiwiSU5URVJOQUxfRVJST1IiLCJBUFBfRVJST1IiLCJQUk9GSUxFX0VSUk9SIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFhZSxrQkFBVUEsSUFBVixFQUF1QkMsTUFBdkIsRUFBdUM7QUFDcEQsUUFBTUMsWUFBWSxHQUFHLHNCQUFyQjtBQUErQjs7QUFDL0IsV0FBU0MsWUFBVCxDQUFzQkMsSUFBdEIsRUFBNkM7QUFDM0MsV0FBTztBQUNMQyxNQUFBQSxHQUFHLEVBQUUsS0FEQTtBQUVMRCxNQUFBQSxJQUZLO0FBR0xFLE1BQUFBLEtBQUssRUFBRSxFQUhGO0FBSUxDLE1BQUFBLGNB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NEI7QUFDakMsYUFBT1csSUFBSSxDQUFDYyxpQkFBVUMsT0FBVixDQUFrQlYsdUJBQVlvQixtQkFBOUIsRUFBbURDLDBCQUFlQyxZQUFsRSxDQUFELENBQVg7QUFDRCxLQUZNLE1BRUE7QUFDTCxhQUFPM0IsSUFBSSxDQUFDYyxpQkFBVUMsT0FBVixDQUFrQlYsdUJBQVl1QixjQUE5QixFQUE4Q0MscUJBQVVDLGFBQXhELENBQUQsQ0FBWDtBQUNEO0FBQ0YsR0FqQ0Q7QUFtQ0EsU0FBTzVDLFlBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3BvbnNlLCBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7ICROZXh0RnVuY3Rpb25WZXIsICRSZXF1ZXN0RXh0ZW5kLCBJQXV0aCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IHZhbGlkYXRlUGFzc3dvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi9saWIvYXV0aC11dGlscyc7XG5pbXBvcnQgeyBBUElfRVJST1IsIEFQUF9FUlJPUiwgSFRUUF9TVEFUVVMsIFNVUFBPUlRfRVJST1JTIH0gZnJvbSAnLi4vLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICcuLi8uLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgbGltaXRlciB9IGZyb20gJy4uLy4uLy4uL3JhdGUtbGltaXRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZmlsZSB7XG4gIHRmYTogYm9vbGVhbjtcbiAgbmFtZTogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBlbWFpbF92ZXJpZmllZDogYm9vbGVhbjtcbiAgY3JlYXRlZDogc3RyaW5nO1xuICB1cGRhdGVkOiBzdHJpbmc7XG4gIGNpZHJfd2hpdGVsaXN0OiBzdHJpbmdbXSB8IG51bGw7XG4gIGZ1bGxuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChhdXRoOiBJQXV0aCwgY29uZmlnKTogUm91dGVyIHtcbiAgY29uc3QgcHJvZmlsZVJvdXRlID0gUm91dGVyKCk7IC8qIGVzbGludCBuZXctY2FwOiAwICovXG4gIGZ1bmN0aW9uIGJ1aWxkUHJvZmlsZShuYW1lOiBzdHJpbmcpOiBQcm9maWxlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGZhOiBmYWxzZSxcbiAgICAgIG5hbWUsXG4gICAgICBlbWFpbDogJycsXG4gICAgICBlbWFpbF92ZXJpZmllZDogZmFsc2UsXG4gICAgICBjcmVhdGVkOiAnJyxcbiAgICAgIHVwZGF0ZWQ6ICcnLFxuICAgICAgY2lkcl93aGl0ZWxpc3Q6IG51bGwsXG4gICAgICBmdWxsbmFtZTogJycsXG4gICAgfTtcbiAgfVxuXG4gIHByb2ZpbGVSb3V0ZS5nZXQoJy91c2VyJywgbGltaXRlcihjb25maWc/LnVzZXJSYXRlTGltaXQpLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGlmIChfLmlzTmlsKHJlcS5yZW1vdGVfdXNlci5uYW1lKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBuZXh0KGJ1aWxkUHJvZmlsZShyZXEucmVtb3RlX3VzZXIubmFtZSkpO1xuICAgIH1cblxuICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuVU5BVVRIT1JJWkVEKTtcbiAgICByZXR1cm4gbmV4dCh7XG4gICAgICBtZXNzYWdlOiBBUElfRVJST1IuTVVTVF9CRV9MT0dHRUQsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHByb2ZpbGVSb3V0ZS5wb3N0KCcvdXNlcicsIGxpbWl0ZXIoY29uZmlnPy51c2VyUmF0ZUxpbWl0KSwgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBpZiAoXy5pc05pbChyZXEucmVtb3RlX3VzZXIubmFtZSkpIHtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuVU5BVVRIT1JJWkVEKTtcbiAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgbWVzc2FnZTogQVBJX0VSUk9SLk1VU1RfQkVfTE9HR0VELFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBwYXNzd29yZCwgdGZhIH0gPSByZXEuYm9keTtcbiAgICBjb25zdCB7IG5hbWUgfSA9IHJlcS5yZW1vdGVfdXNlcjtcblxuICAgIGlmIChfLmlzTmlsKHBhc3N3b3JkKSA9PT0gZmFsc2UpIHtcbiAgICAgIGlmICh2YWxpZGF0ZVBhc3N3b3JkKHBhc3N3b3JkLm5ldykgPT09IGZhbHNlKSB7XG4gICAgICAgIC8qIGVzbGludCBuZXctY2FwOm9mZiAqL1xuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0Q29kZShIVFRQX1NUQVRVUy5VTkFVVEhPUklaRUQsIEFQSV9FUlJPUi5QQVNTV09SRF9TSE9SVCgpKSk7XG4gICAgICAgIC8qIGVzbGludCBuZXctY2FwOm9mZiAqL1xuICAgICAgfVxuXG4gICAgICBhdXRoLmNoYW5nZVBhc3N3b3JkKG5hbWUsIHBhc3N3b3JkLm9sZCwgcGFzc3dvcmQubmV3LCAoZXJyLCBpc1VwZGF0ZWQpOiAkTmV4dEZ1bmN0aW9uVmVyID0+IHtcbiAgICAgICAgaWYgKF8uaXNOdWxsKGVycikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldENvZGUoZXJyLnN0YXR1cywgZXJyLm1lc3NhZ2UpIHx8IEVycm9yQ29kZS5nZXRDb25mbGljdChlcnIubWVzc2FnZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzVXBkYXRlZCkge1xuICAgICAgICAgIHJldHVybiBuZXh0KGJ1aWxkUHJvZmlsZShyZXEucmVtb3RlX3VzZXIubmFtZSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKEFQSV9FUlJPUi5JTlRFUk5BTF9TRVJWRVJfRVJST1IpKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoXy5pc05pbCh0ZmEpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuU0VSVklDRV9VTkFWQUlMQUJMRSwgU1VQUE9SVF9FUlJPUlMuVEZBX0RJU0FCTEVEKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLklOVEVSTkFMX0VSUk9SLCBBUFBfRVJST1IuUFJPRklMRV9FUlJPUikpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHByb2ZpbGVSb3V0ZTtcbn1cbiJdfQ==
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = _default;
7
7
 
8
- var _semver = _interopRequireDefault(require("semver"));
9
-
10
8
  var _lodash = _interopRequireDefault(require("lodash"));
11
9
 
12
- var _logger = require("../../../../lib/logger");
10
+ var _semver = _interopRequireDefault(require("semver"));
13
11
 
14
12
  var _constants = require("../../../../lib/constants");
15
13
 
14
+ var _logger = require("../../../../lib/logger");
15
+
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
 
18
18
  const personMatch = (person, search) => {
@@ -213,4 +213,4 @@ function _default(route, auth, storage) {
213
213
  });
214
214
  });
215
215
  }
216
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3YxL3NlYXJjaC50cyJdLCJuYW1lcyI6WyJwZXJzb25NYXRjaCIsInBlcnNvbiIsInNlYXJjaCIsImluY2x1ZGVzIiwiZmllbGQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJtYXRjaGVyIiwicXVlcnkiLCJtYXRjaCIsInBrZyIsImF1dGhvciIsIm1hcCIsImsiLCJmaWx0ZXIiLCJ4IiwidW5kZWZpbmVkIiwic29tZSIsInR4dCIsImNvbXBpbGVUZXh0U2VhcmNoIiwidGV4dFNlYXJjaCIsInRleHRNYXRjaGVycyIsInNwbGl0IiwiZXZlcnkiLCJtIiwicmVtb3ZlRHVwbGljYXRlcyIsInJlc3VsdHMiLCJwa2dOYW1lcyIsInBhY2thZ2UiLCJuYW1lIiwicHVzaCIsImNoZWNrQWNjZXNzIiwiYXV0aCIsInJlbW90ZVVzZXIiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImFsbG93X2FjY2VzcyIsInBhY2thZ2VOYW1lIiwiZXJyIiwiYWxsb3dlZCIsInN0YXR1cyIsIlN0cmluZyIsInNlbmRSZXNwb25zZSIsInJlc3VsdEJ1ZiIsInJlc3VsdFN0cmVhbSIsInJlcSIsImZyb20iLCJzaXplIiwiZGVzdHJveSIsInJlc3VsdHNDb2xsZWN0aW9uIiwiZmxhZ3MiLCJ1bnN0YWJsZSIsImtleXMiLCJ2ZXJzaW9ucyIsInYiLCJzZW12ZXIiLCJzYXRpc2ZpZXMiLCJsb2NhbCIsInNjb3JlIiwiZmluYWwiLCJkZXRhaWwiLCJxdWFsaXR5IiwicG9wdWxhcml0eSIsIm1haW50ZW5hbmNlIiwic2VhcmNoU2NvcmUiLCJjaGVja0FjY2Vzc1Byb21pc2VzIiwiYWxsIiwicGtnSXRlbSIsInJlbW90ZV91c2VyIiwiaSIsIl8iLCJpc051bGwiLCJzbGljZSIsImxvZ2dlciIsImRlYnVnIiwibGVuZ3RoIiwicmVzcG9uc2UiLCJvYmplY3RzIiwidG90YWwiLCJ0aW1lIiwiRGF0ZSIsInRvVVRDU3RyaW5nIiwicm91dGUiLCJzdG9yYWdlIiwiZ2V0IiwicmVzIiwibmV4dCIsInRleHQiLCJwYXJzZUludCIsImlzSW50ZXJlc3RpbmciLCJjb21wbGV0ZWQiLCJvbiIsImlzQXJyYXkiLCJjb25jYXQiLCJlcnJvciIsInNvY2tldCIsImluZm8iLCJIVFRQX1NUQVRVUyIsIk9LIiwianNvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUVBOztBQUNBOzs7O0FBNkNBLE1BQU1BLFdBQVcsR0FBRyxDQUFDQyxNQUFELEVBQVNDLE1BQVQsS0FBb0I7QUFDdEMsTUFBSSxPQUFPRCxNQUFQLEtBQWtCLFFBQXRCLEVBQWdDO0FBQzlCLFdBQU9BLE1BQU0sQ0FBQ0UsUUFBUCxDQUFnQkQsTUFBaEIsQ0FBUDtBQUNEOztBQUVELE1BQUksT0FBT0QsTUFBUCxLQUFrQixRQUF0QixFQUFnQztBQUM5QixTQUFLLE1BQU1HLEtBQVgsSUFBb0JDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjTCxNQUFkLENBQXBCLEVBQTJDO0FBQ3pDLFVBQUksT0FBT0csS0FBUCxLQUFpQixRQUFqQixJQUE2QkEsS0FBSyxDQUFDRCxRQUFOLENBQWVELE1BQWYsQ0FBakMsRUFBeUQ7QUFDdkQsZUFBTyxJQUFQO0FBQ0Q7QUFDRjtBQUNGOztBQUVELFNBQU8sS0FBUDtBQUNELENBZEQ7O0FBZ0JBLE1BQU1LLE9BQU8sR0FBRyxVQUFVQyxLQUFWLEVBQWlCO0FBQy9CLFFBQU1DLEtBQUssR0FBR0QsS0FBSyxDQUFDQyxLQUFOLENBQVksYUFBWixDQUFkOztBQUNBLE1BQUlBLEtBQUssS0FBSyxJQUFkLEVBQW9CO0FBQ2xCLFdBQU8sVUFBVUMsR0FBVixFQUFlO0FBQ3BCLGFBQU9WLFdBQVcsQ0FBQ1UsR0FBRyxDQUFDQyxNQUFMLEVBQWFGLEtBQUssQ0FBQyxDQUFELENBQWxCLENBQWxCO0FBQ0QsS0FGRDtBQUdELEdBTjhCLENBUS9CO0FBQ0E7OztBQUNBLFNBQVFDLEdBQUQsSUFBUztBQUNkLFdBQU8sQ0FBQyxNQUFELEVBQVMsYUFBVCxF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RixnQkFBTWQsUUFBUSxHQUFHLE1BQU1sQyxZQUFZLENBQUNDLFNBQUQsRUFBWUMsWUFBWixFQUEwQmIsSUFBMUIsRUFBZ0NjLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQ0MsSUFBM0MsQ0FBbkM7O0FBQ0EwQix5QkFBT3VCLElBQVAsQ0FBWSxxQ0FBWixFQUFtRDtBQUFFbEIsWUFBQUEsS0FBSyxFQUFFRixRQUFRLENBQUNFO0FBQWxCLFdBQW5EOztBQUNBTyxVQUFBQSxHQUFHLENBQUM3QyxNQUFKLENBQVd5RCx1QkFBWUMsRUFBdkIsRUFBMkJDLElBQTNCLENBQWdDdkIsUUFBaEM7QUFDRCxTQUpELENBSUUsT0FBT3RDLEdBQVAsRUFBWTtBQUNabUMseUJBQU9xQixLQUFQLENBQWEsbUNBQWIsRUFBa0Q7QUFBRXhELFlBQUFBO0FBQUYsV0FBbEQ7O0FBQ0FnRCxVQUFBQSxJQUFJLENBQUNoRCxHQUFELENBQUo7QUFDRDtBQUNGO0FBQ0YsS0FaRDtBQWFELEdBdEREO0FBdUREIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHsgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi8uLi9saWIvY29uc3RhbnRzJztcblxudHlwZSBQdWJsaXNoZXJNYWludGFpbmVyID0ge1xuICB1c2VybmFtZTogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xufTtcblxudHlwZSBQYWNrYWdlUmVzdWx0cyA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBzY29wZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgbGlua3M6IHtcbiAgICBucG06IHN0cmluZztcbiAgICBob21lcGFnZT86IHN0cmluZztcbiAgICByZXBvc2l0b3J5Pzogc3RyaW5nO1xuICAgIGJ1Z3M/OiBzdHJpbmc7XG4gIH07XG4gIGF1dGhvcjogeyBuYW1lOiBzdHJpbmcgfTtcbiAgcHVibGlzaGVyOiBQdWJsaXNoZXJNYWludGFpbmVyO1xuICBtYWludGFpbmVyOiBQdWJsaXNoZXJNYWludGFpbmVyO1xufTtcblxudHlwZSBTZWFyY2hSZXN1bHQgPSB7XG4gIHBhY2thZ2U6IFBhY2thZ2VSZXN1bHRzO1xuICBmbGFncz86IHsgdW5zdGFibGU6IGJvb2xlYW4gfCB2b2lkIH07XG4gIGxvY2FsPzogYm9vbGVhbjtcbiAgc2NvcmU6IHtcbiAgICBmaW5hbDogbnVtYmVyO1xuICAgIGRldGFpbDoge1xuICAgICAgcXVhbGl0eTogbnVtYmVyO1xuICAgICAgcG9wdWxhcml0eTogbnVtYmVyO1xuICAgICAgbWFpbnRlbmFuY2U6IG51bWJlcjtcbiAgICB9O1xuICB9O1xuICBzZWFyY2hTY29yZTogbnVtYmVyO1xufTtcblxudHlwZSBTZWFyY2hSZXN1bHRzID0ge1xuICBvYmplY3RzOiBTZWFyY2hSZXN1bHRbXTtcbiAgdG90YWw6IG51bWJlcjtcbiAgdGltZTogc3RyaW5nO1xufTtcblxuY29uc3QgcGVyc29uTWF0Y2ggPSAocGVyc29uLCBzZWFyY2gpID0+IHtcbiAgaWYgKHR5cGVvZiBwZXJzb24gPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBlcnNvbi5pbmNsdWRlcyhzZWFyY2gpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBwZXJzb24gPT09ICdvYmplY3QnKSB7XG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBPYmplY3QudmFsdWVzKHBlcnNvbikpIHtcbiAgICAgIGlmICh0eXBlb2YgZmllbGQgPT09ICdzdHJpbmcnICYmIGZpZWxkLmluY2x1ZGVzKHNlYXJjaCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuY29uc3QgbWF0Y2hlciA9IGZ1bmN0aW9uIChxdWVyeSkge1xuICBjb25zdCBtYXRjaCA9IHF1ZXJ5Lm1hdGNoKC9hdXRob3I6KC4qKS8pO1xuICBpZiAobWF0Y2ggIT09IG51bGwpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHBrZykge1xuICAgICAgcmV0dXJuIHBlcnNvbk1hdGNoKHBrZy5hdXRob3IsIG1hdGNoWzFdKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gVE9ETzogbWFpbnRhaW5lciwga2V5d29yZHMsIGJvb3N0LWV4YWN0XG4gIC8vIFRPRE8gaW1wbGVtZW50IHNvbWUgc2NvcmluZyBzeXN0ZW0gZm9yIGZyZWV0ZXh0XG4gIHJldHVybiAocGtnKSA9PiB7XG4gICAgcmV0dXJuIFsnbmFtZScsICdkaXNwbGF5TmFtZScsICdkZXNjcmlwdGlvbiddXG4gICAgICAubWFwKChrKSA9PiB7XG4gICAgICAgIHJldHVybiBwa2dba107XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoeCkgPT4ge1xuICAgICAgICByZXR1cm4geCAhPT0gdW5kZWZpbmVkO1xuICAgICAgfSlcbiAgICAgIC5zb21lKCh0eHQpID0+IHtcbiAgICAgICAgcmV0dXJuIHR4dC5pbmNsdWRlcyhxdWVyeSk7XG4gICAgICB9KTtcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGNvbXBpbGVUZXh0U2VhcmNoKHRleHRTZWFyY2g6IHN0cmluZyk6IChwa2c6IFBhY2thZ2VSZXN1bHRzKSA9PiBib29sZWFuIHtcbiAgY29uc3QgdGV4dE1hdGNoZXJzID0gKHRleHRTZWFyY2ggfHwgJycpLnNwbGl0KCcgJykubWFwKG1hdGNoZXIpO1xuICByZXR1cm4gKHBrZykgPT4gdGV4dE1hdGNoZXJzLmV2ZXJ5KChtKSA9PiBtKHBrZykpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVzKHJlc3VsdHMpIHtcbiAgY29uc3QgcGtnTmFtZXM6IGFueVtdID0gW107XG4gIHJldHVybiByZXN1bHRzLmZpbHRlcigocGtnKSA9PiB7XG4gICAgaWYgKHBrZ05hbWVzLmluY2x1ZGVzKHBrZz8ucGFja2FnZT8ubmFtZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcGtnTmFtZXMucHVzaChwa2c/LnBhY2thZ2U/Lm5hbWUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gY2hlY2tBY2Nlc3MocGtnOiBhbnksIGF1dGg6IGFueSwgcmVtb3RlVXNlcik6IFByb21pc2U8UGFja2FnZSB8IG51bGw+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBhdXRoLmFsbG93X2FjY2Vzcyh7IHBhY2thZ2VOYW1lOiBwa2c/LnBhY2thZ2U/Lm5hbWUgfSwgcmVtb3RlVXNlciwgZnVuY3Rpb24gKGVyciwgYWxsb3dlZCkge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBpZiAoZXJyLnN0YXR1cyAmJiBTdHJpbmcoZXJyLnN0YXR1cykubWF0Y2goL140XFxkXFxkJC8pKSB7XG4gICAgICAgICAgLy8gYXV0aCBwbHVnaW4gcmV0dXJucyA0eHggdXNlciBlcnJvcixcbiAgICAgICAgICAvLyB0aGF0J3MgZXF1aXZhbGVudCBvZiAhYWxsb3dlZCBiYXNpY2FsbHlcbiAgICAgICAgICBhbGxvd2VkID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKGFsbG93ZWQgPyBwa2cgOiBudWxsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRSZXNwb25zZShyZXN1bHRCdWYsIHJlc3VsdFN0cmVhbSwgYXV0aCwgcmVxLCBmcm9tOiBudW1iZXIsIHNpemU6IG51bWJlcik6IFByb21pc2U8U2VhcmNoUmVzdWx0cz4ge1xuICByZXN1bHRTdHJlYW0uZGVzdHJveSgpO1xuICBjb25zdCByZXN1bHRzQ29sbGVjdGlvbiA9IHJlc3VsdEJ1Zi5tYXAoKHBrZyk6IFNlYXJjaFJlc3VsdCA9PiB7XG4gICAgaWYgKHBrZz8ubmFtZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFja2FnZTogcGtnLFxuICAgICAgICAvLyBub3Qgc3VyZSBpZiBmbGFncyBpcyBuZWVkIGl0XG4gICAgICAgIGZsYWdzOiB7XG4gICAgICAgICAgdW5zdGFibGU6IE9iamVjdC5rZXlzKHBrZy52ZXJzaW9ucykuc29tZSgodikgPT4gc2VtdmVyLnNhdGlzZmllcyh2LCAnXjEuMC4wJykpID8gdW5kZWZpbmVkIDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbG9jYWw6IHRydWUsXG4gICAgICAgIHNjb3JlOiB7XG4gICAgICAgICAgZmluYWw6IDEsXG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICBxdWFsaXR5OiAxLFxuICAgICAgICAgICAgcG9wdWxhcml0eTogMSxcbiAgICAgICAgICAgIG1haW50ZW5hbmNlOiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNlYXJjaFNjb3JlOiAxMDAwMDAsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGtnO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGNoZWNrQWNjZXNzUHJvbWlzZXM6IFNlYXJjaFJlc3VsdFtdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcmVtb3ZlRHVwbGljYXRlcyhyZXN1bHRzQ29sbGVjdGlvbikubWFwKChwa2dJdGVtKSA9PiB7XG4gICAgICByZXR1cm4gY2hlY2tBY2Nlc3MocGtnSXRlbSwgYXV0aCwgcmVxLnJlbW90ZV91c2VyKTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0IGZpbmFsOiBTZWFyY2hSZXN1bHRbXSA9IGNoZWNrQWNjZXNzUHJvbWlzZXMuZmlsdGVyKChpKSA9PiAhXy5pc051bGwoaSkpLnNsaWNlKGZyb20sIHNpemUpO1xuICBsb2dnZXIuZGVidWcoYHNlYXJjaCByZXN1bHRzICR7ZmluYWw/Lmxlbmd0aH1gKTtcblxuICBjb25zdCByZXNwb25zZTogU2VhcmNoUmVzdWx0cyA9IHtcbiAgICBvYmplY3RzOiBmaW5hbCxcbiAgICB0b3RhbDogZmluYWwubGVuZ3RoLFxuICAgIHRpbWU6IG5ldyBEYXRlKCkudG9VVENTdHJpbmcoKSxcbiAgfTtcblxuICBsb2dnZXIuZGVidWcoYHRvdGFsIHJlc3BvbnNlICR7ZmluYWwubGVuZ3RofWApO1xuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cbi8qKlxuICogRW5kcG9pbnQgZm9yIG5wbSBzZWFyY2ggdjFcbiAqIHJlcTogJ0dFVCAvLS92MS9zZWFyY2g/dGV4dD1yZWFjdCZzaXplPTIwJmZyb209MCZxdWFsaXR5PTAuNjUmcG9wdWxhcml0eT0wLjk4Jm1haW50ZW5hbmNlPTAuNSdcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlLCBhdXRoLCBzdG9yYWdlKTogdm9pZCB7XG4gIHJvdXRlLmdldCgnLy0vdjEvc2VhcmNoJywgYXN5bmMgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgLy8gVE9ETzogaW1wbGVtZW50IHByb3BlciByZXN1bHQgc2NvcmluZyB3ZWlnaHRlZCBieSBxdWFsaXR5LCBwb3B1bGFyaXR5IGFuZCBtYWludGVuYW5jZSBxdWVyeSBwYXJhbWV0ZXJzXG4gICAgbGV0IFt0ZXh0LCBzaXplLCBmcm9tIC8qICwgcXVhbGl0eSwgcG9wdWxhcml0eSwgbWFpbnRlbmFuY2UgKi9dID0gWyd0ZXh0JywgJ3NpemUnLCAnZnJvbScgLyogLCAncXVhbGl0eScsICdwb3B1bGFyaXR5JywgJ21haW50ZW5hbmNlJyAqL10ubWFwKChrKSA9PiByZXEucXVlcnlba10pO1xuXG4gICAgc2l6ZSA9IHBhcnNlSW50KHNpemUpIHx8IDIwO1xuICAgIGZyb20gPSBwYXJzZUludChmcm9tKSB8fCAwO1xuXG4gICAgY29uc3QgaXNJbnRlcmVzdGluZyA9IGNvbXBpbGVUZXh0U2VhcmNoKHRleHQpO1xuXG4gICAgY29uc3QgcmVzdWx0U3RyZWFtID0gc3RvcmFnZS5zZWFyY2goMCwgeyByZXEgfSk7XG4gICAgbGV0IHJlc3VsdEJ1ZiA9IFtdIGFzIGFueTtcbiAgICBsZXQgY29tcGxldGVkID0gZmFsc2U7XG5cbiAgICByZXN1bHRTdHJlYW0ub24oJ2RhdGEnLCAocGtnOiBTZWFyY2hSZXN1bHRbXSB8IFBhY2thZ2VSZXN1bHRzKSA9PiB7XG4gICAgICAvLyBwYWNrYWdlcyBmcm9tIHRoZSB1cHN0cmVhbXNcbiAgICAgIGlmIChfLmlzQXJyYXkocGtnKSkge1xuICAgICAgICByZXN1bHRCdWYgPSByZXN1bHRCdWYuY29uY2F0KFxuICAgICAgICAgIChwa2cgYXMgU2VhcmNoUmVzdWx0W10pLmZpbHRlcigocGtnSXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc0ludGVyZXN0aW5nKHBrZ0l0ZW0/LnBhY2thZ2UpKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgW3JlbW90ZV0gcGtnIG5hbWUgJHtwa2dJdGVtPy5wYWNrYWdlPy5uYW1lfWApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHBhY2thZ2VzIGZyb20gbG9jYWxcbiAgICAgICAgLy8gZHVlIGNvbXBhYmlsaXR5IHdpdGggYC8tL2FsbGAgd2UgY2Fubm90IHJlZmFjdG9yIHN0b3JhZ2Uuc2VhcmNoKCk7XG4gICAgICAgIGlmICghaXNJbnRlcmVzdGluZyhwa2cpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgW2xvY2FsXSBwa2cgbmFtZSAkeyhwa2cgYXMgUGFja2FnZVJlc3VsdHMpPy5uYW1lfWApO1xuICAgICAgICByZXN1bHRCdWYucHVzaChwa2cpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVzdWx0U3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignc2VhcmNoIGVuZHBvaW50IGhhcyBmYWlsZWQnKTtcbiAgICAgIHJlcy5zb2NrZXQuZGVzdHJveSgpO1xuICAgIH0pO1xuXG4gICAgcmVzdWx0U3RyZWFtLm9uKCdlbmQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIWNvbXBsZXRlZCkge1xuICAgICAgICBjb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VuZFJlc3BvbnNlKHJlc3VsdEJ1ZiwgcmVzdWx0U3RyZWFtLCBhdXRoLCByZXEsIGZyb20sIHNpemUpO1xuICAgICAgICAgIGxvZ2dlci5pbmZvKCdzZWFyY2ggZW5kcG9pbnQgb2sgcmVzdWx0cyBAe3RvdGFsfScsIHsgdG90YWw6IHJlc3BvbnNlLnRvdGFsIH0pO1xuICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuT0spLmpzb24ocmVzcG9uc2UpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoJ3NlYXJjaCBlbmRwb2ludCBoYXMgZmFpbGVkIEB7ZXJyfScsIHsgZXJyIH0pO1xuICAgICAgICAgIG5leHQoZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==
216
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3YxL3NlYXJjaC50cyJdLCJuYW1lcyI6WyJwZXJzb25NYXRjaCIsInBlcnNvbiIsInNlYXJjaCIsImluY2x1ZGVzIiwiZmllbGQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJtYXRjaGVyIiwicXVlcnkiLCJtYXRjaCIsInBrZyIsImF1dGhvciIsIm1hcCIsImsiLCJmaWx0ZXIiLCJ4IiwidW5kZWZpbmVkIiwic29tZSIsInR4dCIsImNvbXBpbGVUZXh0U2VhcmNoIiwidGV4dFNlYXJjaCIsInRleHRNYXRjaGVycyIsInNwbGl0IiwiZXZlcnkiLCJtIiwicmVtb3ZlRHVwbGljYXRlcyIsInJlc3VsdHMiLCJwa2dOYW1lcyIsInBhY2thZ2UiLCJuYW1lIiwicHVzaCIsImNoZWNrQWNjZXNzIiwiYXV0aCIsInJlbW90ZVVzZXIiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImFsbG93X2FjY2VzcyIsInBhY2thZ2VOYW1lIiwiZXJyIiwiYWxsb3dlZCIsInN0YXR1cyIsIlN0cmluZyIsInNlbmRSZXNwb25zZSIsInJlc3VsdEJ1ZiIsInJlc3VsdFN0cmVhbSIsInJlcSIsImZyb20iLCJzaXplIiwiZGVzdHJveSIsInJlc3VsdHNDb2xsZWN0aW9uIiwiZmxhZ3MiLCJ1bnN0YWJsZSIsImtleXMiLCJ2ZXJzaW9ucyIsInYiLCJzZW12ZXIiLCJzYXRpc2ZpZXMiLCJsb2NhbCIsInNjb3JlIiwiZmluYWwiLCJkZXRhaWwiLCJxdWFsaXR5IiwicG9wdWxhcml0eSIsIm1haW50ZW5hbmNlIiwic2VhcmNoU2NvcmUiLCJjaGVja0FjY2Vzc1Byb21pc2VzIiwiYWxsIiwicGtnSXRlbSIsInJlbW90ZV91c2VyIiwiaSIsIl8iLCJpc051bGwiLCJzbGljZSIsImxvZ2dlciIsImRlYnVnIiwibGVuZ3RoIiwicmVzcG9uc2UiLCJvYmplY3RzIiwidG90YWwiLCJ0aW1lIiwiRGF0ZSIsInRvVVRDU3RyaW5nIiwicm91dGUiLCJzdG9yYWdlIiwiZ2V0IiwicmVzIiwibmV4dCIsInRleHQiLCJwYXJzZUludCIsImlzSW50ZXJlc3RpbmciLCJjb21wbGV0ZWQiLCJvbiIsImlzQXJyYXkiLCJjb25jYXQiLCJlcnJvciIsInNvY2tldCIsImluZm8iLCJIVFRQX1NUQVRVUyIsIk9LIiwianNvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUlBOztBQUNBOzs7O0FBNkNBLE1BQU1BLFdBQVcsR0FBRyxDQUFDQyxNQUFELEVBQVNDLE1BQVQsS0FBb0I7QUFDdEMsTUFBSSxPQUFPRCxNQUFQLEtBQWtCLFFBQXRCLEVBQWdDO0FBQzlCLFdBQU9BLE1BQU0sQ0FBQ0UsUUFBUCxDQUFnQkQsTUFBaEIsQ0FBUDtBQUNEOztBQUVELE1BQUksT0FBT0QsTUFBUCxLQUFrQixRQUF0QixFQUFnQztBQUM5QixTQUFLLE1BQU1HLEtBQVgsSUFBb0JDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjTCxNQUFkLENBQXBCLEVBQTJDO0FBQ3pDLFVBQUksT0FBT0csS0FBUCxLQUFpQixRQUFqQixJQUE2QkEsS0FBSyxDQUFDRCxRQUFOLENBQWVELE1BQWYsQ0FBakMsRUFBeUQ7QUFDdkQsZUFBTyxJQUFQO0FBQ0Q7QUFDRjtBQUNGOztBQUVELFNBQU8sS0FBUDtBQUNELENBZEQ7O0FBZ0JBLE1BQU1LLE9BQU8sR0FBRyxVQUFVQyxLQUFWLEVBQWlCO0FBQy9CLFFBQU1DLEtBQUssR0FBR0QsS0FBSyxDQUFDQyxLQUFOLENBQVksYUFBWixDQUFkOztBQUNBLE1BQUlBLEtBQUssS0FBSyxJQUFkLEVBQW9CO0FBQ2xCLFdBQU8sVUFBVUMsR0FBVixFQUFlO0FBQ3BCLGFBQU9WLFdBQVcsQ0FBQ1UsR0FBRyxDQUFDQyxNQUFMLEVBQWFGLEtBQUssQ0FBQyxDQUFELENBQWxCLENBQWxCO0FBQ0QsS0FGRDtBQUdELEdBTjhCLENBUS9CO0FBQ0E7OztBQUNBLFNBQVFDLEdBQUQsSUFBUztBQUNkLFdBQU8sQ0FBQyxNQUFELEVBQVMsYUFBVCxFQUF3QixhQUF4QixFQUNKRSxHQURJLENBQ0NDLENBQUQsSUFBTztBQUNWLGFBQU9ILEdBQUcsQ0FBQ0csQ0FBRCxDQUFWO0FBQ0QsS0FISSxFQUlKQyxNQUpJLENBSUlDLENBQUQsSUFBTztBQUNiLGFBQU9BLENBQUMsS0FBS0MsU0FBYjtBQUNELEtBTkksRUFPSkMsSUFQSSxDQU9FQyxHQUFELElBQVM7QUFDYixhQUFPQSxHQUFHLENBQUNmLFFBQUosQ0FBYUssS0FBYixDQUFQO0FBQ0QsS0FUSSxDQUFQO0FBVUQsR0FYRDtBQVlELENBdEJEOztBQXdCQSxTQUFTVyxpQkFBVCxDQUEyQkMsVUFBM0IsRUFBaUY7QUFDL0UsUUFBTUMsWUFBWSxHQUFHLENBQUNELFVBQVUsSUFBSSxFQUFmLEVBQW1CRSxLQUFuQixDQUF5QixHQUF6QixFQUE4QlYsR0FBOUIsQ0FBa0NMLE9BQWxDLENBQXJCO0FBQ0EsU0FBUUcsR0FBRCxJQUFTVyxZQUFZLENBQUNFLEtBQWIsQ0FBb0JDLENBQUQsSUFBT0EsQ0FBQyxDQUFDZCxHQUFELENBQTNCLENBQWhCO0FBQ0Q7O0FBRUQsU0FBU2UsZ0JBQVQsQ0FBMEJDLE9BQTFCLEVBQW1DO0FBQ2pDLFFBQU1DLFFBQWUsR0FBRyxFQUF4QjtBQUNBLFNBQU9ELE9BQU8sQ0FBQ1osTUFBUixDQUFnQkosR0FBRCxJQUFTO0FBQUE7O0FBQzdCLFFBQUlpQixRQUFRLENBQUN4QixRQUFULENBQWtCTyxHQUFsQixhQUFrQkEsR0FBbEIsdUNBQWtCQSxHQUFHLENBQUVrQixPQUF2QixpREFBa0IsYUFBY0MsSUFBaEMsQ0FBSixFQUEyQztBQUN6QyxhQUFPLEtBQVA7QUFDRDs7QUFDREYsSUFBQUEsUUFBUSxDQUFDRyxJQUFULENBQWNwQixHQUFkLGFBQWNBLEdBQWQsd0NBQWNBLEdBQUcsQ0FBRWtCLE9BQW5CLGtEQUFjLGNBQWNDLElBQTVCO0FBQ0EsV0FBTyxJQUFQO0FBQ0QsR0FOTSxDQUFQO0FBT0Q7O0FBRUQsU0FBU0UsV0FBVCxDQUFxQnJCLEdBQXJCLEVBQStCc0IsSUFBL0IsRUFBMENDLFVBQTFDLEVBQStFO0FBQzdFLFNBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUFBOztBQUN0Q0osSUFBQUEsSUFBSSxDQUFDSyxZQUFMLENBQWtCO0FBQUVDLE1BQUFBLFdBQVcsRUFBRTVCLEdBQUYsYUFBRUEsR0FBRix3Q0FBRUEsR0FBRyxDQUFFa0IsT0FBUCxrREFBRSxjQUFjQztBQUE3QixLQUFsQixFQUF1REksVUFBdkQsRUFBbUUsVUFBVU0sR0FBVixFQUFlQyxPQUFmLEVBQXdCO0FBQ3pGLFVBQUlELEdBQUosRUFBUztBQUNQLFlBQUlBLEdBQUcsQ0FBQ0UsTUFBSixJQUFjQyxNQUFNLENBQUNILEdBQUcsQ0FBQ0UsTUFBTCxDQUFOLENBQW1CaEMsS0FBbkIsQ0FBeUIsU0FBekIsQ0FBbEIsRUFBdUQ7QUFDckQ7QUFDQTtBQUNBK0IsVUFBQUEsT0FBTyxHQUFHLEtBQVY7QUFDQSxpQkFBT0wsT0FBTyxDQUFDLElBQUQsQ0FBZDtBQUNELFNBTEQsTUFLTztBQUNMQyxVQUFBQSxNQUFNLENBQUNHLEdBQUQsQ0FBTjtBQUNEO0FBQ0YsT0FURCxNQVNPO0FBQ0wsZUFBT0osT0FBTyxDQUFDSyxPQUFPLEdBQUc5QixHQUFILEdBQVMsSUFBakIsQ0FBZDtBQUNEO0FBQ0YsS0FiRDtBQWNELEdBZk0sQ0FBUDtBQWdCRDs7QUFFRCxlQUFlaUMsWUFBZixDQUE0QkMsU0FBNUIsRUFBdUNDLFlBQXZDLEVBQXFEYixJQUFyRCxFQUEyRGMsR0FBM0QsRUFBZ0VDLElBQWhFLEVBQThFQyxJQUE5RSxFQUFvSDtBQUNsSEgsRUFBQUEsWUFBWSxDQUFDSSxPQUFiO0FBQ0EsUUFBTUMsaUJBQWlCLEdBQUdOLFNBQVMsQ0FBQ2hDLEdBQVYsQ0FBZUYsR0FBRCxJQUF1QjtBQUM3RCxRQUFJQSxHQUFKLGFBQUlBLEdBQUosZUFBSUEsR0FBRyxDQUFFbUIsSUFBVCxFQUFlO0FBQ2IsYUFBTztBQUNMRCxRQUFBQSxPQUFPLEVBQUVsQixHQURKO0FBRUw7QUFDQXlDLFFBQUFBLEtBQUssRUFBRTtBQUNMQyxVQUFBQSxRQUFRLEVBQUUvQyxNQUFNLENBQUNnRCxJQUFQLENBQVkzQyxHQUFHLENBQUM0QyxRQUFoQixFQUEwQnJDLElBQTFCLENBQWdDc0MsQ0FBRCxJQUFPQyxnQkFBT0MsU0FBUCxDQUFpQkYsQ0FBakIsRUFBb0IsUUFBcEIsQ0FBdEMsSUFBdUV2QyxTQUF2RSxHQUFtRjtBQUR4RixTQUhGO0FBTUwwQyxRQUFBQSxLQUFLLEVBQUUsSUFORjtBQU9MQyxRQUFBQSxLQUFLLEVBQUU7QUFDTEMsVUFBQUEsS0FBSyxFQUFFLENBREY7QUFFTEMsVUFBQUEsTUFBTSxFQUFFO0FBQ05DLFlBQUFBLE9BQU8sRUFBRSxDQURIO0FBRU5DLFlBQUFBLFVBQVUsRUFBRSxDQUZOO0FBR05DLFlBQUFBLFdBQVcsRUFBRTtBQUhQO0FBRkgsU0FQRjtBQWVMQyxRQUFBQSxXQUFXLEVBQUU7QUFmUixPQUFQO0FBaUJELEtBbEJELE1Ba0JPO0FBQ0wsYUFBT3ZELEdBQVA7QUFDRDtBQUNGLEdBdEJ5QixDQUExQjtBQXVCQSxRQUFNd0QsbUJBQW1DLEdBQUcsTUFBTWhDLE9BQU8sQ0FBQ2lDLEdBQVIsQ0FDaEQxQyxnQkFBZ0IsQ0FBQ3lCLGlCQUFELENBQWhCLENBQW9DdEMsR0FBcEMsQ0FBeUN3RCxPQUFELElBQWE7QUFDbkQsV0FBT3JDLFdBQVcsQ0FBQ3FDLE9BQUQsRUFBVXBDLElBQVYsRUFBZ0JjLEdBQUcsQ0FBQ3VCLFdBQXBCLENBQWxCO0FBQ0QsR0FGRCxDQURnRCxDQUFsRDtBQU1BLFFBQU1ULEtBQXFCLEdBQUdNLG1CQUFtQixDQUFDcEQsTUFBcEIsQ0FBNEJ3RCxDQUFELElBQU8sQ0FBQ0MsZ0JBQUVDLE1BQUYsQ0FBU0YsQ0FBVCxDQUFuQyxFQUFnREcsS0FBaEQsQ0FBc0QxQixJQUF0RCxFQUE0REMsSUFBNUQsQ0FBOUI7O0FBQ0EwQixpQkFBT0MsS0FBUCxDQUFjLGtCQUFpQmYsS0FBbEIsYUFBa0JBLEtBQWxCLHVCQUFrQkEsS0FBSyxDQUFFZ0IsTUFBTyxFQUE3Qzs7QUFFQSxRQUFNQyxRQUF1QixHQUFHO0FBQzlCQyxJQUFBQSxPQUFPLEVBQUVsQixLQURxQjtBQUU5Qm1CLElBQUFBLEtBQUssRUFBRW5CLEtBQUssQ0FBQ2dCLE1BRmlCO0FBRzlCSSxJQUFBQSxJQUFJLEVBQUUsSUFBSUMsSUFBSixHQUFXQyxXQUFYO0FBSHdCLEdBQWhDOztBQU1BUixpQkFBT0MsS0FBUCxDQUFjLGtCQUFpQmYsS0FBSyxDQUFDZ0IsTUFBTyxFQUE1Qzs7QUFDQSxTQUFPQyxRQUFQO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ2Usa0JBQVVNLEtBQVYsRUFBaUJuRCxJQUFqQixFQUF1Qm9ELE9BQXZCLEVBQXNDO0FBQ25ERCxFQUFBQSxLQUFLLENBQUNFLEdBQU4sQ0FBVSxjQUFWLEVBQTBCLE9BQU92QyxHQUFQLEVBQVl3QyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUNsRDtBQUNBLFFBQUksQ0FBQ0MsSUFBRCxFQUFPeEMsSUFBUCxFQUFhRDtBQUFLO0FBQWxCLFFBQThELENBQUMsTUFBRCxFQUFTLE1BQVQsRUFBaUI7QUFBTztBQUF4QixNQUF3RW5DLEdBQXhFLENBQTZFQyxDQUFELElBQU9pQyxHQUFHLENBQUN0QyxLQUFKLENBQVVLLENBQVYsQ0FBbkYsQ0FBbEU7QUFFQW1DLElBQUFBLElBQUksR0FBR3lDLFFBQVEsQ0FBQ3pDLElBQUQsQ0FBUixJQUFrQixFQUF6QjtBQUNBRCxJQUFBQSxJQUFJLEdBQUcwQyxRQUFRLENBQUMxQyxJQUFELENBQVIsSUFBa0IsQ0FBekI7QUFFQSxVQUFNMkMsYUFBYSxHQUFHdkUsaUJBQWlCLENBQUNxRSxJQUFELENBQXZDO0FBRUEsVUFBTTNDLFlBQVksR0FBR3VDLE9BQU8sQ0FBQ2xGLE1BQVIsQ0FBZSxDQUFmLEVBQWtCO0FBQUU0QyxNQUFBQTtBQUFGLEtBQWxCLENBQXJCO0FBQ0EsUUFBSUYsU0FBUyxHQUFHLEVBQWhCO0FBQ0EsUUFBSStDLFNBQVMsR0FBRyxLQUFoQjtBQUVBOUMsSUFBQUEsWUFBWSxDQUFDK0MsRUFBYixDQUFnQixNQUFoQixFQUF5QmxGLEdBQUQsSUFBMEM7QUFDaEU7QUFDQSxVQUFJNkQsZ0JBQUVzQixPQUFGLENBQVVuRixHQUFWLENBQUosRUFBb0I7QUFDbEJrQyxRQUFBQSxTQUFTLEdBQUdBLFNBQVMsQ0FBQ2tELE1BQVYsQ0FDVHBGLEdBQUQsQ0FBd0JJLE1BQXhCLENBQWdDc0QsT0FBRCxJQUFhO0FBQUE7O0FBQzFDLGNBQUksQ0FBQ3NCLGFBQWEsQ0FBQ3RCLE9BQUQsYUFBQ0EsT0FBRCx1QkFBQ0EsT0FBTyxDQUFFeEMsT0FBVixDQUFsQixFQUFzQztBQUNwQztBQUNEOztBQUNEOEMseUJBQU9DLEtBQVAsQ0FBYyxxQkFBb0JQLE9BQXJCLGFBQXFCQSxPQUFyQiwyQ0FBcUJBLE9BQU8sQ0FBRXhDLE9BQTlCLHFEQUFxQixpQkFBa0JDLElBQUssRUFBekQ7O0FBQ0EsaUJBQU8sSUFBUDtBQUNELFNBTkQsQ0FEVSxDQUFaO0FBU0QsT0FWRCxNQVVPO0FBQ0w7QUFDQTtBQUNBLFlBQUksQ0FBQzZELGFBQWEsQ0FBQ2hGLEdBQUQsQ0FBbEIsRUFBeUI7QUFDdkI7QUFDRDs7QUFDRGdFLHVCQUFPQyxLQUFQLENBQWMsb0JBQW9CakUsR0FBckIsYUFBcUJBLEdBQXJCLHVCQUFxQkEsR0FBRCxDQUF5Qm1CLElBQUssRUFBL0Q7O0FBQ0FlLFFBQUFBLFNBQVMsQ0FBQ2QsSUFBVixDQUFlcEIsR0FBZjtBQUNEO0FBQ0YsS0FyQkQ7QUF1QkFtQyxJQUFBQSxZQUFZLENBQUMrQyxFQUFiLENBQWdCLE9BQWhCLEVBQXlCLFlBQVk7QUFDbkNsQixxQkFBT3FCLEtBQVAsQ0FBYSw0QkFBYjs7QUFDQVQsTUFBQUEsR0FBRyxDQUFDVSxNQUFKLENBQVcvQyxPQUFYO0FBQ0QsS0FIRDtBQUtBSixJQUFBQSxZQUFZLENBQUMrQyxFQUFiLENBQWdCLEtBQWhCLEVBQXVCLFlBQVk7QUFDakMsVUFBSSxDQUFDRCxTQUFMLEVBQWdCO0FBQ2RBLFFBQUFBLFNBQVMsR0FBRyxJQUFaOztBQUNBLFlBQUk7QUFDRixnQkFBTWQsUUFBUSxHQUFHLE1BQU1sQyxZQUFZLENBQUNDLFNBQUQsRUFBWUMsWUFBWixFQUEwQmIsSUFBMUIsRUFBZ0NjLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQ0MsSUFBM0MsQ0FBbkM7O0FBQ0EwQix5QkFBT3VCLElBQVAsQ0FBWSxxQ0FBWixFQUFtRDtBQUFFbEIsWUFBQUEsS0FBSyxFQUFFRixRQUFRLENBQUNFO0FBQWxCLFdBQW5EOztBQUNBTyxVQUFBQSxHQUFHLENBQUM3QyxNQUFKLENBQVd5RCx1QkFBWUMsRUFBdkIsRUFBMkJDLElBQTNCLENBQWdDdkIsUUFBaEM7QUFDRCxTQUpELENBSUUsT0FBT3RDLEdBQVAsRUFBWTtBQUNabUMseUJBQU9xQixLQUFQLENBQWEsbUNBQWIsRUFBa0Q7QUFBRXhELFlBQUFBO0FBQUYsV0FBbEQ7O0FBQ0FnRCxVQUFBQSxJQUFJLENBQUNoRCxHQUFELENBQUo7QUFDRDtBQUNGO0FBQ0YsS0FaRDtBQWFELEdBdEREO0FBdUREIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcblxuaW1wb3J0IHsgUGFja2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyBIVFRQX1NUQVRVUyB9IGZyb20gJy4uLy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5cbnR5cGUgUHVibGlzaGVyTWFpbnRhaW5lciA9IHtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbn07XG5cbnR5cGUgUGFja2FnZVJlc3VsdHMgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgc2NvcGU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBkYXRlOiBzdHJpbmc7XG4gIGxpbmtzOiB7XG4gICAgbnBtOiBzdHJpbmc7XG4gICAgaG9tZXBhZ2U/OiBzdHJpbmc7XG4gICAgcmVwb3NpdG9yeT86IHN0cmluZztcbiAgICBidWdzPzogc3RyaW5nO1xuICB9O1xuICBhdXRob3I6IHsgbmFtZTogc3RyaW5nIH07XG4gIHB1Ymxpc2hlcjogUHVibGlzaGVyTWFpbnRhaW5lcjtcbiAgbWFpbnRhaW5lcjogUHVibGlzaGVyTWFpbnRhaW5lcjtcbn07XG5cbnR5cGUgU2VhcmNoUmVzdWx0ID0ge1xuICBwYWNrYWdlOiBQYWNrYWdlUmVzdWx0cztcbiAgZmxhZ3M/OiB7IHVuc3RhYmxlOiBib29sZWFuIHwgdm9pZCB9O1xuICBsb2NhbD86IGJvb2xlYW47XG4gIHNjb3JlOiB7XG4gICAgZmluYWw6IG51bWJlcjtcbiAgICBkZXRhaWw6IHtcbiAgICAgIHF1YWxpdHk6IG51bWJlcjtcbiAgICAgIHBvcHVsYXJpdHk6IG51bWJlcjtcbiAgICAgIG1haW50ZW5hbmNlOiBudW1iZXI7XG4gICAgfTtcbiAgfTtcbiAgc2VhcmNoU2NvcmU6IG51bWJlcjtcbn07XG5cbnR5cGUgU2VhcmNoUmVzdWx0cyA9IHtcbiAgb2JqZWN0czogU2VhcmNoUmVzdWx0W107XG4gIHRvdGFsOiBudW1iZXI7XG4gIHRpbWU6IHN0cmluZztcbn07XG5cbmNvbnN0IHBlcnNvbk1hdGNoID0gKHBlcnNvbiwgc2VhcmNoKSA9PiB7XG4gIGlmICh0eXBlb2YgcGVyc29uID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwZXJzb24uaW5jbHVkZXMoc2VhcmNoKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcGVyc29uID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAoY29uc3QgZmllbGQgb2YgT2JqZWN0LnZhbHVlcyhwZXJzb24pKSB7XG4gICAgICBpZiAodHlwZW9mIGZpZWxkID09PSAnc3RyaW5nJyAmJiBmaWVsZC5pbmNsdWRlcyhzZWFyY2gpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IG1hdGNoZXIgPSBmdW5jdGlvbiAocXVlcnkpIHtcbiAgY29uc3QgbWF0Y2ggPSBxdWVyeS5tYXRjaCgvYXV0aG9yOiguKikvKTtcbiAgaWYgKG1hdGNoICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChwa2cpIHtcbiAgICAgIHJldHVybiBwZXJzb25NYXRjaChwa2cuYXV0aG9yLCBtYXRjaFsxXSk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIFRPRE86IG1haW50YWluZXIsIGtleXdvcmRzLCBib29zdC1leGFjdFxuICAvLyBUT0RPIGltcGxlbWVudCBzb21lIHNjb3Jpbmcgc3lzdGVtIGZvciBmcmVldGV4dFxuICByZXR1cm4gKHBrZykgPT4ge1xuICAgIHJldHVybiBbJ25hbWUnLCAnZGlzcGxheU5hbWUnLCAnZGVzY3JpcHRpb24nXVxuICAgICAgLm1hcCgoaykgPT4ge1xuICAgICAgICByZXR1cm4gcGtnW2tdO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKHgpID0+IHtcbiAgICAgICAgcmV0dXJuIHggIT09IHVuZGVmaW5lZDtcbiAgICAgIH0pXG4gICAgICAuc29tZSgodHh0KSA9PiB7XG4gICAgICAgIHJldHVybiB0eHQuaW5jbHVkZXMocXVlcnkpO1xuICAgICAgfSk7XG4gIH07XG59O1xuXG5mdW5jdGlvbiBjb21waWxlVGV4dFNlYXJjaCh0ZXh0U2VhcmNoOiBzdHJpbmcpOiAocGtnOiBQYWNrYWdlUmVzdWx0cykgPT4gYm9vbGVhbiB7XG4gIGNvbnN0IHRleHRNYXRjaGVycyA9ICh0ZXh0U2VhcmNoIHx8ICcnKS5zcGxpdCgnICcpLm1hcChtYXRjaGVyKTtcbiAgcmV0dXJuIChwa2cpID0+IHRleHRNYXRjaGVycy5ldmVyeSgobSkgPT4gbShwa2cpKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlRHVwbGljYXRlcyhyZXN1bHRzKSB7XG4gIGNvbnN0IHBrZ05hbWVzOiBhbnlbXSA9IFtdO1xuICByZXR1cm4gcmVzdWx0cy5maWx0ZXIoKHBrZykgPT4ge1xuICAgIGlmIChwa2dOYW1lcy5pbmNsdWRlcyhwa2c/LnBhY2thZ2U/Lm5hbWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHBrZ05hbWVzLnB1c2gocGtnPy5wYWNrYWdlPy5uYW1lKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrQWNjZXNzKHBrZzogYW55LCBhdXRoOiBhbnksIHJlbW90ZVVzZXIpOiBQcm9taXNlPFBhY2thZ2UgfCBudWxsPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXV0aC5hbGxvd19hY2Nlc3MoeyBwYWNrYWdlTmFtZTogcGtnPy5wYWNrYWdlPy5uYW1lIH0sIHJlbW90ZVVzZXIsIGZ1bmN0aW9uIChlcnIsIGFsbG93ZWQpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgaWYgKGVyci5zdGF0dXMgJiYgU3RyaW5nKGVyci5zdGF0dXMpLm1hdGNoKC9eNFxcZFxcZCQvKSkge1xuICAgICAgICAgIC8vIGF1dGggcGx1Z2luIHJldHVybnMgNHh4IHVzZXIgZXJyb3IsXG4gICAgICAgICAgLy8gdGhhdCdzIGVxdWl2YWxlbnQgb2YgIWFsbG93ZWQgYmFzaWNhbGx5XG4gICAgICAgICAgYWxsb3dlZCA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShhbGxvd2VkID8gcGtnIDogbnVsbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kUmVzcG9uc2UocmVzdWx0QnVmLCByZXN1bHRTdHJlYW0sIGF1dGgsIHJlcSwgZnJvbTogbnVtYmVyLCBzaXplOiBudW1iZXIpOiBQcm9taXNlPFNlYXJjaFJlc3VsdHM+IHtcbiAgcmVzdWx0U3RyZWFtLmRlc3Ryb3koKTtcbiAgY29uc3QgcmVzdWx0c0NvbGxlY3Rpb24gPSByZXN1bHRCdWYubWFwKChwa2cpOiBTZWFyY2hSZXN1bHQgPT4ge1xuICAgIGlmIChwa2c/Lm5hbWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhY2thZ2U6IHBrZyxcbiAgICAgICAgLy8gbm90IHN1cmUgaWYgZmxhZ3MgaXMgbmVlZCBpdFxuICAgICAgICBmbGFnczoge1xuICAgICAgICAgIHVuc3RhYmxlOiBPYmplY3Qua2V5cyhwa2cudmVyc2lvbnMpLnNvbWUoKHYpID0+IHNlbXZlci5zYXRpc2ZpZXModiwgJ14xLjAuMCcpKSA/IHVuZGVmaW5lZCA6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGxvY2FsOiB0cnVlLFxuICAgICAgICBzY29yZToge1xuICAgICAgICAgIGZpbmFsOiAxLFxuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgcXVhbGl0eTogMSxcbiAgICAgICAgICAgIHBvcHVsYXJpdHk6IDEsXG4gICAgICAgICAgICBtYWludGVuYW5jZTogMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzZWFyY2hTY29yZTogMTAwMDAwLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHBrZztcbiAgICB9XG4gIH0pO1xuICBjb25zdCBjaGVja0FjY2Vzc1Byb21pc2VzOiBTZWFyY2hSZXN1bHRbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIHJlbW92ZUR1cGxpY2F0ZXMocmVzdWx0c0NvbGxlY3Rpb24pLm1hcCgocGtnSXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIGNoZWNrQWNjZXNzKHBrZ0l0ZW0sIGF1dGgsIHJlcS5yZW1vdGVfdXNlcik7XG4gICAgfSlcbiAgKTtcblxuICBjb25zdCBmaW5hbDogU2VhcmNoUmVzdWx0W10gPSBjaGVja0FjY2Vzc1Byb21pc2VzLmZpbHRlcigoaSkgPT4gIV8uaXNOdWxsKGkpKS5zbGljZShmcm9tLCBzaXplKTtcbiAgbG9nZ2VyLmRlYnVnKGBzZWFyY2ggcmVzdWx0cyAke2ZpbmFsPy5sZW5ndGh9YCk7XG5cbiAgY29uc3QgcmVzcG9uc2U6IFNlYXJjaFJlc3VsdHMgPSB7XG4gICAgb2JqZWN0czogZmluYWwsXG4gICAgdG90YWw6IGZpbmFsLmxlbmd0aCxcbiAgICB0aW1lOiBuZXcgRGF0ZSgpLnRvVVRDU3RyaW5nKCksXG4gIH07XG5cbiAgbG9nZ2VyLmRlYnVnKGB0b3RhbCByZXNwb25zZSAke2ZpbmFsLmxlbmd0aH1gKTtcbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuXG4vKipcbiAqIEVuZHBvaW50IGZvciBucG0gc2VhcmNoIHYxXG4gKiByZXE6ICdHRVQgLy0vdjEvc2VhcmNoP3RleHQ9cmVhY3Qmc2l6ZT0yMCZmcm9tPTAmcXVhbGl0eT0wLjY1JnBvcHVsYXJpdHk9MC45OCZtYWludGVuYW5jZT0wLjUnXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChyb3V0ZSwgYXV0aCwgc3RvcmFnZSk6IHZvaWQge1xuICByb3V0ZS5nZXQoJy8tL3YxL3NlYXJjaCcsIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIC8vIFRPRE86IGltcGxlbWVudCBwcm9wZXIgcmVzdWx0IHNjb3Jpbmcgd2VpZ2h0ZWQgYnkgcXVhbGl0eSwgcG9wdWxhcml0eSBhbmQgbWFpbnRlbmFuY2UgcXVlcnkgcGFyYW1ldGVyc1xuICAgIGxldCBbdGV4dCwgc2l6ZSwgZnJvbSAvKiAsIHF1YWxpdHksIHBvcHVsYXJpdHksIG1haW50ZW5hbmNlICovXSA9IFsndGV4dCcsICdzaXplJywgJ2Zyb20nIC8qICwgJ3F1YWxpdHknLCAncG9wdWxhcml0eScsICdtYWludGVuYW5jZScgKi9dLm1hcCgoaykgPT4gcmVxLnF1ZXJ5W2tdKTtcblxuICAgIHNpemUgPSBwYXJzZUludChzaXplKSB8fCAyMDtcbiAgICBmcm9tID0gcGFyc2VJbnQoZnJvbSkgfHwgMDtcblxuICAgIGNvbnN0IGlzSW50ZXJlc3RpbmcgPSBjb21waWxlVGV4dFNlYXJjaCh0ZXh0KTtcblxuICAgIGNvbnN0IHJlc3VsdFN0cmVhbSA9IHN0b3JhZ2Uuc2VhcmNoKDAsIHsgcmVxIH0pO1xuICAgIGxldCByZXN1bHRCdWYgPSBbXSBhcyBhbnk7XG4gICAgbGV0IGNvbXBsZXRlZCA9IGZhbHNlO1xuXG4gICAgcmVzdWx0U3RyZWFtLm9uKCdkYXRhJywgKHBrZzogU2VhcmNoUmVzdWx0W10gfCBQYWNrYWdlUmVzdWx0cykgPT4ge1xuICAgICAgLy8gcGFja2FnZXMgZnJvbSB0aGUgdXBzdHJlYW1zXG4gICAgICBpZiAoXy5pc0FycmF5KHBrZykpIHtcbiAgICAgICAgcmVzdWx0QnVmID0gcmVzdWx0QnVmLmNvbmNhdChcbiAgICAgICAgICAocGtnIGFzIFNlYXJjaFJlc3VsdFtdKS5maWx0ZXIoKHBrZ0l0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmICghaXNJbnRlcmVzdGluZyhwa2dJdGVtPy5wYWNrYWdlKSkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoYFtyZW1vdGVdIHBrZyBuYW1lICR7cGtnSXRlbT8ucGFja2FnZT8ubmFtZX1gKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBwYWNrYWdlcyBmcm9tIGxvY2FsXG4gICAgICAgIC8vIGR1ZSBjb21wYWJpbGl0eSB3aXRoIGAvLS9hbGxgIHdlIGNhbm5vdCByZWZhY3RvciBzdG9yYWdlLnNlYXJjaCgpO1xuICAgICAgICBpZiAoIWlzSW50ZXJlc3RpbmcocGtnKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuZGVidWcoYFtsb2NhbF0gcGtnIG5hbWUgJHsocGtnIGFzIFBhY2thZ2VSZXN1bHRzKT8ubmFtZX1gKTtcbiAgICAgICAgcmVzdWx0QnVmLnB1c2gocGtnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJlc3VsdFN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ3NlYXJjaCBlbmRwb2ludCBoYXMgZmFpbGVkJyk7XG4gICAgICByZXMuc29ja2V0LmRlc3Ryb3koKTtcbiAgICB9KTtcblxuICAgIHJlc3VsdFN0cmVhbS5vbignZW5kJywgYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFjb21wbGV0ZWQpIHtcbiAgICAgICAgY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlbmRSZXNwb25zZShyZXN1bHRCdWYsIHJlc3VsdFN0cmVhbSwgYXV0aCwgcmVxLCBmcm9tLCBzaXplKTtcbiAgICAgICAgICBsb2dnZXIuaW5mbygnc2VhcmNoIGVuZHBvaW50IG9rIHJlc3VsdHMgQHt0b3RhbH0nLCB7IHRvdGFsOiByZXNwb25zZS50b3RhbCB9KTtcbiAgICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKS5qc29uKHJlc3BvbnNlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKCdzZWFyY2ggZW5kcG9pbnQgaGFzIGZhaWxlZCBAe2Vycn0nLCB7IGVyciB9KTtcbiAgICAgICAgICBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=