@aws-cdk/cloud-assembly-schema 49.4.0 → 50.1.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 CHANGED
@@ -631,7 +631,7 @@
631
631
  "kind": "interface",
632
632
  "locationInModule": {
633
633
  "filename": "lib/cloud-assembly/artifact-schema.ts",
634
- "line": 167
634
+ "line": 173
635
635
  },
636
636
  "name": "AssetManifestOptions",
637
637
  "properties": [
@@ -646,7 +646,7 @@
646
646
  "immutable": true,
647
647
  "locationInModule": {
648
648
  "filename": "lib/cloud-assembly/artifact-schema.ts",
649
- "line": 186
649
+ "line": 192
650
650
  },
651
651
  "name": "bootstrapStackVersionSsmParameter",
652
652
  "optional": true,
@@ -664,7 +664,7 @@
664
664
  "immutable": true,
665
665
  "locationInModule": {
666
666
  "filename": "lib/cloud-assembly/artifact-schema.ts",
667
- "line": 173
667
+ "line": 179
668
668
  },
669
669
  "name": "requiresBootstrapStackVersion",
670
670
  "optional": true,
@@ -689,7 +689,7 @@
689
689
  "kind": "interface",
690
690
  "locationInModule": {
691
691
  "filename": "lib/cloud-assembly/artifact-schema.ts",
692
- "line": 192
692
+ "line": 198
693
693
  },
694
694
  "name": "AssetManifestProperties",
695
695
  "properties": [
@@ -702,7 +702,7 @@
702
702
  "immutable": true,
703
703
  "locationInModule": {
704
704
  "filename": "lib/cloud-assembly/artifact-schema.ts",
705
- "line": 196
705
+ "line": 202
706
706
  },
707
707
  "name": "file",
708
708
  "type": {
@@ -774,7 +774,7 @@
774
774
  "immutable": true,
775
775
  "locationInModule": {
776
776
  "filename": "lib/cloud-assembly/artifact-schema.ts",
777
- "line": 111
777
+ "line": 117
778
778
  },
779
779
  "name": "assumeRoleAdditionalOptions",
780
780
  "optional": true,
@@ -797,7 +797,7 @@
797
797
  "immutable": true,
798
798
  "locationInModule": {
799
799
  "filename": "lib/cloud-assembly/artifact-schema.ts",
800
- "line": 93
800
+ "line": 99
801
801
  },
802
802
  "name": "assumeRoleArn",
803
803
  "optional": true,
@@ -815,7 +815,7 @@
815
815
  "immutable": true,
816
816
  "locationInModule": {
817
817
  "filename": "lib/cloud-assembly/artifact-schema.ts",
818
- "line": 100
818
+ "line": 106
819
819
  },
820
820
  "name": "assumeRoleExternalId",
821
821
  "optional": true,
@@ -834,7 +834,7 @@
834
834
  "immutable": true,
835
835
  "locationInModule": {
836
836
  "filename": "lib/cloud-assembly/artifact-schema.ts",
837
- "line": 154
837
+ "line": 160
838
838
  },
839
839
  "name": "bootstrapStackVersionSsmParameter",
840
840
  "optional": true,
@@ -852,7 +852,7 @@
852
852
  "immutable": true,
853
853
  "locationInModule": {
854
854
  "filename": "lib/cloud-assembly/artifact-schema.ts",
855
- "line": 118
855
+ "line": 124
856
856
  },
857
857
  "name": "cloudFormationExecutionRoleArn",
858
858
  "optional": true,
@@ -870,7 +870,7 @@
870
870
  "immutable": true,
871
871
  "locationInModule": {
872
872
  "filename": "lib/cloud-assembly/artifact-schema.ts",
873
- "line": 125
873
+ "line": 131
874
874
  },
875
875
  "name": "lookupRole",
876
876
  "optional": true,
@@ -888,7 +888,7 @@
888
888
  "immutable": true,
889
889
  "locationInModule": {
890
890
  "filename": "lib/cloud-assembly/artifact-schema.ts",
891
- "line": 73
891
+ "line": 79
892
892
  },
893
893
  "name": "notificationArns",
894
894
  "optional": true,
@@ -934,7 +934,7 @@
934
934
  "immutable": true,
935
935
  "locationInModule": {
936
936
  "filename": "lib/cloud-assembly/artifact-schema.ts",
937
- "line": 139
937
+ "line": 145
938
938
  },
939
939
  "name": "requiresBootstrapStackVersion",
940
940
  "optional": true,
@@ -952,7 +952,7 @@
952
952
  "immutable": true,
953
953
  "locationInModule": {
954
954
  "filename": "lib/cloud-assembly/artifact-schema.ts",
955
- "line": 79
955
+ "line": 85
956
956
  },
957
957
  "name": "stackName",
958
958
  "optional": true,
@@ -970,7 +970,7 @@
970
970
  "immutable": true,
971
971
  "locationInModule": {
972
972
  "filename": "lib/cloud-assembly/artifact-schema.ts",
973
- "line": 132
973
+ "line": 138
974
974
  },
975
975
  "name": "stackTemplateAssetObjectUrl",
976
976
  "optional": true,
@@ -982,13 +982,14 @@
982
982
  "abstract": true,
983
983
  "docs": {
984
984
  "default": "- No tags",
985
+ "remarks": "N.B.: Tags are also written to stack metadata, under the path of the Stack\nconstruct. Only in CDK CLI v1 are those tags found in metadata used for\nactual deployments; in all stable versions of CDK only the stack tags\ndirectly found in the `tags` property of `AwsCloudFormationStack` artifact\n(i.e., this property) are used.",
985
986
  "stability": "stable",
986
987
  "summary": "Values for CloudFormation stack tags that should be passed when the stack is deployed."
987
988
  },
988
989
  "immutable": true,
989
990
  "locationInModule": {
990
991
  "filename": "lib/cloud-assembly/artifact-schema.ts",
991
- "line": 66
992
+ "line": 72
992
993
  },
993
994
  "name": "tags",
994
995
  "optional": true,
@@ -1011,7 +1012,7 @@
1011
1012
  "immutable": true,
1012
1013
  "locationInModule": {
1013
1014
  "filename": "lib/cloud-assembly/artifact-schema.ts",
1014
- "line": 86
1015
+ "line": 92
1015
1016
  },
1016
1017
  "name": "terminationProtection",
1017
1018
  "optional": true,
@@ -1029,7 +1030,7 @@
1029
1030
  "immutable": true,
1030
1031
  "locationInModule": {
1031
1032
  "filename": "lib/cloud-assembly/artifact-schema.ts",
1032
- "line": 161
1033
+ "line": 167
1033
1034
  },
1034
1035
  "name": "validateOnSynth",
1035
1036
  "optional": true,
@@ -1254,7 +1255,7 @@
1254
1255
  "assembly": "@aws-cdk/cloud-assembly-schema",
1255
1256
  "datatype": true,
1256
1257
  "docs": {
1257
- "example": "import { CcApiContextQuery } from '@aws-cdk/cloud-assembly-schema';\n\nconst x: CcApiContextQuery = {\n typeName: 'AWS::Some::Type',\n expectedMatchCount: 'exactly-one',\n propertiesToReturn: ['SomeProp'],\n account: '11111111111',\n region: 'us-east-1',\n};",
1258
+ "example": "import { CcApiContextQuery } from '@aws-cdk/cloud-assembly-schema';\n\nconst x: CcApiContextQuery = {\n typeName: 'AWS::Some::Type',\n expectedMatchCount: 'exactly-one',\n resourceModel: {SomeArn: 'arn:aws:....'},\n propertiesToReturn: ['SomeProp'],\n account: '11111111111',\n region: 'us-east-1',\n};",
1258
1259
  "remarks": "The example below is required to successfully compile CDK (otherwise,\nthe CDK build will generate a synthetic example for the below, but it\ndoesn't have enough type information about the literal string union\nto generate a validly compiling example).",
1259
1260
  "stability": "stable",
1260
1261
  "summary": "Query input for lookup up CloudFormation resources using CC API."
@@ -1266,7 +1267,7 @@
1266
1267
  "kind": "interface",
1267
1268
  "locationInModule": {
1268
1269
  "filename": "lib/cloud-assembly/context-queries.ts",
1269
- "line": 376
1270
+ "line": 377
1270
1271
  },
1271
1272
  "name": "CcApiContextQuery",
1272
1273
  "properties": [
@@ -1280,7 +1281,7 @@
1280
1281
  "immutable": true,
1281
1282
  "locationInModule": {
1282
1283
  "filename": "lib/cloud-assembly/context-queries.ts",
1283
- "line": 433
1284
+ "line": 445
1284
1285
  },
1285
1286
  "name": "propertiesToReturn",
1286
1287
  "type": {
@@ -1302,7 +1303,7 @@
1302
1303
  "immutable": true,
1303
1304
  "locationInModule": {
1304
1305
  "filename": "lib/cloud-assembly/context-queries.ts",
1305
- "line": 381
1306
+ "line": 382
1306
1307
  },
1307
1308
  "name": "typeName",
1308
1309
  "type": {
@@ -1320,7 +1321,7 @@
1320
1321
  "immutable": true,
1321
1322
  "locationInModule": {
1322
1323
  "filename": "lib/cloud-assembly/context-queries.ts",
1323
- "line": 464
1324
+ "line": 476
1324
1325
  },
1325
1326
  "name": "dummyValue",
1326
1327
  "optional": true,
@@ -1339,7 +1340,7 @@
1339
1340
  "immutable": true,
1340
1341
  "locationInModule": {
1341
1342
  "filename": "lib/cloud-assembly/context-queries.ts",
1342
- "line": 391
1343
+ "line": 392
1343
1344
  },
1344
1345
  "name": "exactIdentifier",
1345
1346
  "optional": true,
@@ -1358,7 +1359,7 @@
1358
1359
  "immutable": true,
1359
1360
  "locationInModule": {
1360
1361
  "filename": "lib/cloud-assembly/context-queries.ts",
1361
- "line": 450
1362
+ "line": 462
1362
1363
  },
1363
1364
  "name": "expectedMatchCount",
1364
1365
  "optional": true,
@@ -1377,7 +1378,7 @@
1377
1378
  "immutable": true,
1378
1379
  "locationInModule": {
1379
1380
  "filename": "lib/cloud-assembly/context-queries.ts",
1380
- "line": 478
1381
+ "line": 490
1381
1382
  },
1382
1383
  "name": "ignoreErrorOnMissingContext",
1383
1384
  "optional": true,
@@ -1396,7 +1397,7 @@
1396
1397
  "immutable": true,
1397
1398
  "locationInModule": {
1398
1399
  "filename": "lib/cloud-assembly/context-queries.ts",
1399
- "line": 411
1400
+ "line": 423
1400
1401
  },
1401
1402
  "name": "propertyMatch",
1402
1403
  "optional": true,
@@ -1408,6 +1409,30 @@
1408
1409
  "kind": "map"
1409
1410
  }
1410
1411
  }
1412
+ },
1413
+ {
1414
+ "abstract": true,
1415
+ "docs": {
1416
+ "default": "- no resource Model is provided",
1417
+ "remarks": "This is needed for sub-resources where the parent Arn is required.\n\nSee https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/resource-operations-list.html#resource-operations-list-containers",
1418
+ "stability": "stable",
1419
+ "summary": "The resource model to use to select the resources, using `ListResources`.."
1420
+ },
1421
+ "immutable": true,
1422
+ "locationInModule": {
1423
+ "filename": "lib/cloud-assembly/context-queries.ts",
1424
+ "line": 403
1425
+ },
1426
+ "name": "resourceModel",
1427
+ "optional": true,
1428
+ "type": {
1429
+ "collection": {
1430
+ "elementtype": {
1431
+ "primitive": "any"
1432
+ },
1433
+ "kind": "map"
1434
+ }
1435
+ }
1411
1436
  }
1412
1437
  ],
1413
1438
  "symbolId": "lib/cloud-assembly/context-queries:CcApiContextQuery"
@@ -3570,7 +3595,7 @@
3570
3595
  "kind": "interface",
3571
3596
  "locationInModule": {
3572
3597
  "filename": "lib/cloud-assembly/artifact-schema.ts",
3573
- "line": 247
3598
+ "line": 253
3574
3599
  },
3575
3600
  "name": "FeatureFlag",
3576
3601
  "properties": [
@@ -3584,7 +3609,7 @@
3584
3609
  "immutable": true,
3585
3610
  "locationInModule": {
3586
3611
  "filename": "lib/cloud-assembly/artifact-schema.ts",
3587
- "line": 273
3612
+ "line": 279
3588
3613
  },
3589
3614
  "name": "explanation",
3590
3615
  "optional": true,
@@ -3603,7 +3628,7 @@
3603
3628
  "immutable": true,
3604
3629
  "locationInModule": {
3605
3630
  "filename": "lib/cloud-assembly/artifact-schema.ts",
3606
- "line": 255
3631
+ "line": 261
3607
3632
  },
3608
3633
  "name": "recommendedValue",
3609
3634
  "optional": true,
@@ -3622,7 +3647,7 @@
3622
3647
  "immutable": true,
3623
3648
  "locationInModule": {
3624
3649
  "filename": "lib/cloud-assembly/artifact-schema.ts",
3625
- "line": 288
3650
+ "line": 294
3626
3651
  },
3627
3652
  "name": "unconfiguredBehavesLike",
3628
3653
  "optional": true,
@@ -3641,7 +3666,7 @@
3641
3666
  "immutable": true,
3642
3667
  "locationInModule": {
3643
3668
  "filename": "lib/cloud-assembly/artifact-schema.ts",
3644
- "line": 266
3669
+ "line": 272
3645
3670
  },
3646
3671
  "name": "userValue",
3647
3672
  "optional": true,
@@ -3664,7 +3689,7 @@
3664
3689
  "kind": "interface",
3665
3690
  "locationInModule": {
3666
3691
  "filename": "lib/cloud-assembly/artifact-schema.ts",
3667
- "line": 232
3692
+ "line": 238
3668
3693
  },
3669
3694
  "name": "FeatureFlagReportProperties",
3670
3695
  "properties": [
@@ -3677,7 +3702,7 @@
3677
3702
  "immutable": true,
3678
3703
  "locationInModule": {
3679
3704
  "filename": "lib/cloud-assembly/artifact-schema.ts",
3680
- "line": 241
3705
+ "line": 247
3681
3706
  },
3682
3707
  "name": "flags",
3683
3708
  "type": {
@@ -3698,7 +3723,7 @@
3698
3723
  "immutable": true,
3699
3724
  "locationInModule": {
3700
3725
  "filename": "lib/cloud-assembly/artifact-schema.ts",
3701
- "line": 236
3726
+ "line": 242
3702
3727
  },
3703
3728
  "name": "module",
3704
3729
  "type": {
@@ -4767,12 +4792,18 @@
4767
4792
  "symbolId": "lib/manifest:LoadManifestOptions"
4768
4793
  },
4769
4794
  "@aws-cdk/cloud-assembly-schema.Manifest": {
4795
+ "abstract": true,
4770
4796
  "assembly": "@aws-cdk/cloud-assembly-schema",
4771
4797
  "docs": {
4772
4798
  "stability": "stable",
4773
4799
  "summary": "Protocol utility class."
4774
4800
  },
4775
4801
  "fqn": "@aws-cdk/cloud-assembly-schema.Manifest",
4802
+ "initializer": {
4803
+ "docs": {
4804
+ "stability": "stable"
4805
+ }
4806
+ },
4776
4807
  "kind": "class",
4777
4808
  "locationInModule": {
4778
4809
  "filename": "lib/manifest.ts",
@@ -5275,7 +5306,7 @@
5275
5306
  "kind": "interface",
5276
5307
  "locationInModule": {
5277
5308
  "filename": "lib/cloud-assembly/artifact-schema.ts",
5278
- "line": 212
5309
+ "line": 218
5279
5310
  },
5280
5311
  "name": "NestedCloudAssemblyProperties",
5281
5312
  "properties": [
@@ -5288,7 +5319,7 @@
5288
5319
  "immutable": true,
5289
5320
  "locationInModule": {
5290
5321
  "filename": "lib/cloud-assembly/artifact-schema.ts",
5291
- "line": 216
5322
+ "line": 222
5292
5323
  },
5293
5324
  "name": "directoryName",
5294
5325
  "type": {
@@ -5305,7 +5336,7 @@
5305
5336
  "immutable": true,
5306
5337
  "locationInModule": {
5307
5338
  "filename": "lib/cloud-assembly/artifact-schema.ts",
5308
- "line": 223
5339
+ "line": 229
5309
5340
  },
5310
5341
  "name": "displayName",
5311
5342
  "optional": true,
@@ -5328,7 +5359,7 @@
5328
5359
  "kind": "interface",
5329
5360
  "locationInModule": {
5330
5361
  "filename": "lib/cloud-assembly/context-queries.ts",
5331
- "line": 487
5362
+ "line": 499
5332
5363
  },
5333
5364
  "name": "PluginContextQuery",
5334
5365
  "properties": [
@@ -5341,7 +5372,7 @@
5341
5372
  "immutable": true,
5342
5373
  "locationInModule": {
5343
5374
  "filename": "lib/cloud-assembly/context-queries.ts",
5344
- "line": 491
5375
+ "line": 503
5345
5376
  },
5346
5377
  "name": "pluginName",
5347
5378
  "type": {
@@ -5821,7 +5852,7 @@
5821
5852
  "kind": "interface",
5822
5853
  "locationInModule": {
5823
5854
  "filename": "lib/cloud-assembly/artifact-schema.ts",
5824
- "line": 202
5855
+ "line": 208
5825
5856
  },
5826
5857
  "name": "TreeArtifactProperties",
5827
5858
  "properties": [
@@ -5834,7 +5865,7 @@
5834
5865
  "immutable": true,
5835
5866
  "locationInModule": {
5836
5867
  "filename": "lib/cloud-assembly/artifact-schema.ts",
5837
- "line": 206
5868
+ "line": 212
5838
5869
  },
5839
5870
  "name": "file",
5840
5871
  "type": {
@@ -5854,7 +5885,7 @@
5854
5885
  "kind": "interface",
5855
5886
  "locationInModule": {
5856
5887
  "filename": "lib/cloud-assembly/artifact-schema.ts",
5857
- "line": 291
5888
+ "line": 297
5858
5889
  },
5859
5890
  "name": "UnconfiguredBehavesLike",
5860
5891
  "properties": [
@@ -5869,7 +5900,7 @@
5869
5900
  "immutable": true,
5870
5901
  "locationInModule": {
5871
5902
  "filename": "lib/cloud-assembly/artifact-schema.ts",
5872
- "line": 300
5903
+ "line": 306
5873
5904
  },
5874
5905
  "name": "v1",
5875
5906
  "optional": true,
@@ -5888,7 +5919,7 @@
5888
5919
  "immutable": true,
5889
5920
  "locationInModule": {
5890
5921
  "filename": "lib/cloud-assembly/artifact-schema.ts",
5891
- "line": 313
5922
+ "line": 319
5892
5923
  },
5893
5924
  "name": "v2",
5894
5925
  "optional": true,
@@ -6000,6 +6031,6 @@
6000
6031
  "symbolId": "lib/cloud-assembly/context-queries:VpcContextQuery"
6001
6032
  }
6002
6033
  },
6003
- "version": "49.4.0",
6004
- "fingerprint": "k/mEorlADxt4PixUHz3EdEoLQfOkJ+ytU6WcDNfBL1U="
6034
+ "version": "50.1.0",
6035
+ "fingerprint": "4aJuF52ty3DUYAf4kgBG4dVt9+untPagwOvsCuwwMDE="
6005
6036
  }
package/.jsii.tabl.json CHANGED
@@ -1 +1 @@
1
- {"version":"2","toolVersion":"5.9.21","snippets":{"33a997f3b80c5a7b85d876d8c34171c602c0cab4ef93ece45859e3c7119441ac":{"translations":{"python":{"source":"from aws_cdk.cloud_assembly_schema import CcApiContextQuery\nfrom aws_cdk.cloud_assembly_schema import CcApiContextQuery\n\n\nx = CcApiContextQuery(\n type_name=\"AWS::Some::Type\",\n expected_match_count=\"exactly-one\",\n properties_to_return=[\"SomeProp\"],\n account=\"11111111111\",\n region=\"us-east-1\"\n)","version":"2"},"csharp":{"source":"using Amazon.CDK.CloudAssembly.Schema;\n\n\nvar x = new CcApiContextQuery {\n TypeName = \"AWS::Some::Type\",\n ExpectedMatchCount = \"exactly-one\",\n PropertiesToReturn = new [] { \"SomeProp\" },\n Account = \"11111111111\",\n Region = \"us-east-1\"\n};","version":"1"},"java":{"source":"import software.amazon.awscdk.cloudassembly.schema.CcApiContextQuery;\n\n\nCcApiContextQuery x = CcApiContextQuery.builder()\n .typeName(\"AWS::Some::Type\")\n .expectedMatchCount(\"exactly-one\")\n .propertiesToReturn(List.of(\"SomeProp\"))\n .account(\"11111111111\")\n .region(\"us-east-1\")\n .build();","version":"1"},"go":{"source":"import \"github.com/cdklabs/cloud-assembly-schema-go/awscdkcloudassemblyschema\"\n\n\nx := &CcApiContextQuery{\n\tTypeName: jsii.String(\"AWS::Some::Type\"),\n\tExpectedMatchCount: jsii.String(\"exactly-one\"),\n\tPropertiesToReturn: []*string{\n\t\tjsii.String(\"SomeProp\"),\n\t},\n\tAccount: jsii.String(\"11111111111\"),\n\tRegion: jsii.String(\"us-east-1\"),\n}","version":"1"},"$":{"source":"import { CcApiContextQuery } from '@aws-cdk/cloud-assembly-schema';\n\nconst x: CcApiContextQuery = {\n typeName: 'AWS::Some::Type',\n expectedMatchCount: 'exactly-one',\n propertiesToReturn: ['SomeProp'],\n account: '11111111111',\n region: 'us-east-1',\n};","version":"0"}},"location":{"api":{"api":"type","fqn":"@aws-cdk/cloud-assembly-schema.CcApiContextQuery"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@aws-cdk/cloud-assembly-schema.CcApiContextQuery"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { CcApiContextQuery } from '@aws-cdk/cloud-assembly-schema';\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture intentionally empty\n\n// Code snippet begins after !show marker below\n/// !show\n\n\nconst x: CcApiContextQuery = {\n typeName: 'AWS::Some::Type',\n expectedMatchCount: 'exactly-one',\n propertiesToReturn: ['SomeProp'],\n account: '11111111111',\n region: 'us-east-1',\n};\n/// !hide\n// Code snippet ended before !hide marker above\n","syntaxKindCounter":{"11":6,"80":8,"184":1,"210":1,"211":1,"244":1,"261":1,"262":1,"273":1,"274":1,"276":1,"277":1,"304":5,"308":1},"fqnsFingerprint":"f5f66a2137c7e3039ff9787fb4c05a533e42ab9052cd67e5fdfc69454e9bcfe4"},"ed50ccafc79acf82c002383b64b4a7674dd3fb7feced40b7886b0ea45d7a2f53":{"translations":{"python":{"source":"\"registry\"","version":"2"},"csharp":{"source":"\"registry\";","version":"1"},"java":{"source":"\"registry\";","version":"1"},"go":{"source":"\"registry\"","version":"1"},"$":{"source":"'registry'","version":"0"}},"location":{"api":{"api":"member","fqn":"@aws-cdk/cloud-assembly-schema.ContainerImageAssetCacheOption","memberName":"type"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":[],"fullSource":"// Fixture intentionally empty\n\n// Code snippet begins after !show marker below\n/// !show\n'registry'\n/// !hide\n// Code snippet ended before !hide marker above\n","syntaxKindCounter":{"11":1,"245":1,"308":1},"fqnsFingerprint":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"74f6e3d3bc59ec8004507cb82fdf5644924846e87e5d795dc7dec654f80ecfa8":{"translations":{"python":{"source":"# branch: str\n\n\nparams = {\n \"ref\": f\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:{branch}\",\n \"mode\": \"max\"\n}","version":"2"},"csharp":{"source":"string branch;\n\n\nIDictionary<string, object> params = new Dictionary<string, object> {\n { \"ref\", $\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:{branch}\" },\n { \"mode\", \"max\" }\n};","version":"1"},"java":{"source":"String branch;\n\n\nMap<String, Object> params = Map.of(\n \"ref\", String.format(\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:%s\", branch),\n \"mode\", \"max\");","version":"1"},"go":{"source":"var branch string\n\n\nparams := map[string]interface{}{\n\t\"ref\": fmt.Sprintf(\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:%v\", branch),\n\t\"mode\": jsii.String(\"max\"),\n}","version":"1"},"$":{"source":"declare const branch: string;\n\nconst params = {\n ref: `12345678.dkr.ecr.us-west-2.amazonaws.com/cache:${branch}`,\n mode: \"max\",\n};","version":"0"}},"location":{"api":{"api":"member","fqn":"@aws-cdk/cloud-assembly-schema.ContainerImageAssetCacheOption","memberName":"params"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":[],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\ndeclare const branch: string;\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture intentionally empty\n\n// Code snippet begins after !show marker below\n/// !show\n\n\nconst params = {\n ref: `12345678.dkr.ecr.us-west-2.amazonaws.com/cache:${branch}`,\n mode: \"max\",\n};\n/// !hide\n// Code snippet ended before !hide marker above\n","syntaxKindCounter":{"11":1,"16":1,"18":1,"80":5,"138":1,"154":1,"211":1,"229":1,"240":1,"244":2,"261":2,"262":2,"304":2,"308":1},"fqnsFingerprint":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"5abfd7af60ba3b85920714aeeadeb2c1e4082c4d0ded3511ee41a643079af611":{"translations":{"python":{"source":"entry = {\n \"packaging\": \"container-image\",\n \"repository_name\": \"repository-name\",\n \"image_tag\": \"tag\"\n}","version":"2"},"csharp":{"source":"IDictionary<string, string> entry = new Dictionary<string, string> {\n { \"packaging\", \"container-image\" },\n { \"repositoryName\", \"repository-name\" },\n { \"imageTag\", \"tag\" }\n};","version":"1"},"java":{"source":"Map<String, String> entry = Map.of(\n \"packaging\", \"container-image\",\n \"repositoryName\", \"repository-name\",\n \"imageTag\", \"tag\");","version":"1"},"go":{"source":"entry := map[string]*string{\n\t\"packaging\": jsii.String(\"container-image\"),\n\t\"repositoryName\": jsii.String(\"repository-name\"),\n\t\"imageTag\": jsii.String(\"tag\"),\n}","version":"1"},"$":{"source":"const entry = {\n packaging: 'container-image',\n repositoryName: 'repository-name',\n imageTag: 'tag',\n}","version":"0"}},"location":{"api":{"api":"type","fqn":"@aws-cdk/cloud-assembly-schema.ContainerImageAssetMetadataEntry"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":[],"fullSource":"// Fixture intentionally empty\n\n// Code snippet begins after !show marker below\n/// !show\nconst entry = {\n packaging: 'container-image',\n repositoryName: 'repository-name',\n imageTag: 'tag',\n}\n/// !hide\n// Code snippet ended before !hide marker above\n","syntaxKindCounter":{"11":3,"80":4,"211":1,"244":1,"261":1,"262":1,"304":3,"308":1},"fqnsFingerprint":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"8ca73f17168cfe977e2e7f7d640aea4e78b5dc022a16bf4e187251525ec88255":{"translations":{"python":{"source":"\"registry\"","version":"2"},"csharp":{"source":"\"registry\";","version":"1"},"java":{"source":"\"registry\";","version":"1"},"go":{"source":"\"registry\"","version":"1"},"$":{"source":"'registry'","version":"0"}},"location":{"api":{"api":"member","fqn":"@aws-cdk/cloud-assembly-schema.DockerCacheOption","memberName":"type"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":[],"fullSource":"// Fixture intentionally empty\n\n// Code snippet begins after !show marker below\n/// !show\n'registry'\n/// !hide\n// Code snippet ended before !hide marker above\n","syntaxKindCounter":{"11":1,"245":1,"308":1},"fqnsFingerprint":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"089525294f3dfb3bb6d7687a2ebd219fc6d219c96d08c082e3e3c9a5a39f04bc":{"translations":{"python":{"source":"# branch: str\n\n\nparams = {\n \"ref\": f\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:{branch}\",\n \"mode\": \"max\"\n}","version":"2"},"csharp":{"source":"string branch;\n\n\nIDictionary<string, object> params = new Dictionary<string, object> {\n { \"ref\", $\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:{branch}\" },\n { \"mode\", \"max\" }\n};","version":"1"},"java":{"source":"String branch;\n\n\nMap<String, Object> params = Map.of(\n \"ref\", String.format(\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:%s\", branch),\n \"mode\", \"max\");","version":"1"},"go":{"source":"var branch string\n\n\nparams := map[string]interface{}{\n\t\"ref\": fmt.Sprintf(\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:%v\", branch),\n\t\"mode\": jsii.String(\"max\"),\n}","version":"1"},"$":{"source":"declare const branch: string;\n\nconst params = {\n ref: `12345678.dkr.ecr.us-west-2.amazonaws.com/cache:${branch}`,\n mode: \"max\",\n};","version":"0"}},"location":{"api":{"api":"member","fqn":"@aws-cdk/cloud-assembly-schema.DockerCacheOption","memberName":"params"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":[],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\ndeclare const branch: string;\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture intentionally empty\n\n// Code snippet begins after !show marker below\n/// !show\n\n\nconst params = {\n ref: `12345678.dkr.ecr.us-west-2.amazonaws.com/cache:${branch}`,\n mode: \"max\",\n};\n/// !hide\n// Code snippet ended before !hide marker above\n","syntaxKindCounter":{"11":1,"16":1,"18":1,"80":5,"138":1,"154":1,"211":1,"229":1,"240":1,"244":2,"261":2,"262":2,"304":2,"308":1},"fqnsFingerprint":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"82a0fc5ca89d11e2a7e67427d70fec66670ed3a10a83efa087f4b2df94d6be57":{"translations":{"python":{"source":"entry = {\n \"packaging\": \"file\",\n \"s3_bucket_parameter\": \"bucket-parameter\",\n \"s3_key_paramenter\": \"key-parameter\",\n \"artifact_hash_parameter\": \"hash-parameter\"\n}","version":"2"},"csharp":{"source":"IDictionary<string, string> entry = new Dictionary<string, string> {\n { \"packaging\", \"file\" },\n { \"s3BucketParameter\", \"bucket-parameter\" },\n { \"s3KeyParamenter\", \"key-parameter\" },\n { \"artifactHashParameter\", \"hash-parameter\" }\n};","version":"1"},"java":{"source":"Map<String, String> entry = Map.of(\n \"packaging\", \"file\",\n \"s3BucketParameter\", \"bucket-parameter\",\n \"s3KeyParamenter\", \"key-parameter\",\n \"artifactHashParameter\", \"hash-parameter\");","version":"1"},"go":{"source":"entry := map[string]*string{\n\t\"packaging\": jsii.String(\"file\"),\n\t\"s3BucketParameter\": jsii.String(\"bucket-parameter\"),\n\t\"s3KeyParamenter\": jsii.String(\"key-parameter\"),\n\t\"artifactHashParameter\": jsii.String(\"hash-parameter\"),\n}","version":"1"},"$":{"source":"const entry = {\n packaging: 'file',\n s3BucketParameter: 'bucket-parameter',\n s3KeyParamenter: 'key-parameter',\n artifactHashParameter: 'hash-parameter',\n}","version":"0"}},"location":{"api":{"api":"type","fqn":"@aws-cdk/cloud-assembly-schema.FileAssetMetadataEntry"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":[],"fullSource":"// Fixture intentionally empty\n\n// Code snippet begins after !show marker below\n/// !show\nconst entry = {\n packaging: 'file',\n s3BucketParameter: 'bucket-parameter',\n s3KeyParamenter: 'key-parameter',\n artifactHashParameter: 'hash-parameter',\n}\n/// !hide\n// Code snippet ended before !hide marker above\n","syntaxKindCounter":{"11":4,"80":5,"211":1,"244":1,"261":1,"262":1,"304":4,"308":1},"fqnsFingerprint":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}}}
1
+ {"version":"2","toolVersion":"5.9.21","snippets":{"59b2c8b274418e610dc71ea98c30c160858d44561771f4fb7397f5abf40676d8":{"translations":{"python":{"source":"from aws_cdk.cloud_assembly_schema import CcApiContextQuery\nfrom aws_cdk.cloud_assembly_schema import CcApiContextQuery\n\n\nx = CcApiContextQuery(\n type_name=\"AWS::Some::Type\",\n expected_match_count=\"exactly-one\",\n resource_model={\"SomeArn\": \"arn:aws:....\"},\n properties_to_return=[\"SomeProp\"],\n account=\"11111111111\",\n region=\"us-east-1\"\n)","version":"2"},"csharp":{"source":"using Amazon.CDK.CloudAssembly.Schema;\n\n\nvar x = new CcApiContextQuery {\n TypeName = \"AWS::Some::Type\",\n ExpectedMatchCount = \"exactly-one\",\n ResourceModel = new Dictionary<string, object> { { \"SomeArn\", \"arn:aws:....\" } },\n PropertiesToReturn = new [] { \"SomeProp\" },\n Account = \"11111111111\",\n Region = \"us-east-1\"\n};","version":"1"},"java":{"source":"import software.amazon.awscdk.cloudassembly.schema.CcApiContextQuery;\n\n\nCcApiContextQuery x = CcApiContextQuery.builder()\n .typeName(\"AWS::Some::Type\")\n .expectedMatchCount(\"exactly-one\")\n .resourceModel(Map.of(\"SomeArn\", \"arn:aws:....\"))\n .propertiesToReturn(List.of(\"SomeProp\"))\n .account(\"11111111111\")\n .region(\"us-east-1\")\n .build();","version":"1"},"go":{"source":"import \"github.com/cdklabs/cloud-assembly-schema-go/awscdkcloudassemblyschema\"\n\n\nx := &CcApiContextQuery{\n\tTypeName: jsii.String(\"AWS::Some::Type\"),\n\tExpectedMatchCount: jsii.String(\"exactly-one\"),\n\tResourceModel: map[string]interface{}{\n\t\t\"SomeArn\": jsii.String(\"arn:aws:....\"),\n\t},\n\tPropertiesToReturn: []*string{\n\t\tjsii.String(\"SomeProp\"),\n\t},\n\tAccount: jsii.String(\"11111111111\"),\n\tRegion: jsii.String(\"us-east-1\"),\n}","version":"1"},"$":{"source":"import { CcApiContextQuery } from '@aws-cdk/cloud-assembly-schema';\n\nconst x: CcApiContextQuery = {\n typeName: 'AWS::Some::Type',\n expectedMatchCount: 'exactly-one',\n resourceModel: {SomeArn: 'arn:aws:....'},\n propertiesToReturn: ['SomeProp'],\n account: '11111111111',\n region: 'us-east-1',\n};","version":"0"}},"location":{"api":{"api":"type","fqn":"@aws-cdk/cloud-assembly-schema.CcApiContextQuery"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":["@aws-cdk/cloud-assembly-schema.CcApiContextQuery"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { CcApiContextQuery } from '@aws-cdk/cloud-assembly-schema';\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture intentionally empty\n\n// Code snippet begins after !show marker below\n/// !show\n\n\nconst x: CcApiContextQuery = {\n typeName: 'AWS::Some::Type',\n expectedMatchCount: 'exactly-one',\n resourceModel: {SomeArn: 'arn:aws:....'},\n propertiesToReturn: ['SomeProp'],\n account: '11111111111',\n region: 'us-east-1',\n};\n/// !hide\n// Code snippet ended before !hide marker above\n","syntaxKindCounter":{"11":7,"80":10,"184":1,"210":1,"211":2,"244":1,"261":1,"262":1,"273":1,"274":1,"276":1,"277":1,"304":7,"308":1},"fqnsFingerprint":"c7cd9bb2197a516f2be91b4937474267b1d9e7389618b15ec49a1afd5ccddd28"},"ed50ccafc79acf82c002383b64b4a7674dd3fb7feced40b7886b0ea45d7a2f53":{"translations":{"python":{"source":"\"registry\"","version":"2"},"csharp":{"source":"\"registry\";","version":"1"},"java":{"source":"\"registry\";","version":"1"},"go":{"source":"\"registry\"","version":"1"},"$":{"source":"'registry'","version":"0"}},"location":{"api":{"api":"member","fqn":"@aws-cdk/cloud-assembly-schema.ContainerImageAssetCacheOption","memberName":"type"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":[],"fullSource":"// Fixture intentionally empty\n\n// Code snippet begins after !show marker below\n/// !show\n'registry'\n/// !hide\n// Code snippet ended before !hide marker above\n","syntaxKindCounter":{"11":1,"245":1,"308":1},"fqnsFingerprint":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"74f6e3d3bc59ec8004507cb82fdf5644924846e87e5d795dc7dec654f80ecfa8":{"translations":{"python":{"source":"# branch: str\n\n\nparams = {\n \"ref\": f\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:{branch}\",\n \"mode\": \"max\"\n}","version":"2"},"csharp":{"source":"string branch;\n\n\nIDictionary<string, object> params = new Dictionary<string, object> {\n { \"ref\", $\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:{branch}\" },\n { \"mode\", \"max\" }\n};","version":"1"},"java":{"source":"String branch;\n\n\nMap<String, Object> params = Map.of(\n \"ref\", String.format(\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:%s\", branch),\n \"mode\", \"max\");","version":"1"},"go":{"source":"var branch string\n\n\nparams := map[string]interface{}{\n\t\"ref\": fmt.Sprintf(\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:%v\", branch),\n\t\"mode\": jsii.String(\"max\"),\n}","version":"1"},"$":{"source":"declare const branch: string;\n\nconst params = {\n ref: `12345678.dkr.ecr.us-west-2.amazonaws.com/cache:${branch}`,\n mode: \"max\",\n};","version":"0"}},"location":{"api":{"api":"member","fqn":"@aws-cdk/cloud-assembly-schema.ContainerImageAssetCacheOption","memberName":"params"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":[],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\ndeclare const branch: string;\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture intentionally empty\n\n// Code snippet begins after !show marker below\n/// !show\n\n\nconst params = {\n ref: `12345678.dkr.ecr.us-west-2.amazonaws.com/cache:${branch}`,\n mode: \"max\",\n};\n/// !hide\n// Code snippet ended before !hide marker above\n","syntaxKindCounter":{"11":1,"16":1,"18":1,"80":5,"138":1,"154":1,"211":1,"229":1,"240":1,"244":2,"261":2,"262":2,"304":2,"308":1},"fqnsFingerprint":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"5abfd7af60ba3b85920714aeeadeb2c1e4082c4d0ded3511ee41a643079af611":{"translations":{"python":{"source":"entry = {\n \"packaging\": \"container-image\",\n \"repository_name\": \"repository-name\",\n \"image_tag\": \"tag\"\n}","version":"2"},"csharp":{"source":"IDictionary<string, string> entry = new Dictionary<string, string> {\n { \"packaging\", \"container-image\" },\n { \"repositoryName\", \"repository-name\" },\n { \"imageTag\", \"tag\" }\n};","version":"1"},"java":{"source":"Map<String, String> entry = Map.of(\n \"packaging\", \"container-image\",\n \"repositoryName\", \"repository-name\",\n \"imageTag\", \"tag\");","version":"1"},"go":{"source":"entry := map[string]*string{\n\t\"packaging\": jsii.String(\"container-image\"),\n\t\"repositoryName\": jsii.String(\"repository-name\"),\n\t\"imageTag\": jsii.String(\"tag\"),\n}","version":"1"},"$":{"source":"const entry = {\n packaging: 'container-image',\n repositoryName: 'repository-name',\n imageTag: 'tag',\n}","version":"0"}},"location":{"api":{"api":"type","fqn":"@aws-cdk/cloud-assembly-schema.ContainerImageAssetMetadataEntry"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":[],"fullSource":"// Fixture intentionally empty\n\n// Code snippet begins after !show marker below\n/// !show\nconst entry = {\n packaging: 'container-image',\n repositoryName: 'repository-name',\n imageTag: 'tag',\n}\n/// !hide\n// Code snippet ended before !hide marker above\n","syntaxKindCounter":{"11":3,"80":4,"211":1,"244":1,"261":1,"262":1,"304":3,"308":1},"fqnsFingerprint":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"8ca73f17168cfe977e2e7f7d640aea4e78b5dc022a16bf4e187251525ec88255":{"translations":{"python":{"source":"\"registry\"","version":"2"},"csharp":{"source":"\"registry\";","version":"1"},"java":{"source":"\"registry\";","version":"1"},"go":{"source":"\"registry\"","version":"1"},"$":{"source":"'registry'","version":"0"}},"location":{"api":{"api":"member","fqn":"@aws-cdk/cloud-assembly-schema.DockerCacheOption","memberName":"type"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":[],"fullSource":"// Fixture intentionally empty\n\n// Code snippet begins after !show marker below\n/// !show\n'registry'\n/// !hide\n// Code snippet ended before !hide marker above\n","syntaxKindCounter":{"11":1,"245":1,"308":1},"fqnsFingerprint":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"089525294f3dfb3bb6d7687a2ebd219fc6d219c96d08c082e3e3c9a5a39f04bc":{"translations":{"python":{"source":"# branch: str\n\n\nparams = {\n \"ref\": f\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:{branch}\",\n \"mode\": \"max\"\n}","version":"2"},"csharp":{"source":"string branch;\n\n\nIDictionary<string, object> params = new Dictionary<string, object> {\n { \"ref\", $\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:{branch}\" },\n { \"mode\", \"max\" }\n};","version":"1"},"java":{"source":"String branch;\n\n\nMap<String, Object> params = Map.of(\n \"ref\", String.format(\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:%s\", branch),\n \"mode\", \"max\");","version":"1"},"go":{"source":"var branch string\n\n\nparams := map[string]interface{}{\n\t\"ref\": fmt.Sprintf(\"12345678.dkr.ecr.us-west-2.amazonaws.com/cache:%v\", branch),\n\t\"mode\": jsii.String(\"max\"),\n}","version":"1"},"$":{"source":"declare const branch: string;\n\nconst params = {\n ref: `12345678.dkr.ecr.us-west-2.amazonaws.com/cache:${branch}`,\n mode: \"max\",\n};","version":"0"}},"location":{"api":{"api":"member","fqn":"@aws-cdk/cloud-assembly-schema.DockerCacheOption","memberName":"params"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":[],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\ndeclare const branch: string;\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture intentionally empty\n\n// Code snippet begins after !show marker below\n/// !show\n\n\nconst params = {\n ref: `12345678.dkr.ecr.us-west-2.amazonaws.com/cache:${branch}`,\n mode: \"max\",\n};\n/// !hide\n// Code snippet ended before !hide marker above\n","syntaxKindCounter":{"11":1,"16":1,"18":1,"80":5,"138":1,"154":1,"211":1,"229":1,"240":1,"244":2,"261":2,"262":2,"304":2,"308":1},"fqnsFingerprint":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"82a0fc5ca89d11e2a7e67427d70fec66670ed3a10a83efa087f4b2df94d6be57":{"translations":{"python":{"source":"entry = {\n \"packaging\": \"file\",\n \"s3_bucket_parameter\": \"bucket-parameter\",\n \"s3_key_paramenter\": \"key-parameter\",\n \"artifact_hash_parameter\": \"hash-parameter\"\n}","version":"2"},"csharp":{"source":"IDictionary<string, string> entry = new Dictionary<string, string> {\n { \"packaging\", \"file\" },\n { \"s3BucketParameter\", \"bucket-parameter\" },\n { \"s3KeyParamenter\", \"key-parameter\" },\n { \"artifactHashParameter\", \"hash-parameter\" }\n};","version":"1"},"java":{"source":"Map<String, String> entry = Map.of(\n \"packaging\", \"file\",\n \"s3BucketParameter\", \"bucket-parameter\",\n \"s3KeyParamenter\", \"key-parameter\",\n \"artifactHashParameter\", \"hash-parameter\");","version":"1"},"go":{"source":"entry := map[string]*string{\n\t\"packaging\": jsii.String(\"file\"),\n\t\"s3BucketParameter\": jsii.String(\"bucket-parameter\"),\n\t\"s3KeyParamenter\": jsii.String(\"key-parameter\"),\n\t\"artifactHashParameter\": jsii.String(\"hash-parameter\"),\n}","version":"1"},"$":{"source":"const entry = {\n packaging: 'file',\n s3BucketParameter: 'bucket-parameter',\n s3KeyParamenter: 'key-parameter',\n artifactHashParameter: 'hash-parameter',\n}","version":"0"}},"location":{"api":{"api":"type","fqn":"@aws-cdk/cloud-assembly-schema.FileAssetMetadataEntry"},"field":{"field":"example"}},"didCompile":true,"fqnsReferenced":[],"fullSource":"// Fixture intentionally empty\n\n// Code snippet begins after !show marker below\n/// !show\nconst entry = {\n packaging: 'file',\n s3BucketParameter: 'bucket-parameter',\n s3KeyParamenter: 'key-parameter',\n artifactHashParameter: 'hash-parameter',\n}\n/// !hide\n// Code snippet ended before !hide marker above\n","syntaxKindCounter":{"11":4,"80":5,"211":1,"244":1,"261":1,"262":1,"304":4,"308":1},"fqnsFingerprint":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}}}
package/cli-version.json CHANGED
@@ -1 +1 @@
1
- {"version":"2.1100.3"}
1
+ {"version":"2.1102.0"}
@@ -58,6 +58,12 @@ export interface AwsCloudFormationStackProperties {
58
58
  /**
59
59
  * Values for CloudFormation stack tags that should be passed when the stack is deployed.
60
60
  *
61
+ * N.B.: Tags are also written to stack metadata, under the path of the Stack
62
+ * construct. Only in CDK CLI v1 are those tags found in metadata used for
63
+ * actual deployments; in all stable versions of CDK only the stack tags
64
+ * directly found in the `tags` property of `AwsCloudFormationStack` artifact
65
+ * (i.e., this property) are used.
66
+ *
61
67
  * @default - No tags
62
68
  */
63
69
  readonly tags?: {
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3Qtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXJ0aWZhY3Qtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEluZm9ybWF0aW9uIG5lZWRlZCB0byBhY2Nlc3MgYW4gSUFNIHJvbGUgY3JlYXRlZFxuICogYXMgcGFydCBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBSb2xlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIElBTSByb2xlIGNyZWF0ZWQgYXMgcGFydCBvZiBib290cmFwcGluZ1xuICAgKiBlLmcuIGxvb2t1cFJvbGVBcm5cbiAgICovXG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCBJRCB0byB1c2Ugd2hlbiBhc3N1bWluZyB0aGUgYm9vdHN0cmFwIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBleHRlcm5hbCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIFNUUyB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKlxuICAgKiAtIGBSb2xlQXJuYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhcm5gIHByb3BlcnR5IGluc3RlYWQuXG4gICAqIC0gYEV4dGVybmFsSWRgIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGFzc3VtZVJvbGVFeHRlcm5hbElkYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvU1RTLmh0bWwjYXNzdW1lUm9sZS1wcm9wZXJ0eVxuICAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgYm9vdHN0cmFwIHN0YWNrIHJlcXVpcmVkIHRvIHVzZSB0aGlzIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBib290c3RyYXAgc3RhY2sgcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIFNTTSBwYXJhbWV0ZXIgd2l0aCBib290c3RyYXAgc3RhY2sgdmVyc2lvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERpc2NvdmVyIFNTTSBwYXJhbWV0ZXIgYnkgcmVhZGluZyBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgYm9vdHN0cmFwU3RhY2tWZXJzaW9uU3NtUGFyYW1ldGVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFydGlmYWN0IHByb3BlcnRpZXMgZm9yIENsb3VkRm9ybWF0aW9uIHN0YWNrcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NDbG91ZEZvcm1hdGlvblN0YWNrUHJvcGVydGllcyB7XG4gIC8qKlxuICAgKiBBIGZpbGUgcmVsYXRpdmUgdG8gdGhlIGFzc2VtYmx5IHJvb3Qgd2hpY2ggY29udGFpbnMgdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIGZvciB0aGlzIHN0YWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGVGaWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlcyBmb3IgQ2xvdWRGb3JtYXRpb24gc3RhY2sgcGFyYW1ldGVycyB0aGF0IHNob3VsZCBiZSBwYXNzZWQgd2hlbiB0aGUgc3RhY2sgaXMgZGVwbG95ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcGFyYW1ldGVyc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVmFsdWVzIGZvciBDbG91ZEZvcm1hdGlvbiBzdGFjayB0YWdzIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB3aGVuIHRoZSBzdGFjayBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBbaWQ6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBTTlMgTm90aWZpY2F0aW9uIEFSTnMgdGhhdCBzaG91bGQgcmVjZWl2ZSBDbG91ZEZvcm1hdGlvbiBTdGFjayBFdmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbm90aWZpY2F0aW9uIGFybnNcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbkFybnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgdG8gdXNlIGZvciB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gICAqIEBkZWZhdWx0IC0gbmFtZSBkZXJpdmVkIGZyb20gYXJ0aWZhY3QgSURcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgdGVybWluYXRpb24gcHJvdGVjdGlvbiBmb3IgdGhpcyBzdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHRlcm1pbmF0aW9uUHJvdGVjdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgbmVlZHMgdG8gYmUgYXNzdW1lZCB0byBkZXBsb3kgdGhlIHN0YWNrXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBhc3N1bWVkIChjdXJyZW50IGNyZWRlbnRpYWxzIGFyZSB1c2VkKVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogRXh0ZXJuYWwgSUQgdG8gdXNlIHdoZW4gYXNzdW1pbmcgcm9sZSBmb3IgY2xvdWRmb3JtYXRpb24gZGVwbG95bWVudHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBleHRlcm5hbCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIFNUUyB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKlxuICAgKiAtIGBSb2xlQXJuYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhc3N1bWVSb2xlQXJuYCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgKiAtIGBFeHRlcm5hbElkYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhc3N1bWVSb2xlRXh0ZXJuYWxJZGAgaW5zdGVhZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL1NUUy5odG1sI2Fzc3VtZVJvbGUtcHJvcGVydHlcbiAgICogQGRlZmF1bHQgLSBObyBhZGRpdGlvbmFsIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IGlzIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbiB0byBleGVjdXRlIHRoZSBjaGFuZ2Ugc2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBwYXNzZWQgKGN1cnJlbnRseSBhc3N1bWVkIHJvbGUvY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRvIHVzZSB0byBsb29rIHVwIHZhbHVlcyBmcm9tIHRoZSB0YXJnZXQgQVdTIGFjY291bnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyByb2xlIGlzIGFzc3VtZWQgKGN1cnJlbnQgY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBsb29rdXBSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogSWYgdGhlIHN0YWNrIHRlbXBsYXRlIGhhcyBhbHJlYWR5IGJlZW4gaW5jbHVkZWQgaW4gdGhlIGFzc2V0IG1hbmlmZXN0LCBpdHMgYXNzZXQgVVJMXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm90IHVwbG9hZGVkIHlldCwgdXBsb2FkIGp1c3QgYmVmb3JlIGRlcGxveWluZ1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUZW1wbGF0ZUFzc2V0T2JqZWN0VXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNTTSBwYXJhbWV0ZXIgd2hlcmUgdGhlIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBjYW4gYmUgZm91bmRcbiAgICpcbiAgICogT25seSB1c2VkIGlmIGByZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbmAgaXMgc2V0LlxuICAgKlxuICAgKiAtIElmIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBuYW1lIG11c3QgYmUga25vd24gYXRcbiAgICogICBkZXBsb3ltZW50IHRpbWUgc28gdGhlIHN0YWNrIHZlcnNpb24gY2FuIGJlIGxvb2tlZCB1cCBmcm9tIHRoZSBzdGFja1xuICAgKiAgIG91dHB1dHMuXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBzZXQsIHRoZSBib290c3RyYXAgc3RhY2sgY2FuIGhhdmUgYW55IG5hbWUgYmVjYXVzZVxuICAgKiAgIHdlIHdvbid0IG5lZWQgdG8gbG9vayBpdCB1cC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBCb290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgbG9va2VkIHVwXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzdGFjayBzaG91bGQgYmUgdmFsaWRhdGVkIGJ5IHRoZSBDTEkgYWZ0ZXIgc3ludGhlc2lzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRlT25TeW50aD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIFZlcnNpb24gMSAoYmFzaWMgbW9kZXJuIGJvb3RzdHJhcCBzdGFjaylcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTU00gcGFyYW1ldGVyIHdoZXJlIHRoZSBib290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgY2FuIGJlIGZvdW5kXG4gICAqXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCB0aGUgYm9vdHN0cmFwIHN0YWNrIG5hbWUgbXVzdCBiZSBrbm93biBhdFxuICAgKiAgIGRlcGxveW1lbnQgdGltZSBzbyB0aGUgc3RhY2sgdmVyc2lvbiBjYW4gYmUgbG9va2VkIHVwIGZyb20gdGhlIHN0YWNrXG4gICAqICAgb3V0cHV0cy5cbiAgICogLSBJZiB0aGlzIHZhbHVlIGlzIHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBjYW4gaGF2ZSBhbnkgbmFtZSBiZWNhdXNlXG4gICAqICAgd2Ugd29uJ3QgbmVlZCB0byBsb29rIGl0IHVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBsb29rZWQgdXBcbiAgICovXG4gIHJlYWRvbmx5IGJvb3RzdHJhcFN0YWNrVmVyc2lvblNzbVBhcmFtZXRlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0UHJvcGVydGllcyBleHRlbmRzIEFzc2V0TWFuaWZlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbGVuYW1lIG9mIHRoZSBhc3NldCBtYW5pZmVzdFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFydGlmYWN0IHByb3BlcnRpZXMgZm9yIHRoZSBDb25zdHJ1Y3QgVHJlZSBBcnRpZmFjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVBcnRpZmFjdFByb3BlcnRpZXMge1xuICAvKipcbiAgICogRmlsZW5hbWUgb2YgdGhlIHRyZWUgYXJ0aWZhY3RcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciBuZXN0ZWQgY2xvdWQgYXNzZW1ibGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFJlbGF0aXZlIHBhdGggdG8gdGhlIG5lc3RlZCBjbG91ZCBhc3NlbWJseVxuICAgKi9cbiAgcmVhZG9ubHkgZGlyZWN0b3J5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBjbG91ZCBhc3NlbWJseVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBhcnRpZmFjdCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXJ0aWZhY3QgcHJvcGVydGllcyBmb3IgYSBmZWF0dXJlIGZsYWcgcmVwb3J0XG4gKlxuICogQSBmZWF0dXJlIGZsYWcgcmVwb3J0IGlzIHNtYWxsIGVub3VnaCB0aGF0IGFsbCB0aGUgcHJvcGVydGllcyBjYW4gYmUgaW5saW5lZFxuICogaGVyZSwgYW5kIGRvZXNuJ3QgbmVlZCBhbiBhZGRpdGlvbmFsIGZpbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUZsYWdSZXBvcnRQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFRoZSBsaWJyYXJ5IHRoYXQgdGhpcyBmZWF0dXJlIGZsYWcgcmVwb3J0IGFwcGxpZXMgdG8uXG4gICAqL1xuICByZWFkb25seSBtb2R1bGU6IHN0cmluZztcblxuICAvKipcbiAgICogSW5mb3JtYXRpb24gYWJvdXQgZXZlcnkgZmVhdHVyZSBmbGFnIHN1cHBvcnRlZCBieSB0aGlzIGxpYnJhcnkuXG4gICAqL1xuICByZWFkb25seSBmbGFnczogeyBbZmxhZ05hbWU6IHN0cmluZ106IEZlYXR1cmVGbGFnIH07XG59XG5cbi8qKlxuICogQSBzaW5nbGUgZmVhdHVyZSBmbGFnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUZsYWcge1xuICAvKipcbiAgICogVGhlIGxpYnJhcnktcmVjb21tZW5kZWQgdmFsdWUgZm9yIHRoaXMgZmxhZywgaWYgYW55XG4gICAqXG4gICAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgaXMgbm8gcmVjb21tZW5kZWQgdmFsdWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcmVjb21tZW5kZWQgdmFsdWUuXG4gICAqL1xuICByZWFkb25seSByZWNvbW1lbmRlZFZhbHVlPzogYW55O1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgY29uZmlndXJlZCBieSB0aGUgdXNlclxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSB2YWx1ZSBjb25maWd1cmVkIGF0IHRoZSByb290IG9mIHRoZSB0cmVlLiBVc2VycyBtYXkgYWxzbyBoYXZlXG4gICAqIGNvbmZpZ3VyZWQgdmFsdWVzIGF0IHNwZWNpZmljIGxvY2F0aW9ucyBpbiB0aGUgdHJlZTsgd2UgZG9uJ3QgcmVwb3J0IG9uXG4gICAqIHRob3NlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vdCBjb25maWd1cmVkIGJ5IHRoZSB1c2VyXG4gICAqL1xuICByZWFkb25seSB1c2VyVmFsdWU/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEV4cGxhbmF0aW9uIGFib3V0IHRoZSBwdXJwb3NlIG9mIHRoaXMgZmxhZyB0aGF0IGNhbiBiZSBzaG93biB0byB0aGUgdXNlci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZXhwbGFuYXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgZmxhZyB0aGF0IHByb2R1Y2VzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHdoZW4gdGhlIGZsYWcgaXMgbm90IGNvbmZpZ3VyZWQgYXQgYWxsXG4gICAqXG4gICAqVGhlIHN0cnVjdHVyZSBvZiB0aGlzIGZpZWxkIGlzIGEgaGlzdG9yaWNhbCBhY2NpZGVudC4gVGhlIHR5cGUgb2YgdGhpcyBmaWVsZFxuICAgKnNob3VsZCBoYXZlIGJlZW4gYm9vbGVhbiwgd2hpY2ggc2hvdWxkIGhhdmUgY29udGFpbmVkIHRoZSBkZWZhdWx0IHZhbHVlIGZvclxuICAgKnRoZSBmbGFnIGFwcHJvcHJpYXRlIGZvciB0aGUgKmN1cnJlbnQqIHZlcnNpb24gb2YgdGhlIENESyBsaWJyYXJ5LiBXZSBhcmVcbiAgICpub3QgcmVjdGlmeWluZyB0aGlzIGFjY2lkZW50IGJlY2F1c2UgZG9pbmcgc29cbiAgICpcbiAgICogSW5zdGVhZCwgdGhlIGNhbm9uaWNhbCB3YXkgdG8gYWNjZXNzIHRoaXMgdmFsdWUgaXMgYnkgZXZhbHVhdGluZ1xuICAgKiBgdW5jb25maWd1cmVkQmVoYXZlc0xpa2U/LnYyID8/IGZhbHNlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHVuY29uZmlndXJlZEJlaGF2ZXNMaWtlPzogVW5jb25maWd1cmVkQmVoYXZlc0xpa2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5jb25maWd1cmVkQmVoYXZlc0xpa2Uge1xuICAvKipcbiAgICogSGlzdG9yaWNhbCBhY2NpZGVudCwgZG9uJ3QgdXNlLlxuICAgKlxuICAgKiBUaGlzIHZhbHVlIG1heSBiZSBwcmVzZW50LCBidXQgaXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQuIFRoZSBhY3R1YWwgdmFsdWUgaXNcbiAgICogaW4gdGhlIGB2MmAgZmllbGQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHZlcnNpb24gb2YgdGhlIENESyBsaWJyYXJ5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGlnbm9yZVxuICAgKi9cbiAgcmVhZG9ubHkgdjE/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgZmxhZyB0aGF0IHByb2R1Y2VzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHdoZW4gdGhlIGZsYWcgaXMgbm90IGNvbmZpZ3VyZWQgYXQgYWxsXG4gICAqXG4gICAqIEV2ZW4gdGhvdWdoIGl0IGlzIGNhbGxlZCAndjInLCB0aGlzIGlzIHRoZSBvZmZpY2lhbCBuYW1lIG9mIHRoaXMgZmllbGQuIEluXG4gICAqIGFueSBmdXR1cmUgdmVyc2lvbnMgb2YgQ0RLICh2MywgdjQsIC4uLiksIHRoaXMgZmllbGQgd2lsbCBzdGlsbCBiZSBjYWxsZWQgJ3YyJy5cbiAgICpcbiAgICogVGhlIHN0cnVjdHVyZSBvZiB0aGlzIGZpZWxkIGlzIGEgaGlzdG9yaWNhbCBhY2NpZGVudC4gU2VlIHRoZSBjb21tZW50IG9uXG4gICAqIGB1bmNvbmZpZ3VyZWRCZWhhdmVzTGlrZWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB2Mj86IGFueTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBtYW5pZmVzdCBhcnRpZmFjdHNcbiAqL1xuZXhwb3J0IHR5cGUgQXJ0aWZhY3RQcm9wZXJ0aWVzID1cbiAgfCBBd3NDbG91ZEZvcm1hdGlvblN0YWNrUHJvcGVydGllc1xuICB8IEFzc2V0TWFuaWZlc3RQcm9wZXJ0aWVzXG4gIHwgVHJlZUFydGlmYWN0UHJvcGVydGllc1xuICB8IE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzXG4gIHwgRmVhdHVyZUZsYWdSZXBvcnRQcm9wZXJ0aWVzO1xuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3Qtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXJ0aWZhY3Qtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEluZm9ybWF0aW9uIG5lZWRlZCB0byBhY2Nlc3MgYW4gSUFNIHJvbGUgY3JlYXRlZFxuICogYXMgcGFydCBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBSb2xlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIElBTSByb2xlIGNyZWF0ZWQgYXMgcGFydCBvZiBib290cmFwcGluZ1xuICAgKiBlLmcuIGxvb2t1cFJvbGVBcm5cbiAgICovXG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCBJRCB0byB1c2Ugd2hlbiBhc3N1bWluZyB0aGUgYm9vdHN0cmFwIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBleHRlcm5hbCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIFNUUyB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKlxuICAgKiAtIGBSb2xlQXJuYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhcm5gIHByb3BlcnR5IGluc3RlYWQuXG4gICAqIC0gYEV4dGVybmFsSWRgIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGFzc3VtZVJvbGVFeHRlcm5hbElkYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvU1RTLmh0bWwjYXNzdW1lUm9sZS1wcm9wZXJ0eVxuICAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgYm9vdHN0cmFwIHN0YWNrIHJlcXVpcmVkIHRvIHVzZSB0aGlzIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBib290c3RyYXAgc3RhY2sgcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIFNTTSBwYXJhbWV0ZXIgd2l0aCBib290c3RyYXAgc3RhY2sgdmVyc2lvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERpc2NvdmVyIFNTTSBwYXJhbWV0ZXIgYnkgcmVhZGluZyBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgYm9vdHN0cmFwU3RhY2tWZXJzaW9uU3NtUGFyYW1ldGVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFydGlmYWN0IHByb3BlcnRpZXMgZm9yIENsb3VkRm9ybWF0aW9uIHN0YWNrcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NDbG91ZEZvcm1hdGlvblN0YWNrUHJvcGVydGllcyB7XG4gIC8qKlxuICAgKiBBIGZpbGUgcmVsYXRpdmUgdG8gdGhlIGFzc2VtYmx5IHJvb3Qgd2hpY2ggY29udGFpbnMgdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIGZvciB0aGlzIHN0YWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVtcGxhdGVGaWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlcyBmb3IgQ2xvdWRGb3JtYXRpb24gc3RhY2sgcGFyYW1ldGVycyB0aGF0IHNob3VsZCBiZSBwYXNzZWQgd2hlbiB0aGUgc3RhY2sgaXMgZGVwbG95ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcGFyYW1ldGVyc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IHsgW2lkOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVmFsdWVzIGZvciBDbG91ZEZvcm1hdGlvbiBzdGFjayB0YWdzIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB3aGVuIHRoZSBzdGFjayBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogTi5CLjogVGFncyBhcmUgYWxzbyB3cml0dGVuIHRvIHN0YWNrIG1ldGFkYXRhLCB1bmRlciB0aGUgcGF0aCBvZiB0aGUgU3RhY2tcbiAgICogY29uc3RydWN0LiBPbmx5IGluIENESyBDTEkgdjEgYXJlIHRob3NlIHRhZ3MgZm91bmQgaW4gbWV0YWRhdGEgdXNlZCBmb3JcbiAgICogYWN0dWFsIGRlcGxveW1lbnRzOyBpbiBhbGwgc3RhYmxlIHZlcnNpb25zIG9mIENESyBvbmx5IHRoZSBzdGFjayB0YWdzXG4gICAqIGRpcmVjdGx5IGZvdW5kIGluIHRoZSBgdGFnc2AgcHJvcGVydHkgb2YgYEF3c0Nsb3VkRm9ybWF0aW9uU3RhY2tgIGFydGlmYWN0XG4gICAqIChpLmUuLCB0aGlzIHByb3BlcnR5KSBhcmUgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBbaWQ6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBTTlMgTm90aWZpY2F0aW9uIEFSTnMgdGhhdCBzaG91bGQgcmVjZWl2ZSBDbG91ZEZvcm1hdGlvbiBTdGFjayBFdmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbm90aWZpY2F0aW9uIGFybnNcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbkFybnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgdG8gdXNlIGZvciB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gICAqIEBkZWZhdWx0IC0gbmFtZSBkZXJpdmVkIGZyb20gYXJ0aWZhY3QgSURcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgdGVybWluYXRpb24gcHJvdGVjdGlvbiBmb3IgdGhpcyBzdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHRlcm1pbmF0aW9uUHJvdGVjdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgbmVlZHMgdG8gYmUgYXNzdW1lZCB0byBkZXBsb3kgdGhlIHN0YWNrXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBhc3N1bWVkIChjdXJyZW50IGNyZWRlbnRpYWxzIGFyZSB1c2VkKVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogRXh0ZXJuYWwgSUQgdG8gdXNlIHdoZW4gYXNzdW1pbmcgcm9sZSBmb3IgY2xvdWRmb3JtYXRpb24gZGVwbG95bWVudHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBleHRlcm5hbCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIFNUUyB3aGVuIGFzc3VtaW5nIHRoZSByb2xlLlxuICAgKlxuICAgKiAtIGBSb2xlQXJuYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhc3N1bWVSb2xlQXJuYCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgKiAtIGBFeHRlcm5hbElkYCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSB0aGUgZGVkaWNhdGVkIGBhc3N1bWVSb2xlRXh0ZXJuYWxJZGAgaW5zdGVhZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy9sYXRlc3QvQVdTL1NUUy5odG1sI2Fzc3VtZVJvbGUtcHJvcGVydHlcbiAgICogQGRlZmF1bHQgLSBObyBhZGRpdGlvbmFsIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IGlzIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbiB0byBleGVjdXRlIHRoZSBjaGFuZ2Ugc2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBwYXNzZWQgKGN1cnJlbnRseSBhc3N1bWVkIHJvbGUvY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRvIHVzZSB0byBsb29rIHVwIHZhbHVlcyBmcm9tIHRoZSB0YXJnZXQgQVdTIGFjY291bnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyByb2xlIGlzIGFzc3VtZWQgKGN1cnJlbnQgY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBsb29rdXBSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogSWYgdGhlIHN0YWNrIHRlbXBsYXRlIGhhcyBhbHJlYWR5IGJlZW4gaW5jbHVkZWQgaW4gdGhlIGFzc2V0IG1hbmlmZXN0LCBpdHMgYXNzZXQgVVJMXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm90IHVwbG9hZGVkIHlldCwgdXBsb2FkIGp1c3QgYmVmb3JlIGRlcGxveWluZ1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUZW1wbGF0ZUFzc2V0T2JqZWN0VXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNTTSBwYXJhbWV0ZXIgd2hlcmUgdGhlIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBjYW4gYmUgZm91bmRcbiAgICpcbiAgICogT25seSB1c2VkIGlmIGByZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbmAgaXMgc2V0LlxuICAgKlxuICAgKiAtIElmIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBuYW1lIG11c3QgYmUga25vd24gYXRcbiAgICogICBkZXBsb3ltZW50IHRpbWUgc28gdGhlIHN0YWNrIHZlcnNpb24gY2FuIGJlIGxvb2tlZCB1cCBmcm9tIHRoZSBzdGFja1xuICAgKiAgIG91dHB1dHMuXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBzZXQsIHRoZSBib290c3RyYXAgc3RhY2sgY2FuIGhhdmUgYW55IG5hbWUgYmVjYXVzZVxuICAgKiAgIHdlIHdvbid0IG5lZWQgdG8gbG9vayBpdCB1cC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBCb290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgbG9va2VkIHVwXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzdGFjayBzaG91bGQgYmUgdmFsaWRhdGVkIGJ5IHRoZSBDTEkgYWZ0ZXIgc3ludGhlc2lzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRlT25TeW50aD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIFZlcnNpb24gMSAoYmFzaWMgbW9kZXJuIGJvb3RzdHJhcCBzdGFjaylcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTU00gcGFyYW1ldGVyIHdoZXJlIHRoZSBib290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgY2FuIGJlIGZvdW5kXG4gICAqXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCB0aGUgYm9vdHN0cmFwIHN0YWNrIG5hbWUgbXVzdCBiZSBrbm93biBhdFxuICAgKiAgIGRlcGxveW1lbnQgdGltZSBzbyB0aGUgc3RhY2sgdmVyc2lvbiBjYW4gYmUgbG9va2VkIHVwIGZyb20gdGhlIHN0YWNrXG4gICAqICAgb3V0cHV0cy5cbiAgICogLSBJZiB0aGlzIHZhbHVlIGlzIHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBjYW4gaGF2ZSBhbnkgbmFtZSBiZWNhdXNlXG4gICAqICAgd2Ugd29uJ3QgbmVlZCB0byBsb29rIGl0IHVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBsb29rZWQgdXBcbiAgICovXG4gIHJlYWRvbmx5IGJvb3RzdHJhcFN0YWNrVmVyc2lvblNzbVBhcmFtZXRlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0UHJvcGVydGllcyBleHRlbmRzIEFzc2V0TWFuaWZlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbGVuYW1lIG9mIHRoZSBhc3NldCBtYW5pZmVzdFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFydGlmYWN0IHByb3BlcnRpZXMgZm9yIHRoZSBDb25zdHJ1Y3QgVHJlZSBBcnRpZmFjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVBcnRpZmFjdFByb3BlcnRpZXMge1xuICAvKipcbiAgICogRmlsZW5hbWUgb2YgdGhlIHRyZWUgYXJ0aWZhY3RcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciBuZXN0ZWQgY2xvdWQgYXNzZW1ibGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFJlbGF0aXZlIHBhdGggdG8gdGhlIG5lc3RlZCBjbG91ZCBhc3NlbWJseVxuICAgKi9cbiAgcmVhZG9ubHkgZGlyZWN0b3J5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBjbG91ZCBhc3NlbWJseVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBhcnRpZmFjdCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXJ0aWZhY3QgcHJvcGVydGllcyBmb3IgYSBmZWF0dXJlIGZsYWcgcmVwb3J0XG4gKlxuICogQSBmZWF0dXJlIGZsYWcgcmVwb3J0IGlzIHNtYWxsIGVub3VnaCB0aGF0IGFsbCB0aGUgcHJvcGVydGllcyBjYW4gYmUgaW5saW5lZFxuICogaGVyZSwgYW5kIGRvZXNuJ3QgbmVlZCBhbiBhZGRpdGlvbmFsIGZpbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUZsYWdSZXBvcnRQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFRoZSBsaWJyYXJ5IHRoYXQgdGhpcyBmZWF0dXJlIGZsYWcgcmVwb3J0IGFwcGxpZXMgdG8uXG4gICAqL1xuICByZWFkb25seSBtb2R1bGU6IHN0cmluZztcblxuICAvKipcbiAgICogSW5mb3JtYXRpb24gYWJvdXQgZXZlcnkgZmVhdHVyZSBmbGFnIHN1cHBvcnRlZCBieSB0aGlzIGxpYnJhcnkuXG4gICAqL1xuICByZWFkb25seSBmbGFnczogeyBbZmxhZ05hbWU6IHN0cmluZ106IEZlYXR1cmVGbGFnIH07XG59XG5cbi8qKlxuICogQSBzaW5nbGUgZmVhdHVyZSBmbGFnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUZsYWcge1xuICAvKipcbiAgICogVGhlIGxpYnJhcnktcmVjb21tZW5kZWQgdmFsdWUgZm9yIHRoaXMgZmxhZywgaWYgYW55XG4gICAqXG4gICAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgaXMgbm8gcmVjb21tZW5kZWQgdmFsdWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcmVjb21tZW5kZWQgdmFsdWUuXG4gICAqL1xuICByZWFkb25seSByZWNvbW1lbmRlZFZhbHVlPzogYW55O1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgY29uZmlndXJlZCBieSB0aGUgdXNlclxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSB2YWx1ZSBjb25maWd1cmVkIGF0IHRoZSByb290IG9mIHRoZSB0cmVlLiBVc2VycyBtYXkgYWxzbyBoYXZlXG4gICAqIGNvbmZpZ3VyZWQgdmFsdWVzIGF0IHNwZWNpZmljIGxvY2F0aW9ucyBpbiB0aGUgdHJlZTsgd2UgZG9uJ3QgcmVwb3J0IG9uXG4gICAqIHRob3NlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vdCBjb25maWd1cmVkIGJ5IHRoZSB1c2VyXG4gICAqL1xuICByZWFkb25seSB1c2VyVmFsdWU/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEV4cGxhbmF0aW9uIGFib3V0IHRoZSBwdXJwb3NlIG9mIHRoaXMgZmxhZyB0aGF0IGNhbiBiZSBzaG93biB0byB0aGUgdXNlci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZXhwbGFuYXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgZmxhZyB0aGF0IHByb2R1Y2VzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHdoZW4gdGhlIGZsYWcgaXMgbm90IGNvbmZpZ3VyZWQgYXQgYWxsXG4gICAqXG4gICAqVGhlIHN0cnVjdHVyZSBvZiB0aGlzIGZpZWxkIGlzIGEgaGlzdG9yaWNhbCBhY2NpZGVudC4gVGhlIHR5cGUgb2YgdGhpcyBmaWVsZFxuICAgKnNob3VsZCBoYXZlIGJlZW4gYm9vbGVhbiwgd2hpY2ggc2hvdWxkIGhhdmUgY29udGFpbmVkIHRoZSBkZWZhdWx0IHZhbHVlIGZvclxuICAgKnRoZSBmbGFnIGFwcHJvcHJpYXRlIGZvciB0aGUgKmN1cnJlbnQqIHZlcnNpb24gb2YgdGhlIENESyBsaWJyYXJ5LiBXZSBhcmVcbiAgICpub3QgcmVjdGlmeWluZyB0aGlzIGFjY2lkZW50IGJlY2F1c2UgZG9pbmcgc29cbiAgICpcbiAgICogSW5zdGVhZCwgdGhlIGNhbm9uaWNhbCB3YXkgdG8gYWNjZXNzIHRoaXMgdmFsdWUgaXMgYnkgZXZhbHVhdGluZ1xuICAgKiBgdW5jb25maWd1cmVkQmVoYXZlc0xpa2U/LnYyID8/IGZhbHNlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHVuY29uZmlndXJlZEJlaGF2ZXNMaWtlPzogVW5jb25maWd1cmVkQmVoYXZlc0xpa2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5jb25maWd1cmVkQmVoYXZlc0xpa2Uge1xuICAvKipcbiAgICogSGlzdG9yaWNhbCBhY2NpZGVudCwgZG9uJ3QgdXNlLlxuICAgKlxuICAgKiBUaGlzIHZhbHVlIG1heSBiZSBwcmVzZW50LCBidXQgaXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQuIFRoZSBhY3R1YWwgdmFsdWUgaXNcbiAgICogaW4gdGhlIGB2MmAgZmllbGQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHZlcnNpb24gb2YgdGhlIENESyBsaWJyYXJ5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGlnbm9yZVxuICAgKi9cbiAgcmVhZG9ubHkgdjE/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgZmxhZyB0aGF0IHByb2R1Y2VzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHdoZW4gdGhlIGZsYWcgaXMgbm90IGNvbmZpZ3VyZWQgYXQgYWxsXG4gICAqXG4gICAqIEV2ZW4gdGhvdWdoIGl0IGlzIGNhbGxlZCAndjInLCB0aGlzIGlzIHRoZSBvZmZpY2lhbCBuYW1lIG9mIHRoaXMgZmllbGQuIEluXG4gICAqIGFueSBmdXR1cmUgdmVyc2lvbnMgb2YgQ0RLICh2MywgdjQsIC4uLiksIHRoaXMgZmllbGQgd2lsbCBzdGlsbCBiZSBjYWxsZWQgJ3YyJy5cbiAgICpcbiAgICogVGhlIHN0cnVjdHVyZSBvZiB0aGlzIGZpZWxkIGlzIGEgaGlzdG9yaWNhbCBhY2NpZGVudC4gU2VlIHRoZSBjb21tZW50IG9uXG4gICAqIGB1bmNvbmZpZ3VyZWRCZWhhdmVzTGlrZWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB2Mj86IGFueTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBtYW5pZmVzdCBhcnRpZmFjdHNcbiAqL1xuZXhwb3J0IHR5cGUgQXJ0aWZhY3RQcm9wZXJ0aWVzID1cbiAgfCBBd3NDbG91ZEZvcm1hdGlvblN0YWNrUHJvcGVydGllc1xuICB8IEFzc2V0TWFuaWZlc3RQcm9wZXJ0aWVzXG4gIHwgVHJlZUFydGlmYWN0UHJvcGVydGllc1xuICB8IE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzXG4gIHwgRmVhdHVyZUZsYWdSZXBvcnRQcm9wZXJ0aWVzO1xuIl19
@@ -325,6 +325,7 @@ export interface KeyContextQuery extends ContextLookupRoleOptions {
325
325
  * const x: CcApiContextQuery = {
326
326
  * typeName: 'AWS::Some::Type',
327
327
  * expectedMatchCount: 'exactly-one',
328
+ * resourceModel: {SomeArn: 'arn:aws:....'},
328
329
  * propertiesToReturn: ['SomeProp'],
329
330
  * account: '11111111111',
330
331
  * region: 'us-east-1',
@@ -345,6 +346,16 @@ export interface CcApiContextQuery extends ContextLookupRoleOptions {
345
346
  * @default - Either exactIdentifier or propertyMatch should be specified.
346
347
  */
347
348
  readonly exactIdentifier?: string;
349
+ /**
350
+ * The resource model to use to select the resources, using `ListResources`..
351
+ *
352
+ * This is needed for sub-resources where the parent Arn is required.
353
+ *
354
+ * See https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/resource-operations-list.html#resource-operations-list-containers
355
+ *
356
+ * @default - no resource Model is provided
357
+ */
358
+ readonly resourceModel?: Record<string, unknown>;
348
359
  /**
349
360
  * Returns any resources matching these properties, using `ListResources`.
350
361
  *
@@ -99,4 +99,4 @@ var LoadBalancerListenerProtocol;
99
99
  * */
100
100
  LoadBalancerListenerProtocol["TCP_UDP"] = "TCP_UDP";
101
101
  })(LoadBalancerListenerProtocol || (exports.LoadBalancerListenerProtocol = LoadBalancerListenerProtocol = {}));
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1xdWVyaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29udGV4dC1xdWVyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0gsSUFBWSxlQTREWDtBQTVERCxXQUFZLGVBQWU7SUFDekI7O09BRUc7SUFDSCx1Q0FBb0IsQ0FBQTtJQUVwQjs7T0FFRztJQUNILG9FQUFpRCxDQUFBO0lBRWpEOztPQUVHO0lBQ0gsdURBQW9DLENBQUE7SUFFcEM7O09BRUc7SUFDSCxpREFBOEIsQ0FBQTtJQUU5Qjs7T0FFRztJQUNILGdEQUE2QixDQUFBO0lBRTdCOztPQUVHO0lBQ0gsc0dBQW1GLENBQUE7SUFFbkY7O09BRUc7SUFDSCwyREFBd0MsQ0FBQTtJQUV4Qzs7T0FFRztJQUNILDZFQUEwRCxDQUFBO0lBRTFEOztPQUVHO0lBQ0gsNkRBQTBDLENBQUE7SUFFMUM7O09BRUc7SUFDSCxnREFBNkIsQ0FBQTtJQUU3Qjs7T0FFRztJQUNILHNEQUFtQyxDQUFBO0lBRW5DOztPQUVHO0lBQ0gsb0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQTVEVyxlQUFlLCtCQUFmLGVBQWUsUUE0RDFCO0FBMEpEOztHQUVHO0FBQ0gsSUFBWSxnQkFVWDtBQVZELFdBQVksZ0JBQWdCO0lBQzFCOztPQUVHO0lBQ0gsdUNBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCwrQ0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBVlcsZ0JBQWdCLGdDQUFoQixnQkFBZ0IsUUFVM0I7QUE4QkQ7O0dBRUc7QUFDSCxJQUFZLDRCQThCWDtBQTlCRCxXQUFZLDRCQUE0QjtJQUN0Qzs7T0FFRztJQUNILDZDQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILCtDQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILDJDQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILDJDQUFXLENBQUE7SUFFWDs7U0FFSztJQUNMLDJDQUFXLENBQUE7SUFFWDs7U0FFSztJQUNMLG1EQUFtQixDQUFBO0FBQ3JCLENBQUMsRUE5QlcsNEJBQTRCLDRDQUE1Qiw0QkFBNEIsUUE4QnZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUYWcgfSBmcm9tICcuL21ldGFkYXRhLXNjaGVtYSc7XG5cbi8qKlxuICogSWRlbnRpZmllciBmb3IgdGhlIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGVudW0gQ29udGV4dFByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEFNSSBwcm92aWRlclxuICAgKi9cbiAgQU1JX1BST1ZJREVSID0gJ2FtaScsXG5cbiAgLyoqXG4gICAqIEFaIHByb3ZpZGVyXG4gICAqL1xuICBBVkFJTEFCSUxJVFlfWk9ORV9QUk9WSURFUiA9ICdhdmFpbGFiaWxpdHktem9uZXMnLFxuXG4gIC8qKlxuICAgKiBSb3V0ZTUzIEhvc3RlZCBab25lIHByb3ZpZGVyXG4gICAqL1xuICBIT1NURURfWk9ORV9QUk9WSURFUiA9ICdob3N0ZWQtem9uZScsXG5cbiAgLyoqXG4gICAqIFNTTSBQYXJhbWV0ZXIgUHJvdmlkZXJcbiAgICovXG4gIFNTTV9QQVJBTUVURVJfUFJPVklERVIgPSAnc3NtJyxcblxuICAvKipcbiAgICogVlBDIFByb3ZpZGVyXG4gICAqL1xuICBWUENfUFJPVklERVIgPSAndnBjLXByb3ZpZGVyJyxcblxuICAvKipcbiAgICogVlBDIEVuZHBvaW50IFNlcnZpY2UgQVogUHJvdmlkZXJcbiAgICovXG4gIEVORFBPSU5UX1NFUlZJQ0VfQVZBSUxBQklMSVRZX1pPTkVfUFJPVklERVIgPSAnZW5kcG9pbnQtc2VydmljZS1hdmFpbGFiaWxpdHktem9uZXMnLFxuXG4gIC8qKlxuICAgKiBMb2FkIGJhbGFuY2VyIHByb3ZpZGVyXG4gICAqL1xuICBMT0FEX0JBTEFOQ0VSX1BST1ZJREVSID0gJ2xvYWQtYmFsYW5jZXInLFxuXG4gIC8qKlxuICAgKiBMb2FkIGJhbGFuY2VyIGxpc3RlbmVyIHByb3ZpZGVyXG4gICAqL1xuICBMT0FEX0JBTEFOQ0VSX0xJU1RFTkVSX1BST1ZJREVSID0gJ2xvYWQtYmFsYW5jZXItbGlzdGVuZXInLFxuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cCBwcm92aWRlclxuICAgKi9cbiAgU0VDVVJJVFlfR1JPVVBfUFJPVklERVIgPSAnc2VjdXJpdHktZ3JvdXAnLFxuXG4gIC8qKlxuICAgKiBLTVMgS2V5IFByb3ZpZGVyXG4gICAqL1xuICBLRVlfUFJPVklERVIgPSAna2V5LXByb3ZpZGVyJyxcblxuICAvKipcbiAgICogQ0NBUEkgUHJvdmlkZXJcbiAgICovXG4gIENDX0FQSV9QUk9WSURFUiA9ICdjYy1hcGktcHJvdmlkZXInLFxuXG4gIC8qKlxuICAgKiBBIHBsdWdpbiBwcm92aWRlciAodGhlIGFjdHVhbCBwbHVnaW4gbmFtZSB3aWxsIGJlIGluIHRoZSBwcm9wZXJ0aWVzKVxuICAgKi9cbiAgUExVR0lOID0gJ3BsdWdpbicsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29udGV4dCBsb29rdXAgcm9sZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUXVlcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcm9sZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvb2sgdXAgdGhlIG1pc3NpbmcgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEV4dGVybmFsSWQgdGhhdCBuZWVkcyB0byBiZSBzdXBwbGllZCB3aGlsZSBhc3N1bWluZyB0aGlzIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBFeHRlcm5hbElkIHdpbGwgYmUgc3VwcGxpZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGVFeHRlcm5hbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG9wdGlvbnMgdG8gcGFzcyB0byBTVFMgd2hlbiBhc3N1bWluZyB0aGUgbG9va3VwIHJvbGUuXG4gICAqXG4gICAqIC0gYFJvbGVBcm5gIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGxvb2t1cFJvbGVBcm5gIHByb3BlcnR5IGluc3RlYWQuXG4gICAqIC0gYEV4dGVybmFsSWRgIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGxvb2t1cFJvbGVFeHRlcm5hbElkYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvU1RTLmh0bWwjYXNzdW1lUm9sZS1wcm9wZXJ0eVxuICAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogUXVlcnkgdG8gQU1JIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbWlDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogT3duZXJzIHRvIERlc2NyaWJlSW1hZ2VzIGNhbGxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbGwgb3duZXJzXG4gICAqL1xuICByZWFkb25seSBvd25lcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRmlsdGVycyB0byBEZXNjcmliZUltYWdlcyBjYWxsXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH07XG59XG5cbi8qKlxuICogUXVlcnkgdG8gYXZhaWxhYmlsaXR5IHpvbmUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJpbGl0eVpvbmVzQ29udGV4dFF1ZXJ5IGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbn1cblxuLyoqXG4gKiBRdWVyeSB0byBob3N0ZWQgem9uZSBjb250ZXh0IHByb3ZpZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSG9zdGVkWm9uZUNvbnRleHRRdWVyeSBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG5hbWUgZS5nLiBleGFtcGxlLmNvbSB0byBsb29rdXBcbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVHJ1ZSBpZiB0aGUgem9uZSB5b3Ugd2FudCB0byBmaW5kIGlzIGEgcHJpdmF0ZSBob3N0ZWQgem9uZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZVpvbmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIElEIHRvIHRoYXQgdGhlIHByaXZhdGUgem9uZSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aFxuICAgKlxuICAgKiBJZiB5b3UgcHJvdmlkZSBWUEMgSUQgYW5kIHByaXZhdGVab25lIGlzIGZhbHNlLCB0aGlzIHdpbGwgcmV0dXJuIG5vIHJlc3VsdHNcbiAgICogYW5kIHJhaXNlIGFuIGVycm9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFJlcXVpcmVkIGlmIHByaXZhdGVab25lPXRydWVcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJ5IHRvIFNTTSBQYXJhbWV0ZXIgQ29udGV4dCBQcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNTTVBhcmFtZXRlckNvbnRleHRRdWVyeSBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQYXJhbWV0ZXIgbmFtZSB0byBxdWVyeVxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVyTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJ5IGlucHV0IGZvciBsb29raW5nIHVwIGEgVlBDXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjQ29udGV4dFF1ZXJ5IGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbHRlcnMgdG8gYXBwbHkgdG8gdGhlIFZQQ1xuICAgKlxuICAgKiBGaWx0ZXIgcGFyYW1ldGVycyBhcmUgdGhlIHNhbWUgYXMgcGFzc2VkIHRvIERlc2NyaWJlVnBjcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlVnBjcy5odG1sXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXI6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcG9wdWxhdGUgdGhlIHN1Ym5ldEdyb3VwcyBmaWVsZCBvZiB0aGUgYFZwY0NvbnRleHRSZXNwb25zZWAsXG4gICAqIHdoaWNoIGNvbnRhaW5zIHBvdGVudGlhbGx5IGFzeW1tZXRyaWMgc3VibmV0IGdyb3Vwcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJldHVybkFzeW1tZXRyaWNTdWJuZXRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgdGFnIGZvciBzdWJuZXQgZ3JvdXAgbmFtZS5cbiAgICogSWYgbm90IHByb3ZpZGVkLCB3ZSdsbCBsb29rIGF0IHRoZSBhd3MtY2RrOnN1Ym5ldC1uYW1lIHRhZy5cbiAgICogSWYgdGhlIHN1Ym5ldCBkb2VzIG5vdCBoYXZlIHRoZSBzcGVjaWZpZWQgdGFnLFxuICAgKiB3ZSdsbCB1c2UgaXRzIHR5cGUgYXMgdGhlIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdhd3MtY2RrOnN1Ym5ldC1uYW1lJ1xuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0R3JvdXBOYW1lVGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBvcHVsYXRlIHRoZSBgdnBuR2F0ZXdheUlkYCBmaWVsZCBvZiB0aGUgYFZwY0NvbnRleHRSZXNwb25zZWAsXG4gICAqIHdoaWNoIGNvbnRhaW5zIHRoZSBWUE4gR2F0ZXdheSBJRCwgaWYgb25lIGV4aXN0cy4gWW91IGNhbiBleHBsaWNpdGx5XG4gICAqIGRpc2FibGUgdGhpcyBpbiBvcmRlciB0byBhdm9pZCB0aGUgbG9va3VwIGlmIHlvdSBrbm93IHRoZSBWUEMgZG9lcyBub3QgaGF2ZVxuICAgKiBhIFZQTiBHYXR3YXkgYXR0YWNoZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJldHVyblZwbkdhdGV3YXlzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBRdWVyeSB0byBlbmRwb2ludCBzZXJ2aWNlIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludFNlcnZpY2VBdmFpbGFiaWxpdHlab25lc0NvbnRleHRRdWVyeSBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBRdWVyeSBzZXJ2aWNlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVHlwZSBvZiBsb2FkIGJhbGFuY2VyXG4gKi9cbmV4cG9ydCBlbnVtIExvYWRCYWxhbmNlclR5cGUge1xuICAvKipcbiAgICogTmV0d29yayBsb2FkIGJhbGFuY2VyXG4gICAqL1xuICBORVRXT1JLID0gJ25ldHdvcmsnLFxuXG4gIC8qKlxuICAgKiBBcHBsaWNhdGlvbiBsb2FkIGJhbGFuY2VyXG4gICAqL1xuICBBUFBMSUNBVElPTiA9ICdhcHBsaWNhdGlvbicsXG59XG5cbi8qKlxuICogRmlsdGVycyBmb3Igc2VsZWN0aW5nIGxvYWQgYmFsYW5jZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZEJhbGFuY2VyRmlsdGVyIGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbHRlciBsb2FkIGJhbGFuY2VycyBieSB0aGVpciB0eXBlXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJUeXBlOiBMb2FkQmFsYW5jZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBGaW5kIGJ5IGxvYWQgYmFsYW5jZXIncyBBUk5cbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBzZWFyY2ggYnkgbG9hZCBiYWxhbmNlciBhcm5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlckFybj86IHN0cmluZztcblxuICAvKipcbiAgICogTWF0Y2ggbG9hZCBiYWxhbmNlciB0YWdzXG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3QgbWF0Y2ggbG9hZCBiYWxhbmNlcnMgYnkgdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyVGFncz86IFRhZ1tdO1xufVxuXG4vKipcbiAqIFF1ZXJ5IGlucHV0IGZvciBsb29raW5nIHVwIGEgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRCYWxhbmNlckNvbnRleHRRdWVyeSBleHRlbmRzIExvYWRCYWxhbmNlckZpbHRlciB7XG59XG5cbi8qKlxuICogVGhlIHByb3RvY29sIGZvciBjb25uZWN0aW9ucyBmcm9tIGNsaWVudHMgdG8gdGhlIGxvYWQgYmFsYW5jZXJcbiAqL1xuZXhwb3J0IGVudW0gTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbCB7XG4gIC8qKlxuICAgKiBIVFRQIHByb3RvY29sXG4gICAqL1xuICBIVFRQID0gJ0hUVFAnLFxuXG4gIC8qKlxuICAgKiBIVFRQUyBwcm90b2NvbFxuICAgKi9cbiAgSFRUUFMgPSAnSFRUUFMnLFxuXG4gIC8qKlxuICAgKiBUQ1AgcHJvdG9jb2xcbiAgICovXG4gIFRDUCA9ICdUQ1AnLFxuXG4gIC8qKlxuICAgKiBUTFMgcHJvdG9jb2xcbiAgICovXG4gIFRMUyA9ICdUTFMnLFxuXG4gIC8qKlxuICAgKiBVRFAgcHJvdG9jb2xcbiAgICogKi9cbiAgVURQID0gJ1VEUCcsXG5cbiAgLyoqXG4gICAqIFRDUCBhbmQgVURQIHByb3RvY29sXG4gICAqICovXG4gIFRDUF9VRFAgPSAnVENQX1VEUCcsXG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIGxvb2tpbmcgdXAgYSBsb2FkIGJhbGFuY2VyIGxpc3RlbmVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UXVlcnkgZXh0ZW5kcyBMb2FkQmFsYW5jZXJGaWx0ZXIge1xuICAvKipcbiAgICogRmluZCBieSBsaXN0ZW5lcidzIGFyblxuICAgKiBAZGVmYXVsdCAtIGRvZXMgbm90IGZpbmQgYnkgbGlzdGVuZXIgYXJuXG4gICAqL1xuICByZWFkb25seSBsaXN0ZW5lckFybj86IHN0cmluZztcblxuICAvKipcbiAgICogRmlsdGVyIGJ5IGxpc3RlbmVyIHByb3RvY29sXG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3QgZmlsdGVyIGJ5IGxpc3RlbmVyIHByb3RvY29sXG4gICAqL1xuICByZWFkb25seSBsaXN0ZW5lclByb3RvY29sPzogTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbDtcblxuICAvKipcbiAgICogRmlsdGVyIGxpc3RlbmVycyBieSBsaXN0ZW5lciBwb3J0XG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3QgZmlsdGVyIGJ5IGEgbGlzdGVuZXIgcG9ydFxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJQb3J0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFF1ZXJ5IGlucHV0IGZvciBsb29raW5nIHVwIGEgc2VjdXJpdHkgZ3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUdyb3VwQ29udGV4dFF1ZXJ5IGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIGlkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cCBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZQQyBJRFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJ5IGlucHV0IGZvciBsb29raW5nIHVwIGEgS01TIEtleVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleUNvbnRleHRRdWVyeSBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbGlhcyBuYW1lIHVzZWQgdG8gc2VhcmNoIHRoZSBLZXlcbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJ5IGlucHV0IGZvciBsb29rdXAgdXAgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2VzIHVzaW5nIENDIEFQSVxuICpcbiAqIFRoZSBleGFtcGxlIGJlbG93IGlzIHJlcXVpcmVkIHRvIHN1Y2Nlc3NmdWxseSBjb21waWxlIENESyAob3RoZXJ3aXNlLFxuICogdGhlIENESyBidWlsZCB3aWxsIGdlbmVyYXRlIGEgc3ludGhldGljIGV4YW1wbGUgZm9yIHRoZSBiZWxvdywgYnV0IGl0XG4gKiBkb2Vzbid0IGhhdmUgZW5vdWdoIHR5cGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpdGVyYWwgc3RyaW5nIHVuaW9uXG4gKiB0byBnZW5lcmF0ZSBhIHZhbGlkbHkgY29tcGlsaW5nIGV4YW1wbGUpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBDY0FwaUNvbnRleHRRdWVyeSB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG4gKlxuICogY29uc3QgeDogQ2NBcGlDb250ZXh0UXVlcnkgPSB7XG4gKiAgIHR5cGVOYW1lOiAnQVdTOjpTb21lOjpUeXBlJyxcbiAqICAgZXhwZWN0ZWRNYXRjaENvdW50OiAnZXhhY3RseS1vbmUnLFxuICogICBwcm9wZXJ0aWVzVG9SZXR1cm46IFsnU29tZVByb3AnXSxcbiAqICAgYWNjb3VudDogJzExMTExMTExMTExJyxcbiAqICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAqIH07XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2NBcGlDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUuXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xvdWRjb250cm9sYXBpL2xhdGVzdC91c2VyZ3VpZGUvc3VwcG9ydGVkLXJlc291cmNlcy5odG1sXG4gICAqL1xuICByZWFkb25seSB0eXBlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSByZXNvdXJjZSB0byBsb29rIHVwIHVzaW5nIGBHZXRSZXNvdXJjZWAuXG4gICAqXG4gICAqIFNwZWNpZnlpbmcgZXhhY3RJZGVudGlmaWVyIHdpbGwgcmV0dXJuIGV4YWN0bHkgb25lIHJlc3VsdCwgb3IgdGhyb3cgYW4gZXJyb3JcbiAgICogdW5sZXNzIGBpZ25vcmVFcnJvck9uTWlzc2luZ0NvbnRleHRgIGlzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBFaXRoZXIgZXhhY3RJZGVudGlmaWVyIG9yIHByb3BlcnR5TWF0Y2ggc2hvdWxkIGJlIHNwZWNpZmllZC5cbiAgICovXG4gIHJlYWRvbmx5IGV4YWN0SWRlbnRpZmllcj86IHN0cmluZztcblxuICAvKipcbiAgICogUmV0dXJucyBhbnkgcmVzb3VyY2VzIG1hdGNoaW5nIHRoZXNlIHByb3BlcnRpZXMsIHVzaW5nIGBMaXN0UmVzb3VyY2VzYC5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgc3BlY2lmeWluZyBwcm9wZXJ0eU1hdGNoIHdpbGwgc3VjY2Vzc2Z1bGx5IHJldHVybiAwIG9yIG1vcmVcbiAgICogcmVzdWx0cy4gVG8gdGhyb3cgYW4gZXJyb3IgaWYgdGhlIG51bWJlciBvZiByZXN1bHRzIGlzIHVuZXhwZWN0ZWQgKGFuZFxuICAgKiBwcmV2ZW50IHRoZSBxdWVyeSByZXN1bHRzIGZyb20gYmVpbmcgY29tbWl0dGVkIHRvIGNvbnRleHQpLCBzcGVjaWZ5XG4gICAqIGBleHBlY3RlZE1hdGNoQ291bnRgLlxuICAgKlxuICAgKiAjIyBOb3RlcyBvbiBwcm9wZXJ0eSBjb21wbGV0ZW5lc3NcbiAgICpcbiAgICogQ2xvdWRDb250cm9sIEFQSSdzIGBMaXN0UmVzb3VyY2VzYCBtYXkgcmV0dXJuIGZld2VyIHByb3BlcnRpZXMgdGhhblxuICAgKiBgR2V0UmVzb3VyY2VgIHdvdWxkLCBkZXBlbmRpbmcgb24gdGhlIHJlc291cmNlIGltcGxlbWVudGF0aW9uLlxuICAgKlxuICAgKiBUaGUgcmVzb3VyY2VzIHRoYXQgYHByb3BlcnR5TWF0Y2hgIG1hdGNoZXMgYWdhaW5zdCB3aWxsICpvbmx5IGV2ZXIqIGJlIHRoZVxuICAgKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IHRoZSBgTGlzdFJlc291cmNlc2AgY2FsbC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBFaXRoZXIgZXhhY3RJZGVudGlmaWVyIG9yIHByb3BlcnR5TWF0Y2ggc2hvdWxkIGJlIHNwZWNpZmllZC5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BlcnR5TWF0Y2g/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKipcbiAgICogVGhpcyBpcyBhIHNldCBvZiBwcm9wZXJ0aWVzIHJldHVybmVkIGZyb20gQ0MgQVBJIHRoYXQgd2Ugd2FudCB0byByZXR1cm4gZnJvbSBDb250ZXh0UXVlcnkuXG4gICAqXG4gICAqIElmIGFueSBwcm9wZXJ0aWVzIGxpc3RlZCBoZXJlIGFyZSBhYnNlbnQgZnJvbSB0aGUgdGFyZ2V0IHJlc291cmNlLCBhbiBlcnJvciB3aWxsIGJlIHRocm93bi5cbiAgICpcbiAgICogVGhlIHJldHVybmVkIG9iamVjdCB3aWxsIGFsd2F5cyBpbmNsdWRlIHRoZSBrZXkgYElkZW50aWZpZXJgIHdpdGggdGhlIENDLUFQSSByZXR1cm5lZFxuICAgKiBmaWVsZCBgSWRlbnRpZmllcmAuXG4gICAqXG4gICAqICMjIE5vdGVzIG9uIHByb3BlcnR5IGNvbXBsZXRlbmVzc1xuICAgKlxuICAgKiBDbG91ZENvbnRyb2wgQVBJJ3MgYExpc3RSZXNvdXJjZXNgIG1heSByZXR1cm4gZmV3ZXIgcHJvcGVydGllcyB0aGFuXG4gICAqIGBHZXRSZXNvdXJjZWAgd291bGQsIGRlcGVuZGluZyBvbiB0aGUgcmVzb3VyY2UgaW1wbGVtZW50YXRpb24uXG4gICAqXG4gICAqIFRoZSByZXR1cm5lZCBwcm9wZXJ0aWVzIGhlcmUgYXJlICpjdXJyZW50bHkqIHNlbGVjdGVkIGZyb20gdGhlIHJlc3BvbnNlXG4gICAqIG9iamVjdCB0aGF0IENsb3VkQ29udHJvbCBBUEkgcmV0dXJucyB0byB0aGUgQ0RLIENMSS5cbiAgICpcbiAgICogSG93ZXZlciwgaWYgd2UgZmluZCB0aGVyZSBpcyBuZWVkIHRvIGRvIHNvLCB3ZSBtYXkgZGVjaWRlIHRvIGNoYW5nZSB0aGlzXG4gICAqIGJlaGF2aW9yIGluIHRoZSBmdXR1cmU6IHdlIG1pZ2h0IGNoYW5nZSBpdCB0byBwZXJmb3JtIGFuIGFkZGl0aW9uYWxcbiAgICogYEdldFJlc291cmNlYCBjYWxsIGZvciByZXNvdXJjZXMgbWF0Y2hlZCBieSBgcHJvcGVydHlNYXRjaGAuXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0aWVzVG9SZXR1cm46IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFeHBlY3RlZCBjb3VudCBvZiByZXN1bHRzIGlmIGBwcm9wZXJ0eU1hdGNoYCBpcyBzcGVjaWZpZWQuXG4gICAqXG4gICAqIElmIHRoZSBleHBlY3RlZCByZXN1bHQgY291bnQgZG9lcyBub3QgbWF0Y2ggdGhlIGFjdHVhbCBjb3VudCxcbiAgICogYnkgZGVmYXVsdCBhbiBlcnJvciBpcyBwcm9kdWNlZCBhbmQgdGhlIHJlc3VsdCBpcyBub3QgY29tbWl0dGVkIHRvIGNhY2hlZFxuICAgKiBjb250ZXh0LCBhbmQgdGhlIHVzZXIgY2FuIGNvcnJlY3QgdGhlIHNpdHVhdGlvbiBhbmQgdHJ5IGFnYWluIHdpdGhvdXRcbiAgICogaGF2aW5nIHRvIG1hbnVhbGx5IGNsZWFyIG91dCB0aGUgY29udGV4dCBrZXkgdXNpbmcgYGNkayBjb250ZXh0IC0tcmVtb3ZlYFxuICAgKlxuICAgKiBJZiB0aGUgdmFsdWUgb2YgKiBgaWdub3JlRXJyb3JPbk1pc3NpbmdDb250ZXh0YCBpcyBgdHJ1ZWAsIHRoZSB2YWx1ZSBvZlxuICAgKiBgZXhwZWN0ZWRNYXRjaENvdW50YCBpcyBgYXQtbGVhc3Qtb25lIHwgZXhhY3RseS1vbmVgIGFuZCB0aGUgbnVtYmVyXG4gICAqIG9mIGZvdW5kIHJlc291cmNlcyBpcyAwLCBgZHVtbXlWYWx1ZWAgaXMgcmV0dXJuZWQgYW5kIGNvbW1pdHRlZCB0byBjb250ZXh0XG4gICAqIGluc3RlYWQuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdhbnknXG4gICAqL1xuICByZWFkb25seSBleHBlY3RlZE1hdGNoQ291bnQ/OiAnYW55JyB8ICdhdC1sZWFzdC1vbmUnIHwgJ2F0LW1vc3Qtb25lJyB8ICdleGFjdGx5LW9uZSc7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSB0byByZXR1cm4gaWYgdGhlIHJlc291cmNlIHdhcyBub3QgZm91bmQgYW5kIGBpZ25vcmVFcnJvck9uTWlzc2luZ0NvbnRleHRgIGlzIHRydWUuXG4gICAqXG4gICAqIElmIHN1cHBsaWVkLCBgZHVtbXlWYWx1ZWAgc2hvdWxkIGJlIGFuIGFycmF5IG9mIG9iamVjdHMuXG4gICAqXG4gICAqIGBkdW1teVZhbHVlYCBkb2VzIG5vdCBoYXZlIHRvIGhhdmUgZWxlbWVudHMsIGFuZCBpdCBtYXkgaGF2ZSBvYmplY3RzIHdpdGhcbiAgICogZGlmZmVyZW50IHByb3BlcnRpZXMgdGhhbiB0aGUgcHJvcGVydGllcyBpbiBgcHJvcGVydGllc1RvUmV0dXJuYCwgYnV0IGl0XG4gICAqIHdpbGwgYmUgZWFzaWVzdCBmb3IgZG93bnN0cmVhbSBjb2RlIGlmIHRoZSBgZHVtbXlWYWx1ZWAgY29uZm9ybXMgdG9cbiAgICogdGhlIGV4cGVjdGVkIHJlc3BvbnNlIHNoYXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGR1bW15IHZhbHVlIGF2YWlsYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZHVtbXlWYWx1ZT86IGFueTtcblxuICAvKipcbiAgICogSWdub3JlIGFuIGVycm9yIGFuZCByZXR1cm4gdGhlIGBkdW1teVZhbHVlYCBpbnN0ZWFkIGlmIHRoZSByZXNvdXJjZSB3YXMgbm90IGZvdW5kLlxuICAgKlxuICAgKiAtIEluIGNhc2Ugb2YgYW4gYGV4YWN0SWRlbnRpZmllcmAgbG9va3VwLCByZXR1cm4gdGhlIGBkdW1teVZhbHVlYCBpZiB0aGUgcmVzb3VyY2Ugd2l0aFxuICAgKiAgIHRoYXQgaWRlbnRpZmllciB3YXMgbm90IGZvdW5kLlxuICAgKiAtIEluIGNhc2Ugb2YgYSBgcHJvcGVydHlNYXRjaGAgbG9va3VwLCByZXR1cm4gdGhlIGBkdW1teVZhbHVlYCBpZiBgZXhwZWN0ZWRNYXRjaENvdW50YFxuICAgKiAgIGlzIGBhdC1sZWFzdC1vbmUgfCBleGFjdGx5LW9uZWAgYW5kIHRoZSBudW1iZXIgb2YgcmVzb3VyY2VzIGZvdW5kIHdhcyAwLlxuICAgKlxuICAgKiBpZiBgaWdub3JlRXJyb3JPbk1pc3NpbmdDb250ZXh0YCBpcyBzZXQsIGBkdW1teVZhbHVlYCBzaG91bGQgYmUgc2V0IGFuZCBiZSBhbiBhcnJheS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUVycm9yT25NaXNzaW5nQ29udGV4dD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIHBsdWdpbnNcbiAqXG4gKiBUaGlzIGFsdGVybmF0ZSBicmFuY2ggaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgbmVlZHMgdG8gYmUgYWJsZSB0byBlc2NhcGUgYWxsIHR5cGUgY2hlY2tpbmdcbiAqIHdlIGRvIG9uIG9uIHRoZSBjbG91ZCBhc3NlbWJseSAtLSB3ZSBjYW5ub3Qga25vdyB0aGUgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgdXNlZCBhIHByaW9yaS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5Db250ZXh0UXVlcnkge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBsdWdpblxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBcmJpdHJhcnkgb3RoZXIgYXJndW1lbnRzIGZvciB0aGUgcGx1Z2luLlxuICAgKlxuICAgKiBUaGlzIGluZGV4IHNpZ25hdHVyZSBpcyBub3QgdXNhYmxlIGluIG5vbi1UeXBlU2NyaXB0L0phdmFTY3JpcHQgbGFuZ3VhZ2VzLlxuICAgKlxuICAgKiBAanNpaSBpZ25vcmVcbiAgICovXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dFF1ZXJ5UHJvcGVydGllcyA9XG4gIHwgQW1pQ29udGV4dFF1ZXJ5XG4gIHwgQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnlcbiAgfCBIb3N0ZWRab25lQ29udGV4dFF1ZXJ5XG4gIHwgU1NNUGFyYW1ldGVyQ29udGV4dFF1ZXJ5XG4gIHwgVnBjQ29udGV4dFF1ZXJ5XG4gIHwgRW5kcG9pbnRTZXJ2aWNlQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnlcbiAgfCBMb2FkQmFsYW5jZXJDb250ZXh0UXVlcnlcbiAgfCBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRRdWVyeVxuICB8IFNlY3VyaXR5R3JvdXBDb250ZXh0UXVlcnlcbiAgfCBLZXlDb250ZXh0UXVlcnlcbiAgfCBDY0FwaUNvbnRleHRRdWVyeVxuICB8IFBsdWdpbkNvbnRleHRRdWVyeTtcbiJdfQ==
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1xdWVyaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29udGV4dC1xdWVyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0gsSUFBWSxlQTREWDtBQTVERCxXQUFZLGVBQWU7SUFDekI7O09BRUc7SUFDSCx1Q0FBb0IsQ0FBQTtJQUVwQjs7T0FFRztJQUNILG9FQUFpRCxDQUFBO0lBRWpEOztPQUVHO0lBQ0gsdURBQW9DLENBQUE7SUFFcEM7O09BRUc7SUFDSCxpREFBOEIsQ0FBQTtJQUU5Qjs7T0FFRztJQUNILGdEQUE2QixDQUFBO0lBRTdCOztPQUVHO0lBQ0gsc0dBQW1GLENBQUE7SUFFbkY7O09BRUc7SUFDSCwyREFBd0MsQ0FBQTtJQUV4Qzs7T0FFRztJQUNILDZFQUEwRCxDQUFBO0lBRTFEOztPQUVHO0lBQ0gsNkRBQTBDLENBQUE7SUFFMUM7O09BRUc7SUFDSCxnREFBNkIsQ0FBQTtJQUU3Qjs7T0FFRztJQUNILHNEQUFtQyxDQUFBO0lBRW5DOztPQUVHO0lBQ0gsb0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQTVEVyxlQUFlLCtCQUFmLGVBQWUsUUE0RDFCO0FBMEpEOztHQUVHO0FBQ0gsSUFBWSxnQkFVWDtBQVZELFdBQVksZ0JBQWdCO0lBQzFCOztPQUVHO0lBQ0gsdUNBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCwrQ0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBVlcsZ0JBQWdCLGdDQUFoQixnQkFBZ0IsUUFVM0I7QUE4QkQ7O0dBRUc7QUFDSCxJQUFZLDRCQThCWDtBQTlCRCxXQUFZLDRCQUE0QjtJQUN0Qzs7T0FFRztJQUNILDZDQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILCtDQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILDJDQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILDJDQUFXLENBQUE7SUFFWDs7U0FFSztJQUNMLDJDQUFXLENBQUE7SUFFWDs7U0FFSztJQUNMLG1EQUFtQixDQUFBO0FBQ3JCLENBQUMsRUE5QlcsNEJBQTRCLDRDQUE1Qiw0QkFBNEIsUUE4QnZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUYWcgfSBmcm9tICcuL21ldGFkYXRhLXNjaGVtYSc7XG5cbi8qKlxuICogSWRlbnRpZmllciBmb3IgdGhlIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGVudW0gQ29udGV4dFByb3ZpZGVyIHtcbiAgLyoqXG4gICAqIEFNSSBwcm92aWRlclxuICAgKi9cbiAgQU1JX1BST1ZJREVSID0gJ2FtaScsXG5cbiAgLyoqXG4gICAqIEFaIHByb3ZpZGVyXG4gICAqL1xuICBBVkFJTEFCSUxJVFlfWk9ORV9QUk9WSURFUiA9ICdhdmFpbGFiaWxpdHktem9uZXMnLFxuXG4gIC8qKlxuICAgKiBSb3V0ZTUzIEhvc3RlZCBab25lIHByb3ZpZGVyXG4gICAqL1xuICBIT1NURURfWk9ORV9QUk9WSURFUiA9ICdob3N0ZWQtem9uZScsXG5cbiAgLyoqXG4gICAqIFNTTSBQYXJhbWV0ZXIgUHJvdmlkZXJcbiAgICovXG4gIFNTTV9QQVJBTUVURVJfUFJPVklERVIgPSAnc3NtJyxcblxuICAvKipcbiAgICogVlBDIFByb3ZpZGVyXG4gICAqL1xuICBWUENfUFJPVklERVIgPSAndnBjLXByb3ZpZGVyJyxcblxuICAvKipcbiAgICogVlBDIEVuZHBvaW50IFNlcnZpY2UgQVogUHJvdmlkZXJcbiAgICovXG4gIEVORFBPSU5UX1NFUlZJQ0VfQVZBSUxBQklMSVRZX1pPTkVfUFJPVklERVIgPSAnZW5kcG9pbnQtc2VydmljZS1hdmFpbGFiaWxpdHktem9uZXMnLFxuXG4gIC8qKlxuICAgKiBMb2FkIGJhbGFuY2VyIHByb3ZpZGVyXG4gICAqL1xuICBMT0FEX0JBTEFOQ0VSX1BST1ZJREVSID0gJ2xvYWQtYmFsYW5jZXInLFxuXG4gIC8qKlxuICAgKiBMb2FkIGJhbGFuY2VyIGxpc3RlbmVyIHByb3ZpZGVyXG4gICAqL1xuICBMT0FEX0JBTEFOQ0VSX0xJU1RFTkVSX1BST1ZJREVSID0gJ2xvYWQtYmFsYW5jZXItbGlzdGVuZXInLFxuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cCBwcm92aWRlclxuICAgKi9cbiAgU0VDVVJJVFlfR1JPVVBfUFJPVklERVIgPSAnc2VjdXJpdHktZ3JvdXAnLFxuXG4gIC8qKlxuICAgKiBLTVMgS2V5IFByb3ZpZGVyXG4gICAqL1xuICBLRVlfUFJPVklERVIgPSAna2V5LXByb3ZpZGVyJyxcblxuICAvKipcbiAgICogQ0NBUEkgUHJvdmlkZXJcbiAgICovXG4gIENDX0FQSV9QUk9WSURFUiA9ICdjYy1hcGktcHJvdmlkZXInLFxuXG4gIC8qKlxuICAgKiBBIHBsdWdpbiBwcm92aWRlciAodGhlIGFjdHVhbCBwbHVnaW4gbmFtZSB3aWxsIGJlIGluIHRoZSBwcm9wZXJ0aWVzKVxuICAgKi9cbiAgUExVR0lOID0gJ3BsdWdpbicsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29udGV4dCBsb29rdXAgcm9sZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUXVlcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcm9sZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvb2sgdXAgdGhlIG1pc3NpbmcgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEV4dGVybmFsSWQgdGhhdCBuZWVkcyB0byBiZSBzdXBwbGllZCB3aGlsZSBhc3N1bWluZyB0aGlzIHJvbGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBFeHRlcm5hbElkIHdpbGwgYmUgc3VwcGxpZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGVFeHRlcm5hbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG9wdGlvbnMgdG8gcGFzcyB0byBTVFMgd2hlbiBhc3N1bWluZyB0aGUgbG9va3VwIHJvbGUuXG4gICAqXG4gICAqIC0gYFJvbGVBcm5gIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGxvb2t1cFJvbGVBcm5gIHByb3BlcnR5IGluc3RlYWQuXG4gICAqIC0gYEV4dGVybmFsSWRgIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlIHRoZSBkZWRpY2F0ZWQgYGxvb2t1cFJvbGVFeHRlcm5hbElkYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NKYXZhU2NyaXB0U0RLL2xhdGVzdC9BV1MvU1RTLmh0bWwjYXNzdW1lUm9sZS1wcm9wZXJ0eVxuICAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogUXVlcnkgdG8gQU1JIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbWlDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogT3duZXJzIHRvIERlc2NyaWJlSW1hZ2VzIGNhbGxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbGwgb3duZXJzXG4gICAqL1xuICByZWFkb25seSBvd25lcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRmlsdGVycyB0byBEZXNjcmliZUltYWdlcyBjYWxsXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH07XG59XG5cbi8qKlxuICogUXVlcnkgdG8gYXZhaWxhYmlsaXR5IHpvbmUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJpbGl0eVpvbmVzQ29udGV4dFF1ZXJ5IGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbn1cblxuLyoqXG4gKiBRdWVyeSB0byBob3N0ZWQgem9uZSBjb250ZXh0IHByb3ZpZGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSG9zdGVkWm9uZUNvbnRleHRRdWVyeSBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG5hbWUgZS5nLiBleGFtcGxlLmNvbSB0byBsb29rdXBcbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVHJ1ZSBpZiB0aGUgem9uZSB5b3Ugd2FudCB0byBmaW5kIGlzIGEgcHJpdmF0ZSBob3N0ZWQgem9uZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZVpvbmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIElEIHRvIHRoYXQgdGhlIHByaXZhdGUgem9uZSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aFxuICAgKlxuICAgKiBJZiB5b3UgcHJvdmlkZSBWUEMgSUQgYW5kIHByaXZhdGVab25lIGlzIGZhbHNlLCB0aGlzIHdpbGwgcmV0dXJuIG5vIHJlc3VsdHNcbiAgICogYW5kIHJhaXNlIGFuIGVycm9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFJlcXVpcmVkIGlmIHByaXZhdGVab25lPXRydWVcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJ5IHRvIFNTTSBQYXJhbWV0ZXIgQ29udGV4dCBQcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNTTVBhcmFtZXRlckNvbnRleHRRdWVyeSBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQYXJhbWV0ZXIgbmFtZSB0byBxdWVyeVxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVyTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJ5IGlucHV0IGZvciBsb29raW5nIHVwIGEgVlBDXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjQ29udGV4dFF1ZXJ5IGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbHRlcnMgdG8gYXBwbHkgdG8gdGhlIFZQQ1xuICAgKlxuICAgKiBGaWx0ZXIgcGFyYW1ldGVycyBhcmUgdGhlIHNhbWUgYXMgcGFzc2VkIHRvIERlc2NyaWJlVnBjcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlVnBjcy5odG1sXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXI6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcG9wdWxhdGUgdGhlIHN1Ym5ldEdyb3VwcyBmaWVsZCBvZiB0aGUgYFZwY0NvbnRleHRSZXNwb25zZWAsXG4gICAqIHdoaWNoIGNvbnRhaW5zIHBvdGVudGlhbGx5IGFzeW1tZXRyaWMgc3VibmV0IGdyb3Vwcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJldHVybkFzeW1tZXRyaWNTdWJuZXRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgdGFnIGZvciBzdWJuZXQgZ3JvdXAgbmFtZS5cbiAgICogSWYgbm90IHByb3ZpZGVkLCB3ZSdsbCBsb29rIGF0IHRoZSBhd3MtY2RrOnN1Ym5ldC1uYW1lIHRhZy5cbiAgICogSWYgdGhlIHN1Ym5ldCBkb2VzIG5vdCBoYXZlIHRoZSBzcGVjaWZpZWQgdGFnLFxuICAgKiB3ZSdsbCB1c2UgaXRzIHR5cGUgYXMgdGhlIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdhd3MtY2RrOnN1Ym5ldC1uYW1lJ1xuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0R3JvdXBOYW1lVGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBvcHVsYXRlIHRoZSBgdnBuR2F0ZXdheUlkYCBmaWVsZCBvZiB0aGUgYFZwY0NvbnRleHRSZXNwb25zZWAsXG4gICAqIHdoaWNoIGNvbnRhaW5zIHRoZSBWUE4gR2F0ZXdheSBJRCwgaWYgb25lIGV4aXN0cy4gWW91IGNhbiBleHBsaWNpdGx5XG4gICAqIGRpc2FibGUgdGhpcyBpbiBvcmRlciB0byBhdm9pZCB0aGUgbG9va3VwIGlmIHlvdSBrbm93IHRoZSBWUEMgZG9lcyBub3QgaGF2ZVxuICAgKiBhIFZQTiBHYXR3YXkgYXR0YWNoZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJldHVyblZwbkdhdGV3YXlzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBRdWVyeSB0byBlbmRwb2ludCBzZXJ2aWNlIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludFNlcnZpY2VBdmFpbGFiaWxpdHlab25lc0NvbnRleHRRdWVyeSBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBRdWVyeSBzZXJ2aWNlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVHlwZSBvZiBsb2FkIGJhbGFuY2VyXG4gKi9cbmV4cG9ydCBlbnVtIExvYWRCYWxhbmNlclR5cGUge1xuICAvKipcbiAgICogTmV0d29yayBsb2FkIGJhbGFuY2VyXG4gICAqL1xuICBORVRXT1JLID0gJ25ldHdvcmsnLFxuXG4gIC8qKlxuICAgKiBBcHBsaWNhdGlvbiBsb2FkIGJhbGFuY2VyXG4gICAqL1xuICBBUFBMSUNBVElPTiA9ICdhcHBsaWNhdGlvbicsXG59XG5cbi8qKlxuICogRmlsdGVycyBmb3Igc2VsZWN0aW5nIGxvYWQgYmFsYW5jZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZEJhbGFuY2VyRmlsdGVyIGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbHRlciBsb2FkIGJhbGFuY2VycyBieSB0aGVpciB0eXBlXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJUeXBlOiBMb2FkQmFsYW5jZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBGaW5kIGJ5IGxvYWQgYmFsYW5jZXIncyBBUk5cbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBzZWFyY2ggYnkgbG9hZCBiYWxhbmNlciBhcm5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlckFybj86IHN0cmluZztcblxuICAvKipcbiAgICogTWF0Y2ggbG9hZCBiYWxhbmNlciB0YWdzXG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3QgbWF0Y2ggbG9hZCBiYWxhbmNlcnMgYnkgdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyVGFncz86IFRhZ1tdO1xufVxuXG4vKipcbiAqIFF1ZXJ5IGlucHV0IGZvciBsb29raW5nIHVwIGEgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRCYWxhbmNlckNvbnRleHRRdWVyeSBleHRlbmRzIExvYWRCYWxhbmNlckZpbHRlciB7XG59XG5cbi8qKlxuICogVGhlIHByb3RvY29sIGZvciBjb25uZWN0aW9ucyBmcm9tIGNsaWVudHMgdG8gdGhlIGxvYWQgYmFsYW5jZXJcbiAqL1xuZXhwb3J0IGVudW0gTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbCB7XG4gIC8qKlxuICAgKiBIVFRQIHByb3RvY29sXG4gICAqL1xuICBIVFRQID0gJ0hUVFAnLFxuXG4gIC8qKlxuICAgKiBIVFRQUyBwcm90b2NvbFxuICAgKi9cbiAgSFRUUFMgPSAnSFRUUFMnLFxuXG4gIC8qKlxuICAgKiBUQ1AgcHJvdG9jb2xcbiAgICovXG4gIFRDUCA9ICdUQ1AnLFxuXG4gIC8qKlxuICAgKiBUTFMgcHJvdG9jb2xcbiAgICovXG4gIFRMUyA9ICdUTFMnLFxuXG4gIC8qKlxuICAgKiBVRFAgcHJvdG9jb2xcbiAgICogKi9cbiAgVURQID0gJ1VEUCcsXG5cbiAgLyoqXG4gICAqIFRDUCBhbmQgVURQIHByb3RvY29sXG4gICAqICovXG4gIFRDUF9VRFAgPSAnVENQX1VEUCcsXG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIGxvb2tpbmcgdXAgYSBsb2FkIGJhbGFuY2VyIGxpc3RlbmVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UXVlcnkgZXh0ZW5kcyBMb2FkQmFsYW5jZXJGaWx0ZXIge1xuICAvKipcbiAgICogRmluZCBieSBsaXN0ZW5lcidzIGFyblxuICAgKiBAZGVmYXVsdCAtIGRvZXMgbm90IGZpbmQgYnkgbGlzdGVuZXIgYXJuXG4gICAqL1xuICByZWFkb25seSBsaXN0ZW5lckFybj86IHN0cmluZztcblxuICAvKipcbiAgICogRmlsdGVyIGJ5IGxpc3RlbmVyIHByb3RvY29sXG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3QgZmlsdGVyIGJ5IGxpc3RlbmVyIHByb3RvY29sXG4gICAqL1xuICByZWFkb25seSBsaXN0ZW5lclByb3RvY29sPzogTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbDtcblxuICAvKipcbiAgICogRmlsdGVyIGxpc3RlbmVycyBieSBsaXN0ZW5lciBwb3J0XG4gICAqIEBkZWZhdWx0IC0gZG9lcyBub3QgZmlsdGVyIGJ5IGEgbGlzdGVuZXIgcG9ydFxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJQb3J0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFF1ZXJ5IGlucHV0IGZvciBsb29raW5nIHVwIGEgc2VjdXJpdHkgZ3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eUdyb3VwQ29udGV4dFF1ZXJ5IGV4dGVuZHMgQ29udGV4dExvb2t1cFJvbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIGlkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cCBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZQQyBJRFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJ5IGlucHV0IGZvciBsb29raW5nIHVwIGEgS01TIEtleVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleUNvbnRleHRRdWVyeSBleHRlbmRzIENvbnRleHRMb29rdXBSb2xlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbGlhcyBuYW1lIHVzZWQgdG8gc2VhcmNoIHRoZSBLZXlcbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJ5IGlucHV0IGZvciBsb29rdXAgdXAgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2VzIHVzaW5nIENDIEFQSVxuICpcbiAqIFRoZSBleGFtcGxlIGJlbG93IGlzIHJlcXVpcmVkIHRvIHN1Y2Nlc3NmdWxseSBjb21waWxlIENESyAob3RoZXJ3aXNlLFxuICogdGhlIENESyBidWlsZCB3aWxsIGdlbmVyYXRlIGEgc3ludGhldGljIGV4YW1wbGUgZm9yIHRoZSBiZWxvdywgYnV0IGl0XG4gKiBkb2Vzbid0IGhhdmUgZW5vdWdoIHR5cGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpdGVyYWwgc3RyaW5nIHVuaW9uXG4gKiB0byBnZW5lcmF0ZSBhIHZhbGlkbHkgY29tcGlsaW5nIGV4YW1wbGUpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBDY0FwaUNvbnRleHRRdWVyeSB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG4gKlxuICogY29uc3QgeDogQ2NBcGlDb250ZXh0UXVlcnkgPSB7XG4gKiAgIHR5cGVOYW1lOiAnQVdTOjpTb21lOjpUeXBlJyxcbiAqICAgZXhwZWN0ZWRNYXRjaENvdW50OiAnZXhhY3RseS1vbmUnLFxuICogICByZXNvdXJjZU1vZGVsOiB7U29tZUFybjogJ2Fybjphd3M6Li4uLid9LFxuICogICBwcm9wZXJ0aWVzVG9SZXR1cm46IFsnU29tZVByb3AnXSxcbiAqICAgYWNjb3VudDogJzExMTExMTExMTExJyxcbiAqICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAqIH07XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2NBcGlDb250ZXh0UXVlcnkgZXh0ZW5kcyBDb250ZXh0TG9va3VwUm9sZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUuXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xvdWRjb250cm9sYXBpL2xhdGVzdC91c2VyZ3VpZGUvc3VwcG9ydGVkLXJlc291cmNlcy5odG1sXG4gICAqL1xuICByZWFkb25seSB0eXBlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSByZXNvdXJjZSB0byBsb29rIHVwIHVzaW5nIGBHZXRSZXNvdXJjZWAuXG4gICAqXG4gICAqIFNwZWNpZnlpbmcgZXhhY3RJZGVudGlmaWVyIHdpbGwgcmV0dXJuIGV4YWN0bHkgb25lIHJlc3VsdCwgb3IgdGhyb3cgYW4gZXJyb3JcbiAgICogdW5sZXNzIGBpZ25vcmVFcnJvck9uTWlzc2luZ0NvbnRleHRgIGlzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBFaXRoZXIgZXhhY3RJZGVudGlmaWVyIG9yIHByb3BlcnR5TWF0Y2ggc2hvdWxkIGJlIHNwZWNpZmllZC5cbiAgICovXG4gIHJlYWRvbmx5IGV4YWN0SWRlbnRpZmllcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG1vZGVsIHRvIHVzZSB0byBzZWxlY3QgdGhlIHJlc291cmNlcywgdXNpbmcgYExpc3RSZXNvdXJjZXNgLi5cbiAgICpcbiAgICogVGhpcyBpcyBuZWVkZWQgZm9yIHN1Yi1yZXNvdXJjZXMgd2hlcmUgdGhlIHBhcmVudCBBcm4gaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xvdWRjb250cm9sYXBpL2xhdGVzdC91c2VyZ3VpZGUvcmVzb3VyY2Utb3BlcmF0aW9ucy1saXN0Lmh0bWwjcmVzb3VyY2Utb3BlcmF0aW9ucy1saXN0LWNvbnRhaW5lcnNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyByZXNvdXJjZSBNb2RlbCBpcyBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VNb2RlbD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFueSByZXNvdXJjZXMgbWF0Y2hpbmcgdGhlc2UgcHJvcGVydGllcywgdXNpbmcgYExpc3RSZXNvdXJjZXNgLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBzcGVjaWZ5aW5nIHByb3BlcnR5TWF0Y2ggd2lsbCBzdWNjZXNzZnVsbHkgcmV0dXJuIDAgb3IgbW9yZVxuICAgKiByZXN1bHRzLiBUbyB0aHJvdyBhbiBlcnJvciBpZiB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgaXMgdW5leHBlY3RlZCAoYW5kXG4gICAqIHByZXZlbnQgdGhlIHF1ZXJ5IHJlc3VsdHMgZnJvbSBiZWluZyBjb21taXR0ZWQgdG8gY29udGV4dCksIHNwZWNpZnlcbiAgICogYGV4cGVjdGVkTWF0Y2hDb3VudGAuXG4gICAqXG4gICAqICMjIE5vdGVzIG9uIHByb3BlcnR5IGNvbXBsZXRlbmVzc1xuICAgKlxuICAgKiBDbG91ZENvbnRyb2wgQVBJJ3MgYExpc3RSZXNvdXJjZXNgIG1heSByZXR1cm4gZmV3ZXIgcHJvcGVydGllcyB0aGFuXG4gICAqIGBHZXRSZXNvdXJjZWAgd291bGQsIGRlcGVuZGluZyBvbiB0aGUgcmVzb3VyY2UgaW1wbGVtZW50YXRpb24uXG4gICAqXG4gICAqIFRoZSByZXNvdXJjZXMgdGhhdCBgcHJvcGVydHlNYXRjaGAgbWF0Y2hlcyBhZ2FpbnN0IHdpbGwgKm9ubHkgZXZlciogYmUgdGhlXG4gICAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgdGhlIGBMaXN0UmVzb3VyY2VzYCBjYWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEVpdGhlciBleGFjdElkZW50aWZpZXIgb3IgcHJvcGVydHlNYXRjaCBzaG91bGQgYmUgc3BlY2lmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvcGVydHlNYXRjaD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgc2V0IG9mIHByb3BlcnRpZXMgcmV0dXJuZWQgZnJvbSBDQyBBUEkgdGhhdCB3ZSB3YW50IHRvIHJldHVybiBmcm9tIENvbnRleHRRdWVyeS5cbiAgICpcbiAgICogSWYgYW55IHByb3BlcnRpZXMgbGlzdGVkIGhlcmUgYXJlIGFic2VudCBmcm9tIHRoZSB0YXJnZXQgcmVzb3VyY2UsIGFuIGVycm9yIHdpbGwgYmUgdGhyb3duLlxuICAgKlxuICAgKiBUaGUgcmV0dXJuZWQgb2JqZWN0IHdpbGwgYWx3YXlzIGluY2x1ZGUgdGhlIGtleSBgSWRlbnRpZmllcmAgd2l0aCB0aGUgQ0MtQVBJIHJldHVybmVkXG4gICAqIGZpZWxkIGBJZGVudGlmaWVyYC5cbiAgICpcbiAgICogIyMgTm90ZXMgb24gcHJvcGVydHkgY29tcGxldGVuZXNzXG4gICAqXG4gICAqIENsb3VkQ29udHJvbCBBUEkncyBgTGlzdFJlc291cmNlc2AgbWF5IHJldHVybiBmZXdlciBwcm9wZXJ0aWVzIHRoYW5cbiAgICogYEdldFJlc291cmNlYCB3b3VsZCwgZGVwZW5kaW5nIG9uIHRoZSByZXNvdXJjZSBpbXBsZW1lbnRhdGlvbi5cbiAgICpcbiAgICogVGhlIHJldHVybmVkIHByb3BlcnRpZXMgaGVyZSBhcmUgKmN1cnJlbnRseSogc2VsZWN0ZWQgZnJvbSB0aGUgcmVzcG9uc2VcbiAgICogb2JqZWN0IHRoYXQgQ2xvdWRDb250cm9sIEFQSSByZXR1cm5zIHRvIHRoZSBDREsgQ0xJLlxuICAgKlxuICAgKiBIb3dldmVyLCBpZiB3ZSBmaW5kIHRoZXJlIGlzIG5lZWQgdG8gZG8gc28sIHdlIG1heSBkZWNpZGUgdG8gY2hhbmdlIHRoaXNcbiAgICogYmVoYXZpb3IgaW4gdGhlIGZ1dHVyZTogd2UgbWlnaHQgY2hhbmdlIGl0IHRvIHBlcmZvcm0gYW4gYWRkaXRpb25hbFxuICAgKiBgR2V0UmVzb3VyY2VgIGNhbGwgZm9yIHJlc291cmNlcyBtYXRjaGVkIGJ5IGBwcm9wZXJ0eU1hdGNoYC5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BlcnRpZXNUb1JldHVybjogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEV4cGVjdGVkIGNvdW50IG9mIHJlc3VsdHMgaWYgYHByb3BlcnR5TWF0Y2hgIGlzIHNwZWNpZmllZC5cbiAgICpcbiAgICogSWYgdGhlIGV4cGVjdGVkIHJlc3VsdCBjb3VudCBkb2VzIG5vdCBtYXRjaCB0aGUgYWN0dWFsIGNvdW50LFxuICAgKiBieSBkZWZhdWx0IGFuIGVycm9yIGlzIHByb2R1Y2VkIGFuZCB0aGUgcmVzdWx0IGlzIG5vdCBjb21taXR0ZWQgdG8gY2FjaGVkXG4gICAqIGNvbnRleHQsIGFuZCB0aGUgdXNlciBjYW4gY29ycmVjdCB0aGUgc2l0dWF0aW9uIGFuZCB0cnkgYWdhaW4gd2l0aG91dFxuICAgKiBoYXZpbmcgdG8gbWFudWFsbHkgY2xlYXIgb3V0IHRoZSBjb250ZXh0IGtleSB1c2luZyBgY2RrIGNvbnRleHQgLS1yZW1vdmVgXG4gICAqXG4gICAqIElmIHRoZSB2YWx1ZSBvZiAqIGBpZ25vcmVFcnJvck9uTWlzc2luZ0NvbnRleHRgIGlzIGB0cnVlYCwgdGhlIHZhbHVlIG9mXG4gICAqIGBleHBlY3RlZE1hdGNoQ291bnRgIGlzIGBhdC1sZWFzdC1vbmUgfCBleGFjdGx5LW9uZWAgYW5kIHRoZSBudW1iZXJcbiAgICogb2YgZm91bmQgcmVzb3VyY2VzIGlzIDAsIGBkdW1teVZhbHVlYCBpcyByZXR1cm5lZCBhbmQgY29tbWl0dGVkIHRvIGNvbnRleHRcbiAgICogaW5zdGVhZC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2FueSdcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVjdGVkTWF0Y2hDb3VudD86ICdhbnknIHwgJ2F0LWxlYXN0LW9uZScgfCAnYXQtbW9zdC1vbmUnIHwgJ2V4YWN0bHktb25lJztcblxuICAvKipcbiAgICogVGhlIHZhbHVlIHRvIHJldHVybiBpZiB0aGUgcmVzb3VyY2Ugd2FzIG5vdCBmb3VuZCBhbmQgYGlnbm9yZUVycm9yT25NaXNzaW5nQ29udGV4dGAgaXMgdHJ1ZS5cbiAgICpcbiAgICogSWYgc3VwcGxpZWQsIGBkdW1teVZhbHVlYCBzaG91bGQgYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cy5cbiAgICpcbiAgICogYGR1bW15VmFsdWVgIGRvZXMgbm90IGhhdmUgdG8gaGF2ZSBlbGVtZW50cywgYW5kIGl0IG1heSBoYXZlIG9iamVjdHMgd2l0aFxuICAgKiBkaWZmZXJlbnQgcHJvcGVydGllcyB0aGFuIHRoZSBwcm9wZXJ0aWVzIGluIGBwcm9wZXJ0aWVzVG9SZXR1cm5gLCBidXQgaXRcbiAgICogd2lsbCBiZSBlYXNpZXN0IGZvciBkb3duc3RyZWFtIGNvZGUgaWYgdGhlIGBkdW1teVZhbHVlYCBjb25mb3JtcyB0b1xuICAgKiB0aGUgZXhwZWN0ZWQgcmVzcG9uc2Ugc2hhcGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZHVtbXkgdmFsdWUgYXZhaWxhYmxlXG4gICAqL1xuICByZWFkb25seSBkdW1teVZhbHVlPzogYW55O1xuXG4gIC8qKlxuICAgKiBJZ25vcmUgYW4gZXJyb3IgYW5kIHJldHVybiB0aGUgYGR1bW15VmFsdWVgIGluc3RlYWQgaWYgdGhlIHJlc291cmNlIHdhcyBub3QgZm91bmQuXG4gICAqXG4gICAqIC0gSW4gY2FzZSBvZiBhbiBgZXhhY3RJZGVudGlmaWVyYCBsb29rdXAsIHJldHVybiB0aGUgYGR1bW15VmFsdWVgIGlmIHRoZSByZXNvdXJjZSB3aXRoXG4gICAqICAgdGhhdCBpZGVudGlmaWVyIHdhcyBub3QgZm91bmQuXG4gICAqIC0gSW4gY2FzZSBvZiBhIGBwcm9wZXJ0eU1hdGNoYCBsb29rdXAsIHJldHVybiB0aGUgYGR1bW15VmFsdWVgIGlmIGBleHBlY3RlZE1hdGNoQ291bnRgXG4gICAqICAgaXMgYGF0LWxlYXN0LW9uZSB8IGV4YWN0bHktb25lYCBhbmQgdGhlIG51bWJlciBvZiByZXNvdXJjZXMgZm91bmQgd2FzIDAuXG4gICAqXG4gICAqIGlmIGBpZ25vcmVFcnJvck9uTWlzc2luZ0NvbnRleHRgIGlzIHNldCwgYGR1bW15VmFsdWVgIHNob3VsZCBiZSBzZXQgYW5kIGJlIGFuIGFycmF5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlRXJyb3JPbk1pc3NpbmdDb250ZXh0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgcGx1Z2luc1xuICpcbiAqIFRoaXMgYWx0ZXJuYXRlIGJyYW5jaCBpcyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBuZWVkcyB0byBiZSBhYmxlIHRvIGVzY2FwZSBhbGwgdHlwZSBjaGVja2luZ1xuICogd2UgZG8gb24gb24gdGhlIGNsb3VkIGFzc2VtYmx5IC0tIHdlIGNhbm5vdCBrbm93IHRoZSBwcm9wZXJ0aWVzIHRoYXQgd2lsbCBiZSB1c2VkIGEgcHJpb3JpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkNvbnRleHRRdWVyeSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGx1Z2luXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFyYml0cmFyeSBvdGhlciBhcmd1bWVudHMgZm9yIHRoZSBwbHVnaW4uXG4gICAqXG4gICAqIFRoaXMgaW5kZXggc2lnbmF0dXJlIGlzIG5vdCB1c2FibGUgaW4gbm9uLVR5cGVTY3JpcHQvSmF2YVNjcmlwdCBsYW5ndWFnZXMuXG4gICAqXG4gICAqIEBqc2lpIGlnbm9yZVxuICAgKi9cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgdHlwZSBDb250ZXh0UXVlcnlQcm9wZXJ0aWVzID1cbiAgfCBBbWlDb250ZXh0UXVlcnlcbiAgfCBBdmFpbGFiaWxpdHlab25lc0NvbnRleHRRdWVyeVxuICB8IEhvc3RlZFpvbmVDb250ZXh0UXVlcnlcbiAgfCBTU01QYXJhbWV0ZXJDb250ZXh0UXVlcnlcbiAgfCBWcGNDb250ZXh0UXVlcnlcbiAgfCBFbmRwb2ludFNlcnZpY2VBdmFpbGFiaWxpdHlab25lc0NvbnRleHRRdWVyeVxuICB8IExvYWRCYWxhbmNlckNvbnRleHRRdWVyeVxuICB8IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFF1ZXJ5XG4gIHwgU2VjdXJpdHlHcm91cENvbnRleHRRdWVyeVxuICB8IEtleUNvbnRleHRRdWVyeVxuICB8IENjQXBpQ29udGV4dFF1ZXJ5XG4gIHwgUGx1Z2luQ29udGV4dFF1ZXJ5O1xuIl19
package/lib/manifest.d.ts CHANGED
@@ -38,7 +38,7 @@ export interface LoadManifestOptions {
38
38
  /**
39
39
  * Protocol utility class.
40
40
  */
41
- export declare class Manifest {
41
+ export declare abstract class Manifest {
42
42
  /**
43
43
  * Validates and saves the cloud assembly manifest to file.
44
44
  *
@@ -100,19 +100,29 @@ export declare class Manifest {
100
100
  private static saveManifest;
101
101
  private static loadManifest;
102
102
  /**
103
- * This requires some explaining...
103
+ * Fix the casing of stack tags entries
104
104
  *
105
- * We previously used `{ Key, Value }` for the object that represents a stack tag. (Notice the casing)
106
- * @link https://github.com/aws/aws-cdk/blob/v1.27.0/packages/aws-cdk/lib/api/cxapp/stacks.ts#L427.
105
+ * At the very beginning of the CDK we used to emit stack tags as an object with
106
+ * `{ Key, Value }` keys; this had the "advantage" that we could stick those
107
+ * tags directly into the `CreateChangeSet` call.
107
108
  *
108
- * When that object moved to this package, it had to be JSII compliant, which meant the property
109
- * names must be `camelCased`, and not `PascalCased`. This meant it no longer matches the structure in the `manifest.json` file.
110
- * In order to support current manifest files, we have to translate the `PascalCased` representation to the new `camelCased` one.
109
+ * Then we later on used jsii on the assembly schema and we were forced to type
110
+ * the in-memory objects as `{ key, value }` with lowercase letters. Now the
111
+ * objects have a different on-disk and in-memory format, and we need to convert
112
+ * between them.
111
113
  *
112
- * Note that the serialization itself still writes `PascalCased` because it relates to how CloudFormation expects it.
114
+ * For backwards compatibility reasons, we used to convert lowercase in-memory
115
+ * to uppercase on-disk variant until very recently. This is now unnecessary,
116
+ * since no officially supported CDK tools read the stack tags from the
117
+ * metadata; the CLI and toolkit library read stack tags from the artifact
118
+ * properties.
113
119
  *
114
- * Ideally, we would start writing the `camelCased` and translate to how CloudFormation expects it when needed. But this requires nasty
115
- * backwards-compatibility code and it just doesn't seem to be worth the effort.
120
+ * So although we don't emit uppercase stack tag objects anymore, we might still read
121
+ * manifests that have them. Because the manifest we read must pass JSON Schema
122
+ * validation (which expects lowercase tag objects), we have to fix the casing
123
+ * of these objects after reading from disk and before validating.
124
+ *
125
+ * That's what this function does.
116
126
  */
117
127
  private static patchStackTagsOnRead;
118
128
  /**
@@ -120,15 +130,4 @@ export declare class Manifest {
120
130
  * should have dedicated properties preceding this (e.g `assumeRoleArn` and `assumeRoleExternalId`).
121
131
  */
122
132
  private static validateAssumeRoleAdditionalOptions;
123
- /**
124
- * See explanation on `patchStackTagsOnRead`
125
- *
126
- * Translate stack tags metadata if it has the "right" casing.
127
- */
128
- private static patchStackTagsOnWrite;
129
- /**
130
- * Recursively replace stack tags in the stack metadata
131
- */
132
- private static replaceStackTags;
133
- private constructor();
134
133
  }
package/lib/manifest.js CHANGED
@@ -39,7 +39,7 @@ class Manifest {
39
39
  * @param filePath - output file path.
40
40
  */
41
41
  static saveAssemblyManifest(manifest, filePath) {
42
- Manifest.saveManifest(manifest, filePath, ASSEMBLY_SCHEMA, Manifest.patchStackTagsOnWrite);
42
+ Manifest.saveManifest(manifest, filePath, ASSEMBLY_SCHEMA);
43
43
  }
44
44
  /**
45
45
  * Load and validates the cloud assembly manifest from file.
@@ -56,7 +56,7 @@ class Manifest {
56
56
  * @param filePath - output file path.
57
57
  */
58
58
  static saveAssetManifest(manifest, filePath) {
59
- Manifest.saveManifest(manifest, filePath, ASSETS_SCHEMA, Manifest.patchStackTagsOnRead);
59
+ Manifest.saveManifest(manifest, filePath, ASSETS_SCHEMA);
60
60
  }
61
61
  /**
62
62
  * Load and validates the asset manifest from file.
@@ -64,7 +64,7 @@ class Manifest {
64
64
  * @param filePath - path to the manifest file.
65
65
  */
66
66
  static loadAssetManifest(filePath) {
67
- return this.loadManifest(filePath, ASSETS_SCHEMA);
67
+ return Manifest.loadManifest(filePath, ASSETS_SCHEMA);
68
68
  }
69
69
  /**
70
70
  * Validates and saves the integ manifest to file.
@@ -186,25 +186,53 @@ class Manifest {
186
186
  return obj;
187
187
  }
188
188
  /**
189
- * This requires some explaining...
189
+ * Fix the casing of stack tags entries
190
190
  *
191
- * We previously used `{ Key, Value }` for the object that represents a stack tag. (Notice the casing)
192
- * @link https://github.com/aws/aws-cdk/blob/v1.27.0/packages/aws-cdk/lib/api/cxapp/stacks.ts#L427.
191
+ * At the very beginning of the CDK we used to emit stack tags as an object with
192
+ * `{ Key, Value }` keys; this had the "advantage" that we could stick those
193
+ * tags directly into the `CreateChangeSet` call.
193
194
  *
194
- * When that object moved to this package, it had to be JSII compliant, which meant the property
195
- * names must be `camelCased`, and not `PascalCased`. This meant it no longer matches the structure in the `manifest.json` file.
196
- * In order to support current manifest files, we have to translate the `PascalCased` representation to the new `camelCased` one.
195
+ * Then we later on used jsii on the assembly schema and we were forced to type
196
+ * the in-memory objects as `{ key, value }` with lowercase letters. Now the
197
+ * objects have a different on-disk and in-memory format, and we need to convert
198
+ * between them.
197
199
  *
198
- * Note that the serialization itself still writes `PascalCased` because it relates to how CloudFormation expects it.
200
+ * For backwards compatibility reasons, we used to convert lowercase in-memory
201
+ * to uppercase on-disk variant until very recently. This is now unnecessary,
202
+ * since no officially supported CDK tools read the stack tags from the
203
+ * metadata; the CLI and toolkit library read stack tags from the artifact
204
+ * properties.
199
205
  *
200
- * Ideally, we would start writing the `camelCased` and translate to how CloudFormation expects it when needed. But this requires nasty
201
- * backwards-compatibility code and it just doesn't seem to be worth the effort.
206
+ * So although we don't emit uppercase stack tag objects anymore, we might still read
207
+ * manifests that have them. Because the manifest we read must pass JSON Schema
208
+ * validation (which expects lowercase tag objects), we have to fix the casing
209
+ * of these objects after reading from disk and before validating.
210
+ *
211
+ * That's what this function does.
202
212
  */
203
213
  static patchStackTagsOnRead(manifest) {
204
- return Manifest.replaceStackTags(manifest, (tags) => tags.map((diskTag) => ({
205
- key: diskTag.Key,
206
- value: diskTag.Value,
207
- })));
214
+ const artifacts = Object.values(manifest.artifacts ?? {})
215
+ .filter(artifact => artifact.type === assembly.ArtifactType.AWS_CLOUDFORMATION_STACK);
216
+ for (const artifact of artifacts) {
217
+ const tagMetadata = Object.values(artifact.metadata ?? {})
218
+ .flatMap(x => x)
219
+ .filter(entry => entry.type === assembly.ArtifactMetadataEntryType.STACK_TAGS);
220
+ for (const entry of tagMetadata) {
221
+ const tags = entry.data;
222
+ for (const tag of tags ?? []) {
223
+ const t = tag;
224
+ if ('Key' in t) {
225
+ t.key = t.Key;
226
+ delete t.Key;
227
+ }
228
+ if ('Value' in t) {
229
+ t.value = t.Value;
230
+ delete t.Value;
231
+ }
232
+ }
233
+ }
234
+ }
235
+ return manifest;
208
236
  }
209
237
  /**
210
238
  * Validates that `assumeRoleAdditionalOptions` doesn't contain nor `ExternalId` neither `RoleArn`, as they
@@ -226,70 +254,11 @@ class Manifest {
226
254
  throw new Error(`ExternalId is not allowed inside '${key}'`);
227
255
  }
228
256
  }
229
- /**
230
- * See explanation on `patchStackTagsOnRead`
231
- *
232
- * Translate stack tags metadata if it has the "right" casing.
233
- */
234
- static patchStackTagsOnWrite(manifest) {
235
- return Manifest.replaceStackTags(manifest, (tags) => tags.map((memTag) =>
236
- // Might already be uppercased (because stack synthesis generates it in final form yet)
237
- ('Key' in memTag ? memTag : { Key: memTag.key, Value: memTag.value })));
238
- }
239
- /**
240
- * Recursively replace stack tags in the stack metadata
241
- */
242
- static replaceStackTags(manifest, fn) {
243
- // Need to add in the `noUndefined`s because otherwise jest snapshot tests are going to freak out
244
- // about the keys with values that are `undefined` (even though they would never be JSON.stringified)
245
- return noUndefined({
246
- ...manifest,
247
- artifacts: mapValues(manifest.artifacts, (artifact) => {
248
- if (artifact.type !== assembly.ArtifactType.AWS_CLOUDFORMATION_STACK) {
249
- return artifact;
250
- }
251
- return noUndefined({
252
- ...artifact,
253
- metadata: mapValues(artifact.metadata, (metadataEntries) => metadataEntries.map((metadataEntry) => {
254
- if (metadataEntry.type !== assembly.ArtifactMetadataEntryType.STACK_TAGS ||
255
- !metadataEntry.data) {
256
- return metadataEntry;
257
- }
258
- return {
259
- ...metadataEntry,
260
- data: fn(metadataEntry.data),
261
- };
262
- })),
263
- });
264
- }),
265
- });
266
- }
267
- constructor() {
268
- }
269
257
  }
270
258
  exports.Manifest = Manifest;
271
259
  _a = JSII_RTTI_SYMBOL_1;
272
- Manifest[_a] = { fqn: "@aws-cdk/cloud-assembly-schema.Manifest", version: "49.4.0" };
273
- function mapValues(xs, fn) {
274
- if (!xs) {
275
- return undefined;
276
- }
277
- const ret = {};
278
- for (const [k, v] of Object.entries(xs)) {
279
- ret[k] = fn(v);
280
- }
281
- return ret;
282
- }
283
- function noUndefined(xs) {
284
- const ret = {};
285
- for (const [k, v] of Object.entries(xs)) {
286
- if (v !== undefined) {
287
- ret[k] = v;
288
- }
289
- }
290
- return ret;
291
- }
260
+ Manifest[_a] = { fqn: "@aws-cdk/cloud-assembly-schema.Manifest", version: "50.1.0" };
292
261
  function stripEnumErrors(errors) {
293
262
  return errors.filter((e) => typeof e.schema === 'string' || !('enum' in e.schema));
294
263
  }
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qix5Q0FBeUM7QUFDekMsaUNBQWlDO0FBRWpDLDZDQUE2QztBQUc3Qyx1REFBdUQ7QUFDdkQsMERBQTBEO0FBRTFELGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsNkJBQTZCO0FBQ2hCLFFBQUEsZ0JBQWdCLEdBQVcsd0NBQXdDLENBQUM7QUFFakY7Ozs7OztHQU1HO0FBQ0gsbURBQW9EO0FBRXBELDhEQUErRDtBQUUvRCx3RUFBeUU7QUFFekUsNERBQTZEO0FBRTdEOztHQUVHO0FBQ0gseURBQTBEO0FBc0MxRDs7R0FFRztBQUNILE1BQWEsUUFBUTtJQUNuQjs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxRQUFtQyxFQUFFLFFBQWdCO1FBQ3RGLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsb0JBQW9CLENBQ2hDLFFBQWdCLEVBQ2hCLE9BQTZCO1FBRTdCLE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBOEIsRUFBRSxRQUFnQjtRQUM5RSxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQWdCO1FBQzlDLE9BQU8sSUFBSSxD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QUMxQyxNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7SUFDcEIsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwQixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxNQUFvQztJQUMzRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMganNvbnNjaGVtYSBmcm9tICdqc29uc2NoZW1hJztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHR5cGUgKiBhcyBhc3NldHMgZnJvbSAnLi9hc3NldHMnO1xuaW1wb3J0ICogYXMgYXNzZW1ibHkgZnJvbSAnLi9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgdHlwZSAqIGFzIGludGVnIGZyb20gJy4vaW50ZWctdGVzdHMnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzICovXG5cbi8vIHRoaXMgcHJlZml4IGlzIHVzZWQgYnkgdGhlIENMSSB0byBpZGVudGlmeSB0aGlzIHNwZWNpZmljIGVycm9yLlxuLy8gaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGluc3RydWN0IHRoZSB1c2VyIHRvIHVwZ3JhZGUgaGlzIENMSS5cbi8vIHNlZSBleGVjLnRzI2NyZWF0ZUFzc2VtYmx5XG5leHBvcnQgY29uc3QgVkVSU0lPTl9NSVNNQVRDSDogc3RyaW5nID0gJ0Nsb3VkIGFzc2VtYmx5IHNjaGVtYSB2ZXJzaW9uIG1pc21hdGNoJztcblxuLyoqXG4gKiBDTEkgdmVyc2lvbiBpcyBjcmVhdGVkIGF0IGJ1aWxkIGFuZCByZWxlYXNlIHRpbWVcbiAqXG4gKiBJdCBuZWVkcyB0byBiZSAuZ2l0aWdub3JlJ2QsIG90aGVyd2lzZSB0aGUgcHJvamVuICdubyB1bmNvbW1pdHRlZFxuICogY2hhbmdlcycgc2VsZi1jaGVjayB3aWxsIGZhaWwsIHdoaWNoIG1lYW5zIGl0IG5lZWRzIHRvIGJlIGdlbmVyYXRlZFxuICogYXQgYnVpbGQgdGltZSBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuXG4gKi9cbmltcG9ydCBDTElfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2NsaS12ZXJzaW9uLmpzb24nKTtcblxuaW1wb3J0IEFTU0VUU19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvYXNzZXRzLnNjaGVtYS5qc29uJyk7XG5cbmltcG9ydCBBU1NFTUJMWV9TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvY2xvdWQtYXNzZW1ibHkuc2NoZW1hLmpzb24nKTtcblxuaW1wb3J0IElOVEVHX1NDSEVNQSA9IHJlcXVpcmUoJy4uL3NjaGVtYS9pbnRlZy5zY2hlbWEuanNvbicpO1xuXG4vKipcbiAqIFZlcnNpb24gaXMgc2hhcmVkIGZvciBib3RoIG1hbmlmZXN0c1xuICovXG5pbXBvcnQgU0NIRU1BX1ZFUlNJT04gPSByZXF1aXJlKCcuLi9zY2hlbWEvdmVyc2lvbi5qc29uJyk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGxvYWRNYW5pZmVzdCBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkTWFuaWZlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNraXAgdGhlIHZlcnNpb24gY2hlY2tcbiAgICpcbiAgICogVGhpcyBtZWFucyB5b3UgbWF5IHJlYWQgYSBuZXdlciBjbG91ZCBhc3NlbWJseSB0aGFuIHRoZSBDWCBBUEkgaXMgZGVzaWduZWRcbiAgICogdG8gc3VwcG9ydCwgYW5kIHlvdXIgYXBwbGljYXRpb24gbWF5IG5vdCBiZSBhd2FyZSBvZiBhbGwgZmVhdHVyZXMgdGhhdCBpbiB1c2VcbiAgICogaW4gdGhlIENsb3VkIEFzc2VtYmx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcFZlcnNpb25DaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNraXAgZW51bSBjaGVja3NcbiAgICpcbiAgICogVGhpcyBtZWFucyB5b3UgbWF5IHJlYWQgZW51bSB2YWx1ZXMgeW91IGRvbid0IGtub3cgYWJvdXQgeWV0LiBNYWtlIHN1cmUgdG8gYWx3YXlzXG4gICAqIGNoZWNrIHRoZSB2YWx1ZXMgb2YgZW51bXMgeW91IGVuY291bnRlciBpbiB0aGUgbWFuaWZlc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwRW51bUNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVG9wb2xvZ2ljYWxseSBzb3J0IGFsbCBhcnRpZmFjdHNcbiAgICpcbiAgICogVGhpcyBwYXJhbWV0ZXIgaXMgb25seSByZXNwZWN0ZWQgYnkgdGhlIGNvbnN0cnVjdG9yIG9mIGBDbG91ZEFzc2VtYmx5YC4gVGhlXG4gICAqIHByb3BlcnR5IGxpdmVzIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHRvcG9Tb3J0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm90b2NvbCB1dGlsaXR5IGNsYXNzLlxuICovXG5leHBvcnQgY2xhc3MgTWFuaWZlc3Qge1xuICAvKipcbiAgICogVmFsaWRhdGVzIGFuZCBzYXZlcyB0aGUgY2xvdWQgYXNzZW1ibHkgbWFuaWZlc3QgdG8gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIG91dHB1dCBmaWxlIHBhdGguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmVBc3NlbWJseU1hbmlmZXN0KG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgTWFuaWZlc3Quc2F2ZU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCwgQVNTRU1CTFlfU0NIRU1BLCBNYW5pZmVzdC5wYXRjaFN0YWNrVGFnc09uV3JpdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYW5kIHZhbGlkYXRlcyB0aGUgY2xvdWQgYXNzZW1ibHkgbWFuaWZlc3QgZnJvbSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkQXNzZW1ibHlNYW5pZmVzdChcbiAgICBmaWxlUGF0aDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zLFxuICApOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICByZXR1cm4gTWFuaWZlc3QubG9hZE1hbmlmZXN0KGZpbGVQYXRoLCBBU1NFTUJMWV9TQ0hFTUEsIE1hbmlmZXN0LnBhdGNoU3RhY2tUYWdzT25SZWFkLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIHNhdmVzIHRoZSBhc3NldCBtYW5pZmVzdCB0byBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gbWFuaWZlc3QgLSBtYW5pZmVzdC5cbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gb3V0cHV0IGZpbGUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZUFzc2V0TWFuaWZlc3QobWFuaWZlc3Q6IGFzc2V0cy5Bc3NldE1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgTWFuaWZlc3Quc2F2ZU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCwgQVNTRVRTX1NDSEVNQSwgTWFuaWZlc3QucGF0Y2hTdGFja1RhZ3NPblJlYWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYW5kIHZhbGlkYXRlcyB0aGUgYXNzZXQgbWFuaWZlc3QgZnJvbSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkQXNzZXRNYW5pZmVzdChmaWxlUGF0aDogc3RyaW5nKTogYXNzZXRzLkFzc2V0TWFuaWZlc3Qge1xuICAgIHJldHVybiB0aGlzLmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgQVNTRVRTX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuZCBzYXZlcyB0aGUgaW50ZWcgbWFuaWZlc3QgdG8gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIG91dHB1dCBmaWxlIHBhdGguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmVJbnRlZ01hbmlmZXN0KG1hbmlmZXN0OiBpbnRlZy5JbnRlZ01hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgTWFuaWZlc3Quc2F2ZU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCwgSU5URUdfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGludGVnIG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEludGVnTWFuaWZlc3QoZmlsZVBhdGg6IHN0cmluZyk6IGludGVnLkludGVnTWFuaWZlc3Qge1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gdGhpcy5sb2FkTWFuaWZlc3QoZmlsZVBhdGgsIElOVEVHX1NDSEVNQSk7XG5cbiAgICAvLyBBZGRpbmcgdHlwaW5nIHRvIGB2YWxpZGF0ZSgpYCBsZWQgdG8gYGxvYWRNYW5pZmVzdCgpYCB0byBwcm9wZXJseSBpbmZlclxuICAgIC8vIGl0cyByZXR1cm4gdHlwZSwgd2hpY2ggaW5kaWNhdGVkIHRoYXQgdGhlIHJldHVybiB0eXBlIG9mIHRoaXNcbiAgICAvLyBmdW5jdGlvbiBtYXkgYmUgYSBsaWUuIEkgY291bGQgY2hhbmdlIHRoZSBzY2hlbWEgdG8gbWFrZSBgdGVzdENhc2VzYFxuICAgIC8vIG9wdGlvbmFsLCBidXQgdGhhdCB3aWxsIGJ1bXAgdGhlIG1ham9yIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlIGFuZCBJXG4gICAgLy8gZG9uJ3Qgd2FudCB0byBkbyB0aGF0LiBTbyBpbnN0ZWFkLCBqdXN0IG1ha2Ugc3VyZSBgdGVzdENhc2VzYCBpcyBhbHdheXMgdGhlcmUuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1hbmlmZXN0LFxuICAgICAgdGVzdENhc2VzOiAobWFuaWZlc3QgYXMgYW55KS50ZXN0Q2FzZXMgPz8gW10sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCB0aGUgY3VycmVudCBzY2hlbWEgdmVyc2lvbiBudW1iZXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7U0NIRU1BX1ZFUlNJT04ucmV2aXNpb259LjAuMGA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBDTEkgdmVyc2lvbiB0aGF0IHN1cHBvcnRzIHRoaXMgQ2xvdWQgQXNzZW1ibHkgU2NoZW1hIHZlcnNpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2xpVmVyc2lvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHZlcnNpb24gPSBDTElfVkVSU0lPTi52ZXJzaW9uO1xuICAgIHJldHVybiB2ZXJzaW9uID8gdmVyc2lvbiA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgc2F2ZUFzc2VtYmx5TWFuaWZlc3QoKWBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZShtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnNhdmVBc3NlbWJseU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogRGVwcmVjYXRlZFxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGxvYWRBc3NlbWJseU1hbmlmZXN0KClgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWQoZmlsZVBhdGg6IHN0cmluZyk6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3Qge1xuICAgIHJldHVybiB0aGlzLmxvYWRBc3NlbWJseU1hbmlmZXN0KGZpbGVQYXRoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHZhbGlkYXRlKFxuICAgIG1hbmlmZXN0OiBhbnksXG4gICAgc2NoZW1hOiBqc29uc2NoZW1hLlNjaGVtYSxcbiAgICBvcHRpb25zPzogTG9hZE1hbmlmZXN0T3B0aW9ucyxcbiAgKTogYXNzZXJ0cyBtYW5pZmVzdCBpcyBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICBmdW5jdGlvbiBwYXJzZVZlcnNpb24odmVyc2lvbjogc3RyaW5nKSB7XG4gICAgICBjb25zdCB2ZXIgPSBzZW12ZXIudmFsaWQodmVyc2lvbik7XG4gICAgICBpZiAoIXZlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VtdmVyIHN0cmluZzogXCIke3ZlcnNpb259XCJgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2ZXI7XG4gICAgfVxuXG4gICAgY29uc3QgbWF4U3VwcG9ydGVkID0gc2VtdmVyLm1ham9yKHBhcnNlVmVyc2lvbihNYW5pZmVzdC52ZXJzaW9uKCkpKTtcbiAgICBjb25zdCBhY3R1YWwgPSBwYXJzZVZlcnNpb24obWFuaWZlc3QudmVyc2lvbik7XG5cbiAgICAvLyBmaXJzdCB2YWxpZGF0ZSB0aGUgdmVyc2lvbiBzaG91bGQgYmUgYWNjZXB0ZWQuIGFsbCB2ZXJzaW9ucyB3aXRoaW4gdGhlIHNhbWUgbWlub3IgdmVyc2lvbiBhcmUgZmluZVxuICAgIGlmIChtYXhTdXBwb3J0ZWQgPCBzZW12ZXIubWFqb3IoYWN0dWFsKSAmJiAhb3B0aW9ucz8uc2tpcFZlcnNpb25DaGVjaykge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBhIG1vcmUgc3BlY2lmaWMgZXJyb3IgdG8gdGhyb3cgdGhhbiB0aGUgZ2VuZXJpYyBvbmUgYmVsb3csIG1ha2Ugc3VyZSB0byBhZGQgdGhhdCBpbmZvLlxuICAgICAgY29uc3QgY2xpVmVyc2lvbiA9IChtYW5pZmVzdCBhcyBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0KS5taW5pbXVtQ2xpVmVyc2lvbjtcbiAgICAgIGxldCBjbGlXYXJuaW5nID0gJyc7XG4gICAgICBpZiAoY2xpVmVyc2lvbikge1xuICAgICAgICBjbGlXYXJuaW5nID0gYC4gWW91IG5lZWQgYXQgbGVhc3QgQ0xJIHZlcnNpb24gJHtjbGlWZXJzaW9ufSB0byByZWFkIHRoaXMgbWFuaWZlc3QuYDtcbiAgICAgIH1cblxuICAgICAgLy8gd2UgdXNlIGEgd2VsbCBrbm93biBlcnJvciBwcmVmaXggc28gdGhhdCB0aGUgQ0xJIGNhbiBpZGVudGlmeSB0aGlzIHNwZWNpZmljIGVycm9yXG4gICAgICAvLyBhbmQgcHJpbnQgc29tZSBtb3JlIGNvbnRleHQgdG8gdGhlIHVzZXIuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGAke1ZFUlNJT05fTUlTTUFUQ0h9OiBNYXhpbXVtIHNjaGVtYSB2ZXJzaW9uIHN1cHBvcnRlZCBpcyAke21heFN1cHBvcnRlZH0ueC54LCBidXQgZm91bmQgJHthY3R1YWx9JHtjbGlXYXJuaW5nfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIG5vdyB2YWxpZGF0ZSB0aGUgZm9ybWF0IGlzIGdvb2QuXG4gICAgY29uc3QgdmFsaWRhdG9yID0gbmV3IGpzb25zY2hlbWEuVmFsaWRhdG9yKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdG9yLnZhbGlkYXRlKG1hbmlmZXN0LCBzY2hlbWEsIHtcbiAgICAgIC8vIGRvZXMgZXhpc3QgYnV0IGlzIG5vdCBpbiB0aGUgVHlwZVNjcmlwdCBkZWZpbml0aW9uc1xuICAgICAgbmVzdGVkRXJyb3JzOiB0cnVlLFxuXG4gICAgICBhbGxvd1Vua25vd25BdHRyaWJ1dGVzOiBmYWxzZSxcbiAgICAgIHByZVZhbGlkYXRlUHJvcGVydHk6IE1hbmlmZXN0LnZhbGlkYXRlQXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zLFxuICAgIH0pO1xuXG4gICAgbGV0IGVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG4gICAgaWYgKG9wdGlvbnM/LnNraXBFbnVtQ2hlY2spIHtcbiAgICAgIC8vIEVudW0gdmFsaWRhdGlvbnMgYXJlbid0IHVzZWZ1bCB3aGVuXG4gICAgICBlcnJvcnMgPSBzdHJpcEVudW1FcnJvcnMoZXJyb3JzKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhc3NlbWJseSBtYW5pZmVzdDpcXG4ke2Vycm9ycy5tYXAoKGUpID0+IGUuc3RhY2spLmpvaW4oJ1xcbicpfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNhdmVNYW5pZmVzdChcbiAgICBtYW5pZmVzdDogYW55LFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBqc29uc2NoZW1hLlNjaGVtYSxcbiAgICBwcmVwcm9jZXNzPzogKG9iajogYW55KSA9PiBhbnksXG4gICkge1xuICAgIGxldCB3aXRoVmVyc2lvbiA9IHtcbiAgICAgIC4uLm1hbmlmZXN0LFxuICAgICAgdmVyc2lvbjogTWFuaWZlc3QudmVyc2lvbigpLFxuICAgICAgbWluaW11bUNsaVZlcnNpb246IE1hbmlmZXN0LmNsaVZlcnNpb24oKSxcbiAgICB9IHNhdGlzZmllcyBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0O1xuICAgIE1hbmlmZXN0LnZhbGlkYXRlKHdpdGhWZXJzaW9uLCBzY2hlbWEpO1xuICAgIGlmIChwcmVwcm9jZXNzKSB7XG4gICAgICB3aXRoVmVyc2lvbiA9IHByZXByb2Nlc3Mod2l0aFZlcnNpb24pO1xuICAgIH1cbiAgICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeSh3aXRoVmVyc2lvbiwgdW5kZWZpbmVkLCAyKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBsb2FkTWFuaWZlc3QoXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLFxuICAgIHByZXByb2Nlc3M/OiAob2JqOiBhbnkpID0+IGFueSxcbiAgICBvcHRpb25zPzogTG9hZE1hbmlmZXN0T3B0aW9ucyxcbiAgKSB7XG4gICAgY29uc3QgY29udGVudHMgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG4gICAgbGV0IG9iajtcbiAgICB0cnkge1xuICAgICAgb2JqID0gSlNPTi5wYXJzZShjb250ZW50cyk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZS5tZXNzYWdlfSwgd2hpbGUgcGFyc2luZyAke0pTT04uc3RyaW5naWZ5KGNvbnRlbnRzKX1gKTtcbiAgICB9XG4gICAgaWYgKHByZXByb2Nlc3MpIHtcbiAgICAgIG9iaiA9IHByZXByb2Nlc3Mob2JqKTtcbiAgICB9XG4gICAgTWFuaWZlc3QudmFsaWRhdGUob2JqLCBzY2hlbWEsIG9wdGlvbnMpO1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyByZXF1aXJlcyBzb21lIGV4cGxhaW5pbmcuLi5cbiAgICpcbiAgICogV2UgcHJldmlvdXNseSB1c2VkIGB7IEtleSwgVmFsdWUgfWAgZm9yIHRoZSBvYmplY3QgdGhhdCByZXByZXNlbnRzIGEgc3RhY2sgdGFnLiAoTm90aWNlIHRoZSBjYXNpbmcpXG4gICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YxLjI3LjAvcGFja2FnZXMvYXdzLWNkay9saWIvYXBpL2N4YXBwL3N0YWNrcy50cyNMNDI3LlxuICAgKlxuICAgKiBXaGVuIHRoYXQgb2JqZWN0IG1vdmVkIHRvIHRoaXMgcGFja2FnZSwgaXQgaGFkIHRvIGJlIEpTSUkgY29tcGxpYW50LCB3aGljaCBtZWFudCB0aGUgcHJvcGVydHlcbiAgICogbmFtZXMgbXVzdCBiZSBgY2FtZWxDYXNlZGAsIGFuZCBub3QgYFBhc2NhbENhc2VkYC4gVGhpcyBtZWFudCBpdCBubyBsb25nZXIgbWF0Y2hlcyB0aGUgc3RydWN0dXJlIGluIHRoZSBgbWFuaWZlc3QuanNvbmAgZmlsZS5cbiAgICogSW4gb3JkZXIgdG8gc3VwcG9ydCBjdXJyZW50IG1hbmlmZXN0IGZpbGVzLCB3ZSBoYXZlIHRvIHRyYW5zbGF0ZSB0aGUgYFBhc2NhbENhc2VkYCByZXByZXNlbnRhdGlvbiB0byB0aGUgbmV3IGBjYW1lbENhc2VkYCBvbmUuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgc2VyaWFsaXphdGlvbiBpdHNlbGYgc3RpbGwgd3JpdGVzIGBQYXNjYWxDYXNlZGAgYmVjYXVzZSBpdCByZWxhdGVzIHRvIGhvdyBDbG91ZEZvcm1hdGlvbiBleHBlY3RzIGl0LlxuICAgKlxuICAgKiBJZGVhbGx5LCB3ZSB3b3VsZCBzdGFydCB3cml0aW5nIHRoZSBgY2FtZWxDYXNlZGAgYW5kIHRyYW5zbGF0ZSB0byBob3cgQ2xvdWRGb3JtYXRpb24gZXhwZWN0cyBpdCB3aGVuIG5lZWRlZC4gQnV0IHRoaXMgcmVxdWlyZXMgbmFzdHlcbiAgICogYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgY29kZSBhbmQgaXQganVzdCBkb2Vzbid0IHNlZW0gdG8gYmUgd29ydGggdGhlIGVmZm9ydC5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHBhdGNoU3RhY2tUYWdzT25SZWFkKHRoaXM6IHZvaWQsIG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0KSB7XG4gICAgcmV0dXJuIE1hbmlmZXN0LnJlcGxhY2VTdGFja1RhZ3MobWFuaWZlc3QsICh0YWdzKSA9PlxuICAgICAgdGFncy5tYXAoKGRpc2tUYWc6IGFueSkgPT4gKHtcbiAgICAgICAga2V5OiBkaXNrVGFnLktleSxcbiAgICAgICAgdmFsdWU6IGRpc2tUYWcuVmFsdWUsXG4gICAgICB9KSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCBgYXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zYCBkb2Vzbid0IGNvbnRhaW4gbm9yIGBFeHRlcm5hbElkYCBuZWl0aGVyIGBSb2xlQXJuYCwgYXMgdGhleVxuICAgKiBzaG91bGQgaGF2ZSBkZWRpY2F0ZWQgcHJvcGVydGllcyBwcmVjZWRpbmcgdGhpcyAoZS5nIGBhc3N1bWVSb2xlQXJuYCBhbmQgYGFzc3VtZVJvbGVFeHRlcm5hbElkYCkuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZUFzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucyhcbiAgICB0aGlzOiB2b2lkLFxuICAgIGluc3RhbmNlOiBhbnksXG4gICAga2V5OiBzdHJpbmcsXG4gICAgX3NjaGVtYToganNvbnNjaGVtYS5TY2hlbWEsXG4gICAgX29wdGlvbnM6IGpzb25zY2hlbWEuT3B0aW9ucyxcbiAgICBfY3R4OiBqc29uc2NoZW1hLlNjaGVtYUNvbnRleHQsXG4gICkge1xuICAgIGlmIChrZXkgIT09ICdhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnMnKSB7XG4gICAgICAvLyBub3RlIHRoYXQgdGhpcyBtZWFucyB0aGF0IGlmIHdlIGhhcHBlbiB0byBoYXZlIGEgcHJvcGVydHkgbmFtZWQgbGlrZSB0aGlzLCBidXQgdGhhdFxuICAgICAgLy8gZG9lcyB3YW50IHRvIGFsbG93ICdSb2xlQXJuJyBvciAnRXh0ZXJuYWxJZCcsIHRoaXMgY29kZSB3aWxsIGhhdmUgdG8gY2hhbmdlIHRvIGNvbnNpZGVyIHRoZSBmdWxsIHNjaGVtYSBwYXRoLlxuICAgICAgLy8gSSBkZWNpZGVkIHRvIG1ha2UgdGhpcyBsZXNzIGdyYW51bGFyIGZvciBub3cgb24gcHVycG9zZSBiZWNhdXNlIGl0IGZpdHMgb3VyIG5lZWRzIGFuZCBhdm9pZHMgaGF2aW5nIG1lc3N5XG4gICAgICAvLyB2YWxpZGF0aW9uIGxvZ2ljIGR1ZSB0byB2YXJpb3VzIHNjaGVtYSBwYXRocy5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhc3N1bWVSb2xlT3B0aW9ucyA9IGluc3RhbmNlW2tleV07XG4gICAgaWYgKGFzc3VtZVJvbGVPcHRpb25zPy5Sb2xlQXJuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJvbGVBcm4gaXMgbm90IGFsbG93ZWQgaW5zaWRlICcke2tleX0nYCk7XG4gICAgfVxuICAgIGlmIChhc3N1bWVSb2xlT3B0aW9ucz8uRXh0ZXJuYWxJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHRlcm5hbElkIGlzIG5vdCBhbGxvd2VkIGluc2lkZSAnJHtrZXl9J2ApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWUgZXhwbGFuYXRpb24gb24gYHBhdGNoU3RhY2tUYWdzT25SZWFkYFxuICAgKlxuICAgKiBUcmFuc2xhdGUgc3RhY2sgdGFncyBtZXRhZGF0YSBpZiBpdCBoYXMgdGhlIFwicmlnaHRcIiBjYXNpbmcuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwYXRjaFN0YWNrVGFnc09uV3JpdGUodGhpczogdm9pZCwgbWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QpIHtcbiAgICByZXR1cm4gTWFuaWZlc3QucmVwbGFjZVN0YWNrVGFncyhtYW5pZmVzdCwgKHRhZ3MpID0+XG4gICAgICB0YWdzLm1hcChcbiAgICAgICAgKG1lbVRhZykgPT5cbiAgICAgICAgICAvLyBNaWdodCBhbHJlYWR5IGJlIHVwcGVyY2FzZWQgKGJlY2F1c2Ugc3RhY2sgc3ludGhlc2lzIGdlbmVyYXRlcyBpdCBpbiBmaW5hbCBmb3JtIHlldClcbiAgICAgICAgICAoJ0tleScgaW4gbWVtVGFnID8gbWVtVGFnIDogeyBLZXk6IG1lbVRhZy5rZXksIFZhbHVlOiBtZW1UYWcudmFsdWUgfSkgYXMgYW55LFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZWx5IHJlcGxhY2Ugc3RhY2sgdGFncyBpbiB0aGUgc3RhY2sgbWV0YWRhdGFcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHJlcGxhY2VTdGFja1RhZ3MoXG4gICAgbWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QsXG4gICAgZm46IEVuZG9mdW5jdG9yPGFzc2VtYmx5LlN0YWNrVGFnc01ldGFkYXRhRW50cnk+LFxuICApOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICAvLyBOZWVkIHRvIGFkZCBpbiB0aGUgYG5vVW5kZWZpbmVkYHMgYmVjYXVzZSBvdGhlcndpc2UgamVzdCBzbmFwc2hvdCB0ZXN0cyBhcmUgZ29pbmcgdG8gZnJlYWsgb3V0XG4gICAgLy8gYWJvdXQgdGhlIGtleXMgd2l0aCB2YWx1ZXMgdGhhdCBhcmUgYHVuZGVmaW5lZGAgKGV2ZW4gdGhvdWdoIHRoZXkgd291bGQgbmV2ZXIgYmUgSlNPTi5zdHJpbmdpZmllZClcbiAgICByZXR1cm4gbm9VbmRlZmluZWQoe1xuICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICBhcnRpZmFjdHM6IG1hcFZhbHVlcyhtYW5pZmVzdC5hcnRpZmFjdHMsIChhcnRpZmFjdCkgPT4ge1xuICAgICAgICBpZiAoYXJ0aWZhY3QudHlwZSAhPT0gYXNzZW1ibHkuQXJ0aWZhY3RUeXBlLkFXU19DTE9VREZPUk1BVElPTl9TVEFDSykge1xuICAgICAgICAgIHJldHVybiBhcnRpZmFjdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9VbmRlZmluZWQoe1xuICAgICAgICAgIC4uLmFydGlmYWN0LFxuICAgICAgICAgIG1ldGFkYXRhOiBtYXBWYWx1ZXMoYXJ0aWZhY3QubWV0YWRhdGEsIChtZXRhZGF0YUVudHJpZXMpID0+XG4gICAgICAgICAgICBtZXRhZGF0YUVudHJpZXMubWFwKChtZXRhZGF0YUVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtZXRhZGF0YUVudHJ5LnR5cGUgIT09IGFzc2VtYmx5LkFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuU1RBQ0tfVEFHUyB8fFxuICAgICAgICAgICAgICAgICFtZXRhZGF0YUVudHJ5LmRhdGFcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhRW50cnk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5tZXRhZGF0YUVudHJ5LFxuICAgICAgICAgICAgICAgIGRhdGE6IGZuKG1ldGFkYXRhRW50cnkuZGF0YSBhcyBhc3NlbWJseS5TdGFja1RhZ3NNZXRhZGF0YUVudHJ5KSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICksXG4gICAgICAgIH0gYXMgYXNzZW1ibHkuQXJ0aWZhY3RNYW5pZmVzdCk7XG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gIH1cbn1cblxudHlwZSBFbmRvZnVuY3RvcjxBPiA9ICh4OiBBKSA9PiBBO1xuXG5mdW5jdGlvbiBtYXBWYWx1ZXM8QSwgQj4oXG4gIHhzOiBSZWNvcmQ8c3RyaW5nLCBBPiB8IHVuZGVmaW5lZCxcbiAgZm46ICh4OiBBKSA9PiBCLFxuKTogUmVjb3JkPHN0cmluZywgQj4gfCB1bmRlZmluZWQge1xuICBpZiAoIXhzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXQ6IFJlY29yZDxzdHJpbmcsIEI+IHwgdW5kZWZpbmVkID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIHJldFtrXSA9IGZuKHYpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG5vVW5kZWZpbmVkPEEgZXh0ZW5kcyBvYmplY3Q+KHhzOiBBKTogQSB7XG4gIGNvbnN0IHJldDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldFtrXSA9IHY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHN0cmlwRW51bUVycm9ycyhlcnJvcnM6IGpzb25zY2hlbWEuVmFsaWRhdGlvbkVycm9yW10pIHtcbiAgcmV0dXJuIGVycm9ycy5maWx0ZXIoKGUpID0+IHR5cGVvZiBlLnNjaGVtYSA9PT0gJ3N0cmluZycgfHwgISgnZW51bScgaW4gZS5zY2hlbWEpKTtcbn1cbiJdfQ==
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qix5Q0FBeUM7QUFDekMsaUNBQWlDO0FBRWpDLDZDQUE2QztBQUc3Qyx1REFBdUQ7QUFDdkQsMERBQTBEO0FBRTFELGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsNkJBQTZCO0FBQ2hCLFFBQUEsZ0JBQWdCLEdBQVcsd0NBQXdDLENBQUM7QUFFakY7Ozs7OztHQU1HO0FBQ0gsbURBQW9EO0FBRXBELDhEQUErRDtBQUUvRCx3RUFBeUU7QUFFekUsNERBQTZEO0FBRTdEOztHQUVHO0FBQ0gseURBQTBEO0FBc0MxRDs7R0FFRztBQUNILE1BQXNCLFFBQVE7SUFDNUI7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsb0JBQW9CLENBQUMsUUFBbUMsRUFBRSxRQUFnQjtRQUN0RixRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsb0JBQW9CLENBQ2hDLFFBQWdCLEVBQ2hCLE9BQTZCO1FBRTdCLE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBOEIsRUFBRSxRQUFnQjtRQUM5RSxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBZ0I7UUFDOUMsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBNkIsRUFBRSxRQUFnQjtRQUM3RSxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBZ0I7UUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFM0QsMEVBQTBFO1FBQzFFLGdFQUFnRTtRQUNoRSx1RUFBdUU7UUFDdkUsdUVBQXVFO1FBQ3ZFLGlGQUFpRjtRQUNqRixPQUFPO1lBQ0wsR0FBRyxRQUFRO1lBQ1gsU0FBUyxFQUFHLFFBQWdCLENBQUMsU0FBUyxJQUFJLEVBQUU7U0FDN0MsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxPQUFPO1FBQ25CLE9BQU8sR0FBRyxjQUFjLENBQUMsUUFBUSxNQUFNLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFVBQVU7UUFDdEIsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztRQUNwQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBbUMsRUFBRSxRQUFnQjtRQUN0RSxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBZ0I7UUFDakMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLE1BQU0sQ0FBQyxRQUFRLENBQ3JCLFFBQWEsRUFDYixNQUF5QixFQUN6QixPQUE2QjtRQUU3QixTQUFTLFlBQVksQ0FBQyxPQUFlO1lBQ25DLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDekQsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QyxxR0FBcUc7UUFDckcsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RFLG9HQUFvRztZQUNwRyxNQUFNLFVBQVUsR0FBSSxRQUFzQyxDQUFDLGlCQUFpQixDQUFDO1lBQzdFLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNwQixJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLFVBQVUsR0FBRyxtQ0FBbUMsVUFBVSx5QkFBeUIsQ0FBQztZQUN0RixDQUFDO1lBRUQsb0ZBQW9GO1lBQ3BGLDJDQUEyQztZQUMzQyxNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsd0JBQWdCLHlDQUF5QyxZQUFZLG1CQUFtQixNQUFNLEdBQUcsVUFBVSxFQUFFLENBQ2pILENBQUM7UUFDSixDQUFDO1FBRUQsbUNBQW1DO1FBQ25DLE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRTtZQUNsRCxzREFBc0Q7WUFDdEQsWUFBWSxFQUFFLElBQUk7WUFFbEIsc0JBQXNCLEVBQUUsS0FBSztZQUM3QixtQkFBbUIsRUFBRSxRQUFRLENBQUMsbUNBQW1DO1NBQ2xFLENBQUMsQ0FBQztRQUVILElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDM0Isc0NBQXNDO1lBQ3RDLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRixDQUFDO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxZQUFZLENBQ3pCLFFBQWEsRUFDYixRQUFnQixFQUNoQixNQUF5QixFQUN6QixVQUE4QjtRQUU5QixJQUFJLFdBQVcsR0FBRztZQUNoQixHQUFHLFFBQVE7WUFDWCxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRTtZQUMzQixpQkFBaUIsRUFBRSxRQUFRLENBQUMsVUFBVSxFQUFFO1NBQ0wsQ0FBQztRQUN0QyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2QyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsV0FBVyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVPLE1BQU0sQ0FBQyxZQUFZLENBQ3pCLFFBQWdCLEVBQ2hCLE1BQXlCLEVBQ3pCLFVBQThCLEVBQzlCLE9BQTZCO1FBRTdCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxHQUFHLENBQUM7UUFDUixJQUFJLENBQUM7WUFDSCxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkc7SUFDSyxNQUFNLENBQUMsb0JBQW9CLENBQWEsUUFBbUM7UUFDakYsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQzthQUN0RCxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxZQUFZLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUV4RixLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7aUJBQ3ZELE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDZixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUVqRixLQUFLLE1BQU0sS0FBSyxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBZ0UsQ0FBQztnQkFDcEYsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQzdCLE1BQU0sQ0FBQyxHQUFRLEdBQUcsQ0FBQztvQkFDbkIsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ2YsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO3dCQUNkLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQztvQkFDZixDQUFDO29CQUNELElBQUksT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUNqQixDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7d0JBQ2xCLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDakIsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssTUFBTSxDQUFDLG1DQUFtQyxDQUVoRCxRQUFhLEVBQ2IsR0FBVyxFQUNYLE9BQTBCLEVBQzFCLFFBQTRCLEVBQzVCLElBQThCO1FBRTlCLElBQUksR0FBRyxLQUFLLDZCQUE2QixFQUFFLENBQUM7WUFDMUMsc0ZBQXNGO1lBQ3RGLGdIQUFnSDtZQUNoSCw0R0FBNEc7WUFDNUcsZ0RBQWdEO1lBQ2hELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsSUFBSSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxJQUFJLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNILENBQUM7O0FBalJILDRCQWtSQzs7O0FBRUQsU0FBUyxlQUFlLENBQUMsTUFBb0M7SUFDM0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIGpzb25zY2hlbWEgZnJvbSAnanNvbnNjaGVtYSc7XG5pbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCB0eXBlICogYXMgYXNzZXRzIGZyb20gJy4vYXNzZXRzJztcbmltcG9ydCAqIGFzIGFzc2VtYmx5IGZyb20gJy4vY2xvdWQtYXNzZW1ibHknO1xuaW1wb3J0IHR5cGUgKiBhcyBpbnRlZyBmcm9tICcuL2ludGVnLXRlc3RzJztcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuXG4vLyB0aGlzIHByZWZpeCBpcyB1c2VkIGJ5IHRoZSBDTEkgdG8gaWRlbnRpZnkgdGhpcyBzcGVjaWZpYyBlcnJvci5cbi8vIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBpbnN0cnVjdCB0aGUgdXNlciB0byB1cGdyYWRlIGhpcyBDTEkuXG4vLyBzZWUgZXhlYy50cyNjcmVhdGVBc3NlbWJseVxuZXhwb3J0IGNvbnN0IFZFUlNJT05fTUlTTUFUQ0g6IHN0cmluZyA9ICdDbG91ZCBhc3NlbWJseSBzY2hlbWEgdmVyc2lvbiBtaXNtYXRjaCc7XG5cbi8qKlxuICogQ0xJIHZlcnNpb24gaXMgY3JlYXRlZCBhdCBidWlsZCBhbmQgcmVsZWFzZSB0aW1lXG4gKlxuICogSXQgbmVlZHMgdG8gYmUgLmdpdGlnbm9yZSdkLCBvdGhlcndpc2UgdGhlIHByb2plbiAnbm8gdW5jb21taXR0ZWRcbiAqIGNoYW5nZXMnIHNlbGYtY2hlY2sgd2lsbCBmYWlsLCB3aGljaCBtZWFucyBpdCBuZWVkcyB0byBiZSBnZW5lcmF0ZWRcbiAqIGF0IGJ1aWxkIHRpbWUgaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0LlxuICovXG5pbXBvcnQgQ0xJX1ZFUlNJT04gPSByZXF1aXJlKCcuLi9jbGktdmVyc2lvbi5qc29uJyk7XG5cbmltcG9ydCBBU1NFVFNfU0NIRU1BID0gcmVxdWlyZSgnLi4vc2NoZW1hL2Fzc2V0cy5zY2hlbWEuanNvbicpO1xuXG5pbXBvcnQgQVNTRU1CTFlfU0NIRU1BID0gcmVxdWlyZSgnLi4vc2NoZW1hL2Nsb3VkLWFzc2VtYmx5LnNjaGVtYS5qc29uJyk7XG5cbmltcG9ydCBJTlRFR19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvaW50ZWcuc2NoZW1hLmpzb24nKTtcblxuLyoqXG4gKiBWZXJzaW9uIGlzIHNoYXJlZCBmb3IgYm90aCBtYW5pZmVzdHNcbiAqL1xuaW1wb3J0IFNDSEVNQV9WRVJTSU9OID0gcmVxdWlyZSgnLi4vc2NoZW1hL3ZlcnNpb24uanNvbicpO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBsb2FkTWFuaWZlc3Qgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZE1hbmlmZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTa2lwIHRoZSB2ZXJzaW9uIGNoZWNrXG4gICAqXG4gICAqIFRoaXMgbWVhbnMgeW91IG1heSByZWFkIGEgbmV3ZXIgY2xvdWQgYXNzZW1ibHkgdGhhbiB0aGUgQ1ggQVBJIGlzIGRlc2lnbmVkXG4gICAqIHRvIHN1cHBvcnQsIGFuZCB5b3VyIGFwcGxpY2F0aW9uIG1heSBub3QgYmUgYXdhcmUgb2YgYWxsIGZlYXR1cmVzIHRoYXQgaW4gdXNlXG4gICAqIGluIHRoZSBDbG91ZCBBc3NlbWJseS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNraXBWZXJzaW9uQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTa2lwIGVudW0gY2hlY2tzXG4gICAqXG4gICAqIFRoaXMgbWVhbnMgeW91IG1heSByZWFkIGVudW0gdmFsdWVzIHlvdSBkb24ndCBrbm93IGFib3V0IHlldC4gTWFrZSBzdXJlIHRvIGFsd2F5c1xuICAgKiBjaGVjayB0aGUgdmFsdWVzIG9mIGVudW1zIHlvdSBlbmNvdW50ZXIgaW4gdGhlIG1hbmlmZXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcEVudW1DaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvcG9sb2dpY2FsbHkgc29ydCBhbGwgYXJ0aWZhY3RzXG4gICAqXG4gICAqIFRoaXMgcGFyYW1ldGVyIGlzIG9ubHkgcmVzcGVjdGVkIGJ5IHRoZSBjb25zdHJ1Y3RvciBvZiBgQ2xvdWRBc3NlbWJseWAuIFRoZVxuICAgKiBwcm9wZXJ0eSBsaXZlcyBoZXJlIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB0b3BvU29ydD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvdG9jb2wgdXRpbGl0eSBjbGFzcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgc2F2ZXMgdGhlIGNsb3VkIGFzc2VtYmx5IG1hbmlmZXN0IHRvIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBvdXRwdXQgZmlsZSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlQXNzZW1ibHlNYW5pZmVzdChtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIEFTU0VNQkxZX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhbmQgdmFsaWRhdGVzIHRoZSBjbG91ZCBhc3NlbWJseSBtYW5pZmVzdCBmcm9tIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIHBhdGggdG8gdGhlIG1hbmlmZXN0IGZpbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWRBc3NlbWJseU1hbmlmZXN0KFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IExvYWRNYW5pZmVzdE9wdGlvbnMsXG4gICk6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3Qge1xuICAgIHJldHVybiBNYW5pZmVzdC5sb2FkTWFuaWZlc3QoZmlsZVBhdGgsIEFTU0VNQkxZX1NDSEVNQSwgTWFuaWZlc3QucGF0Y2hTdGFja1RhZ3NPblJlYWQsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgc2F2ZXMgdGhlIGFzc2V0IG1hbmlmZXN0IHRvIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBvdXRwdXQgZmlsZSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlQXNzZXRNYW5pZmVzdChtYW5pZmVzdDogYXNzZXRzLkFzc2V0TWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICBNYW5pZmVzdC5zYXZlTWFuaWZlc3QobWFuaWZlc3QsIGZpbGVQYXRoLCBBU1NFVFNfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGFzc2V0IG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEFzc2V0TWFuaWZlc3QoZmlsZVBhdGg6IHN0cmluZyk6IGFzc2V0cy5Bc3NldE1hbmlmZXN0IHtcbiAgICByZXR1cm4gTWFuaWZlc3QubG9hZE1hbmlmZXN0KGZpbGVQYXRoLCBBU1NFVFNfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIHNhdmVzIHRoZSBpbnRlZyBtYW5pZmVzdCB0byBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gbWFuaWZlc3QgLSBtYW5pZmVzdC5cbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gb3V0cHV0IGZpbGUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZUludGVnTWFuaWZlc3QobWFuaWZlc3Q6IGludGVnLkludGVnTWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICBNYW5pZmVzdC5zYXZlTWFuaWZlc3QobWFuaWZlc3QsIGZpbGVQYXRoLCBJTlRFR19TQ0hFTUEpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYW5kIHZhbGlkYXRlcyB0aGUgaW50ZWcgbWFuaWZlc3QgZnJvbSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkSW50ZWdNYW5pZmVzdChmaWxlUGF0aDogc3RyaW5nKTogaW50ZWcuSW50ZWdNYW5pZmVzdCB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSB0aGlzLmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgSU5URUdfU0NIRU1BKTtcblxuICAgIC8vIEFkZGluZyB0eXBpbmcgdG8gYHZhbGlkYXRlKClgIGxlZCB0byBgbG9hZE1hbmlmZXN0KClgIHRvIHByb3Blcmx5IGluZmVyXG4gICAgLy8gaXRzIHJldHVybiB0eXBlLCB3aGljaCBpbmRpY2F0ZWQgdGhhdCB0aGUgcmV0dXJuIHR5cGUgb2YgdGhpc1xuICAgIC8vIGZ1bmN0aW9uIG1heSBiZSBhIGxpZS4gSSBjb3VsZCBjaGFuZ2UgdGhlIHNjaGVtYSB0byBtYWtlIGB0ZXN0Q2FzZXNgXG4gICAgLy8gb3B0aW9uYWwsIGJ1dCB0aGF0IHdpbGwgYnVtcCB0aGUgbWFqb3IgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UgYW5kIElcbiAgICAvLyBkb24ndCB3YW50IHRvIGRvIHRoYXQuIFNvIGluc3RlYWQsIGp1c3QgbWFrZSBzdXJlIGB0ZXN0Q2FzZXNgIGlzIGFsd2F5cyB0aGVyZS5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICB0ZXN0Q2FzZXM6IChtYW5pZmVzdCBhcyBhbnkpLnRlc3RDYXNlcyA/PyBbXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHRoZSBjdXJyZW50IHNjaGVtYSB2ZXJzaW9uIG51bWJlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtTQ0hFTUFfVkVSU0lPTi5yZXZpc2lvbn0uMC4wYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIENMSSB2ZXJzaW9uIHRoYXQgc3VwcG9ydHMgdGhpcyBDbG91ZCBBc3NlbWJseSBTY2hlbWEgdmVyc2lvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjbGlWZXJzaW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdmVyc2lvbiA9IENMSV9WRVJTSU9OLnZlcnNpb247XG4gICAgcmV0dXJuIHZlcnNpb24gPyB2ZXJzaW9uIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWRcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBzYXZlQXNzZW1ibHlNYW5pZmVzdCgpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlKG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZUFzc2VtYmx5TWFuaWZlc3QobWFuaWZlc3QsIGZpbGVQYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgbG9hZEFzc2VtYmx5TWFuaWZlc3QoKWBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZChmaWxlUGF0aDogc3RyaW5nKTogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCB7XG4gICAgcmV0dXJuIHRoaXMubG9hZEFzc2VtYmx5TWFuaWZlc3QoZmlsZVBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdmFsaWRhdGUoXG4gICAgbWFuaWZlc3Q6IGFueSxcbiAgICBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLFxuICAgIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zLFxuICApOiBhc3NlcnRzIG1hbmlmZXN0IGlzIGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3Qge1xuICAgIGZ1bmN0aW9uIHBhcnNlVmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHZlciA9IHNlbXZlci52YWxpZCh2ZXJzaW9uKTtcbiAgICAgIGlmICghdmVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzZW12ZXIgc3RyaW5nOiBcIiR7dmVyc2lvbn1cImApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZlcjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXhTdXBwb3J0ZWQgPSBzZW12ZXIubWFqb3IocGFyc2VWZXJzaW9uKE1hbmlmZXN0LnZlcnNpb24oKSkpO1xuICAgIGNvbnN0IGFjdHVhbCA9IHBhcnNlVmVyc2lvbihtYW5pZmVzdC52ZXJzaW9uKTtcblxuICAgIC8vIGZpcnN0IHZhbGlkYXRlIHRoZSB2ZXJzaW9uIHNob3VsZCBiZSBhY2NlcHRlZC4gYWxsIHZlcnNpb25zIHdpdGhpbiB0aGUgc2FtZSBtaW5vciB2ZXJzaW9uIGFyZSBmaW5lXG4gICAgaWYgKG1heFN1cHBvcnRlZCA8IHNlbXZlci5tYWpvcihhY3R1YWwpICYmICFvcHRpb25zPy5za2lwVmVyc2lvbkNoZWNrKSB7XG4gICAgICAvLyBJZiB3ZSBoYXZlIGEgbW9yZSBzcGVjaWZpYyBlcnJvciB0byB0aHJvdyB0aGFuIHRoZSBnZW5lcmljIG9uZSBiZWxvdywgbWFrZSBzdXJlIHRvIGFkZCB0aGF0IGluZm8uXG4gICAgICBjb25zdCBjbGlWZXJzaW9uID0gKG1hbmlmZXN0IGFzIGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QpLm1pbmltdW1DbGlWZXJzaW9uO1xuICAgICAgbGV0IGNsaVdhcm5pbmcgPSAnJztcbiAgICAgIGlmIChjbGlWZXJzaW9uKSB7XG4gICAgICAgIGNsaVdhcm5pbmcgPSBgLiBZb3UgbmVlZCBhdCBsZWFzdCBDTEkgdmVyc2lvbiAke2NsaVZlcnNpb259IHRvIHJlYWQgdGhpcyBtYW5pZmVzdC5gO1xuICAgICAgfVxuXG4gICAgICAvLyB3ZSB1c2UgYSB3ZWxsIGtub3duIGVycm9yIHByZWZpeCBzbyB0aGF0IHRoZSBDTEkgY2FuIGlkZW50aWZ5IHRoaXMgc3BlY2lmaWMgZXJyb3JcbiAgICAgIC8vIGFuZCBwcmludCBzb21lIG1vcmUgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYCR7VkVSU0lPTl9NSVNNQVRDSH06IE1heGltdW0gc2NoZW1hIHZlcnNpb24gc3VwcG9ydGVkIGlzICR7bWF4U3VwcG9ydGVkfS54LngsIGJ1dCBmb3VuZCAke2FjdHVhbH0ke2NsaVdhcm5pbmd9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gbm93IHZhbGlkYXRlIHRoZSBmb3JtYXQgaXMgZ29vZC5cbiAgICBjb25zdCB2YWxpZGF0b3IgPSBuZXcganNvbnNjaGVtYS5WYWxpZGF0b3IoKTtcbiAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0b3IudmFsaWRhdGUobWFuaWZlc3QsIHNjaGVtYSwge1xuICAgICAgLy8gZG9lcyBleGlzdCBidXQgaXMgbm90IGluIHRoZSBUeXBlU2NyaXB0IGRlZmluaXRpb25zXG4gICAgICBuZXN0ZWRFcnJvcnM6IHRydWUsXG5cbiAgICAgIGFsbG93VW5rbm93bkF0dHJpYnV0ZXM6IGZhbHNlLFxuICAgICAgcHJlVmFsaWRhdGVQcm9wZXJ0eTogTWFuaWZlc3QudmFsaWRhdGVBc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBsZXQgZXJyb3JzID0gcmVzdWx0LmVycm9ycztcbiAgICBpZiAob3B0aW9ucz8uc2tpcEVudW1DaGVjaykge1xuICAgICAgLy8gRW51bSB2YWxpZGF0aW9ucyBhcmVuJ3QgdXNlZnVsIHdoZW5cbiAgICAgIGVycm9ycyA9IHN0cmlwRW51bUVycm9ycyhlcnJvcnMpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFzc2VtYmx5IG1hbmlmZXN0OlxcbiR7ZXJyb3JzLm1hcCgoZSkgPT4gZS5zdGFjaykuam9pbignXFxuJyl9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgc2F2ZU1hbmlmZXN0KFxuICAgIG1hbmlmZXN0OiBhbnksXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLFxuICAgIHByZXByb2Nlc3M/OiAob2JqOiBhbnkpID0+IGFueSxcbiAgKSB7XG4gICAgbGV0IHdpdGhWZXJzaW9uID0ge1xuICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICB2ZXJzaW9uOiBNYW5pZmVzdC52ZXJzaW9uKCksXG4gICAgICBtaW5pbXVtQ2xpVmVyc2lvbjogTWFuaWZlc3QuY2xpVmVyc2lvbigpLFxuICAgIH0gc2F0aXNmaWVzIGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3Q7XG4gICAgTWFuaWZlc3QudmFsaWRhdGUod2l0aFZlcnNpb24sIHNjaGVtYSk7XG4gICAgaWYgKHByZXByb2Nlc3MpIHtcbiAgICAgIHdpdGhWZXJzaW9uID0gcHJlcHJvY2Vzcyh3aXRoVmVyc2lvbik7XG4gICAgfVxuICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHdpdGhWZXJzaW9uLCB1bmRlZmluZWQsIDIpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGxvYWRNYW5pZmVzdChcbiAgICBmaWxlUGF0aDogc3RyaW5nLFxuICAgIHNjaGVtYToganNvbnNjaGVtYS5TY2hlbWEsXG4gICAgcHJlcHJvY2Vzcz86IChvYmo6IGFueSkgPT4gYW55LFxuICAgIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zLFxuICApIHtcbiAgICBjb25zdCBjb250ZW50cyA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbiAgICBsZXQgb2JqO1xuICAgIHRyeSB7XG4gICAgICBvYmogPSBKU09OLnBhcnNlKGNvbnRlbnRzKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtlLm1lc3NhZ2V9LCB3aGlsZSBwYXJzaW5nICR7SlNPTi5zdHJpbmdpZnkoY29udGVudHMpfWApO1xuICAgIH1cbiAgICBpZiAocHJlcHJvY2Vzcykge1xuICAgICAgb2JqID0gcHJlcHJvY2VzcyhvYmopO1xuICAgIH1cbiAgICBNYW5pZmVzdC52YWxpZGF0ZShvYmosIHNjaGVtYSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXggdGhlIGNhc2luZyBvZiBzdGFjayB0YWdzIGVudHJpZXNcbiAgICpcbiAgICogQXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBDREsgd2UgdXNlZCB0byBlbWl0IHN0YWNrIHRhZ3MgYXMgYW4gb2JqZWN0IHdpdGhcbiAgICogYHsgS2V5LCBWYWx1ZSB9YCBrZXlzOyB0aGlzIGhhZCB0aGUgXCJhZHZhbnRhZ2VcIiB0aGF0IHdlIGNvdWxkIHN0aWNrIHRob3NlXG4gICAqIHRhZ3MgZGlyZWN0bHkgaW50byB0aGUgYENyZWF0ZUNoYW5nZVNldGAgY2FsbC5cbiAgICpcbiAgICogVGhlbiB3ZSBsYXRlciBvbiB1c2VkIGpzaWkgb24gdGhlIGFzc2VtYmx5IHNjaGVtYSBhbmQgd2Ugd2VyZSBmb3JjZWQgdG8gdHlwZVxuICAgKiB0aGUgaW4tbWVtb3J5IG9iamVjdHMgYXMgYHsga2V5LCB2YWx1ZSB9YCB3aXRoIGxvd2VyY2FzZSBsZXR0ZXJzLiBOb3cgdGhlXG4gICAqIG9iamVjdHMgaGF2ZSBhIGRpZmZlcmVudCBvbi1kaXNrIGFuZCBpbi1tZW1vcnkgZm9ybWF0LCBhbmQgd2UgbmVlZCB0byBjb252ZXJ0XG4gICAqIGJldHdlZW4gdGhlbS5cbiAgICpcbiAgICogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIHVzZWQgdG8gY29udmVydCBsb3dlcmNhc2UgaW4tbWVtb3J5XG4gICAqIHRvIHVwcGVyY2FzZSBvbi1kaXNrIHZhcmlhbnQgdW50aWwgdmVyeSByZWNlbnRseS4gVGhpcyBpcyBub3cgdW5uZWNlc3NhcnksXG4gICAqIHNpbmNlIG5vIG9mZmljaWFsbHkgc3VwcG9ydGVkIENESyB0b29scyByZWFkIHRoZSBzdGFjayB0YWdzIGZyb20gdGhlXG4gICAqIG1ldGFkYXRhOyB0aGUgQ0xJIGFuZCB0b29sa2l0IGxpYnJhcnkgcmVhZCBzdGFjayB0YWdzIGZyb20gdGhlIGFydGlmYWN0XG4gICAqIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIFNvIGFsdGhvdWdoIHdlIGRvbid0IGVtaXQgdXBwZXJjYXNlIHN0YWNrIHRhZyBvYmplY3RzIGFueW1vcmUsIHdlIG1pZ2h0IHN0aWxsIHJlYWRcbiAgICogbWFuaWZlc3RzIHRoYXQgaGF2ZSB0aGVtLiBCZWNhdXNlIHRoZSBtYW5pZmVzdCB3ZSByZWFkIG11c3QgcGFzcyBKU09OIFNjaGVtYVxuICAgKiB2YWxpZGF0aW9uICh3aGljaCBleHBlY3RzIGxvd2VyY2FzZSB0YWcgb2JqZWN0cyksIHdlIGhhdmUgdG8gZml4IHRoZSBjYXNpbmdcbiAgICogb2YgdGhlc2Ugb2JqZWN0cyBhZnRlciByZWFkaW5nIGZyb20gZGlzayBhbmQgYmVmb3JlIHZhbGlkYXRpbmcuXG4gICAqXG4gICAqIFRoYXQncyB3aGF0IHRoaXMgZnVuY3Rpb24gZG9lcy5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHBhdGNoU3RhY2tUYWdzT25SZWFkKHRoaXM6IHZvaWQsIG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0KSB7XG4gICAgY29uc3QgYXJ0aWZhY3RzID0gT2JqZWN0LnZhbHVlcyhtYW5pZmVzdC5hcnRpZmFjdHMgPz8ge30pXG4gICAgICAuZmlsdGVyKGFydGlmYWN0ID0+IGFydGlmYWN0LnR5cGUgPT09IGFzc2VtYmx5LkFydGlmYWN0VHlwZS5BV1NfQ0xPVURGT1JNQVRJT05fU1RBQ0spO1xuXG4gICAgZm9yIChjb25zdCBhcnRpZmFjdCBvZiBhcnRpZmFjdHMpIHtcbiAgICAgIGNvbnN0IHRhZ01ldGFkYXRhID0gT2JqZWN0LnZhbHVlcyhhcnRpZmFjdC5tZXRhZGF0YSA/PyB7fSlcbiAgICAgICAgLmZsYXRNYXAoeCA9PiB4KVxuICAgICAgICAuZmlsdGVyKGVudHJ5ID0+IGVudHJ5LnR5cGUgPT09IGFzc2VtYmx5LkFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuU1RBQ0tfVEFHUyk7XG5cbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgdGFnTWV0YWRhdGEpIHtcbiAgICAgICAgY29uc3QgdGFncyA9IGVudHJ5LmRhdGEgYXMgdW5rbm93biBhcyBhc3NlbWJseS5TdGFja1RhZ3NNZXRhZGF0YUVudHJ5W10gfCB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAoY29uc3QgdGFnIG9mIHRhZ3MgPz8gW10pIHtcbiAgICAgICAgICBjb25zdCB0OiBhbnkgPSB0YWc7XG4gICAgICAgICAgaWYgKCdLZXknIGluIHQpIHtcbiAgICAgICAgICAgIHQua2V5ID0gdC5LZXk7XG4gICAgICAgICAgICBkZWxldGUgdC5LZXk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgnVmFsdWUnIGluIHQpIHtcbiAgICAgICAgICAgIHQudmFsdWUgPSB0LlZhbHVlO1xuICAgICAgICAgICAgZGVsZXRlIHQuVmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hbmlmZXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IGBhc3N1bWVSb2xlQWRkaXRpb25hbE9wdGlvbnNgIGRvZXNuJ3QgY29udGFpbiBub3IgYEV4dGVybmFsSWRgIG5laXRoZXIgYFJvbGVBcm5gLCBhcyB0aGV5XG4gICAqIHNob3VsZCBoYXZlIGRlZGljYXRlZCBwcm9wZXJ0aWVzIHByZWNlZGluZyB0aGlzIChlLmcgYGFzc3VtZVJvbGVBcm5gIGFuZCBgYXNzdW1lUm9sZUV4dGVybmFsSWRgKS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHZhbGlkYXRlQXNzdW1lUm9sZUFkZGl0aW9uYWxPcHRpb25zKFxuICAgIHRoaXM6IHZvaWQsXG4gICAgaW5zdGFuY2U6IGFueSxcbiAgICBrZXk6IHN0cmluZyxcbiAgICBfc2NoZW1hOiBqc29uc2NoZW1hLlNjaGVtYSxcbiAgICBfb3B0aW9uczoganNvbnNjaGVtYS5PcHRpb25zLFxuICAgIF9jdHg6IGpzb25zY2hlbWEuU2NoZW1hQ29udGV4dCxcbiAgKSB7XG4gICAgaWYgKGtleSAhPT0gJ2Fzc3VtZVJvbGVBZGRpdGlvbmFsT3B0aW9ucycpIHtcbiAgICAgIC8vIG5vdGUgdGhhdCB0aGlzIG1lYW5zIHRoYXQgaWYgd2UgaGFwcGVuIHRvIGhhdmUgYSBwcm9wZXJ0eSBuYW1lZCBsaWtlIHRoaXMsIGJ1dCB0aGF0XG4gICAgICAvLyBkb2VzIHdhbnQgdG8gYWxsb3cgJ1JvbGVBcm4nIG9yICdFeHRlcm5hbElkJywgdGhpcyBjb2RlIHdpbGwgaGF2ZSB0byBjaGFuZ2UgdG8gY29uc2lkZXIgdGhlIGZ1bGwgc2NoZW1hIHBhdGguXG4gICAgICAvLyBJIGRlY2lkZWQgdG8gbWFrZSB0aGlzIGxlc3MgZ3JhbnVsYXIgZm9yIG5vdyBvbiBwdXJwb3NlIGJlY2F1c2UgaXQgZml0cyBvdXIgbmVlZHMgYW5kIGF2b2lkcyBoYXZpbmcgbWVzc3lcbiAgICAgIC8vIHZhbGlkYXRpb24gbG9naWMgZHVlIHRvIHZhcmlvdXMgc2NoZW1hIHBhdGhzLlxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc3VtZVJvbGVPcHRpb25zID0gaW5zdGFuY2Vba2V5XTtcbiAgICBpZiAoYXNzdW1lUm9sZU9wdGlvbnM/LlJvbGVBcm4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUm9sZUFybiBpcyBub3QgYWxsb3dlZCBpbnNpZGUgJyR7a2V5fSdgKTtcbiAgICB9XG4gICAgaWYgKGFzc3VtZVJvbGVPcHRpb25zPy5FeHRlcm5hbElkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4dGVybmFsSWQgaXMgbm90IGFsbG93ZWQgaW5zaWRlICcke2tleX0nYCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHN0cmlwRW51bUVycm9ycyhlcnJvcnM6IGpzb25zY2hlbWEuVmFsaWRhdGlvbkVycm9yW10pIHtcbiAgcmV0dXJuIGVycm9ycy5maWx0ZXIoKGUpID0+IHR5cGVvZiBlLnNjaGVtYSA9PT0gJ3N0cmluZycgfHwgISgnZW51bScgaW4gZS5zY2hlbWEpKTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -90,7 +90,7 @@
90
90
  "publishConfig": {
91
91
  "access": "public"
92
92
  },
93
- "version": "49.4.0",
93
+ "version": "50.1.0",
94
94
  "types": "lib/index.d.ts",
95
95
  "stability": "stable",
96
96
  "jsii": {
@@ -351,7 +351,7 @@
351
351
  }
352
352
  },
353
353
  "tags": {
354
- "description": "Values for CloudFormation stack tags that should be passed when the stack is deployed. (Default - No tags)",
354
+ "description": "Values for CloudFormation stack tags that should be passed when the stack is deployed.\n\nN.B.: Tags are also written to stack metadata, under the path of the Stack\nconstruct. Only in CDK CLI v1 are those tags found in metadata used for\nactual deployments; in all stable versions of CDK only the stack tags\ndirectly found in the `tags` property of `AwsCloudFormationStack` artifact\n(i.e., this property) are used. (Default - No tags)",
355
355
  "type": "object",
356
356
  "additionalProperties": {
357
357
  "type": "string"
@@ -1093,6 +1093,10 @@
1093
1093
  "description": "Identifier of the resource to look up using `GetResource`.\n\nSpecifying exactIdentifier will return exactly one result, or throw an error\nunless `ignoreErrorOnMissingContext` is set. (Default - Either exactIdentifier or propertyMatch should be specified.)",
1094
1094
  "type": "string"
1095
1095
  },
1096
+ "resourceModel": {
1097
+ "description": "The resource model to use to select the resources, using `ListResources`..\n\nThis is needed for sub-resources where the parent Arn is required.\n\nSee https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/resource-operations-list.html#resource-operations-list-containers (Default - no resource Model is provided)",
1098
+ "$ref": "#/definitions/Record%3Cstring%2Cunknown%3E"
1099
+ },
1096
1100
  "propertyMatch": {
1097
1101
  "description": "Returns any resources matching these properties, using `ListResources`.\n\nBy default, specifying propertyMatch will successfully return 0 or more\nresults. To throw an error if the number of results is unexpected (and\nprevent the query results from being committed to context), specify\n`expectedMatchCount`.\n\n## Notes on property completeness\n\nCloudControl API's `ListResources` may return fewer properties than\n`GetResource` would, depending on the resource implementation.\n\nThe resources that `propertyMatch` matches against will *only ever* be the\nproperties returned by the `ListResources` call. (Default - Either exactIdentifier or propertyMatch should be specified.)",
1098
1102
  "$ref": "#/definitions/Record%3Cstring%2Cunknown%3E"
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaHash": "e20bc1d07ab1a891372f40a6d2d8a8eb8e12f828b2b5b90d86b270dcb881ad74",
2
+ "schemaHash": "1b06659a117c44714e2e52854571bb1b45b765b277bb1c208bc4b7ea01f6a684",
3
3
  "$comment": "Do not hold back the version on additions: jsonschema validation of the manifest by the consumer will trigger errors on unexpected fields.",
4
- "revision": 49
4
+ "revision": 50
5
5
  }