construct-hub 0.4.431 → 0.4.432
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 +2 -2
- package/docs/operator-runbook.md +51 -0
- package/lib/backend/orchestration/index.d.ts +5 -1
- package/lib/backend/orchestration/index.js +9 -2
- package/lib/backend/orchestration/read-uninstallable-report.d.ts +7 -0
- package/lib/backend/orchestration/read-uninstallable-report.js +20 -0
- package/lib/backend/orchestration/read-uninstallable-report.lambda.bundle/index.js +60016 -0
- package/lib/backend/orchestration/read-uninstallable-report.lambda.bundle/index.js.map +7 -0
- package/lib/backend/orchestration/read-uninstallable-report.lambda.d.ts +13 -0
- package/lib/backend/orchestration/read-uninstallable-report.lambda.js +33 -0
- package/lib/backend/orchestration/retry-uninstallable-packages.d.ts +19 -0
- package/lib/backend/orchestration/retry-uninstallable-packages.js +100 -0
- package/lib/backend-dashboard.js +4 -1
- package/lib/construct-hub.js +1 -1
- package/lib/package-sources/code-artifact.js +1 -1
- package/lib/package-sources/npmjs.js +1 -1
- package/lib/package-tag/index.js +3 -3
- package/lib/package-tag-group/index.js +2 -2
- package/lib/preload-file/index.js +1 -1
- package/lib/s3/storage.js +1 -1
- package/lib/spdx-license.js +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface ReadUninstallableReportEvent {
|
|
2
|
+
readonly bucket: string;
|
|
3
|
+
readonly key: string;
|
|
4
|
+
}
|
|
5
|
+
export interface PackageInfo {
|
|
6
|
+
readonly originalPackage: string;
|
|
7
|
+
readonly packageName: string;
|
|
8
|
+
readonly packageVersion: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ReadUninstallableReportResult {
|
|
11
|
+
readonly packages: PackageInfo[];
|
|
12
|
+
}
|
|
13
|
+
export declare function handler(event: ReadUninstallableReportEvent): Promise<ReadUninstallableReportResult>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handler = handler;
|
|
4
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
5
|
+
const aws_lambda_shared_1 = require("../shared/aws.lambda-shared");
|
|
6
|
+
const compress_content_lambda_shared_1 = require("../shared/compress-content.lambda-shared");
|
|
7
|
+
function parsePackageName(packageString) {
|
|
8
|
+
const lastAtIndex = packageString.lastIndexOf('@');
|
|
9
|
+
if (lastAtIndex === -1) {
|
|
10
|
+
throw new Error(`Invalid package format: ${packageString}`);
|
|
11
|
+
}
|
|
12
|
+
const packageName = packageString.substring(0, lastAtIndex);
|
|
13
|
+
const packageVersion = packageString.substring(lastAtIndex + 1);
|
|
14
|
+
return {
|
|
15
|
+
originalPackage: packageString,
|
|
16
|
+
packageName,
|
|
17
|
+
packageVersion,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
async function handler(event) {
|
|
21
|
+
const response = await aws_lambda_shared_1.S3_CLIENT.send(new client_s3_1.GetObjectCommand({
|
|
22
|
+
Bucket: event.bucket,
|
|
23
|
+
Key: event.key,
|
|
24
|
+
}));
|
|
25
|
+
if (!response.Body) {
|
|
26
|
+
throw new Error(`Object not found: s3://${event.bucket}/${event.key}`);
|
|
27
|
+
}
|
|
28
|
+
const decompressed = await (0, compress_content_lambda_shared_1.decompressContent)(response.Body, response.ContentEncoding);
|
|
29
|
+
const rawPackages = JSON.parse(decompressed);
|
|
30
|
+
const packages = rawPackages.map(parsePackageName);
|
|
31
|
+
return { packages };
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC11bmluc3RhbGxhYmxlLXJlcG9ydC5sYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZC9vcmNoZXN0cmF0aW9uL3JlYWQtdW5pbnN0YWxsYWJsZS1yZXBvcnQubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBbUNBLDBCQXVCQztBQTFERCxrREFBc0Q7QUFDdEQsbUVBQXdEO0FBQ3hELDZGQUE2RTtBQWlCN0UsU0FBUyxnQkFBZ0IsQ0FBQyxhQUFxQjtJQUM3QyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELElBQUksV0FBVyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDNUQsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFaEUsT0FBTztRQUNMLGVBQWUsRUFBRSxhQUFhO1FBQzlCLFdBQVc7UUFDWCxjQUFjO0tBQ2YsQ0FBQztBQUNKLENBQUM7QUFFTSxLQUFLLFVBQVUsT0FBTyxDQUMzQixLQUFtQztJQUVuQyxNQUFNLFFBQVEsR0FBRyxNQUFNLDZCQUFTLENBQUMsSUFBSSxDQUNuQyxJQUFJLDRCQUFnQixDQUFDO1FBQ25CLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtRQUNwQixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7S0FDZixDQUFDLENBQ0gsQ0FBQztJQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLGtEQUFpQixFQUMxQyxRQUFRLENBQUMsSUFBVyxFQUNwQixRQUFRLENBQUMsZUFBZSxDQUN6QixDQUFDO0lBRUYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3QyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZXRPYmplY3RDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7IFMzX0NMSUVOVCB9IGZyb20gJy4uL3NoYXJlZC9hd3MubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBkZWNvbXByZXNzQ29udGVudCB9IGZyb20gJy4uL3NoYXJlZC9jb21wcmVzcy1jb250ZW50LmxhbWJkYS1zaGFyZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWRVbmluc3RhbGxhYmxlUmVwb3J0RXZlbnQge1xuICByZWFkb25seSBidWNrZXQ6IHN0cmluZztcbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZUluZm8ge1xuICByZWFkb25seSBvcmlnaW5hbFBhY2thZ2U6IHN0cmluZztcbiAgcmVhZG9ubHkgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcGFja2FnZVZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkVW5pbnN0YWxsYWJsZVJlcG9ydFJlc3VsdCB7XG4gIHJlYWRvbmx5IHBhY2thZ2VzOiBQYWNrYWdlSW5mb1tdO1xufVxuXG5mdW5jdGlvbiBwYXJzZVBhY2thZ2VOYW1lKHBhY2thZ2VTdHJpbmc6IHN0cmluZyk6IFBhY2thZ2VJbmZvIHtcbiAgY29uc3QgbGFzdEF0SW5kZXggPSBwYWNrYWdlU3RyaW5nLmxhc3RJbmRleE9mKCdAJyk7XG4gIGlmIChsYXN0QXRJbmRleCA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGFja2FnZSBmb3JtYXQ6ICR7cGFja2FnZVN0cmluZ31gKTtcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VOYW1lID0gcGFja2FnZVN0cmluZy5zdWJzdHJpbmcoMCwgbGFzdEF0SW5kZXgpO1xuICBjb25zdCBwYWNrYWdlVmVyc2lvbiA9IHBhY2thZ2VTdHJpbmcuc3Vic3RyaW5nKGxhc3RBdEluZGV4ICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBvcmlnaW5hbFBhY2thZ2U6IHBhY2thZ2VTdHJpbmcsXG4gICAgcGFja2FnZU5hbWUsXG4gICAgcGFja2FnZVZlcnNpb24sXG4gIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKFxuICBldmVudDogUmVhZFVuaW5zdGFsbGFibGVSZXBvcnRFdmVudFxuKTogUHJvbWlzZTxSZWFkVW5pbnN0YWxsYWJsZVJlcG9ydFJlc3VsdD4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFMzX0NMSUVOVC5zZW5kKFxuICAgIG5ldyBHZXRPYmplY3RDb21tYW5kKHtcbiAgICAgIEJ1Y2tldDogZXZlbnQuYnVja2V0LFxuICAgICAgS2V5OiBldmVudC5rZXksXG4gICAgfSlcbiAgKTtcblxuICBpZiAoIXJlc3BvbnNlLkJvZHkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE9iamVjdCBub3QgZm91bmQ6IHMzOi8vJHtldmVudC5idWNrZXR9LyR7ZXZlbnQua2V5fWApO1xuICB9XG5cbiAgY29uc3QgZGVjb21wcmVzc2VkID0gYXdhaXQgZGVjb21wcmVzc0NvbnRlbnQoXG4gICAgcmVzcG9uc2UuQm9keSBhcyBhbnksXG4gICAgcmVzcG9uc2UuQ29udGVudEVuY29kaW5nXG4gICk7XG5cbiAgY29uc3QgcmF3UGFja2FnZXMgPSBKU09OLnBhcnNlKGRlY29tcHJlc3NlZCk7XG4gIGNvbnN0IHBhY2thZ2VzID0gcmF3UGFja2FnZXMubWFwKHBhcnNlUGFja2FnZU5hbWUpO1xuXG4gIHJldHVybiB7IHBhY2thZ2VzIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IBucket } from 'aws-cdk-lib/aws-s3';
|
|
2
|
+
import { IStateMachine, StateMachine } from 'aws-cdk-lib/aws-stepfunctions';
|
|
3
|
+
import { Construct } from 'constructs';
|
|
4
|
+
export interface RetryUninstallablePackagesProps {
|
|
5
|
+
readonly bucket: IBucket;
|
|
6
|
+
readonly orchestrationStateMachine: IStateMachine;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* State machine that retries processing of uninstallable packages.
|
|
10
|
+
*
|
|
11
|
+
* This workflow:
|
|
12
|
+
* 1. Reads the uninstallable packages report
|
|
13
|
+
* 2. Triggers main orchestration for each package
|
|
14
|
+
* 3. Ends after processing all packages
|
|
15
|
+
*/
|
|
16
|
+
export declare class RetryUninstallablePackages extends Construct {
|
|
17
|
+
readonly stateMachine: StateMachine;
|
|
18
|
+
constructor(scope: Construct, id: string, props: RetryUninstallablePackagesProps);
|
|
19
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RetryUninstallablePackages = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
6
|
+
const aws_stepfunctions_1 = require("aws-cdk-lib/aws-stepfunctions");
|
|
7
|
+
const tasks = require("aws-cdk-lib/aws-stepfunctions-tasks");
|
|
8
|
+
const constructs_1 = require("constructs");
|
|
9
|
+
const read_uninstallable_report_1 = require("./read-uninstallable-report");
|
|
10
|
+
/**
|
|
11
|
+
* State machine that retries processing of uninstallable packages.
|
|
12
|
+
*
|
|
13
|
+
* This workflow:
|
|
14
|
+
* 1. Reads the uninstallable packages report
|
|
15
|
+
* 2. Triggers main orchestration for each package
|
|
16
|
+
* 3. Ends after processing all packages
|
|
17
|
+
*/
|
|
18
|
+
class RetryUninstallablePackages extends constructs_1.Construct {
|
|
19
|
+
constructor(scope, id, props) {
|
|
20
|
+
super(scope, id);
|
|
21
|
+
const noReportFound = new aws_stepfunctions_1.Fail(this, 'No Report Found', {
|
|
22
|
+
error: 'NoReportFound',
|
|
23
|
+
cause: 'Uninstallable packages report not found at uninstallable-objects/data.json',
|
|
24
|
+
});
|
|
25
|
+
const noPackagesToRetry = new aws_stepfunctions_1.Succeed(this, 'No Packages to Retry');
|
|
26
|
+
const readReportFunction = new read_uninstallable_report_1.ReadUninstallableReport(this, 'ReadReportFunction', {
|
|
27
|
+
logRetention: aws_logs_1.RetentionDays.THREE_MONTHS,
|
|
28
|
+
});
|
|
29
|
+
props.bucket.grantRead(readReportFunction);
|
|
30
|
+
const readReport = new tasks.LambdaInvoke(this, 'Read Uninstallable Report', {
|
|
31
|
+
lambdaFunction: readReportFunction,
|
|
32
|
+
payload: aws_stepfunctions_1.TaskInput.fromObject({
|
|
33
|
+
bucket: props.bucket.bucketName,
|
|
34
|
+
key: 'uninstallable-objects/data.json',
|
|
35
|
+
}),
|
|
36
|
+
resultPath: '$.reportResponse',
|
|
37
|
+
});
|
|
38
|
+
readReport.addRetry({
|
|
39
|
+
errors: ['Lambda.Unknown'],
|
|
40
|
+
interval: aws_cdk_lib_1.Duration.seconds(2),
|
|
41
|
+
maxAttempts: 3,
|
|
42
|
+
backoffRate: 2.0,
|
|
43
|
+
});
|
|
44
|
+
readReport.addCatch(noReportFound, {
|
|
45
|
+
errors: ['States.TaskFailed'],
|
|
46
|
+
});
|
|
47
|
+
const packageRetryFailed = new aws_stepfunctions_1.Pass(this, 'Package Retry Failed', {
|
|
48
|
+
parameters: {
|
|
49
|
+
'package.$': '$.originalPackage',
|
|
50
|
+
'prefix.$': "States.Format('data/{}/v{}', $.packageName, $.packageVersion)",
|
|
51
|
+
'error.$': '$.error',
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
const retryPackage = new tasks.StepFunctionsStartExecution(this, 'Retry Package', {
|
|
55
|
+
stateMachine: props.orchestrationStateMachine,
|
|
56
|
+
integrationPattern: aws_stepfunctions_1.IntegrationPattern.RUN_JOB,
|
|
57
|
+
input: aws_stepfunctions_1.TaskInput.fromObject({
|
|
58
|
+
bucket: props.bucket.bucketName,
|
|
59
|
+
assembly: {
|
|
60
|
+
'key.$': "States.Format('data/{}/v{}/assembly.json', $.packageName, $.packageVersion)",
|
|
61
|
+
},
|
|
62
|
+
metadata: {
|
|
63
|
+
'key.$': "States.Format('data/{}/v{}/metadata.json', $.packageName, $.packageVersion)",
|
|
64
|
+
},
|
|
65
|
+
package: {
|
|
66
|
+
'key.$': "States.Format('data/{}/v{}/package.tgz', $.packageName, $.packageVersion)",
|
|
67
|
+
},
|
|
68
|
+
}),
|
|
69
|
+
});
|
|
70
|
+
retryPackage.addRetry({
|
|
71
|
+
errors: ['StepFunctions.ExecutionLimitExceeded'],
|
|
72
|
+
interval: aws_cdk_lib_1.Duration.seconds(60),
|
|
73
|
+
maxAttempts: 3,
|
|
74
|
+
backoffRate: 2.0,
|
|
75
|
+
});
|
|
76
|
+
retryPackage.addCatch(packageRetryFailed, {
|
|
77
|
+
errors: ['States.ALL'],
|
|
78
|
+
resultPath: '$.error',
|
|
79
|
+
});
|
|
80
|
+
const processEachPackage = new aws_stepfunctions_1.Map(this, 'Process Each Package', {
|
|
81
|
+
itemsPath: aws_stepfunctions_1.JsonPath.stringAt('$.reportResponse.Payload.packages'),
|
|
82
|
+
resultPath: aws_stepfunctions_1.JsonPath.DISCARD,
|
|
83
|
+
});
|
|
84
|
+
processEachPackage.itemProcessor(retryPackage);
|
|
85
|
+
const hasPackages = new aws_stepfunctions_1.Choice(this, 'Has Packages?')
|
|
86
|
+
.when(aws_stepfunctions_1.Condition.isPresent('$.reportResponse.Payload.packages[0]'), processEachPackage)
|
|
87
|
+
.otherwise(noPackagesToRetry);
|
|
88
|
+
const definition = readReport.next(hasPackages);
|
|
89
|
+
this.stateMachine = new aws_stepfunctions_1.StateMachine(this, 'Resource', {
|
|
90
|
+
definition,
|
|
91
|
+
stateMachineName: 'RetryUninstallablePackages',
|
|
92
|
+
timeout: aws_cdk_lib_1.Duration.hours(6),
|
|
93
|
+
tracingEnabled: true,
|
|
94
|
+
});
|
|
95
|
+
props.bucket.grantRead(this.stateMachine);
|
|
96
|
+
props.orchestrationStateMachine.grantStartExecution(this.stateMachine);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.RetryUninstallablePackages = RetryUninstallablePackages;
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnktdW5pbnN0YWxsYWJsZS1wYWNrYWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZW5kL29yY2hlc3RyYXRpb24vcmV0cnktdW5pbnN0YWxsYWJsZS1wYWNrYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBdUM7QUFDdkMsbURBQXFEO0FBRXJELHFFQVl1QztBQUN2Qyw2REFBNkQ7QUFDN0QsMkNBQXVDO0FBQ3ZDLDJFQUFzRTtBQU90RTs7Ozs7OztHQU9HO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSxzQkFBUztJQUd2RCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFzQztRQUV0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sYUFBYSxHQUFHLElBQUksd0JBQUksQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDdEQsS0FBSyxFQUFFLGVBQWU7WUFDdEIsS0FBSyxFQUNILDRFQUE0RTtTQUMvRSxDQUFDLENBQUM7UUFFSCxNQUFNLGlCQUFpQixHQUFHLElBQUksMkJBQU8sQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUVwRSxNQUFNLGtCQUFrQixHQUFHLElBQUksbURBQXVCLENBQ3BELElBQUksRUFDSixvQkFBb0IsRUFDcEI7WUFDRSxZQUFZLEVBQUUsd0JBQWEsQ0FBQyxZQUFZO1NBQ3pDLENBQ0YsQ0FBQztRQUVGLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFM0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUN2QyxJQUFJLEVBQ0osMkJBQTJCLEVBQzNCO1lBQ0UsY0FBYyxFQUFFLGtCQUFrQjtZQUNsQyxPQUFPLEVBQUUsNkJBQVMsQ0FBQyxVQUFVLENBQUM7Z0JBQzVCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVU7Z0JB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eUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekUsQ0FBQztDQUNGO0FBM0hELGdFQTJIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgUmV0ZW50aW9uRGF5cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHtcbiAgSVN0YXRlTWFjaGluZSxcbiAgU3RhdGVNYWNoaW5lLFxuICBTdWNjZWVkLFxuICBGYWlsLFxuICBQYXNzLFxuICBDaG9pY2UsXG4gIENvbmRpdGlvbixcbiAgTWFwLFxuICBKc29uUGF0aCxcbiAgSW50ZWdyYXRpb25QYXR0ZXJuLFxuICBUYXNrSW5wdXQsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zJztcbmltcG9ydCAqIGFzIHRhc2tzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zLXRhc2tzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUmVhZFVuaW5zdGFsbGFibGVSZXBvcnQgfSBmcm9tICcuL3JlYWQtdW5pbnN0YWxsYWJsZS1yZXBvcnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5VW5pbnN0YWxsYWJsZVBhY2thZ2VzUHJvcHMge1xuICByZWFkb25seSBidWNrZXQ6IElCdWNrZXQ7XG4gIHJlYWRvbmx5IG9yY2hlc3RyYXRpb25TdGF0ZU1hY2hpbmU6IElTdGF0ZU1hY2hpbmU7XG59XG5cbi8qKlxuICogU3RhdGUgbWFjaGluZSB0aGF0IHJldHJpZXMgcHJvY2Vzc2luZyBvZiB1bmluc3RhbGxhYmxlIHBhY2thZ2VzLlxuICpcbiAqIFRoaXMgd29ya2Zsb3c6XG4gKiAxLiBSZWFkcyB0aGUgdW5pbnN0YWxsYWJsZSBwYWNrYWdlcyByZXBvcnRcbiAqIDIuIFRyaWdnZXJzIG1haW4gb3JjaGVzdHJhdGlvbiBmb3IgZWFjaCBwYWNrYWdlXG4gKiAzLiBFbmRzIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHBhY2thZ2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXRyeVVuaW5zdGFsbGFibGVQYWNrYWdlcyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBzdGF0ZU1hY2hpbmU6IFN0YXRlTWFjaGluZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBSZXRyeVVuaW5zdGFsbGFibGVQYWNrYWdlc1Byb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBub1JlcG9ydEZvdW5kID0gbmV3IEZhaWwodGhpcywgJ05vIFJlcG9ydCBGb3VuZCcsIHtcbiAgICAgIGVycm9yOiAnTm9SZXBvcnRGb3VuZCcsXG4gICAgICBjYXVzZTpcbiAgICAgICAgJ1VuaW5zdGFsbGFibGUgcGFja2FnZXMgcmVwb3J0IG5vdCBmb3VuZCBhdCB1bmluc3RhbGxhYmxlLW9iamVjdHMvZGF0YS5qc29uJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IG5vUGFja2FnZXNUb1JldHJ5ID0gbmV3IFN1Y2NlZWQodGhpcywgJ05vIFBhY2thZ2VzIHRvIFJldHJ5Jyk7XG5cbiAgICBjb25zdCByZWFkUmVwb3J0RnVuY3Rpb24gPSBuZXcgUmVhZFVuaW5zdGFsbGFibGVSZXBvcnQoXG4gICAgICB0aGlzLFxuICAgICAgJ1JlYWRSZXBvcnRGdW5jdGlvbicsXG4gICAgICB7XG4gICAgICAgIGxvZ1JldGVudGlvbjogUmV0ZW50aW9uRGF5cy5USFJFRV9NT05USFMsXG4gICAgICB9XG4gICAgKTtcblxuICAgIHByb3BzLmJ1Y2tldC5ncmFudFJlYWQocmVhZFJlcG9ydEZ1bmN0aW9uKTtcblxuICAgIGNvbnN0IHJlYWRSZXBvcnQgPSBuZXcgdGFza3MuTGFtYmRhSW52b2tlKFxuICAgICAgdGhpcyxcbiAgICAgICdSZWFkIFVuaW5zdGFsbGFibGUgUmVwb3J0JyxcbiAgICAgIHtcbiAgICAgICAgbGFtYmRhRnVuY3Rpb246IHJlYWRSZXBvcnRGdW5jdGlvbixcbiAgICAgICAgcGF5bG9hZDogVGFza0lucHV0LmZyb21PYmplY3Qoe1xuICAgICAgICAgIGJ1Y2tldDogcHJvcHMuYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAga2V5OiAndW5pbnN0YWxsYWJsZS1vYmplY3RzL2RhdGEuanNvbicsXG4gICAgICAgIH0pLFxuICAgICAgICByZXN1bHRQYXRoOiAnJC5yZXBvcnRSZXNwb25zZScsXG4gICAgICB9XG4gICAgKTtcblxuICAgIHJlYWRSZXBvcnQuYWRkUmV0cnkoe1xuICAgICAgZXJyb3JzOiBbJ0xhbWJkYS5Vbmtub3duJ10sXG4gICAgICBpbnRlcnZhbDogRHVyYXRpb24uc2Vjb25kcygyKSxcbiAgICAgIG1heEF0dGVtcHRzOiAzLFxuICAgICAgYmFja29mZlJhdGU6IDIuMCxcbiAgICB9KTtcblxuICAgIHJlYWRSZXBvcnQuYWRkQ2F0Y2gobm9SZXBvcnRGb3VuZCwge1xuICAgICAgZXJyb3JzOiBbJ1N0YXRlcy5UYXNrRmFpbGVkJ10sXG4gICAgfSk7XG5cbiAgICBjb25zdCBwYWNrYWdlUmV0cnlGYWlsZWQgPSBuZXcgUGFzcyh0aGlzLCAnUGFja2FnZSBSZXRyeSBGYWlsZWQnLCB7XG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICdwYWNrYWdlLiQnOiAnJC5vcmlnaW5hbFBhY2thZ2UnLFxuICAgICAgICAncHJlZml4LiQnOlxuICAgICAgICAgIFwiU3RhdGVzLkZvcm1hdCgnZGF0YS97fS92e30nLCAkLnBhY2thZ2VOYW1lLCAkLnBhY2thZ2VWZXJzaW9uKVwiLFxuICAgICAgICAnZXJyb3IuJCc6ICckLmVycm9yJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXRyeVBhY2thZ2UgPSBuZXcgdGFza3MuU3RlcEZ1bmN0aW9uc1N0YXJ0RXhlY3V0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgICdSZXRyeSBQYWNrYWdlJyxcbiAgICAgIHtcbiAgICAgICAgc3RhdGVNYWNoaW5lOiBwcm9wcy5vcmNoZXN0cmF0aW9uU3RhdGVNYWNoaW5lLFxuICAgICAgICBpbnRlZ3JhdGlvblBhdHRlcm46IEludGVncmF0aW9uUGF0dGVybi5SVU5fSk9CLFxuICAgICAgICBpbnB1dDogVGFza0lucHV0LmZyb21PYmplY3Qoe1xuICAgICAgICAgIGJ1Y2tldDogcHJvcHMuYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgYXNzZW1ibHk6IHtcbiAgICAgICAgICAgICdrZXkuJCc6XG4gICAgICAgICAgICAgIFwiU3RhdGVzLkZvcm1hdCgnZGF0YS97fS92e30vYXNzZW1ibHkuanNvbicsICQucGFja2FnZU5hbWUsICQucGFja2FnZVZlcnNpb24pXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgJ2tleS4kJzpcbiAgICAgICAgICAgICAgXCJTdGF0ZXMuRm9ybWF0KCdkYXRhL3t9L3Z7fS9tZXRhZGF0YS5qc29uJywgJC5wYWNrYWdlTmFtZSwgJC5wYWNrYWdlVmVyc2lvbilcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhY2thZ2U6IHtcbiAgICAgICAgICAgICdrZXkuJCc6XG4gICAgICAgICAgICAgIFwiU3RhdGVzLkZvcm1hdCgnZGF0YS97fS92e30vcGFja2FnZS50Z3onLCAkLnBhY2thZ2VOYW1lLCAkLnBhY2thZ2VWZXJzaW9uKVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgfVxuICAgICk7XG5cbiAgICByZXRyeVBhY2thZ2UuYWRkUmV0cnkoe1xuICAgICAgZXJyb3JzOiBbJ1N0ZXBGdW5jdGlvbnMuRXhlY3V0aW9uTGltaXRFeGNlZWRlZCddLFxuICAgICAgaW50ZXJ2YWw6IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgbWF4QXR0ZW1wdHM6IDMsXG4gICAgICBiYWNrb2ZmUmF0ZTogMi4wLFxuICAgIH0pO1xuXG4gICAgcmV0cnlQYWNrYWdlLmFkZENhdGNoKHBhY2thZ2VSZXRyeUZhaWxlZCwge1xuICAgICAgZXJyb3JzOiBbJ1N0YXRlcy5BTEwnXSxcbiAgICAgIHJlc3VsdFBhdGg6ICckLmVycm9yJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHByb2Nlc3NFYWNoUGFja2FnZSA9IG5ldyBNYXAodGhpcywgJ1Byb2Nlc3MgRWFjaCBQYWNrYWdlJywge1xuICAgICAgaXRlbXNQYXRoOiBKc29uUGF0aC5zdHJpbmdBdCgnJC5yZXBvcnRSZXNwb25zZS5QYXlsb2FkLnBhY2thZ2VzJyksXG4gICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgIH0pO1xuXG4gICAgcHJvY2Vzc0VhY2hQYWNrYWdlLml0ZW1Qcm9jZXNzb3IocmV0cnlQYWNrYWdlKTtcblxuICAgIGNvbnN0IGhhc1BhY2thZ2VzID0gbmV3IENob2ljZSh0aGlzLCAnSGFzIFBhY2thZ2VzPycpXG4gICAgICAud2hlbihcbiAgICAgICAgQ29uZGl0aW9uLmlzUHJlc2VudCgnJC5yZXBvcnRSZXNwb25zZS5QYXlsb2FkLnBhY2thZ2VzWzBdJyksXG4gICAgICAgIHByb2Nlc3NFYWNoUGFja2FnZVxuICAgICAgKVxuICAgICAgLm90aGVyd2lzZShub1BhY2thZ2VzVG9SZXRyeSk7XG5cbiAgICBjb25zdCBkZWZpbml0aW9uID0gcmVhZFJlcG9ydC5uZXh0KGhhc1BhY2thZ2VzKTtcblxuICAgIHRoaXMuc3RhdGVNYWNoaW5lID0gbmV3IFN0YXRlTWFjaGluZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBkZWZpbml0aW9uLFxuICAgICAgc3RhdGVNYWNoaW5lTmFtZTogJ1JldHJ5VW5pbnN0YWxsYWJsZVBhY2thZ2VzJyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLmhvdXJzKDYpLFxuICAgICAgdHJhY2luZ0VuYWJsZWQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICBwcm9wcy5idWNrZXQuZ3JhbnRSZWFkKHRoaXMuc3RhdGVNYWNoaW5lKTtcbiAgICBwcm9wcy5vcmNoZXN0cmF0aW9uU3RhdGVNYWNoaW5lLmdyYW50U3RhcnRFeGVjdXRpb24odGhpcy5zdGF0ZU1hY2hpbmUpO1xuICB9XG59XG4iXX0=
|
package/lib/backend-dashboard.js
CHANGED
|
@@ -20,6 +20,8 @@ class BackendDashboard extends constructs_1.Construct {
|
|
|
20
20
|
"These packages could not be installed. Note that currently they will also appear in the 'missing' documentation reports.",
|
|
21
21
|
'',
|
|
22
22
|
"The specific error can be found in the package directory inside a file named 'uninstallable'",
|
|
23
|
+
'',
|
|
24
|
+
`[button:primary:Retry Uninstallable Packages](${(0, deep_link_1.stateMachineUrl)(props.orchestration.retryUninstallablePackages)})`,
|
|
23
25
|
].join('\n'),
|
|
24
26
|
bucket: props.packageData,
|
|
25
27
|
key: constants_1.UNINSTALLABLE_PACKAGES_REPORT,
|
|
@@ -226,6 +228,7 @@ class BackendDashboard extends constructs_1.Construct {
|
|
|
226
228
|
`[button:DLQ](${(0, deep_link_1.sqsQueueUrl)(props.orchestration.deadLetterQueue)})`,
|
|
227
229
|
`[button:Redrive DLQ](${(0, deep_link_1.lambdaFunctionUrl)(props.orchestration.redriveFunction)})`,
|
|
228
230
|
`[button:Regenerate All Documentation](${(0, deep_link_1.stateMachineUrl)(props.orchestration.regenerateAllDocumentation)})`,
|
|
231
|
+
`[button:Retry Uninstallable Packages](${(0, deep_link_1.stateMachineUrl)(props.orchestration.retryUninstallablePackages)})`,
|
|
229
232
|
].join('\n'),
|
|
230
233
|
}),
|
|
231
234
|
],
|
|
@@ -725,4 +728,4 @@ function renderReleaseNotesWidgets(releaseNotes) {
|
|
|
725
728
|
],
|
|
726
729
|
];
|
|
727
730
|
}
|
|
728
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC1kYXNoYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYmFja2VuZC1kYXNoYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVDO0FBQ3ZDLCtEQVVvQztBQUVwQywyQ0FBdUM7QUFJdkMscUdBQStGO0FBSS9GLDBEQUtvQztBQUNwQyx3REFBa0U7QUFFbEUsMkNBUXFCO0FBQ3JCLGlEQUE0QztBQWdCNUMsTUFBYSxnQkFBaUIsU0FBUSxzQkFBUztJQUM3QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUE0QjtRQUU1QixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sT0FBTyxHQUFnQjtZQUMzQjtnQkFDRSxJQUFJLDBEQUEwQixDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtvQkFDNUQsS0FBSyxFQUFFLHlDQUF5QztvQkFDaEQsV0FBVyxFQUFFO3dCQUNYLDBIQUEwSDt3QkFDMUgsRUFBRTt3QkFDRiw4RkFBOEY7cUJBQy9GLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDWixNQUFNLEVBQUUsS0FBSyxDQUFDLFdBQVc7b0JBQ3pCLEdBQUcsRUFBRSx5Q0FBNkI7b0JBQ2xDLE1BQU0sRUFBRSxDQUFDO29CQUNULEtBQUssRUFBRSxFQUFFO2lCQUNWLENBQUM7YUFDSDtTQUNGLENBQUM7UUFFRixLQUFLLE1BQU0sUUFBUSxJQUFJLGdDQUFxQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pELEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUMxQyxRQUFRLEVBQ1IsS0FBSyxDQUFDLFdBQVcsQ0FDbEIsRUFBRSxDQUFDO2dCQUNGLGlDQUFpQztnQkFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxJQUFJLHFCQUFxQixDQUFDO1FBRW5FLElBQUksMEJBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQzdCLGFBQWEsRUFBRSxHQUFHLGFBQWEsVUFBVTtZQUN6QyxjQUFjLEVBQUUsK0JBQWMsQ0FBQyxJQUFJO1lBQ25DLEtBQUssRUFBRSxNQUFNLEVBQUUseUJBQXlCO1lBQ3hDLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQztRQUVILElBQUksMEJBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQzVCLGFBQWEsRUFBRSxHQUFHLGFBQWEsU0FBUztZQUN4QyxjQUFjLEVBQUUsK0JBQWMsQ0FBQyxJQUFJO1lBQ25DLEtBQUssRUFBRSxNQUFNLEVBQUUseUJBQXlCO1lBQ3hDLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLDJCQUFVLENBQUM7d0JBQ2IsTUFBTSxFQUFFLENBQUM7d0JBQ1QsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsUUFBUSxFQUFFOzRCQUNSLG9CQUFvQjs0QkFDcEIsRUFBRTs0QkFDRixpQ0FBaUMsSUFBQSx1QkFBVyxFQUMxQyxLQUFLLENBQUMsV0FBVyxDQUNsQixHQUFHOzRCQUNKLDRCQUE0QixJQUFBLDZCQUFpQixFQUMzQyxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQzVDLEdBQUc7NEJBQ0osNkJBQTZCLElBQUEsNkJBQWlCLEVBQzVDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUN6QixHQUFHOzRCQUNKLG9DQUFvQyxJQUFBLG1DQUF1QixFQUN6RCxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDekIsR0FBRzt5QkFDTCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7cUJBQ2IsQ0FBQztpQkFDSDtnQkFDRDtvQkFDRSxJQUFJLDRCQUFXLENBQUM7d0JBQ2QsTUFBTSxFQUFFLENBQUM7d0JBQ1QsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsS0FBSyxFQUFFLGNBQWM7d0JBQ3JCLElBQUksRUFBRTs0QkFDSixLQUFLLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDOzRCQUM3RCxLQUFLLENBQUMsU0FBUyxDQUFDLHlCQUF5QixDQUFDO2dDQUN4QyxLQUFLLEVBQUUsa0JBQWtCOzZCQUMxQixDQUFDOzRCQUNGLEtBQUssQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUM7Z0NBQ3RDLEtBQUssRUFBRSxnQkFBZ0I7NkJBQ3hCLENBQUM7NEJBQ0YsS0FBSyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQzt5QkFDMUQ7d0JBQ0QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtxQkFDdEIsQ0FBQztvQkFDRixJQUFJLDRCQUFXLENBQUM7d0JBQ2QsTUFBTSxFQUFFLENBQUM7d0JBQ1QsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsS0FBSyxFQUFFLGdCQUFnQjt3QkFDdkIsSUFBSSxFQUFFOzRCQUNKLEtBQUssQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7NEJBQzlELEtBQUssQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUM7Z0NBQ3pDLEtBQUssRUFBRSxrQkFBa0I7NkJBQzFCLENBQUM7NEJBQ0YsS0FBSyxDQUFDLFNBQVMsQ0FBQyxpQ0FBaUMsQ0FBQztnQ0FDaEQsS0FBSyxFQUFFLGtCQUFrQjs2QkFDMUIsQ0FBQzs0QkFDRixLQUFLLENBQUMsU0FBUyxDQUFDLGdDQUFnQyxDQUFDO2dDQUMvQyxLQUFLLEVBQUUsaUJBQWlCOzZCQUN6QixDQUFDOzRCQUNGLEtBQUssQ0FBQyxTQUFTLENBQUMsK0JBQStCLENBQUM7Z0NBQzlDLEtBQUssRUFBRSx1QkFBdUI7NkJBQy9CLENBQUM7eUJBQ0g7d0JBQ0QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTt3QkFDckIsS0FBSyxFQUFFOzRCQUNMLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLG9DQUFvQyxDQUNyRSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxDQUNwQzs0QkFDRCxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQywyQ0FBMkMsQ0FDNUUsRUFBRSxLQUFLLEVBQUUsZ0NBQWdDLEVBQUUsQ0FDNUM7eUJBQ0Y7d0JBQ0QsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtxQkFDdkIsQ0FBQztpQkFDSDtnQkFDRCxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUM7Z0JBQzlDLEdBQUcsMkJBQTJCLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztnQkFDcEQ7b0JBQ0UsSUFBSSwyQkFBVSxDQUFDO3dCQUNiLE1BQU0sRUFBRSxDQUFDO3dCQUNULEtBQUssRUFBRSxFQUFFO3dCQUNULFFBQVEsRUFBRTs0QkFDUixzQkFBc0I7NEJBQ3RCLEVBQUU7NEJBQ0YsK0JBQStCLElBQUEsNkJBQWlCLEVBQzlDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUN6QixHQUFHOzRCQUNKLHFDQUFxQyxJQUFBLG1DQUF1QixFQUMxRCxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDekIsR0FBRzs0QkFDSixnQkFBZ0IsSUFBQSx1QkFBVyxFQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLEdBQUc7eUJBQ2hFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztxQkFDYixDQUFDO2lCQUNIO2dCQUNEO29CQUNFLElBQUksNEJBQVcsQ0FBQzt3QkFDZCxNQUFNLEVBQUUsQ0FBQzt3QkFDVCxLQUFLLEVBQUUsRUFBRTt3QkFDVCxLQUFLLEVBQUUsaUJBQWlCO3dCQUN4QixJQUFJLEVBQUU7NEJBQ0osSUFBQSx5QkFBVSxFQUNSLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO2dDQUN6QyxLQUFLLEVBQUUsYUFBYTs2QkFDckIsQ0FBQyxDQUNIOzRCQUNELElBQUEseUJBQVUsRUFDUixLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FDM0Q7eUJBQ0Y7d0JBQ0QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTt3QkFDckIsTUFBTSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztxQkFDNUIsQ0FBQztvQkFDRixJQUFJLDRCQUFXLENBQUM7d0JBQ2QsTUFBTSxFQUFFLENBQUM7d0JBQ1QsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsS0FBSyxFQUFFLGFBQWE7d0JBQ3BCLElBQUksRUFBRTs0QkFDSixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQztnQ0FDN0QsS0FBSyxFQUFFLGtCQUFrQjtnQ0FDekIsTUFBTSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzs2QkFDNUIsQ0FBQzs0QkFDRixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FDL0QsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzFEO3lCQUNGO3dCQUNELFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7d0JBQ3JCLEtBQUssRUFBRTs0QkFDTCxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQztnQ0FDeEQsS0FBSyxFQUFFLG9CQUFvQjtnQ0FDM0IsTUFBTSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzs2QkFDNUIsQ0FBQzt5QkFDSDt3QkFDRCxnQkFBZ0IsRUFBRTs0QkFDaEI7Z0NBQ0UsS0FBSyxFQUFFLFNBQVM7Z0NBQ2hCLEtBQUssRUFBRSxZQUFZO2dDQUNuQixLQUFLLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFOzZCQUN4Qzt5QkFDRjt3QkFDRCxVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO3dCQUN0QixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO3FCQUM1QixDQUFDO2lCQUNIO2dCQUNEO29CQUNFLElBQUksNEJBQVcsQ0FBQzt3QkFDZCxNQUFNLEVBQUUsQ0FBQzt3QkFDVCxLQUFLLEVBQUUsRUFBRTt3QkFDVCxLQUFLLEVBQUUsZUFBZTt3QkFDdEIsSUFBSSxFQUFFOzRCQUNKLElBQUEseUJBQVUsRUFDUixLQUFLLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDO2dDQUNwQyxLQUFLLEVBQUUsb0JBQW9COzZCQUM1QixDQUFDLENBQ0g7NEJBQ0QsSUFBQSx5QkFBVSxFQUNSLEtBQUssQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUM7Z0NBQ25DLEtBQUssRUFBRSxpQkFBaUI7NkJBQ3pCLENBQUMsQ0FDSDs0QkFDRCxJQUFBLHlCQUFVLEVBQ1IsS0FBSyxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQztnQ0FDdEMsS0FBSyxFQUFFLG9CQUFvQjs2QkFDNUIsQ0FBQyxDQUNIOzRCQUNELElBQUEseUJBQVUsRUFDUixLQUFLLENBQUMsU0FBUyxDQUFDLGtDQUFrQyxDQUFDO2dDQUNqRCxLQUFLLEVBQUUscUJBQXFCOzZCQUM3QixDQUFDLENBQ0g7NEJBQ0QsSUFBQSx5QkFBVSxFQUNSLEtBQUssQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUM7Z0NBQ3JDLEtBQUssRUFBRSxvQkFBb0I7NkJBQzVCLENBQUMsQ0FDSDt5QkFDRjt3QkFDRCxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRTt3QkFDdkQsT0FBTyxFQUFFLElBQUk7cUJBQ2QsQ0FBQztvQkFDRixJQUFJLDRCQUFXLENBQUM7d0JBQ2QsTUFBTSxFQUFFLENBQUM7d0JBQ1QsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsS0FBSyxFQUFFLGNBQWM7d0JBQ3JCLElBQUksRUFBRTs0QkFDSixLQUFLLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyx3Q0FBd0MsQ0FDdEUsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsQ0FDOUI7NEJBQ0QsS0FBSyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsMkNBQTJDLENBQ3pFLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLENBQ2hDO3lCQUNGO3dCQUNELFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7d0JBQ3JCLEtBQUssRUFBRTs0QkFDTCxLQUFLLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxtQ0FBbUMsQ0FDakUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsQ0FDaEM7eUJBQ0Y7d0JBQ0QsZ0JBQWdCLEVBQUU7NEJBQ2hCO2dDQUNFLEtBQUssRUFBRSxTQUFTO2dDQUNoQixLQUFLLEVBQUUsU0FBUztnQ0FDaEIsS0FBSyxFQUFFLHNCQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTs2QkFDckM7NEJBQ0Q7Z0NBQ0UsS0FBSyxFQUFFLFNBQVM7Z0NBQ2hCLEtBQUssRUFBRSx5QkFBeUI7Z0NBQ2hDLEtBQUssRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7NkJBQ3JDO3lCQUNGO3dCQUNELFVBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7d0JBQ3RCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7cUJBQzVCLENBQUM7aUJBQ0g7Z0JBQ0Q7b0JBQ0UsSUFBSSwyQkFBVSxDQUFDO3dCQUNiLE1BQU0sRUFBRSxDQUFDO3dCQUNULEtBQUssRUFBRSxFQUFFO3dCQUNULFFBQVEsRUFBRTs0QkFDUixpQkFBaUI7NEJBQ2pCLEVBQUU7NEJBQ0Ysa0NBQWtDLElBQUEsMkJBQWUsRUFDL0MsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQ2pDLEdBQUc7NEJBQ0osZ0JBQWdCLElBQUEsdUJBQVcsRUFDekIsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQ3BDLEdBQUc7NEJBQ0osd0JBQXdCLElBQUEsNkJBQWlCLEVBQ3ZDLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUNwQyxHQUFHOzRCQUNKLHlDQUF5QyxJQUFBLDJCQUFlLEVBQ3RELEtBQUssQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQy9DLEdBQUc7eUJBQ0wsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO3FCQUNiLENBQUM7aUJBQ0g7Z0JBQ0Q7b0JBQ0UsSUFBSSw0QkFBVyxDQUFDO3dCQUNkLE1BQU0sRUFBRSxDQUFDO3dCQUNULEtBQUssRUFBRSxFQUFFO3dCQUNULEtBQUssRUFBRSwwQkFBMEI7d0JBQ2pDLElBQUksRUFBRTs0QkFDSixJQUFBLHlCQUFVLEVBQ1IsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO2dDQUM3QyxLQUFLLEVBQUUsU0FBUzs2QkFDakIsQ0FBQyxDQUNIOzRCQUNELElBQUEseUJBQVUsRUFDUixLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7Z0NBQy9DLEtBQUssRUFBRSxXQUFXOzZCQUNuQixDQUFDLENBQ0g7eUJBQ0Y7d0JBQ0QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7d0JBQ3ZELEtBQUssRUFBRTs0QkFDTCxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7Z0NBQzFDLEtBQUssRUFBRSxVQUFVOzZCQUNsQixDQUFDO3lCQUNIO3dCQUNELFVBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7cUJBQ3ZCLENBQUM7b0JBQ0YsSUFBSSw0QkFBVyxDQUFDO3dCQUNkLE1BQU0sRUFBRSxDQUFDO3dCQUNULEtBQUssRUFBRSxFQUFFO3dCQUNULEtBQUssRUFBRSx3QkFBd0I7d0JBQy9CLElBQUksRUFBRTs0QkFDSixJQUFBLHlCQUFVLEVBQ1IsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO2dDQUM3QyxLQUFLLEVBQUUsU0FBUzs2QkFDakIsQ0FBQyxDQUNIOzRCQUNELElBQUEseUJBQVUsRUFDUixLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7Z0NBQzVDLEtBQUssRUFBRSxRQUFROzZCQUNoQixDQUFDLENBQ0g7NEJBQ0QsSUFBQSx5QkFBVSxFQUNSLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQztnQ0FDL0MsS0FBSyxFQUFFLFdBQVc7NkJBQ25CLENBQUMsQ0FDSDs0QkFDRCxJQUFBLHlCQUFVLEVBQ1IsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDO2dDQUM5QyxLQUFLLEVBQUUsV0FBVzs2QkFDbkIsQ0FBQyxDQUNIO3lCQUNGO3dCQUNELFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO3FCQUN4RCxDQUFDO29CQUNGLElBQUksNEJBQVcsQ0FBQzt3QkFDZCxNQUFNLEVBQUUsQ0FBQzt3QkFDVCxLQUFLLEVBQUUsRUFBRTt3QkFDVCxLQUFLLEVBQUUsbUJBQW1CO3dCQUMxQixJQUFJLEVBQUU7NEJBQ0osS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsd0NBQXdDLENBQzFFLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLENBQzlCOzRCQUNELEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLDJDQUEyQyxDQUM3RSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxDQUNoQzt5QkFDRjt3QkFDRCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO3dCQUNyQixLQUFLLEVBQUU7NEJBQ0wsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsbUNBQW1DLENBQ3JFLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLENBQ2hDO3lCQUNGO3dCQUNELGdCQUFnQixFQUFFOzRCQUNoQjtnQ0FDRSxLQUFLLEVBQUUsU0FBUztnQ0FDaEIsS0FBSyxFQUFFLFNBQVM7Z0NBQ2hCLEtBQUssRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7NkJBQ3JDOzRCQUNEO2dDQUNFLEtBQUssRUFBRSxTQUFTO2dDQUNoQixLQUFLLEVBQUUseUJBQXlCO2dDQUNoQyxLQUFLLEVBQUUsc0JBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFOzZCQUNyQzt5QkFDRjt3QkFDRCxVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO3dCQUN0QixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO3FCQUM1QixDQUFDO2lCQUNIO2dCQUVELFlBQVk7Z0JBQ1osaURBQWlEO2dCQUNqRDtvQkFDRSxJQUFJLDJCQUFVLENBQUM7d0JBQ2IsTUFBTSxFQUFFLENBQUM7d0JBQ1QsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsUUFBUSxFQUFFOzRCQUNSLGFBQWE7NEJBQ2IsRUFBRTs0QkFDRixxQ0FBcUMsSUFBQSx1QkFBVyxFQUM5QyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFDckIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQ3pCLEdBQUc7NEJBQ0osMkJBQTJCLElBQUEsNkJBQWlCLEVBQzFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FDbEMsR0FBRzs0QkFDSix1QkFBdUIsSUFBQSxtQ0FBdUIsRUFDNUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUNsQyxHQUFHOzRCQUNKLHlCQUF5QixJQUFBLHVCQUFXLEVBQ2xDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FDM0IsR0FBRzs0QkFDSix3QkFBd0IsSUFBQSxtQ0FBdUIsRUFDN0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUNuQyxHQUFHO3lCQUNMLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztxQkFDYixDQUFDO2lCQUNIO2dCQUNEO29CQUNFLElBQUksNEJBQVcsQ0FBQzt3QkFDZCxNQUFNLEVBQUUsQ0FBQzt3QkFDVCxLQUFLLEVBQUUsRUFBRTt3QkFDVCxLQUFLLEVBQUUsV0FBVzt3QkFDbEIsSUFBSSxFQUFFOzRCQUNKLElBQUEseUJBQVUsRUFDUixLQUFLLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQ3RELFFBQVEsQ0FDVDs0QkFDRCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUM7Z0NBQ3ZELEtBQUssRUFBRSxlQUFlOzZCQUN2QixDQUFDO3lCQUNIO3dCQUNELFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7d0JBQ3JCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7cUJBQzVCLENBQUM7b0JBQ0YsSUFBSSw0QkFBVyxDQUFDO3dCQUNkLE1BQU0sRUFBRSxDQUFDO3dCQUNULEtBQUssRUFBRSxFQUFFO3dCQUNULEtBQUssRUFBRSx1QkFBdUI7d0JBQzlCLElBQUksRUFBRTs0QkFDSixJQUFBLHlCQUFVLEVBQ1IsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDO2dDQUNsRCxLQUFLLEVBQUUsYUFBYTs2QkFDckIsQ0FBQyxDQUNIOzRCQUNELElBQUEseUJBQVUsRUFDUixLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO2dDQUM3QyxLQUFLLEVBQUUsUUFBUTs2QkFDaEIsQ0FBQyxDQUNIO3lCQUNGO3dCQUNELFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7d0JBQ3JCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7cUJBQzVCLENBQUM7aUJBQ0g7Z0JBRUQsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZO29CQUNwQixDQUFDLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztvQkFDL0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDUCxHQUFHLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7Z0JBQ3BELEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWTtvQkFDcEIsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7b0JBQy9DLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDUjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxrQkFBa0IsQ0FDeEIsUUFBK0IsRUFDL0IsV0FBb0I7UUFFcEIsT0FBTztZQUNMLElBQUksMERBQTBCLENBQUMsSUFBSSxFQUFFLGVBQWUsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNuRSxLQUFLLEVBQUUsc0RBQXNELFFBQVEsQ0FBQyxJQUFJLEdBQUc7Z0JBQzdFLFdBQVcsRUFBRTtvQkFDWCw4QkFBOEIsUUFBUSxDQUFDLElBQUksaUJBQWlCO29CQUM1RCxzRUFBc0U7b0JBQ3RFLEVBQUU7b0JBQ0YsK0NBQStDO2lCQUNoRCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ1osTUFBTSxFQUFFLFdBQVc7Z0JBQ25CLEdBQUcsRUFBRSxJQUFBLHNDQUEwQixFQUFDLFFBQVEsQ0FBQztnQkFDekMsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7YUFDVixDQUFDO1lBQ0YsSUFBSSwwREFBMEIsQ0FDNUIsSUFBSSxFQUNKLHVCQUF1QixRQUFRLENBQUMsSUFBSSxFQUFFLEVBQ3RDO2dCQUNFLEtBQUssRUFBRSxpREFBaUQsUUFBUSxDQUFDLElBQUksR0FBRztnQkFDeEUsV0FBVyxFQUFFO29CQUNYLDhCQUE4QixRQUFRLENBQUMsSUFBSSxpREFBaUQ7b0JBQzVGLEVBQUU7b0JBQ0Ysd0dBQXdHO2lCQUN6RyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ1osTUFBTSxFQUFFLFdBQVc7Z0JBQ25CLEdBQUcsRUFBRSxJQUFBLGlDQUFxQixFQUFDLFFBQVEsQ0FBQztnQkFDcEMsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7YUFDVixDQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxDQUFDLCtCQUErQixDQUFDLEVBQ3ZDLFNBQVMsRUFDVCxhQUFhLEdBQ1M7UUFDdEIsTUFBTTtZQUNKLElBQUksMkJBQVUsQ0FBQztnQkFDYixNQUFNLEVBQUUsQ0FBQztnQkFDVCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxRQUFRLEVBQUU7b0JBQ1IsNEJBQTRCO29CQUM1QixFQUFFO29CQUNGLHdDQUF3QyxJQUFBLHVCQUFXLEVBQ2pELGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUN0QyxHQUFHO29CQUNKLHVDQUF1QyxJQUFBLHlCQUFhLEVBQ2xELGFBQWEsQ0FBQyxVQUFVLENBQ3pCLEdBQUc7aUJBQ0wsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2IsQ0FBQztTQUNILENBQUM7UUFDRixNQUFNLGFBQWEsR0FBRyxJQUFJLHVCQUFNLENBQUM7WUFDL0IsYUFBYSxFQUFFO2dCQUNiLEtBQUssRUFBRSxtQkFBbUI7Z0JBQzFCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixPQUFPLEVBQUUsU0FBUztnQkFDbEIsSUFBSSxFQUFFLFVBQVU7YUFDakI7WUFDRCxVQUFVLEVBQUUsZUFBZTtZQUMzQixTQUFTLEVBQUUsV0FBVztZQUN0QixTQUFTLEVBQUUsMEJBQVMsQ0FBQyxPQUFPO1NBQzdCLENBQUMsQ0FBQztRQUVILE1BQU07WUFDSixJQUFJLDRCQUFXLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLG1CQUFtQjtnQkFDMUIsSUFBSSxFQUFFO29CQUNKLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0NBQWdDLEVBQUUsQ0FBQztvQkFDL0QsSUFBSSwrQkFBYyxDQUFDO3dCQUNqQixVQUFVLEVBQUUsOEJBQThCO3dCQUMxQyxLQUFLLEVBQUUsZ0NBQWdDO3dCQUN2QyxZQUFZLEVBQUUsRUFBRSxhQUFhLEVBQUU7cUJBQ2hDLENBQUM7aUJBQ0g7Z0JBQ0QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckIsS0FBSyxFQUFFO29CQUNMLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDO29CQUNuRSxhQUFhLENBQUMsMEJBQTBCLENBQUM7d0JBQ3ZDLEtBQUssRUFBRSxvQkFBb0I7cUJBQzVCLENBQUM7aUJBQ0g7Z0JBQ0QsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRTthQUNyRSxDQUFDO1lBQ0YsSUFBSSw0QkFBVyxDQUFDO2dCQUNkLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxFQUFFO2dCQUNULEtBQUssRUFBRSxlQUFlO2dCQUN0QixJQUFJLEVBQUU7b0JBQ0osSUFBQSx5QkFBVSxFQUNSLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQ25FO29CQUNELElBQUEseUJBQVUsRUFDUixhQUFhLENBQUMsdUJBQXVCLENBQUM7d0JBQ3BDLEtBQUssRUFBRSxtQkFBbUI7cUJBQzNCLENBQUMsQ0FDSDtpQkFDRjtnQkFDRCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQixLQUFLLEVBQUU7b0JBQ0wsSUFBQSx5QkFBVSxFQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO2lCQUN0RTtnQkFDRCxVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3ZCLENBQUM7WUFDRixJQUFJLDRCQUFXLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLGtCQUFrQjtnQkFDekIsSUFBSSxFQUFFO29CQUNKLGFBQWEsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUM7d0JBQ2pELEtBQUssRUFBRSxtQkFBbUI7cUJBQzNCLENBQUM7b0JBQ0YsYUFBYSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQzt3QkFDakQsS0FBSyxFQUFFLG1CQUFtQjtxQkFDM0IsQ0FBQztpQkFDSDtnQkFDRCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQixLQUFLLEVBQUU7b0JBQ0wsYUFBYSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQzt3QkFDL0MsS0FBSyxFQUFFLHVCQUF1Qjt3QkFDOUIsU0FBUyxFQUFFLDBCQUFTLENBQUMsT0FBTztxQkFDN0IsQ0FBQztvQkFDRixhQUFhLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDO3dCQUMvQyxLQUFLLEVBQUUsdUJBQXVCO3dCQUM5QixTQUFTLEVBQUUsMEJBQVMsQ0FBQyxPQUFPO3FCQUM3QixDQUFDO29CQUNGLGFBQWEsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUM7d0JBQy9DLEtBQUssRUFBRSx1QkFBdUI7d0JBQzlCLFNBQVMsRUFBRSwwQkFBUyxDQUFDLE9BQU87cUJBQzdCLENBQUM7aUJBQ0g7Z0JBQ0QsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUN2QixDQUFDO1NBQ0gsQ0FBQztRQUVGLEtBQUssTUFBTSxRQUFRLElBQUksZ0NBQXFCLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakQsTUFBTTtnQkFDSixJQUFJLDJCQUFVLENBQUM7b0JBQ2IsTUFBTSxFQUFFLENBQUM7b0JBQ1QsS0FBSyxFQUFFLEVBQUU7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQixRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUU7aUJBQ2hELENBQUM7YUFDSCxDQUFDO1lBQ0YsTUFBTTtnQkFDSixJQUFJLDRCQUFXLENBQUM7b0JBQ2QsTUFBTSxFQUFFLENBQUM7b0JBQ1QsS0FBSyxFQUFFLEVBQUU7b0JBQ1QsS0FBSyxFQUFFLGtCQUFrQjtvQkFDekIsSUFBSSxFQUFFO3dCQUNKLFNBQVMsQ0FBQyxrQ0FBa0MsQ0FBQyxRQUFRLEVBQUU7NEJBQ3JELEtBQUssRUFBRSxXQUFXOzRCQUNsQixLQUFLLEVBQUUsU0FBUzt5QkFDakIsQ0FBQzt3QkFDRixTQUFTLENBQUMsd0NBQXdDLENBQUMsUUFBUSxFQUFFOzRCQUMzRCxLQUFLLEVBQUUsa0JBQWtCOzRCQUN6QixLQUFLLEVBQUUsU0FBUzt5QkFDakIsQ0FBQzt3QkFDRixTQUFTLENBQUMsNkNBQTZDLENBQUMsUUFBUSxFQUFFOzRCQUNoRSxLQUFLLEVBQUUsdUJBQXVCOzRCQUM5QixLQUFLLEVBQUUsU0FBUzt5QkFDakIsQ0FBQzt3QkFDRixTQUFTLENBQUMsb0NBQW9DLENBQUMsUUFBUSxFQUFFOzRCQUN2RCxLQUFLLEVBQUUsYUFBYTs0QkFDcEIsS0FBSyxFQUFFLFNBQVM7eUJBQ2pCLENBQUM7d0JBQ0YsU0FBUyxDQUFDLGdDQUFnQyxDQUFDLFFBQVEsRUFBRTs0QkFDbkQsS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLEtBQUssRUFBRSxTQUFTO3lCQUNqQixDQUFDO3FCQUNIO29CQUNELFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7b0JBQy9CLElBQUksRUFBRSxnQ0FBZSxDQUFDLEdBQUc7aUJBQzFCLENBQUM7Z0JBQ0YsSUFBSSw0QkFBVyxDQUFDO29CQUNkLE1BQU0sRUFBRSxDQUFDO29CQUNULEtBQUssRUFBRSxFQUFFO29CQUNULEtBQUssRUFBRSw0QkFBNEI7b0JBQ25DLElBQUksRUFBRTt3QkFDSixTQUFTLENBQUMsNkJBQTZCLENBQUMsUUFBUSxFQUFFOzRCQUNoRCxLQUFLLEVBQUUsV0FBVzs0QkFDbEIsS0FBSyxFQUFFLFNBQVM7eUJBQ2pCLENBQUM7d0JBQ0YsU0FBUyxDQUFDLG1DQUFtQyxDQUFDLFFBQVEsRUFBRTs0QkFDdEQsS0FBSyxFQUFFLGtCQUFrQjs0QkFDekIsS0FBSyxFQUFFLFNBQVM7eUJBQ2pCLENBQUM7d0JBQ0YsU0FBUyxDQUFDLHdDQUF3QyxDQUFDLFFBQVEsRUFBRTs0QkFDM0QsS0FBSyxFQUFFLHVCQUF1Qjs0QkFDOUIsS0FBSyxFQUFFLFNBQVM7eUJBQ2pCLENBQUM7d0JBQ0YsU0FBUyxDQUFDLCtCQUErQixDQUFDLFFBQVEsRUFBRTs0QkFDbEQsS0FBSyxFQUFFLGFBQWE7NEJBQ3BCLEtBQUssRUFBRSxTQUFTO3lCQUNqQixDQUFDO3dCQUNGLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLEVBQUU7NEJBQzlDLEtBQUssRUFBRSxTQUFTOzRCQUNoQixLQUFLLEVBQUUsU0FBUzt5QkFDakIsQ0FBQztxQkFDSDtvQkFDRCxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO29CQUMvQixJQUFJLEVBQUUsZ0NBQWUsQ0FBQyxHQUFHO2lCQUMxQixDQUFDO2FBQ0gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUEvb0JELDRDQStvQkM7QUFFRCxRQUFRLENBQUMsQ0FBQywyQkFBMkIsQ0FDbkMsY0FBeUM7SUFFekMsS0FBSyxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUMzQyxNQUFNO1lBQ0osSUFBSSwyQkFBVSxDQUFDO2dCQUNiLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxFQUFFO2dCQUNULFFBQVEsRUFBRTtvQkFDUixLQUFLLGFBQWEsQ0FBQyxJQUFJLEVBQUU7b0JBQ3pCLEVBQUU7b0JBQ0YsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUNoQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQ3pCLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FDL0Q7aUJBQ0YsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2IsQ0FBQztTQUNILENBQUM7UUFDRixLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUM7SUFDeEMsQ0FBQztJQUNELE9BQU87QUFDVCxDQUFDO0FBRUQsU0FBUyx5QkFBeUIsQ0FBQyxZQUEwQjtJQUMzRCxPQUFPO1FBQ0w7WUFDRSxJQUFJLDJCQUFVLENBQUM7Z0JBQ2IsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsUUFBUSxFQUFFO29CQUNSLGlCQUFpQjtvQkFDakIsRUFBRTtvQkFDRix5Q0FBeUMsSUFBQSx1QkFBVyxFQUNsRCxZQUFZLENBQUMsTUFBTSxFQUNuQixZQUFZLENBQUMsUUFBUSxDQUN0QixHQUFHO29CQUNKLHdDQUF3QyxJQUFBLDJCQUFlLEVBQ3JELFlBQVksQ0FBQyxZQUFZLENBQzFCLEdBQUc7b0JBQ0osNkJBQTZCLElBQUEsNkJBQWlCLEVBQzVDLFlBQVksQ0FBQyxlQUFlLENBQzdCLEdBQUc7b0JBQ0osK0JBQStCLElBQUEsNkJBQWlCLEVBQzlDLFlBQVksQ0FBQyxpQkFBaUIsQ0FDL0IsR0FBRztvQkFDSixnQ0FBZ0MsSUFBQSw2QkFBaUIsRUFDL0MsWUFBWSxDQUFDLGtCQUFrQixDQUNoQyxHQUFHO2lCQUNMLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNiLENBQUM7U0FDSDtRQUNEO1lBQ0UsSUFBSSw0QkFBVyxDQUFDO2dCQUNkLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxFQUFFO2dCQUNULEtBQUssRUFBRSxrQ0FBa0M7Z0JBQ3pDLElBQUksRUFBRTtvQkFDSixJQUFBLHlCQUFVLEVBQ1IsWUFBWSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLENBQUMsRUFDbEUsUUFBUSxDQUNUO2lCQUNGO2dCQUNELFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDdEIsQ0FBQztZQUNGLElBQUksNEJBQVcsQ0FBQztnQkFDZCxNQUFNLEVBQUUsQ0FBQztnQkFDVCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxLQUFLLEVBQUUscUJBQXFCO2dCQUM1QixJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRSxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQixnQkFBZ0IsRUFBRTtvQkFDaEI7d0JBQ0UsS0FBSyxFQUFFLFNBQVM7d0JBQ2hCLEtBQUssRUFBRSxpQ0FBaUM7d0JBQ3hDLEtBQUssRUFBRSxzQkFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUU7cUJBQ3JDO2lCQUNGO2FBQ0YsQ0FBQztTQUNIO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLDJCQUEyQixDQUNsQyxjQUE4QjtJQUU5QixPQUFPO1FBQ0w7WUFDRSxJQUFJLDJCQUFVLENBQUM7Z0JBQ2IsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsUUFBUSxFQUFFO29CQUNSLG1CQUFtQjtvQkFDbkIsRUFBRTtvQkFDRixvQ0FBb0MsSUFBQSx1QkFBVyxFQUM3QyxjQUFjLENBQUMsTUFBTSxFQUNyQiwrQkFBbUIsQ0FDcEIsR0FBRztvQkFDSixxQ0FBcUMsSUFBQSw2QkFBaUIsRUFDcEQsY0FBYyxDQUFDLE9BQU8sQ0FDdkIsR0FBRztvQkFDSixpQ0FBaUMsSUFBQSxtQ0FBdUIsRUFDdEQsY0FBYyxDQUFDLE9BQU8sQ0FDdkIsR0FBRztpQkFDTCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDYixDQUFDO1NBQ0g7UUFDRDtZQUNFLElBQUksNEJBQVcsQ0FBQztnQkFDZCxNQUFNLEVBQUUsQ0FBQztnQkFDVCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxLQUFLLEVBQUUscUNBQXFDO2dCQUM1QyxJQUFJLEVBQUU7b0JBQ0osSUFBQSx5QkFBVSxFQUNSLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQzt3QkFDeEMsS0FBSyxFQUFFLDJCQUEyQjtxQkFDbkMsQ0FBQyxFQUNGLFFBQVEsQ0FDVDtpQkFDRjtnQkFDRCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3RCLENBQUM7WUFDRixJQUFJLDRCQUFXLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLHFCQUFxQjtnQkFDNUIsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDcEUsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckIsZ0JBQWdCLEVBQUU7b0JBQ2hCO3dCQUNFLEtBQUssRUFBRSxTQUFTO3dCQUNoQixLQUFLLEVBQUUsNEJBQTRCO3dCQUNuQyxLQUFLLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFO3FCQUN2QztpQkFDRjthQUNGLENBQUM7U0FDSDtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyx5QkFBeUIsQ0FDaEMsWUFBZ0M7SUFFaEMsT0FBTztRQUNMO1lBQ0UsSUFBSSwyQkFBVSxDQUFDO2dCQUNiLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxFQUFFO2dCQUNULFFBQVEsRUFBRTtvQkFDUixpQkFBaUI7b0JBQ2pCLEVBQUU7b0JBQ0YsaUNBQWlDLElBQUEsMkJBQWUsRUFDOUMsWUFBWSxDQUFDLFlBQVksQ0FDMUIsR0FBRztvQkFDSixnQ0FBZ0MsSUFBQSw2QkFBaUIsRUFDL0MsWUFBWSxDQUFDLHlCQUF5QixDQUN2QyxHQUFHO29CQUNKLGlDQUFpQyxJQUFBLDZCQUFpQixFQUNoRCxZQUFZLENBQUMsMEJBQTBCLENBQ3hDLEdBQUc7b0JBQ0osdUJBQXVCLElBQUEsNkJBQWlCLEVBQ3RDLFlBQVksQ0FBQyxrQkFBa0IsQ0FDaEMsR0FBRztvQkFDSixrQkFBa0IsSUFBQSx1QkFBVyxFQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRztvQkFDcEQsd0JBQXdCLElBQUEsdUJBQVcsRUFBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEdBQUc7b0JBQ2hFLHNCQUFzQixJQUFBLHVCQUFXLEVBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHO2lCQUM3RCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDYixDQUFDO1NBQ0g7UUFDRDtZQUNFLElBQUksNEJBQVcsQ0FBQztnQkFDZCxNQUFNLEVBQUUsQ0FBQztnQkFDVCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxLQUFLLEVBQUUseUJBQXlCO2dCQUNoQyxJQUFJLEVBQUU7b0JBQ0osSUFBQSx5QkFBVSxFQUNSLFlBQVksQ0FBQyxtQ0FBbUMsQ0FBQzt3QkFDL0MsS0FBSyxFQUFFLDZCQUE2QjtxQkFDckMsQ0FBQyxFQUNGLFFBQVEsQ0FDVDtpQkFDRjtnQkFDRCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3RCLENBQUM7WUFDRixJQUFJLDRCQUFXLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLGlDQUFpQztnQkFDeEMsSUFBSSxFQUFFO29CQUNKLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQztvQkFDN0QsWUFBWSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxDQUFDO29CQUNqRSxZQUFZLENBQUMsd0JBQXdCLENBQUM7d0JBQ3BDLEtBQUssRUFBRSxvQkFBb0I7cUJBQzVCLENBQUM7b0JBQ0YsWUFBWSxDQUFDLDJCQUEyQixDQUFDO3dCQUN2QyxLQUFLLEVBQUUsdUJBQXVCO3FCQUMvQixDQUFDO29CQUNGLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQzt3QkFDeEMsS0FBSyxFQUFFLGlCQUFpQjtxQkFDekIsQ0FBQztvQkFDRixZQUFZLENBQUMsK0JBQStCLENBQUM7d0JBQzNDLEtBQUssRUFBRSxvQkFBb0I7cUJBQzVCLENBQUM7b0JBQ0YsWUFBWSxDQUFDLHlCQUF5QixDQUFDO3dCQUNyQyxLQUFLLEVBQUUscUJBQXFCO3FCQUM3QixDQUFDO2lCQUNIO2FBQ0YsQ0FBQztTQUNIO1FBQ0Q7WUFDRSxJQUFJLDRCQUFXLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLHdCQUF3QjtnQkFDL0IsSUFBSSxFQUFFO29CQUNKLElBQUEseUJBQVUsRUFDUixZQUFZLENBQUMsc0JBQXNCLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFDdkQsUUFBUSxDQUNUO29CQUNELElBQUEseUJBQVUsRUFDUixZQUFZLENBQUMscUJBQXFCLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFDckQsUUFBUSxDQUNUO29CQUNELElBQUEseUJBQVUsRUFDUixZQUFZLENBQUMsMEJBQTBCLENBQUM7d0JBQ3RDLEtBQUssRUFBRSxXQUFXO3FCQUNuQixDQUFDLEVBQ0YsUUFBUSxDQUNUO2lCQUNGO2FBQ0YsQ0FBQztTQUNIO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIERhc2hib2FyZCxcbiAgR3JhcGhXaWRnZXQsXG4gIEdyYXBoV2lkZ2V0VmlldyxcbiAgVGV4dFdpZGdldCxcbiAgSVdpZGdldCxcbiAgTWF0aEV4cHJlc3Npb24sXG4gIE1ldHJpYyxcbiAgU3RhdGlzdGljLFxuICBQZXJpb2RPdmVycmlkZSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgSUJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERlbnlMaXN0IH0gZnJvbSAnLi9iYWNrZW5kL2RlbnktbGlzdCc7XG5pbXBvcnQgeyBJbmdlc3Rpb24gfSBmcm9tICcuL2JhY2tlbmQvaW5nZXN0aW9uJztcbmltcG9ydCB7IEludmVudG9yeSB9IGZyb20gJy4vYmFja2VuZC9pbnZlbnRvcnknO1xuaW1wb3J0IHsgUGFja2FnZVZlcnNpb25zVGFibGVXaWRnZXQgfSBmcm9tICcuL2JhY2tlbmQvaW52ZW50b3J5L3BhY2thZ2UtdmVyc2lvbnMtdGFibGUtd2lkZ2V0JztcbmltcG9ydCB7IE9yY2hlc3RyYXRpb24gfSBmcm9tICcuL2JhY2tlbmQvb3JjaGVzdHJhdGlvbic7XG5pbXBvcnQgeyBQYWNrYWdlU3RhdHMgfSBmcm9tICcuL2JhY2tlbmQvcGFja2FnZS1zdGF0cyc7XG5pbXBvcnQgeyBSZWxlYXNlTm90ZUZldGNoZXIgfSBmcm9tICcuL2JhY2tlbmQvcmVsZWFzZS1ub3Rlcyc7XG5pbXBvcnQge1xuICBtaXNzaW5nRG9jdW1lbnRhdGlvblJlcG9ydCxcbiAgVU5JTlNUQUxMQUJMRV9QQUNLQUdFU19SRVBPUlQsXG4gIGNvcnJ1cHRBc3NlbWJseVJlcG9ydCxcbiAgVkVSU0lPTl9UUkFDS0VSX0tFWSxcbn0gZnJvbSAnLi9iYWNrZW5kL3NoYXJlZC9jb25zdGFudHMnO1xuaW1wb3J0IHsgRG9jdW1lbnRhdGlvbkxhbmd1YWdlIH0gZnJvbSAnLi9iYWNrZW5kL3NoYXJlZC9sYW5ndWFnZSc7XG5pbXBvcnQgeyBWZXJzaW9uVHJhY2tlciB9IGZyb20gJy4vYmFja2VuZC92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IHtcbiAgZWNzQ2x1c3RlclVybCxcbiAgbGFtYmRhRnVuY3Rpb25VcmwsXG4gIGxhbWJkYVNlYXJjaExvZ0dyb3VwVXJsLFxuICBsb2dHcm91cFVybCxcbiAgczNPYmplY3RVcmwsXG4gIHNxc1F1ZXVlVXJsLFxuICBzdGF0ZU1hY2hpbmVVcmwsXG59IGZyb20gJy4vZGVlcC1saW5rJztcbmltcG9ydCB7IGZpbGxNZXRyaWMgfSBmcm9tICcuL21ldHJpYy11dGlscyc7XG5pbXBvcnQgeyBQYWNrYWdlU291cmNlQmluZFJlc3VsdCB9IGZyb20gJy4vcGFja2FnZS1zb3VyY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tlbmREYXNoYm9hcmRQcm9wcyB7XG4gIHJlYWRvbmx5IGRhc2hib2FyZE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VTb3VyY2VzOiBQYWNrYWdlU291cmNlQmluZFJlc3VsdFtdO1xuICByZWFkb25seSBpbmdlc3Rpb246IEluZ2VzdGlvbjtcbiAgcmVhZG9ubHkgb3JjaGVzdHJhdGlvbjogT3JjaGVzdHJhdGlvbjtcbiAgcmVhZG9ubHkgaW52ZW50b3J5OiBJbnZlbnRvcnk7XG4gIHJlYWRvbmx5IGRlbnlMaXN0OiBEZW55TGlzdDtcbiAgcmVhZG9ubHkgcGFja2FnZURhdGE6IElCdWNrZXQ7XG4gIHJlYWRvbmx5IHBhY2thZ2VTdGF0cz86IFBhY2thZ2VTdGF0cztcbiAgcmVhZG9ubHkgdmVyc2lvblRyYWNrZXI6IFZlcnNpb25UcmFja2VyO1xuICByZWFkb25seSByZWxlYXNlTm90ZXM/OiBSZWxlYXNlTm90ZUZldGNoZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBCYWNrZW5kRGFzaGJvYXJkIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQmFja2VuZERhc2hib2FyZFByb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCByZXBvcnRzOiBJV2lkZ2V0W11bXSA9IFtcbiAgICAgIFtcbiAgICAgICAgbmV3IFBhY2thZ2VWZXJzaW9uc1RhYmxlV2lkZ2V0KHRoaXMsICdVbmluc3RhbGxhYmxlUGFja2FnZXMnLCB7XG4gICAgICAgICAgdGl0bGU6ICdQYWNrYWdlIFZlcnNpb25zIFJlcG9ydCB8IFVuaW5zdGFsbGFibGUnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgICBcIlRoZXNlIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBpbnN0YWxsZWQuIE5vdGUgdGhhdCBjdXJyZW50bHkgdGhleSB3aWxsIGFsc28gYXBwZWFyIGluIHRoZSAnbWlzc2luZycgZG9jdW1lbnRhdGlvbiByZXBvcnRzLlwiLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBcIlRoZSBzcGVjaWZpYyBlcnJvciBjYW4gYmUgZm91bmQgaW4gdGhlIHBhY2thZ2UgZGlyZWN0b3J5IGluc2lkZSBhIGZpbGUgbmFtZWQgJ3VuaW5zdGFsbGFibGUnXCIsXG4gICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICBidWNrZXQ6IHByb3BzLnBhY2thZ2VEYXRhLFxuICAgICAgICAgIGtleTogVU5JTlNUQUxMQUJMRV9QQUNLQUdFU19SRVBPUlQsXG4gICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IGxhbmd1YWdlIG9mIERvY3VtZW50YXRpb25MYW5ndWFnZS5BTEwpIHtcbiAgICAgIGZvciAoY29uc3QgcmVwb3J0IG9mIHRoaXMucGVyTGFuZ3VhZ2VSZXBvcnRzKFxuICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgcHJvcHMucGFja2FnZURhdGFcbiAgICAgICkpIHtcbiAgICAgICAgLy8gcHV0IGV2ZXJ5IHJlcG9ydCBpbiBhIG5ldyBsaW5lXG4gICAgICAgIHJlcG9ydHMucHVzaChbcmVwb3J0XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGFzaGJvYXJkTmFtZSA9IHByb3BzLmRhc2hib2FyZE5hbWUgPz8gJ0NvbnN0cnVjdEh1YkJhY2tlbmQnO1xuXG4gICAgbmV3IERhc2hib2FyZCh0aGlzLCAnUmVwb3J0cycsIHtcbiAgICAgIGRhc2hib2FyZE5hbWU6IGAke2Rhc2hib2FyZE5hbWV9LXJlcG9ydHNgLFxuICAgICAgcGVyaW9kT3ZlcnJpZGU6IFBlcmlvZE92ZXJyaWRlLkFVVE8sXG4gICAgICBzdGFydDogJy1QMVcnLCAvLyBTaG93IDEgd2VlayBieSBkZWZhdWx0XG4gICAgICB3aWRnZXRzOiByZXBvcnRzLFxuICAgIH0pO1xuXG4gICAgbmV3IERhc2hib2FyZCh0aGlzLCAnR3JhcGhzJywge1xuICAgICAgZGFzaGJvYXJkTmFtZTogYCR7ZGFzaGJvYXJkTmFtZX0tZ3JhcGhzYCxcbiAgICAgIHBlcmlvZE92ZXJyaWRlOiBQZXJpb2RPdmVycmlkZS5BVVRPLFxuICAgICAgc3RhcnQ6ICctUDFXJywgLy8gU2hvdyAxIHdlZWsgYnkgZGVmYXVsdFxuICAgICAgd2lkZ2V0czogW1xuICAgICAgICBbXG4gICAgICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICAgICAgJyMgQ2F0YWxvZyBPdmVydmlldycsXG4gICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpwcmltYXJ5OlBhY2thZ2UgRGF0YV0oJHtzM09iamVjdFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5wYWNrYWdlRGF0YVxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpDYXRhbG9nIEJ1aWxkZXJdKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5jYXRhbG9nQnVpbGRlci5mdW5jdGlvblxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpJbnZlbnRvcnkgQ2FuYXJ5XSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5mdW5jdGlvblxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpTZWFyY2ggQ2FuYXJ5IExvZyBHcm91cF0oJHtsYW1iZGFTZWFyY2hMb2dHcm91cFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkuZnVuY3Rpb25cbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdDYXRhbG9nIFNpemUnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljU3VibW9kdWxlQ291bnQoeyBsYWJlbDogJ1N1Ym1vZHVsZXMnIH0pLFxuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljUGFja2FnZVZlcnNpb25Db3VudCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdQYWNrYWdlIFZlcnNpb25zJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNQYWNrYWdlTWFqb3JDb3VudCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdQYWNrYWdlIE1ham9ycycsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljUGFja2FnZUNvdW50KHsgbGFiZWw6ICdQYWNrYWdlcycgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0NhdGFsb2cgSXNzdWVzJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgcHJvcHMuaW52ZW50b3J5Lm1ldHJpY1Vua25vd25PYmplY3RDb3VudCh7IGxhYmVsOiAnVW5rbm93bicgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNNaXNzaW5nQXNzZW1ibHlDb3VudCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdNaXNzaW5nIEFzc2VtYmx5JyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNNaXNzaW5nUGFja2FnZU1ldGFkYXRhQ291bnQoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTWlzc2luZyBNZXRhZGF0YScsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljTWlzc2luZ1BhY2thZ2VUYXJiYWxsQ291bnQoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTWlzc2luZyBUYXJiYWxsJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNVbmluc3RhbGxhYmxlUGFja2FnZUNvdW50KHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1VuaW5zdGFsbGFibGUgUGFja2FnZScsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uY2F0YWxvZ0J1aWxkZXIubWV0cmljTWlzc2luZ0NvbnN0cnVjdEZyYW1ld29ya0NvdW50KFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdObyBDb25zdHJ1Y3QgRnJhbWV3b3JrJyB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uY2F0YWxvZ0J1aWxkZXIubWV0cmljTWlzc2luZ0NvbnN0cnVjdEZyYW1ld29ya1ZlcnNpb25Db3VudChcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnTm8gQ29uc3RydWN0IEZyYW1ld29yayBWZXJzaW9uJyB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgLi4udGhpcy5jYXRhbG9nT3ZlcnZpZXdMYW5ndWFnZVNlY3Rpb25zKHByb3BzKSxcbiAgICAgICAgLi4ucmVuZGVyUGFja2FnZVNvdXJjZXNXaWRnZXRzKHByb3BzLnBhY2thZ2VTb3VyY2VzKSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogMixcbiAgICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgICAgICcjIEluZ2VzdGlvbiBGdW5jdGlvbicsXG4gICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpJbmdlc3Rpb24gRnVuY3Rpb25dKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmZ1bmN0aW9uXG4gICAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgICAgIGBbYnV0dG9uOnByaW1hcnk6U2VhcmNoIExvZyBHcm91cF0oJHtsYW1iZGFTZWFyY2hMb2dHcm91cFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24uZnVuY3Rpb25cbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246RExRXSgke3Nxc1F1ZXVlVXJsKHByb3BzLmluZ2VzdGlvbi5kZWFkTGV0dGVyUXVldWUpfSlgLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0Z1bmN0aW9uIEhlYWx0aCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmZ1bmN0aW9uLm1ldHJpY0ludm9jYXRpb25zKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnSW52b2NhdGlvbnMnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmZ1bmN0aW9uLm1ldHJpY0Vycm9ycyh7IGxhYmVsOiAnRXJyb3JzJyB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdJbnB1dCBRdWV1ZScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5xdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5xdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdIaWRkZW4gTWVzc2FnZXMnLCBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSkgfVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5xdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZUFnZU9mT2xkZXN0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRBbm5vdGF0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZmZhNTAwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJzEwIE1pbnV0ZXMnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBEdXJhdGlvbi5taW51dGVzKDEwKS50b1NlY29uZHMoKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnSW5wdXQgUXVhbGl0eScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLm1ldHJpY0ludmFsaWRBc3NlbWJseSh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ0ludmFsaWQgQXNzZW1ibGllcycsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24ubWV0cmljSW52YWxpZFRhcmJhbGwoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdJbnZhbGlkIFRhcmJhbGwnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLm1ldHJpY0luZWxpZ2libGVMaWNlbnNlKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnSW5lbGlnaWJsZSBMaWNlbnNlJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5tZXRyaWNNaXNtYXRjaGVkSWRlbnRpdHlSZWplY3Rpb25zKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnTWlzbWF0Y2hlZCBJZGVudGl0eScsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24ubWV0cmljRm91bmRMaWNlbnNlRmlsZSh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ0ZvdW5kIExpY2Vuc2UgZmlsZScsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbGFiZWw6ICdDb3VudCcsIG1pbjogMCwgc2hvd1VuaXRzOiBmYWxzZSB9LFxuICAgICAgICAgICAgc3RhY2tlZDogdHJ1ZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdEZWFkIExldHRlcnMnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24uZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmRlYWRMZXR0ZXJRdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdJbnZpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW1xuICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24uZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodEFubm90YXRpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZjdmMGUnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnMTAgZGF5cycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IER1cmF0aW9uLmRheXMoMTApLnRvU2Vjb25kcygpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZmYwMDAwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJzE0IGRheXMgKERMUSBSZXRlbnRpb24pJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogRHVyYXRpb24uZGF5cygxNCkudG9TZWNvbmRzKCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogMixcbiAgICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgICAgICcjIE9yY2hlc3RyYXRpb24nLFxuICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgYFtidXR0b246cHJpbWFyeTpTdGF0ZSBNYWNoaW5lXSgke3N0YXRlTWFjaGluZVVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZVxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpETFFdKCR7c3FzUXVldWVVcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5kZWFkTGV0dGVyUXVldWVcbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246UmVkcml2ZSBETFFdKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5yZWRyaXZlRnVuY3Rpb25cbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246UmVnZW5lcmF0ZSBBbGwgRG9jdW1lbnRhdGlvbl0oJHtzdGF0ZU1hY2hpbmVVcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5yZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ1N0YXRlIE1hY2hpbmUgRXhlY3V0aW9ucycsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5zdGF0ZU1hY2hpbmUubWV0cmljU3RhcnRlZCh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ1N0YXJ0ZWQnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5zdGF0ZU1hY2hpbmUubWV0cmljU3VjY2VlZGVkKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnU3VjY2VlZGVkJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAsIGxhYmVsOiAnQ291bnQnLCBzaG93VW5pdHM6IGZhbHNlIH0sXG4gICAgICAgICAgICByaWdodDogW1xuICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZS5tZXRyaWNUaW1lKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0R1cmF0aW9uJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdTdGF0ZSBNYWNoaW5lIEZhaWx1cmVzJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZS5tZXRyaWNBYm9ydGVkKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQWJvcnRlZCcsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZS5tZXRyaWNGYWlsZWQoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdGYWlsZWQnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5zdGF0ZU1hY2hpbmUubWV0cmljVGhyb3R0bGVkKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnVGhyb3R0bGVkJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uc3RhdGVNYWNoaW5lLm1ldHJpY1RpbWVkT3V0KHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnVGltZWQgT3V0JyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAsIGxhYmVsOiAnQ291bnQnLCBzaG93VW5pdHM6IGZhbHNlIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnRGVhZCBMZXR0ZXIgUXVldWUnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLmRlYWRMZXR0ZXJRdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdWaXNpYmxlIE1lc3NhZ2VzJyB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0ludmlzaWJsZSBNZXNzYWdlcycgfVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodEFubm90YXRpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZjdmMGUnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnMTAgZGF5cycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IER1cmF0aW9uLmRheXMoMTApLnRvU2Vjb25kcygpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZmYwMDAwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJzE0IGRheXMgKERMUSBSZXRlbnRpb24pJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogRHVyYXRpb24uZGF5cygxNCkudG9TZWNvbmRzKCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcblxuICAgICAgICAvLyBkZW55IGxpc3RcbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICBbXG4gICAgICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICAgICAgJyMgRGVueSBMaXN0JyxcbiAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgIGBbYnV0dG9uOnByaW1hcnk6RGVueSBMaXN0IE9iamVjdF0oJHtzM09iamVjdFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5kZW55TGlzdC5idWNrZXQsXG4gICAgICAgICAgICAgICAgcHJvcHMuZGVueUxpc3Qub2JqZWN0S2V5XG4gICAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgICAgIGBbYnV0dG9uOlBydW5lIEZ1bmN0aW9uXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgICAgIHByb3BzLmRlbnlMaXN0LnBydW5lLnBydW5lSGFuZGxlclxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpQcnVuZSBMb2dzXSgke2xhbWJkYVNlYXJjaExvZ0dyb3VwVXJsKFxuICAgICAgICAgICAgICAgIHByb3BzLmRlbnlMaXN0LnBydW5lLnBydW5lSGFuZGxlclxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpEZWxldGUgUXVldWVdKCR7c3FzUXVldWVVcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMuZGVueUxpc3QucHJ1bmUucXVldWVcbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246RGVsZXRlIExvZ3NdKCR7bGFtYmRhU2VhcmNoTG9nR3JvdXBVcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMuZGVueUxpc3QucHJ1bmUuZGVsZXRlSGFuZGxlclxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0RlbnkgTGlzdCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuZGVueUxpc3QubWV0cmljRGVueUxpc3RSdWxlcyh7IGxhYmVsOiAnUnVsZXMnIH0pLFxuICAgICAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHByb3BzLmRlbnlMaXN0LnBydW5lLnF1ZXVlLm1ldHJpY051bWJlck9mTWVzc2FnZXNEZWxldGVkKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0RlbGV0ZWQgRmlsZXMnLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnUHJ1bmUgRnVuY3Rpb24gSGVhbHRoJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5kZW55TGlzdC5wcnVuZS5wcnVuZUhhbmRsZXIubWV0cmljSW52b2NhdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdJbnZvY2F0aW9ucycsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5kZW55TGlzdC5wcnVuZS5wcnVuZUhhbmRsZXIubWV0cmljRXJyb3JzKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnRXJyb3JzJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcblxuICAgICAgICAuLi4ocHJvcHMucGFja2FnZVN0YXRzXG4gICAgICAgICAgPyByZW5kZXJQYWNrYWdlU3RhdHNXaWRnZXRzKHByb3BzLnBhY2thZ2VTdGF0cylcbiAgICAgICAgICA6IFtdKSxcbiAgICAgICAgLi4ucmVuZGVyVmVyc2lvblRyYWNrZXJXaWRnZXRzKHByb3BzLnZlcnNpb25UcmFja2VyKSxcbiAgICAgICAgLi4uKHByb3BzLnJlbGVhc2VOb3Rlc1xuICAgICAgICAgID8gcmVuZGVyUmVsZWFzZU5vdGVzV2lkZ2V0cyhwcm9wcy5yZWxlYXNlTm90ZXMpXG4gICAgICAgICAgOiBbXSksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJMYW5ndWFnZVJlcG9ydHMoXG4gICAgbGFuZ3VhZ2U6IERvY3VtZW50YXRpb25MYW5ndWFnZSxcbiAgICBwYWNrYWdlRGF0YTogSUJ1Y2tldFxuICApOiBJV2lkZ2V0W10ge1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgUGFja2FnZVZlcnNpb25zVGFibGVXaWRnZXQodGhpcywgYE1pc3NpbmdEb2NzLSR7bGFuZ3VhZ2UubmFtZX1gLCB7XG4gICAgICAgIHRpdGxlOiBgUGFja2FnZSBWZXJzaW9ucyBSZXBvcnQgfCBNaXNzaW5nIERvY3VtZW50YXRpb24gfCBfJHtsYW5ndWFnZS5uYW1lfV9gLFxuICAgICAgICBkZXNjcmlwdGlvbjogW1xuICAgICAgICAgIGBUaGVzZSBwYWNrYWdlcyBhcmUgbWlzc2luZyAke2xhbmd1YWdlLm5hbWV9IGRvY3VtZW50YXRpb24uYCxcbiAgICAgICAgICAnQXBhcnQgZnJvbSB0aGUgdW5pbnN0YWxsYWJsZSBwYWNrYWdlcywgdGhpcyByZXBvcnQgc2hvdWxkIHN0YXkgZW1wdHknLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdUbyBpbnZlc3RpZ2F0ZSBpbnNwZWN0IHRoZSBvcmNoZXN0cmF0aW9uIERMUS4nLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgICBrZXk6IG1pc3NpbmdEb2N1bWVudGF0aW9uUmVwb3J0KGxhbmd1YWdlKSxcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9KSxcbiAgICAgIG5ldyBQYWNrYWdlVmVyc2lvbnNUYWJsZVdpZGdldChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYENvcnJ1cHRBc3NlbWJseURvY3MtJHtsYW5ndWFnZS5uYW1lfWAsXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogYFBhY2thZ2UgVmVyc2lvbnMgUmVwb3J0IHwgQ29ycnVwdCBBc3NlbWJseSB8IF8ke2xhbmd1YWdlLm5hbWV9X2AsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFtcbiAgICAgICAgICAgIGBUaGVzZSBwYWNrYWdlcyBhcmUgbWlzc2luZyAke2xhbmd1YWdlLm5hbWV9IGRvY3VtZW50YXRpb24gYmVjYXVzZSBvZiBhIGNvcnJ1cHRlZCBhc3NlbWJseS5gLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBcIlRoZSBzcGVjaWZpYyBlcnJvciBjYW4gYmUgZm91bmQgaW4gdGhlIHBhY2thZ2UgZGlyZWN0b3J5IGluc2lkZSBmaWxlcyBzdWZmaXhlZCB3aXRoICcuY29ycnVwdGFzc2VtYmx5J1wiLFxuICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgYnVja2V0OiBwYWNrYWdlRGF0YSxcbiAgICAgICAgICBrZXk6IGNvcnJ1cHRBc3NlbWJseVJlcG9ydChsYW5ndWFnZSksXG4gICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSAqY2F0YWxvZ092ZXJ2aWV3TGFuZ3VhZ2VTZWN0aW9ucyh7XG4gICAgaW52ZW50b3J5LFxuICAgIG9yY2hlc3RyYXRpb24sXG4gIH06IEJhY2tlbmREYXNoYm9hcmRQcm9wcyk6IEdlbmVyYXRvcjxJV2lkZ2V0W10+IHtcbiAgICB5aWVsZCBbXG4gICAgICBuZXcgVGV4dFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogMixcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICBtYXJrZG93bjogW1xuICAgICAgICAgICcjIERvY3VtZW50YXRpb24gR2VuZXJhdGlvbicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYFtidXR0b246cHJpbWFyeTpUcmFuc2xpdGVyYXRvciBMb2dzXSgke2xvZ0dyb3VwVXJsKFxuICAgICAgICAgICAgb3JjaGVzdHJhdGlvbi50cmFuc2xpdGVyYXRvci5sb2dHcm91cFxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246VHJhbnNsaXRlcmF0b3IgRUNTIENsdXN0ZXJdKCR7ZWNzQ2x1c3RlclVybChcbiAgICAgICAgICAgIG9yY2hlc3RyYXRpb24uZWNzQ2x1c3RlclxuICAgICAgICAgICl9KWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9KSxcbiAgICBdO1xuICAgIGNvbnN0IG1GYXJnYXRlVXNhZ2UgPSBuZXcgTWV0cmljKHtcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgQ2xhc3M6ICdTdGFuZGFyZC9PbkRlbWFuZCcsXG4gICAgICAgIFJlc291cmNlOiAndkNQVScsXG4gICAgICAgIFNlcnZpY2U6ICdGYXJnYXRlJyxcbiAgICAgICAgVHlwZTogJ1Jlc291cmNlJyxcbiAgICAgIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnUmVzb3VyY2VDb3VudCcsXG4gICAgICBuYW1lc3BhY2U6ICdBV1MvVXNhZ2UnLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICB9KTtcblxuICAgIHlpZWxkIFtcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ0ZhcmdhdGUgUmVzb3VyY2VzJyxcbiAgICAgICAgbGVmdDogW1xuICAgICAgICAgIG1GYXJnYXRlVXNhZ2Uud2l0aCh7IGxhYmVsOiAnRmFyZ2F0ZSB2Q1BVIFVzYWdlIChPbi1EZW1hbmQpJyB9KSxcbiAgICAgICAgICBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgZXhwcmVzc2lvbjogJ1NFUlZJQ0VfUVVPVEEobUZhcmdhdGVVc2FnZSknLFxuICAgICAgICAgICAgbGFiZWw6ICdGYXJnYXRlIHZDUFUgUXVvdGEgKE9uLURlbWFuZCknLFxuICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB7IG1GYXJnYXRlVXNhZ2UgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICByaWdodDogW1xuICAgICAgICAgIG9yY2hlc3RyYXRpb24ubWV0cmljRWNzQ3B1VXRpbGl6YXRpb24oeyBsYWJlbDogJ0NQVSBVdGlsaXphdGlvbicgfSksXG4gICAgICAgICAgb3JjaGVzdHJhdGlvbi5tZXRyaWNFY3NNZW1vcnlVdGlsaXphdGlvbih7XG4gICAgICAgICAgICBsYWJlbDogJ01lbW9yeSBVdGlsaXphdGlvbicsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIHJpZ2h0WUF4aXM6IHsgbGFiZWw6ICdQZXJjZW50JywgbWluOiAwLCBtYXg6IDEwMCwgc2hvd1VuaXRzOiBmYWxzZSB9LFxuICAgICAgfSksXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdFQ1MgUmVzb3VyY2VzJyxcbiAgICAgICAgbGVmdDogW1xuICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICBvcmNoZXN0cmF0aW9uLm1ldHJpY0Vjc05ldHdvcmtSeEJ5dGVzKHsgbGFiZWw6ICdSZWNlaXZlZCBCeXRlcycgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICBvcmNoZXN0cmF0aW9uLm1ldHJpY0Vjc05ldHdvcmtUeEJ5dGVzKHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdUcmFuc21pdHRlZCBCeXRlcycsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgcmlnaHQ6IFtcbiAgICAgICAgICBmaWxsTWV0cmljKG9yY2hlc3RyYXRpb24ubWV0cmljRWNzVGFza0NvdW50KHsgbGFiZWw6ICdUYXNrIENvdW50JyB9KSksXG4gICAgICAgIF0sXG4gICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ0VDUyBUYXNrIE1vbml0b3InLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgb3JjaGVzdHJhdGlvbi5lY3NUYXNrTW9uaXRvci5tZXRyaWNBY3RpdmVUYXNrQ291bnQoe1xuICAgICAgICAgICAgbGFiZWw6ICdBY3RpdmUgVGFzayBDb3VudCcsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgb3JjaGVzdHJhdGlvbi5lY3NUYXNrTW9uaXRvci5tZXRyaWNLaWxsZWRUYXNrQ291bnQoe1xuICAgICAgICAgICAgbGFiZWw6ICdLaWxsZWQgVGFzayBDb3VudCcsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgcmlnaHQ6IFtcbiAgICAgICAgICBvcmNoZXN0cmF0aW9uLmVjc1Rhc2tNb25pdG9yLm1ldHJpY0FjdGl2ZVRhc2tBZ2Uoe1xuICAgICAgICAgICAgbGFiZWw6ICdBY3RpdmUgVGFzayBBZ2UgKE1heCknLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBvcmNoZXN0cmF0aW9uLmVjc1Rhc2tNb25pdG9yLm1ldHJpY0FjdGl2ZVRhc2tBZ2Uoe1xuICAgICAgICAgICAgbGFiZWw6ICdBY3RpdmUgVGFzayBBZ2UgKEF2ZyknLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuQVZFUkFHRSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBvcmNoZXN0cmF0aW9uLmVjc1Rhc2tNb25pdG9yLm1ldHJpY0FjdGl2ZVRhc2tBZ2Uoe1xuICAgICAgICAgICAgbGFiZWw6ICdBY3RpdmUgVGFzayBBZ2UgKE1pbiknLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUlOSU1VTSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgIH0pLFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IGxhbmd1YWdlIG9mIERvY3VtZW50YXRpb25MYW5ndWFnZS5BTEwpIHtcbiAgICAgIHlpZWxkIFtcbiAgICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgICAgbWFya2Rvd246IGAjIyBMYW5ndWFnZTogJHtsYW5ndWFnZS50b1N0cmluZygpfWAsXG4gICAgICAgIH0pLFxuICAgICAgXTtcbiAgICAgIHlpZWxkIFtcbiAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgIHRpdGxlOiAnUGFja2FnZSBWZXJzaW9ucycsXG4gICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgaW52ZW50b3J5Lm1ldHJpY1N1cHBvcnRlZFBhY2thZ2VWZXJzaW9uQ291bnQobGFuZ3VhZ2UsIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdBdmFpbGFibGUnLFxuICAgICAgICAgICAgICBjb2xvcjogJyMyY2EwMmMnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljQ29ycnVwdEFzc2VtYmx5UGFja2FnZVZlcnNpb25Db3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ0NvcnJ1cHQgQXNzZW1ibHknLFxuICAgICAgICAgICAgICBjb2xvcjogJyMzNTQyRDcnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljVHJhbnNsaXRlcmF0aW9uRXJyb3JQYWNrYWdlVmVyc2lvbkNvdW50KGxhbmd1YWdlLCB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnVHJhbnNsaXRlcmF0aW9uIEVycm9yJyxcbiAgICAgICAgICAgICAgY29sb3I6ICcjRkY4QzAwJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW52ZW50b3J5Lm1ldHJpY1Vuc3VwcG9ydGVkUGFja2FnZVZlcnNpb25Db3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ1Vuc3VwcG9ydGVkJyxcbiAgICAgICAgICAgICAgY29sb3I6ICcjOTQ2N2JkJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW52ZW50b3J5Lm1ldHJpY01pc3NpbmdQYWNrYWdlVmVyc2lvbkNvdW50KGxhbmd1YWdlLCB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnTWlzc2luZycsXG4gICAgICAgICAgICAgIGNvbG9yOiAnI2Q2MjcyOCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGxlZnRZQXhpczogeyBzaG93VW5pdHM6IGZhbHNlIH0sXG4gICAgICAgICAgdmlldzogR3JhcGhXaWRnZXRWaWV3LlBJRSxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICB0aXRsZTogJ1BhY2thZ2UgVmVyc2lvbiBTdWJtb2R1bGVzJyxcbiAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljU3VwcG9ydGVkU3VibW9kdWxlQ291bnQobGFuZ3VhZ2UsIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdBdmFpbGFibGUnLFxuICAgICAgICAgICAgICBjb2xvcjogJyMyY2EwMmMnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljQ29ycnVwdEFzc2VtYmx5U3VibW9kdWxlQ291bnQobGFuZ3VhZ2UsIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdDb3JydXB0IEFzc2VtYmx5JyxcbiAgICAgICAgICAgICAgY29sb3I6ICcjMzU0MkQ3JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW52ZW50b3J5Lm1ldHJpY1RyYW5zbGl0ZXJhdGlvbkVycm9yU3VibW9kdWxlQ291bnQobGFuZ3VhZ2UsIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdUcmFuc2xpdGVyYXRpb24gRXJyb3InLFxuICAgICAgICAgICAgICBjb2xvcjogJyNGRjhDMDAnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljVW5zdXBwb3J0ZWRTdWJtb2R1bGVDb3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ1Vuc3VwcG9ydGVkJyxcbiAgICAgICAgICAgICAgY29sb3I6ICcjOTQ2N2JkJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW52ZW50b3J5Lm1ldHJpY01pc3NpbmdTdWJtb2R1bGVDb3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ01pc3NpbmcnLFxuICAgICAgICAgICAgICBjb2xvcjogJyNkNjI3MjgnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgICBsZWZ0WUF4aXM6IHsgc2hvd1VuaXRzOiBmYWxzZSB9LFxuICAgICAgICAgIHZpZXc6IEdyYXBoV2lkZ2V0Vmlldy5QSUUsXG4gICAgICAgIH0pLFxuICAgICAgXTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24qIHJlbmRlclBhY2thZ2VTb3VyY2VzV2lkZ2V0cyhcbiAgcGFja2FnZVNvdXJjZXM6IFBhY2thZ2VTb3VyY2VCaW5kUmVzdWx0W11cbik6IEdlbmVyYXRvcjxJV2lkZ2V0W10sIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB7XG4gIGZvciAoY29uc3QgcGFja2FnZVNvdXJjZSBvZiBwYWNrYWdlU291cmNlcykge1xuICAgIHlpZWxkIFtcbiAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgYCMgJHtwYWNrYWdlU291cmNlLm5hbWV9YCxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAuLi4ocGFja2FnZVNvdXJjZS5saW5rcyA/PyBbXSkubWFwKFxuICAgICAgICAgICAgKHsgbmFtZSwgcHJpbWFyeSwgdXJsIH0pID0+XG4gICAgICAgICAgICAgIGBbJHtwcmltYXJ5ID8gJ2J1dHRvbjpwcmltYXJ5JyA6ICdidXR0b24nfToke25hbWV9XSgke3VybH0pYFxuICAgICAgICAgICksXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9KSxcbiAgICBdO1xuICAgIHlpZWxkKiBwYWNrYWdlU291cmNlLmRhc2hib2FyZFdpZGdldHM7XG4gIH1cbiAgcmV0dXJuO1xufVxuXG5mdW5jdGlvbiByZW5kZXJQYWNrYWdlU3RhdHNXaWRnZXRzKHBhY2thZ2VTdGF0czogUGFja2FnZVN0YXRzKTogSVdpZGdldFtdW10ge1xuICByZXR1cm4gW1xuICAgIFtcbiAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgJyMgUGFja2FnZSBTdGF0cycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYFtidXR0b246cHJpbWFyeTpQYWNrYWdlIFN0YXRzIE9iamVjdF0oJHtzM09iamVjdFVybChcbiAgICAgICAgICAgIHBhY2thZ2VTdGF0cy5idWNrZXQsXG4gICAgICAgICAgICBwYWNrYWdlU3RhdHMuc3RhdHNLZXlcbiAgICAgICAgICApfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOlBhY2thZ2UgU3RhdHMgU3RhdGUgTWFjaGluZV0oJHtzdGF0ZU1hY2hpbmVVcmwoXG4gICAgICAgICAgICBwYWNrYWdlU3RhdHMuc3RhdGVNYWNoaW5lXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjpDaHVua2VyIEZ1bmN0aW9uXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgcGFja2FnZVN0YXRzLmNodW5rZXJGdW5jdGlvblxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246UHJvY2Vzc29yIEZ1bmN0aW9uXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgcGFja2FnZVN0YXRzLnByb2Nlc3NvckZ1bmN0aW9uXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjpBZ2dyZWdhdG9yIEZ1bmN0aW9uXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgcGFja2FnZVN0YXRzLmFnZ3JlZ2F0b3JGdW5jdGlvblxuICAgICAgICAgICl9KWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9KSxcbiAgICBdLFxuICAgIFtcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ051bWJlciBvZiBQYWNrYWdlIFN0YXRzIFJlY29yZGVkJyxcbiAgICAgICAgbGVmdDogW1xuICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICBwYWNrYWdlU3RhdHMubWV0cmljUGFja2FnZXNDb3VudCh7IGxhYmVsOiAnUGFja2FnZXMgd2l0aCBzdGF0cycgfSksXG4gICAgICAgICAgICAnUkVQRUFUJ1xuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgIH0pLFxuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIHRpdGxlOiAnSW52b2NhdGlvbiBEdXJhdGlvbicsXG4gICAgICAgIGxlZnQ6IFtwYWNrYWdlU3RhdHMuc3RhdGVNYWNoaW5lLm1ldHJpY1RpbWUoeyBsYWJlbDogJ0R1cmF0aW9uJyB9KV0sXG4gICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgcmlnaHRBbm5vdGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbG9yOiAnI2ZmYTUwMCcsXG4gICAgICAgICAgICBsYWJlbDogJzYgaG91cnMgKFN0YXRlIE1hY2hpbmUgdGltZW91dCknLFxuICAgICAgICAgICAgdmFsdWU6IER1cmF0aW9uLmhvdXJzKDYpLnRvU2Vjb25kcygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICBdLFxuICBdO1xufVxuXG5mdW5jdGlvbiByZW5kZXJWZXJzaW9uVHJhY2tlcldpZGdldHMoXG4gIHZlcnNpb25UcmFja2VyOiBWZXJzaW9uVHJhY2tlclxuKTogSVdpZGdldFtdW10ge1xuICByZXR1cm4gW1xuICAgIFtcbiAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgJyMgVmVyc2lvbiBUcmFja2VyJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgW2J1dHRvbjpwcmltYXJ5OlZlcnNpb25zIE9iamVjdF0oJHtzM09iamVjdFVybChcbiAgICAgICAgICAgIHZlcnNpb25UcmFja2VyLmJ1Y2tldCxcbiAgICAgICAgICAgIFZFUlNJT05fVFJBQ0tFUl9LRVlcbiAgICAgICAgICApfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOlZlcnNpb24gVHJhY2tlciBGdW5jdGlvbl0oJHtsYW1iZGFGdW5jdGlvblVybChcbiAgICAgICAgICAgIHZlcnNpb25UcmFja2VyLmhhbmRsZXJcbiAgICAgICAgICApfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOlZlcnNpb24gVHJhY2tlciBMb2dzXSgke2xhbWJkYVNlYXJjaExvZ0dyb3VwVXJsKFxuICAgICAgICAgICAgdmVyc2lvblRyYWNrZXIuaGFuZGxlclxuICAgICAgICAgICl9KWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9KSxcbiAgICBdLFxuICAgIFtcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ051bWJlciBvZiBQYWNrYWdlIFZlcnNpb25zIFJlY29yZGVkJyxcbiAgICAgICAgbGVmdDogW1xuICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICB2ZXJzaW9uVHJhY2tlci5tZXRyaWNUcmFja2VkVmVyc2lvbnNDb3VudCh7XG4gICAgICAgICAgICAgIGxhYmVsOiAnUGFja2FnZSB2ZXJzaW9ucyByZWNvcmRlZCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgfSksXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdJbnZvY2F0aW9uIER1cmF0aW9uJyxcbiAgICAgICAgbGVmdDogW3ZlcnNpb25UcmFja2VyLmhhbmRsZXIubWV0cmljRHVyYXRpb24oeyBsYWJlbDogJ0R1cmF0aW9uJyB9KV0sXG4gICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgcmlnaHRBbm5vdGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbG9yOiAnI2ZmYTUwMCcsXG4gICAgICAgICAgICBsYWJlbDogJzEgbWludXRlcyAoTGFtYmRhIHRpbWVvdXQpJyxcbiAgICAgICAgICAgIHZhbHVlOiBEdXJhdGlvbi5taW51dGVzKDEpLnRvU2Vjb25kcygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICBdLFxuICBdO1xufVxuXG5mdW5jdGlvbiByZW5kZXJSZWxlYXNlTm90ZXNXaWRnZXRzKFxuICByZWxlYXNlTm90ZXM6IFJlbGVhc2VOb3RlRmV0Y2hlclxuKTogSVdpZGdldFtdW10ge1xuICByZXR1cm4gW1xuICAgIFtcbiAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgJyMgUmVsZWFzZSBOb3RlcycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYFtidXR0b246cHJpbWFyeTpTdGF0ZU1hY2hpbmVdKCR7c3RhdGVNYWNoaW5lVXJsKFxuICAgICAgICAgICAgcmVsZWFzZU5vdGVzLnN0YXRlTWFjaGluZVxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246cmVsZWFzZU5vdGVzVHJpZ2dlcl0oJHtsYW1iZGFGdW5jdGlvblVybChcbiAgICAgICAgICAgIHJlbGVhc2VOb3Rlcy5yZWxlYXNlTm90ZXNUcmlnZ2VyTGFtYmRhXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjpnZW5lcmF0ZVJlbGVhc2VOb3Rlc10oJHtsYW1iZGFGdW5jdGlvblVybChcbiAgICAgICAgICAgIHJlbGVhc2VOb3Rlcy5nZW5lcmF0ZVJlbGVhc2VOb3Rlc0xhbWJkYVxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246dXBkYXRlRmVlZF0oJHtsYW1iZGFGdW5jdGlvblVybChcbiAgICAgICAgICAgIHJlbGVhc2VOb3Rlcy51cGRhdGVGZWVkRnVuY3Rpb25cbiAgICAgICAgICApfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOnF1ZXVlXSgke3Nxc1F1ZXVlVXJsKHJlbGVhc2VOb3Rlcy5xdWV1ZSl9KWAsXG4gICAgICAgICAgYFtidXR0b246d29ya2VyUXVldWVdKCR7c3FzUXVldWVVcmwocmVsZWFzZU5vdGVzLndvcmtlclF1ZXVlKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjp3b3JrZXJETFFdKCR7c3FzUXVldWVVcmwocmVsZWFzZU5vdGVzLndvcmtlckRMUSl9KWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9KSxcbiAgICBdLFxuICAgIFtcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ051bWJlciBvZiByZWxlYXNlIE5vdGVzJyxcbiAgICAgICAgbGVmdDogW1xuICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljUGFja2FnZXNXaXRoUmVsZWFzZU5vdGVzQ291bnQoe1xuICAgICAgICAgICAgICBsYWJlbDogJ1BhY2thZ2VzIHdpdGggcmVsZWFzZSBub3RlcycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgfSksXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdSZWxlYXNlIG5vdGVzIGdlbmVyYXRpb24gRXJyb3JzJyxcbiAgICAgICAgbGVmdDogW1xuICAgICAgICAgIHJlbGVhc2VOb3Rlcy5tZXRyaWNDaGFuZ2VMb2dBbGxFcnJvcih7IGxhYmVsOiAnQWxsIEVycm9ycycgfSksXG4gICAgICAgICAgcmVsZWFzZU5vdGVzLm1ldHJpY1JlcXVlc3RVbmtub3duRXJyb3IoeyBsYWJlbDogJ1Vua25vd25FcnJvcicgfSksXG4gICAgICAgICAgcmVsZWFzZU5vdGVzLm1ldHJpY0ludmFsaWRDcmVkZW50aWFscyh7XG4gICAgICAgICAgICBsYWJlbDogJ0ludmFsaWRDcmVkZW50aWFscycsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgcmVsZWFzZU5vdGVzLm1ldHJpY1JlcXVlc3RRdW90YUV4aGF1c3RlZCh7XG4gICAgICAgICAgICBsYWJlbDogJ1JlcXVlc3RRdW90YUV4aGF1c3RlZCcsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgcmVsZWFzZU5vdGVzLm1ldHJpY1JlcXVlc3RVblN1cHBvcnRlZFJlcG8oe1xuICAgICAgICAgICAgbGFiZWw6ICdVblN1cHBvcnRlZFJlcG8nLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHJlbGVhc2VOb3Rlcy5tZXRyaWNSZXF1ZXN0SW52YWxpZFBhY2thZ2VKc29uKHtcbiAgICAgICAgICAgIGxhYmVsOiAnSW52YWxpZFBhY2thZ2VKc29uJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljQ2hhbmdlTG9nRmV0Y2hFcnJvcih7XG4gICAgICAgICAgICBsYWJlbDogJ0NoYW5nZUxvZ0ZldGNoRXJyb3InLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgXSxcbiAgICBbXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdHaXRIdWIgQVBJIFJhdGUgTGltaXRzJyxcbiAgICAgICAgbGVmdDogW1xuICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljR2hSYXRlTGltaXRMaW1pdCh7IGxhYmVsOiAnTGltaXQnIH0pLFxuICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICApLFxuICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljR2hSYXRlTGltaXRVc2VkKHsgbGFiZWw6ICdVc2VkJyB9KSxcbiAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgcmVsZWFzZU5vdGVzLm1ldHJpY0doUmF0ZUxpbWl0UmVtYWluaW5nKHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdSZW1haW5pbmcnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAnUkVQRUFUJ1xuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICBdLFxuICBdO1xufVxuIl19
|
|
731
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC1kYXNoYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYmFja2VuZC1kYXNoYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVDO0FBQ3ZDLCtEQVVvQztBQUVwQywyQ0FBdUM7QUFJdkMscUdBQStGO0FBSS9GLDBEQUtvQztBQUNwQyx3REFBa0U7QUFFbEUsMkNBUXFCO0FBQ3JCLGlEQUE0QztBQWdCNUMsTUFBYSxnQkFBaUIsU0FBUSxzQkFBUztJQUM3QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUE0QjtRQUU1QixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sT0FBTyxHQUFnQjtZQUMzQjtnQkFDRSxJQUFJLDBEQUEwQixDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtvQkFDNUQsS0FBSyxFQUFFLHlDQUF5QztvQkFDaEQsV0FBVyxFQUFFO3dCQUNYLDBIQUEwSDt3QkFDMUgsRUFBRTt3QkFDRiw4RkFBOEY7d0JBQzlGLEVBQUU7d0JBQ0YsaURBQWlELElBQUEsMkJBQWUsRUFDOUQsS0FBSyxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FDL0MsR0FBRztxQkFDTCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ1osTUFBTSxFQUFFLEtBQUssQ0FBQyxXQUFXO29CQUN6QixHQUFHLEVBQUUseUNBQTZCO29CQUNsQyxNQUFNLEVBQUUsQ0FBQztvQkFDVCxLQUFLLEVBQUUsRUFBRTtpQkFDVixDQUFDO2FBQ0g7U0FDRixDQUFDO1FBRUYsS0FBSyxNQUFNLFFBQVEsSUFBSSxnQ0FBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNqRCxLQUFLLE1BQU0sTUFBTSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FDMUMsUUFBUSxFQUNSLEtBQUssQ0FBQyxXQUFXLENBQ2xCLEVBQUUsQ0FBQztnQkFDRixpQ0FBaUM7Z0JBQ2pDLE9BQU8sQ0FBQyxJ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O3dCQUN2QyxLQUFLLEVBQUUsdUJBQXVCO3FCQUMvQixDQUFDO29CQUNGLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQzt3QkFDeEMsS0FBSyxFQUFFLGlCQUFpQjtxQkFDekIsQ0FBQztvQkFDRixZQUFZLENBQUMsK0JBQStCLENBQUM7d0JBQzNDLEtBQUssRUFBRSxvQkFBb0I7cUJBQzVCLENBQUM7b0JBQ0YsWUFBWSxDQUFDLHlCQUF5QixDQUFDO3dCQUNyQyxLQUFLLEVBQUUscUJBQXFCO3FCQUM3QixDQUFDO2lCQUNIO2FBQ0YsQ0FBQztTQUNIO1FBQ0Q7WUFDRSxJQUFJLDRCQUFXLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLHdCQUF3QjtnQkFDL0IsSUFBSSxFQUFFO29CQUNKLElBQUEseUJBQVUsRUFDUixZQUFZLENBQUMsc0JBQXNCLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFDdkQsUUFBUSxDQUNUO29CQUNELElBQUEseUJBQVUsRUFDUixZQUFZLENBQUMscUJBQXFCLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFDckQsUUFBUSxDQUNUO29CQUNELElBQUEseUJBQVUsRUFDUixZQUFZLENBQUMsMEJBQTBCLENBQUM7d0JBQ3RDLEtBQUssRUFBRSxXQUFXO3FCQUNuQixDQUFDLEVBQ0YsUUFBUSxDQUNUO2lCQUNGO2FBQ0YsQ0FBQztTQUNIO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIERhc2hib2FyZCxcbiAgR3JhcGhXaWRnZXQsXG4gIEdyYXBoV2lkZ2V0VmlldyxcbiAgVGV4dFdpZGdldCxcbiAgSVdpZGdldCxcbiAgTWF0aEV4cHJlc3Npb24sXG4gIE1ldHJpYyxcbiAgU3RhdGlzdGljLFxuICBQZXJpb2RPdmVycmlkZSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgSUJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERlbnlMaXN0IH0gZnJvbSAnLi9iYWNrZW5kL2RlbnktbGlzdCc7XG5pbXBvcnQgeyBJbmdlc3Rpb24gfSBmcm9tICcuL2JhY2tlbmQvaW5nZXN0aW9uJztcbmltcG9ydCB7IEludmVudG9yeSB9IGZyb20gJy4vYmFja2VuZC9pbnZlbnRvcnknO1xuaW1wb3J0IHsgUGFja2FnZVZlcnNpb25zVGFibGVXaWRnZXQgfSBmcm9tICcuL2JhY2tlbmQvaW52ZW50b3J5L3BhY2thZ2UtdmVyc2lvbnMtdGFibGUtd2lkZ2V0JztcbmltcG9ydCB7IE9yY2hlc3RyYXRpb24gfSBmcm9tICcuL2JhY2tlbmQvb3JjaGVzdHJhdGlvbic7XG5pbXBvcnQgeyBQYWNrYWdlU3RhdHMgfSBmcm9tICcuL2JhY2tlbmQvcGFja2FnZS1zdGF0cyc7XG5pbXBvcnQgeyBSZWxlYXNlTm90ZUZldGNoZXIgfSBmcm9tICcuL2JhY2tlbmQvcmVsZWFzZS1ub3Rlcyc7XG5pbXBvcnQge1xuICBtaXNzaW5nRG9jdW1lbnRhdGlvblJlcG9ydCxcbiAgVU5JTlNUQUxMQUJMRV9QQUNLQUdFU19SRVBPUlQsXG4gIGNvcnJ1cHRBc3NlbWJseVJlcG9ydCxcbiAgVkVSU0lPTl9UUkFDS0VSX0tFWSxcbn0gZnJvbSAnLi9iYWNrZW5kL3NoYXJlZC9jb25zdGFudHMnO1xuaW1wb3J0IHsgRG9jdW1lbnRhdGlvbkxhbmd1YWdlIH0gZnJvbSAnLi9iYWNrZW5kL3NoYXJlZC9sYW5ndWFnZSc7XG5pbXBvcnQgeyBWZXJzaW9uVHJhY2tlciB9IGZyb20gJy4vYmFja2VuZC92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IHtcbiAgZWNzQ2x1c3RlclVybCxcbiAgbGFtYmRhRnVuY3Rpb25VcmwsXG4gIGxhbWJkYVNlYXJjaExvZ0dyb3VwVXJsLFxuICBsb2dHcm91cFVybCxcbiAgczNPYmplY3RVcmwsXG4gIHNxc1F1ZXVlVXJsLFxuICBzdGF0ZU1hY2hpbmVVcmwsXG59IGZyb20gJy4vZGVlcC1saW5rJztcbmltcG9ydCB7IGZpbGxNZXRyaWMgfSBmcm9tICcuL21ldHJpYy11dGlscyc7XG5pbXBvcnQgeyBQYWNrYWdlU291cmNlQmluZFJlc3VsdCB9IGZyb20gJy4vcGFja2FnZS1zb3VyY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tlbmREYXNoYm9hcmRQcm9wcyB7XG4gIHJlYWRvbmx5IGRhc2hib2FyZE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VTb3VyY2VzOiBQYWNrYWdlU291cmNlQmluZFJlc3VsdFtdO1xuICByZWFkb25seSBpbmdlc3Rpb246IEluZ2VzdGlvbjtcbiAgcmVhZG9ubHkgb3JjaGVzdHJhdGlvbjogT3JjaGVzdHJhdGlvbjtcbiAgcmVhZG9ubHkgaW52ZW50b3J5OiBJbnZlbnRvcnk7XG4gIHJlYWRvbmx5IGRlbnlMaXN0OiBEZW55TGlzdDtcbiAgcmVhZG9ubHkgcGFja2FnZURhdGE6IElCdWNrZXQ7XG4gIHJlYWRvbmx5IHBhY2thZ2VTdGF0cz86IFBhY2thZ2VTdGF0cztcbiAgcmVhZG9ubHkgdmVyc2lvblRyYWNrZXI6IFZlcnNpb25UcmFja2VyO1xuICByZWFkb25seSByZWxlYXNlTm90ZXM/OiBSZWxlYXNlTm90ZUZldGNoZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBCYWNrZW5kRGFzaGJvYXJkIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQmFja2VuZERhc2hib2FyZFByb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCByZXBvcnRzOiBJV2lkZ2V0W11bXSA9IFtcbiAgICAgIFtcbiAgICAgICAgbmV3IFBhY2thZ2VWZXJzaW9uc1RhYmxlV2lkZ2V0KHRoaXMsICdVbmluc3RhbGxhYmxlUGFja2FnZXMnLCB7XG4gICAgICAgICAgdGl0bGU6ICdQYWNrYWdlIFZlcnNpb25zIFJlcG9ydCB8IFVuaW5zdGFsbGFibGUnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgICBcIlRoZXNlIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBpbnN0YWxsZWQuIE5vdGUgdGhhdCBjdXJyZW50bHkgdGhleSB3aWxsIGFsc28gYXBwZWFyIGluIHRoZSAnbWlzc2luZycgZG9jdW1lbnRhdGlvbiByZXBvcnRzLlwiLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBcIlRoZSBzcGVjaWZpYyBlcnJvciBjYW4gYmUgZm91bmQgaW4gdGhlIHBhY2thZ2UgZGlyZWN0b3J5IGluc2lkZSBhIGZpbGUgbmFtZWQgJ3VuaW5zdGFsbGFibGUnXCIsXG4gICAgICAgICAgICAnJyxcbiAgICAgICAgICAgIGBbYnV0dG9uOnByaW1hcnk6UmV0cnkgVW5pbnN0YWxsYWJsZSBQYWNrYWdlc10oJHtzdGF0ZU1hY2hpbmVVcmwoXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24ucmV0cnlVbmluc3RhbGxhYmxlUGFja2FnZXNcbiAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICBidWNrZXQ6IHByb3BzLnBhY2thZ2VEYXRhLFxuICAgICAgICAgIGtleTogVU5JTlNUQUxMQUJMRV9QQUNLQUdFU19SRVBPUlQsXG4gICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IGxhbmd1YWdlIG9mIERvY3VtZW50YXRpb25MYW5ndWFnZS5BTEwpIHtcbiAgICAgIGZvciAoY29uc3QgcmVwb3J0IG9mIHRoaXMucGVyTGFuZ3VhZ2VSZXBvcnRzKFxuICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgcHJvcHMucGFja2FnZURhdGFcbiAgICAgICkpIHtcbiAgICAgICAgLy8gcHV0IGV2ZXJ5IHJlcG9ydCBpbiBhIG5ldyBsaW5lXG4gICAgICAgIHJlcG9ydHMucHVzaChbcmVwb3J0XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGFzaGJvYXJkTmFtZSA9IHByb3BzLmRhc2hib2FyZE5hbWUgPz8gJ0NvbnN0cnVjdEh1YkJhY2tlbmQnO1xuXG4gICAgbmV3IERhc2hib2FyZCh0aGlzLCAnUmVwb3J0cycsIHtcbiAgICAgIGRhc2hib2FyZE5hbWU6IGAke2Rhc2hib2FyZE5hbWV9LXJlcG9ydHNgLFxuICAgICAgcGVyaW9kT3ZlcnJpZGU6IFBlcmlvZE92ZXJyaWRlLkFVVE8sXG4gICAgICBzdGFydDogJy1QMVcnLCAvLyBTaG93IDEgd2VlayBieSBkZWZhdWx0XG4gICAgICB3aWRnZXRzOiByZXBvcnRzLFxuICAgIH0pO1xuXG4gICAgbmV3IERhc2hib2FyZCh0aGlzLCAnR3JhcGhzJywge1xuICAgICAgZGFzaGJvYXJkTmFtZTogYCR7ZGFzaGJvYXJkTmFtZX0tZ3JhcGhzYCxcbiAgICAgIHBlcmlvZE92ZXJyaWRlOiBQZXJpb2RPdmVycmlkZS5BVVRPLFxuICAgICAgc3RhcnQ6ICctUDFXJywgLy8gU2hvdyAxIHdlZWsgYnkgZGVmYXVsdFxuICAgICAgd2lkZ2V0czogW1xuICAgICAgICBbXG4gICAgICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICAgICAgJyMgQ2F0YWxvZyBPdmVydmlldycsXG4gICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpwcmltYXJ5OlBhY2thZ2UgRGF0YV0oJHtzM09iamVjdFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5wYWNrYWdlRGF0YVxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpDYXRhbG9nIEJ1aWxkZXJdKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5jYXRhbG9nQnVpbGRlci5mdW5jdGlvblxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpJbnZlbnRvcnkgQ2FuYXJ5XSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5mdW5jdGlvblxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpTZWFyY2ggQ2FuYXJ5IExvZyBHcm91cF0oJHtsYW1iZGFTZWFyY2hMb2dHcm91cFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkuZnVuY3Rpb25cbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdDYXRhbG9nIFNpemUnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljU3VibW9kdWxlQ291bnQoeyBsYWJlbDogJ1N1Ym1vZHVsZXMnIH0pLFxuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljUGFja2FnZVZlcnNpb25Db3VudCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdQYWNrYWdlIFZlcnNpb25zJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNQYWNrYWdlTWFqb3JDb3VudCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdQYWNrYWdlIE1ham9ycycsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljUGFja2FnZUNvdW50KHsgbGFiZWw6ICdQYWNrYWdlcycgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0NhdGFsb2cgSXNzdWVzJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgcHJvcHMuaW52ZW50b3J5Lm1ldHJpY1Vua25vd25PYmplY3RDb3VudCh7IGxhYmVsOiAnVW5rbm93bicgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNNaXNzaW5nQXNzZW1ibHlDb3VudCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdNaXNzaW5nIEFzc2VtYmx5JyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNNaXNzaW5nUGFja2FnZU1ldGFkYXRhQ291bnQoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTWlzc2luZyBNZXRhZGF0YScsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljTWlzc2luZ1BhY2thZ2VUYXJiYWxsQ291bnQoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTWlzc2luZyBUYXJiYWxsJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNVbmluc3RhbGxhYmxlUGFja2FnZUNvdW50KHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1VuaW5zdGFsbGFibGUgUGFja2FnZScsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uY2F0YWxvZ0J1aWxkZXIubWV0cmljTWlzc2luZ0NvbnN0cnVjdEZyYW1ld29ya0NvdW50KFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdObyBDb25zdHJ1Y3QgRnJhbWV3b3JrJyB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uY2F0YWxvZ0J1aWxkZXIubWV0cmljTWlzc2luZ0NvbnN0cnVjdEZyYW1ld29ya1ZlcnNpb25Db3VudChcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnTm8gQ29uc3RydWN0IEZyYW1ld29yayBWZXJzaW9uJyB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgLi4udGhpcy5jYXRhbG9nT3ZlcnZpZXdMYW5ndWFnZVNlY3Rpb25zKHByb3BzKSxcbiAgICAgICAgLi4ucmVuZGVyUGFja2FnZVNvdXJjZXNXaWRnZXRzKHByb3BzLnBhY2thZ2VTb3VyY2VzKSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogMixcbiAgICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgICAgICcjIEluZ2VzdGlvbiBGdW5jdGlvbicsXG4gICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpJbmdlc3Rpb24gRnVuY3Rpb25dKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmZ1bmN0aW9uXG4gICAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgICAgIGBbYnV0dG9uOnByaW1hcnk6U2VhcmNoIExvZyBHcm91cF0oJHtsYW1iZGFTZWFyY2hMb2dHcm91cFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24uZnVuY3Rpb25cbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246RExRXSgke3Nxc1F1ZXVlVXJsKHByb3BzLmluZ2VzdGlvbi5kZWFkTGV0dGVyUXVldWUpfSlgLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0Z1bmN0aW9uIEhlYWx0aCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmZ1bmN0aW9uLm1ldHJpY0ludm9jYXRpb25zKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnSW52b2NhdGlvbnMnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmZ1bmN0aW9uLm1ldHJpY0Vycm9ycyh7IGxhYmVsOiAnRXJyb3JzJyB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdJbnB1dCBRdWV1ZScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5xdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5xdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdIaWRkZW4gTWVzc2FnZXMnLCBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSkgfVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5xdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZUFnZU9mT2xkZXN0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRBbm5vdGF0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZmZhNTAwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJzEwIE1pbnV0ZXMnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBEdXJhdGlvbi5taW51dGVzKDEwKS50b1NlY29uZHMoKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnSW5wdXQgUXVhbGl0eScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLm1ldHJpY0ludmFsaWRBc3NlbWJseSh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ0ludmFsaWQgQXNzZW1ibGllcycsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24ubWV0cmljSW52YWxpZFRhcmJhbGwoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdJbnZhbGlkIFRhcmJhbGwnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLm1ldHJpY0luZWxpZ2libGVMaWNlbnNlKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnSW5lbGlnaWJsZSBMaWNlbnNlJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5tZXRyaWNNaXNtYXRjaGVkSWRlbnRpdHlSZWplY3Rpb25zKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnTWlzbWF0Y2hlZCBJZGVudGl0eScsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24ubWV0cmljRm91bmRMaWNlbnNlRmlsZSh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ0ZvdW5kIExpY2Vuc2UgZmlsZScsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbGFiZWw6ICdDb3VudCcsIG1pbjogMCwgc2hvd1VuaXRzOiBmYWxzZSB9LFxuICAgICAgICAgICAgc3RhY2tlZDogdHJ1ZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdEZWFkIExldHRlcnMnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24uZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmRlYWRMZXR0ZXJRdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdJbnZpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW1xuICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24uZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodEFubm90YXRpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZjdmMGUnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnMTAgZGF5cycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IER1cmF0aW9uLmRheXMoMTApLnRvU2Vjb25kcygpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZmYwMDAwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJzE0IGRheXMgKERMUSBSZXRlbnRpb24pJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogRHVyYXRpb24uZGF5cygxNCkudG9TZWNvbmRzKCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogMixcbiAgICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgICAgICcjIE9yY2hlc3RyYXRpb24nLFxuICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgYFtidXR0b246cHJpbWFyeTpTdGF0ZSBNYWNoaW5lXSgke3N0YXRlTWFjaGluZVVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZVxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpETFFdKCR7c3FzUXVldWVVcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5kZWFkTGV0dGVyUXVldWVcbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246UmVkcml2ZSBETFFdKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5yZWRyaXZlRnVuY3Rpb25cbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246UmVnZW5lcmF0ZSBBbGwgRG9jdW1lbnRhdGlvbl0oJHtzdGF0ZU1hY2hpbmVVcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5yZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpSZXRyeSBVbmluc3RhbGxhYmxlIFBhY2thZ2VzXSgke3N0YXRlTWFjaGluZVVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnJldHJ5VW5pbnN0YWxsYWJsZVBhY2thZ2VzXG4gICAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnU3RhdGUgTWFjaGluZSBFeGVjdXRpb25zJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZS5tZXRyaWNTdGFydGVkKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnU3RhcnRlZCcsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZS5tZXRyaWNTdWNjZWVkZWQoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdTdWNjZWVkZWQnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCwgbGFiZWw6ICdDb3VudCcsIHNob3dVbml0czogZmFsc2UgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uc3RhdGVNYWNoaW5lLm1ldHJpY1RpbWUoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnRHVyYXRpb24nLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ1N0YXRlIE1hY2hpbmUgRmFpbHVyZXMnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uc3RhdGVNYWNoaW5lLm1ldHJpY0Fib3J0ZWQoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdBYm9ydGVkJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uc3RhdGVNYWNoaW5lLm1ldHJpY0ZhaWxlZCh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ0ZhaWxlZCcsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZS5tZXRyaWNUaHJvdHRsZWQoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdUaHJvdHRsZWQnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5zdGF0ZU1hY2hpbmUubWV0cmljVGltZWRPdXQoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdUaW1lZCBPdXQnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCwgbGFiZWw6ICdDb3VudCcsIHNob3dVbml0czogZmFsc2UgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdEZWFkIExldHRlciBRdWV1ZScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5kZWFkTGV0dGVyUXVldWUubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzTm90VmlzaWJsZShcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnSW52aXNpYmxlIE1lc3NhZ2VzJyB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcmlnaHQ6IFtcbiAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5kZWFkTGV0dGVyUXVldWUubWV0cmljQXBwcm94aW1hdGVBZ2VPZk9sZGVzdE1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ09sZGVzdCBNZXNzYWdlIEFnZScgfVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJpZ2h0QW5ub3RhdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAnI2ZmN2YwZScsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICcxMCBkYXlzJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogRHVyYXRpb24uZGF5cygxMCkudG9TZWNvbmRzKCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZjAwMDAnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnMTQgZGF5cyAoRExRIFJldGVudGlvbiknLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBEdXJhdGlvbi5kYXlzKDE0KS50b1NlY29uZHMoKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuXG4gICAgICAgIC8vIGRlbnkgbGlzdFxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgVGV4dFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgICAgICBtYXJrZG93bjogW1xuICAgICAgICAgICAgICAnIyBEZW55IExpc3QnLFxuICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgYFtidXR0b246cHJpbWFyeTpEZW55IExpc3QgT2JqZWN0XSgke3MzT2JqZWN0VXJsKFxuICAgICAgICAgICAgICAgIHByb3BzLmRlbnlMaXN0LmJ1Y2tldCxcbiAgICAgICAgICAgICAgICBwcm9wcy5kZW55TGlzdC5vYmplY3RLZXlcbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246UHJ1bmUgRnVuY3Rpb25dKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMuZGVueUxpc3QucHJ1bmUucHJ1bmVIYW5kbGVyXG4gICAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgICAgIGBbYnV0dG9uOlBydW5lIExvZ3NdKCR7bGFtYmRhU2VhcmNoTG9nR3JvdXBVcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMuZGVueUxpc3QucHJ1bmUucHJ1bmVIYW5kbGVyXG4gICAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgICAgIGBbYnV0dG9uOkRlbGV0ZSBRdWV1ZV0oJHtzcXNRdWV1ZVVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5kZW55TGlzdC5wcnVuZS5xdWV1ZVxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpEZWxldGUgTG9nc10oJHtsYW1iZGFTZWFyY2hMb2dHcm91cFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5kZW55TGlzdC5wcnVuZS5kZWxldGVIYW5kbGVyXG4gICAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnRGVueSBMaXN0JyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5kZW55TGlzdC5tZXRyaWNEZW55TGlzdFJ1bGVzKHsgbGFiZWw6ICdSdWxlcycgfSksXG4gICAgICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgcHJvcHMuZGVueUxpc3QucHJ1bmUucXVldWUubWV0cmljTnVtYmVyT2ZNZXNzYWdlc0RlbGV0ZWQoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnRGVsZXRlZCBGaWxlcycsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdQcnVuZSBGdW5jdGlvbiBIZWFsdGgnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHByb3BzLmRlbnlMaXN0LnBydW5lLnBydW5lSGFuZGxlci5tZXRyaWNJbnZvY2F0aW9ucyh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ0ludm9jYXRpb25zJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHByb3BzLmRlbnlMaXN0LnBydW5lLnBydW5lSGFuZGxlci5tZXRyaWNFcnJvcnMoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdFcnJvcnMnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuXG4gICAgICAgIC4uLihwcm9wcy5wYWNrYWdlU3RhdHNcbiAgICAgICAgICA/IHJlbmRlclBhY2thZ2VTdGF0c1dpZGdldHMocHJvcHMucGFja2FnZVN0YXRzKVxuICAgICAgICAgIDogW10pLFxuICAgICAgICAuLi5yZW5kZXJWZXJzaW9uVHJhY2tlcldpZGdldHMocHJvcHMudmVyc2lvblRyYWNrZXIpLFxuICAgICAgICAuLi4ocHJvcHMucmVsZWFzZU5vdGVzXG4gICAgICAgICAgPyByZW5kZXJSZWxlYXNlTm90ZXNXaWRnZXRzKHByb3BzLnJlbGVhc2VOb3RlcylcbiAgICAgICAgICA6IFtdKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBlckxhbmd1YWdlUmVwb3J0cyhcbiAgICBsYW5ndWFnZTogRG9jdW1lbnRhdGlvbkxhbmd1YWdlLFxuICAgIHBhY2thZ2VEYXRhOiBJQnVja2V0XG4gICk6IElXaWRnZXRbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBQYWNrYWdlVmVyc2lvbnNUYWJsZVdpZGdldCh0aGlzLCBgTWlzc2luZ0RvY3MtJHtsYW5ndWFnZS5uYW1lfWAsIHtcbiAgICAgICAgdGl0bGU6IGBQYWNrYWdlIFZlcnNpb25zIFJlcG9ydCB8IE1pc3NpbmcgRG9jdW1lbnRhdGlvbiB8IF8ke2xhbmd1YWdlLm5hbWV9X2AsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgYFRoZXNlIHBhY2thZ2VzIGFyZSBtaXNzaW5nICR7bGFuZ3VhZ2UubmFtZX0gZG9jdW1lbnRhdGlvbi5gLFxuICAgICAgICAgICdBcGFydCBmcm9tIHRoZSB1bmluc3RhbGxhYmxlIHBhY2thZ2VzLCB0aGlzIHJlcG9ydCBzaG91bGQgc3RheSBlbXB0eScsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ1RvIGludmVzdGlnYXRlIGluc3BlY3QgdGhlIG9yY2hlc3RyYXRpb24gRExRLicsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGJ1Y2tldDogcGFja2FnZURhdGEsXG4gICAgICAgIGtleTogbWlzc2luZ0RvY3VtZW50YXRpb25SZXBvcnQobGFuZ3VhZ2UpLFxuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgIH0pLFxuICAgICAgbmV3IFBhY2thZ2VWZXJzaW9uc1RhYmxlV2lkZ2V0KFxuICAgICAgICB0aGlzLFxuICAgICAgICBgQ29ycnVwdEFzc2VtYmx5RG9jcy0ke2xhbmd1YWdlLm5hbWV9YCxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiBgUGFja2FnZSBWZXJzaW9ucyBSZXBvcnQgfCBDb3JydXB0IEFzc2VtYmx5IHwgXyR7bGFuZ3VhZ2UubmFtZX1fYCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogW1xuICAgICAgICAgICAgYFRoZXNlIHBhY2thZ2VzIGFyZSBtaXNzaW5nICR7bGFuZ3VhZ2UubmFtZX0gZG9jdW1lbnRhdGlvbiBiZWNhdXNlIG9mIGEgY29ycnVwdGVkIGFzc2VtYmx5LmAsXG4gICAgICAgICAgICAnJyxcbiAgICAgICAgICAgIFwiVGhlIHNwZWNpZmljIGVycm9yIGNhbiBiZSBmb3VuZCBpbiB0aGUgcGFja2FnZSBkaXJlY3RvcnkgaW5zaWRlIGZpbGVzIHN1ZmZpeGVkIHdpdGggJy5jb3JydXB0YXNzZW1ibHknXCIsXG4gICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgICAgIGtleTogY29ycnVwdEFzc2VtYmx5UmVwb3J0KGxhbmd1YWdlKSxcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICB9XG4gICAgICApLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlICpjYXRhbG9nT3ZlcnZpZXdMYW5ndWFnZVNlY3Rpb25zKHtcbiAgICBpbnZlbnRvcnksXG4gICAgb3JjaGVzdHJhdGlvbixcbiAgfTogQmFja2VuZERhc2hib2FyZFByb3BzKTogR2VuZXJhdG9yPElXaWRnZXRbXT4ge1xuICAgIHlpZWxkIFtcbiAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgJyMgRG9jdW1lbnRhdGlvbiBHZW5lcmF0aW9uJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgW2J1dHRvbjpwcmltYXJ5OlRyYW5zbGl0ZXJhdG9yIExvZ3NdKCR7bG9nR3JvdXBVcmwoXG4gICAgICAgICAgICBvcmNoZXN0cmF0aW9uLnRyYW5zbGl0ZXJhdG9yLmxvZ0dyb3VwXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjpUcmFuc2xpdGVyYXRvciBFQ1MgQ2x1c3Rlcl0oJHtlY3NDbHVzdGVyVXJsKFxuICAgICAgICAgICAgb3JjaGVzdHJhdGlvbi5lY3NDbHVzdGVyXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0pLFxuICAgIF07XG4gICAgY29uc3QgbUZhcmdhdGVVc2FnZSA9IG5ldyBNZXRyaWMoe1xuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBDbGFzczogJ1N0YW5kYXJkL09uRGVtYW5kJyxcbiAgICAgICAgUmVzb3VyY2U6ICd2Q1BVJyxcbiAgICAgICAgU2VydmljZTogJ0ZhcmdhdGUnLFxuICAgICAgICBUeXBlOiAnUmVzb3VyY2UnLFxuICAgICAgfSxcbiAgICAgIG1ldHJpY05hbWU6ICdSZXNvdXJjZUNvdW50JyxcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9Vc2FnZScsXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgIH0pO1xuXG4gICAgeWllbGQgW1xuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIHRpdGxlOiAnRmFyZ2F0ZSBSZXNvdXJjZXMnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgbUZhcmdhdGVVc2FnZS53aXRoKHsgbGFiZWw6ICdGYXJnYXRlIHZDUFUgVXNhZ2UgKE9uLURlbWFuZCknIH0pLFxuICAgICAgICAgIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICBleHByZXNzaW9uOiAnU0VSVklDRV9RVU9UQShtRmFyZ2F0ZVVzYWdlKScsXG4gICAgICAgICAgICBsYWJlbDogJ0ZhcmdhdGUgdkNQVSBRdW90YSAoT24tRGVtYW5kKScsXG4gICAgICAgICAgICB1c2luZ01ldHJpY3M6IHsgbUZhcmdhdGVVc2FnZSB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgb3JjaGVzdHJhdGlvbi5tZXRyaWNFY3NDcHVVdGlsaXphdGlvbih7IGxhYmVsOiAnQ1BVIFV0aWxpemF0aW9uJyB9KSxcbiAgICAgICAgICBvcmNoZXN0cmF0aW9uLm1ldHJpY0Vjc01lbW9yeVV0aWxpemF0aW9uKHtcbiAgICAgICAgICAgIGxhYmVsOiAnTWVtb3J5IFV0aWxpemF0aW9uJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgcmlnaHRZQXhpczogeyBsYWJlbDogJ1BlcmNlbnQnLCBtaW46IDAsIG1heDogMTAwLCBzaG93VW5pdHM6IGZhbHNlIH0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ0VDUyBSZXNvdXJjZXMnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIG9yY2hlc3RyYXRpb24ubWV0cmljRWNzTmV0d29ya1J4Qnl0ZXMoeyBsYWJlbDogJ1JlY2VpdmVkIEJ5dGVzJyB9KVxuICAgICAgICAgICksXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIG9yY2hlc3RyYXRpb24ubWV0cmljRWNzTmV0d29ya1R4Qnl0ZXMoe1xuICAgICAgICAgICAgICBsYWJlbDogJ1RyYW5zbWl0dGVkIEJ5dGVzJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICByaWdodDogW1xuICAgICAgICAgIGZpbGxNZXRyaWMob3JjaGVzdHJhdGlvbi5tZXRyaWNFY3NUYXNrQ291bnQoeyBsYWJlbDogJ1Rhc2sgQ291bnQnIH0pKSxcbiAgICAgICAgXSxcbiAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgIH0pLFxuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIHRpdGxlOiAnRUNTIFRhc2sgTW9uaXRvcicsXG4gICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICBvcmNoZXN0cmF0aW9uLmVjc1Rhc2tNb25pdG9yLm1ldHJpY0FjdGl2ZVRhc2tDb3VudCh7XG4gICAgICAgICAgICBsYWJlbDogJ0FjdGl2ZSBUYXNrIENvdW50JyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBvcmNoZXN0cmF0aW9uLmVjc1Rhc2tNb25pdG9yLm1ldHJpY0tpbGxlZFRhc2tDb3VudCh7XG4gICAgICAgICAgICBsYWJlbDogJ0tpbGxlZCBUYXNrIENvdW50JyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICByaWdodDogW1xuICAgICAgICAgIG9yY2hlc3RyYXRpb24uZWNzVGFza01vbml0b3IubWV0cmljQWN0aXZlVGFza0FnZSh7XG4gICAgICAgICAgICBsYWJlbDogJ0FjdGl2ZSBUYXNrIEFnZSAoTWF4KScsXG4gICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG9yY2hlc3RyYXRpb24uZWNzVGFza01vbml0b3IubWV0cmljQWN0aXZlVGFza0FnZSh7XG4gICAgICAgICAgICBsYWJlbDogJ0FjdGl2ZSBUYXNrIEFnZSAoQXZnKScsXG4gICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5BVkVSQUdFLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG9yY2hlc3RyYXRpb24uZWNzVGFza01vbml0b3IubWV0cmljQWN0aXZlVGFza0FnZSh7XG4gICAgICAgICAgICBsYWJlbDogJ0FjdGl2ZSBUYXNrIEFnZSAoTWluKScsXG4gICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NSU5JTVVNLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgfSksXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgbGFuZ3VhZ2Ugb2YgRG9jdW1lbnRhdGlvbkxhbmd1YWdlLkFMTCkge1xuICAgICAgeWllbGQgW1xuICAgICAgICBuZXcgVGV4dFdpZGdldCh7XG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgICBtYXJrZG93bjogYCMjIExhbmd1YWdlOiAke2xhbmd1YWdlLnRvU3RyaW5nKCl9YCxcbiAgICAgICAgfSksXG4gICAgICBdO1xuICAgICAgeWllbGQgW1xuICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgdGl0bGU6ICdQYWNrYWdlIFZlcnNpb25zJyxcbiAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljU3VwcG9ydGVkUGFja2FnZVZlcnNpb25Db3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ0F2YWlsYWJsZScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnIzJjYTAyYycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGludmVudG9yeS5tZXRyaWNDb3JydXB0QXNzZW1ibHlQYWNrYWdlVmVyc2lvbkNvdW50KGxhbmd1YWdlLCB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnQ29ycnVwdCBBc3NlbWJseScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnIzM1NDJENycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGludmVudG9yeS5tZXRyaWNUcmFuc2xpdGVyYXRpb25FcnJvclBhY2thZ2VWZXJzaW9uQ291bnQobGFuZ3VhZ2UsIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdUcmFuc2xpdGVyYXRpb24gRXJyb3InLFxuICAgICAgICAgICAgICBjb2xvcjogJyNGRjhDMDAnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljVW5zdXBwb3J0ZWRQYWNrYWdlVmVyc2lvbkNvdW50KGxhbmd1YWdlLCB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnVW5zdXBwb3J0ZWQnLFxuICAgICAgICAgICAgICBjb2xvcjogJyM5NDY3YmQnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljTWlzc2luZ1BhY2thZ2VWZXJzaW9uQ291bnQobGFuZ3VhZ2UsIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdNaXNzaW5nJyxcbiAgICAgICAgICAgICAgY29sb3I6ICcjZDYyNzI4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgbGVmdFlBeGlzOiB7IHNob3dVbml0czogZmFsc2UgfSxcbiAgICAgICAgICB2aWV3OiBHcmFwaFdpZGdldFZpZXcuUElFLFxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgIHRpdGxlOiAnUGFja2FnZSBWZXJzaW9uIFN1Ym1vZHVsZXMnLFxuICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgIGludmVudG9yeS5tZXRyaWNTdXBwb3J0ZWRTdWJtb2R1bGVDb3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ0F2YWlsYWJsZScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnIzJjYTAyYycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGludmVudG9yeS5tZXRyaWNDb3JydXB0QXNzZW1ibHlTdWJtb2R1bGVDb3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ0NvcnJ1cHQgQXNzZW1ibHknLFxuICAgICAgICAgICAgICBjb2xvcjogJyMzNTQyRDcnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljVHJhbnNsaXRlcmF0aW9uRXJyb3JTdWJtb2R1bGVDb3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ1RyYW5zbGl0ZXJhdGlvbiBFcnJvcicsXG4gICAgICAgICAgICAgIGNvbG9yOiAnI0ZGOEMwMCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGludmVudG9yeS5tZXRyaWNVbnN1cHBvcnRlZFN1Ym1vZHVsZUNvdW50KGxhbmd1YWdlLCB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnVW5zdXBwb3J0ZWQnLFxuICAgICAgICAgICAgICBjb2xvcjogJyM5NDY3YmQnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljTWlzc2luZ1N1Ym1vZHVsZUNvdW50KGxhbmd1YWdlLCB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnTWlzc2luZycsXG4gICAgICAgICAgICAgIGNvbG9yOiAnI2Q2MjcyOCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGxlZnRZQXhpczogeyBzaG93VW5pdHM6IGZhbHNlIH0sXG4gICAgICAgICAgdmlldzogR3JhcGhXaWRnZXRWaWV3LlBJRSxcbiAgICAgICAgfSksXG4gICAgICBdO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiogcmVuZGVyUGFja2FnZVNvdXJjZXNXaWRnZXRzKFxuICBwYWNrYWdlU291cmNlczogUGFja2FnZVNvdXJjZUJpbmRSZXN1bHRbXVxuKTogR2VuZXJhdG9yPElXaWRnZXRbXSwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+IHtcbiAgZm9yIChjb25zdCBwYWNrYWdlU291cmNlIG9mIHBhY2thZ2VTb3VyY2VzKSB7XG4gICAgeWllbGQgW1xuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICBgIyAke3BhY2thZ2VTb3VyY2UubmFtZX1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIC4uLihwYWNrYWdlU291cmNlLmxpbmtzID8/IFtdKS5tYXAoXG4gICAgICAgICAgICAoeyBuYW1lLCBwcmltYXJ5LCB1cmwgfSkgPT5cbiAgICAgICAgICAgICAgYFske3ByaW1hcnkgPyAnYnV0dG9uOnByaW1hcnknIDogJ2J1dHRvbid9OiR7bmFtZX1dKCR7dXJsfSlgXG4gICAgICAgICAgKSxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0pLFxuICAgIF07XG4gICAgeWllbGQqIHBhY2thZ2VTb3VyY2UuZGFzaGJvYXJkV2lkZ2V0cztcbiAgfVxuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIHJlbmRlclBhY2thZ2VTdGF0c1dpZGdldHMocGFja2FnZVN0YXRzOiBQYWNrYWdlU3RhdHMpOiBJV2lkZ2V0W11bXSB7XG4gIHJldHVybiBbXG4gICAgW1xuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICAnIyBQYWNrYWdlIFN0YXRzJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgW2J1dHRvbjpwcmltYXJ5OlBhY2thZ2UgU3RhdHMgT2JqZWN0XSgke3MzT2JqZWN0VXJsKFxuICAgICAgICAgICAgcGFja2FnZVN0YXRzLmJ1Y2tldCxcbiAgICAgICAgICAgIHBhY2thZ2VTdGF0cy5zdGF0c0tleVxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246UGFja2FnZSBTdGF0cyBTdGF0ZSBNYWNoaW5lXSgke3N0YXRlTWFjaGluZVVybChcbiAgICAgICAgICAgIHBhY2thZ2VTdGF0cy5zdGF0ZU1hY2hpbmVcbiAgICAgICAgICApfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOkNodW5rZXIgRnVuY3Rpb25dKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICBwYWNrYWdlU3RhdHMuY2h1bmtlckZ1bmN0aW9uXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjpQcm9jZXNzb3IgRnVuY3Rpb25dKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICBwYWNrYWdlU3RhdHMucHJvY2Vzc29yRnVuY3Rpb25cbiAgICAgICAgICApfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOkFnZ3JlZ2F0b3IgRnVuY3Rpb25dKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICBwYWNrYWdlU3RhdHMuYWdncmVnYXRvckZ1bmN0aW9uXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0pLFxuICAgIF0sXG4gICAgW1xuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIHRpdGxlOiAnTnVtYmVyIG9mIFBhY2thZ2UgU3RhdHMgUmVjb3JkZWQnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIHBhY2thZ2VTdGF0cy5tZXRyaWNQYWNrYWdlc0NvdW50KHsgbGFiZWw6ICdQYWNrYWdlcyB3aXRoIHN0YXRzJyB9KSxcbiAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgfSksXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdJbnZvY2F0aW9uIER1cmF0aW9uJyxcbiAgICAgICAgbGVmdDogW3BhY2thZ2VTdGF0cy5zdGF0ZU1hY2hpbmUubWV0cmljVGltZSh7IGxhYmVsOiAnRHVyYXRpb24nIH0pXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICByaWdodEFubm90YXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6ICcjZmZhNTAwJyxcbiAgICAgICAgICAgIGxhYmVsOiAnNiBob3VycyAoU3RhdGUgTWFjaGluZSB0aW1lb3V0KScsXG4gICAgICAgICAgICB2YWx1ZTogRHVyYXRpb24uaG91cnMoNikudG9TZWNvbmRzKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIF0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIHJlbmRlclZlcnNpb25UcmFja2VyV2lkZ2V0cyhcbiAgdmVyc2lvblRyYWNrZXI6IFZlcnNpb25UcmFja2VyXG4pOiBJV2lkZ2V0W11bXSB7XG4gIHJldHVybiBbXG4gICAgW1xuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICAnIyBWZXJzaW9uIFRyYWNrZXInLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBbYnV0dG9uOnByaW1hcnk6VmVyc2lvbnMgT2JqZWN0XSgke3MzT2JqZWN0VXJsKFxuICAgICAgICAgICAgdmVyc2lvblRyYWNrZXIuYnVja2V0LFxuICAgICAgICAgICAgVkVSU0lPTl9UUkFDS0VSX0tFWVxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246VmVyc2lvbiBUcmFja2VyIEZ1bmN0aW9uXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgdmVyc2lvblRyYWNrZXIuaGFuZGxlclxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246VmVyc2lvbiBUcmFja2VyIExvZ3NdKCR7bGFtYmRhU2VhcmNoTG9nR3JvdXBVcmwoXG4gICAgICAgICAgICB2ZXJzaW9uVHJhY2tlci5oYW5kbGVyXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0pLFxuICAgIF0sXG4gICAgW1xuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIHRpdGxlOiAnTnVtYmVyIG9mIFBhY2thZ2UgVmVyc2lvbnMgUmVjb3JkZWQnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIHZlcnNpb25UcmFja2VyLm1ldHJpY1RyYWNrZWRWZXJzaW9uc0NvdW50KHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdQYWNrYWdlIHZlcnNpb25zIHJlY29yZGVkJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ0ludm9jYXRpb24gRHVyYXRpb24nLFxuICAgICAgICBsZWZ0OiBbdmVyc2lvblRyYWNrZXIuaGFuZGxlci5tZXRyaWNEdXJhdGlvbih7IGxhYmVsOiAnRHVyYXRpb24nIH0pXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICByaWdodEFubm90YXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6ICcjZmZhNTAwJyxcbiAgICAgICAgICAgIGxhYmVsOiAnMSBtaW51dGVzIChMYW1iZGEgdGltZW91dCknLFxuICAgICAgICAgICAgdmFsdWU6IER1cmF0aW9uLm1pbnV0ZXMoMSkudG9TZWNvbmRzKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIF0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIHJlbmRlclJlbGVhc2VOb3Rlc1dpZGdldHMoXG4gIHJlbGVhc2VOb3RlczogUmVsZWFzZU5vdGVGZXRjaGVyXG4pOiBJV2lkZ2V0W11bXSB7XG4gIHJldHVybiBbXG4gICAgW1xuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICAnIyBSZWxlYXNlIE5vdGVzJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgW2J1dHRvbjpwcmltYXJ5OlN0YXRlTWFjaGluZV0oJHtzdGF0ZU1hY2hpbmVVcmwoXG4gICAgICAgICAgICByZWxlYXNlTm90ZXMuc3RhdGVNYWNoaW5lXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjpyZWxlYXNlTm90ZXNUcmlnZ2VyXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgcmVsZWFzZU5vdGVzLnJlbGVhc2VOb3Rlc1RyaWdnZXJMYW1iZGFcbiAgICAgICAgICApfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOmdlbmVyYXRlUmVsZWFzZU5vdGVzXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgcmVsZWFzZU5vdGVzLmdlbmVyYXRlUmVsZWFzZU5vdGVzTGFtYmRhXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjp1cGRhdGVGZWVkXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgcmVsZWFzZU5vdGVzLnVwZGF0ZUZlZWRGdW5jdGlvblxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246cXVldWVdKCR7c3FzUXVldWVVcmwocmVsZWFzZU5vdGVzLnF1ZXVlKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjp3b3JrZXJRdWV1ZV0oJHtzcXNRdWV1ZVVybChyZWxlYXNlTm90ZXMud29ya2VyUXVldWUpfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOndvcmtlckRMUV0oJHtzcXNRdWV1ZVVybChyZWxlYXNlTm90ZXMud29ya2VyRExRKX0pYCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0pLFxuICAgIF0sXG4gICAgW1xuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIHRpdGxlOiAnTnVtYmVyIG9mIHJlbGVhc2UgTm90ZXMnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIHJlbGVhc2VOb3Rlcy5tZXRyaWNQYWNrYWdlc1dpdGhSZWxlYXNlTm90ZXNDb3VudCh7XG4gICAgICAgICAgICAgIGxhYmVsOiAnUGFja2FnZXMgd2l0aCByZWxlYXNlIG5vdGVzJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ1JlbGVhc2Ugbm90ZXMgZ2VuZXJhdGlvbiBFcnJvcnMnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgcmVsZWFzZU5vdGVzLm1ldHJpY0NoYW5nZUxvZ0FsbEVycm9yKHsgbGFiZWw6ICdBbGwgRXJyb3JzJyB9KSxcbiAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljUmVxdWVzdFVua25vd25FcnJvcih7IGxhYmVsOiAnVW5rbm93bkVycm9yJyB9KSxcbiAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljSW52YWxpZENyZWRlbnRpYWxzKHtcbiAgICAgICAgICAgIGxhYmVsOiAnSW52YWxpZENyZWRlbnRpYWxzJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljUmVxdWVzdFF1b3RhRXhoYXVzdGVkKHtcbiAgICAgICAgICAgIGxhYmVsOiAnUmVxdWVzdFF1b3RhRXhoYXVzdGVkJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljUmVxdWVzdFVuU3VwcG9ydGVkUmVwbyh7XG4gICAgICAgICAgICBsYWJlbDogJ1VuU3VwcG9ydGVkUmVwbycsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgcmVsZWFzZU5vdGVzLm1ldHJpY1JlcXVlc3RJbnZhbGlkUGFja2FnZUpzb24oe1xuICAgICAgICAgICAgbGFiZWw6ICdJbnZhbGlkUGFja2FnZUpzb24nLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHJlbGVhc2VOb3Rlcy5tZXRyaWNDaGFuZ2VMb2dGZXRjaEVycm9yKHtcbiAgICAgICAgICAgIGxhYmVsOiAnQ2hhbmdlTG9nRmV0Y2hFcnJvcicsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICBdLFxuICAgIFtcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ0dpdEh1YiBBUEkgUmF0ZSBMaW1pdHMnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIHJlbGVhc2VOb3Rlcy5tZXRyaWNHaFJhdGVMaW1pdExpbWl0KHsgbGFiZWw6ICdMaW1pdCcgfSksXG4gICAgICAgICAgICAnUkVQRUFUJ1xuICAgICAgICAgICksXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIHJlbGVhc2VOb3Rlcy5tZXRyaWNHaFJhdGVMaW1pdFVzZWQoeyBsYWJlbDogJ1VzZWQnIH0pLFxuICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICApLFxuICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljR2hSYXRlTGltaXRSZW1haW5pbmcoe1xuICAgICAgICAgICAgICBsYWJlbDogJ1JlbWFpbmluZycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIF0sXG4gIF07XG59XG4iXX0=
|
package/lib/construct-hub.js
CHANGED
|
@@ -412,7 +412,7 @@ class ConstructHub extends constructs_1.Construct {
|
|
|
412
412
|
}
|
|
413
413
|
exports.ConstructHub = ConstructHub;
|
|
414
414
|
_a = JSII_RTTI_SYMBOL_1;
|
|
415
|
-
ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.4.
|
|
415
|
+
ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.4.432" };
|
|
416
416
|
/**
|
|
417
417
|
* How possibly risky operations (such as doc-generation, which requires
|
|
418
418
|
* installing the indexed packages in order to trans-literate sample code) are
|
|
@@ -272,5 +272,5 @@ class CodeArtifact {
|
|
|
272
272
|
}
|
|
273
273
|
exports.CodeArtifact = CodeArtifact;
|
|
274
274
|
_a = JSII_RTTI_SYMBOL_1;
|
|
275
|
-
CodeArtifact[_a] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.
|
|
275
|
+
CodeArtifact[_a] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.432" };
|
|
276
276
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYWNrYWdlLXNvdXJjZXMvY29kZS1hcnRpZmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE4RDtBQUM5RCwrREFPb0M7QUFFcEMsdURBQThDO0FBQzlDLHVFQUFnRTtBQUNoRSxpREFBOEQ7QUFDOUQsdURBQWlEO0FBQ2pELCtDQUFnRTtBQUNoRSxpREFBNkQ7QUFFN0QsNENBS3NCO0FBQ3RCLGtEQUE2QztBQU03QyxvRkFBK0U7QUFDL0Usb0ZBTWdEO0FBQ2hELDJDQUFpRDtBQWNqRDs7O0dBR0c7QUFDSCxNQUFhLFlBQVk7SUFDdkIsWUFBb0MsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7SUFBRyxDQUFDO0lBRXpELElBQUksQ0FDVCxLQUFnQixFQUNoQixFQUNFLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsS0FBSyxHQUNvQjtRQUUzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pELE1BQU0sWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUxSSxNQUFNLGNBQWMsR0FBRywwQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ2pCLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsUUFBUSxnQkFBZ0IsRUFBRTtnQkFDM0QsaUJBQWlCLEVBQUUsMEJBQWlCLENB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LEdBQUc7WUFDeEIsR0FBRyxJQUFJO1lBQ1AsYUFBYSxFQUFFO2dCQUNiLENBQUMsZ0RBQXNCLENBQUMsRUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLGlCQUFHLENBQUMsVUFBVTtnQkFDekQsQ0FBQywrQ0FBcUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWM7Z0JBQzdELENBQUMsbURBQXlCLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRO2FBQzVEO1lBQ0QsVUFBVSwrQ0FBMEI7WUFDcEMsU0FBUyxFQUFFLDJDQUFpQjtTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBeUIsQ0FBQyxJQUFvQjtRQUNuRCxPQUFPLElBQUksdUJBQU0sQ0FBQztZQUNoQixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsRUFBRSwwQkFBUyxDQUFDLEdBQUc7WUFDeEIsR0FBRyxJQUFJO1lBQ1AsYUFBYSxFQUFFO2dCQUNiLENBQUMsZ0RBQXNCLENBQUMsRUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLGlCQUFHLENBQUMsVUFBVTtnQkFDekQsQ0FBQywrQ0FBcUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWM7Z0JBQzdELENBQUMsbURBQXlCLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRO2FBQzVEO1lBQ0QsVUFBVSwrREFBbUM7WUFDN0MsU0FBUyxFQUFFLDJDQUFpQjtTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWxUSCxvQ0FtVEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcm5Gb3JtYXQsIEF3cywgRHVyYXRpb24sIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgQ29tcGFyaXNvbk9wZXJhdG9yLFxuICBHcmFwaFdpZGdldCxcbiAgTWV0cmljLFxuICBNZXRyaWNPcHRpb25zLFxuICBTdGF0aXN0aWMsXG4gIFRyZWF0TWlzc2luZ0RhdGEsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IENmblJlcG9zaXRvcnkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWFydGlmYWN0JztcbmltcG9ydCB7IFJ1bGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBUcmFjaW5nIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBCbG9ja1B1YmxpY0FjY2VzcywgSUJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBRdWV1ZSwgUXVldWVFbmNyeXB0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7XG4gIGNvZGVBcnRpZmFjdFJlcG9zaXRvcnlVcmwsXG4gIGxhbWJkYUZ1bmN0aW9uVXJsLFxuICBsYW1iZGFTZWFyY2hMb2dHcm91cFVybCxcbiAgc3FzUXVldWVVcmwsXG59IGZyb20gJy4uL2RlZXAtbGluayc7XG5pbXBvcnQgeyBmaWxsTWV0cmljIH0gZnJvbSAnLi4vbWV0cmljLXV0aWxzJztcbmltcG9ydCB0eXBlIHtcbiAgSVBhY2thZ2VTb3VyY2UsXG4gIFBhY2thZ2VTb3VyY2VCaW5kT3B0aW9ucyxcbiAgUGFja2FnZVNvdXJjZUJpbmRSZXN1bHQsXG59IGZyb20gJy4uL3BhY2thZ2Utc291cmNlJztcbmltcG9ydCB7IENvZGVBcnRpZmFjdEZvcndhcmRlciB9IGZyb20gJy4vY29kZWFydGlmYWN0L2NvZGUtYXJ0aWZhY3QtZm9yd2FyZGVyJztcbmltcG9ydCB7XG4gIE1FVFJJQ1NfTkFNRVNQQUNFLFxuICBNZXRyaWNOYW1lLFxuICBET01BSU5fTkFNRV9ESU1FTlNJT04sXG4gIERPTUFJTl9PV05FUl9ESU1FTlNJT04sXG4gIFJFUE9TSVRPUllfTkFNRV9ESU1FTlNJT04sXG59IGZyb20gJy4vY29kZWFydGlmYWN0L2NvbnN0YW50cy5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IFMzU3RvcmFnZUZhY3RvcnkgfSBmcm9tICcuLi9zMy9zdG9yYWdlJztcblxuZXhwb3J0IGludGVyZmFjZSBDb2RlQXJ0aWZhY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQ29kZUFydGlmYWN0IHJlcG9zaXRvcnkgd2hlcmUgcGFja2FnZXMgYXJlIG9idGFpbmVkIGZyb20uXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5OiBDZm5SZXBvc2l0b3J5O1xuXG4gIC8qKlxuICAgKiBUaGUgUzMgYnVja2V0IHdoZXJlIHBhY2thZ2VzIHdpbGwgYmUgc3RhZ2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0PzogSUJ1Y2tldDtcbn1cblxuLyoqXG4gKiBBIHBhY2thZ2Ugc291cmNlIHRoYXQgb2J0YWlucyBwYWNrYWdlIGRhdGEgZnJvbSBhbiBucG0gQ29kZUFydGlmYWN0XG4gKiByZXBvc2l0b3J5LlxuICovXG5leHBvcnQgY2xhc3MgQ29kZUFydGlmYWN0IGltcGxlbWVudHMgSVBhY2thZ2VTb3VyY2Uge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogQ29kZUFydGlmYWN0UHJvcHMpIHt9XG5cbiAgcHVibGljIGJpbmQoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICB7XG4gICAgICBkZW55TGlzdCxcbiAgICAgIGluZ2VzdGlvbixcbiAgICAgIGxpY2Vuc2VMaXN0LFxuICAgICAgbW9uaXRvcmluZyxcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgICAgcXVldWUsXG4gICAgfTogUGFja2FnZVNvdXJjZUJpbmRPcHRpb25zXG4gICk6IFBhY2thZ2VTb3VyY2VCaW5kUmVzdWx0IHtcbiAgICBjb25zdCBpZFByZWZpeCA9IHRoaXMucHJvcHMucmVwb3NpdG9yeS5ub2RlLnBhdGg7XG4gICAgY29uc3QgcmVwb3NpdG9yeUlkID0gYCR7dGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5Pd25lcn06JHt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWV9LyR7dGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lfWA7XG5cbiAgICBjb25zdCBzdG9yYWdlRmFjdG9yeSA9IFMzU3RvcmFnZUZhY3RvcnkuZ2V0T3JDcmVhdGUoc2NvcGUpO1xuICAgIGNvbnN0IGJ1Y2tldCA9XG4gICAgICB0aGlzLnByb3BzLmJ1Y2tldCB8fFxuICAgICAgc3RvcmFnZUZhY3RvcnkubmV3QnVja2V0KHNjb3BlLCBgJHtpZFByZWZpeH0vU3RhZ2luZ0J1Y2tldGAsIHtcbiAgICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICAgICAgbGlmZWN5Y2xlUnVsZXM6IFt7IGV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoMzApIH1dLFxuICAgICAgfSk7XG4gICAgYnVja2V0LmdyYW50UmVhZChpbmdlc3Rpb24pO1xuXG4gICAgY29uc3QgZGxxID0gbmV3IFF1ZXVlKHNjb3BlLCBgJHtpZFByZWZpeH0vRExRYCwge1xuICAgICAgZW5jcnlwdGlvbjogUXVldWVFbmNyeXB0aW9uLktNU19NQU5BR0VELFxuICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgIHZpc2liaWxpdHlUaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGZvcndhcmRlciA9IG5ldyBDb2RlQXJ0aWZhY3RGb3J3YXJkZXIoXG4gICAgICBzY29wZSxcbiAgICAgIGAke2lkUHJlZml4fS9Gb3J3YXJkZXJgLFxuICAgICAge1xuICAgICAgICBkZWFkTGV0dGVyUXVldWU6IGRscSxcbiAgICAgICAgZGVzY3JpcHRpb246IGBbJHtzY29wZS5ub2RlLnBhdGh9L0NvZGVBcnRpZmFjdC8ke3JlcG9zaXRvcnlJZH1dIEhhbmRsZSBDb2RlQXJ0aWZhY3QgRXZlbnRCcmlkZ2UgZXZlbnRzYCxcbiAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBBV1NfRU1GX0VOVklST05NRU5UOiAnTG9jYWwnLFxuICAgICAgICAgIEJVQ0tFVF9OQU1FOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICBRVUVVRV9VUkw6IHF1ZXVlLnF1ZXVlVXJsLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vcnlTaXplOiAxMDI0LFxuICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgICAgdHJhY2luZzogVHJhY2luZy5BQ1RJVkUsXG4gICAgICB9XG4gICAgKTtcbiAgICBidWNrZXQuZ3JhbnRSZWFkV3JpdGUoZm9yd2FyZGVyKTtcbiAgICBkZW55TGlzdD8uZ3JhbnRSZWFkKGZvcndhcmRlcik7XG4gICAgbGljZW5zZUxpc3QuZ3JhbnRSZWFkKGZvcndhcmRlcik7XG4gICAgcXVldWUuZ3JhbnRTZW5kTWVzc2FnZXMoZm9yd2FyZGVyKTtcbiAgICBmb3J3YXJkZXIuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbJ2NvZGVhcnRpZmFjdDpHZXRQYWNrYWdlVmVyc2lvbkFzc2V0J10sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIFN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICAgICAgc2VydmljZTogJ2NvZGVhcnRpZmFjdCcsXG4gICAgICAgICAgICByZXNvdXJjZTogJ3BhY2thZ2UnLFxuICAgICAgICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICAgICAgICAgIHJlc291cmNlTmFtZTogW1xuICAgICAgICAgICAgICB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWUsXG4gICAgICAgICAgICAgIHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZSxcbiAgICAgICAgICAgICAgJ25wbScsIC8vIHBhY2thZ2UgZm9ybWF0XG4gICAgICAgICAgICAgICcqJywgLy8gbmFtZXNwYWNlL3BhY2thZ2UtbmFtZVxuICAgICAgICAgICAgXS5qb2luKCcvJyksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBydWxlID0gbmV3IFJ1bGUoc2NvcGUsIGAke2lkUHJlZml4fS9FdmVudEJyaWRnZWAsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtzY29wZS5ub2RlLnBhdGh9L0NvZGVBcnRpZmFjdC8ke3JlcG9zaXRvcnlJZH0vRXZlbnRCcmlkZ2VgLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIHNvdXJjZTogWydhd3MuY29kZWFydGlmYWN0J10sXG4gICAgICAgIGRldGFpbFR5cGU6IFsnQ29kZUFydGlmYWN0IFBhY2thZ2UgVmVyc2lvbiBTdGF0ZSBDaGFuZ2UnXSxcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgZG9tYWluT3duZXI6IFt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyXSxcbiAgICAgICAgICBkb21haW5OYW1lOiBbdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lXSxcbiAgICAgICAgICByZXBvc2l0b3J5TmFtZTogW3RoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZV0sXG4gICAgICAgICAgcGFja2FnZUZvcm1hdDogWyducG0nXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0YXJnZXRzOiBbbmV3IExhbWJkYUZ1bmN0aW9uKGZvcndhcmRlcildLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZmFpbHVyZUFsYXJtID0gZm9yd2FyZGVyXG4gICAgICAubWV0cmljRXJyb3JzKClcbiAgICAgIC5jcmVhdGVBbGFybShzY29wZSwgYCR7aWRQcmVmaXh9L0ZvcndhcmRlci9GYWlsdXJlc2AsIHtcbiAgICAgICAgYWxhcm1OYW1lOiBgJHtzY29wZS5ub2RlLnBhdGh9L0NvZGVBcnRpZmFjdC8ke3JlcG9zaXRvcnlJZH0vRm9yd2FyZGVyYCxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAgIGBUaGUgQ29kZUFydGlmYWN0IGZvd2FyZGVyIGZvciAke3JlcG9zaXRvcnlJZH0gaXMgZmFpbGluZ2AsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYExpbmsgdG8gdGhlIGxhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb3J3YXJkZXIpfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjpcbiAgICAgICAgICBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5NSVNTSU5HLFxuICAgICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRIaWdoU2V2ZXJpdHlBbGFybShcbiAgICAgIGBDb2RlQXJ0aWZhY3Q6JHt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWV9IEZhaWx1cmVzYCxcbiAgICAgIGZhaWx1cmVBbGFybVxuICAgICk7XG5cbiAgICBjb25zdCBkbHFOb3RFbXB0eUFsYXJtID0gZGxxXG4gICAgICAubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzVmlzaWJsZSh7XG4gICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIH0pXG4gICAgICAuY3JlYXRlQWxhcm0oc2NvcGUsIGAke2lkUHJlZml4fS9Gb3J3YXJkZXIvRExRTm90RW1wdHlgLCB7XG4gICAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9Db2RlQXJ0aWZhY3QvJHtyZXBvc2l0b3J5SWR9L0RMUU5vdEVtcHR5YCxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAgIGBUaGUgQ29kZUFydGlmYWN0IGZvd2FyZGVyIGZvciAke3JlcG9zaXRvcnlJZH0gaXMgZmFpbGluZ2AsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYExpbmsgdG8gdGhlIGxhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb3J3YXJkZXIpfWAsXG4gICAgICAgICAgYExpbmsgdG8gdGhlIGRlYWQgbGV0dGVyIHF1ZXVlOiAke3Nxc1F1ZXVlVXJsKGRscSl9YCxcbiAgICAgICAgXS5qb2luKCcvbicpLFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6XG4gICAgICAgICAgQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuTk9UX0JSRUFDSElORyxcbiAgICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgIGBDb2RlQXJ0aWZhY3QvJHtyZXBvc2l0b3J5SWR9IERMUSBOb3QgRW1wdHlgLFxuICAgICAgZGxxTm90RW1wdHlBbGFybVxuICAgICk7XG5cbiAgICBydWxlLm5vZGUuYWRkRGVwZW5kZW5jeShmYWlsdXJlQWxhcm0sIGRscU5vdEVtcHR5QWxhcm0pO1xuXG4gICAgb3ZlcnZpZXdEYXNoYm9hcmQuYWRkRExRTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICBgQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfSBETFFgLFxuICAgICAgZGxxXG4gICAgKTtcbiAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRDb25jdXJyZW50RXhlY3V0aW9uTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICBmb3J3YXJkZXIsXG4gICAgICBgJHtpZFByZWZpeH0vRm9yd2FyZGVyTGFtYmRhYFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogYENvZGVBcnRpZmFjdDogJHtyZXBvc2l0b3J5SWR9YCxcbiAgICAgIGxpbmtzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ29kZUFydGlmYWN0JyxcbiAgICAgICAgICB1cmw6IGNvZGVBcnRpZmFjdFJlcG9zaXRvcnlVcmwodGhpcy5wcm9wcy5yZXBvc2l0b3J5KSxcbiAgICAgICAgICBwcmltYXJ5OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0ZvcndhcmRlciBGdW5jdGlvbicsXG4gICAgICAgICAgdXJsOiBsYW1iZGFGdW5jdGlvblVybChmb3J3YXJkZXIpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1NlYXJjaCBMb2cgZ3JvdXAnLFxuICAgICAgICAgIHVybDogbGFtYmRhU2VhcmNoTG9nR3JvdXBVcmwoZm9yd2FyZGVyKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdETFEnLFxuICAgICAgICAgIHVybDogc3FzUXVldWVVcmwoZGxxKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBkYXNoYm9hcmRXaWRnZXRzOiBbXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdGdW5jdGlvbiBIZWFsdGgnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKGZvcndhcmRlci5tZXRyaWNJbnZvY2F0aW9ucyh7IGxhYmVsOiAnSW52b2NhdGlvbnMnIH0pKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhmb3J3YXJkZXIubWV0cmljRXJyb3JzKHsgbGFiZWw6ICdFcnJvcnMnIH0pKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW2ZvcndhcmRlci5tZXRyaWNEdXJhdGlvbih7IGxhYmVsOiAnRHVyYXRpb24nIH0pXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0RlYWQgTGV0dGVyIFF1ZXVlJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZGxxLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnVmlzaWJsZSBNZXNzYWdlcycsXG4gICAgICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgZGxxLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnSGlkZGVuIE1lc3NhZ2VzJyxcbiAgICAgICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIGRscS5tZXRyaWNBcHByb3hpbWF0ZUFnZU9mT2xkZXN0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ1F1YWxpdHkgTWV0cmljcycsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNOb3RKc2lpRW5hYmxlZENvdW50KHsgbGFiZWw6ICdOb3QgYSBqc2lpIHBhY2thZ2UnIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY0luZWxpZ2libGVMaWNlbnNlKHsgbGFiZWw6ICdJbmVsaWdpYmxlIExpY2Vuc2UnIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY0RlbnlMaXN0ZWRDb3VudCh7IGxhYmVsOiAnRGVueSBMaXN0ZWQnIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY0RlbGV0ZWRDb3VudCh7IGxhYmVsOiAnRGVsZXRpb24gRXZlbnRzJyB9KSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb3VudCBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBpZ25vcmVkIGR1ZSB0byBiZWluZyBpbiB0aGUgZGVueSBsaXN0LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0RlbnlMaXN0ZWRDb3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgW0RPTUFJTl9PV05FUl9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyLFxuICAgICAgICBbRE9NQUlOX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lLFxuICAgICAgICBbUkVQT1NJVE9SWV9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLkRFTllfTElTVEVEX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHBhY2thZ2UgdmVyc2lvbnMgdGhhdCB3ZXJlIGlnbm9yZWQgZHVlIHRvIHVzaW5nIGFuIGluZWxvaWdpYmxlIGxpY2Vuc2UuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljSW5lbGlnaWJsZUxpY2Vuc2Uob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIFtET01BSU5fT1dORVJfRElNRU5TSU9OXTpcbiAgICAgICAgICB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyID8/IEF3cy5BQ0NPVU5UX0lELFxuICAgICAgICBbRE9NQUlOX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lLFxuICAgICAgICBbUkVQT1NJVE9SWV9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLklORUxJR0lCTEVfTElDRU5TRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBkZWxldGVkIGZyb20gQ29kZUFydGlmYWN0ICh0aG9zZSBldmVudHMgYXJlIG5vdFxuICAgKiBoYW5kbGVkIGN1cnJlbnRseSkuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljRGVsZXRlZENvdW50KG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBbRE9NQUlOX09XTkVSX0RJTUVOU0lPTl06XG4gICAgICAgICAgdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5Pd25lciA/PyBBd3MuQUNDT1VOVF9JRCxcbiAgICAgICAgW0RPTUFJTl9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZSxcbiAgICAgICAgW1JFUE9TSVRPUllfTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWUsXG4gICAgICB9LFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5ERUxFVEVEX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHBhY2thZ2UgdmVyc2lvbnMgdGhhdCBkbyBub3QgaGF2ZSBhIGpzaWkgYXNzZW1ibHkgaW4gdGhlIHBhY2thZ2UuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljTm90SnNpaUVuYWJsZWRDb3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgW0RPTUFJTl9PV05FUl9ESU1FTlNJT05dOlxuICAgICAgICAgIHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluT3duZXIgPz8gQXdzLkFDQ09VTlRfSUQsXG4gICAgICAgIFtET01BSU5fTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWUsXG4gICAgICAgIFtSRVBPU0lUT1JZX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lLFxuICAgICAgfSxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuTk9UX0pTSUlfRU5BQkxFRF9DT1VOVCxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -541,7 +541,7 @@ class NpmJs {
|
|
|
541
541
|
}
|
|
542
542
|
exports.NpmJs = NpmJs;
|
|
543
543
|
_a = JSII_RTTI_SYMBOL_1;
|
|
544
|
-
NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.
|
|
544
|
+
NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.432" };
|
|
545
545
|
/**
|
|
546
546
|
* How often 'rate' goes into 'duration' (rounded up)
|
|
547
547
|
*/
|