@aws-cdk/aws-msk-alpha 2.259.0-alpha.0 → 2.261.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -8,7 +8,7 @@
8
8
  "url": "https://aws.amazon.com"
9
9
  },
10
10
  "dependencies": {
11
- "aws-cdk-lib": "^2.259.0",
11
+ "aws-cdk-lib": "^2.261.0",
12
12
  "constructs": "^10.5.0"
13
13
  },
14
14
  "dependencyClosure": {
@@ -3288,6 +3288,19 @@
3288
3288
  }
3289
3289
  }
3290
3290
  },
3291
+ "aws-cdk-lib.aws_resiliencehubv2": {
3292
+ "targets": {
3293
+ "dotnet": {
3294
+ "namespace": "Amazon.CDK.AWS.ResilienceHubV2"
3295
+ },
3296
+ "java": {
3297
+ "package": "software.amazon.awscdk.services.resiliencehubv2"
3298
+ },
3299
+ "python": {
3300
+ "module": "aws_cdk.aws_resiliencehubv2"
3301
+ }
3302
+ }
3303
+ },
3291
3304
  "aws-cdk-lib.aws_resourceexplorer2": {
3292
3305
  "targets": {
3293
3306
  "dotnet": {
@@ -4795,6 +4808,22 @@
4795
4808
  }
4796
4809
  }
4797
4810
  },
4811
+ "aws-cdk-lib.interfaces.aws_bcm": {
4812
+ "targets": {
4813
+ "dotnet": {
4814
+ "namespace": "Amazon.CDK.Interfaces.BCM"
4815
+ },
4816
+ "go": {
4817
+ "packageName": "interfacesawsbcm"
4818
+ },
4819
+ "java": {
4820
+ "package": "software.amazon.awscdk.interfaces.bcm"
4821
+ },
4822
+ "python": {
4823
+ "module": "aws_cdk.interfaces.aws_bcm"
4824
+ }
4825
+ }
4826
+ },
4798
4827
  "aws-cdk-lib.interfaces.aws_bcmdataexports": {
4799
4828
  "targets": {
4800
4829
  "dotnet": {
@@ -7851,6 +7880,22 @@
7851
7880
  }
7852
7881
  }
7853
7882
  },
7883
+ "aws-cdk-lib.interfaces.aws_resiliencehubv2": {
7884
+ "targets": {
7885
+ "dotnet": {
7886
+ "namespace": "Amazon.CDK.Interfaces.ResilienceHubV2"
7887
+ },
7888
+ "go": {
7889
+ "packageName": "interfacesawsresiliencehubv2"
7890
+ },
7891
+ "java": {
7892
+ "package": "software.amazon.awscdk.interfaces.resiliencehubv2"
7893
+ },
7894
+ "python": {
7895
+ "module": "aws_cdk.interfaces.aws_resiliencehubv2"
7896
+ }
7897
+ }
7898
+ },
7854
7899
  "aws-cdk-lib.interfaces.aws_resourceexplorer2": {
7855
7900
  "targets": {
7856
7901
  "dotnet": {
@@ -11607,6 +11652,6 @@
11607
11652
  "symbolId": "lib/serverless-cluster:VpcConfig"
11608
11653
  }
11609
11654
  },
11610
- "version": "2.259.0-alpha.0",
11655
+ "version": "2.261.0-alpha.0",
11611
11656
  "fingerprint": "**********"
11612
11657
  }
Binary file
@@ -9,7 +9,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
9
9
  class KafkaVersion {
10
10
  version;
11
11
  features;
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-msk-alpha.KafkaVersion", version: "2.259.0-alpha.0" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-msk-alpha.KafkaVersion", version: "2.261.0-alpha.0" };
13
13
  /**
14
14
  * **Deprecated by Amazon MSK. You can't create a Kafka cluster with a deprecated version.**
15
15
  *
package/lib/cluster.d.ts CHANGED
@@ -411,7 +411,7 @@ export declare class Cluster extends ClusterBase {
411
411
  *
412
412
  * Uses a Custom Resource to make an API call to `describeCluster` using the Javascript SDK
413
413
  *
414
- * @param responseField Field to return from API call. eg. ZookeeperConnectString, ZookeeperConnectStringTls
414
+ * @param responseField Field to return from API call. e.g. ZookeeperConnectString, ZookeeperConnectStringTls
415
415
  * @returns - The connection string to use to connect to the Apache ZooKeeper cluster.
416
416
  */
417
417
  private _zookeeperConnectionString;
@@ -436,7 +436,7 @@ export declare class Cluster extends ClusterBase {
436
436
  *
437
437
  * Uses a Custom Resource to make an API call to `getBootstrapBrokers` using the Javascript SDK
438
438
  *
439
- * @param responseField Field to return from API call. eg. BootstrapBrokerStringSaslScram, BootstrapBrokerString
439
+ * @param responseField Field to return from API call. e.g. BootstrapBrokerStringSaslScram, BootstrapBrokerString
440
440
  * @returns - A string containing one or more hostname:port pairs.
441
441
  */
442
442
  private _bootstrapBrokers;
package/lib/cluster.js CHANGED
@@ -87,7 +87,7 @@ const uniqueid_1 = require("constructs/lib/private/uniqueid");
87
87
  * A new or imported MSK Cluster.
88
88
  */
89
89
  class ClusterBase extends core.Resource {
90
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-msk-alpha.ClusterBase", version: "2.259.0-alpha.0" };
90
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-msk-alpha.ClusterBase", version: "2.261.0-alpha.0" };
91
91
  /** @internal */
92
92
  _connections;
93
93
  /** Manages connections for the cluster */
@@ -175,7 +175,7 @@ var ClientBrokerEncryption;
175
175
  class ClientAuthentication {
176
176
  saslProps;
177
177
  tlsProps;
178
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-msk-alpha.ClientAuthentication", version: "2.259.0-alpha.0" };
178
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-msk-alpha.ClientAuthentication", version: "2.261.0-alpha.0" };
179
179
  /**
180
180
  * SASL authentication
181
181
  */
@@ -260,7 +260,7 @@ let Cluster = (() => {
260
260
  Cluster = _classThis = _classDescriptor.value;
261
261
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
262
262
  }
263
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-msk-alpha.Cluster", version: "2.259.0-alpha.0" };
263
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-msk-alpha.Cluster", version: "2.261.0-alpha.0" };
264
264
  /** Uniquely identifies this class. */
265
265
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-msk-alpha.Cluster';
266
266
  /**
@@ -529,7 +529,7 @@ let Cluster = (() => {
529
529
  *
530
530
  * Uses a Custom Resource to make an API call to `describeCluster` using the Javascript SDK
531
531
  *
532
- * @param responseField Field to return from API call. eg. ZookeeperConnectString, ZookeeperConnectStringTls
532
+ * @param responseField Field to return from API call. e.g. ZookeeperConnectString, ZookeeperConnectStringTls
533
533
  * @returns - The connection string to use to connect to the Apache ZooKeeper cluster.
534
534
  */
535
535
  _zookeeperConnectionString(responseField) {
@@ -581,7 +581,7 @@ let Cluster = (() => {
581
581
  *
582
582
  * Uses a Custom Resource to make an API call to `getBootstrapBrokers` using the Javascript SDK
583
583
  *
584
- * @param responseField Field to return from API call. eg. BootstrapBrokerStringSaslScram, BootstrapBrokerString
584
+ * @param responseField Field to return from API call. e.g. BootstrapBrokerStringSaslScram, BootstrapBrokerString
585
585
  * @returns - A string containing one or more hostname:port pairs.
586
586
  */
587
587
  _bootstrapBrokers(responseField) {
@@ -697,4 +697,4 @@ let Cluster = (() => {
697
697
  return Cluster = _classThis;
698
698
  })();
699
699
  exports.Cluster = Cluster;
700
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyx5REFBMkM7QUFFM0MsaURBQWlEO0FBRWpELCtFQUFpRTtBQUNqRSx1REFBeUM7QUFDekMsMkNBQWdEO0FBQ2hELDRFQUE0RTtBQUM1RSw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBQzFFLGlFQUFtRDtBQUNuRCwrQ0FBc0U7QUFFdEUsOERBQTREO0FBc0I1RDs7R0FFRztBQUNILE1BQXNCLFdBQVksU0FBUSxJQUFJLENBQUMsUUFBUTs7SUFHckQsZ0JBQWdCO0lBQ04sWUFBWSxDQUE4QjtJQUVwRCwwQ0FBMEM7SUFDMUMsSUFBVyxXQUFXO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBQSxzQkFBRyxFQUFBLCtCQUErQixFQUFFLHVEQUF1RCxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BJLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7S0FDMUI7O0FBWkgsa0NBYUM7QUE4SUQ7O0dBRUc7QUFDSCxJQUFZLFdBVVg7QUFWRCxXQUFZLFdBQVc7SUFDckI7O09BRUc7SUFDSCw4QkFBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCxnQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVlcsV0FBVywyQkFBWCxXQUFXLFFBVXRCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLFVBVVg7QUFWRCxXQUFZLFVBQVU7SUFDcEI7O09BRUc7SUFDSCxtQ0FBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILGlDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFWVyxVQUFVLDBCQUFWLFVB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QUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQzt5QkFDekQ7d0JBQ0Qsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7cUJBQzVEO29CQUNELE1BQU0sRUFBRSxFQUFFLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDO3dCQUNoRCxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7NEJBQ3RCLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDOzRCQUM1QixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxDQUFDO3lCQUNyRCxDQUFDO3dCQUNGLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQzs0QkFDdEIsT0FBTyxFQUFFLENBQUMsaUNBQWlDLENBQUM7NEJBQzVDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7eUJBQzdCLENBQUM7cUJBQ0gsQ0FBQztvQkFDRixtQkFBbUIsRUFBRSxLQUFLO2lCQUMzQixDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBQSxzQkFBRyxFQUFBLDZCQUE2QixFQUFFLGlGQUFpRixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVKLENBQUM7U0FDRjs7WUFwZVUsdURBQU87Ozs7O0FBQVAsMEJBQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGFjbXBjYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYWNtcGNhJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB0eXBlICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBDZm5DbHVzdGVyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLW1zayc7XG5pbXBvcnQgdHlwZSAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0ICogYXMgY29yZSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IEZlYXR1cmVGbGFncyB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgbWVtb2l6ZWRHZXR0ZXIsIGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCAqIGFzIGNyIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgUzNfQ1JFQVRFX0RFRkFVTFRfTE9HR0lOR19QT0xJQ1kgfSBmcm9tICdhd3MtY2RrLWxpYi9jeC1hcGknO1xuaW1wb3J0IHR5cGUgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgYWRkcmVzc09mIH0gZnJvbSAnY29uc3RydWN0cy9saWIvcHJpdmF0ZS91bmlxdWVpZCc7XG5pbXBvcnQgdHlwZSB7IEthZmthVmVyc2lvbiB9IGZyb20gJy4vJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgTVNLIENsdXN0ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ2x1c3RlciBleHRlbmRzIGNvcmUuSVJlc291cmNlLCBlYzIuSUNvbm5lY3RhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgY2x1c3Rlci5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlckFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGh5c2ljYWwgbmFtZSBvZiB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlck5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBNU0sgQ2x1c3Rlci5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENsdXN0ZXJCYXNlIGV4dGVuZHMgY29yZS5SZXNvdXJjZSBpbXBsZW1lbnRzIElDbHVzdGVyIHtcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGNsdXN0ZXJBcm46IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGNsdXN0ZXJOYW1lOiBzdHJpbmc7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJvdGVjdGVkIF9jb25uZWN0aW9uczogZWMyLkNvbm5lY3Rpb25zIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBNYW5hZ2VzIGNvbm5lY3Rpb25zIGZvciB0aGUgY2x1c3RlciAqL1xuICBwdWJsaWMgZ2V0IGNvbm5lY3Rpb25zKCk6IGVjMi5Db25uZWN0aW9ucyB7XG4gICAgaWYgKCF0aGlzLl9jb25uZWN0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IGNvcmUuVmFsaWRhdGlvbkVycm9yKGxpdGBJbXBvcnRlZENsdXN0ZXJTZWN1cml0eUdyb3Vwc2AsICdBbiBpbXBvcnRlZCBDbHVzdGVyIGNhbm5vdCBtYW5hZ2UgaXRzIHNlY3VyaXR5IGdyb3VwcycsIHRoaXMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbnM7XG4gIH1cbn1cblxuLyoqXG4gKiAgUHJvcGVydGllcyBmb3IgYSBNU0sgQ2x1c3RlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcGh5c2ljYWwgbmFtZSBvZiB0aGUgY2x1c3Rlci5cbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIEFwYWNoZSBLYWZrYS5cbiAgICovXG4gIHJlYWRvbmx5IGthZmthVmVyc2lvbjogS2Fma2FWZXJzaW9uO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgQXBhY2hlIEthZmthIGJyb2tlcnMgZGVwbG95ZWQgaW4gZWFjaCBBdmFpbGFiaWxpdHkgWm9uZS5cbiAgICpcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgbnVtYmVyT2ZCcm9rZXJOb2Rlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgdmlydHVhbCBuZXR3b3JraW5nIGVudmlyb25tZW50IGZvciB0aGlzIGNsdXN0ZXIuXG4gICAqIE11c3QgaGF2ZSBhdCBsZWFzdCAyIHN1Ym5ldHMgaW4gdHdvIGRpZmZlcmVudCBBWnMuXG4gICAqL1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBXaGVyZSB0byBwbGFjZSB0aGUgbm9kZXMgd2l0aGluIHRoZSBWUEMuXG4gICAqIEFtYXpvbiBNU0sgZGlzdHJpYnV0ZXMgdGhlIGJyb2tlciBub2RlcyBldmVubHkgYWNyb3NzIHRoZSBzdWJuZXRzIHRoYXQgeW91IHNwZWNpZnkuXG4gICAqIFRoZSBzdWJuZXRzIHRoYXQgeW91IHNwZWNpZnkgbXVzdCBiZSBpbiBkaXN0aW5jdCBBdmFpbGFiaWxpdHkgWm9uZXMuXG4gICAqIENsaWVudCBzdWJuZXRzIGNhbid0IGJlIGluIEF2YWlsYWJpbGl0eSBab25lIHVzLWVhc3QtMWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIFZwYyBkZWZhdWx0IHN0cmF0ZWd5IGlmIG5vdCBzcGVjaWZpZWQuXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIEVDMiBpbnN0YW5jZSB0eXBlIHRoYXQgeW91IHdhbnQgQW1hem9uIE1TSyB0byB1c2Ugd2hlbiBpdCBjcmVhdGVzIHlvdXIgYnJva2Vycy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbXNrL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9tc2stY3JlYXRlLWNsdXN0ZXIuaHRtbCNicm9rZXItaW5zdGFuY2UtdHlwZXNcbiAgICogQGRlZmF1bHQga2Fma2EubTUubGFyZ2VcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlVHlwZT86IGVjMi5JbnN0YW5jZVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBicm9rZXIgdHlwZSBmb3IgdGhlIGNsdXN0ZXIuXG4gICAqIFdoZW4gc2V0IHRvIEVYUFJFU1MsIHRoZSBjbHVzdGVyIHdpbGwgYmUgY3JlYXRlZCB3aXRoIEV4cHJlc3MgQnJva2Vycy5cbiAgICogV2hlbiB0aGlzIGlzIHNldCB0byBFWFBSRVNTLCBpbnN0YW5jZVR5cGUgbXVzdCBhbHNvIGJlIHNwZWNpZmllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgQnJva2VyVHlwZS5TVEFOREFSRFxuICAgKi9cbiAgcmVhZG9ubHkgYnJva2VyVHlwZT86IEJyb2tlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1Mgc2VjdXJpdHkgZ3JvdXBzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBlbGFzdGljIG5ldHdvcmsgaW50ZXJmYWNlcyBpbiBvcmRlciB0byBzcGVjaWZ5IHdobyBjYW5cbiAgICogY29ubmVjdCB0byBhbmQgY29tbXVuaWNhdGUgd2l0aCB0aGUgQW1hem9uIE1TSyBjbHVzdGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGNyZWF0ZSBuZXcgc2VjdXJpdHkgZ3JvdXBcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIEluZm9ybWF0aW9uIGFib3V0IHN0b3JhZ2Ugdm9sdW1lcyBhdHRhY2hlZCB0byBNU0sgYnJva2VyIG5vZGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDEwMDAgR2lCIEVCUyB2b2x1bWVcbiAgICovXG4gIHJlYWRvbmx5IGVic1N0b3JhZ2VJbmZvPzogRWJzU3RvcmFnZUluZm87XG5cbiAgLyoqXG4gICAqIFRoaXMgY29udHJvbHMgc3RvcmFnZSBtb2RlIGZvciBzdXBwb3J0ZWQgc3RvcmFnZSB0aWVycy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBTdG9yYWdlTW9kZS5MT0NBTFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9tc2svbGF0ZXN0L2RldmVsb3Blcmd1aWRlL21zay10aWVyZWQtc3RvcmFnZS5odG1sXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlTW9kZT86IFN0b3JhZ2VNb2RlO1xuXG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIE1TSyBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgdGhlIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlndXJhdGlvbkluZm8/OiBDbHVzdGVyQ29uZmlndXJhdGlvbkluZm87XG5cbiAgLyoqXG4gICAqIENsdXN0ZXIgbW9uaXRvcmluZyBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERFRkFVTFQgbW9uaXRvcmluZyBsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZz86IE1vbml0b3JpbmdDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgeW91ciBNU0sgY2x1c3RlciB0byBzZW5kIGJyb2tlciBsb2dzIHRvIGRpZmZlcmVudCBkZXN0aW5hdGlvbiB0eXBlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkaXNhYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2luZz86IEJyb2tlckxvZ2dpbmc7XG5cbiAgLyoqXG4gICAqIENvbmZpZyBkZXRhaWxzIGZvciBlbmNyeXB0aW9uIGluIHRyYW5zaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbkluVHJhbnNpdD86IEVuY3J5cHRpb25JblRyYW5zaXRDb25maWc7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgY2xpZW50IGF1dGhlbnRpY2F0aW9uLlxuICAgKiBNU0sgc3VwcG9ydHMgdXNpbmcgcHJpdmF0ZSBUTFMgY2VydGlmaWNhdGVzIG9yIFNBU0wvU0NSQU0gdG8gYXV0aGVudGljYXRlIHRoZSBpZGVudGl0eSBvZiBjbGllbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRpc2FibGVkXG4gICAqL1xuICByZWFkb25seSBjbGllbnRBdXRoZW50aWNhdGlvbj86IENsaWVudEF1dGhlbnRpY2F0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGF0IHRvIGRvIHdoZW4gdGhpcyByZXNvdXJjZSBpcyBkZWxldGVkIGZyb20gYSBzdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBjb3JlLlJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogRUJTIHZvbHVtZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFYnNTdG9yYWdlSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBpbiBHaUIgb2YgdGhlIEVCUyB2b2x1bWUgZm9yIHRoZSBkYXRhIGRyaXZlIG9uIGVhY2ggYnJva2VyIG5vZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwMDBcbiAgICovXG4gIHJlYWRvbmx5IHZvbHVtZVNpemU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgS01TIGtleSBmb3IgZW5jcnlwdGluZyBkYXRhIGF0IHJlc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IFVzZXMgQVdTIG1hbmFnZWQgQ01LIChhd3Mva2Fma2EpXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXlSZWY7XG59XG5cbi8qKlxuICogVGhlIHN0b3JhZ2UgbW9kZSBmb3IgdGhlIGNsdXN0ZXIgYnJva2Vycy5cbiAqL1xuZXhwb3J0IGVudW0gU3RvcmFnZU1vZGUge1xuICAvKipcbiAgICogTG9jYWwgc3RvcmFnZSBtb2RlIHV0aWxpemVzIG5ldHdvcmsgYXR0YWNoZWQgRUJTIHN0b3JhZ2UuXG4gICAqL1xuICBMT0NBTCA9ICdMT0NBTCcsXG5cbiAgLyoqXG4gICAqIFRpZXJlZCBzdG9yYWdlIG1vZGUgdXRpbGl6ZXMgRUJTIHN0b3JhZ2UgYW5kIFRpZXJlZCBzdG9yYWdlLlxuICAgKi9cbiAgVElFUkVEID0gJ1RJRVJFRCcsXG59XG5cbi8qKlxuICogVGhlIGJyb2tlciB0eXBlIGZvciB0aGUgY2x1c3Rlci5cbiAqL1xuZXhwb3J0IGVudW0gQnJva2VyVHlwZSB7XG4gIC8qKlxuICAgKiBTdGFuZGFyZCBicm9rZXJzIHByb3ZpZGUgaGlnaC1hdmFpbGFiaWxpdHkgZ3VhcmFudGVlcy5cbiAgICovXG4gIFNUQU5EQVJEID0gJ1NUQU5EQVJEJyxcblxuICAvKipcbiAgICogRXhwcmVzcyBicm9rZXJzIGFyZSBhIGxvdy1jb3N0IG9wdGlvbiBmb3IgZGV2ZWxvcG1lbnQsIHRlc3RpbmcsIGFuZCB3b3JrbG9hZHMgdGhhdCBkb24ndCByZXF1aXJlIHRoZSBoaWdoIGF2YWlsYWJpbGl0eSBndWFyYW50ZWVzIG9mIHN0YW5kYXJkIE1TSyBjbHVzdGVyLlxuICAgKi9cbiAgRVhQUkVTUyA9ICdFWFBSRVNTJyxcbn1cblxuLyoqXG4gKiBUaGUgQW1hem9uIE1TSyBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgdGhlIGNsdXN0ZXIuXG4gKiBOb3RlOiBUaGVyZSBpcyBjdXJyZW50bHkgbm8gQ2xvdWRmb3JtYXRpb24gUmVzb3VyY2UgdG8gY3JlYXRlIGEgQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJDb25maWd1cmF0aW9uSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIE1TSyBjb25maWd1cmF0aW9uIHRvIHVzZS5cbiAgICogRm9yIGV4YW1wbGUsIGFybjphd3M6a2Fma2E6dXMtZWFzdC0xOjEyMzQ1Njc4OTAxMjpjb25maWd1cmF0aW9uL2V4YW1wbGUtY29uZmlndXJhdGlvbi1uYW1lL2FiY2RhYmNkLTEyMzQtYWJjZC0xMjM0LWFiY2QxMjNlOGU4ZS0xLlxuICAgKi9cbiAgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXZpc2lvbiBvZiB0aGUgQW1hem9uIE1TSyBjb25maWd1cmF0aW9uIHRvIHVzZS5cbiAgICovXG4gIHJlYWRvbmx5IHJldmlzaW9uOiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIGxldmVsIG9mIG1vbml0b3JpbmcgZm9yIHRoZSBNU0sgY2x1c3RlclxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21zay9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvbW9uaXRvcmluZy5odG1sI21ldHJpY3MtZGV0YWlsc1xuICovXG5leHBvcnQgZW51bSBDbHVzdGVyTW9uaXRvcmluZ0xldmVsIHtcbiAgLyoqXG4gICAqIERlZmF1bHQgbWV0cmljcyBhcmUgdGhlIGVzc2VudGlhbCBtZXRyaWNzIHRvIG1vbml0b3IuXG4gICAqL1xuICBERUZBVUxUID0gJ0RFRkFVTFQnLFxuXG4gIC8qKlxuICAgKiBQZXIgQnJva2VyIG1ldHJpY3MgZ2l2ZSB5b3UgbWV0cmljcyBhdCB0aGUgYnJva2VyIGxldmVsLlxuICAgKi9cbiAgUEVSX0JST0tFUiA9ICdQRVJfQlJPS0VSJyxcblxuICAvKipcbiAgICogUGVyIFRvcGljIFBlciBCcm9rZXIgbWV0cmljcyBoZWxwIHlvdSB1bmRlcnN0YW5kIHZvbHVtZSBhdCB0aGUgdG9waWMgbGV2ZWwuXG4gICAqL1xuICBQRVJfVE9QSUNfUEVSX0JST0tFUiA9ICdQRVJfVE9QSUNfUEVSX0JST0tFUicsXG5cbiAgLyoqXG4gICAqIFBlciBUb3BpYyBQZXIgUGFydGl0aW9uIG1ldHJpY3MgaGVscCB5b3UgdW5kZXJzdGFuZCBjb25zdW1lciBncm91cCBsYWcgYXQgdGhlIHRvcGljIHBhcnRpdGlvbiBsZXZlbC5cbiAgICovXG4gIFBFUl9UT1BJQ19QRVJfUEFSVElUSU9OID0gJ1BFUl9UT1BJQ19QRVJfUEFSVElUSU9OJyxcbn1cblxuLyoqXG4gKiBNb25pdG9yaW5nIENvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25pdG9yaW5nQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGxldmVsIG9mIG1vbml0b3JpbmcgZm9yIHRoZSBNU0sgY2x1c3Rlci5cbiAgICpcbiAgICogQGRlZmF1bHQgREVGQVVMVFxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlck1vbml0b3JpbmdMZXZlbD86IENsdXN0ZXJNb25pdG9yaW5nTGV2ZWw7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHlvdSB3YW50IHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBKTVggRXhwb3J0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQcm9tZXRoZXVzSm14RXhwb3J0ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB5b3Ugd2FudCB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgUHJvbWV0aGV1cyBOb2RlIEV4cG9ydGVyLlxuICAgKlxuICAgKiBZb3UgY2FuIHVzZSB0aGUgUHJvbWV0aGV1cyBOb2RlIEV4cG9ydGVyIHRvIGdldCBDUFUgYW5kIGRpc2sgbWV0cmljcyBmb3IgdGhlIGJyb2tlciBub2Rlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZVByb21ldGhldXNOb2RlRXhwb3J0ZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZGV0YWlscyByZWxhdGVkIHRvIGJyb2tlciBsb2dzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJyb2tlckxvZ2dpbmcge1xuICAvKipcbiAgICogVGhlIEFtYXpvbiBEYXRhIEZpcmVob3NlIGRlbGl2ZXJ5IHN0cmVhbSB0aGF0IGlzIHRoZSBkZXN0aW5hdGlvbiBmb3IgYnJva2VyIGxvZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGlzYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGZpcmVob3NlRGVsaXZlcnlTdHJlYW1OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRXYXRjaCBMb2dzIGdyb3VwIHRoYXQgaXMgdGhlIGRlc3RpbmF0aW9uIGZvciBicm9rZXIgbG9ncy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkaXNhYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWR3YXRjaExvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIERldGFpbHMgb2YgdGhlIEFtYXpvbiBTMyBkZXN0aW5hdGlvbiBmb3IgYnJva2VyIGxvZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGlzYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IHMzPzogUzNMb2dnaW5nQ29uZmlndXJhdGlvbjtcbn1cblxuLyoqXG4gKiBEZXRhaWxzIG9mIHRoZSBBbWF6b24gUzMgZGVzdGluYXRpb24gZm9yIGJyb2tlciBsb2dzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzTG9nZ2luZ0NvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIFMzIGJ1Y2tldCB0aGF0IGlzIHRoZSBkZXN0aW5hdGlvbiBmb3IgYnJva2VyIGxvZ3MuXG4gICAqL1xuICByZWFkb25seSBidWNrZXQ6IHMzLklCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBTMyBwcmVmaXggdGhhdCBpcyB0aGUgZGVzdGluYXRpb24gZm9yIGJyb2tlciBsb2dzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHByZWZpeFxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEluZGljYXRlcyB0aGUgZW5jcnlwdGlvbiBzZXR0aW5nIGZvciBkYXRhIGluIHRyYW5zaXQgYmV0d2VlbiBjbGllbnRzIGFuZCBicm9rZXJzLlxuICovXG5leHBvcnQgZW51bSBDbGllbnRCcm9rZXJFbmNyeXB0aW9uIHtcbiAgLyoqXG4gICAqIFRMUyBtZWFucyB0aGF0IGNsaWVudC1icm9rZXIgY29tbXVuaWNhdGlvbiBpcyBlbmFibGVkIHdpdGggVExTIG9ubHkuXG4gICAqL1xuICBUTFMgPSAnVExTJyxcblxuICAvKipcbiAgICogVExTX1BMQUlOVEVYVCBtZWFucyB0aGF0IGNsaWVudC1icm9rZXIgY29tbXVuaWNhdGlvbiBpcyBlbmFibGVkIGZvciBib3RoIFRMUy1lbmNyeXB0ZWQsIGFzIHdlbGwgYXMgcGxhaW50ZXh0IGRhdGEuXG4gICAqL1xuICBUTFNfUExBSU5URVhUID0gJ1RMU19QTEFJTlRFWFQnLFxuXG4gIC8qKlxuICAgKiBQTEFJTlRFWFQgbWVhbnMgdGhhdCBjbGllbnQtYnJva2VyIGNvbW11bmljYXRpb24gaXMgZW5hYmxlZCBpbiBwbGFpbnRleHQgb25seS5cbiAgICovXG4gIFBMQUlOVEVYVCA9ICdQTEFJTlRFWFQnLFxufVxuXG4vKipcbiAqIFRoZSBzZXR0aW5ncyBmb3IgZW5jcnlwdGluZyBkYXRhIGluIHRyYW5zaXQuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbXNrL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9tc2stZW5jcnlwdGlvbi5odG1sI21zay1lbmNyeXB0aW9uLWluLXRyYW5zaXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0aW9uSW5UcmFuc2l0Q29uZmlnIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgZW5jcnlwdGlvbiBzZXR0aW5nIGZvciBkYXRhIGluIHRyYW5zaXQgYmV0d2VlbiBjbGllbnRzIGFuZCBicm9rZXJzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRMU1xuICAgKi9cbiAgcmVhZG9ubHkgY2xpZW50QnJva2VyPzogQ2xpZW50QnJva2VyRW5jcnlwdGlvbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgZGF0YSBjb21tdW5pY2F0aW9uIGFtb25nIHRoZSBicm9rZXIgbm9kZXMgb2YgdGhlIGNsdXN0ZXIgaXMgZW5jcnlwdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVJbkNsdXN0ZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFNBU0wgYXV0aGVudGljYXRpb24gcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhc2xBdXRoUHJvcHMge1xuICAvKipcbiAgICogRW5hYmxlIFNBU0wvU0NSQU0gYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzY3JhbT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBJQU0gYWNjZXNzIGNvbnRyb2wuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpYW0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBLTVMgS2V5IHRvIGVuY3J5cHQgU0FTTC9TQ1JBTSBzZWNyZXRzLlxuICAgKlxuICAgKiBZb3UgbXVzdCB1c2UgYSBjdXN0b21lciBtYXN0ZXIga2V5IChDTUspIHdoZW4gY3JlYXRpbmcgdXNlcnMgaW4gc2VjcmV0cyBtYW5hZ2VyLlxuICAgKiBZb3UgY2Fubm90IHVzZSBhIFNlY3JldCB3aXRoIEFtYXpvbiBNU0sgdGhhdCB1c2VzIHRoZSBkZWZhdWx0IFNlY3JldHMgTWFuYWdlciBlbmNyeXB0aW9uIGtleS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBDTUsgd2lsbCBiZSBjcmVhdGVkIHdpdGggYWxpYXMgbXNrL3tjbHVzdGVyTmFtZX0vc2FzbC9zY3JhbVxuICAgKi9cbiAgcmVhZG9ubHkga2V5Pzoga21zLklLZXlSZWY7XG59XG5cbi8qKlxuICogVExTIGF1dGhlbnRpY2F0aW9uIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUbHNBdXRoUHJvcHMge1xuICAvKipcbiAgICogTGlzdCBvZiBBQ00gQ2VydGlmaWNhdGUgQXV0aG9yaXRpZXMgdG8gZW5hYmxlIFRMUyBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZUF1dGhvcml0aWVzPzogYWNtcGNhLklDZXJ0aWZpY2F0ZUF1dGhvcml0eVtdO1xufVxuXG4vKipcbiAqIFNBU0wgKyBUTFMgYXV0aGVudGljYXRpb24gcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhc2xUbHNBdXRoUHJvcHMgZXh0ZW5kcyBTYXNsQXV0aFByb3BzLCBUbHNBdXRoUHJvcHMgeyB9XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciBjbGllbnQgYXV0aGVudGljYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBDbGllbnRBdXRoZW50aWNhdGlvbiB7XG4gIC8qKlxuICAgKiBTQVNMIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhc2wocHJvcHM6IFNhc2xBdXRoUHJvcHMpOiBDbGllbnRBdXRoZW50aWNhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoZW50aWNhdGlvbihwcm9wcywgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUTFMgYXV0aGVudGljYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdGxzKHByb3BzOiBUbHNBdXRoUHJvcHMpOiBDbGllbnRBdXRoZW50aWNhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoZW50aWNhdGlvbih1bmRlZmluZWQsIHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTQVNMICsgVExTIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhc2xUbHMoc2FzbFRsc1Byb3BzOiBTYXNsVGxzQXV0aFByb3BzKTogQ2xpZW50QXV0aGVudGljYXRpb24ge1xuICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aGVudGljYXRpb24oc2FzbFRsc1Byb3BzLCBzYXNsVGxzUHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzYXNsUHJvcHMgLSBwcm9wZXJ0aWVzIGZvciBTQVNMIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBwYXJhbSB0bHNQcm9wcyAtIHByb3BlcnRpZXMgZm9yIFRMUyBhdXRoZW50aWNhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2FzbFByb3BzPzogU2FzbEF1dGhQcm9wcyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGxzUHJvcHM/OiBUbHNBdXRoUHJvcHMsXG4gICkge31cbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBNU0sgQ2x1c3Rlci5cbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpNU0s6OkNsdXN0ZXJcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIENsdXN0ZXIgZXh0ZW5kcyBDbHVzdGVyQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLW1zay1hbHBoYS5DbHVzdGVyJztcblxuICAvKipcbiAgICogUmVmZXJlbmNlIGFuIGV4aXN0aW5nIGNsdXN0ZXIsIGRlZmluZWQgb3V0c2lkZSBvZiB0aGUgQ0RLIGNvZGUsIGJ5IG5hbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21DbHVzdGVyQXJuKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgY2x1c3RlckFybjogc3RyaW5nKTogSUNsdXN0ZXIge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIENsdXN0ZXJCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjbHVzdGVyQXJuID0gY2x1c3RlckFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjbHVzdGVyTmFtZSA9IGNvcmUuRm4uc2VsZWN0KDEsIGNvcmUuRm4uc3BsaXQoJy8nLCBjbHVzdGVyQXJuKSk7IC8vIFsnYXJuOnBhcnRpdGlvbjprYWZrYTpyZWdpb246YWNjb3VudC1pZCcsIGNsdXN0ZXJOYW1lLCBjbHVzdGVySWRdXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKiBLZXkgdXNlZCB0byBlbmNyeXB0IFNBU0wvU0NSQU0gdXNlcnMgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNhc2xTY3JhbUF1dGhlbnRpY2F0aW9uS2V5Pzoga21zLklLZXk7XG4gIHByaXZhdGUgcmVzb3VyY2U6IENmbkNsdXN0ZXI7XG4gIHByaXZhdGUgX2NsdXN0ZXJEZXNjcmlwdGlvbj86IGNyLkF3c0N1c3RvbVJlc291cmNlO1xuICBwcml2YXRlIF9jbHVzdGVyQm9vdHN0cmFwQnJva2Vycz86IGNyLkF3c0N1c3RvbVJlc291cmNlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENsdXN0ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgeyBwaHlzaWNhbE5hbWU6IHByb3BzLmNsdXN0ZXJOYW1lIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgY29uc3Qgc3VibmV0U2VsZWN0aW9uID0gcHJvcHMudnBjLnNlbGVjdFN1Ym5ldHMocHJvcHMudnBjU3VibmV0cyk7XG5cbiAgICB0aGlzLl9jb25uZWN0aW9ucyA9IG5ldyBlYzIuQ29ubmVjdGlvbnMoe1xuICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzLnNlY3VyaXR5R3JvdXBzID8/IFtcbiAgICAgICAgbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsICdTZWN1cml0eUdyb3VwJywge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTVNLIHNlY3VyaXR5IGdyb3VwJyxcbiAgICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgaWYgKHN1Ym5ldFNlbGVjdGlvbi5zdWJuZXRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIHRocm93IG5ldyBjb3JlLlZhbGlkYXRpb25FcnJvcihsaXRgSW5zdWZmaWNpZW50U3VibmV0c2AsIGBDbHVzdGVyIHJlcXVpcmVzIGF0IGxlYXN0IDIgc3VibmV0cywgZ290ICR7c3VibmV0U2VsZWN0aW9uLnN1Ym5ldHMubGVuZ3RofWAsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5lbmNyeXB0aW9uSW5UcmFuc2l0Py5jbGllbnRCcm9rZXIgPT09IENsaWVudEJyb2tlckVuY3J5cHRpb24uUExBSU5URVhUICYmIHByb3BzLmNsaWVudEF1dGhlbnRpY2F0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgY29yZS5WYWxpZGF0aW9uRXJyb3IobGl0YENsaWVudEF1dGhSZXF1aXJlc1Rsc2AsICdUbyBlbmFibGUgY2xpZW50IGF1dGhlbnRpY2F0aW9uLCB5b3UgbXVzdCBlbmFibGVkIFRMUy1lbmNyeXB0ZWQgdHJhZmZpYyBiZXR3ZWVuIGNsaWVudHMgYW5kIGJyb2tlcnMuJywgdGhpcyk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHByb3BzLmVuY3J5cHRpb25JblRyYW5zaXQ/LmNsaWVudEJyb2tlciA9PT1cbiAgICAgICAgQ2xpZW50QnJva2VyRW5jcnlwdGlvbi5UTFNfUExBSU5URVhUICYmXG4gICAgICAocHJvcHMuY2xpZW50QXV0aGVudGljYXRpb24/LnNhc2xQcm9wcz8uc2NyYW0gfHxcbiAgICAgICAgcHJvcHMuY2xpZW50QXV0aGVudGljYXRpb24/LnNhc2xQcm9wcz8uaWFtKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IGNvcmUuVmFsaWRhdGlvbkVycm9yKGxpdGBTYXNsQXV0aFJlcXVpcmVzVGxzT25seWAsICdUbyBlbmFibGUgU0FTTC9TQ1JBTSBvciBJQU0gYXV0aGVudGljYXRpb24sIHlvdSBtdXN0IG9ubHkgYWxsb3cgVExTLWVuY3J5cHRlZCB0cmFmZmljIGJldHdlZW4gY2xpZW50cyBhbmQgYnJva2Vycy4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCB2b2x1bWVTaXplID0gcHJvcHMuZWJzU3RvcmFnZUluZm8/LnZvbHVtZVNpemUgPz8gMTAwMDtcbiAgICAvLyBNaW5pbXVtOiAxIEdpQiwgbWF4aW11bTogMTYzODQgR2lCXG4gICAgaWYgKHZvbHVtZVNpemUgPCAxIHx8IHZvbHVtZVNpemUgPiAxNjM4NCkge1xuICAgICAgdGhyb3cgbmV3IGNvcmUuVmFsaWRhdGlvbkVycm9yKGxpdGBJbnZhbGlkRWJzVm9sdW1lU2l6ZWAsICdFQlMgdm9sdW1lIHNpemUgc2hvdWxkIGJlIGluIHRoZSByYW5nZSAxLTE2Mzg0JywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNFeHByZXNzID0gcHJvcHMuYnJva2VyVHlwZSA9PT0gQnJva2VyVHlwZS5FWFBSRVNTO1xuXG4gICAgaWYgKGlzRXhwcmVzcykge1xuICAgICAgLy8gVmFsaWRhdGUgS2Fma2EgdmVyc2lvbiBjb21wYXRpYmlsaXR5XG4gICAgICAvLyBleHByZXNzIGJyb2tlciBkb2N1bWVudGF0aW9uIGZvciBzdXBwb3J0ZWQgdmVyc2lvbnMgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21zay9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvbXNrLWJyb2tlci10eXBlcy1leHByZXNzLmh0bWwjbXNrLWJyb2tlci10eXBlcy1leHByZXNzLW5vdGVzXG4gICAgICBjb25zdCBzdXBwb3J0ZWRWZXJzaW9ucyA9IFsnMy42JywgJzMuOCcsICczLjknXTtcbiAgICAgIGNvbnN0IGthZmthVmVyc2lvblN0cmluZyA9IHByb3BzLmthZmthVmVyc2lvbi52ZXJzaW9uO1xuICAgICAgY29uc3QgaXNDb21wYXRpYmxlVmVyc2lvbiA9IHN1cHBvcnRlZFZlcnNpb25zLnNvbWUodmVyc2lvbiA9PiBrYWZrYVZlcnNpb25TdHJpbmcuaW5jbHVkZXModmVyc2lvbikpO1xuICAgICAgaWYgKCFpc0NvbXBhdGlibGVWZXJzaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBjb3JlLlZhbGlkYXRpb25FcnJvcihsaXRgRXhwcmVzc0Jyb2tlckluY29tcGF0aWJsZVZlcnNpb25gLCBgRXhwcmVzcyBicm9rZXJzIGFyZSBvbmx5IHN1cHBvcnRlZCB3aXRoIEFwYWNoZSBLYWZrYSAke3N1cHBvcnRlZFZlcnNpb25zLmpvaW4oJywgJyl9LCBnb3QgJHtrYWZrYVZlcnNpb25TdHJpbmd9YCwgdGhpcyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghcHJvcHMuaW5zdGFuY2VUeXBlKSB7XG4gICAgICAgIHRocm93IG5ldyBjb3JlLlZhbGlkYXRpb25FcnJvcihsaXRgRXhwcmVzc0Jyb2tlclJlcXVpcmVzSW5zdGFuY2VUeXBlYCwgJ2BpbnN0YW5jZVR5cGVgIG11c3QgYWxzbyBiZSBzcGVjaWZpZWQgd2hlbiBgYnJva2VyVHlwZWAgaXMgYEJyb2tlclR5cGUuRVhQUkVTU2AuJywgdGhpcyk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMuZWJzU3RvcmFnZUluZm8pIHtcbiAgICAgICAgdGhyb3cgbmV3IGNvcmUuVmFsaWRhdGlvbkVycm9yKGxpdGBFeHByZXNzQnJva2VyTm9FYnNTdG9yYWdlYCwgJ2BlYnNTdG9yYWdlSW5mb2AgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGBicm9rZXJUeXBlYCBpcyBgQnJva2VyVHlwZS5FWFBSRVNTYC4nLCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5zdG9yYWdlTW9kZSkge1xuICAgICAgICB0aHJvdyBuZXcgY29yZS5WYWxpZGF0aW9uRXJyb3IobGl0YEV4cHJlc3NCcm9rZXJOb1N0b3JhZ2VNb2RlYCwgJ2BzdG9yYWdlTW9kZWAgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGBicm9rZXJUeXBlYCBpcyBgQnJva2VyVHlwZS5FWFBSRVNTYC4nLCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5sb2dnaW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBjb3JlLlZhbGlkYXRpb25FcnJvcihsaXRgRXhwcmVzc0Jyb2tlck5vTG9nZ2luZ2AsICdgbG9nZ2luZ2AgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGBicm9rZXJUeXBlYCBpcyBgQnJva2VyVHlwZS5FWFBSRVNTYC4nLCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdWJuZXRTZWxlY3Rpb24uc3VibmV0cy5sZW5ndGggPCAzKSB7XG4gICAgICAgIHRocm93IG5ldyBjb3JlLlZhbGlkYXRpb25FcnJvcihsaXRgRXhwcmVzc0NsdXN0ZXJJbnN1ZmZpY2llbnRTdWJuZXRzYCwgYEV4cHJlc3MgY2x1c3RlciByZXF1aXJlcyBhdCBsZWFzdCAzIHN1Ym5ldHMsIGdvdCAke3N1Ym5ldFNlbGVjdGlvbi5zdWJuZXRzLmxlbmd0aH1gLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YW5jZVR5cGUgPSBwcm9wcy5pbnN0YW5jZVR5cGVcbiAgICAgID8gdGhpcy5tc2tJbnN0YW5jZVR5cGUocHJvcHMuaW5zdGFuY2VUeXBlLCBpc0V4cHJlc3MpXG4gICAgICA6IHRoaXMubXNrSW5zdGFuY2VUeXBlKFxuICAgICAgICBlYzIuSW5zdGFuY2VUeXBlLm9mKGVjMi5JbnN0YW5jZUNsYXNzLk01LCBlYzIuSW5zdGFuY2VTaXplLkxBUkdFKSxcbiAgICAgICk7XG5cbiAgICBpZiAocHJvcHMuc3RvcmFnZU1vZGUgJiYgcHJvcHMuc3RvcmFnZU1vZGUgPT09IFN0b3JhZ2VNb2RlLlRJRVJFRCkge1xuICAgICAgaWYgKCFwcm9wcy5rYWZrYVZlcnNpb24uaXNUaWVyZWRTdG9yYWdlQ29tcGF0aWJsZSgpKSB7XG4gICAgICAgIHRocm93IG5ldyBjb3JlLlZhbGlkYXRpb25FcnJvcihsaXRgVGllcmVkU3RvcmFnZUluY29tcGF0aWJsZVZlcnNpb25gLCBgVG8gZGVwbG95IGEgdGllcmVkIGNsdXN0ZXIgeW91IG11c3Qgc2VsZWN0IGEgY29tcGF0aWJsZSBLYWZrYSB2ZXJzaW9uLCBnb3QgJHtwcm9wcy5rYWZrYVZlcnNpb24udmVyc2lvbn1gLCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnN0YW5jZVR5cGUgPT09IHRoaXMubXNrSW5zdGFuY2VUeXBlKFxuICAgICAgICBlYzIuSW5zdGFuY2VUeXBlLm9mKGVjMi5JbnN0YW5jZUNsYXNzLlQzLCBlYzIuSW5zdGFuY2VTaXplLlNNQUxMKSxcbiAgICAgICkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGNvcmUuVmFsaWRhdGlvbkVycm9yKGxpdGBUaWVyZWRTdG9yYWdlSW5jb21wYXRpYmxlSW5zdGFuY2VUeXBlYCwgJ1RpZXJlZCBzdG9yYWdlIGRvZXNuXFwndCBzdXBwb3J0IGJyb2tlciB0eXBlIHQzLnNtYWxsJywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZW5jcnlwdGlvbkF0UmVzdCA9IHByb3BzLmVic1N0b3JhZ2VJbmZvPy5lbmNyeXB0aW9uS2V5XG4gICAgICA/IHtcbiAgICAgICAgZGF0YVZvbHVtZUttc0tleUlkOlxuICAgICAgICAgICAgcHJvcHMuZWJzU3RvcmFnZUluZm8uZW5jcnlwdGlvbktleS5rZXlSZWYua2V5SWQsXG4gICAgICB9XG4gICAgICA6IHVuZGVmaW5lZDsgLy8gTVNLIHdpbGwgY3JlYXRlIHRoZSBtYW5hZ2VkIGtleVxuXG4gICAgY29uc3QgZW5jcnlwdGlvbkluVHJhbnNpdCA9IHtcbiAgICAgIGNsaWVudEJyb2tlcjpcbiAgICAgICAgcHJvcHMuZW5jcnlwdGlvbkluVHJhbnNpdD8uY2xpZW50QnJva2VyID8/XG4gICAgICAgIENsaWVudEJyb2tlckVuY3J5cHRpb24uVExTLFxuICAgICAgaW5DbHVzdGVyOiBwcm9wcy5lbmNyeXB0aW9uSW5UcmFuc2l0Py5lbmFibGVJbkNsdXN0ZXIgPz8gdHJ1ZSxcbiAgICB9O1xuXG4gICAgY29uc3Qgb3Blbk1vbml0b3JpbmcgPVxuICAgICAgcHJvcHMubW9uaXRvcmluZz8uZW5hYmxlUHJvbWV0aGV1c0pteEV4cG9ydGVyIHx8XG4gICAgICBwcm9wcy5tb25pdG9yaW5nPy5lbmFibGVQcm9tZXRoZXVzTm9kZUV4cG9ydGVyXG4gICAgICAgID8ge1xuICAgICAgICAgIHByb21ldGhldXM6IHtcbiAgICAgICAgICAgIGpteEV4cG9ydGVyOiBwcm9wcy5tb25pdG9yaW5nPy5lbmFibGVQcm9tZXRoZXVzSm14RXhwb3J0ZXJcbiAgICAgICAgICAgICAgPyB7IGVuYWJsZWRJbkJyb2tlcjogdHJ1ZSB9XG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbm9kZUV4cG9ydGVyOiBwcm9wcy5tb25pdG9yaW5nXG4gICAgICAgICAgICAgID8uZW5hYmxlUHJvbWV0aGV1c05vZGVFeHBvcnRlclxuICAgICAgICAgICAgICA/IHsgZW5hYmxlZEluQnJva2VyOiB0cnVlIH1cbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGxvZ2dpbmdCdWNrZXQgPSBwcm9wcy5sb2dnaW5nPy5zMz8uYnVja2V0O1xuICAgIGlmIChsb2dnaW5nQnVja2V0ICYmIEZlYXR1cmVGbGFncy5vZih0aGlzKS5pc0VuYWJsZWQoUzNfQ1JFQVRFX0RFRkFVTFRfTE9HR0lOR19QT0xJQ1kpKSB7XG4gICAgICBjb25zdCBzdGFjayA9IGNvcmUuU3RhY2sub2YodGhpcyk7XG4gICAgICBsb2dnaW5nQnVja2V0LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIHByaW5jaXBhbHM6IFtcbiAgICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2RlbGl2ZXJ5LmxvZ3MuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBsb2dnaW5nQnVja2V0LmFybkZvck9iamVjdHMoYEFXU0xvZ3MvJHtzdGFjay5hY2NvdW50fS8qYCksXG4gICAgICAgIF0sXG4gICAgICAgIGFjdGlvbnM6IFsnczM6UHV0T2JqZWN0J10sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICdzMzp4LWFtei1hY2wnOiAnYnVja2V0LW93bmVyLWZ1bGwtY29udHJvbCcsXG4gICAgICAgICAgICAnYXdzOlNvdXJjZUFjY291bnQnOiBzdGFjay5hY2NvdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgQXJuTGlrZToge1xuICAgICAgICAgICAgJ2F3czpTb3VyY2VBcm4nOiBzdGFjay5mb3JtYXRBcm4oe1xuICAgICAgICAgICAgICBzZXJ2aWNlOiAnbG9ncycsXG4gICAgICAgICAgICAgIHJlc291cmNlOiAnKicsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSkpO1xuXG4gICAgICBsb2dnaW5nQnVja2V0LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIHByaW5jaXBhbHM6IFtcbiAgICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2RlbGl2ZXJ5LmxvZ3MuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtsb2dnaW5nQnVja2V0LmJ1Y2tldEFybl0sXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnczM6R2V0QnVja2V0QWNsJyxcbiAgICAgICAgICAnczM6TGlzdEJ1Y2tldCcsXG4gICAgICAgIF0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICdhd3M6U291cmNlQWNjb3VudCc6IHN0YWNrLmFjY291bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBBcm5MaWtlOiB7XG4gICAgICAgICAgICAnYXdzOlNvdXJjZUFybic6IHN0YWNrLmZvcm1hdEFybih7XG4gICAgICAgICAgICAgIHNlcnZpY2U6ICdsb2dzJyxcbiAgICAgICAgICAgICAgcmVzb3VyY2U6ICcqJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KSk7XG4gICAgfVxuICAgIGNvbnN0IGxvZ2dpbmdJbmZvID0gaXNFeHByZXNzID8gdW5kZWZpbmVkIDoge1xuICAgICAgYnJva2VyTG9nczoge1xuICAgICAgICBjbG91ZFdhdGNoTG9nczoge1xuICAgICAgICAgIGVuYWJsZWQ6XG4gICAgICAgICAgICBwcm9wcy5sb2dnaW5nPy5jbG91ZHdhdGNoTG9nR3JvdXAgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICBsb2dHcm91cDpcbiAgICAgICAgICAgIHByb3BzLmxvZ2dpbmc/LmNsb3Vkd2F0Y2hMb2dHcm91cD8ubG9nR3JvdXBOYW1lLFxuICAgICAgICB9LFxuICAgICAgICBmaXJlaG9zZToge1xuICAgICAgICAgIGVuYWJsZWQ6XG4gICAgICAgICAgICBwcm9wcy5sb2dnaW5nPy5maXJlaG9zZURlbGl2ZXJ5U3RyZWFtTmFtZSAhPT1cbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICBkZWxpdmVyeVN0cmVhbTpcbiAgICAgICAgICAgIHByb3BzLmxvZ2dpbmc/LmZpcmVob3NlRGVsaXZlcnlTdHJlYW1OYW1lLFxuICAgICAgICB9LFxuICAgICAgICBzMzoge1xuICAgICAgICAgIGVuYWJsZWQ6IGxvZ2dpbmdCdWNrZXQgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICBidWNrZXQ6IGxvZ2dpbmdCdWNrZXQ/LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgcHJlZml4OiBwcm9wcy5sb2dnaW5nPy5zMz8ucHJlZml4LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKHByb3BzLmNsaWVudEF1dGhlbnRpY2F0aW9uPy5zYXNsUHJvcHM/LnNjcmFtICYmIHByb3BzLmNsaWVudEF1dGhlbnRpY2F0aW9uPy5zYXNsUHJvcHM/LmtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNhc2xTY3JhbUF1dGhlbnRpY2F0aW9uS2V5ID0gbmV3IGttcy5LZXkodGhpcywgJ1NBU0xLZXknLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlZCBmb3IgZW5jcnlwdGluZyBNU0sgc2VjcmV0cyBmb3IgU0FTTC9TQ1JBTSBhdXRoZW50aWNhdGlvbi4nLFxuICAgICAgICBhbGlhczogYG1zay8ke3Byb3BzLmNsdXN0ZXJOYW1lfS9zYXNsL3NjcmFtYCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9zZXJ2aWNlcy1zZWNyZXRzLW1hbmFnZXIuaHRtbCNhc20tcG9saWNpZXNcbiAgICAgIHRoaXMuc2FzbFNjcmFtQXV0aGVudGljYXRpb25LZXkuYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHNpZDpcbiAgICAgICAgICAgICdBbGxvdyBhY2Nlc3MgdGhyb3VnaCBBV1MgU2VjcmV0cyBNYW5hZ2VyIGZvciBhbGwgcHJpbmNpcGFscyBpbiB0aGUgYWNjb3VudCB0aGF0IGFyZSBhdXRob3JpemVkIHRvIHVzZSBBV1MgU2VjcmV0cyBNYW5hZ2VyJyxcbiAgICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5BbnlQcmluY2lwYWwoKV0sXG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ2ttczpFbmNyeXB0JyxcbiAgICAgICAgICAgICdrbXM6RGVjcnlwdCcsXG4gICAgICAgICAgICAna21zOlJlRW5jcnlwdConLFxuICAgICAgICAgICAgJ2ttczpHZW5lcmF0ZURhdGFLZXkqJyxcbiAgICAgICAgICAgICdrbXM6Q3JlYXRlR3JhbnQnLFxuICAgICAgICAgICAgJ2ttczpEZXNjcmliZUtleScsXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgICAna21zOlZpYVNlcnZpY2UnOiBgc2VjcmV0c21hbmFnZXIuJHtjb3JlLlN0YWNrLm9mKHRoaXMpLnJlZ2lvbn0uYW1hem9uYXdzLmNvbWAsXG4gICAgICAgICAgICAgICdrbXM6Q2FsbGVyQWNjb3VudCc6IGNvcmUuU3RhY2sub2YodGhpcykuYWNjb3VudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBjbGllbnRBdXRoZW50aWNhdGlvbjogQ2ZuQ2x1c3Rlci5DbGllbnRBdXRoZW50aWNhdGlvblByb3BlcnR5IHwgdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy5jbGllbnRBdXRoZW50aWNhdGlvbikge1xuICAgICAgY29uc3QgeyBzYXNsUHJvcHMsIHRsc1Byb3BzIH0gPSBwcm9wcy5jbGllbnRBdXRoZW50aWNhdGlvbjtcbiAgICAgIGNsaWVudEF1dGhlbnRpY2F0aW9uID0ge1xuICAgICAgICBzYXNsOiBzYXNsUHJvcHMgPyB7XG4gICAgICAgICAgaWFtOiBzYXNsUHJvcHMuaWFtID8geyBlbmFibGVkOiB0cnVlIH06IHVuZGVmaW5lZCxcbiAgICAgICAgICBzY3JhbTogc2FzbFByb3BzLnNjcmFtID8geyBlbmFibGVkOiB0cnVlIH06IHVuZGVmaW5lZCxcbiAgICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgdGxzOiB0bHNQcm9wcz8uY2VydGlmaWNhdGVBdXRob3JpdGllcyA/IHtcbiAgICAgICAgICBjZXJ0aWZpY2F0ZUF1dGhvcml0eUFybkxpc3Q6IHRsc1Byb3BzLmNlcnRpZmljYXRlQXV0aG9yaXRpZXM/Lm1hcCgoY2EpID0+IGNhLmNlcnRpZmljYXRlQXV0aG9yaXR5QXJuKSxcbiAgICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgQ2ZuQ2x1c3Rlcih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgICBrYWZrYVZlcnNpb246IHByb3BzLmthZmthVmVyc2lvbi52ZXJzaW9uLFxuICAgICAgbnVtYmVyT2ZCcm9rZXJOb2RlczpcbiAgICAgICAgcHJvcHMubnVtYmVyT2ZCcm9rZXJOb2RlcyAhPT0gdW5kZWZpbmVkID9cbiAgICAgICAgICBzdWJuZXRTZWxlY3Rpb24uYXZhaWxhYmlsaXR5Wm9uZXMubGVuZ3RoICogcHJvcHMubnVtYmVyT2ZCcm9rZXJOb2RlcyA6IHN1Ym5ldFNlbGVjdGlvbi5hdmFpbGFiaWxpdHlab25lcy5sZW5ndGgsXG4gICAgICBicm9rZXJOb2RlR3JvdXBJbmZvOiB7XG4gICAgICAgIGluc3RhbmNlVHlwZSxcbiAgICAgICAgY2xpZW50U3VibmV0czogc3VibmV0U2VsZWN0aW9uLnN1Ym5ldElkcyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IHRoaXMuY29ubmVjdGlvbnMuc2VjdXJpdHlHcm91cHMubWFwKFxuICAgICAgICAgIChncm91cCkgPT4gZ3JvdXAuc2VjdXJpdHlHcm91cElkLFxuICAgICAgICApLFxuICAgICAgICBzdG9yYWdlSW5mbzogaXNFeHByZXNzID8gdW5kZWZpbmVkIDoge1xuICAgICAgICAgIGVic1N0b3JhZ2VJbmZvOiB7XG4gICAgICAgICAgICB2b2x1bWVTaXplOiB2b2x1bWVTaXplLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZW5jcnlwdGlvbkluZm86IHtcbiAgICAgICAgZW5jcnlwdGlvbkF0UmVzdCxcbiAgICAgICAgZW5jcnlwdGlvbkluVHJhbnNpdCxcbiAgICAgIH0sXG4gICAgICBjb25maWd1cmF0aW9uSW5mbzogcHJvcHMuY29uZmlndXJhdGlvbkluZm8sXG4gICAgICBlbmhhbmNlZE1vbml0b3Jpbmc6IHByb3BzLm1vbml0b3Jpbmc/LmNsdXN0ZXJNb25pdG9yaW5nTGV2ZWwsXG4gICAgICBvcGVuTW9uaXRvcmluZzogb3Blbk1vbml0b3JpbmcsXG4gICAgICBzdG9yYWdlTW9kZTogaXNFeHByZXNzID8gdW5kZWZpbmVkIDogcHJvcHMuc3RvcmFnZU1vZGUsXG4gICAgICBsb2dnaW5nSW5mbzogbG9nZ2luZ0luZm8sXG4gICAgICBjbGllbnRBdXRoZW50aWNhdGlvbixcbiAgICB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSByZXNvdXJjZTtcblxuICAgIHJlc291cmNlLmFwcGx5UmVtb3ZhbFBvbGljeShwcm9wcy5yZW1vdmFsUG9saWN5LCB7XG4gICAgICBkZWZhdWx0OiBjb3JlLlJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgIH0pO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgY2x1c3Rlck5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUoXG4gICAgICBjb3JlLkZuLnNlbGVjdCgxLCBjb3JlLkZuLnNwbGl0KCcvJywgdGhpcy5yZXNvdXJjZS5yZWYpKSxcbiAgICApO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgY2x1c3RlckFybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLnJlZjtcbiAgfVxuXG4gIHByaXZhdGUgbXNrSW5zdGFuY2VUeXBlKGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZSwgZXhwcmVzcz86Ym9vbGVhbik6IHN0cmluZyB7XG4gICAgY29uc3QgcHJlZml4ID0gZXhwcmVzcyA/ICdleHByZXNzLicgOiAna2Fma2EuJztcbiAgICByZXR1cm4gYCR7cHJlZml4fSR7aW5zdGFuY2VUeXBlLnRvU3RyaW5nKCl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFpvb0tlZXBlciBDb25uZWN0aW9uIHN0cmluZ1xuICAgKlxuICAgKiBVc2VzIGEgQ3VzdG9tIFJlc291cmNlIHRvIG1ha2UgYW4gQVBJIGNhbGwgdG8gYGRlc2NyaWJlQ2x1c3RlcmAgdXNpbmcgdGhlIEphdmFzY3JpcHQgU0RLXG4gICAqXG4gICAqIEBwYXJhbSByZXNwb25zZUZpZWxkIEZpZWxkIHRvIHJldHVybiBmcm9tIEFQSSBjYWxsLiBlZy4gWm9va2VlcGVyQ29ubmVjdFN0cmluZywgWm9va2VlcGVyQ29ubmVjdFN0cmluZ1Rsc1xuICAgKiBAcmV0dXJucyAtIFRoZSBjb25uZWN0aW9uIHN0cmluZyB0byB1c2UgdG8gY29ubmVjdCB0byB0aGUgQXBhY2hlIFpvb0tlZXBlciBjbHVzdGVyLlxuICAgKi9cbiAgcHJpdmF0ZSBfem9va2VlcGVyQ29ubmVjdGlvblN0cmluZyhyZXNwb25zZUZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fY2x1c3RlckRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLl9jbHVzdGVyRGVzY3JpcHRpb24gPSBuZXcgY3IuQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1pvb2tlZXBlckNvbm5lY3QnLCB7XG4gICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgc2VydmljZTogJ0thZmthJyxcbiAgICAgICAgICBhY3Rpb246ICdkZXNjcmliZUNsdXN0ZXInLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIENsdXN0ZXJBcm46IHRoaXMuY2x1c3RlckFybixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3IuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgICAgJ1pvb0tlZXBlckNvbm5lY3Rpb25TdHJpbmcnLFxuICAgICAgICAgICksXG4gICAgICAgICAgLy8gTGltaXQgdGhlIG91dHB1dCBvZiBkZXNjcmliZUNsdXN0ZXIgdGhhdCBpcyBvdGhlcndpc2UgdG9vIGxhcmdlXG4gICAgICAgICAgb3V0cHV0UGF0aHM6IFtcbiAgICAgICAgICAgICdDbHVzdGVySW5mby5ab29rZWVwZXJDb25uZWN0U3RyaW5nJyxcbiAgICAgICAgICAgICdDbHVzdGVySW5mby5ab29rZWVwZXJDb25uZWN0U3RyaW5nVGxzJyxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBwb2xpY3k6IGNyLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TZGtDYWxscyh7XG4gICAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5jbHVzdGVyQXJuXSxcbiAgICAgICAgfSksXG4gICAgICAgIGluc3RhbGxMYXRlc3RBd3NTZGs6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jbHVzdGVyRGVzY3JpcHRpb24uZ2V0UmVzcG9uc2VGaWVsZChgQ2x1c3RlckluZm8uJHtyZXNwb25zZUZpZWxkfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgWm9vS2VlcGVyIENvbm5lY3Rpb24gc3RyaW5nXG4gICAqXG4gICAqIFVzZXMgYSBDdXN0b20gUmVzb3VyY2UgdG8gbWFrZSBhbiBBUEkgY2FsbCB0byBgZGVzY3JpYmVDbHVzdGVyYCB1c2luZyB0aGUgSmF2YXNjcmlwdCBTREtcbiAgICpcbiAgICogQHJldHVybnMgLSBUaGUgY29ubmVjdGlvbiBzdHJpbmcgdG8gdXNlIHRvIGNvbm5lY3QgdG8gdGhlIEFwYWNoZSBab29LZWVwZXIgY2x1c3Rlci5cbiAgICovXG4gIHB1YmxpYyBnZXQgem9va2VlcGVyQ29ubmVjdGlvblN0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl96b29rZWVwZXJDb25uZWN0aW9uU3RyaW5nKCdab29rZWVwZXJDb25uZWN0U3RyaW5nJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBab29LZWVwZXIgQ29ubmVjdGlvbiBzdHJpbmcgZm9yIGEgVExTIGVuYWJsZWQgY2x1c3RlclxuICAgKlxuICAgKiBVc2VzIGEgQ3VzdG9tIFJlc291cmNlIHRvIG1ha2UgYW4gQVBJIGNhbGwgdG8gYGRlc2NyaWJlQ2x1c3RlcmAgdXNpbmcgdGhlIEphdmFzY3JpcHQgU0RLXG4gICAqXG4gICAqIEByZXR1cm5zIC0gVGhlIGNvbm5lY3Rpb24gc3RyaW5nIHRvIHVzZSB0byBjb25uZWN0IHRvIHpvb2tlZXBlciBjbHVzdGVyIG9uIFRMUyBwb3J0LlxuICAgKi9cbiAgcHVibGljIGdldCB6b29rZWVwZXJDb25uZWN0aW9uU3RyaW5nVGxzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3pvb2tlZXBlckNvbm5lY3Rpb25TdHJpbmcoJ1pvb2tlZXBlckNvbm5lY3RTdHJpbmdUbHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2YgYnJva2VycyB0aGF0IGEgY2xpZW50IGFwcGxpY2F0aW9uIGNhbiB1c2UgdG8gYm9vdHN0cmFwXG4gICAqXG4gICAqIFVzZXMgYSBDdXN0b20gUmVzb3VyY2UgdG8gbWFrZSBhbiBBUEkgY2FsbCB0byBgZ2V0Qm9vdHN0cmFwQnJva2Vyc2AgdXNpbmcgdGhlIEphdmFzY3JpcHQgU0RLXG4gICAqXG4gICAqIEBwYXJhbSByZXNwb25zZUZpZWxkIEZpZWxkIHRvIHJldHVybiBmcm9tIEFQSSBjYWxsLiBlZy4gQm9vdHN0cmFwQnJva2VyU3RyaW5nU2FzbFNjcmFtLCBCb290c3RyYXBCcm9rZXJTdHJpbmdcbiAgICogQHJldHVybnMgLSBBIHN0cmluZyBjb250YWluaW5nIG9uZSBvciBtb3JlIGhvc3RuYW1lOnBvcnQgcGFpcnMuXG4gICAqL1xuICBwcml2YXRlIF9ib290c3RyYXBCcm9rZXJzKHJlc3BvbnNlRmllbGQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9jbHVzdGVyQm9vdHN0cmFwQnJva2Vycykge1xuICAgICAgdGhpcy5fY2x1c3RlckJvb3RzdHJhcEJyb2tlcnMgPSBuZXcgY3IuQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgYEJvb3RzdHJhcEJyb2tlcnMke3Jlc3BvbnNlRmllbGR9YCwge1xuICAgICAgICBvblVwZGF0ZToge1xuICAgICAgICAgIHNlcnZpY2U6ICdLYWZrYScsXG4gICAgICAgICAgYWN0aW9uOiAnZ2V0Qm9vdHN0cmFwQnJva2VycycsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgQ2x1c3RlckFybjogdGhpcy5jbHVzdGVyQXJuLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjci5QaHlzaWNhbFJlc291cmNlSWQub2YoJ0Jvb3RzdHJhcEJyb2tlcnMnKSxcbiAgICAgICAgfSxcbiAgICAgICAgcG9saWN5OiBjci5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU2RrQ2FsbHMoe1xuICAgICAgICAgIHJlc291cmNlczogW3RoaXMuY2x1c3RlckFybl0sXG4gICAgICAgIH0pLFxuICAgICAgICAvLyBBUElzIGFyZSBhdmFpbGFibGUgaW4gMi4xMDU1LjBcbiAgICAgICAgaW5zdGFsbExhdGVzdEF3c1NkazogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NsdXN0ZXJCb290c3RyYXBCcm9rZXJzLmdldFJlc3BvbnNlRmllbGQocmVzcG9uc2VGaWVsZCk7XG4gIH1cbiAgLyoqXG4gICAqIEdldCB0aGUgbGlzdCBvZiBicm9rZXJzIHRoYXQgYSBjbGllbnQgYXBwbGljYXRpb24gY2FuIHVzZSB0byBib290c3RyYXBcbiAgICpcbiAgICogVXNlcyBhIEN1c3RvbSBSZXNvdXJjZSB0byBtYWtlIGFuIEFQSSBjYWxsIHRvIGBnZXRCb290c3RyYXBCcm9rZXJzYCB1c2luZyB0aGUgSmF2YXNjcmlwdCBTREtcbiAgICpcbiAgICogQHJldHVybnMgLSBBIHN0cmluZyBjb250YWluaW5nIG9uZSBvciBtb3JlIGhvc3RuYW1lOnBvcnQgcGFpcnMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJvb3RzdHJhcEJyb2tlcnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYm9vdHN0cmFwQnJva2VycygnQm9vdHN0cmFwQnJva2VyU3RyaW5nJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIGJyb2tlcnMgdGhhdCBhIFRMUyBhdXRoZW50aWNhdGVkIGNsaWVudCBhcHBsaWNhdGlvbiBjYW4gdXNlIHRvIGJvb3RzdHJhcFxuICAgKlxuICAgKiBVc2VzIGEgQ3VzdG9tIFJlc291cmNlIHRvIG1ha2UgYW4gQVBJIGNhbGwgdG8gYGdldEJvb3RzdHJhcEJyb2tlcnNgIHVzaW5nIHRoZSBKYXZhc2NyaXB0IFNES1xuICAgKlxuICAgKiBAcmV0dXJucyAtIEEgc3RyaW5nIGNvbnRhaW5pbmcgb25lIG9yIG1vcmUgRE5TIG5hbWVzIChvciBJUCkgYW5kIFRMUyBwb3J0IHBhaXJzLlxuICAgKi9cbiAgcHVibGljIGdldCBib290c3RyYXBCcm9rZXJzVGxzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jvb3RzdHJhcEJyb2tlcnMoJ0Jvb3RzdHJhcEJyb2tlclN0cmluZ1RscycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbGlzdCBvZiBicm9rZXJzIHRoYXQgYSBTQVNML1NDUkFNIGF1dGhlbnRpY2F0ZWQgY2xpZW50IGFwcGxpY2F0aW9uIGNhbiB1c2UgdG8gYm9vdHN0cmFwXG4gICAqXG4gICAqIFVzZXMgYSBDdXN0b20gUmVzb3VyY2UgdG8gbWFrZSBhbiBBUEkgY2FsbCB0byBgZ2V0Qm9vdHN0cmFwQnJva2Vyc2AgdXNpbmcgdGhlIEphdmFzY3JpcHQgU0RLXG4gICAqXG4gICAqIEByZXR1cm5zIC0gQSBzdHJpbmcgY29udGFpbmluZyBvbmUgb3IgbW9yZSBkbnMgbmFtZSAob3IgSVApIGFuZCBTQVNMIFNDUkFNIHBvcnQgcGFpcnMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJvb3RzdHJhcEJyb2tlcnNTYXNsU2NyYW0oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYm9vdHN0cmFwQnJva2VycygnQm9vdHN0cmFwQnJva2VyU3RyaW5nU2FzbFNjcmFtJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIGJyb2tlcnMgdGhhdCBhIFNBU0wvSUFNIGF1dGhlbnRpY2F0ZWQgY2xpZW50IGFwcGxpY2F0aW9uIGNhbiB1c2UgdG8gYm9vdHN0cmFwXG4gICAqXG4gICAqIFVzZXMgYSBDdXN0b20gUmVzb3VyY2UgdG8gbWFrZSBhbiBBUEkgY2FsbCB0byBgZ2V0Qm9vdHN0cmFwQnJva2Vyc2AgdXNpbmcgdGhlIEphdmFzY3JpcHQgU0RLXG4gICAqXG4gICAqIEByZXR1cm5zIC0gQSBzdHJpbmcgY29udGFpbmluZyBvbmUgb3IgbW9yZSBETlMgbmFtZXMgKG9yIElQKSBhbmQgVExTIHBvcnQgcGFpcnMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJvb3RzdHJhcEJyb2tlcnNTYXNsSWFtKCkge1xuICAgIHJldHVybiB0aGlzLl9ib290c3RyYXBCcm9rZXJzKCdCb290c3RyYXBCcm9rZXJTdHJpbmdTYXNsSWFtJyk7XG4gIH1cblxuICAvKipcbiAgICogQSBsaXN0IG9mIHVzZXJzbmFtZXMgdG8gcmVnaXN0ZXIgd2l0aCB0aGUgY2x1c3Rlci4gVGhlIHBhc3N3b3JkIHdpbGwgYXV0b21hdGljYWxseSBiZSBnZW5lcmF0ZWQgdXNpbmcgU2VjcmV0c1xuICAgKiBNYW5hZ2VyIGFuZCB0aGUgeyB1c2VybmFtZSwgcGFzc3dvcmQgfSBKU09OIG9iamVjdCBzdG9yZWQgaW4gU2VjcmV0cyBNYW5hZ2VyIGFzIGBBbWF6b25NU0tfdXNlcm5hbWVgLlxuICAgKlxuICAgKiBNdXN0IGJlIHVzaW5nIHRoZSBTQVNML1NDUkFNIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbS5cbiAgICpcbiAgICogQHBhcmFtIHVzZXJuYW1lcyAtIHVzZXJuYW1lKHMpIHRvIHJlZ2lzdGVyIHdpdGggdGhlIGNsdXN0ZXJcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRVc2VyKC4uLnVzZXJuYW1lczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zYXNsU2NyYW1BdXRoZW50aWNhdGlvbktleSkge1xuICAgICAgY29uc3QgTVNLX1NFQ1JFVF9QUkVGSVggPSAnQW1hem9uTVNLXyc7IC8vIFJlcXVpcmVkXG4gICAgICBjb25zdCBzZWNyZXRzID0gdXNlcm5hbWVzLm1hcChcbiAgICAgICAgKHVzZXJuYW1lKSA9PlxuICAgICAgICAgIG5ldyBzZWNyZXRzbWFuYWdlci5TZWNyZXQodGhpcywgYEthZmthVXNlciR7dXNlcm5hbWV9YCwge1xuICAgICAgICAgICAgc2VjcmV0TmFtZTogYCR7TVNLX1NFQ1JFVF9QUkVGSVh9JHt0aGlzLmNsdXN0ZXJOYW1lfV8ke3VzZXJuYW1lfWAsXG4gICAgICAgICAgICBnZW5lcmF0ZVNlY3JldFN0cmluZzoge1xuICAgICAgICAgICAgICBzZWNyZXRTdHJpbmdUZW1wbGF0ZTogSlNPTi5zdHJpbmdpZnkoeyB1c2VybmFtZSB9KSxcbiAgICAgICAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5jcnlwdGlvbktleTogdGhpcy5zYXNsU2NyYW1BdXRoZW50aWNhdGlvbktleSxcbiAgICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICAgIG5ldyBjci5Bd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBgQmF0Y2hBc3NvY2lhdGVTY3JhbVNlY3JldHMke2FkZHJlc3NPZih1c2VybmFtZXMpfWAsIHtcbiAgICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgICBzZXJ2aWNlOiAnS2Fma2EnLFxuICAgICAgICAgIGFjdGlvbjogJ2JhdGNoQXNzb2NpYXRlU2NyYW1TZWNyZXQnLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIENsdXN0ZXJBcm46IHRoaXMuY2x1c3RlckFybixcbiAgICAgICAgICAgIFNlY3JldEFybkxpc3Q6IHNlY3JldHMubWFwKChzZWNyZXQpID0+IHNlY3JldC5zZWNyZXRBcm4pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjci5QaHlzaWNhbFJlc291cmNlSWQub2YoJ0NyZWF0ZVVzZXJzJyksXG4gICAgICAgIH0sXG4gICAgICAgIHBvbGljeTogY3IuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFsna21zOkNyZWF0ZUdyYW50J10sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFt0aGlzLnNhc2xTY3JhbUF1dGhlbnRpY2F0aW9uS2V5Py5rZXlBcm5dLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFsna2Fma2E6QmF0Y2hBc3NvY2lhdGVTY3JhbVNlY3JldCddLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5jbHVzdGVyQXJuXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGluc3RhbGxMYXRlc3RBd3NTZGs6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBjb3JlLlZhbGlkYXRpb25FcnJvcihsaXRgTWlzc2luZ0F1dGhlbnRpY2F0aW9uS21zS2V5YCwgJ0Nhbm5vdCBjcmVhdGUgdXNlcnMgaWYgYW4gYXV0aGVudGljYXRpb24gS01TIGtleSBoYXMgbm90IGJlZW4gY3JlYXRlZC9wcm92aWRlZC4nLCB0aGlzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
700
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyx5REFBMkM7QUFFM0MsaURBQWlEO0FBRWpELCtFQUFpRTtBQUNqRSx1REFBeUM7QUFDekMsMkNBQWdEO0FBQ2hELDRFQUE0RTtBQUM1RSw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBQzFFLGlFQUFtRDtBQUNuRCwrQ0FBc0U7QUFFdEUsOERBQTREO0FBc0I1RDs7R0FFRztBQUNILE1BQXNCLFdBQVksU0FBUSxJQUFJLENBQUMsUUFBUTs7SUFHckQsZ0JBQWdCO0lBQ04sWUFBWSxDQUE4QjtJQUVwRCwwQ0FBMEM7SUFDMUMsSUFBVyxXQUFXO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBQSxzQkFBRyxFQUFBLCtCQUErQixFQUFFLHVEQUF1RCxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BJLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7S0FDMUI7O0FBWkgsa0NBYUM7QUE4SUQ7O0dBRUc7QUFDSCxJQUFZLFdBVVg7QUFWRCxXQUFZLFdBQVc7SUFDckI7O09BRUc7SUFDSCw4QkFBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCxnQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVlcsV0FBVywyQkFBWCxXQUFXLFFBVXRCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLFVBVVg7QUFWRCxXQUFZLFVBQVU7SUFDcEI7O09BRUc7SUFDSCxtQ0FBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILGlDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFWVyxVQUFVLDBCQUFWLFVB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QUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQzt5QkFDekQ7d0JBQ0Qsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7cUJBQzVEO29CQUNELE1BQU0sRUFBRSxFQUFFLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDO3dCQUNoRCxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7NEJBQ3RCLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDOzRCQUM1QixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxDQUFDO3lCQUNyRCxDQUFDO3dCQUNGLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQzs0QkFDdEIsT0FBTyxFQUFFLENBQUMsaUNBQWlDLENBQUM7NEJBQzVDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7eUJBQzdCLENBQUM7cUJBQ0gsQ0FBQztvQkFDRixtQkFBbUIsRUFBRSxLQUFLO2lCQUMzQixDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBQSxzQkFBRyxFQUFBLDZCQUE2QixFQUFFLGlGQUFpRixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVKLENBQUM7U0FDRjs7WUFwZVUsdURBQU87Ozs7O0FBQVAsMEJBQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGFjbXBjYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYWNtcGNhJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB0eXBlICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBDZm5DbHVzdGVyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLW1zayc7XG5pbXBvcnQgdHlwZSAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0ICogYXMgY29yZSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IEZlYXR1cmVGbGFncyB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgbWVtb2l6ZWRHZXR0ZXIsIGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCAqIGFzIGNyIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgUzNfQ1JFQVRFX0RFRkFVTFRfTE9HR0lOR19QT0xJQ1kgfSBmcm9tICdhd3MtY2RrLWxpYi9jeC1hcGknO1xuaW1wb3J0IHR5cGUgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgYWRkcmVzc09mIH0gZnJvbSAnY29uc3RydWN0cy9saWIvcHJpdmF0ZS91bmlxdWVpZCc7XG5pbXBvcnQgdHlwZSB7IEthZmthVmVyc2lvbiB9IGZyb20gJy4vJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgTVNLIENsdXN0ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ2x1c3RlciBleHRlbmRzIGNvcmUuSVJlc291cmNlLCBlYzIuSUNvbm5lY3RhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgY2x1c3Rlci5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlckFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGh5c2ljYWwgbmFtZSBvZiB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlck5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBNU0sgQ2x1c3Rlci5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENsdXN0ZXJCYXNlIGV4dGVuZHMgY29yZS5SZXNvdXJjZSBpbXBsZW1lbnRzIElDbHVzdGVyIHtcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGNsdXN0ZXJBcm46IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGNsdXN0ZXJOYW1lOiBzdHJpbmc7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJvdGVjdGVkIF9jb25uZWN0aW9uczogZWMyLkNvbm5lY3Rpb25zIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBNYW5hZ2VzIGNvbm5lY3Rpb25zIGZvciB0aGUgY2x1c3RlciAqL1xuICBwdWJsaWMgZ2V0IGNvbm5lY3Rpb25zKCk6IGVjMi5Db25uZWN0aW9ucyB7XG4gICAgaWYgKCF0aGlzLl9jb25uZWN0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IGNvcmUuVmFsaWRhdGlvbkVycm9yKGxpdGBJbXBvcnRlZENsdXN0ZXJTZWN1cml0eUdyb3Vwc2AsICdBbiBpbXBvcnRlZCBDbHVzdGVyIGNhbm5vdCBtYW5hZ2UgaXRzIHNlY3VyaXR5IGdyb3VwcycsIHRoaXMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbnM7XG4gIH1cbn1cblxuLyoqXG4gKiAgUHJvcGVydGllcyBmb3IgYSBNU0sgQ2x1c3RlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcGh5c2ljYWwgbmFtZSBvZiB0aGUgY2x1c3Rlci5cbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIEFwYWNoZSBLYWZrYS5cbiAgICovXG4gIHJlYWRvbmx5IGthZmthVmVyc2lvbjogS2Fma2FWZXJzaW9uO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgQXBhY2hlIEthZmthIGJyb2tlcnMgZGVwbG95ZWQgaW4gZWFjaCBBdmFpbGFiaWxpdHkgWm9uZS5cbiAgICpcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgbnVtYmVyT2ZCcm9rZXJOb2Rlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgdmlydHVhbCBuZXR3b3JraW5nIGVudmlyb25tZW50IGZvciB0aGlzIGNsdXN0ZXIuXG4gICAqIE11c3QgaGF2ZSBhdCBsZWFzdCAyIHN1Ym5ldHMgaW4gdHdvIGRpZmZlcmVudCBBWnMuXG4gICAqL1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBXaGVyZSB0byBwbGFjZSB0aGUgbm9kZXMgd2l0aGluIHRoZSBWUEMuXG4gICAqIEFtYXpvbiBNU0sgZGlzdHJpYnV0ZXMgdGhlIGJyb2tlciBub2RlcyBldmVubHkgYWNyb3NzIHRoZSBzdWJuZXRzIHRoYXQgeW91IHNwZWNpZnkuXG4gICAqIFRoZSBzdWJuZXRzIHRoYXQgeW91IHNwZWNpZnkgbXVzdCBiZSBpbiBkaXN0aW5jdCBBdmFpbGFiaWxpdHkgWm9uZXMuXG4gICAqIENsaWVudCBzdWJuZXRzIGNhbid0IGJlIGluIEF2YWlsYWJpbGl0eSBab25lIHVzLWVhc3QtMWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIFZwYyBkZWZhdWx0IHN0cmF0ZWd5IGlmIG5vdCBzcGVjaWZpZWQuXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIEVDMiBpbnN0YW5jZSB0eXBlIHRoYXQgeW91IHdhbnQgQW1hem9uIE1TSyB0byB1c2Ugd2hlbiBpdCBjcmVhdGVzIHlvdXIgYnJva2Vycy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbXNrL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9tc2stY3JlYXRlLWNsdXN0ZXIuaHRtbCNicm9rZXItaW5zdGFuY2UtdHlwZXNcbiAgICogQGRlZmF1bHQga2Fma2EubTUubGFyZ2VcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlVHlwZT86IGVjMi5JbnN0YW5jZVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBicm9rZXIgdHlwZSBmb3IgdGhlIGNsdXN0ZXIuXG4gICAqIFdoZW4gc2V0IHRvIEVYUFJFU1MsIHRoZSBjbHVzdGVyIHdpbGwgYmUgY3JlYXRlZCB3aXRoIEV4cHJlc3MgQnJva2Vycy5cbiAgICogV2hlbiB0aGlzIGlzIHNldCB0byBFWFBSRVNTLCBpbnN0YW5jZVR5cGUgbXVzdCBhbHNvIGJlIHNwZWNpZmllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgQnJva2VyVHlwZS5TVEFOREFSRFxuICAgKi9cbiAgcmVhZG9ubHkgYnJva2VyVHlwZT86IEJyb2tlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1Mgc2VjdXJpdHkgZ3JvdXBzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBlbGFzdGljIG5ldHdvcmsgaW50ZXJmYWNlcyBpbiBvcmRlciB0byBzcGVjaWZ5IHdobyBjYW5cbiAgICogY29ubmVjdCB0byBhbmQgY29tbXVuaWNhdGUgd2l0aCB0aGUgQW1hem9uIE1TSyBjbHVzdGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGNyZWF0ZSBuZXcgc2VjdXJpdHkgZ3JvdXBcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIEluZm9ybWF0aW9uIGFib3V0IHN0b3JhZ2Ugdm9sdW1lcyBhdHRhY2hlZCB0byBNU0sgYnJva2VyIG5vZGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDEwMDAgR2lCIEVCUyB2b2x1bWVcbiAgICovXG4gIHJlYWRvbmx5IGVic1N0b3JhZ2VJbmZvPzogRWJzU3RvcmFnZUluZm87XG5cbiAgLyoqXG4gICAqIFRoaXMgY29udHJvbHMgc3RvcmFnZSBtb2RlIGZvciBzdXBwb3J0ZWQgc3RvcmFnZSB0aWVycy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBTdG9yYWdlTW9kZS5MT0NBTFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9tc2svbGF0ZXN0L2RldmVsb3Blcmd1aWRlL21zay10aWVyZWQtc3RvcmFnZS5odG1sXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlTW9kZT86IFN0b3JhZ2VNb2RlO1xuXG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIE1TSyBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgdGhlIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlndXJhdGlvbkluZm8/OiBDbHVzdGVyQ29uZmlndXJhdGlvbkluZm87XG5cbiAgLyoqXG4gICAqIENsdXN0ZXIgbW9uaXRvcmluZyBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERFRkFVTFQgbW9uaXRvcmluZyBsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZz86IE1vbml0b3JpbmdDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgeW91ciBNU0sgY2x1c3RlciB0byBzZW5kIGJyb2tlciBsb2dzIHRvIGRpZmZlcmVudCBkZXN0aW5hdGlvbiB0eXBlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkaXNhYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2luZz86IEJyb2tlckxvZ2dpbmc7XG5cbiAgLyoqXG4gICAqIENvbmZpZyBkZXRhaWxzIGZvciBlbmNyeXB0aW9uIGluIHRyYW5zaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbkluVHJhbnNpdD86IEVuY3J5cHRpb25JblRyYW5zaXRDb25maWc7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgY2xpZW50IGF1dGhlbnRpY2F0aW9uLlxuICAgKiBNU0sgc3VwcG9ydHMgdXNpbmcgcHJpdmF0ZSBUTFMgY2VydGlmaWNhdGVzIG9yIFNBU0wvU0NSQU0gdG8gYXV0aGVudGljYXRlIHRoZSBpZGVudGl0eSBvZiBjbGllbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRpc2FibGVkXG4gICAqL1xuICByZWFkb25seSBjbGllbnRBdXRoZW50aWNhdGlvbj86IENsaWVudEF1dGhlbnRpY2F0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGF0IHRvIGRvIHdoZW4gdGhpcyByZXNvdXJjZSBpcyBkZWxldGVkIGZyb20gYSBzdGFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBjb3JlLlJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogRUJTIHZvbHVtZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFYnNTdG9yYWdlSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBpbiBHaUIgb2YgdGhlIEVCUyB2b2x1bWUgZm9yIHRoZSBkYXRhIGRyaXZlIG9uIGVhY2ggYnJva2VyIG5vZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwMDBcbiAgICovXG4gIHJlYWRvbmx5IHZvbHVtZVNpemU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgS01TIGtleSBmb3IgZW5jcnlwdGluZyBkYXRhIGF0IHJlc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IFVzZXMgQVdTIG1hbmFnZWQgQ01LIChhd3Mva2Fma2EpXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXlSZWY7XG59XG5cbi8qKlxuICogVGhlIHN0b3JhZ2UgbW9kZSBmb3IgdGhlIGNsdXN0ZXIgYnJva2Vycy5cbiAqL1xuZXhwb3J0IGVudW0gU3RvcmFnZU1vZGUge1xuICAvKipcbiAgICogTG9jYWwgc3RvcmFnZSBtb2RlIHV0aWxpemVzIG5ldHdvcmsgYXR0YWNoZWQgRUJTIHN0b3JhZ2UuXG4gICAqL1xuICBMT0NBTCA9ICdMT0NBTCcsXG5cbiAgLyoqXG4gICAqIFRpZXJlZCBzdG9yYWdlIG1vZGUgdXRpbGl6ZXMgRUJTIHN0b3JhZ2UgYW5kIFRpZXJlZCBzdG9yYWdlLlxuICAgKi9cbiAgVElFUkVEID0gJ1RJRVJFRCcsXG59XG5cbi8qKlxuICogVGhlIGJyb2tlciB0eXBlIGZvciB0aGUgY2x1c3Rlci5cbiAqL1xuZXhwb3J0IGVudW0gQnJva2VyVHlwZSB7XG4gIC8qKlxuICAgKiBTdGFuZGFyZCBicm9rZXJzIHByb3ZpZGUgaGlnaC1hdmFpbGFiaWxpdHkgZ3VhcmFudGVlcy5cbiAgICovXG4gIFNUQU5EQVJEID0gJ1NUQU5EQVJEJyxcblxuICAvKipcbiAgICogRXhwcmVzcyBicm9rZXJzIGFyZSBhIGxvdy1jb3N0IG9wdGlvbiBmb3IgZGV2ZWxvcG1lbnQsIHRlc3RpbmcsIGFuZCB3b3JrbG9hZHMgdGhhdCBkb24ndCByZXF1aXJlIHRoZSBoaWdoIGF2YWlsYWJpbGl0eSBndWFyYW50ZWVzIG9mIHN0YW5kYXJkIE1TSyBjbHVzdGVyLlxuICAgKi9cbiAgRVhQUkVTUyA9ICdFWFBSRVNTJyxcbn1cblxuLyoqXG4gKiBUaGUgQW1hem9uIE1TSyBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgdGhlIGNsdXN0ZXIuXG4gKiBOb3RlOiBUaGVyZSBpcyBjdXJyZW50bHkgbm8gQ2xvdWRmb3JtYXRpb24gUmVzb3VyY2UgdG8gY3JlYXRlIGEgQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJDb25maWd1cmF0aW9uSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIE1TSyBjb25maWd1cmF0aW9uIHRvIHVzZS5cbiAgICogRm9yIGV4YW1wbGUsIGFybjphd3M6a2Fma2E6dXMtZWFzdC0xOjEyMzQ1Njc4OTAxMjpjb25maWd1cmF0aW9uL2V4YW1wbGUtY29uZmlndXJhdGlvbi1uYW1lL2FiY2RhYmNkLTEyMzQtYWJjZC0xMjM0LWFiY2QxMjNlOGU4ZS0xLlxuICAgKi9cbiAgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXZpc2lvbiBvZiB0aGUgQW1hem9uIE1TSyBjb25maWd1cmF0aW9uIHRvIHVzZS5cbiAgICovXG4gIHJlYWRvbmx5IHJldmlzaW9uOiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIGxldmVsIG9mIG1vbml0b3JpbmcgZm9yIHRoZSBNU0sgY2x1c3RlclxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21zay9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvbW9uaXRvcmluZy5odG1sI21ldHJpY3MtZGV0YWlsc1xuICovXG5leHBvcnQgZW51bSBDbHVzdGVyTW9uaXRvcmluZ0xldmVsIHtcbiAgLyoqXG4gICAqIERlZmF1bHQgbWV0cmljcyBhcmUgdGhlIGVzc2VudGlhbCBtZXRyaWNzIHRvIG1vbml0b3IuXG4gICAqL1xuICBERUZBVUxUID0gJ0RFRkFVTFQnLFxuXG4gIC8qKlxuICAgKiBQZXIgQnJva2VyIG1ldHJpY3MgZ2l2ZSB5b3UgbWV0cmljcyBhdCB0aGUgYnJva2VyIGxldmVsLlxuICAgKi9cbiAgUEVSX0JST0tFUiA9ICdQRVJfQlJPS0VSJyxcblxuICAvKipcbiAgICogUGVyIFRvcGljIFBlciBCcm9rZXIgbWV0cmljcyBoZWxwIHlvdSB1bmRlcnN0YW5kIHZvbHVtZSBhdCB0aGUgdG9waWMgbGV2ZWwuXG4gICAqL1xuICBQRVJfVE9QSUNfUEVSX0JST0tFUiA9ICdQRVJfVE9QSUNfUEVSX0JST0tFUicsXG5cbiAgLyoqXG4gICAqIFBlciBUb3BpYyBQZXIgUGFydGl0aW9uIG1ldHJpY3MgaGVscCB5b3UgdW5kZXJzdGFuZCBjb25zdW1lciBncm91cCBsYWcgYXQgdGhlIHRvcGljIHBhcnRpdGlvbiBsZXZlbC5cbiAgICovXG4gIFBFUl9UT1BJQ19QRVJfUEFSVElUSU9OID0gJ1BFUl9UT1BJQ19QRVJfUEFSVElUSU9OJyxcbn1cblxuLyoqXG4gKiBNb25pdG9yaW5nIENvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25pdG9yaW5nQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGxldmVsIG9mIG1vbml0b3JpbmcgZm9yIHRoZSBNU0sgY2x1c3Rlci5cbiAgICpcbiAgICogQGRlZmF1bHQgREVGQVVMVFxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlck1vbml0b3JpbmdMZXZlbD86IENsdXN0ZXJNb25pdG9yaW5nTGV2ZWw7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHlvdSB3YW50IHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBKTVggRXhwb3J0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQcm9tZXRoZXVzSm14RXhwb3J0ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB5b3Ugd2FudCB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgUHJvbWV0aGV1cyBOb2RlIEV4cG9ydGVyLlxuICAgKlxuICAgKiBZb3UgY2FuIHVzZSB0aGUgUHJvbWV0aGV1cyBOb2RlIEV4cG9ydGVyIHRvIGdldCBDUFUgYW5kIGRpc2sgbWV0cmljcyBmb3IgdGhlIGJyb2tlciBub2Rlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZVByb21ldGhldXNOb2RlRXhwb3J0ZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZGV0YWlscyByZWxhdGVkIHRvIGJyb2tlciBsb2dzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJyb2tlckxvZ2dpbmcge1xuICAvKipcbiAgICogVGhlIEFtYXpvbiBEYXRhIEZpcmVob3NlIGRlbGl2ZXJ5IHN0cmVhbSB0aGF0IGlzIHRoZSBkZXN0aW5hdGlvbiBmb3IgYnJva2VyIGxvZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGlzYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGZpcmVob3NlRGVsaXZlcnlTdHJlYW1OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRXYXRjaCBMb2dzIGdyb3VwIHRoYXQgaXMgdGhlIGRlc3RpbmF0aW9uIGZvciBicm9rZXIgbG9ncy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkaXNhYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWR3YXRjaExvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIERldGFpbHMgb2YgdGhlIEFtYXpvbiBTMyBkZXN0aW5hdGlvbiBmb3IgYnJva2VyIGxvZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGlzYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IHMzPzogUzNMb2dnaW5nQ29uZmlndXJhdGlvbjtcbn1cblxuLyoqXG4gKiBEZXRhaWxzIG9mIHRoZSBBbWF6b24gUzMgZGVzdGluYXRpb24gZm9yIGJyb2tlciBsb2dzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzTG9nZ2luZ0NvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIFMzIGJ1Y2tldCB0aGF0IGlzIHRoZSBkZXN0aW5hdGlvbiBmb3IgYnJva2VyIGxvZ3MuXG4gICAqL1xuICByZWFkb25seSBidWNrZXQ6IHMzLklCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBTMyBwcmVmaXggdGhhdCBpcyB0aGUgZGVzdGluYXRpb24gZm9yIGJyb2tlciBsb2dzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHByZWZpeFxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEluZGljYXRlcyB0aGUgZW5jcnlwdGlvbiBzZXR0aW5nIGZvciBkYXRhIGluIHRyYW5zaXQgYmV0d2VlbiBjbGllbnRzIGFuZCBicm9rZXJzLlxuICovXG5leHBvcnQgZW51bSBDbGllbnRCcm9rZXJFbmNyeXB0aW9uIHtcbiAgLyoqXG4gICAqIFRMUyBtZWFucyB0aGF0IGNsaWVudC1icm9rZXIgY29tbXVuaWNhdGlvbiBpcyBlbmFibGVkIHdpdGggVExTIG9ubHkuXG4gICAqL1xuICBUTFMgPSAnVExTJyxcblxuICAvKipcbiAgICogVExTX1BMQUlOVEVYVCBtZWFucyB0aGF0IGNsaWVudC1icm9rZXIgY29tbXVuaWNhdGlvbiBpcyBlbmFibGVkIGZvciBib3RoIFRMUy1lbmNyeXB0ZWQsIGFzIHdlbGwgYXMgcGxhaW50ZXh0IGRhdGEuXG4gICAqL1xuICBUTFNfUExBSU5URVhUID0gJ1RMU19QTEFJTlRFWFQnLFxuXG4gIC8qKlxuICAgKiBQTEFJTlRFWFQgbWVhbnMgdGhhdCBjbGllbnQtYnJva2VyIGNvbW11bmljYXRpb24gaXMgZW5hYmxlZCBpbiBwbGFpbnRleHQgb25seS5cbiAgICovXG4gIFBMQUlOVEVYVCA9ICdQTEFJTlRFWFQnLFxufVxuXG4vKipcbiAqIFRoZSBzZXR0aW5ncyBmb3IgZW5jcnlwdGluZyBkYXRhIGluIHRyYW5zaXQuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbXNrL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9tc2stZW5jcnlwdGlvbi5odG1sI21zay1lbmNyeXB0aW9uLWluLXRyYW5zaXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0aW9uSW5UcmFuc2l0Q29uZmlnIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgZW5jcnlwdGlvbiBzZXR0aW5nIGZvciBkYXRhIGluIHRyYW5zaXQgYmV0d2VlbiBjbGllbnRzIGFuZCBicm9rZXJzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRMU1xuICAgKi9cbiAgcmVhZG9ubHkgY2xpZW50QnJva2VyPzogQ2xpZW50QnJva2VyRW5jcnlwdGlvbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgZGF0YSBjb21tdW5pY2F0aW9uIGFtb25nIHRoZSBicm9rZXIgbm9kZXMgb2YgdGhlIGNsdXN0ZXIgaXMgZW5jcnlwdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVJbkNsdXN0ZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFNBU0wgYXV0aGVudGljYXRpb24gcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhc2xBdXRoUHJvcHMge1xuICAvKipcbiAgICogRW5hYmxlIFNBU0wvU0NSQU0gYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzY3JhbT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBJQU0gYWNjZXNzIGNvbnRyb2wuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpYW0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBLTVMgS2V5IHRvIGVuY3J5cHQgU0FTTC9TQ1JBTSBzZWNyZXRzLlxuICAgKlxuICAgKiBZb3UgbXVzdCB1c2UgYSBjdXN0b21lciBtYXN0ZXIga2V5IChDTUspIHdoZW4gY3JlYXRpbmcgdXNlcnMgaW4gc2VjcmV0cyBtYW5hZ2VyLlxuICAgKiBZb3UgY2Fubm90IHVzZSBhIFNlY3JldCB3aXRoIEFtYXpvbiBNU0sgdGhhdCB1c2VzIHRoZSBkZWZhdWx0IFNlY3JldHMgTWFuYWdlciBlbmNyeXB0aW9uIGtleS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBDTUsgd2lsbCBiZSBjcmVhdGVkIHdpdGggYWxpYXMgbXNrL3tjbHVzdGVyTmFtZX0vc2FzbC9zY3JhbVxuICAgKi9cbiAgcmVhZG9ubHkga2V5Pzoga21zLklLZXlSZWY7XG59XG5cbi8qKlxuICogVExTIGF1dGhlbnRpY2F0aW9uIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUbHNBdXRoUHJvcHMge1xuICAvKipcbiAgICogTGlzdCBvZiBBQ00gQ2VydGlmaWNhdGUgQXV0aG9yaXRpZXMgdG8gZW5hYmxlIFRMUyBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZUF1dGhvcml0aWVzPzogYWNtcGNhLklDZXJ0aWZpY2F0ZUF1dGhvcml0eVtdO1xufVxuXG4vKipcbiAqIFNBU0wgKyBUTFMgYXV0aGVudGljYXRpb24gcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhc2xUbHNBdXRoUHJvcHMgZXh0ZW5kcyBTYXNsQXV0aFByb3BzLCBUbHNBdXRoUHJvcHMgeyB9XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciBjbGllbnQgYXV0aGVudGljYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBDbGllbnRBdXRoZW50aWNhdGlvbiB7XG4gIC8qKlxuICAgKiBTQVNMIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhc2wocHJvcHM6IFNhc2xBdXRoUHJvcHMpOiBDbGllbnRBdXRoZW50aWNhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoZW50aWNhdGlvbihwcm9wcywgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUTFMgYXV0aGVudGljYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdGxzKHByb3BzOiBUbHNBdXRoUHJvcHMpOiBDbGllbnRBdXRoZW50aWNhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBDbGllbnRBdXRoZW50aWNhdGlvbih1bmRlZmluZWQsIHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTQVNMICsgVExTIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhc2xUbHMoc2FzbFRsc1Byb3BzOiBTYXNsVGxzQXV0aFByb3BzKTogQ2xpZW50QXV0aGVudGljYXRpb24ge1xuICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aGVudGljYXRpb24oc2FzbFRsc1Byb3BzLCBzYXNsVGxzUHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzYXNsUHJvcHMgLSBwcm9wZXJ0aWVzIGZvciBTQVNMIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBwYXJhbSB0bHNQcm9wcyAtIHByb3BlcnRpZXMgZm9yIFRMUyBhdXRoZW50aWNhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2FzbFByb3BzPzogU2FzbEF1dGhQcm9wcyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGxzUHJvcHM/OiBUbHNBdXRoUHJvcHMsXG4gICkge31cbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBNU0sgQ2x1c3Rlci5cbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpNU0s6OkNsdXN0ZXJcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIENsdXN0ZXIgZXh0ZW5kcyBDbHVzdGVyQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLW1zay1hbHBoYS5DbHVzdGVyJztcblxuICAvKipcbiAgICogUmVmZXJlbmNlIGFuIGV4aXN0aW5nIGNsdXN0ZXIsIGRlZmluZWQgb3V0c2lkZSBvZiB0aGUgQ0RLIGNvZGUsIGJ5IG5hbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21DbHVzdGVyQXJuKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgY2x1c3RlckFybjogc3RyaW5nKTogSUNsdXN0ZXIge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIENsdXN0ZXJCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjbHVzdGVyQXJuID0gY2x1c3RlckFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjbHVzdGVyTmFtZSA9IGNvcmUuRm4uc2VsZWN0KDEsIGNvcmUuRm4uc3BsaXQoJy8nLCBjbHVzdGVyQXJuKSk7IC8vIFsnYXJuOnBhcnRpdGlvbjprYWZrYTpyZWdpb246YWNjb3VudC1pZCcsIGNsdXN0ZXJOYW1lLCBjbHVzdGVySWRdXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKiBLZXkgdXNlZCB0byBlbmNyeXB0IFNBU0wvU0NSQU0gdXNlcnMgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNhc2xTY3JhbUF1dGhlbnRpY2F0aW9uS2V5Pzoga21zLklLZXk7XG4gIHByaXZhdGUgcmVzb3VyY2U6IENmbkNsdXN0ZXI7XG4gIHByaXZhdGUgX2NsdXN0ZXJEZXNjcmlwdGlvbj86IGNyLkF3c0N1c3RvbVJlc291cmNlO1xuICBwcml2YXRlIF9jbHVzdGVyQm9vdHN0cmFwQnJva2Vycz86IGNyLkF3c0N1c3RvbVJlc291cmNlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENsdXN0ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgeyBwaHlzaWNhbE5hbWU6IHByb3BzLmNsdXN0ZXJOYW1lIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgY29uc3Qgc3VibmV0U2VsZWN0aW9uID0gcHJvcHMudnBjLnNlbGVjdFN1Ym5ldHMocHJvcHMudnBjU3VibmV0cyk7XG5cbiAgICB0aGlzLl9jb25uZWN0aW9ucyA9IG5ldyBlYzIuQ29ubmVjdGlvbnMoe1xuICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzLnNlY3VyaXR5R3JvdXBzID8/IFtcbiAgICAgICAgbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsICdTZWN1cml0eUdyb3VwJywge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTVNLIHNlY3VyaXR5IGdyb3VwJyxcbiAgICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgaWYgKHN1Ym5ldFNlbGVjdGlvbi5zdWJuZXRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIHRocm93IG5ldyBjb3JlLlZhbGlkYXRpb25FcnJvcihsaXRgSW5zdWZmaWNpZW50U3VibmV0c2AsIGBDbHVzdGVyIHJlcXVpcmVzIGF0IGxlYXN0IDIgc3VibmV0cywgZ290ICR7c3VibmV0U2VsZWN0aW9uLnN1Ym5ldHMubGVuZ3RofWAsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5lbmNyeXB0aW9uSW5UcmFuc2l0Py5jbGllbnRCcm9rZXIgPT09IENsaWVudEJyb2tlckVuY3J5cHRpb24uUExBSU5URVhUICYmIHByb3BzLmNsaWVudEF1dGhlbnRpY2F0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgY29yZS5WYWxpZGF0aW9uRXJyb3IobGl0YENsaWVudEF1dGhSZXF1aXJlc1Rsc2AsICdUbyBlbmFibGUgY2xpZW50IGF1dGhlbnRpY2F0aW9uLCB5b3UgbXVzdCBlbmFibGVkIFRMUy1lbmNyeXB0ZWQgdHJhZmZpYyBiZXR3ZWVuIGNsaWVudHMgYW5kIGJyb2tlcnMuJywgdGhpcyk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHByb3BzLmVuY3J5cHRpb25JblRyYW5zaXQ/LmNsaWVudEJyb2tlciA9PT1cbiAgICAgICAgQ2xpZW50QnJva2VyRW5jcnlwdGlvbi5UTFNfUExBSU5URVhUICYmXG4gICAgICAocHJvcHMuY2xpZW50QXV0aGVudGljYXRpb24/LnNhc2xQcm9wcz8uc2NyYW0gfHxcbiAgICAgICAgcHJvcHMuY2xpZW50QXV0aGVudGljYXRpb24/LnNhc2xQcm9wcz8uaWFtKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IGNvcmUuVmFsaWRhdGlvbkVycm9yKGxpdGBTYXNsQXV0aFJlcXVpcmVzVGxzT25seWAsICdUbyBlbmFibGUgU0FTTC9TQ1JBTSBvciBJQU0gYXV0aGVudGljYXRpb24sIHlvdSBtdXN0IG9ubHkgYWxsb3cgVExTLWVuY3J5cHRlZCB0cmFmZmljIGJldHdlZW4gY2xpZW50cyBhbmQgYnJva2Vycy4nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCB2b2x1bWVTaXplID0gcHJvcHMuZWJzU3RvcmFnZUluZm8/LnZvbHVtZVNpemUgPz8gMTAwMDtcbiAgICAvLyBNaW5pbXVtOiAxIEdpQiwgbWF4aW11bTogMTYzODQgR2lCXG4gICAgaWYgKHZvbHVtZVNpemUgPCAxIHx8IHZvbHVtZVNpemUgPiAxNjM4NCkge1xuICAgICAgdGhyb3cgbmV3IGNvcmUuVmFsaWRhdGlvbkVycm9yKGxpdGBJbnZhbGlkRWJzVm9sdW1lU2l6ZWAsICdFQlMgdm9sdW1lIHNpemUgc2hvdWxkIGJlIGluIHRoZSByYW5nZSAxLTE2Mzg0JywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNFeHByZXNzID0gcHJvcHMuYnJva2VyVHlwZSA9PT0gQnJva2VyVHlwZS5FWFBSRVNTO1xuXG4gICAgaWYgKGlzRXhwcmVzcykge1xuICAgICAgLy8gVmFsaWRhdGUgS2Fma2EgdmVyc2lvbiBjb21wYXRpYmlsaXR5XG4gICAgICAvLyBleHByZXNzIGJyb2tlciBkb2N1bWVudGF0aW9uIGZvciBzdXBwb3J0ZWQgdmVyc2lvbnMgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21zay9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvbXNrLWJyb2tlci10eXBlcy1leHByZXNzLmh0bWwjbXNrLWJyb2tlci10eXBlcy1leHByZXNzLW5vdGVzXG4gICAgICBjb25zdCBzdXBwb3J0ZWRWZXJzaW9ucyA9IFsnMy42JywgJzMuOCcsICczLjknXTtcbiAgICAgIGNvbnN0IGthZmthVmVyc2lvblN0cmluZyA9IHByb3BzLmthZmthVmVyc2lvbi52ZXJzaW9uO1xuICAgICAgY29uc3QgaXNDb21wYXRpYmxlVmVyc2lvbiA9IHN1cHBvcnRlZFZlcnNpb25zLnNvbWUodmVyc2lvbiA9PiBrYWZrYVZlcnNpb25TdHJpbmcuaW5jbHVkZXModmVyc2lvbikpO1xuICAgICAgaWYgKCFpc0NvbXBhdGlibGVWZXJzaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBjb3JlLlZhbGlkYXRpb25FcnJvcihsaXRgRXhwcmVzc0Jyb2tlckluY29tcGF0aWJsZVZlcnNpb25gLCBgRXhwcmVzcyBicm9rZXJzIGFyZSBvbmx5IHN1cHBvcnRlZCB3aXRoIEFwYWNoZSBLYWZrYSAke3N1cHBvcnRlZFZlcnNpb25zLmpvaW4oJywgJyl9LCBnb3QgJHtrYWZrYVZlcnNpb25TdHJpbmd9YCwgdGhpcyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghcHJvcHMuaW5zdGFuY2VUeXBlKSB7XG4gICAgICAgIHRocm93IG5ldyBjb3JlLlZhbGlkYXRpb25FcnJvcihsaXRgRXhwcmVzc0Jyb2tlclJlcXVpcmVzSW5zdGFuY2VUeXBlYCwgJ2BpbnN0YW5jZVR5cGVgIG11c3QgYWxzbyBiZSBzcGVjaWZpZWQgd2hlbiBgYnJva2VyVHlwZWAgaXMgYEJyb2tlclR5cGUuRVhQUkVTU2AuJywgdGhpcyk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMuZWJzU3RvcmFnZUluZm8pIHtcbiAgICAgICAgdGhyb3cgbmV3IGNvcmUuVmFsaWRhdGlvbkVycm9yKGxpdGBFeHByZXNzQnJva2VyTm9FYnNTdG9yYWdlYCwgJ2BlYnNTdG9yYWdlSW5mb2AgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGBicm9rZXJUeXBlYCBpcyBgQnJva2VyVHlwZS5FWFBSRVNTYC4nLCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5zdG9yYWdlTW9kZSkge1xuICAgICAgICB0aHJvdyBuZXcgY29yZS5WYWxpZGF0aW9uRXJyb3IobGl0YEV4cHJlc3NCcm9rZXJOb1N0b3JhZ2VNb2RlYCwgJ2BzdG9yYWdlTW9kZWAgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGBicm9rZXJUeXBlYCBpcyBgQnJva2VyVHlwZS5FWFBSRVNTYC4nLCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5sb2dnaW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBjb3JlLlZhbGlkYXRpb25FcnJvcihsaXRgRXhwcmVzc0Jyb2tlck5vTG9nZ2luZ2AsICdgbG9nZ2luZ2AgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGBicm9rZXJUeXBlYCBpcyBgQnJva2VyVHlwZS5FWFBSRVNTYC4nLCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdWJuZXRTZWxlY3Rpb24uc3VibmV0cy5sZW5ndGggPCAzKSB7XG4gICAgICAgIHRocm93IG5ldyBjb3JlLlZhbGlkYXRpb25FcnJvcihsaXRgRXhwcmVzc0NsdXN0ZXJJbnN1ZmZpY2llbnRTdWJuZXRzYCwgYEV4cHJlc3MgY2x1c3RlciByZXF1aXJlcyBhdCBsZWFzdCAzIHN1Ym5ldHMsIGdvdCAke3N1Ym5ldFNlbGVjdGlvbi5zdWJuZXRzLmxlbmd0aH1gLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YW5jZVR5cGUgPSBwcm9wcy5pbnN0YW5jZVR5cGVcbiAgICAgID8gdGhpcy5tc2tJbnN0YW5jZVR5cGUocHJvcHMuaW5zdGFuY2VUeXBlLCBpc0V4cHJlc3MpXG4gICAgICA6IHRoaXMubXNrSW5zdGFuY2VUeXBlKFxuICAgICAgICBlYzIuSW5zdGFuY2VUeXBlLm9mKGVjMi5JbnN0YW5jZUNsYXNzLk01LCBlYzIuSW5zdGFuY2VTaXplLkxBUkdFKSxcbiAgICAgICk7XG5cbiAgICBpZiAocHJvcHMuc3RvcmFnZU1vZGUgJiYgcHJvcHMuc3RvcmFnZU1vZGUgPT09IFN0b3JhZ2VNb2RlLlRJRVJFRCkge1xuICAgICAgaWYgKCFwcm9wcy5rYWZrYVZlcnNpb24uaXNUaWVyZWRTdG9yYWdlQ29tcGF0aWJsZSgpKSB7XG4gICAgICAgIHRocm93IG5ldyBjb3JlLlZhbGlkYXRpb25FcnJvcihsaXRgVGllcmVkU3RvcmFnZUluY29tcGF0aWJsZVZlcnNpb25gLCBgVG8gZGVwbG95IGEgdGllcmVkIGNsdXN0ZXIgeW91IG11c3Qgc2VsZWN0IGEgY29tcGF0aWJsZSBLYWZrYSB2ZXJzaW9uLCBnb3QgJHtwcm9wcy5rYWZrYVZlcnNpb24udmVyc2lvbn1gLCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnN0YW5jZVR5cGUgPT09IHRoaXMubXNrSW5zdGFuY2VUeXBlKFxuICAgICAgICBlYzIuSW5zdGFuY2VUeXBlLm9mKGVjMi5JbnN0YW5jZUNsYXNzLlQzLCBlYzIuSW5zdGFuY2VTaXplLlNNQUxMKSxcbiAgICAgICkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGNvcmUuVmFsaWRhdGlvbkVycm9yKGxpdGBUaWVyZWRTdG9yYWdlSW5jb21wYXRpYmxlSW5zdGFuY2VUeXBlYCwgJ1RpZXJlZCBzdG9yYWdlIGRvZXNuXFwndCBzdXBwb3J0IGJyb2tlciB0eXBlIHQzLnNtYWxsJywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZW5jcnlwdGlvbkF0UmVzdCA9IHByb3BzLmVic1N0b3JhZ2VJbmZvPy5lbmNyeXB0aW9uS2V5XG4gICAgICA/IHtcbiAgICAgICAgZGF0YVZvbHVtZUttc0tleUlkOlxuICAgICAgICAgICAgcHJvcHMuZWJzU3RvcmFnZUluZm8uZW5jcnlwdGlvbktleS5rZXlSZWYua2V5SWQsXG4gICAgICB9XG4gICAgICA6IHVuZGVmaW5lZDsgLy8gTVNLIHdpbGwgY3JlYXRlIHRoZSBtYW5hZ2VkIGtleVxuXG4gICAgY29uc3QgZW5jcnlwdGlvbkluVHJhbnNpdCA9IHtcbiAgICAgIGNsaWVudEJyb2tlcjpcbiAgICAgICAgcHJvcHMuZW5jcnlwdGlvbkluVHJhbnNpdD8uY2xpZW50QnJva2VyID8/XG4gICAgICAgIENsaWVudEJyb2tlckVuY3J5cHRpb24uVExTLFxuICAgICAgaW5DbHVzdGVyOiBwcm9wcy5lbmNyeXB0aW9uSW5UcmFuc2l0Py5lbmFibGVJbkNsdXN0ZXIgPz8gdHJ1ZSxcbiAgICB9O1xuXG4gICAgY29uc3Qgb3Blbk1vbml0b3JpbmcgPVxuICAgICAgcHJvcHMubW9uaXRvcmluZz8uZW5hYmxlUHJvbWV0aGV1c0pteEV4cG9ydGVyIHx8XG4gICAgICBwcm9wcy5tb25pdG9yaW5nPy5lbmFibGVQcm9tZXRoZXVzTm9kZUV4cG9ydGVyXG4gICAgICAgID8ge1xuICAgICAgICAgIHByb21ldGhldXM6IHtcbiAgICAgICAgICAgIGpteEV4cG9ydGVyOiBwcm9wcy5tb25pdG9yaW5nPy5lbmFibGVQcm9tZXRoZXVzSm14RXhwb3J0ZXJcbiAgICAgICAgICAgICAgPyB7IGVuYWJsZWRJbkJyb2tlcjogdHJ1ZSB9XG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbm9kZUV4cG9ydGVyOiBwcm9wcy5tb25pdG9yaW5nXG4gICAgICAgICAgICAgID8uZW5hYmxlUHJvbWV0aGV1c05vZGVFeHBvcnRlclxuICAgICAgICAgICAgICA/IHsgZW5hYmxlZEluQnJva2VyOiB0cnVlIH1cbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGxvZ2dpbmdCdWNrZXQgPSBwcm9wcy5sb2dnaW5nPy5zMz8uYnVja2V0O1xuICAgIGlmIChsb2dnaW5nQnVja2V0ICYmIEZlYXR1cmVGbGFncy5vZih0aGlzKS5pc0VuYWJsZWQoUzNfQ1JFQVRFX0RFRkFVTFRfTE9HR0lOR19QT0xJQ1kpKSB7XG4gICAgICBjb25zdCBzdGFjayA9IGNvcmUuU3RhY2sub2YodGhpcyk7XG4gICAgICBsb2dnaW5nQnVja2V0LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIHByaW5jaXBhbHM6IFtcbiAgICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2RlbGl2ZXJ5LmxvZ3MuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBsb2dnaW5nQnVja2V0LmFybkZvck9iamVjdHMoYEFXU0xvZ3MvJHtzdGFjay5hY2NvdW50fS8qYCksXG4gICAgICAgIF0sXG4gICAgICAgIGFjdGlvbnM6IFsnczM6UHV0T2JqZWN0J10sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICdzMzp4LWFtei1hY2wnOiAnYnVja2V0LW93bmVyLWZ1bGwtY29udHJvbCcsXG4gICAgICAgICAgICAnYXdzOlNvdXJjZUFjY291bnQnOiBzdGFjay5hY2NvdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgQXJuTGlrZToge1xuICAgICAgICAgICAgJ2F3czpTb3VyY2VBcm4nOiBzdGFjay5mb3JtYXRBcm4oe1xuICAgICAgICAgICAgICBzZXJ2aWNlOiAnbG9ncycsXG4gICAgICAgICAgICAgIHJlc291cmNlOiAnKicsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSkpO1xuXG4gICAgICBsb2dnaW5nQnVja2V0LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIHByaW5jaXBhbHM6IFtcbiAgICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2RlbGl2ZXJ5LmxvZ3MuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtsb2dnaW5nQnVja2V0LmJ1Y2tldEFybl0sXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnczM6R2V0QnVja2V0QWNsJyxcbiAgICAgICAgICAnczM6TGlzdEJ1Y2tldCcsXG4gICAgICAgIF0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICdhd3M6U291cmNlQWNjb3VudCc6IHN0YWNrLmFjY291bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBBcm5MaWtlOiB7XG4gICAgICAgICAgICAnYXdzOlNvdXJjZUFybic6IHN0YWNrLmZvcm1hdEFybih7XG4gICAgICAgICAgICAgIHNlcnZpY2U6ICdsb2dzJyxcbiAgICAgICAgICAgICAgcmVzb3VyY2U6ICcqJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KSk7XG4gICAgfVxuICAgIGNvbnN0IGxvZ2dpbmdJbmZvID0gaXNFeHByZXNzID8gdW5kZWZpbmVkIDoge1xuICAgICAgYnJva2VyTG9nczoge1xuICAgICAgICBjbG91ZFdhdGNoTG9nczoge1xuICAgICAgICAgIGVuYWJsZWQ6XG4gICAgICAgICAgICBwcm9wcy5sb2dnaW5nPy5jbG91ZHdhdGNoTG9nR3JvdXAgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICBsb2dHcm91cDpcbiAgICAgICAgICAgIHByb3BzLmxvZ2dpbmc/LmNsb3Vkd2F0Y2hMb2dHcm91cD8ubG9nR3JvdXBOYW1lLFxuICAgICAgICB9LFxuICAgICAgICBmaXJlaG9zZToge1xuICAgICAgICAgIGVuYWJsZWQ6XG4gICAgICAgICAgICBwcm9wcy5sb2dnaW5nPy5maXJlaG9zZURlbGl2ZXJ5U3RyZWFtTmFtZSAhPT1cbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICBkZWxpdmVyeVN0cmVhbTpcbiAgICAgICAgICAgIHByb3BzLmxvZ2dpbmc/LmZpcmVob3NlRGVsaXZlcnlTdHJlYW1OYW1lLFxuICAgICAgICB9LFxuICAgICAgICBzMzoge1xuICAgICAgICAgIGVuYWJsZWQ6IGxvZ2dpbmdCdWNrZXQgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICBidWNrZXQ6IGxvZ2dpbmdCdWNrZXQ/LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgcHJlZml4OiBwcm9wcy5sb2dnaW5nPy5zMz8ucHJlZml4LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKHByb3BzLmNsaWVudEF1dGhlbnRpY2F0aW9uPy5zYXNsUHJvcHM/LnNjcmFtICYmIHByb3BzLmNsaWVudEF1dGhlbnRpY2F0aW9uPy5zYXNsUHJvcHM/LmtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNhc2xTY3JhbUF1dGhlbnRpY2F0aW9uS2V5ID0gbmV3IGttcy5LZXkodGhpcywgJ1NBU0xLZXknLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlZCBmb3IgZW5jcnlwdGluZyBNU0sgc2VjcmV0cyBmb3IgU0FTTC9TQ1JBTSBhdXRoZW50aWNhdGlvbi4nLFxuICAgICAgICBhbGlhczogYG1zay8ke3Byb3BzLmNsdXN0ZXJOYW1lfS9zYXNsL3NjcmFtYCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9zZXJ2aWNlcy1zZWNyZXRzLW1hbmFnZXIuaHRtbCNhc20tcG9saWNpZXNcbiAgICAgIHRoaXMuc2FzbFNjcmFtQXV0aGVudGljYXRpb25LZXkuYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHNpZDpcbiAgICAgICAgICAgICdBbGxvdyBhY2Nlc3MgdGhyb3VnaCBBV1MgU2VjcmV0cyBNYW5hZ2VyIGZvciBhbGwgcHJpbmNpcGFscyBpbiB0aGUgYWNjb3VudCB0aGF0IGFyZSBhdXRob3JpemVkIHRvIHVzZSBBV1MgU2VjcmV0cyBNYW5hZ2VyJyxcbiAgICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5BbnlQcmluY2lwYWwoKV0sXG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ2ttczpFbmNyeXB0JyxcbiAgICAgICAgICAgICdrbXM6RGVjcnlwdCcsXG4gICAgICAgICAgICAna21zOlJlRW5jcnlwdConLFxuICAgICAgICAgICAgJ2ttczpHZW5lcmF0ZURhdGFLZXkqJyxcbiAgICAgICAgICAgICdrbXM6Q3JlYXRlR3JhbnQnLFxuICAgICAgICAgICAgJ2ttczpEZXNjcmliZUtleScsXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgICAna21zOlZpYVNlcnZpY2UnOiBgc2VjcmV0c21hbmFnZXIuJHtjb3JlLlN0YWNrLm9mKHRoaXMpLnJlZ2lvbn0uYW1hem9uYXdzLmNvbWAsXG4gICAgICAgICAgICAgICdrbXM6Q2FsbGVyQWNjb3VudCc6IGNvcmUuU3RhY2sub2YodGhpcykuYWNjb3VudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBjbGllbnRBdXRoZW50aWNhdGlvbjogQ2ZuQ2x1c3Rlci5DbGllbnRBdXRoZW50aWNhdGlvblByb3BlcnR5IHwgdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy5jbGllbnRBdXRoZW50aWNhdGlvbikge1xuICAgICAgY29uc3QgeyBzYXNsUHJvcHMsIHRsc1Byb3BzIH0gPSBwcm9wcy5jbGllbnRBdXRoZW50aWNhdGlvbjtcbiAgICAgIGNsaWVudEF1dGhlbnRpY2F0aW9uID0ge1xuICAgICAgICBzYXNsOiBzYXNsUHJvcHMgPyB7XG4gICAgICAgICAgaWFtOiBzYXNsUHJvcHMuaWFtID8geyBlbmFibGVkOiB0cnVlIH06IHVuZGVmaW5lZCxcbiAgICAgICAgICBzY3JhbTogc2FzbFByb3BzLnNjcmFtID8geyBlbmFibGVkOiB0cnVlIH06IHVuZGVmaW5lZCxcbiAgICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgdGxzOiB0bHNQcm9wcz8uY2VydGlmaWNhdGVBdXRob3JpdGllcyA/IHtcbiAgICAgICAgICBjZXJ0aWZpY2F0ZUF1dGhvcml0eUFybkxpc3Q6IHRsc1Byb3BzLmNlcnRpZmljYXRlQXV0aG9yaXRpZXM/Lm1hcCgoY2EpID0+IGNhLmNlcnRpZmljYXRlQXV0aG9yaXR5QXJuKSxcbiAgICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgQ2ZuQ2x1c3Rlcih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgICBrYWZrYVZlcnNpb246IHByb3BzLmthZmthVmVyc2lvbi52ZXJzaW9uLFxuICAgICAgbnVtYmVyT2ZCcm9rZXJOb2RlczpcbiAgICAgICAgcHJvcHMubnVtYmVyT2ZCcm9rZXJOb2RlcyAhPT0gdW5kZWZpbmVkID9cbiAgICAgICAgICBzdWJuZXRTZWxlY3Rpb24uYXZhaWxhYmlsaXR5Wm9uZXMubGVuZ3RoICogcHJvcHMubnVtYmVyT2ZCcm9rZXJOb2RlcyA6IHN1Ym5ldFNlbGVjdGlvbi5hdmFpbGFiaWxpdHlab25lcy5sZW5ndGgsXG4gICAgICBicm9rZXJOb2RlR3JvdXBJbmZvOiB7XG4gICAgICAgIGluc3RhbmNlVHlwZSxcbiAgICAgICAgY2xpZW50U3VibmV0czogc3VibmV0U2VsZWN0aW9uLnN1Ym5ldElkcyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IHRoaXMuY29ubmVjdGlvbnMuc2VjdXJpdHlHcm91cHMubWFwKFxuICAgICAgICAgIChncm91cCkgPT4gZ3JvdXAuc2VjdXJpdHlHcm91cElkLFxuICAgICAgICApLFxuICAgICAgICBzdG9yYWdlSW5mbzogaXNFeHByZXNzID8gdW5kZWZpbmVkIDoge1xuICAgICAgICAgIGVic1N0b3JhZ2VJbmZvOiB7XG4gICAgICAgICAgICB2b2x1bWVTaXplOiB2b2x1bWVTaXplLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZW5jcnlwdGlvbkluZm86IHtcbiAgICAgICAgZW5jcnlwdGlvbkF0UmVzdCxcbiAgICAgICAgZW5jcnlwdGlvbkluVHJhbnNpdCxcbiAgICAgIH0sXG4gICAgICBjb25maWd1cmF0aW9uSW5mbzogcHJvcHMuY29uZmlndXJhdGlvbkluZm8sXG4gICAgICBlbmhhbmNlZE1vbml0b3Jpbmc6IHByb3BzLm1vbml0b3Jpbmc/LmNsdXN0ZXJNb25pdG9yaW5nTGV2ZWwsXG4gICAgICBvcGVuTW9uaXRvcmluZzogb3Blbk1vbml0b3JpbmcsXG4gICAgICBzdG9yYWdlTW9kZTogaXNFeHByZXNzID8gdW5kZWZpbmVkIDogcHJvcHMuc3RvcmFnZU1vZGUsXG4gICAgICBsb2dnaW5nSW5mbzogbG9nZ2luZ0luZm8sXG4gICAgICBjbGllbnRBdXRoZW50aWNhdGlvbixcbiAgICB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSByZXNvdXJjZTtcblxuICAgIHJlc291cmNlLmFwcGx5UmVtb3ZhbFBvbGljeShwcm9wcy5yZW1vdmFsUG9saWN5LCB7XG4gICAgICBkZWZhdWx0OiBjb3JlLlJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgIH0pO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgY2x1c3Rlck5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUoXG4gICAgICBjb3JlLkZuLnNlbGVjdCgxLCBjb3JlLkZuLnNwbGl0KCcvJywgdGhpcy5yZXNvdXJjZS5yZWYpKSxcbiAgICApO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgY2x1c3RlckFybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLnJlZjtcbiAgfVxuXG4gIHByaXZhdGUgbXNrSW5zdGFuY2VUeXBlKGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZSwgZXhwcmVzcz86Ym9vbGVhbik6IHN0cmluZyB7XG4gICAgY29uc3QgcHJlZml4ID0gZXhwcmVzcyA/ICdleHByZXNzLicgOiAna2Fma2EuJztcbiAgICByZXR1cm4gYCR7cHJlZml4fSR7aW5zdGFuY2VUeXBlLnRvU3RyaW5nKCl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFpvb0tlZXBlciBDb25uZWN0aW9uIHN0cmluZ1xuICAgKlxuICAgKiBVc2VzIGEgQ3VzdG9tIFJlc291cmNlIHRvIG1ha2UgYW4gQVBJIGNhbGwgdG8gYGRlc2NyaWJlQ2x1c3RlcmAgdXNpbmcgdGhlIEphdmFzY3JpcHQgU0RLXG4gICAqXG4gICAqIEBwYXJhbSByZXNwb25zZUZpZWxkIEZpZWxkIHRvIHJldHVybiBmcm9tIEFQSSBjYWxsLiBlLmcuIFpvb2tlZXBlckNvbm5lY3RTdHJpbmcsIFpvb2tlZXBlckNvbm5lY3RTdHJpbmdUbHNcbiAgICogQHJldHVybnMgLSBUaGUgY29ubmVjdGlvbiBzdHJpbmcgdG8gdXNlIHRvIGNvbm5lY3QgdG8gdGhlIEFwYWNoZSBab29LZWVwZXIgY2x1c3Rlci5cbiAgICovXG4gIHByaXZhdGUgX3pvb2tlZXBlckNvbm5lY3Rpb25TdHJpbmcocmVzcG9uc2VGaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2NsdXN0ZXJEZXNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fY2x1c3RlckRlc2NyaXB0aW9uID0gbmV3IGNyLkF3c0N1c3RvbVJlc291cmNlKHRoaXMsICdab29rZWVwZXJDb25uZWN0Jywge1xuICAgICAgICBvblVwZGF0ZToge1xuICAgICAgICAgIHNlcnZpY2U6ICdLYWZrYScsXG4gICAgICAgICAgYWN0aW9uOiAnZGVzY3JpYmVDbHVzdGVyJyxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBDbHVzdGVyQXJuOiB0aGlzLmNsdXN0ZXJBcm4sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGNyLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgICdab29LZWVwZXJDb25uZWN0aW9uU3RyaW5nJyxcbiAgICAgICAgICApLFxuICAgICAgICAgIC8vIExpbWl0IHRoZSBvdXRwdXQgb2YgZGVzY3JpYmVDbHVzdGVyIHRoYXQgaXMgb3RoZXJ3aXNlIHRvbyBsYXJnZVxuICAgICAgICAgIG91dHB1dFBhdGhzOiBbXG4gICAgICAgICAgICAnQ2x1c3RlckluZm8uWm9va2VlcGVyQ29ubmVjdFN0cmluZycsXG4gICAgICAgICAgICAnQ2x1c3RlckluZm8uWm9va2VlcGVyQ29ubmVjdFN0cmluZ1RscycsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgcG9saWN5OiBjci5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU2RrQ2FsbHMoe1xuICAgICAgICAgIHJlc291cmNlczogW3RoaXMuY2x1c3RlckFybl0sXG4gICAgICAgIH0pLFxuICAgICAgICBpbnN0YWxsTGF0ZXN0QXdzU2RrOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY2x1c3RlckRlc2NyaXB0aW9uLmdldFJlc3BvbnNlRmllbGQoYENsdXN0ZXJJbmZvLiR7cmVzcG9uc2VGaWVsZH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFpvb0tlZXBlciBDb25uZWN0aW9uIHN0cmluZ1xuICAgKlxuICAgKiBVc2VzIGEgQ3VzdG9tIFJlc291cmNlIHRvIG1ha2UgYW4gQVBJIGNhbGwgdG8gYGRlc2NyaWJlQ2x1c3RlcmAgdXNpbmcgdGhlIEphdmFzY3JpcHQgU0RLXG4gICAqXG4gICAqIEByZXR1cm5zIC0gVGhlIGNvbm5lY3Rpb24gc3RyaW5nIHRvIHVzZSB0byBjb25uZWN0IHRvIHRoZSBBcGFjaGUgWm9vS2VlcGVyIGNsdXN0ZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHpvb2tlZXBlckNvbm5lY3Rpb25TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fem9va2VlcGVyQ29ubmVjdGlvblN0cmluZygnWm9va2VlcGVyQ29ubmVjdFN0cmluZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgWm9vS2VlcGVyIENvbm5lY3Rpb24gc3RyaW5nIGZvciBhIFRMUyBlbmFibGVkIGNsdXN0ZXJcbiAgICpcbiAgICogVXNlcyBhIEN1c3RvbSBSZXNvdXJjZSB0byBtYWtlIGFuIEFQSSBjYWxsIHRvIGBkZXNjcmliZUNsdXN0ZXJgIHVzaW5nIHRoZSBKYXZhc2NyaXB0IFNES1xuICAgKlxuICAgKiBAcmV0dXJucyAtIFRoZSBjb25uZWN0aW9uIHN0cmluZyB0byB1c2UgdG8gY29ubmVjdCB0byB6b29rZWVwZXIgY2x1c3RlciBvbiBUTFMgcG9ydC5cbiAgICovXG4gIHB1YmxpYyBnZXQgem9va2VlcGVyQ29ubmVjdGlvblN0cmluZ1RscygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl96b29rZWVwZXJDb25uZWN0aW9uU3RyaW5nKCdab29rZWVwZXJDb25uZWN0U3RyaW5nVGxzJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIGJyb2tlcnMgdGhhdCBhIGNsaWVudCBhcHBsaWNhdGlvbiBjYW4gdXNlIHRvIGJvb3RzdHJhcFxuICAgKlxuICAgKiBVc2VzIGEgQ3VzdG9tIFJlc291cmNlIHRvIG1ha2UgYW4gQVBJIGNhbGwgdG8gYGdldEJvb3RzdHJhcEJyb2tlcnNgIHVzaW5nIHRoZSBKYXZhc2NyaXB0IFNES1xuICAgKlxuICAgKiBAcGFyYW0gcmVzcG9uc2VGaWVsZCBGaWVsZCB0byByZXR1cm4gZnJvbSBBUEkgY2FsbC4gZS5nLiBCb290c3RyYXBCcm9rZXJTdHJpbmdTYXNsU2NyYW0sIEJvb3RzdHJhcEJyb2tlclN0cmluZ1xuICAgKiBAcmV0dXJucyAtIEEgc3RyaW5nIGNvbnRhaW5pbmcgb25lIG9yIG1vcmUgaG9zdG5hbWU6cG9ydCBwYWlycy5cbiAgICovXG4gIHByaXZhdGUgX2Jvb3RzdHJhcEJyb2tlcnMocmVzcG9uc2VGaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2NsdXN0ZXJCb290c3RyYXBCcm9rZXJzKSB7XG4gICAgICB0aGlzLl9jbHVzdGVyQm9vdHN0cmFwQnJva2VycyA9IG5ldyBjci5Bd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBgQm9vdHN0cmFwQnJva2VycyR7cmVzcG9uc2VGaWVsZH1gLCB7XG4gICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgc2VydmljZTogJ0thZmthJyxcbiAgICAgICAgICBhY3Rpb246ICdnZXRCb290c3RyYXBCcm9rZXJzJyxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBDbHVzdGVyQXJuOiB0aGlzLmNsdXN0ZXJBcm4sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGNyLlBoeXNpY2FsUmVzb3VyY2VJZC5vZignQm9vdHN0cmFwQnJva2VycycpLFxuICAgICAgICB9LFxuICAgICAgICBwb2xpY3k6IGNyLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TZGtDYWxscyh7XG4gICAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5jbHVzdGVyQXJuXSxcbiAgICAgICAgfSksXG4gICAgICAgIC8vIEFQSXMgYXJlIGF2YWlsYWJsZSBpbiAyLjEwNTUuMFxuICAgICAgICBpbnN0YWxsTGF0ZXN0QXdzU2RrOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY2x1c3RlckJvb3RzdHJhcEJyb2tlcnMuZ2V0UmVzcG9uc2VGaWVsZChyZXNwb25zZUZpZWxkKTtcbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIGJyb2tlcnMgdGhhdCBhIGNsaWVudCBhcHBsaWNhdGlvbiBjYW4gdXNlIHRvIGJvb3RzdHJhcFxuICAgKlxuICAgKiBVc2VzIGEgQ3VzdG9tIFJlc291cmNlIHRvIG1ha2UgYW4gQVBJIGNhbGwgdG8gYGdldEJvb3RzdHJhcEJyb2tlcnNgIHVzaW5nIHRoZSBKYXZhc2NyaXB0IFNES1xuICAgKlxuICAgKiBAcmV0dXJucyAtIEEgc3RyaW5nIGNvbnRhaW5pbmcgb25lIG9yIG1vcmUgaG9zdG5hbWU6cG9ydCBwYWlycy5cbiAgICovXG4gIHB1YmxpYyBnZXQgYm9vdHN0cmFwQnJva2VycygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ib290c3RyYXBCcm9rZXJzKCdCb290c3RyYXBCcm9rZXJTdHJpbmcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2YgYnJva2VycyB0aGF0IGEgVExTIGF1dGhlbnRpY2F0ZWQgY2xpZW50IGFwcGxpY2F0aW9uIGNhbiB1c2UgdG8gYm9vdHN0cmFwXG4gICAqXG4gICAqIFVzZXMgYSBDdXN0b20gUmVzb3VyY2UgdG8gbWFrZSBhbiBBUEkgY2FsbCB0byBgZ2V0Qm9vdHN0cmFwQnJva2Vyc2AgdXNpbmcgdGhlIEphdmFzY3JpcHQgU0RLXG4gICAqXG4gICAqIEByZXR1cm5zIC0gQSBzdHJpbmcgY29udGFpbmluZyBvbmUgb3IgbW9yZSBETlMgbmFtZXMgKG9yIElQKSBhbmQgVExTIHBvcnQgcGFpcnMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJvb3RzdHJhcEJyb2tlcnNUbHMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYm9vdHN0cmFwQnJva2VycygnQm9vdHN0cmFwQnJva2VyU3RyaW5nVGxzJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIGJyb2tlcnMgdGhhdCBhIFNBU0wvU0NSQU0gYXV0aGVudGljYXRlZCBjbGllbnQgYXBwbGljYXRpb24gY2FuIHVzZSB0byBib290c3RyYXBcbiAgICpcbiAgICogVXNlcyBhIEN1c3RvbSBSZXNvdXJjZSB0byBtYWtlIGFuIEFQSSBjYWxsIHRvIGBnZXRCb290c3RyYXBCcm9rZXJzYCB1c2luZyB0aGUgSmF2YXNjcmlwdCBTREtcbiAgICpcbiAgICogQHJldHVybnMgLSBBIHN0cmluZyBjb250YWluaW5nIG9uZSBvciBtb3JlIGRucyBuYW1lIChvciBJUCkgYW5kIFNBU0wgU0NSQU0gcG9ydCBwYWlycy5cbiAgICovXG4gIHB1YmxpYyBnZXQgYm9vdHN0cmFwQnJva2Vyc1Nhc2xTY3JhbSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ib290c3RyYXBCcm9rZXJzKCdCb290c3RyYXBCcm9rZXJTdHJpbmdTYXNsU2NyYW0nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2YgYnJva2VycyB0aGF0IGEgU0FTTC9JQU0gYXV0aGVudGljYXRlZCBjbGllbnQgYXBwbGljYXRpb24gY2FuIHVzZSB0byBib290c3RyYXBcbiAgICpcbiAgICogVXNlcyBhIEN1c3RvbSBSZXNvdXJjZSB0byBtYWtlIGFuIEFQSSBjYWxsIHRvIGBnZXRCb290c3RyYXBCcm9rZXJzYCB1c2luZyB0aGUgSmF2YXNjcmlwdCBTREtcbiAgICpcbiAgICogQHJldHVybnMgLSBBIHN0cmluZyBjb250YWluaW5nIG9uZSBvciBtb3JlIEROUyBuYW1lcyAob3IgSVApIGFuZCBUTFMgcG9ydCBwYWlycy5cbiAgICovXG4gIHB1YmxpYyBnZXQgYm9vdHN0cmFwQnJva2Vyc1Nhc2xJYW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Jvb3RzdHJhcEJyb2tlcnMoJ0Jvb3RzdHJhcEJyb2tlclN0cmluZ1Nhc2xJYW0nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgdXNlcnNuYW1lcyB0byByZWdpc3RlciB3aXRoIHRoZSBjbHVzdGVyLiBUaGUgcGFzc3dvcmQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGdlbmVyYXRlZCB1c2luZyBTZWNyZXRzXG4gICAqIE1hbmFnZXIgYW5kIHRoZSB7IHVzZXJuYW1lLCBwYXNzd29yZCB9IEpTT04gb2JqZWN0IHN0b3JlZCBpbiBTZWNyZXRzIE1hbmFnZXIgYXMgYEFtYXpvbk1TS191c2VybmFtZWAuXG4gICAqXG4gICAqIE11c3QgYmUgdXNpbmcgdGhlIFNBU0wvU0NSQU0gYXV0aGVudGljYXRpb24gbWVjaGFuaXNtLlxuICAgKlxuICAgKiBAcGFyYW0gdXNlcm5hbWVzIC0gdXNlcm5hbWUocykgdG8gcmVnaXN0ZXIgd2l0aCB0aGUgY2x1c3RlclxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZFVzZXIoLi4udXNlcm5hbWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNhc2xTY3JhbUF1dGhlbnRpY2F0aW9uS2V5KSB7XG4gICAgICBjb25zdCBNU0tfU0VDUkVUX1BSRUZJWCA9ICdBbWF6b25NU0tfJzsgLy8gUmVxdWlyZWRcbiAgICAgIGNvbnN0IHNlY3JldHMgPSB1c2VybmFtZXMubWFwKFxuICAgICAgICAodXNlcm5hbWUpID0+XG4gICAgICAgICAgbmV3IHNlY3JldHNtYW5hZ2VyLlNlY3JldCh0aGlzLCBgS2Fma2FVc2VyJHt1c2VybmFtZX1gLCB7XG4gICAgICAgICAgICBzZWNyZXROYW1lOiBgJHtNU0tfU0VDUkVUX1BSRUZJWH0ke3RoaXMuY2x1c3Rlck5hbWV9XyR7dXNlcm5hbWV9YCxcbiAgICAgICAgICAgIGdlbmVyYXRlU2VjcmV0U3RyaW5nOiB7XG4gICAgICAgICAgICAgIHNlY3JldFN0cmluZ1RlbXBsYXRlOiBKU09OLnN0cmluZ2lmeSh7IHVzZXJuYW1lIH0pLFxuICAgICAgICAgICAgICBnZW5lcmF0ZVN0cmluZ0tleTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbmNyeXB0aW9uS2V5OiB0aGlzLnNhc2xTY3JhbUF1dGhlbnRpY2F0aW9uS2V5LFxuICAgICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgbmV3IGNyLkF3c0N1c3RvbVJlc291cmNlKHRoaXMsIGBCYXRjaEFzc29jaWF0ZVNjcmFtU2VjcmV0cyR7YWRkcmVzc09mKHVzZXJuYW1lcyl9YCwge1xuICAgICAgICBvblVwZGF0ZToge1xuICAgICAgICAgIHNlcnZpY2U6ICdLYWZrYScsXG4gICAgICAgICAgYWN0aW9uOiAnYmF0Y2hBc3NvY2lhdGVTY3JhbVNlY3JldCcsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgQ2x1c3RlckFybjogdGhpcy5jbHVzdGVyQXJuLFxuICAgICAgICAgICAgU2VjcmV0QXJuTGlzdDogc2VjcmV0cy5tYXAoKHNlY3JldCkgPT4gc2VjcmV0LnNlY3JldEFybiksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGNyLlBoeXNpY2FsUmVzb3VyY2VJZC5vZignQ3JlYXRlVXNlcnMnKSxcbiAgICAgICAgfSxcbiAgICAgICAgcG9saWN5OiBjci5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogWydrbXM6Q3JlYXRlR3JhbnQnXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW3RoaXMuc2FzbFNjcmFtQXV0aGVudGljYXRpb25LZXk/LmtleUFybl0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogWydrYWZrYTpCYXRjaEFzc29jaWF0ZVNjcmFtU2VjcmV0J10sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFt0aGlzLmNsdXN0ZXJBcm5dLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgaW5zdGFsbExhdGVzdEF3c1NkazogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IGNvcmUuVmFsaWRhdGlvbkVycm9yKGxpdGBNaXNzaW5nQXV0aGVudGljYXRpb25LbXNLZXlgLCAnQ2Fubm90IGNyZWF0ZSB1c2VycyBpZiBhbiBhdXRoZW50aWNhdGlvbiBLTVMga2V5IGhhcyBub3QgYmVlbiBjcmVhdGVkL3Byb3ZpZGVkLicsIHRoaXMpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -103,7 +103,7 @@ let ServerlessCluster = (() => {
103
103
  ServerlessCluster = _classThis = _classDescriptor.value;
104
104
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
105
105
  }
106
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-msk-alpha.ServerlessCluster", version: "2.259.0-alpha.0" };
106
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-msk-alpha.ServerlessCluster", version: "2.261.0-alpha.0" };
107
107
  /** Uniquely identifies this class. */
108
108
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-msk-alpha.ServerlessCluster';
109
109
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-cdk/aws-msk-alpha",
3
- "version": "2.259.0-alpha.0",
3
+ "version": "2.261.0-alpha.0",
4
4
  "private": false,
5
5
  "description": "The CDK Construct Library for AWS::MSK",
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.259.0-alpha.0",
87
+ "@aws-cdk/cdk-build-tools": "2.261.0-alpha.0",
88
88
  "@aws-cdk/integ-runner": "^2.199.0",
89
- "@aws-cdk/pkglint": "2.259.0-alpha.0",
89
+ "@aws-cdk/pkglint": "2.261.0-alpha.0",
90
90
  "@types/jest": "^29.5.14",
91
91
  "jest": "^29.7.0",
92
- "aws-cdk-lib": "2.259.0",
92
+ "aws-cdk-lib": "2.261.0",
93
93
  "constructs": "^10.5.0",
94
- "@aws-cdk/integ-tests-alpha": "2.259.0-alpha.0"
94
+ "@aws-cdk/integ-tests-alpha": "2.261.0-alpha.0"
95
95
  },
96
96
  "dependencies": {},
97
97
  "peerDependencies": {
98
- "aws-cdk-lib": "^2.259.0",
98
+ "aws-cdk-lib": "^2.261.0",
99
99
  "constructs": "^10.5.0"
100
100
  },
101
101
  "engines": {