@aws-cdk/aws-s3tables-alpha 2.235.0-alpha.0 → 2.236.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +49 -49
- package/.jsii.tabl.json.gz +0 -0
- package/awslint.json +4 -1
- package/lib/namespace.js +1 -1
- package/lib/table-bucket-policy.js +1 -1
- package/lib/table-bucket.d.ts +8 -8
- package/lib/table-bucket.js +32 -22
- package/lib/table-policy.js +1 -1
- package/lib/table.js +1 -1
- package/package.json +6 -6
package/.jsii
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"url": "https://aws.amazon.com"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"aws-cdk-lib": "^2.
|
|
11
|
+
"aws-cdk-lib": "^2.236.0",
|
|
12
12
|
"constructs": "^10.0.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencyClosure": {
|
|
@@ -8470,7 +8470,7 @@
|
|
|
8470
8470
|
"stability": "experimental"
|
|
8471
8471
|
},
|
|
8472
8472
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
8473
|
-
"jsiiVersion": "5.9.
|
|
8473
|
+
"jsiiVersion": "5.9.23 (build 29252a0)",
|
|
8474
8474
|
"keywords": [
|
|
8475
8475
|
"aws",
|
|
8476
8476
|
"cdk",
|
|
@@ -8870,7 +8870,7 @@
|
|
|
8870
8870
|
"kind": "interface",
|
|
8871
8871
|
"locationInModule": {
|
|
8872
8872
|
"filename": "lib/table-bucket.ts",
|
|
8873
|
-
"line":
|
|
8873
|
+
"line": 17
|
|
8874
8874
|
},
|
|
8875
8875
|
"methods": [
|
|
8876
8876
|
{
|
|
@@ -8883,7 +8883,7 @@
|
|
|
8883
8883
|
},
|
|
8884
8884
|
"locationInModule": {
|
|
8885
8885
|
"filename": "lib/table-bucket.ts",
|
|
8886
|
-
"line":
|
|
8886
|
+
"line": 66
|
|
8887
8887
|
},
|
|
8888
8888
|
"name": "addToResourcePolicy",
|
|
8889
8889
|
"parameters": [
|
|
@@ -8912,7 +8912,7 @@
|
|
|
8912
8912
|
},
|
|
8913
8913
|
"locationInModule": {
|
|
8914
8914
|
"filename": "lib/table-bucket.ts",
|
|
8915
|
-
"line":
|
|
8915
|
+
"line": 78
|
|
8916
8916
|
},
|
|
8917
8917
|
"name": "grantRead",
|
|
8918
8918
|
"parameters": [
|
|
@@ -8950,7 +8950,7 @@
|
|
|
8950
8950
|
},
|
|
8951
8951
|
"locationInModule": {
|
|
8952
8952
|
"filename": "lib/table-bucket.ts",
|
|
8953
|
-
"line":
|
|
8953
|
+
"line": 102
|
|
8954
8954
|
},
|
|
8955
8955
|
"name": "grantReadWrite",
|
|
8956
8956
|
"parameters": [
|
|
@@ -8988,7 +8988,7 @@
|
|
|
8988
8988
|
},
|
|
8989
8989
|
"locationInModule": {
|
|
8990
8990
|
"filename": "lib/table-bucket.ts",
|
|
8991
|
-
"line":
|
|
8991
|
+
"line": 90
|
|
8992
8992
|
},
|
|
8993
8993
|
"name": "grantWrite",
|
|
8994
8994
|
"parameters": [
|
|
@@ -9032,7 +9032,7 @@
|
|
|
9032
9032
|
"immutable": true,
|
|
9033
9033
|
"locationInModule": {
|
|
9034
9034
|
"filename": "lib/table-bucket.ts",
|
|
9035
|
-
"line":
|
|
9035
|
+
"line": 22
|
|
9036
9036
|
},
|
|
9037
9037
|
"name": "tableBucketArn",
|
|
9038
9038
|
"type": {
|
|
@@ -9051,7 +9051,7 @@
|
|
|
9051
9051
|
"immutable": true,
|
|
9052
9052
|
"locationInModule": {
|
|
9053
9053
|
"filename": "lib/table-bucket.ts",
|
|
9054
|
-
"line":
|
|
9054
|
+
"line": 28
|
|
9055
9055
|
},
|
|
9056
9056
|
"name": "tableBucketName",
|
|
9057
9057
|
"type": {
|
|
@@ -9070,7 +9070,7 @@
|
|
|
9070
9070
|
"immutable": true,
|
|
9071
9071
|
"locationInModule": {
|
|
9072
9072
|
"filename": "lib/table-bucket.ts",
|
|
9073
|
-
"line":
|
|
9073
|
+
"line": 34
|
|
9074
9074
|
},
|
|
9075
9075
|
"name": "account",
|
|
9076
9076
|
"optional": true,
|
|
@@ -9087,7 +9087,7 @@
|
|
|
9087
9087
|
"immutable": true,
|
|
9088
9088
|
"locationInModule": {
|
|
9089
9089
|
"filename": "lib/table-bucket.ts",
|
|
9090
|
-
"line":
|
|
9090
|
+
"line": 45
|
|
9091
9091
|
},
|
|
9092
9092
|
"name": "encryptionKey",
|
|
9093
9093
|
"optional": true,
|
|
@@ -9107,7 +9107,7 @@
|
|
|
9107
9107
|
"immutable": true,
|
|
9108
9108
|
"locationInModule": {
|
|
9109
9109
|
"filename": "lib/table-bucket.ts",
|
|
9110
|
-
"line":
|
|
9110
|
+
"line": 40
|
|
9111
9111
|
},
|
|
9112
9112
|
"name": "region",
|
|
9113
9113
|
"optional": true,
|
|
@@ -10105,7 +10105,7 @@
|
|
|
10105
10105
|
},
|
|
10106
10106
|
"locationInModule": {
|
|
10107
10107
|
"filename": "lib/table-bucket.ts",
|
|
10108
|
-
"line":
|
|
10108
|
+
"line": 580
|
|
10109
10109
|
},
|
|
10110
10110
|
"parameters": [
|
|
10111
10111
|
{
|
|
@@ -10134,7 +10134,7 @@
|
|
|
10134
10134
|
"kind": "class",
|
|
10135
10135
|
"locationInModule": {
|
|
10136
10136
|
"filename": "lib/table-bucket.ts",
|
|
10137
|
-
"line":
|
|
10137
|
+
"line": 408
|
|
10138
10138
|
},
|
|
10139
10139
|
"methods": [
|
|
10140
10140
|
{
|
|
@@ -10144,7 +10144,7 @@
|
|
|
10144
10144
|
},
|
|
10145
10145
|
"locationInModule": {
|
|
10146
10146
|
"filename": "lib/table-bucket.ts",
|
|
10147
|
-
"line":
|
|
10147
|
+
"line": 420
|
|
10148
10148
|
},
|
|
10149
10149
|
"name": "fromTableBucketArn",
|
|
10150
10150
|
"parameters": [
|
|
@@ -10190,7 +10190,7 @@
|
|
|
10190
10190
|
},
|
|
10191
10191
|
"locationInModule": {
|
|
10192
10192
|
"filename": "lib/table-bucket.ts",
|
|
10193
|
-
"line":
|
|
10193
|
+
"line": 431
|
|
10194
10194
|
},
|
|
10195
10195
|
"name": "fromTableBucketAttributes",
|
|
10196
10196
|
"parameters": [
|
|
@@ -10237,7 +10237,7 @@
|
|
|
10237
10237
|
},
|
|
10238
10238
|
"locationInModule": {
|
|
10239
10239
|
"filename": "lib/table-bucket.ts",
|
|
10240
|
-
"line":
|
|
10240
|
+
"line": 467
|
|
10241
10241
|
},
|
|
10242
10242
|
"name": "validateTableBucketName",
|
|
10243
10243
|
"parameters": [
|
|
@@ -10261,7 +10261,7 @@
|
|
|
10261
10261
|
},
|
|
10262
10262
|
"locationInModule": {
|
|
10263
10263
|
"filename": "lib/table-bucket.ts",
|
|
10264
|
-
"line":
|
|
10264
|
+
"line": 523
|
|
10265
10265
|
},
|
|
10266
10266
|
"name": "validateUnreferencedFileRemoval",
|
|
10267
10267
|
"parameters": [
|
|
@@ -10287,7 +10287,7 @@
|
|
|
10287
10287
|
},
|
|
10288
10288
|
"locationInModule": {
|
|
10289
10289
|
"filename": "lib/table-bucket.ts",
|
|
10290
|
-
"line":
|
|
10290
|
+
"line": 205
|
|
10291
10291
|
},
|
|
10292
10292
|
"name": "addToResourcePolicy",
|
|
10293
10293
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITableBucket",
|
|
@@ -10315,7 +10315,7 @@
|
|
|
10315
10315
|
},
|
|
10316
10316
|
"locationInModule": {
|
|
10317
10317
|
"filename": "lib/table-bucket.ts",
|
|
10318
|
-
"line":
|
|
10318
|
+
"line": 225
|
|
10319
10319
|
},
|
|
10320
10320
|
"name": "grantRead",
|
|
10321
10321
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITableBucket",
|
|
@@ -10346,7 +10346,7 @@
|
|
|
10346
10346
|
},
|
|
10347
10347
|
"locationInModule": {
|
|
10348
10348
|
"filename": "lib/table-bucket.ts",
|
|
10349
|
-
"line":
|
|
10349
|
+
"line": 251
|
|
10350
10350
|
},
|
|
10351
10351
|
"name": "grantReadWrite",
|
|
10352
10352
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITableBucket",
|
|
@@ -10377,7 +10377,7 @@
|
|
|
10377
10377
|
},
|
|
10378
10378
|
"locationInModule": {
|
|
10379
10379
|
"filename": "lib/table-bucket.ts",
|
|
10380
|
-
"line":
|
|
10380
|
+
"line": 238
|
|
10381
10381
|
},
|
|
10382
10382
|
"name": "grantWrite",
|
|
10383
10383
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITableBucket",
|
|
@@ -10413,7 +10413,7 @@
|
|
|
10413
10413
|
"immutable": true,
|
|
10414
10414
|
"locationInModule": {
|
|
10415
10415
|
"filename": "lib/table-bucket.ts",
|
|
10416
|
-
"line":
|
|
10416
|
+
"line": 411
|
|
10417
10417
|
},
|
|
10418
10418
|
"name": "PROPERTY_INJECTION_ID",
|
|
10419
10419
|
"static": true,
|
|
@@ -10429,7 +10429,7 @@
|
|
|
10429
10429
|
"immutable": true,
|
|
10430
10430
|
"locationInModule": {
|
|
10431
10431
|
"filename": "lib/table-bucket.ts",
|
|
10432
|
-
"line":
|
|
10432
|
+
"line": 617
|
|
10433
10433
|
},
|
|
10434
10434
|
"name": "tableBucketArn",
|
|
10435
10435
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITableBucket",
|
|
@@ -10445,7 +10445,7 @@
|
|
|
10445
10445
|
"immutable": true,
|
|
10446
10446
|
"locationInModule": {
|
|
10447
10447
|
"filename": "lib/table-bucket.ts",
|
|
10448
|
-
"line":
|
|
10448
|
+
"line": 609
|
|
10449
10449
|
},
|
|
10450
10450
|
"name": "tableBucketName",
|
|
10451
10451
|
"overrides": "@aws-cdk/aws-s3tables-alpha.ITableBucket",
|
|
@@ -10461,7 +10461,7 @@
|
|
|
10461
10461
|
"immutable": true,
|
|
10462
10462
|
"locationInModule": {
|
|
10463
10463
|
"filename": "lib/table-bucket.ts",
|
|
10464
|
-
"line":
|
|
10464
|
+
"line": 576
|
|
10465
10465
|
},
|
|
10466
10466
|
"name": "encryptionKey",
|
|
10467
10467
|
"optional": true,
|
|
@@ -10478,7 +10478,7 @@
|
|
|
10478
10478
|
"immutable": true,
|
|
10479
10479
|
"locationInModule": {
|
|
10480
10480
|
"filename": "lib/table-bucket.ts",
|
|
10481
|
-
"line":
|
|
10481
|
+
"line": 574
|
|
10482
10482
|
},
|
|
10483
10483
|
"name": "tableBucketPolicy",
|
|
10484
10484
|
"optional": true,
|
|
@@ -10493,7 +10493,7 @@
|
|
|
10493
10493
|
},
|
|
10494
10494
|
"locationInModule": {
|
|
10495
10495
|
"filename": "lib/table-bucket.ts",
|
|
10496
|
-
"line":
|
|
10496
|
+
"line": 578
|
|
10497
10497
|
},
|
|
10498
10498
|
"name": "autoCreatePolicy",
|
|
10499
10499
|
"protected": true,
|
|
@@ -10520,7 +10520,7 @@
|
|
|
10520
10520
|
"kind": "interface",
|
|
10521
10521
|
"locationInModule": {
|
|
10522
10522
|
"filename": "lib/table-bucket.ts",
|
|
10523
|
-
"line":
|
|
10523
|
+
"line": 359
|
|
10524
10524
|
},
|
|
10525
10525
|
"name": "TableBucketAttributes",
|
|
10526
10526
|
"properties": [
|
|
@@ -10534,7 +10534,7 @@
|
|
|
10534
10534
|
"immutable": true,
|
|
10535
10535
|
"locationInModule": {
|
|
10536
10536
|
"filename": "lib/table-bucket.ts",
|
|
10537
|
-
"line":
|
|
10537
|
+
"line": 370
|
|
10538
10538
|
},
|
|
10539
10539
|
"name": "account",
|
|
10540
10540
|
"optional": true,
|
|
@@ -10552,7 +10552,7 @@
|
|
|
10552
10552
|
"immutable": true,
|
|
10553
10553
|
"locationInModule": {
|
|
10554
10554
|
"filename": "lib/table-bucket.ts",
|
|
10555
|
-
"line":
|
|
10555
|
+
"line": 388
|
|
10556
10556
|
},
|
|
10557
10557
|
"name": "encryptionKey",
|
|
10558
10558
|
"optional": true,
|
|
@@ -10570,7 +10570,7 @@
|
|
|
10570
10570
|
"immutable": true,
|
|
10571
10571
|
"locationInModule": {
|
|
10572
10572
|
"filename": "lib/table-bucket.ts",
|
|
10573
|
-
"line":
|
|
10573
|
+
"line": 364
|
|
10574
10574
|
},
|
|
10575
10575
|
"name": "region",
|
|
10576
10576
|
"optional": true,
|
|
@@ -10588,7 +10588,7 @@
|
|
|
10588
10588
|
"immutable": true,
|
|
10589
10589
|
"locationInModule": {
|
|
10590
10590
|
"filename": "lib/table-bucket.ts",
|
|
10591
|
-
"line":
|
|
10591
|
+
"line": 382
|
|
10592
10592
|
},
|
|
10593
10593
|
"name": "tableBucketArn",
|
|
10594
10594
|
"optional": true,
|
|
@@ -10606,7 +10606,7 @@
|
|
|
10606
10606
|
"immutable": true,
|
|
10607
10607
|
"locationInModule": {
|
|
10608
10608
|
"filename": "lib/table-bucket.ts",
|
|
10609
|
-
"line":
|
|
10609
|
+
"line": 376
|
|
10610
10610
|
},
|
|
10611
10611
|
"name": "tableBucketName",
|
|
10612
10612
|
"optional": true,
|
|
@@ -10631,7 +10631,7 @@
|
|
|
10631
10631
|
"kind": "enum",
|
|
10632
10632
|
"locationInModule": {
|
|
10633
10633
|
"filename": "lib/table-bucket.ts",
|
|
10634
|
-
"line":
|
|
10634
|
+
"line": 152
|
|
10635
10635
|
},
|
|
10636
10636
|
"members": [
|
|
10637
10637
|
{
|
|
@@ -10825,7 +10825,7 @@
|
|
|
10825
10825
|
"kind": "interface",
|
|
10826
10826
|
"locationInModule": {
|
|
10827
10827
|
"filename": "lib/table-bucket.ts",
|
|
10828
|
-
"line":
|
|
10828
|
+
"line": 295
|
|
10829
10829
|
},
|
|
10830
10830
|
"name": "TableBucketProps",
|
|
10831
10831
|
"properties": [
|
|
@@ -10841,7 +10841,7 @@
|
|
|
10841
10841
|
"immutable": true,
|
|
10842
10842
|
"locationInModule": {
|
|
10843
10843
|
"filename": "lib/table-bucket.ts",
|
|
10844
|
-
"line":
|
|
10844
|
+
"line": 300
|
|
10845
10845
|
},
|
|
10846
10846
|
"name": "tableBucketName",
|
|
10847
10847
|
"type": {
|
|
@@ -10858,7 +10858,7 @@
|
|
|
10858
10858
|
"immutable": true,
|
|
10859
10859
|
"locationInModule": {
|
|
10860
10860
|
"filename": "lib/table-bucket.ts",
|
|
10861
|
-
"line":
|
|
10861
|
+
"line": 322
|
|
10862
10862
|
},
|
|
10863
10863
|
"name": "account",
|
|
10864
10864
|
"optional": true,
|
|
@@ -10877,7 +10877,7 @@
|
|
|
10877
10877
|
"immutable": true,
|
|
10878
10878
|
"locationInModule": {
|
|
10879
10879
|
"filename": "lib/table-bucket.ts",
|
|
10880
|
-
"line":
|
|
10880
|
+
"line": 332
|
|
10881
10881
|
},
|
|
10882
10882
|
"name": "encryption",
|
|
10883
10883
|
"optional": true,
|
|
@@ -10896,7 +10896,7 @@
|
|
|
10896
10896
|
"immutable": true,
|
|
10897
10897
|
"locationInModule": {
|
|
10898
10898
|
"filename": "lib/table-bucket.ts",
|
|
10899
|
-
"line":
|
|
10899
|
+
"line": 343
|
|
10900
10900
|
},
|
|
10901
10901
|
"name": "encryptionKey",
|
|
10902
10902
|
"optional": true,
|
|
@@ -10914,7 +10914,7 @@
|
|
|
10914
10914
|
"immutable": true,
|
|
10915
10915
|
"locationInModule": {
|
|
10916
10916
|
"filename": "lib/table-bucket.ts",
|
|
10917
|
-
"line":
|
|
10917
|
+
"line": 315
|
|
10918
10918
|
},
|
|
10919
10919
|
"name": "region",
|
|
10920
10920
|
"optional": true,
|
|
@@ -10932,7 +10932,7 @@
|
|
|
10932
10932
|
"immutable": true,
|
|
10933
10933
|
"locationInModule": {
|
|
10934
10934
|
"filename": "lib/table-bucket.ts",
|
|
10935
|
-
"line":
|
|
10935
|
+
"line": 350
|
|
10936
10936
|
},
|
|
10937
10937
|
"name": "removalPolicy",
|
|
10938
10938
|
"optional": true,
|
|
@@ -10954,7 +10954,7 @@
|
|
|
10954
10954
|
"immutable": true,
|
|
10955
10955
|
"locationInModule": {
|
|
10956
10956
|
"filename": "lib/table-bucket.ts",
|
|
10957
|
-
"line":
|
|
10957
|
+
"line": 308
|
|
10958
10958
|
},
|
|
10959
10959
|
"name": "unreferencedFileRemoval",
|
|
10960
10960
|
"optional": true,
|
|
@@ -11301,7 +11301,7 @@
|
|
|
11301
11301
|
"kind": "interface",
|
|
11302
11302
|
"locationInModule": {
|
|
11303
11303
|
"filename": "lib/table-bucket.ts",
|
|
11304
|
-
"line":
|
|
11304
|
+
"line": 108
|
|
11305
11305
|
},
|
|
11306
11306
|
"name": "UnreferencedFileRemoval",
|
|
11307
11307
|
"properties": [
|
|
@@ -11317,7 +11317,7 @@
|
|
|
11317
11317
|
"immutable": true,
|
|
11318
11318
|
"locationInModule": {
|
|
11319
11319
|
"filename": "lib/table-bucket.ts",
|
|
11320
|
-
"line":
|
|
11320
|
+
"line": 115
|
|
11321
11321
|
},
|
|
11322
11322
|
"name": "noncurrentDays",
|
|
11323
11323
|
"optional": true,
|
|
@@ -11337,7 +11337,7 @@
|
|
|
11337
11337
|
"immutable": true,
|
|
11338
11338
|
"locationInModule": {
|
|
11339
11339
|
"filename": "lib/table-bucket.ts",
|
|
11340
|
-
"line":
|
|
11340
|
+
"line": 123
|
|
11341
11341
|
},
|
|
11342
11342
|
"name": "status",
|
|
11343
11343
|
"optional": true,
|
|
@@ -11357,7 +11357,7 @@
|
|
|
11357
11357
|
"immutable": true,
|
|
11358
11358
|
"locationInModule": {
|
|
11359
11359
|
"filename": "lib/table-bucket.ts",
|
|
11360
|
-
"line":
|
|
11360
|
+
"line": 131
|
|
11361
11361
|
},
|
|
11362
11362
|
"name": "unreferencedDays",
|
|
11363
11363
|
"optional": true,
|
|
@@ -11382,7 +11382,7 @@
|
|
|
11382
11382
|
"kind": "enum",
|
|
11383
11383
|
"locationInModule": {
|
|
11384
11384
|
"filename": "lib/table-bucket.ts",
|
|
11385
|
-
"line":
|
|
11385
|
+
"line": 137
|
|
11386
11386
|
},
|
|
11387
11387
|
"members": [
|
|
11388
11388
|
{
|
|
@@ -11404,6 +11404,6 @@
|
|
|
11404
11404
|
"symbolId": "lib/table-bucket:UnreferencedFileRemovalStatus"
|
|
11405
11405
|
}
|
|
11406
11406
|
},
|
|
11407
|
-
"version": "2.
|
|
11407
|
+
"version": "2.236.0-alpha.0",
|
|
11408
11408
|
"fingerprint": "**********"
|
|
11409
11409
|
}
|
package/.jsii.tabl.json.gz
CHANGED
|
Binary file
|
package/awslint.json
CHANGED
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
"prefer-ref-interface:@aws-cdk/aws-s3tables-alpha.TableBucketAttributes.encryptionKey",
|
|
15
15
|
"prefer-ref-interface:@aws-cdk/aws-s3tables-alpha.TableBucketProps.encryptionKey",
|
|
16
16
|
"prefer-ref-interface:@aws-cdk/aws-s3tables-alpha.TableBucketPolicyProps.tableBucket",
|
|
17
|
-
"prefer-ref-interface:@aws-cdk/aws-s3tables-alpha.TablePolicyProps.table"
|
|
17
|
+
"prefer-ref-interface:@aws-cdk/aws-s3tables-alpha.TablePolicyProps.table",
|
|
18
|
+
"interface-extends-ref:@aws-cdk/aws-s3tables-alpha.INamespace",
|
|
19
|
+
"interface-extends-ref:@aws-cdk/aws-s3tables-alpha.ITable",
|
|
20
|
+
"interface-extends-ref:@aws-cdk/aws-s3tables-alpha.ITableBucket"
|
|
18
21
|
]
|
|
19
22
|
}
|
package/lib/namespace.js
CHANGED
|
@@ -61,7 +61,7 @@ let Namespace = (() => {
|
|
|
61
61
|
Namespace = _classThis = _classDescriptor.value;
|
|
62
62
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
63
63
|
}
|
|
64
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.Namespace", version: "2.
|
|
64
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.Namespace", version: "2.236.0-alpha.0" };
|
|
65
65
|
/** Uniquely identifies this class. */
|
|
66
66
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.Namespace';
|
|
67
67
|
/**
|
|
@@ -62,7 +62,7 @@ let TableBucketPolicy = (() => {
|
|
|
62
62
|
TableBucketPolicy = _classThis = _classDescriptor.value;
|
|
63
63
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
64
64
|
}
|
|
65
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TableBucketPolicy", version: "2.
|
|
65
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TableBucketPolicy", version: "2.236.0-alpha.0" };
|
|
66
66
|
/** Uniquely identifies this class. */
|
|
67
67
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.TableBucketPolicy';
|
|
68
68
|
/**
|
package/lib/table-bucket.d.ts
CHANGED
|
@@ -332,22 +332,22 @@ export declare class TableBucket extends TableBucketBase {
|
|
|
332
332
|
* The underlying CfnTableBucket L1 resource
|
|
333
333
|
* @internal
|
|
334
334
|
*/
|
|
335
|
-
private readonly
|
|
335
|
+
private readonly resource;
|
|
336
336
|
/**
|
|
337
337
|
* The resource policy for this tableBucket.
|
|
338
338
|
*/
|
|
339
339
|
readonly tableBucketPolicy?: TableBucketPolicy;
|
|
340
|
+
readonly encryptionKey?: kms.IKey | undefined;
|
|
341
|
+
protected autoCreatePolicy: boolean;
|
|
342
|
+
constructor(scope: Construct, id: string, props: TableBucketProps);
|
|
340
343
|
/**
|
|
341
|
-
* The
|
|
344
|
+
* The name of this table bucket
|
|
342
345
|
*/
|
|
343
|
-
|
|
346
|
+
get tableBucketName(): string;
|
|
344
347
|
/**
|
|
345
|
-
* The
|
|
348
|
+
* The unique Amazon Resource Name (arn) of this table bucket
|
|
346
349
|
*/
|
|
347
|
-
|
|
348
|
-
readonly encryptionKey?: kms.IKey | undefined;
|
|
349
|
-
protected autoCreatePolicy: boolean;
|
|
350
|
-
constructor(scope: Construct, id: string, props: TableBucketProps);
|
|
350
|
+
get tableBucketArn(): string;
|
|
351
351
|
/**
|
|
352
352
|
* Set up key properties and return the Bucket encryption property from the
|
|
353
353
|
* user's configuration, according to the following table:
|
package/lib/table-bucket.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
3
|
+
var useValue = arguments.length > 2;
|
|
4
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
5
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
6
|
+
}
|
|
7
|
+
return useValue ? value : void 0;
|
|
8
|
+
};
|
|
2
9
|
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
3
10
|
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
4
11
|
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
@@ -26,13 +33,6 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
|
|
|
26
33
|
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
27
34
|
done = true;
|
|
28
35
|
};
|
|
29
|
-
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
30
|
-
var useValue = arguments.length > 2;
|
|
31
|
-
for (var i = 0; i < initializers.length; i++) {
|
|
32
|
-
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
33
|
-
}
|
|
34
|
-
return useValue ? value : void 0;
|
|
35
|
-
};
|
|
36
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
37
|
exports.TableBucket = exports.TableBucketEncryption = exports.UnreferencedFileRemovalStatus = void 0;
|
|
38
38
|
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
@@ -42,6 +42,7 @@ const iam = require("aws-cdk-lib/aws-iam");
|
|
|
42
42
|
const kms = require("aws-cdk-lib/aws-kms");
|
|
43
43
|
const s3tables = require("aws-cdk-lib/aws-s3tables");
|
|
44
44
|
const core_1 = require("aws-cdk-lib/core");
|
|
45
|
+
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
45
46
|
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
46
47
|
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
47
48
|
const perms = require("./permissions");
|
|
@@ -171,15 +172,22 @@ let TableBucket = (() => {
|
|
|
171
172
|
let _classExtraInitializers = [];
|
|
172
173
|
let _classThis;
|
|
173
174
|
let _classSuper = TableBucketBase;
|
|
175
|
+
let _instanceExtraInitializers = [];
|
|
176
|
+
let _get_tableBucketName_decorators;
|
|
177
|
+
let _get_tableBucketArn_decorators;
|
|
174
178
|
var TableBucket = class extends _classSuper {
|
|
175
179
|
static { _classThis = this; }
|
|
176
180
|
static {
|
|
177
181
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
182
|
+
_get_tableBucketName_decorators = [helpers_internal_1.memoizedGetter];
|
|
183
|
+
_get_tableBucketArn_decorators = [helpers_internal_1.memoizedGetter];
|
|
184
|
+
__esDecorate(this, null, _get_tableBucketName_decorators, { kind: "getter", name: "tableBucketName", static: false, private: false, access: { has: obj => "tableBucketName" in obj, get: obj => obj.tableBucketName }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
185
|
+
__esDecorate(this, null, _get_tableBucketArn_decorators, { kind: "getter", name: "tableBucketArn", static: false, private: false, access: { has: obj => "tableBucketArn" in obj, get: obj => obj.tableBucketArn }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
178
186
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
179
187
|
TableBucket = _classThis = _classDescriptor.value;
|
|
180
188
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
181
189
|
}
|
|
182
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TableBucket", version: "2.
|
|
190
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TableBucket", version: "2.236.0-alpha.0" };
|
|
183
191
|
/** Uniquely identifies this class. */
|
|
184
192
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.TableBucket';
|
|
185
193
|
/**
|
|
@@ -314,19 +322,11 @@ let TableBucket = (() => {
|
|
|
314
322
|
* The underlying CfnTableBucket L1 resource
|
|
315
323
|
* @internal
|
|
316
324
|
*/
|
|
317
|
-
|
|
325
|
+
resource = __runInitializers(this, _instanceExtraInitializers);
|
|
318
326
|
/**
|
|
319
327
|
* The resource policy for this tableBucket.
|
|
320
328
|
*/
|
|
321
329
|
tableBucketPolicy;
|
|
322
|
-
/**
|
|
323
|
-
* The unique Amazon Resource Name (arn) of this table bucket
|
|
324
|
-
*/
|
|
325
|
-
tableBucketArn;
|
|
326
|
-
/**
|
|
327
|
-
* The name of this table bucket
|
|
328
|
-
*/
|
|
329
|
-
tableBucketName;
|
|
330
330
|
encryptionKey;
|
|
331
331
|
autoCreatePolicy = true;
|
|
332
332
|
constructor(scope, id, props) {
|
|
@@ -348,7 +348,7 @@ let TableBucket = (() => {
|
|
|
348
348
|
TableBucket.validateUnreferencedFileRemoval(props.unreferencedFileRemoval);
|
|
349
349
|
const { bucketEncryption, encryptionKey } = this.parseEncryption(props);
|
|
350
350
|
this.encryptionKey = encryptionKey;
|
|
351
|
-
this.
|
|
351
|
+
this.resource = new s3tables.CfnTableBucket(this, id, {
|
|
352
352
|
tableBucketName: props.tableBucketName,
|
|
353
353
|
unreferencedFileRemoval: {
|
|
354
354
|
...props.unreferencedFileRemoval,
|
|
@@ -357,9 +357,19 @@ let TableBucket = (() => {
|
|
|
357
357
|
},
|
|
358
358
|
encryptionConfiguration: bucketEncryption,
|
|
359
359
|
});
|
|
360
|
-
this.
|
|
361
|
-
|
|
362
|
-
|
|
360
|
+
this.resource.applyRemovalPolicy(props.removalPolicy);
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* The name of this table bucket
|
|
364
|
+
*/
|
|
365
|
+
get tableBucketName() {
|
|
366
|
+
return this.getResourceNameAttribute(this.resource.ref);
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* The unique Amazon Resource Name (arn) of this table bucket
|
|
370
|
+
*/
|
|
371
|
+
get tableBucketArn() {
|
|
372
|
+
return this.resource.attrTableBucketArn;
|
|
363
373
|
}
|
|
364
374
|
/**
|
|
365
375
|
* Set up key properties and return the Bucket encryption property from the
|
|
@@ -456,4 +466,4 @@ let TableBucket = (() => {
|
|
|
456
466
|
return TableBucket = _classThis;
|
|
457
467
|
})();
|
|
458
468
|
exports.TableBucket = TableBucket;
|
|
459
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGFibGUtYnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJCQUF5QjtBQUN6QiwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBQzNDLHFEQUFxRDtBQUNyRCwyQ0FBc0c7QUFDdEcsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUUxRSx1Q0FBdUM7QUFDdkMsK0RBQTBEO0FBQzFELGlDQUF1RDtBQTBIdkQ7O0dBRUc7QUFDSCxJQUFZLDZCQVVYO0FBVkQsV0FBWSw2QkFBNkI7SUFDdkM7O09BRUc7SUFDSCxvREFBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILHNEQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyw2QkFBNkIsNkNBQTdCLDZCQUE2QixRQVV4QztBQUVEOztHQUVHO0FBQ0gsSUFBWSxxQkFXWDtBQVhELFdBQVkscUJBQXFCO0lBQy9COzs7T0FHRztJQUNILHdDQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILDhDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFYVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQVdoQztBQUVELE1BQWUsZUFBZ0IsU0FBUSxlQUFRO0lBb0I3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW1CRztJQUNJLG1CQUFtQixDQUN4QixTQUE4QjtRQUU5QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHVDQUFpQixDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7Z0JBQ3BFLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMs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QkFDckIsYUFBYTtpQkFDZDtnQkFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7Z0JBQ2hCLFVBQVUsRUFBRTtvQkFDVixVQUFVLEVBQUU7d0JBQ1Ysa0NBQWtDLEVBQUUsT0FBTyxTQUFTLGFBQWEsTUFBTSxJQUFJLE9BQU8sV0FBVyxlQUFlLElBQUk7cUJBQ2pIO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDLENBQUM7U0FDTDs7WUE5U1UsdURBQVc7Ozs7O0FBQVgsa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFT0wgfSBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBzM3RhYmxlcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczN0YWJsZXMnO1xuaW1wb3J0IHsgUmVzb3VyY2UsIElSZXNvdXJjZSwgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IsIFJlbW92YWxQb2xpY3ksIFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHBlcm1zIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgVGFibGVCdWNrZXRQb2xpY3kgfSBmcm9tICcuL3RhYmxlLWJ1Y2tldC1wb2xpY3knO1xuaW1wb3J0IHsgdmFsaWRhdGVUYWJsZUJ1Y2tldEF0dHJpYnV0ZXMgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIEludGVyZmFjZSBkZWZpbml0aW9uIGZvciBTMyBUYWJsZSBCdWNrZXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQnVja2V0IGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHRhYmxlIGJ1Y2tldC5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVCdWNrZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGJ1Y2tldC5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVCdWNrZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50SWQgY29udGFpbmluZyB0aGUgdGFibGUgYnVja2V0LlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIGNvbnRhaW5pbmcgdGhlIHRhYmxlIGJ1Y2tldC5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBLTVMgZW5jcnlwdGlvbiBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFibGUgYnVja2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgc3RhdGVtZW50IHRvIHRoZSByZXNvdXJjZSBwb2xpY3kgZm9yIGEgcHJpbmNpcGFsIChpLmUuXG4gICAqIGFjY291bnQvcm9sZS9zZXJ2aWNlKSB0byBwZXJmb3JtIGFjdGlvbnMgb24gdGhpcyB0YWJsZSBidWNrZXQgYW5kL29yIGl0c1xuICAgKiB0YWJsZXMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgcG9saWN5IHN0YXRlbWVudCBtYXkgb3IgbWF5IG5vdCBiZSBhZGRlZCB0byB0aGUgcG9saWN5LlxuICAgKiBGb3IgZXhhbXBsZSwgd2hlbiBhbiBgSVRhYmxlQnVja2V0YCBpcyBjcmVhdGVkIGZyb20gYW4gZXhpc3RpbmcgdGFibGUgYnVja2V0LFxuICAgKiBpdCdzIG5vdCBwb3NzaWJsZSB0byB0ZWxsIHdoZXRoZXIgdGhlIGJ1Y2tldCBhbHJlYWR5IGhhcyBhIHBvbGljeVxuICAgKiBhdHRhY2hlZCwgbGV0IGFsb25lIHRvIHJlLXVzZSB0aGF0IHBvbGljeSB0byBhZGQgbW9yZSBzdGF0ZW1lbnRzIHRvIGl0LlxuICAgKiBTbyBpdCdzIHNhZmVzdCB0byBkbyBub3RoaW5nIGluIHRoZXNlIGNhc2VzLlxuICAgKlxuICAgKiBAcGFyYW0gc3RhdGVtZW50IHRoZSBwb2xpY3kgc3RhdGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSBidWNrZXQnc1xuICAgKiBwb2xpY3kuXG4gICAqIEByZXR1cm5zIG1ldGFkYXRhIGFib3V0IHRoZSBleGVjdXRpb24gb2YgdGhpcyBtZXRob2QuIElmIHRoZSBwb2xpY3lcbiAgICogd2FzIG5vdCBhZGRlZCwgdGhlIHZhbHVlIG9mIGBzdGF0ZW1lbnRBZGRlZGAgd2lsbCBiZSBgZmFsc2VgLiBZb3VcbiAgICogc2hvdWxkIGFsd2F5cyBjaGVjayB0aGlzIHZhbHVlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvcGVyYXRpb24gd2FzXG4gICAqIGFjdHVhbGx5IGNhcnJpZWQgb3V0LiBPdGhlcndpc2UsIHN5bnRoZXNpcyBhbmQgZGVwbG95IHdpbGwgdGVybWluYXRlXG4gICAqIHNpbGVudGx5LCB3aGljaCBtYXkgYmUgY29uZnVzaW5nLlxuICAgKi9cbiAgYWRkVG9SZXNvdXJjZVBvbGljeShzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQpOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdDtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyBmb3IgdGhpcyB0YWJsZSBidWNrZXQgYW5kIGl0cyB0YWJsZXNcbiAgICogdG8gYW4gSUFNIHByaW5jaXBhbCAoUm9sZS9Hcm91cC9Vc2VyKS5cbiAgICpcbiAgICogSWYgZW5jcnlwdGlvbiBpcyB1c2VkLCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUga2V5IHRvIGRlY3J5cHQgdGhlIGNvbnRlbnRzXG4gICAqIG9mIHRoZSBidWNrZXQgd2lsbCBhbHNvIGJlIGdyYW50ZWQgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyByZWFkIHBlcm1pc3Npb25zIHRvXG4gICAqIEBwYXJhbSB0YWJsZUlkIEFsbG93IHRoZSBwZXJtaXNzaW9ucyB0byBhbGwgdGFibGVzIHVzaW5nICcqJyBvciB0byBzaW5nbGUgdGFibGUgYnkgaXRzIHVuaXF1ZSBJRC5cbiAgICovXG4gIGdyYW50UmVhZChpZGVudGl0eTogaWFtLklHcmFudGFibGUsIHRhYmxlSWQ6IHN0cmluZyk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoaXMgdGFibGUgYnVja2V0IGFuZCBpdHMgdGFibGVzXG4gICAqIHRvIGFuIElBTSBwcmluY2lwYWwgKFJvbGUvR3JvdXAvVXNlcikuXG4gICAqXG4gICAqIElmIGVuY3J5cHRpb24gaXMgdXNlZCwgcGVybWlzc2lvbiB0byB1c2UgdGhlIGtleSB0byBlbmNyeXB0IHRoZSBjb250ZW50c1xuICAgKiBvZiB0aGUgYnVja2V0IHdpbGwgYWxzbyBiZSBncmFudGVkIHRvIHRoZSBzYW1lIHByaW5jaXBhbC5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aXR5IFRoZSBwcmluY2lwYWwgdG8gYWxsb3cgd3JpdGUgcGVybWlzc2lvbnMgdG9cbiAgICogQHBhcmFtIHRhYmxlSWQgQWxsb3cgdGhlIHBlcm1pc3Npb25zIHRvIGFsbCB0YWJsZXMgdXNpbmcgJyonIG9yIHRvIHNpbmdsZSB0YWJsZSBieSBpdHMgdW5pcXVlIElELlxuICAgKi9cbiAgZ3JhbnRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUsIHRhYmxlSWQ6IHN0cmluZyk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBhbmQgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoaXMgdGFibGUgYnVja2V0IGFuZCBpdHMgdGFibGVzXG4gICAqIHRvIGFuIElBTSBwcmluY2lwYWwgKFJvbGUvR3JvdXAvVXNlcikuXG4gICAqXG4gICAqIElmIGVuY3J5cHRpb24gaXMgdXNlZCwgcGVybWlzc2lvbiB0byB1c2UgdGhlIGtleSB0byBlbmNyeXB0L2RlY3J5cHQgdGhlIGNvbnRlbnRzXG4gICAqIG9mIHRoZSBidWNrZXQgd2lsbCBhbHNvIGJlIGdyYW50ZWQgdG8gdGhlIHNhbWUgcHJpbmNpcGFsLlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpdHkgVGhlIHByaW5jaXBhbCB0byBhbGxvdyByZWFkIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyB0b1xuICAgKiBAcGFyYW0gdGFibGVJZCBBbGxvdyB0aGUgcGVybWlzc2lvbnMgdG8gYWxsIHRhYmxlcyB1c2luZyAnKicgb3IgdG8gc2luZ2xlIHRhYmxlIGJ5IGl0cyB1bmlxdWUgSUQuXG4gICAqL1xuICBncmFudFJlYWRXcml0ZShpZGVudGl0eTogaWFtLklHcmFudGFibGUsIHRhYmxlSWQ6IHN0cmluZyk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBVbnJlZmVyZW5jZWQgZmlsZSByZW1vdmFsIHNldHRpbmdzIGZvciB0aGUgdGhpcyB0YWJsZSBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5yZWZlcmVuY2VkRmlsZVJlbW92YWwge1xuICAvKipcbiAgICogRHVyYXRpb24gYWZ0ZXIgd2hpY2ggbm9uY3VycmVudCBmaWxlcyBzaG91bGQgYmUgcmVtb3ZlZC4gU2hvdWxkIGJlIGF0IGxlYXN0IG9uZSBkYXkuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvczMtdGFibGUtYnVja2V0cy1tYWludGVuYW5jZS5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2VlIFMzIFRhYmxlcyBVc2VyIEd1aWRlXG4gICAqL1xuICByZWFkb25seSBub25jdXJyZW50RGF5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogU3RhdHVzIG9mIHVucmVmZXJlbmNlZCBmaWxlIHJlbW92YWwuIENhbiBiZSBFbmFibGVkIG9yIERpc2FibGVkLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL3MzLXRhYmxlLWJ1Y2tldHMtbWFpbnRlbmFuY2UuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFNlZSBTMyBUYWJsZXMgVXNlciBHdWlkZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogVW5yZWZlcmVuY2VkRmlsZVJlbW92YWxTdGF0dXM7XG5cbiAgLyoqXG4gICAqIER1cmF0aW9uIGFmdGVyIHdoaWNoIHVucmVmZXJlbmNlZCBmaWxlcyBzaG91bGQgYmUgcmVtb3ZlZC4gU2hvdWxkIGJlIGF0IGxlYXN0IG9uZSBkYXkuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvczMtdGFibGUtYnVja2V0cy1tYWludGVuYW5jZS5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2VlIFMzIFRhYmxlcyBVc2VyIEd1aWRlXG4gICAqL1xuICByZWFkb25seSB1bnJlZmVyZW5jZWREYXlzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvbnRyb2xzIHdoZXRoZXIgdW5yZWZlcmVuY2VkIGZpbGUgcmVtb3ZhbCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLlxuICovXG5leHBvcnQgZW51bSBVbnJlZmVyZW5jZWRGaWxlUmVtb3ZhbFN0YXR1cyB7XG4gIC8qKlxuICAgKiBFbmFibGUgdW5yZWZlcmVuY2VkIGZpbGUgcmVtb3ZhbC5cbiAgICovXG4gIEVOQUJMRUQgPSAnRW5hYmxlZCcsXG5cbiAgLyoqXG4gICAqIERpc2FibGUgdW5yZWZlcmVuY2VkIGZpbGUgcmVtb3ZhbC5cbiAgICovXG4gIERJU0FCTEVEID0gJ0Rpc2FibGVkJyxcbn1cblxuLyoqXG4gKiBDb250cm9scyBTZXJ2ZXIgU2lkZSBFbmNyeXB0aW9uIChTU0UpIGZvciB0aGlzIFRhYmxlQnVja2V0LlxuICovXG5leHBvcnQgZW51bSBUYWJsZUJ1Y2tldEVuY3J5cHRpb24ge1xuICAvKipcbiAgICogVXNlIGEgY3VzdG9tZXIgZGVmaW5lZCBLTVMga2V5IGZvciBlbmNyeXB0aW9uXG4gICAqIElmIGBlbmNyeXB0aW9uS2V5YCBpcyBzcGVjaWZpZWQsIHRoaXMga2V5IHdpbGwgYmUgdXNlZCwgb3RoZXJ3aXNlLCBvbmUgd2lsbCBiZSBkZWZpbmVkLlxuICAgKi9cbiAgS01TID0gJ2F3czprbXMnLFxuXG4gIC8qKlxuICAgKiBVc2UgUzMgbWFuYWdlZCBlbmNyeXB0aW9uIGtleXMgd2l0aCBBRVMyNTYgZW5jcnlwdGlvblxuICAgKi9cbiAgUzNfTUFOQUdFRCA9ICdBRVMyNTYnLFxufVxuXG5hYnN0cmFjdCBjbGFzcyBUYWJsZUJ1Y2tldEJhc2UgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElUYWJsZUJ1Y2tldCB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB0YWJsZUJ1Y2tldEFybjogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdGFibGVCdWNrZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFibGUgYnVja2V0LlxuICAgKlxuICAgKiBJZiBgYXV0b0NyZWF0ZVBvbGljeWAgaXMgdHJ1ZSwgYSBgVGFibGVCdWNrZXRQb2xpY3lgIHdpbGwgYmUgY3JlYXRlZCB1cG9uIHRoZVxuICAgKiBmaXJzdCBjYWxsIHRvIGFkZFRvUmVzb3VyY2VQb2xpY3kocykuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdGFibGVCdWNrZXRQb2xpY3k/OiBUYWJsZUJ1Y2tldFBvbGljeTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGEgdGFibGUgYnVja2V0IHJlc291cmNlIHBvbGljeSBzaG91bGQgYXV0b21hdGljYWxseSBjcmVhdGVkIHVwb25cbiAgICogdGhlIGZpcnN0IGNhbGwgdG8gYGFkZFRvUmVzb3VyY2VQb2xpY3lgLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW47XG5cbiAgcHVibGljIGFic3RyYWN0IGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQWRkcyBhIHN0YXRlbWVudCB0byB0aGUgcmVzb3VyY2UgcG9saWN5IGZvciBhIHByaW5jaXBhbCAoaS5lLlxuICAgKiBhY2NvdW50L3JvbGUvc2VydmljZSkgdG8gcGVyZm9ybSBhY3Rpb25zIG9uIHRoaXMgdGFibGUgYnVja2V0IGFuZC9vciBpdHNcbiAgICogY29udGVudHMuIFVzZSBgdGFibGVCdWNrZXRBcm5gIGFuZCBgYXJuRm9yT2JqZWN0cyhrZXlzKWAgdG8gb2J0YWluIEFSTnMgZm9yXG4gICAqIHRoaXMgYnVja2V0IG9yIG9iamVjdHMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgcG9saWN5IHN0YXRlbWVudCBtYXkgb3IgbWF5IG5vdCBiZSBhZGRlZCB0byB0aGUgcG9saWN5LlxuICAgKiBGb3IgZXhhbXBsZSwgd2hlbiBhbiBgSVRhYmxlQnVja2V0YCBpcyBjcmVhdGVkIGZyb20gYW4gZXhpc3RpbmcgdGFibGUgYnVja2V0LFxuICAgKiBpdCdzIG5vdCBwb3NzaWJsZSB0byB0ZWxsIHdoZXRoZXIgdGhlIGJ1Y2tldCBhbHJlYWR5IGhhcyBhIHBvbGljeVxuICAgKiBhdHRhY2hlZCwgbGV0IGFsb25lIHRvIHJlLXVzZSB0aGF0IHBvbGljeSB0byBhZGQgbW9yZSBzdGF0ZW1lbnRzIHRvIGl0LlxuICAgKiBTbyBpdCdzIHNhZmVzdCB0byBkbyBub3RoaW5nIGluIHRoZXNlIGNhc2VzLlxuICAgKlxuICAgKiBAcGFyYW0gc3RhdGVtZW50IHRoZSBwb2xpY3kgc3RhdGVtZW50IHRvIGJlIGFkZGVkIHRvIHRoZSBidWNrZXQnc1xuICAgKiBwb2xpY3kuXG4gICAqIEByZXR1cm5zIG1ldGFkYXRhIGFib3V0IHRoZSBleGVjdXRpb24gb2YgdGhpcyBtZXRob2QuIElmIHRoZSBwb2xpY3lcbiAgICogd2FzIG5vdCBhZGRlZCwgdGhlIHZhbHVlIG9mIGBzdGF0ZW1lbnRBZGRlZGAgd2lsbCBiZSBgZmFsc2VgLiBZb3VcbiAgICogc2hvdWxkIGFsd2F5cyBjaGVjayB0aGlzIHZhbHVlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvcGVyYXRpb24gd2FzXG4gICAqIGFjdHVhbGx5IGNhcnJpZWQgb3V0LiBPdGhlcndpc2UsIHN5bnRoZXNpcyBhbmQgZGVwbG95IHdpbGwgdGVybWluYXRlXG4gICAqIHNpbGVudGx5LCB3aGljaCBtYXkgYmUgY29uZnVzaW5nLlxuICAgKi9cbiAgcHVibGljIGFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50LFxuICApOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdCB7XG4gICAgaWYgKCF0aGlzLnRhYmxlQnVja2V0UG9saWN5ICYmIHRoaXMuYXV0b0NyZWF0ZVBvbGljeSkge1xuICAgICAgdGhpcy50YWJsZUJ1Y2tldFBvbGljeSA9IG5ldyBUYWJsZUJ1Y2tldFBvbGljeSh0aGlzLCAnRGVmYXVsdFBvbGljeScsIHtcbiAgICAgICAgdGFibGVCdWNrZXQ6IHRoaXMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZUJ1Y2tldFBvbGljeSkge1xuICAgICAgdGhpcy50YWJsZUJ1Y2tldFBvbGljeS5kb2N1bWVudC5hZGRTdGF0ZW1lbnRzKHN0YXRlbWVudCk7XG4gICAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogdHJ1ZSwgcG9saWN5RGVwZW5kYWJsZTogdGhpcy50YWJsZUJ1Y2tldFBvbGljeSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXRlbWVudEFkZGVkOiBmYWxzZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChpZGVudGl0eTogaWFtLklHcmFudGFibGUsIHRhYmxlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdyYW50KFxuICAgICAgaWRlbnRpdHksXG4gICAgICBwZXJtcy5UQUJMRV9CVUNLRVRfUkVBRF9BQ0NFU1MsXG4gICAgICBwZXJtcy5LRVlfUkVBRF9BQ0NFU1MsXG4gICAgICB0aGlzLnRhYmxlQnVja2V0QXJuLFxuICAgICAgdGhpcy5nZXRUYWJsZUFybih0YWJsZUlkKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgcHVibGljIGdyYW50V3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlLCB0YWJsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfQlVDS0VUX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHBlcm1zLktFWV9SRUFEX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHRoaXMudGFibGVCdWNrZXRBcm4sXG4gICAgICB0aGlzLmdldFRhYmxlQXJuKHRhYmxlSWQpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkV3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlLCB0YWJsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfQlVDS0VUX1JFQURfV1JJVEVfQUNDRVNTLFxuICAgICAgcGVybXMuS0VZX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHRoaXMudGFibGVCdWNrZXRBcm4sXG4gICAgICB0aGlzLmdldFRhYmxlQXJuKHRhYmxlSWQpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBnaXZlbiBzM3RhYmxlcyBwZXJtaXNzaW9ucyB0byB0aGUgcHJvdmlkZWQgcHJpbmNpcGFsXG4gICAqIEByZXR1cm5zIEdyYW50IG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBncmFudChcbiAgICBncmFudGVlOiBpYW0uSUdyYW50YWJsZSxcbiAgICB0YWJsZUJ1Y2tldEFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIGtleUFjdGlvbnM6IHN0cmluZ1tdLFxuICAgIHJlc291cmNlQXJuOiBzdHJpbmcsXG4gICAgLi4ub3RoZXJSZXNvdXJjZUFybnM6IChzdHJpbmcgfCB1bmRlZmluZWQpW10pIHtcbiAgICBjb25zdCByZXNvdXJjZXMgPSBbcmVzb3VyY2VBcm4sIC4uLm90aGVyUmVzb3VyY2VBcm5zXS5maWx0ZXIoYXJuID0+IGFybiAhPSB1bmRlZmluZWQpO1xuXG4gICAgY29uc3QgZ3JhbnQgPSBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWxPclJlc291cmNlKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiB0YWJsZUJ1Y2tldEFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IHJlc291cmNlcyxcbiAgICAgIHJlc291cmNlOiB0aGlzLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZW5jcnlwdGlvbktleSAmJiBrZXlBY3Rpb25zICYmIGtleUFjdGlvbnMubGVuZ3RoICE9PSAwKSB7XG4gICAgICB0aGlzLmVuY3J5cHRpb25LZXkuZ3JhbnQoZ3JhbnRlZSwgLi4ua2V5QWN0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyYW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUYWJsZUFybih0YWJsZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdGFibGVJZCA/IGAke3RoaXMudGFibGVCdWNrZXRBcm59L3RhYmxlLyR7dGFibGVJZH1gIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgY29uc3RydWN0aW5nIGEgVGFibGVCdWNrZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZUJ1Y2tldFByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIFMzIFRhYmxlQnVja2V0LlxuICAgKiBAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZXMtYnVja2V0cy1uYW1pbmcuaHRtbCN0YWJsZS1idWNrZXRzLW5hbWluZy1ydWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVCdWNrZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVucmVmZXJlbmNlZCBmaWxlIHJlbW92YWwgc2V0dGluZ3MgZm9yIHRoZSBTMyBUYWJsZUJ1Y2tldC5cbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczN0YWJsZXMtdGFibGVidWNrZXQtdW5yZWZlcmVuY2VkZmlsZXJlbW92YWwuaHRtbFxuICAgKiBAZGVmYXVsdCBFbmFibGVkIHdpdGggZGVmYXVsdCB2YWx1ZXNcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZS1idWNrZXRzLW1haW50ZW5hbmNlLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IHVucmVmZXJlbmNlZEZpbGVSZW1vdmFsPzogVW5yZWZlcmVuY2VkRmlsZVJlbW92YWw7XG5cbiAgLyoqXG4gICAqIEFXUyByZWdpb24gdGhhdCB0aGUgdGFibGUgYnVja2V0IGV4aXN0cyBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpdCdzIGFzc3VtZWQgdGhlIGJ1Y2tldCBpcyBpbiB0aGUgc2FtZSByZWdpb24gYXMgdGhlIHNjb3BlIGl0J3MgYmVpbmcgaW1wb3J0ZWQgaW50b1xuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBV1MgQWNjb3VudCBJRCBvZiB0aGUgdGFibGUgYnVja2V0IG93bmVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGl0J3MgYXNzdW1lZCB0aGUgYnVja2V0IGJlbG9uZ3MgdG8gdGhlIHNhbWUgYWNjb3VudCBhcyB0aGUgc2NvcGUgaXQncyBiZWluZyBpbXBvcnRlZCBpbnRvXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHRvIGFwcGx5IHRvIHRoaXMgYnVja2V0LlxuICAgKlxuICAgKiBJZiB5b3UgY2hvb3NlIEtNUywgeW91IGNhbiBzcGVjaWZ5IGEgS01TIGtleSB2aWEgYGVuY3J5cHRpb25LZXlgLiBJZlxuICAgKiBlbmNyeXB0aW9uIGtleSBpcyBub3Qgc3BlY2lmaWVkLCBhIGtleSB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBgS01TYCBpZiBgZW5jcnlwdGlvbktleWAgaXMgc3BlY2lmaWVkLCBvciBgUzNfTUFOQUdFRGAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbj86IFRhYmxlQnVja2V0RW5jcnlwdGlvbjtcblxuICAvKipcbiAgICogRXh0ZXJuYWwgS01TIGtleSB0byB1c2UgZm9yIGJ1Y2tldCBlbmNyeXB0aW9uLlxuICAgKlxuICAgKiBUaGUgYGVuY3J5cHRpb25gIHByb3BlcnR5IG11c3QgYmUgZWl0aGVyIG5vdCBzcGVjaWZpZWQgb3Igc2V0IHRvIGBLTVNgLlxuICAgKiBBbiBlcnJvciB3aWxsIGJlIGVtaXR0ZWQgaWYgYGVuY3J5cHRpb25gIGlzIHNldCB0byBgUzNfTUFOQUdFRGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgYGVuY3J5cHRpb25gIGlzIHNldCB0byBgS01TYCBhbmQgdGhpcyBwcm9wZXJ0eSBpcyB1bmRlZmluZWQsXG4gICAqIGEgbmV3IEtNUyBrZXkgd2lsbCBiZSBjcmVhdGVkIGFuZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBidWNrZXQuXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoYXQgaGFwcGVucyB0byB0aGlzIHRhYmxlIGJ1Y2tldCBpdCBpdCBzdG9wZWQgYmVpbmcgbWFuYWdlZCBieSBjbG91ZGZvcm1hdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgUkVUQUlOXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcbn1cblxuLyoqXG4gKiBBIHJlZmVyZW5jZSB0byBhIHRhYmxlIGJ1Y2tldCBvdXRzaWRlIHRoaXMgc3RhY2tcbiAqXG4gKiBUaGUgdGFibGVCdWNrZXROYW1lLCByZWdpb24sIGFuZCBhY2NvdW50IGNhbiBiZSBwcm92aWRlZCBleHBsaWNpdGx5XG4gKiBvciB3aWxsIGJlIGluZmVycmVkIGZyb20gdGhlIHRhYmxlQnVja2V0QXJuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVCdWNrZXRBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIEFXUyByZWdpb24gdGhpcyB0YWJsZSBidWNrZXQgZXhpc3RzIGluXG4gICAqIEBkZWZhdWx0IHJlZ2lvbiBpbmZlcnJlZCBmcm9tIHNjb3BlXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50SWQgY29udGFpbmluZyB0aGlzIHRhYmxlIGJ1Y2tldFxuICAgKiBAZGVmYXVsdCBhY2NvdW50IGluZmVycmVkIGZyb20gc2NvcGVcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSBidWNrZXQgbmFtZSwgdW5pcXVlIHBlciByZWdpb25cbiAgICogQGRlZmF1bHQgdGFibGVCdWNrZXROYW1lIGluZmVycmVkIGZyb20gYXJuXG4gICAqL1xuICByZWFkb25seSB0YWJsZUJ1Y2tldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSBidWNrZXQncyBBUk4uXG4gICAqIEBkZWZhdWx0IHRhYmxlQnVja2V0QXJuIGNvbnN0cnVjdGVkIGZyb20gcmVnaW9uLCBhY2NvdW50IGFuZCB0YWJsZUJ1Y2tldE5hbWUgYXJlIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSB0YWJsZUJ1Y2tldEFybj86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgS01TIGVuY3J5cHRpb24ga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGJ1Y2tldC5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleTtcbn1cblxuLyoqXG4gKiBBbiBTMyB0YWJsZSBidWNrZXQgd2l0aCBoZWxwZXJzIGZvciBhc3NvY2lhdGVkIHJlc291cmNlIHBvbGljaWVzXG4gKlxuICogVGhpcyBidWNrZXQgbWF5IG5vdCB5ZXQgaGF2ZSBhbGwgZmVhdHVyZXMgdGhhdCBleHBvc2VkIGJ5IHRoZSB1bmRlcmx5aW5nIENmblRhYmxlQnVja2V0LlxuICpcbiAqIEBzdGF0ZWZ1bFxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHNhbXBsZVRhYmxlQnVja2V0ID0gbmV3IFRhYmxlQnVja2V0KHNjb3BlLCAnRXhhbXBsZVRhYmxlQnVja2V0Jywge1xuICogICB0YWJsZUJ1Y2tldE5hbWU6ICdleGFtcGxlLWJ1Y2tldCcsXG4gKiAgIC8vIE9wdGlvbmFsIGZpZWxkczpcbiAqICAgdW5yZWZlcmVuY2VkRmlsZVJlbW92YWw6IHtcbiAqICAgICBub25jdXJyZW50RGF5czogMTIzLFxuICogICAgIHN0YXR1czogVW5yZWZlcmVuY2VkRmlsZVJlbW92YWxTdGF0dXMuRU5BQkxFRCxcbiAqICAgICB1bnJlZmVyZW5jZWREYXlzOiAxMjMsXG4gKiAgIH0sXG4gKiB9KTtcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFRhYmxlQnVja2V0IGV4dGVuZHMgVGFibGVCdWNrZXRCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtczN0YWJsZXMtYWxwaGEuVGFibGVCdWNrZXQnO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgVGFibGVCdWNrZXQgY29uc3RydWN0IGZyb20gYW4gZXh0ZXJuYWwgdGFibGUgYnVja2V0IEFSTi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIHRhYmxlQnVja2V0QXJuIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChhcm4pIG9mIHRoZSB0YWJsZSBidWNrZXRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVRhYmxlQnVja2V0QXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHRhYmxlQnVja2V0QXJuOiBzdHJpbmcpOiBJVGFibGVCdWNrZXQge1xuICAgIHJldHVybiBUYWJsZUJ1Y2tldC5mcm9tVGFibGVCdWNrZXRBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyB0YWJsZUJ1Y2tldEFybiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgVGFibGVCdWNrZXQgY29uc3RydWN0IHRoYXQgcmVwcmVzZW50cyBhbiBleHRlcm5hbCB0YWJsZSBidWNrZXQuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApLlxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWUuXG4gICAqIEBwYXJhbSBhdHRycyBBIGBUYWJsZUJ1Y2tldEF0dHJpYnV0ZXNgIG9iamVjdC4gQ2FuIGJlIG1hbnVhbGx5IGNyZWF0ZWQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21UYWJsZUJ1Y2tldEF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBUYWJsZUJ1Y2tldEF0dHJpYnV0ZXMsXG4gICk6IElUYWJsZUJ1Y2tldCB7XG4gICAgY29uc3QgeyB0YWJsZUJ1Y2tldE5hbWUsIHJlZ2lvbiwgYWNjb3VudCwgdGFibGVCdWNrZXRBcm4gfSA9IHZhbGlkYXRlVGFibGVCdWNrZXRBdHRyaWJ1dGVzKHNjb3BlLCBhdHRycyk7XG4gICAgVGFibGVCdWNrZXQudmFsaWRhdGVUYWJsZUJ1Y2tldE5hbWUodGFibGVCdWNrZXROYW1lKTtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBUYWJsZUJ1Y2tldEJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhYmxlQnVja2V0TmFtZSA9IHRhYmxlQnVja2V0TmFtZSE7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFibGVCdWNrZXRBcm4gPSB0YWJsZUJ1Y2tldEFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YWJsZUJ1Y2tldFBvbGljeT86IFRhYmxlQnVja2V0UG9saWN5O1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJlZ2lvbiA9IHJlZ2lvbjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBhY2NvdW50ID0gYWNjb3VudDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXkgPSBhdHRycy5lbmNyeXB0aW9uS2V5O1xuICAgICAgcHJvdGVjdGVkIGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgICAgLyoqXG4gICAgICAgKiBFeHBvcnRzIHRoaXMgYnVja2V0IGZyb20gdGhlIHN0YWNrLlxuICAgICAgICovXG4gICAgICBwdWJsaWMgZXhwb3J0KCkge1xuICAgICAgICByZXR1cm4gYXR0cnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkLCB7XG4gICAgICBhY2NvdW50LFxuICAgICAgcmVnaW9uLFxuICAgICAgcGh5c2ljYWxOYW1lOiB0YWJsZUJ1Y2tldE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiB0aGUgZ2l2ZW4gdGFibGUgYnVja2V0IG5hbWUgaXMgbm90IHZhbGlkLlxuICAgKlxuICAgKiBAcGFyYW0gYnVja2V0TmFtZSBuYW1lIG9mIHRoZSBidWNrZXQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZhbGlkYXRlVGFibGVCdWNrZXROYW1lKFxuICAgIGJ1Y2tldE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgaWYgKGJ1Y2tldE5hbWUgPT0gdW5kZWZpbmVkIHx8IFRva2VuLmlzVW5yZXNvbHZlZChidWNrZXROYW1lKSkge1xuICAgICAgLy8gdGhlIG5hbWUgaXMgYSBsYXRlLWJvdW5kIHZhbHVlLCBub3QgYSBkZWZpbmVkIHN0cmluZywgc28gc2tpcCB2YWxpZGF0aW9uXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gTGVuZ3RoIHZhbGlkYXRpb25cbiAgICBpZiAoYnVja2V0TmFtZS5sZW5ndGggPCAzIHx8IGJ1Y2tldE5hbWUubGVuZ3RoID4gNjMpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnQnVja2V0IG5hbWUgbXVzdCBiZSBhdCBsZWFzdCAzIGFuZCBubyBtb3JlIHRoYW4gNjMgY2hhcmFjdGVycycsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENoYXJhY3RlciBzZXQgdmFsaWRhdGlvblxuICAgIGNvbnN0IGlsbGVnYWxDaGFyc2V0UmVnRXggPSAvW15hLXowLTktXS87XG4gICAgY29uc3QgYWxsb3dlZEVkZ2VDaGFyc2V0UmVnRXggPSAvW2EtejAtOV0vO1xuXG4gICAgY29uc3QgaWxsZWdhbENoYXJNYXRjaCA9IGJ1Y2tldE5hbWUubWF0Y2goaWxsZWdhbENoYXJzZXRSZWdFeCk7XG4gICAgaWYgKGlsbGVnYWxDaGFyTWF0Y2gpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnQnVja2V0IG5hbWUgbXVzdCBvbmx5IGNvbnRhaW4gbG93ZXJjYXNlIGNoYXJhY3RlcnMsIG51bWJlcnMsIGFuZCBoeXBoZW5zICgtKScgK1xuICAgICAgICAgIGAgKG9mZnNldDogJHtpbGxlZ2FsQ2hhck1hdGNoLmluZGV4fSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBFZGdlIGNoYXJhY3RlciB2YWxpZGF0aW9uXG4gICAgaWYgKCFhbGxvd2VkRWRnZUNoYXJzZXRSZWdFeC50ZXN0KGJ1Y2tldE5hbWUuY2hhckF0KDApKSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICdCdWNrZXQgbmFtZSBtdXN0IHN0YXJ0IHdpdGggYSBsb3dlcmNhc2UgbGV0dGVyIG9yIG51bWJlciAob2Zmc2V0OiAwKScsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhYWxsb3dlZEVkZ2VDaGFyc2V0UmVnRXgudGVzdChidWNrZXROYW1lLmNoYXJBdChidWNrZXROYW1lLmxlbmd0aCAtIDEpKVxuICAgICkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGBCdWNrZXQgbmFtZSBtdXN0IGVuZCB3aXRoIGEgbG93ZXJjYXNlIGxldHRlciBvciBudW1iZXIgKG9mZnNldDogJHtcbiAgICAgICAgICBidWNrZXROYW1lLmxlbmd0aCAtIDFcbiAgICAgICAgfSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgUzMgdGFibGUgYnVja2V0IG5hbWUgKHZhbHVlOiAke2J1Y2tldE5hbWV9KSR7RU9MfSR7ZXJyb3JzLmpvaW4oRU9MKX1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiB0aGUgZ2l2ZW4gdW5yZWZlcmVuY2VkRmlsZVJlbW92YWxQcm9wZXJ0eSBpcyBub3QgdmFsaWQuXG4gICAqIEBwYXJhbSB1bnJlZmVyZW5jZWRGaWxlUmVtb3ZhbCBjb25maWd1cmF0aW9uIGZvciB0aGUgdGFibGUgYnVja2V0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZhbGlkYXRlVW5yZWZlcmVuY2VkRmlsZVJlbW92YWwoXG4gICAgdW5yZWZlcmVuY2VkRmlsZVJlbW92YWw/OiBVbnJlZmVyZW5jZWRGaWxlUmVtb3ZhbCxcbiAgKTogdm9pZCB7XG4gICAgLy8gU2tpcCB2YWxpZGF0aW9uIGlmIHByb3BlcnR5IGlzIG5vdCBkZWZpbmVkXG4gICAgaWYgKCF1bnJlZmVyZW5jZWRGaWxlUmVtb3ZhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbm9uY3VycmVudERheXMsIHN0YXR1cywgdW5yZWZlcmVuY2VkRGF5cyB9ID0gdW5yZWZlcmVuY2VkRmlsZVJlbW92YWw7XG5cbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAobm9uY3VycmVudERheXMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAobm9uY3VycmVudERheXMgPCAxKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKCdub25jdXJyZW50RGF5cyBtdXN0IGJlIGF0IGxlYXN0IDEgZGF5Jyk7XG4gICAgICB9XG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIobm9uY3VycmVudERheXMpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKCdub25jdXJyZW50RGF5cyBtdXN0IGJlIGEgd2hvbGUgbnVtYmVyJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVucmVmZXJlbmNlZERheXMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodW5yZWZlcmVuY2VkRGF5cyA8IDEpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goJ3VucmVmZXJlbmNlZERheXMgbXVzdCBiZSBhdCBsZWFzdCAxIGRheScpO1xuICAgICAgfVxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKG5vbmN1cnJlbnREYXlzKSkge1xuICAgICAgICBlcnJvcnMucHVzaCgndW5yZWZlcmVuY2VkRGF5cyBtdXN0IGJlIGEgd2hvbGUgbnVtYmVyJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYWxsb3dlZFN0YXR1cyA9IFsnRW5hYmxlZCcsICdEaXNhYmxlZCddO1xuICAgIGlmIChzdGF0dXMgIT0gdW5kZWZpbmVkICYmICFhbGxvd2VkU3RhdHVzLmluY2x1ZGVzKHN0YXR1cykpIHtcbiAgICAgIGVycm9ycy5wdXNoKCdzdGF0dXMgbXVzdCBiZSBvbmUgb2YgXFwnRW5hYmxlZFxcJyBvciBcXCdEaXNhYmxlZFxcJycpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBgSW52YWxpZCBVbnJlZmVyZW5jZWRGaWxlUmVtb3ZhbFByb3BlcnR5fSkke0VPTH0ke2Vycm9ycy5qb2luKEVPTCl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIENmblRhYmxlQnVja2V0IEwxIHJlc291cmNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzb3VyY2U6IHMzdGFibGVzLkNmblRhYmxlQnVja2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgcG9saWN5IGZvciB0aGlzIHRhYmxlQnVja2V0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlQnVja2V0UG9saWN5PzogVGFibGVCdWNrZXRQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgQW1hem9uIFJlc291cmNlIE5hbWUgKGFybikgb2YgdGhpcyB0YWJsZSBidWNrZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWJsZUJ1Y2tldEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHRhYmxlIGJ1Y2tldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlQnVja2V0TmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXkgfCB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBUYWJsZUJ1Y2tldFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLnRhYmxlQnVja2V0TmFtZSxcbiAgICB9KTtcblxuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgVGFibGVCdWNrZXQudmFsaWRhdGVUYWJsZUJ1Y2tldE5hbWUocHJvcHMudGFibGVCdWNrZXROYW1lKTtcbiAgICBUYWJsZUJ1Y2tldC52YWxpZGF0ZVVucmVmZXJlbmNlZEZpbGVSZW1vdmFsKHByb3BzLnVucmVmZXJlbmNlZEZpbGVSZW1vdmFsKTtcbiAgICBjb25zdCB7IGJ1Y2tldEVuY3J5cHRpb24sIGVuY3J5cHRpb25LZXkgfSA9IHRoaXMucGFyc2VFbmNyeXB0aW9uKHByb3BzKTtcbiAgICB0aGlzLmVuY3J5cHRpb25LZXkgPSBlbmNyeXB0aW9uS2V5O1xuXG4gICAgdGhpcy5fcmVzb3VyY2UgPSBuZXcgczN0YWJsZXMuQ2ZuVGFibGVCdWNrZXQodGhpcywgaWQsIHtcbiAgICAgIHRhYmxlQnVja2V0TmFtZTogcHJvcHMudGFibGVCdWNrZXROYW1lLFxuICAgICAgdW5yZWZlcmVuY2VkRmlsZVJlbW92YWw6IHtcbiAgICAgICAgLi4ucHJvcHMudW5yZWZlcmVuY2VkRmlsZVJlbW92YWwsXG4gICAgICAgIG5vbmN1cnJlbnREYXlzOiBwcm9wcy51bnJlZmVyZW5jZWRGaWxlUmVtb3ZhbD8ubm9uY3VycmVudERheXMsXG4gICAgICAgIHVucmVmZXJlbmNlZERheXM6IHByb3BzLnVucmVmZXJlbmNlZEZpbGVSZW1vdmFsPy51bnJlZmVyZW5jZWREYXlzLFxuICAgICAgfSxcbiAgICAgIGVuY3J5cHRpb25Db25maWd1cmF0aW9uOiBidWNrZXRFbmNyeXB0aW9uLFxuICAgIH0pO1xuXG4gICAgdGhpcy50YWJsZUJ1Y2tldE5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh0aGlzLl9yZXNvdXJjZS5yZWYpO1xuICAgIHRoaXMudGFibGVCdWNrZXRBcm4gPSB0aGlzLl9yZXNvdXJjZS5hdHRyVGFibGVCdWNrZXRBcm47XG4gICAgdGhpcy5fcmVzb3VyY2UuYXBwbHlSZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBrZXkgcHJvcGVydGllcyBhbmQgcmV0dXJuIHRoZSBCdWNrZXQgZW5jcnlwdGlvbiBwcm9wZXJ0eSBmcm9tIHRoZVxuICAgKiB1c2VyJ3MgY29uZmlndXJhdGlvbiwgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgdGFibGU6XG4gICAqXG4gICAqIHwgcHJvcHMuZW5jcnlwdGlvbiB8IHByb3BzLmVuY3J5cHRpb25LZXkgfCBidWNrZXRFbmNyeXB0aW9uIChyZXR1cm4gdmFsdWUpIHwgZW5jcnlwdGlvbktleSAocmV0dXJuIHZhbHVlKSAgfFxuICAgKiB8LS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAgICogfCB1bmRlZmluZWQgICAgICAgIHwgdW5kZWZpbmVkICAgICAgICAgICB8IHVuZGVmaW5lZCAgICAgICAgICAgICAgICAgICAgICAgfCB1bmRlZmluZWQgICAgICAgICAgICAgICAgICAgICB8XG4gICAqIHwgdW5kZWZpbmVkICAgICAgICB8IGsgICAgICAgICAgICAgICAgICAgfCBhd3M6a21zICAgICAgICAgICAgICAgICAgICAgICAgIHwgayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKiB8IEtNUyAgICAgICAgICAgICAgfCB1bmRlZmluZWQgICAgICAgICAgIHwgYXdzOmttcyAgICAgICAgICAgICAgICAgICAgICAgICB8IG5ldyBrZXkgKGFsbG93IG1haW50ZW5hbmNlIFNQKXxcbiAgICogfCBLTVMgICAgICAgICAgICAgIHwgayAgICAgICAgICAgICAgICAgICB8IGF3czprbXMgICAgICAgICAgICAgICAgICAgICAgICAgfCBrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAqIHwgUzNfTUFOQUdFRCAgICAgICB8IHVuZGVmaW5lZCAgICAgICAgICAgfCBBRVMyNTYgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkICAgICAgICAgICAgICAgICAgICAgfFxuICAgKiB8IFMzX01BTkFHRUQgICAgICAgfCBrICAgICAgICAgICAgICAgICAgIHwgRVJST1IhICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVSUk9SISAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICovXG4gIHByaXZhdGUgcGFyc2VFbmNyeXB0aW9uKHByb3BzOiBUYWJsZUJ1Y2tldFByb3BzKToge1xuICAgIGJ1Y2tldEVuY3J5cHRpb24/OiBzM3RhYmxlcy5DZm5UYWJsZUJ1Y2tldC5FbmNyeXB0aW9uQ29uZmlndXJhdGlvblByb3BlcnR5O1xuICAgIGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleTtcbiAgfSB7XG4gICAgY29uc3QgZW5jcnlwdGlvblR5cGUgPSBwcm9wcy5lbmNyeXB0aW9uO1xuICAgIGxldCBrZXkgPSBwcm9wcy5lbmNyeXB0aW9uS2V5O1xuXG4gICAgaWYgKGVuY3J5cHRpb25UeXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIHJldHVybiB7IGJ1Y2tldEVuY3J5cHRpb246IHVuZGVmaW5lZCwgZW5jcnlwdGlvbktleTogdW5kZWZpbmVkIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGJ1Y2tldEVuY3J5cHRpb246IHtcbiAgICAgICAgICAgIGttc0tleUFybjoga2V5LmtleUFybixcbiAgICAgICAgICAgIHNzZUFsZ29yaXRobTogVGFibGVCdWNrZXRFbmNyeXB0aW9uLktNUyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVuY3J5cHRpb25LZXk6IGtleSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW5jcnlwdGlvblR5cGUgPT09IFRhYmxlQnVja2V0RW5jcnlwdGlvbi5LTVMpIHtcbiAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIGtleSA9IG5ldyBrbXMuS2V5KHRoaXMsICdLZXknLCB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGBDcmVhdGVkIGJ5ICR7dGhpcy5ub2RlLnBhdGh9YCxcbiAgICAgICAgICBlbmFibGVLZXlSb3RhdGlvbjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWxsb3dUYWJsZXNNYWludGVuYW5jZUFjY2Vzc1RvS2V5KGtleSwgcHJvcHMudGFibGVCdWNrZXROYW1lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJ1Y2tldEVuY3J5cHRpb246IHtcbiAgICAgICAgICBrbXNLZXlBcm46IGtleS5rZXlBcm4sXG4gICAgICAgICAgc3NlQWxnb3JpdGhtOiBUYWJsZUJ1Y2tldEVuY3J5cHRpb24uS01TLFxuICAgICAgICB9LFxuICAgICAgICBlbmNyeXB0aW9uS2V5OiBrZXksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChlbmNyeXB0aW9uVHlwZSA9PT0gVGFibGVCdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQpIHtcbiAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYnVja2V0RW5jcnlwdGlvbjoge1xuICAgICAgICAgICAgc3NlQWxnb3JpdGhtOiBUYWJsZUJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKCdFeHBlY3RlZCBlbmNyeXB0aW9uID0gYEtNU2Agd2l0aCB1c2VyIHByb3ZpZGVkIGVuY3J5cHRpb24ga2V5Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihgVW5rbm93biBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gZGV0ZWN0ZWQ6ICR7cHJvcHMuZW5jcnlwdGlvbn0gd2l0aCBrZXkgJHtwcm9wcy5lbmNyeXB0aW9uS2V5fWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93bGlzdCBTMyBUYWJsZXMgTWFpbnRlbmFuY2UgdG8gYWNjZXNzIHRoaXMgdGFibGUgYnVja2V0J3MgZW5jcnlwdGlvbiBrZXlcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZXMta21zLXBlcm1pc3Npb25zLmh0bWxcbiAgICogQHBhcmFtIGVuY3J5cHRpb25LZXkgVGhlIGtleSB0byBwcm92aWRlIGFjY2VzcyB0b1xuICAgKi9cbiAgcHJpdmF0ZSBhbGxvd1RhYmxlc01haW50ZW5hbmNlQWNjZXNzVG9LZXkoZW5jcnlwdGlvbktleToga21zLklLZXksIHRhYmxlQnVja2V0TmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVnaW9uID0gdGhpcy5zdGFjay5yZWdpb247XG4gICAgY29uc3QgYWNjb3VudCA9IHRoaXMuc3RhY2suYWNjb3VudDtcbiAgICBjb25zdCBwYXJ0aXRpb24gPSB0aGlzLnN0YWNrLnBhcnRpdGlvbjtcblxuICAgIGVuY3J5cHRpb25LZXkuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6ICdBbGxvd1MzVGFibGVzTWFpbnRlbmFuY2VBY2Nlc3MnLFxuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgcHJpbmNpcGFsczogW1xuICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ21haW50ZW5hbmNlLnMzdGFibGVzLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdrbXM6R2VuZXJhdGVEYXRhS2V5JyxcbiAgICAgICAgJ2ttczpEZWNyeXB0JyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBTdHJpbmdMaWtlOiB7XG4gICAgICAgICAgJ2ttczpFbmNyeXB0aW9uQ29udGV4dDphd3M6czM6YXJuJzogYGFybjoke3BhcnRpdGlvbn06czN0YWJsZXM6JHtyZWdpb259OiR7YWNjb3VudH06YnVja2V0LyR7dGFibGVCdWNrZXROYW1lfS8qYCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSkpO1xuICB9XG59XG5cbiJdfQ==
|
|
469
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGFibGUtYnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJCQUF5QjtBQUN6QiwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBQzNDLHFEQUFxRDtBQUNyRCwyQ0FBc0c7QUFDdEcsNEVBQXVFO0FBQ3ZFLDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFFMUUsdUNBQXVDO0FBQ3ZDLCtEQUEwRDtBQUMxRCxpQ0FBdUQ7QUEwSHZEOztHQUVHO0FBQ0gsSUFBWSw2QkFVWDtBQVZELFdBQVksNkJBQTZCO0lBQ3ZDOztPQUVHO0lBQ0gsb0RBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCxzREFBcUIsQ0FBQTtBQUN2QixDQUFDLEVBVlcsNkJBQTZCLDZDQUE3Qiw2QkFBNkIsUUFVeEM7QUFFRDs7R0FFRztBQUNILElBQVkscUJBV1g7QUFYRCxXQUFZLHFCQUFxQjtJQUMvQjs7O09BR0c7SUFDSCx3Q0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCw4Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBWFcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFXaEM7QUFFRCxNQUFlLGVBQWdCLFNBQVEsZUFBUTtJQW9CN0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtQkc7SUFDSSxtQkFBbUIsQ0FDeEIsU0FBOEI7UUFFOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSx1Q0FBaUIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO2dCQUNwRSxXQUFXLEVBQUUsSUFBSTthQUNsQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsaUJBQWlCLENB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QkFDVixJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxvQ0FBb0MsQ0FBQztpQkFDL0Q7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLHFCQUFxQjtvQkFDckIsYUFBYTtpQkFDZDtnQkFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7Z0JBQ2hCLFVBQVUsRUFBRTtvQkFDVixVQUFVLEVBQUU7d0JBQ1Ysa0NBQWtDLEVBQUUsT0FBTyxTQUFTLGFBQWEsTUFBTSxJQUFJLE9BQU8sV0FBVyxlQUFlLElBQUk7cUJBQ2pIO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDLENBQUM7U0FDTDs7WUFsVFUsdURBQVc7Ozs7O0FBQVgsa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFT0wgfSBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBzM3RhYmxlcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczN0YWJsZXMnO1xuaW1wb3J0IHsgUmVzb3VyY2UsIElSZXNvdXJjZSwgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IsIFJlbW92YWxQb2xpY3ksIFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBtZW1vaXplZEdldHRlciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBwZXJtcyBmcm9tICcuL3Blcm1pc3Npb25zJztcbmltcG9ydCB7IFRhYmxlQnVja2V0UG9saWN5IH0gZnJvbSAnLi90YWJsZS1idWNrZXQtcG9saWN5JztcbmltcG9ydCB7IHZhbGlkYXRlVGFibGVCdWNrZXRBdHRyaWJ1dGVzIH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgUzMgVGFibGUgQnVja2V0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUJ1Y2tldCBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB0YWJsZSBidWNrZXQuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlQnVja2V0QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBidWNrZXQuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlQnVja2V0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudElkIGNvbnRhaW5pbmcgdGhlIHRhYmxlIGJ1Y2tldC5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbiBjb250YWluaW5nIHRoZSB0YWJsZSBidWNrZXQuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgS01TIGVuY3J5cHRpb24ga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhYmxlIGJ1Y2tldC5cbiAgICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleTtcblxuICAvKipcbiAgICogQWRkcyBhIHN0YXRlbWVudCB0byB0aGUgcmVzb3VyY2UgcG9saWN5IGZvciBhIHByaW5jaXBhbCAoaS5lLlxuICAgKiBhY2NvdW50L3JvbGUvc2VydmljZSkgdG8gcGVyZm9ybSBhY3Rpb25zIG9uIHRoaXMgdGFibGUgYnVja2V0IGFuZC9vciBpdHNcbiAgICogdGFibGVzLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIHBvbGljeSBzdGF0ZW1lbnQgbWF5IG9yIG1heSBub3QgYmUgYWRkZWQgdG8gdGhlIHBvbGljeS5cbiAgICogRm9yIGV4YW1wbGUsIHdoZW4gYW4gYElUYWJsZUJ1Y2tldGAgaXMgY3JlYXRlZCBmcm9tIGFuIGV4aXN0aW5nIHRhYmxlIGJ1Y2tldCxcbiAgICogaXQncyBub3QgcG9zc2libGUgdG8gdGVsbCB3aGV0aGVyIHRoZSBidWNrZXQgYWxyZWFkeSBoYXMgYSBwb2xpY3lcbiAgICogYXR0YWNoZWQsIGxldCBhbG9uZSB0byByZS11c2UgdGhhdCBwb2xpY3kgdG8gYWRkIG1vcmUgc3RhdGVtZW50cyB0byBpdC5cbiAgICogU28gaXQncyBzYWZlc3QgdG8gZG8gbm90aGluZyBpbiB0aGVzZSBjYXNlcy5cbiAgICpcbiAgICogQHBhcmFtIHN0YXRlbWVudCB0aGUgcG9saWN5IHN0YXRlbWVudCB0byBiZSBhZGRlZCB0byB0aGUgYnVja2V0J3NcbiAgICogcG9saWN5LlxuICAgKiBAcmV0dXJucyBtZXRhZGF0YSBhYm91dCB0aGUgZXhlY3V0aW9uIG9mIHRoaXMgbWV0aG9kLiBJZiB0aGUgcG9saWN5XG4gICAqIHdhcyBub3QgYWRkZWQsIHRoZSB2YWx1ZSBvZiBgc3RhdGVtZW50QWRkZWRgIHdpbGwgYmUgYGZhbHNlYC4gWW91XG4gICAqIHNob3VsZCBhbHdheXMgY2hlY2sgdGhpcyB2YWx1ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgb3BlcmF0aW9uIHdhc1xuICAgKiBhY3R1YWxseSBjYXJyaWVkIG91dC4gT3RoZXJ3aXNlLCBzeW50aGVzaXMgYW5kIGRlcGxveSB3aWxsIHRlcm1pbmF0ZVxuICAgKiBzaWxlbnRseSwgd2hpY2ggbWF5IGJlIGNvbmZ1c2luZy5cbiAgICovXG4gIGFkZFRvUmVzb3VyY2VQb2xpY3koc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50KTogaWFtLkFkZFRvUmVzb3VyY2VQb2xpY3lSZXN1bHQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgZm9yIHRoaXMgdGFibGUgYnVja2V0IGFuZCBpdHMgdGFibGVzXG4gICAqIHRvIGFuIElBTSBwcmluY2lwYWwgKFJvbGUvR3JvdXAvVXNlcikuXG4gICAqXG4gICAqIElmIGVuY3J5cHRpb24gaXMgdXNlZCwgcGVybWlzc2lvbiB0byB1c2UgdGhlIGtleSB0byBkZWNyeXB0IHRoZSBjb250ZW50c1xuICAgKiBvZiB0aGUgYnVja2V0IHdpbGwgYWxzbyBiZSBncmFudGVkIHRvIHRoZSBzYW1lIHByaW5jaXBhbC5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aXR5IFRoZSBwcmluY2lwYWwgdG8gYWxsb3cgcmVhZCBwZXJtaXNzaW9ucyB0b1xuICAgKiBAcGFyYW0gdGFibGVJZCBBbGxvdyB0aGUgcGVybWlzc2lvbnMgdG8gYWxsIHRhYmxlcyB1c2luZyAnKicgb3IgdG8gc2luZ2xlIHRhYmxlIGJ5IGl0cyB1bmlxdWUgSUQuXG4gICAqL1xuICBncmFudFJlYWQoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlLCB0YWJsZUlkOiBzdHJpbmcpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHdyaXRlIHBlcm1pc3Npb25zIGZvciB0aGlzIHRhYmxlIGJ1Y2tldCBhbmQgaXRzIHRhYmxlc1xuICAgKiB0byBhbiBJQU0gcHJpbmNpcGFsIChSb2xlL0dyb3VwL1VzZXIpLlxuICAgKlxuICAgKiBJZiBlbmNyeXB0aW9uIGlzIHVzZWQsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBrZXkgdG8gZW5jcnlwdCB0aGUgY29udGVudHNcbiAgICogb2YgdGhlIGJ1Y2tldCB3aWxsIGFsc28gYmUgZ3JhbnRlZCB0byB0aGUgc2FtZSBwcmluY2lwYWwuXG4gICAqXG4gICAqIEBwYXJhbSBpZGVudGl0eSBUaGUgcHJpbmNpcGFsIHRvIGFsbG93IHdyaXRlIHBlcm1pc3Npb25zIHRvXG4gICAqIEBwYXJhbSB0YWJsZUlkIEFsbG93IHRoZSBwZXJtaXNzaW9ucyB0byBhbGwgdGFibGVzIHVzaW5nICcqJyBvciB0byBzaW5nbGUgdGFibGUgYnkgaXRzIHVuaXF1ZSBJRC5cbiAgICovXG4gIGdyYW50V3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlLCB0YWJsZUlkOiBzdHJpbmcpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgYW5kIHdyaXRlIHBlcm1pc3Npb25zIGZvciB0aGlzIHRhYmxlIGJ1Y2tldCBhbmQgaXRzIHRhYmxlc1xuICAgKiB0byBhbiBJQU0gcHJpbmNpcGFsIChSb2xlL0dyb3VwL1VzZXIpLlxuICAgKlxuICAgKiBJZiBlbmNyeXB0aW9uIGlzIHVzZWQsIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBrZXkgdG8gZW5jcnlwdC9kZWNyeXB0IHRoZSBjb250ZW50c1xuICAgKiBvZiB0aGUgYnVja2V0IHdpbGwgYWxzbyBiZSBncmFudGVkIHRvIHRoZSBzYW1lIHByaW5jaXBhbC5cbiAgICpcbiAgICogQHBhcmFtIGlkZW50aXR5IFRoZSBwcmluY2lwYWwgdG8gYWxsb3cgcmVhZCBhbmQgd3JpdGUgcGVybWlzc2lvbnMgdG9cbiAgICogQHBhcmFtIHRhYmxlSWQgQWxsb3cgdGhlIHBlcm1pc3Npb25zIHRvIGFsbCB0YWJsZXMgdXNpbmcgJyonIG9yIHRvIHNpbmdsZSB0YWJsZSBieSBpdHMgdW5pcXVlIElELlxuICAgKi9cbiAgZ3JhbnRSZWFkV3JpdGUoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlLCB0YWJsZUlkOiBzdHJpbmcpOiBpYW0uR3JhbnQ7XG59XG5cbi8qKlxuICogVW5yZWZlcmVuY2VkIGZpbGUgcmVtb3ZhbCBzZXR0aW5ncyBmb3IgdGhlIHRoaXMgdGFibGUgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVucmVmZXJlbmNlZEZpbGVSZW1vdmFsIHtcbiAgLyoqXG4gICAqIER1cmF0aW9uIGFmdGVyIHdoaWNoIG5vbmN1cnJlbnQgZmlsZXMgc2hvdWxkIGJlIHJlbW92ZWQuIFNob3VsZCBiZSBhdCBsZWFzdCBvbmUgZGF5LlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL3MzLXRhYmxlLWJ1Y2tldHMtbWFpbnRlbmFuY2UuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFNlZSBTMyBUYWJsZXMgVXNlciBHdWlkZVxuICAgKi9cbiAgcmVhZG9ubHkgbm9uY3VycmVudERheXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFN0YXR1cyBvZiB1bnJlZmVyZW5jZWQgZmlsZSByZW1vdmFsLiBDYW4gYmUgRW5hYmxlZCBvciBEaXNhYmxlZC5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZS1idWNrZXRzLW1haW50ZW5hbmNlLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBTZWUgUzMgVGFibGVzIFVzZXIgR3VpZGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IFVucmVmZXJlbmNlZEZpbGVSZW1vdmFsU3RhdHVzO1xuXG4gIC8qKlxuICAgKiBEdXJhdGlvbiBhZnRlciB3aGljaCB1bnJlZmVyZW5jZWQgZmlsZXMgc2hvdWxkIGJlIHJlbW92ZWQuIFNob3VsZCBiZSBhdCBsZWFzdCBvbmUgZGF5LlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL3MzLXRhYmxlLWJ1Y2tldHMtbWFpbnRlbmFuY2UuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFNlZSBTMyBUYWJsZXMgVXNlciBHdWlkZVxuICAgKi9cbiAgcmVhZG9ubHkgdW5yZWZlcmVuY2VkRGF5cz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb250cm9scyB3aGV0aGVyIHVucmVmZXJlbmNlZCBmaWxlIHJlbW92YWwgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC5cbiAqL1xuZXhwb3J0IGVudW0gVW5yZWZlcmVuY2VkRmlsZVJlbW92YWxTdGF0dXMge1xuICAvKipcbiAgICogRW5hYmxlIHVucmVmZXJlbmNlZCBmaWxlIHJlbW92YWwuXG4gICAqL1xuICBFTkFCTEVEID0gJ0VuYWJsZWQnLFxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIHVucmVmZXJlbmNlZCBmaWxlIHJlbW92YWwuXG4gICAqL1xuICBESVNBQkxFRCA9ICdEaXNhYmxlZCcsXG59XG5cbi8qKlxuICogQ29udHJvbHMgU2VydmVyIFNpZGUgRW5jcnlwdGlvbiAoU1NFKSBmb3IgdGhpcyBUYWJsZUJ1Y2tldC5cbiAqL1xuZXhwb3J0IGVudW0gVGFibGVCdWNrZXRFbmNyeXB0aW9uIHtcbiAgLyoqXG4gICAqIFVzZSBhIGN1c3RvbWVyIGRlZmluZWQgS01TIGtleSBmb3IgZW5jcnlwdGlvblxuICAgKiBJZiBgZW5jcnlwdGlvbktleWAgaXMgc3BlY2lmaWVkLCB0aGlzIGtleSB3aWxsIGJlIHVzZWQsIG90aGVyd2lzZSwgb25lIHdpbGwgYmUgZGVmaW5lZC5cbiAgICovXG4gIEtNUyA9ICdhd3M6a21zJyxcblxuICAvKipcbiAgICogVXNlIFMzIG1hbmFnZWQgZW5jcnlwdGlvbiBrZXlzIHdpdGggQUVTMjU2IGVuY3J5cHRpb25cbiAgICovXG4gIFMzX01BTkFHRUQgPSAnQUVTMjU2Jyxcbn1cblxuYWJzdHJhY3QgY2xhc3MgVGFibGVCdWNrZXRCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVGFibGVCdWNrZXQge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdGFibGVCdWNrZXRBcm46IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHRhYmxlQnVja2V0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhYmxlIGJ1Y2tldC5cbiAgICpcbiAgICogSWYgYGF1dG9DcmVhdGVQb2xpY3lgIGlzIHRydWUsIGEgYFRhYmxlQnVja2V0UG9saWN5YCB3aWxsIGJlIGNyZWF0ZWQgdXBvbiB0aGVcbiAgICogZmlyc3QgY2FsbCB0byBhZGRUb1Jlc291cmNlUG9saWN5KHMpLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHRhYmxlQnVja2V0UG9saWN5PzogVGFibGVCdWNrZXRQb2xpY3k7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiBhIHRhYmxlIGJ1Y2tldCByZXNvdXJjZSBwb2xpY3kgc2hvdWxkIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB1cG9uXG4gICAqIHRoZSBmaXJzdCBjYWxsIHRvIGBhZGRUb1Jlc291cmNlUG9saWN5YC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBhdXRvQ3JlYXRlUG9saWN5OiBib29sZWFuO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXkgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBzdGF0ZW1lbnQgdG8gdGhlIHJlc291cmNlIHBvbGljeSBmb3IgYSBwcmluY2lwYWwgKGkuZS5cbiAgICogYWNjb3VudC9yb2xlL3NlcnZpY2UpIHRvIHBlcmZvcm0gYWN0aW9ucyBvbiB0aGlzIHRhYmxlIGJ1Y2tldCBhbmQvb3IgaXRzXG4gICAqIGNvbnRlbnRzLiBVc2UgYHRhYmxlQnVja2V0QXJuYCBhbmQgYGFybkZvck9iamVjdHMoa2V5cylgIHRvIG9idGFpbiBBUk5zIGZvclxuICAgKiB0aGlzIGJ1Y2tldCBvciBvYmplY3RzLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIHBvbGljeSBzdGF0ZW1lbnQgbWF5IG9yIG1heSBub3QgYmUgYWRkZWQgdG8gdGhlIHBvbGljeS5cbiAgICogRm9yIGV4YW1wbGUsIHdoZW4gYW4gYElUYWJsZUJ1Y2tldGAgaXMgY3JlYXRlZCBmcm9tIGFuIGV4aXN0aW5nIHRhYmxlIGJ1Y2tldCxcbiAgICogaXQncyBub3QgcG9zc2libGUgdG8gdGVsbCB3aGV0aGVyIHRoZSBidWNrZXQgYWxyZWFkeSBoYXMgYSBwb2xpY3lcbiAgICogYXR0YWNoZWQsIGxldCBhbG9uZSB0byByZS11c2UgdGhhdCBwb2xpY3kgdG8gYWRkIG1vcmUgc3RhdGVtZW50cyB0byBpdC5cbiAgICogU28gaXQncyBzYWZlc3QgdG8gZG8gbm90aGluZyBpbiB0aGVzZSBjYXNlcy5cbiAgICpcbiAgICogQHBhcmFtIHN0YXRlbWVudCB0aGUgcG9saWN5IHN0YXRlbWVudCB0byBiZSBhZGRlZCB0byB0aGUgYnVja2V0J3NcbiAgICogcG9saWN5LlxuICAgKiBAcmV0dXJucyBtZXRhZGF0YSBhYm91dCB0aGUgZXhlY3V0aW9uIG9mIHRoaXMgbWV0aG9kLiBJZiB0aGUgcG9saWN5XG4gICAqIHdhcyBub3QgYWRkZWQsIHRoZSB2YWx1ZSBvZiBgc3RhdGVtZW50QWRkZWRgIHdpbGwgYmUgYGZhbHNlYC4gWW91XG4gICAqIHNob3VsZCBhbHdheXMgY2hlY2sgdGhpcyB2YWx1ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgb3BlcmF0aW9uIHdhc1xuICAgKiBhY3R1YWxseSBjYXJyaWVkIG91dC4gT3RoZXJ3aXNlLCBzeW50aGVzaXMgYW5kIGRlcGxveSB3aWxsIHRlcm1pbmF0ZVxuICAgKiBzaWxlbnRseSwgd2hpY2ggbWF5IGJlIGNvbmZ1c2luZy5cbiAgICovXG4gIHB1YmxpYyBhZGRUb1Jlc291cmNlUG9saWN5KFxuICAgIHN0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCxcbiAgKTogaWFtLkFkZFRvUmVzb3VyY2VQb2xpY3lSZXN1bHQge1xuICAgIGlmICghdGhpcy50YWJsZUJ1Y2tldFBvbGljeSAmJiB0aGlzLmF1dG9DcmVhdGVQb2xpY3kpIHtcbiAgICAgIHRoaXMudGFibGVCdWNrZXRQb2xpY3kgPSBuZXcgVGFibGVCdWNrZXRQb2xpY3kodGhpcywgJ0RlZmF1bHRQb2xpY3knLCB7XG4gICAgICAgIHRhYmxlQnVja2V0OiB0aGlzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGVCdWNrZXRQb2xpY3kpIHtcbiAgICAgIHRoaXMudGFibGVCdWNrZXRQb2xpY3kuZG9jdW1lbnQuYWRkU3RhdGVtZW50cyhzdGF0ZW1lbnQpO1xuICAgICAgcmV0dXJuIHsgc3RhdGVtZW50QWRkZWQ6IHRydWUsIHBvbGljeURlcGVuZGFibGU6IHRoaXMudGFibGVCdWNrZXRQb2xpY3kgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogZmFsc2UgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoaWRlbnRpdHk6IGlhbS5JR3JhbnRhYmxlLCB0YWJsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChcbiAgICAgIGlkZW50aXR5LFxuICAgICAgcGVybXMuVEFCTEVfQlVDS0VUX1JFQURfQUNDRVNTLFxuICAgICAgcGVybXMuS0VZX1JFQURfQUNDRVNTLFxuICAgICAgdGhpcy50YWJsZUJ1Y2tldEFybixcbiAgICAgIHRoaXMuZ2V0VGFibGVBcm4odGFibGVJZCksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIHB1YmxpYyBncmFudFdyaXRlKGlkZW50aXR5OiBpYW0uSUdyYW50YWJsZSwgdGFibGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoXG4gICAgICBpZGVudGl0eSxcbiAgICAgIHBlcm1zLlRBQkxFX0JVQ0tFVF9XUklURV9BQ0NFU1MsXG4gICAgICBwZXJtcy5LRVlfUkVBRF9XUklURV9BQ0NFU1MsXG4gICAgICB0aGlzLnRhYmxlQnVja2V0QXJuLFxuICAgICAgdGhpcy5nZXRUYWJsZUFybih0YWJsZUlkKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZFdyaXRlKGlkZW50aXR5OiBpYW0uSUdyYW50YWJsZSwgdGFibGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoXG4gICAgICBpZGVudGl0eSxcbiAgICAgIHBlcm1zLlRBQkxFX0JVQ0tFVF9SRUFEX1dSSVRFX0FDQ0VTUyxcbiAgICAgIHBlcm1zLktFWV9XUklURV9BQ0NFU1MsXG4gICAgICB0aGlzLnRhYmxlQnVja2V0QXJuLFxuICAgICAgdGhpcy5nZXRUYWJsZUFybih0YWJsZUlkKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZ2l2ZW4gczN0YWJsZXMgcGVybWlzc2lvbnMgdG8gdGhlIHByb3ZpZGVkIHByaW5jaXBhbFxuICAgKiBAcmV0dXJucyBHcmFudCBvYmplY3RcbiAgICovXG4gIHByaXZhdGUgZ3JhbnQoXG4gICAgZ3JhbnRlZTogaWFtLklHcmFudGFibGUsXG4gICAgdGFibGVCdWNrZXRBY3Rpb25zOiBzdHJpbmdbXSxcbiAgICBrZXlBY3Rpb25zOiBzdHJpbmdbXSxcbiAgICByZXNvdXJjZUFybjogc3RyaW5nLFxuICAgIC4uLm90aGVyUmVzb3VyY2VBcm5zOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdKSB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gW3Jlc291cmNlQXJuLCAuLi5vdGhlclJlc291cmNlQXJuc10uZmlsdGVyKGFybiA9PiBhcm4gIT0gdW5kZWZpbmVkKTtcblxuICAgIGNvbnN0IGdyYW50ID0gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsT3JSZXNvdXJjZSh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9uczogdGFibGVCdWNrZXRBY3Rpb25zLFxuICAgICAgcmVzb3VyY2VBcm5zOiByZXNvdXJjZXMsXG4gICAgICByZXNvdXJjZTogdGhpcyxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmVuY3J5cHRpb25LZXkgJiYga2V5QWN0aW9ucyAmJiBrZXlBY3Rpb25zLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5lbmNyeXB0aW9uS2V5LmdyYW50KGdyYW50ZWUsIC4uLmtleUFjdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBncmFudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFibGVBcm4odGFibGVJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHRhYmxlSWQgPyBgJHt0aGlzLnRhYmxlQnVja2V0QXJufS90YWJsZS8ke3RhYmxlSWR9YCA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIGNvbnN0cnVjdGluZyBhIFRhYmxlQnVja2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVCdWNrZXRQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBTMyBUYWJsZUJ1Y2tldC5cbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvczMtdGFibGVzLWJ1Y2tldHMtbmFtaW5nLmh0bWwjdGFibGUtYnVja2V0cy1uYW1pbmctcnVsZXNcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlQnVja2V0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVbnJlZmVyZW5jZWQgZmlsZSByZW1vdmFsIHNldHRpbmdzIGZvciB0aGUgUzMgVGFibGVCdWNrZXQuXG4gICAqIEBsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzdGFibGVzLXRhYmxlYnVja2V0LXVucmVmZXJlbmNlZGZpbGVyZW1vdmFsLmh0bWxcbiAgICogQGRlZmF1bHQgRW5hYmxlZCB3aXRoIGRlZmF1bHQgdmFsdWVzXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvczMtdGFibGUtYnVja2V0cy1tYWludGVuYW5jZS5odG1sXG4gICAqL1xuICByZWFkb25seSB1bnJlZmVyZW5jZWRGaWxlUmVtb3ZhbD86IFVucmVmZXJlbmNlZEZpbGVSZW1vdmFsO1xuXG4gIC8qKlxuICAgKiBBV1MgcmVnaW9uIHRoYXQgdGhlIHRhYmxlIGJ1Y2tldCBleGlzdHMgaW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gaXQncyBhc3N1bWVkIHRoZSBidWNrZXQgaXMgaW4gdGhlIHNhbWUgcmVnaW9uIGFzIHRoZSBzY29wZSBpdCdzIGJlaW5nIGltcG9ydGVkIGludG9cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQVdTIEFjY291bnQgSUQgb2YgdGhlIHRhYmxlIGJ1Y2tldCBvd25lci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpdCdzIGFzc3VtZWQgdGhlIGJ1Y2tldCBiZWxvbmdzIHRvIHRoZSBzYW1lIGFjY291bnQgYXMgdGhlIHNjb3BlIGl0J3MgYmVpbmcgaW1wb3J0ZWQgaW50b1xuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGtpbmQgb2Ygc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB0byBhcHBseSB0byB0aGlzIGJ1Y2tldC5cbiAgICpcbiAgICogSWYgeW91IGNob29zZSBLTVMsIHlvdSBjYW4gc3BlY2lmeSBhIEtNUyBrZXkgdmlhIGBlbmNyeXB0aW9uS2V5YC4gSWZcbiAgICogZW5jcnlwdGlvbiBrZXkgaXMgbm90IHNwZWNpZmllZCwgYSBrZXkgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYEtNU2AgaWYgYGVuY3J5cHRpb25LZXlgIGlzIHNwZWNpZmllZCwgb3IgYFMzX01BTkFHRURgIG90aGVyd2lzZS5cbiAgICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb24/OiBUYWJsZUJ1Y2tldEVuY3J5cHRpb247XG5cbiAgLyoqXG4gICAqIEV4dGVybmFsIEtNUyBrZXkgdG8gdXNlIGZvciBidWNrZXQgZW5jcnlwdGlvbi5cbiAgICpcbiAgICogVGhlIGBlbmNyeXB0aW9uYCBwcm9wZXJ0eSBtdXN0IGJlIGVpdGhlciBub3Qgc3BlY2lmaWVkIG9yIHNldCB0byBgS01TYC5cbiAgICogQW4gZXJyb3Igd2lsbCBiZSBlbWl0dGVkIGlmIGBlbmNyeXB0aW9uYCBpcyBzZXQgdG8gYFMzX01BTkFHRURgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIGBlbmNyeXB0aW9uYCBpcyBzZXQgdG8gYEtNU2AgYW5kIHRoaXMgcHJvcGVydHkgaXMgdW5kZWZpbmVkLFxuICAgKiBhIG5ldyBLTVMga2V5IHdpbGwgYmUgY3JlYXRlZCBhbmQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYnVja2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB3aGF0IGhhcHBlbnMgdG8gdGhpcyB0YWJsZSBidWNrZXQgaXQgaXQgc3RvcGVkIGJlaW5nIG1hbmFnZWQgYnkgY2xvdWRmb3JtYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IFJFVEFJTlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogQSByZWZlcmVuY2UgdG8gYSB0YWJsZSBidWNrZXQgb3V0c2lkZSB0aGlzIHN0YWNrXG4gKlxuICogVGhlIHRhYmxlQnVja2V0TmFtZSwgcmVnaW9uLCBhbmQgYWNjb3VudCBjYW4gYmUgcHJvdmlkZWQgZXhwbGljaXRseVxuICogb3Igd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSB0YWJsZUJ1Y2tldEFyblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQnVja2V0QXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBBV1MgcmVnaW9uIHRoaXMgdGFibGUgYnVja2V0IGV4aXN0cyBpblxuICAgKiBAZGVmYXVsdCByZWdpb24gaW5mZXJyZWQgZnJvbSBzY29wZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudElkIGNvbnRhaW5pbmcgdGhpcyB0YWJsZSBidWNrZXRcbiAgICogQGRlZmF1bHQgYWNjb3VudCBpbmZlcnJlZCBmcm9tIHNjb3BlXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFibGUgYnVja2V0IG5hbWUsIHVuaXF1ZSBwZXIgcmVnaW9uXG4gICAqIEBkZWZhdWx0IHRhYmxlQnVja2V0TmFtZSBpbmZlcnJlZCBmcm9tIGFyblxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVCdWNrZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFibGUgYnVja2V0J3MgQVJOLlxuICAgKiBAZGVmYXVsdCB0YWJsZUJ1Y2tldEFybiBjb25zdHJ1Y3RlZCBmcm9tIHJlZ2lvbiwgYWNjb3VudCBhbmQgdGFibGVCdWNrZXROYW1lIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVCdWNrZXRBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIEtNUyBlbmNyeXB0aW9uIGtleSBhc3NvY2lhdGVkIHdpdGggdGhpcyBidWNrZXQuXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXk7XG59XG5cbi8qKlxuICogQW4gUzMgdGFibGUgYnVja2V0IHdpdGggaGVscGVycyBmb3IgYXNzb2NpYXRlZCByZXNvdXJjZSBwb2xpY2llc1xuICpcbiAqIFRoaXMgYnVja2V0IG1heSBub3QgeWV0IGhhdmUgYWxsIGZlYXR1cmVzIHRoYXQgZXhwb3NlZCBieSB0aGUgdW5kZXJseWluZyBDZm5UYWJsZUJ1Y2tldC5cbiAqXG4gKiBAc3RhdGVmdWxcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBzYW1wbGVUYWJsZUJ1Y2tldCA9IG5ldyBUYWJsZUJ1Y2tldChzY29wZSwgJ0V4YW1wbGVUYWJsZUJ1Y2tldCcsIHtcbiAqICAgdGFibGVCdWNrZXROYW1lOiAnZXhhbXBsZS1idWNrZXQnLFxuICogICAvLyBPcHRpb25hbCBmaWVsZHM6XG4gKiAgIHVucmVmZXJlbmNlZEZpbGVSZW1vdmFsOiB7XG4gKiAgICAgbm9uY3VycmVudERheXM6IDEyMyxcbiAqICAgICBzdGF0dXM6IFVucmVmZXJlbmNlZEZpbGVSZW1vdmFsU3RhdHVzLkVOQUJMRUQsXG4gKiAgICAgdW5yZWZlcmVuY2VkRGF5czogMTIzLFxuICogICB9LFxuICogfSk7XG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBUYWJsZUJ1Y2tldCBleHRlbmRzIFRhYmxlQnVja2V0QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLXMzdGFibGVzLWFscGhhLlRhYmxlQnVja2V0JztcblxuICAvKipcbiAgICogRGVmaW5lcyBhIFRhYmxlQnVja2V0IGNvbnN0cnVjdCBmcm9tIGFuIGV4dGVybmFsIHRhYmxlIGJ1Y2tldCBBUk4uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApLlxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWUuXG4gICAqIEBwYXJhbSB0YWJsZUJ1Y2tldEFybiBBbWF6b24gUmVzb3VyY2UgTmFtZSAoYXJuKSBvZiB0aGUgdGFibGUgYnVja2V0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21UYWJsZUJ1Y2tldEFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCB0YWJsZUJ1Y2tldEFybjogc3RyaW5nKTogSVRhYmxlQnVja2V0IHtcbiAgICByZXR1cm4gVGFibGVCdWNrZXQuZnJvbVRhYmxlQnVja2V0QXR0cmlidXRlcyhzY29wZSwgaWQsIHsgdGFibGVCdWNrZXRBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBhIFRhYmxlQnVja2V0IGNvbnN0cnVjdCB0aGF0IHJlcHJlc2VudHMgYW4gZXh0ZXJuYWwgdGFibGUgYnVja2V0LlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKS5cbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lLlxuICAgKiBAcGFyYW0gYXR0cnMgQSBgVGFibGVCdWNrZXRBdHRyaWJ1dGVzYCBvYmplY3QuIENhbiBiZSBtYW51YWxseSBjcmVhdGVkLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVGFibGVCdWNrZXRBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogVGFibGVCdWNrZXRBdHRyaWJ1dGVzLFxuICApOiBJVGFibGVCdWNrZXQge1xuICAgIGNvbnN0IHsgdGFibGVCdWNrZXROYW1lLCByZWdpb24sIGFjY291bnQsIHRhYmxlQnVja2V0QXJuIH0gPSB2YWxpZGF0ZVRhYmxlQnVja2V0QXR0cmlidXRlcyhzY29wZSwgYXR0cnMpO1xuICAgIFRhYmxlQnVja2V0LnZhbGlkYXRlVGFibGVCdWNrZXROYW1lKHRhYmxlQnVja2V0TmFtZSk7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgVGFibGVCdWNrZXRCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YWJsZUJ1Y2tldE5hbWUgPSB0YWJsZUJ1Y2tldE5hbWUhO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhYmxlQnVja2V0QXJuID0gdGFibGVCdWNrZXRBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFibGVCdWNrZXRQb2xpY3k/OiBUYWJsZUJ1Y2tldFBvbGljeTtcbiAgICAgIHB1YmxpYyByZWFkb25seSByZWdpb24gPSByZWdpb247XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYWNjb3VudCA9IGFjY291bnQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IGttcy5JS2V5ID0gYXR0cnMuZW5jcnlwdGlvbktleTtcbiAgICAgIHByb3RlY3RlZCBhdXRvQ3JlYXRlUG9saWN5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAgIC8qKlxuICAgICAgICogRXhwb3J0cyB0aGlzIGJ1Y2tldCBmcm9tIHRoZSBzdGFjay5cbiAgICAgICAqL1xuICAgICAgcHVibGljIGV4cG9ydCgpIHtcbiAgICAgICAgcmV0dXJuIGF0dHJzO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCwge1xuICAgICAgYWNjb3VudCxcbiAgICAgIHJlZ2lvbixcbiAgICAgIHBoeXNpY2FsTmFtZTogdGFibGVCdWNrZXROYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRocm93cyBhbiBleGNlcHRpb24gaWYgdGhlIGdpdmVuIHRhYmxlIGJ1Y2tldCBuYW1lIGlzIG5vdCB2YWxpZC5cbiAgICpcbiAgICogQHBhcmFtIGJ1Y2tldE5hbWUgbmFtZSBvZiB0aGUgYnVja2V0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2YWxpZGF0ZVRhYmxlQnVja2V0TmFtZShcbiAgICBidWNrZXROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIGlmIChidWNrZXROYW1lID09IHVuZGVmaW5lZCB8fCBUb2tlbi5pc1VucmVzb2x2ZWQoYnVja2V0TmFtZSkpIHtcbiAgICAgIC8vIHRoZSBuYW1lIGlzIGEgbGF0ZS1ib3VuZCB2YWx1ZSwgbm90IGEgZGVmaW5lZCBzdHJpbmcsIHNvIHNraXAgdmFsaWRhdGlvblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIExlbmd0aCB2YWxpZGF0aW9uXG4gICAgaWYgKGJ1Y2tldE5hbWUubGVuZ3RoIDwgMyB8fCBidWNrZXROYW1lLmxlbmd0aCA+IDYzKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgJ0J1Y2tldCBuYW1lIG11c3QgYmUgYXQgbGVhc3QgMyBhbmQgbm8gbW9yZSB0aGFuIDYzIGNoYXJhY3RlcnMnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBDaGFyYWN0ZXIgc2V0IHZhbGlkYXRpb25cbiAgICBjb25zdCBpbGxlZ2FsQ2hhcnNldFJlZ0V4ID0gL1teYS16MC05LV0vO1xuICAgIGNvbnN0IGFsbG93ZWRFZGdlQ2hhcnNldFJlZ0V4ID0gL1thLXowLTldLztcblxuICAgIGNvbnN0IGlsbGVnYWxDaGFyTWF0Y2ggPSBidWNrZXROYW1lLm1hdGNoKGlsbGVnYWxDaGFyc2V0UmVnRXgpO1xuICAgIGlmIChpbGxlZ2FsQ2hhck1hdGNoKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgJ0J1Y2tldCBuYW1lIG11c3Qgb25seSBjb250YWluIGxvd2VyY2FzZSBjaGFyYWN0ZXJzLCBudW1iZXJzLCBhbmQgaHlwaGVucyAoLSknICtcbiAgICAgICAgICBgIChvZmZzZXQ6ICR7aWxsZWdhbENoYXJNYXRjaC5pbmRleH0pYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRWRnZSBjaGFyYWN0ZXIgdmFsaWRhdGlvblxuICAgIGlmICghYWxsb3dlZEVkZ2VDaGFyc2V0UmVnRXgudGVzdChidWNrZXROYW1lLmNoYXJBdCgwKSkpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnQnVja2V0IG5hbWUgbXVzdCBzdGFydCB3aXRoIGEgbG93ZXJjYXNlIGxldHRlciBvciBudW1iZXIgKG9mZnNldDogMCknLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIWFsbG93ZWRFZGdlQ2hhcnNldFJlZ0V4LnRlc3QoYnVja2V0TmFtZS5jaGFyQXQoYnVja2V0TmFtZS5sZW5ndGggLSAxKSlcbiAgICApIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICBgQnVja2V0IG5hbWUgbXVzdCBlbmQgd2l0aCBhIGxvd2VyY2FzZSBsZXR0ZXIgb3IgbnVtYmVyIChvZmZzZXQ6ICR7XG4gICAgICAgICAgYnVja2V0TmFtZS5sZW5ndGggLSAxXG4gICAgICAgIH0pYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIFMzIHRhYmxlIGJ1Y2tldCBuYW1lICh2YWx1ZTogJHtidWNrZXROYW1lfSkke0VPTH0ke2Vycm9ycy5qb2luKEVPTCl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRocm93cyBhbiBleGNlcHRpb24gaWYgdGhlIGdpdmVuIHVucmVmZXJlbmNlZEZpbGVSZW1vdmFsUHJvcGVydHkgaXMgbm90IHZhbGlkLlxuICAgKiBAcGFyYW0gdW5yZWZlcmVuY2VkRmlsZVJlbW92YWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIHRhYmxlIGJ1Y2tldFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2YWxpZGF0ZVVucmVmZXJlbmNlZEZpbGVSZW1vdmFsKFxuICAgIHVucmVmZXJlbmNlZEZpbGVSZW1vdmFsPzogVW5yZWZlcmVuY2VkRmlsZVJlbW92YWwsXG4gICk6IHZvaWQge1xuICAgIC8vIFNraXAgdmFsaWRhdGlvbiBpZiBwcm9wZXJ0eSBpcyBub3QgZGVmaW5lZFxuICAgIGlmICghdW5yZWZlcmVuY2VkRmlsZVJlbW92YWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IG5vbmN1cnJlbnREYXlzLCBzdGF0dXMsIHVucmVmZXJlbmNlZERheXMgfSA9IHVucmVmZXJlbmNlZEZpbGVSZW1vdmFsO1xuXG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKG5vbmN1cnJlbnREYXlzICE9IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKG5vbmN1cnJlbnREYXlzIDwgMSkge1xuICAgICAgICBlcnJvcnMucHVzaCgnbm9uY3VycmVudERheXMgbXVzdCBiZSBhdCBsZWFzdCAxIGRheScpO1xuICAgICAgfVxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKG5vbmN1cnJlbnREYXlzKSkge1xuICAgICAgICBlcnJvcnMucHVzaCgnbm9uY3VycmVudERheXMgbXVzdCBiZSBhIHdob2xlIG51bWJlcicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1bnJlZmVyZW5jZWREYXlzICE9IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHVucmVmZXJlbmNlZERheXMgPCAxKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKCd1bnJlZmVyZW5jZWREYXlzIG11c3QgYmUgYXQgbGVhc3QgMSBkYXknKTtcbiAgICAgIH1cbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihub25jdXJyZW50RGF5cykpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goJ3VucmVmZXJlbmNlZERheXMgbXVzdCBiZSBhIHdob2xlIG51bWJlcicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFsbG93ZWRTdGF0dXMgPSBbJ0VuYWJsZWQnLCAnRGlzYWJsZWQnXTtcbiAgICBpZiAoc3RhdHVzICE9IHVuZGVmaW5lZCAmJiAhYWxsb3dlZFN0YXR1cy5pbmNsdWRlcyhzdGF0dXMpKSB7XG4gICAgICBlcnJvcnMucHVzaCgnc3RhdHVzIG11c3QgYmUgb25lIG9mIFxcJ0VuYWJsZWRcXCcgb3IgXFwnRGlzYWJsZWRcXCcnKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgVW5yZWZlcmVuY2VkRmlsZVJlbW92YWxQcm9wZXJ0eX0pJHtFT0x9JHtlcnJvcnMuam9pbihFT0wpfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdW5kZXJseWluZyBDZm5UYWJsZUJ1Y2tldCBMMSByZXNvdXJjZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IHMzdGFibGVzLkNmblRhYmxlQnVja2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgcG9saWN5IGZvciB0aGlzIHRhYmxlQnVja2V0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlQnVja2V0UG9saWN5PzogVGFibGVCdWNrZXRQb2xpY3k7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleSB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgYXV0b0NyZWF0ZVBvbGljeTogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFRhYmxlQnVja2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMudGFibGVCdWNrZXROYW1lLFxuICAgIH0pO1xuXG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBUYWJsZUJ1Y2tldC52YWxpZGF0ZVRhYmxlQnVja2V0TmFtZShwcm9wcy50YWJsZUJ1Y2tldE5hbWUpO1xuICAgIFRhYmxlQnVja2V0LnZhbGlkYXRlVW5yZWZlcmVuY2VkRmlsZVJlbW92YWwocHJvcHMudW5yZWZlcmVuY2VkRmlsZVJlbW92YWwpO1xuICAgIGNvbnN0IHsgYnVja2V0RW5jcnlwdGlvbiwgZW5jcnlwdGlvbktleSB9ID0gdGhpcy5wYXJzZUVuY3J5cHRpb24ocHJvcHMpO1xuICAgIHRoaXMuZW5jcnlwdGlvbktleSA9IGVuY3J5cHRpb25LZXk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IHMzdGFibGVzLkNmblRhYmxlQnVja2V0KHRoaXMsIGlkLCB7XG4gICAgICB0YWJsZUJ1Y2tldE5hbWU6IHByb3BzLnRhYmxlQnVja2V0TmFtZSxcbiAgICAgIHVucmVmZXJlbmNlZEZpbGVSZW1vdmFsOiB7XG4gICAgICAgIC4uLnByb3BzLnVucmVmZXJlbmNlZEZpbGVSZW1vdmFsLFxuICAgICAgICBub25jdXJyZW50RGF5czogcHJvcHMudW5yZWZlcmVuY2VkRmlsZVJlbW92YWw/Lm5vbmN1cnJlbnREYXlzLFxuICAgICAgICB1bnJlZmVyZW5jZWREYXlzOiBwcm9wcy51bnJlZmVyZW5jZWRGaWxlUmVtb3ZhbD8udW5yZWZlcmVuY2VkRGF5cyxcbiAgICAgIH0sXG4gICAgICBlbmNyeXB0aW9uQ29uZmlndXJhdGlvbjogYnVja2V0RW5jcnlwdGlvbixcbiAgICB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UuYXBwbHlSZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgdGFibGUgYnVja2V0XG4gICAqL1xuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCB0YWJsZUJ1Y2tldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5yZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgQW1hem9uIFJlc291cmNlIE5hbWUgKGFybikgb2YgdGhpcyB0YWJsZSBidWNrZXRcbiAgICovXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IHRhYmxlQnVja2V0QXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuYXR0clRhYmxlQnVja2V0QXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBrZXkgcHJvcGVydGllcyBhbmQgcmV0dXJuIHRoZSBCdWNrZXQgZW5jcnlwdGlvbiBwcm9wZXJ0eSBmcm9tIHRoZVxuICAgKiB1c2VyJ3MgY29uZmlndXJhdGlvbiwgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgdGFibGU6XG4gICAqXG4gICAqIHwgcHJvcHMuZW5jcnlwdGlvbiB8IHByb3BzLmVuY3J5cHRpb25LZXkgfCBidWNrZXRFbmNyeXB0aW9uIChyZXR1cm4gdmFsdWUpIHwgZW5jcnlwdGlvbktleSAocmV0dXJuIHZhbHVlKSAgfFxuICAgKiB8LS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAgICogfCB1bmRlZmluZWQgICAgICAgIHwgdW5kZWZpbmVkICAgICAgICAgICB8IHVuZGVmaW5lZCAgICAgICAgICAgICAgICAgICAgICAgfCB1bmRlZmluZWQgICAgICAgICAgICAgICAgICAgICB8XG4gICAqIHwgdW5kZWZpbmVkICAgICAgICB8IGsgICAgICAgICAgICAgICAgICAgfCBhd3M6a21zICAgICAgICAgICAgICAgICAgICAgICAgIHwgayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKiB8IEtNUyAgICAgICAgICAgICAgfCB1bmRlZmluZWQgICAgICAgICAgIHwgYXdzOmttcyAgICAgICAgICAgICAgICAgICAgICAgICB8IG5ldyBrZXkgKGFsbG93IG1haW50ZW5hbmNlIFNQKXxcbiAgICogfCBLTVMgICAgICAgICAgICAgIHwgayAgICAgICAgICAgICAgICAgICB8IGF3czprbXMgICAgICAgICAgICAgICAgICAgICAgICAgfCBrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAqIHwgUzNfTUFOQUdFRCAgICAgICB8IHVuZGVmaW5lZCAgICAgICAgICAgfCBBRVMyNTYgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkICAgICAgICAgICAgICAgICAgICAgfFxuICAgKiB8IFMzX01BTkFHRUQgICAgICAgfCBrICAgICAgICAgICAgICAgICAgIHwgRVJST1IhICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVSUk9SISAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICovXG4gIHByaXZhdGUgcGFyc2VFbmNyeXB0aW9uKHByb3BzOiBUYWJsZUJ1Y2tldFByb3BzKToge1xuICAgIGJ1Y2tldEVuY3J5cHRpb24/OiBzM3RhYmxlcy5DZm5UYWJsZUJ1Y2tldC5FbmNyeXB0aW9uQ29uZmlndXJhdGlvblByb3BlcnR5O1xuICAgIGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleTtcbiAgfSB7XG4gICAgY29uc3QgZW5jcnlwdGlvblR5cGUgPSBwcm9wcy5lbmNyeXB0aW9uO1xuICAgIGxldCBrZXkgPSBwcm9wcy5lbmNyeXB0aW9uS2V5O1xuXG4gICAgaWYgKGVuY3J5cHRpb25UeXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIHJldHVybiB7IGJ1Y2tldEVuY3J5cHRpb246IHVuZGVmaW5lZCwgZW5jcnlwdGlvbktleTogdW5kZWZpbmVkIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGJ1Y2tldEVuY3J5cHRpb246IHtcbiAgICAgICAgICAgIGttc0tleUFybjoga2V5LmtleUFybixcbiAgICAgICAgICAgIHNzZUFsZ29yaXRobTogVGFibGVCdWNrZXRFbmNyeXB0aW9uLktNUyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVuY3J5cHRpb25LZXk6IGtleSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW5jcnlwdGlvblR5cGUgPT09IFRhYmxlQnVja2V0RW5jcnlwdGlvbi5LTVMpIHtcbiAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIGtleSA9IG5ldyBrbXMuS2V5KHRoaXMsICdLZXknLCB7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGBDcmVhdGVkIGJ5ICR7dGhpcy5ub2RlLnBhdGh9YCxcbiAgICAgICAgICBlbmFibGVLZXlSb3RhdGlvbjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWxsb3dUYWJsZXNNYWludGVuYW5jZUFjY2Vzc1RvS2V5KGtleSwgcHJvcHMudGFibGVCdWNrZXROYW1lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJ1Y2tldEVuY3J5cHRpb246IHtcbiAgICAgICAgICBrbXNLZXlBcm46IGtleS5rZXlBcm4sXG4gICAgICAgICAgc3NlQWxnb3JpdGhtOiBUYWJsZUJ1Y2tldEVuY3J5cHRpb24uS01TLFxuICAgICAgICB9LFxuICAgICAgICBlbmNyeXB0aW9uS2V5OiBrZXksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChlbmNyeXB0aW9uVHlwZSA9PT0gVGFibGVCdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQpIHtcbiAgICAgIGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYnVja2V0RW5jcnlwdGlvbjoge1xuICAgICAgICAgICAgc3NlQWxnb3JpdGhtOiBUYWJsZUJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKCdFeHBlY3RlZCBlbmNyeXB0aW9uID0gYEtNU2Agd2l0aCB1c2VyIHByb3ZpZGVkIGVuY3J5cHRpb24ga2V5Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihgVW5rbm93biBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gZGV0ZWN0ZWQ6ICR7cHJvcHMuZW5jcnlwdGlvbn0gd2l0aCBrZXkgJHtwcm9wcy5lbmNyeXB0aW9uS2V5fWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93bGlzdCBTMyBUYWJsZXMgTWFpbnRlbmFuY2UgdG8gYWNjZXNzIHRoaXMgdGFibGUgYnVja2V0J3MgZW5jcnlwdGlvbiBrZXlcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9zMy10YWJsZXMta21zLXBlcm1pc3Npb25zLmh0bWxcbiAgICogQHBhcmFtIGVuY3J5cHRpb25LZXkgVGhlIGtleSB0byBwcm92aWRlIGFjY2VzcyB0b1xuICAgKi9cbiAgcHJpdmF0ZSBhbGxvd1RhYmxlc01haW50ZW5hbmNlQWNjZXNzVG9LZXkoZW5jcnlwdGlvbktleToga21zLklLZXksIHRhYmxlQnVja2V0TmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVnaW9uID0gdGhpcy5zdGFjay5yZWdpb247XG4gICAgY29uc3QgYWNjb3VudCA9IHRoaXMuc3RhY2suYWNjb3VudDtcbiAgICBjb25zdCBwYXJ0aXRpb24gPSB0aGlzLnN0YWNrLnBhcnRpdGlvbjtcblxuICAgIGVuY3J5cHRpb25LZXkuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6ICdBbGxvd1MzVGFibGVzTWFpbnRlbmFuY2VBY2Nlc3MnLFxuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgcHJpbmNpcGFsczogW1xuICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ21haW50ZW5hbmNlLnMzdGFibGVzLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdrbXM6R2VuZXJhdGVEYXRhS2V5JyxcbiAgICAgICAgJ2ttczpEZWNyeXB0JyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBTdHJpbmdMaWtlOiB7XG4gICAgICAgICAgJ2ttczpFbmNyeXB0aW9uQ29udGV4dDphd3M6czM6YXJuJzogYGFybjoke3BhcnRpdGlvbn06czN0YWJsZXM6JHtyZWdpb259OiR7YWNjb3VudH06YnVja2V0LyR7dGFibGVCdWNrZXROYW1lfS8qYCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSkpO1xuICB9XG59XG5cbiJdfQ==
|
package/lib/table-policy.js
CHANGED
|
@@ -62,7 +62,7 @@ let TablePolicy = (() => {
|
|
|
62
62
|
TablePolicy = _classThis = _classDescriptor.value;
|
|
63
63
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
64
64
|
}
|
|
65
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TablePolicy", version: "2.
|
|
65
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.TablePolicy", version: "2.236.0-alpha.0" };
|
|
66
66
|
/** Uniquely identifies this class. */
|
|
67
67
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.TablePolicy';
|
|
68
68
|
/**
|
package/lib/table.js
CHANGED
|
@@ -135,7 +135,7 @@ let Table = (() => {
|
|
|
135
135
|
Table = _classThis = _classDescriptor.value;
|
|
136
136
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
137
137
|
}
|
|
138
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.Table", version: "2.
|
|
138
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-s3tables-alpha.Table", version: "2.236.0-alpha.0" };
|
|
139
139
|
/** Uniquely identifies this class. */
|
|
140
140
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.Table';
|
|
141
141
|
/**
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/aws-s3tables-alpha",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.236.0-alpha.0",
|
|
5
5
|
"description": "CDK Constructs for S3 Tables",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "lib/index.d.ts",
|
|
@@ -77,17 +77,17 @@
|
|
|
77
77
|
},
|
|
78
78
|
"license": "Apache-2.0",
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"aws-cdk-lib": "2.
|
|
81
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
82
|
-
"@aws-cdk/pkglint": "2.
|
|
80
|
+
"aws-cdk-lib": "2.236.0",
|
|
81
|
+
"@aws-cdk/cdk-build-tools": "2.236.0-alpha.0",
|
|
82
|
+
"@aws-cdk/pkglint": "2.236.0-alpha.0",
|
|
83
83
|
"@types/jest": "^29.5.14",
|
|
84
84
|
"constructs": "^10.0.0",
|
|
85
85
|
"jest": "^29.7.0",
|
|
86
|
-
"@aws-cdk/integ-tests-alpha": "2.
|
|
86
|
+
"@aws-cdk/integ-tests-alpha": "2.236.0-alpha.0"
|
|
87
87
|
},
|
|
88
88
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
89
89
|
"peerDependencies": {
|
|
90
|
-
"aws-cdk-lib": "^2.
|
|
90
|
+
"aws-cdk-lib": "^2.236.0",
|
|
91
91
|
"constructs": "^10.0.0"
|
|
92
92
|
},
|
|
93
93
|
"separate-module": false,
|