@aws-cdk/aws-imagebuilder-alpha 2.230.0-alpha.0 → 2.232.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.
@@ -0,0 +1,522 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AmazonManagedImage = void 0;
4
+ const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const cdk = require("aws-cdk-lib");
7
+ const image_1 = require("./image");
8
+ const constants_1 = require("./private/constants");
9
+ /**
10
+ * Helper class for working with Amazon-managed images
11
+ */
12
+ class AmazonManagedImage {
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.AmazonManagedImage", version: "2.232.0-alpha.0" };
14
+ /**
15
+ * Imports the Amazon Linux 2 Amazon-managed image
16
+ *
17
+ * @param scope The construct scope
18
+ * @param id Identifier of the construct
19
+ * @param opts The Amazon-managed image attributes
20
+ *
21
+ * @see https://docs.aws.amazon.com/linux/al2/ug/index.html
22
+ * @see https://gallery.ecr.aws/amazonlinux/amazonlinux
23
+ */
24
+ static amazonLinux2(scope, id, opts) {
25
+ try {
26
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
27
+ }
28
+ catch (error) {
29
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
30
+ Error.captureStackTrace(error, this.amazonLinux2);
31
+ }
32
+ throw error;
33
+ }
34
+ return this.predefinedManagedImage(scope, id, opts, this.AMAZON_LINUX_2_CONFIG);
35
+ }
36
+ /**
37
+ * Imports the Amazon Linux 2023 Amazon-managed image
38
+ *
39
+ * @param scope The construct scope
40
+ * @param id Identifier of the construct
41
+ * @param opts The Amazon-managed image attributes
42
+ *
43
+ * @see https://docs.aws.amazon.com/linux/al2023/ug/what-is-amazon-linux.html
44
+ * @see https://gallery.ecr.aws/amazonlinux/amazonlinux
45
+ */
46
+ static amazonLinux2023(scope, id, opts) {
47
+ try {
48
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
49
+ }
50
+ catch (error) {
51
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
52
+ Error.captureStackTrace(error, this.amazonLinux2023);
53
+ }
54
+ throw error;
55
+ }
56
+ return this.predefinedManagedImage(scope, id, opts, this.AMAZON_LINUX_2023_CONFIG);
57
+ }
58
+ /**
59
+ * Imports the Red Hat Enterprise Linux 10 Amazon-managed image
60
+ *
61
+ * @param scope The construct scope
62
+ * @param id Identifier of the construct
63
+ * @param opts The Amazon-managed image attributes
64
+ *
65
+ * @see https://aws.amazon.com/partners/redhat/faqs
66
+ */
67
+ static redHatEnterpriseLinux10(scope, id, opts) {
68
+ try {
69
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
70
+ }
71
+ catch (error) {
72
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
73
+ Error.captureStackTrace(error, this.redHatEnterpriseLinux10);
74
+ }
75
+ throw error;
76
+ }
77
+ return this.predefinedManagedImage(scope, id, opts, this.RED_HAT_ENTERPRISE_LINUX_10_CONFIG);
78
+ }
79
+ /**
80
+ * Imports the SUSE Linux Enterprise Server 15 Amazon-managed image
81
+ *
82
+ * @param scope The construct scope
83
+ * @param id Identifier of the construct
84
+ * @param opts The Amazon-managed image attributes
85
+ *
86
+ * @see https://aws.amazon.com/linux/commercial-linux/faqs/
87
+ */
88
+ static suseLinuxEnterpriseServer15(scope, id, opts) {
89
+ try {
90
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
91
+ }
92
+ catch (error) {
93
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
94
+ Error.captureStackTrace(error, this.suseLinuxEnterpriseServer15);
95
+ }
96
+ throw error;
97
+ }
98
+ return this.predefinedManagedImage(scope, id, opts, this.SUSE_LINUX_ENTERPRISE_SERVER_15_CONFIG);
99
+ }
100
+ /**
101
+ * Imports the Ubuntu 22.04 Amazon-managed image
102
+ *
103
+ * @param scope The construct scope
104
+ * @param id Identifier of the construct
105
+ * @param opts The Amazon-managed image attributes
106
+ *
107
+ * @see https://documentation.ubuntu.com/aws
108
+ * @see https://hub.docker.com/_/ubuntu
109
+ */
110
+ static ubuntuServer2204(scope, id, opts) {
111
+ try {
112
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
113
+ }
114
+ catch (error) {
115
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
116
+ Error.captureStackTrace(error, this.ubuntuServer2204);
117
+ }
118
+ throw error;
119
+ }
120
+ return this.predefinedManagedImage(scope, id, opts, this.UBUNTU_SERVER_22_04_CONFIG);
121
+ }
122
+ /**
123
+ * Imports the Ubuntu 24.04 Amazon-managed image
124
+ *
125
+ * @param scope The construct scope
126
+ * @param id Identifier of the construct
127
+ * @param opts The Amazon-managed image attributes
128
+ *
129
+ * @see https://documentation.ubuntu.com/aws
130
+ * @see https://hub.docker.com/_/ubuntu
131
+ */
132
+ static ubuntuServer2404(scope, id, opts) {
133
+ try {
134
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
135
+ }
136
+ catch (error) {
137
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
138
+ Error.captureStackTrace(error, this.ubuntuServer2404);
139
+ }
140
+ throw error;
141
+ }
142
+ return this.predefinedManagedImage(scope, id, opts, this.UBUNTU_SERVER_24_04_CONFIG);
143
+ }
144
+ /**
145
+ * Imports the Windows Server 2016 Core Amazon-managed image
146
+ *
147
+ * @param scope The construct scope
148
+ * @param id Identifier of the construct
149
+ * @param opts The Amazon-managed image attributes
150
+ *
151
+ * @see https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/index.html
152
+ * @see https://hub.docker.com/r/microsoft/windows-servercore
153
+ */
154
+ static windowsServer2016Core(scope, id, opts) {
155
+ try {
156
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
157
+ }
158
+ catch (error) {
159
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
160
+ Error.captureStackTrace(error, this.windowsServer2016Core);
161
+ }
162
+ throw error;
163
+ }
164
+ return this.predefinedManagedImage(scope, id, opts, this.WINDOWS_SERVER_2016_CORE_CONFIG);
165
+ }
166
+ /**
167
+ * Imports the Windows Server 2016 Full Amazon-managed image
168
+ *
169
+ * @param scope The construct scope
170
+ * @param id Identifier of the construct
171
+ * @param opts The Amazon-managed image attributes
172
+ *
173
+ * @see https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/index.html
174
+ */
175
+ static windowsServer2016Full(scope, id, opts) {
176
+ try {
177
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
178
+ }
179
+ catch (error) {
180
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
181
+ Error.captureStackTrace(error, this.windowsServer2016Full);
182
+ }
183
+ throw error;
184
+ }
185
+ return this.predefinedManagedImage(scope, id, opts, this.WINDOWS_SERVER_2016_FULL_CONFIG);
186
+ }
187
+ /**
188
+ * Imports the Windows Server 2019 Core Amazon-managed image
189
+ *
190
+ * @param scope The construct scope
191
+ * @param id Identifier of the construct
192
+ * @param opts The Amazon-managed image attributes
193
+ *
194
+ * @see https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/index.html
195
+ * @see https://hub.docker.com/r/microsoft/windows-servercore
196
+ */
197
+ static windowsServer2019Core(scope, id, opts) {
198
+ try {
199
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
200
+ }
201
+ catch (error) {
202
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
203
+ Error.captureStackTrace(error, this.windowsServer2019Core);
204
+ }
205
+ throw error;
206
+ }
207
+ return this.predefinedManagedImage(scope, id, opts, this.WINDOWS_SERVER_2019_CORE_CONFIG);
208
+ }
209
+ /**
210
+ * Imports the Windows Server 2019 Full Amazon-managed image
211
+ *
212
+ * @param scope The construct scope
213
+ * @param id Identifier of the construct
214
+ * @param opts The Amazon-managed image attributes
215
+ *
216
+ * @see https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/index.html
217
+ */
218
+ static windowsServer2019Full(scope, id, opts) {
219
+ try {
220
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
221
+ }
222
+ catch (error) {
223
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
224
+ Error.captureStackTrace(error, this.windowsServer2019Full);
225
+ }
226
+ throw error;
227
+ }
228
+ return this.predefinedManagedImage(scope, id, opts, this.WINDOWS_SERVER_2019_FULL_CONFIG);
229
+ }
230
+ /**
231
+ * Imports the Windows Server 2022 Core Amazon-managed image
232
+ *
233
+ * @param scope The construct scope
234
+ * @param id Identifier of the construct
235
+ * @param opts The Amazon-managed image attributes
236
+ *
237
+ * @see https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/index.html
238
+ */
239
+ static windowsServer2022Core(scope, id, opts) {
240
+ try {
241
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
242
+ }
243
+ catch (error) {
244
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
245
+ Error.captureStackTrace(error, this.windowsServer2022Core);
246
+ }
247
+ throw error;
248
+ }
249
+ return this.predefinedManagedImage(scope, id, opts, this.WINDOWS_SERVER_2022_CORE_CONFIG);
250
+ }
251
+ /**
252
+ * Imports the Windows Server 2022 Full Amazon-managed image
253
+ *
254
+ * @param scope The construct scope
255
+ * @param id Identifier of the construct
256
+ * @param opts The Amazon-managed image attributes
257
+ *
258
+ * @see https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/index.html
259
+ */
260
+ static windowsServer2022Full(scope, id, opts) {
261
+ try {
262
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
263
+ }
264
+ catch (error) {
265
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
266
+ Error.captureStackTrace(error, this.windowsServer2022Full);
267
+ }
268
+ throw error;
269
+ }
270
+ return this.predefinedManagedImage(scope, id, opts, this.WINDOWS_SERVER_2022_FULL_CONFIG);
271
+ }
272
+ /**
273
+ * Imports the Windows Server 2025 Core Amazon-managed image
274
+ *
275
+ * @param scope The construct scope
276
+ * @param id Identifier of the construct
277
+ * @param opts The Amazon-managed image attributes
278
+ *
279
+ * @see https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/index.html
280
+ */
281
+ static windowsServer2025Core(scope, id, opts) {
282
+ try {
283
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
284
+ }
285
+ catch (error) {
286
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
287
+ Error.captureStackTrace(error, this.windowsServer2025Core);
288
+ }
289
+ throw error;
290
+ }
291
+ return this.predefinedManagedImage(scope, id, opts, this.WINDOWS_SERVER_2025_CORE_CONFIG);
292
+ }
293
+ /**
294
+ * Imports the Windows Server 2025 Full Amazon-managed image
295
+ *
296
+ * @param scope The construct scope
297
+ * @param id Identifier of the construct
298
+ * @param opts The Amazon-managed image attributes
299
+ *
300
+ * @see https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/index.html
301
+ */
302
+ static windowsServer2025Full(scope, id, opts) {
303
+ try {
304
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
305
+ }
306
+ catch (error) {
307
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
308
+ Error.captureStackTrace(error, this.windowsServer2025Full);
309
+ }
310
+ throw error;
311
+ }
312
+ return this.predefinedManagedImage(scope, id, opts, this.WINDOWS_SERVER_2025_FULL_CONFIG);
313
+ }
314
+ /**
315
+ * Imports the macOS 14 Amazon-managed image
316
+ *
317
+ * @param scope The construct scope
318
+ * @param id Identifier of the construct
319
+ * @param opts The Amazon-managed image attributes
320
+ *
321
+ * @see https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-mac-instances.html
322
+ */
323
+ static macOS14(scope, id, opts) {
324
+ try {
325
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
326
+ }
327
+ catch (error) {
328
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
329
+ Error.captureStackTrace(error, this.macOS14);
330
+ }
331
+ throw error;
332
+ }
333
+ return this.predefinedManagedImage(scope, id, opts, this.MACOS_14_CONFIG);
334
+ }
335
+ /**
336
+ * Imports the macOS 15 Amazon-managed image
337
+ *
338
+ * @param scope The construct scope
339
+ * @param id Identifier of the construct
340
+ * @param opts The Amazon-managed image attributes
341
+ *
342
+ * @see https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-mac-instances.html
343
+ */
344
+ static macOS15(scope, id, opts) {
345
+ try {
346
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageOptions(opts);
347
+ }
348
+ catch (error) {
349
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
350
+ Error.captureStackTrace(error, this.macOS15);
351
+ }
352
+ throw error;
353
+ }
354
+ return this.predefinedManagedImage(scope, id, opts, this.MACOS_15_CONFIG);
355
+ }
356
+ /**
357
+ * Imports an Amazon-managed image from its attributes
358
+ *
359
+ * @param scope The construct scope
360
+ * @param id Identifier of the construct
361
+ * @param attrs - The Amazon-managed image attributes
362
+ */
363
+ static fromAmazonManagedImageAttributes(scope, id, attrs) {
364
+ try {
365
+ jsiiDeprecationWarnings._aws_cdk_aws_imagebuilder_alpha_AmazonManagedImageAttributes(attrs);
366
+ }
367
+ catch (error) {
368
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
369
+ Error.captureStackTrace(error, this.fromAmazonManagedImageAttributes);
370
+ }
371
+ throw error;
372
+ }
373
+ return image_1.Image.fromImageArn(scope, id, cdk.Stack.of(scope).formatArn({
374
+ service: 'imagebuilder',
375
+ account: 'aws',
376
+ resource: 'image',
377
+ resourceName: `${attrs.imageName}/${attrs.imageVersion ?? constants_1.LATEST_VERSION}`,
378
+ }));
379
+ }
380
+ /**
381
+ * Imports an Amazon-managed image from its name
382
+ *
383
+ * @param scope The construct scope
384
+ * @param id Identifier of the construct
385
+ * @param amazonManagedImageName - The name of the Amazon-managed image
386
+ */
387
+ static fromAmazonManagedImageName(scope, id, amazonManagedImageName) {
388
+ return this.fromAmazonManagedImageAttributes(scope, id, { imageName: amazonManagedImageName });
389
+ }
390
+ static AMAZON_LINUX_2_CONFIG = {
391
+ image: 'Amazon Linux 2',
392
+ supportedCombinations: {
393
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'amazon-linux-2-x86',
394
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.ARM64}`]: 'amazon-linux-2-arm64',
395
+ [`${image_1.ImageType.DOCKER}-${image_1.ImageArchitecture.X86_64}`]: 'amazon-linux-x86-2',
396
+ },
397
+ };
398
+ static AMAZON_LINUX_2023_CONFIG = {
399
+ image: 'Amazon Linux 2023',
400
+ supportedCombinations: {
401
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'amazon-linux-2023-x86',
402
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.ARM64}`]: 'amazon-linux-2023-arm64',
403
+ [`${image_1.ImageType.DOCKER}-${image_1.ImageArchitecture.X86_64}`]: 'amazon-linux-2023-x86-2023',
404
+ },
405
+ };
406
+ static RED_HAT_ENTERPRISE_LINUX_10_CONFIG = {
407
+ image: 'Red Hat Enterprise Linux 10',
408
+ supportedCombinations: {
409
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'red-hat-enterprise-linux-10-x86',
410
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.ARM64}`]: 'red-hat-enterprise-linux-10-arm64',
411
+ },
412
+ };
413
+ static SUSE_LINUX_ENTERPRISE_SERVER_15_CONFIG = {
414
+ image: 'SUSE Linux Enterprise Server 15',
415
+ supportedCombinations: {
416
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'suse-linux-enterprise-server-15-x86',
417
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.ARM64}`]: 'suse-linux-enterprise-server-15-arm64',
418
+ },
419
+ };
420
+ static UBUNTU_SERVER_22_04_CONFIG = {
421
+ image: 'Ubuntu 22.04',
422
+ supportedCombinations: {
423
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'ubuntu-server-22-lts-x86',
424
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.ARM64}`]: 'ubuntu-server-22-lts-arm64',
425
+ [`${image_1.ImageType.DOCKER}-${image_1.ImageArchitecture.X86_64}`]: 'ubuntu-22-x86-22-04',
426
+ },
427
+ };
428
+ static UBUNTU_SERVER_24_04_CONFIG = {
429
+ image: 'Ubuntu 24.04',
430
+ supportedCombinations: {
431
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'ubuntu-server-24-lts-x86',
432
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.ARM64}`]: 'ubuntu-server-24-lts-arm64',
433
+ [`${image_1.ImageType.DOCKER}-${image_1.ImageArchitecture.X86_64}`]: 'ubuntu-24-x86-24-04',
434
+ },
435
+ };
436
+ static WINDOWS_SERVER_2016_CORE_CONFIG = {
437
+ image: 'Windows Server 2016 Core',
438
+ supportedCombinations: {
439
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'windows-server-2016-english-core-base-x86',
440
+ [`${image_1.ImageType.DOCKER}-${image_1.ImageArchitecture.X86_64}`]: 'windows-server-2016-x86-core-ltsc2016-amd64',
441
+ },
442
+ };
443
+ static WINDOWS_SERVER_2016_FULL_CONFIG = {
444
+ image: 'Windows Server 2016 Full',
445
+ supportedCombinations: {
446
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'windows-server-2016-english-full-base-x86',
447
+ },
448
+ };
449
+ static WINDOWS_SERVER_2019_CORE_CONFIG = {
450
+ image: 'Windows Server 2019 Core',
451
+ supportedCombinations: {
452
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'windows-server-2019-english-core-base-x86',
453
+ [`${image_1.ImageType.DOCKER}-${image_1.ImageArchitecture.X86_64}`]: 'windows-server-2019-x86-core-ltsc2019-amd64',
454
+ },
455
+ };
456
+ static WINDOWS_SERVER_2019_FULL_CONFIG = {
457
+ image: 'Windows Server 2019 Full',
458
+ supportedCombinations: {
459
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'windows-server-2019-english-full-base-x86',
460
+ },
461
+ };
462
+ static WINDOWS_SERVER_2022_CORE_CONFIG = {
463
+ image: 'Windows Server 2022 Core',
464
+ supportedCombinations: {
465
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'windows-server-2022-english-core-base-x86',
466
+ },
467
+ };
468
+ static WINDOWS_SERVER_2022_FULL_CONFIG = {
469
+ image: 'Windows Server 2022 Full',
470
+ supportedCombinations: {
471
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'windows-server-2022-english-full-base-x86',
472
+ },
473
+ };
474
+ static WINDOWS_SERVER_2025_CORE_CONFIG = {
475
+ image: 'Windows Server 2025 Core',
476
+ supportedCombinations: {
477
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'windows-server-2025-english-core-base-x86',
478
+ },
479
+ };
480
+ static WINDOWS_SERVER_2025_FULL_CONFIG = {
481
+ image: 'Windows Server 2025 Full',
482
+ supportedCombinations: {
483
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'windows-server-2025-english-full-base-x86',
484
+ },
485
+ };
486
+ static MACOS_14_CONFIG = {
487
+ image: 'macOS 14',
488
+ supportedCombinations: {
489
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'macos-sonoma-x86',
490
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.ARM64}`]: 'macos-sonoma-arm64',
491
+ },
492
+ };
493
+ static MACOS_15_CONFIG = {
494
+ image: 'macOS 15',
495
+ supportedCombinations: {
496
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.X86_64}`]: 'macos-sequoia-x86',
497
+ [`${image_1.ImageType.AMI}-${image_1.ImageArchitecture.ARM64}`]: 'macos-sequoia-arm64',
498
+ },
499
+ };
500
+ static validatePredefinedManagedImageOptions(scope, opts, image) {
501
+ if (cdk.Token.isUnresolved(opts.imageArchitecture)) {
502
+ throw new cdk.ValidationError(`architecture cannot be a token for ${image}`, scope);
503
+ }
504
+ if (cdk.Token.isUnresolved(opts.imageType)) {
505
+ throw new cdk.ValidationError(`type cannot be a token for ${image}`, scope);
506
+ }
507
+ }
508
+ static predefinedManagedImage(scope, id, opts, config) {
509
+ this.validatePredefinedManagedImageOptions(scope, opts, config.image);
510
+ const key = `${opts.imageType}-${opts.imageArchitecture}`;
511
+ const imageName = config.supportedCombinations[key];
512
+ if (!imageName) {
513
+ throw new cdk.ValidationError(`architecture ${opts.imageArchitecture} with type ${opts.imageType} is not a supported architecture and type for ${config.image}`, scope);
514
+ }
515
+ return this.fromAmazonManagedImageAttributes(scope, id, {
516
+ imageName,
517
+ imageVersion: opts.imageVersion,
518
+ });
519
+ }
520
+ }
521
+ exports.AmazonManagedImage = AmazonManagedImage;
522
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hem9uLW1hbmFnZWQtaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbWF6b24tbWFuYWdlZC1pbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFtQztBQUVuQyxtQ0FBc0U7QUFDdEUsbURBQXFEO0FBK0NyRDs7R0FFRztBQUNILE1BQWEsa0JBQWtCOztJQUM3Qjs7Ozs7Ozs7O09BU0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLElBQStCOzs7Ozs7Ozs7O1FBQ3RGLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBQ2pGO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxJQUErQjs7Ozs7Ozs7OztRQUN6RixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztLQUNwRjtJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksTUFBTSxDQUFDLHVCQUF1QixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLElBQStCOzs7Ozs7Ozs7O1FBQ2pHLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0tBQzlGO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsMkJBQTJCLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsSUFBK0I7Ozs7Ozs7Ozs7UUFDckcsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7S0FDbEc7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b250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElJbWFnZSwgSW1hZ2UsIEltYWdlQXJjaGl0ZWN0dXJlLCBJbWFnZVR5cGUgfSBmcm9tICcuL2ltYWdlJztcbmltcG9ydCB7IExBVEVTVF9WRVJTSU9OIH0gZnJvbSAnLi9wcml2YXRlL2NvbnN0YW50cyc7XG5cbi8qKlxuICogQXR0cmlidXRlcyBmb3IgaW1wb3J0aW5nIGFuIEFtYXpvbi1tYW5hZ2VkIGltYWdlIGJ5IG5hbWUgKGFuZCBvcHRpb25hbGx5IGEgdmVyc2lvbilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbWF6b25NYW5hZ2VkSW1hZ2VBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBBbWF6b24tbWFuYWdlZCBpbWFnZS4gVGhlIHByb3ZpZGVkIG5hbWUgbXVzdCBiZSBub3JtYWxpemVkIGJ5IGNvbnZlcnRpbmcgYWxsIGFscGhhYmV0aWNhbFxuICAgKiBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoIGh5cGhlbnMuXG4gICAqL1xuICByZWFkb25seSBpbWFnZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIEFtYXpvbi1tYW5hZ2VkIGltYWdlXG4gICAqXG4gICAqIEBkZWZhdWx0IHgueC54XG4gICAqL1xuICByZWFkb25seSBpbWFnZVZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Igc2VsZWN0aW5nIGEgcHJlZGVmaW5lZCBBbWF6b24tbWFuYWdlZCBpbWFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFtYXpvbk1hbmFnZWRJbWFnZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgQW1hem9uLW1hbmFnZWQgaW1hZ2VcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlQXJjaGl0ZWN0dXJlOiBJbWFnZUFyY2hpdGVjdHVyZTtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIEFtYXpvbi1tYW5hZ2VkIGltYWdlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVR5cGU6IEltYWdlVHlwZTtcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIEFtYXpvbi1tYW5hZ2VkIGltYWdlXG4gICAqXG4gICAqIEBkZWZhdWx0IHgueC54XG4gICAqL1xuICByZWFkb25seSBpbWFnZVZlcnNpb24/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBBbWF6b25NYW5hZ2VkSW1hZ2VDb25maWcge1xuICByZWFkb25seSBpbWFnZTogc3RyaW5nO1xuICByZWFkb25seSBzdXBwb3J0ZWRDb21iaW5hdGlvbnM6IHsgW2NvbWJvOiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgY2xhc3MgZm9yIHdvcmtpbmcgd2l0aCBBbWF6b24tbWFuYWdlZCBpbWFnZXNcbiAqL1xuZXhwb3J0IGNsYXNzIEFtYXpvbk1hbmFnZWRJbWFnZSB7XG4gIC8qKlxuICAgKiBJbXBvcnRzIHRoZSBBbWF6b24gTGludXggMiBBbWF6b24tbWFuYWdlZCBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgSWRlbnRpZmllciBvZiB0aGUgY29uc3RydWN0XG4gICAqIEBwYXJhbSBvcHRzIFRoZSBBbWF6b24tbWFuYWdlZCBpbWFnZSBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xpbnV4L2FsMi91Zy9pbmRleC5odG1sXG4gICAqIEBzZWUgaHR0cHM6Ly9nYWxsZXJ5LmVjci5hd3MvYW1hem9ubGludXgvYW1hem9ubGludXhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYW1hem9uTGludXgyKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdHM6IEFtYXpvbk1hbmFnZWRJbWFnZU9wdGlvbnMpOiBJSW1hZ2Uge1xuICAgIHJldHVybiB0aGlzLnByZWRlZmluZWRNYW5hZ2VkSW1hZ2Uoc2NvcGUsIGlkLCBvcHRzLCB0aGlzLkFNQVpPTl9MSU5VWF8yX0NPTkZJRyk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0cyB0aGUgQW1hem9uIExpbnV4IDIwMjMgQW1hem9uLW1hbmFnZWQgaW1hZ2VcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIElkZW50aWZpZXIgb2YgdGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gb3B0cyBUaGUgQW1hem9uLW1hbmFnZWQgaW1hZ2UgYXR0cmlidXRlc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9saW51eC9hbDIwMjMvdWcvd2hhdC1pcy1hbWF6b24tbGludXguaHRtbFxuICAgKiBAc2VlIGh0dHBzOi8vZ2FsbGVyeS5lY3IuYXdzL2FtYXpvbmxpbnV4L2FtYXpvbmxpbnV4XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFtYXpvbkxpbnV4MjAyMyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBvcHRzOiBBbWF6b25NYW5hZ2VkSW1hZ2VPcHRpb25zKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWZpbmVkTWFuYWdlZEltYWdlKHNjb3BlLCBpZCwgb3B0cywgdGhpcy5BTUFaT05fTElOVVhfMjAyM19DT05GSUcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydHMgdGhlIFJlZCBIYXQgRW50ZXJwcmlzZSBMaW51eCAxMCBBbWF6b24tbWFuYWdlZCBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgSWRlbnRpZmllciBvZiB0aGUgY29uc3RydWN0XG4gICAqIEBwYXJhbSBvcHRzIFRoZSBBbWF6b24tbWFuYWdlZCBpbWFnZSBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9wYXJ0bmVycy9yZWRoYXQvZmFxc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWRIYXRFbnRlcnByaXNlTGludXgxMChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBvcHRzOiBBbWF6b25NYW5hZ2VkSW1hZ2VPcHRpb25zKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWZpbmVkTWFuYWdlZEltYWdlKHNjb3BlLCBpZCwgb3B0cywgdGhpcy5SRURfSEFUX0VOVEVSUFJJU0VfTElOVVhfMTBfQ09ORklHKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnRzIHRoZSBTVVNFIExpbnV4IEVudGVycHJpc2UgU2VydmVyIDE1IEFtYXpvbi1tYW5hZ2VkIGltYWdlXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBJZGVudGlmaWVyIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIG9wdHMgVGhlIEFtYXpvbi1tYW5hZ2VkIGltYWdlIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL2xpbnV4L2NvbW1lcmNpYWwtbGludXgvZmFxcy9cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3VzZUxpbnV4RW50ZXJwcmlzZVNlcnZlcjE1KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdHM6IEFtYXpvbk1hbmFnZWRJbWFnZU9wdGlvbnMpOiBJSW1hZ2Uge1xuICAgIHJldHVybiB0aGlzLnByZWRlZmluZWRNYW5hZ2VkSW1hZ2Uoc2NvcGUsIGlkLCBvcHRzLCB0aGlzLlNVU0VfTElOVVhfRU5URVJQUklTRV9TRVJWRVJfMTVfQ09ORklHKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnRzIHRoZSBVYnVudHUgMjIuMDQgQW1hem9uLW1hbmFnZWQgaW1hZ2VcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIElkZW50aWZpZXIgb2YgdGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gb3B0cyBUaGUgQW1hem9uLW1hbmFnZWQgaW1hZ2UgYXR0cmlidXRlc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jdW1lbnRhdGlvbi51YnVudHUuY29tL2F3c1xuICAgKiBAc2VlIGh0dHBzOi8vaHViLmRvY2tlci5jb20vXy91YnVudHVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdWJ1bnR1U2VydmVyMjIwNChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBvcHRzOiBBbWF6b25NYW5hZ2VkSW1hZ2VPcHRpb25zKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWZpbmVkTWFuYWdlZEltYWdlKHNjb3BlLCBpZCwgb3B0cywgdGhpcy5VQlVOVFVfU0VSVkVSXzIyXzA0X0NPTkZJRyk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0cyB0aGUgVWJ1bnR1IDI0LjA0IEFtYXpvbi1tYW5hZ2VkIGltYWdlXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBJZGVudGlmaWVyIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIG9wdHMgVGhlIEFtYXpvbi1tYW5hZ2VkIGltYWdlIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3VtZW50YXRpb24udWJ1bnR1LmNvbS9hd3NcbiAgICogQHNlZSBodHRwczovL2h1Yi5kb2NrZXIuY29tL18vdWJ1bnR1XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVidW50dVNlcnZlcjI0MDQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgb3B0czogQW1hem9uTWFuYWdlZEltYWdlT3B0aW9ucyk6IElJbWFnZSB7XG4gICAgcmV0dXJuIHRoaXMucHJlZGVmaW5lZE1hbmFnZWRJbWFnZShzY29wZSwgaWQsIG9wdHMsIHRoaXMuVUJVTlRVX1NFUlZFUl8yNF8wNF9DT05GSUcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydHMgdGhlIFdpbmRvd3MgU2VydmVyIDIwMTYgQ29yZSBBbWF6b24tbWFuYWdlZCBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgSWRlbnRpZmllciBvZiB0aGUgY29uc3RydWN0XG4gICAqIEBwYXJhbSBvcHRzIFRoZSBBbWF6b24tbWFuYWdlZCBpbWFnZSBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VjMi9sYXRlc3Qvd2luZG93cy1hbWktcmVmZXJlbmNlL2luZGV4Lmh0bWxcbiAgICogQHNlZSBodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvbWljcm9zb2Z0L3dpbmRvd3Mtc2VydmVyY29yZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aW5kb3dzU2VydmVyMjAxNkNvcmUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgb3B0czogQW1hem9uTWFuYWdlZEltYWdlT3B0aW9ucyk6IElJbWFnZSB7XG4gICAgcmV0dXJuIHRoaXMucHJlZGVmaW5lZE1hbmFnZWRJbWFnZShzY29wZSwgaWQsIG9wdHMsIHRoaXMuV0lORE9XU19TRVJWRVJfMjAxNl9DT1JFX0NPTkZJRyk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0cyB0aGUgV2luZG93cyBTZXJ2ZXIgMjAxNiBGdWxsIEFtYXpvbi1tYW5hZ2VkIGltYWdlXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBJZGVudGlmaWVyIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIG9wdHMgVGhlIEFtYXpvbi1tYW5hZ2VkIGltYWdlIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWMyL2xhdGVzdC93aW5kb3dzLWFtaS1yZWZlcmVuY2UvaW5kZXguaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aW5kb3dzU2VydmVyMjAxNkZ1bGwoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgb3B0czogQW1hem9uTWFuYWdlZEltYWdlT3B0aW9ucyk6IElJbWFnZSB7XG4gICAgcmV0dXJuIHRoaXMucHJlZGVmaW5lZE1hbmFnZWRJbWFnZShzY29wZSwgaWQsIG9wdHMsIHRoaXMuV0lORE9XU19TRVJWRVJfMjAxNl9GVUxMX0NPTkZJRyk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0cyB0aGUgV2luZG93cyBTZXJ2ZXIgMjAxOSBDb3JlIEFtYXpvbi1tYW5hZ2VkIGltYWdlXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBJZGVudGlmaWVyIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIG9wdHMgVGhlIEFtYXpvbi1tYW5hZ2VkIGltYWdlIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWMyL2xhdGVzdC93aW5kb3dzLWFtaS1yZWZlcmVuY2UvaW5kZXguaHRtbFxuICAgKiBAc2VlIGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9taWNyb3NvZnQvd2luZG93cy1zZXJ2ZXJjb3JlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpbmRvd3NTZXJ2ZXIyMDE5Q29yZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBvcHRzOiBBbWF6b25NYW5hZ2VkSW1hZ2VPcHRpb25zKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWZpbmVkTWFuYWdlZEltYWdlKHNjb3BlLCBpZCwgb3B0cywgdGhpcy5XSU5ET1dTX1NFUlZFUl8yMDE5X0NPUkVfQ09ORklHKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnRzIHRoZSBXaW5kb3dzIFNlcnZlciAyMDE5IEZ1bGwgQW1hem9uLW1hbmFnZWQgaW1hZ2VcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIElkZW50aWZpZXIgb2YgdGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gb3B0cyBUaGUgQW1hem9uLW1hbmFnZWQgaW1hZ2UgYXR0cmlidXRlc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lYzIvbGF0ZXN0L3dpbmRvd3MtYW1pLXJlZmVyZW5jZS9pbmRleC5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpbmRvd3NTZXJ2ZXIyMDE5RnVsbChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBvcHRzOiBBbWF6b25NYW5hZ2VkSW1hZ2VPcHRpb25zKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWZpbmVkTWFuYWdlZEltYWdlKHNjb3BlLCBpZCwgb3B0cywgdGhpcy5XSU5ET1dTX1NFUlZFUl8yMDE5X0ZVTExfQ09ORklHKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnRzIHRoZSBXaW5kb3dzIFNlcnZlciAyMDIyIENvcmUgQW1hem9uLW1hbmFnZWQgaW1hZ2VcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIElkZW50aWZpZXIgb2YgdGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gb3B0cyBUaGUgQW1hem9uLW1hbmFnZWQgaW1hZ2UgYXR0cmlidXRlc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lYzIvbGF0ZXN0L3dpbmRvd3MtYW1pLXJlZmVyZW5jZS9pbmRleC5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpbmRvd3NTZXJ2ZXIyMDIyQ29yZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBvcHRzOiBBbWF6b25NYW5hZ2VkSW1hZ2VPcHRpb25zKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWZpbmVkTWFuYWdlZEltYWdlKHNjb3BlLCBpZCwgb3B0cywgdGhpcy5XSU5ET1dTX1NFUlZFUl8yMDIyX0NPUkVfQ09ORklHKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnRzIHRoZSBXaW5kb3dzIFNlcnZlciAyMDIyIEZ1bGwgQW1hem9uLW1hbmFnZWQgaW1hZ2VcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIElkZW50aWZpZXIgb2YgdGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gb3B0cyBUaGUgQW1hem9uLW1hbmFnZWQgaW1hZ2UgYXR0cmlidXRlc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lYzIvbGF0ZXN0L3dpbmRvd3MtYW1pLXJlZmVyZW5jZS9pbmRleC5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpbmRvd3NTZXJ2ZXIyMDIyRnVsbChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBvcHRzOiBBbWF6b25NYW5hZ2VkSW1hZ2VPcHRpb25zKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWZpbmVkTWFuYWdlZEltYWdlKHNjb3BlLCBpZCwgb3B0cywgdGhpcy5XSU5ET1dTX1NFUlZFUl8yMDIyX0ZVTExfQ09ORklHKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnRzIHRoZSBXaW5kb3dzIFNlcnZlciAyMDI1IENvcmUgQW1hem9uLW1hbmFnZWQgaW1hZ2VcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIElkZW50aWZpZXIgb2YgdGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gb3B0cyBUaGUgQW1hem9uLW1hbmFnZWQgaW1hZ2UgYXR0cmlidXRlc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lYzIvbGF0ZXN0L3dpbmRvd3MtYW1pLXJlZmVyZW5jZS9pbmRleC5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpbmRvd3NTZXJ2ZXIyMDI1Q29yZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBvcHRzOiBBbWF6b25NYW5hZ2VkSW1hZ2VPcHRpb25zKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWZpbmVkTWFuYWdlZEltYWdlKHNjb3BlLCBpZCwgb3B0cywgdGhpcy5XSU5ET1dTX1NFUlZFUl8yMDI1X0NPUkVfQ09ORklHKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnRzIHRoZSBXaW5kb3dzIFNlcnZlciAyMDI1IEZ1bGwgQW1hem9uLW1hbmFnZWQgaW1hZ2VcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIElkZW50aWZpZXIgb2YgdGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gb3B0cyBUaGUgQW1hem9uLW1hbmFnZWQgaW1hZ2UgYXR0cmlidXRlc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lYzIvbGF0ZXN0L3dpbmRvd3MtYW1pLXJlZmVyZW5jZS9pbmRleC5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpbmRvd3NTZXJ2ZXIyMDI1RnVsbChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBvcHRzOiBBbWF6b25NYW5hZ2VkSW1hZ2VPcHRpb25zKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWZpbmVkTWFuYWdlZEltYWdlKHNjb3BlLCBpZCwgb3B0cywgdGhpcy5XSU5ET1dTX1NFUlZFUl8yMDI1X0ZVTExfQ09ORklHKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnRzIHRoZSBtYWNPUyAxNCBBbWF6b24tbWFuYWdlZCBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgSWRlbnRpZmllciBvZiB0aGUgY29uc3RydWN0XG4gICAqIEBwYXJhbSBvcHRzIFRoZSBBbWF6b24tbWFuYWdlZCBpbWFnZSBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2VjMi1tYWMtaW5zdGFuY2VzLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFjT1MxNChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBvcHRzOiBBbWF6b25NYW5hZ2VkSW1hZ2VPcHRpb25zKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWZpbmVkTWFuYWdlZEltYWdlKHNjb3BlLCBpZCwgb3B0cywgdGhpcy5NQUNPU18xNF9DT05GSUcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydHMgdGhlIG1hY09TIDE1IEFtYXpvbi1tYW5hZ2VkIGltYWdlXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBJZGVudGlmaWVyIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIG9wdHMgVGhlIEFtYXpvbi1tYW5hZ2VkIGltYWdlIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLW1hYy1pbnN0YW5jZXMuaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtYWNPUzE1KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdHM6IEFtYXpvbk1hbmFnZWRJbWFnZU9wdGlvbnMpOiBJSW1hZ2Uge1xuICAgIHJldHVybiB0aGlzLnByZWRlZmluZWRNYW5hZ2VkSW1hZ2Uoc2NvcGUsIGlkLCBvcHRzLCB0aGlzLk1BQ09TXzE1X0NPTkZJRyk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0cyBhbiBBbWF6b24tbWFuYWdlZCBpbWFnZSBmcm9tIGl0cyBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBJZGVudGlmaWVyIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGF0dHJzIC0gVGhlIEFtYXpvbi1tYW5hZ2VkIGltYWdlIGF0dHJpYnV0ZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFtYXpvbk1hbmFnZWRJbWFnZUF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBBbWF6b25NYW5hZ2VkSW1hZ2VBdHRyaWJ1dGVzLFxuICApOiBJSW1hZ2Uge1xuICAgIHJldHVybiBJbWFnZS5mcm9tSW1hZ2VBcm4oXG4gICAgICBzY29wZSxcbiAgICAgIGlkLFxuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgYWNjb3VudDogJ2F3cycsXG4gICAgICAgIHJlc291cmNlOiAnaW1hZ2UnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGAke2F0dHJzLmltYWdlTmFtZX0vJHthdHRycy5pbWFnZVZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT059YCxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0cyBhbiBBbWF6b24tbWFuYWdlZCBpbWFnZSBmcm9tIGl0cyBuYW1lXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBJZGVudGlmaWVyIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGFtYXpvbk1hbmFnZWRJbWFnZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgQW1hem9uLW1hbmFnZWQgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFtYXpvbk1hbmFnZWRJbWFnZU5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYW1hem9uTWFuYWdlZEltYWdlTmFtZTogc3RyaW5nKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tQW1hem9uTWFuYWdlZEltYWdlQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgaW1hZ2VOYW1lOiBhbWF6b25NYW5hZ2VkSW1hZ2VOYW1lIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQU1BWk9OX0xJTlVYXzJfQ09ORklHOiBBbWF6b25NYW5hZ2VkSW1hZ2VDb25maWcgPSB7XG4gICAgaW1hZ2U6ICdBbWF6b24gTGludXggMicsXG4gICAgc3VwcG9ydGVkQ29tYmluYXRpb25zOiB7XG4gICAgICBbYCR7SW1hZ2VUeXBlLkFNSX0tJHtJbWFnZUFyY2hpdGVjdHVyZS5YODZfNjR9YF06ICdhbWF6b24tbGludXgtMi14ODYnLFxuICAgICAgW2Ake0ltYWdlVHlwZS5BTUl9LSR7SW1hZ2VBcmNoaXRlY3R1cmUuQVJNNjR9YF06ICdhbWF6b24tbGludXgtMi1hcm02NCcsXG4gICAgICBbYCR7SW1hZ2VUeXBlLkRPQ0tFUn0tJHtJbWFnZUFyY2hpdGVjdHVyZS5YODZfNjR9YF06ICdhbWF6b24tbGludXgteDg2LTInLFxuICAgIH0sXG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQU1BWk9OX0xJTlVYXzIwMjNfQ09ORklHOiBBbWF6b25NYW5hZ2VkSW1hZ2VDb25maWcgPSB7XG4gICAgaW1hZ2U6ICdBbWF6b24gTGludXggMjAyMycsXG4gICAgc3VwcG9ydGVkQ29tYmluYXRpb25zOiB7XG4gICAgICBbYCR7SW1hZ2VUeXBlLkFNSX0tJHtJbWFnZUFyY2hpdGVjdHVyZS5YODZfNjR9YF06ICdhbWF6b24tbGludXgtMjAyMy14ODYnLFxuICAgICAgW2Ake0ltYWdlVHlwZS5BTUl9LSR7SW1hZ2VBcmNoaXRlY3R1cmUuQVJNNjR9YF06ICdhbWF6b24tbGludXgtMjAyMy1hcm02NCcsXG4gICAgICBbYCR7SW1hZ2VUeXBlLkRPQ0tFUn0tJHtJbWFnZUFyY2hpdGVjdHVyZS5YODZfNjR9YF06ICdhbWF6b24tbGludXgtMjAyMy14ODYtMjAyMycsXG4gICAgfSxcbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBSRURfSEFUX0VOVEVSUFJJU0VfTElOVVhfMTBfQ09ORklHOiBBbWF6b25NYW5hZ2VkSW1hZ2VDb25maWcgPSB7XG4gICAgaW1hZ2U6ICdSZWQgSGF0IEVudGVycHJpc2UgTGludXggMTAnLFxuICAgIHN1cHBvcnRlZENvbWJpbmF0aW9uczoge1xuICAgICAgW2Ake0ltYWdlVHlwZS5BTUl9LSR7SW1hZ2VBcmNoaXRlY3R1cmUuWDg2XzY0fWBdOiAncmVkLWhhdC1lbnRlcnByaXNlLWxpbnV4LTEwLXg4NicsXG4gICAgICBbYCR7SW1hZ2VUeXBlLkFNSX0tJHtJbWFnZUFyY2hpdGVjdHVyZS5BUk02NH1gXTogJ3JlZC1oYXQtZW50ZXJwcmlzZS1saW51eC0xMC1hcm02NCcsXG4gICAgfSxcbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBTVVNFX0xJTlVYX0VOVEVSUFJJU0VfU0VSVkVSXzE1X0NPTkZJRzogQW1hem9uTWFuYWdlZEltYWdlQ29uZmlnID0ge1xuICAgIGltYWdlOiAnU1VTRSBMaW51eCBFbnRlcnByaXNlIFNlcnZlciAxNScsXG4gICAgc3VwcG9ydGVkQ29tYmluYXRpb25zOiB7XG4gICAgICBbYCR7SW1hZ2VUeXBlLkFNSX0tJHtJbWFnZUFyY2hpdGVjdHVyZS5YODZfNjR9YF06ICdzdXNlLWxpbnV4LWVudGVycHJpc2Utc2VydmVyLTE1LXg4NicsXG4gICAgICBbYCR7SW1hZ2VUeXBlLkFNSX0tJHtJbWFnZUFyY2hpdGVjdHVyZS5BUk02NH1gXTogJ3N1c2UtbGludXgtZW50ZXJwcmlzZS1zZXJ2ZXItMTUtYXJtNjQnLFxuICAgIH0sXG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVUJVTlRVX1NFUlZFUl8yMl8wNF9DT05GSUc6IEFtYXpvbk1hbmFnZWRJbWFnZUNvbmZpZyA9IHtcbiAgICBpbWFnZTogJ1VidW50dSAyMi4wNCcsXG4gICAgc3VwcG9ydGVkQ29tYmluYXRpb25zOiB7XG4gICAgICBbYCR7SW1hZ2VUeXBlLkFNSX0tJHtJbWFnZUFyY2hpdGVjdHVyZS5YODZfNjR9YF06ICd1YnVudHUtc2VydmVyLTIyLWx0cy14ODYnLFxuICAgICAgW2Ake0ltYWdlVHlwZS5BTUl9LSR7SW1hZ2VBcmNoaXRlY3R1cmUuQVJNNjR9YF06ICd1YnVudHUtc2VydmVyLTIyLWx0cy1hcm02NCcsXG4gICAgICBbYCR7SW1hZ2VUeXBlLkRPQ0tFUn0tJHtJbWFnZUFyY2hpdGVjdHVyZS5YODZfNjR9YF06ICd1YnVudHUtMjIteDg2LTIyLTA0JyxcbiAgICB9LFxuICB9O1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFVCVU5UVV9TRVJWRVJfMjRfMDRfQ09ORklHOiBBbWF6b25NYW5hZ2VkSW1hZ2VDb25maWcgPSB7XG4gICAgaW1hZ2U6ICdVYnVudHUgMjQuMDQnLFxuICAgIHN1cHBvcnRlZENvbWJpbmF0aW9uczoge1xuICAgICAgW2Ake0ltYWdlVHlwZS5BTUl9LSR7SW1hZ2VBcmNoaXRlY3R1cmUuWDg2XzY0fWBdOiAndWJ1bnR1LXNlcnZlci0yNC1sdHMteDg2JyxcbiAgICAgIFtgJHtJbWFnZVR5cGUuQU1JfS0ke0ltYWdlQXJjaGl0ZWN0dXJlLkFSTTY0fWBdOiAndWJ1bnR1LXNlcnZlci0yNC1sdHMtYXJtNjQnLFxuICAgICAgW2Ake0ltYWdlVHlwZS5ET0NLRVJ9LSR7SW1hZ2VBcmNoaXRlY3R1cmUuWDg2XzY0fWBdOiAndWJ1bnR1LTI0LXg4Ni0yNC0wNCcsXG4gICAgfSxcbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBXSU5ET1dTX1NFUlZFUl8yMDE2X0NPUkVfQ09ORklHOiBBbWF6b25NYW5hZ2VkSW1hZ2VDb25maWcgPSB7XG4gICAgaW1hZ2U6ICdXaW5kb3dzIFNlcnZlciAyMDE2IENvcmUnLFxuICAgIHN1cHBvcnRlZENvbWJpbmF0aW9uczoge1xuICAgICAgW2Ake0ltYWdlVHlwZS5BTUl9LSR7SW1hZ2VBcmNoaXRlY3R1cmUuWDg2XzY0fWBdOiAnd2luZG93cy1zZXJ2ZXItMjAxNi1lbmdsaXNoLWNvcmUtYmFzZS14ODYnLFxuICAgICAgW2Ake0ltYWdlVHlwZS5ET0NLRVJ9LSR7SW1hZ2VBcmNoaXRlY3R1cmUuWDg2XzY0fWBdOiAnd2luZG93cy1zZXJ2ZXItMjAxNi14ODYtY29yZS1sdHNjMjAxNi1hbWQ2NCcsXG4gICAgfSxcbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBXSU5ET1dTX1NFUlZFUl8yMDE2X0ZVTExfQ09ORklHOiBBbWF6b25NYW5hZ2VkSW1hZ2VDb25maWcgPSB7XG4gICAgaW1hZ2U6ICdXaW5kb3dzIFNlcnZlciAyMDE2IEZ1bGwnLFxuICAgIHN1cHBvcnRlZENvbWJpbmF0aW9uczoge1xuICAgICAgW2Ake0ltYWdlVHlwZS5BTUl9LSR7SW1hZ2VBcmNoaXRlY3R1cmUuWDg2XzY0fWBdOiAnd2luZG93cy1zZXJ2ZXItMjAxNi1lbmdsaXNoLWZ1bGwtYmFzZS14ODYnLFxuICAgIH0sXG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgV0lORE9XU19TRVJWRVJfMjAxOV9DT1JFX0NPTkZJRzogQW1hem9uTWFuYWdlZEltYWdlQ29uZmlnID0ge1xuICAgIGltYWdlOiAnV2luZG93cyBTZXJ2ZXIgMjAxOSBDb3JlJyxcbiAgICBzdXBwb3J0ZWRDb21iaW5hdGlvbnM6IHtcbiAgICAgIFtgJHtJbWFnZVR5cGUuQU1JfS0ke0ltYWdlQXJjaGl0ZWN0dXJlLlg4Nl82NH1gXTogJ3dpbmRvd3Mtc2VydmVyLTIwMTktZW5nbGlzaC1jb3JlLWJhc2UteDg2JyxcbiAgICAgIFtgJHtJbWFnZVR5cGUuRE9DS0VSfS0ke0ltYWdlQXJjaGl0ZWN0dXJlLlg4Nl82NH1gXTogJ3dpbmRvd3Mtc2VydmVyLTIwMTkteDg2LWNvcmUtbHRzYzIwMTktYW1kNjQnLFxuICAgIH0sXG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgV0lORE9XU19TRVJWRVJfMjAxOV9GVUxMX0NPTkZJRzogQW1hem9uTWFuYWdlZEltYWdlQ29uZmlnID0ge1xuICAgIGltYWdlOiAnV2luZG93cyBTZXJ2ZXIgMjAxOSBGdWxsJyxcbiAgICBzdXBwb3J0ZWRDb21iaW5hdGlvbnM6IHtcbiAgICAgIFtgJHtJbWFnZVR5cGUuQU1JfS0ke0ltYWdlQXJjaGl0ZWN0dXJlLlg4Nl82NH1gXTogJ3dpbmRvd3Mtc2VydmVyLTIwMTktZW5nbGlzaC1mdWxsLWJhc2UteDg2JyxcbiAgICB9LFxuICB9O1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFdJTkRPV1NfU0VSVkVSXzIwMjJfQ09SRV9DT05GSUc6IEFtYXpvbk1hbmFnZWRJbWFnZUNvbmZpZyA9IHtcbiAgICBpbWFnZTogJ1dpbmRvd3MgU2VydmVyIDIwMjIgQ29yZScsXG4gICAgc3VwcG9ydGVkQ29tYmluYXRpb25zOiB7XG4gICAgICBbYCR7SW1hZ2VUeXBlLkFNSX0tJHtJbWFnZUFyY2hpdGVjdHVyZS5YODZfNjR9YF06ICd3aW5kb3dzLXNlcnZlci0yMDIyLWVuZ2xpc2gtY29yZS1iYXNlLXg4NicsXG4gICAgfSxcbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBXSU5ET1dTX1NFUlZFUl8yMDIyX0ZVTExfQ09ORklHOiBBbWF6b25NYW5hZ2VkSW1hZ2VDb25maWcgPSB7XG4gICAgaW1hZ2U6ICdXaW5kb3dzIFNlcnZlciAyMDIyIEZ1bGwnLFxuICAgIHN1cHBvcnRlZENvbWJpbmF0aW9uczoge1xuICAgICAgW2Ake0ltYWdlVHlwZS5BTUl9LSR7SW1hZ2VBcmNoaXRlY3R1cmUuWDg2XzY0fWBdOiAnd2luZG93cy1zZXJ2ZXItMjAyMi1lbmdsaXNoLWZ1bGwtYmFzZS14ODYnLFxuICAgIH0sXG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgV0lORE9XU19TRVJWRVJfMjAyNV9DT1JFX0NPTkZJRzogQW1hem9uTWFuYWdlZEltYWdlQ29uZmlnID0ge1xuICAgIGltYWdlOiAnV2luZG93cyBTZXJ2ZXIgMjAyNSBDb3JlJyxcbiAgICBzdXBwb3J0ZWRDb21iaW5hdGlvbnM6IHtcbiAgICAgIFtgJHtJbWFnZVR5cGUuQU1JfS0ke0ltYWdlQXJjaGl0ZWN0dXJlLlg4Nl82NH1gXTogJ3dpbmRvd3Mtc2VydmVyLTIwMjUtZW5nbGlzaC1jb3JlLWJhc2UteDg2JyxcbiAgICB9LFxuICB9O1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFdJTkRPV1NfU0VSVkVSXzIwMjVfRlVMTF9DT05GSUc6IEFtYXpvbk1hbmFnZWRJbWFnZUNvbmZpZyA9IHtcbiAgICBpbWFnZTogJ1dpbmRvd3MgU2VydmVyIDIwMjUgRnVsbCcsXG4gICAgc3VwcG9ydGVkQ29tYmluYXRpb25zOiB7XG4gICAgICBbYCR7SW1hZ2VUeXBlLkFNSX0tJHtJbWFnZUFyY2hpdGVjdHVyZS5YODZfNjR9YF06ICd3aW5kb3dzLXNlcnZlci0yMDI1LWVuZ2xpc2gtZnVsbC1iYXNlLXg4NicsXG4gICAgfSxcbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNQUNPU18xNF9DT05GSUc6IEFtYXpvbk1hbmFnZWRJbWFnZUNvbmZpZyA9IHtcbiAgICBpbWFnZTogJ21hY09TIDE0JyxcbiAgICBzdXBwb3J0ZWRDb21iaW5hdGlvbnM6IHtcbiAgICAgIFtgJHtJbWFnZVR5cGUuQU1JfS0ke0ltYWdlQXJjaGl0ZWN0dXJlLlg4Nl82NH1gXTogJ21hY29zLXNvbm9tYS14ODYnLFxuICAgICAgW2Ake0ltYWdlVHlwZS5BTUl9LSR7SW1hZ2VBcmNoaXRlY3R1cmUuQVJNNjR9YF06ICdtYWNvcy1zb25vbWEtYXJtNjQnLFxuICAgIH0sXG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTUFDT1NfMTVfQ09ORklHOiBBbWF6b25NYW5hZ2VkSW1hZ2VDb25maWcgPSB7XG4gICAgaW1hZ2U6ICdtYWNPUyAxNScsXG4gICAgc3VwcG9ydGVkQ29tYmluYXRpb25zOiB7XG4gICAgICBbYCR7SW1hZ2VUeXBlLkFNSX0tJHtJbWFnZUFyY2hpdGVjdHVyZS5YODZfNjR9YF06ICdtYWNvcy1zZXF1b2lhLXg4NicsXG4gICAgICBbYCR7SW1hZ2VUeXBlLkFNSX0tJHtJbWFnZUFyY2hpdGVjdHVyZS5BUk02NH1gXTogJ21hY29zLXNlcXVvaWEtYXJtNjQnLFxuICAgIH0sXG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdmFsaWRhdGVQcmVkZWZpbmVkTWFuYWdlZEltYWdlT3B0aW9ucyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIG9wdHM6IEFtYXpvbk1hbmFnZWRJbWFnZU9wdGlvbnMsXG4gICAgaW1hZ2U6IHN0cmluZyxcbiAgKSB7XG4gICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQob3B0cy5pbWFnZUFyY2hpdGVjdHVyZSkpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGBhcmNoaXRlY3R1cmUgY2Fubm90IGJlIGEgdG9rZW4gZm9yICR7aW1hZ2V9YCwgc2NvcGUpO1xuICAgIH1cblxuICAgIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKG9wdHMuaW1hZ2VUeXBlKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoYHR5cGUgY2Fubm90IGJlIGEgdG9rZW4gZm9yICR7aW1hZ2V9YCwgc2NvcGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHByZWRlZmluZWRNYW5hZ2VkSW1hZ2UoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIG9wdHM6IEFtYXpvbk1hbmFnZWRJbWFnZU9wdGlvbnMsXG4gICAgY29uZmlnOiBBbWF6b25NYW5hZ2VkSW1hZ2VDb25maWcsXG4gICk6IElJbWFnZSB7XG4gICAgdGhpcy52YWxpZGF0ZVByZWRlZmluZWRNYW5hZ2VkSW1hZ2VPcHRpb25zKHNjb3BlLCBvcHRzLCBjb25maWcuaW1hZ2UpO1xuXG4gICAgY29uc3Qga2V5ID0gYCR7b3B0cy5pbWFnZVR5cGV9LSR7b3B0cy5pbWFnZUFyY2hpdGVjdHVyZX1gO1xuICAgIGNvbnN0IGltYWdlTmFtZSA9IGNvbmZpZy5zdXBwb3J0ZWRDb21iaW5hdGlvbnNba2V5XTtcblxuICAgIGlmICghaW1hZ2VOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgYGFyY2hpdGVjdHVyZSAke29wdHMuaW1hZ2VBcmNoaXRlY3R1cmV9IHdpdGggdHlwZSAke29wdHMuaW1hZ2VUeXBlfSBpcyBub3QgYSBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIGFuZCB0eXBlIGZvciAke2NvbmZpZy5pbWFnZX1gLFxuICAgICAgICBzY29wZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZnJvbUFtYXpvbk1hbmFnZWRJbWFnZUF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7XG4gICAgICBpbWFnZU5hbWUsXG4gICAgICBpbWFnZVZlcnNpb246IG9wdHMuaW1hZ2VWZXJzaW9uLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,5 +1,6 @@
1
1
  import * as ecr from 'aws-cdk-lib/aws-ecr';
2
2
  import * as ssm from 'aws-cdk-lib/aws-ssm';
3
+ import { IImage } from './image';
3
4
  /**
4
5
  * Represents a base image that is used to start from in EC2 Image Builder image builds
5
6
  */
@@ -10,6 +11,12 @@ export declare class BaseImage {
10
11
  * @param amiId The AMI ID to use as the base image
11
12
  */
12
13
  static fromAmiId(amiId: string): BaseImage;
14
+ /**
15
+ * The EC2 Image Builder image to use as a base image in an image recipe
16
+ *
17
+ * @param image The EC2 Image Builder image to use as a base image
18
+ */
19
+ static fromImage(image: IImage): BaseImage;
13
20
  /**
14
21
  * The marketplace product ID for an AMI product to use as the base image in an image recipe
15
22
  *
@@ -67,6 +74,12 @@ export declare class BaseContainerImage {
67
74
  * @param tag The tag of the base image in the ECR public repository
68
75
  */
69
76
  static fromEcrPublic(registryAlias: string, repositoryName: string, tag: string): BaseContainerImage;
77
+ /**
78
+ * The EC2 Image Builder image to use as a base image in a container recipe
79
+ *
80
+ * @param image The EC2 Image Builder image to use as a base image
81
+ */
82
+ static fromImage(image: IImage): BaseContainerImage;
70
83
  /**
71
84
  * The string value of the base image to use in a container recipe. This can be an EC2 Image Builder image ARN,
72
85
  * an ECR or ECR public image, or a container URI sourced from a third-party container registry such as DockerHub.