projen-pipelines 0.3.21 → 0.3.23
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/.jsii +7 -4
- package/API.md +420 -0
- package/lib/assign-approver/base.js +3 -4
- package/lib/assign-approver/github.js +4 -4
- package/lib/awscdk/base.js +48 -6
- package/lib/awscdk/bash.js +2 -4
- package/lib/awscdk/github.js +13 -6
- package/lib/awscdk/gitlab.js +11 -6
- package/lib/drift/base.js +8 -4
- package/lib/drift/bash.js +3 -4
- package/lib/drift/detect-drift.js +3 -2
- package/lib/drift/github.js +5 -4
- package/lib/drift/gitlab.js +5 -4
- package/lib/drift/step.js +2 -4
- package/lib/release.js +5 -2
- package/lib/steps/amplify-deploy.step.js +5 -4
- package/lib/steps/artifact-steps.js +5 -6
- package/lib/steps/aws-assume-role.step.js +3 -4
- package/lib/steps/github-summary.step.js +3 -4
- package/lib/steps/package-manager-setup.step.js +4 -6
- package/lib/steps/registries.js +7 -8
- package/lib/steps/set-env.step.js +2 -1
- package/lib/steps/step.js +9 -10
- package/lib/versioning/computation.js +6 -8
- package/lib/versioning/config.js +3 -6
- package/lib/versioning/outputs.js +13 -16
- package/lib/versioning/setup.js +9 -9
- package/lib/versioning/strategy.js +4 -4
- package/lib/versioning/version-info.js +18 -9
- package/node_modules/@babel/code-frame/package.json +2 -2
- package/node_modules/@babel/helper-validator-identifier/package.json +1 -1
- package/node_modules/@nodable/entities/README.md +52 -1
- package/node_modules/@nodable/entities/package.json +4 -1
- package/node_modules/@nodable/entities/src/EntityDecoder.js +105 -4
- package/node_modules/@nodable/entities/src/EntityEncoder.js +79 -34
- package/node_modules/@nodable/entities/src/all-entities.js +53 -0
- package/node_modules/@nodable/entities/src/entities.js +0 -38
- package/node_modules/@nodable/entities/src/entityTries.js +48 -37
- package/node_modules/@nodable/entities/src/index.d.ts +93 -2
- package/node_modules/@nodable/entities/src/index.js +2 -2
- package/node_modules/anynum/LICENSE +21 -0
- package/node_modules/anynum/README.md +142 -0
- package/node_modules/anynum/anynum.js +135 -0
- package/node_modules/anynum/digitTable.js +116 -0
- package/node_modules/anynum/package.json +42 -0
- package/node_modules/dotgitignore/node_modules/brace-expansion/README.md +23 -1
- package/node_modules/dotgitignore/node_modules/brace-expansion/index.js +265 -86
- package/node_modules/dotgitignore/node_modules/brace-expansion/package.json +1 -1
- package/node_modules/fast-xml-builder/CHANGELOG.md +12 -0
- package/node_modules/fast-xml-builder/README.md +4 -1
- package/node_modules/fast-xml-builder/lib/fxb.cjs +1 -1
- package/node_modules/fast-xml-builder/lib/fxb.min.js +1 -1
- package/node_modules/fast-xml-builder/lib/fxb.min.js.map +1 -1
- package/node_modules/fast-xml-builder/package.json +6 -10
- package/node_modules/fast-xml-builder/src/fxb.js +34 -24
- package/node_modules/fast-xml-builder/src/orderedJs2Xml.js +18 -17
- package/node_modules/fast-xml-builder/src/util.js +10 -3
- package/node_modules/fast-xml-parser/CHANGELOG.md +34 -0
- package/node_modules/fast-xml-parser/README.md +10 -6
- package/node_modules/fast-xml-parser/lib/fxbuilder.min.js +1 -1
- package/node_modules/fast-xml-parser/lib/fxbuilder.min.js.map +1 -1
- package/node_modules/fast-xml-parser/lib/fxp.cjs +1 -1
- package/node_modules/fast-xml-parser/lib/fxp.d.cts +3 -1
- package/node_modules/fast-xml-parser/lib/fxp.min.js +1 -1
- package/node_modules/fast-xml-parser/lib/fxp.min.js.map +1 -1
- package/node_modules/fast-xml-parser/lib/fxparser.min.js +1 -1
- package/node_modules/fast-xml-parser/lib/fxparser.min.js.map +1 -1
- package/node_modules/fast-xml-parser/package.json +8 -10
- package/node_modules/fast-xml-parser/src/fxp.d.ts +5 -1
- package/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js +16 -1
- package/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js +2 -1
- package/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js +36 -3
- package/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js +14 -0
- package/node_modules/get-pkg-repo/node_modules/yargs/package.json +27 -26
- package/node_modules/get-pkg-repo/node_modules/yargs/yargs +5 -9
- package/node_modules/get-pkg-repo/node_modules/yargs/yargs.cjs +15 -0
- package/node_modules/hasown/CHANGELOG.md +7 -0
- package/node_modules/hasown/index.d.ts +0 -1
- package/node_modules/hasown/package.json +4 -5
- package/node_modules/is-unsafe/LICENSE +21 -0
- package/node_modules/is-unsafe/README.md +599 -0
- package/node_modules/is-unsafe/package.json +56 -0
- package/node_modules/is-unsafe/src/contexts/html.js +102 -0
- package/node_modules/is-unsafe/src/contexts/log.js +98 -0
- package/node_modules/is-unsafe/src/contexts/nosql.js +114 -0
- package/node_modules/is-unsafe/src/contexts/redos.js +60 -0
- package/node_modules/is-unsafe/src/contexts/shell.js +105 -0
- package/node_modules/is-unsafe/src/contexts/sql-strict.js +47 -0
- package/node_modules/is-unsafe/src/contexts/sql.js +95 -0
- package/node_modules/is-unsafe/src/contexts/svg.js +81 -0
- package/node_modules/is-unsafe/src/contexts/xml.js +79 -0
- package/node_modules/is-unsafe/src/index.cjs +27 -0
- package/node_modules/is-unsafe/src/index.d.ts +95 -0
- package/node_modules/is-unsafe/src/index.js +265 -0
- package/node_modules/path-expression-matcher/README.md +82 -7
- package/node_modules/path-expression-matcher/lib/pem.cjs +1 -1
- package/node_modules/path-expression-matcher/lib/pem.d.cts +94 -3
- package/node_modules/path-expression-matcher/lib/pem.min.js +1 -1
- package/node_modules/path-expression-matcher/lib/pem.min.js.map +1 -1
- package/node_modules/path-expression-matcher/package.json +2 -1
- package/node_modules/path-expression-matcher/src/ExpressionSet.js +18 -2
- package/node_modules/path-expression-matcher/src/Matcher.js +109 -16
- package/node_modules/path-expression-matcher/src/index.d.ts +67 -1
- package/node_modules/path-expression-matcher/src/index.js +3 -2
- package/node_modules/semver/classes/range.js +24 -4
- package/node_modules/semver/classes/semver.js +19 -2
- package/node_modules/semver/package.json +2 -2
- package/node_modules/semver/ranges/subset.js +2 -2
- package/node_modules/strnum/CHANGELOG.md +14 -0
- package/node_modules/strnum/README.md +9 -0
- package/node_modules/strnum/package.json +7 -3
- package/node_modules/strnum/strnum.js +14 -2
- package/node_modules/xml-naming/LICENSE +21 -0
- package/node_modules/xml-naming/README.md +99 -1
- package/node_modules/xml-naming/package.json +4 -2
- package/node_modules/xml-naming/src/index.d.ts +34 -0
- package/node_modules/xml-naming/src/index.js +134 -22
- package/node_modules/yargs/build/index.cjs +1 -1
- package/node_modules/yargs/package.json +6 -4
- package/node_modules/yargs/yargs +5 -9
- package/node_modules/yargs/yargs.cjs +15 -0
- package/package.json +8 -9
- package/node_modules/yargs/browser.d.ts +0 -5
package/lib/awscdk/github.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.GithubCDKPipeline = void 0;
|
|
5
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
@@ -18,6 +17,18 @@ const WORKFLOW_DIR = '.github/workflows';
|
|
|
18
17
|
* Implements a CDK Pipeline configured specifically for GitHub workflows.
|
|
19
18
|
*/
|
|
20
19
|
class GithubCDKPipeline extends base_1.CDKPipeline {
|
|
20
|
+
options;
|
|
21
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.GithubCDKPipeline", version: "0.3.23" };
|
|
22
|
+
/** Indicates if versioned artifacts are needed based on manual approval requirements. */
|
|
23
|
+
needsVersionedArtifacts;
|
|
24
|
+
/** The GitHub workflow associated with the pipeline. */
|
|
25
|
+
deploymentWorkflow;
|
|
26
|
+
/** List of deployment stages for the pipeline. */
|
|
27
|
+
deploymentStages = [];
|
|
28
|
+
/** The GitHub component used for adding workflows. */
|
|
29
|
+
gh;
|
|
30
|
+
useGithubPackages;
|
|
31
|
+
minNodeVersion;
|
|
21
32
|
/**
|
|
22
33
|
* Constructs a new GithubCDKPipeline instance.
|
|
23
34
|
* @param app - The CDK app associated with this pipeline.
|
|
@@ -34,8 +45,6 @@ class GithubCDKPipeline extends base_1.CDKPipeline {
|
|
|
34
45
|
},
|
|
35
46
|
});
|
|
36
47
|
this.options = options;
|
|
37
|
-
/** List of deployment stages for the pipeline. */
|
|
38
|
-
this.deploymentStages = [];
|
|
39
48
|
// For subprojects, use the root project's GitHub component since
|
|
40
49
|
// GitHub Actions only discovers workflows in the repo-root .github/workflows/
|
|
41
50
|
const gh = this.workingDirectory ? github_1.GitHub.of(this.app.root) : this.app.github;
|
|
@@ -504,6 +513,4 @@ class GithubCDKPipeline extends base_1.CDKPipeline {
|
|
|
504
513
|
}
|
|
505
514
|
}
|
|
506
515
|
exports.GithubCDKPipeline = GithubCDKPipeline;
|
|
507
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
508
|
-
GithubCDKPipeline[_a] = { fqn: "projen-pipelines.GithubCDKPipeline", version: "0.3.21" };
|
|
509
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9naXRodWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSw4Q0FBMkQ7QUFDM0QsdUVBQWtGO0FBQ2xGLGlDQUE0SDtBQUM1SCxzQ0FBMkM7QUFDM0Msd0NBQWlEO0FBQ2pELG9DQUFnRztBQUNoRyw0REFBbUY7QUFDbkYsc0VBQXFFO0FBQ3JFLG9EQUE4RDtBQUU5RCxNQUFNLG1CQUFtQixHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDOUMsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUM7QUF5Q3pDOztHQUVHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxrQkFBVztJQWVoRDs7OztPQUlHO0lBQ0gsWUFBWSxHQUErQixFQUFVLE9BQWlDO1FBQ3BGLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVCxHQUFHLE9BQU87WUFDVixHQUFHLE9BQU8sQ0FBQyw0QkFBNEIsSUFBSTtnQkFDekMsZUFBZSxFQUFFO29CQUNmLElBQUksb0NBQXVCLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO29CQUNsRCxHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUksRUFBRTtpQkFDakM7YUFDRjtTQUNGLENBQUMsQ0FBQztRQVRnRCxZQUFPLEdBQVAsT0FBTyxDQUEwQjtRQWJ0RixrREFBa0Q7UUFDMUMscUJBQWdCLEdBQWEsRUFBRSxDQUFDO1FBdUJ0QyxpRUFBaUU7UUFDakUsOEVBQThFO1FBQzlFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUM5RSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FB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R2l0SHViLCBHaXRodWJXb3JrZmxvdyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViJztcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24sIEpvYlBlcm1pc3Npb25zIH0gZnJvbSAncHJvamVuL2xpYi9naXRodWIvd29ya2Zsb3dzLW1vZGVsJztcbmltcG9ydCB7IENka0RpZmZUeXBlLCBDREtQaXBlbGluZSwgQ0RLUGlwZWxpbmVPcHRpb25zLCBEZXBsb3ltZW50U3RhZ2UsIEluZGVwZW5kZW50U3RhZ2UsIE5hbWVkU3RhZ2VPcHRpb25zIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IFBpcGVsaW5lRW5naW5lIH0gZnJvbSAnLi4vZW5naW5lJztcbmltcG9ydCB7IG1lcmdlSm9iUGVybWlzc2lvbnMgfSBmcm9tICcuLi9lbmdpbmVzJztcbmltcG9ydCB7IEF3c0Fzc3VtZVJvbGVTdGVwLCBQaXBlbGluZVN0ZXAsIFByb2plblNjcmlwdFN0ZXAsIFNpbXBsZUNvbW1hbmRTdGVwIH0gZnJvbSAnLi4vc3RlcHMnO1xuaW1wb3J0IHsgRG93bmxvYWRBcnRpZmFjdFN0ZXAsIFVwbG9hZEFydGlmYWN0U3RlcCB9IGZyb20gJy4uL3N0ZXBzL2FydGlmYWN0LXN0ZXBzJztcbmltcG9ydCB7IENka091dHB1dHNTdW1tYXJ5U3RlcCB9IGZyb20gJy4uL3N0ZXBzL2dpdGh1Yi1zdW1tYXJ5LnN0ZXAnO1xuaW1wb3J0IHsgR2l0aHViUGFja2FnZXNMb2dpblN0ZXAgfSBmcm9tICcuLi9zdGVwcy9yZWdpc3RyaWVzJztcblxuY29uc3QgREVGQVVMVF9SVU5ORVJfVEFHUyA9IFsndWJ1bnR1LWxhdGVzdCddO1xuY29uc3QgV09SS0ZMT1dfRElSID0gJy5naXRodWIvd29ya2Zsb3dzJztcblxuXG4vKipcbiAqIEV4dGVuc2lvbiBvZiB0aGUgYmFzZSBDREtQaXBlbGluZSBvcHRpb25zIGluY2x1ZGluZyBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgR2l0SHViLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdGh1YkNES1BpcGVsaW5lT3B0aW9ucyBleHRlbmRzIENES1BpcGVsaW5lT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIHJ1bm5lciB0YWdzIHRvIHVzZSB0byBzZWxlY3QgcnVubmVyc1xuICAgKlxuICAgKiBAZGVmYXVsdCBbJ3VidW50dS1sYXRlc3QnXVxuICAgKi9cbiAgcmVhZG9ubHkgcnVubmVyVGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKiB1c2UgR2l0SHViIFBhY2thZ2VzIHRvIHN0b3JlIHZlc2lvbmVkIGFydGlmYWN0cyBvZiBjbG91ZCBhc3NlbWJseTsgYWxzbyBuZWVkZWQgZm9yIG1hbnVhbCBhcHByb3ZhbHMgKi9cbiAgcmVhZG9ubHkgdXNlR2l0aHViUGFja2FnZXNGb3JBc3NlbWJseT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHdoZXRoZXIgdG8gdXNlIEdpdEh1YiBlbnZpcm9ubWVudHMgZm9yIGRlcGxveW1lbnQgc3RhZ2VzXG4gICAqXG4gICAqIElORk86IFdoZW4gdXNpbmcgZW52aXJvbm1lbnRzIGNvbnNpZGVyIHByb3RlY3Rpb24gcnVsZXMgaW5zdGVhZCBvZiB1c2luZyB0aGUgbWFudWFsIG9wdGlvbiBvZiBwcm9qZW4tcGlwZWxpbmVzIGZvciBzdGFnZXNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHVzZUdpdGh1YkVudmlyb25tZW50cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHdoZXRoZXIgdG8gdXNlIEdpdEh1YiBlbnZpcm9ubWVudHMgZm9yIGFzc2V0IHVwbG9hZCBzdGVwXG4gICAqIENyZWF0ZSBzZXBhcmF0ZSwgcGFyYWxsZWwgam9icyBmb3IgYXNzZXQgdXBsb2FkIHNpbmNlIEdpdEh1YiBFbnZpcm9ubWVudHNcbiAgICogcmVxdWlyZSB1bmlxdWUgZW52aXJvbm1lbnQgbmFtZXMgcGVyIGpvYlxuICAgKlxuICAgKiBXQVJOSU5HOiB0aGlzIHBhcmFtZXRlciByZXF1aXJlcyByZWJ1aWxkaW5nIHRoZSBjb250YWluZXIgYXNzZXRzIGZvciBlYWNoIHN0YWdlIGFuZCB0aGV5IHdpbGwgbm90XG4gICAqIGJlIHRoZSBcInNhbWUgYmluYXJ5XCIsIHNvIHRoZXJlIGlzIGEgKHNtYWxsKSBjaGFuY2UgdGhhdCBpdCBjb3VsZCBwcm9kdWNlIGRpZmZlcmVudCBiaW5hcmllcyBwZXIgc3RhZ2VcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHVzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkPzogYm9vbGVhbjtcbn1cblxuXG4vKipcbiAqIEltcGxlbWVudHMgYSBDREsgUGlwZWxpbmUgY29uZmlndXJlZCBzcGVjaWZpY2FsbHkgZm9yIEdpdEh1YiB3b3JrZmxvd3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBHaXRodWJDREtQaXBlbGluZSBleHRlbmRzIENES1BpcGVsaW5lIHtcblxuICAvKiogSW5kaWNhdGVzIGlmIHZlcnNpb25lZCBhcnRpZmFjdHMgYXJlIG5lZWRlZCBiYXNlZCBvbiBtYW51YWwgYXBwcm92YWwgcmVxdWlyZW1lbnRzLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmVlZHNWZXJzaW9uZWRBcnRpZmFjdHM6IGJvb2xlYW47XG5cbiAgLyoqIFRoZSBHaXRIdWIgd29ya2Zsb3cgYXNzb2NpYXRlZCB3aXRoIHRoZSBwaXBlbGluZS4gKi9cbiAgcHJpdmF0ZSBkZXBsb3ltZW50V29ya2Zsb3c6IEdpdGh1YldvcmtmbG93O1xuICAvKiogTGlzdCBvZiBkZXBsb3ltZW50IHN0YWdlcyBmb3IgdGhlIHBpcGVsaW5lLiAqL1xuICBwcml2YXRlIGRlcGxveW1lbnRTdGFnZXM6IHN0cmluZ1tdID0gW107XG4gIC8qKiBUaGUgR2l0SHViIGNvbXBvbmVudCB1c2VkIGZvciBhZGRpbmcgd29ya2Zsb3dzLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGdoOiBHaXRIdWI7XG5cbiAgcHJvdGVjdGVkIHVzZUdpdGh1YlBhY2thZ2VzOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgbWluTm9kZVZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBHaXRodWJDREtQaXBlbGluZSBpbnN0YW5jZS5cbiAgICogQHBhcmFtIGFwcCAtIFRoZSBDREsgYXBwIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBpcGVsaW5lLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHBpcGVsaW5lLlxuICAgKi9cbiAgY29uc3RydWN0b3IoYXBwOiBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcCwgcHJpdmF0ZSBvcHRpb25zOiBHaXRodWJDREtQaXBlbGluZU9wdGlvbnMpIHtcbiAgICBzdXBlcihhcHAsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAuLi5vcHRpb25zLnVzZUdpdGh1YlBhY2thZ2VzRm9yQXNzZW1ibHkgJiYge1xuICAgICAgICBwcmVJbnN0YWxsU3RlcHM6IFtcbiAgICAgICAgICBuZXcgR2l0aHViUGFja2FnZXNMb2dpblN0ZXAoYXBwLCB7IHdyaXRlOiBmYWxzZSB9KSxcbiAgICAgICAgICAuLi5vcHRpb25zLnByZUluc3RhbGxTdGVwcyA/PyBbXSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBGb3Igc3VicHJvamVjdHMsIHVzZSB0aGUgcm9vdCBwcm9qZWN0J3MgR2l0SHViIGNvbXBvbmVudCBzaW5jZVxuICAgIC8vIEdpdEh1YiBBY3Rpb25zIG9ubHkgZGlzY292ZXJzIHdvcmtmbG93cyBpbiB0aGUgcmVwby1yb290IC5naXRodWIvd29ya2Zsb3dzL1xuICAgIGNvbnN0IGdoID0gdGhpcy53b3JraW5nRGlyZWN0b3J5ID8gR2l0SHViLm9mKHRoaXMuYXBwLnJvb3QpIDogdGhpcy5hcHAuZ2l0aHViO1xuICAgIGlmICghZ2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignR2l0SHViIGNvbXBvbmVudCBub3QgZm91bmQuIEZvciBzdWJwcm9qZWN0cywgZW5zdXJlIHRoZSByb290IHByb2plY3QgaGFzIGEgR2l0SHViIGNvbXBvbmVudC4nKTtcbiAgICB9XG4gICAgdGhpcy5naCA9IGdoO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVwbG95bWVudCB3b3JrZmxvdyBvbiBHaXRIdWIuXG4gICAgdGhpcy5kZXBsb3ltZW50V29ya2Zsb3cgPSB0aGlzLmdoLmFkZFdvcmtmbG93KGAke3RoaXMubmFtZVByZWZpeH1kZXBsb3lgKTtcbiAgICB0aGlzLmRlcGxveW1lbnRXb3JrZmxvdy5vbih7XG4gICAgICBwdXNoOiB7XG4gICAgICAgIGJyYW5jaGVzOiBbdGhpcy5icmFuY2hOYW1lXSxcbiAgICAgICAgLi4udGhpcy5iYXNlT3B0aW9ucy5wYXRocyAmJiB7IHBhdGhzOiB0aGlzLnBhdGhzV2l0aFdvcmtmbG93RmlsZSgnZGVwbG95JykgfSxcbiAgICAgIH0sXG4gICAgICB3b3JrZmxvd0Rpc3BhdGNoOiB7fSxcbiAgICB9KTtcblxuICAgIC8vIERldGVybWluZSBpZiB2ZXJzaW9uZWQgYXJ0aWZhY3RzIGFyZSBuZWNlc3NhcnkuXG4gICAgdGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cyA9IG9wdGlvbnMuc3RhZ2VzLmZpbmQocyA9PiBzLm1hbnVhbEFwcHJvdmFsID09PSB0cnVlKSAhPT0gdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLm5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzICYmICFvcHRpb25zLnBrZ05hbWVzcGFjZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwa2dOYW1lc3BhY2UgaXMgcmVxdWlyZWQgd2hlbiB1c2luZyB2ZXJzaW9uZWQgYXJ0aWZhY3RzIChlLmcuIG1hbnVhbCBhcHByb3ZhbHMpJyk7XG4gICAgfVxuICAgIHRoaXMudXNlR2l0aHViUGFja2FnZXMgPSB0aGlzLm5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzICYmIChvcHRpb25zLnVzZUdpdGh1YlBhY2thZ2VzRm9yQXNzZW1ibHkgPz8gZmFsc2UpO1xuICAgIHRoaXMubWluTm9kZVZlcnNpb24gPSBhcHAubWluTm9kZVZlcnNpb247XG5cbiAgICBpZiAodGhpcy51c2VHaXRodWJQYWNrYWdlcykge1xuICAgICAgYXBwLm5wbXJjLmFkZFJlZ2lzdHJ5KCdodHRwczovL25wbS5wa2cuZ2l0aHViLmNvbScsIHRoaXMuYmFzZU9wdGlvbnMucGtnTmFtZXNwYWNlKTtcbiAgICAgIGFwcC5ucG1yYy5hZGRDb25maWcoJy8vbnBtLnBrZy5naXRodWIuY29tLzpfYXV0aFRva2VuJywgJyR7R0lUSFVCX1RPS0VOfScpO1xuICAgICAgYXBwLm5wbXJjLmFkZENvbmZpZygnLy9ucG0ucGtnLmdpdGh1Yi5jb20vOmFsd2F5cy1hdXRoJywgJ3RydWUnKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgam9icyBmb3Igc3ludGhlc2l6aW5nLCBhc3NldCB1cGxvYWRpbmcsIGFuZCBkZXBsb3ltZW50LlxuICAgIHRoaXMuY3JlYXRlU3ludGgoKTtcblxuICAgIGlmIChvcHRpb25zLnVzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkKSB7XG4gICAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIG9wdGlvbnMuc3RhZ2VzKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlQXNzZXRVcGxvYWQoc3RhZ2UubmFtZSwgc3RhZ2UuZ2l0aHViRW52aXJvbm1lbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNyZWF0ZUFzc2V0VXBsb2FkKCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBvcHRpb25zLnN0YWdlcykge1xuICAgICAgdGhpcy5jcmVhdGVEZXBsb3ltZW50KHN0YWdlLCBvcHRpb25zLnVzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkID8/IGZhbHNlKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiAob3B0aW9ucy5pbmRlcGVuZGVudFN0YWdlcyA/PyBbXSkpIHtcbiAgICAgIHRoaXMuY3JlYXRlSW5kZXBlbmRlbnREZXBsb3ltZW50KHN0YWdlKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgZmVhdHVyZSB3b3JrZmxvd3MgaWYgZmVhdHVyZSBzdGFnZXMgYXJlIGNvbmZpZ3VyZWRcbiAgICBpZiAob3B0aW9ucy5mZWF0dXJlU3RhZ2VzKSB7XG4gICAgICB0aGlzLmNyZWF0ZUZlYXR1cmVXb3JrZmxvd3MoKTtcbiAgICB9XG4gIH1cblxuICAvKiogdGhlIHR5cGUgb2YgZW5naW5lIHRoaXMgaW1wbGVtZW50YXRpb24gb2YgQ0RLUGlwZWxpbmUgaXMgZm9yICovXG4gIHB1YmxpYyBlbmdpbmVUeXBlKCk6IFBpcGVsaW5lRW5naW5lIHtcbiAgICByZXR1cm4gUGlwZWxpbmVFbmdpbmUuR0lUSFVCO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHBhdGhzIGZpbHRlciBhcnJheSB3aXRoIHRoZSB3b3JrZmxvdyBmaWxlIGl0c2VsZiBpbmNsdWRlZC5cbiAgICogVGhpcyBlbnN1cmVzIHRoYXQgY2hhbmdlcyB0byB0aGUgd29ya2Zsb3cgZmlsZSBhbHNvIHRyaWdnZXIgdGhlIHBpcGVsaW5lLlxuICAgKiBAcGFyYW0gd29ya2Zsb3dOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHdvcmtmbG93ICh1c2VkIHRvIGRlcml2ZSB0aGUgZmlsZSBwYXRoKS5cbiAgICovXG4gIHByaXZhdGUgcGF0aHNXaXRoV29ya2Zsb3dGaWxlKHdvcmtmbG93TmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHdvcmtmbG93RmlsZVBhdGggPSBgJHtXT1JLRkxPV19ESVJ9LyR7dGhpcy5uYW1lUHJlZml4fSR7d29ya2Zsb3dOYW1lfS55bWxgO1xuICAgIHJldHVybiBbLi4udGhpcy5iYXNlT3B0aW9ucy5wYXRocyEsIHdvcmtmbG93RmlsZVBhdGhdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFydGlmYWN0IHBhdGggcHJlZml4ZWQgd2l0aCB3b3JraW5nRGlyZWN0b3J5IGlmIHNldC5cbiAgICogQXJ0aWZhY3QgdXBsb2FkL2Rvd25sb2FkIHBhdGhzIHJlc29sdmUgYWdhaW5zdCBHSVRIVUJfV09SS1NQQUNFLFxuICAgKiBub3QgdGhlIGpvYiB3b3JraW5nLWRpcmVjdG9yeSwgc28gdGhleSBtdXN0IGJlIHByZWZpeGVkIGV4cGxpY2l0bHkuXG4gICAqL1xuICBwcml2YXRlIGFydGlmYWN0UGF0aChyZWxhdGl2ZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMud29ya2luZ0RpcmVjdG9yeSkge1xuICAgICAgcmV0dXJuIGAke3RoaXMud29ya2luZ0RpcmVjdG9yeX0vJHtyZWxhdGl2ZVBhdGh9YDtcbiAgICB9XG4gICAgcmV0dXJuIHJlbGF0aXZlUGF0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGpvYiBkZWZhdWx0cyBmb3Igd29ya2luZyBkaXJlY3Rvcnkgd2hlbiBzZXQuXG4gICAqL1xuICBwcml2YXRlIGpvYkRlZmF1bHRzKCk6IG9iamVjdCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMud29ya2luZ0RpcmVjdG9yeSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcnVuOiB7XG4gICAgICAgICAgJ3dvcmtpbmctZGlyZWN0b3J5JzogdGhpcy53b3JraW5nRGlyZWN0b3J5LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGZlYXR1cmUgYnJhbmNoIHdvcmtmbG93cyBmb3IgZGVwbG95aW5nIGFuZCBkZXN0cm95aW5nIGZlYXR1cmUgZW52aXJvbm1lbnRzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUZlYXR1cmVXb3JrZmxvd3MoKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGVGZWF0dXJlRGVwbG95V29ya2Zsb3coKTtcbiAgICB0aGlzLmNyZWF0ZUZlYXR1cmVEZXN0cm95V29ya2Zsb3coKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgd29ya2Zsb3cgZm9yIGRlcGxveWluZyBmZWF0dXJlIGJyYW5jaGVzIHdoZW4gUFJzIGFyZSBsYWJlbGVkIHdpdGggJ2ZlYXR1cmUtZGVwbG95bWVudCcuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUZlYXR1cmVEZXBsb3lXb3JrZmxvdygpOiB2b2lkIHtcbiAgICBjb25zdCB3b3JrZmxvdyA9IHRoaXMuZ2guYWRkV29ya2Zsb3coYCR7dGhpcy5uYW1lUHJlZml4fWRlcGxveS1mZWF0dXJlYCk7XG5cbiAgICB3b3JrZmxvdy5vbih7XG4gICAgICBwdWxsUmVxdWVzdFRhcmdldDoge1xuICAgICAgICB0eXBlczogWydzeW5jaHJvbml6ZScsICdsYWJlbGVkJywgJ29wZW5lZCcsICdyZW9wZW5lZCddLFxuICAgICAgICAuLi50aGlzLmJhc2VPcHRpb25zLnBhdGhzICYmIHsgcGF0aHM6IHRoaXMucGF0aHNXaXRoV29ya2Zsb3dGaWxlKCdkZXBsb3ktZmVhdHVyZScpIH0sXG4gICAgICB9LFxuICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge30sXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdGVwcyA9IFtcbiAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVTeW50aFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZURlcGxveVN0ZXAoeyBuYW1lOiAnZmVhdHVyZScsIGVudjogdGhpcy5iYXNlT3B0aW9ucy5mZWF0dXJlU3RhZ2VzIS5lbnYgfSksXG4gICAgICBuZXcgQ2RrT3V0cHV0c1N1bW1hcnlTdGVwKHRoaXMucHJvamVjdCwgeyBzdGFnZU5hbWU6ICdmZWF0dXJlJyB9KSxcbiAgICAgIG5ldyBVcGxvYWRBcnRpZmFjdFN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6IGAke3RoaXMubmFtZVByZWZpeH1jZGstb3V0cHV0cy1mZWF0dXJlYCxcbiAgICAgICAgcGF0aDogdGhpcy5hcnRpZmFjdFBhdGgoYCR7dGhpcy5uYW1lUHJlZml4fWNkay1vdXRwdXRzLWZlYXR1cmUuanNvbmApLFxuICAgICAgfSksXG4gICAgXS5tYXAocyA9PiBzLnRvR2l0aHViKCkpO1xuXG4gICAgd29ya2Zsb3cuYWRkSm9iKCdzeW50aC1hbmQtZGVwbG95Jywge1xuICAgICAgbmFtZTogJ1N5bnRoIGFuZCBkZXBsb3kgQ0RLIGFwcGxpY2F0aW9uIHRvIGZlYXR1cmUgc3RhZ2UnLFxuICAgICAgaWY6IFwiY29udGFpbnMoam9pbihnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0LmxhYmVscy4qLm5hbWUsICcsJyksICdmZWF0dXJlLWRlcGxveW1lbnQnKVwiLFxuICAgICAgbmVlZHM6IFtdLFxuICAgICAgcnVuc09uOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncyA/PyBERUZBVUxUX1JVTk5FUl9UQUdTLFxuICAgICAgLi4udGhpcy5qb2JEZWZhdWx0cygpICYmIHsgZGVmYXVsdHM6IHRoaXMuam9iRGVmYXVsdHMoKSB9LFxuICAgICAgcGVybWlzc2lvbnM6IG1lcmdlSm9iUGVybWlzc2lvbnMoe1xuICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICBpZFRva2VuOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgfSwgLi4uKHN0ZXBzLmZsYXRNYXAocyA9PiBzLnBlcm1pc3Npb25zKS5maWx0ZXIocCA9PiBwICE9IHVuZGVmaW5lZCkgYXMgSm9iUGVybWlzc2lvbnNbXSkpLFxuICAgICAgY29uY3VycmVuY3k6IHtcbiAgICAgICAgJ2dyb3VwJzogYCR7dGhpcy5uYW1lUHJlZml4fWRlcGxveS1mZWF0dXJlLVxcJHt7IGdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QubnVtYmVyIH19YCxcbiAgICAgICAgJ2NhbmNlbC1pbi1wcm9ncmVzcyc6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGVudjoge1xuICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgICBCUkFOQ0g6ICcke3sgZ2l0aHViLmhlYWRfcmVmIH19JyxcbiAgICAgICAgLi4uc3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgICB0b29sczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgdmVyc2lvbjogdGhpcy5taW5Ob2RlVmVyc2lvbiA/PyAnMjAnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY2JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uc3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgd29ya2Zsb3cgZm9yIGRlc3Ryb3lpbmcgZmVhdHVyZSBicmFuY2hlcyB3aGVuIFBScyBhcmUgY2xvc2VkIG9yIHVubGFiZWxlZC5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRmVhdHVyZURlc3Ryb3lXb3JrZmxvdygpOiB2b2lkIHtcbiAgICBjb25zdCB3b3JrZmxvdyA9IHRoaXMuZ2guYWRkV29ya2Zsb3coYCR7dGhpcy5uYW1lUHJlZml4fWRlc3Ryb3ktZmVhdHVyZWApO1xuXG4gICAgd29ya2Zsb3cub24oe1xuICAgICAgcHVsbFJlcXVlc3RUYXJnZXQ6IHtcbiAgICAgICAgdHlwZXM6IFsnY2xvc2VkJywgJ3VubGFiZWxlZCddLFxuICAgICAgICAuLi50aGlzLmJhc2VPcHRpb25zLnBhdGhzICYmIHsgcGF0aHM6IHRoaXMucGF0aHNXaXRoV29ya2Zsb3dGaWxlKCdkZXN0cm95LWZlYXR1cmUnKSB9LFxuICAgICAgfSxcbiAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlU3ludGhTdGVwKCksXG4gICAgICBuZXcgQXdzQXNzdW1lUm9sZVN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIHJvbGVBcm46IHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnM/LmRlcGxveW1lbnQ/LmZlYXR1cmUgPz8gdGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucz8uZGVmYXVsdCEsXG4gICAgICAgIHJlZ2lvbjogdGhpcy5iYXNlT3B0aW9ucy5mZWF0dXJlU3RhZ2VzIS5lbnYucmVnaW9uLFxuICAgICAgICBqdW1wUm9sZUFybjogdGhpcy5iYXNlT3B0aW9ucy5pYW1Sb2xlQXJucy5qdW1wPy5mZWF0dXJlLFxuICAgICAgfSksXG4gICAgICBuZXcgUHJvamVuU2NyaXB0U3RlcCh0aGlzLnByb2plY3QsICdkZXN0cm95OmZlYXR1cmUnKSxcbiAgICBdLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICB3b3JrZmxvdy5hZGRKb2IoJ2Rlc3Ryb3ktZmVhdHVyZScsIHtcbiAgICAgIG5hbWU6ICdEZXN0cm95IENESyBmZWF0dXJlIHN0YWdlJyxcbiAgICAgIGlmOiBcImdpdGh1Yi5ldmVudC5hY3Rpb24gPT0gJ2Nsb3NlZCcgfHwgKGdpdGh1Yi5ldmVudC5hY3Rpb24gPT0gJ3VubGFiZWxlZCcgJiYgZ2l0aHViLmV2ZW50LmxhYmVsLm5hbWUgPT0gJ2ZlYXR1cmUtZGVwbG95bWVudCcpXCIsXG4gICAgICBuZWVkczogW10sXG4gICAgICBydW5zT246IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzID8/IERFRkFVTFRfUlVOTkVSX1RBR1MsXG4gICAgICAuLi50aGlzLmpvYkRlZmF1bHRzKCkgJiYgeyBkZWZhdWx0czogdGhpcy5qb2JEZWZhdWx0cygpIH0sXG4gICAgICBwZXJtaXNzaW9uczogbWVyZ2VKb2JQZXJtaXNzaW9ucyh7XG4gICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgIGlkVG9rZW46IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICB9LCAuLi4oc3RlcHMuZmxhdE1hcChzID0+IHMucGVybWlzc2lvbnMpLmZpbHRlcihwID0+IHAgIT0gdW5kZWZpbmVkKSBhcyBKb2JQZXJtaXNzaW9uc1tdKSksXG4gICAgICBjb25jdXJyZW5jeToge1xuICAgICAgICAnZ3JvdXAnOiBgJHt0aGlzLm5hbWVQcmVmaXh9ZGVzdHJveS1mZWF0dXJlLVxcJHt7IGdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QubnVtYmVyIH19YCxcbiAgICAgICAgJ2NhbmNlbC1pbi1wcm9ncmVzcyc6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGVudjoge1xuICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgICBCUkFOQ0g6ICcke3sgZ2l0aHViLmhlYWRfcmVmIH19JyxcbiAgICAgICAgLi4uc3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgICB0b29sczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgdmVyc2lvbjogdGhpcy5taW5Ob2RlVmVyc2lvbiA/PyAnMjAnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY2JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uc3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc3ludGhlc2lzIGpvYiBmb3IgdGhlIHBpcGVsaW5lIHVzaW5nIEdpdEh1YiBBY3Rpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVTeW50aCgpOiB2b2lkIHtcbiAgICBjb25zdCBzdGVwczogUGlwZWxpbmVTdGVwW10gPSBbXTtcbiAgICBzdGVwcy5wdXNoKHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCkpO1xuICAgIHN0ZXBzLnB1c2godGhpcy5wcm92aWRlU3ludGhTdGVwKCkpO1xuXG4gICAgc3RlcHMucHVzaChuZXcgVXBsb2FkQXJ0aWZhY3RTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgbmFtZTogYCR7dGhpcy5uYW1lUHJlZml4fWNsb3VkLWFzc2VtYmx5YCxcbiAgICAgIHBhdGg6IHRoaXMuYXJ0aWZhY3RQYXRoKGAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9L2ApLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IGdpdGh1YlN0ZXBzID0gc3RlcHMubWFwKHMgPT4gcy50b0dpdGh1YigpKTtcblxuICAgIHRoaXMuZGVwbG95bWVudFdvcmtmbG93LmFkZEpvYignc3ludGgnLCB7XG4gICAgICBuYW1lOiAnU3ludGggQ0RLIGFwcGxpY2F0aW9uJyxcbiAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gREVGQVVMVF9SVU5ORVJfVEFHUyxcbiAgICAgIC4uLnRoaXMuam9iRGVmYXVsdHMoKSAmJiB7IGRlZmF1bHRzOiB0aGlzLmpvYkRlZmF1bHRzKCkgfSxcbiAgICAgIGVudjoge1xuICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgICAuLi5naXRodWJTdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICAgIG5lZWRzOiBbLi4uZ2l0aHViU3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpXSxcbiAgICAgIHBlcm1pc3Npb25zOiBtZXJnZUpvYlBlcm1pc3Npb25zKHtcbiAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgIH0sIC4uLihnaXRodWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5wZXJtaXNzaW9ucykuZmlsdGVyKHAgPT4gcCAhPSB1bmRlZmluZWQpIGFzIEpvYlBlcm1pc3Npb25zW10pKSxcbiAgICAgIHRvb2xzOiB7XG4gICAgICAgIG5vZGU6IHtcbiAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm1pbk5vZGVWZXJzaW9uID8/ICcyMCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjYnLFxuICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICdmZXRjaC1kZXB0aCc6IDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uZ2l0aHViU3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgam9iIHRvIHVwbG9hZCBhc3NldHMgdG8gQVdTIGFzIHBhcnQgb2YgdGhlIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUFzc2V0VXBsb2FkKHN0YWdlTmFtZT86IHN0cmluZywgZ2l0aHViRW52aXJvbm1lbnQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzdGVwcyA9IFtcbiAgICAgIG5ldyBTaW1wbGVDb21tYW5kU3RlcCh0aGlzLnByb2plY3QsIFsnZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUgXCJnaXRodWItYWN0aW9uc1wiICYmIGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCBcImdpdGh1Yi1hY3Rpb25zQGdpdGh1Yi5jb21cIiddKSxcbiAgICAgIG5ldyBEb3dubG9hZEFydGlmYWN0U3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgbmFtZTogYCR7dGhpcy5uYW1lUHJlZml4fWNsb3VkLWFzc2VtYmx5YCxcbiAgICAgICAgcGF0aDogdGhpcy5hcnRpZmFjdFBhdGgoYCR7dGhpcy5hcHAuY2RrQ29uZmlnLmNka291dH0vYCksXG4gICAgICB9KSxcbiAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVBc3NldFVwbG9hZFN0ZXAoc3RhZ2VOYW1lKSxcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMubmVlZHNWZXJzaW9uZWRBcnRpZmFjdHMpIHtcbiAgICAgIHN0ZXBzLnB1c2godGhpcy5wcm92aWRlQXNzZW1ibHlVcGxvYWRTdGVwKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGdoU3RlcHMgPSBzdGVwcy5tYXAocyA9PiBzLnRvR2l0aHViKCkpO1xuXG4gICAgdGhpcy5kZXBsb3ltZW50V29ya2Zsb3cuYWRkSm9iKGBhc3NldFVwbG9hZCR7c3RhZ2VOYW1lID8gYC0ke3N0YWdlTmFtZX1gIDogJyd9YCwge1xuICAgICAgbmFtZTogYFB1Ymxpc2ggYXNzZXRzIHRvIEFXUyR7c3RhZ2VOYW1lID8gYCBmb3Igc3RhZ2UgJHtzdGFnZU5hbWV9YCA6ICcnfWAsXG4gICAgICBuZWVkczogWydzeW50aCcsIC4uLmdoU3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpXSxcbiAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gREVGQVVMVF9SVU5ORVJfVEFHUyxcbiAgICAgIC4uLnRoaXMuam9iRGVmYXVsdHMoKSAmJiB7IGRlZmF1bHRzOiB0aGlzLmpvYkRlZmF1bHRzKCkgfSxcbiAgICAgIC4uLih0aGlzLm9wdGlvbnMudXNlR2l0aHViRW52aXJvbm1lbnRzRm9yQXNzZXRVcGxvYWQgJiYgc3RhZ2VOYW1lICYmIHsgZW52aXJvbm1lbnQ6IGdpdGh1YkVudmlyb25tZW50ID8/IHN0YWdlTmFtZSB9KSxcbiAgICAgIGVudjoge1xuICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgICAuLi5naFN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICB9LFxuICAgICAgcGVybWlzc2lvbnM6IG1lcmdlSm9iUGVybWlzc2lvbnMoe1xuICAgICAgICBpZFRva2VuOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICBjb250ZW50czogdGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cyA/IEpvYlBlcm1pc3Npb24uV1JJVEUgOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgIC4uLnRoaXMudXNlR2l0aHViUGFja2FnZXMgJiYge1xuICAgICAgICAgIHBhY2thZ2VzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICB9LFxuICAgICAgfSwgLi4uKGdoU3RlcHMuZmxhdE1hcChzID0+IHMucGVybWlzc2lvbnMpLmZpbHRlcihwID0+IHAgIT0gdW5kZWZpbmVkKSBhcyBKb2JQZXJtaXNzaW9uc1tdKSksXG4gICAgICB0b29sczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgdmVyc2lvbjogdGhpcy5taW5Ob2RlVmVyc2lvbiA/PyAnMjAnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY2JyxcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAnZmV0Y2gtZGVwdGgnOiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmdoU3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgam9iIHRvIGRlcGxveSB0aGUgQ0RLIGFwcGxpY2F0aW9uIHRvIEFXUy5cbiAgICogQHBhcmFtIHN0YWdlIC0gVGhlIGRlcGxveW1lbnQgc3RhZ2UgdG8gY3JlYXRlLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZURlcGxveW1lbnQoc3RhZ2U6IERlcGxveW1lbnRTdGFnZSwgdXNlR2l0aHViRW52aXJvbm1lbnRzRm9yQXNzZXRVcGxvYWQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHN0YWdlLm1hbnVhbEFwcHJvdmFsID09PSB0cnVlKSB7XG4gICAgICBjb25zdCBzdGVwcyA9IFtcbiAgICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgICAgbmV3IFNpbXBsZUNvbW1hbmRTdGVwKHRoaXMucHJvamVjdCwgdGhpcy5yZW5kZXJJbnN0YWxsUGFja2FnZUNvbW1hbmRzKGAke3RoaXMuYmFzZU9wdGlvbnMucGtnTmFtZXNwYWNlfS8ke3RoaXMuYXBwLm5hbWV9QFxcJHt7Z2l0aHViLmV2ZW50LmlucHV0cy52ZXJzaW9ufX1gKSksXG4gICAgICAgIG5ldyBTaW1wbGVDb21tYW5kU3RlcCh0aGlzLnByb2plY3QsIFtgbXYgLi9ub2RlX21vZHVsZXMvJHt0aGlzLmJhc2VPcHRpb25zLnBrZ05hbWVzcGFjZX0vJHt0aGlzLmFwcC5uYW1lfSAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9YF0pLFxuICAgICAgICB0aGlzLnByb3ZpZGVEZXBsb3lTdGVwKHN0YWdlKSxcbiAgICAgICAgbmV3IENka091dHB1dHNTdW1tYXJ5U3RlcCh0aGlzLnByb2plY3QsIHsgc3RhZ2VOYW1lOiBzdGFnZS5uYW1lIH0pLFxuICAgICAgICBuZXcgVXBsb2FkQXJ0aWZhY3RTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICAgIG5hbWU6IGAke3RoaXMubmFtZVByZWZpeH1jZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9YCxcbiAgICAgICAgICBwYXRoOiB0aGlzLmFydGlmYWN0UGF0aChgY2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfS5qc29uYCksXG4gICAgICAgIH0pLFxuICAgICAgXS5tYXAocyA9PiBzLnRvR2l0aHViKCkpO1xuXG4gICAgICAvLyBDcmVhdGUgbmV3IHdvcmtmbG93IGZvciBkZXBsb3ltZW50XG4gICAgICBjb25zdCBzdGFnZVdvcmtmbG93ID0gdGhpcy5naC5hZGRXb3JrZmxvdyhgJHt0aGlzLm5hbWVQcmVmaXh9cmVsZWFzZS0ke3N0YWdlLm5hbWV9YCk7XG4gICAgICBzdGFnZVdvcmtmbG93Lm9uKHtcbiAgICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge1xuICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgdmVyc2lvbjoge1xuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1BhY2thZ2UgdmVyc2lvbicsXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBzdGFnZVdvcmtmbG93LmFkZEpvYignZGVwbG95Jywge1xuICAgICAgICBuYW1lOiBgUmVsZWFzZSBzdGFnZSAke3N0YWdlLm5hbWV9IHRvIEFXU2AsXG4gICAgICAgIG5lZWRzOiBzdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyksXG4gICAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gREVGQVVMVF9SVU5ORVJfVEFHUyxcbiAgICAgICAgLi4udGhpcy5qb2JEZWZhdWx0cygpICYmIHsgZGVmYXVsdHM6IHRoaXMuam9iRGVmYXVsdHMoKSB9LFxuICAgICAgICAuLi50aGlzLm9wdGlvbnMudXNlR2l0aHViRW52aXJvbm1lbnRzICYmIHtcbiAgICAgICAgICBlbnZpcm9ubWVudDogc3RhZ2UuZ2l0aHViRW52aXJvbm1lbnQgPz8gc3RhZ2UubmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uY3VycmVuY3k6IHtcbiAgICAgICAgICAnZ3JvdXAnOiBgJHt0aGlzLm5hbWVQcmVmaXh9ZGVwbG95LSR7c3RhZ2UubmFtZX1gLFxuICAgICAgICAgICdjYW5jZWwtaW4tcHJvZ3Jlc3MnOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgICAuLi5zdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uczogbWVyZ2VKb2JQZXJtaXNzaW9ucyh7XG4gICAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgfSwgLi4uKHN0ZXBzLmZsYXRNYXAocyA9PiBzLnBlcm1pc3Npb25zKS5maWx0ZXIocCA9PiBwICE9IHVuZGVmaW5lZCkgYXMgSm9iUGVybWlzc2lvbnNbXSkpLFxuICAgICAgICB0b29sczoge1xuICAgICAgICAgIG5vZGU6IHtcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMubWluTm9kZVZlcnNpb24gPz8gJzIwJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzdGVwczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAuLi5zdGVwcy5mbGF0TWFwKHMgPT4gcy5zdGVwcyksXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNyZWF0ZURlcGxveUpvYih0aGlzLmRlcGxveW1lbnRXb3JrZmxvdywgWy4uLih0aGlzLmRlcGxveW1lbnRTdGFnZXMubGVuZ3RoID4gMCA/IFtgZGVwbG95LSR7dGhpcy5kZXBsb3ltZW50U3RhZ2VzLmF0KC0xKSF9YF0gOiBbXSldLCBzdGFnZSwgdXNlR2l0aHViRW52aXJvbm1lbnRzRm9yQXNzZXRVcGxvYWQpO1xuICAgICAgdGhpcy5kZXBsb3ltZW50U3RhZ2VzLnB1c2goc3RhZ2UubmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEZXBsb3lKb2IoXG4gICAgd29ya2Zsb3c6IEdpdGh1YldvcmtmbG93LFxuICAgIGpvYkRlcGVuZGVuY2llczogc3RyaW5nW10sXG4gICAgc3RhZ2U6IE5hbWVkU3RhZ2VPcHRpb25zLFxuICAgIHVzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkPzogYm9vbGVhbixcbiAgKSB7XG4gICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICBuZXcgRG93bmxvYWRBcnRpZmFjdFN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6IGAke3RoaXMubmFtZVByZWZpeH1jbG91ZC1hc3NlbWJseWAsXG4gICAgICAgIHBhdGg6IHRoaXMuYXJ0aWZhY3RQYXRoKGAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9L2ApLFxuICAgICAgfSksXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlRGVwbG95U3RlcChzdGFnZSksXG4gICAgICBuZXcgQ2RrT3V0cHV0c1N1bW1hcnlTdGVwKHRoaXMucHJvamVjdCwgeyBzdGFnZU5hbWU6IHN0YWdlLm5hbWUgfSksXG4gICAgICBuZXcgVXBsb2FkQXJ0aWZhY3RTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICBuYW1lOiBgJHt0aGlzLm5hbWVQcmVmaXh9Y2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfWAsXG4gICAgICAgIHBhdGg6IHRoaXMuYXJ0aWZhY3RQYXRoKGBjZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9Lmpzb25gKSxcbiAgICAgIH0pLFxuICAgIF0ubWFwKHMgPT4gcy50b0dpdGh1YigpKTtcblxuICAgIC8vIEFkZCBkZXBsb3ltZW50IHRvIENJL0NEIHdvcmtmbG93XG4gICAgd29ya2Zsb3cuYWRkSm9iKGBkZXBsb3ktJHtzdGFnZS5uYW1lfWAsIHtcbiAgICAgIG5hbWU6IGBEZXBsb3kgc3RhZ2UgJHtzdGFnZS5uYW1lfSB0byBBV1NgLFxuICAgICAgLi4udGhpcy5vcHRpb25zLnVzZUdpdGh1YkVudmlyb25tZW50cyAmJiB7XG4gICAgICAgIGVudmlyb25tZW50OiBzdGFnZS5naXRodWJFbnZpcm9ubWVudCA/PyBzdGFnZS5uYW1lLFxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMuam9iRGVmYXVsdHMoKSAmJiB7IGRlZmF1bHRzOiB0aGlzLmpvYkRlZmF1bHRzKCkgfSxcbiAgICAgIGNvbmN1cnJlbmN5OiB7XG4gICAgICAgICdncm91cCc6IGAke3RoaXMubmFtZVByZWZpeH1kZXBsb3ktJHtzdGFnZS5uYW1lfWAsXG4gICAgICAgICdjYW5jZWwtaW4tcHJvZ3Jlc3MnOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBuZWVkczogW2Bhc3NldFVwbG9hZCR7dXNlR2l0aHViRW52aXJvbm1lbnRzRm9yQXNzZXRVcGxvYWQgPyBgLSR7c3RhZ2UubmFtZX1gIDogJyd9YCwgLi4uc3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLCAuLi5qb2JEZXBlbmRlbmNpZXNdLFxuICAgICAgcnVuc09uOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncyA/PyBERUZBVUxUX1JVTk5FUl9UQUdTLFxuICAgICAgZW52OiB7XG4gICAgICAgIENJOiAndHJ1ZScsXG4gICAgICAgIC4uLnN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICB9LFxuICAgICAgcGVybWlzc2lvbnM6IG1lcmdlSm9iUGVybWlzc2lvbnMoe1xuICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgfSwgLi4uKHN0ZXBzLmZsYXRNYXAocyA9PiBzLnBlcm1pc3Npb25zKS5maWx0ZXIocCA9PiBwICE9IHVuZGVmaW5lZCkgYXMgSm9iUGVybWlzc2lvbnNbXSkpLFxuICAgICAgdG9vbHM6IHtcbiAgICAgICAgbm9kZToge1xuICAgICAgICAgIHZlcnNpb246IHRoaXMubWluTm9kZVZlcnNpb24gPz8gJzIwJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NicsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnN0ZXBzLmZsYXRNYXAocyA9PiBzLnN0ZXBzKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGpvYiB0byBkZXBsb3kgdGhlIENESyBhcHBsaWNhdGlvbiB0byBBV1MuXG4gICAqIEBwYXJhbSBzdGFnZSAtIFRoZSBpbmRlcGVuZGVudCBzdGFnZSB0byBjcmVhdGUuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlSW5kZXBlbmRlbnREZXBsb3ltZW50KHN0YWdlOiBJbmRlcGVuZGVudFN0YWdlKTogdm9pZCB7XG4gICAgaWYgKHN0YWdlLmRlcGxveU9uUHVzaCB8fCB0aGlzLm9wdGlvbnMudXNlR2l0aHViRW52aXJvbm1lbnRzKSB7XG4gICAgICB0aGlzLmNyZWF0ZURlcGxveUpvYih0aGlzLmRlcGxveW1lbnRXb3JrZmxvdywgW10sIHN0YWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICAgIHRoaXMucHJvdmlkZVN5bnRoU3RlcCgpLFxuICAgICAgICAuLi4oKHN0YWdlLmRpZmZUeXBlICE9PSBDZGtEaWZmVHlwZS5OT05FKSA/IFt0aGlzLnByb3ZpZGVEaWZmU3RlcChzdGFnZSwgc3RhZ2UuZGlmZlR5cGUgPT09IENka0RpZmZUeXBlLkZBU1QpXSA6IFtdKSxcbiAgICAgICAgdGhpcy5wcm92aWRlRGVwbG95U3RlcChzdGFnZSksXG4gICAgICAgIG5ldyBDZGtPdXRwdXRzU3VtbWFyeVN0ZXAodGhpcy5wcm9qZWN0LCB7IHN0YWdlTmFtZTogc3RhZ2UubmFtZSB9KSxcbiAgICAgICAgbmV3IFVwbG9hZEFydGlmYWN0U3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgICBuYW1lOiBgJHt0aGlzLm5hbWVQcmVmaXh9Y2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfWAsXG4gICAgICAgICAgcGF0aDogdGhpcy5hcnRpZmFjdFBhdGgoYGNkay1vdXRwdXRzLSR7c3RhZ2UubmFtZX0uanNvbmApLFxuICAgICAgICB9KSxcbiAgICAgIF0ubWFwKHMgPT4gcy50b0dpdGh1YigpKTtcblxuICAgICAgLy8gQ3JlYXRlIG5ldyB3b3JrZmxvdyBmb3IgZGVwbG95bWVudFxuICAgICAgY29uc3Qgc3RhZ2VXb3JrZmxvdyA9IHRoaXMuZ2guYWRkV29ya2Zsb3coYCR7dGhpcy5uYW1lUHJlZml4fWRlcGxveS0ke3N0YWdlLm5hbWV9YCk7XG4gICAgICBzdGFnZVdvcmtmbG93Lm9uKHtcbiAgICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge30sXG4gICAgICB9KTtcbiAgICAgIHN0YWdlV29ya2Zsb3cuYWRkSm9iKCdkZXBsb3knLCB7XG4gICAgICAgIG5hbWU6IGBSZWxlYXNlIHN0YWdlICR7c3RhZ2UubmFtZX0gdG8gQVdTYCxcbiAgICAgICAgbmVlZHM6IHN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKSxcbiAgICAgICAgcnVuc09uOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncyA/PyBERUZBVUxUX1JVTk5FUl9UQUdTLFxuICAgICAgICAuLi50aGlzLmpvYkRlZmF1bHRzKCkgJiYgeyBkZWZhdWx0czogdGhpcy5qb2JEZWZhdWx0cygpIH0sXG4gICAgICAgIGNvbmN1cnJlbmN5OiB7XG4gICAgICAgICAgJ2dyb3VwJzogYCR7dGhpcy5uYW1lUHJlZml4fWRlcGxveS0ke3N0YWdlLm5hbWV9YCxcbiAgICAgICAgICAnY2FuY2VsLWluLXByb2dyZXNzJzogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIENJOiAndHJ1ZScsXG4gICAgICAgICAgLi4uc3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbnM6IG1lcmdlSm9iUGVybWlzc2lvbnMoe1xuICAgICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgIH0sIC4uLihzdGVwcy5mbGF0TWFwKHMgPT4gcy5wZXJtaXNzaW9ucykuZmlsdGVyKHAgPT4gcCAhPSB1bmRlZmluZWQpIGFzIEpvYlBlcm1pc3Npb25zW10pKSxcbiAgICAgICAgdG9vbHM6IHtcbiAgICAgICAgICBub2RlOiB7XG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm1pbk5vZGVWZXJzaW9uID8/ICcyMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RlcHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjYnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uc3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
516
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9naXRodWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLDhDQUEyRDtBQUMzRCx1RUFBa0Y7QUFDbEYsaUNBQTRIO0FBQzVILHNDQUEyQztBQUMzQyx3Q0FBaUQ7QUFDakQsb0NBQWdHO0FBQ2hHLDREQUFtRjtBQUNuRixzRUFBcUU7QUFDckUsb0RBQThEO0FBRTlELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUM5QyxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQztBQXlDekM7O0dBRUc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLGtCQUFXO0lBb0JLOztJQWxCckQseUZBQXlGO0lBQ3pFLHVCQUF1QixDQUFVO0lBRWpELHdEQUF3RDtJQUNoRCxrQkFBa0IsQ0FBaUI7SUFDM0Msa0RBQWtEO0lBQzFDLGdCQUFnQixHQUFhLEVBQUUsQ0FBQztJQUN4QyxzREFBc0Q7SUFDckMsRUFBRSxDQUFTO0lBRWxCLGlCQUFpQixDQUFVO0lBQzNCLGNBQWMsQ0FBcUI7SUFFN0M7Ozs7T0FJRztJQUNILFlBQVksR0FBK0IsRUFBVSxPQUFpQztRQUNwRixLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1QsR0FBRyxPQUFPO1lBQ1YsR0FBRyxPQUFPLENBQUMsNEJBQTRCLElBQUk7Z0JBQ3pDLGVBQWUsRUFBRTtvQkFDZixJQUFJLG9DQUF1QixDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDbEQsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUU7aUJBQ2pDO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFUZ0QsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFXcEYsaUVBQWlFO1FBQ2pFLDhFQUE4RTtRQUM5RSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGVBQU0sQ0FBQyxF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QyxLQUFLLENBQUM7aUJBQy9CO2FBQ0YsQ0FBQyxDQUFDO1FBRUwsQ0FBQztJQUNILENBQUM7O0FBdGhCSCw4Q0F1aEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzY2RrIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEdpdEh1YiwgR2l0aHViV29ya2Zsb3cgfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yic7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uLCBKb2JQZXJtaXNzaW9ucyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBDZGtEaWZmVHlwZSwgQ0RLUGlwZWxpbmUsIENES1BpcGVsaW5lT3B0aW9ucywgRGVwbG95bWVudFN0YWdlLCBJbmRlcGVuZGVudFN0YWdlLCBOYW1lZFN0YWdlT3B0aW9ucyB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBQaXBlbGluZUVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZSc7XG5pbXBvcnQgeyBtZXJnZUpvYlBlcm1pc3Npb25zIH0gZnJvbSAnLi4vZW5naW5lcyc7XG5pbXBvcnQgeyBBd3NBc3N1bWVSb2xlU3RlcCwgUGlwZWxpbmVTdGVwLCBQcm9qZW5TY3JpcHRTdGVwLCBTaW1wbGVDb21tYW5kU3RlcCB9IGZyb20gJy4uL3N0ZXBzJztcbmltcG9ydCB7IERvd25sb2FkQXJ0aWZhY3RTdGVwLCBVcGxvYWRBcnRpZmFjdFN0ZXAgfSBmcm9tICcuLi9zdGVwcy9hcnRpZmFjdC1zdGVwcyc7XG5pbXBvcnQgeyBDZGtPdXRwdXRzU3VtbWFyeVN0ZXAgfSBmcm9tICcuLi9zdGVwcy9naXRodWItc3VtbWFyeS5zdGVwJztcbmltcG9ydCB7IEdpdGh1YlBhY2thZ2VzTG9naW5TdGVwIH0gZnJvbSAnLi4vc3RlcHMvcmVnaXN0cmllcyc7XG5cbmNvbnN0IERFRkFVTFRfUlVOTkVSX1RBR1MgPSBbJ3VidW50dS1sYXRlc3QnXTtcbmNvbnN0IFdPUktGTE9XX0RJUiA9ICcuZ2l0aHViL3dvcmtmbG93cyc7XG5cblxuLyoqXG4gKiBFeHRlbnNpb24gb2YgdGhlIGJhc2UgQ0RLUGlwZWxpbmUgb3B0aW9ucyBpbmNsdWRpbmcgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZm9yIEdpdEh1Yi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRodWJDREtQaXBlbGluZU9wdGlvbnMgZXh0ZW5kcyBDREtQaXBlbGluZU9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBydW5uZXIgdGFncyB0byB1c2UgdG8gc2VsZWN0IHJ1bm5lcnNcbiAgICpcbiAgICogQGRlZmF1bHQgWyd1YnVudHUtbGF0ZXN0J11cbiAgICovXG4gIHJlYWRvbmx5IHJ1bm5lclRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKiogdXNlIEdpdEh1YiBQYWNrYWdlcyB0byBzdG9yZSB2ZXNpb25lZCBhcnRpZmFjdHMgb2YgY2xvdWQgYXNzZW1ibHk7IGFsc28gbmVlZGVkIGZvciBtYW51YWwgYXBwcm92YWxzICovXG4gIHJlYWRvbmx5IHVzZUdpdGh1YlBhY2thZ2VzRm9yQXNzZW1ibHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB3aGV0aGVyIHRvIHVzZSBHaXRIdWIgZW52aXJvbm1lbnRzIGZvciBkZXBsb3ltZW50IHN0YWdlc1xuICAgKlxuICAgKiBJTkZPOiBXaGVuIHVzaW5nIGVudmlyb25tZW50cyBjb25zaWRlciBwcm90ZWN0aW9uIHJ1bGVzIGluc3RlYWQgb2YgdXNpbmcgdGhlIG1hbnVhbCBvcHRpb24gb2YgcHJvamVuLXBpcGVsaW5lcyBmb3Igc3RhZ2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB1c2VHaXRodWJFbnZpcm9ubWVudHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB3aGV0aGVyIHRvIHVzZSBHaXRIdWIgZW52aXJvbm1lbnRzIGZvciBhc3NldCB1cGxvYWQgc3RlcFxuICAgKiBDcmVhdGUgc2VwYXJhdGUsIHBhcmFsbGVsIGpvYnMgZm9yIGFzc2V0IHVwbG9hZCBzaW5jZSBHaXRIdWIgRW52aXJvbm1lbnRzXG4gICAqIHJlcXVpcmUgdW5pcXVlIGVudmlyb25tZW50IG5hbWVzIHBlciBqb2JcbiAgICpcbiAgICogV0FSTklORzogdGhpcyBwYXJhbWV0ZXIgcmVxdWlyZXMgcmVidWlsZGluZyB0aGUgY29udGFpbmVyIGFzc2V0cyBmb3IgZWFjaCBzdGFnZSBhbmQgdGhleSB3aWxsIG5vdFxuICAgKiBiZSB0aGUgXCJzYW1lIGJpbmFyeVwiLCBzbyB0aGVyZSBpcyBhIChzbWFsbCkgY2hhbmNlIHRoYXQgaXQgY291bGQgcHJvZHVjZSBkaWZmZXJlbnQgYmluYXJpZXMgcGVyIHN0YWdlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB1c2VHaXRodWJFbnZpcm9ubWVudHNGb3JBc3NldFVwbG9hZD86IGJvb2xlYW47XG59XG5cblxuLyoqXG4gKiBJbXBsZW1lbnRzIGEgQ0RLIFBpcGVsaW5lIGNvbmZpZ3VyZWQgc3BlY2lmaWNhbGx5IGZvciBHaXRIdWIgd29ya2Zsb3dzLlxuICovXG5leHBvcnQgY2xhc3MgR2l0aHViQ0RLUGlwZWxpbmUgZXh0ZW5kcyBDREtQaXBlbGluZSB7XG5cbiAgLyoqIEluZGljYXRlcyBpZiB2ZXJzaW9uZWQgYXJ0aWZhY3RzIGFyZSBuZWVkZWQgYmFzZWQgb24gbWFudWFsIGFwcHJvdmFsIHJlcXVpcmVtZW50cy4gKi9cbiAgcHVibGljIHJlYWRvbmx5IG5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgR2l0SHViIHdvcmtmbG93IGFzc29jaWF0ZWQgd2l0aCB0aGUgcGlwZWxpbmUuICovXG4gIHByaXZhdGUgZGVwbG95bWVudFdvcmtmbG93OiBHaXRodWJXb3JrZmxvdztcbiAgLyoqIExpc3Qgb2YgZGVwbG95bWVudCBzdGFnZXMgZm9yIHRoZSBwaXBlbGluZS4gKi9cbiAgcHJpdmF0ZSBkZXBsb3ltZW50U3RhZ2VzOiBzdHJpbmdbXSA9IFtdO1xuICAvKiogVGhlIEdpdEh1YiBjb21wb25lbnQgdXNlZCBmb3IgYWRkaW5nIHdvcmtmbG93cy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBnaDogR2l0SHViO1xuXG4gIHByb3RlY3RlZCB1c2VHaXRodWJQYWNrYWdlczogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIG1pbk5vZGVWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBuZXcgR2l0aHViQ0RLUGlwZWxpbmUgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSBhcHAgLSBUaGUgQ0RLIGFwcCBhc3NvY2lhdGVkIHdpdGggdGhpcyBwaXBlbGluZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBwaXBlbGluZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGFwcDogYXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHAsIHByaXZhdGUgb3B0aW9uczogR2l0aHViQ0RLUGlwZWxpbmVPcHRpb25zKSB7XG4gICAgc3VwZXIoYXBwLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgLi4ub3B0aW9ucy51c2VHaXRodWJQYWNrYWdlc0ZvckFzc2VtYmx5ICYmIHtcbiAgICAgICAgcHJlSW5zdGFsbFN0ZXBzOiBbXG4gICAgICAgICAgbmV3IEdpdGh1YlBhY2thZ2VzTG9naW5TdGVwKGFwcCwgeyB3cml0ZTogZmFsc2UgfSksXG4gICAgICAgICAgLi4ub3B0aW9ucy5wcmVJbnN0YWxsU3RlcHMgPz8gW10sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gRm9yIHN1YnByb2plY3RzLCB1c2UgdGhlIHJvb3QgcHJvamVjdCdzIEdpdEh1YiBjb21wb25lbnQgc2luY2VcbiAgICAvLyBHaXRIdWIgQWN0aW9ucyBvbmx5IGRpc2NvdmVycyB3b3JrZmxvd3MgaW4gdGhlIHJlcG8tcm9vdCAuZ2l0aHViL3dvcmtmbG93cy9cbiAgICBjb25zdCBnaCA9IHRoaXMud29ya2luZ0RpcmVjdG9yeSA/IEdpdEh1Yi5vZih0aGlzLmFwcC5yb290KSA6IHRoaXMuYXBwLmdpdGh1YjtcbiAgICBpZiAoIWdoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dpdEh1YiBjb21wb25lbnQgbm90IGZvdW5kLiBGb3Igc3VicHJvamVjdHMsIGVuc3VyZSB0aGUgcm9vdCBwcm9qZWN0IGhhcyBhIEdpdEh1YiBjb21wb25lbnQuJyk7XG4gICAgfVxuICAgIHRoaXMuZ2ggPSBnaDtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIGRlcGxveW1lbnQgd29ya2Zsb3cgb24gR2l0SHViLlxuICAgIHRoaXMuZGVwbG95bWVudFdvcmtmbG93ID0gdGhpcy5naC5hZGRXb3JrZmxvdyhgJHt0aGlzLm5hbWVQcmVmaXh9ZGVwbG95YCk7XG4gICAgdGhpcy5kZXBsb3ltZW50V29ya2Zsb3cub24oe1xuICAgICAgcHVzaDoge1xuICAgICAgICBicmFuY2hlczogW3RoaXMuYnJhbmNoTmFtZV0sXG4gICAgICAgIC4uLnRoaXMuYmFzZU9wdGlvbnMucGF0aHMgJiYgeyBwYXRoczogdGhpcy5wYXRoc1dpdGhXb3JrZmxvd0ZpbGUoJ2RlcGxveScpIH0sXG4gICAgICB9LFxuICAgICAgd29ya2Zsb3dEaXNwYXRjaDoge30sXG4gICAgfSk7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgdmVyc2lvbmVkIGFydGlmYWN0cyBhcmUgbmVjZXNzYXJ5LlxuICAgIHRoaXMubmVlZHNWZXJzaW9uZWRBcnRpZmFjdHMgPSBvcHRpb25zLnN0YWdlcy5maW5kKHMgPT4gcy5tYW51YWxBcHByb3ZhbCA9PT0gdHJ1ZSkgIT09IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cyAmJiAhb3B0aW9ucy5wa2dOYW1lc3BhY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncGtnTmFtZXNwYWNlIGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgdmVyc2lvbmVkIGFydGlmYWN0cyAoZS5nLiBtYW51YWwgYXBwcm92YWxzKScpO1xuICAgIH1cbiAgICB0aGlzLnVzZUdpdGh1YlBhY2thZ2VzID0gdGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cyAmJiAob3B0aW9ucy51c2VHaXRodWJQYWNrYWdlc0ZvckFzc2VtYmx5ID8/IGZhbHNlKTtcbiAgICB0aGlzLm1pbk5vZGVWZXJzaW9uID0gYXBwLm1pbk5vZGVWZXJzaW9uO1xuXG4gICAgaWYgKHRoaXMudXNlR2l0aHViUGFja2FnZXMpIHtcbiAgICAgIGFwcC5ucG1yYy5hZGRSZWdpc3RyeSgnaHR0cHM6Ly9ucG0ucGtnLmdpdGh1Yi5jb20nLCB0aGlzLmJhc2VPcHRpb25zLnBrZ05hbWVzcGFjZSk7XG4gICAgICBhcHAubnBtcmMuYWRkQ29uZmlnKCcvL25wbS5wa2cuZ2l0aHViLmNvbS86X2F1dGhUb2tlbicsICcke0dJVEhVQl9UT0tFTn0nKTtcbiAgICAgIGFwcC5ucG1yYy5hZGRDb25maWcoJy8vbnBtLnBrZy5naXRodWIuY29tLzphbHdheXMtYXV0aCcsICd0cnVlJyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGpvYnMgZm9yIHN5bnRoZXNpemluZywgYXNzZXQgdXBsb2FkaW5nLCBhbmQgZGVwbG95bWVudC5cbiAgICB0aGlzLmNyZWF0ZVN5bnRoKCk7XG5cbiAgICBpZiAob3B0aW9ucy51c2VHaXRodWJFbnZpcm9ubWVudHNGb3JBc3NldFVwbG9hZCkge1xuICAgICAgZm9yIChjb25zdCBzdGFnZSBvZiBvcHRpb25zLnN0YWdlcykge1xuICAgICAgICB0aGlzLmNyZWF0ZUFzc2V0VXBsb2FkKHN0YWdlLm5hbWUsIHN0YWdlLmdpdGh1YkVudmlyb25tZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jcmVhdGVBc3NldFVwbG9hZCgpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2Ygb3B0aW9ucy5zdGFnZXMpIHtcbiAgICAgIHRoaXMuY3JlYXRlRGVwbG95bWVudChzdGFnZSwgb3B0aW9ucy51c2VHaXRodWJFbnZpcm9ubWVudHNGb3JBc3NldFVwbG9hZCA/PyBmYWxzZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2YgKG9wdGlvbnMuaW5kZXBlbmRlbnRTdGFnZXMgPz8gW10pKSB7XG4gICAgICB0aGlzLmNyZWF0ZUluZGVwZW5kZW50RGVwbG95bWVudChzdGFnZSk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGZlYXR1cmUgd29ya2Zsb3dzIGlmIGZlYXR1cmUgc3RhZ2VzIGFyZSBjb25maWd1cmVkXG4gICAgaWYgKG9wdGlvbnMuZmVhdHVyZVN0YWdlcykge1xuICAgICAgdGhpcy5jcmVhdGVGZWF0dXJlV29ya2Zsb3dzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIHRoZSB0eXBlIG9mIGVuZ2luZSB0aGlzIGltcGxlbWVudGF0aW9uIG9mIENES1BpcGVsaW5lIGlzIGZvciAqL1xuICBwdWJsaWMgZW5naW5lVHlwZSgpOiBQaXBlbGluZUVuZ2luZSB7XG4gICAgcmV0dXJuIFBpcGVsaW5lRW5naW5lLkdJVEhVQjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwYXRocyBmaWx0ZXIgYXJyYXkgd2l0aCB0aGUgd29ya2Zsb3cgZmlsZSBpdHNlbGYgaW5jbHVkZWQuXG4gICAqIFRoaXMgZW5zdXJlcyB0aGF0IGNoYW5nZXMgdG8gdGhlIHdvcmtmbG93IGZpbGUgYWxzbyB0cmlnZ2VyIHRoZSBwaXBlbGluZS5cbiAgICogQHBhcmFtIHdvcmtmbG93TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3b3JrZmxvdyAodXNlZCB0byBkZXJpdmUgdGhlIGZpbGUgcGF0aCkuXG4gICAqL1xuICBwcml2YXRlIHBhdGhzV2l0aFdvcmtmbG93RmlsZSh3b3JrZmxvd05hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCB3b3JrZmxvd0ZpbGVQYXRoID0gYCR7V09SS0ZMT1dfRElSfS8ke3RoaXMubmFtZVByZWZpeH0ke3dvcmtmbG93TmFtZX0ueW1sYDtcbiAgICByZXR1cm4gWy4uLnRoaXMuYmFzZU9wdGlvbnMucGF0aHMhLCB3b3JrZmxvd0ZpbGVQYXRoXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcnRpZmFjdCBwYXRoIHByZWZpeGVkIHdpdGggd29ya2luZ0RpcmVjdG9yeSBpZiBzZXQuXG4gICAqIEFydGlmYWN0IHVwbG9hZC9kb3dubG9hZCBwYXRocyByZXNvbHZlIGFnYWluc3QgR0lUSFVCX1dPUktTUEFDRSxcbiAgICogbm90IHRoZSBqb2Igd29ya2luZy1kaXJlY3RvcnksIHNvIHRoZXkgbXVzdCBiZSBwcmVmaXhlZCBleHBsaWNpdGx5LlxuICAgKi9cbiAgcHJpdmF0ZSBhcnRpZmFjdFBhdGgocmVsYXRpdmVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLndvcmtpbmdEaXJlY3RvcnkpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLndvcmtpbmdEaXJlY3Rvcnl9LyR7cmVsYXRpdmVQYXRofWA7XG4gICAgfVxuICAgIHJldHVybiByZWxhdGl2ZVBhdGg7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBqb2IgZGVmYXVsdHMgZm9yIHdvcmtpbmcgZGlyZWN0b3J5IHdoZW4gc2V0LlxuICAgKi9cbiAgcHJpdmF0ZSBqb2JEZWZhdWx0cygpOiBvYmplY3QgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLndvcmtpbmdEaXJlY3RvcnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJ1bjoge1xuICAgICAgICAgICd3b3JraW5nLWRpcmVjdG9yeSc6IHRoaXMud29ya2luZ0RpcmVjdG9yeSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBmZWF0dXJlIGJyYW5jaCB3b3JrZmxvd3MgZm9yIGRlcGxveWluZyBhbmQgZGVzdHJveWluZyBmZWF0dXJlIGVudmlyb25tZW50cy5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVGZWF0dXJlV29ya2Zsb3dzKCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlRmVhdHVyZURlcGxveVdvcmtmbG93KCk7XG4gICAgdGhpcy5jcmVhdGVGZWF0dXJlRGVzdHJveVdvcmtmbG93KCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHdvcmtmbG93IGZvciBkZXBsb3lpbmcgZmVhdHVyZSBicmFuY2hlcyB3aGVuIFBScyBhcmUgbGFiZWxlZCB3aXRoICdmZWF0dXJlLWRlcGxveW1lbnQnLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVGZWF0dXJlRGVwbG95V29ya2Zsb3coKTogdm9pZCB7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLmdoLmFkZFdvcmtmbG93KGAke3RoaXMubmFtZVByZWZpeH1kZXBsb3ktZmVhdHVyZWApO1xuXG4gICAgd29ya2Zsb3cub24oe1xuICAgICAgcHVsbFJlcXVlc3RUYXJnZXQ6IHtcbiAgICAgICAgdHlwZXM6IFsnc3luY2hyb25pemUnLCAnbGFiZWxlZCcsICdvcGVuZWQnLCAncmVvcGVuZWQnXSxcbiAgICAgICAgLi4udGhpcy5iYXNlT3B0aW9ucy5wYXRocyAmJiB7IHBhdGhzOiB0aGlzLnBhdGhzV2l0aFdvcmtmbG93RmlsZSgnZGVwbG95LWZlYXR1cmUnKSB9LFxuICAgICAgfSxcbiAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlU3ludGhTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVEZXBsb3lTdGVwKHsgbmFtZTogJ2ZlYXR1cmUnLCBlbnY6IHRoaXMuYmFzZU9wdGlvbnMuZmVhdHVyZVN0YWdlcyEuZW52IH0pLFxuICAgICAgbmV3IENka091dHB1dHNTdW1tYXJ5U3RlcCh0aGlzLnByb2plY3QsIHsgc3RhZ2VOYW1lOiAnZmVhdHVyZScgfSksXG4gICAgICBuZXcgVXBsb2FkQXJ0aWZhY3RTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICBuYW1lOiBgJHt0aGlzLm5hbWVQcmVmaXh9Y2RrLW91dHB1dHMtZmVhdHVyZWAsXG4gICAgICAgIHBhdGg6IHRoaXMuYXJ0aWZhY3RQYXRoKGAke3RoaXMubmFtZVByZWZpeH1jZGstb3V0cHV0cy1mZWF0dXJlLmpzb25gKSxcbiAgICAgIH0pLFxuICAgIF0ubWFwKHMgPT4gcy50b0dpdGh1YigpKTtcblxuICAgIHdvcmtmbG93LmFkZEpvYignc3ludGgtYW5kLWRlcGxveScsIHtcbiAgICAgIG5hbWU6ICdTeW50aCBhbmQgZGVwbG95IENESyBhcHBsaWNhdGlvbiB0byBmZWF0dXJlIHN0YWdlJyxcbiAgICAgIGlmOiBcImNvbnRhaW5zKGpvaW4oZ2l0aHViLmV2ZW50LnB1bGxfcmVxdWVzdC5sYWJlbHMuKi5uYW1lLCAnLCcpLCAnZmVhdHVyZS1kZXBsb3ltZW50JylcIixcbiAgICAgIG5lZWRzOiBbXSxcbiAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gREVGQVVMVF9SVU5ORVJfVEFHUyxcbiAgICAgIC4uLnRoaXMuam9iRGVmYXVsdHMoKSAmJiB7IGRlZmF1bHRzOiB0aGlzLmpvYkRlZmF1bHRzKCkgfSxcbiAgICAgIHBlcm1pc3Npb25zOiBtZXJnZUpvYlBlcm1pc3Npb25zKHtcbiAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgaWRUb2tlbjogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgIH0sIC4uLihzdGVwcy5mbGF0TWFwKHMgPT4gcy5wZXJtaXNzaW9ucykuZmlsdGVyKHAgPT4gcCAhPSB1bmRlZmluZWQpIGFzIEpvYlBlcm1pc3Npb25zW10pKSxcbiAgICAgIGNvbmN1cnJlbmN5OiB7XG4gICAgICAgICdncm91cCc6IGAke3RoaXMubmFtZVByZWZpeH1kZXBsb3ktZmVhdHVyZS1cXCR7eyBnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0Lm51bWJlciB9fWAsXG4gICAgICAgICdjYW5jZWwtaW4tcHJvZ3Jlc3MnOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgQlJBTkNIOiAnJHt7IGdpdGh1Yi5oZWFkX3JlZiB9fScsXG4gICAgICAgIC4uLnN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICB9LFxuICAgICAgdG9vbHM6IHtcbiAgICAgICAgbm9kZToge1xuICAgICAgICAgIHZlcnNpb246IHRoaXMubWluTm9kZVZlcnNpb24gPz8gJzIwJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NicsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnN0ZXBzLmZsYXRNYXAocyA9PiBzLnN0ZXBzKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHdvcmtmbG93IGZvciBkZXN0cm95aW5nIGZlYXR1cmUgYnJhbmNoZXMgd2hlbiBQUnMgYXJlIGNsb3NlZCBvciB1bmxhYmVsZWQuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUZlYXR1cmVEZXN0cm95V29ya2Zsb3coKTogdm9pZCB7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLmdoLmFkZFdvcmtmbG93KGAke3RoaXMubmFtZVByZWZpeH1kZXN0cm95LWZlYXR1cmVgKTtcblxuICAgIHdvcmtmbG93Lm9uKHtcbiAgICAgIHB1bGxSZXF1ZXN0VGFyZ2V0OiB7XG4gICAgICAgIHR5cGVzOiBbJ2Nsb3NlZCcsICd1bmxhYmVsZWQnXSxcbiAgICAgICAgLi4udGhpcy5iYXNlT3B0aW9ucy5wYXRocyAmJiB7IHBhdGhzOiB0aGlzLnBhdGhzV2l0aFdvcmtmbG93RmlsZSgnZGVzdHJveS1mZWF0dXJlJykgfSxcbiAgICAgIH0sXG4gICAgICB3b3JrZmxvd0Rpc3BhdGNoOiB7fSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0ZXBzID0gW1xuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZVN5bnRoU3RlcCgpLFxuICAgICAgbmV3IEF3c0Fzc3VtZVJvbGVTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICByb2xlQXJuOiB0aGlzLmJhc2VPcHRpb25zLmlhbVJvbGVBcm5zPy5kZXBsb3ltZW50Py5mZWF0dXJlID8/IHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnM/LmRlZmF1bHQhLFxuICAgICAgICByZWdpb246IHRoaXMuYmFzZU9wdGlvbnMuZmVhdHVyZVN0YWdlcyEuZW52LnJlZ2lvbixcbiAgICAgICAganVtcFJvbGVBcm46IHRoaXMuYmFzZU9wdGlvbnMuaWFtUm9sZUFybnMuanVtcD8uZmVhdHVyZSxcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb2plblNjcmlwdFN0ZXAodGhpcy5wcm9qZWN0LCAnZGVzdHJveTpmZWF0dXJlJyksXG4gICAgXS5tYXAocyA9PiBzLnRvR2l0aHViKCkpO1xuXG4gICAgd29ya2Zsb3cuYWRkSm9iKCdkZXN0cm95LWZlYXR1cmUnLCB7XG4gICAgICBuYW1lOiAnRGVzdHJveSBDREsgZmVhdHVyZSBzdGFnZScsXG4gICAgICBpZjogXCJnaXRodWIuZXZlbnQuYWN0aW9uID09ICdjbG9zZWQnIHx8IChnaXRodWIuZXZlbnQuYWN0aW9uID09ICd1bmxhYmVsZWQnICYmIGdpdGh1Yi5ldmVudC5sYWJlbC5uYW1lID09ICdmZWF0dXJlLWRlcGxveW1lbnQnKVwiLFxuICAgICAgbmVlZHM6IFtdLFxuICAgICAgcnVuc09uOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncyA/PyBERUZBVUxUX1JVTk5FUl9UQUdTLFxuICAgICAgLi4udGhpcy5qb2JEZWZhdWx0cygpICYmIHsgZGVmYXVsdHM6IHRoaXMuam9iRGVmYXVsdHMoKSB9LFxuICAgICAgcGVybWlzc2lvbnM6IG1lcmdlSm9iUGVybWlzc2lvbnMoe1xuICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICBpZFRva2VuOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgfSwgLi4uKHN0ZXBzLmZsYXRNYXAocyA9PiBzLnBlcm1pc3Npb25zKS5maWx0ZXIocCA9PiBwICE9IHVuZGVmaW5lZCkgYXMgSm9iUGVybWlzc2lvbnNbXSkpLFxuICAgICAgY29uY3VycmVuY3k6IHtcbiAgICAgICAgJ2dyb3VwJzogYCR7dGhpcy5uYW1lUHJlZml4fWRlc3Ryb3ktZmVhdHVyZS1cXCR7eyBnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0Lm51bWJlciB9fWAsXG4gICAgICAgICdjYW5jZWwtaW4tcHJvZ3Jlc3MnOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgQlJBTkNIOiAnJHt7IGdpdGh1Yi5oZWFkX3JlZiB9fScsXG4gICAgICAgIC4uLnN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICB9LFxuICAgICAgdG9vbHM6IHtcbiAgICAgICAgbm9kZToge1xuICAgICAgICAgIHZlcnNpb246IHRoaXMubWluTm9kZVZlcnNpb24gPz8gJzIwJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NicsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnN0ZXBzLmZsYXRNYXAocyA9PiBzLnN0ZXBzKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHN5bnRoZXNpcyBqb2IgZm9yIHRoZSBwaXBlbGluZSB1c2luZyBHaXRIdWIgQWN0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlU3ludGgoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHM6IFBpcGVsaW5lU3RlcFtdID0gW107XG4gICAgc3RlcHMucHVzaCh0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpKTtcbiAgICBzdGVwcy5wdXNoKHRoaXMucHJvdmlkZVN5bnRoU3RlcCgpKTtcblxuICAgIHN0ZXBzLnB1c2gobmV3IFVwbG9hZEFydGlmYWN0U3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgIG5hbWU6IGAke3RoaXMubmFtZVByZWZpeH1jbG91ZC1hc3NlbWJseWAsXG4gICAgICBwYXRoOiB0aGlzLmFydGlmYWN0UGF0aChgJHt0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0fS9gKSxcbiAgICB9KSk7XG5cbiAgICBjb25zdCBnaXRodWJTdGVwcyA9IHN0ZXBzLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICB0aGlzLmRlcGxveW1lbnRXb3JrZmxvdy5hZGRKb2IoJ3N5bnRoJywge1xuICAgICAgbmFtZTogJ1N5bnRoIENESyBhcHBsaWNhdGlvbicsXG4gICAgICBydW5zT246IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzID8/IERFRkFVTFRfUlVOTkVSX1RBR1MsXG4gICAgICAuLi50aGlzLmpvYkRlZmF1bHRzKCkgJiYgeyBkZWZhdWx0czogdGhpcy5qb2JEZWZhdWx0cygpIH0sXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgLi4uZ2l0aHViU3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgICBuZWVkczogWy4uLmdpdGh1YlN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKV0sXG4gICAgICBwZXJtaXNzaW9uczogbWVyZ2VKb2JQZXJtaXNzaW9ucyh7XG4gICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICB9LCAuLi4oZ2l0aHViU3RlcHMuZmxhdE1hcChzID0+IHMucGVybWlzc2lvbnMpLmZpbHRlcihwID0+IHAgIT0gdW5kZWZpbmVkKSBhcyBKb2JQZXJtaXNzaW9uc1tdKSksXG4gICAgICB0b29sczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgdmVyc2lvbjogdGhpcy5taW5Ob2RlVmVyc2lvbiA/PyAnMjAnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY2JyxcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAnZmV0Y2gtZGVwdGgnOiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmdpdGh1YlN0ZXBzLmZsYXRNYXAocyA9PiBzLnN0ZXBzKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGpvYiB0byB1cGxvYWQgYXNzZXRzIHRvIEFXUyBhcyBwYXJ0IG9mIHRoZSBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVBc3NldFVwbG9hZChzdGFnZU5hbWU/OiBzdHJpbmcsIGdpdGh1YkVudmlyb25tZW50Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICBuZXcgU2ltcGxlQ29tbWFuZFN0ZXAodGhpcy5wcm9qZWN0LCBbJ2dpdCBjb25maWcgLS1nbG9iYWwgdXNlci5uYW1lIFwiZ2l0aHViLWFjdGlvbnNcIiAmJiBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIuZW1haWwgXCJnaXRodWItYWN0aW9uc0BnaXRodWIuY29tXCInXSksXG4gICAgICBuZXcgRG93bmxvYWRBcnRpZmFjdFN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIG5hbWU6IGAke3RoaXMubmFtZVByZWZpeH1jbG91ZC1hc3NlbWJseWAsXG4gICAgICAgIHBhdGg6IHRoaXMuYXJ0aWZhY3RQYXRoKGAke3RoaXMuYXBwLmNka0NvbmZpZy5jZGtvdXR9L2ApLFxuICAgICAgfSksXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlQXNzZXRVcGxvYWRTdGVwKHN0YWdlTmFtZSksXG4gICAgXTtcblxuICAgIGlmICh0aGlzLm5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzKSB7XG4gICAgICBzdGVwcy5wdXNoKHRoaXMucHJvdmlkZUFzc2VtYmx5VXBsb2FkU3RlcCgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBnaFN0ZXBzID0gc3RlcHMubWFwKHMgPT4gcy50b0dpdGh1YigpKTtcblxuICAgIHRoaXMuZGVwbG95bWVudFdvcmtmbG93LmFkZEpvYihgYXNzZXRVcGxvYWQke3N0YWdlTmFtZSA/IGAtJHtzdGFnZU5hbWV9YCA6ICcnfWAsIHtcbiAgICAgIG5hbWU6IGBQdWJsaXNoIGFzc2V0cyB0byBBV1Mke3N0YWdlTmFtZSA/IGAgZm9yIHN0YWdlICR7c3RhZ2VOYW1lfWAgOiAnJ31gLFxuICAgICAgbmVlZHM6IFsnc3ludGgnLCAuLi5naFN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKV0sXG4gICAgICBydW5zT246IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzID8/IERFRkFVTFRfUlVOTkVSX1RBR1MsXG4gICAgICAuLi50aGlzLmpvYkRlZmF1bHRzKCkgJiYgeyBkZWZhdWx0czogdGhpcy5qb2JEZWZhdWx0cygpIH0sXG4gICAgICAuLi4odGhpcy5vcHRpb25zLnVzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkICYmIHN0YWdlTmFtZSAmJiB7IGVudmlyb25tZW50OiBnaXRodWJFbnZpcm9ubWVudCA/PyBzdGFnZU5hbWUgfSksXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgLi4uZ2hTdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICAgIHBlcm1pc3Npb25zOiBtZXJnZUpvYlBlcm1pc3Npb25zKHtcbiAgICAgICAgaWRUb2tlbjogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgY29udGVudHM6IHRoaXMubmVlZHNWZXJzaW9uZWRBcnRpZmFjdHMgPyBKb2JQZXJtaXNzaW9uLldSSVRFIDogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICAuLi50aGlzLnVzZUdpdGh1YlBhY2thZ2VzICYmIHtcbiAgICAgICAgICBwYWNrYWdlczogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgfSxcbiAgICAgIH0sIC4uLihnaFN0ZXBzLmZsYXRNYXAocyA9PiBzLnBlcm1pc3Npb25zKS5maWx0ZXIocCA9PiBwICE9IHVuZGVmaW5lZCkgYXMgSm9iUGVybWlzc2lvbnNbXSkpLFxuICAgICAgdG9vbHM6IHtcbiAgICAgICAgbm9kZToge1xuICAgICAgICAgIHZlcnNpb246IHRoaXMubWluTm9kZVZlcnNpb24gPz8gJzIwJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgICB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NicsXG4gICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgJ2ZldGNoLWRlcHRoJzogMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAuLi5naFN0ZXBzLmZsYXRNYXAocyA9PiBzLnN0ZXBzKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGpvYiB0byBkZXBsb3kgdGhlIENESyBhcHBsaWNhdGlvbiB0byBBV1MuXG4gICAqIEBwYXJhbSBzdGFnZSAtIFRoZSBkZXBsb3ltZW50IHN0YWdlIHRvIGNyZWF0ZS5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVEZXBsb3ltZW50KHN0YWdlOiBEZXBsb3ltZW50U3RhZ2UsIHVzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChzdGFnZS5tYW51YWxBcHByb3ZhbCA9PT0gdHJ1ZSkge1xuICAgICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICAgIG5ldyBTaW1wbGVDb21tYW5kU3RlcCh0aGlzLnByb2plY3QsIHRoaXMucmVuZGVySW5zdGFsbFBhY2thZ2VDb21tYW5kcyhgJHt0aGlzLmJhc2VPcHRpb25zLnBrZ05hbWVzcGFjZX0vJHt0aGlzLmFwcC5uYW1lfUBcXCR7e2dpdGh1Yi5ldmVudC5pbnB1dHMudmVyc2lvbn19YCkpLFxuICAgICAgICBuZXcgU2ltcGxlQ29tbWFuZFN0ZXAodGhpcy5wcm9qZWN0LCBbYG12IC4vbm9kZV9tb2R1bGVzLyR7dGhpcy5iYXNlT3B0aW9ucy5wa2dOYW1lc3BhY2V9LyR7dGhpcy5hcHAubmFtZX0gJHt0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0fWBdKSxcbiAgICAgICAgdGhpcy5wcm92aWRlRGVwbG95U3RlcChzdGFnZSksXG4gICAgICAgIG5ldyBDZGtPdXRwdXRzU3VtbWFyeVN0ZXAodGhpcy5wcm9qZWN0LCB7IHN0YWdlTmFtZTogc3RhZ2UubmFtZSB9KSxcbiAgICAgICAgbmV3IFVwbG9hZEFydGlmYWN0U3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgICBuYW1lOiBgJHt0aGlzLm5hbWVQcmVmaXh9Y2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfWAsXG4gICAgICAgICAgcGF0aDogdGhpcy5hcnRpZmFjdFBhdGgoYGNkay1vdXRwdXRzLSR7c3RhZ2UubmFtZX0uanNvbmApLFxuICAgICAgICB9KSxcbiAgICAgIF0ubWFwKHMgPT4gcy50b0dpdGh1YigpKTtcblxuICAgICAgLy8gQ3JlYXRlIG5ldyB3b3JrZmxvdyBmb3IgZGVwbG95bWVudFxuICAgICAgY29uc3Qgc3RhZ2VXb3JrZmxvdyA9IHRoaXMuZ2guYWRkV29ya2Zsb3coYCR7dGhpcy5uYW1lUHJlZml4fXJlbGVhc2UtJHtzdGFnZS5uYW1lfWApO1xuICAgICAgc3RhZ2VXb3JrZmxvdy5vbih7XG4gICAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHtcbiAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgIHZlcnNpb246IHtcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdQYWNrYWdlIHZlcnNpb24nLFxuICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgc3RhZ2VXb3JrZmxvdy5hZGRKb2IoJ2RlcGxveScsIHtcbiAgICAgICAgbmFtZTogYFJlbGVhc2Ugc3RhZ2UgJHtzdGFnZS5uYW1lfSB0byBBV1NgLFxuICAgICAgICBuZWVkczogc3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLFxuICAgICAgICBydW5zT246IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzID8/IERFRkFVTFRfUlVOTkVSX1RBR1MsXG4gICAgICAgIC4uLnRoaXMuam9iRGVmYXVsdHMoKSAmJiB7IGRlZmF1bHRzOiB0aGlzLmpvYkRlZmF1bHRzKCkgfSxcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLnVzZUdpdGh1YkVudmlyb25tZW50cyAmJiB7XG4gICAgICAgICAgZW52aXJvbm1lbnQ6IHN0YWdlLmdpdGh1YkVudmlyb25tZW50ID8/IHN0YWdlLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmN1cnJlbmN5OiB7XG4gICAgICAgICAgJ2dyb3VwJzogYCR7dGhpcy5uYW1lUHJlZml4fWRlcGxveS0ke3N0YWdlLm5hbWV9YCxcbiAgICAgICAgICAnY2FuY2VsLWluLXByb2dyZXNzJzogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIENJOiAndHJ1ZScsXG4gICAgICAgICAgLi4uc3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbnM6IG1lcmdlSm9iUGVybWlzc2lvbnMoe1xuICAgICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgIH0sIC4uLihzdGVwcy5mbGF0TWFwKHMgPT4gcy5wZXJtaXNzaW9ucykuZmlsdGVyKHAgPT4gcCAhPSB1bmRlZmluZWQpIGFzIEpvYlBlcm1pc3Npb25zW10pKSxcbiAgICAgICAgdG9vbHM6IHtcbiAgICAgICAgICBub2RlOiB7XG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm1pbk5vZGVWZXJzaW9uID8/ICcyMCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RlcHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQ2hlY2tvdXQnLFxuICAgICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjYnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uc3RlcHMuZmxhdE1hcChzID0+IHMuc3RlcHMpLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jcmVhdGVEZXBsb3lKb2IodGhpcy5kZXBsb3ltZW50V29ya2Zsb3csIFsuLi4odGhpcy5kZXBsb3ltZW50U3RhZ2VzLmxlbmd0aCA+IDAgPyBbYGRlcGxveS0ke3RoaXMuZGVwbG95bWVudFN0YWdlcy5hdCgtMSkhfWBdIDogW10pXSwgc3RhZ2UsIHVzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkKTtcbiAgICAgIHRoaXMuZGVwbG95bWVudFN0YWdlcy5wdXNoKHN0YWdlLm5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGVwbG95Sm9iKFxuICAgIHdvcmtmbG93OiBHaXRodWJXb3JrZmxvdyxcbiAgICBqb2JEZXBlbmRlbmNpZXM6IHN0cmluZ1tdLFxuICAgIHN0YWdlOiBOYW1lZFN0YWdlT3B0aW9ucyxcbiAgICB1c2VHaXRodWJFbnZpcm9ubWVudHNGb3JBc3NldFVwbG9hZD86IGJvb2xlYW4sXG4gICkge1xuICAgIGNvbnN0IHN0ZXBzID0gW1xuICAgICAgbmV3IERvd25sb2FkQXJ0aWZhY3RTdGVwKHRoaXMucHJvamVjdCwge1xuICAgICAgICBuYW1lOiBgJHt0aGlzLm5hbWVQcmVmaXh9Y2xvdWQtYXNzZW1ibHlgLFxuICAgICAgICBwYXRoOiB0aGlzLmFydGlmYWN0UGF0aChgJHt0aGlzLmFwcC5jZGtDb25maWcuY2Rrb3V0fS9gKSxcbiAgICAgIH0pLFxuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZURlcGxveVN0ZXAoc3RhZ2UpLFxuICAgICAgbmV3IENka091dHB1dHNTdW1tYXJ5U3RlcCh0aGlzLnByb2plY3QsIHsgc3RhZ2VOYW1lOiBzdGFnZS5uYW1lIH0pLFxuICAgICAgbmV3IFVwbG9hZEFydGlmYWN0U3RlcCh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgbmFtZTogYCR7dGhpcy5uYW1lUHJlZml4fWNkay1vdXRwdXRzLSR7c3RhZ2UubmFtZX1gLFxuICAgICAgICBwYXRoOiB0aGlzLmFydGlmYWN0UGF0aChgY2RrLW91dHB1dHMtJHtzdGFnZS5uYW1lfS5qc29uYCksXG4gICAgICB9KSxcbiAgICBdLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICAvLyBBZGQgZGVwbG95bWVudCB0byBDSS9DRCB3b3JrZmxvd1xuICAgIHdvcmtmbG93LmFkZEpvYihgZGVwbG95LSR7c3RhZ2UubmFtZX1gLCB7XG4gICAgICBuYW1lOiBgRGVwbG95IHN0YWdlICR7c3RhZ2UubmFtZX0gdG8gQVdTYCxcbiAgICAgIC4uLnRoaXMub3B0aW9ucy51c2VHaXRodWJFbnZpcm9ubWVudHMgJiYge1xuICAgICAgICBlbnZpcm9ubWVudDogc3RhZ2UuZ2l0aHViRW52aXJvbm1lbnQgPz8gc3RhZ2UubmFtZSxcbiAgICAgIH0sXG4gICAgICAuLi50aGlzLmpvYkRlZmF1bHRzKCkgJiYgeyBkZWZhdWx0czogdGhpcy5qb2JEZWZhdWx0cygpIH0sXG4gICAgICBjb25jdXJyZW5jeToge1xuICAgICAgICAnZ3JvdXAnOiBgJHt0aGlzLm5hbWVQcmVmaXh9ZGVwbG95LSR7c3RhZ2UubmFtZX1gLFxuICAgICAgICAnY2FuY2VsLWluLXByb2dyZXNzJzogZmFsc2UsXG4gICAgICB9LFxuICAgICAgbmVlZHM6IFtgYXNzZXRVcGxvYWQke3VzZUdpdGh1YkVudmlyb25tZW50c0ZvckFzc2V0VXBsb2FkID8gYC0ke3N0YWdlLm5hbWV9YCA6ICcnfWAsIC4uLnN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKSwgLi4uam9iRGVwZW5kZW5jaWVzXSxcbiAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gREVGQVVMVF9SVU5ORVJfVEFHUyxcbiAgICAgIGVudjoge1xuICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgICAuLi5zdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICAgIHBlcm1pc3Npb25zOiBtZXJnZUpvYlBlcm1pc3Npb25zKHtcbiAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgIH0sIC4uLihzdGVwcy5mbGF0TWFwKHMgPT4gcy5wZXJtaXNzaW9ucykuZmlsdGVyKHAgPT4gcCAhPSB1bmRlZmluZWQpIGFzIEpvYlBlcm1pc3Npb25zW10pKSxcbiAgICAgIHRvb2xzOiB7XG4gICAgICAgIG5vZGU6IHtcbiAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm1pbk5vZGVWZXJzaW9uID8/ICcyMCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjYnLFxuICAgICAgICB9LFxuICAgICAgICAuLi5zdGVwcy5mbGF0TWFwKHMgPT4gcy5zdGVwcyksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBqb2IgdG8gZGVwbG95IHRoZSBDREsgYXBwbGljYXRpb24gdG8gQVdTLlxuICAgKiBAcGFyYW0gc3RhZ2UgLSBUaGUgaW5kZXBlbmRlbnQgc3RhZ2UgdG8gY3JlYXRlLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUluZGVwZW5kZW50RGVwbG95bWVudChzdGFnZTogSW5kZXBlbmRlbnRTdGFnZSk6IHZvaWQge1xuICAgIGlmIChzdGFnZS5kZXBsb3lPblB1c2ggfHwgdGhpcy5vcHRpb25zLnVzZUdpdGh1YkVudmlyb25tZW50cykge1xuICAgICAgdGhpcy5jcmVhdGVEZXBsb3lKb2IodGhpcy5kZXBsb3ltZW50V29ya2Zsb3csIFtdLCBzdGFnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN0ZXBzID0gW1xuICAgICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgICB0aGlzLnByb3ZpZGVTeW50aFN0ZXAoKSxcbiAgICAgICAgLi4uKChzdGFnZS5kaWZmVHlwZSAhPT0gQ2RrRGlmZlR5cGUuTk9ORSkgPyBbdGhpcy5wcm92aWRlRGlmZlN0ZXAoc3RhZ2UsIHN0YWdlLmRpZmZUeXBlID09PSBDZGtEaWZmVHlwZS5GQVNUKV0gOiBbXSksXG4gICAgICAgIHRoaXMucHJvdmlkZURlcGxveVN0ZXAoc3RhZ2UpLFxuICAgICAgICBuZXcgQ2RrT3V0cHV0c1N1bW1hcnlTdGVwKHRoaXMucHJvamVjdCwgeyBzdGFnZU5hbWU6IHN0YWdlLm5hbWUgfSksXG4gICAgICAgIG5ldyBVcGxvYWRBcnRpZmFjdFN0ZXAodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgICAgbmFtZTogYCR7dGhpcy5uYW1lUHJlZml4fWNkay1vdXRwdXRzLSR7c3RhZ2UubmFtZX1gLFxuICAgICAgICAgIHBhdGg6IHRoaXMuYXJ0aWZhY3RQYXRoKGBjZGstb3V0cHV0cy0ke3N0YWdlLm5hbWV9Lmpzb25gKSxcbiAgICAgICAgfSksXG4gICAgICBdLm1hcChzID0+IHMudG9HaXRodWIoKSk7XG5cbiAgICAgIC8vIENyZWF0ZSBuZXcgd29ya2Zsb3cgZm9yIGRlcGxveW1lbnRcbiAgICAgIGNvbnN0IHN0YWdlV29ya2Zsb3cgPSB0aGlzLmdoLmFkZFdvcmtmbG93KGAke3RoaXMubmFtZVByZWZpeH1kZXBsb3ktJHtzdGFnZS5uYW1lfWApO1xuICAgICAgc3RhZ2VXb3JrZmxvdy5vbih7XG4gICAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LFxuICAgICAgfSk7XG4gICAgICBzdGFnZVdvcmtmbG93LmFkZEpvYignZGVwbG95Jywge1xuICAgICAgICBuYW1lOiBgUmVsZWFzZSBzdGFnZSAke3N0YWdlLm5hbWV9IHRvIEFXU2AsXG4gICAgICAgIG5lZWRzOiBzdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyksXG4gICAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3MgPz8gREVGQVVMVF9SVU5ORVJfVEFHUyxcbiAgICAgICAgLi4udGhpcy5qb2JEZWZhdWx0cygpICYmIHsgZGVmYXVsdHM6IHRoaXMuam9iRGVmYXVsdHMoKSB9LFxuICAgICAgICBjb25jdXJyZW5jeToge1xuICAgICAgICAgICdncm91cCc6IGAke3RoaXMubmFtZVByZWZpeH1kZXBsb3ktJHtzdGFnZS5uYW1lfWAsXG4gICAgICAgICAgJ2NhbmNlbC1pbi1wcm9ncmVzcyc6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgICAgIC4uLnN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIHBlcm1pc3Npb25zOiBtZXJnZUpvYlBlcm1pc3Npb25zKHtcbiAgICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICB9LCAuLi4oc3RlcHMuZmxhdE1hcChzID0+IHMucGVybWlzc2lvbnMpLmZpbHRlcihwID0+IHAgIT0gdW5kZWZpbmVkKSBhcyBKb2JQZXJtaXNzaW9uc1tdKSksXG4gICAgICAgIHRvb2xzOiB7XG4gICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgdmVyc2lvbjogdGhpcy5taW5Ob2RlVmVyc2lvbiA/PyAnMjAnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHN0ZXBzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0NoZWNrb3V0JyxcbiAgICAgICAgICAgIHVzZXM6ICdhY3Rpb25zL2NoZWNrb3V0QHY2JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLnN0ZXBzLmZsYXRNYXAocyA9PiBzLnN0ZXBzKSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgfVxuICB9XG59XG4iXX0=
|
package/lib/awscdk/gitlab.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.GitlabCDKPipeline = void 0;
|
|
5
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
@@ -13,6 +12,16 @@ const github_summary_step_1 = require("../steps/github-summary.step");
|
|
|
13
12
|
* runner configuration, and defines stages and jobs for the deployment workflow.
|
|
14
13
|
*/
|
|
15
14
|
class GitlabCDKPipeline extends base_1.CDKPipeline {
|
|
15
|
+
options;
|
|
16
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.GitlabCDKPipeline", version: "0.3.23" };
|
|
17
|
+
/** Indicates if versioned artifacts are required. Currently set to false */
|
|
18
|
+
needsVersionedArtifacts;
|
|
19
|
+
/** The Docker image used for pipeline jobs. Defaults to a specified image or a default value. */
|
|
20
|
+
jobImage;
|
|
21
|
+
/** GitLab CI/CD configuration object. */
|
|
22
|
+
config;
|
|
23
|
+
/** List of deployment stages as strings. */
|
|
24
|
+
deploymentStages = [];
|
|
16
25
|
/**
|
|
17
26
|
* Constructs an instance of GitlabCDKPipeline, initializing the GitLab CI/CD configuration
|
|
18
27
|
* and setting up the necessary stages and jobs for AWS CDK deployment.
|
|
@@ -23,8 +32,6 @@ class GitlabCDKPipeline extends base_1.CDKPipeline {
|
|
|
23
32
|
constructor(app, options) {
|
|
24
33
|
super(app, options);
|
|
25
34
|
this.options = options;
|
|
26
|
-
/** List of deployment stages as strings. */
|
|
27
|
-
this.deploymentStages = [];
|
|
28
35
|
// TODO use existing config if possible
|
|
29
36
|
this.config = new projen_1.gitlab.GitlabConfiguration(app, {
|
|
30
37
|
stages: [],
|
|
@@ -248,6 +255,4 @@ class GitlabCDKPipeline extends base_1.CDKPipeline {
|
|
|
248
255
|
}
|
|
249
256
|
}
|
|
250
257
|
exports.GitlabCDKPipeline = GitlabCDKPipeline;
|
|
251
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
252
|
-
GitlabCDKPipeline[_a] = { fqn: "projen-pipelines.GitlabCDKPipeline", version: "0.3.21" };
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9naXRsYWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBd0M7QUFDeEMsaUNBQXlHO0FBQ3pHLHNDQUEyQztBQUUzQyxzRUFBcUU7QUErQnJFOzs7O0dBSUc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLGtCQUFXO0lBY2hEOzs7Ozs7T0FNRztJQUNILFlBQVksR0FBK0IsRUFBVSxPQUFpQztRQUNwRixLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRCtCLFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBVnRGLDRDQUE0QztRQUNwQyxxQkFBZ0IsR0FBYSxFQUFFLENBQUM7UUFZdEMsdUNBQXVDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFNLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFO1lBQ2hELE1BQU0sRUFBRSxFQUFFO1lBQ1YsSUFBSSxFQUFFLEVBQUU7U0FDVCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDLENBQUMsNkNBQTZDO1FBQ25GLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSw2Q0FBNkMsQ0FBQztRQUUvRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXpCLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQywyQkFBMkIsQ0FB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QyxJQUFJO2dCQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU87Z0JBQzNGLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSTtvQkFDdkIsSUFBSSxFQUFFO3dCQUNKLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7d0JBQ3ZCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUU7cUJBQ2pFO2lCQUNGO2dCQUNELEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJO29CQUN4QixJQUFJLEVBQUUsZUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2lCQUM1QjtnQkFDRCxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDakUsU0FBUyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDdEU7U0FDRixDQUFDLENBQUM7SUFFTCxDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU8sdUJBQWMsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQzs7QUEvUUgsOENBaVJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzY2RrLCBnaXRsYWIgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQ2RrRGlmZlR5cGUsIENES1BpcGVsaW5lLCBDREtQaXBlbGluZU9wdGlvbnMsIERlcGxveW1lbnRTdGFnZSwgSW5kZXBlbmRlbnRTdGFnZSB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBQaXBlbGluZUVuZ2luZSB9IGZyb20gJy4uL2VuZ2luZSc7XG5pbXBvcnQgeyBQaXBlbGluZVN0ZXAgfSBmcm9tICcuLi9zdGVwcyc7XG5pbXBvcnQgeyBDZGtPdXRwdXRzU3VtbWFyeVN0ZXAgfSBmcm9tICcuLi9zdGVwcy9naXRodWItc3VtbWFyeS5zdGVwJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBHaXRMYWIgcnVubmVyIHRhZ3MgdXNlZCB3aXRoaW4gdGhlIENJL0NEIHBpcGVsaW5lIGZvciB2YXJpb3VzIHN0YWdlcy5cbiAqIFRoaXMgYWxsb3dzIGZvciBzcGVjaWZ5aW5nIGRpZmZlcmVudCBydW5uZXJzIGJhc2VkIG9uIHRoZSB0YWdzIGZvciBkaWZmZXJlbnQgc3RhZ2VzIG9mIHRoZSBwaXBlbGluZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRsYWJSdW5uZXJUYWdzIHtcbiAgLyoqIERlZmF1bHQgcnVubmVyIHRhZ3MgdXNlZCBpZiBzcGVjaWZpYyBzdGFnZSB0YWdzIGFyZSBub3QgcHJvdmlkZWQuICovXG4gIHJlYWRvbmx5IGRlZmF1bHQ/OiBzdHJpbmdbXTtcbiAgLyoqIFJ1bm5lciB0YWdzIGZvciB0aGUgc3ludGhlc2lzIHN0YWdlLiAqL1xuICByZWFkb25seSBzeW50aD86IHN0cmluZ1tdO1xuICAvKiogUnVubmVyIHRhZ3MgZm9yIHRoZSBhc3NldCBwdWJsaXNoaW5nIHN0YWdlLiAqL1xuICByZWFkb25seSBhc3NldFB1Ymxpc2hpbmc/OiBzdHJpbmdbXTtcbiAgLyoqIEEgbWFwIG9mIHN0YWdlIG5hbWVzIHRvIHJ1bm5lciB0YWdzIGZvciB0aGUgZGlmZiBvcGVyYXRpb24uICovXG4gIHJlYWRvbmx5IGRpZmY/OiB7IFtzdGFnZTogc3RyaW5nXTogc3RyaW5nW10gfTtcbiAgLyoqIEEgbWFwIG9mIHN0YWdlIG5hbWVzIHRvIHJ1bm5lciB0YWdzIGZvciB0aGUgZGVwbG95bWVudCBvcGVyYXRpb24uICovXG4gIHJlYWRvbmx5IGRlcGxveW1lbnQ/OiB7IFtzdGFnZTogc3RyaW5nXTogc3RyaW5nW10gfTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb25maWd1cmluZyB0aGUgR2l0TGFiIENESyBwaXBlbGluZSwgZXh0ZW5kaW5nIHRoZSBiYXNlIENESyBwaXBlbGluZSBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdGxhYkNES1BpcGVsaW5lT3B0aW9ucyBleHRlbmRzIENES1BpcGVsaW5lT3B0aW9ucyB7XG4gIC8qKiBSdW5uZXIgdGFncyBjb25maWd1cmF0aW9uIGZvciB0aGUgcGlwZWxpbmUuICovXG4gIHJlYWRvbmx5IHJ1bm5lclRhZ3M/OiBHaXRsYWJSdW5uZXJUYWdzO1xuICAvKiogVGhlIERvY2tlciBpbWFnZSB0byB1c2UgZm9yIHJ1bm5pbmcgdGhlIHBpcGVsaW5lIGpvYnMuICovXG4gIHJlYWRvbmx5IGltYWdlPzogc3RyaW5nO1xuXG4gIC8vIHJlYWRvbmx5IHB1Ymxpc2hlZENsb3VkQXNzZW1ibGllcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIEdpdGxhYkNES1BpcGVsaW5lIGNsYXNzIGV4dGVuZHMgQ0RLUGlwZWxpbmUgdG8gcHJvdmlkZSBhIHdheSB0byBjb25maWd1cmUgYW5kIGV4ZWN1dGVcbiAqIEFXUyBDREsgZGVwbG95bWVudCBwaXBlbGluZXMgd2l0aGluIEdpdExhYiBDSS9DRCBlbnZpcm9ubWVudHMuIEl0IGludGVncmF0ZXMgSUFNIHJvbGUgbWFuYWdlbWVudCxcbiAqIHJ1bm5lciBjb25maWd1cmF0aW9uLCBhbmQgZGVmaW5lcyBzdGFnZXMgYW5kIGpvYnMgZm9yIHRoZSBkZXBsb3ltZW50IHdvcmtmbG93LlxuICovXG5leHBvcnQgY2xhc3MgR2l0bGFiQ0RLUGlwZWxpbmUgZXh0ZW5kcyBDREtQaXBlbGluZSB7XG5cbiAgLyoqIEluZGljYXRlcyBpZiB2ZXJzaW9uZWQgYXJ0aWZhY3RzIGFyZSByZXF1aXJlZC4gQ3VycmVudGx5IHNldCB0byBmYWxzZSAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgRG9ja2VyIGltYWdlIHVzZWQgZm9yIHBpcGVsaW5lIGpvYnMuIERlZmF1bHRzIHRvIGEgc3BlY2lmaWVkIGltYWdlIG9yIGEgZGVmYXVsdCB2YWx1ZS4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGpvYkltYWdlOiBzdHJpbmc7XG5cbiAgLyoqIEdpdExhYiBDSS9DRCBjb25maWd1cmF0aW9uIG9iamVjdC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogZ2l0bGFiLkdpdGxhYkNvbmZpZ3VyYXRpb247XG5cbiAgLyoqIExpc3Qgb2YgZGVwbG95bWVudCBzdGFnZXMgYXMgc3RyaW5ncy4gKi9cbiAgcHJpdmF0ZSBkZXBsb3ltZW50U3RhZ2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIGluc3RhbmNlIG9mIEdpdGxhYkNES1BpcGVsaW5lLCBpbml0aWFsaXppbmcgdGhlIEdpdExhYiBDSS9DRCBjb25maWd1cmF0aW9uXG4gICAqIGFuZCBzZXR0aW5nIHVwIHRoZSBuZWNlc3Nhcnkgc3RhZ2VzIGFuZCBqb2JzIGZvciBBV1MgQ0RLIGRlcGxveW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7YXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHB9IGFwcCAtIFRoZSBBV1MgQ0RLIGFwcCBhc3NvY2lhdGVkIHdpdGggdGhlIHBpcGVsaW5lLlxuICAgKiBAcGFyYW0ge0dpdGxhYkNES1BpcGVsaW5lT3B0aW9uc30gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHBpcGVsaW5lLlxuICAgKi9cbiAgY29uc3RydWN0b3IoYXBwOiBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcCwgcHJpdmF0ZSBvcHRpb25zOiBHaXRsYWJDREtQaXBlbGluZU9wdGlvbnMpIHtcbiAgICBzdXBlcihhcHAsIG9wdGlvbnMpO1xuXG4gICAgLy8gVE9ETyB1c2UgZXhpc3RpbmcgY29uZmlnIGlmIHBvc3NpYmxlXG4gICAgdGhpcy5jb25maWcgPSBuZXcgZ2l0bGFiLkdpdGxhYkNvbmZpZ3VyYXRpb24oYXBwLCB7XG4gICAgICBzdGFnZXM6IFtdLFxuICAgICAgam9iczoge30sXG4gICAgfSk7XG5cbiAgICB0aGlzLm5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzID0gZmFsc2U7IC8vIG9wdGlvbnMucHVibGlzaGVkQ2xvdWRBc3NlbWJsaWVzID8/IGZhbHNlO1xuICAgIHRoaXMuam9iSW1hZ2UgPSBvcHRpb25zLmltYWdlID8/ICdpbWFnZToganNpaS9zdXBlcmNoYWluOjEtYnVzdGVyLXNsaW0tbm9kZTE4JztcblxuICAgIHRoaXMuc2V0dXBTbmlwcGV0cygpO1xuXG4gICAgdGhpcy5jcmVhdGVTeW50aCgpO1xuXG4gICAgdGhpcy5jcmVhdGVBc3NldFVwbG9hZCgpO1xuXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiBvcHRpb25zLnN0YWdlcykge1xuICAgICAgdGhpcy5jcmVhdGVEZXBsb3ltZW50KHN0YWdlKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIChvcHRpb25zLmluZGVwZW5kZW50U3RhZ2VzID8/IFtdKSkge1xuICAgICAgdGhpcy5jcmVhdGVJbmRlcGVuZGVudERlcGxveW1lbnQoc3RhZ2UpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmZlYXR1cmVTdGFnZXMpIHtcbiAgICAgIHRoaXMuY3JlYXRlRmVhdHVyZVdvcmtmbG93cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIGJhc2Ugam9iIHNuaXBwZXRzIGZvciBhcnRpZmFjdCBoYW5kbGluZyBhbmQgQVdTIGNvbmZpZ3VyYXRpb24uXG4gICAqIFRoaXMgbWV0aG9kIGRlZmluZXMgcmV1c2FibGUgam9iIGNvbmZpZ3VyYXRpb25zIHRvIGJlIGV4dGVuZGVkIGJ5IHNwZWNpZmljIHBpcGVsaW5lIGpvYnMsXG4gICAqIGZhY2lsaXRhdGluZyBhcnRpZmFjdCBjYWNoaW5nIGFuZCBBV1MgYXV0aGVudGljYXRpb24gc2V0dXAuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0dXBTbmlwcGV0cygpIHtcbiAgICBjb25zdCBjZGtPdXRQYXRoID0gdGhpcy53b3JraW5nRGlyZWN0b3J5ID8gYCR7dGhpcy53b3JraW5nRGlyZWN0b3J5fS9jZGsub3V0YCA6ICdjZGsub3V0JztcbiAgICBjb25zdCBjZGtPdXRwdXRzUGF0aCA9IHRoaXMud29ya2luZ0RpcmVjdG9yeSA/IGAke3RoaXMud29ya2luZ0RpcmVjdG9yeX0vY2RrLW91dHB1dHMtKi5qc29uYCA6ICdjZGstb3V0cHV0cy0qLmpzb24nO1xuXG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICBbYC4ke3RoaXMubmFtZVByZWZpeH1hcnRpZmFjdHNfY2RrYF06IHtcbiAgICAgICAgYXJ0aWZhY3RzOiB7XG4gICAgICAgICAgd2hlbjogZ2l0bGFiLkNhY2hlV2hlbi5PTl9TVUNDRVNTLFxuICAgICAgICAgIGV4cGlyZUluOiAnMzAgZGF5cycsXG4gICAgICAgICAgbmFtZTogJ0NESyBBc3NlbWJseSAtICRDSV9KT0JfTkFNRS0kQ0lfQ09NTUlUX1JFRl9TTFVHJyxcbiAgICAgICAgICB1bnRyYWNrZWQ6IGZhbHNlLFxuICAgICAgICAgIHBhdGhzOiBbY2RrT3V0UGF0aF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgW2AuJHt0aGlzLm5hbWVQcmVmaXh9YXJ0aWZhY3RzX2Nka2RlcGxveWBdOiB7XG4gICAgICAgIGFydGlmYWN0czoge1xuICAgICAgICAgIHdoZW46IGdpdGxhYi5DYWNoZVdoZW4uT05fU1VDQ0VTUyxcbiAgICAgICAgICBleHBpcmVJbjogJzMwIGRheXMnLFxuICAgICAgICAgIG5hbWU6ICdDREsgT3V0cHV0cyAtICRDSV9KT0JfTkFNRS0kQ0lfQ09NTUlUX1JFRl9TTFVHJyxcbiAgICAgICAgICB1bnRyYWNrZWQ6IGZhbHNlLFxuICAgICAgICAgIHBhdGhzOiBbY2RrT3V0cHV0c1BhdGhdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFtgLiR7dGhpcy5uYW1lUHJlZml4fWF3c19iYXNlYF06IHtcbiAgICAgICAgaW1hZ2U6IHsgbmFtZTogdGhpcy5qb2JJbWFnZSB9LFxuICAgICAgICBpZFRva2Vuczoge1xuICAgICAgICAgIEFXU19UT0tFTjoge1xuICAgICAgICAgICAgYXVkOiAnaHR0cHM6Ly9zdHMuYW1hem9uYXdzLmNvbScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgICAgICAvLyBOUE1fUkVHSVNUUlk6ICd4eHgnXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUZlYXR1cmVXb3JrZmxvd3MoKTogdm9pZCB7XG4gICAgLy8gVE9ETyBkZXBsb3kgYW5kIGRlc3Ryb3kgZmVhdHVyZSBzdGFnZXNcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVwZW5kcyBhIGBjZGAgY29tbWFuZCB0byB0aGUgc2NyaXB0IGFycmF5IHdoZW4gd29ya2luZ0RpcmVjdG9yeSBpcyBzZXQuXG4gICAqL1xuICBwcml2YXRlIHdpdGhXb3JraW5nRGlyZWN0b3J5KGNvbW1hbmRzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBpZiAodGhpcy53b3JraW5nRGlyZWN0b3J5KSB7XG4gICAgICByZXR1cm4gW2BjZCAke3RoaXMud29ya2luZ0RpcmVjdG9yeX1gLCAuLi5jb21tYW5kc107XG4gICAgfVxuICAgIHJldHVybiBjb21tYW5kcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSAnc3ludGgnIHN0YWdlIG9mIHRoZSBwaXBlbGluZSB0byBzeW50aGVzaXplIEFXUyBDREsgYXBwbGljYXRpb25zLlxuICAgKiBUaGlzIG1ldGhvZCBjb25maWd1cmVzIHRoZSBqb2IgdG8gZXhlY3V0ZSBDREsgc3ludGhlc2lzLCBhcHBseWluZyB0aGUgYXBwcm9wcmlhdGUgSUFNIHJvbGVcbiAgICogZm9yIEFXUyBjb21tYW5kcyBhbmQgc3BlY2lmeWluZyBydW5uZXIgdGFncyBmb3Igam9iIGV4ZWN1dGlvbi4gVGhlIHN5bnRoZXNpemVkIG91dHB1dHMgYXJlXG4gICAqIGNvbmZpZ3VyZWQgdG8gYmUgY2FjaGVkIGFzIGFydGlmYWN0cy5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVTeW50aCgpOiB2b2lkIHtcbiAgICBjb25zdCBzdGVwczogUGlwZWxpbmVTdGVwW10gPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlU3ludGhTdGVwKCksXG4gICAgXTtcblxuICAgIGNvbnN0IGdpdGxhYlN0ZXBzID0gc3RlcHMubWFwKHMgPT4gcy50b0dpdGxhYigpKTtcblxuICAgIHRoaXMuY29uZmlnLmFkZFN0YWdlcygnc3ludGgnKTtcbiAgICB0aGlzLmNvbmZpZy5hZGRKb2JzKHtcbiAgICAgIFtgJHt0aGlzLm5hbWVQcmVmaXh9c3ludGhgXToge1xuICAgICAgICBleHRlbmRzOiBbYC4ke3RoaXMubmFtZVByZWZpeH1hd3NfYmFzZWAsIGAuJHt0aGlzLm5hbWVQcmVmaXh9YXJ0aWZhY3RzX2Nka2AsIC4uLmdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLmV4dGVuc2lvbnMpXSxcbiAgICAgICAgbmVlZHM6IGdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKSxcbiAgICAgICAgc3RhZ2U6ICdzeW50aCcsXG4gICAgICAgIHRhZ3M6IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5zeW50aCA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVmYXVsdCxcbiAgICAgICAgc2NyaXB0OiB0aGlzLndpdGhXb3JraW5nRGlyZWN0b3J5KGdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLmNvbW1hbmRzKSksXG4gICAgICAgIHZhcmlhYmxlczogZ2l0bGFiU3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCB0aGUgYXNzZXQgcHVibGlzaGluZyBzdGFnZSBvZiB0aGUgcGlwZWxpbmUuXG4gICAqIFRoaXMgbWV0aG9kIGNvbmZpZ3VyZXMgYSBqb2IgdG8gdXBsb2FkIHN5bnRoZXNpemVkIGFzc2V0cyB0byBBV1MsIGhhbmRsaW5nIElBTSByb2xlXG4gICAqIGF1dGhlbnRpY2F0aW9uIGFuZCBzcGVjaWZ5aW5nIHJ1bm5lciB0YWdzLiBJdCBkZXBlbmRzIG9uIHRoZSBzdWNjZXNzZnVsIGNvbXBsZXRpb25cbiAgICogb2YgdGhlICdzeW50aCcgc3RhZ2UsIGVuc3VyaW5nIGFzc2V0cyBhcmUgb25seSBwdWJsaXNoZWQgYWZ0ZXIgc3VjY2Vzc2Z1bCBzeW50aGVzaXMuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQXNzZXRVcGxvYWQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlQXNzZXRVcGxvYWRTdGVwKCksXG4gICAgXTtcblxuICAgIGlmICh0aGlzLm5lZWRzVmVyc2lvbmVkQXJ0aWZhY3RzKSB7XG4gICAgICBzdGVwcy5wdXNoKHRoaXMucHJvdmlkZUFzc2VtYmx5VXBsb2FkU3RlcCgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBnaXRsYWJTdGVwcyA9IHN0ZXBzLm1hcChzID0+IHMudG9HaXRsYWIoKSk7XG5cbiAgICB0aGlzLmNvbmZpZy5hZGRTdGFnZXMoJ3B1Ymxpc2hfYXNzZXRzJyk7XG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICBbYCR7dGhpcy5uYW1lUHJlZml4fXB1Ymxpc2hfYXNzZXRzYF06IHtcbiAgICAgICAgZXh0ZW5kczogW2AuJHt0aGlzLm5hbWVQcmVmaXh9YXdzX2Jhc2VgLCAuLi5naXRsYWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5leHRlbnNpb25zKV0sXG4gICAgICAgIHN0YWdlOiAncHVibGlzaF9hc3NldHMnLFxuICAgICAgICB0YWdzOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uYXNzZXRQdWJsaXNoaW5nID8/IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kZWZhdWx0LFxuICAgICAgICBuZWVkczogW3sgam9iOiBgJHt0aGlzLm5hbWVQcmVmaXh9c3ludGhgLCBhcnRpZmFjdHM6IHRydWUgfSwgLi4uZ2l0bGFiU3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpXSxcbiAgICAgICAgc2NyaXB0OiB0aGlzLndpdGhXb3JraW5nRGlyZWN0b3J5KGdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLmNvbW1hbmRzKSksXG4gICAgICAgIHZhcmlhYmxlczogZ2l0bGFiU3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRHluYW1pY2FsbHkgY3JlYXRlcyBkZXBsb3ltZW50IHN0YWdlcyBiYXNlZCBvbiB0aGUgZGVwbG95bWVudCBjb25maWd1cmF0aW9uLlxuICAgKiBGb3IgZWFjaCBwcm92aWRlZCBkZXBsb3ltZW50IHN0YWdlLCB0aGlzIG1ldGhvZCBzZXRzIHVwIGpvYnMgZm9yICdkaWZmJyBhbmQgJ2RlcGxveScgYWN0aW9ucyxcbiAgICogYXBwbHlpbmcgdGhlIGNvcnJlY3QgSUFNIHJvbGVzIGFuZCBydW5uZXIgdGFncy4gSXQgc3VwcG9ydHMgY29uZGl0aW9uYWwgbWFudWFsIGFwcHJvdmFsIGZvclxuICAgKiBkZXBsb3ltZW50IHN0YWdlcywgcHJvdmlkaW5nIGZsZXhpYmlsaXR5IGluIHRoZSBkZXBsb3ltZW50IHdvcmtmbG93LlxuICAgKlxuICAgKiBAcGFyYW0ge0RlcGxveW1lbnRTdGFnZX0gc3RhZ2UgLSBUaGUgZGVwbG95bWVudCBzdGFnZSBjb25maWd1cmF0aW9uIHRvIHNldCB1cC5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVEZXBsb3ltZW50KHN0YWdlOiBEZXBsb3ltZW50U3RhZ2UpOiB2b2lkIHtcbiAgICBjb25zdCBkaWZmU3RlcHMgPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlRGlmZlN0ZXAoc3RhZ2UsIHN0YWdlLmRpZmZUeXBlID09PSBDZGtEaWZmVHlwZS5GQVNUKSxcbiAgICBdLm1hcChzID0+IHMudG9HaXRsYWIoKSk7XG5cblxuICAgIGNvbnN0IGRlcGxveVN0ZXBzID0gW1xuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZURlcGxveVN0ZXAoc3RhZ2UpLFxuICAgICAgbmV3IENka091dHB1dHNTdW1tYXJ5U3RlcCh0aGlzLnByb2plY3QsIHsgc3RhZ2VOYW1lOiBzdGFnZS5uYW1lIH0pLFxuICAgIF0ubWFwKHMgPT4gcy50b0dpdGxhYigpKTtcblxuICAgIHRoaXMuY29uZmlnLmFkZFN0YWdlcyhzdGFnZS5uYW1lKTtcbiAgICB0aGlzLmNvbmZpZy5hZGRKb2JzKHtcbiAgICAgIC4uLihzdGFnZS5kaWZmVHlwZSAhPT0gQ2RrRGlmZlR5cGUuTk9ORSkgJiYge1xuICAgICAgICBbYCR7dGhpcy5uYW1lUHJlZml4fWRpZmYtJHtzdGFnZS5uYW1lfWBdOiB7XG4gICAgICAgICAgZXh0ZW5kczogW2AuJHt0aGlzLm5hbWVQcmVmaXh9YXdzX2Jhc2VgLCAuLi5kaWZmU3RlcHMuZmxhdE1hcChzID0+IHMuZXh0ZW5zaW9ucyldLFxuICAgICAgICAgIHN0YWdlOiBzdGFnZS5uYW1lLFxuICAgICAgICAgIHRhZ3M6IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kaWZmPy5bc3RhZ2UubmFtZV0gPz8gdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRlcGxveW1lbnQ/LltzdGFnZS5uYW1lXSA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVmYXVsdCxcbiAgICAgICAgICBvbmx5OiB7XG4gICAgICAgICAgICByZWZzOiBbdGhpcy5icmFuY2hOYW1lXSxcbiAgICAgICAgICAgIC4uLnRoaXMuYmFzZU9wdGlvbnMucGF0aHMgJiYgeyBjaGFuZ2VzOiB0aGlzLmJhc2VPcHRpb25zLnBhdGhzIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZWVkczogW1xuICAgICAgICAgICAgeyBqb2I6IGAke3RoaXMubmFtZVByZWZpeH1zeW50aGAsIGFydGlmYWN0czogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBqb2I6IGAke3RoaXMubmFtZVByZWZpeH1wdWJsaXNoX2Fzc2V0c2AgfSxcbiAgICAgICAgICAgIC4uLmRpZmZTdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyksXG4gICAgICAgICAgXSxcbiAgICAgICAgICBzY3JpcHQ6IHRoaXMud2l0aFdvcmtpbmdEaXJlY3RvcnkoZGlmZlN0ZXBzLmZsYXRNYXAocyA9PiBzLmNvbW1hbmRzKSksXG4gICAgICAgICAgdmFyaWFibGVzOiBkaWZmU3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBbYCR7dGhpcy5uYW1lUHJlZml4fWRlcGxveS0ke3N0YWdlLm5hbWV9YF06IHtcbiAgICAgICAgZXh0ZW5kczogW2AuJHt0aGlzLm5hbWVQcmVmaXh9YXdzX2Jhc2VgLCBgLiR7dGhpcy5uYW1lUHJlZml4fWFydGlmYWN0c19jZGtkZXBsb3lgLCAuLi5kZXBsb3lTdGVwcy5mbGF0TWFwKHMgPT4gcy5leHRlbnNpb25zKV0sXG4gICAgICAgIHN0YWdlOiBzdGFnZS5uYW1lLFxuICAgICAgICB0YWdzOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVwbG95bWVudD8uW3N0YWdlLm5hbWVdID8/IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kZWZhdWx0LFxuICAgICAgICAuLi5zdGFnZS5tYW51YWxBcHByb3ZhbCAmJiB7XG4gICAgICAgICAgd2hlbjogZ2l0bGFiLkpvYldoZW4uTUFOVUFMLFxuICAgICAgICB9LFxuICAgICAgICBvbmx5OiB7XG4gICAgICAgICAgcmVmczogW3RoaXMuYnJhbmNoTmFtZV0sXG4gICAgICAgICAgLi4udGhpcy5iYXNlT3B0aW9ucy5wYXRocyAmJiB7IGNoYW5nZXM6IHRoaXMuYmFzZU9wdGlvbnMucGF0aHMgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbmVlZHM6IFtcbiAgICAgICAgICB7IGpvYjogYCR7dGhpcy5uYW1lUHJlZml4fXN5bnRoYCwgYXJ0aWZhY3RzOiB0cnVlIH0sXG4gICAgICAgICAgeyBqb2I6IGAke3RoaXMubmFtZVByZWZpeH1wdWJsaXNoX2Fzc2V0c2AgfSxcbiAgICAgICAgICAuLi4oc3RhZ2UuZGlmZlR5cGUgIT09IENka0RpZmZUeXBlLk5PTkUpID8gW3sgam9iOiBgJHt0aGlzLm5hbWVQcmVmaXh9ZGlmZi0ke3N0YWdlLm5hbWV9YCB9XSA6IFtdLFxuICAgICAgICAgIC4uLmRlcGxveVN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKSxcbiAgICAgICAgXSxcbiAgICAgICAgc2NyaXB0OiB0aGlzLndpdGhXb3JraW5nRGlyZWN0b3J5KGRlcGxveVN0ZXBzLmZsYXRNYXAocyA9PiBzLmNvbW1hbmRzKSksXG4gICAgICAgIHZhcmlhYmxlczogZGVwbG95U3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5kZXBsb3ltZW50U3RhZ2VzLnB1c2goc3RhZ2UubmFtZSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgam9iIHRvIGRlcGxveSB0aGUgQ0RLIGFwcGxpY2F0aW9uIHRvIEFXUy5cbiAgICogQHBhcmFtIHN0YWdlIC0gVGhlIGluZGVwZW5kZW50IHN0YWdlIHRvIGNyZWF0ZS5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVJbmRlcGVuZGVudERlcGxveW1lbnQoc3RhZ2U6IEluZGVwZW5kZW50U3RhZ2UpOiB2b2lkIHtcbiAgICBjb25zdCBzdGVwcyA9IFtcbiAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVTeW50aFN0ZXAoKSxcbiAgICAgIC4uLihzdGFnZS5kaWZmVHlwZSAhPT0gQ2RrRGlmZlR5cGUuTk9ORSA/IFt0aGlzLnByb3ZpZGVEaWZmU3RlcChzdGFnZSwgc3RhZ2UuZGlmZlR5cGUgPT0gQ2RrRGlmZlR5cGUuRkFTVCldIDogW10pLFxuICAgICAgdGhpcy5wcm92aWRlRGVwbG95U3RlcChzdGFnZSksXG4gICAgICBuZXcgQ2RrT3V0cHV0c1N1bW1hcnlTdGVwKHRoaXMucHJvamVjdCwgeyBzdGFnZU5hbWU6IHN0YWdlLm5hbWUgfSksXG4gICAgXS5tYXAocyA9PiBzLnRvR2l0bGFiKCkpO1xuXG4gICAgdGhpcy5jb25maWcuYWRkU3RhZ2VzKHN0YWdlLm5hbWUpO1xuICAgIHRoaXMuY29uZmlnLmFkZEpvYnMoe1xuICAgICAgW2Ake3RoaXMubmFtZVByZWZpeH1kZXBsb3ktJHtzdGFnZS5uYW1lfWBdOiB7XG4gICAgICAgIGV4dGVuZHM6IFtgLiR7dGhpcy5uYW1lUHJlZml4fWF3c19iYXNlYCwgYC4ke3RoaXMubmFtZVByZWZpeH1hcnRpZmFjdHNfY2RrZGVwbG95YCwgLi4uc3RlcHMuZmxhdE1hcChzID0+IHMuZXh0ZW5zaW9ucyldLFxuICAgICAgICBzdGFnZTogc3RhZ2UubmFtZSxcbiAgICAgICAgdGFnczogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRlcGxveW1lbnQ/LltzdGFnZS5uYW1lXSA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVmYXVsdCxcbiAgICAgICAgLi4uc3RhZ2UuZGVwbG95T25QdXNoICYmIHtcbiAgICAgICAgICBvbmx5OiB7XG4gICAgICAgICAgICByZWZzOiBbdGhpcy5icmFuY2hOYW1lXSxcbiAgICAgICAgICAgIC4uLnRoaXMuYmFzZU9wdGlvbnMucGF0aHMgJiYgeyBjaGFuZ2VzOiB0aGlzLmJhc2VPcHRpb25zLnBhdGhzIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uIXN0YWdlLmRlcGxveU9uUHVzaCAmJiB7XG4gICAgICAgICAgd2hlbjogZ2l0bGFiLkpvYldoZW4uTUFOVUFMLFxuICAgICAgICB9LFxuICAgICAgICBuZWVkczogc3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLFxuICAgICAgICBzY3JpcHQ6IHRoaXMud2l0aFdvcmtpbmdEaXJlY3Rvcnkoc3RlcHMuZmxhdE1hcChzID0+IHMuY29tbWFuZHMpKSxcbiAgICAgICAgdmFyaWFibGVzOiBzdGVwcy5yZWR1Y2UoKGFjYywgc3RlcCkgPT4gKHsgLi4uYWNjLCAuLi5zdGVwLmVudiB9KSwge30pLFxuICAgICAgfSxcbiAgICB9KTtcblxuICB9XG5cbiAgcHVibGljIGVuZ2luZVR5cGUoKTogUGlwZWxpbmVFbmdpbmUge1xuICAgIHJldHVybiBQaXBlbGluZUVuZ2luZS5HSVRMQUI7XG4gIH1cblxufVxuXG4iXX0=
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0bGFiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9naXRsYWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG1DQUF3QztBQUN4QyxpQ0FBeUc7QUFDekcsc0NBQTJDO0FBRTNDLHNFQUFxRTtBQStCckU7Ozs7R0FJRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsa0JBQVc7SUFxQks7O0lBbkJyRCw2RUFBNkU7SUFDN0QsdUJBQXVCLENBQVU7SUFFakQsaUdBQWlHO0lBQ2pGLFFBQVEsQ0FBUztJQUVqQyx5Q0FBeUM7SUFDekIsTUFBTSxDQUE2QjtJQUVuRCw0Q0FBNEM7SUFDcEMsZ0JBQWdCLEdBQWEsRUFBRSxDQUFDO0lBRXhDOzs7Ozs7T0FNRztJQUNILFlBQVksR0FBK0IsRUFBVSxPQUFpQztRQUNwRixLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRCtCLFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBR3BGLHVDQUF1QztRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRTtZQUNoRCxNQUFNLEVBQUUsRUFBRTtZQUNWLElBQUksRUFBRSxFQUFFO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxDQUFDLDZDQUE2QztRQUNuRixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksNkNBQTZDLENBQUM7UUFFL0UsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXJCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUV6QixLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQztR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LENBQUM7O0FBL1FILDhDQWlSQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c2NkaywgZ2l0bGFiIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IENka0RpZmZUeXBlLCBDREtQaXBlbGluZSwgQ0RLUGlwZWxpbmVPcHRpb25zLCBEZXBsb3ltZW50U3RhZ2UsIEluZGVwZW5kZW50U3RhZ2UgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgUGlwZWxpbmVFbmdpbmUgfSBmcm9tICcuLi9lbmdpbmUnO1xuaW1wb3J0IHsgUGlwZWxpbmVTdGVwIH0gZnJvbSAnLi4vc3RlcHMnO1xuaW1wb3J0IHsgQ2RrT3V0cHV0c1N1bW1hcnlTdGVwIH0gZnJvbSAnLi4vc3RlcHMvZ2l0aHViLXN1bW1hcnkuc3RlcCc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgR2l0TGFiIHJ1bm5lciB0YWdzIHVzZWQgd2l0aGluIHRoZSBDSS9DRCBwaXBlbGluZSBmb3IgdmFyaW91cyBzdGFnZXMuXG4gKiBUaGlzIGFsbG93cyBmb3Igc3BlY2lmeWluZyBkaWZmZXJlbnQgcnVubmVycyBiYXNlZCBvbiB0aGUgdGFncyBmb3IgZGlmZmVyZW50IHN0YWdlcyBvZiB0aGUgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2l0bGFiUnVubmVyVGFncyB7XG4gIC8qKiBEZWZhdWx0IHJ1bm5lciB0YWdzIHVzZWQgaWYgc3BlY2lmaWMgc3RhZ2UgdGFncyBhcmUgbm90IHByb3ZpZGVkLiAqL1xuICByZWFkb25seSBkZWZhdWx0Pzogc3RyaW5nW107XG4gIC8qKiBSdW5uZXIgdGFncyBmb3IgdGhlIHN5bnRoZXNpcyBzdGFnZS4gKi9cbiAgcmVhZG9ubHkgc3ludGg/OiBzdHJpbmdbXTtcbiAgLyoqIFJ1bm5lciB0YWdzIGZvciB0aGUgYXNzZXQgcHVibGlzaGluZyBzdGFnZS4gKi9cbiAgcmVhZG9ubHkgYXNzZXRQdWJsaXNoaW5nPzogc3RyaW5nW107XG4gIC8qKiBBIG1hcCBvZiBzdGFnZSBuYW1lcyB0byBydW5uZXIgdGFncyBmb3IgdGhlIGRpZmYgb3BlcmF0aW9uLiAqL1xuICByZWFkb25seSBkaWZmPzogeyBbc3RhZ2U6IHN0cmluZ106IHN0cmluZ1tdIH07XG4gIC8qKiBBIG1hcCBvZiBzdGFnZSBuYW1lcyB0byBydW5uZXIgdGFncyBmb3IgdGhlIGRlcGxveW1lbnQgb3BlcmF0aW9uLiAqL1xuICByZWFkb25seSBkZXBsb3ltZW50PzogeyBbc3RhZ2U6IHN0cmluZ106IHN0cmluZ1tdIH07XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgdGhlIEdpdExhYiBDREsgcGlwZWxpbmUsIGV4dGVuZGluZyB0aGUgYmFzZSBDREsgcGlwZWxpbmUgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRsYWJDREtQaXBlbGluZU9wdGlvbnMgZXh0ZW5kcyBDREtQaXBlbGluZU9wdGlvbnMge1xuICAvKiogUnVubmVyIHRhZ3MgY29uZmlndXJhdGlvbiBmb3IgdGhlIHBpcGVsaW5lLiAqL1xuICByZWFkb25seSBydW5uZXJUYWdzPzogR2l0bGFiUnVubmVyVGFncztcbiAgLyoqIFRoZSBEb2NrZXIgaW1hZ2UgdG8gdXNlIGZvciBydW5uaW5nIHRoZSBwaXBlbGluZSBqb2JzLiAqL1xuICByZWFkb25seSBpbWFnZT86IHN0cmluZztcblxuICAvLyByZWFkb25seSBwdWJsaXNoZWRDbG91ZEFzc2VtYmxpZXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBHaXRsYWJDREtQaXBlbGluZSBjbGFzcyBleHRlbmRzIENES1BpcGVsaW5lIHRvIHByb3ZpZGUgYSB3YXkgdG8gY29uZmlndXJlIGFuZCBleGVjdXRlXG4gKiBBV1MgQ0RLIGRlcGxveW1lbnQgcGlwZWxpbmVzIHdpdGhpbiBHaXRMYWIgQ0kvQ0QgZW52aXJvbm1lbnRzLiBJdCBpbnRlZ3JhdGVzIElBTSByb2xlIG1hbmFnZW1lbnQsXG4gKiBydW5uZXIgY29uZmlndXJhdGlvbiwgYW5kIGRlZmluZXMgc3RhZ2VzIGFuZCBqb2JzIGZvciB0aGUgZGVwbG95bWVudCB3b3JrZmxvdy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdpdGxhYkNES1BpcGVsaW5lIGV4dGVuZHMgQ0RLUGlwZWxpbmUge1xuXG4gIC8qKiBJbmRpY2F0ZXMgaWYgdmVyc2lvbmVkIGFydGlmYWN0cyBhcmUgcmVxdWlyZWQuIEN1cnJlbnRseSBzZXQgdG8gZmFsc2UgICovXG4gIHB1YmxpYyByZWFkb25seSBuZWVkc1ZlcnNpb25lZEFydGlmYWN0czogYm9vbGVhbjtcblxuICAvKiogVGhlIERvY2tlciBpbWFnZSB1c2VkIGZvciBwaXBlbGluZSBqb2JzLiBEZWZhdWx0cyB0byBhIHNwZWNpZmllZCBpbWFnZSBvciBhIGRlZmF1bHQgdmFsdWUuICovXG4gIHB1YmxpYyByZWFkb25seSBqb2JJbWFnZTogc3RyaW5nO1xuXG4gIC8qKiBHaXRMYWIgQ0kvQ0QgY29uZmlndXJhdGlvbiBvYmplY3QuICovXG4gIHB1YmxpYyByZWFkb25seSBjb25maWc6IGdpdGxhYi5HaXRsYWJDb25maWd1cmF0aW9uO1xuXG4gIC8qKiBMaXN0IG9mIGRlcGxveW1lbnQgc3RhZ2VzIGFzIHN0cmluZ3MuICovXG4gIHByaXZhdGUgZGVwbG95bWVudFN0YWdlczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBpbnN0YW5jZSBvZiBHaXRsYWJDREtQaXBlbGluZSwgaW5pdGlhbGl6aW5nIHRoZSBHaXRMYWIgQ0kvQ0QgY29uZmlndXJhdGlvblxuICAgKiBhbmQgc2V0dGluZyB1cCB0aGUgbmVjZXNzYXJ5IHN0YWdlcyBhbmQgam9icyBmb3IgQVdTIENESyBkZXBsb3ltZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge2F3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwfSBhcHAgLSBUaGUgQVdTIENESyBhcHAgYXNzb2NpYXRlZCB3aXRoIHRoZSBwaXBlbGluZS5cbiAgICogQHBhcmFtIHtHaXRsYWJDREtQaXBlbGluZU9wdGlvbnN9IG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBwaXBlbGluZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGFwcDogYXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHAsIHByaXZhdGUgb3B0aW9uczogR2l0bGFiQ0RLUGlwZWxpbmVPcHRpb25zKSB7XG4gICAgc3VwZXIoYXBwLCBvcHRpb25zKTtcblxuICAgIC8vIFRPRE8gdXNlIGV4aXN0aW5nIGNvbmZpZyBpZiBwb3NzaWJsZVxuICAgIHRoaXMuY29uZmlnID0gbmV3IGdpdGxhYi5HaXRsYWJDb25maWd1cmF0aW9uKGFwcCwge1xuICAgICAgc3RhZ2VzOiBbXSxcbiAgICAgIGpvYnM6IHt9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cyA9IGZhbHNlOyAvLyBvcHRpb25zLnB1Ymxpc2hlZENsb3VkQXNzZW1ibGllcyA/PyBmYWxzZTtcbiAgICB0aGlzLmpvYkltYWdlID0gb3B0aW9ucy5pbWFnZSA/PyAnaW1hZ2U6IGpzaWkvc3VwZXJjaGFpbjoxLWJ1c3Rlci1zbGltLW5vZGUxOCc7XG5cbiAgICB0aGlzLnNldHVwU25pcHBldHMoKTtcblxuICAgIHRoaXMuY3JlYXRlU3ludGgoKTtcblxuICAgIHRoaXMuY3JlYXRlQXNzZXRVcGxvYWQoKTtcblxuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2Ygb3B0aW9ucy5zdGFnZXMpIHtcbiAgICAgIHRoaXMuY3JlYXRlRGVwbG95bWVudChzdGFnZSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiAob3B0aW9ucy5pbmRlcGVuZGVudFN0YWdlcyA/PyBbXSkpIHtcbiAgICAgIHRoaXMuY3JlYXRlSW5kZXBlbmRlbnREZXBsb3ltZW50KHN0YWdlKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5mZWF0dXJlU3RhZ2VzKSB7XG4gICAgICB0aGlzLmNyZWF0ZUZlYXR1cmVXb3JrZmxvd3MoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCBiYXNlIGpvYiBzbmlwcGV0cyBmb3IgYXJ0aWZhY3QgaGFuZGxpbmcgYW5kIEFXUyBjb25maWd1cmF0aW9uLlxuICAgKiBUaGlzIG1ldGhvZCBkZWZpbmVzIHJldXNhYmxlIGpvYiBjb25maWd1cmF0aW9ucyB0byBiZSBleHRlbmRlZCBieSBzcGVjaWZpYyBwaXBlbGluZSBqb2JzLFxuICAgKiBmYWNpbGl0YXRpbmcgYXJ0aWZhY3QgY2FjaGluZyBhbmQgQVdTIGF1dGhlbnRpY2F0aW9uIHNldHVwLlxuICAgKi9cbiAgcHJvdGVjdGVkIHNldHVwU25pcHBldHMoKSB7XG4gICAgY29uc3QgY2RrT3V0UGF0aCA9IHRoaXMud29ya2luZ0RpcmVjdG9yeSA/IGAke3RoaXMud29ya2luZ0RpcmVjdG9yeX0vY2RrLm91dGAgOiAnY2RrLm91dCc7XG4gICAgY29uc3QgY2RrT3V0cHV0c1BhdGggPSB0aGlzLndvcmtpbmdEaXJlY3RvcnkgPyBgJHt0aGlzLndvcmtpbmdEaXJlY3Rvcnl9L2Nkay1vdXRwdXRzLSouanNvbmAgOiAnY2RrLW91dHB1dHMtKi5qc29uJztcblxuICAgIHRoaXMuY29uZmlnLmFkZEpvYnMoe1xuICAgICAgW2AuJHt0aGlzLm5hbWVQcmVmaXh9YXJ0aWZhY3RzX2Nka2BdOiB7XG4gICAgICAgIGFydGlmYWN0czoge1xuICAgICAgICAgIHdoZW46IGdpdGxhYi5DYWNoZVdoZW4uT05fU1VDQ0VTUyxcbiAgICAgICAgICBleHBpcmVJbjogJzMwIGRheXMnLFxuICAgICAgICAgIG5hbWU6ICdDREsgQXNzZW1ibHkgLSAkQ0lfSk9CX05BTUUtJENJX0NPTU1JVF9SRUZfU0xVRycsXG4gICAgICAgICAgdW50cmFja2VkOiBmYWxzZSxcbiAgICAgICAgICBwYXRoczogW2Nka091dFBhdGhdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFtgLiR7dGhpcy5uYW1lUHJlZml4fWFydGlmYWN0c19jZGtkZXBsb3lgXToge1xuICAgICAgICBhcnRpZmFjdHM6IHtcbiAgICAgICAgICB3aGVuOiBnaXRsYWIuQ2FjaGVXaGVuLk9OX1NVQ0NFU1MsXG4gICAgICAgICAgZXhwaXJlSW46ICczMCBkYXlzJyxcbiAgICAgICAgICBuYW1lOiAnQ0RLIE91dHB1dHMgLSAkQ0lfSk9CX05BTUUtJENJX0NPTU1JVF9SRUZfU0xVRycsXG4gICAgICAgICAgdW50cmFja2VkOiBmYWxzZSxcbiAgICAgICAgICBwYXRoczogW2Nka091dHB1dHNQYXRoXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBbYC4ke3RoaXMubmFtZVByZWZpeH1hd3NfYmFzZWBdOiB7XG4gICAgICAgIGltYWdlOiB7IG5hbWU6IHRoaXMuam9iSW1hZ2UgfSxcbiAgICAgICAgaWRUb2tlbnM6IHtcbiAgICAgICAgICBBV1NfVE9LRU46IHtcbiAgICAgICAgICAgIGF1ZDogJ2h0dHBzOi8vc3RzLmFtYXpvbmF3cy5jb20nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIENJOiAndHJ1ZScsXG4gICAgICAgICAgLy8gTlBNX1JFR0lTVFJZOiAneHh4J1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVGZWF0dXJlV29ya2Zsb3dzKCk6IHZvaWQge1xuICAgIC8vIFRPRE8gZGVwbG95IGFuZCBkZXN0cm95IGZlYXR1cmUgc3RhZ2VzXG4gIH1cblxuICAvKipcbiAgICogUHJlcGVuZHMgYSBgY2RgIGNvbW1hbmQgdG8gdGhlIHNjcmlwdCBhcnJheSB3aGVuIHdvcmtpbmdEaXJlY3RvcnkgaXMgc2V0LlxuICAgKi9cbiAgcHJpdmF0ZSB3aXRoV29ya2luZ0RpcmVjdG9yeShjb21tYW5kczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgaWYgKHRoaXMud29ya2luZ0RpcmVjdG9yeSkge1xuICAgICAgcmV0dXJuIFtgY2QgJHt0aGlzLndvcmtpbmdEaXJlY3Rvcnl9YCwgLi4uY29tbWFuZHNdO1xuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZHM7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgJ3N5bnRoJyBzdGFnZSBvZiB0aGUgcGlwZWxpbmUgdG8gc3ludGhlc2l6ZSBBV1MgQ0RLIGFwcGxpY2F0aW9ucy5cbiAgICogVGhpcyBtZXRob2QgY29uZmlndXJlcyB0aGUgam9iIHRvIGV4ZWN1dGUgQ0RLIHN5bnRoZXNpcywgYXBwbHlpbmcgdGhlIGFwcHJvcHJpYXRlIElBTSByb2xlXG4gICAqIGZvciBBV1MgY29tbWFuZHMgYW5kIHNwZWNpZnlpbmcgcnVubmVyIHRhZ3MgZm9yIGpvYiBleGVjdXRpb24uIFRoZSBzeW50aGVzaXplZCBvdXRwdXRzIGFyZVxuICAgKiBjb25maWd1cmVkIHRvIGJlIGNhY2hlZCBhcyBhcnRpZmFjdHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlU3ludGgoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHM6IFBpcGVsaW5lU3RlcFtdID0gW1xuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZVN5bnRoU3RlcCgpLFxuICAgIF07XG5cbiAgICBjb25zdCBnaXRsYWJTdGVwcyA9IHN0ZXBzLm1hcChzID0+IHMudG9HaXRsYWIoKSk7XG5cbiAgICB0aGlzLmNvbmZpZy5hZGRTdGFnZXMoJ3N5bnRoJyk7XG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICBbYCR7dGhpcy5uYW1lUHJlZml4fXN5bnRoYF06IHtcbiAgICAgICAgZXh0ZW5kczogW2AuJHt0aGlzLm5hbWVQcmVmaXh9YXdzX2Jhc2VgLCBgLiR7dGhpcy5uYW1lUHJlZml4fWFydGlmYWN0c19jZGtgLCAuLi5naXRsYWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5leHRlbnNpb25zKV0sXG4gICAgICAgIG5lZWRzOiBnaXRsYWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyksXG4gICAgICAgIHN0YWdlOiAnc3ludGgnLFxuICAgICAgICB0YWdzOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uc3ludGggPz8gdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRlZmF1bHQsXG4gICAgICAgIHNjcmlwdDogdGhpcy53aXRoV29ya2luZ0RpcmVjdG9yeShnaXRsYWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5jb21tYW5kcykpLFxuICAgICAgICB2YXJpYWJsZXM6IGdpdGxhYlN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgdGhlIGFzc2V0IHB1Ymxpc2hpbmcgc3RhZ2Ugb2YgdGhlIHBpcGVsaW5lLlxuICAgKiBUaGlzIG1ldGhvZCBjb25maWd1cmVzIGEgam9iIHRvIHVwbG9hZCBzeW50aGVzaXplZCBhc3NldHMgdG8gQVdTLCBoYW5kbGluZyBJQU0gcm9sZVxuICAgKiBhdXRoZW50aWNhdGlvbiBhbmQgc3BlY2lmeWluZyBydW5uZXIgdGFncy4gSXQgZGVwZW5kcyBvbiB0aGUgc3VjY2Vzc2Z1bCBjb21wbGV0aW9uXG4gICAqIG9mIHRoZSAnc3ludGgnIHN0YWdlLCBlbnN1cmluZyBhc3NldHMgYXJlIG9ubHkgcHVibGlzaGVkIGFmdGVyIHN1Y2Nlc3NmdWwgc3ludGhlc2lzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUFzc2V0VXBsb2FkKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXBzID0gW1xuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZUFzc2V0VXBsb2FkU3RlcCgpLFxuICAgIF07XG5cbiAgICBpZiAodGhpcy5uZWVkc1ZlcnNpb25lZEFydGlmYWN0cykge1xuICAgICAgc3RlcHMucHVzaCh0aGlzLnByb3ZpZGVBc3NlbWJseVVwbG9hZFN0ZXAoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZ2l0bGFiU3RlcHMgPSBzdGVwcy5tYXAocyA9PiBzLnRvR2l0bGFiKCkpO1xuXG4gICAgdGhpcy5jb25maWcuYWRkU3RhZ2VzKCdwdWJsaXNoX2Fzc2V0cycpO1xuICAgIHRoaXMuY29uZmlnLmFkZEpvYnMoe1xuICAgICAgW2Ake3RoaXMubmFtZVByZWZpeH1wdWJsaXNoX2Fzc2V0c2BdOiB7XG4gICAgICAgIGV4dGVuZHM6IFtgLiR7dGhpcy5uYW1lUHJlZml4fWF3c19iYXNlYCwgLi4uZ2l0bGFiU3RlcHMuZmxhdE1hcChzID0+IHMuZXh0ZW5zaW9ucyldLFxuICAgICAgICBzdGFnZTogJ3B1Ymxpc2hfYXNzZXRzJyxcbiAgICAgICAgdGFnczogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmFzc2V0UHVibGlzaGluZyA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVmYXVsdCxcbiAgICAgICAgbmVlZHM6IFt7IGpvYjogYCR7dGhpcy5uYW1lUHJlZml4fXN5bnRoYCwgYXJ0aWZhY3RzOiB0cnVlIH0sIC4uLmdpdGxhYlN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKV0sXG4gICAgICAgIHNjcmlwdDogdGhpcy53aXRoV29ya2luZ0RpcmVjdG9yeShnaXRsYWJTdGVwcy5mbGF0TWFwKHMgPT4gcy5jb21tYW5kcykpLFxuICAgICAgICB2YXJpYWJsZXM6IGdpdGxhYlN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIER5bmFtaWNhbGx5IGNyZWF0ZXMgZGVwbG95bWVudCBzdGFnZXMgYmFzZWQgb24gdGhlIGRlcGxveW1lbnQgY29uZmlndXJhdGlvbi5cbiAgICogRm9yIGVhY2ggcHJvdmlkZWQgZGVwbG95bWVudCBzdGFnZSwgdGhpcyBtZXRob2Qgc2V0cyB1cCBqb2JzIGZvciAnZGlmZicgYW5kICdkZXBsb3knIGFjdGlvbnMsXG4gICAqIGFwcGx5aW5nIHRoZSBjb3JyZWN0IElBTSByb2xlcyBhbmQgcnVubmVyIHRhZ3MuIEl0IHN1cHBvcnRzIGNvbmRpdGlvbmFsIG1hbnVhbCBhcHByb3ZhbCBmb3JcbiAgICogZGVwbG95bWVudCBzdGFnZXMsIHByb3ZpZGluZyBmbGV4aWJpbGl0eSBpbiB0aGUgZGVwbG95bWVudCB3b3JrZmxvdy5cbiAgICpcbiAgICogQHBhcmFtIHtEZXBsb3ltZW50U3RhZ2V9IHN0YWdlIC0gVGhlIGRlcGxveW1lbnQgc3RhZ2UgY29uZmlndXJhdGlvbiB0byBzZXQgdXAuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlRGVwbG95bWVudChzdGFnZTogRGVwbG95bWVudFN0YWdlKTogdm9pZCB7XG4gICAgY29uc3QgZGlmZlN0ZXBzID0gW1xuICAgICAgdGhpcy5wcm92aWRlSW5zdGFsbFN0ZXAoKSxcbiAgICAgIHRoaXMucHJvdmlkZURpZmZTdGVwKHN0YWdlLCBzdGFnZS5kaWZmVHlwZSA9PT0gQ2RrRGlmZlR5cGUuRkFTVCksXG4gICAgXS5tYXAocyA9PiBzLnRvR2l0bGFiKCkpO1xuXG5cbiAgICBjb25zdCBkZXBsb3lTdGVwcyA9IFtcbiAgICAgIHRoaXMucHJvdmlkZUluc3RhbGxTdGVwKCksXG4gICAgICB0aGlzLnByb3ZpZGVEZXBsb3lTdGVwKHN0YWdlKSxcbiAgICAgIG5ldyBDZGtPdXRwdXRzU3VtbWFyeVN0ZXAodGhpcy5wcm9qZWN0LCB7IHN0YWdlTmFtZTogc3RhZ2UubmFtZSB9KSxcbiAgICBdLm1hcChzID0+IHMudG9HaXRsYWIoKSk7XG5cbiAgICB0aGlzLmNvbmZpZy5hZGRTdGFnZXMoc3RhZ2UubmFtZSk7XG4gICAgdGhpcy5jb25maWcuYWRkSm9icyh7XG4gICAgICAuLi4oc3RhZ2UuZGlmZlR5cGUgIT09IENka0RpZmZUeXBlLk5PTkUpICYmIHtcbiAgICAgICAgW2Ake3RoaXMubmFtZVByZWZpeH1kaWZmLSR7c3RhZ2UubmFtZX1gXToge1xuICAgICAgICAgIGV4dGVuZHM6IFtgLiR7dGhpcy5uYW1lUHJlZml4fWF3c19iYXNlYCwgLi4uZGlmZlN0ZXBzLmZsYXRNYXAocyA9PiBzLmV4dGVuc2lvbnMpXSxcbiAgICAgICAgICBzdGFnZTogc3RhZ2UubmFtZSxcbiAgICAgICAgICB0YWdzOiB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGlmZj8uW3N0YWdlLm5hbWVdID8/IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kZXBsb3ltZW50Py5bc3RhZ2UubmFtZV0gPz8gdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRlZmF1bHQsXG4gICAgICAgICAgb25seToge1xuICAgICAgICAgICAgcmVmczogW3RoaXMuYnJhbmNoTmFtZV0sXG4gICAgICAgICAgICAuLi50aGlzLmJhc2VPcHRpb25zLnBhdGhzICYmIHsgY2hhbmdlczogdGhpcy5iYXNlT3B0aW9ucy5wYXRocyB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmVlZHM6IFtcbiAgICAgICAgICAgIHsgam9iOiBgJHt0aGlzLm5hbWVQcmVmaXh9c3ludGhgLCBhcnRpZmFjdHM6IHRydWUgfSxcbiAgICAgICAgICAgIHsgam9iOiBgJHt0aGlzLm5hbWVQcmVmaXh9cHVibGlzaF9hc3NldHNgIH0sXG4gICAgICAgICAgICAuLi5kaWZmU3RlcHMuZmxhdE1hcChzID0+IHMubmVlZHMpLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgc2NyaXB0OiB0aGlzLndpdGhXb3JraW5nRGlyZWN0b3J5KGRpZmZTdGVwcy5mbGF0TWFwKHMgPT4gcy5jb21tYW5kcykpLFxuICAgICAgICAgIHZhcmlhYmxlczogZGlmZlN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgW2Ake3RoaXMubmFtZVByZWZpeH1kZXBsb3ktJHtzdGFnZS5uYW1lfWBdOiB7XG4gICAgICAgIGV4dGVuZHM6IFtgLiR7dGhpcy5uYW1lUHJlZml4fWF3c19iYXNlYCwgYC4ke3RoaXMubmFtZVByZWZpeH1hcnRpZmFjdHNfY2RrZGVwbG95YCwgLi4uZGVwbG95U3RlcHMuZmxhdE1hcChzID0+IHMuZXh0ZW5zaW9ucyldLFxuICAgICAgICBzdGFnZTogc3RhZ2UubmFtZSxcbiAgICAgICAgdGFnczogdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRlcGxveW1lbnQ/LltzdGFnZS5uYW1lXSA/PyB0aGlzLm9wdGlvbnMucnVubmVyVGFncz8uZGVmYXVsdCxcbiAgICAgICAgLi4uc3RhZ2UubWFudWFsQXBwcm92YWwgJiYge1xuICAgICAgICAgIHdoZW46IGdpdGxhYi5Kb2JXaGVuLk1BTlVBTCxcbiAgICAgICAgfSxcbiAgICAgICAgb25seToge1xuICAgICAgICAgIHJlZnM6IFt0aGlzLmJyYW5jaE5hbWVdLFxuICAgICAgICAgIC4uLnRoaXMuYmFzZU9wdGlvbnMucGF0aHMgJiYgeyBjaGFuZ2VzOiB0aGlzLmJhc2VPcHRpb25zLnBhdGhzIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG5lZWRzOiBbXG4gICAgICAgICAgeyBqb2I6IGAke3RoaXMubmFtZVByZWZpeH1zeW50aGAsIGFydGlmYWN0czogdHJ1ZSB9LFxuICAgICAgICAgIHsgam9iOiBgJHt0aGlzLm5hbWVQcmVmaXh9cHVibGlzaF9hc3NldHNgIH0sXG4gICAgICAgICAgLi4uKHN0YWdlLmRpZmZUeXBlICE9PSBDZGtEaWZmVHlwZS5OT05FKSA/IFt7IGpvYjogYCR7dGhpcy5uYW1lUHJlZml4fWRpZmYtJHtzdGFnZS5uYW1lfWAgfV0gOiBbXSxcbiAgICAgICAgICAuLi5kZXBsb3lTdGVwcy5mbGF0TWFwKHMgPT4gcy5uZWVkcyksXG4gICAgICAgIF0sXG4gICAgICAgIHNjcmlwdDogdGhpcy53aXRoV29ya2luZ0RpcmVjdG9yeShkZXBsb3lTdGVwcy5mbGF0TWFwKHMgPT4gcy5jb21tYW5kcykpLFxuICAgICAgICB2YXJpYWJsZXM6IGRlcGxveVN0ZXBzLnJlZHVjZSgoYWNjLCBzdGVwKSA9PiAoeyAuLi5hY2MsIC4uLnN0ZXAuZW52IH0pLCB7fSksXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMuZGVwbG95bWVudFN0YWdlcy5wdXNoKHN0YWdlLm5hbWUpO1xuICB9XG5cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGpvYiB0byBkZXBsb3kgdGhlIENESyBhcHBsaWNhdGlvbiB0byBBV1MuXG4gICAqIEBwYXJhbSBzdGFnZSAtIFRoZSBpbmRlcGVuZGVudCBzdGFnZSB0byBjcmVhdGUuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlSW5kZXBlbmRlbnREZXBsb3ltZW50KHN0YWdlOiBJbmRlcGVuZGVudFN0YWdlKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHMgPSBbXG4gICAgICB0aGlzLnByb3ZpZGVJbnN0YWxsU3RlcCgpLFxuICAgICAgdGhpcy5wcm92aWRlU3ludGhTdGVwKCksXG4gICAgICAuLi4oc3RhZ2UuZGlmZlR5cGUgIT09IENka0RpZmZUeXBlLk5PTkUgPyBbdGhpcy5wcm92aWRlRGlmZlN0ZXAoc3RhZ2UsIHN0YWdlLmRpZmZUeXBlID09IENka0RpZmZUeXBlLkZBU1QpXSA6IFtdKSxcbiAgICAgIHRoaXMucHJvdmlkZURlcGxveVN0ZXAoc3RhZ2UpLFxuICAgICAgbmV3IENka091dHB1dHNTdW1tYXJ5U3RlcCh0aGlzLnByb2plY3QsIHsgc3RhZ2VOYW1lOiBzdGFnZS5uYW1lIH0pLFxuICAgIF0ubWFwKHMgPT4gcy50b0dpdGxhYigpKTtcblxuICAgIHRoaXMuY29uZmlnLmFkZFN0YWdlcyhzdGFnZS5uYW1lKTtcbiAgICB0aGlzLmNvbmZpZy5hZGRKb2JzKHtcbiAgICAgIFtgJHt0aGlzLm5hbWVQcmVmaXh9ZGVwbG95LSR7c3RhZ2UubmFtZX1gXToge1xuICAgICAgICBleHRlbmRzOiBbYC4ke3RoaXMubmFtZVByZWZpeH1hd3NfYmFzZWAsIGAuJHt0aGlzLm5hbWVQcmVmaXh9YXJ0aWZhY3RzX2Nka2RlcGxveWAsIC4uLnN0ZXBzLmZsYXRNYXAocyA9PiBzLmV4dGVuc2lvbnMpXSxcbiAgICAgICAgc3RhZ2U6IHN0YWdlLm5hbWUsXG4gICAgICAgIHRhZ3M6IHRoaXMub3B0aW9ucy5ydW5uZXJUYWdzPy5kZXBsb3ltZW50Py5bc3RhZ2UubmFtZV0gPz8gdGhpcy5vcHRpb25zLnJ1bm5lclRhZ3M/LmRlZmF1bHQsXG4gICAgICAgIC4uLnN0YWdlLmRlcGxveU9uUHVzaCAmJiB7XG4gICAgICAgICAgb25seToge1xuICAgICAgICAgICAgcmVmczogW3RoaXMuYnJhbmNoTmFtZV0sXG4gICAgICAgICAgICAuLi50aGlzLmJhc2VPcHRpb25zLnBhdGhzICYmIHsgY2hhbmdlczogdGhpcy5iYXNlT3B0aW9ucy5wYXRocyB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC4uLiFzdGFnZS5kZXBsb3lPblB1c2ggJiYge1xuICAgICAgICAgIHdoZW46IGdpdGxhYi5Kb2JXaGVuLk1BTlVBTCxcbiAgICAgICAgfSxcbiAgICAgICAgbmVlZHM6IHN0ZXBzLmZsYXRNYXAocyA9PiBzLm5lZWRzKSxcbiAgICAgICAgc2NyaXB0OiB0aGlzLndpdGhXb3JraW5nRGlyZWN0b3J5KHN0ZXBzLmZsYXRNYXAocyA9PiBzLmNvbW1hbmRzKSksXG4gICAgICAgIHZhcmlhYmxlczogc3RlcHMucmVkdWNlKChhY2MsIHN0ZXApID0+ICh7IC4uLmFjYywgLi4uc3RlcC5lbnYgfSksIHt9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgfVxuXG4gIHB1YmxpYyBlbmdpbmVUeXBlKCk6IFBpcGVsaW5lRW5naW5lIHtcbiAgICByZXR1cm4gUGlwZWxpbmVFbmdpbmUuR0lUTEFCO1xuICB9XG5cbn1cblxuIl19
|
package/lib/drift/base.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.DriftDetectionWorkflow = void 0;
|
|
5
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
@@ -7,6 +6,13 @@ const projen_1 = require("projen");
|
|
|
7
6
|
const javascript_1 = require("projen/lib/javascript");
|
|
8
7
|
const steps_1 = require("../steps");
|
|
9
8
|
class DriftDetectionWorkflow extends projen_1.Component {
|
|
9
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.DriftDetectionWorkflow", version: "0.3.23" };
|
|
10
|
+
name;
|
|
11
|
+
schedule;
|
|
12
|
+
stages;
|
|
13
|
+
preInstallSteps;
|
|
14
|
+
/** Prefix for workflow files and artifact names to prevent collisions in monorepos. */
|
|
15
|
+
namePrefix;
|
|
10
16
|
constructor(project, options) {
|
|
11
17
|
super(project);
|
|
12
18
|
this.namePrefix = options.pipelineName ? `${options.pipelineName}-` : '';
|
|
@@ -41,6 +47,4 @@ class DriftDetectionWorkflow extends projen_1.Component {
|
|
|
41
47
|
}
|
|
42
48
|
}
|
|
43
49
|
exports.DriftDetectionWorkflow = DriftDetectionWorkflow;
|
|
44
|
-
|
|
45
|
-
DriftDetectionWorkflow[_a] = { fqn: "projen-pipelines.DriftDetectionWorkflow", version: "0.3.21" };
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kcmlmdC9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQTRDO0FBQzVDLHNEQUEyRDtBQUMzRCxvQ0FBMEU7QUFnRzFFLE1BQXNCLHNCQUF1QixTQUFRLGtCQUFTO0lBUzVELFlBQVksT0FBZ0IsRUFBRSxPQUFzQztRQUNsRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekUsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLGlCQUFpQixDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxXQUFXLENBQUM7UUFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUc7WUFDckIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO1lBQ2xDLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQztTQUMzQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSyx5QkFBeUIsQ0FBQyxPQUFnQjtRQUNoRCxNQUFNLEdBQUcsR0FBSSxPQUFlLENBQUMsT0FBTyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDaEMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUVqQyxJQUFJLEdBQUcsQ0FBQyxjQUFjLEtBQUssK0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLHFCQUFhLENBQUMsT0FBTyxFQUFFO2dCQUNwQyxPQUFPLEVBQUUsR0FBRyxDQUFDLFdBQVc7YUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDO2FBQU0sSUFBSSxHQUFHLENBQUMsY0FBYyxLQUFLLCtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSx5QkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7O0FBNUNILHdEQThDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgUHJvamVjdCB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBOb2RlUGFja2FnZU1hbmFnZXIgfSBmcm9tICdwcm9qZW4vbGliL2phdmFzY3JpcHQnO1xuaW1wb3J0IHsgUGlwZWxpbmVTdGVwLCBQbnBtU2V0dXBTdGVwLCBDb3JlcGFja1NldHVwU3RlcCB9IGZyb20gJy4uL3N0ZXBzJztcblxuZXhwb3J0IGludGVyZmFjZSBEcmlmdERldGVjdGlvblN0YWdlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBV1MgcmVnaW9uIGZvciB0aGlzIHN0YWdlXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogUm9sZSB0byBhc3N1bWUgZm9yIGRyaWZ0IGRldGVjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogSnVtcCByb2xlIHRvIGFzc3VtZSBiZWZvcmUgdGhlIG1haW4gcm9sZVxuICAgKi9cbiAgcmVhZG9ubHkganVtcFJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFN0YWNrIG5hbWVzIHRvIGNoZWNrIGluIHRoaXMgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmYWlsIGlmIGRyaWZ0IGlzIGRldGVjdGVkXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGZhaWxPbkRyaWZ0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGlzIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJpZnRFcnJvckhhbmRsZXIge1xuICAvKipcbiAgICogUGF0dGVybiB0byBtYXRjaCBzdGFjayBuYW1lc1xuICAgKi9cbiAgcmVhZG9ubHkgcGF0dGVybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY3Rpb24gdG8gdGFrZSB3aGVuIHBhdHRlcm4gbWF0Y2hlc1xuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uOiAnaWdub3JlJyB8ICd3YXJuJyB8ICdmYWlsJztcblxuICAvKipcbiAgICogT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5XG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERyaWZ0RGV0ZWN0aW9uV29ya2Zsb3dPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIG5hbWUgZm9yIHRoaXMgcGlwZWxpbmUsIHVzZWQgYXMgYSBwcmVmaXggZm9yIHdvcmtmbG93IGZpbGVzXG4gICAqIGFuZCBhcnRpZmFjdCBuYW1lcyB0byBwcmV2ZW50IGNvbGxpc2lvbnMgaW4gbW9ub3JlcG9zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHByZWZpeFxuICAgKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSB3b3JrZmxvd1xuICAgKiBAZGVmYXVsdCBcImRyaWZ0LWRldGVjdGlvblwiXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcm9uIHNjaGVkdWxlIGZvciBkcmlmdCBkZXRlY3Rpb25cbiAgICogQGRlZmF1bHQgXCIwIDAgKiAqICpcIiAoZGFpbHkgYXQgbWlkbmlnaHQpXG4gICAqL1xuICByZWFkb25seSBzY2hlZHVsZT86IHN0cmluZztcblxuICAvKipcbiAgICogRHJpZnQgZGV0ZWN0aW9uIGNvbmZpZ3VyYXRpb25zIGZvciBkaWZmZXJlbnQgZW52aXJvbm1lbnRzXG4gICAqL1xuICByZWFkb25seSBzdGFnZXM6IERyaWZ0RGV0ZWN0aW9uU3RhZ2VPcHRpb25zW107XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgc3RlcHMgdG8gZXhlY3V0ZSBiZWZvcmUgaW5zdGFsbGluZyBkZXBlbmRlbmNpZXMuXG4gICAqIFRoZXNlIHN0ZXBzIGFyZSBleGVjdXRlZCBiZWZvcmUgdGhlIHBhY2thZ2UgbWFuYWdlciBzZXR1cCBhbmQgaW5zdGFsbCBjb21tYW5kLlxuICAgKlxuICAgKiBOb3RlOiBQYWNrYWdlIG1hbmFnZXIgc2V0dXAgKGUuZy4sIFBucG1TZXR1cFN0ZXAgZm9yIHBucG0gb3IgQ29yZXBhY2tTZXR1cFN0ZXBcbiAgICogZm9yIFlhcm4gQmVycnkpIGlzIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgZnJvbSB0aGUgcHJvamVjdCBhbmQgYWx3YXlzIGluY2x1ZGVkLlxuICAgKiBVc2UgdGhpcyBvcHRpb24gZm9yIGFueSBhZGRpdGlvbmFsIHByZS1pbnN0YWxsIHN0ZXBzIHlvdSBuZWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgcHJlLWluc3RhbGwgc3RlcHNcbiAgICovXG4gIHJlYWRvbmx5IHByZUluc3RhbGxTdGVwcz86IFBpcGVsaW5lU3RlcFtdO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRHJpZnREZXRlY3Rpb25Xb3JrZmxvdyBleHRlbmRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBzY2hlZHVsZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RhZ2VzOiBEcmlmdERldGVjdGlvblN0YWdlT3B0aW9uc1tdO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJlSW5zdGFsbFN0ZXBzOiBQaXBlbGluZVN0ZXBbXTtcblxuICAvKiogUHJlZml4IGZvciB3b3JrZmxvdyBmaWxlcyBhbmQgYXJ0aWZhY3QgbmFtZXMgdG8gcHJldmVudCBjb2xsaXNpb25zIGluIG1vbm9yZXBvcy4gKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5hbWVQcmVmaXg6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBEcmlmdERldGVjdGlvbldvcmtmbG93T3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy5uYW1lUHJlZml4ID0gb3B0aW9ucy5waXBlbGluZU5hbWUgPyBgJHtvcHRpb25zLnBpcGVsaW5lTmFtZX0tYCA6ICcnO1xuICAgIHRoaXMubmFtZSA9IG9wdGlvbnMubmFtZSA/PyAnZHJpZnQtZGV0ZWN0aW9uJztcbiAgICB0aGlzLnNjaGVkdWxlID0gb3B0aW9ucy5zY2hlZHVsZSA/PyAnMCAwICogKiAqJztcbiAgICB0aGlzLnN0YWdlcyA9IG9wdGlvbnMuc3RhZ2VzO1xuICAgIHRoaXMucHJlSW5zdGFsbFN0ZXBzID0gW1xuICAgICAgLi4uKG9wdGlvbnMucHJlSW5zdGFsbFN0ZXBzID8/IFtdKSxcbiAgICAgIC4uLnRoaXMuZGV0ZWN0UGFja2FnZU1hbmFnZXJTdGVwcyhwcm9qZWN0KSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVjdHMgdGhlIHBhY2thZ2UgbWFuYWdlciBmcm9tIHRoZSBwcm9qZWN0IGFuZCByZXR1cm5zIGFwcHJvcHJpYXRlIHNldHVwIHN0ZXBzLlxuICAgKiBJZiB0aGUgcHJvamVjdCBpcyBhIE5vZGVQcm9qZWN0IChoYXMgYSBgcGFja2FnZWAgcHJvcGVydHkpLCBpdCBpbnNwZWN0cyB0aGVcbiAgICogcGFja2FnZU1hbmFnZXIgdG8gZGV0ZXJtaW5lIGlmIHBucG0gb3IgWWFybiBCZXJyeSBzZXR1cCBpcyBuZWVkZWQuXG4gICAqL1xuICBwcml2YXRlIGRldGVjdFBhY2thZ2VNYW5hZ2VyU3RlcHMocHJvamVjdDogUHJvamVjdCk6IFBpcGVsaW5lU3RlcFtdIHtcbiAgICBjb25zdCBwa2cgPSAocHJvamVjdCBhcyBhbnkpLnBhY2thZ2U7XG4gICAgaWYgKCFwa2cgfHwgIXBrZy5wYWNrYWdlTWFuYWdlcikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHN0ZXBzOiBQaXBlbGluZVN0ZXBbXSA9IFtdO1xuXG4gICAgaWYgKHBrZy5wYWNrYWdlTWFuYWdlciA9PT0gTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE0pIHtcbiAgICAgIHN0ZXBzLnB1c2gobmV3IFBucG1TZXR1cFN0ZXAocHJvamVjdCwge1xuICAgICAgICB2ZXJzaW9uOiBwa2cucG5wbVZlcnNpb24sXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIGlmIChwa2cucGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0JFUlJZKSB7XG4gICAgICBzdGVwcy5wdXNoKG5ldyBDb3JlcGFja1NldHVwU3RlcChwcm9qZWN0KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0ZXBzO1xuICB9XG5cbn1cbiJdfQ==
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kcmlmdC9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxtQ0FBNEM7QUFDNUMsc0RBQTJEO0FBQzNELG9DQUEwRTtBQWdHMUUsTUFBc0Isc0JBQXVCLFNBQVEsa0JBQVM7O0lBQzVDLElBQUksQ0FBUztJQUNiLFFBQVEsQ0FBUztJQUNkLE1BQU0sQ0FBK0I7SUFDckMsZUFBZSxDQUFpQjtJQUVuRCx1RkFBdUY7SUFDcEUsVUFBVSxDQUFTO0lBRXRDLFlBQVksT0FBZ0IsRUFBRSxPQUFzQztRQUNsRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekUsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLGlCQUFpQixDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxXQUFXLENBQUM7UUFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUc7WUFDckIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO1lBQ2xDLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQztTQUMzQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSyx5QkFBeUIsQ0FBQyxPQUFnQjtRQUNoRCxNQUFNLEdBQUcsR0FBSSxPQUFlLENBQUMsT0FBTyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDaEMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUVqQyxJQUFJLEdBQUcsQ0FBQyxjQUFjLEtBQUssK0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLHFCQUFhLENBQUMsT0FBTyxFQUFFO2dCQUNwQyxPQUFPLEVBQUUsR0FBRyxDQUFDLFdBQVc7YUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDO2FBQU0sSUFBSSxHQUFHLENBQUMsY0FBYyxLQUFLLCtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSx5QkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7O0FBNUNILHdEQThDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgUHJvamVjdCB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBOb2RlUGFja2FnZU1hbmFnZXIgfSBmcm9tICdwcm9qZW4vbGliL2phdmFzY3JpcHQnO1xuaW1wb3J0IHsgUGlwZWxpbmVTdGVwLCBQbnBtU2V0dXBTdGVwLCBDb3JlcGFja1NldHVwU3RlcCB9IGZyb20gJy4uL3N0ZXBzJztcblxuZXhwb3J0IGludGVyZmFjZSBEcmlmdERldGVjdGlvblN0YWdlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBV1MgcmVnaW9uIGZvciB0aGlzIHN0YWdlXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogUm9sZSB0byBhc3N1bWUgZm9yIGRyaWZ0IGRldGVjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogSnVtcCByb2xlIHRvIGFzc3VtZSBiZWZvcmUgdGhlIG1haW4gcm9sZVxuICAgKi9cbiAgcmVhZG9ubHkganVtcFJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFN0YWNrIG5hbWVzIHRvIGNoZWNrIGluIHRoaXMgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmYWlsIGlmIGRyaWZ0IGlzIGRldGVjdGVkXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGZhaWxPbkRyaWZ0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGlzIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJpZnRFcnJvckhhbmRsZXIge1xuICAvKipcbiAgICogUGF0dGVybiB0byBtYXRjaCBzdGFjayBuYW1lc1xuICAgKi9cbiAgcmVhZG9ubHkgcGF0dGVybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY3Rpb24gdG8gdGFrZSB3aGVuIHBhdHRlcm4gbWF0Y2hlc1xuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uOiAnaWdub3JlJyB8ICd3YXJuJyB8ICdmYWlsJztcblxuICAvKipcbiAgICogT3B0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5XG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERyaWZ0RGV0ZWN0aW9uV29ya2Zsb3dPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIG5hbWUgZm9yIHRoaXMgcGlwZWxpbmUsIHVzZWQgYXMgYSBwcmVmaXggZm9yIHdvcmtmbG93IGZpbGVzXG4gICAqIGFuZCBhcnRpZmFjdCBuYW1lcyB0byBwcmV2ZW50IGNvbGxpc2lvbnMgaW4gbW9ub3JlcG9zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHByZWZpeFxuICAgKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSB3b3JrZmxvd1xuICAgKiBAZGVmYXVsdCBcImRyaWZ0LWRldGVjdGlvblwiXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcm9uIHNjaGVkdWxlIGZvciBkcmlmdCBkZXRlY3Rpb25cbiAgICogQGRlZmF1bHQgXCIwIDAgKiAqICpcIiAoZGFpbHkgYXQgbWlkbmlnaHQpXG4gICAqL1xuICByZWFkb25seSBzY2hlZHVsZT86IHN0cmluZztcblxuICAvKipcbiAgICogRHJpZnQgZGV0ZWN0aW9uIGNvbmZpZ3VyYXRpb25zIGZvciBkaWZmZXJlbnQgZW52aXJvbm1lbnRzXG4gICAqL1xuICByZWFkb25seSBzdGFnZXM6IERyaWZ0RGV0ZWN0aW9uU3RhZ2VPcHRpb25zW107XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgc3RlcHMgdG8gZXhlY3V0ZSBiZWZvcmUgaW5zdGFsbGluZyBkZXBlbmRlbmNpZXMuXG4gICAqIFRoZXNlIHN0ZXBzIGFyZSBleGVjdXRlZCBiZWZvcmUgdGhlIHBhY2thZ2UgbWFuYWdlciBzZXR1cCBhbmQgaW5zdGFsbCBjb21tYW5kLlxuICAgKlxuICAgKiBOb3RlOiBQYWNrYWdlIG1hbmFnZXIgc2V0dXAgKGUuZy4sIFBucG1TZXR1cFN0ZXAgZm9yIHBucG0gb3IgQ29yZXBhY2tTZXR1cFN0ZXBcbiAgICogZm9yIFlhcm4gQmVycnkpIGlzIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgZnJvbSB0aGUgcHJvamVjdCBhbmQgYWx3YXlzIGluY2x1ZGVkLlxuICAgKiBVc2UgdGhpcyBvcHRpb24gZm9yIGFueSBhZGRpdGlvbmFsIHByZS1pbnN0YWxsIHN0ZXBzIHlvdSBuZWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgcHJlLWluc3RhbGwgc3RlcHNcbiAgICovXG4gIHJlYWRvbmx5IHByZUluc3RhbGxTdGVwcz86IFBpcGVsaW5lU3RlcFtdO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRHJpZnREZXRlY3Rpb25Xb3JrZmxvdyBleHRlbmRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBzY2hlZHVsZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RhZ2VzOiBEcmlmdERldGVjdGlvblN0YWdlT3B0aW9uc1tdO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJlSW5zdGFsbFN0ZXBzOiBQaXBlbGluZVN0ZXBbXTtcblxuICAvKiogUHJlZml4IGZvciB3b3JrZmxvdyBmaWxlcyBhbmQgYXJ0aWZhY3QgbmFtZXMgdG8gcHJldmVudCBjb2xsaXNpb25zIGluIG1vbm9yZXBvcy4gKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5hbWVQcmVmaXg6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBEcmlmdERldGVjdGlvbldvcmtmbG93T3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy5uYW1lUHJlZml4ID0gb3B0aW9ucy5waXBlbGluZU5hbWUgPyBgJHtvcHRpb25zLnBpcGVsaW5lTmFtZX0tYCA6ICcnO1xuICAgIHRoaXMubmFtZSA9IG9wdGlvbnMubmFtZSA/PyAnZHJpZnQtZGV0ZWN0aW9uJztcbiAgICB0aGlzLnNjaGVkdWxlID0gb3B0aW9ucy5zY2hlZHVsZSA/PyAnMCAwICogKiAqJztcbiAgICB0aGlzLnN0YWdlcyA9IG9wdGlvbnMuc3RhZ2VzO1xuICAgIHRoaXMucHJlSW5zdGFsbFN0ZXBzID0gW1xuICAgICAgLi4uKG9wdGlvbnMucHJlSW5zdGFsbFN0ZXBzID8/IFtdKSxcbiAgICAgIC4uLnRoaXMuZGV0ZWN0UGFja2FnZU1hbmFnZXJTdGVwcyhwcm9qZWN0KSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVjdHMgdGhlIHBhY2thZ2UgbWFuYWdlciBmcm9tIHRoZSBwcm9qZWN0IGFuZCByZXR1cm5zIGFwcHJvcHJpYXRlIHNldHVwIHN0ZXBzLlxuICAgKiBJZiB0aGUgcHJvamVjdCBpcyBhIE5vZGVQcm9qZWN0IChoYXMgYSBgcGFja2FnZWAgcHJvcGVydHkpLCBpdCBpbnNwZWN0cyB0aGVcbiAgICogcGFja2FnZU1hbmFnZXIgdG8gZGV0ZXJtaW5lIGlmIHBucG0gb3IgWWFybiBCZXJyeSBzZXR1cCBpcyBuZWVkZWQuXG4gICAqL1xuICBwcml2YXRlIGRldGVjdFBhY2thZ2VNYW5hZ2VyU3RlcHMocHJvamVjdDogUHJvamVjdCk6IFBpcGVsaW5lU3RlcFtdIHtcbiAgICBjb25zdCBwa2cgPSAocHJvamVjdCBhcyBhbnkpLnBhY2thZ2U7XG4gICAgaWYgKCFwa2cgfHwgIXBrZy5wYWNrYWdlTWFuYWdlcikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHN0ZXBzOiBQaXBlbGluZVN0ZXBbXSA9IFtdO1xuXG4gICAgaWYgKHBrZy5wYWNrYWdlTWFuYWdlciA9PT0gTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE0pIHtcbiAgICAgIHN0ZXBzLnB1c2gobmV3IFBucG1TZXR1cFN0ZXAocHJvamVjdCwge1xuICAgICAgICB2ZXJzaW9uOiBwa2cucG5wbVZlcnNpb24sXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIGlmIChwa2cucGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0JFUlJZKSB7XG4gICAgICBzdGVwcy5wdXNoKG5ldyBDb3JlcGFja1NldHVwU3RlcChwcm9qZWN0KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0ZXBzO1xuICB9XG5cbn1cbiJdfQ==
|
package/lib/drift/bash.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.BashDriftDetectionWorkflow = void 0;
|
|
5
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
@@ -7,6 +6,8 @@ const projen_1 = require("projen");
|
|
|
7
6
|
const base_1 = require("./base");
|
|
8
7
|
const step_1 = require("./step");
|
|
9
8
|
class BashDriftDetectionWorkflow extends base_1.DriftDetectionWorkflow {
|
|
9
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-pipelines.BashDriftDetectionWorkflow", version: "0.3.23" };
|
|
10
|
+
scriptPath;
|
|
10
11
|
constructor(project, options) {
|
|
11
12
|
super(project, options);
|
|
12
13
|
this.scriptPath = options.scriptPath ?? 'drift-detection.sh';
|
|
@@ -166,6 +167,4 @@ class BashDriftDetectionWorkflow extends base_1.DriftDetectionWorkflow {
|
|
|
166
167
|
}
|
|
167
168
|
}
|
|
168
169
|
exports.BashDriftDetectionWorkflow = BashDriftDetectionWorkflow;
|
|
169
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
170
|
-
BashDriftDetectionWorkflow[_a] = { fqn: "projen-pipelines.BashDriftDetectionWorkflow", version: "0.3.21" };
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kcmlmdC9iYXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQTJDO0FBQzNDLGlDQUEyRztBQUMzRyxpQ0FBNEM7QUFVNUMsTUFBYSwwQkFBMkIsU0FBUSw2QkFBc0I7SUFHcEUsWUFBWSxPQUFnQixFQUFFLE9BQTBDO1FBQ3RFLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLG9CQUFvQixDQUFDO1FBRTdELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRXpDLElBQUksaUJBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDMUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3pCLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxLQUFLLEdBQWE7WUFDdEIsYUFBYTtZQUNiLG1CQUFtQjtZQUNuQixFQUFFO1lBQ0YsMEJBQTBCO1lBQzFCLEVBQUU7WUFDRixnQ0FBZ0M7WUFDaEMsVUFBVTtZQUNWLDBCQUEwQjtZQUMxQixjQUFjO1lBQ2QsY0FBYztZQUNkLGtCQUFrQjtZQUNsQixlQUFlO1lBQ2YsVUFBVTtZQUNWLFFBQVE7WUFDUixpQ0FBaUM7WUFDakMsNkNBQTZDO1lBQzdDLGNBQWM7WUFDZCxVQUFVO1lBQ1YsUUFBUTtZQUNSLE1BQU07WUFDTixFQUFFO1lBQ0YsaURBQWlEO1lBQ2pELDRDQUE0QztZQUM1QyxxQ0FBcUM7WUFDckMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxR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Q3hELEtBQUssQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDM0QsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25CLEtBQUssQ0FBQyxJQUFJLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUN6RCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU8scUJBQXFCLENBQUMsS0FBaUM7UUFDN0QsNkNBQTZDO1FBQzdDLE1BQU0sU0FBUyxHQUFHLElBQUkseUJBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU5RCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFdEMsc0JBQXNCO1FBQ3RCLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7QUE1S0gsZ0VBNktDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEZpbGUsIFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgRHJpZnREZXRlY3Rpb25Xb3JrZmxvdywgRHJpZnREZXRlY3Rpb25Xb3JrZmxvd09wdGlvbnMsIERyaWZ0RGV0ZWN0aW9uU3RhZ2VPcHRpb25zIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IERyaWZ0RGV0ZWN0aW9uU3RlcCB9IGZyb20gJy4vc3RlcCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzaERyaWZ0RGV0ZWN0aW9uV29ya2Zsb3dPcHRpb25zIGV4dGVuZHMgRHJpZnREZXRlY3Rpb25Xb3JrZmxvd09wdGlvbnMge1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgb3V0cHV0IHNjcmlwdFxuICAgKiBAZGVmYXVsdCBcImRyaWZ0LWRldGVjdGlvbi5zaFwiXG4gICAqL1xuICByZWFkb25seSBzY3JpcHRQYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQmFzaERyaWZ0RGV0ZWN0aW9uV29ya2Zsb3cgZXh0ZW5kcyBEcmlmdERldGVjdGlvbldvcmtmbG93IHtcbiAgcHJpdmF0ZSByZWFkb25seSBzY3JpcHRQYXRoOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogQmFzaERyaWZ0RGV0ZWN0aW9uV29ya2Zsb3dPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwgb3B0aW9ucyk7XG4gICAgdGhpcy5zY3JpcHRQYXRoID0gb3B0aW9ucy5zY3JpcHRQYXRoID8/ICdkcmlmdC1kZXRlY3Rpb24uc2gnO1xuXG4gICAgY29uc3Qgc2NyaXB0ID0gdGhpcy5nZW5lcmF0ZUJhc2hTY3JpcHQoKTtcblxuICAgIG5ldyBUZXh0RmlsZSh0aGlzLnByb2plY3QsIHRoaXMuc2NyaXB0UGF0aCwge1xuICAgICAgbGluZXM6IHNjcmlwdC5zcGxpdCgnXFxuJyksXG4gICAgICBleGVjdXRhYmxlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUJhc2hTY3JpcHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXG4gICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgJ3NldCAtZXVvIHBpcGVmYWlsJyxcbiAgICAgICcnLFxuICAgICAgJyMgRHJpZnQgRGV0ZWN0aW9uIFNjcmlwdCcsXG4gICAgICAnJyxcbiAgICAgICcjIFBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMnLFxuICAgICAgJ1NUQUdFPVwiXCInLFxuICAgICAgJ3doaWxlIFtbICQjIC1ndCAwIF1dOyBkbycsXG4gICAgICAnICBjYXNlICQxIGluJyxcbiAgICAgICcgICAgLS1zdGFnZSknLFxuICAgICAgJyAgICAgIFNUQUdFPVwiJDJcIicsXG4gICAgICAnICAgICAgc2hpZnQgMicsXG4gICAgICAnICAgICAgOzsnLFxuICAgICAgJyAgICAqKScsXG4gICAgICAnICAgICAgZWNobyBcIlVua25vd24gb3B0aW9uOiAkMVwiJyxcbiAgICAgICcgICAgICBlY2hvIFwiVXNhZ2U6ICQwIFstLXN0YWdlIFNUQUdFX05BTUVdXCInLFxuICAgICAgJyAgICAgIGV4aXQgMScsXG4gICAgICAnICAgICAgOzsnLFxuICAgICAgJyAgZXNhYycsXG4gICAgICAnZG9uZScsXG4gICAgICAnJyxcbiAgICAgICcjIEluc3RhbGwgZGVwZW5kZW5jaWVzIGlmIG5vdCBhbHJlYWR5IGluc3RhbGxlZCcsXG4gICAgICAnaWYgISBjb21tYW5kIC12IHRzLW5vZGUgJj4gL2Rldi9udWxsOyB0aGVuJyxcbiAgICAgICcgIGVjaG8gXCJJbnN0YWxsaW5nIGRlcGVuZGVuY2llcy4uLlwiJyxcbiAgICAgIC4uLnRoaXMucHJlSW5zdGFsbFN0ZXBzLmZsYXRNYXAoc3RlcCA9PiBzdGVwLnRvQmFzaCgpLmNvbW1hbmRzLm1hcChjbWQgPT4gYCAgJHtjbWR9YCkpLFxuICAgICAgYCAgJHt0aGlzLnByb2plY3QucHJvamVuQ29tbWFuZH0gaW5zdGFsbDpjaWAsXG4gICAgICAnZmknLFxuICAgICAgJycsXG4gICAgICAnIyBGdW5jdGlvbiB0byBydW4gZHJpZnQgZGV0ZWN0aW9uIGZvciBhIHN0YWdlJyxcbiAgICAgICdydW5fZHJpZnRfZGV0ZWN0aW9uKCkgeycsXG4gICAgICAnICBsb2NhbCBzdGFnZV9uYW1lPSQxJyxcbiAgICAgICcgIGxvY2FsIHJlZ2lvbj0kMicsXG4gICAgICAnICBsb2NhbCByb2xlX2Fybj0kMycsXG4gICAgICAnICBsb2NhbCBzdGFja3M9JDQnLFxuICAgICAgJyAgbG9jYWwgZmFpbF9vbl9kcmlmdD0kNScsXG4gICAgICAnICBsb2NhbCBlcnJvcl9oYW5kbGVycz0kNicsXG4gICAgICAnICBsb2NhbCBlbnZfdmFycz0kNycsXG4gICAgICAnJyxcbiAgICAgICcgIGVjaG8gXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XCInLFxuICAgICAgJyAgZWNobyBcIlJ1bm5pbmcgZHJpZnQgZGV0ZWN0aW9uIGZvciBzdGFnZTogJHN0YWdlX25hbWVcIicsXG4gICAgICAnICBlY2hvIFwiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVwiJyxcbiAgICAgICcnLFxuICAgICAgJyAgIyBTZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzJyxcbiAgICAgICcgIGV4cG9ydCBBV1NfREVGQVVMVF9SRUdJT049XCIkcmVnaW9uXCInLFxuICAgICAgJyAgZXhwb3J0IERSSUZUX0RFVEVDVElPTl9PVVRQVVQ9XCJkcmlmdC1yZXN1bHRzLSRzdGFnZV9uYW1lLmpzb25cIicsXG4gICAgICAnICBldmFsIFwiJGVudl92YXJzXCInLFxuICAgICAgJycsXG4gICAgICAnICAjIEFzc3VtZSByb2xlIGlmIHByb3ZpZGVkJyxcbiAgICAgICcgIGlmIFtbIC1uIFwiJHJvbGVfYXJuXCIgXV07IHRoZW4nLFxuICAgICAgJyAgICBlY2hvIFwiQXNzdW1pbmcgcm9sZTogJHJvbGVfYXJuXCInLFxuICAgICAgJyAgICBDUkVEUz0kKGF3cyBzdHMgYXNzdW1lLXJvbGUgXFxcXCcsXG4gICAgICAnICAgICAgLS1yb2xlLWFybiBcIiRyb2xlX2FyblwiIFxcXFwnLFxuICAgICAgJyAgICAgIC0tcm9sZS1zZXNzaW9uLW5hbWUgXCJkcmlmdC1kZXRlY3Rpb24tJHN0YWdlX25hbWVcIiBcXFxcJyxcbiAgICAgICcgICAgICAtLXF1ZXJ5IFwiQ3JlZGVudGlhbHMuW0FjY2Vzc0tleUlkLFNlY3JldEFjY2Vzc0tleSxTZXNzaW9uVG9rZW5dXCIgXFxcXCcsXG4gICAgICAnICAgICAgLS1vdXRwdXQgdGV4dCknLFxuICAgICAgJyAgICBleHBvcnQgQVdTX0FDQ0VTU19LRVlfSUQ9JChlY2hvICRDUkVEUyB8IGN1dCAtZFxcJyBcXCcgLWYxKScsXG4gICAgICAnICAgIGV4cG9ydCBBV1NfU0VDUkVUX0FDQ0VTU19LRVk9JChlY2hvICRDUkVEUyB8IGN1dCAtZFxcJyBcXCcgLWYyKScsXG4gICAgICAnICAgIGV4cG9ydCBBV1NfU0VTU0lPTl9UT0tFTj0kKGVjaG8gJENSRURTIHwgY3V0IC1kXFwnIFxcJyAtZjMpJyxcbiAgICAgICcgIGZpJyxcbiAgICAgICcnLFxuICAgICAgJyAgIyBCdWlsZCBjb21tYW5kJyxcbiAgICAgICcgIGxvY2FsIGNtZD1cIm5weCB0cy1ub2RlIHNyYy9kcmlmdC9kZXRlY3QtZHJpZnQudHMgLS1yZWdpb24gJHJlZ2lvblwiJyxcbiAgICAgICcgICcsXG4gICAgICAnICBpZiBbWyAtbiBcIiRzdGFja3NcIiBdXTsgdGhlbicsXG4gICAgICAnICAgIGNtZD1cIiRjbWQgLS1zdGFja3MgJHN0YWNrc1wiJyxcbiAgICAgICcgIGZpJyxcbiAgICAgICcgICcsXG4gICAgICAnICBpZiBbWyBcIiRmYWlsX29uX2RyaWZ0XCIgPT0gXCJmYWxzZVwiIF1dOyB0aGVuJyxcbiAgICAgICcgICAgY21kPVwiJGNtZCAtLW5vLWZhaWwtb24tZHJpZnRcIicsXG4gICAgICAnICBmaScsXG4gICAgICAnICAnLFxuICAgICAgJyAgaWYgW1sgLW4gXCIkZXJyb3JfaGFuZGxlcnNcIiBdXTsgdGhlbicsXG4gICAgICAnICAgIGNtZD1cIiRjbWQgLS1lcnJvci1oYW5kbGVycyBcXCckZXJyb3JfaGFuZGxlcnNcXCdcIicsXG4gICAgICAnICBmaScsXG4gICAgICAnJyxcbiAgICAgICcgICMgUnVuIGRyaWZ0IGRldGVjdGlvbicsXG4gICAgICAnICBlY2hvIFwiUnVubmluZzogJGNtZFwiJyxcbiAgICAgICcgIGV2YWwgXCIkY21kXCIgfHwgeycsXG4gICAgICAnICAgIGxvY2FsIGV4aXRfY29kZT0kPycsXG4gICAgICAnICAgIGVjaG8gXCJEcmlmdCBkZXRlY3Rpb24gZmFpbGVkIHdpdGggZXhpdCBjb2RlOiAkZXhpdF9jb2RlXCInLFxuICAgICAgJyAgICBpZiBbWyBcIiRmYWlsX29uX2RyaWZ0XCIgPT0gXCJ0cnVlXCIgXV07IHRoZW4nLFxuICAgICAgJyAgICAgIHJldHVybiAkZXhpdF9jb2RlJyxcbiAgICAgICcgICAgZmknLFxuICAgICAgJyAgfScsXG4gICAgICAnfScsXG4gICAgICAnJyxcbiAgICAgICcjIFN0YWdlIGNvbmZpZ3VyYXRpb25zJyxcbiAgICBdO1xuXG4gICAgLy8gQWRkIHN0YWdlIGNvbmZpZ3VyYXRpb25zXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiB0aGlzLnN0YWdlcykge1xuICAgICAgbGluZXMucHVzaChgIyBTdGFnZTogJHtzdGFnZS5uYW1lfWApO1xuICAgICAgbGluZXMucHVzaChgcnVuX3N0YWdlXyR7c3RhZ2UubmFtZX0oKSB7YCk7XG4gICAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVTdGFnZUZ1bmN0aW9uKHN0YWdlKSk7XG4gICAgICBsaW5lcy5wdXNoKCd9Jyk7XG4gICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgbWFpbiBleGVjdXRpb24gbG9naWNcbiAgICBsaW5lcy5wdXNoKCcjIE1haW4gZXhlY3V0aW9uJyk7XG4gICAgbGluZXMucHVzaCgnRkFJTEVEX1NUQUdFUz0oKScpO1xuICAgIGxpbmVzLnB1c2goJycpO1xuICAgIGxpbmVzLnB1c2goJ2lmIFtbIC1uIFwiJFNUQUdFXCIgXV07IHRoZW4nKTtcbiAgICBsaW5lcy5wdXNoKCcgICMgUnVuIHNwZWNpZmljIHN0YWdlJyk7XG4gICAgbGluZXMucHVzaCgnICBjYXNlIFwiJFNUQUdFXCIgaW4nKTtcblxuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2YgdGhpcy5zdGFnZXMpIHtcbiAgICAgIGxpbmVzLnB1c2goYCAgICAke3N0YWdlLm5hbWV9KWApO1xuICAgICAgbGluZXMucHVzaChgICAgICAgcnVuX3N0YWdlXyR7c3RhZ2UubmFtZX0gfHwgRkFJTEVEX1NUQUdFUys9KFwiJHtzdGFnZS5uYW1lfVwiKWApO1xuICAgICAgbGluZXMucHVzaCgnICAgICAgOzsnKTtcbiAgICB9XG5cbiAgICBsaW5lcy5wdXNoKCcgICAgKiknKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICBlY2hvIFwiVW5rbm93biBzdGFnZTogJFNUQUdFXCInKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICBlY2hvIFwiQXZhaWxhYmxlIHN0YWdlczpcIicpO1xuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2YgdGhpcy5zdGFnZXMpIHtcbiAgICAgIGxpbmVzLnB1c2goYCAgICAgIGVjaG8gXCIgIC0gJHtzdGFnZS5uYW1lfVwiYCk7XG4gICAgfVxuICAgIGxpbmVzLnB1c2goJyAgICAgIGV4aXQgMScpO1xuICAgIGxpbmVzLnB1c2goJyAgICAgIDs7Jyk7XG4gICAgbGluZXMucHVzaCgnICBlc2FjJyk7XG4gICAgbGluZXMucHVzaCgnZWxzZScpO1xuICAgIGxpbmVzLnB1c2goJyAgIyBSdW4gYWxsIHN0YWdlcycpO1xuXG4gICAgZm9yIChjb25zdCBzdGFnZSBvZiB0aGlzLnN0YWdlcykge1xuICAgICAgbGluZXMucHVzaChgICBydW5fc3RhZ2VfJHtzdGFnZS5uYW1lfSB8fCBGQUlMRURfU1RBR0VTKz0oXCIke3N0YWdlLm5hbWV9XCIpYCk7XG4gICAgfVxuXG4gICAgbGluZXMucHVzaCgnZmknKTtcbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICBsaW5lcy5wdXNoKCcjIFN1bW1hcnknKTtcbiAgICBsaW5lcy5wdXNoKCdlY2hvIFwiXCInKTtcbiAgICBsaW5lcy5wdXNoKCdlY2hvIFwiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVwiJyk7XG4gICAgbGluZXMucHVzaCgnZWNobyBcIkRSSUZUIERFVEVDVElPTiBDT01QTEVURVwiJyk7XG4gICAgbGluZXMucHVzaCgnZWNobyBcIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cIicpO1xuICAgIGxpbmVzLnB1c2goJycpO1xuICAgIGxpbmVzLnB1c2goJ2lmIFtbICR7I0ZBSUxFRF9TVEFHRVNbQF19IC1ndCAwIF1dOyB0aGVuJyk7XG4gICAgbGluZXMucHVzaCgnICBlY2hvIFwiRmFpbGVkIHN0YWdlczpcIicpO1xuICAgIGxpbmVzLnB1c2goJyAgcHJpbnRmIFxcJyAgLSAlc1xcXFxuXFwnIFwiJHtGQUlMRURfU1RBR0VTW0BdfVwiJyk7XG4gICAgbGluZXMucHVzaCgnICBleGl0IDEnKTtcbiAgICBsaW5lcy5wdXNoKCdlbHNlJyk7XG4gICAgbGluZXMucHVzaCgnICBlY2hvIFwiQWxsIHN0YWdlcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCInKTtcbiAgICBsaW5lcy5wdXNoKCdmaScpO1xuXG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVN0YWdlRnVuY3Rpb24oc3RhZ2U6IERyaWZ0RGV0ZWN0aW9uU3RhZ2VPcHRpb25zKTogc3RyaW5nW10ge1xuICAgIC8vIENyZWF0ZSBkcmlmdCBkZXRlY3Rpb24gc3RlcCBmb3IgdGhpcyBzdGFnZVxuICAgIGNvbnN0IGRyaWZ0U3RlcCA9IG5ldyBEcmlmdERldGVjdGlvblN0ZXAodGhpcy5wcm9qZWN0LCBzdGFnZSk7XG5cbiAgICBjb25zdCBzdGVwQ29uZmlnID0gZHJpZnRTdGVwLnRvQmFzaCgpO1xuXG4gICAgLy8gSW5kZW50IGFsbCBjb21tYW5kc1xuICAgIHJldHVybiBzdGVwQ29uZmlnLmNvbW1hbmRzLm1hcChjbWQgPT4gYCAgJHtjbWR9YCk7XG4gIH1cbn0iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kcmlmdC9iYXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxtQ0FBMkM7QUFDM0MsaUNBQTJHO0FBQzNHLGlDQUE0QztBQVU1QyxNQUFhLDBCQUEyQixTQUFRLDZCQUFzQjs7SUFDbkQsVUFBVSxDQUFTO0lBRXBDLFlBQVksT0FBZ0IsRUFBRSxPQUEwQztRQUN0RSxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxvQkFBb0IsQ0FBQztRQUU3RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUV6QyxJQUFJLGlCQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUN6QixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sS0FBSyxHQUFhO1lBQ3RCLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsRUFBRTtZQUNGLDBCQUEwQjtZQUMxQixFQUFFO1lBQ0YsZ0NBQWdDO1lBQ2hDLFVBQVU7WUFDViwwQkFBMEI7WUFDMUIsY0FBYztZQUNkLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLFVBQVU7WUFDVixRQUFRO1lBQ1IsaUNBQWlDO1lBQ2pDLDZDQUE2QztZQUM3QyxjQUFjO1lBQ2QsVUFBVTtZQUNWLFFBQVE7WUFDUixNQUFNO1lBQ04sRUFBRTtZQUNGLGlEQUFpRDtZQUNqRCw0Q0FBNEM7WUFDNUMscUNBQXFDO1lBQ3JDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMs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QTJDLENBQUMsQ0FBQztRQUN4RCxLQUFLLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDdEMsS0FBSyxDQUFDLElBQUksQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQzNELEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkIsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQixLQUFLLENBQUMsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDekQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLEtBQWlDO1FBQzdELDZDQUE2QztRQUM3QyxNQUFNLFNBQVMsR0FBRyxJQUFJLHlCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFOUQsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRXRDLHNCQUFzQjtRQUN0QixPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7O0FBNUtILGdFQTZLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRGaWxlLCBQcm9qZWN0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IERyaWZ0RGV0ZWN0aW9uV29ya2Zsb3csIERyaWZ0RGV0ZWN0aW9uV29ya2Zsb3dPcHRpb25zLCBEcmlmdERldGVjdGlvblN0YWdlT3B0aW9ucyB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBEcmlmdERldGVjdGlvblN0ZXAgfSBmcm9tICcuL3N0ZXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2hEcmlmdERldGVjdGlvbldvcmtmbG93T3B0aW9ucyBleHRlbmRzIERyaWZ0RGV0ZWN0aW9uV29ya2Zsb3dPcHRpb25zIHtcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIG91dHB1dCBzY3JpcHRcbiAgICogQGRlZmF1bHQgXCJkcmlmdC1kZXRlY3Rpb24uc2hcIlxuICAgKi9cbiAgcmVhZG9ubHkgc2NyaXB0UGF0aD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEJhc2hEcmlmdERldGVjdGlvbldvcmtmbG93IGV4dGVuZHMgRHJpZnREZXRlY3Rpb25Xb3JrZmxvdyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2NyaXB0UGF0aDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEJhc2hEcmlmdERldGVjdGlvbldvcmtmbG93T3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QsIG9wdGlvbnMpO1xuICAgIHRoaXMuc2NyaXB0UGF0aCA9IG9wdGlvbnMuc2NyaXB0UGF0aCA/PyAnZHJpZnQtZGV0ZWN0aW9uLnNoJztcblxuICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMuZ2VuZXJhdGVCYXNoU2NyaXB0KCk7XG5cbiAgICBuZXcgVGV4dEZpbGUodGhpcy5wcm9qZWN0LCB0aGlzLnNjcmlwdFBhdGgsIHtcbiAgICAgIGxpbmVzOiBzY3JpcHQuc3BsaXQoJ1xcbicpLFxuICAgICAgZXhlY3V0YWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVCYXNoU2NyaXB0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW1xuICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICdzZXQgLWV1byBwaXBlZmFpbCcsXG4gICAgICAnJyxcbiAgICAgICcjIERyaWZ0IERldGVjdGlvbiBTY3JpcHQnLFxuICAgICAgJycsXG4gICAgICAnIyBQYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzJyxcbiAgICAgICdTVEFHRT1cIlwiJyxcbiAgICAgICd3aGlsZSBbWyAkIyAtZ3QgMCBdXTsgZG8nLFxuICAgICAgJyAgY2FzZSAkMSBpbicsXG4gICAgICAnICAgIC0tc3RhZ2UpJyxcbiAgICAgICcgICAgICBTVEFHRT1cIiQyXCInLFxuICAgICAgJyAgICAgIHNoaWZ0IDInLFxuICAgICAgJyAgICAgIDs7JyxcbiAgICAgICcgICAgKiknLFxuICAgICAgJyAgICAgIGVjaG8gXCJVbmtub3duIG9wdGlvbjogJDFcIicsXG4gICAgICAnICAgICAgZWNobyBcIlVzYWdlOiAkMCBbLS1zdGFnZSBTVEFHRV9OQU1FXVwiJyxcbiAgICAgICcgICAgICBleGl0IDEnLFxuICAgICAgJyAgICAgIDs7JyxcbiAgICAgICcgIGVzYWMnLFxuICAgICAgJ2RvbmUnLFxuICAgICAgJycsXG4gICAgICAnIyBJbnN0YWxsIGRlcGVuZGVuY2llcyBpZiBub3QgYWxyZWFkeSBpbnN0YWxsZWQnLFxuICAgICAgJ2lmICEgY29tbWFuZCAtdiB0cy1ub2RlICY+IC9kZXYvbnVsbDsgdGhlbicsXG4gICAgICAnICBlY2hvIFwiSW5zdGFsbGluZyBkZXBlbmRlbmNpZXMuLi5cIicsXG4gICAgICAuLi50aGlzLnByZUluc3RhbGxTdGVwcy5mbGF0TWFwKHN0ZXAgPT4gc3RlcC50b0Jhc2goKS5jb21tYW5kcy5tYXAoY21kID0+IGAgICR7Y21kfWApKSxcbiAgICAgIGAgICR7dGhpcy5wcm9qZWN0LnByb2plbkNvbW1hbmR9IGluc3RhbGw6Y2lgLFxuICAgICAgJ2ZpJyxcbiAgICAgICcnLFxuICAgICAgJyMgRnVuY3Rpb24gdG8gcnVuIGRyaWZ0IGRldGVjdGlvbiBmb3IgYSBzdGFnZScsXG4gICAgICAncnVuX2RyaWZ0X2RldGVjdGlvbigpIHsnLFxuICAgICAgJyAgbG9jYWwgc3RhZ2VfbmFtZT0kMScsXG4gICAgICAnICBsb2NhbCByZWdpb249JDInLFxuICAgICAgJyAgbG9jYWwgcm9sZV9hcm49JDMnLFxuICAgICAgJyAgbG9jYWwgc3RhY2tzPSQ0JyxcbiAgICAgICcgIGxvY2FsIGZhaWxfb25fZHJpZnQ9JDUnLFxuICAgICAgJyAgbG9jYWwgZXJyb3JfaGFuZGxlcnM9JDYnLFxuICAgICAgJyAgbG9jYWwgZW52X3ZhcnM9JDcnLFxuICAgICAgJycsXG4gICAgICAnICBlY2hvIFwiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVwiJyxcbiAgICAgICcgIGVjaG8gXCJSdW5uaW5nIGRyaWZ0IGRldGVjdGlvbiBmb3Igc3RhZ2U6ICRzdGFnZV9uYW1lXCInLFxuICAgICAgJyAgZWNobyBcIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cIicsXG4gICAgICAnJyxcbiAgICAgICcgICMgU2V0IGVudmlyb25tZW50IHZhcmlhYmxlcycsXG4gICAgICAnICBleHBvcnQgQVdTX0RFRkFVTFRfUkVHSU9OPVwiJHJlZ2lvblwiJyxcbiAgICAgICcgIGV4cG9ydCBEUklGVF9ERVRFQ1RJT05fT1VUUFVUPVwiZHJpZnQtcmVzdWx0cy0kc3RhZ2VfbmFtZS5qc29uXCInLFxuICAgICAgJyAgZXZhbCBcIiRlbnZfdmFyc1wiJyxcbiAgICAgICcnLFxuICAgICAgJyAgIyBBc3N1bWUgcm9sZSBpZiBwcm92aWRlZCcsXG4gICAgICAnICBpZiBbWyAtbiBcIiRyb2xlX2FyblwiIF1dOyB0aGVuJyxcbiAgICAgICcgICAgZWNobyBcIkFzc3VtaW5nIHJvbGU6ICRyb2xlX2FyblwiJyxcbiAgICAgICcgICAgQ1JFRFM9JChhd3Mgc3RzIGFzc3VtZS1yb2xlIFxcXFwnLFxuICAgICAgJyAgICAgIC0tcm9sZS1hcm4gXCIkcm9sZV9hcm5cIiBcXFxcJyxcbiAgICAgICcgICAgICAtLXJvbGUtc2Vzc2lvbi1uYW1lIFwiZHJpZnQtZGV0ZWN0aW9uLSRzdGFnZV9uYW1lXCIgXFxcXCcsXG4gICAgICAnICAgICAgLS1xdWVyeSBcIkNyZWRlbnRpYWxzLltBY2Nlc3NLZXlJZCxTZWNyZXRBY2Nlc3NLZXksU2Vzc2lvblRva2VuXVwiIFxcXFwnLFxuICAgICAgJyAgICAgIC0tb3V0cHV0IHRleHQpJyxcbiAgICAgICcgICAgZXhwb3J0IEFXU19BQ0NFU1NfS0VZX0lEPSQoZWNobyAkQ1JFRFMgfCBjdXQgLWRcXCcgXFwnIC1mMSknLFxuICAgICAgJyAgICBleHBvcnQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPSQoZWNobyAkQ1JFRFMgfCBjdXQgLWRcXCcgXFwnIC1mMiknLFxuICAgICAgJyAgICBleHBvcnQgQVdTX1NFU1NJT05fVE9LRU49JChlY2hvICRDUkVEUyB8IGN1dCAtZFxcJyBcXCcgLWYzKScsXG4gICAgICAnICBmaScsXG4gICAgICAnJyxcbiAgICAgICcgICMgQnVpbGQgY29tbWFuZCcsXG4gICAgICAnICBsb2NhbCBjbWQ9XCJucHggdHMtbm9kZSBzcmMvZHJpZnQvZGV0ZWN0LWRyaWZ0LnRzIC0tcmVnaW9uICRyZWdpb25cIicsXG4gICAgICAnICAnLFxuICAgICAgJyAgaWYgW1sgLW4gXCIkc3RhY2tzXCIgXV07IHRoZW4nLFxuICAgICAgJyAgICBjbWQ9XCIkY21kIC0tc3RhY2tzICRzdGFja3NcIicsXG4gICAgICAnICBmaScsXG4gICAgICAnICAnLFxuICAgICAgJyAgaWYgW1sgXCIkZmFpbF9vbl9kcmlmdFwiID09IFwiZmFsc2VcIiBdXTsgdGhlbicsXG4gICAgICAnICAgIGNtZD1cIiRjbWQgLS1uby1mYWlsLW9uLWRyaWZ0XCInLFxuICAgICAgJyAgZmknLFxuICAgICAgJyAgJyxcbiAgICAgICcgIGlmIFtbIC1uIFwiJGVycm9yX2hhbmRsZXJzXCIgXV07IHRoZW4nLFxuICAgICAgJyAgICBjbWQ9XCIkY21kIC0tZXJyb3ItaGFuZGxlcnMgXFwnJGVycm9yX2hhbmRsZXJzXFwnXCInLFxuICAgICAgJyAgZmknLFxuICAgICAgJycsXG4gICAgICAnICAjIFJ1biBkcmlmdCBkZXRlY3Rpb24nLFxuICAgICAgJyAgZWNobyBcIlJ1bm5pbmc6ICRjbWRcIicsXG4gICAgICAnICBldmFsIFwiJGNtZFwiIHx8IHsnLFxuICAgICAgJyAgICBsb2NhbCBleGl0X2NvZGU9JD8nLFxuICAgICAgJyAgICBlY2hvIFwiRHJpZnQgZGV0ZWN0aW9uIGZhaWxlZCB3aXRoIGV4aXQgY29kZTogJGV4aXRfY29kZVwiJyxcbiAgICAgICcgICAgaWYgW1sgXCIkZmFpbF9vbl9kcmlmdFwiID09IFwidHJ1ZVwiIF1dOyB0aGVuJyxcbiAgICAgICcgICAgICByZXR1cm4gJGV4aXRfY29kZScsXG4gICAgICAnICAgIGZpJyxcbiAgICAgICcgIH0nLFxuICAgICAgJ30nLFxuICAgICAgJycsXG4gICAgICAnIyBTdGFnZSBjb25maWd1cmF0aW9ucycsXG4gICAgXTtcblxuICAgIC8vIEFkZCBzdGFnZSBjb25maWd1cmF0aW9uc1xuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2YgdGhpcy5zdGFnZXMpIHtcbiAgICAgIGxpbmVzLnB1c2goYCMgU3RhZ2U6ICR7c3RhZ2UubmFtZX1gKTtcbiAgICAgIGxpbmVzLnB1c2goYHJ1bl9zdGFnZV8ke3N0YWdlLm5hbWV9KCkge2ApO1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlU3RhZ2VGdW5jdGlvbihzdGFnZSkpO1xuICAgICAgbGluZXMucHVzaCgnfScpO1xuICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1haW4gZXhlY3V0aW9uIGxvZ2ljXG4gICAgbGluZXMucHVzaCgnIyBNYWluIGV4ZWN1dGlvbicpO1xuICAgIGxpbmVzLnB1c2goJ0ZBSUxFRF9TVEFHRVM9KCknKTtcbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICBsaW5lcy5wdXNoKCdpZiBbWyAtbiBcIiRTVEFHRVwiIF1dOyB0aGVuJyk7XG4gICAgbGluZXMucHVzaCgnICAjIFJ1biBzcGVjaWZpYyBzdGFnZScpO1xuICAgIGxpbmVzLnB1c2goJyAgY2FzZSBcIiRTVEFHRVwiIGluJyk7XG5cbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIHRoaXMuc3RhZ2VzKSB7XG4gICAgICBsaW5lcy5wdXNoKGAgICAgJHtzdGFnZS5uYW1lfSlgKTtcbiAgICAgIGxpbmVzLnB1c2goYCAgICAgIHJ1bl9zdGFnZV8ke3N0YWdlLm5hbWV9IHx8IEZBSUxFRF9TVEFHRVMrPShcIiR7c3RhZ2UubmFtZX1cIilgKTtcbiAgICAgIGxpbmVzLnB1c2goJyAgICAgIDs7Jyk7XG4gICAgfVxuXG4gICAgbGluZXMucHVzaCgnICAgICopJyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgZWNobyBcIlVua25vd24gc3RhZ2U6ICRTVEFHRVwiJyk7XG4gICAgbGluZXMucHVzaCgnICAgICAgZWNobyBcIkF2YWlsYWJsZSBzdGFnZXM6XCInKTtcbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIHRoaXMuc3RhZ2VzKSB7XG4gICAgICBsaW5lcy5wdXNoKGAgICAgICBlY2hvIFwiICAtICR7c3RhZ2UubmFtZX1cImApO1xuICAgIH1cbiAgICBsaW5lcy5wdXNoKCcgICAgICBleGl0IDEnKTtcbiAgICBsaW5lcy5wdXNoKCcgICAgICA7OycpO1xuICAgIGxpbmVzLnB1c2goJyAgZXNhYycpO1xuICAgIGxpbmVzLnB1c2goJ2Vsc2UnKTtcbiAgICBsaW5lcy5wdXNoKCcgICMgUnVuIGFsbCBzdGFnZXMnKTtcblxuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2YgdGhpcy5zdGFnZXMpIHtcbiAgICAgIGxpbmVzLnB1c2goYCAgcnVuX3N0YWdlXyR7c3RhZ2UubmFtZX0gfHwgRkFJTEVEX1NUQUdFUys9KFwiJHtzdGFnZS5uYW1lfVwiKWApO1xuICAgIH1cblxuICAgIGxpbmVzLnB1c2goJ2ZpJyk7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgbGluZXMucHVzaCgnIyBTdW1tYXJ5Jyk7XG4gICAgbGluZXMucHVzaCgnZWNobyBcIlwiJyk7XG4gICAgbGluZXMucHVzaCgnZWNobyBcIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cIicpO1xuICAgIGxpbmVzLnB1c2goJ2VjaG8gXCJEUklGVCBERVRFQ1RJT04gQ09NUExFVEVcIicpO1xuICAgIGxpbmVzLnB1c2goJ2VjaG8gXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XCInKTtcbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICBsaW5lcy5wdXNoKCdpZiBbWyAkeyNGQUlMRURfU1RBR0VTW0BdfSAtZ3QgMCBdXTsgdGhlbicpO1xuICAgIGxpbmVzLnB1c2goJyAgZWNobyBcIkZhaWxlZCBzdGFnZXM6XCInKTtcbiAgICBsaW5lcy5wdXNoKCcgIHByaW50ZiBcXCcgIC0gJXNcXFxcblxcJyBcIiR7RkFJTEVEX1NUQUdFU1tAXX1cIicpO1xuICAgIGxpbmVzLnB1c2goJyAgZXhpdCAxJyk7XG4gICAgbGluZXMucHVzaCgnZWxzZScpO1xuICAgIGxpbmVzLnB1c2goJyAgZWNobyBcIkFsbCBzdGFnZXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiJyk7XG4gICAgbGluZXMucHVzaCgnZmknKTtcblxuICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVTdGFnZUZ1bmN0aW9uKHN0YWdlOiBEcmlmdERldGVjdGlvblN0YWdlT3B0aW9ucyk6IHN0cmluZ1tdIHtcbiAgICAvLyBDcmVhdGUgZHJpZnQgZGV0ZWN0aW9uIHN0ZXAgZm9yIHRoaXMgc3RhZ2VcbiAgICBjb25zdCBkcmlmdFN0ZXAgPSBuZXcgRHJpZnREZXRlY3Rpb25TdGVwKHRoaXMucHJvamVjdCwgc3RhZ2UpO1xuXG4gICAgY29uc3Qgc3RlcENvbmZpZyA9IGRyaWZ0U3RlcC50b0Jhc2goKTtcblxuICAgIC8vIEluZGVudCBhbGwgY29tbWFuZHNcbiAgICByZXR1cm4gc3RlcENvbmZpZy5jb21tYW5kcy5tYXAoY21kID0+IGAgICR7Y21kfWApO1xuICB9XG59Il19
|