@angular-devkit/build-angular 15.2.0-rc.0 → 16.0.0-next.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/package.json +17 -17
- package/src/babel/plugins/adjust-static-class-members.js +5 -6
- package/src/babel/plugins/adjust-typescript-enums.js +2 -2
- package/src/babel/plugins/elide-angular-metadata.js +2 -3
- package/src/babel/presets/application.js +7 -8
- package/src/babel/webpack-loader.js +4 -6
- package/src/builders/app-shell/index.js +4 -5
- package/src/builders/browser/index.js +22 -30
- package/src/builders/browser-esbuild/angular/jit-compilation.js +3 -6
- package/src/builders/browser-esbuild/angular/jit-plugin-callbacks.js +3 -5
- package/src/builders/browser-esbuild/angular/jit-resource-transformer.js +2 -3
- package/src/builders/browser-esbuild/angular-compilation.js +6 -8
- package/src/builders/browser-esbuild/angular-host.js +3 -5
- package/src/builders/browser-esbuild/compiler-plugin.js +22 -30
- package/src/builders/browser-esbuild/css-resource-plugin.js +4 -6
- package/src/builders/browser-esbuild/esbuild.js +5 -7
- package/src/builders/browser-esbuild/index.js +15 -18
- package/src/builders/browser-esbuild/javascript-transformer-worker.js +6 -7
- package/src/builders/browser-esbuild/less-plugin.js +3 -4
- package/src/builders/browser-esbuild/license-extractor.js +4 -4
- package/src/builders/browser-esbuild/options.js +10 -11
- package/src/builders/browser-esbuild/profiling.js +5 -6
- package/src/builders/browser-esbuild/sass-plugin.js +5 -6
- package/src/builders/browser-esbuild/stylesheets.js +4 -5
- package/src/builders/browser-esbuild/watcher.js +5 -5
- package/src/builders/dev-server/index.js +14 -19
- package/src/builders/extract-i18n/index.js +7 -8
- package/src/builders/extract-i18n/ivy-extract-loader.js +4 -4
- package/src/builders/karma/find-tests-plugin.js +4 -4
- package/src/builders/karma/index.js +13 -17
- package/src/builders/ng-packagr/index.js +3 -5
- package/src/builders/protractor/index.js +3 -3
- package/src/builders/server/index.js +7 -11
- package/src/sass/rebasing-importer.js +6 -8
- package/src/sass/sass-service-legacy.js +3 -3
- package/src/sass/sass-service.js +7 -10
- package/src/sass/worker-legacy.js +4 -5
- package/src/sass/worker.js +6 -8
- package/src/utils/action-executor.js +2 -3
- package/src/utils/bundle-calculator.js +2 -2
- package/src/utils/i18n-options.js +5 -5
- package/src/utils/index-file/augment-index-html.js +2 -2
- package/src/utils/index-file/index-html-generator.js +5 -8
- package/src/utils/index-file/inline-fonts.js +3 -5
- package/src/utils/load-translations.js +2 -2
- package/src/utils/normalize-asset-patterns.js +2 -2
- package/src/utils/normalize-cache.js +2 -3
- package/src/utils/process-bundle.js +2 -3
- package/src/utils/purge-cache.js +2 -3
- package/src/utils/version.js +3 -3
- package/src/utils/webpack-browser-config.js +3 -5
- package/src/webpack/configs/common.js +6 -7
- package/src/webpack/configs/dev-server.js +2 -3
- package/src/webpack/configs/styles.js +4 -5
- package/src/webpack/plugins/builder-watch-plugin.js +4 -5
- package/src/webpack/plugins/common-js-usage-warn-plugin.js +3 -4
- package/src/webpack/plugins/css-optimizer-plugin.js +4 -4
- package/src/webpack/plugins/dedupe-module-resolve-plugin.js +4 -5
- package/src/webpack/plugins/esbuild-executor.js +3 -3
- package/src/webpack/plugins/hmr/hmr-accept.js +3 -3
- package/src/webpack/plugins/index-html-webpack-plugin.js +2 -3
- package/src/webpack/plugins/javascript-optimizer-plugin.js +3 -3
- package/src/webpack/plugins/javascript-optimizer-worker.js +2 -2
- package/src/webpack/plugins/karma/karma.js +4 -4
- package/src/webpack/plugins/postcss-cli-resources.js +2 -2
- package/src/webpack/plugins/remove-hash-plugin.js +3 -4
- package/src/webpack/plugins/scripts-webpack-plugin.js +2 -3
- package/src/webpack/plugins/styles-webpack-plugin.js +4 -5
- package/src/webpack/plugins/typescript.js +4 -5
- package/src/webpack/plugins/watch-files-logs-plugin.js +3 -3
- package/src/webpack/utils/async-chunks.js +2 -2
- package/src/webpack/utils/helpers.js +3 -4
- package/src/webpack/utils/stats.js +15 -18
package/package.json
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular-devkit/build-angular",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "16.0.0-next.0",
|
|
4
4
|
"description": "Angular Webpack Build Facade",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"typings": "src/index.d.ts",
|
|
7
7
|
"builders": "builders.json",
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@ampproject/remapping": "2.2.0",
|
|
10
|
-
"@angular-devkit/architect": "0.
|
|
11
|
-
"@angular-devkit/build-webpack": "0.
|
|
12
|
-
"@angular-devkit/core": "
|
|
13
|
-
"@babel/core": "7.
|
|
14
|
-
"@babel/generator": "7.
|
|
10
|
+
"@angular-devkit/architect": "0.1600.0-next.0",
|
|
11
|
+
"@angular-devkit/build-webpack": "0.1600.0-next.0",
|
|
12
|
+
"@angular-devkit/core": "16.0.0-next.0",
|
|
13
|
+
"@babel/core": "7.21.0",
|
|
14
|
+
"@babel/generator": "7.21.1",
|
|
15
15
|
"@babel/helper-annotate-as-pure": "7.18.6",
|
|
16
16
|
"@babel/helper-split-export-declaration": "7.18.6",
|
|
17
17
|
"@babel/plugin-proposal-async-generator-functions": "7.20.7",
|
|
18
18
|
"@babel/plugin-transform-async-to-generator": "7.20.7",
|
|
19
|
-
"@babel/plugin-transform-runtime": "7.
|
|
19
|
+
"@babel/plugin-transform-runtime": "7.21.0",
|
|
20
20
|
"@babel/preset-env": "7.20.2",
|
|
21
|
-
"@babel/runtime": "7.
|
|
21
|
+
"@babel/runtime": "7.21.0",
|
|
22
22
|
"@babel/template": "7.20.7",
|
|
23
23
|
"@discoveryjs/json-ext": "0.5.7",
|
|
24
|
-
"@ngtools/webpack": "
|
|
24
|
+
"@ngtools/webpack": "16.0.0-next.0",
|
|
25
25
|
"ansi-colors": "4.1.3",
|
|
26
26
|
"autoprefixer": "10.4.13",
|
|
27
27
|
"babel-loader": "9.1.2",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"copy-webpack-plugin": "11.0.0",
|
|
33
33
|
"critters": "0.0.16",
|
|
34
34
|
"css-loader": "6.7.3",
|
|
35
|
-
"esbuild-wasm": "0.17.
|
|
35
|
+
"esbuild-wasm": "0.17.10",
|
|
36
36
|
"glob": "8.1.0",
|
|
37
37
|
"https-proxy-agent": "5.0.1",
|
|
38
38
|
"inquirer": "8.2.4",
|
|
@@ -42,22 +42,22 @@
|
|
|
42
42
|
"less-loader": "11.1.0",
|
|
43
43
|
"license-webpack-plugin": "4.0.2",
|
|
44
44
|
"loader-utils": "3.2.1",
|
|
45
|
-
"magic-string": "0.
|
|
45
|
+
"magic-string": "0.30.0",
|
|
46
46
|
"mini-css-extract-plugin": "2.7.2",
|
|
47
|
-
"open": "8.4.
|
|
47
|
+
"open": "8.4.2",
|
|
48
48
|
"ora": "5.4.1",
|
|
49
49
|
"parse5-html-rewriting-stream": "7.0.0",
|
|
50
50
|
"piscina": "3.2.0",
|
|
51
51
|
"postcss": "8.4.21",
|
|
52
52
|
"postcss-loader": "7.0.2",
|
|
53
53
|
"resolve-url-loader": "5.0.0",
|
|
54
|
-
"rxjs": "
|
|
55
|
-
"sass": "1.58.
|
|
54
|
+
"rxjs": "7.8.0",
|
|
55
|
+
"sass": "1.58.3",
|
|
56
56
|
"sass-loader": "13.2.0",
|
|
57
57
|
"semver": "7.3.8",
|
|
58
58
|
"source-map-loader": "4.0.1",
|
|
59
59
|
"source-map-support": "0.5.21",
|
|
60
|
-
"terser": "5.16.
|
|
60
|
+
"terser": "5.16.4",
|
|
61
61
|
"text-table": "0.2.0",
|
|
62
62
|
"tree-kill": "1.2.2",
|
|
63
63
|
"tslib": "2.5.0",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"webpack-subresource-integrity": "5.1.0"
|
|
69
69
|
},
|
|
70
70
|
"optionalDependencies": {
|
|
71
|
-
"esbuild": "0.17.
|
|
71
|
+
"esbuild": "0.17.10"
|
|
72
72
|
},
|
|
73
73
|
"peerDependencies": {
|
|
74
74
|
"@angular/compiler-cli": "^15.0.0 || ^15.2.0-next",
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
"url": "https://github.com/angular/angular-cli.git"
|
|
117
117
|
},
|
|
118
118
|
"engines": {
|
|
119
|
-
"node": "^
|
|
119
|
+
"node": "^16.13.0 || >=18.10.0",
|
|
120
120
|
"npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
|
|
121
121
|
"yarn": ">= 1.13.0"
|
|
122
122
|
},
|
|
@@ -72,7 +72,7 @@ function canWrapProperty(propertyName, assignmentValue) {
|
|
|
72
72
|
return true;
|
|
73
73
|
}
|
|
74
74
|
const { leadingComments } = assignmentValue.node;
|
|
75
|
-
if (leadingComments
|
|
75
|
+
if (leadingComments?.some(
|
|
76
76
|
// `@pureOrBreakMyCode` is used by closure and is present in Angular code
|
|
77
77
|
({ value }) => value.includes('@__PURE__') ||
|
|
78
78
|
value.includes('#__PURE__') ||
|
|
@@ -92,7 +92,6 @@ function canWrapProperty(propertyName, assignmentValue) {
|
|
|
92
92
|
* @returns An object containing the results of the analysis.
|
|
93
93
|
*/
|
|
94
94
|
function analyzeClassSiblings(origin, classIdentifier, allowWrappingDecorators) {
|
|
95
|
-
var _a;
|
|
96
95
|
const wrapStatementPaths = [];
|
|
97
96
|
let hasPotentialSideEffects = false;
|
|
98
97
|
for (let i = 1;; ++i) {
|
|
@@ -150,7 +149,7 @@ function analyzeClassSiblings(origin, classIdentifier, allowWrappingDecorators)
|
|
|
150
149
|
}
|
|
151
150
|
const propertyName = left.node.property.name;
|
|
152
151
|
const assignmentValue = nextExpression.get('right');
|
|
153
|
-
if (
|
|
152
|
+
if (angularStaticsToElide[propertyName]?.(assignmentValue)) {
|
|
154
153
|
nextStatement.remove();
|
|
155
154
|
--i;
|
|
156
155
|
}
|
|
@@ -205,7 +204,6 @@ function default_1() {
|
|
|
205
204
|
(0, helper_split_export_declaration_1.default)(path);
|
|
206
205
|
},
|
|
207
206
|
ClassDeclaration(path, state) {
|
|
208
|
-
var _a;
|
|
209
207
|
const { node: classNode, parentPath } = path;
|
|
210
208
|
const { wrapDecorators } = state.opts;
|
|
211
209
|
if (visitedClasses.has(classNode)) {
|
|
@@ -213,7 +211,8 @@ function default_1() {
|
|
|
213
211
|
}
|
|
214
212
|
// Analyze sibling statements for elements of the class that were downleveled
|
|
215
213
|
const origin = parentPath.isExportNamedDeclaration() ? parentPath : path;
|
|
216
|
-
const { wrapStatementPaths, hasPotentialSideEffects } =
|
|
214
|
+
const { wrapStatementPaths, hasPotentialSideEffects } = exportDefaultAnalysis.get(classNode) ??
|
|
215
|
+
analyzeClassSiblings(origin, classNode.id, wrapDecorators);
|
|
217
216
|
visitedClasses.add(classNode);
|
|
218
217
|
if (hasPotentialSideEffects) {
|
|
219
218
|
return;
|
|
@@ -317,4 +316,4 @@ function default_1() {
|
|
|
317
316
|
};
|
|
318
317
|
}
|
|
319
318
|
exports.default = default_1;
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRqdXN0LXN0YXRpYy1jbGFzcy1tZW1iZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvYmFiZWwvcGx1Z2lucy9hZGp1c3Qtc3RhdGljLWNsYXNzLW1lbWJlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7O0FBRUgsc0NBQXFFO0FBQ3JFLDZGQUE0RDtBQUM1RCw2R0FBNEU7QUFFNUU7O0dBRUc7QUFDSCxNQUFNLDBCQUEwQixHQUFHLFlBQVksQ0FBQztBQUVoRDs7OztHQUlHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNuQyxNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE9BQU87SUFDUCxPQUFPO0lBQ1AsY0FBYztDQUNmLENBQUMsQ0FBQztBQUVIOzs7R0FHRztBQUNILE1BQU0scUJBQXFCLEdBQWtFO0lBQzNGLGdCQUFnQixDQUFDLElBQUk7UUFDbkIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsWUFBWSxDQUFDLElBQUk7UUFDZixPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxJQUFJO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDbkMsQ0FBQztDQUNGLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQWdCLFdBQVc7SUFDekIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFGRCxrQ0FFQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxlQUFlLENBQUMsWUFBb0IsRUFBRSxlQUF5QjtJQUN0RSxJQUFJ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QUN4QjtnQkFFRCxrRUFBa0U7Z0JBQ2xFLE1BQU0sU0FBUyxHQUFHLFlBQUssQ0FBQyx1QkFBdUIsQ0FDN0MsRUFBRSxFQUNGLFlBQUssQ0FBQyxjQUFjLENBQUM7b0JBQ25CLFlBQUssQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUU7d0JBQy9CLFlBQUssQ0FBQyxrQkFBa0IsQ0FBQyxZQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUM7cUJBQ25FLENBQUM7b0JBQ0YsR0FBRyxrQkFBa0I7b0JBQ3JCLFlBQUssQ0FBQyxlQUFlLENBQUMsWUFBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3JELENBQUMsQ0FDSCxDQUFDO2dCQUNGLE1BQU0sc0JBQXNCLEdBQUcsWUFBSyxDQUFDLGNBQWMsQ0FDakQsWUFBSyxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxFQUN4QyxFQUFFLENBQ0gsQ0FBQztnQkFDRixJQUFBLGlDQUFjLEVBQUMsc0JBQXNCLENBQUMsQ0FBQztnQkFFdkMsNkRBQTZEO2dCQUM3RCxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQzdELENBQUM7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBM0tELDRCQTJLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBOb2RlUGF0aCwgUGx1Z2luT2JqLCBQbHVnaW5QYXNzLCB0eXBlcyB9IGZyb20gJ0BiYWJlbC9jb3JlJztcbmltcG9ydCBhbm5vdGF0ZUFzUHVyZSBmcm9tICdAYmFiZWwvaGVscGVyLWFubm90YXRlLWFzLXB1cmUnO1xuaW1wb3J0IHNwbGl0RXhwb3J0RGVjbGFyYXRpb24gZnJvbSAnQGJhYmVsL2hlbHBlci1zcGxpdC1leHBvcnQtZGVjbGFyYXRpb24nO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBUeXBlc2NyaXB0IGRlY29yYXRvciBoZWxwZXIgZnVuY3Rpb24gY3JlYXRlZCBieSB0aGUgVHlwZVNjcmlwdCBjb21waWxlci5cbiAqL1xuY29uc3QgVFNMSUJfREVDT1JBVEVfSEVMUEVSX05BTUUgPSAnX19kZWNvcmF0ZSc7XG5cbi8qKlxuICogVGhlIHNldCBvZiBBbmd1bGFyIHN0YXRpYyBmaWVsZHMgdGhhdCBzaG91bGQgYWx3YXlzIGJlIHdyYXBwZWQuXG4gKiBUaGVzZSBmaWVsZHMgbWF5IGFwcGVhciB0byBoYXZlIHNpZGUgZWZmZWN0cyBidXQgYXJlIHNhZmUgdG8gcmVtb3ZlIGlmIHRoZSBhc3NvY2lhdGVkIGNsYXNzXG4gKiBpcyBvdGhlcndpc2UgdW51c2VkIHdpdGhpbiB0aGUgb3V0cHV0LlxuICovXG5jb25zdCBhbmd1bGFyU3RhdGljc1RvV3JhcCA9IG5ldyBTZXQoW1xuICAnybVjbXAnLFxuICAnybVkaXInLFxuICAnybVmYWMnLFxuICAnybVpbmonLFxuICAnybVtb2QnLFxuICAnybVwaXBlJyxcbiAgJ8m1cHJvdicsXG4gICdJTkpFQ1RPUl9LRVknLFxuXSk7XG5cbi8qKlxuICogQW4gb2JqZWN0IG1hcCBvZiBzdGF0aWMgZmllbGRzIGFuZCByZWxhdGVkIHZhbHVlIGNoZWNrcyBmb3IgZGlzY292ZXJ5IG9mIEFuZ3VsYXIgZ2VuZXJhdGVkXG4gKiBKSVQgcmVsYXRlZCBzdGF0aWMgZmllbGRzLlxuICovXG5jb25zdCBhbmd1bGFyU3RhdGljc1RvRWxpZGU6IFJlY29yZDxzdHJpbmcsIChwYXRoOiBOb2RlUGF0aDx0eXBlcy5FeHByZXNzaW9uPikgPT4gYm9vbGVhbj4gPSB7XG4gICdjdG9yUGFyYW1ldGVycycocGF0aCkge1xuICAgIHJldHVybiBwYXRoLmlzRnVuY3Rpb25FeHByZXNzaW9uKCkgfHwgcGF0aC5pc0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKCk7XG4gIH0sXG4gICdkZWNvcmF0b3JzJyhwYXRoKSB7XG4gICAgcmV0dXJuIHBhdGguaXNBcnJheUV4cHJlc3Npb24oKTtcbiAgfSxcbiAgJ3Byb3BEZWNvcmF0b3JzJyhwYXRoKSB7XG4gICAgcmV0dXJuIHBhdGguaXNPYmplY3RFeHByZXNzaW9uKCk7XG4gIH0sXG59O1xuXG4vKipcbiAqIFByb3ZpZGVzIG9uZSBvciBtb3JlIGtleXdvcmRzIHRoYXQgaWYgZm91bmQgd2l0aGluIHRoZSBjb250ZW50IG9mIGEgc291cmNlIGZpbGUgaW5kaWNhdGVcbiAqIHRoYXQgdGhpcyBwbHVnaW4gc2hvdWxkIGJlIHVzZWQgd2l0aCBhIHNvdXJjZSBmaWxlLlxuICpcbiAqIEByZXR1cm5zIEFuIGEgc3RyaW5nIGl0ZXJhYmxlIGNvbnRhaW5pbmcgb25lIG9yIG1vcmUga2V5d29yZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRLZXl3b3JkcygpOiBJdGVyYWJsZTxzdHJpbmc+IHtcbiAgcmV0dXJuIFsnY2xhc3MnXTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBwcm9wZXJ0eSBhbmQgaXRzIGluaXRpYWxpemVyIHZhbHVlIGNhbiBiZSBzYWZlbHkgd3JhcHBlZCBpbiBhIHB1cmVcbiAqIGFubm90YXRlZCBJSUZFLiBWYWx1ZXMgdGhhdCBtYXkgY2F1c2Ugc2lkZSBlZmZlY3RzIGFyZSBub3QgY29uc2lkZXJlZCBzYWZlIHRvIHdyYXAuXG4gKiBXcmFwcGluZyBzdWNoIHZhbHVlcyBtYXkgY2F1c2UgcnVudGltZSBlcnJvcnMgYW5kL29yIGluY29ycmVjdCBydW50aW1lIGJlaGF2aW9yLlxuICpcbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGFuYWx5emUuXG4gKiBAcGFyYW0gYXNzaWdubWVudFZhbHVlIFRoZSBpbml0aWFsaXplciB2YWx1ZSB0aGF0IHdpbGwgYmUgYXNzaWduZWQgdG8gdGhlIHByb3BlcnR5LlxuICogQHJldHVybnMgSWYgdGhlIHByb3BlcnR5IGNhbiBiZSBzYWZlbHkgd3JhcHBlZCwgdGhlbiB0cnVlOyBvdGhlcndpc2UsIGZhbHNlLlxuICovXG5mdW5jdGlvbiBjYW5XcmFwUHJvcGVydHkocHJvcGVydHlOYW1lOiBzdHJpbmcsIGFzc2lnbm1lbnRWYWx1ZTogTm9kZVBhdGgpOiBib29sZWFuIHtcbiAgaWYgKGFuZ3VsYXJTdGF0aWNzVG9XcmFwLmhhcyhwcm9wZXJ0eU5hbWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCB7IGxlYWRpbmdDb21tZW50cyB9ID0gYXNzaWdubWVudFZhbHVlLm5vZGUgYXMgeyBsZWFkaW5nQ29tbWVudHM/OiB7IHZhbHVlOiBzdHJpbmcgfVtdIH07XG4gIGlmIChcbiAgICBsZWFkaW5nQ29tbWVudHM/LnNvbWUoXG4gICAgICAvLyBgQHB1cmVPckJyZWFrTXlDb2RlYCBpcyB1c2VkIGJ5IGNsb3N1cmUgYW5kIGlzIHByZXNlbnQgaW4gQW5ndWxhciBjb2RlXG4gICAgICAoeyB2YWx1ZSB9KSA9PlxuICAgICAgICB2YWx1ZS5pbmNsdWRlcygnQF9fUFVSRV9fJykgfHxcbiAgICAgICAgdmFsdWUuaW5jbHVkZXMoJyNfX1BVUkVfXycpIHx8XG4gICAgICAgIHZhbHVlLmluY2x1ZGVzKCdAcHVyZU9yQnJlYWtNeUNvZGUnKSxcbiAgICApXG4gICkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGFzc2lnbm1lbnRWYWx1ZS5pc1B1cmUoKTtcbn1cblxuLyoqXG4gKiBBbmFseXplIHRoZSBzaWJsaW5nIG5vZGVzIG9mIGEgY2xhc3MgdG8gZGV0ZXJtaW5lIGlmIGFueSBkb3dubGV2ZWwgZWxlbWVudHMgc2hvdWxkIGJlXG4gKiB3cmFwcGVkIGluIGEgcHVyZSBhbm5vdGF0ZWQgSUlGRS4gQWxzbyBkZXRlcm1pbmVzIGlmIGFueSBlbGVtZW50cyBoYXZlIHBvdGVudGlhbCBzaWRlXG4gKiBlZmZlY3RzLlxuICpcbiAqIEBwYXJhbSBvcmlnaW4gVGhlIHN0YXJ0aW5nIE5vZGVQYXRoIGxvY2F0aW9uIGZvciBhbmFseXppbmcgc2libGluZ3MuXG4gKiBAcGFyYW0gY2xhc3NJZGVudGlmaWVyIFRoZSBpZGVudGlmaWVyIG5vZGUgdGhhdCByZXByZXNlbnRzIHRoZSBuYW1lIG9mIHRoZSBjbGFzcy5cbiAqIEBwYXJhbSBhbGxvd1dyYXBwaW5nRGVjb3JhdG9ycyBXaGV0aGVyIHRvIGFsbG93IGRlY29yYXRvcnMgdG8gYmUgd3JhcHBlZC5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbiAqL1xuZnVuY3Rpb24gYW5hbHl6ZUNsYXNzU2libGluZ3MoXG4gIG9yaWdpbjogTm9kZVBhdGgsXG4gIGNsYXNzSWRlbnRpZmllcjogdHlwZXMuSWRlbnRpZmllcixcbiAgYWxsb3dXcmFwcGluZ0RlY29yYXRvcnM6IGJvb2xlYW4sXG4pOiB7IGhhc1BvdGVudGlhbFNpZGVFZmZlY3RzOiBib29sZWFuOyB3cmFwU3RhdGVtZW50UGF0aHM6IE5vZGVQYXRoPHR5cGVzLlN0YXRlbWVudD5bXSB9IHtcbiAgY29uc3Qgd3JhcFN0YXRlbWVudFBhdGhzOiBOb2RlUGF0aDx0eXBlcy5TdGF0ZW1lbnQ+W10gPSBbXTtcbiAgbGV0IGhhc1BvdGVudGlhbFNpZGVFZmZlY3RzID0gZmFsc2U7XG4gIGZvciAobGV0IGkgPSAxOyA7ICsraSkge1xuICAgIGNvbnN0IG5leHRTdGF0ZW1lbnQgPSBvcmlnaW4uZ2V0U2libGluZygrb3JpZ2luLmtleSArIGkpO1xuICAgIGlmICghbmV4dFN0YXRlbWVudC5pc0V4cHJlc3Npb25TdGF0ZW1lbnQoKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gVmFsaWQgc2libGluZyBzdGF0ZW1lbnRzIGZvciBjbGFzcyBkZWNsYXJhdGlvbnMgYXJlIG9ubHkgYXNzaWdubWVudCBleHByZXNzaW9uc1xuICAgIC8vIGFuZCBUeXBlU2NyaXB0IGRlY29yYXRvciBoZWxwZXIgY2FsbCBleHByZXNzaW9uc1xuICAgIGNvbnN0IG5leHRFeHByZXNzaW9uID0gbmV4dFN0YXRlbWVudC5nZXQoJ2V4cHJlc3Npb24nKTtcbiAgICBpZiAobmV4dEV4cHJlc3Npb24uaXNDYWxsRXhwcmVzc2lvbigpKSB7XG4gICAgICBpZiAoXG4gICAgICAgICF0eXBlcy5pc0lkZW50aWZpZXIobmV4dEV4cHJlc3Npb24ubm9kZS5jYWxsZWUpIHx8XG4gICAgICAgIG5leHRFeHByZXNzaW9uLm5vZGUuY2FsbGVlLm5hbWUgIT09IFRTTElCX0RFQ09SQVRFX0hFTFBFUl9OQU1FXG4gICAgICApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChhbGxvd1dyYXBwaW5nRGVjb3JhdG9ycykge1xuICAgICAgICB3cmFwU3RhdGVtZW50UGF0aHMucHVzaChuZXh0U3RhdGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFN0YXRlbWVudCBjYW5ub3QgYmUgc2FmZWx5IHdyYXBwZWQgd2hpY2ggbWFrZXMgd3JhcHBpbmcgdGhlIGNsYXNzIHVubmVlZGVkLlxuICAgICAgICAvLyBUaGUgc3RhdGVtZW50IHdpbGwgcHJldmVudCBldmVuIGEgd3JhcHBlZCBjbGFzcyBmcm9tIGJlaW5nIG9wdGltaXplZCBhd2F5LlxuICAgICAgICBoYXNQb3RlbnRpYWxTaWRlRWZmZWN0cyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gZWxzZSBpZiAoIW5leHRFeHByZXNzaW9uLmlzQXNzaWdubWVudEV4cHJlc3Npb24oKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gVmFsaWQgYXNzaWdubWVudCBleHByZXNzaW9ucyBzaG91bGQgYmUgbWVtYmVyIGFjY2VzcyBleHByZXNzaW9ucyB1c2luZyB0aGUgY2xhc3NcbiAgICAvLyBuYW1lIGFzIHRoZSBvYmplY3QgYW5kIGFuIGlkZW50aWZpZXIgYXMgdGhlIHByb3BlcnR5IGZvciBzdGF0aWMgZmllbGRzIG9yIG9ubHlcbiAgICAvLyB0aGUgY2xhc3MgbmFtZSBmb3IgZGVjb3JhdG9ycy5cbiAgICBjb25zdCBsZWZ0ID0gbmV4dEV4cHJlc3Npb24uZ2V0KCdsZWZ0Jyk7XG4gICAgaWYgKGxlZnQuaXNJZGVudGlmaWVyKCkpIHtcbiAgICAgIGlmIChcbiAgICAgICAgIWxlZnQuc2NvcGUuYmluZGluZ0lkZW50aWZpZXJFcXVhbHMobGVmdC5ub2RlLm5hbWUsIGNsYXNzSWRlbnRpZmllcikgfHxcbiAgICAgICAgIXR5cGVzLmlzQ2FsbEV4cHJlc3Npb24obmV4dEV4cHJlc3Npb24ubm9kZS5yaWdodCkgfHxcbiAgICAgICAgIXR5cGVzLmlzSWRlbnRpZmllcihuZXh0RXhwcmVzc2lvbi5ub2RlLnJpZ2h0LmNhbGxlZSkgfHxcbiAgICAgICAgbmV4dEV4cHJlc3Npb24ubm9kZS5yaWdodC5jYWxsZWUubmFtZSAhPT0gVFNMSUJfREVDT1JBVEVfSEVMUEVSX05BTUVcbiAgICAgICkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGFsbG93V3JhcHBpbmdEZWNvcmF0b3JzKSB7XG4gICAgICAgIHdyYXBTdGF0ZW1lbnRQYXRocy5wdXNoKG5leHRTdGF0ZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU3RhdGVtZW50IGNhbm5vdCBiZSBzYWZlbHkgd3JhcHBlZCB3aGljaCBtYWtlcyB3cmFwcGluZyB0aGUgY2xhc3MgdW5uZWVkZWQuXG4gICAgICAgIC8vIFRoZSBzdGF0ZW1lbnQgd2lsbCBwcmV2ZW50IGV2ZW4gYSB3cmFwcGVkIGNsYXNzIGZyb20gYmVpbmcgb3B0aW1pemVkIGF3YXkuXG4gICAgICAgIGhhc1BvdGVudGlhbFNpZGVFZmZlY3RzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICFsZWZ0LmlzTWVtYmVyRXhwcmVzc2lvbigpIHx8XG4gICAgICAhdHlwZXMuaXNJZGVudGlmaWVyKGxlZnQubm9kZS5vYmplY3QpIHx8XG4gICAgICAhbGVmdC5zY29wZS5iaW5kaW5nSWRlbnRpZmllckVxdWFscyhsZWZ0Lm5vZGUub2JqZWN0Lm5hbWUsIGNsYXNzSWRlbnRpZmllcikgfHxcbiAgICAgICF0eXBlcy5pc0lkZW50aWZpZXIobGVmdC5ub2RlLnByb3BlcnR5KVxuICAgICkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcGVydHlOYW1lID0gbGVmdC5ub2RlLnByb3BlcnR5Lm5hbWU7XG4gICAgY29uc3QgYXNzaWdubWVudFZhbHVlID0gbmV4dEV4cHJlc3Npb24uZ2V0KCdyaWdodCcpO1xuICAgIGlmIChhbmd1bGFyU3RhdGljc1RvRWxpZGVbcHJvcGVydHlOYW1lXT8uKGFzc2lnbm1lbnRWYWx1ZSkpIHtcbiAgICAgIG5leHRTdGF0ZW1lbnQucmVtb3ZlKCk7XG4gICAgICAtLWk7XG4gICAgfSBlbHNlIGlmIChjYW5XcmFwUHJvcGVydHkocHJvcGVydHlOYW1lLCBhc3NpZ25tZW50VmFsdWUpKSB7XG4gICAgICB3cmFwU3RhdGVtZW50UGF0aHMucHVzaChuZXh0U3RhdGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RhdGVtZW50IGNhbm5vdCBiZSBzYWZlbHkgd3JhcHBlZCB3aGljaCBtYWtlcyB3cmFwcGluZyB0aGUgY2xhc3MgdW5uZWVkZWQuXG4gICAgICAvLyBUaGUgc3RhdGVtZW50IHdpbGwgcHJldmVudCBldmVuIGEgd3JhcHBlZCBjbGFzcyBmcm9tIGJlaW5nIG9wdGltaXplZCBhd2F5LlxuICAgICAgaGFzUG90ZW50aWFsU2lkZUVmZmVjdHMgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGhhc1BvdGVudGlhbFNpZGVFZmZlY3RzLCB3cmFwU3RhdGVtZW50UGF0aHMgfTtcbn1cblxuLyoqXG4gKiBUaGUgc2V0IG9mIGNsYXNzZXMgYWxyZWFkeSB2aXNpdGVkIGFuZCBhbmFseXplZCBkdXJpbmcgdGhlIHBsdWdpbidzIGV4ZWN1dGlvbi5cbiAqIFRoaXMgaXMgdXNlZCB0byBwcmV2ZW50IGFkanVzdGVkIGNsYXNzZXMgZnJvbSBiZWluZyByZXBlYXRlZGx5IGFuYWx5emVkIHdoaWNoIGNhbiBsZWFkXG4gKiB0byBhbiBpbmZpbml0ZSBsb29wLlxuICovXG5jb25zdCB2aXNpdGVkQ2xhc3NlcyA9IG5ldyBXZWFrU2V0PHR5cGVzLkNsYXNzPigpO1xuXG4vKipcbiAqIEEgbWFwIG9mIGNsYXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBhbmFseXplZCBkdXJpbmcgdGhlIGRlZmF1bHQgZXhwb3J0IHNwbGl0dGluZyBzdGVwLlxuICogVGhpcyBpcyB1c2VkIHRvIGF2b2lkIGFuYWx5emluZyBhIGNsYXNzIGRlY2xhcmF0aW9uIHR3aWNlIGlmIGl0IGlzIGEgZGlyZWN0IGRlZmF1bHQgZXhwb3J0LlxuICovXG5jb25zdCBleHBvcnREZWZhdWx0QW5hbHlzaXMgPSBuZXcgV2Vha01hcDx0eXBlcy5DbGFzcywgUmV0dXJuVHlwZTx0eXBlb2YgYW5hbHl6ZUNsYXNzU2libGluZ3M+PigpO1xuXG4vKipcbiAqIEEgYmFiZWwgcGx1Z2luIGZhY3RvcnkgZnVuY3Rpb24gZm9yIGFkanVzdGluZyBjbGFzc2VzOyBwcmltYXJpbHkgd2l0aCBBbmd1bGFyIG1ldGFkYXRhLlxuICogVGhlIGFkanVzdG1lbnRzIGluY2x1ZGUgd3JhcHBpbmcgY2xhc3NlcyB3aXRoIGtub3duIHNhZmUgb3Igbm8gc2lkZSBlZmZlY3RzIHdpdGggcHVyZVxuICogYW5ub3RhdGlvbnMgdG8gc3VwcG9ydCBkZWFkIGNvZGUgcmVtb3ZhbCBvZiB1bnVzZWQgY2xhc3Nlcy4gQW5ndWxhciBjb21waWxlciBnZW5lcmF0ZWRcbiAqIG1ldGFkYXRhIHN0YXRpYyBmaWVsZHMgbm90IHJlcXVpcmVkIGluIEFPVCBtb2RlIGFyZSBhbHNvIGVsaWRlZCB0byBiZXR0ZXIgc3VwcG9ydCBidW5kbGVyLVxuICogbGV2ZWwgdHJlZXNoYWtpbmcuXG4gKlxuICogQHJldHVybnMgQSBiYWJlbCBwbHVnaW4gb2JqZWN0IGluc3RhbmNlLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKTogUGx1Z2luT2JqIHtcbiAgcmV0dXJuIHtcbiAgICB2aXNpdG9yOiB7XG4gICAgICAvLyBXaGVuIGEgY2xhc3MgaXMgY29udmVydGVkIHRvIGEgdmFyaWFibGUgZGVjbGFyYXRpb24sIHRoZSBkZWZhdWx0IGV4cG9ydCBtdXN0IGJlIG1vdmVkXG4gICAgICAvLyB0byBhIHN1YnNlcXVlbnQgc3RhdGVtZW50IHRvIHByZXZlbnQgYSBKYXZhU2NyaXB0IHN5bnRheCBlcnJvci5cbiAgICAgIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbihwYXRoOiBOb2RlUGF0aDx0eXBlcy5FeHBvcnREZWZhdWx0RGVjbGFyYXRpb24+LCBzdGF0ZTogUGx1Z2luUGFzcykge1xuICAgICAgICBjb25zdCBkZWNsYXJhdGlvbiA9IHBhdGguZ2V0KCdkZWNsYXJhdGlvbicpO1xuICAgICAgICBpZiAoIWRlY2xhcmF0aW9uLmlzQ2xhc3NEZWNsYXJhdGlvbigpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyB3cmFwRGVjb3JhdG9ycyB9ID0gc3RhdGUub3B0cyBhcyB7IHdyYXBEZWNvcmF0b3JzOiBib29sZWFuIH07XG4gICAgICAgIGNvbnN0IGFuYWx5c2lzID0gYW5hbHl6ZUNsYXNzU2libGluZ3MocGF0aCwgZGVjbGFyYXRpb24ubm9kZS5pZCwgd3JhcERlY29yYXRvcnMpO1xuICAgICAgICBleHBvcnREZWZhdWx0QW5hbHlzaXMuc2V0KGRlY2xhcmF0aW9uLm5vZGUsIGFuYWx5c2lzKTtcblxuICAgICAgICAvLyBTcGxpdHRpbmcgdGhlIGV4cG9ydCBkZWNsYXJhdGlvbiBpcyBub3QgbmVlZGVkIGlmIHRoZSBjbGFzcyB3aWxsIG5vdCBiZSB3cmFwcGVkXG4gICAgICAgIGlmIChhbmFseXNpcy5oYXNQb3RlbnRpYWxTaWRlRWZmZWN0cykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNwbGl0RXhwb3J0RGVjbGFyYXRpb24ocGF0aCk7XG4gICAgICB9LFxuICAgICAgQ2xhc3NEZWNsYXJhdGlvbihwYXRoOiBOb2RlUGF0aDx0eXBlcy5DbGFzc0RlY2xhcmF0aW9uPiwgc3RhdGU6IFBsdWdpblBhc3MpIHtcbiAgICAgICAgY29uc3QgeyBub2RlOiBjbGFzc05vZGUsIHBhcmVudFBhdGggfSA9IHBhdGg7XG4gICAgICAgIGNvbnN0IHsgd3JhcERlY29yYXRvcnMgfSA9IHN0YXRlLm9wdHMgYXMgeyB3cmFwRGVjb3JhdG9yczogYm9vbGVhbiB9O1xuXG4gICAgICAgIGlmICh2aXNpdGVkQ2xhc3Nlcy5oYXMoY2xhc3NOb2RlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFuYWx5emUgc2libGluZyBzdGF0ZW1lbnRzIGZvciBlbGVtZW50cyBvZiB0aGUgY2xhc3MgdGhhdCB3ZXJlIGRvd25sZXZlbGVkXG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IHBhcmVudFBhdGguaXNFeHBvcnROYW1lZERlY2xhcmF0aW9uKCkgPyBwYXJlbnRQYXRoIDogcGF0aDtcbiAgICAgICAgY29uc3QgeyB3cmFwU3RhdGVtZW50UGF0aHMsIGhhc1BvdGVudGlhbFNpZGVFZmZlY3RzIH0gPVxuICAgICAgICAgIGV4cG9ydERlZmF1bHRBbmFseXNpcy5nZXQoY2xhc3NOb2RlKSA/P1xuICAgICAgICAgIGFuYWx5emVDbGFzc1NpYmxpbmdzKG9yaWdpbiwgY2xhc3NOb2RlLmlkLCB3cmFwRGVjb3JhdG9ycyk7XG5cbiAgICAgICAgdmlzaXRlZENsYXNzZXMuYWRkKGNsYXNzTm9kZSk7XG5cbiAgICAgICAgaWYgKGhhc1BvdGVudGlhbFNpZGVFZmZlY3RzKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgbm8gc3RhdGVtZW50cyB0byB3cmFwLCBjaGVjayBmb3Igc3RhdGljIGNsYXNzIHByb3BlcnRpZXMuXG4gICAgICAgIC8vIFN0YXRpYyBjbGFzcyBwcm9wZXJ0aWVzIG1heSBiZSBkb3dubGV2ZWxlZCBhdCBsYXRlciBzdGFnZXMgaW4gdGhlIGJ1aWxkIHBpcGVsaW5lXG4gICAgICAgIC8vIHdoaWNoIHJlc3VsdHMgaW4gYWRkaXRpb25hbCBmdW5jdGlvbiBjYWxscyBvdXRzaWRlIHRoZSBjbGFzcyBib2R5LiBUaGVzZSBjYWxsc1xuICAgICAgICAvLyB0aGVuIGNhdXNlIHRoZSBjbGFzcyB0byBiZSByZWZlcmVuY2VkIGFuZCBub3QgZWxpZ2libGUgZm9yIHJlbW92YWwuIFNpbmNlIGl0IGlzXG4gICAgICAgIC8vIG5vdCBrbm93biBhdCB0aGlzIHN0YWdlIHdoZXRoZXIgdGhlIGNsYXNzIG5lZWRzIHRvIGJlIGRvd25sZXZlbGVkLCB0aGUgdHJhbnNmb3JtXG4gICAgICAgIC8vIHdyYXBzIGNsYXNzZXMgcHJlZW1wdGl2ZWx5IHRvIGFsbG93IGZvciBwb3RlbnRpYWwgcmVtb3ZhbCB3aXRoaW4gdGhlIG9wdGltaXphdGlvblxuICAgICAgICAvLyBzdGFnZXMuXG4gICAgICAgIGlmICh3cmFwU3RhdGVtZW50UGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgbGV0IHNob3VsZFdyYXAgPSBmYWxzZTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgcGF0aC5nZXQoJ2JvZHknKS5nZXQoJ2JvZHknKSkge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQuaXNDbGFzc1Byb3BlcnR5KCkpIHtcbiAgICAgICAgICAgICAgLy8gT25seSBuZWVkIHRvIGFuYWx5emUgc3RhdGljIHByb3BlcnRpZXNcbiAgICAgICAgICAgICAgaWYgKCFlbGVtZW50Lm5vZGUuc3RhdGljKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy5cbiAgICAgICAgICAgICAgLy8gVGhlc2UgY2hlY2tzIGFyZSBjb25zZXJ2YXRpdmUgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGJlIGV4cGFuZGVkIGluIHRoZSBmdXR1cmUuXG4gICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRLZXkgPSBlbGVtZW50LmdldCgna2V5Jyk7XG4gICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRWYWx1ZSA9IGVsZW1lbnQuZ2V0KCd2YWx1ZScpO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZWxlbWVudEtleS5pc0lkZW50aWZpZXIoKSAmJlxuICAgICAgICAgICAgICAgICghZWxlbWVudFZhbHVlLmlzRXhwcmVzc2lvbigpIHx8XG4gICAgICAgICAgICAgICAgICBjYW5XcmFwUHJvcGVydHkoZWxlbWVudEtleS5nZXQoJ25hbWUnKSwgZWxlbWVudFZhbHVlKSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc2hvdWxkV3JhcCA9IHRydWU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gTm90IHNhZmUgdG8gd3JhcFxuICAgICAgICAgICAgICAgIHNob3VsZFdyYXAgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXNob3VsZFdyYXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3cmFwU3RhdGVtZW50Tm9kZXM6IHR5cGVzLlN0YXRlbWVudFtdID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgc3RhdGVtZW50UGF0aCBvZiB3cmFwU3RhdGVtZW50UGF0aHMpIHtcbiAgICAgICAgICB3cmFwU3RhdGVtZW50Tm9kZXMucHVzaChzdGF0ZW1lbnRQYXRoLm5vZGUpO1xuICAgICAgICAgIHN0YXRlbWVudFBhdGgucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXcmFwIGNsYXNzIGFuZCBzYWZlIHN0YXRpYyBhc3NpZ25tZW50cyBpbiBhIHB1cmUgYW5ub3RhdGVkIElJRkVcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdHlwZXMuYXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oXG4gICAgICAgICAgW10sXG4gICAgICAgICAgdHlwZXMuYmxvY2tTdGF0ZW1lbnQoW1xuICAgICAgICAgICAgY2xhc3NOb2RlLFxuICAgICAgICAgICAgLi4ud3JhcFN0YXRlbWVudE5vZGVzLFxuICAgICAgICAgICAgdHlwZXMucmV0dXJuU3RhdGVtZW50KHR5cGVzLmNsb25lTm9kZShjbGFzc05vZGUuaWQpKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcmVwbGFjZW1lbnRJbml0aWFsaXplciA9IHR5cGVzLmNhbGxFeHByZXNzaW9uKFxuICAgICAgICAgIHR5cGVzLnBhcmVudGhlc2l6ZWRFeHByZXNzaW9uKGNvbnRhaW5lciksXG4gICAgICAgICAgW10sXG4gICAgICAgICk7XG4gICAgICAgIGFubm90YXRlQXNQdXJlKHJlcGxhY2VtZW50SW5pdGlhbGl6ZXIpO1xuXG4gICAgICAgIC8vIFJlcGxhY2UgY2xhc3Mgd2l0aCBJSUZFIHdyYXBwZWQgY2xhc3NcbiAgICAgICAgY29uc3QgZGVjbGFyYXRpb24gPSB0eXBlcy52YXJpYWJsZURlY2xhcmF0aW9uKCdsZXQnLCBbXG4gICAgICAgICAgdHlwZXMudmFyaWFibGVEZWNsYXJhdG9yKHR5cGVzLmNsb25lTm9kZShjbGFzc05vZGUuaWQpLCByZXBsYWNlbWVudEluaXRpYWxpemVyKSxcbiAgICAgICAgXSk7XG4gICAgICAgIHBhdGgucmVwbGFjZVdpdGgoZGVjbGFyYXRpb24pO1xuICAgICAgfSxcbiAgICAgIENsYXNzRXhwcmVzc2lvbihwYXRoOiBOb2RlUGF0aDx0eXBlcy5DbGFzc0V4cHJlc3Npb24+LCBzdGF0ZTogUGx1Z2luUGFzcykge1xuICAgICAgICBjb25zdCB7IG5vZGU6IGNsYXNzTm9kZSwgcGFyZW50UGF0aCB9ID0gcGF0aDtcbiAgICAgICAgY29uc3QgeyB3cmFwRGVjb3JhdG9ycyB9ID0gc3RhdGUub3B0cyBhcyB7IHdyYXBEZWNvcmF0b3JzOiBib29sZWFuIH07XG5cbiAgICAgICAgLy8gQ2xhc3MgZXhwcmVzc2lvbnMgYXJlIHVzZWQgYnkgVHlwZVNjcmlwdCB0byByZXByZXNlbnQgZG93bmxldmVsIGNsYXNzL2NvbnN0cnVjdG9yIGRlY29yYXRvcnMuXG4gICAgICAgIC8vIElmIG5vdCB3cmFwcGluZyBkZWNvcmF0b3JzLCB0aGV5IGRvIG5vdCBuZWVkIHRvIGJlIHByb2Nlc3NlZC5cbiAgICAgICAgaWYgKCF3cmFwRGVjb3JhdG9ycyB8fCB2aXNpdGVkQ2xhc3Nlcy5oYXMoY2xhc3NOb2RlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAhY2xhc3NOb2RlLmlkIHx8XG4gICAgICAgICAgIXBhcmVudFBhdGguaXNWYXJpYWJsZURlY2xhcmF0b3IoKSB8fFxuICAgICAgICAgICF0eXBlcy5pc0lkZW50aWZpZXIocGFyZW50UGF0aC5ub2RlLmlkKSB8fFxuICAgICAgICAgIHBhcmVudFBhdGgubm9kZS5pZC5uYW1lICE9PSBjbGFzc05vZGUuaWQubmFtZVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcmlnaW4gPSBwYXJlbnRQYXRoLnBhcmVudFBhdGg7XG4gICAgICAgIGlmICghb3JpZ2luLmlzVmFyaWFibGVEZWNsYXJhdGlvbigpIHx8IG9yaWdpbi5ub2RlLmRlY2xhcmF0aW9ucy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IHdyYXBTdGF0ZW1lbnRQYXRocywgaGFzUG90ZW50aWFsU2lkZUVmZmVjdHMgfSA9IGFuYWx5emVDbGFzc1NpYmxpbmdzKFxuICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICBwYXJlbnRQYXRoLm5vZGUuaWQsXG4gICAgICAgICAgd3JhcERlY29yYXRvcnMsXG4gICAgICAgICk7XG5cbiAgICAgICAgdmlzaXRlZENsYXNzZXMuYWRkKGNsYXNzTm9kZSk7XG5cbiAgICAgICAgaWYgKGhhc1BvdGVudGlhbFNpZGVFZmZlY3RzIHx8IHdyYXBTdGF0ZW1lbnRQYXRocy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3cmFwU3RhdGVtZW50Tm9kZXM6IHR5cGVzLlN0YXRlbWVudFtdID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgc3RhdGVtZW50UGF0aCBvZiB3cmFwU3RhdGVtZW50UGF0aHMpIHtcbiAgICAgICAgICB3cmFwU3RhdGVtZW50Tm9kZXMucHVzaChzdGF0ZW1lbnRQYXRoLm5vZGUpO1xuICAgICAgICAgIHN0YXRlbWVudFBhdGgucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXcmFwIGNsYXNzIGFuZCBzYWZlIHN0YXRpYyBhc3NpZ25tZW50cyBpbiBhIHB1cmUgYW5ub3RhdGVkIElJRkVcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdHlwZXMuYXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oXG4gICAgICAgICAgW10sXG4gICAgICAgICAgdHlwZXMuYmxvY2tTdGF0ZW1lbnQoW1xuICAgICAgICAgICAgdHlwZXMudmFyaWFibGVEZWNsYXJhdGlvbignbGV0JywgW1xuICAgICAgICAgICAgICB0eXBlcy52YXJpYWJsZURlY2xhcmF0b3IodHlwZXMuY2xvbmVOb2RlKGNsYXNzTm9kZS5pZCksIGNsYXNzTm9kZSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIC4uLndyYXBTdGF0ZW1lbnROb2RlcyxcbiAgICAgICAgICAgIHR5cGVzLnJldHVyblN0YXRlbWVudCh0eXBlcy5jbG9uZU5vZGUoY2xhc3NOb2RlLmlkKSksXG4gICAgICAgICAgXSksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VtZW50SW5pdGlhbGl6ZXIgPSB0eXBlcy5jYWxsRXhwcmVzc2lvbihcbiAgICAgICAgICB0eXBlcy5wYXJlbnRoZXNpemVkRXhwcmVzc2lvbihjb250YWluZXIpLFxuICAgICAgICAgIFtdLFxuICAgICAgICApO1xuICAgICAgICBhbm5vdGF0ZUFzUHVyZShyZXBsYWNlbWVudEluaXRpYWxpemVyKTtcblxuICAgICAgICAvLyBBZGQgdGhlIHdyYXBwZWQgY2xhc3MgZGlyZWN0bHkgdG8gdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uXG4gICAgICAgIHBhcmVudFBhdGguZ2V0KCdpbml0JykucmVwbGFjZVdpdGgocmVwbGFjZW1lbnRJbml0aWFsaXplcik7XG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
319
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRqdXN0LXN0YXRpYy1jbGFzcy1tZW1iZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvYnVpbGRfYW5ndWxhci9zcmMvYmFiZWwvcGx1Z2lucy9hZGp1c3Qtc3RhdGljLWNsYXNzLW1lbWJlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7O0FBRUgsc0NBQXFFO0FBQ3JFLDZGQUE0RDtBQUM1RCw2R0FBNEU7QUFFNUU7O0dBRUc7QUFDSCxNQUFNLDBCQUEwQixHQUFHLFlBQVksQ0FBQztBQUVoRDs7OztHQUlHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNuQyxNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE9BQU87SUFDUCxPQUFPO0lBQ1AsY0FBYztDQUNmLENBQUMsQ0FBQztBQUVIOzs7R0FHRztBQUNILE1BQU0scUJBQXFCLEdBQWtFO0lBQzNGLGdCQUFnQixDQUFDLElBQUk7UUFDbkIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsWUFBWSxDQUFDLElBQUk7UUFDZixPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxJQUFJO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDbkMsQ0FBQztDQUNGLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQWdCLFdBQVc7SUFDekIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFGRCxrQ0FFQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxlQUFlLENBQUMsWUFBb0IsRUFBRSxlQUF5QjtJQUN0RSxJQUFJ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LFNBQVMsR0FBRyxZQUFLLENBQUMsdUJBQXVCLENBQzdDLEVBQUUsRUFDRixZQUFLLENBQUMsY0FBYyxDQUFDO29CQUNuQixZQUFLLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFO3dCQUMvQixZQUFLLENBQUMsa0JBQWtCLENBQUMsWUFBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDO3FCQUNuRSxDQUFDO29CQUNGLEdBQUcsa0JBQWtCO29CQUNyQixZQUFLLENBQUMsZUFBZSxDQUFDLFlBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNyRCxDQUFDLENBQ0gsQ0FBQztnQkFDRixNQUFNLHNCQUFzQixHQUFHLFlBQUssQ0FBQyxjQUFjLENBQ2pELFlBQUssQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsRUFDeEMsRUFBRSxDQUNILENBQUM7Z0JBQ0YsSUFBQSxpQ0FBYyxFQUFDLHNCQUFzQixDQUFDLENBQUM7Z0JBRXZDLDZEQUE2RDtnQkFDN0QsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUM3RCxDQUFDO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQztBQTNLRCw0QkEyS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgTm9kZVBhdGgsIFBsdWdpbk9iaiwgUGx1Z2luUGFzcywgdHlwZXMgfSBmcm9tICdAYmFiZWwvY29yZSc7XG5pbXBvcnQgYW5ub3RhdGVBc1B1cmUgZnJvbSAnQGJhYmVsL2hlbHBlci1hbm5vdGF0ZS1hcy1wdXJlJztcbmltcG9ydCBzcGxpdEV4cG9ydERlY2xhcmF0aW9uIGZyb20gJ0BiYWJlbC9oZWxwZXItc3BsaXQtZXhwb3J0LWRlY2xhcmF0aW9uJztcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgVHlwZXNjcmlwdCBkZWNvcmF0b3IgaGVscGVyIGZ1bmN0aW9uIGNyZWF0ZWQgYnkgdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIuXG4gKi9cbmNvbnN0IFRTTElCX0RFQ09SQVRFX0hFTFBFUl9OQU1FID0gJ19fZGVjb3JhdGUnO1xuXG4vKipcbiAqIFRoZSBzZXQgb2YgQW5ndWxhciBzdGF0aWMgZmllbGRzIHRoYXQgc2hvdWxkIGFsd2F5cyBiZSB3cmFwcGVkLlxuICogVGhlc2UgZmllbGRzIG1heSBhcHBlYXIgdG8gaGF2ZSBzaWRlIGVmZmVjdHMgYnV0IGFyZSBzYWZlIHRvIHJlbW92ZSBpZiB0aGUgYXNzb2NpYXRlZCBjbGFzc1xuICogaXMgb3RoZXJ3aXNlIHVudXNlZCB3aXRoaW4gdGhlIG91dHB1dC5cbiAqL1xuY29uc3QgYW5ndWxhclN0YXRpY3NUb1dyYXAgPSBuZXcgU2V0KFtcbiAgJ8m1Y21wJyxcbiAgJ8m1ZGlyJyxcbiAgJ8m1ZmFjJyxcbiAgJ8m1aW5qJyxcbiAgJ8m1bW9kJyxcbiAgJ8m1cGlwZScsXG4gICfJtXByb3YnLFxuICAnSU5KRUNUT1JfS0VZJyxcbl0pO1xuXG4vKipcbiAqIEFuIG9iamVjdCBtYXAgb2Ygc3RhdGljIGZpZWxkcyBhbmQgcmVsYXRlZCB2YWx1ZSBjaGVja3MgZm9yIGRpc2NvdmVyeSBvZiBBbmd1bGFyIGdlbmVyYXRlZFxuICogSklUIHJlbGF0ZWQgc3RhdGljIGZpZWxkcy5cbiAqL1xuY29uc3QgYW5ndWxhclN0YXRpY3NUb0VsaWRlOiBSZWNvcmQ8c3RyaW5nLCAocGF0aDogTm9kZVBhdGg8dHlwZXMuRXhwcmVzc2lvbj4pID0+IGJvb2xlYW4+ID0ge1xuICAnY3RvclBhcmFtZXRlcnMnKHBhdGgpIHtcbiAgICByZXR1cm4gcGF0aC5pc0Z1bmN0aW9uRXhwcmVzc2lvbigpIHx8IHBhdGguaXNBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbigpO1xuICB9LFxuICAnZGVjb3JhdG9ycycocGF0aCkge1xuICAgIHJldHVybiBwYXRoLmlzQXJyYXlFeHByZXNzaW9uKCk7XG4gIH0sXG4gICdwcm9wRGVjb3JhdG9ycycocGF0aCkge1xuICAgIHJldHVybiBwYXRoLmlzT2JqZWN0RXhwcmVzc2lvbigpO1xuICB9LFxufTtcblxuLyoqXG4gKiBQcm92aWRlcyBvbmUgb3IgbW9yZSBrZXl3b3JkcyB0aGF0IGlmIGZvdW5kIHdpdGhpbiB0aGUgY29udGVudCBvZiBhIHNvdXJjZSBmaWxlIGluZGljYXRlXG4gKiB0aGF0IHRoaXMgcGx1Z2luIHNob3VsZCBiZSB1c2VkIHdpdGggYSBzb3VyY2UgZmlsZS5cbiAqXG4gKiBAcmV0dXJucyBBbiBhIHN0cmluZyBpdGVyYWJsZSBjb250YWluaW5nIG9uZSBvciBtb3JlIGtleXdvcmRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5d29yZHMoKTogSXRlcmFibGU8c3RyaW5nPiB7XG4gIHJldHVybiBbJ2NsYXNzJ107XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgcHJvcGVydHkgYW5kIGl0cyBpbml0aWFsaXplciB2YWx1ZSBjYW4gYmUgc2FmZWx5IHdyYXBwZWQgaW4gYSBwdXJlXG4gKiBhbm5vdGF0ZWQgSUlGRS4gVmFsdWVzIHRoYXQgbWF5IGNhdXNlIHNpZGUgZWZmZWN0cyBhcmUgbm90IGNvbnNpZGVyZWQgc2FmZSB0byB3cmFwLlxuICogV3JhcHBpbmcgc3VjaCB2YWx1ZXMgbWF5IGNhdXNlIHJ1bnRpbWUgZXJyb3JzIGFuZC9vciBpbmNvcnJlY3QgcnVudGltZSBiZWhhdmlvci5cbiAqXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBhbmFseXplLlxuICogQHBhcmFtIGFzc2lnbm1lbnRWYWx1ZSBUaGUgaW5pdGlhbGl6ZXIgdmFsdWUgdGhhdCB3aWxsIGJlIGFzc2lnbmVkIHRvIHRoZSBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIElmIHRoZSBwcm9wZXJ0eSBjYW4gYmUgc2FmZWx5IHdyYXBwZWQsIHRoZW4gdHJ1ZTsgb3RoZXJ3aXNlLCBmYWxzZS5cbiAqL1xuZnVuY3Rpb24gY2FuV3JhcFByb3BlcnR5KHByb3BlcnR5TmFtZTogc3RyaW5nLCBhc3NpZ25tZW50VmFsdWU6IE5vZGVQYXRoKTogYm9vbGVhbiB7XG4gIGlmIChhbmd1bGFyU3RhdGljc1RvV3JhcC5oYXMocHJvcGVydHlOYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgeyBsZWFkaW5nQ29tbWVudHMgfSA9IGFzc2lnbm1lbnRWYWx1ZS5ub2RlIGFzIHsgbGVhZGluZ0NvbW1lbnRzPzogeyB2YWx1ZTogc3RyaW5nIH1bXSB9O1xuICBpZiAoXG4gICAgbGVhZGluZ0NvbW1lbnRzPy5zb21lKFxuICAgICAgLy8gYEBwdXJlT3JCcmVha015Q29kZWAgaXMgdXNlZCBieSBjbG9zdXJlIGFuZCBpcyBwcmVzZW50IGluIEFuZ3VsYXIgY29kZVxuICAgICAgKHsgdmFsdWUgfSkgPT5cbiAgICAgICAgdmFsdWUuaW5jbHVkZXMoJ0BfX1BVUkVfXycpIHx8XG4gICAgICAgIHZhbHVlLmluY2x1ZGVzKCcjX19QVVJFX18nKSB8fFxuICAgICAgICB2YWx1ZS5pbmNsdWRlcygnQHB1cmVPckJyZWFrTXlDb2RlJyksXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBhc3NpZ25tZW50VmFsdWUuaXNQdXJlKCk7XG59XG5cbi8qKlxuICogQW5hbHl6ZSB0aGUgc2libGluZyBub2RlcyBvZiBhIGNsYXNzIHRvIGRldGVybWluZSBpZiBhbnkgZG93bmxldmVsIGVsZW1lbnRzIHNob3VsZCBiZVxuICogd3JhcHBlZCBpbiBhIHB1cmUgYW5ub3RhdGVkIElJRkUuIEFsc28gZGV0ZXJtaW5lcyBpZiBhbnkgZWxlbWVudHMgaGF2ZSBwb3RlbnRpYWwgc2lkZVxuICogZWZmZWN0cy5cbiAqXG4gKiBAcGFyYW0gb3JpZ2luIFRoZSBzdGFydGluZyBOb2RlUGF0aCBsb2NhdGlvbiBmb3IgYW5hbHl6aW5nIHNpYmxpbmdzLlxuICogQHBhcmFtIGNsYXNzSWRlbnRpZmllciBUaGUgaWRlbnRpZmllciBub2RlIHRoYXQgcmVwcmVzZW50cyB0aGUgbmFtZSBvZiB0aGUgY2xhc3MuXG4gKiBAcGFyYW0gYWxsb3dXcmFwcGluZ0RlY29yYXRvcnMgV2hldGhlciB0byBhbGxvdyBkZWNvcmF0b3JzIHRvIGJlIHdyYXBwZWQuXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG4gKi9cbmZ1bmN0aW9uIGFuYWx5emVDbGFzc1NpYmxpbmdzKFxuICBvcmlnaW46IE5vZGVQYXRoLFxuICBjbGFzc0lkZW50aWZpZXI6IHR5cGVzLklkZW50aWZpZXIsXG4gIGFsbG93V3JhcHBpbmdEZWNvcmF0b3JzOiBib29sZWFuLFxuKTogeyBoYXNQb3RlbnRpYWxTaWRlRWZmZWN0czogYm9vbGVhbjsgd3JhcFN0YXRlbWVudFBhdGhzOiBOb2RlUGF0aDx0eXBlcy5TdGF0ZW1lbnQ+W10gfSB7XG4gIGNvbnN0IHdyYXBTdGF0ZW1lbnRQYXRoczogTm9kZVBhdGg8dHlwZXMuU3RhdGVtZW50PltdID0gW107XG4gIGxldCBoYXNQb3RlbnRpYWxTaWRlRWZmZWN0cyA9IGZhbHNlO1xuICBmb3IgKGxldCBpID0gMTsgOyArK2kpIHtcbiAgICBjb25zdCBuZXh0U3RhdGVtZW50ID0gb3JpZ2luLmdldFNpYmxpbmcoK29yaWdpbi5rZXkgKyBpKTtcbiAgICBpZiAoIW5leHRTdGF0ZW1lbnQuaXNFeHByZXNzaW9uU3RhdGVtZW50KCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFZhbGlkIHNpYmxpbmcgc3RhdGVtZW50cyBmb3IgY2xhc3MgZGVjbGFyYXRpb25zIGFyZSBvbmx5IGFzc2lnbm1lbnQgZXhwcmVzc2lvbnNcbiAgICAvLyBhbmQgVHlwZVNjcmlwdCBkZWNvcmF0b3IgaGVscGVyIGNhbGwgZXhwcmVzc2lvbnNcbiAgICBjb25zdCBuZXh0RXhwcmVzc2lvbiA9IG5leHRTdGF0ZW1lbnQuZ2V0KCdleHByZXNzaW9uJyk7XG4gICAgaWYgKG5leHRFeHByZXNzaW9uLmlzQ2FsbEV4cHJlc3Npb24oKSkge1xuICAgICAgaWYgKFxuICAgICAgICAhdHlwZXMuaXNJZGVudGlmaWVyKG5leHRFeHByZXNzaW9uLm5vZGUuY2FsbGVlKSB8fFxuICAgICAgICBuZXh0RXhwcmVzc2lvbi5ub2RlLmNhbGxlZS5uYW1lICE9PSBUU0xJQl9ERUNPUkFURV9IRUxQRVJfTkFNRVxuICAgICAgKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWxsb3dXcmFwcGluZ0RlY29yYXRvcnMpIHtcbiAgICAgICAgd3JhcFN0YXRlbWVudFBhdGhzLnB1c2gobmV4dFN0YXRlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTdGF0ZW1lbnQgY2Fubm90IGJlIHNhZmVseSB3cmFwcGVkIHdoaWNoIG1ha2VzIHdyYXBwaW5nIHRoZSBjbGFzcyB1bm5lZWRlZC5cbiAgICAgICAgLy8gVGhlIHN0YXRlbWVudCB3aWxsIHByZXZlbnQgZXZlbiBhIHdyYXBwZWQgY2xhc3MgZnJvbSBiZWluZyBvcHRpbWl6ZWQgYXdheS5cbiAgICAgICAgaGFzUG90ZW50aWFsU2lkZUVmZmVjdHMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBjb250aW51ZTtcbiAgICB9IGVsc2UgaWYgKCFuZXh0RXhwcmVzc2lvbi5pc0Fzc2lnbm1lbnRFeHByZXNzaW9uKCkpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFZhbGlkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbnMgc2hvdWxkIGJlIG1lbWJlciBhY2Nlc3MgZXhwcmVzc2lvbnMgdXNpbmcgdGhlIGNsYXNzXG4gICAgLy8gbmFtZSBhcyB0aGUgb2JqZWN0IGFuZCBhbiBpZGVudGlmaWVyIGFzIHRoZSBwcm9wZXJ0eSBmb3Igc3RhdGljIGZpZWxkcyBvciBvbmx5XG4gICAgLy8gdGhlIGNsYXNzIG5hbWUgZm9yIGRlY29yYXRvcnMuXG4gICAgY29uc3QgbGVmdCA9IG5leHRFeHByZXNzaW9uLmdldCgnbGVmdCcpO1xuICAgIGlmIChsZWZ0LmlzSWRlbnRpZmllcigpKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFsZWZ0LnNjb3BlLmJpbmRpbmdJZGVudGlmaWVyRXF1YWxzKGxlZnQubm9kZS5uYW1lLCBjbGFzc0lkZW50aWZpZXIpIHx8XG4gICAgICAgICF0eXBlcy5pc0NhbGxFeHByZXNzaW9uKG5leHRFeHByZXNzaW9uLm5vZGUucmlnaHQpIHx8XG4gICAgICAgICF0eXBlcy5pc0lkZW50aWZpZXIobmV4dEV4cHJlc3Npb24ubm9kZS5yaWdodC5jYWxsZWUpIHx8XG4gICAgICAgIG5leHRFeHByZXNzaW9uLm5vZGUucmlnaHQuY2FsbGVlLm5hbWUgIT09IFRTTElCX0RFQ09SQVRFX0hFTFBFUl9OQU1FXG4gICAgICApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChhbGxvd1dyYXBwaW5nRGVjb3JhdG9ycykge1xuICAgICAgICB3cmFwU3RhdGVtZW50UGF0aHMucHVzaChuZXh0U3RhdGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFN0YXRlbWVudCBjYW5ub3QgYmUgc2FmZWx5IHdyYXBwZWQgd2hpY2ggbWFrZXMgd3JhcHBpbmcgdGhlIGNsYXNzIHVubmVlZGVkLlxuICAgICAgICAvLyBUaGUgc3RhdGVtZW50IHdpbGwgcHJldmVudCBldmVuIGEgd3JhcHBlZCBjbGFzcyBmcm9tIGJlaW5nIG9wdGltaXplZCBhd2F5LlxuICAgICAgICBoYXNQb3RlbnRpYWxTaWRlRWZmZWN0cyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAhbGVmdC5pc01lbWJlckV4cHJlc3Npb24oKSB8fFxuICAgICAgIXR5cGVzLmlzSWRlbnRpZmllcihsZWZ0Lm5vZGUub2JqZWN0KSB8fFxuICAgICAgIWxlZnQuc2NvcGUuYmluZGluZ0lkZW50aWZpZXJFcXVhbHMobGVmdC5ub2RlLm9iamVjdC5uYW1lLCBjbGFzc0lkZW50aWZpZXIpIHx8XG4gICAgICAhdHlwZXMuaXNJZGVudGlmaWVyKGxlZnQubm9kZS5wcm9wZXJ0eSlcbiAgICApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGxlZnQubm9kZS5wcm9wZXJ0eS5uYW1lO1xuICAgIGNvbnN0IGFzc2lnbm1lbnRWYWx1ZSA9IG5leHRFeHByZXNzaW9uLmdldCgncmlnaHQnKTtcbiAgICBpZiAoYW5ndWxhclN0YXRpY3NUb0VsaWRlW3Byb3BlcnR5TmFtZV0/Lihhc3NpZ25tZW50VmFsdWUpKSB7XG4gICAgICBuZXh0U3RhdGVtZW50LnJlbW92ZSgpO1xuICAgICAgLS1pO1xuICAgIH0gZWxzZSBpZiAoY2FuV3JhcFByb3BlcnR5KHByb3BlcnR5TmFtZSwgYXNzaWdubWVudFZhbHVlKSkge1xuICAgICAgd3JhcFN0YXRlbWVudFBhdGhzLnB1c2gobmV4dFN0YXRlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFN0YXRlbWVudCBjYW5ub3QgYmUgc2FmZWx5IHdyYXBwZWQgd2hpY2ggbWFrZXMgd3JhcHBpbmcgdGhlIGNsYXNzIHVubmVlZGVkLlxuICAgICAgLy8gVGhlIHN0YXRlbWVudCB3aWxsIHByZXZlbnQgZXZlbiBhIHdyYXBwZWQgY2xhc3MgZnJvbSBiZWluZyBvcHRpbWl6ZWQgYXdheS5cbiAgICAgIGhhc1BvdGVudGlhbFNpZGVFZmZlY3RzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBoYXNQb3RlbnRpYWxTaWRlRWZmZWN0cywgd3JhcFN0YXRlbWVudFBhdGhzIH07XG59XG5cbi8qKlxuICogVGhlIHNldCBvZiBjbGFzc2VzIGFscmVhZHkgdmlzaXRlZCBhbmQgYW5hbHl6ZWQgZHVyaW5nIHRoZSBwbHVnaW4ncyBleGVjdXRpb24uXG4gKiBUaGlzIGlzIHVzZWQgdG8gcHJldmVudCBhZGp1c3RlZCBjbGFzc2VzIGZyb20gYmVpbmcgcmVwZWF0ZWRseSBhbmFseXplZCB3aGljaCBjYW4gbGVhZFxuICogdG8gYW4gaW5maW5pdGUgbG9vcC5cbiAqL1xuY29uc3QgdmlzaXRlZENsYXNzZXMgPSBuZXcgV2Vha1NldDx0eXBlcy5DbGFzcz4oKTtcblxuLyoqXG4gKiBBIG1hcCBvZiBjbGFzc2VzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gYW5hbHl6ZWQgZHVyaW5nIHRoZSBkZWZhdWx0IGV4cG9ydCBzcGxpdHRpbmcgc3RlcC5cbiAqIFRoaXMgaXMgdXNlZCB0byBhdm9pZCBhbmFseXppbmcgYSBjbGFzcyBkZWNsYXJhdGlvbiB0d2ljZSBpZiBpdCBpcyBhIGRpcmVjdCBkZWZhdWx0IGV4cG9ydC5cbiAqL1xuY29uc3QgZXhwb3J0RGVmYXVsdEFuYWx5c2lzID0gbmV3IFdlYWtNYXA8dHlwZXMuQ2xhc3MsIFJldHVyblR5cGU8dHlwZW9mIGFuYWx5emVDbGFzc1NpYmxpbmdzPj4oKTtcblxuLyoqXG4gKiBBIGJhYmVsIHBsdWdpbiBmYWN0b3J5IGZ1bmN0aW9uIGZvciBhZGp1c3RpbmcgY2xhc3NlczsgcHJpbWFyaWx5IHdpdGggQW5ndWxhciBtZXRhZGF0YS5cbiAqIFRoZSBhZGp1c3RtZW50cyBpbmNsdWRlIHdyYXBwaW5nIGNsYXNzZXMgd2l0aCBrbm93biBzYWZlIG9yIG5vIHNpZGUgZWZmZWN0cyB3aXRoIHB1cmVcbiAqIGFubm90YXRpb25zIHRvIHN1cHBvcnQgZGVhZCBjb2RlIHJlbW92YWwgb2YgdW51c2VkIGNsYXNzZXMuIEFuZ3VsYXIgY29tcGlsZXIgZ2VuZXJhdGVkXG4gKiBtZXRhZGF0YSBzdGF0aWMgZmllbGRzIG5vdCByZXF1aXJlZCBpbiBBT1QgbW9kZSBhcmUgYWxzbyBlbGlkZWQgdG8gYmV0dGVyIHN1cHBvcnQgYnVuZGxlci1cbiAqIGxldmVsIHRyZWVzaGFraW5nLlxuICpcbiAqIEByZXR1cm5zIEEgYmFiZWwgcGx1Z2luIG9iamVjdCBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCk6IFBsdWdpbk9iaiB7XG4gIHJldHVybiB7XG4gICAgdmlzaXRvcjoge1xuICAgICAgLy8gV2hlbiBhIGNsYXNzIGlzIGNvbnZlcnRlZCB0byBhIHZhcmlhYmxlIGRlY2xhcmF0aW9uLCB0aGUgZGVmYXVsdCBleHBvcnQgbXVzdCBiZSBtb3ZlZFxuICAgICAgLy8gdG8gYSBzdWJzZXF1ZW50IHN0YXRlbWVudCB0byBwcmV2ZW50IGEgSmF2YVNjcmlwdCBzeW50YXggZXJyb3IuXG4gICAgICBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24ocGF0aDogTm9kZVBhdGg8dHlwZXMuRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uPiwgc3RhdGU6IFBsdWdpblBhc3MpIHtcbiAgICAgICAgY29uc3QgZGVjbGFyYXRpb24gPSBwYXRoLmdldCgnZGVjbGFyYXRpb24nKTtcbiAgICAgICAgaWYgKCFkZWNsYXJhdGlvbi5pc0NsYXNzRGVjbGFyYXRpb24oKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgd3JhcERlY29yYXRvcnMgfSA9IHN0YXRlLm9wdHMgYXMgeyB3cmFwRGVjb3JhdG9yczogYm9vbGVhbiB9O1xuICAgICAgICBjb25zdCBhbmFseXNpcyA9IGFuYWx5emVDbGFzc1NpYmxpbmdzKHBhdGgsIGRlY2xhcmF0aW9uLm5vZGUuaWQsIHdyYXBEZWNvcmF0b3JzKTtcbiAgICAgICAgZXhwb3J0RGVmYXVsdEFuYWx5c2lzLnNldChkZWNsYXJhdGlvbi5ub2RlLCBhbmFseXNpcyk7XG5cbiAgICAgICAgLy8gU3BsaXR0aW5nIHRoZSBleHBvcnQgZGVjbGFyYXRpb24gaXMgbm90IG5lZWRlZCBpZiB0aGUgY2xhc3Mgd2lsbCBub3QgYmUgd3JhcHBlZFxuICAgICAgICBpZiAoYW5hbHlzaXMuaGFzUG90ZW50aWFsU2lkZUVmZmVjdHMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzcGxpdEV4cG9ydERlY2xhcmF0aW9uKHBhdGgpO1xuICAgICAgfSxcbiAgICAgIENsYXNzRGVjbGFyYXRpb24ocGF0aDogTm9kZVBhdGg8dHlwZXMuQ2xhc3NEZWNsYXJhdGlvbj4sIHN0YXRlOiBQbHVnaW5QYXNzKSB7XG4gICAgICAgIGNvbnN0IHsgbm9kZTogY2xhc3NOb2RlLCBwYXJlbnRQYXRoIH0gPSBwYXRoO1xuICAgICAgICBjb25zdCB7IHdyYXBEZWNvcmF0b3JzIH0gPSBzdGF0ZS5vcHRzIGFzIHsgd3JhcERlY29yYXRvcnM6IGJvb2xlYW4gfTtcblxuICAgICAgICBpZiAodmlzaXRlZENsYXNzZXMuaGFzKGNsYXNzTm9kZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBbmFseXplIHNpYmxpbmcgc3RhdGVtZW50cyBmb3IgZWxlbWVudHMgb2YgdGhlIGNsYXNzIHRoYXQgd2VyZSBkb3dubGV2ZWxlZFxuICAgICAgICBjb25zdCBvcmlnaW4gPSBwYXJlbnRQYXRoLmlzRXhwb3J0TmFtZWREZWNsYXJhdGlvbigpID8gcGFyZW50UGF0aCA6IHBhdGg7XG4gICAgICAgIGNvbnN0IHsgd3JhcFN0YXRlbWVudFBhdGhzLCBoYXNQb3RlbnRpYWxTaWRlRWZmZWN0cyB9ID1cbiAgICAgICAgICBleHBvcnREZWZhdWx0QW5hbHlzaXMuZ2V0KGNsYXNzTm9kZSkgPz9cbiAgICAgICAgICBhbmFseXplQ2xhc3NTaWJsaW5ncyhvcmlnaW4sIGNsYXNzTm9kZS5pZCwgd3JhcERlY29yYXRvcnMpO1xuXG4gICAgICAgIHZpc2l0ZWRDbGFzc2VzLmFkZChjbGFzc05vZGUpO1xuXG4gICAgICAgIGlmIChoYXNQb3RlbnRpYWxTaWRlRWZmZWN0cykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIG5vIHN0YXRlbWVudHMgdG8gd3JhcCwgY2hlY2sgZm9yIHN0YXRpYyBjbGFzcyBwcm9wZXJ0aWVzLlxuICAgICAgICAvLyBTdGF0aWMgY2xhc3MgcHJvcGVydGllcyBtYXkgYmUgZG93bmxldmVsZWQgYXQgbGF0ZXIgc3RhZ2VzIGluIHRoZSBidWlsZCBwaXBlbGluZVxuICAgICAgICAvLyB3aGljaCByZXN1bHRzIGluIGFkZGl0aW9uYWwgZnVuY3Rpb24gY2FsbHMgb3V0c2lkZSB0aGUgY2xhc3MgYm9keS4gVGhlc2UgY2FsbHNcbiAgICAgICAgLy8gdGhlbiBjYXVzZSB0aGUgY2xhc3MgdG8gYmUgcmVmZXJlbmNlZCBhbmQgbm90IGVsaWdpYmxlIGZvciByZW1vdmFsLiBTaW5jZSBpdCBpc1xuICAgICAgICAvLyBub3Qga25vd24gYXQgdGhpcyBzdGFnZSB3aGV0aGVyIHRoZSBjbGFzcyBuZWVkcyB0byBiZSBkb3dubGV2ZWxlZCwgdGhlIHRyYW5zZm9ybVxuICAgICAgICAvLyB3cmFwcyBjbGFzc2VzIHByZWVtcHRpdmVseSB0byBhbGxvdyBmb3IgcG90ZW50aWFsIHJlbW92YWwgd2l0aGluIHRoZSBvcHRpbWl6YXRpb25cbiAgICAgICAgLy8gc3RhZ2VzLlxuICAgICAgICBpZiAod3JhcFN0YXRlbWVudFBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGxldCBzaG91bGRXcmFwID0gZmFsc2U7XG4gICAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHBhdGguZ2V0KCdib2R5JykuZ2V0KCdib2R5JykpIHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmlzQ2xhc3NQcm9wZXJ0eSgpKSB7XG4gICAgICAgICAgICAgIC8vIE9ubHkgbmVlZCB0byBhbmFseXplIHN0YXRpYyBwcm9wZXJ0aWVzXG4gICAgICAgICAgICAgIGlmICghZWxlbWVudC5ub2RlLnN0YXRpYykge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuXG4gICAgICAgICAgICAgIC8vIFRoZXNlIGNoZWNrcyBhcmUgY29uc2VydmF0aXZlIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBiZSBleHBhbmRlZCBpbiB0aGUgZnV0dXJlLlxuICAgICAgICAgICAgICBjb25zdCBlbGVtZW50S2V5ID0gZWxlbWVudC5nZXQoJ2tleScpO1xuICAgICAgICAgICAgICBjb25zdCBlbGVtZW50VmFsdWUgPSBlbGVtZW50LmdldCgndmFsdWUnKTtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGVsZW1lbnRLZXkuaXNJZGVudGlmaWVyKCkgJiZcbiAgICAgICAgICAgICAgICAoIWVsZW1lbnRWYWx1ZS5pc0V4cHJlc3Npb24oKSB8fFxuICAgICAgICAgICAgICAgICAgY2FuV3JhcFByb3BlcnR5KGVsZW1lbnRLZXkuZ2V0KCduYW1lJyksIGVsZW1lbnRWYWx1ZSkpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHNob3VsZFdyYXAgPSB0cnVlO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIE5vdCBzYWZlIHRvIHdyYXBcbiAgICAgICAgICAgICAgICBzaG91bGRXcmFwID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFzaG91bGRXcmFwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd3JhcFN0YXRlbWVudE5vZGVzOiB0eXBlcy5TdGF0ZW1lbnRbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHN0YXRlbWVudFBhdGggb2Ygd3JhcFN0YXRlbWVudFBhdGhzKSB7XG4gICAgICAgICAgd3JhcFN0YXRlbWVudE5vZGVzLnB1c2goc3RhdGVtZW50UGF0aC5ub2RlKTtcbiAgICAgICAgICBzdGF0ZW1lbnRQYXRoLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV3JhcCBjbGFzcyBhbmQgc2FmZSBzdGF0aWMgYXNzaWdubWVudHMgaW4gYSBwdXJlIGFubm90YXRlZCBJSUZFXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHR5cGVzLmFycm93RnVuY3Rpb25FeHByZXNzaW9uKFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIHR5cGVzLmJsb2NrU3RhdGVtZW50KFtcbiAgICAgICAgICAgIGNsYXNzTm9kZSxcbiAgICAgICAgICAgIC4uLndyYXBTdGF0ZW1lbnROb2RlcyxcbiAgICAgICAgICAgIHR5cGVzLnJldHVyblN0YXRlbWVudCh0eXBlcy5jbG9uZU5vZGUoY2xhc3NOb2RlLmlkKSksXG4gICAgICAgICAgXSksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VtZW50SW5pdGlhbGl6ZXIgPSB0eXBlcy5jYWxsRXhwcmVzc2lvbihcbiAgICAgICAgICB0eXBlcy5wYXJlbnRoZXNpemVkRXhwcmVzc2lvbihjb250YWluZXIpLFxuICAgICAgICAgIFtdLFxuICAgICAgICApO1xuICAgICAgICBhbm5vdGF0ZUFzUHVyZShyZXBsYWNlbWVudEluaXRpYWxpemVyKTtcblxuICAgICAgICAvLyBSZXBsYWNlIGNsYXNzIHdpdGggSUlGRSB3cmFwcGVkIGNsYXNzXG4gICAgICAgIGNvbnN0IGRlY2xhcmF0aW9uID0gdHlwZXMudmFyaWFibGVEZWNsYXJhdGlvbignbGV0JywgW1xuICAgICAgICAgIHR5cGVzLnZhcmlhYmxlRGVjbGFyYXRvcih0eXBlcy5jbG9uZU5vZGUoY2xhc3NOb2RlLmlkKSwgcmVwbGFjZW1lbnRJbml0aWFsaXplciksXG4gICAgICAgIF0pO1xuICAgICAgICBwYXRoLnJlcGxhY2VXaXRoKGRlY2xhcmF0aW9uKTtcbiAgICAgIH0sXG4gICAgICBDbGFzc0V4cHJlc3Npb24ocGF0aDogTm9kZVBhdGg8dHlwZXMuQ2xhc3NFeHByZXNzaW9uPiwgc3RhdGU6IFBsdWdpblBhc3MpIHtcbiAgICAgICAgY29uc3QgeyBub2RlOiBjbGFzc05vZGUsIHBhcmVudFBhdGggfSA9IHBhdGg7XG4gICAgICAgIGNvbnN0IHsgd3JhcERlY29yYXRvcnMgfSA9IHN0YXRlLm9wdHMgYXMgeyB3cmFwRGVjb3JhdG9yczogYm9vbGVhbiB9O1xuXG4gICAgICAgIC8vIENsYXNzIGV4cHJlc3Npb25zIGFyZSB1c2VkIGJ5IFR5cGVTY3JpcHQgdG8gcmVwcmVzZW50IGRvd25sZXZlbCBjbGFzcy9jb25zdHJ1Y3RvciBkZWNvcmF0b3JzLlxuICAgICAgICAvLyBJZiBub3Qgd3JhcHBpbmcgZGVjb3JhdG9ycywgdGhleSBkbyBub3QgbmVlZCB0byBiZSBwcm9jZXNzZWQuXG4gICAgICAgIGlmICghd3JhcERlY29yYXRvcnMgfHwgdmlzaXRlZENsYXNzZXMuaGFzKGNsYXNzTm9kZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgIWNsYXNzTm9kZS5pZCB8fFxuICAgICAgICAgICFwYXJlbnRQYXRoLmlzVmFyaWFibGVEZWNsYXJhdG9yKCkgfHxcbiAgICAgICAgICAhdHlwZXMuaXNJZGVudGlmaWVyKHBhcmVudFBhdGgubm9kZS5pZCkgfHxcbiAgICAgICAgICBwYXJlbnRQYXRoLm5vZGUuaWQubmFtZSAhPT0gY2xhc3NOb2RlLmlkLm5hbWVcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3JpZ2luID0gcGFyZW50UGF0aC5wYXJlbnRQYXRoO1xuICAgICAgICBpZiAoIW9yaWdpbi5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oKSB8fCBvcmlnaW4ubm9kZS5kZWNsYXJhdGlvbnMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyB3cmFwU3RhdGVtZW50UGF0aHMsIGhhc1BvdGVudGlhbFNpZGVFZmZlY3RzIH0gPSBhbmFseXplQ2xhc3NTaWJsaW5ncyhcbiAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgcGFyZW50UGF0aC5ub2RlLmlkLFxuICAgICAgICAgIHdyYXBEZWNvcmF0b3JzLFxuICAgICAgICApO1xuXG4gICAgICAgIHZpc2l0ZWRDbGFzc2VzLmFkZChjbGFzc05vZGUpO1xuXG4gICAgICAgIGlmIChoYXNQb3RlbnRpYWxTaWRlRWZmZWN0cyB8fCB3cmFwU3RhdGVtZW50UGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd3JhcFN0YXRlbWVudE5vZGVzOiB0eXBlcy5TdGF0ZW1lbnRbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHN0YXRlbWVudFBhdGggb2Ygd3JhcFN0YXRlbWVudFBhdGhzKSB7XG4gICAgICAgICAgd3JhcFN0YXRlbWVudE5vZGVzLnB1c2goc3RhdGVtZW50UGF0aC5ub2RlKTtcbiAgICAgICAgICBzdGF0ZW1lbnRQYXRoLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV3JhcCBjbGFzcyBhbmQgc2FmZSBzdGF0aWMgYXNzaWdubWVudHMgaW4gYSBwdXJlIGFubm90YXRlZCBJSUZFXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHR5cGVzLmFycm93RnVuY3Rpb25FeHByZXNzaW9uKFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIHR5cGVzLmJsb2NrU3RhdGVtZW50KFtcbiAgICAgICAgICAgIHR5cGVzLnZhcmlhYmxlRGVjbGFyYXRpb24oJ2xldCcsIFtcbiAgICAgICAgICAgICAgdHlwZXMudmFyaWFibGVEZWNsYXJhdG9yKHR5cGVzLmNsb25lTm9kZShjbGFzc05vZGUuaWQpLCBjbGFzc05vZGUpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAuLi53cmFwU3RhdGVtZW50Tm9kZXMsXG4gICAgICAgICAgICB0eXBlcy5yZXR1cm5TdGF0ZW1lbnQodHlwZXMuY2xvbmVOb2RlKGNsYXNzTm9kZS5pZCkpLFxuICAgICAgICAgIF0pLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCByZXBsYWNlbWVudEluaXRpYWxpemVyID0gdHlwZXMuY2FsbEV4cHJlc3Npb24oXG4gICAgICAgICAgdHlwZXMucGFyZW50aGVzaXplZEV4cHJlc3Npb24oY29udGFpbmVyKSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgKTtcbiAgICAgICAgYW5ub3RhdGVBc1B1cmUocmVwbGFjZW1lbnRJbml0aWFsaXplcik7XG5cbiAgICAgICAgLy8gQWRkIHRoZSB3cmFwcGVkIGNsYXNzIGRpcmVjdGx5IHRvIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvblxuICAgICAgICBwYXJlbnRQYXRoLmdldCgnaW5pdCcpLnJlcGxhY2VXaXRoKHJlcGxhY2VtZW50SW5pdGlhbGl6ZXIpO1xuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuIl19
|
|
@@ -92,7 +92,7 @@ function default_1() {
|
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
94
|
hasElements = true;
|
|
95
|
-
enumAssignments
|
|
95
|
+
enumAssignments?.push(enumStatement.node);
|
|
96
96
|
}
|
|
97
97
|
// If there are no enum elements then there is nothing to wrap
|
|
98
98
|
if (!hasElements) {
|
|
@@ -127,4 +127,4 @@ function default_1() {
|
|
|
127
127
|
};
|
|
128
128
|
}
|
|
129
129
|
exports.default = default_1;
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRqdXN0LXR5cGVzY3JpcHQtZW51bXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9iYWJlbC9wbHVnaW5zL2FkanVzdC10eXBlc2NyaXB0LWVudW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7OztBQUVILHNDQUFxRTtBQUNyRSw2RkFBNEQ7QUFFNUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixXQUFXO0lBQ3pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqQixDQUFDO0FBRkQsa0NBRUM7QUFFRDs7OztHQUlHO0FBQ0g7SUFDRSxPQUFPO1FBQ0wsT0FBTyxFQUFFO1lBQ1AsbUJBQW1CLENBQUMsSUFBeUMsRUFBRSxLQUFpQjtnQkFDOUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ2xDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBMEIsQ0FBQztnQkFFbkQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ3pELE9BQU87aUJBQ1I7Z0JBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDekIsT0FBTztpQkFDUjtnQkFFRCxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFlBQUssQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQUU7b0JBQ3RDLE9BQU87aUJBQ1I7Z0JBRUQsTUFBTSxTQUFTLEdBQ2IsVUFB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TUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDOUQsQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUF4SUQsNEJBd0lDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IE5vZGVQYXRoLCBQbHVnaW5PYmosIFBsdWdpblBhc3MsIHR5cGVzIH0gZnJvbSAnQGJhYmVsL2NvcmUnO1xuaW1wb3J0IGFubm90YXRlQXNQdXJlIGZyb20gJ0BiYWJlbC9oZWxwZXItYW5ub3RhdGUtYXMtcHVyZSc7XG5cbi8qKlxuICogUHJvdmlkZXMgb25lIG9yIG1vcmUga2V5d29yZHMgdGhhdCBpZiBmb3VuZCB3aXRoaW4gdGhlIGNvbnRlbnQgb2YgYSBzb3VyY2UgZmlsZSBpbmRpY2F0ZVxuICogdGhhdCB0aGlzIHBsdWdpbiBzaG91bGQgYmUgdXNlZCB3aXRoIGEgc291cmNlIGZpbGUuXG4gKlxuICogQHJldHVybnMgQW4gYSBzdHJpbmcgaXRlcmFibGUgY29udGFpbmluZyBvbmUgb3IgbW9yZSBrZXl3b3Jkcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEtleXdvcmRzKCk6IEl0ZXJhYmxlPHN0cmluZz4ge1xuICByZXR1cm4gWyd2YXInXTtcbn1cblxuLyoqXG4gKiBBIGJhYmVsIHBsdWdpbiBmYWN0b3J5IGZ1bmN0aW9uIGZvciBhZGp1c3RpbmcgVHlwZVNjcmlwdCBlbWl0dGVkIGVudW1zLlxuICpcbiAqIEByZXR1cm5zIEEgYmFiZWwgcGx1Z2luIG9iamVjdCBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCk6IFBsdWdpbk9iaiB7XG4gIHJldHVybiB7XG4gICAgdmlzaXRvcjoge1xuICAgICAgVmFyaWFibGVEZWNsYXJhdGlvbihwYXRoOiBOb2RlUGF0aDx0eXBlcy5WYXJpYWJsZURlY2xhcmF0aW9uPiwgc3RhdGU6IFBsdWdpblBhc3MpIHtcbiAgICAgICAgY29uc3QgeyBwYXJlbnRQYXRoLCBub2RlIH0gPSBwYXRoO1xuICAgICAgICBjb25zdCB7IGxvb3NlIH0gPSBzdGF0ZS5vcHRzIGFzIHsgbG9vc2U6IGJvb2xlYW4gfTtcblxuICAgICAgICBpZiAobm9kZS5raW5kICE9PSAndmFyJyB8fCBub2RlLmRlY2xhcmF0aW9ucy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWNsYXJhdGlvbiA9IHBhdGguZ2V0KCdkZWNsYXJhdGlvbnMnKVswXTtcbiAgICAgICAgaWYgKGRlY2xhcmF0aW9uLm5vZGUuaW5pdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY2xhcmF0aW9uSWQgPSBkZWNsYXJhdGlvbi5ub2RlLmlkO1xuICAgICAgICBpZiAoIXR5cGVzLmlzSWRlbnRpZmllcihkZWNsYXJhdGlvbklkKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhhc0V4cG9ydCA9XG4gICAgICAgICAgcGFyZW50UGF0aC5pc0V4cG9ydE5hbWVkRGVjbGFyYXRpb24oKSB8fCBwYXJlbnRQYXRoLmlzRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uKCk7XG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IGhhc0V4cG9ydCA/IHBhcmVudFBhdGggOiBwYXRoO1xuICAgICAgICBjb25zdCBuZXh0U3RhdGVtZW50ID0gb3JpZ2luLmdldFNpYmxpbmcoK29yaWdpbi5rZXkgKyAxKTtcbiAgICAgICAgaWYgKCFuZXh0U3RhdGVtZW50LmlzRXhwcmVzc2lvblN0YXRlbWVudCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV4dEV4cHJlc3Npb24gPSBuZXh0U3RhdGVtZW50LmdldCgnZXhwcmVzc2lvbicpO1xuICAgICAgICBpZiAoIW5leHRFeHByZXNzaW9uLmlzQ2FsbEV4cHJlc3Npb24oKSB8fCBuZXh0RXhwcmVzc2lvbi5ub2RlLmFyZ3VtZW50cy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbnVtQ2FsbEFyZ3VtZW50ID0gbmV4dEV4cHJlc3Npb24ubm9kZS5hcmd1bWVudHNbMF07XG4gICAgICAgIGlmICghdHlwZXMuaXNMb2dpY2FsRXhwcmVzc2lvbihlbnVtQ2FsbEFyZ3VtZW50LCB7IG9wZXJhdG9yOiAnfHwnIH0pKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgaWRlbnRpZmllcnMgbWF0Y2ggdmFyIGRlY2xhcmF0aW9uXG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdHlwZXMuaXNJZGVudGlmaWVyKGVudW1DYWxsQXJndW1lbnQubGVmdCkgfHxcbiAgICAgICAgICAhbmV4dEV4cHJlc3Npb24uc2NvcGUuYmluZGluZ0lkZW50aWZpZXJFcXVhbHMoZW51bUNhbGxBcmd1bWVudC5sZWZ0Lm5hbWUsIGRlY2xhcmF0aW9uSWQpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVudW1DYWxsZWUgPSBuZXh0RXhwcmVzc2lvbi5nZXQoJ2NhbGxlZScpO1xuICAgICAgICBpZiAoIWVudW1DYWxsZWUuaXNGdW5jdGlvbkV4cHJlc3Npb24oKSB8fCBlbnVtQ2FsbGVlLm5vZGUucGFyYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVudW1DYWxsZWVQYXJhbSA9IGVudW1DYWxsZWUubm9kZS5wYXJhbXNbMF07XG4gICAgICAgIGNvbnN0IGlzRW51bUNhbGxlZU1hdGNoaW5nID1cbiAgICAgICAgICB0eXBlcy5pc0lkZW50aWZpZXIoZW51bUNhbGxlZVBhcmFtKSAmJiBlbnVtQ2FsbGVlUGFyYW0ubmFtZSA9PT0gZGVjbGFyYXRpb25JZC5uYW1lO1xuXG4gICAgICAgIC8vIExvb3NlIG1vZGUgcmV3cml0ZXMgdGhlIGVudW0gdG8gYSBzaG9ydGVyIGJ1dCBsZXNzIFR5cGVTY3JpcHQtbGlrZSBmb3JtXG4gICAgICAgIC8vIE5vdGU6IFdlIG9ubHkgY2FuIGFwcGx5IHRoZSBgbG9vc2VgIG1vZGUgdHJhbnNmb3JtYXRpb24gaWYgdGhlIGNhbGxlZSBwYXJhbWV0ZXIgbWF0Y2hlc1xuICAgICAgICAvLyB3aXRoIHRoZSBkZWNsYXJhdGlvbiBpZGVudGlmaWVyIG5hbWUuIFRoaXMgaXMgbmVjZXNzYXJ5IGluIGNhc2UgdGhlIHRoZSBkZWNsYXJhdGlvbiBpZCBoYXNcbiAgICAgICAgLy8gYmVlbiByZW5hbWVkIHRvIGF2b2lkIGNvbGxpc2lvbnMsIGFzIHRoZSBsb29zZSB0cmFuc2Zvcm0gd291bGQgdGhlbiBicmVhayB0aGUgZW51bSBhc3NpZ25tZW50c1xuICAgICAgICAvLyB3aGljaCByZWx5IG9uIHRoZSBkaWZmZXJlbnRseS1uYW1lZCBjYWxsZWUgaWRlbnRpZmllciBuYW1lLlxuICAgICAgICBsZXQgZW51bUFzc2lnbm1lbnRzOiB0eXBlcy5FeHByZXNzaW9uU3RhdGVtZW50W10gfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChsb29zZSAmJiBpc0VudW1DYWxsZWVNYXRjaGluZykge1xuICAgICAgICAgIGVudW1Bc3NpZ25tZW50cyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgYWxsIGVudW0gbWVtYmVyIHZhbHVlcyBhcmUgcHVyZS5cbiAgICAgICAgLy8gSWYgbm90LCBsZWF2ZSBhcy1pcyBkdWUgdG8gcG90ZW50aWFsIHNpZGUgZWZlY3RzXG4gICAgICAgIGxldCBoYXNFbGVtZW50cyA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGVudW1TdGF0ZW1lbnQgb2YgZW51bUNhbGxlZS5nZXQoJ2JvZHknKS5nZXQoJ2JvZHknKSkge1xuICAgICAgICAgIGlmICghZW51bVN0YXRlbWVudC5pc0V4cHJlc3Npb25TdGF0ZW1lbnQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGVudW1WYWx1ZUFzc2lnbm1lbnQgPSBlbnVtU3RhdGVtZW50LmdldCgnZXhwcmVzc2lvbicpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFlbnVtVmFsdWVBc3NpZ25tZW50LmlzQXNzaWdubWVudEV4cHJlc3Npb24oKSB8fFxuICAgICAgICAgICAgIWVudW1WYWx1ZUFzc2lnbm1lbnQuZ2V0KCdyaWdodCcpLmlzUHVyZSgpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaGFzRWxlbWVudHMgPSB0cnVlO1xuICAgICAgICAgIGVudW1Bc3NpZ25tZW50cz8ucHVzaChlbnVtU3RhdGVtZW50Lm5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGVudW0gZWxlbWVudHMgdGhlbiB0aGVyZSBpcyBub3RoaW5nIHRvIHdyYXBcbiAgICAgICAgaWYgKCFoYXNFbGVtZW50cykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSBleGlzdGluZyBlbnVtIGluaXRpYWxpemVyXG4gICAgICAgIGNvbnN0IGVudW1Jbml0aWFsaXplciA9IG5leHRFeHByZXNzaW9uLm5vZGU7XG4gICAgICAgIG5leHRFeHByZXNzaW9uLnJlbW92ZSgpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBJSUZFIGJsb2NrIGNvbnRlbnRzXG4gICAgICAgIGxldCBibG9ja0NvbnRlbnRzO1xuICAgICAgICBpZiAoZW51bUFzc2lnbm1lbnRzKSB7XG4gICAgICAgICAgLy8gTG9vc2UgbW9kZVxuICAgICAgICAgIGJsb2NrQ29udGVudHMgPSBbXG4gICAgICAgICAgICB0eXBlcy5leHByZXNzaW9uU3RhdGVtZW50KFxuICAgICAgICAgICAgICB0eXBlcy5hc3NpZ25tZW50RXhwcmVzc2lvbihcbiAgICAgICAgICAgICAgICAnPScsXG4gICAgICAgICAgICAgICAgdHlwZXMuY2xvbmVOb2RlKGRlY2xhcmF0aW9uSWQpLFxuICAgICAgICAgICAgICAgIHR5cGVzLmxvZ2ljYWxFeHByZXNzaW9uKFxuICAgICAgICAgICAgICAgICAgJ3x8JyxcbiAgICAgICAgICAgICAgICAgIHR5cGVzLmNsb25lTm9kZShkZWNsYXJhdGlvbklkKSxcbiAgICAgICAgICAgICAgICAgIHR5cGVzLm9iamVjdEV4cHJlc3Npb24oW10pLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLi4uZW51bUFzc2lnbm1lbnRzLFxuICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmxvY2tDb250ZW50cyA9IFt0eXBlcy5leHByZXNzaW9uU3RhdGVtZW50KGVudW1Jbml0aWFsaXplcildO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV3JhcCBleGlzdGluZyBlbnVtIGluaXRpYWxpemVyIGluIGEgcHVyZSBhbm5vdGF0ZWQgSUlGRVxuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0eXBlcy5hcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihcbiAgICAgICAgICBbXSxcbiAgICAgICAgICB0eXBlcy5ibG9ja1N0YXRlbWVudChbXG4gICAgICAgICAgICAuLi5ibG9ja0NvbnRlbnRzLFxuICAgICAgICAgICAgdHlwZXMucmV0dXJuU3RhdGVtZW50KHR5cGVzLmNsb25lTm9kZShkZWNsYXJhdGlvbklkKSksXG4gICAgICAgICAgXSksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VtZW50SW5pdGlhbGl6ZXIgPSB0eXBlcy5jYWxsRXhwcmVzc2lvbihcbiAgICAgICAgICB0eXBlcy5wYXJlbnRoZXNpemVkRXhwcmVzc2lvbihjb250YWluZXIpLFxuICAgICAgICAgIFtdLFxuICAgICAgICApO1xuICAgICAgICBhbm5vdGF0ZUFzUHVyZShyZXBsYWNlbWVudEluaXRpYWxpemVyKTtcblxuICAgICAgICAvLyBBZGQgdGhlIHdyYXBwZWQgZW51bSBpbml0aWFsaXplciBkaXJlY3RseSB0byB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb25cbiAgICAgICAgZGVjbGFyYXRpb24uZ2V0KCdpbml0JykucmVwbGFjZVdpdGgocmVwbGFjZW1lbnRJbml0aWFsaXplcik7XG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRqdXN0LXR5cGVzY3JpcHQtZW51bXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9iYWJlbC9wbHVnaW5zL2FkanVzdC10eXBlc2NyaXB0LWVudW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7OztBQUVILHNDQUFxRTtBQUNyRSw2RkFBNEQ7QUFFNUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixXQUFXO0lBQ3pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqQixDQUFDO0FBRkQsa0NBRUM7QUFFRDs7OztHQUlHO0FBQ0g7SUFDRSxPQUFPO1FBQ0wsT0FBTyxFQUFFO1lBQ1AsbUJBQW1CLENBQUMsSUFBeUMsRUFBRSxLQUFpQjtnQkFDOUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ2xDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBMEIsQ0FBQztnQkFFbkQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ3pELE9BQU87aUJBQ1I7Z0JBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDekIsT0FBTztpQkFDUjtnQkFFRCxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFlBQUssQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQUU7b0JBQ3RDLE9BQU87aUJBQ1I7Z0JBRUQsTUFBTSxTQUFTLEdBQ2IsVUFB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QUFDLHNCQUFzQixDQUFDLENBQUM7WUFDOUQsQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUF4SUQsNEJBd0lDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IE5vZGVQYXRoLCBQbHVnaW5PYmosIFBsdWdpblBhc3MsIHR5cGVzIH0gZnJvbSAnQGJhYmVsL2NvcmUnO1xuaW1wb3J0IGFubm90YXRlQXNQdXJlIGZyb20gJ0BiYWJlbC9oZWxwZXItYW5ub3RhdGUtYXMtcHVyZSc7XG5cbi8qKlxuICogUHJvdmlkZXMgb25lIG9yIG1vcmUga2V5d29yZHMgdGhhdCBpZiBmb3VuZCB3aXRoaW4gdGhlIGNvbnRlbnQgb2YgYSBzb3VyY2UgZmlsZSBpbmRpY2F0ZVxuICogdGhhdCB0aGlzIHBsdWdpbiBzaG91bGQgYmUgdXNlZCB3aXRoIGEgc291cmNlIGZpbGUuXG4gKlxuICogQHJldHVybnMgQW4gYSBzdHJpbmcgaXRlcmFibGUgY29udGFpbmluZyBvbmUgb3IgbW9yZSBrZXl3b3Jkcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEtleXdvcmRzKCk6IEl0ZXJhYmxlPHN0cmluZz4ge1xuICByZXR1cm4gWyd2YXInXTtcbn1cblxuLyoqXG4gKiBBIGJhYmVsIHBsdWdpbiBmYWN0b3J5IGZ1bmN0aW9uIGZvciBhZGp1c3RpbmcgVHlwZVNjcmlwdCBlbWl0dGVkIGVudW1zLlxuICpcbiAqIEByZXR1cm5zIEEgYmFiZWwgcGx1Z2luIG9iamVjdCBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCk6IFBsdWdpbk9iaiB7XG4gIHJldHVybiB7XG4gICAgdmlzaXRvcjoge1xuICAgICAgVmFyaWFibGVEZWNsYXJhdGlvbihwYXRoOiBOb2RlUGF0aDx0eXBlcy5WYXJpYWJsZURlY2xhcmF0aW9uPiwgc3RhdGU6IFBsdWdpblBhc3MpIHtcbiAgICAgICAgY29uc3QgeyBwYXJlbnRQYXRoLCBub2RlIH0gPSBwYXRoO1xuICAgICAgICBjb25zdCB7IGxvb3NlIH0gPSBzdGF0ZS5vcHRzIGFzIHsgbG9vc2U6IGJvb2xlYW4gfTtcblxuICAgICAgICBpZiAobm9kZS5raW5kICE9PSAndmFyJyB8fCBub2RlLmRlY2xhcmF0aW9ucy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWNsYXJhdGlvbiA9IHBhdGguZ2V0KCdkZWNsYXJhdGlvbnMnKVswXTtcbiAgICAgICAgaWYgKGRlY2xhcmF0aW9uLm5vZGUuaW5pdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY2xhcmF0aW9uSWQgPSBkZWNsYXJhdGlvbi5ub2RlLmlkO1xuICAgICAgICBpZiAoIXR5cGVzLmlzSWRlbnRpZmllcihkZWNsYXJhdGlvbklkKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhhc0V4cG9ydCA9XG4gICAgICAgICAgcGFyZW50UGF0aC5pc0V4cG9ydE5hbWVkRGVjbGFyYXRpb24oKSB8fCBwYXJlbnRQYXRoLmlzRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uKCk7XG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IGhhc0V4cG9ydCA/IHBhcmVudFBhdGggOiBwYXRoO1xuICAgICAgICBjb25zdCBuZXh0U3RhdGVtZW50ID0gb3JpZ2luLmdldFNpYmxpbmcoK29yaWdpbi5rZXkgKyAxKTtcbiAgICAgICAgaWYgKCFuZXh0U3RhdGVtZW50LmlzRXhwcmVzc2lvblN0YXRlbWVudCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV4dEV4cHJlc3Npb24gPSBuZXh0U3RhdGVtZW50LmdldCgnZXhwcmVzc2lvbicpO1xuICAgICAgICBpZiAoIW5leHRFeHByZXNzaW9uLmlzQ2FsbEV4cHJlc3Npb24oKSB8fCBuZXh0RXhwcmVzc2lvbi5ub2RlLmFyZ3VtZW50cy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbnVtQ2FsbEFyZ3VtZW50ID0gbmV4dEV4cHJlc3Npb24ubm9kZS5hcmd1bWVudHNbMF07XG4gICAgICAgIGlmICghdHlwZXMuaXNMb2dpY2FsRXhwcmVzc2lvbihlbnVtQ2FsbEFyZ3VtZW50LCB7IG9wZXJhdG9yOiAnfHwnIH0pKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgaWRlbnRpZmllcnMgbWF0Y2ggdmFyIGRlY2xhcmF0aW9uXG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdHlwZXMuaXNJZGVudGlmaWVyKGVudW1DYWxsQXJndW1lbnQubGVmdCkgfHxcbiAgICAgICAgICAhbmV4dEV4cHJlc3Npb24uc2NvcGUuYmluZGluZ0lkZW50aWZpZXJFcXVhbHMoZW51bUNhbGxBcmd1bWVudC5sZWZ0Lm5hbWUsIGRlY2xhcmF0aW9uSWQpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVudW1DYWxsZWUgPSBuZXh0RXhwcmVzc2lvbi5nZXQoJ2NhbGxlZScpO1xuICAgICAgICBpZiAoIWVudW1DYWxsZWUuaXNGdW5jdGlvbkV4cHJlc3Npb24oKSB8fCBlbnVtQ2FsbGVlLm5vZGUucGFyYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVudW1DYWxsZWVQYXJhbSA9IGVudW1DYWxsZWUubm9kZS5wYXJhbXNbMF07XG4gICAgICAgIGNvbnN0IGlzRW51bUNhbGxlZU1hdGNoaW5nID1cbiAgICAgICAgICB0eXBlcy5pc0lkZW50aWZpZXIoZW51bUNhbGxlZVBhcmFtKSAmJiBlbnVtQ2FsbGVlUGFyYW0ubmFtZSA9PT0gZGVjbGFyYXRpb25JZC5uYW1lO1xuXG4gICAgICAgIC8vIExvb3NlIG1vZGUgcmV3cml0ZXMgdGhlIGVudW0gdG8gYSBzaG9ydGVyIGJ1dCBsZXNzIFR5cGVTY3JpcHQtbGlrZSBmb3JtXG4gICAgICAgIC8vIE5vdGU6IFdlIG9ubHkgY2FuIGFwcGx5IHRoZSBgbG9vc2VgIG1vZGUgdHJhbnNmb3JtYXRpb24gaWYgdGhlIGNhbGxlZSBwYXJhbWV0ZXIgbWF0Y2hlc1xuICAgICAgICAvLyB3aXRoIHRoZSBkZWNsYXJhdGlvbiBpZGVudGlmaWVyIG5hbWUuIFRoaXMgaXMgbmVjZXNzYXJ5IGluIGNhc2UgdGhlIHRoZSBkZWNsYXJhdGlvbiBpZCBoYXNcbiAgICAgICAgLy8gYmVlbiByZW5hbWVkIHRvIGF2b2lkIGNvbGxpc2lvbnMsIGFzIHRoZSBsb29zZSB0cmFuc2Zvcm0gd291bGQgdGhlbiBicmVhayB0aGUgZW51bSBhc3NpZ25tZW50c1xuICAgICAgICAvLyB3aGljaCByZWx5IG9uIHRoZSBkaWZmZXJlbnRseS1uYW1lZCBjYWxsZWUgaWRlbnRpZmllciBuYW1lLlxuICAgICAgICBsZXQgZW51bUFzc2lnbm1lbnRzOiB0eXBlcy5FeHByZXNzaW9uU3RhdGVtZW50W10gfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChsb29zZSAmJiBpc0VudW1DYWxsZWVNYXRjaGluZykge1xuICAgICAgICAgIGVudW1Bc3NpZ25tZW50cyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgYWxsIGVudW0gbWVtYmVyIHZhbHVlcyBhcmUgcHVyZS5cbiAgICAgICAgLy8gSWYgbm90LCBsZWF2ZSBhcy1pcyBkdWUgdG8gcG90ZW50aWFsIHNpZGUgZWZlY3RzXG4gICAgICAgIGxldCBoYXNFbGVtZW50cyA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGVudW1TdGF0ZW1lbnQgb2YgZW51bUNhbGxlZS5nZXQoJ2JvZHknKS5nZXQoJ2JvZHknKSkge1xuICAgICAgICAgIGlmICghZW51bVN0YXRlbWVudC5pc0V4cHJlc3Npb25TdGF0ZW1lbnQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGVudW1WYWx1ZUFzc2lnbm1lbnQgPSBlbnVtU3RhdGVtZW50LmdldCgnZXhwcmVzc2lvbicpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFlbnVtVmFsdWVBc3NpZ25tZW50LmlzQXNzaWdubWVudEV4cHJlc3Npb24oKSB8fFxuICAgICAgICAgICAgIWVudW1WYWx1ZUFzc2lnbm1lbnQuZ2V0KCdyaWdodCcpLmlzUHVyZSgpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaGFzRWxlbWVudHMgPSB0cnVlO1xuICAgICAgICAgIGVudW1Bc3NpZ25tZW50cz8ucHVzaChlbnVtU3RhdGVtZW50Lm5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGVudW0gZWxlbWVudHMgdGhlbiB0aGVyZSBpcyBub3RoaW5nIHRvIHdyYXBcbiAgICAgICAgaWYgKCFoYXNFbGVtZW50cykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSBleGlzdGluZyBlbnVtIGluaXRpYWxpemVyXG4gICAgICAgIGNvbnN0IGVudW1Jbml0aWFsaXplciA9IG5leHRFeHByZXNzaW9uLm5vZGU7XG4gICAgICAgIG5leHRFeHByZXNzaW9uLnJlbW92ZSgpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBJSUZFIGJsb2NrIGNvbnRlbnRzXG4gICAgICAgIGxldCBibG9ja0NvbnRlbnRzO1xuICAgICAgICBpZiAoZW51bUFzc2lnbm1lbnRzKSB7XG4gICAgICAgICAgLy8gTG9vc2UgbW9kZVxuICAgICAgICAgIGJsb2NrQ29udGVudHMgPSBbXG4gICAgICAgICAgICB0eXBlcy5leHByZXNzaW9uU3RhdGVtZW50KFxuICAgICAgICAgICAgICB0eXBlcy5hc3NpZ25tZW50RXhwcmVzc2lvbihcbiAgICAgICAgICAgICAgICAnPScsXG4gICAgICAgICAgICAgICAgdHlwZXMuY2xvbmVOb2RlKGRlY2xhcmF0aW9uSWQpLFxuICAgICAgICAgICAgICAgIHR5cGVzLmxvZ2ljYWxFeHByZXNzaW9uKFxuICAgICAgICAgICAgICAgICAgJ3x8JyxcbiAgICAgICAgICAgICAgICAgIHR5cGVzLmNsb25lTm9kZShkZWNsYXJhdGlvbklkKSxcbiAgICAgICAgICAgICAgICAgIHR5cGVzLm9iamVjdEV4cHJlc3Npb24oW10pLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLi4uZW51bUFzc2lnbm1lbnRzLFxuICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmxvY2tDb250ZW50cyA9IFt0eXBlcy5leHByZXNzaW9uU3RhdGVtZW50KGVudW1Jbml0aWFsaXplcildO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV3JhcCBleGlzdGluZyBlbnVtIGluaXRpYWxpemVyIGluIGEgcHVyZSBhbm5vdGF0ZWQgSUlGRVxuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0eXBlcy5hcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihcbiAgICAgICAgICBbXSxcbiAgICAgICAgICB0eXBlcy5ibG9ja1N0YXRlbWVudChbXG4gICAgICAgICAgICAuLi5ibG9ja0NvbnRlbnRzLFxuICAgICAgICAgICAgdHlwZXMucmV0dXJuU3RhdGVtZW50KHR5cGVzLmNsb25lTm9kZShkZWNsYXJhdGlvbklkKSksXG4gICAgICAgICAgXSksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VtZW50SW5pdGlhbGl6ZXIgPSB0eXBlcy5jYWxsRXhwcmVzc2lvbihcbiAgICAgICAgICB0eXBlcy5wYXJlbnRoZXNpemVkRXhwcmVzc2lvbihjb250YWluZXIpLFxuICAgICAgICAgIFtdLFxuICAgICAgICApO1xuICAgICAgICBhbm5vdGF0ZUFzUHVyZShyZXBsYWNlbWVudEluaXRpYWxpemVyKTtcblxuICAgICAgICAvLyBBZGQgdGhlIHdyYXBwZWQgZW51bSBpbml0aWFsaXplciBkaXJlY3RseSB0byB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb25cbiAgICAgICAgZGVjbGFyYXRpb24uZ2V0KCdpbml0JykucmVwbGFjZVdpdGgocmVwbGFjZW1lbnRJbml0aWFsaXplcik7XG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
@@ -32,7 +32,6 @@ function default_1() {
|
|
|
32
32
|
return {
|
|
33
33
|
visitor: {
|
|
34
34
|
CallExpression(path) {
|
|
35
|
-
var _a;
|
|
36
35
|
const callee = path.node.callee;
|
|
37
36
|
// The function being called must be the metadata function name
|
|
38
37
|
let calleeName;
|
|
@@ -55,7 +54,7 @@ function default_1() {
|
|
|
55
54
|
return;
|
|
56
55
|
}
|
|
57
56
|
// The metadata function is always emitted inside a function expression
|
|
58
|
-
if (!
|
|
57
|
+
if (!path.getFunctionParent()?.isFunctionExpression()) {
|
|
59
58
|
return;
|
|
60
59
|
}
|
|
61
60
|
// Replace the metadata function with `void 0` which is the equivalent return value
|
|
@@ -66,4 +65,4 @@ function default_1() {
|
|
|
66
65
|
};
|
|
67
66
|
}
|
|
68
67
|
exports.default = default_1;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpZGUtYW5ndWxhci1tZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL2JhYmVsL3BsdWdpbnMvZWxpZGUtYW5ndWxhci1tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCxzQ0FBeUQ7QUFFekQ7O0dBRUc7QUFDSCxNQUFNLHVCQUF1QixHQUFHLG1CQUFtQixDQUFDO0FBRXBEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsV0FBVztJQUN6QixPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRkQsa0NBRUM7QUFFRDs7OztHQUlHO0FBQ0g7SUFDRSxPQUFPO1FBQ0wsT0FBTyxFQUFFO1lBQ1AsY0FBYyxDQUFDLElBQW9DO2dCQUNqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFFaEMsK0RBQStEO2dCQUMvRCxJQUFJLFVBQVUsQ0FBQztnQkFDZixJQUFJLFlBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxZQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDM0UsVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2lCQUNuQztxQkFBTSxJQUFJLFlBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ3JDLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO2lCQUMxQjtnQkFDRCxJQUFJLFVBQVUsS0FBSyx1QkFBdUIsRUFBRTtvQkFDMUMsT0FBTztpQkFDUjtnQkFFRCxpRUFBaUU7Z0JBQ2pFLGdDQUFnQztnQkFDaEMsb0NBQW9DO2dCQUNwQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDMUMsSUFDRSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUM7b0JBQzFCLENBQUMsWUFBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3JDLENBQUMsWUFBSyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUMxQztvQkFDQSxPQUFPO2lCQUNSO2dCQUVELHVFQUF1RTtnQkFDdkUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLG9CQUFvQixFQUFFLEVBQUU7b0JBQ3JELE9BQU87aUJBQ1I7Z0JBRUQsbUZBQW1GO2dCQUNuRiw0QkFBNEI7Z0JBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7WUFDcEQsQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUF4Q0QsNEJBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IE5vZGVQYXRoLCBQbHVnaW5PYmosIHR5cGVzIH0gZnJvbSAnQGJhYmVsL2NvcmUnO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBBbmd1bGFyIGNsYXNzIG1ldGFkYXRhIGZ1bmN0aW9uIGNyZWF0ZWQgYnkgdGhlIEFuZ3VsYXIgY29tcGlsZXIuXG4gKi9cbmNvbnN0IFNFVF9DTEFTU19NRVRBREFUQV9OQU1FID0gJ8m1c2V0Q2xhc3NNZXRhZGF0YSc7XG5cbi8qKlxuICogUHJvdmlkZXMgb25lIG9yIG1vcmUga2V5d29yZHMgdGhhdCBpZiBmb3VuZCB3aXRoaW4gdGhlIGNvbnRlbnQgb2YgYSBzb3VyY2UgZmlsZSBpbmRpY2F0ZVxuICogdGhhdCB0aGlzIHBsdWdpbiBzaG91bGQgYmUgdXNlZCB3aXRoIGEgc291cmNlIGZpbGUuXG4gKlxuICogQHJldHVybnMgQW4gYSBzdHJpbmcgaXRlcmFibGUgY29udGFpbmluZyBvbmUgb3IgbW9yZSBrZXl3b3Jkcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEtleXdvcmRzKCk6IEl0ZXJhYmxlPHN0cmluZz4ge1xuICByZXR1cm4gW1NFVF9DTEFTU19NRVRBREFUQV9OQU1FXTtcbn1cblxuLyoqXG4gKiBBIGJhYmVsIHBsdWdpbiBmYWN0b3J5IGZ1bmN0aW9uIGZvciBlbGlkaW5nIHRoZSBBbmd1bGFyIGNsYXNzIG1ldGFkYXRhIGZ1bmN0aW9uIChgybVzZXRDbGFzc01ldGFkYXRhYCkuXG4gKlxuICogQHJldHVybnMgQSBiYWJlbCBwbHVnaW4gb2JqZWN0IGluc3RhbmNlLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKTogUGx1Z2luT2JqIHtcbiAgcmV0dXJuIHtcbiAgICB2aXNpdG9yOiB7XG4gICAgICBDYWxsRXhwcmVzc2lvbihwYXRoOiBOb2RlUGF0aDx0eXBlcy5DYWxsRXhwcmVzc2lvbj4pIHtcbiAgICAgICAgY29uc3QgY2FsbGVlID0gcGF0aC5ub2RlLmNhbGxlZTtcblxuICAgICAgICAvLyBUaGUgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIG11c3QgYmUgdGhlIG1ldGFkYXRhIGZ1bmN0aW9uIG5hbWVcbiAgICAgICAgbGV0IGNhbGxlZU5hbWU7XG4gICAgICAgIGlmICh0eXBlcy5pc01lbWJlckV4cHJlc3Npb24oY2FsbGVlKSAmJiB0eXBlcy5pc0lkZW50aWZpZXIoY2FsbGVlLnByb3BlcnR5KSkge1xuICAgICAgICAgIGNhbGxlZU5hbWUgPSBjYWxsZWUucHJvcGVydHkubmFtZTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlcy5pc0lkZW50aWZpZXIoY2FsbGVlKSkge1xuICAgICAgICAgIGNhbGxlZU5hbWUgPSBjYWxsZWUubmFtZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FsbGVlTmFtZSAhPT0gU0VUX0NMQVNTX01FVEFEQVRBX05BTUUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGVyZSBtdXN0IGJlIGZvdXIgYXJndW1lbnRzIHRoYXQgbWVldCB0aGUgZm9sbG93aW5nIGNyaXRlcmlhOlxuICAgICAgICAvLyAqIEZpcnN0IG11c3QgYmUgYW4gaWRlbnRpZmllclxuICAgICAgICAvLyAqIFNlY29uZCBtdXN0IGJlIGFuIGFycmF5IGxpdGVyYWxcbiAgICAgICAgY29uc3QgY2FsbEFyZ3VtZW50cyA9IHBhdGgubm9kZS5hcmd1bWVudHM7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjYWxsQXJndW1lbnRzLmxlbmd0aCAhPT0gNCB8fFxuICAgICAgICAgICF0eXBlcy5pc0lkZW50aWZpZXIoY2FsbEFyZ3VtZW50c1swXSkgfHxcbiAgICAgICAgICAhdHlwZXMuaXNBcnJheUV4cHJlc3Npb24oY2FsbEFyZ3VtZW50c1sxXSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIG1ldGFkYXRhIGZ1bmN0aW9uIGlzIGFsd2F5cyBlbWl0dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGV4cHJlc3Npb25cbiAgICAgICAgaWYgKCFwYXRoLmdldEZ1bmN0aW9uUGFyZW50KCk/LmlzRnVuY3Rpb25FeHByZXNzaW9uKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXBsYWNlIHRoZSBtZXRhZGF0YSBmdW5jdGlvbiB3aXRoIGB2b2lkIDBgIHdoaWNoIGlzIHRoZSBlcXVpdmFsZW50IHJldHVybiB2YWx1ZVxuICAgICAgICAvLyBvZiB0aGUgbWV0YWRhdGEgZnVuY3Rpb24uXG4gICAgICAgIHBhdGgucmVwbGFjZVdpdGgocGF0aC5zY29wZS5idWlsZFVuZGVmaW5lZE5vZGUoKSk7XG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
@@ -62,7 +62,7 @@ function createI18nDiagnostics(reporter) {
|
|
|
62
62
|
}
|
|
63
63
|
this.messages.push({ type, message });
|
|
64
64
|
this.hasErrors || (this.hasErrors = type === 'error');
|
|
65
|
-
reporter
|
|
65
|
+
reporter?.(type, message);
|
|
66
66
|
}
|
|
67
67
|
error(message) {
|
|
68
68
|
this.add('error', message);
|
|
@@ -98,22 +98,21 @@ function createNgtscLogger(reporter) {
|
|
|
98
98
|
level: 1,
|
|
99
99
|
debug(...args) { },
|
|
100
100
|
info(...args) {
|
|
101
|
-
reporter
|
|
101
|
+
reporter?.('info', args.join());
|
|
102
102
|
},
|
|
103
103
|
warn(...args) {
|
|
104
|
-
reporter
|
|
104
|
+
reporter?.('warning', args.join());
|
|
105
105
|
},
|
|
106
106
|
error(...args) {
|
|
107
|
-
reporter
|
|
107
|
+
reporter?.('error', args.join());
|
|
108
108
|
},
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
111
|
function default_1(api, options) {
|
|
112
|
-
var _a, _b;
|
|
113
112
|
const presets = [];
|
|
114
113
|
const plugins = [];
|
|
115
114
|
let needRuntimeTransform = false;
|
|
116
|
-
if (
|
|
115
|
+
if (options.angularLinker?.shouldLink) {
|
|
117
116
|
plugins.push(options.angularLinker.linkerPluginCreator({
|
|
118
117
|
linkerJitMode: options.angularLinker.jitMode,
|
|
119
118
|
// This is a workaround until https://github.com/angular/angular/issues/42769 is fixed.
|
|
@@ -179,7 +178,7 @@ function default_1(api, options) {
|
|
|
179
178
|
plugins.push([
|
|
180
179
|
require('babel-plugin-istanbul').default,
|
|
181
180
|
{
|
|
182
|
-
inputSourceMap:
|
|
181
|
+
inputSourceMap: options.instrumentCode.inputSourceMap ?? false,
|
|
183
182
|
cwd: options.instrumentCode.includedBasePath,
|
|
184
183
|
},
|
|
185
184
|
]);
|
|
@@ -198,4 +197,4 @@ function default_1(api, options) {
|
|
|
198
197
|
return { presets, plugins };
|
|
199
198
|
}
|
|
200
199
|
exports.default = default_1;
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9iYWJlbC9wcmVzZXRzL2FwcGxpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTSCxtQ0FBMEM7QUFDMUMsZ0VBQXdDO0FBQ3hDLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFFN0I7Ozs7OztHQU1HO0FBQ0gsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLEdBQUcsQ0FDOUMsSUFBQSxzQkFBWSxFQUFDO0lBQ1gsd0ZBQXdGO0lBQ3hGLG9EQUFvRDtJQUNwRCxhQUFhO0lBQ2IsVUFBVTtDQUNYLENBQUMsQ0FDSCxDQUFDO0FBa0RGLFNBQVMscUJBQXFCLENBQUMsUUFBd0M7SUFDckUsTUFBTSxXQUFXLEdBQWdCLElBQUksQ0FBQztRQUFBO1lBQzNCLGFBQVEsR0FBNEIsRUFBRSxDQUFDO1lBQ2hELGNBQVMsR0FBRyxLQUFLLENBQUM7UUErQnBCLENBQUM7UUE3QkMsR0FBRyxDQUFDLElBQWdDLEVBQUUsT0FBZTtZQUNuRCxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQ3JCLE9BQU87YUFDUjtZQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsS0FBZCxJQUFJLENBQUMsU0FBUyxHQUFLLElBQUksS0FBSyxPQUFPLEVBQUM7WUFDcEMsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFHLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBRUQsS0FBSyxDQUFDLE9BQWU7WUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxD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QyxDQUFDLENBQUMsT0FBTztZQUNsRDtnQkFDRSxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLE9BQU87Z0JBQ3ZELGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQzthQUM5RTtTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUM5QixDQUFDO0FBckhELDRCQXFIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IMm1UGFyc2VkVHJhbnNsYXRpb24gfSBmcm9tICdAYW5ndWxhci9sb2NhbGl6ZSc7XG5pbXBvcnQgdHlwZSB7XG4gIERpYWdub3N0aWNIYW5kbGluZ1N0cmF0ZWd5LFxuICBEaWFnbm9zdGljcyxcbiAgbWFrZUVzMjAxNVRyYW5zbGF0ZVBsdWdpbixcbiAgbWFrZUxvY2FsZVBsdWdpbixcbn0gZnJvbSAnQGFuZ3VsYXIvbG9jYWxpemUvdG9vbHMnO1xuaW1wb3J0IHsgc3RyaWN0IGFzIGFzc2VydCB9IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgYnJvd3NlcnNsaXN0IGZyb20gJ2Jyb3dzZXJzbGlzdCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG4vKipcbiAqIExpc3Qgb2YgYnJvd3NlcnMgd2hpY2ggYXJlIGFmZmVjdGVkIGJ5IGEgV2ViS2l0IGJ1ZyB3aGVyZSBjbGFzcyBmaWVsZFxuICogaW5pdGlhbGl6ZXJzIG1pZ2h0IGhhdmUgaW5jb3JyZWN0IHZhcmlhYmxlIHNjb3Blcy5cbiAqXG4gKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXItY2xpL2lzc3Vlcy8yNDM1NSNpc3N1ZWNvbW1lbnQtMTMzMzQ3NzAzM1xuICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vV2ViS2l0L1dlYktpdC9jb21taXQvZTg3ODhhMzRiM2Q1ZjViNGVkZDdmZjY0NTBiODA5MzZiZmYzOTZmMlxuICovXG5jb25zdCBzYWZhcmlDbGFzc0ZpZWxkU2NvcGVCdWdCcm93c2VycyA9IG5ldyBTZXQoXG4gIGJyb3dzZXJzbGlzdChbXG4gICAgLy8gU2FmYXJpIDwxNSBpcyB0ZWNobmljYWxseSBub3Qgc3VwcG9ydGVkIHZpYSBodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvYnJvd3Nlci1zdXBwb3J0LFxuICAgIC8vIGJ1dCB3ZSBhcHBseSB0aGUgd29ya2Fyb3VuZCBpZiBmb3JjaWJseSBzZWxlY3RlZC5cbiAgICAnU2FmYXJpIDw9MTUnLFxuICAgICdpT1MgPD0xNScsXG4gIF0pLFxuKTtcblxuZXhwb3J0IHR5cGUgRGlhZ25vc3RpY1JlcG9ydGVyID0gKHR5cGU6ICdlcnJvcicgfCAnd2FybmluZycgfCAnaW5mbycsIG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZDtcblxuLyoqXG4gKiBBbiBpbnRlcmZhY2UgcmVwcmVzZW50aW5nIHRoZSBmYWN0b3J5IGZ1bmN0aW9ucyBmb3IgdGhlIGBAYW5ndWxhci9sb2NhbGl6ZWAgdHJhbnNsYXRpb24gQmFiZWwgcGx1Z2lucy5cbiAqIFRoaXMgbXVzdCBiZSBwcm92aWRlZCBmb3IgdGhlIEVTTSBpbXBvcnRzIHNpbmNlIGR5bmFtaWMgaW1wb3J0cyBhcmUgcmVxdWlyZWQgdG8gYmUgYXN5bmNocm9ub3VzIGFuZFxuICogQmFiZWwgcHJlc2V0cyBjdXJyZW50bHkgY2FuIG9ubHkgYmUgc3luY2hyb25vdXMuXG4gKlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5QbHVnaW5DcmVhdG9ycyB7XG4gIG1ha2VFczIwMTVUcmFuc2xhdGVQbHVnaW46IHR5cGVvZiBtYWtlRXMyMDE1VHJhbnNsYXRlUGx1Z2luO1xuICBtYWtlTG9jYWxlUGx1Z2luOiB0eXBlb2YgbWFrZUxvY2FsZVBsdWdpbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBsaWNhdGlvblByZXNldE9wdGlvbnMge1xuICBpMThuPzoge1xuICAgIGxvY2FsZTogc3RyaW5nO1xuICAgIG1pc3NpbmdUcmFuc2xhdGlvbkJlaGF2aW9yPzogJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdpZ25vcmUnO1xuICAgIHRyYW5zbGF0aW9uPzogUmVjb3JkPHN0cmluZywgybVQYXJzZWRUcmFuc2xhdGlvbj47XG4gICAgdHJhbnNsYXRpb25GaWxlcz86IHN0cmluZ1tdO1xuICAgIHBsdWdpbkNyZWF0b3JzOiBJMThuUGx1Z2luQ3JlYXRvcnM7XG4gIH07XG5cbiAgYW5ndWxhckxpbmtlcj86IHtcbiAgICBzaG91bGRMaW5rOiBib29sZWFuO1xuICAgIGppdE1vZGU6IGJvb2xlYW47XG4gICAgbGlua2VyUGx1Z2luQ3JlYXRvcjogdHlwZW9mIGltcG9ydCgnQGFuZ3VsYXIvY29tcGlsZXItY2xpL2xpbmtlci9iYWJlbCcpLmNyZWF0ZUVzMjAxNUxpbmtlclBsdWdpbjtcbiAgfTtcblxuICBmb3JjZUFzeW5jVHJhbnNmb3JtYXRpb24/OiBib29sZWFuO1xuICBpbnN0cnVtZW50Q29kZT86IHtcbiAgICBpbmNsdWRlZEJhc2VQYXRoOiBzdHJpbmc7XG4gICAgaW5wdXRTb3VyY2VNYXA6IHVua25vd247XG4gIH07XG4gIG9wdGltaXplPzoge1xuICAgIGxvb3NlRW51bXM6IGJvb2xlYW47XG4gICAgcHVyZVRvcExldmVsOiBib29sZWFuO1xuICAgIHdyYXBEZWNvcmF0b3JzOiBib29sZWFuO1xuICB9O1xuXG4gIHN1cHBvcnRlZEJyb3dzZXJzPzogc3RyaW5nW107XG4gIGRpYWdub3N0aWNSZXBvcnRlcj86IERpYWdub3N0aWNSZXBvcnRlcjtcbn1cblxuLy8gRXh0cmFjdCBMb2dnZXIgdHlwZSBmcm9tIHRoZSBsaW5rZXIgZnVuY3Rpb24gdG8gYXZvaWQgZGVlcCBpbXBvcnRpbmcgdG8gYWNjZXNzIHRoZSB0eXBlXG50eXBlIE5ndHNjTG9nZ2VyID0gUGFyYW1ldGVyczxcbiAgdHlwZW9mIGltcG9ydCgnQGFuZ3VsYXIvY29tcGlsZXItY2xpL2xpbmtlci9iYWJlbCcpLmNyZWF0ZUVzMjAxNUxpbmtlclBsdWdpblxuPlswXVsnbG9nZ2VyJ107XG5cbmZ1bmN0aW9uIGNyZWF0ZUkxOG5EaWFnbm9zdGljcyhyZXBvcnRlcjogRGlhZ25vc3RpY1JlcG9ydGVyIHwgdW5kZWZpbmVkKTogRGlhZ25vc3RpY3Mge1xuICBjb25zdCBkaWFnbm9zdGljczogRGlhZ25vc3RpY3MgPSBuZXcgKGNsYXNzIHtcbiAgICByZWFkb25seSBtZXNzYWdlczogRGlhZ25vc3RpY3NbJ21lc3NhZ2VzJ10gPSBbXTtcbiAgICBoYXNFcnJvcnMgPSBmYWxzZTtcblxuICAgIGFkZCh0eXBlOiBEaWFnbm9zdGljSGFuZGxpbmdTdHJhdGVneSwgbWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICBpZiAodHlwZSA9PT0gJ2lnbm9yZScpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm1lc3NhZ2VzLnB1c2goeyB0eXBlLCBtZXNzYWdlIH0pO1xuICAgICAgdGhpcy5oYXNFcnJvcnMgfHw9IHR5cGUgPT09ICdlcnJvcic7XG4gICAgICByZXBvcnRlcj8uKHR5cGUsIG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgICAgdGhpcy5hZGQoJ2Vycm9yJywgbWVzc2FnZSk7XG4gICAgfVxuXG4gICAgd2FybihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgIHRoaXMuYWRkKCd3YXJuaW5nJywgbWVzc2FnZSk7XG4gICAgfVxuXG4gICAgbWVyZ2Uob3RoZXI6IERpYWdub3N0aWNzKTogdm9pZCB7XG4gICAgICBmb3IgKGNvbnN0IGRpYWdub3N0aWMgb2Ygb3RoZXIubWVzc2FnZXMpIHtcbiAgICAgICAgdGhpcy5hZGQoZGlhZ25vc3RpYy50eXBlLCBkaWFnbm9zdGljLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvcm1hdERpYWdub3N0aWNzKCk6IG5ldmVyIHtcbiAgICAgIGFzc2VydC5mYWlsKFxuICAgICAgICAnQGFuZ3VsYXIvbG9jYWxpemUgRGlhZ25vc3RpY3MgZm9ybWF0RGlhZ25vc3RpY3Mgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gYmFiZWwuJyxcbiAgICAgICk7XG4gICAgfVxuICB9KSgpO1xuXG4gIHJldHVybiBkaWFnbm9zdGljcztcbn1cblxuZnVuY3Rpb24gY3JlYXRlSTE4blBsdWdpbnMoXG4gIGxvY2FsZTogc3RyaW5nLFxuICB0cmFuc2xhdGlvbjogUmVjb3JkPHN0cmluZywgybVQYXJzZWRUcmFuc2xhdGlvbj4gfCB1bmRlZmluZWQsXG4gIG1pc3NpbmdUcmFuc2xhdGlvbkJlaGF2aW9yOiAnZXJyb3InIHwgJ3dhcm5pbmcnIHwgJ2lnbm9yZScsXG4gIGRpYWdub3N0aWNSZXBvcnRlcjogRGlhZ25vc3RpY1JlcG9ydGVyIHwgdW5kZWZpbmVkLFxuICBwbHVnaW5DcmVhdG9yczogSTE4blBsdWdpbkNyZWF0b3JzLFxuKSB7XG4gIGNvbnN0IGRpYWdub3N0aWNzID0gY3JlYXRlSTE4bkRpYWdub3N0aWNzKGRpYWdub3N0aWNSZXBvcnRlcik7XG4gIGNvbnN0IHBsdWdpbnMgPSBbXTtcblxuICBjb25zdCB7IG1ha2VFczIwMTVUcmFuc2xhdGVQbHVnaW4sIG1ha2VMb2NhbGVQbHVnaW4gfSA9IHBsdWdpbkNyZWF0b3JzO1xuXG4gIGlmICh0cmFuc2xhdGlvbikge1xuICAgIHBsdWdpbnMucHVzaChcbiAgICAgIG1ha2VFczIwMTVUcmFuc2xhdGVQbHVnaW4oZGlhZ25vc3RpY3MsIHRyYW5zbGF0aW9uLCB7XG4gICAgICAgIG1pc3NpbmdUcmFuc2xhdGlvbjogbWlzc2luZ1RyYW5zbGF0aW9uQmVoYXZpb3IsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcGx1Z2lucy5wdXNoKG1ha2VMb2NhbGVQbHVnaW4obG9jYWxlKSk7XG5cbiAgcmV0dXJuIHBsdWdpbnM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU5ndHNjTG9nZ2VyKHJlcG9ydGVyOiBEaWFnbm9zdGljUmVwb3J0ZXIgfCB1bmRlZmluZWQpOiBOZ3RzY0xvZ2dlciB7XG4gIHJldHVybiB7XG4gICAgbGV2ZWw6IDEsIC8vIEluZm8gbGV2ZWxcbiAgICBkZWJ1ZyguLi5hcmdzOiBzdHJpbmdbXSkge30sXG4gICAgaW5mbyguLi5hcmdzOiBzdHJpbmdbXSkge1xuICAgICAgcmVwb3J0ZXI/LignaW5mbycsIGFyZ3Muam9pbigpKTtcbiAgICB9LFxuICAgIHdhcm4oLi4uYXJnczogc3RyaW5nW10pIHtcbiAgICAgIHJlcG9ydGVyPy4oJ3dhcm5pbmcnLCBhcmdzLmpvaW4oKSk7XG4gICAgfSxcbiAgICBlcnJvciguLi5hcmdzOiBzdHJpbmdbXSkge1xuICAgICAgcmVwb3J0ZXI/LignZXJyb3InLCBhcmdzLmpvaW4oKSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGFwaTogdW5rbm93biwgb3B0aW9uczogQXBwbGljYXRpb25QcmVzZXRPcHRpb25zKSB7XG4gIGNvbnN0IHByZXNldHMgPSBbXTtcbiAgY29uc3QgcGx1Z2lucyA9IFtdO1xuICBsZXQgbmVlZFJ1bnRpbWVUcmFuc2Zvcm0gPSBmYWxzZTtcblxuICBpZiAob3B0aW9ucy5hbmd1bGFyTGlua2VyPy5zaG91bGRMaW5rKSB7XG4gICAgcGx1Z2lucy5wdXNoKFxuICAgICAgb3B0aW9ucy5hbmd1bGFyTGlua2VyLmxpbmtlclBsdWdpbkNyZWF0b3Ioe1xuICAgICAgICBsaW5rZXJKaXRNb2RlOiBvcHRpb25zLmFuZ3VsYXJMaW5rZXIuaml0TW9kZSxcbiAgICAgICAgLy8gVGhpcyBpcyBhIHdvcmthcm91bmQgdW50aWwgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvNDI3NjkgaXMgZml4ZWQuXG4gICAgICAgIHNvdXJjZU1hcHBpbmc6IGZhbHNlLFxuICAgICAgICBsb2dnZXI6IGNyZWF0ZU5ndHNjTG9nZ2VyKG9wdGlvbnMuZGlhZ25vc3RpY1JlcG9ydGVyKSxcbiAgICAgICAgZmlsZVN5c3RlbToge1xuICAgICAgICAgIHJlc29sdmU6IHBhdGgucmVzb2x2ZSxcbiAgICAgICAgICBleGlzdHM6IGZzLmV4aXN0c1N5bmMsXG4gICAgICAgICAgZGlybmFtZTogcGF0aC5kaXJuYW1lLFxuICAgICAgICAgIHJlbGF0aXZlOiBwYXRoLnJlbGF0aXZlLFxuICAgICAgICAgIHJlYWRGaWxlOiBmcy5yZWFkRmlsZVN5bmMsXG4gICAgICAgICAgLy8gTm9kZS5KUyB0eXBlcyBkb24ndCBvdmVybGFwIHRoZSBDb21waWxlciB0eXBlcy5cbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICB9IGFzIGFueSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvLyBBcHBsaWNhdGlvbnMgY29kZSBFUyB2ZXJzaW9uIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nIFR5cGVTY3JpcHQncyBgdGFyZ2V0YCBvcHRpb24uXG4gIC8vIEhvd2V2ZXIsIHRoaXMgZG9lc24ndCBlZmZlY3QgbGlicmFyaWVzIGFuZCBoZW5jZSB3ZSB1c2UgcHJlc2V0LWVudiB0byBkb3dubGV2ZWwgRVMgZmVhdHVyZXNcbiAgLy8gYmFzZWQgb24gdGhlIHN1cHBvcnRlZCBicm93c2VycyBpbiBicm93c2Vyc2xpc3QuXG4gIGlmIChvcHRpb25zLnN1cHBvcnRlZEJyb3dzZXJzKSB7XG4gICAgY29uc3QgaW5jbHVkZVBsdWdpbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBJZiBhIFNhZmFyaSBicm93c2VyIGFmZmVjdGVkIGJ5IHRoZSBjbGFzcyBmaWVsZCBzY29wZSBidWcgaXMgc2VsZWN0ZWQsIHdlXG4gICAgLy8gZG93bmxldmVsIGNsYXNzIHByb3BlcnRpZXMgYnkgZW5zdXJpbmcgdGhlIGNsYXNzIHByb3BlcnRpZXMgQmFiZWwgcGx1Z2luXG4gICAgLy8gaXMgYWx3YXlzIGluY2x1ZGVkLSByZWdhcmRsZXNzIG9mIHRoZSBwcmVzZXQtZW52IHRhcmdldHMuXG4gICAgaWYgKG9wdGlvbnMuc3VwcG9ydGVkQnJvd3NlcnMuc29tZSgoYikgPT4gc2FmYXJpQ2xhc3NGaWVsZFNjb3BlQnVnQnJvd3NlcnMuaGFzKGIpKSkge1xuICAgICAgaW5jbHVkZVBsdWdpbnMucHVzaChcbiAgICAgICAgJ0BiYWJlbC9wbHVnaW4tcHJvcG9zYWwtY2xhc3MtcHJvcGVydGllcycsXG4gICAgICAgICdAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLXByaXZhdGUtbWV0aG9kcycsXG4gICAgICApO1xuICAgIH1cblxuICAgIHByZXNldHMucHVzaChbXG4gICAgICByZXF1aXJlKCdAYmFiZWwvcHJlc2V0LWVudicpLmRlZmF1bHQsXG4gICAgICB7XG4gICAgICAgIGJ1Z2ZpeGVzOiB0cnVlLFxuICAgICAgICBtb2R1bGVzOiBmYWxzZSxcbiAgICAgICAgdGFyZ2V0czogb3B0aW9ucy5zdXBwb3J0ZWRCcm93c2VycyxcbiAgICAgICAgaW5jbHVkZTogaW5jbHVkZVBsdWdpbnMsXG4gICAgICAgIGV4Y2x1ZGU6IFsndHJhbnNmb3JtLXR5cGVvZi1zeW1ib2wnXSxcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgbmVlZFJ1bnRpbWVUcmFuc2Zvcm0gPSB0cnVlO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuaTE4bikge1xuICAgIGNvbnN0IHsgbG9jYWxlLCBtaXNzaW5nVHJhbnNsYXRpb25CZWhhdmlvciwgcGx1Z2luQ3JlYXRvcnMsIHRyYW5zbGF0aW9uIH0gPSBvcHRpb25zLmkxOG47XG4gICAgY29uc3QgaTE4blBsdWdpbnMgPSBjcmVhdGVJMThuUGx1Z2lucyhcbiAgICAgIGxvY2FsZSxcbiAgICAgIHRyYW5zbGF0aW9uLFxuICAgICAgbWlzc2luZ1RyYW5zbGF0aW9uQmVoYXZpb3IgfHwgJ2lnbm9yZScsXG4gICAgICBvcHRpb25zLmRpYWdub3N0aWNSZXBvcnRlcixcbiAgICAgIHBsdWdpbkNyZWF0b3JzLFxuICAgICk7XG5cbiAgICBwbHVnaW5zLnB1c2goLi4uaTE4blBsdWdpbnMpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuZm9yY2VBc3luY1RyYW5zZm9ybWF0aW9uKSB7XG4gICAgLy8gQWx3YXlzIHRyYW5zZm9ybSBhc3luYy9hd2FpdCB0byBzdXBwb3J0IFpvbmUuanNcbiAgICBwbHVnaW5zLnB1c2goXG4gICAgICByZXF1aXJlKCdAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1hc3luYy10by1nZW5lcmF0b3InKS5kZWZhdWx0LFxuICAgICAgcmVxdWlyZSgnQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1hc3luYy1nZW5lcmF0b3ItZnVuY3Rpb25zJykuZGVmYXVsdCxcbiAgICApO1xuICAgIG5lZWRSdW50aW1lVHJhbnNmb3JtID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLm9wdGltaXplKSB7XG4gICAgaWYgKG9wdGlvbnMub3B0aW1pemUucHVyZVRvcExldmVsKSB7XG4gICAgICBwbHVnaW5zLnB1c2gocmVxdWlyZSgnLi4vcGx1Z2lucy9wdXJlLXRvcGxldmVsLWZ1bmN0aW9ucycpLmRlZmF1bHQpO1xuICAgIH1cblxuICAgIHBsdWdpbnMucHVzaChcbiAgICAgIHJlcXVpcmUoJy4uL3BsdWdpbnMvZWxpZGUtYW5ndWxhci1tZXRhZGF0YScpLmRlZmF1bHQsXG4gICAgICBbXG4gICAgICAgIHJlcXVpcmUoJy4uL3BsdWdpbnMvYWRqdXN0LXR5cGVzY3JpcHQtZW51bXMnKS5kZWZhdWx0LFxuICAgICAgICB7IGxvb3NlOiBvcHRpb25zLm9wdGltaXplLmxvb3NlRW51bXMgfSxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIHJlcXVpcmUoJy4uL3BsdWdpbnMvYWRqdXN0LXN0YXRpYy1jbGFzcy1tZW1iZXJzJykuZGVmYXVsdCxcbiAgICAgICAgeyB3cmFwRGVjb3JhdG9yczogb3B0aW9ucy5vcHRpbWl6ZS53cmFwRGVjb3JhdG9ycyB9LFxuICAgICAgXSxcbiAgICApO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuaW5zdHJ1bWVudENvZGUpIHtcbiAgICBwbHVnaW5zLnB1c2goW1xuICAgICAgcmVxdWlyZSgnYmFiZWwtcGx1Z2luLWlzdGFuYnVsJykuZGVmYXVsdCxcbiAgICAgIHtcbiAgICAgICAgaW5wdXRTb3VyY2VNYXA6IG9wdGlvbnMuaW5zdHJ1bWVudENvZGUuaW5wdXRTb3VyY2VNYXAgPz8gZmFsc2UsXG4gICAgICAgIGN3ZDogb3B0aW9ucy5pbnN0cnVtZW50Q29kZS5pbmNsdWRlZEJhc2VQYXRoLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfVxuXG4gIGlmIChuZWVkUnVudGltZVRyYW5zZm9ybSkge1xuICAgIC8vIEJhYmVsIGVxdWl2YWxlbnQgdG8gVHlwZVNjcmlwdCdzIGBpbXBvcnRIZWxwZXJzYCBvcHRpb25cbiAgICBwbHVnaW5zLnB1c2goW1xuICAgICAgcmVxdWlyZSgnQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tcnVudGltZScpLmRlZmF1bHQsXG4gICAgICB7XG4gICAgICAgIHVzZUVTTW9kdWxlczogdHJ1ZSxcbiAgICAgICAgdmVyc2lvbjogcmVxdWlyZSgnQGJhYmVsL3J1bnRpbWUvcGFja2FnZS5qc29uJykudmVyc2lvbixcbiAgICAgICAgYWJzb2x1dGVSdW50aW1lOiBwYXRoLmRpcm5hbWUocmVxdWlyZS5yZXNvbHZlKCdAYmFiZWwvcnVudGltZS9wYWNrYWdlLmpzb24nKSksXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG5cbiAgcmV0dXJuIHsgcHJlc2V0cywgcGx1Z2lucyB9O1xufVxuIl19
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9idWlsZF9hbmd1bGFyL3NyYy9iYWJlbC9wcmVzZXRzL2FwcGxpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTSCxtQ0FBMEM7QUFDMUMsZ0VBQXdDO0FBQ3hDLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFFN0I7Ozs7OztHQU1HO0FBQ0gsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLEdBQUcsQ0FDOUMsSUFBQSxzQkFBWSxFQUFDO0lBQ1gsd0ZBQXdGO0lBQ3hGLG9EQUFvRDtJQUNwRCxhQUFhO0lBQ2IsVUFBVTtDQUNYLENBQUMsQ0FDSCxDQUFDO0FBa0RGLFNBQVMscUJBQXFCLENBQUMsUUFBd0M7SUFDckUsTUFBTSxXQUFXLEdBQWdCLElBQUksQ0FBQztRQUFBO1lBQzNCLGFBQVEsR0FBNEIsRUFBRSxDQUFDO1lBQ2hELGNBQVMsR0FBRyxLQUFLLENBQUM7UUErQnBCLENBQUM7UUE3QkMsR0FBRyxDQUFDLElBQWdDLEVBQUUsT0FBZTtZQUNuRCxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQ3JCLE9BQU87YUFDUjtZQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsS0FBZCxJQUFJLENBQUMsU0FBUyxHQUFLLElBQUksS0FBSyxPQUFPLEVBQUM7WUFDcEMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFFRCxLQUFLLENBQUMsT0FBZTtZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3QixD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LENBQUMsQ0FBQyxPQUFPO2dCQUN2RCxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQUM7YUFDOUU7U0FDRixDQUFDLENBQUM7S0FDSjtJQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDOUIsQ0FBQztBQXJIRCw0QkFxSEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHR5cGUgeyDJtVBhcnNlZFRyYW5zbGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbG9jYWxpemUnO1xuaW1wb3J0IHR5cGUge1xuICBEaWFnbm9zdGljSGFuZGxpbmdTdHJhdGVneSxcbiAgRGlhZ25vc3RpY3MsXG4gIG1ha2VFczIwMTVUcmFuc2xhdGVQbHVnaW4sXG4gIG1ha2VMb2NhbGVQbHVnaW4sXG59IGZyb20gJ0Bhbmd1bGFyL2xvY2FsaXplL3Rvb2xzJztcbmltcG9ydCB7IHN0cmljdCBhcyBhc3NlcnQgfSBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IGJyb3dzZXJzbGlzdCBmcm9tICdicm93c2Vyc2xpc3QnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuLyoqXG4gKiBMaXN0IG9mIGJyb3dzZXJzIHdoaWNoIGFyZSBhZmZlY3RlZCBieSBhIFdlYktpdCBidWcgd2hlcmUgY2xhc3MgZmllbGRcbiAqIGluaXRpYWxpemVycyBtaWdodCBoYXZlIGluY29ycmVjdCB2YXJpYWJsZSBzY29wZXMuXG4gKlxuICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyLWNsaS9pc3N1ZXMvMjQzNTUjaXNzdWVjb21tZW50LTEzMzM0NzcwMzNcbiAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL1dlYktpdC9XZWJLaXQvY29tbWl0L2U4Nzg4YTM0YjNkNWY1YjRlZGQ3ZmY2NDUwYjgwOTM2YmZmMzk2ZjJcbiAqL1xuY29uc3Qgc2FmYXJpQ2xhc3NGaWVsZFNjb3BlQnVnQnJvd3NlcnMgPSBuZXcgU2V0KFxuICBicm93c2Vyc2xpc3QoW1xuICAgIC8vIFNhZmFyaSA8MTUgaXMgdGVjaG5pY2FsbHkgbm90IHN1cHBvcnRlZCB2aWEgaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2Jyb3dzZXItc3VwcG9ydCxcbiAgICAvLyBidXQgd2UgYXBwbHkgdGhlIHdvcmthcm91bmQgaWYgZm9yY2libHkgc2VsZWN0ZWQuXG4gICAgJ1NhZmFyaSA8PTE1JyxcbiAgICAnaU9TIDw9MTUnLFxuICBdKSxcbik7XG5cbmV4cG9ydCB0eXBlIERpYWdub3N0aWNSZXBvcnRlciA9ICh0eXBlOiAnZXJyb3InIHwgJ3dhcm5pbmcnIHwgJ2luZm8nLCBtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQ7XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIHJlcHJlc2VudGluZyB0aGUgZmFjdG9yeSBmdW5jdGlvbnMgZm9yIHRoZSBgQGFuZ3VsYXIvbG9jYWxpemVgIHRyYW5zbGF0aW9uIEJhYmVsIHBsdWdpbnMuXG4gKiBUaGlzIG11c3QgYmUgcHJvdmlkZWQgZm9yIHRoZSBFU00gaW1wb3J0cyBzaW5jZSBkeW5hbWljIGltcG9ydHMgYXJlIHJlcXVpcmVkIHRvIGJlIGFzeW5jaHJvbm91cyBhbmRcbiAqIEJhYmVsIHByZXNldHMgY3VycmVudGx5IGNhbiBvbmx5IGJlIHN5bmNocm9ub3VzLlxuICpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJMThuUGx1Z2luQ3JlYXRvcnMge1xuICBtYWtlRXMyMDE1VHJhbnNsYXRlUGx1Z2luOiB0eXBlb2YgbWFrZUVzMjAxNVRyYW5zbGF0ZVBsdWdpbjtcbiAgbWFrZUxvY2FsZVBsdWdpbjogdHlwZW9mIG1ha2VMb2NhbGVQbHVnaW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbGljYXRpb25QcmVzZXRPcHRpb25zIHtcbiAgaTE4bj86IHtcbiAgICBsb2NhbGU6IHN0cmluZztcbiAgICBtaXNzaW5nVHJhbnNsYXRpb25CZWhhdmlvcj86ICdlcnJvcicgfCAnd2FybmluZycgfCAnaWdub3JlJztcbiAgICB0cmFuc2xhdGlvbj86IFJlY29yZDxzdHJpbmcsIMm1UGFyc2VkVHJhbnNsYXRpb24+O1xuICAgIHRyYW5zbGF0aW9uRmlsZXM/OiBzdHJpbmdbXTtcbiAgICBwbHVnaW5DcmVhdG9yczogSTE4blBsdWdpbkNyZWF0b3JzO1xuICB9O1xuXG4gIGFuZ3VsYXJMaW5rZXI/OiB7XG4gICAgc2hvdWxkTGluazogYm9vbGVhbjtcbiAgICBqaXRNb2RlOiBib29sZWFuO1xuICAgIGxpbmtlclBsdWdpbkNyZWF0b3I6IHR5cGVvZiBpbXBvcnQoJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaS9saW5rZXIvYmFiZWwnKS5jcmVhdGVFczIwMTVMaW5rZXJQbHVnaW47XG4gIH07XG5cbiAgZm9yY2VBc3luY1RyYW5zZm9ybWF0aW9uPzogYm9vbGVhbjtcbiAgaW5zdHJ1bWVudENvZGU/OiB7XG4gICAgaW5jbHVkZWRCYXNlUGF0aDogc3RyaW5nO1xuICAgIGlucHV0U291cmNlTWFwOiB1bmtub3duO1xuICB9O1xuICBvcHRpbWl6ZT86IHtcbiAgICBsb29zZUVudW1zOiBib29sZWFuO1xuICAgIHB1cmVUb3BMZXZlbDogYm9vbGVhbjtcbiAgICB3cmFwRGVjb3JhdG9yczogYm9vbGVhbjtcbiAgfTtcblxuICBzdXBwb3J0ZWRCcm93c2Vycz86IHN0cmluZ1tdO1xuICBkaWFnbm9zdGljUmVwb3J0ZXI/OiBEaWFnbm9zdGljUmVwb3J0ZXI7XG59XG5cbi8vIEV4dHJhY3QgTG9nZ2VyIHR5cGUgZnJvbSB0aGUgbGlua2VyIGZ1bmN0aW9uIHRvIGF2b2lkIGRlZXAgaW1wb3J0aW5nIHRvIGFjY2VzcyB0aGUgdHlwZVxudHlwZSBOZ3RzY0xvZ2dlciA9IFBhcmFtZXRlcnM8XG4gIHR5cGVvZiBpbXBvcnQoJ0Bhbmd1bGFyL2NvbXBpbGVyLWNsaS9saW5rZXIvYmFiZWwnKS5jcmVhdGVFczIwMTVMaW5rZXJQbHVnaW5cbj5bMF1bJ2xvZ2dlciddO1xuXG5mdW5jdGlvbiBjcmVhdGVJMThuRGlhZ25vc3RpY3MocmVwb3J0ZXI6IERpYWdub3N0aWNSZXBvcnRlciB8IHVuZGVmaW5lZCk6IERpYWdub3N0aWNzIHtcbiAgY29uc3QgZGlhZ25vc3RpY3M6IERpYWdub3N0aWNzID0gbmV3IChjbGFzcyB7XG4gICAgcmVhZG9ubHkgbWVzc2FnZXM6IERpYWdub3N0aWNzWydtZXNzYWdlcyddID0gW107XG4gICAgaGFzRXJyb3JzID0gZmFsc2U7XG5cbiAgICBhZGQodHlwZTogRGlhZ25vc3RpY0hhbmRsaW5nU3RyYXRlZ3ksIG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgICAgaWYgKHR5cGUgPT09ICdpZ25vcmUnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKHsgdHlwZSwgbWVzc2FnZSB9KTtcbiAgICAgIHRoaXMuaGFzRXJyb3JzIHx8PSB0eXBlID09PSAnZXJyb3InO1xuICAgICAgcmVwb3J0ZXI/Lih0eXBlLCBtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgIHRoaXMuYWRkKCdlcnJvcicsIG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHdhcm4obWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICB0aGlzLmFkZCgnd2FybmluZycsIG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIG1lcmdlKG90aGVyOiBEaWFnbm9zdGljcyk6IHZvaWQge1xuICAgICAgZm9yIChjb25zdCBkaWFnbm9zdGljIG9mIG90aGVyLm1lc3NhZ2VzKSB7XG4gICAgICAgIHRoaXMuYWRkKGRpYWdub3N0aWMudHlwZSwgZGlhZ25vc3RpYy5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3JtYXREaWFnbm9zdGljcygpOiBuZXZlciB7XG4gICAgICBhc3NlcnQuZmFpbChcbiAgICAgICAgJ0Bhbmd1bGFyL2xvY2FsaXplIERpYWdub3N0aWNzIGZvcm1hdERpYWdub3N0aWNzIHNob3VsZCBub3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGJhYmVsLicsXG4gICAgICApO1xuICAgIH1cbiAgfSkoKTtcblxuICByZXR1cm4gZGlhZ25vc3RpY3M7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUkxOG5QbHVnaW5zKFxuICBsb2NhbGU6IHN0cmluZyxcbiAgdHJhbnNsYXRpb246IFJlY29yZDxzdHJpbmcsIMm1UGFyc2VkVHJhbnNsYXRpb24+IHwgdW5kZWZpbmVkLFxuICBtaXNzaW5nVHJhbnNsYXRpb25CZWhhdmlvcjogJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdpZ25vcmUnLFxuICBkaWFnbm9zdGljUmVwb3J0ZXI6IERpYWdub3N0aWNSZXBvcnRlciB8IHVuZGVmaW5lZCxcbiAgcGx1Z2luQ3JlYXRvcnM6IEkxOG5QbHVnaW5DcmVhdG9ycyxcbikge1xuICBjb25zdCBkaWFnbm9zdGljcyA9IGNyZWF0ZUkxOG5EaWFnbm9zdGljcyhkaWFnbm9zdGljUmVwb3J0ZXIpO1xuICBjb25zdCBwbHVnaW5zID0gW107XG5cbiAgY29uc3QgeyBtYWtlRXMyMDE1VHJhbnNsYXRlUGx1Z2luLCBtYWtlTG9jYWxlUGx1Z2luIH0gPSBwbHVnaW5DcmVhdG9ycztcblxuICBpZiAodHJhbnNsYXRpb24pIHtcbiAgICBwbHVnaW5zLnB1c2goXG4gICAgICBtYWtlRXMyMDE1VHJhbnNsYXRlUGx1Z2luKGRpYWdub3N0aWNzLCB0cmFuc2xhdGlvbiwge1xuICAgICAgICBtaXNzaW5nVHJhbnNsYXRpb246IG1pc3NpbmdUcmFuc2xhdGlvbkJlaGF2aW9yLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHBsdWdpbnMucHVzaChtYWtlTG9jYWxlUGx1Z2luKGxvY2FsZSkpO1xuXG4gIHJldHVybiBwbHVnaW5zO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVOZ3RzY0xvZ2dlcihyZXBvcnRlcjogRGlhZ25vc3RpY1JlcG9ydGVyIHwgdW5kZWZpbmVkKTogTmd0c2NMb2dnZXIge1xuICByZXR1cm4ge1xuICAgIGxldmVsOiAxLCAvLyBJbmZvIGxldmVsXG4gICAgZGVidWcoLi4uYXJnczogc3RyaW5nW10pIHt9LFxuICAgIGluZm8oLi4uYXJnczogc3RyaW5nW10pIHtcbiAgICAgIHJlcG9ydGVyPy4oJ2luZm8nLCBhcmdzLmpvaW4oKSk7XG4gICAgfSxcbiAgICB3YXJuKC4uLmFyZ3M6IHN0cmluZ1tdKSB7XG4gICAgICByZXBvcnRlcj8uKCd3YXJuaW5nJywgYXJncy5qb2luKCkpO1xuICAgIH0sXG4gICAgZXJyb3IoLi4uYXJnczogc3RyaW5nW10pIHtcbiAgICAgIHJlcG9ydGVyPy4oJ2Vycm9yJywgYXJncy5qb2luKCkpO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChhcGk6IHVua25vd24sIG9wdGlvbnM6IEFwcGxpY2F0aW9uUHJlc2V0T3B0aW9ucykge1xuICBjb25zdCBwcmVzZXRzID0gW107XG4gIGNvbnN0IHBsdWdpbnMgPSBbXTtcbiAgbGV0IG5lZWRSdW50aW1lVHJhbnNmb3JtID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMuYW5ndWxhckxpbmtlcj8uc2hvdWxkTGluaykge1xuICAgIHBsdWdpbnMucHVzaChcbiAgICAgIG9wdGlvbnMuYW5ndWxhckxpbmtlci5saW5rZXJQbHVnaW5DcmVhdG9yKHtcbiAgICAgICAgbGlua2VySml0TW9kZTogb3B0aW9ucy5hbmd1bGFyTGlua2VyLmppdE1vZGUsXG4gICAgICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHVudGlsIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzQyNzY5IGlzIGZpeGVkLlxuICAgICAgICBzb3VyY2VNYXBwaW5nOiBmYWxzZSxcbiAgICAgICAgbG9nZ2VyOiBjcmVhdGVOZ3RzY0xvZ2dlcihvcHRpb25zLmRpYWdub3N0aWNSZXBvcnRlciksXG4gICAgICAgIGZpbGVTeXN0ZW06IHtcbiAgICAgICAgICByZXNvbHZlOiBwYXRoLnJlc29sdmUsXG4gICAgICAgICAgZXhpc3RzOiBmcy5leGlzdHNTeW5jLFxuICAgICAgICAgIGRpcm5hbWU6IHBhdGguZGlybmFtZSxcbiAgICAgICAgICByZWxhdGl2ZTogcGF0aC5yZWxhdGl2ZSxcbiAgICAgICAgICByZWFkRmlsZTogZnMucmVhZEZpbGVTeW5jLFxuICAgICAgICAgIC8vIE5vZGUuSlMgdHlwZXMgZG9uJ3Qgb3ZlcmxhcCB0aGUgQ29tcGlsZXIgdHlwZXMuXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgfSBhcyBhbnksXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLy8gQXBwbGljYXRpb25zIGNvZGUgRVMgdmVyc2lvbiBjYW4gYmUgY29udHJvbGxlZCB1c2luZyBUeXBlU2NyaXB0J3MgYHRhcmdldGAgb3B0aW9uLlxuICAvLyBIb3dldmVyLCB0aGlzIGRvZXNuJ3QgZWZmZWN0IGxpYnJhcmllcyBhbmQgaGVuY2Ugd2UgdXNlIHByZXNldC1lbnYgdG8gZG93bmxldmVsIEVTIGZlYXR1cmVzXG4gIC8vIGJhc2VkIG9uIHRoZSBzdXBwb3J0ZWQgYnJvd3NlcnMgaW4gYnJvd3NlcnNsaXN0LlxuICBpZiAob3B0aW9ucy5zdXBwb3J0ZWRCcm93c2Vycykge1xuICAgIGNvbnN0IGluY2x1ZGVQbHVnaW5zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gSWYgYSBTYWZhcmkgYnJvd3NlciBhZmZlY3RlZCBieSB0aGUgY2xhc3MgZmllbGQgc2NvcGUgYnVnIGlzIHNlbGVjdGVkLCB3ZVxuICAgIC8vIGRvd25sZXZlbCBjbGFzcyBwcm9wZXJ0aWVzIGJ5IGVuc3VyaW5nIHRoZSBjbGFzcyBwcm9wZXJ0aWVzIEJhYmVsIHBsdWdpblxuICAgIC8vIGlzIGFsd2F5cyBpbmNsdWRlZC0gcmVnYXJkbGVzcyBvZiB0aGUgcHJlc2V0LWVudiB0YXJnZXRzLlxuICAgIGlmIChvcHRpb25zLnN1cHBvcnRlZEJyb3dzZXJzLnNvbWUoKGIpID0+IHNhZmFyaUNsYXNzRmllbGRTY29wZUJ1Z0Jyb3dzZXJzLmhhcyhiKSkpIHtcbiAgICAgIGluY2x1ZGVQbHVnaW5zLnB1c2goXG4gICAgICAgICdAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLWNsYXNzLXByb3BlcnRpZXMnLFxuICAgICAgICAnQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1wcml2YXRlLW1ldGhvZHMnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBwcmVzZXRzLnB1c2goW1xuICAgICAgcmVxdWlyZSgnQGJhYmVsL3ByZXNldC1lbnYnKS5kZWZhdWx0LFxuICAgICAge1xuICAgICAgICBidWdmaXhlczogdHJ1ZSxcbiAgICAgICAgbW9kdWxlczogZmFsc2UsXG4gICAgICAgIHRhcmdldHM6IG9wdGlvbnMuc3VwcG9ydGVkQnJvd3NlcnMsXG4gICAgICAgIGluY2x1ZGU6IGluY2x1ZGVQbHVnaW5zLFxuICAgICAgICBleGNsdWRlOiBbJ3RyYW5zZm9ybS10eXBlb2Ytc3ltYm9sJ10sXG4gICAgICB9LFxuICAgIF0pO1xuICAgIG5lZWRSdW50aW1lVHJhbnNmb3JtID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmkxOG4pIHtcbiAgICBjb25zdCB7IGxvY2FsZSwgbWlzc2luZ1RyYW5zbGF0aW9uQmVoYXZpb3IsIHBsdWdpbkNyZWF0b3JzLCB0cmFuc2xhdGlvbiB9ID0gb3B0aW9ucy5pMThuO1xuICAgIGNvbnN0IGkxOG5QbHVnaW5zID0gY3JlYXRlSTE4blBsdWdpbnMoXG4gICAgICBsb2NhbGUsXG4gICAgICB0cmFuc2xhdGlvbixcbiAgICAgIG1pc3NpbmdUcmFuc2xhdGlvbkJlaGF2aW9yIHx8ICdpZ25vcmUnLFxuICAgICAgb3B0aW9ucy5kaWFnbm9zdGljUmVwb3J0ZXIsXG4gICAgICBwbHVnaW5DcmVhdG9ycyxcbiAgICApO1xuXG4gICAgcGx1Z2lucy5wdXNoKC4uLmkxOG5QbHVnaW5zKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmZvcmNlQXN5bmNUcmFuc2Zvcm1hdGlvbikge1xuICAgIC8vIEFsd2F5cyB0cmFuc2Zvcm0gYXN5bmMvYXdhaXQgdG8gc3VwcG9ydCBab25lLmpzXG4gICAgcGx1Z2lucy5wdXNoKFxuICAgICAgcmVxdWlyZSgnQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tYXN5bmMtdG8tZ2VuZXJhdG9yJykuZGVmYXVsdCxcbiAgICAgIHJlcXVpcmUoJ0BiYWJlbC9wbHVnaW4tcHJvcG9zYWwtYXN5bmMtZ2VuZXJhdG9yLWZ1bmN0aW9ucycpLmRlZmF1bHQsXG4gICAgKTtcbiAgICBuZWVkUnVudGltZVRyYW5zZm9ybSA9IHRydWU7XG4gIH1cblxuICBpZiAob3B0aW9ucy5vcHRpbWl6ZSkge1xuICAgIGlmIChvcHRpb25zLm9wdGltaXplLnB1cmVUb3BMZXZlbCkge1xuICAgICAgcGx1Z2lucy5wdXNoKHJlcXVpcmUoJy4uL3BsdWdpbnMvcHVyZS10b3BsZXZlbC1mdW5jdGlvbnMnKS5kZWZhdWx0KTtcbiAgICB9XG5cbiAgICBwbHVnaW5zLnB1c2goXG4gICAgICByZXF1aXJlKCcuLi9wbHVnaW5zL2VsaWRlLWFuZ3VsYXItbWV0YWRhdGEnKS5kZWZhdWx0LFxuICAgICAgW1xuICAgICAgICByZXF1aXJlKCcuLi9wbHVnaW5zL2FkanVzdC10eXBlc2NyaXB0LWVudW1zJykuZGVmYXVsdCxcbiAgICAgICAgeyBsb29zZTogb3B0aW9ucy5vcHRpbWl6ZS5sb29zZUVudW1zIH0sXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICByZXF1aXJlKCcuLi9wbHVnaW5zL2FkanVzdC1zdGF0aWMtY2xhc3MtbWVtYmVycycpLmRlZmF1bHQsXG4gICAgICAgIHsgd3JhcERlY29yYXRvcnM6IG9wdGlvbnMub3B0aW1pemUud3JhcERlY29yYXRvcnMgfSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmluc3RydW1lbnRDb2RlKSB7XG4gICAgcGx1Z2lucy5wdXNoKFtcbiAgICAgIHJlcXVpcmUoJ2JhYmVsLXBsdWdpbi1pc3RhbmJ1bCcpLmRlZmF1bHQsXG4gICAgICB7XG4gICAgICAgIGlucHV0U291cmNlTWFwOiBvcHRpb25zLmluc3RydW1lbnRDb2RlLmlucHV0U291cmNlTWFwID8/IGZhbHNlLFxuICAgICAgICBjd2Q6IG9wdGlvbnMuaW5zdHJ1bWVudENvZGUuaW5jbHVkZWRCYXNlUGF0aCxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH1cblxuICBpZiAobmVlZFJ1bnRpbWVUcmFuc2Zvcm0pIHtcbiAgICAvLyBCYWJlbCBlcXVpdmFsZW50IHRvIFR5cGVTY3JpcHQncyBgaW1wb3J0SGVscGVyc2Agb3B0aW9uXG4gICAgcGx1Z2lucy5wdXNoKFtcbiAgICAgIHJlcXVpcmUoJ0BiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXJ1bnRpbWUnKS5kZWZhdWx0LFxuICAgICAge1xuICAgICAgICB1c2VFU01vZHVsZXM6IHRydWUsXG4gICAgICAgIHZlcnNpb246IHJlcXVpcmUoJ0BiYWJlbC9ydW50aW1lL3BhY2thZ2UuanNvbicpLnZlcnNpb24sXG4gICAgICAgIGFic29sdXRlUnVudGltZTogcGF0aC5kaXJuYW1lKHJlcXVpcmUucmVzb2x2ZSgnQGJhYmVsL3J1bnRpbWUvcGFja2FnZS5qc29uJykpLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfVxuXG4gIHJldHVybiB7IHByZXNldHMsIHBsdWdpbnMgfTtcbn1cbiJdfQ==
|