@aws-cdk/aws-elasticache-alpha 2.233.0-alpha.0 → 2.234.1-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 +32 -3
- package/.jsii.tabl.json.gz +0 -0
- package/LICENSE +1 -1
- package/NOTICE +1 -1
- package/lib/iam-user.js +1 -1
- package/lib/no-password-user.js +1 -1
- package/lib/password-user.js +1 -1
- package/lib/serverless-cache-base.js +1 -1
- package/lib/serverless-cache.js +6 -4
- package/lib/user-base.js +2 -2
- package/lib/user-group.js +5 -5
- package/package.json +6 -6
package/.jsii
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"url": "https://aws.amazon.com"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"aws-cdk-lib": "^2.
|
|
11
|
+
"aws-cdk-lib": "^2.234.1",
|
|
12
12
|
"constructs": "^10.0.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencyClosure": {
|
|
@@ -642,6 +642,19 @@
|
|
|
642
642
|
}
|
|
643
643
|
}
|
|
644
644
|
},
|
|
645
|
+
"aws-cdk-lib.aws_cases": {
|
|
646
|
+
"targets": {
|
|
647
|
+
"dotnet": {
|
|
648
|
+
"namespace": "Amazon.CDK.AWS.Cases"
|
|
649
|
+
},
|
|
650
|
+
"java": {
|
|
651
|
+
"package": "software.amazon.awscdk.services.cases"
|
|
652
|
+
},
|
|
653
|
+
"python": {
|
|
654
|
+
"module": "aws_cdk.aws_cases"
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
},
|
|
645
658
|
"aws-cdk-lib.aws_cassandra": {
|
|
646
659
|
"targets": {
|
|
647
660
|
"dotnet": {
|
|
@@ -4606,6 +4619,22 @@
|
|
|
4606
4619
|
}
|
|
4607
4620
|
}
|
|
4608
4621
|
},
|
|
4622
|
+
"aws-cdk-lib.interfaces.aws_cases": {
|
|
4623
|
+
"targets": {
|
|
4624
|
+
"dotnet": {
|
|
4625
|
+
"namespace": "Amazon.CDK.Interfaces.Cases"
|
|
4626
|
+
},
|
|
4627
|
+
"go": {
|
|
4628
|
+
"packageName": "interfacesawscases"
|
|
4629
|
+
},
|
|
4630
|
+
"java": {
|
|
4631
|
+
"package": "software.amazon.awscdk.interfaces.cases"
|
|
4632
|
+
},
|
|
4633
|
+
"python": {
|
|
4634
|
+
"module": "aws_cdk.interfaces.aws_cases"
|
|
4635
|
+
}
|
|
4636
|
+
}
|
|
4637
|
+
},
|
|
4609
4638
|
"aws-cdk-lib.interfaces.aws_cassandra": {
|
|
4610
4639
|
"targets": {
|
|
4611
4640
|
"dotnet": {
|
|
@@ -8441,7 +8470,7 @@
|
|
|
8441
8470
|
"stability": "experimental"
|
|
8442
8471
|
},
|
|
8443
8472
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
8444
|
-
"jsiiVersion": "5.9.
|
|
8473
|
+
"jsiiVersion": "5.9.22 (build b81c634)",
|
|
8445
8474
|
"keywords": [
|
|
8446
8475
|
"aws",
|
|
8447
8476
|
"cdk",
|
|
@@ -13162,6 +13191,6 @@
|
|
|
13162
13191
|
"symbolId": "lib/user-group:UserGroupProps"
|
|
13163
13192
|
}
|
|
13164
13193
|
},
|
|
13165
|
-
"version": "2.
|
|
13194
|
+
"version": "2.234.1-alpha.0",
|
|
13166
13195
|
"fingerprint": "**********"
|
|
13167
13196
|
}
|
package/.jsii.tabl.json.gz
CHANGED
|
Binary file
|
package/LICENSE
CHANGED
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
|
187
187
|
identification within third-party archives.
|
|
188
188
|
|
|
189
|
-
Copyright 2018-
|
|
189
|
+
Copyright 2018-2026 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
190
190
|
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
192
|
you may not use this file except in compliance with the License.
|
package/NOTICE
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
AWS Cloud Development Kit (AWS CDK)
|
|
2
|
-
Copyright 2018-
|
|
2
|
+
Copyright 2018-2026 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
package/lib/iam-user.js
CHANGED
|
@@ -71,7 +71,7 @@ let IamUser = (() => {
|
|
|
71
71
|
IamUser = _classThis = _classDescriptor.value;
|
|
72
72
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
73
73
|
}
|
|
74
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.IamUser", version: "2.
|
|
74
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.IamUser", version: "2.234.1-alpha.0" };
|
|
75
75
|
/**
|
|
76
76
|
* Uniquely identifies this class.
|
|
77
77
|
*/
|
package/lib/no-password-user.js
CHANGED
|
@@ -67,7 +67,7 @@ let NoPasswordUser = (() => {
|
|
|
67
67
|
NoPasswordUser = _classThis = _classDescriptor.value;
|
|
68
68
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
69
69
|
}
|
|
70
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.NoPasswordUser", version: "2.
|
|
70
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.NoPasswordUser", version: "2.234.1-alpha.0" };
|
|
71
71
|
/**
|
|
72
72
|
* Uniquely identifies this class.
|
|
73
73
|
*/
|
package/lib/password-user.js
CHANGED
|
@@ -63,7 +63,7 @@ let PasswordUser = (() => {
|
|
|
63
63
|
PasswordUser = _classThis = _classDescriptor.value;
|
|
64
64
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
65
65
|
}
|
|
66
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.PasswordUser", version: "2.
|
|
66
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.PasswordUser", version: "2.234.1-alpha.0" };
|
|
67
67
|
/**
|
|
68
68
|
* Uniquely identifies this class.
|
|
69
69
|
*/
|
|
@@ -45,7 +45,7 @@ var CacheEngine;
|
|
|
45
45
|
* Base class for ServerlessCache constructs
|
|
46
46
|
*/
|
|
47
47
|
class ServerlessCacheBase extends core_1.Resource {
|
|
48
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.ServerlessCacheBase", version: "2.
|
|
48
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.ServerlessCacheBase", version: "2.234.1-alpha.0" };
|
|
49
49
|
/**
|
|
50
50
|
* Grant connect permissions to the cache
|
|
51
51
|
*
|
package/lib/serverless-cache.js
CHANGED
|
@@ -90,7 +90,7 @@ let ServerlessCache = (() => {
|
|
|
90
90
|
ServerlessCache = _classThis = _classDescriptor.value;
|
|
91
91
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
92
92
|
}
|
|
93
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.ServerlessCache", version: "2.
|
|
93
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.ServerlessCache", version: "2.234.1-alpha.0" };
|
|
94
94
|
/**
|
|
95
95
|
* Uniquely identifies this class.
|
|
96
96
|
*/
|
|
@@ -275,7 +275,9 @@ let ServerlessCache = (() => {
|
|
|
275
275
|
// Enhanced CDK Analytics Telemetry
|
|
276
276
|
(0, metadata_resource_1.addConstructMetadata)(this, props);
|
|
277
277
|
this.engine = props.engine ?? serverless_cache_base_1.CacheEngine.VALKEY_LATEST;
|
|
278
|
-
this.serverlessCacheName = props.serverlessCacheName ?? core_1.Lazy.string({
|
|
278
|
+
this.serverlessCacheName = props.serverlessCacheName ?? core_1.Lazy.string({
|
|
279
|
+
produce: () => core_1.Names.uniqueResourceName(this, { maxLength: 40 }),
|
|
280
|
+
});
|
|
279
281
|
this.kmsKey = props.kmsKey;
|
|
280
282
|
this.vpc = props.vpc;
|
|
281
283
|
this.userGroup = props.userGroup;
|
|
@@ -319,7 +321,7 @@ let ServerlessCache = (() => {
|
|
|
319
321
|
this.serverlessCacheStatus = resource.attrStatus;
|
|
320
322
|
this.connections = new ec2.Connections({
|
|
321
323
|
securityGroups: this.securityGroups,
|
|
322
|
-
defaultPort: ec2.Port.tcp(core_1.
|
|
324
|
+
defaultPort: ec2.Port.tcp(core_1.Token.asNumber(this.serverlessCacheEndpointPort)),
|
|
323
325
|
});
|
|
324
326
|
Object.defineProperty(this, ELASTICACHE_SERVERLESSCACHE_SYMBOL, { value: true });
|
|
325
327
|
}
|
|
@@ -519,4 +521,4 @@ let ServerlessCache = (() => {
|
|
|
519
521
|
return ServerlessCache = _classThis;
|
|
520
522
|
})();
|
|
521
523
|
exports.ServerlessCache = ServerlessCache;
|
|
522
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVybGVzcy1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlcnZlcmxlc3MtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTJDO0FBQzNDLGlFQUErRTtBQUcvRSwyQ0FBK0Y7QUFDL0YsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUUxRSxxQ0FBc0M7QUFDdEMsbUVBQTZGO0FBRzdGLE1BQU0sa0NBQWtDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0FBRWxHOztHQUVHO0FBQ0gsSUFBSyxlQUtKO0FBTEQsV0FBSyxlQUFlO0lBQ2xCOztPQUVHO0lBQ0gsbUNBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQUxJLGVBQWUsS0FBZixlQUFlLFFBS25CO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUM5Qjs7R0FFRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0FBQ2pDOztHQUVHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUM7QUFDbkM7O0dBRUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQztBQWdNdkM7Ozs7R0FJRztJQUVVLGVBQWU7NEJBRDNCLG9DQUFrQjs7OztzQkFDa0IsMkNBQW1COytCQUEzQixTQUFRLFdBQW1COzs7O1lBQXhELDZLQXVjQzs7Ozs7UUF0Y0M7O1dBRUc7UUFDSSxNQUFNLENBQVUscUJBQXFCLEdBQVcsNkNBQTZDLENBQUM7UUFFckc7O1dBRUc7UUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBTTtZQUNwQyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxrQ0FBa0MsSUFBSSxDQUFDLENBQUM7U0FDekY7UUFFRDs7Ozs7O1dBTUc7UUFDSSxNQUFNLENBQUMs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T0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7U0FDOUQ7O1lBdGNVLHVEQUFlOzs7OztBQUFmLDBDQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgQ2ZuU2VydmVybGVzc0NhY2hlLCBDZm5Vc2VyR3JvdXAgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2FjaGUnO1xuaW1wb3J0ICogYXMgZXZlbnRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHsgQXJuRm9ybWF0LCBTdGFjaywgU2l6ZSwgTGF6eSwgVmFsaWRhdGlvbkVycm9yLCBOYW1lcywgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgVXNlckVuZ2luZSB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IElTZXJ2ZXJsZXNzQ2FjaGUsIFNlcnZlcmxlc3NDYWNoZUJhc2UsIENhY2hlRW5naW5lIH0gZnJvbSAnLi9zZXJ2ZXJsZXNzLWNhY2hlLWJhc2UnO1xuaW1wb3J0IHsgSVVzZXJHcm91cCB9IGZyb20gJy4vdXNlci1ncm91cCc7XG5cbmNvbnN0IEVMQVNUSUNBQ0hFX1NFUlZFUkxFU1NDQUNIRV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtZWxhc3RpY2FjaGUuU2VydmVybGVzc0NhY2hlJyk7XG5cbi8qKlxuICogVW5pdCB0eXBlcyBmb3IgZGF0YSBzdG9yYWdlIHVzYWdlIGxpbWl0c1xuICovXG5lbnVtIERhdGFTdG9yYWdlVW5pdCB7XG4gIC8qKlxuICAgKiBHaWdhYnl0ZXNcbiAgICovXG4gIEdJR0FCWVRFUyA9ICdHQicsXG59XG5cbi8qKlxuICogTWluaW11bSBkYXRhIHN0b3JhZ2Ugc2l6ZSBpbiBHQiBmb3IgU2VydmVybGVzc0NhY2hlXG4gKi9cbmNvbnN0IERBVEFfU1RPUkFHRV9NSU5fR0IgPSAxO1xuLyoqXG4gKiBNYXhpbXVtIGRhdGEgc3RvcmFnZSBzaXplIGluIEdCIGZvciBTZXJ2ZXJsZXNzQ2FjaGVcbiAqL1xuY29uc3QgREFUQV9TVE9SQUdFX01BWF9HQiA9IDUwMDA7XG4vKipcbiAqIE1pbmltdW0gcmVxdWVzdCByYXRlIGxpbWl0IGluIEVDUFVzIHBlciBzZWNvbmQgZm9yIFNlcnZlcmxlc3NDYWNoZVxuICovXG5jb25zdCBSRVFVRVNUX1JBVEVfTUlOX0VDUFUgPSAxMDAwO1xuLyoqXG4gKiBNYXhpbXVtIHJlcXVlc3QgcmF0ZSBsaW1pdCBpbiBFQ1BVcyBwZXIgc2Vjb25kIGZvciBTZXJ2ZXJsZXNzQ2FjaGVcbiAqL1xuY29uc3QgUkVRVUVTVF9SQVRFX01BWF9FQ1BVID0gMTUwMDAwMDA7XG5cbi8qKlxuICogVXNhZ2UgbGltaXRzIGNvbmZpZ3VyYXRpb24gZm9yIFNlcnZlcmxlc3NDYWNoZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlVXNhZ2VMaW1pdHNQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBNaW5pbXVtIGRhdGEgc3RvcmFnZSBzaXplICgxIEdCKVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG1pbmltdW0gbGltaXRcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFTdG9yYWdlTWluaW11bVNpemU/OiBTaXplO1xuICAvKipcbiAgICogTWF4aW11bSBkYXRhIHN0b3JhZ2Ugc2l6ZSAoNTAwMCBHQilcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBtYXhpbXVtIGxpbWl0XG4gICAqL1xuICByZWFkb25seSBkYXRhU3RvcmFnZU1heGltdW1TaXplPzogU2l6ZTtcbiAgLyoqXG4gICAqIE1pbmltdW0gcmVxdWVzdCByYXRlIGxpbWl0ICgxMDAwIEVDUFVzIHBlciBzZWNvbmQpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbWluaW11bSBsaW1pdFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdFJhdGVMaW1pdE1pbmltdW0/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBNYXhpbXVtIHJlcXVlc3QgcmF0ZSBsaW1pdCAoMTUwMDAwMDAgRUNQVXMgcGVyIHNlY29uZClcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBtYXhpbXVtIGxpbWl0XG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0UmF0ZUxpbWl0TWF4aW11bT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBCYWNrdXAgY29uZmlndXJhdGlvbiBmb3IgU2VydmVybGVzc0NhY2hlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFja3VwU2V0dGluZ3Mge1xuICAvKipcbiAgICogQXV0b21hdGVkIGRhaWx5IGJhY2t1cCBVVEMgdGltZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGF1dG9tYXRlZCBiYWNrdXBzXG4gICAqL1xuICByZWFkb25seSBiYWNrdXBUaW1lPzogZXZlbnRzLlNjaGVkdWxlO1xuICAvKipcbiAgICogTnVtYmVyIG9mIGRheXMgdG8gcmV0YWluIGJhY2t1cHMgKDEtMzUpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQmFja3VwcyBhcmUgbm90IHJldGFpbmVkXG4gICAqL1xuICByZWFkb25seSBiYWNrdXBSZXRlbnRpb25MaW1pdD86IG51bWJlcjtcbiAgLyoqXG4gICAqIE5hbWUgZm9yIHRoZSBmaW5hbCBiYWNrdXAgdGFrZW4gYmVmb3JlIGRlbGV0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZmluYWwgYmFja3VwXG4gICAqL1xuICByZWFkb25seSBiYWNrdXBOYW1lQmVmb3JlRGVsZXRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBUk5zIG9mIGJhY2t1cHMgZnJvbSB3aGljaCB0byByZXN0b3JlIGRhdGEgaW50byB0aGUgbmV3IGNhY2hlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQ3JlYXRlIGEgbmV3IGNhY2hlIHdpdGggbm8gZXhpc3RpbmcgZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgYmFja3VwQXJuc1RvUmVzdG9yZT86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlZmluaW5nIGEgU2VydmVybGVzc0NhY2hlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVybGVzc0NhY2hlUHJvcHMge1xuICAvKipcbiAgICogVGhlIGNhY2hlIGVuZ2luZSBjb21iaW5lZCB3aXRoIHRoZSB2ZXJzaW9uXG4gICAqIEVudW0gb3B0aW9uczogVkFMS0VZX0RFRkFVTFQsIFZBTEtFWV83LCBWQUxLRVlfOCwgUkVESVNfREVGQVVMVCwgTUVNQ0FDSEVEX0RFRkFVTFRcbiAgICogVGhlIGRlZmF1bHQgb3B0aW9ucyBicmluZyB0aGUgbGF0ZXN0IHZlcnNpb25zIGF2YWlsYWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgd2hlbiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IGVuZ2luZSB3b3VsZCBiZSBWYWxrZXksIGxhdGVzdCB2ZXJzaW9uIGF2YWlsYWJsZSAoVkFMS0VZX0RFRkFVTFQpXG4gICAqL1xuICByZWFkb25seSBlbmdpbmU/OiBDYWNoZUVuZ2luZTtcbiAgLyoqXG4gICAqIE5hbWUgZm9yIHRoZSBzZXJ2ZXJsZXNzIGNhY2hlXG4gICAqXG4gICAqIEBkZWZhdWx0IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG5hbWUgYnkgUmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZU5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIGZvciB0aGUgY2FjaGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBVc2FnZSBsaW1pdHMgZm9yIHRoZSBjYWNoZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHVzYWdlIGxpbWl0c1xuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVVc2FnZUxpbWl0cz86IENhY2hlVXNhZ2VMaW1pdHNQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIEJhY2t1cCBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gYmFja3VwcyBjb25maWd1cmVkXG4gICAqL1xuICByZWFkb25seSBiYWNrdXA/OiBCYWNrdXBTZXR0aW5ncztcbiAgLyoqXG4gICAqIEtNUyBrZXkgZm9yIGVuY3J5cHRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBTZXJ2aWNlIG1hbmFnZWQgZW5jcnlwdGlvbiAoQVdTIG93bmVkIEtNUyBrZXkpXG4gICAqL1xuICByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleTtcbiAgLyoqXG4gICAqIFRoZSBWUEMgdG8gcGxhY2UgdGhlIGNhY2hlIGluXG4gICAqL1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuICAvKipcbiAgICogV2hpY2ggc3VibmV0cyB0byBwbGFjZSB0aGUgY2FjaGUgaW5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBQcml2YXRlIHN1Ym5ldHMgd2l0aCBlZ3Jlc3NcbiAgICovXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXBzIGZvciB0aGUgY2FjaGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBIG5ldyBzZWN1cml0eSBncm91cCBpcyBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IGVjMi5JU2VjdXJpdHlHcm91cFtdO1xuICAvKipcbiAgICogVXNlciBncm91cCBmb3IgYWNjZXNzIGNvbnRyb2xcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB1c2VyIGdyb3VwXG4gICAqL1xuICByZWFkb25seSB1c2VyR3JvdXA/OiBJVXNlckdyb3VwO1xufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIHdoZW4gaW1wb3J0aW5nIGEgU2VydmVybGVzc0NhY2hlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVybGVzc0NhY2hlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgY2FjaGUgZW5naW5lIHVzZWQgYnkgdGhpcyBjYWNoZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGVuZ2luZSB0eXBlIGlzIHVua25vd25cbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZT86IENhY2hlRW5naW5lO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHNlcnZlcmxlc3MgY2FjaGVcbiAgICpcbiAgICogT25lIG9mIGBzZXJ2ZXJsZXNzQ2FjaGVOYW1lYCBvciBgc2VydmVybGVzc0NhY2hlQXJuYCBpcyByZXF1aXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gc2VydmVybGVzc0NhY2hlQXJuXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgc2VydmVybGVzcyBjYWNoZVxuICAgKlxuICAgKiBPbmUgb2YgYHNlcnZlcmxlc3NDYWNoZU5hbWVgIG9yIGBzZXJ2ZXJsZXNzQ2FjaGVBcm5gIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSBzZXJ2ZXJsZXNzQ2FjaGVOYW1lXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQVJOcyBvZiBiYWNrdXBzIHJlc3RvcmVkIGluIHRoZSBjYWNoZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGJhY2t1cHMgYXJlIHVua25vd25cbiAgICovXG4gIHJlYWRvbmx5IGJhY2t1cEFybnNUb1Jlc3RvcmU/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHVzZWQgZm9yIGVuY3J5cHRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBlbmNyeXB0aW9uIGtleSBpcyB1bmtub3duXG4gICAqL1xuICByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleTtcbiAgLyoqXG4gICAqIFRoZSBWUEMgdGhpcyBjYWNoZSBpcyBkZXBsb3llZCBpblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFZQQyBpcyB1bmtub3duXG4gICAqL1xuICByZWFkb25seSB2cGM/OiBlYzIuSVZwYztcbiAgLyoqXG4gICAqIFRoZSBzdWJuZXRzIHRoaXMgY2FjaGUgaXMgZGVwbG95ZWQgaW5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBzdWJuZXRzIGFyZSB1bmtub3duXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRzPzogZWMyLklTdWJuZXRbXTtcbiAgLyoqXG4gICAqIFRoZSBzZWN1cml0eSBncm91cHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY2FjaGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBzZWN1cml0eSBncm91cHMgYXJlIHVua25vd25cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG4gIC8qKlxuICAgKiBUaGUgdXNlciBncm91cCBhc3NvY2lhdGVkIHdpdGggdGhpcyBjYWNoZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZXIgZ3JvdXAgaXMgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwPzogSVVzZXJHcm91cDtcbn1cblxuLyoqXG4gKiBBIHNlcnZlcmxlc3MgRWxhc3RpQ2FjaGUgY2FjaGVcbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpFbGFzdGlDYWNoZTo6U2VydmVybGVzc0NhY2hlXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBTZXJ2ZXJsZXNzQ2FjaGUgZXh0ZW5kcyBTZXJ2ZXJsZXNzQ2FjaGVCYXNlIHtcbiAgLyoqXG4gICAqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnYXdzLWNkay1saWIuYXdzLWVsYXN0aWNhY2hlLlNlcnZlcmxlc3NDYWNoZSc7XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBgU2VydmVybGVzc0NhY2hlYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1NlcnZlcmxlc3NDYWNoZSh4OiBhbnkpOiB4IGlzIFNlcnZlcmxlc3NDYWNoZSB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mICh4KSA9PT0gJ29iamVjdCcgJiYgRUxBU1RJQ0FDSEVfU0VSVkVSTEVTU0NBQ0hFX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBzZXJ2ZXJsZXNzIGNhY2hlIGJ5IG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSBzZXJ2ZXJsZXNzQ2FjaGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBleGlzdGluZyBzZXJ2ZXJsZXNzIGNhY2hlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TZXJ2ZXJsZXNzQ2FjaGVOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHNlcnZlcmxlc3NDYWNoZU5hbWU6IHN0cmluZyk6IElTZXJ2ZXJsZXNzQ2FjaGUge1xuICAgIHJldHVybiBTZXJ2ZXJsZXNzQ2FjaGUuZnJvbVNlcnZlcmxlc3NDYWNoZUF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHNlcnZlcmxlc3NDYWNoZU5hbWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHNlcnZlcmxlc3MgY2FjaGUgYnkgQVJOXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gc2VydmVybGVzc0NhY2hlQXJuIFRoZSBBUk4gb2YgdGhlIGV4aXN0aW5nIHNlcnZlcmxlc3MgY2FjaGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVNlcnZlcmxlc3NDYWNoZUFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBzZXJ2ZXJsZXNzQ2FjaGVBcm46IHN0cmluZyk6IElTZXJ2ZXJsZXNzQ2FjaGUge1xuICAgIHJldHVybiBTZXJ2ZXJsZXNzQ2FjaGUuZnJvbVNlcnZlcmxlc3NDYWNoZUF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHNlcnZlcmxlc3NDYWNoZUFybiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3Rpbmcgc2VydmVybGVzcyBjYWNoZSB1c2luZyBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gYXR0cnMgQSBgU2VydmVybGVzc0NhY2hlQXR0cmlidXRlc2Agb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TZXJ2ZXJsZXNzQ2FjaGVBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBTZXJ2ZXJsZXNzQ2FjaGVBdHRyaWJ1dGVzKTogSVNlcnZlcmxlc3NDYWNoZSB7XG4gICAgbGV0IG5hbWU6IHN0cmluZztcbiAgICBsZXQgYXJuOiBzdHJpbmc7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG5cbiAgICBpZiAoYXR0cnMuc2VydmVybGVzc0NhY2hlQXJuICYmIGF0dHJzLnNlcnZlcmxlc3NDYWNoZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ09ubHkgb25lIG9mIHNlcnZlcmxlc3NDYWNoZUFybiBvciBzZXJ2ZXJsZXNzQ2FjaGVOYW1lIGNhbiBiZSBwcm92aWRlZC4nLCBzY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKGF0dHJzLnNlcnZlcmxlc3NDYWNoZUFybikge1xuICAgICAgYXJuID0gYXR0cnMuc2VydmVybGVzc0NhY2hlQXJuO1xuICAgICAgY29uc3QgZXh0cmFjdGVkU2VydmVybGVzc0NhY2hlTmFtZSA9IHN0YWNrLnNwbGl0QXJuKGF0dHJzLnNlcnZlcmxlc3NDYWNoZUFybiwgQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpLnJlc291cmNlTmFtZTtcbiAgICAgIGlmICghZXh0cmFjdGVkU2VydmVybGVzc0NhY2hlTmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdVbmFibGUgdG8gZXh0cmFjdCBzZXJ2ZXJsZXNzIGNhY2hlIG5hbWUgZnJvbSBBUk4uJywgc2NvcGUpO1xuICAgICAgfVxuICAgICAgbmFtZSA9IGV4dHJhY3RlZFNlcnZlcmxlc3NDYWNoZU5hbWU7XG4gICAgfSBlbHNlIGlmIChhdHRycy5zZXJ2ZXJsZXNzQ2FjaGVOYW1lKSB7XG4gICAgICBuYW1lID0gYXR0cnMuc2VydmVybGVzc0NhY2hlTmFtZTtcbiAgICAgIGFybiA9IHN0YWNrLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdlbGFzdGljYWNoZScsXG4gICAgICAgIHJlc291cmNlOiAnc2VydmVybGVzc2NhY2hlJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBhdHRycy5zZXJ2ZXJsZXNzQ2FjaGVOYW1lLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ09uZSBvZiBzZXJ2ZXJsZXNzQ2FjaGVOYW1lIG9yIHNlcnZlcmxlc3NDYWNoZUFybiBpcyByZXF1aXJlZC4nLCBzY29wZSk7XG4gICAgfVxuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgU2VydmVybGVzc0NhY2hlQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lID0gYXR0cnMuZW5naW5lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZU5hbWU6IHN0cmluZztcbiAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVBcm46IHN0cmluZztcbiAgICAgIHB1YmxpYyByZWFkb25seSBiYWNrdXBBcm5zVG9SZXN0b3JlID0gYXR0cnMuYmFja3VwQXJuc1RvUmVzdG9yZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBrbXNLZXkgPSBhdHRycy5rbXNLZXk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdnBjID0gYXR0cnMudnBjO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldHMgPSBhdHRycy5zdWJuZXRzO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzID0gYXR0cnMuc2VjdXJpdHlHcm91cHM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXNlckdyb3VwID0gYXR0cnMudXNlckdyb3VwO1xuXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcblxuICAgICAgY29uc3RydWN0b3Ioc2VydmVybGVzc0NhY2hlQXJuOiBzdHJpbmcsIHNlcnZlcmxlc3NDYWNoZU5hbWU6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgICAgICB0aGlzLnNlcnZlcmxlc3NDYWNoZUFybiA9IHNlcnZlcmxlc3NDYWNoZUFybjtcbiAgICAgICAgdGhpcy5zZXJ2ZXJsZXNzQ2FjaGVOYW1lID0gc2VydmVybGVzc0NhY2hlTmFtZTtcblxuICAgICAgICBpZiAodGhpcy5lbmdpbmUpIHtcbiAgICAgICAgICBsZXQgZGVmYXVsdFBvcnQ6IGVjMi5Qb3J0O1xuICAgICAgICAgIHN3aXRjaCAodGhpcy5lbmdpbmUpIHtcbiAgICAgICAgICAgIGNhc2UgQ2FjaGVFbmdpbmUuVkFMS0VZX0xBVEVTVDpcbiAgICAgICAgICAgIGNhc2UgQ2FjaGVFbmdpbmUuVkFMS0VZXzc6XG4gICAgICAgICAgICBjYXNlIENhY2hlRW5naW5lLlZBTEtFWV84OlxuICAgICAgICAgICAgY2FzZSBDYWNoZUVuZ2luZS5SRURJU19MQVRFU1Q6XG4gICAgICAgICAgICBjYXNlIENhY2hlRW5naW5lLlJFRElTXzc6XG4gICAgICAgICAgICAgIC8vIERvY3VtZW50IHNob3dpbmcgdGhlIGRlZmF1bHQgcG9ydFxuICAgICAgICAgICAgICAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRWxhc3RpQ2FjaGUvbGF0ZXN0L2RnL3NldC11cC5odG1sI2VsYXN0aWNhY2hlLWluc3RhbGwtZ3JhbnQtYWNjZXNzLVZQTlxuICAgICAgICAgICAgICBkZWZhdWx0UG9ydCA9IGVjMi5Qb3J0LnRjcCg2Mzc5KTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENhY2hlRW5naW5lLk1FTUNBQ0hFRF9MQVRFU1Q6XG4gICAgICAgICAgICAgIC8vIERvY3VtZW50IHNob3dpbmcgdGhlIGRlZmF1bHQgcG9ydFxuICAgICAgICAgICAgICAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRWxhc3RpQ2FjaGUvbGF0ZXN0L2RnL3NldC11cC5odG1sI2VsYXN0aWNhY2hlLWluc3RhbGwtZ3JhbnQtYWNjZXNzLVZQTlxuICAgICAgICAgICAgICBkZWZhdWx0UG9ydCA9IGVjMi5Qb3J0LnRjcCgxMTIxMSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihgVW5zdXBwb3J0ZWQgY2FjaGUgZW5naW5lOiAke3RoaXMuZW5naW5lfWAsIHNjb3BlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gbmV3IGVjMi5Db25uZWN0aW9ucyh7XG4gICAgICAgICAgICBzZWN1cml0eUdyb3VwczogdGhpcy5zZWN1cml0eUdyb3VwcyxcbiAgICAgICAgICAgIGRlZmF1bHRQb3J0OiBkZWZhdWx0UG9ydCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gbmV3IGVjMi5Db25uZWN0aW9ucyh7XG4gICAgICAgICAgICBzZWN1cml0eUdyb3VwczogdGhpcy5zZWN1cml0eUdyb3VwcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KGFybiwgbmFtZSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lPzogQ2FjaGVFbmdpbmU7XG4gIHB1YmxpYyByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBiYWNrdXBBcm5zVG9SZXN0b3JlPzogc3RyaW5nW107XG4gIHB1YmxpYyByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleTtcbiAgcHVibGljIHJlYWRvbmx5IHZwYz86IGVjMi5JVnBjO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0cz86IGVjMi5JU3VibmV0W107XG4gIHB1YmxpYyByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IGVjMi5JU2VjdXJpdHlHcm91cFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlckdyb3VwPzogSVVzZXJHcm91cDtcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgc2VydmVybGVzcyBjYWNoZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5kcG9pbnQgYWRkcmVzcyBvZiB0aGUgc2VydmVybGVzcyBjYWNoZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlRW5kcG9pbnRBZGRyZXNzOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5kcG9pbnQgcG9ydCBvZiB0aGUgc2VydmVybGVzcyBjYWNoZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlRW5kcG9pbnRQb3J0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcmVhZGVyIGVuZHBvaW50IGFkZHJlc3Mgb2YgdGhlIHNlcnZlcmxlc3MgY2FjaGVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZVJlYWRlckVuZHBvaW50QWRkcmVzczogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHJlYWRlciBlbmRwb2ludCBwb3J0IG9mIHRoZSBzZXJ2ZXJsZXNzIGNhY2hlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVSZWFkZXJFbmRwb2ludFBvcnQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUgc2VydmVybGVzcyBjYWNoZVxuICAgKiBDYW4gYmUgJ0NSRUFUSU5HJywgJ0FWQUlMQUJMRScsICdERUxFVElORycsICdDUkVBVEUtRkFJTEVEJywgJ01PRElGWUlORydcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZVN0YXR1czogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdG8gbmV0d29yayBjb25uZWN0aW9uc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBlYzIuQ29ubmVjdGlvbnM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNlcnZlcmxlc3NDYWNoZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7fSk7XG5cbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMuZW5naW5lID0gcHJvcHMuZW5naW5lID8/IENhY2hlRW5naW5lLlZBTEtFWV9MQVRFU1Q7XG4gICAgdGhpcy5zZXJ2ZXJsZXNzQ2FjaGVOYW1lID0gcHJvcHMuc2VydmVybGVzc0NhY2hlTmFtZSA/PyBMYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZUlkKHRoaXMpIH0pO1xuICAgIHRoaXMua21zS2V5ID0gcHJvcHMua21zS2V5O1xuICAgIHRoaXMudnBjID0gcHJvcHMudnBjO1xuICAgIHRoaXMudXNlckdyb3VwID0gcHJvcHMudXNlckdyb3VwO1xuXG4gICAgdGhpcy52YWxpZGF0ZURlc2NyaXB0aW9uKHByb3BzLmRlc2NyaXB0aW9uKTtcbiAgICB0aGlzLnZhbGlkYXRlRGF0YVN0b3JhZ2VMaW1pdHMocHJvcHMuY2FjaGVVc2FnZUxpbWl0cyk7XG4gICAgdGhpcy52YWxpZGF0ZVJlcXVlc3RSYXRlTGltaXRzKHByb3BzLmNhY2hlVXNhZ2VMaW1pdHMpO1xuICAgIHRoaXMudmFsaWRhdGVCYWNrdXBTZXR0aW5ncyhwcm9wcy5iYWNrdXApO1xuICAgIHRoaXMudmFsaWRhdGVVc2VyR3JvdXBDb21wYXRpYmlsaXR5KHRoaXMuZW5naW5lLCB0aGlzLnVzZXJHcm91cCk7XG5cbiAgICBjb25zdCBzdWJuZXRDb25maWcgPSB0aGlzLmNvbmZpZ3VyZVN1Ym5ldHMocHJvcHMpO1xuICAgIGNvbnN0IHN1Ym5ldElkcyA9IHN1Ym5ldENvbmZpZy5zdWJuZXRJZHM7XG4gICAgdGhpcy5zdWJuZXRzID0gc3VibmV0Q29uZmlnLnN1Ym5ldHM7XG5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwQ29uZmlnID0gdGhpcy5jb25maWd1cmVTZWN1cml0eUdyb3Vwcyhwcm9wcyk7XG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cElkcyA9IHNlY3VyaXR5R3JvdXBDb25maWcuc2VjdXJpdHlHcm91cElkcztcbiAgICB0aGlzLnNlY3VyaXR5R3JvdXBzID0gc2VjdXJpdHlHcm91cENvbmZpZy5zZWN1cml0eUdyb3VwcztcblxuICAgIGNvbnN0IFtlbmdpbmUsIHZlcnNpb25dID0gdGhpcy5lbmdpbmUuc3BsaXQoJ18nKTtcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IENmblNlcnZlcmxlc3NDYWNoZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBlbmdpbmU6IGVuZ2luZSxcbiAgICAgIG1ham9yRW5naW5lVmVyc2lvbjogdmVyc2lvbixcbiAgICAgIHNlcnZlcmxlc3NDYWNoZU5hbWU6IHRoaXMuc2VydmVybGVzc0NhY2hlTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGNhY2hlVXNhZ2VMaW1pdHM6IHRoaXMucmVuZGVyQ2FjaGVVc2FnZUxpbWl0cyhwcm9wcy5jYWNoZVVzYWdlTGltaXRzKSxcbiAgICAgIGRhaWx5U25hcHNob3RUaW1lOiBwcm9wcy5iYWNrdXA/LmJhY2t1cFRpbWUgPyB0aGlzLmZvcm1hdEJhY2t1cFRpbWUocHJvcHMuYmFja3VwLmJhY2t1cFRpbWUpIDogdW5kZWZpbmVkLFxuICAgICAgc25hcHNob3RSZXRlbnRpb25MaW1pdDogcHJvcHMuYmFja3VwPy5iYWNrdXBSZXRlbnRpb25MaW1pdCxcbiAgICAgIGZpbmFsU25hcHNob3ROYW1lOiBwcm9wcy5iYWNrdXA/LmJhY2t1cE5hbWVCZWZvcmVEZWxldGlvbixcbiAgICAgIHNuYXBzaG90QXJuc1RvUmVzdG9yZTogcHJvcHMuYmFja3VwPy5iYWNrdXBBcm5zVG9SZXN0b3JlLFxuICAgICAga21zS2V5SWQ6IHByb3BzLmttc0tleT8ua2V5SWQsXG4gICAgICBzdWJuZXRJZHM6IHN1Ym5ldElkcyxcbiAgICAgIHNlY3VyaXR5R3JvdXBJZHM6IHNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICB1c2VyR3JvdXBJZDogcHJvcHMudXNlckdyb3VwPy51c2VyR3JvdXBOYW1lLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnVzZXJHcm91cCkge1xuICAgICAgY29uc3QgdXNlckdyb3VwUmVzb3VyY2UgPSBwcm9wcy51c2VyR3JvdXAubm9kZS5maW5kQ2hpbGQoJ1Jlc291cmNlJykgYXMgQ2ZuVXNlckdyb3VwO1xuICAgICAgcmVzb3VyY2UuYWRkRGVwZW5kZW5jeSh1c2VyR3JvdXBSZXNvdXJjZSk7XG4gICAgfVxuXG4gICAgdGhpcy5iYWNrdXBBcm5zVG9SZXN0b3JlID0gcmVzb3VyY2Uuc25hcHNob3RBcm5zVG9SZXN0b3JlO1xuICAgIHRoaXMuc2VydmVybGVzc0NhY2hlQXJuID0gcmVzb3VyY2UuYXR0ckFybjtcbiAgICB0aGlzLnNlcnZlcmxlc3NDYWNoZUVuZHBvaW50QWRkcmVzcyA9IHJlc291cmNlLmF0dHJFbmRwb2ludEFkZHJlc3M7XG4gICAgdGhpcy5zZXJ2ZXJsZXNzQ2FjaGVFbmRwb2ludFBvcnQgPSByZXNvdXJjZS5hdHRyRW5kcG9pbnRQb3J0O1xuICAgIHRoaXMuc2VydmVybGVzc0NhY2hlUmVhZGVyRW5kcG9pbnRBZGRyZXNzID0gcmVzb3VyY2UuYXR0clJlYWRlckVuZHBvaW50QWRkcmVzcztcbiAgICB0aGlzLnNlcnZlcmxlc3NDYWNoZVJlYWRlckVuZHBvaW50UG9ydCA9IHJlc291cmNlLmF0dHJSZWFkZXJFbmRwb2ludFBvcnQ7XG4gICAgdGhpcy5zZXJ2ZXJsZXNzQ2FjaGVTdGF0dXMgPSByZXNvdXJjZS5hdHRyU3RhdHVzO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IG5ldyBlYzIuQ29ubmVjdGlvbnMoe1xuICAgICAgc2VjdXJpdHlHcm91cHM6IHRoaXMuc2VjdXJpdHlHcm91cHMsXG4gICAgICBkZWZhdWx0UG9ydDogZWMyLlBvcnQudGNwKExhenkubnVtYmVyKHsgcHJvZHVjZTogKCkgPT4gcGFyc2VJbnQodGhpcy5zZXJ2ZXJsZXNzQ2FjaGVFbmRwb2ludFBvcnQpIH0pKSxcbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBFTEFTVElDQUNIRV9TRVJWRVJMRVNTQ0FDSEVfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGRlc2NyaXB0aW9uIG1lZXRzIEFXUyByZXF1aXJlbWVudHNcbiAgICpcbiAgICogQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBkZXNjcmlwdGlvbiB0byB2YWxpZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFkZXNjcmlwdGlvbiB8fCBUb2tlbi5pc1VucmVzb2x2ZWQoZGVzY3JpcHRpb24pKSByZXR1cm47XG5cbiAgICBpZiAoZGVzY3JpcHRpb24ubGVuZ3RoID4gMjU1KSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGBEZXNjcmlwdGlvbiBtdXN0IG5vdCBleGNlZWQgMjU1IGNoYXJhY3RlcnMsIGN1cnJlbnRseSBoYXMgJHtkZXNjcmlwdGlvbi5sZW5ndGh9YCwgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKGRlc2NyaXB0aW9uLmluY2x1ZGVzKCc8JykgfHwgZGVzY3JpcHRpb24uaW5jbHVkZXMoJz4nKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignRGVzY3JpcHRpb24gbXVzdCBub3QgY29udGFpbiA8IG9yID4gY2hhcmFjdGVycycsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBkYXRhIHN0b3JhZ2Ugc2l6ZSBsaW1pdHNcbiAgICpcbiAgICogQHBhcmFtIGxpbWl0cyBUaGUgdXNhZ2UgbGltaXRzIGNvbnRhaW5pbmcgZGF0YSBzdG9yYWdlIHNldHRpbmdzXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRGF0YVN0b3JhZ2VMaW1pdHMobGltaXRzPzogQ2FjaGVVc2FnZUxpbWl0c1Byb3BlcnR5KTogdm9pZCB7XG4gICAgaWYgKCFsaW1pdHMpIHJldHVybjtcblxuICAgIGlmIChsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZSAmJiAhbGltaXRzLmRhdGFTdG9yYWdlTWluaW11bVNpemUuaXNVbnJlc29sdmVkKCkgJiZcbiAgICAgIChsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZS50b0dpYmlieXRlcygpIDwgREFUQV9TVE9SQUdFX01JTl9HQiB8fCBsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZS50b0dpYmlieXRlcygpID4gREFUQV9TVE9SQUdFX01BWF9HQikpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0RhdGEgc3RvcmFnZSBtaW5pbXVtIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA1MDAwIEdCLicsIHRoaXMpO1xuICAgIH1cbiAgICBpZiAobGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUgJiYgIWxpbWl0cy5kYXRhU3RvcmFnZU1heGltdW1TaXplLmlzVW5yZXNvbHZlZCgpICYmXG4gICAgICAobGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUudG9HaWJpYnl0ZXMoKSA8IERBVEFfU1RPUkFHRV9NSU5fR0IgfHwgbGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUudG9HaWJpYnl0ZXMoKSA+IERBVEFfU1RPUkFHRV9NQVhfR0IpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdEYXRhIHN0b3JhZ2UgbWF4aW11bSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgNTAwMCBHQi4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAobGltaXRzLmRhdGFTdG9yYWdlTWluaW11bVNpemUgJiYgbGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUgJiZcbiAgICAgICFsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZS5pc1VucmVzb2x2ZWQoKSAmJiAhbGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUuaXNVbnJlc29sdmVkKCkgJiZcbiAgICAgIGxpbWl0cy5kYXRhU3RvcmFnZU1pbmltdW1TaXplLnRvR2liaWJ5dGVzKCkgPiBsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZS50b0dpYmlieXRlcygpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdEYXRhIHN0b3JhZ2UgbWluaW11bSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIG1heGltdW0nLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgcmVxdWVzdCByYXRlIGxpbWl0c1xuICAgKlxuICAgKiBAcGFyYW0gbGltaXRzIFRoZSB1c2FnZSBsaW1pdHMgY29udGFpbmluZyByZXF1ZXN0IHJhdGUgc2V0dGluZ3NcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVSZXF1ZXN0UmF0ZUxpbWl0cyhsaW1pdHM/OiBDYWNoZVVzYWdlTGltaXRzUHJvcGVydHkpOiB2b2lkIHtcbiAgICBpZiAoIWxpbWl0cykgcmV0dXJuO1xuXG4gICAgaWYgKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSAhPT0gdW5kZWZpbmVkICYmICFUb2tlbi5pc1VucmVzb2x2ZWQobGltaXRzLnJlcXVlc3RSYXRlTGltaXRNaW5pbXVtKSAmJlxuICAgICAgKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSA8IFJFUVVFU1RfUkFURV9NSU5fRUNQVSB8fCBsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1pbmltdW0gPiBSRVFVRVNUX1JBVEVfTUFYX0VDUFUpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdSZXF1ZXN0IHJhdGUgbWluaW11bSBtdXN0IGJlIGJldHdlZW4gMSwwMDAgYW5kIDE1LDAwMCwwMDAgRUNQVXMgcGVyIHNlY29uZCcsIHRoaXMpO1xuICAgIH1cbiAgICBpZiAobGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtICE9PSB1bmRlZmluZWQgJiYgIVRva2VuLmlzVW5yZXNvbHZlZChsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1heGltdW0pICYmXG4gICAgICAobGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtIDwgUkVRVUVTVF9SQVRFX01JTl9FQ1BVIHx8IGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWF4aW11bSA+IFJFUVVFU1RfUkFURV9NQVhfRUNQVSkpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1JlcXVlc3QgcmF0ZSBtYXhpbXVtIG11c3QgYmUgYmV0d2VlbiAxLDAwMCBhbmQgMTUsMDAwLDAwMCBFQ1BVcyBwZXIgc2Vjb25kJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQobGltaXRzLnJlcXVlc3RSYXRlTGltaXRNaW5pbXVtKSAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWF4aW11bSkgJiZcbiAgICAgIGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSAhPT0gdW5kZWZpbmVkICYmIGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWF4aW11bSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1pbmltdW0gPiBsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1heGltdW0pIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1JlcXVlc3QgcmF0ZSBtaW5pbXVtIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gbWF4aW11bScsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBiYWNrdXAgc2V0dGluZ3MgbWVldCBBV1MgcmVxdWlyZW1lbnRzXG4gICAqXG4gICAqIEBwYXJhbSBiYWNrdXAgVGhlIGJhY2t1cCBzZXR0aW5ncyB0byB2YWxpZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUJhY2t1cFNldHRpbmdzKGJhY2t1cD86IEJhY2t1cFNldHRpbmdzKTogdm9pZCB7XG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQoYmFja3VwPy5iYWNrdXBSZXRlbnRpb25MaW1pdCkgJiYgYmFja3VwPy5iYWNrdXBSZXRlbnRpb25MaW1pdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBsaW1pdCA9IGJhY2t1cC5iYWNrdXBSZXRlbnRpb25MaW1pdDtcbiAgICAgIGlmIChsaW1pdCA8IDEgfHwgbGltaXQgPiAzNSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdCYWNrdXAgcmV0ZW50aW9uIGxpbWl0IG11c3QgYmUgYmV0d2VlbiAxIGFuZCAzNSBkYXlzJywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQoYmFja3VwPy5iYWNrdXBOYW1lQmVmb3JlRGVsZXRpb24pICYmIGJhY2t1cD8uYmFja3VwTmFtZUJlZm9yZURlbGV0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBiYWNrdXAuYmFja3VwTmFtZUJlZm9yZURlbGV0aW9uO1xuXG4gICAgICBpZiAoIS9eW2EtekEtWl0vLnRlc3QobmFtZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignRmluYWwgYmFja3VwIG5hbWUgbXVzdCBiZWdpbiB3aXRoIGEgbGV0dGVyJywgdGhpcyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghL15bYS16QS1aMC05LV0rJC8udGVzdChuYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdGaW5hbCBiYWNrdXAgbmFtZSBtdXN0IGNvbnRhaW4gb25seSBBU0NJSSBsZXR0ZXJzLCBkaWdpdHMsIGFuZCBoeXBoZW5zJywgdGhpcyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuYW1lLmVuZHNXaXRoKCctJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignRmluYWwgYmFja3VwIG5hbWUgbXVzdCBub3QgZW5kIHdpdGggYSBoeXBoZW4nLCB0aGlzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUuaW5jbHVkZXMoJy0tJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignRmluYWwgYmFja3VwIG5hbWUgbXVzdCBub3QgY29udGFpbiB0d28gY29uc2VjdXRpdmUgaHlwaGVucycsIHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB1c2VyIGdyb3VwIGNvbXBhdGliaWxpdHkgd2l0aCBjYWNoZSBlbmdpbmVcbiAgICpcbiAgICogQHBhcmFtIGVuZ2luZSBUaGUgY2FjaGUgZW5naW5lXG4gICAqIEBwYXJhbSB1c2VyR3JvdXAgVGhlIHVzZXIgZ3JvdXAgdG8gdmFsaWRhdGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVVc2VyR3JvdXBDb21wYXRpYmlsaXR5KGVuZ2luZTogQ2FjaGVFbmdpbmUsIHVzZXJHcm91cD86IElVc2VyR3JvdXApOiB2b2lkIHtcbiAgICBpZiAoIXVzZXJHcm91cCkgcmV0dXJuO1xuXG4gICAgaWYgKGVuZ2luZSA9PT0gQ2FjaGVFbmdpbmUuTUVNQ0FDSEVEX0xBVEVTVCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignVXNlciBncm91cHMgY2Fubm90IGJlIHVzZWQgd2l0aCBNZW1jYWNoZWQgZW5naW5lcy4gT25seSBSZWRpcyBhbmQgVmFsa2V5IGVuZ2luZXMgc3VwcG9ydCB1c2VyIGdyb3Vwcy4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoZW5naW5lID09PSBDYWNoZUVuZ2luZS5SRURJU19MQVRFU1QgJiYgdXNlckdyb3VwLmVuZ2luZSAhPT0gVXNlckVuZ2luZS5SRURJUykge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUmVkaXMgY2FjaGUgY2FuIG9ubHkgdXNlIFJlZGlzIHVzZXIgZ3JvdXBzLicsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgY2FjaGUgdXNhZ2UgbGltaXRzIGZvciBDbG91ZEZvcm1hdGlvblxuICAgKlxuICAgKiBAcGFyYW0gbGltaXRzIFRoZSB1c2FnZSBsaW1pdHMgdG8gcmVuZGVyXG4gICAqIEByZXR1cm5zIENsb3VkRm9ybWF0aW9uLWNvbXBhdGlibGUgdXNhZ2UgbGltaXRzIG9iamVjdCBvciB1bmRlZmluZWRcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyQ2FjaGVVc2FnZUxpbWl0cyhsaW1pdHM/OiBDYWNoZVVzYWdlTGltaXRzUHJvcGVydHkpOiBhbnkge1xuICAgIGlmICghbGltaXRzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgY2FjaGVVc2FnZUxpbWl0czogYW55ID0ge307XG5cbiAgICBpZiAobGltaXRzLmRhdGFTdG9yYWdlTWluaW11bVNpemUgIT09IHVuZGVmaW5lZCB8fCBsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjYWNoZVVzYWdlTGltaXRzLmRhdGFTdG9yYWdlID0ge1xuICAgICAgICB1bml0OiBEYXRhU3RvcmFnZVVuaXQuR0lHQUJZVEVTLFxuICAgICAgICAuLi4obGltaXRzLmRhdGFTdG9yYWdlTWluaW11bVNpemUgIT09IHVuZGVmaW5lZCAmJiB7IG1pbmltdW06IGxpbWl0cy5kYXRhU3RvcmFnZU1pbmltdW1TaXplLnRvR2liaWJ5dGVzKCkgfSksXG4gICAgICAgIC4uLihsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZSAhPT0gdW5kZWZpbmVkICYmIHsgbWF4aW11bTogbGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUudG9HaWJpYnl0ZXMoKSB9KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSAhPT0gdW5kZWZpbmVkIHx8IGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWF4aW11bSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjYWNoZVVzYWdlTGltaXRzLmVjcHVQZXJTZWNvbmQgPSB7XG4gICAgICAgIC4uLihsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1pbmltdW0gIT09IHVuZGVmaW5lZCAmJiB7IG1pbmltdW06IGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSB9KSxcbiAgICAgICAgLi4uKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWF4aW11bSAhPT0gdW5kZWZpbmVkICYmIHsgbWF4aW11bTogbGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtIH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY2FjaGVVc2FnZUxpbWl0cykubGVuZ3RoID4gMCA/IGNhY2hlVXNhZ2VMaW1pdHMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIHN1Ym5ldHMgZm9yIHRoZSBjYWNoZVxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIFNlcnZlcmxlc3NDYWNoZSBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIHN1Ym5ldCBJRHMgYW5kIHN1Ym5ldCBvYmplY3RzXG4gICAqL1xuICBwcml2YXRlIGNvbmZpZ3VyZVN1Ym5ldHMocHJvcHM6IFNlcnZlcmxlc3NDYWNoZVByb3BzKTogeyBzdWJuZXRJZHM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkOyBzdWJuZXRzOiBlYzIuSVN1Ym5ldFtdIHwgdW5kZWZpbmVkIH0ge1xuICAgIGxldCBzZWxlY3RlZFN1Ym5ldHM7XG4gICAgaWYgKHByb3BzLnZwY1N1Ym5ldHMpIHtcbiAgICAgIHNlbGVjdGVkU3VibmV0cyA9IHByb3BzLnZwYy5zZWxlY3RTdWJuZXRzKHByb3BzLnZwY1N1Ym5ldHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RlZFN1Ym5ldHMgPSBwcm9wcy52cGMuc2VsZWN0U3VibmV0cyh7XG4gICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VibmV0SWRzOiBzZWxlY3RlZFN1Ym5ldHMuc3VibmV0SWRzLmxlbmd0aCA+IDAgPyBzZWxlY3RlZFN1Ym5ldHMuc3VibmV0SWRzIDogdW5kZWZpbmVkLFxuICAgICAgc3VibmV0czogc2VsZWN0ZWRTdWJuZXRzLnN1Ym5ldHMubGVuZ3RoID4gMCA/IHNlbGVjdGVkU3VibmV0cy5zdWJuZXRzIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIHNlY3VyaXR5IGdyb3VwcyBmb3IgdGhlIGNhY2hlXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgU2VydmVybGVzc0NhY2hlIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgc2VjdXJpdHkgZ3JvdXAgSURzIGFuZCBzZWN1cml0eSBncm91cCBvYmplY3RzXG4gICAqL1xuICBwcml2YXRlIGNvbmZpZ3VyZVNlY3VyaXR5R3JvdXBzKHByb3BzOiBTZXJ2ZXJsZXNzQ2FjaGVQcm9wcyk6IHsgc2VjdXJpdHlHcm91cElkczogc3RyaW5nW107IHNlY3VyaXR5R3JvdXBzOiBlYzIuSVNlY3VyaXR5R3JvdXBbXSB9IHtcbiAgICBpZiAocHJvcHMuc2VjdXJpdHlHcm91cHMgJiYgcHJvcHMuc2VjdXJpdHlHcm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VjdXJpdHlHcm91cElkczogcHJvcHMuc2VjdXJpdHlHcm91cHMubWFwKHNnID0+IHNnLnNlY3VyaXR5R3JvdXBJZCksXG4gICAgICAgIHNlY3VyaXR5R3JvdXBzOiBwcm9wcy5zZWN1cml0eUdyb3VwcyxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5ld1NlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgJ1NlY3VyaXR5R3JvdXAnLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgU2VjdXJpdHkgZ3JvdXAgZm9yICR7dGhpcy5ub2RlLmlkfSBjYWNoZS5gLFxuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VjdXJpdHlHcm91cElkczogW25ld1NlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkXSxcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IFtuZXdTZWN1cml0eUdyb3VwXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBzY2hlZHVsZSB0byBISDpNTSBmb3JtYXQgZm9yIGRhaWx5IGJhY2t1cHNcbiAgICpcbiAgICogQHBhcmFtIHNjaGVkdWxlIFRoZSBzY2hlZHVsZSB0byBmb3JtYXRcbiAgICogQHJldHVybnMgVGltZSBzdHJpbmcgaW4gSEg6TU0gZm9ybWF0XG4gICAqL1xuICBwcml2YXRlIGZvcm1hdEJhY2t1cFRpbWUoc2NoZWR1bGU6IGV2ZW50cy5TY2hlZHVsZSk6IHN0cmluZyB7XG4gICAgY29uc3QgV0lMRF9DQVJEID0gJyonO1xuICAgIGNvbnN0IFtcbiAgICAgIG1pbnV0ZUV4cHJlc3Npb24sIGhvdXJFeHByZXNzaW9uLFxuICAgICAgZGF5RXhwcmVzc2lvbiwgbW9udGhFeHByZXNzaW9uLFxuICAgICAgd2Vla0RheUV4cHJlc3Npb24sIHllYXJFeHByZXNzaW9uLFxuICAgIF0gPSBzY2hlZHVsZS5leHByZXNzaW9uU3RyaW5nLnN1YnN0cig1KS5zbGljZSgwLCAtMSkuc3BsaXQoJyAnKTtcblxuICAgIGlmIChkYXlFeHByZXNzaW9uICE9IFdJTERfQ0FSRCB8fCBtb250aEV4cHJlc3Npb24gIT0gV0lMRF9DQVJEIHx8IHllYXJFeHByZXNzaW9uICE9IFdJTERfQ0FSRCB8fCB3ZWVrRGF5RXhwcmVzc2lvbiAhPSAnPycpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0ZvciBub3csIG9ubHkgZGFpbHkgYmFja3VwIHRpbWUgaXMgYXZhaWxhYmxlIChzdXBwb3J0cyBqdXN0IGhvdXIgYW5kIG1pbnV0ZSkuIERheSwgbW9udGgsIHllYXIsIGFuZCB3ZWVrRGF5IGFyZSBub3QgYWxsb3dlZCcsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGhvdXIgPSBob3VyRXhwcmVzc2lvbiA9PSBXSUxEX0NBUkQgPyAnMCcgOiBob3VyRXhwcmVzc2lvbjtcbiAgICBjb25zdCBtaW51dGUgPSBtaW51dGVFeHByZXNzaW9uID09IFdJTERfQ0FSRCA/ICcwJyA6IG1pbnV0ZUV4cHJlc3Npb247XG5cbiAgICByZXR1cm4gYCR7aG91ci5wYWRTdGFydCgyLCAnMCcpfToke21pbnV0ZS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gIH1cbn1cbiJdfQ==
|
|
524
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVybGVzcy1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlcnZlcmxlc3MtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTJDO0FBQzNDLGlFQUErRTtBQUcvRSwyQ0FBK0Y7QUFDL0YsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUUxRSxxQ0FBc0M7QUFDdEMsbUVBQTZGO0FBRzdGLE1BQU0sa0NBQWtDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0FBRWxHOztHQUVHO0FBQ0gsSUFBSyxlQUtKO0FBTEQsV0FBSyxlQUFlO0lBQ2xCOztPQUVHO0lBQ0gsbUNBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQUxJLGVBQWUsS0FBZixlQUFlLFFBS25CO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUM5Qjs7R0FFRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0FBQ2pDOztHQUVHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUM7QUFDbkM7O0dBRUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQztBQWdNdkM7Ozs7R0FJRztJQUVVLGVBQWU7NEJBRDNCLG9DQUFrQjs7OztzQkFDa0IsMkNBQW1COytCQUEzQixTQUFRLFdBQW1COzs7O1lBQXhELDZLQXljQzs7Ozs7UUF4Y0M7O1dBRUc7UUFDSSxNQUFNLENBQVUscUJBQXFCLEdBQVcsNkNBQTZDLENBQUM7UUFFckc7O1dBRUc7UUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBTTtZQUNwQyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxrQ0FBa0MsSUFBSSxDQUFDLENBQUM7U0FDekY7UUFFRDs7Ozs7O1dBTUc7UUFDSSxNQUFNLENBQUMs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QUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztTQUM5RDs7WUF4Y1UsdURBQWU7Ozs7O0FBQWYsMENBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBDZm5TZXJ2ZXJsZXNzQ2FjaGUsIENmblVzZXJHcm91cCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljYWNoZSc7XG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgeyBBcm5Gb3JtYXQsIFN0YWNrLCBTaXplLCBMYXp5LCBWYWxpZGF0aW9uRXJyb3IsIE5hbWVzLCBUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBVc2VyRW5naW5lIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgSVNlcnZlcmxlc3NDYWNoZSwgU2VydmVybGVzc0NhY2hlQmFzZSwgQ2FjaGVFbmdpbmUgfSBmcm9tICcuL3NlcnZlcmxlc3MtY2FjaGUtYmFzZSc7XG5pbXBvcnQgeyBJVXNlckdyb3VwIH0gZnJvbSAnLi91c2VyLWdyb3VwJztcblxuY29uc3QgRUxBU1RJQ0FDSEVfU0VSVkVSTEVTU0NBQ0hFX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1lbGFzdGljYWNoZS5TZXJ2ZXJsZXNzQ2FjaGUnKTtcblxuLyoqXG4gKiBVbml0IHR5cGVzIGZvciBkYXRhIHN0b3JhZ2UgdXNhZ2UgbGltaXRzXG4gKi9cbmVudW0gRGF0YVN0b3JhZ2VVbml0IHtcbiAgLyoqXG4gICAqIEdpZ2FieXRlc1xuICAgKi9cbiAgR0lHQUJZVEVTID0gJ0dCJyxcbn1cblxuLyoqXG4gKiBNaW5pbXVtIGRhdGEgc3RvcmFnZSBzaXplIGluIEdCIGZvciBTZXJ2ZXJsZXNzQ2FjaGVcbiAqL1xuY29uc3QgREFUQV9TVE9SQUdFX01JTl9HQiA9IDE7XG4vKipcbiAqIE1heGltdW0gZGF0YSBzdG9yYWdlIHNpemUgaW4gR0IgZm9yIFNlcnZlcmxlc3NDYWNoZVxuICovXG5jb25zdCBEQVRBX1NUT1JBR0VfTUFYX0dCID0gNTAwMDtcbi8qKlxuICogTWluaW11bSByZXF1ZXN0IHJhdGUgbGltaXQgaW4gRUNQVXMgcGVyIHNlY29uZCBmb3IgU2VydmVybGVzc0NhY2hlXG4gKi9cbmNvbnN0IFJFUVVFU1RfUkFURV9NSU5fRUNQVSA9IDEwMDA7XG4vKipcbiAqIE1heGltdW0gcmVxdWVzdCByYXRlIGxpbWl0IGluIEVDUFVzIHBlciBzZWNvbmQgZm9yIFNlcnZlcmxlc3NDYWNoZVxuICovXG5jb25zdCBSRVFVRVNUX1JBVEVfTUFYX0VDUFUgPSAxNTAwMDAwMDtcblxuLyoqXG4gKiBVc2FnZSBsaW1pdHMgY29uZmlndXJhdGlvbiBmb3IgU2VydmVybGVzc0NhY2hlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVVc2FnZUxpbWl0c1Byb3BlcnR5IHtcbiAgLyoqXG4gICAqIE1pbmltdW0gZGF0YSBzdG9yYWdlIHNpemUgKDEgR0IpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbWluaW11bSBsaW1pdFxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZT86IFNpemU7XG4gIC8qKlxuICAgKiBNYXhpbXVtIGRhdGEgc3RvcmFnZSBzaXplICg1MDAwIEdCKVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG1heGltdW0gbGltaXRcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFTdG9yYWdlTWF4aW11bVNpemU/OiBTaXplO1xuICAvKipcbiAgICogTWluaW11bSByZXF1ZXN0IHJhdGUgbGltaXQgKDEwMDAgRUNQVXMgcGVyIHNlY29uZClcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBtaW5pbXVtIGxpbWl0XG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0UmF0ZUxpbWl0TWluaW11bT86IG51bWJlcjtcbiAgLyoqXG4gICAqIE1heGltdW0gcmVxdWVzdCByYXRlIGxpbWl0ICgxNTAwMDAwMCBFQ1BVcyBwZXIgc2Vjb25kKVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG1heGltdW0gbGltaXRcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RSYXRlTGltaXRNYXhpbXVtPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEJhY2t1cCBjb25maWd1cmF0aW9uIGZvciBTZXJ2ZXJsZXNzQ2FjaGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYWNrdXBTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBBdXRvbWF0ZWQgZGFpbHkgYmFja3VwIFVUQyB0aW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gYXV0b21hdGVkIGJhY2t1cHNcbiAgICovXG4gIHJlYWRvbmx5IGJhY2t1cFRpbWU/OiBldmVudHMuU2NoZWR1bGU7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZGF5cyB0byByZXRhaW4gYmFja3VwcyAoMS0zNSlcbiAgICpcbiAgICogQGRlZmF1bHQgLSBCYWNrdXBzIGFyZSBub3QgcmV0YWluZWRcbiAgICovXG4gIHJlYWRvbmx5IGJhY2t1cFJldGVudGlvbkxpbWl0PzogbnVtYmVyO1xuICAvKipcbiAgICogTmFtZSBmb3IgdGhlIGZpbmFsIGJhY2t1cCB0YWtlbiBiZWZvcmUgZGVsZXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBmaW5hbCBiYWNrdXBcbiAgICovXG4gIHJlYWRvbmx5IGJhY2t1cE5hbWVCZWZvcmVEZWxldGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEFSTnMgb2YgYmFja3VwcyBmcm9tIHdoaWNoIHRvIHJlc3RvcmUgZGF0YSBpbnRvIHRoZSBuZXcgY2FjaGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBDcmVhdGUgYSBuZXcgY2FjaGUgd2l0aCBubyBleGlzdGluZyBkYXRhXG4gICAqL1xuICByZWFkb25seSBiYWNrdXBBcm5zVG9SZXN0b3JlPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgZGVmaW5pbmcgYSBTZXJ2ZXJsZXNzQ2FjaGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJsZXNzQ2FjaGVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgY2FjaGUgZW5naW5lIGNvbWJpbmVkIHdpdGggdGhlIHZlcnNpb25cbiAgICogRW51bSBvcHRpb25zOiBWQUxLRVlfREVGQVVMVCwgVkFMS0VZXzcsIFZBTEtFWV84LCBSRURJU19ERUZBVUxULCBNRU1DQUNIRURfREVGQVVMVFxuICAgKiBUaGUgZGVmYXVsdCBvcHRpb25zIGJyaW5nIHRoZSBsYXRlc3QgdmVyc2lvbnMgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB3aGVuIG5vdCBwcm92aWRlZCwgdGhlIGRlZmF1bHQgZW5naW5lIHdvdWxkIGJlIFZhbGtleSwgbGF0ZXN0IHZlcnNpb24gYXZhaWxhYmxlIChWQUxLRVlfREVGQVVMVClcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZT86IENhY2hlRW5naW5lO1xuICAvKipcbiAgICogTmFtZSBmb3IgdGhlIHNlcnZlcmxlc3MgY2FjaGVcbiAgICpcbiAgICogQGRlZmF1bHQgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbmFtZSBieSBSZXNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gZm9yIHRoZSBjYWNoZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFVzYWdlIGxpbWl0cyBmb3IgdGhlIGNhY2hlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gdXNhZ2UgbGltaXRzXG4gICAqL1xuICByZWFkb25seSBjYWNoZVVzYWdlTGltaXRzPzogQ2FjaGVVc2FnZUxpbWl0c1Byb3BlcnR5O1xuICAvKipcbiAgICogQmFja3VwIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBiYWNrdXBzIGNvbmZpZ3VyZWRcbiAgICovXG4gIHJlYWRvbmx5IGJhY2t1cD86IEJhY2t1cFNldHRpbmdzO1xuICAvKipcbiAgICogS01TIGtleSBmb3IgZW5jcnlwdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFNlcnZpY2UgbWFuYWdlZCBlbmNyeXB0aW9uIChBV1Mgb3duZWQgS01TIGtleSlcbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuICAvKipcbiAgICogVGhlIFZQQyB0byBwbGFjZSB0aGUgY2FjaGUgaW5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG4gIC8qKlxuICAgKiBXaGljaCBzdWJuZXRzIHRvIHBsYWNlIHRoZSBjYWNoZSBpblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFByaXZhdGUgc3VibmV0cyB3aXRoIGVncmVzc1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjU3VibmV0cz86IGVjMi5TdWJuZXRTZWxlY3Rpb247XG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cHMgZm9yIHRoZSBjYWNoZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEEgbmV3IHNlY3VyaXR5IGdyb3VwIGlzIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG4gIC8qKlxuICAgKiBVc2VyIGdyb3VwIGZvciBhY2Nlc3MgY29udHJvbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHVzZXIgZ3JvdXBcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cD86IElVc2VyR3JvdXA7XG59XG5cbi8qKlxuICogQXR0cmlidXRlcyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgd2hlbiBpbXBvcnRpbmcgYSBTZXJ2ZXJsZXNzQ2FjaGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJsZXNzQ2FjaGVBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBjYWNoZSBlbmdpbmUgdXNlZCBieSB0aGlzIGNhY2hlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZW5naW5lIHR5cGUgaXMgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogQ2FjaGVFbmdpbmU7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc2VydmVybGVzcyBjYWNoZVxuICAgKlxuICAgKiBPbmUgb2YgYHNlcnZlcmxlc3NDYWNoZU5hbWVgIG9yIGBzZXJ2ZXJsZXNzQ2FjaGVBcm5gIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSBzZXJ2ZXJsZXNzQ2FjaGVBcm5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZU5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBzZXJ2ZXJsZXNzIGNhY2hlXG4gICAqXG4gICAqIE9uZSBvZiBgc2VydmVybGVzc0NhY2hlTmFtZWAgb3IgYHNlcnZlcmxlc3NDYWNoZUFybmAgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHNlcnZlcmxlc3NDYWNoZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZUFybj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBBUk5zIG9mIGJhY2t1cHMgcmVzdG9yZWQgaW4gdGhlIGNhY2hlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYmFja3VwcyBhcmUgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgYmFja3VwQXJuc1RvUmVzdG9yZT86IHN0cmluZ1tdO1xuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdXNlZCBmb3IgZW5jcnlwdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGVuY3J5cHRpb24ga2V5IGlzIHVua25vd25cbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuICAvKipcbiAgICogVGhlIFZQQyB0aGlzIGNhY2hlIGlzIGRlcGxveWVkIGluXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVlBDIGlzIHVua25vd25cbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IGVjMi5JVnBjO1xuICAvKipcbiAgICogVGhlIHN1Ym5ldHMgdGhpcyBjYWNoZSBpcyBkZXBsb3llZCBpblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHN1Ym5ldHMgYXJlIHVua25vd25cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldHM/OiBlYzIuSVN1Ym5ldFtdO1xuICAvKipcbiAgICogVGhlIHNlY3VyaXR5IGdyb3VwcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBjYWNoZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHNlY3VyaXR5IGdyb3VwcyBhcmUgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM/OiBlYzIuSVNlY3VyaXR5R3JvdXBbXTtcbiAgLyoqXG4gICAqIFRoZSB1c2VyIGdyb3VwIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNhY2hlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXNlciBncm91cCBpcyB1bmtub3duXG4gICAqL1xuICByZWFkb25seSB1c2VyR3JvdXA/OiBJVXNlckdyb3VwO1xufVxuXG4vKipcbiAqIEEgc2VydmVybGVzcyBFbGFzdGlDYWNoZSBjYWNoZVxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkVsYXN0aUNhY2hlOjpTZXJ2ZXJsZXNzQ2FjaGVcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFNlcnZlcmxlc3NDYWNoZSBleHRlbmRzIFNlcnZlcmxlc3NDYWNoZUJhc2Uge1xuICAvKipcbiAgICogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdhd3MtY2RrLWxpYi5hd3MtZWxhc3RpY2FjaGUuU2VydmVybGVzc0NhY2hlJztcblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIGBTZXJ2ZXJsZXNzQ2FjaGVgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzU2VydmVybGVzc0NhY2hlKHg6IGFueSk6IHggaXMgU2VydmVybGVzc0NhY2hlIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgKHgpID09PSAnb2JqZWN0JyAmJiBFTEFTVElDQUNIRV9TRVJWRVJMRVNTQ0FDSEVfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHNlcnZlcmxlc3MgY2FjaGUgYnkgbmFtZVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWVcbiAgICogQHBhcmFtIHNlcnZlcmxlc3NDYWNoZU5hbWUgVGhlIG5hbWUgb2YgdGhlIGV4aXN0aW5nIHNlcnZlcmxlc3MgY2FjaGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVNlcnZlcmxlc3NDYWNoZU5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgc2VydmVybGVzc0NhY2hlTmFtZTogc3RyaW5nKTogSVNlcnZlcmxlc3NDYWNoZSB7XG4gICAgcmV0dXJuIFNlcnZlcmxlc3NDYWNoZS5mcm9tU2VydmVybGVzc0NhY2hlQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgc2VydmVybGVzc0NhY2hlTmFtZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3Rpbmcgc2VydmVybGVzcyBjYWNoZSBieSBBUk5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSBzZXJ2ZXJsZXNzQ2FjaGVBcm4gVGhlIEFSTiBvZiB0aGUgZXhpc3Rpbmcgc2VydmVybGVzcyBjYWNoZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU2VydmVybGVzc0NhY2hlQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHNlcnZlcmxlc3NDYWNoZUFybjogc3RyaW5nKTogSVNlcnZlcmxlc3NDYWNoZSB7XG4gICAgcmV0dXJuIFNlcnZlcmxlc3NDYWNoZS5mcm9tU2VydmVybGVzc0NhY2hlQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgc2VydmVybGVzc0NhY2hlQXJuIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBzZXJ2ZXJsZXNzIGNhY2hlIHVzaW5nIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSBhdHRycyBBIGBTZXJ2ZXJsZXNzQ2FjaGVBdHRyaWJ1dGVzYCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVNlcnZlcmxlc3NDYWNoZUF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFNlcnZlcmxlc3NDYWNoZUF0dHJpYnV0ZXMpOiBJU2VydmVybGVzc0NhY2hlIHtcbiAgICBsZXQgbmFtZTogc3RyaW5nO1xuICAgIGxldCBhcm46IHN0cmluZztcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICAgIGlmIChhdHRycy5zZXJ2ZXJsZXNzQ2FjaGVBcm4gJiYgYXR0cnMuc2VydmVybGVzc0NhY2hlTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignT25seSBvbmUgb2Ygc2VydmVybGVzc0NhY2hlQXJuIG9yIHNlcnZlcmxlc3NDYWNoZU5hbWUgY2FuIGJlIHByb3ZpZGVkLicsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cnMuc2VydmVybGVzc0NhY2hlQXJuKSB7XG4gICAgICBhcm4gPSBhdHRycy5zZXJ2ZXJsZXNzQ2FjaGVBcm47XG4gICAgICBjb25zdCBleHRyYWN0ZWRTZXJ2ZXJsZXNzQ2FjaGVOYW1lID0gc3RhY2suc3BsaXRBcm4oYXR0cnMuc2VydmVybGVzc0NhY2hlQXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lO1xuICAgICAgaWYgKCFleHRyYWN0ZWRTZXJ2ZXJsZXNzQ2FjaGVOYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1VuYWJsZSB0byBleHRyYWN0IHNlcnZlcmxlc3MgY2FjaGUgbmFtZSBmcm9tIEFSTi4nLCBzY29wZSk7XG4gICAgICB9XG4gICAgICBuYW1lID0gZXh0cmFjdGVkU2VydmVybGVzc0NhY2hlTmFtZTtcbiAgICB9IGVsc2UgaWYgKGF0dHJzLnNlcnZlcmxlc3NDYWNoZU5hbWUpIHtcbiAgICAgIG5hbWUgPSBhdHRycy5zZXJ2ZXJsZXNzQ2FjaGVOYW1lO1xuICAgICAgYXJuID0gc3RhY2suZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2VsYXN0aWNhY2hlJyxcbiAgICAgICAgcmVzb3VyY2U6ICdzZXJ2ZXJsZXNzY2FjaGUnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGF0dHJzLnNlcnZlcmxlc3NDYWNoZU5hbWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignT25lIG9mIHNlcnZlcmxlc3NDYWNoZU5hbWUgb3Igc2VydmVybGVzc0NhY2hlQXJuIGlzIHJlcXVpcmVkLicsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBTZXJ2ZXJsZXNzQ2FjaGVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBlbmdpbmUgPSBhdHRycy5lbmdpbmU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlTmFtZTogc3RyaW5nO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZUFybjogc3RyaW5nO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGJhY2t1cEFybnNUb1Jlc3RvcmUgPSBhdHRycy5iYWNrdXBBcm5zVG9SZXN0b3JlO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGttc0tleSA9IGF0dHJzLmttc0tleTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB2cGMgPSBhdHRycy52cGM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0cyA9IGF0dHJzLnN1Ym5ldHM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHMgPSBhdHRycy5zZWN1cml0eUdyb3VwcztcbiAgICAgIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXAgPSBhdHRycy51c2VyR3JvdXA7XG5cbiAgICAgIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uczogZWMyLkNvbm5lY3Rpb25zO1xuXG4gICAgICBjb25zdHJ1Y3RvcihzZXJ2ZXJsZXNzQ2FjaGVBcm46IHN0cmluZywgc2VydmVybGVzc0NhY2hlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgICAgIHRoaXMuc2VydmVybGVzc0NhY2hlQXJuID0gc2VydmVybGVzc0NhY2hlQXJuO1xuICAgICAgICB0aGlzLnNlcnZlcmxlc3NDYWNoZU5hbWUgPSBzZXJ2ZXJsZXNzQ2FjaGVOYW1lO1xuXG4gICAgICAgIGlmICh0aGlzLmVuZ2luZSkge1xuICAgICAgICAgIGxldCBkZWZhdWx0UG9ydDogZWMyLlBvcnQ7XG4gICAgICAgICAgc3dpdGNoICh0aGlzLmVuZ2luZSkge1xuICAgICAgICAgICAgY2FzZSBDYWNoZUVuZ2luZS5WQUxLRVlfTEFURVNUOlxuICAgICAgICAgICAgY2FzZSBDYWNoZUVuZ2luZS5WQUxLRVlfNzpcbiAgICAgICAgICAgIGNhc2UgQ2FjaGVFbmdpbmUuVkFMS0VZXzg6XG4gICAgICAgICAgICBjYXNlIENhY2hlRW5naW5lLlJFRElTX0xBVEVTVDpcbiAgICAgICAgICAgIGNhc2UgQ2FjaGVFbmdpbmUuUkVESVNfNzpcbiAgICAgICAgICAgICAgLy8gRG9jdW1lbnQgc2hvd2luZyB0aGUgZGVmYXVsdCBwb3J0XG4gICAgICAgICAgICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FbGFzdGlDYWNoZS9sYXRlc3QvZGcvc2V0LXVwLmh0bWwjZWxhc3RpY2FjaGUtaW5zdGFsbC1ncmFudC1hY2Nlc3MtVlBOXG4gICAgICAgICAgICAgIGRlZmF1bHRQb3J0ID0gZWMyLlBvcnQudGNwKDYzNzkpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ2FjaGVFbmdpbmUuTUVNQ0FDSEVEX0xBVEVTVDpcbiAgICAgICAgICAgICAgLy8gRG9jdW1lbnQgc2hvd2luZyB0aGUgZGVmYXVsdCBwb3J0XG4gICAgICAgICAgICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FbGFzdGlDYWNoZS9sYXRlc3QvZGcvc2V0LXVwLmh0bWwjZWxhc3RpY2FjaGUtaW5zdGFsbC1ncmFudC1hY2Nlc3MtVlBOXG4gICAgICAgICAgICAgIGRlZmF1bHRQb3J0ID0gZWMyLlBvcnQudGNwKDExMjExKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGBVbnN1cHBvcnRlZCBjYWNoZSBlbmdpbmU6ICR7dGhpcy5lbmdpbmV9YCwgc2NvcGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgZWMyLkNvbm5lY3Rpb25zKHtcbiAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBzOiB0aGlzLnNlY3VyaXR5R3JvdXBzLFxuICAgICAgICAgICAgZGVmYXVsdFBvcnQ6IGRlZmF1bHRQb3J0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgZWMyLkNvbm5lY3Rpb25zKHtcbiAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBzOiB0aGlzLnNlY3VyaXR5R3JvdXBzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoYXJuLCBuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBlbmdpbmU/OiBDYWNoZUVuZ2luZTtcbiAgcHVibGljIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZU5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGJhY2t1cEFybnNUb1Jlc3RvcmU/OiBzdHJpbmdbXTtcbiAgcHVibGljIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuICBwdWJsaWMgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG4gIHB1YmxpYyByZWFkb25seSBzdWJuZXRzPzogZWMyLklTdWJuZXRbXTtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG4gIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXA/OiBJVXNlckdyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBzZXJ2ZXJsZXNzIGNhY2hlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmRwb2ludCBhZGRyZXNzIG9mIHRoZSBzZXJ2ZXJsZXNzIGNhY2hlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVFbmRwb2ludEFkZHJlc3M6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmRwb2ludCBwb3J0IG9mIHRoZSBzZXJ2ZXJsZXNzIGNhY2hlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZXJ2ZXJsZXNzQ2FjaGVFbmRwb2ludFBvcnQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSByZWFkZXIgZW5kcG9pbnQgYWRkcmVzcyBvZiB0aGUgc2VydmVybGVzcyBjYWNoZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlUmVhZGVyRW5kcG9pbnRBZGRyZXNzOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcmVhZGVyIGVuZHBvaW50IHBvcnQgb2YgdGhlIHNlcnZlcmxlc3MgY2FjaGVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZlcmxlc3NDYWNoZVJlYWRlckVuZHBvaW50UG9ydDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBzZXJ2ZXJsZXNzIGNhY2hlXG4gICAqIENhbiBiZSAnQ1JFQVRJTkcnLCAnQVZBSUxBQkxFJywgJ0RFTEVUSU5HJywgJ0NSRUFURS1GQUlMRUQnLCAnTU9ESUZZSU5HJ1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmVybGVzc0NhY2hlU3RhdHVzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0byBuZXR3b3JrIGNvbm5lY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2VydmVybGVzc0NhY2hlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHt9KTtcblxuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgdGhpcy5lbmdpbmUgPSBwcm9wcy5lbmdpbmUgPz8gQ2FjaGVFbmdpbmUuVkFMS0VZX0xBVEVTVDtcbiAgICB0aGlzLnNlcnZlcmxlc3NDYWNoZU5hbWUgPSBwcm9wcy5zZXJ2ZXJsZXNzQ2FjaGVOYW1lID8/IExhenkuc3RyaW5nKHtcbiAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogNDAgfSksXG4gICAgfSk7XG4gICAgdGhpcy5rbXNLZXkgPSBwcm9wcy5rbXNLZXk7XG4gICAgdGhpcy52cGMgPSBwcm9wcy52cGM7XG4gICAgdGhpcy51c2VyR3JvdXAgPSBwcm9wcy51c2VyR3JvdXA7XG5cbiAgICB0aGlzLnZhbGlkYXRlRGVzY3JpcHRpb24ocHJvcHMuZGVzY3JpcHRpb24pO1xuICAgIHRoaXMudmFsaWRhdGVEYXRhU3RvcmFnZUxpbWl0cyhwcm9wcy5jYWNoZVVzYWdlTGltaXRzKTtcbiAgICB0aGlzLnZhbGlkYXRlUmVxdWVzdFJhdGVMaW1pdHMocHJvcHMuY2FjaGVVc2FnZUxpbWl0cyk7XG4gICAgdGhpcy52YWxpZGF0ZUJhY2t1cFNldHRpbmdzKHByb3BzLmJhY2t1cCk7XG4gICAgdGhpcy52YWxpZGF0ZVVzZXJHcm91cENvbXBhdGliaWxpdHkodGhpcy5lbmdpbmUsIHRoaXMudXNlckdyb3VwKTtcblxuICAgIGNvbnN0IHN1Ym5ldENvbmZpZyA9IHRoaXMuY29uZmlndXJlU3VibmV0cyhwcm9wcyk7XG4gICAgY29uc3Qgc3VibmV0SWRzID0gc3VibmV0Q29uZmlnLnN1Ym5ldElkcztcbiAgICB0aGlzLnN1Ym5ldHMgPSBzdWJuZXRDb25maWcuc3VibmV0cztcblxuICAgIGNvbnN0IHNlY3VyaXR5R3JvdXBDb25maWcgPSB0aGlzLmNvbmZpZ3VyZVNlY3VyaXR5R3JvdXBzKHByb3BzKTtcbiAgICBjb25zdCBzZWN1cml0eUdyb3VwSWRzID0gc2VjdXJpdHlHcm91cENvbmZpZy5zZWN1cml0eUdyb3VwSWRzO1xuICAgIHRoaXMuc2VjdXJpdHlHcm91cHMgPSBzZWN1cml0eUdyb3VwQ29uZmlnLnNlY3VyaXR5R3JvdXBzO1xuXG4gICAgY29uc3QgW2VuZ2luZSwgdmVyc2lvbl0gPSB0aGlzLmVuZ2luZS5zcGxpdCgnXycpO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgQ2ZuU2VydmVybGVzc0NhY2hlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGVuZ2luZTogZW5naW5lLFxuICAgICAgbWFqb3JFbmdpbmVWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgc2VydmVybGVzc0NhY2hlTmFtZTogdGhpcy5zZXJ2ZXJsZXNzQ2FjaGVOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgY2FjaGVVc2FnZUxpbWl0czogdGhpcy5yZW5kZXJDYWNoZVVzYWdlTGltaXRzKHByb3BzLmNhY2hlVXNhZ2VMaW1pdHMpLFxuICAgICAgZGFpbHlTbmFwc2hvdFRpbWU6IHByb3BzLmJhY2t1cD8uYmFja3VwVGltZSA/IHRoaXMuZm9ybWF0QmFja3VwVGltZShwcm9wcy5iYWNrdXAuYmFja3VwVGltZSkgOiB1bmRlZmluZWQsXG4gICAgICBzbmFwc2hvdFJldGVudGlvbkxpbWl0OiBwcm9wcy5iYWNrdXA/LmJhY2t1cFJldGVudGlvbkxpbWl0LFxuICAgICAgZmluYWxTbmFwc2hvdE5hbWU6IHByb3BzLmJhY2t1cD8uYmFja3VwTmFtZUJlZm9yZURlbGV0aW9uLFxuICAgICAgc25hcHNob3RBcm5zVG9SZXN0b3JlOiBwcm9wcy5iYWNrdXA/LmJhY2t1cEFybnNUb1Jlc3RvcmUsXG4gICAgICBrbXNLZXlJZDogcHJvcHMua21zS2V5Py5rZXlJZCxcbiAgICAgIHN1Ym5ldElkczogc3VibmV0SWRzLFxuICAgICAgc2VjdXJpdHlHcm91cElkczogc2VjdXJpdHlHcm91cElkcyxcbiAgICAgIHVzZXJHcm91cElkOiBwcm9wcy51c2VyR3JvdXA/LnVzZXJHcm91cE5hbWUsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMudXNlckdyb3VwKSB7XG4gICAgICBjb25zdCB1c2VyR3JvdXBSZXNvdXJjZSA9IHByb3BzLnVzZXJHcm91cC5ub2RlLmZpbmRDaGlsZCgnUmVzb3VyY2UnKSBhcyBDZm5Vc2VyR3JvdXA7XG4gICAgICByZXNvdXJjZS5hZGREZXBlbmRlbmN5KHVzZXJHcm91cFJlc291cmNlKTtcbiAgICB9XG5cbiAgICB0aGlzLmJhY2t1cEFybnNUb1Jlc3RvcmUgPSByZXNvdXJjZS5zbmFwc2hvdEFybnNUb1Jlc3RvcmU7XG4gICAgdGhpcy5zZXJ2ZXJsZXNzQ2FjaGVBcm4gPSByZXNvdXJjZS5hdHRyQXJuO1xuICAgIHRoaXMuc2VydmVybGVzc0NhY2hlRW5kcG9pbnRBZGRyZXNzID0gcmVzb3VyY2UuYXR0ckVuZHBvaW50QWRkcmVzcztcbiAgICB0aGlzLnNlcnZlcmxlc3NDYWNoZUVuZHBvaW50UG9ydCA9IHJlc291cmNlLmF0dHJFbmRwb2ludFBvcnQ7XG4gICAgdGhpcy5zZXJ2ZXJsZXNzQ2FjaGVSZWFkZXJFbmRwb2ludEFkZHJlc3MgPSByZXNvdXJjZS5hdHRyUmVhZGVyRW5kcG9pbnRBZGRyZXNzO1xuICAgIHRoaXMuc2VydmVybGVzc0NhY2hlUmVhZGVyRW5kcG9pbnRQb3J0ID0gcmVzb3VyY2UuYXR0clJlYWRlckVuZHBvaW50UG9ydDtcbiAgICB0aGlzLnNlcnZlcmxlc3NDYWNoZVN0YXR1cyA9IHJlc291cmNlLmF0dHJTdGF0dXM7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gbmV3IGVjMi5Db25uZWN0aW9ucyh7XG4gICAgICBzZWN1cml0eUdyb3VwczogdGhpcy5zZWN1cml0eUdyb3VwcyxcbiAgICAgIGRlZmF1bHRQb3J0OiBlYzIuUG9ydC50Y3AoVG9rZW4uYXNOdW1iZXIodGhpcy5zZXJ2ZXJsZXNzQ2FjaGVFbmRwb2ludFBvcnQpKSxcbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBFTEFTVElDQUNIRV9TRVJWRVJMRVNTQ0FDSEVfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGRlc2NyaXB0aW9uIG1lZXRzIEFXUyByZXF1aXJlbWVudHNcbiAgICpcbiAgICogQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBkZXNjcmlwdGlvbiB0byB2YWxpZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFkZXNjcmlwdGlvbiB8fCBUb2tlbi5pc1VucmVzb2x2ZWQoZGVzY3JpcHRpb24pKSByZXR1cm47XG5cbiAgICBpZiAoZGVzY3JpcHRpb24ubGVuZ3RoID4gMjU1KSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGBEZXNjcmlwdGlvbiBtdXN0IG5vdCBleGNlZWQgMjU1IGNoYXJhY3RlcnMsIGN1cnJlbnRseSBoYXMgJHtkZXNjcmlwdGlvbi5sZW5ndGh9YCwgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKGRlc2NyaXB0aW9uLmluY2x1ZGVzKCc8JykgfHwgZGVzY3JpcHRpb24uaW5jbHVkZXMoJz4nKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignRGVzY3JpcHRpb24gbXVzdCBub3QgY29udGFpbiA8IG9yID4gY2hhcmFjdGVycycsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBkYXRhIHN0b3JhZ2Ugc2l6ZSBsaW1pdHNcbiAgICpcbiAgICogQHBhcmFtIGxpbWl0cyBUaGUgdXNhZ2UgbGltaXRzIGNvbnRhaW5pbmcgZGF0YSBzdG9yYWdlIHNldHRpbmdzXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRGF0YVN0b3JhZ2VMaW1pdHMobGltaXRzPzogQ2FjaGVVc2FnZUxpbWl0c1Byb3BlcnR5KTogdm9pZCB7XG4gICAgaWYgKCFsaW1pdHMpIHJldHVybjtcblxuICAgIGlmIChsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZSAmJiAhbGltaXRzLmRhdGFTdG9yYWdlTWluaW11bVNpemUuaXNVbnJlc29sdmVkKCkgJiZcbiAgICAgIChsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZS50b0dpYmlieXRlcygpIDwgREFUQV9TVE9SQUdFX01JTl9HQiB8fCBsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZS50b0dpYmlieXRlcygpID4gREFUQV9TVE9SQUdFX01BWF9HQikpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0RhdGEgc3RvcmFnZSBtaW5pbXVtIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA1MDAwIEdCLicsIHRoaXMpO1xuICAgIH1cbiAgICBpZiAobGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUgJiYgIWxpbWl0cy5kYXRhU3RvcmFnZU1heGltdW1TaXplLmlzVW5yZXNvbHZlZCgpICYmXG4gICAgICAobGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUudG9HaWJpYnl0ZXMoKSA8IERBVEFfU1RPUkFHRV9NSU5fR0IgfHwgbGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUudG9HaWJpYnl0ZXMoKSA+IERBVEFfU1RPUkFHRV9NQVhfR0IpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdEYXRhIHN0b3JhZ2UgbWF4aW11bSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgNTAwMCBHQi4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAobGltaXRzLmRhdGFTdG9yYWdlTWluaW11bVNpemUgJiYgbGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUgJiZcbiAgICAgICFsaW1pdHMuZGF0YVN0b3JhZ2VNaW5pbXVtU2l6ZS5pc1VucmVzb2x2ZWQoKSAmJiAhbGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUuaXNVbnJlc29sdmVkKCkgJiZcbiAgICAgIGxpbWl0cy5kYXRhU3RvcmFnZU1pbmltdW1TaXplLnRvR2liaWJ5dGVzKCkgPiBsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZS50b0dpYmlieXRlcygpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdEYXRhIHN0b3JhZ2UgbWluaW11bSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIG1heGltdW0nLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgcmVxdWVzdCByYXRlIGxpbWl0c1xuICAgKlxuICAgKiBAcGFyYW0gbGltaXRzIFRoZSB1c2FnZSBsaW1pdHMgY29udGFpbmluZyByZXF1ZXN0IHJhdGUgc2V0dGluZ3NcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVSZXF1ZXN0UmF0ZUxpbWl0cyhsaW1pdHM/OiBDYWNoZVVzYWdlTGltaXRzUHJvcGVydHkpOiB2b2lkIHtcbiAgICBpZiAoIWxpbWl0cykgcmV0dXJuO1xuXG4gICAgaWYgKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSAhPT0gdW5kZWZpbmVkICYmICFUb2tlbi5pc1VucmVzb2x2ZWQobGltaXRzLnJlcXVlc3RSYXRlTGltaXRNaW5pbXVtKSAmJlxuICAgICAgKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSA8IFJFUVVFU1RfUkFURV9NSU5fRUNQVSB8fCBsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1pbmltdW0gPiBSRVFVRVNUX1JBVEVfTUFYX0VDUFUpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdSZXF1ZXN0IHJhdGUgbWluaW11bSBtdXN0IGJlIGJldHdlZW4gMSwwMDAgYW5kIDE1LDAwMCwwMDAgRUNQVXMgcGVyIHNlY29uZCcsIHRoaXMpO1xuICAgIH1cbiAgICBpZiAobGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtICE9PSB1bmRlZmluZWQgJiYgIVRva2VuLmlzVW5yZXNvbHZlZChsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1heGltdW0pICYmXG4gICAgICAobGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtIDwgUkVRVUVTVF9SQVRFX01JTl9FQ1BVIHx8IGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWF4aW11bSA+IFJFUVVFU1RfUkFURV9NQVhfRUNQVSkpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1JlcXVlc3QgcmF0ZSBtYXhpbXVtIG11c3QgYmUgYmV0d2VlbiAxLDAwMCBhbmQgMTUsMDAwLDAwMCBFQ1BVcyBwZXIgc2Vjb25kJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQobGltaXRzLnJlcXVlc3RSYXRlTGltaXRNaW5pbXVtKSAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWF4aW11bSkgJiZcbiAgICAgIGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSAhPT0gdW5kZWZpbmVkICYmIGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWF4aW11bSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1pbmltdW0gPiBsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1heGltdW0pIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1JlcXVlc3QgcmF0ZSBtaW5pbXVtIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gbWF4aW11bScsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBiYWNrdXAgc2V0dGluZ3MgbWVldCBBV1MgcmVxdWlyZW1lbnRzXG4gICAqXG4gICAqIEBwYXJhbSBiYWNrdXAgVGhlIGJhY2t1cCBzZXR0aW5ncyB0byB2YWxpZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUJhY2t1cFNldHRpbmdzKGJhY2t1cD86IEJhY2t1cFNldHRpbmdzKTogdm9pZCB7XG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQoYmFja3VwPy5iYWNrdXBSZXRlbnRpb25MaW1pdCkgJiYgYmFja3VwPy5iYWNrdXBSZXRlbnRpb25MaW1pdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBsaW1pdCA9IGJhY2t1cC5iYWNrdXBSZXRlbnRpb25MaW1pdDtcbiAgICAgIGlmIChsaW1pdCA8IDEgfHwgbGltaXQgPiAzNSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdCYWNrdXAgcmV0ZW50aW9uIGxpbWl0IG11c3QgYmUgYmV0d2VlbiAxIGFuZCAzNSBkYXlzJywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQoYmFja3VwPy5iYWNrdXBOYW1lQmVmb3JlRGVsZXRpb24pICYmIGJhY2t1cD8uYmFja3VwTmFtZUJlZm9yZURlbGV0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBiYWNrdXAuYmFja3VwTmFtZUJlZm9yZURlbGV0aW9uO1xuXG4gICAgICBpZiAoIS9eW2EtekEtWl0vLnRlc3QobmFtZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignRmluYWwgYmFja3VwIG5hbWUgbXVzdCBiZWdpbiB3aXRoIGEgbGV0dGVyJywgdGhpcyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghL15bYS16QS1aMC05LV0rJC8udGVzdChuYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdGaW5hbCBiYWNrdXAgbmFtZSBtdXN0IGNvbnRhaW4gb25seSBBU0NJSSBsZXR0ZXJzLCBkaWdpdHMsIGFuZCBoeXBoZW5zJywgdGhpcyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuYW1lLmVuZHNXaXRoKCctJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignRmluYWwgYmFja3VwIG5hbWUgbXVzdCBub3QgZW5kIHdpdGggYSBoeXBoZW4nLCB0aGlzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUuaW5jbHVkZXMoJy0tJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignRmluYWwgYmFja3VwIG5hbWUgbXVzdCBub3QgY29udGFpbiB0d28gY29uc2VjdXRpdmUgaHlwaGVucycsIHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB1c2VyIGdyb3VwIGNvbXBhdGliaWxpdHkgd2l0aCBjYWNoZSBlbmdpbmVcbiAgICpcbiAgICogQHBhcmFtIGVuZ2luZSBUaGUgY2FjaGUgZW5naW5lXG4gICAqIEBwYXJhbSB1c2VyR3JvdXAgVGhlIHVzZXIgZ3JvdXAgdG8gdmFsaWRhdGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVVc2VyR3JvdXBDb21wYXRpYmlsaXR5KGVuZ2luZTogQ2FjaGVFbmdpbmUsIHVzZXJHcm91cD86IElVc2VyR3JvdXApOiB2b2lkIHtcbiAgICBpZiAoIXVzZXJHcm91cCkgcmV0dXJuO1xuXG4gICAgaWYgKGVuZ2luZSA9PT0gQ2FjaGVFbmdpbmUuTUVNQ0FDSEVEX0xBVEVTVCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignVXNlciBncm91cHMgY2Fubm90IGJlIHVzZWQgd2l0aCBNZW1jYWNoZWQgZW5naW5lcy4gT25seSBSZWRpcyBhbmQgVmFsa2V5IGVuZ2luZXMgc3VwcG9ydCB1c2VyIGdyb3Vwcy4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoZW5naW5lID09PSBDYWNoZUVuZ2luZS5SRURJU19MQVRFU1QgJiYgdXNlckdyb3VwLmVuZ2luZSAhPT0gVXNlckVuZ2luZS5SRURJUykge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUmVkaXMgY2FjaGUgY2FuIG9ubHkgdXNlIFJlZGlzIHVzZXIgZ3JvdXBzLicsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgY2FjaGUgdXNhZ2UgbGltaXRzIGZvciBDbG91ZEZvcm1hdGlvblxuICAgKlxuICAgKiBAcGFyYW0gbGltaXRzIFRoZSB1c2FnZSBsaW1pdHMgdG8gcmVuZGVyXG4gICAqIEByZXR1cm5zIENsb3VkRm9ybWF0aW9uLWNvbXBhdGlibGUgdXNhZ2UgbGltaXRzIG9iamVjdCBvciB1bmRlZmluZWRcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyQ2FjaGVVc2FnZUxpbWl0cyhsaW1pdHM/OiBDYWNoZVVzYWdlTGltaXRzUHJvcGVydHkpOiBhbnkge1xuICAgIGlmICghbGltaXRzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgY2FjaGVVc2FnZUxpbWl0czogYW55ID0ge307XG5cbiAgICBpZiAobGltaXRzLmRhdGFTdG9yYWdlTWluaW11bVNpemUgIT09IHVuZGVmaW5lZCB8fCBsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjYWNoZVVzYWdlTGltaXRzLmRhdGFTdG9yYWdlID0ge1xuICAgICAgICB1bml0OiBEYXRhU3RvcmFnZVVuaXQuR0lHQUJZVEVTLFxuICAgICAgICAuLi4obGltaXRzLmRhdGFTdG9yYWdlTWluaW11bVNpemUgIT09IHVuZGVmaW5lZCAmJiB7IG1pbmltdW06IGxpbWl0cy5kYXRhU3RvcmFnZU1pbmltdW1TaXplLnRvR2liaWJ5dGVzKCkgfSksXG4gICAgICAgIC4uLihsaW1pdHMuZGF0YVN0b3JhZ2VNYXhpbXVtU2l6ZSAhPT0gdW5kZWZpbmVkICYmIHsgbWF4aW11bTogbGltaXRzLmRhdGFTdG9yYWdlTWF4aW11bVNpemUudG9HaWJpYnl0ZXMoKSB9KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSAhPT0gdW5kZWZpbmVkIHx8IGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWF4aW11bSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjYWNoZVVzYWdlTGltaXRzLmVjcHVQZXJTZWNvbmQgPSB7XG4gICAgICAgIC4uLihsaW1pdHMucmVxdWVzdFJhdGVMaW1pdE1pbmltdW0gIT09IHVuZGVmaW5lZCAmJiB7IG1pbmltdW06IGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWluaW11bSB9KSxcbiAgICAgICAgLi4uKGxpbWl0cy5yZXF1ZXN0UmF0ZUxpbWl0TWF4aW11bSAhPT0gdW5kZWZpbmVkICYmIHsgbWF4aW11bTogbGltaXRzLnJlcXVlc3RSYXRlTGltaXRNYXhpbXVtIH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY2FjaGVVc2FnZUxpbWl0cykubGVuZ3RoID4gMCA/IGNhY2hlVXNhZ2VMaW1pdHMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIHN1Ym5ldHMgZm9yIHRoZSBjYWNoZVxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIFNlcnZlcmxlc3NDYWNoZSBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIHN1Ym5ldCBJRHMgYW5kIHN1Ym5ldCBvYmplY3RzXG4gICAqL1xuICBwcml2YXRlIGNvbmZpZ3VyZVN1Ym5ldHMocHJvcHM6IFNlcnZlcmxlc3NDYWNoZVByb3BzKTogeyBzdWJuZXRJZHM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkOyBzdWJuZXRzOiBlYzIuSVN1Ym5ldFtdIHwgdW5kZWZpbmVkIH0ge1xuICAgIGxldCBzZWxlY3RlZFN1Ym5ldHM7XG4gICAgaWYgKHByb3BzLnZwY1N1Ym5ldHMpIHtcbiAgICAgIHNlbGVjdGVkU3VibmV0cyA9IHByb3BzLnZwYy5zZWxlY3RTdWJuZXRzKHByb3BzLnZwY1N1Ym5ldHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RlZFN1Ym5ldHMgPSBwcm9wcy52cGMuc2VsZWN0U3VibmV0cyh7XG4gICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VibmV0SWRzOiBzZWxlY3RlZFN1Ym5ldHMuc3VibmV0SWRzLmxlbmd0aCA+IDAgPyBzZWxlY3RlZFN1Ym5ldHMuc3VibmV0SWRzIDogdW5kZWZpbmVkLFxuICAgICAgc3VibmV0czogc2VsZWN0ZWRTdWJuZXRzLnN1Ym5ldHMubGVuZ3RoID4gMCA/IHNlbGVjdGVkU3VibmV0cy5zdWJuZXRzIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIHNlY3VyaXR5IGdyb3VwcyBmb3IgdGhlIGNhY2hlXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgU2VydmVybGVzc0NhY2hlIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgc2VjdXJpdHkgZ3JvdXAgSURzIGFuZCBzZWN1cml0eSBncm91cCBvYmplY3RzXG4gICAqL1xuICBwcml2YXRlIGNvbmZpZ3VyZVNlY3VyaXR5R3JvdXBzKHByb3BzOiBTZXJ2ZXJsZXNzQ2FjaGVQcm9wcyk6IHsgc2VjdXJpdHlHcm91cElkczogc3RyaW5nW107IHNlY3VyaXR5R3JvdXBzOiBlYzIuSVNlY3VyaXR5R3JvdXBbXSB9IHtcbiAgICBpZiAocHJvcHMuc2VjdXJpdHlHcm91cHMgJiYgcHJvcHMuc2VjdXJpdHlHcm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VjdXJpdHlHcm91cElkczogcHJvcHMuc2VjdXJpdHlHcm91cHMubWFwKHNnID0+IHNnLnNlY3VyaXR5R3JvdXBJZCksXG4gICAgICAgIHNlY3VyaXR5R3JvdXBzOiBwcm9wcy5zZWN1cml0eUdyb3VwcyxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5ld1NlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgJ1NlY3VyaXR5R3JvdXAnLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgU2VjdXJpdHkgZ3JvdXAgZm9yICR7dGhpcy5ub2RlLmlkfSBjYWNoZS5gLFxuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VjdXJpdHlHcm91cElkczogW25ld1NlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkXSxcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IFtuZXdTZWN1cml0eUdyb3VwXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBzY2hlZHVsZSB0byBISDpNTSBmb3JtYXQgZm9yIGRhaWx5IGJhY2t1cHNcbiAgICpcbiAgICogQHBhcmFtIHNjaGVkdWxlIFRoZSBzY2hlZHVsZSB0byBmb3JtYXRcbiAgICogQHJldHVybnMgVGltZSBzdHJpbmcgaW4gSEg6TU0gZm9ybWF0XG4gICAqL1xuICBwcml2YXRlIGZvcm1hdEJhY2t1cFRpbWUoc2NoZWR1bGU6IGV2ZW50cy5TY2hlZHVsZSk6IHN0cmluZyB7XG4gICAgY29uc3QgV0lMRF9DQVJEID0gJyonO1xuICAgIGNvbnN0IFtcbiAgICAgIG1pbnV0ZUV4cHJlc3Npb24sIGhvdXJFeHByZXNzaW9uLFxuICAgICAgZGF5RXhwcmVzc2lvbiwgbW9udGhFeHByZXNzaW9uLFxuICAgICAgd2Vla0RheUV4cHJlc3Npb24sIHllYXJFeHByZXNzaW9uLFxuICAgIF0gPSBzY2hlZHVsZS5leHByZXNzaW9uU3RyaW5nLnN1YnN0cig1KS5zbGljZSgwLCAtMSkuc3BsaXQoJyAnKTtcblxuICAgIGlmIChkYXlFeHByZXNzaW9uICE9IFdJTERfQ0FSRCB8fCBtb250aEV4cHJlc3Npb24gIT0gV0lMRF9DQVJEIHx8IHllYXJFeHByZXNzaW9uICE9IFdJTERfQ0FSRCB8fCB3ZWVrRGF5RXhwcmVzc2lvbiAhPSAnPycpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0ZvciBub3csIG9ubHkgZGFpbHkgYmFja3VwIHRpbWUgaXMgYXZhaWxhYmxlIChzdXBwb3J0cyBqdXN0IGhvdXIgYW5kIG1pbnV0ZSkuIERheSwgbW9udGgsIHllYXIsIGFuZCB3ZWVrRGF5IGFyZSBub3QgYWxsb3dlZCcsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGhvdXIgPSBob3VyRXhwcmVzc2lvbiA9PSBXSUxEX0NBUkQgPyAnMCcgOiBob3VyRXhwcmVzc2lvbjtcbiAgICBjb25zdCBtaW51dGUgPSBtaW51dGVFeHByZXNzaW9uID09IFdJTERfQ0FSRCA/ICcwJyA6IG1pbnV0ZUV4cHJlc3Npb247XG5cbiAgICByZXR1cm4gYCR7aG91ci5wYWRTdGFydCgyLCAnMCcpfToke21pbnV0ZS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gIH1cbn1cbiJdfQ==
|
package/lib/user-base.js
CHANGED
|
@@ -8,7 +8,7 @@ const core_1 = require("aws-cdk-lib/core");
|
|
|
8
8
|
* Access control configuration for ElastiCache users.
|
|
9
9
|
*/
|
|
10
10
|
class AccessControl {
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.AccessControl", version: "2.
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.AccessControl", version: "2.234.1-alpha.0" };
|
|
12
12
|
/**
|
|
13
13
|
* Create access control from an access string.
|
|
14
14
|
*
|
|
@@ -36,7 +36,7 @@ class AccessControlString extends AccessControl {
|
|
|
36
36
|
* Base class for ElastiCache users.
|
|
37
37
|
*/
|
|
38
38
|
class UserBase extends core_1.Resource {
|
|
39
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserBase", version: "2.
|
|
39
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserBase", version: "2.234.1-alpha.0" };
|
|
40
40
|
/**
|
|
41
41
|
* Import an existing user by ID.
|
|
42
42
|
*
|
package/lib/user-group.js
CHANGED
|
@@ -47,7 +47,7 @@ const ELASTICACHE_USERGROUP_SYMBOL = Symbol.for('@aws-cdk/aws-elasticache.UserGr
|
|
|
47
47
|
* Base class for UserGroup constructs
|
|
48
48
|
*/
|
|
49
49
|
class UserGroupBase extends core_1.Resource {
|
|
50
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroupBase", version: "2.
|
|
50
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroupBase", version: "2.234.1-alpha.0" };
|
|
51
51
|
/**
|
|
52
52
|
* Add a user to this user group
|
|
53
53
|
*
|
|
@@ -90,7 +90,7 @@ let UserGroup = (() => {
|
|
|
90
90
|
UserGroup = _classThis = _classDescriptor.value;
|
|
91
91
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
92
92
|
}
|
|
93
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroup", version: "2.
|
|
93
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-elasticache-alpha.UserGroup", version: "2.234.1-alpha.0" };
|
|
94
94
|
/**
|
|
95
95
|
* Uniquely identifies this class
|
|
96
96
|
*/
|
|
@@ -211,8 +211,8 @@ let UserGroup = (() => {
|
|
|
211
211
|
(0, metadata_resource_1.addConstructMetadata)(this, props);
|
|
212
212
|
this.engine = props.engine ?? common_1.UserEngine.VALKEY;
|
|
213
213
|
this.userGroupName = props.userGroupName ?? core_1.Lazy.string({
|
|
214
|
-
//
|
|
215
|
-
produce: () => core_1.Names.
|
|
214
|
+
// ElastiCache is allowing only uppercase and max 40 characters for user group id
|
|
215
|
+
produce: () => core_1.Names.uniqueResourceName(this, { maxLength: 40 }).toLocaleLowerCase(),
|
|
216
216
|
});
|
|
217
217
|
if (props.users) {
|
|
218
218
|
this._users.push(...props.users);
|
|
@@ -295,4 +295,4 @@ let UserGroup = (() => {
|
|
|
295
295
|
return UserGroup = _classThis;
|
|
296
296
|
})();
|
|
297
297
|
exports.UserGroup = UserGroup;
|
|
298
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInVzZXItZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUVBQTJEO0FBQzNELDJDQUFnSTtBQUNoSSw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBRTFFLHFDQUFzQztBQUd0QyxNQUFNLDRCQUE0QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQTBEdEY7O0dBRUc7QUFDSCxNQUFzQixhQUFjLFNBQVEsZUFBUTs7SUFvQmxEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsS0FBWTs7Ozs7Ozs7OztRQUN6QixNQUFNLElBQUksOEJBQXVCLENBQUMsbUdBQW1HLENBQUMsQ0FBQztLQUN4STs7QUEzQkgsc0NBNEJDO0FBb0NEOzs7O0dBSUc7SUFFVSxTQUFTOzRCQURyQixvQ0FBa0I7Ozs7c0JBQ1ksYUFBYTs7O3lCQUFyQixTQUFRLFdBQWE7Ozs7bUNBOEx6QyxJQUFBLGtDQUFjLEdBQUU7WUFDakIsd0tBQU8sT0FBTyw2REFHYjtZQWxNSCw2S0FtTUM7Ozs7O1FBbE1DOztXQUVHO1FBQ0ksTUFBTSxDQUFVLHFCQUFxQixHQUFXLHVDQUF1QyxDQUFDO1FBRS9GOztXQUVHO1FBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFNO1lBQzlCLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLDRCQUE0QixJQUFJLENBQUMsQ0FBQztTQUNuRjtRQUVEOzs7Ozs7V0FNRztRQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxhQUFxQjtZQUNqRixPQUFPLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztTQUN4RTtRQUVEOzs7Ozs7V0FNRztRQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxZQUFvQjtZQUMvRSxPQUFPLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztTQUN2RTtRQUVEOzs7Ozs7V0FNRztRQUNJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjs7Ozs7Ozs7OztZQUM1RixJQUFJLGFBQXFCLENBQUM7WUFDMUIsSUFBSSxZQUFvQixDQUFDO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLFlBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFOUIsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSxJQUFJLHNCQUFlLENBQUMsNERBQTRELEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakcsQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN2QixZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztnQkFDbEMsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsZ0JBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFlBQVksQ0FBQztnQkFDOUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7b0JBQzVCLE1BQU0sSUFBSSxzQkFBZSxDQUFDLDZDQUE2QyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsRixDQUFDO2dCQUNELGFBQWEsR0FBRyxzQkFBc0IsQ0FBQztZQUN6QyxDQUFDO2lCQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMvQixhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztnQkFDcEMsWUFBWSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxhQUFhO29CQUN0QixRQUFRLEVBQUUsV0FBVztvQkFDckIsWUFBWSxFQUFFLEtBQUssQ0FBQyxhQUFhO2lCQUNsQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLHNCQUFlLENBQUMsbURBQW1ELEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDeEYsQ0FBQztZQUVELE1BQU0sTUFBTyxTQUFRLGFBQWE7Z0JBQ2hCLE1BQU0sQ0FBYztnQkFDcEIsYUFBYSxDQUFTO2dCQUN0QixZQUFZLENBQVM7Z0JBRXJDLElBQVcsS0FBSztvQkFDZCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDcEQsQ0FBQztnQkFFRCxZQUFZLGFBQXFCLEVBQUUsY0FBc0I7b0JBQ3ZELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDO29CQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUM3QixDQUFDO2FBQ0Y7WUFFRCxPQUFPLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztTQUNoRDtRQUVlLE1BQU0sR0F6RlgsbURBQVMsQ0F5RmdCO1FBQ3BCLGFBQWEsQ0FBUztRQUNyQixNQUFNLEdBQVksRUFBRSxDQUFDO1FBQ3RDOzs7O1dBSUc7UUFDYSxZQUFZLENBQVM7UUFDckM7Ozs7O1dBS0c7UUFDYSxlQUFlLENBQVM7UUFFdkIsUUFBUSxDQUFlO1FBRXhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBd0IsRUFBRTtZQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7O21EQTdHWixTQUFTOzs7O1lBK0dsQixtQ0FBbUM7WUFDbkMsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLG1CQUFVLENBQUMsTUFBTSxDQUFDO1lBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsSUFBSSxXQUFJLENBQUMsTUFBTSxDQUFDO2dCQUN0RCxtREFBbUQ7Z0JBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFO2FBQ3hELENBQUMsQ0FBQztZQUVILElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDhCQUFZLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDakQsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWE7Z0JBQy9CLE9BQU8sRUFBRSxXQUFJLENBQUMsSUFBSSxDQUFDO29CQUNqQixPQUFPLEVBQUUsR0FBRyxFQUFFO3dCQUNaLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDOUMsQ0FBQztpQkFDRixDQUFDO2FBQ0gsQ0FBQyxDQUFDO1lBRUgsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2hCLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDNUQsQ0FBQztZQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDMUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUVoRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSw0QkFBNEIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQzVFO1FBRUQ7O1dBRUc7UUFDSyxpQkFBaUIsQ0FBQyxJQUFXO1lBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QztRQUVEOzs7OztXQUtHO1FBQ0gsSUFBVyxLQUFLO1lBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3BCO1FBRUQ7O1dBRUc7UUFDSyxhQUFhO1lBQ25CLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ3hGLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxJQUFJLHNCQUFlLENBQUMsdURBQXVELEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDM0YsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxtQkFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLG1CQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ3JDLE1BQU0sSUFBSSxzQkFBZSxDQUFDLGdEQUFnRCxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNwRixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQztnQkFDN0UsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUNwQixNQUFNLElBQUksc0JBQWUsQ0FBQyx3RUFBd0UsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDNUcsQ0FBQztZQUNILENBQUM7U0FDRjtRQUVEOzs7O1dBSUc7UUFFSSxPQUFPLENBQUMsSUFBVzs7Ozs7Ozs7OztZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7O1lBbE1VLHVEQUFTOzs7OztBQUFULDhCQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuVXNlckdyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNhY2hlJztcbmltcG9ydCB7IElSZXNvdXJjZSwgUmVzb3VyY2UsIEFybkZvcm1hdCwgU3RhY2ssIExhenksIFZhbGlkYXRpb25FcnJvciwgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IsIE5hbWVzIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBVc2VyRW5naW5lIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgSVVzZXIgfSBmcm9tICcuL3VzZXItYmFzZSc7XG5cbmNvbnN0IEVMQVNUSUNBQ0hFX1VTRVJHUk9VUF9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtZWxhc3RpY2FjaGUuVXNlckdyb3VwJyk7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgZGVmaW5pbmcgYW4gRWxhc3RpQ2FjaGUgVXNlckdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckdyb3VwUHJvcHMge1xuICAvKipcbiAgICogRW5mb3JjZXMgYSBwYXJ0aWN1bGFyIHBoeXNpY2FsIHVzZXIgZ3JvdXAgbmFtZS5cbiAgICogQGRlZmF1bHQgPGdlbmVyYXRlZD5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIHR5cGUgZm9yIHRoZSB1c2VyIGdyb3VwXG4gICAqIEVudW0gb3B0aW9uczogVXNlckVuZ2luZS5WQUxLRVksIFVzZXJFbmdpbmUuUkVESVNcbiAgICpcbiAgICogQGRlZmF1bHQgVXNlckVuZ2luZS5WQUxLRVlcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHVzZXJzIGluc2lkZSB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHVzZXJzXG4gICAqL1xuICByZWFkb25seSB1c2Vycz86IElVc2VyW107XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFbGFzdGlDYWNoZSBVc2VyR3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVXNlckdyb3VwIGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIgZ3JvdXBcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHVzZXJzIGluIHRoZSB1c2VyIGdyb3VwXG4gICAqL1xuICByZWFkb25seSB1c2Vycz86IElVc2VyW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cEFybjogc3RyaW5nO1xuICAvKipcbiAgICogQWRkIGEgdXNlciB0byB0aGlzIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gYWRkXG4gICAqL1xuICBhZGRVc2VyKHVzZXI6IElVc2VyKTogdm9pZDtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBVc2VyR3JvdXAgY29uc3RydWN0c1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVXNlckdyb3VwQmFzZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVVzZXJHcm91cCB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlckdyb3VwTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZ2luZSB0eXBlIGZvciB0aGUgdXNlciBncm91cFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHVzZXJzIGluIHRoZSB1c2VyIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlcnM/OiBJVXNlcltdO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgdXNlciBncm91cFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGQgYSB1c2VyIHRvIHRoaXMgdXNlciBncm91cFxuICAgKlxuICAgKiBAcGFyYW0gX3VzZXIgVGhlIHVzZXIgdG8gYWRkXG4gICAqL1xuICBwdWJsaWMgYWRkVXNlcihfdXNlcjogSVVzZXIpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoJ0Nhbm5vdCBhZGQgdXNlcnMgdG8gYW4gaW1wb3J0ZWQgVXNlckdyb3VwLiBPbmx5IFVzZXJHcm91cHMgY3JlYXRlZCBpbiB0aGlzIHN0YWNrIGNhbiBiZSBtb2RpZmllZC4nKTtcbiAgfVxufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIHdoZW4gaW1wb3J0aW5nIGEgVXNlckdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckdyb3VwQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBPbmUgb2YgYHVzZXJHcm91cE5hbWVgIG9yIGB1c2VyR3JvdXBBcm5gIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB1c2VyR3JvdXBBcm5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIHR5cGUgZm9yIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZW5naW5lIHR5cGUgaXMgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2VycyBhcmUgdW5rbm93blxuICAgKi9cbiAgcmVhZG9ubHkgdXNlcnM/OiBJVXNlcltdO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBPbmUgb2YgYHVzZXJHcm91cE5hbWVgIG9yIGB1c2VyR3JvdXBBcm5gIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB1c2VyR3JvdXBOYW1lXG4gICAqL1xuICByZWFkb25seSB1c2VyR3JvdXBBcm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gRWxhc3RpQ2FjaGUgVXNlckdyb3VwXG4gKlxuICogQHJlc291cmNlIEFXUzo6RWxhc3RpQ2FjaGU6OlVzZXJHcm91cFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgVXNlckdyb3VwIGV4dGVuZHMgVXNlckdyb3VwQmFzZSB7XG4gIC8qKlxuICAgKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnYXdzLWNkay1saWIuYXdzLWVsYXN0aWNhY2hlLlVzZXJHcm91cCc7XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBgVXNlckdyb3VwYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1VzZXJHcm91cCh4OiBhbnkpOiB4IGlzIFVzZXJHcm91cCB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mICh4KSA9PT0gJ29iamVjdCcgJiYgRUxBU1RJQ0FDSEVfVVNFUkdST1VQX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB1c2VyIGdyb3VwIGJ5IG5hbWVcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSB1c2VyR3JvdXBOYW1lIFRoZSBuYW1lIG9mIHRoZSBleGlzdGluZyB1c2VyIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Vc2VyR3JvdXBOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHVzZXJHcm91cE5hbWU6IHN0cmluZyk6IElVc2VyR3JvdXAge1xuICAgIHJldHVybiBVc2VyR3JvdXAuZnJvbVVzZXJHcm91cEF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHVzZXJHcm91cE5hbWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHVzZXIgZ3JvdXAgYnkgQVJOXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gdXNlckdyb3VwQXJuIFRoZSBBUk4gb2YgdGhlIGV4aXN0aW5nIHVzZXIgZ3JvdXBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVVzZXJHcm91cEFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCB1c2VyR3JvdXBBcm46IHN0cmluZyk6IElVc2VyR3JvdXAge1xuICAgIHJldHVybiBVc2VyR3JvdXAuZnJvbVVzZXJHcm91cEF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHVzZXJHcm91cEFybiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgdXNlciBncm91cCB1c2luZyBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gYXR0cnMgQSBgVXNlckdyb3VwQXR0cmlidXRlc2Agb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Vc2VyR3JvdXBBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBVc2VyR3JvdXBBdHRyaWJ1dGVzKTogSVVzZXJHcm91cCB7XG4gICAgbGV0IHVzZXJHcm91cE5hbWU6IHN0cmluZztcbiAgICBsZXQgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG5cbiAgICBpZiAoYXR0cnMudXNlckdyb3VwQXJuICYmIGF0dHJzLnVzZXJHcm91cE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ09ubHkgb25lIG9mIHVzZXJHcm91cEFybiBvciB1c2VyR3JvdXBOYW1lIGNhbiBiZSBwcm92aWRlZC4nLCBzY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKGF0dHJzLnVzZXJHcm91cEFybikge1xuICAgICAgdXNlckdyb3VwQXJuID0gYXR0cnMudXNlckdyb3VwQXJuO1xuICAgICAgY29uc3QgZXh0cmFjdGVkVXNlckdyb3VwTmFtZSA9IHN0YWNrLnNwbGl0QXJuKGF0dHJzLnVzZXJHcm91cEFybiwgQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpLnJlc291cmNlTmFtZTtcbiAgICAgIGlmICghZXh0cmFjdGVkVXNlckdyb3VwTmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdVbmFibGUgdG8gZXh0cmFjdCB1c2VyIGdyb3VwIG5hbWUgZnJvbSBBUk4uJywgc2NvcGUpO1xuICAgICAgfVxuICAgICAgdXNlckdyb3VwTmFtZSA9IGV4dHJhY3RlZFVzZXJHcm91cE5hbWU7XG4gICAgfSBlbHNlIGlmIChhdHRycy51c2VyR3JvdXBOYW1lKSB7XG4gICAgICB1c2VyR3JvdXBOYW1lID0gYXR0cnMudXNlckdyb3VwTmFtZTtcbiAgICAgIHVzZXJHcm91cEFybiA9IHN0YWNrLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdlbGFzdGljYWNoZScsXG4gICAgICAgIHJlc291cmNlOiAndXNlcmdyb3VwJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBhdHRycy51c2VyR3JvdXBOYW1lLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ09uZSBvZiB1c2VyR3JvdXBOYW1lIG9yIHVzZXJHcm91cEFybiBpcyByZXF1aXJlZC4nLCBzY29wZSk7XG4gICAgfVxuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgVXNlckdyb3VwQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBOYW1lOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG5cbiAgICAgIHB1YmxpYyBnZXQgdXNlcnMoKTogSVVzZXJbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBhdHRycy51c2VycyA/IFsuLi5hdHRycy51c2Vyc10gOiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0cnVjdG9yKF91c2VyR3JvdXBBcm46IHN0cmluZywgX3VzZXJHcm91cE5hbWU6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgICAgICB0aGlzLnVzZXJHcm91cEFybiA9IF91c2VyR3JvdXBBcm47XG4gICAgICAgIHRoaXMudXNlckdyb3VwTmFtZSA9IF91c2VyR3JvdXBOYW1lO1xuICAgICAgICB0aGlzLmVuZ2luZSA9IGF0dHJzLmVuZ2luZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydCh1c2VyR3JvdXBBcm4sIHVzZXJHcm91cE5hbWUpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGVuZ2luZT86IFVzZXJFbmdpbmU7XG4gIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VzZXJzOiBJVXNlcltdID0gW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIHVzZXIgZ3JvdXBcbiAgICogQ2FuIGJlICdjcmVhdGluZycsICdhY3RpdmUnLCAnbW9kaWZ5aW5nJywgJ2RlbGV0aW5nJ1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlckdyb3VwU3RhdHVzOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogQ2ZuVXNlckdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBVc2VyR3JvdXBQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7fSk7XG5cbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMuZW5naW5lID0gcHJvcHMuZW5naW5lID8/IFVzZXJFbmdpbmUuVkFMS0VZO1xuICAgIHRoaXMudXNlckdyb3VwTmFtZSA9IHByb3BzLnVzZXJHcm91cE5hbWUgPz8gTGF6eS5zdHJpbmcoe1xuICAgICAgLy8gRWxhc3RpY2FjaGUgbm90IGFsbG93aW5nIHVwcGVyY2FzZSB1c2VyIGdyb3VwIGlkXG4gICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVJZCh0aGlzKS50b0xvY2FsZUxvd2VyQ2FzZSgpLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnVzZXJzKSB7XG4gICAgICB0aGlzLl91c2Vycy5wdXNoKC4uLnByb3BzLnVzZXJzKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmblVzZXJHcm91cCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBlbmdpbmU6IHRoaXMuZW5naW5lLFxuICAgICAgdXNlckdyb3VwSWQ6IHRoaXMudXNlckdyb3VwTmFtZSxcbiAgICAgIHVzZXJJZHM6IExhenkubGlzdCh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlVXNlcnMoKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdXNlcnMubWFwKHVzZXIgPT4gdXNlci51c2VySWQpO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMudXNlcnMpIHtcbiAgICAgIHByb3BzLnVzZXJzLmZvckVhY2godXNlciA9PiB0aGlzLmFkZFVzZXJEZXBlbmRlbmN5KHVzZXIpKTtcbiAgICB9XG5cbiAgICB0aGlzLnVzZXJHcm91cEFybiA9IHRoaXMucmVzb3VyY2UuYXR0ckFybjtcbiAgICB0aGlzLnVzZXJHcm91cFN0YXR1cyA9IHRoaXMucmVzb3VyY2UuYXR0clN0YXR1cztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBFTEFTVElDQUNIRV9VU0VSR1JPVVBfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIENsb3VkRm9ybWF0aW9uIGRlcGVuZGVuY3kgb24gdGhlIHVzZXIgcmVzb3VyY2UgdG8gZW5zdXJlIHByb3BlciBjcmVhdGlvbiBvcmRlci5cbiAgICovXG4gIHByaXZhdGUgYWRkVXNlckRlcGVuZGVuY3kodXNlcjogSVVzZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeSh1c2VyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcnJheSBvZiB1c2VycyBpbiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBEbyBub3QgcHVzaCBkaXJlY3RseSB0byB0aGlzIGFycmF5LlxuICAgKiBVc2UgYWRkVXNlcigpIGluc3RlYWQgdG8gZW5zdXJlIHByb3BlciB2YWxpZGF0aW9uIGFuZCBkZXBlbmRlbmN5IG1hbmFnZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHVzZXJzKCk6IElVc2VyW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl91c2VycztcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXAgZm9yIGR1cGxpY2F0ZSB1c2VybmFtZXMgYW5kIFJlZGlzLXNwZWNpZmljIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVVc2VycygpOiB2b2lkIHtcbiAgICBjb25zdCB1c2VyTmFtZXMgPSB0aGlzLl91c2Vycy5tYXAodXNlciA9PiB1c2VyLnVzZXJOYW1lKTtcbiAgICBjb25zdCBkdXBsaWNhdGVzID0gdXNlck5hbWVzLmZpbHRlcigobmFtZSwgaW5kZXgpID0+IHVzZXJOYW1lcy5pbmRleE9mKG5hbWUpICE9PSBpbmRleCk7XG4gICAgaWYgKGR1cGxpY2F0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignVXNlciBncm91cCBjYW5ub3QgaGF2ZSB1c2VycyB3aXRoIHRoZSBzYW1lIHVzZXIgbmFtZS4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbmdpbmUgPT09IFVzZXJFbmdpbmUuUkVESVMpIHtcbiAgICAgIHRoaXMuX3VzZXJzLmZvckVhY2godXNlciA9PiB7XG4gICAgICAgIGlmICh1c2VyLmVuZ2luZSAhPT0gVXNlckVuZ2luZS5SRURJUykge1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1JlZGlzIHVzZXIgZ3JvdXAgY2FuIG9ubHkgY29udGFpbiBSZWRpcyB1c2Vycy4nLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBoYXNEZWZhdWx0VXNlciA9IHRoaXMuX3VzZXJzLnNvbWUodXNlciA9PiB1c2VyLnVzZXJOYW1lID09PSAnZGVmYXVsdCcpO1xuICAgICAgaWYgKCFoYXNEZWZhdWx0VXNlcikge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdSZWRpcyB1c2VyIGdyb3VwcyBuZWVkIHRvIGNvbnRhaW4gYSB1c2VyIHdpdGggdGhlIHVzZXIgbmFtZSBcImRlZmF1bHRcIi4nLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdXNlciB0byB0aGlzIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gYWRkIHRvIHRoZSBncm91cFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZFVzZXIodXNlcjogSVVzZXIpOiB2b2lkIHtcbiAgICB0aGlzLl91c2Vycy5wdXNoKHVzZXIpO1xuICAgIHRoaXMuYWRkVXNlckRlcGVuZGVuY3kodXNlcik7XG4gIH1cbn1cbiJdfQ==
|
|
298
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInVzZXItZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUVBQTJEO0FBQzNELDJDQUFnSTtBQUNoSSw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBRTFFLHFDQUFzQztBQUd0QyxNQUFNLDRCQUE0QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQTBEdEY7O0dBRUc7QUFDSCxNQUFzQixhQUFjLFNBQVEsZUFBUTs7SUFvQmxEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsS0FBWTs7Ozs7Ozs7OztRQUN6QixNQUFNLElBQUksOEJBQXVCLENBQUMsbUdBQW1HLENBQUMsQ0FBQztLQUN4STs7QUEzQkgsc0NBNEJDO0FBb0NEOzs7O0dBSUc7SUFFVSxTQUFTOzRCQURyQixvQ0FBa0I7Ozs7c0JBQ1ksYUFBYTs7O3lCQUFyQixTQUFRLFdBQWE7Ozs7bUNBOEx6QyxJQUFBLGtDQUFjLEdBQUU7WUFDakIsd0tBQU8sT0FBTyw2REFHYjtZQWxNSCw2S0FtTUM7Ozs7O1FBbE1DOztXQUVHO1FBQ0ksTUFBTSxDQUFVLHFCQUFxQixHQUFXLHVDQUF1QyxDQUFDO1FBRS9GOztXQUVHO1FBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFNO1lBQzlCLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLDRCQUE0QixJQUFJLENBQUMsQ0FBQztTQUNuRjtRQUVEOzs7Ozs7V0FNRztRQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxhQUFxQjtZQUNqRixPQUFPLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztTQUN4RTtRQUVEOzs7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QkFDckMsTUFBTSxJQUFJLHNCQUFlLENBQUMsZ0RBQWdELEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3BGLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDO2dCQUM3RSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3BCLE1BQU0sSUFBSSxzQkFBZSxDQUFDLHdFQUF3RSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM1RyxDQUFDO1lBQ0gsQ0FBQztTQUNGO1FBRUQ7Ozs7V0FJRztRQUVJLE9BQU8sQ0FBQyxJQUFXOzs7Ozs7Ozs7O1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5Qjs7WUFsTVUsdURBQVM7Ozs7O0FBQVQsOEJBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5Vc2VyR3JvdXAgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2FjaGUnO1xuaW1wb3J0IHsgSVJlc291cmNlLCBSZXNvdXJjZSwgQXJuRm9ybWF0LCBTdGFjaywgTGF6eSwgVmFsaWRhdGlvbkVycm9yLCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciwgTmFtZXMgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFVzZXJFbmdpbmUgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBJVXNlciB9IGZyb20gJy4vdXNlci1iYXNlJztcblxuY29uc3QgRUxBU1RJQ0FDSEVfVVNFUkdST1VQX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1lbGFzdGljYWNoZS5Vc2VyR3JvdXAnKTtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhbiBFbGFzdGlDYWNoZSBVc2VyR3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyR3JvdXBQcm9wcyB7XG4gIC8qKlxuICAgKiBFbmZvcmNlcyBhIHBhcnRpY3VsYXIgcGh5c2ljYWwgdXNlciBncm91cCBuYW1lLlxuICAgKiBAZGVmYXVsdCA8Z2VuZXJhdGVkPlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIgZ3JvdXBcbiAgICogRW51bSBvcHRpb25zOiBVc2VyRW5naW5lLlZBTEtFWSwgVXNlckVuZ2luZS5SRURJU1xuICAgKlxuICAgKiBAZGVmYXVsdCBVc2VyRW5naW5lLlZBTEtFWVxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdXNlcnMgaW5zaWRlIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gdXNlcnNcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJzPzogSVVzZXJbXTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVsYXN0aUNhY2hlIFVzZXJHcm91cFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyR3JvdXAgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZ2luZSB0eXBlIGZvciB0aGUgdXNlciBncm91cFxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXBcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJzPzogSVVzZXJbXTtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGQgYSB1c2VyIHRvIHRoaXMgdXNlciBncm91cFxuICAgKlxuICAgKiBAcGFyYW0gdXNlciBUaGUgdXNlciB0byBhZGRcbiAgICovXG4gIGFkZFVzZXIodXNlcjogSVVzZXIpOiB2b2lkO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFVzZXJHcm91cCBjb25zdHJ1Y3RzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVc2VyR3JvdXBCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVXNlckdyb3VwIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1c2VyR3JvdXBOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5naW5lIHR5cGUgZm9yIHRoZSB1c2VyIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXBcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1c2Vycz86IElVc2VyW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1c2VyR3JvdXBBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIEFkZCBhIHVzZXIgdG8gdGhpcyB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBwYXJhbSBfdXNlciBUaGUgdXNlciB0byBhZGRcbiAgICovXG4gIHB1YmxpYyBhZGRVc2VyKF91c2VyOiBJVXNlcik6IHZvaWQge1xuICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcignQ2Fubm90IGFkZCB1c2VycyB0byBhbiBpbXBvcnRlZCBVc2VyR3JvdXAuIE9ubHkgVXNlckdyb3VwcyBjcmVhdGVkIGluIHRoaXMgc3RhY2sgY2FuIGJlIG1vZGlmaWVkLicpO1xuICB9XG59XG5cbi8qKlxuICogQXR0cmlidXRlcyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgd2hlbiBpbXBvcnRpbmcgYSBVc2VyR3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyR3JvdXBBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIE9uZSBvZiBgdXNlckdyb3VwTmFtZWAgb3IgYHVzZXJHcm91cEFybmAgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHVzZXJHcm91cEFyblxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckdyb3VwTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgdHlwZSBmb3IgdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBlbmdpbmUgdHlwZSBpcyB1bmtub3duXG4gICAqL1xuICByZWFkb25seSBlbmdpbmU/OiBVc2VyRW5naW5lO1xuICAvKipcbiAgICogTGlzdCBvZiB1c2VycyBpbiB0aGUgdXNlciBncm91cFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZXJzIGFyZSB1bmtub3duXG4gICAqL1xuICByZWFkb25seSB1c2Vycz86IElVc2VyW107XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB1c2VyIGdyb3VwXG4gICAqXG4gICAqIE9uZSBvZiBgdXNlckdyb3VwTmFtZWAgb3IgYHVzZXJHcm91cEFybmAgaXMgcmVxdWlyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHVzZXJHcm91cE5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJHcm91cEFybj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbiBFbGFzdGlDYWNoZSBVc2VyR3JvdXBcbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpFbGFzdGlDYWNoZTo6VXNlckdyb3VwXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBVc2VyR3JvdXAgZXh0ZW5kcyBVc2VyR3JvdXBCYXNlIHtcbiAgLyoqXG4gICAqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdhd3MtY2RrLWxpYi5hd3MtZWxhc3RpY2FjaGUuVXNlckdyb3VwJztcblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIGBVc2VyR3JvdXBgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVXNlckdyb3VwKHg6IGFueSk6IHggaXMgVXNlckdyb3VwIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgKHgpID09PSAnb2JqZWN0JyAmJiBFTEFTVElDQUNIRV9VU0VSR1JPVVBfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHVzZXIgZ3JvdXAgYnkgbmFtZVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWVcbiAgICogQHBhcmFtIHVzZXJHcm91cE5hbWUgVGhlIG5hbWUgb2YgdGhlIGV4aXN0aW5nIHVzZXIgZ3JvdXBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVVzZXJHcm91cE5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgdXNlckdyb3VwTmFtZTogc3RyaW5nKTogSVVzZXJHcm91cCB7XG4gICAgcmV0dXJuIFVzZXJHcm91cC5mcm9tVXNlckdyb3VwQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgdXNlckdyb3VwTmFtZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgdXNlciBncm91cCBieSBBUk5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSB1c2VyR3JvdXBBcm4gVGhlIEFSTiBvZiB0aGUgZXhpc3RpbmcgdXNlciBncm91cFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVXNlckdyb3VwQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHVzZXJHcm91cEFybjogc3RyaW5nKTogSVVzZXJHcm91cCB7XG4gICAgcmV0dXJuIFVzZXJHcm91cC5mcm9tVXNlckdyb3VwQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgdXNlckdyb3VwQXJuIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB1c2VyIGdyb3VwIHVzaW5nIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYClcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lXG4gICAqIEBwYXJhbSBhdHRycyBBIGBVc2VyR3JvdXBBdHRyaWJ1dGVzYCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVVzZXJHcm91cEF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFVzZXJHcm91cEF0dHJpYnV0ZXMpOiBJVXNlckdyb3VwIHtcbiAgICBsZXQgdXNlckdyb3VwTmFtZTogc3RyaW5nO1xuICAgIGxldCB1c2VyR3JvdXBBcm46IHN0cmluZztcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICAgIGlmIChhdHRycy51c2VyR3JvdXBBcm4gJiYgYXR0cnMudXNlckdyb3VwTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignT25seSBvbmUgb2YgdXNlckdyb3VwQXJuIG9yIHVzZXJHcm91cE5hbWUgY2FuIGJlIHByb3ZpZGVkLicsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cnMudXNlckdyb3VwQXJuKSB7XG4gICAgICB1c2VyR3JvdXBBcm4gPSBhdHRycy51c2VyR3JvdXBBcm47XG4gICAgICBjb25zdCBleHRyYWN0ZWRVc2VyR3JvdXBOYW1lID0gc3RhY2suc3BsaXRBcm4oYXR0cnMudXNlckdyb3VwQXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lO1xuICAgICAgaWYgKCFleHRyYWN0ZWRVc2VyR3JvdXBOYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1VuYWJsZSB0byBleHRyYWN0IHVzZXIgZ3JvdXAgbmFtZSBmcm9tIEFSTi4nLCBzY29wZSk7XG4gICAgICB9XG4gICAgICB1c2VyR3JvdXBOYW1lID0gZXh0cmFjdGVkVXNlckdyb3VwTmFtZTtcbiAgICB9IGVsc2UgaWYgKGF0dHJzLnVzZXJHcm91cE5hbWUpIHtcbiAgICAgIHVzZXJHcm91cE5hbWUgPSBhdHRycy51c2VyR3JvdXBOYW1lO1xuICAgICAgdXNlckdyb3VwQXJuID0gc3RhY2suZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2VsYXN0aWNhY2hlJyxcbiAgICAgICAgcmVzb3VyY2U6ICd1c2VyZ3JvdXAnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGF0dHJzLnVzZXJHcm91cE5hbWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignT25lIG9mIHVzZXJHcm91cE5hbWUgb3IgdXNlckdyb3VwQXJuIGlzIHJlcXVpcmVkLicsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBVc2VyR3JvdXBCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBlbmdpbmU/OiBVc2VyRW5naW5lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU6IHN0cmluZztcbiAgICAgIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBBcm46IHN0cmluZztcblxuICAgICAgcHVibGljIGdldCB1c2VycygpOiBJVXNlcltdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGF0dHJzLnVzZXJzID8gWy4uLmF0dHJzLnVzZXJzXSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3RydWN0b3IoX3VzZXJHcm91cEFybjogc3RyaW5nLCBfdXNlckdyb3VwTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgICAgIHRoaXMudXNlckdyb3VwQXJuID0gX3VzZXJHcm91cEFybjtcbiAgICAgICAgdGhpcy51c2VyR3JvdXBOYW1lID0gX3VzZXJHcm91cE5hbWU7XG4gICAgICAgIHRoaXMuZW5naW5lID0gYXR0cnMuZW5naW5lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHVzZXJHcm91cEFybiwgdXNlckdyb3VwTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lPzogVXNlckVuZ2luZTtcbiAgcHVibGljIHJlYWRvbmx5IHVzZXJHcm91cE5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdXNlcnM6IElVc2VyW10gPSBbXTtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVzZXJHcm91cEFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgdXNlciBncm91cFxuICAgKiBDYW4gYmUgJ2NyZWF0aW5nJywgJ2FjdGl2ZScsICdtb2RpZnlpbmcnLCAnZGVsZXRpbmcnXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VyR3JvdXBTdGF0dXM6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlOiBDZm5Vc2VyR3JvdXA7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFVzZXJHcm91cFByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHt9KTtcblxuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgdGhpcy5lbmdpbmUgPSBwcm9wcy5lbmdpbmUgPz8gVXNlckVuZ2luZS5WQUxLRVk7XG4gICAgdGhpcy51c2VyR3JvdXBOYW1lID0gcHJvcHMudXNlckdyb3VwTmFtZSA/PyBMYXp5LnN0cmluZyh7XG4gICAgICAvLyBFbGFzdGlDYWNoZSBpcyBhbGxvd2luZyBvbmx5IHVwcGVyY2FzZSBhbmQgbWF4IDQwIGNoYXJhY3RlcnMgZm9yIHVzZXIgZ3JvdXAgaWRcbiAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogNDAgfSkudG9Mb2NhbGVMb3dlckNhc2UoKSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy51c2Vycykge1xuICAgICAgdGhpcy5fdXNlcnMucHVzaCguLi5wcm9wcy51c2Vycyk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5Vc2VyR3JvdXAodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgZW5naW5lOiB0aGlzLmVuZ2luZSxcbiAgICAgIHVzZXJHcm91cElkOiB0aGlzLnVzZXJHcm91cE5hbWUsXG4gICAgICB1c2VySWRzOiBMYXp5Lmxpc3Qoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0ZVVzZXJzKCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJzLm1hcCh1c2VyID0+IHVzZXIudXNlcklkKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnVzZXJzKSB7XG4gICAgICBwcm9wcy51c2Vycy5mb3JFYWNoKHVzZXIgPT4gdGhpcy5hZGRVc2VyRGVwZW5kZW5jeSh1c2VyKSk7XG4gICAgfVxuXG4gICAgdGhpcy51c2VyR3JvdXBBcm4gPSB0aGlzLnJlc291cmNlLmF0dHJBcm47XG4gICAgdGhpcy51c2VyR3JvdXBTdGF0dXMgPSB0aGlzLnJlc291cmNlLmF0dHJTdGF0dXM7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgRUxBU1RJQ0FDSEVfVVNFUkdST1VQX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBDbG91ZEZvcm1hdGlvbiBkZXBlbmRlbmN5IG9uIHRoZSB1c2VyIHJlc291cmNlIHRvIGVuc3VyZSBwcm9wZXIgY3JlYXRpb24gb3JkZXIuXG4gICAqL1xuICBwcml2YXRlIGFkZFVzZXJEZXBlbmRlbmN5KHVzZXI6IElVc2VyKTogdm9pZCB7XG4gICAgdGhpcy5yZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3kodXNlcik7XG4gIH1cblxuICAvKipcbiAgICogQXJyYXkgb2YgdXNlcnMgaW4gdGhlIHVzZXIgZ3JvdXBcbiAgICpcbiAgICogRG8gbm90IHB1c2ggZGlyZWN0bHkgdG8gdGhpcyBhcnJheS5cbiAgICogVXNlIGFkZFVzZXIoKSBpbnN0ZWFkIHRvIGVuc3VyZSBwcm9wZXIgdmFsaWRhdGlvbiBhbmQgZGVwZW5kZW5jeSBtYW5hZ2VtZW50LlxuICAgKi9cbiAgcHVibGljIGdldCB1c2VycygpOiBJVXNlcltdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdXNlcnM7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHVzZXJzIGluIHRoZSB1c2VyIGdyb3VwIGZvciBkdXBsaWNhdGUgdXNlcm5hbWVzIGFuZCBSZWRpcy1zcGVjaWZpYyByZXF1aXJlbWVudHMuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVXNlcnMoKTogdm9pZCB7XG4gICAgY29uc3QgdXNlck5hbWVzID0gdGhpcy5fdXNlcnMubWFwKHVzZXIgPT4gdXNlci51c2VyTmFtZSk7XG4gICAgY29uc3QgZHVwbGljYXRlcyA9IHVzZXJOYW1lcy5maWx0ZXIoKG5hbWUsIGluZGV4KSA9PiB1c2VyTmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gaW5kZXgpO1xuICAgIGlmIChkdXBsaWNhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1VzZXIgZ3JvdXAgY2Fubm90IGhhdmUgdXNlcnMgd2l0aCB0aGUgc2FtZSB1c2VyIG5hbWUuJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZW5naW5lID09PSBVc2VyRW5naW5lLlJFRElTKSB7XG4gICAgICB0aGlzLl91c2Vycy5mb3JFYWNoKHVzZXIgPT4ge1xuICAgICAgICBpZiAodXNlci5lbmdpbmUgIT09IFVzZXJFbmdpbmUuUkVESVMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdSZWRpcyB1c2VyIGdyb3VwIGNhbiBvbmx5IGNvbnRhaW4gUmVkaXMgdXNlcnMuJywgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29uc3QgaGFzRGVmYXVsdFVzZXIgPSB0aGlzLl91c2Vycy5zb21lKHVzZXIgPT4gdXNlci51c2VyTmFtZSA9PT0gJ2RlZmF1bHQnKTtcbiAgICAgIGlmICghaGFzRGVmYXVsdFVzZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUmVkaXMgdXNlciBncm91cHMgbmVlZCB0byBjb250YWluIGEgdXNlciB3aXRoIHRoZSB1c2VyIG5hbWUgXCJkZWZhdWx0XCIuJywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHVzZXIgdG8gdGhpcyB1c2VyIGdyb3VwXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyIFRoZSB1c2VyIHRvIGFkZCB0byB0aGUgZ3JvdXBcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRVc2VyKHVzZXI6IElVc2VyKTogdm9pZCB7XG4gICAgdGhpcy5fdXNlcnMucHVzaCh1c2VyKTtcbiAgICB0aGlzLmFkZFVzZXJEZXBlbmRlbmN5KHVzZXIpO1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/aws-elasticache-alpha",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.234.1-alpha.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The CDK Construct Library for AWS::ElastiCache",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -84,18 +84,18 @@
|
|
|
84
84
|
},
|
|
85
85
|
"license": "Apache-2.0",
|
|
86
86
|
"devDependencies": {
|
|
87
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
87
|
+
"@aws-cdk/cdk-build-tools": "2.234.1-alpha.0",
|
|
88
88
|
"@aws-cdk/integ-runner": "^2.192.2",
|
|
89
|
-
"@aws-cdk/pkglint": "2.
|
|
89
|
+
"@aws-cdk/pkglint": "2.234.1-alpha.0",
|
|
90
90
|
"@types/jest": "^29.5.14",
|
|
91
91
|
"jest": "^29.7.0",
|
|
92
|
-
"aws-cdk-lib": "2.
|
|
92
|
+
"aws-cdk-lib": "2.234.1",
|
|
93
93
|
"constructs": "^10.0.0",
|
|
94
|
-
"@aws-cdk/integ-tests-alpha": "2.
|
|
94
|
+
"@aws-cdk/integ-tests-alpha": "2.234.1-alpha.0"
|
|
95
95
|
},
|
|
96
96
|
"dependencies": {},
|
|
97
97
|
"peerDependencies": {
|
|
98
|
-
"aws-cdk-lib": "^2.
|
|
98
|
+
"aws-cdk-lib": "^2.234.1",
|
|
99
99
|
"constructs": "^10.0.0"
|
|
100
100
|
},
|
|
101
101
|
"engines": {
|