@pipeline-builder/pipeline-manager 3.4.70 → 3.4.72
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 +43 -2
- package/dist/agent/ai.d.ts +55 -0
- package/dist/agent/ai.d.ts.map +1 -0
- package/dist/agent/ai.js +130 -0
- package/dist/agent/bootstrap.d.ts +54 -0
- package/dist/agent/bootstrap.d.ts.map +1 -0
- package/dist/agent/bootstrap.js +76 -0
- package/dist/agent/executor.d.ts +27 -0
- package/dist/agent/executor.d.ts.map +1 -0
- package/dist/agent/executor.js +57 -0
- package/dist/agent/health.d.ts +22 -0
- package/dist/agent/health.d.ts.map +1 -0
- package/dist/agent/health.js +55 -0
- package/dist/agent/post-steps.d.ts +55 -0
- package/dist/agent/post-steps.d.ts.map +1 -0
- package/dist/agent/post-steps.js +73 -0
- package/dist/agent/prereqs.d.ts +25 -0
- package/dist/agent/prereqs.d.ts.map +1 -0
- package/dist/agent/prereqs.js +100 -0
- package/dist/agent/targets.d.ts +122 -0
- package/dist/agent/targets.d.ts.map +1 -0
- package/dist/agent/targets.js +180 -0
- package/dist/agent/troubleshoot.d.ts +30 -0
- package/dist/agent/troubleshoot.d.ts.map +1 -0
- package/dist/agent/troubleshoot.js +87 -0
- package/dist/boilerplate.js +8 -13
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +123 -118
- package/dist/commands/audit-stacks.js +22 -24
- package/dist/commands/audit-tokens.js +25 -27
- package/dist/commands/bootstrap.js +29 -37
- package/dist/commands/create-pipeline.js +55 -92
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +58 -62
- package/dist/commands/get-pipeline.js +24 -28
- package/dist/commands/get-plugin.js +24 -28
- package/dist/commands/list-pipelines.js +30 -31
- package/dist/commands/list-plugins.js +32 -33
- package/dist/commands/login.js +44 -49
- package/dist/commands/org-export.js +22 -60
- package/dist/commands/provision.d.ts +13 -0
- package/dist/commands/provision.d.ts.map +1 -0
- package/dist/commands/provision.js +489 -0
- package/dist/commands/register.js +29 -30
- package/dist/commands/setup-events.d.ts.map +1 -1
- package/dist/commands/setup-events.js +42 -77
- package/dist/commands/status.js +20 -25
- package/dist/commands/store-token.js +44 -82
- package/dist/commands/synth.d.ts.map +1 -1
- package/dist/commands/synth.js +36 -35
- package/dist/commands/upload-plugin.js +59 -96
- package/dist/commands/validate-templates.d.ts.map +1 -1
- package/dist/commands/validate-templates.js +23 -29
- package/dist/commands/version.js +42 -47
- package/dist/config/cli.constants.d.ts.map +1 -1
- package/dist/config/cli.constants.js +24 -31
- package/dist/types/config.js +2 -3
- package/dist/types/error.js +3 -7
- package/dist/types/index.d.ts +4 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +5 -21
- package/dist/types/pipeline.js +2 -3
- package/dist/types/plugin.js +2 -3
- package/dist/utils/api-client.d.ts +1 -1
- package/dist/utils/api-client.d.ts.map +1 -1
- package/dist/utils/api-client.js +23 -28
- package/dist/utils/audit-log.js +16 -22
- package/dist/utils/auth-guard.js +2 -5
- package/dist/utils/aws-secrets.js +17 -23
- package/dist/utils/banner.js +16 -23
- package/dist/utils/cdk-utils.js +14 -24
- package/dist/utils/command-utils.d.ts +1 -1
- package/dist/utils/command-utils.d.ts.map +1 -1
- package/dist/utils/command-utils.js +32 -44
- package/dist/utils/config-loader.d.ts +1 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +24 -58
- package/dist/utils/error-handler.d.ts +1 -1
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js +16 -24
- package/dist/utils/list-command-utils.js +15 -20
- package/dist/utils/output-utils.d.ts +1 -1
- package/dist/utils/output-utils.d.ts.map +1 -1
- package/dist/utils/output-utils.js +35 -55
- package/dist/utils/plugin-resolver.d.ts +1 -1
- package/dist/utils/plugin-resolver.d.ts.map +1 -1
- package/dist/utils/plugin-resolver.js +6 -8
- package/dist/utils/rate-limiter.js +11 -19
- package/dist/utils/registry.js +16 -22
- package/package.json +26 -17
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const output_utils_1 = require("../utils/output-utils");
|
|
3
|
+
import { CloudFormationClient, ListStacksCommand, DescribeStacksCommand } from '@aws-sdk/client-cloudformation';
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { createAuthenticatedClientAsync, printCommandHeader, printSslWarning } from '../utils/command-utils.js';
|
|
6
|
+
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
7
|
+
import { printError, printInfo, printSection, printSuccess, printWarning } from '../utils/output-utils.js';
|
|
10
8
|
const ACTIVE_STATUSES = [
|
|
11
9
|
'CREATE_COMPLETE', 'UPDATE_COMPLETE', 'UPDATE_ROLLBACK_COMPLETE',
|
|
12
10
|
'IMPORT_COMPLETE', 'IMPORT_ROLLBACK_COMPLETE',
|
|
@@ -32,7 +30,7 @@ const ACTIVE_STATUSES = [
|
|
|
32
30
|
* pipeline-manager audit-stacks --org acme --json
|
|
33
31
|
* ```
|
|
34
32
|
*/
|
|
35
|
-
function auditStacks(program) {
|
|
33
|
+
export function auditStacks(program) {
|
|
36
34
|
program
|
|
37
35
|
.command('audit-stacks')
|
|
38
36
|
.description('Diff CloudFormation stacks vs pipeline_registry to find orphaned or missing CDK deployments')
|
|
@@ -43,25 +41,25 @@ function auditStacks(program) {
|
|
|
43
41
|
.option('--verify-ssl', 'Enable SSL certificate verification')
|
|
44
42
|
.option('--no-verify-ssl', 'Disable SSL certificate verification')
|
|
45
43
|
.action(async (options) => {
|
|
46
|
-
const executionId =
|
|
47
|
-
|
|
44
|
+
const executionId = printCommandHeader('Audit Stacks');
|
|
45
|
+
printSslWarning(options.verifySsl);
|
|
48
46
|
const region = options.region || process.env.AWS_REGION || process.env.CDK_DEFAULT_REGION || 'us-east-1';
|
|
49
47
|
try {
|
|
50
48
|
// Fetch the platform's view of registered pipelines.
|
|
51
|
-
|
|
52
|
-
const client = await
|
|
49
|
+
printInfo('Fetching pipeline registry from platform', { org: options.org ?? '(all)' });
|
|
50
|
+
const client = await createAuthenticatedClientAsync(options);
|
|
53
51
|
const registryRes = await client.get(`/api/pipelines/registry${options.org ? `?orgId=${encodeURIComponent(options.org)}` : ''}`);
|
|
54
52
|
const entries = registryRes?.entries
|
|
55
53
|
?? registryRes?.data?.entries
|
|
56
54
|
?? [];
|
|
57
55
|
// Fetch stacks from CloudFormation.
|
|
58
|
-
|
|
59
|
-
const cfn = new
|
|
56
|
+
printInfo('Listing CloudFormation stacks', { region });
|
|
57
|
+
const cfn = new CloudFormationClient({ region });
|
|
60
58
|
const stacks = [];
|
|
61
59
|
let nextToken;
|
|
62
60
|
let pages = 0;
|
|
63
61
|
do {
|
|
64
|
-
const listResp = await cfn.send(new
|
|
62
|
+
const listResp = await cfn.send(new ListStacksCommand({
|
|
65
63
|
StackStatusFilter: ACTIVE_STATUSES,
|
|
66
64
|
NextToken: nextToken,
|
|
67
65
|
}));
|
|
@@ -69,7 +67,7 @@ function auditStacks(program) {
|
|
|
69
67
|
if (!summary.StackName)
|
|
70
68
|
continue;
|
|
71
69
|
// Pull tags via DescribeStacks (ListStacks doesn't include them).
|
|
72
|
-
const desc = await cfn.send(new
|
|
70
|
+
const desc = await cfn.send(new DescribeStacksCommand({ StackName: summary.StackName }));
|
|
73
71
|
const tags = desc.Stacks?.[0]?.Tags ?? [];
|
|
74
72
|
const pbTag = tags.find((t) => t.Key === 'pipeline-builder')?.Value;
|
|
75
73
|
const orgTag = tags.find((t) => t.Key === 'OrgId' || t.Key === 'orgId')?.Value;
|
|
@@ -126,31 +124,31 @@ function auditStacks(program) {
|
|
|
126
124
|
}, null, 2));
|
|
127
125
|
}
|
|
128
126
|
else {
|
|
129
|
-
|
|
130
|
-
|
|
127
|
+
printSection('Audit Results');
|
|
128
|
+
printInfo('Counts', {
|
|
131
129
|
registryEntries: String(entries.length),
|
|
132
130
|
cfnStacks: String(stacks.length),
|
|
133
131
|
findings: String(findings.length),
|
|
134
132
|
});
|
|
135
133
|
if (findings.length === 0) {
|
|
136
|
-
|
|
134
|
+
printSuccess('No drift between pipeline_registry and CloudFormation');
|
|
137
135
|
}
|
|
138
136
|
else {
|
|
139
137
|
for (const f of findings) {
|
|
140
138
|
if (f.type === 'orphaned-stack') {
|
|
141
|
-
|
|
139
|
+
printWarning(`ORPHANED ${f.stackName} — ${f.detail}`);
|
|
142
140
|
}
|
|
143
141
|
else {
|
|
144
|
-
|
|
142
|
+
printWarning(`MISSING ${f.stackName} (pipeline ${f.pipelineId ?? '?'}) — ${f.detail}`);
|
|
145
143
|
}
|
|
146
144
|
}
|
|
147
|
-
|
|
145
|
+
printError(`${findings.length} drift finding${findings.length === 1 ? '' : 's'}. Review and reconcile manually.`);
|
|
148
146
|
}
|
|
149
147
|
}
|
|
150
148
|
process.exit(exitCode);
|
|
151
149
|
}
|
|
152
150
|
catch (error) {
|
|
153
|
-
|
|
151
|
+
handleError(error, ERROR_CODES.API_REQUEST, {
|
|
154
152
|
debug: program.opts().debug,
|
|
155
153
|
exit: false,
|
|
156
154
|
context: { command: 'audit-stacks', executionId },
|
|
@@ -159,4 +157,4 @@ function auditStacks(program) {
|
|
|
159
157
|
}
|
|
160
158
|
});
|
|
161
159
|
}
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtc3RhY2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2F1ZGl0LXN0YWNrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7QUE0RHRDLGtDQWdJQztBQTFMRCwwRUFBa0k7QUFFbEksMERBQTZHO0FBQzdHLDBEQUFrRTtBQUNsRSx3REFBd0c7QUE0QnhHLE1BQU0sZUFBZSxHQUFHO0lBQ3RCLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLDBCQUEwQjtJQUNoRSxpQkFBaUIsRUFBRSwwQkFBMEI7Q0FDOUMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxPQUFnQjtJQUMxQyxPQUFPO1NBQ0osT0FBTyxDQUFDLGNBQWMsQ0FBQztTQUN2QixXQUFXLENBQUMsNkZBQTZGLENBQUM7U0FDMUcsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHlDQUF5QyxDQUFDO1NBQ3RFLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLENBQUM7U0FDM0QsTUFBTSxDQUFDLGVBQWUsRUFBRSxxREFBcUQsQ0FBQztTQUM5RSxNQUFNLENBQUMsUUFBUSxFQUFFLHdCQUF3QixFQUFFLEtBQUssQ0FBQztTQUNqRCxNQUFNLENBQUMsY0FBYyxFQUFFLHFDQUFxQyxDQUFDO1NBQzdELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxzQ0FBc0MsQ0FBQztTQUNqRSxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLElBQUEsa0NBQWtCLEVBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkQsSUFBQSwrQkFBZSxFQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVuQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJ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SSxRQUFRLEVBQUUsQ0FBQzt3QkFDekIsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLGdCQUFnQixFQUFFLENBQUM7NEJBQ2hDLElBQUEsMkJBQVksRUFBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7d0JBQ3pELENBQUM7NkJBQU0sQ0FBQzs0QkFDTixJQUFBLDJCQUFZLEVBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxjQUFjLENBQUMsQ0FBQyxVQUFVLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO3dCQUMzRixDQUFDO29CQUNILENBQUM7b0JBQ0QsSUFBQSx5QkFBVSxFQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0saUJBQWlCLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsa0NBQWtDLENBQUMsQ0FBQztnQkFDcEgsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBQSwyQkFBVyxFQUFDLEtBQUssRUFBRSwyQkFBVyxDQUFDLFdBQVcsRUFBRTtnQkFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsS0FBSztnQkFDWCxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRTthQUNsRCxDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25DbGllbnQsIExpc3RTdGFja3NDb21tYW5kLCBEZXNjcmliZVN0YWNrc0NvbW1hbmQsIHR5cGUgU3RhY2tTdGF0dXMgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMsIHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyJztcbmltcG9ydCB7IHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscyc7XG5cbmludGVyZmFjZSBSZWdpc3RyeUVudHJ5IHtcbiAgcGlwZWxpbmVJZDogc3RyaW5nO1xuICBwaXBlbGluZUFybjogc3RyaW5nO1xuICBwaXBlbGluZU5hbWU6IHN0cmluZztcbiAgc3RhY2tOYW1lPzogc3RyaW5nO1xuICBhY2NvdW50SWQ/OiBzdHJpbmc7XG4gIHJlZ2lvbj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN0YWNrSW5mbyB7XG4gIHN0YWNrTmFtZTogc3RyaW5nO1xuICBzdGFja1N0YXR1czogc3RyaW5nO1xuICByZWdpb246IHN0cmluZztcbiAgcGlwZWxpbmVCdWlsZGVyVGFnPzogc3RyaW5nO1xuICBvcmdJZFRhZz86IHN0cmluZztcbiAgY3JlYXRpb25UaW1lPzogRGF0ZTtcbn1cblxuaW50ZXJmYWNlIEF1ZGl0RmluZGluZyB7XG4gIHR5cGU6ICdvcnBoYW5lZC1zdGFjaycgfCAnbWlzc2luZy1zdGFjayc7XG4gIHN0YWNrTmFtZT86IHN0cmluZztcbiAgcGlwZWxpbmVJZD86IHN0cmluZztcbiAgcGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuICBkZXRhaWw6IHN0cmluZztcbn1cblxuY29uc3QgQUNUSVZFX1NUQVRVU0VTID0gW1xuICAnQ1JFQVRFX0NPTVBMRVRFJywgJ1VQREFURV9DT01QTEVURScsICdVUERBVEVfUk9MTEJBQ0tfQ09NUExFVEUnLFxuICAnSU1QT1JUX0NPTVBMRVRFJywgJ0lNUE9SVF9ST0xMQkFDS19DT01QTEVURScsXG5dO1xuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGF1ZGl0LXN0YWNrc2AgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBEaWZmcyBDbG91ZEZvcm1hdGlvbiBzdGFja3MgKGZpbHRlcmVkIHRvIHRob3NlIHRhZ2dlZCB3aXRoIGBwaXBlbGluZS1idWlsZGVyYClcbiAqIGFnYWluc3QgdGhlIHBsYXRmb3JtJ3MgYHBpcGVsaW5lX3JlZ2lzdHJ5YCB0YWJsZS4gU3VyZmFjZXM6XG4gKiAgIC0gKipPcnBoYW5lZCBzdGFja3MqKjogdGFnZ2VkIHN0YWNrcyB3aXRoIG5vIERCIHJlY29yZCAobGlrZWx5IGxlZnRvdmVycyBhZnRlclxuICogICAgIGEgcGlwZWxpbmUgd2FzIGRlbGV0ZWQgZnJvbSB0aGUgZGFzaGJvYXJkIGJ1dCB0aGUgQ0RLIHN0YWNrIHN0YXllZCBpbiBBV1MpLlxuICogICAtICoqTWlzc2luZyBzdGFja3MqKjogcmVnaXN0cnkgZW50cmllcyBwb2ludGluZyB0byBzdGFja3MgdGhhdCBubyBsb25nZXIgZXhpc3RcbiAqICAgICBpbiBDbG91ZEZvcm1hdGlvbiAobGlrZWx5IGFmdGVyIGEgbWFudWFsIGBhd3MgY2xvdWRmb3JtYXRpb24gZGVsZXRlLXN0YWNrYCkuXG4gKlxuICogRGVzaWduZWQgZm9yIGNyb24gdXNlOlxuICogICAtIEV4aXRzIDAgd2hlbiB0aGVyZSBhcmUgbm8gZmluZGluZ3MuXG4gKiAgIC0gRXhpdHMgMSB3aGVuIGF0IGxlYXN0IG9uZSBvcnBoYW5lZCBvciBtaXNzaW5nIHN0YWNrIGlzIGZvdW5kLlxuICogICAtIEV4aXRzIDIgb24gQVdTIGVycm9ycyAvIHNjYW4gZmFpbHVyZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXVkaXQtc3RhY2tzIC0tcmVnaW9uIHVzLWVhc3QtMVxuICogcGlwZWxpbmUtbWFuYWdlciBhdWRpdC1zdGFja3MgLS1vcmcgYWNtZSAtLWpzb25cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRTdGFja3MocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2F1ZGl0LXN0YWNrcycpXG4gICAgLmRlc2NyaXB0aW9uKCdEaWZmIENsb3VkRm9ybWF0aW9uIHN0YWNrcyB2cyBwaXBlbGluZV9yZWdpc3RyeSB0byBmaW5kIG9ycGhhbmVkIG9yIG1pc3NpbmcgQ0RLIGRlcGxveW1lbnRzJylcbiAgICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uIChkZWZhdWx0cyB0byBBV1NfUkVHSU9OIGVudiknKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIENMSSBwcm9maWxlJywgJ2RlZmF1bHQnKVxuICAgIC5vcHRpb24oJy0tb3JnIDxvcmdJZD4nLCAnRmlsdGVyIGJvdGggcmVnaXN0cnkgYW5kIHN0YWNrIHNjYW4gdG8gYSBzaW5nbGUgb3JnJylcbiAgICAub3B0aW9uKCctLWpzb24nLCAnT3V0cHV0IHJlc3VsdHMgYXMgSlNPTicsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ0F1ZGl0IFN0YWNrcycpO1xuICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgY29uc3QgcmVnaW9uID0gb3B0aW9ucy5yZWdpb24gfHwgcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04gfHwgJ3VzLWVhc3QtMSc7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIEZldGNoIHRoZSBwbGF0Zm9ybSdzIHZpZXcgb2YgcmVnaXN0ZXJlZCBwaXBlbGluZXMuXG4gICAgICAgIHByaW50SW5mbygnRmV0Y2hpbmcgcGlwZWxpbmUgcmVnaXN0cnkgZnJvbSBwbGF0Zm9ybScsIHsgb3JnOiBvcHRpb25zLm9yZyA/PyAnKGFsbCknIH0pO1xuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5UmVzID0gYXdhaXQgY2xpZW50LmdldDx7IGVudHJpZXM6IFJlZ2lzdHJ5RW50cnlbXSB9PihcbiAgICAgICAgICBgL2FwaS9waXBlbGluZXMvcmVnaXN0cnkke29wdGlvbnMub3JnID8gYD9vcmdJZD0ke2VuY29kZVVSSUNvbXBvbmVudChvcHRpb25zLm9yZyl9YCA6ICcnfWAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGVudHJpZXM6IFJlZ2lzdHJ5RW50cnlbXSA9IChyZWdpc3RyeVJlcyBhcyB7IGVudHJpZXM/OiBSZWdpc3RyeUVudHJ5W10gfSk/LmVudHJpZXNcbiAgICAgICAgICA/PyAocmVnaXN0cnlSZXMgYXMgeyBkYXRhPzogeyBlbnRyaWVzPzogUmVnaXN0cnlFbnRyeVtdIH0gfSk/LmRhdGE/LmVudHJpZXNcbiAgICAgICAgICA/PyBbXTtcblxuICAgICAgICAvLyBGZXRjaCBzdGFja3MgZnJvbSBDbG91ZEZvcm1hdGlvbi5cbiAgICAgICAgcHJpbnRJbmZvKCdMaXN0aW5nIENsb3VkRm9ybWF0aW9uIHN0YWNrcycsIHsgcmVnaW9uIH0pO1xuICAgICAgICBjb25zdCBjZm4gPSBuZXcgQ2xvdWRGb3JtYXRpb25DbGllbnQoeyByZWdpb24gfSk7XG4gICAgICAgIGNvbnN0IHN0YWNrczogU3RhY2tJbmZvW10gPSBbXTtcbiAgICAgICAgbGV0IG5leHRUb2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBsZXQgcGFnZXMgPSAwO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgY29uc3QgbGlzdFJlc3AgPSBhd2FpdCBjZm4uc2VuZChuZXcgTGlzdFN0YWNrc0NvbW1hbmQoe1xuICAgICAgICAgICAgU3RhY2tTdGF0dXNGaWx0ZXI6IEFDVElWRV9TVEFUVVNFUyBhcyBTdGFja1N0YXR1c1tdLFxuICAgICAgICAgICAgTmV4dFRva2VuOiBuZXh0VG9rZW4sXG4gICAgICAgICAgfSkpO1xuICAgICAgICAgIGZvciAoY29uc3Qgc3VtbWFyeSBvZiBsaXN0UmVzcC5TdGFja1N1bW1hcmllcyA/PyBbXSkge1xuICAgICAgICAgICAgaWYgKCFzdW1tYXJ5LlN0YWNrTmFtZSkgY29udGludWU7XG4gICAgICAgICAgICAvLyBQdWxsIHRhZ3MgdmlhIERlc2NyaWJlU3RhY2tzIChMaXN0U3RhY2tzIGRvZXNuJ3QgaW5jbHVkZSB0aGVtKS5cbiAgICAgICAgICAgIGNvbnN0IGRlc2MgPSBhd2FpdCBjZm4uc2VuZChuZXcgRGVzY3JpYmVTdGFja3NDb21tYW5kKHsgU3RhY2tOYW1lOiBzdW1tYXJ5LlN0YWNrTmFtZSB9KSk7XG4gICAgICAgICAgICBjb25zdCB0YWdzID0gZGVzYy5TdGFja3M/LlswXT8uVGFncyA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IHBiVGFnID0gdGFncy5maW5kKCh0KSA9PiB0LktleSA9PT0gJ3BpcGVsaW5lLWJ1aWxkZXInKT8uVmFsdWU7XG4gICAgICAgICAgICBjb25zdCBvcmdUYWcgPSB0YWdzLmZpbmQoKHQpID0+IHQuS2V5ID09PSAnT3JnSWQnIHx8IHQuS2V5ID09PSAnb3JnSWQnKT8uVmFsdWU7XG4gICAgICAgICAgICBpZiAoIXBiVGFnKSBjb250aW51ZTsgLy8gTm90IGEgcGlwZWxpbmUtYnVpbGRlciBzdGFjay5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLm9yZyAmJiBvcmdUYWcgJiYgb3JnVGFnICE9PSBvcHRpb25zLm9yZykgY29udGludWU7IC8vIFdyb25nIG9yZyBmaWx0ZXIuXG4gICAgICAgICAgICBzdGFja3MucHVzaCh7XG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogc3VtbWFyeS5TdGFja05hbWUsXG4gICAgICAgICAgICAgIHN0YWNrU3RhdHVzOiBzdW1tYXJ5LlN0YWNrU3RhdHVzID8/ICdVTktOT1dOJyxcbiAgICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgICBwaXBlbGluZUJ1aWxkZXJUYWc6IHBiVGFnLFxuICAgICAgICAgICAgICBvcmdJZFRhZzogb3JnVGFnLFxuICAgICAgICAgICAgICBjcmVhdGlvblRpbWU6IHN1bW1hcnkuQ3JlYXRpb25UaW1lLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHRUb2tlbiA9IGxpc3RSZXNwLk5leHRUb2tlbjtcbiAgICAgICAgICBwYWdlcysrO1xuICAgICAgICB9IHdoaWxlIChuZXh0VG9rZW4gJiYgcGFnZXMgPCAyMCk7XG5cbiAgICAgICAgLy8gRGlmZi5cbiAgICAgICAgY29uc3QgcmVnaXN0cnlTdGFja05hbWVzID0gbmV3IFNldChlbnRyaWVzLm1hcCgoZSkgPT4gZS5zdGFja05hbWUpLmZpbHRlcigobik6IG4gaXMgc3RyaW5nID0+ICEhbikpO1xuICAgICAgICBjb25zdCBjZm5TdGFja05hbWVzID0gbmV3IFNldChzdGFja3MubWFwKChzKSA9PiBzLnN0YWNrTmFtZSkpO1xuXG4gICAgICAgIGNvbnN0IGZpbmRpbmdzOiBBdWRpdEZpbmRpbmdbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHN0YWNrIG9mIHN0YWNrcykge1xuICAgICAgICAgIGlmICghcmVnaXN0cnlTdGFja05hbWVzLmhhcyhzdGFjay5zdGFja05hbWUpKSB7XG4gICAgICAgICAgICBmaW5kaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogJ29ycGhhbmVkLXN0YWNrJyxcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiBzdGFjay5zdGFja05hbWUsXG4gICAgICAgICAgICAgIGRldGFpbDogYENsb3VkRm9ybWF0aW9uIHN0YWNrIHRhZ2dlZCBwaXBlbGluZS1idWlsZGVyPSR7c3RhY2sucGlwZWxpbmVCdWlsZGVyVGFnID8/ICcodW5zZXQpJ30gaGFzIG5vIG1hdGNoaW5nIHBpcGVsaW5lX3JlZ2lzdHJ5IGVudHJ5YCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICBpZiAoZW50cnkuc3RhY2tOYW1lICYmICFjZm5TdGFja05hbWVzLmhhcyhlbnRyeS5zdGFja05hbWUpKSB7XG4gICAgICAgICAgICBmaW5kaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogJ21pc3Npbmctc3RhY2snLFxuICAgICAgICAgICAgICBzdGFja05hbWU6IGVudHJ5LnN0YWNrTmFtZSxcbiAgICAgICAgICAgICAgcGlwZWxpbmVJZDogZW50cnkucGlwZWxpbmVJZCxcbiAgICAgICAgICAgICAgcGlwZWxpbmVOYW1lOiBlbnRyeS5waXBlbGluZU5hbWUsXG4gICAgICAgICAgICAgIGRldGFpbDogYFJlZ2lzdHJ5IGVudHJ5IHJlZmVyZW5jZXMgc3RhY2sgJHtlbnRyeS5zdGFja05hbWV9IGJ1dCBubyBzdWNoIHN0YWNrIGV4aXN0cyBpbiBDbG91ZEZvcm1hdGlvbmAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBleGl0Q29kZSA9IGZpbmRpbmdzLmxlbmd0aCA+IDAgPyAxIDogMDtcblxuICAgICAgICBpZiAob3B0aW9ucy5qc29uKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgc2Nhbm5lZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICBvcmdGaWx0ZXI6IG9wdGlvbnMub3JnLFxuICAgICAgICAgICAgcmVnaXN0cnlFbnRyaWVzOiBlbnRyaWVzLmxlbmd0aCxcbiAgICAgICAgICAgIGNmblN0YWNrczogc3RhY2tzLmxlbmd0aCxcbiAgICAgICAgICAgIGZpbmRpbmdzLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgfSwgbnVsbCwgMikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByaW50U2VjdGlvbignQXVkaXQgUmVzdWx0cycpO1xuICAgICAgICAgIHByaW50SW5mbygnQ291bnRzJywge1xuICAgICAgICAgICAgcmVnaXN0cnlFbnRyaWVzOiBTdHJpbmcoZW50cmllcy5sZW5ndGgpLFxuICAgICAgICAgICAgY2ZuU3RhY2tzOiBTdHJpbmcoc3RhY2tzLmxlbmd0aCksXG4gICAgICAgICAgICBmaW5kaW5nczogU3RyaW5nKGZpbmRpbmdzLmxlbmd0aCksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGZpbmRpbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcHJpbnRTdWNjZXNzKCdObyBkcmlmdCBiZXR3ZWVuIHBpcGVsaW5lX3JlZ2lzdHJ5IGFuZCBDbG91ZEZvcm1hdGlvbicpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGYgb2YgZmluZGluZ3MpIHtcbiAgICAgICAgICAgICAgaWYgKGYudHlwZSA9PT0gJ29ycGhhbmVkLXN0YWNrJykge1xuICAgICAgICAgICAgICAgIHByaW50V2FybmluZyhgT1JQSEFORUQgICR7Zi5zdGFja05hbWV9IOKAlCAke2YuZGV0YWlsfWApO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHByaW50V2FybmluZyhgTUlTU0lORyAgICR7Zi5zdGFja05hbWV9IChwaXBlbGluZSAke2YucGlwZWxpbmVJZCA/PyAnPyd9KSDigJQgJHtmLmRldGFpbH1gKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJpbnRFcnJvcihgJHtmaW5kaW5ncy5sZW5ndGh9IGRyaWZ0IGZpbmRpbmcke2ZpbmRpbmdzLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnfS4gUmV2aWV3IGFuZCByZWNvbmNpbGUgbWFudWFsbHkuYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3MuZXhpdChleGl0Q29kZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogZmFsc2UsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnYXVkaXQtc3RhY2tzJywgZXhlY3V0aW9uSWQgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtc3RhY2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2F1ZGl0LXN0YWNrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBb0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsSSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoSCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUE0QjNHLE1BQU0sZUFBZSxHQUFHO0lBQ3RCLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLDBCQUEwQjtJQUNoRSxpQkFBaUIsRUFBRSwwQkFBMEI7Q0FDOUMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsT0FBZ0I7SUFDMUMsT0FBTztTQUNKLE9BQU8sQ0FBQyxjQUFjLENBQUM7U0FDdkIsV0FBVyxDQUFDLDZGQUE2RixDQUFDO1NBQzFHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSx5Q0FBeUMsQ0FBQztTQUN0RSxNQUFNLENBQUMscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO1NBQzNELE1BQU0sQ0FBQyxlQUFlLEVBQUUscURBQXFELENBQUM7U0FDOUUsTUFBTSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLENBQUM7U0FDakQsTUFBTSxDQUFDLGNBQWMsRUFBRSxxQ0FBcUMsQ0FBQztT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QU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvbkNsaWVudCwgTGlzdFN0YWNrc0NvbW1hbmQsIERlc2NyaWJlU3RhY2tzQ29tbWFuZCwgdHlwZSBTdGFja1N0YXR1cyB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYywgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcblxuaW50ZXJmYWNlIFJlZ2lzdHJ5RW50cnkge1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIHBpcGVsaW5lQXJuOiBzdHJpbmc7XG4gIHBpcGVsaW5lTmFtZTogc3RyaW5nO1xuICBzdGFja05hbWU/OiBzdHJpbmc7XG4gIGFjY291bnRJZD86IHN0cmluZztcbiAgcmVnaW9uPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU3RhY2tJbmZvIHtcbiAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIHN0YWNrU3RhdHVzOiBzdHJpbmc7XG4gIHJlZ2lvbjogc3RyaW5nO1xuICBwaXBlbGluZUJ1aWxkZXJUYWc/OiBzdHJpbmc7XG4gIG9yZ0lkVGFnPzogc3RyaW5nO1xuICBjcmVhdGlvblRpbWU/OiBEYXRlO1xufVxuXG5pbnRlcmZhY2UgQXVkaXRGaW5kaW5nIHtcbiAgdHlwZTogJ29ycGhhbmVkLXN0YWNrJyB8ICdtaXNzaW5nLXN0YWNrJztcbiAgc3RhY2tOYW1lPzogc3RyaW5nO1xuICBwaXBlbGluZUlkPzogc3RyaW5nO1xuICBwaXBlbGluZU5hbWU/OiBzdHJpbmc7XG4gIGRldGFpbDogc3RyaW5nO1xufVxuXG5jb25zdCBBQ1RJVkVfU1RBVFVTRVMgPSBbXG4gICdDUkVBVEVfQ09NUExFVEUnLCAnVVBEQVRFX0NPTVBMRVRFJywgJ1VQREFURV9ST0xMQkFDS19DT01QTEVURScsXG4gICdJTVBPUlRfQ09NUExFVEUnLCAnSU1QT1JUX1JPTExCQUNLX0NPTVBMRVRFJyxcbl07XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgYXVkaXQtc3RhY2tzYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIERpZmZzIENsb3VkRm9ybWF0aW9uIHN0YWNrcyAoZmlsdGVyZWQgdG8gdGhvc2UgdGFnZ2VkIHdpdGggYHBpcGVsaW5lLWJ1aWxkZXJgKVxuICogYWdhaW5zdCB0aGUgcGxhdGZvcm0ncyBgcGlwZWxpbmVfcmVnaXN0cnlgIHRhYmxlLiBTdXJmYWNlczpcbiAqICAgLSAqKk9ycGhhbmVkIHN0YWNrcyoqOiB0YWdnZWQgc3RhY2tzIHdpdGggbm8gREIgcmVjb3JkIChsaWtlbHkgbGVmdG92ZXJzIGFmdGVyXG4gKiAgICAgYSBwaXBlbGluZSB3YXMgZGVsZXRlZCBmcm9tIHRoZSBkYXNoYm9hcmQgYnV0IHRoZSBDREsgc3RhY2sgc3RheWVkIGluIEFXUykuXG4gKiAgIC0gKipNaXNzaW5nIHN0YWNrcyoqOiByZWdpc3RyeSBlbnRyaWVzIHBvaW50aW5nIHRvIHN0YWNrcyB0aGF0IG5vIGxvbmdlciBleGlzdFxuICogICAgIGluIENsb3VkRm9ybWF0aW9uIChsaWtlbHkgYWZ0ZXIgYSBtYW51YWwgYGF3cyBjbG91ZGZvcm1hdGlvbiBkZWxldGUtc3RhY2tgKS5cbiAqXG4gKiBEZXNpZ25lZCBmb3IgY3JvbiB1c2U6XG4gKiAgIC0gRXhpdHMgMCB3aGVuIHRoZXJlIGFyZSBubyBmaW5kaW5ncy5cbiAqICAgLSBFeGl0cyAxIHdoZW4gYXQgbGVhc3Qgb25lIG9ycGhhbmVkIG9yIG1pc3Npbmcgc3RhY2sgaXMgZm91bmQuXG4gKiAgIC0gRXhpdHMgMiBvbiBBV1MgZXJyb3JzIC8gc2NhbiBmYWlsdXJlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBhdWRpdC1zdGFja3MgLS1yZWdpb24gdXMtZWFzdC0xXG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1ZGl0LXN0YWNrcyAtLW9yZyBhY21lIC0tanNvblxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdWRpdFN0YWNrcyhwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnYXVkaXQtc3RhY2tzJylcbiAgICAuZGVzY3JpcHRpb24oJ0RpZmYgQ2xvdWRGb3JtYXRpb24gc3RhY2tzIHZzIHBpcGVsaW5lX3JlZ2lzdHJ5IHRvIGZpbmQgb3JwaGFuZWQgb3IgbWlzc2luZyBDREsgZGVwbG95bWVudHMnKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGRlZmF1bHRzIHRvIEFXU19SRUdJT04gZW52KScpXG4gICAgLm9wdGlvbignLS1wcm9maWxlIDxwcm9maWxlPicsICdBV1MgQ0xJIHByb2ZpbGUnLCAnZGVmYXVsdCcpXG4gICAgLm9wdGlvbignLS1vcmcgPG9yZ0lkPicsICdGaWx0ZXIgYm90aCByZWdpc3RyeSBhbmQgc3RhY2sgc2NhbiB0byBhIHNpbmdsZSBvcmcnKVxuICAgIC5vcHRpb24oJy0tanNvbicsICdPdXRwdXQgcmVzdWx0cyBhcyBKU09OJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQXVkaXQgU3RhY2tzJyk7XG4gICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICBjb25zdCByZWdpb24gPSBvcHRpb25zLnJlZ2lvbiB8fCBwcm9jZXNzLmVudi5BV1NfUkVHSU9OIHx8IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCAndXMtZWFzdC0xJztcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gRmV0Y2ggdGhlIHBsYXRmb3JtJ3MgdmlldyBvZiByZWdpc3RlcmVkIHBpcGVsaW5lcy5cbiAgICAgICAgcHJpbnRJbmZvKCdGZXRjaGluZyBwaXBlbGluZSByZWdpc3RyeSBmcm9tIHBsYXRmb3JtJywgeyBvcmc6IG9wdGlvbnMub3JnID8/ICcoYWxsKScgfSk7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyhvcHRpb25zKTtcbiAgICAgICAgY29uc3QgcmVnaXN0cnlSZXMgPSBhd2FpdCBjbGllbnQuZ2V0PHsgZW50cmllczogUmVnaXN0cnlFbnRyeVtdIH0+KFxuICAgICAgICAgIGAvYXBpL3BpcGVsaW5lcy9yZWdpc3RyeSR7b3B0aW9ucy5vcmcgPyBgP29yZ0lkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KG9wdGlvbnMub3JnKX1gIDogJyd9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZW50cmllczogUmVnaXN0cnlFbnRyeVtdID0gKHJlZ2lzdHJ5UmVzIGFzIHsgZW50cmllcz86IFJlZ2lzdHJ5RW50cnlbXSB9KT8uZW50cmllc1xuICAgICAgICAgID8/IChyZWdpc3RyeVJlcyBhcyB7IGRhdGE/OiB7IGVudHJpZXM/OiBSZWdpc3RyeUVudHJ5W10gfSB9KT8uZGF0YT8uZW50cmllc1xuICAgICAgICAgID8/IFtdO1xuXG4gICAgICAgIC8vIEZldGNoIHN0YWNrcyBmcm9tIENsb3VkRm9ybWF0aW9uLlxuICAgICAgICBwcmludEluZm8oJ0xpc3RpbmcgQ2xvdWRGb3JtYXRpb24gc3RhY2tzJywgeyByZWdpb24gfSk7XG4gICAgICAgIGNvbnN0IGNmbiA9IG5ldyBDbG91ZEZvcm1hdGlvbkNsaWVudCh7IHJlZ2lvbiB9KTtcbiAgICAgICAgY29uc3Qgc3RhY2tzOiBTdGFja0luZm9bXSA9IFtdO1xuICAgICAgICBsZXQgbmV4dFRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGxldCBwYWdlcyA9IDA7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBjb25zdCBsaXN0UmVzcCA9IGF3YWl0IGNmbi5zZW5kKG5ldyBMaXN0U3RhY2tzQ29tbWFuZCh7XG4gICAgICAgICAgICBTdGFja1N0YXR1c0ZpbHRlcjogQUNUSVZFX1NUQVRVU0VTIGFzIFN0YWNrU3RhdHVzW10sXG4gICAgICAgICAgICBOZXh0VG9rZW46IG5leHRUb2tlbixcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgZm9yIChjb25zdCBzdW1tYXJ5IG9mIGxpc3RSZXNwLlN0YWNrU3VtbWFyaWVzID8/IFtdKSB7XG4gICAgICAgICAgICBpZiAoIXN1bW1hcnkuU3RhY2tOYW1lKSBjb250aW51ZTtcbiAgICAgICAgICAgIC8vIFB1bGwgdGFncyB2aWEgRGVzY3JpYmVTdGFja3MgKExpc3RTdGFja3MgZG9lc24ndCBpbmNsdWRlIHRoZW0pLlxuICAgICAgICAgICAgY29uc3QgZGVzYyA9IGF3YWl0IGNmbi5zZW5kKG5ldyBEZXNjcmliZVN0YWNrc0NvbW1hbmQoeyBTdGFja05hbWU6IHN1bW1hcnkuU3RhY2tOYW1lIH0pKTtcbiAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSBkZXNjLlN0YWNrcz8uWzBdPy5UYWdzID8/IFtdO1xuICAgICAgICAgICAgY29uc3QgcGJUYWcgPSB0YWdzLmZpbmQoKHQpID0+IHQuS2V5ID09PSAncGlwZWxpbmUtYnVpbGRlcicpPy5WYWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IG9yZ1RhZyA9IHRhZ3MuZmluZCgodCkgPT4gdC5LZXkgPT09ICdPcmdJZCcgfHwgdC5LZXkgPT09ICdvcmdJZCcpPy5WYWx1ZTtcbiAgICAgICAgICAgIGlmICghcGJUYWcpIGNvbnRpbnVlOyAvLyBOb3QgYSBwaXBlbGluZS1idWlsZGVyIHN0YWNrLlxuICAgICAgICAgICAgaWYgKG9wdGlvbnMub3JnICYmIG9yZ1RhZyAmJiBvcmdUYWcgIT09IG9wdGlvbnMub3JnKSBjb250aW51ZTsgLy8gV3Jvbmcgb3JnIGZpbHRlci5cbiAgICAgICAgICAgIHN0YWNrcy5wdXNoKHtcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiBzdW1tYXJ5LlN0YWNrTmFtZSxcbiAgICAgICAgICAgICAgc3RhY2tTdGF0dXM6IHN1bW1hcnkuU3RhY2tTdGF0dXMgPz8gJ1VOS05PV04nLFxuICAgICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICAgIHBpcGVsaW5lQnVpbGRlclRhZzogcGJUYWcsXG4gICAgICAgICAgICAgIG9yZ0lkVGFnOiBvcmdUYWcsXG4gICAgICAgICAgICAgIGNyZWF0aW9uVGltZTogc3VtbWFyeS5DcmVhdGlvblRpbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dFRva2VuID0gbGlzdFJlc3AuTmV4dFRva2VuO1xuICAgICAgICAgIHBhZ2VzKys7XG4gICAgICAgIH0gd2hpbGUgKG5leHRUb2tlbiAmJiBwYWdlcyA8IDIwKTtcblxuICAgICAgICAvLyBEaWZmLlxuICAgICAgICBjb25zdCByZWdpc3RyeVN0YWNrTmFtZXMgPSBuZXcgU2V0KGVudHJpZXMubWFwKChlKSA9PiBlLnN0YWNrTmFtZSkuZmlsdGVyKChuKTogbiBpcyBzdHJpbmcgPT4gISFuKSk7XG4gICAgICAgIGNvbnN0IGNmblN0YWNrTmFtZXMgPSBuZXcgU2V0KHN0YWNrcy5tYXAoKHMpID0+IHMuc3RhY2tOYW1lKSk7XG5cbiAgICAgICAgY29uc3QgZmluZGluZ3M6IEF1ZGl0RmluZGluZ1tdID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgc3RhY2sgb2Ygc3RhY2tzKSB7XG4gICAgICAgICAgaWYgKCFyZWdpc3RyeVN0YWNrTmFtZXMuaGFzKHN0YWNrLnN0YWNrTmFtZSkpIHtcbiAgICAgICAgICAgIGZpbmRpbmdzLnB1c2goe1xuICAgICAgICAgICAgICB0eXBlOiAnb3JwaGFuZWQtc3RhY2snLFxuICAgICAgICAgICAgICBzdGFja05hbWU6IHN0YWNrLnN0YWNrTmFtZSxcbiAgICAgICAgICAgICAgZGV0YWlsOiBgQ2xvdWRGb3JtYXRpb24gc3RhY2sgdGFnZ2VkIHBpcGVsaW5lLWJ1aWxkZXI9JHtzdGFjay5waXBlbGluZUJ1aWxkZXJUYWcgPz8gJyh1bnNldCknfSBoYXMgbm8gbWF0Y2hpbmcgcGlwZWxpbmVfcmVnaXN0cnkgZW50cnlgLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgIGlmIChlbnRyeS5zdGFja05hbWUgJiYgIWNmblN0YWNrTmFtZXMuaGFzKGVudHJ5LnN0YWNrTmFtZSkpIHtcbiAgICAgICAgICAgIGZpbmRpbmdzLnB1c2goe1xuICAgICAgICAgICAgICB0eXBlOiAnbWlzc2luZy1zdGFjaycsXG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogZW50cnkuc3RhY2tOYW1lLFxuICAgICAgICAgICAgICBwaXBlbGluZUlkOiBlbnRyeS5waXBlbGluZUlkLFxuICAgICAgICAgICAgICBwaXBlbGluZU5hbWU6IGVudHJ5LnBpcGVsaW5lTmFtZSxcbiAgICAgICAgICAgICAgZGV0YWlsOiBgUmVnaXN0cnkgZW50cnkgcmVmZXJlbmNlcyBzdGFjayAke2VudHJ5LnN0YWNrTmFtZX0gYnV0IG5vIHN1Y2ggc3RhY2sgZXhpc3RzIGluIENsb3VkRm9ybWF0aW9uYCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV4aXRDb2RlID0gZmluZGluZ3MubGVuZ3RoID4gMCA/IDEgOiAwO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBzY2FubmVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgIG9yZ0ZpbHRlcjogb3B0aW9ucy5vcmcsXG4gICAgICAgICAgICByZWdpc3RyeUVudHJpZXM6IGVudHJpZXMubGVuZ3RoLFxuICAgICAgICAgICAgY2ZuU3RhY2tzOiBzdGFja3MubGVuZ3RoLFxuICAgICAgICAgICAgZmluZGluZ3MsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdBdWRpdCBSZXN1bHRzJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdDb3VudHMnLCB7XG4gICAgICAgICAgICByZWdpc3RyeUVudHJpZXM6IFN0cmluZyhlbnRyaWVzLmxlbmd0aCksXG4gICAgICAgICAgICBjZm5TdGFja3M6IFN0cmluZyhzdGFja3MubGVuZ3RoKSxcbiAgICAgICAgICAgIGZpbmRpbmdzOiBTdHJpbmcoZmluZGluZ3MubGVuZ3RoKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoZmluZGluZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBwcmludFN1Y2Nlc3MoJ05vIGRyaWZ0IGJldHdlZW4gcGlwZWxpbmVfcmVnaXN0cnkgYW5kIENsb3VkRm9ybWF0aW9uJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZiBvZiBmaW5kaW5ncykge1xuICAgICAgICAgICAgICBpZiAoZi50eXBlID09PSAnb3JwaGFuZWQtc3RhY2snKSB7XG4gICAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBPUlBIQU5FRCAgJHtmLnN0YWNrTmFtZX0g4oCUICR7Zi5kZXRhaWx9YCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBNSVNTSU5HICAgJHtmLnN0YWNrTmFtZX0gKHBpcGVsaW5lICR7Zi5waXBlbGluZUlkID8/ICc/J30pIOKAlCAke2YuZGV0YWlsfWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmludEVycm9yKGAke2ZpbmRpbmdzLmxlbmd0aH0gZHJpZnQgZmluZGluZyR7ZmluZGluZ3MubGVuZ3RoID09PSAxID8gJycgOiAncyd9LiBSZXZpZXcgYW5kIHJlY29uY2lsZSBtYW51YWxseS5gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzcy5leGl0KGV4aXRDb2RlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiBmYWxzZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdhdWRpdC1zdGFja3MnLCBleGVjdXRpb25JZCB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDIpO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const output_utils_1 = require("../utils/output-utils");
|
|
3
|
+
import { CoreConstants } from '@pipeline-builder/pipeline-core';
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { decodeTokenPayload } from '../utils/auth-guard.js';
|
|
6
|
+
import { getSecretValue, listSecrets } from '../utils/aws-secrets.js';
|
|
7
|
+
import { printCommandHeader } from '../utils/command-utils.js';
|
|
8
|
+
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
9
|
+
import { printError, printInfo, printSection, printSuccess, printWarning } from '../utils/output-utils.js';
|
|
12
10
|
/**
|
|
13
11
|
* Registers the `audit-tokens` command with the CLI program.
|
|
14
12
|
*
|
|
@@ -27,26 +25,26 @@ const output_utils_1 = require("../utils/output-utils");
|
|
|
27
25
|
* pipeline-manager audit-tokens --region us-east-1 --json
|
|
28
26
|
* ```
|
|
29
27
|
*/
|
|
30
|
-
function auditTokens(program) {
|
|
28
|
+
export function auditTokens(program) {
|
|
31
29
|
program
|
|
32
30
|
.command('audit-tokens')
|
|
33
31
|
.description('Scan stored platform tokens in AWS Secrets Manager and report upcoming expirations')
|
|
34
32
|
.option('--region <region>', 'AWS region (defaults to AWS_REGION env)')
|
|
35
33
|
.option('--profile <profile>', 'AWS CLI profile', 'default')
|
|
36
34
|
.option('--warn-days <days>', 'Flag tokens expiring within N days as at-risk', '7')
|
|
37
|
-
.option('--prefix <prefix>', 'Secrets Manager name prefix to scan', `${
|
|
35
|
+
.option('--prefix <prefix>', 'Secrets Manager name prefix to scan', `${CoreConstants.SECRETS_PATH_PREFIX}/`)
|
|
38
36
|
.option('--json', 'Output results as JSON', false)
|
|
39
37
|
.action(async (options) => {
|
|
40
|
-
const executionId =
|
|
38
|
+
const executionId = printCommandHeader('Audit Tokens');
|
|
41
39
|
const region = options.region || process.env.AWS_REGION || process.env.CDK_DEFAULT_REGION || 'us-east-1';
|
|
42
40
|
const warnDays = parseInt(options.warnDays, 10);
|
|
43
41
|
if (!Number.isFinite(warnDays) || warnDays < 0) {
|
|
44
|
-
|
|
42
|
+
printError('Invalid --warn-days value', { provided: options.warnDays });
|
|
45
43
|
process.exit(2);
|
|
46
44
|
}
|
|
47
45
|
try {
|
|
48
|
-
|
|
49
|
-
const secrets = await
|
|
46
|
+
printInfo('Listing secrets', { region, prefix: options.prefix });
|
|
47
|
+
const secrets = await listSecrets(options.prefix, { region, profile: options.profile });
|
|
50
48
|
// Filter to ones following the `<prefix>/<orgId>/platform` pattern.
|
|
51
49
|
const platformSecrets = secrets.filter((s) => s.name.endsWith('/platform'));
|
|
52
50
|
const entries = [];
|
|
@@ -55,10 +53,10 @@ function auditTokens(program) {
|
|
|
55
53
|
for (const s of platformSecrets) {
|
|
56
54
|
let raw;
|
|
57
55
|
try {
|
|
58
|
-
raw = await
|
|
56
|
+
raw = await getSecretValue(s.name, { region, profile: options.profile });
|
|
59
57
|
}
|
|
60
58
|
catch (err) {
|
|
61
|
-
|
|
59
|
+
printWarning(`Could not read ${s.name}: ${err instanceof Error ? err.message : String(err)}`);
|
|
62
60
|
continue;
|
|
63
61
|
}
|
|
64
62
|
let parsed;
|
|
@@ -66,7 +64,7 @@ function auditTokens(program) {
|
|
|
66
64
|
parsed = JSON.parse(raw);
|
|
67
65
|
}
|
|
68
66
|
catch {
|
|
69
|
-
|
|
67
|
+
printWarning(`Secret ${s.name} is not valid JSON, skipping`);
|
|
70
68
|
continue;
|
|
71
69
|
}
|
|
72
70
|
// Prefer the explicit expiresAt field written by store-token; fall back
|
|
@@ -78,13 +76,13 @@ function auditTokens(program) {
|
|
|
78
76
|
expiresAt = d;
|
|
79
77
|
}
|
|
80
78
|
if (!expiresAt && parsed.accessToken) {
|
|
81
|
-
const payload =
|
|
79
|
+
const payload = decodeTokenPayload(parsed.accessToken);
|
|
82
80
|
if (payload?.exp && typeof payload.exp === 'number') {
|
|
83
81
|
expiresAt = new Date(payload.exp * 1000);
|
|
84
82
|
}
|
|
85
83
|
}
|
|
86
84
|
if (!expiresAt) {
|
|
87
|
-
|
|
85
|
+
printWarning(`Secret ${s.name} has no expiry information, skipping`);
|
|
88
86
|
continue;
|
|
89
87
|
}
|
|
90
88
|
const daysUntilExpiry = Math.floor((expiresAt.getTime() - now) / (24 * 60 * 60 * 1000));
|
|
@@ -107,25 +105,25 @@ function auditTokens(program) {
|
|
|
107
105
|
}, null, 2));
|
|
108
106
|
}
|
|
109
107
|
else {
|
|
110
|
-
|
|
111
|
-
|
|
108
|
+
printSection('Audit Results');
|
|
109
|
+
printInfo(`Scanned ${entries.length} platform secret${entries.length === 1 ? '' : 's'}`);
|
|
112
110
|
if (atRisk.length === 0) {
|
|
113
|
-
|
|
111
|
+
printSuccess(`All tokens valid for at least ${warnDays} days`);
|
|
114
112
|
}
|
|
115
113
|
else {
|
|
116
114
|
for (const e of atRisk) {
|
|
117
115
|
const label = e.status === 'expired'
|
|
118
116
|
? `EXPIRED ${Math.abs(e.daysUntilExpiry)} day${e.daysUntilExpiry === -1 ? '' : 's'} ago`
|
|
119
117
|
: `expires in ${e.daysUntilExpiry} day${e.daysUntilExpiry === 1 ? '' : 's'}`;
|
|
120
|
-
|
|
118
|
+
printWarning(`${e.secretName} — ${label}`);
|
|
121
119
|
}
|
|
122
|
-
|
|
120
|
+
printError(`${atRisk.length} secret${atRisk.length === 1 ? '' : 's'} need rotation. Run \`pipeline-manager store-token --days <N>\` to refresh.`);
|
|
123
121
|
}
|
|
124
122
|
}
|
|
125
123
|
process.exit(exitCode);
|
|
126
124
|
}
|
|
127
125
|
catch (error) {
|
|
128
|
-
|
|
126
|
+
handleError(error, ERROR_CODES.API_REQUEST, {
|
|
129
127
|
debug: program.opts().debug,
|
|
130
128
|
exit: false,
|
|
131
129
|
context: { command: 'audit-tokens', executionId },
|
|
@@ -134,4 +132,4 @@ function auditTokens(program) {
|
|
|
134
132
|
}
|
|
135
133
|
});
|
|
136
134
|
}
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2F1ZGl0LXRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7QUFvQ3RDLGtDQThHQztBQWhKRCxtRUFBZ0U7QUFFaEUsb0RBQXlEO0FBQ3pELHNEQUFtRTtBQUNuRSwwREFBNEQ7QUFDNUQsMERBQWtFO0FBQ2xFLHdEQUF3RztBQVV4Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxTQUFnQixXQUFXLENBQUMsT0FBZ0I7SUFDMUMsT0FBTztTQUNKLE9BQU8sQ0FBQyxjQUFjLENBQUM7U0FDdkIsV0FBVyxDQUFDLG9GQUFvRixDQUFDO1NBQ2pHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSx5Q0FBeUMsQ0FBQztTQUN0RSxNQUFNLENBQUMscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO1NBQzNELE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSwrQ0FBK0MsRUFBRSxHQUFHLENBQUM7U0FDbEYsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHFDQUFxQyxFQUFFLEdBQUcsNkJBQWEsQ0FBQyxtQkFBbUIsR0FBRyxDQUFDO1NBQzNHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxDQUFDO1NBQ2pELE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBQSxrQ0FBa0IsRUFBQyxjQUFjLENBQUMsQ0FBQztRQUN2RCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLElBQUksV0FBVyxDQUFDO1FBQ3pHLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FB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Q0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUMvRSxJQUFBLDJCQUFZLEVBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7b0JBQzdDLENBQUM7b0JBQ0QsSUFBQSx5QkFBVSxFQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sVUFBVSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLDZFQUE2RSxDQUFDLENBQUM7Z0JBQ3BKLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUEsMkJBQVcsRUFBQyxLQUFLLEVBQUUsMkJBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUU7YUFDbEQsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvcmVDb25zdGFudHMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZGVjb2RlVG9rZW5QYXlsb2FkIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC1ndWFyZCc7XG5pbXBvcnQgeyBnZXRTZWNyZXRWYWx1ZSwgbGlzdFNlY3JldHMgfSBmcm9tICcuLi91dGlscy9hd3Mtc2VjcmV0cyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXInO1xuaW1wb3J0IHsgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzJztcblxuaW50ZXJmYWNlIFRva2VuQXVkaXRFbnRyeSB7XG4gIHNlY3JldE5hbWU6IHN0cmluZztcbiAgYXJuOiBzdHJpbmc7XG4gIGV4cGlyZXNBdDogRGF0ZTtcbiAgZGF5c1VudGlsRXhwaXJ5OiBudW1iZXI7XG4gIHN0YXR1czogJ2V4cGlyZWQnIHwgJ2V4cGlyaW5nLXNvb24nIHwgJ29rJztcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBhdWRpdC10b2tlbnNgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogU2NhbnMgQVdTIFNlY3JldHMgTWFuYWdlciBmb3Igc3RvcmVkIHBsYXRmb3JtIEpXVHMgKG1hdGNoaW5nIHRoZVxuICogYHBpcGVsaW5lLWJ1aWxkZXIvPG9yZ0lkPi9wbGF0Zm9ybWAgbmFtaW5nIGNvbnZlbnRpb24gdXNlZCBieSBgc3RvcmUtdG9rZW5gKVxuICogYW5kIHJlcG9ydHMgd2hpY2ggc2VjcmV0cyBhcmUgZXhwaXJlZCBvciBjbG9zZSB0byBleHBpcmluZy5cbiAqXG4gKiBEZXNpZ25lZCBmb3IgY3JvbiB1c2U6XG4gKiAgIC0gRXhpdHMgMCB3aGVuIG5vdGhpbmcgaXMgYXQtcmlzay5cbiAqICAgLSBFeGl0cyAxIHdoZW4gYXQgbGVhc3Qgb25lIHNlY3JldCBpcyBleHBpcmVkIG9yIGV4cGlyZXMgd2l0aGluIGAtLXdhcm4tZGF5c2AuXG4gKiAgIC0gRXhpdHMgMiBvbiBBV1MgZXJyb3JzIC8gc2NhbiBmYWlsdXJlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBhdWRpdC10b2tlbnMgLS1yZWdpb24gdXMtZWFzdC0xIC0td2Fybi1kYXlzIDdcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXVkaXQtdG9rZW5zIC0tcmVnaW9uIHVzLWVhc3QtMSAtLWpzb25cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRUb2tlbnMocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2F1ZGl0LXRva2VucycpXG4gICAgLmRlc2NyaXB0aW9uKCdTY2FuIHN0b3JlZCBwbGF0Zm9ybSB0b2tlbnMgaW4gQVdTIFNlY3JldHMgTWFuYWdlciBhbmQgcmVwb3J0IHVwY29taW5nIGV4cGlyYXRpb25zJylcbiAgICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uIChkZWZhdWx0cyB0byBBV1NfUkVHSU9OIGVudiknKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIENMSSBwcm9maWxlJywgJ2RlZmF1bHQnKVxuICAgIC5vcHRpb24oJy0td2Fybi1kYXlzIDxkYXlzPicsICdGbGFnIHRva2VucyBleHBpcmluZyB3aXRoaW4gTiBkYXlzIGFzIGF0LXJpc2snLCAnNycpXG4gICAgLm9wdGlvbignLS1wcmVmaXggPHByZWZpeD4nLCAnU2VjcmV0cyBNYW5hZ2VyIG5hbWUgcHJlZml4IHRvIHNjYW4nLCBgJHtDb3JlQ29uc3RhbnRzLlNFQ1JFVFNfUEFUSF9QUkVGSVh9L2ApXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHRzIGFzIEpTT04nLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQXVkaXQgVG9rZW5zJyk7XG4gICAgICBjb25zdCByZWdpb24gPSBvcHRpb25zLnJlZ2lvbiB8fCBwcm9jZXNzLmVudi5BV1NfUkVHSU9OIHx8IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCAndXMtZWFzdC0xJztcbiAgICAgIGNvbnN0IHdhcm5EYXlzID0gcGFyc2VJbnQob3B0aW9ucy53YXJuRGF5cywgMTApO1xuICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUod2FybkRheXMpIHx8IHdhcm5EYXlzIDwgMCkge1xuICAgICAgICBwcmludEVycm9yKCdJbnZhbGlkIC0td2Fybi1kYXlzIHZhbHVlJywgeyBwcm92aWRlZDogb3B0aW9ucy53YXJuRGF5cyB9KTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDIpO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBwcmludEluZm8oJ0xpc3Rpbmcgc2VjcmV0cycsIHsgcmVnaW9uLCBwcmVmaXg6IG9wdGlvbnMucHJlZml4IH0pO1xuICAgICAgICBjb25zdCBzZWNyZXRzID0gYXdhaXQgbGlzdFNlY3JldHMob3B0aW9ucy5wcmVmaXgsIHsgcmVnaW9uLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG5cbiAgICAgICAgLy8gRmlsdGVyIHRvIG9uZXMgZm9sbG93aW5nIHRoZSBgPHByZWZpeD4vPG9yZ0lkPi9wbGF0Zm9ybWAgcGF0dGVybi5cbiAgICAgICAgY29uc3QgcGxhdGZvcm1TZWNyZXRzID0gc2VjcmV0cy5maWx0ZXIoKHMpID0+IHMubmFtZS5lbmRzV2l0aCgnL3BsYXRmb3JtJykpO1xuXG4gICAgICAgIGNvbnN0IGVudHJpZXM6IFRva2VuQXVkaXRFbnRyeVtdID0gW107XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHdhcm5DdXRvZmYgPSBub3cgKyB3YXJuRGF5cyAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbiAgICAgICAgZm9yIChjb25zdCBzIG9mIHBsYXRmb3JtU2VjcmV0cykge1xuICAgICAgICAgIGxldCByYXc6IHN0cmluZztcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmF3ID0gYXdhaXQgZ2V0U2VjcmV0VmFsdWUocy5uYW1lLCB7IHJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBDb3VsZCBub3QgcmVhZCAke3MubmFtZX06ICR7ZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpfWApO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHBhcnNlZDogeyBhY2Nlc3NUb2tlbj86IHN0cmluZzsgZXhwaXJlc0F0Pzogc3RyaW5nIH07XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZyhgU2VjcmV0ICR7cy5uYW1lfSBpcyBub3QgdmFsaWQgSlNPTiwgc2tpcHBpbmdgKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFByZWZlciB0aGUgZXhwbGljaXQgZXhwaXJlc0F0IGZpZWxkIHdyaXR0ZW4gYnkgc3RvcmUtdG9rZW47IGZhbGwgYmFja1xuICAgICAgICAgIC8vIHRvIGRlY29kaW5nIHRoZSBKV1QncyBleHAgY2xhaW0gaWYgdGhlIGZpZWxkIGlzIG1pc3NpbmcuXG4gICAgICAgICAgbGV0IGV4cGlyZXNBdDogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBpZiAocGFyc2VkLmV4cGlyZXNBdCkge1xuICAgICAgICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKHBhcnNlZC5leHBpcmVzQXQpO1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oZC5nZXRUaW1lKCkpKSBleHBpcmVzQXQgPSBkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWV4cGlyZXNBdCAmJiBwYXJzZWQuYWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBkZWNvZGVUb2tlblBheWxvYWQocGFyc2VkLmFjY2Vzc1Rva2VuKTtcbiAgICAgICAgICAgIGlmIChwYXlsb2FkPy5leHAgJiYgdHlwZW9mIHBheWxvYWQuZXhwID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICBleHBpcmVzQXQgPSBuZXcgRGF0ZShwYXlsb2FkLmV4cCAqIDEwMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWV4cGlyZXNBdCkge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBTZWNyZXQgJHtzLm5hbWV9IGhhcyBubyBleHBpcnkgaW5mb3JtYXRpb24sIHNraXBwaW5nYCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBkYXlzVW50aWxFeHBpcnkgPSBNYXRoLmZsb29yKChleHBpcmVzQXQuZ2V0VGltZSgpIC0gbm93KSAvICgyNCAqIDYwICogNjAgKiAxMDAwKSk7XG4gICAgICAgICAgY29uc3Qgc3RhdHVzOiBUb2tlbkF1ZGl0RW50cnlbJ3N0YXR1cyddID1cbiAgICAgICAgICAgIGV4cGlyZXNBdC5nZXRUaW1lKCkgPCBub3cgPyAnZXhwaXJlZCdcbiAgICAgICAgICAgICAgOiBleHBpcmVzQXQuZ2V0VGltZSgpIDwgd2FybkN1dG9mZiA/ICdleHBpcmluZy1zb29uJ1xuICAgICAgICAgICAgICAgIDogJ29rJztcbiAgICAgICAgICBlbnRyaWVzLnB1c2goeyBzZWNyZXROYW1lOiBzLm5hbWUsIGFybjogcy5hcm4sIGV4cGlyZXNBdCwgZGF5c1VudGlsRXhwaXJ5LCBzdGF0dXMgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhdFJpc2sgPSBlbnRyaWVzLmZpbHRlcigoZSkgPT4gZS5zdGF0dXMgIT09ICdvaycpO1xuICAgICAgICBjb25zdCBleGl0Q29kZSA9IGF0Umlzay5sZW5ndGggPiAwID8gMSA6IDA7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHNjYW5uZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgd2FybkRheXMsXG4gICAgICAgICAgICB0b3RhbFNjYW5uZWQ6IGVudHJpZXMubGVuZ3RoLFxuICAgICAgICAgICAgYXRSaXNrQ291bnQ6IGF0Umlzay5sZW5ndGgsXG4gICAgICAgICAgICBlbnRyaWVzOiBlbnRyaWVzLm1hcCgoZSkgPT4gKHsgLi4uZSwgZXhwaXJlc0F0OiBlLmV4cGlyZXNBdC50b0lTT1N0cmluZygpIH0pKSxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgIH0sIG51bGwsIDIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ0F1ZGl0IFJlc3VsdHMnKTtcbiAgICAgICAgICBwcmludEluZm8oYFNjYW5uZWQgJHtlbnRyaWVzLmxlbmd0aH0gcGxhdGZvcm0gc2VjcmV0JHtlbnRyaWVzLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnfWApO1xuICAgICAgICAgIGlmIChhdFJpc2subGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBwcmludFN1Y2Nlc3MoYEFsbCB0b2tlbnMgdmFsaWQgZm9yIGF0IGxlYXN0ICR7d2FybkRheXN9IGRheXNgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIGF0Umlzaykge1xuICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGUuc3RhdHVzID09PSAnZXhwaXJlZCdcbiAgICAgICAgICAgICAgICA/IGBFWFBJUkVEICR7TWF0aC5hYnMoZS5kYXlzVW50aWxFeHBpcnkpfSBkYXkke2UuZGF5c1VudGlsRXhwaXJ5ID09PSAtMSA/ICcnIDogJ3MnfSBhZ29gXG4gICAgICAgICAgICAgICAgOiBgZXhwaXJlcyBpbiAke2UuZGF5c1VudGlsRXhwaXJ5fSBkYXkke2UuZGF5c1VudGlsRXhwaXJ5ID09PSAxID8gJycgOiAncyd9YDtcbiAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGAke2Uuc2VjcmV0TmFtZX0g4oCUICR7bGFiZWx9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmludEVycm9yKGAke2F0Umlzay5sZW5ndGh9IHNlY3JldCR7YXRSaXNrLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnfSBuZWVkIHJvdGF0aW9uLiBSdW4gXFxgcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLWRheXMgPE4+XFxgIHRvIHJlZnJlc2guYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3MuZXhpdChleGl0Q29kZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogZmFsc2UsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnYXVkaXQtdG9rZW5zJywgZXhlY3V0aW9uSWQgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2F1ZGl0LXRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBVTNHOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsT0FBZ0I7SUFDMUMsT0FBTztTQUNKLE9BQU8sQ0FBQyxjQUFjLENBQUM7U0FDdkIsV0FBVyxDQUFDLG9GQUFvRixDQUFDO1NBQ2pHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSx5Q0FBeUMsQ0FBQztTQUN0RSxNQUFNLENBQUMscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO1NBQzNELE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSwrQ0FBK0MsRUFBRSxHQUFHLENBQUM7U0FDbEYsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHFDQUFxQyxFQUFFLEdBQUcsYUFBYSxDQUFDLG1CQUFtQixHQUFHLENBQUM7U0FDM0csTUFBTSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLENBQUM7U0FD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QUNsQyxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTTs0QkFDeEYsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLGVBQWUsT0FBTyxDQUFDLENBQUMsZUFBZSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDL0UsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUM3QyxDQUFDO29CQUNELFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLFVBQVUsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyw2RUFBNkUsQ0FBQyxDQUFDO2dCQUNwSixDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUU7YUFDbEQsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvcmVDb25zdGFudHMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZGVjb2RlVG9rZW5QYXlsb2FkIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC1ndWFyZC5qcyc7XG5pbXBvcnQgeyBnZXRTZWNyZXRWYWx1ZSwgbGlzdFNlY3JldHMgfSBmcm9tICcuLi91dGlscy9hd3Mtc2VjcmV0cy5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcblxuaW50ZXJmYWNlIFRva2VuQXVkaXRFbnRyeSB7XG4gIHNlY3JldE5hbWU6IHN0cmluZztcbiAgYXJuOiBzdHJpbmc7XG4gIGV4cGlyZXNBdDogRGF0ZTtcbiAgZGF5c1VudGlsRXhwaXJ5OiBudW1iZXI7XG4gIHN0YXR1czogJ2V4cGlyZWQnIHwgJ2V4cGlyaW5nLXNvb24nIHwgJ29rJztcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBhdWRpdC10b2tlbnNgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogU2NhbnMgQVdTIFNlY3JldHMgTWFuYWdlciBmb3Igc3RvcmVkIHBsYXRmb3JtIEpXVHMgKG1hdGNoaW5nIHRoZVxuICogYHBpcGVsaW5lLWJ1aWxkZXIvPG9yZ0lkPi9wbGF0Zm9ybWAgbmFtaW5nIGNvbnZlbnRpb24gdXNlZCBieSBgc3RvcmUtdG9rZW5gKVxuICogYW5kIHJlcG9ydHMgd2hpY2ggc2VjcmV0cyBhcmUgZXhwaXJlZCBvciBjbG9zZSB0byBleHBpcmluZy5cbiAqXG4gKiBEZXNpZ25lZCBmb3IgY3JvbiB1c2U6XG4gKiAgIC0gRXhpdHMgMCB3aGVuIG5vdGhpbmcgaXMgYXQtcmlzay5cbiAqICAgLSBFeGl0cyAxIHdoZW4gYXQgbGVhc3Qgb25lIHNlY3JldCBpcyBleHBpcmVkIG9yIGV4cGlyZXMgd2l0aGluIGAtLXdhcm4tZGF5c2AuXG4gKiAgIC0gRXhpdHMgMiBvbiBBV1MgZXJyb3JzIC8gc2NhbiBmYWlsdXJlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBhdWRpdC10b2tlbnMgLS1yZWdpb24gdXMtZWFzdC0xIC0td2Fybi1kYXlzIDdcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXVkaXQtdG9rZW5zIC0tcmVnaW9uIHVzLWVhc3QtMSAtLWpzb25cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRUb2tlbnMocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2F1ZGl0LXRva2VucycpXG4gICAgLmRlc2NyaXB0aW9uKCdTY2FuIHN0b3JlZCBwbGF0Zm9ybSB0b2tlbnMgaW4gQVdTIFNlY3JldHMgTWFuYWdlciBhbmQgcmVwb3J0IHVwY29taW5nIGV4cGlyYXRpb25zJylcbiAgICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uIChkZWZhdWx0cyB0byBBV1NfUkVHSU9OIGVudiknKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIENMSSBwcm9maWxlJywgJ2RlZmF1bHQnKVxuICAgIC5vcHRpb24oJy0td2Fybi1kYXlzIDxkYXlzPicsICdGbGFnIHRva2VucyBleHBpcmluZyB3aXRoaW4gTiBkYXlzIGFzIGF0LXJpc2snLCAnNycpXG4gICAgLm9wdGlvbignLS1wcmVmaXggPHByZWZpeD4nLCAnU2VjcmV0cyBNYW5hZ2VyIG5hbWUgcHJlZml4IHRvIHNjYW4nLCBgJHtDb3JlQ29uc3RhbnRzLlNFQ1JFVFNfUEFUSF9QUkVGSVh9L2ApXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHRzIGFzIEpTT04nLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQXVkaXQgVG9rZW5zJyk7XG4gICAgICBjb25zdCByZWdpb24gPSBvcHRpb25zLnJlZ2lvbiB8fCBwcm9jZXNzLmVudi5BV1NfUkVHSU9OIHx8IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCAndXMtZWFzdC0xJztcbiAgICAgIGNvbnN0IHdhcm5EYXlzID0gcGFyc2VJbnQob3B0aW9ucy53YXJuRGF5cywgMTApO1xuICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUod2FybkRheXMpIHx8IHdhcm5EYXlzIDwgMCkge1xuICAgICAgICBwcmludEVycm9yKCdJbnZhbGlkIC0td2Fybi1kYXlzIHZhbHVlJywgeyBwcm92aWRlZDogb3B0aW9ucy53YXJuRGF5cyB9KTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDIpO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBwcmludEluZm8oJ0xpc3Rpbmcgc2VjcmV0cycsIHsgcmVnaW9uLCBwcmVmaXg6IG9wdGlvbnMucHJlZml4IH0pO1xuICAgICAgICBjb25zdCBzZWNyZXRzID0gYXdhaXQgbGlzdFNlY3JldHMob3B0aW9ucy5wcmVmaXgsIHsgcmVnaW9uLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG5cbiAgICAgICAgLy8gRmlsdGVyIHRvIG9uZXMgZm9sbG93aW5nIHRoZSBgPHByZWZpeD4vPG9yZ0lkPi9wbGF0Zm9ybWAgcGF0dGVybi5cbiAgICAgICAgY29uc3QgcGxhdGZvcm1TZWNyZXRzID0gc2VjcmV0cy5maWx0ZXIoKHMpID0+IHMubmFtZS5lbmRzV2l0aCgnL3BsYXRmb3JtJykpO1xuXG4gICAgICAgIGNvbnN0IGVudHJpZXM6IFRva2VuQXVkaXRFbnRyeVtdID0gW107XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHdhcm5DdXRvZmYgPSBub3cgKyB3YXJuRGF5cyAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbiAgICAgICAgZm9yIChjb25zdCBzIG9mIHBsYXRmb3JtU2VjcmV0cykge1xuICAgICAgICAgIGxldCByYXc6IHN0cmluZztcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmF3ID0gYXdhaXQgZ2V0U2VjcmV0VmFsdWUocy5uYW1lLCB7IHJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBDb3VsZCBub3QgcmVhZCAke3MubmFtZX06ICR7ZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpfWApO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHBhcnNlZDogeyBhY2Nlc3NUb2tlbj86IHN0cmluZzsgZXhwaXJlc0F0Pzogc3RyaW5nIH07XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZyhgU2VjcmV0ICR7cy5uYW1lfSBpcyBub3QgdmFsaWQgSlNPTiwgc2tpcHBpbmdgKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFByZWZlciB0aGUgZXhwbGljaXQgZXhwaXJlc0F0IGZpZWxkIHdyaXR0ZW4gYnkgc3RvcmUtdG9rZW47IGZhbGwgYmFja1xuICAgICAgICAgIC8vIHRvIGRlY29kaW5nIHRoZSBKV1QncyBleHAgY2xhaW0gaWYgdGhlIGZpZWxkIGlzIG1pc3NpbmcuXG4gICAgICAgICAgbGV0IGV4cGlyZXNBdDogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBpZiAocGFyc2VkLmV4cGlyZXNBdCkge1xuICAgICAgICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKHBhcnNlZC5leHBpcmVzQXQpO1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oZC5nZXRUaW1lKCkpKSBleHBpcmVzQXQgPSBkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWV4cGlyZXNBdCAmJiBwYXJzZWQuYWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBkZWNvZGVUb2tlblBheWxvYWQocGFyc2VkLmFjY2Vzc1Rva2VuKTtcbiAgICAgICAgICAgIGlmIChwYXlsb2FkPy5leHAgJiYgdHlwZW9mIHBheWxvYWQuZXhwID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICBleHBpcmVzQXQgPSBuZXcgRGF0ZShwYXlsb2FkLmV4cCAqIDEwMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWV4cGlyZXNBdCkge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBTZWNyZXQgJHtzLm5hbWV9IGhhcyBubyBleHBpcnkgaW5mb3JtYXRpb24sIHNraXBwaW5nYCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBkYXlzVW50aWxFeHBpcnkgPSBNYXRoLmZsb29yKChleHBpcmVzQXQuZ2V0VGltZSgpIC0gbm93KSAvICgyNCAqIDYwICogNjAgKiAxMDAwKSk7XG4gICAgICAgICAgY29uc3Qgc3RhdHVzOiBUb2tlbkF1ZGl0RW50cnlbJ3N0YXR1cyddID1cbiAgICAgICAgICAgIGV4cGlyZXNBdC5nZXRUaW1lKCkgPCBub3cgPyAnZXhwaXJlZCdcbiAgICAgICAgICAgICAgOiBleHBpcmVzQXQuZ2V0VGltZSgpIDwgd2FybkN1dG9mZiA/ICdleHBpcmluZy1zb29uJ1xuICAgICAgICAgICAgICAgIDogJ29rJztcbiAgICAgICAgICBlbnRyaWVzLnB1c2goeyBzZWNyZXROYW1lOiBzLm5hbWUsIGFybjogcy5hcm4sIGV4cGlyZXNBdCwgZGF5c1VudGlsRXhwaXJ5LCBzdGF0dXMgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhdFJpc2sgPSBlbnRyaWVzLmZpbHRlcigoZSkgPT4gZS5zdGF0dXMgIT09ICdvaycpO1xuICAgICAgICBjb25zdCBleGl0Q29kZSA9IGF0Umlzay5sZW5ndGggPiAwID8gMSA6IDA7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHNjYW5uZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgd2FybkRheXMsXG4gICAgICAgICAgICB0b3RhbFNjYW5uZWQ6IGVudHJpZXMubGVuZ3RoLFxuICAgICAgICAgICAgYXRSaXNrQ291bnQ6IGF0Umlzay5sZW5ndGgsXG4gICAgICAgICAgICBlbnRyaWVzOiBlbnRyaWVzLm1hcCgoZSkgPT4gKHsgLi4uZSwgZXhwaXJlc0F0OiBlLmV4cGlyZXNBdC50b0lTT1N0cmluZygpIH0pKSxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgIH0sIG51bGwsIDIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ0F1ZGl0IFJlc3VsdHMnKTtcbiAgICAgICAgICBwcmludEluZm8oYFNjYW5uZWQgJHtlbnRyaWVzLmxlbmd0aH0gcGxhdGZvcm0gc2VjcmV0JHtlbnRyaWVzLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnfWApO1xuICAgICAgICAgIGlmIChhdFJpc2subGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBwcmludFN1Y2Nlc3MoYEFsbCB0b2tlbnMgdmFsaWQgZm9yIGF0IGxlYXN0ICR7d2FybkRheXN9IGRheXNgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIGF0Umlzaykge1xuICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGUuc3RhdHVzID09PSAnZXhwaXJlZCdcbiAgICAgICAgICAgICAgICA/IGBFWFBJUkVEICR7TWF0aC5hYnMoZS5kYXlzVW50aWxFeHBpcnkpfSBkYXkke2UuZGF5c1VudGlsRXhwaXJ5ID09PSAtMSA/ICcnIDogJ3MnfSBhZ29gXG4gICAgICAgICAgICAgICAgOiBgZXhwaXJlcyBpbiAke2UuZGF5c1VudGlsRXhwaXJ5fSBkYXkke2UuZGF5c1VudGlsRXhwaXJ5ID09PSAxID8gJycgOiAncyd9YDtcbiAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGAke2Uuc2VjcmV0TmFtZX0g4oCUICR7bGFiZWx9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmludEVycm9yKGAke2F0Umlzay5sZW5ndGh9IHNlY3JldCR7YXRSaXNrLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnfSBuZWVkIHJvdGF0aW9uLiBSdW4gXFxgcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbiAtLWRheXMgPE4+XFxgIHRvIHJlZnJlc2guYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3MuZXhpdChleGl0Q29kZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogZmFsc2UsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnYXVkaXQtdG9rZW5zJywgZXhlY3V0aW9uSWQgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
@@ -1,28 +1,20 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
const cli_constants_1 = require("../config/cli.constants");
|
|
14
|
-
const audit_log_1 = require("../utils/audit-log");
|
|
15
|
-
const cdk_utils_1 = require("../utils/cdk-utils");
|
|
16
|
-
const command_utils_1 = require("../utils/command-utils");
|
|
17
|
-
const error_handler_1 = require("../utils/error-handler");
|
|
18
|
-
const output_utils_1 = require("../utils/output-utils");
|
|
19
|
-
const { bold, cyan, dim } = picocolors_1.default;
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import pico from 'picocolors';
|
|
5
|
+
import { ENV_VARS, assertShellSafe } from '../config/cli.constants.js';
|
|
6
|
+
import { auditLog } from '../utils/audit-log.js';
|
|
7
|
+
import { ensureCdkAvailable, executeCdkShellCommand } from '../utils/cdk-utils.js';
|
|
8
|
+
import { printCommandHeader } from '../utils/command-utils.js';
|
|
9
|
+
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
10
|
+
import { printError, printInfo, printKeyValue, printSection, printSuccess } from '../utils/output-utils.js';
|
|
11
|
+
const { bold, cyan, dim } = pico;
|
|
20
12
|
/**
|
|
21
13
|
* Resolves the AWS account ID from the CLI option or environment variable.
|
|
22
14
|
* @returns The account ID string, or `undefined` if not available.
|
|
23
15
|
*/
|
|
24
16
|
/** @internal Exported for testing only */
|
|
25
|
-
function resolveAccount(optionValue) {
|
|
17
|
+
export function resolveAccount(optionValue) {
|
|
26
18
|
return optionValue || process.env.AWS_ACCOUNT_ID || process.env.CDK_DEFAULT_ACCOUNT;
|
|
27
19
|
}
|
|
28
20
|
/**
|
|
@@ -30,18 +22,18 @@ function resolveAccount(optionValue) {
|
|
|
30
22
|
* @returns The region string, or `undefined` if not available.
|
|
31
23
|
*/
|
|
32
24
|
/** @internal Exported for testing only */
|
|
33
|
-
function resolveRegion(optionValue) {
|
|
34
|
-
return optionValue || process.env[
|
|
25
|
+
export function resolveRegion(optionValue) {
|
|
26
|
+
return optionValue || process.env[ENV_VARS.AWS_REGION] || process.env.CDK_DEFAULT_REGION || 'us-east-1';
|
|
35
27
|
}
|
|
36
28
|
/**
|
|
37
29
|
* Builds the `cdk bootstrap` command string from the resolved options.
|
|
38
30
|
*/
|
|
39
31
|
/** @internal Exported for testing only */
|
|
40
|
-
function buildBootstrapCommand(options) {
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
export function buildBootstrapCommand(options) {
|
|
33
|
+
assertShellSafe(options.account, 'account');
|
|
34
|
+
assertShellSafe(options.region, 'region');
|
|
43
35
|
if (options.profile)
|
|
44
|
-
|
|
36
|
+
assertShellSafe(options.profile, 'profile');
|
|
45
37
|
const parts = [
|
|
46
38
|
'cdk',
|
|
47
39
|
'bootstrap',
|
|
@@ -69,7 +61,7 @@ function buildBootstrapCommand(options) {
|
|
|
69
61
|
*
|
|
70
62
|
* @param program - The root Commander program instance to attach the command to.
|
|
71
63
|
*/
|
|
72
|
-
function bootstrap(program) {
|
|
64
|
+
export function bootstrap(program) {
|
|
73
65
|
program
|
|
74
66
|
.command('bootstrap')
|
|
75
67
|
.description('Bootstrap AWS CDK toolkit stack in target account/region')
|
|
@@ -81,18 +73,18 @@ function bootstrap(program) {
|
|
|
81
73
|
.option('--cloudformation-execution-policies <arns>', 'IAM policy ARNs for CloudFormation execution role')
|
|
82
74
|
.option('--json', 'Output result as JSON', false)
|
|
83
75
|
.action(async (options) => {
|
|
84
|
-
const executionId =
|
|
76
|
+
const executionId = printCommandHeader('CDK Bootstrap');
|
|
85
77
|
try {
|
|
86
|
-
|
|
78
|
+
auditLog('bootstrap', { executionId, account: options.account, region: options.region, profile: options.profile });
|
|
87
79
|
// Resolve account and region
|
|
88
80
|
const account = resolveAccount(options.account);
|
|
89
81
|
const region = resolveRegion(options.region);
|
|
90
82
|
if (!account) {
|
|
91
|
-
|
|
83
|
+
printError('AWS account ID is required');
|
|
92
84
|
console.log(dim('Provide --account <id> or set AWS_ACCOUNT_ID / CDK_DEFAULT_ACCOUNT environment variable'));
|
|
93
85
|
throw new Error('AWS account ID not provided');
|
|
94
86
|
}
|
|
95
|
-
|
|
87
|
+
printInfo('Bootstrap parameters', {
|
|
96
88
|
account,
|
|
97
89
|
region,
|
|
98
90
|
profile: options.profile,
|
|
@@ -100,8 +92,8 @@ function bootstrap(program) {
|
|
|
100
92
|
trust: options.trust || '(none)',
|
|
101
93
|
cloudformationExecutionPolicies: options.cloudformationExecutionPolicies || '(none)',
|
|
102
94
|
});
|
|
103
|
-
|
|
104
|
-
|
|
95
|
+
ensureCdkAvailable();
|
|
96
|
+
printSuccess('AWS CDK is available');
|
|
105
97
|
// Build bootstrap command
|
|
106
98
|
const command = buildBootstrapCommand({
|
|
107
99
|
account,
|
|
@@ -111,16 +103,16 @@ function bootstrap(program) {
|
|
|
111
103
|
trust: options.trust,
|
|
112
104
|
cloudformationExecutionPolicies: options.cloudformationExecutionPolicies,
|
|
113
105
|
});
|
|
114
|
-
|
|
106
|
+
printSection('CDK Execution');
|
|
115
107
|
console.log(cyan(bold('Command:')), dim(command));
|
|
116
108
|
console.log('');
|
|
117
109
|
// Execute bootstrap
|
|
118
|
-
const result =
|
|
110
|
+
const result = executeCdkShellCommand(command, {
|
|
119
111
|
debug: program.opts().debug,
|
|
120
112
|
showOutput: true,
|
|
121
113
|
});
|
|
122
114
|
console.log('');
|
|
123
|
-
|
|
115
|
+
printSection('Bootstrap Complete');
|
|
124
116
|
if (result.success) {
|
|
125
117
|
if (options.json) {
|
|
126
118
|
console.log(JSON.stringify({
|
|
@@ -132,7 +124,7 @@ function bootstrap(program) {
|
|
|
132
124
|
}, null, 2));
|
|
133
125
|
}
|
|
134
126
|
else {
|
|
135
|
-
|
|
127
|
+
printKeyValue({
|
|
136
128
|
'Execution ID': executionId,
|
|
137
129
|
'Account': account,
|
|
138
130
|
'Region': region,
|
|
@@ -143,7 +135,7 @@ function bootstrap(program) {
|
|
|
143
135
|
}
|
|
144
136
|
}
|
|
145
137
|
catch (error) {
|
|
146
|
-
|
|
138
|
+
handleError(error, ERROR_CODES.VALIDATION, {
|
|
147
139
|
debug: program.opts().debug,
|
|
148
140
|
exit: true,
|
|
149
141
|
context: {
|
|
@@ -156,4 +148,4 @@ function bootstrap(program) {
|
|
|
156
148
|
}
|
|
157
149
|
});
|
|
158
150
|
}
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7Ozs7QUFrQnRDLHdDQUVDO0FBT0Qsc0NBRUM7QUFNRCxzREFtQ0M7QUFVRCw4QkErRkM7QUE1S0QsNERBQThCO0FBQzlCLDJEQUFvRTtBQUNwRSxrREFBOEM7QUFDOUMsa0RBQWdGO0FBQ2hGLDBEQUE0RDtBQUM1RCwwREFBa0U7QUFDbEUsd0RBQXlHO0FBRXpHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLG9CQUFJLENBQUM7QUFFakM7OztHQUdHO0FBQ0gsMENBQTBDO0FBQzFDLFNBQWdCLGNBQWMsQ0FBQyxXQUFvQjtJQUNqRCxPQUFPLFdBQVcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDO0FBQ3RGLENBQUM7QUFFRDs7O0dBR0c7QUFDSCwwQ0FBMEM7QUFDMUMsU0FBZ0IsYUFBYSxDQUFDLFdBQW9CO0lBQ2hELE9BQU8sV0FBVyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLFdBQVcsQ0FBQztBQUMxRyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCwwQ0FBMEM7QUFDMUMsU0FBZ0IscUJBQXFCLENBQUMsT0FPckM7SUFDQyxJQUFBLCtCQUFlLEVBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM1QyxJQUFBLCtCQUFlLEVBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxQyxJQUFJLE9BQU8sQ0FBQyxPQUFPO1FBQUUsSUFBQSwrQkFBZSxFQUFDLE9BQU8sQ0FBQyxPQUFPLEVB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cUJBQzFCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUEsNEJBQWEsRUFBQzt3QkFDWixjQUFjLEVBQUUsV0FBVzt3QkFDM0IsU0FBUyxFQUFFLE9BQU87d0JBQ2xCLFFBQVEsRUFBRSxNQUFNO3dCQUNoQixVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJO3dCQUNsQyxRQUFRLEVBQUUsV0FBVztxQkFDdEIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1FBRUgsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFBLDJCQUFXLEVBQUMsS0FBSyxFQUFFLDJCQUFXLENBQUMsVUFBVSxFQUFFO2dCQUN6QyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRTtvQkFDUCxPQUFPLEVBQUUsV0FBVztvQkFDcEIsV0FBVztvQkFDWCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87b0JBQ3hCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtpQkFDdkI7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBFTlZfVkFSUywgYXNzZXJ0U2hlbGxTYWZlIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMnO1xuaW1wb3J0IHsgYXVkaXRMb2cgfSBmcm9tICcuLi91dGlscy9hdWRpdC1sb2cnO1xuaW1wb3J0IHsgZW5zdXJlQ2RrQXZhaWxhYmxlLCBleGVjdXRlQ2RrU2hlbGxDb21tYW5kIH0gZnJvbSAnLi4vdXRpbHMvY2RrLXV0aWxzJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlcic7XG5pbXBvcnQgeyBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzJztcblxuY29uc3QgeyBib2xkLCBjeWFuLCBkaW0gfSA9IHBpY287XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIEFXUyBhY2NvdW50IElEIGZyb20gdGhlIENMSSBvcHRpb24gb3IgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gKiBAcmV0dXJucyBUaGUgYWNjb3VudCBJRCBzdHJpbmcsIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBhdmFpbGFibGUuXG4gKi9cbi8qKiBAaW50ZXJuYWwgRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVBY2NvdW50KG9wdGlvblZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvblZhbHVlIHx8IHByb2Nlc3MuZW52LkFXU19BQ0NPVU5UX0lEIHx8IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQ7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIEFXUyByZWdpb24gZnJvbSB0aGUgQ0xJIG9wdGlvbiBvciBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqIEByZXR1cm5zIFRoZSByZWdpb24gc3RyaW5nLCBvciBgdW5kZWZpbmVkYCBpZiBub3QgYXZhaWxhYmxlLlxuICovXG4vKiogQGludGVybmFsIEV4cG9ydGVkIGZvciB0ZXN0aW5nIG9ubHkgKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUmVnaW9uKG9wdGlvblZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG9wdGlvblZhbHVlIHx8IHByb2Nlc3MuZW52W0VOVl9WQVJTLkFXU19SRUdJT05dIHx8IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCAndXMtZWFzdC0xJztcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGBjZGsgYm9vdHN0cmFwYCBjb21tYW5kIHN0cmluZyBmcm9tIHRoZSByZXNvbHZlZCBvcHRpb25zLlxuICovXG4vKiogQGludGVybmFsIEV4cG9ydGVkIGZvciB0ZXN0aW5nIG9ubHkgKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEJvb3RzdHJhcENvbW1hbmQob3B0aW9uczoge1xuICBhY2NvdW50OiBzdHJpbmc7XG4gIHJlZ2lvbjogc3RyaW5nO1xuICBwcm9maWxlPzogc3RyaW5nO1xuICBxdWFsaWZpZXI/OiBzdHJpbmc7XG4gIHRydXN0Pzogc3RyaW5nO1xuICBjbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzPzogc3RyaW5nO1xufSk6IHN0cmluZyB7XG4gIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLmFjY291bnQsICdhY2NvdW50Jyk7XG4gIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLnJlZ2lvbiwgJ3JlZ2lvbicpO1xuICBpZiAob3B0aW9ucy5wcm9maWxlKSBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy5wcm9maWxlLCAncHJvZmlsZScpO1xuXG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtcbiAgICAnY2RrJyxcbiAgICAnYm9vdHN0cmFwJyxcbiAgICBgYXdzOi8vJHtvcHRpb25zLmFjY291bnR9LyR7b3B0aW9ucy5yZWdpb259YCxcbiAgXTtcblxuICBpZiAob3B0aW9ucy5wcm9maWxlKSB7XG4gICAgcGFydHMucHVzaChgLS1wcm9maWxlPSR7b3B0aW9ucy5wcm9maWxlfWApO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMucXVhbGlmaWVyKSB7XG4gICAgcGFydHMucHVzaChgLS1xdWFsaWZpZXI9JHtvcHRpb25zLnF1YWxpZmllcn1gKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnRydXN0KSB7XG4gICAgcGFydHMucHVzaChgLS10cnVzdD0ke29wdGlvbnMudHJ1c3R9YCk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5jbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzKSB7XG4gICAgcGFydHMucHVzaChgLS1jbG91ZGZvcm1hdGlvbi1leGVjdXRpb24tcG9saWNpZXM9JHtvcHRpb25zLmNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXN9YCk7XG4gIH1cblxuICByZXR1cm4gcGFydHMuam9pbignICcpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGJvb3RzdHJhcGAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBQcm92aXNpb25zIHRoZSBDREsgdG9vbGtpdCBzdGFjayBpbiB0aGUgdGFyZ2V0IEFXUyBhY2NvdW50L3JlZ2lvblxuICogc28gdGhhdCBDREsgZGVwbG95bWVudHMgY2FuIHByb2NlZWQuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib290c3RyYXAocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2Jvb3RzdHJhcCcpXG4gICAgLmRlc2NyaXB0aW9uKCdCb290c3RyYXAgQVdTIENESyB0b29sa2l0IHN0YWNrIGluIHRhcmdldCBhY2NvdW50L3JlZ2lvbicpXG4gICAgLm9wdGlvbignLS1hY2NvdW50IDxpZD4nLCAnQVdTIGFjY291bnQgSUQgKGRlZmF1bHRzIHRvIEFXU19BQ0NPVU5UX0lEIG9yIENES19ERUZBVUxUX0FDQ09VTlQgZW52KScpXG4gICAgLm9wdGlvbignLS1yZWdpb24gPHJlZ2lvbj4nLCAnQVdTIHJlZ2lvbiAoZGVmYXVsdHMgdG8gQVdTX1JFR0lPTiBvciBDREtfREVGQVVMVF9SRUdJT04gZW52KScpXG4gICAgLm9wdGlvbignLS1wcm9maWxlIDxwcm9maWxlPicsICdBV1MgQ0xJIHByb2ZpbGUnLCAnZGVmYXVsdCcpXG4gICAgLm9wdGlvbignLS1xdWFsaWZpZXIgPHF1YWxpZmllcj4nLCAnQm9vdHN0cmFwIHF1YWxpZmllciBmb3IgZW52aXJvbm1lbnQgaXNvbGF0aW9uJylcbiAgICAub3B0aW9uKCctLXRydXN0IDxhY2NvdW50cz4nLCAnQ29tbWEtc2VwYXJhdGVkIGFjY291bnQgSURzIHRvIHRydXN0IGZvciBjcm9zcy1hY2NvdW50IGRlcGxveW1lbnRzJylcbiAgICAub3B0aW9uKCctLWNsb3VkZm9ybWF0aW9uLWV4ZWN1dGlvbi1wb2xpY2llcyA8YXJucz4nLCAnSUFNIHBvbGljeSBBUk5zIGZvciBDbG91ZEZvcm1hdGlvbiBleGVjdXRpb24gcm9sZScpXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHQgYXMgSlNPTicsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdDREsgQm9vdHN0cmFwJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF1ZGl0TG9nKCdib290c3RyYXAnLCB7IGV4ZWN1dGlvbklkLCBhY2NvdW50OiBvcHRpb25zLmFjY291bnQsIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSB9KTtcblxuICAgICAgICAvLyBSZXNvbHZlIGFjY291bnQgYW5kIHJlZ2lvblxuICAgICAgICBjb25zdCBhY2NvdW50ID0gcmVzb2x2ZUFjY291bnQob3B0aW9ucy5hY2NvdW50KTtcbiAgICAgICAgY29uc3QgcmVnaW9uID0gcmVzb2x2ZVJlZ2lvbihvcHRpb25zLnJlZ2lvbik7XG5cbiAgICAgICAgaWYgKCFhY2NvdW50KSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignQVdTIGFjY291bnQgSUQgaXMgcmVxdWlyZWQnKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhkaW0oJ1Byb3ZpZGUgLS1hY2NvdW50IDxpZD4gb3Igc2V0IEFXU19BQ0NPVU5UX0lEIC8gQ0RLX0RFRkFVTFRfQUNDT1VOVCBlbnZpcm9ubWVudCB2YXJpYWJsZScpKTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FXUyBhY2NvdW50IElEIG5vdCBwcm92aWRlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpbnRJbmZvKCdCb290c3RyYXAgcGFyYW1ldGVycycsIHtcbiAgICAgICAgICBhY2NvdW50LFxuICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUsXG4gICAgICAgICAgcXVhbGlmaWVyOiBvcHRpb25zLnF1YWxpZmllciB8fCAnKGRlZmF1bHQpJyxcbiAgICAgICAgICB0cnVzdDogb3B0aW9ucy50cnVzdCB8fCAnKG5vbmUpJyxcbiAgICAgICAgICBjbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzOiBvcHRpb25zLmNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXMgfHwgJyhub25lKScsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVuc3VyZUNka0F2YWlsYWJsZSgpO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ0FXUyBDREsgaXMgYXZhaWxhYmxlJyk7XG5cbiAgICAgICAgLy8gQnVpbGQgYm9vdHN0cmFwIGNvbW1hbmRcbiAgICAgICAgY29uc3QgY29tbWFuZCA9IGJ1aWxkQm9vdHN0cmFwQ29tbWFuZCh7XG4gICAgICAgICAgYWNjb3VudCxcbiAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgICAgICAgIHF1YWxpZmllcjogb3B0aW9ucy5xdWFsaWZpZXIsXG4gICAgICAgICAgdHJ1c3Q6IG9wdGlvbnMudHJ1c3QsXG4gICAgICAgICAgY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llczogb3B0aW9ucy5jbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcmludFNlY3Rpb24oJ0NESyBFeGVjdXRpb24nKTtcbiAgICAgICAgY29uc29sZS5sb2coY3lhbihib2xkKCdDb21tYW5kOicpKSwgZGltKGNvbW1hbmQpKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICAgIC8vIEV4ZWN1dGUgYm9vdHN0cmFwXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQoY29tbWFuZCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBzaG93T3V0cHV0OiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignQm9vdHN0cmFwIENvbXBsZXRlJyk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgICAgYWNjb3VudCxcbiAgICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogcmVzdWx0LmR1cmF0aW9uLFxuICAgICAgICAgICAgfSwgbnVsbCwgMikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICAgJ0V4ZWN1dGlvbiBJRCc6IGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgICAnQWNjb3VudCc6IGFjY291bnQsXG4gICAgICAgICAgICAgICdSZWdpb24nOiByZWdpb24sXG4gICAgICAgICAgICAgICdEdXJhdGlvbic6IGAke3Jlc3VsdC5kdXJhdGlvbn1tc2AsXG4gICAgICAgICAgICAgICdTdGF0dXMnOiAn4pyTIFN1Y2Nlc3MnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5WQUxJREFUSU9OLCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ2Jvb3RzdHJhcCcsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIGFjY291bnQ6IG9wdGlvbnMuYWNjb3VudCxcbiAgICAgICAgICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFakM7OztHQUdHO0FBQ0gsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxjQUFjLENBQUMsV0FBb0I7SUFDakQsT0FBTyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztBQUN0RixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxhQUFhLENBQUMsV0FBb0I7SUFDaEQsT0FBTyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcs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O1lBRW5DLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNuQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO3dCQUN6QixPQUFPLEVBQUUsSUFBSTt3QkFDYixXQUFXO3dCQUNYLE9BQU87d0JBQ1AsTUFBTTt3QkFDTixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7cUJBQzFCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsQ0FBQztxQkFBTSxDQUFDO29CQUNOLGFBQWEsQ0FBQzt3QkFDWixjQUFjLEVBQUUsV0FBVzt3QkFDM0IsU0FBUyxFQUFFLE9BQU87d0JBQ2xCLFFBQVEsRUFBRSxNQUFNO3dCQUNoQixVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJO3dCQUNsQyxRQUFRLEVBQUUsV0FBVztxQkFDdEIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1FBRUgsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3pDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRSxXQUFXO29CQUNwQixXQUFXO29CQUNYLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztvQkFDeEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2lCQUN2QjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IEVOVl9WQVJTLCBhc3NlcnRTaGVsbFNhZmUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBhdWRpdExvZyB9IGZyb20gJy4uL3V0aWxzL2F1ZGl0LWxvZy5qcyc7XG5pbXBvcnQgeyBlbnN1cmVDZGtBdmFpbGFibGUsIGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQgfSBmcm9tICcuLi91dGlscy9jZGstdXRpbHMuanMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGRpbSB9ID0gcGljbztcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQVdTIGFjY291bnQgSUQgZnJvbSB0aGUgQ0xJIG9wdGlvbiBvciBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqIEByZXR1cm5zIFRoZSBhY2NvdW50IElEIHN0cmluZywgb3IgYHVuZGVmaW5lZGAgaWYgbm90IGF2YWlsYWJsZS5cbiAqL1xuLyoqIEBpbnRlcm5hbCBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5ICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFjY291bnQob3B0aW9uVmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9uVmFsdWUgfHwgcHJvY2Vzcy5lbnYuQVdTX0FDQ09VTlRfSUQgfHwgcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQVdTIHJlZ2lvbiBmcm9tIHRoZSBDTEkgb3B0aW9uIG9yIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICogQHJldHVybnMgVGhlIHJlZ2lvbiBzdHJpbmcsIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBhdmFpbGFibGUuXG4gKi9cbi8qKiBAaW50ZXJuYWwgRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZWdpb24ob3B0aW9uVmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gb3B0aW9uVmFsdWUgfHwgcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuQVdTX1JFR0lPTl0gfHwgcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OIHx8ICd1cy1lYXN0LTEnO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgYGNkayBib290c3RyYXBgIGNvbW1hbmQgc3RyaW5nIGZyb20gdGhlIHJlc29sdmVkIG9wdGlvbnMuXG4gKi9cbi8qKiBAaW50ZXJuYWwgRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQm9vdHN0cmFwQ29tbWFuZChvcHRpb25zOiB7XG4gIGFjY291bnQ6IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIHByb2ZpbGU/OiBzdHJpbmc7XG4gIHF1YWxpZmllcj86IHN0cmluZztcbiAgdHJ1c3Q/OiBzdHJpbmc7XG4gIGNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXM/OiBzdHJpbmc7XG59KTogc3RyaW5nIHtcbiAgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMuYWNjb3VudCwgJ2FjY291bnQnKTtcbiAgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMucmVnaW9uLCAncmVnaW9uJyk7XG4gIGlmIChvcHRpb25zLnByb2ZpbGUpIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLnByb2ZpbGUsICdwcm9maWxlJyk7XG5cbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW1xuICAgICdjZGsnLFxuICAgICdib290c3RyYXAnLFxuICAgIGBhd3M6Ly8ke29wdGlvbnMuYWNjb3VudH0vJHtvcHRpb25zLnJlZ2lvbn1gLFxuICBdO1xuXG4gIGlmIChvcHRpb25zLnByb2ZpbGUpIHtcbiAgICBwYXJ0cy5wdXNoKGAtLXByb2ZpbGU9JHtvcHRpb25zLnByb2ZpbGV9YCk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5xdWFsaWZpZXIpIHtcbiAgICBwYXJ0cy5wdXNoKGAtLXF1YWxpZmllcj0ke29wdGlvbnMucXVhbGlmaWVyfWApO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMudHJ1c3QpIHtcbiAgICBwYXJ0cy5wdXNoKGAtLXRydXN0PSR7b3B0aW9ucy50cnVzdH1gKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXMpIHtcbiAgICBwYXJ0cy5wdXNoKGAtLWNsb3VkZm9ybWF0aW9uLWV4ZWN1dGlvbi1wb2xpY2llcz0ke29wdGlvbnMuY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llc31gKTtcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCcgJyk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgYm9vdHN0cmFwYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIFByb3Zpc2lvbnMgdGhlIENESyB0b29sa2l0IHN0YWNrIGluIHRoZSB0YXJnZXQgQVdTIGFjY291bnQvcmVnaW9uXG4gKiBzbyB0aGF0IENESyBkZXBsb3ltZW50cyBjYW4gcHJvY2VlZC5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJvb3RzdHJhcChwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnYm9vdHN0cmFwJylcbiAgICAuZGVzY3JpcHRpb24oJ0Jvb3RzdHJhcCBBV1MgQ0RLIHRvb2xraXQgc3RhY2sgaW4gdGFyZ2V0IGFjY291bnQvcmVnaW9uJylcbiAgICAub3B0aW9uKCctLWFjY291bnQgPGlkPicsICdBV1MgYWNjb3VudCBJRCAoZGVmYXVsdHMgdG8gQVdTX0FDQ09VTlRfSUQgb3IgQ0RLX0RFRkFVTFRfQUNDT1VOVCBlbnYpJylcbiAgICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uIChkZWZhdWx0cyB0byBBV1NfUkVHSU9OIG9yIENES19ERUZBVUxUX1JFR0lPTiBlbnYpJylcbiAgICAub3B0aW9uKCctLXByb2ZpbGUgPHByb2ZpbGU+JywgJ0FXUyBDTEkgcHJvZmlsZScsICdkZWZhdWx0JylcbiAgICAub3B0aW9uKCctLXF1YWxpZmllciA8cXVhbGlmaWVyPicsICdCb290c3RyYXAgcXVhbGlmaWVyIGZvciBlbnZpcm9ubWVudCBpc29sYXRpb24nKVxuICAgIC5vcHRpb24oJy0tdHJ1c3QgPGFjY291bnRzPicsICdDb21tYS1zZXBhcmF0ZWQgYWNjb3VudCBJRHMgdG8gdHJ1c3QgZm9yIGNyb3NzLWFjY291bnQgZGVwbG95bWVudHMnKVxuICAgIC5vcHRpb24oJy0tY2xvdWRmb3JtYXRpb24tZXhlY3V0aW9uLXBvbGljaWVzIDxhcm5zPicsICdJQU0gcG9saWN5IEFSTnMgZm9yIENsb3VkRm9ybWF0aW9uIGV4ZWN1dGlvbiByb2xlJylcbiAgICAub3B0aW9uKCctLWpzb24nLCAnT3V0cHV0IHJlc3VsdCBhcyBKU09OJywgZmFsc2UpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ0NESyBCb290c3RyYXAnKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXVkaXRMb2coJ2Jvb3RzdHJhcCcsIHsgZXhlY3V0aW9uSWQsIGFjY291bnQ6IG9wdGlvbnMuYWNjb3VudCwgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuXG4gICAgICAgIC8vIFJlc29sdmUgYWNjb3VudCBhbmQgcmVnaW9uXG4gICAgICAgIGNvbnN0IGFjY291bnQgPSByZXNvbHZlQWNjb3VudChvcHRpb25zLmFjY291bnQpO1xuICAgICAgICBjb25zdCByZWdpb24gPSByZXNvbHZlUmVnaW9uKG9wdGlvbnMucmVnaW9uKTtcblxuICAgICAgICBpZiAoIWFjY291bnQpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdBV1MgYWNjb3VudCBJRCBpcyByZXF1aXJlZCcpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGRpbSgnUHJvdmlkZSAtLWFjY291bnQgPGlkPiBvciBzZXQgQVdTX0FDQ09VTlRfSUQgLyBDREtfREVGQVVMVF9BQ0NPVU5UIGVudmlyb25tZW50IHZhcmlhYmxlJykpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQVdTIGFjY291bnQgSUQgbm90IHByb3ZpZGVkJyk7XG4gICAgICAgIH1cblxuICAgICAgICBwcmludEluZm8oJ0Jvb3RzdHJhcCBwYXJhbWV0ZXJzJywge1xuICAgICAgICAgIGFjY291bnQsXG4gICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICBxdWFsaWZpZXI6IG9wdGlvbnMucXVhbGlmaWVyIHx8ICcoZGVmYXVsdCknLFxuICAgICAgICAgIHRydXN0OiBvcHRpb25zLnRydXN0IHx8ICcobm9uZSknLFxuICAgICAgICAgIGNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXM6IG9wdGlvbnMuY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llcyB8fCAnKG5vbmUpJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZW5zdXJlQ2RrQXZhaWxhYmxlKCk7XG4gICAgICAgIHByaW50U3VjY2VzcygnQVdTIENESyBpcyBhdmFpbGFibGUnKTtcblxuICAgICAgICAvLyBCdWlsZCBib290c3RyYXAgY29tbWFuZFxuICAgICAgICBjb25zdCBjb21tYW5kID0gYnVpbGRCb290c3RyYXBDb21tYW5kKHtcbiAgICAgICAgICBhY2NvdW50LFxuICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUsXG4gICAgICAgICAgcXVhbGlmaWVyOiBvcHRpb25zLnF1YWxpZmllcixcbiAgICAgICAgICB0cnVzdDogb3B0aW9ucy50cnVzdCxcbiAgICAgICAgICBjbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzOiBvcHRpb25zLmNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXMsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByaW50U2VjdGlvbignQ0RLIEV4ZWN1dGlvbicpO1xuICAgICAgICBjb25zb2xlLmxvZyhjeWFuKGJvbGQoJ0NvbW1hbmQ6JykpLCBkaW0oY29tbWFuZCkpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG5cbiAgICAgICAgLy8gRXhlY3V0ZSBib290c3RyYXBcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZXhlY3V0ZUNka1NoZWxsQ29tbWFuZChjb21tYW5kLCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIHNob3dPdXRwdXQ6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdCb290c3RyYXAgQ29tcGxldGUnKTtcblxuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5qc29uKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgICBhY2NvdW50LFxuICAgICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiByZXN1bHQuZHVyYXRpb24sXG4gICAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICAgICdBY2NvdW50JzogYWNjb3VudCxcbiAgICAgICAgICAgICAgJ1JlZ2lvbic6IHJlZ2lvbixcbiAgICAgICAgICAgICAgJ0R1cmF0aW9uJzogYCR7cmVzdWx0LmR1cmF0aW9ufW1zYCxcbiAgICAgICAgICAgICAgJ1N0YXR1cyc6ICfinJMgU3VjY2VzcycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLlZBTElEQVRJT04sIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICBjb21tYW5kOiAnYm9vdHN0cmFwJyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgYWNjb3VudDogb3B0aW9ucy5hY2NvdW50LFxuICAgICAgICAgICAgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|