@aws-solutions-constructs/core 2.54.1 → 2.56.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 +82 -30
- package/README.md +2 -0
- package/lib/kms-helper.d.ts +1 -1
- package/lib/kms-helper.js +3 -3
- package/lib/s3-bucket-helper.d.ts +1 -0
- package/lib/s3-bucket-helper.js +2 -1
- package/lib/sagemaker-helper.d.ts +4 -4
- package/lib/sagemaker-helper.js +9 -9
- package/lib/sns-helper.d.ts +1 -1
- package/lib/sns-helper.js +3 -3
- package/lib/sqs-helper.js +2 -2
- package/package.json +4 -4
- package/test/kinesis-streams-helper.test.js +2 -2
- package/test/kms-helper.test.js +3 -3
- package/test/sagemaker-helper.test.js +13 -13
- package/test/sns-helper.test.js +19 -19
- package/test/sqs-helper.test.js +2 -2
package/.jsii
CHANGED
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"npmlog": "^7.0.0"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@aws-cdk/integ-tests-alpha": "2.
|
|
17
|
-
"aws-cdk-lib": "^2.
|
|
16
|
+
"@aws-cdk/integ-tests-alpha": "2.138.0-alpha.0",
|
|
17
|
+
"aws-cdk-lib": "^2.138.0",
|
|
18
18
|
"constructs": "^10.0.0"
|
|
19
19
|
},
|
|
20
20
|
"dependencyClosure": {
|
|
@@ -534,6 +534,19 @@
|
|
|
534
534
|
}
|
|
535
535
|
}
|
|
536
536
|
},
|
|
537
|
+
"aws-cdk-lib.aws_bcmdataexports": {
|
|
538
|
+
"targets": {
|
|
539
|
+
"dotnet": {
|
|
540
|
+
"package": "Amazon.CDK.AWS.BCMDataExports"
|
|
541
|
+
},
|
|
542
|
+
"java": {
|
|
543
|
+
"package": "software.amazon.awscdk.services.bcmdataexports"
|
|
544
|
+
},
|
|
545
|
+
"python": {
|
|
546
|
+
"module": "aws_cdk.aws_bcmdataexports"
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
},
|
|
537
550
|
"aws-cdk-lib.aws_bedrock": {
|
|
538
551
|
"targets": {
|
|
539
552
|
"dotnet": {
|
|
@@ -638,6 +651,19 @@
|
|
|
638
651
|
}
|
|
639
652
|
}
|
|
640
653
|
},
|
|
654
|
+
"aws-cdk-lib.aws_cleanroomsml": {
|
|
655
|
+
"targets": {
|
|
656
|
+
"dotnet": {
|
|
657
|
+
"package": "Amazon.CDK.AWS.CleanRoomsML"
|
|
658
|
+
},
|
|
659
|
+
"java": {
|
|
660
|
+
"package": "software.amazon.awscdk.services.cleanroomsml"
|
|
661
|
+
},
|
|
662
|
+
"python": {
|
|
663
|
+
"module": "aws_cdk.aws_cleanroomsml"
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
},
|
|
641
667
|
"aws-cdk-lib.aws_cloud9": {
|
|
642
668
|
"targets": {
|
|
643
669
|
"dotnet": {
|
|
@@ -769,6 +795,19 @@
|
|
|
769
795
|
}
|
|
770
796
|
}
|
|
771
797
|
},
|
|
798
|
+
"aws-cdk-lib.aws_codeconnections": {
|
|
799
|
+
"targets": {
|
|
800
|
+
"dotnet": {
|
|
801
|
+
"package": "Amazon.CDK.AWS.CodeConnections"
|
|
802
|
+
},
|
|
803
|
+
"java": {
|
|
804
|
+
"package": "software.amazon.awscdk.services.codeconnections"
|
|
805
|
+
},
|
|
806
|
+
"python": {
|
|
807
|
+
"module": "aws_cdk.aws_codeconnections"
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
},
|
|
772
811
|
"aws-cdk-lib.aws_codedeploy": {
|
|
773
812
|
"targets": {
|
|
774
813
|
"dotnet": {
|
|
@@ -1042,6 +1081,19 @@
|
|
|
1042
1081
|
}
|
|
1043
1082
|
}
|
|
1044
1083
|
},
|
|
1084
|
+
"aws-cdk-lib.aws_deadline": {
|
|
1085
|
+
"targets": {
|
|
1086
|
+
"dotnet": {
|
|
1087
|
+
"package": "Amazon.CDK.AWS.Deadline"
|
|
1088
|
+
},
|
|
1089
|
+
"java": {
|
|
1090
|
+
"package": "software.amazon.awscdk.services.deadline"
|
|
1091
|
+
},
|
|
1092
|
+
"python": {
|
|
1093
|
+
"module": "aws_cdk.aws_deadline"
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
},
|
|
1045
1097
|
"aws-cdk-lib.aws_detective": {
|
|
1046
1098
|
"targets": {
|
|
1047
1099
|
"dotnet": {
|
|
@@ -3697,7 +3749,7 @@
|
|
|
3697
3749
|
},
|
|
3698
3750
|
"description": "Core CDK Construct for patterns library",
|
|
3699
3751
|
"homepage": "https://github.com/awslabs/aws-solutions-constructs.git",
|
|
3700
|
-
"jsiiVersion": "1.
|
|
3752
|
+
"jsiiVersion": "1.97.0 (build 729de35)",
|
|
3701
3753
|
"license": "Apache-2.0",
|
|
3702
3754
|
"metadata": {
|
|
3703
3755
|
"jsii": {
|
|
@@ -3708,7 +3760,7 @@
|
|
|
3708
3760
|
},
|
|
3709
3761
|
"name": "@aws-solutions-constructs/core",
|
|
3710
3762
|
"readme": {
|
|
3711
|
-
"markdown": "# core module\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n\n\n> All classes are under active development and subject to non-backward compatible changes or removal in any\n> future version. These are not subject to the [Semantic Versioning](https://semver.org/) model.\n> This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package.\n\n---\n<!--END STABILITY BANNER-->\n\n| **Reference Documentation**:| <span style=\"font-weight: normal\">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|\n|:-------------|:-------------|\n<div style=\"height:8px\"></div>\n\nThe core library includes the basic building blocks of the AWS Solutions Constructs Library. It defines the core classes that are used in the rest of the AWS Solutions Constructs Library.\n\n## Default Properties for AWS CDK Constructs\n\nCore library sets the default properties for the AWS CDK Constructs used by the AWS Solutions Constructs Library constructs.\n\nFor example, the following is the snippet of default properties for S3 Bucket construct created by AWS Solutions Constructs. By default, it will turn on the server-side encryption, bucket versioning, block all public access and setup the S3 access logging.\n\n```\n{\n encryption: s3.BucketEncryption.S3_MANAGED,\n versioned: true,\n blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,\n removalPolicy: RemovalPolicy.RETAIN,\n serverAccessLogsBucket: loggingBucket\n}\n```\n\n## Override the default properties\n\nThe default properties set by the Core library can be overridden by user provided properties. For example, the user can override the Amazon S3 Block Public Access property to meet specific requirements.\n\n```\n const stack = new cdk.Stack();\n\n const props: CloudFrontToS3Props = {\n bucketProps: {\n blockPublicAccess: {\n blockPublicAcls: false,\n blockPublicPolicy: true,\n ignorePublicAcls: false,\n restrictPublicBuckets: true\n }\n }\n };\n\n new CloudFrontToS3(stack, 'test-cloudfront-s3', props);\n\n expect(stack).toHaveResource(\"AWS::S3::Bucket\", {\n PublicAccessBlockConfiguration: {\n BlockPublicAcls: false,\n BlockPublicPolicy: true,\n IgnorePublicAcls: false,\n RestrictPublicBuckets: true\n },\n });\n```\n\n## Property override warnings\n\nWhen a default property from the Core library is overridden by a user-provided property, Constructs will emit one or more warning messages to the console highlighting the change(s). These messages are intended to provide situational awareness to the user and prevent unintentional overrides that could create security risks. These messages will appear whenever deployment/build-related commands are executed, including `cdk deploy`, `cdk synth`, `npm test`, etc.\n\nExample message:\n`AWS_CONSTRUCTS_WARNING: An override has been provided for the property: BillingMode. Default value: 'PAY_PER_REQUEST'. You provided: 'PROVISIONED'.`\n\n#### Toggling override warnings\n\nOverride warning messages are enabled by default, but can be explicitly turned on/off using the `overrideWarningsEnabled` shell variable.\n\n- To explicitly <u>turn off</u> override warnings, run `export overrideWarningsEnabled=false`.\n- To explicitly <u>turn on</u> override warnings, run `export overrideWarningsEnabled=true`.\n- To revert to the default, run `unset overrideWarningsEnabled`."
|
|
3763
|
+
"markdown": "# core module\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n\n\n> All classes are under active development and subject to non-backward compatible changes or removal in any\n> future version. These are not subject to the [Semantic Versioning](https://semver.org/) model.\n> This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package.\n\n---\n<!--END STABILITY BANNER-->\n\n| **Reference Documentation**:| <span style=\"font-weight: normal\">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|\n|:-------------|:-------------|\n<div style=\"height:8px\"></div>\n\nThe core library includes the basic building blocks of the AWS Solutions Constructs Library. It defines the core classes that are used in the rest of the AWS Solutions Constructs Library.\n\n> NOTE: Functions in the core library are not part of the published interface for Solutions Constructs. While they are not hidden, using them directly can result in breaking changes outside the scope of a Major release. As many users have expressed an interest in accessing this functionality, we are in the process of exposing this functionality through factories that will produce individual well architected resources. Find the current state of this effort under `aws-constructs-factories`.\n\n## Default Properties for AWS CDK Constructs\n\nCore library sets the default properties for the AWS CDK Constructs used by the AWS Solutions Constructs Library constructs.\n\nFor example, the following is the snippet of default properties for S3 Bucket construct created by AWS Solutions Constructs. By default, it will turn on the server-side encryption, bucket versioning, block all public access and setup the S3 access logging.\n\n```\n{\n encryption: s3.BucketEncryption.S3_MANAGED,\n versioned: true,\n blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,\n removalPolicy: RemovalPolicy.RETAIN,\n serverAccessLogsBucket: loggingBucket\n}\n```\n\n## Override the default properties\n\nThe default properties set by the Core library can be overridden by user provided properties. For example, the user can override the Amazon S3 Block Public Access property to meet specific requirements.\n\n```\n const stack = new cdk.Stack();\n\n const props: CloudFrontToS3Props = {\n bucketProps: {\n blockPublicAccess: {\n blockPublicAcls: false,\n blockPublicPolicy: true,\n ignorePublicAcls: false,\n restrictPublicBuckets: true\n }\n }\n };\n\n new CloudFrontToS3(stack, 'test-cloudfront-s3', props);\n\n expect(stack).toHaveResource(\"AWS::S3::Bucket\", {\n PublicAccessBlockConfiguration: {\n BlockPublicAcls: false,\n BlockPublicPolicy: true,\n IgnorePublicAcls: false,\n RestrictPublicBuckets: true\n },\n });\n```\n\n## Property override warnings\n\nWhen a default property from the Core library is overridden by a user-provided property, Constructs will emit one or more warning messages to the console highlighting the change(s). These messages are intended to provide situational awareness to the user and prevent unintentional overrides that could create security risks. These messages will appear whenever deployment/build-related commands are executed, including `cdk deploy`, `cdk synth`, `npm test`, etc.\n\nExample message:\n`AWS_CONSTRUCTS_WARNING: An override has been provided for the property: BillingMode. Default value: 'PAY_PER_REQUEST'. You provided: 'PROVISIONED'.`\n\n#### Toggling override warnings\n\nOverride warning messages are enabled by default, but can be explicitly turned on/off using the `overrideWarningsEnabled` shell variable.\n\n- To explicitly <u>turn off</u> override warnings, run `export overrideWarningsEnabled=false`.\n- To explicitly <u>turn on</u> override warnings, run `export overrideWarningsEnabled=true`.\n- To revert to the default, run `unset overrideWarningsEnabled`."
|
|
3712
3764
|
},
|
|
3713
3765
|
"repository": {
|
|
3714
3766
|
"directory": "source/patterns/@aws-solutions-constructs/core",
|
|
@@ -5228,7 +5280,7 @@
|
|
|
5228
5280
|
"kind": "interface",
|
|
5229
5281
|
"locationInModule": {
|
|
5230
5282
|
"filename": "lib/sagemaker-helper.ts",
|
|
5231
|
-
"line":
|
|
5283
|
+
"line": 327
|
|
5232
5284
|
},
|
|
5233
5285
|
"name": "BuildSagemakerEndpointProps",
|
|
5234
5286
|
"properties": [
|
|
@@ -5241,7 +5293,7 @@
|
|
|
5241
5293
|
"immutable": true,
|
|
5242
5294
|
"locationInModule": {
|
|
5243
5295
|
"filename": "lib/sagemaker-helper.ts",
|
|
5244
|
-
"line":
|
|
5296
|
+
"line": 345
|
|
5245
5297
|
},
|
|
5246
5298
|
"name": "endpointConfigProps",
|
|
5247
5299
|
"optional": true,
|
|
@@ -5258,7 +5310,7 @@
|
|
|
5258
5310
|
"immutable": true,
|
|
5259
5311
|
"locationInModule": {
|
|
5260
5312
|
"filename": "lib/sagemaker-helper.ts",
|
|
5261
|
-
"line":
|
|
5313
|
+
"line": 351
|
|
5262
5314
|
},
|
|
5263
5315
|
"name": "endpointProps",
|
|
5264
5316
|
"optional": true,
|
|
@@ -5275,7 +5327,7 @@
|
|
|
5275
5327
|
"immutable": true,
|
|
5276
5328
|
"locationInModule": {
|
|
5277
5329
|
"filename": "lib/sagemaker-helper.ts",
|
|
5278
|
-
"line":
|
|
5330
|
+
"line": 333
|
|
5279
5331
|
},
|
|
5280
5332
|
"name": "existingSagemakerEndpointObj",
|
|
5281
5333
|
"optional": true,
|
|
@@ -5292,7 +5344,7 @@
|
|
|
5292
5344
|
"immutable": true,
|
|
5293
5345
|
"locationInModule": {
|
|
5294
5346
|
"filename": "lib/sagemaker-helper.ts",
|
|
5295
|
-
"line":
|
|
5347
|
+
"line": 339
|
|
5296
5348
|
},
|
|
5297
5349
|
"name": "modelProps",
|
|
5298
5350
|
"optional": true,
|
|
@@ -5309,7 +5361,7 @@
|
|
|
5309
5361
|
"immutable": true,
|
|
5310
5362
|
"locationInModule": {
|
|
5311
5363
|
"filename": "lib/sagemaker-helper.ts",
|
|
5312
|
-
"line":
|
|
5364
|
+
"line": 357
|
|
5313
5365
|
},
|
|
5314
5366
|
"name": "vpc",
|
|
5315
5367
|
"optional": true,
|
|
@@ -5327,7 +5379,7 @@
|
|
|
5327
5379
|
"kind": "interface",
|
|
5328
5380
|
"locationInModule": {
|
|
5329
5381
|
"filename": "lib/sagemaker-helper.ts",
|
|
5330
|
-
"line":
|
|
5382
|
+
"line": 360
|
|
5331
5383
|
},
|
|
5332
5384
|
"name": "BuildSagemakerEndpointResponse",
|
|
5333
5385
|
"properties": [
|
|
@@ -5336,7 +5388,7 @@
|
|
|
5336
5388
|
"immutable": true,
|
|
5337
5389
|
"locationInModule": {
|
|
5338
5390
|
"filename": "lib/sagemaker-helper.ts",
|
|
5339
|
-
"line":
|
|
5391
|
+
"line": 361
|
|
5340
5392
|
},
|
|
5341
5393
|
"name": "endpoint",
|
|
5342
5394
|
"type": {
|
|
@@ -5348,7 +5400,7 @@
|
|
|
5348
5400
|
"immutable": true,
|
|
5349
5401
|
"locationInModule": {
|
|
5350
5402
|
"filename": "lib/sagemaker-helper.ts",
|
|
5351
|
-
"line":
|
|
5403
|
+
"line": 362
|
|
5352
5404
|
},
|
|
5353
5405
|
"name": "endpointConfig",
|
|
5354
5406
|
"optional": true,
|
|
@@ -5361,7 +5413,7 @@
|
|
|
5361
5413
|
"immutable": true,
|
|
5362
5414
|
"locationInModule": {
|
|
5363
5415
|
"filename": "lib/sagemaker-helper.ts",
|
|
5364
|
-
"line":
|
|
5416
|
+
"line": 363
|
|
5365
5417
|
},
|
|
5366
5418
|
"name": "model",
|
|
5367
5419
|
"optional": true,
|
|
@@ -6481,7 +6533,7 @@
|
|
|
6481
6533
|
"kind": "interface",
|
|
6482
6534
|
"locationInModule": {
|
|
6483
6535
|
"filename": "lib/sagemaker-helper.ts",
|
|
6484
|
-
"line":
|
|
6536
|
+
"line": 388
|
|
6485
6537
|
},
|
|
6486
6538
|
"name": "DeploySagemakerEndpointResponse",
|
|
6487
6539
|
"properties": [
|
|
@@ -6490,7 +6542,7 @@
|
|
|
6490
6542
|
"immutable": true,
|
|
6491
6543
|
"locationInModule": {
|
|
6492
6544
|
"filename": "lib/sagemaker-helper.ts",
|
|
6493
|
-
"line":
|
|
6545
|
+
"line": 389
|
|
6494
6546
|
},
|
|
6495
6547
|
"name": "endpoint",
|
|
6496
6548
|
"type": {
|
|
@@ -6502,7 +6554,7 @@
|
|
|
6502
6554
|
"immutable": true,
|
|
6503
6555
|
"locationInModule": {
|
|
6504
6556
|
"filename": "lib/sagemaker-helper.ts",
|
|
6505
|
-
"line":
|
|
6557
|
+
"line": 390
|
|
6506
6558
|
},
|
|
6507
6559
|
"name": "endpointConfig",
|
|
6508
6560
|
"optional": true,
|
|
@@ -6515,7 +6567,7 @@
|
|
|
6515
6567
|
"immutable": true,
|
|
6516
6568
|
"locationInModule": {
|
|
6517
6569
|
"filename": "lib/sagemaker-helper.ts",
|
|
6518
|
-
"line":
|
|
6570
|
+
"line": 391
|
|
6519
6571
|
},
|
|
6520
6572
|
"name": "model",
|
|
6521
6573
|
"optional": true,
|
|
@@ -7398,7 +7450,7 @@
|
|
|
7398
7450
|
"kind": "interface",
|
|
7399
7451
|
"locationInModule": {
|
|
7400
7452
|
"filename": "lib/s3-bucket-helper.ts",
|
|
7401
|
-
"line":
|
|
7453
|
+
"line": 276
|
|
7402
7454
|
},
|
|
7403
7455
|
"name": "S3Props",
|
|
7404
7456
|
"properties": [
|
|
@@ -7407,7 +7459,7 @@
|
|
|
7407
7459
|
"immutable": true,
|
|
7408
7460
|
"locationInModule": {
|
|
7409
7461
|
"filename": "lib/s3-bucket-helper.ts",
|
|
7410
|
-
"line":
|
|
7462
|
+
"line": 279
|
|
7411
7463
|
},
|
|
7412
7464
|
"name": "bucketProps",
|
|
7413
7465
|
"optional": true,
|
|
@@ -7420,7 +7472,7 @@
|
|
|
7420
7472
|
"immutable": true,
|
|
7421
7473
|
"locationInModule": {
|
|
7422
7474
|
"filename": "lib/s3-bucket-helper.ts",
|
|
7423
|
-
"line":
|
|
7475
|
+
"line": 278
|
|
7424
7476
|
},
|
|
7425
7477
|
"name": "existingBucketInterface",
|
|
7426
7478
|
"optional": true,
|
|
@@ -7433,7 +7485,7 @@
|
|
|
7433
7485
|
"immutable": true,
|
|
7434
7486
|
"locationInModule": {
|
|
7435
7487
|
"filename": "lib/s3-bucket-helper.ts",
|
|
7436
|
-
"line":
|
|
7488
|
+
"line": 277
|
|
7437
7489
|
},
|
|
7438
7490
|
"name": "existingBucketObj",
|
|
7439
7491
|
"optional": true,
|
|
@@ -7446,7 +7498,7 @@
|
|
|
7446
7498
|
"immutable": true,
|
|
7447
7499
|
"locationInModule": {
|
|
7448
7500
|
"filename": "lib/s3-bucket-helper.ts",
|
|
7449
|
-
"line":
|
|
7501
|
+
"line": 280
|
|
7450
7502
|
},
|
|
7451
7503
|
"name": "existingLoggingBucketObj",
|
|
7452
7504
|
"optional": true,
|
|
@@ -7459,7 +7511,7 @@
|
|
|
7459
7511
|
"immutable": true,
|
|
7460
7512
|
"locationInModule": {
|
|
7461
7513
|
"filename": "lib/s3-bucket-helper.ts",
|
|
7462
|
-
"line":
|
|
7514
|
+
"line": 281
|
|
7463
7515
|
},
|
|
7464
7516
|
"name": "loggingBucketProps",
|
|
7465
7517
|
"optional": true,
|
|
@@ -7472,7 +7524,7 @@
|
|
|
7472
7524
|
"immutable": true,
|
|
7473
7525
|
"locationInModule": {
|
|
7474
7526
|
"filename": "lib/s3-bucket-helper.ts",
|
|
7475
|
-
"line":
|
|
7527
|
+
"line": 282
|
|
7476
7528
|
},
|
|
7477
7529
|
"name": "logS3AccessLogs",
|
|
7478
7530
|
"optional": true,
|
|
@@ -7490,7 +7542,7 @@
|
|
|
7490
7542
|
"kind": "interface",
|
|
7491
7543
|
"locationInModule": {
|
|
7492
7544
|
"filename": "lib/sagemaker-helper.ts",
|
|
7493
|
-
"line":
|
|
7545
|
+
"line": 558
|
|
7494
7546
|
},
|
|
7495
7547
|
"name": "SagemakerProps",
|
|
7496
7548
|
"properties": [
|
|
@@ -7499,7 +7551,7 @@
|
|
|
7499
7551
|
"immutable": true,
|
|
7500
7552
|
"locationInModule": {
|
|
7501
7553
|
"filename": "lib/sagemaker-helper.ts",
|
|
7502
|
-
"line":
|
|
7554
|
+
"line": 560
|
|
7503
7555
|
},
|
|
7504
7556
|
"name": "endpointProps",
|
|
7505
7557
|
"optional": true,
|
|
@@ -7512,7 +7564,7 @@
|
|
|
7512
7564
|
"immutable": true,
|
|
7513
7565
|
"locationInModule": {
|
|
7514
7566
|
"filename": "lib/sagemaker-helper.ts",
|
|
7515
|
-
"line":
|
|
7567
|
+
"line": 559
|
|
7516
7568
|
},
|
|
7517
7569
|
"name": "existingSagemakerEndpointObj",
|
|
7518
7570
|
"optional": true,
|
|
@@ -8031,6 +8083,6 @@
|
|
|
8031
8083
|
"symbolId": "lib/waf-helper:WafWebAclProps"
|
|
8032
8084
|
}
|
|
8033
8085
|
},
|
|
8034
|
-
"version": "2.
|
|
8035
|
-
"fingerprint": "
|
|
8086
|
+
"version": "2.56.0",
|
|
8087
|
+
"fingerprint": "okmO3qBwiqf4kndYoWGQydvA+CxuSq86GvRfrFXwJJA="
|
|
8036
8088
|
}
|
package/README.md
CHANGED
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
|
|
19
19
|
The core library includes the basic building blocks of the AWS Solutions Constructs Library. It defines the core classes that are used in the rest of the AWS Solutions Constructs Library.
|
|
20
20
|
|
|
21
|
+
> NOTE: Functions in the core library are not part of the published interface for Solutions Constructs. While they are not hidden, using them directly can result in breaking changes outside the scope of a Major release. As many users have expressed an interest in accessing this functionality, we are in the process of exposing this functionality through factories that will produce individual well architected resources. Find the current state of this effort under `aws-constructs-factories`.
|
|
22
|
+
|
|
21
23
|
## Default Properties for AWS CDK Constructs
|
|
22
24
|
|
|
23
25
|
Core library sets the default properties for the AWS CDK Constructs used by the AWS Solutions Constructs Library constructs.
|
package/lib/kms-helper.d.ts
CHANGED
|
@@ -15,4 +15,4 @@ import { Construct } from 'constructs';
|
|
|
15
15
|
/**
|
|
16
16
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
17
17
|
*/
|
|
18
|
-
export declare function buildEncryptionKey(scope: Construct, keyProps?: kms.KeyProps): kms.Key;
|
|
18
|
+
export declare function buildEncryptionKey(scope: Construct, id: string, keyProps?: kms.KeyProps): kms.Key;
|
package/lib/kms-helper.js
CHANGED
|
@@ -23,13 +23,13 @@ const utils_1 = require("./utils");
|
|
|
23
23
|
/**
|
|
24
24
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
25
25
|
*/
|
|
26
|
-
function buildEncryptionKey(scope, keyProps) {
|
|
26
|
+
function buildEncryptionKey(scope, id, keyProps) {
|
|
27
27
|
// Setup the key properties
|
|
28
28
|
let encryptionKeyProps;
|
|
29
29
|
// If property overrides have been provided, incorporate them and deploy
|
|
30
30
|
encryptionKeyProps = utils_1.consolidateProps(kms_defaults_1.DefaultEncryptionProps, keyProps);
|
|
31
31
|
// Create the encryption key and return
|
|
32
|
-
return new kms.Key(scope, '
|
|
32
|
+
return new kms.Key(scope, `'${id}Key'`, encryptionKeyProps);
|
|
33
33
|
}
|
|
34
34
|
exports.buildEncryptionKey = buildEncryptionKey;
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia21zLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImttcy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFFSDs7O0dBR0c7QUFFSCwyQ0FBMkM7QUFDM0MsaURBQXdEO0FBQ3hELG1DQUEyQztBQUkzQzs7R0FFRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXVCO0lBQ3RGLDJCQUEyQjtJQUMzQixJQUFJLGtCQUFrQixDQUFDO0lBRXZCLHdFQUF3RTtJQUN4RSxrQkFBa0IsR0FBRyx3QkFBZ0IsQ0FBQyxxQ0FBc0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUV4RSx1Q0FBdUM7SUFDdkMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBVEQsZ0RBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IERlZmF1bHRFbmNyeXB0aW9uUHJvcHMgfSBmcm9tICcuL2ttcy1kZWZhdWx0cyc7XG5pbXBvcnQgeyBjb25zb2xpZGF0ZVByb3BzIH0gZnJvbSAnLi91dGlscyc7XG4vLyBOb3RlOiBUbyBlbnN1cmUgQ0RLdjIgY29tcGF0aWJpbGl0eSwga2VlcCB0aGUgaW1wb3J0IHN0YXRlbWVudCBmb3IgQ29uc3RydWN0IHNlcGFyYXRlXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRFbmNyeXB0aW9uS2V5KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGtleVByb3BzPzoga21zLktleVByb3BzKToga21zLktleSB7XG4gIC8vIFNldHVwIHRoZSBrZXkgcHJvcGVydGllc1xuICBsZXQgZW5jcnlwdGlvbktleVByb3BzO1xuXG4gIC8vIElmIHByb3BlcnR5IG92ZXJyaWRlcyBoYXZlIGJlZW4gcHJvdmlkZWQsIGluY29ycG9yYXRlIHRoZW0gYW5kIGRlcGxveVxuICBlbmNyeXB0aW9uS2V5UHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRFbmNyeXB0aW9uUHJvcHMsIGtleVByb3BzKTtcblxuICAvLyBDcmVhdGUgdGhlIGVuY3J5cHRpb24ga2V5IGFuZCByZXR1cm5cbiAgcmV0dXJuIG5ldyBrbXMuS2V5KHNjb3BlLCBgJyR7aWR9S2V5J2AsIGVuY3J5cHRpb25LZXlQcm9wcyk7XG59Il19
|
|
@@ -52,6 +52,7 @@ export interface BuildS3BucketResponse {
|
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
54
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
55
|
+
* @internal This functionality is exposed externally through aws-constructs-factories
|
|
55
56
|
*/
|
|
56
57
|
export declare function buildS3Bucket(scope: Construct, props: BuildS3BucketProps, bucketId?: string): BuildS3BucketResponse;
|
|
57
58
|
/**
|
package/lib/s3-bucket-helper.js
CHANGED
|
@@ -117,6 +117,7 @@ function createAlbLoggingBucket(scope, bucketId, loggingBucketProps) {
|
|
|
117
117
|
exports.createAlbLoggingBucket = createAlbLoggingBucket;
|
|
118
118
|
/**
|
|
119
119
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
120
|
+
* @internal This functionality is exposed externally through aws-constructs-factories
|
|
120
121
|
*/
|
|
121
122
|
function buildS3Bucket(scope, props, bucketId) {
|
|
122
123
|
/** Default Life Cycle policy to transition older versions to Glacier after 90 days */
|
|
@@ -230,4 +231,4 @@ function CheckS3Props(propsObject) {
|
|
|
230
231
|
}
|
|
231
232
|
}
|
|
232
233
|
exports.CheckS3Props = CheckS3Props;
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtYnVja2V0LWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInMzLWJ1Y2tldC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFTSCx5Q0FBeUM7QUFFekMsNkRBQXNEO0FBQ3RELG1DQUErRTtBQUMvRSwrQ0FBa0Q7QUFDbEQsNkNBQXVDO0FBMEJ2Qzs7R0FFRztBQUNILFNBQWdCLDJCQUEyQixDQUFDLEtBQWdCLEVBQzFELFFBQWdCLEVBQ2hCLGtCQUFrQztJQUVsQyxpRkFBaUY7SUFDakYsb0NBQW9DO0lBQ3BDLE1BQU0sbUJBQW1CLEdBQUcsd0JBQWdCLENBQUMsbUNBQWMsRUFBRSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFFbkYsNEJBQTRCO0lBQzVCLDhCQUE4QjtJQUM5Qiw4RUFBOEU7SUFDOUUscUVBQXFFO0lBQ3JFLDZCQUE2QjtJQUM3QiwrRUFBK0U7SUFDL0UsdURBQXVEO0lBQ3ZELDZCQUE2QjtJQUM3QixnRkFBZ0Y7SUFDaEYsdURBQXVEO0lBQ3ZELHdDQUF3QztJQUN4QywrRUFBK0U7SUFDL0UsdURBQXVEO0lBQ3ZELE1BQU0sYUFBYSxHQUFjLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxVQUFVO0lBRWhHLDJCQUFtQixDQUFDLGFBQWEsRUFBRTtRQUNqQztZQUNFLEVBQUUsRUFBRSxLQUFLO1lBQ1QsTUFBTSxFQUFFLHdFQUF3RTtTQUNqRjtLQUNGLENBQUMsQ0FBQztJQUVILE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUM7QUEvQkQsa0VBK0JDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQiw2QkFBNkIsQ0FBQyxLQUFnQixFQUM1RCxRQUFnQixFQUNoQixrQkFBa0M7SUFFbEMsaUZBQWlGO0lBQ2pGLG9DQUFvQztJQUNwQyxJQUFJLG1CQUFtQixHQUFHLHdCQUFnQixDQUFDLG1DQUFjLEVB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KlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiAgVGhlIGZ1bmN0aW9ucyBmb3VuZCBoZXJlIGluIHRoZSBjb3JlIGxpYnJhcnkgYXJlIGZvciBpbnRlcm5hbCB1c2UgYW5kIGNhbiBiZSBjaGFuZ2VkXG4gKiAgb3IgcmVtb3ZlZCBvdXRzaWRlIG9mIGEgbWFqb3IgcmVsZWFzZS4gV2UgcmVjb21tZW5kIGFnYWluc3QgY2FsbGluZyB0aGVtIGRpcmVjdGx5IGZyb20gY2xpZW50IGNvZGUuXG4gKi9cblxuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBEZWZhdWx0UzNQcm9wcyB9IGZyb20gJy4vczMtYnVja2V0LWRlZmF1bHRzJztcbmltcG9ydCB7IG92ZXJyaWRlUHJvcHMsIGFkZENmblN1cHByZXNzUnVsZXMsIGNvbnNvbGlkYXRlUHJvcHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFN0b3JhZ2VDbGFzcyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbi8vIE5vdGU6IFRvIGVuc3VyZSBDREt2MiBjb21wYXRpYmlsaXR5LCBrZWVwIHRoZSBpbXBvcnQgc3RhdGVtZW50IGZvciBDb25zdHJ1Y3Qgc2VwYXJhdGVcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkUzNCdWNrZXRQcm9wcyB7XG4gIC8qKlxuICAgKiBVc2VyIHByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzIGZvciB0aGUgUzMgQnVja2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHM7XG4gIC8qKlxuICAgKiBVc2VyIHByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzIGZvciB0aGUgUzMgTG9nZ2luZyBCdWNrZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2luZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHM7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHR1cm4gb24gQWNjZXNzIExvZ3MgZm9yIFMzLiBVc2VzIGFuIFMzIGJ1Y2tldCB3aXRoIGFzc29jaWF0ZWQgc3RvcmFnZSBjb3N0cy5cbiAgICogRW5hYmxpbmcgQWNjZXNzIExvZ2dpbmcgaXMgYSBiZXN0IHByYWN0aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxvZ1MzQWNjZXNzTG9ncz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVMzQWNjZXNzTG9nZ2luZ0J1Y2tldChzY29wZTogQ29uc3RydWN0LFxuICBidWNrZXRJZDogc3RyaW5nLFxuICBsb2dnaW5nQnVja2V0UHJvcHM6IHMzLkJ1Y2tldFByb3BzKTogczMuQnVja2V0IHtcblxuICAvLyBJbnRyb2R1Y2UgdGhlIGRlZmF1bHQgcHJvcHMgc2luY2Ugd2UgY2FuJ3QgYmUgY2VydGFpbiB0aGUgY2FsbGVyIHVzZWQgdGhlbSBhbmRcbiAgLy8gdGhleSBhcmUgaW1wb3J0YW50IGJlc3QgcHJhY3RpY2VzXG4gIGNvbnN0IGNvbWJpbmVkQnVja2V0UHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRTM1Byb3BzKCksIGxvZ2dpbmdCdWNrZXRQcm9wcyk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBMb2dnaW5nIEJ1Y2tldFxuICAvLyBOT1NPTkFSICAodHlwZXNjcmlwdDpTNjI4MSlcbiAgLy8gQmxvY2sgUHVibGljIEFjY2VzcyBpcyBzZXQgYnkgRGVmYXVsdFMzUHJvcHMsIGJ1dCBTb25hcnF1YmUgY2FuJ3QgZGV0ZWN0IGl0XG4gIC8vIEl0IGlzIHZlcmlmaWVkIGJ5ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJyBpbiB0aGUgdW5pdCB0ZXN0c1xuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MjQ1KVxuICAvLyBFbmNyeXB0aW9uIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDpTNjI0OSlcbiAgLy8gZW5mb3JjZVNTTCAgaXMgdHVybmVkIG9uIGluIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgdGhhdCBTb25hcnF1YmUgZG9lc24ndCBzZWVcbiAgLy8gVmVyaWZpZWQgYnkgdW5pdCB0ZXN0ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJ1xuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OnR5cGVzY3JpcHQ6UzYyNDkpXG4gIC8vIHZlcnNpb25pbmcgaXMgdHVybmVkIG9uIGluIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgdGhhdCBTb25hcnF1YmUgZG9lc24ndCBzZWVcbiAgLy8gVmVyaWZpZWQgYnkgdW5pdCB0ZXN0ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJ1xuICBjb25zdCBsb2dnaW5nQnVja2V0OiBzMy5CdWNrZXQgPSBuZXcgczMuQnVja2V0KHNjb3BlLCBidWNrZXRJZCwgY29tYmluZWRCdWNrZXRQcm9wcyk7IC8vIE5PU09OQVJcblxuICBhZGRDZm5TdXBwcmVzc1J1bGVzKGxvZ2dpbmdCdWNrZXQsIFtcbiAgICB7XG4gICAgICBpZDogJ1czNScsXG4gICAgICByZWFzb246IFwiVGhpcyBTMyBidWNrZXQgaXMgdXNlZCBhcyB0aGUgYWNjZXNzIGxvZ2dpbmcgYnVja2V0IGZvciBhbm90aGVyIGJ1Y2tldFwiXG4gICAgfVxuICBdKTtcblxuICByZXR1cm4gbG9nZ2luZ0J1Y2tldDtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2xvdWRGcm9udExvZ2dpbmdCdWNrZXQoc2NvcGU6IENvbnN0cnVjdCxcbiAgYnVja2V0SWQ6IHN0cmluZyxcbiAgbG9nZ2luZ0J1Y2tldFByb3BzOiBzMy5CdWNrZXRQcm9wcyk6IHMzLkJ1Y2tldCB7XG5cbiAgLy8gSW50cm9kdWNlIHRoZSBkZWZhdWx0IHByb3BzIHNpbmNlIHdlIGNhbid0IGJlIGNlcnRhaW4gdGhlIGNhbGxlciB1c2VkIHRoZW0gYW5kXG4gIC8vIHRoZXkgYXJlIGltcG9ydGFudCBiZXN0IHByYWN0aWNlc1xuICBsZXQgY29tYmluZWRCdWNrZXRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdFMzUHJvcHMoKSwgbG9nZ2luZ0J1Y2tldFByb3BzKTtcblxuICBpZiAoIWxvZ2dpbmdCdWNrZXRQcm9wcy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0KSB7XG4gICAgLy8gQ3JlYXRlIGJ1Y2tldCBhbmQgYWRkIHRvIHByb3BzXG4gICAgY29uc3QgYWNjZXNzTG9nQnVja2V0OiBzMy5CdWNrZXQgPSBuZXcgczMuQnVja2V0KHNjb3BlLCBgJHtidWNrZXRJZH1BY2Nlc3NMb2dgLCBjb21iaW5lZEJ1Y2tldFByb3BzKTsgLy8gTk9TT05BUlxuICAgIGNvbWJpbmVkQnVja2V0UHJvcHMgPSBvdmVycmlkZVByb3BzKGNvbWJpbmVkQnVja2V0UHJvcHMsIHsgc2VydmVyQWNjZXNzTG9nc0J1Y2tldDogYWNjZXNzTG9nQnVja2V0IH0pO1xuXG4gICAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhhY2Nlc3NMb2dCdWNrZXQsIFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdXMzUnLFxuICAgICAgICByZWFzb246IFwiVGhpcyBTMyBidWNrZXQgaXMgdXNlZCBhcyB0aGUgYWNjZXNzIGxvZ2dpbmcgYnVja2V0IGZvciBhbm90aGVyIGJ1Y2tldFwiXG4gICAgICB9XG4gICAgXSk7XG4gIH1cblxuICAvLyBDcmVhdGUgdGhlIExvZ2dpbmcgQnVja2V0XG4gIC8vIE5PU09OQVIgICh0eXBlc2NyaXB0OlM2MjgxKVxuICAvLyBCbG9jayBQdWJsaWMgQWNjZXNzIGlzIHNldCBieSBEZWZhdWx0UzNQcm9wcywgYnV0IFNvbmFycXViZSBjYW4ndCBkZXRlY3QgaXRcbiAgLy8gSXQgaXMgdmVyaWZpZWQgYnkgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnIGluIHRoZSB1bml0IHRlc3RzXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYyNDUpXG4gIC8vIEVuY3J5cHRpb24gaXMgdHVybmVkIG9uIGluIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgdGhhdCBTb25hcnF1YmUgZG9lc24ndCBzZWVcbiAgLy8gVmVyaWZpZWQgYnkgdW5pdCB0ZXN0ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJ1xuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MjQ5KVxuICAvLyBlbmZvcmNlU1NMICBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6dHlwZXNjcmlwdDpTNjI0OSlcbiAgLy8gdmVyc2lvbmluZyBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIGNvbnN0IGNsb3VkZnJvbnRMb2dCdWNrZXQ6IHMzLkJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIGJ1Y2tldElkLCBjb21iaW5lZEJ1Y2tldFByb3BzKTsgLy8gTk9TT05BUlxuXG4gIHJldHVybiBjbG91ZGZyb250TG9nQnVja2V0O1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBbGJMb2dnaW5nQnVja2V0KHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGJ1Y2tldElkOiBzdHJpbmcsXG4gIGxvZ2dpbmdCdWNrZXRQcm9wczogczMuQnVja2V0UHJvcHMpOiBzMy5CdWNrZXQge1xuXG4gIC8vIEludHJvZHVjZSB0aGUgZGVmYXVsdCBwcm9wcyBzaW5jZSB3ZSBjYW4ndCBiZSBjZXJ0YWluIHRoZSBjYWxsZXIgdXNlZCB0aGVtIGFuZFxuICAvLyB0aGV5IGFyZSBpbXBvcnRhbnQgYmVzdCBwcmFjdGljZXNcbiAgY29uc3QgY29tYmluZWRCdWNrZXRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdFMzUHJvcHMoKSwgbG9nZ2luZ0J1Y2tldFByb3BzKTtcblxuICAvLyBDcmVhdGUgdGhlIExvZ2dpbmcgQnVja2V0XG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYyODEpXG4gIC8vIEJsb2NrIFB1YmxpYyBBY2Nlc3MgaXMgc2V0IGJ5IERlZmF1bHRTM1Byb3BzLCBidXQgU29uYXJxdWJlIGNhbid0IGRldGVjdCBpdFxuICAvLyBJdCBpcyB2ZXJpZmllZCBieSAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcycgaW4gdGhlIHVuaXQgdGVzdHNcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDpTNjI0NSlcbiAgLy8gRW5jcnlwdGlvbiBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYyNDkpXG4gIC8vIGVuZm9yY2VTU0wgIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDp0eXBlc2NyaXB0OlM2MjQ5KVxuICAvLyB2ZXJzaW9uaW5nIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgY29uc3QgbG9nZ2luZ0J1Y2tldDogczMuQnVja2V0ID0gbmV3IHMzLkJ1Y2tldChzY29wZSwgYnVja2V0SWQsIGNvbWJpbmVkQnVja2V0UHJvcHMpOyAvLyBOT1NPTkFSXG5cbiAgLy8gRXh0cmFjdCB0aGUgQ2ZuQnVja2V0IGZyb20gdGhlIGxvZ2dpbmdCdWNrZXRcbiAgY29uc3QgbG9nZ2luZ0J1Y2tldFJlc291cmNlID0gbG9nZ2luZ0J1Y2tldC5ub2RlLmZpbmRDaGlsZCgnUmVzb3VyY2UnKSBhcyBzMy5DZm5CdWNrZXQ7XG5cbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhsb2dnaW5nQnVja2V0UmVzb3VyY2UsIFtcbiAgICB7XG4gICAgICBpZDogJ1czNScsXG4gICAgICByZWFzb246IFwiVGhpcyBpcyBhIGxvZyBidWNrZXQgZm9yIGFuIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXJcIlxuICAgIH1cbiAgXSk7XG5cbiAgcmV0dXJuIGxvZ2dpbmdCdWNrZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTM0J1Y2tldFJlc3BvbnNlIHtcbiAgcmVhZG9ubHkgYnVja2V0OiBzMy5CdWNrZXQsXG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXQ/OiBzMy5CdWNrZXRcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTM0J1Y2tldChzY29wZTogQ29uc3RydWN0LFxuICBwcm9wczogQnVpbGRTM0J1Y2tldFByb3BzLFxuICBidWNrZXRJZD86IHN0cmluZyk6IEJ1aWxkUzNCdWNrZXRSZXNwb25zZSB7XG5cbiAgLyoqIERlZmF1bHQgTGlmZSBDeWNsZSBwb2xpY3kgdG8gdHJhbnNpdGlvbiBvbGRlciB2ZXJzaW9ucyB0byBHbGFjaWVyIGFmdGVyIDkwIGRheXMgKi9cbiAgY29uc3QgbGlmZWN5Y2xlUnVsZXM6IHMzLkxpZmVjeWNsZVJ1bGVbXSA9IFt7XG4gICAgbm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uczogW3tcbiAgICAgIHN0b3JhZ2VDbGFzczogU3RvcmFnZUNsYXNzLkdMQUNJRVIsXG4gICAgICB0cmFuc2l0aW9uQWZ0ZXI6IER1cmF0aW9uLmRheXMoOTApXG4gICAgfV1cbiAgfV07XG5cbiAgLy8gQ3JlYXRlIHRoZSBBcHBsaWNhdGlvbiBCdWNrZXRcbiAgbGV0IGRlZmF1bHRCdWNrZXRQcm9wczogczMuQnVja2V0UHJvcHM7XG4gIGxldCBsb2dnaW5nQnVja2V0O1xuICBjb25zdCByZXNvbHZlZEJ1Y2tldElkID0gYnVja2V0SWQgPyBidWNrZXRJZCArICdTM0J1Y2tldCcgOiAnUzNCdWNrZXQnO1xuICBjb25zdCBsb2dnaW5nQnVja2V0SWQgPSBidWNrZXRJZCA/IGJ1Y2tldElkICsgJ1MzTG9nZ2luZ0J1Y2tldCcgOiAnUzNMb2dnaW5nQnVja2V0JztcblxuICAvLyBJZiBsb2dnaW5nIFMzIGFjY2VzcyBsb2dzIGlzIGVuYWJsZWQvdW5kZWZpbmVkIGFuZCBhbiBleGlzdGluZyBidWNrZXQgb2JqZWN0IGlzIG5vdCBwcm92aWRlZFxuICBpZiAocHJvcHMubG9nUzNBY2Nlc3NMb2dzICE9PSBmYWxzZSAmJiAhKHByb3BzLmJ1Y2tldFByb3BzPy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0KSkge1xuICAgIC8vIENyZWF0ZSB0aGUgTG9nZ2luZyBCdWNrZXRcbiAgICBsZXQgbG9nZ2luZ0J1Y2tldFByb3BzID0gRGVmYXVsdFMzUHJvcHMoKTtcblxuICAgIGlmIChwcm9wcy5sb2dnaW5nQnVja2V0UHJvcHMpIHtcbiAgICAgIC8vIFVzZXIgcHJvdmlkZWQgbG9nZ2luZyBidWNrZXQgcHJvcHNcbiAgICAgIGxvZ2dpbmdCdWNrZXRQcm9wcyA9IG92ZXJyaWRlUHJvcHMobG9nZ2luZ0J1Y2tldFByb3BzLCBwcm9wcy5sb2dnaW5nQnVja2V0UHJvcHMpO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuYnVja2V0UHJvcHM/LnJlbW92YWxQb2xpY3kpIHtcbiAgICAgIC8vIElmIHRoZSBjbGllbnQgZXhwbGljaXRseSBzcGVjaWZpZWQgYSByZW1vdmFsIHBvbGljeSBmb3IgdGhlIG1haW4gYnVja2V0LFxuICAgICAgLy8gdGhlbiByZXBsaWNhdGUgdGhhdCBwb2xpY3kgb24gdGhlIGxvZ2dpbmcgYnVja2V0XG4gICAgICBsb2dnaW5nQnVja2V0UHJvcHMgPSBvdmVycmlkZVByb3BzKGxvZ2dpbmdCdWNrZXRQcm9wcywgeyByZW1vdmFsUG9saWN5OiBwcm9wcy5idWNrZXRQcm9wcy5yZW1vdmFsUG9saWN5IH0pO1xuICAgIH1cblxuICAgIGxvZ2dpbmdCdWNrZXQgPSBjcmVhdGVTM0FjY2Vzc0xvZ2dpbmdCdWNrZXQoc2NvcGUsIGxvZ2dpbmdCdWNrZXRJZCwgbG9nZ2luZ0J1Y2tldFByb3BzKTtcbiAgfSBlbHNlIGlmIChwcm9wcy5idWNrZXRQcm9wcz8uc2VydmVyQWNjZXNzTG9nc0J1Y2tldCkge1xuICAgIGxvZ2dpbmdCdWNrZXQgPSBwcm9wcy5idWNrZXRQcm9wcz8uc2VydmVyQWNjZXNzTG9nc0J1Y2tldCBhcyBzMy5CdWNrZXQ7XG4gIH1cblxuICAvLyBBdHRhY2ggdGhlIERlZmF1bHQgTGlmZSBDeWNsZSBwb2xpY3kgT05MWSBJRiB0aGUgdmVyc2lvbmluZyBpcyBFTkFCTEVEXG4gIGlmIChwcm9wcy5idWNrZXRQcm9wcz8udmVyc2lvbmVkID09PSB1bmRlZmluZWQgfHwgcHJvcHMuYnVja2V0UHJvcHMudmVyc2lvbmVkKSB7XG4gICAgZGVmYXVsdEJ1Y2tldFByb3BzID0gRGVmYXVsdFMzUHJvcHMobG9nZ2luZ0J1Y2tldCwgbGlmZWN5Y2xlUnVsZXMpO1xuICB9IGVsc2Uge1xuICAgIGRlZmF1bHRCdWNrZXRQcm9wcyA9IERlZmF1bHRTM1Byb3BzKGxvZ2dpbmdCdWNrZXQpO1xuICB9XG5cbiAgY29uc3QgY29tYmluZWRCdWNrZXRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoZGVmYXVsdEJ1Y2tldFByb3BzLCBwcm9wcy5idWNrZXRQcm9wcyk7XG5cbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDpTNjI4MSkgLSBCbG9jayBQdWJsaWMgQWNjZXNzIGlzIHNldCBieSBEZWZhdWx0UzNQcm9wcyxcbiAgLy8gYnV0IFNvbmFycXViZSBjYW4ndCBkZXRlY3QgaXRcbiAgLy8gSXQgaXMgdmVyaWZpZWQgYnkgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnIGluIHRoZSB1bml0IHRlc3RzXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYyNDUpXG4gIC8vIEVuY3J5cHRpb24gaXMgdHVybmVkIG9uIGluIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgdGhhdCBTb25hcnF1YmUgZG9lc24ndCBzZWVcbiAgLy8gVmVyaWZpZWQgYnkgdW5pdCB0ZXN0ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJ1xuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MjQ5KVxuICAvLyBlbmZvcmNlU1NMICBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6dHlwZXNjcmlwdDpTNjI0OSlcbiAgLy8gdmVyc2lvbmluZyBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIGNvbnN0IHMzQnVja2V0OiBzMy5CdWNrZXQgPSBuZXcgczMuQnVja2V0KHNjb3BlLCByZXNvbHZlZEJ1Y2tldElkLCBjb21iaW5lZEJ1Y2tldFByb3BzICk7IC8vIE5PU09OQVJcblxuICByZXR1cm4geyBidWNrZXQ6IHMzQnVja2V0LCBsb2dnaW5nQnVja2V0IH07XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZENmbk5hZ1MzQnVja2V0Tm90aWZpY2F0aW9uUnVsZXNUb1N1cHByZXNzKHN0YWNrUm9vdDogY2RrLlN0YWNrLCBsb2dpY2FsSWQ6IHN0cmluZykge1xuICBjb25zdCBub3RpZmljYXRpb25zUmVzb3VyY2VIYW5kbGVyID0gc3RhY2tSb290Lm5vZGUudHJ5RmluZENoaWxkKGxvZ2ljYWxJZCkgYXMgbGFtYmRhLkZ1bmN0aW9uO1xuICBjb25zdCBub3RpZmljYXRpb25zUmVzb3VyY2VIYW5kbGVyUm9sZVJvbGUgPSBub3RpZmljYXRpb25zUmVzb3VyY2VIYW5kbGVyLm5vZGUuZmluZENoaWxkKCdSb2xlJykgYXMgaWFtLlJvbGU7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNSZXNvdXJjZUhhbmRsZXJSb2xlUG9saWN5ID0gbm90aWZpY2F0aW9uc1Jlc291cmNlSGFuZGxlclJvbGVSb2xlLm5vZGUuZmluZENoaWxkKCdEZWZhdWx0UG9saWN5JykgYXMgaWFtLlBvbGljeTtcblxuICAvLyBFeHRyYWN0IHRoZSBDZm5GdW5jdGlvbiBmcm9tIHRoZSBGdW5jdGlvblxuICBjb25zdCBmblJlc291cmNlID0gbm90aWZpY2F0aW9uc1Jlc291cmNlSGFuZGxlci5ub2RlLmZpbmRDaGlsZCgnUmVzb3VyY2UnKSBhcyBsYW1iZGEuQ2ZuRnVuY3Rpb247XG4gIGFkZENmblN1cHByZXNzUnVsZXMoZm5SZXNvdXJjZSwgW1xuICAgIHtcbiAgICAgIGlkOiAnVzU4JyxcbiAgICAgIHJlYXNvbjogYExhbWJkYSBmdW5jdGlvbnMgaGFzIHRoZSByZXF1aXJlZCBwZXJtaXNzaW9uIHRvIHdyaXRlIENsb3VkV2F0Y2ggTG9ncy4gSXQgdXNlcyBjdXN0b20gcG9saWN5IGluc3RlYWQgb2YgYXJuOmF3czppYW06OmF3czpwb2xpY3kvc2VydmljZS1yb2xlL0FXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZSB3aXRoIHRpZ2h0ZXIgcGVybWlzc2lvbnMuYFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICdXODknLFxuICAgICAgcmVhc29uOiBgVGhpcyBpcyBub3QgYSBydWxlIGZvciB0aGUgZ2VuZXJhbCBjYXNlLCBqdXN0IGZvciBzcGVjaWZpYyB1c2UgY2FzZXMvaW5kdXN0cmllc2BcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnVzkyJyxcbiAgICAgIHJlYXNvbjogYEltcG9zc2libGUgZm9yIHVzIHRvIGRlZmluZSB0aGUgY29ycmVjdCBjb25jdXJyZW5jeSBmb3IgY2xpZW50c2BcbiAgICB9XG4gIF0pO1xuXG4gIC8vIEV4dHJhY3QgdGhlIENmblBvbGljeSBmcm9tIHRoZSBpYW0uUG9saWN5XG4gIGNvbnN0IHBvbGljeVJlc291cmNlID0gbm90aWZpY2F0aW9uc1Jlc291cmNlSGFuZGxlclJvbGVQb2xpY3kubm9kZS5maW5kQ2hpbGQoJ1Jlc291cmNlJykgYXMgaWFtLkNmblBvbGljeTtcbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhwb2xpY3lSZXNvdXJjZSwgW1xuICAgIHtcbiAgICAgIGlkOiAnVzEyJyxcbiAgICAgIHJlYXNvbjogYEJ1Y2tldCByZXNvdXJjZSBpcyAnKicgZHVlIHRvIGNpcmN1bGFyIGRlcGVuZGVuY3kgd2l0aCBidWNrZXQgYW5kIHJvbGUgY3JlYXRpb24gYXQgdGhlIHNhbWUgdGltZWBcbiAgICB9XG4gIF0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFMzUHJvcHMge1xuICByZWFkb25seSBleGlzdGluZ0J1Y2tldE9iaj86IHMzLkJ1Y2tldCxcbiAgcmVhZG9ubHkgZXhpc3RpbmdCdWNrZXRJbnRlcmZhY2U/OiBzMy5JQnVja2V0LFxuICByZWFkb25seSBidWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzLFxuICByZWFkb25seSBleGlzdGluZ0xvZ2dpbmdCdWNrZXRPYmo/OiBzMy5JQnVja2V0O1xuICByZWFkb25seSBsb2dnaW5nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcztcbiAgcmVhZG9ubHkgbG9nUzNBY2Nlc3NMb2dzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENoZWNrUzNQcm9wcyhwcm9wc09iamVjdDogUzNQcm9wcyB8IGFueSkge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIGlmICgocHJvcHNPYmplY3QuZXhpc3RpbmdCdWNrZXRPYmogfHwgcHJvcHNPYmplY3QuZXhpc3RpbmdCdWNrZXRJbnRlcmZhY2UpICYmIHByb3BzT2JqZWN0LmJ1Y2tldFByb3BzKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBidWNrZXRQcm9wcyBvciBleGlzdGluZ0J1Y2tldE9iaiwgYnV0IG5vdCBib3RoLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHNPYmplY3QuZXhpc3RpbmdMb2dnaW5nQnVja2V0T2JqICYmIHByb3BzT2JqZWN0LmxvZ2dpbmdCdWNrZXRQcm9wcykge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgZXhpc3RpbmdMb2dnaW5nQnVja2V0T2JqIG9yIGxvZ2dpbmdCdWNrZXRQcm9wcywgYnV0IG5vdCBib3RoLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAoKHByb3BzT2JqZWN0Py5sb2dTM0FjY2Vzc0xvZ3MgPT09IGZhbHNlKSAmJiAocHJvcHNPYmplY3QubG9nZ2luZ0J1Y2tldFByb3BzIHx8IHByb3BzT2JqZWN0LmV4aXN0aW5nTG9nZ2luZ0J1Y2tldE9iaikpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIElmIGxvZ1MzQWNjZXNzTG9ncyBpcyBmYWxzZSwgc3VwcGx5aW5nIGxvZ2dpbmdCdWNrZXRQcm9wcyBvciBleGlzdGluZ0xvZ2dpbmdCdWNrZXRPYmogaXMgaW52YWxpZC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHByb3BzT2JqZWN0LmV4aXN0aW5nQnVja2V0T2JqICYmIChwcm9wc09iamVjdC5sb2dnaW5nQnVja2V0UHJvcHMgfHwgcHJvcHNPYmplY3QubG9nUzNBY2Nlc3NMb2dzKSkge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gSWYgZXhpc3RpbmdCdWNrZXRPYmogaXMgcHJvdmlkZWQsIHN1cHBseWluZyBsb2dnaW5nQnVja2V0UHJvcHMgb3IgbG9nUzNBY2Nlc3NMb2dzIGlzIGFuIGVycm9yLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAoZXJyb3JGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2VzKTtcbiAgfVxufVxuIl19
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtYnVja2V0LWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInMzLWJ1Y2tldC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFTSCx5Q0FBeUM7QUFFekMsNkRBQXNEO0FBQ3RELG1DQUErRTtBQUMvRSwrQ0FBa0Q7QUFDbEQsNkNBQXVDO0FBMEJ2Qzs7R0FFRztBQUNILFNBQWdCLDJCQUEyQixDQUFDLEtBQWdCLEVBQzFELFFBQWdCLEVBQ2hCLGtCQUFrQztJQUVsQyxpRkFBaUY7SUFDakYsb0NBQW9DO0lBQ3BDLE1BQU0sbUJBQW1CLEdBQUcsd0JBQWdCLENBQUMsbUNBQWMsRUFBRSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFFbkYsNEJBQTRCO0lBQzVCLDhCQUE4QjtJQUM5Qiw4RUFBOEU7SUFDOUUscUVBQXFFO0lBQ3JFLDZCQUE2QjtJQUM3QiwrRUFBK0U7SUFDL0UsdURBQXVEO0lBQ3ZELDZCQUE2QjtJQUM3QixnRkFBZ0Y7SUFDaEYsdURBQXVEO0lBQ3ZELHdDQUF3QztJQUN4QywrRUFBK0U7SUFDL0UsdURBQXVEO0lBQ3ZELE1BQU0sYUFBYSxHQUFjLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxVQUFVO0lBRWhHLDJCQUFtQixDQUFDLGFBQWEsRUFBRTtRQUNqQztZQUNFLEVBQUUsRUFBRSxLQUFLO1lBQ1QsTUFBTSxFQUFFLHdFQUF3RTtTQUNqRjtLQUNGLENBQUMsQ0FBQztJQUVILE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUM7QUEvQkQsa0VBK0JDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQiw2QkFBNkIsQ0FBQyxLQUFnQixFQUM1RCxRQUFnQixFQUNoQixrQkFBa0M7SUFFbEMsaUZBQWlGO0lBQ2pGLG9DQUFvQztJQUNwQyxJQUFJLG1CQUFtQixHQUFHLHdCQUFnQixDQUFDLG1DQUFjLEVB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KipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgRGVmYXVsdFMzUHJvcHMgfSBmcm9tICcuL3MzLWJ1Y2tldC1kZWZhdWx0cyc7XG5pbXBvcnQgeyBvdmVycmlkZVByb3BzLCBhZGRDZm5TdXBwcmVzc1J1bGVzLCBjb25zb2xpZGF0ZVByb3BzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBTdG9yYWdlQ2xhc3MgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG4vLyBOb3RlOiBUbyBlbnN1cmUgQ0RLdjIgY29tcGF0aWJpbGl0eSwga2VlcCB0aGUgaW1wb3J0IHN0YXRlbWVudCBmb3IgQ29uc3RydWN0IHNlcGFyYXRlXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFMzQnVja2V0UHJvcHMge1xuICAvKipcbiAgICogVXNlciBwcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgdGhlIFMzIEJ1Y2tldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBidWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzO1xuICAvKipcbiAgICogVXNlciBwcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgdGhlIFMzIExvZ2dpbmcgQnVja2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzO1xuICAvKipcbiAgICogV2hldGhlciB0byB0dXJuIG9uIEFjY2VzcyBMb2dzIGZvciBTMy4gVXNlcyBhbiBTMyBidWNrZXQgd2l0aCBhc3NvY2lhdGVkIHN0b3JhZ2UgY29zdHMuXG4gICAqIEVuYWJsaW5nIEFjY2VzcyBMb2dnaW5nIGlzIGEgYmVzdCBwcmFjdGljZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBsb2dTM0FjY2Vzc0xvZ3M/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTM0FjY2Vzc0xvZ2dpbmdCdWNrZXQoc2NvcGU6IENvbnN0cnVjdCxcbiAgYnVja2V0SWQ6IHN0cmluZyxcbiAgbG9nZ2luZ0J1Y2tldFByb3BzOiBzMy5CdWNrZXRQcm9wcyk6IHMzLkJ1Y2tldCB7XG5cbiAgLy8gSW50cm9kdWNlIHRoZSBkZWZhdWx0IHByb3BzIHNpbmNlIHdlIGNhbid0IGJlIGNlcnRhaW4gdGhlIGNhbGxlciB1c2VkIHRoZW0gYW5kXG4gIC8vIHRoZXkgYXJlIGltcG9ydGFudCBiZXN0IHByYWN0aWNlc1xuICBjb25zdCBjb21iaW5lZEJ1Y2tldFByb3BzID0gY29uc29saWRhdGVQcm9wcyhEZWZhdWx0UzNQcm9wcygpLCBsb2dnaW5nQnVja2V0UHJvcHMpO1xuXG4gIC8vIENyZWF0ZSB0aGUgTG9nZ2luZyBCdWNrZXRcbiAgLy8gTk9TT05BUiAgKHR5cGVzY3JpcHQ6UzYyODEpXG4gIC8vIEJsb2NrIFB1YmxpYyBBY2Nlc3MgaXMgc2V0IGJ5IERlZmF1bHRTM1Byb3BzLCBidXQgU29uYXJxdWJlIGNhbid0IGRldGVjdCBpdFxuICAvLyBJdCBpcyB2ZXJpZmllZCBieSAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcycgaW4gdGhlIHVuaXQgdGVzdHNcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDpTNjI0NSlcbiAgLy8gRW5jcnlwdGlvbiBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYyNDkpXG4gIC8vIGVuZm9yY2VTU0wgIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDp0eXBlc2NyaXB0OlM2MjQ5KVxuICAvLyB2ZXJzaW9uaW5nIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgY29uc3QgbG9nZ2luZ0J1Y2tldDogczMuQnVja2V0ID0gbmV3IHMzLkJ1Y2tldChzY29wZSwgYnVja2V0SWQsIGNvbWJpbmVkQnVja2V0UHJvcHMpOyAvLyBOT1NPTkFSXG5cbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhsb2dnaW5nQnVja2V0LCBbXG4gICAge1xuICAgICAgaWQ6ICdXMzUnLFxuICAgICAgcmVhc29uOiBcIlRoaXMgUzMgYnVja2V0IGlzIHVzZWQgYXMgdGhlIGFjY2VzcyBsb2dnaW5nIGJ1Y2tldCBmb3IgYW5vdGhlciBidWNrZXRcIlxuICAgIH1cbiAgXSk7XG5cbiAgcmV0dXJuIGxvZ2dpbmdCdWNrZXQ7XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsb3VkRnJvbnRMb2dnaW5nQnVja2V0KHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGJ1Y2tldElkOiBzdHJpbmcsXG4gIGxvZ2dpbmdCdWNrZXRQcm9wczogczMuQnVja2V0UHJvcHMpOiBzMy5CdWNrZXQge1xuXG4gIC8vIEludHJvZHVjZSB0aGUgZGVmYXVsdCBwcm9wcyBzaW5jZSB3ZSBjYW4ndCBiZSBjZXJ0YWluIHRoZSBjYWxsZXIgdXNlZCB0aGVtIGFuZFxuICAvLyB0aGV5IGFyZSBpbXBvcnRhbnQgYmVzdCBwcmFjdGljZXNcbiAgbGV0IGNvbWJpbmVkQnVja2V0UHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRTM1Byb3BzKCksIGxvZ2dpbmdCdWNrZXRQcm9wcyk7XG5cbiAgaWYgKCFsb2dnaW5nQnVja2V0UHJvcHMuc2VydmVyQWNjZXNzTG9nc0J1Y2tldCkge1xuICAgIC8vIENyZWF0ZSBidWNrZXQgYW5kIGFkZCB0byBwcm9wc1xuICAgIGNvbnN0IGFjY2Vzc0xvZ0J1Y2tldDogczMuQnVja2V0ID0gbmV3IHMzLkJ1Y2tldChzY29wZSwgYCR7YnVja2V0SWR9QWNjZXNzTG9nYCwgY29tYmluZWRCdWNrZXRQcm9wcyk7IC8vIE5PU09OQVJcbiAgICBjb21iaW5lZEJ1Y2tldFByb3BzID0gb3ZlcnJpZGVQcm9wcyhjb21iaW5lZEJ1Y2tldFByb3BzLCB7IHNlcnZlckFjY2Vzc0xvZ3NCdWNrZXQ6IGFjY2Vzc0xvZ0J1Y2tldCB9KTtcblxuICAgIGFkZENmblN1cHByZXNzUnVsZXMoYWNjZXNzTG9nQnVja2V0LCBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnVzM1JyxcbiAgICAgICAgcmVhc29uOiBcIlRoaXMgUzMgYnVja2V0IGlzIHVzZWQgYXMgdGhlIGFjY2VzcyBsb2dnaW5nIGJ1Y2tldCBmb3IgYW5vdGhlciBidWNrZXRcIlxuICAgICAgfVxuICAgIF0pO1xuICB9XG5cbiAgLy8gQ3JlYXRlIHRoZSBMb2dnaW5nIEJ1Y2tldFxuICAvLyBOT1NPTkFSICAodHlwZXNjcmlwdDpTNjI4MSlcbiAgLy8gQmxvY2sgUHVibGljIEFjY2VzcyBpcyBzZXQgYnkgRGVmYXVsdFMzUHJvcHMsIGJ1dCBTb25hcnF1YmUgY2FuJ3QgZGV0ZWN0IGl0XG4gIC8vIEl0IGlzIHZlcmlmaWVkIGJ5ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJyBpbiB0aGUgdW5pdCB0ZXN0c1xuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MjQ1KVxuICAvLyBFbmNyeXB0aW9uIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDpTNjI0OSlcbiAgLy8gZW5mb3JjZVNTTCAgaXMgdHVybmVkIG9uIGluIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgdGhhdCBTb25hcnF1YmUgZG9lc24ndCBzZWVcbiAgLy8gVmVyaWZpZWQgYnkgdW5pdCB0ZXN0ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJ1xuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OnR5cGVzY3JpcHQ6UzYyNDkpXG4gIC8vIHZlcnNpb25pbmcgaXMgdHVybmVkIG9uIGluIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgdGhhdCBTb25hcnF1YmUgZG9lc24ndCBzZWVcbiAgLy8gVmVyaWZpZWQgYnkgdW5pdCB0ZXN0ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJ1xuICBjb25zdCBjbG91ZGZyb250TG9nQnVja2V0OiBzMy5CdWNrZXQgPSBuZXcgczMuQnVja2V0KHNjb3BlLCBidWNrZXRJZCwgY29tYmluZWRCdWNrZXRQcm9wcyk7IC8vIE5PU09OQVJcblxuICByZXR1cm4gY2xvdWRmcm9udExvZ0J1Y2tldDtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWxiTG9nZ2luZ0J1Y2tldChzY29wZTogQ29uc3RydWN0LFxuICBidWNrZXRJZDogc3RyaW5nLFxuICBsb2dnaW5nQnVja2V0UHJvcHM6IHMzLkJ1Y2tldFByb3BzKTogczMuQnVja2V0IHtcblxuICAvLyBJbnRyb2R1Y2UgdGhlIGRlZmF1bHQgcHJvcHMgc2luY2Ugd2UgY2FuJ3QgYmUgY2VydGFpbiB0aGUgY2FsbGVyIHVzZWQgdGhlbSBhbmRcbiAgLy8gdGhleSBhcmUgaW1wb3J0YW50IGJlc3QgcHJhY3RpY2VzXG4gIGNvbnN0IGNvbWJpbmVkQnVja2V0UHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRTM1Byb3BzKCksIGxvZ2dpbmdCdWNrZXRQcm9wcyk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBMb2dnaW5nIEJ1Y2tldFxuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MjgxKVxuICAvLyBCbG9jayBQdWJsaWMgQWNjZXNzIGlzIHNldCBieSBEZWZhdWx0UzNQcm9wcywgYnV0IFNvbmFycXViZSBjYW4ndCBkZXRlY3QgaXRcbiAgLy8gSXQgaXMgdmVyaWZpZWQgYnkgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnIGluIHRoZSB1bml0IHRlc3RzXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYyNDUpXG4gIC8vIEVuY3J5cHRpb24gaXMgdHVybmVkIG9uIGluIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgdGhhdCBTb25hcnF1YmUgZG9lc24ndCBzZWVcbiAgLy8gVmVyaWZpZWQgYnkgdW5pdCB0ZXN0ICdzMyBidWNrZXQgd2l0aCBkZWZhdWx0IHByb3BzJ1xuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MjQ5KVxuICAvLyBlbmZvcmNlU1NMICBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6dHlwZXNjcmlwdDpTNjI0OSlcbiAgLy8gdmVyc2lvbmluZyBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIGNvbnN0IGxvZ2dpbmdCdWNrZXQ6IHMzLkJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIGJ1Y2tldElkLCBjb21iaW5lZEJ1Y2tldFByb3BzKTsgLy8gTk9TT05BUlxuXG4gIC8vIEV4dHJhY3QgdGhlIENmbkJ1Y2tldCBmcm9tIHRoZSBsb2dnaW5nQnVja2V0XG4gIGNvbnN0IGxvZ2dpbmdCdWNrZXRSZXNvdXJjZSA9IGxvZ2dpbmdCdWNrZXQubm9kZS5maW5kQ2hpbGQoJ1Jlc291cmNlJykgYXMgczMuQ2ZuQnVja2V0O1xuXG4gIGFkZENmblN1cHByZXNzUnVsZXMobG9nZ2luZ0J1Y2tldFJlc291cmNlLCBbXG4gICAge1xuICAgICAgaWQ6ICdXMzUnLFxuICAgICAgcmVhc29uOiBcIlRoaXMgaXMgYSBsb2cgYnVja2V0IGZvciBhbiBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyXCJcbiAgICB9XG4gIF0pO1xuXG4gIHJldHVybiBsb2dnaW5nQnVja2V0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkUzNCdWNrZXRSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGJ1Y2tldDogczMuQnVja2V0LFxuICByZWFkb25seSBsb2dnaW5nQnVja2V0PzogczMuQnVja2V0XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqIEBpbnRlcm5hbCBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgZXhwb3NlZCBleHRlcm5hbGx5IHRocm91Z2ggYXdzLWNvbnN0cnVjdHMtZmFjdG9yaWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFMzQnVja2V0KHNjb3BlOiBDb25zdHJ1Y3QsXG4gIHByb3BzOiBCdWlsZFMzQnVja2V0UHJvcHMsXG4gIGJ1Y2tldElkPzogc3RyaW5nKTogQnVpbGRTM0J1Y2tldFJlc3BvbnNlIHtcblxuICAvKiogRGVmYXVsdCBMaWZlIEN5Y2xlIHBvbGljeSB0byB0cmFuc2l0aW9uIG9sZGVyIHZlcnNpb25zIHRvIEdsYWNpZXIgYWZ0ZXIgOTAgZGF5cyAqL1xuICBjb25zdCBsaWZlY3ljbGVSdWxlczogczMuTGlmZWN5Y2xlUnVsZVtdID0gW3tcbiAgICBub25jdXJyZW50VmVyc2lvblRyYW5zaXRpb25zOiBbe1xuICAgICAgc3RvcmFnZUNsYXNzOiBTdG9yYWdlQ2xhc3MuR0xBQ0lFUixcbiAgICAgIHRyYW5zaXRpb25BZnRlcjogRHVyYXRpb24uZGF5cyg5MClcbiAgICB9XVxuICB9XTtcblxuICAvLyBDcmVhdGUgdGhlIEFwcGxpY2F0aW9uIEJ1Y2tldFxuICBsZXQgZGVmYXVsdEJ1Y2tldFByb3BzOiBzMy5CdWNrZXRQcm9wcztcbiAgbGV0IGxvZ2dpbmdCdWNrZXQ7XG4gIGNvbnN0IHJlc29sdmVkQnVja2V0SWQgPSBidWNrZXRJZCA/IGJ1Y2tldElkICsgJ1MzQnVja2V0JyA6ICdTM0J1Y2tldCc7XG4gIGNvbnN0IGxvZ2dpbmdCdWNrZXRJZCA9IGJ1Y2tldElkID8gYnVja2V0SWQgKyAnUzNMb2dnaW5nQnVja2V0JyA6ICdTM0xvZ2dpbmdCdWNrZXQnO1xuXG4gIC8vIElmIGxvZ2dpbmcgUzMgYWNjZXNzIGxvZ3MgaXMgZW5hYmxlZC91bmRlZmluZWQgYW5kIGFuIGV4aXN0aW5nIGJ1Y2tldCBvYmplY3QgaXMgbm90IHByb3ZpZGVkXG4gIGlmIChwcm9wcy5sb2dTM0FjY2Vzc0xvZ3MgIT09IGZhbHNlICYmICEocHJvcHMuYnVja2V0UHJvcHM/LnNlcnZlckFjY2Vzc0xvZ3NCdWNrZXQpKSB7XG4gICAgLy8gQ3JlYXRlIHRoZSBMb2dnaW5nIEJ1Y2tldFxuICAgIGxldCBsb2dnaW5nQnVja2V0UHJvcHMgPSBEZWZhdWx0UzNQcm9wcygpO1xuXG4gICAgaWYgKHByb3BzLmxvZ2dpbmdCdWNrZXRQcm9wcykge1xuICAgICAgLy8gVXNlciBwcm92aWRlZCBsb2dnaW5nIGJ1Y2tldCBwcm9wc1xuICAgICAgbG9nZ2luZ0J1Y2tldFByb3BzID0gb3ZlcnJpZGVQcm9wcyhsb2dnaW5nQnVja2V0UHJvcHMsIHByb3BzLmxvZ2dpbmdCdWNrZXRQcm9wcyk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5idWNrZXRQcm9wcz8ucmVtb3ZhbFBvbGljeSkge1xuICAgICAgLy8gSWYgdGhlIGNsaWVudCBleHBsaWNpdGx5IHNwZWNpZmllZCBhIHJlbW92YWwgcG9saWN5IGZvciB0aGUgbWFpbiBidWNrZXQsXG4gICAgICAvLyB0aGVuIHJlcGxpY2F0ZSB0aGF0IHBvbGljeSBvbiB0aGUgbG9nZ2luZyBidWNrZXRcbiAgICAgIGxvZ2dpbmdCdWNrZXRQcm9wcyA9IG92ZXJyaWRlUHJvcHMobG9nZ2luZ0J1Y2tldFByb3BzLCB7IHJlbW92YWxQb2xpY3k6IHByb3BzLmJ1Y2tldFByb3BzLnJlbW92YWxQb2xpY3kgfSk7XG4gICAgfVxuXG4gICAgbG9nZ2luZ0J1Y2tldCA9IGNyZWF0ZVMzQWNjZXNzTG9nZ2luZ0J1Y2tldChzY29wZSwgbG9nZ2luZ0J1Y2tldElkLCBsb2dnaW5nQnVja2V0UHJvcHMpO1xuICB9IGVsc2UgaWYgKHByb3BzLmJ1Y2tldFByb3BzPy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0KSB7XG4gICAgbG9nZ2luZ0J1Y2tldCA9IHByb3BzLmJ1Y2tldFByb3BzPy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0IGFzIHMzLkJ1Y2tldDtcbiAgfVxuXG4gIC8vIEF0dGFjaCB0aGUgRGVmYXVsdCBMaWZlIEN5Y2xlIHBvbGljeSBPTkxZIElGIHRoZSB2ZXJzaW9uaW5nIGlzIEVOQUJMRURcbiAgaWYgKHByb3BzLmJ1Y2tldFByb3BzPy52ZXJzaW9uZWQgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5idWNrZXRQcm9wcy52ZXJzaW9uZWQpIHtcbiAgICBkZWZhdWx0QnVja2V0UHJvcHMgPSBEZWZhdWx0UzNQcm9wcyhsb2dnaW5nQnVja2V0LCBsaWZlY3ljbGVSdWxlcyk7XG4gIH0gZWxzZSB7XG4gICAgZGVmYXVsdEJ1Y2tldFByb3BzID0gRGVmYXVsdFMzUHJvcHMobG9nZ2luZ0J1Y2tldCk7XG4gIH1cblxuICBjb25zdCBjb21iaW5lZEJ1Y2tldFByb3BzID0gY29uc29saWRhdGVQcm9wcyhkZWZhdWx0QnVja2V0UHJvcHMsIHByb3BzLmJ1Y2tldFByb3BzKTtcblxuICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MjgxKSAtIEJsb2NrIFB1YmxpYyBBY2Nlc3MgaXMgc2V0IGJ5IERlZmF1bHRTM1Byb3BzLFxuICAvLyBidXQgU29uYXJxdWJlIGNhbid0IGRldGVjdCBpdFxuICAvLyBJdCBpcyB2ZXJpZmllZCBieSAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcycgaW4gdGhlIHVuaXQgdGVzdHNcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDpTNjI0NSlcbiAgLy8gRW5jcnlwdGlvbiBpcyB0dXJuZWQgb24gaW4gdGhlIGRlZmF1bHQgcHJvcGVydGllcyB0aGF0IFNvbmFycXViZSBkb2Vzbid0IHNlZVxuICAvLyBWZXJpZmllZCBieSB1bml0IHRlc3QgJ3MzIGJ1Y2tldCB3aXRoIGRlZmF1bHQgcHJvcHMnXG4gIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYyNDkpXG4gIC8vIGVuZm9yY2VTU0wgIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgLy8gTk9TT05BUiAodHlwZXNjcmlwdDp0eXBlc2NyaXB0OlM2MjQ5KVxuICAvLyB2ZXJzaW9uaW5nIGlzIHR1cm5lZCBvbiBpbiB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIHRoYXQgU29uYXJxdWJlIGRvZXNuJ3Qgc2VlXG4gIC8vIFZlcmlmaWVkIGJ5IHVuaXQgdGVzdCAnczMgYnVja2V0IHdpdGggZGVmYXVsdCBwcm9wcydcbiAgY29uc3QgczNCdWNrZXQ6IHMzLkJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIHJlc29sdmVkQnVja2V0SWQsIGNvbWJpbmVkQnVja2V0UHJvcHMgKTsgLy8gTk9TT05BUlxuXG4gIHJldHVybiB7IGJ1Y2tldDogczNCdWNrZXQsIGxvZ2dpbmdCdWNrZXQgfTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkQ2ZuTmFnUzNCdWNrZXROb3RpZmljYXRpb25SdWxlc1RvU3VwcHJlc3Moc3RhY2tSb290OiBjZGsuU3RhY2ssIGxvZ2ljYWxJZDogc3RyaW5nKSB7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNSZXNvdXJjZUhhbmRsZXIgPSBzdGFja1Jvb3Qubm9kZS50cnlGaW5kQ2hpbGQobG9naWNhbElkKSBhcyBsYW1iZGEuRnVuY3Rpb247XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNSZXNvdXJjZUhhbmRsZXJSb2xlUm9sZSA9IG5vdGlmaWNhdGlvbnNSZXNvdXJjZUhhbmRsZXIubm9kZS5maW5kQ2hpbGQoJ1JvbGUnKSBhcyBpYW0uUm9sZTtcbiAgY29uc3Qgbm90aWZpY2F0aW9uc1Jlc291cmNlSGFuZGxlclJvbGVQb2xpY3kgPSBub3RpZmljYXRpb25zUmVzb3VyY2VIYW5kbGVyUm9sZVJvbGUubm9kZS5maW5kQ2hpbGQoJ0RlZmF1bHRQb2xpY3knKSBhcyBpYW0uUG9saWN5O1xuXG4gIC8vIEV4dHJhY3QgdGhlIENmbkZ1bmN0aW9uIGZyb20gdGhlIEZ1bmN0aW9uXG4gIGNvbnN0IGZuUmVzb3VyY2UgPSBub3RpZmljYXRpb25zUmVzb3VyY2VIYW5kbGVyLm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIGxhbWJkYS5DZm5GdW5jdGlvbjtcbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhmblJlc291cmNlLCBbXG4gICAge1xuICAgICAgaWQ6ICdXNTgnLFxuICAgICAgcmVhc29uOiBgTGFtYmRhIGZ1bmN0aW9ucyBoYXMgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb24gdG8gd3JpdGUgQ2xvdWRXYXRjaCBMb2dzLiBJdCB1c2VzIGN1c3RvbSBwb2xpY3kgaW5zdGVhZCBvZiBhcm46YXdzOmlhbTo6YXdzOnBvbGljeS9zZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlIHdpdGggdGlnaHRlciBwZXJtaXNzaW9ucy5gXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJ1c4OScsXG4gICAgICByZWFzb246IGBUaGlzIGlzIG5vdCBhIHJ1bGUgZm9yIHRoZSBnZW5lcmFsIGNhc2UsIGp1c3QgZm9yIHNwZWNpZmljIHVzZSBjYXNlcy9pbmR1c3RyaWVzYFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICdXOTInLFxuICAgICAgcmVhc29uOiBgSW1wb3NzaWJsZSBmb3IgdXMgdG8gZGVmaW5lIHRoZSBjb3JyZWN0IGNvbmN1cnJlbmN5IGZvciBjbGllbnRzYFxuICAgIH1cbiAgXSk7XG5cbiAgLy8gRXh0cmFjdCB0aGUgQ2ZuUG9saWN5IGZyb20gdGhlIGlhbS5Qb2xpY3lcbiAgY29uc3QgcG9saWN5UmVzb3VyY2UgPSBub3RpZmljYXRpb25zUmVzb3VyY2VIYW5kbGVyUm9sZVBvbGljeS5ub2RlLmZpbmRDaGlsZCgnUmVzb3VyY2UnKSBhcyBpYW0uQ2ZuUG9saWN5O1xuICBhZGRDZm5TdXBwcmVzc1J1bGVzKHBvbGljeVJlc291cmNlLCBbXG4gICAge1xuICAgICAgaWQ6ICdXMTInLFxuICAgICAgcmVhc29uOiBgQnVja2V0IHJlc291cmNlIGlzICcqJyBkdWUgdG8gY2lyY3VsYXIgZGVwZW5kZW5jeSB3aXRoIGJ1Y2tldCBhbmQgcm9sZSBjcmVhdGlvbiBhdCB0aGUgc2FtZSB0aW1lYFxuICAgIH1cbiAgXSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUzNQcm9wcyB7XG4gIHJlYWRvbmx5IGV4aXN0aW5nQnVja2V0T2JqPzogczMuQnVja2V0LFxuICByZWFkb25seSBleGlzdGluZ0J1Y2tldEludGVyZmFjZT86IHMzLklCdWNrZXQsXG4gIHJlYWRvbmx5IGJ1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHMsXG4gIHJlYWRvbmx5IGV4aXN0aW5nTG9nZ2luZ0J1Y2tldE9iaj86IHMzLklCdWNrZXQ7XG4gIHJlYWRvbmx5IGxvZ2dpbmdCdWNrZXRQcm9wcz86IHMzLkJ1Y2tldFByb3BzO1xuICByZWFkb25seSBsb2dTM0FjY2Vzc0xvZ3M/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2hlY2tTM1Byb3BzKHByb3BzT2JqZWN0OiBTM1Byb3BzIHwgYW55KSB7XG4gIGxldCBlcnJvck1lc3NhZ2VzID0gJyc7XG4gIGxldCBlcnJvckZvdW5kID0gZmFsc2U7XG5cbiAgaWYgKChwcm9wc09iamVjdC5leGlzdGluZ0J1Y2tldE9iaiB8fCBwcm9wc09iamVjdC5leGlzdGluZ0J1Y2tldEludGVyZmFjZSkgJiYgcHJvcHNPYmplY3QuYnVja2V0UHJvcHMpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIEVpdGhlciBwcm92aWRlIGJ1Y2tldFByb3BzIG9yIGV4aXN0aW5nQnVja2V0T2JqLCBidXQgbm90IGJvdGguXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwcm9wc09iamVjdC5leGlzdGluZ0xvZ2dpbmdCdWNrZXRPYmogJiYgcHJvcHNPYmplY3QubG9nZ2luZ0J1Y2tldFByb3BzKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBleGlzdGluZ0xvZ2dpbmdCdWNrZXRPYmogb3IgbG9nZ2luZ0J1Y2tldFByb3BzLCBidXQgbm90IGJvdGguXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICgocHJvcHNPYmplY3Q/LmxvZ1MzQWNjZXNzTG9ncyA9PT0gZmFsc2UpICYmIChwcm9wc09iamVjdC5sb2dnaW5nQnVja2V0UHJvcHMgfHwgcHJvcHNPYmplY3QuZXhpc3RpbmdMb2dnaW5nQnVja2V0T2JqKSkge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gSWYgbG9nUzNBY2Nlc3NMb2dzIGlzIGZhbHNlLCBzdXBwbHlpbmcgbG9nZ2luZ0J1Y2tldFByb3BzIG9yIGV4aXN0aW5nTG9nZ2luZ0J1Y2tldE9iaiBpcyBpbnZhbGlkLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHNPYmplY3QuZXhpc3RpbmdCdWNrZXRPYmogJiYgKHByb3BzT2JqZWN0LmxvZ2dpbmdCdWNrZXRQcm9wcyB8fCBwcm9wc09iamVjdC5sb2dTM0FjY2Vzc0xvZ3MpKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBJZiBleGlzdGluZ0J1Y2tldE9iaiBpcyBwcm92aWRlZCwgc3VwcGx5aW5nIGxvZ2dpbmdCdWNrZXRQcm9wcyBvciBsb2dTM0FjY2Vzc0xvZ3MgaXMgYW4gZXJyb3IuXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlcnJvckZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZXMpO1xuICB9XG59XG4iXX0=
|
|
@@ -49,7 +49,7 @@ export interface BuildSagemakerNotebookResponse {
|
|
|
49
49
|
/**
|
|
50
50
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
51
51
|
*/
|
|
52
|
-
export declare function buildSagemakerNotebook(scope: Construct, props: BuildSagemakerNotebookProps): BuildSagemakerNotebookResponse;
|
|
52
|
+
export declare function buildSagemakerNotebook(scope: Construct, id: string, props: BuildSagemakerNotebookProps): BuildSagemakerNotebookResponse;
|
|
53
53
|
export interface BuildSagemakerEndpointProps {
|
|
54
54
|
/**
|
|
55
55
|
* Existing Sagemaker Endpoint object, if this is set then the modelProps, endpointConfigProps, and endpointProps are ignored
|
|
@@ -90,7 +90,7 @@ export interface BuildSagemakerEndpointResponse {
|
|
|
90
90
|
/**
|
|
91
91
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
92
92
|
*/
|
|
93
|
-
export declare function BuildSagemakerEndpoint(scope: Construct, props: BuildSagemakerEndpointProps): BuildSagemakerEndpointResponse;
|
|
93
|
+
export declare function BuildSagemakerEndpoint(scope: Construct, id: string, props: BuildSagemakerEndpointProps): BuildSagemakerEndpointResponse;
|
|
94
94
|
export interface DeploySagemakerEndpointResponse {
|
|
95
95
|
readonly endpoint: sagemaker.CfnEndpoint;
|
|
96
96
|
readonly endpointConfig?: sagemaker.CfnEndpointConfig;
|
|
@@ -99,7 +99,7 @@ export interface DeploySagemakerEndpointResponse {
|
|
|
99
99
|
/**
|
|
100
100
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
101
101
|
*/
|
|
102
|
-
export declare function deploySagemakerEndpoint(scope: Construct, props: BuildSagemakerEndpointProps): DeploySagemakerEndpointResponse;
|
|
102
|
+
export declare function deploySagemakerEndpoint(scope: Construct, id: string, props: BuildSagemakerEndpointProps): DeploySagemakerEndpointResponse;
|
|
103
103
|
/**
|
|
104
104
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
105
105
|
*/
|
|
@@ -107,7 +107,7 @@ export declare function createSagemakerModel(scope: Construct, modelProps: sagem
|
|
|
107
107
|
/**
|
|
108
108
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
109
109
|
*/
|
|
110
|
-
export declare function createSagemakerEndpointConfig(scope: Construct, modelName: string, endpointConfigProps?: sagemaker.CfnEndpointConfigProps): sagemaker.CfnEndpointConfig;
|
|
110
|
+
export declare function createSagemakerEndpointConfig(scope: Construct, id: string, modelName: string, endpointConfigProps?: sagemaker.CfnEndpointConfigProps): sagemaker.CfnEndpointConfig;
|
|
111
111
|
/**
|
|
112
112
|
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
|
|
113
113
|
*/
|