@pipeline-builder/pipeline-core 3.4.68 → 3.4.70
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 -33
- package/lib/config/app-config.d.ts +1 -1
- package/lib/config/app-config.js +20 -25
- package/lib/config/billing-config.d.ts +1 -1
- package/lib/config/billing-config.js +2 -5
- package/lib/config/config-types.d.ts +1 -1
- package/lib/config/config-types.js +2 -3
- package/lib/config/infrastructure-config.d.ts +1 -1
- package/lib/config/infrastructure-config.js +25 -38
- package/lib/config/server-config.d.ts +1 -1
- package/lib/config/server-config.js +12 -19
- package/lib/core/artifact-manager.js +3 -6
- package/lib/core/id-generator.js +4 -8
- package/lib/core/metadata-builder.d.ts +4 -4
- package/lib/core/metadata-builder.js +32 -44
- package/lib/core/network-types.d.ts +2 -2
- package/lib/core/network-types.js +2 -3
- package/lib/core/network.d.ts +3 -3
- package/lib/core/network.js +18 -20
- package/lib/core/pipeline-helpers.d.ts +3 -3
- package/lib/core/pipeline-helpers.js +73 -79
- package/lib/core/pipeline-types.d.ts +2 -2
- package/lib/core/pipeline-types.js +5 -11
- package/lib/core/role-types.js +2 -3
- package/lib/core/role.d.ts +3 -3
- package/lib/core/role.js +24 -25
- package/lib/core/security-group-types.js +2 -3
- package/lib/core/security-group.d.ts +3 -3
- package/lib/core/security-group.js +8 -9
- package/lib/handlers/plugin-lookup-handler.d.ts +1 -1
- package/lib/handlers/plugin-lookup-handler.js +18 -56
- package/lib/index.d.ts +17 -17
- package/lib/index.js +28 -71
- package/lib/pipeline/pipeline-builder.d.ts +5 -5
- package/lib/pipeline/pipeline-builder.js +73 -110
- package/lib/pipeline/pipeline-configuration.d.ts +5 -5
- package/lib/pipeline/pipeline-configuration.js +15 -19
- package/lib/pipeline/plugin-lookup.d.ts +3 -3
- package/lib/pipeline/plugin-lookup.js +32 -31
- package/lib/pipeline/source-builder.d.ts +2 -2
- package/lib/pipeline/source-builder.js +27 -29
- package/lib/pipeline/source-types.d.ts +1 -1
- package/lib/pipeline/source-types.js +2 -3
- package/lib/pipeline/stage-builder.d.ts +5 -5
- package/lib/pipeline/stage-builder.js +9 -9
- package/lib/pipeline/step-types.d.ts +4 -4
- package/lib/pipeline/step-types.js +2 -3
- package/lib/template/cache.d.ts +1 -1
- package/lib/template/cache.js +5 -9
- package/lib/template/evaluator.d.ts +1 -1
- package/lib/template/evaluator.js +11 -16
- package/lib/template/index.d.ts +9 -9
- package/lib/template/index.js +31 -56
- package/lib/template/metrics.js +6 -10
- package/lib/template/plugin-resolver.js +5 -9
- package/lib/template/tokenizer.js +13 -19
- package/lib/template/topo-sort.js +2 -5
- package/lib/template/validate.d.ts +1 -1
- package/lib/template/validate.js +20 -25
- package/lib/template/walker.d.ts +1 -1
- package/lib/template/walker.js +6 -10
- package/package.json +20 -14
|
@@ -1,18 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
exports.buildConfigFromMetadata = buildConfigFromMetadata;
|
|
6
|
-
exports.metadataForCodePipeline = metadataForCodePipeline;
|
|
7
|
-
exports.metadataForCodeBuildStep = metadataForCodeBuildStep;
|
|
8
|
-
exports.metadataForShellStep = metadataForShellStep;
|
|
9
|
-
exports.metadataForBuildEnvironment = metadataForBuildEnvironment;
|
|
10
|
-
exports.asInt = asInt;
|
|
11
|
-
exports.networkConfigFromMetadata = networkConfigFromMetadata;
|
|
12
|
-
exports.roleConfigFromMetadata = roleConfigFromMetadata;
|
|
13
|
-
exports.securityGroupConfigFromMetadata = securityGroupConfigFromMetadata;
|
|
14
|
-
exports.parsePipelineVariables = parsePipelineVariables;
|
|
15
|
-
const pipeline_types_1 = require("./pipeline-types");
|
|
3
|
+
import { CDK_METADATA_PREFIX, MetadataKeys } from './pipeline-types.js';
|
|
16
4
|
/**
|
|
17
5
|
* Type-safe namespace constants for metadata configuration.
|
|
18
6
|
*/
|
|
@@ -42,7 +30,7 @@ const NAMESPACE_KEY_MAP = {
|
|
|
42
30
|
};
|
|
43
31
|
const EMPTY_KEY_CONFIG = { booleanKeys: [], passthroughKeys: [] };
|
|
44
32
|
function getCustomKey(prefix, key) {
|
|
45
|
-
return `${
|
|
33
|
+
return `${CDK_METADATA_PREFIX}${prefix}:${key}`.toLowerCase();
|
|
46
34
|
}
|
|
47
35
|
function isTrue(value) {
|
|
48
36
|
if (typeof value === 'boolean')
|
|
@@ -52,7 +40,7 @@ function isTrue(value) {
|
|
|
52
40
|
return false;
|
|
53
41
|
}
|
|
54
42
|
/** Extract CDK construct config from metadata for a given namespace. */
|
|
55
|
-
function buildConfigFromMetadata(metadata, namespace) {
|
|
43
|
+
export function buildConfigFromMetadata(metadata, namespace) {
|
|
56
44
|
const { booleanKeys, passthroughKeys } = NAMESPACE_KEY_MAP[namespace] ?? EMPTY_KEY_CONFIG;
|
|
57
45
|
const result = {};
|
|
58
46
|
for (const key of booleanKeys) {
|
|
@@ -68,19 +56,19 @@ function buildConfigFromMetadata(metadata, namespace) {
|
|
|
68
56
|
return result;
|
|
69
57
|
}
|
|
70
58
|
/** Extract CodePipeline config from metadata. */
|
|
71
|
-
function metadataForCodePipeline(metadata) {
|
|
59
|
+
export function metadataForCodePipeline(metadata) {
|
|
72
60
|
return buildConfigFromMetadata(metadata, NAMESPACE.CODE_PIPELINE);
|
|
73
61
|
}
|
|
74
62
|
/** Extract CodeBuildStep config from metadata. */
|
|
75
|
-
function metadataForCodeBuildStep(metadata) {
|
|
63
|
+
export function metadataForCodeBuildStep(metadata) {
|
|
76
64
|
return buildConfigFromMetadata(metadata, NAMESPACE.CODE_BUILD_STEP);
|
|
77
65
|
}
|
|
78
66
|
/** Extract ShellStep config from metadata. */
|
|
79
|
-
function metadataForShellStep(metadata) {
|
|
67
|
+
export function metadataForShellStep(metadata) {
|
|
80
68
|
return buildConfigFromMetadata(metadata, NAMESPACE.SHELL_STEP);
|
|
81
69
|
}
|
|
82
70
|
/** Extract BuildEnvironment config from metadata. */
|
|
83
|
-
function metadataForBuildEnvironment(metadata) {
|
|
71
|
+
export function metadataForBuildEnvironment(metadata) {
|
|
84
72
|
return buildConfigFromMetadata(metadata, NAMESPACE.BUILD_ENVIRONMENT);
|
|
85
73
|
}
|
|
86
74
|
// ---------------------------------------------------------------------------
|
|
@@ -125,7 +113,7 @@ function asBool(v) {
|
|
|
125
113
|
return v === undefined ? undefined : isTrue(v);
|
|
126
114
|
}
|
|
127
115
|
/** Coerce a metadata value to a positive integer; undefined if absent/invalid. */
|
|
128
|
-
function asInt(v) {
|
|
116
|
+
export function asInt(v) {
|
|
129
117
|
if (v === undefined || v === null || v === '')
|
|
130
118
|
return undefined;
|
|
131
119
|
const n = typeof v === 'number' ? v : Number(String(v).trim());
|
|
@@ -136,17 +124,17 @@ function asInt(v) {
|
|
|
136
124
|
* from NETWORK_TYPE, or is inferred (subnetIds -> subnetIds, tags -> vpcLookup,
|
|
137
125
|
* vpcId -> vpcId). Returns undefined when no usable network metadata is present.
|
|
138
126
|
*/
|
|
139
|
-
function networkConfigFromMetadata(metadata) {
|
|
140
|
-
const type = asStr(metadata[
|
|
141
|
-
const vpcId = asStr(metadata[
|
|
142
|
-
const subnetIds = asList(metadata[
|
|
143
|
-
const subnetType = asStr(metadata[
|
|
144
|
-
const availabilityZones = asList(metadata[
|
|
145
|
-
const subnetGroupName = asStr(metadata[
|
|
146
|
-
const securityGroupIds = asList(metadata[
|
|
147
|
-
const tags = asTags(metadata[
|
|
148
|
-
const vpcName = asStr(metadata[
|
|
149
|
-
const region = asStr(metadata[
|
|
127
|
+
export function networkConfigFromMetadata(metadata) {
|
|
128
|
+
const type = asStr(metadata[MetadataKeys.NETWORK_TYPE]);
|
|
129
|
+
const vpcId = asStr(metadata[MetadataKeys.NETWORK_VPC_ID]);
|
|
130
|
+
const subnetIds = asList(metadata[MetadataKeys.NETWORK_SUBNET_IDS]);
|
|
131
|
+
const subnetType = asStr(metadata[MetadataKeys.NETWORK_SUBNET_TYPE]);
|
|
132
|
+
const availabilityZones = asList(metadata[MetadataKeys.NETWORK_AVAILABILITY_ZONES]);
|
|
133
|
+
const subnetGroupName = asStr(metadata[MetadataKeys.NETWORK_SUBNET_GROUP_NAME]);
|
|
134
|
+
const securityGroupIds = asList(metadata[MetadataKeys.NETWORK_SECURITY_GROUP_IDS]);
|
|
135
|
+
const tags = asTags(metadata[MetadataKeys.NETWORK_TAGS]);
|
|
136
|
+
const vpcName = asStr(metadata[MetadataKeys.NETWORK_VPC_NAME]);
|
|
137
|
+
const region = asStr(metadata[MetadataKeys.NETWORK_REGION]);
|
|
150
138
|
const variant = type ?? (subnetIds ? 'subnetIds' : tags ? 'vpcLookup' : vpcId ? 'vpcId' : undefined);
|
|
151
139
|
switch (variant) {
|
|
152
140
|
case 'subnetIds':
|
|
@@ -190,11 +178,11 @@ function networkConfigFromMetadata(metadata) {
|
|
|
190
178
|
* codeBuildDefault). The 4 keys can't express the full `oidc` option set, so an
|
|
191
179
|
* `oidc` type from metadata is ignored. Returns undefined when no keys are set.
|
|
192
180
|
*/
|
|
193
|
-
function roleConfigFromMetadata(metadata) {
|
|
194
|
-
const type = asStr(metadata[
|
|
195
|
-
const roleArn = asStr(metadata[
|
|
196
|
-
const roleName = asStr(metadata[
|
|
197
|
-
const mutable = asBool(metadata[
|
|
181
|
+
export function roleConfigFromMetadata(metadata) {
|
|
182
|
+
const type = asStr(metadata[MetadataKeys.ROLE_TYPE]);
|
|
183
|
+
const roleArn = asStr(metadata[MetadataKeys.ROLE_ARN]);
|
|
184
|
+
const roleName = asStr(metadata[MetadataKeys.ROLE_NAME]);
|
|
185
|
+
const mutable = asBool(metadata[MetadataKeys.ROLE_MUTABLE]);
|
|
198
186
|
const variant = type ?? (roleArn ? 'roleArn' : roleName ? 'roleName' : undefined);
|
|
199
187
|
switch (variant) {
|
|
200
188
|
case 'roleArn':
|
|
@@ -215,12 +203,12 @@ function roleConfigFromMetadata(metadata) {
|
|
|
215
203
|
* Build a SecurityGroupConfig from `ec2:securitygroup` metadata keys
|
|
216
204
|
* (securityGroupIds / securityGroupLookup). Returns undefined when no keys set.
|
|
217
205
|
*/
|
|
218
|
-
function securityGroupConfigFromMetadata(metadata) {
|
|
219
|
-
const type = asStr(metadata[
|
|
220
|
-
const ids = asList(metadata[
|
|
221
|
-
const mutable = asBool(metadata[
|
|
222
|
-
const name = asStr(metadata[
|
|
223
|
-
const vpcId = asStr(metadata[
|
|
206
|
+
export function securityGroupConfigFromMetadata(metadata) {
|
|
207
|
+
const type = asStr(metadata[MetadataKeys.SECURITY_GROUP_TYPE]);
|
|
208
|
+
const ids = asList(metadata[MetadataKeys.SECURITY_GROUP_IDS]);
|
|
209
|
+
const mutable = asBool(metadata[MetadataKeys.SECURITY_GROUP_MUTABLE]);
|
|
210
|
+
const name = asStr(metadata[MetadataKeys.SECURITY_GROUP_NAME]);
|
|
211
|
+
const vpcId = asStr(metadata[MetadataKeys.SECURITY_GROUP_VPC_ID]);
|
|
224
212
|
const variant = type ?? (ids ? 'securityGroupIds' : name ? 'securityGroupLookup' : undefined);
|
|
225
213
|
switch (variant) {
|
|
226
214
|
case 'securityGroupIds':
|
|
@@ -241,7 +229,7 @@ function securityGroupConfigFromMetadata(metadata) {
|
|
|
241
229
|
* or a compact comma-separated `name=default` list (`ENV=prod,REGION=us-east-1`).
|
|
242
230
|
* Entries without a usable name are skipped; returns [] when nothing valid.
|
|
243
231
|
*/
|
|
244
|
-
function parsePipelineVariables(value) {
|
|
232
|
+
export function parsePipelineVariables(value) {
|
|
245
233
|
if (value === undefined || value === null || value === '')
|
|
246
234
|
return [];
|
|
247
235
|
// Already an array (JSON-typed metadata) or a JSON-encoded string.
|
|
@@ -287,4 +275,4 @@ function parsePipelineVariables(value) {
|
|
|
287
275
|
}
|
|
288
276
|
return [];
|
|
289
277
|
}
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL21ldGFkYXRhLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBMER0QywwREFvQkM7QUFHRCwwREFFQztBQUdELDREQUVDO0FBR0Qsb0RBRUM7QUFHRCxrRUFFQztBQTRDRCxzQkFJQztBQU9ELDhEQStDQztBQU9ELHdEQW9CQztBQU1ELDBFQW1CQztBQWVELHdEQXdDQztBQTlTRCxxREFBcUU7QUFLckU7O0dBRUc7QUFDSCxNQUFNLFNBQVMsR0FBRztJQUNoQixVQUFVLEVBQUUscUJBQXFCO0lBQ2pDLGVBQWUsRUFBRSx5QkFBeUI7SUFDMUMsaUJBQWlCLEVBQUUsNEJBQTRCO0lBQy9DLGFBQWEsRUFBRSx3QkFBd0I7Q0FDL0IsQ0FBQztBQVFYLE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3RCLFdBQVcsRUFBRSxFQUFFO1FBQ2YsZUFBZSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLENBQUM7S0FDcEk7SUFDRCxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUMzQixXQUFXLEVBQUUsRUFBRTtRQUNmLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxDQUFDO0tBQy9SO0lBQ0QsQ0FBQyxTQUFTLENBQUMsaUJB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ZixDQUFDO0lBRUQscUNBQXFDO0lBQ3JDLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQTJCLEVBQUUsQ0FBQztRQUN6QyxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLElBQUk7Z0JBQUUsU0FBUztZQUNwQixNQUFNLFlBQVksR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IEJ1aWxkRW52aXJvbm1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB0eXBlIHsgQ29kZUJ1aWxkU3RlcFByb3BzLCBDb2RlUGlwZWxpbmVQcm9wcywgU2hlbGxTdGVwUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYi9waXBlbGluZXMnO1xuaW1wb3J0IHR5cGUgeyBOZXR3b3JrQ29uZmlnLCBTdWJuZXRUeXBlTmFtZSB9IGZyb20gJy4vbmV0d29yay10eXBlcyc7XG5pbXBvcnQgeyBDREtfTUVUQURBVEFfUFJFRklYLCBNZXRhZGF0YUtleXMgfSBmcm9tICcuL3BpcGVsaW5lLXR5cGVzJztcbmltcG9ydCB0eXBlIHsgTWV0YURhdGFUeXBlIH0gZnJvbSAnLi9waXBlbGluZS10eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFJvbGVDb25maWcgfSBmcm9tICcuL3JvbGUtdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBTZWN1cml0eUdyb3VwQ29uZmlnIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC10eXBlcyc7XG5cbi8qKlxuICogVHlwZS1zYWZlIG5hbWVzcGFjZSBjb25zdGFudHMgZm9yIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmNvbnN0IE5BTUVTUEFDRSA9IHtcbiAgU0hFTExfU1RFUDogJ3BpcGVsaW5lczpzaGVsbHN0ZXAnLFxuICBDT0RFX0JVSUxEX1NURVA6ICdwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcCcsXG4gIEJVSUxEX0VOVklST05NRU5UOiAnY29kZWJ1aWxkOmJ1aWxkZW52aXJvbm1lbnQnLFxuICBDT0RFX1BJUEVMSU5FOiAncGlwZWxpbmVzOmNvZGVwaXBlbGluZScsXG59IGFzIGNvbnN0O1xudHlwZSBOYW1lc3BhY2UgPSAodHlwZW9mIE5BTUVTUEFDRSlba2V5b2YgdHlwZW9mIE5BTUVTUEFDRV07XG5cbmludGVyZmFjZSBOYW1lc3BhY2VLZXlDb25maWcge1xuICBib29sZWFuS2V5czogcmVhZG9ubHkgc3RyaW5nW107XG4gIHBhc3N0aHJvdWdoS2V5czogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbmNvbnN0IE5BTUVTUEFDRV9LRVlfTUFQOiBSZWNvcmQ8TmFtZXNwYWNlLCBOYW1lc3BhY2VLZXlDb25maWc+ID0ge1xuICBbTkFNRVNQQUNFLlNIRUxMX1NURVBdOiB7XG4gICAgYm9vbGVhbktleXM6IFtdLFxuICAgIHBhc3N0aHJvdWdoS2V5czogWydhZGRpdGlvbmFsSW5wdXRzJywgJ2NvbW1hbmRzJywgJ2VudicsICdlbnZGcm9tQ2ZuT3V0cHV0cycsICdpbnB1dCcsICdpbnN0YWxsQ29tbWFuZHMnLCAncHJpbWFyeU91dHB1dERpcmVjdG9yeSddLFxuICB9LFxuICBbTkFNRVNQQUNFLkNPREVfQlVJTERfU1RFUF06IHtcbiAgICBib29sZWFuS2V5czogW10sXG4gICAgcGFzc3Rocm91Z2hLZXlzOiBbJ2FjdGlvblJvbGUnLCAnYWRkaXRpb25hbElucHV0cycsICdidWlsZEVudmlyb25tZW50JywgJ2NhY2hlJywgJ2NvbW1hbmRzJywgJ2VudicsICdlbnZGcm9tQ2ZuT3V0cHV0cycsICdmaWxlU3lzdGVtTG9jYXRpb25zJywgJ2lucHV0JywgJ2luc3RhbGxDb21tYW5kcycsICdsb2dnaW5nJywgJ3BhcnRpYWxCdWlsZFNwZWMnLCAncHJpbWFyeU91dHB1dERpcmVjdG9yeScsICdwcm9qZWN0TmFtZScsICdyb2xlJywgJ3JvbGVQb2xpY3lTdGF0ZW1lbnRzJywgJ3RpbWVvdXQnXSxcbiAgfSxcbiAgW05BTUVTUEFDRS5CVUlMRF9FTlZJUk9OTUVOVF06IHtcbiAgICBib29sZWFuS2V5czogWydwcml2aWxlZ2VkJ10sXG4gICAgcGFzc3Rocm91Z2hLZXlzOiBbJ2J1aWxkSW1hZ2UnLCAnY2VydGlmaWNhdGUnLCAnY29tcHV0ZVR5cGUnLCAnZG9ja2VyU2VydmVyJywgJ2Vudmlyb25tZW50VmFyaWFibGVzJywgJ2ZsZWV0J10sXG4gIH0sXG4gIFtOQU1FU1BBQ0UuQ09ERV9QSVBFTElORV06IHtcbiAgICBib29sZWFuS2V5czogWydjcm9zc0FjY291bnRLZXlzJywgJ2RvY2tlckVuYWJsZWRGb3JTZWxmTXV0YXRpb24nLCAnZG9ja2VyRW5hYmxlZEZvclN5bnRoJywgJ2VuYWJsZUtleVJvdGF0aW9uJywgJ3B1Ymxpc2hBc3NldHNJblBhcmFsbGVsJywgJ3JldXNlQ3Jvc3NSZWdpb25TdXBwb3J0U3RhY2tzJywgJ3NlbGZNdXRhdGlvbicsICd1c2VDaGFuZ2VTZXRzJywgJ3VzZVBpcGVsaW5lUm9sZUZvckFjdGlvbnMnXSxcbiAgICBwYXNzdGhyb3VnaEtleXM6IFsnYXJ0aWZhY3RCdWNrZXQnLCAnYXNzZXRQdWJsaXNoaW5nQ29kZUJ1aWxkRGVmYXVsdHMnLCAnY2RrQXNzZXRzQ2xpVmVyc2lvbicsICdjbGlWZXJzaW9uJywgJ2NvZGVCdWlsZERlZmF1bHRzJywgJ2NvZGVQaXBlbGluZScsICdjcm9zc1JlZ2lvblJlcGxpY2F0aW9uQnVja2V0cycsICdkb2NrZXJDcmVkZW50aWFscycsICdwaXBlbGluZU5hbWUnLCAncGlwZWxpbmVUeXBlJywgJ3JvbGUnLCAnc2VsZk11dGF0aW9uQ29kZUJ1aWxkRGVmYXVsdHMnLCAnc3ludGgnLCAnc3ludGhDb2RlQnVpbGREZWZhdWx0cyddLFxuICB9LFxufTtcblxuY29uc3QgRU1QVFlfS0VZX0NPTkZJRzogTmFtZXNwYWNlS2V5Q29uZmlnID0geyBib29sZWFuS2V5czogW10sIHBhc3N0aHJvdWdoS2V5czogW10gfTtcblxuZnVuY3Rpb24gZ2V0Q3VzdG9tS2V5KHByZWZpeDogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtDREtfTUVUQURBVEFfUFJFRklYfSR7cHJlZml4fToke2tleX1gLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIGlzVHJ1ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIEV4dHJhY3QgQ0RLIGNvbnN0cnVjdCBjb25maWcgZnJvbSBtZXRhZGF0YSBmb3IgYSBnaXZlbiBuYW1lc3BhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEoXG4gIG1ldGFkYXRhOiBNZXRhRGF0YVR5cGUsXG4gIG5hbWVzcGFjZTogc3RyaW5nLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCB7IGJvb2xlYW5LZXlzLCBwYXNzdGhyb3VnaEtleXMgfSA9XG4gICAgTkFNRVNQQUNFX0tFWV9NQVBbbmFtZXNwYWNlIGFzIE5hbWVzcGFjZV0gPz8gRU1QVFlfS0VZX0NPTkZJRztcblxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgYm9vbGVhbktleXMpIHtcbiAgICBjb25zdCByYXcgPSBtZXRhZGF0YVtnZXRDdXN0b21LZXkobmFtZXNwYWNlLCBrZXkpXTtcbiAgICBpZiAocmF3ICE9PSB1bmRlZmluZWQpIHJlc3VsdFtrZXldID0gaXNUcnVlKHJhdyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBvZiBwYXNzdGhyb3VnaEtleXMpIHtcbiAgICBjb25zdCByYXcgPSBtZXRhZGF0YVtnZXRDdXN0b21LZXkobmFtZXNwYWNlLCBrZXkpXTtcbiAgICBpZiAocmF3ICE9PSB1bmRlZmluZWQpIHJlc3VsdFtrZXldID0gcmF3O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqIEV4dHJhY3QgQ29kZVBpcGVsaW5lIGNvbmZpZyBmcm9tIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGFkYXRhRm9yQ29kZVBpcGVsaW5lKG1ldGFkYXRhOiBNZXRhRGF0YVR5cGUpOiBQYXJ0aWFsPENvZGVQaXBlbGluZVByb3BzPiB7XG4gIHJldHVybiBidWlsZENvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YSwgTkFNRVNQQUNFLkNPREVfUElQRUxJTkUpIGFzIFBhcnRpYWw8Q29kZVBpcGVsaW5lUHJvcHM+O1xufVxuXG4vKiogRXh0cmFjdCBDb2RlQnVpbGRTdGVwIGNvbmZpZyBmcm9tIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGFkYXRhRm9yQ29kZUJ1aWxkU3RlcChtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogUGFydGlhbDxDb2RlQnVpbGRTdGVwUHJvcHM+IHtcbiAgcmV0dXJuIGJ1aWxkQ29uZmlnRnJvbU1ldGFkYXRhKG1ldGFkYXRhLCBOQU1FU1BBQ0UuQ09ERV9CVUlMRF9TVEVQKSBhcyBQYXJ0aWFsPENvZGVCdWlsZFN0ZXBQcm9wcz47XG59XG5cbi8qKiBFeHRyYWN0IFNoZWxsU3RlcCBjb25maWcgZnJvbSBtZXRhZGF0YS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRhZGF0YUZvclNoZWxsU3RlcChtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogUGFydGlhbDxTaGVsbFN0ZXBQcm9wcz4ge1xuICByZXR1cm4gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGEsIE5BTUVTUEFDRS5TSEVMTF9TVEVQKSBhcyBQYXJ0aWFsPFNoZWxsU3RlcFByb3BzPjtcbn1cblxuLyoqIEV4dHJhY3QgQnVpbGRFbnZpcm9ubWVudCBjb25maWcgZnJvbSBtZXRhZGF0YS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnQobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFBhcnRpYWw8QnVpbGRFbnZpcm9ubWVudD4ge1xuICByZXR1cm4gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGEsIE5BTUVTUEFDRS5CVUlMRF9FTlZJUk9OTUVOVCkgYXMgUGFydGlhbDxCdWlsZEVudmlyb25tZW50Pjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUeXBlZC1jb25maWcgZXh0cmFjdG9yczogZWMyOm5ldHdvcmsgLyBpYW06cm9sZSAvIGVjMjpzZWN1cml0eWdyb3VwIG1ldGFkYXRhXG4vLyAtPiB0aGUgZGlzY3JpbWluYXRlZC11bmlvbiBjb25maWcgb2JqZWN0cyB0aGUgYnVpbGRlciBhbHJlYWR5IGNvbnN1bWVzXG4vLyAoTmV0d29ya0NvbmZpZyAvIFJvbGVDb25maWcgLyBTZWN1cml0eUdyb3VwQ29uZmlnKS4gVW5saWtlIHRoZSBuYW1lc3BhY2VzXG4vLyBhYm92ZSAod2hpY2ggbWFwIDE6MSB0byBDREsgY29uc3RydWN0IHByb3BzKSwgdGhlc2UgZmVlZCByZXNvbHZlTmV0d29yayAvXG4vLyByZXNvbHZlUm9sZSAvIHJlc29sdmVTZWN1cml0eUdyb3VwLiBFYWNoIHJldHVybnMgdW5kZWZpbmVkIHdoZW4gaXRzIGtleXMgYXJlXG4vLyBhYnNlbnQsIHNvIGNhbGxlcnMgZmFsbCB0aHJvdWdoIHdpdGggYHByb3AgPz8gbWV0YWRhdGEgPz8gZW52YCBwcmVjZWRlbmNlLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGFzU3RyKHY6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpICE9PSAnJyA/IHYgOiB1bmRlZmluZWQ7XG59XG5cbi8qKiBBY2NlcHQgYSBKU09OIGFycmF5IG9yIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyAtPiBzdHJpbmdbXSAodW5kZWZpbmVkIGlmIGVtcHR5KS4gKi9cbmZ1bmN0aW9uIGFzTGlzdCh2OiB1bmtub3duKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICBjb25zdCBpdGVtcyA9IEFycmF5LmlzQXJyYXkodilcbiAgICA/IHYubWFwKFN0cmluZykubWFwKHMgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKVxuICAgIDogdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpICE9PSAnJ1xuICAgICAgPyB2LnNwbGl0KCcsJykubWFwKHMgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKVxuICAgICAgOiBbXTtcbiAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDAgPyBpdGVtcyA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIEFjY2VwdCBhIEpTT04gb2JqZWN0IG9yIGEgSlNPTiBzdHJpbmcgLT4gUmVjb3JkPHN0cmluZyxzdHJpbmc+ICh1bmRlZmluZWQgaWYgZW1wdHkpLiAqL1xuZnVuY3Rpb24gYXNUYWdzKHY6IHVua25vd24pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgbGV0IG9iajogdW5rbm93biA9IHY7XG4gIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgdi50cmltKCkgIT09ICcnKSB7XG4gICAgdHJ5IHsgb2JqID0gSlNPTi5wYXJzZSh2KTsgfSBjYXRjaCB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgfVxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMob2JqIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5tYXAoKFtrLCB2YWxdKSA9PiBbaywgU3RyaW5nKHZhbCldIGFzIGNvbnN0KTtcbiAgICByZXR1cm4gZW50cmllcy5sZW5ndGggPiAwID8gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpIDogdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiB1bmRlZmluZWQgd2hlbiB0aGUga2V5IGlzIGFic2VudDsgb3RoZXJ3aXNlIGEgY29lcmNlZCBib29sZWFuLiAqL1xuZnVuY3Rpb24gYXNCb29sKHY6IHVua25vd24pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHYgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGlzVHJ1ZSh2KTtcbn1cblxuLyoqIENvZXJjZSBhIG1ldGFkYXRhIHZhbHVlIHRvIGEgcG9zaXRpdmUgaW50ZWdlcjsgdW5kZWZpbmVkIGlmIGFic2VudC9pbnZhbGlkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzSW50KHY6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwgfHwgdiA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IG4gPSB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogTnVtYmVyKFN0cmluZyh2KS50cmltKCkpO1xuICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihuKSAmJiBuID4gMCA/IG4gOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQnVpbGQgYSBOZXR3b3JrQ29uZmlnIGZyb20gYGVjMjpuZXR3b3JrYCBtZXRhZGF0YSBrZXlzLiBUaGUgdmFyaWFudCBjb21lc1xuICogZnJvbSBORVRXT1JLX1RZUEUsIG9yIGlzIGluZmVycmVkIChzdWJuZXRJZHMgLT4gc3VibmV0SWRzLCB0YWdzIC0+IHZwY0xvb2t1cCxcbiAqIHZwY0lkIC0+IHZwY0lkKS4gUmV0dXJucyB1bmRlZmluZWQgd2hlbiBubyB1c2FibGUgbmV0d29yayBtZXRhZGF0YSBpcyBwcmVzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV0d29ya0NvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogTmV0d29ya0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19UWVBFXSk7XG4gIGNvbnN0IHZwY0lkID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLk5FVFdPUktfVlBDX0lEXSk7XG4gIGNvbnN0IHN1Ym5ldElkcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TVUJORVRfSURTXSk7XG4gIGNvbnN0IHN1Ym5ldFR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TVUJORVRfVFlQRV0pIGFzIFN1Ym5ldFR5cGVOYW1lIHwgdW5kZWZpbmVkO1xuICBjb25zdCBhdmFpbGFiaWxpdHlab25lcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19BVkFJTEFCSUxJVFlfWk9ORVNdKTtcbiAgY29uc3Qgc3VibmV0R3JvdXBOYW1lID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLk5FVFdPUktfU1VCTkVUX0dST1VQX05BTUVdKTtcbiAgY29uc3Qgc2VjdXJpdHlHcm91cElkcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TRUNVUklUWV9HUk9VUF9JRFNdKTtcbiAgY29uc3QgdGFncyA9IGFzVGFncyhtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19UQUdTXSk7XG4gIGNvbnN0IHZwY05hbWUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19WUENfTkFNRV0pO1xuICBjb25zdCByZWdpb24gPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19SRUdJT05dKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAoc3VibmV0SWRzID8gJ3N1Ym5ldElkcycgOiB0YWdzID8gJ3ZwY0xvb2t1cCcgOiB2cGNJZCA/ICd2cGNJZCcgOiB1bmRlZmluZWQpO1xuXG4gIHN3aXRjaCAodmFyaWFudCkge1xuICAgIGNhc2UgJ3N1Ym5ldElkcyc6XG4gICAgICBpZiAoIXZwY0lkIHx8ICFzdWJuZXRJZHMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAnc3VibmV0SWRzJywgb3B0aW9uczogeyB2cGNJZCwgc3VibmV0SWRzLCAuLi4oc2VjdXJpdHlHcm91cElkcyAmJiB7IHNlY3VyaXR5R3JvdXBJZHMgfSkgfSB9O1xuICAgIGNhc2UgJ3ZwY0lkJzpcbiAgICAgIGlmICghdnBjSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAndnBjSWQnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgdnBjSWQsXG4gICAgICAgICAgLi4uKHN1Ym5ldFR5cGUgJiYgeyBzdWJuZXRUeXBlIH0pLFxuICAgICAgICAgIC4uLihhdmFpbGFiaWxpdHlab25lcyAmJiB7IGF2YWlsYWJpbGl0eVpvbmVzIH0pLFxuICAgICAgICAgIC4uLihzdWJuZXRHcm91cE5hbWUgJiYgeyBzdWJuZXRHcm91cE5hbWUgfSksXG4gICAgICAgICAgLi4uKHNlY3VyaXR5R3JvdXBJZHMgJiYgeyBzZWN1cml0eUdyb3VwSWRzIH0pLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlICd2cGNMb29rdXAnOlxuICAgICAgaWYgKCF0YWdzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZwY0xvb2t1cCcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB0YWdzLFxuICAgICAgICAgIC4uLihzdWJuZXRUeXBlICYmIHsgc3VibmV0VHlwZSB9KSxcbiAgICAgICAgICAuLi4oYXZhaWxhYmlsaXR5Wm9uZXMgJiYgeyBhdmFpbGFiaWxpdHlab25lcyB9KSxcbiAgICAgICAgICAuLi4oc3VibmV0R3JvdXBOYW1lICYmIHsgc3VibmV0R3JvdXBOYW1lIH0pLFxuICAgICAgICAgIC4uLihzZWN1cml0eUdyb3VwSWRzICYmIHsgc2VjdXJpdHlHcm91cElkcyB9KSxcbiAgICAgICAgICAuLi4odnBjTmFtZSAmJiB7IHZwY05hbWUgfSksXG4gICAgICAgICAgLi4uKHJlZ2lvbiAmJiB7IHJlZ2lvbiB9KSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCBhIFJvbGVDb25maWcgZnJvbSBgaWFtOnJvbGVgIG1ldGFkYXRhIGtleXMgKHJvbGVBcm4gLyByb2xlTmFtZSAvXG4gKiBjb2RlQnVpbGREZWZhdWx0KS4gVGhlIDQga2V5cyBjYW4ndCBleHByZXNzIHRoZSBmdWxsIGBvaWRjYCBvcHRpb24gc2V0LCBzbyBhblxuICogYG9pZGNgIHR5cGUgZnJvbSBtZXRhZGF0YSBpcyBpZ25vcmVkLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIG5vIGtleXMgYXJlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvbGVDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFJvbGVDb25maWcgfCB1bmRlZmluZWQge1xuICBjb25zdCB0eXBlID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfVFlQRV0pO1xuICBjb25zdCByb2xlQXJuID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfQVJOXSk7XG4gIGNvbnN0IHJvbGVOYW1lID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfTkFNRV0pO1xuICBjb25zdCBtdXRhYmxlID0gYXNCb29sKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5ST0xFX01VVEFCTEVdKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAocm9sZUFybiA/ICdyb2xlQXJuJyA6IHJvbGVOYW1lID8gJ3JvbGVOYW1lJyA6IHVuZGVmaW5lZCk7XG5cbiAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgY2FzZSAncm9sZUFybic6XG4gICAgICBpZiAoIXJvbGVBcm4pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAncm9sZUFybicsIG9wdGlvbnM6IHsgcm9sZUFybiwgLi4uKG11dGFibGUgIT09IHVuZGVmaW5lZCAmJiB7IG11dGFibGUgfSkgfSB9O1xuICAgIGNhc2UgJ3JvbGVOYW1lJzpcbiAgICAgIGlmICghcm9sZU5hbWUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAncm9sZU5hbWUnLCBvcHRpb25zOiB7IHJvbGVOYW1lLCAuLi4obXV0YWJsZSAhPT0gdW5kZWZpbmVkICYmIHsgbXV0YWJsZSB9KSB9IH07XG4gICAgY2FzZSAnY29kZUJ1aWxkRGVmYXVsdCc6XG4gICAgICByZXR1cm4geyB0eXBlOiAnY29kZUJ1aWxkRGVmYXVsdCcsIG9wdGlvbnM6IHsgLi4uKHJvbGVOYW1lICYmIHsgcm9sZU5hbWUgfSkgfSB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQnVpbGQgYSBTZWN1cml0eUdyb3VwQ29uZmlnIGZyb20gYGVjMjpzZWN1cml0eWdyb3VwYCBtZXRhZGF0YSBrZXlzXG4gKiAoc2VjdXJpdHlHcm91cElkcyAvIHNlY3VyaXR5R3JvdXBMb29rdXApLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIG5vIGtleXMgc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlHcm91cENvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogU2VjdXJpdHlHcm91cENvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuU0VDVVJJVFlfR1JPVVBfVFlQRV0pO1xuICBjb25zdCBpZHMgPSBhc0xpc3QobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlNFQ1VSSVRZX0dST1VQX0lEU10pO1xuICBjb25zdCBtdXRhYmxlID0gYXNCb29sKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5TRUNVUklUWV9HUk9VUF9NVVRBQkxFXSk7XG4gIGNvbnN0IG5hbWUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuU0VDVVJJVFlfR1JPVVBfTkFNRV0pO1xuICBjb25zdCB2cGNJZCA9IGFzU3RyKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5TRUNVUklUWV9HUk9VUF9WUENfSURdKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAoaWRzID8gJ3NlY3VyaXR5R3JvdXBJZHMnIDogbmFtZSA/ICdzZWN1cml0eUdyb3VwTG9va3VwJyA6IHVuZGVmaW5lZCk7XG5cbiAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgY2FzZSAnc2VjdXJpdHlHcm91cElkcyc6XG4gICAgICBpZiAoIWlkcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdzZWN1cml0eUdyb3VwSWRzJywgb3B0aW9uczogeyBzZWN1cml0eUdyb3VwSWRzOiBpZHMsIC4uLihtdXRhYmxlICE9PSB1bmRlZmluZWQgJiYgeyBtdXRhYmxlIH0pIH0gfTtcbiAgICBjYXNlICdzZWN1cml0eUdyb3VwTG9va3VwJzpcbiAgICAgIGlmICghbmFtZSB8fCAhdnBjSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAnc2VjdXJpdHlHcm91cExvb2t1cCcsIG9wdGlvbnM6IHsgc2VjdXJpdHlHcm91cE5hbWU6IG5hbWUsIHZwY0lkIH0gfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKiogQSBDb2RlUGlwZWxpbmUgVjIgcGlwZWxpbmUtbGV2ZWwgdmFyaWFibGUgcGFyc2VkIGZyb20gYG9wZXJhdGlvbnMudmFyaWFibGVzYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVWYXJpYWJsZVNwZWMge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2UgYG9wZXJhdGlvbnMudmFyaWFibGVzYCBtZXRhZGF0YSBpbnRvIENvZGVQaXBlbGluZSBWMiB2YXJpYWJsZSBzcGVjcy5cbiAqIEFjY2VwdHMgYSBKU09OIGFycmF5IChgW3tcIm5hbWVcIjpcIkVOVlwiLFwiZGVmYXVsdFwiOlwicHJvZFwiLFwiZGVzY3JpcHRpb25cIjpcIi4uLlwifV1gKVxuICogb3IgYSBjb21wYWN0IGNvbW1hLXNlcGFyYXRlZCBgbmFtZT1kZWZhdWx0YCBsaXN0IChgRU5WPXByb2QsUkVHSU9OPXVzLWVhc3QtMWApLlxuICogRW50cmllcyB3aXRob3V0IGEgdXNhYmxlIG5hbWUgYXJlIHNraXBwZWQ7IHJldHVybnMgW10gd2hlbiBub3RoaW5nIHZhbGlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQaXBlbGluZVZhcmlhYmxlcyh2YWx1ZTogdW5rbm93bik6IFBpcGVsaW5lVmFyaWFibGVTcGVjW10ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiBbXTtcblxuICAvLyBBbHJlYWR5IGFuIGFycmF5IChKU09OLXR5cGVkIG1ldGFkYXRhKSBvciBhIEpTT04tZW5jb2RlZCBzdHJpbmcuXG4gIGxldCBwYXJzZWQ6IHVua25vd24gPSB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCB0cmltbWVkID0gdmFsdWUudHJpbSgpO1xuICAgIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ1snKSB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSkge1xuICAgICAgdHJ5IHsgcGFyc2VkID0gSlNPTi5wYXJzZSh0cmltbWVkKTsgfSBjYXRjaCB7IHBhcnNlZCA9IHZhbHVlOyB9XG4gICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuICAgIGNvbnN0IHNwZWNzOiBQaXBlbGluZVZhcmlhYmxlU3BlY1tdID0gW107XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBwYXJzZWQpIHtcbiAgICAgIGlmICghZW50cnkgfHwgdHlwZW9mIGVudHJ5ICE9PSAnb2JqZWN0JykgY29udGludWU7XG4gICAgICBjb25zdCBlID0gZW50cnkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBjb25zdCBuYW1lID0gYXNTdHIoZS5uYW1lKTtcbiAgICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBhc1N0cihlLmRlZmF1bHQpID8/IGFzU3RyKGUuZGVmYXVsdFZhbHVlKTtcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYXNTdHIoZS5kZXNjcmlwdGlvbik7XG4gICAgICBzcGVjcy5wdXNoKHsgbmFtZSwgLi4uKGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHsgZGVmYXVsdFZhbHVlIH0pLCAuLi4oZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCAmJiB7IGRlc2NyaXB0aW9uIH0pIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3BlY3M7XG4gIH1cblxuICAvLyBDb21wYWN0IGBuYW1lPWRlZmF1bHRgIGNvbW1hIGxpc3QuXG4gIGlmICh0eXBlb2YgcGFyc2VkID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IHNwZWNzOiBQaXBlbGluZVZhcmlhYmxlU3BlY1tdID0gW107XG4gICAgZm9yIChjb25zdCBwYWlyIG9mIHBhcnNlZC5zcGxpdCgnLCcpKSB7XG4gICAgICBjb25zdCBpZHggPSBwYWlyLmluZGV4T2YoJz0nKTtcbiAgICAgIGNvbnN0IG5hbWUgPSAoaWR4ID09PSAtMSA/IHBhaXIgOiBwYWlyLnNsaWNlKDAsIGlkeCkpLnRyaW0oKTtcbiAgICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBpZHggPT09IC0xID8gdW5kZWZpbmVkIDogcGFpci5zbGljZShpZHggKyAxKS50cmltKCk7XG4gICAgICBzcGVjcy5wdXNoKHsgbmFtZSwgLi4uKGRlZmF1bHRWYWx1ZSA/IHsgZGVmYXVsdFZhbHVlIH0gOiB7fSkgfSk7XG4gICAgfVxuICAgIHJldHVybiBzcGVjcztcbiAgfVxuXG4gIHJldHVybiBbXTtcbn1cbiJdfQ==
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL21ldGFkYXRhLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUt0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLeEU7O0dBRUc7QUFDSCxNQUFNLFNBQVMsR0FBRztJQUNoQixVQUFVLEVBQUUscUJBQXFCO0lBQ2pDLGVBQWUsRUFBRSx5QkFBeUI7SUFDMUMsaUJBQWlCLEVBQUUsNEJBQTRCO0lBQy9DLGFBQWEsRUFBRSx3QkFBd0I7Q0FDL0IsQ0FBQztBQVFYLE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3RCLFdBQVcsRUFBRSxFQUFFO1FBQ2YsZUFBZSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLENBQUM7S0FDcEk7SUFDRCxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUMzQixXQUFXLEVBQUUsRUFBRTtRQUNmLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxDQUFDO0tBQy9SO0lBQ0QsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsRUFBRTtRQUM3QixXQUFXLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDM0IsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLGFB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QUM7UUFDL0IsTUFBTSxLQUFLLEdBQTJCLEVBQUUsQ0FBQztRQUN6QyxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLElBQUk7Z0JBQUUsU0FBUztZQUNwQixNQUFNLFlBQVksR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IEJ1aWxkRW52aXJvbm1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB0eXBlIHsgQ29kZUJ1aWxkU3RlcFByb3BzLCBDb2RlUGlwZWxpbmVQcm9wcywgU2hlbGxTdGVwUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYi9waXBlbGluZXMnO1xuaW1wb3J0IHR5cGUgeyBOZXR3b3JrQ29uZmlnLCBTdWJuZXRUeXBlTmFtZSB9IGZyb20gJy4vbmV0d29yay10eXBlcy5qcyc7XG5pbXBvcnQgeyBDREtfTUVUQURBVEFfUFJFRklYLCBNZXRhZGF0YUtleXMgfSBmcm9tICcuL3BpcGVsaW5lLXR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgTWV0YURhdGFUeXBlIH0gZnJvbSAnLi9waXBlbGluZS10eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFJvbGVDb25maWcgfSBmcm9tICcuL3JvbGUtdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTZWN1cml0eUdyb3VwQ29uZmlnIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC10eXBlcy5qcyc7XG5cbi8qKlxuICogVHlwZS1zYWZlIG5hbWVzcGFjZSBjb25zdGFudHMgZm9yIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmNvbnN0IE5BTUVTUEFDRSA9IHtcbiAgU0hFTExfU1RFUDogJ3BpcGVsaW5lczpzaGVsbHN0ZXAnLFxuICBDT0RFX0JVSUxEX1NURVA6ICdwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcCcsXG4gIEJVSUxEX0VOVklST05NRU5UOiAnY29kZWJ1aWxkOmJ1aWxkZW52aXJvbm1lbnQnLFxuICBDT0RFX1BJUEVMSU5FOiAncGlwZWxpbmVzOmNvZGVwaXBlbGluZScsXG59IGFzIGNvbnN0O1xudHlwZSBOYW1lc3BhY2UgPSAodHlwZW9mIE5BTUVTUEFDRSlba2V5b2YgdHlwZW9mIE5BTUVTUEFDRV07XG5cbmludGVyZmFjZSBOYW1lc3BhY2VLZXlDb25maWcge1xuICBib29sZWFuS2V5czogcmVhZG9ubHkgc3RyaW5nW107XG4gIHBhc3N0aHJvdWdoS2V5czogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbmNvbnN0IE5BTUVTUEFDRV9LRVlfTUFQOiBSZWNvcmQ8TmFtZXNwYWNlLCBOYW1lc3BhY2VLZXlDb25maWc+ID0ge1xuICBbTkFNRVNQQUNFLlNIRUxMX1NURVBdOiB7XG4gICAgYm9vbGVhbktleXM6IFtdLFxuICAgIHBhc3N0aHJvdWdoS2V5czogWydhZGRpdGlvbmFsSW5wdXRzJywgJ2NvbW1hbmRzJywgJ2VudicsICdlbnZGcm9tQ2ZuT3V0cHV0cycsICdpbnB1dCcsICdpbnN0YWxsQ29tbWFuZHMnLCAncHJpbWFyeU91dHB1dERpcmVjdG9yeSddLFxuICB9LFxuICBbTkFNRVNQQUNFLkNPREVfQlVJTERfU1RFUF06IHtcbiAgICBib29sZWFuS2V5czogW10sXG4gICAgcGFzc3Rocm91Z2hLZXlzOiBbJ2FjdGlvblJvbGUnLCAnYWRkaXRpb25hbElucHV0cycsICdidWlsZEVudmlyb25tZW50JywgJ2NhY2hlJywgJ2NvbW1hbmRzJywgJ2VudicsICdlbnZGcm9tQ2ZuT3V0cHV0cycsICdmaWxlU3lzdGVtTG9jYXRpb25zJywgJ2lucHV0JywgJ2luc3RhbGxDb21tYW5kcycsICdsb2dnaW5nJywgJ3BhcnRpYWxCdWlsZFNwZWMnLCAncHJpbWFyeU91dHB1dERpcmVjdG9yeScsICdwcm9qZWN0TmFtZScsICdyb2xlJywgJ3JvbGVQb2xpY3lTdGF0ZW1lbnRzJywgJ3RpbWVvdXQnXSxcbiAgfSxcbiAgW05BTUVTUEFDRS5CVUlMRF9FTlZJUk9OTUVOVF06IHtcbiAgICBib29sZWFuS2V5czogWydwcml2aWxlZ2VkJ10sXG4gICAgcGFzc3Rocm91Z2hLZXlzOiBbJ2J1aWxkSW1hZ2UnLCAnY2VydGlmaWNhdGUnLCAnY29tcHV0ZVR5cGUnLCAnZG9ja2VyU2VydmVyJywgJ2Vudmlyb25tZW50VmFyaWFibGVzJywgJ2ZsZWV0J10sXG4gIH0sXG4gIFtOQU1FU1BBQ0UuQ09ERV9QSVBFTElORV06IHtcbiAgICBib29sZWFuS2V5czogWydjcm9zc0FjY291bnRLZXlzJywgJ2RvY2tlckVuYWJsZWRGb3JTZWxmTXV0YXRpb24nLCAnZG9ja2VyRW5hYmxlZEZvclN5bnRoJywgJ2VuYWJsZUtleVJvdGF0aW9uJywgJ3B1Ymxpc2hBc3NldHNJblBhcmFsbGVsJywgJ3JldXNlQ3Jvc3NSZWdpb25TdXBwb3J0U3RhY2tzJywgJ3NlbGZNdXRhdGlvbicsICd1c2VDaGFuZ2VTZXRzJywgJ3VzZVBpcGVsaW5lUm9sZUZvckFjdGlvbnMnXSxcbiAgICBwYXNzdGhyb3VnaEtleXM6IFsnYXJ0aWZhY3RCdWNrZXQnLCAnYXNzZXRQdWJsaXNoaW5nQ29kZUJ1aWxkRGVmYXVsdHMnLCAnY2RrQXNzZXRzQ2xpVmVyc2lvbicsICdjbGlWZXJzaW9uJywgJ2NvZGVCdWlsZERlZmF1bHRzJywgJ2NvZGVQaXBlbGluZScsICdjcm9zc1JlZ2lvblJlcGxpY2F0aW9uQnVja2V0cycsICdkb2NrZXJDcmVkZW50aWFscycsICdwaXBlbGluZU5hbWUnLCAncGlwZWxpbmVUeXBlJywgJ3JvbGUnLCAnc2VsZk11dGF0aW9uQ29kZUJ1aWxkRGVmYXVsdHMnLCAnc3ludGgnLCAnc3ludGhDb2RlQnVpbGREZWZhdWx0cyddLFxuICB9LFxufTtcblxuY29uc3QgRU1QVFlfS0VZX0NPTkZJRzogTmFtZXNwYWNlS2V5Q29uZmlnID0geyBib29sZWFuS2V5czogW10sIHBhc3N0aHJvdWdoS2V5czogW10gfTtcblxuZnVuY3Rpb24gZ2V0Q3VzdG9tS2V5KHByZWZpeDogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtDREtfTUVUQURBVEFfUFJFRklYfSR7cHJlZml4fToke2tleX1gLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIGlzVHJ1ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIEV4dHJhY3QgQ0RLIGNvbnN0cnVjdCBjb25maWcgZnJvbSBtZXRhZGF0YSBmb3IgYSBnaXZlbiBuYW1lc3BhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEoXG4gIG1ldGFkYXRhOiBNZXRhRGF0YVR5cGUsXG4gIG5hbWVzcGFjZTogc3RyaW5nLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCB7IGJvb2xlYW5LZXlzLCBwYXNzdGhyb3VnaEtleXMgfSA9XG4gICAgTkFNRVNQQUNFX0tFWV9NQVBbbmFtZXNwYWNlIGFzIE5hbWVzcGFjZV0gPz8gRU1QVFlfS0VZX0NPTkZJRztcblxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgYm9vbGVhbktleXMpIHtcbiAgICBjb25zdCByYXcgPSBtZXRhZGF0YVtnZXRDdXN0b21LZXkobmFtZXNwYWNlLCBrZXkpXTtcbiAgICBpZiAocmF3ICE9PSB1bmRlZmluZWQpIHJlc3VsdFtrZXldID0gaXNUcnVlKHJhdyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBvZiBwYXNzdGhyb3VnaEtleXMpIHtcbiAgICBjb25zdCByYXcgPSBtZXRhZGF0YVtnZXRDdXN0b21LZXkobmFtZXNwYWNlLCBrZXkpXTtcbiAgICBpZiAocmF3ICE9PSB1bmRlZmluZWQpIHJlc3VsdFtrZXldID0gcmF3O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqIEV4dHJhY3QgQ29kZVBpcGVsaW5lIGNvbmZpZyBmcm9tIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGFkYXRhRm9yQ29kZVBpcGVsaW5lKG1ldGFkYXRhOiBNZXRhRGF0YVR5cGUpOiBQYXJ0aWFsPENvZGVQaXBlbGluZVByb3BzPiB7XG4gIHJldHVybiBidWlsZENvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YSwgTkFNRVNQQUNFLkNPREVfUElQRUxJTkUpIGFzIFBhcnRpYWw8Q29kZVBpcGVsaW5lUHJvcHM+O1xufVxuXG4vKiogRXh0cmFjdCBDb2RlQnVpbGRTdGVwIGNvbmZpZyBmcm9tIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGFkYXRhRm9yQ29kZUJ1aWxkU3RlcChtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogUGFydGlhbDxDb2RlQnVpbGRTdGVwUHJvcHM+IHtcbiAgcmV0dXJuIGJ1aWxkQ29uZmlnRnJvbU1ldGFkYXRhKG1ldGFkYXRhLCBOQU1FU1BBQ0UuQ09ERV9CVUlMRF9TVEVQKSBhcyBQYXJ0aWFsPENvZGVCdWlsZFN0ZXBQcm9wcz47XG59XG5cbi8qKiBFeHRyYWN0IFNoZWxsU3RlcCBjb25maWcgZnJvbSBtZXRhZGF0YS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRhZGF0YUZvclNoZWxsU3RlcChtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogUGFydGlhbDxTaGVsbFN0ZXBQcm9wcz4ge1xuICByZXR1cm4gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGEsIE5BTUVTUEFDRS5TSEVMTF9TVEVQKSBhcyBQYXJ0aWFsPFNoZWxsU3RlcFByb3BzPjtcbn1cblxuLyoqIEV4dHJhY3QgQnVpbGRFbnZpcm9ubWVudCBjb25maWcgZnJvbSBtZXRhZGF0YS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnQobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFBhcnRpYWw8QnVpbGRFbnZpcm9ubWVudD4ge1xuICByZXR1cm4gYnVpbGRDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGEsIE5BTUVTUEFDRS5CVUlMRF9FTlZJUk9OTUVOVCkgYXMgUGFydGlhbDxCdWlsZEVudmlyb25tZW50Pjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUeXBlZC1jb25maWcgZXh0cmFjdG9yczogZWMyOm5ldHdvcmsgLyBpYW06cm9sZSAvIGVjMjpzZWN1cml0eWdyb3VwIG1ldGFkYXRhXG4vLyAtPiB0aGUgZGlzY3JpbWluYXRlZC11bmlvbiBjb25maWcgb2JqZWN0cyB0aGUgYnVpbGRlciBhbHJlYWR5IGNvbnN1bWVzXG4vLyAoTmV0d29ya0NvbmZpZyAvIFJvbGVDb25maWcgLyBTZWN1cml0eUdyb3VwQ29uZmlnKS4gVW5saWtlIHRoZSBuYW1lc3BhY2VzXG4vLyBhYm92ZSAod2hpY2ggbWFwIDE6MSB0byBDREsgY29uc3RydWN0IHByb3BzKSwgdGhlc2UgZmVlZCByZXNvbHZlTmV0d29yayAvXG4vLyByZXNvbHZlUm9sZSAvIHJlc29sdmVTZWN1cml0eUdyb3VwLiBFYWNoIHJldHVybnMgdW5kZWZpbmVkIHdoZW4gaXRzIGtleXMgYXJlXG4vLyBhYnNlbnQsIHNvIGNhbGxlcnMgZmFsbCB0aHJvdWdoIHdpdGggYHByb3AgPz8gbWV0YWRhdGEgPz8gZW52YCBwcmVjZWRlbmNlLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGFzU3RyKHY6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpICE9PSAnJyA/IHYgOiB1bmRlZmluZWQ7XG59XG5cbi8qKiBBY2NlcHQgYSBKU09OIGFycmF5IG9yIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyAtPiBzdHJpbmdbXSAodW5kZWZpbmVkIGlmIGVtcHR5KS4gKi9cbmZ1bmN0aW9uIGFzTGlzdCh2OiB1bmtub3duKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICBjb25zdCBpdGVtcyA9IEFycmF5LmlzQXJyYXkodilcbiAgICA/IHYubWFwKFN0cmluZykubWFwKHMgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKVxuICAgIDogdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpICE9PSAnJ1xuICAgICAgPyB2LnNwbGl0KCcsJykubWFwKHMgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKVxuICAgICAgOiBbXTtcbiAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDAgPyBpdGVtcyA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIEFjY2VwdCBhIEpTT04gb2JqZWN0IG9yIGEgSlNPTiBzdHJpbmcgLT4gUmVjb3JkPHN0cmluZyxzdHJpbmc+ICh1bmRlZmluZWQgaWYgZW1wdHkpLiAqL1xuZnVuY3Rpb24gYXNUYWdzKHY6IHVua25vd24pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgbGV0IG9iajogdW5rbm93biA9IHY7XG4gIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgdi50cmltKCkgIT09ICcnKSB7XG4gICAgdHJ5IHsgb2JqID0gSlNPTi5wYXJzZSh2KTsgfSBjYXRjaCB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgfVxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMob2JqIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5tYXAoKFtrLCB2YWxdKSA9PiBbaywgU3RyaW5nKHZhbCldIGFzIGNvbnN0KTtcbiAgICByZXR1cm4gZW50cmllcy5sZW5ndGggPiAwID8gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpIDogdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiB1bmRlZmluZWQgd2hlbiB0aGUga2V5IGlzIGFic2VudDsgb3RoZXJ3aXNlIGEgY29lcmNlZCBib29sZWFuLiAqL1xuZnVuY3Rpb24gYXNCb29sKHY6IHVua25vd24pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHYgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGlzVHJ1ZSh2KTtcbn1cblxuLyoqIENvZXJjZSBhIG1ldGFkYXRhIHZhbHVlIHRvIGEgcG9zaXRpdmUgaW50ZWdlcjsgdW5kZWZpbmVkIGlmIGFic2VudC9pbnZhbGlkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzSW50KHY6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwgfHwgdiA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IG4gPSB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogTnVtYmVyKFN0cmluZyh2KS50cmltKCkpO1xuICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihuKSAmJiBuID4gMCA/IG4gOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQnVpbGQgYSBOZXR3b3JrQ29uZmlnIGZyb20gYGVjMjpuZXR3b3JrYCBtZXRhZGF0YSBrZXlzLiBUaGUgdmFyaWFudCBjb21lc1xuICogZnJvbSBORVRXT1JLX1RZUEUsIG9yIGlzIGluZmVycmVkIChzdWJuZXRJZHMgLT4gc3VibmV0SWRzLCB0YWdzIC0+IHZwY0xvb2t1cCxcbiAqIHZwY0lkIC0+IHZwY0lkKS4gUmV0dXJucyB1bmRlZmluZWQgd2hlbiBubyB1c2FibGUgbmV0d29yayBtZXRhZGF0YSBpcyBwcmVzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV0d29ya0NvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogTmV0d29ya0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19UWVBFXSk7XG4gIGNvbnN0IHZwY0lkID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLk5FVFdPUktfVlBDX0lEXSk7XG4gIGNvbnN0IHN1Ym5ldElkcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TVUJORVRfSURTXSk7XG4gIGNvbnN0IHN1Ym5ldFR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TVUJORVRfVFlQRV0pIGFzIFN1Ym5ldFR5cGVOYW1lIHwgdW5kZWZpbmVkO1xuICBjb25zdCBhdmFpbGFiaWxpdHlab25lcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19BVkFJTEFCSUxJVFlfWk9ORVNdKTtcbiAgY29uc3Qgc3VibmV0R3JvdXBOYW1lID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLk5FVFdPUktfU1VCTkVUX0dST1VQX05BTUVdKTtcbiAgY29uc3Qgc2VjdXJpdHlHcm91cElkcyA9IGFzTGlzdChtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19TRUNVUklUWV9HUk9VUF9JRFNdKTtcbiAgY29uc3QgdGFncyA9IGFzVGFncyhtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19UQUdTXSk7XG4gIGNvbnN0IHZwY05hbWUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19WUENfTkFNRV0pO1xuICBjb25zdCByZWdpb24gPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuTkVUV09SS19SRUdJT05dKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAoc3VibmV0SWRzID8gJ3N1Ym5ldElkcycgOiB0YWdzID8gJ3ZwY0xvb2t1cCcgOiB2cGNJZCA/ICd2cGNJZCcgOiB1bmRlZmluZWQpO1xuXG4gIHN3aXRjaCAodmFyaWFudCkge1xuICAgIGNhc2UgJ3N1Ym5ldElkcyc6XG4gICAgICBpZiAoIXZwY0lkIHx8ICFzdWJuZXRJZHMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAnc3VibmV0SWRzJywgb3B0aW9uczogeyB2cGNJZCwgc3VibmV0SWRzLCAuLi4oc2VjdXJpdHlHcm91cElkcyAmJiB7IHNlY3VyaXR5R3JvdXBJZHMgfSkgfSB9O1xuICAgIGNhc2UgJ3ZwY0lkJzpcbiAgICAgIGlmICghdnBjSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAndnBjSWQnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgdnBjSWQsXG4gICAgICAgICAgLi4uKHN1Ym5ldFR5cGUgJiYgeyBzdWJuZXRUeXBlIH0pLFxuICAgICAgICAgIC4uLihhdmFpbGFiaWxpdHlab25lcyAmJiB7IGF2YWlsYWJpbGl0eVpvbmVzIH0pLFxuICAgICAgICAgIC4uLihzdWJuZXRHcm91cE5hbWUgJiYgeyBzdWJuZXRHcm91cE5hbWUgfSksXG4gICAgICAgICAgLi4uKHNlY3VyaXR5R3JvdXBJZHMgJiYgeyBzZWN1cml0eUdyb3VwSWRzIH0pLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlICd2cGNMb29rdXAnOlxuICAgICAgaWYgKCF0YWdzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3ZwY0xvb2t1cCcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB0YWdzLFxuICAgICAgICAgIC4uLihzdWJuZXRUeXBlICYmIHsgc3VibmV0VHlwZSB9KSxcbiAgICAgICAgICAuLi4oYXZhaWxhYmlsaXR5Wm9uZXMgJiYgeyBhdmFpbGFiaWxpdHlab25lcyB9KSxcbiAgICAgICAgICAuLi4oc3VibmV0R3JvdXBOYW1lICYmIHsgc3VibmV0R3JvdXBOYW1lIH0pLFxuICAgICAgICAgIC4uLihzZWN1cml0eUdyb3VwSWRzICYmIHsgc2VjdXJpdHlHcm91cElkcyB9KSxcbiAgICAgICAgICAuLi4odnBjTmFtZSAmJiB7IHZwY05hbWUgfSksXG4gICAgICAgICAgLi4uKHJlZ2lvbiAmJiB7IHJlZ2lvbiB9KSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZCBhIFJvbGVDb25maWcgZnJvbSBgaWFtOnJvbGVgIG1ldGFkYXRhIGtleXMgKHJvbGVBcm4gLyByb2xlTmFtZSAvXG4gKiBjb2RlQnVpbGREZWZhdWx0KS4gVGhlIDQga2V5cyBjYW4ndCBleHByZXNzIHRoZSBmdWxsIGBvaWRjYCBvcHRpb24gc2V0LCBzbyBhblxuICogYG9pZGNgIHR5cGUgZnJvbSBtZXRhZGF0YSBpcyBpZ25vcmVkLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIG5vIGtleXMgYXJlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvbGVDb25maWdGcm9tTWV0YWRhdGEobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFJvbGVDb25maWcgfCB1bmRlZmluZWQge1xuICBjb25zdCB0eXBlID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfVFlQRV0pO1xuICBjb25zdCByb2xlQXJuID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfQVJOXSk7XG4gIGNvbnN0IHJvbGVOYW1lID0gYXNTdHIobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlJPTEVfTkFNRV0pO1xuICBjb25zdCBtdXRhYmxlID0gYXNCb29sKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5ST0xFX01VVEFCTEVdKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAocm9sZUFybiA/ICdyb2xlQXJuJyA6IHJvbGVOYW1lID8gJ3JvbGVOYW1lJyA6IHVuZGVmaW5lZCk7XG5cbiAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgY2FzZSAncm9sZUFybic6XG4gICAgICBpZiAoIXJvbGVBcm4pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAncm9sZUFybicsIG9wdGlvbnM6IHsgcm9sZUFybiwgLi4uKG11dGFibGUgIT09IHVuZGVmaW5lZCAmJiB7IG11dGFibGUgfSkgfSB9O1xuICAgIGNhc2UgJ3JvbGVOYW1lJzpcbiAgICAgIGlmICghcm9sZU5hbWUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAncm9sZU5hbWUnLCBvcHRpb25zOiB7IHJvbGVOYW1lLCAuLi4obXV0YWJsZSAhPT0gdW5kZWZpbmVkICYmIHsgbXV0YWJsZSB9KSB9IH07XG4gICAgY2FzZSAnY29kZUJ1aWxkRGVmYXVsdCc6XG4gICAgICByZXR1cm4geyB0eXBlOiAnY29kZUJ1aWxkRGVmYXVsdCcsIG9wdGlvbnM6IHsgLi4uKHJvbGVOYW1lICYmIHsgcm9sZU5hbWUgfSkgfSB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQnVpbGQgYSBTZWN1cml0eUdyb3VwQ29uZmlnIGZyb20gYGVjMjpzZWN1cml0eWdyb3VwYCBtZXRhZGF0YSBrZXlzXG4gKiAoc2VjdXJpdHlHcm91cElkcyAvIHNlY3VyaXR5R3JvdXBMb29rdXApLiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIG5vIGtleXMgc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VjdXJpdHlHcm91cENvbmZpZ0Zyb21NZXRhZGF0YShtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogU2VjdXJpdHlHcm91cENvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHR5cGUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuU0VDVVJJVFlfR1JPVVBfVFlQRV0pO1xuICBjb25zdCBpZHMgPSBhc0xpc3QobWV0YWRhdGFbTWV0YWRhdGFLZXlzLlNFQ1VSSVRZX0dST1VQX0lEU10pO1xuICBjb25zdCBtdXRhYmxlID0gYXNCb29sKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5TRUNVUklUWV9HUk9VUF9NVVRBQkxFXSk7XG4gIGNvbnN0IG5hbWUgPSBhc1N0cihtZXRhZGF0YVtNZXRhZGF0YUtleXMuU0VDVVJJVFlfR1JPVVBfTkFNRV0pO1xuICBjb25zdCB2cGNJZCA9IGFzU3RyKG1ldGFkYXRhW01ldGFkYXRhS2V5cy5TRUNVUklUWV9HUk9VUF9WUENfSURdKTtcblxuICBjb25zdCB2YXJpYW50ID0gdHlwZSA/PyAoaWRzID8gJ3NlY3VyaXR5R3JvdXBJZHMnIDogbmFtZSA/ICdzZWN1cml0eUdyb3VwTG9va3VwJyA6IHVuZGVmaW5lZCk7XG5cbiAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgY2FzZSAnc2VjdXJpdHlHcm91cElkcyc6XG4gICAgICBpZiAoIWlkcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdzZWN1cml0eUdyb3VwSWRzJywgb3B0aW9uczogeyBzZWN1cml0eUdyb3VwSWRzOiBpZHMsIC4uLihtdXRhYmxlICE9PSB1bmRlZmluZWQgJiYgeyBtdXRhYmxlIH0pIH0gfTtcbiAgICBjYXNlICdzZWN1cml0eUdyb3VwTG9va3VwJzpcbiAgICAgIGlmICghbmFtZSB8fCAhdnBjSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyB0eXBlOiAnc2VjdXJpdHlHcm91cExvb2t1cCcsIG9wdGlvbnM6IHsgc2VjdXJpdHlHcm91cE5hbWU6IG5hbWUsIHZwY0lkIH0gfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKiogQSBDb2RlUGlwZWxpbmUgVjIgcGlwZWxpbmUtbGV2ZWwgdmFyaWFibGUgcGFyc2VkIGZyb20gYG9wZXJhdGlvbnMudmFyaWFibGVzYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVWYXJpYWJsZVNwZWMge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2UgYG9wZXJhdGlvbnMudmFyaWFibGVzYCBtZXRhZGF0YSBpbnRvIENvZGVQaXBlbGluZSBWMiB2YXJpYWJsZSBzcGVjcy5cbiAqIEFjY2VwdHMgYSBKU09OIGFycmF5IChgW3tcIm5hbWVcIjpcIkVOVlwiLFwiZGVmYXVsdFwiOlwicHJvZFwiLFwiZGVzY3JpcHRpb25cIjpcIi4uLlwifV1gKVxuICogb3IgYSBjb21wYWN0IGNvbW1hLXNlcGFyYXRlZCBgbmFtZT1kZWZhdWx0YCBsaXN0IChgRU5WPXByb2QsUkVHSU9OPXVzLWVhc3QtMWApLlxuICogRW50cmllcyB3aXRob3V0IGEgdXNhYmxlIG5hbWUgYXJlIHNraXBwZWQ7IHJldHVybnMgW10gd2hlbiBub3RoaW5nIHZhbGlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQaXBlbGluZVZhcmlhYmxlcyh2YWx1ZTogdW5rbm93bik6IFBpcGVsaW5lVmFyaWFibGVTcGVjW10ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiBbXTtcblxuICAvLyBBbHJlYWR5IGFuIGFycmF5IChKU09OLXR5cGVkIG1ldGFkYXRhKSBvciBhIEpTT04tZW5jb2RlZCBzdHJpbmcuXG4gIGxldCBwYXJzZWQ6IHVua25vd24gPSB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCB0cmltbWVkID0gdmFsdWUudHJpbSgpO1xuICAgIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ1snKSB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSkge1xuICAgICAgdHJ5IHsgcGFyc2VkID0gSlNPTi5wYXJzZSh0cmltbWVkKTsgfSBjYXRjaCB7IHBhcnNlZCA9IHZhbHVlOyB9XG4gICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuICAgIGNvbnN0IHNwZWNzOiBQaXBlbGluZVZhcmlhYmxlU3BlY1tdID0gW107XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBwYXJzZWQpIHtcbiAgICAgIGlmICghZW50cnkgfHwgdHlwZW9mIGVudHJ5ICE9PSAnb2JqZWN0JykgY29udGludWU7XG4gICAgICBjb25zdCBlID0gZW50cnkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBjb25zdCBuYW1lID0gYXNTdHIoZS5uYW1lKTtcbiAgICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBhc1N0cihlLmRlZmF1bHQpID8/IGFzU3RyKGUuZGVmYXVsdFZhbHVlKTtcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYXNTdHIoZS5kZXNjcmlwdGlvbik7XG4gICAgICBzcGVjcy5wdXNoKHsgbmFtZSwgLi4uKGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHsgZGVmYXVsdFZhbHVlIH0pLCAuLi4oZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCAmJiB7IGRlc2NyaXB0aW9uIH0pIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3BlY3M7XG4gIH1cblxuICAvLyBDb21wYWN0IGBuYW1lPWRlZmF1bHRgIGNvbW1hIGxpc3QuXG4gIGlmICh0eXBlb2YgcGFyc2VkID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IHNwZWNzOiBQaXBlbGluZVZhcmlhYmxlU3BlY1tdID0gW107XG4gICAgZm9yIChjb25zdCBwYWlyIG9mIHBhcnNlZC5zcGxpdCgnLCcpKSB7XG4gICAgICBjb25zdCBpZHggPSBwYWlyLmluZGV4T2YoJz0nKTtcbiAgICAgIGNvbnN0IG5hbWUgPSAoaWR4ID09PSAtMSA/IHBhaXIgOiBwYWlyLnNsaWNlKDAsIGlkeCkpLnRyaW0oKTtcbiAgICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBpZHggPT09IC0xID8gdW5kZWZpbmVkIDogcGFpci5zbGljZShpZHggKyAxKS50cmltKCk7XG4gICAgICBzcGVjcy5wdXNoKHsgbmFtZSwgLi4uKGRlZmF1bHRWYWx1ZSA/IHsgZGVmYXVsdFZhbHVlIH0gOiB7fSkgfSk7XG4gICAgfVxuICAgIHJldHVybiBzcGVjcztcbiAgfVxuXG4gIHJldHVybiBbXTtcbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SecretValue } from 'aws-cdk-lib';
|
|
2
|
-
import type { MetaDataType } from './pipeline-types';
|
|
3
|
-
import type { SecurityGroupConfig } from './security-group-types';
|
|
2
|
+
import type { MetaDataType } from './pipeline-types.js';
|
|
3
|
+
import type { SecurityGroupConfig } from './security-group-types.js';
|
|
4
4
|
/**
|
|
5
5
|
* Network configuration using explicit subnet IDs
|
|
6
6
|
*
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
export {};
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL25ldHdvcmstdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFNlY3JldFZhbHVlIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBNZXRhRGF0YVR5cGUgfSBmcm9tICcuL3BpcGVsaW5lLXR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU2VjdXJpdHlHcm91cENvbmZpZyB9IGZyb20gJy4vc2VjdXJpdHktZ3JvdXAtdHlwZXMuanMnO1xuXG4vKipcbiAqIE5ldHdvcmsgY29uZmlndXJhdGlvbiB1c2luZyBleHBsaWNpdCBzdWJuZXQgSURzXG4gKlxuICogVXNlIHdoZW4geW91IGtub3cgdGhlIGV4YWN0IHN1Ym5ldCBJRHMgd2hlcmUgQ29kZUJ1aWxkIHNob3VsZCBydW4uXG4gKiBTdWJuZXRzIGFyZSBzZWxlY3RlZCBkaXJlY3RseSBieSBJRDsgVlBDIGlzIGxvb2tlZCB1cCBmcm9tIHRoZSBwcm92aWRlZCB2cGNJZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbmV0d29yazogU3VibmV0SWRzTmV0d29yayA9IHtcbiAqICAgdHlwZTogJ3N1Ym5ldElkcycsXG4gKiAgIG9wdGlvbnM6IHtcbiAqICAgICB2cGNJZDogJ3ZwYy0wYTFiMmMzZDRlNWY2YTdiOCcsXG4gKiAgICAgc3VibmV0SWRzOiBbJ3N1Ym5ldC0wYTFiMmMzZCcsICdzdWJuZXQtNGU1ZjZhN2InXSxcbiAqICAgICBzZWN1cml0eUdyb3VwSWRzOiBbJ3NnLTEyMzQ1Njc4J11cbiAqICAgfVxuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym5ldElkc05ldHdvcmsge1xuICByZWFkb25seSB0eXBlOiAnc3VibmV0SWRzJztcbiAgcmVhZG9ubHkgb3B0aW9uczogU3VibmV0SWRzTmV0d29ya09wdGlvbnM7XG59XG5cbi8qKlxuICogTmV0d29yayBjb25maWd1cmF0aW9uIHVzaW5nIFZQQyBsb29rdXAgYnkgSURcbiAqXG4gKiBMb29rcyB1cCBhbiBleGlzdGluZyBWUEMgYnkgaXRzIElEIGFuZCByZXNvbHZlcyBzdWJuZXRzIHZpYSBzdWJuZXRTZWxlY3Rpb24gZmlsdGVycy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbmV0d29yazogVnBjSWROZXR3b3JrID0ge1xuICogICB0eXBlOiAndnBjSWQnLFxuICogICBvcHRpb25zOiB7XG4gKiAgICAgdnBjSWQ6ICd2cGMtMGExYjJjM2Q0ZTVmNmE3YjgnLFxuICogICAgIHN1Ym5ldFR5cGU6ICdQUklWQVRFX1dJVEhfRUdSRVNTJyxcbiAqICAgICBzZWN1cml0eUdyb3VwSWRzOiBbJ3NnLTEyMzQ1Njc4J11cbiAqICAgfVxuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY0lkTmV0d29yayB7XG4gIHJlYWRvbmx5IHR5cGU6ICd2cGNJZCc7XG4gIHJlYWRvbmx5IG9wdGlvbnM6IFZwY0lkTmV0d29ya09wdGlvbnM7XG59XG5cbi8qKlxuICogTmV0d29yayBjb25maWd1cmF0aW9uIHVzaW5nIFZQQyBsb29rdXAgYnkgdGFnc1xuICpcbiAqIExvb2tzIHVwIGFuIGV4aXN0aW5nIFZQQyBieSB0YWcgZmlsdGVycyBhbmQgcmVzb2x2ZXMgc3VibmV0cyB2aWEgc3VibmV0U2VsZWN0aW9uIGZpbHRlcnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5ldHdvcms6IFZwY0xvb2t1cE5ldHdvcmsgPSB7XG4gKiAgIHR5cGU6ICd2cGNMb29rdXAnLFxuICogICBvcHRpb25zOiB7XG4gKiAgICAgdGFnczogeyAnYXdzOmNsb3VkZm9ybWF0aW9uOnN0YWNrLW5hbWUnOiAnTmV0d29ya1N0YWNrJyB9LFxuICogICAgIHN1Ym5ldFR5cGU6ICdQUklWQVRFX1dJVEhfRUdSRVNTJyxcbiAqICAgICBhdmFpbGFiaWxpdHlab25lczogWyd1cy1lYXN0LTFhJywgJ3VzLWVhc3QtMWInXVxuICogICB9XG4gKiB9O1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjTG9va3VwTmV0d29yayB7XG4gIHJlYWRvbmx5IHR5cGU6ICd2cGNMb29rdXAnO1xuICByZWFkb25seSBvcHRpb25zOiBWcGNMb29rdXBOZXR3b3JrT3B0aW9ucztcbn1cblxuLyoqXG4gKiBDb21tb24gc3VibmV0IHNlbGVjdGlvbiBmaWx0ZXJzIHNoYXJlZCBieSBWUEMtYmFzZWQgbmV0d29yayBvcHRpb25zXG4gKi9cbmludGVyZmFjZSBTdWJuZXRTZWxlY3Rpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFN1Ym5ldCB0eXBlIGZpbHRlciBmb3Igc3VibmV0IHNlbGVjdGlvblxuICAgKiBNYXBzIHRvIENESyBTdWJuZXRUeXBlIHZhbHVlc1xuICAgKiBAZGVmYXVsdCAnUFJJVkFURV9XSVRIX0VHUkVTUydcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldFR5cGU/OiBTdWJuZXRUeXBlTmFtZTtcblxuICAvKipcbiAgICogRmlsdGVyIHN1Ym5ldHMgdG8gc3BlY2lmaWMgYXZhaWxhYmlsaXR5IHpvbmVzXG4gICAqIEBleGFtcGxlIFsndXMtZWFzdC0xYScsICd1cy1lYXN0LTFiJ11cbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEZpbHRlciBzdWJuZXRzIGJ5IENESyBzdWJuZXQgZ3JvdXAgbmFtZVxuICAgKiBNYXRjaGVzIHRoZSBncm91cE5hbWUgYXNzaWduZWQgZHVyaW5nIFZQQyBjcmVhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0R3JvdXBOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cCBJRHMgdG8gYXR0YWNoIHRvIENvZGVCdWlsZCBwcm9qZWN0c1xuICAgKiBAZXhhbXBsZSBbJ3NnLTEyMzQ1Njc4J11cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGV4cGxpY2l0IHN1Ym5ldCBJRCBuZXR3b3JrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0SWRzTmV0d29ya09wdGlvbnMge1xuICAvKipcbiAgICogVlBDIElEIHRoYXQgY29udGFpbnMgdGhlIHN1Ym5ldHMuXG4gICAqIFJlcXVpcmVkIGJlY2F1c2UgQ0RLIENvZGVCdWlsZFN0ZXAgbmVlZHMgYSB2cGMgcmVmZXJlbmNlLlxuICAgKiBDYW4gYmUgYSBwbGFpbiBzdHJpbmcgb3IgYSBTZWNyZXRWYWx1ZSAoZS5nLiBmcm9tIFNlY3JldHMgTWFuYWdlcikuXG4gICAqIEBleGFtcGxlICd2cGMtMGExYjJjM2Q0ZTVmNmE3YjgnXG4gICAqL1xuICByZWFkb25seSB2cGNJZDogU2VjcmV0VmFsdWUgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4cGxpY2l0IGxpc3Qgb2Ygc3VibmV0IElEcyB3aGVyZSBDb2RlQnVpbGQgcHJvamVjdHMgd2lsbCBydW5cbiAgICogQGV4YW1wbGUgWydzdWJuZXQtMGExYjJjM2QnLCAnc3VibmV0LTRlNWY2YTdiJ11cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldElkczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIElEcyB0byBhdHRhY2ggdG8gQ29kZUJ1aWxkIHByb2plY3RzXG4gICAqIEBleGFtcGxlIFsnc2ctMTIzNDU2NzgnXVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cElkcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVlBDIGxvb2t1cCBieSBJRFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY0lkTmV0d29ya09wdGlvbnMgZXh0ZW5kcyBTdWJuZXRTZWxlY3Rpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFZQQyBJRCB0byBsb29rIHVwXG4gICAqIENhbiBiZSBhIHBsYWluIHN0cmluZyBvciBhIFNlY3JldFZhbHVlIChlLmcuIGZyb20gU2VjcmV0cyBNYW5hZ2VyKS5cbiAgICogQGV4YW1wbGUgJ3ZwYy0wYTFiMmMzZDRlNWY2YTdiOCdcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkOiBTZWNyZXRWYWx1ZSB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFZQQyBsb29rdXAgYnkgdGFnc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY0xvb2t1cE5ldHdvcmtPcHRpb25zIGV4dGVuZHMgU3VibmV0U2VsZWN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUYWcga2V5LXZhbHVlIHBhaXJzIHRvIGlkZW50aWZ5IHRoZSBWUENcbiAgICogQWxsIHRhZ3MgbXVzdCBtYXRjaCBmb3IgbG9va3VwIHRvIHN1Y2NlZWRcbiAgICogQGV4YW1wbGUgeyBFbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLCBUZWFtOiAncGxhdGZvcm0nIH1cbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIFZQQyBuYW1lICh2YWx1ZSBvZiB0aGUgJ05hbWUnIHRhZykgZm9yIGFkZGl0aW9uYWwgZmlsdGVyaW5nXG4gICAqL1xuICByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBBV1MgcmVnaW9uIG92ZXJyaWRlIGZvciBjcm9zcy1yZWdpb24gVlBDIGxvb2t1cFxuICAgKiBAZXhhbXBsZSAndXMtd2VzdC0yJ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN1Ym5ldCB0eXBlIG5hbWVzIGNvcnJlc3BvbmRpbmcgdG8gQ0RLIFN1Ym5ldFR5cGUgZW51bSB2YWx1ZXNcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvYXBpL3YyL2RvY3MvYXdzLWNkay1saWIuYXdzX2VjMi5TdWJuZXRUeXBlLmh0bWxcbiAqL1xuZXhwb3J0IHR5cGUgU3VibmV0VHlwZU5hbWUgPVxuICB8ICdQUklWQVRFX1dJVEhfRUdSRVNTJ1xuICB8ICdQUklWQVRFX1dJVEhfTkFUJ1xuICB8ICdQUklWQVRFX0lTT0xBVEVEJ1xuICB8ICdQVUJMSUMnO1xuXG4vKipcbiAqIFVuaW9uIHR5cGUgb2YgYWxsIHN1cHBvcnRlZCBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIFVzZWQgYXQgdHdvIGluZGVwZW5kZW50IGxldmVsczpcbiAqIC0gUGlwZWxpbmUtbGV2ZWwgKGBkZWZhdWx0cy5uZXR3b3JrYCkg4oCUIGFwcGxpZXMgdG8gYWxsIENvZGVCdWlsZCBhY3Rpb25zXG4gKiAtIFN0ZXAtbGV2ZWwgKGBzeW50aC5uZXR3b3JrYCwgYENvZGVCdWlsZFN0ZXBPcHRpb25zLm5ldHdvcmtgKSDigJQgYXBwbGllcyB0byBhbiBpbmRpdmlkdWFsIGJ1aWxkIHN0ZXBcbiAqXG4gKiBFYWNoIHZhcmlhbnQgcmVzb2x2ZXMgdG8gdnBjLCBzdWJuZXRTZWxlY3Rpb24sIGFuZCBvcHRpb25hbCBzZWN1cml0eUdyb3VwczpcbiAqIC0gU3VibmV0SWRzTmV0d29yazogVlBDIGxvb2tlZCB1cCBieSBJRCwgc3VibmV0cyBzZWxlY3RlZCBleHBsaWNpdGx5IGJ5IElEXG4gKiAtIFZwY0lkTmV0d29yazogVlBDIGxvb2tlZCB1cCBieSBJRCwgc3VibmV0cyByZXNvbHZlZCB2aWEgc3VibmV0U2VsZWN0aW9uIGZpbHRlcnNcbiAqIC0gVnBjTG9va3VwTmV0d29yazogVlBDIGxvb2tlZCB1cCBieSB0YWdzLCBzdWJuZXRzIHJlc29sdmVkIHZpYSBzdWJuZXRTZWxlY3Rpb24gZmlsdGVyc1xuICovXG5leHBvcnQgdHlwZSBOZXR3b3JrQ29uZmlnID0gU3VibmV0SWRzTmV0d29yayB8IFZwY0lkTmV0d29yayB8IFZwY0xvb2t1cE5ldHdvcms7XG5cbi8qKlxuICogUGlwZWxpbmUtbGV2ZWwgQ29kZUJ1aWxkIGRlZmF1bHRzIGFwcGxpZWQgdG8gZXZlcnkgQ29kZUJ1aWxkIGFjdGlvblxuICogKHN5bnRoLCBzZWxmLW11dGF0aW9uLCBhc3NldCBwdWJsaXNoaW5nKSB2aWEgYGNvZGVCdWlsZERlZmF1bHRzYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZGVmYXVsdHM6IENvZGVCdWlsZERlZmF1bHRzID0ge1xuICogICBuZXR3b3JrOiB7XG4gKiAgICAgdHlwZTogJ3ZwY0lkJyxcbiAqICAgICBvcHRpb25zOiB7IHZwY0lkOiAndnBjLWFiYzEyMycsIHN1Ym5ldFR5cGU6ICdQUklWQVRFX1dJVEhfRUdSRVNTJyB9XG4gKiAgIH0sXG4gKiAgIG1ldGFkYXRhOiB7XG4gKiAgICAgW01ldGFkYXRhS2V5cy5QUklWSUxFR0VEXTogdHJ1ZSxcbiAqICAgfSxcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2RlQnVpbGREZWZhdWx0cyB7XG4gIC8qKlxuICAgKiBOZXR3b3JrIGNvbmZpZ3VyYXRpb24gZm9yIGFsbCBDb2RlQnVpbGQgYWN0aW9ucy5cbiAgICogUmVzb2x2ZXMgdG8gdnBjLCBzdWJuZXRTZWxlY3Rpb24sIGFuZCBvcHRpb25hbCBzZWN1cml0eUdyb3Vwcy5cbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcms/OiBOZXR3b3JrQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBTdGFuZGFsb25lIHNlY3VyaXR5IGdyb3VwcyBmb3IgYWxsIENvZGVCdWlsZCBhY3Rpb25zLlxuICAgKiBNZXJnZWQgd2l0aCBhbnkgc2VjdXJpdHkgZ3JvdXBzIHJlc29sdmVkIGZyb20gbmV0d29yayBjb25maWcuXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IFNlY3VyaXR5R3JvdXBDb25maWc7XG5cbiAgLyoqXG4gICAqIE1ldGFkYXRhIGFwcGxpZWQgdG8gYWxsIENvZGVCdWlsZCBhY3Rpb25zLlxuICAgKiBNZXJnZWQgd2l0aCBzdGVwLWxldmVsIG1ldGFkYXRhOyBzdGVwLWxldmVsIGtleXMgdGFrZSBwcmVjZWRlbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBNZXRhRGF0YVR5cGU7XG59XG4iXX0=
|
package/lib/core/network.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ISecurityGroup, IVpc, SubnetSelection } from 'aws-cdk-lib/aws-ec2';
|
|
1
|
+
import { type ISecurityGroup, type IVpc, type SubnetSelection } from 'aws-cdk-lib/aws-ec2';
|
|
2
2
|
import { Construct } from 'constructs';
|
|
3
|
-
import { UniqueId } from './id-generator';
|
|
4
|
-
import type { NetworkConfig } from './network-types';
|
|
3
|
+
import { UniqueId } from './id-generator.js';
|
|
4
|
+
import type { NetworkConfig } from './network-types.js';
|
|
5
5
|
/** Resolved CDK network props ready to spread into CodeBuildStep or codeBuildDefaults */
|
|
6
6
|
export interface ResolvedNetwork {
|
|
7
7
|
vpc: IVpc;
|
package/lib/core/network.js
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const pipeline_helpers_1 = require("./pipeline-helpers");
|
|
3
|
+
import { SecurityGroup, Subnet, SubnetType, Vpc } from 'aws-cdk-lib/aws-ec2';
|
|
4
|
+
import { Construct } from 'constructs';
|
|
5
|
+
import { UniqueId } from './id-generator.js';
|
|
6
|
+
import { unwrapSecret } from './pipeline-helpers.js';
|
|
9
7
|
/**
|
|
10
8
|
* Mapping from string subnet type names to CDK SubnetType enum values
|
|
11
9
|
*/
|
|
12
10
|
const SUBNET_TYPE_MAP = {
|
|
13
|
-
PRIVATE_WITH_EGRESS:
|
|
14
|
-
PRIVATE_WITH_NAT:
|
|
15
|
-
PRIVATE_ISOLATED:
|
|
16
|
-
PUBLIC:
|
|
11
|
+
PRIVATE_WITH_EGRESS: SubnetType.PRIVATE_WITH_EGRESS,
|
|
12
|
+
PRIVATE_WITH_NAT: SubnetType.PRIVATE_WITH_NAT,
|
|
13
|
+
PRIVATE_ISOLATED: SubnetType.PRIVATE_ISOLATED,
|
|
14
|
+
PUBLIC: SubnetType.PUBLIC,
|
|
17
15
|
};
|
|
18
16
|
const DEFAULT_SUBNET_TYPE = 'PRIVATE_WITH_EGRESS';
|
|
19
17
|
/**
|
|
@@ -28,7 +26,7 @@ const DEFAULT_SUBNET_TYPE = 'PRIVATE_WITH_EGRESS';
|
|
|
28
26
|
* PIPELINE_SUBNET_IDS comma-separated private subnet IDs (required)
|
|
29
27
|
* PIPELINE_SECURITY_GROUP_IDS comma-separated SG IDs (optional)
|
|
30
28
|
*/
|
|
31
|
-
function networkConfigFromEnv() {
|
|
29
|
+
export function networkConfigFromEnv() {
|
|
32
30
|
const vpcId = (process.env.PIPELINE_VPC_ID || '').trim();
|
|
33
31
|
const subnetIds = (process.env.PIPELINE_SUBNET_IDS || '')
|
|
34
32
|
.split(',').map((s) => s.trim()).filter(Boolean);
|
|
@@ -54,23 +52,23 @@ function networkConfigFromEnv() {
|
|
|
54
52
|
* @param network - Network configuration to resolve
|
|
55
53
|
* @returns Resolved network props ready to spread into CDK constructs
|
|
56
54
|
*/
|
|
57
|
-
function resolveNetwork(scope, id, network) {
|
|
55
|
+
export function resolveNetwork(scope, id, network) {
|
|
58
56
|
switch (network.type) {
|
|
59
57
|
case 'subnetIds': {
|
|
60
|
-
const vpc =
|
|
61
|
-
vpcId:
|
|
58
|
+
const vpc = Vpc.fromLookup(scope, id.generate('network:vpc'), {
|
|
59
|
+
vpcId: unwrapSecret(network.options.vpcId),
|
|
62
60
|
});
|
|
63
|
-
const subnets = network.options.subnetIds.map((subnetId) =>
|
|
61
|
+
const subnets = network.options.subnetIds.map((subnetId) => Subnet.fromSubnetId(scope, id.generate('network:subnet'), subnetId));
|
|
64
62
|
return withSecurityGroups({ vpc, subnetSelection: { subnets } }, scope, id, network.options.securityGroupIds);
|
|
65
63
|
}
|
|
66
64
|
case 'vpcId': {
|
|
67
|
-
const vpc =
|
|
68
|
-
vpcId:
|
|
65
|
+
const vpc = Vpc.fromLookup(scope, id.generate('network:vpc'), {
|
|
66
|
+
vpcId: unwrapSecret(network.options.vpcId),
|
|
69
67
|
});
|
|
70
68
|
return withSecurityGroups({ vpc, subnetSelection: resolveSubnetSelection(network.options) }, scope, id, network.options.securityGroupIds);
|
|
71
69
|
}
|
|
72
70
|
case 'vpcLookup': {
|
|
73
|
-
const vpc =
|
|
71
|
+
const vpc = Vpc.fromLookup(scope, id.generate('network:vpc'), {
|
|
74
72
|
tags: network.options.tags,
|
|
75
73
|
...(network.options.vpcName && { vpcName: network.options.vpcName }),
|
|
76
74
|
...(network.options.region && { region: network.options.region }),
|
|
@@ -109,6 +107,6 @@ function resolveSecurityGroups(scope, id, securityGroupIds) {
|
|
|
109
107
|
if (!securityGroupIds?.length) {
|
|
110
108
|
return undefined;
|
|
111
109
|
}
|
|
112
|
-
return securityGroupIds.map((sgId) =>
|
|
110
|
+
return securityGroupIds.map((sgId) => SecurityGroup.fromSecurityGroupId(scope, id.generate('network:sg'), sgId));
|
|
113
111
|
}
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL25ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBMEN0QyxvREFpQkM7QUFXRCx3Q0FxREM7QUF6SEQsaURBQW9IO0FBT3BILHlEQUFrRDtBQUVsRDs7R0FFRztBQUNILE1BQU0sZUFBZSxHQUF1QztJQUMxRCxtQkFBbUIsRUFBRSxvQkFBVSxDQUFDLG1CQUFtQjtJQUNuRCxnQkFBZ0IsRUFBRSxvQkFBVSxDQUFDLGdCQUFnQjtJQUM3QyxnQkFBZ0IsRUFBRSxvQkFBVSxDQUFDLGdCQUFnQjtJQUM3QyxNQUFNLEVBQUUsb0JBQVUsQ0FBQyxNQUFNO0NBQzFCLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFtQixxQkFBcUIsQ0FBQztBQVNsRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQWdCLG9CQUFvQjtJQUNsQyxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pELE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7U0FDdEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELElBQUksQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFdkQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLElBQUksRUFBRSxDQUFDO1NBQ3JFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFH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QUNwRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBJU2VjdXJpdHlHcm91cCwgSVZwYywgU2VjdXJpdHlHcm91cCwgU3VibmV0LCBTdWJuZXRTZWxlY3Rpb24sIFN1Ym5ldFR5cGUsIFZwYyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBVbmlxdWVJZCB9IGZyb20gJy4vaWQtZ2VuZXJhdG9yJztcbmltcG9ydCB0eXBlIHtcbiAgTmV0d29ya0NvbmZpZyxcbiAgU3VibmV0VHlwZU5hbWUsXG59IGZyb20gJy4vbmV0d29yay10eXBlcyc7XG5pbXBvcnQgeyB1bndyYXBTZWNyZXQgfSBmcm9tICcuL3BpcGVsaW5lLWhlbHBlcnMnO1xuXG4vKipcbiAqIE1hcHBpbmcgZnJvbSBzdHJpbmcgc3VibmV0IHR5cGUgbmFtZXMgdG8gQ0RLIFN1Ym5ldFR5cGUgZW51bSB2YWx1ZXNcbiAqL1xuY29uc3QgU1VCTkVUX1RZUEVfTUFQOiBSZWNvcmQ8U3VibmV0VHlwZU5hbWUsIFN1Ym5ldFR5cGU+ID0ge1xuICBQUklWQVRFX1dJVEhfRUdSRVNTOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gIFBSSVZBVEVfV0lUSF9OQVQ6IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX05BVCxcbiAgUFJJVkFURV9JU09MQVRFRDogU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVELFxuICBQVUJMSUM6IFN1Ym5ldFR5cGUuUFVCTElDLFxufTtcblxuY29uc3QgREVGQVVMVF9TVUJORVRfVFlQRTogU3VibmV0VHlwZU5hbWUgPSAnUFJJVkFURV9XSVRIX0VHUkVTUyc7XG5cbi8qKiBSZXNvbHZlZCBDREsgbmV0d29yayBwcm9wcyByZWFkeSB0byBzcHJlYWQgaW50byBDb2RlQnVpbGRTdGVwIG9yIGNvZGVCdWlsZERlZmF1bHRzICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkTmV0d29yayB7XG4gIHZwYzogSVZwYztcbiAgc3VibmV0U2VsZWN0aW9uOiBTdWJuZXRTZWxlY3Rpb247XG4gIHNlY3VyaXR5R3JvdXBzPzogSVNlY3VyaXR5R3JvdXBbXTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIE5ldHdvcmtDb25maWcgZnJvbSBlbnZpcm9ubWVudCwgZm9yIGRlcGxveW1lbnRzIHRoYXQgd2FudCBFVkVSWVxuICogc3ludGhlc2l6ZWQgcGlwZWxpbmUncyBDb2RlQnVpbGQgdG8gcnVuIGluc2lkZSBhIFZQQyAodGhlIEVDMiBcImludGVybmFsXCIgL1xuICogaW5zaWRlLUFXUy1vbmx5IG1vZGUpIHdpdGhvdXQgcGVyLXBpcGVsaW5lIG5ldHdvcmsgY29uZmlnLiBSZXR1cm5zIHVuZGVmaW5lZFxuICogd2hlbiB0aGUgZW52IGlzbid0IHNldCDigJQgcHVibGljL2RlZmF1bHQgZGVwbG95bWVudHMgcnVuIENvZGVCdWlsZCBpbiB0aGVcbiAqIEFXUy1tYW5hZ2VkIG5ldHdvcmsgYXMgYmVmb3JlLlxuICpcbiAqIEVudiAoc2V0IG9uIHRoZSBwaXBlbGluZSBzZXJ2aWNlIGluIGludGVybmFsIG1vZGUpOlxuICogICBQSVBFTElORV9WUENfSUQgICAgICAgICAgICAgIFZQQyB0aGUgQ29kZUJ1aWxkIHByb2plY3RzIGpvaW4gKHJlcXVpcmVkKVxuICogICBQSVBFTElORV9TVUJORVRfSURTICAgICAgICAgIGNvbW1hLXNlcGFyYXRlZCBwcml2YXRlIHN1Ym5ldCBJRHMgKHJlcXVpcmVkKVxuICogICBQSVBFTElORV9TRUNVUklUWV9HUk9VUF9JRFMgIGNvbW1hLXNlcGFyYXRlZCBTRyBJRHMgKG9wdGlvbmFsKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV0d29ya0NvbmZpZ0Zyb21FbnYoKTogTmV0d29ya0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHZwY0lkID0gKHByb2Nlc3MuZW52LlBJUEVMSU5FX1ZQQ19JRCB8fCAnJykudHJpbSgpO1xuICBjb25zdCBzdWJuZXRJZHMgPSAocHJvY2Vzcy5lbnYuUElQRUxJTkVfU1VCTkVUX0lEUyB8fCAnJylcbiAgICAuc3BsaXQoJywnKS5tYXAoKHMpID0+IHMudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik7XG4gIGlmICghdnBjSWQgfHwgc3VibmV0SWRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBzZWN1cml0eUdyb3VwSWRzID0gKHByb2Nlc3MuZW52LlBJUEVMSU5FX1NFQ1VSSVRZX0dST1VQX0lEUyB8fCAnJylcbiAgICAuc3BsaXQoJywnKS5tYXAoKHMpID0+IHMudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnc3VibmV0SWRzJyxcbiAgICBvcHRpb25zOiB7XG4gICAgICB2cGNJZCxcbiAgICAgIHN1Ym5ldElkcyxcbiAgICAgIC4uLihzZWN1cml0eUdyb3VwSWRzLmxlbmd0aCA+IDAgJiYgeyBzZWN1cml0eUdyb3VwSWRzIH0pLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIE5ldHdvcmtDb25maWcgaW50byBDREsgcHJvcHMgZm9yIENvZGVCdWlsZFN0ZXAgb3IgY29kZUJ1aWxkRGVmYXVsdHMuXG4gKiBVc2VzIGRpc2NyaW1pbmF0ZWQgdW5pb24gbmFycm93aW5nIHRvIGRlbGVnYXRlIHRvIHRoZSBhcHByb3ByaWF0ZSBDREsgbG9va3Vwcy5cbiAqXG4gKiBAcGFyYW0gc2NvcGUgLSBDREsgY29uc3RydWN0IHNjb3BlXG4gKiBAcGFyYW0gaWQgLSBVbmlxdWVJZCBpbnN0YW5jZSBmb3IgZ2VuZXJhdGluZyB1bmlxdWUgY29uc3RydWN0IElEc1xuICogQHBhcmFtIG5ldHdvcmsgLSBOZXR3b3JrIGNvbmZpZ3VyYXRpb24gdG8gcmVzb2x2ZVxuICogQHJldHVybnMgUmVzb2x2ZWQgbmV0d29yayBwcm9wcyByZWFkeSB0byBzcHJlYWQgaW50byBDREsgY29uc3RydWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU5ldHdvcmsoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBVbmlxdWVJZCxcbiAgbmV0d29yazogTmV0d29ya0NvbmZpZyxcbik6IFJlc29sdmVkTmV0d29yayB7XG4gIHN3aXRjaCAobmV0d29yay50eXBlKSB7XG4gICAgY2FzZSAnc3VibmV0SWRzJzoge1xuICAgICAgY29uc3QgdnBjID0gVnBjLmZyb21Mb29rdXAoc2NvcGUsIGlkLmdlbmVyYXRlKCduZXR3b3JrOnZwYycpLCB7XG4gICAgICAgIHZwY0lkOiB1bndyYXBTZWNyZXQobmV0d29yay5vcHRpb25zLnZwY0lkKSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzdWJuZXRzID0gbmV0d29yay5vcHRpb25zLnN1Ym5ldElkcy5tYXAoXG4gICAgICAgIChzdWJuZXRJZCkgPT4gU3VibmV0LmZyb21TdWJuZXRJZChzY29wZSwgaWQuZ2VuZXJhdGUoJ25ldHdvcms6c3VibmV0JyksIHN1Ym5ldElkKSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB3aXRoU2VjdXJpdHlHcm91cHMoXG4gICAgICAgIHsgdnBjLCBzdWJuZXRTZWxlY3Rpb246IHsgc3VibmV0cyB9IH0sXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBpZCxcbiAgICAgICAgbmV0d29yay5vcHRpb25zLnNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICApO1xuICAgIH1cbiAgICBjYXNlICd2cGNJZCc6IHtcbiAgICAgIGNvbnN0IHZwYyA9IFZwYy5mcm9tTG9va3VwKHNjb3BlLCBpZC5nZW5lcmF0ZSgnbmV0d29yazp2cGMnKSwge1xuICAgICAgICB2cGNJZDogdW53cmFwU2VjcmV0KG5ldHdvcmsub3B0aW9ucy52cGNJZCksXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHdpdGhTZWN1cml0eUdyb3VwcyhcbiAgICAgICAgeyB2cGMsIHN1Ym5ldFNlbGVjdGlvbjogcmVzb2x2ZVN1Ym5ldFNlbGVjdGlvbihuZXR3b3JrLm9wdGlvbnMpIH0sXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBpZCxcbiAgICAgICAgbmV0d29yay5vcHRpb25zLnNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICApO1xuICAgIH1cbiAgICBjYXNlICd2cGNMb29rdXAnOiB7XG4gICAgICBjb25zdCB2cGMgPSBWcGMuZnJvbUxvb2t1cChzY29wZSwgaWQuZ2VuZXJhdGUoJ25ldHdvcms6dnBjJyksIHtcbiAgICAgICAgdGFnczogbmV0d29yay5vcHRpb25zLnRhZ3MsXG4gICAgICAgIC4uLihuZXR3b3JrLm9wdGlvbnMudnBjTmFtZSAmJiB7IHZwY05hbWU6IG5ldHdvcmsub3B0aW9ucy52cGNOYW1lIH0pLFxuICAgICAgICAuLi4obmV0d29yay5vcHRpb25zLnJlZ2lvbiAmJiB7IHJlZ2lvbjogbmV0d29yay5vcHRpb25zLnJlZ2lvbiB9KSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gd2l0aFNlY3VyaXR5R3JvdXBzKFxuICAgICAgICB7IHZwYywgc3VibmV0U2VsZWN0aW9uOiByZXNvbHZlU3VibmV0U2VsZWN0aW9uKG5ldHdvcmsub3B0aW9ucykgfSxcbiAgICAgICAgc2NvcGUsXG4gICAgICAgIGlkLFxuICAgICAgICBuZXR3b3JrLm9wdGlvbnMuc2VjdXJpdHlHcm91cElkcyxcbiAgICAgICk7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGNvbnN0IF9leGhhdXN0aXZlOiBuZXZlciA9IG5ldHdvcms7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbmV0d29yayBjb25maWcgdHlwZTogJHsoX2V4aGF1c3RpdmUgYXMgTmV0d29ya0NvbmZpZykudHlwZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBdHRhY2ggcmVzb2x2ZWQgc2VjdXJpdHkgZ3JvdXBzIHRvIGEgbmV0d29yayByZXN1bHQgd2hlbiBwcmVzZW50LlxuICovXG5mdW5jdGlvbiB3aXRoU2VjdXJpdHlHcm91cHMoXG4gIHJlc3VsdDogT21pdDxSZXNvbHZlZE5ldHdvcmssICdzZWN1cml0eUdyb3Vwcyc+LFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogVW5pcXVlSWQsXG4gIHNlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXSxcbik6IFJlc29sdmVkTmV0d29yayB7XG4gIGNvbnN0IHNlY3VyaXR5R3JvdXBzID0gcmVzb2x2ZVNlY3VyaXR5R3JvdXBzKHNjb3BlLCBpZCwgc2VjdXJpdHlHcm91cElkcyk7XG4gIHJldHVybiBzZWN1cml0eUdyb3VwcyA/IHsgLi4ucmVzdWx0LCBzZWN1cml0eUdyb3VwcyB9IDogcmVzdWx0O1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgU3VibmV0U2VsZWN0aW9uIGZyb20gb3B0aW9ucyB0aGF0IGNhcnJ5IHN1Ym5ldFR5cGUsIGF2YWlsYWJpbGl0eVpvbmVzLFxuICogYW5kIHN1Ym5ldEdyb3VwTmFtZS4gU2hhcmVkIGJ5IHZwY0lkIGFuZCB2cGNMb29rdXAgYnJhbmNoZXMuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTdWJuZXRTZWxlY3Rpb24oXG4gIG9wdGlvbnM6IHsgc3VibmV0VHlwZT86IFN1Ym5ldFR5cGVOYW1lOyBhdmFpbGFiaWxpdHlab25lcz86IHN0cmluZ1tdOyBzdWJuZXRHcm91cE5hbWU/OiBzdHJpbmcgfSxcbik6IFN1Ym5ldFNlbGVjdGlvbiB7XG4gIHJldHVybiB7XG4gICAgc3VibmV0VHlwZTogU1VCTkVUX1RZUEVfTUFQW29wdGlvbnMuc3VibmV0VHlwZSA/PyBERUZBVUxUX1NVQk5FVF9UWVBFXSxcbiAgICAuLi4ob3B0aW9ucy5hdmFpbGFiaWxpdHlab25lcyAmJiB7IGF2YWlsYWJpbGl0eVpvbmVzOiBvcHRpb25zLmF2YWlsYWJpbGl0eVpvbmVzIH0pLFxuICAgIC4uLihvcHRpb25zLnN1Ym5ldEdyb3VwTmFtZSAmJiB7IHN1Ym5ldEdyb3VwTmFtZTogb3B0aW9ucy5zdWJuZXRHcm91cE5hbWUgfSksXG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBzZWN1cml0eSBncm91cCBJRHMgaW50byBDREsgc2VjdXJpdHkgZ3JvdXAgcmVmZXJlbmNlcy5cbiAqIFJldHVybnMgdW5kZWZpbmVkIHdoZW4gbm8gSURzIGFyZSBwcm92aWRlZC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNlY3VyaXR5R3JvdXBzKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogVW5pcXVlSWQsXG4gIHNlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXSxcbik6IElTZWN1cml0eUdyb3VwW10gfCB1bmRlZmluZWQge1xuICBpZiAoIXNlY3VyaXR5R3JvdXBJZHM/Lmxlbmd0aCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIHNlY3VyaXR5R3JvdXBJZHMubWFwKFxuICAgIChzZ0lkKSA9PiBTZWN1cml0eUdyb3VwLmZyb21TZWN1cml0eUdyb3VwSWQoc2NvcGUsIGlkLmdlbmVyYXRlKCduZXR3b3JrOnNnJyksIHNnSWQpLFxuICApO1xufVxuIl19
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL25ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQWtDLGFBQWEsRUFBRSxNQUFNLEVBQXdCLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuSSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUs3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQ7O0dBRUc7QUFDSCxNQUFNLGVBQWUsR0FBdUM7SUFDMUQsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLG1CQUFtQjtJQUNuRCxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsZ0JBQWdCO0lBQzdDLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxnQkFBZ0I7SUFDN0MsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO0NBQzFCLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFtQixxQkFBcUIsQ0FBQztBQVNsRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6RCxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDO1NBQ3RELEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRCxJQUFJLENBQUMsS0FBSyxJQUFJLFNB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QztJQUNELE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUN6QixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUNwRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyB0eXBlIElTZWN1cml0eUdyb3VwLCB0eXBlIElWcGMsIFNlY3VyaXR5R3JvdXAsIFN1Ym5ldCwgdHlwZSBTdWJuZXRTZWxlY3Rpb24sIFN1Ym5ldFR5cGUsIFZwYyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBVbmlxdWVJZCB9IGZyb20gJy4vaWQtZ2VuZXJhdG9yLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgTmV0d29ya0NvbmZpZyxcbiAgU3VibmV0VHlwZU5hbWUsXG59IGZyb20gJy4vbmV0d29yay10eXBlcy5qcyc7XG5pbXBvcnQgeyB1bndyYXBTZWNyZXQgfSBmcm9tICcuL3BpcGVsaW5lLWhlbHBlcnMuanMnO1xuXG4vKipcbiAqIE1hcHBpbmcgZnJvbSBzdHJpbmcgc3VibmV0IHR5cGUgbmFtZXMgdG8gQ0RLIFN1Ym5ldFR5cGUgZW51bSB2YWx1ZXNcbiAqL1xuY29uc3QgU1VCTkVUX1RZUEVfTUFQOiBSZWNvcmQ8U3VibmV0VHlwZU5hbWUsIFN1Ym5ldFR5cGU+ID0ge1xuICBQUklWQVRFX1dJVEhfRUdSRVNTOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gIFBSSVZBVEVfV0lUSF9OQVQ6IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX05BVCxcbiAgUFJJVkFURV9JU09MQVRFRDogU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVELFxuICBQVUJMSUM6IFN1Ym5ldFR5cGUuUFVCTElDLFxufTtcblxuY29uc3QgREVGQVVMVF9TVUJORVRfVFlQRTogU3VibmV0VHlwZU5hbWUgPSAnUFJJVkFURV9XSVRIX0VHUkVTUyc7XG5cbi8qKiBSZXNvbHZlZCBDREsgbmV0d29yayBwcm9wcyByZWFkeSB0byBzcHJlYWQgaW50byBDb2RlQnVpbGRTdGVwIG9yIGNvZGVCdWlsZERlZmF1bHRzICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkTmV0d29yayB7XG4gIHZwYzogSVZwYztcbiAgc3VibmV0U2VsZWN0aW9uOiBTdWJuZXRTZWxlY3Rpb247XG4gIHNlY3VyaXR5R3JvdXBzPzogSVNlY3VyaXR5R3JvdXBbXTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIE5ldHdvcmtDb25maWcgZnJvbSBlbnZpcm9ubWVudCwgZm9yIGRlcGxveW1lbnRzIHRoYXQgd2FudCBFVkVSWVxuICogc3ludGhlc2l6ZWQgcGlwZWxpbmUncyBDb2RlQnVpbGQgdG8gcnVuIGluc2lkZSBhIFZQQyAodGhlIEVDMiBcImludGVybmFsXCIgL1xuICogaW5zaWRlLUFXUy1vbmx5IG1vZGUpIHdpdGhvdXQgcGVyLXBpcGVsaW5lIG5ldHdvcmsgY29uZmlnLiBSZXR1cm5zIHVuZGVmaW5lZFxuICogd2hlbiB0aGUgZW52IGlzbid0IHNldCDigJQgcHVibGljL2RlZmF1bHQgZGVwbG95bWVudHMgcnVuIENvZGVCdWlsZCBpbiB0aGVcbiAqIEFXUy1tYW5hZ2VkIG5ldHdvcmsgYXMgYmVmb3JlLlxuICpcbiAqIEVudiAoc2V0IG9uIHRoZSBwaXBlbGluZSBzZXJ2aWNlIGluIGludGVybmFsIG1vZGUpOlxuICogICBQSVBFTElORV9WUENfSUQgICAgICAgICAgICAgIFZQQyB0aGUgQ29kZUJ1aWxkIHByb2plY3RzIGpvaW4gKHJlcXVpcmVkKVxuICogICBQSVBFTElORV9TVUJORVRfSURTICAgICAgICAgIGNvbW1hLXNlcGFyYXRlZCBwcml2YXRlIHN1Ym5ldCBJRHMgKHJlcXVpcmVkKVxuICogICBQSVBFTElORV9TRUNVUklUWV9HUk9VUF9JRFMgIGNvbW1hLXNlcGFyYXRlZCBTRyBJRHMgKG9wdGlvbmFsKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV0d29ya0NvbmZpZ0Zyb21FbnYoKTogTmV0d29ya0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHZwY0lkID0gKHByb2Nlc3MuZW52LlBJUEVMSU5FX1ZQQ19JRCB8fCAnJykudHJpbSgpO1xuICBjb25zdCBzdWJuZXRJZHMgPSAocHJvY2Vzcy5lbnYuUElQRUxJTkVfU1VCTkVUX0lEUyB8fCAnJylcbiAgICAuc3BsaXQoJywnKS5tYXAoKHMpID0+IHMudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik7XG4gIGlmICghdnBjSWQgfHwgc3VibmV0SWRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBzZWN1cml0eUdyb3VwSWRzID0gKHByb2Nlc3MuZW52LlBJUEVMSU5FX1NFQ1VSSVRZX0dST1VQX0lEUyB8fCAnJylcbiAgICAuc3BsaXQoJywnKS5tYXAoKHMpID0+IHMudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnc3VibmV0SWRzJyxcbiAgICBvcHRpb25zOiB7XG4gICAgICB2cGNJZCxcbiAgICAgIHN1Ym5ldElkcyxcbiAgICAgIC4uLihzZWN1cml0eUdyb3VwSWRzLmxlbmd0aCA+IDAgJiYgeyBzZWN1cml0eUdyb3VwSWRzIH0pLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIE5ldHdvcmtDb25maWcgaW50byBDREsgcHJvcHMgZm9yIENvZGVCdWlsZFN0ZXAgb3IgY29kZUJ1aWxkRGVmYXVsdHMuXG4gKiBVc2VzIGRpc2NyaW1pbmF0ZWQgdW5pb24gbmFycm93aW5nIHRvIGRlbGVnYXRlIHRvIHRoZSBhcHByb3ByaWF0ZSBDREsgbG9va3Vwcy5cbiAqXG4gKiBAcGFyYW0gc2NvcGUgLSBDREsgY29uc3RydWN0IHNjb3BlXG4gKiBAcGFyYW0gaWQgLSBVbmlxdWVJZCBpbnN0YW5jZSBmb3IgZ2VuZXJhdGluZyB1bmlxdWUgY29uc3RydWN0IElEc1xuICogQHBhcmFtIG5ldHdvcmsgLSBOZXR3b3JrIGNvbmZpZ3VyYXRpb24gdG8gcmVzb2x2ZVxuICogQHJldHVybnMgUmVzb2x2ZWQgbmV0d29yayBwcm9wcyByZWFkeSB0byBzcHJlYWQgaW50byBDREsgY29uc3RydWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU5ldHdvcmsoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBVbmlxdWVJZCxcbiAgbmV0d29yazogTmV0d29ya0NvbmZpZyxcbik6IFJlc29sdmVkTmV0d29yayB7XG4gIHN3aXRjaCAobmV0d29yay50eXBlKSB7XG4gICAgY2FzZSAnc3VibmV0SWRzJzoge1xuICAgICAgY29uc3QgdnBjID0gVnBjLmZyb21Mb29rdXAoc2NvcGUsIGlkLmdlbmVyYXRlKCduZXR3b3JrOnZwYycpLCB7XG4gICAgICAgIHZwY0lkOiB1bndyYXBTZWNyZXQobmV0d29yay5vcHRpb25zLnZwY0lkKSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzdWJuZXRzID0gbmV0d29yay5vcHRpb25zLnN1Ym5ldElkcy5tYXAoXG4gICAgICAgIChzdWJuZXRJZCkgPT4gU3VibmV0LmZyb21TdWJuZXRJZChzY29wZSwgaWQuZ2VuZXJhdGUoJ25ldHdvcms6c3VibmV0JyksIHN1Ym5ldElkKSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB3aXRoU2VjdXJpdHlHcm91cHMoXG4gICAgICAgIHsgdnBjLCBzdWJuZXRTZWxlY3Rpb246IHsgc3VibmV0cyB9IH0sXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBpZCxcbiAgICAgICAgbmV0d29yay5vcHRpb25zLnNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICApO1xuICAgIH1cbiAgICBjYXNlICd2cGNJZCc6IHtcbiAgICAgIGNvbnN0IHZwYyA9IFZwYy5mcm9tTG9va3VwKHNjb3BlLCBpZC5nZW5lcmF0ZSgnbmV0d29yazp2cGMnKSwge1xuICAgICAgICB2cGNJZDogdW53cmFwU2VjcmV0KG5ldHdvcmsub3B0aW9ucy52cGNJZCksXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHdpdGhTZWN1cml0eUdyb3VwcyhcbiAgICAgICAgeyB2cGMsIHN1Ym5ldFNlbGVjdGlvbjogcmVzb2x2ZVN1Ym5ldFNlbGVjdGlvbihuZXR3b3JrLm9wdGlvbnMpIH0sXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBpZCxcbiAgICAgICAgbmV0d29yay5vcHRpb25zLnNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICApO1xuICAgIH1cbiAgICBjYXNlICd2cGNMb29rdXAnOiB7XG4gICAgICBjb25zdCB2cGMgPSBWcGMuZnJvbUxvb2t1cChzY29wZSwgaWQuZ2VuZXJhdGUoJ25ldHdvcms6dnBjJyksIHtcbiAgICAgICAgdGFnczogbmV0d29yay5vcHRpb25zLnRhZ3MsXG4gICAgICAgIC4uLihuZXR3b3JrLm9wdGlvbnMudnBjTmFtZSAmJiB7IHZwY05hbWU6IG5ldHdvcmsub3B0aW9ucy52cGNOYW1lIH0pLFxuICAgICAgICAuLi4obmV0d29yay5vcHRpb25zLnJlZ2lvbiAmJiB7IHJlZ2lvbjogbmV0d29yay5vcHRpb25zLnJlZ2lvbiB9KSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gd2l0aFNlY3VyaXR5R3JvdXBzKFxuICAgICAgICB7IHZwYywgc3VibmV0U2VsZWN0aW9uOiByZXNvbHZlU3VibmV0U2VsZWN0aW9uKG5ldHdvcmsub3B0aW9ucykgfSxcbiAgICAgICAgc2NvcGUsXG4gICAgICAgIGlkLFxuICAgICAgICBuZXR3b3JrLm9wdGlvbnMuc2VjdXJpdHlHcm91cElkcyxcbiAgICAgICk7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGNvbnN0IF9leGhhdXN0aXZlOiBuZXZlciA9IG5ldHdvcms7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbmV0d29yayBjb25maWcgdHlwZTogJHsoX2V4aGF1c3RpdmUgYXMgTmV0d29ya0NvbmZpZykudHlwZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBdHRhY2ggcmVzb2x2ZWQgc2VjdXJpdHkgZ3JvdXBzIHRvIGEgbmV0d29yayByZXN1bHQgd2hlbiBwcmVzZW50LlxuICovXG5mdW5jdGlvbiB3aXRoU2VjdXJpdHlHcm91cHMoXG4gIHJlc3VsdDogT21pdDxSZXNvbHZlZE5ldHdvcmssICdzZWN1cml0eUdyb3Vwcyc+LFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogVW5pcXVlSWQsXG4gIHNlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXSxcbik6IFJlc29sdmVkTmV0d29yayB7XG4gIGNvbnN0IHNlY3VyaXR5R3JvdXBzID0gcmVzb2x2ZVNlY3VyaXR5R3JvdXBzKHNjb3BlLCBpZCwgc2VjdXJpdHlHcm91cElkcyk7XG4gIHJldHVybiBzZWN1cml0eUdyb3VwcyA/IHsgLi4ucmVzdWx0LCBzZWN1cml0eUdyb3VwcyB9IDogcmVzdWx0O1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgU3VibmV0U2VsZWN0aW9uIGZyb20gb3B0aW9ucyB0aGF0IGNhcnJ5IHN1Ym5ldFR5cGUsIGF2YWlsYWJpbGl0eVpvbmVzLFxuICogYW5kIHN1Ym5ldEdyb3VwTmFtZS4gU2hhcmVkIGJ5IHZwY0lkIGFuZCB2cGNMb29rdXAgYnJhbmNoZXMuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTdWJuZXRTZWxlY3Rpb24oXG4gIG9wdGlvbnM6IHsgc3VibmV0VHlwZT86IFN1Ym5ldFR5cGVOYW1lOyBhdmFpbGFiaWxpdHlab25lcz86IHN0cmluZ1tdOyBzdWJuZXRHcm91cE5hbWU/OiBzdHJpbmcgfSxcbik6IFN1Ym5ldFNlbGVjdGlvbiB7XG4gIHJldHVybiB7XG4gICAgc3VibmV0VHlwZTogU1VCTkVUX1RZUEVfTUFQW29wdGlvbnMuc3VibmV0VHlwZSA/PyBERUZBVUxUX1NVQk5FVF9UWVBFXSxcbiAgICAuLi4ob3B0aW9ucy5hdmFpbGFiaWxpdHlab25lcyAmJiB7IGF2YWlsYWJpbGl0eVpvbmVzOiBvcHRpb25zLmF2YWlsYWJpbGl0eVpvbmVzIH0pLFxuICAgIC4uLihvcHRpb25zLnN1Ym5ldEdyb3VwTmFtZSAmJiB7IHN1Ym5ldEdyb3VwTmFtZTogb3B0aW9ucy5zdWJuZXRHcm91cE5hbWUgfSksXG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBzZWN1cml0eSBncm91cCBJRHMgaW50byBDREsgc2VjdXJpdHkgZ3JvdXAgcmVmZXJlbmNlcy5cbiAqIFJldHVybnMgdW5kZWZpbmVkIHdoZW4gbm8gSURzIGFyZSBwcm92aWRlZC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNlY3VyaXR5R3JvdXBzKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogVW5pcXVlSWQsXG4gIHNlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXSxcbik6IElTZWN1cml0eUdyb3VwW10gfCB1bmRlZmluZWQge1xuICBpZiAoIXNlY3VyaXR5R3JvdXBJZHM/Lmxlbmd0aCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIHNlY3VyaXR5R3JvdXBJZHMubWFwKFxuICAgIChzZ0lkKSA9PiBTZWN1cml0eUdyb3VwLmZyb21TZWN1cml0eUdyb3VwSWQoc2NvcGUsIGlkLmdlbmVyYXRlKCduZXR3b3JrOnNnJyksIHNnSWQpLFxuICApO1xufVxuIl19
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Plugin } from '@pipeline-builder/pipeline-data';
|
|
2
2
|
import { SecretValue } from 'aws-cdk-lib';
|
|
3
|
-
import { ComputeType as CDKComputeType, IBuildImage } from 'aws-cdk-lib/aws-codebuild';
|
|
3
|
+
import { ComputeType as CDKComputeType, type IBuildImage } from 'aws-cdk-lib/aws-codebuild';
|
|
4
4
|
import { CodeBuildStep, ManualApprovalStep, ShellStep } from 'aws-cdk-lib/pipelines';
|
|
5
5
|
import type { Construct } from 'constructs';
|
|
6
|
-
import { MetaDataType } from './pipeline-types';
|
|
7
|
-
import type { CodeBuildStepOptions } from '../pipeline/step-types';
|
|
6
|
+
import { type MetaDataType } from './pipeline-types.js';
|
|
7
|
+
import type { CodeBuildStepOptions } from '../pipeline/step-types.js';
|
|
8
8
|
/**
|
|
9
9
|
* Merge multiple metadata objects into one. Later sources override earlier ones.
|
|
10
10
|
*/
|