aws-cdk 2.4.0 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/bin/cdk.js +22 -6
- package/build-info.json +2 -2
- package/lib/api/aws-auth/sdk-provider.d.ts +26 -1
- package/lib/api/aws-auth/sdk-provider.js +4 -4
- package/lib/api/aws-auth/sdk.d.ts +2 -0
- package/lib/api/aws-auth/sdk.js +4 -1
- package/lib/api/bootstrap/deploy-bootstrap.js +14 -3
- package/lib/api/cloudformation-deployments.d.ts +63 -1
- package/lib/api/cloudformation-deployments.js +68 -4
- package/lib/api/cxapp/cloud-assembly.js +5 -5
- package/lib/api/deploy-stack.d.ts +0 -1
- package/lib/api/deploy-stack.js +8 -9
- package/lib/api/{hotswap/evaluate-cloudformation-template.d.ts → evaluate-cloudformation-template.d.ts} +14 -1
- package/lib/api/evaluate-cloudformation-template.js +289 -0
- package/lib/api/hotswap/code-build-projects.d.ts +1 -1
- package/lib/api/hotswap/code-build-projects.js +2 -2
- package/lib/api/hotswap/common.d.ts +0 -6
- package/lib/api/hotswap/common.js +2 -19
- package/lib/api/hotswap/ecs-services.d.ts +1 -1
- package/lib/api/hotswap/ecs-services.js +2 -2
- package/lib/api/hotswap/lambda-functions.d.ts +1 -1
- package/lib/api/hotswap/lambda-functions.js +2 -2
- package/lib/api/hotswap/s3-bucket-deployments.d.ts +1 -1
- package/lib/api/hotswap/s3-bucket-deployments.js +1 -1
- package/lib/api/hotswap/stepfunctions-state-machines.d.ts +1 -1
- package/lib/api/hotswap/stepfunctions-state-machines.js +1 -1
- package/lib/api/hotswap-deployments.js +9 -35
- package/lib/api/logs/find-cloudwatch-logs.d.ts +24 -0
- package/lib/api/logs/find-cloudwatch-logs.js +84 -0
- package/lib/api/logs/logs-monitor.d.ts +53 -0
- package/lib/api/logs/logs-monitor.js +162 -0
- package/lib/api/toolkit-info.d.ts +5 -5
- package/lib/api/toolkit-info.js +10 -10
- package/lib/api/util/cloudformation/stack-activity-monitor.js +22 -22
- package/lib/assets.js +3 -3
- package/lib/cdk-toolkit.d.ts +15 -0
- package/lib/cdk-toolkit.js +30 -20
- package/lib/commands/context.js +7 -7
- package/lib/commands/docs.js +4 -4
- package/lib/commands/doctor.js +6 -6
- package/lib/context-providers/ami.js +2 -2
- package/lib/context-providers/availability-zones.js +2 -2
- package/lib/context-providers/endpoint-service-availability-zones.js +2 -2
- package/lib/context-providers/hosted-zones.js +2 -2
- package/lib/context-providers/keys.js +2 -2
- package/lib/context-providers/load-balancers.js +3 -3
- package/lib/context-providers/security-groups.js +2 -2
- package/lib/context-providers/ssm-parameters.js +2 -2
- package/lib/context-providers/vpcs.js +2 -2
- package/lib/diff.js +3 -3
- package/lib/init.js +14 -14
- package/lib/logging.js +7 -7
- package/lib/os.js +3 -3
- package/lib/plugin.js +4 -4
- package/lib/util/asset-publishing.js +3 -3
- package/lib/util/console-formatters.js +4 -3
- package/lib/version.js +3 -3
- package/npm-shrinkwrap.json +84 -89
- package/package.json +20 -19
- package/test/api/bootstrap2.test.js +2 -3
- package/test/api/cloudformation-deployments.test.js +2 -2
- package/test/api/logs/find-cloudwatch-logs.test.d.ts +1 -0
- package/test/api/logs/find-cloudwatch-logs.test.js +264 -0
- package/test/api/logs/logs-monitor.test.d.ts +1 -0
- package/test/api/logs/logs-monitor.test.js +59 -0
- package/test/api/sdk-provider.test.js +11 -11
- package/test/api/stack-activity-monitor.test.js +13 -13
- package/test/cdk-toolkit.test.js +230 -10
- package/test/context-providers/load-balancers.test.js +4 -4
- package/test/util/cloudformation.test.js +2 -2
- package/test/util/console-formatters.test.js +6 -6
- package/test/util/mock-sdk.d.ts +8 -2
- package/test/util/mock-sdk.js +12 -2
- package/test/util/mock-toolkitinfo.js +2 -2
- package/lib/api/hotswap/evaluate-cloudformation-template.js +0 -247
|
@@ -33,7 +33,7 @@ describe('utilities', () => {
|
|
|
33
33
|
})),
|
|
34
34
|
});
|
|
35
35
|
});
|
|
36
|
-
const elbv2 =
|
|
36
|
+
const elbv2 = (await mockSDK.forEnvironment()).sdk.elbv2();
|
|
37
37
|
const resourceTagsOut = {};
|
|
38
38
|
for await (const tagDescription of load_balancers_1.describeTags(elbv2, Object.keys(resourceTags))) {
|
|
39
39
|
resourceTagsOut[tagDescription.ResourceArn] = tagDescription;
|
|
@@ -56,7 +56,7 @@ describe('utilities', () => {
|
|
|
56
56
|
NextMarker: end < listenerArns.length ? end.toString() : undefined,
|
|
57
57
|
});
|
|
58
58
|
});
|
|
59
|
-
const elbv2 =
|
|
59
|
+
const elbv2 = (await mockSDK.forEnvironment()).sdk.elbv2();
|
|
60
60
|
const listenerArnsFromPages = Array();
|
|
61
61
|
for await (const listener of load_balancers_1.describeListenersByLoadBalancerArn(elbv2, ['arn:load-balancer'])) {
|
|
62
62
|
listenerArnsFromPages.push(listener.ListenerArn);
|
|
@@ -78,7 +78,7 @@ describe('utilities', () => {
|
|
|
78
78
|
NextMarker: end < loadBalancerArns.length ? end.toString() : undefined,
|
|
79
79
|
});
|
|
80
80
|
});
|
|
81
|
-
const elbv2 =
|
|
81
|
+
const elbv2 = (await mockSDK.forEnvironment()).sdk.elbv2();
|
|
82
82
|
const loadBalancerArnsFromPages = (await load_balancers_1.describeLoadBalancers(elbv2, {})).map(l => l.LoadBalancerArn);
|
|
83
83
|
expect(loadBalancerArnsFromPages).toEqual(loadBalancerArns);
|
|
84
84
|
});
|
|
@@ -766,4 +766,4 @@ function mockALBLookup(options) {
|
|
|
766
766
|
cb(null, { Listeners: options.listeners });
|
|
767
767
|
});
|
|
768
768
|
}
|
|
769
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1iYWxhbmNlcnMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvYWQtYmFsYW5jZXJzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyREFBMkQ7QUFFM0Qsb0NBQW9DO0FBQ3BDLCtFQUE4TjtBQUM5TiwrQ0FBbUQ7QUFFbkQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFFdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBZSxFQUFFLENBQUM7QUFJdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ2YsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0lBQ3pCLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuRCxNQUFNLFlBQVksR0FBNkMsRUFBRSxDQUFDO1FBQ2xFLEtBQUssTUFBTSxXQUFXLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2pGLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRztnQkFDMUIsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLElBQUksRUFBRTtvQkFDSixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtpQkFDcEM7YUFDRixDQUFDO1NBQ0g7UUFBQSxDQUFDO1FBRUYsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMsT0FBb0MsRUFBRSxFQUE2QyxFQUFFLEVBQUU7WUFDeEgsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFB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QUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDLE9BQW9DLEVBQUUsRUFBNkMsRUFBRSxFQUFFO1FBQ3hILElBQUksT0FBTyxDQUFDLG9CQUFvQixLQUFLLFNBQVMsRUFBRTtZQUM5QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUMsT0FBeUMsRUFBRSxFQUFrRCxFQUFFLEVBQUU7UUFDdkksSUFBSSxPQUFPLENBQUMseUJBQXlCLEtBQUssU0FBUyxFQUFFO1lBQ25ELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDNUQ7UUFDRCxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBhd3MgZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQgKiBhcyBBV1MgZnJvbSAnYXdzLXNkay1tb2NrJztcbmltcG9ydCB7IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luLCBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4sIHRhZ3NNYXRjaCwgZGVzY3JpYmVMaXN0ZW5lcnNCeUxvYWRCYWxhbmNlckFybiwgZGVzY3JpYmVUYWdzLCBkZXNjcmliZUxvYWRCYWxhbmNlcnMgfSBmcm9tICcuLi8uLi9saWIvY29udGV4dC1wcm92aWRlcnMvbG9hZC1iYWxhbmNlcnMnO1xuaW1wb3J0IHsgTW9ja1Nka1Byb3ZpZGVyIH0gZnJvbSAnLi4vdXRpbC9tb2NrLXNkayc7XG5cbkFXUy5zZXRTREsocmVxdWlyZS5yZXNvbHZlKCdhd3Mtc2RrJykpO1xuXG5jb25zdCBtb2NrU0RLID0gbmV3IE1vY2tTZGtQcm92aWRlcigpO1xuXG50eXBlIEF3c0NhbGxiYWNrPFQ+ID0gKGVycjogRXJyb3IgfCBudWxsLCB2YWw6IFQpID0+IHZvaWQ7XG5cbmFmdGVyRWFjaChkb25lID0+IHtcbiAgQVdTLnJlc3RvcmUoKTtcbiAgZG9uZSgpO1xufSk7XG5cbmRlc2NyaWJlKCd1dGlsaXRpZXMnLCAoKSA9PiB7XG4gIHRlc3QoJ2Rlc2NyaWJlVGFncyB5aWVsZHMgdGFncyBieSBjaHVuaycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZVRhZ3M6IFJlY29yZDxzdHJpbmcsIGF3cy5FTEJ2Mi5UYWdEZXNjcmlwdGlvbj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHJlc291cmNlQXJuIG9mIFsuLi5BcnJheSgxMDApXS5tYXAoKF8sIGkpID0+IGBhcm46bG9hZC1iYWxhbmNlci0ke2l9YCkpIHtcbiAgICAgIHJlc291cmNlVGFnc1tyZXNvdXJjZUFybl0gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiByZXNvdXJjZUFybixcbiAgICAgICAgVGFnczogW1xuICAgICAgICAgIHsgS2V5OiAnbmFtZScsIFZhbHVlOiByZXNvdXJjZUFybiB9LFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlVGFncycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVUYWdzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVUYWdzT3V0cHV0PikgPT4ge1xuICAgICAgZXhwZWN0KF9wYXJhbXMuUmVzb3VyY2VBcm5zLmxlbmd0aCkudG9CZUxlc3NUaGFuT3JFcXVhbCgyMCk7XG5cbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgVGFnRGVzY3JpcHRpb25zOiBfcGFyYW1zLlJlc291cmNlQXJucy5tYXAocmVzb3VyY2VBcm4gPT4gKHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogcmVzb3VyY2VBcm4sXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICduYW1lJywgVmFsdWU6IHJlc291cmNlQXJuIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkpLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBlbGJ2MiA9IGF3YWl0IChhd2FpdCBtb2NrU0RLLmZvckVudmlyb25tZW50KCkpLmVsYnYyKCk7XG5cbiAgICBjb25zdCByZXNvdXJjZVRhZ3NPdXQ6IFJlY29yZDxzdHJpbmcsIGF3cy5FTEJ2Mi5UYWdEZXNjcmlwdGlvbj4gPSB7fTtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHRhZ0Rlc2NyaXB0aW9uIG9mIGRlc2NyaWJlVGFncyhlbGJ2MiwgT2JqZWN0LmtleXMocmVzb3VyY2VUYWdzKSkpIHtcbiAgICAgIHJlc291cmNlVGFnc091dFt0YWdEZXNjcmlwdGlvbi5SZXNvdXJjZUFybiFdID0gdGFnRGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgZXhwZWN0KHJlc291cmNlVGFnc091dCkudG9FcXVhbChyZXNvdXJjZVRhZ3MpO1xuICB9KTtcblxuICB0ZXN0KCdkZXNjcmliZUxpc3RlbmVyc0J5TG9hZEJhbGFuY2VyQXJuIHRyYXZlcnNlcyBwYWdlcycsIGFzeW5jICgpID0+IHtcbiAgICAvLyBhcm46bGlzdGVuZXItMCwgYXJuOmxpc3RlbmVyLTEsIC4uLiwgYXJuOmxpc3RlbmVyLTk5XG4gICAgY29uc3QgbGlzdGVuZXJBcm5zID0gWy4uLkFycmF5KDEwMCldLm1hcCgoXywgaSkgPT4gYGFybjpsaXN0ZW5lci0ke2l9YCk7XG4gICAgZXhwZWN0KGxpc3RlbmVyQXJuc1swXSkudG9FcXVhbCgnYXJuOmxpc3RlbmVyLTAnKTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxpc3RlbmVycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNJbnB1dCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FTEJ2Mi5EZXNjcmliZUxpc3RlbmVyc091dHB1dD4pID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gcGFyc2VJbnQoX3BhcmFtcy5NYXJrZXIgPz8gJzAnKTtcbiAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgMTA7XG4gICAgICBjb25zdCBzbGljZSA9IGxpc3RlbmVyQXJucy5zbGljZShzdGFydCwgZW5kKTtcblxuICAgICAgY2IobnVsbCwge1xuICAgICAgICBMaXN0ZW5lcnM6IHNsaWNlLm1hcChhcm4gPT4gKHtcbiAgICAgICAgICBMaXN0ZW5lckFybjogYXJuLFxuICAgICAgICB9KSksXG4gICAgICAgIE5leHRNYXJrZXI6IGVuZCA8IGxpc3RlbmVyQXJucy5sZW5ndGggPyBlbmQudG9TdHJpbmcoKSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZWxidjIgPSBhd2FpdCAoYXdhaXQgbW9ja1NESy5mb3JFbnZpcm9ubWVudCgpKS5lbGJ2MigpO1xuXG4gICAgY29uc3QgbGlzdGVuZXJBcm5zRnJvbVBhZ2VzID0gQXJyYXk8c3RyaW5nPigpO1xuICAgIGZvciBhd2FpdCAoY29uc3QgbGlzdGVuZXIgb2YgZGVzY3JpYmVMaXN0ZW5lcnNCeUxvYWRCYWxhbmNlckFybihlbGJ2MiwgWydhcm46bG9hZC1iYWxhbmNlciddKSkge1xuICAgICAgbGlzdGVuZXJBcm5zRnJvbVBhZ2VzLnB1c2gobGlzdGVuZXIuTGlzdGVuZXJBcm4hKTtcbiAgICB9XG5cbiAgICBleHBlY3QobGlzdGVuZXJBcm5zRnJvbVBhZ2VzKS50b0VxdWFsKGxpc3RlbmVyQXJucyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2Rlc2NyaWJlTG9hZEJhbGFuY2VycyB0cmF2ZXJzZXMgcGFnZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyQXJucyA9IFsuLi5BcnJheSgxMDApXS5tYXAoKF8sIGkpID0+IGBhcm46bG9hZC1iYWxhbmNlci0ke2l9YCk7XG4gICAgZXhwZWN0KGxvYWRCYWxhbmNlckFybnNbMF0pLnRvRXF1YWwoJ2Fybjpsb2FkLWJhbGFuY2VyLTAnKTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxvYWRCYWxhbmNlcnMnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTG9hZEJhbGFuY2Vyc0lucHV0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVMQnYyLkRlc2NyaWJlTG9hZEJhbGFuY2Vyc091dHB1dD4pID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gcGFyc2VJbnQoX3BhcmFtcy5NYXJrZXIgPz8gJzAnKTtcbiAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgMTA7XG4gICAgICBjb25zdCBzbGljZSA9IGxvYWRCYWxhbmNlckFybnMuc2xpY2Uoc3RhcnQsIGVuZCk7XG5cbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgTG9hZEJhbGFuY2Vyczogc2xpY2UubWFwKGxvYWRCYWxhbmNlckFybiA9PiAoe1xuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogbG9hZEJhbGFuY2VyQXJuLFxuICAgICAgICB9KSksXG4gICAgICAgIE5leHRNYXJrZXI6IGVuZCA8IGxvYWRCYWxhbmNlckFybnMubGVuZ3RoID8gZW5kLnRvU3RyaW5nKCkgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGVsYnYyID0gYXdhaXQgKGF3YWl0IG1vY2tTREsuZm9yRW52aXJvbm1lbnQoKSkuZWxidjIoKTtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXJBcm5zRnJvbVBhZ2VzID0gKGF3YWl0IGRlc2NyaWJlTG9hZEJhbGFuY2VycyhlbGJ2Miwge30pKS5tYXAobCA9PiBsLkxvYWRCYWxhbmNlckFybiEpO1xuXG4gICAgZXhwZWN0KGxvYWRCYWxhbmNlckFybnNGcm9tUGFnZXMpLnRvRXF1YWwobG9hZEJhbGFuY2VyQXJucyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd0YWdzTWF0Y2gnLCAoKSA9PiB7XG4gICAgdGVzdCgnYWxsIHRhZ3MgbWF0Y2gnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0YWdEZXNjcmlwdGlvbiA9IHtcbiAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46d2hhdGV2ZXInLFxuICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVxdWlyZWRUYWdzID0gW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgIF07XG5cbiAgICAgIGV4cGVjdCh0YWdzTWF0Y2godGFnRGVzY3JpcHRpb24sIHJlcXVpcmVkVGFncykpLnRvRXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdleHRyYSB0YWdzIG1hdGNoJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGFnRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiAnYXJuOndoYXRldmVyJyxcbiAgICAgICAgVGFnczogW1xuICAgICAgICAgIHsgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9LFxuICAgICAgICAgIHsgS2V5OiAnb3RoZXInLCBWYWx1ZTogJ3RhZzInIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXF1aXJlZFRhZ3MgPSBbXG4gICAgICAgIHsga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9LFxuICAgICAgXTtcblxuICAgICAgZXhwZWN0KHRhZ3NNYXRjaCh0YWdEZXNjcmlwdGlvbiwgcmVxdWlyZWRUYWdzKSkudG9FcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ25vIHRhZ3MgbWF0Y2hlcyBubyB0YWdzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGFnRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiAnYXJuOndoYXRldmVyJyxcbiAgICAgICAgVGFnczogW10sXG4gICAgICB9O1xuXG4gICAgICBleHBlY3QodGFnc01hdGNoKHRhZ0Rlc2NyaXB0aW9uLCBbXSkpLnRvRXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdvbmUgdGFnIG1hdGNoZXMgb2Ygc2V2ZXJhbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHRhZ0Rlc2NyaXB0aW9uID0ge1xuICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjp3aGF0ZXZlcicsXG4gICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXF1aXJlZFRhZ3MgPSBbXG4gICAgICAgIHsga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9LFxuICAgICAgICB7IGtleTogJ290aGVyJywgdmFsdWU6ICd2YWx1ZScgfSxcbiAgICAgIF07XG5cbiAgICAgIGV4cGVjdCh0YWdzTWF0Y2godGFnRGVzY3JpcHRpb24sIHJlcXVpcmVkVGFncykpLnRvRXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgndW5kZWZpbmVkIHRhZyBkb2VzIG5vdCBlcnJvcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHRhZ0Rlc2NyaXB0aW9uID0ge1xuICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjp3aGF0ZXZlcicsXG4gICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnIH1dLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVxdWlyZWRUYWdzID0gW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgeyBrZXk6ICdvdGhlcicsIHZhbHVlOiAndmFsdWUnIH0sXG4gICAgICBdO1xuXG4gICAgICBleHBlY3QodGFnc01hdGNoKHRhZ0Rlc2NyaXB0aW9uLCByZXF1aXJlZFRhZ3MpKS50b0VxdWFsKGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2xvYWQgYmFsYW5jZXIgY29udGV4dCBwcm92aWRlciBwbHVnaW4nLCAoKSA9PiB7XG4gIHRlc3QoJ2Vycm9ycyB3aGVuIG5vIG1hdGNoZXMgYXJlIGZvdW5kJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9ObyBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbXVsdGlwbGUgbG9hZCBiYWxhbmNlcnMgbWF0Y2gnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgIEROU05hbWU6ICdkbnMxLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zMi5leGFtcGxlLmNvbScsXG4gICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnXSxcbiAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGRlc2NyaWJlVGFnc0V4cGVjdGVkOiB7IFJlc291cmNlQXJuczogWydhcm46bG9hZC1iYWxhbmNlcjEnLCAnYXJuOmxvYWQtYmFsYW5jZXIyJ10gfSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgIFRhZ3M6IFtcbiAgICAgICAgICAgIHsgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMicsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFtcbiAgICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9NdWx0aXBsZSBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgYXJuJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyMSddIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QocmVzdWx0LmlwQWRkcmVzc1R5cGUpLnRvRXF1YWwoJ2lwdjQnKTtcbiAgICBleHBlY3QocmVzdWx0LmxvYWRCYWxhbmNlckFybikudG9FcXVhbCgnYXJuOmxvYWQtYmFsYW5jZXIxJyk7XG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQpLnRvRXF1YWwoJ1oxMjM0Jyk7XG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJEbnNOYW1lKS50b0VxdWFsKCdkbnMuZXhhbXBsZS5jb20nKTtcbiAgICBleHBlY3QocmVzdWx0LnNlY3VyaXR5R3JvdXBJZHMpLnRvRXF1YWwoWydzZy0xMjM0J10pO1xuICAgIGV4cGVjdChyZXN1bHQudnBjSWQpLnRvRXF1YWwoJ3ZwYy0xMjM0Jyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2xvb2tzIHVwIGJ5IHRhZ3MnLCBhc3luYygpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgSXBBZGRyZXNzVHlwZTogJ2lwdjQnLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgRE5TTmFtZTogJ2RuczEuZXhhbXBsZS5jb20nLFxuICAgICAgICAgIENhbm9uaWNhbEhvc3RlZFpvbmVJZDogJ1oxMjM0JyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIEROU05hbWU6ICdkbnMyLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZGVzY3JpYmVUYWdzRXhwZWN0ZWQ6IHsgUmVzb3VyY2VBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyMScsICdhcm46bG9hZC1iYWxhbmNlcjInXSB9LFxuICAgICAgdGFnRGVzY3JpcHRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUYWdzOiBbXG4gICAgICAgICAgICB7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfSxcbiAgICAgICAgICAgIHsgS2V5OiAnc2Vjb25kJywgVmFsdWU6ICd0YWcyJyB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyVGFnczogW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgeyBrZXk6ICdzZWNvbmQnLCB2YWx1ZTogJ3RhZzInIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJBcm4pLnRvRXF1YWwoJ2Fybjpsb2FkLWJhbGFuY2VyMicpO1xuICB9KTtcblxuICB0ZXN0KCdmaWx0ZXJzIGJ5IHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBUeXBlOiAnbmV0d29yaycsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zMS5leGFtcGxlLmNvbScsXG4gICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnXSxcbiAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMicsXG4gICAgICAgICAgRE5TTmFtZTogJ2RuczIuZXhhbXBsZS5jb20nLFxuICAgICAgICAgIENhbm9uaWNhbEhvc3RlZFpvbmVJZDogJ1oxMjM0JyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICB0YWdEZXNjcmlwdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICB9KTtcblxuICAgIGV4cGVjdChsb2FkQmFsYW5jZXIubG9hZEJhbGFuY2VyQXJuKS50b0VxdWFsKCdhcm46bG9hZC1iYWxhbmNlcjInKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2xvYWQgYmFsYW5jZXIgbGlzdGVuZXIgY29udGV4dCBwcm92aWRlciBwbHVnaW4nLCAoKSA9PiB7XG4gIHRlc3QoJ2Vycm9ycyB3aGVuIG5vIGFzc29jaWF0ZWQgbG9hZCBiYWxhbmNlcnMgbWF0Y2gnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgbG9hZEJhbGFuY2VyczogW10sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFt7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfV0sXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvTm8gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbm8gbGlzdGVuZXJzIG1hdGNoJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICBsaXN0ZW5lclBvcnQ6IDQ0MyxcbiAgICAgICAgbGlzdGVuZXJQcm90b2NvbDogY3hzY2hlbWEuTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbC5IVFRQUyxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9ObyBsb2FkIGJhbGFuY2VyIGxpc3RlbmVycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbXVsdGlwbGUgbGlzdGVuZXJzIG1hdGNoJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcicsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lcjInLFxuICAgICAgICAgIFBvcnQ6IDgwLFxuICAgICAgICAgIFByb3RvY29sOiAnSFRUUCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICBsaXN0ZW5lclBvcnQ6IDgwLFxuICAgICAgICBsaXN0ZW5lclByb3RvY29sOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sLkhUVFAsXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvTXVsdGlwbGUgbG9hZCBiYWxhbmNlciBsaXN0ZW5lcnMvaSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2xvb2tzIHVwIGJ5IGxpc3RlbmVyIGFybicsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkOiB7IExpc3RlbmVyQXJuczogWydhcm46bGlzdGVuZXItYXJuJ10gfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4nLFxuICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybiddIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4nLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnLCAnc2ctMjM0NSddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxpc3RlbmVyID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICBsaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4nLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lckFybikudG9FcXVhbCgnYXJuOmxpc3RlbmVyLWFybicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoOTk5KTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTEyMzQnLCAnc2ctMjM0NSddKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGFybicsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnXSB9LFxuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkOiB7IExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnIH0sXG4gICAgICBsaXN0ZW5lcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIC8vIFRoaXMgb25lXG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgUG9ydDogODAsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxpc3RlbmVyID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICBsb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QobGlzdGVuZXIubGlzdGVuZXJBcm4pLnRvRXF1YWwoJ2FybjpsaXN0ZW5lci1hcm4xJyk7XG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyUG9ydCkudG9FcXVhbCg4MCk7XG4gICAgZXhwZWN0KGxpc3RlbmVyLnNlY3VyaXR5R3JvdXBJZHMpLnRvRXF1YWwoWydzZy0xMjM0J10pO1xuICB9KTtcblxuICB0ZXN0KCdsb29rcyB1cCBieSBhc3NvY2lhdGVkIGxvYWQgYmFsYW5jZXIgdGFncycsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiB1bmRlZmluZWQgfSxcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIC8vIFRoaXMgb25lIHNob3VsZCBoYXZlIHRoZSB3cm9uZyB0YWdzXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCcsICdzZy0yMzQ1J10sXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIEV4cGVjdGluZyB0aGlzIG9uZVxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTM0NTYnLCAnc2ctNDU2NyddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZVRhZ3NFeHBlY3RlZDogeyBSZXNvdXJjZUFybnM6IFsnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJ10gfSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBUYWdzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIEV4cGVjdGluZyB0aGlzIG9uZVxuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIGRlc2NyaWJlTGlzdGVuZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicgfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhpcyBvbmVcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4xJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjInLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgY29uc3QgbGlzdGVuZXIgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFtcbiAgICAgICAgeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH0sXG4gICAgICBdLFxuICAgICAgbGlzdGVuZXJQb3J0OiA5OTksXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuMicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoOTk5KTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTM0NTYnLCAnc2ctNDU2NyddKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgbGlzdGVuZXIgcG9ydCBhbmQgcHJvdG8nLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxvYWRCYWxhbmNlcnMnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTG9hZEJhbGFuY2Vyc0lucHV0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVMQnYyLkRlc2NyaWJlTG9hZEJhbGFuY2Vyc091dHB1dD4pID0+IHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKHt9KTtcbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgTG9hZEJhbGFuY2VyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFNob3VsZG4ndCBoYXZlIGFueSBtYXRjaGluZyBsaXN0ZW5lcnNcbiAgICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgICBETlNOYW1lOiAnZG5zMS5leGFtcGxlLmNvbScsXG4gICAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBTaG91bGQgaGF2ZSBhIG1hdGNoaW5nIGxpc3RlbmVyXG4gICAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgICAgRE5TTmFtZTogJ2RuczIuZXhhbXBsZS5jb20nLFxuICAgICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMjM0NSddLFxuICAgICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZVRhZ3MnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlVGFnc0lucHV0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVMQnYyLkRlc2NyaWJlVGFnc091dHB1dD4pID0+IHtcbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgVGFnRGVzY3JpcHRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTGlzdGVuZXJzJywgKHBhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTGlzdGVuZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNPdXRwdXQ+KSA9PiB7XG4gICAgICBpZiAocGFyYW1zLkxvYWRCYWxhbmNlckFybiA9PT0gJ2Fybjpsb2FkLWJhbGFuY2VyMScpIHtcbiAgICAgICAgY2IobnVsbCwge1xuICAgICAgICAgIExpc3RlbmVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgLy8gV3JvbmcgcG9ydCwgd3JvbmcgcHJvdG9jb2wgPT4gbm8gbWF0Y2hcbiAgICAgICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgICAgIFByb3RvY29sOiAnSFRUUCcsXG4gICAgICAgICAgICAgIFBvcnQ6IDgwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHByb3RvY29sLCByaWdodCBwb3J0ID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjMnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ0hUVFBTJyxcbiAgICAgICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHBvcnQsIHJpZ2h0IHByb3RvY29sID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjQnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ1RDUCcsXG4gICAgICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5Mb2FkQmFsYW5jZXJBcm4gPT09ICdhcm46bG9hZC1iYWxhbmNlcjInKSB7XG4gICAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgICBMaXN0ZW5lcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHBvcnQsIHdyb25nIHByb3RvY29sID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjUnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBSaWdodCBwb3J0LCByaWdodCBwcm90b2NvbCA9PiBtYXRjaFxuICAgICAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm42JyxcbiAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ1RDUCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2IobmV3IEVycm9yKGBVbmV4cGVjdGVkIHJlcXVlc3Q6ICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX0nYCksIHt9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBsaXN0ZW5lciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyVGFnczogW3sga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9XSxcbiAgICAgIGxpc3RlbmVyUHJvdG9jb2w6IGN4c2NoZW1hLkxvYWRCYWxhbmNlckxpc3RlbmVyUHJvdG9jb2wuVENQLFxuICAgICAgbGlzdGVuZXJQb3J0OiA0NDMsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuNicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoNDQzKTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTIzNDUnXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2ZpbHRlcnMgYnkgYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgZGVzY3JpYmVMb2FkQmFsYW5jZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuczogdW5kZWZpbmVkIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBUaGlzIG9uZSBoYXMgd3JvbmcgdHlwZSA9PiBubyBtYXRjaFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbXSxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gUmlnaHQgdHlwZSA9PiBtYXRjaFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbXSxcbiAgICAgICAgICBUeXBlOiAnbmV0d29yaycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICB0YWdEZXNjcmlwdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIGRlc2NyaWJlTGlzdGVuZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicgfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMicsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBsaXN0ZW5lciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLk5FVFdPUkssXG4gICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgbGlzdGVuZXJQb3J0OiA0NDMsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuMicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoNDQzKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGlzIHdyb25nIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgZGVzY3JpYmVMaXN0ZW5lcnNFeHBlY3RlZDogeyBMaXN0ZW5lckFybnM6IFsnYXJuOmxpc3RlbmVyLWFybjEnXSB9LFxuICAgICAgbGlzdGVuZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4xJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBQb3J0OiA0NDMsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnXSB9LFxuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhpcyBvbmUgaGFzIHdyb25nIHR5cGUgPT4gbm8gbWF0Y2hcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogW10sXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuTkVUV09SSyxcbiAgICAgICAgbGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvbm8gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGZvdW5kL2kpO1xuICB9KTtcbn0pO1xuXG5pbnRlcmZhY2UgQUxCTG9va3VwT3B0aW9ucyB7XG4gIGRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkPzogYW55O1xuICBsb2FkQmFsYW5jZXJzPzogYXdzLkVMQnYyLkxvYWRCYWxhbmNlcnM7XG4gIGRlc2NyaWJlVGFnc0V4cGVjdGVkPzogYW55O1xuICB0YWdEZXNjcmlwdGlvbnM/OiBhd3MuRUxCdjIuVGFnRGVzY3JpcHRpb25zO1xuICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkPzogYW55O1xuICBsaXN0ZW5lcnM/OiBhd3MuRUxCdjIuTGlzdGVuZXJzO1xufVxuXG5mdW5jdGlvbiBtb2NrQUxCTG9va3VwKG9wdGlvbnM6IEFMQkxvb2t1cE9wdGlvbnMpIHtcbiAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTG9hZEJhbGFuY2VycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzT3V0cHV0PikgPT4ge1xuICAgIGlmIChvcHRpb25zLmRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVMb2FkQmFsYW5jZXJzRXhwZWN0ZWQpO1xuICAgIH1cbiAgICBjYihudWxsLCB7IExvYWRCYWxhbmNlcnM6IG9wdGlvbnMubG9hZEJhbGFuY2VycyB9KTtcbiAgfSk7XG5cbiAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlVGFncycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVUYWdzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVUYWdzT3V0cHV0PikgPT4ge1xuICAgIGlmIChvcHRpb25zLmRlc2NyaWJlVGFnc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVUYWdzRXhwZWN0ZWQpO1xuICAgIH1cbiAgICBjYihudWxsLCB7IFRhZ0Rlc2NyaXB0aW9uczogb3B0aW9ucy50YWdEZXNjcmlwdGlvbnMgfSk7XG4gIH0pO1xuXG4gIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxpc3RlbmVycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNJbnB1dCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FTEJ2Mi5EZXNjcmliZUxpc3RlbmVyc091dHB1dD4pID0+IHtcbiAgICBpZiAob3B0aW9ucy5kZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVMaXN0ZW5lcnNFeHBlY3RlZCk7XG4gICAgfVxuICAgIGNiKG51bGwsIHsgTGlzdGVuZXJzOiBvcHRpb25zLmxpc3RlbmVycyB9KTtcbiAgfSk7XG59XG4iXX0=
|
|
769
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1iYWxhbmNlcnMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvYWQtYmFsYW5jZXJzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyREFBMkQ7QUFFM0Qsb0NBQW9DO0FBQ3BDLCtFQUE4TjtBQUM5TiwrQ0FBbUQ7QUFFbkQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFFdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBZSxFQUFFLENBQUM7QUFJdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ2YsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0lBQ3pCLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuRCxNQUFNLFlBQVksR0FBNkMsRUFBRSxDQUFDO1FBQ2xFLEtBQUssTUFBTSxXQUFXLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2pGLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRztnQkFDMUIsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLElBQUksRUFBRTtvQkFDSixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtpQkFDcEM7YUFDRixDQUFDO1NBQ0g7UUFBQSxDQUFDO1FBRUYsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMsT0FBb0MsRUFBRSxFQUE2QyxFQUFFLEVBQUU7WUFDeEgsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFB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QUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDLE9BQW9DLEVBQUUsRUFBNkMsRUFBRSxFQUFFO1FBQ3hILElBQUksT0FBTyxDQUFDLG9CQUFvQixLQUFLLFNBQVMsRUFBRTtZQUM5QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUMsT0FBeUMsRUFBRSxFQUFrRCxFQUFFLEVBQUU7UUFDdkksSUFBSSxPQUFPLENBQUMseUJBQXlCLEtBQUssU0FBUyxFQUFFO1lBQ25ELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDNUQ7UUFDRCxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBhd3MgZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQgKiBhcyBBV1MgZnJvbSAnYXdzLXNkay1tb2NrJztcbmltcG9ydCB7IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luLCBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4sIHRhZ3NNYXRjaCwgZGVzY3JpYmVMaXN0ZW5lcnNCeUxvYWRCYWxhbmNlckFybiwgZGVzY3JpYmVUYWdzLCBkZXNjcmliZUxvYWRCYWxhbmNlcnMgfSBmcm9tICcuLi8uLi9saWIvY29udGV4dC1wcm92aWRlcnMvbG9hZC1iYWxhbmNlcnMnO1xuaW1wb3J0IHsgTW9ja1Nka1Byb3ZpZGVyIH0gZnJvbSAnLi4vdXRpbC9tb2NrLXNkayc7XG5cbkFXUy5zZXRTREsocmVxdWlyZS5yZXNvbHZlKCdhd3Mtc2RrJykpO1xuXG5jb25zdCBtb2NrU0RLID0gbmV3IE1vY2tTZGtQcm92aWRlcigpO1xuXG50eXBlIEF3c0NhbGxiYWNrPFQ+ID0gKGVycjogRXJyb3IgfCBudWxsLCB2YWw6IFQpID0+IHZvaWQ7XG5cbmFmdGVyRWFjaChkb25lID0+IHtcbiAgQVdTLnJlc3RvcmUoKTtcbiAgZG9uZSgpO1xufSk7XG5cbmRlc2NyaWJlKCd1dGlsaXRpZXMnLCAoKSA9PiB7XG4gIHRlc3QoJ2Rlc2NyaWJlVGFncyB5aWVsZHMgdGFncyBieSBjaHVuaycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZVRhZ3M6IFJlY29yZDxzdHJpbmcsIGF3cy5FTEJ2Mi5UYWdEZXNjcmlwdGlvbj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHJlc291cmNlQXJuIG9mIFsuLi5BcnJheSgxMDApXS5tYXAoKF8sIGkpID0+IGBhcm46bG9hZC1iYWxhbmNlci0ke2l9YCkpIHtcbiAgICAgIHJlc291cmNlVGFnc1tyZXNvdXJjZUFybl0gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiByZXNvdXJjZUFybixcbiAgICAgICAgVGFnczogW1xuICAgICAgICAgIHsgS2V5OiAnbmFtZScsIFZhbHVlOiByZXNvdXJjZUFybiB9LFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlVGFncycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVUYWdzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVUYWdzT3V0cHV0PikgPT4ge1xuICAgICAgZXhwZWN0KF9wYXJhbXMuUmVzb3VyY2VBcm5zLmxlbmd0aCkudG9CZUxlc3NUaGFuT3JFcXVhbCgyMCk7XG5cbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgVGFnRGVzY3JpcHRpb25zOiBfcGFyYW1zLlJlc291cmNlQXJucy5tYXAocmVzb3VyY2VBcm4gPT4gKHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogcmVzb3VyY2VBcm4sXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICduYW1lJywgVmFsdWU6IHJlc291cmNlQXJuIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkpLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBlbGJ2MiA9IChhd2FpdCBtb2NrU0RLLmZvckVudmlyb25tZW50KCkpLnNkay5lbGJ2MigpO1xuXG4gICAgY29uc3QgcmVzb3VyY2VUYWdzT3V0OiBSZWNvcmQ8c3RyaW5nLCBhd3MuRUxCdjIuVGFnRGVzY3JpcHRpb24+ID0ge307XG4gICAgZm9yIGF3YWl0IChjb25zdCB0YWdEZXNjcmlwdGlvbiBvZiBkZXNjcmliZVRhZ3MoZWxidjIsIE9iamVjdC5rZXlzKHJlc291cmNlVGFncykpKSB7XG4gICAgICByZXNvdXJjZVRhZ3NPdXRbdGFnRGVzY3JpcHRpb24uUmVzb3VyY2VBcm4hXSA9IHRhZ0Rlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIGV4cGVjdChyZXNvdXJjZVRhZ3NPdXQpLnRvRXF1YWwocmVzb3VyY2VUYWdzKTtcbiAgfSk7XG5cbiAgdGVzdCgnZGVzY3JpYmVMaXN0ZW5lcnNCeUxvYWRCYWxhbmNlckFybiB0cmF2ZXJzZXMgcGFnZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gYXJuOmxpc3RlbmVyLTAsIGFybjpsaXN0ZW5lci0xLCAuLi4sIGFybjpsaXN0ZW5lci05OVxuICAgIGNvbnN0IGxpc3RlbmVyQXJucyA9IFsuLi5BcnJheSgxMDApXS5tYXAoKF8sIGkpID0+IGBhcm46bGlzdGVuZXItJHtpfWApO1xuICAgIGV4cGVjdChsaXN0ZW5lckFybnNbMF0pLnRvRXF1YWwoJ2FybjpsaXN0ZW5lci0wJyk7XG5cbiAgICBBV1MubW9jaygnRUxCdjInLCAnZGVzY3JpYmVMaXN0ZW5lcnMnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTGlzdGVuZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNPdXRwdXQ+KSA9PiB7XG4gICAgICBjb25zdCBzdGFydCA9IHBhcnNlSW50KF9wYXJhbXMuTWFya2VyID8/ICcwJyk7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIDEwO1xuICAgICAgY29uc3Qgc2xpY2UgPSBsaXN0ZW5lckFybnMuc2xpY2Uoc3RhcnQsIGVuZCk7XG5cbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgTGlzdGVuZXJzOiBzbGljZS5tYXAoYXJuID0+ICh7XG4gICAgICAgICAgTGlzdGVuZXJBcm46IGFybixcbiAgICAgICAgfSkpLFxuICAgICAgICBOZXh0TWFya2VyOiBlbmQgPCBsaXN0ZW5lckFybnMubGVuZ3RoID8gZW5kLnRvU3RyaW5nKCkgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGVsYnYyID0gKGF3YWl0IG1vY2tTREsuZm9yRW52aXJvbm1lbnQoKSkuc2RrLmVsYnYyKCk7XG5cbiAgICBjb25zdCBsaXN0ZW5lckFybnNGcm9tUGFnZXMgPSBBcnJheTxzdHJpbmc+KCk7XG4gICAgZm9yIGF3YWl0IChjb25zdCBsaXN0ZW5lciBvZiBkZXNjcmliZUxpc3RlbmVyc0J5TG9hZEJhbGFuY2VyQXJuKGVsYnYyLCBbJ2Fybjpsb2FkLWJhbGFuY2VyJ10pKSB7XG4gICAgICBsaXN0ZW5lckFybnNGcm9tUGFnZXMucHVzaChsaXN0ZW5lci5MaXN0ZW5lckFybiEpO1xuICAgIH1cblxuICAgIGV4cGVjdChsaXN0ZW5lckFybnNGcm9tUGFnZXMpLnRvRXF1YWwobGlzdGVuZXJBcm5zKTtcbiAgfSk7XG5cbiAgdGVzdCgnZGVzY3JpYmVMb2FkQmFsYW5jZXJzIHRyYXZlcnNlcyBwYWdlcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXJBcm5zID0gWy4uLkFycmF5KDEwMCldLm1hcCgoXywgaSkgPT4gYGFybjpsb2FkLWJhbGFuY2VyLSR7aX1gKTtcbiAgICBleHBlY3QobG9hZEJhbGFuY2VyQXJuc1swXSkudG9FcXVhbCgnYXJuOmxvYWQtYmFsYW5jZXItMCcpO1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTG9hZEJhbGFuY2VycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzT3V0cHV0PikgPT4ge1xuICAgICAgY29uc3Qgc3RhcnQgPSBwYXJzZUludChfcGFyYW1zLk1hcmtlciA/PyAnMCcpO1xuICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyAxMDtcbiAgICAgIGNvbnN0IHNsaWNlID0gbG9hZEJhbGFuY2VyQXJucy5zbGljZShzdGFydCwgZW5kKTtcblxuICAgICAgY2IobnVsbCwge1xuICAgICAgICBMb2FkQmFsYW5jZXJzOiBzbGljZS5tYXAobG9hZEJhbGFuY2VyQXJuID0+ICh7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiBsb2FkQmFsYW5jZXJBcm4sXG4gICAgICAgIH0pKSxcbiAgICAgICAgTmV4dE1hcmtlcjogZW5kIDwgbG9hZEJhbGFuY2VyQXJucy5sZW5ndGggPyBlbmQudG9TdHJpbmcoKSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZWxidjIgPSAoYXdhaXQgbW9ja1NESy5mb3JFbnZpcm9ubWVudCgpKS5zZGsuZWxidjIoKTtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXJBcm5zRnJvbVBhZ2VzID0gKGF3YWl0IGRlc2NyaWJlTG9hZEJhbGFuY2VycyhlbGJ2Miwge30pKS5tYXAobCA9PiBsLkxvYWRCYWxhbmNlckFybiEpO1xuXG4gICAgZXhwZWN0KGxvYWRCYWxhbmNlckFybnNGcm9tUGFnZXMpLnRvRXF1YWwobG9hZEJhbGFuY2VyQXJucyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd0YWdzTWF0Y2gnLCAoKSA9PiB7XG4gICAgdGVzdCgnYWxsIHRhZ3MgbWF0Y2gnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0YWdEZXNjcmlwdGlvbiA9IHtcbiAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46d2hhdGV2ZXInLFxuICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVxdWlyZWRUYWdzID0gW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgIF07XG5cbiAgICAgIGV4cGVjdCh0YWdzTWF0Y2godGFnRGVzY3JpcHRpb24sIHJlcXVpcmVkVGFncykpLnRvRXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdleHRyYSB0YWdzIG1hdGNoJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGFnRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiAnYXJuOndoYXRldmVyJyxcbiAgICAgICAgVGFnczogW1xuICAgICAgICAgIHsgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9LFxuICAgICAgICAgIHsgS2V5OiAnb3RoZXInLCBWYWx1ZTogJ3RhZzInIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXF1aXJlZFRhZ3MgPSBbXG4gICAgICAgIHsga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9LFxuICAgICAgXTtcblxuICAgICAgZXhwZWN0KHRhZ3NNYXRjaCh0YWdEZXNjcmlwdGlvbiwgcmVxdWlyZWRUYWdzKSkudG9FcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ25vIHRhZ3MgbWF0Y2hlcyBubyB0YWdzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGFnRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIFJlc291cmNlQXJuOiAnYXJuOndoYXRldmVyJyxcbiAgICAgICAgVGFnczogW10sXG4gICAgICB9O1xuXG4gICAgICBleHBlY3QodGFnc01hdGNoKHRhZ0Rlc2NyaXB0aW9uLCBbXSkpLnRvRXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdvbmUgdGFnIG1hdGNoZXMgb2Ygc2V2ZXJhbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHRhZ0Rlc2NyaXB0aW9uID0ge1xuICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjp3aGF0ZXZlcicsXG4gICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXF1aXJlZFRhZ3MgPSBbXG4gICAgICAgIHsga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9LFxuICAgICAgICB7IGtleTogJ290aGVyJywgdmFsdWU6ICd2YWx1ZScgfSxcbiAgICAgIF07XG5cbiAgICAgIGV4cGVjdCh0YWdzTWF0Y2godGFnRGVzY3JpcHRpb24sIHJlcXVpcmVkVGFncykpLnRvRXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgndW5kZWZpbmVkIHRhZyBkb2VzIG5vdCBlcnJvcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHRhZ0Rlc2NyaXB0aW9uID0ge1xuICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjp3aGF0ZXZlcicsXG4gICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnIH1dLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVxdWlyZWRUYWdzID0gW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgeyBrZXk6ICdvdGhlcicsIHZhbHVlOiAndmFsdWUnIH0sXG4gICAgICBdO1xuXG4gICAgICBleHBlY3QodGFnc01hdGNoKHRhZ0Rlc2NyaXB0aW9uLCByZXF1aXJlZFRhZ3MpKS50b0VxdWFsKGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2xvYWQgYmFsYW5jZXIgY29udGV4dCBwcm92aWRlciBwbHVnaW4nLCAoKSA9PiB7XG4gIHRlc3QoJ2Vycm9ycyB3aGVuIG5vIG1hdGNoZXMgYXJlIGZvdW5kJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9ObyBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbXVsdGlwbGUgbG9hZCBiYWxhbmNlcnMgbWF0Y2gnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgIEROU05hbWU6ICdkbnMxLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zMi5leGFtcGxlLmNvbScsXG4gICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnXSxcbiAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGRlc2NyaWJlVGFnc0V4cGVjdGVkOiB7IFJlc291cmNlQXJuczogWydhcm46bG9hZC1iYWxhbmNlcjEnLCAnYXJuOmxvYWQtYmFsYW5jZXIyJ10gfSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgIFRhZ3M6IFtcbiAgICAgICAgICAgIHsgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMicsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFtcbiAgICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9NdWx0aXBsZSBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgYXJuJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyMSddIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QocmVzdWx0LmlwQWRkcmVzc1R5cGUpLnRvRXF1YWwoJ2lwdjQnKTtcbiAgICBleHBlY3QocmVzdWx0LmxvYWRCYWxhbmNlckFybikudG9FcXVhbCgnYXJuOmxvYWQtYmFsYW5jZXIxJyk7XG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQpLnRvRXF1YWwoJ1oxMjM0Jyk7XG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJEbnNOYW1lKS50b0VxdWFsKCdkbnMuZXhhbXBsZS5jb20nKTtcbiAgICBleHBlY3QocmVzdWx0LnNlY3VyaXR5R3JvdXBJZHMpLnRvRXF1YWwoWydzZy0xMjM0J10pO1xuICAgIGV4cGVjdChyZXN1bHQudnBjSWQpLnRvRXF1YWwoJ3ZwYy0xMjM0Jyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2xvb2tzIHVwIGJ5IHRhZ3MnLCBhc3luYygpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgSXBBZGRyZXNzVHlwZTogJ2lwdjQnLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgRE5TTmFtZTogJ2RuczEuZXhhbXBsZS5jb20nLFxuICAgICAgICAgIENhbm9uaWNhbEhvc3RlZFpvbmVJZDogJ1oxMjM0JyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIEROU05hbWU6ICdkbnMyLmV4YW1wbGUuY29tJyxcbiAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFZwY0lkOiAndnBjLTEyMzQnLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZGVzY3JpYmVUYWdzRXhwZWN0ZWQ6IHsgUmVzb3VyY2VBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyMScsICdhcm46bG9hZC1iYWxhbmNlcjInXSB9LFxuICAgICAgdGFnRGVzY3JpcHRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNvdXJjZUFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUYWdzOiBbXG4gICAgICAgICAgICB7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfSxcbiAgICAgICAgICAgIHsgS2V5OiAnc2Vjb25kJywgVmFsdWU6ICd0YWcyJyB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyVGFnczogW1xuICAgICAgICB7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfSxcbiAgICAgICAgeyBrZXk6ICdzZWNvbmQnLCB2YWx1ZTogJ3RhZzInIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5sb2FkQmFsYW5jZXJBcm4pLnRvRXF1YWwoJ2Fybjpsb2FkLWJhbGFuY2VyMicpO1xuICB9KTtcblxuICB0ZXN0KCdmaWx0ZXJzIGJ5IHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBUeXBlOiAnbmV0d29yaycsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBETlNOYW1lOiAnZG5zMS5leGFtcGxlLmNvbScsXG4gICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnXSxcbiAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMicsXG4gICAgICAgICAgRE5TTmFtZTogJ2RuczIuZXhhbXBsZS5jb20nLFxuICAgICAgICAgIENhbm9uaWNhbEhvc3RlZFpvbmVJZDogJ1oxMjM0JyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICB0YWdEZXNjcmlwdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIxJyxcbiAgICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICB9KTtcblxuICAgIGV4cGVjdChsb2FkQmFsYW5jZXIubG9hZEJhbGFuY2VyQXJuKS50b0VxdWFsKCdhcm46bG9hZC1iYWxhbmNlcjInKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2xvYWQgYmFsYW5jZXIgbGlzdGVuZXIgY29udGV4dCBwcm92aWRlciBwbHVnaW4nLCAoKSA9PiB7XG4gIHRlc3QoJ2Vycm9ycyB3aGVuIG5vIGFzc29jaWF0ZWQgbG9hZCBiYWxhbmNlcnMgbWF0Y2gnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgbG9hZEJhbGFuY2VyczogW10sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFt7IGtleTogJ3NvbWUnLCB2YWx1ZTogJ3RhZycgfV0sXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvTm8gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbm8gbGlzdGVuZXJzIG1hdGNoJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgICAgbG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICBsaXN0ZW5lclBvcnQ6IDQ0MyxcbiAgICAgICAgbGlzdGVuZXJQcm90b2NvbDogY3hzY2hlbWEuTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbC5IVFRQUyxcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KC9ObyBsb2FkIGJhbGFuY2VyIGxpc3RlbmVycyBmb3VuZC9pKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gbXVsdGlwbGUgbGlzdGVuZXJzIG1hdGNoJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgICBtb2NrQUxCTG9va3VwKHtcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcicsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBUYWdzOiBbeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXInLFxuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lcjInLFxuICAgICAgICAgIFBvcnQ6IDgwLFxuICAgICAgICAgIFByb3RvY29sOiAnSFRUUCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgICBsaXN0ZW5lclBvcnQ6IDgwLFxuICAgICAgICBsaXN0ZW5lclByb3RvY29sOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sLkhUVFAsXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvTXVsdGlwbGUgbG9hZCBiYWxhbmNlciBsaXN0ZW5lcnMvaSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2xvb2tzIHVwIGJ5IGxpc3RlbmVyIGFybicsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkOiB7IExpc3RlbmVyQXJuczogWydhcm46bGlzdGVuZXItYXJuJ10gfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4nLFxuICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybiddIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4nLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTEyMzQnLCAnc2ctMjM0NSddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxpc3RlbmVyID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICBsaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4nLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lckFybikudG9FcXVhbCgnYXJuOmxpc3RlbmVyLWFybicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoOTk5KTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTEyMzQnLCAnc2ctMjM0NSddKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGFybicsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnXSB9LFxuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkOiB7IExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnIH0sXG4gICAgICBsaXN0ZW5lcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIC8vIFRoaXMgb25lXG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgUG9ydDogODAsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGxpc3RlbmVyID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgYWNjb3VudDogJzEyMzQnLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuQVBQTElDQVRJT04sXG4gICAgICBsb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3QobGlzdGVuZXIubGlzdGVuZXJBcm4pLnRvRXF1YWwoJ2FybjpsaXN0ZW5lci1hcm4xJyk7XG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyUG9ydCkudG9FcXVhbCg4MCk7XG4gICAgZXhwZWN0KGxpc3RlbmVyLnNlY3VyaXR5R3JvdXBJZHMpLnRvRXF1YWwoWydzZy0xMjM0J10pO1xuICB9KTtcblxuICB0ZXN0KCdsb29rcyB1cCBieSBhc3NvY2lhdGVkIGxvYWQgYmFsYW5jZXIgdGFncycsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFByb3ZpZGVyUGx1Z2luKG1vY2tTREspO1xuXG4gICAgbW9ja0FMQkxvb2t1cCh7XG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiB1bmRlZmluZWQgfSxcbiAgICAgIGxvYWRCYWxhbmNlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIC8vIFRoaXMgb25lIHNob3VsZCBoYXZlIHRoZSB3cm9uZyB0YWdzXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMTIzNCcsICdzZy0yMzQ1J10sXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIEV4cGVjdGluZyB0aGlzIG9uZVxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbJ3NnLTM0NTYnLCAnc2ctNDU2NyddLFxuICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZVRhZ3NFeHBlY3RlZDogeyBSZXNvdXJjZUFybnM6IFsnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJ10gfSxcbiAgICAgIHRhZ0Rlc2NyaXB0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBUYWdzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIEV4cGVjdGluZyB0aGlzIG9uZVxuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgVGFnczogW1xuICAgICAgICAgICAgeyBLZXk6ICdzb21lJywgVmFsdWU6ICd0YWcnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIGRlc2NyaWJlTGlzdGVuZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicgfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhpcyBvbmVcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4xJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4yJyxcbiAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjInLFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgY29uc3QgbGlzdGVuZXIgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgbG9hZEJhbGFuY2VyVHlwZTogY3hzY2hlbWEuTG9hZEJhbGFuY2VyVHlwZS5BUFBMSUNBVElPTixcbiAgICAgIGxvYWRCYWxhbmNlclRhZ3M6IFtcbiAgICAgICAgeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH0sXG4gICAgICBdLFxuICAgICAgbGlzdGVuZXJQb3J0OiA5OTksXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuMicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoOTk5KTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTM0NTYnLCAnc2ctNDU2NyddKTtcbiAgfSk7XG5cbiAgdGVzdCgnbG9va3MgdXAgYnkgbGlzdGVuZXIgcG9ydCBhbmQgcHJvdG8nLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxvYWRCYWxhbmNlcnMnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTG9hZEJhbGFuY2Vyc0lucHV0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVMQnYyLkRlc2NyaWJlTG9hZEJhbGFuY2Vyc091dHB1dD4pID0+IHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKHt9KTtcbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgTG9hZEJhbGFuY2VyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFNob3VsZG4ndCBoYXZlIGFueSBtYXRjaGluZyBsaXN0ZW5lcnNcbiAgICAgICAgICAgIElwQWRkcmVzc1R5cGU6ICdpcHY0JyxcbiAgICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgICBETlNOYW1lOiAnZG5zMS5leGFtcGxlLmNvbScsXG4gICAgICAgICAgICBDYW5vbmljYWxIb3N0ZWRab25lSWQ6ICdaMTIzNCcsXG4gICAgICAgICAgICBTZWN1cml0eUdyb3VwczogWydzZy0xMjM0J10sXG4gICAgICAgICAgICBWcGNJZDogJ3ZwYy0xMjM0JyxcbiAgICAgICAgICAgIFR5cGU6ICdhcHBsaWNhdGlvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBTaG91bGQgaGF2ZSBhIG1hdGNoaW5nIGxpc3RlbmVyXG4gICAgICAgICAgICBJcEFkZHJlc3NUeXBlOiAnaXB2NCcsXG4gICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgICAgRE5TTmFtZTogJ2RuczIuZXhhbXBsZS5jb20nLFxuICAgICAgICAgICAgQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiAnWjEyMzQnLFxuICAgICAgICAgICAgU2VjdXJpdHlHcm91cHM6IFsnc2ctMjM0NSddLFxuICAgICAgICAgICAgVnBjSWQ6ICd2cGMtMTIzNCcsXG4gICAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZVRhZ3MnLCAoX3BhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlVGFnc0lucHV0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLkVMQnYyLkRlc2NyaWJlVGFnc091dHB1dD4pID0+IHtcbiAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgVGFnRGVzY3JpcHRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgUmVzb3VyY2VBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICAgIFRhZ3M6IFt7IEtleTogJ3NvbWUnLCBWYWx1ZTogJ3RhZycgfV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTGlzdGVuZXJzJywgKHBhcmFtczogYXdzLkVMQnYyLkRlc2NyaWJlTGlzdGVuZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNPdXRwdXQ+KSA9PiB7XG4gICAgICBpZiAocGFyYW1zLkxvYWRCYWxhbmNlckFybiA9PT0gJ2Fybjpsb2FkLWJhbGFuY2VyMScpIHtcbiAgICAgICAgY2IobnVsbCwge1xuICAgICAgICAgIExpc3RlbmVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgLy8gV3JvbmcgcG9ydCwgd3JvbmcgcHJvdG9jb2wgPT4gbm8gbWF0Y2hcbiAgICAgICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyMScsXG4gICAgICAgICAgICAgIFByb3RvY29sOiAnSFRUUCcsXG4gICAgICAgICAgICAgIFBvcnQ6IDgwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHByb3RvY29sLCByaWdodCBwb3J0ID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjMnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ0hUVFBTJyxcbiAgICAgICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHBvcnQsIHJpZ2h0IHByb3RvY29sID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjQnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjEnLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ1RDUCcsXG4gICAgICAgICAgICAgIFBvcnQ6IDk5OSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5Mb2FkQmFsYW5jZXJBcm4gPT09ICdhcm46bG9hZC1iYWxhbmNlcjInKSB7XG4gICAgICAgIGNiKG51bGwsIHtcbiAgICAgICAgICBMaXN0ZW5lcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIFdyb25nIHBvcnQsIHdyb25nIHByb3RvY29sID0+IG5vIG1hdGNoXG4gICAgICAgICAgICAgIExpc3RlbmVyQXJuOiAnYXJuOmxpc3RlbmVyLWFybjUnLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlcjInLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ0hUVFAnLFxuICAgICAgICAgICAgICBQb3J0OiA4MCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBSaWdodCBwb3J0LCByaWdodCBwcm90b2NvbCA9PiBtYXRjaFxuICAgICAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm42JyxcbiAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXIyJyxcbiAgICAgICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICAgICAgICBQcm90b2NvbDogJ1RDUCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2IobmV3IEVycm9yKGBVbmV4cGVjdGVkIHJlcXVlc3Q6ICR7SlNPTi5zdHJpbmdpZnkocGFyYW1zKX0nYCksIHt9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBsaXN0ZW5lciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLkFQUExJQ0FUSU9OLFxuICAgICAgbG9hZEJhbGFuY2VyVGFnczogW3sga2V5OiAnc29tZScsIHZhbHVlOiAndGFnJyB9XSxcbiAgICAgIGxpc3RlbmVyUHJvdG9jb2w6IGN4c2NoZW1hLkxvYWRCYWxhbmNlckxpc3RlbmVyUHJvdG9jb2wuVENQLFxuICAgICAgbGlzdGVuZXJQb3J0OiA0NDMsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuNicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoNDQzKTtcbiAgICBleHBlY3QobGlzdGVuZXIuc2VjdXJpdHlHcm91cElkcykudG9FcXVhbChbJ3NnLTIzNDUnXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2ZpbHRlcnMgYnkgYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgZGVzY3JpYmVMb2FkQmFsYW5jZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuczogdW5kZWZpbmVkIH0sXG4gICAgICBsb2FkQmFsYW5jZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBUaGlzIG9uZSBoYXMgd3JvbmcgdHlwZSA9PiBubyBtYXRjaFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbXSxcbiAgICAgICAgICBUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gUmlnaHQgdHlwZSA9PiBtYXRjaFxuICAgICAgICAgIExvYWRCYWxhbmNlckFybjogJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjInLFxuICAgICAgICAgIFNlY3VyaXR5R3JvdXBzOiBbXSxcbiAgICAgICAgICBUeXBlOiAnbmV0d29yaycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICB0YWdEZXNjcmlwdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMScsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFJlc291cmNlQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgVGFnczogW3sgS2V5OiAnc29tZScsIFZhbHVlOiAndGFnJyB9XSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG5cbiAgICAgIGRlc2NyaWJlTGlzdGVuZXJzRXhwZWN0ZWQ6IHsgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicgfSxcbiAgICAgIGxpc3RlbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgTGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMicsXG4gICAgICAgICAgTG9hZEJhbGFuY2VyQXJuOiAnYXJuOmxvYWQtYmFsYW5jZXItYXJuMicsXG4gICAgICAgICAgUG9ydDogNDQzLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBsaXN0ZW5lciA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJUeXBlLk5FVFdPUkssXG4gICAgICBsb2FkQmFsYW5jZXJUYWdzOiBbeyBrZXk6ICdzb21lJywgdmFsdWU6ICd0YWcnIH1dLFxuICAgICAgbGlzdGVuZXJQb3J0OiA0NDMsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGxpc3RlbmVyLmxpc3RlbmVyQXJuKS50b0VxdWFsKCdhcm46bGlzdGVuZXItYXJuMicpO1xuICAgIGV4cGVjdChsaXN0ZW5lci5saXN0ZW5lclBvcnQpLnRvRXF1YWwoNDQzKTtcbiAgfSk7XG5cbiAgdGVzdCgnZXJyb3JzIHdoZW4gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGlzIHdyb25nIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICAgIG1vY2tBTEJMb29rdXAoe1xuICAgICAgZGVzY3JpYmVMaXN0ZW5lcnNFeHBlY3RlZDogeyBMaXN0ZW5lckFybnM6IFsnYXJuOmxpc3RlbmVyLWFybjEnXSB9LFxuICAgICAgbGlzdGVuZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMaXN0ZW5lckFybjogJ2FybjpsaXN0ZW5lci1hcm4xJyxcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBQb3J0OiA0NDMsXG4gICAgICAgIH0sXG4gICAgICBdLFxuXG4gICAgICBkZXNjcmliZUxvYWRCYWxhbmNlcnNFeHBlY3RlZDogeyBMb2FkQmFsYW5jZXJBcm5zOiBbJ2Fybjpsb2FkLWJhbGFuY2VyLWFybjEnXSB9LFxuICAgICAgbG9hZEJhbGFuY2VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gVGhpcyBvbmUgaGFzIHdyb25nIHR5cGUgPT4gbm8gbWF0Y2hcbiAgICAgICAgICBMb2FkQmFsYW5jZXJBcm46ICdhcm46bG9hZC1iYWxhbmNlci1hcm4xJyxcbiAgICAgICAgICBTZWN1cml0eUdyb3VwczogW10sXG4gICAgICAgICAgVHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IGN4c2NoZW1hLkxvYWRCYWxhbmNlclR5cGUuTkVUV09SSyxcbiAgICAgICAgbGlzdGVuZXJBcm46ICdhcm46bGlzdGVuZXItYXJuMScsXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygvbm8gYXNzb2NpYXRlZCBsb2FkIGJhbGFuY2VyIGZvdW5kL2kpO1xuICB9KTtcbn0pO1xuXG5pbnRlcmZhY2UgQUxCTG9va3VwT3B0aW9ucyB7XG4gIGRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkPzogYW55O1xuICBsb2FkQmFsYW5jZXJzPzogYXdzLkVMQnYyLkxvYWRCYWxhbmNlcnM7XG4gIGRlc2NyaWJlVGFnc0V4cGVjdGVkPzogYW55O1xuICB0YWdEZXNjcmlwdGlvbnM/OiBhd3MuRUxCdjIuVGFnRGVzY3JpcHRpb25zO1xuICBkZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkPzogYW55O1xuICBsaXN0ZW5lcnM/OiBhd3MuRUxCdjIuTGlzdGVuZXJzO1xufVxuXG5mdW5jdGlvbiBtb2NrQUxCTG9va3VwKG9wdGlvbnM6IEFMQkxvb2t1cE9wdGlvbnMpIHtcbiAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlTG9hZEJhbGFuY2VycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVMb2FkQmFsYW5jZXJzT3V0cHV0PikgPT4ge1xuICAgIGlmIChvcHRpb25zLmRlc2NyaWJlTG9hZEJhbGFuY2Vyc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVMb2FkQmFsYW5jZXJzRXhwZWN0ZWQpO1xuICAgIH1cbiAgICBjYihudWxsLCB7IExvYWRCYWxhbmNlcnM6IG9wdGlvbnMubG9hZEJhbGFuY2VycyB9KTtcbiAgfSk7XG5cbiAgQVdTLm1vY2soJ0VMQnYyJywgJ2Rlc2NyaWJlVGFncycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVUYWdzSW5wdXQsIGNiOiBBd3NDYWxsYmFjazxhd3MuRUxCdjIuRGVzY3JpYmVUYWdzT3V0cHV0PikgPT4ge1xuICAgIGlmIChvcHRpb25zLmRlc2NyaWJlVGFnc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVUYWdzRXhwZWN0ZWQpO1xuICAgIH1cbiAgICBjYihudWxsLCB7IFRhZ0Rlc2NyaXB0aW9uczogb3B0aW9ucy50YWdEZXNjcmlwdGlvbnMgfSk7XG4gIH0pO1xuXG4gIEFXUy5tb2NrKCdFTEJ2MicsICdkZXNjcmliZUxpc3RlbmVycycsIChfcGFyYW1zOiBhd3MuRUxCdjIuRGVzY3JpYmVMaXN0ZW5lcnNJbnB1dCwgY2I6IEF3c0NhbGxiYWNrPGF3cy5FTEJ2Mi5EZXNjcmliZUxpc3RlbmVyc091dHB1dD4pID0+IHtcbiAgICBpZiAob3B0aW9ucy5kZXNjcmliZUxpc3RlbmVyc0V4cGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV4cGVjdChfcGFyYW1zKS50b0VxdWFsKG9wdGlvbnMuZGVzY3JpYmVMaXN0ZW5lcnNFeHBlY3RlZCk7XG4gICAgfVxuICAgIGNiKG51bGwsIHsgTGlzdGVuZXJzOiBvcHRpb25zLmxpc3RlbmVycyB9KTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -19,7 +19,7 @@ beforeEach(async () => {
|
|
|
19
19
|
.mockImplementation(() => ({ Stacks: [] })),
|
|
20
20
|
};
|
|
21
21
|
sdkProvider.stubCloudFormation(cfnMocks);
|
|
22
|
-
cfn = (await sdkProvider.forEnvironment()).cloudFormation();
|
|
22
|
+
cfn = (await sdkProvider.forEnvironment()).sdk.cloudFormation();
|
|
23
23
|
});
|
|
24
24
|
test('A non-existent stack pretends to have an empty template', async () => {
|
|
25
25
|
// WHEN
|
|
@@ -141,4 +141,4 @@ function makeParams(defaultValue, hasPrevValue, override) {
|
|
|
141
141
|
const stackParams = params.updateExisting({ [PARAM]: override ? OVERRIDE : undefined }, prevParams);
|
|
142
142
|
return { apiParameters: stackParams.apiParameters, changed: stackParams.hasChanges(prevParams) };
|
|
143
143
|
}
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmb3JtYXRpb24udGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsb3VkZm9ybWF0aW9uLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw0Q0FBeUQ7QUFDekQsc0VBQTRGO0FBQzVGLHlDQUFnRjtBQUVoRixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUM7QUFDN0IsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDO0FBQzdCLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQztBQUUvQixNQUFNLFlBQVksR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQ3ZFLE1BQU0sWUFBWSxHQUFHLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUVyRSxJQUFJLFdBQTRCLENBQUM7QUFDakMsSUFBSSxRQUErRCxDQUFDO0FBQ3BFLElBQUksR0FBdUIsQ0FBQztBQUM1QixVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDcEIsV0FBVyxHQUFHLElBQUksMEJBQWUsRUFBRSxDQUFDO0lBRXBDLFFBQVEsR0FBRztRQUNULGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLGtCQUFrQjthQUNqQixrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDOUMsQ0FBQztJQUNGLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFlLENBQUMsQ0FBQztJQUNoRCxHQUFHLEdBQUcsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQzlELENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHlEQUF5RCxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ3pFLE9BQU87SUFDUCxNQUFNLEtBQUssR0FBRyxNQUFNLG9DQUFtQixD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QVUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDLENBQUM7QUFFSCxTQUFTLFVBQVUsQ0FBQyxZQUFxQixFQUFFLFlBQXFCLEVBQUUsUUFBaUI7SUFDakYsTUFBTSxNQUFNLEdBQUcsbUNBQWtCLENBQUMsWUFBWSxDQUFDO1FBQzdDLFVBQVUsRUFBRTtZQUNWLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQzVDO1NBQ0Y7S0FDRixDQUFDLENBQUM7SUFDSCxNQUFNLFVBQVUsR0FBMkIsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNsRixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFcEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7QUFDbkcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNTTVBBUkFNX05PX0lOVkFMSURBVEUgfSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25TdGFjaywgVGVtcGxhdGVQYXJhbWV0ZXJzIH0gZnJvbSAnLi4vLi4vbGliL2FwaS91dGlsL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IE1vY2tlZE9iamVjdCwgTW9ja1Nka1Byb3ZpZGVyLCBTeW5jSGFuZGxlclN1YnNldE9mIH0gZnJvbSAnLi9tb2NrLXNkayc7XG5cbmNvbnN0IFBBUkFNID0gJ1RoZVBhcmFtZXRlcic7XG5jb25zdCBERUZBVUxUID0gJ1RoZURlZmF1bHQnO1xuY29uc3QgT1ZFUlJJREUgPSAnVGhlT3ZlcnJpZGUnO1xuXG5jb25zdCBVU0VfT1ZFUlJJREUgPSB7IFBhcmFtZXRlcktleTogUEFSQU0sIFBhcmFtZXRlclZhbHVlOiBPVkVSUklERSB9O1xuY29uc3QgVVNFX1BSRVZJT1VTID0geyBQYXJhbWV0ZXJLZXk6IFBBUkFNLCBVc2VQcmV2aW91c1ZhbHVlOiB0cnVlIH07XG5cbmxldCBzZGtQcm92aWRlcjogTW9ja1Nka1Byb3ZpZGVyO1xubGV0IGNmbk1vY2tzOiBNb2NrZWRPYmplY3Q8U3luY0hhbmRsZXJTdWJzZXRPZjxBV1MuQ2xvdWRGb3JtYXRpb24+PjtcbmxldCBjZm46IEFXUy5DbG91ZEZvcm1hdGlvbjtcbmJlZm9yZUVhY2goYXN5bmMgKCkgPT4ge1xuICBzZGtQcm92aWRlciA9IG5ldyBNb2NrU2RrUHJvdmlkZXIoKTtcblxuICBjZm5Nb2NrcyA9IHtcbiAgICBkZXNjcmliZVN0YWNrczogamVzdC5mbigpXG4gICAgICAvLyBObyBzdGFja3MgZXhpc3RcbiAgICAgIC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHsgU3RhY2tzOiBbXSB9KSksXG4gIH07XG4gIHNka1Byb3ZpZGVyLnN0dWJDbG91ZEZvcm1hdGlvbihjZm5Nb2NrcyBhcyBhbnkpO1xuICBjZm4gPSAoYXdhaXQgc2RrUHJvdmlkZXIuZm9yRW52aXJvbm1lbnQoKSkuY2xvdWRGb3JtYXRpb24oKTtcbn0pO1xuXG50ZXN0KCdBIG5vbi1leGlzdGVudCBzdGFjayBwcmV0ZW5kcyB0byBoYXZlIGFuIGVtcHR5IHRlbXBsYXRlJywgYXN5bmMgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGNvbnN0IHN0YWNrID0gYXdhaXQgQ2xvdWRGb3JtYXRpb25TdGFjay5sb29rdXAoY2ZuLCAnRHVtbXknKTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChhd2FpdCBzdGFjay50ZW1wbGF0ZSgpKS50b0VxdWFsKHt9KTtcbn0pO1xuXG50ZXN0LmVhY2goW1xuICBbZmFsc2UsIGZhbHNlXSxcbiAgW2ZhbHNlLCB0cnVlXSxcbiAgW3RydWUsIGZhbHNlXSxcbiAgW3RydWUsIHRydWVdLFxuXSkoJ2dpdmVuIG92ZXJyaWRlLCBhbHdheXMgdXNlIHRoZSBvdmVycmlkZSAocGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQ6ICVwLCBwYXJhbWV0ZXIgcHJldmlvdXNseSBzdXBwbGllZDogJXApJyxcbiAgKGhhdmVEZWZhdWx0LCBoYXZlUHJldmlvdXMpID0+IHtcbiAgICBleHBlY3QobWFrZVBhcmFtcyhoYXZlRGVmYXVsdCwgaGF2ZVByZXZpb3VzLCB0cnVlKSkudG9FcXVhbCh7XG4gICAgICBhcGlQYXJhbWV0ZXJzOiBbVVNFX09WRVJSSURFXSxcbiAgICAgIGNoYW5nZWQ6IHRydWUsXG4gICAgfSk7XG4gIH0pO1xuXG50ZXN0KCdubyBkZWZhdWx0LCBubyBwcmV2LCBubyBvdmVycmlkZSA9PiBlcnJvcicsICgpID0+IHtcbiAgZXhwZWN0KCgpID0+IG1ha2VQYXJhbXMoZmFsc2UsIGZhbHNlLCBmYWxzZSkpLnRvVGhyb3coL21pc3NpbmcgYSB2YWx1ZTogVGhlUGFyYW1ldGVyLyk7XG59KTtcblxudGVzdCgnbm8gZGVmYXVsdCwgeWVzIHByZXYsIG5vIG92ZXJyaWRlID0+IHVzZSBwcmV2aW91cycsICgpID0+IHtcbiAgZXhwZWN0KG1ha2VQYXJhbXMoZmFsc2UsIHRydWUsIGZhbHNlKSkudG9FcXVhbCh7XG4gICAgYXBpUGFyYW1ldGVyczogW1VTRV9QUkVWSU9VU10sXG4gICAgY2hhbmdlZDogZmFsc2UsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ2RlZmF1bHQsIG5vIHByZXYsIG5vIG92ZXJyaWRlID0+IGVtcHR5IHBhcmFtIHNldCAoYW5kIG9idmlvdXNseSBjaGFuZ2VzIHRvIGJlIGFwcGxpZWQpJywgKCkgPT4ge1xuICBleHBlY3QobWFrZVBhcmFtcyh0cnVlLCBmYWxzZSwgZmFsc2UpKS50b0VxdWFsKHtcbiAgICBhcGlQYXJhbWV0ZXJzOiBbXSxcbiAgICBjaGFuZ2VkOiB0cnVlLFxuICB9KTtcbn0pO1xuXG50ZXN0KCdkZWZhdWx0LCBwcmV2LCBubyBvdmVycmlkZSA9PiB1c2UgcHJldmlvdXMnLCAoKSA9PiB7XG4gIGV4cGVjdChtYWtlUGFyYW1zKHRydWUsIHRydWUsIGZhbHNlKSkudG9FcXVhbCh7XG4gICAgYXBpUGFyYW1ldGVyczogW1VTRV9QUkVWSU9VU10sXG4gICAgY2hhbmdlZDogZmFsc2UsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ2lmIGEgcGFyYW1ldGVyIGlzIHJldHJpZXZlZCBmcm9tIFNTTSwgdGhlIHBhcmFtZXRlcnMgYWx3YXlzIGNvdW50IGFzIGNoYW5nZWQnLCAoKSA9PiB7XG4gIGNvbnN0IHBhcmFtcyA9IFRlbXBsYXRlUGFyYW1ldGVycy5mcm9tVGVtcGxhdGUoe1xuICAgIFBhcmFtZXRlcnM6IHtcbiAgICAgIEZvbzoge1xuICAgICAgICBUeXBlOiAnQVdTOjpTU006OlBhcmFtZXRlcjo6TmFtZScsXG4gICAgICAgIERlZmF1bHQ6ICcvU29tZS9LZXknLFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbiAgY29uc3Qgb2xkVmFsdWVzID0geyBGb286ICcvU29tZS9LZXknIH07XG5cbiAgLy8gSWYgd2UgZG9uJ3QgcGFzcyBhIG5ldyB2YWx1ZVxuICBleHBlY3QocGFyYW1zLnVwZGF0ZUV4aXN0aW5nKHt9LCBvbGRWYWx1ZXMpLmhhc0NoYW5nZXMob2xkVmFsdWVzKSkudG9FcXVhbCgnc3NtJyk7XG5cbiAgLy8gSWYgd2UgZG8gcGFzcyBhIG5ldyB2YWx1ZSBidXQgaXQncyB0aGUgc2FtZSBhcyB0aGUgb2xkIG9uZVxuICBleHBlY3QocGFyYW1zLnVwZGF0ZUV4aXN0aW5nKHsgRm9vOiAnL1NvbWUvS2V5JyB9LCBvbGRWYWx1ZXMpLmhhc0NoYW5nZXMob2xkVmFsdWVzKSkudG9FcXVhbCgnc3NtJyk7XG59KTtcblxudGVzdCgnaWYgYSBwYXJhbWV0ZXIgaXMgcmV0cmlldmVkIGZyb20gU1NNLCB0aGUgcGFyYW1ldGVycyBkb2VzbnQgY291bnQgYXMgY2hhbmdlZCBpZiBpdCBoYXMgdGhlIG1hZ2ljIG1hcmtlcicsICgpID0+IHtcbiAgY29uc3QgcGFyYW1zID0gVGVtcGxhdGVQYXJhbWV0ZXJzLmZyb21UZW1wbGF0ZSh7XG4gICAgUGFyYW1ldGVyczoge1xuICAgICAgRm9vOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlNTTTo6UGFyYW1ldGVyOjpOYW1lJyxcbiAgICAgICAgRGVmYXVsdDogJy9Tb21lL0tleScsXG4gICAgICAgIERlc2NyaXB0aW9uOiBgYmxhYmxhICR7U1NNUEFSQU1fTk9fSU5WQUxJREFURX1gLFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbiAgY29uc3Qgb2xkVmFsdWVzID0geyBGb286ICcvU29tZS9LZXknIH07XG5cbiAgLy8gSWYgd2UgZG9uJ3QgcGFzcyBhIG5ldyB2YWx1ZVxuICBleHBlY3QocGFyYW1zLnVwZGF0ZUV4aXN0aW5nKHt9LCBvbGRWYWx1ZXMpLmhhc0NoYW5nZXMob2xkVmFsdWVzKSkudG9FcXVhbChmYWxzZSk7XG5cbiAgLy8gSWYgd2UgZG8gcGFzcyBhIG5ldyB2YWx1ZSBidXQgaXQncyB0aGUgc2FtZSBhcyB0aGUgb2xkIG9uZVxuICBleHBlY3QocGFyYW1zLnVwZGF0ZUV4aXN0aW5nKHsgRm9vOiAnL1NvbWUvS2V5JyB9LCBvbGRWYWx1ZXMpLmhhc0NoYW5nZXMob2xkVmFsdWVzKSkudG9FcXVhbChmYWxzZSk7XG5cbiAgLy8gSWYgd2UgZG8gcGFzcyBhIG5ldyB2YWx1ZSBhbmQgaXQncyBkaWZmZXJlbnRcbiAgZXhwZWN0KHBhcmFtcy51cGRhdGVFeGlzdGluZyh7IEZvbzogJy9PVEhFUi9LZXknIH0sIG9sZFZhbHVlcykuaGFzQ2hhbmdlcyhvbGRWYWx1ZXMpKS50b0VxdWFsKHRydWUpO1xufSk7XG5cbnRlc3QoJ2VtcHR5IHN0cmluZyBpcyBhIHZhbGlkIHVwZGF0ZSB2YWx1ZScsICgpID0+IHtcbiAgY29uc3QgcGFyYW1zID0gVGVtcGxhdGVQYXJhbWV0ZXJzLmZyb21UZW1wbGF0ZSh7XG4gICAgUGFyYW1ldGVyczoge1xuICAgICAgRm9vOiB7IFR5cGU6ICdTdHJpbmcnLCBEZWZhdWx0OiAnRm9vJyB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIGV4cGVjdChwYXJhbXMudXBkYXRlRXhpc3RpbmcoeyBGb286ICcnIH0sIHsgRm9vOiAnVGhpc0lzT2xkJyB9KS5hcGlQYXJhbWV0ZXJzKS50b0VxdWFsKFtcbiAgICB7IFBhcmFtZXRlcktleTogJ0ZvbycsIFBhcmFtZXRlclZhbHVlOiAnJyB9LFxuICBdKTtcbn0pO1xuXG50ZXN0KCd1bmtub3duIHBhcmFtZXRlciBpbiBvdmVycmlkZXMsIHBhc3MgaXQgYW55d2F5JywgKCkgPT4ge1xuICAvLyBOb3Qgc3VyZSBpZiB3ZSByZWFsbHkgd2FudCB0aGlzLiBJdCBzZWVtcyBsaWtlIGl0IHdvdWxkIGJlIG5pY2VcbiAgLy8gdG8gbm90IHBhc3MgcGFyYW1ldGVycyB0aGF0IGFyZW4ndCBleHBlY3RlZCwgZ2l2ZW4gdGhhdCBDRk4gd2lsbFxuICAvLyBqdXN0IGVycm9yIG91dC4gQnV0IG1heWJlIHdlIHdhbnQgdG8gYmUgd2FybmVkIG9mIHR5cG9zLi4uXG4gIGNvbnN0IHBhcmFtcyA9IFRlbXBsYXRlUGFyYW1ldGVycy5mcm9tVGVtcGxhdGUoe1xuICAgIFBhcmFtZXRlcnM6IHtcbiAgICAgIEZvbzogeyBUeXBlOiAnU3RyaW5nJywgRGVmYXVsdDogJ0ZvbycgfSxcbiAgICB9LFxuICB9KTtcblxuICBleHBlY3QocGFyYW1zLnVwZGF0ZUV4aXN0aW5nKHsgQmFyOiAnQmFyJyB9LCB7fSkuYXBpUGFyYW1ldGVycykudG9FcXVhbChbXG4gICAgeyBQYXJhbWV0ZXJLZXk6ICdCYXInLCBQYXJhbWV0ZXJWYWx1ZTogJ0JhcicgfSxcbiAgXSk7XG59KTtcblxudGVzdCgnaWYgYW4gdW5zdXBwbGllZCBwYXJhbWV0ZXIgcmV2ZXJ0cyB0byBpdHMgZGVmYXVsdCwgaXQgY2FuIHN0aWxsIGJlIGRpcnR5JywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCB0ZW1wbGF0ZVBhcmFtcyA9IFRlbXBsYXRlUGFyYW1ldGVycy5mcm9tVGVtcGxhdGUoe1xuICAgIFBhcmFtZXRlcnM6IHtcbiAgICAgIEZvbzogeyBUeXBlOiAnU3RyaW5nJywgRGVmYXVsdDogJ0ZvbycgfSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IHN0YWNrUGFyYW1zID0gdGVtcGxhdGVQYXJhbXMuc3VwcGx5QWxsKHt9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzdGFja1BhcmFtcy5oYXNDaGFuZ2VzKHsgRm9vOiAnTm9uU3RhbmRhcmQnIH0pKS50b0VxdWFsKHRydWUpO1xuICBleHBlY3Qoc3RhY2tQYXJhbXMuaGFzQ2hhbmdlcyh7IEZvbzogJ0ZvbycgfSkpLnRvRXF1YWwoZmFsc2UpO1xufSk7XG5cbmZ1bmN0aW9uIG1ha2VQYXJhbXMoZGVmYXVsdFZhbHVlOiBib29sZWFuLCBoYXNQcmV2VmFsdWU6IGJvb2xlYW4sIG92ZXJyaWRlOiBib29sZWFuKSB7XG4gIGNvbnN0IHBhcmFtcyA9IFRlbXBsYXRlUGFyYW1ldGVycy5mcm9tVGVtcGxhdGUoe1xuICAgIFBhcmFtZXRlcnM6IHtcbiAgICAgIFtQQVJBTV06IHtcbiAgICAgICAgVHlwZTogJ1N0cmluZycsXG4gICAgICAgIERlZmF1bHQ6IGRlZmF1bHRWYWx1ZSA/IERFRkFVTFQgOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBwcmV2UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gaGFzUHJldlZhbHVlID8geyBbUEFSQU1dOiAnRm9vJyB9IDoge307XG4gIGNvbnN0IHN0YWNrUGFyYW1zID0gcGFyYW1zLnVwZGF0ZUV4aXN0aW5nKHsgW1BBUkFNXTogb3ZlcnJpZGUgPyBPVkVSUklERSA6IHVuZGVmaW5lZCB9LCBwcmV2UGFyYW1zKTtcblxuICByZXR1cm4geyBhcGlQYXJhbWV0ZXJzOiBzdGFja1BhcmFtcy5hcGlQYXJhbWV0ZXJzLCBjaGFuZ2VkOiBzdGFja1BhcmFtcy5oYXNDaGFuZ2VzKHByZXZQYXJhbXMpIH07XG59XG4iXX0=
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmb3JtYXRpb24udGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsb3VkZm9ybWF0aW9uLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw0Q0FBeUQ7QUFDekQsc0VBQTRGO0FBQzVGLHlDQUFnRjtBQUVoRixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUM7QUFDN0IsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDO0FBQzdCLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQztBQUUvQixNQUFNLFlBQVksR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQ3ZFLE1BQU0sWUFBWSxHQUFHLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUVyRSxJQUFJLFdBQTRCLENBQUM7QUFDakMsSUFBSSxRQUErRCxDQUFDO0FBQ3BFLElBQUksR0FBdUIsQ0FBQztBQUM1QixVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDcEIsV0FBVyxHQUFHLElBQUksMEJBQWUsRUFBRSxDQUFDO0lBRXBDLFFBQVEsR0FBRztRQUNULGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLGtCQUFrQjthQUNqQixrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDOUMsQ0FBQztJQUNGLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFlLENBQUMsQ0FBQztJQUNoRCxHQUFHLEdBQUcsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNsRSxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyx5REFBeUQsRUFBRSxLQUFLLElBQUksRUFBRTtJQUN6RSxPQUFPO0lBQ1AsTUFBTSxLQUFLLEdBQUcsTUFB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QVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRSxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxVQUFVLENBQUMsWUFBcUIsRUFBRSxZQUFxQixFQUFFLFFBQWlCO0lBQ2pGLE1BQU0sTUFBTSxHQUFHLG1DQUFrQixDQUFDLFlBQVksQ0FBQztRQUM3QyxVQUFVLEVBQUU7WUFDVixDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNQLElBQUksRUFBRSxRQUFRO2dCQUNkLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUzthQUM1QztTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxVQUFVLEdBQTJCLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbEYsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRXBHLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO0FBQ25HLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTU01QQVJBTV9OT19JTlZBTElEQVRFIH0gZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB7IENsb3VkRm9ybWF0aW9uU3RhY2ssIFRlbXBsYXRlUGFyYW1ldGVycyB9IGZyb20gJy4uLy4uL2xpYi9hcGkvdXRpbC9jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBNb2NrZWRPYmplY3QsIE1vY2tTZGtQcm92aWRlciwgU3luY0hhbmRsZXJTdWJzZXRPZiB9IGZyb20gJy4vbW9jay1zZGsnO1xuXG5jb25zdCBQQVJBTSA9ICdUaGVQYXJhbWV0ZXInO1xuY29uc3QgREVGQVVMVCA9ICdUaGVEZWZhdWx0JztcbmNvbnN0IE9WRVJSSURFID0gJ1RoZU92ZXJyaWRlJztcblxuY29uc3QgVVNFX09WRVJSSURFID0geyBQYXJhbWV0ZXJLZXk6IFBBUkFNLCBQYXJhbWV0ZXJWYWx1ZTogT1ZFUlJJREUgfTtcbmNvbnN0IFVTRV9QUkVWSU9VUyA9IHsgUGFyYW1ldGVyS2V5OiBQQVJBTSwgVXNlUHJldmlvdXNWYWx1ZTogdHJ1ZSB9O1xuXG5sZXQgc2RrUHJvdmlkZXI6IE1vY2tTZGtQcm92aWRlcjtcbmxldCBjZm5Nb2NrczogTW9ja2VkT2JqZWN0PFN5bmNIYW5kbGVyU3Vic2V0T2Y8QVdTLkNsb3VkRm9ybWF0aW9uPj47XG5sZXQgY2ZuOiBBV1MuQ2xvdWRGb3JtYXRpb247XG5iZWZvcmVFYWNoKGFzeW5jICgpID0+IHtcbiAgc2RrUHJvdmlkZXIgPSBuZXcgTW9ja1Nka1Byb3ZpZGVyKCk7XG5cbiAgY2ZuTW9ja3MgPSB7XG4gICAgZGVzY3JpYmVTdGFja3M6IGplc3QuZm4oKVxuICAgICAgLy8gTm8gc3RhY2tzIGV4aXN0XG4gICAgICAubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+ICh7IFN0YWNrczogW10gfSkpLFxuICB9O1xuICBzZGtQcm92aWRlci5zdHViQ2xvdWRGb3JtYXRpb24oY2ZuTW9ja3MgYXMgYW55KTtcbiAgY2ZuID0gKGF3YWl0IHNka1Byb3ZpZGVyLmZvckVudmlyb25tZW50KCkpLnNkay5jbG91ZEZvcm1hdGlvbigpO1xufSk7XG5cbnRlc3QoJ0Egbm9uLWV4aXN0ZW50IHN0YWNrIHByZXRlbmRzIHRvIGhhdmUgYW4gZW1wdHkgdGVtcGxhdGUnLCBhc3luYyAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3Qgc3RhY2sgPSBhd2FpdCBDbG91ZEZvcm1hdGlvblN0YWNrLmxvb2t1cChjZm4sICdEdW1teScpO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGF3YWl0IHN0YWNrLnRlbXBsYXRlKCkpLnRvRXF1YWwoe30pO1xufSk7XG5cbnRlc3QuZWFjaChbXG4gIFtmYWxzZSwgZmFsc2VdLFxuICBbZmFsc2UsIHRydWVdLFxuICBbdHJ1ZSwgZmFsc2VdLFxuICBbdHJ1ZSwgdHJ1ZV0sXG5dKSgnZ2l2ZW4gb3ZlcnJpZGUsIGFsd2F5cyB1c2UgdGhlIG92ZXJyaWRlIChwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdDogJXAsIHBhcmFtZXRlciBwcmV2aW91c2x5IHN1cHBsaWVkOiAlcCknLFxuICAoaGF2ZURlZmF1bHQsIGhhdmVQcmV2aW91cykgPT4ge1xuICAgIGV4cGVjdChtYWtlUGFyYW1zKGhhdmVEZWZhdWx0LCBoYXZlUHJldmlvdXMsIHRydWUpKS50b0VxdWFsKHtcbiAgICAgIGFwaVBhcmFtZXRlcnM6IFtVU0VfT1ZFUlJJREVdLFxuICAgICAgY2hhbmdlZDogdHJ1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbnRlc3QoJ25vIGRlZmF1bHQsIG5vIHByZXYsIG5vIG92ZXJyaWRlID0+IGVycm9yJywgKCkgPT4ge1xuICBleHBlY3QoKCkgPT4gbWFrZVBhcmFtcyhmYWxzZSwgZmFsc2UsIGZhbHNlKSkudG9UaHJvdygvbWlzc2luZyBhIHZhbHVlOiBUaGVQYXJhbWV0ZXIvKTtcbn0pO1xuXG50ZXN0KCdubyBkZWZhdWx0LCB5ZXMgcHJldiwgbm8gb3ZlcnJpZGUgPT4gdXNlIHByZXZpb3VzJywgKCkgPT4ge1xuICBleHBlY3QobWFrZVBhcmFtcyhmYWxzZSwgdHJ1ZSwgZmFsc2UpKS50b0VxdWFsKHtcbiAgICBhcGlQYXJhbWV0ZXJzOiBbVVNFX1BSRVZJT1VTXSxcbiAgICBjaGFuZ2VkOiBmYWxzZSxcbiAgfSk7XG59KTtcblxudGVzdCgnZGVmYXVsdCwgbm8gcHJldiwgbm8gb3ZlcnJpZGUgPT4gZW1wdHkgcGFyYW0gc2V0IChhbmQgb2J2aW91c2x5IGNoYW5nZXMgdG8gYmUgYXBwbGllZCknLCAoKSA9PiB7XG4gIGV4cGVjdChtYWtlUGFyYW1zKHRydWUsIGZhbHNlLCBmYWxzZSkpLnRvRXF1YWwoe1xuICAgIGFwaVBhcmFtZXRlcnM6IFtdLFxuICAgIGNoYW5nZWQ6IHRydWUsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ2RlZmF1bHQsIHByZXYsIG5vIG92ZXJyaWRlID0+IHVzZSBwcmV2aW91cycsICgpID0+IHtcbiAgZXhwZWN0KG1ha2VQYXJhbXModHJ1ZSwgdHJ1ZSwgZmFsc2UpKS50b0VxdWFsKHtcbiAgICBhcGlQYXJhbWV0ZXJzOiBbVVNFX1BSRVZJT1VTXSxcbiAgICBjaGFuZ2VkOiBmYWxzZSxcbiAgfSk7XG59KTtcblxudGVzdCgnaWYgYSBwYXJhbWV0ZXIgaXMgcmV0cmlldmVkIGZyb20gU1NNLCB0aGUgcGFyYW1ldGVycyBhbHdheXMgY291bnQgYXMgY2hhbmdlZCcsICgpID0+IHtcbiAgY29uc3QgcGFyYW1zID0gVGVtcGxhdGVQYXJhbWV0ZXJzLmZyb21UZW1wbGF0ZSh7XG4gICAgUGFyYW1ldGVyczoge1xuICAgICAgRm9vOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlNTTTo6UGFyYW1ldGVyOjpOYW1lJyxcbiAgICAgICAgRGVmYXVsdDogJy9Tb21lL0tleScsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBvbGRWYWx1ZXMgPSB7IEZvbzogJy9Tb21lL0tleScgfTtcblxuICAvLyBJZiB3ZSBkb24ndCBwYXNzIGEgbmV3IHZhbHVlXG4gIGV4cGVjdChwYXJhbXMudXBkYXRlRXhpc3Rpbmcoe30sIG9sZFZhbHVlcykuaGFzQ2hhbmdlcyhvbGRWYWx1ZXMpKS50b0VxdWFsKCdzc20nKTtcblxuICAvLyBJZiB3ZSBkbyBwYXNzIGEgbmV3IHZhbHVlIGJ1dCBpdCdzIHRoZSBzYW1lIGFzIHRoZSBvbGQgb25lXG4gIGV4cGVjdChwYXJhbXMudXBkYXRlRXhpc3RpbmcoeyBGb286ICcvU29tZS9LZXknIH0sIG9sZFZhbHVlcykuaGFzQ2hhbmdlcyhvbGRWYWx1ZXMpKS50b0VxdWFsKCdzc20nKTtcbn0pO1xuXG50ZXN0KCdpZiBhIHBhcmFtZXRlciBpcyByZXRyaWV2ZWQgZnJvbSBTU00sIHRoZSBwYXJhbWV0ZXJzIGRvZXNudCBjb3VudCBhcyBjaGFuZ2VkIGlmIGl0IGhhcyB0aGUgbWFnaWMgbWFya2VyJywgKCkgPT4ge1xuICBjb25zdCBwYXJhbXMgPSBUZW1wbGF0ZVBhcmFtZXRlcnMuZnJvbVRlbXBsYXRlKHtcbiAgICBQYXJhbWV0ZXJzOiB7XG4gICAgICBGb286IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6U1NNOjpQYXJhbWV0ZXI6Ok5hbWUnLFxuICAgICAgICBEZWZhdWx0OiAnL1NvbWUvS2V5JyxcbiAgICAgICAgRGVzY3JpcHRpb246IGBibGFibGEgJHtTU01QQVJBTV9OT19JTlZBTElEQVRFfWAsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBvbGRWYWx1ZXMgPSB7IEZvbzogJy9Tb21lL0tleScgfTtcblxuICAvLyBJZiB3ZSBkb24ndCBwYXNzIGEgbmV3IHZhbHVlXG4gIGV4cGVjdChwYXJhbXMudXBkYXRlRXhpc3Rpbmcoe30sIG9sZFZhbHVlcykuaGFzQ2hhbmdlcyhvbGRWYWx1ZXMpKS50b0VxdWFsKGZhbHNlKTtcblxuICAvLyBJZiB3ZSBkbyBwYXNzIGEgbmV3IHZhbHVlIGJ1dCBpdCdzIHRoZSBzYW1lIGFzIHRoZSBvbGQgb25lXG4gIGV4cGVjdChwYXJhbXMudXBkYXRlRXhpc3RpbmcoeyBGb286ICcvU29tZS9LZXknIH0sIG9sZFZhbHVlcykuaGFzQ2hhbmdlcyhvbGRWYWx1ZXMpKS50b0VxdWFsKGZhbHNlKTtcblxuICAvLyBJZiB3ZSBkbyBwYXNzIGEgbmV3IHZhbHVlIGFuZCBpdCdzIGRpZmZlcmVudFxuICBleHBlY3QocGFyYW1zLnVwZGF0ZUV4aXN0aW5nKHsgRm9vOiAnL09USEVSL0tleScgfSwgb2xkVmFsdWVzKS5oYXNDaGFuZ2VzKG9sZFZhbHVlcykpLnRvRXF1YWwodHJ1ZSk7XG59KTtcblxudGVzdCgnZW1wdHkgc3RyaW5nIGlzIGEgdmFsaWQgdXBkYXRlIHZhbHVlJywgKCkgPT4ge1xuICBjb25zdCBwYXJhbXMgPSBUZW1wbGF0ZVBhcmFtZXRlcnMuZnJvbVRlbXBsYXRlKHtcbiAgICBQYXJhbWV0ZXJzOiB7XG4gICAgICBGb286IHsgVHlwZTogJ1N0cmluZycsIERlZmF1bHQ6ICdGb28nIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgZXhwZWN0KHBhcmFtcy51cGRhdGVFeGlzdGluZyh7IEZvbzogJycgfSwgeyBGb286ICdUaGlzSXNPbGQnIH0pLmFwaVBhcmFtZXRlcnMpLnRvRXF1YWwoW1xuICAgIHsgUGFyYW1ldGVyS2V5OiAnRm9vJywgUGFyYW1ldGVyVmFsdWU6ICcnIH0sXG4gIF0pO1xufSk7XG5cbnRlc3QoJ3Vua25vd24gcGFyYW1ldGVyIGluIG92ZXJyaWRlcywgcGFzcyBpdCBhbnl3YXknLCAoKSA9PiB7XG4gIC8vIE5vdCBzdXJlIGlmIHdlIHJlYWxseSB3YW50IHRoaXMuIEl0IHNlZW1zIGxpa2UgaXQgd291bGQgYmUgbmljZVxuICAvLyB0byBub3QgcGFzcyBwYXJhbWV0ZXJzIHRoYXQgYXJlbid0IGV4cGVjdGVkLCBnaXZlbiB0aGF0IENGTiB3aWxsXG4gIC8vIGp1c3QgZXJyb3Igb3V0LiBCdXQgbWF5YmUgd2Ugd2FudCB0byBiZSB3YXJuZWQgb2YgdHlwb3MuLi5cbiAgY29uc3QgcGFyYW1zID0gVGVtcGxhdGVQYXJhbWV0ZXJzLmZyb21UZW1wbGF0ZSh7XG4gICAgUGFyYW1ldGVyczoge1xuICAgICAgRm9vOiB7IFR5cGU6ICdTdHJpbmcnLCBEZWZhdWx0OiAnRm9vJyB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIGV4cGVjdChwYXJhbXMudXBkYXRlRXhpc3RpbmcoeyBCYXI6ICdCYXInIH0sIHt9KS5hcGlQYXJhbWV0ZXJzKS50b0VxdWFsKFtcbiAgICB7IFBhcmFtZXRlcktleTogJ0JhcicsIFBhcmFtZXRlclZhbHVlOiAnQmFyJyB9LFxuICBdKTtcbn0pO1xuXG50ZXN0KCdpZiBhbiB1bnN1cHBsaWVkIHBhcmFtZXRlciByZXZlcnRzIHRvIGl0cyBkZWZhdWx0LCBpdCBjYW4gc3RpbGwgYmUgZGlydHknLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHRlbXBsYXRlUGFyYW1zID0gVGVtcGxhdGVQYXJhbWV0ZXJzLmZyb21UZW1wbGF0ZSh7XG4gICAgUGFyYW1ldGVyczoge1xuICAgICAgRm9vOiB7IFR5cGU6ICdTdHJpbmcnLCBEZWZhdWx0OiAnRm9vJyB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgY29uc3Qgc3RhY2tQYXJhbXMgPSB0ZW1wbGF0ZVBhcmFtcy5zdXBwbHlBbGwoe30pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHN0YWNrUGFyYW1zLmhhc0NoYW5nZXMoeyBGb286ICdOb25TdGFuZGFyZCcgfSkpLnRvRXF1YWwodHJ1ZSk7XG4gIGV4cGVjdChzdGFja1BhcmFtcy5oYXNDaGFuZ2VzKHsgRm9vOiAnRm9vJyB9KSkudG9FcXVhbChmYWxzZSk7XG59KTtcblxuZnVuY3Rpb24gbWFrZVBhcmFtcyhkZWZhdWx0VmFsdWU6IGJvb2xlYW4sIGhhc1ByZXZWYWx1ZTogYm9vbGVhbiwgb3ZlcnJpZGU6IGJvb2xlYW4pIHtcbiAgY29uc3QgcGFyYW1zID0gVGVtcGxhdGVQYXJhbWV0ZXJzLmZyb21UZW1wbGF0ZSh7XG4gICAgUGFyYW1ldGVyczoge1xuICAgICAgW1BBUkFNXToge1xuICAgICAgICBUeXBlOiAnU3RyaW5nJyxcbiAgICAgICAgRGVmYXVsdDogZGVmYXVsdFZhbHVlID8gREVGQVVMVCA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IHByZXZQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSBoYXNQcmV2VmFsdWUgPyB7IFtQQVJBTV06ICdGb28nIH0gOiB7fTtcbiAgY29uc3Qgc3RhY2tQYXJhbXMgPSBwYXJhbXMudXBkYXRlRXhpc3RpbmcoeyBbUEFSQU1dOiBvdmVycmlkZSA/IE9WRVJSSURFIDogdW5kZWZpbmVkIH0sIHByZXZQYXJhbXMpO1xuXG4gIHJldHVybiB7IGFwaVBhcmFtZXRlcnM6IHN0YWNrUGFyYW1zLmFwaVBhcmFtZXRlcnMsIGNoYW5nZWQ6IHN0YWNrUGFyYW1zLmhhc0NoYW5nZXMocHJldlBhcmFtcykgfTtcbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
3
|
+
const chalk = require("chalk");
|
|
4
4
|
const console_formatters_1 = require("../../lib/util/console-formatters");
|
|
5
5
|
test('no banner on empty msg list', () => expect(console_formatters_1.formatAsBanner([])).toEqual([]));
|
|
6
6
|
test('banner works as expected', () => expect(console_formatters_1.formatAsBanner(['msg1', 'msg2'])).toEqual([
|
|
@@ -11,13 +11,13 @@ test('banner works as expected', () => expect(console_formatters_1.formatAsBanne
|
|
|
11
11
|
]));
|
|
12
12
|
test('banner works for formatted msgs', () => expect(console_formatters_1.formatAsBanner([
|
|
13
13
|
'hello msg1',
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
chalk.yellow('hello msg2'),
|
|
15
|
+
chalk.bold('hello msg3'),
|
|
16
16
|
])).toEqual([
|
|
17
17
|
'******************',
|
|
18
18
|
'*** hello msg1 ***',
|
|
19
|
-
`*** ${
|
|
20
|
-
`*** ${
|
|
19
|
+
`*** ${chalk.yellow('hello msg2')} ***`,
|
|
20
|
+
`*** ${chalk.bold('hello msg3')} ***`,
|
|
21
21
|
'******************',
|
|
22
22
|
]));
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS1mb3JtYXR0ZXJzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb25zb2xlLWZvcm1hdHRlcnMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQUErQjtBQUMvQiwwRUFBbUU7QUFFbkUsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRSxDQUN2QyxNQUFNLENBQUMsbUNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRTFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUUsQ0FDcEMsTUFBTSxDQUFDLG1DQUFjLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMvQyxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFDZCxjQUFjO0NBQ2YsQ0FBQyxDQUFDLENBQUM7QUFFTixJQUFJLENBQUMsaUNBQWlDLEVBQUUsR0FBRyxFQUFFLENBQzNDLE1BQU0sQ0FBQyxtQ0FBYyxDQUFDO0lBQ3BCLFlBQVk7SUFDWixLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUMxQixLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztDQUN6QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDVixvQkFBb0I7SUFDcEIsb0JBQW9CO0lBQ3BCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTTtJQUN2QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU07SUFDckMsb0JBQW9CO0NBQ3JCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgZm9ybWF0QXNCYW5uZXIgfSBmcm9tICcuLi8uLi9saWIvdXRpbC9jb25zb2xlLWZvcm1hdHRlcnMnO1xuXG50ZXN0KCdubyBiYW5uZXIgb24gZW1wdHkgbXNnIGxpc3QnLCAoKSA9PlxuICBleHBlY3QoZm9ybWF0QXNCYW5uZXIoW10pKS50b0VxdWFsKFtdKSk7XG5cbnRlc3QoJ2Jhbm5lciB3b3JrcyBhcyBleHBlY3RlZCcsICgpID0+XG4gIGV4cGVjdChmb3JtYXRBc0Jhbm5lcihbJ21zZzEnLCAnbXNnMiddKSkudG9FcXVhbChbXG4gICAgJyoqKioqKioqKioqKicsXG4gICAgJyoqKiBtc2cxICoqKicsXG4gICAgJyoqKiBtc2cyICoqKicsXG4gICAgJyoqKioqKioqKioqKicsXG4gIF0pKTtcblxudGVzdCgnYmFubmVyIHdvcmtzIGZvciBmb3JtYXR0ZWQgbXNncycsICgpID0+XG4gIGV4cGVjdChmb3JtYXRBc0Jhbm5lcihbXG4gICAgJ2hlbGxvIG1zZzEnLFxuICAgIGNoYWxrLnllbGxvdygnaGVsbG8gbXNnMicpLFxuICAgIGNoYWxrLmJvbGQoJ2hlbGxvIG1zZzMnKSxcbiAgXSkpLnRvRXF1YWwoW1xuICAgICcqKioqKioqKioqKioqKioqKionLFxuICAgICcqKiogaGVsbG8gbXNnMSAqKionLFxuICAgIGAqKiogJHtjaGFsay55ZWxsb3coJ2hlbGxvIG1zZzInKX0gKioqYCxcbiAgICBgKioqICR7Y2hhbGsuYm9sZCgnaGVsbG8gbXNnMycpfSAqKipgLFxuICAgICcqKioqKioqKioqKioqKioqKionLFxuICBdKSk7XG4iXX0=
|
package/test/util/mock-sdk.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="jest" />
|
|
2
2
|
import * as cxapi from '@aws-cdk/cx-api';
|
|
3
3
|
import * as AWS from 'aws-sdk';
|
|
4
|
-
import { Account, ISDK, SdkProvider } from '../../lib/api/aws-auth';
|
|
4
|
+
import { Account, ISDK, SdkProvider, SdkForEnvironment } from '../../lib/api/aws-auth';
|
|
5
5
|
import { Mode } from '../../lib/api/aws-auth/credentials';
|
|
6
6
|
import { ToolkitInfo } from '../../lib/api/toolkit-info';
|
|
7
7
|
import { CloudFormationStack } from '../../lib/api/util/cloudformation';
|
|
@@ -27,7 +27,7 @@ export declare class MockSdkProvider extends SdkProvider {
|
|
|
27
27
|
constructor(options?: MockSdkProviderOptions);
|
|
28
28
|
baseCredentialsPartition(_environment: cxapi.Environment, _mode: Mode): Promise<string | undefined>;
|
|
29
29
|
defaultAccount(): Promise<Account | undefined>;
|
|
30
|
-
forEnvironment(): Promise<
|
|
30
|
+
forEnvironment(): Promise<SdkForEnvironment>;
|
|
31
31
|
/**
|
|
32
32
|
* Replace the CloudFormation client with the given object
|
|
33
33
|
*/
|
|
@@ -58,6 +58,7 @@ export declare class MockSdkProvider extends SdkProvider {
|
|
|
58
58
|
stubLambda(stubs: SyncHandlerSubsetOf<AWS.Lambda>): void;
|
|
59
59
|
stubStepFunctions(stubs: SyncHandlerSubsetOf<AWS.StepFunctions>): void;
|
|
60
60
|
stubCodeBuild(stubs: SyncHandlerSubsetOf<AWS.CodeBuild>): void;
|
|
61
|
+
stubCloudWatchLogs(stubs: SyncHandlerSubsetOf<AWS.CloudWatchLogs>): void;
|
|
61
62
|
stubGetEndpointSuffix(stub: () => string): void;
|
|
62
63
|
}
|
|
63
64
|
export declare class MockSdk implements ISDK {
|
|
@@ -75,6 +76,7 @@ export declare class MockSdk implements ISDK {
|
|
|
75
76
|
readonly kms: jest.Mock<any, any>;
|
|
76
77
|
readonly stepFunctions: jest.Mock<any, any>;
|
|
77
78
|
readonly codeBuild: jest.Mock<any, any>;
|
|
79
|
+
readonly cloudWatchLogs: jest.Mock<any, any>;
|
|
78
80
|
readonly getEndpointSuffix: jest.Mock<any, any>;
|
|
79
81
|
readonly appendCustomUserAgent: jest.Mock<any, any>;
|
|
80
82
|
readonly removeCustomUserAgent: jest.Mock<any, any>;
|
|
@@ -83,6 +85,10 @@ export declare class MockSdk implements ISDK {
|
|
|
83
85
|
* Replace the CloudFormation client with the given object
|
|
84
86
|
*/
|
|
85
87
|
stubCloudFormation(stubs: SyncHandlerSubsetOf<AWS.CloudFormation>): void;
|
|
88
|
+
/**
|
|
89
|
+
* Replace the CloudWatch client with the given object
|
|
90
|
+
*/
|
|
91
|
+
stubCloudWatchLogs(stubs: SyncHandlerSubsetOf<AWS.CloudWatchLogs>): void;
|
|
86
92
|
/**
|
|
87
93
|
* Replace the ECR client with the given object
|
|
88
94
|
*/
|