verdaccio 5.4.0 → 5.6.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.
- package/CHANGELOG.md +56 -0
- package/CODE_OF_CONDUCT.md +10 -10
- package/CONTRIBUTING.md +28 -27
- package/SECURITY.md +8 -9
- package/build/api/debug/index.js +1 -1
- package/build/api/endpoint/api/dist-tags.js +4 -4
- package/build/api/endpoint/api/package.js +3 -3
- package/build/api/endpoint/api/ping.js +1 -1
- package/build/api/endpoint/api/publish.js +11 -11
- package/build/api/endpoint/api/star.js +5 -5
- package/build/api/endpoint/api/stars.js +1 -1
- package/build/api/endpoint/api/user.js +6 -6
- package/build/api/endpoint/api/v1/index.js +1 -1
- package/build/api/endpoint/api/v1/profile.js +4 -4
- package/build/api/endpoint/api/v1/search.js +4 -4
- package/build/api/endpoint/api/v1/token.js +8 -8
- package/build/api/endpoint/api/whoami.js +1 -1
- package/build/api/endpoint/index.js +9 -9
- package/build/api/index.js +13 -13
- package/build/api/middleware.js +6 -6
- package/build/api/rate-limiter.js +3 -3
- package/build/api/web/api.js +3 -3
- package/build/api/web/endpoint/index.js +10 -4
- package/build/api/web/endpoint/package.js +9 -9
- package/build/api/web/endpoint/search.js +3 -3
- package/build/api/web/endpoint/user.js +4 -4
- package/build/api/web/html/renderHTML.js +13 -9
- package/build/api/web/html/template.js +1 -1
- package/build/api/web/index.js +10 -10
- package/build/config/env.js +1 -1
- package/build/index.js +1 -1
- package/build/lib/auth-utils.js +5 -5
- package/build/lib/auth.js +7 -17
- package/build/lib/bootstrap.js +8 -8
- package/build/lib/cli/cli.js +3 -3
- package/build/lib/cli/commands/info.js +3 -3
- package/build/lib/cli/commands/init.js +3 -3
- package/build/lib/cli/commands/version.js +1 -1
- package/build/lib/cli/utils.js +3 -3
- package/build/lib/config-path.js +3 -3
- package/build/lib/config-utils.js +3 -3
- package/build/lib/config.js +8 -32
- package/build/lib/crypto-utils.js +3 -3
- package/build/lib/local-storage.js +7 -15
- package/build/lib/logger/formatter/index.js +1 -1
- package/build/lib/logger/formatter/prettifier.js +3 -3
- package/build/lib/logger/levels.js +1 -1
- package/build/lib/logger/logger.js +10 -6
- package/build/lib/logger/utils.js +1 -1
- package/build/lib/metadata-utils.js +3 -3
- package/build/lib/notify/index.js +3 -3
- package/build/lib/notify/notify-request.js +5 -5
- package/build/lib/plugin-loader.js +4 -4
- package/build/lib/search.js +2 -6
- package/build/lib/storage-utils.js +3 -3
- package/build/lib/storage.js +10 -22
- package/build/lib/up-storage.js +9 -43
- package/build/lib/uplink-util.js +1 -1
- package/build/lib/utils.js +22 -13
- package/build/utils/user.js +1 -1
- package/conf/README.md +3 -3
- package/eslintrc.js +92 -92
- package/index.js +1 -1
- package/package.json +64 -63
- package/prettier.config.js +15 -0
- package/tsconfig.json +3 -10
- package/yarn-plugins/plugin-postinstall.js +10 -10
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,62 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [5.6.0](https://github.com/verdaccio/verdaccio/compare/v5.5.2...v5.6.0) (2022-02-15)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* new environment variable (storage path) ([#2993](https://github.com/verdaccio/verdaccio/issues/2993)) ([681dc82](https://github.com/verdaccio/verdaccio/commit/681dc821aab9f031b959c802f172f06dc6672864)), closes [PR#2199](https://github.com/verdaccio/PR/issues/2199) [PR#2199](https://github.com/verdaccio/PR/issues/2199) [PR#2199](https://github.com/verdaccio/PR/issues/2199)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **deps:** update dependency @verdaccio/commons-api to v10.2.0 ([#2986](https://github.com/verdaccio/verdaccio/issues/2986)) ([63fc4d1](https://github.com/verdaccio/verdaccio/commit/63fc4d1baf836ad3f6a52db0cc20ec4df34e7e4a))
|
|
16
|
+
* **deps:** update dependency @verdaccio/local-storage to v10.2.0 ([#2987](https://github.com/verdaccio/verdaccio/issues/2987)) ([1db0a2e](https://github.com/verdaccio/verdaccio/commit/1db0a2ebf5137d6f5c1d82d4fc1437c4b6f060d9))
|
|
17
|
+
* **deps:** update dependency @verdaccio/readme to v10.3.2 ([#2984](https://github.com/verdaccio/verdaccio/issues/2984)) ([fee3ac6](https://github.com/verdaccio/verdaccio/commit/fee3ac670a8fd0aa9446022f502c64fd07629eba))
|
|
18
|
+
* **deps:** update dependency @verdaccio/streams to v10.2.0 ([#2995](https://github.com/verdaccio/verdaccio/issues/2995)) ([60fea02](https://github.com/verdaccio/verdaccio/commit/60fea02ad15cb84d07ed1072e3c8a83208026200))
|
|
19
|
+
* **deps:** update dependency marked to v4.0.12 ([#2976](https://github.com/verdaccio/verdaccio/issues/2976)) ([2cd4a3b](https://github.com/verdaccio/verdaccio/commit/2cd4a3bb073cdf03fc39b5e90263da1a669c6748))
|
|
20
|
+
* **deps:** update dependency verdaccio-audit to v10.2.0 ([#2998](https://github.com/verdaccio/verdaccio/issues/2998)) ([57c4ce5](https://github.com/verdaccio/verdaccio/commit/57c4ce5a19b6591b1a441879fdfcc2efa44acfc3))
|
|
21
|
+
* **deps:** update dependency verdaccio-htpasswd to v10.2.0 ([#2999](https://github.com/verdaccio/verdaccio/issues/2999)) ([25b2212](https://github.com/verdaccio/verdaccio/commit/25b22128b8e966812cefd9b680db63f6df5aab8f))
|
|
22
|
+
|
|
23
|
+
### [5.5.2](https://github.com/verdaccio/verdaccio/compare/v5.5.1...v5.5.2) (2022-01-27)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Bug Fixes
|
|
27
|
+
|
|
28
|
+
* re-opening log files using SIGUSR2 ([#2966](https://github.com/verdaccio/verdaccio/issues/2966)) ([b964c0d](https://github.com/verdaccio/verdaccio/commit/b964c0d4881cb998cb3e58f25b93cfa4326bdc28))
|
|
29
|
+
|
|
30
|
+
### [5.5.1](https://github.com/verdaccio/verdaccio/compare/v5.5.0...v5.5.1) (2022-01-24)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Bug Fixes
|
|
34
|
+
|
|
35
|
+
* remove engines restriction from ui-theme dependency ([de7713e](https://github.com/verdaccio/verdaccio/commit/de7713ecc1390ff44899ae13737d934bb9bbb964))
|
|
36
|
+
* **deps:** update dependency marked to v4 ([#2956](https://github.com/verdaccio/verdaccio/issues/2956)) ([5009797](https://github.com/verdaccio/verdaccio/commit/50097976ed965e6f28d3900859b73e52a1553ff0))
|
|
37
|
+
* **deps:** update dependency mime to v3 ([#2957](https://github.com/verdaccio/verdaccio/issues/2957)) ([ac4392a](https://github.com/verdaccio/verdaccio/commit/ac4392a22135f5f4654b0e6fa6d0039a649ee899))
|
|
38
|
+
|
|
39
|
+
## [5.5.0](https://github.com/verdaccio/verdaccio/compare/v5.4.0...v5.5.0) (2022-01-22)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
### Features
|
|
43
|
+
|
|
44
|
+
* add new options to the web disable login and pkg managers ([#2947](https://github.com/verdaccio/verdaccio/issues/2947)) ([1a7b1ee](https://github.com/verdaccio/verdaccio/commit/1a7b1ee8ad79c0a164f8bae7160b55919c18c0f1))
|
|
45
|
+
* upgrade [@verdaccio-ui-theme](https://github.com/verdaccio-ui-theme) ([d36b8b1](https://github.com/verdaccio/verdaccio/commit/d36b8b1e00ed4180424af160dcf0d53697d8a905))
|
|
46
|
+
* use backward compatible UI from v6 on v5 ([#2912](https://github.com/verdaccio/verdaccio/issues/2912)) ([b79266d](https://github.com/verdaccio/verdaccio/commit/b79266d54e7310ed879e80e0beda95ebbeb2470c))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### Bug Fixes
|
|
50
|
+
|
|
51
|
+
* **deps:** update all non-major linting dependencies (5.x) ([#2885](https://github.com/verdaccio/verdaccio/issues/2885)) ([23d0bd7](https://github.com/verdaccio/verdaccio/commit/23d0bd7056333bd87bf232c93f25f6f6e853816f))
|
|
52
|
+
* **deps:** update dependency @verdaccio/local-storage to v10.1.1 ([#2932](https://github.com/verdaccio/verdaccio/issues/2932)) ([8c7e39e](https://github.com/verdaccio/verdaccio/commit/8c7e39e8f3547fc59cfabcf6a58276894f8c4e9d))
|
|
53
|
+
* **deps:** update dependency @verdaccio/readme to v10.2.1 ([#2933](https://github.com/verdaccio/verdaccio/issues/2933)) ([8a75f8c](https://github.com/verdaccio/verdaccio/commit/8a75f8cc360813a04e3b6c553ca5db4e213c7dd8))
|
|
54
|
+
* **deps:** update dependency async to v3.2.3 ([#2934](https://github.com/verdaccio/verdaccio/issues/2934)) ([e2eb6ce](https://github.com/verdaccio/verdaccio/commit/e2eb6ce27feb4097fe9940db46ad67ce99b35547))
|
|
55
|
+
* **deps:** update dependency fast-safe-stringify to v2.1.1 ([#2891](https://github.com/verdaccio/verdaccio/issues/2891)) ([bd738ec](https://github.com/verdaccio/verdaccio/commit/bd738ecf6026d70c249aa8a00a32f8e95fe80e8d))
|
|
56
|
+
* **deps:** update dependency verdaccio-audit to v10.1.1 ([#2935](https://github.com/verdaccio/verdaccio/issues/2935)) ([3a9d773](https://github.com/verdaccio/verdaccio/commit/3a9d77341596904e0b5f637b4e81fe4037f65d8a))
|
|
57
|
+
* update babel and core dependencies ([#2887](https://github.com/verdaccio/verdaccio/issues/2887)) ([ec98159](https://github.com/verdaccio/verdaccio/commit/ec98159c3c5e3e890e749a3d8fd555b4c5c0be63))
|
|
58
|
+
* update docker to v14.18.2 ([#2888](https://github.com/verdaccio/verdaccio/issues/2888)) ([22cfea0](https://github.com/verdaccio/verdaccio/commit/22cfea09070a060437fe01a74e9bd12b2cf834d9))
|
|
59
|
+
* **deps:** update dependency pino to v6.13.4 ([#2829](https://github.com/verdaccio/verdaccio/issues/2829)) ([1ec77e7](https://github.com/verdaccio/verdaccio/commit/1ec77e760570658b6b4b5f44c927c6e52ceadd46))
|
|
60
|
+
|
|
5
61
|
## [5.4.0](https://github.com/verdaccio/verdaccio/compare/v5.3.2...v5.4.0) (2021-12-24)
|
|
6
62
|
|
|
7
63
|
|
package/CODE_OF_CONDUCT.md
CHANGED
|
@@ -8,19 +8,19 @@ In the interest of fostering an open and welcoming environment, we as contributo
|
|
|
8
8
|
|
|
9
9
|
Examples of behavior that contributes to creating a positive environment include:
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
- Using welcoming and inclusive language
|
|
12
|
+
- Being respectful of differing viewpoints and experiences
|
|
13
|
+
- Gracefully accepting constructive criticism
|
|
14
|
+
- Focusing on what is best for the community
|
|
15
|
+
- Showing empathy towards other community members
|
|
16
16
|
|
|
17
17
|
Examples of unacceptable behavior by participants include:
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
- The use of sexualized language or imagery and unwelcome sexual attention or advances
|
|
20
|
+
- Trolling, insulting/derogatory comments, and personal or political attacks
|
|
21
|
+
- Public or private harassment
|
|
22
|
+
- Publishing others' private information, such as a physical or electronic address, without explicit permission
|
|
23
|
+
- Other conduct which could reasonably be considered inappropriate in a professional setting
|
|
24
24
|
|
|
25
25
|
## Our Responsibilities
|
|
26
26
|
|
package/CONTRIBUTING.md
CHANGED
|
@@ -14,13 +14,13 @@ Additional information is available on the
|
|
|
14
14
|
- [How Do I Contribute?](#how-do-i-contribute)
|
|
15
15
|
- [Development](#development)
|
|
16
16
|
- [Reporting Bugs](#reporting-bugs)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
- [Issue Search](#issue-search)
|
|
18
|
+
- [Check Website For Solution](#check-website-for-solution)
|
|
19
|
+
- [Chat](#chat)
|
|
20
|
+
- [Check If It's Been Fixed](#check-if-its-been-fixed)
|
|
21
21
|
- [Request Features](#request-features)
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
- [Submitting a Pull Request](#submitting-a-pull-request)
|
|
23
|
+
- [Make Changes and Commit](#make-changes-and-commit)
|
|
24
24
|
- [Update Tests](#update-tests)
|
|
25
25
|
- [Develop Plugins](#develop-plugins)
|
|
26
26
|
|
|
@@ -29,10 +29,10 @@ Additional information is available on the
|
|
|
29
29
|
There are different ways to contribute, each with a different level
|
|
30
30
|
of involvement and technical knowledge required, such as:
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
- [Reporting Bugs](#reporting-bugs)
|
|
33
|
+
- [Request Features](#request-features)
|
|
34
|
+
- [Develop Plugins](#develop-plugins)
|
|
35
|
+
- [Improve Documentation](http://www.verdaccio.org/docs/en/installation.html)
|
|
36
36
|
|
|
37
37
|
**Please read this document carefully. It will help maintainers and readers
|
|
38
38
|
in solving your issue(s), evaluating your feature request, etc.**
|
|
@@ -41,8 +41,8 @@ in solving your issue(s), evaluating your feature request, etc.**
|
|
|
41
41
|
|
|
42
42
|
Development guides can be found on the [wiki](https://github.com/verdaccio/verdaccio/wiki):
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
- [Building the project](https://github.com/verdaccio/verdaccio/wiki/Build-Source-Code)
|
|
45
|
+
- [Running, debugging, and testing](https://github.com/verdaccio/verdaccio/wiki/Running-and-Debugging-tests)
|
|
46
46
|
|
|
47
47
|
## Reporting Bugs
|
|
48
48
|
|
|
@@ -51,7 +51,7 @@ We welcome clear, detailed bug reports.
|
|
|
51
51
|
**Bugs are considered features that are not working as described in
|
|
52
52
|
documentation.**
|
|
53
53
|
|
|
54
|
-
If you've found a bug in Verdaccio **that isn't a security risk**, please file
|
|
54
|
+
If you've found a bug in Verdaccio **that isn't a security risk**, please file
|
|
55
55
|
a report in our [issue tracker](https://github.com/verdaccio/verdaccio/issues).
|
|
56
56
|
|
|
57
57
|
**NOTE: Verdaccio still does not support all npm commands. Some were not
|
|
@@ -66,7 +66,7 @@ Additionally, we have labelled questions for easy follow-up as [questions](https
|
|
|
66
66
|
|
|
67
67
|
If so, up-vote it (using GitHub reactions) or add additional helpful details to
|
|
68
68
|
the existing issue to show that it's affecting multiple people.
|
|
69
|
-
|
|
69
|
+
|
|
70
70
|
### Check Website For Solution
|
|
71
71
|
|
|
72
72
|
Some of the most popular topics can be found in our website(http://www.verdaccio.org/docs/en/installation.html)
|
|
@@ -89,10 +89,10 @@ the project. Then, detail your request, ensuring context and use case is provide
|
|
|
89
89
|
|
|
90
90
|
**Please provide:**
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
- A detailed description the advantages of your request
|
|
93
|
+
- Whether or not it's compatible with `npm` and `yarn`
|
|
94
|
+
- A potential implementation or design
|
|
95
|
+
- Whatever else you have in your mind 🤓
|
|
96
96
|
|
|
97
97
|
### Submitting a Pull Request
|
|
98
98
|
|
|
@@ -137,8 +137,8 @@ semantic versioning.
|
|
|
137
137
|
|
|
138
138
|
For example:
|
|
139
139
|
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
- `feat: A new feature`
|
|
141
|
+
- `fix: A bug fix`
|
|
142
142
|
|
|
143
143
|
A commit of the type feat introduces a new feature to the codebase
|
|
144
144
|
(this correlates with MINOR in semantic versioning).
|
|
@@ -174,12 +174,13 @@ If you need help with how testing works, please [refer to the following guide](h
|
|
|
174
174
|
features without tests will not be merged.**
|
|
175
175
|
|
|
176
176
|
Things excluded from tests:
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
177
|
+
|
|
178
|
+
- Documentation
|
|
179
|
+
- Website
|
|
180
|
+
- Build
|
|
181
|
+
- Deployment
|
|
182
|
+
- Assets
|
|
183
|
+
- Flow types
|
|
183
184
|
|
|
184
185
|
## Develop Plugins
|
|
185
186
|
|
|
@@ -188,7 +189,7 @@ Plugins are add-ons that extend the functionality of the application.
|
|
|
188
189
|
If you want to develop your own plugin:
|
|
189
190
|
|
|
190
191
|
1. Check whether there is a legacy Sinopia plugin for the feature that you need
|
|
191
|
-
|
|
192
|
+
via [npmjs](https://www.npmjs.com/search?q=sinopia)
|
|
192
193
|
2. Keep in mind the [life-cycle to load a plugin](https://verdaccio.org/docs/en/dev-plugins)
|
|
193
194
|
3. You are free to host your plugin in your repository or ours (just ask)
|
|
194
195
|
4. Provide a detailed description of your plugin to help users understand it
|
package/SECURITY.md
CHANGED
|
@@ -4,13 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
The following table describes the versions of this project that are currently supported with security updates:
|
|
6
6
|
|
|
7
|
-
| Version | Supported
|
|
8
|
-
| ------- |
|
|
9
|
-
| 2.x
|
|
10
|
-
| 3.x
|
|
11
|
-
| 4.x
|
|
12
|
-
| 5.x
|
|
13
|
-
|
|
7
|
+
| Version | Supported |
|
|
8
|
+
| ------- | ---------------------------------------- |
|
|
9
|
+
| 2.x | :x: |
|
|
10
|
+
| 3.x | :x: |
|
|
11
|
+
| 4.x | :white_check_mark: (until 1st July 2021) |
|
|
12
|
+
| 5.x | :white_check_mark: |
|
|
14
13
|
|
|
15
14
|
## Responsible disclosure security policy
|
|
16
15
|
|
|
@@ -28,11 +27,11 @@ At Verdaccio, we consider the security of our systems a top priority. But no mat
|
|
|
28
27
|
|
|
29
28
|
If you discover a security vulnerability, please use one of the following means of communications to report it to us:
|
|
30
29
|
|
|
31
|
-
|
|
30
|
+
- Report the security issue to the Node.js Security WG through the [HackerOne program](https://hackerone.com/nodejs-ecosystem) for ecosystem modules on npm, or to [Snyk Security Team](https://snyk.io/vulnerability-disclosure). They will help triage the security issue and work with all involved parties to remediate and release a fix.
|
|
32
31
|
|
|
33
32
|
Note that time-frame and processes are subject to each program’s own policy.
|
|
34
33
|
|
|
35
|
-
|
|
34
|
+
- Report the security issue to the project maintainers directly at verdaccio@pm.me. If the report contains highly sensitive information, please be advised to encrypt your findings using our [PGP key](https://verdaccio.nyc3.digitaloceanspaces.com/gpg/publickey.verdaccio@pm.me.asc) which is also available in this document.
|
|
36
35
|
|
|
37
36
|
Your efforts to responsibly disclose your findings are sincerely appreciated and will be taken into account to acknowledge your contributions.
|
|
38
37
|
|
package/build/api/debug/index.js
CHANGED
|
@@ -30,4 +30,4 @@ var _default = (app, selfPath) => {
|
|
|
30
30
|
};
|
|
31
31
|
|
|
32
32
|
exports.default = _default;
|
|
33
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvZGVidWcvaW5kZXgudHMiXSwibmFtZXMiOlsiYXBwIiwic2VsZlBhdGgiLCJnZXQiLCJyZXEiLCJyZXMiLCJuZXh0IiwiZG9HYXJiYWJlQ29sbGVjdG9yIiwiXyIsImlzTmlsIiwiZ2xvYmFsIiwiZ2MiLCJwaWQiLCJwcm9jZXNzIiwibWFpbiIsIm1haW5Nb2R1bGUiLCJmaWxlbmFtZSIsImNvbmYiLCJtZW0iLCJtZW1vcnlVc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7O2VBSWUsQ0FBQ0EsR0FBRCxFQUFtQkMsUUFBbkIsS0FBOEM7QUFDM0Q7QUFDQUQsRUFBQUEsR0FBRyxDQUFDRSxHQUFKLENBQVEsV0FBUixFQUFxQixVQUFVQyxHQUFWLEVBQStCQyxHQUEvQixFQUFxREMsSUFBckQsRUFBbUY7QUFDdEcsVUFBTUMsa0JBQWtCLEdBQUdDLGdCQUFFQyxLQUFGLENBQVFDLE1BQU0sQ0FBQ0MsRUFBZixNQUF1QixLQUFsRDs7QUFFQSxRQUFJSixrQkFBSixFQUF3QjtBQUN0QkcsTUFBQUEsTUFBTSxDQUFDQyxFQUFQO0FBQ0Q7O0FBRURMLElBQUFBLElBQUksQ0FBQztBQUNITSxNQUFBQSxHQUFHLEVBQUVDLE9BQU8sQ0FBQ0QsR0FEVjtBQUVIO0FBQ0FFLE1BQUFBLElBQUksRUFBRUQsT0FBTyxDQUFDRSxVQUFSLENBQW1CQyxRQUh0QjtBQUlIQyxNQUFBQSxJQUFJLEVBQUVmLFFBSkg7QUFLSGdCLE1BQUFBLEdBQUcsRUFBRUwsT0FBTyxDQUFDTSxXQUFSLEVBTEY7QUFNSFIsTUFBQUEsRUFBRSxFQUFFSjtBQU5ELEtBQUQsQ0FBSjtBQVFELEdBZkQ7QUFnQkQsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCAoYXBwOiBBcHBsaWNhdGlvbiwgc2VsZlBhdGg6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAvLyBIb29rIGZvciB0ZXN0cyBvbmx5XG4gIGFwcC5nZXQoJy8tL19kZWJ1ZycsIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IGRvR2FyYmFiZUNvbGxlY3RvciA9IF8uaXNOaWwoZ2xvYmFsLmdjKSA9PT0gZmFsc2U7XG5cbiAgICBpZiAoZG9HYXJiYWJlQ29sbGVjdG9yKSB7XG4gICAgICBnbG9iYWwuZ2MoKTtcbiAgICB9XG5cbiAgICBuZXh0KHtcbiAgICAgIHBpZDogcHJvY2Vzcy5waWQsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBtYWluOiBwcm9jZXNzLm1haW5Nb2R1bGUuZmlsZW5hbWUsXG4gICAgICBjb25mOiBzZWxmUGF0aCxcbiAgICAgIG1lbTogcHJvY2Vzcy5tZW1vcnlVc2FnZSgpLFxuICAgICAgZ2M6IGRvR2FyYmFiZUNvbGxlY3RvcixcbiAgICB9KTtcbiAgfSk7XG59O1xuIl19
|
|
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
7
|
|
|
8
|
-
var _mime = _interopRequireDefault(require("mime"));
|
|
9
|
-
|
|
10
8
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
11
9
|
|
|
12
|
-
var
|
|
10
|
+
var _mime = _interopRequireDefault(require("mime"));
|
|
13
11
|
|
|
14
12
|
var _constants = require("../../../lib/constants");
|
|
15
13
|
|
|
14
|
+
var _middleware = require("../../middleware");
|
|
15
|
+
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
|
|
18
18
|
function _default(route, auth, storage) {
|
|
@@ -82,4 +82,4 @@ function _default(route, auth, storage) {
|
|
|
82
82
|
});
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL2Rpc3QtdGFncy50cyJdLCJuYW1lcyI6WyJyb3V0ZSIsImF1dGgiLCJzdG9yYWdlIiwiY2FuIiwidGFnX3BhY2thZ2VfdmVyc2lvbiIsInJlcSIsInJlcyIsIm5leHQiLCJfIiwiaXNTdHJpbmciLCJib2R5IiwidGFncyIsInBhcmFtcyIsInRhZyIsIm1lcmdlVGFncyIsInBhY2thZ2UiLCJlcnIiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIkNSRUFURUQiLCJvayIsIkFQSV9NRVNTQUdFIiwiVEFHX0FEREVEIiwicHV0IiwibWltZSIsImdldFR5cGUiLCJwb3N0IiwiZGVsZXRlIiwiVEFHX1JFTU9WRUQiLCJnZXQiLCJnZXRQYWNrYWdlIiwibmFtZSIsInVwbGlua3NMb29rIiwiY2FsbGJhY2siLCJpbmZvIiwiRElTVF9UQUdTIiwiVEFHX1VQREFURUQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFNQTs7QUFDQTs7OztBQUVlLGtCQUFVQSxLQUFWLEVBQXlCQyxJQUF6QixFQUFzQ0MsT0FBdEMsRUFBc0U7QUFDbkYsUUFBTUMsR0FBRyxHQUFHLHVCQUFNRixJQUFOLENBQVo7O0FBQ0EsUUFBTUcsbUJBQW1CLEdBQUcsVUFBVUMsR0FBVixFQUErQkMsR0FBL0IsRUFBcURDLElBQXJELEVBQStGO0FBQ3pILFFBQUlDLGdCQUFFQyxRQUFGLENBQVdKLEdBQUcsQ0FBQ0ssSUFBZixNQUF5QixLQUE3QixFQUFvQztBQUNsQyxhQUFPSCxJQUFJLENBQUMsT0FBRCxDQUFYO0FBQ0Q7O0FBRUQsVUFBTUksSUFBSSxHQUFHLEVBQWI7QUFDQUEsSUFBQUEsSUFBSSxDQUFDTixHQUFHLENBQUNPLE1BQUosQ0FBV0MsR0FBWixDQUFKLEdBQXVCUixHQUFHLENBQUNLLElBQTNCO0FBQ0FSLElBQUFBLE9BQU8sQ0FBQ1ksU0FBUixDQUFrQlQsR0FBRyxDQUFDTyxNQUFKLENBQVdHLE9BQTdCLEVB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Z0QsVUFBVU0sR0FBVixFQUFpRDtBQUMvRixVQUFJQSxHQUFKLEVBQVM7QUFDUCxlQUFPVCxJQUFJLENBQUNTLEdBQUQsQ0FBWDtBQUNEOztBQUNEVixNQUFBQSxHQUFHLENBQUNXLE1BQUosQ0FBV0MsdUJBQVlDLE9BQXZCO0FBQ0EsYUFBT1osSUFBSSxDQUFDO0FBQ1ZhLFFBQUFBLEVBQUUsRUFBRUMsdUJBQVllO0FBRE4sT0FBRCxDQUFYO0FBR0QsS0FSRDtBQVNELEdBVkQ7QUFXRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtaW1lIGZyb20gJ21pbWUnO1xuXG5pbXBvcnQgeyBWZXJkYWNjaW9FcnJvciB9IGZyb20gJ0B2ZXJkYWNjaW8vY29tbW9ucy1hcGknO1xuaW1wb3J0IHsgUGFja2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kLCBJQXV0aCwgSVN0b3JhZ2VIYW5kbGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQVBJX01FU1NBR0UsIERJU1RfVEFHUywgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGFsbG93LCBtZWRpYSB9IGZyb20gJy4uLy4uL21pZGRsZXdhcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGU6IFJvdXRlciwgYXV0aDogSUF1dGgsIHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlcik6IHZvaWQge1xuICBjb25zdCBjYW4gPSBhbGxvdyhhdXRoKTtcbiAgY29uc3QgdGFnX3BhY2thZ2VfdmVyc2lvbiA9IGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6ICROZXh0RnVuY3Rpb25WZXIge1xuICAgIGlmIChfLmlzU3RyaW5nKHJlcS5ib2R5KSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBuZXh0KCdyb3V0ZScpO1xuICAgIH1cblxuICAgIGNvbnN0IHRhZ3MgPSB7fTtcbiAgICB0YWdzW3JlcS5wYXJhbXMudGFnXSA9IHJlcS5ib2R5O1xuICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHJlcS5wYXJhbXMucGFja2FnZSwgdGFncywgZnVuY3Rpb24gKGVycjogRXJyb3IpOiAkTmV4dEZ1bmN0aW9uVmVyIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgIH1cbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7IG9rOiBBUElfTUVTU0FHRS5UQUdfQURERUQgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgLy8gdGFnZ2luZyBhIHBhY2thZ2VcbiAgcm91dGUucHV0KCcvOnBhY2thZ2UvOnRhZycsIGNhbigncHVibGlzaCcpLCBtZWRpYShtaW1lLmdldFR5cGUoJ2pzb24nKSksIHRhZ19wYWNrYWdlX3ZlcnNpb24pO1xuXG4gIHJvdXRlLnBvc3QoJy8tL3BhY2thZ2UvOnBhY2thZ2UvZGlzdC10YWdzLzp0YWcnLCBjYW4oJ3B1Ymxpc2gnKSwgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLCB0YWdfcGFja2FnZV92ZXJzaW9uKTtcblxuICByb3V0ZS5wdXQoJy8tL3BhY2thZ2UvOnBhY2thZ2UvZGlzdC10YWdzLzp0YWcnLCBjYW4oJ3B1Ymxpc2gnKSwgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLCB0YWdfcGFja2FnZV92ZXJzaW9uKTtcblxuICByb3V0ZS5kZWxldGUoJy8tL3BhY2thZ2UvOnBhY2thZ2UvZGlzdC10YWdzLzp0YWcnLCBjYW4oJ3B1Ymxpc2gnKSwgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgdGFncyA9IHt9O1xuICAgIHRhZ3NbcmVxLnBhcmFtcy50YWddID0gbnVsbDtcbiAgICBzdG9yYWdlLm1lcmdlVGFncyhyZXEucGFyYW1zLnBhY2thZ2UsIHRhZ3MsIGZ1bmN0aW9uIChlcnI6IFZlcmRhY2Npb0Vycm9yKTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICBvazogQVBJX01FU1NBR0UuVEFHX1JFTU9WRUQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcm91dGUuZ2V0KCcvLS9wYWNrYWdlLzpwYWNrYWdlL2Rpc3QtdGFncycsIGNhbignYWNjZXNzJyksIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIHN0b3JhZ2UuZ2V0UGFja2FnZSh7XG4gICAgICBuYW1lOiByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICB1cGxpbmtzTG9vazogdHJ1ZSxcbiAgICAgIHJlcSxcbiAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAoZXJyOiBWZXJkYWNjaW9FcnJvciwgaW5mbzogUGFja2FnZSk6ICROZXh0RnVuY3Rpb25WZXIge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5leHQoaW5mb1tESVNUX1RBR1NdKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIHJvdXRlLnBvc3QoJy8tL3BhY2thZ2UvOnBhY2thZ2UvZGlzdC10YWdzJywgY2FuKCdwdWJsaXNoJyksIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHJlcS5wYXJhbXMucGFja2FnZSwgcmVxLmJvZHksIGZ1bmN0aW9uIChlcnI6IFZlcmRhY2Npb0Vycm9yKTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICBvazogQVBJX01FU1NBR0UuVEFHX1VQREFURUQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -7,11 +7,11 @@ exports.default = _default;
|
|
|
7
7
|
|
|
8
8
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _constants = require("../../../lib/constants");
|
|
11
11
|
|
|
12
12
|
var _utils = require("../../../lib/utils");
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _middleware = require("../../middleware");
|
|
15
15
|
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
|
|
@@ -109,4 +109,4 @@ function _default(route, auth, storage, config) {
|
|
|
109
109
|
}
|
|
110
110
|
});
|
|
111
111
|
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3BhY2thZ2UudHMiXSwibmFtZXMiOlsiZG93bmxvYWRTdHJlYW0iLCJwYWNrYWdlTmFtZSIsImZpbGVuYW1lIiwic3RvcmFnZSIsInJlcSIsInJlcyIsInN0cmVhbSIsImdldFRhcmJhbGwiLCJvbiIsImNvbnRlbnQiLCJoZWFkZXIiLCJlcnIiLCJsb2NhbHMiLCJyZXBvcnRfZXJyb3IiLCJIRUFERVJTIiwiQ09OVEVOVF9UWVBFIiwiT0NURVRfU1RSRUFNIiwicGlwZSIsInJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbSIsImNvbmZpZyIsInRhcmJhbGxVcmxSZWRpcmVjdCIsIl8iLCJnZXQiLCJoYXNMb2NhbFRhcmJhbGwiLCJ0aGVuIiwiY29udGV4dCIsInRhcmJhbGxVcmwiLCJ0ZW1wbGF0ZSIsInJlZGlyZWN0IiwiY2F0Y2giLCJyb3V0ZSIsImF1dGgiLCJjYW4iLCJuZXh0IiwiZ2V0UGFja2FnZU1ldGFDYWxsYmFjayIsIm1ldGFkYXRhIiwidXJsX3ByZWZpeCIsInF1ZXJ5VmVyc2lvbiIsInBhcmFtcyIsInZlcnNpb24iLCJpc05pbCIsIkRJU1RfVEFHUyIsIkVycm9yQ29kZSIsImdldE5vdEZvdW5kIiwiQVBJX0VSUk9SIiwiVkVSU0lPTl9OT1RfRVhJU1QiLCJnZXRQYWNrYWdlIiwibmFtZSIsInBhY2thZ2UiLCJ1cGxpbmtzTG9vayIsImNhbGxiYWNrIiwic2NvcGVkUGFja2FnZSIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUdBOztBQUNBOztBQUNBOzs7O0FBU0EsTUFBTUEsY0FBYyxHQUFHLENBQ3JCQyxXQURxQixFQUVyQkMsUUFGcUIsRUFHckJDLE9BSHFCLEVBSXJCQyxHQUpxQixFQUtyQkMsR0FMcUIsS0FNWjtBQUNULFFBQU1DLE1BQU0sR0FBR0gsT0FBTyxDQUFDSSxVQUFSLENBQW1CTixXQUFuQixFQUFnQ0MsUUFBaEMsQ0FBZjtBQUVBSSxFQUFB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QUFjLGtDQUFkLE1BQXNEaUMsU0FBMUQsRUFBcUU7QUFDbkVwRCxNQUFBQSxjQUFjLENBQUNtRCxhQUFELEVBQWdCakQsUUFBaEIsRUFBMEJDLE9BQTFCLEVBQW1DQyxHQUFuQyxFQUF3Q0MsR0FBeEMsQ0FBZDtBQUNELEtBRkQsTUFFTztBQUNMYSxNQUFBQSx3QkFBd0IsQ0FBQ2lDLGFBQUQsRUFBZ0JqRCxRQUFoQixFQUEwQkMsT0FBMUIsRUFBbUNDLEdBQW5DLEVBQXdDQyxHQUF4QyxFQUE2Q2MsTUFBN0MsQ0FBeEI7QUFDRDtBQUNGLEdBVkg7QUFhQVcsRUFBQUEsS0FBSyxDQUFDUixHQUFOLENBQ0UsdUJBREYsRUFFRVUsR0FBRyxDQUFDLFFBQUQsQ0FGTCxFQUdFLFVBQVU1QixHQUFWLEVBQStCQyxHQUEvQixFQUEyRDtBQUN6RCxRQUFJZ0IsZ0JBQUVDLEdBQUYsQ0FBTUgsTUFBTixFQUFjLGtDQUFkLE1BQXNEaUMsU0FBMUQsRUFBcUU7QUFDbkVwRCxNQUFBQSxjQUFjLENBQUNJLEdBQUcsQ0FBQ2tDLE1BQUosQ0FBV1UsT0FBWixFQUFxQjVDLEdBQUcsQ0FBQ2tDLE1BQUosQ0FBV3BDLFFBQWhDLEVBQTBDQyxPQUExQyxFQUFtREMsR0FBbkQsRUFBd0RDLEdBQXhELENBQWQ7QUFDRCxLQUZELE1BRU87QUFDTGEsTUFBQUEsd0JBQXdCLENBQUNkLEdBQUcsQ0FBQ2tDLE1BQUosQ0FBV1UsT0FBWixFQUFxQjVDLEdBQUcsQ0FBQ2tDLE1BQUosQ0FBV3BDLFFBQWhDLEVBQTBDQyxPQUExQyxFQUFtREMsR0FBbkQsRUFBd0RDLEdBQXhELEVBQTZEYyxNQUE3RCxDQUF4QjtBQUNEO0FBQ0YsR0FUSDtBQVdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgQ29uZmlnLCBQYWNrYWdlIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBhbGxvdyB9IGZyb20gJy4uLy4uL21pZGRsZXdhcmUnO1xuaW1wb3J0IHsgY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMsIGdldFZlcnNpb24sIEVycm9yQ29kZSB9IGZyb20gJy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyBIRUFERVJTLCBESVNUX1RBR1MsIEFQSV9FUlJPUiB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgSUF1dGgsXG4gICRSZXNwb25zZUV4dGVuZCxcbiAgJFJlcXVlc3RFeHRlbmQsXG4gICROZXh0RnVuY3Rpb25WZXIsXG4gIElTdG9yYWdlSGFuZGxlclxufSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcyc7XG5cbmNvbnN0IGRvd25sb2FkU3RyZWFtID0gKFxuICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBzdG9yYWdlOiBhbnksXG4gIHJlcTogJFJlcXVlc3RFeHRlbmQsXG4gIHJlczogJFJlc3BvbnNlRXh0ZW5kXG4pOiB2b2lkID0+IHtcbiAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5nZXRUYXJiYWxsKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSk7XG5cbiAgc3RyZWFtLm9uKCdjb250ZW50LWxlbmd0aCcsIGZ1bmN0aW9uIChjb250ZW50KTogdm9pZCB7XG4gICAgcmVzLmhlYWRlcignQ29udGVudC1MZW5ndGgnLCBjb250ZW50KTtcbiAgfSk7XG5cbiAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpOiB2b2lkIHtcbiAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgfSk7XG5cbiAgcmVzLmhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5PQ1RFVF9TVFJFQU0pO1xuICBzdHJlYW0ucGlwZShyZXMpO1xufTtcblxuY29uc3QgcmVkaXJlY3RPckRvd25sb2FkU3RyZWFtID0gKFxuICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBzdG9yYWdlOiBhbnksXG4gIHJlcTogJFJlcXVlc3RFeHRlbmQsXG4gIHJlczogJFJlc3BvbnNlRXh0ZW5kLFxuICBjb25maWc6IENvbmZpZ1xuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHRhcmJhbGxVcmxSZWRpcmVjdCA9IF8uZ2V0KGNvbmZpZywgJ2V4cGVyaW1lbnRzLnRhcmJhbGxfdXJsX3JlZGlyZWN0Jyk7XG4gIHN0b3JhZ2UuaGFzTG9jYWxUYXJiYWxsKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSkudGhlbihoYXNMb2NhbFRhcmJhbGwgPT4ge1xuICAgIGlmIChoYXNMb2NhbFRhcmJhbGwpIHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSB7IHBhY2thZ2VOYW1lLCBmaWxlbmFtZSB9O1xuICAgICAgY29uc3QgdGFyYmFsbFVybCA9IHR5cGVvZiB0YXJiYWxsVXJsUmVkaXJlY3QgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyB0YXJiYWxsVXJsUmVkaXJlY3QoY29udGV4dClcbiAgICAgICAgOiBfLnRlbXBsYXRlKHRhcmJhbGxVcmxSZWRpcmVjdCkoY29udGV4dCk7XG4gICAgICByZXMucmVkaXJlY3QodGFyYmFsbFVybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvd25sb2FkU3RyZWFtKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMpXG4gICAgfVxuICB9KS5jYXRjaChlcnIgPT4ge1xuICAgIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoXG4gIHJvdXRlOiBSb3V0ZXIsXG4gIGF1dGg6IElBdXRoLFxuICBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIsXG4gIGNvbmZpZzogQ29uZmlnXG4pOiB2b2lkIHtcbiAgY29uc3QgY2FuID0gYWxsb3coYXV0aCk7XG4gIC8vIFRPRE86IGFub255bW91cyB1c2VyP1xuICByb3V0ZS5nZXQoXG4gICAgJy86cGFja2FnZS86dmVyc2lvbj8nLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBjb25zdCBnZXRQYWNrYWdlTWV0YUNhbGxiYWNrID0gZnVuY3Rpb24gKGVyciwgbWV0YWRhdGE6IFBhY2thZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgbWV0YWRhdGEgPSBjb252ZXJ0RGlzdFJlbW90ZVRvTG9jYWxUYXJiYWxsVXJscyhtZXRhZGF0YSwgcmVxLCBjb25maWcudXJsX3ByZWZpeCk7XG5cbiAgICAgICAgbGV0IHF1ZXJ5VmVyc2lvbiA9IHJlcS5wYXJhbXMudmVyc2lvbjtcbiAgICAgICAgaWYgKF8uaXNOaWwocXVlcnlWZXJzaW9uKSkge1xuICAgICAgICAgIHJldHVybiBuZXh0KG1ldGFkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB2ZXJzaW9uID0gZ2V0VmVyc2lvbihtZXRhZGF0YSwgcXVlcnlWZXJzaW9uKTtcbiAgICAgICAgaWYgKF8uaXNOaWwodmVyc2lvbikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQodmVyc2lvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdW3F1ZXJ5VmVyc2lvbl0pID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcXVlcnlWZXJzaW9uID0gbWV0YWRhdGFbRElTVF9UQUdTXVtxdWVyeVZlcnNpb25dO1xuICAgICAgICAgICAgdmVyc2lvbiA9IGdldFZlcnNpb24obWV0YWRhdGEsIHF1ZXJ5VmVyc2lvbik7XG4gICAgICAgICAgICBpZiAoXy5pc05pbCh2ZXJzaW9uKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQodmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXROb3RGb3VuZChgJHtBUElfRVJST1IuVkVSU0lPTl9OT1RfRVhJU1R9OiAke3JlcS5wYXJhbXMudmVyc2lvbn1gKSk7XG4gICAgICB9O1xuXG4gICAgICBzdG9yYWdlLmdldFBhY2thZ2Uoe1xuICAgICAgICBuYW1lOiByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgICByZXEsXG4gICAgICAgIGNhbGxiYWNrOiBnZXRQYWNrYWdlTWV0YUNhbGxiYWNrXG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgcm91dGUuZ2V0KFxuICAgICcvOnNjb3BlZFBhY2thZ2UvLS86c2NvcGUvOmZpbGVuYW1lJyxcbiAgICBjYW4oJ2FjY2VzcycpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCk6IHZvaWQge1xuICAgICAgY29uc3QgeyBzY29wZWRQYWNrYWdlLCBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICAgIGlmIChfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZG93bmxvYWRTdHJlYW0oc2NvcGVkUGFja2FnZSwgZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbShzY29wZWRQYWNrYWdlLCBmaWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMsIGNvbmZpZyk7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIHJvdXRlLmdldChcbiAgICAnLzpwYWNrYWdlLy0vOmZpbGVuYW1lJyxcbiAgICBjYW4oJ2FjY2VzcycpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCk6IHZvaWQge1xuICAgICAgaWYgKF8uZ2V0KGNvbmZpZywgJ2V4cGVyaW1lbnRzLnRhcmJhbGxfdXJsX3JlZGlyZWN0JykgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb3dubG9hZFN0cmVhbShyZXEucGFyYW1zLnBhY2thZ2UsIHJlcS5wYXJhbXMuZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbShyZXEucGFyYW1zLnBhY2thZ2UsIHJlcS5wYXJhbXMuZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzLCBjb25maWcpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbn1cbiJdfQ==
|
|
112
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3BhY2thZ2UudHMiXSwibmFtZXMiOlsiZG93bmxvYWRTdHJlYW0iLCJwYWNrYWdlTmFtZSIsImZpbGVuYW1lIiwic3RvcmFnZSIsInJlcSIsInJlcyIsInN0cmVhbSIsImdldFRhcmJhbGwiLCJvbiIsImNvbnRlbnQiLCJoZWFkZXIiLCJlcnIiLCJsb2NhbHMiLCJyZXBvcnRfZXJyb3IiLCJIRUFERVJTIiwiQ09OVEVOVF9UWVBFIiwiT0NURVRfU1RSRUFNIiwicGlwZSIsInJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbSIsImNvbmZpZyIsInRhcmJhbGxVcmxSZWRpcmVjdCIsIl8iLCJnZXQiLCJoYXNMb2NhbFRhcmJhbGwiLCJ0aGVuIiwiY29udGV4dCIsInRhcmJhbGxVcmwiLCJ0ZW1wbGF0ZSIsInJlZGlyZWN0IiwiY2F0Y2giLCJyb3V0ZSIsImF1dGgiLCJjYW4iLCJuZXh0IiwiZ2V0UGFja2FnZU1ldGFDYWxsYmFjayIsIm1ldGFkYXRhIiwidXJsX3ByZWZpeCIsInF1ZXJ5VmVyc2lvbiIsInBhcmFtcyIsInZlcnNpb24iLCJpc05pbCIsIkRJU1RfVEFHUyIsIkVycm9yQ29kZSIsImdldE5vdEZvdW5kIiwiQVBJX0VSUk9SIiwiVkVSU0lPTl9OT1RfRVhJU1QiLCJnZXRQYWNrYWdlIiwibmFtZSIsInBhY2thZ2UiLCJ1cGxpbmtzTG9vayIsImNhbGxiYWNrIiwic2NvcGVkUGFja2FnZSIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUtBOztBQUNBOztBQUNBOzs7O0FBRUEsTUFBTUEsY0FBYyxHQUFHLENBQUNDLFdBQUQsRUFBc0JDLFFBQXRCLEVBQXdDQyxPQUF4QyxFQUFzREMsR0FBdEQsRUFBMkVDLEdBQTNFLEtBQTBHO0FBQy9ILFFBQU1DLE1BQU0sR0FBR0gsT0FBTyxDQUFDSSxVQUFSLENBQW1CTixXQUFuQixFQUFnQ0MsUUFBaEMsQ0FBZjtBQUVBSSxFQUFB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QUYsQ0FBTUgsTUFBTixFQUFjLGtDQUFkLE1BQXNEaUMsU0FBMUQsRUFBcUU7QUFDbkVwRCxNQUFBQSxjQUFjLENBQUNtRCxhQUFELEVBQWdCakQsUUFBaEIsRUFBMEJDLE9BQTFCLEVBQW1DQyxHQUFuQyxFQUF3Q0MsR0FBeEMsQ0FBZDtBQUNELEtBRkQsTUFFTztBQUNMYSxNQUFBQSx3QkFBd0IsQ0FBQ2lDLGFBQUQsRUFBZ0JqRCxRQUFoQixFQUEwQkMsT0FBMUIsRUFBbUNDLEdBQW5DLEVBQXdDQyxHQUF4QyxFQUE2Q2MsTUFBN0MsQ0FBeEI7QUFDRDtBQUNGLEdBUEQ7QUFTQVcsRUFBQUEsS0FBSyxDQUFDUixHQUFOLENBQVUsdUJBQVYsRUFBbUNVLEdBQUcsQ0FBQyxRQUFELENBQXRDLEVBQWtELFVBQVU1QixHQUFWLEVBQStCQyxHQUEvQixFQUEyRDtBQUMzRyxRQUFJZ0IsZ0JBQUVDLEdBQUYsQ0FBTUgsTUFBTixFQUFjLGtDQUFkLE1BQXNEaUMsU0FBMUQsRUFBcUU7QUFDbkVwRCxNQUFBQSxjQUFjLENBQUNJLEdBQUcsQ0FBQ2tDLE1BQUosQ0FBV1UsT0FBWixFQUFxQjVDLEdBQUcsQ0FBQ2tDLE1BQUosQ0FBV3BDLFFBQWhDLEVBQTBDQyxPQUExQyxFQUFtREMsR0FBbkQsRUFBd0RDLEdBQXhELENBQWQ7QUFDRCxLQUZELE1BRU87QUFDTGEsTUFBQUEsd0JBQXdCLENBQUNkLEdBQUcsQ0FBQ2tDLE1BQUosQ0FBV1UsT0FBWixFQUFxQjVDLEdBQUcsQ0FBQ2tDLE1BQUosQ0FBV3BDLFFBQWhDLEVBQTBDQyxPQUExQyxFQUFtREMsR0FBbkQsRUFBd0RDLEdBQXhELEVBQTZEYyxNQUE3RCxDQUF4QjtBQUNEO0FBQ0YsR0FORDtBQU9EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBDb25maWcsIFBhY2thZ2UgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCwgSUF1dGgsIElTdG9yYWdlSGFuZGxlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgRElTVF9UQUdTLCBIRUFERVJTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBFcnJvckNvZGUsIGNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzLCBnZXRWZXJzaW9uIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB7IGFsbG93IH0gZnJvbSAnLi4vLi4vbWlkZGxld2FyZSc7XG5cbmNvbnN0IGRvd25sb2FkU3RyZWFtID0gKHBhY2thZ2VOYW1lOiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcsIHN0b3JhZ2U6IGFueSwgcmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQpOiB2b2lkID0+IHtcbiAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5nZXRUYXJiYWxsKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSk7XG5cbiAgc3RyZWFtLm9uKCdjb250ZW50LWxlbmd0aCcsIGZ1bmN0aW9uIChjb250ZW50KTogdm9pZCB7XG4gICAgcmVzLmhlYWRlcignQ29udGVudC1MZW5ndGgnLCBjb250ZW50KTtcbiAgfSk7XG5cbiAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpOiB2b2lkIHtcbiAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgfSk7XG5cbiAgcmVzLmhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5PQ1RFVF9TVFJFQU0pO1xuICBzdHJlYW0ucGlwZShyZXMpO1xufTtcblxuY29uc3QgcmVkaXJlY3RPckRvd25sb2FkU3RyZWFtID0gKHBhY2thZ2VOYW1lOiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcsIHN0b3JhZ2U6IGFueSwgcmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIGNvbmZpZzogQ29uZmlnKTogdm9pZCA9PiB7XG4gIGNvbnN0IHRhcmJhbGxVcmxSZWRpcmVjdCA9IF8uZ2V0KGNvbmZpZywgJ2V4cGVyaW1lbnRzLnRhcmJhbGxfdXJsX3JlZGlyZWN0Jyk7XG4gIHN0b3JhZ2VcbiAgICAuaGFzTG9jYWxUYXJiYWxsKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSlcbiAgICAudGhlbigoaGFzTG9jYWxUYXJiYWxsKSA9PiB7XG4gICAgICBpZiAoaGFzTG9jYWxUYXJiYWxsKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB7IHBhY2thZ2VOYW1lLCBmaWxlbmFtZSB9O1xuICAgICAgICBjb25zdCB0YXJiYWxsVXJsID0gdHlwZW9mIHRhcmJhbGxVcmxSZWRpcmVjdCA9PT0gJ2Z1bmN0aW9uJyA/IHRhcmJhbGxVcmxSZWRpcmVjdChjb250ZXh0KSA6IF8udGVtcGxhdGUodGFyYmFsbFVybFJlZGlyZWN0KShjb250ZXh0KTtcbiAgICAgICAgcmVzLnJlZGlyZWN0KHRhcmJhbGxVcmwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG93bmxvYWRTdHJlYW0ocGFja2FnZU5hbWUsIGZpbGVuYW1lLCBzdG9yYWdlLCByZXEsIHJlcyk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChyb3V0ZTogUm91dGVyLCBhdXRoOiBJQXV0aCwgc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyLCBjb25maWc6IENvbmZpZyk6IHZvaWQge1xuICBjb25zdCBjYW4gPSBhbGxvdyhhdXRoKTtcbiAgLy8gVE9ETzogYW5vbnltb3VzIHVzZXI/XG4gIHJvdXRlLmdldCgnLzpwYWNrYWdlLzp2ZXJzaW9uPycsIGNhbignYWNjZXNzJyksIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IGdldFBhY2thZ2VNZXRhQ2FsbGJhY2sgPSBmdW5jdGlvbiAoZXJyLCBtZXRhZGF0YTogUGFja2FnZSk6IHZvaWQge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgbWV0YWRhdGEgPSBjb252ZXJ0RGlzdFJlbW90ZVRvTG9jYWxUYXJiYWxsVXJscyhtZXRhZGF0YSwgcmVxLCBjb25maWcudXJsX3ByZWZpeCk7XG5cbiAgICAgIGxldCBxdWVyeVZlcnNpb24gPSByZXEucGFyYW1zLnZlcnNpb247XG4gICAgICBpZiAoXy5pc05pbChxdWVyeVZlcnNpb24pKSB7XG4gICAgICAgIHJldHVybiBuZXh0KG1ldGFkYXRhKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHZlcnNpb24gPSBnZXRWZXJzaW9uKG1ldGFkYXRhLCBxdWVyeVZlcnNpb24pO1xuICAgICAgaWYgKF8uaXNOaWwodmVyc2lvbikgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBuZXh0KHZlcnNpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKF8uaXNOaWwobWV0YWRhdGFbRElTVF9UQUdTXVtxdWVyeVZlcnNpb25dKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBxdWVyeVZlcnNpb24gPSBtZXRhZGF0YVtESVNUX1RBR1NdW3F1ZXJ5VmVyc2lvbl07XG4gICAgICAgICAgdmVyc2lvbiA9IGdldFZlcnNpb24obWV0YWRhdGEsIHF1ZXJ5VmVyc2lvbik7XG4gICAgICAgICAgaWYgKF8uaXNOaWwodmVyc2lvbikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV4dCh2ZXJzaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXROb3RGb3VuZChgJHtBUElfRVJST1IuVkVSU0lPTl9OT1RfRVhJU1R9OiAke3JlcS5wYXJhbXMudmVyc2lvbn1gKSk7XG4gICAgfTtcblxuICAgIHN0b3JhZ2UuZ2V0UGFja2FnZSh7XG4gICAgICBuYW1lOiByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICB1cGxpbmtzTG9vazogdHJ1ZSxcbiAgICAgIHJlcSxcbiAgICAgIGNhbGxiYWNrOiBnZXRQYWNrYWdlTWV0YUNhbGxiYWNrLFxuICAgIH0pO1xuICB9KTtcblxuICByb3V0ZS5nZXQoJy86c2NvcGVkUGFja2FnZS8tLzpzY29wZS86ZmlsZW5hbWUnLCBjYW4oJ2FjY2VzcycpLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQpOiB2b2lkIHtcbiAgICBjb25zdCB7IHNjb3BlZFBhY2thZ2UsIGZpbGVuYW1lIH0gPSByZXEucGFyYW1zO1xuICAgIGlmIChfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRvd25sb2FkU3RyZWFtKHNjb3BlZFBhY2thZ2UsIGZpbGVuYW1lLCBzdG9yYWdlLCByZXEsIHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbShzY29wZWRQYWNrYWdlLCBmaWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMsIGNvbmZpZyk7XG4gICAgfVxuICB9KTtcblxuICByb3V0ZS5nZXQoJy86cGFja2FnZS8tLzpmaWxlbmFtZScsIGNhbignYWNjZXNzJyksIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCk6IHZvaWQge1xuICAgIGlmIChfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRvd25sb2FkU3RyZWFtKHJlcS5wYXJhbXMucGFja2FnZSwgcmVxLnBhcmFtcy5maWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWRpcmVjdE9yRG93bmxvYWRTdHJlYW0ocmVxLnBhcmFtcy5wYWNrYWdlLCByZXEucGFyYW1zLmZpbGVuYW1lLCBzdG9yYWdlLCByZXEsIHJlcywgY29uZmlnKTtcbiAgICB9XG4gIH0pO1xufVxuIl19
|
|
@@ -14,4 +14,4 @@ function _default(route) {
|
|
|
14
14
|
next({});
|
|
15
15
|
});
|
|
16
16
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3BpbmcudHMiXSwibmFtZXMiOlsicm91dGUiLCJnZXQiLCJyZXEiLCJyZXMiLCJuZXh0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFLZSxrQkFBVUEsS0FBVixFQUErQjtBQUM1Q0EsRUFBQUEsS0FBSyxDQUFDQyxHQUFOLENBQVUsU0FBVixFQUFxQixVQUFVQyxHQUFWLEVBQStCQyxHQUEvQixFQUFxREMsSUFBckQsRUFBNkU7QUFDaEdBLElBQUFBLElBQUksQ0FBQyxFQUFELENBQUo7QUFDRCxHQUZEO0FBR0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICogQGZsb3dcbiAqL1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5cbmltcG9ydCB7ICROZXh0RnVuY3Rpb25WZXIsICRSZXF1ZXN0RXh0ZW5kLCAkUmVzcG9uc2VFeHRlbmQgfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChyb3V0ZTogUm91dGVyKTogdm9pZCB7XG4gIHJvdXRlLmdldCgnLy0vcGluZycsIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcikge1xuICAgIG5leHQoe30pO1xuICB9KTtcbn1cbiJdfQ==
|
|
@@ -10,33 +10,33 @@ exports.removeTarball = removeTarball;
|
|
|
10
10
|
exports.unPublishPackage = unPublishPackage;
|
|
11
11
|
exports.uploadPackageTarball = uploadPackageTarball;
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
14
14
|
|
|
15
15
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
16
16
|
|
|
17
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
18
|
-
|
|
19
17
|
var _mime = _interopRequireDefault(require("mime"));
|
|
20
18
|
|
|
21
|
-
var
|
|
19
|
+
var _path = _interopRequireDefault(require("path"));
|
|
22
20
|
|
|
23
|
-
var
|
|
21
|
+
var _constants = require("../../../lib/constants");
|
|
24
22
|
|
|
25
|
-
var
|
|
23
|
+
var _logger = require("../../../lib/logger");
|
|
26
24
|
|
|
27
25
|
var _notify = require("../../../lib/notify");
|
|
28
26
|
|
|
29
|
-
var _logger = require("../../../lib/logger");
|
|
30
|
-
|
|
31
27
|
var _storageUtils = require("../../../lib/storage-utils");
|
|
32
28
|
|
|
29
|
+
var _utils = require("../../../lib/utils");
|
|
30
|
+
|
|
31
|
+
var _middleware = require("../../middleware");
|
|
32
|
+
|
|
33
33
|
var _star = _interopRequireDefault(require("./star"));
|
|
34
34
|
|
|
35
35
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
36
36
|
|
|
37
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
37
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
38
38
|
|
|
39
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
39
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
40
40
|
|
|
41
41
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
42
42
|
|
|
@@ -388,4 +388,4 @@ function uploadPackageTarball(storage) {
|
|
|
388
388
|
});
|
|
389
389
|
};
|
|
390
390
|
}
|
|
391
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3B1Ymxpc2gudHMiXSwibmFtZXMiOlsiZGVidWciLCJwdWJsaXNoIiwicm91dGVyIiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJjYW4iLCJwdXQiLCJtaW1lIiwiZ2V0VHlwZSIsImV4cGVjdEpzb24iLCJwdWJsaXNoUGFja2FnZSIsImRlbGV0ZSIsInVuUHVibGlzaFBhY2thZ2UiLCJyZW1vdmVUYXJiYWxsIiwiSEVBREVSUyIsIk9DVEVUX1NUUkVBTSIsInVwbG9hZFBhY2thZ2VUYXJiYWxsIiwiYWRkVmVyc2lvbiIsInN0YXJBcGkiLCJyZXEiLCJyZXMiLCJuZXh0IiwicGFja2FnZU5hbWUiLCJwYXJhbXMiLCJwYWNrYWdlIiwiY3JlYXRlVGFyYmFsbCIsImZpbGVuYW1lIiwiZGF0YSIsImNiIiwic3RyZWFtIiwiYWRkVGFyYmFsbCIsIm9uIiwiZXJyIiwiZW5kIiwiQnVmZmVyIiwiZnJvbSIsImRvbmUiLCJjcmVhdGVWZXJzaW9uIiwidmVyc2lvbiIsIm1ldGFkYXRhIiwiYWRkVGFncyIsInRhZ3MiLCJtZXJnZVRhZ3MiLCJhZnRlckNoYW5nZSIsImVycm9yIiwib2tNZXNzYWdlIiwibWV0YWRhdGFDb3B5IiwiX2F0dGFjaG1lbnRzIiwidmVyc2lvbnMiLCJfIiwiaXNOaWwiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJDUkVBVEVEIiwib2siLCJzdWNjZXNzIiwiaXNJbnZhbGlkQm9keUZvcm1hdCIsImxvZ2dlciIsImluZm8iLCJFcnJvckNvZGUiLCJnZXRCYWRSZXF1ZXN0IiwiQVBJX0VSUk9SIiwiVU5TVVBPUlRFRF9SRUdJU1RSWV9DQUxMIiwiQ09ORkxJQ1QiLCJmaXJzdEF0dGFjaG1lbnRLZXkiLCJPYmplY3QiLCJrZXlzIiwiUGF0aCIsImJhc2VuYW1lIiwidmVyc2lvblRvUHVibGlzaCIsInZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCIsInJlYWRtZSIsIlN0cmluZyIsIkRJU1RfVEFHUyIsInJlbW90ZV91c2VyIiwibmFtZSIsImJvZHkiLCJ1c2VycyIsIl9yZXYiLCJpc0VtcHR5IiwicmVtb3RlIiwiYWxsb3dfdW5wdWJsaXNoIiwiY2hhbmdlUGFja2FnZSIsInJldmlzaW9uIiwiQVBJX01FU1NBR0UiLCJQS0dfQ0hBTkdFRCIsImFkZFBhY2thZ2UiLCJQS0dfQ1JFQVRFRCIsImdldEJhZERhdGEiLCJCQURfUEFDS0FHRV9EQVRBIiwicmVtb3ZlUGFja2FnZSIsIlBLR19SRU1PVkVEIiwiVEFSQkFMTF9SRU1PVkVEIiwidGFnIiwiUEtHX1BVQkxJU0hFRCIsInBpcGUiLCJjb21wbGV0ZSIsImFib3J0IiwibG9jYWxzIiwicmVwb3J0X2Vycm9yIiwiVEFSQkFMTF9VUExPQURFRCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxNQUFNQSxLQUFLLEdBQUcsb0JBQVcsbUJBQVgsQ0FBZDs7QUFFZSxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUFpQ0MsSUFBakMsRUFBOENDLE9BQTlDLEVBQXdFQyxNQUF4RSxFQUE4RjtBQUMzRyxRQUFNQyxHQUFHLEdBQUcsdUJBQU1ILElBQU4sQ0FBWjtBQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0VELEVBQUFBLE1BQU0sQ0FBQ0ssR0FBUCxDQUFXLDZCQUFYLEVBQTBDRCxHQUFHLENBQUMsU0FBRCxDQUE3QyxFQUEwRCx1QkFBTUUsY0FBS0MsT0FBTCxDQUFhLE1BQWIsQ0FBTixDQUExRCxFQUF1RkMsc0JBQXZGLEVBQW1HQyxjQUFjLENBQUNQLE9BQUQsRUFBVUMsTUFBVixFQUFrQkYsSUFBbEIsQ0FBakg7QUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNFRCxFQUFBQSxNQUFNLENBQUNVLE1BQVAsQ0FBYyxrQkFBZCxFQUFrQ04sR0FBRyxDQUFDLFdBQUQsQ0FBckMsRUFBb0RPLGdCQUFnQixDQUFDVCxPQUFELENBQXBFLEVBeEUyRyxDQTBFM0c7O0FBQ0FGLEVBQUFBLE1BQU0sQ0FBQ1UsTUFBUCxDQUFjLHNDQUFkLEVBQXNETixHQUFHLENBQUMsV0FBRCxDQUF6RCxFQUF3RUEsR0FBRyxDQUFDLFNBQUQsQ0FBM0UsRUFBd0ZRLGFBQWEsQ0FBQ1YsT0FBRCxDQUFyRyxFQTNFMkcsQ0E2RTNHOztBQUNBRixFQUFBQSxNQUFNLENBQUNLLEdBQVAsQ0FBVyx5QkFBWCxFQUFzQ0QsR0FBRyxDQUFDLFNBQUQsQ0FBekMsRUFBc0QsdUJBQU1TLG1CQUFRQyxZQUFkLENBQXRELEVBQW1GQyxvQkFBb0IsQ0FBQ2IsT0FBRCxDQUF2RyxFQTlFMkcsQ0FnRjNHOztBQUNBRixFQUFBQSxNQUFNLENBQUNLLEdBQVAsQ0FBVyw4QkFBWCxFQUEyQ0QsR0FBRyxDQUFDLFNBQUQsQ0FBOUMsRUFBMkQsdUJBQU1FLGNBQUtDLE9BQUwsQ0FBYSxNQUFiLENBQU4sQ0FBM0QsRUFBd0ZDLHNCQUF4RixFQUFvR1EsVUFBVSxDQUFDZCxPQUFELENBQTlHO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7OztBQUNPLFNBQVNPLGNBQVQsQ0FBd0JQLE9BQXhCLEVBQWtEQyxNQUFsRCxFQUFrRUYsSUFBbEUsRUFBb0Y7QUFDekYsUUFBTWdCLE9BQU8sR0FBRyxtQkFBS2YsT0FBTCxDQUFoQjtBQUNBLFNBQU8sVUFBVWdCLEdBQVYsRUFBK0JDLEdBQS9CLEVBQXFEQyxJQUFyRCxFQUFtRjtBQUN4RixVQUFNQyxXQUFXLEdBQUdILEdBQUcsQ0FBQ0ksTUFBSixDQUFXQyxPQUEvQjtBQUNBekIsSUFBQUEsS0FBSyxDQUFDLDZDQUFELEVBQWdEdUIsV0FBaEQsQ0FBTDtBQUNBO0FBQ0o7QUFDQTs7QUFDSSxVQUFNRyxhQUFhLEdBQUcsVUFBVUMsUUFBVixFQUE0QkMsSUFBNUIsRUFBa0NDLEVBQWxDLEVBQXNEO0FBQzFFLFlBQU1DLE1BQU0sR0FBRzFCLE9BQU8sQ0FBQzJCLFVBQVIsQ0FBbUJSLFdBQW5CLEVBQWdDSSxRQUFoQyxDQUFmO0FBQ0FHLE1BQUFBLE1BQU0sQ0FBQ0UsRUFBUCxDQUFVLE9BQVYsRUFBbUIsVUFBVUMsR0FBVixFQUFlO0FBQ2hDSixRQUFBQSxFQUFFLENBQUNJLEdBQUQsQ0FBRjtBQUNELE9BRkQ7QUFHQUgsTUFBQUEsTUFBTSxDQUFDRSxFQUFQLENBQVUsU0FBVixFQUFxQixZQUFZO0FBQy9CSCxRQUFBQSxFQUFFO0FBQ0gsT0FGRCxFQUwwRSxDQVExRTtBQUNBOztBQUNBQyxNQUFBQSxNQUFNLENBQUNJLEdBQVAsQ0FBV0MsTUFBTSxDQUFDQyxJQUFQLENBQVlSLElBQUksQ0FBQ0EsSUFBakIsRUFBdUIsUUFBdkIsQ0FBWDtBQUNBRSxNQUFBQSxNQUFNLENBQUNPLElBQVA7QUFDRCxLQVpEO0FBY0E7QUFDSjtBQUNBOzs7QUFDSSxVQUFNQyxhQUFhLEdBQUcsVUFBVUMsT0FBVixFQUEyQkMsUUFBM0IsRUFBOENYLEVBQTlDLEVBQWtFO0FBQ3RGekIsTUFBQUEsT0FBTyxDQUFDYyxVQUFSLENBQW1CSyxXQUFuQixFQUFnQ2dCLE9BQWhDLEVBQXlDQyxRQUF6QyxFQUFtRCxJQUFuRCxFQUF5RFgsRUFBekQ7QUFDRCxLQUZEO0FBSUE7QUFDSjtBQUNBOzs7QUFDSSxVQUFNWSxPQUFPLEdBQUcsVUFBVUMsSUFBVixFQUEyQmIsRUFBM0IsRUFBK0M7QUFDN0R6QixNQUFBQSxPQUFPLENBQUN1QyxTQUFSLENBQWtCcEIsV0FBbEIsRUFBK0JtQixJQUEvQixFQUFxQ2IsRUFBckM7QUFDRCxLQUZEOztBQUlBLFVBQU1lLFdBQVcsR0FBRyxVQUFVQyxLQUFWLEVBQWlCQyxTQUFqQixFQUE0Qk4sUUFBNUIsRUFBNEM7QUFDOUQsWUFBTU8sWUFBcUIscUJBQVFQLFFBQVIsQ0FBM0I7O0FBRUEsWUFBTTtBQUFFUSxRQUFBQSxZQUFGO0FBQWdCQyxRQUFBQTtBQUFoQixVQUE2QkYsWUFBbkMsQ0FIOEQsQ0FLOUQ7QUFDQTs7QUFDQSxVQUFJRyxnQkFBRUMsS0FBRixDQUFRSCxZQUFSLEtBQXlCSSxJQUFJLENBQUNDLFNBQUwsQ0FBZUwsWUFBZixNQUFpQyxJQUE5RCxFQUFvRTtBQUNsRSxZQUFJSCxLQUFKLEVBQVc7QUFDVCxpQkFBT3ZCLElBQUksQ0FBQ3VCLEtBQUQsQ0FBWDtBQUNEOztBQUNEeEIsUUFBQUEsR0FBRyxDQUFDaUMsTUFBSixDQUFXQyx1QkFBWUMsT0FBdkI7QUFDQSxlQUFPbEMsSUFBSSxDQUFDO0FBQ1ZtQyxVQUFBQSxFQUFFLEVBQUVYLFNBRE07QUFFVlksVUFBQUEsT0FBTyxFQUFFO0FBRkMsU0FBRCxDQUFYO0FBSUQsT0FoQjZELENBa0I5RDtBQUNBO0FBQ0E7OztBQUNBLFlBQU1DLG1CQUFtQixHQUFHLHFCQUFTWCxZQUFULE1BQTJCLEtBQTNCLElBQW9DLDBCQUFjQSxZQUFkLENBQXBDLElBQW1FLHFCQUFTQyxRQUFULE1BQXVCLEtBQTFGLElBQW1HLDBCQUFjQSxRQUFkLENBQS9IOztBQUVBLFVBQUlVLG1CQUFKLEVBQXlCO0FBQ3ZCO0FBQ0E7QUFDQUMsdUJBQU9DLElBQVAsQ0FBWTtBQUFFdEMsVUFBQUE7QUFBRixTQUFaLEVBQThCLDBEQUE5Qjs7QUFDQSxlQUFPRCxJQUFJLENBQUN3QyxpQkFBVUMsYUFBVixDQUF3QkMscUJBQVVDLHdCQUFsQyxDQUFELENBQVg7QUFDRDs7QUFFRCxVQUFJcEIsS0FBSyxJQUFJQSxLQUFLLENBQUNTLE1BQU4sS0FBaUJDLHVCQUFZVyxRQUExQyxFQUFvRDtBQUNsRCxlQUFPNUMsSUFBSSxDQUFDdUIsS0FBRCxDQUFYO0FBQ0QsT0FoQzZELENBa0M5RDs7O0FBQ0EsWUFBTSxDQUFDc0Isa0JBQUQsSUFBdUJDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZckIsWUFBWixDQUE3QjtBQUVBdEIsTUFBQUEsYUFBYSxDQUFDNEMsY0FBS0MsUUFBTCxDQUFjSixrQkFBZCxDQUFELEVBQW9DbkIsWUFBWSxDQUFDbUIsa0JBQUQsQ0FBaEQsRUFBc0UsVUFBVXRCLEtBQVYsRUFBaUI7QUFDbEcsWUFBSUEsS0FBSixFQUFXO0FBQ1QsaUJBQU92QixJQUFJLENBQUN1QixLQUFELENBQVg7QUFDRDs7QUFFRCxjQUFNMkIsZ0JBQWdCLEdBQUdKLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZcEIsUUFBWixFQUFzQixDQUF0QixDQUF6QjtBQUNBLGNBQU13Qix3QkFBd0IsR0FBR3hCLFFBQVEsQ0FBQ3VCLGdCQUFELENBQXpDO0FBRUFDLFFBQUFBLHdCQUF3QixDQUFDQyxNQUF6QixHQUFrQ3hCLGdCQUFFQyxLQUFGLENBQVFzQix3QkFBd0IsQ0FBQ0MsTUFBakMsTUFBNkMsS0FBN0MsR0FBcURDLE1BQU0sQ0FBQ0Ysd0JBQXdCLENBQUNDLE1BQTFCLENBQTNELEdBQStGLEVBQWpJO0FBRUFwQyxRQUFBQSxhQUFhLENBQUNrQyxnQkFBRCxFQUFtQkMsd0JBQW5CLEVBQTZDLFVBQVU1QixLQUFWLEVBQWlCO0FBQ3pFLGNBQUlBLEtBQUosRUFBVztBQUNULG1CQUFPdkIsSUFBSSxDQUFDdUIsS0FBRCxDQUFYO0FBQ0Q7O0FBRURKLFVBQUFBLE9BQU8sQ0FBQ00sWUFBWSxDQUFDNkIsb0JBQUQsQ0FBYixFQUEwQixnQkFBZ0IvQixLQUFoQixFQUF1QjtBQUN0RCxnQkFBSUEsS0FBSixFQUFXO0FBQ1QscUJBQU92QixJQUFJLENBQUN1QixLQUFELENBQVg7QUFDRDs7QUFFRCxnQkFBSTtBQUNGLG9CQUFNLG9CQUFPRSxZQUFQLEVBQXFCMUMsTUFBckIsRUFBNkJlLEdBQUcsQ0FBQ3lELFdBQWpDLEVBQStDLEdBQUU5QixZQUFZLENBQUMrQixJQUFLLElBQUdOLGdCQUFpQixFQUF2RixDQUFOO0FBQ0QsYUFGRCxDQUVFLE9BQU8zQixLQUFQLEVBQWM7QUFDZGUsNkJBQU9mLEtBQVAsQ0FBYTtBQUFFQSxnQkFBQUE7QUFBRixlQUFiLEVBQXdCLDJDQUF4QjtBQUNEOztBQUVEeEIsWUFBQUEsR0FBRyxDQUFDaUMsTUFBSixDQUFXQyx1QkFBWUMsT0FBdkI7QUFDQSxtQkFBT2xDLElBQUksQ0FBQztBQUFFbUMsY0FBQUEsRUFBRSxFQUFFWCxTQUFOO0FBQWlCWSxjQUFBQSxPQUFPLEVBQUU7QUFBMUIsYUFBRCxDQUFYO0FBQ0QsV0FiTSxDQUFQO0FBY0QsU0FuQlksQ0FBYjtBQW9CRCxPQTlCWSxDQUFiO0FBK0JELEtBcEVEOztBQXNFQSxRQUFJLHdDQUFxQnRDLEdBQUcsQ0FBQzJELElBQXpCLE1BQW1DLEtBQW5DLElBQTRDLHFCQUFTM0QsR0FBRyxDQUFDMkQsSUFBSixDQUFTQyxLQUFsQixDQUFoRCxFQUEwRTtBQUN4RSxhQUFPN0QsT0FBTyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxDQUFkO0FBQ0Q7O0FBRUQsUUFBSTtBQUNGLFlBQU1rQixRQUFRLEdBQUcsNkJBQWlCcEIsR0FBRyxDQUFDMkQsSUFBckIsRUFBMkJ4RCxXQUEzQixDQUFqQixDQURFLENBRUY7O0FBQ0EsVUFBSUgsR0FBRyxDQUFDSSxNQUFKLENBQVd5RCxJQUFYLElBQW9CLG1DQUF1QjdELEdBQUcsQ0FBQzJELElBQTNCLEtBQW9DN0IsZ0JBQUVnQyxPQUFGLENBQVU5RCxHQUFHLENBQUMyRCxJQUFKLENBQVMvQixZQUFuQixDQUE1RCxFQUErRjtBQUM3RmhELFFBQUFBLEtBQUssQ0FBQywrQkFBRCxFQUFrQ3VCLFdBQWxDLENBQUwsQ0FENkYsQ0FFN0Y7O0FBQ0EsY0FBTTRELE1BQU0sR0FBRy9ELEdBQUcsQ0FBQ3lELFdBQW5CO0FBQ0ExRSxRQUFBQSxJQUFJLENBQUNpRixlQUFMLENBQXFCO0FBQUU3RCxVQUFBQTtBQUFGLFNBQXJCLEVBQXNDNEQsTUFBdEMsRUFBK0N0QyxLQUFELElBQVc7QUFDdkQsY0FBSUEsS0FBSixFQUFXO0FBQ1RlLDJCQUFPZixLQUFQLENBQWE7QUFBRXRCLGNBQUFBO0FBQUYsYUFBYixFQUErQix1REFBL0I7O0FBQ0EsbUJBQU9ELElBQUksQ0FBQ3VCLEtBQUQsQ0FBWDtBQUNEOztBQUNEekMsVUFBQUEsT0FBTyxDQUFDaUYsYUFBUixDQUFzQjlELFdBQXRCLEVBQW1DaUIsUUFBbkMsRUFBNkNwQixHQUFHLENBQUNJLE1BQUosQ0FBVzhELFFBQXhELEVBQWtFLFVBQVV6QyxLQUFWLEVBQWlCO0FBQ2pGRCxZQUFBQSxXQUFXLENBQUNDLEtBQUQsRUFBUTBDLHVCQUFZQyxXQUFwQixFQUFpQ2hELFFBQWpDLENBQVg7QUFDRCxXQUZEO0FBR0QsU0FSRDtBQVNELE9BYkQsTUFhTztBQUNMeEMsUUFBQUEsS0FBSyxDQUFDLDZCQUFELEVBQWdDdUIsV0FBaEMsQ0FBTDtBQUNBbkIsUUFBQUEsT0FBTyxDQUFDcUYsVUFBUixDQUFtQmxFLFdBQW5CLEVBQWdDaUIsUUFBaEMsRUFBMEMsVUFBVUssS0FBVixFQUFpQjtBQUN6REQsVUFBQUEsV0FBVyxDQUFDQyxLQUFELEVBQVEwQyx1QkFBWUcsV0FBcEIsRUFBaUNsRCxRQUFqQyxDQUFYO0FBQ0QsU0FGRDtBQUdEO0FBQ0YsS0F0QkQsQ0FzQkUsT0FBT0ssS0FBUCxFQUFjO0FBQ2RlLHFCQUFPZixLQUFQLENBQWE7QUFBRXRCLFFBQUFBO0FBQUYsT0FBYixFQUE4Qix1REFBOUI7O0FBQ0EsYUFBT0QsSUFBSSxDQUFDd0MsaUJBQVU2QixVQUFWLENBQXFCM0IscUJBQVU0QixnQkFBL0IsQ0FBRCxDQUFYO0FBQ0Q7QUFDRixHQXRJRDtBQXVJRDtBQUVEO0FBQ0E7QUFDQTs7O0FBQ08sU0FBUy9FLGdCQUFULENBQTBCVCxPQUExQixFQUFvRDtBQUN6RCxTQUFPLFVBQVVnQixHQUFWLEVBQStCQyxHQUEvQixFQUFxREMsSUFBckQsRUFBbUY7QUFDeEYsVUFBTUMsV0FBVyxHQUFHSCxHQUFHLENBQUNJLE1BQUosQ0FBV0MsT0FBL0I7QUFDQXpCLElBQUFBLEtBQUssQ0FBQyxpQkFBRCxFQUFvQnVCLFdBQXBCLENBQUw7QUFDQW5CLElBQUFBLE9BQU8sQ0FBQ3lGLGFBQVIsQ0FBc0J0RSxXQUF0QixFQUFtQyxVQUFVVSxHQUFWLEVBQWU7QUFDaEQsVUFBSUEsR0FBSixFQUFTO0FBQ1AsZUFBT1gsSUFBSSxDQUFDVyxHQUFELENBQVg7QUFDRDs7QUFDRFosTUFBQUEsR0FBRyxDQUFDaUMsTUFBSixDQUFXQyx1QkFBWUMsT0FBdkI7QUFDQSxhQUFPbEMsSUFBSSxDQUFDO0FBQUVtQyxRQUFBQSxFQUFFLEVBQUU4Qix1QkFBWU87QUFBbEIsT0FBRCxDQUFYO0FBQ0QsS0FORDtBQU9ELEdBVkQ7QUFXRDtBQUVEO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU2hGLGFBQVQsQ0FBdUJWLE9BQXZCLEVBQWlEO0FBQ3RELFNBQU8sVUFBVWdCLEdBQVYsRUFBK0JDLEdBQS9CLEVBQXFEQyxJQUFyRCxFQUFtRjtBQUN4RixVQUFNQyxXQUFXLEdBQUdILEdBQUcsQ0FBQ0ksTUFBSixDQUFXQyxPQUEvQjtBQUNBLFVBQU07QUFBRUUsTUFBQUEsUUFBRjtBQUFZMkQsTUFBQUE7QUFBWixRQUF5QmxFLEdBQUcsQ0FBQ0ksTUFBbkM7QUFDQXhCLElBQUFBLEtBQUssQ0FBQyxpQ0FBRCxFQUFvQ3VCLFdBQXBDLEVBQWlESSxRQUFqRCxFQUEyRDJELFFBQTNELENBQUw7QUFDQWxGLElBQUFBLE9BQU8sQ0FBQ1UsYUFBUixDQUFzQlMsV0FBdEIsRUFBbUNJLFFBQW5DLEVBQTZDMkQsUUFBN0MsRUFBdUQsVUFBVXJELEdBQVYsRUFBZTtBQUNwRSxVQUFJQSxHQUFKLEVBQVM7QUFDUCxlQUFPWCxJQUFJLENBQUNXLEdBQUQsQ0FBWDtBQUNEOztBQUNEWixNQUFBQSxHQUFHLENBQUNpQyxNQUFKLENBQVdDLHVCQUFZQyxPQUF2QjtBQUNBeEQsTUFBQUEsS0FBSyxDQUFDLHFDQUFELEVBQXdDdUIsV0FBeEMsRUFBcURJLFFBQXJELEVBQStEMkQsUUFBL0QsQ0FBTDtBQUNBLGFBQU9oRSxJQUFJLENBQUM7QUFBRW1DLFFBQUFBLEVBQUUsRUFBRThCLHVCQUFZUTtBQUFsQixPQUFELENBQVg7QUFDRCxLQVBEO0FBUUQsR0FaRDtBQWFEO0FBQ0Q7QUFDQTtBQUNBOzs7QUFDTyxTQUFTN0UsVUFBVCxDQUFvQmQsT0FBcEIsRUFBOEM7QUFDbkQsU0FBTyxVQUFVZ0IsR0FBVixFQUErQkMsR0FBL0IsRUFBcURDLElBQXJELEVBQW1GO0FBQ3hGLFVBQU07QUFBRWlCLE1BQUFBLE9BQUY7QUFBV3lELE1BQUFBO0FBQVgsUUFBbUI1RSxHQUFHLENBQUNJLE1BQTdCO0FBQ0EsVUFBTUQsV0FBVyxHQUFHSCxHQUFHLENBQUNJLE1BQUosQ0FBV0MsT0FBL0I7QUFFQXJCLElBQUFBLE9BQU8sQ0FBQ2MsVUFBUixDQUFtQkssV0FBbkIsRUFBZ0NnQixPQUFoQyxFQUF5Q25CLEdBQUcsQ0FBQzJELElBQTdDLEVBQW1EaUIsR0FBbkQsRUFBd0QsVUFBVW5ELEtBQVYsRUFBaUI7QUFDdkUsVUFBSUEsS0FBSixFQUFXO0FBQ1QsZUFBT3ZCLElBQUksQ0FBQ3VCLEtBQUQsQ0FBWDtBQUNEOztBQUVEeEIsTUFBQUEsR0FBRyxDQUFDaUMsTUFBSixDQUFXQyx1QkFBWUMsT0FBdkI7QUFDQSxhQUFPbEMsSUFBSSxDQUFDO0FBQ1ZtQyxRQUFBQSxFQUFFLEVBQUU4Qix1QkFBWVU7QUFETixPQUFELENBQVg7QUFHRCxLQVREO0FBVUQsR0FkRDtBQWVEO0FBRUQ7QUFDQTtBQUNBOzs7QUFDTyxTQUFTaEYsb0JBQVQsQ0FBOEJiLE9BQTlCLEVBQXdEO0FBQzdELFNBQU8sVUFBVWdCLEdBQVYsRUFBK0JDLEdBQS9CLEVBQXFEQyxJQUFyRCxFQUFtRjtBQUN4RixVQUFNQyxXQUFXLEdBQUdILEdBQUcsQ0FBQ0ksTUFBSixDQUFXQyxPQUEvQjtBQUNBLFVBQU1LLE1BQU0sR0FBRzFCLE9BQU8sQ0FBQzJCLFVBQVIsQ0FBbUJSLFdBQW5CLEVBQWdDSCxHQUFHLENBQUNJLE1BQUosQ0FBV0csUUFBM0MsQ0FBZjtBQUNBUCxJQUFBQSxHQUFHLENBQUM4RSxJQUFKLENBQVNwRSxNQUFULEVBSHdGLENBS3hGOztBQUNBLFFBQUlxRSxRQUFRLEdBQUcsS0FBZjtBQUNBL0UsSUFBQUEsR0FBRyxDQUFDWSxFQUFKLENBQU8sS0FBUCxFQUFjLFlBQVk7QUFDeEJtRSxNQUFBQSxRQUFRLEdBQUcsSUFBWDtBQUNBckUsTUFBQUEsTUFBTSxDQUFDTyxJQUFQO0FBQ0QsS0FIRDtBQUtBakIsSUFBQUEsR0FBRyxDQUFDWSxFQUFKLENBQU8sT0FBUCxFQUFnQixZQUFZO0FBQzFCLFVBQUksQ0FBQ21FLFFBQUwsRUFBZTtBQUNickUsUUFBQUEsTUFBTSxDQUFDc0UsS0FBUDtBQUNEO0FBQ0YsS0FKRDtBQU1BdEUsSUFBQUEsTUFBTSxDQUFDRSxFQUFQLENBQVUsT0FBVixFQUFtQixVQUFVQyxHQUFWLEVBQWU7QUFDaEMsYUFBT1osR0FBRyxDQUFDZ0YsTUFBSixDQUFXQyxZQUFYLENBQXdCckUsR0FBeEIsQ0FBUDtBQUNELEtBRkQ7QUFJQUgsSUFBQUEsTUFBTSxDQUFDRSxFQUFQLENBQVUsU0FBVixFQUFxQixZQUFZO0FBQy9CWCxNQUFBQSxHQUFHLENBQUNpQyxNQUFKLENBQVdDLHVCQUFZQyxPQUF2QjtBQUNBLGFBQU9sQyxJQUFJLENBQUM7QUFDVm1DLFFBQUFBLEVBQUUsRUFBRThCLHVCQUFZZ0I7QUFETixPQUFELENBQVg7QUFHRCxLQUxEO0FBTUQsR0E1QkQ7QUE2QkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lJztcblxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBDb25maWcsIENhbGxiYWNrLCBNZXJnZVRhZ3MsIFZlcnNpb24sIFBhY2thZ2UgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7IEFQSV9NRVNTQUdFLCBIRUFERVJTLCBESVNUX1RBR1MsIEFQSV9FUlJPUiwgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IHZhbGlkYXRlTWV0YWRhdGEsIGlzT2JqZWN0LCBFcnJvckNvZGUsIGhhc0RpZmZPbmVLZXksIGlzUmVsYXRlZFRvRGVwcmVjYXRpb24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgbWVkaWEsIGV4cGVjdEpzb24sIGFsbG93IH0gZnJvbSAnLi4vLi4vbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBub3RpZnkgfSBmcm9tICcuLi8uLi8uLi9saWIvbm90aWZ5JztcblxuaW1wb3J0IHsgSUF1dGgsICRSZXNwb25zZUV4dGVuZCwgJFJlcXVlc3RFeHRlbmQsICROZXh0RnVuY3Rpb25WZXIsIElTdG9yYWdlSGFuZGxlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHsgaXNQdWJsaXNoYWJsZVBhY2thZ2UgfSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZS11dGlscyc7XG5pbXBvcnQgc3RhciBmcm9tICcuL3N0YXInO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzpwdWJsaXNoJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHB1Ymxpc2gocm91dGVyOiBSb3V0ZXIsIGF1dGg6IElBdXRoLCBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgpO1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSAvIHVwZGF0ZSBwYWNrYWdlIC8gdW4vc3RhcnQgYSBwYWNrYWdlXG4gICAqXG4gICAqIFRoZXJlIGFyZSBtdWx0aXBsZXMgc2NlbmFyaW9zIGhlcmUgdG8gYmUgY29uc2lkZXJlZDpcbiAgICpcbiAgICogMS4gUHVibGlzaCBzY2VuYXJpb1xuICAgKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSBjb25zaXN0IG9mIGF0IGxlYXN0IDEgc3RlcCAoUFVUKSB3aXRoIGEgbWV0YWRhdGEgcGF5bG9hZC5cbiAgICogV2hlbiBhIHBhY2thZ2UgaXMgcHVibGlzaGVkLCBhbiBfYXR0YWNobWVudCBwcm9wZXJ0eSBpcyBwcmVzZW50IHRoYXQgY29udGFpbnMgdGhlIGRhdGFcbiAgICogb2YgdGhlIHRhcmJhbGwuXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiBwdWJsaXNoLlxuICAgKlxuICAgKiAgbnBtIGh0dHAgZmV0Y2ggUFVUIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEgOTYyN21zXG4gICAgICBucG0gaW5mbyBsaWZlY3ljbGUgQHNjb3BlL3Rlc3QxQDEuMC4xfnB1Ymxpc2g6IEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIGluZm8gbGlmZWN5Y2xlIEBzY29wZS90ZXN0MUAxLjAuMX5wb3N0cHVibGlzaDogQHNjb3BlL3Rlc3QxQDEuMC4xXG4gICAgICArIEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIHZlcmIgZXhpdCBbIDAsIHRydWUgXVxuICAgKlxuICAgKlxuICAgKiAyLiBVbnB1Ymxpc2ggc2NlbmFyaW9cbiAgICpcbiAgICogVW5wdWJsaXNoIGNvbnNpc3QgaW4gMyBzdGVwcy5cbiAgICogIDEuIFRyeSB0byBmZXRjaCAgbWV0YWRhdGEgLT4gaWYgaXQgZmFpbHMsIHJldHVybiA0MDRcbiAgICogIDIuIENvbXB1dGUgbWV0YWRhdGEgbG9jYWxseSAoY2xpZW50IHNpZGUpIGFuZCBzZW5kIGEgbXV0YXRlIHBheWxvYWQgZXhjbHVkaW5nIHRoZSB2ZXJzaW9uIHRvIGJlIHVucHVibGlzaGVkXG4gICAqICAgIGVnOiBpZiBtZXRhZGF0YSByZWZsZWN0cyAxLjAuMSwgMS4wLjIgYW5kIDEuMC4zLCB0aGUgY29tcHV0ZWQgbWV0YWRhdGEgd29uJ3QgaW5jbHVkZSAxLjAuMy5cbiAgICogIDMuIE9uY2UgdGhlIHNlY29uZCBzdGVwIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZCwgZGVsZXRlIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiAgQWxsIHRoZXNlIHN0ZXBzIGFyZSBjb25zZWN1dGl2ZSBhbmQgcmVxdWlyZWQsIHRoZXJlIGlzIG5vIHRyYW5zYWNpb25zIGhlcmUsIGlmIHN0ZXAgMyBmYWlscywgbWV0YWRhdGEgbWlnaHRcbiAgICogIGdldCBjb3JydXB0ZWQuXG4gICAqXG4gICAqICBOb3RlIHRoZSB1bnB1Ymxpc2ggY2FsbCB3aWxsIHN1ZmZpeCBpbiB0aGUgdXJsIGEgLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCByZXZpc2lvbiBudW1iZXIsIHRoaXMgbm90XG4gICAqICB1c2VkIGludGVybmFsbHkuXG4gICAqXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiB1bnB1Ymxpc2guXG4gICAqXG4gICAqIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTY4MG1zXG4gICAgIG5wbSBodHRwIGZldGNoIFBVVCAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCA5NTY2MDZtcyBhdHRlbXB0ICMyXG4gICAgIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTYwMW1zXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy0vdGVzdDEtMS4wLjMudGd6Ly1yZXYvMTYtZTExYzhkYjI4MmIyZDk5MiAxOW1zXG4gICAqXG4gICAqIDMuIFN0YXIgYSBwYWNrYWdlXG4gICAqXG4gICAqIFBlcm1pc3Npb25zOiBzdGFydCBhIHBhY2thZ2UgZGVwZW5kcyBvZiB0aGUgcHVibGlzaCBhbmQgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCB0aGVyZSBpcyBubyBzcGVjaWZpYyBmbGFnIGZvciBzdGFyIG9yIHVuIHN0YXJ0LlxuICAgKiBUaGUgVVJMIGZvciBzdGFyIGlzIHNpbWlsYXIgdG8gdGhlIHVucHVibGlzaCAoY2hhbmdlIHBhY2thZ2UgZm9ybWF0KVxuICAgKlxuICAgKiBucG0gaGFzIG5vIGVucG9pbnQgZm9yIHN0YXIgYSBwYWNrYWdlLCByYXRoZXIgbXV0YXRlIHRoZSBtZXRhZGF0YSBhbmQgYWN0cyBhcywgdGhlIGRpZmZlcmVuY2UgaXMgdGhlXG4gICAqIHVzZXJzIHByb3BlcnR5IHdoaWNoIGlzIHBhcnQgb2YgdGhlIHBheWxvYWQgYW5kIHRoZSBib2R5IG9ubHkgaW5jbHVkZXNcbiAgICpcbiAgICoge1xuXHRcdCAgXCJfaWRcIjogcGtnTmFtZSxcblx0ICBcdFwiX3JldlwiOiBcIjMtYjBjZGFlZmM5YmRiNzdjOFwiLFxuXHRcdCAgXCJ1c2Vyc1wiOiB7XG5cdFx0ICAgIFt1c2VybmFtZV06IGJvb2xlYW4gdmFsdWUgKHRydWUsIGZhbHNlKVxuXHRcdCAgfVxuXHR9XG4gICAqXG4gICAqL1xuICByb3V0ZXIucHV0KCcvOnBhY2thZ2UvOl9yZXY/LzpyZXZpc2lvbj8nLCBjYW4oJ3B1Ymxpc2gnKSwgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLCBleHBlY3RKc29uLCBwdWJsaXNoUGFja2FnZShzdG9yYWdlLCBjb25maWcsIGF1dGgpKTtcblxuICAvKipcbiAgICogVW4tcHVibGlzaGluZyBhbiBlbnRpcmUgcGFja2FnZS5cbiAgICpcbiAgICogVGhpcyBzY2VuYXJpbyBoYXBwZW5zIHdoZW4gdGhlIGZpcnN0IGNhbGwgZGV0ZWN0IHRoZXJlIGlzIG9ubHkgb25lIHZlcnNpb24gcmVtYWluaW5nXG4gICAqIGluIHRoZSBtZXRhZGF0YSwgdGhlbiB0aGUgY2xpZW50IGRlY2lkZXMgdG8gREVMRVRFIHRoZSByZXNvdXJjZVxuICAgKiBucG0gaHR0cCBmZXRjaCBHRVQgMzA0IGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDEwNzZtcyAoZnJvbSBjYWNoZSlcbiAgICAgbnBtIGh0dHAgZmV0Y2ggREVMRVRFIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEvLXJldi8xOC1kOGViZTMwMjBiZDRhYzljIDIybXNcbiAgICovXG4gIHJvdXRlci5kZWxldGUoJy86cGFja2FnZS8tcmV2LyonLCBjYW4oJ3VucHVibGlzaCcpLCB1blB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2UpKTtcblxuICAvLyByZW1vdmluZyBhIHRhcmJhbGxcbiAgcm91dGVyLmRlbGV0ZSgnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLy1yZXYvOnJldmlzaW9uJywgY2FuKCd1bnB1Ymxpc2gnKSwgY2FuKCdwdWJsaXNoJyksIHJlbW92ZVRhcmJhbGwoc3RvcmFnZSkpO1xuXG4gIC8vIHVwbG9hZGluZyBwYWNrYWdlIHRhcmJhbGxcbiAgcm91dGVyLnB1dCgnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLyonLCBjYW4oJ3B1Ymxpc2gnKSwgbWVkaWEoSEVBREVSUy5PQ1RFVF9TVFJFQU0pLCB1cGxvYWRQYWNrYWdlVGFyYmFsbChzdG9yYWdlKSk7XG5cbiAgLy8gYWRkaW5nIGEgdmVyc2lvblxuICByb3V0ZXIucHV0KCcvOnBhY2thZ2UvOnZlcnNpb24vLXRhZy86dGFnJywgY2FuKCdwdWJsaXNoJyksIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSwgZXhwZWN0SnNvbiwgYWRkVmVyc2lvbihzdG9yYWdlKSk7XG59XG5cbi8qKlxuICogUHVibGlzaCBhIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlciwgY29uZmlnOiBDb25maWcsIGF1dGg6IElBdXRoKTogYW55IHtcbiAgY29uc3Qgc3RhckFwaSA9IHN0YXIoc3RvcmFnZSk7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBkZWJ1ZygncHVibGlzaGluZyBvciB1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAvKipcbiAgICAgKiBXcml0ZSB0YXJiYWxsIG9mIHN0cmVhbSBkYXRhIGZyb20gcGFja2FnZSBjbGllbnRzLlxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZVRhcmJhbGwgPSBmdW5jdGlvbiAoZmlsZW5hbWU6IHN0cmluZywgZGF0YSwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBzdG9yYWdlLmFkZFRhcmJhbGwocGFja2FnZU5hbWUsIGZpbGVuYW1lKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNiKGVycik7XG4gICAgICB9KTtcbiAgICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2IoKTtcbiAgICAgIH0pO1xuICAgICAgLy8gdGhpcyBpcyBkdW1iIGFuZCBtZW1vcnktY29uc3VtaW5nLCBidXQgd2hhdCBjaG9pY2VzIGRvIHdlIGhhdmU/XG4gICAgICAvLyBmbG93OiB3ZSBuZWVkIGZpcnN0IHJlZmFjdG9yIHRoaXMgZmlsZSBiZWZvcmUgZGVjaWRlcyB3aGljaCB0eXBlIHVzZSBoZXJlXG4gICAgICBzdHJlYW0uZW5kKEJ1ZmZlci5mcm9tKGRhdGEuZGF0YSwgJ2Jhc2U2NCcpKTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgcGFja2FnZSB2ZXJzaW9uIGluIHN0b3JhZ2VcbiAgICAgKi9cbiAgICBjb25zdCBjcmVhdGVWZXJzaW9uID0gZnVuY3Rpb24gKHZlcnNpb246IHN0cmluZywgbWV0YWRhdGE6IFZlcnNpb24sIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCBtZXRhZGF0YSwgbnVsbCwgY2IpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbmV3IHRhZ3MgaW4gc3RvcmFnZVxuICAgICAqL1xuICAgIGNvbnN0IGFkZFRhZ3MgPSBmdW5jdGlvbiAodGFnczogTWVyZ2VUYWdzLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHBhY2thZ2VOYW1lLCB0YWdzLCBjYik7XG4gICAgfTtcblxuICAgIGNvbnN0IGFmdGVyQ2hhbmdlID0gZnVuY3Rpb24gKGVycm9yLCBva01lc3NhZ2UsIG1ldGFkYXRhKTogdm9pZCB7XG4gICAgICBjb25zdCBtZXRhZGF0YUNvcHk6IFBhY2thZ2UgPSB7IC4uLm1ldGFkYXRhIH07XG5cbiAgICAgIGNvbnN0IHsgX2F0dGFjaG1lbnRzLCB2ZXJzaW9ucyB9ID0gbWV0YWRhdGFDb3B5O1xuXG4gICAgICAvLyBgbnBtIHN0YXJgIHdvdWxkbid0IGhhdmUgYXR0YWNobWVudHNcbiAgICAgIC8vIGFuZCBgbnBtIGRlcHJlY2F0ZWAgd291bGQgaGF2ZSBhdHRhY2htZW50cyBhcyBhIGVtcHR5IG9iamVjdCwgaS5lIHt9XG4gICAgICBpZiAoXy5pc05pbChfYXR0YWNobWVudHMpIHx8IEpTT04uc3RyaW5naWZ5KF9hdHRhY2htZW50cykgPT09ICd7fScpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogb2tNZXNzYWdlLFxuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBucG0tcmVnaXN0cnktY2xpZW50IDAuMysgZW1iZWRzIHRhcmJhbGwgaW50byB0aGUganNvbiB1cGxvYWRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3MvbnBtLXJlZ2lzdHJ5LWNsaWVudC9jb21taXQvZTlmYmViOGI2N2YyNDkzOTRmNzM1Yzc0ZWYxMWZlNDcyMGQ0NmNhMFxuICAgICAgLy8gaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL3JsaWR3a2Evc2lub3BpYS9pc3N1ZXMvMzEsIGRlYWxpbmcgd2l0aCBpdCBoZXJlOlxuICAgICAgY29uc3QgaXNJbnZhbGlkQm9keUZvcm1hdCA9IGlzT2JqZWN0KF9hdHRhY2htZW50cykgPT09IGZhbHNlIHx8IGhhc0RpZmZPbmVLZXkoX2F0dGFjaG1lbnRzKSB8fCBpc09iamVjdCh2ZXJzaW9ucykgPT09IGZhbHNlIHx8IGhhc0RpZmZPbmVLZXkodmVyc2lvbnMpO1xuXG4gICAgICBpZiAoaXNJbnZhbGlkQm9keUZvcm1hdCkge1xuICAgICAgICAvLyBucG0gaXMgZG9pbmcgc29tZXRoaW5nIHN0cmFuZ2UgYWdhaW5cbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIGluIG5vcm1hbCBjaXJjdW1zdGFuY2VzLCByZXBvcnQgaXQgYXMgYSBidWdcbiAgICAgICAgbG9nZ2VyLmluZm8oeyBwYWNrYWdlTmFtZSB9LCBgd3JvbmcgcGFja2FnZSBmb3JtYXQgb24gcHVibGlzaCBhIHBhY2thZ2UgQHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoQVBJX0VSUk9SLlVOU1VQT1JURURfUkVHSVNUUllfQ0FMTCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzICE9PSBIVFRQX1NUQVRVUy5DT05GTElDVCkge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQgZG9jdW1lbnQgaXMgZWl0aGVyIGNyZWF0ZWQgb3IgZXhpc3RlZCBiZWZvcmVcbiAgICAgIGNvbnN0IFtmaXJzdEF0dGFjaG1lbnRLZXldID0gT2JqZWN0LmtleXMoX2F0dGFjaG1lbnRzKTtcblxuICAgICAgY3JlYXRlVGFyYmFsbChQYXRoLmJhc2VuYW1lKGZpcnN0QXR0YWNobWVudEtleSksIF9hdHRhY2htZW50c1tmaXJzdEF0dGFjaG1lbnRLZXldLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmVyc2lvblRvUHVibGlzaCA9IE9iamVjdC5rZXlzKHZlcnNpb25zKVswXTtcbiAgICAgICAgY29uc3QgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoID0gdmVyc2lvbnNbdmVyc2lvblRvUHVibGlzaF07XG5cbiAgICAgICAgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSA9IF8uaXNOaWwodmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSkgPT09IGZhbHNlID8gU3RyaW5nKHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUpIDogJyc7XG5cbiAgICAgICAgY3JlYXRlVmVyc2lvbih2ZXJzaW9uVG9QdWJsaXNoLCB2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFkZFRhZ3MobWV0YWRhdGFDb3B5W0RJU1RfVEFHU10sIGFzeW5jIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgbm90aWZ5KG1ldGFkYXRhQ29weSwgY29uZmlnLCByZXEucmVtb3RlX3VzZXIsIGAke21ldGFkYXRhQ29weS5uYW1lfUAke3ZlcnNpb25Ub1B1Ymxpc2h9YCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBlcnJvciB9LCAnbm90aWZ5IGJhdGNoIHNlcnZpY2UgaGFzIGZhaWxlZDogQHtlcnJvcn0nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KHsgb2s6IG9rTWVzc2FnZSwgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgaWYgKGlzUHVibGlzaGFibGVQYWNrYWdlKHJlcS5ib2R5KSA9PT0gZmFsc2UgJiYgaXNPYmplY3QocmVxLmJvZHkudXNlcnMpKSB7XG4gICAgICByZXR1cm4gc3RhckFwaShyZXEsIHJlcywgbmV4dCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gdmFsaWRhdGVNZXRhZGF0YShyZXEuYm9keSwgcGFja2FnZU5hbWUpO1xuICAgICAgLy8gY2hlY2sgX2F0dGFjaG1lbnRzIHRvIGRpc3Rpbmd1aXNoIHB1Ymxpc2ggYW5kIGRlcHJlY2F0ZVxuICAgICAgaWYgKHJlcS5wYXJhbXMuX3JldiB8fCAoaXNSZWxhdGVkVG9EZXByZWNhdGlvbihyZXEuYm9keSkgJiYgXy5pc0VtcHR5KHJlcS5ib2R5Ll9hdHRhY2htZW50cykpKSB7XG4gICAgICAgIGRlYnVnKCd1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgLy8gd2UgY2hlY2sgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCBhbiB1cGRhdGUgaXMgYmFzaWNhbGx5IHJlbW92ZSB2ZXJzaW9uc1xuICAgICAgICBjb25zdCByZW1vdGUgPSByZXEucmVtb3RlX3VzZXI7XG4gICAgICAgIGF1dGguYWxsb3dfdW5wdWJsaXNoKHsgcGFja2FnZU5hbWUgfSwgcmVtb3RlLCAoZXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lIH0sIGBub3QgYWxsb3dlZCB0byB1bnB1Ymxpc2ggYSB2ZXJzaW9uIGZvciBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdG9yYWdlLmNoYW5nZVBhY2thZ2UocGFja2FnZU5hbWUsIG1ldGFkYXRhLCByZXEucGFyYW1zLnJldmlzaW9uLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ0hBTkdFRCwgbWV0YWRhdGEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYnVnKCdhZGRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIHN0b3JhZ2UuYWRkUGFja2FnZShwYWNrYWdlTmFtZSwgbWV0YWRhdGEsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ1JFQVRFRCwgbWV0YWRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKHsgcGFja2FnZU5hbWUgfSwgJ2Vycm9yIG9uIHB1Ymxpc2gsIGJhZCBwYWNrYWdlIGRhdGEgZm9yIEB7cGFja2FnZU5hbWV9Jyk7XG4gICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkRGF0YShBUElfRVJST1IuQkFEX1BBQ0tBR0VfREFUQSkpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiB1bi1wdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5QdWJsaXNoUGFja2FnZShzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCd1bnB1Ymxpc2hpbmcgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgc3RvcmFnZS5yZW1vdmVQYWNrYWdlKHBhY2thZ2VOYW1lLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuUEtHX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVsZXRlIHRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRhcmJhbGwoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBjb25zdCB7IGZpbGVuYW1lLCByZXZpc2lvbiB9ID0gcmVxLnBhcmFtcztcbiAgICBkZWJ1ZygncmVtb3ZpbmcgYSB0YXJiYWxsIGZvciAlby0lby0lbycsIHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24pO1xuICAgIHN0b3JhZ2UucmVtb3ZlVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgZGVidWcoJ3N1Y2Nlc3MgcmVtb3ZlIHRhcmJhbGwgZm9yICVvLSVvLSVvJywgcGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbik7XG4gICAgICByZXR1cm4gbmV4dCh7IG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG4vKipcbiAqIEFkZHMgYSBuZXcgdmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkVmVyc2lvbihzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmVyc2lvbiwgdGFnIH0gPSByZXEucGFyYW1zO1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCByZXEuYm9keSwgdGFnLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5QS0dfUFVCTElTSEVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogdXBsb2FkUGFja2FnZVRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwbG9hZFBhY2thZ2VUYXJiYWxsKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5hZGRUYXJiYWxsKHBhY2thZ2VOYW1lLCByZXEucGFyYW1zLmZpbGVuYW1lKTtcbiAgICByZXEucGlwZShzdHJlYW0pO1xuXG4gICAgLy8gY2hlY2tpbmcgaWYgZW5kIGV2ZW50IGNhbWUgYmVmb3JlIGNsb3NpbmdcbiAgICBsZXQgY29tcGxldGUgPSBmYWxzZTtcbiAgICByZXEub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfSk7XG5cbiAgICByZXEub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb21wbGV0ZSkge1xuICAgICAgICBzdHJlYW0uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1VQTE9BREVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG4iXX0=
|
|
391
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3B1Ymxpc2gudHMiXSwibmFtZXMiOlsiZGVidWciLCJwdWJsaXNoIiwicm91dGVyIiwiYXV0aCIsInN0b3JhZ2UiLCJjb25maWciLCJjYW4iLCJwdXQiLCJtaW1lIiwiZ2V0VHlwZSIsImV4cGVjdEpzb24iLCJwdWJsaXNoUGFja2FnZSIsImRlbGV0ZSIsInVuUHVibGlzaFBhY2thZ2UiLCJyZW1vdmVUYXJiYWxsIiwiSEVBREVSUyIsIk9DVEVUX1NUUkVBTSIsInVwbG9hZFBhY2thZ2VUYXJiYWxsIiwiYWRkVmVyc2lvbiIsInN0YXJBcGkiLCJyZXEiLCJyZXMiLCJuZXh0IiwicGFja2FnZU5hbWUiLCJwYXJhbXMiLCJwYWNrYWdlIiwiY3JlYXRlVGFyYmFsbCIsImZpbGVuYW1lIiwiZGF0YSIsImNiIiwic3RyZWFtIiwiYWRkVGFyYmFsbCIsIm9uIiwiZXJyIiwiZW5kIiwiQnVmZmVyIiwiZnJvbSIsImRvbmUiLCJjcmVhdGVWZXJzaW9uIiwidmVyc2lvbiIsIm1ldGFkYXRhIiwiYWRkVGFncyIsInRhZ3MiLCJtZXJnZVRhZ3MiLCJhZnRlckNoYW5nZSIsImVycm9yIiwib2tNZXNzYWdlIiwibWV0YWRhdGFDb3B5IiwiX2F0dGFjaG1lbnRzIiwidmVyc2lvbnMiLCJfIiwiaXNOaWwiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJDUkVBVEVEIiwib2siLCJzdWNjZXNzIiwiaXNJbnZhbGlkQm9keUZvcm1hdCIsImxvZ2dlciIsImluZm8iLCJFcnJvckNvZGUiLCJnZXRCYWRSZXF1ZXN0IiwiQVBJX0VSUk9SIiwiVU5TVVBPUlRFRF9SRUdJU1RSWV9DQUxMIiwiQ09ORkxJQ1QiLCJmaXJzdEF0dGFjaG1lbnRLZXkiLCJPYmplY3QiLCJrZXlzIiwiUGF0aCIsImJhc2VuYW1lIiwidmVyc2lvblRvUHVibGlzaCIsInZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCIsInJlYWRtZSIsIlN0cmluZyIsIkRJU1RfVEFHUyIsInJlbW90ZV91c2VyIiwibmFtZSIsImJvZHkiLCJ1c2VycyIsIl9yZXYiLCJpc0VtcHR5IiwicmVtb3RlIiwiYWxsb3dfdW5wdWJsaXNoIiwiY2hhbmdlUGFja2FnZSIsInJldmlzaW9uIiwiQVBJX01FU1NBR0UiLCJQS0dfQ0hBTkdFRCIsImFkZFBhY2thZ2UiLCJQS0dfQ1JFQVRFRCIsImdldEJhZERhdGEiLCJCQURfUEFDS0FHRV9EQVRBIiwicmVtb3ZlUGFja2FnZSIsIlBLR19SRU1PVkVEIiwiVEFSQkFMTF9SRU1PVkVEIiwidGFnIiwiUEtHX1BVQkxJU0hFRCIsInBpcGUiLCJjb21wbGV0ZSIsImFib3J0IiwibG9jYWxzIiwicmVwb3J0X2Vycm9yIiwiVEFSQkFMTF9VUExPQURFRCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBS0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxNQUFNQSxLQUFLLEdBQUcsb0JBQVcsbUJBQVgsQ0FBZDs7QUFFZSxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUFpQ0MsSUFBakMsRUFBOENDLE9BQTlDLEVBQXdFQyxNQUF4RSxFQUE4RjtBQUMzRyxRQUFNQyxHQUFHLEdBQUcsdUJBQU1ILElBQU4sQ0FBWjtBQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QU8sQ0FBQzJCLFVBQVIsQ0FBbUJSLFdBQW5CLEVBQWdDSCxHQUFHLENBQUNJLE1BQUosQ0FBV0csUUFBM0MsQ0FBZjtBQUNBUCxJQUFBQSxHQUFHLENBQUM4RSxJQUFKLENBQVNwRSxNQUFULEVBSHdGLENBS3hGOztBQUNBLFFBQUlxRSxRQUFRLEdBQUcsS0FBZjtBQUNBL0UsSUFBQUEsR0FBRyxDQUFDWSxFQUFKLENBQU8sS0FBUCxFQUFjLFlBQVk7QUFDeEJtRSxNQUFBQSxRQUFRLEdBQUcsSUFBWDtBQUNBckUsTUFBQUEsTUFBTSxDQUFDTyxJQUFQO0FBQ0QsS0FIRDtBQUtBakIsSUFBQUEsR0FBRyxDQUFDWSxFQUFKLENBQU8sT0FBUCxFQUFnQixZQUFZO0FBQzFCLFVBQUksQ0FBQ21FLFFBQUwsRUFBZTtBQUNickUsUUFBQUEsTUFBTSxDQUFDc0UsS0FBUDtBQUNEO0FBQ0YsS0FKRDtBQU1BdEUsSUFBQUEsTUFBTSxDQUFDRSxFQUFQLENBQVUsT0FBVixFQUFtQixVQUFVQyxHQUFWLEVBQWU7QUFDaEMsYUFBT1osR0FBRyxDQUFDZ0YsTUFBSixDQUFXQyxZQUFYLENBQXdCckUsR0FBeEIsQ0FBUDtBQUNELEtBRkQ7QUFJQUgsSUFBQUEsTUFBTSxDQUFDRSxFQUFQLENBQVUsU0FBVixFQUFxQixZQUFZO0FBQy9CWCxNQUFBQSxHQUFHLENBQUNpQyxNQUFKLENBQVdDLHVCQUFZQyxPQUF2QjtBQUNBLGFBQU9sQyxJQUFJLENBQUM7QUFDVm1DLFFBQUFBLEVBQUUsRUFBRThCLHVCQUFZZ0I7QUFETixPQUFELENBQVg7QUFHRCxLQUxEO0FBTUQsR0E1QkQ7QUE2QkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lJztcbmltcG9ydCBQYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyBDYWxsYmFjaywgQ29uZmlnLCBNZXJnZVRhZ3MsIFBhY2thZ2UsIFZlcnNpb24gfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcblxuaW1wb3J0IHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCwgSUF1dGgsIElTdG9yYWdlSGFuZGxlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgQVBJX01FU1NBR0UsIERJU1RfVEFHUywgSEVBREVSUywgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHsgbm90aWZ5IH0gZnJvbSAnLi4vLi4vLi4vbGliL25vdGlmeSc7XG5pbXBvcnQgeyBpc1B1Ymxpc2hhYmxlUGFja2FnZSB9IGZyb20gJy4uLy4uLy4uL2xpYi9zdG9yYWdlLXV0aWxzJztcbmltcG9ydCB7IEVycm9yQ29kZSwgaGFzRGlmZk9uZUtleSwgaXNPYmplY3QsIGlzUmVsYXRlZFRvRGVwcmVjYXRpb24sIHZhbGlkYXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgYWxsb3csIGV4cGVjdEpzb24sIG1lZGlhIH0gZnJvbSAnLi4vLi4vbWlkZGxld2FyZSc7XG5pbXBvcnQgc3RhciBmcm9tICcuL3N0YXInO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzpwdWJsaXNoJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHB1Ymxpc2gocm91dGVyOiBSb3V0ZXIsIGF1dGg6IElBdXRoLCBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgpO1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSAvIHVwZGF0ZSBwYWNrYWdlIC8gdW4vc3RhcnQgYSBwYWNrYWdlXG4gICAqXG4gICAqIFRoZXJlIGFyZSBtdWx0aXBsZXMgc2NlbmFyaW9zIGhlcmUgdG8gYmUgY29uc2lkZXJlZDpcbiAgICpcbiAgICogMS4gUHVibGlzaCBzY2VuYXJpb1xuICAgKlxuICAgKiBQdWJsaXNoIGEgcGFja2FnZSBjb25zaXN0IG9mIGF0IGxlYXN0IDEgc3RlcCAoUFVUKSB3aXRoIGEgbWV0YWRhdGEgcGF5bG9hZC5cbiAgICogV2hlbiBhIHBhY2thZ2UgaXMgcHVibGlzaGVkLCBhbiBfYXR0YWNobWVudCBwcm9wZXJ0eSBpcyBwcmVzZW50IHRoYXQgY29udGFpbnMgdGhlIGRhdGFcbiAgICogb2YgdGhlIHRhcmJhbGwuXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiBwdWJsaXNoLlxuICAgKlxuICAgKiAgbnBtIGh0dHAgZmV0Y2ggUFVUIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEgOTYyN21zXG4gICAgICBucG0gaW5mbyBsaWZlY3ljbGUgQHNjb3BlL3Rlc3QxQDEuMC4xfnB1Ymxpc2g6IEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIGluZm8gbGlmZWN5Y2xlIEBzY29wZS90ZXN0MUAxLjAuMX5wb3N0cHVibGlzaDogQHNjb3BlL3Rlc3QxQDEuMC4xXG4gICAgICArIEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgbnBtIHZlcmIgZXhpdCBbIDAsIHRydWUgXVxuICAgKlxuICAgKlxuICAgKiAyLiBVbnB1Ymxpc2ggc2NlbmFyaW9cbiAgICpcbiAgICogVW5wdWJsaXNoIGNvbnNpc3QgaW4gMyBzdGVwcy5cbiAgICogIDEuIFRyeSB0byBmZXRjaCAgbWV0YWRhdGEgLT4gaWYgaXQgZmFpbHMsIHJldHVybiA0MDRcbiAgICogIDIuIENvbXB1dGUgbWV0YWRhdGEgbG9jYWxseSAoY2xpZW50IHNpZGUpIGFuZCBzZW5kIGEgbXV0YXRlIHBheWxvYWQgZXhjbHVkaW5nIHRoZSB2ZXJzaW9uIHRvIGJlIHVucHVibGlzaGVkXG4gICAqICAgIGVnOiBpZiBtZXRhZGF0YSByZWZsZWN0cyAxLjAuMSwgMS4wLjIgYW5kIDEuMC4zLCB0aGUgY29tcHV0ZWQgbWV0YWRhdGEgd29uJ3QgaW5jbHVkZSAxLjAuMy5cbiAgICogIDMuIE9uY2UgdGhlIHNlY29uZCBzdGVwIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZCwgZGVsZXRlIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiAgQWxsIHRoZXNlIHN0ZXBzIGFyZSBjb25zZWN1dGl2ZSBhbmQgcmVxdWlyZWQsIHRoZXJlIGlzIG5vIHRyYW5zYWNpb25zIGhlcmUsIGlmIHN0ZXAgMyBmYWlscywgbWV0YWRhdGEgbWlnaHRcbiAgICogIGdldCBjb3JydXB0ZWQuXG4gICAqXG4gICAqICBOb3RlIHRoZSB1bnB1Ymxpc2ggY2FsbCB3aWxsIHN1ZmZpeCBpbiB0aGUgdXJsIGEgLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCByZXZpc2lvbiBudW1iZXIsIHRoaXMgbm90XG4gICAqICB1c2VkIGludGVybmFsbHkuXG4gICAqXG4gICAqXG4gICAqIEV4YW1wbGUgZmxvdyBvZiB1bnB1Ymxpc2guXG4gICAqXG4gICAqIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTY4MG1zXG4gICAgIG5wbSBodHRwIGZldGNoIFBVVCAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTQtNWQ1MDBjZmNlOTJmOTBmZCA5NTY2MDZtcyBhdHRlbXB0ICMyXG4gICAgIG5wbSBodHRwIGZldGNoIEdFVCAyMDAgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTYwMW1zXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy0vdGVzdDEtMS4wLjMudGd6Ly1yZXYvMTYtZTExYzhkYjI4MmIyZDk5MiAxOW1zXG4gICAqXG4gICAqIDMuIFN0YXIgYSBwYWNrYWdlXG4gICAqXG4gICAqIFBlcm1pc3Npb25zOiBzdGFydCBhIHBhY2thZ2UgZGVwZW5kcyBvZiB0aGUgcHVibGlzaCBhbmQgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCB0aGVyZSBpcyBubyBzcGVjaWZpYyBmbGFnIGZvciBzdGFyIG9yIHVuIHN0YXJ0LlxuICAgKiBUaGUgVVJMIGZvciBzdGFyIGlzIHNpbWlsYXIgdG8gdGhlIHVucHVibGlzaCAoY2hhbmdlIHBhY2thZ2UgZm9ybWF0KVxuICAgKlxuICAgKiBucG0gaGFzIG5vIGVucG9pbnQgZm9yIHN0YXIgYSBwYWNrYWdlLCByYXRoZXIgbXV0YXRlIHRoZSBtZXRhZGF0YSBhbmQgYWN0cyBhcywgdGhlIGRpZmZlcmVuY2UgaXMgdGhlXG4gICAqIHVzZXJzIHByb3BlcnR5IHdoaWNoIGlzIHBhcnQgb2YgdGhlIHBheWxvYWQgYW5kIHRoZSBib2R5IG9ubHkgaW5jbHVkZXNcbiAgICpcbiAgICoge1xuXHRcdCAgXCJfaWRcIjogcGtnTmFtZSxcblx0ICBcdFwiX3JldlwiOiBcIjMtYjBjZGFlZmM5YmRiNzdjOFwiLFxuXHRcdCAgXCJ1c2Vyc1wiOiB7XG5cdFx0ICAgIFt1c2VybmFtZV06IGJvb2xlYW4gdmFsdWUgKHRydWUsIGZhbHNlKVxuXHRcdCAgfVxuXHR9XG4gICAqXG4gICAqL1xuICByb3V0ZXIucHV0KCcvOnBhY2thZ2UvOl9yZXY/LzpyZXZpc2lvbj8nLCBjYW4oJ3B1Ymxpc2gnKSwgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLCBleHBlY3RKc29uLCBwdWJsaXNoUGFja2FnZShzdG9yYWdlLCBjb25maWcsIGF1dGgpKTtcblxuICAvKipcbiAgICogVW4tcHVibGlzaGluZyBhbiBlbnRpcmUgcGFja2FnZS5cbiAgICpcbiAgICogVGhpcyBzY2VuYXJpbyBoYXBwZW5zIHdoZW4gdGhlIGZpcnN0IGNhbGwgZGV0ZWN0IHRoZXJlIGlzIG9ubHkgb25lIHZlcnNpb24gcmVtYWluaW5nXG4gICAqIGluIHRoZSBtZXRhZGF0YSwgdGhlbiB0aGUgY2xpZW50IGRlY2lkZXMgdG8gREVMRVRFIHRoZSByZXNvdXJjZVxuICAgKiBucG0gaHR0cCBmZXRjaCBHRVQgMzA0IGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDEwNzZtcyAoZnJvbSBjYWNoZSlcbiAgICAgbnBtIGh0dHAgZmV0Y2ggREVMRVRFIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEvLXJldi8xOC1kOGViZTMwMjBiZDRhYzljIDIybXNcbiAgICovXG4gIHJvdXRlci5kZWxldGUoJy86cGFja2FnZS8tcmV2LyonLCBjYW4oJ3VucHVibGlzaCcpLCB1blB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2UpKTtcblxuICAvLyByZW1vdmluZyBhIHRhcmJhbGxcbiAgcm91dGVyLmRlbGV0ZSgnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLy1yZXYvOnJldmlzaW9uJywgY2FuKCd1bnB1Ymxpc2gnKSwgY2FuKCdwdWJsaXNoJyksIHJlbW92ZVRhcmJhbGwoc3RvcmFnZSkpO1xuXG4gIC8vIHVwbG9hZGluZyBwYWNrYWdlIHRhcmJhbGxcbiAgcm91dGVyLnB1dCgnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLyonLCBjYW4oJ3B1Ymxpc2gnKSwgbWVkaWEoSEVBREVSUy5PQ1RFVF9TVFJFQU0pLCB1cGxvYWRQYWNrYWdlVGFyYmFsbChzdG9yYWdlKSk7XG5cbiAgLy8gYWRkaW5nIGEgdmVyc2lvblxuICByb3V0ZXIucHV0KCcvOnBhY2thZ2UvOnZlcnNpb24vLXRhZy86dGFnJywgY2FuKCdwdWJsaXNoJyksIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSwgZXhwZWN0SnNvbiwgYWRkVmVyc2lvbihzdG9yYWdlKSk7XG59XG5cbi8qKlxuICogUHVibGlzaCBhIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlciwgY29uZmlnOiBDb25maWcsIGF1dGg6IElBdXRoKTogYW55IHtcbiAgY29uc3Qgc3RhckFwaSA9IHN0YXIoc3RvcmFnZSk7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBkZWJ1ZygncHVibGlzaGluZyBvciB1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAvKipcbiAgICAgKiBXcml0ZSB0YXJiYWxsIG9mIHN0cmVhbSBkYXRhIGZyb20gcGFja2FnZSBjbGllbnRzLlxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZVRhcmJhbGwgPSBmdW5jdGlvbiAoZmlsZW5hbWU6IHN0cmluZywgZGF0YSwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBzdG9yYWdlLmFkZFRhcmJhbGwocGFja2FnZU5hbWUsIGZpbGVuYW1lKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNiKGVycik7XG4gICAgICB9KTtcbiAgICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2IoKTtcbiAgICAgIH0pO1xuICAgICAgLy8gdGhpcyBpcyBkdW1iIGFuZCBtZW1vcnktY29uc3VtaW5nLCBidXQgd2hhdCBjaG9pY2VzIGRvIHdlIGhhdmU/XG4gICAgICAvLyBmbG93OiB3ZSBuZWVkIGZpcnN0IHJlZmFjdG9yIHRoaXMgZmlsZSBiZWZvcmUgZGVjaWRlcyB3aGljaCB0eXBlIHVzZSBoZXJlXG4gICAgICBzdHJlYW0uZW5kKEJ1ZmZlci5mcm9tKGRhdGEuZGF0YSwgJ2Jhc2U2NCcpKTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgcGFja2FnZSB2ZXJzaW9uIGluIHN0b3JhZ2VcbiAgICAgKi9cbiAgICBjb25zdCBjcmVhdGVWZXJzaW9uID0gZnVuY3Rpb24gKHZlcnNpb246IHN0cmluZywgbWV0YWRhdGE6IFZlcnNpb24sIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCBtZXRhZGF0YSwgbnVsbCwgY2IpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbmV3IHRhZ3MgaW4gc3RvcmFnZVxuICAgICAqL1xuICAgIGNvbnN0IGFkZFRhZ3MgPSBmdW5jdGlvbiAodGFnczogTWVyZ2VUYWdzLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHBhY2thZ2VOYW1lLCB0YWdzLCBjYik7XG4gICAgfTtcblxuICAgIGNvbnN0IGFmdGVyQ2hhbmdlID0gZnVuY3Rpb24gKGVycm9yLCBva01lc3NhZ2UsIG1ldGFkYXRhKTogdm9pZCB7XG4gICAgICBjb25zdCBtZXRhZGF0YUNvcHk6IFBhY2thZ2UgPSB7IC4uLm1ldGFkYXRhIH07XG5cbiAgICAgIGNvbnN0IHsgX2F0dGFjaG1lbnRzLCB2ZXJzaW9ucyB9ID0gbWV0YWRhdGFDb3B5O1xuXG4gICAgICAvLyBgbnBtIHN0YXJgIHdvdWxkbid0IGhhdmUgYXR0YWNobWVudHNcbiAgICAgIC8vIGFuZCBgbnBtIGRlcHJlY2F0ZWAgd291bGQgaGF2ZSBhdHRhY2htZW50cyBhcyBhIGVtcHR5IG9iamVjdCwgaS5lIHt9XG4gICAgICBpZiAoXy5pc05pbChfYXR0YWNobWVudHMpIHx8IEpTT04uc3RyaW5naWZ5KF9hdHRhY2htZW50cykgPT09ICd7fScpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogb2tNZXNzYWdlLFxuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBucG0tcmVnaXN0cnktY2xpZW50IDAuMysgZW1iZWRzIHRhcmJhbGwgaW50byB0aGUganNvbiB1cGxvYWRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3MvbnBtLXJlZ2lzdHJ5LWNsaWVudC9jb21taXQvZTlmYmViOGI2N2YyNDkzOTRmNzM1Yzc0ZWYxMWZlNDcyMGQ0NmNhMFxuICAgICAgLy8gaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL3JsaWR3a2Evc2lub3BpYS9pc3N1ZXMvMzEsIGRlYWxpbmcgd2l0aCBpdCBoZXJlOlxuICAgICAgY29uc3QgaXNJbnZhbGlkQm9keUZvcm1hdCA9IGlzT2JqZWN0KF9hdHRhY2htZW50cykgPT09IGZhbHNlIHx8IGhhc0RpZmZPbmVLZXkoX2F0dGFjaG1lbnRzKSB8fCBpc09iamVjdCh2ZXJzaW9ucykgPT09IGZhbHNlIHx8IGhhc0RpZmZPbmVLZXkodmVyc2lvbnMpO1xuXG4gICAgICBpZiAoaXNJbnZhbGlkQm9keUZvcm1hdCkge1xuICAgICAgICAvLyBucG0gaXMgZG9pbmcgc29tZXRoaW5nIHN0cmFuZ2UgYWdhaW5cbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIGluIG5vcm1hbCBjaXJjdW1zdGFuY2VzLCByZXBvcnQgaXQgYXMgYSBidWdcbiAgICAgICAgbG9nZ2VyLmluZm8oeyBwYWNrYWdlTmFtZSB9LCBgd3JvbmcgcGFja2FnZSBmb3JtYXQgb24gcHVibGlzaCBhIHBhY2thZ2UgQHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoQVBJX0VSUk9SLlVOU1VQT1JURURfUkVHSVNUUllfQ0FMTCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzICE9PSBIVFRQX1NUQVRVUy5DT05GTElDVCkge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQgZG9jdW1lbnQgaXMgZWl0aGVyIGNyZWF0ZWQgb3IgZXhpc3RlZCBiZWZvcmVcbiAgICAgIGNvbnN0IFtmaXJzdEF0dGFjaG1lbnRLZXldID0gT2JqZWN0LmtleXMoX2F0dGFjaG1lbnRzKTtcblxuICAgICAgY3JlYXRlVGFyYmFsbChQYXRoLmJhc2VuYW1lKGZpcnN0QXR0YWNobWVudEtleSksIF9hdHRhY2htZW50c1tmaXJzdEF0dGFjaG1lbnRLZXldLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmVyc2lvblRvUHVibGlzaCA9IE9iamVjdC5rZXlzKHZlcnNpb25zKVswXTtcbiAgICAgICAgY29uc3QgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoID0gdmVyc2lvbnNbdmVyc2lvblRvUHVibGlzaF07XG5cbiAgICAgICAgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSA9IF8uaXNOaWwodmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSkgPT09IGZhbHNlID8gU3RyaW5nKHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUpIDogJyc7XG5cbiAgICAgICAgY3JlYXRlVmVyc2lvbih2ZXJzaW9uVG9QdWJsaXNoLCB2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFkZFRhZ3MobWV0YWRhdGFDb3B5W0RJU1RfVEFHU10sIGFzeW5jIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgbm90aWZ5KG1ldGFkYXRhQ29weSwgY29uZmlnLCByZXEucmVtb3RlX3VzZXIsIGAke21ldGFkYXRhQ29weS5uYW1lfUAke3ZlcnNpb25Ub1B1Ymxpc2h9YCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBlcnJvciB9LCAnbm90aWZ5IGJhdGNoIHNlcnZpY2UgaGFzIGZhaWxlZDogQHtlcnJvcn0nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KHsgb2s6IG9rTWVzc2FnZSwgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgaWYgKGlzUHVibGlzaGFibGVQYWNrYWdlKHJlcS5ib2R5KSA9PT0gZmFsc2UgJiYgaXNPYmplY3QocmVxLmJvZHkudXNlcnMpKSB7XG4gICAgICByZXR1cm4gc3RhckFwaShyZXEsIHJlcywgbmV4dCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gdmFsaWRhdGVNZXRhZGF0YShyZXEuYm9keSwgcGFja2FnZU5hbWUpO1xuICAgICAgLy8gY2hlY2sgX2F0dGFjaG1lbnRzIHRvIGRpc3Rpbmd1aXNoIHB1Ymxpc2ggYW5kIGRlcHJlY2F0ZVxuICAgICAgaWYgKHJlcS5wYXJhbXMuX3JldiB8fCAoaXNSZWxhdGVkVG9EZXByZWNhdGlvbihyZXEuYm9keSkgJiYgXy5pc0VtcHR5KHJlcS5ib2R5Ll9hdHRhY2htZW50cykpKSB7XG4gICAgICAgIGRlYnVnKCd1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgLy8gd2UgY2hlY2sgdW5wdWJsaXNoIHBlcm1pc3Npb25zLCBhbiB1cGRhdGUgaXMgYmFzaWNhbGx5IHJlbW92ZSB2ZXJzaW9uc1xuICAgICAgICBjb25zdCByZW1vdGUgPSByZXEucmVtb3RlX3VzZXI7XG4gICAgICAgIGF1dGguYWxsb3dfdW5wdWJsaXNoKHsgcGFja2FnZU5hbWUgfSwgcmVtb3RlLCAoZXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lIH0sIGBub3QgYWxsb3dlZCB0byB1bnB1Ymxpc2ggYSB2ZXJzaW9uIGZvciBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdG9yYWdlLmNoYW5nZVBhY2thZ2UocGFja2FnZU5hbWUsIG1ldGFkYXRhLCByZXEucGFyYW1zLnJldmlzaW9uLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ0hBTkdFRCwgbWV0YWRhdGEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYnVnKCdhZGRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIHN0b3JhZ2UuYWRkUGFja2FnZShwYWNrYWdlTmFtZSwgbWV0YWRhdGEsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGFmdGVyQ2hhbmdlKGVycm9yLCBBUElfTUVTU0FHRS5QS0dfQ1JFQVRFRCwgbWV0YWRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKHsgcGFja2FnZU5hbWUgfSwgJ2Vycm9yIG9uIHB1Ymxpc2gsIGJhZCBwYWNrYWdlIGRhdGEgZm9yIEB7cGFja2FnZU5hbWV9Jyk7XG4gICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkRGF0YShBUElfRVJST1IuQkFEX1BBQ0tBR0VfREFUQSkpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiB1bi1wdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5QdWJsaXNoUGFja2FnZShzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCd1bnB1Ymxpc2hpbmcgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgc3RvcmFnZS5yZW1vdmVQYWNrYWdlKHBhY2thZ2VOYW1lLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuUEtHX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVsZXRlIHRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRhcmJhbGwoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBjb25zdCB7IGZpbGVuYW1lLCByZXZpc2lvbiB9ID0gcmVxLnBhcmFtcztcbiAgICBkZWJ1ZygncmVtb3ZpbmcgYSB0YXJiYWxsIGZvciAlby0lby0lbycsIHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24pO1xuICAgIHN0b3JhZ2UucmVtb3ZlVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgZGVidWcoJ3N1Y2Nlc3MgcmVtb3ZlIHRhcmJhbGwgZm9yICVvLSVvLSVvJywgcGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbik7XG4gICAgICByZXR1cm4gbmV4dCh7IG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG4vKipcbiAqIEFkZHMgYSBuZXcgdmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkVmVyc2lvbihzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmVyc2lvbiwgdGFnIH0gPSByZXEucGFyYW1zO1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCByZXEuYm9keSwgdGFnLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5QS0dfUFVCTElTSEVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogdXBsb2FkUGFja2FnZVRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwbG9hZFBhY2thZ2VUYXJiYWxsKHN0b3JhZ2U6IElTdG9yYWdlSGFuZGxlcikge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5hZGRUYXJiYWxsKHBhY2thZ2VOYW1lLCByZXEucGFyYW1zLmZpbGVuYW1lKTtcbiAgICByZXEucGlwZShzdHJlYW0pO1xuXG4gICAgLy8gY2hlY2tpbmcgaWYgZW5kIGV2ZW50IGNhbWUgYmVmb3JlIGNsb3NpbmdcbiAgICBsZXQgY29tcGxldGUgPSBmYWxzZTtcbiAgICByZXEub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfSk7XG5cbiAgICByZXEub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb21wbGV0ZSkge1xuICAgICAgICBzdHJlYW0uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1VQTE9BREVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG4iXX0=
|