@pipeline-builder/pipeline-manager 4.5.2 → 4.5.4
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 +62 -37
- package/dist/agent/post-steps.d.ts +5 -4
- package/dist/agent/post-steps.d.ts.map +1 -1
- package/dist/agent/post-steps.js +19 -7
- package/dist/agent/targets.d.ts +12 -2
- package/dist/agent/targets.d.ts.map +1 -1
- package/dist/agent/targets.js +20 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +16 -7
- package/dist/commands/audit-stacks.d.ts +42 -1
- package/dist/commands/audit-stacks.d.ts.map +1 -1
- package/dist/commands/audit-stacks.js +104 -23
- package/dist/commands/audit-tokens.d.ts.map +1 -1
- package/dist/commands/audit-tokens.js +3 -4
- package/dist/commands/create-pat.d.ts.map +1 -1
- package/dist/commands/create-pat.js +9 -6
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +15 -2
- package/dist/commands/login.d.ts +3 -2
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +19 -10
- package/dist/commands/logout.d.ts +24 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +105 -0
- package/dist/commands/new-plugin.js +5 -5
- package/dist/commands/org-export.js +2 -2
- package/dist/commands/pipeline-remove.d.ts +26 -0
- package/dist/commands/pipeline-remove.d.ts.map +1 -0
- package/dist/commands/pipeline-remove.js +84 -0
- package/dist/commands/provision-steps.d.ts.map +1 -1
- package/dist/commands/provision-steps.js +1 -2
- package/dist/commands/provision.d.ts.map +1 -1
- package/dist/commands/provision.js +6 -5
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +3 -4
- package/dist/commands/status.d.ts +5 -2
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +65 -25
- package/dist/commands/toolchain.d.ts +21 -0
- package/dist/commands/toolchain.d.ts.map +1 -0
- package/dist/commands/toolchain.js +70 -0
- package/dist/commands/validate-templates.d.ts.map +1 -1
- package/dist/commands/validate-templates.js +4 -5
- package/dist/config/cli.constants.d.ts +8 -0
- package/dist/config/cli.constants.d.ts.map +1 -1
- package/dist/config/cli.constants.js +21 -2
- package/dist/types/plugin.d.ts +0 -6
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/types/plugin.js +1 -1
- package/dist/utils/command-utils.d.ts +13 -0
- package/dist/utils/command-utils.d.ts.map +1 -1
- package/dist/utils/command-utils.js +31 -17
- package/dist/utils/config-loader.d.ts +2 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +14 -4
- package/dist/utils/credential-store.d.ts +9 -1
- package/dist/utils/credential-store.d.ts.map +1 -1
- package/dist/utils/credential-store.js +21 -2
- package/dist/utils/error-handler.d.ts +10 -1
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js +20 -8
- package/dist/utils/pipeline-config.d.ts +5 -2
- package/dist/utils/pipeline-config.d.ts.map +1 -1
- package/dist/utils/pipeline-config.js +12 -3
- package/dist/utils/plugin-resolver.d.ts +21 -6
- package/dist/utils/plugin-resolver.d.ts.map +1 -1
- package/dist/utils/plugin-resolver.js +42 -9
- package/dist/utils/response-utils.d.ts +11 -0
- package/dist/utils/response-utils.d.ts.map +1 -1
- package/dist/utils/response-utils.js +23 -1
- package/dist/utils/toolchain.d.ts +78 -0
- package/dist/utils/toolchain.d.ts.map +1 -0
- package/dist/utils/toolchain.js +195 -0
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-stacks.d.ts","sources":["../../src/commands/audit-stacks.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"audit-stacks.d.ts","sources":["../../src/commands/audit-stacks.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAYD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,GAAG,eAAe,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;CACb;AAOD,qGAAqG;AACrG,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAKvC;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE;IAAE,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAAE,EACvF,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,EAAE,CAAC,CAc1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmMlD"}
|
|
@@ -2,14 +2,44 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { CloudFormationClient, DescribeStacksCommand } from '@aws-sdk/client-cloudformation';
|
|
4
4
|
import { Command } from 'commander';
|
|
5
|
+
import { decodeTokenPayload } from '../utils/auth-guard.js';
|
|
5
6
|
import { applyAwsProfile, resolveAwsRegion } from '../utils/aws-env.js';
|
|
6
7
|
import { createAuthenticatedClientAsync, printCommandHeader, printSslWarning, withProfileOption, withRegionOption, withSslOptions } from '../utils/command-utils.js';
|
|
7
|
-
import { ERROR_CODES,
|
|
8
|
+
import { ERROR_CODES, reportError, ValidationError } from '../utils/error-handler.js';
|
|
8
9
|
import { printError, printInfo, printSection, printSuccess, printWarning } from '../utils/output-utils.js';
|
|
10
|
+
import { extractListPage } from '../utils/response-utils.js';
|
|
9
11
|
const ACTIVE_STATUSES = [
|
|
10
12
|
'CREATE_COMPLETE', 'UPDATE_COMPLETE', 'UPDATE_ROLLBACK_COMPLETE',
|
|
11
13
|
'IMPORT_COMPLETE', 'IMPORT_ROLLBACK_COMPLETE',
|
|
12
14
|
];
|
|
15
|
+
/** Registry rows fetched per request (the route caps `limit` at MAX_PAGE_LIMIT, 1000 by default). */
|
|
16
|
+
export const REGISTRY_PAGE_LIMIT = 500;
|
|
17
|
+
/** Default backstop on CloudFormation DescribeStacks pages (~100 stacks per page). */
|
|
18
|
+
const DEFAULT_MAX_STACK_PAGES = 200;
|
|
19
|
+
/**
|
|
20
|
+
* Read EVERY registry row the platform returns for this caller (`limit` +
|
|
21
|
+
* `offset` paging until `pagination.hasMore` is false). A partial registry is
|
|
22
|
+
* as bad as an empty one: each row left unread becomes a false orphaned-stack
|
|
23
|
+
* finding. `orgId` is sent when `--org` names an org — the platform scopes the
|
|
24
|
+
* list to the caller's org unless it honours that parameter (a system-org
|
|
25
|
+
* caller), and the caller checks which org it got back.
|
|
26
|
+
*/
|
|
27
|
+
export async function fetchAllRegistryEntries(client, pipelineUrl, orgId) {
|
|
28
|
+
const entries = [];
|
|
29
|
+
for (let offset = 0;; offset += REGISTRY_PAGE_LIMIT) {
|
|
30
|
+
const res = await client.get(`${pipelineUrl}/registry`, {
|
|
31
|
+
limit: REGISTRY_PAGE_LIMIT,
|
|
32
|
+
offset,
|
|
33
|
+
...(orgId ? { orgId } : {}),
|
|
34
|
+
});
|
|
35
|
+
const page = extractListPage(res, 'registry');
|
|
36
|
+
entries.push(...page.items);
|
|
37
|
+
// An empty page ends the walk even if the server claims more, so a
|
|
38
|
+
// misreporting server can't spin this forever.
|
|
39
|
+
if (!page.hasMore || page.items.length === 0)
|
|
40
|
+
return entries;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
13
43
|
/**
|
|
14
44
|
* Registers the `audit-stacks` command with the CLI program.
|
|
15
45
|
*
|
|
@@ -20,6 +50,13 @@ const ACTIVE_STATUSES = [
|
|
|
20
50
|
* - **Missing stacks**: registry entries pointing to stacks that no longer exist
|
|
21
51
|
* in CloudFormation (likely after a manual `aws cloudformation delete-stack`).
|
|
22
52
|
*
|
|
53
|
+
* Scope: the registry of ONE org (yours, or `--org` when the platform lets the
|
|
54
|
+
* credential list that org) against the stacks of ONE region (`--region`) —
|
|
55
|
+
* registry rows of other regions are counted but not compared, and stacks
|
|
56
|
+
* tagged with another `OrgId` are skipped. Every finding carries the command
|
|
57
|
+
* that reconciles it (`pipeline deregister` for a missing stack; `pipeline
|
|
58
|
+
* register` or `aws cloudformation delete-stack` for an orphaned one).
|
|
59
|
+
*
|
|
23
60
|
* Designed for cron use:
|
|
24
61
|
* - Exits 0 when there are no findings.
|
|
25
62
|
* - Exits 1 when at least one orphaned or missing stack is found.
|
|
@@ -28,14 +65,15 @@ const ACTIVE_STATUSES = [
|
|
|
28
65
|
* @example
|
|
29
66
|
* ```bash
|
|
30
67
|
* pipeline-manager audit stacks --region us-east-1
|
|
31
|
-
* pipeline-manager audit stacks --
|
|
68
|
+
* pipeline-manager audit stacks --region eu-west-1 --json
|
|
32
69
|
* ```
|
|
33
70
|
*/
|
|
34
71
|
export function auditStacks(program) {
|
|
35
72
|
withSslOptions(withProfileOption(withRegionOption(program
|
|
36
73
|
.command('stacks')
|
|
37
74
|
.description('Diff CloudFormation stacks vs pipeline_registry to find orphaned or missing CDK deployments')))
|
|
38
|
-
.option('--org <orgId>', '
|
|
75
|
+
.option('--org <orgId>', 'Audit this org (default: your own). Another org needs a credential the platform lets list it')
|
|
76
|
+
.option('--max-pages <n>', 'Safety cap on CloudFormation DescribeStacks pages (~100 stacks each)', String(DEFAULT_MAX_STACK_PAGES))
|
|
39
77
|
.option('--json', 'Output results as JSON', false))
|
|
40
78
|
.action(async (options) => {
|
|
41
79
|
const executionId = printCommandHeader('Audit Stacks', undefined, { quiet: options.json });
|
|
@@ -45,16 +83,47 @@ export function auditStacks(program) {
|
|
|
45
83
|
// scan always hit the default account and could diff the registry against
|
|
46
84
|
// the WRONG account's stacks → bogus orphaned/missing findings).
|
|
47
85
|
applyAwsProfile(options.profile);
|
|
86
|
+
const maxPages = Number.parseInt(String(options.maxPages), 10);
|
|
87
|
+
// Org ids are lowercase (the route lowercases `?orgId=` the same way).
|
|
88
|
+
const requestedOrg = typeof options.org === 'string' && options.org.trim()
|
|
89
|
+
? options.org.trim().toLowerCase()
|
|
90
|
+
: undefined;
|
|
91
|
+
// Decided inside the try, exited on outside it: an exit inside would be
|
|
92
|
+
// caught as a scan failure wherever process.exit throws (tests, embedders).
|
|
93
|
+
let exitCode;
|
|
48
94
|
try {
|
|
95
|
+
if (!Number.isInteger(maxPages) || maxPages < 1) {
|
|
96
|
+
throw new ValidationError('--max-pages must be a positive integer', 'max-pages', String(options.maxPages));
|
|
97
|
+
}
|
|
49
98
|
// Fetch the platform's view of registered pipelines.
|
|
50
99
|
// Progress goes to stdout, so suppress it in --json mode to keep the JSON payload clean for piping.
|
|
51
100
|
if (!options.json)
|
|
52
|
-
printInfo('Fetching pipeline registry from platform', { org: options.org ?? '(
|
|
101
|
+
printInfo('Fetching pipeline registry from platform', { org: options.org ?? '(your org)' });
|
|
53
102
|
const client = await createAuthenticatedClientAsync(options);
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
103
|
+
const allEntries = await fetchAllRegistryEntries(client, client.getConfig().api.pipelineUrl, requestedOrg);
|
|
104
|
+
// Which org this audit is about. `--org` is a request; the rows say what
|
|
105
|
+
// the platform actually answered for. A platform that scoped the list to
|
|
106
|
+
// the caller's own org instead would make every stack of the requested
|
|
107
|
+
// org read as orphaned — so a mismatch is an error, not a finding.
|
|
108
|
+
const answeredFor = new Set(allEntries.map((e) => e.orgId).filter((o) => !!o));
|
|
109
|
+
if (requestedOrg && [...answeredFor].some((o) => o !== requestedOrg)) {
|
|
110
|
+
throw new ValidationError(`The platform returned the registry of ${[...answeredFor].join(', ')}, not --org ${requestedOrg}. `
|
|
111
|
+
+ 'Auditing another org needs a credential the platform lets list that org\'s registry.', 'org', requestedOrg);
|
|
112
|
+
}
|
|
113
|
+
const auditOrg = requestedOrg
|
|
114
|
+
?? (answeredFor.size === 1 ? [...answeredFor][0] : undefined)
|
|
115
|
+
?? decodeTokenPayload(process.env.PLATFORM_TOKEN ?? '')?.organizationId;
|
|
116
|
+
// The scan below covers ONE region, so only that region's rows can be
|
|
117
|
+
// compared — every other region's pipeline would otherwise be "missing".
|
|
118
|
+
// A row with no region can't be placed, so it is counted and left out.
|
|
119
|
+
const entries = allEntries.filter((e) => e.region === region);
|
|
120
|
+
const withoutRegion = allEntries.filter((e) => !e.region).length;
|
|
121
|
+
if (withoutRegion > 0 && !options.json) {
|
|
122
|
+
printWarning(`${withoutRegion} registry entr${withoutRegion === 1 ? 'y has' : 'ies have'} no region and ${withoutRegion === 1 ? 'is' : 'are'} not compared — re-register with "pipeline-manager pipeline register --id <pipelineId> --region <region>"`);
|
|
123
|
+
}
|
|
124
|
+
if (!auditOrg && !options.json) {
|
|
125
|
+
printWarning('Could not tell which org this credential belongs to — stacks of every org in the account are compared');
|
|
126
|
+
}
|
|
58
127
|
// Fetch stacks from CloudFormation. DescribeStacks (no StackName) returns every
|
|
59
128
|
// active stack WITH its tags in one paginated sweep — avoiding the N+1
|
|
60
129
|
// DescribeStacks-per-stack a ListStacks path needs (ListStacks omits tags)
|
|
@@ -70,7 +139,6 @@ export function auditStacks(program) {
|
|
|
70
139
|
// matters: truncating would diff the registry against an incomplete stack set and
|
|
71
140
|
// report live stacks as `missing-stack`. So if this is ever hit, warn LOUDLY rather
|
|
72
141
|
// than silently under-reporting (the previous code capped at 20 pages silently).
|
|
73
|
-
const MAX_PAGES = 200;
|
|
74
142
|
let truncated = false;
|
|
75
143
|
do {
|
|
76
144
|
const resp = await cfn.send(new DescribeStacksCommand({ NextToken: nextToken }));
|
|
@@ -81,29 +149,31 @@ export function auditStacks(program) {
|
|
|
81
149
|
continue; // skip in-progress/rolled-back/deleted
|
|
82
150
|
const tags = stack.Tags ?? [];
|
|
83
151
|
const pbTag = tags.find((t) => t.Key === 'pipeline-builder')?.Value;
|
|
84
|
-
const orgTag = tags.find((t) => t.Key === 'OrgId'
|
|
152
|
+
const orgTag = tags.find((t) => t.Key === 'OrgId')?.Value;
|
|
85
153
|
if (!pbTag)
|
|
86
154
|
continue; // Not a pipeline-builder stack.
|
|
87
|
-
|
|
88
|
-
|
|
155
|
+
// Another org's stack in the same account is not this org's drift.
|
|
156
|
+
if (auditOrg && orgTag && orgTag.toLowerCase() !== auditOrg.toLowerCase())
|
|
157
|
+
continue;
|
|
89
158
|
stacks.push({
|
|
90
159
|
stackName: stack.StackName,
|
|
91
160
|
stackStatus: stack.StackStatus ?? 'UNKNOWN',
|
|
92
161
|
region,
|
|
93
162
|
pipelineBuilderTag: pbTag,
|
|
94
163
|
orgIdTag: orgTag,
|
|
164
|
+
pipelineIdTag: tags.find((t) => t.Key === 'pb.pipeline-id')?.Value,
|
|
95
165
|
creationTime: stack.CreationTime,
|
|
96
166
|
});
|
|
97
167
|
}
|
|
98
168
|
nextToken = resp.NextToken;
|
|
99
169
|
pages++;
|
|
100
|
-
if (nextToken && pages >=
|
|
170
|
+
if (nextToken && pages >= maxPages) {
|
|
101
171
|
truncated = true;
|
|
102
172
|
break;
|
|
103
173
|
}
|
|
104
174
|
} while (nextToken);
|
|
105
175
|
if (truncated) {
|
|
106
|
-
printWarning(`Stack scan hit the ${
|
|
176
|
+
printWarning(`Stack scan hit the ${maxPages}-page safety cap — results may be INCOMPLETE and 'missing-stack' findings could be false. Raise --max-pages.`);
|
|
107
177
|
}
|
|
108
178
|
// Diff.
|
|
109
179
|
const registryStackNames = new Set(entries.map((e) => e.stackName).filter((n) => !!n));
|
|
@@ -114,7 +184,12 @@ export function auditStacks(program) {
|
|
|
114
184
|
findings.push({
|
|
115
185
|
type: 'orphaned-stack',
|
|
116
186
|
stackName: stack.stackName,
|
|
187
|
+
...(stack.pipelineIdTag ? { pipelineId: stack.pipelineIdTag } : {}),
|
|
117
188
|
detail: `CloudFormation stack tagged pipeline-builder=${stack.pipelineBuilderTag ?? '(unset)'} has no matching pipeline_registry entry`,
|
|
189
|
+
// Still wanted → register it; a leftover → delete the stack.
|
|
190
|
+
fix: stack.pipelineIdTag
|
|
191
|
+
? `pipeline-manager pipeline register --id ${stack.pipelineIdTag} --region ${region} # or, if unwanted: aws cloudformation delete-stack --stack-name ${stack.stackName} --region ${region}`
|
|
192
|
+
: `aws cloudformation delete-stack --stack-name ${stack.stackName} --region ${region}`,
|
|
118
193
|
});
|
|
119
194
|
}
|
|
120
195
|
}
|
|
@@ -125,20 +200,24 @@ export function auditStacks(program) {
|
|
|
125
200
|
stackName: entry.stackName,
|
|
126
201
|
pipelineId: entry.pipelineId,
|
|
127
202
|
pipelineName: entry.pipelineName,
|
|
128
|
-
|
|
203
|
+
registryId: entry.id,
|
|
204
|
+
detail: `Registry entry references stack ${entry.stackName} but no such stack exists in CloudFormation (${region})`,
|
|
205
|
+
fix: `pipeline-manager pipeline deregister --id ${entry.id}`,
|
|
129
206
|
});
|
|
130
207
|
}
|
|
131
208
|
}
|
|
132
209
|
// A truncated (incomplete) scan is a finding in itself: it can both miss
|
|
133
210
|
// real drift AND emit false missing-stack findings, so it must exit
|
|
134
211
|
// non-zero and be visible in the JSON (mirrors audit-tokens).
|
|
135
|
-
|
|
212
|
+
exitCode = (findings.length > 0 || truncated) ? 1 : 0;
|
|
136
213
|
if (options.json) {
|
|
137
214
|
console.log(JSON.stringify({
|
|
138
215
|
scannedAt: new Date().toISOString(),
|
|
139
216
|
region,
|
|
140
|
-
|
|
217
|
+
org: auditOrg,
|
|
141
218
|
registryEntries: entries.length,
|
|
219
|
+
registryEntriesOtherRegions: allEntries.length - entries.length - withoutRegion,
|
|
220
|
+
registryEntriesWithoutRegion: withoutRegion,
|
|
142
221
|
cfnStacks: stacks.length,
|
|
143
222
|
truncated,
|
|
144
223
|
findings,
|
|
@@ -148,7 +227,9 @@ export function auditStacks(program) {
|
|
|
148
227
|
else {
|
|
149
228
|
printSection('Audit Results');
|
|
150
229
|
printInfo('Counts', {
|
|
230
|
+
region,
|
|
151
231
|
registryEntries: String(entries.length),
|
|
232
|
+
registryEntriesOtherRegions: String(allEntries.length - entries.length - withoutRegion),
|
|
152
233
|
cfnStacks: String(stacks.length),
|
|
153
234
|
findings: String(findings.length),
|
|
154
235
|
});
|
|
@@ -163,20 +244,20 @@ export function auditStacks(program) {
|
|
|
163
244
|
else {
|
|
164
245
|
printWarning(`MISSING ${f.stackName} (pipeline ${f.pipelineId ?? '?'}) — ${f.detail}`);
|
|
165
246
|
}
|
|
247
|
+
console.log(` fix: ${f.fix}`);
|
|
166
248
|
}
|
|
167
|
-
printError(`${findings.length} drift finding${findings.length === 1 ? '' : 's'}
|
|
249
|
+
printError(`${findings.length} drift finding${findings.length === 1 ? '' : 's'} — each is listed with the command that reconciles it.`);
|
|
168
250
|
}
|
|
169
251
|
}
|
|
170
|
-
process.exit(exitCode);
|
|
171
252
|
}
|
|
172
253
|
catch (error) {
|
|
173
|
-
|
|
254
|
+
reportError(error, ERROR_CODES.API_REQUEST, {
|
|
174
255
|
debug: program.opts().debug,
|
|
175
|
-
exit: false,
|
|
176
256
|
context: { command: 'audit-stacks', executionId },
|
|
177
257
|
});
|
|
178
|
-
|
|
258
|
+
exitCode = 2;
|
|
179
259
|
}
|
|
260
|
+
process.exit(exitCode);
|
|
180
261
|
});
|
|
181
262
|
}
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtc3RhY2tzLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvYXVkaXQtc3RhY2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNySyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUEyQjNHLE1BQU0sZUFBZSxHQUFHO0lBQ3RCLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLDBCQUEwQjtJQUNoRSxpQkFBaUIsRUFBRSwwQkFBMEI7Q0FDOUMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsT0FBZ0I7SUFDMUMsY0FBYyxDQUNaLGlCQUFpQixDQUNmLGdCQUFnQixDQUFDLE9BQU87U0FDckIsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixXQUFXLENBQUMsNkZBQTZGLENBQUMsQ0FBQyxDQUMvRztTQUNFLE1BQU0sQ0FBQyxlQUFlLEVBQUUscURBQXFELENBQUM7U0FDOUUsTUFBTSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FDckQ7U0FDRSxNQUFNLENBQUMsS0FB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QUFDO29CQUNILENBQUM7b0JBQ0QsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0saUJBQWlCLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsa0NBQWtDLENBQUMsQ0FBQztnQkFDcEgsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxLQUFLO2dCQUNYLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFO2FBQ2xELENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvbkNsaWVudCwgRGVzY3JpYmVTdGFja3NDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgYXBwbHlBd3NQcm9maWxlLCByZXNvbHZlQXdzUmVnaW9uIH0gZnJvbSAnLi4vdXRpbHMvYXdzLWVudi5qcyc7XG5pbXBvcnQgeyBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMsIHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nLCB3aXRoUHJvZmlsZU9wdGlvbiwgd2l0aFJlZ2lvbk9wdGlvbiwgd2l0aFNzbE9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcblxuaW50ZXJmYWNlIFJlZ2lzdHJ5RW50cnkge1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIHBpcGVsaW5lQXJuOiBzdHJpbmc7XG4gIHBpcGVsaW5lTmFtZTogc3RyaW5nO1xuICBzdGFja05hbWU/OiBzdHJpbmc7XG4gIHJlZ2lvbj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN0YWNrSW5mbyB7XG4gIHN0YWNrTmFtZTogc3RyaW5nO1xuICBzdGFja1N0YXR1czogc3RyaW5nO1xuICByZWdpb246IHN0cmluZztcbiAgcGlwZWxpbmVCdWlsZGVyVGFnPzogc3RyaW5nO1xuICBvcmdJZFRhZz86IHN0cmluZztcbiAgY3JlYXRpb25UaW1lPzogRGF0ZTtcbn1cblxuaW50ZXJmYWNlIEF1ZGl0RmluZGluZyB7XG4gIHR5cGU6ICdvcnBoYW5lZC1zdGFjaycgfCAnbWlzc2luZy1zdGFjayc7XG4gIHN0YWNrTmFtZT86IHN0cmluZztcbiAgcGlwZWxpbmVJZD86IHN0cmluZztcbiAgcGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuICBkZXRhaWw6IHN0cmluZztcbn1cblxuY29uc3QgQUNUSVZFX1NUQVRVU0VTID0gW1xuICAnQ1JFQVRFX0NPTVBMRVRFJywgJ1VQREFURV9DT01QTEVURScsICdVUERBVEVfUk9MTEJBQ0tfQ09NUExFVEUnLFxuICAnSU1QT1JUX0NPTVBMRVRFJywgJ0lNUE9SVF9ST0xMQkFDS19DT01QTEVURScsXG5dO1xuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGF1ZGl0LXN0YWNrc2AgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBEaWZmcyBDbG91ZEZvcm1hdGlvbiBzdGFja3MgKGZpbHRlcmVkIHRvIHRob3NlIHRhZ2dlZCB3aXRoIGBwaXBlbGluZS1idWlsZGVyYClcbiAqIGFnYWluc3QgdGhlIHBsYXRmb3JtJ3MgYHBpcGVsaW5lX3JlZ2lzdHJ5YCB0YWJsZS4gU3VyZmFjZXM6XG4gKiAgIC0gKipPcnBoYW5lZCBzdGFja3MqKjogdGFnZ2VkIHN0YWNrcyB3aXRoIG5vIERCIHJlY29yZCAobGlrZWx5IGxlZnRvdmVycyBhZnRlclxuICogICAgIGEgcGlwZWxpbmUgd2FzIGRlbGV0ZWQgZnJvbSB0aGUgZGFzaGJvYXJkIGJ1dCB0aGUgQ0RLIHN0YWNrIHN0YXllZCBpbiBBV1MpLlxuICogICAtICoqTWlzc2luZyBzdGFja3MqKjogcmVnaXN0cnkgZW50cmllcyBwb2ludGluZyB0byBzdGFja3MgdGhhdCBubyBsb25nZXIgZXhpc3RcbiAqICAgICBpbiBDbG91ZEZvcm1hdGlvbiAobGlrZWx5IGFmdGVyIGEgbWFudWFsIGBhd3MgY2xvdWRmb3JtYXRpb24gZGVsZXRlLXN0YWNrYCkuXG4gKlxuICogRGVzaWduZWQgZm9yIGNyb24gdXNlOlxuICogICAtIEV4aXRzIDAgd2hlbiB0aGVyZSBhcmUgbm8gZmluZGluZ3MuXG4gKiAgIC0gRXhpdHMgMSB3aGVuIGF0IGxlYXN0IG9uZSBvcnBoYW5lZCBvciBtaXNzaW5nIHN0YWNrIGlzIGZvdW5kLlxuICogICAtIEV4aXRzIDIgb24gQVdTIGVycm9ycyAvIHNjYW4gZmFpbHVyZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXVkaXQgc3RhY2tzIC0tcmVnaW9uIHVzLWVhc3QtMVxuICogcGlwZWxpbmUtbWFuYWdlciBhdWRpdCBzdGFja3MgLS1vcmcgYWNtZSAtLWpzb25cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRTdGFja3MocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICB3aXRoU3NsT3B0aW9ucyhcbiAgICB3aXRoUHJvZmlsZU9wdGlvbihcbiAgICAgIHdpdGhSZWdpb25PcHRpb24ocHJvZ3JhbVxuICAgICAgICAuY29tbWFuZCgnc3RhY2tzJylcbiAgICAgICAgLmRlc2NyaXB0aW9uKCdEaWZmIENsb3VkRm9ybWF0aW9uIHN0YWNrcyB2cyBwaXBlbGluZV9yZWdpc3RyeSB0byBmaW5kIG9ycGhhbmVkIG9yIG1pc3NpbmcgQ0RLIGRlcGxveW1lbnRzJykpLFxuICAgIClcbiAgICAgIC5vcHRpb24oJy0tb3JnIDxvcmdJZD4nLCAnRmlsdGVyIGJvdGggcmVnaXN0cnkgYW5kIHN0YWNrIHNjYW4gdG8gYSBzaW5nbGUgb3JnJylcbiAgICAgIC5vcHRpb24oJy0tanNvbicsICdPdXRwdXQgcmVzdWx0cyBhcyBKU09OJywgZmFsc2UpLFxuICApXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ0F1ZGl0IFN0YWNrcycsIHVuZGVmaW5lZCwgeyBxdWlldDogb3B0aW9ucy5qc29uIH0pO1xuICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgY29uc3QgcmVnaW9uID0gcmVzb2x2ZUF3c1JlZ2lvbihvcHRpb25zLnJlZ2lvbik7XG4gICAgICAvLyBIb25vciAtLXByb2ZpbGUgZm9yIHRoZSBTREsgQ2xvdWRGb3JtYXRpb24gY2xpZW50IGJlbG93ICh3aXRob3V0IHRoaXMsIHRoZVxuICAgICAgLy8gc2NhbiBhbHdheXMgaGl0IHRoZSBkZWZhdWx0IGFjY291bnQgYW5kIGNvdWxkIGRpZmYgdGhlIHJlZ2lzdHJ5IGFnYWluc3RcbiAgICAgIC8vIHRoZSBXUk9ORyBhY2NvdW50J3Mgc3RhY2tzIOKGkiBib2d1cyBvcnBoYW5lZC9taXNzaW5nIGZpbmRpbmdzKS5cbiAgICAgIGFwcGx5QXdzUHJvZmlsZShvcHRpb25zLnByb2ZpbGUpO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBGZXRjaCB0aGUgcGxhdGZvcm0ncyB2aWV3IG9mIHJlZ2lzdGVyZWQgcGlwZWxpbmVzLlxuICAgICAgICAvLyBQcm9ncmVzcyBnb2VzIHRvIHN0ZG91dCwgc28gc3VwcHJlc3MgaXQgaW4gLS1qc29uIG1vZGUgdG8ga2VlcCB0aGUgSlNPTiBwYXlsb2FkIGNsZWFuIGZvciBwaXBpbmcuXG4gICAgICAgIGlmICghb3B0aW9ucy5qc29uKSBwcmludEluZm8oJ0ZldGNoaW5nIHBpcGVsaW5lIHJlZ2lzdHJ5IGZyb20gcGxhdGZvcm0nLCB7IG9yZzogb3B0aW9ucy5vcmcgPz8gJyhhbGwpJyB9KTtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jKG9wdGlvbnMpO1xuICAgICAgICBjb25zdCByZWdpc3RyeVJlcyA9IGF3YWl0IGNsaWVudC5nZXQ8eyBlbnRyaWVzOiBSZWdpc3RyeUVudHJ5W10gfT4oXG4gICAgICAgICAgYC9hcGkvcGlwZWxpbmVzL3JlZ2lzdHJ5JHtvcHRpb25zLm9yZyA/IGA/b3JnSWQ9JHtlbmNvZGVVUklDb21wb25lbnQob3B0aW9ucy5vcmcpfWAgOiAnJ31gLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBlbnRyaWVzOiBSZWdpc3RyeUVudHJ5W10gPSAocmVnaXN0cnlSZXMgYXMgeyBlbnRyaWVzPzogUmVnaXN0cnlFbnRyeVtdIH0pPy5lbnRyaWVzXG4gICAgICAgICAgPz8gKHJlZ2lzdHJ5UmVzIGFzIHsgZGF0YT86IHsgZW50cmllcz86IFJlZ2lzdHJ5RW50cnlbXSB9IH0pPy5kYXRhPy5lbnRyaWVzXG4gICAgICAgICAgPz8gW107XG5cbiAgICAgICAgLy8gRmV0Y2ggc3RhY2tzIGZyb20gQ2xvdWRGb3JtYXRpb24uIERlc2NyaWJlU3RhY2tzIChubyBTdGFja05hbWUpIHJldHVybnMgZXZlcnlcbiAgICAgICAgLy8gYWN0aXZlIHN0YWNrIFdJVEggaXRzIHRhZ3MgaW4gb25lIHBhZ2luYXRlZCBzd2VlcCDigJQgYXZvaWRpbmcgdGhlIE4rMVxuICAgICAgICAvLyBEZXNjcmliZVN0YWNrcy1wZXItc3RhY2sgYSBMaXN0U3RhY2tzIHBhdGggbmVlZHMgKExpc3RTdGFja3Mgb21pdHMgdGFncylcbiAgICAgICAgLy8gYW5kIHRoZSBBUEkgdGhyb3R0bGluZyB0aGF0IGNhdXNlcyBvbiBhY2NvdW50cyB3aXRoIG1hbnkgc3RhY2tzLlxuICAgICAgICBpZiAoIW9wdGlvbnMuanNvbikgcHJpbnRJbmZvKCdMaXN0aW5nIENsb3VkRm9ybWF0aW9uIHN0YWNrcycsIHsgcmVnaW9uIH0pO1xuICAgICAgICBjb25zdCBjZm4gPSBuZXcgQ2xvdWRGb3JtYXRpb25DbGllbnQoeyByZWdpb24gfSk7XG4gICAgICAgIGNvbnN0IHN0YWNrczogU3RhY2tJbmZvW10gPSBbXTtcbiAgICAgICAgY29uc3QgYWN0aXZlU3RhdHVzZXMgPSBuZXcgU2V0KEFDVElWRV9TVEFUVVNFUyk7XG4gICAgICAgIGxldCBuZXh0VG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IHBhZ2VzID0gMDtcbiAgICAgICAgLy8gQmFja3N0b3Agb25seSAofjIwayBzdGFja3MgYXQgfjEwMC9wYWdlKSwgbm90IGFuIGV4cGVjdGVkIGxpbWl0LiBBIEZVTEwgc2NhblxuICAgICAgICAvLyBtYXR0ZXJzOiB0cnVuY2F0aW5nIHdvdWxkIGRpZmYgdGhlIHJlZ2lzdHJ5IGFnYWluc3QgYW4gaW5jb21wbGV0ZSBzdGFjayBzZXQgYW5kXG4gICAgICAgIC8vIHJlcG9ydCBsaXZlIHN0YWNrcyBhcyBgbWlzc2luZy1zdGFja2AuIFNvIGlmIHRoaXMgaXMgZXZlciBoaXQsIHdhcm4gTE9VRExZIHJhdGhlclxuICAgICAgICAvLyB0aGFuIHNpbGVudGx5IHVuZGVyLXJlcG9ydGluZyAodGhlIHByZXZpb3VzIGNvZGUgY2FwcGVkIGF0IDIwIHBhZ2VzIHNpbGVudGx5KS5cbiAgICAgICAgY29uc3QgTUFYX1BBR0VTID0gMjAwO1xuICAgICAgICBsZXQgdHJ1bmNhdGVkID0gZmFsc2U7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgY2ZuLnNlbmQobmV3IERlc2NyaWJlU3RhY2tzQ29tbWFuZCh7IE5leHRUb2tlbjogbmV4dFRva2VuIH0pKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHN0YWNrIG9mIHJlc3AuU3RhY2tzID8/IFtdKSB7XG4gICAgICAgICAgICBpZiAoIXN0YWNrLlN0YWNrTmFtZSkgY29udGludWU7XG4gICAgICAgICAgICBpZiAoIWFjdGl2ZVN0YXR1c2VzLmhhcyhzdGFjay5TdGFja1N0YXR1cyA/PyAnJykpIGNvbnRpbnVlOyAvLyBza2lwIGluLXByb2dyZXNzL3JvbGxlZC1iYWNrL2RlbGV0ZWRcbiAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSBzdGFjay5UYWdzID8/IFtdO1xuICAgICAgICAgICAgY29uc3QgcGJUYWcgPSB0YWdzLmZpbmQoKHQpID0+IHQuS2V5ID09PSAncGlwZWxpbmUtYnVpbGRlcicpPy5WYWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IG9yZ1RhZyA9IHRhZ3MuZmluZCgodCkgPT4gdC5LZXkgPT09ICdPcmdJZCcgfHwgdC5LZXkgPT09ICdvcmdJZCcpPy5WYWx1ZTtcbiAgICAgICAgICAgIGlmICghcGJUYWcpIGNvbnRpbnVlOyAvLyBOb3QgYSBwaXBlbGluZS1idWlsZGVyIHN0YWNrLlxuICAgICAgICAgICAgaWYgKG9wdGlvbnMub3JnICYmIG9yZ1RhZyAmJiBvcmdUYWcgIT09IG9wdGlvbnMub3JnKSBjb250aW51ZTsgLy8gV3Jvbmcgb3JnIGZpbHRlci5cbiAgICAgICAgICAgIHN0YWNrcy5wdXNoKHtcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiBzdGFjay5TdGFja05hbWUsXG4gICAgICAgICAgICAgIHN0YWNrU3RhdHVzOiBzdGFjay5TdGFja1N0YXR1cyA/PyAnVU5LTk9XTicsXG4gICAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgICAgcGlwZWxpbmVCdWlsZGVyVGFnOiBwYlRhZyxcbiAgICAgICAgICAgICAgb3JnSWRUYWc6IG9yZ1RhZyxcbiAgICAgICAgICAgICAgY3JlYXRpb25UaW1lOiBzdGFjay5DcmVhdGlvblRpbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dFRva2VuID0gcmVzcC5OZXh0VG9rZW47XG4gICAgICAgICAgcGFnZXMrKztcbiAgICAgICAgICBpZiAobmV4dFRva2VuICYmIHBhZ2VzID49IE1BWF9QQUdFUykgeyB0cnVuY2F0ZWQgPSB0cnVlOyBicmVhazsgfVxuICAgICAgICB9IHdoaWxlIChuZXh0VG9rZW4pO1xuICAgICAgICBpZiAodHJ1bmNhdGVkKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKGBTdGFjayBzY2FuIGhpdCB0aGUgJHtNQVhfUEFHRVN9LXBhZ2Ugc2FmZXR5IGNhcCDigJQgcmVzdWx0cyBtYXkgYmUgSU5DT01QTEVURSBhbmQgJ21pc3Npbmctc3RhY2snIGZpbmRpbmdzIGNvdWxkIGJlIGZhbHNlLiBOYXJyb3cgYnkgLS1yZWdpb24vLS1vcmcsIG9yIHJhaXNlIE1BWF9QQUdFUy5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpZmYuXG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5U3RhY2tOYW1lcyA9IG5ldyBTZXQoZW50cmllcy5tYXAoKGUpID0+IGUuc3RhY2tOYW1lKS5maWx0ZXIoKG4pOiBuIGlzIHN0cmluZyA9PiAhIW4pKTtcbiAgICAgICAgY29uc3QgY2ZuU3RhY2tOYW1lcyA9IG5ldyBTZXQoc3RhY2tzLm1hcCgocykgPT4gcy5zdGFja05hbWUpKTtcblxuICAgICAgICBjb25zdCBmaW5kaW5nczogQXVkaXRGaW5kaW5nW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzdGFjayBvZiBzdGFja3MpIHtcbiAgICAgICAgICBpZiAoIXJlZ2lzdHJ5U3RhY2tOYW1lcy5oYXMoc3RhY2suc3RhY2tOYW1lKSkge1xuICAgICAgICAgICAgZmluZGluZ3MucHVzaCh7XG4gICAgICAgICAgICAgIHR5cGU6ICdvcnBoYW5lZC1zdGFjaycsXG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogc3RhY2suc3RhY2tOYW1lLFxuICAgICAgICAgICAgICBkZXRhaWw6IGBDbG91ZEZvcm1hdGlvbiBzdGFjayB0YWdnZWQgcGlwZWxpbmUtYnVpbGRlcj0ke3N0YWNrLnBpcGVsaW5lQnVpbGRlclRhZyA/PyAnKHVuc2V0KSd9IGhhcyBubyBtYXRjaGluZyBwaXBlbGluZV9yZWdpc3RyeSBlbnRyeWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgaWYgKGVudHJ5LnN0YWNrTmFtZSAmJiAhY2ZuU3RhY2tOYW1lcy5oYXMoZW50cnkuc3RhY2tOYW1lKSkge1xuICAgICAgICAgICAgZmluZGluZ3MucHVzaCh7XG4gICAgICAgICAgICAgIHR5cGU6ICdtaXNzaW5nLXN0YWNrJyxcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiBlbnRyeS5zdGFja05hbWUsXG4gICAgICAgICAgICAgIHBpcGVsaW5lSWQ6IGVudHJ5LnBpcGVsaW5lSWQsXG4gICAgICAgICAgICAgIHBpcGVsaW5lTmFtZTogZW50cnkucGlwZWxpbmVOYW1lLFxuICAgICAgICAgICAgICBkZXRhaWw6IGBSZWdpc3RyeSBlbnRyeSByZWZlcmVuY2VzIHN0YWNrICR7ZW50cnkuc3RhY2tOYW1lfSBidXQgbm8gc3VjaCBzdGFjayBleGlzdHMgaW4gQ2xvdWRGb3JtYXRpb25gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQSB0cnVuY2F0ZWQgKGluY29tcGxldGUpIHNjYW4gaXMgYSBmaW5kaW5nIGluIGl0c2VsZjogaXQgY2FuIGJvdGggbWlzc1xuICAgICAgICAvLyByZWFsIGRyaWZ0IEFORCBlbWl0IGZhbHNlIG1pc3Npbmctc3RhY2sgZmluZGluZ3MsIHNvIGl0IG11c3QgZXhpdFxuICAgICAgICAvLyBub24temVybyBhbmQgYmUgdmlzaWJsZSBpbiB0aGUgSlNPTiAobWlycm9ycyBhdWRpdC10b2tlbnMpLlxuICAgICAgICBjb25zdCBleGl0Q29kZSA9IChmaW5kaW5ncy5sZW5ndGggPiAwIHx8IHRydW5jYXRlZCkgPyAxIDogMDtcblxuICAgICAgICBpZiAob3B0aW9ucy5qc29uKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgc2Nhbm5lZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICBvcmdGaWx0ZXI6IG9wdGlvbnMub3JnLFxuICAgICAgICAgICAgcmVnaXN0cnlFbnRyaWVzOiBlbnRyaWVzLmxlbmd0aCxcbiAgICAgICAgICAgIGNmblN0YWNrczogc3RhY2tzLmxlbmd0aCxcbiAgICAgICAgICAgIHRydW5jYXRlZCxcbiAgICAgICAgICAgIGZpbmRpbmdzLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgfSwgbnVsbCwgMikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByaW50U2VjdGlvbignQXVkaXQgUmVzdWx0cycpO1xuICAgICAgICAgIHByaW50SW5mbygnQ291bnRzJywge1xuICAgICAgICAgICAgcmVnaXN0cnlFbnRyaWVzOiBTdHJpbmcoZW50cmllcy5sZW5ndGgpLFxuICAgICAgICAgICAgY2ZuU3RhY2tzOiBTdHJpbmcoc3RhY2tzLmxlbmd0aCksXG4gICAgICAgICAgICBmaW5kaW5nczogU3RyaW5nKGZpbmRpbmdzLmxlbmd0aCksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGZpbmRpbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcHJpbnRTdWNjZXNzKCdObyBkcmlmdCBiZXR3ZWVuIHBpcGVsaW5lX3JlZ2lzdHJ5IGFuZCBDbG91ZEZvcm1hdGlvbicpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGYgb2YgZmluZGluZ3MpIHtcbiAgICAgICAgICAgICAgaWYgKGYudHlwZSA9PT0gJ29ycGhhbmVkLXN0YWNrJykge1xuICAgICAgICAgICAgICAgIHByaW50V2FybmluZyhgT1JQSEFORUQgICR7Zi5zdGFja05hbWV9IOKAlCAke2YuZGV0YWlsfWApO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHByaW50V2FybmluZyhgTUlTU0lORyAgICR7Zi5zdGFja05hbWV9IChwaXBlbGluZSAke2YucGlwZWxpbmVJZCA/PyAnPyd9KSDigJQgJHtmLmRldGFpbH1gKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJpbnRFcnJvcihgJHtmaW5kaW5ncy5sZW5ndGh9IGRyaWZ0IGZpbmRpbmcke2ZpbmRpbmdzLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnfS4gUmV2aWV3IGFuZCByZWNvbmNpbGUgbWFudWFsbHkuYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3MuZXhpdChleGl0Q29kZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogZmFsc2UsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnYXVkaXQtc3RhY2tzJywgZXhlY3V0aW9uSWQgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtc3RhY2tzLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvYXVkaXQtc3RhY2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNySyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQW1DN0QsTUFBTSxlQUFlLEdBQUc7SUFDdEIsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCO0lBQ2hFLGlCQUFpQixFQUFFLDBCQUEwQjtDQUM5QyxDQUFDO0FBRUYscUdBQXFHO0FBQ3JHLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztBQUV2QyxzRkFBc0Y7QUFDdEYsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLENBQUM7QUFFcEM7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsdUJBQXVCLENBQzNDLE1BQXVGLEVBQ3ZGLFdBQW1CLEVBQ25CLEtB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SUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvbkNsaWVudCwgRGVzY3JpYmVTdGFja3NDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZGVjb2RlVG9rZW5QYXlsb2FkIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC1ndWFyZC5qcyc7XG5pbXBvcnQgeyBhcHBseUF3c1Byb2ZpbGUsIHJlc29sdmVBd3NSZWdpb24gfSBmcm9tICcuLi91dGlscy9hd3MtZW52LmpzJztcbmltcG9ydCB7IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYywgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcsIHdpdGhQcm9maWxlT3B0aW9uLCB3aXRoUmVnaW9uT3B0aW9uLCB3aXRoU3NsT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIHJlcG9ydEVycm9yLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBleHRyYWN0TGlzdFBhZ2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS11dGlscy5qcyc7XG5cbi8qKiBPbmUgYEdFVCAvYXBpL3BpcGVsaW5lcy9yZWdpc3RyeWAgcm93ICh0aGUgZmllbGRzIHRoaXMgYXVkaXQgcmVhZHMpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyeUVudHJ5IHtcbiAgLyoqIFJlZ2lzdHJ5IHJvdyBVVUlEIOKAlCB3aGF0IGBwaXBlbGluZSBkZXJlZ2lzdGVyIC0taWRgIHRha2VzLiAqL1xuICBpZDogc3RyaW5nO1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIG9yZ0lkPzogc3RyaW5nO1xuICBwaXBlbGluZU5hbWU6IHN0cmluZztcbiAgc3RhY2tOYW1lPzogc3RyaW5nO1xuICByZWdpb24/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTdGFja0luZm8ge1xuICBzdGFja05hbWU6IHN0cmluZztcbiAgc3RhY2tTdGF0dXM6IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIHBpcGVsaW5lQnVpbGRlclRhZz86IHN0cmluZztcbiAgb3JnSWRUYWc/OiBzdHJpbmc7XG4gIHBpcGVsaW5lSWRUYWc/OiBzdHJpbmc7XG4gIGNyZWF0aW9uVGltZT86IERhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaXRGaW5kaW5nIHtcbiAgdHlwZTogJ29ycGhhbmVkLXN0YWNrJyB8ICdtaXNzaW5nLXN0YWNrJztcbiAgc3RhY2tOYW1lPzogc3RyaW5nO1xuICBwaXBlbGluZUlkPzogc3RyaW5nO1xuICBwaXBlbGluZU5hbWU/OiBzdHJpbmc7XG4gIC8qKiBSZWdpc3RyeSByb3cgaWQgKG1pc3Npbmctc3RhY2sgb25seSkuICovXG4gIHJlZ2lzdHJ5SWQ/OiBzdHJpbmc7XG4gIGRldGFpbDogc3RyaW5nO1xuICAvKiogVGhlIGNvbW1hbmQgdGhhdCByZWNvbmNpbGVzIHRoaXMgZmluZGluZy4gKi9cbiAgZml4OiBzdHJpbmc7XG59XG5cbmNvbnN0IEFDVElWRV9TVEFUVVNFUyA9IFtcbiAgJ0NSRUFURV9DT01QTEVURScsICdVUERBVEVfQ09NUExFVEUnLCAnVVBEQVRFX1JPTExCQUNLX0NPTVBMRVRFJyxcbiAgJ0lNUE9SVF9DT01QTEVURScsICdJTVBPUlRfUk9MTEJBQ0tfQ09NUExFVEUnLFxuXTtcblxuLyoqIFJlZ2lzdHJ5IHJvd3MgZmV0Y2hlZCBwZXIgcmVxdWVzdCAodGhlIHJvdXRlIGNhcHMgYGxpbWl0YCBhdCBNQVhfUEFHRV9MSU1JVCwgMTAwMCBieSBkZWZhdWx0KS4gKi9cbmV4cG9ydCBjb25zdCBSRUdJU1RSWV9QQUdFX0xJTUlUID0gNTAwO1xuXG4vKiogRGVmYXVsdCBiYWNrc3RvcCBvbiBDbG91ZEZvcm1hdGlvbiBEZXNjcmliZVN0YWNrcyBwYWdlcyAofjEwMCBzdGFja3MgcGVyIHBhZ2UpLiAqL1xuY29uc3QgREVGQVVMVF9NQVhfU1RBQ0tfUEFHRVMgPSAyMDA7XG5cbi8qKlxuICogUmVhZCBFVkVSWSByZWdpc3RyeSByb3cgdGhlIHBsYXRmb3JtIHJldHVybnMgZm9yIHRoaXMgY2FsbGVyIChgbGltaXRgICtcbiAqIGBvZmZzZXRgIHBhZ2luZyB1bnRpbCBgcGFnaW5hdGlvbi5oYXNNb3JlYCBpcyBmYWxzZSkuIEEgcGFydGlhbCByZWdpc3RyeSBpc1xuICogYXMgYmFkIGFzIGFuIGVtcHR5IG9uZTogZWFjaCByb3cgbGVmdCB1bnJlYWQgYmVjb21lcyBhIGZhbHNlIG9ycGhhbmVkLXN0YWNrXG4gKiBmaW5kaW5nLiBgb3JnSWRgIGlzIHNlbnQgd2hlbiBgLS1vcmdgIG5hbWVzIGFuIG9yZyDigJQgdGhlIHBsYXRmb3JtIHNjb3BlcyB0aGVcbiAqIGxpc3QgdG8gdGhlIGNhbGxlcidzIG9yZyB1bmxlc3MgaXQgaG9ub3VycyB0aGF0IHBhcmFtZXRlciAoYSBzeXN0ZW0tb3JnXG4gKiBjYWxsZXIpLCBhbmQgdGhlIGNhbGxlciBjaGVja3Mgd2hpY2ggb3JnIGl0IGdvdCBiYWNrLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hBbGxSZWdpc3RyeUVudHJpZXMoXG4gIGNsaWVudDogeyBnZXQ8VCA9IHVua25vd24+KHVybDogc3RyaW5nLCBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFByb21pc2U8VD4gfSxcbiAgcGlwZWxpbmVVcmw6IHN0cmluZyxcbiAgb3JnSWQ/OiBzdHJpbmcsXG4pOiBQcm9taXNlPFJlZ2lzdHJ5RW50cnlbXT4ge1xuICBjb25zdCBlbnRyaWVzOiBSZWdpc3RyeUVudHJ5W10gPSBbXTtcbiAgZm9yIChsZXQgb2Zmc2V0ID0gMDsgOyBvZmZzZXQgKz0gUkVHSVNUUllfUEFHRV9MSU1JVCkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNsaWVudC5nZXQoYCR7cGlwZWxpbmVVcmx9L3JlZ2lzdHJ5YCwge1xuICAgICAgbGltaXQ6IFJFR0lTVFJZX1BBR0VfTElNSVQsXG4gICAgICBvZmZzZXQsXG4gICAgICAuLi4ob3JnSWQgPyB7IG9yZ0lkIH0gOiB7fSksXG4gICAgfSk7XG4gICAgY29uc3QgcGFnZSA9IGV4dHJhY3RMaXN0UGFnZTxSZWdpc3RyeUVudHJ5PihyZXMsICdyZWdpc3RyeScpO1xuICAgIGVudHJpZXMucHVzaCguLi5wYWdlLml0ZW1zKTtcbiAgICAvLyBBbiBlbXB0eSBwYWdlIGVuZHMgdGhlIHdhbGsgZXZlbiBpZiB0aGUgc2VydmVyIGNsYWltcyBtb3JlLCBzbyBhXG4gICAgLy8gbWlzcmVwb3J0aW5nIHNlcnZlciBjYW4ndCBzcGluIHRoaXMgZm9yZXZlci5cbiAgICBpZiAoIXBhZ2UuaGFzTW9yZSB8fCBwYWdlLml0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGVudHJpZXM7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBhdWRpdC1zdGFja3NgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogRGlmZnMgQ2xvdWRGb3JtYXRpb24gc3RhY2tzIChmaWx0ZXJlZCB0byB0aG9zZSB0YWdnZWQgd2l0aCBgcGlwZWxpbmUtYnVpbGRlcmApXG4gKiBhZ2FpbnN0IHRoZSBwbGF0Zm9ybSdzIGBwaXBlbGluZV9yZWdpc3RyeWAgdGFibGUuIFN1cmZhY2VzOlxuICogICAtICoqT3JwaGFuZWQgc3RhY2tzKio6IHRhZ2dlZCBzdGFja3Mgd2l0aCBubyBEQiByZWNvcmQgKGxpa2VseSBsZWZ0b3ZlcnMgYWZ0ZXJcbiAqICAgICBhIHBpcGVsaW5lIHdhcyBkZWxldGVkIGZyb20gdGhlIGRhc2hib2FyZCBidXQgdGhlIENESyBzdGFjayBzdGF5ZWQgaW4gQVdTKS5cbiAqICAgLSAqKk1pc3Npbmcgc3RhY2tzKio6IHJlZ2lzdHJ5IGVudHJpZXMgcG9pbnRpbmcgdG8gc3RhY2tzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0XG4gKiAgICAgaW4gQ2xvdWRGb3JtYXRpb24gKGxpa2VseSBhZnRlciBhIG1hbnVhbCBgYXdzIGNsb3VkZm9ybWF0aW9uIGRlbGV0ZS1zdGFja2ApLlxuICpcbiAqIFNjb3BlOiB0aGUgcmVnaXN0cnkgb2YgT05FIG9yZyAoeW91cnMsIG9yIGAtLW9yZ2Agd2hlbiB0aGUgcGxhdGZvcm0gbGV0cyB0aGVcbiAqIGNyZWRlbnRpYWwgbGlzdCB0aGF0IG9yZykgYWdhaW5zdCB0aGUgc3RhY2tzIG9mIE9ORSByZWdpb24gKGAtLXJlZ2lvbmApIOKAlFxuICogcmVnaXN0cnkgcm93cyBvZiBvdGhlciByZWdpb25zIGFyZSBjb3VudGVkIGJ1dCBub3QgY29tcGFyZWQsIGFuZCBzdGFja3NcbiAqIHRhZ2dlZCB3aXRoIGFub3RoZXIgYE9yZ0lkYCBhcmUgc2tpcHBlZC4gRXZlcnkgZmluZGluZyBjYXJyaWVzIHRoZSBjb21tYW5kXG4gKiB0aGF0IHJlY29uY2lsZXMgaXQgKGBwaXBlbGluZSBkZXJlZ2lzdGVyYCBmb3IgYSBtaXNzaW5nIHN0YWNrOyBgcGlwZWxpbmVcbiAqIHJlZ2lzdGVyYCBvciBgYXdzIGNsb3VkZm9ybWF0aW9uIGRlbGV0ZS1zdGFja2AgZm9yIGFuIG9ycGhhbmVkIG9uZSkuXG4gKlxuICogRGVzaWduZWQgZm9yIGNyb24gdXNlOlxuICogICAtIEV4aXRzIDAgd2hlbiB0aGVyZSBhcmUgbm8gZmluZGluZ3MuXG4gKiAgIC0gRXhpdHMgMSB3aGVuIGF0IGxlYXN0IG9uZSBvcnBoYW5lZCBvciBtaXNzaW5nIHN0YWNrIGlzIGZvdW5kLlxuICogICAtIEV4aXRzIDIgb24gQVdTIGVycm9ycyAvIHNjYW4gZmFpbHVyZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXVkaXQgc3RhY2tzIC0tcmVnaW9uIHVzLWVhc3QtMVxuICogcGlwZWxpbmUtbWFuYWdlciBhdWRpdCBzdGFja3MgLS1yZWdpb24gZXUtd2VzdC0xIC0tanNvblxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdWRpdFN0YWNrcyhwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHdpdGhTc2xPcHRpb25zKFxuICAgIHdpdGhQcm9maWxlT3B0aW9uKFxuICAgICAgd2l0aFJlZ2lvbk9wdGlvbihwcm9ncmFtXG4gICAgICAgIC5jb21tYW5kKCdzdGFja3MnKVxuICAgICAgICAuZGVzY3JpcHRpb24oJ0RpZmYgQ2xvdWRGb3JtYXRpb24gc3RhY2tzIHZzIHBpcGVsaW5lX3JlZ2lzdHJ5IHRvIGZpbmQgb3JwaGFuZWQgb3IgbWlzc2luZyBDREsgZGVwbG95bWVudHMnKSksXG4gICAgKVxuICAgICAgLm9wdGlvbignLS1vcmcgPG9yZ0lkPicsICdBdWRpdCB0aGlzIG9yZyAoZGVmYXVsdDogeW91ciBvd24pLiBBbm90aGVyIG9yZyBuZWVkcyBhIGNyZWRlbnRpYWwgdGhlIHBsYXRmb3JtIGxldHMgbGlzdCBpdCcpXG4gICAgICAub3B0aW9uKCctLW1heC1wYWdlcyA8bj4nLCAnU2FmZXR5IGNhcCBvbiBDbG91ZEZvcm1hdGlvbiBEZXNjcmliZVN0YWNrcyBwYWdlcyAofjEwMCBzdGFja3MgZWFjaCknLCBTdHJpbmcoREVGQVVMVF9NQVhfU1RBQ0tfUEFHRVMpKVxuICAgICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHRzIGFzIEpTT04nLCBmYWxzZSksXG4gIClcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQXVkaXQgU3RhY2tzJywgdW5kZWZpbmVkLCB7IHF1aWV0OiBvcHRpb25zLmpzb24gfSk7XG4gICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICBjb25zdCByZWdpb24gPSByZXNvbHZlQXdzUmVnaW9uKG9wdGlvbnMucmVnaW9uKTtcbiAgICAgIC8vIEhvbm9yIC0tcHJvZmlsZSBmb3IgdGhlIFNESyBDbG91ZEZvcm1hdGlvbiBjbGllbnQgYmVsb3cgKHdpdGhvdXQgdGhpcywgdGhlXG4gICAgICAvLyBzY2FuIGFsd2F5cyBoaXQgdGhlIGRlZmF1bHQgYWNjb3VudCBhbmQgY291bGQgZGlmZiB0aGUgcmVnaXN0cnkgYWdhaW5zdFxuICAgICAgLy8gdGhlIFdST05HIGFjY291bnQncyBzdGFja3Mg4oaSIGJvZ3VzIG9ycGhhbmVkL21pc3NpbmcgZmluZGluZ3MpLlxuICAgICAgYXBwbHlBd3NQcm9maWxlKG9wdGlvbnMucHJvZmlsZSk7XG4gICAgICBjb25zdCBtYXhQYWdlcyA9IE51bWJlci5wYXJzZUludChTdHJpbmcob3B0aW9ucy5tYXhQYWdlcyksIDEwKTtcbiAgICAgIC8vIE9yZyBpZHMgYXJlIGxvd2VyY2FzZSAodGhlIHJvdXRlIGxvd2VyY2FzZXMgYD9vcmdJZD1gIHRoZSBzYW1lIHdheSkuXG4gICAgICBjb25zdCByZXF1ZXN0ZWRPcmc6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHR5cGVvZiBvcHRpb25zLm9yZyA9PT0gJ3N0cmluZycgJiYgb3B0aW9ucy5vcmcudHJpbSgpXG4gICAgICAgID8gb3B0aW9ucy5vcmcudHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgIC8vIERlY2lkZWQgaW5zaWRlIHRoZSB0cnksIGV4aXRlZCBvbiBvdXRzaWRlIGl0OiBhbiBleGl0IGluc2lkZSB3b3VsZCBiZVxuICAgICAgLy8gY2F1Z2h0IGFzIGEgc2NhbiBmYWlsdXJlIHdoZXJldmVyIHByb2Nlc3MuZXhpdCB0aHJvd3MgKHRlc3RzLCBlbWJlZGRlcnMpLlxuICAgICAgbGV0IGV4aXRDb2RlOiBudW1iZXI7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIobWF4UGFnZXMpIHx8IG1heFBhZ2VzIDwgMSkge1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJy0tbWF4LXBhZ2VzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJywgJ21heC1wYWdlcycsIFN0cmluZyhvcHRpb25zLm1heFBhZ2VzKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRmV0Y2ggdGhlIHBsYXRmb3JtJ3MgdmlldyBvZiByZWdpc3RlcmVkIHBpcGVsaW5lcy5cbiAgICAgICAgLy8gUHJvZ3Jlc3MgZ29lcyB0byBzdGRvdXQsIHNvIHN1cHByZXNzIGl0IGluIC0tanNvbiBtb2RlIHRvIGtlZXAgdGhlIEpTT04gcGF5bG9hZCBjbGVhbiBmb3IgcGlwaW5nLlxuICAgICAgICBpZiAoIW9wdGlvbnMuanNvbikgcHJpbnRJbmZvKCdGZXRjaGluZyBwaXBlbGluZSByZWdpc3RyeSBmcm9tIHBsYXRmb3JtJywgeyBvcmc6IG9wdGlvbnMub3JnID8/ICcoeW91ciBvcmcpJyB9KTtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jKG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBhbGxFbnRyaWVzID0gYXdhaXQgZmV0Y2hBbGxSZWdpc3RyeUVudHJpZXMoY2xpZW50LCBjbGllbnQuZ2V0Q29uZmlnKCkuYXBpLnBpcGVsaW5lVXJsLCByZXF1ZXN0ZWRPcmcpO1xuXG4gICAgICAgIC8vIFdoaWNoIG9yZyB0aGlzIGF1ZGl0IGlzIGFib3V0LiBgLS1vcmdgIGlzIGEgcmVxdWVzdDsgdGhlIHJvd3Mgc2F5IHdoYXRcbiAgICAgICAgLy8gdGhlIHBsYXRmb3JtIGFjdHVhbGx5IGFuc3dlcmVkIGZvci4gQSBwbGF0Zm9ybSB0aGF0IHNjb3BlZCB0aGUgbGlzdCB0b1xuICAgICAgICAvLyB0aGUgY2FsbGVyJ3Mgb3duIG9yZyBpbnN0ZWFkIHdvdWxkIG1ha2UgZXZlcnkgc3RhY2sgb2YgdGhlIHJlcXVlc3RlZFxuICAgICAgICAvLyBvcmcgcmVhZCBhcyBvcnBoYW5lZCDigJQgc28gYSBtaXNtYXRjaCBpcyBhbiBlcnJvciwgbm90IGEgZmluZGluZy5cbiAgICAgICAgY29uc3QgYW5zd2VyZWRGb3IgPSBuZXcgU2V0KGFsbEVudHJpZXMubWFwKChlKSA9PiBlLm9yZ0lkKS5maWx0ZXIoKG8pOiBvIGlzIHN0cmluZyA9PiAhIW8pKTtcbiAgICAgICAgaWYgKHJlcXVlc3RlZE9yZyAmJiBbLi4uYW5zd2VyZWRGb3JdLnNvbWUoKG8pID0+IG8gIT09IHJlcXVlc3RlZE9yZykpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgYFRoZSBwbGF0Zm9ybSByZXR1cm5lZCB0aGUgcmVnaXN0cnkgb2YgJHtbLi4uYW5zd2VyZWRGb3JdLmpvaW4oJywgJyl9LCBub3QgLS1vcmcgJHtyZXF1ZXN0ZWRPcmd9LiBgXG4gICAgICAgICAgICArICdBdWRpdGluZyBhbm90aGVyIG9yZyBuZWVkcyBhIGNyZWRlbnRpYWwgdGhlIHBsYXRmb3JtIGxldHMgbGlzdCB0aGF0IG9yZ1xcJ3MgcmVnaXN0cnkuJyxcbiAgICAgICAgICAgICdvcmcnLFxuICAgICAgICAgICAgcmVxdWVzdGVkT3JnLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXVkaXRPcmc6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHJlcXVlc3RlZE9yZ1xuICAgICAgICAgID8/IChhbnN3ZXJlZEZvci5zaXplID09PSAxID8gWy4uLmFuc3dlcmVkRm9yXVswXSA6IHVuZGVmaW5lZClcbiAgICAgICAgICA/PyBkZWNvZGVUb2tlblBheWxvYWQocHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4gPz8gJycpPy5vcmdhbml6YXRpb25JZDtcblxuICAgICAgICAvLyBUaGUgc2NhbiBiZWxvdyBjb3ZlcnMgT05FIHJlZ2lvbiwgc28gb25seSB0aGF0IHJlZ2lvbidzIHJvd3MgY2FuIGJlXG4gICAgICAgIC8vIGNvbXBhcmVkIOKAlCBldmVyeSBvdGhlciByZWdpb24ncyBwaXBlbGluZSB3b3VsZCBvdGhlcndpc2UgYmUgXCJtaXNzaW5nXCIuXG4gICAgICAgIC8vIEEgcm93IHdpdGggbm8gcmVnaW9uIGNhbid0IGJlIHBsYWNlZCwgc28gaXQgaXMgY291bnRlZCBhbmQgbGVmdCBvdXQuXG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBhbGxFbnRyaWVzLmZpbHRlcigoZSkgPT4gZS5yZWdpb24gPT09IHJlZ2lvbik7XG4gICAgICAgIGNvbnN0IHdpdGhvdXRSZWdpb24gPSBhbGxFbnRyaWVzLmZpbHRlcigoZSkgPT4gIWUucmVnaW9uKS5sZW5ndGg7XG4gICAgICAgIGlmICh3aXRob3V0UmVnaW9uID4gMCAmJiAhb3B0aW9ucy5qc29uKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKGAke3dpdGhvdXRSZWdpb259IHJlZ2lzdHJ5IGVudHIke3dpdGhvdXRSZWdpb24gPT09IDEgPyAneSBoYXMnIDogJ2llcyBoYXZlJ30gbm8gcmVnaW9uIGFuZCAke3dpdGhvdXRSZWdpb24gPT09IDEgPyAnaXMnIDogJ2FyZSd9IG5vdCBjb21wYXJlZCDigJQgcmUtcmVnaXN0ZXIgd2l0aCBcInBpcGVsaW5lLW1hbmFnZXIgcGlwZWxpbmUgcmVnaXN0ZXIgLS1pZCA8cGlwZWxpbmVJZD4gLS1yZWdpb24gPHJlZ2lvbj5cImApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYXVkaXRPcmcgJiYgIW9wdGlvbnMuanNvbikge1xuICAgICAgICAgIHByaW50V2FybmluZygnQ291bGQgbm90IHRlbGwgd2hpY2ggb3JnIHRoaXMgY3JlZGVudGlhbCBiZWxvbmdzIHRvIOKAlCBzdGFja3Mgb2YgZXZlcnkgb3JnIGluIHRoZSBhY2NvdW50IGFyZSBjb21wYXJlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmV0Y2ggc3RhY2tzIGZyb20gQ2xvdWRGb3JtYXRpb24uIERlc2NyaWJlU3RhY2tzIChubyBTdGFja05hbWUpIHJldHVybnMgZXZlcnlcbiAgICAgICAgLy8gYWN0aXZlIHN0YWNrIFdJVEggaXRzIHRhZ3MgaW4gb25lIHBhZ2luYXRlZCBzd2VlcCDigJQgYXZvaWRpbmcgdGhlIE4rMVxuICAgICAgICAvLyBEZXNjcmliZVN0YWNrcy1wZXItc3RhY2sgYSBMaXN0U3RhY2tzIHBhdGggbmVlZHMgKExpc3RTdGFja3Mgb21pdHMgdGFncylcbiAgICAgICAgLy8gYW5kIHRoZSBBUEkgdGhyb3R0bGluZyB0aGF0IGNhdXNlcyBvbiBhY2NvdW50cyB3aXRoIG1hbnkgc3RhY2tzLlxuICAgICAgICBpZiAoIW9wdGlvbnMuanNvbikgcHJpbnRJbmZvKCdMaXN0aW5nIENsb3VkRm9ybWF0aW9uIHN0YWNrcycsIHsgcmVnaW9uIH0pO1xuICAgICAgICBjb25zdCBjZm4gPSBuZXcgQ2xvdWRGb3JtYXRpb25DbGllbnQoeyByZWdpb24gfSk7XG4gICAgICAgIGNvbnN0IHN0YWNrczogU3RhY2tJbmZvW10gPSBbXTtcbiAgICAgICAgY29uc3QgYWN0aXZlU3RhdHVzZXMgPSBuZXcgU2V0KEFDVElWRV9TVEFUVVNFUyk7XG4gICAgICAgIGxldCBuZXh0VG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IHBhZ2VzID0gMDtcbiAgICAgICAgLy8gQmFja3N0b3Agb25seSAofjIwayBzdGFja3MgYXQgfjEwMC9wYWdlKSwgbm90IGFuIGV4cGVjdGVkIGxpbWl0LiBBIEZVTEwgc2NhblxuICAgICAgICAvLyBtYXR0ZXJzOiB0cnVuY2F0aW5nIHdvdWxkIGRpZmYgdGhlIHJlZ2lzdHJ5IGFnYWluc3QgYW4gaW5jb21wbGV0ZSBzdGFjayBzZXQgYW5kXG4gICAgICAgIC8vIHJlcG9ydCBsaXZlIHN0YWNrcyBhcyBgbWlzc2luZy1zdGFja2AuIFNvIGlmIHRoaXMgaXMgZXZlciBoaXQsIHdhcm4gTE9VRExZIHJhdGhlclxuICAgICAgICAvLyB0aGFuIHNpbGVudGx5IHVuZGVyLXJlcG9ydGluZyAodGhlIHByZXZpb3VzIGNvZGUgY2FwcGVkIGF0IDIwIHBhZ2VzIHNpbGVudGx5KS5cbiAgICAgICAgbGV0IHRydW5jYXRlZCA9IGZhbHNlO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGNmbi5zZW5kKG5ldyBEZXNjcmliZVN0YWNrc0NvbW1hbmQoeyBOZXh0VG9rZW46IG5leHRUb2tlbiB9KSk7XG4gICAgICAgICAgZm9yIChjb25zdCBzdGFjayBvZiByZXNwLlN0YWNrcyA/PyBbXSkge1xuICAgICAgICAgICAgaWYgKCFzdGFjay5TdGFja05hbWUpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKCFhY3RpdmVTdGF0dXNlcy5oYXMoc3RhY2suU3RhY2tTdGF0dXMgPz8gJycpKSBjb250aW51ZTsgLy8gc2tpcCBpbi1wcm9ncmVzcy9yb2xsZWQtYmFjay9kZWxldGVkXG4gICAgICAgICAgICBjb25zdCB0YWdzID0gc3RhY2suVGFncyA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IHBiVGFnID0gdGFncy5maW5kKCh0KSA9PiB0LktleSA9PT0gJ3BpcGVsaW5lLWJ1aWxkZXInKT8uVmFsdWU7XG4gICAgICAgICAgICBjb25zdCBvcmdUYWcgPSB0YWdzLmZpbmQoKHQpID0+IHQuS2V5ID09PSAnT3JnSWQnKT8uVmFsdWU7XG4gICAgICAgICAgICBpZiAoIXBiVGFnKSBjb250aW51ZTsgLy8gTm90IGEgcGlwZWxpbmUtYnVpbGRlciBzdGFjay5cbiAgICAgICAgICAgIC8vIEFub3RoZXIgb3JnJ3Mgc3RhY2sgaW4gdGhlIHNhbWUgYWNjb3VudCBpcyBub3QgdGhpcyBvcmcncyBkcmlmdC5cbiAgICAgICAgICAgIGlmIChhdWRpdE9yZyAmJiBvcmdUYWcgJiYgb3JnVGFnLnRvTG93ZXJDYXNlKCkgIT09IGF1ZGl0T3JnLnRvTG93ZXJDYXNlKCkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgc3RhY2tzLnB1c2goe1xuICAgICAgICAgICAgICBzdGFja05hbWU6IHN0YWNrLlN0YWNrTmFtZSxcbiAgICAgICAgICAgICAgc3RhY2tTdGF0dXM6IHN0YWNrLlN0YWNrU3RhdHVzID8/ICdVTktOT1dOJyxcbiAgICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgICBwaXBlbGluZUJ1aWxkZXJUYWc6IHBiVGFnLFxuICAgICAgICAgICAgICBvcmdJZFRhZzogb3JnVGFnLFxuICAgICAgICAgICAgICBwaXBlbGluZUlkVGFnOiB0YWdzLmZpbmQoKHQpID0+IHQuS2V5ID09PSAncGIucGlwZWxpbmUtaWQnKT8uVmFsdWUsXG4gICAgICAgICAgICAgIGNyZWF0aW9uVGltZTogc3RhY2suQ3JlYXRpb25UaW1lLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHRUb2tlbiA9IHJlc3AuTmV4dFRva2VuO1xuICAgICAgICAgIHBhZ2VzKys7XG4gICAgICAgICAgaWYgKG5leHRUb2tlbiAmJiBwYWdlcyA+PSBtYXhQYWdlcykgeyB0cnVuY2F0ZWQgPSB0cnVlOyBicmVhazsgfVxuICAgICAgICB9IHdoaWxlIChuZXh0VG9rZW4pO1xuICAgICAgICBpZiAodHJ1bmNhdGVkKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKGBTdGFjayBzY2FuIGhpdCB0aGUgJHttYXhQYWdlc30tcGFnZSBzYWZldHkgY2FwIOKAlCByZXN1bHRzIG1heSBiZSBJTkNPTVBMRVRFIGFuZCAnbWlzc2luZy1zdGFjaycgZmluZGluZ3MgY291bGQgYmUgZmFsc2UuIFJhaXNlIC0tbWF4LXBhZ2VzLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGlmZi5cbiAgICAgICAgY29uc3QgcmVnaXN0cnlTdGFja05hbWVzID0gbmV3IFNldChlbnRyaWVzLm1hcCgoZSkgPT4gZS5zdGFja05hbWUpLmZpbHRlcigobik6IG4gaXMgc3RyaW5nID0+ICEhbikpO1xuICAgICAgICBjb25zdCBjZm5TdGFja05hbWVzID0gbmV3IFNldChzdGFja3MubWFwKChzKSA9PiBzLnN0YWNrTmFtZSkpO1xuXG4gICAgICAgIGNvbnN0IGZpbmRpbmdzOiBBdWRpdEZpbmRpbmdbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHN0YWNrIG9mIHN0YWNrcykge1xuICAgICAgICAgIGlmICghcmVnaXN0cnlTdGFja05hbWVzLmhhcyhzdGFjay5zdGFja05hbWUpKSB7XG4gICAgICAgICAgICBmaW5kaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgdHlwZTogJ29ycGhhbmVkLXN0YWNrJyxcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiBzdGFjay5zdGFja05hbWUsXG4gICAgICAgICAgICAgIC4uLihzdGFjay5waXBlbGluZUlkVGFnID8geyBwaXBlbGluZUlkOiBzdGFjay5waXBlbGluZUlkVGFnIH0gOiB7fSksXG4gICAgICAgICAgICAgIGRldGFpbDogYENsb3VkRm9ybWF0aW9uIHN0YWNrIHRhZ2dlZCBwaXBlbGluZS1idWlsZGVyPSR7c3RhY2sucGlwZWxpbmVCdWlsZGVyVGFnID8/ICcodW5zZXQpJ30gaGFzIG5vIG1hdGNoaW5nIHBpcGVsaW5lX3JlZ2lzdHJ5IGVudHJ5YCxcbiAgICAgICAgICAgICAgLy8gU3RpbGwgd2FudGVkIOKGkiByZWdpc3RlciBpdDsgYSBsZWZ0b3ZlciDihpIgZGVsZXRlIHRoZSBzdGFjay5cbiAgICAgICAgICAgICAgZml4OiBzdGFjay5waXBlbGluZUlkVGFnXG4gICAgICAgICAgICAgICAgPyBgcGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSByZWdpc3RlciAtLWlkICR7c3RhY2sucGlwZWxpbmVJZFRhZ30gLS1yZWdpb24gJHtyZWdpb259ICAgIyBvciwgaWYgdW53YW50ZWQ6IGF3cyBjbG91ZGZvcm1hdGlvbiBkZWxldGUtc3RhY2sgLS1zdGFjay1uYW1lICR7c3RhY2suc3RhY2tOYW1lfSAtLXJlZ2lvbiAke3JlZ2lvbn1gXG4gICAgICAgICAgICAgICAgOiBgYXdzIGNsb3VkZm9ybWF0aW9uIGRlbGV0ZS1zdGFjayAtLXN0YWNrLW5hbWUgJHtzdGFjay5zdGFja05hbWV9IC0tcmVnaW9uICR7cmVnaW9ufWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgaWYgKGVudHJ5LnN0YWNrTmFtZSAmJiAhY2ZuU3RhY2tOYW1lcy5oYXMoZW50cnkuc3RhY2tOYW1lKSkge1xuICAgICAgICAgICAgZmluZGluZ3MucHVzaCh7XG4gICAgICAgICAgICAgIHR5cGU6ICdtaXNzaW5nLXN0YWNrJyxcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiBlbnRyeS5zdGFja05hbWUsXG4gICAgICAgICAgICAgIHBpcGVsaW5lSWQ6IGVudHJ5LnBpcGVsaW5lSWQsXG4gICAgICAgICAgICAgIHBpcGVsaW5lTmFtZTogZW50cnkucGlwZWxpbmVOYW1lLFxuICAgICAgICAgICAgICByZWdpc3RyeUlkOiBlbnRyeS5pZCxcbiAgICAgICAgICAgICAgZGV0YWlsOiBgUmVnaXN0cnkgZW50cnkgcmVmZXJlbmNlcyBzdGFjayAke2VudHJ5LnN0YWNrTmFtZX0gYnV0IG5vIHN1Y2ggc3RhY2sgZXhpc3RzIGluIENsb3VkRm9ybWF0aW9uICgke3JlZ2lvbn0pYCxcbiAgICAgICAgICAgICAgZml4OiBgcGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSBkZXJlZ2lzdGVyIC0taWQgJHtlbnRyeS5pZH1gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQSB0cnVuY2F0ZWQgKGluY29tcGxldGUpIHNjYW4gaXMgYSBmaW5kaW5nIGluIGl0c2VsZjogaXQgY2FuIGJvdGggbWlzc1xuICAgICAgICAvLyByZWFsIGRyaWZ0IEFORCBlbWl0IGZhbHNlIG1pc3Npbmctc3RhY2sgZmluZGluZ3MsIHNvIGl0IG11c3QgZXhpdFxuICAgICAgICAvLyBub24temVybyBhbmQgYmUgdmlzaWJsZSBpbiB0aGUgSlNPTiAobWlycm9ycyBhdWRpdC10b2tlbnMpLlxuICAgICAgICBleGl0Q29kZSA9IChmaW5kaW5ncy5sZW5ndGggPiAwIHx8IHRydW5jYXRlZCkgPyAxIDogMDtcblxuICAgICAgICBpZiAob3B0aW9ucy5qc29uKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgc2Nhbm5lZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICBvcmc6IGF1ZGl0T3JnLFxuICAgICAgICAgICAgcmVnaXN0cnlFbnRyaWVzOiBlbnRyaWVzLmxlbmd0aCxcbiAgICAgICAgICAgIHJlZ2lzdHJ5RW50cmllc090aGVyUmVnaW9uczogYWxsRW50cmllcy5sZW5ndGggLSBlbnRyaWVzLmxlbmd0aCAtIHdpdGhvdXRSZWdpb24sXG4gICAgICAgICAgICByZWdpc3RyeUVudHJpZXNXaXRob3V0UmVnaW9uOiB3aXRob3V0UmVnaW9uLFxuICAgICAgICAgICAgY2ZuU3RhY2tzOiBzdGFja3MubGVuZ3RoLFxuICAgICAgICAgICAgdHJ1bmNhdGVkLFxuICAgICAgICAgICAgZmluZGluZ3MsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdBdWRpdCBSZXN1bHRzJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdDb3VudHMnLCB7XG4gICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICByZWdpc3RyeUVudHJpZXM6IFN0cmluZyhlbnRyaWVzLmxlbmd0aCksXG4gICAgICAgICAgICByZWdpc3RyeUVudHJpZXNPdGhlclJlZ2lvbnM6IFN0cmluZyhhbGxFbnRyaWVzLmxlbmd0aCAtIGVudHJpZXMubGVuZ3RoIC0gd2l0aG91dFJlZ2lvbiksXG4gICAgICAgICAgICBjZm5TdGFja3M6IFN0cmluZyhzdGFja3MubGVuZ3RoKSxcbiAgICAgICAgICAgIGZpbmRpbmdzOiBTdHJpbmcoZmluZGluZ3MubGVuZ3RoKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoZmluZGluZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBwcmludFN1Y2Nlc3MoJ05vIGRyaWZ0IGJldHdlZW4gcGlwZWxpbmVfcmVnaXN0cnkgYW5kIENsb3VkRm9ybWF0aW9uJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZiBvZiBmaW5kaW5ncykge1xuICAgICAgICAgICAgICBpZiAoZi50eXBlID09PSAnb3JwaGFuZWQtc3RhY2snKSB7XG4gICAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBPUlBIQU5FRCAgJHtmLnN0YWNrTmFtZX0g4oCUICR7Zi5kZXRhaWx9YCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBNSVNTSU5HICAgJHtmLnN0YWNrTmFtZX0gKHBpcGVsaW5lICR7Zi5waXBlbGluZUlkID8/ICc/J30pIOKAlCAke2YuZGV0YWlsfWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAgICAgICAgZml4OiAke2YuZml4fWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJpbnRFcnJvcihgJHtmaW5kaW5ncy5sZW5ndGh9IGRyaWZ0IGZpbmRpbmcke2ZpbmRpbmdzLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnfSDigJQgZWFjaCBpcyBsaXN0ZWQgd2l0aCB0aGUgY29tbWFuZCB0aGF0IHJlY29uY2lsZXMgaXQuYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXBvcnRFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnYXVkaXQtc3RhY2tzJywgZXhlY3V0aW9uSWQgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGV4aXRDb2RlID0gMjtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZXhpdChleGl0Q29kZSk7XG4gICAgfSk7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-tokens.d.ts","sources":["../../src/commands/audit-tokens.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"audit-tokens.d.ts","sources":["../../src/commands/audit-tokens.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0IlD"}
|
|
@@ -6,7 +6,7 @@ import { Command } from 'commander';
|
|
|
6
6
|
import { resolveAwsRegion } from '../utils/aws-env.js';
|
|
7
7
|
import { getSecretValue, listSecrets } from '../utils/aws-secrets.js';
|
|
8
8
|
import { printCommandHeader, withProfileOption, withRegionOption } from '../utils/command-utils.js';
|
|
9
|
-
import { ERROR_CODES,
|
|
9
|
+
import { ERROR_CODES, reportError } from '../utils/error-handler.js';
|
|
10
10
|
import { printError, printInfo, printSection, printSuccess, printWarning } from '../utils/output-utils.js';
|
|
11
11
|
/**
|
|
12
12
|
* Registers the `audit-tokens` command with the CLI program.
|
|
@@ -152,13 +152,12 @@ export function auditTokens(program) {
|
|
|
152
152
|
process.exit(exitCode);
|
|
153
153
|
}
|
|
154
154
|
catch (error) {
|
|
155
|
-
|
|
155
|
+
reportError(error, ERROR_CODES.API_REQUEST, {
|
|
156
156
|
debug: program.opts().debug,
|
|
157
|
-
exit: false,
|
|
158
157
|
context: { command: 'audit-tokens', executionId },
|
|
159
158
|
});
|
|
160
159
|
process.exit(2);
|
|
161
160
|
}
|
|
162
161
|
});
|
|
163
162
|
}
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdG9rZW5zLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvYXVkaXQtdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVkzRzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQWdCO0lBQzFDLGlCQUFpQixDQUNmLGdCQUFnQixDQUFDLE9BQU87U0FDckIsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixXQUFXLENBQUMsb0ZBQW9GLENBQUMsQ0FBQyxDQUN0RztTQUNFLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSwrQ0FBK0MsRUFBRSxHQUFHLENBQUM7U0FDbEYsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHFDQUFxQyxFQUFFLEdBQUcsYUFBYSxDQUFDLG1CQUFtQixHQUFHLENBQUM7U0FDM0csTUFBTSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLENB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QUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2pGLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDN0MsQ0FBQztvQkFDRCxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcseUhBQXlILENBQUMsQ0FBQztnQkFDaE0sQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxLQUFLO2dCQUNYLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFO2FBQ2xELENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UsIGlzT3BhcXVlQXBpS2V5IH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgQ29yZUNvbnN0YW50cyB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyByZXNvbHZlQXdzUmVnaW9uIH0gZnJvbSAnLi4vdXRpbHMvYXdzLWVudi5qcyc7XG5pbXBvcnQgeyBnZXRTZWNyZXRWYWx1ZSwgbGlzdFNlY3JldHMgfSBmcm9tICcuLi91dGlscy9hd3Mtc2VjcmV0cy5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHdpdGhQcm9maWxlT3B0aW9uLCB3aXRoUmVnaW9uT3B0aW9uIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5cbmludGVyZmFjZSBUb2tlbkF1ZGl0RW50cnkge1xuICBzZWNyZXROYW1lOiBzdHJpbmc7XG4gIGFybjogc3RyaW5nO1xuICBleHBpcmVzQXQ6IERhdGU7XG4gIGRheXNVbnRpbEV4cGlyeTogbnVtYmVyO1xuICBzdGF0dXM6ICdleHBpcmVkJyB8ICdleHBpcmluZy1zb29uJyB8ICd1bnZlcmlmaWFibGUnIHwgJ29rJztcbiAgLyoqIFdoeSB0aGUgc3RvcmVkIHRva2VuIGZhaWxlZCB2ZXJpZmljYXRpb24sIHdoZW4gYHN0YXR1c2AgaXMgYHVudmVyaWZpYWJsZWAuICovXG4gIHJlYXNvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBhdWRpdC10b2tlbnNgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogU2NhbnMgQVdTIFNlY3JldHMgTWFuYWdlciBmb3Igc3RvcmVkIHBsYXRmb3JtIEpXVHMgKG1hdGNoaW5nIHRoZVxuICogYHBpcGVsaW5lLWJ1aWxkZXIvPG9yZ0lkPi9wbGF0Zm9ybWAgbmFtaW5nIGNvbnZlbnRpb24gdXNlZCBieSBgc3RvcmUtdG9rZW5gKVxuICogYW5kIHJlcG9ydHMgd2hpY2ggc2VjcmV0cyBhcmUgZXhwaXJlZCBvciBjbG9zZSB0byBleHBpcmluZy5cbiAqXG4gKiBEZXNpZ25lZCBmb3IgY3JvbiB1c2U6XG4gKiAgIC0gRXhpdHMgMCB3aGVuIG5vdGhpbmcgaXMgYXQtcmlzay5cbiAqICAgLSBFeGl0cyAxIHdoZW4gYXQgbGVhc3Qgb25lIHNlY3JldCBpcyBleHBpcmVkIG9yIGV4cGlyZXMgd2l0aGluIGAtLXdhcm4tZGF5c2AuXG4gKiAgIC0gRXhpdHMgMiBvbiBBV1MgZXJyb3JzIC8gc2NhbiBmYWlsdXJlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBhdWRpdCB0b2tlbnMgLS1yZWdpb24gdXMtZWFzdC0xIC0td2Fybi1kYXlzIDdcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXVkaXQgdG9rZW5zIC0tcmVnaW9uIHVzLWVhc3QtMSAtLWpzb25cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRUb2tlbnMocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICB3aXRoUHJvZmlsZU9wdGlvbihcbiAgICB3aXRoUmVnaW9uT3B0aW9uKHByb2dyYW1cbiAgICAgIC5jb21tYW5kKCd0b2tlbnMnKVxuICAgICAgLmRlc2NyaXB0aW9uKCdTY2FuIHN0b3JlZCBwbGF0Zm9ybSB0b2tlbnMgaW4gQVdTIFNlY3JldHMgTWFuYWdlciBhbmQgcmVwb3J0IHVwY29taW5nIGV4cGlyYXRpb25zJykpLFxuICApXG4gICAgLm9wdGlvbignLS13YXJuLWRheXMgPGRheXM+JywgJ0ZsYWcgdG9rZW5zIGV4cGlyaW5nIHdpdGhpbiBOIGRheXMgYXMgYXQtcmlzaycsICc3JylcbiAgICAub3B0aW9uKCctLXByZWZpeCA8cHJlZml4PicsICdTZWNyZXRzIE1hbmFnZXIgbmFtZSBwcmVmaXggdG8gc2NhbicsIGAke0NvcmVDb25zdGFudHMuU0VDUkVUU19QQVRIX1BSRUZJWH0vYClcbiAgICAub3B0aW9uKCctLWpzb24nLCAnT3V0cHV0IHJlc3VsdHMgYXMgSlNPTicsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdBdWRpdCBUb2tlbnMnLCB1bmRlZmluZWQsIHsgcXVpZXQ6IG9wdGlvbnMuanNvbiB9KTtcbiAgICAgIGNvbnN0IHJlZ2lvbiA9IHJlc29sdmVBd3NSZWdpb24ob3B0aW9ucy5yZWdpb24pO1xuICAgICAgY29uc3Qgd2FybkRheXMgPSBwYXJzZUludChvcHRpb25zLndhcm5EYXlzLCAxMCk7XG4gICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZSh3YXJuRGF5cykgfHwgd2FybkRheXMgPCAwKSB7XG4gICAgICAgIHByaW50RXJyb3IoJ0ludmFsaWQgLS13YXJuLWRheXMgdmFsdWUnLCB7IHByb3ZpZGVkOiBvcHRpb25zLndhcm5EYXlzIH0pO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMik7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFByb2dyZXNzIGdvZXMgdG8gc3Rkb3V0LCBzbyBzdXBwcmVzcyBpdCBpbiAtLWpzb24gbW9kZSB0byBrZWVwIHRoZSBKU09OIHBheWxvYWQgY2xlYW4gZm9yIHBpcGluZy5cbiAgICAgICAgaWYgKCFvcHRpb25zLmpzb24pIHByaW50SW5mbygnTGlzdGluZyBzZWNyZXRzJywgeyByZWdpb24sIHByZWZpeDogb3B0aW9ucy5wcmVmaXggfSk7XG4gICAgICAgIGNvbnN0IHsgc2VjcmV0cywgdHJ1bmNhdGVkIH0gPSBhd2FpdCBsaXN0U2VjcmV0cyhvcHRpb25zLnByZWZpeCwgeyByZWdpb24sIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSB9KTtcbiAgICAgICAgaWYgKHRydW5jYXRlZCkge1xuICAgICAgICAgIC8vIEEgdHJ1bmNhdGVkIHN3ZWVwIG1lYW5zIGFuIGV4cGlyaW5nIHRva2VuIHBhc3QgdGhlIGNhcCBjb3VsZCBiZSBtaXNzZWQg4oCUXG4gICAgICAgICAgLy8gbmV2ZXIgcmVwb3J0IFwiYWxsIGNsZWFyXCIgZnJvbSBhbiBpbmNvbXBsZXRlIHNjYW4gKG1pcnJvcnMgYXVkaXQtc3RhY2tzKS5cbiAgICAgICAgICBwcmludFdhcm5pbmcoJ1NlY3JldCBsaXN0aW5nIHdhcyBUUlVOQ0FURUQgKHBhZ2luZyBjYXAgaGl0KSDigJQgcmVzdWx0cyBtYXkgYmUgSU5DT01QTEVURSBhbmQgYW4gZXhwaXJpbmcgdG9rZW4gY291bGQgYmUgbWlzc2VkLiBOYXJyb3cgYnkgLS1wcmVmaXgvLS1yZWdpb24uJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBdWRpdCBldmVyeSBzdG9yZWQgbWFjaGluZSBjcmVkZW50aWFsOiB0aGUgZnVsbC1wcml2aWxlZ2UgcGxhdGZvcm0ga2V5XG4gICAgICAgIC8vIChgPHByZWZpeD4vPG9yZ0lkPi9wbGF0Zm9ybWApIGFuZCBlYWNoIFNDT1BFRCBvbmUgKGAuLi4vcmVwb3J0aW5nLWluZ2VzdGAsXG4gICAgICAgIC8vIGAuLi4vcmVnaXN0cnktcHVzaGAsIGZyb20gYHN0b3JlLXRva2VuIC0tc2NvcGUg4oCmYCkuIEFsbCBleHBpcmUgYW5kIGFsbFxuICAgICAgICAvLyBhcmUgYXV0by1yb3RhdGVkLCBzbyBhIHN0YWxsZWQgcm90YXRpb24gb24gYW55IG9mIHRoZW0gbXVzdCBzdXJmYWNlIGhlcmUuXG4gICAgICAgIGNvbnN0IENSRURFTlRJQUxfTEVBVkVTID0gWycvcGxhdGZvcm0nLCAnL3JlcG9ydGluZy1pbmdlc3QnLCAnL3JlZ2lzdHJ5LXB1c2gnXTtcbiAgICAgICAgY29uc3QgcGxhdGZvcm1TZWNyZXRzID0gc2VjcmV0cy5maWx0ZXIoKHMpID0+IENSRURFTlRJQUxfTEVBVkVTLnNvbWUoKGxlYWYpID0+IHMubmFtZS5lbmRzV2l0aChsZWFmKSkpO1xuXG4gICAgICAgIGNvbnN0IGVudHJpZXM6IFRva2VuQXVkaXRFbnRyeVtdID0gW107XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHdhcm5DdXRvZmYgPSBub3cgKyB3YXJuRGF5cyAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbiAgICAgICAgZm9yIChjb25zdCBzIG9mIHBsYXRmb3JtU2VjcmV0cykge1xuICAgICAgICAgIGxldCByYXc6IHN0cmluZztcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmF3ID0gYXdhaXQgZ2V0U2VjcmV0VmFsdWUocy5uYW1lLCB7IHJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBDb3VsZCBub3QgcmVhZCAke3MubmFtZX06ICR7ZXJyb3JNZXNzYWdlKGVycil9YCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgcGFyc2VkOiB7IHBhc3N3b3JkPzogc3RyaW5nOyBleHBpcmVzQXQ/OiBzdHJpbmc7IHBsYXRmb3JtVXJsPzogc3RyaW5nIH07XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZyhgU2VjcmV0ICR7cy5uYW1lfSBpcyBub3QgdmFsaWQgSlNPTiwgc2tpcHBpbmdgKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGBleHBpcmVzQXRgIGlzIHRoZSBPTkxZIGV4cGlyeSBzb3VyY2Ugbm93LiBUaGUgc3RvcmVkIGNyZWRlbnRpYWwgaXMgYW5cbiAgICAgICAgICAvLyBvcGFxdWUgc2VydmljZS1hY2NvdW50IGtleTogaXQgY2FycmllcyBubyBjbGFpbXMsIHNvIHRoZXJlIGlzIG5vIGBleHBgXG4gICAgICAgICAgLy8gdG8gZGVjb2RlIGFzIGEgZmFsbGJhY2sg4oCUIHdoaWNoIGlzIGV4YWN0bHkgd2h5IHN0b3JlLXRva2VuIGFuZCB0aGVcbiAgICAgICAgICAvLyByb3RhdG9yIGJvdGggd3JpdGUgdGhlIGZpZWxkLlxuICAgICAgICAgIGxldCBleHBpcmVzQXQ6IERhdGUgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHBhcnNlZC5leHBpcmVzQXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShwYXJzZWQuZXhwaXJlc0F0KTtcbiAgICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKGQuZ2V0VGltZSgpKSkgZXhwaXJlc0F0ID0gZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFleHBpcmVzQXQpIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZyhgU2VjcmV0ICR7cy5uYW1lfSBoYXMgbm8gZXhwaXJ5IGluZm9ybWF0aW9uLCBza2lwcGluZ2ApO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGF5c1VudGlsRXhwaXJ5ID0gTWF0aC5mbG9vcigoZXhwaXJlc0F0LmdldFRpbWUoKSAtIG5vdykgLyAoMjQgKiA2MCAqIDYwICogMTAwMCkpO1xuICAgICAgICAgIGxldCBzdGF0dXM6IFRva2VuQXVkaXRFbnRyeVsnc3RhdHVzJ10gPVxuICAgICAgICAgICAgZXhwaXJlc0F0LmdldFRpbWUoKSA8IG5vdyA/ICdleHBpcmVkJ1xuICAgICAgICAgICAgICA6IGV4cGlyZXNBdC5nZXRUaW1lKCkgPCB3YXJuQ3V0b2ZmID8gJ2V4cGlyaW5nLXNvb24nXG4gICAgICAgICAgICAgICAgOiAnb2snO1xuXG4gICAgICAgICAgLy8gQSBzZWNyZXQgdGhhdCBzdGlsbCBoYXMgbW9udGhzIG9mIGxpZmUgYnV0IGhvbGRzIHRoZSBXUk9ORyBLSU5EIG9mXG4gICAgICAgICAgLy8gY3JlZGVudGlhbCBpcyBqdXN0IGFzIGRlYWQgYXMgYW4gZXhwaXJlZCBvbmUuIEFmdGVyIHRoZSBzZXJ2aWNlLWFjY291bnRcbiAgICAgICAgICAvLyBjdXRvdmVyIHRoZSBzdG9yZWQgdmFsdWUgbXVzdCBiZSBhbiBvcGFxdWUgYHBiX3NhX+KApmAga2V5OyBhIHNlY3JldCBsZWZ0XG4gICAgICAgICAgLy8gaG9sZGluZyBhIHByZS1jdXRvdmVyIG1hY2hpbmUtc2Vzc2lvbiBKV1QgaXMgcmVmdXNlZCBieSBldmVyeSBjb25zdW1lcixcbiAgICAgICAgICAvLyBhbmQgdGhpcyBpcyB0aGUgc2NhbiB0aGF0IG5hbWVzIGl0IGluc3RlYWQgb2YgbGVhdmluZyB0aHJlZSBzZXJ2aWNlcyB0b1xuICAgICAgICAgIC8vIGZhaWwgd2l0aCBhbiBvcGFxdWUgNDAxLlxuICAgICAgICAgIGxldCByZWFzb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnZXhwaXJlZCcgJiYgcGFyc2VkLnBhc3N3b3JkICYmICFpc09wYXF1ZUFwaUtleShwYXJzZWQucGFzc3dvcmQpKSB7XG4gICAgICAgICAgICBzdGF0dXMgPSAndW52ZXJpZmlhYmxlJztcbiAgICAgICAgICAgIHJlYXNvbiA9IHBhcnNlZC5wYXNzd29yZC5zcGxpdCgnLicpLmxlbmd0aCA9PT0gM1xuICAgICAgICAgICAgICA/ICdob2xkcyBhIHByZS1jdXRvdmVyIEpXVCwgbm90IGEgc2VydmljZS1hY2NvdW50IGtleSDigJQgcmUtcnVuIFwicGlwZWxpbmUtbWFuYWdlciBpbmZyYSBzdG9yZS10b2tlblwiJ1xuICAgICAgICAgICAgICA6ICdkb2VzIG5vdCBob2xkIGFuIG9wYXF1ZSBzZXJ2aWNlLWFjY291bnQga2V5IChleHBlY3RlZCBhIFwicGJfc2Ff4oCmXCIgdmFsdWUpJztcbiAgICAgICAgICB9XG4gICAgICAgICAgZW50cmllcy5wdXNoKHsgc2VjcmV0TmFtZTogcy5uYW1lLCBhcm46IHMuYXJuLCBleHBpcmVzQXQsIGRheXNVbnRpbEV4cGlyeSwgc3RhdHVzLCAuLi4ocmVhc29uID8geyByZWFzb24gfSA6IHt9KSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGF0UmlzayA9IGVudHJpZXMuZmlsdGVyKChlKSA9PiBlLnN0YXR1cyAhPT0gJ29rJyk7XG4gICAgICAgIC8vIEEgdHJ1bmNhdGVkIHNjYW4gaXMgaXRzZWxmIGEgZmFpbHVyZSBjb25kaXRpb246IGV4aXQgbm9uLXplcm8gc28gY3JvblxuICAgICAgICAvLyBkb2Vzbid0IHJlYWQgYW4gaW5jb21wbGV0ZSBcImFsbCBjbGVhclwiIGFzIHN1Y2Nlc3MuXG4gICAgICAgIGNvbnN0IGV4aXRDb2RlID0gKGF0Umlzay5sZW5ndGggPiAwIHx8IHRydW5jYXRlZCkgPyAxIDogMDtcblxuICAgICAgICBpZiAob3B0aW9ucy5qc29uKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgc2Nhbm5lZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICB3YXJuRGF5cyxcbiAgICAgICAgICAgIHRvdGFsU2Nhbm5lZDogZW50cmllcy5sZW5ndGgsXG4gICAgICAgICAgICBhdFJpc2tDb3VudDogYXRSaXNrLmxlbmd0aCxcbiAgICAgICAgICAgIHRydW5jYXRlZCxcbiAgICAgICAgICAgIGVudHJpZXM6IGVudHJpZXMubWFwKChlKSA9PiAoeyAuLi5lLCBleHBpcmVzQXQ6IGUuZXhwaXJlc0F0LnRvSVNPU3RyaW5nKCkgfSkpLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgfSwgbnVsbCwgMikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByaW50U2VjdGlvbignQXVkaXQgUmVzdWx0cycpO1xuICAgICAgICAgIHByaW50SW5mbyhgU2Nhbm5lZCAke2VudHJpZXMubGVuZ3RofSBwbGF0Zm9ybSBzZWNyZXQke2VudHJpZXMubGVuZ3RoID09PSAxID8gJycgOiAncyd9YCk7XG4gICAgICAgICAgaWYgKGF0Umlzay5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGlmICh0cnVuY2F0ZWQpIHtcbiAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKCdObyBhdC1yaXNrIHRva2VucyBpbiB0aGUgc2Nhbm5lZCBwYWdlcywgYnV0IHRoZSBzY2FuIHdhcyB0cnVuY2F0ZWQg4oCUIHNvbWUgc2VjcmV0cyB3ZXJlIG5vdCBjaGVja2VkLicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcHJpbnRTdWNjZXNzKGBBbGwgc3RvcmVkIGtleXMgdmFsaWQgZm9yIGF0IGxlYXN0ICR7d2FybkRheXN9IGRheXNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIGF0Umlzaykge1xuICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGUuc3RhdHVzID09PSAnZXhwaXJlZCdcbiAgICAgICAgICAgICAgICA/IGBFWFBJUkVEICR7TWF0aC5hYnMoZS5kYXlzVW50aWxFeHBpcnkpfSBkYXkke2UuZGF5c1VudGlsRXhwaXJ5ID09PSAtMSA/ICcnIDogJ3MnfSBhZ29gXG4gICAgICAgICAgICAgICAgOiBlLnN0YXR1cyA9PT0gJ3VudmVyaWZpYWJsZSdcbiAgICAgICAgICAgICAgICAgID8gYFVOVVNBQkxFIOKAlCAke2UucmVhc29ufWBcbiAgICAgICAgICAgICAgICAgIDogYGV4cGlyZXMgaW4gJHtlLmRheXNVbnRpbEV4cGlyeX0gZGF5JHtlLmRheXNVbnRpbEV4cGlyeSA9PT0gMSA/ICcnIDogJ3MnfWA7XG4gICAgICAgICAgICAgIHByaW50V2FybmluZyhgJHtlLnNlY3JldE5hbWV9IOKAlCAke2xhYmVsfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJpbnRFcnJvcihgJHthdFJpc2subGVuZ3RofSBzZWNyZXQke2F0Umlzay5sZW5ndGggPT09IDEgPyAnJyA6ICdzJ30gbmVlZCByb3RhdGlvbi4gUnVuIFxcYHBpcGVsaW5lLW1hbmFnZXIgaW5mcmEgc3RvcmUtdG9rZW4gLS1kYXlzIDxOPlxcYCAoYWRkIC0tc2NvcGUgZm9yIGEgc2NvcGVkIGNyZWRlbnRpYWwpIHRvIHJlaXNzdWUuYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3MuZXhpdChleGl0Q29kZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogZmFsc2UsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnYXVkaXQtdG9rZW5zJywgZXhlY3V0aW9uSWQgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdG9rZW5zLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvYXVkaXQtdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVkzRzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQWdCO0lBQzFDLGlCQUFpQixDQUNmLGdCQUFnQixDQUFDLE9BQU87U0FDckIsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixXQUFXLENBQUMsb0ZBQW9GLENBQUMsQ0FBQyxDQUN0RztTQUNFLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSwrQ0FBK0MsRUFBRSxHQUFHLENBQUM7U0FDbEYsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHFDQUFxQyxFQUFFLEdBQUcsYUFBYSxDQUFDLG1CQUFtQixHQUFHLENBQUM7U0FDM0csTUFBTSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLENB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QUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2pGLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDN0MsQ0FBQztvQkFDRCxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcseUhBQXlILENBQUMsQ0FBQztnQkFDaE0sQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFO2FBQ2xELENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UsIGlzT3BhcXVlQXBpS2V5IH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgQ29yZUNvbnN0YW50cyB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyByZXNvbHZlQXdzUmVnaW9uIH0gZnJvbSAnLi4vdXRpbHMvYXdzLWVudi5qcyc7XG5pbXBvcnQgeyBnZXRTZWNyZXRWYWx1ZSwgbGlzdFNlY3JldHMgfSBmcm9tICcuLi91dGlscy9hd3Mtc2VjcmV0cy5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHdpdGhQcm9maWxlT3B0aW9uLCB3aXRoUmVnaW9uT3B0aW9uIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgcmVwb3J0RXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5cbmludGVyZmFjZSBUb2tlbkF1ZGl0RW50cnkge1xuICBzZWNyZXROYW1lOiBzdHJpbmc7XG4gIGFybjogc3RyaW5nO1xuICBleHBpcmVzQXQ6IERhdGU7XG4gIGRheXNVbnRpbEV4cGlyeTogbnVtYmVyO1xuICBzdGF0dXM6ICdleHBpcmVkJyB8ICdleHBpcmluZy1zb29uJyB8ICd1bnZlcmlmaWFibGUnIHwgJ29rJztcbiAgLyoqIFdoeSB0aGUgc3RvcmVkIHRva2VuIGZhaWxlZCB2ZXJpZmljYXRpb24sIHdoZW4gYHN0YXR1c2AgaXMgYHVudmVyaWZpYWJsZWAuICovXG4gIHJlYXNvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBhdWRpdC10b2tlbnNgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogU2NhbnMgQVdTIFNlY3JldHMgTWFuYWdlciBmb3Igc3RvcmVkIHBsYXRmb3JtIEpXVHMgKG1hdGNoaW5nIHRoZVxuICogYHBpcGVsaW5lLWJ1aWxkZXIvPG9yZ0lkPi9wbGF0Zm9ybWAgbmFtaW5nIGNvbnZlbnRpb24gdXNlZCBieSBgc3RvcmUtdG9rZW5gKVxuICogYW5kIHJlcG9ydHMgd2hpY2ggc2VjcmV0cyBhcmUgZXhwaXJlZCBvciBjbG9zZSB0byBleHBpcmluZy5cbiAqXG4gKiBEZXNpZ25lZCBmb3IgY3JvbiB1c2U6XG4gKiAgIC0gRXhpdHMgMCB3aGVuIG5vdGhpbmcgaXMgYXQtcmlzay5cbiAqICAgLSBFeGl0cyAxIHdoZW4gYXQgbGVhc3Qgb25lIHNlY3JldCBpcyBleHBpcmVkIG9yIGV4cGlyZXMgd2l0aGluIGAtLXdhcm4tZGF5c2AuXG4gKiAgIC0gRXhpdHMgMiBvbiBBV1MgZXJyb3JzIC8gc2NhbiBmYWlsdXJlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBhdWRpdCB0b2tlbnMgLS1yZWdpb24gdXMtZWFzdC0xIC0td2Fybi1kYXlzIDdcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXVkaXQgdG9rZW5zIC0tcmVnaW9uIHVzLWVhc3QtMSAtLWpzb25cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRUb2tlbnMocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICB3aXRoUHJvZmlsZU9wdGlvbihcbiAgICB3aXRoUmVnaW9uT3B0aW9uKHByb2dyYW1cbiAgICAgIC5jb21tYW5kKCd0b2tlbnMnKVxuICAgICAgLmRlc2NyaXB0aW9uKCdTY2FuIHN0b3JlZCBwbGF0Zm9ybSB0b2tlbnMgaW4gQVdTIFNlY3JldHMgTWFuYWdlciBhbmQgcmVwb3J0IHVwY29taW5nIGV4cGlyYXRpb25zJykpLFxuICApXG4gICAgLm9wdGlvbignLS13YXJuLWRheXMgPGRheXM+JywgJ0ZsYWcgdG9rZW5zIGV4cGlyaW5nIHdpdGhpbiBOIGRheXMgYXMgYXQtcmlzaycsICc3JylcbiAgICAub3B0aW9uKCctLXByZWZpeCA8cHJlZml4PicsICdTZWNyZXRzIE1hbmFnZXIgbmFtZSBwcmVmaXggdG8gc2NhbicsIGAke0NvcmVDb25zdGFudHMuU0VDUkVUU19QQVRIX1BSRUZJWH0vYClcbiAgICAub3B0aW9uKCctLWpzb24nLCAnT3V0cHV0IHJlc3VsdHMgYXMgSlNPTicsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdBdWRpdCBUb2tlbnMnLCB1bmRlZmluZWQsIHsgcXVpZXQ6IG9wdGlvbnMuanNvbiB9KTtcbiAgICAgIGNvbnN0IHJlZ2lvbiA9IHJlc29sdmVBd3NSZWdpb24ob3B0aW9ucy5yZWdpb24pO1xuICAgICAgY29uc3Qgd2FybkRheXMgPSBwYXJzZUludChvcHRpb25zLndhcm5EYXlzLCAxMCk7XG4gICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZSh3YXJuRGF5cykgfHwgd2FybkRheXMgPCAwKSB7XG4gICAgICAgIHByaW50RXJyb3IoJ0ludmFsaWQgLS13YXJuLWRheXMgdmFsdWUnLCB7IHByb3ZpZGVkOiBvcHRpb25zLndhcm5EYXlzIH0pO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMik7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFByb2dyZXNzIGdvZXMgdG8gc3Rkb3V0LCBzbyBzdXBwcmVzcyBpdCBpbiAtLWpzb24gbW9kZSB0byBrZWVwIHRoZSBKU09OIHBheWxvYWQgY2xlYW4gZm9yIHBpcGluZy5cbiAgICAgICAgaWYgKCFvcHRpb25zLmpzb24pIHByaW50SW5mbygnTGlzdGluZyBzZWNyZXRzJywgeyByZWdpb24sIHByZWZpeDogb3B0aW9ucy5wcmVmaXggfSk7XG4gICAgICAgIGNvbnN0IHsgc2VjcmV0cywgdHJ1bmNhdGVkIH0gPSBhd2FpdCBsaXN0U2VjcmV0cyhvcHRpb25zLnByZWZpeCwgeyByZWdpb24sIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSB9KTtcbiAgICAgICAgaWYgKHRydW5jYXRlZCkge1xuICAgICAgICAgIC8vIEEgdHJ1bmNhdGVkIHN3ZWVwIG1lYW5zIGFuIGV4cGlyaW5nIHRva2VuIHBhc3QgdGhlIGNhcCBjb3VsZCBiZSBtaXNzZWQg4oCUXG4gICAgICAgICAgLy8gbmV2ZXIgcmVwb3J0IFwiYWxsIGNsZWFyXCIgZnJvbSBhbiBpbmNvbXBsZXRlIHNjYW4gKG1pcnJvcnMgYXVkaXQtc3RhY2tzKS5cbiAgICAgICAgICBwcmludFdhcm5pbmcoJ1NlY3JldCBsaXN0aW5nIHdhcyBUUlVOQ0FURUQgKHBhZ2luZyBjYXAgaGl0KSDigJQgcmVzdWx0cyBtYXkgYmUgSU5DT01QTEVURSBhbmQgYW4gZXhwaXJpbmcgdG9rZW4gY291bGQgYmUgbWlzc2VkLiBOYXJyb3cgYnkgLS1wcmVmaXgvLS1yZWdpb24uJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBdWRpdCBldmVyeSBzdG9yZWQgbWFjaGluZSBjcmVkZW50aWFsOiB0aGUgZnVsbC1wcml2aWxlZ2UgcGxhdGZvcm0ga2V5XG4gICAgICAgIC8vIChgPHByZWZpeD4vPG9yZ0lkPi9wbGF0Zm9ybWApIGFuZCBlYWNoIFNDT1BFRCBvbmUgKGAuLi4vcmVwb3J0aW5nLWluZ2VzdGAsXG4gICAgICAgIC8vIGAuLi4vcmVnaXN0cnktcHVzaGAsIGZyb20gYHN0b3JlLXRva2VuIC0tc2NvcGUg4oCmYCkuIEFsbCBleHBpcmUgYW5kIGFsbFxuICAgICAgICAvLyBhcmUgYXV0by1yb3RhdGVkLCBzbyBhIHN0YWxsZWQgcm90YXRpb24gb24gYW55IG9mIHRoZW0gbXVzdCBzdXJmYWNlIGhlcmUuXG4gICAgICAgIGNvbnN0IENSRURFTlRJQUxfTEVBVkVTID0gWycvcGxhdGZvcm0nLCAnL3JlcG9ydGluZy1pbmdlc3QnLCAnL3JlZ2lzdHJ5LXB1c2gnXTtcbiAgICAgICAgY29uc3QgcGxhdGZvcm1TZWNyZXRzID0gc2VjcmV0cy5maWx0ZXIoKHMpID0+IENSRURFTlRJQUxfTEVBVkVTLnNvbWUoKGxlYWYpID0+IHMubmFtZS5lbmRzV2l0aChsZWFmKSkpO1xuXG4gICAgICAgIGNvbnN0IGVudHJpZXM6IFRva2VuQXVkaXRFbnRyeVtdID0gW107XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHdhcm5DdXRvZmYgPSBub3cgKyB3YXJuRGF5cyAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbiAgICAgICAgZm9yIChjb25zdCBzIG9mIHBsYXRmb3JtU2VjcmV0cykge1xuICAgICAgICAgIGxldCByYXc6IHN0cmluZztcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmF3ID0gYXdhaXQgZ2V0U2VjcmV0VmFsdWUocy5uYW1lLCB7IHJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBDb3VsZCBub3QgcmVhZCAke3MubmFtZX06ICR7ZXJyb3JNZXNzYWdlKGVycil9YCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgcGFyc2VkOiB7IHBhc3N3b3JkPzogc3RyaW5nOyBleHBpcmVzQXQ/OiBzdHJpbmc7IHBsYXRmb3JtVXJsPzogc3RyaW5nIH07XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZyhgU2VjcmV0ICR7cy5uYW1lfSBpcyBub3QgdmFsaWQgSlNPTiwgc2tpcHBpbmdgKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGBleHBpcmVzQXRgIGlzIHRoZSBPTkxZIGV4cGlyeSBzb3VyY2Ugbm93LiBUaGUgc3RvcmVkIGNyZWRlbnRpYWwgaXMgYW5cbiAgICAgICAgICAvLyBvcGFxdWUgc2VydmljZS1hY2NvdW50IGtleTogaXQgY2FycmllcyBubyBjbGFpbXMsIHNvIHRoZXJlIGlzIG5vIGBleHBgXG4gICAgICAgICAgLy8gdG8gZGVjb2RlIGFzIGEgZmFsbGJhY2sg4oCUIHdoaWNoIGlzIGV4YWN0bHkgd2h5IHN0b3JlLXRva2VuIGFuZCB0aGVcbiAgICAgICAgICAvLyByb3RhdG9yIGJvdGggd3JpdGUgdGhlIGZpZWxkLlxuICAgICAgICAgIGxldCBleHBpcmVzQXQ6IERhdGUgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHBhcnNlZC5leHBpcmVzQXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShwYXJzZWQuZXhwaXJlc0F0KTtcbiAgICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKGQuZ2V0VGltZSgpKSkgZXhwaXJlc0F0ID0gZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFleHBpcmVzQXQpIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZyhgU2VjcmV0ICR7cy5uYW1lfSBoYXMgbm8gZXhwaXJ5IGluZm9ybWF0aW9uLCBza2lwcGluZ2ApO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGF5c1VudGlsRXhwaXJ5ID0gTWF0aC5mbG9vcigoZXhwaXJlc0F0LmdldFRpbWUoKSAtIG5vdykgLyAoMjQgKiA2MCAqIDYwICogMTAwMCkpO1xuICAgICAgICAgIGxldCBzdGF0dXM6IFRva2VuQXVkaXRFbnRyeVsnc3RhdHVzJ10gPVxuICAgICAgICAgICAgZXhwaXJlc0F0LmdldFRpbWUoKSA8IG5vdyA/ICdleHBpcmVkJ1xuICAgICAgICAgICAgICA6IGV4cGlyZXNBdC5nZXRUaW1lKCkgPCB3YXJuQ3V0b2ZmID8gJ2V4cGlyaW5nLXNvb24nXG4gICAgICAgICAgICAgICAgOiAnb2snO1xuXG4gICAgICAgICAgLy8gQSBzZWNyZXQgdGhhdCBzdGlsbCBoYXMgbW9udGhzIG9mIGxpZmUgYnV0IGhvbGRzIHRoZSBXUk9ORyBLSU5EIG9mXG4gICAgICAgICAgLy8gY3JlZGVudGlhbCBpcyBqdXN0IGFzIGRlYWQgYXMgYW4gZXhwaXJlZCBvbmUuIEFmdGVyIHRoZSBzZXJ2aWNlLWFjY291bnRcbiAgICAgICAgICAvLyBjdXRvdmVyIHRoZSBzdG9yZWQgdmFsdWUgbXVzdCBiZSBhbiBvcGFxdWUgYHBiX3NhX+KApmAga2V5OyBhIHNlY3JldCBsZWZ0XG4gICAgICAgICAgLy8gaG9sZGluZyBhIHByZS1jdXRvdmVyIG1hY2hpbmUtc2Vzc2lvbiBKV1QgaXMgcmVmdXNlZCBieSBldmVyeSBjb25zdW1lcixcbiAgICAgICAgICAvLyBhbmQgdGhpcyBpcyB0aGUgc2NhbiB0aGF0IG5hbWVzIGl0IGluc3RlYWQgb2YgbGVhdmluZyB0aHJlZSBzZXJ2aWNlcyB0b1xuICAgICAgICAgIC8vIGZhaWwgd2l0aCBhbiBvcGFxdWUgNDAxLlxuICAgICAgICAgIGxldCByZWFzb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnZXhwaXJlZCcgJiYgcGFyc2VkLnBhc3N3b3JkICYmICFpc09wYXF1ZUFwaUtleShwYXJzZWQucGFzc3dvcmQpKSB7XG4gICAgICAgICAgICBzdGF0dXMgPSAndW52ZXJpZmlhYmxlJztcbiAgICAgICAgICAgIHJlYXNvbiA9IHBhcnNlZC5wYXNzd29yZC5zcGxpdCgnLicpLmxlbmd0aCA9PT0gM1xuICAgICAgICAgICAgICA/ICdob2xkcyBhIHByZS1jdXRvdmVyIEpXVCwgbm90IGEgc2VydmljZS1hY2NvdW50IGtleSDigJQgcmUtcnVuIFwicGlwZWxpbmUtbWFuYWdlciBpbmZyYSBzdG9yZS10b2tlblwiJ1xuICAgICAgICAgICAgICA6ICdkb2VzIG5vdCBob2xkIGFuIG9wYXF1ZSBzZXJ2aWNlLWFjY291bnQga2V5IChleHBlY3RlZCBhIFwicGJfc2Ff4oCmXCIgdmFsdWUpJztcbiAgICAgICAgICB9XG4gICAgICAgICAgZW50cmllcy5wdXNoKHsgc2VjcmV0TmFtZTogcy5uYW1lLCBhcm46IHMuYXJuLCBleHBpcmVzQXQsIGRheXNVbnRpbEV4cGlyeSwgc3RhdHVzLCAuLi4ocmVhc29uID8geyByZWFzb24gfSA6IHt9KSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGF0UmlzayA9IGVudHJpZXMuZmlsdGVyKChlKSA9PiBlLnN0YXR1cyAhPT0gJ29rJyk7XG4gICAgICAgIC8vIEEgdHJ1bmNhdGVkIHNjYW4gaXMgaXRzZWxmIGEgZmFpbHVyZSBjb25kaXRpb246IGV4aXQgbm9uLXplcm8gc28gY3JvblxuICAgICAgICAvLyBkb2Vzbid0IHJlYWQgYW4gaW5jb21wbGV0ZSBcImFsbCBjbGVhclwiIGFzIHN1Y2Nlc3MuXG4gICAgICAgIGNvbnN0IGV4aXRDb2RlID0gKGF0Umlzay5sZW5ndGggPiAwIHx8IHRydW5jYXRlZCkgPyAxIDogMDtcblxuICAgICAgICBpZiAob3B0aW9ucy5qc29uKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgc2Nhbm5lZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICB3YXJuRGF5cyxcbiAgICAgICAgICAgIHRvdGFsU2Nhbm5lZDogZW50cmllcy5sZW5ndGgsXG4gICAgICAgICAgICBhdFJpc2tDb3VudDogYXRSaXNrLmxlbmd0aCxcbiAgICAgICAgICAgIHRydW5jYXRlZCxcbiAgICAgICAgICAgIGVudHJpZXM6IGVudHJpZXMubWFwKChlKSA9PiAoeyAuLi5lLCBleHBpcmVzQXQ6IGUuZXhwaXJlc0F0LnRvSVNPU3RyaW5nKCkgfSkpLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgfSwgbnVsbCwgMikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByaW50U2VjdGlvbignQXVkaXQgUmVzdWx0cycpO1xuICAgICAgICAgIHByaW50SW5mbyhgU2Nhbm5lZCAke2VudHJpZXMubGVuZ3RofSBwbGF0Zm9ybSBzZWNyZXQke2VudHJpZXMubGVuZ3RoID09PSAxID8gJycgOiAncyd9YCk7XG4gICAgICAgICAgaWYgKGF0Umlzay5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGlmICh0cnVuY2F0ZWQpIHtcbiAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKCdObyBhdC1yaXNrIHRva2VucyBpbiB0aGUgc2Nhbm5lZCBwYWdlcywgYnV0IHRoZSBzY2FuIHdhcyB0cnVuY2F0ZWQg4oCUIHNvbWUgc2VjcmV0cyB3ZXJlIG5vdCBjaGVja2VkLicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcHJpbnRTdWNjZXNzKGBBbGwgc3RvcmVkIGtleXMgdmFsaWQgZm9yIGF0IGxlYXN0ICR7d2FybkRheXN9IGRheXNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIGF0Umlzaykge1xuICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGUuc3RhdHVzID09PSAnZXhwaXJlZCdcbiAgICAgICAgICAgICAgICA/IGBFWFBJUkVEICR7TWF0aC5hYnMoZS5kYXlzVW50aWxFeHBpcnkpfSBkYXkke2UuZGF5c1VudGlsRXhwaXJ5ID09PSAtMSA/ICcnIDogJ3MnfSBhZ29gXG4gICAgICAgICAgICAgICAgOiBlLnN0YXR1cyA9PT0gJ3VudmVyaWZpYWJsZSdcbiAgICAgICAgICAgICAgICAgID8gYFVOVVNBQkxFIOKAlCAke2UucmVhc29ufWBcbiAgICAgICAgICAgICAgICAgIDogYGV4cGlyZXMgaW4gJHtlLmRheXNVbnRpbEV4cGlyeX0gZGF5JHtlLmRheXNVbnRpbEV4cGlyeSA9PT0gMSA/ICcnIDogJ3MnfWA7XG4gICAgICAgICAgICAgIHByaW50V2FybmluZyhgJHtlLnNlY3JldE5hbWV9IOKAlCAke2xhYmVsfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJpbnRFcnJvcihgJHthdFJpc2subGVuZ3RofSBzZWNyZXQke2F0Umlzay5sZW5ndGggPT09IDEgPyAnJyA6ICdzJ30gbmVlZCByb3RhdGlvbi4gUnVuIFxcYHBpcGVsaW5lLW1hbmFnZXIgaW5mcmEgc3RvcmUtdG9rZW4gLS1kYXlzIDxOPlxcYCAoYWRkIC0tc2NvcGUgZm9yIGEgc2NvcGVkIGNyZWRlbnRpYWwpIHRvIHJlaXNzdWUuYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3MuZXhpdChleGl0Q29kZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXBvcnRFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnYXVkaXQtdG9rZW5zJywgZXhlY3V0aW9uSWQgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pat.d.ts","sources":["../../src/commands/create-pat.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"create-pat.d.ts","sources":["../../src/commands/create-pat.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmJhD"}
|