verdaccio 6.1.5 → 6.2.0

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 (72) hide show
  1. package/README.md +4 -45
  2. package/build/api/endpoint/api/package.js +3 -3
  3. package/build/api/endpoint/api/publish.js +7 -9
  4. package/build/api/endpoint/api/search.js +2 -2
  5. package/build/api/endpoint/api/star.js +10 -10
  6. package/build/api/endpoint/api/stars.js +13 -6
  7. package/build/api/endpoint/api/user.js +5 -7
  8. package/build/api/endpoint/api/v1/profile.js +3 -5
  9. package/build/api/endpoint/api/v1/search.js +12 -12
  10. package/build/api/endpoint/api/v1/token.js +19 -23
  11. package/build/api/endpoint/index.js +13 -20
  12. package/build/api/index.d.ts +2 -1
  13. package/build/api/index.js +6 -10
  14. package/build/api/middleware.d.ts +2 -2
  15. package/build/api/middleware.js +5 -7
  16. package/build/api/web/api/index.js +6 -11
  17. package/build/api/web/api/package.js +8 -17
  18. package/build/api/web/api/user.js +2 -2
  19. package/build/api/web/index.d.ts +3 -1
  20. package/build/api/web/index.js +32 -11
  21. package/build/index.d.ts +2 -2
  22. package/build/index.js +39 -3
  23. package/build/lib/auth-utils.d.ts +0 -10
  24. package/build/lib/auth-utils.js +4 -92
  25. package/build/lib/bootstrap.d.ts +2 -2
  26. package/build/lib/bootstrap.js +53 -61
  27. package/build/lib/cli/cli.js +2 -3
  28. package/build/lib/cli/commands/info.js +2 -5
  29. package/build/lib/cli/commands/init.d.ts +0 -1
  30. package/build/lib/cli/commands/init.js +35 -58
  31. package/build/lib/cli/commands/version.js +3 -7
  32. package/build/lib/cli/utils.d.ts +0 -13
  33. package/build/lib/cli/utils.js +1 -47
  34. package/build/lib/cli.d.ts +1 -1
  35. package/build/lib/cli.js +9 -14
  36. package/build/lib/config.js +1 -2
  37. package/build/lib/constants.d.ts +1 -4
  38. package/build/lib/constants.js +15 -5
  39. package/build/lib/experiments.d.ts +1 -0
  40. package/build/lib/experiments.js +29 -0
  41. package/build/lib/local-storage.d.ts +4 -4
  42. package/build/lib/local-storage.js +4 -12
  43. package/build/lib/logger/index.d.ts +5 -2
  44. package/build/lib/logger/index.js +7 -1
  45. package/build/lib/run-server.d.ts +5 -4
  46. package/build/lib/run-server.js +29 -58
  47. package/build/lib/storage-utils.d.ts +1 -1
  48. package/build/lib/storage-utils.js +14 -13
  49. package/build/lib/storage.d.ts +2 -2
  50. package/build/lib/storage.js +8 -18
  51. package/build/lib/up-storage.js +13 -32
  52. package/build/lib/utils.d.ts +5 -47
  53. package/build/lib/utils.js +32 -121
  54. package/conf/.gitkeep +0 -0
  55. package/eslint.config.mjs +67 -0
  56. package/package.json +57 -94
  57. package/CODE_OF_CONDUCT.md +0 -46
  58. package/build/lib/config-path.d.ts +0 -10
  59. package/build/lib/config-path.js +0 -107
  60. package/build/lib/notify/index.d.ts +0 -4
  61. package/build/lib/notify/index.js +0 -83
  62. package/build/lib/notify/notify-request.d.ts +0 -2
  63. package/build/lib/notify/notify-request.js +0 -37
  64. package/build/utils/string.d.ts +0 -8
  65. package/build/utils/string.js +0 -38
  66. package/conf/README.md +0 -9
  67. package/conf/default.yaml +0 -201
  68. package/conf/docker.yaml +0 -203
  69. package/conf/full.yaml +0 -10
  70. package/debug/bootstrap-runserver.js +0 -6
  71. package/debug/bootstrap.js +0 -6
  72. package/debug/run-server.ts +0 -9
package/README.md CHANGED
@@ -16,7 +16,6 @@ Google Cloud Storage** or create your own plugin.
16
16
  [![verdaccio (downloads)](https://img.shields.io/npm/dy/verdaccio.svg)](https://www.npmjs.com/package/verdaccio)
17
17
  [![docker pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio.svg?maxAge=43200)](https://verdaccio.org/docs/en/docker.html)
18
18
  [![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio)
19
- [![stackshare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/verdaccio)
20
19
 
21
20
  [![discord](https://img.shields.io/discord/388674437219745793.svg)](https://discord.gg/7qWJxBf)
22
21
  [![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE)
@@ -30,7 +29,7 @@ Google Cloud Storage** or create your own plugin.
30
29
  Install with npm:
31
30
 
32
31
  ```bash
33
- npm install --location=global verdaccio
32
+ npm install --global verdaccio
34
33
  ```
35
34
 
36
35
  **Node.js v18 or higher is required for Verdaccio**
@@ -62,7 +61,8 @@ helm install verdaccio/verdaccio
62
61
  Verdaccio can be used as a module for launch a server programmatically, [you can find more info at the website](https://verdaccio.org/docs/verdaccio-programmatically#using-the-module-api).
63
62
 
64
63
  ```
65
- const {runServer} = require('verdaccio');
64
+ import {runServer} from 'verdaccio';
65
+
66
66
  const app = await runServer(); // default configuration
67
67
  const app = await runServer('./config/config.yaml');
68
68
  const app = await runServer({ configuration });
@@ -75,11 +75,6 @@ Verdaccio can be used as a module for launch a server programmatically, [you can
75
75
 
76
76
  You can develop your own [plugins](https://verdaccio.org/docs/plugins) with the [verdaccio generator](https://github.com/verdaccio/generator-verdaccio-plugin). Installing [Yeoman](https://yeoman.io/) is required.
77
77
 
78
- ```
79
- npm install --location=global yo
80
- npm install --location=global generator-verdaccio-plugin
81
- ```
82
-
83
78
  Learn more [here](https://verdaccio.org/docs/dev-plugins) how to develop plugins. Share your plugins with the community.
84
79
 
85
80
  ## Donations
@@ -245,42 +240,6 @@ If you want to report a security vulnerability, please follow the steps which we
245
240
 
246
241
  [See the full list of contributors is at the website.](https://verdaccio.org/contributors)
247
242
 
248
- ## Who is using Verdaccio?
249
-
250
- - [create-react-app](https://github.com/facebook/create-react-app/blob/master/CONTRIBUTING.md#customizing-e2e-registry-configuration) _(+96.2k ⭐️)_
251
- - [Gatsby](https://github.com/gatsbyjs/gatsby) _(+53.5k ⭐️)_
252
- - [Babel.js](https://github.com/babel/babel) _(+41.3k ⭐️)_
253
- - [Docusaurus](https://github.com/facebook/docusaurus) _(+37k ⭐️)_
254
- - [Vue CLI](https://github.com/vuejs/vue-cli) _(+29.4k ⭐️)_
255
- - [Angular CLI](https://github.com/angular/angular-cli) _(+25.6k ⭐️)_
256
- - [Uppy](https://github.com/transloadit/uppy) _(+25.8k ⭐️)_
257
- - [pnpm](https://github.com/pnpm/pnpm) _(+19.2k ⭐️)_
258
- - [bit](https://github.com/teambit/bit) _(+15k ⭐️)_
259
- - [NX](https://github.com/nrwl/nx) _(+14.1k ⭐️)_
260
- - [Aurelia Framework](https://github.com/aurelia/framework) _(+11.6k ⭐️)_
261
- - [ethereum/web3.js](https://github.com/ethereum/web3.js) _(+9.8k ⭐️)_
262
- - [webiny-js](https://github.com/webiny/webiny-js) _(+5.9k ⭐️)_
263
- - [workshopper how to npm](https://github.com/workshopper/how-to-npm) _(+1k ⭐️)_
264
- - [Amazon SDK v3](https://github.com/aws/aws-sdk-js-v3)
265
- - [Amazon Encryption SDK for Javascript](https://github.com/aws/aws-encryption-sdk-javascript)
266
-
267
- 🤓 Don't be shy, add yourself to this readme.
268
-
269
- ## Open Collective Sponsors
270
-
271
- Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/verdaccio#sponsor)]
272
-
273
- [![sponsor](https://opencollective.com/verdaccio/sponsor/0/avatar.svg)](https://opencollective.com/verdaccio/sponsor/0/website)
274
- [![sponsor](https://opencollective.com/verdaccio/sponsor/1/avatar.svg)](https://opencollective.com/verdaccio/sponsor/1/website)
275
- [![sponsor](https://opencollective.com/verdaccio/sponsor/2/avatar.svg)](https://opencollective.com/verdaccio/sponsor/2/website)
276
- [![sponsor](https://opencollective.com/verdaccio/sponsor/3/avatar.svg)](https://opencollective.com/verdaccio/sponsor/3/website)
277
- [![sponsor](https://opencollective.com/verdaccio/sponsor/4/avatar.svg)](https://opencollective.com/verdaccio/sponsor/4/website)
278
- [![sponsor](https://opencollective.com/verdaccio/sponsor/5/avatar.svg)](https://opencollective.com/verdaccio/sponsor/5/website)
279
- [![sponsor](https://opencollective.com/verdaccio/sponsor/6/avatar.svg)](https://opencollective.com/verdaccio/sponsor/6/website)
280
- [![sponsor](https://opencollective.com/verdaccio/sponsor/7/avatar.svg)](https://opencollective.com/verdaccio/sponsor/7/website)
281
- [![sponsor](https://opencollective.com/verdaccio/sponsor/8/avatar.svg)](https://opencollective.com/verdaccio/sponsor/8/website)
282
- [![sponsor](https://opencollective.com/verdaccio/sponsor/9/avatar.svg)](https://opencollective.com/verdaccio/sponsor/9/website)
283
-
284
243
  ## Open Collective Backers
285
244
 
286
245
  Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/verdaccio#backer)]
@@ -311,7 +270,7 @@ This project exists thanks to all the people who contribute. [[Contribute](CONTR
311
270
  If you have any issue you can try the following options, do no desist to ask or check our issues database, perhaps someone has asked already what you are looking for.
312
271
 
313
272
  - [Blog](https://verdaccio.org/blog/)
314
- - [Donations](https://github.com/sponsors/verdaccio)
273
+ - [Donations](https://opencollective.com/verdaccio)
315
274
  - [Reporting an issue](https://github.com/verdaccio/verdaccio/issues/new/choose)
316
275
  - [Running discussions](https://github.com/verdaccio/verdaccio/issues?q=is%3Aissue+is%3Aopen+label%3Adiscuss)
317
276
  - [Chat](https://discord.gg/7qWJxBf)
@@ -5,12 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = _default;
7
7
  var _lodash = _interopRequireDefault(require("lodash"));
8
+ var _core = require("@verdaccio/core");
8
9
  var _middleware = require("@verdaccio/middleware");
9
10
  var _tarball = require("@verdaccio/tarball");
10
11
  var _constants = require("../../../lib/constants");
11
12
  var _logger = require("../../../lib/logger");
12
13
  var _utils = require("../../../lib/utils");
13
- var _string = require("../../../utils/string");
14
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
15
  const downloadStream = (packageName, filename, storage, req, res) => {
16
16
  const stream = storage.getTarball(packageName, filename);
@@ -47,7 +47,7 @@ function _default(route, auth, storage, config) {
47
47
  });
48
48
  // TODO: anonymous user?
49
49
  route.get(_middleware.PACKAGE_API_ENDPOINTS.get_package_by_version, can('access'), function (req, res, next) {
50
- const abbreviated = (0, _string.getByQualityPriorityValue)(req.get('Accept')) === 'application/vnd.npm.install-v1+json';
50
+ const abbreviated = _core.stringUtils.getByQualityPriorityValue(req.get('Accept')) === 'application/vnd.npm.install-v1+json';
51
51
  const getPackageMetaCallback = function (err, metadata) {
52
52
  if (err) {
53
53
  return next(err);
@@ -100,4 +100,4 @@ function _default(route, auth, storage, config) {
100
100
  }
101
101
  });
102
102
  }
103
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbWlkZGxld2FyZSIsIl90YXJiYWxsIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJfdXRpbHMiLCJfc3RyaW5nIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZG93bmxvYWRTdHJlYW0iLCJwYWNrYWdlTmFtZSIsImZpbGVuYW1lIiwic3RvcmFnZSIsInJlcSIsInJlcyIsInN0cmVhbSIsImdldFRhcmJhbGwiLCJvbiIsImNvbnRlbnQiLCJoZWFkZXIiLCJlcnIiLCJsb2NhbHMiLCJyZXBvcnRfZXJyb3IiLCJIRUFERVJTIiwiQ09OVEVOVF9UWVBFIiwiT0NURVRfU1RSRUFNIiwicGlwZSIsInJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbSIsImNvbmZpZyIsInRhcmJhbGxVcmxSZWRpcmVjdCIsIl8iLCJnZXQiLCJoYXNMb2NhbFRhcmJhbGwiLCJ0aGVuIiwiY29udGV4dCIsInRhcmJhbGxVcmwiLCJ0ZW1wbGF0ZSIsInJlZGlyZWN0IiwiY2F0Y2giLCJfZGVmYXVsdCIsInJvdXRlIiwiYXV0aCIsImNhbiIsImFsbG93IiwiYmVmb3JlQWxsIiwicGFyYW1zIiwibWVzc2FnZSIsImxvZ2dlciIsInRyYWNlIiwiYWZ0ZXJBbGwiLCJQQUNLQUdFX0FQSV9FTkRQT0lOVFMiLCJnZXRfcGFja2FnZV9ieV92ZXJzaW9uIiwibmV4dCIsImFiYnJldmlhdGVkIiwiZ2V0QnlRdWFsaXR5UHJpb3JpdHlWYWx1ZSIsImdldFBhY2thZ2VNZXRhQ2FsbGJhY2siLCJtZXRhZGF0YSIsImNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIiwicHJvdG9jb2wiLCJoZWFkZXJzIiwiaG9zdCIsImhvc3RuYW1lIiwicmVtb3RlQWRkcmVzcyIsInNvY2tldCIsInVybF9wcmVmaXgiLCJxdWVyeVZlcnNpb24iLCJ2ZXJzaW9uIiwiaXNOaWwiLCJzZXRIZWFkZXIiLCJKU09OIiwiZ2V0VmVyc2lvbiIsIkRJU1RfVEFHUyIsIkVycm9yQ29kZSIsImdldE5vdEZvdW5kIiwiQVBJX0VSUk9SIiwiVkVSU0lPTl9OT1RfRVhJU1QiLCJnZXRQYWNrYWdlIiwibmFtZSIsInBhY2thZ2UiLCJ1cGxpbmtzTG9vayIsImNhbGxiYWNrIiwiZ2V0X3BhY2thZ2VfdGFyYmFsbCIsInVuZGVmaW5lZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3BhY2thZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBQQUNLQUdFX0FQSV9FTkRQT0lOVFMsIGFsbG93IH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB7IGNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIH0gZnJvbSAnQHZlcmRhY2Npby90YXJiYWxsJztcbmltcG9ydCB7IENvbmZpZywgUGFja2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgQXV0aCBmcm9tICcuLi8uLi8uLi9saWIvYXV0aCc7XG5pbXBvcnQgeyBBUElfRVJST1IsIERJU1RfVEFHUywgSEVBREVSUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgU3RvcmFnZSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZSc7XG5pbXBvcnQgeyBFcnJvckNvZGUsIGdldFZlcnNpb24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGdldEJ5UXVhbGl0eVByaW9yaXR5VmFsdWUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zdHJpbmcnO1xuXG5jb25zdCBkb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuZ2V0VGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuXG4gIHN0cmVhbS5vbignY29udGVudC1sZW5ndGgnLCBmdW5jdGlvbiAoY29udGVudCk6IHZvaWQge1xuICAgIHJlcy5oZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgY29udGVudCk7XG4gIH0pO1xuXG4gIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgcmV0dXJuIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gIH0pO1xuXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuT0NURVRfU1RSRUFNKTtcbiAgc3RyZWFtLnBpcGUocmVzKTtcbn07XG5cbmNvbnN0IHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZCxcbiAgY29uZmlnOiBDb25maWdcbik6IHZvaWQgPT4ge1xuICBjb25zdCB0YXJiYWxsVXJsUmVkaXJlY3QgPSBfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpO1xuICBzdG9yYWdlXG4gICAgLmhhc0xvY2FsVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpXG4gICAgLnRoZW4oKGhhc0xvY2FsVGFyYmFsbCkgPT4ge1xuICAgICAgaWYgKGhhc0xvY2FsVGFyYmFsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0geyBwYWNrYWdlTmFtZSwgZmlsZW5hbWUgfTtcbiAgICAgICAgY29uc3QgdGFyYmFsbFVybCA9XG4gICAgICAgICAgdHlwZW9mIHRhcmJhbGxVcmxSZWRpcmVjdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyB0YXJiYWxsVXJsUmVkaXJlY3QoY29udGV4dClcbiAgICAgICAgICAgIDogXy50ZW1wbGF0ZSh0YXJiYWxsVXJsUmVkaXJlY3QpKGNvbnRleHQpO1xuICAgICAgICByZXMucmVkaXJlY3QodGFyYmFsbFVybCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb3dubG9hZFN0cmVhbShwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICByZXMubG9jYWxzLnJlcG9ydF9lcnJvcihlcnIpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlOiBSb3V0ZXIsIGF1dGg6IEF1dGgsIHN0b3JhZ2U6IFN0b3JhZ2UsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgsIHtcbiAgICBiZWZvcmVBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICAgIGFmdGVyQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgfSk7XG4gIC8vIFRPRE86IGFub255bW91cyB1c2VyP1xuICByb3V0ZS5nZXQoXG4gICAgUEFDS0FHRV9BUElfRU5EUE9JTlRTLmdldF9wYWNrYWdlX2J5X3ZlcnNpb24sXG4gICAgY2FuKCdhY2Nlc3MnKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGFiYnJldmlhdGVkID1cbiAgICAgICAgZ2V0QnlRdWFsaXR5UHJpb3JpdHlWYWx1ZShyZXEuZ2V0KCdBY2NlcHQnKSkgPT09ICdhcHBsaWNhdGlvbi92bmQubnBtLmluc3RhbGwtdjEranNvbic7XG4gICAgICBjb25zdCBnZXRQYWNrYWdlTWV0YUNhbGxiYWNrID0gZnVuY3Rpb24gKGVyciwgbWV0YWRhdGE6IFBhY2thZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgbWV0YWRhdGEgPSBjb252ZXJ0RGlzdFJlbW90ZVRvTG9jYWxUYXJiYWxsVXJscyhcbiAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm90b2NvbDogcmVxLnByb3RvY29sLFxuICAgICAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMgYXMgYW55LFxuICAgICAgICAgICAgaG9zdDogcmVxLmhvc3RuYW1lLFxuICAgICAgICAgICAgcmVtb3RlQWRkcmVzczogcmVxLnNvY2tldC5yZW1vdGVBZGRyZXNzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29uZmlnLnVybF9wcmVmaXhcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgcXVlcnlWZXJzaW9uID0gcmVxLnBhcmFtcy52ZXJzaW9uO1xuICAgICAgICBpZiAoXy5pc05pbChxdWVyeVZlcnNpb24pKSB7XG4gICAgICAgICAgaWYgKGFiYnJldmlhdGVkKSB7XG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFLCAnYXBwbGljYXRpb24vdm5kLm5wbS5pbnN0YWxsLXYxK2pzb24nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5KU09OKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbmV4dChtZXRhZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmVyc2lvbiA9IGdldFZlcnNpb24obWV0YWRhdGEsIHF1ZXJ5VmVyc2lvbik7XG4gICAgICAgIGlmIChfLmlzTmlsKHZlcnNpb24pID09PSBmYWxzZSkge1xuICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgICAgcmV0dXJuIG5leHQodmVyc2lvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdW3F1ZXJ5VmVyc2lvbl0pID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcXVlcnlWZXJzaW9uID0gbWV0YWRhdGFbRElTVF9UQUdTXVtxdWVyeVZlcnNpb25dO1xuICAgICAgICAgICAgdmVyc2lvbiA9IGdldFZlcnNpb24obWV0YWRhdGEsIHF1ZXJ5VmVyc2lvbik7XG4gICAgICAgICAgICBpZiAoXy5pc05pbCh2ZXJzaW9uKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5KU09OKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQodmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXROb3RGb3VuZChgJHtBUElfRVJST1IuVkVSU0lPTl9OT1RfRVhJU1R9OiAke3JlcS5wYXJhbXMudmVyc2lvbn1gKSk7XG4gICAgICB9O1xuXG4gICAgICBzdG9yYWdlLmdldFBhY2thZ2Uoe1xuICAgICAgICBuYW1lOiByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgICByZXEsXG4gICAgICAgIGFiYnJldmlhdGVkLFxuICAgICAgICBjYWxsYmFjazogZ2V0UGFja2FnZU1ldGFDYWxsYmFjayxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICByb3V0ZS5nZXQoXG4gICAgUEFDS0FHRV9BUElfRU5EUE9JTlRTLmdldF9wYWNrYWdlX3RhcmJhbGwsXG4gICAgY2FuKCdhY2Nlc3MnKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQpOiB2b2lkIHtcbiAgICAgIGlmIChfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZG93bmxvYWRTdHJlYW0ocmVxLnBhcmFtcy5wYWNrYWdlLCByZXEucGFyYW1zLmZpbGVuYW1lLCBzdG9yYWdlLCByZXEsIHJlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWRpcmVjdE9yRG93bmxvYWRTdHJlYW0oXG4gICAgICAgICAgcmVxLnBhcmFtcy5wYWNrYWdlLFxuICAgICAgICAgIHJlcS5wYXJhbXMuZmlsZW5hbWUsXG4gICAgICAgICAgc3RvcmFnZSxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgcmVzLFxuICAgICAgICAgIGNvbmZpZ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBSUEsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBQWtFLFNBQUFELHVCQUFBUSxDQUFBLFdBQUFBLENBQUEsSUFB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
103
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29yZSIsIl9taWRkbGV3YXJlIiwiX3RhcmJhbGwiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIl91dGlscyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRvd25sb2FkU3RyZWFtIiwicGFja2FnZU5hbWUiLCJmaWxlbmFtZSIsInN0b3JhZ2UiLCJyZXEiLCJyZXMiLCJzdHJlYW0iLCJnZXRUYXJiYWxsIiwib24iLCJjb250ZW50IiwiaGVhZGVyIiwiZXJyIiwibG9jYWxzIiwicmVwb3J0X2Vycm9yIiwiSEVBREVSUyIsIkNPTlRFTlRfVFlQRSIsIk9DVEVUX1NUUkVBTSIsInBpcGUiLCJyZWRpcmVjdE9yRG93bmxvYWRTdHJlYW0iLCJjb25maWciLCJ0YXJiYWxsVXJsUmVkaXJlY3QiLCJfIiwiZ2V0IiwiaGFzTG9jYWxUYXJiYWxsIiwidGhlbiIsImNvbnRleHQiLCJ0YXJiYWxsVXJsIiwidGVtcGxhdGUiLCJyZWRpcmVjdCIsImNhdGNoIiwiX2RlZmF1bHQiLCJyb3V0ZSIsImF1dGgiLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJ0cmFjZSIsImFmdGVyQWxsIiwiUEFDS0FHRV9BUElfRU5EUE9JTlRTIiwiZ2V0X3BhY2thZ2VfYnlfdmVyc2lvbiIsIm5leHQiLCJhYmJyZXZpYXRlZCIsInN0cmluZ1V0aWxzIiwiZ2V0QnlRdWFsaXR5UHJpb3JpdHlWYWx1ZSIsImdldFBhY2thZ2VNZXRhQ2FsbGJhY2siLCJtZXRhZGF0YSIsImNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIiwicHJvdG9jb2wiLCJoZWFkZXJzIiwiaG9zdCIsImhvc3RuYW1lIiwicmVtb3RlQWRkcmVzcyIsInNvY2tldCIsInVybF9wcmVmaXgiLCJxdWVyeVZlcnNpb24iLCJ2ZXJzaW9uIiwiaXNOaWwiLCJzZXRIZWFkZXIiLCJKU09OIiwiZ2V0VmVyc2lvbiIsIkRJU1RfVEFHUyIsIkVycm9yQ29kZSIsImdldE5vdEZvdW5kIiwiQVBJX0VSUk9SIiwiVkVSU0lPTl9OT1RfRVhJU1QiLCJnZXRQYWNrYWdlIiwibmFtZSIsInBhY2thZ2UiLCJ1cGxpbmtzTG9vayIsImNhbGxiYWNrIiwiZ2V0X3BhY2thZ2VfdGFyYmFsbCIsInVuZGVmaW5lZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3BhY2thZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBzdHJpbmdVdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBQQUNLQUdFX0FQSV9FTkRQT0lOVFMsIGFsbG93IH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB7IGNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIH0gZnJvbSAnQHZlcmRhY2Npby90YXJiYWxsJztcbmltcG9ydCB7IENvbmZpZywgTWFuaWZlc3QgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuaW1wb3J0IEF1dGggZnJvbSAnLi4vLi4vLi4vbGliL2F1dGgnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBESVNUX1RBR1MsIEhFQURFUlMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IFN0b3JhZ2UgZnJvbSAnLi4vLi4vLi4vbGliL3N0b3JhZ2UnO1xuaW1wb3J0IHsgRXJyb3JDb2RlLCBnZXRWZXJzaW9uIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB7ICROZXh0RnVuY3Rpb25WZXIsICRSZXF1ZXN0RXh0ZW5kLCAkUmVzcG9uc2VFeHRlbmQgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbmNvbnN0IGRvd25sb2FkU3RyZWFtID0gKFxuICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBzdG9yYWdlOiBhbnksXG4gIHJlcTogJFJlcXVlc3RFeHRlbmQsXG4gIHJlczogJFJlc3BvbnNlRXh0ZW5kXG4pOiB2b2lkID0+IHtcbiAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5nZXRUYXJiYWxsKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSk7XG5cbiAgc3RyZWFtLm9uKCdjb250ZW50LWxlbmd0aCcsIGZ1bmN0aW9uIChjb250ZW50KTogdm9pZCB7XG4gICAgcmVzLmhlYWRlcignQ29udGVudC1MZW5ndGgnLCBjb250ZW50KTtcbiAgfSk7XG5cbiAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpOiB2b2lkIHtcbiAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgfSk7XG5cbiAgcmVzLmhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5PQ1RFVF9TVFJFQU0pO1xuICBzdHJlYW0ucGlwZShyZXMpO1xufTtcblxuY29uc3QgcmVkaXJlY3RPckRvd25sb2FkU3RyZWFtID0gKFxuICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBzdG9yYWdlOiBhbnksXG4gIHJlcTogJFJlcXVlc3RFeHRlbmQsXG4gIHJlczogJFJlc3BvbnNlRXh0ZW5kLFxuICBjb25maWc6IENvbmZpZ1xuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHRhcmJhbGxVcmxSZWRpcmVjdCA9IF8uZ2V0KGNvbmZpZywgJ2V4cGVyaW1lbnRzLnRhcmJhbGxfdXJsX3JlZGlyZWN0Jyk7XG4gIHN0b3JhZ2VcbiAgICAuaGFzTG9jYWxUYXJiYWxsKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSlcbiAgICAudGhlbigoaGFzTG9jYWxUYXJiYWxsKSA9PiB7XG4gICAgICBpZiAoaGFzTG9jYWxUYXJiYWxsKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB7IHBhY2thZ2VOYW1lLCBmaWxlbmFtZSB9O1xuICAgICAgICBjb25zdCB0YXJiYWxsVXJsID1cbiAgICAgICAgICB0eXBlb2YgdGFyYmFsbFVybFJlZGlyZWN0ID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IHRhcmJhbGxVcmxSZWRpcmVjdChjb250ZXh0KVxuICAgICAgICAgICAgOiBfLnRlbXBsYXRlKHRhcmJhbGxVcmxSZWRpcmVjdCkoY29udGV4dCk7XG4gICAgICAgIHJlcy5yZWRpcmVjdCh0YXJiYWxsVXJsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvd25sb2FkU3RyZWFtKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGU6IFJvdXRlciwgYXV0aDogQXV0aCwgc3RvcmFnZTogU3RvcmFnZSwgY29uZmlnOiBDb25maWcpOiB2b2lkIHtcbiAgY29uc3QgY2FuID0gYWxsb3coYXV0aCwge1xuICAgIGJlZm9yZUFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLnRyYWNlKHBhcmFtcywgbWVzc2FnZSksXG4gICAgYWZ0ZXJBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICB9KTtcbiAgLy8gVE9ETzogYW5vbnltb3VzIHVzZXI/XG4gIHJvdXRlLmdldChcbiAgICBQQUNLQUdFX0FQSV9FTkRQT0lOVFMuZ2V0X3BhY2thZ2VfYnlfdmVyc2lvbixcbiAgICBjYW4oJ2FjY2VzcycpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgY29uc3QgYWJicmV2aWF0ZWQgPVxuICAgICAgICBzdHJpbmdVdGlscy5nZXRCeVF1YWxpdHlQcmlvcml0eVZhbHVlKHJlcS5nZXQoJ0FjY2VwdCcpKSA9PT1cbiAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5ucG0uaW5zdGFsbC12MStqc29uJztcbiAgICAgIGNvbnN0IGdldFBhY2thZ2VNZXRhQ2FsbGJhY2sgPSBmdW5jdGlvbiAoZXJyLCBtZXRhZGF0YTogTWFuaWZlc3QpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgbWV0YWRhdGEgPSBjb252ZXJ0RGlzdFJlbW90ZVRvTG9jYWxUYXJiYWxsVXJscyhcbiAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm90b2NvbDogcmVxLnByb3RvY29sLFxuICAgICAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMgYXMgYW55LFxuICAgICAgICAgICAgaG9zdDogcmVxLmhvc3RuYW1lLFxuICAgICAgICAgICAgcmVtb3RlQWRkcmVzczogcmVxLnNvY2tldC5yZW1vdGVBZGRyZXNzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29uZmlnLnVybF9wcmVmaXhcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgcXVlcnlWZXJzaW9uID0gcmVxLnBhcmFtcy52ZXJzaW9uO1xuICAgICAgICBpZiAoXy5pc05pbChxdWVyeVZlcnNpb24pKSB7XG4gICAgICAgICAgaWYgKGFiYnJldmlhdGVkKSB7XG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFLCAnYXBwbGljYXRpb24vdm5kLm5wbS5pbnN0YWxsLXYxK2pzb24nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5KU09OKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbmV4dChtZXRhZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmVyc2lvbiA9IGdldFZlcnNpb24obWV0YWRhdGEsIHF1ZXJ5VmVyc2lvbik7XG4gICAgICAgIGlmIChfLmlzTmlsKHZlcnNpb24pID09PSBmYWxzZSkge1xuICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgICAgcmV0dXJuIG5leHQodmVyc2lvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdW3F1ZXJ5VmVyc2lvbl0pID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcXVlcnlWZXJzaW9uID0gbWV0YWRhdGFbRElTVF9UQUdTXVtxdWVyeVZlcnNpb25dO1xuICAgICAgICAgICAgdmVyc2lvbiA9IGdldFZlcnNpb24obWV0YWRhdGEsIHF1ZXJ5VmVyc2lvbik7XG4gICAgICAgICAgICBpZiAoXy5pc05pbCh2ZXJzaW9uKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5KU09OKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQodmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXROb3RGb3VuZChgJHtBUElfRVJST1IuVkVSU0lPTl9OT1RfRVhJU1R9OiAke3JlcS5wYXJhbXMudmVyc2lvbn1gKSk7XG4gICAgICB9O1xuXG4gICAgICBzdG9yYWdlLmdldFBhY2thZ2Uoe1xuICAgICAgICBuYW1lOiByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgICByZXEsXG4gICAgICAgIGFiYnJldmlhdGVkLFxuICAgICAgICBjYWxsYmFjazogZ2V0UGFja2FnZU1ldGFDYWxsYmFjayxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICByb3V0ZS5nZXQoXG4gICAgUEFDS0FHRV9BUElfRU5EUE9JTlRTLmdldF9wYWNrYWdlX3RhcmJhbGwsXG4gICAgY2FuKCdhY2Nlc3MnKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQpOiB2b2lkIHtcbiAgICAgIGlmIChfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZG93bmxvYWRTdHJlYW0ocmVxLnBhcmFtcy5wYWNrYWdlLCByZXEucGFyYW1zLmZpbGVuYW1lLCBzdG9yYWdlLCByZXEsIHJlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWRpcmVjdE9yRG93bmxvYWRTdHJlYW0oXG4gICAgICAgICAgcmVxLnBhcmFtcy5wYWNrYWdlLFxuICAgICAgICAgIHJlcS5wYXJhbXMuZmlsZW5hbWUsXG4gICAgICAgICAgc3RvcmFnZSxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgcmVzLFxuICAgICAgICAgIGNvbmZpZ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBSCxPQUFBO0FBSUEsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQTJELFNBQUFELHVCQUFBUSxDQUFB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
@@ -14,19 +14,14 @@ var _lodash = _interopRequireDefault(require("lodash"));
14
14
  var _mime = _interopRequireDefault(require("mime"));
15
15
  var _path = _interopRequireDefault(require("path"));
16
16
  var _core = require("@verdaccio/core");
17
+ var _hooks = require("@verdaccio/hooks");
17
18
  var _middleware = require("@verdaccio/middleware");
18
19
  var _constants = require("../../../lib/constants");
19
20
  var _logger = require("../../../lib/logger");
20
- var _notify = require("../../../lib/notify");
21
21
  var _storageUtils = require("../../../lib/storage-utils");
22
22
  var _utils = require("../../../lib/utils");
23
23
  var _star = _interopRequireDefault(require("./star"));
24
24
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
25
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
27
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
28
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
29
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
30
25
  const debug = (0, _debug.default)('verdaccio:publish');
31
26
  function publish(router, auth, storage, config) {
32
27
  const can = (0, _middleware.allow)(auth, {
@@ -157,7 +152,9 @@ function publishPackage(storage, config, auth) {
157
152
  storage.mergeTags(packageName, tags, cb);
158
153
  };
159
154
  const afterChange = function (error, okMessage, metadata) {
160
- const metadataCopy = _objectSpread({}, metadata);
155
+ const metadataCopy = {
156
+ ...metadata
157
+ };
161
158
  const {
162
159
  _attachments,
163
160
  versions
@@ -210,7 +207,7 @@ function publishPackage(storage, config, auth) {
210
207
  return next(error);
211
208
  }
212
209
  try {
213
- await (0, _notify.notify)(metadataCopy, config, req.remote_user, `${metadataCopy.name}@${versionToPublish}`);
210
+ await (0, _hooks.notify)(metadataCopy, config, req.remote_user, `${metadataCopy.name}@${versionToPublish}`);
214
211
  } catch (error) {
215
212
  _logger.logger.error({
216
213
  error
@@ -255,6 +252,7 @@ function publishPackage(storage, config, auth) {
255
252
  });
256
253
  }
257
254
  } catch (error) {
255
+ debug('error on publish: %s', error.message);
258
256
  _logger.logger.error({
259
257
  packageName
260
258
  }, 'error on publish, bad package data for @{packageName}');
@@ -358,4 +356,4 @@ function uploadPackageTarball(storage) {
358
356
  });
359
357
  };
360
358
  }
361
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfbWltZSIsIl9wYXRoIiwiX2NvcmUiLCJfbWlkZGxld2FyZSIsIl9jb25zdGFudHMiLCJfbG9nZ2VyIiwiX25vdGlmeSIsIl9zdG9yYWdlVXRpbHMiLCJfdXRpbHMiLCJfc3RhciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIm93bktleXMiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJkZWJ1ZyIsImJ1aWxkRGVidWciLCJwdWJsaXNoIiwicm91dGVyIiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJ0cmFjZSIsImFmdGVyQWxsIiwicHV0IiwibWVkaWEiLCJtaW1lIiwiZ2V0VHlwZSIsImV4cGVjdEpzb24iLCJwdWJsaXNoUGFja2FnZSIsImRlbGV0ZSIsInVuUHVibGlzaFBhY2thZ2UiLCJyZW1vdmVUYXJiYWxsIiwiSEVBREVSUyIsIk9DVEVUX1NUUkVBTSIsInVwbG9hZFBhY2thZ2VUYXJiYWxsIiwiYWRkVmVyc2lvbiIsInN0YXJBcGkiLCJzdGFyIiwicmVxIiwicmVzIiwibmV4dCIsInBhY2thZ2VOYW1lIiwicGFja2FnZSIsImNyZWF0ZVRhcmJhbGwiLCJmaWxlbmFtZSIsImRhdGEiLCJjYiIsInN0cmVhbSIsImFkZFRhcmJhbGwiLCJvbiIsImVyciIsImVuZCIsIkJ1ZmZlciIsImZyb20iLCJkb25lIiwiY3JlYXRlVmVyc2lvbiIsInZlcnNpb24iLCJtZXRhZGF0YSIsImFkZFRhZ3MiLCJ0YWdzIiwibWVyZ2VUYWdzIiwiYWZ0ZXJDaGFuZ2UiLCJlcnJvciIsIm9rTWVzc2FnZSIsIm1ldGFkYXRhQ29weSIsIl9hdHRhY2htZW50cyIsInZlcnNpb25zIiwiXyIsImlzTmlsIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiQ1JFQVRFRCIsIm9rIiwic3VjY2VzcyIsImlzSW52YWxpZEJvZHlGb3JtYXQiLCJpc09iamVjdCIsImhhc0RpZmZPbmVLZXkiLCJpbmZvIiwiRXJyb3JDb2RlIiwiZ2V0QmFkUmVxdWVzdCIsIkFQSV9FUlJPUiIsIlVOU1VQT1JURURfUkVHSVNUUllfQ0FMTCIsIkNPTkZMSUNUIiwiZmlyc3RBdHRhY2htZW50S2V5IiwiUGF0aCIsImJhc2VuYW1lIiwidmVyc2lvblRvUHVibGlzaCIsInZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCIsInJlYWRtZSIsIkRJU1RfVEFHUyIsIm5vdGlmeSIsInJlbW90ZV91c2VyIiwibmFtZSIsImlzUHVibGlzaGFibGVQYWNrYWdlIiwiYm9keSIsInVzZXJzIiwidmFsaWRhdGlvblV0aWxzIiwibm9ybWFsaXplTWV0YWRhdGEiLCJfcmV2IiwiaXNSZWxhdGVkVG9EZXByZWNhdGlvbiIsImlzRW1wdHkiLCJyZW1vdGUiLCJhbGxvd191bnB1Ymxpc2giLCJjaGFuZ2VQYWNrYWdlIiwicmV2aXNpb24iLCJBUElfTUVTU0FHRSIsIlBLR19DSEFOR0VEIiwiYWRkUGFja2FnZSIsIlBLR19DUkVBVEVEIiwiZ2V0QmFkRGF0YSIsIkJBRF9QQUNLQUdFX0RBVEEiLCJyZW1vdmVQYWNrYWdlIiwiUEtHX1JFTU9WRUQiLCJUQVJCQUxMX1JFTU9WRUQiLCJ0YWciLCJQS0dfUFVCTElTSEVEIiwicGlwZSIsImNvbXBsZXRlIiwiYWJvcnQiLCJsb2NhbHMiLCJyZXBvcnRfZXJyb3IiLCJUQVJCQUxMX1VQTE9BREVEIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvcHVibGlzaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lJztcbmltcG9ydCBQYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyB2YWxpZGF0aW9uVXRpbHMgfSBmcm9tICdAdmVyZGFjY2lvL2NvcmUnO1xuaW1wb3J0IHsgYWxsb3csIGV4cGVjdEpzb24sIG1lZGlhIH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB7IENhbGxiYWNrLCBDb25maWcsIE1lcmdlVGFncywgUGFja2FnZSwgVmVyc2lvbiB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgQXV0aCBmcm9tICcuLi8uLi8uLi9saWIvYXV0aCc7XG5pbXBvcnQgeyBBUElfRVJST1IsIEFQSV9NRVNTQUdFLCBESVNUX1RBR1MsIEhFQURFUlMsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB7IG5vdGlmeSB9IGZyb20gJy4uLy4uLy4uL2xpYi9ub3RpZnknO1xuaW1wb3J0IFN0b3JhZ2UgZnJvbSAnLi4vLi4vLi4vbGliL3N0b3JhZ2UnO1xuaW1wb3J0IHsgaXNQdWJsaXNoYWJsZVBhY2thZ2UgfSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZS11dGlscyc7XG5pbXBvcnQgeyBFcnJvckNvZGUsIGhhc0RpZmZPbmVLZXksIGlzT2JqZWN0LCBpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB7ICROZXh0RnVuY3Rpb25WZXIsICRSZXF1ZXN0RXh0ZW5kLCAkUmVzcG9uc2VFeHRlbmQgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgc3RhciBmcm9tICcuL3N0YXInO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzpwdWJsaXNoJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHB1Ymxpc2goXG4gIHJvdXRlcjogUm91dGVyLFxuICBhdXRoOiBBdXRoLFxuICBzdG9yYWdlOiBTdG9yYWdlLFxuICBjb25maWc6IENvbmZpZ1xuKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgsIHtcbiAgICBiZWZvcmVBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICAgIGFmdGVyQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggYSBwYWNrYWdlIC8gdXBkYXRlIHBhY2thZ2UgLyB1bi9zdGFydCBhIHBhY2thZ2VcbiAgICpcbiAgICogVGhlcmUgYXJlIG11bHRpcGxlcyBzY2VuYXJpb3MgaGVyZSB0byBiZSBjb25zaWRlcmVkOlxuICAgKlxuICAgKiAxLiBQdWJsaXNoIHNjZW5hcmlvXG4gICAqXG4gICAqIFB1Ymxpc2ggYSBwYWNrYWdlIGNvbnNpc3Qgb2YgYXQgbGVhc3QgMSBzdGVwIChQVVQpIHdpdGggYSBtZXRhZGF0YSBwYXlsb2FkLlxuICAgKiBXaGVuIGEgcGFja2FnZSBpcyBwdWJsaXNoZWQsIGFuIF9hdHRhY2htZW50IHByb3BlcnR5IGlzIHByZXNlbnQgdGhhdCBjb250YWlucyB0aGUgZGF0YVxuICAgKiBvZiB0aGUgdGFyYmFsbC5cbiAgICpcbiAgICogRXhhbXBsZSBmbG93IG9mIHB1Ymxpc2guXG4gICAqXG4gICAqICBucG0gaHR0cCBmZXRjaCBQVVQgMjAxIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MSA5NjI3bXNcbiAgICAgIG5wbSBpbmZvIGxpZmVjeWNsZSBAc2NvcGUvdGVzdDFAMS4wLjF+cHVibGlzaDogQHNjb3BlL3Rlc3QxQDEuMC4xXG4gICAgICBucG0gaW5mbyBsaWZlY3ljbGUgQHNjb3BlL3Rlc3QxQDEuMC4xfnBvc3RwdWJsaXNoOiBAc2NvcGUvdGVzdDFAMS4wLjFcbiAgICAgICsgQHNjb3BlL3Rlc3QxQDEuMC4xXG4gICAgICBucG0gdmVyYiBleGl0IFsgMCwgdHJ1ZSBdXG4gICAqXG4gICAqXG4gICAqIDIuIFVucHVibGlzaCBzY2VuYXJpb1xuICAgKlxuICAgKiBVbnB1Ymxpc2ggY29uc2lzdCBpbiAzIHN0ZXBzLlxuICAgKiAgMS4gVHJ5IHRvIGZldGNoICBtZXRhZGF0YSAtPiBpZiBpdCBmYWlscywgcmV0dXJuIDQwNFxuICAgKiAgMi4gQ29tcHV0ZSBtZXRhZGF0YSBsb2NhbGx5IChjbGllbnQgc2lkZSkgYW5kIHNlbmQgYSBtdXRhdGUgcGF5bG9hZCBleGNsdWRpbmcgdGhlIHZlcnNpb24gdG8gYmUgdW5wdWJsaXNoZWRcbiAgICogICAgZWc6IGlmIG1ldGFkYXRhIHJlZmxlY3RzIDEuMC4xLCAxLjAuMiBhbmQgMS4wLjMsIHRoZSBjb21wdXRlZCBtZXRhZGF0YSB3b24ndCBpbmNsdWRlIDEuMC4zLlxuICAgKiAgMy4gT25jZSB0aGUgc2Vjb25kIHN0ZXAgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGZpbmlzaGVkLCBkZWxldGUgdGhlIHRhcmJhbGwuXG4gICAqXG4gICAqICBBbGwgdGhlc2Ugc3RlcHMgYXJlIGNvbnNlY3V0aXZlIGFuZCByZXF1aXJlZCwgdGhlcmUgaXMgbm8gdHJhbnNhY2lvbnMgaGVyZSwgaWYgc3RlcCAzIGZhaWxzLCBtZXRhZGF0YSBtaWdodFxuICAgKiAgZ2V0IGNvcnJ1cHRlZC5cbiAgICpcbiAgICogIE5vdGUgdGhlIHVucHVibGlzaCBjYWxsIHdpbGwgc3VmZml4IGluIHRoZSB1cmwgYSAvLXJldi8xNC01ZDUwMGNmY2U5MmY5MGZkIHJldmlzaW9uIG51bWJlciwgdGhpcyBub3RcbiAgICogIHVzZWQgaW50ZXJuYWxseS5cbiAgICpcbiAgICpcbiAgICogRXhhbXBsZSBmbG93IG9mIHVucHVibGlzaC5cbiAgICpcbiAgICogbnBtIGh0dHAgZmV0Y2ggR0VUIDIwMCBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDE/d3JpdGU9dHJ1ZSAxNjgwbXNcbiAgICAgbnBtIGh0dHAgZmV0Y2ggUFVUIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEvLXJldi8xNC01ZDUwMGNmY2U5MmY5MGZkIDk1NjYwNm1zIGF0dGVtcHQgIzJcbiAgICAgbnBtIGh0dHAgZmV0Y2ggR0VUIDIwMCBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDE/d3JpdGU9dHJ1ZSAxNjAxbXNcbiAgICAgbnBtIGh0dHAgZmV0Y2ggREVMRVRFIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEvLS90ZXN0MS0xLjAuMy50Z3ovLXJldi8xNi1lMTFjOGRiMjgyYjJkOTkyIDE5bXNcbiAgICpcbiAgICogMy4gU3RhciBhIHBhY2thZ2VcbiAgICpcbiAgICogUGVybWlzc2lvbnM6IHN0YXJ0IGEgcGFja2FnZSBkZXBlbmRzIG9mIHRoZSBwdWJsaXNoIGFuZCB1bnB1Ymxpc2ggcGVybWlzc2lvbnMsIHRoZXJlIGlzIG5vIHNwZWNpZmljIGZsYWcgZm9yIHN0YXIgb3IgdW4gc3RhcnQuXG4gICAqIFRoZSBVUkwgZm9yIHN0YXIgaXMgc2ltaWxhciB0byB0aGUgdW5wdWJsaXNoIChjaGFuZ2UgcGFja2FnZSBmb3JtYXQpXG4gICAqXG4gICAqIG5wbSBoYXMgbm8gZW5wb2ludCBmb3Igc3RhciBhIHBhY2thZ2UsIHJhdGhlciBtdXRhdGUgdGhlIG1ldGFkYXRhIGFuZCBhY3RzIGFzLCB0aGUgZGlmZmVyZW5jZSBpcyB0aGVcbiAgICogdXNlcnMgcHJvcGVydHkgd2hpY2ggaXMgcGFydCBvZiB0aGUgcGF5bG9hZCBhbmQgdGhlIGJvZHkgb25seSBpbmNsdWRlc1xuICAgKlxuICAgKiB7XG5cdFx0ICBcIl9pZFwiOiBwa2dOYW1lLFxuXHQgIFx0XCJfcmV2XCI6IFwiMy1iMGNkYWVmYzliZGI3N2M4XCIsXG5cdFx0ICBcInVzZXJzXCI6IHtcblx0XHQgICAgW3VzZXJuYW1lXTogYm9vbGVhbiB2YWx1ZSAodHJ1ZSwgZmFsc2UpXG5cdFx0ICB9XG5cdH1cbiAgICpcbiAgICovXG4gIHJvdXRlci5wdXQoXG4gICAgJy86cGFja2FnZS86X3Jldj8vOnJldmlzaW9uPycsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLFxuICAgIGV4cGVjdEpzb24sXG4gICAgcHVibGlzaFBhY2thZ2Uoc3RvcmFnZSwgY29uZmlnLCBhdXRoKVxuICApO1xuXG4gIC8qKlxuICAgKiBVbi1wdWJsaXNoaW5nIGFuIGVudGlyZSBwYWNrYWdlLlxuICAgKlxuICAgKiBUaGlzIHNjZW5hcmlvIGhhcHBlbnMgd2hlbiB0aGUgZmlyc3QgY2FsbCBkZXRlY3QgdGhlcmUgaXMgb25seSBvbmUgdmVyc2lvbiByZW1haW5pbmdcbiAgICogaW4gdGhlIG1ldGFkYXRhLCB0aGVuIHRoZSBjbGllbnQgZGVjaWRlcyB0byBERUxFVEUgdGhlIHJlc291cmNlXG4gICAqIG5wbSBodHRwIGZldGNoIEdFVCAzMDQgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTA3Nm1zIChmcm9tIGNhY2hlKVxuICAgICBucG0gaHR0cCBmZXRjaCBERUxFVEUgMjAxIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MS8tcmV2LzE4LWQ4ZWJlMzAyMGJkNGFjOWMgMjJtc1xuICAgKi9cbiAgcm91dGVyLmRlbGV0ZSgnLzpwYWNrYWdlLy1yZXYvKicsIGNhbigndW5wdWJsaXNoJyksIHVuUHVibGlzaFBhY2thZ2Uoc3RvcmFnZSkpO1xuXG4gIC8vIHJlbW92aW5nIGEgdGFyYmFsbFxuICByb3V0ZXIuZGVsZXRlKFxuICAgICcvOnBhY2thZ2UvLS86ZmlsZW5hbWUvLXJldi86cmV2aXNpb24nLFxuICAgIGNhbigndW5wdWJsaXNoJyksXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgcmVtb3ZlVGFyYmFsbChzdG9yYWdlKVxuICApO1xuXG4gIC8vIHVwbG9hZGluZyBwYWNrYWdlIHRhcmJhbGxcbiAgcm91dGVyLnB1dChcbiAgICAnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLyonLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKEhFQURFUlMuT0NURVRfU1RSRUFNKSxcbiAgICB1cGxvYWRQYWNrYWdlVGFyYmFsbChzdG9yYWdlKVxuICApO1xuXG4gIC8vIG9ubHkgdXNlZCBmb3IgZGV2ZWxvcG1lbnRcbiAgaWYgKGNvbmZpZy5fZGVidWcpIHtcbiAgICAvLyBhZGRpbmcgYSB2ZXJzaW9uXG4gICAgcm91dGVyLnB1dChcbiAgICAgICcvOnBhY2thZ2UvOnZlcnNpb24vLXRhZy86dGFnJyxcbiAgICAgIGNhbigncHVibGlzaCcpLFxuICAgICAgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLFxuICAgICAgZXhwZWN0SnNvbixcbiAgICAgIGFkZFZlcnNpb24oc3RvcmFnZSlcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogUHVibGlzaCBhIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2U6IFN0b3JhZ2UsIGNvbmZpZzogQ29uZmlnLCBhdXRoOiBBdXRoKTogYW55IHtcbiAgY29uc3Qgc3RhckFwaSA9IHN0YXIoc3RvcmFnZSk7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBkZWJ1ZygncHVibGlzaGluZyBvciB1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAvKipcbiAgICAgKiBXcml0ZSB0YXJiYWxsIG9mIHN0cmVhbSBkYXRhIGZyb20gcGFja2FnZSBjbGllbnRzLlxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZVRhcmJhbGwgPSBmdW5jdGlvbiAoZmlsZW5hbWU6IHN0cmluZywgZGF0YSwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBzdG9yYWdlLmFkZFRhcmJhbGwocGFja2FnZU5hbWUsIGZpbGVuYW1lKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNiKGVycik7XG4gICAgICB9KTtcbiAgICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2IoKTtcbiAgICAgIH0pO1xuICAgICAgLy8gdGhpcyBpcyBkdW1iIGFuZCBtZW1vcnktY29uc3VtaW5nLCBidXQgd2hhdCBjaG9pY2VzIGRvIHdlIGhhdmU/XG4gICAgICAvLyBmbG93OiB3ZSBuZWVkIGZpcnN0IHJlZmFjdG9yIHRoaXMgZmlsZSBiZWZvcmUgZGVjaWRlcyB3aGljaCB0eXBlIHVzZSBoZXJlXG4gICAgICBzdHJlYW0uZW5kKEJ1ZmZlci5mcm9tKGRhdGEuZGF0YSwgJ2Jhc2U2NCcpKTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgcGFja2FnZSB2ZXJzaW9uIGluIHN0b3JhZ2VcbiAgICAgKi9cbiAgICBjb25zdCBjcmVhdGVWZXJzaW9uID0gZnVuY3Rpb24gKHZlcnNpb246IHN0cmluZywgbWV0YWRhdGE6IFZlcnNpb24sIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCBtZXRhZGF0YSwgbnVsbCwgY2IpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbmV3IHRhZ3MgaW4gc3RvcmFnZVxuICAgICAqL1xuICAgIGNvbnN0IGFkZFRhZ3MgPSBmdW5jdGlvbiAodGFnczogTWVyZ2VUYWdzLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHBhY2thZ2VOYW1lLCB0YWdzLCBjYik7XG4gICAgfTtcblxuICAgIGNvbnN0IGFmdGVyQ2hhbmdlID0gZnVuY3Rpb24gKGVycm9yLCBva01lc3NhZ2UsIG1ldGFkYXRhKTogdm9pZCB7XG4gICAgICBjb25zdCBtZXRhZGF0YUNvcHk6IFBhY2thZ2UgPSB7IC4uLm1ldGFkYXRhIH07XG5cbiAgICAgIGNvbnN0IHsgX2F0dGFjaG1lbnRzLCB2ZXJzaW9ucyB9ID0gbWV0YWRhdGFDb3B5O1xuXG4gICAgICAvLyBgbnBtIHN0YXJgIHdvdWxkbid0IGhhdmUgYXR0YWNobWVudHNcbiAgICAgIC8vIGFuZCBgbnBtIGRlcHJlY2F0ZWAgd291bGQgaGF2ZSBhdHRhY2htZW50cyBhcyBhIGVtcHR5IG9iamVjdCwgaS5lIHt9XG4gICAgICBpZiAoXy5pc05pbChfYXR0YWNobWVudHMpIHx8IEpTT04uc3RyaW5naWZ5KF9hdHRhY2htZW50cykgPT09ICd7fScpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogb2tNZXNzYWdlLFxuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBucG0tcmVnaXN0cnktY2xpZW50IDAuMysgZW1iZWRzIHRhcmJhbGwgaW50byB0aGUganNvbiB1cGxvYWRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3MvbnBtLXJlZ2lzdHJ5LWNsaWVudC9jb21taXQvZTlmYmViOGI2N2YyNDkzOTRmNzM1Yzc0ZWYxMWZlNDcyMGQ0NmNhMFxuICAgICAgLy8gaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL3JsaWR3a2Evc2lub3BpYS9pc3N1ZXMvMzEsIGRlYWxpbmcgd2l0aCBpdCBoZXJlOlxuICAgICAgY29uc3QgaXNJbnZhbGlkQm9keUZvcm1hdCA9XG4gICAgICAgIGlzT2JqZWN0KF9hdHRhY2htZW50cykgPT09IGZhbHNlIHx8XG4gICAgICAgIGhhc0RpZmZPbmVLZXkoX2F0dGFjaG1lbnRzKSB8fFxuICAgICAgICBpc09iamVjdCh2ZXJzaW9ucykgPT09IGZhbHNlIHx8XG4gICAgICAgIGhhc0RpZmZPbmVLZXkodmVyc2lvbnMpO1xuXG4gICAgICBpZiAoaXNJbnZhbGlkQm9keUZvcm1hdCkge1xuICAgICAgICAvLyBucG0gaXMgZG9pbmcgc29tZXRoaW5nIHN0cmFuZ2UgYWdhaW5cbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIGluIG5vcm1hbCBjaXJjdW1zdGFuY2VzLCByZXBvcnQgaXQgYXMgYSBidWdcbiAgICAgICAgbG9nZ2VyLmluZm8oeyBwYWNrYWdlTmFtZSB9LCBgd3JvbmcgcGFja2FnZSBmb3JtYXQgb24gcHVibGlzaCBhIHBhY2thZ2UgQHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoQVBJX0VSUk9SLlVOU1VQT1JURURfUkVHSVNUUllfQ0FMTCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzICE9PSBIVFRQX1NUQVRVUy5DT05GTElDVCkge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQgZG9jdW1lbnQgaXMgZWl0aGVyIGNyZWF0ZWQgb3IgZXhpc3RlZCBiZWZvcmVcbiAgICAgIGNvbnN0IFtmaXJzdEF0dGFjaG1lbnRLZXldID0gT2JqZWN0LmtleXMoX2F0dGFjaG1lbnRzKTtcblxuICAgICAgY3JlYXRlVGFyYmFsbChcbiAgICAgICAgUGF0aC5iYXNlbmFtZShmaXJzdEF0dGFjaG1lbnRLZXkpLFxuICAgICAgICBfYXR0YWNobWVudHNbZmlyc3RBdHRhY2htZW50S2V5XSxcbiAgICAgICAgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdmVyc2lvblRvUHVibGlzaCA9IE9iamVjdC5rZXlzKHZlcnNpb25zKVswXTtcbiAgICAgICAgICBjb25zdCB2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2ggPSB2ZXJzaW9uc1t2ZXJzaW9uVG9QdWJsaXNoXTtcblxuICAgICAgICAgIHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUgPVxuICAgICAgICAgICAgXy5pc05pbCh2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gucmVhZG1lKSA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgPyBTdHJpbmcodmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSlcbiAgICAgICAgICAgICAgOiAnJztcblxuICAgICAgICAgIGNyZWF0ZVZlcnNpb24odmVyc2lvblRvUHVibGlzaCwgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFkZFRhZ3MobWV0YWRhdGFDb3B5W0RJU1RfVEFHU10sIGFzeW5jIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IG5vdGlmeShcbiAgICAgICAgICAgICAgICAgIG1ldGFkYXRhQ29weSxcbiAgICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICAgIHJlcS5yZW1vdGVfdXNlcixcbiAgICAgICAgICAgICAgICAgIGAke21ldGFkYXRhQ29weS5uYW1lfUAke3ZlcnNpb25Ub1B1Ymxpc2h9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHsgZXJyb3IgfSwgJ25vdGlmeSBiYXRjaCBzZXJ2aWNlIGhhcyBmYWlsZWQ6IEB7ZXJyb3J9Jyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dCh7IG9rOiBva01lc3NhZ2UsIHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgaWYgKGlzUHVibGlzaGFibGVQYWNrYWdlKHJlcS5ib2R5KSA9PT0gZmFsc2UgJiYgaXNPYmplY3QocmVxLmJvZHkudXNlcnMpKSB7XG4gICAgICByZXR1cm4gc3RhckFwaShyZXEsIHJlcywgbmV4dCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gdmFsaWRhdGlvblV0aWxzLm5vcm1hbGl6ZU1ldGFkYXRhKHJlcS5ib2R5LCBwYWNrYWdlTmFtZSk7XG4gICAgICAvLyBjaGVjayBfYXR0YWNobWVudHMgdG8gZGlzdGluZ3Vpc2ggcHVibGlzaCBhbmQgZGVwcmVjYXRlXG4gICAgICBpZiAoXG4gICAgICAgIHJlcS5wYXJhbXMuX3JldiB8fFxuICAgICAgICAoaXNSZWxhdGVkVG9EZXByZWNhdGlvbihyZXEuYm9keSkgJiYgXy5pc0VtcHR5KHJlcS5ib2R5Ll9hdHRhY2htZW50cykpXG4gICAgICApIHtcbiAgICAgICAgZGVidWcoJ3VwZGF0aW5nIGEgbmV3IHZlcnNpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgICAgICAvLyB3ZSBjaGVjayB1bnB1Ymxpc2ggcGVybWlzc2lvbnMsIGFuIHVwZGF0ZSBpcyBiYXNpY2FsbHkgcmVtb3ZlIHZlcnNpb25zXG4gICAgICAgIGNvbnN0IHJlbW90ZSA9IHJlcS5yZW1vdGVfdXNlcjtcbiAgICAgICAgYXV0aC5hbGxvd191bnB1Ymxpc2goeyBwYWNrYWdlTmFtZSB9LCByZW1vdGUsIChlcnJvcikgPT4ge1xuICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHsgcGFja2FnZU5hbWUgfSwgYG5vdCBhbGxvd2VkIHRvIHVucHVibGlzaCBhIHZlcnNpb24gZm9yIEB7cGFja2FnZU5hbWV9YCk7XG4gICAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0b3JhZ2UuY2hhbmdlUGFja2FnZShwYWNrYWdlTmFtZSwgbWV0YWRhdGEsIHJlcS5wYXJhbXMucmV2aXNpb24sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgYWZ0ZXJDaGFuZ2UoZXJyb3IsIEFQSV9NRVNTQUdFLlBLR19DSEFOR0VELCBtZXRhZGF0YSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVidWcoJ2FkZGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgc3RvcmFnZS5hZGRQYWNrYWdlKHBhY2thZ2VOYW1lLCBtZXRhZGF0YSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgYWZ0ZXJDaGFuZ2UoZXJyb3IsIEFQSV9NRVNTQUdFLlBLR19DUkVBVEVELCBtZXRhZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoeyBwYWNrYWdlTmFtZSB9LCAnZXJyb3Igb24gcHVibGlzaCwgYmFkIHBhY2thZ2UgZGF0YSBmb3IgQHtwYWNrYWdlTmFtZX0nKTtcbiAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRCYWREYXRhKEFQSV9FUlJPUi5CQURfUEFDS0FHRV9EQVRBKSk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIHVuLXB1Ymxpc2ggYSBwYWNrYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1blB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCd1bnB1Ymxpc2hpbmcgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgc3RvcmFnZS5yZW1vdmVQYWNrYWdlKHBhY2thZ2VOYW1lLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuUEtHX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVsZXRlIHRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRhcmJhbGwoc3RvcmFnZTogU3RvcmFnZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3QgeyBmaWxlbmFtZSwgcmV2aXNpb24gfSA9IHJlcS5wYXJhbXM7XG4gICAgZGVidWcoJ3JlbW92aW5nIGEgdGFyYmFsbCBmb3IgJW8tJW8tJW8nLCBwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uKTtcbiAgICBzdG9yYWdlLnJlbW92ZVRhcmJhbGwocGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbiwgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIGRlYnVnKCdzdWNjZXNzIHJlbW92ZSB0YXJiYWxsIGZvciAlby0lby0lbycsIHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24pO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuVEFSQkFMTF9SRU1PVkVEIH0pO1xuICAgIH0pO1xuICB9O1xufVxuLyoqXG4gKiBBZGRzIGEgbmV3IHZlcnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFZlcnNpb24oc3RvcmFnZTogU3RvcmFnZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgeyB2ZXJzaW9uLCB0YWcgfSA9IHJlcS5wYXJhbXM7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG5cbiAgICBzdG9yYWdlLmFkZFZlcnNpb24ocGFja2FnZU5hbWUsIHZlcnNpb24sIHJlcS5ib2R5LCB0YWcsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgb2s6IEFQSV9NRVNTQUdFLlBLR19QVUJMSVNIRUQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbn1cblxuLyoqXG4gKiB1cGxvYWRQYWNrYWdlVGFyYmFsbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBsb2FkUGFja2FnZVRhcmJhbGwoc3RvcmFnZTogU3RvcmFnZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5hZGRUYXJiYWxsKHBhY2thZ2VOYW1lLCByZXEucGFyYW1zLmZpbGVuYW1lKTtcbiAgICByZXEucGlwZShzdHJlYW0pO1xuXG4gICAgLy8gY2hlY2tpbmcgaWYgZW5kIGV2ZW50IGNhbWUgYmVmb3JlIGNsb3NpbmdcbiAgICBsZXQgY29tcGxldGUgPSBmYWxzZTtcbiAgICByZXEub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfSk7XG5cbiAgICByZXEub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb21wbGV0ZSkge1xuICAgICAgICBzdHJlYW0uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1VQTE9BREVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUksS0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBTCxPQUFBO0FBSUEsSUFBQU0sVUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsT0FBQSxHQUFBUixPQUFBO0FBRUEsSUFBQVMsYUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsTUFBQSxHQUFBVixPQUFBO0FBRUEsSUFBQVcsS0FBQSxHQUFBWixzQkFBQSxDQUFBQyxPQUFBO0FBQTBCLFNBQUFELHVCQUFBYSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQUcsUUFBQUgsQ0FBQSxFQUFBSSxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFQLENBQUEsT0FBQU0sTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQVIsQ0FBQSxHQUFBSSxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFO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
359
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfbWltZSIsIl9wYXRoIiwiX2NvcmUiLCJfaG9va3MiLCJfbWlkZGxld2FyZSIsIl9jb25zdGFudHMiLCJfbG9nZ2VyIiwiX3N0b3JhZ2VVdGlscyIsIl91dGlscyIsIl9zdGFyIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJidWlsZERlYnVnIiwicHVibGlzaCIsInJvdXRlciIsImF1dGgiLCJzdG9yYWdlIiwiY29uZmlnIiwiY2FuIiwiYWxsb3ciLCJiZWZvcmVBbGwiLCJwYXJhbXMiLCJtZXNzYWdlIiwibG9nZ2VyIiwidHJhY2UiLCJhZnRlckFsbCIsInB1dCIsIm1lZGlhIiwibWltZSIsImdldFR5cGUiLCJleHBlY3RKc29uIiwicHVibGlzaFBhY2thZ2UiLCJkZWxldGUiLCJ1blB1Ymxpc2hQYWNrYWdlIiwicmVtb3ZlVGFyYmFsbCIsIkhFQURFUlMiLCJPQ1RFVF9TVFJFQU0iLCJ1cGxvYWRQYWNrYWdlVGFyYmFsbCIsImFkZFZlcnNpb24iLCJzdGFyQXBpIiwic3RhciIsInJlcSIsInJlcyIsIm5leHQiLCJwYWNrYWdlTmFtZSIsInBhY2thZ2UiLCJjcmVhdGVUYXJiYWxsIiwiZmlsZW5hbWUiLCJkYXRhIiwiY2IiLCJzdHJlYW0iLCJhZGRUYXJiYWxsIiwib24iLCJlcnIiLCJlbmQiLCJCdWZmZXIiLCJmcm9tIiwiZG9uZSIsImNyZWF0ZVZlcnNpb24iLCJ2ZXJzaW9uIiwibWV0YWRhdGEiLCJhZGRUYWdzIiwidGFncyIsIm1lcmdlVGFncyIsImFmdGVyQ2hhbmdlIiwiZXJyb3IiLCJva01lc3NhZ2UiLCJtZXRhZGF0YUNvcHkiLCJfYXR0YWNobWVudHMiLCJ2ZXJzaW9ucyIsIl8iLCJpc05pbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIkNSRUFURUQiLCJvayIsInN1Y2Nlc3MiLCJpc0ludmFsaWRCb2R5Rm9ybWF0IiwiaXNPYmplY3QiLCJoYXNEaWZmT25lS2V5IiwiaW5mbyIsIkVycm9yQ29kZSIsImdldEJhZFJlcXVlc3QiLCJBUElfRVJST1IiLCJVTlNVUE9SVEVEX1JFR0lTVFJZX0NBTEwiLCJDT05GTElDVCIsImZpcnN0QXR0YWNobWVudEtleSIsIk9iamVjdCIsImtleXMiLCJQYXRoIiwiYmFzZW5hbWUiLCJ2ZXJzaW9uVG9QdWJsaXNoIiwidmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoIiwicmVhZG1lIiwiU3RyaW5nIiwiRElTVF9UQUdTIiwibm90aWZ5IiwicmVtb3RlX3VzZXIiLCJuYW1lIiwiaXNQdWJsaXNoYWJsZVBhY2thZ2UiLCJib2R5IiwidXNlcnMiLCJ2YWxpZGF0aW9uVXRpbHMiLCJub3JtYWxpemVNZXRhZGF0YSIsIl9yZXYiLCJpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uIiwiaXNFbXB0eSIsInJlbW90ZSIsImFsbG93X3VucHVibGlzaCIsImNoYW5nZVBhY2thZ2UiLCJyZXZpc2lvbiIsIkFQSV9NRVNTQUdFIiwiUEtHX0NIQU5HRUQiLCJhZGRQYWNrYWdlIiwiUEtHX0NSRUFURUQiLCJnZXRCYWREYXRhIiwiQkFEX1BBQ0tBR0VfREFUQSIsInJlbW92ZVBhY2thZ2UiLCJQS0dfUkVNT1ZFRCIsIlRBUkJBTExfUkVNT1ZFRCIsInRhZyIsIlBLR19QVUJMSVNIRUQiLCJwaXBlIiwiY29tcGxldGUiLCJhYm9ydCIsImxvY2FscyIsInJlcG9ydF9lcnJvciIsIlRBUkJBTExfVVBMT0FERUQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9wdWJsaXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtaW1lIGZyb20gJ21pbWUnO1xuaW1wb3J0IFBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7IHZhbGlkYXRpb25VdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBub3RpZnkgfSBmcm9tICdAdmVyZGFjY2lvL2hvb2tzJztcbmltcG9ydCB7IGFsbG93LCBleHBlY3RKc29uLCBtZWRpYSB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBDYWxsYmFjaywgQ29uZmlnLCBNZXJnZVRhZ3MsIFBhY2thZ2UsIFZlcnNpb24gfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuaW1wb3J0IEF1dGggZnJvbSAnLi4vLi4vLi4vbGliL2F1dGgnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBBUElfTUVTU0FHRSwgRElTVF9UQUdTLCBIRUFERVJTLCBIVFRQX1NUQVRVUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgU3RvcmFnZSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZSc7XG5pbXBvcnQgeyBpc1B1Ymxpc2hhYmxlUGFja2FnZSB9IGZyb20gJy4uLy4uLy4uL2xpYi9zdG9yYWdlLXV0aWxzJztcbmltcG9ydCB7IEVycm9yQ29kZSwgaGFzRGlmZk9uZUtleSwgaXNPYmplY3QsIGlzUmVsYXRlZFRvRGVwcmVjYXRpb24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCBzdGFyIGZyb20gJy4vc3Rhcic7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvOnB1Ymxpc2gnKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHVibGlzaChcbiAgcm91dGVyOiBSb3V0ZXIsXG4gIGF1dGg6IEF1dGgsXG4gIHN0b3JhZ2U6IFN0b3JhZ2UsXG4gIGNvbmZpZzogQ29uZmlnXG4pOiB2b2lkIHtcbiAgY29uc3QgY2FuID0gYWxsb3coYXV0aCwge1xuICAgIGJlZm9yZUFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLnRyYWNlKHBhcmFtcywgbWVzc2FnZSksXG4gICAgYWZ0ZXJBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICB9KTtcblxuICAvKipcbiAgICogUHVibGlzaCBhIHBhY2thZ2UgLyB1cGRhdGUgcGFja2FnZSAvIHVuL3N0YXJ0IGEgcGFja2FnZVxuICAgKlxuICAgKiBUaGVyZSBhcmUgbXVsdGlwbGVzIHNjZW5hcmlvcyBoZXJlIHRvIGJlIGNvbnNpZGVyZWQ6XG4gICAqXG4gICAqIDEuIFB1Ymxpc2ggc2NlbmFyaW9cbiAgICpcbiAgICogUHVibGlzaCBhIHBhY2thZ2UgY29uc2lzdCBvZiBhdCBsZWFzdCAxIHN0ZXAgKFBVVCkgd2l0aCBhIG1ldGFkYXRhIHBheWxvYWQuXG4gICAqIFdoZW4gYSBwYWNrYWdlIGlzIHB1Ymxpc2hlZCwgYW4gX2F0dGFjaG1lbnQgcHJvcGVydHkgaXMgcHJlc2VudCB0aGF0IGNvbnRhaW5zIHRoZSBkYXRhXG4gICAqIG9mIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiBFeGFtcGxlIGZsb3cgb2YgcHVibGlzaC5cbiAgICpcbiAgICogIG5wbSBodHRwIGZldGNoIFBVVCAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxIDk2Mjdtc1xuICAgICAgbnBtIGluZm8gbGlmZWN5Y2xlIEBzY29wZS90ZXN0MUAxLjAuMX5wdWJsaXNoOiBAc2NvcGUvdGVzdDFAMS4wLjFcbiAgICAgIG5wbSBpbmZvIGxpZmVjeWNsZSBAc2NvcGUvdGVzdDFAMS4wLjF+cG9zdHB1Ymxpc2g6IEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgKyBAc2NvcGUvdGVzdDFAMS4wLjFcbiAgICAgIG5wbSB2ZXJiIGV4aXQgWyAwLCB0cnVlIF1cbiAgICpcbiAgICpcbiAgICogMi4gVW5wdWJsaXNoIHNjZW5hcmlvXG4gICAqXG4gICAqIFVucHVibGlzaCBjb25zaXN0IGluIDMgc3RlcHMuXG4gICAqICAxLiBUcnkgdG8gZmV0Y2ggIG1ldGFkYXRhIC0+IGlmIGl0IGZhaWxzLCByZXR1cm4gNDA0XG4gICAqICAyLiBDb21wdXRlIG1ldGFkYXRhIGxvY2FsbHkgKGNsaWVudCBzaWRlKSBhbmQgc2VuZCBhIG11dGF0ZSBwYXlsb2FkIGV4Y2x1ZGluZyB0aGUgdmVyc2lvbiB0byBiZSB1bnB1Ymxpc2hlZFxuICAgKiAgICBlZzogaWYgbWV0YWRhdGEgcmVmbGVjdHMgMS4wLjEsIDEuMC4yIGFuZCAxLjAuMywgdGhlIGNvbXB1dGVkIG1ldGFkYXRhIHdvbid0IGluY2x1ZGUgMS4wLjMuXG4gICAqICAzLiBPbmNlIHRoZSBzZWNvbmQgc3RlcCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZmluaXNoZWQsIGRlbGV0ZSB0aGUgdGFyYmFsbC5cbiAgICpcbiAgICogIEFsbCB0aGVzZSBzdGVwcyBhcmUgY29uc2VjdXRpdmUgYW5kIHJlcXVpcmVkLCB0aGVyZSBpcyBubyB0cmFuc2FjaW9ucyBoZXJlLCBpZiBzdGVwIDMgZmFpbHMsIG1ldGFkYXRhIG1pZ2h0XG4gICAqICBnZXQgY29ycnVwdGVkLlxuICAgKlxuICAgKiAgTm90ZSB0aGUgdW5wdWJsaXNoIGNhbGwgd2lsbCBzdWZmaXggaW4gdGhlIHVybCBhIC8tcmV2LzE0LTVkNTAwY2ZjZTkyZjkwZmQgcmV2aXNpb24gbnVtYmVyLCB0aGlzIG5vdFxuICAgKiAgdXNlZCBpbnRlcm5hbGx5LlxuICAgKlxuICAgKlxuICAgKiBFeGFtcGxlIGZsb3cgb2YgdW5wdWJsaXNoLlxuICAgKlxuICAgKiBucG0gaHR0cCBmZXRjaCBHRVQgMjAwIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDE2ODBtc1xuICAgICBucG0gaHR0cCBmZXRjaCBQVVQgMjAxIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MS8tcmV2LzE0LTVkNTAwY2ZjZTkyZjkwZmQgOTU2NjA2bXMgYXR0ZW1wdCAjMlxuICAgICBucG0gaHR0cCBmZXRjaCBHRVQgMjAwIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDE2MDFtc1xuICAgICBucG0gaHR0cCBmZXRjaCBERUxFVEUgMjAxIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MS8tL3Rlc3QxLTEuMC4zLnRnei8tcmV2LzE2LWUxMWM4ZGIyODJiMmQ5OTIgMTltc1xuICAgKlxuICAgKiAzLiBTdGFyIGEgcGFja2FnZVxuICAgKlxuICAgKiBQZXJtaXNzaW9uczogc3RhcnQgYSBwYWNrYWdlIGRlcGVuZHMgb2YgdGhlIHB1Ymxpc2ggYW5kIHVucHVibGlzaCBwZXJtaXNzaW9ucywgdGhlcmUgaXMgbm8gc3BlY2lmaWMgZmxhZyBmb3Igc3RhciBvciB1biBzdGFydC5cbiAgICogVGhlIFVSTCBmb3Igc3RhciBpcyBzaW1pbGFyIHRvIHRoZSB1bnB1Ymxpc2ggKGNoYW5nZSBwYWNrYWdlIGZvcm1hdClcbiAgICpcbiAgICogbnBtIGhhcyBubyBlbnBvaW50IGZvciBzdGFyIGEgcGFja2FnZSwgcmF0aGVyIG11dGF0ZSB0aGUgbWV0YWRhdGEgYW5kIGFjdHMgYXMsIHRoZSBkaWZmZXJlbmNlIGlzIHRoZVxuICAgKiB1c2VycyBwcm9wZXJ0eSB3aGljaCBpcyBwYXJ0IG9mIHRoZSBwYXlsb2FkIGFuZCB0aGUgYm9keSBvbmx5IGluY2x1ZGVzXG4gICAqXG4gICAqIHtcblx0XHQgIFwiX2lkXCI6IHBrZ05hbWUsXG5cdCAgXHRcIl9yZXZcIjogXCIzLWIwY2RhZWZjOWJkYjc3YzhcIixcblx0XHQgIFwidXNlcnNcIjoge1xuXHRcdCAgICBbdXNlcm5hbWVdOiBib29sZWFuIHZhbHVlICh0cnVlLCBmYWxzZSlcblx0XHQgIH1cblx0fVxuICAgKlxuICAgKi9cbiAgcm91dGVyLnB1dChcbiAgICAnLzpwYWNrYWdlLzpfcmV2Py86cmV2aXNpb24/JyxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICBtZWRpYShtaW1lLmdldFR5cGUoJ2pzb24nKSksXG4gICAgZXhwZWN0SnNvbixcbiAgICBwdWJsaXNoUGFja2FnZShzdG9yYWdlLCBjb25maWcsIGF1dGgpXG4gICk7XG5cbiAgLyoqXG4gICAqIFVuLXB1Ymxpc2hpbmcgYW4gZW50aXJlIHBhY2thZ2UuXG4gICAqXG4gICAqIFRoaXMgc2NlbmFyaW8gaGFwcGVucyB3aGVuIHRoZSBmaXJzdCBjYWxsIGRldGVjdCB0aGVyZSBpcyBvbmx5IG9uZSB2ZXJzaW9uIHJlbWFpbmluZ1xuICAgKiBpbiB0aGUgbWV0YWRhdGEsIHRoZW4gdGhlIGNsaWVudCBkZWNpZGVzIHRvIERFTEVURSB0aGUgcmVzb3VyY2VcbiAgICogbnBtIGh0dHAgZmV0Y2ggR0VUIDMwNCBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDE/d3JpdGU9dHJ1ZSAxMDc2bXMgKGZyb20gY2FjaGUpXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTgtZDhlYmUzMDIwYmQ0YWM5YyAyMm1zXG4gICAqL1xuICByb3V0ZXIuZGVsZXRlKCcvOnBhY2thZ2UvLXJldi8qJywgY2FuKCd1bnB1Ymxpc2gnKSwgdW5QdWJsaXNoUGFja2FnZShzdG9yYWdlKSk7XG5cbiAgLy8gcmVtb3ZpbmcgYSB0YXJiYWxsXG4gIHJvdXRlci5kZWxldGUoXG4gICAgJy86cGFja2FnZS8tLzpmaWxlbmFtZS8tcmV2LzpyZXZpc2lvbicsXG4gICAgY2FuKCd1bnB1Ymxpc2gnKSxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICByZW1vdmVUYXJiYWxsKHN0b3JhZ2UpXG4gICk7XG5cbiAgLy8gdXBsb2FkaW5nIHBhY2thZ2UgdGFyYmFsbFxuICByb3V0ZXIucHV0KFxuICAgICcvOnBhY2thZ2UvLS86ZmlsZW5hbWUvKicsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgbWVkaWEoSEVBREVSUy5PQ1RFVF9TVFJFQU0pLFxuICAgIHVwbG9hZFBhY2thZ2VUYXJiYWxsKHN0b3JhZ2UpXG4gICk7XG5cbiAgLy8gb25seSB1c2VkIGZvciBkZXZlbG9wbWVudFxuICBpZiAoY29uZmlnLl9kZWJ1Zykge1xuICAgIC8vIGFkZGluZyBhIHZlcnNpb25cbiAgICByb3V0ZXIucHV0KFxuICAgICAgJy86cGFja2FnZS86dmVyc2lvbi8tdGFnLzp0YWcnLFxuICAgICAgY2FuKCdwdWJsaXNoJyksXG4gICAgICBtZWRpYShtaW1lLmdldFR5cGUoJ2pzb24nKSksXG4gICAgICBleHBlY3RKc29uLFxuICAgICAgYWRkVmVyc2lvbihzdG9yYWdlKVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBQdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHVibGlzaFBhY2thZ2Uoc3RvcmFnZTogU3RvcmFnZSwgY29uZmlnOiBDb25maWcsIGF1dGg6IEF1dGgpOiBhbnkge1xuICBjb25zdCBzdGFyQXBpID0gc3RhcihzdG9yYWdlKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCdwdWJsaXNoaW5nIG9yIHVwZGF0aW5nIGEgbmV3IHZlcnNpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgIC8qKlxuICAgICAqIFdyaXRlIHRhcmJhbGwgb2Ygc3RyZWFtIGRhdGEgZnJvbSBwYWNrYWdlIGNsaWVudHMuXG4gICAgICovXG4gICAgY29uc3QgY3JlYXRlVGFyYmFsbCA9IGZ1bmN0aW9uIChmaWxlbmFtZTogc3RyaW5nLCBkYXRhLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuYWRkVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgY2IoZXJyKTtcbiAgICAgIH0pO1xuICAgICAgc3RyZWFtLm9uKCdzdWNjZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYigpO1xuICAgICAgfSk7XG4gICAgICAvLyB0aGlzIGlzIGR1bWIgYW5kIG1lbW9yeS1jb25zdW1pbmcsIGJ1dCB3aGF0IGNob2ljZXMgZG8gd2UgaGF2ZT9cbiAgICAgIC8vIGZsb3c6IHdlIG5lZWQgZmlyc3QgcmVmYWN0b3IgdGhpcyBmaWxlIGJlZm9yZSBkZWNpZGVzIHdoaWNoIHR5cGUgdXNlIGhlcmVcbiAgICAgIHN0cmVhbS5lbmQoQnVmZmVyLmZyb20oZGF0YS5kYXRhLCAnYmFzZTY0JykpO1xuICAgICAgc3RyZWFtLmRvbmUoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQWRkIG5ldyBwYWNrYWdlIHZlcnNpb24gaW4gc3RvcmFnZVxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZVZlcnNpb24gPSBmdW5jdGlvbiAodmVyc2lvbjogc3RyaW5nLCBtZXRhZGF0YTogVmVyc2lvbiwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLmFkZFZlcnNpb24ocGFja2FnZU5hbWUsIHZlcnNpb24sIG1ldGFkYXRhLCBudWxsLCBjYik7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgdGFncyBpbiBzdG9yYWdlXG4gICAgICovXG4gICAgY29uc3QgYWRkVGFncyA9IGZ1bmN0aW9uICh0YWdzOiBNZXJnZVRhZ3MsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5tZXJnZVRhZ3MocGFja2FnZU5hbWUsIHRhZ3MsIGNiKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWZ0ZXJDaGFuZ2UgPSBmdW5jdGlvbiAoZXJyb3IsIG9rTWVzc2FnZSwgbWV0YWRhdGEpOiB2b2lkIHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQ29weTogUGFja2FnZSA9IHsgLi4ubWV0YWRhdGEgfTtcblxuICAgICAgY29uc3QgeyBfYXR0YWNobWVudHMsIHZlcnNpb25zIH0gPSBtZXRhZGF0YUNvcHk7XG5cbiAgICAgIC8vIGBucG0gc3RhcmAgd291bGRuJ3QgaGF2ZSBhdHRhY2htZW50c1xuICAgICAgLy8gYW5kIGBucG0gZGVwcmVjYXRlYCB3b3VsZCBoYXZlIGF0dGFjaG1lbnRzIGFzIGEgZW1wdHkgb2JqZWN0LCBpLmUge31cbiAgICAgIGlmIChfLmlzTmlsKF9hdHRhY2htZW50cykgfHwgSlNPTi5zdHJpbmdpZnkoX2F0dGFjaG1lbnRzKSA9PT0gJ3t9Jykge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgIG9rOiBva01lc3NhZ2UsXG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIG5wbS1yZWdpc3RyeS1jbGllbnQgMC4zKyBlbWJlZHMgdGFyYmFsbCBpbnRvIHRoZSBqc29uIHVwbG9hZFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2lzYWFjcy9ucG0tcmVnaXN0cnktY2xpZW50L2NvbW1pdC9lOWZiZWI4YjY3ZjI0OTM5NGY3MzVjNzRlZjExZmU0NzIwZDQ2Y2EwXG4gICAgICAvLyBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vcmxpZHdrYS9zaW5vcGlhL2lzc3Vlcy8zMSwgZGVhbGluZyB3aXRoIGl0IGhlcmU6XG4gICAgICBjb25zdCBpc0ludmFsaWRCb2R5Rm9ybWF0ID1cbiAgICAgICAgaXNPYmplY3QoX2F0dGFjaG1lbnRzKSA9PT0gZmFsc2UgfHxcbiAgICAgICAgaGFzRGlmZk9uZUtleShfYXR0YWNobWVudHMpIHx8XG4gICAgICAgIGlzT2JqZWN0KHZlcnNpb25zKSA9PT0gZmFsc2UgfHxcbiAgICAgICAgaGFzRGlmZk9uZUtleSh2ZXJzaW9ucyk7XG5cbiAgICAgIGlmIChpc0ludmFsaWRCb2R5Rm9ybWF0KSB7XG4gICAgICAgIC8vIG5wbSBpcyBkb2luZyBzb21ldGhpbmcgc3RyYW5nZSBhZ2FpblxuICAgICAgICAvLyBpZiB0aGlzIGhhcHBlbnMgaW4gbm9ybWFsIGNpcmN1bXN0YW5jZXMsIHJlcG9ydCBpdCBhcyBhIGJ1Z1xuICAgICAgICBsb2dnZXIuaW5mbyh7IHBhY2thZ2VOYW1lIH0sIGB3cm9uZyBwYWNrYWdlIGZvcm1hdCBvbiBwdWJsaXNoIGEgcGFja2FnZSBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChBUElfRVJST1IuVU5TVVBPUlRFRF9SRUdJU1RSWV9DQUxMKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlcnJvciAmJiBlcnJvci5zdGF0dXMgIT09IEhUVFBfU1RBVFVTLkNPTkZMSUNUKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgLy8gYXQgdGhpcyBwb2ludCBkb2N1bWVudCBpcyBlaXRoZXIgY3JlYXRlZCBvciBleGlzdGVkIGJlZm9yZVxuICAgICAgY29uc3QgW2ZpcnN0QXR0YWNobWVudEtleV0gPSBPYmplY3Qua2V5cyhfYXR0YWNobWVudHMpO1xuXG4gICAgICBjcmVhdGVUYXJiYWxsKFxuICAgICAgICBQYXRoLmJhc2VuYW1lKGZpcnN0QXR0YWNobWVudEtleSksXG4gICAgICAgIF9hdHRhY2htZW50c1tmaXJzdEF0dGFjaG1lbnRLZXldLFxuICAgICAgICBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB2ZXJzaW9uVG9QdWJsaXNoID0gT2JqZWN0LmtleXModmVyc2lvbnMpWzBdO1xuICAgICAgICAgIGNvbnN0IHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCA9IHZlcnNpb25zW3ZlcnNpb25Ub1B1Ymxpc2hdO1xuXG4gICAgICAgICAgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSA9XG4gICAgICAgICAgICBfLmlzTmlsKHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUpID09PSBmYWxzZVxuICAgICAgICAgICAgICA/IFN0cmluZyh2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gucmVhZG1lKVxuICAgICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgICAgY3JlYXRlVmVyc2lvbih2ZXJzaW9uVG9QdWJsaXNoLCB2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWRkVGFncyhtZXRhZGF0YUNvcHlbRElTVF9UQUdTXSwgYXN5bmMgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgbm90aWZ5KFxuICAgICAgICAgICAgICAgICAgbWV0YWRhdGFDb3B5LFxuICAgICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgICAgcmVxLnJlbW90ZV91c2VyLFxuICAgICAgICAgICAgICAgICAgYCR7bWV0YWRhdGFDb3B5Lm5hbWV9QCR7dmVyc2lvblRvUHVibGlzaH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBlcnJvciB9LCAnbm90aWZ5IGJhdGNoIHNlcnZpY2UgaGFzIGZhaWxlZDogQHtlcnJvcn0nKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KHsgb2s6IG9rTWVzc2FnZSwgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH07XG5cbiAgICBpZiAoaXNQdWJsaXNoYWJsZVBhY2thZ2UocmVxLmJvZHkpID09PSBmYWxzZSAmJiBpc09iamVjdChyZXEuYm9keS51c2VycykpIHtcbiAgICAgIHJldHVybiBzdGFyQXBpKHJlcSwgcmVzLCBuZXh0KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSB2YWxpZGF0aW9uVXRpbHMubm9ybWFsaXplTWV0YWRhdGEocmVxLmJvZHksIHBhY2thZ2VOYW1lKTtcbiAgICAgIC8vIGNoZWNrIF9hdHRhY2htZW50cyB0byBkaXN0aW5ndWlzaCBwdWJsaXNoIGFuZCBkZXByZWNhdGVcbiAgICAgIGlmIChcbiAgICAgICAgcmVxLnBhcmFtcy5fcmV2IHx8XG4gICAgICAgIChpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uKHJlcS5ib2R5KSAmJiBfLmlzRW1wdHkocmVxLmJvZHkuX2F0dGFjaG1lbnRzKSlcbiAgICAgICkge1xuICAgICAgICBkZWJ1ZygndXBkYXRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIC8vIHdlIGNoZWNrIHVucHVibGlzaCBwZXJtaXNzaW9ucywgYW4gdXBkYXRlIGlzIGJhc2ljYWxseSByZW1vdmUgdmVyc2lvbnNcbiAgICAgICAgY29uc3QgcmVtb3RlID0gcmVxLnJlbW90ZV91c2VyO1xuICAgICAgICBhdXRoLmFsbG93X3VucHVibGlzaCh7IHBhY2thZ2VOYW1lIH0sIHJlbW90ZSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBwYWNrYWdlTmFtZSB9LCBgbm90IGFsbG93ZWQgdG8gdW5wdWJsaXNoIGEgdmVyc2lvbiBmb3IgQHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RvcmFnZS5jaGFuZ2VQYWNrYWdlKHBhY2thZ2VOYW1lLCBtZXRhZGF0YSwgcmVxLnBhcmFtcy5yZXZpc2lvbiwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBhZnRlckNoYW5nZShlcnJvciwgQVBJX01FU1NBR0UuUEtHX0NIQU5HRUQsIG1ldGFkYXRhKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWJ1ZygnYWRkaW5nIGEgbmV3IHZlcnNpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgICAgICBzdG9yYWdlLmFkZFBhY2thZ2UocGFja2FnZU5hbWUsIG1ldGFkYXRhLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBhZnRlckNoYW5nZShlcnJvciwgQVBJX01FU1NBR0UuUEtHX0NSRUFURUQsIG1ldGFkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgZGVidWcoJ2Vycm9yIG9uIHB1Ymxpc2g6ICVzJywgZXJyb3IubWVzc2FnZSk7XG4gICAgICBsb2dnZXIuZXJyb3IoeyBwYWNrYWdlTmFtZSB9LCAnZXJyb3Igb24gcHVibGlzaCwgYmFkIHBhY2thZ2UgZGF0YSBmb3IgQHtwYWNrYWdlTmFtZX0nKTtcbiAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRCYWREYXRhKEFQSV9FUlJPUi5CQURfUEFDS0FHRV9EQVRBKSk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIHVuLXB1Ymxpc2ggYSBwYWNrYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1blB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCd1bnB1Ymxpc2hpbmcgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgc3RvcmFnZS5yZW1vdmVQYWNrYWdlKHBhY2thZ2VOYW1lLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuUEtHX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVsZXRlIHRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRhcmJhbGwoc3RvcmFnZTogU3RvcmFnZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3QgeyBmaWxlbmFtZSwgcmV2aXNpb24gfSA9IHJlcS5wYXJhbXM7XG4gICAgZGVidWcoJ3JlbW92aW5nIGEgdGFyYmFsbCBmb3IgJW8tJW8tJW8nLCBwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uKTtcbiAgICBzdG9yYWdlLnJlbW92ZVRhcmJhbGwocGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbiwgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIGRlYnVnKCdzdWNjZXNzIHJlbW92ZSB0YXJiYWxsIGZvciAlby0lby0lbycsIHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24pO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuVEFSQkFMTF9SRU1PVkVEIH0pO1xuICAgIH0pO1xuICB9O1xufVxuLyoqXG4gKiBBZGRzIGEgbmV3IHZlcnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFZlcnNpb24oc3RvcmFnZTogU3RvcmFnZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgeyB2ZXJzaW9uLCB0YWcgfSA9IHJlcS5wYXJhbXM7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG5cbiAgICBzdG9yYWdlLmFkZFZlcnNpb24ocGFja2FnZU5hbWUsIHZlcnNpb24sIHJlcS5ib2R5LCB0YWcsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgb2s6IEFQSV9NRVNTQUdFLlBLR19QVUJMSVNIRUQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbn1cblxuLyoqXG4gKiB1cGxvYWRQYWNrYWdlVGFyYmFsbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBsb2FkUGFja2FnZVRhcmJhbGwoc3RvcmFnZTogU3RvcmFnZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5hZGRUYXJiYWxsKHBhY2thZ2VOYW1lLCByZXEucGFyYW1zLmZpbGVuYW1lKTtcbiAgICByZXEucGlwZShzdHJlYW0pO1xuXG4gICAgLy8gY2hlY2tpbmcgaWYgZW5kIGV2ZW50IGNhbWUgYmVmb3JlIGNsb3NpbmdcbiAgICBsZXQgY29tcGxldGUgPSBmYWxzZTtcbiAgICByZXEub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfSk7XG5cbiAgICByZXEub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb21wbGV0ZSkge1xuICAgICAgICBzdHJlYW0uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1VQTE9BREVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxP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
@@ -9,7 +9,7 @@ var _constants = require("../../../lib/constants");
9
9
  var _logger = require("../../../lib/logger");
10
10
  function _default(route, auth, storage) {
11
11
  // searching packages
12
- route.get(_middleware.SEARCH_API_ENDPOINTS.deprecated_search, function (req, res, next) {
12
+ route.get(_middleware.SEARCH_API_ENDPOINTS.deprecated_search, function (req, res) {
13
13
  let received_end = false;
14
14
  let response_finished = false;
15
15
  let processing_pkgs = 0;
@@ -104,4 +104,4 @@ function _default(route, auth, storage) {
104
104
  });
105
105
  });
106
106
  }
107
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWlkZGxld2FyZSIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIl9kZWZhdWx0Iiwicm91dGUiLCJhdXRoIiwic3RvcmFnZSIsImdldCIsIlNFQVJDSF9BUElfRU5EUE9JTlRTIiwiZGVwcmVjYXRlZF9zZWFyY2giLCJyZXEiLCJyZXMiLCJuZXh0IiwicmVjZWl2ZWRfZW5kIiwicmVzcG9uc2VfZmluaXNoZWQiLCJwcm9jZXNzaW5nX3BrZ3MiLCJmaXJzdFBhY2thZ2UiLCJsb2dnZXIiLCJ3YXJuIiwic3RhdHVzIiwic2V0IiwiSEVBREVSUyIsIkNPTlRFTlRfVFlQRSIsIkpTT05fQ0hBUlNFVCIsInJlc3BTaG91bGRCZUFycmF5IiwicGF0aCIsImVuZHNXaXRoIiwiY2hlY2tfZmluaXNoIiwiZW5kIiwid3JpdGUiLCJzdHJlYW0iLCJzZWFyY2giLCJxdWVyeSIsInN0YXJ0a2V5Iiwib24iLCJlYWNoIiwicGtnIiwiYWxsb3dfYWNjZXNzIiwicGFja2FnZU5hbWUiLCJuYW1lIiwicmVtb3RlX3VzZXIiLCJlcnIiLCJhbGxvd2VkIiwiU3RyaW5nIiwibWF0Y2giLCJhYm9ydCIsIkpTT04iLCJzdHJpbmdpZnkiLCJlcnJvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3NlYXJjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTRUFSQ0hfQVBJX0VORFBPSU5UUyB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5cbmltcG9ydCB7IEhFQURFUlMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGUsIGF1dGgsIHN0b3JhZ2UpOiB2b2lkIHtcbiAgLy8gc2VhcmNoaW5nIHBhY2thZ2VzXG4gIHJvdXRlLmdldChTRUFSQ0hfQVBJX0VORFBPSU5UUy5kZXByZWNhdGVkX3NlYXJjaCwgZnVuY3Rpb24gKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgbGV0IHJlY2VpdmVkX2VuZCA9IGZhbHNlO1xuICAgIGxldCByZXNwb25zZV9maW5pc2hlZCA9IGZhbHNlO1xuICAgIGxldCBwcm9jZXNzaW5nX3BrZ3MgPSAwO1xuICAgIGxldCBmaXJzdFBhY2thZ2UgPSB0cnVlO1xuICAgIGxvZ2dlci53YXJuKCcvLS9hbGwgc2VhcmNoIGVuZHBvaW50IGlzIGRlcHJlY2F0ZWQsIG1pZ2h0IGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZScpO1xuICAgIHJlcy5zdGF0dXMoMjAwKTtcbiAgICByZXMuc2V0KEhFQURFUlMuQ09OVEVOVF9UWVBFLCBIRUFERVJTLkpTT05fQ0hBUlNFVCk7XG5cbiAgICAvKlxuICAgICAqIE9mZmljYWwgTlBNIHJlZ2lzdHJ5IChyZWdpc3RyeS5ucG1qcy5vcmcpIG5vIGxvbmdlciByZXR1cm4gd2hvbGUgZGF0YWJhc2UsXG4gICAgICogVGhleSBvbmx5IHJldHVybiBwYWNrYWdlcyBtYXRjaGVkIHdpdGgga2V5d29yZCBpbiBgcmVmZXJlcjogc2VhcmNoIHBrZy1uYW1lYCxcbiAgICAgKiBBbmQgTlBNIGNsaWVudCB3aWxsIHJlcXVlc3Qgc2VydmVyIGluIGV2ZXJ5IHNlYXJjaC5cbiAgICAgKlxuICAgICAqIFRoZSBtYWdpYyBudW1iZXIgOTk5OTkgd2FzIHNlbnQgYnkgTlBNIHJlZ2lzdHJ5LiBNb2RpZnkgaXQgbWF5IGNhdXNlZCBzdHJhbmdlXG4gICAgICogYmVoYXZpb3VyIGluIHRoZSBmdXR1cmUuXG4gICAgICpcbiAgICAgKiBCVFc6IE5QTSB3aWxsIG5vdCByZXR1cm4gcmVzdWx0IGlmIHVzZXItYWdlbnQgZG9lcyBub3QgY29udGFpbiBzdHJpbmcgJ25wbScsXG4gICAgICogU2VlOiBtZXRob2QgJ3JlcXVlc3QnIGluIHVwLXN0b3JhZ2UuanNcbiAgICAgKlxuICAgICAqIElmIHRoZXJlIGlzIG5vIGNhY2hlIGluIGxvY2FsLCBOUE0gd2lsbCByZXF1ZXN0IC8tL2FsbCwgdGhlbiBnZXQgcmVzcG9uc2Ugd2l0aFxuICAgICAqIF91cGRhdGVkOiA5OTk5OSwgJ0RhdGUnIGluIHJlc3BvbnNlIGhlYWRlciB3YXMgTW9uLCAxMCBPY3QgMTk4MyAwMDoxMjo0OCBHTVQsXG4gICAgICogdGhpcyB3aWxsIG1ha2UgTlBNIGFsd2F5cyBxdWVyeSBmcm9tIHNlcnZlclxuICAgICAqXG4gICAgICogRGF0YSBzdHJ1Y3R1cmUgYWxzbyBkaWZmZXJlbnQsIHdoZWwgcmVxdWVzdCAvLS9hbGwsIHJlc3BvbnNlIGlzIGFuIG9iamVjdCwgYnV0XG4gICAgICogd2hlbiByZXF1ZXN0IC8tL2FsbC9zaW5jZSwgcmVzcG9uc2UgaXMgYW4gYXJyYXlcbiAgICAgKi9cbiAgICBjb25zdCByZXNwU2hvdWxkQmVBcnJheSA9IHJlcS5wYXRoLmVuZHNXaXRoKCcvc2luY2UnKTtcbiAgICBpZiAoIXJlc3BTaG91bGRCZUFycmF5KSB7XG4gICAgICByZXMuc2V0KCdEYXRlJywgJ01vbiwgMTAgT2N0IDE5ODMgMDA6MTI6NDggR01UJyk7XG4gICAgfVxuICAgIGNvbnN0IGNoZWNrX2ZpbmlzaCA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIGlmICghcmVjZWl2ZWRfZW5kKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9jZXNzaW5nX3BrZ3MpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3BvbnNlX2ZpbmlzaGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlc3BvbnNlX2ZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIGlmIChyZXNwU2hvdWxkQmVBcnJheSkge1xuICAgICAgICByZXMuZW5kKCddXFxuJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXMuZW5kKCd9XFxuJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChyZXNwU2hvdWxkQmVBcnJheSkge1xuICAgICAgcmVzLndyaXRlKCdbJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcy53cml0ZSgne1wiX3VwZGF0ZWRcIjonICsgOTk5OTkpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2Uuc2VhcmNoKHJlcS5xdWVyeS5zdGFydGtleSB8fCAwLCB7IHJlcTogcmVxIH0pO1xuXG4gICAgc3RyZWFtLm9uKCdkYXRhJywgZnVuY3Rpb24gZWFjaChwa2cpIHtcbiAgICAgIHByb2Nlc3NpbmdfcGtncysrO1xuXG4gICAgICBhdXRoLmFsbG93X2FjY2Vzcyh7IHBhY2thZ2VOYW1lOiBwa2cubmFtZSB9LCByZXEucmVtb3RlX3VzZXIsIGZ1bmN0aW9uIChlcnIsIGFsbG93ZWQpIHtcbiAgICAgICAgcHJvY2Vzc2luZ19wa2dzLS07XG5cbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGlmIChlcnIuc3RhdHVzICYmIFN0cmluZyhlcnIuc3RhdHVzKS5tYXRjaCgvXjRcXGRcXGQkLykpIHtcbiAgICAgICAgICAgIC8vIGF1dGggcGx1Z2luIHJldHVybnMgNHh4IHVzZXIgZXJyb3IsXG4gICAgICAgICAgICAvLyB0aGF0J3MgZXF1aXZhbGVudCBvZiAhYWxsb3dlZCBiYXNpY2FsbHlcbiAgICAgICAgICAgIGFsbG93ZWQgPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RyZWFtLmFib3J0KGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFsbG93ZWQpIHtcbiAgICAgICAgICBpZiAocmVzcFNob3VsZEJlQXJyYXkpIHtcbiAgICAgICAgICAgIHJlcy53cml0ZShgJHtmaXJzdFBhY2thZ2UgPyAnJyA6ICcsJ30ke0pTT04uc3RyaW5naWZ5KHBrZyl9XFxuYCk7XG4gICAgICAgICAgICBpZiAoZmlyc3RQYWNrYWdlKSB7XG4gICAgICAgICAgICAgIGZpcnN0UGFja2FnZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMud3JpdGUoJyxcXG4nICsgSlNPTi5zdHJpbmdpZnkocGtnLm5hbWUpICsgJzonICsgSlNPTi5zdHJpbmdpZnkocGtnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY2hlY2tfZmluaXNoKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ3NlYXJjaCBgLy0vYWxsIGVuZHBvaW50IGhhcyBmYWlsZWQgQHtlcnJ9JywgZXJyKTtcbiAgICAgIHJlY2VpdmVkX2VuZCA9IHRydWU7XG4gICAgICBjaGVja19maW5pc2goKTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgcmVjZWl2ZWRfZW5kID0gdHJ1ZTtcbiAgICAgIGNoZWNrX2ZpbmlzaCgpO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBRWUsU0FBQUcsU0FBVUMsS0FBSyxFQUFFQyxJQUFJLEVBQUVDLE9BQU8sRUFBUTtFQUNuRDtFQUNBRixLQUFLLENBQUNHLEdBQUcsQ0FBQ0MsZ0NBQW9CLENBQUNDLGlCQUFpQixFQUFFLFVBQVVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxJQUFJLEVBQUU7SUFDMUUsSUFBSUMsWUFBWSxHQUFHLEtBQUs7SUFDeEIsSUFBSUMsaUJBQWlCLEdBQUcsS0FBSztJQUM3QixJQUFJQyxlQUFlLEdBQUcsQ0FBQztJQUN2QixJQUFJQyxZQUFZLEdBQUcsSUFBSTtJQUN2QkMsY0FBTSxDQUFDQyxJQUFJLENBQUMsa0ZBQWtGLENBQUM7SUFDL0ZQLEdBQUcsQ0FBQ1EsTUFBTSxDQUFDLEdBQUcs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
107
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWlkZGxld2FyZSIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIl9kZWZhdWx0Iiwicm91dGUiLCJhdXRoIiwic3RvcmFnZSIsImdldCIsIlNFQVJDSF9BUElfRU5EUE9JTlRTIiwiZGVwcmVjYXRlZF9zZWFyY2giLCJyZXEiLCJyZXMiLCJyZWNlaXZlZF9lbmQiLCJyZXNwb25zZV9maW5pc2hlZCIsInByb2Nlc3NpbmdfcGtncyIsImZpcnN0UGFja2FnZSIsImxvZ2dlciIsIndhcm4iLCJzdGF0dXMiLCJzZXQiLCJIRUFERVJTIiwiQ09OVEVOVF9UWVBFIiwiSlNPTl9DSEFSU0VUIiwicmVzcFNob3VsZEJlQXJyYXkiLCJwYXRoIiwiZW5kc1dpdGgiLCJjaGVja19maW5pc2giLCJlbmQiLCJ3cml0ZSIsInN0cmVhbSIsInNlYXJjaCIsInF1ZXJ5Iiwic3RhcnRrZXkiLCJvbiIsImVhY2giLCJwa2ciLCJhbGxvd19hY2Nlc3MiLCJwYWNrYWdlTmFtZSIsIm5hbWUiLCJyZW1vdGVfdXNlciIsImVyciIsImFsbG93ZWQiLCJTdHJpbmciLCJtYXRjaCIsImFib3J0IiwiSlNPTiIsInN0cmluZ2lmeSIsImVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvc2VhcmNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNFQVJDSF9BUElfRU5EUE9JTlRTIH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcblxuaW1wb3J0IHsgSEVBREVSUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChyb3V0ZSwgYXV0aCwgc3RvcmFnZSk6IHZvaWQge1xuICAvLyBzZWFyY2hpbmcgcGFja2FnZXNcbiAgcm91dGUuZ2V0KFNFQVJDSF9BUElfRU5EUE9JTlRTLmRlcHJlY2F0ZWRfc2VhcmNoLCBmdW5jdGlvbiAocmVxLCByZXMpIHtcbiAgICBsZXQgcmVjZWl2ZWRfZW5kID0gZmFsc2U7XG4gICAgbGV0IHJlc3BvbnNlX2ZpbmlzaGVkID0gZmFsc2U7XG4gICAgbGV0IHByb2Nlc3NpbmdfcGtncyA9IDA7XG4gICAgbGV0IGZpcnN0UGFja2FnZSA9IHRydWU7XG4gICAgbG9nZ2VyLndhcm4oJy8tL2FsbCBzZWFyY2ggZW5kcG9pbnQgaXMgZGVwcmVjYXRlZCwgbWlnaHQgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlJyk7XG4gICAgcmVzLnN0YXR1cygyMDApO1xuICAgIHJlcy5zZXQoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTl9DSEFSU0VUKTtcblxuICAgIC8qXG4gICAgICogT2ZmaWNhbCBOUE0gcmVnaXN0cnkgKHJlZ2lzdHJ5Lm5wbWpzLm9yZykgbm8gbG9uZ2VyIHJldHVybiB3aG9sZSBkYXRhYmFzZSxcbiAgICAgKiBUaGV5IG9ubHkgcmV0dXJuIHBhY2thZ2VzIG1hdGNoZWQgd2l0aCBrZXl3b3JkIGluIGByZWZlcmVyOiBzZWFyY2ggcGtnLW5hbWVgLFxuICAgICAqIEFuZCBOUE0gY2xpZW50IHdpbGwgcmVxdWVzdCBzZXJ2ZXIgaW4gZXZlcnkgc2VhcmNoLlxuICAgICAqXG4gICAgICogVGhlIG1hZ2ljIG51bWJlciA5OTk5OSB3YXMgc2VudCBieSBOUE0gcmVnaXN0cnkuIE1vZGlmeSBpdCBtYXkgY2F1c2VkIHN0cmFuZ2VcbiAgICAgKiBiZWhhdmlvdXIgaW4gdGhlIGZ1dHVyZS5cbiAgICAgKlxuICAgICAqIEJUVzogTlBNIHdpbGwgbm90IHJldHVybiByZXN1bHQgaWYgdXNlci1hZ2VudCBkb2VzIG5vdCBjb250YWluIHN0cmluZyAnbnBtJyxcbiAgICAgKiBTZWU6IG1ldGhvZCAncmVxdWVzdCcgaW4gdXAtc3RvcmFnZS5qc1xuICAgICAqXG4gICAgICogSWYgdGhlcmUgaXMgbm8gY2FjaGUgaW4gbG9jYWwsIE5QTSB3aWxsIHJlcXVlc3QgLy0vYWxsLCB0aGVuIGdldCByZXNwb25zZSB3aXRoXG4gICAgICogX3VwZGF0ZWQ6IDk5OTk5LCAnRGF0ZScgaW4gcmVzcG9uc2UgaGVhZGVyIHdhcyBNb24sIDEwIE9jdCAxOTgzIDAwOjEyOjQ4IEdNVCxcbiAgICAgKiB0aGlzIHdpbGwgbWFrZSBOUE0gYWx3YXlzIHF1ZXJ5IGZyb20gc2VydmVyXG4gICAgICpcbiAgICAgKiBEYXRhIHN0cnVjdHVyZSBhbHNvIGRpZmZlcmVudCwgd2hlbCByZXF1ZXN0IC8tL2FsbCwgcmVzcG9uc2UgaXMgYW4gb2JqZWN0LCBidXRcbiAgICAgKiB3aGVuIHJlcXVlc3QgLy0vYWxsL3NpbmNlLCByZXNwb25zZSBpcyBhbiBhcnJheVxuICAgICAqL1xuICAgIGNvbnN0IHJlc3BTaG91bGRCZUFycmF5ID0gcmVxLnBhdGguZW5kc1dpdGgoJy9zaW5jZScpO1xuICAgIGlmICghcmVzcFNob3VsZEJlQXJyYXkpIHtcbiAgICAgIHJlcy5zZXQoJ0RhdGUnLCAnTW9uLCAxMCBPY3QgMTk4MyAwMDoxMjo0OCBHTVQnKTtcbiAgICB9XG4gICAgY29uc3QgY2hlY2tfZmluaXNoID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgaWYgKCFyZWNlaXZlZF9lbmQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHByb2Nlc3NpbmdfcGtncykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAocmVzcG9uc2VfZmluaXNoZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVzcG9uc2VfZmluaXNoZWQgPSB0cnVlO1xuICAgICAgaWYgKHJlc3BTaG91bGRCZUFycmF5KSB7XG4gICAgICAgIHJlcy5lbmQoJ11cXG4nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcy5lbmQoJ31cXG4nKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHJlc3BTaG91bGRCZUFycmF5KSB7XG4gICAgICByZXMud3JpdGUoJ1snKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzLndyaXRlKCd7XCJfdXBkYXRlZFwiOicgKyA5OTk5OSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5zZWFyY2gocmVxLnF1ZXJ5LnN0YXJ0a2V5IHx8IDAsIHsgcmVxOiByZXEgfSk7XG5cbiAgICBzdHJlYW0ub24oJ2RhdGEnLCBmdW5jdGlvbiBlYWNoKHBrZykge1xuICAgICAgcHJvY2Vzc2luZ19wa2dzKys7XG5cbiAgICAgIGF1dGguYWxsb3dfYWNjZXNzKHsgcGFja2FnZU5hbWU6IHBrZy5uYW1lIH0sIHJlcS5yZW1vdGVfdXNlciwgZnVuY3Rpb24gKGVyciwgYWxsb3dlZCkge1xuICAgICAgICBwcm9jZXNzaW5nX3BrZ3MtLTtcblxuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgaWYgKGVyci5zdGF0dXMgJiYgU3RyaW5nKGVyci5zdGF0dXMpLm1hdGNoKC9eNFxcZFxcZCQvKSkge1xuICAgICAgICAgICAgLy8gYXV0aCBwbHVnaW4gcmV0dXJucyA0eHggdXNlciBlcnJvcixcbiAgICAgICAgICAgIC8vIHRoYXQncyBlcXVpdmFsZW50IG9mICFhbGxvd2VkIGJhc2ljYWxseVxuICAgICAgICAgICAgYWxsb3dlZCA9IGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHJlYW0uYWJvcnQoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWxsb3dlZCkge1xuICAgICAgICAgIGlmIChyZXNwU2hvdWxkQmVBcnJheSkge1xuICAgICAgICAgICAgcmVzLndyaXRlKGAke2ZpcnN0UGFja2FnZSA/ICcnIDogJywnfSR7SlNPTi5zdHJpbmdpZnkocGtnKX1cXG5gKTtcbiAgICAgICAgICAgIGlmIChmaXJzdFBhY2thZ2UpIHtcbiAgICAgICAgICAgICAgZmlyc3RQYWNrYWdlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy53cml0ZSgnLFxcbicgKyBKU09OLnN0cmluZ2lmeShwa2cubmFtZSkgKyAnOicgKyBKU09OLnN0cmluZ2lmeShwa2cpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjaGVja19maW5pc2goKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignc2VhcmNoIGAvLS9hbGwgZW5kcG9pbnQgaGFzIGZhaWxlZCBAe2Vycn0nLCBlcnIpO1xuICAgICAgcmVjZWl2ZWRfZW5kID0gdHJ1ZTtcbiAgICAgIGNoZWNrX2ZpbmlzaCgpO1xuICAgIH0pO1xuXG4gICAgc3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZWNlaXZlZF9lbmQgPSB0cnVlO1xuICAgICAgY2hlY2tfZmluaXNoKCk7XG4gICAgfSk7XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFFZSxTQUFBRyxTQUFVQyxLQUFLLEVBQUVDLElBQUksRUFBRUMsT0FBTyxFQUFRO0VBQ25EO0VBQ0FGLEtBQUssQ0FBQ0csR0FBRyxDQUFDQyxnQ0FBb0IsQ0FBQ0MsaUJBQWlCLEVBQUUsVUFBVUMsR0FBRyxFQUFFQyxHQUFHLEVBQUU7SUFDcEUsSUFBSUMsWUFBWSxHQUFHLEtBQUs7SUFDeEIsSUFBSUMsaUJBQWlCLEdBQUcsS0FBSztJQUM3QixJQUFJQyxlQUFlLEdBQUcsQ0FBQztJQUN2QixJQUFJQyxZQUFZLEdBQUcsSUFBSTtJQUN2QkMsY0FBTSxDQUFDQyxJQUFJLENBQUMsa0ZBQWtGLENBQUM7SUFDL0ZOLEdBQUcsQ0FBQ08sTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUNmUCxHQUFHLENBQUNRLEdBQUcsQ0FBQ0Msa0JBQU8sQ0FBQ0MsWUFBWSxFQUFFRCxrQkFBTyxDQUFDRSxZQUFZLENBQUM7O0lBRW5EO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNJLE1BQU1DLGlCQUFpQixHQUFHYixHQUFHLENBQUNjLElBQUksQ0FBQ0MsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUNyRCxJQUFJLENBQUNGLGlCQUFpQixFQUFFO01BQ3RCWixHQUFHLENBQUNRLEdBQUcsQ0FBQyxNQUFNLEVBQUUsK0JBQStCLENBQUM7SUFDbEQ7SUFDQSxNQUFNTyxZQUFZLEdBQUcsU0FBQUEsQ0FBQSxFQUFrQjtNQUNyQyxJQUFJLENBQUNkLFlBQVksRUFBRTtRQUNqQjtNQUNGO01BQ0EsSUFBSUUsZUFBZSxFQUFFO1FBQ25CO01BQ0Y7TUFDQSxJQUFJRCxpQkFBaUIsRUFBRTtRQUNyQjtNQUNGO01BQ0FBLGlCQUFpQixHQUFHLElBQUk7TUFDeEIsSUFBSVUsaUJBQWlCLEVBQUU7UUFDckJaLEdBQUcsQ0FBQ2dCLEdBQUcsQ0FBQyxLQUFLLENBQUM7TUFDaEIsQ0FBQyxNQUFNO1FBQ0xoQixHQUFHLENBQUNnQixHQUFHLENBQUMsS0FBSyxDQUFDO01BQ2hCO0lBQ0YsQ0FBQztJQUVELElBQUlKLGlCQUFpQixFQUFFO01BQ3JCWixHQUFHLENBQUNpQixLQUFLLENBQUMsR0FBRyxDQUFDO0lBQ2hCLENBQUMsTUFBTTtNQUNMakIsR0FBRyxDQUFDaUIsS0FBSyxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDbkM7SUFFQSxNQUFNQyxNQUFNLEdBQUd2QixPQUFPLENBQUN3QixNQUFNLENBQUNwQixHQUFHLENBQUNxQixLQUFLLENBQUNDLFFBQVEsSUFBSSxDQUFDLEVBQUU7TUFBRXRCLEdBQUcsRUFBRUE7SUFBSSxDQUFDLENBQUM7SUFFcEVtQixNQUFNLENBQUNJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsU0FBU0MsSUFBSUEsQ0FBQ0MsR0FBRyxFQUFFO01BQ25DckIsZUFBZSxFQUFFO01BRWpCVCxJQUFJLENBQUMrQixZQUFZLENBQUM7UUFBRUMsV0FBVyxFQUFFRixHQUFHLENBQUNHO01BQUssQ0FBQyxFQUFFNUIsR0FBRyxDQUFDNkIsV0FBVyxFQUFFLFVBQVVDLEdBQUcsRUFBRUMsT0FBTyxFQUFFO1FBQ3BGM0IsZUFBZSxFQUFFO1FBRWpCLElBQUkwQixHQUFHLEVBQUU7VUFDUCxJQUFJQSxHQUFHLENBQUN0QixNQUFNLElBQUl3QixNQUFNLENBQUNGLEdBQUcsQ0FBQ3RCLE1BQU0sQ0FBQyxDQUFDeUIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3JEO1lBQ0E7WUFDQUYsT0FBTyxHQUFHLEtBQUs7VUFDakIsQ0FBQyxNQUFNO1lBQ0xaLE1BQU0sQ0FBQ2UsS0FBSyxDQUFDSixHQUFHLENBQUM7VUFDbkI7UUFDRjtRQUVBLElBQUlDLE9BQU8sRUFBRTtVQUNYLElBQUlsQixpQkFBaUIsRUFBRTtZQUNyQlosR0FBRyxDQUFDaUIsS0FBSyxDQUFDLEdBQUdiLFlBQVksR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHOEIsSUFBSSxDQUFDQyxTQUFTLENBQUNYLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDL0QsSUFBSXBCLFlBQVksRUFBRTtjQUNoQkEsWUFBWSxHQUFHLEtBQUs7WUFDdEI7VUFDRixDQUFDLE1BQU07WUFDTEosR0FBRyxDQUFDaUIsS0FBSyxDQUFDLEtBQUssR0FBR2lCLElBQUksQ0FBQ0MsU0FBUyxDQUFDWCxHQUFHLENBQUNHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBR08sSUFBSSxDQUFDQyxTQUFTLENBQUNYLEdBQUcsQ0FBQyxDQUFDO1VBQ3pFO1FBQ0Y7UUFFQVQsWUFBWSxDQUFDLENBQUM7TUFDaEIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUZHLE1BQU0sQ0FBQ0ksRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFVTyxHQUFHLEVBQUU7TUFDaEN4QixjQUFNLENBQUMrQixLQUFLLENBQUMsMkNBQTJDLEVBQUVQLEdBQUcsQ0FBQztNQUM5RDVCLFlBQVksR0FBRyxJQUFJO01BQ25CYyxZQUFZLENBQUMsQ0FBQztJQUNoQixDQUFDLENBQUM7SUFFRkcsTUFBTSxDQUFDSSxFQUFFLENBQUMsS0FBSyxFQUFFLFlBQVk7TUFDM0JyQixZQUFZLEdBQUcsSUFBSTtNQUNuQmMsWUFBWSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0FBQ0oiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -7,12 +7,8 @@ exports.default = _default;
7
7
  var _debug = _interopRequireDefault(require("debug"));
8
8
  var _lodash = _interopRequireDefault(require("lodash"));
9
9
  var _constants = require("../../../lib/constants");
10
+ var _logger = require("../../../lib/logger");
10
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
14
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
15
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // @flow
16
12
  const debug = (0, _debug.default)('verdaccio:star');
17
13
  function _default(storage) {
18
14
  const validateInputs = (newUsers, localUsers, username, isStar) => {
@@ -33,6 +29,8 @@ function _default(storage) {
33
29
  if (err) {
34
30
  return next(err);
35
31
  }
32
+ _logger.logger.debug(`package ${name} starred by user ${req.remote_user?.name}`);
33
+ // we do not need
36
34
  res.status(_constants.HTTP_STATUS.OK);
37
35
  next({
38
36
  success: true
@@ -53,21 +51,23 @@ function _default(storage) {
53
51
  if (_lodash.default.isNil(localStarUsers) === false && validateInputs(newStarUser, localStarUsers, remoteUsername, isStar)) {
54
52
  return afterChangePackage();
55
53
  }
56
- const users = isStar ? _objectSpread(_objectSpread({}, localStarUsers), {}, {
54
+ const users = isStar ? {
55
+ ...localStarUsers,
57
56
  [remoteUsername]: true
58
- }) : _lodash.default.reduce(localStarUsers, (users, value, key) => {
57
+ } : _lodash.default.reduce(localStarUsers, (users, value, key) => {
59
58
  if (key !== remoteUsername) {
60
59
  users[key] = value;
61
60
  }
62
61
  return users;
63
62
  }, {});
64
- storage.changePackage(name, _objectSpread(_objectSpread({}, info), {}, {
63
+ storage.changePackage(name, {
64
+ ...info,
65
65
  users
66
- }), req.body._rev, function (err) {
66
+ }, req.body._rev, function (err) {
67
67
  afterChangePackage(err);
68
68
  });
69
69
  }
70
70
  });
71
71
  };
72
72
  }
73
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfY29uc3RhbnRzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsImRlYnVnIiwiYnVpbGREZWJ1ZyIsIl9kZWZhdWx0Iiwic3RvcmFnZSIsInZhbGlkYXRlSW5wdXRzIiwibmV3VXNlcnMiLCJsb2NhbFVzZXJzIiwidXNlcm5hbWUiLCJpc1N0YXIiLCJpc0V4aXN0bG9jYWxVc2VycyIsIl8iLCJpc05pbCIsInJlcSIsInJlcyIsIm5leHQiLCJuYW1lIiwicGFyYW1zIiwicGFja2FnZSIsImFmdGVyQ2hhbmdlUGFja2FnZSIsImVyciIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiT0siLCJzdWNjZXNzIiwiZ2V0UGFja2FnZSIsImNhbGxiYWNrIiwiaW5mbyIsIm5ld1N0YXJVc2VyIiwiYm9keSIsIlVTRVJTIiwicmVtb3RlVXNlcm5hbWUiLCJyZW1vdGVfdXNlciIsImxvY2FsU3RhclVzZXJzIiwiaW5jbHVkZXMiLCJ1c2VycyIsInJlZHVjZSIsImtleSIsImNoYW5nZVBhY2thZ2UiLCJfcmV2Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvc3Rhci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IEhUVFBfU1RBVFVTLCBVU0VSUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgU3RvcmFnZSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZSc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW86c3RhcicpO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKFxuICBzdG9yYWdlOiBTdG9yYWdlXG4pOiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcikgPT4gdm9pZCB7XG4gIGNvbnN0IHZhbGlkYXRlSW5wdXRzID0gKG5ld1VzZXJzLCBsb2NhbFVzZXJzLCB1c2VybmFtZSwgaXNTdGFyKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgaXNFeGlzdGxvY2FsVXNlcnMgPSBfLmlzTmlsKGxvY2FsVXNlcnNbdXNlcm5hbWVdKSA9PT0gZmFsc2U7XG4gICAgaWYgKGlzU3RhciAmJiBpc0V4aXN0bG9jYWxVc2VycyAmJiBsb2NhbFVzZXJzW3VzZXJuYW1lXSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghaXNTdGFyICYmIGlzRXhpc3Rsb2NhbFVzZXJzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghaXNTdGFyICYmICFpc0V4aXN0bG9jYWxVc2Vycykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICByZXR1cm4gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkID0+IHtcbiAgICBjb25zdCBuYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCdzdGFycmluZyBhIHBhY2thZ2UgZm9yICVvJywgbmFtZSk7XG4gICAgY29uc3QgYWZ0ZXJDaGFuZ2VQYWNrYWdlID0gZnVuY3Rpb24gKGVycj86IEVycm9yKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgIG5leHQoe1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHN0b3JhZ2UuZ2V0UGFja2FnZSh7XG4gICAgICBuYW1lLFxuICAgICAgcmVxLFxuICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIChlcnIsIGluZm8pIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3U3RhclVzZXIgPSByZXEuYm9keVtVU0VSU107XG4gICAgICAgIGNvbnN0IHJlbW90ZVVzZXJuYW1lID0gcmVxLnJlbW90ZV91c2VyLm5hbWU7XG4gICAgICAgIGNvbnN0IGxvY2FsU3RhclVzZXJzID0gaW5mb1tVU0VSU107XG4gICAgICAgIC8vIENoZWNrIGlzIHN0YXIgb3IgdW5zdGFyXG4gICAgICAgIGNvbnN0IGlzU3RhciA9IE9iamVjdC5rZXlzKG5ld1N0YXJVc2VyKS5pbmNsdWRlcyhyZW1vdGVVc2VybmFtZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBfLmlzTmlsKGxvY2FsU3RhclVzZXJzKSA9PT0gZmFsc2UgJiZcbiAgICAgICAgICB2YWxpZGF0ZUlucHV0cyhuZXdTdGFyVXNlciwgbG9jYWxTdGFyVXNlcnMsIHJlbW90ZVVzZXJuYW1lLCBpc1N0YXIpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBhZnRlckNoYW5nZVBhY2thZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1c2VycyA9IGlzU3RhclxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5sb2NhbFN0YXJVc2VycyxcbiAgICAgICAgICAgICAgW3JlbW90ZVVzZXJuYW1lXTogdHJ1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IF8ucmVkdWNlKFxuICAgICAgICAgICAgICBsb2NhbFN0YXJVc2VycyxcbiAgICAgICAgICAgICAgKHVzZXJzLCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gcmVtb3RlVXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgIHVzZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVzZXJzO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcbiAgICAgICAgc3RvcmFnZS5jaGFuZ2VQYWNrYWdlKG5hbWUsIHsgLi4uaW5mbywgdXNlcnMgfSwgcmVxLmJvZHkuX3JldiwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlUGFja2FnZShlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUE0RCxTQUFBRCx1QkFB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
73
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRlYnVnIiwiYnVpbGREZWJ1ZyIsIl9kZWZhdWx0Iiwic3RvcmFnZSIsInZhbGlkYXRlSW5wdXRzIiwibmV3VXNlcnMiLCJsb2NhbFVzZXJzIiwidXNlcm5hbWUiLCJpc1N0YXIiLCJpc0V4aXN0bG9jYWxVc2VycyIsIl8iLCJpc05pbCIsInJlcSIsInJlcyIsIm5leHQiLCJuYW1lIiwicGFyYW1zIiwicGFja2FnZSIsImFmdGVyQ2hhbmdlUGFja2FnZSIsImVyciIsImxvZ2dlciIsInJlbW90ZV91c2VyIiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJPSyIsInN1Y2Nlc3MiLCJnZXRQYWNrYWdlIiwiY2FsbGJhY2siLCJpbmZvIiwibmV3U3RhclVzZXIiLCJib2R5IiwiVVNFUlMiLCJyZW1vdGVVc2VybmFtZSIsImxvY2FsU3RhclVzZXJzIiwiT2JqZWN0Iiwia2V5cyIsImluY2x1ZGVzIiwidXNlcnMiLCJyZWR1Y2UiLCJ2YWx1ZSIsImtleSIsImNoYW5nZVBhY2thZ2UiLCJfcmV2Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvc3Rhci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgSFRUUF9TVEFUVVMsIFVTRVJTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCBTdG9yYWdlIGZyb20gJy4uLy4uLy4uL2xpYi9zdG9yYWdlJztcbmltcG9ydCB7ICROZXh0RnVuY3Rpb25WZXIsICRSZXF1ZXN0RXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzpzdGFyJyk7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoXG4gIHN0b3JhZ2U6IFN0b3JhZ2Vcbik6IChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKSA9PiB2b2lkIHtcbiAgY29uc3QgdmFsaWRhdGVJbnB1dHMgPSAobmV3VXNlcnMsIGxvY2FsVXNlcnMsIHVzZXJuYW1lLCBpc1N0YXIpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBpc0V4aXN0bG9jYWxVc2VycyA9IF8uaXNOaWwobG9jYWxVc2Vyc1t1c2VybmFtZV0pID09PSBmYWxzZTtcbiAgICBpZiAoaXNTdGFyICYmIGlzRXhpc3Rsb2NhbFVzZXJzICYmIGxvY2FsVXNlcnNbdXNlcm5hbWVdKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKCFpc1N0YXIgJiYgaXNFeGlzdGxvY2FsVXNlcnMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKCFpc1N0YXIgJiYgIWlzRXhpc3Rsb2NhbFVzZXJzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIHJldHVybiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQgPT4ge1xuICAgIGNvbnN0IG5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgZGVidWcoJ3N0YXJyaW5nIGEgcGFja2FnZSBmb3IgJW8nLCBuYW1lKTtcbiAgICBjb25zdCBhZnRlckNoYW5nZVBhY2thZ2UgPSBmdW5jdGlvbiAoZXJyPzogRXJyb3IpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgIH1cbiAgICAgIGxvZ2dlci5kZWJ1ZyhgcGFja2FnZSAke25hbWV9IHN0YXJyZWQgYnkgdXNlciAke3JlcS5yZW1vdGVfdXNlcj8ubmFtZX1gKTtcbiAgICAgIC8vIHdlIGRvIG5vdCBuZWVkXG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgIG5leHQoe1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHN0b3JhZ2UuZ2V0UGFja2FnZSh7XG4gICAgICBuYW1lLFxuICAgICAgcmVxLFxuICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIChlcnIsIGluZm8pIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3U3RhclVzZXIgPSByZXEuYm9keVtVU0VSU107XG4gICAgICAgIGNvbnN0IHJlbW90ZVVzZXJuYW1lID0gcmVxLnJlbW90ZV91c2VyLm5hbWU7XG4gICAgICAgIGNvbnN0IGxvY2FsU3RhclVzZXJzID0gaW5mb1tVU0VSU107XG4gICAgICAgIC8vIENoZWNrIGlzIHN0YXIgb3IgdW5zdGFyXG4gICAgICAgIGNvbnN0IGlzU3RhciA9IE9iamVjdC5rZXlzKG5ld1N0YXJVc2VyKS5pbmNsdWRlcyhyZW1vdGVVc2VybmFtZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBfLmlzTmlsKGxvY2FsU3RhclVzZXJzKSA9PT0gZmFsc2UgJiZcbiAgICAgICAgICB2YWxpZGF0ZUlucHV0cyhuZXdTdGFyVXNlciwgbG9jYWxTdGFyVXNlcnMsIHJlbW90ZVVzZXJuYW1lLCBpc1N0YXIpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBhZnRlckNoYW5nZVBhY2thZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1c2VycyA9IGlzU3RhclxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5sb2NhbFN0YXJVc2VycyxcbiAgICAgICAgICAgICAgW3JlbW90ZVVzZXJuYW1lXTogdHJ1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IF8ucmVkdWNlKFxuICAgICAgICAgICAgICBsb2NhbFN0YXJVc2VycyxcbiAgICAgICAgICAgICAgKHVzZXJzLCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gcmVtb3RlVXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgIHVzZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVzZXJzO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcbiAgICAgICAgc3RvcmFnZS5jaGFuZ2VQYWNrYWdlKG5hbWUsIHsgLi4uaW5mbywgdXNlcnMgfSwgcmVxLmJvZHkuX3JldiwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlUGFja2FnZShlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUgsT0FBQTtBQUE2QyxTQUFBRCx1QkFBQUssQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUk3QyxNQUFNRyxLQUFLLEdBQUcsSUFBQUMsY0FBVSxFQUFDLGdCQUFnQixDQUFDO0FBQzNCLFNBQUFDLFNBQ2JDLE9BQWdCLEVBQ3NEO0VBQ3RFLE1BQU1DLGNBQWMsR0FBR0EsQ0FBQ0MsUUFBUSxFQUFFQyxVQUFVLEVBQUVDLFFBQVEsRUFBRUMsTUFB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
@@ -4,25 +4,32 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = _default;
7
+ var _debug = _interopRequireDefault(require("debug"));
7
8
  var _lodash = _interopRequireDefault(require("lodash"));
8
9
  var _core = require("@verdaccio/core");
9
10
  var _middleware = require("@verdaccio/middleware");
10
11
  var _constants = require("../../../lib/constants");
11
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const debug = (0, _debug.default)('verdaccio:api:stars');
12
14
  function _default(route, storage) {
13
15
  route.get(_middleware.STARS_API_ENDPOINTS.get_user_starred_packages, (req, res, next) => {
14
- // @ts-ignore
15
16
  const query = req.query;
16
- if (typeof (query === null || query === void 0 ? void 0 : query.key) !== 'string') {
17
+ if (typeof query?.key === 'undefined' || typeof query?.key !== 'string') {
18
+ debug('missing query key username');
17
19
  return next(_core.errorUtils.getBadRequest('missing query key username'));
18
20
  }
19
-
20
- // @ts-ignore
21
+ const key = query.key;
22
+ debug(`get user starred packages for user: ${key}`);
21
23
  storage.getLocalDatabase((err, localPackages) => {
22
24
  if (err) {
25
+ debug(`error getting local database: ${err.message}`);
23
26
  return next(err);
24
27
  }
25
- const filteredPackages = localPackages.filter(localPackage => _lodash.default.keys(localPackage[_constants.USERS]).includes(query === null || query === void 0 ? void 0 : query.key.toString().replace(/['"]+/g, '')));
28
+ const filteredPackages = localPackages.filter(localPackage => {
29
+ debug(`checking package: ${localPackage?.name}`);
30
+ return _lodash.default.keys(localPackage[_constants.USERS]).includes(key.toString().replace(/['"]+/g, ''));
31
+ });
32
+ debug(`found ${filteredPackages.length} packages for user: ${key}`);
26
33
  res.status(_constants.HTTP_STATUS.OK);
27
34
  next({
28
35
  rows: filteredPackages.map(filteredPackage => ({
@@ -32,4 +39,4 @@ function _default(route, storage) {
32
39
  });
33
40
  });
34
41
  }
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29yZSIsIl9taWRkbGV3YXJlIiwiX2NvbnN0YW50cyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9kZWZhdWx0Iiwicm91dGUiLCJzdG9yYWdlIiwiZ2V0IiwiU1RBUlNfQVBJX0VORFBPSU5UUyIsImdldF91c2VyX3N0YXJyZWRfcGFja2FnZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJrZXkiLCJlcnJvclV0aWxzIiwiZ2V0QmFkUmVxdWVzdCIsImdldExvY2FsRGF0YWJhc2UiLCJlcnIiLCJsb2NhbFBhY2thZ2VzIiwiZmlsdGVyZWRQYWNrYWdlcyIsImZpbHRlciIsImxvY2FsUGFja2FnZSIsIl8iLCJrZXlzIiwiVVNFUlMiLCJpbmNsdWRlcyIsInRvU3RyaW5nIiwicmVwbGFjZSIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiT0siLCJyb3dzIiwibWFwIiwiZmlsdGVyZWRQYWNrYWdlIiwidmFsdWUiLCJuYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9lbmRwb2ludC9hcGkvc3RhcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzcG9uc2UsIFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgZXJyb3JVdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBTVEFSU19BUElfRU5EUE9JTlRTIH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB7IE1hbmlmZXN0LCBWZXJzaW9uIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB7IEhUVFBfU1RBVFVTLCBVU0VSUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IFN0b3JhZ2UgZnJvbSAnLi4vLi4vLi4vbGliL3N0b3JhZ2UnO1xuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChyb3V0ZTogUm91dGVyLCBzdG9yYWdlOiBTdG9yYWdlKTogdm9pZCB7XG4gIHJvdXRlLmdldChcbiAgICBTVEFSU19BUElfRU5EUE9JTlRTLmdldF91c2VyX3N0YXJyZWRfcGFja2FnZXMsXG4gICAgKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHF1ZXJ5OiB7IGtleTogc3RyaW5nIH0gPSByZXEucXVlcnk7XG4gICAgICBpZiAodHlwZW9mIHF1ZXJ5Py5rZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycm9yVXRpbHMuZ2V0QmFkUmVxdWVzdCgnbWlzc2luZyBxdWVyeSBrZXkgdXNlcm5hbWUnKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHN0b3JhZ2UuZ2V0TG9jYWxEYXRhYmFzZSgoZXJyLCBsb2NhbFBhY2thZ2VzOiBWZXJzaW9uW10pID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXJlZFBhY2thZ2VzOiBWZXJzaW9uW10gPSBsb2NhbFBhY2thZ2VzLmZpbHRlcigobG9jYWxQYWNrYWdlOiBWZXJzaW9uKSA9PlxuICAgICAgICAgIF8ua2V5cyhsb2NhbFBhY2thZ2VbVVNFUlNdKS5pbmNsdWRlcyhxdWVyeT8ua2V5LnRvU3RyaW5nKCkucmVwbGFjZSgvWydcIl0rL2csICcnKSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgICAgbmV4dCh7XG4gICAgICAgICAgcm93czogZmlsdGVyZWRQYWNrYWdlcy5tYXAoKGZpbHRlcmVkUGFja2FnZTogVmVyc2lvbikgPT4gKHtcbiAgICAgICAgICAgIHZhbHVlOiBmaWx0ZXJlZFBhY2thZ2UubmFtZSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxLQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFHQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFBNEQsU0FBQUQsdUJBQUFLLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFJN0MsU0FBQUcsU0FBVUMsS0FBYSxFQUFFQyxPQUFnQixFQUFRO0VBQzlERCxLQUFLLENBQUNFLEdBQUcsQ0FDUEMsK0JBQW1CLENBQUNDLHlCQUF5QixFQUM3QyxDQUFDQyxHQUFtQixFQUFFQyxHQUFhLEVBQUVDLElBQXNCLEtBQVc7SUFDcEU7SUFDQSxNQUFNQyxLQUFzQixHQUFHSCxHQUFHLENBQUNHLEtBQUs7SUFDeEMsSUFBSSxRQUFPQSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRUMsR0FBRyxNQUFLLFFBQVEsRUFBRTtNQUNsQyxPQUFPRixJQUFJLENBQUNHLGdCQUFVLENBQUNDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3JFOztJQUVBO0lBQ0FWLE9BQU8sQ0FBQ1csZ0JBQWdCLENBQUMsQ0FBQ0MsR0FBRyxFQUFFQyxhQUF3QixLQUFLO01BQzFELElBQUlELEdBQUcsRUFBRTtRQUNQLE9BQU9OLElBQUksQ0FBQ00sR0FBRyxDQUFDO01BQ2xCO01BRUEsTUFBTUUsZ0JBQTJCLEdBQUdELGFBQWEsQ0FBQ0UsTUFBTSxDQUFFQyxZQUFxQixJQUM3RUMsZUFBQyxDQUFDQyxJQUFJLENBQUNGLFlBQVksQ0FBQ0csZ0JBQUssQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQ2IsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVDLEdBQUcsQ0FBQ2EsUUFBUSxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FDbEYsQ0FBQztNQUVEakIsR0FBRyxDQUFDa0IsTUFBTSxDQUFDQyxzQkFBVyxDQUFDQyxFQUFFLENBQUM7TUFDMUJuQixJQUFJLENBQUM7UUFDSG9CLElBQUksRUFBRVosZ0JBQWdCLENBQUNhLEdBQUcsQ0FBRUMsZUFBd0IsS0FBTTtVQUN4REMsS0FBSyxFQUFFRCxlQUFlLENBQUNFO1FBQ3pCLENBQUMsQ0FBQztNQUNKLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztFQUNKLENBQ0YsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
42
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfY29yZSIsIl9taWRkbGV3YXJlIiwiX2NvbnN0YW50cyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRlYnVnIiwiY3JlYXRlRGVidWciLCJfZGVmYXVsdCIsInJvdXRlIiwic3RvcmFnZSIsImdldCIsIlNUQVJTX0FQSV9FTkRQT0lOVFMiLCJnZXRfdXNlcl9zdGFycmVkX3BhY2thZ2VzIiwicmVxIiwicmVzIiwibmV4dCIsInF1ZXJ5Iiwia2V5IiwiZXJyb3JVdGlscyIsImdldEJhZFJlcXVlc3QiLCJnZXRMb2NhbERhdGFiYXNlIiwiZXJyIiwibG9jYWxQYWNrYWdlcyIsIm1lc3NhZ2UiLCJmaWx0ZXJlZFBhY2thZ2VzIiwiZmlsdGVyIiwibG9jYWxQYWNrYWdlIiwibmFtZSIsIl8iLCJrZXlzIiwiVVNFUlMiLCJpbmNsdWRlcyIsInRvU3RyaW5nIiwicmVwbGFjZSIsImxlbmd0aCIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiT0siLCJyb3dzIiwibWFwIiwiZmlsdGVyZWRQYWNrYWdlIiwidmFsdWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9zdGFycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgUmVzcG9uc2UsIFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgZXJyb3JVdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBTVEFSU19BUElfRU5EUE9JTlRTIH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB7IFZlcnNpb24gfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuaW1wb3J0IHsgSFRUUF9TVEFUVVMsIFVTRVJTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgU3RvcmFnZSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZSc7XG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuY29uc3QgZGVidWcgPSBjcmVhdGVEZWJ1ZygndmVyZGFjY2lvOmFwaTpzdGFycycpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGU6IFJvdXRlciwgc3RvcmFnZTogU3RvcmFnZSk6IHZvaWQge1xuICByb3V0ZS5nZXQoXG4gICAgU1RBUlNfQVBJX0VORFBPSU5UUy5nZXRfdXNlcl9zdGFycmVkX3BhY2thZ2VzLFxuICAgIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCBxdWVyeSA9IHJlcS5xdWVyeSBhcyB7IGtleT86IHN0cmluZyB9O1xuICAgICAgaWYgKHR5cGVvZiBxdWVyeT8ua2V5ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgcXVlcnk/LmtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgZGVidWcoJ21pc3NpbmcgcXVlcnkga2V5IHVzZXJuYW1lJyk7XG4gICAgICAgIHJldHVybiBuZXh0KGVycm9yVXRpbHMuZ2V0QmFkUmVxdWVzdCgnbWlzc2luZyBxdWVyeSBrZXkgdXNlcm5hbWUnKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGtleSA9IHF1ZXJ5LmtleTtcbiAgICAgIGRlYnVnKGBnZXQgdXNlciBzdGFycmVkIHBhY2thZ2VzIGZvciB1c2VyOiAke2tleX1gKTtcblxuICAgICAgc3RvcmFnZS5nZXRMb2NhbERhdGFiYXNlKChlcnIsIGxvY2FsUGFja2FnZXM6IFZlcnNpb25bXSkgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgZGVidWcoYGVycm9yIGdldHRpbmcgbG9jYWwgZGF0YWJhc2U6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkUGFja2FnZXM6IFZlcnNpb25bXSA9IGxvY2FsUGFja2FnZXMuZmlsdGVyKChsb2NhbFBhY2thZ2U6IFZlcnNpb24pID0+IHtcbiAgICAgICAgICBkZWJ1ZyhgY2hlY2tpbmcgcGFja2FnZTogJHtsb2NhbFBhY2thZ2U/Lm5hbWV9YCk7XG4gICAgICAgICAgcmV0dXJuIF8ua2V5cyhsb2NhbFBhY2thZ2VbVVNFUlNdKS5pbmNsdWRlcyhrZXkudG9TdHJpbmcoKS5yZXBsYWNlKC9bJ1wiXSsvZywgJycpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGVidWcoYGZvdW5kICR7ZmlsdGVyZWRQYWNrYWdlcy5sZW5ndGh9IHBhY2thZ2VzIGZvciB1c2VyOiAke2tleX1gKTtcbiAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5PSyk7XG4gICAgICAgIG5leHQoe1xuICAgICAgICAgIHJvd3M6IGZpbHRlcmVkUGFja2FnZXMubWFwKChmaWx0ZXJlZFBhY2thZ2U6IFZlcnNpb24pID0+ICh7XG4gICAgICAgICAgICB2YWx1ZTogZmlsdGVyZWRQYWNrYWdlLm5hbWUsXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsS0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBR0EsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBQTRELFNBQUFELHVCQUFBTSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBSTVELE1BQU1HLEtBQUssR0FBRyxJQUFBQyxjQUFXLEVBQUMscUJBQXFCLENBQUM7QUFFakMsU0FBQUMsU0FBVUMsS0FBYSxFQUFFQyxPQUFnQixFQUFRO0VBQzlERCxLQUFLLENBQUNFLEdBQUcsQ0FDUEMsK0JBQW1CLENBQUNDLHlCQUF5QixFQUM3QyxDQUFDQyxHQUFtQixFQUFFQyxHQUFhLEVBQUVDLElBQXNCLEtBQVc7SUFDcEUsTUFBTUMsS0FBSyxHQUFHSCxHQUFHLENBQUNHLEtBQXlCO0lBQzNDLElBQUksT0FBT0EsS0FBSyxFQUFFQyxHQUFHLEtBQUssV0FBVyxJQUFJLE9BQU9ELEtBQUssRUFBRUMsR0FBRyxLQUFLLFFBQVEsRUFBRTtNQUN2RVosS0FBSyxDQUFDLDRCQUE0QixDQUFDO01BQ25DLE9BQU9VLElBQUksQ0FBQ0csZ0JBQVUsQ0FBQ0MsYUFBYSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDckU7SUFFQSxNQUFNRixHQUFHLEdBQUdELEtBQUssQ0FBQ0MsR0FBRztJQUNyQlosS0FBSyxDQUFDLHVDQUF1Q1ksR0FBRyxFQUFFLENBQUM7SUFFbkRSLE9BQU8sQ0FBQ1csZ0JBQWdCLENBQUMsQ0FBQ0MsR0FBRyxFQUFFQyxhQUF3QixLQUFLO01BQzFELElBQUlELEdBQUcsRUFBRTtRQUNQaEIsS0FBSyxDQUFDLGlDQUFpQ2dCLEdBQUcsQ0FBQ0UsT0FBTyxFQUFFLENBQUM7UUFDckQsT0FBT1IsSUFBSSxDQUFDTSxHQUFHLENBQUM7TUFDbEI7TUFFQSxNQUFNRyxnQkFBMkIsR0FBR0YsYUFBYSxDQUFDRyxNQUFNLENBQUVDLFlBQXFCLElBQUs7UUFDbEZyQixLQUFLLENBQUMscUJBQXFCcUIsWUFBWSxFQUFFQyxJQUFJLEVBQUUsQ0FBQztRQUNoRCxPQUFPQyxlQUFDLENBQUNDLElBQUksQ0FBQ0gsWUFBWSxDQUFDSSxnQkFBSyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDZCxHQUFHLENBQUNlLFFBQVEsQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7TUFDbkYsQ0FBQyxDQUFDO01BRUY1QixLQUFLLENBQUMsU0FBU21CLGdCQUFnQixDQUFDVSxNQUFNLHVCQUF1QmpCLEdBQUcsRUFBRSxDQUFDO01BQ25FSCxHQUFHLENBQUNxQixNQUFNLENBQUNDLHNCQUFXLENBQUNDLEVBQUUsQ0FBQztNQUMxQnRCLElBQUksQ0FBQztRQUNIdUIsSUFBSSxFQUFFZCxnQkFBZ0IsQ0FBQ2UsR0FBRyxDQUFFQyxlQUF3QixLQUFNO1VBQ3hEQyxLQUFLLEVBQUVELGVBQWUsQ0FBQ2I7UUFDekIsQ0FBQyxDQUFDO01BQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0VBQ0osQ0FDRixDQUFDO0FBQ0giLCJpZ25vcmVMaXN0IjpbXX0=