@aws-cdk/aws-imagebuilder-alpha 2.229.0-alpha.0 → 2.230.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +4184 -928
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +173 -1
- package/README.md +588 -0
- package/lib/base-image.js +3 -3
- package/lib/component.js +8 -8
- package/lib/container-recipe.js +4 -4
- package/lib/distribution-configuration.js +2 -2
- package/lib/image-pipeline.d.ts +465 -0
- package/lib/image-pipeline.js +469 -0
- package/lib/image-recipe.js +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -1
- package/lib/infrastructure-configuration.d.ts +1 -1
- package/lib/infrastructure-configuration.js +2 -2
- package/lib/lifecycle-policy.d.ts +409 -0
- package/lib/lifecycle-policy.js +459 -0
- package/lib/os-version.js +1 -1
- package/lib/private/image-and-pipeline-props-helper.d.ts +25 -0
- package/lib/private/image-and-pipeline-props-helper.js +67 -0
- package/lib/private/policy-helper.d.ts +20 -0
- package/lib/private/policy-helper.js +420 -0
- package/lib/recipe-base.js +1 -1
- package/lib/workflow.d.ts +63 -0
- package/lib/workflow.js +51 -6
- package/package.json +6 -6
- package/rosetta/default.ts-fixture +37 -2
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
3
|
+
var useValue = arguments.length > 2;
|
|
4
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
5
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
6
|
+
}
|
|
7
|
+
return useValue ? value : void 0;
|
|
8
|
+
};
|
|
9
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
10
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
11
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
12
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
13
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
14
|
+
var _, done = false;
|
|
15
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
16
|
+
var context = {};
|
|
17
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
18
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
19
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
20
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
21
|
+
if (kind === "accessor") {
|
|
22
|
+
if (result === void 0) continue;
|
|
23
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
24
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
25
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
26
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
27
|
+
}
|
|
28
|
+
else if (_ = accept(result)) {
|
|
29
|
+
if (kind === "field") initializers.unshift(_);
|
|
30
|
+
else descriptor[key] = _;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
34
|
+
done = true;
|
|
35
|
+
};
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.ImagePipeline = exports.ImagePipelineStatus = exports.ScheduleStartCondition = void 0;
|
|
38
|
+
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
39
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
40
|
+
const cdk = require("aws-cdk-lib");
|
|
41
|
+
const events = require("aws-cdk-lib/aws-events");
|
|
42
|
+
const iam = require("aws-cdk-lib/aws-iam");
|
|
43
|
+
const aws_imagebuilder_1 = require("aws-cdk-lib/aws-imagebuilder");
|
|
44
|
+
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
45
|
+
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
46
|
+
const infrastructure_configuration_1 = require("./infrastructure-configuration");
|
|
47
|
+
const image_and_pipeline_props_helper_1 = require("./private/image-and-pipeline-props-helper");
|
|
48
|
+
const policy_helper_1 = require("./private/policy-helper");
|
|
49
|
+
const IMAGE_PIPELINE_SYMBOL = Symbol.for('@aws-cdk/aws-imagebuilder-alpha.ImagePipeline');
|
|
50
|
+
/**
|
|
51
|
+
* The start condition for the pipeline, indicating the condition under which a pipeline should be triggered.
|
|
52
|
+
*/
|
|
53
|
+
var ScheduleStartCondition;
|
|
54
|
+
(function (ScheduleStartCondition) {
|
|
55
|
+
/**
|
|
56
|
+
* Indicates to trigger a pipeline whenever its schedule is met
|
|
57
|
+
*/
|
|
58
|
+
ScheduleStartCondition["EXPRESSION_MATCH_ONLY"] = "EXPRESSION_MATCH_ONLY";
|
|
59
|
+
/**
|
|
60
|
+
* Indicates to trigger a pipeline whenever its schedule is met, and there are matching dependency updates available,
|
|
61
|
+
* such as new versions of components or images to use in the pipeline build.
|
|
62
|
+
*/
|
|
63
|
+
ScheduleStartCondition["EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE"] = "EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE";
|
|
64
|
+
})(ScheduleStartCondition || (exports.ScheduleStartCondition = ScheduleStartCondition = {}));
|
|
65
|
+
/**
|
|
66
|
+
* Indicates whether the pipeline is enabled to be triggered by the provided schedule
|
|
67
|
+
*/
|
|
68
|
+
var ImagePipelineStatus;
|
|
69
|
+
(function (ImagePipelineStatus) {
|
|
70
|
+
/**
|
|
71
|
+
* Indicates that the pipeline is enabled for scheduling
|
|
72
|
+
*/
|
|
73
|
+
ImagePipelineStatus["ENABLED"] = "ENABLED";
|
|
74
|
+
/**
|
|
75
|
+
* Indicates that the pipeline is disabled and will not be triggered on the schedule
|
|
76
|
+
*/
|
|
77
|
+
ImagePipelineStatus["DISABLED"] = "DISABLED";
|
|
78
|
+
})(ImagePipelineStatus || (exports.ImagePipelineStatus = ImagePipelineStatus = {}));
|
|
79
|
+
/**
|
|
80
|
+
* A new or imported Image Pipeline
|
|
81
|
+
*/
|
|
82
|
+
class ImagePipelineBase extends cdk.Resource {
|
|
83
|
+
/**
|
|
84
|
+
* Grant custom actions to the given grantee for the image pipeline
|
|
85
|
+
*
|
|
86
|
+
* @param grantee The principal
|
|
87
|
+
* @param actions The list of actions
|
|
88
|
+
*/
|
|
89
|
+
grant(grantee, ...actions) {
|
|
90
|
+
return iam.Grant.addToPrincipal({
|
|
91
|
+
grantee: grantee,
|
|
92
|
+
resourceArns: [this.imagePipelineArn],
|
|
93
|
+
actions: actions,
|
|
94
|
+
scope: this,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Grants the default permissions for building an image to the provided execution role.
|
|
99
|
+
*
|
|
100
|
+
* @param grantee The execution role used for the image build.
|
|
101
|
+
*/
|
|
102
|
+
grantDefaultExecutionRolePermissions(grantee) {
|
|
103
|
+
const policies = (0, policy_helper_1.defaultExecutionRolePolicy)(this);
|
|
104
|
+
return policies.map((policy) => iam.Grant.addToPrincipal({
|
|
105
|
+
grantee: grantee,
|
|
106
|
+
resourceArns: policy.resources,
|
|
107
|
+
actions: policy.actions,
|
|
108
|
+
conditions: policy.conditions,
|
|
109
|
+
scope: this,
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Grant read permissions to the given grantee for the image pipeline
|
|
114
|
+
*
|
|
115
|
+
* @param grantee The principal
|
|
116
|
+
*/
|
|
117
|
+
grantRead(grantee) {
|
|
118
|
+
return this.grant(grantee, 'imagebuilder:GetImagePipeline');
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Grant permissions to the given grantee to start an execution of the image pipeline
|
|
122
|
+
*
|
|
123
|
+
* @param grantee The principal
|
|
124
|
+
*/
|
|
125
|
+
grantStartExecution(grantee) {
|
|
126
|
+
return this.grant(grantee, 'imagebuilder:StartImagePipelineExecution');
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Creates an EventBridge rule for Image Builder events.
|
|
130
|
+
*
|
|
131
|
+
* @param id Unique identifier for the rule
|
|
132
|
+
* @param options Configuration options for the event rule
|
|
133
|
+
*
|
|
134
|
+
* @see https://docs.aws.amazon.com/imagebuilder/latest/userguide/integ-eventbridge.html
|
|
135
|
+
*/
|
|
136
|
+
onEvent(id, options = {}) {
|
|
137
|
+
const rule = new events.Rule(this, id, options);
|
|
138
|
+
rule.addTarget(options.target);
|
|
139
|
+
rule.addEventPattern({
|
|
140
|
+
source: ['aws.imagebuilder'],
|
|
141
|
+
...(options.eventPattern?.resources?.length && { resources: options.eventPattern.resources }),
|
|
142
|
+
...(options.eventPattern?.detailType?.length && { detailType: options.eventPattern.detailType }),
|
|
143
|
+
...(options.eventPattern?.detail !== undefined && { detail: options.eventPattern.detail }),
|
|
144
|
+
});
|
|
145
|
+
return rule;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Creates an EventBridge rule for Image Builder CVE detected events.
|
|
149
|
+
*
|
|
150
|
+
* @param id Unique identifier for the rule
|
|
151
|
+
* @param options Configuration options for the event rule
|
|
152
|
+
*
|
|
153
|
+
* @see https://docs.aws.amazon.com/imagebuilder/latest/userguide/integ-eventbridge.html
|
|
154
|
+
*/
|
|
155
|
+
onCVEDetected(id, options = {}) {
|
|
156
|
+
return this.onEvent(id, {
|
|
157
|
+
...options,
|
|
158
|
+
eventPattern: {
|
|
159
|
+
...options.eventPattern,
|
|
160
|
+
detailType: ['EC2 Image Builder CVE Detected'],
|
|
161
|
+
resources: [this.imagePipelineArn],
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Creates an EventBridge rule for Image Builder image state change events.
|
|
167
|
+
*
|
|
168
|
+
* @param id Unique identifier for the rule
|
|
169
|
+
* @param options Configuration options for the event rule
|
|
170
|
+
*
|
|
171
|
+
* @see https://docs.aws.amazon.com/imagebuilder/latest/userguide/integ-eventbridge.html
|
|
172
|
+
*/
|
|
173
|
+
onImageBuildStateChange(id, options = {}) {
|
|
174
|
+
return this.onEvent(id, {
|
|
175
|
+
...options,
|
|
176
|
+
eventPattern: { ...options.eventPattern, detailType: ['EC2 Image Builder Image State Change'] },
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Creates an EventBridge rule for Image Builder image build completion events.
|
|
181
|
+
*
|
|
182
|
+
* @param id Unique identifier for the rule
|
|
183
|
+
* @param options Configuration options for the event rule
|
|
184
|
+
*
|
|
185
|
+
* @see https://docs.aws.amazon.com/imagebuilder/latest/userguide/integ-eventbridge.html
|
|
186
|
+
*/
|
|
187
|
+
onImageBuildCompleted(id, options = {}) {
|
|
188
|
+
return this.onImageBuildStateChange(id, {
|
|
189
|
+
...options,
|
|
190
|
+
eventPattern: {
|
|
191
|
+
...options.eventPattern,
|
|
192
|
+
detail: { ...options.eventPattern?.detail, state: { status: ['AVAILABLE', 'CANCELLED', 'FAILED'] } },
|
|
193
|
+
},
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Creates an EventBridge rule for Image Builder image build failure events.
|
|
198
|
+
*
|
|
199
|
+
* @param id Unique identifier for the rule
|
|
200
|
+
* @param options Configuration options for the event rule
|
|
201
|
+
*
|
|
202
|
+
* @see https://docs.aws.amazon.com/imagebuilder/latest/userguide/integ-eventbridge.html
|
|
203
|
+
*/
|
|
204
|
+
onImageBuildFailed(id, options = {}) {
|
|
205
|
+
return this.onImageBuildStateChange(id, {
|
|
206
|
+
...options,
|
|
207
|
+
eventPattern: {
|
|
208
|
+
...options.eventPattern,
|
|
209
|
+
detail: { ...options.eventPattern?.detail, state: { status: ['FAILED'] } },
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Creates an EventBridge rule for Image Builder image success events.
|
|
215
|
+
*
|
|
216
|
+
* @param id Unique identifier for the rule
|
|
217
|
+
* @param options Configuration options for the event rule
|
|
218
|
+
*
|
|
219
|
+
* @see https://docs.aws.amazon.com/imagebuilder/latest/userguide/integ-eventbridge.html
|
|
220
|
+
*/
|
|
221
|
+
onImageBuildSucceeded(id, options = {}) {
|
|
222
|
+
return this.onImageBuildStateChange(id, {
|
|
223
|
+
...options,
|
|
224
|
+
eventPattern: {
|
|
225
|
+
...options.eventPattern,
|
|
226
|
+
detail: { ...options.eventPattern?.detail, state: { status: ['AVAILABLE'] } },
|
|
227
|
+
},
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Creates an EventBridge rule for Image Builder image pipeline automatically disabled events.
|
|
232
|
+
*
|
|
233
|
+
* @param id Unique identifier for the rule
|
|
234
|
+
* @param options Configuration options for the event rule
|
|
235
|
+
*
|
|
236
|
+
* @see https://docs.aws.amazon.com/imagebuilder/latest/userguide/integ-eventbridge.html
|
|
237
|
+
*/
|
|
238
|
+
onImagePipelineAutoDisabled(id, options = {}) {
|
|
239
|
+
return this.onEvent(id, {
|
|
240
|
+
...options,
|
|
241
|
+
eventPattern: {
|
|
242
|
+
detailType: ['EC2 Image Builder Image Pipeline Automatically Disabled'],
|
|
243
|
+
resources: [this.imagePipelineArn],
|
|
244
|
+
},
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Creates an EventBridge rule for Image Builder wait for action events
|
|
249
|
+
*
|
|
250
|
+
* @param id Unique identifier for the rule
|
|
251
|
+
* @param options Configuration options for the event rule
|
|
252
|
+
*
|
|
253
|
+
* @see https://docs.aws.amazon.com/imagebuilder/latest/userguide/integ-eventbridge.html
|
|
254
|
+
*/
|
|
255
|
+
onWaitForAction(id, options = {}) {
|
|
256
|
+
return this.onEvent(id, {
|
|
257
|
+
...options,
|
|
258
|
+
eventPattern: { ...options.eventPattern, detailType: ['EC2 Image Builder Workflow Step Waiting'] },
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Represents an EC2 Image Builder Image Pipeline.
|
|
264
|
+
*
|
|
265
|
+
* @see https://docs.aws.amazon.com/imagebuilder/latest/userguide/manage-pipelines.html
|
|
266
|
+
*/
|
|
267
|
+
let ImagePipeline = (() => {
|
|
268
|
+
let _classDecorators = [prop_injectable_1.propertyInjectable];
|
|
269
|
+
let _classDescriptor;
|
|
270
|
+
let _classExtraInitializers = [];
|
|
271
|
+
let _classThis;
|
|
272
|
+
let _classSuper = ImagePipelineBase;
|
|
273
|
+
let _instanceExtraInitializers = [];
|
|
274
|
+
let _grantDefaultExecutionRolePermissions_decorators;
|
|
275
|
+
var ImagePipeline = class extends _classSuper {
|
|
276
|
+
static { _classThis = this; }
|
|
277
|
+
static {
|
|
278
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
279
|
+
_grantDefaultExecutionRolePermissions_decorators = [(0, metadata_resource_1.MethodMetadata)()];
|
|
280
|
+
__esDecorate(this, null, _grantDefaultExecutionRolePermissions_decorators, { kind: "method", name: "grantDefaultExecutionRolePermissions", static: false, private: false, access: { has: obj => "grantDefaultExecutionRolePermissions" in obj, get: obj => obj.grantDefaultExecutionRolePermissions }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
281
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
282
|
+
ImagePipeline = _classThis = _classDescriptor.value;
|
|
283
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
284
|
+
}
|
|
285
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImagePipeline", version: "2.230.0-alpha.0" };
|
|
286
|
+
/** Uniquely identifies this class. */
|
|
287
|
+
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.ImagePipeline';
|
|
288
|
+
/**
|
|
289
|
+
* Import an existing image pipeline given its ARN.
|
|
290
|
+
*/
|
|
291
|
+
static fromImagePipelineArn(scope, id, imagePipelineArn) {
|
|
292
|
+
const imagePipelineName = cdk.Stack.of(scope).splitArn(imagePipelineArn, cdk.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
|
|
293
|
+
class Import extends ImagePipelineBase {
|
|
294
|
+
imagePipelineArn = imagePipelineArn;
|
|
295
|
+
imagePipelineName = imagePipelineName;
|
|
296
|
+
}
|
|
297
|
+
return new Import(scope, id);
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Import an existing image pipeline given its name. The provided name must be normalized by converting all
|
|
301
|
+
* alphabetical characters to lowercase, and replacing all spaces and underscores with hyphens.
|
|
302
|
+
*/
|
|
303
|
+
static fromImagePipelineName(scope, id, imagePipelineName) {
|
|
304
|
+
return this.fromImagePipelineArn(scope, id, cdk.Stack.of(scope).formatArn({
|
|
305
|
+
service: 'imagebuilder',
|
|
306
|
+
resource: 'image-pipeline',
|
|
307
|
+
resourceName: imagePipelineName,
|
|
308
|
+
}));
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Return whether the given object is an ImagePipeline.
|
|
312
|
+
*/
|
|
313
|
+
static isImagePipeline(x) {
|
|
314
|
+
return x !== null && typeof x === 'object' && IMAGE_PIPELINE_SYMBOL in x;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* The ARN of the image pipeline
|
|
318
|
+
*/
|
|
319
|
+
imagePipelineArn = __runInitializers(this, _instanceExtraInitializers);
|
|
320
|
+
/**
|
|
321
|
+
* The name of the image pipeline
|
|
322
|
+
*/
|
|
323
|
+
imagePipelineName;
|
|
324
|
+
/**
|
|
325
|
+
* The infrastructure configuration used for the image build
|
|
326
|
+
*/
|
|
327
|
+
infrastructureConfiguration;
|
|
328
|
+
/**
|
|
329
|
+
* The execution role used for the image build. If there is no execution role, then the build will be executed with
|
|
330
|
+
* the AWSServiceRoleForImageBuilder service-linked role.
|
|
331
|
+
*/
|
|
332
|
+
executionRole;
|
|
333
|
+
props;
|
|
334
|
+
constructor(scope, id, props) {
|
|
335
|
+
super(scope, id, {
|
|
336
|
+
physicalName: props.imagePipelineName ??
|
|
337
|
+
cdk.Lazy.string({
|
|
338
|
+
produce: () => cdk.Names.uniqueResourceName(this, {
|
|
339
|
+
maxLength: 128,
|
|
340
|
+
separator: '-',
|
|
341
|
+
allowedSpecialCharacters: '-',
|
|
342
|
+
}).toLowerCase(), // Enforce lowercase for the auto-generated fallback
|
|
343
|
+
}),
|
|
344
|
+
});
|
|
345
|
+
try {
|
|
346
|
+
jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_ImagePipelineProps(props);
|
|
347
|
+
}
|
|
348
|
+
catch (error) {
|
|
349
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
350
|
+
Error.captureStackTrace(error, ImagePipeline);
|
|
351
|
+
}
|
|
352
|
+
throw error;
|
|
353
|
+
}
|
|
354
|
+
// Enhanced CDK Analytics Telemetry
|
|
355
|
+
(0, metadata_resource_1.addConstructMetadata)(this, props);
|
|
356
|
+
Object.defineProperty(this, IMAGE_PIPELINE_SYMBOL, { value: true });
|
|
357
|
+
this.validateImagePipelineName();
|
|
358
|
+
this.props = props;
|
|
359
|
+
this.infrastructureConfiguration =
|
|
360
|
+
props.infrastructureConfiguration ?? new infrastructure_configuration_1.InfrastructureConfiguration(this, 'InfrastructureConfiguration');
|
|
361
|
+
this.executionRole = (0, policy_helper_1.getExecutionRole)(this, (grantee) => this.grantDefaultExecutionRolePermissions(grantee), props);
|
|
362
|
+
if (infrastructure_configuration_1.InfrastructureConfiguration.isInfrastructureConfiguration(this.infrastructureConfiguration)) {
|
|
363
|
+
this.infrastructureConfiguration._bind({ isContainerBuild: props.recipe._isContainerRecipe() });
|
|
364
|
+
}
|
|
365
|
+
if (props.recipe._isImageRecipe() && props.recipe._isContainerRecipe()) {
|
|
366
|
+
throw new cdk.ValidationError('the recipe cannot be both an IImageRecipe and an IContainerRecipe', this);
|
|
367
|
+
}
|
|
368
|
+
if (!props.recipe._isImageRecipe() && !props.recipe._isContainerRecipe()) {
|
|
369
|
+
throw new cdk.ValidationError('the recipe must either be an IImageRecipe or IContainerRecipe', this);
|
|
370
|
+
}
|
|
371
|
+
const imagePipeline = new aws_imagebuilder_1.CfnImagePipeline(this, 'Resource', {
|
|
372
|
+
name: this.physicalName,
|
|
373
|
+
description: props.description,
|
|
374
|
+
...(props.recipe._isImageRecipe() && { imageRecipeArn: props.recipe.imageRecipeArn }),
|
|
375
|
+
...(props.recipe._isContainerRecipe() && { containerRecipeArn: props.recipe.containerRecipeArn }),
|
|
376
|
+
...(props.status !== undefined && { status: props.status }),
|
|
377
|
+
infrastructureConfigurationArn: this.infrastructureConfiguration.infrastructureConfigurationArn,
|
|
378
|
+
distributionConfigurationArn: props.distributionConfiguration?.distributionConfigurationArn,
|
|
379
|
+
enhancedImageMetadataEnabled: props.enhancedImageMetadataEnabled,
|
|
380
|
+
executionRole: this.executionRole?.roleArn,
|
|
381
|
+
schedule: this.buildSchedule(props),
|
|
382
|
+
loggingConfiguration: this.buildLoggingConfiguration(props),
|
|
383
|
+
imageTestsConfiguration: (0, image_and_pipeline_props_helper_1.buildImageTestsConfiguration)(props),
|
|
384
|
+
imageScanningConfiguration: (0, image_and_pipeline_props_helper_1.buildImageScanningConfiguration)(this, props),
|
|
385
|
+
workflows: (0, image_and_pipeline_props_helper_1.buildWorkflows)(props),
|
|
386
|
+
tags: props.tags,
|
|
387
|
+
});
|
|
388
|
+
this.imagePipelineName = this.getResourceNameAttribute(imagePipeline.attrName);
|
|
389
|
+
this.imagePipelineArn = this.getResourceArnAttribute(imagePipeline.attrArn, {
|
|
390
|
+
service: 'imagebuilder',
|
|
391
|
+
resource: 'image-pipeline',
|
|
392
|
+
resourceName: this.physicalName,
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Grants the default permissions for building an image to the provided execution role.
|
|
397
|
+
*
|
|
398
|
+
* @param grantee The execution role used for the image build.
|
|
399
|
+
*/
|
|
400
|
+
grantDefaultExecutionRolePermissions(grantee) {
|
|
401
|
+
const policies = (0, policy_helper_1.defaultExecutionRolePolicy)(this, this.props);
|
|
402
|
+
return policies.map((policy) => iam.Grant.addToPrincipal({
|
|
403
|
+
grantee: grantee,
|
|
404
|
+
resourceArns: policy.resources,
|
|
405
|
+
actions: policy.actions,
|
|
406
|
+
conditions: policy.conditions,
|
|
407
|
+
scope: this,
|
|
408
|
+
}));
|
|
409
|
+
}
|
|
410
|
+
validateImagePipelineName() {
|
|
411
|
+
if (cdk.Token.isUnresolved(this.physicalName)) {
|
|
412
|
+
return; // Cannot validate unresolved tokens, given their actual value is rendered at deployment time
|
|
413
|
+
}
|
|
414
|
+
if (this.physicalName.length > 128) {
|
|
415
|
+
throw new cdk.ValidationError('The imagePipelineName cannot be longer than 128 characters', this);
|
|
416
|
+
}
|
|
417
|
+
if (this.physicalName.includes(' ')) {
|
|
418
|
+
throw new cdk.ValidationError('The imagePipelineName cannot contain spaces', this);
|
|
419
|
+
}
|
|
420
|
+
if (this.physicalName.includes('_')) {
|
|
421
|
+
throw new cdk.ValidationError('The imagePipelineName cannot contain underscores', this);
|
|
422
|
+
}
|
|
423
|
+
if (this.physicalName !== this.physicalName.toLowerCase()) {
|
|
424
|
+
throw new cdk.ValidationError('The imagePipelineName must be lowercase', this);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
buildSchedule(props) {
|
|
428
|
+
const schedule = props.schedule;
|
|
429
|
+
if (!schedule) {
|
|
430
|
+
return undefined;
|
|
431
|
+
}
|
|
432
|
+
if (schedule.autoDisableFailureCount !== undefined && !cdk.Token.isUnresolved(schedule.autoDisableFailureCount)) {
|
|
433
|
+
if (schedule.autoDisableFailureCount < 1 || schedule.autoDisableFailureCount > 10) {
|
|
434
|
+
throw new cdk.ValidationError('the autoDisableFailureCount must be between 1 and 10', this);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
return {
|
|
438
|
+
scheduleExpression: schedule.expression.expressionString,
|
|
439
|
+
...(schedule.autoDisableFailureCount !== undefined && {
|
|
440
|
+
autoDisablePolicy: {
|
|
441
|
+
failureCount: schedule.autoDisableFailureCount,
|
|
442
|
+
},
|
|
443
|
+
}),
|
|
444
|
+
...(schedule.startCondition !== undefined && {
|
|
445
|
+
pipelineExecutionStartCondition: schedule.startCondition,
|
|
446
|
+
}),
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* Generates the loggingConfiguration property into the `LoggingConfiguration` type in the CloudFormation L1
|
|
451
|
+
* definition.
|
|
452
|
+
*
|
|
453
|
+
* @param props Props input for the construct
|
|
454
|
+
*/
|
|
455
|
+
buildLoggingConfiguration = (props) => {
|
|
456
|
+
const loggingConfiguration = {
|
|
457
|
+
...(props.imageLogGroup && { imageLogGroupName: props.imageLogGroup.logGroupName }),
|
|
458
|
+
...(props.imagePipelineLogGroup && { pipelineLogGroupName: props.imagePipelineLogGroup.logGroupName }),
|
|
459
|
+
};
|
|
460
|
+
return Object.keys(loggingConfiguration).length ? loggingConfiguration : undefined;
|
|
461
|
+
};
|
|
462
|
+
static {
|
|
463
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
464
|
+
}
|
|
465
|
+
};
|
|
466
|
+
return ImagePipeline = _classThis;
|
|
467
|
+
})();
|
|
468
|
+
exports.ImagePipeline = ImagePipeline;
|
|
469
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFFbkMsaURBQWlEO0FBQ2pELDJDQUEyQztBQUMzQyxtRUFBZ0U7QUFFaEUsOEVBQThGO0FBQzlGLDBFQUEwRTtBQUcxRSxpRkFBMkc7QUFDM0csK0ZBSW1EO0FBQ25ELDJEQUF1RjtBQUl2RixNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQXVTMUY7O0dBRUc7QUFDSCxJQUFZLHNCQVdYO0FBWEQsV0FBWSxzQkFBc0I7SUFDaEM7O09BRUc7SUFDSCx5RUFBK0MsQ0FBQTtJQUUvQzs7O09BR0c7SUFDSCxpSUFBdUcsQ0FBQTtBQUN6RyxDQUFDLEVBWFcsc0JBQXNCLHNDQUF0QixzQkFBc0IsUUFXakM7QUFFRDs7R0FFRztBQUNILElBQVksbUJBVVg7QUFWRCxXQUFZLG1CQUFtQjtJQUM3Qjs7T0FFRztJQUNILDBDQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsNENBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVZXLG1CQUFtQixtQ0FBbkIsbUJBQW1CLFFBVTlCO0FBRUQ7O0dBRUc7QUFDSCxNQUFlLGlCQUFrQixTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBV25EOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLE9BQXVCLEVBQUUsR0FBRyxPQUFpQjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNyQyxPQUFPLEVBQUUsT0FBTztZQUNoQixLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztLQUNKO0lBRUQ7Ozs7T0FJRztJQUNJLG9DQUFvQyxDQUFDLE9BQXVCO1FBQ2pFLE1BQU0sUUFBUSxHQUFHLElBQUEsMENBQTBCLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDdkIsT0FBTyxFQUFFLE9BQU87WUFDaEIsWUFBWSxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQzlCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztZQUN2QixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7WUFDN0IsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQ0gsQ0FBQztLQUNIO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxPQUF1QjtRQUN0QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLCtCQUErQixDQUFDLENBQUM7S0FDN0Q7SUFFRDs7OztPQUlHO0lBQ0ksbUJBQW1CLENBQUMsT0FBdUI7UUFDaEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSwwQ0FBMEMsQ0FBQyxDQUFDO0tBQ3hFO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLE9BQU8sQ0FBQyxFQUFVLEVBQUUsVUFBaUMsRUFBRTtRQUM1RCxNQUFNLElBQUksR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ25CLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBQzVCLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3RixHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxLQUFLLFNBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzNGLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksYUFBYSxDQUFDLEVBQVUsRUFBRSxVQUFpQyxFQUFFO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUU7WUFDdEIsR0FBRyxPQUFPO1lBQ1YsWUFBWSxFQUFFO2dCQUNaLEdBQUcsT0FBTyxDQUFDLFlBQVk7Z0JBQ3ZCLFVBQVUsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO2dCQUM5QyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7YUFDbkM7U0FDRixDQUFDLENBQUM7S0FDSjtJQUVEOzs7Ozs7O09BT0c7SUFDSSx1QkFBdUIsQ0FBQyxFQUFVLEVBQUUsVUFBaUMsRUFBRTtRQUM1RSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ3RCLEdBQUcsT0FBTztZQUNWLFlBQVksRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFFO1NBQ2hHLENBQUMsQ0FBQztLQUNKO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLHFCQUFxQixDQUFDLEVBQVUsRUFBRSxVQUFpQyxFQUFFO1FBQzFFLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsRUFBRTtZQUN0QyxHQUFHLE9BQU87WUFDVixZQUFZLEVBQUU7Z0JBQ1osR0FBRyxPQUFPLENBQUMsWUFBWTtnQkFDdkIsTUFBTSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7YUFDckc7U0FDRixDQUFDLENBQUM7S0FDSjtJQUVEOzs7Ozs7O09BT0c7SUFDSSxrQkFBa0IsQ0FBQyxFQUFVLEVBQUUsVUFBaUMsRUFBRTtRQUN2RSxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEVBQUU7WUFDdEMsR0FBRyxPQUFPO1lBQ1YsWUFBWSxFQUFFO2dCQUNaLEdBQUcsT0FBTyxDQUFDLFlBQVk7Z0JBQ3ZCLE1BQU0sRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRTthQUMzRTtTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLHFCQUFxQixDQUFDLEVBQVUsRUFBRSxVQUFpQyxFQUFFO1FBQzFFLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsRUFBRTtZQUN0QyxHQUFHLE9BQU87WUFDVixZQUFZLEVBQUU7Z0JBQ1osR0FBRyxPQUFPLENBQUMsWUFBWTtnQkFDdkIsTUFBTSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFO2FBQzlFO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksMkJBQTJCLENBQUMsRUFBVSxFQUFFLFVBQWlDLEVBQUU7UUFDaEYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUN0QixHQUFHLE9BQU87WUFDVixZQUFZLEVBQUU7Z0JBQ1osVUFBVSxFQUFFLENBQUMseURBQXlELENBQUM7Z0JBQ3ZFLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQzthQUNuQztTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLGVBQWUsQ0FBQyxFQUFVLEVBQUUsVUFBaUMsRUFBRTtRQUNwRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ3RCLEdBQUcsT0FBTztZQUNWLFlBQVksRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQyx5Q0FBeUMsQ0FBQyxFQUFFO1NBQ25HLENBQUMsQ0FBQztLQUNKO0NBQ0Y7QUFFRDs7OztHQUlHO0lBRVUsYUFBYTs0QkFEekIsb0NBQWtCOzs7O3NCQUNnQixpQkFBaUI7Ozs2QkFBekIsU0FBUSxXQUFpQjs7OztnRUFpSmpELElBQUEsa0NBQWMsR0FBRTtZQUNqQiwrUEFBTyxvQ0FBb0MsNkRBVzFDO1lBN0pILDZLQThOQzs7Ozs7UUE3TkMsc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVywrQ0FBK0MsQ0FBQztRQUV2Rzs7V0FFRztRQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxnQkFBd0I7WUFDdkYsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQ3BELGdCQUFnQixFQUNoQixHQUFHLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUNsQyxDQUFDLFlBQWEsQ0FBQztZQUVoQixNQUFNLE1BQU8sU0FBUSxpQkFBaUI7Z0JBQ3BCLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO2dCQUNwQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQzthQUN2RDtZQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzlCO1FBRUQ7OztXQUdHO1FBQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLGlCQUF5QjtZQUN6RixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FDOUIsS0FBSyxFQUNMLEVBQUUsRUFDRixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQzVCLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixZQUFZLEVBQUUsaUJBQWlCO2FBQ2hDLENBQUMsQ0FDSCxDQUFDO1NBQ0g7UUFFRDs7V0FFRztRQUNJLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBTTtZQUNsQyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLHFCQUFxQixJQUFJLENBQUMsQ0FBQztTQUMxRTtRQUVEOztXQUVHO1FBQ2EsZ0JBQWdCLEdBL0NyQixtREFBYSxDQStDaUI7UUFFekM7O1dBRUc7UUFDYSxpQkFBaUIsQ0FBUztRQUUxQzs7V0FFRztRQUNNLDJCQUEyQixDQUErQjtRQUVuRTs7O1dBR0c7UUFDYSxhQUFhLENBQWE7UUFFekIsS0FBSyxDQUFxQjtRQUUzQyxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtZQUN4RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtnQkFDZixZQUFZLEVBQ1YsS0FBSyxDQUFDLGlCQUFpQjtvQkFDdkIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7d0JBQ2QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUNaLEdBQUcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFOzRCQUNqQyxTQUFTLEVBQUUsR0FBRzs0QkFDZCxTQUFTLEVBQUUsR0FBRzs0QkFDZCx3QkFBd0IsRUFBRSxHQUFHO3lCQUM5QixDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsb0RBQW9EO3FCQUN6RSxDQUFDO2FBQ0wsQ0FBQyxDQUFDOzs7Ozs7bURBL0VNLGFBQWE7Ozs7WUFnRnRCLG1DQUFtQztZQUNuQyxJQUFBLHdDQUFvQixFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVsQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBRXBFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBRWpDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQywyQkFBMkI7Z0JBQzlCLEtBQUssQ0FBQywyQkFBMkIsSUFBSSxJQUFJLDBEQUEyQixDQUFDLElBQUksRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1lBQzVHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBQSxnQ0FBZ0IsRUFDbkMsSUFBSSxFQUNKLENBQUMsT0FBdUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9DQUFvQyxDQUFDLE9BQU8sQ0FBQyxFQUMvRSxLQUFLLENBQ04sQ0FBQztZQUVGLElBQUksMERBQTJCLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQztnQkFDaEcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEcsQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztnQkFDdkUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsbUVBQW1FLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDM0csQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7Z0JBQ3pFLE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLCtEQUErRCxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZHLENBQUM7WUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLG1DQUFnQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQzNELElBQUksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDdkIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUM5QixHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNyRixHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUNqRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMzRCw4QkFBOEIsRUFBRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsOEJBQThCO2dCQUMvRiw0QkFBNEIsRUFBRSxLQUFLLENBQUMseUJBQXlCLEVBQUUsNEJBQTRCO2dCQUMzRiw0QkFBNEIsRUFBRSxLQUFLLENBQUMsNEJBQTRCO2dCQUNoRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPO2dCQUMxQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7Z0JBQ25DLG9CQUFvQixFQUFFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUM7Z0JBQzNELHVCQUF1QixFQUFFLElBQUEsOERBQTRCLEVBR25ELEtBQUssQ0FBQztnQkFDUiwwQkFBMEIsRUFBRSxJQUFBLGlFQUErQixFQUd6RCxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUNkLFNBQVMsRUFBRSxJQUFBLGdEQUFjLEVBQXVFLEtBQUssQ0FBQztnQkFDdEcsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ2pCLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRTtnQkFDMUUsT0FBTyxFQUFFLGNBQWM7Z0JBQ3ZCLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTthQUNoQyxDQUFDLENBQUM7U0FDSjtRQUVEOzs7O1dBSUc7UUFFSSxvQ0FBb0MsQ0FBQyxPQUF1QjtZQUNqRSxNQUFNLFFBQVEsR0FBRyxJQUFBLDBDQUEwQixFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7Z0JBQ3ZCLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixZQUFZLEVBQUUsTUFBTSxDQUFDLFNBQVM7Z0JBQzlCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztnQkFDdkIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO2dCQUM3QixLQUFLLEVBQUUsSUFBSTthQUNaLENBQUMsQ0FDSCxDQUFDO1NBQ0g7UUFFTyx5QkFBeUI7WUFDL0IsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxDQUFDLDZGQUE2RjtZQUN2RyxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsNERBQTRELEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDcEcsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsNkNBQTZDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckYsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsa0RBQWtELEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDMUYsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLHlDQUF5QyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2pGLENBQUM7U0FDRjtRQUVPLGFBQWEsQ0FBQyxLQUF5QjtZQUM3QyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZCxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBRUQsSUFBSSxRQUFRLENBQUMsdUJBQXVCLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztnQkFDaEgsSUFBSSxRQUFRLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyx1QkFBdUIsR0FBRyxFQUFFLEVBQUUsQ0FBQztvQkFDbEYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsc0RBQXNELEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzlGLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLGdCQUFnQjtnQkFDeEQsR0FBRyxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsS0FBSyxTQUFTLElBQUk7b0JBQ3BELGlCQUFpQixFQUFFO3dCQUNqQixZQUFZLEVBQUUsUUFBUSxDQUFDLHVCQUF1QjtxQkFDL0M7aUJBQ0YsQ0FBQztnQkFDRixHQUFHLENBQUMsUUFBUSxDQUFDLGNBQWMsS0FBSyxTQUFTLElBQUk7b0JBQzNDLCtCQUErQixFQUFFLFFBQVEsQ0FBQyxjQUFjO2lCQUN6RCxDQUFDO2FBQ0gsQ0FBQztTQUNIO1FBRUQ7Ozs7O1dBS0c7UUFDSyx5QkFBeUIsR0FBRyxDQUNsQyxLQUF5QixFQUMwQyxFQUFFO1lBQ3JFLE1BQU0sb0JBQW9CLEdBQUc7Z0JBQzNCLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbkYsR0FBRyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN2RyxDQUFDO1lBRUYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3JGLENBQUMsQ0FBQzs7WUE3TlMsdURBQWE7Ozs7O0FBQWIsc0NBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgZWNyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3InO1xuaW1wb3J0ICogYXMgZXZlbnRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuSW1hZ2VQaXBlbGluZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pbWFnZWJ1aWxkZXInO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZGlzdHJpYnV0aW9uLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiwgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9pbmZyYXN0cnVjdHVyZS1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7XG4gIGJ1aWxkSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb24sXG4gIGJ1aWxkSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb24sXG4gIGJ1aWxkV29ya2Zsb3dzLFxufSBmcm9tICcuL3ByaXZhdGUvaW1hZ2UtYW5kLXBpcGVsaW5lLXByb3BzLWhlbHBlcic7XG5pbXBvcnQgeyBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSwgZ2V0RXhlY3V0aW9uUm9sZSB9IGZyb20gJy4vcHJpdmF0ZS9wb2xpY3ktaGVscGVyJztcbmltcG9ydCB7IElSZWNpcGVCYXNlIH0gZnJvbSAnLi9yZWNpcGUtYmFzZSc7XG5pbXBvcnQgeyBXb3JrZmxvd0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3dvcmtmbG93JztcblxuY29uc3QgSU1BR0VfUElQRUxJTkVfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVBpcGVsaW5lJyk7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgUGlwZWxpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUltYWdlUGlwZWxpbmUgZXh0ZW5kcyBjZGsuSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W107XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIHRvIHN0YXJ0IGFuIGV4ZWN1dGlvbiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRTdGFydEV4ZWN1dGlvbihncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uRXZlbnQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgQ1ZFIGRldGVjdGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uQ1ZFRGV0ZWN0ZWQoaWQ6IHN0cmluZywgb3B0aW9ucz86IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyk6IGV2ZW50cy5SdWxlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2Ugc3RhdGUgY2hhbmdlIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGNvbXBsZXRpb24gZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkQ29tcGxldGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIGJ1aWxkIGZhaWx1cmUgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkRmFpbGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHN1Y2Nlc3MgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZUJ1aWxkU3VjY2VlZGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHBpcGVsaW5lIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgb25JbWFnZVBpcGVsaW5lQXV0b0Rpc2FibGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBldmVudHMuT25FdmVudE9wdGlvbnMpOiBldmVudHMuUnVsZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIHdhaXQgZm9yIGFjdGlvbiBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIG9uV2FpdEZvckFjdGlvbihpZDogc3RyaW5nLCBvcHRpb25zPzogZXZlbnRzLk9uRXZlbnRPcHRpb25zKTogZXZlbnRzLlJ1bGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gSW1hZ2UgUGlwZWxpbmUgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZVBpcGVsaW5lUHJvcHMge1xuICAvKipcbiAgICogVGhlIHJlY2lwZSB0aGF0IGRlZmluZXMgdGhlIGJhc2UgaW1hZ2UsIGNvbXBvbmVudHMsIGFuZCBjdXN0b21pemF0aW9ucyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS4gVGhpcyBjYW4gZWl0aGVyIGJlXG4gICAqIGFuIGltYWdlIHJlY2lwZSwgb3IgYSBjb250YWluZXIgcmVjaXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVjaXBlOiBJUmVjaXBlQmFzZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmFtZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGltYWdlIHBpcGVsaW5lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNjaGVkdWxlIG9mIHRoZSBpbWFnZSBwaXBlbGluZS4gVGhpcyBjb25maWd1cmVzIGhvdyBvZnRlbiBhbmQgd2hlbiBhIHBpcGVsaW5lIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBhIG5ld1xuICAgKiBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lLCBhIG1hbnVhbCBpbWFnZSBwaXBlbGluZSB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlPzogSW1hZ2VQaXBlbGluZVNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCB0byBiZSB0cmlnZ2VyZWQgYnkgdGhlIHByb3ZpZGVkIHNjaGVkdWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IEltYWdlUGlwZWxpbmVTdGF0dXMuRU5BQkxFRFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogSW1hZ2VQaXBlbGluZVN0YXR1cztcblxuICAvKipcbiAgICogVGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgYnVpbGRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBBIGRlZmF1bHQgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB3aWxsIGJlIHVzZWQgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3aWxsIGNyZWF0ZSBhbiBpbnN0YW5jZSBwcm9maWxlIGFuZCByb2xlIHdpdGggbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gYnVpbGQgdGhlXG4gICAqIGltYWdlLCBhdHRhY2hlZCB0byB0aGUgRUMyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFuIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3NcbiAgICovXG4gIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbj86IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiB1c2VkIGZvciBkaXN0cmlidXRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uPzogSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHdvcmtmbG93IGNvbmZpZ3VyYXRpb25zIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEltYWdlIEJ1aWxkZXIgd2lsbCB1c2UgYSBkZWZhdWx0IHNldCBvZiB3b3JrZmxvd3MgZm9yIHRoZSBidWlsZCB0byBidWlsZCwgdGVzdCwgYW5kIGRpc3RyaWJ1dGUgdGhlIGltYWdlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd3M/OiBXb3JrZmxvd0NvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgdG8gcGVyZm9ybSB3b3JrZmxvdyBhY3Rpb25zIHRvIGJ1aWxkIHRoaXMgaW1hZ2UuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBJbWFnZSBCdWlsZGVyIFNlcnZpY2UgTGlua2VkIFJvbGUgKFNMUikgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYW5kIHVzZWQgYXMgdGhlIGV4ZWN1dGlvblxuICAgKiByb2xlLiBIb3dldmVyLCB3aGVuIHByb3ZpZGluZyBhIGN1c3RvbSBzZXQgb2YgaW1hZ2Ugd29ya2Zsb3dzIGZvciB0aGUgcGlwZWxpbmUsIGFuIGV4ZWN1dGlvbiByb2xlIHdpbGwgYmVcbiAgICogZ2VuZXJhdGVkIHdpdGggdGhlIG1pbmltYWwgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgdGhlIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJbWFnZSBCdWlsZGVyIHdpbGwgdXNlIHRoZSBTTFIgaWYgcG9zc2libGUuIE90aGVyd2lzZSwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZSBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gdXNlIGZvciB0aGUgaW1hZ2UgcGlwZWxpbmUuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSBmb3JtYXRcbiAgICogYC9hd3MvaW1hZ2VidWlsZGVyL3BpcGVsaW5lLzxwaXBlbGluZS1uYW1lPmBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIGxvZyBncm91cCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlUGlwZWxpbmVMb2dHcm91cD86IGxvZ3MuSUxvZ0dyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIHRvIHVzZSBmb3IgaW1hZ2VzIGNyZWF0ZWQgZnJvbSB0aGUgaW1hZ2UgcGlwZWxpbmUuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZVxuICAgKiBmb3JtYXQgYC9hd3MvaW1hZ2VidWlsZGVyLzxpbWFnZS1uYW1lPmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZUxvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIEltYWdlIEJ1aWxkZXIga2VlcHMgYSBzbmFwc2hvdCBvZiB0aGUgdnVsbmVyYWJpbGl0eSBzY2FucyB0aGF0IEFtYXpvbiBJbnNwZWN0b3IgcnVucyBhZ2FpbnN0IHRoZVxuICAgKiBidWlsZCBpbnN0YW5jZSB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgcmVwb3NpdG9yeSB0aGF0IEFtYXpvbiBJbnNwZWN0b3Igc2NhbnMgdG8gaWRlbnRpZnkgZmluZGluZ3MgZm9yIHlvdXIgY29udGFpbmVyIGltYWdlcy4gSWYgYVxuICAgKiByZXBvc2l0b3J5IGlzIG5vdCBwcm92aWRlZCwgSW1hZ2UgQnVpbGRlciBjcmVhdGVzIGEgcmVwb3NpdG9yeSBuYW1lZCBgaW1hZ2UtYnVpbGRlci1pbWFnZS1zY2FubmluZy1yZXBvc2l0b3J5YFxuICAgKiBmb3IgdnVsbmVyYWJpbGl0eSBzY2FubmluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpZiBzY2FubmluZyBpcyBlbmFibGVkLCBhIHJlcG9zaXRvcnkgd2lsbCBiZSBjcmVhdGVkIGJ5IEltYWdlIEJ1aWxkZXIgaWYgb25lIGlzIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclJlcG9zaXRvcnk/OiBlY3IuSVJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIGZvciBJbWFnZSBCdWlsZGVyIHRvIGFwcGx5IHRvIHRoZSBvdXRwdXQgY29udGFpbmVyIGltYWdlIHRoYXQgQW1hem9uIEluc3BlY3RvciBzY2Fucy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgZW5hYmxlZCwgY29sbGVjdHMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1hZ2UgYmVpbmcgY3JlYXRlZCwgaW5jbHVkaW5nIHRoZSBvcGVyYXRpbmcgc3lzdGVtIChPUylcbiAgICogdmVyc2lvbiBhbmQgcGFja2FnZSBsaXN0IGZvciB0aGUgQU1JLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBydW4gdGVzdHMgYWZ0ZXIgYnVpbGRpbmcgYW4gaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVGVzdHNFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFRoZSBzY2hlZHVsZSBzZXR0aW5ncyBmb3IgdGhlIGltYWdlIHBpcGVsaW5lLCB3aGljaCBkZWZpbmVzIHdoZW4gYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VQaXBlbGluZVNjaGVkdWxlIHtcbiAgLyoqXG4gICAqIFRoZSBzY2hlZHVsZSBleHByZXNzaW9uIHRvIHVzZS4gVGhpcyBjYW4gZWl0aGVyIGJlIGEgY3JvbiBleHByZXNzaW9uIG9yIGEgcmF0ZSBleHByZXNzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwcmVzc2lvbjogZXZlbnRzLlNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGZhaWx1cmVzIGFsbG93ZWQgYmVmb3JlIHRoZSBwaXBlbGluZSBpcyBhdXRvbWF0aWNhbGx5IGRpc2FibGVkLiBUaGlzIHZhbHVlIG11c3QgYmVcbiAgICogYmV0d2VlbiAxIGFuZCAxMC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhdXRvLWRpc2FibGUgcG9saWN5IGlzIGNvbmZpZ3VyZWQgYW5kIHRoZSBwaXBlbGluZSBpcyBub3QgYXV0b21hdGljYWxseSBkaXNhYmxlZCBvbiBjb25zZWN1dGl2ZVxuICAgKiBmYWlsdXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFydCBjb25kaXRpb24gZm9yIHRoZSBwaXBlbGluZSwgaW5kaWNhdGluZyB0aGUgY29uZGl0aW9uIHVuZGVyIHdoaWNoIGEgcGlwZWxpbmUgc2hvdWxkIGJlIHRyaWdnZXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgU2NoZWR1bGVTdGFydENvbmRpdGlvbi5FWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFXG4gICAqL1xuICByZWFkb25seSBzdGFydENvbmRpdGlvbj86IFNjaGVkdWxlU3RhcnRDb25kaXRpb247XG59XG5cbi8qKlxuICogVGhlIHN0YXJ0IGNvbmRpdGlvbiBmb3IgdGhlIHBpcGVsaW5lLCBpbmRpY2F0aW5nIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggYSBwaXBlbGluZSBzaG91bGQgYmUgdHJpZ2dlcmVkLlxuICovXG5leHBvcnQgZW51bSBTY2hlZHVsZVN0YXJ0Q29uZGl0aW9uIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0byB0cmlnZ2VyIGEgcGlwZWxpbmUgd2hlbmV2ZXIgaXRzIHNjaGVkdWxlIGlzIG1ldFxuICAgKi9cbiAgRVhQUkVTU0lPTl9NQVRDSF9PTkxZID0gJ0VYUFJFU1NJT05fTUFUQ0hfT05MWScsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0byB0cmlnZ2VyIGEgcGlwZWxpbmUgd2hlbmV2ZXIgaXRzIHNjaGVkdWxlIGlzIG1ldCwgYW5kIHRoZXJlIGFyZSBtYXRjaGluZyBkZXBlbmRlbmN5IHVwZGF0ZXMgYXZhaWxhYmxlLFxuICAgKiBzdWNoIGFzIG5ldyB2ZXJzaW9ucyBvZiBjb21wb25lbnRzIG9yIGltYWdlcyB0byB1c2UgaW4gdGhlIHBpcGVsaW5lIGJ1aWxkLlxuICAgKi9cbiAgRVhQUkVTU0lPTl9NQVRDSF9BTkRfREVQRU5ERU5DWV9VUERBVEVTX0FWQUlMQUJMRSA9ICdFWFBSRVNTSU9OX01BVENIX0FORF9ERVBFTkRFTkNZX1VQREFURVNfQVZBSUxBQkxFJyxcbn1cblxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcGlwZWxpbmUgaXMgZW5hYmxlZCB0byBiZSB0cmlnZ2VyZWQgYnkgdGhlIHByb3ZpZGVkIHNjaGVkdWxlXG4gKi9cbmV4cG9ydCBlbnVtIEltYWdlUGlwZWxpbmVTdGF0dXMge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHBpcGVsaW5lIGlzIGVuYWJsZWQgZm9yIHNjaGVkdWxpbmdcbiAgICovXG4gIEVOQUJMRUQgPSAnRU5BQkxFRCcsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBwaXBlbGluZSBpcyBkaXNhYmxlZCBhbmQgd2lsbCBub3QgYmUgdHJpZ2dlcmVkIG9uIHRoZSBzY2hlZHVsZVxuICAgKi9cbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIEltYWdlIFBpcGVsaW5lXG4gKi9cbmFic3RyYWN0IGNsYXNzIEltYWdlUGlwZWxpbmVCYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSUltYWdlUGlwZWxpbmUge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlUGlwZWxpbmVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5pbWFnZVBpcGVsaW5lQXJuXSxcbiAgICAgIGFjdGlvbnM6IGFjdGlvbnMsXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIHRvIHRoZSBwcm92aWRlZCBleGVjdXRpb24gcm9sZS5cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIHB1YmxpYyBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXSB7XG4gICAgY29uc3QgcG9saWNpZXMgPSBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSh0aGlzKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChwb2xpY3kpID0+XG4gICAgICBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgICByZXNvdXJjZUFybnM6IHBvbGljeS5yZXNvdXJjZXMsXG4gICAgICAgIGFjdGlvbnM6IHBvbGljeS5hY3Rpb25zLFxuICAgICAgICBjb25kaXRpb25zOiBwb2xpY3kuY29uZGl0aW9ucyxcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZSBwaXBlbGluZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldEltYWdlUGlwZWxpbmUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSB0byBzdGFydCBhbiBleGVjdXRpb24gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFN0YXJ0RXhlY3V0aW9uKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOlN0YXJ0SW1hZ2VQaXBlbGluZUV4ZWN1dGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25FdmVudChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICBjb25zdCBydWxlID0gbmV3IGV2ZW50cy5SdWxlKHRoaXMsIGlkLCBvcHRpb25zKTtcbiAgICBydWxlLmFkZFRhcmdldChvcHRpb25zLnRhcmdldCk7XG4gICAgcnVsZS5hZGRFdmVudFBhdHRlcm4oe1xuICAgICAgc291cmNlOiBbJ2F3cy5pbWFnZWJ1aWxkZXInXSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8ucmVzb3VyY2VzPy5sZW5ndGggJiYgeyByZXNvdXJjZXM6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLnJlc291cmNlcyB9KSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsVHlwZT8ubGVuZ3RoICYmIHsgZGV0YWlsVHlwZTogb3B0aW9ucy5ldmVudFBhdHRlcm4uZGV0YWlsVHlwZSB9KSxcbiAgICAgIC4uLihvcHRpb25zLmV2ZW50UGF0dGVybj8uZGV0YWlsICE9PSB1bmRlZmluZWQgJiYgeyBkZXRhaWw6IG9wdGlvbnMuZXZlbnRQYXR0ZXJuLmRldGFpbCB9KSxcbiAgICB9KTtcbiAgICByZXR1cm4gcnVsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgQ1ZFIGRldGVjdGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkNWRURldGVjdGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sXG4gICAgICAgIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgQ1ZFIERldGVjdGVkJ10sXG4gICAgICAgIHJlc291cmNlczogW3RoaXMuaW1hZ2VQaXBlbGluZUFybl0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBzdGF0ZSBjaGFuZ2UgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uRXZlbnQoaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBldmVudFBhdHRlcm46IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4sIGRldGFpbFR5cGU6IFsnRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UgU3RhdGUgQ2hhbmdlJ10gfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgY29tcGxldGlvbiBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZUJ1aWxkQ29tcGxldGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWw6IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCwgc3RhdGU6IHsgc3RhdHVzOiBbJ0FWQUlMQUJMRScsICdDQU5DRUxMRUQnLCAnRkFJTEVEJ10gfSB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIEV2ZW50QnJpZGdlIHJ1bGUgZm9yIEltYWdlIEJ1aWxkZXIgaW1hZ2UgYnVpbGQgZmFpbHVyZSBldmVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGVcbiAgICogQHBhcmFtIG9wdGlvbnMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgZXZlbnQgcnVsZVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pbnRlZy1ldmVudGJyaWRnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgb25JbWFnZUJ1aWxkRmFpbGVkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IGV2ZW50cy5PbkV2ZW50T3B0aW9ucyA9IHt9KTogZXZlbnRzLlJ1bGUge1xuICAgIHJldHVybiB0aGlzLm9uSW1hZ2VCdWlsZFN0YXRlQ2hhbmdlKGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuLFxuICAgICAgICBkZXRhaWw6IHsgLi4ub3B0aW9ucy5ldmVudFBhdHRlcm4/LmRldGFpbCwgc3RhdGU6IHsgc3RhdHVzOiBbJ0ZBSUxFRCddIH0gfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIGltYWdlIHN1Y2Nlc3MgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGV2ZW50IHJ1bGVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaW50ZWctZXZlbnRicmlkZ2UuaHRtbFxuICAgKi9cbiAgcHVibGljIG9uSW1hZ2VCdWlsZFN1Y2NlZWRlZChpZDogc3RyaW5nLCBvcHRpb25zOiBldmVudHMuT25FdmVudE9wdGlvbnMgPSB7fSk6IGV2ZW50cy5SdWxlIHtcbiAgICByZXR1cm4gdGhpcy5vbkltYWdlQnVpbGRTdGF0ZUNoYW5nZShpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAuLi5vcHRpb25zLmV2ZW50UGF0dGVybixcbiAgICAgICAgZGV0YWlsOiB7IC4uLm9wdGlvbnMuZXZlbnRQYXR0ZXJuPy5kZXRhaWwsIHN0YXRlOiB7IHN0YXR1czogWydBVkFJTEFCTEUnXSB9IH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gRXZlbnRCcmlkZ2UgcnVsZSBmb3IgSW1hZ2UgQnVpbGRlciBpbWFnZSBwaXBlbGluZSBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGV2ZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbkltYWdlUGlwZWxpbmVBdXRvRGlzYWJsZWQoaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25FdmVudChpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBkZXRhaWxUeXBlOiBbJ0VDMiBJbWFnZSBCdWlsZGVyIEltYWdlIFBpcGVsaW5lIEF1dG9tYXRpY2FsbHkgRGlzYWJsZWQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5pbWFnZVBpcGVsaW5lQXJuXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBFdmVudEJyaWRnZSBydWxlIGZvciBJbWFnZSBCdWlsZGVyIHdhaXQgZm9yIGFjdGlvbiBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2ludGVnLWV2ZW50YnJpZGdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyBvbldhaXRGb3JBY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogZXZlbnRzLk9uRXZlbnRPcHRpb25zID0ge30pOiBldmVudHMuUnVsZSB7XG4gICAgcmV0dXJuIHRoaXMub25FdmVudChpZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGV2ZW50UGF0dGVybjogeyAuLi5vcHRpb25zLmV2ZW50UGF0dGVybiwgZGV0YWlsVHlwZTogWydFQzIgSW1hZ2UgQnVpbGRlciBXb3JrZmxvdyBTdGVwIFdhaXRpbmcnXSB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZSBQaXBlbGluZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtcGlwZWxpbmVzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEltYWdlUGlwZWxpbmUgZXh0ZW5kcyBJbWFnZVBpcGVsaW5lQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZVBpcGVsaW5lJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHBpcGVsaW5lIGdpdmVuIGl0cyBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZVBpcGVsaW5lQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUGlwZWxpbmVBcm46IHN0cmluZyk6IElJbWFnZVBpcGVsaW5lIHtcbiAgICBjb25zdCBpbWFnZVBpcGVsaW5lTmFtZSA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICBpbWFnZVBpcGVsaW5lQXJuLFxuICAgICAgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICkucmVzb3VyY2VOYW1lITtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEltYWdlUGlwZWxpbmVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lQXJuID0gaW1hZ2VQaXBlbGluZUFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZSA9IGltYWdlUGlwZWxpbmVOYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIHBpcGVsaW5lIGdpdmVuIGl0cyBuYW1lLiBUaGUgcHJvdmlkZWQgbmFtZSBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGxcbiAgICogYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlUGlwZWxpbmVOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlUGlwZWxpbmVOYW1lOiBzdHJpbmcpOiBJSW1hZ2VQaXBlbGluZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlUGlwZWxpbmVBcm4oXG4gICAgICBzY29wZSxcbiAgICAgIGlkLFxuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdpbWFnZS1waXBlbGluZScsXG4gICAgICAgIHJlc291cmNlTmFtZTogaW1hZ2VQaXBlbGluZU5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gSW1hZ2VQaXBlbGluZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNJbWFnZVBpcGVsaW5lKHg6IGFueSk6IHggaXMgSW1hZ2VQaXBlbGluZSB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIElNQUdFX1BJUEVMSU5FX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlIHBpcGVsaW5lXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VQaXBlbGluZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgcGlwZWxpbmVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZVBpcGVsaW5lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGRcbiAgICovXG4gIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC4gSWYgdGhlcmUgaXMgbm8gZXhlY3V0aW9uIHJvbGUsIHRoZW4gdGhlIGJ1aWxkIHdpbGwgYmUgZXhlY3V0ZWQgd2l0aFxuICAgKiB0aGUgQVdTU2VydmljZVJvbGVGb3JJbWFnZUJ1aWxkZXIgc2VydmljZS1saW5rZWQgcm9sZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBleGVjdXRpb25Sb2xlPzogaWFtLklSb2xlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IEltYWdlUGlwZWxpbmVQcm9wcztcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEltYWdlUGlwZWxpbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOlxuICAgICAgICBwcm9wcy5pbWFnZVBpcGVsaW5lTmFtZSA/P1xuICAgICAgICBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoOiAxMjgsXG4gICAgICAgICAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICctJyxcbiAgICAgICAgICAgIH0pLnRvTG93ZXJDYXNlKCksIC8vIEVuZm9yY2UgbG93ZXJjYXNlIGZvciB0aGUgYXV0by1nZW5lcmF0ZWQgZmFsbGJhY2tcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgSU1BR0VfUElQRUxJTkVfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy52YWxpZGF0ZUltYWdlUGlwZWxpbmVOYW1lKCk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPVxuICAgICAgcHJvcHMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uID8/IG5ldyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24odGhpcywgJ0luZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbicpO1xuICAgIHRoaXMuZXhlY3V0aW9uUm9sZSA9IGdldEV4ZWN1dGlvblJvbGUoXG4gICAgICB0aGlzLFxuICAgICAgKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKSA9PiB0aGlzLmdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlKSxcbiAgICAgIHByb3BzLFxuICAgICk7XG5cbiAgICBpZiAoSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmlzSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKSkge1xuICAgICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uX2JpbmQoeyBpc0NvbnRhaW5lckJ1aWxkOiBwcm9wcy5yZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgfSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHByb3BzLnJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSByZWNpcGUgY2Fubm90IGJlIGJvdGggYW4gSUltYWdlUmVjaXBlIGFuZCBhbiBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5yZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiAhcHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHJlY2lwZSBtdXN0IGVpdGhlciBiZSBhbiBJSW1hZ2VSZWNpcGUgb3IgSUNvbnRhaW5lclJlY2lwZScsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGltYWdlUGlwZWxpbmUgPSBuZXcgQ2ZuSW1hZ2VQaXBlbGluZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIC4uLihwcm9wcy5yZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiB7IGltYWdlUmVjaXBlQXJuOiBwcm9wcy5yZWNpcGUuaW1hZ2VSZWNpcGVBcm4gfSksXG4gICAgICAuLi4ocHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpICYmIHsgY29udGFpbmVyUmVjaXBlQXJuOiBwcm9wcy5yZWNpcGUuY29udGFpbmVyUmVjaXBlQXJuIH0pLFxuICAgICAgLi4uKHByb3BzLnN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIHsgc3RhdHVzOiBwcm9wcy5zdGF0dXMgfSksXG4gICAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHByb3BzLmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/LmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkOiBwcm9wcy5lbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkLFxuICAgICAgZXhlY3V0aW9uUm9sZTogdGhpcy5leGVjdXRpb25Sb2xlPy5yb2xlQXJuLFxuICAgICAgc2NoZWR1bGU6IHRoaXMuYnVpbGRTY2hlZHVsZShwcm9wcyksXG4gICAgICBsb2dnaW5nQ29uZmlndXJhdGlvbjogdGhpcy5idWlsZExvZ2dpbmdDb25maWd1cmF0aW9uKHByb3BzKSxcbiAgICAgIGltYWdlVGVzdHNDb25maWd1cmF0aW9uOiBidWlsZEltYWdlVGVzdHNDb25maWd1cmF0aW9uPFxuICAgICAgICBJbWFnZVBpcGVsaW5lUHJvcHMsXG4gICAgICAgIENmbkltYWdlUGlwZWxpbmUuSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVxuICAgICAgPihwcm9wcyksXG4gICAgICBpbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjogYnVpbGRJbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbjxcbiAgICAgICAgSW1hZ2VQaXBlbGluZVByb3BzLFxuICAgICAgICBDZm5JbWFnZVBpcGVsaW5lLkltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgICAgID4odGhpcywgcHJvcHMpLFxuICAgICAgd29ya2Zsb3dzOiBidWlsZFdvcmtmbG93czxJbWFnZVBpcGVsaW5lUHJvcHMsIENmbkltYWdlUGlwZWxpbmUuV29ya2Zsb3dDb25maWd1cmF0aW9uUHJvcGVydHlbXT4ocHJvcHMpLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICB9KTtcblxuICAgIHRoaXMuaW1hZ2VQaXBlbGluZU5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZShpbWFnZVBpcGVsaW5lLmF0dHJOYW1lKTtcbiAgICB0aGlzLmltYWdlUGlwZWxpbmVBcm4gPSB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKGltYWdlUGlwZWxpbmUuYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICByZXNvdXJjZTogJ2ltYWdlLXBpcGVsaW5lJyxcbiAgICAgIHJlc291cmNlTmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W10ge1xuICAgIGNvbnN0IHBvbGljaWVzID0gZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3kodGhpcywgdGhpcy5wcm9wcyk7XG4gICAgcmV0dXJuIHBvbGljaWVzLm1hcCgocG9saWN5KSA9PlxuICAgICAgaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgICAgcmVzb3VyY2VBcm5zOiBwb2xpY3kucmVzb3VyY2VzLFxuICAgICAgICBhY3Rpb25zOiBwb2xpY3kuYWN0aW9ucyxcbiAgICAgICAgY29uZGl0aW9uczogcG9saWN5LmNvbmRpdGlvbnMsXG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVJbWFnZVBpcGVsaW5lTmFtZSgpIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLnBoeXNpY2FsTmFtZSkpIHtcbiAgICAgIHJldHVybjsgLy8gQ2Fubm90IHZhbGlkYXRlIHVucmVzb2x2ZWQgdG9rZW5zLCBnaXZlbiB0aGVpciBhY3R1YWwgdmFsdWUgaXMgcmVuZGVyZWQgYXQgZGVwbG95bWVudCB0aW1lXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmxlbmd0aCA+IDEyOCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gMTI4IGNoYXJhY3RlcnMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBjYW5ub3QgY29udGFpbiB1bmRlcnNjb3JlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZSAhPT0gdGhpcy5waHlzaWNhbE5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbWFnZVBpcGVsaW5lTmFtZSBtdXN0IGJlIGxvd2VyY2FzZScsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTY2hlZHVsZShwcm9wczogSW1hZ2VQaXBlbGluZVByb3BzKTogQ2ZuSW1hZ2VQaXBlbGluZS5TY2hlZHVsZVByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzY2hlZHVsZSA9IHByb3BzLnNjaGVkdWxlO1xuICAgIGlmICghc2NoZWR1bGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50ICE9PSB1bmRlZmluZWQgJiYgIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQoc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQpKSB7XG4gICAgICBpZiAoc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgPCAxIHx8IHNjaGVkdWxlLmF1dG9EaXNhYmxlRmFpbHVyZUNvdW50ID4gMTApIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSBhdXRvRGlzYWJsZUZhaWx1cmVDb3VudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAnLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiBzY2hlZHVsZS5leHByZXNzaW9uLmV4cHJlc3Npb25TdHJpbmcsXG4gICAgICAuLi4oc2NoZWR1bGUuYXV0b0Rpc2FibGVGYWlsdXJlQ291bnQgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIGF1dG9EaXNhYmxlUG9saWN5OiB7XG4gICAgICAgICAgZmFpbHVyZUNvdW50OiBzY2hlZHVsZS5hdXRvRGlzYWJsZUZhaWx1cmVDb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLi4uKHNjaGVkdWxlLnN0YXJ0Q29uZGl0aW9uICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBwaXBlbGluZUV4ZWN1dGlvblN0YXJ0Q29uZGl0aW9uOiBzY2hlZHVsZS5zdGFydENvbmRpdGlvbixcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBsb2dnaW5nQ29uZmlndXJhdGlvbiBwcm9wZXJ0eSBpbnRvIHRoZSBgTG9nZ2luZ0NvbmZpZ3VyYXRpb25gIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxXG4gICAqIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZExvZ2dpbmdDb25maWd1cmF0aW9uID0gKFxuICAgIHByb3BzOiBJbWFnZVBpcGVsaW5lUHJvcHMsXG4gICk6IENmbkltYWdlUGlwZWxpbmUuUGlwZWxpbmVMb2dnaW5nQ29uZmlndXJhdGlvblByb3BlcnR5IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBsb2dnaW5nQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLihwcm9wcy5pbWFnZUxvZ0dyb3VwICYmIHsgaW1hZ2VMb2dHcm91cE5hbWU6IHByb3BzLmltYWdlTG9nR3JvdXAubG9nR3JvdXBOYW1lIH0pLFxuICAgICAgLi4uKHByb3BzLmltYWdlUGlwZWxpbmVMb2dHcm91cCAmJiB7IHBpcGVsaW5lTG9nR3JvdXBOYW1lOiBwcm9wcy5pbWFnZVBpcGVsaW5lTG9nR3JvdXAubG9nR3JvdXBOYW1lIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobG9nZ2luZ0NvbmZpZ3VyYXRpb24pLmxlbmd0aCA/IGxvZ2dpbmdDb25maWd1cmF0aW9uIDogdW5kZWZpbmVkO1xuICB9O1xufVxuIl19
|
package/lib/image-recipe.js
CHANGED
|
@@ -123,7 +123,7 @@ let ImageRecipe = (() => {
|
|
|
123
123
|
ImageRecipe = _classThis = _classDescriptor.value;
|
|
124
124
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
125
125
|
}
|
|
126
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImageRecipe", version: "2.
|
|
126
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ImageRecipe", version: "2.230.0-alpha.0" };
|
|
127
127
|
/** Uniquely identifies this class. */
|
|
128
128
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.ImageRecipe';
|
|
129
129
|
/**
|
package/lib/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export * from './component';
|
|
2
2
|
export * from './container-recipe';
|
|
3
3
|
export * from './distribution-configuration';
|
|
4
|
+
export * from './image-pipeline';
|
|
4
5
|
export * from './image-recipe';
|
|
5
6
|
export * from './infrastructure-configuration';
|
|
7
|
+
export * from './lifecycle-policy';
|
|
6
8
|
export * from './workflow';
|
|
7
9
|
export * from './base-image';
|
|
8
10
|
export * from './os-version';
|
package/lib/index.js
CHANGED
|
@@ -18,10 +18,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
__exportStar(require("./component"), exports);
|
|
19
19
|
__exportStar(require("./container-recipe"), exports);
|
|
20
20
|
__exportStar(require("./distribution-configuration"), exports);
|
|
21
|
+
__exportStar(require("./image-pipeline"), exports);
|
|
21
22
|
__exportStar(require("./image-recipe"), exports);
|
|
22
23
|
__exportStar(require("./infrastructure-configuration"), exports);
|
|
24
|
+
__exportStar(require("./lifecycle-policy"), exports);
|
|
23
25
|
__exportStar(require("./workflow"), exports);
|
|
24
26
|
__exportStar(require("./base-image"), exports);
|
|
25
27
|
__exportStar(require("./os-version"), exports);
|
|
26
28
|
__exportStar(require("./recipe-base"), exports);
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsOENBQThDOzs7Ozs7Ozs7Ozs7Ozs7O0FBRTlDLDhDQUE0QjtBQUM1QixxREFBbUM7QUFDbkMsK0RBQTZDO0FBQzdDLG1EQUFpQztBQUNqQyxpREFBK0I7QUFDL0IsaUVBQStDO0FBQy9DLHFEQUFtQztBQUNuQyw2Q0FBMkI7QUFFM0IsK0NBQTZCO0FBQzdCLCtDQUE2QjtBQUM3QixnREFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBV1M6OkltYWdlQnVpbGRlciBDbG91ZEZvcm1hdGlvbiBSZXNvdXJjZXM6XG5cbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29udGFpbmVyLXJlY2lwZSc7XG5leHBvcnQgKiBmcm9tICcuL2Rpc3RyaWJ1dGlvbi1jb25maWd1cmF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2UtcGlwZWxpbmUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbWFnZS1yZWNpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbmZyYXN0cnVjdHVyZS1jb25maWd1cmF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGlmZWN5Y2xlLXBvbGljeSc7XG5leHBvcnQgKiBmcm9tICcuL3dvcmtmbG93JztcblxuZXhwb3J0ICogZnJvbSAnLi9iYXNlLWltYWdlJztcbmV4cG9ydCAqIGZyb20gJy4vb3MtdmVyc2lvbic7XG5leHBvcnQgKiBmcm9tICcuL3JlY2lwZS1iYXNlJztcbiJdfQ==
|
|
@@ -125,7 +125,7 @@ export interface InfrastructureConfigurationProps {
|
|
|
125
125
|
* Note: You can provide an instanceProfile or a role, but not both.
|
|
126
126
|
*
|
|
127
127
|
* @example
|
|
128
|
-
* const
|
|
128
|
+
* const instanceProfileRole = new iam.Role(this, 'MyRole', {
|
|
129
129
|
* assumedBy: new iam.ServicePrincipal('ec2.amazonaws.com')
|
|
130
130
|
* });
|
|
131
131
|
*
|