aws-delivlib 13.7.10 → 14.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cdk.out/asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1/__entrypoint__.js +119 -0
- package/cdk.out/{asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538 → asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1}/index.d.ts +0 -0
- package/cdk.out/{asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538 → asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1}/index.js +0 -0
- package/cdk.out/{asset.ca50c9b7760151d8e8ce6e39851032d4eff4836ea1ee806eaa944aaef110a353 → asset.7ada94e893d605ebbcf2f5b3bedc83bad3c704ab7892c1f2af45bfd79fb751e7}/index.js +20 -4
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/create-release.js +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/package-lock.json +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/package.json +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/publish.sh +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/sign-files.sh +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/with-signing-key.sh +1 -7
- package/cdk.out/cdk.out +1 -1
- package/cdk.out/delivlib-test.assets.json +12 -12
- package/cdk.out/delivlib-test.template.json +7135 -7704
- package/cdk.out/manifest.json +152 -2498
- package/cdk.out/tree.json +1059 -1427
- package/lib/auto-build.d.ts +2 -1
- package/lib/auto-build.js +8 -7
- package/lib/auto-build.ts +3 -2
- package/lib/build-env.d.ts +1 -1
- package/lib/build-env.js +4 -4
- package/lib/build-env.ts +1 -1
- package/lib/canary.d.ts +2 -1
- package/lib/canary.js +7 -6
- package/lib/canary.ts +2 -2
- package/lib/change-controller.d.ts +2 -1
- package/lib/change-controller.js +20 -18
- package/lib/change-controller.ts +6 -5
- package/lib/chime-notifier/chime-notifier.d.ts +2 -1
- package/lib/chime-notifier/chime-notifier.js +12 -11
- package/lib/chime-notifier/chime-notifier.ts +3 -2
- package/lib/code-signing/certificate-signing-request.d.ts +1 -1
- package/lib/code-signing/certificate-signing-request.js +16 -14
- package/lib/code-signing/certificate-signing-request.ts +7 -5
- package/lib/code-signing/code-signing-certificate.d.ts +2 -1
- package/lib/code-signing/code-signing-certificate.js +12 -11
- package/lib/code-signing/code-signing-certificate.ts +5 -4
- package/lib/code-signing/private-key.d.ts +2 -1
- package/lib/code-signing/private-key.js +28 -26
- package/lib/code-signing/private-key.ts +10 -8
- package/lib/credential-pair.d.ts +1 -1
- package/lib/credential-pair.js +1 -1
- package/lib/credential-pair.ts +1 -1
- package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
- package/lib/open-pgp-key-pair.d.ts +2 -1
- package/lib/open-pgp-key-pair.js +28 -27
- package/lib/open-pgp-key-pair.ts +12 -10
- package/lib/package-integrity/handler/validate.bundle.js +814 -457
- package/lib/package-integrity/integrity.d.ts +2 -1
- package/lib/package-integrity/integrity.js +7 -6
- package/lib/package-integrity/integrity.ts +2 -2
- package/lib/permissions.d.ts +1 -1
- package/lib/permissions.js +5 -5
- package/lib/permissions.ts +4 -4
- package/lib/pipeline-notifications/slack.d.ts +1 -1
- package/lib/pipeline-notifications/slack.js +4 -4
- package/lib/pipeline-notifications/slack.ts +1 -1
- package/lib/pipeline-watcher/watcher.d.ts +2 -1
- package/lib/pipeline-watcher/watcher.js +16 -15
- package/lib/pipeline-watcher/watcher.ts +3 -3
- package/lib/pipeline.d.ts +2 -1
- package/lib/pipeline.js +19 -18
- package/lib/pipeline.ts +5 -4
- package/lib/publishing/github/with-signing-key.sh +1 -7
- package/lib/publishing.d.ts +2 -1
- package/lib/publishing.js +36 -35
- package/lib/publishing.ts +9 -8
- package/lib/pull-request/bump.d.ts +3 -3
- package/lib/pull-request/bump.js +3 -26
- package/lib/pull-request/bump.ts +3 -3
- package/lib/pull-request/merge-back.d.ts +3 -3
- package/lib/pull-request/merge-back.js +3 -3
- package/lib/pull-request/merge-back.ts +3 -3
- package/lib/pull-request/pr.d.ts +2 -1
- package/lib/pull-request/pr.js +11 -10
- package/lib/pull-request/pr.ts +3 -2
- package/lib/registry-sync/ecr-mirror.d.ts +2 -1
- package/lib/registry-sync/ecr-mirror.js +22 -21
- package/lib/registry-sync/ecr-mirror.ts +4 -3
- package/lib/registry-sync/mirror-source.d.ts +2 -1
- package/lib/registry-sync/mirror-source.js +3 -3
- package/lib/registry-sync/mirror-source.ts +2 -2
- package/lib/repo.d.ts +2 -1
- package/lib/repo.js +12 -12
- package/lib/repo.ts +3 -2
- package/lib/shellable.d.ts +2 -1
- package/lib/shellable.js +23 -22
- package/lib/shellable.ts +5 -4
- package/lib/signing-key.d.ts +2 -1
- package/lib/signing-key.js +6 -5
- package/lib/signing-key.ts +3 -2
- package/lib/util.d.ts +1 -1
- package/lib/util.js +1 -1
- package/lib/util.ts +1 -1
- package/package.json +12 -10
- package/cdk.out/asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538/__entrypoint__.js +0 -119
package/lib/pipeline.js
CHANGED
|
@@ -24,7 +24,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.Pipeline = void 0;
|
|
27
|
-
const
|
|
27
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
28
|
+
const constructs_1 = require("constructs");
|
|
28
29
|
const auto_build_1 = require("./auto-build");
|
|
29
30
|
const build_env_1 = require("./build-env");
|
|
30
31
|
const canary_1 = require("./canary");
|
|
@@ -43,7 +44,7 @@ const FAILURE_METRIC_NAME = 'Failures';
|
|
|
43
44
|
/**
|
|
44
45
|
* Defines a delivlib CI/CD pipeline.
|
|
45
46
|
*/
|
|
46
|
-
class Pipeline extends
|
|
47
|
+
class Pipeline extends constructs_1.Construct {
|
|
47
48
|
constructor(parent, name, props) {
|
|
48
49
|
var _a;
|
|
49
50
|
super(parent, name);
|
|
@@ -51,7 +52,7 @@ class Pipeline extends monocdk_1.Construct {
|
|
|
51
52
|
this.concurrency = props.concurrency;
|
|
52
53
|
this.repo = props.repo;
|
|
53
54
|
this.dryRun = !!props.dryRun;
|
|
54
|
-
this.pipeline = new
|
|
55
|
+
this.pipeline = new aws_cdk_lib_1.aws_codepipeline.Pipeline(this, 'BuildPipeline', {
|
|
55
56
|
pipelineName: props.pipelineName,
|
|
56
57
|
restartExecutionOnUpdate: props.restartExecutionOnUpdate === undefined ? true : props.restartExecutionOnUpdate,
|
|
57
58
|
});
|
|
@@ -63,16 +64,16 @@ class Pipeline extends monocdk_1.Construct {
|
|
|
63
64
|
if (buildProjectName === undefined && props.pipelineName !== undefined) {
|
|
64
65
|
buildProjectName = `${props.pipelineName}-Build`;
|
|
65
66
|
}
|
|
66
|
-
this.buildProject = new
|
|
67
|
+
this.buildProject = new aws_cdk_lib_1.aws_codebuild.PipelineProject(this, 'BuildProject', {
|
|
67
68
|
projectName: buildProjectName,
|
|
68
69
|
environment: this.buildEnvironment,
|
|
69
70
|
buildSpec: this.buildSpec,
|
|
70
|
-
timeout: (_a = props.buildTimeout) !== null && _a !== void 0 ? _a :
|
|
71
|
+
timeout: (_a = props.buildTimeout) !== null && _a !== void 0 ? _a : aws_cdk_lib_1.Duration.hours(8),
|
|
71
72
|
});
|
|
72
73
|
this.buildRole = this.buildProject.role;
|
|
73
74
|
const buildStage = this.getOrCreateStage('Build');
|
|
74
|
-
const buildOutput = new
|
|
75
|
-
buildStage.addAction(new
|
|
75
|
+
const buildOutput = new aws_cdk_lib_1.aws_codepipeline.Artifact();
|
|
76
|
+
buildStage.addAction(new aws_cdk_lib_1.aws_codepipeline_actions.CodeBuildAction({
|
|
76
77
|
actionName: 'Build',
|
|
77
78
|
project: this.buildProject,
|
|
78
79
|
input: this.sourceArtifact,
|
|
@@ -80,8 +81,8 @@ class Pipeline extends monocdk_1.Construct {
|
|
|
80
81
|
}));
|
|
81
82
|
this.buildOutput = buildOutput;
|
|
82
83
|
if (props.notificationEmail) {
|
|
83
|
-
this.notify = new
|
|
84
|
-
this.notify.addSubscription(new
|
|
84
|
+
this.notify = new aws_cdk_lib_1.aws_sns.Topic(this, 'NotificationsTopic');
|
|
85
|
+
this.notify.addSubscription(new aws_cdk_lib_1.aws_sns_subscriptions.EmailSubscription(props.notificationEmail));
|
|
85
86
|
}
|
|
86
87
|
// add a failure alarm for the entire pipeline.
|
|
87
88
|
this.failureAlarm = this.addFailureAlarm(props.title);
|
|
@@ -244,7 +245,7 @@ class Pipeline extends monocdk_1.Construct {
|
|
|
244
245
|
throw new Error(`'options.stage.after' must be configured to an existing stage: ${options.stage.after}`);
|
|
245
246
|
}
|
|
246
247
|
const stage = this.getOrCreateStage((_a = options.stage.name) !== null && _a !== void 0 ? _a : 'MergeBack', { justAfter: afterStage });
|
|
247
|
-
stage.addAction(new
|
|
248
|
+
stage.addAction(new aws_cdk_lib_1.aws_codepipeline_actions.CodeBuildAction({
|
|
248
249
|
actionName: 'CreateMergeBackPullRequest',
|
|
249
250
|
project: mergeBack.pr.project,
|
|
250
251
|
input: this.sourceArtifact,
|
|
@@ -267,10 +268,10 @@ class Pipeline extends monocdk_1.Construct {
|
|
|
267
268
|
* The metric that tracks pipeline failures.
|
|
268
269
|
*/
|
|
269
270
|
metricFailures(options) {
|
|
270
|
-
return new
|
|
271
|
+
return new aws_cdk_lib_1.aws_cloudwatch.Metric({
|
|
271
272
|
namespace: METRIC_NAMESPACE,
|
|
272
273
|
metricName: FAILURE_METRIC_NAME,
|
|
273
|
-
|
|
274
|
+
dimensionsMap: {
|
|
274
275
|
Pipeline: this.pipeline.pipelineName,
|
|
275
276
|
},
|
|
276
277
|
statistic: 'Sum',
|
|
@@ -282,10 +283,10 @@ class Pipeline extends monocdk_1.Construct {
|
|
|
282
283
|
*/
|
|
283
284
|
metricActionFailures(options) {
|
|
284
285
|
return (0, util_1.flatMap)(this.pipeline.stages, stage => stage.actions.map(action => {
|
|
285
|
-
return new
|
|
286
|
+
return new aws_cdk_lib_1.aws_cloudwatch.Metric({
|
|
286
287
|
namespace: METRIC_NAMESPACE,
|
|
287
288
|
metricName: FAILURE_METRIC_NAME,
|
|
288
|
-
|
|
289
|
+
dimensionsMap: {
|
|
289
290
|
Pipeline: this.pipeline.pipelineName,
|
|
290
291
|
Action: action.actionProperties.actionName,
|
|
291
292
|
},
|
|
@@ -296,7 +297,7 @@ class Pipeline extends monocdk_1.Construct {
|
|
|
296
297
|
}
|
|
297
298
|
addManualApprovalToStage(stageName, props) {
|
|
298
299
|
const stage = this.getOrCreateStage(stageName);
|
|
299
|
-
stage.addAction(new
|
|
300
|
+
stage.addAction(new aws_cdk_lib_1.aws_codepipeline_actions.ManualApprovalAction(props !== null && props !== void 0 ? props : {
|
|
300
301
|
actionName: 'ManualApprovalAction',
|
|
301
302
|
}));
|
|
302
303
|
}
|
|
@@ -312,8 +313,8 @@ class Pipeline extends monocdk_1.Construct {
|
|
|
312
313
|
if (!this.notify) {
|
|
313
314
|
return;
|
|
314
315
|
}
|
|
315
|
-
buildProject.onBuildFailed('OnBuildFailed').addTarget(new
|
|
316
|
-
message:
|
|
316
|
+
buildProject.onBuildFailed('OnBuildFailed').addTarget(new aws_cdk_lib_1.aws_events_targets.SnsTopic(this.notify, {
|
|
317
|
+
message: aws_cdk_lib_1.aws_events.RuleTargetInput.fromText(message),
|
|
317
318
|
}));
|
|
318
319
|
}
|
|
319
320
|
/**
|
|
@@ -339,4 +340,4 @@ class Pipeline extends monocdk_1.Construct {
|
|
|
339
340
|
}
|
|
340
341
|
}
|
|
341
342
|
exports.Pipeline = Pipeline;
|
|
342
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFDQVdpQjtBQUVqQiw2Q0FBMkQ7QUFDM0QsMkNBQXFEO0FBQ3JELHFDQUErQztBQUMvQywyREFBdUQ7QUFDdkQscURBQWlEO0FBQ2pELHlEQUFxRDtBQUNyRCx5REFBMkM7QUFDM0MsaURBQXdFO0FBRXhFLGlDQUFtRDtBQUNuRCwyQ0FBd0Q7QUFDeEQsaUNBQW9EO0FBRXBELE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDO0FBQ3JDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQztBQUMvQixNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQztBQUN4QyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQztBQXdKdkM7O0dBRUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxtQkFBUztJQStCckMsWUFBWSxNQUFpQixFQUFFLElBQVksRUFBRSxLQUFvQjs7UUFDL0QsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQVZkLFdBQU0sR0FBeUMsRUFBRyxDQUFDO1FBWXpELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUU3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksMEJBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtZQUM1RCxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLHdCQUF3QixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsd0JB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QUMzRCxPQUFPLElBQUEsd0JBQWlCLEVBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRjtBQXRYRCw0QkFzWEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb25zdHJ1Y3QsIER1cmF0aW9uLCBJQ29uc3RydWN0LFxuICBhd3NfY2xvdWR3YXRjaCBhcyBjbG91ZHdhdGNoLFxuICBhd3NfY29kZWJ1aWxkIGFzIGNidWlsZCxcbiAgYXdzX2NvZGVwaXBlbGluZSBhcyBjcGlwZWxpbmUsXG4gIGF3c19jb2RlcGlwZWxpbmVfYWN0aW9ucyBhcyBjcGlwZWxpbmVfYWN0aW9ucyxcbiAgYXdzX2V2ZW50cyBhcyBldmVudHMsXG4gIGF3c19ldmVudHNfdGFyZ2V0cyBhcyBldmVudHNfdGFyZ2V0cyxcbiAgYXdzX2lhbSBhcyBpYW0sIGF3c19zMyBhcyBzMyxcbiAgYXdzX3NucyBhcyBzbnMsXG4gIGF3c19zbnNfc3Vic2NyaXB0aW9ucyBhcyBzbnNfc3Vicyxcbn0gZnJvbSAnbW9ub2Nkayc7XG5cbmltcG9ydCB7IEF1dG9CdWlsZCwgQXV0b0J1aWxkT3B0aW9ucyB9IGZyb20gJy4vYXV0by1idWlsZCc7XG5pbXBvcnQgeyBjcmVhdGVCdWlsZEVudmlyb25tZW50IH0gZnJvbSAnLi9idWlsZC1lbnYnO1xuaW1wb3J0IHsgQ2FuYXJ5LCBDYW5hcnlQcm9wcyB9IGZyb20gJy4vY2FuYXJ5JztcbmltcG9ydCB7IENoYW5nZUNvbnRyb2xsZXIgfSBmcm9tICcuL2NoYW5nZS1jb250cm9sbGVyJztcbmltcG9ydCB7IENoaW1lTm90aWZpZXIgfSBmcm9tICcuL2NoaW1lLW5vdGlmaWVyJztcbmltcG9ydCB7IFBpcGVsaW5lV2F0Y2hlciB9IGZyb20gJy4vcGlwZWxpbmUtd2F0Y2hlcic7XG5pbXBvcnQgKiBhcyBwdWJsaXNoaW5nIGZyb20gJy4vcHVibGlzaGluZyc7XG5pbXBvcnQgeyBBdXRvQnVtcCwgQXV0b01lcmdlQmFjaywgQXV0b0J1bXBQcm9wcyB9IGZyb20gJy4vcHVsbC1yZXF1ZXN0JztcbmltcG9ydCB7IEF1dG9NZXJnZUJhY2tQaXBlbGluZU9wdGlvbnMgfSBmcm9tICcuL3B1bGwtcmVxdWVzdC9tZXJnZS1iYWNrJztcbmltcG9ydCB7IElSZXBvLCBXcml0YWJsZUdpdEh1YlJlcG8gfSBmcm9tICcuL3JlcG8nO1xuaW1wb3J0IHsgU2hlbGxhYmxlLCBTaGVsbGFibGVQcm9wcyB9IGZyb20gJy4vc2hlbGxhYmxlJztcbmltcG9ydCB7IGRldGVybWluZVJ1bk9yZGVyLCBmbGF0TWFwIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgUFVCTElTSF9TVEFHRV9OQU1FID0gJ1B1Ymxpc2gnO1xuY29uc3QgVEVTVF9TVEFHRV9OQU1FID0gJ1Rlc3QnO1xuY29uc3QgTUVUUklDX05BTUVTUEFDRSA9ICdDREsvRGVsaXZsaWInO1xuY29uc3QgRkFJTFVSRV9NRVRSSUNfTkFNRSA9ICdGYWlsdXJlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgc291cmNlIHJlcG9zaXRvcnkgdG8gYnVpbGQgKGUuZy4gR2l0SHViUmVwbykuXG4gICAqL1xuICByZWFkb25seSByZXBvOiBJUmVwbztcblxuICAvKipcbiAgICogQSBkaXNwbGF5IG5hbWUgZm9yIHRoaXMgcGlwZWxpbmUuXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBwaHlzaWNhbCBuYW1lIGZvciB0aGlzIHBpcGVsaW5lLlxuICAgKiBAZGVmYXVsdCAtIGEgbmV3IG5hbWUgd2lsbCBiZSBnZW5lcmF0ZWQuXG4gICAqL1xuICByZWFkb25seSBwaXBlbGluZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJyYW5jaCB0byBidWlsZC5cbiAgICogQGRlZmF1bHQgbWFzdGVyXG4gICAqL1xuICByZWFkb25seSBicmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVtYWlsIHRvIHNlbmQgZmFpbHVyZSBub3RpZmljYXRpb25zLlxuICAgKiBAZGVmYXVsdCAtIE5vIGVtYWlsIG5vdGlmaWNhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbkVtYWlsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW1hZ2UgdXNlZCBmb3IgdGhlIGJ1aWxkcy5cbiAgICpcbiAgICogQGRlZmF1bHQganNpaS9zdXBlcmNoYWluIChzZWUgZG9jcylcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSW1hZ2U/OiBjYnVpbGQuSUJ1aWxkSW1hZ2U7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHdpbGwgYmUgcGFydCBvZiB0aGlzIHBpcGVsaW5lLlxuICAgKiBAZGVmYXVsdCAtIGAke3BpcGVsaW5lTmFtZX0tQnVpbGRgLCBpZiBgcGlwZWxpbmVOYW1lYCBwcm9wZXJ0eSBpcyBzcGVjaWZpZWQ7IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLCBvdGhlcndpc2UuXG4gICAqL1xuICByZWFkb25seSBidWlsZFByb2plY3ROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBjb21wdXRlIHRvIHVzZSBmb3IgdGhpcyBidWlsZC5cbiAgICogU2VlIHRoZSB7QGxpbmsgQ29tcHV0ZVR5cGV9IGVudW0gZm9yIHRoZSBwb3NzaWJsZSB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRha2VuIGZyb20ge0BsaW5rICNidWlsZEltYWdlI2RlZmF1bHRDb21wdXRlVHlwZX1cbiAgICovXG4gIHJlYWRvbmx5IGNvbXB1dGVUeXBlPzogY2J1aWxkLkNvbXB1dGVUeXBlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaG93IHRoZSBwcm9qZWN0IGJ1aWxkcyBEb2NrZXIgaW1hZ2VzLiBTcGVjaWZ5IHRydWUgdG8gZW5hYmxlXG4gICAqIHJ1bm5pbmcgdGhlIERvY2tlciBkYWVtb24gaW5zaWRlIGEgRG9ja2VyIGNvbnRhaW5lci4gVGhpcyB2YWx1ZSBtdXN0IGJlXG4gICAqIHNldCB0byB0cnVlIG9ubHkgaWYgdGhpcyBidWlsZCBwcm9qZWN0IHdpbGwgYmUgdXNlZCB0byBidWlsZCBEb2NrZXJcbiAgICogaW1hZ2VzLCBhbmQgdGhlIHNwZWNpZmllZCBidWlsZCBlbnZpcm9ubWVudCBpbWFnZSBpcyBub3Qgb25lIHByb3ZpZGVkIGJ5XG4gICAqIEFXUyBDb2RlQnVpbGQgd2l0aCBEb2NrZXIgc3VwcG9ydC4gT3RoZXJ3aXNlLCBhbGwgYXNzb2NpYXRlZCBidWlsZHMgdGhhdFxuICAgKiBhdHRlbXB0IHRvIGludGVyYWN0IHdpdGggdGhlIERvY2tlciBkYWVtb24gd2lsbCBmYWlsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmlsZWdlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcyB0byBwYXNzIHRvIGJ1aWxkXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGJ1aWxkc3BlYywgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gYSBidWlsZHNwZWMueW1sIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkU3BlYz86IGNidWlsZC5CdWlsZFNwZWM7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIHJlLXJ1biB0aGUgcGlwZWxpbmUgYWZ0ZXIgeW91J3ZlIHVwZGF0ZWQgaXQuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgY29uY3VycmVuY3kgbGltaXQgdGVzdCBhbmQgcHVibGlzaCBzdGFnZXMuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBpZiB0aGlzIHZhbHVlIGlzIDIsIHRoZW4gb25seSB0d28gYWN0aW9ucyB3aWxsIGV4ZWN1dGUgY29uY3VycmVudGx5LlxuICAgKiBJZiB0aGlzIHZhbHVlIGlzIDEsIHRoZSBwaXBlbGluZSB3aWxsIG5vdCBoYXZlIGFueSBjb25jdXJyZW50IGV4ZWN1dGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBsaW1pdFxuICAgKi9cbiAgcmVhZG9ubHkgY29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZGVmYXVsdCBkcnlSdW4gZm9yIGFsbCBwdWJsaXNoaW5nIHN0ZXBzXG4gICAqXG4gICAqIChDYW4gc3RpbGwgYmUgY2hhbmdlZCB3aGVuIGFkZGluZyBhIHN0ZXApLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSBidWlsZCBjb21taXRzIHRoYXQgYXJlIHB1c2hlZCB0byB0aGlzIHJlcG9zaXRvcnksIGluY2x1ZGluZyBQUiBidWlsZHMgb24gZ2l0aHViLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0J1aWxkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgYXV0by1idWlsZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtICdhdXRvQnVpbGRPcHRpb25zLnB1YmxpY0xvZ3MnIHdpbGwgYmUgc2V0IHRvIGl0cyBkZWZhdWx0LiAnYXV0b0J1aWxkT3B0aW9ucy5idWlsZHNwZWMnIHdpbGwgYmUgY29uZmlndXJlZCB0byBtYXRjaCB3aXRoIHRoZVxuICAgKiAnYnVpbGRTcGVjJyBwcm9wZXJ0eS5cbiAgICovXG4gIHJlYWRvbmx5IGF1dG9CdWlsZE9wdGlvbnM/OiBBdXRvQnVpbGRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBQb3N0IGEgbm90aWZpY2F0aW9uIHRvIHRoZSBnaXZlbiBDaGltZSB3ZWJob29rcyBpZiB0aGUgcGlwZWxpbmUgZmFpbHNcbiAgICogQGRlZmF1bHQgLSBubyBDaGltZSBub3RpZmljYXRpb25zIG9uIHBpcGVsaW5lIGZhaWx1cmVcbiAgICogQGRlcHJlY2F0ZWQgLSB1c2UgYG5vdGlmeU9uRmFpbHVyZSgpYCBpbnN0ZWFkIGluIGNvbWJpbmF0aW9uIHdpdGggYFBpcGVsaW5lTm90aWZpY2F0aW9uLmNoaW1lKClgLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hpbWVGYWlsdXJlV2ViaG9va3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIENoaW1lIG1lc3NhZ2UgdG8gcG9zdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEEgZGVmYXVsdCBtZXNzYWdlXG4gICAqL1xuICByZWFkb25seSBjaGltZU1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRpbWVvdXRcbiAgICpcbiAgICogSG93IGxvbmcgdGhlIGJ1aWxkIGNhbiB0YWtlIGF0IG1heGltdW0gKGJlZm9yZSBmYWlsaW5nIHdpdGggYW4gZXJyb3IpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIER1cmF0aW9uLmhvdXJzKDgpXG4gICAqL1xuICByZWFkb25seSBidWlsZFRpbWVvdXQ/OiBEdXJhdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZU5vdGlmaWNhdGlvbkJpbmRPcHRpb25zIHtcbiAgcmVhZG9ubHkgcGlwZWxpbmU6IFBpcGVsaW5lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQaXBlbGluZU5vdGlmaWNhdGlvbiB7XG4gIGJpbmQocGlwZWxpbmU6IFBpcGVsaW5lTm90aWZpY2F0aW9uQmluZE9wdGlvbnMpOiB2b2lkO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIGFuIGF1dG8gYnVtcCBmb3IgdGhpcyBwaXBlbGluZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvQnVtcE9wdGlvbnMgZXh0ZW5kcyBPbWl0PEF1dG9CdW1wUHJvcHMsICdyZXBvJz4ge1xufVxuXG4vKipcbiAqIERlZmluZXMgYSBkZWxpdmxpYiBDSS9DRCBwaXBlbGluZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFBpcGVsaW5lIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIGJ1aWxkUm9sZT86IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IGZhaWx1cmVBbGFybTogY2xvdWR3YXRjaC5BbGFybTtcbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkT3V0cHV0OiBjcGlwZWxpbmUuQXJ0aWZhY3Q7XG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2VBcnRpZmFjdDogY3BpcGVsaW5lLkFydGlmYWN0O1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpbWFyeSBDb2RlQnVpbGQgcHJvamVjdCBvZiB0aGlzIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkUHJvamVjdDogY2J1aWxkLklQcm9qZWN0O1xuXG4gIC8qKlxuICAgKiBUaGUgYXV0byBidWlsZCBwcm9qZWN0LiB1bmRlZmluZWQgaWYgJ2F1dG9CdWlsZCcgaXMgZGlzYWJsZWQgZm9yIHRoaXMgcGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXV0b0J1aWxkUHJvamVjdD86IGNidWlsZC5Qcm9qZWN0O1xuXG4gIC8qXG4gICAqIFRoZSB1bmRlcmx5aW5nIENvZGVQaXBlbGluZSBQaXBlbGluZSBvYmplY3QgdGhhdCBtb2RlbHMgdGhpcyBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwaXBlbGluZTogY3BpcGVsaW5lLlBpcGVsaW5lO1xuICBwcml2YXRlIHJlYWRvbmx5IGJyYW5jaDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmeT86IHNucy5Ub3BpYztcbiAgcHJpdmF0ZSBzdGFnZXM6IHsgW25hbWU6IHN0cmluZ106IGNwaXBlbGluZS5JU3RhZ2UgfSA9IHsgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbmN1cnJlbmN5PzogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlcG86IElSZXBvO1xuICBwcml2YXRlIHJlYWRvbmx5IGRyeVJ1bjogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBidWlsZEVudmlyb25tZW50OiBjYnVpbGQuQnVpbGRFbnZpcm9ubWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBidWlsZFNwZWM/OiBjYnVpbGQuQnVpbGRTcGVjO1xuICBwcml2YXRlIGZpcnN0UHVibGlzaFN0YWdlTmFtZT86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogUGlwZWxpbmVQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgbmFtZSk7XG5cbiAgICB0aGlzLmNvbmN1cnJlbmN5ID0gcHJvcHMuY29uY3VycmVuY3k7XG4gICAgdGhpcy5yZXBvID0gcHJvcHMucmVwbztcbiAgICB0aGlzLmRyeVJ1biA9ICEhcHJvcHMuZHJ5UnVuO1xuXG4gICAgdGhpcy5waXBlbGluZSA9IG5ldyBjcGlwZWxpbmUuUGlwZWxpbmUodGhpcywgJ0J1aWxkUGlwZWxpbmUnLCB7XG4gICAgICBwaXBlbGluZU5hbWU6IHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgIHJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZTogcHJvcHMucmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlID09PSB1bmRlZmluZWQgPyB0cnVlIDogcHJvcHMucmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5icmFuY2ggPSBwcm9wcy5icmFuY2ggfHwgJ21hc3Rlcic7XG4gICAgdGhpcy5zb3VyY2VBcnRpZmFjdCA9IHByb3BzLnJlcG8uY3JlYXRlU291cmNlU3RhZ2UodGhpcy5waXBlbGluZSwgdGhpcy5icmFuY2gpO1xuXG4gICAgdGhpcy5idWlsZEVudmlyb25tZW50ID0gY3JlYXRlQnVpbGRFbnZpcm9ubWVudChwcm9wcyk7XG4gICAgdGhpcy5idWlsZFNwZWMgPSBwcm9wcy5idWlsZFNwZWM7XG5cbiAgICBsZXQgYnVpbGRQcm9qZWN0TmFtZSA9IHByb3BzLmJ1aWxkUHJvamVjdE5hbWU7XG4gICAgaWYgKGJ1aWxkUHJvamVjdE5hbWUgPT09IHVuZGVmaW5lZCAmJiBwcm9wcy5waXBlbGluZU5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYnVpbGRQcm9qZWN0TmFtZSA9IGAke3Byb3BzLnBpcGVsaW5lTmFtZX0tQnVpbGRgO1xuICAgIH1cbiAgICB0aGlzLmJ1aWxkUHJvamVjdCA9IG5ldyBjYnVpbGQuUGlwZWxpbmVQcm9qZWN0KHRoaXMsICdCdWlsZFByb2plY3QnLCB7XG4gICAgICBwcm9qZWN0TmFtZTogYnVpbGRQcm9qZWN0TmFtZSxcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLmJ1aWxkRW52aXJvbm1lbnQsXG4gICAgICBidWlsZFNwZWM6IHRoaXMuYnVpbGRTcGVjLFxuICAgICAgdGltZW91dDogcHJvcHMuYnVpbGRUaW1lb3V0ID8/IER1cmF0aW9uLmhvdXJzKDgpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5idWlsZFJvbGUgPSB0aGlzLmJ1aWxkUHJvamVjdC5yb2xlO1xuXG4gICAgY29uc3QgYnVpbGRTdGFnZSA9IHRoaXMuZ2V0T3JDcmVhdGVTdGFnZSgnQnVpbGQnKTtcbiAgICBjb25zdCBidWlsZE91dHB1dCA9IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKTtcbiAgICBidWlsZFN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6ICdCdWlsZCcsXG4gICAgICBwcm9qZWN0OiB0aGlzLmJ1aWxkUHJvamVjdCxcbiAgICAgIGlucHV0OiB0aGlzLnNvdXJjZUFydGlmYWN0LFxuICAgICAgb3V0cHV0czogW2J1aWxkT3V0cHV0XSxcbiAgICB9KSk7XG4gICAgdGhpcy5idWlsZE91dHB1dCA9IGJ1aWxkT3V0cHV0O1xuXG4gICAgaWYgKHByb3BzLm5vdGlmaWNhdGlvbkVtYWlsKSB7XG4gICAgICB0aGlzLm5vdGlmeSA9IG5ldyBzbnMuVG9waWModGhpcywgJ05vdGlmaWNhdGlvbnNUb3BpYycpO1xuICAgICAgdGhpcy5ub3RpZnkuYWRkU3Vic2NyaXB0aW9uKG5ldyBzbnNfc3Vicy5FbWFpbFN1YnNjcmlwdGlvbihwcm9wcy5ub3RpZmljYXRpb25FbWFpbCkpO1xuICAgIH1cblxuICAgIC8vIGFkZCBhIGZhaWx1cmUgYWxhcm0gZm9yIHRoZSBlbnRpcmUgcGlwZWxpbmUuXG4gICAgdGhpcy5mYWlsdXJlQWxhcm0gPSB0aGlzLmFkZEZhaWx1cmVBbGFybShwcm9wcy50aXRsZSk7XG5cbiAgICAvLyBlbWl0IGFuIFNOUyBub3RpZmljYXRpb24gZXZlcnkgdGltZSBidWlsZCBmYWlscy5cbiAgICB0aGlzLmFkZEJ1aWxkRmFpbHVyZU5vdGlmaWNhdGlvbih0aGlzLmJ1aWxkUHJvamVjdCwgYCR7cHJvcHMudGl0bGV9IGJ1aWxkIGZhaWxlZGApO1xuXG4gICAgLy8gQWxzbyBlbWl0IHRvIENoaW1lIHdlYmhvb2tzIGlmIGNvbmZpZ3VyZWRcbiAgICBpZiAocHJvcHMuY2hpbWVGYWlsdXJlV2ViaG9va3MpIHtcbiAgICAgIG5ldyBDaGltZU5vdGlmaWVyKHRoaXMsICdDaGltZU5vdGlmaWVyJywge1xuICAgICAgICBwaXBlbGluZTogdGhpcy5waXBlbGluZSxcbiAgICAgICAgbWVzc2FnZTogcHJvcHMuY2hpbWVNZXNzYWdlLFxuICAgICAgICB3ZWJob29rVXJsczogcHJvcHMuY2hpbWVGYWlsdXJlV2ViaG9va3MsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuYXV0b0J1aWxkKSB7XG4gICAgICB0aGlzLmF1dG9CdWlsZFByb2plY3QgPSB0aGlzLmF1dG9CdWlsZChwcm9wcy5hdXRvQnVpbGRPcHRpb25zKS5wcm9qZWN0O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBub3RpZnlPbkZhaWx1cmUobm90aWZpY2F0aW9uOiBJUGlwZWxpbmVOb3RpZmljYXRpb24pIHtcbiAgICBub3RpZmljYXRpb24uYmluZCh7XG4gICAgICBwaXBlbGluZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gYWN0aW9uIHRvIHJ1biBhIHNoZWxsIHNjcmlwdCB0byB0aGUgcGlwZWxpbmVcbiAgICpcbiAgICogQHJldHVybiBUaGUgU2hlbGxhYmxlIGFuZCB0aGUgQWN0aW9uIGFkZGVkIHRvIHRoZSBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyBhZGRTaGVsbGFibGUoc3RhZ2VOYW1lOiBzdHJpbmcsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFNoZWxsYWJsZU9wdGlvbnMpOiB7XG4gICAgc2hlbGxhYmxlOiBTaGVsbGFibGU7IGFjdGlvbjogY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uO30ge1xuICAgIGNvbnN0IHN0YWdlID0gdGhpcy5nZXRPckNyZWF0ZVN0YWdlKHN0YWdlTmFtZSk7XG5cbiAgICBjb25zdCBzaCA9IG5ldyBTaGVsbGFibGUodGhpcywgaWQsIG9wdGlvbnMpO1xuICAgIGNvbnN0IGFjdGlvbiA9IHNoLmFkZFRvUGlwZWxpbmUoXG4gICAgICBzdGFnZSxcbiAgICAgIG9wdGlvbnMuYWN0aW9uTmFtZSB8fCBgQWN0aW9uJHtpZH1gLFxuICAgICAgb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IHRoaXMuYnVpbGRPdXRwdXQsXG4gICAgICB0aGlzLmRldGVybWluZVJ1bk9yZGVyRm9yTmV3QWN0aW9uKHN0YWdlKSk7XG5cbiAgICBpZiAob3B0aW9ucy5mYWlsdXJlTm90aWZpY2F0aW9uKSB7XG4gICAgICB0aGlzLmFkZEJ1aWxkRmFpbHVyZU5vdGlmaWNhdGlvbihzaC5wcm9qZWN0LCBvcHRpb25zLmZhaWx1cmVOb3RpZmljYXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiB7IHNoZWxsYWJsZTogc2gsIGFjdGlvbiB9O1xuICB9XG5cbiAgcHVibGljIGFkZFRlc3QoaWQ6IHN0cmluZywgcHJvcHM6IFNoZWxsYWJsZVByb3BzKToge3NoZWxsYWJsZTogU2hlbGxhYmxlOyBhY3Rpb246IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbn0ge1xuICAgIHJldHVybiB0aGlzLmFkZFNoZWxsYWJsZShURVNUX1NUQUdFX05BTUUsIGlkLCB7XG4gICAgICBhY3Rpb25OYW1lOiBgVGVzdCR7aWR9YCxcbiAgICAgIGZhaWx1cmVOb3RpZmljYXRpb246IGBUZXN0ICR7aWR9IGZhaWxlZGAsXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZW5pZW5jZS9kaXNjb3ZlcnkgbWV0aG9kIHRoYXQgZGVmaW5lcyBhIGNhbmFyeSB0ZXN0IGluIHlvdXIgYWNjb3VudC5cbiAgICogQHBhcmFtIGlkIHRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIHByb3BzIGNhbmFyeSBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgYWRkQ2FuYXJ5KGlkOiBzdHJpbmcsIHByb3BzOiBDYW5hcnlQcm9wcykge1xuICAgIHJldHVybiBuZXcgQ2FuYXJ5KHRoaXMsIGBDYW5hcnkke2lkfWAsIHByb3BzKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRQdWJsaXNoKHB1Ymxpc2hlcjogSVB1Ymxpc2hlciwgb3B0aW9uczogQWRkUHVibGlzaE9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHB1Ymxpc2hTdGFnZU5hbWUgPSBvcHRpb25zLnN0YWdlTmFtZSA/PyBQVUJMSVNIX1NUQUdFX05BTUU7XG4gICAgaWYgKCF0aGlzLmZpcnN0UHVibGlzaFN0YWdlTmFtZSkge1xuICAgICAgdGhpcy5maXJzdFB1Ymxpc2hTdGFnZU5hbWUgPSBwdWJsaXNoU3RhZ2VOYW1lO1xuICAgIH1cbiAgICBjb25zdCBzdGFnZSA9IHRoaXMuZ2V0T3JDcmVhdGVTdGFnZShwdWJsaXNoU3RhZ2VOYW1lKTtcblxuICAgIHB1Ymxpc2hlci5hZGRUb1BpcGVsaW5lKHN0YWdlLCBgJHtwdWJsaXNoZXIubm9kZS5pZH1QdWJsaXNoYCwge1xuICAgICAgaW5wdXRBcnRpZmFjdDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IHRoaXMuYnVpbGRPdXRwdXQsXG4gICAgICBydW5PcmRlcjogdGhpcy5kZXRlcm1pbmVSdW5PcmRlckZvck5ld0FjdGlvbihzdGFnZSksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGNoYW5nZSBjb250cm9sIHBvbGljeSB0byBibG9jayB0cmFuc2l0aW9ucyBpbnRvIHRoZSBwdWJsaXNoIHN0YWdlIGR1cmluZyBjZXJ0YWluIHRpbWUgd2luZG93cy5cbiAgICogQHBhcmFtIG9wdGlvbnMgdGhlIG9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBjaGFuZ2UgY29udHJvbCBwb2xpY3kuXG4gICAqL1xuICBwdWJsaWMgYWRkQ2hhbmdlQ29udHJvbChvcHRpb25zOiBBZGRDaGFuZ2VDb250cm9sT3B0aW9ucyA9IHsgfSk6IENoYW5nZUNvbnRyb2xsZXIge1xuICAgIGNvbnN0IHB1Ymxpc2hTdGFnZSA9IHRoaXMuZ2V0U3RhZ2UodGhpcy5maXJzdFB1Ymxpc2hTdGFnZU5hbWUgPz8gUFVCTElTSF9TVEFHRV9OQU1FKTtcbiAgICBpZiAoIXB1Ymxpc2hTdGFnZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGlzIHBpcGVsaW5lIGRvZXMgbm90IGhhdmUgYSAke1BVQkxJU0hfU1RBR0VfTkFNRX0gc3RhZ2UgeWV0LiBBZGQgb25lIGZpcnN0LmApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgQ2hhbmdlQ29udHJvbGxlcih0aGlzLCAnQ2hhbmdlQ29udHJvbGxlcicsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBwaXBlbGluZVN0YWdlOiBwdWJsaXNoU3RhZ2UsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaFRvTnBtKG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaFRvTnBtUHJvamVjdFByb3BzICYgQWRkUHVibGlzaE9wdGlvbnMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaFRvTnBtUHJvamVjdCh0aGlzLCAnTnBtJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSksIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb01hdmVuKG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaFRvTWF2ZW5Qcm9qZWN0UHJvcHMgJiBBZGRQdWJsaXNoT3B0aW9ucykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9NYXZlblByb2plY3QodGhpcywgJ01hdmVuJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSksIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb051R2V0KG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaFRvTnVHZXRQcm9qZWN0UHJvcHMgJiBBZGRQdWJsaXNoT3B0aW9ucykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9OdUdldFByb2plY3QodGhpcywgJ051R2V0Jywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSksIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb0dpdEh1YlBhZ2VzKG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaERvY3NUb0dpdEh1YlByb2plY3RQcm9wcyAmIEFkZFB1Ymxpc2hPcHRpb25zKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0KHRoaXMsICdHaXRIdWJQYWdlcycsIHtcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBwdWJsaXNoVG9HaXRIdWIob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9HaXRIdWJQcm9wcyAmIEFkZFB1Ymxpc2hPcHRpb25zKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hUb0dpdEh1Yih0aGlzLCAnR2l0SHViJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSksIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb1B5UEkob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9QeVBpUHJvcHMgJiBBZGRQdWJsaXNoT3B0aW9ucykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9QeVBpKHRoaXMsICdQeVBJJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSksIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb1MzKGlkOiBzdHJpbmcsIG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaFRvUzNQcm9wcyAmIEFkZFB1Ymxpc2hPcHRpb25zKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hUb1MzKHRoaXMsIGlkLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUHVibGlzaCBHb2xhbmcgY29kZSBmcm9tIGBnb2AgZGlyZWN0b3J5IGluIGJ1aWxkIGFydGlmYWN0IHRvIGEgR2l0SHViIHJlcG9zaXRvcnkuXG4gICAqL1xuICBwdWJsaWMgcHVibGlzaFRvR29sYW5nKG9wdGlvbnM6IHB1Ymxpc2hpbmcuUHVibGlzaFRvR29sYW5nUHJvcHMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaFRvR29sYW5nKHRoaXMsICdHb2xhbmcnLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBhdXRvbWF0aWMgYnVtcHMgZm9yIHRoZSBzb3VyY2UgcmVwby5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgYXV0byBidW1wIChzZWUgQXV0b0J1bXBPcHRpb25zIGZvciBkZXNjcmlwdGlvbiBvZiBkZWZhdWx0cylcbiAgICovXG4gIHB1YmxpYyBhdXRvQnVtcChvcHRpb25zPzogQXV0b0J1bXBPcHRpb25zKTogQXV0b0J1bXAge1xuICAgIGlmICghV3JpdGFibGVHaXRIdWJSZXBvLmlzV3JpdGFibGVHaXRIdWJSZXBvKHRoaXMucmVwbykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCJyZXBvXCIgbXVzdCBiZSBhIFdyaXRhYmxlR2l0SHViUmVwbyBpbiBvcmRlciB0byBlbmFibGUgYXV0by1idW1wJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYXV0b0J1bXAgPSBuZXcgQXV0b0J1bXAodGhpcywgJ0F1dG9CdW1wJywge1xuICAgICAgcmVwbzogdGhpcy5yZXBvLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHJldHVybiBhdXRvQnVtcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGF1dG9tYXRpYyBtZXJnZSBiYWNrcyBmb3IgdGhlIHNvdXJjZSByZXBvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBhdXRvIGJ1bXAgKHNlZSBBdXRvTWVyZ2VCYWNrUGlwZWxpbmVPcHRpb25zIGZvciBkZXNjcmlwdGlvbiBvZiBkZWZhdWx0cylcbiAgICovXG4gIHB1YmxpYyBhdXRvTWVyZ2VCYWNrKG9wdGlvbnM/OiBBdXRvTWVyZ2VCYWNrUGlwZWxpbmVPcHRpb25zKSB7XG4gICAgaWYgKCFXcml0YWJsZUdpdEh1YlJlcG8uaXNXcml0YWJsZUdpdEh1YlJlcG8odGhpcy5yZXBvKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcInJlcG9cIiBtdXN0IGJlIGEgV3JpdGFibGVHaXRIdWJSZXBvIGluIG9yZGVyIHRvIGVuYWJsZSBhdXRvLW1lcmdlLWJhY2snKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXJnZUJhY2sgPSBuZXcgQXV0b01lcmdlQmFjayh0aGlzLCAnTWVyZ2VCYWNrJywge1xuICAgICAgcmVwbzogdGhpcy5yZXBvLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zPy5zdGFnZSkge1xuXG4gICAgICBjb25zdCBhZnRlclN0YWdlID0gdGhpcy5nZXRTdGFnZShvcHRpb25zLnN0YWdlLmFmdGVyKTtcblxuICAgICAgaWYgKCFhZnRlclN0YWdlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJ29wdGlvbnMuc3RhZ2UuYWZ0ZXInIG11c3QgYmUgY29uZmlndXJlZCB0byBhbiBleGlzdGluZyBzdGFnZTogJHtvcHRpb25zLnN0YWdlLmFmdGVyfWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdGFnZSA9IHRoaXMuZ2V0T3JDcmVhdGVTdGFnZShvcHRpb25zLnN0YWdlLm5hbWUgPz8gJ01lcmdlQmFjaycsIHsganVzdEFmdGVyOiBhZnRlclN0YWdlIH0pO1xuICAgICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgICBhY3Rpb25OYW1lOiAnQ3JlYXRlTWVyZ2VCYWNrUHVsbFJlcXVlc3QnLFxuICAgICAgICBwcm9qZWN0OiBtZXJnZUJhY2sucHIucHJvamVjdCxcbiAgICAgICAgaW5wdXQ6IHRoaXMuc291cmNlQXJ0aWZhY3QsXG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgYXV0b21hdGljIGJ1aWxkcyBvZiBwdWxsIHJlcXVlc3RzIGluIHRoZSBHaXRodWIgcmVwb3NpdG9yeSBhbmQgcG9zdHMgdGhlXG4gICAqIHJlc3VsdHMgYmFjayBhcyBhIGNvbW1lbnQgd2l0aCBhIHB1YmxpYyBsaW5rIHRvIHRoZSBidWlsZCBsb2dzLlxuICAgKi9cbiAgcHVibGljIGF1dG9CdWlsZChvcHRpb25zOiBBdXRvQnVpbGRPcHRpb25zID0geyB9KTogQXV0b0J1aWxkIHtcbiAgICByZXR1cm4gbmV3IEF1dG9CdWlsZCh0aGlzLCAnQXV0b0J1aWxkJywge1xuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuYnVpbGRFbnZpcm9ubWVudCxcbiAgICAgIHJlcG86IHRoaXMucmVwbyxcbiAgICAgIGJ1aWxkU3BlYzogb3B0aW9ucy5idWlsZFNwZWMgfHwgdGhpcy5idWlsZFNwZWMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWMgdGhhdCB0cmFja3MgcGlwZWxpbmUgZmFpbHVyZXMuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljRmFpbHVyZXMob3B0aW9uczogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNfTkFNRVNQQUNFLFxuICAgICAgbWV0cmljTmFtZTogRkFJTFVSRV9NRVRSSUNfTkFNRSxcbiAgICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgICAgUGlwZWxpbmU6IHRoaXMucGlwZWxpbmUucGlwZWxpbmVOYW1lLFxuICAgICAgfSxcbiAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWNzIHRoYXQgdHJhY2sgZmFpbHVyZSBvZiBlYWNoIGFjdGlvbiB3aXRoaW4gdGhlIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0FjdGlvbkZhaWx1cmVzKG9wdGlvbnM6IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljW10ge1xuICAgIHJldHVybiBmbGF0TWFwKHRoaXMucGlwZWxpbmUuc3RhZ2VzLCBzdGFnZSA9PiBzdGFnZS5hY3Rpb25zLm1hcChhY3Rpb24gPT4ge1xuICAgICAgcmV0dXJuIG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICAgIG5hbWVzcGFjZTogTUVUUklDX05BTUVTUEFDRSxcbiAgICAgICAgbWV0cmljTmFtZTogRkFJTFVSRV9NRVRSSUNfTkFNRSxcbiAgICAgICAgZGltZW5zaW9uczoge1xuICAgICAgICAgIFBpcGVsaW5lOiB0aGlzLnBpcGVsaW5lLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgICBBY3Rpb246IGFjdGlvbi5hY3Rpb25Qcm9wZXJ0aWVzLmFjdGlvbk5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgYWRkTWFudWFsQXBwcm92YWxUb1N0YWdlKHN0YWdlTmFtZTogc3RyaW5nLCBwcm9wcz86IGNwaXBlbGluZV9hY3Rpb25zLk1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHMpIHtcbiAgICBjb25zdCBzdGFnZSA9IHRoaXMuZ2V0T3JDcmVhdGVTdGFnZShzdGFnZU5hbWUpO1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuTWFudWFsQXBwcm92YWxBY3Rpb24ocHJvcHMgPz8ge1xuICAgICAgYWN0aW9uTmFtZTogJ01hbnVhbEFwcHJvdmFsQWN0aW9uJyxcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEZhaWx1cmVBbGFybSh0aXRsZT86IHN0cmluZyk6IGNsb3Vkd2F0Y2guQWxhcm0ge1xuICAgIHJldHVybiBuZXcgUGlwZWxpbmVXYXRjaGVyKHRoaXMsICdQaXBlbGluZVdhdGNoZXInLCB7XG4gICAgICBwaXBlbGluZTogdGhpcy5waXBlbGluZSxcbiAgICAgIG1ldHJpY05hbWVzcGFjZTogTUVUUklDX05BTUVTUEFDRSxcbiAgICAgIGZhaWx1cmVNZXRyaWNOYW1lOiBGQUlMVVJFX01FVFJJQ19OQU1FLFxuICAgICAgdGl0bGUsXG4gICAgfSkuYWxhcm07XG4gIH1cblxuICBwcml2YXRlIGFkZEJ1aWxkRmFpbHVyZU5vdGlmaWNhdGlvbihidWlsZFByb2plY3Q6IGNidWlsZC5JUHJvamVjdCwgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLm5vdGlmeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGJ1aWxkUHJvamVjdC5vbkJ1aWxkRmFpbGVkKCdPbkJ1aWxkRmFpbGVkJykuYWRkVGFyZ2V0KG5ldyBldmVudHNfdGFyZ2V0cy5TbnNUb3BpYyh0aGlzLm5vdGlmeSwge1xuICAgICAgbWVzc2FnZTogZXZlbnRzLlJ1bGVUYXJnZXRJbnB1dC5mcm9tVGV4dChtZXNzYWdlKSxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgdGhlIHN0YWdlIG9yIHVuZGVmaW5lZCBpZiB0aGUgc3RhZ2UgZG9lc24ndCBleGlzdFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTdGFnZShzdGFnZU5hbWU6IHN0cmluZyk6IGNwaXBlbGluZS5JU3RhZ2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnN0YWdlc1tzdGFnZU5hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPckNyZWF0ZVN0YWdlKHN0YWdlTmFtZTogc3RyaW5nLCBwbGFjZW1lbnQ/OiBjcGlwZWxpbmUuU3RhZ2VQbGFjZW1lbnQpOiBjcGlwZWxpbmUuSVN0YWdlIHtcbiAgICAvLyBvdGhlcndpc2UsIGdyb3VwIGFsbCBhY3Rpb25zIHNvIHRoZXkgcnVuIGNvbmN1cnJlbnRseS5cbiAgICBsZXQgc3RhZ2UgPSB0aGlzLmdldFN0YWdlKHN0YWdlTmFtZSk7XG4gICAgaWYgKCFzdGFnZSkge1xuICAgICAgc3RhZ2UgPSB0aGlzLnBpcGVsaW5lLmFkZFN0YWdlKHtcbiAgICAgICAgc3RhZ2VOYW1lLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc3RhZ2VzW3N0YWdlTmFtZV0gPSBzdGFnZTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRlcm1pbmVSdW5PcmRlckZvck5ld0FjdGlvbihzdGFnZTogY3BpcGVsaW5lLklTdGFnZSk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGRldGVybWluZVJ1bk9yZGVyKHN0YWdlLmFjdGlvbnMubGVuZ3RoLCB0aGlzLmNvbmN1cnJlbmN5KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQdWJsaXNoZXIgZXh0ZW5kcyBJQ29uc3RydWN0IHtcbiAgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFRvUGlwZWxpbmVPcHRpb25zIHtcbiAgaW5wdXRBcnRpZmFjdD86IGNwaXBlbGluZS5BcnRpZmFjdDtcbiAgcnVuT3JkZXI/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQ2hhbmdlQ29udHJvbE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGJ1Y2tldCBpbiB3aGljaCB0aGUgQ2hhbmdlQ29udHJvbCBpQ2FsIGRvY3VtZW50IHdpbGwgYmUgc3RvcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBhIG5ldyBidWNrZXQgd2lsbCBiZSBwcm92aXNpb25lZC5cbiAgICovXG4gIGNoYW5nZUNvbnRyb2xCdWNrZXQ/OiBzMy5JQnVja2V0O1xuXG4gIC8qKlxuICAgKiBUaGUga2V5IGluIHdoaWNoIHRoZSBpQ2FsIGZpbGxlIHdpbGwgYmUgc3RvcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnY2hhbmdlLWNvbnRyb2wuaWNhbCdcbiAgICovXG4gIGNoYW5nZUNvbnRyb2xPYmplY3RLZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlIHRvIHJ1biB0aGUgY2hhbmdlIGNvbnRyb2xsZXIgb25cbiAgICpcbiAgICogQGRlZmF1bHQgcmF0ZSgxNSBtaW51dGVzKVxuICAgKi9cbiAgc2NoZWR1bGVFeHByZXNzaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFB1Ymxpc2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBhcnRpZmFjdCB0byB1c2VcbiAgICpcbiAgICogQGRlZmF1bHQgQnVpbGQgb3V0cHV0IGFydGlmYWN0XG4gICAqL1xuICBpbnB1dEFydGlmYWN0PzogY3BpcGVsaW5lLkFydGlmYWN0O1xuXG4gIC8qKlxuICAgKiBTdGFnZSBuYW1lIHRvIGFkZCBwdWJsaXNoaW5nIGpvYiB0b1xuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGlzIHdpbGwgYmUgdGhlIHN0YWdlIG5hbWUgYCdQdWJsaXNoJ2AsIGJ1dCBpZiB5b3Ugd2FudCB0b1xuICAgKiBzZXBhcmF0ZSBvdXQgdGhlIHB1Ymxpc2hpbmcgYWN0aW9ucyBpbnRvIGRpZmZlcmVudCBzdGFnZXMgKGluIG9yZGVyIHRvXG4gICAqIGJsb2NrL3VuYmxvY2sgdGhlbSBzZXBhcmF0ZWx5IGZvciBleGFtcGxlKSB5b3UgY2FuIGNoYW5nZSB0aGlzLlxuICAgKlxuICAgKiBTdGFnZXMgYXBwZWFyIGluIHRoZSBwaXBlbGluZSBpbiB0aGUgb3JkZXIgdGhleSBhcmUgcmVmZXJlbmNlZCBmb3JcbiAgICogdGhlIGZpcnN0IHRpbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiUHVibGlzaFwiXG4gICAqL1xuICByZWFkb25seSBzdGFnZU5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkU2hlbGxhYmxlT3B0aW9ucyBleHRlbmRzIFNoZWxsYWJsZVByb3BzIHtcbiAgLyoqXG4gICAqIFN0cmluZyB0byB1c2UgYXMgYWN0aW9uIG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgSWRcbiAgICovXG4gIGFjdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lc3NhZ2UgdG8gdXNlIGFzIGZhaWx1cmUgbm90aWZpY2F0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIG5vdGlmaWNhdGlvblxuICAgKi9cbiAgZmFpbHVyZU5vdGlmaWNhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGlucHV0IGFydGlmYWN0IHRvIHVzZVxuICAgKlxuICAgKiBAZGVmYXVsdCBCdWlsZCBvdXRwdXQgYXJ0aWZhY3RcbiAgICovXG4gIGlucHV0QXJ0aWZhY3Q/OiBjcGlwZWxpbmUuQXJ0aWZhY3Q7XG59XG4iXX0=
|
|
343
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQVdxQjtBQUNyQiwyQ0FBbUQ7QUFFbkQsNkNBQTJEO0FBQzNELDJDQUFxRDtBQUNyRCxxQ0FBK0M7QUFDL0MsMkRBQXVEO0FBQ3ZELHFEQUFpRDtBQUNqRCx5REFBcUQ7QUFDckQseURBQTJDO0FBQzNDLGlEQUF3RTtBQUV4RSxpQ0FBbUQ7QUFDbkQsMkNBQXdEO0FBQ3hELGlDQUFvRDtBQUVwRCxNQUFNLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztBQUNyQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFDL0IsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUM7QUFDeEMsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUM7QUF3SnZDOztHQUVHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsc0JBQVM7SUErQnJDLFlBQVksTUFBaUIsRUFBRSxJQUFZLEVBQUUsS0FBb0I7O1FBQy9ELEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFWZCxXQUFNLEdBQXlDLEVBQUcsQ0FBQztRQVl6RCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFFN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDhCQUFTLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDNUQsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyx3QkFBd0IsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMs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LENBQUMsS0FBdUI7UUFDM0QsT0FBTyxJQUFBLHdCQUFpQixFQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0Y7QUF0WEQsNEJBc1hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRHVyYXRpb24sXG4gIGF3c19jbG91ZHdhdGNoIGFzIGNsb3Vkd2F0Y2gsXG4gIGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkLFxuICBhd3NfY29kZXBpcGVsaW5lIGFzIGNwaXBlbGluZSxcbiAgYXdzX2NvZGVwaXBlbGluZV9hY3Rpb25zIGFzIGNwaXBlbGluZV9hY3Rpb25zLFxuICBhd3NfZXZlbnRzIGFzIGV2ZW50cyxcbiAgYXdzX2V2ZW50c190YXJnZXRzIGFzIGV2ZW50c190YXJnZXRzLFxuICBhd3NfaWFtIGFzIGlhbSwgYXdzX3MzIGFzIHMzLFxuICBhd3Nfc25zIGFzIHNucyxcbiAgYXdzX3Nuc19zdWJzY3JpcHRpb25zIGFzIHNuc19zdWJzLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuaW1wb3J0IHsgQXV0b0J1aWxkLCBBdXRvQnVpbGRPcHRpb25zIH0gZnJvbSAnLi9hdXRvLWJ1aWxkJztcbmltcG9ydCB7IGNyZWF0ZUJ1aWxkRW52aXJvbm1lbnQgfSBmcm9tICcuL2J1aWxkLWVudic7XG5pbXBvcnQgeyBDYW5hcnksIENhbmFyeVByb3BzIH0gZnJvbSAnLi9jYW5hcnknO1xuaW1wb3J0IHsgQ2hhbmdlQ29udHJvbGxlciB9IGZyb20gJy4vY2hhbmdlLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgQ2hpbWVOb3RpZmllciB9IGZyb20gJy4vY2hpbWUtbm90aWZpZXInO1xuaW1wb3J0IHsgUGlwZWxpbmVXYXRjaGVyIH0gZnJvbSAnLi9waXBlbGluZS13YXRjaGVyJztcbmltcG9ydCAqIGFzIHB1Ymxpc2hpbmcgZnJvbSAnLi9wdWJsaXNoaW5nJztcbmltcG9ydCB7IEF1dG9CdW1wLCBBdXRvTWVyZ2VCYWNrLCBBdXRvQnVtcFByb3BzIH0gZnJvbSAnLi9wdWxsLXJlcXVlc3QnO1xuaW1wb3J0IHsgQXV0b01lcmdlQmFja1BpcGVsaW5lT3B0aW9ucyB9IGZyb20gJy4vcHVsbC1yZXF1ZXN0L21lcmdlLWJhY2snO1xuaW1wb3J0IHsgSVJlcG8sIFdyaXRhYmxlR2l0SHViUmVwbyB9IGZyb20gJy4vcmVwbyc7XG5pbXBvcnQgeyBTaGVsbGFibGUsIFNoZWxsYWJsZVByb3BzIH0gZnJvbSAnLi9zaGVsbGFibGUnO1xuaW1wb3J0IHsgZGV0ZXJtaW5lUnVuT3JkZXIsIGZsYXRNYXAgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCBQVUJMSVNIX1NUQUdFX05BTUUgPSAnUHVibGlzaCc7XG5jb25zdCBURVNUX1NUQUdFX05BTUUgPSAnVGVzdCc7XG5jb25zdCBNRVRSSUNfTkFNRVNQQUNFID0gJ0NESy9EZWxpdmxpYic7XG5jb25zdCBGQUlMVVJFX01FVFJJQ19OQU1FID0gJ0ZhaWx1cmVzJztcblxuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgcmVwb3NpdG9yeSB0byBidWlsZCAoZS5nLiBHaXRIdWJSZXBvKS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG86IElSZXBvO1xuXG4gIC8qKlxuICAgKiBBIGRpc3BsYXkgbmFtZSBmb3IgdGhpcyBwaXBlbGluZS5cbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHBoeXNpY2FsIG5hbWUgZm9yIHRoaXMgcGlwZWxpbmUuXG4gICAqIEBkZWZhdWx0IC0gYSBuZXcgbmFtZSB3aWxsIGJlIGdlbmVyYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQnJhbmNoIHRvIGJ1aWxkLlxuICAgKiBAZGVmYXVsdCBtYXN0ZXJcbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogRW1haWwgdG8gc2VuZCBmYWlsdXJlIG5vdGlmaWNhdGlvbnMuXG4gICAqIEBkZWZhdWx0IC0gTm8gZW1haWwgbm90aWZpY2F0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uRW1haWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbWFnZSB1c2VkIGZvciB0aGUgYnVpbGRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBqc2lpL3N1cGVyY2hhaW4gKHNlZSBkb2NzKVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJbWFnZT86IGNidWlsZC5JQnVpbGRJbWFnZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBiZSBwYXJ0IG9mIHRoaXMgcGlwZWxpbmUuXG4gICAqIEBkZWZhdWx0IC0gYCR7cGlwZWxpbmVOYW1lfS1CdWlsZGAsIGlmIGBwaXBlbGluZU5hbWVgIHByb3BlcnR5IGlzIHNwZWNpZmllZDsgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQsIG90aGVyd2lzZS5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkUHJvamVjdE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGNvbXB1dGUgdG8gdXNlIGZvciB0aGlzIGJ1aWxkLlxuICAgKiBTZWUgdGhlIHtAbGluayBDb21wdXRlVHlwZX0gZW51bSBmb3IgdGhlIHBvc3NpYmxlIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdGFrZW4gZnJvbSB7QGxpbmsgI2J1aWxkSW1hZ2UjZGVmYXVsdENvbXB1dGVUeXBlfVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcHV0ZVR5cGU/OiBjYnVpbGQuQ29tcHV0ZVR5cGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBob3cgdGhlIHByb2plY3QgYnVpbGRzIERvY2tlciBpbWFnZXMuIFNwZWNpZnkgdHJ1ZSB0byBlbmFibGVcbiAgICogcnVubmluZyB0aGUgRG9ja2VyIGRhZW1vbiBpbnNpZGUgYSBEb2NrZXIgY29udGFpbmVyLiBUaGlzIHZhbHVlIG11c3QgYmVcbiAgICogc2V0IHRvIHRydWUgb25seSBpZiB0aGlzIGJ1aWxkIHByb2plY3Qgd2lsbCBiZSB1c2VkIHRvIGJ1aWxkIERvY2tlclxuICAgKiBpbWFnZXMsIGFuZCB0aGUgc3BlY2lmaWVkIGJ1aWxkIGVudmlyb25tZW50IGltYWdlIGlzIG5vdCBvbmUgcHJvdmlkZWQgYnlcbiAgICogQVdTIENvZGVCdWlsZCB3aXRoIERvY2tlciBzdXBwb3J0LiBPdGhlcndpc2UsIGFsbCBhc3NvY2lhdGVkIGJ1aWxkcyB0aGF0XG4gICAqIGF0dGVtcHQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgRG9ja2VyIGRhZW1vbiB3aWxsIGZhaWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwcml2aWxlZ2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHBhc3MgdG8gYnVpbGRcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgYnVpbGRzcGVjLCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBhIGJ1aWxkc3BlYy55bWwgZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRTcGVjPzogY2J1aWxkLkJ1aWxkU3BlYztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmUtcnVuIHRoZSBwaXBlbGluZSBhZnRlciB5b3UndmUgdXBkYXRlZCBpdC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBjb25jdXJyZW5jeSBsaW1pdCB0ZXN0IGFuZCBwdWJsaXNoIHN0YWdlcy5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGlmIHRoaXMgdmFsdWUgaXMgMiwgdGhlbiBvbmx5IHR3byBhY3Rpb25zIHdpbGwgZXhlY3V0ZSBjb25jdXJyZW50bHkuXG4gICAqIElmIHRoaXMgdmFsdWUgaXMgMSwgdGhlIHBpcGVsaW5lIHdpbGwgbm90IGhhdmUgYW55IGNvbmN1cnJlbnQgZXhlY3V0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGxpbWl0XG4gICAqL1xuICByZWFkb25seSBjb25jdXJyZW5jeT86IG51bWJlcjtcblxuICAvKipcbiAgICogU2V0IHRoZSBkZWZhdWx0IGRyeVJ1biBmb3IgYWxsIHB1Ymxpc2hpbmcgc3RlcHNcbiAgICpcbiAgICogKENhbiBzdGlsbCBiZSBjaGFuZ2VkIHdoZW4gYWRkaW5nIGEgc3RlcCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGJ1aWxkIGNvbW1pdHMgdGhhdCBhcmUgcHVzaGVkIHRvIHRoaXMgcmVwb3NpdG9yeSwgaW5jbHVkaW5nIFBSIGJ1aWxkcyBvbiBnaXRodWIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhdXRvQnVpbGQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBhdXRvLWJ1aWxkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gJ2F1dG9CdWlsZE9wdGlvbnMucHVibGljTG9ncycgd2lsbCBiZSBzZXQgdG8gaXRzIGRlZmF1bHQuICdhdXRvQnVpbGRPcHRpb25zLmJ1aWxkc3BlYycgd2lsbCBiZSBjb25maWd1cmVkIHRvIG1hdGNoIHdpdGggdGhlXG4gICAqICdidWlsZFNwZWMnIHByb3BlcnR5LlxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0J1aWxkT3B0aW9ucz86IEF1dG9CdWlsZE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFBvc3QgYSBub3RpZmljYXRpb24gdG8gdGhlIGdpdmVuIENoaW1lIHdlYmhvb2tzIGlmIHRoZSBwaXBlbGluZSBmYWlsc1xuICAgKiBAZGVmYXVsdCAtIG5vIENoaW1lIG5vdGlmaWNhdGlvbnMgb24gcGlwZWxpbmUgZmFpbHVyZVxuICAgKiBAZGVwcmVjYXRlZCAtIHVzZSBgbm90aWZ5T25GYWlsdXJlKClgIGluc3RlYWQgaW4gY29tYmluYXRpb24gd2l0aCBgUGlwZWxpbmVOb3RpZmljYXRpb24uY2hpbWUoKWAuXG4gICAqL1xuICByZWFkb25seSBjaGltZUZhaWx1cmVXZWJob29rcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2hpbWUgbWVzc2FnZSB0byBwb3N0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSBkZWZhdWx0IG1lc3NhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGNoaW1lTWVzc2FnZT86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgdGltZW91dFxuICAgKlxuICAgKiBIb3cgbG9uZyB0aGUgYnVpbGQgY2FuIHRha2UgYXQgbWF4aW11bSAoYmVmb3JlIGZhaWxpbmcgd2l0aCBhbiBlcnJvcikuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRHVyYXRpb24uaG91cnMoOClcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkVGltZW91dD86IER1cmF0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lTm90aWZpY2F0aW9uQmluZE9wdGlvbnMge1xuICByZWFkb25seSBwaXBlbGluZTogUGlwZWxpbmU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBpcGVsaW5lTm90aWZpY2F0aW9uIHtcbiAgYmluZChwaXBlbGluZTogUGlwZWxpbmVOb3RpZmljYXRpb25CaW5kT3B0aW9ucyk6IHZvaWQ7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgYW4gYXV0byBidW1wIGZvciB0aGlzIHBpcGVsaW5lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9CdW1wT3B0aW9ucyBleHRlbmRzIE9taXQ8QXV0b0J1bXBQcm9wcywgJ3JlcG8nPiB7XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIGRlbGl2bGliIENJL0NEIHBpcGVsaW5lLlxuICovXG5leHBvcnQgY2xhc3MgUGlwZWxpbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgYnVpbGRSb2xlPzogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgZmFpbHVyZUFsYXJtOiBjbG91ZHdhdGNoLkFsYXJtO1xuICBwdWJsaWMgcmVhZG9ubHkgYnVpbGRPdXRwdXQ6IGNwaXBlbGluZS5BcnRpZmFjdDtcbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZUFydGlmYWN0OiBjcGlwZWxpbmUuQXJ0aWZhY3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmltYXJ5IENvZGVCdWlsZCBwcm9qZWN0IG9mIHRoaXMgcGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYnVpbGRQcm9qZWN0OiBjYnVpbGQuSVByb2plY3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBhdXRvIGJ1aWxkIHByb2plY3QuIHVuZGVmaW5lZCBpZiAnYXV0b0J1aWxkJyBpcyBkaXNhYmxlZCBmb3IgdGhpcyBwaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdXRvQnVpbGRQcm9qZWN0PzogY2J1aWxkLlByb2plY3Q7XG5cbiAgLypcbiAgICogVGhlIHVuZGVybHlpbmcgQ29kZVBpcGVsaW5lIFBpcGVsaW5lIG9iamVjdCB0aGF0IG1vZGVscyB0aGlzIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBpcGVsaW5lOiBjcGlwZWxpbmUuUGlwZWxpbmU7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnJhbmNoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm90aWZ5Pzogc25zLlRvcGljO1xuICBwcml2YXRlIHN0YWdlczogeyBbbmFtZTogc3RyaW5nXTogY3BpcGVsaW5lLklTdGFnZSB9ID0geyB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29uY3VycmVuY3k/OiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVwbzogSVJlcG87XG4gIHByaXZhdGUgcmVhZG9ubHkgZHJ5UnVuOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkRW52aXJvbm1lbnQ6IGNidWlsZC5CdWlsZEVudmlyb25tZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkU3BlYz86IGNidWlsZC5CdWlsZFNwZWM7XG4gIHByaXZhdGUgZmlyc3RQdWJsaXNoU3RhZ2VOYW1lPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBQaXBlbGluZVByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBuYW1lKTtcblxuICAgIHRoaXMuY29uY3VycmVuY3kgPSBwcm9wcy5jb25jdXJyZW5jeTtcbiAgICB0aGlzLnJlcG8gPSBwcm9wcy5yZXBvO1xuICAgIHRoaXMuZHJ5UnVuID0gISFwcm9wcy5kcnlSdW47XG5cbiAgICB0aGlzLnBpcGVsaW5lID0gbmV3IGNwaXBlbGluZS5QaXBlbGluZSh0aGlzLCAnQnVpbGRQaXBlbGluZScsIHtcbiAgICAgIHBpcGVsaW5lTmFtZTogcHJvcHMucGlwZWxpbmVOYW1lLFxuICAgICAgcmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlOiBwcm9wcy5yZXN0YXJ0RXhlY3V0aW9uT25VcGRhdGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBwcm9wcy5yZXN0YXJ0RXhlY3V0aW9uT25VcGRhdGUsXG4gICAgfSk7XG5cbiAgICB0aGlzLmJyYW5jaCA9IHByb3BzLmJyYW5jaCB8fCAnbWFzdGVyJztcbiAgICB0aGlzLnNvdXJjZUFydGlmYWN0ID0gcHJvcHMucmVwby5jcmVhdGVTb3VyY2VTdGFnZSh0aGlzLnBpcGVsaW5lLCB0aGlzLmJyYW5jaCk7XG5cbiAgICB0aGlzLmJ1aWxkRW52aXJvbm1lbnQgPSBjcmVhdGVCdWlsZEVudmlyb25tZW50KHByb3BzKTtcbiAgICB0aGlzLmJ1aWxkU3BlYyA9IHByb3BzLmJ1aWxkU3BlYztcblxuICAgIGxldCBidWlsZFByb2plY3ROYW1lID0gcHJvcHMuYnVpbGRQcm9qZWN0TmFtZTtcbiAgICBpZiAoYnVpbGRQcm9qZWN0TmFtZSA9PT0gdW5kZWZpbmVkICYmIHByb3BzLnBpcGVsaW5lTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBidWlsZFByb2plY3ROYW1lID0gYCR7cHJvcHMucGlwZWxpbmVOYW1lfS1CdWlsZGA7XG4gICAgfVxuICAgIHRoaXMuYnVpbGRQcm9qZWN0ID0gbmV3IGNidWlsZC5QaXBlbGluZVByb2plY3QodGhpcywgJ0J1aWxkUHJvamVjdCcsIHtcbiAgICAgIHByb2plY3ROYW1lOiBidWlsZFByb2plY3ROYW1lLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuYnVpbGRFbnZpcm9ubWVudCxcbiAgICAgIGJ1aWxkU3BlYzogdGhpcy5idWlsZFNwZWMsXG4gICAgICB0aW1lb3V0OiBwcm9wcy5idWlsZFRpbWVvdXQgPz8gRHVyYXRpb24uaG91cnMoOCksXG4gICAgfSk7XG5cbiAgICB0aGlzLmJ1aWxkUm9sZSA9IHRoaXMuYnVpbGRQcm9qZWN0LnJvbGU7XG5cbiAgICBjb25zdCBidWlsZFN0YWdlID0gdGhpcy5nZXRPckNyZWF0ZVN0YWdlKCdCdWlsZCcpO1xuICAgIGNvbnN0IGJ1aWxkT3V0cHV0ID0gbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpO1xuICAgIGJ1aWxkU3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogJ0J1aWxkJyxcbiAgICAgIHByb2plY3Q6IHRoaXMuYnVpbGRQcm9qZWN0LFxuICAgICAgaW5wdXQ6IHRoaXMuc291cmNlQXJ0aWZhY3QsXG4gICAgICBvdXRwdXRzOiBbYnVpbGRPdXRwdXRdLFxuICAgIH0pKTtcbiAgICB0aGlzLmJ1aWxkT3V0cHV0ID0gYnVpbGRPdXRwdXQ7XG5cbiAgICBpZiAocHJvcHMubm90aWZpY2F0aW9uRW1haWwpIHtcbiAgICAgIHRoaXMubm90aWZ5ID0gbmV3IHNucy5Ub3BpYyh0aGlzLCAnTm90aWZpY2F0aW9uc1RvcGljJyk7XG4gICAgICB0aGlzLm5vdGlmeS5hZGRTdWJzY3JpcHRpb24obmV3IHNuc19zdWJzLkVtYWlsU3Vic2NyaXB0aW9uKHByb3BzLm5vdGlmaWNhdGlvbkVtYWlsKSk7XG4gICAgfVxuXG4gICAgLy8gYWRkIGEgZmFpbHVyZSBhbGFybSBmb3IgdGhlIGVudGlyZSBwaXBlbGluZS5cbiAgICB0aGlzLmZhaWx1cmVBbGFybSA9IHRoaXMuYWRkRmFpbHVyZUFsYXJtKHByb3BzLnRpdGxlKTtcblxuICAgIC8vIGVtaXQgYW4gU05TIG5vdGlmaWNhdGlvbiBldmVyeSB0aW1lIGJ1aWxkIGZhaWxzLlxuICAgIHRoaXMuYWRkQnVpbGRGYWlsdXJlTm90aWZpY2F0aW9uKHRoaXMuYnVpbGRQcm9qZWN0LCBgJHtwcm9wcy50aXRsZX0gYnVpbGQgZmFpbGVkYCk7XG5cbiAgICAvLyBBbHNvIGVtaXQgdG8gQ2hpbWUgd2ViaG9va3MgaWYgY29uZmlndXJlZFxuICAgIGlmIChwcm9wcy5jaGltZUZhaWx1cmVXZWJob29rcykge1xuICAgICAgbmV3IENoaW1lTm90aWZpZXIodGhpcywgJ0NoaW1lTm90aWZpZXInLCB7XG4gICAgICAgIHBpcGVsaW5lOiB0aGlzLnBpcGVsaW5lLFxuICAgICAgICBtZXNzYWdlOiBwcm9wcy5jaGltZU1lc3NhZ2UsXG4gICAgICAgIHdlYmhvb2tVcmxzOiBwcm9wcy5jaGltZUZhaWx1cmVXZWJob29rcyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5hdXRvQnVpbGQpIHtcbiAgICAgIHRoaXMuYXV0b0J1aWxkUHJvamVjdCA9IHRoaXMuYXV0b0J1aWxkKHByb3BzLmF1dG9CdWlsZE9wdGlvbnMpLnByb2plY3Q7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5vdGlmeU9uRmFpbHVyZShub3RpZmljYXRpb246IElQaXBlbGluZU5vdGlmaWNhdGlvbikge1xuICAgIG5vdGlmaWNhdGlvbi5iaW5kKHtcbiAgICAgIHBpcGVsaW5lOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBhY3Rpb24gdG8gcnVuIGEgc2hlbGwgc2NyaXB0IHRvIHRoZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcmV0dXJuIFRoZSBTaGVsbGFibGUgYW5kIHRoZSBBY3Rpb24gYWRkZWQgdG8gdGhlIHBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIGFkZFNoZWxsYWJsZShzdGFnZU5hbWU6IHN0cmluZywgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkU2hlbGxhYmxlT3B0aW9ucyk6IHtcbiAgICBzaGVsbGFibGU6IFNoZWxsYWJsZTsgYWN0aW9uOiBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb247fSB7XG4gICAgY29uc3Qgc3RhZ2UgPSB0aGlzLmdldE9yQ3JlYXRlU3RhZ2Uoc3RhZ2VOYW1lKTtcblxuICAgIGNvbnN0IHNoID0gbmV3IFNoZWxsYWJsZSh0aGlzLCBpZCwgb3B0aW9ucyk7XG4gICAgY29uc3QgYWN0aW9uID0gc2guYWRkVG9QaXBlbGluZShcbiAgICAgIHN0YWdlLFxuICAgICAgb3B0aW9ucy5hY3Rpb25OYW1lIHx8IGBBY3Rpb24ke2lkfWAsXG4gICAgICBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgdGhpcy5idWlsZE91dHB1dCxcbiAgICAgIHRoaXMuZGV0ZXJtaW5lUnVuT3JkZXJGb3JOZXdBY3Rpb24oc3RhZ2UpKTtcblxuICAgIGlmIChvcHRpb25zLmZhaWx1cmVOb3RpZmljYXRpb24pIHtcbiAgICAgIHRoaXMuYWRkQnVpbGRGYWlsdXJlTm90aWZpY2F0aW9uKHNoLnByb2plY3QsIG9wdGlvbnMuZmFpbHVyZU5vdGlmaWNhdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc2hlbGxhYmxlOiBzaCwgYWN0aW9uIH07XG4gIH1cblxuICBwdWJsaWMgYWRkVGVzdChpZDogc3RyaW5nLCBwcm9wczogU2hlbGxhYmxlUHJvcHMpOiB7c2hlbGxhYmxlOiBTaGVsbGFibGU7IGFjdGlvbjogY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9ufSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkU2hlbGxhYmxlKFRFU1RfU1RBR0VfTkFNRSwgaWQsIHtcbiAgICAgIGFjdGlvbk5hbWU6IGBUZXN0JHtpZH1gLFxuICAgICAgZmFpbHVyZU5vdGlmaWNhdGlvbjogYFRlc3QgJHtpZH0gZmFpbGVkYCxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlbmllbmNlL2Rpc2NvdmVyeSBtZXRob2QgdGhhdCBkZWZpbmVzIGEgY2FuYXJ5IHRlc3QgaW4geW91ciBhY2NvdW50LlxuICAgKiBAcGFyYW0gaWQgdGhlIGNvbnN0cnVjdCBpZFxuICAgKiBAcGFyYW0gcHJvcHMgY2FuYXJ5IG9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBhZGRDYW5hcnkoaWQ6IHN0cmluZywgcHJvcHM6IENhbmFyeVByb3BzKSB7XG4gICAgcmV0dXJuIG5ldyBDYW5hcnkodGhpcywgYENhbmFyeSR7aWR9YCwgcHJvcHMpO1xuICB9XG5cbiAgcHVibGljIGFkZFB1Ymxpc2gocHVibGlzaGVyOiBJUHVibGlzaGVyLCBvcHRpb25zOiBBZGRQdWJsaXNoT3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgcHVibGlzaFN0YWdlTmFtZSA9IG9wdGlvbnMuc3RhZ2VOYW1lID8/IFBVQkxJU0hfU1RBR0VfTkFNRTtcbiAgICBpZiAoIXRoaXMuZmlyc3RQdWJsaXNoU3RhZ2VOYW1lKSB7XG4gICAgICB0aGlzLmZpcnN0UHVibGlzaFN0YWdlTmFtZSA9IHB1Ymxpc2hTdGFnZU5hbWU7XG4gICAgfVxuICAgIGNvbnN0IHN0YWdlID0gdGhpcy5nZXRPckNyZWF0ZVN0YWdlKHB1Ymxpc2hTdGFnZU5hbWUpO1xuXG4gICAgcHVibGlzaGVyLmFkZFRvUGlwZWxpbmUoc3RhZ2UsIGAke3B1Ymxpc2hlci5ub2RlLmlkfVB1Ymxpc2hgLCB7XG4gICAgICBpbnB1dEFydGlmYWN0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgdGhpcy5idWlsZE91dHB1dCxcbiAgICAgIHJ1bk9yZGVyOiB0aGlzLmRldGVybWluZVJ1bk9yZGVyRm9yTmV3QWN0aW9uKHN0YWdlKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY2hhbmdlIGNvbnRyb2wgcG9saWN5IHRvIGJsb2NrIHRyYW5zaXRpb25zIGludG8gdGhlIHB1Ymxpc2ggc3RhZ2UgZHVyaW5nIGNlcnRhaW4gdGltZSB3aW5kb3dzLlxuICAgKiBAcGFyYW0gb3B0aW9ucyB0aGUgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGNoYW5nZSBjb250cm9sIHBvbGljeS5cbiAgICovXG4gIHB1YmxpYyBhZGRDaGFuZ2VDb250cm9sKG9wdGlvbnM6IEFkZENoYW5nZUNvbnRyb2xPcHRpb25zID0geyB9KTogQ2hhbmdlQ29udHJvbGxlciB7XG4gICAgY29uc3QgcHVibGlzaFN0YWdlID0gdGhpcy5nZXRTdGFnZSh0aGlzLmZpcnN0UHVibGlzaFN0YWdlTmFtZSA/PyBQVUJMSVNIX1NUQUdFX05BTUUpO1xuICAgIGlmICghcHVibGlzaFN0YWdlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoaXMgcGlwZWxpbmUgZG9lcyBub3QgaGF2ZSBhICR7UFVCTElTSF9TVEFHRV9OQU1FfSBzdGFnZSB5ZXQuIEFkZCBvbmUgZmlyc3QuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDaGFuZ2VDb250cm9sbGVyKHRoaXMsICdDaGFuZ2VDb250cm9sbGVyJywge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHBpcGVsaW5lU3RhZ2U6IHB1Ymxpc2hTdGFnZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBwdWJsaXNoVG9OcG0ob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9OcG1Qcm9qZWN0UHJvcHMgJiBBZGRQdWJsaXNoT3B0aW9ucykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9OcG1Qcm9qZWN0KHRoaXMsICdOcG0nLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaFRvTWF2ZW4ob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9NYXZlblByb2plY3RQcm9wcyAmIEFkZFB1Ymxpc2hPcHRpb25zKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hUb01hdmVuUHJvamVjdCh0aGlzLCAnTWF2ZW4nLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaFRvTnVHZXQob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9OdUdldFByb2plY3RQcm9wcyAmIEFkZFB1Ymxpc2hPcHRpb25zKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hUb051R2V0UHJvamVjdCh0aGlzLCAnTnVHZXQnLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaFRvR2l0SHViUGFnZXMob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoRG9jc1RvR2l0SHViUHJvamVjdFByb3BzICYgQWRkUHVibGlzaE9wdGlvbnMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaERvY3NUb0dpdEh1YlByb2plY3QodGhpcywgJ0dpdEh1YlBhZ2VzJywge1xuICAgICAgZHJ5UnVuOiB0aGlzLmRyeVJ1bixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSksIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2hUb0dpdEh1YihvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hUb0dpdEh1YlByb3BzICYgQWRkUHVibGlzaE9wdGlvbnMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaFRvR2l0SHViKHRoaXMsICdHaXRIdWInLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaFRvUHlQSShvcHRpb25zOiBwdWJsaXNoaW5nLlB1Ymxpc2hUb1B5UGlQcm9wcyAmIEFkZFB1Ymxpc2hPcHRpb25zKSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoKG5ldyBwdWJsaXNoaW5nLlB1Ymxpc2hUb1B5UGkodGhpcywgJ1B5UEknLCB7XG4gICAgICBkcnlSdW46IHRoaXMuZHJ5UnVuLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaFRvUzMoaWQ6IHN0cmluZywgb3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9TM1Byb3BzICYgQWRkUHVibGlzaE9wdGlvbnMpIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2gobmV3IHB1Ymxpc2hpbmcuUHVibGlzaFRvUzModGhpcywgaWQsIHtcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaXNoIEdvbGFuZyBjb2RlIGZyb20gYGdvYCBkaXJlY3RvcnkgaW4gYnVpbGQgYXJ0aWZhY3QgdG8gYSBHaXRIdWIgcmVwb3NpdG9yeS5cbiAgICovXG4gIHB1YmxpYyBwdWJsaXNoVG9Hb2xhbmcob3B0aW9uczogcHVibGlzaGluZy5QdWJsaXNoVG9Hb2xhbmdQcm9wcykge1xuICAgIHRoaXMuYWRkUHVibGlzaChuZXcgcHVibGlzaGluZy5QdWJsaXNoVG9Hb2xhbmcodGhpcywgJ0dvbGFuZycsIHtcbiAgICAgIGRyeVJ1bjogdGhpcy5kcnlSdW4sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGF1dG9tYXRpYyBidW1wcyBmb3IgdGhlIHNvdXJjZSByZXBvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBhdXRvIGJ1bXAgKHNlZSBBdXRvQnVtcE9wdGlvbnMgZm9yIGRlc2NyaXB0aW9uIG9mIGRlZmF1bHRzKVxuICAgKi9cbiAgcHVibGljIGF1dG9CdW1wKG9wdGlvbnM/OiBBdXRvQnVtcE9wdGlvbnMpOiBBdXRvQnVtcCB7XG4gICAgaWYgKCFXcml0YWJsZUdpdEh1YlJlcG8uaXNXcml0YWJsZUdpdEh1YlJlcG8odGhpcy5yZXBvKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcInJlcG9cIiBtdXN0IGJlIGEgV3JpdGFibGVHaXRIdWJSZXBvIGluIG9yZGVyIHRvIGVuYWJsZSBhdXRvLWJ1bXAnKTtcbiAgICB9XG5cbiAgICBjb25zdCBhdXRvQnVtcCA9IG5ldyBBdXRvQnVtcCh0aGlzLCAnQXV0b0J1bXAnLCB7XG4gICAgICByZXBvOiB0aGlzLnJlcG8sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF1dG9CdW1wO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgYXV0b21hdGljIG1lcmdlIGJhY2tzIGZvciB0aGUgc291cmNlIHJlcG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIGF1dG8gYnVtcCAoc2VlIEF1dG9NZXJnZUJhY2tQaXBlbGluZU9wdGlvbnMgZm9yIGRlc2NyaXB0aW9uIG9mIGRlZmF1bHRzKVxuICAgKi9cbiAgcHVibGljIGF1dG9NZXJnZUJhY2sob3B0aW9ucz86IEF1dG9NZXJnZUJhY2tQaXBlbGluZU9wdGlvbnMpIHtcbiAgICBpZiAoIVdyaXRhYmxlR2l0SHViUmVwby5pc1dyaXRhYmxlR2l0SHViUmVwbyh0aGlzLnJlcG8pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wicmVwb1wiIG11c3QgYmUgYSBXcml0YWJsZUdpdEh1YlJlcG8gaW4gb3JkZXIgdG8gZW5hYmxlIGF1dG8tbWVyZ2UtYmFjaycpO1xuICAgIH1cblxuICAgIGNvbnN0IG1lcmdlQmFjayA9IG5ldyBBdXRvTWVyZ2VCYWNrKHRoaXMsICdNZXJnZUJhY2snLCB7XG4gICAgICByZXBvOiB0aGlzLnJlcG8sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnM/LnN0YWdlKSB7XG5cbiAgICAgIGNvbnN0IGFmdGVyU3RhZ2UgPSB0aGlzLmdldFN0YWdlKG9wdGlvbnMuc3RhZ2UuYWZ0ZXIpO1xuXG4gICAgICBpZiAoIWFmdGVyU3RhZ2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnb3B0aW9ucy5zdGFnZS5hZnRlcicgbXVzdCBiZSBjb25maWd1cmVkIHRvIGFuIGV4aXN0aW5nIHN0YWdlOiAke29wdGlvbnMuc3RhZ2UuYWZ0ZXJ9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YWdlID0gdGhpcy5nZXRPckNyZWF0ZVN0YWdlKG9wdGlvbnMuc3RhZ2UubmFtZSA/PyAnTWVyZ2VCYWNrJywgeyBqdXN0QWZ0ZXI6IGFmdGVyU3RhZ2UgfSk7XG4gICAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICAgIGFjdGlvbk5hbWU6ICdDcmVhdGVNZXJnZUJhY2tQdWxsUmVxdWVzdCcsXG4gICAgICAgIHByb2plY3Q6IG1lcmdlQmFjay5wci5wcm9qZWN0LFxuICAgICAgICBpbnB1dDogdGhpcy5zb3VyY2VBcnRpZmFjdCxcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBhdXRvbWF0aWMgYnVpbGRzIG9mIHB1bGwgcmVxdWVzdHMgaW4gdGhlIEdpdGh1YiByZXBvc2l0b3J5IGFuZCBwb3N0cyB0aGVcbiAgICogcmVzdWx0cyBiYWNrIGFzIGEgY29tbWVudCB3aXRoIGEgcHVibGljIGxpbmsgdG8gdGhlIGJ1aWxkIGxvZ3MuXG4gICAqL1xuICBwdWJsaWMgYXV0b0J1aWxkKG9wdGlvbnM6IEF1dG9CdWlsZE9wdGlvbnMgPSB7IH0pOiBBdXRvQnVpbGQge1xuICAgIHJldHVybiBuZXcgQXV0b0J1aWxkKHRoaXMsICdBdXRvQnVpbGQnLCB7XG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5idWlsZEVudmlyb25tZW50LFxuICAgICAgcmVwbzogdGhpcy5yZXBvLFxuICAgICAgYnVpbGRTcGVjOiBvcHRpb25zLmJ1aWxkU3BlYyB8fCB0aGlzLmJ1aWxkU3BlYyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1ldHJpYyB0aGF0IHRyYWNrcyBwaXBlbGluZSBmYWlsdXJlcy5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNGYWlsdXJlcyhvcHRpb25zOiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ19OQU1FU1BBQ0UsXG4gICAgICBtZXRyaWNOYW1lOiBGQUlMVVJFX01FVFJJQ19OQU1FLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBQaXBlbGluZTogdGhpcy5waXBlbGluZS5waXBlbGluZU5hbWUsXG4gICAgICB9LFxuICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1ldHJpY3MgdGhhdCB0cmFjayBmYWlsdXJlIG9mIGVhY2ggYWN0aW9uIHdpdGhpbiB0aGUgcGlwZWxpbmUuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljQWN0aW9uRmFpbHVyZXMob3B0aW9uczogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWNbXSB7XG4gICAgcmV0dXJuIGZsYXRNYXAodGhpcy5waXBlbGluZS5zdGFnZXMsIHN0YWdlID0+IHN0YWdlLmFjdGlvbnMubWFwKGFjdGlvbiA9PiB7XG4gICAgICByZXR1cm4gbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgICAgbmFtZXNwYWNlOiBNRVRSSUNfTkFNRVNQQUNFLFxuICAgICAgICBtZXRyaWNOYW1lOiBGQUlMVVJFX01FVFJJQ19OQU1FLFxuICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgUGlwZWxpbmU6IHRoaXMucGlwZWxpbmUucGlwZWxpbmVOYW1lLFxuICAgICAgICAgIEFjdGlvbjogYWN0aW9uLmFjdGlvblByb3BlcnRpZXMuYWN0aW9uTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRNYW51YWxBcHByb3ZhbFRvU3RhZ2Uoc3RhZ2VOYW1lOiBzdHJpbmcsIHByb3BzPzogY3BpcGVsaW5lX2FjdGlvbnMuTWFudWFsQXBwcm92YWxBY3Rpb25Qcm9wcykge1xuICAgIGNvbnN0IHN0YWdlID0gdGhpcy5nZXRPckNyZWF0ZVN0YWdlKHN0YWdlTmFtZSk7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5NYW51YWxBcHByb3ZhbEFjdGlvbihwcm9wcyA/PyB7XG4gICAgICBhY3Rpb25OYW1lOiAnTWFudWFsQXBwcm92YWxBY3Rpb24nLFxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRmFpbHVyZUFsYXJtKHRpdGxlPzogc3RyaW5nKTogY2xvdWR3YXRjaC5BbGFybSB7XG4gICAgcmV0dXJuIG5ldyBQaXBlbGluZVdhdGNoZXIodGhpcywgJ1BpcGVsaW5lV2F0Y2hlcicsIHtcbiAgICAgIHBpcGVsaW5lOiB0aGlzLnBpcGVsaW5lLFxuICAgICAgbWV0cmljTmFtZXNwYWNlOiBNRVRSSUNfTkFNRVNQQUNFLFxuICAgICAgZmFpbHVyZU1ldHJpY05hbWU6IEZBSUxVUkVfTUVUUklDX05BTUUsXG4gICAgICB0aXRsZSxcbiAgICB9KS5hbGFybTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQnVpbGRGYWlsdXJlTm90aWZpY2F0aW9uKGJ1aWxkUHJvamVjdDogY2J1aWxkLklQcm9qZWN0LCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMubm90aWZ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYnVpbGRQcm9qZWN0Lm9uQnVpbGRGYWlsZWQoJ09uQnVpbGRGYWlsZWQnKS5hZGRUYXJnZXQobmV3IGV2ZW50c190YXJnZXRzLlNuc1RvcGljKHRoaXMubm90aWZ5LCB7XG4gICAgICBtZXNzYWdlOiBldmVudHMuUnVsZVRhcmdldElucHV0LmZyb21UZXh0KG1lc3NhZ2UpLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB0aGUgc3RhZ2Ugb3IgdW5kZWZpbmVkIGlmIHRoZSBzdGFnZSBkb2Vzbid0IGV4aXN0XG4gICAqL1xuICBwcml2YXRlIGdldFN0YWdlKHN0YWdlTmFtZTogc3RyaW5nKTogY3BpcGVsaW5lLklTdGFnZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhZ2VzW3N0YWdlTmFtZV07XG4gIH1cblxuICBwcml2YXRlIGdldE9yQ3JlYXRlU3RhZ2Uoc3RhZ2VOYW1lOiBzdHJpbmcsIHBsYWNlbWVudD86IGNwaXBlbGluZS5TdGFnZVBsYWNlbWVudCk6IGNwaXBlbGluZS5JU3RhZ2Uge1xuICAgIC8vIG90aGVyd2lzZSwgZ3JvdXAgYWxsIGFjdGlvbnMgc28gdGhleSBydW4gY29uY3VycmVudGx5LlxuICAgIGxldCBzdGFnZSA9IHRoaXMuZ2V0U3RhZ2Uoc3RhZ2VOYW1lKTtcbiAgICBpZiAoIXN0YWdlKSB7XG4gICAgICBzdGFnZSA9IHRoaXMucGlwZWxpbmUuYWRkU3RhZ2Uoe1xuICAgICAgICBzdGFnZU5hbWUsXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zdGFnZXNbc3RhZ2VOYW1lXSA9IHN0YWdlO1xuICAgIH1cbiAgICByZXR1cm4gc3RhZ2U7XG4gIH1cblxuICBwcml2YXRlIGRldGVybWluZVJ1bk9yZGVyRm9yTmV3QWN0aW9uKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gZGV0ZXJtaW5lUnVuT3JkZXIoc3RhZ2UuYWN0aW9ucy5sZW5ndGgsIHRoaXMuY29uY3VycmVuY3kpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVB1Ymxpc2hlciBleHRlbmRzIElDb25zdHJ1Y3Qge1xuICBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkVG9QaXBlbGluZU9wdGlvbnMge1xuICBpbnB1dEFydGlmYWN0PzogY3BpcGVsaW5lLkFydGlmYWN0O1xuICBydW5PcmRlcj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRDaGFuZ2VDb250cm9sT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IGluIHdoaWNoIHRoZSBDaGFuZ2VDb250cm9sIGlDYWwgZG9jdW1lbnQgd2lsbCBiZSBzdG9yZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGEgbmV3IGJ1Y2tldCB3aWxsIGJlIHByb3Zpc2lvbmVkLlxuICAgKi9cbiAgY2hhbmdlQ29udHJvbEJ1Y2tldD86IHMzLklCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBrZXkgaW4gd2hpY2ggdGhlIGlDYWwgZmlsbGUgd2lsbCBiZSBzdG9yZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdjaGFuZ2UtY29udHJvbC5pY2FsJ1xuICAgKi9cbiAgY2hhbmdlQ29udHJvbE9iamVjdEtleT86IHN0cmluZztcblxuICAvKipcbiAgICogU2NoZWR1bGUgdG8gcnVuIHRoZSBjaGFuZ2UgY29udHJvbGxlciBvblxuICAgKlxuICAgKiBAZGVmYXVsdCByYXRlKDE1IG1pbnV0ZXMpXG4gICAqL1xuICBzY2hlZHVsZUV4cHJlc3Npb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkUHVibGlzaE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGlucHV0IGFydGlmYWN0IHRvIHVzZVxuICAgKlxuICAgKiBAZGVmYXVsdCBCdWlsZCBvdXRwdXQgYXJ0aWZhY3RcbiAgICovXG4gIGlucHV0QXJ0aWZhY3Q/OiBjcGlwZWxpbmUuQXJ0aWZhY3Q7XG5cbiAgLyoqXG4gICAqIFN0YWdlIG5hbWUgdG8gYWRkIHB1Ymxpc2hpbmcgam9iIHRvXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoaXMgd2lsbCBiZSB0aGUgc3RhZ2UgbmFtZSBgJ1B1Ymxpc2gnYCwgYnV0IGlmIHlvdSB3YW50IHRvXG4gICAqIHNlcGFyYXRlIG91dCB0aGUgcHVibGlzaGluZyBhY3Rpb25zIGludG8gZGlmZmVyZW50IHN0YWdlcyAoaW4gb3JkZXIgdG9cbiAgICogYmxvY2svdW5ibG9jayB0aGVtIHNlcGFyYXRlbHkgZm9yIGV4YW1wbGUpIHlvdSBjYW4gY2hhbmdlIHRoaXMuXG4gICAqXG4gICAqIFN0YWdlcyBhcHBlYXIgaW4gdGhlIHBpcGVsaW5lIGluIHRoZSBvcmRlciB0aGV5IGFyZSByZWZlcmVuY2VkIGZvclxuICAgKiB0aGUgZmlyc3QgdGltZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJQdWJsaXNoXCJcbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRTaGVsbGFibGVPcHRpb25zIGV4dGVuZHMgU2hlbGxhYmxlUHJvcHMge1xuICAvKipcbiAgICogU3RyaW5nIHRvIHVzZSBhcyBhY3Rpb24gbmFtZVxuICAgKlxuICAgKiBAZGVmYXVsdCBJZFxuICAgKi9cbiAgYWN0aW9uTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogTWVzc2FnZSB0byB1c2UgYXMgZmFpbHVyZSBub3RpZmljYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gbm90aWZpY2F0aW9uXG4gICAqL1xuICBmYWlsdXJlTm90aWZpY2F0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgYXJ0aWZhY3QgdG8gdXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IEJ1aWxkIG91dHB1dCBhcnRpZmFjdFxuICAgKi9cbiAgaW5wdXRBcnRpZmFjdD86IGNwaXBlbGluZS5BcnRpZmFjdDtcbn1cbiJdfQ==
|
package/lib/pipeline.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
Duration,
|
|
3
3
|
aws_cloudwatch as cloudwatch,
|
|
4
4
|
aws_codebuild as cbuild,
|
|
5
5
|
aws_codepipeline as cpipeline,
|
|
@@ -9,7 +9,8 @@ import {
|
|
|
9
9
|
aws_iam as iam, aws_s3 as s3,
|
|
10
10
|
aws_sns as sns,
|
|
11
11
|
aws_sns_subscriptions as sns_subs,
|
|
12
|
-
} from '
|
|
12
|
+
} from 'aws-cdk-lib';
|
|
13
|
+
import { Construct, IConstruct } from 'constructs';
|
|
13
14
|
|
|
14
15
|
import { AutoBuild, AutoBuildOptions } from './auto-build';
|
|
15
16
|
import { createBuildEnvironment } from './build-env';
|
|
@@ -481,7 +482,7 @@ export class Pipeline extends Construct {
|
|
|
481
482
|
return new cloudwatch.Metric({
|
|
482
483
|
namespace: METRIC_NAMESPACE,
|
|
483
484
|
metricName: FAILURE_METRIC_NAME,
|
|
484
|
-
|
|
485
|
+
dimensionsMap: {
|
|
485
486
|
Pipeline: this.pipeline.pipelineName,
|
|
486
487
|
},
|
|
487
488
|
statistic: 'Sum',
|
|
@@ -497,7 +498,7 @@ export class Pipeline extends Construct {
|
|
|
497
498
|
return new cloudwatch.Metric({
|
|
498
499
|
namespace: METRIC_NAMESPACE,
|
|
499
500
|
metricName: FAILURE_METRIC_NAME,
|
|
500
|
-
|
|
501
|
+
dimensionsMap: {
|
|
501
502
|
Pipeline: this.pipeline.pipelineName,
|
|
502
503
|
Action: action.actionProperties.actionName,
|
|
503
504
|
},
|
|
@@ -55,13 +55,7 @@ else
|
|
|
55
55
|
# Prepare environment variables with flags to GPG
|
|
56
56
|
# --passphrase-fd 0 \
|
|
57
57
|
# ${EXTRA_GPG_OPTS} \
|
|
58
|
-
GPG_PASSPHRASE_FROM_STDIN="--passphrase-fd 0"
|
|
59
|
-
if [[ "$(uname)" == "Darwin" ]]; then
|
|
60
|
-
# On Mac, we must pass this to disable a prompt for
|
|
61
|
-
# passphrase, but option is not recognized on Linux.
|
|
62
|
-
GPG_PASSPHRASE_FROM_STDIN="${GPG_PASSPHRASE_FROM_STDIN} --pinentry-mode loopback"
|
|
63
|
-
fi
|
|
64
|
-
export GPG_PASSPHRASE_FROM_STDIN
|
|
58
|
+
export GPG_PASSPHRASE_FROM_STDIN="--passphrase-fd 0 --pinentry-mode loopback"
|
|
65
59
|
|
|
66
60
|
export KEY_AVAILABLE=true
|
|
67
61
|
fi
|
package/lib/publishing.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { aws_codebuild as cbuild, aws_codepipeline as cpipeline, aws_iam as iam, aws_s3 as s3 } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
2
3
|
import { ICodeSigningCertificate } from './code-signing';
|
|
3
4
|
import { OpenPGPKeyPair } from './open-pgp-key-pair';
|
|
4
5
|
import * as permissions from './permissions';
|