@aws-cdk/aws-redshift-alpha 2.253.1-alpha.0 → 2.255.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 +70 -70
- package/.jsii.tabl.json.gz +0 -0
- package/lib/cluster.js +8 -18
- package/lib/database-secret.js +1 -1
- package/lib/endpoint.js +1 -1
- package/lib/parameter-group.js +1 -1
- package/lib/private/privileges.js +74 -26
- package/lib/subnet-group.js +1 -1
- package/lib/table.js +1 -1
- package/lib/user.js +1 -1
- package/package.json +7 -7
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.255.0",
|
|
12
12
|
"constructs": "^10.5.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencyClosure": {
|
|
@@ -9015,7 +9015,7 @@
|
|
|
9015
9015
|
},
|
|
9016
9016
|
"locationInModule": {
|
|
9017
9017
|
"filename": "lib/cluster.ts",
|
|
9018
|
-
"line":
|
|
9018
|
+
"line": 587
|
|
9019
9019
|
},
|
|
9020
9020
|
"parameters": [
|
|
9021
9021
|
{
|
|
@@ -9044,7 +9044,7 @@
|
|
|
9044
9044
|
"kind": "class",
|
|
9045
9045
|
"locationInModule": {
|
|
9046
9046
|
"filename": "lib/cluster.ts",
|
|
9047
|
-
"line":
|
|
9047
|
+
"line": 515
|
|
9048
9048
|
},
|
|
9049
9049
|
"methods": [
|
|
9050
9050
|
{
|
|
@@ -9054,7 +9054,7 @@
|
|
|
9054
9054
|
},
|
|
9055
9055
|
"locationInModule": {
|
|
9056
9056
|
"filename": "lib/cluster.ts",
|
|
9057
|
-
"line":
|
|
9057
|
+
"line": 524
|
|
9058
9058
|
},
|
|
9059
9059
|
"name": "fromClusterAttributes",
|
|
9060
9060
|
"parameters": [
|
|
@@ -9092,7 +9092,7 @@
|
|
|
9092
9092
|
},
|
|
9093
9093
|
"locationInModule": {
|
|
9094
9094
|
"filename": "lib/cluster.ts",
|
|
9095
|
-
"line":
|
|
9095
|
+
"line": 900
|
|
9096
9096
|
},
|
|
9097
9097
|
"name": "addDefaultIamRole",
|
|
9098
9098
|
"parameters": [
|
|
@@ -9114,7 +9114,7 @@
|
|
|
9114
9114
|
},
|
|
9115
9115
|
"locationInModule": {
|
|
9116
9116
|
"filename": "lib/cluster.ts",
|
|
9117
|
-
"line":
|
|
9117
|
+
"line": 945
|
|
9118
9118
|
},
|
|
9119
9119
|
"name": "addIamRole",
|
|
9120
9120
|
"parameters": [
|
|
@@ -9136,7 +9136,7 @@
|
|
|
9136
9136
|
},
|
|
9137
9137
|
"locationInModule": {
|
|
9138
9138
|
"filename": "lib/cluster.ts",
|
|
9139
|
-
"line":
|
|
9139
|
+
"line": 771
|
|
9140
9140
|
},
|
|
9141
9141
|
"name": "addRotationMultiUser",
|
|
9142
9142
|
"parameters": [
|
|
@@ -9166,7 +9166,7 @@
|
|
|
9166
9166
|
},
|
|
9167
9167
|
"locationInModule": {
|
|
9168
9168
|
"filename": "lib/cluster.ts",
|
|
9169
|
-
"line":
|
|
9169
|
+
"line": 746
|
|
9170
9170
|
},
|
|
9171
9171
|
"name": "addRotationSingleUser",
|
|
9172
9172
|
"parameters": [
|
|
@@ -9194,7 +9194,7 @@
|
|
|
9194
9194
|
},
|
|
9195
9195
|
"locationInModule": {
|
|
9196
9196
|
"filename": "lib/cluster.ts",
|
|
9197
|
-
"line":
|
|
9197
|
+
"line": 812
|
|
9198
9198
|
},
|
|
9199
9199
|
"name": "addToParameterGroup",
|
|
9200
9200
|
"parameters": [
|
|
@@ -9225,7 +9225,7 @@
|
|
|
9225
9225
|
},
|
|
9226
9226
|
"locationInModule": {
|
|
9227
9227
|
"filename": "lib/cluster.ts",
|
|
9228
|
-
"line":
|
|
9228
|
+
"line": 502
|
|
9229
9229
|
},
|
|
9230
9230
|
"name": "asSecretAttachmentTarget",
|
|
9231
9231
|
"overrides": "aws-cdk-lib.aws_secretsmanager.ISecretAttachmentTarget",
|
|
@@ -9242,7 +9242,7 @@
|
|
|
9242
9242
|
},
|
|
9243
9243
|
"locationInModule": {
|
|
9244
9244
|
"filename": "lib/cluster.ts",
|
|
9245
|
-
"line":
|
|
9245
|
+
"line": 832
|
|
9246
9246
|
},
|
|
9247
9247
|
"name": "enableRebootForParameterChanges"
|
|
9248
9248
|
}
|
|
@@ -9258,7 +9258,7 @@
|
|
|
9258
9258
|
"immutable": true,
|
|
9259
9259
|
"locationInModule": {
|
|
9260
9260
|
"filename": "lib/cluster.ts",
|
|
9261
|
-
"line":
|
|
9261
|
+
"line": 519
|
|
9262
9262
|
},
|
|
9263
9263
|
"name": "PROPERTY_INJECTION_ID",
|
|
9264
9264
|
"static": true,
|
|
@@ -9274,7 +9274,7 @@
|
|
|
9274
9274
|
"immutable": true,
|
|
9275
9275
|
"locationInModule": {
|
|
9276
9276
|
"filename": "lib/cluster.ts",
|
|
9277
|
-
"line":
|
|
9277
|
+
"line": 545
|
|
9278
9278
|
},
|
|
9279
9279
|
"name": "clusterEndpoint",
|
|
9280
9280
|
"overrides": "@aws-cdk/aws-redshift-alpha.ICluster",
|
|
@@ -9290,7 +9290,7 @@
|
|
|
9290
9290
|
"immutable": true,
|
|
9291
9291
|
"locationInModule": {
|
|
9292
9292
|
"filename": "lib/cluster.ts",
|
|
9293
|
-
"line":
|
|
9293
|
+
"line": 540
|
|
9294
9294
|
},
|
|
9295
9295
|
"name": "clusterName",
|
|
9296
9296
|
"overrides": "@aws-cdk/aws-redshift-alpha.ICluster",
|
|
@@ -9306,7 +9306,7 @@
|
|
|
9306
9306
|
"immutable": true,
|
|
9307
9307
|
"locationInModule": {
|
|
9308
9308
|
"filename": "lib/cluster.ts",
|
|
9309
|
-
"line":
|
|
9309
|
+
"line": 550
|
|
9310
9310
|
},
|
|
9311
9311
|
"name": "connections",
|
|
9312
9312
|
"overrides": "aws-cdk-lib.aws_ec2.IConnectable",
|
|
@@ -9322,7 +9322,7 @@
|
|
|
9322
9322
|
"immutable": true,
|
|
9323
9323
|
"locationInModule": {
|
|
9324
9324
|
"filename": "lib/cluster.ts",
|
|
9325
|
-
"line":
|
|
9325
|
+
"line": 555
|
|
9326
9326
|
},
|
|
9327
9327
|
"name": "secret",
|
|
9328
9328
|
"optional": true,
|
|
@@ -9337,7 +9337,7 @@
|
|
|
9337
9337
|
},
|
|
9338
9338
|
"locationInModule": {
|
|
9339
9339
|
"filename": "lib/cluster.ts",
|
|
9340
|
-
"line":
|
|
9340
|
+
"line": 578
|
|
9341
9341
|
},
|
|
9342
9342
|
"name": "parameterGroup",
|
|
9343
9343
|
"optional": true,
|
|
@@ -9364,7 +9364,7 @@
|
|
|
9364
9364
|
"kind": "interface",
|
|
9365
9365
|
"locationInModule": {
|
|
9366
9366
|
"filename": "lib/cluster.ts",
|
|
9367
|
-
"line":
|
|
9367
|
+
"line": 235
|
|
9368
9368
|
},
|
|
9369
9369
|
"name": "ClusterAttributes",
|
|
9370
9370
|
"properties": [
|
|
@@ -9377,7 +9377,7 @@
|
|
|
9377
9377
|
"immutable": true,
|
|
9378
9378
|
"locationInModule": {
|
|
9379
9379
|
"filename": "lib/cluster.ts",
|
|
9380
|
-
"line":
|
|
9380
|
+
"line": 251
|
|
9381
9381
|
},
|
|
9382
9382
|
"name": "clusterEndpointAddress",
|
|
9383
9383
|
"type": {
|
|
@@ -9393,7 +9393,7 @@
|
|
|
9393
9393
|
"immutable": true,
|
|
9394
9394
|
"locationInModule": {
|
|
9395
9395
|
"filename": "lib/cluster.ts",
|
|
9396
|
-
"line":
|
|
9396
|
+
"line": 256
|
|
9397
9397
|
},
|
|
9398
9398
|
"name": "clusterEndpointPort",
|
|
9399
9399
|
"type": {
|
|
@@ -9409,7 +9409,7 @@
|
|
|
9409
9409
|
"immutable": true,
|
|
9410
9410
|
"locationInModule": {
|
|
9411
9411
|
"filename": "lib/cluster.ts",
|
|
9412
|
-
"line":
|
|
9412
|
+
"line": 246
|
|
9413
9413
|
},
|
|
9414
9414
|
"name": "clusterName",
|
|
9415
9415
|
"type": {
|
|
@@ -9426,7 +9426,7 @@
|
|
|
9426
9426
|
"immutable": true,
|
|
9427
9427
|
"locationInModule": {
|
|
9428
9428
|
"filename": "lib/cluster.ts",
|
|
9429
|
-
"line":
|
|
9429
|
+
"line": 241
|
|
9430
9430
|
},
|
|
9431
9431
|
"name": "securityGroups",
|
|
9432
9432
|
"optional": true,
|
|
@@ -9696,7 +9696,7 @@
|
|
|
9696
9696
|
"kind": "interface",
|
|
9697
9697
|
"locationInModule": {
|
|
9698
9698
|
"filename": "lib/cluster.ts",
|
|
9699
|
-
"line":
|
|
9699
|
+
"line": 263
|
|
9700
9700
|
},
|
|
9701
9701
|
"name": "ClusterProps",
|
|
9702
9702
|
"properties": [
|
|
@@ -9709,7 +9709,7 @@
|
|
|
9709
9709
|
"immutable": true,
|
|
9710
9710
|
"locationInModule": {
|
|
9711
9711
|
"filename": "lib/cluster.ts",
|
|
9712
|
-
"line":
|
|
9712
|
+
"line": 363
|
|
9713
9713
|
},
|
|
9714
9714
|
"name": "masterUser",
|
|
9715
9715
|
"type": {
|
|
@@ -9725,7 +9725,7 @@
|
|
|
9725
9725
|
"immutable": true,
|
|
9726
9726
|
"locationInModule": {
|
|
9727
9727
|
"filename": "lib/cluster.ts",
|
|
9728
|
-
"line":
|
|
9728
|
+
"line": 337
|
|
9729
9729
|
},
|
|
9730
9730
|
"name": "vpc",
|
|
9731
9731
|
"type": {
|
|
@@ -9743,7 +9743,7 @@
|
|
|
9743
9743
|
"immutable": true,
|
|
9744
9744
|
"locationInModule": {
|
|
9745
9745
|
"filename": "lib/cluster.ts",
|
|
9746
|
-
"line":
|
|
9746
|
+
"line": 468
|
|
9747
9747
|
},
|
|
9748
9748
|
"name": "availabilityZoneRelocation",
|
|
9749
9749
|
"optional": true,
|
|
@@ -9763,7 +9763,7 @@
|
|
|
9763
9763
|
"immutable": true,
|
|
9764
9764
|
"locationInModule": {
|
|
9765
9765
|
"filename": "lib/cluster.ts",
|
|
9766
|
-
"line":
|
|
9766
|
+
"line": 421
|
|
9767
9767
|
},
|
|
9768
9768
|
"name": "classicResizing",
|
|
9769
9769
|
"optional": true,
|
|
@@ -9781,7 +9781,7 @@
|
|
|
9781
9781
|
"immutable": true,
|
|
9782
9782
|
"locationInModule": {
|
|
9783
9783
|
"filename": "lib/cluster.ts",
|
|
9784
|
-
"line":
|
|
9784
|
+
"line": 269
|
|
9785
9785
|
},
|
|
9786
9786
|
"name": "clusterName",
|
|
9787
9787
|
"optional": true,
|
|
@@ -9799,7 +9799,7 @@
|
|
|
9799
9799
|
"immutable": true,
|
|
9800
9800
|
"locationInModule": {
|
|
9801
9801
|
"filename": "lib/cluster.ts",
|
|
9802
|
-
"line":
|
|
9802
|
+
"line": 300
|
|
9803
9803
|
},
|
|
9804
9804
|
"name": "clusterType",
|
|
9805
9805
|
"optional": true,
|
|
@@ -9817,7 +9817,7 @@
|
|
|
9817
9817
|
"immutable": true,
|
|
9818
9818
|
"locationInModule": {
|
|
9819
9819
|
"filename": "lib/cluster.ts",
|
|
9820
|
-
"line":
|
|
9820
|
+
"line": 386
|
|
9821
9821
|
},
|
|
9822
9822
|
"name": "defaultDatabaseName",
|
|
9823
9823
|
"optional": true,
|
|
@@ -9836,7 +9836,7 @@
|
|
|
9836
9836
|
"immutable": true,
|
|
9837
9837
|
"locationInModule": {
|
|
9838
9838
|
"filename": "lib/cluster.ts",
|
|
9839
|
-
"line":
|
|
9839
|
+
"line": 379
|
|
9840
9840
|
},
|
|
9841
9841
|
"name": "defaultRole",
|
|
9842
9842
|
"optional": true,
|
|
@@ -9855,7 +9855,7 @@
|
|
|
9855
9855
|
"immutable": true,
|
|
9856
9856
|
"locationInModule": {
|
|
9857
9857
|
"filename": "lib/cluster.ts",
|
|
9858
|
-
"line":
|
|
9858
|
+
"line": 430
|
|
9859
9859
|
},
|
|
9860
9860
|
"name": "elasticIp",
|
|
9861
9861
|
"optional": true,
|
|
@@ -9873,7 +9873,7 @@
|
|
|
9873
9873
|
"immutable": true,
|
|
9874
9874
|
"locationInModule": {
|
|
9875
9875
|
"filename": "lib/cluster.ts",
|
|
9876
|
-
"line":
|
|
9876
|
+
"line": 314
|
|
9877
9877
|
},
|
|
9878
9878
|
"name": "encrypted",
|
|
9879
9879
|
"optional": true,
|
|
@@ -9891,7 +9891,7 @@
|
|
|
9891
9891
|
"immutable": true,
|
|
9892
9892
|
"locationInModule": {
|
|
9893
9893
|
"filename": "lib/cluster.ts",
|
|
9894
|
-
"line":
|
|
9894
|
+
"line": 321
|
|
9895
9895
|
},
|
|
9896
9896
|
"name": "encryptionKey",
|
|
9897
9897
|
"optional": true,
|
|
@@ -9910,7 +9910,7 @@
|
|
|
9910
9910
|
"immutable": true,
|
|
9911
9911
|
"locationInModule": {
|
|
9912
9912
|
"filename": "lib/cluster.ts",
|
|
9913
|
-
"line":
|
|
9913
|
+
"line": 445
|
|
9914
9914
|
},
|
|
9915
9915
|
"name": "enhancedVpcRouting",
|
|
9916
9916
|
"optional": true,
|
|
@@ -9928,7 +9928,7 @@
|
|
|
9928
9928
|
"immutable": true,
|
|
9929
9929
|
"locationInModule": {
|
|
9930
9930
|
"filename": "lib/cluster.ts",
|
|
9931
|
-
"line":
|
|
9931
|
+
"line": 393
|
|
9932
9932
|
},
|
|
9933
9933
|
"name": "loggingProperties",
|
|
9934
9934
|
"optional": true,
|
|
@@ -9947,7 +9947,7 @@
|
|
|
9947
9947
|
"immutable": true,
|
|
9948
9948
|
"locationInModule": {
|
|
9949
9949
|
"filename": "lib/cluster.ts",
|
|
9950
|
-
"line":
|
|
9950
|
+
"line": 477
|
|
9951
9951
|
},
|
|
9952
9952
|
"name": "maintenanceTrackName",
|
|
9953
9953
|
"optional": true,
|
|
@@ -9965,7 +9965,7 @@
|
|
|
9965
9965
|
"immutable": true,
|
|
9966
9966
|
"locationInModule": {
|
|
9967
9967
|
"filename": "lib/cluster.ts",
|
|
9968
|
-
"line":
|
|
9968
|
+
"line": 452
|
|
9969
9969
|
},
|
|
9970
9970
|
"name": "multiAz",
|
|
9971
9971
|
"optional": true,
|
|
@@ -9983,7 +9983,7 @@
|
|
|
9983
9983
|
"immutable": true,
|
|
9984
9984
|
"locationInModule": {
|
|
9985
9985
|
"filename": "lib/cluster.ts",
|
|
9986
|
-
"line":
|
|
9986
|
+
"line": 293
|
|
9987
9987
|
},
|
|
9988
9988
|
"name": "nodeType",
|
|
9989
9989
|
"optional": true,
|
|
@@ -10002,7 +10002,7 @@
|
|
|
10002
10002
|
"immutable": true,
|
|
10003
10003
|
"locationInModule": {
|
|
10004
10004
|
"filename": "lib/cluster.ts",
|
|
10005
|
-
"line":
|
|
10005
|
+
"line": 286
|
|
10006
10006
|
},
|
|
10007
10007
|
"name": "numberOfNodes",
|
|
10008
10008
|
"optional": true,
|
|
@@ -10020,7 +10020,7 @@
|
|
|
10020
10020
|
"immutable": true,
|
|
10021
10021
|
"locationInModule": {
|
|
10022
10022
|
"filename": "lib/cluster.ts",
|
|
10023
|
-
"line":
|
|
10023
|
+
"line": 277
|
|
10024
10024
|
},
|
|
10025
10025
|
"name": "parameterGroup",
|
|
10026
10026
|
"optional": true,
|
|
@@ -10038,7 +10038,7 @@
|
|
|
10038
10038
|
"immutable": true,
|
|
10039
10039
|
"locationInModule": {
|
|
10040
10040
|
"filename": "lib/cluster.ts",
|
|
10041
|
-
"line":
|
|
10041
|
+
"line": 307
|
|
10042
10042
|
},
|
|
10043
10043
|
"name": "port",
|
|
10044
10044
|
"optional": true,
|
|
@@ -10058,7 +10058,7 @@
|
|
|
10058
10058
|
"immutable": true,
|
|
10059
10059
|
"locationInModule": {
|
|
10060
10060
|
"filename": "lib/cluster.ts",
|
|
10061
|
-
"line":
|
|
10061
|
+
"line": 332
|
|
10062
10062
|
},
|
|
10063
10063
|
"name": "preferredMaintenanceWindow",
|
|
10064
10064
|
"optional": true,
|
|
@@ -10076,7 +10076,7 @@
|
|
|
10076
10076
|
"immutable": true,
|
|
10077
10077
|
"locationInModule": {
|
|
10078
10078
|
"filename": "lib/cluster.ts",
|
|
10079
|
-
"line":
|
|
10079
|
+
"line": 408
|
|
10080
10080
|
},
|
|
10081
10081
|
"name": "publiclyAccessible",
|
|
10082
10082
|
"optional": true,
|
|
@@ -10094,7 +10094,7 @@
|
|
|
10094
10094
|
"immutable": true,
|
|
10095
10095
|
"locationInModule": {
|
|
10096
10096
|
"filename": "lib/cluster.ts",
|
|
10097
|
-
"line":
|
|
10097
|
+
"line": 436
|
|
10098
10098
|
},
|
|
10099
10099
|
"name": "rebootForParameterChanges",
|
|
10100
10100
|
"optional": true,
|
|
@@ -10112,7 +10112,7 @@
|
|
|
10112
10112
|
"immutable": true,
|
|
10113
10113
|
"locationInModule": {
|
|
10114
10114
|
"filename": "lib/cluster.ts",
|
|
10115
|
-
"line":
|
|
10115
|
+
"line": 401
|
|
10116
10116
|
},
|
|
10117
10117
|
"name": "removalPolicy",
|
|
10118
10118
|
"optional": true,
|
|
@@ -10130,7 +10130,7 @@
|
|
|
10130
10130
|
"immutable": true,
|
|
10131
10131
|
"locationInModule": {
|
|
10132
10132
|
"filename": "lib/cluster.ts",
|
|
10133
|
-
"line":
|
|
10133
|
+
"line": 459
|
|
10134
10134
|
},
|
|
10135
10135
|
"name": "resourceAction",
|
|
10136
10136
|
"optional": true,
|
|
@@ -10149,7 +10149,7 @@
|
|
|
10149
10149
|
"immutable": true,
|
|
10150
10150
|
"locationInModule": {
|
|
10151
10151
|
"filename": "lib/cluster.ts",
|
|
10152
|
-
"line":
|
|
10152
|
+
"line": 371
|
|
10153
10153
|
},
|
|
10154
10154
|
"name": "roles",
|
|
10155
10155
|
"optional": true,
|
|
@@ -10172,7 +10172,7 @@
|
|
|
10172
10172
|
"immutable": true,
|
|
10173
10173
|
"locationInModule": {
|
|
10174
10174
|
"filename": "lib/cluster.ts",
|
|
10175
|
-
"line":
|
|
10175
|
+
"line": 351
|
|
10176
10176
|
},
|
|
10177
10177
|
"name": "securityGroups",
|
|
10178
10178
|
"optional": true,
|
|
@@ -10195,7 +10195,7 @@
|
|
|
10195
10195
|
"immutable": true,
|
|
10196
10196
|
"locationInModule": {
|
|
10197
10197
|
"filename": "lib/cluster.ts",
|
|
10198
|
-
"line":
|
|
10198
|
+
"line": 358
|
|
10199
10199
|
},
|
|
10200
10200
|
"name": "subnetGroup",
|
|
10201
10201
|
"optional": true,
|
|
@@ -10213,7 +10213,7 @@
|
|
|
10213
10213
|
"immutable": true,
|
|
10214
10214
|
"locationInModule": {
|
|
10215
10215
|
"filename": "lib/cluster.ts",
|
|
10216
|
-
"line":
|
|
10216
|
+
"line": 344
|
|
10217
10217
|
},
|
|
10218
10218
|
"name": "vpcSubnets",
|
|
10219
10219
|
"optional": true,
|
|
@@ -10452,7 +10452,7 @@
|
|
|
10452
10452
|
"kind": "enum",
|
|
10453
10453
|
"locationInModule": {
|
|
10454
10454
|
"filename": "lib/cluster.ts",
|
|
10455
|
-
"line":
|
|
10455
|
+
"line": 84
|
|
10456
10456
|
},
|
|
10457
10457
|
"members": [
|
|
10458
10458
|
{
|
|
@@ -11081,7 +11081,7 @@
|
|
|
11081
11081
|
"kind": "interface",
|
|
11082
11082
|
"locationInModule": {
|
|
11083
11083
|
"filename": "lib/cluster.ts",
|
|
11084
|
-
"line":
|
|
11084
|
+
"line": 216
|
|
11085
11085
|
},
|
|
11086
11086
|
"name": "ICluster",
|
|
11087
11087
|
"properties": [
|
|
@@ -11097,7 +11097,7 @@
|
|
|
11097
11097
|
"immutable": true,
|
|
11098
11098
|
"locationInModule": {
|
|
11099
11099
|
"filename": "lib/cluster.ts",
|
|
11100
|
-
"line":
|
|
11100
|
+
"line": 229
|
|
11101
11101
|
},
|
|
11102
11102
|
"name": "clusterEndpoint",
|
|
11103
11103
|
"type": {
|
|
@@ -11116,7 +11116,7 @@
|
|
|
11116
11116
|
"immutable": true,
|
|
11117
11117
|
"locationInModule": {
|
|
11118
11118
|
"filename": "lib/cluster.ts",
|
|
11119
|
-
"line":
|
|
11119
|
+
"line": 222
|
|
11120
11120
|
},
|
|
11121
11121
|
"name": "clusterName",
|
|
11122
11122
|
"type": {
|
|
@@ -11452,7 +11452,7 @@
|
|
|
11452
11452
|
"kind": "interface",
|
|
11453
11453
|
"locationInModule": {
|
|
11454
11454
|
"filename": "lib/cluster.ts",
|
|
11455
|
-
"line":
|
|
11455
|
+
"line": 153
|
|
11456
11456
|
},
|
|
11457
11457
|
"name": "LoggingProperties",
|
|
11458
11458
|
"properties": [
|
|
@@ -11466,7 +11466,7 @@
|
|
|
11466
11466
|
"immutable": true,
|
|
11467
11467
|
"locationInModule": {
|
|
11468
11468
|
"filename": "lib/cluster.ts",
|
|
11469
|
-
"line":
|
|
11469
|
+
"line": 158
|
|
11470
11470
|
},
|
|
11471
11471
|
"name": "loggingBucket",
|
|
11472
11472
|
"type": {
|
|
@@ -11482,7 +11482,7 @@
|
|
|
11482
11482
|
"immutable": true,
|
|
11483
11483
|
"locationInModule": {
|
|
11484
11484
|
"filename": "lib/cluster.ts",
|
|
11485
|
-
"line":
|
|
11485
|
+
"line": 163
|
|
11486
11486
|
},
|
|
11487
11487
|
"name": "loggingKeyPrefix",
|
|
11488
11488
|
"type": {
|
|
@@ -11507,7 +11507,7 @@
|
|
|
11507
11507
|
"kind": "interface",
|
|
11508
11508
|
"locationInModule": {
|
|
11509
11509
|
"filename": "lib/cluster.ts",
|
|
11510
|
-
"line":
|
|
11510
|
+
"line": 120
|
|
11511
11511
|
},
|
|
11512
11512
|
"name": "Login",
|
|
11513
11513
|
"properties": [
|
|
@@ -11520,7 +11520,7 @@
|
|
|
11520
11520
|
"immutable": true,
|
|
11521
11521
|
"locationInModule": {
|
|
11522
11522
|
"filename": "lib/cluster.ts",
|
|
11523
|
-
"line":
|
|
11523
|
+
"line": 124
|
|
11524
11524
|
},
|
|
11525
11525
|
"name": "masterUsername",
|
|
11526
11526
|
"type": {
|
|
@@ -11537,7 +11537,7 @@
|
|
|
11537
11537
|
"immutable": true,
|
|
11538
11538
|
"locationInModule": {
|
|
11539
11539
|
"filename": "lib/cluster.ts",
|
|
11540
|
-
"line":
|
|
11540
|
+
"line": 140
|
|
11541
11541
|
},
|
|
11542
11542
|
"name": "encryptionKey",
|
|
11543
11543
|
"optional": true,
|
|
@@ -11555,7 +11555,7 @@
|
|
|
11555
11555
|
"immutable": true,
|
|
11556
11556
|
"locationInModule": {
|
|
11557
11557
|
"filename": "lib/cluster.ts",
|
|
11558
|
-
"line":
|
|
11558
|
+
"line": 147
|
|
11559
11559
|
},
|
|
11560
11560
|
"name": "excludeCharacters",
|
|
11561
11561
|
"optional": true,
|
|
@@ -11574,7 +11574,7 @@
|
|
|
11574
11574
|
"immutable": true,
|
|
11575
11575
|
"locationInModule": {
|
|
11576
11576
|
"filename": "lib/cluster.ts",
|
|
11577
|
-
"line":
|
|
11577
|
+
"line": 133
|
|
11578
11578
|
},
|
|
11579
11579
|
"name": "masterPassword",
|
|
11580
11580
|
"optional": true,
|
|
@@ -11596,7 +11596,7 @@
|
|
|
11596
11596
|
"kind": "enum",
|
|
11597
11597
|
"locationInModule": {
|
|
11598
11598
|
"filename": "lib/cluster.ts",
|
|
11599
|
-
"line":
|
|
11599
|
+
"line": 200
|
|
11600
11600
|
},
|
|
11601
11601
|
"members": [
|
|
11602
11602
|
{
|
|
@@ -11631,7 +11631,7 @@
|
|
|
11631
11631
|
"kind": "enum",
|
|
11632
11632
|
"locationInModule": {
|
|
11633
11633
|
"filename": "lib/cluster.ts",
|
|
11634
|
-
"line":
|
|
11634
|
+
"line": 28
|
|
11635
11635
|
},
|
|
11636
11636
|
"members": [
|
|
11637
11637
|
{
|
|
@@ -11722,7 +11722,7 @@
|
|
|
11722
11722
|
"kind": "enum",
|
|
11723
11723
|
"locationInModule": {
|
|
11724
11724
|
"filename": "lib/cluster.ts",
|
|
11725
|
-
"line":
|
|
11725
|
+
"line": 98
|
|
11726
11726
|
},
|
|
11727
11727
|
"members": [
|
|
11728
11728
|
{
|
|
@@ -11766,7 +11766,7 @@
|
|
|
11766
11766
|
"kind": "interface",
|
|
11767
11767
|
"locationInModule": {
|
|
11768
11768
|
"filename": "lib/cluster.ts",
|
|
11769
|
-
"line":
|
|
11769
|
+
"line": 169
|
|
11770
11770
|
},
|
|
11771
11771
|
"name": "RotationMultiUserOptions",
|
|
11772
11772
|
"properties": [
|
|
@@ -11780,7 +11780,7 @@
|
|
|
11780
11780
|
"immutable": true,
|
|
11781
11781
|
"locationInModule": {
|
|
11782
11782
|
"filename": "lib/cluster.ts",
|
|
11783
|
-
"line":
|
|
11783
|
+
"line": 184
|
|
11784
11784
|
},
|
|
11785
11785
|
"name": "secret",
|
|
11786
11786
|
"type": {
|
|
@@ -11797,7 +11797,7 @@
|
|
|
11797
11797
|
"immutable": true,
|
|
11798
11798
|
"locationInModule": {
|
|
11799
11799
|
"filename": "lib/cluster.ts",
|
|
11800
|
-
"line":
|
|
11800
|
+
"line": 192
|
|
11801
11801
|
},
|
|
11802
11802
|
"name": "automaticallyAfter",
|
|
11803
11803
|
"optional": true,
|
|
@@ -12820,6 +12820,6 @@
|
|
|
12820
12820
|
"symbolId": "lib/user:UserProps"
|
|
12821
12821
|
}
|
|
12822
12822
|
},
|
|
12823
|
-
"version": "2.
|
|
12823
|
+
"version": "2.255.0-alpha.0",
|
|
12824
12824
|
"fingerprint": "**********"
|
|
12825
12825
|
}
|
package/.jsii.tabl.json.gz
CHANGED
|
Binary file
|
package/lib/cluster.js
CHANGED
|
@@ -170,7 +170,7 @@ class ClusterBase extends core_1.Resource {
|
|
|
170
170
|
* @resource AWS::Redshift::Cluster
|
|
171
171
|
*/
|
|
172
172
|
let Cluster = (() => {
|
|
173
|
-
let _classDecorators = [prop_injectable_1.propertyInjectable];
|
|
173
|
+
let _classDecorators = [prop_injectable_1.propertyInjectable, helpers_internal_1.noBoxStackTraces];
|
|
174
174
|
let _classDescriptor;
|
|
175
175
|
let _classExtraInitializers = [];
|
|
176
176
|
let _classThis;
|
|
@@ -202,7 +202,7 @@ let Cluster = (() => {
|
|
|
202
202
|
Cluster = _classThis = _classDescriptor.value;
|
|
203
203
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
204
204
|
}
|
|
205
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-redshift-alpha.Cluster", version: "2.
|
|
205
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-redshift-alpha.Cluster", version: "2.255.0-alpha.0" };
|
|
206
206
|
/** Uniquely identifies this class. */
|
|
207
207
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-redshift-alpha.Cluster';
|
|
208
208
|
/**
|
|
@@ -287,7 +287,7 @@ let Cluster = (() => {
|
|
|
287
287
|
subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,
|
|
288
288
|
};
|
|
289
289
|
this.parameterGroup = props.parameterGroup;
|
|
290
|
-
this.roles = props?.roles ? [...props.roles] : [];
|
|
290
|
+
this.roles = helpers_internal_1.Box.fromArray(props?.roles ? [...props.roles] : []);
|
|
291
291
|
const removalPolicy = props.removalPolicy ?? core_1.RemovalPolicy.RETAIN;
|
|
292
292
|
const subnetGroup = props.subnetGroup ?? new subnet_group_1.ClusterSubnetGroup(this, 'Subnets', {
|
|
293
293
|
description: `Subnets for ${id} Redshift cluster`,
|
|
@@ -370,7 +370,7 @@ let Cluster = (() => {
|
|
|
370
370
|
nodeType,
|
|
371
371
|
numberOfNodes: nodeCount,
|
|
372
372
|
loggingProperties,
|
|
373
|
-
iamRoles: core_1.
|
|
373
|
+
iamRoles: core_1.Token.asList(this.roles.map(role => role.roleArn)),
|
|
374
374
|
dbName: props.defaultDatabaseName || 'default_db',
|
|
375
375
|
publiclyAccessible: props.publiclyAccessible || false,
|
|
376
376
|
// Encryption
|
|
@@ -570,17 +570,8 @@ let Cluster = (() => {
|
|
|
570
570
|
* @param defaultIamRole the IAM role to be set as the default role
|
|
571
571
|
*/
|
|
572
572
|
addDefaultIamRole(defaultIamRole) {
|
|
573
|
-
// Get list of IAM roles attached to cluster
|
|
574
|
-
const clusterRoleList = this.roles ?? [];
|
|
575
573
|
// Check to see if default role is included in list of cluster IAM roles
|
|
576
|
-
|
|
577
|
-
for (var i = 0; i < clusterRoleList.length; i++) {
|
|
578
|
-
if (clusterRoleList[i] === defaultIamRole) {
|
|
579
|
-
roleAlreadyOnCluster = true;
|
|
580
|
-
break;
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
|
-
if (!roleAlreadyOnCluster) {
|
|
574
|
+
if (!this.roles.includes(defaultIamRole)) {
|
|
584
575
|
throw new core_1.ValidationError((0, helpers_internal_1.lit) `DefaultRoleNotAssociated`, 'Default role must be associated to the Redshift cluster to be set as the default role.', this);
|
|
585
576
|
}
|
|
586
577
|
// On UPDATE or CREATE define the default IAM role. On DELETE, remove the default IAM role
|
|
@@ -616,11 +607,10 @@ let Cluster = (() => {
|
|
|
616
607
|
* @param role the role to add
|
|
617
608
|
*/
|
|
618
609
|
addIamRole(role) {
|
|
619
|
-
|
|
620
|
-
if (clusterRoleList.includes(role)) {
|
|
610
|
+
if (this.roles.includes(role)) {
|
|
621
611
|
throw new core_1.ValidationError((0, helpers_internal_1.lit) `RoleAlreadyAttached`, `Role '${role.roleArn}' is already attached to the cluster`, this);
|
|
622
612
|
}
|
|
623
|
-
|
|
613
|
+
this.roles.push(role);
|
|
624
614
|
}
|
|
625
615
|
static {
|
|
626
616
|
__runInitializers(_classThis, _classExtraInitializers);
|
|
@@ -629,4 +619,4 @@ let Cluster = (() => {
|
|
|
629
619
|
return Cluster = _classThis;
|
|
630
620
|
})();
|
|
631
621
|
exports.Cluster = Cluster;
|
|
632
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFFM0MsaURBQWlEO0FBQ2pELDJEQUFzRDtBQUV0RCxpRUFBaUU7QUFFakUsMkNBQXFJO0FBQ3JJLDRFQUE0RDtBQUM1RCw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBQzFFLG1FQUF3SDtBQUV4SCx1REFBbUQ7QUFDbkQseUNBQXNDO0FBRXRDLHVEQUEwRDtBQUUxRCxpREFBb0Q7QUFFcEQ7OztHQUdHO0FBQ0gsSUFBWSxRQWtEWDtBQWxERCxXQUFZLFFBQVE7SUFDbEI7O09BRUc7SUFDSCxxQ0FBeUIsQ0FBQTtJQUV6Qjs7T0FFRztJQUNILHVDQUEyQixDQUFBO0lBRTNCOztPQUVHO0lBQ0gsbUNBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCx1Q0FBMkIsQ0FBQTtJQUUzQjs7T0FFRztJQUNILG1DQUF1QixDQUFBO0lBRXZCOztPQUVHO0lBQ0gsdUNBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCxtQ0FBdUIsQ0FBQTtJQUV2Qjs7T0FFRztJQUNILHFDQUF5QixDQUFBO0lBRXpCOztPQUVHO0lBQ0gsdUNBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCx5Q0FBNkIsQ0FBQTtBQUMvQixDQUFDLEVBbERXLFFBQVEsd0JBQVIsUUFBUSxRQWtEbkI7QUFFRDs7O0dBR0c7QUFDSCxJQUFZLFdBU1g7QUFURCxXQUFZLFdBQVc7SUFDckI7O09BRUc7SUFDSCwwQ0FBMkIsQ0FBQTtJQUMzQjs7T0FFRztJQUNILHdDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFUVyxXQUFXLDJCQUFYLFdBQVcsUUFTdEI7QUFFRDs7R0FFRztBQUNILElBQVksY0FpQlg7QUFqQkQsV0FBWSxjQUFjO0lBQ3hCOztPQUVHO0lB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bUIsRUFBRSxLQUFLO2FBQzNCLENBQUMsQ0FBQztZQUVILGNBQWMsQ0FBQyxhQUFhLENBQUMseUJBQXlCLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDeEU7UUFFRDs7OztXQUlHO1FBRUksVUFBVSxDQUFDLElBQWU7WUFDL0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUVuQyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLHNCQUFlLENBQUMsSUFBQSxzQkFBRyxFQUFBLHFCQUFxQixFQUFFLFNBQVMsSUFBSSxDQUFDLE9BQU8sc0NBQXNDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDekgsQ0FBQztZQUVELGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUI7O1lBL2JVLHVEQUFPOzs7OztBQUFQLDBCQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB0eXBlICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ2ZuQ2x1c3RlciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1yZWRzaGlmdCc7XG5pbXBvcnQgdHlwZSAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0IHR5cGUgeyBJUmVzb3VyY2UsIFNlY3JldFZhbHVlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBBcm5Gb3JtYXQsIEN1c3RvbVJlc291cmNlLCBEdXJhdGlvbiwgTGF6eSwgUmVtb3ZhbFBvbGljeSwgUmVzb3VyY2UsIFN0YWNrLCBUb2tlbiwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBsaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSwgQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3ksIFBoeXNpY2FsUmVzb3VyY2VJZCwgUHJvdmlkZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBEYXRhYmFzZVNlY3JldCB9IGZyb20gJy4vZGF0YWJhc2Utc2VjcmV0JztcbmltcG9ydCB7IEVuZHBvaW50IH0gZnJvbSAnLi9lbmRwb2ludCc7XG5pbXBvcnQgdHlwZSB7IElDbHVzdGVyUGFyYW1ldGVyR3JvdXAgfSBmcm9tICcuL3BhcmFtZXRlci1ncm91cCc7XG5pbXBvcnQgeyBDbHVzdGVyUGFyYW1ldGVyR3JvdXAgfSBmcm9tICcuL3BhcmFtZXRlci1ncm91cCc7XG5pbXBvcnQgdHlwZSB7IElDbHVzdGVyU3VibmV0R3JvdXAgfSBmcm9tICcuL3N1Ym5ldC1ncm91cCc7XG5pbXBvcnQgeyBDbHVzdGVyU3VibmV0R3JvdXAgfSBmcm9tICcuL3N1Ym5ldC1ncm91cCc7XG5cbi8qKlxuICogUG9zc2libGUgTm9kZSBUeXBlcyB0byB1c2UgaW4gdGhlIGNsdXN0ZXJcbiAqIHVzZWQgZm9yIGRlZmluaW5nIGBDbHVzdGVyUHJvcHMubm9kZVR5cGVgLlxuICovXG5leHBvcnQgZW51bSBOb2RlVHlwZSB7XG4gIC8qKlxuICAgKiBkczIueGxhcmdlXG4gICAqL1xuICBEUzJfWExBUkdFID0gJ2RzMi54bGFyZ2UnLFxuXG4gIC8qKlxuICAgKiBkczIuOHhsYXJnZVxuICAgKi9cbiAgRFMyXzhYTEFSR0UgPSAnZHMyLjh4bGFyZ2UnLFxuXG4gIC8qKlxuICAgKiBkYzEubGFyZ2VcbiAgICovXG4gIERDMV9MQVJHRSA9ICdkYzEubGFyZ2UnLFxuXG4gIC8qKlxuICAgKiBkYzEuOHhsYXJnZVxuICAgKi9cbiAgREMxXzhYTEFSR0UgPSAnZGMxLjh4bGFyZ2UnLFxuXG4gIC8qKlxuICAgKiBkYzIubGFyZ2VcbiAgICovXG4gIERDMl9MQVJHRSA9ICdkYzIubGFyZ2UnLFxuXG4gIC8qKlxuICAgKiBkYzIuOHhsYXJnZVxuICAgKi9cbiAgREMyXzhYTEFSR0UgPSAnZGMyLjh4bGFyZ2UnLFxuXG4gIC8qKlxuICAgKiByYTMubGFyZ2VcbiAgICovXG4gIFJBM19MQVJHRSA9ICdyYTMubGFyZ2UnLFxuXG4gIC8qKlxuICAgKiByYTMueGxwbHVzXG4gICAqL1xuICBSQTNfWExQTFVTID0gJ3JhMy54bHBsdXMnLFxuXG4gIC8qKlxuICAgKiByYTMuNHhsYXJnZVxuICAgKi9cbiAgUkEzXzRYTEFSR0UgPSAncmEzLjR4bGFyZ2UnLFxuXG4gIC8qKlxuICAgKiByYTMuMTZ4bGFyZ2VcbiAgICovXG4gIFJBM18xNlhMQVJHRSA9ICdyYTMuMTZ4bGFyZ2UnLFxufVxuXG4vKipcbiAqIFdoYXQgY2x1c3RlciB0eXBlIHRvIHVzZS5cbiAqIFVzZWQgYnkgYENsdXN0ZXJQcm9wcy5jbHVzdGVyVHlwZWBcbiAqL1xuZXhwb3J0IGVudW0gQ2x1c3RlclR5cGUge1xuICAvKipcbiAgICogc2luZ2xlLW5vZGUgY2x1c3RlciwgdGhlIGBDbHVzdGVyUHJvcHMubnVtYmVyT2ZOb2Rlc2AgcGFyYW1ldGVyIGlzIG5vdCByZXF1aXJlZFxuICAgKi9cbiAgU0lOR0xFX05PREUgPSAnc2luZ2xlLW5vZGUnLFxuICAvKipcbiAgICogbXVsdGktbm9kZSBjbHVzdGVyLCBzZXQgdGhlIGFtb3VudCBvZiBub2RlcyB1c2luZyBgQ2x1c3RlclByb3BzLm51bWJlck9mTm9kZXNgIHBhcmFtZXRlclxuICAgKi9cbiAgTVVMVElfTk9ERSA9ICdtdWx0aS1ub2RlJyxcbn1cblxuLyoqXG4gKiBUaGUgQW1hem9uIFJlZHNoaWZ0IG9wZXJhdGlvblxuICovXG5leHBvcnQgZW51bSBSZXNvdXJjZUFjdGlvbiB7XG4gIC8qKlxuICAgKiBQYXVzZSB0aGUgY2x1c3RlclxuICAgKi9cbiAgUEFVU0VfQ0xVU1RFUiA9ICdwYXVzZS1jbHVzdGVyJyxcblxuICAvKipcbiAgICogUmVzdW1lIHRoZSBjbHVzdGVyXG4gICAqL1xuICBSRVNVTUVfQ0xVU1RFUiA9ICdyZXN1bWUtY2x1c3RlcicsXG5cbiAgLyoqXG4gICAqIEZhaWxpbmcgb3ZlciB0byB0aGUgb3RoZXIgYXZhaWxhYmlsaXR5IHpvbmVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L21nbXQvdGVzdC1jbHVzdGVyLW11bHRpLWF6Lmh0bWxcbiAgICovXG4gIEZBSUxPVkVSX1BSSU1BUllfQ09NUFVURSA9ICdmYWlsb3Zlci1wcmltYXJ5LWNvbXB1dGUnLFxufVxuXG4vKipcbiAqIFVzZXJuYW1lIGFuZCBwYXNzd29yZCBjb21iaW5hdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luIHtcbiAgLyoqXG4gICAqIFVzZXJuYW1lXG4gICAqL1xuICByZWFkb25seSBtYXN0ZXJVc2VybmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXNzd29yZFxuICAgKlxuICAgKiBEbyBub3QgcHV0IHBhc3N3b3JkcyBpbiB5b3VyIENESyBjb2RlIGRpcmVjdGx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgU2VjcmV0cyBNYW5hZ2VyIGdlbmVyYXRlZCBwYXNzd29yZFxuICAgKi9cbiAgcmVhZG9ubHkgbWFzdGVyUGFzc3dvcmQ/OiBTZWNyZXRWYWx1ZTtcblxuICAvKipcbiAgICogS01TIGVuY3J5cHRpb24ga2V5IHRvIGVuY3J5cHQgdGhlIGdlbmVyYXRlZCBzZWNyZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBtYXN0ZXIga2V5XG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIENoYXJhY3RlcnMgdG8gbm90IGluY2x1ZGUgaW4gdGhlIGdlbmVyYXRlZCBwYXNzd29yZC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ1wiQC9cXFxcXFwgXFwnJ1xuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZUNoYXJhY3RlcnM/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTG9nZ2luZyBidWNrZXQgYW5kIFMzIHByZWZpeCBjb21iaW5hdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dpbmdQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIEJ1Y2tldCB0byBzZW5kIGxvZ3MgdG8uXG4gICAqIExvZ2dpbmcgaW5mb3JtYXRpb24gaW5jbHVkZXMgcXVlcmllcyBhbmQgY29ubmVjdGlvbiBhdHRlbXB0cywgZm9yIHRoZSBzcGVjaWZpZWQgQW1hem9uIFJlZHNoaWZ0IGNsdXN0ZXIuXG4gICAqL1xuICByZWFkb25seSBsb2dnaW5nQnVja2V0OiBzMy5JQnVja2V0O1xuXG4gIC8qKlxuICAgKiBQcmVmaXggdXNlZCBmb3IgbG9nZ2luZy5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmdLZXlQcmVmaXg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGFkZCB0aGUgbXVsdGkgdXNlciByb3RhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdGF0aW9uTXVsdGlVc2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IHRvIHJvdGF0ZS4gSXQgbXVzdCBiZSBhIEpTT04gc3RyaW5nIHdpdGggdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqIGBgYFxuICAgKiB7XG4gICAqICAgXCJlbmdpbmVcIjogPHJlcXVpcmVkOiBkYXRhYmFzZSBlbmdpbmU+LFxuICAgKiAgIFwiaG9zdFwiOiA8cmVxdWlyZWQ6IGluc3RhbmNlIGhvc3QgbmFtZT4sXG4gICAqICAgXCJ1c2VybmFtZVwiOiA8cmVxdWlyZWQ6IHVzZXJuYW1lPixcbiAgICogICBcInBhc3N3b3JkXCI6IDxyZXF1aXJlZDogcGFzc3dvcmQ+LFxuICAgKiAgIFwiZGJuYW1lXCI6IDxvcHRpb25hbDogZGF0YWJhc2UgbmFtZT4sXG4gICAqICAgXCJwb3J0XCI6IDxvcHRpb25hbDogaWYgbm90IHNwZWNpZmllZCwgZGVmYXVsdCBwb3J0IHdpbGwgYmUgdXNlZD4sXG4gICAqICAgXCJtYXN0ZXJhcm5cIjogPHJlcXVpcmVkOiB0aGUgYXJuIG9mIHRoZSBtYXN0ZXIgc2VjcmV0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgdXNlcnMvY2hhbmdlIHBhc3N3b3Jkcz5cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldDogc2VjcmV0c21hbmFnZXIuSVNlY3JldDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZGF5cyBhZnRlciB0aGUgcHJldmlvdXMgcm90YXRpb24gYmVmb3JlXG4gICAqIFNlY3JldHMgTWFuYWdlciB0cmlnZ2VycyB0aGUgbmV4dCBhdXRvbWF0aWMgcm90YXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IER1cmF0aW9uLmRheXMoMzApXG4gICAqL1xuICByZWFkb25seSBhdXRvbWF0aWNhbGx5QWZ0ZXI/OiBEdXJhdGlvbjtcbn1cblxuLyoqXG4gKiBUaGUgbWFpbnRlbmFuY2UgdHJhY2sgZm9yIHRoZSBjbHVzdGVyLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9tZ210L21hbmFnaW5nLWNsdXN0ZXItY29uc2lkZXJhdGlvbnMuaHRtbCNycy1tZ210LW1haW50ZW5hbmNlLXRyYWNrc1xuICovXG5leHBvcnQgZW51bSBNYWludGVuYW5jZVRyYWNrTmFtZSB7XG4gIC8qKlxuICAgKiBVcGRhdGVkIHRvIHRoZSBtb3N0IHJlY2VudGx5IGNlcnRpZmllZCBtYWludGVuYW5jZSByZWxlYXNlLlxuICAgKi9cbiAgQ1VSUkVOVCA9ICdjdXJyZW50JyxcblxuICAvKipcbiAgICogVXBkYXRlIHRvIHRoZSBwcmV2aW91c2x5IGNlcnRpZmllZCBtYWludGVuYW5jZSByZWxlYXNlLlxuICAgKi9cbiAgVFJBSUxJTkcgPSAndHJhaWxpbmcnLFxufVxuXG4vKipcbiAqIENyZWF0ZSBhIFJlZHNoaWZ0IENsdXN0ZXIgd2l0aCBhIGdpdmVuIG51bWJlciBvZiBub2Rlcy5cbiAqIEltcGxlbWVudGVkIGJ5IGBDbHVzdGVyYCB2aWEgYENsdXN0ZXJCYXNlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ2x1c3RlciBleHRlbmRzIElSZXNvdXJjZSwgZWMyLklDb25uZWN0YWJsZSwgc2VjcmV0c21hbmFnZXIuSVNlY3JldEF0dGFjaG1lbnRUYXJnZXQge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgY2x1c3RlclxuICAgKlxuICAgKiBAYXR0cmlidXRlIENsdXN0ZXJOYW1lXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZW5kcG9pbnQgdG8gdXNlIGZvciByZWFkL3dyaXRlIG9wZXJhdGlvbnNcbiAgICpcbiAgICogQGF0dHJpYnV0ZSBFbmRwb2ludEFkZHJlc3MsRW5kcG9pbnRQb3J0XG4gICAqL1xuICByZWFkb25seSBjbHVzdGVyRW5kcG9pbnQ6IEVuZHBvaW50O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdGhhdCBkZXNjcmliZSBhbiBleGlzdGluZyBjbHVzdGVyIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3RlckF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIHNlY3VyaXR5IGdyb3VwcyBvZiB0aGUgcmVkc2hpZnQgY2x1c3RlclxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBzZWN1cml0eSBncm91cHMgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgaW1wb3J0XG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IGVjMi5JU2VjdXJpdHlHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGUgY2x1c3RlclxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQ2x1c3RlciBlbmRwb2ludCBhZGRyZXNzXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVyRW5kcG9pbnRBZGRyZXNzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENsdXN0ZXIgZW5kcG9pbnQgcG9ydFxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlckVuZHBvaW50UG9ydDogbnVtYmVyO1xuXG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBuZXcgZGF0YWJhc2UgY2x1c3RlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBpZGVudGlmaWVyIGZvciB0aGUgY2x1c3RlclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEEgbmFtZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXJOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgdG8gcGFzcyB0byB0aGUgZGF0YWJhc2UgZW5naW5lXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvbWdtdC93b3JraW5nLXdpdGgtcGFyYW1ldGVyLWdyb3Vwcy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcGFyYW1ldGVyIGdyb3VwLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVyR3JvdXA/OiBJQ2x1c3RlclBhcmFtZXRlckdyb3VwO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgY29tcHV0ZSBub2RlcyBpbiB0aGUgY2x1c3Rlci4gT25seSBzcGVjaWZ5IHRoaXMgcHJvcGVydHkgZm9yIG11bHRpLW5vZGUgY2x1c3RlcnMuXG4gICAqXG4gICAqIFZhbHVlIG11c3QgYmUgYXQgbGVhc3QgMiBhbmQgbm8gbW9yZSB0aGFuIDEwMC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAyIGlmIGBjbHVzdGVyVHlwZWAgaXMgQ2x1c3RlclR5cGUuTVVMVElfTk9ERSwgdW5kZWZpbmVkIG90aGVyd2lzZVxuICAgKi9cbiAgcmVhZG9ubHkgbnVtYmVyT2ZOb2Rlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG5vZGUgdHlwZSB0byBiZSBwcm92aXNpb25lZCBmb3IgdGhlIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBOb2RlVHlwZS5SQTNfTEFSR0VgXG4gICAqL1xuICByZWFkb25seSBub2RlVHlwZT86IE5vZGVUeXBlO1xuXG4gIC8qKlxuICAgKiBTZXR0aW5ncyBmb3IgdGhlIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRoYXQgYXJlIGxhdW5jaGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IGBDbHVzdGVyVHlwZS5NVUxUSV9OT0RFYFxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlclR5cGU/OiBDbHVzdGVyVHlwZTtcblxuICAvKipcbiAgICogV2hhdCBwb3J0IHRvIGxpc3RlbiBvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBkZWZhdWx0IGZvciB0aGUgZW5naW5lIGlzIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBwb3J0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBlbmNyeXB0aW9uIG9mIGRhdGEgYXQgcmVzdCBpbiB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdG8gdXNlIGZvciBlbmNyeXB0aW9uIG9mIGRhdGEgYXQgcmVzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBV1MtbWFuYWdlZCBrZXksIGlmIGVuY3J5cHRpb24gYXQgcmVzdCBpcyBlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgLyoqXG4gICAqIEEgcHJlZmVycmVkIG1haW50ZW5hbmNlIHdpbmRvdyBkYXkvdGltZSByYW5nZS4gU2hvdWxkIGJlIHNwZWNpZmllZCBhcyBhIHJhbmdlIGRkZDpoaDI0Om1pLWRkZDpoaDI0Om1pICgyNEggQ2xvY2sgVVRDKS5cbiAgICpcbiAgICogRXhhbXBsZTogJ1N1bjoyMzo0NS1Nb246MDA6MTUnXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gMzAtbWludXRlIHdpbmRvdyBzZWxlY3RlZCBhdCByYW5kb20gZnJvbSBhbiA4LWhvdXIgYmxvY2sgb2YgdGltZSBmb3JcbiAgICogZWFjaCBBV1MgUmVnaW9uLCBvY2N1cnJpbmcgb24gYSByYW5kb20gZGF5IG9mIHRoZSB3ZWVrLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9VU0VSX1VwZ3JhZGVEQkluc3RhbmNlLk1haW50ZW5hbmNlLmh0bWwjQ29uY2VwdHMuREJNYWludGVuYW5jZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgdG8gcGxhY2UgdGhlIGNsdXN0ZXIgaW4uXG4gICAqL1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBXaGVyZSB0byBwbGFjZSB0aGUgaW5zdGFuY2VzIHdpdGhpbiB0aGUgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJpdmF0ZSBzdWJuZXRzXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuZXcgc2VjdXJpdHkgZ3JvdXAgaXMgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIEEgY2x1c3RlciBzdWJuZXQgZ3JvdXAgdG8gdXNlIHdpdGggdGhpcyBjbHVzdGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmV3IHN1Ym5ldCBncm91cCB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRHcm91cD86IElDbHVzdGVyU3VibmV0R3JvdXA7XG5cbiAgLyoqXG4gICAqIFVzZXJuYW1lIGFuZCBwYXNzd29yZCBmb3IgdGhlIGFkbWluaXN0cmF0aXZlIHVzZXJcbiAgICovXG4gIHJlYWRvbmx5IG1hc3RlclVzZXI6IExvZ2luO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSByb2xlIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlIGNsdXN0ZXIgdG8gYWNjZXNzIG90aGVyIEFXUyBzZXJ2aWNlcy5cbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHJvbGVzIHRvIGF0dGFjaCB0byBhIGNsdXN0ZXIgaXMgc3ViamVjdCB0byBhIHF1b3RhLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHJvbGUgaXMgYXR0YWNoZWQgdG8gdGhlIGNsdXN0ZXIuXG4gICAqL1xuICByZWFkb25seSByb2xlcz86IGlhbS5JUm9sZVtdO1xuXG4gIC8qKlxuICAgKiBBIHNpbmdsZSBBV1MgSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pIHJvbGUgdG8gYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCByb2xlIGZvciB0aGUgY2x1c3Rlci5cbiAgICogVGhlIGRlZmF1bHQgcm9sZSBtdXN0IGJlIGluY2x1ZGVkIGluIHRoZSByb2xlcyBsaXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlZmF1bHQgcm9sZSBpcyBzcGVjaWZpZWQgZm9yIHRoZSBjbHVzdGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgYSBkYXRhYmFzZSB3aGljaCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgaW5zaWRlIHRoZSBjbHVzdGVyXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdF9kYlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdERhdGFiYXNlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQnVja2V0IGRldGFpbHMgZm9yIGxvZyBmaWxlcyB0byBiZSBzZW50IHRvLCBpbmNsdWRpbmcgcHJlZml4LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGxvZ2dpbmcgYnVja2V0IGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmdQcm9wZXJ0aWVzPzogTG9nZ2luZ1Byb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIFRoZSByZW1vdmFsIHBvbGljeSB0byBhcHBseSB3aGVuIHRoZSBjbHVzdGVyIGFuZCBpdHMgaW5zdGFuY2VzIGFyZSByZW1vdmVkXG4gICAqIGZyb20gdGhlIHN0YWNrIG9yIHJlcGxhY2VkIGR1cmluZyBhbiB1cGRhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBtYWtlIGNsdXN0ZXIgcHVibGljbHkgYWNjZXNzaWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY2x5QWNjZXNzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgZmxhZyBpcyBzZXQsIHRoZSBjbHVzdGVyIHJlc2l6aW5nIHR5cGUgd2lsbCBiZSBzZXQgdG8gY2xhc3NpYy5cbiAgICogV2hlbiByZXNpemluZyBhIGNsdXN0ZXIsIGNsYXNzaWMgcmVzaXppbmcgd2lsbCBhbHdheXMgcHJvdmlzaW9uIGEgbmV3IGNsdXN0ZXIgYW5kIHRyYW5zZmVyIHRoZSBkYXRhIHRoZXJlLlxuICAgKlxuICAgKiBDbGFzc2ljIHJlc2l6ZSB0YWtlcyBtb3JlIHRpbWUgdG8gY29tcGxldGUsIGJ1dCBpdCBjYW4gYmUgdXNlZnVsIGluIGNhc2VzIHdoZXJlIHRoZSBjaGFuZ2UgaW4gbm9kZSBjb3VudCBvclxuICAgKiB0aGUgbm9kZSB0eXBlIHRvIG1pZ3JhdGUgdG8gZG9lc24ndCBmYWxsIHdpdGhpbiB0aGUgYm91bmRzIGZvciBlbGFzdGljIHJlc2l6ZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L21nbXQvbWFuYWdpbmctY2x1c3Rlci1vcGVyYXRpb25zLmh0bWwjZWxhc3RpYy1yZXNpemVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBFbGFzdGljIHJlc2l6ZSB0eXBlXG4gICAqL1xuICByZWFkb25seSBjbGFzc2ljUmVzaXppbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgRWxhc3RpYyBJUCAoRUlQKSBhZGRyZXNzIGZvciB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L21nbXQvbWFuYWdpbmctY2x1c3RlcnMtdnBjLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBFbGFzdGljIElQXG4gICAqL1xuICByZWFkb25seSBlbGFzdGljSXA/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgZmxhZyBpcyBzZXQsIHRoZSBjbHVzdGVyIHdpbGwgYmUgcmVib290ZWQgd2hlbiBjaGFuZ2VzIHRvIHRoZSBjbHVzdGVyJ3MgcGFyYW1ldGVyIGdyb3VwIHRoYXQgcmVxdWlyZSBhIHJlc3RhcnQgdG8gYXBwbHkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSByZWJvb3RGb3JQYXJhbWV0ZXJDaGFuZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBmbGFnIGlzIHNldCwgQW1hem9uIFJlZHNoaWZ0IGZvcmNlcyBhbGwgQ09QWSBhbmQgVU5MT0FEIHRyYWZmaWMgYmV0d2VlbiB5b3VyIGNsdXN0ZXIgYW5kIHlvdXIgZGF0YSByZXBvc2l0b3JpZXMgdGhyb3VnaCB5b3VyIHZpcnR1YWwgcHJpdmF0ZSBjbG91ZCAoVlBDKS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L21nbXQvZW5oYW5jZWQtdnBjLXJvdXRpbmcuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZFZwY1JvdXRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0aW5nIHdoZXRoZXIgQW1hem9uIFJlZHNoaWZ0IHNob3VsZCBkZXBsb3kgdGhlIGNsdXN0ZXIgaW4gdHdvIEF2YWlsYWJpbGl0eSBab25lcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbXVsdGlBej86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gUmVkc2hpZnQgb3BlcmF0aW9uIHRvIGJlIHBlcmZvcm1lZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBvcGVyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlQWN0aW9uPzogUmVzb3VyY2VBY3Rpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIHJlbG9jYXRpb24gZm9yIGFuIEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVyIGJldHdlZW4gQXZhaWxhYmlsaXR5IFpvbmVzIGFmdGVyIHRoZSBjbHVzdGVyIGlzIGNyZWF0ZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9tZ210L21hbmFnaW5nLWNsdXN0ZXItcmVjb3ZlcnkuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lUmVsb2NhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYWludGVuYW5jZSB0cmFjayBuYW1lIGZvciB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L21nbXQvbWFuYWdpbmctY2x1c3Rlci1jb25zaWRlcmF0aW9ucy5odG1sI3JzLW1nbXQtbWFpbnRlbmFuY2UtdHJhY2tzXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZCAtIFJlZHNoaWZ0IGRlZmF1bHQgaXMgY3VycmVudFxuICAgKi9cbiAgcmVhZG9ubHkgbWFpbnRlbmFuY2VUcmFja05hbWU/OiBNYWludGVuYW5jZVRyYWNrTmFtZTtcbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBjbHVzdGVyZWQgZGF0YWJhc2UuXG4gKi9cbmFic3RyYWN0IGNsYXNzIENsdXN0ZXJCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJQ2x1c3RlciB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBjbHVzdGVyXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgY2x1c3Rlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVuZHBvaW50IHRvIHVzZSBmb3IgcmVhZC93cml0ZSBvcGVyYXRpb25zXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgY2x1c3RlckVuZHBvaW50OiBFbmRwb2ludDtcblxuICAvKipcbiAgICogQWNjZXNzIHRvIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgc2VjcmV0IGF0dGFjaG1lbnQgdGFyZ2V0IHNwZWNpZmljYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGFzU2VjcmV0QXR0YWNobWVudFRhcmdldCgpOiBzZWNyZXRzbWFuYWdlci5TZWNyZXRBdHRhY2htZW50VGFyZ2V0UHJvcHMge1xuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXRJZDogdGhpcy5jbHVzdGVyTmFtZSxcbiAgICAgIHRhcmdldFR5cGU6IHNlY3JldHNtYW5hZ2VyLkF0dGFjaG1lbnRUYXJnZXRUeXBlLlJFRFNISUZUX0NMVVNURVIsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIFJlZHNoaWZ0IGNsdXN0ZXIgYSBnaXZlbiBudW1iZXIgb2Ygbm9kZXMuXG4gKlxuICogQHJlc291cmNlIEFXUzo6UmVkc2hpZnQ6OkNsdXN0ZXJcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIENsdXN0ZXIgZXh0ZW5kcyBDbHVzdGVyQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLXJlZHNoaWZ0LWFscGhhLkNsdXN0ZXInO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgRGF0YWJhc2VDbHVzdGVyIGZyb20gcHJvcGVydGllc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQ2x1c3RlckF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IENsdXN0ZXJBdHRyaWJ1dGVzKTogSUNsdXN0ZXIge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIENsdXN0ZXJCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9ucyA9IG5ldyBlYzIuQ29ubmVjdGlvbnMoe1xuICAgICAgICBzZWN1cml0eUdyb3VwczogYXR0cnMuc2VjdXJpdHlHcm91cHMsXG4gICAgICAgIGRlZmF1bHRQb3J0OiBlYzIuUG9ydC50Y3AoYXR0cnMuY2x1c3RlckVuZHBvaW50UG9ydCksXG4gICAgICB9KTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjbHVzdGVyTmFtZSA9IGF0dHJzLmNsdXN0ZXJOYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGluc3RhbmNlSWRlbnRpZmllcnM6IHN0cmluZ1tdID0gW107XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY2x1c3RlckVuZHBvaW50ID0gbmV3IEVuZHBvaW50KGF0dHJzLmNsdXN0ZXJFbmRwb2ludEFkZHJlc3MsIGF0dHJzLmNsdXN0ZXJFbmRwb2ludFBvcnQpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIGNsdXN0ZXJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjbHVzdGVyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZW5kcG9pbnQgdG8gdXNlIGZvciByZWFkL3dyaXRlIG9wZXJhdGlvbnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjbHVzdGVyRW5kcG9pbnQ6IEVuZHBvaW50O1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdG8gdGhlIG5ldHdvcmsgY29ubmVjdGlvbnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uczogZWMyLkNvbm5lY3Rpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IGF0dGFjaGVkIHRvIHRoaXMgY2x1c3RlclxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlY3JldD86IHNlY3JldHNtYW5hZ2VyLklTZWNyZXQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzaW5nbGVVc2VyUm90YXRpb25BcHBsaWNhdGlvbjogc2VjcmV0c21hbmFnZXIuU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBtdWx0aVVzZXJSb3RhdGlvbkFwcGxpY2F0aW9uOiBzZWNyZXRzbWFuYWdlci5TZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIHdoZXJlIHRoZSBEQiBzdWJuZXQgZ3JvdXAgaXMgY3JlYXRlZC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcblxuICAvKipcbiAgICogVGhlIHN1Ym5ldHMgdXNlZCBieSB0aGUgREIgc3VibmV0IGdyb3VwLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB2cGNTdWJuZXRzPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgQ2ZuQ2x1c3RlclxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBjbHVzdGVyOiBDZm5DbHVzdGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgY2x1c3RlcidzIHBhcmFtZXRlciBncm91cFxuICAgKi9cbiAgcHJvdGVjdGVkIHBhcmFtZXRlckdyb3VwPzogSUNsdXN0ZXJQYXJhbWV0ZXJHcm91cDtcblxuICAvKipcbiAgICogVGhlIEFSTnMgb2YgdGhlIHJvbGVzIHRoYXQgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogKipOT1RFKiogUGxlYXNlIGRvIG5vdCBhY2Nlc3MgdGhpcyBkaXJlY3RseSwgdXNlIHRoZSBgYWRkSWFtUm9sZWAgbWV0aG9kIGluc3RlYWQuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHJvbGVzOiBpYW0uSVJvbGVbXTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2x1c3RlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMudnBjID0gcHJvcHMudnBjO1xuICAgIHRoaXMudnBjU3VibmV0cyA9IHByb3BzLnZwY1N1Ym5ldHMgPz8ge1xuICAgICAgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyxcbiAgICB9O1xuICAgIHRoaXMucGFyYW1ldGVyR3JvdXAgPSBwcm9wcy5wYXJhbWV0ZXJHcm91cDtcbiAgICB0aGlzLnJvbGVzID0gcHJvcHM/LnJvbGVzID8gWy4uLnByb3BzLnJvbGVzXSA6IFtdO1xuXG4gICAgY29uc3QgcmVtb3ZhbFBvbGljeSA9IHByb3BzLnJlbW92YWxQb2xpY3kgPz8gUmVtb3ZhbFBvbGljeS5SRVRBSU47XG5cbiAgICBjb25zdCBzdWJuZXRHcm91cCA9IHByb3BzLnN1Ym5ldEdyb3VwID8/IG5ldyBDbHVzdGVyU3VibmV0R3JvdXAodGhpcywgJ1N1Ym5ldHMnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYFN1Ym5ldHMgZm9yICR7aWR9IFJlZHNoaWZ0IGNsdXN0ZXJgLFxuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHRoaXMudnBjU3VibmV0cyxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHJlbW92YWxQb2xpY3ksXG4gICAgfSk7XG5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwcyA9IHByb3BzLnNlY3VyaXR5R3JvdXBzID8/IFtuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgJ1NlY3VyaXR5R3JvdXAnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1JlZHNoaWZ0IHNlY3VyaXR5IGdyb3VwJyxcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgfSldO1xuXG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cElkcyA9IHNlY3VyaXR5R3JvdXBzLm1hcChzZyA9PiBzZy5zZWN1cml0eUdyb3VwSWQpO1xuXG4gICAgbGV0IHNlY3JldDogRGF0YWJhc2VTZWNyZXQgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCFwcm9wcy5tYXN0ZXJVc2VyLm1hc3RlclBhc3N3b3JkKSB7XG4gICAgICBzZWNyZXQgPSBuZXcgRGF0YWJhc2VTZWNyZXQodGhpcywgJ1NlY3JldCcsIHtcbiAgICAgICAgdXNlcm5hbWU6IHByb3BzLm1hc3RlclVzZXIubWFzdGVyVXNlcm5hbWUsXG4gICAgICAgIGVuY3J5cHRpb25LZXk6IHByb3BzLm1hc3RlclVzZXIuZW5jcnlwdGlvbktleSxcbiAgICAgICAgZXhjbHVkZUNoYXJhY3RlcnM6IHByb3BzLm1hc3RlclVzZXIuZXhjbHVkZUNoYXJhY3RlcnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBjbHVzdGVyVHlwZSA9IHByb3BzLmNsdXN0ZXJUeXBlIHx8IENsdXN0ZXJUeXBlLk1VTFRJX05PREU7XG4gICAgY29uc3Qgbm9kZUNvdW50ID0gdGhpcy52YWxpZGF0ZU5vZGVDb3VudChjbHVzdGVyVHlwZSwgcHJvcHMubnVtYmVyT2ZOb2Rlcyk7XG5cbiAgICBpZiAocHJvcHMuZW5jcnlwdGVkID09PSBmYWxzZSAmJiBwcm9wcy5lbmNyeXB0aW9uS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YEVuY3J5cHRpb25LZXlXaXRob3V0RW5jcnlwdGlvbmAsICdDYW5ub3Qgc2V0IHByb3BlcnR5IGVuY3J5cHRpb25LZXkgd2l0aG91dCBlbmFibGluZyBlbmNyeXB0aW9uIScsIHRoaXMpO1xuICAgIH1cblxuICAgIHRoaXMuc2luZ2xlVXNlclJvdGF0aW9uQXBwbGljYXRpb24gPSBzZWNyZXRzbWFuYWdlci5TZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uLlJFRFNISUZUX1JPVEFUSU9OX1NJTkdMRV9VU0VSO1xuICAgIHRoaXMubXVsdGlVc2VyUm90YXRpb25BcHBsaWNhdGlvbiA9IHNlY3JldHNtYW5hZ2VyLlNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24uUkVEU0hJRlRfUk9UQVRJT05fTVVMVElfVVNFUjtcblxuICAgIGxldCBsb2dnaW5nUHJvcGVydGllcztcbiAgICBpZiAocHJvcHMubG9nZ2luZ1Byb3BlcnRpZXMpIHtcbiAgICAgIGxvZ2dpbmdQcm9wZXJ0aWVzID0ge1xuICAgICAgICBidWNrZXROYW1lOiBwcm9wcy5sb2dnaW5nUHJvcGVydGllcy5sb2dnaW5nQnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgIHMzS2V5UHJlZml4OiBwcm9wcy5sb2dnaW5nUHJvcGVydGllcy5sb2dnaW5nS2V5UHJlZml4LFxuICAgICAgfTtcbiAgICAgIHByb3BzLmxvZ2dpbmdQcm9wZXJ0aWVzLmxvZ2dpbmdCdWNrZXQuYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAnczM6R2V0QnVja2V0QWNsJyxcbiAgICAgICAgICAgICAgJ3MzOlB1dE9iamVjdCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgIHByb3BzLmxvZ2dpbmdQcm9wZXJ0aWVzLmxvZ2dpbmdCdWNrZXQuYXJuRm9yT2JqZWN0cygnKicpLFxuICAgICAgICAgICAgICBwcm9wcy5sb2dnaW5nUHJvcGVydGllcy5sb2dnaW5nQnVja2V0LmJ1Y2tldEFybixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBwcmluY2lwYWxzOiBbXG4gICAgICAgICAgICAgIG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgncmVkc2hpZnQuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlVHlwZSA9IHByb3BzLm5vZGVUeXBlIHx8IE5vZGVUeXBlLlJBM19MQVJHRTtcblxuICAgIGlmIChwcm9wcy5tdWx0aUF6KSB7XG4gICAgICBpZiAoIW5vZGVUeXBlLnN0YXJ0c1dpdGgoJ3JhMycpKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YE11bHRpQXpVbnN1cHBvcnRlZE5vZGVUeXBlYCwgYE11bHRpLUFaIGNsdXN0ZXIgaXMgb25seSBzdXBwb3J0ZWQgZm9yIFJBMyBub2RlIHR5cGVzLCBnb3Q6ICR7cHJvcHMubm9kZVR5cGV9YCwgdGhpcyk7XG4gICAgICB9XG4gICAgICBpZiAoY2x1c3RlclR5cGUgPT09IENsdXN0ZXJUeXBlLlNJTkdMRV9OT0RFKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YE11bHRpQXpVbnN1cHBvcnRlZENsdXN0ZXJUeXBlYCwgJ011bHRpLUFaIGNsdXN0ZXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgYGNsdXN0ZXJUeXBlYCBzaW5nbGUtbm9kZScsIHRoaXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9wcy5yZXNvdXJjZUFjdGlvbiA9PT0gUmVzb3VyY2VBY3Rpb24uRkFJTE9WRVJfUFJJTUFSWV9DT01QVVRFICYmICFwcm9wcy5tdWx0aUF6KSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBGYWlsb3ZlclJlcXVpcmVzTXVsdGlBemAsICdSZXNvdXJjZUFjdGlvbi5GQUlMT1ZFUl9QUklNQVJZX0NPTVBVVEUgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIG11bHRpLUFaIGNsdXN0ZXJzLicsIHRoaXMpO1xuICAgIH1cbiAgICBpZiAocHJvcHMuYXZhaWxhYmlsaXR5Wm9uZVJlbG9jYXRpb24gJiYgIW5vZGVUeXBlLnN0YXJ0c1dpdGgoJ3JhMycpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBBdmFpbGFiaWxpdHlab25lUmVsb2NhdGlvblVuc3VwcG9ydGVkTm9kZVR5cGVgLCBgQXZhaWxhYmlsaXR5IHpvbmUgcmVsb2NhdGlvbiBpcyBzdXBwb3J0ZWQgZm9yIG9ubHkgUkEzIG5vZGUgdHlwZXMsIGdvdDogJHtwcm9wcy5ub2RlVHlwZX1gLCB0aGlzKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsdXN0ZXIgPSBuZXcgQ2ZuQ2x1c3Rlcih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICAvLyBCYXNpY1xuICAgICAgYWxsb3dWZXJzaW9uVXBncmFkZTogdHJ1ZSxcbiAgICAgIG1haW50ZW5hbmNlVHJhY2tOYW1lOiBwcm9wcy5tYWludGVuYW5jZVRyYWNrTmFtZSxcbiAgICAgIGF1dG9tYXRlZFNuYXBzaG90UmV0ZW50aW9uUGVyaW9kOiAxLFxuICAgICAgY2x1c3RlclR5cGUsXG4gICAgICBjbHVzdGVySWRlbnRpZmllcjogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgICBjbHVzdGVyU3VibmV0R3JvdXBOYW1lOiBzdWJuZXRHcm91cC5jbHVzdGVyU3VibmV0R3JvdXBOYW1lLFxuICAgICAgdnBjU2VjdXJpdHlHcm91cElkczogc2VjdXJpdHlHcm91cElkcyxcbiAgICAgIHBvcnQ6IHByb3BzLnBvcnQsXG4gICAgICBjbHVzdGVyUGFyYW1ldGVyR3JvdXBOYW1lOiBwcm9wcy5wYXJhbWV0ZXJHcm91cCAmJiBwcm9wcy5wYXJhbWV0ZXJHcm91cC5jbHVzdGVyUGFyYW1ldGVyR3JvdXBOYW1lLFxuICAgICAgLy8gQWRtaW4gKHVuc2FmZVVud3JhcCBoZXJlIGlzIHNhZmUpXG4gICAgICBtYXN0ZXJVc2VybmFtZTogc2VjcmV0Py5zZWNyZXRWYWx1ZUZyb21Kc29uKCd1c2VybmFtZScpLnVuc2FmZVVud3JhcCgpID8/IHByb3BzLm1hc3RlclVzZXIubWFzdGVyVXNlcm5hbWUsXG4gICAgICBtYXN0ZXJVc2VyUGFzc3dvcmQ6IHNlY3JldD8uc2VjcmV0VmFsdWVGcm9tSnNvbigncGFzc3dvcmQnKS51bnNhZmVVbndyYXAoKVxuICAgICAgICA/PyBwcm9wcy5tYXN0ZXJVc2VyLm1hc3RlclBhc3N3b3JkPy51bnNhZmVVbndyYXAoKVxuICAgICAgICA/PyAnZGVmYXVsdCcsXG4gICAgICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzogcHJvcHMucHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3csXG4gICAgICBub2RlVHlwZSxcbiAgICAgIG51bWJlck9mTm9kZXM6IG5vZGVDb3VudCxcbiAgICAgIGxvZ2dpbmdQcm9wZXJ0aWVzLFxuICAgICAgaWFtUm9sZXM6IExhenkubGlzdCh7IHByb2R1Y2U6ICgpID0+IHRoaXMucm9sZXMubWFwKHJvbGUgPT4gcm9sZS5yb2xlQXJuKSB9LCB7IG9taXRFbXB0eTogdHJ1ZSB9KSxcbiAgICAgIGRiTmFtZTogcHJvcHMuZGVmYXVsdERhdGFiYXNlTmFtZSB8fCAnZGVmYXVsdF9kYicsXG4gICAgICBwdWJsaWNseUFjY2Vzc2libGU6IHByb3BzLnB1YmxpY2x5QWNjZXNzaWJsZSB8fCBmYWxzZSxcbiAgICAgIC8vIEVuY3J5cHRpb25cbiAgICAgIGttc0tleUlkOiBwcm9wcy5lbmNyeXB0aW9uS2V5Py5rZXlSZWYua2V5SWQsXG4gICAgICBlbmNyeXB0ZWQ6IHByb3BzLmVuY3J5cHRlZCA/PyB0cnVlLFxuICAgICAgY2xhc3NpYzogcHJvcHMuY2xhc3NpY1Jlc2l6aW5nLFxuICAgICAgZWxhc3RpY0lwOiBwcm9wcy5lbGFzdGljSXAsXG4gICAgICBlbmhhbmNlZFZwY1JvdXRpbmc6IHByb3BzLmVuaGFuY2VkVnBjUm91dGluZyxcbiAgICAgIG11bHRpQXo6IHByb3BzLm11bHRpQXosXG4gICAgICByZXNvdXJjZUFjdGlvbjogcHJvcHMucmVzb3VyY2VBY3Rpb24sXG4gICAgICBhdmFpbGFiaWxpdHlab25lUmVsb2NhdGlvbjogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZVJlbG9jYXRpb24sXG4gICAgfSk7XG5cbiAgICB0aGlzLmNsdXN0ZXIuYXBwbHlSZW1vdmFsUG9saWN5KHJlbW92YWxQb2xpY3ksIHtcbiAgICAgIGFwcGx5VG9VcGRhdGVSZXBsYWNlUG9saWN5OiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jbHVzdGVyTmFtZSA9IHRoaXMuY2x1c3Rlci5yZWY7XG5cbiAgICAvLyBjcmVhdGUgYSBudW1iZXIgdG9rZW4gdGhhdCByZXByZXNlbnRzIHRoZSBwb3J0IG9mIHRoZSBjbHVzdGVyXG4gICAgY29uc3QgcG9ydEF0dHJpYnV0ZSA9IFRva2VuLmFzTnVtYmVyKHRoaXMuY2x1c3Rlci5hdHRyRW5kcG9pbnRQb3J0KTtcbiAgICB0aGlzLmNsdXN0ZXJFbmRwb2ludCA9IG5ldyBFbmRwb2ludCh0aGlzLmNsdXN0ZXIuYXR0ckVuZHBvaW50QWRkcmVzcywgcG9ydEF0dHJpYnV0ZSk7XG5cbiAgICBpZiAoc2VjcmV0KSB7XG4gICAgICB0aGlzLnNlY3JldCA9IHNlY3JldC5hdHRhY2godGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFBvcnQgPSBlYzIuUG9ydC50Y3AodGhpcy5jbHVzdGVyRW5kcG9pbnQucG9ydCk7XG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IG5ldyBlYzIuQ29ubmVjdGlvbnMoeyBzZWN1cml0eUdyb3VwcywgZGVmYXVsdFBvcnQgfSk7XG4gICAgaWYgKHByb3BzLnJlYm9vdEZvclBhcmFtZXRlckNoYW5nZXMpIHtcbiAgICAgIHRoaXMuZW5hYmxlUmVib290Rm9yUGFyYW1ldGVyQ2hhbmdlcygpO1xuICAgIH1cbiAgICAvLyBBZGQgZGVmYXVsdCByb2xlIGlmIHNwZWNpZmllZCBhbmQgYWxzbyBhdmFpbGFibGUgaW4gdGhlIHJvbGVzIGxpc3RcbiAgICBpZiAocHJvcHMuZGVmYXVsdFJvbGUpIHtcbiAgICAgIGlmIChwcm9wcy5yb2xlcz8uc29tZSh4ID0+IHggPT09IHByb3BzLmRlZmF1bHRSb2xlKSkge1xuICAgICAgICB0aGlzLmFkZERlZmF1bHRJYW1Sb2xlKHByb3BzLmRlZmF1bHRSb2xlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YERlZmF1bHRSb2xlTm90SW5Sb2xlc0xpc3RgLCAnRGVmYXVsdCByb2xlIG11c3QgYmUgaW5jbHVkZWQgaW4gcm9sZSBsaXN0LicsIHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBzaW5nbGUgdXNlciByb3RhdGlvbiBvZiB0aGUgbWFzdGVyIHBhc3N3b3JkIHRvIHRoaXMgY2x1c3Rlci5cbiAgICpcbiAgICogQHBhcmFtIFthdXRvbWF0aWNhbGx5QWZ0ZXI9RHVyYXRpb24uZGF5cygzMCldIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgdGhlIHByZXZpb3VzIHJvdGF0aW9uXG4gICAqIGJlZm9yZSBTZWNyZXRzIE1hbmFnZXIgdHJpZ2dlcnMgdGhlIG5leHQgYXV0b21hdGljIHJvdGF0aW9uLlxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZFJvdGF0aW9uU2luZ2xlVXNlcihhdXRvbWF0aWNhbGx5QWZ0ZXI/OiBEdXJhdGlvbik6IHNlY3JldHNtYW5hZ2VyLlNlY3JldFJvdGF0aW9uIHtcbiAgICBpZiAoIXRoaXMuc2VjcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBOb1NlY3JldEZvclJvdGF0aW9uYCwgJ0Nhbm5vdCBhZGQgc2luZ2xlIHVzZXIgcm90YXRpb24gZm9yIGEgY2x1c3RlciB3aXRob3V0IHNlY3JldC4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZCA9ICdSb3RhdGlvblNpbmdsZVVzZXInO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5ub2RlLnRyeUZpbmRDaGlsZChpZCk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBTaW5nbGVVc2VyUm90YXRpb25BbHJlYWR5RXhpc3RzYCwgJ0Egc2luZ2xlIHVzZXIgcm90YXRpb24gd2FzIGFscmVhZHkgYWRkZWQgdG8gdGhpcyBjbHVzdGVyLicsIHRoaXMpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgc2VjcmV0c21hbmFnZXIuU2VjcmV0Um90YXRpb24odGhpcywgaWQsIHtcbiAgICAgIHNlY3JldDogdGhpcy5zZWNyZXQsXG4gICAgICBhdXRvbWF0aWNhbGx5QWZ0ZXIsXG4gICAgICBhcHBsaWNhdGlvbjogdGhpcy5zaW5nbGVVc2VyUm90YXRpb25BcHBsaWNhdGlvbixcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiB0aGlzLnZwY1N1Ym5ldHMsXG4gICAgICB0YXJnZXQ6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGUgbXVsdGkgdXNlciByb3RhdGlvbiB0byB0aGlzIGNsdXN0ZXIuXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkUm90YXRpb25NdWx0aVVzZXIoaWQ6IHN0cmluZywgb3B0aW9uczogUm90YXRpb25NdWx0aVVzZXJPcHRpb25zKTogc2VjcmV0c21hbmFnZXIuU2VjcmV0Um90YXRpb24ge1xuICAgIGlmICghdGhpcy5zZWNyZXQpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YE5vU2VjcmV0Rm9yTXVsdGlVc2VyUm90YXRpb25gLCAnQ2Fubm90IGFkZCBtdWx0aSB1c2VyIHJvdGF0aW9uIGZvciBhIGNsdXN0ZXIgd2l0aG91dCBzZWNyZXQuJywgdGhpcyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgc2VjcmV0c21hbmFnZXIuU2VjcmV0Um90YXRpb24odGhpcywgaWQsIHtcbiAgICAgIHNlY3JldDogb3B0aW9ucy5zZWNyZXQsXG4gICAgICBtYXN0ZXJTZWNyZXQ6IHRoaXMuc2VjcmV0LFxuICAgICAgYXV0b21hdGljYWxseUFmdGVyOiBvcHRpb25zLmF1dG9tYXRpY2FsbHlBZnRlcixcbiAgICAgIGFwcGxpY2F0aW9uOiB0aGlzLm11bHRpVXNlclJvdGF0aW9uQXBwbGljYXRpb24sXG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgdnBjU3VibmV0czogdGhpcy52cGNTdWJuZXRzLFxuICAgICAgdGFyZ2V0OiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU5vZGVDb3VudChjbHVzdGVyVHlwZTogQ2x1c3RlclR5cGUsIG51bWJlck9mTm9kZXM/OiBudW1iZXIpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIGlmIChjbHVzdGVyVHlwZSA9PT0gQ2x1c3RlclR5cGUuU0lOR0xFX05PREUpIHtcbiAgICAgIC8vIFRoaXMgcHJvcGVydHkgbXVzdCBub3QgYmUgc2V0IGZvciBzaW5nbGUtbm9kZSBjbHVzdGVyczsgYmUgZ2VuZXJvdXMgYW5kIHRyZWF0IGEgdmFsdWUgb2YgMSBub2RlIGFzIHVuZGVmaW5lZC5cbiAgICAgIGlmIChudW1iZXJPZk5vZGVzICE9PSB1bmRlZmluZWQgJiYgbnVtYmVyT2ZOb2RlcyAhPT0gMSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBJbnZhbGlkTm9kZUNvdW50Rm9yU2luZ2xlTm9kZWAsICdOdW1iZXIgb2Ygbm9kZXMgbXVzdCBiZSBub3QgYmUgc3VwcGxpZWQgb3IgYmUgMSBmb3IgY2x1c3RlciB0eXBlIHNpbmdsZS1ub2RlJywgdGhpcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKG51bWJlck9mTm9kZXMpKSB7XG4gICAgICAgIHJldHVybiBudW1iZXJPZk5vZGVzO1xuICAgICAgfVxuICAgICAgY29uc3Qgbm9kZUNvdW50ID0gbnVtYmVyT2ZOb2RlcyA/PyAyO1xuICAgICAgaWYgKG5vZGVDb3VudCA8IDIgfHwgbm9kZUNvdW50ID4gMTAwKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YEludmFsaWROb2RlQ291bnRGb3JNdWx0aU5vZGVgLCAnTnVtYmVyIG9mIG5vZGVzIGZvciBjbHVzdGVyIHR5cGUgbXVsdGktbm9kZSBtdXN0IGJlIGF0IGxlYXN0IDIgYW5kIG5vIG1vcmUgdGhhbiAxMDAnLCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBub2RlQ291bnQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBwYXJhbWV0ZXIgdG8gdGhlIENsdXN0ZXJzJyBwYXJhbWV0ZXIgZ3JvdXBcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgdGhlIHBhcmFtZXRlciBuYW1lXG4gICAqIEBwYXJhbSB2YWx1ZSB0aGUgcGFyYW1ldGVyIG5hbWVcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRUb1BhcmFtZXRlckdyb3VwKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wYXJhbWV0ZXJHcm91cCkge1xuICAgICAgY29uc3QgcGFyYW06IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgICBwYXJhbVtuYW1lXSA9IHZhbHVlO1xuICAgICAgdGhpcy5wYXJhbWV0ZXJHcm91cCA9IG5ldyBDbHVzdGVyUGFyYW1ldGVyR3JvdXAodGhpcywgJ1BhcmFtZXRlckdyb3VwJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5jbHVzdGVyLmNsdXN0ZXJJZGVudGlmaWVyID8gYFBhcmFtZXRlciBHcm91cCBmb3IgdGhlICR7dGhpcy5jbHVzdGVyLmNsdXN0ZXJJZGVudGlmaWVyfSBSZWRzaGlmdCBjbHVzdGVyYCA6ICdDbHVzdGVyIHBhcmFtZXRlciBncm91cCBmb3IgZmFtaWx5IHJlZHNoaWZ0LTEuMCcsXG4gICAgICAgIHBhcmFtZXRlcnM6IHBhcmFtLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmNsdXN0ZXIuY2x1c3RlclBhcmFtZXRlckdyb3VwTmFtZSA9IHRoaXMucGFyYW1ldGVyR3JvdXAuY2x1c3RlclBhcmFtZXRlckdyb3VwTmFtZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucGFyYW1ldGVyR3JvdXAgaW5zdGFuY2VvZiBDbHVzdGVyUGFyYW1ldGVyR3JvdXApIHtcbiAgICAgIHRoaXMucGFyYW1ldGVyR3JvdXAuYWRkUGFyYW1ldGVyKG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihsaXRgQ2Fubm90QWRkUGFyYW1ldGVyVG9JbXBvcnRlZEdyb3VwYCwgJ0Nhbm5vdCBhZGQgYSBwYXJhbWV0ZXIgdG8gYW4gaW1wb3J0ZWQgcGFyYW1ldGVyIGdyb3VwLicsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGF1dG9tYXRpYyBjbHVzdGVyIHJlYm9vdGluZyB3aGVuIGNoYW5nZXMgdG8gdGhlIGNsdXN0ZXIncyBwYXJhbWV0ZXIgZ3JvdXAgcmVxdWlyZSBhIHJlc3RhcnQgdG8gYXBwbHkuXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZW5hYmxlUmVib290Rm9yUGFyYW1ldGVyQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ub2RlLnRyeUZpbmRDaGlsZCgnUmVkc2hpZnRDbHVzdGVyUmVib290ZXJDdXN0b21SZXNvdXJjZScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlYm9vdEZ1bmN0aW9uID0gbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCAnUmVkc2hpZnRDbHVzdGVyUmVib290ZXJGdW5jdGlvbicsIHtcbiAgICAgIHV1aWQ6ICc1MTFlMjA3Zi0xM2RmLTRiOGItYjYzMi1jMzJiMzBiNjVhYzInLFxuICAgICAgcnVudGltZTogbGFtYmRhLmRldGVybWluZUxhdGVzdE5vZGVSdW50aW1lKHRoaXMpLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdjdXN0b20tcmVzb3VyY2UtaGFuZGxlcnMnLCAnZGlzdCcsICdhd3MtcmVkc2hpZnQtYWxwaGEnLCAnY2x1c3Rlci1wYXJhbWV0ZXItY2hhbmdlLXJlYm9vdC1oYW5kbGVyJykpLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg5MDApLFxuICAgIH0pO1xuICAgIHJlYm9vdEZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ3JlZHNoaWZ0OkRlc2NyaWJlQ2x1c3RlcnMnXSxcbiAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgfSkpO1xuICAgIHJlYm9vdEZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ3JlZHNoaWZ0OlJlYm9vdENsdXN0ZXInXSxcbiAgICAgIHJlc291cmNlczogW1xuICAgICAgICBTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgICAgIHNlcnZpY2U6ICdyZWRzaGlmdCcsXG4gICAgICAgICAgcmVzb3VyY2U6ICdjbHVzdGVyJyxcbiAgICAgICAgICByZXNvdXJjZU5hbWU6IHRoaXMuY2x1c3Rlck5hbWUsXG4gICAgICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pKTtcbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBQcm92aWRlcih0aGlzLCAnUmVzb3VyY2VQcm92aWRlcicsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiByZWJvb3RGdW5jdGlvbixcbiAgICB9KTtcbiAgICBjb25zdCBjdXN0b21SZXNvdXJjZSA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnUmVkc2hpZnRDbHVzdGVyUmVib290ZXJDdXN0b21SZXNvdXJjZScsIHtcbiAgICAgIHJlc291cmNlVHlwZTogJ0N1c3RvbTo6UmVkc2hpZnRDbHVzdGVyUmVib290ZXInLFxuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIENsdXN0ZXJJZDogdGhpcy5jbHVzdGVyTmFtZSxcbiAgICAgICAgUGFyYW1ldGVyR3JvdXBOYW1lOiBMYXp5LnN0cmluZyh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnBhcmFtZXRlckdyb3VwKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YE5vUGFyYW1ldGVyR3JvdXBGb3JSZWJvb3RgLCAnQ2Fubm90IGVuYWJsZSByZWJvb3QgZm9yIHBhcmFtZXRlciBjaGFuZ2VzIHdoZW4gdGhlcmUgaXMgbm8gYXNzb2NpYXRlZCBDbHVzdGVyUGFyYW1ldGVyR3JvdXAuJywgdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJHcm91cC5jbHVzdGVyUGFyYW1ldGVyR3JvdXBOYW1lO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBQYXJhbWV0ZXJzU3RyaW5nOiBMYXp5LnN0cmluZyh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEodGhpcy5wYXJhbWV0ZXJHcm91cCBpbnN0YW5jZW9mIENsdXN0ZXJQYXJhbWV0ZXJHcm91cCkpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihsaXRgSW1wb3J0ZWRQYXJhbWV0ZXJHcm91cEZvclJlYm9vdGAsICdDYW5ub3QgZW5hYmxlIHJlYm9vdCBmb3IgcGFyYW1ldGVyIGNoYW5nZXMgd2hlbiB1c2luZyBhbiBpbXBvcnRlZCBwYXJhbWV0ZXIgZ3JvdXAuJywgdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5wYXJhbWV0ZXJHcm91cC5wYXJhbWV0ZXJzKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgTGF6eS5hbnkoe1xuICAgICAgcHJvZHVjZTogKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucGFyYW1ldGVyR3JvdXApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBOb1BhcmFtZXRlckdyb3VwRm9yUmVib290RGVwZW5kZW5jeWAsICdDYW5ub3QgZW5hYmxlIHJlYm9vdCBmb3IgcGFyYW1ldGVyIGNoYW5nZXMgd2hlbiB0aGVyZSBpcyBubyBhc3NvY2lhdGVkIENsdXN0ZXJQYXJhbWV0ZXJHcm91cC4nLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjdXN0b21SZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3kodGhpcywgdGhpcy5wYXJhbWV0ZXJHcm91cCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgZGVmYXVsdCBJQU0gcm9sZSB0byBjbHVzdGVyLiBUaGUgZGVmYXVsdCBJQU0gcm9sZSBtdXN0IGJlIGFscmVhZHkgYXNzb2NpYXRlZCB0byB0aGUgY2x1c3RlciB0byBiZSBhZGRlZCBhcyB0aGUgZGVmYXVsdCByb2xlLlxuICAgKlxuICAgKiBAcGFyYW0gZGVmYXVsdElhbVJvbGUgdGhlIElBTSByb2xlIHRvIGJlIHNldCBhcyB0aGUgZGVmYXVsdCByb2xlXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkRGVmYXVsdElhbVJvbGUoZGVmYXVsdElhbVJvbGU6IGlhbS5JUm9sZSk6IHZvaWQge1xuICAgIC8vIEdldCBsaXN0IG9mIElBTSByb2xlcyBhdHRhY2hlZCB0byBjbHVzdGVyXG4gICAgY29uc3QgY2x1c3RlclJvbGVMaXN0ID0gdGhpcy5yb2xlcyA/PyBbXTtcblxuICAgIC8vIENoZWNrIHRvIHNlZSBpZiBkZWZhdWx0IHJvbGUgaXMgaW5jbHVkZWQgaW4gbGlzdCBvZiBjbHVzdGVyIElBTSByb2xlc1xuICAgIHZhciByb2xlQWxyZWFkeU9uQ2x1c3RlciA9IGZhbHNlO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2x1c3RlclJvbGVMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoY2x1c3RlclJvbGVMaXN0W2ldID09PSBkZWZhdWx0SWFtUm9sZSkge1xuICAgICAgICByb2xlQWxyZWFkeU9uQ2x1c3RlciA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXJvbGVBbHJlYWR5T25DbHVzdGVyKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBEZWZhdWx0Um9sZU5vdEFzc29jaWF0ZWRgLCAnRGVmYXVsdCByb2xlIG11c3QgYmUgYXNzb2NpYXRlZCB0byB0aGUgUmVkc2hpZnQgY2x1c3RlciB0byBiZSBzZXQgYXMgdGhlIGRlZmF1bHQgcm9sZS4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICAvLyBPbiBVUERBVEUgb3IgQ1JFQVRFIGRlZmluZSB0aGUgZGVmYXVsdCBJQU0gcm9sZS4gT24gREVMRVRFLCByZW1vdmUgdGhlIGRlZmF1bHQgSUFNIHJvbGVcbiAgICBjb25zdCBkZWZhdWx0Um9sZUN1c3RvbVJlc291cmNlID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsICdkZWZhdWx0LXJvbGUnLCB7XG4gICAgICBvblVwZGF0ZToge1xuICAgICAgICBzZXJ2aWNlOiAnUmVkc2hpZnQnLFxuICAgICAgICBhY3Rpb246ICdtb2RpZnlDbHVzdGVySWFtUm9sZXMnLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgQ2x1c3RlcklkZW50aWZpZXI6IHRoaXMuY2x1c3Rlci5yZWYsXG4gICAgICAgICAgRGVmYXVsdElhbVJvbGVBcm46IGRlZmF1bHRJYW1Sb2xlLnJvbGVBcm4sXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgIGAke2RlZmF1bHRJYW1Sb2xlLnJvbGVBcm59LSR7dGhpcy5jbHVzdGVyLnJlZn1gLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgIHNlcnZpY2U6ICdSZWRzaGlmdCcsXG4gICAgICAgIGFjdGlvbjogJ21vZGlmeUNsdXN0ZXJJYW1Sb2xlcycsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBDbHVzdGVySWRlbnRpZmllcjogdGhpcy5jbHVzdGVyLnJlZixcbiAgICAgICAgICBEZWZhdWx0SWFtUm9sZUFybjogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgIGAke2RlZmF1bHRJYW1Sb2xlLnJvbGVBcm59LSR7dGhpcy5jbHVzdGVyLnJlZn1gLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHBvbGljeTogQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVNka0NhbGxzKHtcbiAgICAgICAgcmVzb3VyY2VzOiBBd3NDdXN0b21SZXNvdXJjZVBvbGljeS5BTllfUkVTT1VSQ0UsXG4gICAgICB9KSxcbiAgICAgIGluc3RhbGxMYXRlc3RBd3NTZGs6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgZGVmYXVsdElhbVJvbGUuZ3JhbnRQYXNzUm9sZShkZWZhdWx0Um9sZUN1c3RvbVJlc291cmNlLmdyYW50UHJpbmNpcGFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcm9sZSB0byB0aGUgY2x1c3RlclxuICAgKlxuICAgKiBAcGFyYW0gcm9sZSB0aGUgcm9sZSB0byBhZGRcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRJYW1Sb2xlKHJvbGU6IGlhbS5JUm9sZSk6IHZvaWQge1xuICAgIGNvbnN0IGNsdXN0ZXJSb2xlTGlzdCA9IHRoaXMucm9sZXM7XG5cbiAgICBpZiAoY2x1c3RlclJvbGVMaXN0LmluY2x1ZGVzKHJvbGUpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBSb2xlQWxyZWFkeUF0dGFjaGVkYCwgYFJvbGUgJyR7cm9sZS5yb2xlQXJufScgaXMgYWxyZWFkeSBhdHRhY2hlZCB0byB0aGUgY2x1c3RlcmAsIHRoaXMpO1xuICAgIH1cblxuICAgIGNsdXN0ZXJSb2xlTGlzdC5wdXNoKHJvbGUpO1xuICB9XG59XG4iXX0=
|
|
622
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFFM0MsaURBQWlEO0FBQ2pELDJEQUFzRDtBQUV0RCxpRUFBaUU7QUFFakUsMkNBQXFJO0FBRXJJLDRFQUFtRjtBQUNuRiw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBQzFFLG1FQUF3SDtBQUV4SCx1REFBbUQ7QUFDbkQseUNBQXNDO0FBRXRDLHVEQUEwRDtBQUUxRCxpREFBb0Q7QUFFcEQ7OztHQUdHO0FBQ0gsSUFBWSxRQWtEWDtBQWxERCxXQUFZLFFBQVE7SUFDbEI7O09BRUc7SUFDSCxxQ0FBeUIsQ0FBQTtJQUV6Qjs7T0FFRztJQUNILHVDQUEyQixDQUFBO0lBRTNCOztPQUVHO0lBQ0gsbUNBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCx1Q0FBMkIsQ0FBQTtJQUUzQjs7T0FFRztJQUNILG1DQUF1QixDQUFBO0lBRXZCOztPQUVHO0lBQ0gsdUNBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCxtQ0FBdUIsQ0FBQTtJQUV2Qjs7T0FFRztJQUNILHFDQUF5QixDQUFBO0lBRXpCOztPQUVHO0lBQ0gsdUNBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCx5Q0FBNkIsQ0FBQTtBQUMvQixDQUFDLEVBbERXLFFBQVEsd0JBQVIsUUFBUSxRQWtEbkI7QUFFRDs7O0dBR0c7QUFDSCxJQUFZLFdBU1g7QUFURCxXQUFZLFdBQVc7SUFDckI7O09BRUc7SUFDSCwwQ0FBMkIsQ0FBQTtJQUMzQjs7T0FFRztJQUNILHdDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFUVyxXQUFXLDJCQUFYLFdBQVcsUUFTdEI7QUFFRDs7R0FFRztBQUNILElBQVksY0FpQlg7QUFqQkQsV0FBWSxjQUFjO0lBQ3hCOztPQUVHO0lB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SCxDQUFDO1lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkI7O1lBbmJVLHVEQUFPOzs7OztBQUFQLDBCQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB0eXBlICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ2ZuQ2x1c3RlciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1yZWRzaGlmdCc7XG5pbXBvcnQgdHlwZSAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0IHR5cGUgeyBJUmVzb3VyY2UsIFNlY3JldFZhbHVlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBBcm5Gb3JtYXQsIEN1c3RvbVJlc291cmNlLCBEdXJhdGlvbiwgTGF6eSwgUmVtb3ZhbFBvbGljeSwgUmVzb3VyY2UsIFN0YWNrLCBUb2tlbiwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IElBcnJheUJveCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgQm94LCBsaXQsIG5vQm94U3RhY2tUcmFjZXMgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSwgQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3ksIFBoeXNpY2FsUmVzb3VyY2VJZCwgUHJvdmlkZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBEYXRhYmFzZVNlY3JldCB9IGZyb20gJy4vZGF0YWJhc2Utc2VjcmV0JztcbmltcG9ydCB7IEVuZHBvaW50IH0gZnJvbSAnLi9lbmRwb2ludCc7XG5pbXBvcnQgdHlwZSB7IElDbHVzdGVyUGFyYW1ldGVyR3JvdXAgfSBmcm9tICcuL3BhcmFtZXRlci1ncm91cCc7XG5pbXBvcnQgeyBDbHVzdGVyUGFyYW1ldGVyR3JvdXAgfSBmcm9tICcuL3BhcmFtZXRlci1ncm91cCc7XG5pbXBvcnQgdHlwZSB7IElDbHVzdGVyU3VibmV0R3JvdXAgfSBmcm9tICcuL3N1Ym5ldC1ncm91cCc7XG5pbXBvcnQgeyBDbHVzdGVyU3VibmV0R3JvdXAgfSBmcm9tICcuL3N1Ym5ldC1ncm91cCc7XG5cbi8qKlxuICogUG9zc2libGUgTm9kZSBUeXBlcyB0byB1c2UgaW4gdGhlIGNsdXN0ZXJcbiAqIHVzZWQgZm9yIGRlZmluaW5nIGBDbHVzdGVyUHJvcHMubm9kZVR5cGVgLlxuICovXG5leHBvcnQgZW51bSBOb2RlVHlwZSB7XG4gIC8qKlxuICAgKiBkczIueGxhcmdlXG4gICAqL1xuICBEUzJfWExBUkdFID0gJ2RzMi54bGFyZ2UnLFxuXG4gIC8qKlxuICAgKiBkczIuOHhsYXJnZVxuICAgKi9cbiAgRFMyXzhYTEFSR0UgPSAnZHMyLjh4bGFyZ2UnLFxuXG4gIC8qKlxuICAgKiBkYzEubGFyZ2VcbiAgICovXG4gIERDMV9MQVJHRSA9ICdkYzEubGFyZ2UnLFxuXG4gIC8qKlxuICAgKiBkYzEuOHhsYXJnZVxuICAgKi9cbiAgREMxXzhYTEFSR0UgPSAnZGMxLjh4bGFyZ2UnLFxuXG4gIC8qKlxuICAgKiBkYzIubGFyZ2VcbiAgICovXG4gIERDMl9MQVJHRSA9ICdkYzIubGFyZ2UnLFxuXG4gIC8qKlxuICAgKiBkYzIuOHhsYXJnZVxuICAgKi9cbiAgREMyXzhYTEFSR0UgPSAnZGMyLjh4bGFyZ2UnLFxuXG4gIC8qKlxuICAgKiByYTMubGFyZ2VcbiAgICovXG4gIFJBM19MQVJHRSA9ICdyYTMubGFyZ2UnLFxuXG4gIC8qKlxuICAgKiByYTMueGxwbHVzXG4gICAqL1xuICBSQTNfWExQTFVTID0gJ3JhMy54bHBsdXMnLFxuXG4gIC8qKlxuICAgKiByYTMuNHhsYXJnZVxuICAgKi9cbiAgUkEzXzRYTEFSR0UgPSAncmEzLjR4bGFyZ2UnLFxuXG4gIC8qKlxuICAgKiByYTMuMTZ4bGFyZ2VcbiAgICovXG4gIFJBM18xNlhMQVJHRSA9ICdyYTMuMTZ4bGFyZ2UnLFxufVxuXG4vKipcbiAqIFdoYXQgY2x1c3RlciB0eXBlIHRvIHVzZS5cbiAqIFVzZWQgYnkgYENsdXN0ZXJQcm9wcy5jbHVzdGVyVHlwZWBcbiAqL1xuZXhwb3J0IGVudW0gQ2x1c3RlclR5cGUge1xuICAvKipcbiAgICogc2luZ2xlLW5vZGUgY2x1c3RlciwgdGhlIGBDbHVzdGVyUHJvcHMubnVtYmVyT2ZOb2Rlc2AgcGFyYW1ldGVyIGlzIG5vdCByZXF1aXJlZFxuICAgKi9cbiAgU0lOR0xFX05PREUgPSAnc2luZ2xlLW5vZGUnLFxuICAvKipcbiAgICogbXVsdGktbm9kZSBjbHVzdGVyLCBzZXQgdGhlIGFtb3VudCBvZiBub2RlcyB1c2luZyBgQ2x1c3RlclByb3BzLm51bWJlck9mTm9kZXNgIHBhcmFtZXRlclxuICAgKi9cbiAgTVVMVElfTk9ERSA9ICdtdWx0aS1ub2RlJyxcbn1cblxuLyoqXG4gKiBUaGUgQW1hem9uIFJlZHNoaWZ0IG9wZXJhdGlvblxuICovXG5leHBvcnQgZW51bSBSZXNvdXJjZUFjdGlvbiB7XG4gIC8qKlxuICAgKiBQYXVzZSB0aGUgY2x1c3RlclxuICAgKi9cbiAgUEFVU0VfQ0xVU1RFUiA9ICdwYXVzZS1jbHVzdGVyJyxcblxuICAvKipcbiAgICogUmVzdW1lIHRoZSBjbHVzdGVyXG4gICAqL1xuICBSRVNVTUVfQ0xVU1RFUiA9ICdyZXN1bWUtY2x1c3RlcicsXG5cbiAgLyoqXG4gICAqIEZhaWxpbmcgb3ZlciB0byB0aGUgb3RoZXIgYXZhaWxhYmlsaXR5IHpvbmVcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L21nbXQvdGVzdC1jbHVzdGVyLW11bHRpLWF6Lmh0bWxcbiAgICovXG4gIEZBSUxPVkVSX1BSSU1BUllfQ09NUFVURSA9ICdmYWlsb3Zlci1wcmltYXJ5LWNvbXB1dGUnLFxufVxuXG4vKipcbiAqIFVzZXJuYW1lIGFuZCBwYXNzd29yZCBjb21iaW5hdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luIHtcbiAgLyoqXG4gICAqIFVzZXJuYW1lXG4gICAqL1xuICByZWFkb25seSBtYXN0ZXJVc2VybmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXNzd29yZFxuICAgKlxuICAgKiBEbyBub3QgcHV0IHBhc3N3b3JkcyBpbiB5b3VyIENESyBjb2RlIGRpcmVjdGx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgU2VjcmV0cyBNYW5hZ2VyIGdlbmVyYXRlZCBwYXNzd29yZFxuICAgKi9cbiAgcmVhZG9ubHkgbWFzdGVyUGFzc3dvcmQ/OiBTZWNyZXRWYWx1ZTtcblxuICAvKipcbiAgICogS01TIGVuY3J5cHRpb24ga2V5IHRvIGVuY3J5cHQgdGhlIGdlbmVyYXRlZCBzZWNyZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBtYXN0ZXIga2V5XG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIENoYXJhY3RlcnMgdG8gbm90IGluY2x1ZGUgaW4gdGhlIGdlbmVyYXRlZCBwYXNzd29yZC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ1wiQC9cXFxcXFwgXFwnJ1xuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZUNoYXJhY3RlcnM/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTG9nZ2luZyBidWNrZXQgYW5kIFMzIHByZWZpeCBjb21iaW5hdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dpbmdQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIEJ1Y2tldCB0byBzZW5kIGxvZ3MgdG8uXG4gICAqIExvZ2dpbmcgaW5mb3JtYXRpb24gaW5jbHVkZXMgcXVlcmllcyBhbmQgY29ubmVjdGlvbiBhdHRlbXB0cywgZm9yIHRoZSBzcGVjaWZpZWQgQW1hem9uIFJlZHNoaWZ0IGNsdXN0ZXIuXG4gICAqL1xuICByZWFkb25seSBsb2dnaW5nQnVja2V0OiBzMy5JQnVja2V0O1xuXG4gIC8qKlxuICAgKiBQcmVmaXggdXNlZCBmb3IgbG9nZ2luZy5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmdLZXlQcmVmaXg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGFkZCB0aGUgbXVsdGkgdXNlciByb3RhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdGF0aW9uTXVsdGlVc2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IHRvIHJvdGF0ZS4gSXQgbXVzdCBiZSBhIEpTT04gc3RyaW5nIHdpdGggdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqIGBgYFxuICAgKiB7XG4gICAqICAgXCJlbmdpbmVcIjogPHJlcXVpcmVkOiBkYXRhYmFzZSBlbmdpbmU+LFxuICAgKiAgIFwiaG9zdFwiOiA8cmVxdWlyZWQ6IGluc3RhbmNlIGhvc3QgbmFtZT4sXG4gICAqICAgXCJ1c2VybmFtZVwiOiA8cmVxdWlyZWQ6IHVzZXJuYW1lPixcbiAgICogICBcInBhc3N3b3JkXCI6IDxyZXF1aXJlZDogcGFzc3dvcmQ+LFxuICAgKiAgIFwiZGJuYW1lXCI6IDxvcHRpb25hbDogZGF0YWJhc2UgbmFtZT4sXG4gICAqICAgXCJwb3J0XCI6IDxvcHRpb25hbDogaWYgbm90IHNwZWNpZmllZCwgZGVmYXVsdCBwb3J0IHdpbGwgYmUgdXNlZD4sXG4gICAqICAgXCJtYXN0ZXJhcm5cIjogPHJlcXVpcmVkOiB0aGUgYXJuIG9mIHRoZSBtYXN0ZXIgc2VjcmV0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgdXNlcnMvY2hhbmdlIHBhc3N3b3Jkcz5cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldDogc2VjcmV0c21hbmFnZXIuSVNlY3JldDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZGF5cyBhZnRlciB0aGUgcHJldmlvdXMgcm90YXRpb24gYmVmb3JlXG4gICAqIFNlY3JldHMgTWFuYWdlciB0cmlnZ2VycyB0aGUgbmV4dCBhdXRvbWF0aWMgcm90YXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IER1cmF0aW9uLmRheXMoMzApXG4gICAqL1xuICByZWFkb25seSBhdXRvbWF0aWNhbGx5QWZ0ZXI/OiBEdXJhdGlvbjtcbn1cblxuLyoqXG4gKiBUaGUgbWFpbnRlbmFuY2UgdHJhY2sgZm9yIHRoZSBjbHVzdGVyLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9tZ210L21hbmFnaW5nLWNsdXN0ZXItY29uc2lkZXJhdGlvbnMuaHRtbCNycy1tZ210LW1haW50ZW5hbmNlLXRyYWNrc1xuICovXG5leHBvcnQgZW51bSBNYWludGVuYW5jZVRyYWNrTmFtZSB7XG4gIC8qKlxuICAgKiBVcGRhdGVkIHRvIHRoZSBtb3N0IHJlY2VudGx5IGNlcnRpZmllZCBtYWludGVuYW5jZSByZWxlYXNlLlxuICAgKi9cbiAgQ1VSUkVOVCA9ICdjdXJyZW50JyxcblxuICAvKipcbiAgICogVXBkYXRlIHRvIHRoZSBwcmV2aW91c2x5IGNlcnRpZmllZCBtYWludGVuYW5jZSByZWxlYXNlLlxuICAgKi9cbiAgVFJBSUxJTkcgPSAndHJhaWxpbmcnLFxufVxuXG4vKipcbiAqIENyZWF0ZSBhIFJlZHNoaWZ0IENsdXN0ZXIgd2l0aCBhIGdpdmVuIG51bWJlciBvZiBub2Rlcy5cbiAqIEltcGxlbWVudGVkIGJ5IGBDbHVzdGVyYCB2aWEgYENsdXN0ZXJCYXNlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ2x1c3RlciBleHRlbmRzIElSZXNvdXJjZSwgZWMyLklDb25uZWN0YWJsZSwgc2VjcmV0c21hbmFnZXIuSVNlY3JldEF0dGFjaG1lbnRUYXJnZXQge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgY2x1c3RlclxuICAgKlxuICAgKiBAYXR0cmlidXRlIENsdXN0ZXJOYW1lXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZW5kcG9pbnQgdG8gdXNlIGZvciByZWFkL3dyaXRlIG9wZXJhdGlvbnNcbiAgICpcbiAgICogQGF0dHJpYnV0ZSBFbmRwb2ludEFkZHJlc3MsRW5kcG9pbnRQb3J0XG4gICAqL1xuICByZWFkb25seSBjbHVzdGVyRW5kcG9pbnQ6IEVuZHBvaW50O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdGhhdCBkZXNjcmliZSBhbiBleGlzdGluZyBjbHVzdGVyIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3RlckF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIHNlY3VyaXR5IGdyb3VwcyBvZiB0aGUgcmVkc2hpZnQgY2x1c3RlclxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBzZWN1cml0eSBncm91cHMgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgaW1wb3J0XG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IGVjMi5JU2VjdXJpdHlHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGUgY2x1c3RlclxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQ2x1c3RlciBlbmRwb2ludCBhZGRyZXNzXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVyRW5kcG9pbnRBZGRyZXNzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENsdXN0ZXIgZW5kcG9pbnQgcG9ydFxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlckVuZHBvaW50UG9ydDogbnVtYmVyO1xuXG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBuZXcgZGF0YWJhc2UgY2x1c3RlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBpZGVudGlmaWVyIGZvciB0aGUgY2x1c3RlclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEEgbmFtZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXJOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgdG8gcGFzcyB0byB0aGUgZGF0YWJhc2UgZW5naW5lXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvbWdtdC93b3JraW5nLXdpdGgtcGFyYW1ldGVyLWdyb3Vwcy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcGFyYW1ldGVyIGdyb3VwLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVyR3JvdXA/OiBJQ2x1c3RlclBhcmFtZXRlckdyb3VwO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgY29tcHV0ZSBub2RlcyBpbiB0aGUgY2x1c3Rlci4gT25seSBzcGVjaWZ5IHRoaXMgcHJvcGVydHkgZm9yIG11bHRpLW5vZGUgY2x1c3RlcnMuXG4gICAqXG4gICAqIFZhbHVlIG11c3QgYmUgYXQgbGVhc3QgMiBhbmQgbm8gbW9yZSB0aGFuIDEwMC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAyIGlmIGBjbHVzdGVyVHlwZWAgaXMgQ2x1c3RlclR5cGUuTVVMVElfTk9ERSwgdW5kZWZpbmVkIG90aGVyd2lzZVxuICAgKi9cbiAgcmVhZG9ubHkgbnVtYmVyT2ZOb2Rlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG5vZGUgdHlwZSB0byBiZSBwcm92aXNpb25lZCBmb3IgdGhlIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBOb2RlVHlwZS5SQTNfTEFSR0VgXG4gICAqL1xuICByZWFkb25seSBub2RlVHlwZT86IE5vZGVUeXBlO1xuXG4gIC8qKlxuICAgKiBTZXR0aW5ncyBmb3IgdGhlIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRoYXQgYXJlIGxhdW5jaGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IGBDbHVzdGVyVHlwZS5NVUxUSV9OT0RFYFxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlclR5cGU/OiBDbHVzdGVyVHlwZTtcblxuICAvKipcbiAgICogV2hhdCBwb3J0IHRvIGxpc3RlbiBvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBkZWZhdWx0IGZvciB0aGUgZW5naW5lIGlzIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBwb3J0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBlbmNyeXB0aW9uIG9mIGRhdGEgYXQgcmVzdCBpbiB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdG8gdXNlIGZvciBlbmNyeXB0aW9uIG9mIGRhdGEgYXQgcmVzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBV1MtbWFuYWdlZCBrZXksIGlmIGVuY3J5cHRpb24gYXQgcmVzdCBpcyBlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXlSZWY7XG5cbiAgLyoqXG4gICAqIEEgcHJlZmVycmVkIG1haW50ZW5hbmNlIHdpbmRvdyBkYXkvdGltZSByYW5nZS4gU2hvdWxkIGJlIHNwZWNpZmllZCBhcyBhIHJhbmdlIGRkZDpoaDI0Om1pLWRkZDpoaDI0Om1pICgyNEggQ2xvY2sgVVRDKS5cbiAgICpcbiAgICogRXhhbXBsZTogJ1N1bjoyMzo0NS1Nb246MDA6MTUnXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gMzAtbWludXRlIHdpbmRvdyBzZWxlY3RlZCBhdCByYW5kb20gZnJvbSBhbiA4LWhvdXIgYmxvY2sgb2YgdGltZSBmb3JcbiAgICogZWFjaCBBV1MgUmVnaW9uLCBvY2N1cnJpbmcgb24gYSByYW5kb20gZGF5IG9mIHRoZSB3ZWVrLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25SRFMvbGF0ZXN0L0F1cm9yYVVzZXJHdWlkZS9VU0VSX1VwZ3JhZGVEQkluc3RhbmNlLk1haW50ZW5hbmNlLmh0bWwjQ29uY2VwdHMuREJNYWludGVuYW5jZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgdG8gcGxhY2UgdGhlIGNsdXN0ZXIgaW4uXG4gICAqL1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBXaGVyZSB0byBwbGFjZSB0aGUgaW5zdGFuY2VzIHdpdGhpbiB0aGUgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJpdmF0ZSBzdWJuZXRzXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuZXcgc2VjdXJpdHkgZ3JvdXAgaXMgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIEEgY2x1c3RlciBzdWJuZXQgZ3JvdXAgdG8gdXNlIHdpdGggdGhpcyBjbHVzdGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbmV3IHN1Ym5ldCBncm91cCB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRHcm91cD86IElDbHVzdGVyU3VibmV0R3JvdXA7XG5cbiAgLyoqXG4gICAqIFVzZXJuYW1lIGFuZCBwYXNzd29yZCBmb3IgdGhlIGFkbWluaXN0cmF0aXZlIHVzZXJcbiAgICovXG4gIHJlYWRvbmx5IG1hc3RlclVzZXI6IExvZ2luO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSByb2xlIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlIGNsdXN0ZXIgdG8gYWNjZXNzIG90aGVyIEFXUyBzZXJ2aWNlcy5cbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHJvbGVzIHRvIGF0dGFjaCB0byBhIGNsdXN0ZXIgaXMgc3ViamVjdCB0byBhIHF1b3RhLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHJvbGUgaXMgYXR0YWNoZWQgdG8gdGhlIGNsdXN0ZXIuXG4gICAqL1xuICByZWFkb25seSByb2xlcz86IGlhbS5JUm9sZVtdO1xuXG4gIC8qKlxuICAgKiBBIHNpbmdsZSBBV1MgSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pIHJvbGUgdG8gYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCByb2xlIGZvciB0aGUgY2x1c3Rlci5cbiAgICogVGhlIGRlZmF1bHQgcm9sZSBtdXN0IGJlIGluY2x1ZGVkIGluIHRoZSByb2xlcyBsaXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlZmF1bHQgcm9sZSBpcyBzcGVjaWZpZWQgZm9yIHRoZSBjbHVzdGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgYSBkYXRhYmFzZSB3aGljaCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgaW5zaWRlIHRoZSBjbHVzdGVyXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdF9kYlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdERhdGFiYXNlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQnVja2V0IGRldGFpbHMgZm9yIGxvZyBmaWxlcyB0byBiZSBzZW50IHRvLCBpbmNsdWRpbmcgcHJlZml4LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGxvZ2dpbmcgYnVja2V0IGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmdQcm9wZXJ0aWVzPzogTG9nZ2luZ1Byb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIFRoZSByZW1vdmFsIHBvbGljeSB0byBhcHBseSB3aGVuIHRoZSBjbHVzdGVyIGFuZCBpdHMgaW5zdGFuY2VzIGFyZSByZW1vdmVkXG4gICAqIGZyb20gdGhlIHN0YWNrIG9yIHJlcGxhY2VkIGR1cmluZyBhbiB1cGRhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBtYWtlIGNsdXN0ZXIgcHVibGljbHkgYWNjZXNzaWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY2x5QWNjZXNzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgZmxhZyBpcyBzZXQsIHRoZSBjbHVzdGVyIHJlc2l6aW5nIHR5cGUgd2lsbCBiZSBzZXQgdG8gY2xhc3NpYy5cbiAgICogV2hlbiByZXNpemluZyBhIGNsdXN0ZXIsIGNsYXNzaWMgcmVzaXppbmcgd2lsbCBhbHdheXMgcHJvdmlzaW9uIGEgbmV3IGNsdXN0ZXIgYW5kIHRyYW5zZmVyIHRoZSBkYXRhIHRoZXJlLlxuICAgKlxuICAgKiBDbGFzc2ljIHJlc2l6ZSB0YWtlcyBtb3JlIHRpbWUgdG8gY29tcGxldGUsIGJ1dCBpdCBjYW4gYmUgdXNlZnVsIGluIGNhc2VzIHdoZXJlIHRoZSBjaGFuZ2UgaW4gbm9kZSBjb3VudCBvclxuICAgKiB0aGUgbm9kZSB0eXBlIHRvIG1pZ3JhdGUgdG8gZG9lc24ndCBmYWxsIHdpdGhpbiB0aGUgYm91bmRzIGZvciBlbGFzdGljIHJlc2l6ZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L21nbXQvbWFuYWdpbmctY2x1c3Rlci1vcGVyYXRpb25zLmh0bWwjZWxhc3RpYy1yZXNpemVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBFbGFzdGljIHJlc2l6ZSB0eXBlXG4gICAqL1xuICByZWFkb25seSBjbGFzc2ljUmVzaXppbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgRWxhc3RpYyBJUCAoRUlQKSBhZGRyZXNzIGZvciB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L21nbXQvbWFuYWdpbmctY2x1c3RlcnMtdnBjLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBFbGFzdGljIElQXG4gICAqL1xuICByZWFkb25seSBlbGFzdGljSXA/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgZmxhZyBpcyBzZXQsIHRoZSBjbHVzdGVyIHdpbGwgYmUgcmVib290ZWQgd2hlbiBjaGFuZ2VzIHRvIHRoZSBjbHVzdGVyJ3MgcGFyYW1ldGVyIGdyb3VwIHRoYXQgcmVxdWlyZSBhIHJlc3RhcnQgdG8gYXBwbHkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSByZWJvb3RGb3JQYXJhbWV0ZXJDaGFuZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBmbGFnIGlzIHNldCwgQW1hem9uIFJlZHNoaWZ0IGZvcmNlcyBhbGwgQ09QWSBhbmQgVU5MT0FEIHRyYWZmaWMgYmV0d2VlbiB5b3VyIGNsdXN0ZXIgYW5kIHlvdXIgZGF0YSByZXBvc2l0b3JpZXMgdGhyb3VnaCB5b3VyIHZpcnR1YWwgcHJpdmF0ZSBjbG91ZCAoVlBDKS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L21nbXQvZW5oYW5jZWQtdnBjLXJvdXRpbmcuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZFZwY1JvdXRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0aW5nIHdoZXRoZXIgQW1hem9uIFJlZHNoaWZ0IHNob3VsZCBkZXBsb3kgdGhlIGNsdXN0ZXIgaW4gdHdvIEF2YWlsYWJpbGl0eSBab25lcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbXVsdGlBej86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gUmVkc2hpZnQgb3BlcmF0aW9uIHRvIGJlIHBlcmZvcm1lZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBvcGVyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlQWN0aW9uPzogUmVzb3VyY2VBY3Rpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIHJlbG9jYXRpb24gZm9yIGFuIEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVyIGJldHdlZW4gQXZhaWxhYmlsaXR5IFpvbmVzIGFmdGVyIHRoZSBjbHVzdGVyIGlzIGNyZWF0ZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9tZ210L21hbmFnaW5nLWNsdXN0ZXItcmVjb3ZlcnkuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lUmVsb2NhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYWludGVuYW5jZSB0cmFjayBuYW1lIGZvciB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L21nbXQvbWFuYWdpbmctY2x1c3Rlci1jb25zaWRlcmF0aW9ucy5odG1sI3JzLW1nbXQtbWFpbnRlbmFuY2UtdHJhY2tzXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZCAtIFJlZHNoaWZ0IGRlZmF1bHQgaXMgY3VycmVudFxuICAgKi9cbiAgcmVhZG9ubHkgbWFpbnRlbmFuY2VUcmFja05hbWU/OiBNYWludGVuYW5jZVRyYWNrTmFtZTtcbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBjbHVzdGVyZWQgZGF0YWJhc2UuXG4gKi9cbmFic3RyYWN0IGNsYXNzIENsdXN0ZXJCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJQ2x1c3RlciB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBjbHVzdGVyXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgY2x1c3Rlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVuZHBvaW50IHRvIHVzZSBmb3IgcmVhZC93cml0ZSBvcGVyYXRpb25zXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgY2x1c3RlckVuZHBvaW50OiBFbmRwb2ludDtcblxuICAvKipcbiAgICogQWNjZXNzIHRvIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgc2VjcmV0IGF0dGFjaG1lbnQgdGFyZ2V0IHNwZWNpZmljYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGFzU2VjcmV0QXR0YWNobWVudFRhcmdldCgpOiBzZWNyZXRzbWFuYWdlci5TZWNyZXRBdHRhY2htZW50VGFyZ2V0UHJvcHMge1xuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXRJZDogdGhpcy5jbHVzdGVyTmFtZSxcbiAgICAgIHRhcmdldFR5cGU6IHNlY3JldHNtYW5hZ2VyLkF0dGFjaG1lbnRUYXJnZXRUeXBlLlJFRFNISUZUX0NMVVNURVIsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIFJlZHNoaWZ0IGNsdXN0ZXIgYSBnaXZlbiBudW1iZXIgb2Ygbm9kZXMuXG4gKlxuICogQHJlc291cmNlIEFXUzo6UmVkc2hpZnQ6OkNsdXN0ZXJcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuQG5vQm94U3RhY2tUcmFjZXNcbmV4cG9ydCBjbGFzcyBDbHVzdGVyIGV4dGVuZHMgQ2x1c3RlckJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1yZWRzaGlmdC1hbHBoYS5DbHVzdGVyJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIERhdGFiYXNlQ2x1c3RlciBmcm9tIHByb3BlcnRpZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNsdXN0ZXJBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBDbHVzdGVyQXR0cmlidXRlcyk6IElDbHVzdGVyIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBDbHVzdGVyQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbnMgPSBuZXcgZWMyLkNvbm5lY3Rpb25zKHtcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IGF0dHJzLnNlY3VyaXR5R3JvdXBzLFxuICAgICAgICBkZWZhdWx0UG9ydDogZWMyLlBvcnQudGNwKGF0dHJzLmNsdXN0ZXJFbmRwb2ludFBvcnQpLFxuICAgICAgfSk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY2x1c3Rlck5hbWUgPSBhdHRycy5jbHVzdGVyTmFtZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZUlkZW50aWZpZXJzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGNsdXN0ZXJFbmRwb2ludCA9IG5ldyBFbmRwb2ludChhdHRycy5jbHVzdGVyRW5kcG9pbnRBZGRyZXNzLCBhdHRycy5jbHVzdGVyRW5kcG9pbnRQb3J0KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBjbHVzdGVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2x1c3Rlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVuZHBvaW50IHRvIHVzZSBmb3IgcmVhZC93cml0ZSBvcGVyYXRpb25zXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2x1c3RlckVuZHBvaW50OiBFbmRwb2ludDtcblxuICAvKipcbiAgICogQWNjZXNzIHRvIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcblxuICAvKipcbiAgICogVGhlIHNlY3JldCBhdHRhY2hlZCB0byB0aGlzIGNsdXN0ZXJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZWNyZXQ/OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2luZ2xlVXNlclJvdGF0aW9uQXBwbGljYXRpb246IHNlY3JldHNtYW5hZ2VyLlNlY3JldFJvdGF0aW9uQXBwbGljYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgbXVsdGlVc2VyUm90YXRpb25BcHBsaWNhdGlvbjogc2VjcmV0c21hbmFnZXIuU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbjtcblxuICAvKipcbiAgICogVGhlIFZQQyB3aGVyZSB0aGUgREIgc3VibmV0IGdyb3VwIGlzIGNyZWF0ZWQuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXRzIHVzZWQgYnkgdGhlIERCIHN1Ym5ldCBncm91cC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdnBjU3VibmV0cz86IGVjMi5TdWJuZXRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIENmbkNsdXN0ZXJcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY2x1c3RlcjogQ2ZuQ2x1c3RlcjtcblxuICAvKipcbiAgICogVGhlIGNsdXN0ZXIncyBwYXJhbWV0ZXIgZ3JvdXBcbiAgICovXG4gIHByb3RlY3RlZCBwYXJhbWV0ZXJHcm91cD86IElDbHVzdGVyUGFyYW1ldGVyR3JvdXA7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk5zIG9mIHRoZSByb2xlcyB0aGF0IHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIGNsdXN0ZXIuXG4gICAqXG4gICAqICoqTk9URSoqIFBsZWFzZSBkbyBub3QgYWNjZXNzIHRoaXMgZGlyZWN0bHksIHVzZSB0aGUgYGFkZElhbVJvbGVgIG1ldGhvZCBpbnN0ZWFkLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSByb2xlczogSUFycmF5Qm94PGlhbS5JUm9sZT47XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENsdXN0ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYztcbiAgICB0aGlzLnZwY1N1Ym5ldHMgPSBwcm9wcy52cGNTdWJuZXRzID8/IHtcbiAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgfTtcbiAgICB0aGlzLnBhcmFtZXRlckdyb3VwID0gcHJvcHMucGFyYW1ldGVyR3JvdXA7XG4gICAgdGhpcy5yb2xlcyA9IEJveC5mcm9tQXJyYXkocHJvcHM/LnJvbGVzID8gWy4uLnByb3BzLnJvbGVzXSA6IFtdKTtcblxuICAgIGNvbnN0IHJlbW92YWxQb2xpY3kgPSBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuUkVUQUlOO1xuXG4gICAgY29uc3Qgc3VibmV0R3JvdXAgPSBwcm9wcy5zdWJuZXRHcm91cCA/PyBuZXcgQ2x1c3RlclN1Ym5ldEdyb3VwKHRoaXMsICdTdWJuZXRzJywge1xuICAgICAgZGVzY3JpcHRpb246IGBTdWJuZXRzIGZvciAke2lkfSBSZWRzaGlmdCBjbHVzdGVyYCxcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiB0aGlzLnZwY1N1Ym5ldHMsXG4gICAgICByZW1vdmFsUG9saWN5OiByZW1vdmFsUG9saWN5LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cHMgPSBwcm9wcy5zZWN1cml0eUdyb3VwcyA/PyBbbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsICdTZWN1cml0eUdyb3VwJywge1xuICAgICAgZGVzY3JpcHRpb246ICdSZWRzaGlmdCBzZWN1cml0eSBncm91cCcsXG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgIH0pXTtcblxuICAgIGNvbnN0IHNlY3VyaXR5R3JvdXBJZHMgPSBzZWN1cml0eUdyb3Vwcy5tYXAoc2cgPT4gc2cuc2VjdXJpdHlHcm91cElkKTtcblxuICAgIGxldCBzZWNyZXQ6IERhdGFiYXNlU2VjcmV0IHwgdW5kZWZpbmVkO1xuICAgIGlmICghcHJvcHMubWFzdGVyVXNlci5tYXN0ZXJQYXNzd29yZCkge1xuICAgICAgc2VjcmV0ID0gbmV3IERhdGFiYXNlU2VjcmV0KHRoaXMsICdTZWNyZXQnLCB7XG4gICAgICAgIHVzZXJuYW1lOiBwcm9wcy5tYXN0ZXJVc2VyLm1hc3RlclVzZXJuYW1lLFxuICAgICAgICBlbmNyeXB0aW9uS2V5OiBwcm9wcy5tYXN0ZXJVc2VyLmVuY3J5cHRpb25LZXksXG4gICAgICAgIGV4Y2x1ZGVDaGFyYWN0ZXJzOiBwcm9wcy5tYXN0ZXJVc2VyLmV4Y2x1ZGVDaGFyYWN0ZXJzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgY2x1c3RlclR5cGUgPSBwcm9wcy5jbHVzdGVyVHlwZSB8fCBDbHVzdGVyVHlwZS5NVUxUSV9OT0RFO1xuICAgIGNvbnN0IG5vZGVDb3VudCA9IHRoaXMudmFsaWRhdGVOb2RlQ291bnQoY2x1c3RlclR5cGUsIHByb3BzLm51bWJlck9mTm9kZXMpO1xuXG4gICAgaWYgKHByb3BzLmVuY3J5cHRlZCA9PT0gZmFsc2UgJiYgcHJvcHMuZW5jcnlwdGlvbktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBFbmNyeXB0aW9uS2V5V2l0aG91dEVuY3J5cHRpb25gLCAnQ2Fubm90IHNldCBwcm9wZXJ0eSBlbmNyeXB0aW9uS2V5IHdpdGhvdXQgZW5hYmxpbmcgZW5jcnlwdGlvbiEnLCB0aGlzKTtcbiAgICB9XG5cbiAgICB0aGlzLnNpbmdsZVVzZXJSb3RhdGlvbkFwcGxpY2F0aW9uID0gc2VjcmV0c21hbmFnZXIuU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbi5SRURTSElGVF9ST1RBVElPTl9TSU5HTEVfVVNFUjtcbiAgICB0aGlzLm11bHRpVXNlclJvdGF0aW9uQXBwbGljYXRpb24gPSBzZWNyZXRzbWFuYWdlci5TZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uLlJFRFNISUZUX1JPVEFUSU9OX01VTFRJX1VTRVI7XG5cbiAgICBsZXQgbG9nZ2luZ1Byb3BlcnRpZXM7XG4gICAgaWYgKHByb3BzLmxvZ2dpbmdQcm9wZXJ0aWVzKSB7XG4gICAgICBsb2dnaW5nUHJvcGVydGllcyA9IHtcbiAgICAgICAgYnVja2V0TmFtZTogcHJvcHMubG9nZ2luZ1Byb3BlcnRpZXMubG9nZ2luZ0J1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICBzM0tleVByZWZpeDogcHJvcHMubG9nZ2luZ1Byb3BlcnRpZXMubG9nZ2luZ0tleVByZWZpeCxcbiAgICAgIH07XG4gICAgICBwcm9wcy5sb2dnaW5nUHJvcGVydGllcy5sb2dnaW5nQnVja2V0LmFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgJ3MzOkdldEJ1Y2tldEFjbCcsXG4gICAgICAgICAgICAgICdzMzpQdXRPYmplY3QnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICBwcm9wcy5sb2dnaW5nUHJvcGVydGllcy5sb2dnaW5nQnVja2V0LmFybkZvck9iamVjdHMoJyonKSxcbiAgICAgICAgICAgICAgcHJvcHMubG9nZ2luZ1Byb3BlcnRpZXMubG9nZ2luZ0J1Y2tldC5idWNrZXRBcm4sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcHJpbmNpcGFsczogW1xuICAgICAgICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ3JlZHNoaWZ0LmFtYXpvbmF3cy5jb20nKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZVR5cGUgPSBwcm9wcy5ub2RlVHlwZSB8fCBOb2RlVHlwZS5SQTNfTEFSR0U7XG5cbiAgICBpZiAocHJvcHMubXVsdGlBeikge1xuICAgICAgaWYgKCFub2RlVHlwZS5zdGFydHNXaXRoKCdyYTMnKSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBNdWx0aUF6VW5zdXBwb3J0ZWROb2RlVHlwZWAsIGBNdWx0aS1BWiBjbHVzdGVyIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBSQTMgbm9kZSB0eXBlcywgZ290OiAke3Byb3BzLm5vZGVUeXBlfWAsIHRoaXMpO1xuICAgICAgfVxuICAgICAgaWYgKGNsdXN0ZXJUeXBlID09PSBDbHVzdGVyVHlwZS5TSU5HTEVfTk9ERSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBNdWx0aUF6VW5zdXBwb3J0ZWRDbHVzdGVyVHlwZWAsICdNdWx0aS1BWiBjbHVzdGVyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGBjbHVzdGVyVHlwZWAgc2luZ2xlLW5vZGUnLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMucmVzb3VyY2VBY3Rpb24gPT09IFJlc291cmNlQWN0aW9uLkZBSUxPVkVSX1BSSU1BUllfQ09NUFVURSAmJiAhcHJvcHMubXVsdGlBeikge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihsaXRgRmFpbG92ZXJSZXF1aXJlc011bHRpQXpgLCAnUmVzb3VyY2VBY3Rpb24uRkFJTE9WRVJfUFJJTUFSWV9DT01QVVRFIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBtdWx0aS1BWiBjbHVzdGVycy4nLCB0aGlzKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLmF2YWlsYWJpbGl0eVpvbmVSZWxvY2F0aW9uICYmICFub2RlVHlwZS5zdGFydHNXaXRoKCdyYTMnKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihsaXRgQXZhaWxhYmlsaXR5Wm9uZVJlbG9jYXRpb25VbnN1cHBvcnRlZE5vZGVUeXBlYCwgYEF2YWlsYWJpbGl0eSB6b25lIHJlbG9jYXRpb24gaXMgc3VwcG9ydGVkIGZvciBvbmx5IFJBMyBub2RlIHR5cGVzLCBnb3Q6ICR7cHJvcHMubm9kZVR5cGV9YCwgdGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5jbHVzdGVyID0gbmV3IENmbkNsdXN0ZXIodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgLy8gQmFzaWNcbiAgICAgIGFsbG93VmVyc2lvblVwZ3JhZGU6IHRydWUsXG4gICAgICBtYWludGVuYW5jZVRyYWNrTmFtZTogcHJvcHMubWFpbnRlbmFuY2VUcmFja05hbWUsXG4gICAgICBhdXRvbWF0ZWRTbmFwc2hvdFJldGVudGlvblBlcmlvZDogMSxcbiAgICAgIGNsdXN0ZXJUeXBlLFxuICAgICAgY2x1c3RlcklkZW50aWZpZXI6IHByb3BzLmNsdXN0ZXJOYW1lLFxuICAgICAgY2x1c3RlclN1Ym5ldEdyb3VwTmFtZTogc3VibmV0R3JvdXAuY2x1c3RlclN1Ym5ldEdyb3VwTmFtZSxcbiAgICAgIHZwY1NlY3VyaXR5R3JvdXBJZHM6IHNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICBwb3J0OiBwcm9wcy5wb3J0LFxuICAgICAgY2x1c3RlclBhcmFtZXRlckdyb3VwTmFtZTogcHJvcHMucGFyYW1ldGVyR3JvdXAgJiYgcHJvcHMucGFyYW1ldGVyR3JvdXAuY2x1c3RlclBhcmFtZXRlckdyb3VwTmFtZSxcbiAgICAgIC8vIEFkbWluICh1bnNhZmVVbndyYXAgaGVyZSBpcyBzYWZlKVxuICAgICAgbWFzdGVyVXNlcm5hbWU6IHNlY3JldD8uc2VjcmV0VmFsdWVGcm9tSnNvbigndXNlcm5hbWUnKS51bnNhZmVVbndyYXAoKSA/PyBwcm9wcy5tYXN0ZXJVc2VyLm1hc3RlclVzZXJuYW1lLFxuICAgICAgbWFzdGVyVXNlclBhc3N3b3JkOiBzZWNyZXQ/LnNlY3JldFZhbHVlRnJvbUpzb24oJ3Bhc3N3b3JkJykudW5zYWZlVW53cmFwKClcbiAgICAgICAgPz8gcHJvcHMubWFzdGVyVXNlci5tYXN0ZXJQYXNzd29yZD8udW5zYWZlVW53cmFwKClcbiAgICAgICAgPz8gJ2RlZmF1bHQnLFxuICAgICAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6IHByb3BzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93LFxuICAgICAgbm9kZVR5cGUsXG4gICAgICBudW1iZXJPZk5vZGVzOiBub2RlQ291bnQsXG4gICAgICBsb2dnaW5nUHJvcGVydGllcyxcbiAgICAgIGlhbVJvbGVzOiBUb2tlbi5hc0xpc3QodGhpcy5yb2xlcy5tYXAocm9sZSA9PiByb2xlLnJvbGVBcm4pKSxcbiAgICAgIGRiTmFtZTogcHJvcHMuZGVmYXVsdERhdGFiYXNlTmFtZSB8fCAnZGVmYXVsdF9kYicsXG4gICAgICBwdWJsaWNseUFjY2Vzc2libGU6IHByb3BzLnB1YmxpY2x5QWNjZXNzaWJsZSB8fCBmYWxzZSxcbiAgICAgIC8vIEVuY3J5cHRpb25cbiAgICAgIGttc0tleUlkOiBwcm9wcy5lbmNyeXB0aW9uS2V5Py5rZXlSZWYua2V5SWQsXG4gICAgICBlbmNyeXB0ZWQ6IHByb3BzLmVuY3J5cHRlZCA/PyB0cnVlLFxuICAgICAgY2xhc3NpYzogcHJvcHMuY2xhc3NpY1Jlc2l6aW5nLFxuICAgICAgZWxhc3RpY0lwOiBwcm9wcy5lbGFzdGljSXAsXG4gICAgICBlbmhhbmNlZFZwY1JvdXRpbmc6IHByb3BzLmVuaGFuY2VkVnBjUm91dGluZyxcbiAgICAgIG11bHRpQXo6IHByb3BzLm11bHRpQXosXG4gICAgICByZXNvdXJjZUFjdGlvbjogcHJvcHMucmVzb3VyY2VBY3Rpb24sXG4gICAgICBhdmFpbGFiaWxpdHlab25lUmVsb2NhdGlvbjogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZVJlbG9jYXRpb24sXG4gICAgfSk7XG5cbiAgICB0aGlzLmNsdXN0ZXIuYXBwbHlSZW1vdmFsUG9saWN5KHJlbW92YWxQb2xpY3ksIHtcbiAgICAgIGFwcGx5VG9VcGRhdGVSZXBsYWNlUG9saWN5OiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jbHVzdGVyTmFtZSA9IHRoaXMuY2x1c3Rlci5yZWY7XG5cbiAgICAvLyBjcmVhdGUgYSBudW1iZXIgdG9rZW4gdGhhdCByZXByZXNlbnRzIHRoZSBwb3J0IG9mIHRoZSBjbHVzdGVyXG4gICAgY29uc3QgcG9ydEF0dHJpYnV0ZSA9IFRva2VuLmFzTnVtYmVyKHRoaXMuY2x1c3Rlci5hdHRyRW5kcG9pbnRQb3J0KTtcbiAgICB0aGlzLmNsdXN0ZXJFbmRwb2ludCA9IG5ldyBFbmRwb2ludCh0aGlzLmNsdXN0ZXIuYXR0ckVuZHBvaW50QWRkcmVzcywgcG9ydEF0dHJpYnV0ZSk7XG5cbiAgICBpZiAoc2VjcmV0KSB7XG4gICAgICB0aGlzLnNlY3JldCA9IHNlY3JldC5hdHRhY2godGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFBvcnQgPSBlYzIuUG9ydC50Y3AodGhpcy5jbHVzdGVyRW5kcG9pbnQucG9ydCk7XG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IG5ldyBlYzIuQ29ubmVjdGlvbnMoeyBzZWN1cml0eUdyb3VwcywgZGVmYXVsdFBvcnQgfSk7XG4gICAgaWYgKHByb3BzLnJlYm9vdEZvclBhcmFtZXRlckNoYW5nZXMpIHtcbiAgICAgIHRoaXMuZW5hYmxlUmVib290Rm9yUGFyYW1ldGVyQ2hhbmdlcygpO1xuICAgIH1cbiAgICAvLyBBZGQgZGVmYXVsdCByb2xlIGlmIHNwZWNpZmllZCBhbmQgYWxzbyBhdmFpbGFibGUgaW4gdGhlIHJvbGVzIGxpc3RcbiAgICBpZiAocHJvcHMuZGVmYXVsdFJvbGUpIHtcbiAgICAgIGlmIChwcm9wcy5yb2xlcz8uc29tZSh4ID0+IHggPT09IHByb3BzLmRlZmF1bHRSb2xlKSkge1xuICAgICAgICB0aGlzLmFkZERlZmF1bHRJYW1Sb2xlKHByb3BzLmRlZmF1bHRSb2xlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YERlZmF1bHRSb2xlTm90SW5Sb2xlc0xpc3RgLCAnRGVmYXVsdCByb2xlIG11c3QgYmUgaW5jbHVkZWQgaW4gcm9sZSBsaXN0LicsIHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBzaW5nbGUgdXNlciByb3RhdGlvbiBvZiB0aGUgbWFzdGVyIHBhc3N3b3JkIHRvIHRoaXMgY2x1c3Rlci5cbiAgICpcbiAgICogQHBhcmFtIFthdXRvbWF0aWNhbGx5QWZ0ZXI9RHVyYXRpb24uZGF5cygzMCldIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgdGhlIHByZXZpb3VzIHJvdGF0aW9uXG4gICAqIGJlZm9yZSBTZWNyZXRzIE1hbmFnZXIgdHJpZ2dlcnMgdGhlIG5leHQgYXV0b21hdGljIHJvdGF0aW9uLlxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZFJvdGF0aW9uU2luZ2xlVXNlcihhdXRvbWF0aWNhbGx5QWZ0ZXI/OiBEdXJhdGlvbik6IHNlY3JldHNtYW5hZ2VyLlNlY3JldFJvdGF0aW9uIHtcbiAgICBpZiAoIXRoaXMuc2VjcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBOb1NlY3JldEZvclJvdGF0aW9uYCwgJ0Nhbm5vdCBhZGQgc2luZ2xlIHVzZXIgcm90YXRpb24gZm9yIGEgY2x1c3RlciB3aXRob3V0IHNlY3JldC4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZCA9ICdSb3RhdGlvblNpbmdsZVVzZXInO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5ub2RlLnRyeUZpbmRDaGlsZChpZCk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBTaW5nbGVVc2VyUm90YXRpb25BbHJlYWR5RXhpc3RzYCwgJ0Egc2luZ2xlIHVzZXIgcm90YXRpb24gd2FzIGFscmVhZHkgYWRkZWQgdG8gdGhpcyBjbHVzdGVyLicsIHRoaXMpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgc2VjcmV0c21hbmFnZXIuU2VjcmV0Um90YXRpb24odGhpcywgaWQsIHtcbiAgICAgIHNlY3JldDogdGhpcy5zZWNyZXQsXG4gICAgICBhdXRvbWF0aWNhbGx5QWZ0ZXIsXG4gICAgICBhcHBsaWNhdGlvbjogdGhpcy5zaW5nbGVVc2VyUm90YXRpb25BcHBsaWNhdGlvbixcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiB0aGlzLnZwY1N1Ym5ldHMsXG4gICAgICB0YXJnZXQ6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGUgbXVsdGkgdXNlciByb3RhdGlvbiB0byB0aGlzIGNsdXN0ZXIuXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkUm90YXRpb25NdWx0aVVzZXIoaWQ6IHN0cmluZywgb3B0aW9uczogUm90YXRpb25NdWx0aVVzZXJPcHRpb25zKTogc2VjcmV0c21hbmFnZXIuU2VjcmV0Um90YXRpb24ge1xuICAgIGlmICghdGhpcy5zZWNyZXQpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YE5vU2VjcmV0Rm9yTXVsdGlVc2VyUm90YXRpb25gLCAnQ2Fubm90IGFkZCBtdWx0aSB1c2VyIHJvdGF0aW9uIGZvciBhIGNsdXN0ZXIgd2l0aG91dCBzZWNyZXQuJywgdGhpcyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgc2VjcmV0c21hbmFnZXIuU2VjcmV0Um90YXRpb24odGhpcywgaWQsIHtcbiAgICAgIHNlY3JldDogb3B0aW9ucy5zZWNyZXQsXG4gICAgICBtYXN0ZXJTZWNyZXQ6IHRoaXMuc2VjcmV0LFxuICAgICAgYXV0b21hdGljYWxseUFmdGVyOiBvcHRpb25zLmF1dG9tYXRpY2FsbHlBZnRlcixcbiAgICAgIGFwcGxpY2F0aW9uOiB0aGlzLm11bHRpVXNlclJvdGF0aW9uQXBwbGljYXRpb24sXG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgdnBjU3VibmV0czogdGhpcy52cGNTdWJuZXRzLFxuICAgICAgdGFyZ2V0OiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU5vZGVDb3VudChjbHVzdGVyVHlwZTogQ2x1c3RlclR5cGUsIG51bWJlck9mTm9kZXM/OiBudW1iZXIpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIGlmIChjbHVzdGVyVHlwZSA9PT0gQ2x1c3RlclR5cGUuU0lOR0xFX05PREUpIHtcbiAgICAgIC8vIFRoaXMgcHJvcGVydHkgbXVzdCBub3QgYmUgc2V0IGZvciBzaW5nbGUtbm9kZSBjbHVzdGVyczsgYmUgZ2VuZXJvdXMgYW5kIHRyZWF0IGEgdmFsdWUgb2YgMSBub2RlIGFzIHVuZGVmaW5lZC5cbiAgICAgIGlmIChudW1iZXJPZk5vZGVzICE9PSB1bmRlZmluZWQgJiYgbnVtYmVyT2ZOb2RlcyAhPT0gMSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBJbnZhbGlkTm9kZUNvdW50Rm9yU2luZ2xlTm9kZWAsICdOdW1iZXIgb2Ygbm9kZXMgbXVzdCBiZSBub3QgYmUgc3VwcGxpZWQgb3IgYmUgMSBmb3IgY2x1c3RlciB0eXBlIHNpbmdsZS1ub2RlJywgdGhpcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKG51bWJlck9mTm9kZXMpKSB7XG4gICAgICAgIHJldHVybiBudW1iZXJPZk5vZGVzO1xuICAgICAgfVxuICAgICAgY29uc3Qgbm9kZUNvdW50ID0gbnVtYmVyT2ZOb2RlcyA/PyAyO1xuICAgICAgaWYgKG5vZGVDb3VudCA8IDIgfHwgbm9kZUNvdW50ID4gMTAwKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YEludmFsaWROb2RlQ291bnRGb3JNdWx0aU5vZGVgLCAnTnVtYmVyIG9mIG5vZGVzIGZvciBjbHVzdGVyIHR5cGUgbXVsdGktbm9kZSBtdXN0IGJlIGF0IGxlYXN0IDIgYW5kIG5vIG1vcmUgdGhhbiAxMDAnLCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBub2RlQ291bnQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBwYXJhbWV0ZXIgdG8gdGhlIENsdXN0ZXJzJyBwYXJhbWV0ZXIgZ3JvdXBcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgdGhlIHBhcmFtZXRlciBuYW1lXG4gICAqIEBwYXJhbSB2YWx1ZSB0aGUgcGFyYW1ldGVyIG5hbWVcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRUb1BhcmFtZXRlckdyb3VwKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wYXJhbWV0ZXJHcm91cCkge1xuICAgICAgY29uc3QgcGFyYW06IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgICBwYXJhbVtuYW1lXSA9IHZhbHVlO1xuICAgICAgdGhpcy5wYXJhbWV0ZXJHcm91cCA9IG5ldyBDbHVzdGVyUGFyYW1ldGVyR3JvdXAodGhpcywgJ1BhcmFtZXRlckdyb3VwJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5jbHVzdGVyLmNsdXN0ZXJJZGVudGlmaWVyID8gYFBhcmFtZXRlciBHcm91cCBmb3IgdGhlICR7dGhpcy5jbHVzdGVyLmNsdXN0ZXJJZGVudGlmaWVyfSBSZWRzaGlmdCBjbHVzdGVyYCA6ICdDbHVzdGVyIHBhcmFtZXRlciBncm91cCBmb3IgZmFtaWx5IHJlZHNoaWZ0LTEuMCcsXG4gICAgICAgIHBhcmFtZXRlcnM6IHBhcmFtLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmNsdXN0ZXIuY2x1c3RlclBhcmFtZXRlckdyb3VwTmFtZSA9IHRoaXMucGFyYW1ldGVyR3JvdXAuY2x1c3RlclBhcmFtZXRlckdyb3VwTmFtZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucGFyYW1ldGVyR3JvdXAgaW5zdGFuY2VvZiBDbHVzdGVyUGFyYW1ldGVyR3JvdXApIHtcbiAgICAgIHRoaXMucGFyYW1ldGVyR3JvdXAuYWRkUGFyYW1ldGVyKG5hbWUsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihsaXRgQ2Fubm90QWRkUGFyYW1ldGVyVG9JbXBvcnRlZEdyb3VwYCwgJ0Nhbm5vdCBhZGQgYSBwYXJhbWV0ZXIgdG8gYW4gaW1wb3J0ZWQgcGFyYW1ldGVyIGdyb3VwLicsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGF1dG9tYXRpYyBjbHVzdGVyIHJlYm9vdGluZyB3aGVuIGNoYW5nZXMgdG8gdGhlIGNsdXN0ZXIncyBwYXJhbWV0ZXIgZ3JvdXAgcmVxdWlyZSBhIHJlc3RhcnQgdG8gYXBwbHkuXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZW5hYmxlUmVib290Rm9yUGFyYW1ldGVyQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ub2RlLnRyeUZpbmRDaGlsZCgnUmVkc2hpZnRDbHVzdGVyUmVib290ZXJDdXN0b21SZXNvdXJjZScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlYm9vdEZ1bmN0aW9uID0gbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCAnUmVkc2hpZnRDbHVzdGVyUmVib290ZXJGdW5jdGlvbicsIHtcbiAgICAgIHV1aWQ6ICc1MTFlMjA3Zi0xM2RmLTRiOGItYjYzMi1jMzJiMzBiNjVhYzInLFxuICAgICAgcnVudGltZTogbGFtYmRhLmRldGVybWluZUxhdGVzdE5vZGVSdW50aW1lKHRoaXMpLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdjdXN0b20tcmVzb3VyY2UtaGFuZGxlcnMnLCAnZGlzdCcsICdhd3MtcmVkc2hpZnQtYWxwaGEnLCAnY2x1c3Rlci1wYXJhbWV0ZXItY2hhbmdlLXJlYm9vdC1oYW5kbGVyJykpLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg5MDApLFxuICAgIH0pO1xuICAgIHJlYm9vdEZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ3JlZHNoaWZ0OkRlc2NyaWJlQ2x1c3RlcnMnXSxcbiAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgfSkpO1xuICAgIHJlYm9vdEZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ3JlZHNoaWZ0OlJlYm9vdENsdXN0ZXInXSxcbiAgICAgIHJlc291cmNlczogW1xuICAgICAgICBTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgICAgIHNlcnZpY2U6ICdyZWRzaGlmdCcsXG4gICAgICAgICAgcmVzb3VyY2U6ICdjbHVzdGVyJyxcbiAgICAgICAgICByZXNvdXJjZU5hbWU6IHRoaXMuY2x1c3Rlck5hbWUsXG4gICAgICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pKTtcbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBQcm92aWRlcih0aGlzLCAnUmVzb3VyY2VQcm92aWRlcicsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiByZWJvb3RGdW5jdGlvbixcbiAgICB9KTtcbiAgICBjb25zdCBjdXN0b21SZXNvdXJjZSA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnUmVkc2hpZnRDbHVzdGVyUmVib290ZXJDdXN0b21SZXNvdXJjZScsIHtcbiAgICAgIHJlc291cmNlVHlwZTogJ0N1c3RvbTo6UmVkc2hpZnRDbHVzdGVyUmVib290ZXInLFxuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIENsdXN0ZXJJZDogdGhpcy5jbHVzdGVyTmFtZSxcbiAgICAgICAgUGFyYW1ldGVyR3JvdXBOYW1lOiBMYXp5LnN0cmluZyh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnBhcmFtZXRlckdyb3VwKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YE5vUGFyYW1ldGVyR3JvdXBGb3JSZWJvb3RgLCAnQ2Fubm90IGVuYWJsZSByZWJvb3QgZm9yIHBhcmFtZXRlciBjaGFuZ2VzIHdoZW4gdGhlcmUgaXMgbm8gYXNzb2NpYXRlZCBDbHVzdGVyUGFyYW1ldGVyR3JvdXAuJywgdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJHcm91cC5jbHVzdGVyUGFyYW1ldGVyR3JvdXBOYW1lO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBQYXJhbWV0ZXJzU3RyaW5nOiBMYXp5LnN0cmluZyh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEodGhpcy5wYXJhbWV0ZXJHcm91cCBpbnN0YW5jZW9mIENsdXN0ZXJQYXJhbWV0ZXJHcm91cCkpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihsaXRgSW1wb3J0ZWRQYXJhbWV0ZXJHcm91cEZvclJlYm9vdGAsICdDYW5ub3QgZW5hYmxlIHJlYm9vdCBmb3IgcGFyYW1ldGVyIGNoYW5nZXMgd2hlbiB1c2luZyBhbiBpbXBvcnRlZCBwYXJhbWV0ZXIgZ3JvdXAuJywgdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5wYXJhbWV0ZXJHcm91cC5wYXJhbWV0ZXJzKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgTGF6eS5hbnkoe1xuICAgICAgcHJvZHVjZTogKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucGFyYW1ldGVyR3JvdXApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBOb1BhcmFtZXRlckdyb3VwRm9yUmVib290RGVwZW5kZW5jeWAsICdDYW5ub3QgZW5hYmxlIHJlYm9vdCBmb3IgcGFyYW1ldGVyIGNoYW5nZXMgd2hlbiB0aGVyZSBpcyBubyBhc3NvY2lhdGVkIENsdXN0ZXJQYXJhbWV0ZXJHcm91cC4nLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjdXN0b21SZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3kodGhpcywgdGhpcy5wYXJhbWV0ZXJHcm91cCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgZGVmYXVsdCBJQU0gcm9sZSB0byBjbHVzdGVyLiBUaGUgZGVmYXVsdCBJQU0gcm9sZSBtdXN0IGJlIGFscmVhZHkgYXNzb2NpYXRlZCB0byB0aGUgY2x1c3RlciB0byBiZSBhZGRlZCBhcyB0aGUgZGVmYXVsdCByb2xlLlxuICAgKlxuICAgKiBAcGFyYW0gZGVmYXVsdElhbVJvbGUgdGhlIElBTSByb2xlIHRvIGJlIHNldCBhcyB0aGUgZGVmYXVsdCByb2xlXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkRGVmYXVsdElhbVJvbGUoZGVmYXVsdElhbVJvbGU6IGlhbS5JUm9sZSk6IHZvaWQge1xuICAgIC8vIENoZWNrIHRvIHNlZSBpZiBkZWZhdWx0IHJvbGUgaXMgaW5jbHVkZWQgaW4gbGlzdCBvZiBjbHVzdGVyIElBTSByb2xlc1xuICAgIGlmICghdGhpcy5yb2xlcy5pbmNsdWRlcyhkZWZhdWx0SWFtUm9sZSkpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YERlZmF1bHRSb2xlTm90QXNzb2NpYXRlZGAsICdEZWZhdWx0IHJvbGUgbXVzdCBiZSBhc3NvY2lhdGVkIHRvIHRoZSBSZWRzaGlmdCBjbHVzdGVyIHRvIGJlIHNldCBhcyB0aGUgZGVmYXVsdCByb2xlLicsIHRoaXMpO1xuICAgIH1cblxuICAgIC8vIE9uIFVQREFURSBvciBDUkVBVEUgZGVmaW5lIHRoZSBkZWZhdWx0IElBTSByb2xlLiBPbiBERUxFVEUsIHJlbW92ZSB0aGUgZGVmYXVsdCBJQU0gcm9sZVxuICAgIGNvbnN0IGRlZmF1bHRSb2xlQ3VzdG9tUmVzb3VyY2UgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgJ2RlZmF1bHQtcm9sZScsIHtcbiAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6ICdSZWRzaGlmdCcsXG4gICAgICAgIGFjdGlvbjogJ21vZGlmeUNsdXN0ZXJJYW1Sb2xlcycsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBDbHVzdGVySWRlbnRpZmllcjogdGhpcy5jbHVzdGVyLnJlZixcbiAgICAgICAgICBEZWZhdWx0SWFtUm9sZUFybjogZGVmYXVsdElhbVJvbGUucm9sZUFybixcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgYCR7ZGVmYXVsdElhbVJvbGUucm9sZUFybn0tJHt0aGlzLmNsdXN0ZXIucmVmfWAsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogJ1JlZHNoaWZ0JyxcbiAgICAgICAgYWN0aW9uOiAnbW9kaWZ5Q2x1c3RlcklhbVJvbGVzJyxcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIENsdXN0ZXJJZGVudGlmaWVyOiB0aGlzLmNsdXN0ZXIucmVmLFxuICAgICAgICAgIERlZmF1bHRJYW1Sb2xlQXJuOiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgYCR7ZGVmYXVsdElhbVJvbGUucm9sZUFybn0tJHt0aGlzLmNsdXN0ZXIucmVmfWAsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgcG9saWN5OiBBd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU2RrQ2FsbHMoe1xuICAgICAgICByZXNvdXJjZXM6IEF3c0N1c3RvbVJlc291cmNlUG9saWN5LkFOWV9SRVNPVVJDRSxcbiAgICAgIH0pLFxuICAgICAgaW5zdGFsbExhdGVzdEF3c1NkazogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBkZWZhdWx0SWFtUm9sZS5ncmFudFBhc3NSb2xlKGRlZmF1bHRSb2xlQ3VzdG9tUmVzb3VyY2UuZ3JhbnRQcmluY2lwYWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByb2xlIHRvIHRoZSBjbHVzdGVyXG4gICAqXG4gICAqIEBwYXJhbSByb2xlIHRoZSByb2xlIHRvIGFkZFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZElhbVJvbGUocm9sZTogaWFtLklSb2xlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm9sZXMuaW5jbHVkZXMocm9sZSkpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YFJvbGVBbHJlYWR5QXR0YWNoZWRgLCBgUm9sZSAnJHtyb2xlLnJvbGVBcm59JyBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIHRoZSBjbHVzdGVyYCwgdGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlcy5wdXNoKHJvbGUpO1xuICB9XG59XG4iXX0=
|
package/lib/database-secret.js
CHANGED
|
@@ -59,7 +59,7 @@ let DatabaseSecret = (() => {
|
|
|
59
59
|
DatabaseSecret = _classThis = _classDescriptor.value;
|
|
60
60
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
61
61
|
}
|
|
62
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-redshift-alpha.DatabaseSecret", version: "2.
|
|
62
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-redshift-alpha.DatabaseSecret", version: "2.255.0-alpha.0" };
|
|
63
63
|
/** Uniquely identifies this class. */
|
|
64
64
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-redshift-alpha.DatabaseSecret';
|
|
65
65
|
constructor(scope, id, props) {
|
package/lib/endpoint.js
CHANGED
|
@@ -53,7 +53,7 @@ let Endpoint = (() => {
|
|
|
53
53
|
__esDecorate(this, null, _get_socketAddress_decorators, { kind: "getter", name: "socketAddress", static: false, private: false, access: { has: obj => "socketAddress" in obj, get: obj => obj.socketAddress }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
54
54
|
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
55
55
|
}
|
|
56
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-redshift-alpha.Endpoint", version: "2.
|
|
56
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-redshift-alpha.Endpoint", version: "2.255.0-alpha.0" };
|
|
57
57
|
/**
|
|
58
58
|
* The hostname of the endpoint
|
|
59
59
|
*/
|
package/lib/parameter-group.js
CHANGED
|
@@ -70,7 +70,7 @@ let ClusterParameterGroup = (() => {
|
|
|
70
70
|
ClusterParameterGroup = _classThis = _classDescriptor.value;
|
|
71
71
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
72
72
|
}
|
|
73
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-redshift-alpha.ClusterParameterGroup", version: "2.
|
|
73
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-redshift-alpha.ClusterParameterGroup", version: "2.255.0-alpha.0" };
|
|
74
74
|
/** Uniquely identifies this class. */
|
|
75
75
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-redshift-alpha.ClusterParameterGroup';
|
|
76
76
|
/**
|
|
@@ -1,7 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
3
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
4
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
5
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
6
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
7
|
+
var _, done = false;
|
|
8
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
9
|
+
var context = {};
|
|
10
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
11
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
12
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
13
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
14
|
+
if (kind === "accessor") {
|
|
15
|
+
if (result === void 0) continue;
|
|
16
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
17
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
18
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
19
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
20
|
+
}
|
|
21
|
+
else if (_ = accept(result)) {
|
|
22
|
+
if (kind === "field") initializers.unshift(_);
|
|
23
|
+
else descriptor[key] = _;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
27
|
+
done = true;
|
|
28
|
+
};
|
|
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
|
+
};
|
|
2
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
37
|
exports.UserTablePrivileges = void 0;
|
|
4
|
-
const
|
|
38
|
+
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
5
39
|
const constructs_1 = require("constructs");
|
|
6
40
|
const table_1 = require("../table");
|
|
7
41
|
const database_query_1 = require("./database-query");
|
|
@@ -14,35 +48,49 @@ const handler_name_1 = require("./database-query-provider/handler-name");
|
|
|
14
48
|
* method. Thus, each `User` will have at most one `UserTablePrivileges` construct to manage its privileges. For details
|
|
15
49
|
* on why this is a Good Thing, see the README, under "Granting Privileges".
|
|
16
50
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
51
|
+
let UserTablePrivileges = (() => {
|
|
52
|
+
let _classDecorators = [helpers_internal_1.noBoxStackTraces];
|
|
53
|
+
let _classDescriptor;
|
|
54
|
+
let _classExtraInitializers = [];
|
|
55
|
+
let _classThis;
|
|
56
|
+
let _classSuper = constructs_1.Construct;
|
|
57
|
+
var UserTablePrivileges = class extends _classSuper {
|
|
58
|
+
static { _classThis = this; }
|
|
59
|
+
static {
|
|
60
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
61
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
62
|
+
UserTablePrivileges = _classThis = _classDescriptor.value;
|
|
63
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
64
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
65
|
+
}
|
|
66
|
+
privileges;
|
|
67
|
+
constructor(scope, id, props) {
|
|
68
|
+
super(scope, id);
|
|
69
|
+
this.privileges = helpers_internal_1.Box.fromArray(props.privileges ?? [], { omitEmpty: false });
|
|
70
|
+
new database_query_1.DatabaseQuery(this, 'Resource', {
|
|
71
|
+
...props,
|
|
72
|
+
handler: handler_name_1.HandlerName.UserTablePrivileges,
|
|
73
|
+
properties: {
|
|
74
|
+
username: props.user.username,
|
|
75
|
+
tablePrivileges: this.privileges.derive(privs => Object.entries(groupPrivilegesByTable(privs))
|
|
29
76
|
.map(([tableId, tablePrivileges]) => ({
|
|
30
77
|
tableId,
|
|
31
78
|
// The first element always exists since the groupBy element is at least a singleton.
|
|
32
79
|
tableName: tablePrivileges[0].table.tableName,
|
|
33
80
|
actions: unifyTableActions(tablePrivileges).map(action => table_1.TableAction[action]),
|
|
34
|
-
})),
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
81
|
+
}))),
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Grant this user additional privileges.
|
|
87
|
+
*/
|
|
88
|
+
addPrivileges(table, ...actions) {
|
|
89
|
+
this.privileges.push({ table, actions });
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
return UserTablePrivileges = _classThis;
|
|
93
|
+
})();
|
|
46
94
|
exports.UserTablePrivileges = UserTablePrivileges;
|
|
47
95
|
const unifyTableActions = (tablePrivileges) => {
|
|
48
96
|
const set = new Set(tablePrivileges.flatMap(x => x.actions));
|
|
@@ -65,4 +113,4 @@ const groupPrivilegesByTable = (privileges) => {
|
|
|
65
113
|
};
|
|
66
114
|
}, {});
|
|
67
115
|
};
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmlsZWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByaXZpbGVnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDRFQUE4RTtBQUM5RSwyQ0FBdUM7QUFHdkMsb0NBQXVDO0FBRXZDLHFEQUFpRDtBQUNqRCx5RUFBcUU7QUFtQ3JFOzs7Ozs7O0dBT0c7SUFFVSxtQkFBbUI7NEJBRC9CLG1DQUFnQjs7OztzQkFDd0Isc0JBQVM7bUNBQWpCLFNBQVEsV0FBUzs7OztZQUFsRCw2S0FnQ0M7OztZQWhDWSx1REFBbUI7O1FBQ3RCLFVBQVUsQ0FBNEI7UUFFOUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtZQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRWpCLElBQUksQ0FBQyxVQUFVLEdBQUcsc0JBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUU5RSxJQUFJLDhCQUFhLENBQWtDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ25FLEdBQUcsS0FBSztnQkFDUixPQUFPLEVBQUUsMEJBQVcsQ0FBQyxtQkFBbUI7Z0JBQ3hDLFVBQVUsRUFBRTtvQkFDVixRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRO29CQUM3QixlQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDOUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzt5QkFDMUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3BDLE9BQU87d0JBQ1AscUZBQXFGO3dCQUNyRixTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBRSxDQUFDLEtBQUssQ0FBQyxTQUFTO3dCQUM5QyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsbUJBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDL0UsQ0FBQyxDQUFDLENBQ0M7aUJBQ1Q7YUFDRixDQUFDLENBQUM7U0FDSjtRQUVEOztXQUVHO1FBQ0gsYUFBYSxDQUFDLEtBQWEsRUFBRSxHQUFHLE9BQXNCO1lBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDMUM7Ozs7QUEvQlUsa0RBQW1CO0FBa0NoQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsZUFBaUMsRUFBaUIsRUFBRTtJQUM3RSxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBYyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFMUUsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLG1CQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPLENBQUMsbUJBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLG1CQUFXLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxtQkFBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDL0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxtQkFBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLHNCQUFzQixHQUFHLENBQUMsVUFBcUMsRUFBb0MsRUFBRTtJQUN6RyxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUU7UUFDOUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQztRQUM1QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5QixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9DLE9BQU87WUFDTCxHQUFHLE9BQU87WUFDVixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxlQUFlLEVBQUUsU0FBUyxDQUFDO1NBQzNDLENBQUM7SUFDSixDQUFDLEVBQUUsRUFBc0MsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSUFycmF5Qm94IH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBCb3gsIG5vQm94U3RhY2tUcmFjZXMgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBEYXRhYmFzZU9wdGlvbnMgfSBmcm9tICcuLi9kYXRhYmFzZS1vcHRpb25zJztcbmltcG9ydCB0eXBlIHsgSVRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuaW1wb3J0IHsgVGFibGVBY3Rpb24gfSBmcm9tICcuLi90YWJsZSc7XG5pbXBvcnQgdHlwZSB7IElVc2VyIH0gZnJvbSAnLi4vdXNlcic7XG5pbXBvcnQgeyBEYXRhYmFzZVF1ZXJ5IH0gZnJvbSAnLi9kYXRhYmFzZS1xdWVyeSc7XG5pbXBvcnQgeyBIYW5kbGVyTmFtZSB9IGZyb20gJy4vZGF0YWJhc2UtcXVlcnktcHJvdmlkZXIvaGFuZGxlci1uYW1lJztcbmltcG9ydCB0eXBlIHsgVXNlclRhYmxlUHJpdmlsZWdlc0hhbmRsZXJQcm9wcyB9IGZyb20gJy4vaGFuZGxlci1wcm9wcyc7XG5cbi8qKlxuICogVGhlIFJlZHNoaWZ0IHRhYmxlIGFuZCBhY3Rpb24gdGhhdCBtYWtlIHVwIGEgcHJpdmlsZWdlIHRoYXQgY2FuIGJlIGdyYW50ZWQgdG8gYSBSZWRzaGlmdCB1c2VyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUHJpdmlsZWdlIHtcbiAgLyoqXG4gICAqIFRoZSB0YWJsZSBvbiB3aGljaCBwcml2aWxlZ2VzIHdpbGwgYmUgZ3JhbnRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlOiBJVGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSBhY3Rpb25zIHRoYXQgd2lsbCBiZSBncmFudGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uczogVGFibGVBY3Rpb25bXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBzcGVjaWZ5aW5nIHByaXZpbGVnZXMgZ3JhbnRlZCB0byBhIFJlZHNoaWZ0IHVzZXIgb24gUmVkc2hpZnQgdGFibGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJUYWJsZVByaXZpbGVnZXNQcm9wcyBleHRlbmRzIERhdGFiYXNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdXNlciB0byB3aGljaCBwcml2aWxlZ2VzIHdpbGwgYmUgZ3JhbnRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXI6IElVc2VyO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpdmlsZWdlcyB0byBiZSBncmFudGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbXSAtIHVzZSBgYWRkUHJpdmlsZWdlc2AgdG8gZ3JhbnQgcHJpdmlsZWdlcyBhZnRlciBjb25zdHJ1Y3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IHByaXZpbGVnZXM/OiBUYWJsZVByaXZpbGVnZVtdO1xufVxuXG4vKipcbiAqIFByaXZpbGVnZXMgZ3JhbnRlZCB0byBhIFJlZHNoaWZ0IHVzZXIgb24gUmVkc2hpZnQgdGFibGVzLlxuICpcbiAqIFRoaXMgY29uc3RydWN0IGlzIGxvY2F0ZWQgaW4gdGhlIGBwcml2YXRlYCBkaXJlY3RvcnkgdG8gZW5zdXJlIHRoYXQgaXQgaXMgbm90IGV4cG9ydGVkIGZvciBkaXJlY3QgcHVibGljIHVzZS4gVGhpc1xuICogbWVhbnMgdGhhdCB1c2VyIHByaXZpbGVnZXMgbXVzdCBiZSBtYW5hZ2VkIHRocm91Z2ggdGhlIGBUYWJsZS5ncmFudGAgbWV0aG9kIG9yIHRoZSBgVXNlci5hZGRUYWJsZVByaXZpbGVnZXNgXG4gKiBtZXRob2QuIFRodXMsIGVhY2ggYFVzZXJgIHdpbGwgaGF2ZSBhdCBtb3N0IG9uZSBgVXNlclRhYmxlUHJpdmlsZWdlc2AgY29uc3RydWN0IHRvIG1hbmFnZSBpdHMgcHJpdmlsZWdlcy4gRm9yIGRldGFpbHNcbiAqIG9uIHdoeSB0aGlzIGlzIGEgR29vZCBUaGluZywgc2VlIHRoZSBSRUFETUUsIHVuZGVyIFwiR3JhbnRpbmcgUHJpdmlsZWdlc1wiLlxuICovXG5Abm9Cb3hTdGFja1RyYWNlc1xuZXhwb3J0IGNsYXNzIFVzZXJUYWJsZVByaXZpbGVnZXMgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIHByaXZpbGVnZXM6IElBcnJheUJveDxUYWJsZVByaXZpbGVnZT47XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFVzZXJUYWJsZVByaXZpbGVnZXNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnByaXZpbGVnZXMgPSBCb3guZnJvbUFycmF5KHByb3BzLnByaXZpbGVnZXMgPz8gW10sIHsgb21pdEVtcHR5OiBmYWxzZSB9KTtcblxuICAgIG5ldyBEYXRhYmFzZVF1ZXJ5PFVzZXJUYWJsZVByaXZpbGVnZXNIYW5kbGVyUHJvcHM+KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgaGFuZGxlcjogSGFuZGxlck5hbWUuVXNlclRhYmxlUHJpdmlsZWdlcyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgdXNlcm5hbWU6IHByb3BzLnVzZXIudXNlcm5hbWUsXG4gICAgICAgIHRhYmxlUHJpdmlsZWdlczogdGhpcy5wcml2aWxlZ2VzLmRlcml2ZShwcml2cyA9PlxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGdyb3VwUHJpdmlsZWdlc0J5VGFibGUocHJpdnMpKVxuICAgICAgICAgICAgLm1hcCgoW3RhYmxlSWQsIHRhYmxlUHJpdmlsZWdlc10pID0+ICh7XG4gICAgICAgICAgICAgIHRhYmxlSWQsXG4gICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBlbGVtZW50IGFsd2F5cyBleGlzdHMgc2luY2UgdGhlIGdyb3VwQnkgZWxlbWVudCBpcyBhdCBsZWFzdCBhIHNpbmdsZXRvbi5cbiAgICAgICAgICAgICAgdGFibGVOYW1lOiB0YWJsZVByaXZpbGVnZXNbMF0hLnRhYmxlLnRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgYWN0aW9uczogdW5pZnlUYWJsZUFjdGlvbnModGFibGVQcml2aWxlZ2VzKS5tYXAoYWN0aW9uID0+IFRhYmxlQWN0aW9uW2FjdGlvbl0pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICApIGFzIGFueSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgdGhpcyB1c2VyIGFkZGl0aW9uYWwgcHJpdmlsZWdlcy5cbiAgICovXG4gIGFkZFByaXZpbGVnZXModGFibGU6IElUYWJsZSwgLi4uYWN0aW9uczogVGFibGVBY3Rpb25bXSk6IHZvaWQge1xuICAgIHRoaXMucHJpdmlsZWdlcy5wdXNoKHsgdGFibGUsIGFjdGlvbnMgfSk7XG4gIH1cbn1cblxuY29uc3QgdW5pZnlUYWJsZUFjdGlvbnMgPSAodGFibGVQcml2aWxlZ2VzOiBUYWJsZVByaXZpbGVnZVtdKTogVGFibGVBY3Rpb25bXSA9PiB7XG4gIGNvbnN0IHNldCA9IG5ldyBTZXQ8VGFibGVBY3Rpb24+KHRhYmxlUHJpdmlsZWdlcy5mbGF0TWFwKHggPT4geC5hY3Rpb25zKSk7XG5cbiAgaWYgKHNldC5oYXMoVGFibGVBY3Rpb24uQUxMKSkge1xuICAgIHJldHVybiBbVGFibGVBY3Rpb24uQUxMXTtcbiAgfVxuXG4gIGlmIChzZXQuaGFzKFRhYmxlQWN0aW9uLlVQREFURSkgfHwgc2V0LmhhcyhUYWJsZUFjdGlvbi5ERUxFVEUpKSB7XG4gICAgc2V0LmFkZChUYWJsZUFjdGlvbi5TRUxFQ1QpO1xuICB9XG5cbiAgcmV0dXJuIFsuLi5zZXRdO1xufTtcblxuY29uc3QgZ3JvdXBQcml2aWxlZ2VzQnlUYWJsZSA9IChwcml2aWxlZ2VzOiByZWFkb25seSBUYWJsZVByaXZpbGVnZVtdKTogUmVjb3JkPHN0cmluZywgVGFibGVQcml2aWxlZ2VbXT4gPT4ge1xuICByZXR1cm4gcHJpdmlsZWdlcy5yZWR1Y2UoKGdyb3VwZWQsIHByaXZpbGVnZSkgPT4ge1xuICAgIGNvbnN0IHsgdGFibGUgfSA9IHByaXZpbGVnZTtcbiAgICBjb25zdCB0YWJsZUlkID0gdGFibGUubm9kZS5pZDtcbiAgICBjb25zdCB0YWJsZVByaXZpbGVnZXMgPSBncm91cGVkW3RhYmxlSWRdID8/IFtdO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5ncm91cGVkLFxuICAgICAgW3RhYmxlSWRdOiBbLi4udGFibGVQcml2aWxlZ2VzLCBwcml2aWxlZ2VdLFxuICAgIH07XG4gIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIFRhYmxlUHJpdmlsZWdlW10+KTtcbn07XG4iXX0=
|
package/lib/subnet-group.js
CHANGED
|
@@ -61,7 +61,7 @@ let ClusterSubnetGroup = (() => {
|
|
|
61
61
|
ClusterSubnetGroup = _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-redshift-alpha.ClusterSubnetGroup", version: "2.
|
|
64
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-redshift-alpha.ClusterSubnetGroup", version: "2.255.0-alpha.0" };
|
|
65
65
|
/** Uniquely identifies this class. */
|
|
66
66
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-redshift-alpha.ClusterSubnetGroup';
|
|
67
67
|
/**
|
package/lib/table.js
CHANGED
|
@@ -55,7 +55,7 @@ class TableBase extends constructs_1.Construct {
|
|
|
55
55
|
* A table in a Redshift cluster.
|
|
56
56
|
*/
|
|
57
57
|
class Table extends TableBase {
|
|
58
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-redshift-alpha.Table", version: "2.
|
|
58
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-redshift-alpha.Table", version: "2.255.0-alpha.0" };
|
|
59
59
|
/**
|
|
60
60
|
* Specify a Redshift table using a table name and schema that already exists.
|
|
61
61
|
*/
|
package/lib/user.js
CHANGED
|
@@ -30,7 +30,7 @@ class UserBase extends constructs_1.Construct {
|
|
|
30
30
|
* A user in a Redshift cluster.
|
|
31
31
|
*/
|
|
32
32
|
class User extends UserBase {
|
|
33
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-redshift-alpha.User", version: "2.
|
|
33
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-redshift-alpha.User", version: "2.255.0-alpha.0" };
|
|
34
34
|
/**
|
|
35
35
|
* Specify a Redshift user using credentials that already exist.
|
|
36
36
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/aws-redshift-alpha",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.255.0-alpha.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The CDK Construct Library for AWS::Redshift",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -85,22 +85,22 @@
|
|
|
85
85
|
},
|
|
86
86
|
"license": "Apache-2.0",
|
|
87
87
|
"devDependencies": {
|
|
88
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
88
|
+
"@aws-cdk/cdk-build-tools": "2.255.0-alpha.0",
|
|
89
89
|
"@aws-cdk/integ-runner": "^2.197.1",
|
|
90
|
-
"@aws-cdk/pkglint": "2.
|
|
91
|
-
"@aws-cdk/custom-resource-handlers": "2.
|
|
90
|
+
"@aws-cdk/pkglint": "2.255.0-alpha.0",
|
|
91
|
+
"@aws-cdk/custom-resource-handlers": "2.255.0-alpha.0",
|
|
92
92
|
"@aws-sdk/client-redshift": "3.632.0",
|
|
93
93
|
"@aws-sdk/client-redshift-data": "3.632.0",
|
|
94
94
|
"@aws-sdk/client-secrets-manager": "3.632.0",
|
|
95
95
|
"@types/jest": "^29.5.14",
|
|
96
|
-
"aws-cdk-lib": "2.
|
|
96
|
+
"aws-cdk-lib": "2.255.0",
|
|
97
97
|
"constructs": "^10.5.0",
|
|
98
|
-
"@aws-cdk/integ-tests-alpha": "2.
|
|
98
|
+
"@aws-cdk/integ-tests-alpha": "2.255.0-alpha.0"
|
|
99
99
|
},
|
|
100
100
|
"dependencies": {},
|
|
101
101
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
102
102
|
"peerDependencies": {
|
|
103
|
-
"aws-cdk-lib": "^2.
|
|
103
|
+
"aws-cdk-lib": "^2.255.0",
|
|
104
104
|
"constructs": "^10.5.0"
|
|
105
105
|
},
|
|
106
106
|
"engines": {
|