@aws-cdk/aws-bedrock-agentcore-alpha 2.231.0-alpha.0 → 2.232.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/.jsii +73 -15
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/README.md +35 -0
  4. package/eslint-suppressions.json +2 -0
  5. package/lib/gateway/gateway-base.js +1 -1
  6. package/lib/gateway/gateway.js +1 -1
  7. package/lib/gateway/inbound-auth/authorizer.js +3 -3
  8. package/lib/gateway/outbound-auth/api-key.js +1 -1
  9. package/lib/gateway/outbound-auth/credential-provider.d.ts +1 -1
  10. package/lib/gateway/outbound-auth/credential-provider.js +2 -2
  11. package/lib/gateway/protocol.js +2 -2
  12. package/lib/gateway/targets/schema/api-schema.js +4 -4
  13. package/lib/gateway/targets/schema/tool-schema.js +4 -4
  14. package/lib/gateway/targets/target-base.js +1 -1
  15. package/lib/gateway/targets/target-configuration.js +7 -7
  16. package/lib/gateway/targets/target.js +1 -1
  17. package/lib/memory/memory-strategy.js +1 -1
  18. package/lib/memory/memory.d.ts +1 -1
  19. package/lib/memory/memory.js +3 -3
  20. package/lib/memory/strategies/managed-strategy.js +2 -2
  21. package/lib/memory/strategies/self-managed-strategy.d.ts +3 -3
  22. package/lib/memory/strategies/self-managed-strategy.js +14 -2
  23. package/lib/network/network-configuration.d.ts +1 -1
  24. package/lib/network/network-configuration.js +5 -6
  25. package/lib/runtime/runtime-artifact.d.ts +14 -3
  26. package/lib/runtime/runtime-artifact.js +49 -7
  27. package/lib/runtime/runtime-authorizer-configuration.js +15 -3
  28. package/lib/runtime/runtime-base.js +1 -1
  29. package/lib/runtime/runtime-endpoint-base.js +1 -1
  30. package/lib/runtime/runtime-endpoint.js +1 -1
  31. package/lib/runtime/runtime.d.ts +1 -1
  32. package/lib/runtime/runtime.js +3 -3
  33. package/lib/tools/browser.d.ts +1 -1
  34. package/lib/tools/browser.js +5 -5
  35. package/lib/tools/code-interpreter.d.ts +1 -1
  36. package/lib/tools/code-interpreter.js +5 -5
  37. package/package.json +9 -9
  38. package/.eslintrc.js +0 -4
Binary file
package/README.md CHANGED
@@ -249,6 +249,41 @@ const runtimeInstance = new agentcore.Runtime(this, "MyAgentRuntime", {
249
249
  });
250
250
  ```
251
251
 
252
+ #### Option 4: Use an ECR container image URI
253
+
254
+ Reference an ECR container image directly by its URI. This is useful when you have a pre-existing ECR image URI from CloudFormation parameters or cross-stack references. No IAM permissions are automatically granted - you must ensure the runtime has ECR pull permissions.
255
+
256
+ ```typescript fixture=default
257
+ // Direct URI reference
258
+ const agentRuntimeArtifact = agentcore.AgentRuntimeArtifact.fromImageUri(
259
+ "123456789012.dkr.ecr.us-east-1.amazonaws.com/my-agent:v1.0.0"
260
+ );
261
+
262
+ const runtime = new agentcore.Runtime(this, "MyAgentRuntime", {
263
+ runtimeName: "myAgent",
264
+ agentRuntimeArtifact: agentRuntimeArtifact,
265
+ });
266
+ ```
267
+
268
+ You can also use CloudFormation parameters or references:
269
+
270
+ ```typescript fixture=default
271
+ // Using a CloudFormation parameter
272
+ const imageUriParam = new cdk.CfnParameter(this, "ImageUri", {
273
+ type: "String",
274
+ description: "Container image URI for the agent runtime",
275
+ });
276
+
277
+ const agentRuntimeArtifact = agentcore.AgentRuntimeArtifact.fromImageUri(
278
+ imageUriParam.valueAsString
279
+ );
280
+
281
+ const runtime = new agentcore.Runtime(this, "MyAgentRuntime", {
282
+ runtimeName: "myAgent",
283
+ agentRuntimeArtifact: agentRuntimeArtifact,
284
+ });
285
+ ```
286
+
252
287
  ### Granting Permissions to Invoke Bedrock Models or Inference Profiles
253
288
 
254
289
  To grant the runtime permissions to invoke Bedrock models or inference profiles:
@@ -0,0 +1,2 @@
1
+ {
2
+ }
@@ -25,7 +25,7 @@ var GatewayExceptionLevel;
25
25
  * Base Class
26
26
  *****************************************************************************/
27
27
  class GatewayBase extends aws_cdk_lib_1.Resource {
28
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayBase", version: "2.231.0-alpha.0" };
28
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayBase", version: "2.232.1-alpha.0" };
29
29
  constructor(scope, id) {
30
30
  super(scope, id);
31
31
  }
@@ -87,7 +87,7 @@ let Gateway = (() => {
87
87
  Gateway = _classThis = _classDescriptor.value;
88
88
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
89
89
  }
90
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.Gateway", version: "2.231.0-alpha.0" };
90
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.Gateway", version: "2.232.1-alpha.0" };
91
91
  /** Uniquely identifies this class. */
92
92
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.Gateway';
93
93
  /**
@@ -21,7 +21,7 @@ var GatewayAuthorizerType;
21
21
  * Custom JWT authorizer configuration implementation
22
22
  */
23
23
  class CustomJwtAuthorizer {
24
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CustomJwtAuthorizer", version: "2.231.0-alpha.0" };
24
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CustomJwtAuthorizer", version: "2.232.1-alpha.0" };
25
25
  authorizerType = GatewayAuthorizerType.CUSTOM_JWT;
26
26
  discoveryUrl;
27
27
  allowedAudience;
@@ -62,7 +62,7 @@ exports.CustomJwtAuthorizer = CustomJwtAuthorizer;
62
62
  *
63
63
  */
64
64
  class IamAuthorizer {
65
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.IamAuthorizer", version: "2.231.0-alpha.0" };
65
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.IamAuthorizer", version: "2.232.1-alpha.0" };
66
66
  authorizerType = GatewayAuthorizerType.AWS_IAM;
67
67
  /**
68
68
  * @internal
@@ -78,7 +78,7 @@ exports.IamAuthorizer = IamAuthorizer;
78
78
  * Factory class for creating Gateway Authorizers
79
79
  */
80
80
  class GatewayAuthorizer {
81
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayAuthorizer", version: "2.231.0-alpha.0" };
81
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayAuthorizer", version: "2.232.1-alpha.0" };
82
82
  /**
83
83
  * AWS IAM authorizer instance
84
84
  */
@@ -19,7 +19,7 @@ var ApiKeyCredentialLocationType;
19
19
  * API Key location within the request
20
20
  */
21
21
  class ApiKeyCredentialLocation {
22
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ApiKeyCredentialLocation", version: "2.231.0-alpha.0" };
22
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ApiKeyCredentialLocation", version: "2.232.1-alpha.0" };
23
23
  /**
24
24
  * Create a header-based API key credential location
25
25
  * @param config - Optional configuration for the credential location
@@ -1,8 +1,8 @@
1
1
  import { IResolvable } from 'aws-cdk-lib';
2
2
  import { CfnGatewayTarget } from 'aws-cdk-lib/aws-bedrockagentcore';
3
+ import { Grant, IRole } from 'aws-cdk-lib/aws-iam';
3
4
  import { ApiKeyCredentialProviderProps } from './api-key';
4
5
  import { OAuthConfiguration } from './oauth';
5
- import { Grant, IRole } from 'aws-cdk-lib/aws-iam';
6
6
  /******************************************************************************
7
7
  * Enums
8
8
  *****************************************************************************/
@@ -31,7 +31,7 @@ var CredentialProviderType;
31
31
  * Factory class for creating different Gateway Credential Providers
32
32
  */
33
33
  class GatewayCredentialProvider {
34
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayCredentialProvider", version: "2.231.0-alpha.0" };
34
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayCredentialProvider", version: "2.232.1-alpha.0" };
35
35
  /**
36
36
  * Create an API key credential provider from Identity ARN
37
37
  * Use this method when you have the Identity ARN as a string
@@ -77,4 +77,4 @@ class GatewayCredentialProvider {
77
77
  }
78
78
  }
79
79
  exports.GatewayCredentialProvider = GatewayCredentialProvider;
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNyZWRlbnRpYWwtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSx1Q0FBaUc7QUFDakcseUNBQW9FO0FBQ3BFLG1DQUFtRjtBQUduRjs7K0VBRStFO0FBQy9FOztHQUVHO0FBQ0gsSUFBWSxzQkFlWDtBQWZELFdBQVksc0JBQXNCO0lBQ2hDOztPQUVHO0lBQ0gsNkNBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCx5Q0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwrREFBcUMsQ0FBQTtBQUN2QyxDQUFDLEVBZlcsc0JBQXNCLHNDQUF0QixzQkFBc0IsUUFlakM7QUEyQkQ7O0dBRUc7QUFDSCxNQUFzQix5QkFBeUI7O0lBQzdDOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQW9DOzs7Ozs7Ozs7O1FBQ3RFLE9BQU8sSUFBSSwrQ0FBcUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN6RDtJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLEtBQXlCOzs7Ozs7Ozs7O1FBQzFELE9BQU8sSUFBSSw0Q0FBb0MsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN4RDtJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxpREFBc0MsRUFBRSxDQUFDO0tBQ3JEOztBQTNCSCw4REE0QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzb2x2YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENmbkdhdGV3YXlUYXJnZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZSc7XG5pbXBvcnQgeyBBcGlLZXlDcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uLCBBcGlLZXlDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyB9IGZyb20gJy4vYXBpLWtleSc7XG5pbXBvcnQgeyBHYXRld2F5SWFtUm9sZUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZyB9IGZyb20gJy4vaWFtLXJvbGUnO1xuaW1wb3J0IHsgT0F1dGhDb25maWd1cmF0aW9uLCBPQXV0aENyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL29hdXRoJztcbmltcG9ydCB7IEdyYW50LCBJUm9sZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1zXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIENyZWRlbnRpYWwgcHJvdmlkZXIgdHlwZXMgc3VwcG9ydGVkIGJ5IGdhdGV3YXkgdGFyZ2V0XG4gKi9cbmV4cG9ydCBlbnVtIENyZWRlbnRpYWxQcm92aWRlclR5cGUge1xuICAvKipcbiAgICogQVBJIEtleSBhdXRoZW50aWNhdGlvblxuICAgKi9cbiAgQVBJX0tFWSA9ICdBUElfS0VZJyxcblxuICAvKipcbiAgICogT0F1dGggYXV0aGVudGljYXRpb25cbiAgICovXG4gIE9BVVRIID0gJ09BVVRIJyxcblxuICAvKipcbiAgICogSUFNIHJvbGUgYXV0aGVudGljYXRpb25cbiAgICovXG4gIEdBVEVXQVlfSUFNX1JPTEUgPSAnR0FURVdBWV9JQU1fUk9MRScsXG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICBDcmVkZW50aWFsIFByb3ZpZGVyXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQWJzdHJhY3QgaW50ZXJmYWNlIGZvciBnYXRld2F5IGNyZWRlbnRpYWwgcHJvdmlkZXIgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDcmVkZW50aWFsUHJvdmlkZXJDb25maWcge1xuICAvKipcbiAgICogVGhlIGNyZWRlbnRpYWwgcHJvdmlkZXIgdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyVHlwZTogQ3JlZGVudGlhbFByb3ZpZGVyVHlwZTtcblxuICAvKipcbiAgICogUmVuZGVycyBhcyBDRk4gUHJvcGVydHlcbiAgICogIEBpbnRlcm5hbFxuICAgKi9cbiAgX3JlbmRlcigpOiBDZm5HYXRld2F5VGFyZ2V0LkNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB8IElSZXNvbHZhYmxlO1xuXG4gIC8qKlxuICAgKiBHcmFudCB0aGUgcm9sZSB0aGUgcGVybWlzc2lvbnNcbiAgICovXG4gIGdyYW50TmVlZGVkUGVybWlzc2lvbnNUb1JvbGUocm9sZTogSVJvbGUpOiBHcmFudCB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGNsYXNzIGZvciBjcmVhdGluZyBkaWZmZXJlbnQgR2F0ZXdheSBDcmVkZW50aWFsIFByb3ZpZGVyc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlciB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gQVBJIGtleSBjcmVkZW50aWFsIHByb3ZpZGVyIGZyb20gSWRlbnRpdHkgQVJOXG4gICAqIFVzZSB0aGlzIG1ldGhvZCB3aGVuIHlvdSBoYXZlIHRoZSBJZGVudGl0eSBBUk4gYXMgYSBzdHJpbmdcbiAgICogQHBhcmFtIHByb3BzIC0gVGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIEFQSSBrZXkgY3JlZGVudGlhbCBwcm92aWRlclxuICAgKiBAcmV0dXJucyBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIGNvbmZpZ3VyZWQgZm9yIEFQSSBrZXkgYXV0aGVudGljYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFwaUtleUlkZW50aXR5QXJuKHByb3BzOiBBcGlLZXlDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyk6IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWcge1xuICAgIHJldHVybiBuZXcgQXBpS2V5Q3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbihwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIE9BdXRoIGNyZWRlbnRpYWwgcHJvdmlkZXIgZnJvbSBJZGVudGl0eSBBUk5cbiAgICogVXNlIHRoaXMgbWV0aG9kIHdoZW4geW91IGhhdmUgdGhlIElkZW50aXR5IEFSTiBhcyBhIHN0cmluZ1xuICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgT0F1dGggY3JlZGVudGlhbCBwcm92aWRlclxuICAgKiBAcmV0dXJucyBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIGNvbmZpZ3VyZWQgZm9yIE9BdXRoIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21PYXV0aElkZW50aXR5QXJuKHByb3BzOiBPQXV0aENvbmZpZ3VyYXRpb24pOiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIHtcbiAgICByZXR1cm4gbmV3IE9BdXRoQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbihwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIElBTSByb2xlIGNyZWRlbnRpYWwgcHJvdmlkZXJcbiAgICogQHJldHVybnMgSUlhbVJvbGVDcmVkZW50aWFsUHJvdmlkZXIgY29uZmlndXJlZCBmb3IgSUFNIHJvbGUgYXV0aGVudGljYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUlhbVJvbGUoKTogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZyB7XG4gICAgcmV0dXJuIG5ldyBHYXRld2F5SWFtUm9sZUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZygpO1xuICB9XG59XG4iXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNyZWRlbnRpYWwtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSx1Q0FBaUc7QUFDakcseUNBQW9FO0FBQ3BFLG1DQUFtRjtBQUVuRjs7K0VBRStFO0FBQy9FOztHQUVHO0FBQ0gsSUFBWSxzQkFlWDtBQWZELFdBQVksc0JBQXNCO0lBQ2hDOztPQUVHO0lBQ0gsNkNBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCx5Q0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwrREFBcUMsQ0FBQTtBQUN2QyxDQUFDLEVBZlcsc0JBQXNCLHNDQUF0QixzQkFBc0IsUUFlakM7QUEyQkQ7O0dBRUc7QUFDSCxNQUFzQix5QkFBeUI7O0lBQzdDOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQW9DOzs7Ozs7Ozs7O1FBQ3RFLE9BQU8sSUFBSSwrQ0FBcUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN6RDtJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLEtBQXlCOzs7Ozs7Ozs7O1FBQzFELE9BQU8sSUFBSSw0Q0FBb0MsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN4RDtJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxpREFBc0MsRUFBRSxDQUFDO0tBQ3JEOztBQTNCSCw4REE0QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzb2x2YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENmbkdhdGV3YXlUYXJnZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZSc7XG5pbXBvcnQgeyBHcmFudCwgSVJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IEFwaUtleUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb24sIEFwaUtleUNyZWRlbnRpYWxQcm92aWRlclByb3BzIH0gZnJvbSAnLi9hcGkta2V5JztcbmltcG9ydCB7IEdhdGV3YXlJYW1Sb2xlQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIH0gZnJvbSAnLi9pYW0tcm9sZSc7XG5pbXBvcnQgeyBPQXV0aENvbmZpZ3VyYXRpb24sIE9BdXRoQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vb2F1dGgnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1zXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIENyZWRlbnRpYWwgcHJvdmlkZXIgdHlwZXMgc3VwcG9ydGVkIGJ5IGdhdGV3YXkgdGFyZ2V0XG4gKi9cbmV4cG9ydCBlbnVtIENyZWRlbnRpYWxQcm92aWRlclR5cGUge1xuICAvKipcbiAgICogQVBJIEtleSBhdXRoZW50aWNhdGlvblxuICAgKi9cbiAgQVBJX0tFWSA9ICdBUElfS0VZJyxcblxuICAvKipcbiAgICogT0F1dGggYXV0aGVudGljYXRpb25cbiAgICovXG4gIE9BVVRIID0gJ09BVVRIJyxcblxuICAvKipcbiAgICogSUFNIHJvbGUgYXV0aGVudGljYXRpb25cbiAgICovXG4gIEdBVEVXQVlfSUFNX1JPTEUgPSAnR0FURVdBWV9JQU1fUk9MRScsXG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICBDcmVkZW50aWFsIFByb3ZpZGVyXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQWJzdHJhY3QgaW50ZXJmYWNlIGZvciBnYXRld2F5IGNyZWRlbnRpYWwgcHJvdmlkZXIgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDcmVkZW50aWFsUHJvdmlkZXJDb25maWcge1xuICAvKipcbiAgICogVGhlIGNyZWRlbnRpYWwgcHJvdmlkZXIgdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyVHlwZTogQ3JlZGVudGlhbFByb3ZpZGVyVHlwZTtcblxuICAvKipcbiAgICogUmVuZGVycyBhcyBDRk4gUHJvcGVydHlcbiAgICogIEBpbnRlcm5hbFxuICAgKi9cbiAgX3JlbmRlcigpOiBDZm5HYXRld2F5VGFyZ2V0LkNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB8IElSZXNvbHZhYmxlO1xuXG4gIC8qKlxuICAgKiBHcmFudCB0aGUgcm9sZSB0aGUgcGVybWlzc2lvbnNcbiAgICovXG4gIGdyYW50TmVlZGVkUGVybWlzc2lvbnNUb1JvbGUocm9sZTogSVJvbGUpOiBHcmFudCB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGNsYXNzIGZvciBjcmVhdGluZyBkaWZmZXJlbnQgR2F0ZXdheSBDcmVkZW50aWFsIFByb3ZpZGVyc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlciB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gQVBJIGtleSBjcmVkZW50aWFsIHByb3ZpZGVyIGZyb20gSWRlbnRpdHkgQVJOXG4gICAqIFVzZSB0aGlzIG1ldGhvZCB3aGVuIHlvdSBoYXZlIHRoZSBJZGVudGl0eSBBUk4gYXMgYSBzdHJpbmdcbiAgICogQHBhcmFtIHByb3BzIC0gVGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIEFQSSBrZXkgY3JlZGVudGlhbCBwcm92aWRlclxuICAgKiBAcmV0dXJucyBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIGNvbmZpZ3VyZWQgZm9yIEFQSSBrZXkgYXV0aGVudGljYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFwaUtleUlkZW50aXR5QXJuKHByb3BzOiBBcGlLZXlDcmVkZW50aWFsUHJvdmlkZXJQcm9wcyk6IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWcge1xuICAgIHJldHVybiBuZXcgQXBpS2V5Q3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbihwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIE9BdXRoIGNyZWRlbnRpYWwgcHJvdmlkZXIgZnJvbSBJZGVudGl0eSBBUk5cbiAgICogVXNlIHRoaXMgbWV0aG9kIHdoZW4geW91IGhhdmUgdGhlIElkZW50aXR5IEFSTiBhcyBhIHN0cmluZ1xuICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgT0F1dGggY3JlZGVudGlhbCBwcm92aWRlclxuICAgKiBAcmV0dXJucyBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIGNvbmZpZ3VyZWQgZm9yIE9BdXRoIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21PYXV0aElkZW50aXR5QXJuKHByb3BzOiBPQXV0aENvbmZpZ3VyYXRpb24pOiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIHtcbiAgICByZXR1cm4gbmV3IE9BdXRoQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbihwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIElBTSByb2xlIGNyZWRlbnRpYWwgcHJvdmlkZXJcbiAgICogQHJldHVybnMgSUlhbVJvbGVDcmVkZW50aWFsUHJvdmlkZXIgY29uZmlndXJlZCBmb3IgSUFNIHJvbGUgYXV0aGVudGljYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUlhbVJvbGUoKTogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZyB7XG4gICAgcmV0dXJuIG5ldyBHYXRld2F5SWFtUm9sZUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZygpO1xuICB9XG59XG4iXX0=
@@ -21,7 +21,7 @@ var GatewayProtocolType;
21
21
  * Factory class for instantiating Gateway Protocols
22
22
  */
23
23
  class GatewayProtocol {
24
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayProtocol", version: "2.231.0-alpha.0" };
24
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayProtocol", version: "2.232.1-alpha.0" };
25
25
  /**
26
26
  * Create an MCP protocol configuration
27
27
  * @param props - Optional MCP configuration properties
@@ -75,7 +75,7 @@ var McpGatewaySearchType;
75
75
  * MCP (Model Context Protocol) configuration implementation
76
76
  */
77
77
  class McpProtocolConfiguration {
78
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.McpProtocolConfiguration", version: "2.231.0-alpha.0" };
78
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.McpProtocolConfiguration", version: "2.232.1-alpha.0" };
79
79
  protocolType;
80
80
  /**
81
81
  * The supported MCP protocol versions
@@ -24,7 +24,7 @@ class ApiSchemaError extends Error {
24
24
  * Represents the concept of an API Schema for a Gateway Target.
25
25
  */
26
26
  class ApiSchema extends base_schema_1.TargetSchema {
27
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ApiSchema", version: "2.231.0-alpha.0" };
27
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ApiSchema", version: "2.232.1-alpha.0" };
28
28
  /**
29
29
  * Creates an API Schema from a local file.
30
30
  * @param path - the path to the local file containing the OpenAPI schema for the action group
@@ -82,7 +82,7 @@ exports.ApiSchema = ApiSchema;
82
82
  class AssetApiSchema extends ApiSchema {
83
83
  path;
84
84
  options;
85
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.AssetApiSchema", version: "2.231.0-alpha.0" };
85
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.AssetApiSchema", version: "2.232.1-alpha.0" };
86
86
  asset;
87
87
  constructor(path, options = {}) {
88
88
  super();
@@ -144,7 +144,7 @@ exports.AssetApiSchema = AssetApiSchema;
144
144
  */
145
145
  class InlineApiSchema extends ApiSchema {
146
146
  schema;
147
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.InlineApiSchema", version: "2.231.0-alpha.0" };
147
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.InlineApiSchema", version: "2.232.1-alpha.0" };
148
148
  constructor(schema) {
149
149
  super(undefined, undefined, schema);
150
150
  this.schema = schema;
@@ -174,7 +174,7 @@ exports.InlineApiSchema = InlineApiSchema;
174
174
  class S3ApiSchema extends ApiSchema {
175
175
  location;
176
176
  bucketOwnerAccountId;
177
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.S3ApiSchema", version: "2.231.0-alpha.0" };
177
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.S3ApiSchema", version: "2.232.1-alpha.0" };
178
178
  constructor(location, bucketOwnerAccountId) {
179
179
  super(location, bucketOwnerAccountId, undefined);
180
180
  this.location = location;
@@ -39,7 +39,7 @@ class ToolSchemaError extends Error {
39
39
  * TOOL SCHEMA CLASS
40
40
  *****************************************************************************/
41
41
  class ToolSchema extends base_schema_1.TargetSchema {
42
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ToolSchema", version: "2.231.0-alpha.0" };
42
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ToolSchema", version: "2.232.1-alpha.0" };
43
43
  /**
44
44
  * Creates a tool Schema from a local file.
45
45
  * @param path - the path to the local file containing the function schema for the tool
@@ -97,7 +97,7 @@ exports.ToolSchema = ToolSchema;
97
97
  class AssetToolSchema extends ToolSchema {
98
98
  path;
99
99
  options;
100
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.AssetToolSchema", version: "2.231.0-alpha.0" };
100
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.AssetToolSchema", version: "2.232.1-alpha.0" };
101
101
  asset;
102
102
  constructor(path, options = {}) {
103
103
  super();
@@ -150,7 +150,7 @@ exports.AssetToolSchema = AssetToolSchema;
150
150
  */
151
151
  class InlineToolSchema extends ToolSchema {
152
152
  schema;
153
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.InlineToolSchema", version: "2.231.0-alpha.0" };
153
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.InlineToolSchema", version: "2.232.1-alpha.0" };
154
154
  constructor(schema) {
155
155
  super(undefined, undefined, schema);
156
156
  this.schema = schema;
@@ -180,7 +180,7 @@ exports.InlineToolSchema = InlineToolSchema;
180
180
  class S3ToolSchema extends ToolSchema {
181
181
  location;
182
182
  bucketOwnerAccountId;
183
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.S3ToolSchema", version: "2.231.0-alpha.0" };
183
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.S3ToolSchema", version: "2.232.1-alpha.0" };
184
184
  constructor(location, bucketOwnerAccountId) {
185
185
  super(location, bucketOwnerAccountId, undefined);
186
186
  this.location = location;
@@ -39,7 +39,7 @@ var McpTargetType;
39
39
  * permission management and property definitions.
40
40
  */
41
41
  class GatewayTargetBase extends aws_cdk_lib_1.Resource {
42
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayTargetBase", version: "2.231.0-alpha.0" };
42
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayTargetBase", version: "2.232.1-alpha.0" };
43
43
  /**
44
44
  * Grants IAM actions to the IAM Principal
45
45
  *
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.McpServerTargetConfiguration = exports.SmithyTargetConfiguration = exports.OpenApiTargetConfiguration = exports.LambdaTargetConfiguration = exports.McpTargetConfiguration = void 0;
4
4
  const jsiiDeprecationWarnings = require("../../../.warnings.jsii.js");
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const aws_cdk_lib_1 = require("aws-cdk-lib");
7
6
  const fs = require("fs");
7
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
8
8
  const api_schema_1 = require("./schema/api-schema");
9
9
  const target_base_1 = require("./target-base");
10
10
  const validation_helpers_1 = require("../validation-helpers");
@@ -16,7 +16,7 @@ const validation_helpers_1 = require("../validation-helpers");
16
16
  * Provides common functionality for all MCP target types
17
17
  */
18
18
  class McpTargetConfiguration {
19
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.McpTargetConfiguration", version: "2.231.0-alpha.0" };
19
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.McpTargetConfiguration", version: "2.232.1-alpha.0" };
20
20
  /**
21
21
  * Renders the configuration as CloudFormation properties
22
22
  * @internal
@@ -38,7 +38,7 @@ exports.McpTargetConfiguration = McpTargetConfiguration;
38
38
  * allowing the gateway to invoke the function to provide tool capabilities.
39
39
  */
40
40
  class LambdaTargetConfiguration extends McpTargetConfiguration {
41
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.LambdaTargetConfiguration", version: "2.231.0-alpha.0" };
41
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.LambdaTargetConfiguration", version: "2.232.1-alpha.0" };
42
42
  /**
43
43
  * Create a Lambda target configuration
44
44
  *
@@ -128,7 +128,7 @@ exports.LambdaTargetConfiguration = LambdaTargetConfiguration;
128
128
  * allowing the gateway to transform API operations into tool calls.
129
129
  */
130
130
  class OpenApiTargetConfiguration extends McpTargetConfiguration {
131
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.OpenApiTargetConfiguration", version: "2.231.0-alpha.0" };
131
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.OpenApiTargetConfiguration", version: "2.232.1-alpha.0" };
132
132
  /**
133
133
  * Create an OpenAPI target configuration
134
134
  *
@@ -246,7 +246,7 @@ exports.OpenApiTargetConfiguration = OpenApiTargetConfiguration;
246
246
  * allowing the gateway to transform Smithy operations into tool calls.
247
247
  */
248
248
  class SmithyTargetConfiguration extends McpTargetConfiguration {
249
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.SmithyTargetConfiguration", version: "2.231.0-alpha.0" };
249
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.SmithyTargetConfiguration", version: "2.232.1-alpha.0" };
250
250
  /**
251
251
  * Create a Smithy target configuration
252
252
  *
@@ -328,7 +328,7 @@ exports.SmithyTargetConfiguration = SmithyTargetConfiguration;
328
328
  * synchronization.
329
329
  */
330
330
  class McpServerTargetConfiguration extends McpTargetConfiguration {
331
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.McpServerTargetConfiguration", version: "2.231.0-alpha.0" };
331
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.McpServerTargetConfiguration", version: "2.232.1-alpha.0" };
332
332
  /**
333
333
  * Create an MCP server target configuration
334
334
  *
@@ -404,4 +404,4 @@ class McpServerTargetConfiguration extends McpTargetConfiguration {
404
404
  }
405
405
  }
406
406
  exports.McpServerTargetConfiguration = McpServerTargetConfiguration;
407
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0YXJnZXQtY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUFvQztBQUdwQyx5QkFBeUI7QUFFekIsb0RBQWdFO0FBRWhFLCtDQUE4QztBQUM5Qyw4REFBcUc7QUFzQ3JHOzsrRUFFK0U7QUFFL0U7OztHQUdHO0FBQ0gsTUFBc0Isc0JBQXNCOztJQWlCMUM7OztPQUdHO0lBQ0ksT0FBTztRQUNaLE9BQU87WUFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1NBQ25DLENBQUM7S0FDSDs7QUF6Qkgsd0RBMEJDO0FBRUQ7OytFQUUrRTtBQUUvRTs7Ozs7R0FLRztBQUNILE1BQWEseUJBQTBCLFNBQVEsc0JBQXNCOztJQUNuRTs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUNsQixjQUF5QixFQUN6QixVQUFzQjs7Ozs7Ozs7OztRQUV0QixPQUFPLElBQUkseUJBQXlCLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ2xFO0lBRWUsVUFBVSxHQUFHLDJCQUFhLENBQUMsTUFBTSxDQUFDO0lBRWxEOztPQUVHO0lBQ2EsY0FBYyxDQUFZO0lBRTFDOztPQUVHO0lBQ2EsVUFBVSxDQUFhO0lBRXZDLFlBQVksY0FBeUIsRUFBRSxVQUFzQjtRQUMzRCxLQUFLLEVBQUUsQ0FBQzs7Ozs7OytDQTVCQyx5QkFBeUI7Ozs7UUE2QmxDLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0tBQzlCO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksSUFBSSxDQUFDLEtBQWdCLEVBQUUsT0FBaUI7Ozs7Ozs7Ozs7UUFDN0MsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUN4QjtJQUVEOztPQUVHO0lBQ08sc0JBQXNCO1FBQzlCLE9BQU87WUFDTCxNQUFNLEVBQUU7Z0JBQ04sU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVztnQkFDMUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO2FBQ3RDO1NBQ0YsQ0FBQztLQUNIOztBQTVESCw4REE2REM7QUFFRDs7K0VBRStFO0FBRS9FOzs7OztHQUtHO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSxzQkFBc0I7O0lBQ3BFOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBb0IsRUFBRSxjQUF3Qjs7Ozs7Ozs7OztRQUNqRSxPQUFPLElBQUksMEJBQTBCLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0tBQ2xFO0lBRWUsVUFBVSxHQUFHLDJCQUFhLENBQUMsY0FBYyxDQUFDO0lBRTFEOztPQUVHO0lBQ2EsU0FBUyxDQUFZO0lBRXJDOztPQUVHO0lBQ2Msb0JBQW9CLENBQVU7SUFFL0MsWUFBWSxTQUFvQixFQUFFLGNBQXdCO1FBQ3hELEtBQUssRUFBRSxDQUFDOzs7Ozs7K0NBekJDLDBCQUEwQjs7OztRQTBCbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGNBQWMsSUFBSSxJQUFJLENBQUM7S0FDcEQ7SUFFRDs7Ozs7O09BTUc7SUFDSSxJQUFJLENBQUMsS0FBZ0IsRUFBRSxPQUFpQjs7Ozs7Ozs7OztRQUM3QyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLHFCQUFxQjtZQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUEsMENBQXFCLEVBQUM7b0JBQ25DLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVk7b0JBQ25DLFVBQVUsRUFBRSwyQkFBMkI7aUJBQ3hDLENBQUMsQ0FBQztnQkFDSCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3RCLE1BQU0sSUFBSSxvQ0FBZSxDQUFDLHNDQUFzQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdkYsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxZQUFZLDJCQUFjLEVBQUUsQ0FBQztnQkFDcEQsa0NBQWtDO2dCQUNsQyxJQUFJLENBQUM7b0JBQ0gsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUM5RSxNQUFNLE1BQU0sR0FBRyxJQUFBLDBDQUFxQixFQUFDO3dCQUNuQyxNQUFNLEVBQUUsYUFBYTt3QkFDckIsVUFBVSxFQUFFLDRCQUE0QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFO3FCQUN4RSxDQUFDLENBQUM7b0JBQ0gsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUN0QixNQUFNLElBQUksb0NBQWUsQ0FBQyxzQ0FBc0MsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3ZGLENBQUM7Z0JBQ0gsQ0FBQztnQkFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUNYLElBQUksQ0FBQyxZQUFZLG9DQUFlLEVBQUUsQ0FBQzt3QkFDakMsTUFBTSxDQUFDLENBQUM7b0JBQ1YsQ0FBQztvQkFDRCxNQUFNLElBQUksb0NBQWUsQ0FDdkIsc0NBQXNDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3JILENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7WUFDRCxtREFBbUQ7UUFDckQsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQix1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUN4QjtJQUVEOztPQUVHO0lBQ08sc0JBQXNCO1FBQzlCLE9BQU87WUFDTCxhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7U0FDeEMsQ0FBQztLQUNIOztBQXRGSCxnRUF1RkM7QUFFRDs7K0VBRStFO0FBRS9FOzs7OztHQUtHO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSxzQkFBc0I7O0lBQ25FOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFzQjs7Ozs7Ozs7OztRQUN6QyxPQUFPLElBQUkseUJBQXlCLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDbkQ7SUFFZSxVQUFVLEdBQUcsMkJBQWEsQ0FBQyxZQUFZLENBQUM7SUFFeEQ7O09BRUc7SUFDYSxXQUFXLENBQVk7SUFFdkMsWUFBWSxXQUFzQjtRQUNoQyxLQUFLLEVBQUUsQ0FBQzs7Ozs7OytDQW5CQyx5QkFBeUI7Ozs7UUFvQmxDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0tBQ2hDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksSUFBSSxDQUFDLEtBQWdCLEVBQUUsT0FBaUI7Ozs7Ozs7Ozs7UUFDN0Msd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0RCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO0tBQ3hCO0lBRUQ7O09BRUc7SUFDTyxzQkFBc0I7UUFDOUIsT0FBTztZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtTQUN4QyxDQUFDO0tBQ0g7O0FBOUNILDhEQStDQztBQUVEOzsrRUFFK0U7QUFFL0U7Ozs7Ozs7R0FPRztBQUNILE1BQWEsNEJBQTZCLFNBQVEsc0JBQXNCOztJQUN0RTs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBZ0I7UUFDbkMsT0FBTyxJQUFJLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ25EO0lBRWUsVUFBVSxHQUFHLDJCQUFhLENBQUMsVUFBVSxDQUFDO0lBRXREOztPQUVHO0lBQ2EsUUFBUSxDQUFTO0lBRWpDLFlBQVksUUFBZ0I7UUFDMUIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDakM7SUFFRDs7Ozs7O09BTUc7SUFDSSxJQUFJLENBQUMsTUFBaUIsRUFBRSxRQUFrQjs7Ozs7Ozs7OztRQUMvQyxnRUFBZ0U7UUFDaEUsdUVBQXVFO1FBQ3ZFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7S0FDeEI7SUFFRDs7T0FFRztJQUNPLHNCQUFzQjtRQUM5QixPQUFPO1lBQ0wsU0FBUyxFQUFFO2dCQUNULFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUN4QjtTQUNGLENBQUM7S0FDSDtJQUVEOzs7Ozs7OztPQVFHO0lBQ0ssZ0JBQWdCLENBQUMsUUFBZ0I7UUFDdkMsSUFBSSxtQkFBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBQSx5Q0FBb0IsRUFDakMsUUFBUSxFQUNSLHFCQUFxQixFQUNyQixlQUFlLEVBQ2Ysd0hBQXdILENBQ3pILENBQUM7UUFFRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLG9DQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFFRCwrREFBK0Q7UUFDL0QsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9FLE1BQU0sSUFBSSxvQ0FBZSxDQUN2QixzRUFBc0U7Z0JBQ3RFLDRFQUE0RSxDQUM3RSxDQUFDO1FBQ0osQ0FBQztLQUNGOztBQWhGSCxvRUFpRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBJR2F0ZXdheSB9IGZyb20gJy4uL2dhdGV3YXktYmFzZSc7XG5pbXBvcnQgeyBBcGlTY2hlbWEsIEFzc2V0QXBpU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEvYXBpLXNjaGVtYSc7XG5pbXBvcnQgeyBUb29sU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEvdG9vbC1zY2hlbWEnO1xuaW1wb3J0IHsgTWNwVGFyZ2V0VHlwZSB9IGZyb20gJy4vdGFyZ2V0LWJhc2UnO1xuaW1wb3J0IHsgdmFsaWRhdGVPcGVuQXBpU2NoZW1hLCB2YWxpZGF0ZUZpZWxkUGF0dGVybiwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi1oZWxwZXJzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgIEludGVyZmFjZVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gcmV0dXJuZWQgYnkgYmluZGluZyBhIHRhcmdldCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0Q29uZmlndXJhdGlvbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgYm91bmRcbiAgICovXG4gIHJlYWRvbmx5IGJvdW5kOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEJhc2UgaW50ZXJmYWNlIGZvciB0YXJnZXQgY29uZmlndXJhdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVGFyZ2V0Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IHR5cGVcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldFR5cGU6IE1jcFRhcmdldFR5cGU7XG5cbiAgLyoqXG4gICAqIEJpbmRzIHRoZSBjb25maWd1cmF0aW9uIHRvIGEgY29uc3RydWN0IHNjb3BlXG4gICAqIFNldHMgdXAgcGVybWlzc2lvbnMgYW5kIGRlcGVuZGVuY2llc1xuICAgKi9cbiAgYmluZChzY29wZTogQ29uc3RydWN0LCBnYXRld2F5OiBJR2F0ZXdheSk6IFRhcmdldENvbmZpZ3VyYXRpb25Db25maWc7XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGNvbmZpZ3VyYXRpb24gYXMgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9yZW5kZXIoKTogYW55O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgIE1DUCBUYXJnZXQgQ29uZmlndXJhdGlvbiBCYXNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgTUNQIHRhcmdldCBjb25maWd1cmF0aW9uc1xuICogUHJvdmlkZXMgY29tbW9uIGZ1bmN0aW9uYWxpdHkgZm9yIGFsbCBNQ1AgdGFyZ2V0IHR5cGVzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNY3BUYXJnZXRDb25maWd1cmF0aW9uIGltcGxlbWVudHMgSVRhcmdldENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIHRhcmdldCB0eXBlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdGFyZ2V0VHlwZTogTWNwVGFyZ2V0VHlwZTtcblxuICAvKipcbiAgICogQmluZHMgdGhlIGNvbmZpZ3VyYXRpb24gdG8gYSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogU2V0cyB1cCBwZXJtaXNzaW9ucyBhbmQgZGVwZW5kZW5jaWVzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYmluZChzY29wZTogQ29uc3RydWN0LCBnYXRld2F5OiBJR2F0ZXdheSk6IFRhcmdldENvbmZpZ3VyYXRpb25Db25maWc7XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIE1DUC1zcGVjaWZpYyBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVuZGVyTWNwQ29uZmlndXJhdGlvbigpOiBhbnk7XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGNvbmZpZ3VyYXRpb24gYXMgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfcmVuZGVyKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1jcDogdGhpcy5yZW5kZXJNY3BDb25maWd1cmF0aW9uKCksXG4gICAgfTtcbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgIExhbWJkYSBUYXJnZXQgQ29uZmlndXJhdGlvblxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIExhbWJkYS1iYXNlZCBNQ1AgdGFyZ2V0c1xuICpcbiAqIFRoaXMgY29uZmlndXJhdGlvbiB3cmFwcyBhIExhbWJkYSBmdW5jdGlvbiBhcyBNQ1AgdG9vbHMsXG4gKiBhbGxvd2luZyB0aGUgZ2F0ZXdheSB0byBpbnZva2UgdGhlIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdG9vbCBjYXBhYmlsaXRpZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW1iZGFUYXJnZXRDb25maWd1cmF0aW9uIGV4dGVuZHMgTWNwVGFyZ2V0Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBMYW1iZGEgdGFyZ2V0IGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGxhbWJkYUZ1bmN0aW9uIFRoZSBMYW1iZGEgZnVuY3Rpb24gdG8gaW52b2tlXG4gICAqIEBwYXJhbSB0b29sU2NoZW1hIFRoZSBzY2hlbWEgZGVmaW5pbmcgdGhlIHRvb2xzXG4gICAqIEByZXR1cm5zIEEgbmV3IExhbWJkYVRhcmdldENvbmZpZ3VyYXRpb24gaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlKFxuICAgIGxhbWJkYUZ1bmN0aW9uOiBJRnVuY3Rpb24sXG4gICAgdG9vbFNjaGVtYTogVG9vbFNjaGVtYSxcbiAgKTogTGFtYmRhVGFyZ2V0Q29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBMYW1iZGFUYXJnZXRDb25maWd1cmF0aW9uKGxhbWJkYUZ1bmN0aW9uLCB0b29sU2NoZW1hKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRUeXBlID0gTWNwVGFyZ2V0VHlwZS5MQU1CREE7XG5cbiAgLyoqXG4gICAqIFRoZSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIHRoZSBNQ1Agc2VydmVyIGxvZ2ljXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb246IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIHRvb2wgc2NoZW1hIHRoYXQgZGVmaW5lcyB0aGUgYXZhaWxhYmxlIHRvb2xzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdG9vbFNjaGVtYTogVG9vbFNjaGVtYTtcblxuICBjb25zdHJ1Y3RvcihsYW1iZGFGdW5jdGlvbjogSUZ1bmN0aW9uLCB0b29sU2NoZW1hOiBUb29sU2NoZW1hKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmxhbWJkYUZ1bmN0aW9uID0gbGFtYmRhRnVuY3Rpb247XG4gICAgdGhpcy50b29sU2NoZW1hID0gdG9vbFNjaGVtYTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyB0aGlzIGNvbmZpZ3VyYXRpb24gdG8gYSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogU2V0cyB1cCBuZWNlc3NhcnkgcGVybWlzc2lvbnMgZm9yIHRoZSBnYXRld2F5IHRvIGludm9rZSB0aGUgTGFtYmRhIGZ1bmN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBnYXRld2F5IFRoZSBnYXRld2F5IHRoYXQgd2lsbCB1c2UgdGhpcyB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIGdhdGV3YXk6IElHYXRld2F5KTogVGFyZ2V0Q29uZmlndXJhdGlvbkNvbmZpZyB7XG4gICAgLy8gQmluZCB0aGUgdG9vbCBzY2hlbWFcbiAgICB0aGlzLnRvb2xTY2hlbWEuYmluZChzY29wZSk7XG4gICAgLy8gR3JhbnQgcGVybWlzc2lvbnMgdG8gZ2F0ZXdheSByb2xlXG4gICAgdGhpcy50b29sU2NoZW1hLmdyYW50UGVybWlzc2lvbnNUb1JvbGUoZ2F0ZXdheS5yb2xlKTtcbiAgICB0aGlzLmxhbWJkYUZ1bmN0aW9uLmdyYW50SW52b2tlKGdhdGV3YXkucm9sZSk7XG5cbiAgICByZXR1cm4geyBib3VuZDogdHJ1ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIE1DUC1zcGVjaWZpYyBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVuZGVyTWNwQ29uZmlndXJhdGlvbigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBsYW1iZGE6IHtcbiAgICAgICAgbGFtYmRhQXJuOiB0aGlzLmxhbWJkYUZ1bmN0aW9uLmZ1bmN0aW9uQXJuLFxuICAgICAgICB0b29sU2NoZW1hOiB0aGlzLnRvb2xTY2hlbWEuX3JlbmRlcigpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgT3BlbkFQSSBUYXJnZXQgQ29uZmlndXJhdGlvblxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIE9wZW5BUEktYmFzZWQgTUNQIHRhcmdldHNcbiAqXG4gKiBUaGlzIGNvbmZpZ3VyYXRpb24gZXhwb3NlcyBhbiBPcGVuQVBJL1JFU1QgQVBJIGFzIE1DUCB0b29scyxcbiAqIGFsbG93aW5nIHRoZSBnYXRld2F5IHRvIHRyYW5zZm9ybSBBUEkgb3BlcmF0aW9ucyBpbnRvIHRvb2wgY2FsbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVuQXBpVGFyZ2V0Q29uZmlndXJhdGlvbiBleHRlbmRzIE1jcFRhcmdldENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlIGFuIE9wZW5BUEkgdGFyZ2V0IGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGFwaVNjaGVtYSBUaGUgT3BlbkFQSSBzY2hlbWFcbiAgICogQHBhcmFtIHZhbGlkYXRlU2NoZW1hIFdoZXRoZXIgdG8gdmFsaWRhdGUgdGhlIE9wZW5BUEkgc2NoZW1hIChvbmx5IGFwcGxpZXMgdG8gaW5saW5lIHNjaGVtYXMpXG4gICAqIEByZXR1cm5zIEEgbmV3IE9wZW5BcGlUYXJnZXRDb25maWd1cmF0aW9uIGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZShhcGlTY2hlbWE6IEFwaVNjaGVtYSwgdmFsaWRhdGVTY2hlbWE/OiBib29sZWFuKTogT3BlbkFwaVRhcmdldENvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBuZXcgT3BlbkFwaVRhcmdldENvbmZpZ3VyYXRpb24oYXBpU2NoZW1hLCB2YWxpZGF0ZVNjaGVtYSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0VHlwZSA9IE1jcFRhcmdldFR5cGUuT1BFTkFQSV9TQ0hFTUE7XG5cbiAgLyoqXG4gICAqIFRoZSBPcGVuQVBJIHNjaGVtYSB0aGF0IGRlZmluZXMgdGhlIEFQSVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFwaVNjaGVtYTogQXBpU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHZhbGlkYXRlIHRoZSBPcGVuQVBJIHNjaGVtYVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBzaG91bGRWYWxpZGF0ZVNjaGVtYTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihhcGlTY2hlbWE6IEFwaVNjaGVtYSwgdmFsaWRhdGVTY2hlbWE/OiBib29sZWFuKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFwaVNjaGVtYSA9IGFwaVNjaGVtYTtcbiAgICB0aGlzLnNob3VsZFZhbGlkYXRlU2NoZW1hID0gdmFsaWRhdGVTY2hlbWEgPz8gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyB0aGlzIGNvbmZpZ3VyYXRpb24gdG8gYSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogU2V0cyB1cCBuZWNlc3NhcnkgcGVybWlzc2lvbnMgZm9yIHRoZSBnYXRld2F5IHRvIGFjY2VzcyB0aGUgQVBJIHNjaGVtYVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gZ2F0ZXdheSBUaGUgZ2F0ZXdheSB0aGF0IHdpbGwgdXNlIHRoaXMgdGFyZ2V0XG4gICAqL1xuICBwdWJsaWMgYmluZChzY29wZTogQ29uc3RydWN0LCBnYXRld2F5OiBJR2F0ZXdheSk6IFRhcmdldENvbmZpZ3VyYXRpb25Db25maWcge1xuICAgIGlmICh0aGlzLnNob3VsZFZhbGlkYXRlU2NoZW1hKSB7XG4gICAgICAvLyBGb3IgaW5saW5lIHNjaGVtYXNcbiAgICAgIGlmICh0aGlzLmFwaVNjaGVtYS5pbmxpbmVTY2hlbWEpIHtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGVPcGVuQXBpU2NoZW1hKHtcbiAgICAgICAgICBzY2hlbWE6IHRoaXMuYXBpU2NoZW1hLmlubGluZVNjaGVtYSxcbiAgICAgICAgICBzY2hlbWFOYW1lOiAnT3BlbkFQSSBzY2hlbWEgZm9yIHRhcmdldCcsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGBPcGVuQVBJIHNjaGVtYSB2YWxpZGF0aW9uIGZhaWxlZDpcXG4ke2Vycm9ycy5qb2luKCdcXG4nKX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLmFwaVNjaGVtYSBpbnN0YW5jZW9mIEFzc2V0QXBpU2NoZW1hKSB7XG4gICAgICAgIC8vIEZvciBhc3NldCBzY2hlbWFzIChsb2NhbCBmaWxlcylcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBzY2hlbWFDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKHRoaXMuYXBpU2NoZW1hLl9nZXRGaWxlUGF0aCgpLCAndXRmLTgnKTtcbiAgICAgICAgICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZU9wZW5BcGlTY2hlbWEoe1xuICAgICAgICAgICAgc2NoZW1hOiBzY2hlbWFDb250ZW50LFxuICAgICAgICAgICAgc2NoZW1hTmFtZTogYE9wZW5BUEkgc2NoZW1hIGZyb20gZmlsZSAke3RoaXMuYXBpU2NoZW1hLl9nZXRGaWxlUGF0aCgpfWAsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGBPcGVuQVBJIHNjaGVtYSB2YWxpZGF0aW9uIGZhaWxlZDpcXG4ke2Vycm9ycy5qb2luKCdcXG4nKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFZhbGlkYXRpb25FcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gcmVhZCBPcGVuQVBJIHNjaGVtYSBmcm9tICR7dGhpcy5hcGlTY2hlbWEuX2dldEZpbGVQYXRoKCl9OiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKX1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFMzIHNjaGVtYXMgY2Fubm90IGJlIHZhbGlkYXRlZCBhdCBzeW50aGVzaXMgdGltZVxuICAgIH1cblxuICAgIC8vIEJpbmQgdGhlIEFQSSBzY2hlbWFcbiAgICB0aGlzLmFwaVNjaGVtYS5iaW5kKHNjb3BlKTtcbiAgICAvLyBHcmFudCBwZXJtaXNzaW9ucyB0byBnYXRld2F5IHJvbGUgaWYgc2NoZW1hIGlzIGluIFMzXG4gICAgdGhpcy5hcGlTY2hlbWEuZ3JhbnRQZXJtaXNzaW9uc1RvUm9sZShnYXRld2F5LnJvbGUpO1xuXG4gICAgcmV0dXJuIHsgYm91bmQ6IHRydWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBNQ1Atc3BlY2lmaWMgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIHJlbmRlck1jcENvbmZpZ3VyYXRpb24oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgb3BlbkFwaVNjaGVtYTogdGhpcy5hcGlTY2hlbWEuX3JlbmRlcigpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICBTbWl0aHkgVGFyZ2V0IENvbmZpZ3VyYXRpb25cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBTbWl0aHktYmFzZWQgTUNQIHRhcmdldHNcbiAqXG4gKiBUaGlzIGNvbmZpZ3VyYXRpb24gZXhwb3NlcyBhIFNtaXRoeS1tb2RlbGVkIEFQSSBhcyBNQ1AgdG9vbHMsXG4gKiBhbGxvd2luZyB0aGUgZ2F0ZXdheSB0byB0cmFuc2Zvcm0gU21pdGh5IG9wZXJhdGlvbnMgaW50byB0b29sIGNhbGxzLlxuICovXG5leHBvcnQgY2xhc3MgU21pdGh5VGFyZ2V0Q29uZmlndXJhdGlvbiBleHRlbmRzIE1jcFRhcmdldENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlIGEgU21pdGh5IHRhcmdldCBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBzbWl0aHlNb2RlbCBUaGUgU21pdGh5IG1vZGVsIHNjaGVtYVxuICAgKiBAcmV0dXJucyBBIG5ldyBTbWl0aHlUYXJnZXRDb25maWd1cmF0aW9uIGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZShzbWl0aHlNb2RlbDogQXBpU2NoZW1hKTogU21pdGh5VGFyZ2V0Q29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBTbWl0aHlUYXJnZXRDb25maWd1cmF0aW9uKHNtaXRoeU1vZGVsKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRUeXBlID0gTWNwVGFyZ2V0VHlwZS5TTUlUSFlfTU9ERUw7XG5cbiAgLyoqXG4gICAqIFRoZSBTbWl0aHkgbW9kZWwgdGhhdCBkZWZpbmVzIHRoZSBBUElcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzbWl0aHlNb2RlbDogQXBpU2NoZW1hO1xuXG4gIGNvbnN0cnVjdG9yKHNtaXRoeU1vZGVsOiBBcGlTY2hlbWEpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc21pdGh5TW9kZWwgPSBzbWl0aHlNb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyB0aGlzIGNvbmZpZ3VyYXRpb24gdG8gYSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogU2V0cyB1cCBuZWNlc3NhcnkgcGVybWlzc2lvbnMgZm9yIHRoZSBnYXRld2F5IHRvIGFjY2VzcyB0aGUgU21pdGh5IG1vZGVsXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBnYXRld2F5IFRoZSBnYXRld2F5IHRoYXQgd2lsbCB1c2UgdGhpcyB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIGdhdGV3YXk6IElHYXRld2F5KTogVGFyZ2V0Q29uZmlndXJhdGlvbkNvbmZpZyB7XG4gICAgLy8gQmluZCB0aGUgU21pdGh5IG1vZGVsXG4gICAgdGhpcy5zbWl0aHlNb2RlbC5iaW5kKHNjb3BlKTtcbiAgICAvLyBHcmFudCBwZXJtaXNzaW9ucyB0byBnYXRld2F5IHJvbGUgaWYgc2NoZW1hIGlzIGluIFMzXG4gICAgdGhpcy5zbWl0aHlNb2RlbC5ncmFudFBlcm1pc3Npb25zVG9Sb2xlKGdhdGV3YXkucm9sZSk7XG5cbiAgICByZXR1cm4geyBib3VuZDogdHJ1ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIE1DUC1zcGVjaWZpYyBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVuZGVyTWNwQ29uZmlndXJhdGlvbigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBzbWl0aHlNb2RlbDogdGhpcy5zbWl0aHlNb2RlbC5fcmVuZGVyKCksXG4gICAgfTtcbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgIE1DUCBTZXJ2ZXIgVGFyZ2V0IENvbmZpZ3VyYXRpb25cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBNQ1AgU2VydmVyLWJhc2VkIHRhcmdldHNcbiAqXG4gKiBNQ1AgKE1vZGVsIENvbnRleHQgUHJvdG9jb2wpIHNlcnZlcnMgcHJvdmlkZSB0b29scywgZGF0YSBhY2Nlc3MsIGFuZCBjdXN0b21cbiAqIGZ1bmN0aW9ucyBmb3IgQUkgYWdlbnRzLiBXaGVuIHlvdSBjb25maWd1cmUgYW4gTUNQIHNlcnZlciBhcyBhIGdhdGV3YXkgdGFyZ2V0LFxuICogdGhlIGdhdGV3YXkgYXV0b21hdGljYWxseSBkaXNjb3ZlcnMgYW5kIGluZGV4ZXMgYXZhaWxhYmxlIHRvb2xzIHRocm91Z2hcbiAqIHN5bmNocm9uaXphdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIE1jcFNlcnZlclRhcmdldENvbmZpZ3VyYXRpb24gZXh0ZW5kcyBNY3BUYXJnZXRDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBNQ1Agc2VydmVyIHRhcmdldCBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBlbmRwb2ludCBUaGUgSFRUUFMgZW5kcG9pbnQgVVJMIG9mIHRoZSBNQ1Agc2VydmVyXG4gICAqIEByZXR1cm5zIEEgbmV3IE1jcFNlcnZlclRhcmdldENvbmZpZ3VyYXRpb24gaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlKGVuZHBvaW50OiBzdHJpbmcpOiBNY3BTZXJ2ZXJUYXJnZXRDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gbmV3IE1jcFNlcnZlclRhcmdldENvbmZpZ3VyYXRpb24oZW5kcG9pbnQpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldFR5cGUgPSBNY3BUYXJnZXRUeXBlLk1DUF9TRVJWRVI7XG5cbiAgLyoqXG4gICAqIFRoZSBIVFRQUyBlbmRwb2ludCBVUkwgb2YgdGhlIE1DUCBzZXJ2ZXJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGVuZHBvaW50OiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW5kcG9pbnQgPSBlbmRwb2ludDtcbiAgICB0aGlzLnZhbGlkYXRlRW5kcG9pbnQoZW5kcG9pbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIHRoaXMgY29uZmlndXJhdGlvbiB0byBhIGNvbnN0cnVjdCBzY29wZVxuICAgKiBObyBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIGFyZSBuZWVkZWQgZm9yIE1DUCBzZXJ2ZXIgdGFyZ2V0c1xuICAgKlxuICAgKiBAcGFyYW0gX3Njb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIF9nYXRld2F5IFRoZSBnYXRld2F5IHRoYXQgd2lsbCB1c2UgdGhpcyB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyBiaW5kKF9zY29wZTogQ29uc3RydWN0LCBfZ2F0ZXdheTogSUdhdGV3YXkpOiBUYXJnZXRDb25maWd1cmF0aW9uQ29uZmlnIHtcbiAgICAvLyBNQ1Agc2VydmVyIHRhcmdldHMgZG9uJ3QgcmVxdWlyZSBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIHNldHVwXG4gICAgLy8gQXV0aGVudGljYXRpb24gaXMgaGFuZGxlZCB0aHJvdWdoIGNyZWRlbnRpYWwgcHJvdmlkZXIgY29uZmlndXJhdGlvbnNcbiAgICByZXR1cm4geyBib3VuZDogdHJ1ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIE1DUC1zcGVjaWZpYyBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVuZGVyTWNwQ29uZmlndXJhdGlvbigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBtY3BTZXJ2ZXI6IHtcbiAgICAgICAgZW5kcG9pbnQ6IHRoaXMuZW5kcG9pbnQsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBNQ1Agc2VydmVyIGVuZHBvaW50XG4gICAqIC0gTXVzdCB1c2UgSFRUUFMgcHJvdG9jb2xcbiAgICogLSBTaG91bGQgYmUgcHJvcGVybHkgVVJMIGVuY29kZWRcbiAgICpcbiAgICogQHBhcmFtIGVuZHBvaW50IFRoZSBlbmRwb2ludCBVUkwgdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyBWYWxpZGF0aW9uRXJyb3IgaWYgdGhlIGVuZHBvaW50IGlzIGludmFsaWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoZW5kcG9pbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgICBlbmRwb2ludCxcbiAgICAgICdNQ1Agc2VydmVyIGVuZHBvaW50JyxcbiAgICAgIC9eaHR0cHM6XFwvXFwvLisvLFxuICAgICAgJ01DUCBzZXJ2ZXIgZW5kcG9pbnQgbXVzdCB1c2UgSFRUUFMgcHJvdG9jb2wgKGUuZy4sIGh0dHBzOi8vbXktc2VydmVyLmV4YW1wbGUuY29tKS4gRW5zdXJlIHRoZSBVUkwgaXMgcHJvcGVybHkgZW5jb2RlZC4nLFxuICAgICk7XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoZXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG5cbiAgICAvLyBBZGRpdGlvbmFsIGhlbHBmdWwgdmFsaWRhdGlvbiBmb3IgY29tbW9uIFVSTCBlbmNvZGluZyBpc3N1ZXNcbiAgICBpZiAoZW5kcG9pbnQuaW5jbHVkZXMoJyAnKSB8fCBlbmRwb2ludC5pbmNsdWRlcygnPCcpIHx8IGVuZHBvaW50LmluY2x1ZGVzKCc+JykpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICdNQ1Agc2VydmVyIGVuZHBvaW50IGNvbnRhaW5zIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgYmUgVVJMLWVuY29kZWQuICcgK1xuICAgICAgICAnUGxlYXNlIGVuc3VyZSB0aGUgVVJMIGlzIHByb3Blcmx5IGVuY29kZWQgYmVmb3JlIHBhc3NpbmcgdG8gdGhlIGNvbnN0cnVjdC4nLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
407
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0YXJnZXQtY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2Q0FBb0M7QUFJcEMsb0RBQWdFO0FBRWhFLCtDQUE4QztBQUM5Qyw4REFBcUc7QUFzQ3JHOzsrRUFFK0U7QUFFL0U7OztHQUdHO0FBQ0gsTUFBc0Isc0JBQXNCOztJQWlCMUM7OztPQUdHO0lBQ0ksT0FBTztRQUNaLE9BQU87WUFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1NBQ25DLENBQUM7S0FDSDs7QUF6Qkgsd0RBMEJDO0FBRUQ7OytFQUUrRTtBQUUvRTs7Ozs7R0FLRztBQUNILE1BQWEseUJBQTBCLFNBQVEsc0JBQXNCOztJQUNuRTs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUNsQixjQUF5QixFQUN6QixVQUFzQjs7Ozs7Ozs7OztRQUV0QixPQUFPLElBQUkseUJBQXlCLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQ2xFO0lBRWUsVUFBVSxHQUFHLDJCQUFhLENBQUMsTUFBTSxDQUFDO0lBRWxEOztPQUVHO0lBQ2EsY0FBYyxDQUFZO0lBRTFDOztPQUVHO0lBQ2EsVUFBVSxDQUFhO0lBRXZDLFlBQVksY0FBeUIsRUFBRSxVQUFzQjtRQUMzRCxLQUFLLEVBQUUsQ0FBQzs7Ozs7OytDQTVCQyx5QkFBeUI7Ozs7UUE2QmxDLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0tBQzlCO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksSUFBSSxDQUFDLEtBQWdCLEVBQUUsT0FBaUI7Ozs7Ozs7Ozs7UUFDN0MsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLG9DQUFvQztR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O1lBQ2pDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBQSx5Q0FBb0IsRUFDakMsUUFBUSxFQUNSLHFCQUFxQixFQUNyQixlQUFlLEVBQ2Ysd0hBQXdILENBQ3pILENBQUM7UUFFRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLG9DQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFFRCwrREFBK0Q7UUFDL0QsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9FLE1BQU0sSUFBSSxvQ0FBZSxDQUN2QixzRUFBc0U7Z0JBQ3RFLDRFQUE0RSxDQUM3RSxDQUFDO1FBQ0osQ0FBQztLQUNGOztBQWhGSCxvRUFpRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJR2F0ZXdheSB9IGZyb20gJy4uL2dhdGV3YXktYmFzZSc7XG5pbXBvcnQgeyBBcGlTY2hlbWEsIEFzc2V0QXBpU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEvYXBpLXNjaGVtYSc7XG5pbXBvcnQgeyBUb29sU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEvdG9vbC1zY2hlbWEnO1xuaW1wb3J0IHsgTWNwVGFyZ2V0VHlwZSB9IGZyb20gJy4vdGFyZ2V0LWJhc2UnO1xuaW1wb3J0IHsgdmFsaWRhdGVPcGVuQXBpU2NoZW1hLCB2YWxpZGF0ZUZpZWxkUGF0dGVybiwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi1oZWxwZXJzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgIEludGVyZmFjZVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gcmV0dXJuZWQgYnkgYmluZGluZyBhIHRhcmdldCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0Q29uZmlndXJhdGlvbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgYm91bmRcbiAgICovXG4gIHJlYWRvbmx5IGJvdW5kOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEJhc2UgaW50ZXJmYWNlIGZvciB0YXJnZXQgY29uZmlndXJhdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVGFyZ2V0Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IHR5cGVcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldFR5cGU6IE1jcFRhcmdldFR5cGU7XG5cbiAgLyoqXG4gICAqIEJpbmRzIHRoZSBjb25maWd1cmF0aW9uIHRvIGEgY29uc3RydWN0IHNjb3BlXG4gICAqIFNldHMgdXAgcGVybWlzc2lvbnMgYW5kIGRlcGVuZGVuY2llc1xuICAgKi9cbiAgYmluZChzY29wZTogQ29uc3RydWN0LCBnYXRld2F5OiBJR2F0ZXdheSk6IFRhcmdldENvbmZpZ3VyYXRpb25Db25maWc7XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGNvbmZpZ3VyYXRpb24gYXMgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9yZW5kZXIoKTogYW55O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgIE1DUCBUYXJnZXQgQ29uZmlndXJhdGlvbiBCYXNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgTUNQIHRhcmdldCBjb25maWd1cmF0aW9uc1xuICogUHJvdmlkZXMgY29tbW9uIGZ1bmN0aW9uYWxpdHkgZm9yIGFsbCBNQ1AgdGFyZ2V0IHR5cGVzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNY3BUYXJnZXRDb25maWd1cmF0aW9uIGltcGxlbWVudHMgSVRhcmdldENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIHRhcmdldCB0eXBlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdGFyZ2V0VHlwZTogTWNwVGFyZ2V0VHlwZTtcblxuICAvKipcbiAgICogQmluZHMgdGhlIGNvbmZpZ3VyYXRpb24gdG8gYSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogU2V0cyB1cCBwZXJtaXNzaW9ucyBhbmQgZGVwZW5kZW5jaWVzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYmluZChzY29wZTogQ29uc3RydWN0LCBnYXRld2F5OiBJR2F0ZXdheSk6IFRhcmdldENvbmZpZ3VyYXRpb25Db25maWc7XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIE1DUC1zcGVjaWZpYyBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVuZGVyTWNwQ29uZmlndXJhdGlvbigpOiBhbnk7XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGNvbmZpZ3VyYXRpb24gYXMgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfcmVuZGVyKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1jcDogdGhpcy5yZW5kZXJNY3BDb25maWd1cmF0aW9uKCksXG4gICAgfTtcbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgIExhbWJkYSBUYXJnZXQgQ29uZmlndXJhdGlvblxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIExhbWJkYS1iYXNlZCBNQ1AgdGFyZ2V0c1xuICpcbiAqIFRoaXMgY29uZmlndXJhdGlvbiB3cmFwcyBhIExhbWJkYSBmdW5jdGlvbiBhcyBNQ1AgdG9vbHMsXG4gKiBhbGxvd2luZyB0aGUgZ2F0ZXdheSB0byBpbnZva2UgdGhlIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdG9vbCBjYXBhYmlsaXRpZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW1iZGFUYXJnZXRDb25maWd1cmF0aW9uIGV4dGVuZHMgTWNwVGFyZ2V0Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBMYW1iZGEgdGFyZ2V0IGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGxhbWJkYUZ1bmN0aW9uIFRoZSBMYW1iZGEgZnVuY3Rpb24gdG8gaW52b2tlXG4gICAqIEBwYXJhbSB0b29sU2NoZW1hIFRoZSBzY2hlbWEgZGVmaW5pbmcgdGhlIHRvb2xzXG4gICAqIEByZXR1cm5zIEEgbmV3IExhbWJkYVRhcmdldENvbmZpZ3VyYXRpb24gaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlKFxuICAgIGxhbWJkYUZ1bmN0aW9uOiBJRnVuY3Rpb24sXG4gICAgdG9vbFNjaGVtYTogVG9vbFNjaGVtYSxcbiAgKTogTGFtYmRhVGFyZ2V0Q29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBMYW1iZGFUYXJnZXRDb25maWd1cmF0aW9uKGxhbWJkYUZ1bmN0aW9uLCB0b29sU2NoZW1hKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRUeXBlID0gTWNwVGFyZ2V0VHlwZS5MQU1CREE7XG5cbiAgLyoqXG4gICAqIFRoZSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIHRoZSBNQ1Agc2VydmVyIGxvZ2ljXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb246IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIHRvb2wgc2NoZW1hIHRoYXQgZGVmaW5lcyB0aGUgYXZhaWxhYmxlIHRvb2xzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdG9vbFNjaGVtYTogVG9vbFNjaGVtYTtcblxuICBjb25zdHJ1Y3RvcihsYW1iZGFGdW5jdGlvbjogSUZ1bmN0aW9uLCB0b29sU2NoZW1hOiBUb29sU2NoZW1hKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmxhbWJkYUZ1bmN0aW9uID0gbGFtYmRhRnVuY3Rpb247XG4gICAgdGhpcy50b29sU2NoZW1hID0gdG9vbFNjaGVtYTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyB0aGlzIGNvbmZpZ3VyYXRpb24gdG8gYSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogU2V0cyB1cCBuZWNlc3NhcnkgcGVybWlzc2lvbnMgZm9yIHRoZSBnYXRld2F5IHRvIGludm9rZSB0aGUgTGFtYmRhIGZ1bmN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBnYXRld2F5IFRoZSBnYXRld2F5IHRoYXQgd2lsbCB1c2UgdGhpcyB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIGdhdGV3YXk6IElHYXRld2F5KTogVGFyZ2V0Q29uZmlndXJhdGlvbkNvbmZpZyB7XG4gICAgLy8gQmluZCB0aGUgdG9vbCBzY2hlbWFcbiAgICB0aGlzLnRvb2xTY2hlbWEuYmluZChzY29wZSk7XG4gICAgLy8gR3JhbnQgcGVybWlzc2lvbnMgdG8gZ2F0ZXdheSByb2xlXG4gICAgdGhpcy50b29sU2NoZW1hLmdyYW50UGVybWlzc2lvbnNUb1JvbGUoZ2F0ZXdheS5yb2xlKTtcbiAgICB0aGlzLmxhbWJkYUZ1bmN0aW9uLmdyYW50SW52b2tlKGdhdGV3YXkucm9sZSk7XG5cbiAgICByZXR1cm4geyBib3VuZDogdHJ1ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIE1DUC1zcGVjaWZpYyBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVuZGVyTWNwQ29uZmlndXJhdGlvbigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBsYW1iZGE6IHtcbiAgICAgICAgbGFtYmRhQXJuOiB0aGlzLmxhbWJkYUZ1bmN0aW9uLmZ1bmN0aW9uQXJuLFxuICAgICAgICB0b29sU2NoZW1hOiB0aGlzLnRvb2xTY2hlbWEuX3JlbmRlcigpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgT3BlbkFQSSBUYXJnZXQgQ29uZmlndXJhdGlvblxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIE9wZW5BUEktYmFzZWQgTUNQIHRhcmdldHNcbiAqXG4gKiBUaGlzIGNvbmZpZ3VyYXRpb24gZXhwb3NlcyBhbiBPcGVuQVBJL1JFU1QgQVBJIGFzIE1DUCB0b29scyxcbiAqIGFsbG93aW5nIHRoZSBnYXRld2F5IHRvIHRyYW5zZm9ybSBBUEkgb3BlcmF0aW9ucyBpbnRvIHRvb2wgY2FsbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVuQXBpVGFyZ2V0Q29uZmlndXJhdGlvbiBleHRlbmRzIE1jcFRhcmdldENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlIGFuIE9wZW5BUEkgdGFyZ2V0IGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGFwaVNjaGVtYSBUaGUgT3BlbkFQSSBzY2hlbWFcbiAgICogQHBhcmFtIHZhbGlkYXRlU2NoZW1hIFdoZXRoZXIgdG8gdmFsaWRhdGUgdGhlIE9wZW5BUEkgc2NoZW1hIChvbmx5IGFwcGxpZXMgdG8gaW5saW5lIHNjaGVtYXMpXG4gICAqIEByZXR1cm5zIEEgbmV3IE9wZW5BcGlUYXJnZXRDb25maWd1cmF0aW9uIGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZShhcGlTY2hlbWE6IEFwaVNjaGVtYSwgdmFsaWRhdGVTY2hlbWE/OiBib29sZWFuKTogT3BlbkFwaVRhcmdldENvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBuZXcgT3BlbkFwaVRhcmdldENvbmZpZ3VyYXRpb24oYXBpU2NoZW1hLCB2YWxpZGF0ZVNjaGVtYSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0VHlwZSA9IE1jcFRhcmdldFR5cGUuT1BFTkFQSV9TQ0hFTUE7XG5cbiAgLyoqXG4gICAqIFRoZSBPcGVuQVBJIHNjaGVtYSB0aGF0IGRlZmluZXMgdGhlIEFQSVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFwaVNjaGVtYTogQXBpU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHZhbGlkYXRlIHRoZSBPcGVuQVBJIHNjaGVtYVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBzaG91bGRWYWxpZGF0ZVNjaGVtYTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihhcGlTY2hlbWE6IEFwaVNjaGVtYSwgdmFsaWRhdGVTY2hlbWE/OiBib29sZWFuKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFwaVNjaGVtYSA9IGFwaVNjaGVtYTtcbiAgICB0aGlzLnNob3VsZFZhbGlkYXRlU2NoZW1hID0gdmFsaWRhdGVTY2hlbWEgPz8gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyB0aGlzIGNvbmZpZ3VyYXRpb24gdG8gYSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogU2V0cyB1cCBuZWNlc3NhcnkgcGVybWlzc2lvbnMgZm9yIHRoZSBnYXRld2F5IHRvIGFjY2VzcyB0aGUgQVBJIHNjaGVtYVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gZ2F0ZXdheSBUaGUgZ2F0ZXdheSB0aGF0IHdpbGwgdXNlIHRoaXMgdGFyZ2V0XG4gICAqL1xuICBwdWJsaWMgYmluZChzY29wZTogQ29uc3RydWN0LCBnYXRld2F5OiBJR2F0ZXdheSk6IFRhcmdldENvbmZpZ3VyYXRpb25Db25maWcge1xuICAgIGlmICh0aGlzLnNob3VsZFZhbGlkYXRlU2NoZW1hKSB7XG4gICAgICAvLyBGb3IgaW5saW5lIHNjaGVtYXNcbiAgICAgIGlmICh0aGlzLmFwaVNjaGVtYS5pbmxpbmVTY2hlbWEpIHtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGVPcGVuQXBpU2NoZW1hKHtcbiAgICAgICAgICBzY2hlbWE6IHRoaXMuYXBpU2NoZW1hLmlubGluZVNjaGVtYSxcbiAgICAgICAgICBzY2hlbWFOYW1lOiAnT3BlbkFQSSBzY2hlbWEgZm9yIHRhcmdldCcsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGBPcGVuQVBJIHNjaGVtYSB2YWxpZGF0aW9uIGZhaWxlZDpcXG4ke2Vycm9ycy5qb2luKCdcXG4nKX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLmFwaVNjaGVtYSBpbnN0YW5jZW9mIEFzc2V0QXBpU2NoZW1hKSB7XG4gICAgICAgIC8vIEZvciBhc3NldCBzY2hlbWFzIChsb2NhbCBmaWxlcylcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBzY2hlbWFDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKHRoaXMuYXBpU2NoZW1hLl9nZXRGaWxlUGF0aCgpLCAndXRmLTgnKTtcbiAgICAgICAgICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZU9wZW5BcGlTY2hlbWEoe1xuICAgICAgICAgICAgc2NoZW1hOiBzY2hlbWFDb250ZW50LFxuICAgICAgICAgICAgc2NoZW1hTmFtZTogYE9wZW5BUEkgc2NoZW1hIGZyb20gZmlsZSAke3RoaXMuYXBpU2NoZW1hLl9nZXRGaWxlUGF0aCgpfWAsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGBPcGVuQVBJIHNjaGVtYSB2YWxpZGF0aW9uIGZhaWxlZDpcXG4ke2Vycm9ycy5qb2luKCdcXG4nKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFZhbGlkYXRpb25FcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gcmVhZCBPcGVuQVBJIHNjaGVtYSBmcm9tICR7dGhpcy5hcGlTY2hlbWEuX2dldEZpbGVQYXRoKCl9OiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKX1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFMzIHNjaGVtYXMgY2Fubm90IGJlIHZhbGlkYXRlZCBhdCBzeW50aGVzaXMgdGltZVxuICAgIH1cblxuICAgIC8vIEJpbmQgdGhlIEFQSSBzY2hlbWFcbiAgICB0aGlzLmFwaVNjaGVtYS5iaW5kKHNjb3BlKTtcbiAgICAvLyBHcmFudCBwZXJtaXNzaW9ucyB0byBnYXRld2F5IHJvbGUgaWYgc2NoZW1hIGlzIGluIFMzXG4gICAgdGhpcy5hcGlTY2hlbWEuZ3JhbnRQZXJtaXNzaW9uc1RvUm9sZShnYXRld2F5LnJvbGUpO1xuXG4gICAgcmV0dXJuIHsgYm91bmQ6IHRydWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBNQ1Atc3BlY2lmaWMgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIHJlbmRlck1jcENvbmZpZ3VyYXRpb24oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgb3BlbkFwaVNjaGVtYTogdGhpcy5hcGlTY2hlbWEuX3JlbmRlcigpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICBTbWl0aHkgVGFyZ2V0IENvbmZpZ3VyYXRpb25cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBTbWl0aHktYmFzZWQgTUNQIHRhcmdldHNcbiAqXG4gKiBUaGlzIGNvbmZpZ3VyYXRpb24gZXhwb3NlcyBhIFNtaXRoeS1tb2RlbGVkIEFQSSBhcyBNQ1AgdG9vbHMsXG4gKiBhbGxvd2luZyB0aGUgZ2F0ZXdheSB0byB0cmFuc2Zvcm0gU21pdGh5IG9wZXJhdGlvbnMgaW50byB0b29sIGNhbGxzLlxuICovXG5leHBvcnQgY2xhc3MgU21pdGh5VGFyZ2V0Q29uZmlndXJhdGlvbiBleHRlbmRzIE1jcFRhcmdldENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlIGEgU21pdGh5IHRhcmdldCBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBzbWl0aHlNb2RlbCBUaGUgU21pdGh5IG1vZGVsIHNjaGVtYVxuICAgKiBAcmV0dXJucyBBIG5ldyBTbWl0aHlUYXJnZXRDb25maWd1cmF0aW9uIGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZShzbWl0aHlNb2RlbDogQXBpU2NoZW1hKTogU21pdGh5VGFyZ2V0Q29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBTbWl0aHlUYXJnZXRDb25maWd1cmF0aW9uKHNtaXRoeU1vZGVsKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRUeXBlID0gTWNwVGFyZ2V0VHlwZS5TTUlUSFlfTU9ERUw7XG5cbiAgLyoqXG4gICAqIFRoZSBTbWl0aHkgbW9kZWwgdGhhdCBkZWZpbmVzIHRoZSBBUElcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzbWl0aHlNb2RlbDogQXBpU2NoZW1hO1xuXG4gIGNvbnN0cnVjdG9yKHNtaXRoeU1vZGVsOiBBcGlTY2hlbWEpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc21pdGh5TW9kZWwgPSBzbWl0aHlNb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyB0aGlzIGNvbmZpZ3VyYXRpb24gdG8gYSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogU2V0cyB1cCBuZWNlc3NhcnkgcGVybWlzc2lvbnMgZm9yIHRoZSBnYXRld2F5IHRvIGFjY2VzcyB0aGUgU21pdGh5IG1vZGVsXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBnYXRld2F5IFRoZSBnYXRld2F5IHRoYXQgd2lsbCB1c2UgdGhpcyB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIGdhdGV3YXk6IElHYXRld2F5KTogVGFyZ2V0Q29uZmlndXJhdGlvbkNvbmZpZyB7XG4gICAgLy8gQmluZCB0aGUgU21pdGh5IG1vZGVsXG4gICAgdGhpcy5zbWl0aHlNb2RlbC5iaW5kKHNjb3BlKTtcbiAgICAvLyBHcmFudCBwZXJtaXNzaW9ucyB0byBnYXRld2F5IHJvbGUgaWYgc2NoZW1hIGlzIGluIFMzXG4gICAgdGhpcy5zbWl0aHlNb2RlbC5ncmFudFBlcm1pc3Npb25zVG9Sb2xlKGdhdGV3YXkucm9sZSk7XG5cbiAgICByZXR1cm4geyBib3VuZDogdHJ1ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIE1DUC1zcGVjaWZpYyBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVuZGVyTWNwQ29uZmlndXJhdGlvbigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBzbWl0aHlNb2RlbDogdGhpcy5zbWl0aHlNb2RlbC5fcmVuZGVyKCksXG4gICAgfTtcbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgIE1DUCBTZXJ2ZXIgVGFyZ2V0IENvbmZpZ3VyYXRpb25cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBNQ1AgU2VydmVyLWJhc2VkIHRhcmdldHNcbiAqXG4gKiBNQ1AgKE1vZGVsIENvbnRleHQgUHJvdG9jb2wpIHNlcnZlcnMgcHJvdmlkZSB0b29scywgZGF0YSBhY2Nlc3MsIGFuZCBjdXN0b21cbiAqIGZ1bmN0aW9ucyBmb3IgQUkgYWdlbnRzLiBXaGVuIHlvdSBjb25maWd1cmUgYW4gTUNQIHNlcnZlciBhcyBhIGdhdGV3YXkgdGFyZ2V0LFxuICogdGhlIGdhdGV3YXkgYXV0b21hdGljYWxseSBkaXNjb3ZlcnMgYW5kIGluZGV4ZXMgYXZhaWxhYmxlIHRvb2xzIHRocm91Z2hcbiAqIHN5bmNocm9uaXphdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIE1jcFNlcnZlclRhcmdldENvbmZpZ3VyYXRpb24gZXh0ZW5kcyBNY3BUYXJnZXRDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBNQ1Agc2VydmVyIHRhcmdldCBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBlbmRwb2ludCBUaGUgSFRUUFMgZW5kcG9pbnQgVVJMIG9mIHRoZSBNQ1Agc2VydmVyXG4gICAqIEByZXR1cm5zIEEgbmV3IE1jcFNlcnZlclRhcmdldENvbmZpZ3VyYXRpb24gaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlKGVuZHBvaW50OiBzdHJpbmcpOiBNY3BTZXJ2ZXJUYXJnZXRDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gbmV3IE1jcFNlcnZlclRhcmdldENvbmZpZ3VyYXRpb24oZW5kcG9pbnQpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldFR5cGUgPSBNY3BUYXJnZXRUeXBlLk1DUF9TRVJWRVI7XG5cbiAgLyoqXG4gICAqIFRoZSBIVFRQUyBlbmRwb2ludCBVUkwgb2YgdGhlIE1DUCBzZXJ2ZXJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGVuZHBvaW50OiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW5kcG9pbnQgPSBlbmRwb2ludDtcbiAgICB0aGlzLnZhbGlkYXRlRW5kcG9pbnQoZW5kcG9pbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIHRoaXMgY29uZmlndXJhdGlvbiB0byBhIGNvbnN0cnVjdCBzY29wZVxuICAgKiBObyBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIGFyZSBuZWVkZWQgZm9yIE1DUCBzZXJ2ZXIgdGFyZ2V0c1xuICAgKlxuICAgKiBAcGFyYW0gX3Njb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIF9nYXRld2F5IFRoZSBnYXRld2F5IHRoYXQgd2lsbCB1c2UgdGhpcyB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyBiaW5kKF9zY29wZTogQ29uc3RydWN0LCBfZ2F0ZXdheTogSUdhdGV3YXkpOiBUYXJnZXRDb25maWd1cmF0aW9uQ29uZmlnIHtcbiAgICAvLyBNQ1Agc2VydmVyIHRhcmdldHMgZG9uJ3QgcmVxdWlyZSBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIHNldHVwXG4gICAgLy8gQXV0aGVudGljYXRpb24gaXMgaGFuZGxlZCB0aHJvdWdoIGNyZWRlbnRpYWwgcHJvdmlkZXIgY29uZmlndXJhdGlvbnNcbiAgICByZXR1cm4geyBib3VuZDogdHJ1ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIE1DUC1zcGVjaWZpYyBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVuZGVyTWNwQ29uZmlndXJhdGlvbigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBtY3BTZXJ2ZXI6IHtcbiAgICAgICAgZW5kcG9pbnQ6IHRoaXMuZW5kcG9pbnQsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBNQ1Agc2VydmVyIGVuZHBvaW50XG4gICAqIC0gTXVzdCB1c2UgSFRUUFMgcHJvdG9jb2xcbiAgICogLSBTaG91bGQgYmUgcHJvcGVybHkgVVJMIGVuY29kZWRcbiAgICpcbiAgICogQHBhcmFtIGVuZHBvaW50IFRoZSBlbmRwb2ludCBVUkwgdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyBWYWxpZGF0aW9uRXJyb3IgaWYgdGhlIGVuZHBvaW50IGlzIGludmFsaWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoZW5kcG9pbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgICBlbmRwb2ludCxcbiAgICAgICdNQ1Agc2VydmVyIGVuZHBvaW50JyxcbiAgICAgIC9eaHR0cHM6XFwvXFwvLisvLFxuICAgICAgJ01DUCBzZXJ2ZXIgZW5kcG9pbnQgbXVzdCB1c2UgSFRUUFMgcHJvdG9jb2wgKGUuZy4sIGh0dHBzOi8vbXktc2VydmVyLmV4YW1wbGUuY29tKS4gRW5zdXJlIHRoZSBVUkwgaXMgcHJvcGVybHkgZW5jb2RlZC4nLFxuICAgICk7XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoZXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG5cbiAgICAvLyBBZGRpdGlvbmFsIGhlbHBmdWwgdmFsaWRhdGlvbiBmb3IgY29tbW9uIFVSTCBlbmNvZGluZyBpc3N1ZXNcbiAgICBpZiAoZW5kcG9pbnQuaW5jbHVkZXMoJyAnKSB8fCBlbmRwb2ludC5pbmNsdWRlcygnPCcpIHx8IGVuZHBvaW50LmluY2x1ZGVzKCc+JykpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICdNQ1Agc2VydmVyIGVuZHBvaW50IGNvbnRhaW5zIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgYmUgVVJMLWVuY29kZWQuICcgK1xuICAgICAgICAnUGxlYXNlIGVuc3VyZSB0aGUgVVJMIGlzIHByb3Blcmx5IGVuY29kZWQgYmVmb3JlIHBhc3NpbmcgdG8gdGhlIGNvbnN0cnVjdC4nLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -78,7 +78,7 @@ let GatewayTarget = (() => {
78
78
  GatewayTarget = _classThis = _classDescriptor.value;
79
79
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
80
80
  }
81
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayTarget", version: "2.231.0-alpha.0" };
81
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayTarget", version: "2.232.1-alpha.0" };
82
82
  /** Uniquely identifies this class. */
83
83
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.GatewayTarget';
84
84
  /**
@@ -53,7 +53,7 @@ var MemoryStrategyType;
53
53
  * @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/memory-strategies.html
54
54
  */
55
55
  class MemoryStrategy {
56
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.MemoryStrategy", version: "2.231.0-alpha.0" };
56
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.MemoryStrategy", version: "2.232.1-alpha.0" };
57
57
  /**
58
58
  * Default strategies for organizing and extracting memory data, each optimized for specific use cases.
59
59
  * This strategy compresses conversations into concise overviews, preserving essential context and key insights for quick recall.
@@ -11,10 +11,10 @@
11
11
  * and limitations under the License.
12
12
  */
13
13
  import { Duration, IResource, Resource } from 'aws-cdk-lib';
14
- import { Construct } from 'constructs';
15
14
  import { DimensionsMap, Metric, MetricOptions } from 'aws-cdk-lib/aws-cloudwatch';
16
15
  import * as iam from 'aws-cdk-lib/aws-iam';
17
16
  import * as kms from 'aws-cdk-lib/aws-kms';
17
+ import { Construct } from 'constructs';
18
18
  import { IMemoryStrategy } from './memory-strategy';
19
19
  /******************************************************************************
20
20
  * Interface