@aws-cdk/aws-bedrock-agentcore-alpha 2.246.0-alpha.0 → 2.248.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.
Files changed (32) hide show
  1. package/.jsii +589 -531
  2. package/lib/gateway/gateway-base.js +1 -1
  3. package/lib/gateway/gateway.js +10 -9
  4. package/lib/gateway/inbound-auth/authorizer.js +6 -5
  5. package/lib/gateway/inbound-auth/custom-claim.js +7 -6
  6. package/lib/gateway/interceptor.js +1 -1
  7. package/lib/gateway/outbound-auth/api-key.js +1 -1
  8. package/lib/gateway/outbound-auth/credential-provider.js +1 -1
  9. package/lib/gateway/protocol.js +2 -2
  10. package/lib/gateway/targets/schema/api-schema.js +6 -6
  11. package/lib/gateway/targets/schema/tool-schema.js +7 -7
  12. package/lib/gateway/targets/target-base.js +1 -1
  13. package/lib/gateway/targets/target-configuration.js +26 -25
  14. package/lib/gateway/targets/target.js +5 -4
  15. package/lib/memory/memory-strategy.js +1 -1
  16. package/lib/memory/memory.js +2 -2
  17. package/lib/memory/strategies/managed-strategy.js +1 -1
  18. package/lib/memory/strategies/self-managed-strategy.js +1 -1
  19. package/lib/memory/validation-helpers.js +4 -3
  20. package/lib/network/network-configuration.js +4 -4
  21. package/lib/runtime/inbound-auth/custom-claim.js +7 -6
  22. package/lib/runtime/inbound-auth/runtime-authorizer-configuration.js +5 -4
  23. package/lib/runtime/runtime-artifact.js +6 -5
  24. package/lib/runtime/runtime-base.js +4 -3
  25. package/lib/runtime/runtime-endpoint-base.js +1 -1
  26. package/lib/runtime/runtime-endpoint.js +10 -9
  27. package/lib/runtime/runtime.js +21 -20
  28. package/lib/runtime/validation-helpers.js +3 -2
  29. package/lib/tools/browser.js +5 -4
  30. package/lib/tools/code-interpreter.js +5 -4
  31. package/lib/tools/validation-helpers.js +3 -2
  32. package/package.json +9 -9
@@ -20,6 +20,7 @@ const assets = require("aws-cdk-lib/aws-ecr-assets");
20
20
  const s3 = require("aws-cdk-lib/aws-s3");
21
21
  const s3_assets = require("aws-cdk-lib/aws-s3-assets");
22
22
  const errors_1 = require("aws-cdk-lib/core/lib/errors");
23
+ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
23
24
  /**
24
25
  * Bedrock AgentCore runtime environment for code execution
25
26
  * Allowed values: PYTHON_3_10 | PYTHON_3_11 | PYTHON_3_12 | PYTHON_3_13
@@ -48,7 +49,7 @@ var AgentCoreRuntime;
48
49
  * Provides methods to reference container images from ECR repositories or local assets.
49
50
  */
50
51
  class AgentRuntimeArtifact {
51
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.AgentRuntimeArtifact", version: "2.246.0-alpha.0" };
52
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.AgentRuntimeArtifact", version: "2.248.0-alpha.0" };
52
53
  /**
53
54
  * Reference an image in an ECR repository
54
55
  */
@@ -162,7 +163,7 @@ class AssetImage extends AgentRuntimeArtifact {
162
163
  }
163
164
  _render() {
164
165
  if (!this.asset) {
165
- throw new errors_1.UnscopedValidationError('AssetNotInitialized', 'Asset not initialized. Call bind() before _render()');
166
+ throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `AssetNotInitialized`, 'Asset not initialized. Call bind() before _render()');
166
167
  }
167
168
  // Return container configuration directly as expected by the runtime
168
169
  // The runtime wraps this in containerConfiguration
@@ -244,7 +245,7 @@ class CodeAsset extends AgentRuntimeArtifact {
244
245
  }
245
246
  _render() {
246
247
  if (!this.asset) {
247
- throw new errors_1.UnscopedValidationError('AssetNotInitialized', 'Asset not initialized. Call bind() before _render()');
248
+ throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `AssetNotInitialized`, 'Asset not initialized. Call bind() before _render()');
248
249
  }
249
250
  const s3Config = {
250
251
  bucket: this.asset.bucket.bucketName,
@@ -267,7 +268,7 @@ class ImageUriArtifact extends AgentRuntimeArtifact {
267
268
  // Validate ECR container URI format per CloudFormation requirements
268
269
  const ecrPattern = /^\d{12}\.dkr\.ecr\.([a-z0-9-]+)\.amazonaws\.com\/((?:[a-z0-9]+(?:[._-][a-z0-9]+)*\/)*[a-z0-9]+(?:[._-][a-z0-9]+)*)([:@]\S+)$/;
269
270
  if (!aws_cdk_lib_1.Token.isUnresolved(containerUri) && !ecrPattern.test(containerUri)) {
270
- throw new errors_1.UnscopedValidationError('InvalidEcrContainerUri', `Invalid ECR container URI format: ${containerUri}. Must be an ECR URI: {account}.dkr.ecr.{region}.amazonaws.com/{repository}:{tag}`);
271
+ throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `InvalidEcrContainerUri`, `Invalid ECR container URI format: ${containerUri}. Must be an ECR URI: {account}.dkr.ecr.{region}.amazonaws.com/{repository}:{tag}`);
271
272
  }
272
273
  }
273
274
  bind(_scope, _runtime) {
@@ -278,4 +279,4 @@ class ImageUriArtifact extends AgentRuntimeArtifact {
278
279
  };
279
280
  }
280
281
  }
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bnRpbWUtYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7R0FXRztBQUVILDZDQUEyQztBQUczQyxxREFBcUQ7QUFDckQseUNBQXlDO0FBQ3pDLHVEQUF1RDtBQUN2RCx3REFBc0U7QUFJdEU7OztHQUdHO0FBQ0gsSUFBWSxnQkFpQlg7QUFqQkQsV0FBWSxnQkFBZ0I7SUFDMUI7O09BRUc7SUFDSCwrQ0FBMkIsQ0FBQTtJQUMzQjs7T0FFRztJQUNILCtDQUEyQixDQUFBO0lBQzNCOztPQUVHO0lBQ0gsK0NBQTJCLENBQUE7SUFDM0I7O09BRUc7SUFDSCwrQ0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBakJXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBaUIzQjtBQXNCRDs7O0dBR0c7QUFDSCxNQUFzQixvQkFBb0I7O0lBQ3hDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUFDLFVBQTJCLEVBQUUsTUFBYyxRQUFRO1FBQ2pGLE9BQU8sSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3RDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBaUIsRUFBRSxVQUEwQyxFQUFFO1FBQ3JGLE9BQU8sSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQzNDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQXVCLEVBQUUsT0FBeUIsRUFBRSxVQUFvQjs7Ozs7Ozs7OztRQUMzRixPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDckQ7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQXlCOzs7Ozs7Ozs7O1FBQ25ELE9BQU8sSUFBSSxTQUFTLENBQUMs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UUFDbEgsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFRO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1lBQ3BDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVc7U0FDL0IsQ0FBQztRQUVGLE9BQU87WUFDTCxJQUFJLEVBQUU7Z0JBQ0osRUFBRSxFQUFFLFFBQVE7YUFDYjtZQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDckIsQ0FBQztLQUNWO0NBQ0Y7QUFFRCxNQUFNLGdCQUFpQixTQUFRLG9CQUFvQjtJQUNwQjtJQUE3QixZQUE2QixZQUFvQjtRQUMvQyxLQUFLLEVBQUUsQ0FBQztRQURtQixpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUcvQyxvRUFBb0U7UUFDcEUsTUFBTSxVQUFVLEdBQUcsOEhBQThILENBQUM7UUFDbEosSUFBSSxDQUFDLG1CQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3hFLE1BQU0sSUFBSSxnQ0FBdUIsQ0FDL0Isd0JBQXdCLEVBQ3hCLHFDQUFxQyxZQUFZLG1GQUFtRixDQUNySSxDQUFDO1FBQ0osQ0FBQztLQUNGO0lBRU0sSUFBSSxDQUFDLE1BQWlCLEVBQUUsUUFBaUI7S0FHL0M7SUFFTSxPQUFPO1FBQ1osT0FBTztZQUNMLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUN6QixDQUFDO0tBQ1Y7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFN0YWNrLCBUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlIHsgQ2ZuUnVudGltZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCB0eXBlICogYXMgZWNyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3InO1xuaW1wb3J0ICogYXMgYXNzZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3ItYXNzZXRzJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzM19hc3NldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2Vycm9ycyc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBSdW50aW1lIH0gZnJvbSAnLi9ydW50aW1lJztcblxuLyoqXG4gKiBCZWRyb2NrIEFnZW50Q29yZSBydW50aW1lIGVudmlyb25tZW50IGZvciBjb2RlIGV4ZWN1dGlvblxuICogQWxsb3dlZCB2YWx1ZXM6IFBZVEhPTl8zXzEwIHwgUFlUSE9OXzNfMTEgfCBQWVRIT05fM18xMiB8IFBZVEhPTl8zXzEzXG4gKi9cbmV4cG9ydCBlbnVtIEFnZW50Q29yZVJ1bnRpbWUge1xuICAvKipcbiAgICogUHl0aG9uIDMuMTAgcnVudGltZVxuICAgKi9cbiAgUFlUSE9OXzNfMTAgPSAnUFlUSE9OXzNfMTAnLFxuICAvKipcbiAgICogUHl0aG9uIDMuMTEgcnVudGltZVxuICAgKi9cbiAgUFlUSE9OXzNfMTEgPSAnUFlUSE9OXzNfMTEnLFxuICAvKipcbiAgICogUHl0aG9uIDMuMTIgcnVudGltZVxuICAgKi9cbiAgUFlUSE9OXzNfMTIgPSAnUFlUSE9OXzNfMTInLFxuICAvKipcbiAgICogUHl0aG9uIDMuMTMgcnVudGltZVxuICAgKi9cbiAgUFlUSE9OXzNfMTMgPSAnUFlUSE9OXzNfMTMnLFxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIGFuIFMzIGNvZGUgYXNzZXQgZnJvbSBsb2NhbCBmaWxlcyBmb3IgYWdlbnQgcnVudGltZSBhcnRpZmFjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZGVBc3NldE9wdGlvbnMgZXh0ZW5kcyBzM19hc3NldHMuQXNzZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIHBhdGggdG8gdGhlIGNvZGUgYXNzZXRcbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQgZm9yIGV4ZWN1dGluZyB0aGUgY29kZVxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZTogQWdlbnRDb3JlUnVudGltZTtcblxuICAvKipcbiAgICogVGhlIGVudHJ5IHBvaW50IGZvciB0aGUgY29kZSBleGVjdXRpb24sIHNwZWNpZnlpbmcgdGhlIGZ1bmN0aW9uIG9yIG1ldGhvZCB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGNvZGUgcnVuc1xuICAgKi9cbiAgcmVhZG9ubHkgZW50cnlwb2ludDogc3RyaW5nW107XG59XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgYWdlbnQgcnVudGltZSBhcnRpZmFjdHMuXG4gKiBQcm92aWRlcyBtZXRob2RzIHRvIHJlZmVyZW5jZSBjb250YWluZXIgaW1hZ2VzIGZyb20gRUNSIHJlcG9zaXRvcmllcyBvciBsb2NhbCBhc3NldHMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gaW1hZ2UgaW4gYW4gRUNSIHJlcG9zaXRvcnlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUVjclJlcG9zaXRvcnkocmVwb3NpdG9yeTogZWNyLklSZXBvc2l0b3J5LCB0YWc6IHN0cmluZyA9ICdsYXRlc3QnKTogQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICAgIHJldHVybiBuZXcgRWNySW1hZ2UocmVwb3NpdG9yeSwgdGFnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gYWdlbnQgcnVudGltZSBhcnRpZmFjdCB0aGF0J3MgY29uc3RydWN0ZWQgZGlyZWN0bHkgZnJvbSBzb3VyY2VzIG9uIGRpc2tcbiAgICogQHBhcmFtIGRpcmVjdG9yeSBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBEb2NrZXJmaWxlIGlzIHN0b3JlZFxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0byBmdXJ0aGVyIGNvbmZpZ3VyZSB0aGUgc2VsZWN0ZWQgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFzc2V0KGRpcmVjdG9yeTogc3RyaW5nLCBvcHRpb25zOiBhc3NldHMuRG9ja2VySW1hZ2VBc3NldE9wdGlvbnMgPSB7fSk6IEFnZW50UnVudGltZUFydGlmYWN0IHtcbiAgICByZXR1cm4gbmV3IEFzc2V0SW1hZ2UoZGlyZWN0b3J5LCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gYWdlbnQgcnVudGltZSBhcnRpZmFjdCB0aGF0J3MgY29uc3RydWN0ZWQgZGlyZWN0bHkgZnJvbSBhbiBTMyBvYmplY3RcbiAgICogQHBhcmFtIHMzTG9jYXRpb24gVGhlIHNvdXJjZSBjb2RlIGxvY2F0aW9uIGFuZCBjb25maWd1cmF0aW9uIGRldGFpbHMuXG4gICAqIEBwYXJhbSBydW50aW1lIFRoZSBydW50aW1lIGVudmlyb25tZW50IGZvciBleGVjdXRpbmcgdGhlIGNvZGUuIEFsbG93ZWQgdmFsdWVzOiBQWVRIT05fM18xMCB8IFBZVEhPTl8zXzExIHwgUFlUSE9OXzNfMTIgfCBQWVRIT05fM18xM1xuICAgKiBAcGFyYW0gZW50cnlwb2ludCBUaGUgZW50cnkgcG9pbnQgZm9yIHRoZSBjb2RlIGV4ZWN1dGlvbiwgc3BlY2lmeWluZyB0aGUgZnVuY3Rpb24gb3IgbWV0aG9kIHRoYXQgc2hvdWxkIGJlIGludm9rZWQgd2hlbiB0aGUgY29kZSBydW5zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUzMoczNMb2NhdGlvbjogczMuTG9jYXRpb24sIHJ1bnRpbWU6IEFnZW50Q29yZVJ1bnRpbWUsIGVudHJ5cG9pbnQ6IHN0cmluZ1tdKTogQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICAgIHJldHVybiBuZXcgUzNJbWFnZShzM0xvY2F0aW9uLCBydW50aW1lLCBlbnRyeXBvaW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gYWdlbnQgcnVudGltZSBhcnRpZmFjdCB0aGF0J3MgY29uc3RydWN0ZWQgZnJvbSBsb2NhbCBjb2RlIGFzc2V0cyB1cGxvYWRlZCB0byBhIENESy1tYW5hZ2VkIFMzIGJ1Y2tldFxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgY29uZmlndXJpbmcgdGhlIGNvZGUgYXNzZXRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvZGVBc3NldChvcHRpb25zOiBDb2RlQXNzZXRPcHRpb25zKTogQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICAgIHJldHVybiBuZXcgQ29kZUFzc2V0KG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSBhbiBpbWFnZSB1c2luZyBhbiBFQ1IgY29udGFpbmVyIFVSSVxuICAgKlxuICAgKiBVc2UgdGhpcyB3aGVuIHJlZmVyZW5jaW5nIEVDUiBpbWFnZXMgZnJvbSBDbG91ZEZvcm1hdGlvbiBwYXJhbWV0ZXJzIG9yIGNyb3NzLXN0YWNrIHJlZmVyZW5jZXMuXG4gICAqXG4gICAqICoqTm90ZToqKiBObyBJQU0gcGVybWlzc2lvbnMgYXJlIGF1dG9tYXRpY2FsbHkgZ3JhbnRlZC4gWW91IG11c3QgZW5zdXJlIHRoZSBydW50aW1lIGhhc1xuICAgKiBFQ1IgcHVsbCBwZXJtaXNzaW9ucyBmb3IgdGhlIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJVcmkgVGhlIEVDUiBjb250YWluZXIgaW1hZ2UgVVJJIChmb3JtYXQ6IHthY2NvdW50fS5ka3IuZWNyLntyZWdpb259LmFtYXpvbmF3cy5jb20ve3JlcG9zaXRvcnl9Ont0YWd9KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW1hZ2VVcmkoY29udGFpbmVyVXJpOiBzdHJpbmcpOiBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gICAgcmV0dXJuIG5ldyBJbWFnZVVyaUFydGlmYWN0KGNvbnRhaW5lclVyaSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGltYWdlIGlzIHVzZWQgYnkgYSBSdW50aW1lIHRvIGhhbmRsZSBzaWRlIGVmZmVjdHMgbGlrZSBwZXJtaXNzaW9uc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGJpbmQoc2NvcGU6IENvbnN0cnVjdCwgcnVudGltZTogUnVudGltZSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgYXJ0aWZhY3QgY29uZmlndXJhdGlvbiBmb3IgQ2xvdWRGb3JtYXRpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgX3JlbmRlcigpOiBDZm5SdW50aW1lLkFnZW50UnVudGltZUFydGlmYWN0UHJvcGVydHk7XG59XG5cbmNsYXNzIEVjckltYWdlIGV4dGVuZHMgQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICBwcml2YXRlIGJvdW5kID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByZXBvc2l0b3J5OiBlY3IuSVJlcG9zaXRvcnksIHByaXZhdGUgcmVhZG9ubHkgdGFnOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGJpbmQoX3Njb3BlOiBDb25zdHJ1Y3QsIHJ1bnRpbWU6IFJ1bnRpbWUpOiB2b2lkIHtcbiAgICAvLyBIYW5kbGUgcGVybWlzc2lvbnMgKG9ubHkgb25jZSlcbiAgICBpZiAoIXRoaXMuYm91bmQgJiYgcnVudGltZS5yb2xlKSB7XG4gICAgICB0aGlzLnJlcG9zaXRvcnkuZ3JhbnRQdWxsKHJ1bnRpbWUucm9sZSk7XG4gICAgICB0aGlzLmJvdW5kID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgX3JlbmRlcigpOiBDZm5SdW50aW1lLkFnZW50UnVudGltZUFydGlmYWN0UHJvcGVydHkge1xuICAgIC8vIFJldHVybiBjb250YWluZXIgY29uZmlndXJhdGlvbiBkaXJlY3RseSBhcyBleHBlY3RlZCBieSB0aGUgcnVudGltZVxuICAgIC8vIFRoZSBydW50aW1lIHdyYXBzIHRoaXMgaW4gY29udGFpbmVyQ29uZmlndXJhdGlvblxuICAgIHJldHVybiB7XG4gICAgICBjb250YWluZXJVcmk6IHRoaXMucmVwb3NpdG9yeS5yZXBvc2l0b3J5VXJpRm9yVGFnKHRoaXMudGFnKSxcbiAgICB9IGFzIGFueTtcbiAgfVxufVxuXG5jbGFzcyBBc3NldEltYWdlIGV4dGVuZHMgQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICBwcml2YXRlIGFzc2V0PzogYXNzZXRzLkRvY2tlckltYWdlQXNzZXQ7XG4gIHByaXZhdGUgYm91bmQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRpcmVjdG9yeTogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IGFzc2V0cy5Eb2NrZXJJbWFnZUFzc2V0T3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIHJ1bnRpbWU6IFJ1bnRpbWUpOiB2b2lkIHtcbiAgICAvLyBDcmVhdGUgdGhlIGFzc2V0IGlmIG5vdCBhbHJlYWR5IGNyZWF0ZWRcbiAgICBpZiAoIXRoaXMuYXNzZXQpIHtcbiAgICAgIHRoaXMuYXNzZXQgPSBuZXcgYXNzZXRzLkRvY2tlckltYWdlQXNzZXQoc2NvcGUsICdBZ2VudFJ1bnRpbWVBcnRpZmFjdCcsIHtcbiAgICAgICAgZGlyZWN0b3J5OiB0aGlzLmRpcmVjdG9yeSxcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gR3JhbnQgcGVybWlzc2lvbnMgKG9ubHkgb25jZSlcbiAgICBpZiAoIXRoaXMuYm91bmQpIHtcbiAgICAgIHRoaXMuYXNzZXQucmVwb3NpdG9yeS5ncmFudFB1bGwocnVudGltZS5yb2xlKTtcbiAgICAgIHRoaXMuYm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBfcmVuZGVyKCk6IENmblJ1bnRpbWUuQWdlbnRSdW50aW1lQXJ0aWZhY3RQcm9wZXJ0eSB7XG4gICAgaWYgKCF0aGlzLmFzc2V0KSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoJ0Fzc2V0Tm90SW5pdGlhbGl6ZWQnLCAnQXNzZXQgbm90IGluaXRpYWxpemVkLiBDYWxsIGJpbmQoKSBiZWZvcmUgX3JlbmRlcigpJyk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGNvbnRhaW5lciBjb25maWd1cmF0aW9uIGRpcmVjdGx5IGFzIGV4cGVjdGVkIGJ5IHRoZSBydW50aW1lXG4gICAgLy8gVGhlIHJ1bnRpbWUgd3JhcHMgdGhpcyBpbiBjb250YWluZXJDb25maWd1cmF0aW9uXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRhaW5lclVyaTogdGhpcy5hc3NldC5pbWFnZVVyaSxcbiAgICB9IGFzIGFueTtcbiAgfVxufVxuXG5jbGFzcyBTM0ltYWdlIGV4dGVuZHMgQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICBwcml2YXRlIGJvdW5kID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzM0xvY2F0aW9uOiBzMy5Mb2NhdGlvbiwgcHJpdmF0ZSByZWFkb25seSBydW50aW1lOiBBZ2VudENvcmVSdW50aW1lLCBwcml2YXRlIHJlYWRvbmx5IGVudHJ5cG9pbnQ6IHN0cmluZ1tdKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIHJ1bnRpbWU6IFJ1bnRpbWUpOiB2b2lkIHtcbiAgICAvLyBIYW5kbGUgcGVybWlzc2lvbnMgKG9ubHkgb25jZSlcbiAgICBpZiAoIXRoaXMuYm91bmQgJiYgcnVudGltZS5yb2xlKSB7XG4gICAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLnMzTG9jYXRpb24uYnVja2V0TmFtZSkpIHtcbiAgICAgICAgU3RhY2sub2Yoc2NvcGUpLnJlc29sdmUodGhpcy5zM0xvY2F0aW9uLmJ1Y2tldE5hbWUpO1xuICAgICAgfVxuICAgICAgY29uc3QgYnVja2V0ID0gczMuQnVja2V0LmZyb21CdWNrZXROYW1lKFxuICAgICAgICBzY29wZSxcbiAgICAgICAgYCR7dGhpcy5zM0xvY2F0aW9uLmJ1Y2tldE5hbWV9Q29kZUFyY2hpdmVgLFxuICAgICAgICB0aGlzLnMzTG9jYXRpb24uYnVja2V0TmFtZSxcbiAgICAgICk7XG4gICAgICAvLyBFbnN1cmUgdGhlIHBvbGljeSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYnJvd3NlciByZXNvdXJjZSBpcyBjcmVhdGVkXG4gICAgICBidWNrZXQuZ3JhbnRSZWFkKHJ1bnRpbWUucm9sZSk7XG4gICAgICB0aGlzLmJvdW5kID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgX3JlbmRlcigpOiBDZm5SdW50aW1lLkFnZW50UnVudGltZUFydGlmYWN0UHJvcGVydHkge1xuICAgIGNvbnN0IHMzQ29uZmlnOiBhbnkgPSB7XG4gICAgICBidWNrZXQ6IHRoaXMuczNMb2NhdGlvbi5idWNrZXROYW1lLFxuICAgICAgcHJlZml4OiB0aGlzLnMzTG9jYXRpb24ub2JqZWN0S2V5LFxuICAgIH07XG4gICAgaWYgKHRoaXMuczNMb2NhdGlvbi5vYmplY3RWZXJzaW9uKSB7XG4gICAgICBzM0NvbmZpZy52ZXJzaW9uSWQgPSB0aGlzLnMzTG9jYXRpb24ub2JqZWN0VmVyc2lvbjtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6IHtcbiAgICAgICAgczM6IHMzQ29uZmlnLFxuICAgICAgfSxcbiAgICAgIHJ1bnRpbWU6IHRoaXMucnVudGltZSxcbiAgICAgIGVudHJ5UG9pbnQ6IHRoaXMuZW50cnlwb2ludCxcbiAgICB9IGFzIGFueTtcbiAgfVxufVxuXG5jbGFzcyBDb2RlQXNzZXQgZXh0ZW5kcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIHByaXZhdGUgYXNzZXQ/OiBzM19hc3NldHMuQXNzZXQ7XG4gIHByaXZhdGUgYm91bmQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcnVudGltZTogQWdlbnRDb3JlUnVudGltZTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbnRyeXBvaW50OiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBzM19hc3NldHMuQXNzZXRPcHRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDb2RlQXNzZXRPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7IHBhdGgsIHJ1bnRpbWUsIGVudHJ5cG9pbnQsIC4uLm9wdGlvbnMgfSA9IHByb3BzO1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy5ydW50aW1lID0gcnVudGltZTtcbiAgICB0aGlzLmVudHJ5cG9pbnQgPSBlbnRyeXBvaW50O1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgYmluZChzY29wZTogQ29uc3RydWN0LCBydW50aW1lOiBSdW50aW1lKTogdm9pZCB7XG4gICAgLy8gQ3JlYXRlIHRoZSBhc3NldCBpZiBub3QgYWxyZWFkeSBjcmVhdGVkXG4gICAgaWYgKCF0aGlzLmFzc2V0KSB7XG4gICAgICB0aGlzLmFzc2V0ID0gbmV3IHMzX2Fzc2V0cy5Bc3NldChzY29wZSwgJ0FnZW50UnVudGltZUFydGlmYWN0Jywge1xuICAgICAgICBwYXRoOiB0aGlzLnBhdGgsXG4gICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBwZXJtaXNzaW9ucyAob25seSBvbmNlKVxuICAgIGlmICghdGhpcy5ib3VuZCAmJiBydW50aW1lLnJvbGUpIHtcbiAgICAgIGNvbnN0IGJ1Y2tldCA9IHRoaXMuYXNzZXQuYnVja2V0O1xuICAgICAgLy8gRW5zdXJlIHRoZSBwb2xpY3kgaXMgYXBwbGllZCBiZWZvcmUgdGhlIHJ1bnRpbWUgcmVzb3VyY2UgaXMgY3JlYXRlZFxuICAgICAgYnVja2V0LmdyYW50UmVhZChydW50aW1lLnJvbGUpO1xuICAgICAgdGhpcy5ib3VuZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIF9yZW5kZXIoKTogQ2ZuUnVudGltZS5BZ2VudFJ1bnRpbWVBcnRpZmFjdFByb3BlcnR5IHtcbiAgICBpZiAoIXRoaXMuYXNzZXQpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcignQXNzZXROb3RJbml0aWFsaXplZCcsICdBc3NldCBub3QgaW5pdGlhbGl6ZWQuIENhbGwgYmluZCgpIGJlZm9yZSBfcmVuZGVyKCknKTtcbiAgICB9XG5cbiAgICBjb25zdCBzM0NvbmZpZzogYW55ID0ge1xuICAgICAgYnVja2V0OiB0aGlzLmFzc2V0LmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgcHJlZml4OiB0aGlzLmFzc2V0LnMzT2JqZWN0S2V5LFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29kZToge1xuICAgICAgICBzMzogczNDb25maWcsXG4gICAgICB9LFxuICAgICAgcnVudGltZTogdGhpcy5ydW50aW1lLFxuICAgICAgZW50cnlQb2ludDogdGhpcy5lbnRyeXBvaW50LFxuICAgIH0gYXMgYW55O1xuICB9XG59XG5cbmNsYXNzIEltYWdlVXJpQXJ0aWZhY3QgZXh0ZW5kcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyVXJpOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgLy8gVmFsaWRhdGUgRUNSIGNvbnRhaW5lciBVUkkgZm9ybWF0IHBlciBDbG91ZEZvcm1hdGlvbiByZXF1aXJlbWVudHNcbiAgICBjb25zdCBlY3JQYXR0ZXJuID0gL15cXGR7MTJ9XFwuZGtyXFwuZWNyXFwuKFthLXowLTktXSspXFwuYW1hem9uYXdzXFwuY29tXFwvKCg/OlthLXowLTldKyg/OlsuXy1dW2EtejAtOV0rKSpcXC8pKlthLXowLTldKyg/OlsuXy1dW2EtejAtOV0rKSopKFs6QF1cXFMrKSQvO1xuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKGNvbnRhaW5lclVyaSkgJiYgIWVjclBhdHRlcm4udGVzdChjb250YWluZXJVcmkpKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICdJbnZhbGlkRWNyQ29udGFpbmVyVXJpJyxcbiAgICAgICAgYEludmFsaWQgRUNSIGNvbnRhaW5lciBVUkkgZm9ybWF0OiAke2NvbnRhaW5lclVyaX0uIE11c3QgYmUgYW4gRUNSIFVSSToge2FjY291bnR9LmRrci5lY3Iue3JlZ2lvbn0uYW1hem9uYXdzLmNvbS97cmVwb3NpdG9yeX06e3RhZ31gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYmluZChfc2NvcGU6IENvbnN0cnVjdCwgX3J1bnRpbWU6IFJ1bnRpbWUpOiB2b2lkIHtcbiAgICAvLyBObyBwZXJtaXNzaW9ucyBhcmUgZ3JhbnRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdXNpbmcgYSBkaXJlY3QgVVJJLlxuICAgIC8vIFVzZXJzIG11c3QgbWFuYWdlIEVDUiBwdWxsIHBlcm1pc3Npb25zIHNlcGFyYXRlbHkuXG4gIH1cblxuICBwdWJsaWMgX3JlbmRlcigpOiBDZm5SdW50aW1lLkFnZW50UnVudGltZUFydGlmYWN0UHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICBjb250YWluZXJVcmk6IHRoaXMuY29udGFpbmVyVXJpLFxuICAgIH0gYXMgYW55O1xuICB9XG59XG4iXX0=
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bnRpbWUtYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7R0FXRztBQUVILDZDQUEyQztBQUczQyxxREFBcUQ7QUFDckQseUNBQXlDO0FBQ3pDLHVEQUF1RDtBQUN2RCx3REFBc0U7QUFDdEUsNEVBQTREO0FBSTVEOzs7R0FHRztBQUNILElBQVksZ0JBaUJYO0FBakJELFdBQVksZ0JBQWdCO0lBQzFCOztPQUVHO0lBQ0gsK0NBQTJCLENBQUE7SUFDM0I7O09BRUc7SUFDSCwrQ0FBMkIsQ0FBQTtJQUMzQjs7T0FFRztJQUNILCtDQUEyQixDQUFBO0lBQzNCOztPQUVHO0lBQ0gsK0NBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQWpCVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQWlCM0I7QUFzQkQ7OztHQUdHO0FBQ0gsTUFBc0Isb0JBQW9COztJQUN4Qzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxVQUEyQixFQUFFLE1BQWMsUUFBUTtRQUNqRixPQUFPLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztLQUN0QztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQWlCLEVBQUUsVUFBMEMsRUFBRTtRQUNyRixPQUFPLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUMzQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUF1QixFQUFFLE9BQXlCLEVBQUUsVUFBb0I7Ozs7Ozs7Ozs7UUFDM0YsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ3JEO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUF5Qjs7Ozs7Ozs7OztRQUNuRCxPQUFPLElB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SUFBQSxzQkFBRyxFQUFBLHFCQUFxQixFQUFFLHFEQUFxRCxDQUFDLENBQUM7UUFDckgsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFRO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1lBQ3BDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVc7U0FDL0IsQ0FBQztRQUVGLE9BQU87WUFDTCxJQUFJLEVBQUU7Z0JBQ0osRUFBRSxFQUFFLFFBQVE7YUFDYjtZQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDckIsQ0FBQztLQUNWO0NBQ0Y7QUFFRCxNQUFNLGdCQUFpQixTQUFRLG9CQUFvQjtJQUNwQjtJQUE3QixZQUE2QixZQUFvQjtRQUMvQyxLQUFLLEVBQUUsQ0FBQztRQURtQixpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUcvQyxvRUFBb0U7UUFDcEUsTUFBTSxVQUFVLEdBQUcsOEhBQThILENBQUM7UUFDbEosSUFBSSxDQUFDLG1CQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3hFLE1BQU0sSUFBSSxnQ0FBdUIsQ0FDL0IsSUFBQSxzQkFBRyxFQUFBLHdCQUF3QixFQUMzQixxQ0FBcUMsWUFBWSxtRkFBbUYsQ0FDckksQ0FBQztRQUNKLENBQUM7S0FDRjtJQUVNLElBQUksQ0FBQyxNQUFpQixFQUFFLFFBQWlCO0tBRy9DO0lBRU0sT0FBTztRQUNaLE9BQU87WUFDTCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDekIsQ0FBQztLQUNWO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBTdGFjaywgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IENmblJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZSc7XG5pbXBvcnQgdHlwZSAqIGFzIGVjciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGFzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyLWFzc2V0cyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgczNfYXNzZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMy1hc3NldHMnO1xuaW1wb3J0IHsgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9lcnJvcnMnO1xuaW1wb3J0IHsgbGl0IH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBSdW50aW1lIH0gZnJvbSAnLi9ydW50aW1lJztcblxuLyoqXG4gKiBCZWRyb2NrIEFnZW50Q29yZSBydW50aW1lIGVudmlyb25tZW50IGZvciBjb2RlIGV4ZWN1dGlvblxuICogQWxsb3dlZCB2YWx1ZXM6IFBZVEhPTl8zXzEwIHwgUFlUSE9OXzNfMTEgfCBQWVRIT05fM18xMiB8IFBZVEhPTl8zXzEzXG4gKi9cbmV4cG9ydCBlbnVtIEFnZW50Q29yZVJ1bnRpbWUge1xuICAvKipcbiAgICogUHl0aG9uIDMuMTAgcnVudGltZVxuICAgKi9cbiAgUFlUSE9OXzNfMTAgPSAnUFlUSE9OXzNfMTAnLFxuICAvKipcbiAgICogUHl0aG9uIDMuMTEgcnVudGltZVxuICAgKi9cbiAgUFlUSE9OXzNfMTEgPSAnUFlUSE9OXzNfMTEnLFxuICAvKipcbiAgICogUHl0aG9uIDMuMTIgcnVudGltZVxuICAgKi9cbiAgUFlUSE9OXzNfMTIgPSAnUFlUSE9OXzNfMTInLFxuICAvKipcbiAgICogUHl0aG9uIDMuMTMgcnVudGltZVxuICAgKi9cbiAgUFlUSE9OXzNfMTMgPSAnUFlUSE9OXzNfMTMnLFxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIGFuIFMzIGNvZGUgYXNzZXQgZnJvbSBsb2NhbCBmaWxlcyBmb3IgYWdlbnQgcnVudGltZSBhcnRpZmFjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZGVBc3NldE9wdGlvbnMgZXh0ZW5kcyBzM19hc3NldHMuQXNzZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIHBhdGggdG8gdGhlIGNvZGUgYXNzZXRcbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQgZm9yIGV4ZWN1dGluZyB0aGUgY29kZVxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZTogQWdlbnRDb3JlUnVudGltZTtcblxuICAvKipcbiAgICogVGhlIGVudHJ5IHBvaW50IGZvciB0aGUgY29kZSBleGVjdXRpb24sIHNwZWNpZnlpbmcgdGhlIGZ1bmN0aW9uIG9yIG1ldGhvZCB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGNvZGUgcnVuc1xuICAgKi9cbiAgcmVhZG9ubHkgZW50cnlwb2ludDogc3RyaW5nW107XG59XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgYWdlbnQgcnVudGltZSBhcnRpZmFjdHMuXG4gKiBQcm92aWRlcyBtZXRob2RzIHRvIHJlZmVyZW5jZSBjb250YWluZXIgaW1hZ2VzIGZyb20gRUNSIHJlcG9zaXRvcmllcyBvciBsb2NhbCBhc3NldHMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gaW1hZ2UgaW4gYW4gRUNSIHJlcG9zaXRvcnlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUVjclJlcG9zaXRvcnkocmVwb3NpdG9yeTogZWNyLklSZXBvc2l0b3J5LCB0YWc6IHN0cmluZyA9ICdsYXRlc3QnKTogQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICAgIHJldHVybiBuZXcgRWNySW1hZ2UocmVwb3NpdG9yeSwgdGFnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gYWdlbnQgcnVudGltZSBhcnRpZmFjdCB0aGF0J3MgY29uc3RydWN0ZWQgZGlyZWN0bHkgZnJvbSBzb3VyY2VzIG9uIGRpc2tcbiAgICogQHBhcmFtIGRpcmVjdG9yeSBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBEb2NrZXJmaWxlIGlzIHN0b3JlZFxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0byBmdXJ0aGVyIGNvbmZpZ3VyZSB0aGUgc2VsZWN0ZWQgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFzc2V0KGRpcmVjdG9yeTogc3RyaW5nLCBvcHRpb25zOiBhc3NldHMuRG9ja2VySW1hZ2VBc3NldE9wdGlvbnMgPSB7fSk6IEFnZW50UnVudGltZUFydGlmYWN0IHtcbiAgICByZXR1cm4gbmV3IEFzc2V0SW1hZ2UoZGlyZWN0b3J5LCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gYWdlbnQgcnVudGltZSBhcnRpZmFjdCB0aGF0J3MgY29uc3RydWN0ZWQgZGlyZWN0bHkgZnJvbSBhbiBTMyBvYmplY3RcbiAgICogQHBhcmFtIHMzTG9jYXRpb24gVGhlIHNvdXJjZSBjb2RlIGxvY2F0aW9uIGFuZCBjb25maWd1cmF0aW9uIGRldGFpbHMuXG4gICAqIEBwYXJhbSBydW50aW1lIFRoZSBydW50aW1lIGVudmlyb25tZW50IGZvciBleGVjdXRpbmcgdGhlIGNvZGUuIEFsbG93ZWQgdmFsdWVzOiBQWVRIT05fM18xMCB8IFBZVEhPTl8zXzExIHwgUFlUSE9OXzNfMTIgfCBQWVRIT05fM18xM1xuICAgKiBAcGFyYW0gZW50cnlwb2ludCBUaGUgZW50cnkgcG9pbnQgZm9yIHRoZSBjb2RlIGV4ZWN1dGlvbiwgc3BlY2lmeWluZyB0aGUgZnVuY3Rpb24gb3IgbWV0aG9kIHRoYXQgc2hvdWxkIGJlIGludm9rZWQgd2hlbiB0aGUgY29kZSBydW5zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUzMoczNMb2NhdGlvbjogczMuTG9jYXRpb24sIHJ1bnRpbWU6IEFnZW50Q29yZVJ1bnRpbWUsIGVudHJ5cG9pbnQ6IHN0cmluZ1tdKTogQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICAgIHJldHVybiBuZXcgUzNJbWFnZShzM0xvY2F0aW9uLCBydW50aW1lLCBlbnRyeXBvaW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gYWdlbnQgcnVudGltZSBhcnRpZmFjdCB0aGF0J3MgY29uc3RydWN0ZWQgZnJvbSBsb2NhbCBjb2RlIGFzc2V0cyB1cGxvYWRlZCB0byBhIENESy1tYW5hZ2VkIFMzIGJ1Y2tldFxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgY29uZmlndXJpbmcgdGhlIGNvZGUgYXNzZXRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvZGVBc3NldChvcHRpb25zOiBDb2RlQXNzZXRPcHRpb25zKTogQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICAgIHJldHVybiBuZXcgQ29kZUFzc2V0KG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSBhbiBpbWFnZSB1c2luZyBhbiBFQ1IgY29udGFpbmVyIFVSSVxuICAgKlxuICAgKiBVc2UgdGhpcyB3aGVuIHJlZmVyZW5jaW5nIEVDUiBpbWFnZXMgZnJvbSBDbG91ZEZvcm1hdGlvbiBwYXJhbWV0ZXJzIG9yIGNyb3NzLXN0YWNrIHJlZmVyZW5jZXMuXG4gICAqXG4gICAqICoqTm90ZToqKiBObyBJQU0gcGVybWlzc2lvbnMgYXJlIGF1dG9tYXRpY2FsbHkgZ3JhbnRlZC4gWW91IG11c3QgZW5zdXJlIHRoZSBydW50aW1lIGhhc1xuICAgKiBFQ1IgcHVsbCBwZXJtaXNzaW9ucyBmb3IgdGhlIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJVcmkgVGhlIEVDUiBjb250YWluZXIgaW1hZ2UgVVJJIChmb3JtYXQ6IHthY2NvdW50fS5ka3IuZWNyLntyZWdpb259LmFtYXpvbmF3cy5jb20ve3JlcG9zaXRvcnl9Ont0YWd9KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW1hZ2VVcmkoY29udGFpbmVyVXJpOiBzdHJpbmcpOiBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gICAgcmV0dXJuIG5ldyBJbWFnZVVyaUFydGlmYWN0KGNvbnRhaW5lclVyaSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGltYWdlIGlzIHVzZWQgYnkgYSBSdW50aW1lIHRvIGhhbmRsZSBzaWRlIGVmZmVjdHMgbGlrZSBwZXJtaXNzaW9uc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGJpbmQoc2NvcGU6IENvbnN0cnVjdCwgcnVudGltZTogUnVudGltZSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgYXJ0aWZhY3QgY29uZmlndXJhdGlvbiBmb3IgQ2xvdWRGb3JtYXRpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgX3JlbmRlcigpOiBDZm5SdW50aW1lLkFnZW50UnVudGltZUFydGlmYWN0UHJvcGVydHk7XG59XG5cbmNsYXNzIEVjckltYWdlIGV4dGVuZHMgQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICBwcml2YXRlIGJvdW5kID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByZXBvc2l0b3J5OiBlY3IuSVJlcG9zaXRvcnksIHByaXZhdGUgcmVhZG9ubHkgdGFnOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGJpbmQoX3Njb3BlOiBDb25zdHJ1Y3QsIHJ1bnRpbWU6IFJ1bnRpbWUpOiB2b2lkIHtcbiAgICAvLyBIYW5kbGUgcGVybWlzc2lvbnMgKG9ubHkgb25jZSlcbiAgICBpZiAoIXRoaXMuYm91bmQgJiYgcnVudGltZS5yb2xlKSB7XG4gICAgICB0aGlzLnJlcG9zaXRvcnkuZ3JhbnRQdWxsKHJ1bnRpbWUucm9sZSk7XG4gICAgICB0aGlzLmJvdW5kID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgX3JlbmRlcigpOiBDZm5SdW50aW1lLkFnZW50UnVudGltZUFydGlmYWN0UHJvcGVydHkge1xuICAgIC8vIFJldHVybiBjb250YWluZXIgY29uZmlndXJhdGlvbiBkaXJlY3RseSBhcyBleHBlY3RlZCBieSB0aGUgcnVudGltZVxuICAgIC8vIFRoZSBydW50aW1lIHdyYXBzIHRoaXMgaW4gY29udGFpbmVyQ29uZmlndXJhdGlvblxuICAgIHJldHVybiB7XG4gICAgICBjb250YWluZXJVcmk6IHRoaXMucmVwb3NpdG9yeS5yZXBvc2l0b3J5VXJpRm9yVGFnKHRoaXMudGFnKSxcbiAgICB9IGFzIGFueTtcbiAgfVxufVxuXG5jbGFzcyBBc3NldEltYWdlIGV4dGVuZHMgQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICBwcml2YXRlIGFzc2V0PzogYXNzZXRzLkRvY2tlckltYWdlQXNzZXQ7XG4gIHByaXZhdGUgYm91bmQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRpcmVjdG9yeTogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IGFzc2V0cy5Eb2NrZXJJbWFnZUFzc2V0T3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIHJ1bnRpbWU6IFJ1bnRpbWUpOiB2b2lkIHtcbiAgICAvLyBDcmVhdGUgdGhlIGFzc2V0IGlmIG5vdCBhbHJlYWR5IGNyZWF0ZWRcbiAgICBpZiAoIXRoaXMuYXNzZXQpIHtcbiAgICAgIHRoaXMuYXNzZXQgPSBuZXcgYXNzZXRzLkRvY2tlckltYWdlQXNzZXQoc2NvcGUsICdBZ2VudFJ1bnRpbWVBcnRpZmFjdCcsIHtcbiAgICAgICAgZGlyZWN0b3J5OiB0aGlzLmRpcmVjdG9yeSxcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gR3JhbnQgcGVybWlzc2lvbnMgKG9ubHkgb25jZSlcbiAgICBpZiAoIXRoaXMuYm91bmQpIHtcbiAgICAgIHRoaXMuYXNzZXQucmVwb3NpdG9yeS5ncmFudFB1bGwocnVudGltZS5yb2xlKTtcbiAgICAgIHRoaXMuYm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBfcmVuZGVyKCk6IENmblJ1bnRpbWUuQWdlbnRSdW50aW1lQXJ0aWZhY3RQcm9wZXJ0eSB7XG4gICAgaWYgKCF0aGlzLmFzc2V0KSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YEFzc2V0Tm90SW5pdGlhbGl6ZWRgLCAnQXNzZXQgbm90IGluaXRpYWxpemVkLiBDYWxsIGJpbmQoKSBiZWZvcmUgX3JlbmRlcigpJyk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGNvbnRhaW5lciBjb25maWd1cmF0aW9uIGRpcmVjdGx5IGFzIGV4cGVjdGVkIGJ5IHRoZSBydW50aW1lXG4gICAgLy8gVGhlIHJ1bnRpbWUgd3JhcHMgdGhpcyBpbiBjb250YWluZXJDb25maWd1cmF0aW9uXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRhaW5lclVyaTogdGhpcy5hc3NldC5pbWFnZVVyaSxcbiAgICB9IGFzIGFueTtcbiAgfVxufVxuXG5jbGFzcyBTM0ltYWdlIGV4dGVuZHMgQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICBwcml2YXRlIGJvdW5kID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzM0xvY2F0aW9uOiBzMy5Mb2NhdGlvbiwgcHJpdmF0ZSByZWFkb25seSBydW50aW1lOiBBZ2VudENvcmVSdW50aW1lLCBwcml2YXRlIHJlYWRvbmx5IGVudHJ5cG9pbnQ6IHN0cmluZ1tdKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIHJ1bnRpbWU6IFJ1bnRpbWUpOiB2b2lkIHtcbiAgICAvLyBIYW5kbGUgcGVybWlzc2lvbnMgKG9ubHkgb25jZSlcbiAgICBpZiAoIXRoaXMuYm91bmQgJiYgcnVudGltZS5yb2xlKSB7XG4gICAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLnMzTG9jYXRpb24uYnVja2V0TmFtZSkpIHtcbiAgICAgICAgU3RhY2sub2Yoc2NvcGUpLnJlc29sdmUodGhpcy5zM0xvY2F0aW9uLmJ1Y2tldE5hbWUpO1xuICAgICAgfVxuICAgICAgY29uc3QgYnVja2V0ID0gczMuQnVja2V0LmZyb21CdWNrZXROYW1lKFxuICAgICAgICBzY29wZSxcbiAgICAgICAgYCR7dGhpcy5zM0xvY2F0aW9uLmJ1Y2tldE5hbWV9Q29kZUFyY2hpdmVgLFxuICAgICAgICB0aGlzLnMzTG9jYXRpb24uYnVja2V0TmFtZSxcbiAgICAgICk7XG4gICAgICAvLyBFbnN1cmUgdGhlIHBvbGljeSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYnJvd3NlciByZXNvdXJjZSBpcyBjcmVhdGVkXG4gICAgICBidWNrZXQuZ3JhbnRSZWFkKHJ1bnRpbWUucm9sZSk7XG4gICAgICB0aGlzLmJvdW5kID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgX3JlbmRlcigpOiBDZm5SdW50aW1lLkFnZW50UnVudGltZUFydGlmYWN0UHJvcGVydHkge1xuICAgIGNvbnN0IHMzQ29uZmlnOiBhbnkgPSB7XG4gICAgICBidWNrZXQ6IHRoaXMuczNMb2NhdGlvbi5idWNrZXROYW1lLFxuICAgICAgcHJlZml4OiB0aGlzLnMzTG9jYXRpb24ub2JqZWN0S2V5LFxuICAgIH07XG4gICAgaWYgKHRoaXMuczNMb2NhdGlvbi5vYmplY3RWZXJzaW9uKSB7XG4gICAgICBzM0NvbmZpZy52ZXJzaW9uSWQgPSB0aGlzLnMzTG9jYXRpb24ub2JqZWN0VmVyc2lvbjtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6IHtcbiAgICAgICAgczM6IHMzQ29uZmlnLFxuICAgICAgfSxcbiAgICAgIHJ1bnRpbWU6IHRoaXMucnVudGltZSxcbiAgICAgIGVudHJ5UG9pbnQ6IHRoaXMuZW50cnlwb2ludCxcbiAgICB9IGFzIGFueTtcbiAgfVxufVxuXG5jbGFzcyBDb2RlQXNzZXQgZXh0ZW5kcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIHByaXZhdGUgYXNzZXQ/OiBzM19hc3NldHMuQXNzZXQ7XG4gIHByaXZhdGUgYm91bmQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcnVudGltZTogQWdlbnRDb3JlUnVudGltZTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbnRyeXBvaW50OiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBzM19hc3NldHMuQXNzZXRPcHRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDb2RlQXNzZXRPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7IHBhdGgsIHJ1bnRpbWUsIGVudHJ5cG9pbnQsIC4uLm9wdGlvbnMgfSA9IHByb3BzO1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy5ydW50aW1lID0gcnVudGltZTtcbiAgICB0aGlzLmVudHJ5cG9pbnQgPSBlbnRyeXBvaW50O1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgYmluZChzY29wZTogQ29uc3RydWN0LCBydW50aW1lOiBSdW50aW1lKTogdm9pZCB7XG4gICAgLy8gQ3JlYXRlIHRoZSBhc3NldCBpZiBub3QgYWxyZWFkeSBjcmVhdGVkXG4gICAgaWYgKCF0aGlzLmFzc2V0KSB7XG4gICAgICB0aGlzLmFzc2V0ID0gbmV3IHMzX2Fzc2V0cy5Bc3NldChzY29wZSwgJ0FnZW50UnVudGltZUFydGlmYWN0Jywge1xuICAgICAgICBwYXRoOiB0aGlzLnBhdGgsXG4gICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBwZXJtaXNzaW9ucyAob25seSBvbmNlKVxuICAgIGlmICghdGhpcy5ib3VuZCAmJiBydW50aW1lLnJvbGUpIHtcbiAgICAgIGNvbnN0IGJ1Y2tldCA9IHRoaXMuYXNzZXQuYnVja2V0O1xuICAgICAgLy8gRW5zdXJlIHRoZSBwb2xpY3kgaXMgYXBwbGllZCBiZWZvcmUgdGhlIHJ1bnRpbWUgcmVzb3VyY2UgaXMgY3JlYXRlZFxuICAgICAgYnVja2V0LmdyYW50UmVhZChydW50aW1lLnJvbGUpO1xuICAgICAgdGhpcy5ib3VuZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIF9yZW5kZXIoKTogQ2ZuUnVudGltZS5BZ2VudFJ1bnRpbWVBcnRpZmFjdFByb3BlcnR5IHtcbiAgICBpZiAoIXRoaXMuYXNzZXQpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgQXNzZXROb3RJbml0aWFsaXplZGAsICdBc3NldCBub3QgaW5pdGlhbGl6ZWQuIENhbGwgYmluZCgpIGJlZm9yZSBfcmVuZGVyKCknKTtcbiAgICB9XG5cbiAgICBjb25zdCBzM0NvbmZpZzogYW55ID0ge1xuICAgICAgYnVja2V0OiB0aGlzLmFzc2V0LmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgcHJlZml4OiB0aGlzLmFzc2V0LnMzT2JqZWN0S2V5LFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29kZToge1xuICAgICAgICBzMzogczNDb25maWcsXG4gICAgICB9LFxuICAgICAgcnVudGltZTogdGhpcy5ydW50aW1lLFxuICAgICAgZW50cnlQb2ludDogdGhpcy5lbnRyeXBvaW50LFxuICAgIH0gYXMgYW55O1xuICB9XG59XG5cbmNsYXNzIEltYWdlVXJpQXJ0aWZhY3QgZXh0ZW5kcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyVXJpOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgLy8gVmFsaWRhdGUgRUNSIGNvbnRhaW5lciBVUkkgZm9ybWF0IHBlciBDbG91ZEZvcm1hdGlvbiByZXF1aXJlbWVudHNcbiAgICBjb25zdCBlY3JQYXR0ZXJuID0gL15cXGR7MTJ9XFwuZGtyXFwuZWNyXFwuKFthLXowLTktXSspXFwuYW1hem9uYXdzXFwuY29tXFwvKCg/OlthLXowLTldKyg/OlsuXy1dW2EtejAtOV0rKSpcXC8pKlthLXowLTldKyg/OlsuXy1dW2EtejAtOV0rKSopKFs6QF1cXFMrKSQvO1xuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKGNvbnRhaW5lclVyaSkgJiYgIWVjclBhdHRlcm4udGVzdChjb250YWluZXJVcmkpKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGxpdGBJbnZhbGlkRWNyQ29udGFpbmVyVXJpYCxcbiAgICAgICAgYEludmFsaWQgRUNSIGNvbnRhaW5lciBVUkkgZm9ybWF0OiAke2NvbnRhaW5lclVyaX0uIE11c3QgYmUgYW4gRUNSIFVSSToge2FjY291bnR9LmRrci5lY3Iue3JlZ2lvbn0uYW1hem9uYXdzLmNvbS97cmVwb3NpdG9yeX06e3RhZ31gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYmluZChfc2NvcGU6IENvbnN0cnVjdCwgX3J1bnRpbWU6IFJ1bnRpbWUpOiB2b2lkIHtcbiAgICAvLyBObyBwZXJtaXNzaW9ucyBhcmUgZ3JhbnRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdXNpbmcgYSBkaXJlY3QgVVJJLlxuICAgIC8vIFVzZXJzIG11c3QgbWFuYWdlIEVDUiBwdWxsIHBlcm1pc3Npb25zIHNlcGFyYXRlbHkuXG4gIH1cblxuICBwdWJsaWMgX3JlbmRlcigpOiBDZm5SdW50aW1lLkFnZW50UnVudGltZUFydGlmYWN0UHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICBjb250YWluZXJVcmk6IHRoaXMuY29udGFpbmVyVXJpLFxuICAgIH0gYXMgYW55O1xuICB9XG59XG4iXX0=
@@ -6,6 +6,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
6
6
  const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
7
7
  const iam = require("aws-cdk-lib/aws-iam");
8
8
  const errors_1 = require("aws-cdk-lib/core/lib/errors");
9
+ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
9
10
  const perms_1 = require("./perms");
10
11
  /******************************************************************************
11
12
  * Base Class
@@ -14,7 +15,7 @@ const perms_1 = require("./perms");
14
15
  * Base class for Agent Runtime
15
16
  */
16
17
  class RuntimeBase extends aws_cdk_lib_1.Resource {
17
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeBase", version: "2.246.0-alpha.0" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeBase", version: "2.248.0-alpha.0" };
18
19
  /**
19
20
  * A reference to a Runtime resource.
20
21
  */
@@ -30,7 +31,7 @@ class RuntimeBase extends aws_cdk_lib_1.Resource {
30
31
  */
31
32
  get connections() {
32
33
  if (!this._connections) {
33
- throw new errors_1.ValidationError('VpcNotConfigured', 'Cannot manage network access without configuring a VPC', this);
34
+ throw new errors_1.ValidationError((0, helpers_internal_1.lit) `VpcNotConfigured`, 'Cannot manage network access without configuring a VPC', this);
34
35
  }
35
36
  return this._connections;
36
37
  }
@@ -202,4 +203,4 @@ class RuntimeBase extends aws_cdk_lib_1.Resource {
202
203
  }
203
204
  }
204
205
  exports.RuntimeBase = RuntimeBase;
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicnVudGltZS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFjQSw2Q0FBdUM7QUFPdkMsK0RBR29DO0FBRXBDLDJDQUEyQztBQUMzQyx3REFBOEQ7QUFFOUQsbUNBQTBFO0FBK0oxRTs7K0VBRStFO0FBRS9FOztHQUVHO0FBQ0gsTUFBc0IsV0FBWSxTQUFRLHNCQUFROztJQVloRDs7T0FFRztJQUNILElBQVcsVUFBVTtRQUNuQixPQUFPO1lBQ0wsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtTQUN0QyxDQUFDO0tBQ0g7SUFFRDs7O09BR0c7SUFDSCxJQUFXLFdBQVc7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksd0JBQWUsQ0FBQyxrQkFBa0IsRUFBRSx3REFBd0QsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0tBQzFCO0lBRUQ7Ozs7T0FJRztJQUNPLFlBQVksQ0FBOEI7SUFFcEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUF1QixFQUFFO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ3pCO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxLQUFLLENBQUMsT0FBaUIsRUFBRSxTQUFtQjtRQUNqRCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNsQixPQUFPO1lBQ1AsWUFBWSxFQUFFLFNBQVM7U0FDeEIsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7Ozs7T0FLRztJQUNJLGVBQWUsQ0FBQyxTQUE4QjtRQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFD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InNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgSVJlc291cmNlLCBSZXNvdXJjZVByb3BzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IElSdW50aW1lUmVmLCBSdW50aW1lUmVmZXJlbmNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0IHR5cGUge1xuICBEaW1lbnNpb25zTWFwLFxuICBNZXRyaWNPcHRpb25zLFxuICBNZXRyaWNQcm9wcyxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHtcbiAgTWV0cmljLFxuICBTdGF0cyxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHR5cGUgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFJVTlRJTUVfSU5WT0tFX1BFUk1TLCBSVU5USU1FX0lOVk9LRV9VU0VSX1BFUk1TIH0gZnJvbSAnLi9wZXJtcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2VcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIEFnZW50IFJ1bnRpbWUgcmVzb3VyY2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUJlZHJvY2tBZ2VudFJ1bnRpbWUgZXh0ZW5kcyBJUmVzb3VyY2UsIGlhbS5JR3JhbnRhYmxlLCBlYzIuSUNvbm5lY3RhYmxlLCBJUnVudGltZVJlZiB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBhZ2VudCBydW50aW1lIHJlc291cmNlXG4gICAqIC0gRm9ybWF0IGBhcm46JHtQYXJ0aXRpb259OmJlZHJvY2stYWdlbnRjb3JlOiR7UmVnaW9ufToke0FjY291bnR9OnJ1bnRpbWUvJHtSdW50aW1lSWR9YFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqIEBleGFtcGxlIFwiYXJuOmF3czpiZWRyb2NrLWFnZW50Y29yZTp1cy13ZXN0LTI6MTIzNDU2Nzg5MDEyOnJ1bnRpbWUvcnVudGltZS1hYmMxMjNcIlxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRSdW50aW1lQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgYWdlbnQgcnVudGltZVxuICAgKiBAYXR0cmlidXRlXG4gICAqIEBleGFtcGxlIFwicnVudGltZS1hYmMxMjNcIlxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRSdW50aW1lSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGFnZW50IHJ1bnRpbWVcbiAgICovXG4gIHJlYWRvbmx5IGFnZW50UnVudGltZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIHRoYXQgcHJvdmlkZXMgcGVybWlzc2lvbnMgZm9yIHRoZSBhZ2VudCBydW50aW1lXG4gICAqXG4gICAqL1xuICByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGFnZW50UnVudGltZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUgYWdlbnQgcnVudGltZVxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRTdGF0dXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGF0IHdoaWNoIHRoZSBydW50aW1lIHdhcyBjcmVhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQGV4YW1wbGUgXCIyMDI0LTAxLTE1VDEwOjMwOjAwWlwiXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGF0IHdoaWNoIHRoZSBydW50aW1lIHdhcyBsYXN0IHVwZGF0ZWRcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAZXhhbXBsZSBcIjIwMjQtMDEtMTVUMTQ6NDU6MDBaXCJcbiAgICovXG4gIHJlYWRvbmx5IGxhc3RVcGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIE1ldHJpY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgbWV0cmljKG1ldHJpY05hbWU6IHN0cmluZywgZGltZW5zaW9uczogRGltZW5zaW9uc01hcCwgcHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIGludm9jYXRpb25zIGZvciB0aGlzIGFnZW50IHJ1bnRpbWUuXG4gICAqL1xuICBtZXRyaWNJbnZvY2F0aW9ucyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSB0b3RhbCBudW1iZXIgb2YgaW52b2NhdGlvbnMgYWNyb3NzIGFsbCByZXNvdXJjZXMuXG4gICAqL1xuICBtZXRyaWNJbnZvY2F0aW9uc0FnZ3JlZ2F0ZWQocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHRocm90dGxlZCByZXF1ZXN0cyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgbWV0cmljVGhyb3R0bGVzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBzeXN0ZW0gZXJyb3JzIGZvciB0aGlzIGFnZW50IHJ1bnRpbWUuXG4gICAqL1xuICBtZXRyaWNTeXN0ZW1FcnJvcnMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHVzZXIgZXJyb3JzIGZvciB0aGlzIGFnZW50IHJ1bnRpbWUuXG4gICAqL1xuICBtZXRyaWNVc2VyRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIG1lYXN1cmluZyB0aGUgbGF0ZW5jeSBvZiByZXF1ZXN0cyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgbWV0cmljTGF0ZW5jeShwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSB0b3RhbCBudW1iZXIgb2YgZXJyb3JzIChzeXN0ZW0gKyB1c2VyKSBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgbWV0cmljVG90YWxFcnJvcnMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGFnZW50IHNlc3Npb25zIGZvciB0aGlzIGFnZW50IHJ1bnRpbWUuXG4gICAqL1xuICBtZXRyaWNTZXNzaW9uQ291bnQocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIHNlc3Npb25zIGFjcm9zcyBhbGwgcmVzb3VyY2VzLlxuICAgKi9cbiAgbWV0cmljU2Vzc2lvbnNBZ2dyZWdhdGVkKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gR3JhbnQgTWV0aG9kc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogR3JhbnQgdGhlIHJ1bnRpbWUgc3BlY2lmaWMgYWN0aW9ucyBvbiBBV1MgcmVzb3VyY2VzXG4gICAqXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBhY3Rpb25zIHRvIGdyYW50XG4gICAqIEBwYXJhbSByZXNvdXJjZXMgVGhlIHJlc291cmNlIEFSTnMgdG8gZ3JhbnQgYWNjZXNzIHRvXG4gICAqIEByZXR1cm5zIFRoZSBHcmFudCBvYmplY3QgZm9yIGNoYWluaW5nXG4gICAqL1xuICBncmFudChhY3Rpb25zOiBzdHJpbmdbXSwgcmVzb3VyY2VzOiBzdHJpbmdbXSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogQWRkcyBhIHBvbGljeSBzdGF0ZW1lbnQgdG8gdGhlIHJ1bnRpbWUncyBleGVjdXRpb24gcm9sZVxuICAgKlxuICAgKiBAcGFyYW0gc3RhdGVtZW50IFRoZSBJQU0gcG9saWN5IHN0YXRlbWVudCB0byBhZGRcbiAgICogQHJldHVybnMgVGhlIHJ1bnRpbWUgaW5zdGFuY2UgZm9yIGNoYWluaW5nXG4gICAqL1xuICBhZGRUb1JvbGVQb2xpY3koc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50KTogSUJlZHJvY2tBZ2VudFJ1bnRpbWU7XG5cbiAgLyoqXG4gICAqIFBlcm1pdHMgYW4gSUFNIHByaW5jaXBhbCB0byBpbnZva2UgdGhpcyBydW50aW1lXG4gICAqIEdyYW50cyB0aGUgYmVkcm9jay1hZ2VudGNvcmU6SW52b2tlQWdlbnRSdW50aW1lIHBlcm1pc3Npb25cbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbCB0byBncmFudCBhY2Nlc3MgdG9cbiAgICovXG4gIGdyYW50SW52b2tlUnVudGltZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogUGVybWl0cyBhbiBJQU0gcHJpbmNpcGFsIHRvIGludm9rZSB0aGlzIHJ1bnRpbWUgb24gYmVoYWxmIG9mIGEgdXNlclxuICAgKiBHcmFudHMgdGhlIGJlZHJvY2stYWdlbnRjb3JlOkludm9rZUFnZW50UnVudGltZUZvclVzZXIgcGVybWlzc2lvblxuICAgKiBSZXF1aXJlZCB3aGVuIHVzaW5nIHRoZSBYLUFtem4tQmVkcm9jay1BZ2VudENvcmUtUnVudGltZS1Vc2VyLUlkIGhlYWRlclxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IGFjY2VzcyB0b1xuICAgKi9cbiAgZ3JhbnRJbnZva2VSdW50aW1lRm9yVXNlcihncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogUGVybWl0cyBhbiBJQU0gcHJpbmNpcGFsIHRvIGludm9rZSB0aGlzIHJ1bnRpbWUgYm90aCBkaXJlY3RseSBhbmQgb24gYmVoYWxmIG9mIHVzZXJzXG4gICAqIEdyYW50cyBib3RoIGJlZHJvY2stYWdlbnRjb3JlOkludm9rZUFnZW50UnVudGltZSBhbmQgYmVkcm9jay1hZ2VudGNvcmU6SW52b2tlQWdlbnRSdW50aW1lRm9yVXNlciBwZXJtaXNzaW9uc1xuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IGFjY2VzcyB0b1xuICAgKi9cbiAgZ3JhbnRJbnZva2UoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlIENsYXNzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgQWdlbnQgUnVudGltZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUnVudGltZUJhc2UgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElCZWRyb2NrQWdlbnRSdW50aW1lIHtcbiAgLy8gQWJzdHJhY3QgcHJvcGVydGllc1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYWdlbnRSdW50aW1lQXJuOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhZ2VudFJ1bnRpbWVJZDogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYWdlbnRSdW50aW1lTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYWdlbnRSdW50aW1lVmVyc2lvbj86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGFnZW50U3RhdHVzPzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgY3JlYXRlZEF0Pzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgbGFzdFVwZGF0ZWRBdD86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGdyYW50UHJpbmNpcGFsOiBpYW0uSVByaW5jaXBhbDtcblxuICAvKipcbiAgICogQSByZWZlcmVuY2UgdG8gYSBSdW50aW1lIHJlc291cmNlLlxuICAgKi9cbiAgcHVibGljIGdldCBydW50aW1lUmVmKCk6IFJ1bnRpbWVSZWZlcmVuY2Uge1xuICAgIHJldHVybiB7XG4gICAgICBhZ2VudFJ1bnRpbWVJZDogdGhpcy5hZ2VudFJ1bnRpbWVJZCxcbiAgICAgIGFnZW50UnVudGltZUFybjogdGhpcy5hZ2VudFJ1bnRpbWVBcm4sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBhY2Nlc3NvciBmb3IgdGhlIENvbm5lY3Rpb25zIG9iamVjdCB0aGF0IHdpbGwgZmFpbCBpZiB0aGlzIFJ1bnRpbWUgZG9lcyBub3QgaGF2ZSBhIFZQQ1xuICAgKiBjb25maWd1cmVkLlxuICAgKi9cbiAgcHVibGljIGdldCBjb25uZWN0aW9ucygpOiBlYzIuQ29ubmVjdGlvbnMge1xuICAgIGlmICghdGhpcy5fY29ubmVjdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1ZwY05vdENvbmZpZ3VyZWQnLCAnQ2Fubm90IG1hbmFnZSBuZXR3b3JrIGFjY2VzcyB3aXRob3V0IGNvbmZpZ3VyaW5nIGEgVlBDJywgdGhpcyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYWN0dWFsIENvbm5lY3Rpb25zIG9iamVjdCBmb3IgdGhpcyBSdW50aW1lLiBUaGlzIG1heSBiZSB1bnNldCBpbiB0aGUgZXZlbnQgdGhhdCBhIFZQQyBoYXMgbm90XG4gICAqIGJlZW4gY29uZmlndXJlZC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgX2Nvbm5lY3Rpb25zOiBlYzIuQ29ubmVjdGlvbnMgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJlc291cmNlUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBydW50aW1lIHNwZWNpZmljIGFjdGlvbnMgb24gQVdTIHJlc291cmNlc1xuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGFjdGlvbnMgdG8gZ3JhbnRcbiAgICogQHBhcmFtIHJlc291cmNlcyBUaGUgcmVzb3VyY2UgQVJOcyB0byBncmFudCBhY2Nlc3MgdG9cbiAgICogQHJldHVybnMgVGhlIEdyYW50IG9iamVjdCBmb3IgY2hhaW5pbmdcbiAgICovXG4gIHB1YmxpYyBncmFudChhY3Rpb25zOiBzdHJpbmdbXSwgcmVzb3VyY2VzOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiB0aGlzLnJvbGUsXG4gICAgICBhY3Rpb25zLFxuICAgICAgcmVzb3VyY2VBcm5zOiByZXNvdXJjZXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHBvbGljeSBzdGF0ZW1lbnQgdG8gdGhlIHJ1bnRpbWUncyBleGVjdXRpb24gcm9sZVxuICAgKlxuICAgKiBAcGFyYW0gc3RhdGVtZW50IFRoZSBJQU0gcG9saWN5IHN0YXRlbWVudCB0byBhZGRcbiAgICogQHJldHVybnMgVGhlIHJ1bnRpbWUgaW5zdGFuY2UgZm9yIGNoYWluaW5nXG4gICAqL1xuICBwdWJsaWMgYWRkVG9Sb2xlUG9saWN5KHN0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCk6IElCZWRyb2NrQWdlbnRSdW50aW1lIHtcbiAgICB0aGlzLnJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3koc3RhdGVtZW50KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJtaXRzIGFuIElBTSBwcmluY2lwYWwgdG8gaW52b2tlIHRoaXMgcnVudGltZVxuICAgKiBHcmFudHMgdGhlIGJlZHJvY2stYWdlbnRjb3JlOkludm9rZUFnZW50UnVudGltZSBwZXJtaXNzaW9uXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IGFjY2VzcyB0b1xuICAgKi9cbiAgcHVibGljIGdyYW50SW52b2tlUnVudGltZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9uczogUlVOVElNRV9JTlZPS0VfUEVSTVMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLnJ1bnRpbWVSZWYuYWdlbnRSdW50aW1lQXJuLCBgJHt0aGlzLnJ1bnRpbWVSZWYuYWdlbnRSdW50aW1lQXJufS8qYF0sIC8vICogaXMgbmVlZGVkIGJlY2F1c2UgaXQgaW52b2tlIHRoZSBlbmRwb2ludCBhcyBzdWJyZXNvdXJjZVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcm1pdHMgYW4gSUFNIHByaW5jaXBhbCB0byBpbnZva2UgdGhpcyBydW50aW1lIG9uIGJlaGFsZiBvZiBhIHVzZXJcbiAgICogR3JhbnRzIHRoZSBiZWRyb2NrLWFnZW50Y29yZTpJbnZva2VBZ2VudFJ1bnRpbWVGb3JVc2VyIHBlcm1pc3Npb25cbiAgICogUmVxdWlyZWQgd2hlbiB1c2luZyB0aGUgWC1BbXpuLUJlZHJvY2stQWdlbnRDb3JlLVJ1bnRpbWUtVXNlci1JZCBoZWFkZXJcbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWwgdG8gZ3JhbnQgYWNjZXNzIHRvXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRJbnZva2VSdW50aW1lRm9yVXNlcihncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9uczogUlVOVElNRV9JTlZPS0VfVVNFUl9QRVJNUyxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMucnVudGltZVJlZi5hZ2VudFJ1bnRpbWVBcm4sIGAke3RoaXMucnVudGltZVJlZi5hZ2VudFJ1bnRpbWVBcm59LypgXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJtaXRzIGFuIElBTSBwcmluY2lwYWwgdG8gaW52b2tlIHRoaXMgcnVudGltZSBib3RoIGRpcmVjdGx5IGFuZCBvbiBiZWhhbGYgb2YgdXNlcnNcbiAgICogR3JhbnRzIGJvdGggYmVkcm9jay1hZ2VudGNvcmU6SW52b2tlQWdlbnRSdW50aW1lIGFuZCBiZWRyb2NrLWFnZW50Y29yZTpJbnZva2VBZ2VudFJ1bnRpbWVGb3JVc2VyIHBlcm1pc3Npb25zXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IGFjY2VzcyB0b1xuICAgKi9cbiAgcHVibGljIGdyYW50SW52b2tlKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiBbLi4uUlVOVElNRV9JTlZPS0VfUEVSTVMsIC4uLlJVTlRJTUVfSU5WT0tFX1VTRVJfUEVSTVNdLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5ydW50aW1lUmVmLmFnZW50UnVudGltZUFybiwgYCR7dGhpcy5ydW50aW1lUmVmLmFnZW50UnVudGltZUFybn0vKmBdLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIE1ldHJpY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgbWV0cmljIHdpbGwgYmUgY2FsY3VsYXRlZCBhcyBhIHN1bSBvdmVyIGEgcGVyaW9kIG9mIDUgbWludXRlcy5cbiAgICogWW91IGNhbiBjdXN0b21pemUgdGhpcyBieSB1c2luZyB0aGUgYHN0YXRpc3RpY2AgYW5kIGBwZXJpb2RgIHByb3BlcnRpZXMuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljKG1ldHJpY05hbWU6IHN0cmluZywgZGltZW5zaW9uczogRGltZW5zaW9uc01hcCwgcHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICBjb25zdCBtZXRyaWNQcm9wczogTWV0cmljUHJvcHMgPSB7XG4gICAgICBuYW1lc3BhY2U6ICdBV1MvQmVkcm9jay1BZ2VudENvcmUnLFxuICAgICAgbWV0cmljTmFtZSxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgLi4uZGltZW5zaW9ucywgUmVzb3VyY2U6IHRoaXMucnVudGltZVJlZi5hZ2VudFJ1bnRpbWVBcm4gfSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJlTWV0cmljKG1ldHJpY1Byb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIGludm9jYXRpb25zIGZvciB0aGlzIGFnZW50IHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljSW52b2NhdGlvbnMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ0ludm9jYXRpb25zJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSB0b3RhbCBudW1iZXIgb2YgaW52b2NhdGlvbnMgYWNyb3NzIGFsbCByZXNvdXJjZXMuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljSW52b2NhdGlvbnNBZ2dyZWdhdGVkKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdJbnZvY2F0aW9ucycsIHsgUmVzb3VyY2U6ICdBbGwnIH0sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgdGhyb3R0bGVkIHJlcXVlc3RzIGZvciB0aGlzIGFnZW50IHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljVGhyb3R0bGVzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdUaHJvdHRsZXMnLCB7fSwgeyBzdGF0aXN0aWM6IFN0YXRzLlNVTSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBzeXN0ZW0gZXJyb3JzIGZvciB0aGlzIGFnZW50IHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljU3lzdGVtRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdTeXN0ZW1FcnJvcnMnLCB7fSwgeyBzdGF0aXN0aWM6IFN0YXRzLlNVTSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiB1c2VyIGVycm9ycyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1VzZXJFcnJvcnMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ1VzZXJFcnJvcnMnLCB7fSwgeyBzdGF0aXN0aWM6IFN0YXRzLlNVTSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIG1lYXN1cmluZyB0aGUgbGF0ZW5jeSBvZiByZXF1ZXN0cyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKlxuICAgKiBUaGUgbGF0ZW5jeSBtZXRyaWMgcmVwcmVzZW50cyB0aGUgdG90YWwgdGltZSBlbGFwc2VkIGJldHdlZW4gcmVjZWl2aW5nIHRoZSByZXF1ZXN0XG4gICAqIGFuZCBzZW5kaW5nIHRoZSBmaW5hbCByZXNwb25zZSB0b2tlbiwgcmVwcmVzZW50aW5nIGNvbXBsZXRlIGVuZC10by1lbmQgcHJvY2Vzc2luZyB0aW1lLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0xhdGVuY3kocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ0xhdGVuY3knLCB7fSwgeyBzdGF0aXN0aWM6IFN0YXRzLkFWRVJBR0UsIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSB0b3RhbCBudW1iZXIgb2YgZXJyb3JzIChzeXN0ZW0gKyB1c2VyKSBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1RvdGFsRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdUb3RhbEVycm9ycycsIHt9LCB7IHN0YXRpc3RpYzogU3RhdHMuU1VNLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGFnZW50IHNlc3Npb25zIGZvciB0aGlzIGFnZW50IHJ1bnRpbWUuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljU2Vzc2lvbkNvdW50KHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdTZXNzaW9uQ291bnQnLCB7fSwgeyBzdGF0aXN0aWM6IFN0YXRzLlNVTSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIHRvdGFsIG51bWJlciBvZiBzZXNzaW9ucyBhY3Jvc3MgYWxsIHJlc291cmNlcy5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNTZXNzaW9uc0FnZ3JlZ2F0ZWQocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ1Nlc3Npb25zJywgeyBSZXNvdXJjZTogJ0FsbCcgfSwgeyBzdGF0aXN0aWM6IFN0YXRzLlNVTSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgbWV0aG9kIHRvIGNyZWF0ZSBhIG1ldHJpYy5cbiAgICovXG4gIHByaXZhdGUgY29uZmlndXJlTWV0cmljKHByb3BzOiBNZXRyaWNQcm9wcykge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcmVnaW9uOiBwcm9wcz8ucmVnaW9uID8/IHRoaXMuc3RhY2sucmVnaW9uLFxuICAgICAgYWNjb3VudDogcHJvcHM/LmFjY291bnQgPz8gdGhpcy5zdGFjay5hY2NvdW50LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQXR0cmlidXRlcyBmb3IgaW1wb3J0aW5nIGFuIGV4aXN0aW5nIEFnZW50IFJ1bnRpbWVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2VudFJ1bnRpbWVBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGFnZW50IHJ1bnRpbWVcbiAgICovXG4gIHJlYWRvbmx5IGFnZW50UnVudGltZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGFnZW50IHJ1bnRpbWVcbiAgICovXG4gIHJlYWRvbmx5IGFnZW50UnVudGltZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqL1xuICByZWFkb25seSBhZ2VudFJ1bnRpbWVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSBBUk5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGFnZW50IHJ1bnRpbWVcbiAgICogV2hlbiBpbXBvcnRpbmcgYSBydW50aW1lIGFuZCB0aGlzIGlzIG5vdCBzcGVjaWZpZWQgb3IgdW5kZWZpbmVkLCBlbmRwb2ludHMgY3JlYXRlZCBvbiB0aGlzIHJ1bnRpbWVcbiAgICogd2lsbCBwb2ludCB0byB2ZXJzaW9uIFwiMVwiIHVubGVzcyBleHBsaWNpdGx5IG92ZXJyaWRkZW4uXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBhZ2VudFJ1bnRpbWVWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGFnZW50IHJ1bnRpbWVcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN1cml0eSBncm91cHMgZm9yIHRoaXMgcnVudGltZSwgaWYgaW4gYSBWUEMuXG4gICAqIEBkZWZhdWx0IC0gQnkgZGVmYXVsdCwgdGhlIHJ1bnRpbWUgaXMgbm90IGluIGEgVlBDLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM/OiBlYzIuSVNlY3VyaXR5R3JvdXBbXTtcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqIEBkZWZhdWx0IC0gU3RhdHVzIG5vdCBhdmFpbGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGFnZW50U3RhdHVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBhdCB3aGljaCB0aGUgcnVudGltZSB3YXMgY3JlYXRlZFxuICAgKiBAZGVmYXVsdCAtIENyZWF0aW9uIHRpbWUgbm90IGF2YWlsYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlZEF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBhdCB3aGljaCB0aGUgcnVudGltZSB3YXMgbGFzdCB1cGRhdGVkXG4gICAqIEBkZWZhdWx0IC0gTGFzdCB1cGRhdGUgdGltZSBub3QgYXZhaWxhYmxlXG4gICAqL1xuICByZWFkb25seSBsYXN0VXBkYXRlZEF0Pzogc3RyaW5nO1xufVxuIl19
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicnVudGltZS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFjQSw2Q0FBdUM7QUFPdkMsK0RBR29DO0FBRXBDLDJDQUEyQztBQUMzQyx3REFBOEQ7QUFDOUQsNEVBQTREO0FBRTVELG1DQUEwRTtBQStKMUU7OytFQUUrRTtBQUUvRTs7R0FFRztBQUNILE1BQXNCLFdBQVksU0FBUSxzQkFBUTs7SUFZaEQ7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDbkIsT0FBTztZQUNMLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7U0FDdEMsQ0FBQztLQUNIO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxXQUFXO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLHdCQUFlLENBQUMsSUFBQSxzQkFBRyxFQUFBLGtCQUFrQixFQUFFLHdEQUF3RCxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25ILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7S0FDMUI7SUFFRDs7OztPQUlHO0lBQ08sWUFBWSxDQUE4QjtJQUVwRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXVCLEVBQUU7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDekI7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLEtBQUssQ0FBQyxPQUFpQixFQUFFLFNBQW1CO1FBQ2pELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2xCLE9BQU87WUFDUCxZQUFZLEVBQUUsU0FBUztTQUN4QixDQUFDLENBQUM7S0FDSjtJQUVEOzs7OztPQUtHO0lBQ0ksZUFBZSxDQUFDLFNBQThCO1FBQ25ELElB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QUFDLENBQUM7S0FDSjs7QUF2Tkgsa0NBd05DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBJUmVzb3VyY2UsIFJlc291cmNlUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlIHsgSVJ1bnRpbWVSZWYsIFJ1bnRpbWVSZWZlcmVuY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIERpbWVuc2lvbnNNYXAsXG4gIE1ldHJpY09wdGlvbnMsXG4gIE1ldHJpY1Byb3BzLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQge1xuICBNZXRyaWMsXG4gIFN0YXRzLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgdHlwZSAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2Vycm9ycyc7XG5pbXBvcnQgeyBsaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBSVU5USU1FX0lOVk9LRV9QRVJNUywgUlVOVElNRV9JTlZPS0VfVVNFUl9QRVJNUyB9IGZyb20gJy4vcGVybXMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBBZ2VudCBSdW50aW1lIHJlc291cmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElCZWRyb2NrQWdlbnRSdW50aW1lIGV4dGVuZHMgSVJlc291cmNlLCBpYW0uSUdyYW50YWJsZSwgZWMyLklDb25uZWN0YWJsZSwgSVJ1bnRpbWVSZWYge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgYWdlbnQgcnVudGltZSByZXNvdXJjZVxuICAgKiAtIEZvcm1hdCBgYXJuOiR7UGFydGl0aW9ufTpiZWRyb2NrLWFnZW50Y29yZToke1JlZ2lvbn06JHtBY2NvdW50fTpydW50aW1lLyR7UnVudGltZUlkfWBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAZXhhbXBsZSBcImFybjphd3M6YmVkcm9jay1hZ2VudGNvcmU6dXMtd2VzdC0yOjEyMzQ1Njc4OTAxMjpydW50aW1lL3J1bnRpbWUtYWJjMTIzXCJcbiAgICovXG4gIHJlYWRvbmx5IGFnZW50UnVudGltZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGFnZW50IHJ1bnRpbWVcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAZXhhbXBsZSBcInJ1bnRpbWUtYWJjMTIzXCJcbiAgICovXG4gIHJlYWRvbmx5IGFnZW50UnVudGltZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqL1xuICByZWFkb25seSBhZ2VudFJ1bnRpbWVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSB0aGF0IHByb3ZpZGVzIHBlcm1pc3Npb25zIGZvciB0aGUgYWdlbnQgcnVudGltZVxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgYWdlbnQgcnVudGltZVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhZ2VudFJ1bnRpbWVWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIGFnZW50IHJ1bnRpbWVcbiAgICovXG4gIHJlYWRvbmx5IGFnZW50U3RhdHVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBhdCB3aGljaCB0aGUgcnVudGltZSB3YXMgY3JlYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEBleGFtcGxlIFwiMjAyNC0wMS0xNVQxMDozMDowMFpcIlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlZEF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBhdCB3aGljaCB0aGUgcnVudGltZSB3YXMgbGFzdCB1cGRhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQGV4YW1wbGUgXCIyMDI0LTAxLTE1VDE0OjQ1OjAwWlwiXG4gICAqL1xuICByZWFkb25seSBsYXN0VXBkYXRlZEF0Pzogc3RyaW5nO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBNZXRyaWNzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgYWdlbnQgcnVudGltZS5cbiAgICovXG4gIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIGRpbWVuc2lvbnM6IERpbWVuc2lvbnNNYXAsIHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIHRvdGFsIG51bWJlciBvZiBpbnZvY2F0aW9ucyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgbWV0cmljSW52b2NhdGlvbnMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIGludm9jYXRpb25zIGFjcm9zcyBhbGwgcmVzb3VyY2VzLlxuICAgKi9cbiAgbWV0cmljSW52b2NhdGlvbnNBZ2dyZWdhdGVkKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiB0aHJvdHRsZWQgcmVxdWVzdHMgZm9yIHRoaXMgYWdlbnQgcnVudGltZS5cbiAgICovXG4gIG1ldHJpY1Rocm90dGxlcyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2Ygc3lzdGVtIGVycm9ycyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgbWV0cmljU3lzdGVtRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiB1c2VyIGVycm9ycyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgbWV0cmljVXNlckVycm9ycyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBtZWFzdXJpbmcgdGhlIGxhdGVuY3kgb2YgcmVxdWVzdHMgZm9yIHRoaXMgYWdlbnQgcnVudGltZS5cbiAgICovXG4gIG1ldHJpY0xhdGVuY3kocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIGVycm9ycyAoc3lzdGVtICsgdXNlcikgZm9yIHRoaXMgYWdlbnQgcnVudGltZS5cbiAgICovXG4gIG1ldHJpY1RvdGFsRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBhZ2VudCBzZXNzaW9ucyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgbWV0cmljU2Vzc2lvbkNvdW50KHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIHRvdGFsIG51bWJlciBvZiBzZXNzaW9ucyBhY3Jvc3MgYWxsIHJlc291cmNlcy5cbiAgICovXG4gIG1ldHJpY1Nlc3Npb25zQWdncmVnYXRlZChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEdyYW50IE1ldGhvZHNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBydW50aW1lIHNwZWNpZmljIGFjdGlvbnMgb24gQVdTIHJlc291cmNlc1xuICAgKlxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgYWN0aW9ucyB0byBncmFudFxuICAgKiBAcGFyYW0gcmVzb3VyY2VzIFRoZSByZXNvdXJjZSBBUk5zIHRvIGdyYW50IGFjY2VzcyB0b1xuICAgKiBAcmV0dXJucyBUaGUgR3JhbnQgb2JqZWN0IGZvciBjaGFpbmluZ1xuICAgKi9cbiAgZ3JhbnQoYWN0aW9uczogc3RyaW5nW10sIHJlc291cmNlczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBwb2xpY3kgc3RhdGVtZW50IHRvIHRoZSBydW50aW1lJ3MgZXhlY3V0aW9uIHJvbGVcbiAgICpcbiAgICogQHBhcmFtIHN0YXRlbWVudCBUaGUgSUFNIHBvbGljeSBzdGF0ZW1lbnQgdG8gYWRkXG4gICAqIEByZXR1cm5zIFRoZSBydW50aW1lIGluc3RhbmNlIGZvciBjaGFpbmluZ1xuICAgKi9cbiAgYWRkVG9Sb2xlUG9saWN5KHN0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCk6IElCZWRyb2NrQWdlbnRSdW50aW1lO1xuXG4gIC8qKlxuICAgKiBQZXJtaXRzIGFuIElBTSBwcmluY2lwYWwgdG8gaW52b2tlIHRoaXMgcnVudGltZVxuICAgKiBHcmFudHMgdGhlIGJlZHJvY2stYWdlbnRjb3JlOkludm9rZUFnZW50UnVudGltZSBwZXJtaXNzaW9uXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWwgdG8gZ3JhbnQgYWNjZXNzIHRvXG4gICAqL1xuICBncmFudEludm9rZVJ1bnRpbWUoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIFBlcm1pdHMgYW4gSUFNIHByaW5jaXBhbCB0byBpbnZva2UgdGhpcyBydW50aW1lIG9uIGJlaGFsZiBvZiBhIHVzZXJcbiAgICogR3JhbnRzIHRoZSBiZWRyb2NrLWFnZW50Y29yZTpJbnZva2VBZ2VudFJ1bnRpbWVGb3JVc2VyIHBlcm1pc3Npb25cbiAgICogUmVxdWlyZWQgd2hlbiB1c2luZyB0aGUgWC1BbXpuLUJlZHJvY2stQWdlbnRDb3JlLVJ1bnRpbWUtVXNlci1JZCBoZWFkZXJcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbCB0byBncmFudCBhY2Nlc3MgdG9cbiAgICovXG4gIGdyYW50SW52b2tlUnVudGltZUZvclVzZXIoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIFBlcm1pdHMgYW4gSUFNIHByaW5jaXBhbCB0byBpbnZva2UgdGhpcyBydW50aW1lIGJvdGggZGlyZWN0bHkgYW5kIG9uIGJlaGFsZiBvZiB1c2Vyc1xuICAgKiBHcmFudHMgYm90aCBiZWRyb2NrLWFnZW50Y29yZTpJbnZva2VBZ2VudFJ1bnRpbWUgYW5kIGJlZHJvY2stYWdlbnRjb3JlOkludm9rZUFnZW50UnVudGltZUZvclVzZXIgcGVybWlzc2lvbnNcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbCB0byBncmFudCBhY2Nlc3MgdG9cbiAgICovXG4gIGdyYW50SW52b2tlKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSBDbGFzc1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIEFnZW50IFJ1bnRpbWVcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJ1bnRpbWVCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJQmVkcm9ja0FnZW50UnVudGltZSB7XG4gIC8vIEFic3RyYWN0IHByb3BlcnRpZXNcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGFnZW50UnVudGltZUFybjogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYWdlbnRSdW50aW1lSWQ6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGFnZW50UnVudGltZU5hbWU6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGFnZW50UnVudGltZVZlcnNpb24/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhZ2VudFN0YXR1cz86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGxhc3RVcGRhdGVkQXQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBncmFudFByaW5jaXBhbDogaWFtLklQcmluY2lwYWw7XG5cbiAgLyoqXG4gICAqIEEgcmVmZXJlbmNlIHRvIGEgUnVudGltZSByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgcnVudGltZVJlZigpOiBSdW50aW1lUmVmZXJlbmNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWdlbnRSdW50aW1lSWQ6IHRoaXMuYWdlbnRSdW50aW1lSWQsXG4gICAgICBhZ2VudFJ1bnRpbWVBcm46IHRoaXMuYWdlbnRSdW50aW1lQXJuLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQW4gYWNjZXNzb3IgZm9yIHRoZSBDb25uZWN0aW9ucyBvYmplY3QgdGhhdCB3aWxsIGZhaWwgaWYgdGhpcyBSdW50aW1lIGRvZXMgbm90IGhhdmUgYSBWUENcbiAgICogY29uZmlndXJlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgY29ubmVjdGlvbnMoKTogZWMyLkNvbm5lY3Rpb25zIHtcbiAgICBpZiAoIXRoaXMuX2Nvbm5lY3Rpb25zKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBWcGNOb3RDb25maWd1cmVkYCwgJ0Nhbm5vdCBtYW5hZ2UgbmV0d29yayBhY2Nlc3Mgd2l0aG91dCBjb25maWd1cmluZyBhIFZQQycsIHRoaXMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFjdHVhbCBDb25uZWN0aW9ucyBvYmplY3QgZm9yIHRoaXMgUnVudGltZS4gVGhpcyBtYXkgYmUgdW5zZXQgaW4gdGhlIGV2ZW50IHRoYXQgYSBWUEMgaGFzIG5vdFxuICAgKiBiZWVuIGNvbmZpZ3VyZWQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIF9jb25uZWN0aW9uczogZWMyLkNvbm5lY3Rpb25zIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZXNvdXJjZVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCB0aGUgcnVudGltZSBzcGVjaWZpYyBhY3Rpb25zIG9uIEFXUyByZXNvdXJjZXNcbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBhY3Rpb25zIHRvIGdyYW50XG4gICAqIEBwYXJhbSByZXNvdXJjZXMgVGhlIHJlc291cmNlIEFSTnMgdG8gZ3JhbnQgYWNjZXNzIHRvXG4gICAqIEByZXR1cm5zIFRoZSBHcmFudCBvYmplY3QgZm9yIGNoYWluaW5nXG4gICAqL1xuICBwdWJsaWMgZ3JhbnQoYWN0aW9uczogc3RyaW5nW10sIHJlc291cmNlczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZTogdGhpcy5yb2xlLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogcmVzb3VyY2VzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBwb2xpY3kgc3RhdGVtZW50IHRvIHRoZSBydW50aW1lJ3MgZXhlY3V0aW9uIHJvbGVcbiAgICpcbiAgICogQHBhcmFtIHN0YXRlbWVudCBUaGUgSUFNIHBvbGljeSBzdGF0ZW1lbnQgdG8gYWRkXG4gICAqIEByZXR1cm5zIFRoZSBydW50aW1lIGluc3RhbmNlIGZvciBjaGFpbmluZ1xuICAgKi9cbiAgcHVibGljIGFkZFRvUm9sZVBvbGljeShzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQpOiBJQmVkcm9ja0FnZW50UnVudGltZSB7XG4gICAgdGhpcy5yb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KHN0YXRlbWVudCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUGVybWl0cyBhbiBJQU0gcHJpbmNpcGFsIHRvIGludm9rZSB0aGlzIHJ1bnRpbWVcbiAgICogR3JhbnRzIHRoZSBiZWRyb2NrLWFnZW50Y29yZTpJbnZva2VBZ2VudFJ1bnRpbWUgcGVybWlzc2lvblxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbCB0byBncmFudCBhY2Nlc3MgdG9cbiAgICovXG4gIHB1YmxpYyBncmFudEludm9rZVJ1bnRpbWUoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnM6IFJVTlRJTUVfSU5WT0tFX1BFUk1TLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5ydW50aW1lUmVmLmFnZW50UnVudGltZUFybiwgYCR7dGhpcy5ydW50aW1lUmVmLmFnZW50UnVudGltZUFybn0vKmBdLCAvLyAqIGlzIG5lZWRlZCBiZWNhdXNlIGl0IGludm9rZSB0aGUgZW5kcG9pbnQgYXMgc3VicmVzb3VyY2VcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJtaXRzIGFuIElBTSBwcmluY2lwYWwgdG8gaW52b2tlIHRoaXMgcnVudGltZSBvbiBiZWhhbGYgb2YgYSB1c2VyXG4gICAqIEdyYW50cyB0aGUgYmVkcm9jay1hZ2VudGNvcmU6SW52b2tlQWdlbnRSdW50aW1lRm9yVXNlciBwZXJtaXNzaW9uXG4gICAqIFJlcXVpcmVkIHdoZW4gdXNpbmcgdGhlIFgtQW16bi1CZWRyb2NrLUFnZW50Q29yZS1SdW50aW1lLVVzZXItSWQgaGVhZGVyXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IGFjY2VzcyB0b1xuICAgKi9cbiAgcHVibGljIGdyYW50SW52b2tlUnVudGltZUZvclVzZXIoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnM6IFJVTlRJTUVfSU5WT0tFX1VTRVJfUEVSTVMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLnJ1bnRpbWVSZWYuYWdlbnRSdW50aW1lQXJuLCBgJHt0aGlzLnJ1bnRpbWVSZWYuYWdlbnRSdW50aW1lQXJufS8qYF0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGVybWl0cyBhbiBJQU0gcHJpbmNpcGFsIHRvIGludm9rZSB0aGlzIHJ1bnRpbWUgYm90aCBkaXJlY3RseSBhbmQgb24gYmVoYWxmIG9mIHVzZXJzXG4gICAqIEdyYW50cyBib3RoIGJlZHJvY2stYWdlbnRjb3JlOkludm9rZUFnZW50UnVudGltZSBhbmQgYmVkcm9jay1hZ2VudGNvcmU6SW52b2tlQWdlbnRSdW50aW1lRm9yVXNlciBwZXJtaXNzaW9uc1xuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbCB0byBncmFudCBhY2Nlc3MgdG9cbiAgICovXG4gIHB1YmxpYyBncmFudEludm9rZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9uczogWy4uLlJVTlRJTUVfSU5WT0tFX1BFUk1TLCAuLi5SVU5USU1FX0lOVk9LRV9VU0VSX1BFUk1TXSxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMucnVudGltZVJlZi5hZ2VudFJ1bnRpbWVBcm4sIGAke3RoaXMucnVudGltZVJlZi5hZ2VudFJ1bnRpbWVBcm59LypgXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBNZXRyaWNzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgYWdlbnQgcnVudGltZS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIG1ldHJpYyB3aWxsIGJlIGNhbGN1bGF0ZWQgYXMgYSBzdW0gb3ZlciBhIHBlcmlvZCBvZiA1IG1pbnV0ZXMuXG4gICAqIFlvdSBjYW4gY3VzdG9taXplIHRoaXMgYnkgdXNpbmcgdGhlIGBzdGF0aXN0aWNgIGFuZCBgcGVyaW9kYCBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgcHVibGljIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIGRpbWVuc2lvbnM6IERpbWVuc2lvbnNNYXAsIHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgY29uc3QgbWV0cmljUHJvcHM6IE1ldHJpY1Byb3BzID0ge1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0JlZHJvY2stQWdlbnRDb3JlJyxcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IC4uLmRpbWVuc2lvbnMsIFJlc291cmNlOiB0aGlzLnJ1bnRpbWVSZWYuYWdlbnRSdW50aW1lQXJuIH0sXG4gICAgICAuLi5wcm9wcyxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyZU1ldHJpYyhtZXRyaWNQcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIHRvdGFsIG51bWJlciBvZiBpbnZvY2F0aW9ucyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0ludm9jYXRpb25zKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdJbnZvY2F0aW9ucycsIHt9LCB7IHN0YXRpc3RpYzogU3RhdHMuU1VNLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIGludm9jYXRpb25zIGFjcm9zcyBhbGwgcmVzb3VyY2VzLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0ludm9jYXRpb25zQWdncmVnYXRlZChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnSW52b2NhdGlvbnMnLCB7IFJlc291cmNlOiAnQWxsJyB9LCB7IHN0YXRpc3RpYzogU3RhdHMuU1VNLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHRocm90dGxlZCByZXF1ZXN0cyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1Rocm90dGxlcyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnVGhyb3R0bGVzJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2Ygc3lzdGVtIGVycm9ycyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1N5c3RlbUVycm9ycyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnU3lzdGVtRXJyb3JzJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgdXNlciBlcnJvcnMgZm9yIHRoaXMgYWdlbnQgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNVc2VyRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdVc2VyRXJyb3JzJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBtZWFzdXJpbmcgdGhlIGxhdGVuY3kgb2YgcmVxdWVzdHMgZm9yIHRoaXMgYWdlbnQgcnVudGltZS5cbiAgICpcbiAgICogVGhlIGxhdGVuY3kgbWV0cmljIHJlcHJlc2VudHMgdGhlIHRvdGFsIHRpbWUgZWxhcHNlZCBiZXR3ZWVuIHJlY2VpdmluZyB0aGUgcmVxdWVzdFxuICAgKiBhbmQgc2VuZGluZyB0aGUgZmluYWwgcmVzcG9uc2UgdG9rZW4sIHJlcHJlc2VudGluZyBjb21wbGV0ZSBlbmQtdG8tZW5kIHByb2Nlc3NpbmcgdGltZS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNMYXRlbmN5KHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdMYXRlbmN5Jywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5BVkVSQUdFLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIGVycm9ycyAoc3lzdGVtICsgdXNlcikgZm9yIHRoaXMgYWdlbnQgcnVudGltZS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNUb3RhbEVycm9ycyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnVG90YWxFcnJvcnMnLCB7fSwgeyBzdGF0aXN0aWM6IFN0YXRzLlNVTSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBhZ2VudCBzZXNzaW9ucyBmb3IgdGhpcyBhZ2VudCBydW50aW1lLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1Nlc3Npb25Db3VudChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnU2Vzc2lvbkNvdW50Jywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2Vzc2lvbnMgYWNyb3NzIGFsbCByZXNvdXJjZXMuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljU2Vzc2lvbnNBZ2dyZWdhdGVkKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdTZXNzaW9ucycsIHsgUmVzb3VyY2U6ICdBbGwnIH0sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIG1ldGhvZCB0byBjcmVhdGUgYSBtZXRyaWMuXG4gICAqL1xuICBwcml2YXRlIGNvbmZpZ3VyZU1ldHJpYyhwcm9wczogTWV0cmljUHJvcHMpIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJlZ2lvbjogcHJvcHM/LnJlZ2lvbiA/PyB0aGlzLnN0YWNrLnJlZ2lvbixcbiAgICAgIGFjY291bnQ6IHByb3BzPy5hY2NvdW50ID8/IHRoaXMuc3RhY2suYWNjb3VudCxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgZm9yIGltcG9ydGluZyBhbiBleGlzdGluZyBBZ2VudCBSdW50aW1lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRSdW50aW1lQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqL1xuICByZWFkb25seSBhZ2VudFJ1bnRpbWVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqL1xuICByZWFkb25seSBhZ2VudFJ1bnRpbWVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYWdlbnQgcnVudGltZVxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRSdW50aW1lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgQVJOXG4gICAqL1xuICByZWFkb25seSByb2xlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqIFdoZW4gaW1wb3J0aW5nIGEgcnVudGltZSBhbmQgdGhpcyBpcyBub3Qgc3BlY2lmaWVkIG9yIHVuZGVmaW5lZCwgZW5kcG9pbnRzIGNyZWF0ZWQgb24gdGhpcyBydW50aW1lXG4gICAqIHdpbGwgcG9pbnQgdG8gdmVyc2lvbiBcIjFcIiB1bmxlc3MgZXhwbGljaXRseSBvdmVycmlkZGVuLlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRSdW50aW1lVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdXJpdHkgZ3JvdXBzIGZvciB0aGlzIHJ1bnRpbWUsIGlmIGluIGEgVlBDLlxuICAgKiBAZGVmYXVsdCAtIEJ5IGRlZmF1bHQsIHRoZSBydW50aW1lIGlzIG5vdCBpbiBhIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUgYWdlbnQgcnVudGltZVxuICAgKiBAZGVmYXVsdCAtIFN0YXR1cyBub3QgYXZhaWxhYmxlXG4gICAqL1xuICByZWFkb25seSBhZ2VudFN0YXR1cz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRpbWUgYXQgd2hpY2ggdGhlIHJ1bnRpbWUgd2FzIGNyZWF0ZWRcbiAgICogQGRlZmF1bHQgLSBDcmVhdGlvbiB0aW1lIG5vdCBhdmFpbGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRpbWUgYXQgd2hpY2ggdGhlIHJ1bnRpbWUgd2FzIGxhc3QgdXBkYXRlZFxuICAgKiBAZGVmYXVsdCAtIExhc3QgdXBkYXRlIHRpbWUgbm90IGF2YWlsYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgbGFzdFVwZGF0ZWRBdD86IHN0cmluZztcbn1cbiJdfQ==
@@ -10,7 +10,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
10
10
  * Base class for Runtime Endpoint
11
11
  */
12
12
  class RuntimeEndpointBase extends aws_cdk_lib_1.Resource {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeEndpointBase", version: "2.246.0-alpha.0" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeEndpointBase", version: "2.248.0-alpha.0" };
14
14
  /**
15
15
  * A reference to a RuntimeEndpoint resource.
16
16
  */
@@ -40,6 +40,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
40
40
  const aws_cdk_lib_1 = require("aws-cdk-lib");
41
41
  const bedrockagentcore = require("aws-cdk-lib/aws-bedrockagentcore");
42
42
  const errors_1 = require("aws-cdk-lib/core/lib/errors");
43
+ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
43
44
  const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
44
45
  const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
45
46
  const runtime_endpoint_base_1 = require("./runtime-endpoint-base");
@@ -68,7 +69,7 @@ let RuntimeEndpoint = (() => {
68
69
  RuntimeEndpoint = _classThis = _classDescriptor.value;
69
70
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
70
71
  }
71
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeEndpoint", version: "2.246.0-alpha.0" };
72
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeEndpoint", version: "2.248.0-alpha.0" };
72
73
  /** Uniquely identifies this class. */
73
74
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.RuntimeEndpoint';
74
75
  /**
@@ -272,7 +273,7 @@ let RuntimeEndpoint = (() => {
272
273
  // Combine and throw if any errors
273
274
  const allErrors = [...lengthErrors, ...patternErrors];
274
275
  if (allErrors.length > 0) {
275
- throw new errors_1.UnscopedValidationError('InvalidEndpointName', allErrors.join('\n'));
276
+ throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `InvalidEndpointName`, allErrors.join('\n'));
276
277
  }
277
278
  }
278
279
  /**
@@ -292,7 +293,7 @@ let RuntimeEndpoint = (() => {
292
293
  maxLength: 256,
293
294
  });
294
295
  if (errors.length > 0) {
295
- throw new errors_1.UnscopedValidationError('InvalidEndpointDescription', errors.join('\n'));
296
+ throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `InvalidEndpointDescription`, errors.join('\n'));
296
297
  }
297
298
  }
298
299
  }
@@ -309,7 +310,7 @@ let RuntimeEndpoint = (() => {
309
310
  // Validate pattern only (no length validation per AWS specs)
310
311
  const patternErrors = (0, validation_helpers_1.validateFieldPattern)(this.agentRuntimeId, 'Agent runtime ID', /^[a-zA-Z][a-zA-Z0-9_]{0,99}-[a-zA-Z0-9]{10}$/, 'Agent runtime ID must start with a letter, followed by up to 99 alphanumeric or underscore characters, then a hyphen, and exactly 10 alphanumeric characters');
311
312
  if (patternErrors.length > 0) {
312
- throw new errors_1.UnscopedValidationError('InvalidAgentRuntimeId', patternErrors.join('\n'));
313
+ throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `InvalidAgentRuntimeId`, patternErrors.join('\n'));
313
314
  }
314
315
  }
315
316
  /**
@@ -324,7 +325,7 @@ let RuntimeEndpoint = (() => {
324
325
  // Validate pattern only (no length validation per AWS specs)
325
326
  const patternErrors = (0, validation_helpers_1.validateFieldPattern)(this.agentRuntimeVersion, 'Agent runtime version', /^[1-9]\d{0,4}$/, 'Agent runtime version must be a number between 1 and 99999');
326
327
  if (patternErrors.length > 0) {
327
- throw new errors_1.UnscopedValidationError('InvalidAgentRuntimeVersion', patternErrors.join('\n'));
328
+ throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `InvalidAgentRuntimeVersion`, patternErrors.join('\n'));
328
329
  }
329
330
  }
330
331
  /**
@@ -349,10 +350,10 @@ let RuntimeEndpoint = (() => {
349
350
  // Combine key errors and throw if any
350
351
  const keyErrors = [...keyLengthErrors, ...keyPatternErrors];
351
352
  if (keyErrors.length > 0) {
352
- throw new errors_1.UnscopedValidationError('InvalidEndpointTagKey', keyErrors.join('\n'));
353
+ throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `InvalidEndpointTagKey`, keyErrors.join('\n'));
353
354
  }
354
355
  if (value === undefined || value === null) {
355
- throw new errors_1.UnscopedValidationError('NullEndpointTagValue', `Tag value for key "${key}" cannot be null or undefined`);
356
+ throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `NullEndpointTagValue`, `Tag value for key "${key}" cannot be null or undefined`);
356
357
  }
357
358
  // Validate tag value length
358
359
  const valueLengthErrors = (0, validation_helpers_1.validateStringField)({
@@ -366,7 +367,7 @@ let RuntimeEndpoint = (() => {
366
367
  // Combine value errors and throw if any
367
368
  const valueErrors = [...valueLengthErrors, ...valuePatternErrors];
368
369
  if (valueErrors.length > 0) {
369
- throw new errors_1.UnscopedValidationError('InvalidEndpointTagValue', valueErrors.join('\n'));
370
+ throw new errors_1.UnscopedValidationError((0, helpers_internal_1.lit) `InvalidEndpointTagValue`, valueErrors.join('\n'));
370
371
  }
371
372
  }
372
373
  }
@@ -377,4 +378,4 @@ let RuntimeEndpoint = (() => {
377
378
  return RuntimeEndpoint = _classThis;
378
379
  })();
379
380
  exports.RuntimeEndpoint = RuntimeEndpoint;
380
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1lbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bnRpbWUtZW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQWlEO0FBQ2pELHFFQUFxRTtBQUNyRSx3REFBc0U7QUFDdEUsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUcxRSxtRUFBOEQ7QUFDOUQsNkRBQWlGO0FBa0RqRjs7K0VBRStFO0FBRS9FOzs7Ozs7R0FNRztJQUVVLGVBQWU7NEJBRDNCLG9DQUFrQjs7OztzQkFDa0IsMkNBQW1COytCQUEzQixTQUFRLFdBQW1COzs7O1lBQXhELDZLQStWQzs7Ozs7UUE5VkMsc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyxzREFBc0QsQ0FBQztRQUU5Rzs7Ozs7Ozs7V0FRRztRQUNJLE1BQU0sQ0FBQyw2QkFBNkIsQ0FDekMsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQWdDOzs7Ozs7Ozs7O1lBRWhDLE1BQU0sbUNBQW9DLFNBQVEsMkNBQW1CO2dCQUNuRCx1QkFBdUIsR0FBRyxLQUFLLENBQUMsdUJBQXVCLENBQUM7Z0JBQ3hELFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO2dCQUNsQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztnQkFDeEMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7Z0JBQ2hDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUN0QixXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztnQkFDaEMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7Z0JBQ3BDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUM1QixVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDOUIsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7YUFDckQ7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RyxFQUM1QiwwQkFBMEIsRUFDMUIsc0JBQXNCLEdBQUcsaUdBQWlHLENBQzNILENBQUM7Z0JBRUYsd0NBQXdDO2dCQUN4QyxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzNCLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQyx5QkFBeUIsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZGLENBQUM7WUFDSCxDQUFDO1NBQ0Y7O1lBOVZVLHVEQUFlOzs7OztBQUFmLDBDQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG9rZW4sIExhenksIE5hbWVzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgYmVkcm9ja2FnZW50Y29yZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZSc7XG5pbXBvcnQgeyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2Vycm9ycyc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBJUnVudGltZUVuZHBvaW50LCBSdW50aW1lRW5kcG9pbnRBdHRyaWJ1dGVzIH0gZnJvbSAnLi9ydW50aW1lLWVuZHBvaW50LWJhc2UnO1xuaW1wb3J0IHsgUnVudGltZUVuZHBvaW50QmFzZSB9IGZyb20gJy4vcnVudGltZS1lbmRwb2ludC1iYXNlJztcbmltcG9ydCB7IHZhbGlkYXRlU3RyaW5nRmllbGQsIHZhbGlkYXRlRmllbGRQYXR0ZXJuIH0gZnJvbSAnLi92YWxpZGF0aW9uLWhlbHBlcnMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvcHNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIEJlZHJvY2sgQWdlbnQgQ29yZSBSdW50aW1lIEVuZHBvaW50IHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVudGltZUVuZHBvaW50UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGFnZW50IHJ1bnRpbWUgZW5kcG9pbnRcbiAgICogVmFsaWQgY2hhcmFjdGVycyBhcmUgYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSlcbiAgICogTXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIGFuZCBjYW4gYmUgdXAgdG8gNDggY2hhcmFjdGVycyBsb25nXG4gICAqIFBhdHRlcm46IF5bYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fSRcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgYWdlbnQgcnVudGltZSB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIGVuZHBvaW50XG4gICAqIFRoaXMgaXMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBydW50aW1lIHJlc291cmNlXG4gICAqIFBhdHRlcm46IF5bYS16QS1aXVthLXpBLVowLTlfXXswLDk5fS1bYS16QS1aMC05XXsxMH0kXG4gICAqL1xuICByZWFkb25seSBhZ2VudFJ1bnRpbWVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgYWdlbnQgcnVudGltZSB0byB1c2UgZm9yIHRoaXMgZW5kcG9pbnRcbiAgICogSWYgbm90IHNwZWNpZmllZCwgdGhlIGVuZHBvaW50IHdpbGwgcG9pbnQgdG8gdmVyc2lvbiBcIjFcIiBvZiB0aGUgcnVudGltZS5cbiAgICogUGF0dGVybjogXihbMS05XVswLTldezAsNH0pJFxuICAgKiBAZGVmYXVsdCBcIjFcIlxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRSdW50aW1lVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBhZ2VudCBydW50aW1lIGVuZHBvaW50XG4gICAqIExlbmd0aCBNaW5pbXVtOiAxICwgIE1heGltdW06IDI1NlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGFncyBmb3IgdGhlIGFnZW50IHJ1bnRpbWUgZW5kcG9pbnRcbiAgICogQSBsaXN0IG9mIGtleTp2YWx1ZSBwYWlycyBvZiB0YWdzIHRvIGFwcGx5IHRvIHRoaXMgUnVudGltZUVuZHBvaW50IHJlc291cmNlXG4gICAqIFBhdHRlcm46IF5bYS16QS1aMC05XFxzLl86Lz0rQC1dKiRcbiAgICogQGRlZmF1bHQge30gLSBubyB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQmVkcm9jayBBZ2VudCBDb3JlIFJ1bnRpbWUgRW5kcG9pbnRcbiAqIFByb3ZpZGVzIGEgc3RhYmxlIGVuZHBvaW50IGZvciBpbnZva2luZyBhZ2VudCBydW50aW1lcyB3aXRoIHZlcnNpb25pbmcgc3VwcG9ydFxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkJlZHJvY2tBZ2VudENvcmU6OlJ1bnRpbWVFbmRwb2ludFxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL3J1bnRpbWUtZW5kcG9pbnQuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgUnVudGltZUVuZHBvaW50IGV4dGVuZHMgUnVudGltZUVuZHBvaW50QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWJlZHJvY2stYWdlbnRjb3JlLWFscGhhLlJ1bnRpbWVFbmRwb2ludCc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBBZ2VudCBSdW50aW1lIEVuZHBvaW50IHVzaW5nIGF0dHJpYnV0ZXNcbiAgICogVGhpcyBhbGxvd3MgeW91IHRvIHJlZmVyZW5jZSBhbiBBZ2VudCBSdW50aW1lIEVuZHBvaW50IHRoYXQgd2FzIGNyZWF0ZWQgb3V0c2lkZSBvZiBDREtcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBleGlzdGluZyBBZ2VudCBSdW50aW1lIEVuZHBvaW50XG4gICAqIEByZXR1cm5zIEFuIElSdW50aW1lRW5kcG9pbnQgaW5zdGFuY2UgcmVwcmVzZW50aW5nIHRoZSBpbXBvcnRlZCBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUnVudGltZUVuZHBvaW50QXR0cmlidXRlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXR0cnM6IFJ1bnRpbWVFbmRwb2ludEF0dHJpYnV0ZXMsXG4gICk6IElSdW50aW1lRW5kcG9pbnQge1xuICAgIGNsYXNzIEltcG9ydGVkQmVkcm9ja0FnZW50UnVudGltZUVuZHBvaW50IGV4dGVuZHMgUnVudGltZUVuZHBvaW50QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lRW5kcG9pbnRBcm4gPSBhdHRycy5hZ2VudFJ1bnRpbWVFbmRwb2ludEFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBlbmRwb2ludE5hbWUgPSBhdHRycy5lbmRwb2ludE5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lQXJuID0gYXR0cnMuYWdlbnRSdW50aW1lQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gYXR0cnMuZGVzY3JpcHRpb247XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzID0gYXR0cnMuc3RhdHVzO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGxpdmVWZXJzaW9uID0gYXR0cnMubGl2ZVZlcnNpb247XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0VmVyc2lvbiA9IGF0dHJzLnRhcmdldFZlcnNpb247XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlZEF0ID0gYXR0cnMuY3JlYXRlZEF0O1xuICAgICAgcHVibGljIHJlYWRvbmx5IGVuZHBvaW50SWQgPSBhdHRycy5lbmRwb2ludElkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGxhc3RVcGRhdGVkQXQgPSBhdHRycy5sYXN0VXBkYXRlZEF0O1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRCZWRyb2NrQWdlbnRSdW50aW1lRW5kcG9pbnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8vIFByb3BlcnRpZXMgZnJvbSBiYXNlIGludGVyZmFjZVxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgYWdlbnQgcnVudGltZSBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBBUk4gb2YgdGhpcyBhZ2VudCBydW50aW1lIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lRW5kcG9pbnRBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBuYW1lIG9mIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlbmRwb2ludE5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGFnZW50IHJ1bnRpbWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZW5kcG9pbnRcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgQVJOIG9mIHRoZSBhZ2VudCBydW50aW1lXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBzdGF0dXMgb2YgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsaXZlIHZlcnNpb24gb2YgdGhlIGVuZHBvaW50XG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIGxpdmUgdmVyc2lvbiBvZiB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGl2ZVZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IHZlcnNpb24gb2YgdGhlIGVuZHBvaW50XG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIHRhcmdldCB2ZXJzaW9uIG9mIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHRpbWVzdGFtcCB3aGVuIHRoZSBlbmRwb2ludCB3YXMgY3JlYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiB0aW1lc3RhbXAgb2YgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcnVudGltZSBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBJRCBvZiB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW5kcG9pbnRJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBhZ2VudCBydW50aW1lIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWdlbnRSdW50aW1lSWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBhZ2VudCBydW50aW1lIHVzZWQgYnkgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFnZW50UnVudGltZVZlcnNpb246IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBlbmRwb2ludCB3YXMgbGFzdCB1cGRhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIGxhc3QgdXBkYXRlIHRpbWVzdGFtcCBvZiB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGFzdFVwZGF0ZWRBdD86IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50UmVzb3VyY2U6IGJlZHJvY2thZ2VudGNvcmUuQ2ZuUnVudGltZUVuZHBvaW50O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSdW50aW1lRW5kcG9pbnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLy8gTWF4aW11bSBuYW1lIGxlbmd0aCBvZiA0OCBjaGFyYWN0ZXJzXG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVGVtcGxhdGVSZWZlcmVuY2UvYXdzLXJlc291cmNlLWJlZHJvY2thZ2VudGNvcmUtcnVudGltZWVuZHBvaW50Lmh0bWwjY2ZuLWJlZHJvY2thZ2VudGNvcmUtcnVudGltZWVuZHBvaW50LW5hbWVcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuZW5kcG9pbnROYW1lID8/XG4gICAgICAgIExhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDQ4IH0pLFxuICAgICAgICB9KSxcbiAgICB9KTtcblxuICAgIC8vIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgLy8gU2V0IGFuZCB2YWxpZGF0ZSBwcm9wZXJ0aWVzIGltbWVkaWF0ZWx5XG4gICAgdGhpcy5lbmRwb2ludE5hbWUgPSB0aGlzLnBoeXNpY2FsTmFtZTtcbiAgICB0aGlzLnZhbGlkYXRlRW5kcG9pbnROYW1lKCk7XG5cbiAgICB0aGlzLmFnZW50UnVudGltZUlkID0gcHJvcHMuYWdlbnRSdW50aW1lSWQ7XG4gICAgdGhpcy52YWxpZGF0ZUFnZW50UnVudGltZUlkKCk7XG5cbiAgICB0aGlzLmFnZW50UnVudGltZVZlcnNpb24gPSBwcm9wcy5hZ2VudFJ1bnRpbWVWZXJzaW9uID8/ICcxJztcbiAgICB0aGlzLnZhbGlkYXRlQWdlbnRSdW50aW1lVmVyc2lvbigpO1xuXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IHByb3BzLmRlc2NyaXB0aW9uO1xuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlRGVzY3JpcHRpb24oKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMudGFncykge1xuICAgICAgdGhpcy52YWxpZGF0ZVRhZ3MocHJvcHMudGFncyk7XG4gICAgfVxuXG4gICAgY29uc3QgY2ZuUHJvcHM6IGJlZHJvY2thZ2VudGNvcmUuQ2ZuUnVudGltZUVuZHBvaW50UHJvcHMgPSB7XG4gICAgICBuYW1lOiB0aGlzLmVuZHBvaW50TmFtZSxcbiAgICAgIGFnZW50UnVudGltZUlkOiBMYXp5LnN0cmluZyh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHRoaXMucmVuZGVyQWdlbnRSdW50aW1lSWQoKSxcbiAgICAgIH0pLFxuICAgICAgYWdlbnRSdW50aW1lVmVyc2lvbjogTGF6eS5zdHJpbmcoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiB0aGlzLnJlbmRlckFnZW50UnVudGltZVZlcnNpb24oKSxcbiAgICAgIH0pLFxuICAgICAgZGVzY3JpcHRpb246IExhenkuc3RyaW5nKHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy5yZW5kZXJEZXNjcmlwdGlvbigpLFxuICAgICAgfSksXG4gICAgICB0YWdzOiBwcm9wcy50YWdzID8/IHt9LFxuICAgIH07XG5cbiAgICB0aGlzLmVuZHBvaW50UmVzb3VyY2UgPSBuZXcgYmVkcm9ja2FnZW50Y29yZS5DZm5SdW50aW1lRW5kcG9pbnQodGhpcywgJ1Jlc291cmNlJywgY2ZuUHJvcHMpO1xuXG4gICAgdGhpcy5lbmRwb2ludElkID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJJZDtcbiAgICB0aGlzLmFnZW50UnVudGltZUVuZHBvaW50QXJuID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJBZ2VudFJ1bnRpbWVFbmRwb2ludEFybjtcbiAgICB0aGlzLmFnZW50UnVudGltZUFybiA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyQWdlbnRSdW50aW1lQXJuO1xuICAgIHRoaXMuc3RhdHVzID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJTdGF0dXM7XG4gICAgdGhpcy5saXZlVmVyc2lvbiA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyTGl2ZVZlcnNpb247XG4gICAgdGhpcy50YXJnZXRWZXJzaW9uID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJUYXJnZXRWZXJzaW9uO1xuICAgIHRoaXMuY3JlYXRlZEF0ID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJDcmVhdGVkQXQ7XG4gICAgdGhpcy5sYXN0VXBkYXRlZEF0ID0gdGhpcy5lbmRwb2ludFJlc291cmNlLmF0dHJMYXN0VXBkYXRlZEF0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGFnZW50IHJ1bnRpbWUgSUQgZm9yIENsb3VkRm9ybWF0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJBZ2VudFJ1bnRpbWVJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFnZW50UnVudGltZUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGFnZW50IHJ1bnRpbWUgdmVyc2lvbiBmb3IgQ2xvdWRGb3JtYXRpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHJlbmRlckFnZW50UnVudGltZVZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hZ2VudFJ1bnRpbWVWZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGRlc2NyaXB0aW9uIGZvciBDbG91ZEZvcm1hdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyRGVzY3JpcHRpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGVuZHBvaW50IG5hbWUgZm9ybWF0XG4gICAqIFBhdHRlcm46IF5bYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fSRcbiAgICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRW5kcG9pbnROYW1lKCk6IHZvaWQge1xuICAgIC8vIFNraXAgdmFsaWRhdGlvbiBpZiB0aGUgbmFtZSBjb250YWlucyBDREsgdG9rZW5zICh1bnJlc29sdmVkIHZhbHVlcylcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMuZW5kcG9pbnROYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIGxlbmd0aFxuICAgIGNvbnN0IGxlbmd0aEVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgdmFsdWU6IHRoaXMuZW5kcG9pbnROYW1lLFxuICAgICAgZmllbGROYW1lOiAnRW5kcG9pbnQgbmFtZScsXG4gICAgICBtaW5MZW5ndGg6IDEsXG4gICAgICBtYXhMZW5ndGg6IDQ4LFxuICAgIH0pO1xuXG4gICAgLy8gVmFsaWRhdGUgcGF0dGVyblxuICAgIGNvbnN0IHBhdHRlcm5FcnJvcnMgPSB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgIHRoaXMuZW5kcG9pbnROYW1lLFxuICAgICAgJ0VuZHBvaW50IG5hbWUnLFxuICAgICAgL15bYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fSQvLFxuICAgICAgJ0VuZHBvaW50IG5hbWUgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIGFuZCBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzJyxcbiAgICApO1xuXG4gICAgLy8gQ29tYmluZSBhbmQgdGhyb3cgaWYgYW55IGVycm9yc1xuICAgIGNvbnN0IGFsbEVycm9ycyA9IFsuLi5sZW5ndGhFcnJvcnMsIC4uLnBhdHRlcm5FcnJvcnNdO1xuICAgIGlmIChhbGxFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKCdJbnZhbGlkRW5kcG9pbnROYW1lJywgYWxsRXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBkZXNjcmlwdGlvbiBmb3JtYXRcbiAgICogTXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDI1NiBjaGFyYWN0ZXJzIChwZXIgQ2xvdWRGb3JtYXRpb24gc3BlY2lmaWNhdGlvbilcbiAgICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRGVzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLmRlc2NyaXB0aW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZVN0cmluZ0ZpZWxkKHtcbiAgICAgICAgdmFsdWU6IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgIGZpZWxkTmFtZTogJ0Rlc2NyaXB0aW9uJyxcbiAgICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgICBtYXhMZW5ndGg6IDI1NixcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKCdJbnZhbGlkRW5kcG9pbnREZXNjcmlwdGlvbicsIGVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgYWdlbnQgcnVudGltZSBJRCBmb3JtYXRcbiAgICogUGF0dGVybjogXlthLXpBLVpdW2EtekEtWjAtOV9dezAsOTl9LVthLXpBLVowLTldezEwfSRcbiAgICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlQWdlbnRSdW50aW1lSWQoKTogdm9pZCB7XG4gICAgLy8gU2tpcCB2YWxpZGF0aW9uIGlmIHRoZSBJRCBjb250YWlucyBDREsgdG9rZW5zICh1bnJlc29sdmVkIHZhbHVlcylcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMuYWdlbnRSdW50aW1lSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgcGF0dGVybiBvbmx5IChubyBsZW5ndGggdmFsaWRhdGlvbiBwZXIgQVdTIHNwZWNzKVxuICAgIGNvbnN0IHBhdHRlcm5FcnJvcnMgPSB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgIHRoaXMuYWdlbnRSdW50aW1lSWQsXG4gICAgICAnQWdlbnQgcnVudGltZSBJRCcsXG4gICAgICAvXlthLXpBLVpdW2EtekEtWjAtOV9dezAsOTl9LVthLXpBLVowLTldezEwfSQvLFxuICAgICAgJ0FnZW50IHJ1bnRpbWUgSUQgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyLCBmb2xsb3dlZCBieSB1cCB0byA5OSBhbHBoYW51bWVyaWMgb3IgdW5kZXJzY29yZSBjaGFyYWN0ZXJzLCB0aGVuIGEgaHlwaGVuLCBhbmQgZXhhY3RseSAxMCBhbHBoYW51bWVyaWMgY2hhcmFjdGVycycsXG4gICAgKTtcblxuICAgIGlmIChwYXR0ZXJuRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcignSW52YWxpZEFnZW50UnVudGltZUlkJywgcGF0dGVybkVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgYWdlbnQgcnVudGltZSB2ZXJzaW9uIGZvcm1hdFxuICAgKiBQYXR0ZXJuOiBeKFsxLTldWzAtOV17MCw0fSkkXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFnZW50UnVudGltZVZlcnNpb24oKTogdm9pZCB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLmFnZW50UnVudGltZVZlcnNpb24pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgcGF0dGVybiBvbmx5IChubyBsZW5ndGggdmFsaWRhdGlvbiBwZXIgQVdTIHNwZWNzKVxuICAgIGNvbnN0IHBhdHRlcm5FcnJvcnMgPSB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgIHRoaXMuYWdlbnRSdW50aW1lVmVyc2lvbixcbiAgICAgICdBZ2VudCBydW50aW1lIHZlcnNpb24nLFxuICAgICAgL15bMS05XVxcZHswLDR9JC8sXG4gICAgICAnQWdlbnQgcnVudGltZSB2ZXJzaW9uIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA5OTk5OScsXG4gICAgKTtcblxuICAgIGlmIChwYXR0ZXJuRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcignSW52YWxpZEFnZW50UnVudGltZVZlcnNpb24nLCBwYXR0ZXJuRXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSB0YWdzIGZvcm1hdFxuICAgKiBAcGFyYW0gdGFncyBUaGUgdGFncyBvYmplY3QgdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVGFncyh0YWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGFncykpIHtcbiAgICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoa2V5KSB8fCBUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSB0YWcga2V5IGxlbmd0aFxuICAgICAgY29uc3Qga2V5TGVuZ3RoRXJyb3JzID0gdmFsaWRhdGVTdHJpbmdGaWVsZCh7XG4gICAgICAgIHZhbHVlOiBrZXksXG4gICAgICAgIGZpZWxkTmFtZTogYFRhZyBrZXkgXCIke2tleX1cImAsXG4gICAgICAgIG1pbkxlbmd0aDogMSxcbiAgICAgICAgbWF4TGVuZ3RoOiAyNTYsXG4gICAgICB9KTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGFnIGtleSBwYXR0ZXJuXG4gICAgICBjb25zdCBrZXlQYXR0ZXJuRXJyb3JzID0gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgICAgIGtleSxcbiAgICAgICAgYFRhZyBrZXkgXCIke2tleX1cImAsXG4gICAgICAgIC9eW2EtekEtWjAtOVxccy5fOi89K0AtXSokLyxcbiAgICAgICAgYFRhZyBrZXkgXCIke2tleX1cIiBjYW4gb25seSBjb250YWluIGxldHRlcnMgKGEteiwgQS1aKSwgbnVtYmVycyAoMC05KSwgc3BhY2VzLCBhbmQgc3BlY2lhbCBjaGFyYWN0ZXJzICguXzovPStALSlgLFxuICAgICAgKTtcblxuICAgICAgLy8gQ29tYmluZSBrZXkgZXJyb3JzIGFuZCB0aHJvdyBpZiBhbnlcbiAgICAgIGNvbnN0IGtleUVycm9ycyA9IFsuLi5rZXlMZW5ndGhFcnJvcnMsIC4uLmtleVBhdHRlcm5FcnJvcnNdO1xuICAgICAgaWYgKGtleUVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcignSW52YWxpZEVuZHBvaW50VGFnS2V5Jywga2V5RXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKCdOdWxsRW5kcG9pbnRUYWdWYWx1ZScsIGBUYWcgdmFsdWUgZm9yIGtleSBcIiR7a2V5fVwiIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZGApO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSB0YWcgdmFsdWUgbGVuZ3RoXG4gICAgICBjb25zdCB2YWx1ZUxlbmd0aEVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGZpZWxkTmFtZTogYFRhZyB2YWx1ZSBmb3Iga2V5IFwiJHtrZXl9XCJgLFxuICAgICAgICBtaW5MZW5ndGg6IDAsXG4gICAgICAgIG1heExlbmd0aDogMjU2LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRhZyB2YWx1ZSBwYXR0ZXJuXG4gICAgICBjb25zdCB2YWx1ZVBhdHRlcm5FcnJvcnMgPSB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGBUYWcgdmFsdWUgZm9yIGtleSBcIiR7a2V5fVwiYCxcbiAgICAgICAgL15bYS16QS1aMC05XFxzLl86Lz0rQC1dKiQvLFxuICAgICAgICBgVGFnIHZhbHVlIGZvciBrZXkgXCIke2tleX1cIiBjYW4gb25seSBjb250YWluIGxldHRlcnMgKGEteiwgQS1aKSwgbnVtYmVycyAoMC05KSwgc3BhY2VzLCBhbmQgc3BlY2lhbCBjaGFyYWN0ZXJzICguXzovPStALSlgLFxuICAgICAgKTtcblxuICAgICAgLy8gQ29tYmluZSB2YWx1ZSBlcnJvcnMgYW5kIHRocm93IGlmIGFueVxuICAgICAgY29uc3QgdmFsdWVFcnJvcnMgPSBbLi4udmFsdWVMZW5ndGhFcnJvcnMsIC4uLnZhbHVlUGF0dGVybkVycm9yc107XG4gICAgICBpZiAodmFsdWVFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoJ0ludmFsaWRFbmRwb2ludFRhZ1ZhbHVlJywgdmFsdWVFcnJvcnMuam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
381
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1lbmRwb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bnRpbWUtZW5kcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQWlEO0FBQ2pELHFFQUFxRTtBQUNyRSx3REFBc0U7QUFDdEUsNEVBQTREO0FBQzVELDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFHMUUsbUVBQThEO0FBQzlELDZEQUFpRjtBQWtEakY7OytFQUUrRTtBQUUvRTs7Ozs7O0dBTUc7SUFFVSxlQUFlOzRCQUQzQixvQ0FBa0I7Ozs7c0JBQ2tCLDJDQUFtQjsrQkFBM0IsU0FBUSxXQUFtQjs7OztZQUF4RCw2S0ErVkM7Ozs7O1FBOVZDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsc0RBQXNELENBQUM7UUFFOUc7Ozs7Ozs7O1dBUUc7UUFDSSxNQUFNLENBQUMsNkJBQTZCLENBQ3pDLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFnQzs7Ozs7Ozs7OztZQUVoQyxNQUFNLG1DQUFvQyxTQUFRLDJDQUFtQjtnQkFDbkQsdUJBQXVCLEdBQUcsS0FBSyxDQUFDLHVCQUF1QixDQUFDO2dCQUN4RCxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztnQkFDbEMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7Z0JBQ3hDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO2dCQUNoQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFDdEIsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7Z0JBQ2hDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO2dCQUNwQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDNUIsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7Z0JBQzlCLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFB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QVMsRUFBRSxHQUFHO2lCQUNmLENBQUMsQ0FBQztnQkFFSCw2QkFBNkI7Z0JBQzdCLE1BQU0sa0JBQWtCLEdBQUcsSUFBQSx5Q0FBb0IsRUFDN0MsS0FBSyxFQUNMLHNCQUFzQixHQUFHLEdBQUcsRUFDNUIsMEJBQTBCLEVBQzFCLHNCQUFzQixHQUFHLGlHQUFpRyxDQUMzSCxDQUFDO2dCQUVGLHdDQUF3QztnQkFDeEMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLGlCQUFpQixFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMzQixNQUFNLElBQUksZ0NBQXVCLENBQUMsSUFBQSxzQkFBRyxFQUFBLHlCQUF5QixFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDMUYsQ0FBQztZQUNILENBQUM7U0FDRjs7WUE5VlUsdURBQWU7Ozs7O0FBQWYsMENBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb2tlbiwgTGF6eSwgTmFtZXMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBiZWRyb2NrYWdlbnRjb3JlIGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCB7IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvZXJyb3JzJztcbmltcG9ydCB7IGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgSVJ1bnRpbWVFbmRwb2ludCwgUnVudGltZUVuZHBvaW50QXR0cmlidXRlcyB9IGZyb20gJy4vcnVudGltZS1lbmRwb2ludC1iYXNlJztcbmltcG9ydCB7IFJ1bnRpbWVFbmRwb2ludEJhc2UgfSBmcm9tICcuL3J1bnRpbWUtZW5kcG9pbnQtYmFzZSc7XG5pbXBvcnQgeyB2YWxpZGF0ZVN0cmluZ0ZpZWxkLCB2YWxpZGF0ZUZpZWxkUGF0dGVybiB9IGZyb20gJy4vdmFsaWRhdGlvbi1oZWxwZXJzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3BzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBCZWRyb2NrIEFnZW50IENvcmUgUnVudGltZSBFbmRwb2ludCByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVFbmRwb2ludFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBhZ2VudCBydW50aW1lIGVuZHBvaW50XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpXG4gICAqIE11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBhbmQgY2FuIGJlIHVwIHRvIDQ4IGNoYXJhY3RlcnMgbG9uZ1xuICAgKiBQYXR0ZXJuOiBeW2EtekEtWl1bYS16QS1aMC05X117MCw0N30kXG4gICAqIEBkZWZhdWx0IC0gYXV0byBnZW5lcmF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGFnZW50IHJ1bnRpbWUgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBlbmRwb2ludFxuICAgKiBUaGlzIGlzIHRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcnVudGltZSByZXNvdXJjZVxuICAgKiBQYXR0ZXJuOiBeW2EtekEtWl1bYS16QS1aMC05X117MCw5OX0tW2EtekEtWjAtOV17MTB9JFxuICAgKi9cbiAgcmVhZG9ubHkgYWdlbnRSdW50aW1lSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGFnZW50IHJ1bnRpbWUgdG8gdXNlIGZvciB0aGlzIGVuZHBvaW50XG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBlbmRwb2ludCB3aWxsIHBvaW50IHRvIHZlcnNpb24gXCIxXCIgb2YgdGhlIHJ1bnRpbWUuXG4gICAqIFBhdHRlcm46IF4oWzEtOV1bMC05XXswLDR9KSRcbiAgICogQGRlZmF1bHQgXCIxXCJcbiAgICovXG4gIHJlYWRvbmx5IGFnZW50UnVudGltZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgYWdlbnQgcnVudGltZSBlbmRwb2ludFxuICAgKiBMZW5ndGggTWluaW11bTogMSAsICBNYXhpbXVtOiAyNTZcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhZ3MgZm9yIHRoZSBhZ2VudCBydW50aW1lIGVuZHBvaW50XG4gICAqIEEgbGlzdCBvZiBrZXk6dmFsdWUgcGFpcnMgb2YgdGFncyB0byBhcHBseSB0byB0aGlzIFJ1bnRpbWVFbmRwb2ludCByZXNvdXJjZVxuICAgKiBQYXR0ZXJuOiBeW2EtekEtWjAtOVxccy5fOi89K0AtXSokXG4gICAqIEBkZWZhdWx0IHt9IC0gbm8gdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIEJlZHJvY2sgQWdlbnQgQ29yZSBSdW50aW1lIEVuZHBvaW50XG4gKiBQcm92aWRlcyBhIHN0YWJsZSBlbmRwb2ludCBmb3IgaW52b2tpbmcgYWdlbnQgcnVudGltZXMgd2l0aCB2ZXJzaW9uaW5nIHN1cHBvcnRcbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpCZWRyb2NrQWdlbnRDb3JlOjpSdW50aW1lRW5kcG9pbnRcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9ydW50aW1lLWVuZHBvaW50Lmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVFbmRwb2ludCBleHRlbmRzIFJ1bnRpbWVFbmRwb2ludEJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1iZWRyb2NrLWFnZW50Y29yZS1hbHBoYS5SdW50aW1lRW5kcG9pbnQnO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgQWdlbnQgUnVudGltZSBFbmRwb2ludCB1c2luZyBhdHRyaWJ1dGVzXG4gICAqIFRoaXMgYWxsb3dzIHlvdSB0byByZWZlcmVuY2UgYW4gQWdlbnQgUnVudGltZSBFbmRwb2ludCB0aGF0IHdhcyBjcmVhdGVkIG91dHNpZGUgb2YgQ0RLXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBhdHRycyBUaGUgYXR0cmlidXRlcyBvZiB0aGUgZXhpc3RpbmcgQWdlbnQgUnVudGltZSBFbmRwb2ludFxuICAgKiBAcmV0dXJucyBBbiBJUnVudGltZUVuZHBvaW50IGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUgaW1wb3J0ZWQgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVJ1bnRpbWVFbmRwb2ludEF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBSdW50aW1lRW5kcG9pbnRBdHRyaWJ1dGVzLFxuICApOiBJUnVudGltZUVuZHBvaW50IHtcbiAgICBjbGFzcyBJbXBvcnRlZEJlZHJvY2tBZ2VudFJ1bnRpbWVFbmRwb2ludCBleHRlbmRzIFJ1bnRpbWVFbmRwb2ludEJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGFnZW50UnVudGltZUVuZHBvaW50QXJuID0gYXR0cnMuYWdlbnRSdW50aW1lRW5kcG9pbnRBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZW5kcG9pbnROYW1lID0gYXR0cnMuZW5kcG9pbnROYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGFnZW50UnVudGltZUFybiA9IGF0dHJzLmFnZW50UnVudGltZUFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbiA9IGF0dHJzLmRlc2NyaXB0aW9uO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHN0YXR1cyA9IGF0dHJzLnN0YXR1cztcbiAgICAgIHB1YmxpYyByZWFkb25seSBsaXZlVmVyc2lvbiA9IGF0dHJzLmxpdmVWZXJzaW9uO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhcmdldFZlcnNpb24gPSBhdHRycy50YXJnZXRWZXJzaW9uO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZWRBdCA9IGF0dHJzLmNyZWF0ZWRBdDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBlbmRwb2ludElkID0gYXR0cnMuZW5kcG9pbnRJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBsYXN0VXBkYXRlZEF0ID0gYXR0cnMubGFzdFVwZGF0ZWRBdDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydGVkQmVkcm9ja0FnZW50UnVudGltZUVuZHBvaW50KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvLyBQcm9wZXJ0aWVzIGZyb20gYmFzZSBpbnRlcmZhY2VcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGFnZW50IHJ1bnRpbWUgZW5kcG9pbnRcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgQVJOIG9mIHRoaXMgYWdlbnQgcnVudGltZSBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFnZW50UnVudGltZUVuZHBvaW50QXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZW5kcG9pbnRcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgbmFtZSBvZiB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW5kcG9pbnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBhZ2VudCBydW50aW1lIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGVuZHBvaW50XG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIEFSTiBvZiB0aGUgYWdlbnQgcnVudGltZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFnZW50UnVudGltZUFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgZW5kcG9pbnRcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgc3RhdHVzIG9mIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGF0dXM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbGl2ZSB2ZXJzaW9uIG9mIHRoZSBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBsaXZlIHZlcnNpb24gb2YgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxpdmVWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHRhcmdldCB2ZXJzaW9uIG9mIHRoZSBlbmRwb2ludFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSB0YXJnZXQgdmVyc2lvbiBvZiB0aGlzIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0VmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB0aW1lc3RhbXAgd2hlbiB0aGUgZW5kcG9pbnQgd2FzIGNyZWF0ZWRcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gdGltZXN0YW1wIG9mIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHJ1bnRpbWUgZW5kcG9pbnRcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgSUQgb2YgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVuZHBvaW50SWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgYWdlbnQgcnVudGltZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFnZW50UnVudGltZUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgYWdlbnQgcnVudGltZSB1c2VkIGJ5IHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhZ2VudFJ1bnRpbWVWZXJzaW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgZW5kcG9pbnQgd2FzIGxhc3QgdXBkYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqIEByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBsYXN0IHVwZGF0ZSB0aW1lc3RhbXAgb2YgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxhc3RVcGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludFJlc291cmNlOiBiZWRyb2NrYWdlbnRjb3JlLkNmblJ1bnRpbWVFbmRwb2ludDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUnVudGltZUVuZHBvaW50UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC8vIE1heGltdW0gbmFtZSBsZW5ndGggb2YgNDggY2hhcmFjdGVyc1xuICAgICAgLy8gQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1RlbXBsYXRlUmVmZXJlbmNlL2F3cy1yZXNvdXJjZS1iZWRyb2NrYWdlbnRjb3JlLXJ1bnRpbWVlbmRwb2ludC5odG1sI2Nmbi1iZWRyb2NrYWdlbnRjb3JlLXJ1bnRpbWVlbmRwb2ludC1uYW1lXG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLmVuZHBvaW50TmFtZSA/P1xuICAgICAgICBMYXp5LnN0cmluZyh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT4gTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHsgbWF4TGVuZ3RoOiA0OCB9KSxcbiAgICAgICAgfSksXG4gICAgfSk7XG5cbiAgICAvLyBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIC8vIFNldCBhbmQgdmFsaWRhdGUgcHJvcGVydGllcyBpbW1lZGlhdGVseVxuICAgIHRoaXMuZW5kcG9pbnROYW1lID0gdGhpcy5waHlzaWNhbE5hbWU7XG4gICAgdGhpcy52YWxpZGF0ZUVuZHBvaW50TmFtZSgpO1xuXG4gICAgdGhpcy5hZ2VudFJ1bnRpbWVJZCA9IHByb3BzLmFnZW50UnVudGltZUlkO1xuICAgIHRoaXMudmFsaWRhdGVBZ2VudFJ1bnRpbWVJZCgpO1xuXG4gICAgdGhpcy5hZ2VudFJ1bnRpbWVWZXJzaW9uID0gcHJvcHMuYWdlbnRSdW50aW1lVmVyc2lvbiA/PyAnMSc7XG4gICAgdGhpcy52YWxpZGF0ZUFnZW50UnVudGltZVZlcnNpb24oKTtcblxuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBwcm9wcy5kZXNjcmlwdGlvbjtcbiAgICBpZiAodGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgdGhpcy52YWxpZGF0ZURlc2NyaXB0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnRhZ3MpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVUYWdzKHByb3BzLnRhZ3MpO1xuICAgIH1cblxuICAgIGNvbnN0IGNmblByb3BzOiBiZWRyb2NrYWdlbnRjb3JlLkNmblJ1bnRpbWVFbmRwb2ludFByb3BzID0ge1xuICAgICAgbmFtZTogdGhpcy5lbmRwb2ludE5hbWUsXG4gICAgICBhZ2VudFJ1bnRpbWVJZDogTGF6eS5zdHJpbmcoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiB0aGlzLnJlbmRlckFnZW50UnVudGltZUlkKCksXG4gICAgICB9KSxcbiAgICAgIGFnZW50UnVudGltZVZlcnNpb246IExhenkuc3RyaW5nKHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy5yZW5kZXJBZ2VudFJ1bnRpbWVWZXJzaW9uKCksXG4gICAgICB9KSxcbiAgICAgIGRlc2NyaXB0aW9uOiBMYXp5LnN0cmluZyh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHRoaXMucmVuZGVyRGVzY3JpcHRpb24oKSxcbiAgICAgIH0pLFxuICAgICAgdGFnczogcHJvcHMudGFncyA/PyB7fSxcbiAgICB9O1xuXG4gICAgdGhpcy5lbmRwb2ludFJlc291cmNlID0gbmV3IGJlZHJvY2thZ2VudGNvcmUuQ2ZuUnVudGltZUVuZHBvaW50KHRoaXMsICdSZXNvdXJjZScsIGNmblByb3BzKTtcblxuICAgIHRoaXMuZW5kcG9pbnRJZCA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRySWQ7XG4gICAgdGhpcy5hZ2VudFJ1bnRpbWVFbmRwb2ludEFybiA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyQWdlbnRSdW50aW1lRW5kcG9pbnRBcm47XG4gICAgdGhpcy5hZ2VudFJ1bnRpbWVBcm4gPSB0aGlzLmVuZHBvaW50UmVzb3VyY2UuYXR0ckFnZW50UnVudGltZUFybjtcbiAgICB0aGlzLnN0YXR1cyA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyU3RhdHVzO1xuICAgIHRoaXMubGl2ZVZlcnNpb24gPSB0aGlzLmVuZHBvaW50UmVzb3VyY2UuYXR0ckxpdmVWZXJzaW9uO1xuICAgIHRoaXMudGFyZ2V0VmVyc2lvbiA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyVGFyZ2V0VmVyc2lvbjtcbiAgICB0aGlzLmNyZWF0ZWRBdCA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyQ3JlYXRlZEF0O1xuICAgIHRoaXMubGFzdFVwZGF0ZWRBdCA9IHRoaXMuZW5kcG9pbnRSZXNvdXJjZS5hdHRyTGFzdFVwZGF0ZWRBdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBhZ2VudCBydW50aW1lIElEIGZvciBDbG91ZEZvcm1hdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyQWdlbnRSdW50aW1lSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hZ2VudFJ1bnRpbWVJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBhZ2VudCBydW50aW1lIHZlcnNpb24gZm9yIENsb3VkRm9ybWF0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJBZ2VudFJ1bnRpbWVWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWdlbnRSdW50aW1lVmVyc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBkZXNjcmlwdGlvbiBmb3IgQ2xvdWRGb3JtYXRpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHJlbmRlckRlc2NyaXB0aW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRpb247XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBlbmRwb2ludCBuYW1lIGZvcm1hdFxuICAgKiBQYXR0ZXJuOiBeW2EtekEtWl1bYS16QS1aMC05X117MCw0N30kXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUVuZHBvaW50TmFtZSgpOiB2b2lkIHtcbiAgICAvLyBTa2lwIHZhbGlkYXRpb24gaWYgdGhlIG5hbWUgY29udGFpbnMgQ0RLIHRva2VucyAodW5yZXNvbHZlZCB2YWx1ZXMpXG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLmVuZHBvaW50TmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBsZW5ndGhcbiAgICBjb25zdCBsZW5ndGhFcnJvcnMgPSB2YWxpZGF0ZVN0cmluZ0ZpZWxkKHtcbiAgICAgIHZhbHVlOiB0aGlzLmVuZHBvaW50TmFtZSxcbiAgICAgIGZpZWxkTmFtZTogJ0VuZHBvaW50IG5hbWUnLFxuICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgbWF4TGVuZ3RoOiA0OCxcbiAgICB9KTtcblxuICAgIC8vIFZhbGlkYXRlIHBhdHRlcm5cbiAgICBjb25zdCBwYXR0ZXJuRXJyb3JzID0gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgICB0aGlzLmVuZHBvaW50TmFtZSxcbiAgICAgICdFbmRwb2ludCBuYW1lJyxcbiAgICAgIC9eW2EtekEtWl1bYS16QS1aMC05X117MCw0N30kLyxcbiAgICAgICdFbmRwb2ludCBuYW1lIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBhbmQgY29udGFpbiBvbmx5IGxldHRlcnMsIG51bWJlcnMsIGFuZCB1bmRlcnNjb3JlcycsXG4gICAgKTtcblxuICAgIC8vIENvbWJpbmUgYW5kIHRocm93IGlmIGFueSBlcnJvcnNcbiAgICBjb25zdCBhbGxFcnJvcnMgPSBbLi4ubGVuZ3RoRXJyb3JzLCAuLi5wYXR0ZXJuRXJyb3JzXTtcbiAgICBpZiAoYWxsRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgSW52YWxpZEVuZHBvaW50TmFtZWAsIGFsbEVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgZGVzY3JpcHRpb24gZm9ybWF0XG4gICAqIE11c3QgYmUgYmV0d2VlbiAxIGFuZCAyNTYgY2hhcmFjdGVycyAocGVyIENsb3VkRm9ybWF0aW9uIHNwZWNpZmljYXRpb24pXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZURlc2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQodGhpcy5kZXNjcmlwdGlvbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGVTdHJpbmdGaWVsZCh7XG4gICAgICAgIHZhbHVlOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgICBmaWVsZE5hbWU6ICdEZXNjcmlwdGlvbicsXG4gICAgICAgIG1pbkxlbmd0aDogMSxcbiAgICAgICAgbWF4TGVuZ3RoOiAyNTYsXG4gICAgICB9KTtcblxuICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgSW52YWxpZEVuZHBvaW50RGVzY3JpcHRpb25gLCBlcnJvcnMuam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGFnZW50IHJ1bnRpbWUgSUQgZm9ybWF0XG4gICAqIFBhdHRlcm46IF5bYS16QS1aXVthLXpBLVowLTlfXXswLDk5fS1bYS16QS1aMC05XXsxMH0kXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFnZW50UnVudGltZUlkKCk6IHZvaWQge1xuICAgIC8vIFNraXAgdmFsaWRhdGlvbiBpZiB0aGUgSUQgY29udGFpbnMgQ0RLIHRva2VucyAodW5yZXNvbHZlZCB2YWx1ZXMpXG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLmFnZW50UnVudGltZUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHBhdHRlcm4gb25seSAobm8gbGVuZ3RoIHZhbGlkYXRpb24gcGVyIEFXUyBzcGVjcylcbiAgICBjb25zdCBwYXR0ZXJuRXJyb3JzID0gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgICB0aGlzLmFnZW50UnVudGltZUlkLFxuICAgICAgJ0FnZW50IHJ1bnRpbWUgSUQnLFxuICAgICAgL15bYS16QS1aXVthLXpBLVowLTlfXXswLDk5fS1bYS16QS1aMC05XXsxMH0kLyxcbiAgICAgICdBZ2VudCBydW50aW1lIElEIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciwgZm9sbG93ZWQgYnkgdXAgdG8gOTkgYWxwaGFudW1lcmljIG9yIHVuZGVyc2NvcmUgY2hhcmFjdGVycywgdGhlbiBhIGh5cGhlbiwgYW5kIGV4YWN0bHkgMTAgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMnLFxuICAgICk7XG5cbiAgICBpZiAocGF0dGVybkVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YEludmFsaWRBZ2VudFJ1bnRpbWVJZGAsIHBhdHRlcm5FcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGFnZW50IHJ1bnRpbWUgdmVyc2lvbiBmb3JtYXRcbiAgICogUGF0dGVybjogXihbMS05XVswLTldezAsNH0pJFxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHZhbGlkYXRpb24gZmFpbHNcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVBZ2VudFJ1bnRpbWVWZXJzaW9uKCk6IHZvaWQge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQodGhpcy5hZ2VudFJ1bnRpbWVWZXJzaW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHBhdHRlcm4gb25seSAobm8gbGVuZ3RoIHZhbGlkYXRpb24gcGVyIEFXUyBzcGVjcylcbiAgICBjb25zdCBwYXR0ZXJuRXJyb3JzID0gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgICB0aGlzLmFnZW50UnVudGltZVZlcnNpb24sXG4gICAgICAnQWdlbnQgcnVudGltZSB2ZXJzaW9uJyxcbiAgICAgIC9eWzEtOV1cXGR7MCw0fSQvLFxuICAgICAgJ0FnZW50IHJ1bnRpbWUgdmVyc2lvbiBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgOTk5OTknLFxuICAgICk7XG5cbiAgICBpZiAocGF0dGVybkVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YEludmFsaWRBZ2VudFJ1bnRpbWVWZXJzaW9uYCwgcGF0dGVybkVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdGFncyBmb3JtYXRcbiAgICogQHBhcmFtIHRhZ3MgVGhlIHRhZ3Mgb2JqZWN0IHRvIHZhbGlkYXRlXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVRhZ3ModGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRhZ3MpKSB7XG4gICAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKGtleSkgfHwgVG9rZW4uaXNVbnJlc29sdmVkKHZhbHVlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGUgdGFnIGtleSBsZW5ndGhcbiAgICAgIGNvbnN0IGtleUxlbmd0aEVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgICB2YWx1ZToga2V5LFxuICAgICAgICBmaWVsZE5hbWU6IGBUYWcga2V5IFwiJHtrZXl9XCJgLFxuICAgICAgICBtaW5MZW5ndGg6IDEsXG4gICAgICAgIG1heExlbmd0aDogMjU2LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRhZyBrZXkgcGF0dGVyblxuICAgICAgY29uc3Qga2V5UGF0dGVybkVycm9ycyA9IHZhbGlkYXRlRmllbGRQYXR0ZXJuKFxuICAgICAgICBrZXksXG4gICAgICAgIGBUYWcga2V5IFwiJHtrZXl9XCJgLFxuICAgICAgICAvXlthLXpBLVowLTlcXHMuXzovPStALV0qJC8sXG4gICAgICAgIGBUYWcga2V5IFwiJHtrZXl9XCIgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzIChhLXosIEEtWiksIG51bWJlcnMgKDAtOSksIHNwYWNlcywgYW5kIHNwZWNpYWwgY2hhcmFjdGVycyAoLl86Lz0rQC0pYCxcbiAgICAgICk7XG5cbiAgICAgIC8vIENvbWJpbmUga2V5IGVycm9ycyBhbmQgdGhyb3cgaWYgYW55XG4gICAgICBjb25zdCBrZXlFcnJvcnMgPSBbLi4ua2V5TGVuZ3RoRXJyb3JzLCAuLi5rZXlQYXR0ZXJuRXJyb3JzXTtcbiAgICAgIGlmIChrZXlFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YEludmFsaWRFbmRwb2ludFRhZ0tleWAsIGtleUVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgTnVsbEVuZHBvaW50VGFnVmFsdWVgLCBgVGFnIHZhbHVlIGZvciBrZXkgXCIke2tleX1cIiBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWRgKTtcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGUgdGFnIHZhbHVlIGxlbmd0aFxuICAgICAgY29uc3QgdmFsdWVMZW5ndGhFcnJvcnMgPSB2YWxpZGF0ZVN0cmluZ0ZpZWxkKHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBmaWVsZE5hbWU6IGBUYWcgdmFsdWUgZm9yIGtleSBcIiR7a2V5fVwiYCxcbiAgICAgICAgbWluTGVuZ3RoOiAwLFxuICAgICAgICBtYXhMZW5ndGg6IDI1NixcbiAgICAgIH0pO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0YWcgdmFsdWUgcGF0dGVyblxuICAgICAgY29uc3QgdmFsdWVQYXR0ZXJuRXJyb3JzID0gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBgVGFnIHZhbHVlIGZvciBrZXkgXCIke2tleX1cImAsXG4gICAgICAgIC9eW2EtekEtWjAtOVxccy5fOi89K0AtXSokLyxcbiAgICAgICAgYFRhZyB2YWx1ZSBmb3Iga2V5IFwiJHtrZXl9XCIgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzIChhLXosIEEtWiksIG51bWJlcnMgKDAtOSksIHNwYWNlcywgYW5kIHNwZWNpYWwgY2hhcmFjdGVycyAoLl86Lz0rQC0pYCxcbiAgICAgICk7XG5cbiAgICAgIC8vIENvbWJpbmUgdmFsdWUgZXJyb3JzIGFuZCB0aHJvdyBpZiBhbnlcbiAgICAgIGNvbnN0IHZhbHVlRXJyb3JzID0gWy4uLnZhbHVlTGVuZ3RoRXJyb3JzLCAuLi52YWx1ZVBhdHRlcm5FcnJvcnNdO1xuICAgICAgaWYgKHZhbHVlRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBJbnZhbGlkRW5kcG9pbnRUYWdWYWx1ZWAsIHZhbHVlRXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==