@aws-cdk/aws-bedrock-agentcore-alpha 2.237.0-alpha.0 → 2.238.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 (67) hide show
  1. package/.jsii +908 -789
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/lib/gateway/gateway-base.d.ts +14 -7
  4. package/lib/gateway/gateway-base.js +13 -4
  5. package/lib/gateway/gateway.d.ts +11 -10
  6. package/lib/gateway/gateway.js +2 -3
  7. package/lib/gateway/inbound-auth/authorizer.d.ts +2 -2
  8. package/lib/gateway/inbound-auth/authorizer.js +4 -4
  9. package/lib/gateway/inbound-auth/custom-claim.d.ts +1 -1
  10. package/lib/gateway/inbound-auth/custom-claim.js +2 -2
  11. package/lib/gateway/interceptor.d.ts +3 -3
  12. package/lib/gateway/interceptor.js +2 -2
  13. package/lib/gateway/outbound-auth/api-key.d.ts +4 -2
  14. package/lib/gateway/outbound-auth/api-key.js +2 -2
  15. package/lib/gateway/outbound-auth/credential-provider.d.ts +5 -5
  16. package/lib/gateway/outbound-auth/credential-provider.js +2 -2
  17. package/lib/gateway/outbound-auth/iam-role.d.ts +3 -2
  18. package/lib/gateway/outbound-auth/iam-role.js +1 -1
  19. package/lib/gateway/outbound-auth/oauth.d.ts +4 -2
  20. package/lib/gateway/outbound-auth/oauth.js +1 -1
  21. package/lib/gateway/protocol.d.ts +1 -1
  22. package/lib/gateway/protocol.js +3 -3
  23. package/lib/gateway/targets/schema/api-schema.d.ts +3 -3
  24. package/lib/gateway/targets/schema/api-schema.js +5 -5
  25. package/lib/gateway/targets/schema/base-schema.d.ts +2 -2
  26. package/lib/gateway/targets/schema/base-schema.js +1 -1
  27. package/lib/gateway/targets/schema/tool-schema.d.ts +3 -3
  28. package/lib/gateway/targets/schema/tool-schema.js +5 -5
  29. package/lib/gateway/targets/target-base.d.ts +10 -4
  30. package/lib/gateway/targets/target-base.js +11 -2
  31. package/lib/gateway/targets/target-configuration.d.ts +5 -5
  32. package/lib/gateway/targets/target-configuration.js +6 -6
  33. package/lib/gateway/targets/target.d.ts +9 -8
  34. package/lib/gateway/targets/target.js +2 -2
  35. package/lib/memory/memory-strategy.d.ts +6 -4
  36. package/lib/memory/memory-strategy.js +2 -3
  37. package/lib/memory/memory.d.ts +12 -5
  38. package/lib/memory/memory.js +13 -17
  39. package/lib/memory/strategies/managed-strategy.d.ts +5 -4
  40. package/lib/memory/strategies/managed-strategy.js +2 -2
  41. package/lib/memory/strategies/self-managed-strategy.d.ts +4 -4
  42. package/lib/memory/strategies/self-managed-strategy.js +2 -2
  43. package/lib/memory/validation-helpers.d.ts +1 -1
  44. package/lib/memory/validation-helpers.js +1 -1
  45. package/lib/network/network-configuration.d.ts +2 -2
  46. package/lib/network/network-configuration.js +5 -5
  47. package/lib/runtime/inbound-auth/custom-claim.d.ts +1 -1
  48. package/lib/runtime/inbound-auth/custom-claim.js +2 -2
  49. package/lib/runtime/inbound-auth/runtime-authorizer-configuration.d.ts +3 -3
  50. package/lib/runtime/inbound-auth/runtime-authorizer-configuration.js +2 -2
  51. package/lib/runtime/runtime-artifact.d.ts +4 -4
  52. package/lib/runtime/runtime-artifact.js +2 -2
  53. package/lib/runtime/runtime-base.d.ts +12 -5
  54. package/lib/runtime/runtime-base.js +15 -18
  55. package/lib/runtime/runtime-endpoint-base.d.ts +9 -3
  56. package/lib/runtime/runtime-endpoint-base.js +10 -14
  57. package/lib/runtime/runtime-endpoint.d.ts +3 -2
  58. package/lib/runtime/runtime-endpoint.js +2 -2
  59. package/lib/runtime/runtime.d.ts +7 -5
  60. package/lib/runtime/runtime.js +2 -2
  61. package/lib/runtime/types.d.ts +1 -1
  62. package/lib/runtime/types.js +1 -1
  63. package/lib/tools/browser.d.ts +12 -5
  64. package/lib/tools/browser.js +14 -5
  65. package/lib/tools/code-interpreter.d.ts +11 -4
  66. package/lib/tools/code-interpreter.js +14 -5
  67. package/package.json +9 -9
Binary file
@@ -1,10 +1,13 @@
1
- import { IResource, Resource, ResourceProps } from 'aws-cdk-lib';
2
- import { DimensionsMap, Metric, MetricOptions } from 'aws-cdk-lib/aws-cloudwatch';
1
+ import type { IResource, ResourceProps } from 'aws-cdk-lib';
2
+ import { Resource } from 'aws-cdk-lib';
3
+ import type { GatewayReference, IGatewayRef } from 'aws-cdk-lib/aws-bedrockagentcore';
4
+ import type { DimensionsMap, MetricOptions } from 'aws-cdk-lib/aws-cloudwatch';
5
+ import { Metric } from 'aws-cdk-lib/aws-cloudwatch';
3
6
  import * as iam from 'aws-cdk-lib/aws-iam';
4
- import * as kms from 'aws-cdk-lib/aws-kms';
5
- import { Construct } from 'constructs';
6
- import { IGatewayAuthorizerConfig } from './inbound-auth/authorizer';
7
- import { IGatewayProtocolConfig } from './protocol';
7
+ import type * as kms from 'aws-cdk-lib/aws-kms';
8
+ import type { Construct } from 'constructs';
9
+ import type { IGatewayAuthorizerConfig } from './inbound-auth/authorizer';
10
+ import type { IGatewayProtocolConfig } from './protocol';
8
11
  /******************************************************************************
9
12
  * Enums
10
13
  *****************************************************************************/
@@ -25,7 +28,7 @@ export declare enum GatewayExceptionLevel {
25
28
  /**
26
29
  * Interface for Gateway resources
27
30
  */
28
- export interface IGateway extends IResource {
31
+ export interface IGateway extends IResource, IGatewayRef {
29
32
  /**
30
33
  * The ARN of the gateway resource
31
34
  * @attribute
@@ -206,6 +209,10 @@ export declare abstract class GatewayBase extends Resource implements IGateway {
206
209
  abstract readonly statusReason?: string[];
207
210
  abstract readonly createdAt?: string;
208
211
  abstract readonly updatedAt?: string;
212
+ /**
213
+ * A reference to a Gateway resource.
214
+ */
215
+ get gatewayRef(): GatewayReference;
209
216
  constructor(scope: Construct, id: string, props?: ResourceProps);
210
217
  /**
211
218
  * Grants IAM actions to the IAM Principal
@@ -25,7 +25,16 @@ 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.237.0-alpha.0" };
28
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayBase", version: "2.238.0-alpha.0" };
29
+ /**
30
+ * A reference to a Gateway resource.
31
+ */
32
+ get gatewayRef() {
33
+ return {
34
+ gatewayIdentifier: this.gatewayId,
35
+ gatewayArn: this.gatewayArn,
36
+ };
37
+ }
29
38
  constructor(scope, id, props = {}) {
30
39
  super(scope, id, props);
31
40
  }
@@ -43,7 +52,7 @@ class GatewayBase extends aws_cdk_lib_1.Resource {
43
52
  grant(grantee, ...actions) {
44
53
  return iam.Grant.addToPrincipal({
45
54
  grantee: grantee,
46
- resourceArns: [this.gatewayArn],
55
+ resourceArns: [this.gatewayRef.gatewayArn],
47
56
  actions: actions,
48
57
  });
49
58
  }
@@ -101,7 +110,7 @@ class GatewayBase extends aws_cdk_lib_1.Resource {
101
110
  const metricProps = {
102
111
  namespace: 'AWS/Bedrock-AgentCore',
103
112
  metricName,
104
- dimensionsMap: { ...dimensions, Resource: this.gatewayArn },
113
+ dimensionsMap: { ...dimensions, Resource: this.gatewayRef.gatewayArn },
105
114
  ...props,
106
115
  };
107
116
  return this.configureMetric(metricProps);
@@ -176,4 +185,4 @@ class GatewayBase extends aws_cdk_lib_1.Resource {
176
185
  }
177
186
  }
178
187
  exports.GatewayBase = GatewayBase;
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2F0ZXdheS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2Q0FBaUU7QUFDakUsK0RBQXNHO0FBQ3RHLDJDQUEyQztBQUszQyxtQ0FBNEc7QUFHNUc7OytFQUUrRTtBQUMvRTs7R0FFRztBQUNILElBQVkscUJBT1g7QUFQRCxXQUFZLHFCQUFxQjtJQUMvQjs7OztPQUlHO0lBQ0gsd0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUFcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFPaEM7QUF5TUQ7OytFQUUrRTtBQUUvRSxNQUFzQixXQUFZLFNBQVEsc0JBQVE7O0lBZ0JoRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXVCLEVBQUU7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDekI7SUFFRCx5REFBeUQ7SUFDekQscUJBQXFCO0lBQ3JCLHlEQUF5RDtJQUN6RDs7Ozs7OztPQU9HO0lBQ0ksS0FBSyxDQUFDLE9BQXVCLEVBQUUsR0FBRyxPQUFpQjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDL0IsT0FBTyxFQUFFLE9BQU87U0FDakIsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7Ozs7O09BTUc7SUFDSSxTQUFTLENBQUMsT0FBdUI7UUFDdEMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLHlCQUFpQixDQUFDLENBQUM7UUFFeEUsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUNoRCxPQUFPLEVBQUUsT0FBTztZQUNoQixZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFDbkIsT0FBTyxFQUFFLENBQUMsR0FBRywwQkFBa0IsQ0FBQztTQUNqQyxDQUFDLENBQUM7UUFDSCx3QkFBd0I7UUFDeEIsT0FBTyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUN4RDtJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVcsQ0FBQyxPQUF1QjtRQUN4QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsNEJBQW9CLENBQUMsQ0FBQztLQUNyRDtJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVcsQ0FBQyxPQUF1QjtRQUN4QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsNEJBQW9CLENBQUMsQ0FBQztLQUNyRDtJQUVELHlEQUF5RDtJQUN6RCxpQkFBaUI7SUFDakIseURBQXlEO0lBQ3pEOzs7Ozs7Ozs7T0FTRztJQUNJLE1BQU0sQ0FBQyxVQUFrQixFQUFFLFVBQXlCLEVBQUUsS0FBcUI7UUFDaEYsTUFBTSxXQUFXLEdBQWdCO1lBQy9CLFNBQVMsRUFBRSx1QkFBdUI7WUFDbEMsVUFBVTtZQUNWLGFBQWEsRUFBRSxFQUFFLEdBQUcsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzNELEdBQUcsS0FBSztTQUNULENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDMUM7SUFFRDs7T0FFRztJQUNJLGlCQUFpQixDQUFDLEtBQXFCO1FBQzVDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLHNCQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUMzRTtJQUVEOztPQUVHO0lBQ0ksZUFBZSxDQUFDLEtBQXFCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLHNCQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUN6RTtJQUVEOztPQUVHO0lBQ0ksa0JBQWtCLENBQUMsS0FBcUI7UUFDN0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsc0JBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQzVFO0lBRUQ7O09BRUc7SUFDSSxnQkFBZ0IsQ0FBQyxLQUFxQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxzQkFBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDMUU7SUFFRDs7Ozs7T0FLRztJQUNJLGFBQWEsQ0FBQyxLQUFxQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxzQkFBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDM0U7SUFFRDs7Ozs7T0FLRztJQUNJLGNBQWMsQ0FBQyxLQUFxQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxzQkFBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDNUU7SUFFRDs7Ozs7T0FLRztJQUNJLHlCQUF5QixDQUFDLEtBQXFCO1FBQ3BELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsc0JBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZGO0lBRUQ7O09BRUc7SUFDSSxnQkFBZ0IsQ0FBQyxVQUFrQixFQUFFLEtBQXFCO1FBQy9ELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsc0JBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ2xHO0lBRUQ7OztPQUdHO0lBQ0ssZUFBZSxDQUFDLEtBQWtCO1FBQ3hDLE9BQU8sSUFBSSx1QkFBTSxDQUFDO1lBQ2hCLEdBQUcsS0FBSztZQUNSLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUMxQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87U0FDOUMsQ0FBQyxDQUFDO0tBQ0o7O0FBbExILGtDQW1MQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElSZXNvdXJjZSwgUmVzb3VyY2UsIFJlc291cmNlUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBEaW1lbnNpb25zTWFwLCBNZXRyaWMsIE1ldHJpY09wdGlvbnMsIE1ldHJpY1Byb3BzLCBTdGF0cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuLy8gSW50ZXJuYWwgaW1wb3J0c1xuaW1wb3J0IHsgSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIH0gZnJvbSAnLi9pbmJvdW5kLWF1dGgvYXV0aG9yaXplcic7XG5pbXBvcnQgeyBHQVRFV0FZX0dFVF9QRVJNUywgR0FURVdBWV9MSVNUX1BFUk1TLCBHQVRFV0FZX01BTkFHRV9QRVJNUywgR0FURVdBWV9JTlZPS0VfUEVSTVMgfSBmcm9tICcuL3Blcm1zJztcbmltcG9ydCB7IElHYXRld2F5UHJvdG9jb2xDb25maWcgfSBmcm9tICcuL3Byb3RvY29sJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtc1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBFeGNlcHRpb24gbGV2ZWxzIGZvciBnYXRld2F5XG4gKi9cbmV4cG9ydCBlbnVtIEdhdGV3YXlFeGNlcHRpb25MZXZlbCB7XG4gIC8qKlxuICAgKiBEZWJ1ZyBtb2RlIGZvciBncmFudWxhciBleGNlcHRpb24gbWVzc2FnZXMuIEFsbG93cyB0aGUgcmV0dXJuIG9mXG4gICAqIHNwZWNpZmljIGVycm9yIG1lc3NhZ2VzIHJlbGF0ZWQgdG8gdGhlIGdhdGV3YXkgdGFyZ2V0IGNvbmZpZ3VyYXRpb25cbiAgICogdG8gaGVscCB5b3Ugd2l0aCBkZWJ1Z2dpbmcuXG4gICAqL1xuICBERUJVRyA9ICdERUJVRycsXG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2VcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogSW50ZXJmYWNlIGZvciBHYXRld2F5IHJlc291cmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElHYXRld2F5IGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhdGV3YXkgcmVzb3VyY2VcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIGdhdGV3YXlcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSB0aGF0IHByb3ZpZGVzIHBlcm1pc3Npb25zIGZvciB0aGUgZ2F0ZXdheSB0byBhY2Nlc3MgQVdTIHNlcnZpY2VzXG4gICAqL1xuICByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm90b2NvbCBjb25maWd1cmF0aW9uIGZvciB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdG9jb2xDb25maWd1cmF0aW9uOiBJR2F0ZXdheVByb3RvY29sQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgYXV0aG9yaXplciBjb25maWd1cmF0aW9uIGZvciB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yaXplckNvbmZpZ3VyYXRpb246IElHYXRld2F5QXV0aG9yaXplckNvbmZpZztcblxuICAvKipcbiAgICogVGhlIGV4Y2VwdGlvbiBsZXZlbCBmb3IgdGhlIGdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2VwdGlvbkxldmVsPzogR2F0ZXdheUV4Y2VwdGlvbkxldmVsO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB1c2VkIGZvciBlbmNyeXB0aW9uXG4gICAqL1xuICByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleTtcblxuICAvKipcbiAgICogVGhlIFVSTCBlbmRwb2ludCBmb3IgdGhlIGdhdGV3YXlcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheVVybD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgZ2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgcmVhc29ucyBmb3IgdGhlIGdhdGV3YXkuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1c1JlYXNvbj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaW1lc3RhbXAgd2hlbiB0aGUgZ2F0ZXdheSB3YXMgY3JlYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB3aGVuIHRoZSBnYXRld2F5IHdhcyBsYXN0IHVwZGF0ZWRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlZEF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudHMgSUFNIGFjdGlvbnMgdG8gdGhlIElBTSBQcmluY2lwYWxcbiAgICovXG4gIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnRzIGBHZXRgIGFuZCBgTGlzdGAgYWN0aW9ucyBvbiB0aGUgR2F0ZXdheVxuICAgKi9cbiAgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudHMgYENyZWF0ZWAsIGBVcGRhdGVgLCBhbmQgYERlbGV0ZWAgYWN0aW9ucyBvbiB0aGUgR2F0ZXdheVxuICAgKi9cbiAgZ3JhbnRNYW5hZ2UoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGludm9rZSB0aGlzIEdhdGV3YXlcbiAgICovXG4gIGdyYW50SW52b2tlKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBNZXRyaWNzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogQHBhcmFtIG1ldHJpY05hbWUgVGhlIG5hbWUgb2YgdGhlIG1ldHJpY1xuICAgKiBAcGFyYW0gZGltZW5zaW9ucyBBZGRpdGlvbmFsIGRpbWVuc2lvbnMgZm9yIHRoZSBtZXRyaWNcbiAgICogQHBhcmFtIHByb3BzIE9wdGlvbmFsIG1ldHJpYyBjb25maWd1cmF0aW9uXG4gICAqL1xuICBtZXRyaWMobWV0cmljTmFtZTogc3RyaW5nLCBkaW1lbnNpb25zOiBEaW1lbnNpb25zTWFwLCBwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSB0b3RhbCBudW1iZXIgb2YgaW52b2NhdGlvbnMgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhpcyBtZXRyaWMgdHJhY2tzIGFsbCBzdWNjZXNzZnVsIGludm9jYXRpb25zIG9mIHRoZSBnYXRld2F5LlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgT3B0aW9uYWwgbWV0cmljIGNvbmZpZ3VyYXRpb25cbiAgICogQGRlZmF1bHQgLSBTdW0gc3RhdGlzdGljIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBtZXRyaWNJbnZvY2F0aW9ucyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgdGhyb3R0bGVkIHJlcXVlc3RzICg0Mjkgc3RhdHVzIGNvZGUpIGZvciB0aGlzIGdhdGV3YXkuXG4gICAqXG4gICAqIFRoaXMgbWV0cmljIGhlbHBzIGlkZW50aWZ5IHdoZW4gdGhlIGdhdGV3YXkgaXMgcmF0ZSBsaW1pdGluZyByZXF1ZXN0cy5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIE9wdGlvbmFsIG1ldHJpYyBjb25maWd1cmF0aW9uXG4gICAqIEBkZWZhdWx0IC0gU3VtIHN0YXRpc3RpYyBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgbWV0cmljVGhyb3R0bGVzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBzeXN0ZW0gZXJyb3JzICg1eHggc3RhdHVzIGNvZGUpIGZvciB0aGlzIGdhdGV3YXkuXG4gICAqXG4gICAqIFRoaXMgbWV0cmljIHRyYWNrcyBpbnRlcm5hbCBzZXJ2ZXIgZXJyb3JzIGFuZCBzeXN0ZW0gZmFpbHVyZXMuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBPcHRpb25hbCBtZXRyaWMgY29uZmlndXJhdGlvblxuICAgKiBAZGVmYXVsdCAtIFN1bSBzdGF0aXN0aWMgb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIG1ldHJpY1N5c3RlbUVycm9ycyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgdXNlciBlcnJvcnMgKDR4eCBzdGF0dXMgY29kZSwgZXhjbHVkaW5nIDQyOSkgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhpcyBtZXRyaWMgdHJhY2tzIGNsaWVudCBlcnJvcnMgbGlrZSBiYWQgcmVxdWVzdHMsIHVuYXV0aG9yaXplZCBhY2Nlc3MsIGV0Yy5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIE9wdGlvbmFsIG1ldHJpYyBjb25maWd1cmF0aW9uXG4gICAqIEBkZWZhdWx0IC0gU3VtIHN0YXRpc3RpYyBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgbWV0cmljVXNlckVycm9ycyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBtZWFzdXJpbmcgdGhlIGxhdGVuY3kgb2YgcmVxdWVzdHMgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhlIGxhdGVuY3kgbWV0cmljIHJlcHJlc2VudHMgdGhlIHRpbWUgZWxhcHNlZCBiZXR3ZWVuIHdoZW4gdGhlIHNlcnZpY2UgcmVjZWl2ZXNcbiAgICogdGhlIHJlcXVlc3QgYW5kIHdoZW4gaXQgYmVnaW5zIHNlbmRpbmcgdGhlIGZpcnN0IHJlc3BvbnNlIHRva2VuLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgT3B0aW9uYWwgbWV0cmljIGNvbmZpZ3VyYXRpb25cbiAgICogQGRlZmF1bHQgLSBBdmVyYWdlIHN0YXRpc3RpYyBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgbWV0cmljTGF0ZW5jeShwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBtZWFzdXJpbmcgdGhlIGR1cmF0aW9uIG9mIHJlcXVlc3RzIGZvciB0aGlzIGdhdGV3YXkuXG4gICAqXG4gICAqIFRoZSBkdXJhdGlvbiBtZXRyaWMgcmVwcmVzZW50cyB0aGUgdG90YWwgdGltZSBlbGFwc2VkIGJldHdlZW4gcmVjZWl2aW5nIHRoZSByZXF1ZXN0XG4gICAqIGFuZCBzZW5kaW5nIHRoZSBmaW5hbCByZXNwb25zZSB0b2tlbiwgcmVwcmVzZW50aW5nIGNvbXBsZXRlIGVuZC10by1lbmQgcHJvY2Vzc2luZyB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgT3B0aW9uYWwgbWV0cmljIGNvbmZpZ3VyYXRpb25cbiAgICogQGRlZmF1bHQgLSBBdmVyYWdlIHN0YXRpc3RpYyBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgbWV0cmljRHVyYXRpb24ocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgbWVhc3VyaW5nIHRoZSB0YXJnZXQgZXhlY3V0aW9uIHRpbWUgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhpcyBtZXRyaWMgaGVscHMgZGV0ZXJtaW5lIHRoZSBjb250cmlidXRpb24gb2YgdGhlIHRhcmdldCAoTGFtYmRhLCBPcGVuQVBJLCBldGMuKVxuICAgKiB0byB0aGUgdG90YWwgbGF0ZW5jeS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIE9wdGlvbmFsIG1ldHJpYyBjb25maWd1cmF0aW9uXG4gICAqIEBkZWZhdWx0IC0gQXZlcmFnZSBzdGF0aXN0aWMgb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIG1ldHJpY1RhcmdldEV4ZWN1dGlvblRpbWUocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIHNlcnZlZCBieSBlYWNoIHRhcmdldCB0eXBlIGZvciB0aGlzIGdhdGV3YXkuXG4gICAqXG4gICAqIEBwYXJhbSB0YXJnZXRUeXBlIFRoZSB0eXBlIG9mIHRhcmdldCAoZS5nLiwgJ0xhbWJkYScsICdPcGVuQVBJJywgJ1NtaXRoeScpXG4gICAqIEBwYXJhbSBwcm9wcyBPcHRpb25hbCBtZXRyaWMgY29uZmlndXJhdGlvblxuICAgKiBAZGVmYXVsdCAtIFN1bSBzdGF0aXN0aWMgb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIG1ldHJpY1RhcmdldFR5cGUodGFyZ2V0VHlwZTogc3RyaW5nLCBwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlIENsYXNzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHYXRld2F5QmFzZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSUdhdGV3YXkge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZ2F0ZXdheUFybjogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZ2F0ZXdheUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHByb3RvY29sQ29uZmlndXJhdGlvbjogSUdhdGV3YXlQcm90b2NvbENvbmZpZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGF1dGhvcml6ZXJDb25maWd1cmF0aW9uOiBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBleGNlcHRpb25MZXZlbD86IEdhdGV3YXlFeGNlcHRpb25MZXZlbDtcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZ2F0ZXdheVVybD86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHN0YXR1c1JlYXNvbj86IHN0cmluZ1tdO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgY3JlYXRlZEF0Pzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdXBkYXRlZEF0Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZXNvdXJjZVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBQZXJtaXNzaW9uIE1ldGhvZHNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBHcmFudHMgSUFNIGFjdGlvbnMgdG8gdGhlIElBTSBQcmluY2lwYWxcbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWwgdG8gZ3JhbnQgcGVybWlzc2lvbnMgdG9cbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGFjdGlvbnMgdG8gZ3JhbnRcbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuZ2F0ZXdheUFybl0sXG4gICAgICBhY3Rpb25zOiBhY3Rpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBgR2V0YCBhbmQgYExpc3RgIGFjdGlvbnMgb24gdGhlIEdhdGV3YXlcbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWwgdG8gZ3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgY29uc3QgcmVzb3VyY2VTcGVjaWZpY0dyYW50ID0gdGhpcy5ncmFudChncmFudGVlLCAuLi5HQVRFV0FZX0dFVF9QRVJNUyk7XG5cbiAgICBjb25zdCBhbGxSZXNvdXJjZUdyYW50ID0gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICByZXNvdXJjZUFybnM6IFsnKiddLFxuICAgICAgYWN0aW9uczogWy4uLkdBVEVXQVlfTElTVF9QRVJNU10sXG4gICAgfSk7XG4gICAgLy8gUmV0dXJuIGNvbWJpbmVkIGdyYW50XG4gICAgcmV0dXJuIHJlc291cmNlU3BlY2lmaWNHcmFudC5jb21iaW5lKGFsbFJlc291cmNlR3JhbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBgQ3JlYXRlYCwgYFVwZGF0ZWAsIGFuZCBgRGVsZXRlYCBhY3Rpb25zIG9uIHRoZSBHYXRld2F5XG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IG1hbmFnZSBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgcHVibGljIGdyYW50TWFuYWdlKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAuLi5HQVRFV0FZX01BTkFHRV9QRVJNUyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gaW52b2tlIHRoaXMgR2F0ZXdheVxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbCB0byBncmFudCBpbnZva2UgcGVybWlzc2lvbnMgdG9cbiAgICovXG4gIHB1YmxpYyBncmFudEludm9rZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgLi4uR0FURVdBWV9JTlZPS0VfUEVSTVMpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIE1ldHJpYyBNZXRob2RzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIG1ldHJpYyB3aWxsIGJlIGNhbGN1bGF0ZWQgYXMgYSBzdW0gb3ZlciBhIHBlcmlvZCBvZiA1IG1pbnV0ZXMuXG4gICAqIFlvdSBjYW4gY3VzdG9taXplIHRoaXMgYnkgdXNpbmcgdGhlIGBzdGF0aXN0aWNgIGFuZCBgcGVyaW9kYCBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0cmljTmFtZSBUaGUgbmFtZSBvZiB0aGUgbWV0cmljXG4gICAqIEBwYXJhbSBkaW1lbnNpb25zIEFkZGl0aW9uYWwgZGltZW5zaW9ucyBmb3IgdGhlIG1ldHJpY1xuICAgKiBAcGFyYW0gcHJvcHMgT3B0aW9uYWwgbWV0cmljIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHB1YmxpYyBtZXRyaWMobWV0cmljTmFtZTogc3RyaW5nLCBkaW1lbnNpb25zOiBEaW1lbnNpb25zTWFwLCBwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIGNvbnN0IG1ldHJpY1Byb3BzOiBNZXRyaWNQcm9wcyA9IHtcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9CZWRyb2NrLUFnZW50Q29yZScsXG4gICAgICBtZXRyaWNOYW1lLFxuICAgICAgZGltZW5zaW9uc01hcDogeyAuLi5kaW1lbnNpb25zLCBSZXNvdXJjZTogdGhpcy5nYXRld2F5QXJuIH0sXG4gICAgICAuLi5wcm9wcyxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyZU1ldHJpYyhtZXRyaWNQcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIHRvdGFsIG51bWJlciBvZiBpbnZvY2F0aW9ucyBmb3IgdGhpcyBnYXRld2F5LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0ludm9jYXRpb25zKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdJbnZvY2F0aW9ucycsIHt9LCB7IHN0YXRpc3RpYzogU3RhdHMuU1VNLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHRocm90dGxlZCByZXF1ZXN0cyAoNDI5IHN0YXR1cyBjb2RlKSBmb3IgdGhpcyBnYXRld2F5LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1Rocm90dGxlcyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnVGhyb3R0bGVzJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2Ygc3lzdGVtIGVycm9ycyAoNXh4IHN0YXR1cyBjb2RlKSBmb3IgdGhpcyBnYXRld2F5LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1N5c3RlbUVycm9ycyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnU3lzdGVtRXJyb3JzJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgdXNlciBlcnJvcnMgKDR4eCBzdGF0dXMgY29kZSwgZXhjbHVkaW5nIDQyOSkgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNVc2VyRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdVc2VyRXJyb3JzJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBtZWFzdXJpbmcgdGhlIGxhdGVuY3kgb2YgcmVxdWVzdHMgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhlIGxhdGVuY3kgbWV0cmljIHJlcHJlc2VudHMgdGhlIHRpbWUgZWxhcHNlZCBiZXR3ZWVuIHdoZW4gdGhlIHNlcnZpY2UgcmVjZWl2ZXNcbiAgICogdGhlIHJlcXVlc3QgYW5kIHdoZW4gaXQgYmVnaW5zIHNlbmRpbmcgdGhlIGZpcnN0IHJlc3BvbnNlIHRva2VuLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0xhdGVuY3kocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ0xhdGVuY3knLCB7fSwgeyBzdGF0aXN0aWM6IFN0YXRzLkFWRVJBR0UsIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBtZWFzdXJpbmcgdGhlIGR1cmF0aW9uIG9mIHJlcXVlc3RzIGZvciB0aGlzIGdhdGV3YXkuXG4gICAqXG4gICAqIFRoZSBkdXJhdGlvbiBtZXRyaWMgcmVwcmVzZW50cyB0aGUgdG90YWwgdGltZSBlbGFwc2VkIGJldHdlZW4gcmVjZWl2aW5nIHRoZSByZXF1ZXN0XG4gICAqIGFuZCBzZW5kaW5nIHRoZSBmaW5hbCByZXNwb25zZSB0b2tlbiwgcmVwcmVzZW50aW5nIGNvbXBsZXRlIGVuZC10by1lbmQgcHJvY2Vzc2luZyB0aW1lLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0R1cmF0aW9uKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdEdXJhdGlvbicsIHt9LCB7IHN0YXRpc3RpYzogU3RhdHMuQVZFUkFHRSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIG1lYXN1cmluZyB0aGUgdGFyZ2V0IGV4ZWN1dGlvbiB0aW1lIGZvciB0aGlzIGdhdGV3YXkuXG4gICAqXG4gICAqIFRoaXMgbWV0cmljIGhlbHBzIGRldGVybWluZSB0aGUgY29udHJpYnV0aW9uIG9mIHRoZSB0YXJnZXQgKExhbWJkYSwgT3BlbkFQSSwgZXRjLilcbiAgICogdG8gdGhlIHRvdGFsIGxhdGVuY3kuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljVGFyZ2V0RXhlY3V0aW9uVGltZShwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnVGFyZ2V0RXhlY3V0aW9uVGltZScsIHt9LCB7IHN0YXRpc3RpYzogU3RhdHMuQVZFUkFHRSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiByZXF1ZXN0cyBzZXJ2ZWQgYnkgZWFjaCB0YXJnZXQgdHlwZSBmb3IgdGhpcyBnYXRld2F5LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1RhcmdldFR5cGUodGFyZ2V0VHlwZTogc3RyaW5nLCBwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnVGFyZ2V0VHlwZScsIHsgVGFyZ2V0VHlwZTogdGFyZ2V0VHlwZSB9LCB7IHN0YXRpc3RpYzogU3RhdHMuU1VNLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBtZXRob2QgdG8gY3JlYXRlIGEgbWV0cmljLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgY29uZmlndXJlTWV0cmljKHByb3BzOiBNZXRyaWNQcm9wcykge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcmVnaW9uOiBwcm9wcz8ucmVnaW9uID8/IHRoaXMuc3RhY2sucmVnaW9uLFxuICAgICAgYWNjb3VudDogcHJvcHM/LmFjY291bnQgPz8gdGhpcy5zdGFjay5hY2NvdW50LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2F0ZXdheS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSw2Q0FBdUM7QUFHdkMsK0RBQTJEO0FBQzNELDJDQUEyQztBQUszQyxtQ0FBNEc7QUFHNUc7OytFQUUrRTtBQUMvRTs7R0FFRztBQUNILElBQVkscUJBT1g7QUFQRCxXQUFZLHFCQUFxQjtJQUMvQjs7OztPQUlHO0lBQ0gsd0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUFcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFPaEM7QUF5TUQ7OytFQUUrRTtBQUUvRSxNQUFzQixXQUFZLFNBQVEsc0JBQVE7O0lBZ0JoRDs7T0FFRztJQUNILElBQVcsVUFBVTtRQUNuQixPQUFPO1lBQ0wsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDakMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzVCLENBQUM7S0FDSDtJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBdUIsRUFBRTtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN6QjtJQUVELHlEQUF5RDtJQUN6RCxxQkFBcUI7SUFDckIseURBQXlEO0lBQ3pEOzs7Ozs7O09BT0c7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTyxFQUFFLE9BQU87WUFDaEIsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7WUFDMUMsT0FBTyxFQUFFLE9BQU87U0FDakIsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7Ozs7O09BTUc7SUFDSSxTQUFTLENBQUMsT0FBdUI7UUFDdEMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLHlCQUFp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S0FBSyxFQUFFLENBQUMsQ0FBQztLQUN2RjtJQUVEOztPQUVHO0lBQ0ksZ0JBQWdCLENBQUMsVUFBa0IsRUFBRSxLQUFxQjtRQUMvRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLHNCQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUNsRztJQUVEOzs7T0FHRztJQUNLLGVBQWUsQ0FBQyxLQUFrQjtRQUN4QyxPQUFPLElBQUksdUJBQU0sQ0FBQztZQUNoQixHQUFHLEtBQUs7WUFDUixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO1NBQzlDLENBQUMsQ0FBQztLQUNKOztBQTVMSCxrQ0E2TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElSZXNvdXJjZSwgUmVzb3VyY2VQcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFJlc291cmNlIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBHYXRld2F5UmVmZXJlbmNlLCBJR2F0ZXdheVJlZiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCB0eXBlIHsgRGltZW5zaW9uc01hcCwgTWV0cmljT3B0aW9ucywgTWV0cmljUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBNZXRyaWMsIFN0YXRzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHR5cGUgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuLy8gSW50ZXJuYWwgaW1wb3J0c1xuaW1wb3J0IHR5cGUgeyBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWcgfSBmcm9tICcuL2luYm91bmQtYXV0aC9hdXRob3JpemVyJztcbmltcG9ydCB7IEdBVEVXQVlfR0VUX1BFUk1TLCBHQVRFV0FZX0xJU1RfUEVSTVMsIEdBVEVXQVlfTUFOQUdFX1BFUk1TLCBHQVRFV0FZX0lOVk9LRV9QRVJNUyB9IGZyb20gJy4vcGVybXMnO1xuaW1wb3J0IHR5cGUgeyBJR2F0ZXdheVByb3RvY29sQ29uZmlnIH0gZnJvbSAnLi9wcm90b2NvbCc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bXNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogRXhjZXB0aW9uIGxldmVscyBmb3IgZ2F0ZXdheVxuICovXG5leHBvcnQgZW51bSBHYXRld2F5RXhjZXB0aW9uTGV2ZWwge1xuICAvKipcbiAgICogRGVidWcgbW9kZSBmb3IgZ3JhbnVsYXIgZXhjZXB0aW9uIG1lc3NhZ2VzLiBBbGxvd3MgdGhlIHJldHVybiBvZlxuICAgKiBzcGVjaWZpYyBlcnJvciBtZXNzYWdlcyByZWxhdGVkIHRvIHRoZSBnYXRld2F5IHRhcmdldCBjb25maWd1cmF0aW9uXG4gICAqIHRvIGhlbHAgeW91IHdpdGggZGVidWdnaW5nLlxuICAgKi9cbiAgREVCVUcgPSAnREVCVUcnLFxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIEludGVyZmFjZSBmb3IgR2F0ZXdheSByZXNvdXJjZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR2F0ZXdheSBleHRlbmRzIElSZXNvdXJjZSwgSUdhdGV3YXlSZWYge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2F0ZXdheSByZXNvdXJjZVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgZ2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIHRoYXQgcHJvdmlkZXMgcGVybWlzc2lvbnMgZm9yIHRoZSBnYXRld2F5IHRvIGFjY2VzcyBBV1Mgc2VydmljZXNcbiAgICovXG4gIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb3RvY29sIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBwcm90b2NvbENvbmZpZ3VyYXRpb246IElHYXRld2F5UHJvdG9jb2xDb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBhdXRob3JpemVyIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBhdXRob3JpemVyQ29uZmlndXJhdGlvbjogSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhjZXB0aW9uIGxldmVsIGZvciB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcmVhZG9ubHkgZXhjZXB0aW9uTGV2ZWw/OiBHYXRld2F5RXhjZXB0aW9uTGV2ZWw7XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHVzZWQgZm9yIGVuY3J5cHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBUaGUgVVJMIGVuZHBvaW50IGZvciB0aGUgZ2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBnYXRld2F5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyByZWFzb25zIGZvciB0aGUgZ2F0ZXdheS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzUmVhc29uPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB3aGVuIHRoZSBnYXRld2F5IHdhcyBjcmVhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcblxuICAvKipcbiAgICogVGltZXN0YW1wIHdoZW4gdGhlIGdhdGV3YXkgd2FzIGxhc3QgdXBkYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50cyBJQU0gYWN0aW9ucyB0byB0aGUgSUFNIFByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudHMgYEdldGAgYW5kIGBMaXN0YCBhY3Rpb25zIG9uIHRoZSBHYXRld2F5XG4gICAqL1xuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50cyBgQ3JlYXRlYCwgYFVwZGF0ZWAsIGFuZCBgRGVsZXRlYCBhY3Rpb25zIG9uIHRoZSBHYXRld2F5XG4gICAqL1xuICBncmFudE1hbmFnZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gaW52b2tlIHRoaXMgR2F0ZXdheVxuICAgKi9cbiAgZ3JhbnRJbnZva2UoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIE1ldHJpY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBnYXRld2F5LlxuICAgKlxuICAgKiBAcGFyYW0gbWV0cmljTmFtZSBUaGUgbmFtZSBvZiB0aGUgbWV0cmljXG4gICAqIEBwYXJhbSBkaW1lbnNpb25zIEFkZGl0aW9uYWwgZGltZW5zaW9ucyBmb3IgdGhlIG1ldHJpY1xuICAgKiBAcGFyYW0gcHJvcHMgT3B0aW9uYWwgbWV0cmljIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIGRpbWVuc2lvbnM6IERpbWVuc2lvbnNNYXAsIHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIHRvdGFsIG51bWJlciBvZiBpbnZvY2F0aW9ucyBmb3IgdGhpcyBnYXRld2F5LlxuICAgKlxuICAgKiBUaGlzIG1ldHJpYyB0cmFja3MgYWxsIHN1Y2Nlc3NmdWwgaW52b2NhdGlvbnMgb2YgdGhlIGdhdGV3YXkuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBPcHRpb25hbCBtZXRyaWMgY29uZmlndXJhdGlvblxuICAgKiBAZGVmYXVsdCAtIFN1bSBzdGF0aXN0aWMgb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIG1ldHJpY0ludm9jYXRpb25zKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiB0aHJvdHRsZWQgcmVxdWVzdHMgKDQyOSBzdGF0dXMgY29kZSkgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhpcyBtZXRyaWMgaGVscHMgaWRlbnRpZnkgd2hlbiB0aGUgZ2F0ZXdheSBpcyByYXRlIGxpbWl0aW5nIHJlcXVlc3RzLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgT3B0aW9uYWwgbWV0cmljIGNvbmZpZ3VyYXRpb25cbiAgICogQGRlZmF1bHQgLSBTdW0gc3RhdGlzdGljIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBtZXRyaWNUaHJvdHRsZXMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHN5c3RlbSBlcnJvcnMgKDV4eCBzdGF0dXMgY29kZSkgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhpcyBtZXRyaWMgdHJhY2tzIGludGVybmFsIHNlcnZlciBlcnJvcnMgYW5kIHN5c3RlbSBmYWlsdXJlcy5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIE9wdGlvbmFsIG1ldHJpYyBjb25maWd1cmF0aW9uXG4gICAqIEBkZWZhdWx0IC0gU3VtIHN0YXRpc3RpYyBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgbWV0cmljU3lzdGVtRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiB1c2VyIGVycm9ycyAoNHh4IHN0YXR1cyBjb2RlLCBleGNsdWRpbmcgNDI5KSBmb3IgdGhpcyBnYXRld2F5LlxuICAgKlxuICAgKiBUaGlzIG1ldHJpYyB0cmFja3MgY2xpZW50IGVycm9ycyBsaWtlIGJhZCByZXF1ZXN0cywgdW5hdXRob3JpemVkIGFjY2VzcywgZXRjLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgT3B0aW9uYWwgbWV0cmljIGNvbmZpZ3VyYXRpb25cbiAgICogQGRlZmF1bHQgLSBTdW0gc3RhdGlzdGljIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBtZXRyaWNVc2VyRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIG1lYXN1cmluZyB0aGUgbGF0ZW5jeSBvZiByZXF1ZXN0cyBmb3IgdGhpcyBnYXRld2F5LlxuICAgKlxuICAgKiBUaGUgbGF0ZW5jeSBtZXRyaWMgcmVwcmVzZW50cyB0aGUgdGltZSBlbGFwc2VkIGJldHdlZW4gd2hlbiB0aGUgc2VydmljZSByZWNlaXZlc1xuICAgKiB0aGUgcmVxdWVzdCBhbmQgd2hlbiBpdCBiZWdpbnMgc2VuZGluZyB0aGUgZmlyc3QgcmVzcG9uc2UgdG9rZW4uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBPcHRpb25hbCBtZXRyaWMgY29uZmlndXJhdGlvblxuICAgKiBAZGVmYXVsdCAtIEF2ZXJhZ2Ugc3RhdGlzdGljIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBtZXRyaWNMYXRlbmN5KHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIG1lYXN1cmluZyB0aGUgZHVyYXRpb24gb2YgcmVxdWVzdHMgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhlIGR1cmF0aW9uIG1ldHJpYyByZXByZXNlbnRzIHRoZSB0b3RhbCB0aW1lIGVsYXBzZWQgYmV0d2VlbiByZWNlaXZpbmcgdGhlIHJlcXVlc3RcbiAgICogYW5kIHNlbmRpbmcgdGhlIGZpbmFsIHJlc3BvbnNlIHRva2VuLCByZXByZXNlbnRpbmcgY29tcGxldGUgZW5kLXRvLWVuZCBwcm9jZXNzaW5nIHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBPcHRpb25hbCBtZXRyaWMgY29uZmlndXJhdGlvblxuICAgKiBAZGVmYXVsdCAtIEF2ZXJhZ2Ugc3RhdGlzdGljIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBtZXRyaWNEdXJhdGlvbihwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBtZWFzdXJpbmcgdGhlIHRhcmdldCBleGVjdXRpb24gdGltZSBmb3IgdGhpcyBnYXRld2F5LlxuICAgKlxuICAgKiBUaGlzIG1ldHJpYyBoZWxwcyBkZXRlcm1pbmUgdGhlIGNvbnRyaWJ1dGlvbiBvZiB0aGUgdGFyZ2V0IChMYW1iZGEsIE9wZW5BUEksIGV0Yy4pXG4gICAqIHRvIHRoZSB0b3RhbCBsYXRlbmN5LlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgT3B0aW9uYWwgbWV0cmljIGNvbmZpZ3VyYXRpb25cbiAgICogQGRlZmF1bHQgLSBBdmVyYWdlIHN0YXRpc3RpYyBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgbWV0cmljVGFyZ2V0RXhlY3V0aW9uVGltZShwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMgc2VydmVkIGJ5IGVhY2ggdGFyZ2V0IHR5cGUgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogQHBhcmFtIHRhcmdldFR5cGUgVGhlIHR5cGUgb2YgdGFyZ2V0IChlLmcuLCAnTGFtYmRhJywgJ09wZW5BUEknLCAnU21pdGh5JylcbiAgICogQHBhcmFtIHByb3BzIE9wdGlvbmFsIG1ldHJpYyBjb25maWd1cmF0aW9uXG4gICAqIEBkZWZhdWx0IC0gU3VtIHN0YXRpc3RpYyBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgbWV0cmljVGFyZ2V0VHlwZSh0YXJnZXRUeXBlOiBzdHJpbmcsIHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2UgQ2xhc3NcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdhdGV3YXlCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJR2F0ZXdheSB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBnYXRld2F5QXJuOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBnYXRld2F5SWQ6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcHJvdG9jb2xDb25maWd1cmF0aW9uOiBJR2F0ZXdheVByb3RvY29sQ29uZmlnO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYXV0aG9yaXplckNvbmZpZ3VyYXRpb246IElHYXRld2F5QXV0aG9yaXplckNvbmZpZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGV4Y2VwdGlvbkxldmVsPzogR2F0ZXdheUV4Y2VwdGlvbkxldmVsO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBnYXRld2F5VXJsPzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgc3RhdHVzPzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgc3RhdHVzUmVhc29uPzogc3RyaW5nW107XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1cGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcmVmZXJlbmNlIHRvIGEgR2F0ZXdheSByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgZ2F0ZXdheVJlZigpOiBHYXRld2F5UmVmZXJlbmNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2F0ZXdheUlkZW50aWZpZXI6IHRoaXMuZ2F0ZXdheUlkLFxuICAgICAgZ2F0ZXdheUFybjogdGhpcy5nYXRld2F5QXJuLFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmVzb3VyY2VQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gUGVybWlzc2lvbiBNZXRob2RzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogR3JhbnRzIElBTSBhY3Rpb25zIHRvIHRoZSBJQU0gUHJpbmNpcGFsXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IHBlcm1pc3Npb25zIHRvXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBhY3Rpb25zIHRvIGdyYW50XG4gICAqL1xuICBwdWJsaWMgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmdhdGV3YXlSZWYuZ2F0ZXdheUFybl0sXG4gICAgICBhY3Rpb25zOiBhY3Rpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBgR2V0YCBhbmQgYExpc3RgIGFjdGlvbnMgb24gdGhlIEdhdGV3YXlcbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWwgdG8gZ3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgY29uc3QgcmVzb3VyY2VTcGVjaWZpY0dyYW50ID0gdGhpcy5ncmFudChncmFudGVlLCAuLi5HQVRFV0FZX0dFVF9QRVJNUyk7XG5cbiAgICBjb25zdCBhbGxSZXNvdXJjZUdyYW50ID0gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICByZXNvdXJjZUFybnM6IFsnKiddLFxuICAgICAgYWN0aW9uczogWy4uLkdBVEVXQVlfTElTVF9QRVJNU10sXG4gICAgfSk7XG4gICAgLy8gUmV0dXJuIGNvbWJpbmVkIGdyYW50XG4gICAgcmV0dXJuIHJlc291cmNlU3BlY2lmaWNHcmFudC5jb21iaW5lKGFsbFJlc291cmNlR3JhbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBgQ3JlYXRlYCwgYFVwZGF0ZWAsIGFuZCBgRGVsZXRlYCBhY3Rpb25zIG9uIHRoZSBHYXRld2F5XG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IG1hbmFnZSBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgcHVibGljIGdyYW50TWFuYWdlKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAuLi5HQVRFV0FZX01BTkFHRV9QRVJNUyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gaW52b2tlIHRoaXMgR2F0ZXdheVxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbCB0byBncmFudCBpbnZva2UgcGVybWlzc2lvbnMgdG9cbiAgICovXG4gIHB1YmxpYyBncmFudEludm9rZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgLi4uR0FURVdBWV9JTlZPS0VfUEVSTVMpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIE1ldHJpYyBNZXRob2RzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIG1ldHJpYyB3aWxsIGJlIGNhbGN1bGF0ZWQgYXMgYSBzdW0gb3ZlciBhIHBlcmlvZCBvZiA1IG1pbnV0ZXMuXG4gICAqIFlvdSBjYW4gY3VzdG9taXplIHRoaXMgYnkgdXNpbmcgdGhlIGBzdGF0aXN0aWNgIGFuZCBgcGVyaW9kYCBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0cmljTmFtZSBUaGUgbmFtZSBvZiB0aGUgbWV0cmljXG4gICAqIEBwYXJhbSBkaW1lbnNpb25zIEFkZGl0aW9uYWwgZGltZW5zaW9ucyBmb3IgdGhlIG1ldHJpY1xuICAgKiBAcGFyYW0gcHJvcHMgT3B0aW9uYWwgbWV0cmljIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHB1YmxpYyBtZXRyaWMobWV0cmljTmFtZTogc3RyaW5nLCBkaW1lbnNpb25zOiBEaW1lbnNpb25zTWFwLCBwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIGNvbnN0IG1ldHJpY1Byb3BzOiBNZXRyaWNQcm9wcyA9IHtcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9CZWRyb2NrLUFnZW50Q29yZScsXG4gICAgICBtZXRyaWNOYW1lLFxuICAgICAgZGltZW5zaW9uc01hcDogeyAuLi5kaW1lbnNpb25zLCBSZXNvdXJjZTogdGhpcy5nYXRld2F5UmVmLmdhdGV3YXlBcm4gfSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJlTWV0cmljKG1ldHJpY1Byb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIGludm9jYXRpb25zIGZvciB0aGlzIGdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljSW52b2NhdGlvbnMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ0ludm9jYXRpb25zJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgdGhyb3R0bGVkIHJlcXVlc3RzICg0Mjkgc3RhdHVzIGNvZGUpIGZvciB0aGlzIGdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljVGhyb3R0bGVzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdUaHJvdHRsZXMnLCB7fSwgeyBzdGF0aXN0aWM6IFN0YXRzLlNVTSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBzeXN0ZW0gZXJyb3JzICg1eHggc3RhdHVzIGNvZGUpIGZvciB0aGlzIGdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljU3lzdGVtRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdTeXN0ZW1FcnJvcnMnLCB7fSwgeyBzdGF0aXN0aWM6IFN0YXRzLlNVTSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiB1c2VyIGVycm9ycyAoNHh4IHN0YXR1cyBjb2RlLCBleGNsdWRpbmcgNDI5KSBmb3IgdGhpcyBnYXRld2F5LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1VzZXJFcnJvcnMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ1VzZXJFcnJvcnMnLCB7fSwgeyBzdGF0aXN0aWM6IFN0YXRzLlNVTSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIG1lYXN1cmluZyB0aGUgbGF0ZW5jeSBvZiByZXF1ZXN0cyBmb3IgdGhpcyBnYXRld2F5LlxuICAgKlxuICAgKiBUaGUgbGF0ZW5jeSBtZXRyaWMgcmVwcmVzZW50cyB0aGUgdGltZSBlbGFwc2VkIGJldHdlZW4gd2hlbiB0aGUgc2VydmljZSByZWNlaXZlc1xuICAgKiB0aGUgcmVxdWVzdCBhbmQgd2hlbiBpdCBiZWdpbnMgc2VuZGluZyB0aGUgZmlyc3QgcmVzcG9uc2UgdG9rZW4uXG4gICAqL1xuICBwdWJsaWMgbWV0cmljTGF0ZW5jeShwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnTGF0ZW5jeScsIHt9LCB7IHN0YXRpc3RpYzogU3RhdHMuQVZFUkFHRSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIG1lYXN1cmluZyB0aGUgZHVyYXRpb24gb2YgcmVxdWVzdHMgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhlIGR1cmF0aW9uIG1ldHJpYyByZXByZXNlbnRzIHRoZSB0b3RhbCB0aW1lIGVsYXBzZWQgYmV0d2VlbiByZWNlaXZpbmcgdGhlIHJlcXVlc3RcbiAgICogYW5kIHNlbmRpbmcgdGhlIGZpbmFsIHJlc3BvbnNlIHRva2VuLCByZXByZXNlbnRpbmcgY29tcGxldGUgZW5kLXRvLWVuZCBwcm9jZXNzaW5nIHRpbWUuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljRHVyYXRpb24ocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ0R1cmF0aW9uJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5BVkVSQUdFLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgbWVhc3VyaW5nIHRoZSB0YXJnZXQgZXhlY3V0aW9uIHRpbWUgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhpcyBtZXRyaWMgaGVscHMgZGV0ZXJtaW5lIHRoZSBjb250cmlidXRpb24gb2YgdGhlIHRhcmdldCAoTGFtYmRhLCBPcGVuQVBJLCBldGMuKVxuICAgKiB0byB0aGUgdG90YWwgbGF0ZW5jeS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNUYXJnZXRFeGVjdXRpb25UaW1lKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdUYXJnZXRFeGVjdXRpb25UaW1lJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5BVkVSQUdFLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIHNlcnZlZCBieSBlYWNoIHRhcmdldCB0eXBlIGZvciB0aGlzIGdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljVGFyZ2V0VHlwZSh0YXJnZXRUeXBlOiBzdHJpbmcsIHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdUYXJnZXRUeXBlJywgeyBUYXJnZXRUeXBlOiB0YXJnZXRUeXBlIH0sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIG1ldGhvZCB0byBjcmVhdGUgYSBtZXRyaWMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBjb25maWd1cmVNZXRyaWMocHJvcHM6IE1ldHJpY1Byb3BzKSB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgLi4ucHJvcHMsXG4gICAgICByZWdpb246IHByb3BzPy5yZWdpb24gPz8gdGhpcy5zdGFjay5yZWdpb24sXG4gICAgICBhY2NvdW50OiBwcm9wcz8uYWNjb3VudCA/PyB0aGlzLnN0YWNrLmFjY291bnQsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,15 +1,16 @@
1
1
  import * as cognito from 'aws-cdk-lib/aws-cognito';
2
2
  import * as iam from 'aws-cdk-lib/aws-iam';
3
- import * as kms from 'aws-cdk-lib/aws-kms';
4
- import { IFunction } from 'aws-cdk-lib/aws-lambda';
5
- import { Construct } from 'constructs';
6
- import { GatewayBase, GatewayExceptionLevel, IGateway } from './gateway-base';
7
- import { IGatewayAuthorizerConfig } from './inbound-auth/authorizer';
8
- import { IInterceptor } from './interceptor';
9
- import { ICredentialProviderConfig } from './outbound-auth/credential-provider';
10
- import { IGatewayProtocolConfig } from './protocol';
11
- import { ApiSchema } from './targets/schema/api-schema';
12
- import { ToolSchema } from './targets/schema/tool-schema';
3
+ import type * as kms from 'aws-cdk-lib/aws-kms';
4
+ import type { IFunction } from 'aws-cdk-lib/aws-lambda';
5
+ import type { Construct } from 'constructs';
6
+ import type { GatewayExceptionLevel, IGateway } from './gateway-base';
7
+ import { GatewayBase } from './gateway-base';
8
+ import type { IGatewayAuthorizerConfig } from './inbound-auth/authorizer';
9
+ import type { IInterceptor } from './interceptor';
10
+ import type { ICredentialProviderConfig } from './outbound-auth/credential-provider';
11
+ import type { IGatewayProtocolConfig } from './protocol';
12
+ import type { ApiSchema } from './targets/schema/api-schema';
13
+ import type { ToolSchema } from './targets/schema/tool-schema';
13
14
  import { GatewayTarget } from './targets/target';
14
15
  /******************************************************************************
15
16
  * Props
@@ -43,7 +43,6 @@ const cognito = require("aws-cdk-lib/aws-cognito");
43
43
  const iam = require("aws-cdk-lib/aws-iam");
44
44
  const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
45
45
  const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
46
- // Internal imports
47
46
  const gateway_base_1 = require("./gateway-base");
48
47
  const authorizer_1 = require("./inbound-auth/authorizer");
49
48
  const interceptor_1 = require("./interceptor");
@@ -91,7 +90,7 @@ let Gateway = (() => {
91
90
  Gateway = _classThis = _classDescriptor.value;
92
91
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
93
92
  }
94
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.Gateway", version: "2.237.0-alpha.0" };
93
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.Gateway", version: "2.238.0-alpha.0" };
95
94
  /** Uniquely identifies this class. */
96
95
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.Gateway';
97
96
  /**
@@ -687,4 +686,4 @@ let Gateway = (() => {
687
686
  return Gateway = _classThis;
688
687
  })();
689
688
  exports.Gateway = Gateway;
690
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImdhdGV3YXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQXdEO0FBQ3hELHFFQUFxRTtBQUNyRSxtREFBbUQ7QUFDbkQsMkNBQTJDO0FBRzNDLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFFMUUsbUJBQW1CO0FBQ25CLGlEQUE4RTtBQUM5RSwwREFBd0Y7QUFDeEYsK0NBQXVGO0FBRXZGLG1DQUFxRTtBQUNyRSx5Q0FBd0g7QUFHeEgsNkNBQWlEO0FBQ2pELDZEQUFrRztBQW1QbEc7OytFQUUrRTtBQUMvRTs7Ozs7O0dBTUc7SUFFVSxPQUFPOzRCQURuQixvQ0FBa0I7Ozs7c0JBQ1UsMEJBQVc7Ozs7Ozs7dUJBQW5CLFNBQVEsV0FBVzs7OzsyQ0FrUXJDLElBQUEsa0NBQWMsR0FBRTs0Q0ErQmhCLElBQUEsa0NBQWMsR0FBRTsyQ0F5QmhCLElBQUEsa0NBQWMsR0FBRTs4Q0E4QmhCLElBQUEsa0NBQWMsR0FBRTswQ0F5T2hCLElBQUEsa0NBQWMsR0FBRTtZQTlUakIsZ01BQU8sZUFBZSw2REFvQnJCO1lBV0QsbU1BQU8sZ0JBQWdCLDZEQWN0QjtZQVdELGdNQUFPLGVBQWUsNkRBa0JyQjtZQVlELHlNQUFPLGtCQUFrQiw2REFrQnhCO1lBdU5ELDZMQUFPLGNBQWMsNkRBa0JwQjtZQXBsQkgsNktBaW9CQzs7Ozs7UUFob0JDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsOENBQThDLENBQUM7UUFDdEc7Ozs7Ozs7V0FPRztRQUNJLE1BQU0sQ0FBQyxxQkFBcUIsQ0FDakMsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQXdCOzs7Ozs7Ozs7O1lBRXhCLE1BQU0sZUFBZ0IsU0FBUSwwQkFBVztnQkFDdkIsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7Z0JBQzlCLFNBQVMsR0FBRyxLQUFL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QztnQkFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDNUQsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7Z0JBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzdELENBQUM7WUFFRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztTQUNqRDs7WUFob0JVLHVEQUFPOzs7OztBQUFQLDBCQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIFRva2VuLCBMYXp5LCBOYW1lcyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGJlZHJvY2thZ2VudGNvcmUgZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0ICogYXMgY29nbml0byBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29nbml0byc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgeyBJRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbi8vIEludGVybmFsIGltcG9ydHNcbmltcG9ydCB7IEdhdGV3YXlCYXNlLCBHYXRld2F5RXhjZXB0aW9uTGV2ZWwsIElHYXRld2F5IH0gZnJvbSAnLi9nYXRld2F5LWJhc2UnO1xuaW1wb3J0IHsgR2F0ZXdheUF1dGhvcml6ZXIsIElHYXRld2F5QXV0aG9yaXplckNvbmZpZyB9IGZyb20gJy4vaW5ib3VuZC1hdXRoL2F1dGhvcml6ZXInO1xuaW1wb3J0IHsgSUludGVyY2VwdG9yLCBJbnRlcmNlcHRvckJpbmRDb25maWcsIEludGVyY2VwdGlvblBvaW50IH0gZnJvbSAnLi9pbnRlcmNlcHRvcic7XG5pbXBvcnQgeyBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIH0gZnJvbSAnLi9vdXRib3VuZC1hdXRoL2NyZWRlbnRpYWwtcHJvdmlkZXInO1xuaW1wb3J0IHsgR0FURVdBWV9BU1NVTUVfUk9MRSwgR0FURVdBWV9LTVNfS0VZX1BFUk1TIH0gZnJvbSAnLi9wZXJtcyc7XG5pbXBvcnQgeyBJR2F0ZXdheVByb3RvY29sQ29uZmlnLCBNY3BHYXRld2F5U2VhcmNoVHlwZSwgTWNwUHJvdG9jb2xDb25maWd1cmF0aW9uLCBNQ1BQcm90b2NvbFZlcnNpb24gfSBmcm9tICcuL3Byb3RvY29sJztcbmltcG9ydCB7IEFwaVNjaGVtYSB9IGZyb20gJy4vdGFyZ2V0cy9zY2hlbWEvYXBpLXNjaGVtYSc7XG5pbXBvcnQgeyBUb29sU2NoZW1hIH0gZnJvbSAnLi90YXJnZXRzL3NjaGVtYS90b29sLXNjaGVtYSc7XG5pbXBvcnQgeyBHYXRld2F5VGFyZ2V0IH0gZnJvbSAnLi90YXJnZXRzL3RhcmdldCc7XG5pbXBvcnQgeyB2YWxpZGF0ZVN0cmluZ0ZpZWxkLCB2YWxpZGF0ZUZpZWxkUGF0dGVybiwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi92YWxpZGF0aW9uLWhlbHBlcnMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvcHNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhZGRpbmcgYSBMYW1iZGEgdGFyZ2V0IHRvIGEgZ2F0ZXdheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZExhbWJkYVRhcmdldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpIGFuZCAtIChoeXBoZW4pXG4gICAqIEBkZWZhdWx0IC0gYXV0byBnZW5lcmF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheVRhcmdldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBMYW1iZGEgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIHdpdGggdGhpcyB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUZ1bmN0aW9uOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0b29sIHNjaGVtYSBkZWZpbmluZyB0aGUgYXZhaWxhYmxlIHRvb2xzXG4gICAqL1xuICByZWFkb25seSB0b29sU2NoZW1hOiBUb29sU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogQGRlZmF1bHQgLSBbR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlci5pYW1Sb2xlKCldXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhZGRpbmcgYW4gT3BlbkFQSSB0YXJnZXQgdG8gYSBnYXRld2F5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkT3BlbkFwaVRhcmdldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpIGFuZCAtIChoeXBoZW4pXG4gICAqIEBkZWZhdWx0IC0gYXV0byBnZW5lcmF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheVRhcmdldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBPcGVuQVBJIHNjaGVtYSBkZWZpbmluZyB0aGUgQVBJXG4gICAqL1xuICByZWFkb25seSBhcGlTY2hlbWE6IEFwaVNjaGVtYTtcblxuICAvKipcbiAgICogV2hldGhlciB0byB2YWxpZGF0ZSB0aGUgT3BlbkFQSSBzY2hlbWEgb3Igbm90XG4gICAqIE5vdGU6IFZhbGlkYXRpb24gaXMgb25seSBwZXJmb3JtZWQgZm9yIGlubGluZSBhbmQgYXNzZXQtYmFzZWQgc2NoZW1hIGFuZCAgZHVyaW5nIENESyBzeW50aGVzaXMuXG4gICAqIFMzIHNjaGVtYXMgY2Fubm90IGJlIHZhbGlkYXRlZCBhdCBzeW50aGVzaXMgdGltZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGVPcGVuQXBpU2NoZW1hPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBkZWZhdWx0IC0gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuaWFtUm9sZSgpXVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM/OiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYWRkaW5nIGEgU21pdGh5IHRhcmdldCB0byBhIGdhdGV3YXlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRTbWl0aHlUYXJnZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBWYWxpZCBjaGFyYWN0ZXJzIGFyZSBhLXosIEEtWiwgMC05LCBfICh1bmRlcnNjb3JlKSBhbmQgLSAoaHlwaGVuKVxuICAgKiBAZGVmYXVsdCAtIGF1dG8gZ2VuZXJhdGVcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlUYXJnZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgU21pdGh5IG1vZGVsIGRlZmluaW5nIHRoZSBBUElcbiAgICovXG4gIHJlYWRvbmx5IHNtaXRoeU1vZGVsOiBBcGlTY2hlbWE7XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKiBAZGVmYXVsdCAtIFtHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLmlhbVJvbGUoKV1cbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPzogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGFkZGluZyBhbiBNQ1AgU2VydmVyIHRhcmdldCB0byBhIGdhdGV3YXlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRNY3BTZXJ2ZXJUYXJnZXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBWYWxpZCBjaGFyYWN0ZXJzIGFyZSBhLXosIEEtWiwgMC05LCBfICh1bmRlcnNjb3JlKSBhbmQgLSAoaHlwaGVuKVxuICAgKiBAZGVmYXVsdCAtIGF1dG8gZ2VuZXJhdGVcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlUYXJnZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSFRUUFMgZW5kcG9pbnQgVVJMIG9mIHRoZSBNQ1Agc2VydmVyXG4gICAqXG4gICAqIFRoZSBlbmRwb2ludCBtdXN0OlxuICAgKiAtIFVzZSBIVFRQUyBwcm90b2NvbFxuICAgKiAtIEJlIHByb3Blcmx5IFVSTC1lbmNvZGVkXG4gICAqIC0gUG9pbnQgdG8gYW4gTUNQIHNlcnZlciB0aGF0IGltcGxlbWVudHMgdG9vbCBjYXBhYmlsaXRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKlxuICAgKiBNQ1Agc2VydmVycyByZXF1aXJlIGV4cGxpY2l0IGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAqIE9BdXRoMiBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCBvdmVyIE5vQXV0aC5cbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgZGVmaW5pbmcgYSBHYXRld2F5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpIGFuZCAtIChoeXBoZW4pXG4gICAqIFRoZSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB5b3VyIGFjY291bnRcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBnYXRld2F5XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpLCAtIChoeXBoZW4pIGFuZCBzcGFjZXNcbiAgICogVGhlIGRlc2NyaXB0aW9uIGNhbiBoYXZlIHVwIHRvIDIwMCBjaGFyYWN0ZXJzXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvdG9jb2wgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdhdGV3YXlcbiAgICogQGRlZmF1bHQgLSBBIGRlZmF1bHQgcHJvdG9jb2wgY29uZmlndXJhdGlvbiB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgTUNQIHdpdGggZm9sbG93aW5nIHBhcmFtc1xuICAgKiAgc3VwcG9ydGVkVmVyc2lvbnM6IFtNQ1BQcm90b2NvbFZlcnNpb24uTUNQXzIwMjVfMDNfMjZdLFxuICAgKiAgc2VhcmNoVHlwZTogTWNwR2F0ZXdheVNlYXJjaFR5cGUuU0VNQU5USUMsXG4gICAqICBpbnN0cnVjdGlvbnM6IFwiRGVmYXVsdCBnYXRld2F5IHRvIGNvbm5lY3QgdG8gZXh0ZXJuYWwgTUNQIHRvb2xzXCIsXG4gICAqL1xuICByZWFkb25seSBwcm90b2NvbENvbmZpZ3VyYXRpb24/OiBJR2F0ZXdheVByb3RvY29sQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgYXV0aG9yaXplciBjb25maWd1cmF0aW9uIGZvciB0aGUgZ2F0ZXdheVxuICAgKiBAZGVmYXVsdCAtIEEgZGVmYXVsdCBhdXRob3JpemVyIHdpbGwgYmUgY3JlYXRlZCB1c2luZyBDb2duaXRvXG4gICAqL1xuICByZWFkb25seSBhdXRob3JpemVyQ29uZmlndXJhdGlvbj86IElHYXRld2F5QXV0aG9yaXplckNvbmZpZztcblxuICAvKipcbiAgICogVGhlIHZlcmJvc2l0eSBvZiBleGNlcHRpb24gbWVzc2FnZXNcbiAgICogVXNlIERFQlVHIG1vZGUgdG8gc2VlIGdyYW51bGFyIGV4Y2VwdGlvbiBtZXNzYWdlcyBmcm9tIGEgR2F0ZXdheVxuICAgKiBAZGVmYXVsdCAtIEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgc2FuaXRpemVkIGZvciBwcmVzZW50YXRpb24gdG8gZW5kIHVzZXJzXG4gICAqL1xuICByZWFkb25seSBleGNlcHRpb25MZXZlbD86IEdhdGV3YXlFeGNlcHRpb25MZXZlbDtcblxuICAvKipcbiAgICogVGhlIEFXUyBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2F0ZXdheVxuICAgKiBAZGVmYXVsdCAtIE5vIGVuY3J5cHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgdGhhdCBwcm92aWRlcyBwZXJtaXNzaW9ucyBmb3IgdGhlIGdhdGV3YXkgdG8gYWNjZXNzIEFXUyBzZXJ2aWNlc1xuICAgKiBAZGVmYXVsdCAtIEEgbmV3IHJvbGUgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUYWdzIGZvciB0aGUgZ2F0ZXdheVxuICAgKiBBIGxpc3Qgb2Yga2V5OnZhbHVlIHBhaXJzIG9mIHRhZ3MgdG8gYXBwbHkgdG8gdGhpcyBHYXRld2F5IHJlc291cmNlXG4gICAqIEBkZWZhdWx0IC0gTm8gdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEludGVyY2VwdG9yIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgZ2F0ZXdheVxuICAgKlxuICAgKiBJbnRlcmNlcHRvcnMgYWxsb3cgeW91IHRvIHJ1biBjdXN0b20gY29kZSBkdXJpbmcgZWFjaCBnYXRld2F5IGludm9jYXRpb246XG4gICAqIC0gUkVRVUVTVCBpbnRlcmNlcHRvcnMgZXhlY3V0ZSBiZWZvcmUgdGhlIGdhdGV3YXkgY2FsbHMgdGhlIHRhcmdldFxuICAgKiAtIFJFU1BPTlNFIGludGVyY2VwdG9ycyBleGVjdXRlIGFmdGVyIHRoZSB0YXJnZXQgcmVzcG9uZHNcbiAgICpcbiAgICogQSBnYXRld2F5IGNhbiBoYXZlIGF0IG1vc3Qgb25lIFJFUVVFU1QgaW50ZXJjZXB0b3IgYW5kIG9uZSBSRVNQT05TRSBpbnRlcmNlcHRvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBpbnRlcmNlcHRvcnNcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL2dhdGV3YXktaW50ZXJjZXB0b3JzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGludGVyY2VwdG9yQ29uZmlndXJhdGlvbnM/OiBJSW50ZXJjZXB0b3JbXTtcbn1cblxuLyoqXG4gKiBBdHRyaWJ1dGVzIGZvciBpbXBvcnRpbmcgYW4gZXhpc3RpbmcgR2F0ZXdheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBnYXRld2F5SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSB0aGF0IHByb3ZpZGVzIHBlcm1pc3Npb25zIGZvciB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogR2F0ZXdheSByZXNvdXJjZSBmb3IgQVdTIEJlZHJvY2sgQWdlbnQgQ29yZS5cbiAqIFNlcnZlcyBhcyBhbiBpbnRlZ3JhdGlvbiBwb2ludCBiZXR3ZWVuIHlvdXIgYWdlbnQgYW5kIGV4dGVybmFsIHNlcnZpY2VzLlxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkJlZHJvY2tBZ2VudENvcmU6OkdhdGV3YXlcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlLWNvbnRyb2wvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlR2F0ZXdheS5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBHYXRld2F5IGV4dGVuZHMgR2F0ZXdheUJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1iZWRyb2NrLWFnZW50Y29yZS1hbHBoYS5HYXRld2F5JztcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBHYXRld2F5IHVzaW5nIGl0cyBhdHRyaWJ1dGVzXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBhdHRycyBUaGUgYXR0cmlidXRlcyBvZiB0aGUgZXhpc3RpbmcgR2F0ZXdheVxuICAgKiBAcmV0dXJucyBBbiBJR2F0ZXdheSBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIGltcG9ydGVkIGdhdGV3YXlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUdhdGV3YXlBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogR2F0ZXdheUF0dHJpYnV0ZXMsXG4gICk6IElHYXRld2F5IHtcbiAgICBjbGFzcyBJbXBvcnRlZEdhdGV3YXkgZXh0ZW5kcyBHYXRld2F5QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheUFybiA9IGF0dHJzLmdhdGV3YXlBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheUlkID0gYXR0cnMuZ2F0ZXdheUlkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IG5hbWUgPSBhdHRycy5nYXRld2F5TmFtZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwcm90b2NvbENvbmZpZ3VyYXRpb246IElHYXRld2F5UHJvdG9jb2xDb25maWc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYXV0aG9yaXplckNvbmZpZ3VyYXRpb246IElHYXRld2F5QXV0aG9yaXplckNvbmZpZztcbiAgICAgIHB1YmxpYyByZWFkb25seSBleGNlcHRpb25MZXZlbCA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBrbXNLZXkgPSB1bmRlZmluZWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcm9sZSA9IGF0dHJzLnJvbGU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheVVybCA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzUmVhc29uID0gdW5kZWZpbmVkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZWRBdCA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSB1cGRhdGVkQXQgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGNvbnN0cnVjdG9yKHM6IENvbnN0cnVjdCwgaTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHMsIGkpO1xuICAgICAgICAvLyBDcmVhdGUgcGxhY2Vob2xkZXIgcHJvdG9jb2wgYW5kIGF1dGhvcml6ZXIgY29uZmlndXJhdGlvbnNcbiAgICAgICAgdGhpcy5wcm90b2NvbENvbmZpZ3VyYXRpb24gPSBuZXcgTWNwUHJvdG9jb2xDb25maWd1cmF0aW9uKHtcbiAgICAgICAgICBzdXBwb3J0ZWRWZXJzaW9uczogW01DUFByb3RvY29sVmVyc2lvbi5NQ1BfMjAyNV8wM18yNl0sXG4gICAgICAgICAgc2VhcmNoVHlwZTogTWNwR2F0ZXdheVNlYXJjaFR5cGUuU0VNQU5USUMsXG4gICAgICAgICAgaW5zdHJ1Y3Rpb25zOiAnSW1wb3J0ZWQgZ2F0ZXdheScsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmF1dGhvcml6ZXJDb25maWd1cmF0aW9uID0gR2F0ZXdheUF1dGhvcml6ZXIudXNpbmdBd3NJYW0oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZEdhdGV3YXkoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBnYXRld2F5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnYXRld2F5QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZ2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGdhdGV3YXlcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb3RvY29sIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnYXRld2F5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvdG9jb2xDb25maWd1cmF0aW9uOiBJR2F0ZXdheVByb3RvY29sQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgYXV0aG9yaXplciBjb25maWd1cmF0aW9uIGZvciB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF1dGhvcml6ZXJDb25maWd1cmF0aW9uOiBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBleGNlcHRpb24gbGV2ZWwgZm9yIHRoZSBnYXRld2F5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhjZXB0aW9uTGV2ZWw/OiBHYXRld2F5RXhjZXB0aW9uTGV2ZWw7XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHVzZWQgZm9yIGVuY3J5cHRpb25cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleTtcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIGZvciB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIFVSTCBlbmRwb2ludCBmb3IgdGhlIGdhdGV3YXlcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdhdGV3YXlVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIGdhdGV3YXlcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyByZWFzb25zIGZvciB0aGUgZ2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzUmVhc29uPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB3aGVuIHRoZSBnYXRld2F5IHdhcyBjcmVhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB3aGVuIHRoZSBnYXRld2F5IHdhcyBsYXN0IHVwZGF0ZWRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVwZGF0ZWRBdD86IHN0cmluZztcblxuICAvKipcbiAgICogVGFncyBhcHBsaWVkIHRvIHRoZSBnYXRld2F5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBDb2duaXRvIFVzZXIgUG9vbCBjcmVhdGVkIGZvciB0aGUgZ2F0ZXdheSAoaWYgdXNpbmcgZGVmYXVsdCBDb2duaXRvIGF1dGhvcml6ZXIpXG4gICAqL1xuICBwdWJsaWMgdXNlclBvb2w/OiBjb2duaXRvLklVc2VyUG9vbDtcblxuICAvKipcbiAgICogVGhlIENvZ25pdG8gVXNlciBQb29sIENsaWVudCBjcmVhdGVkIGZvciB0aGUgZ2F0ZXdheSAoaWYgdXNpbmcgZGVmYXVsdCBDb2duaXRvIGF1dGhvcml6ZXIpXG4gICAqL1xuICBwdWJsaWMgdXNlclBvb2xDbGllbnQ/OiBjb2duaXRvLklVc2VyUG9vbENsaWVudDtcblxuICAvKipcbiAgICogVGhlIFJFUVVFU1QgaW50ZXJjZXB0b3IgY29uZmlndXJhdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcmVxdWVzdEludGVyY2VwdG9yQ29uZmlnPzogSW50ZXJjZXB0b3JCaW5kQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgUkVTUE9OU0UgaW50ZXJjZXB0b3IgY29uZmlndXJhdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcmVzcG9uc2VJbnRlcmNlcHRvckNvbmZpZz86IEludGVyY2VwdG9yQmluZENvbmZpZztcblxuICAvKipcbiAgICogVGhlIENvZ25pdG8gVXNlciBQb29sIERvbWFpbiBjcmVhdGVkIGZvciB0aGUgZ2F0ZXdheSAoaWYgdXNpbmcgZGVmYXVsdCBDb2duaXRvIGF1dGhvcml6ZXIpXG4gICAqL1xuICBwdWJsaWMgdXNlclBvb2xEb21haW4/OiBjb2duaXRvLklVc2VyUG9vbERvbWFpbjtcblxuICAvKipcbiAgICogVGhlIENvZ25pdG8gUmVzb3VyY2UgU2VydmVyIGNyZWF0ZWQgZm9yIHRoZSBnYXRld2F5IChpZiB1c2luZyBkZWZhdWx0IENvZ25pdG8gYXV0aG9yaXplcilcbiAgICovXG4gIHB1YmxpYyByZXNvdXJjZVNlcnZlcj86IGNvZ25pdG8uSVVzZXJQb29sUmVzb3VyY2VTZXJ2ZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBPQXV0aDIgdG9rZW4gZW5kcG9pbnQgVVJMIGZvciBjbGllbnQgY3JlZGVudGlhbHMgZmxvdy5cbiAgICogT25seSBhdmFpbGFibGUgd2hlbiB1c2luZyB0aGUgZGVmYXVsdCBDb2duaXRvIGF1dGhvcml6ZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdG9rZW5FbmRwb2ludFVybD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE9BdXRoMiBzY29wZSBzdHJpbmdzIGZvciBjbGllbnQgY3JlZGVudGlhbHMgZmxvdy5cbiAgICogT25seSBhdmFpbGFibGUgd2hlbiB1c2luZyB0aGUgZGVmYXVsdCBDb2duaXRvIGF1dGhvcml6ZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb2F1dGhTY29wZXM/OiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogR2F0ZXdheVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC8vIE1heGltdW0gbmFtZSBsZW5ndGggb2YgNDggY2hhcmFjdGVycyBpcyBjaG9zZW4gaW5zdGVhZCBvZiAxMDAgY2hhcmFjdGVycyB0aGF0IG1lbnRpb25lZCBpbiBkb2N1bWVudGF0aW9uIGJlbG93LFxuICAgICAgLy8gZHVlIHRvIGZhaWx1cmUgaW4gQ0YgZGVwbG95bWVudCB3aGVuIG1vcmUgdGhhbiA0OCBjaGFyYWN0ZXJzIHVzZWRcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9UZW1wbGF0ZVJlZmVyZW5jZS9hd3MtcmVzb3VyY2UtYmVkcm9ja2FnZW50Y29yZS1nYXRld2F5Lmh0bWwjY2ZuLWJlZHJvY2thZ2VudGNvcmUtZ2F0ZXdheS1uYW1lXG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLmdhdGV3YXlOYW1lID8/XG4gICAgICAgIExhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDQ4IH0pLFxuICAgICAgICB9KSxcbiAgICB9KTtcblxuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEFzc2lnbm1lbnRzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICB0aGlzLm5hbWUgPSB0aGlzLnBoeXNpY2FsTmFtZTtcbiAgICB0aGlzLnZhbGlkYXRlR2F0ZXdheU5hbWUodGhpcy5uYW1lKTtcblxuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBwcm9wcy5kZXNjcmlwdGlvbjtcbiAgICBpZiAodGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgdGhpcy52YWxpZGF0ZURlc2NyaXB0aW9uKHRoaXMuZGVzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIHRoaXMua21zS2V5ID0gcHJvcHMua21zS2V5O1xuICAgIHRoaXMucm9sZSA9IHByb3BzLnJvbGUgPz8gdGhpcy5jcmVhdGVHYXRld2F5Um9sZSgpO1xuXG4gICAgaWYgKHRoaXMua21zS2V5ICYmIHRoaXMucm9sZSkge1xuICAgICAgdGhpcy5rbXNLZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdCh0aGlzLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucHJvdG9jb2xDb25maWd1cmF0aW9uID0gcHJvcHMucHJvdG9jb2xDb25maWd1cmF0aW9uID8/IHRoaXMuY3JlYXRlRGVmYXVsdE1jcFByb3RvY29sQ29uZmlndXJhdGlvbigpO1xuICAgIGlmIChwcm9wcy5hdXRob3JpemVyQ29uZmlndXJhdGlvbikge1xuICAgICAgdGhpcy5hdXRob3JpemVyQ29uZmlndXJhdGlvbiA9IHByb3BzLmF1dGhvcml6ZXJDb25maWd1cmF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkZWZhdWx0Q29nbml0b0F1dGggPSB0aGlzLmNyZWF0ZURlZmF1bHRDb2duaXRvQXV0aG9yaXplckNvbmZpZygpO1xuICAgICAgdGhpcy5hdXRob3JpemVyQ29uZmlndXJhdGlvbiA9IGRlZmF1bHRDb2duaXRvQXV0aC5hdXRob3JpemVyQ29uZmlnO1xuICAgICAgdGhpcy50b2tlbkVuZHBvaW50VXJsID0gZGVmYXVsdENvZ25pdG9BdXRoLnRva2VuRW5kcG9pbnRVcmw7XG4gICAgICB0aGlzLm9hdXRoU2NvcGVzID0gZGVmYXVsdENvZ25pdG9BdXRoLm9hdXRoU2NvcGVzO1xuICAgIH1cbiAgICB0aGlzLmV4Y2VwdGlvbkxldmVsID0gcHJvcHMuZXhjZXB0aW9uTGV2ZWw7XG5cbiAgICB0aGlzLnRhZ3MgPSBwcm9wcy50YWdzID8/IHt9O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBpbnRlcmNlcHRvcnMgZnJvbSBwcm9wc1xuICAgIGlmIChwcm9wcy5pbnRlcmNlcHRvckNvbmZpZ3VyYXRpb25zKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlQW5kSW5pdGlhbGl6ZUludGVyY2VwdG9ycyhwcm9wcy5pbnRlcmNlcHRvckNvbmZpZ3VyYXRpb25zKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBMMSBJbnN0YW50aWF0aW9uXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgX3Jlc291cmNlID0gbmV3IGJlZHJvY2thZ2VudGNvcmUuQ2ZuR2F0ZXdheSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBhdXRob3JpemVyQ29uZmlndXJhdGlvbjogdGhpcy5hdXRob3JpemVyQ29uZmlndXJhdGlvbi5fcmVuZGVyKCksXG4gICAgICBhdXRob3JpemVyVHlwZTogdGhpcy5hdXRob3JpemVyQ29uZmlndXJhdGlvbi5hdXRob3JpemVyVHlwZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgZXhjZXB0aW9uTGV2ZWw6IHRoaXMuZXhjZXB0aW9uTGV2ZWwsXG4gICAgICBpbnRlcmNlcHRvckNvbmZpZ3VyYXRpb25zOiBMYXp5LmFueSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHRoaXMucmVuZGVySW50ZXJjZXB0b3JDb25maWd1cmF0aW9ucygpLFxuICAgICAgfSksXG4gICAgICBrbXNLZXlBcm46IHRoaXMua21zS2V5Py5rZXlBcm4sXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBwcm90b2NvbENvbmZpZ3VyYXRpb246IHRoaXMucHJvdG9jb2xDb25maWd1cmF0aW9uLl9yZW5kZXIoKSxcbiAgICAgIHByb3RvY29sVHlwZTogdGhpcy5wcm90b2NvbENvbmZpZ3VyYXRpb24ucHJvdG9jb2xUeXBlLFxuICAgICAgcm9sZUFybjogdGhpcy5yb2xlPy5yb2xlQXJuLFxuICAgICAgdGFnczogdGhpcy50YWdzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5nYXRld2F5SWQgPSBfcmVzb3VyY2UuYXR0ckdhdGV3YXlJZGVudGlmaWVyO1xuICAgIHRoaXMuZ2F0ZXdheUFybiA9IF9yZXNvdXJjZS5hdHRyR2F0ZXdheUFybjtcbiAgICB0aGlzLmdhdGV3YXlVcmwgPSBfcmVzb3VyY2UuYXR0ckdhdGV3YXlVcmw7XG4gICAgdGhpcy5zdGF0dXMgPSBfcmVzb3VyY2UuYXR0clN0YXR1cztcbiAgICB0aGlzLmNyZWF0ZWRBdCA9IF9yZXNvdXJjZS5hdHRyQ3JlYXRlZEF0O1xuICAgIHRoaXMudXBkYXRlZEF0ID0gX3Jlc291cmNlLmF0dHJVcGRhdGVkQXQ7XG4gICAgdGhpcy5zdGF0dXNSZWFzb24gPSBfcmVzb3VyY2UuYXR0clN0YXR1c1JlYXNvbnM7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgTGFtYmRhIHRhcmdldCB0byB0aGlzIGdhdGV3YXlcbiAgICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGNyZWF0ZXMgYSBHYXRld2F5VGFyZ2V0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGdhdGV3YXlcbiAgICpcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWQgZm9yIHRoZSB0YXJnZXRcbiAgICogQHBhcmFtIHByb3BzIFByb3BlcnRpZXMgZm9yIHRoZSBMYW1iZGEgdGFyZ2V0XG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIEdhdGV3YXlUYXJnZXRcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRMYW1iZGFUYXJnZXQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQWRkTGFtYmRhVGFyZ2V0T3B0aW9ucyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgLy8gTGFtYmRhIGludm9rZSBwZXJtaXNzaW9ucyBhcmUgYXV0b21hdGljYWxseSBncmFudGVkIGluIExhbWJkYVRhcmdldENvbmZpZ3VyYXRpb24uYmluZCgpXG4gICAgLy8gQnVpbGQgdGFyZ2V0IHByb3BzLCBjb25kaXRpb25hbGx5IGluY2x1ZGluZyBjcmVkZW50aWFscyBpZiBhcnJheSBoYXMgaXRlbXNcbiAgICBjb25zdCB0YXJnZXRQcm9wczogYW55ID0ge1xuICAgICAgZ2F0ZXdheVRhcmdldE5hbWU6IHByb3BzLmdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgZ2F0ZXdheTogdGhpcyxcbiAgICAgIGxhbWJkYUZ1bmN0aW9uOiBwcm9wcy5sYW1iZGFGdW5jdGlvbixcbiAgICAgIHRvb2xTY2hlbWE6IHByb3BzLnRvb2xTY2hlbWEsXG4gICAgICAuLi4ocHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMgJiYgcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMubGVuZ3RoID4gMFxuICAgICAgICA/IHsgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zIH1cbiAgICAgICAgOiB7fSksXG4gICAgfTtcblxuICAgIGNvbnN0IHRhcmdldCA9IEdhdGV3YXlUYXJnZXQuZm9yTGFtYmRhKHRoaXMsIGlkLCB0YXJnZXRQcm9wcyk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBPcGVuQVBJIHRhcmdldCB0byB0aGlzIGdhdGV3YXlcbiAgICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGNyZWF0ZXMgYSBHYXRld2F5VGFyZ2V0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGdhdGV3YXlcbiAgICpcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWQgZm9yIHRoZSB0YXJnZXRcbiAgICogQHBhcmFtIHByb3BzIFByb3BlcnRpZXMgZm9yIHRoZSBPcGVuQVBJIHRhcmdldFxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBHYXRld2F5VGFyZ2V0XG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkT3BlbkFwaVRhcmdldChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBBZGRPcGVuQXBpVGFyZ2V0T3B0aW9ucyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gR2F0ZXdheVRhcmdldC5mb3JPcGVuQXBpKHRoaXMsIGlkLCB7XG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBnYXRld2F5OiB0aGlzLFxuICAgICAgYXBpU2NoZW1hOiBwcm9wcy5hcGlTY2hlbWEsXG4gICAgICB2YWxpZGF0ZU9wZW5BcGlTY2hlbWE6IHByb3BzLnZhbGlkYXRlT3BlbkFwaVNjaGVtYSxcbiAgICAgIGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyxcbiAgICB9KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgU21pdGh5IHRhcmdldCB0byB0aGlzIGdhdGV3YXlcbiAgICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGNyZWF0ZXMgYSBHYXRld2F5VGFyZ2V0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGdhdGV3YXlcbiAgICpcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWQgZm9yIHRoZSB0YXJnZXRcbiAgICogQHBhcmFtIHByb3BzIFByb3BlcnRpZXMgZm9yIHRoZSBTbWl0aHkgdGFyZ2V0XG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIEdhdGV3YXlUYXJnZXRcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRTbWl0aHlUYXJnZXQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQWRkU21pdGh5VGFyZ2V0T3B0aW9ucyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgLy8gQnVpbGQgdGFyZ2V0IHByb3BzLCBjb25kaXRpb25hbGx5IGluY2x1ZGluZyBjcmVkZW50aWFscyBpZiBhcnJheSBoYXMgaXRlbXNcbiAgICBjb25zdCB0YXJnZXRQcm9wczogYW55ID0ge1xuICAgICAgZ2F0ZXdheVRhcmdldE5hbWU6IHByb3BzLmdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgZ2F0ZXdheTogdGhpcyxcbiAgICAgIHNtaXRoeU1vZGVsOiBwcm9wcy5zbWl0aHlNb2RlbCxcbiAgICAgIC4uLihwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyAmJiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucy5sZW5ndGggPiAwXG4gICAgICAgID8geyBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMgfVxuICAgICAgICA6IHt9KSxcbiAgICB9O1xuXG4gICAgY29uc3QgdGFyZ2V0ID0gR2F0ZXdheVRhcmdldC5mb3JTbWl0aHkodGhpcywgaWQsIHRhcmdldFByb3BzKTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIE1DUCBzZXJ2ZXIgdGFyZ2V0IHRvIHRoaXMgZ2F0ZXdheVxuICAgKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIHRoYXQgY3JlYXRlcyBhIEdhdGV3YXlUYXJnZXQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZ2F0ZXdheVxuICAgKlxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZCBmb3IgdGhlIHRhcmdldFxuICAgKiBAcGFyYW0gcHJvcHMgUHJvcGVydGllcyBmb3IgdGhlIE1DUCBzZXJ2ZXIgdGFyZ2V0XG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIEdhdGV3YXlUYXJnZXRcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL2dhdGV3YXktdGFyZ2V0LU1DUHNlcnZlcnMuaHRtbFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZE1jcFNlcnZlclRhcmdldChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBBZGRNY3BTZXJ2ZXJUYXJnZXRPcHRpb25zLFxuICApOiBHYXRld2F5VGFyZ2V0IHtcbiAgICAvLyBCdWlsZCB0YXJnZXQgcHJvcHMsIGNvbmRpdGlvbmFsbHkgaW5jbHVkaW5nIGNyZWRlbnRpYWxzIGlmIGFycmF5IGhhcyBpdGVtc1xuICAgIGNvbnN0IHRhcmdldFByb3BzOiBhbnkgPSB7XG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBnYXRld2F5OiB0aGlzLFxuICAgICAgZW5kcG9pbnQ6IHByb3BzLmVuZHBvaW50LFxuICAgICAgLi4uKHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zICYmIHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zLmxlbmd0aCA+IDBcbiAgICAgICAgPyB7IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyB9XG4gICAgICAgIDoge30pLFxuICAgIH07XG5cbiAgICBjb25zdCB0YXJnZXQgPSBHYXRld2F5VGFyZ2V0LmZvck1jcFNlcnZlcih0aGlzLCBpZCwgdGFyZ2V0UHJvcHMpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBzZXJ2aWNlIHJvbGUgZm9yIHRoZSBnYXRld2F5IHRvIGFzc3VtZVxuICAgKlxuICAgKiBUaGUgc2VydmljZSByb2xlIHN0YXJ0cyB3aXRoIG1pbmltYWwgcGVybWlzc2lvbnMuIEFkZGl0aW9uYWwgcGVybWlzc2lvbnNcbiAgICogYXJlIGFkZGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0YXJnZXRzIGFyZSBjb25maWd1cmVkOlxuICAgKiAtIEtNUyBlbmNyeXB0aW9uOiBBdXRvbWF0aWNhbGx5IGdyYW50cyBlbmNyeXB0L2RlY3J5cHQgcGVybWlzc2lvbnNcbiAgICpcbiAgICogRm9yIG90aGVyIHRhcmdldCB0eXBlcywgbWFudWFsbHkgZ3JhbnQgcGVybWlzc2lvbnMgdXNpbmcgc3RhbmRhcmQgQ0RLIGdyYW50IG1ldGhvZHM6XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVHYXRld2F5Um9sZSgpOiBpYW0uUm9sZSB7XG4gICAgY29uc3Qgcm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnU2VydmljZVJvbGUnLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYmVkcm9jay1hZ2VudGNvcmUuYW1hem9uYXdzLmNvbScpLFxuICAgICAgZGVzY3JpcHRpb246IGBTZXJ2aWNlIHJvbGUgZm9yIEJlZHJvY2sgQWdlbnRDb3JlIEdhdGV3YXkgJHt0aGlzLm5hbWV9YCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlZ2lvbiA9IFN0YWNrLm9mKHRoaXMpLnJlZ2lvbjtcbiAgICBjb25zdCBhY2NvdW50ID0gU3RhY2sub2YodGhpcykuYWNjb3VudDtcbiAgICBjb25zdCBwYXJ0aXRpb24gPSBTdGFjay5vZih0aGlzKS5wYXJ0aXRpb247XG5cbiAgICAvLyBUaGlzIHJlc3RyaWN0cyByb2xlIGFzc3VtcHRpb24gdG8gdGhlIHNwZWNpZmljIGdhdGV3YXkgcmVzb3VyY2Ugb25seSBpbiB0aGlzIGFjY291bnQsXG4gICAgLy8gcHJldmVudGluZyBvdGhlciBhY2NvdW50cyBmcm9tIGFzc3VtaW5nIHRoaXMgcm9sZS5cbiAgICAvLyBTZWU6aHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9nYXRld2F5LXByZXJlcXVpc2l0ZXMtcGVybWlzc2lvbnMuaHRtbCNnYXRld2F5LXNlcnZpY2Utcm9sZS1wZXJtaXNzaW9uc1xuICAgIHJvbGUuYXNzdW1lUm9sZVBvbGljeT8uYWRkU3RhdGVtZW50cyhcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdiZWRyb2NrLWFnZW50Y29yZS5hbWF6b25hd3MuY29tJyldLFxuICAgICAgICBhY3Rpb25zOiBHQVRFV0FZX0FTU1VNRV9ST0xFLFxuICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgICAnYXdzOlNvdXJjZUFjY291bnQnOiBhY2NvdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgQXJuTGlrZToge1xuICAgICAgICAgICAgJ2F3czpTb3VyY2VBcm4nOiBgYXJuOiR7cGFydGl0aW9ufTpiZWRyb2NrLWFnZW50Y29yZToke3JlZ2lvbn06JHthY2NvdW50fTpnYXRld2F5LyR7dGhpcy5uYW1lfSpgLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMua21zS2V5KSB7XG4gICAgICByb2xlLmFkZFRvUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBHQVRFV0FZX0tNU19LRVlfUEVSTVMsXG4gICAgICAgIHJlc291cmNlczogW3RoaXMua21zS2V5LmtleUFybl0sXG4gICAgICB9KSk7XG4gICAgfVxuICAgIHJldHVybiByb2xlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgZ2F0ZXdheSBuYW1lIGZvcm1hdFxuICAgKiBQYXR0ZXJuOiBeKFswLTlhLXpBLVpdWy1dPyl7MSw0OH0kXG4gICAqIE1heCBsZW5ndGg6IDQ4IGNoYXJhY3RlcnNcbiAgICogQHBhcmFtIG5hbWUgVGhlIGdhdGV3YXkgbmFtZSB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBuYW1lIGlzIGludmFsaWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlR2F0ZXdheU5hbWUobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChuYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aEVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgdmFsdWU6IG5hbWUsXG4gICAgICBtaW5MZW5ndGg6IDEsXG4gICAgICBtYXhMZW5ndGg6IDQ4LFxuICAgICAgZmllbGROYW1lOiAnR2F0ZXdheSBuYW1lJyxcbiAgICB9KTtcblxuICAgIGlmIChsZW5ndGhFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihsZW5ndGhFcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cblxuICAgIGNvbnN0IHBhdHRlcm5FcnJvcnMgPSB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgIG5hbWUsXG4gICAgICAnR2F0ZXdheSBuYW1lJyxcbiAgICAgIC9eKFswLTlhLXpBLVpdWy1dPyl7MSw0OH0kLyxcbiAgICAgICdHYXRld2F5IG5hbWUgbXVzdCBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIGh5cGhlbnMsIHdpdGggaHlwaGVucyBvbmx5IGJldHdlZW4gY2hhcmFjdGVycycsXG4gICAgKTtcblxuICAgIGlmIChwYXR0ZXJuRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IocGF0dGVybkVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgZGVzY3JpcHRpb24gZm9ybWF0XG4gICAqIE1heCBsZW5ndGg6IDIwMCBjaGFyYWN0ZXJzXG4gICAqIEBwYXJhbSBkZXNjcmlwdGlvbiBUaGUgZGVzY3JpcHRpb24gdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKGRlc2NyaXB0aW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgdmFsdWU6IGRlc2NyaXB0aW9uLFxuICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgbWF4TGVuZ3RoOiAyMDAsXG4gICAgICBmaWVsZE5hbWU6ICdEZXNjcmlwdGlvbicsXG4gICAgfSk7XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoZXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGRlZmF1bHQgQ29nbml0byBhdXRob3JpemVyIGZvciB0aGUgZ2F0ZXdheVxuICAgKiBQcm92aXNpb25zIGEgQ29nbml0byBVc2VyIFBvb2wgYW5kIGNvbmZpZ3VyZXMgTTJNIChtYWNoaW5lLXRvLW1hY2hpbmUpIEpXVCBhdXRoZW50aWNhdGlvblxuICAgKiB1c2luZyBPQXV0aCAyLjAgY2xpZW50IGNyZWRlbnRpYWxzIGdyYW50IGZsb3dcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL2lkZW50aXR5LWlkcC1jb2duaXRvLmh0bWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZURlZmF1bHRDb2duaXRvQXV0aG9yaXplckNvbmZpZygpOiB7XG4gICAgYXV0aG9yaXplckNvbmZpZzogSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnO1xuICAgIHRva2VuRW5kcG9pbnRVcmw6IHN0cmluZztcbiAgICBvYXV0aFNjb3Blczogc3RyaW5nW107XG4gIH0ge1xuICAgIGNvbnN0IHVzZXJQb29sID0gbmV3IGNvZ25pdG8uVXNlclBvb2wodGhpcywgJ1VzZXJQb29sJywge1xuICAgICAgc2lnbkluQ2FzZVNlbnNpdGl2ZTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNvdXJjZVNlcnZlciA9IHVzZXJQb29sLmFkZFJlc291cmNlU2VydmVyKCdSZXNvdXJjZVNlcnZlcicsIHtcbiAgICAgIGlkZW50aWZpZXI6IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogMjU2LCBzZXBhcmF0b3I6ICctJyB9KSxcbiAgICAgIHNjb3BlczogW1xuICAgICAgICB7XG4gICAgICAgICAgc2NvcGVOYW1lOiAncmVhZCcsXG4gICAgICAgICAgc2NvcGVEZXNjcmlwdGlvbjogJ1JlYWQgYWNjZXNzIHRvIGdhdGV3YXkgdG9vbHMnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgc2NvcGVOYW1lOiAnd3JpdGUnLFxuICAgICAgICAgIHNjb3BlRGVzY3JpcHRpb246ICdXcml0ZSBhY2Nlc3MgdG8gZ2F0ZXdheSB0b29scycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgb2F1dGhTY29wZXMgPSBbXG4gICAgICBjb2duaXRvLk9BdXRoU2NvcGUucmVzb3VyY2VTZXJ2ZXIocmVzb3VyY2VTZXJ2ZXIsIHtcbiAgICAgICAgc2NvcGVOYW1lOiAncmVhZCcsXG4gICAgICAgIHNjb3BlRGVzY3JpcHRpb246ICdSZWFkIGFjY2VzcyB0byBnYXRld2F5IHRvb2xzJyxcbiAgICAgIH0pLFxuICAgICAgY29nbml0by5PQXV0aFNjb3BlLnJlc291cmNlU2VydmVyKHJlc291cmNlU2VydmVyLCB7XG4gICAgICAgIHNjb3BlTmFtZTogJ3dyaXRlJyxcbiAgICAgICAgc2NvcGVEZXNjcmlwdGlvbjogJ1dyaXRlIGFjY2VzcyB0byBnYXRld2F5IHRvb2xzJyxcbiAgICAgIH0pLFxuICAgIF07XG5cbiAgICBjb25zdCB1c2VyUG9vbENsaWVudCA9IHVzZXJQb29sLmFkZENsaWVudCgnRGVmYXVsdENsaWVudCcsIHtcbiAgICAgIGdlbmVyYXRlU2VjcmV0OiB0cnVlLFxuICAgICAgb0F1dGg6IHtcbiAgICAgICAgZmxvd3M6IHtcbiAgICAgICAgICBjbGllbnRDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NvcGVzOiBvYXV0aFNjb3BlcyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgQ29nbml0byBEb21haW4gZm9yIE9BdXRoMiB0b2tlbiBlbmRwb2ludFxuICAgIC8vIFVzZSB1bmlxdWVSZXNvdXJjZU5hbWUgdG8gZ2VuZXJhdGUgYSB1bmlxdWUgZG9tYWluIHByZWZpeCB0b0xvd2VyQ2FzZSgpIGlzIHJlcXVpcmVkIGJlY2F1c2UgdGhlIGhhc2ggcG9ydGlvbiBpcyB1cHBlcmNhc2VcbiAgICBjb25zdCBkb21haW5QcmVmaXggPSBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgbWF4TGVuZ3RoOiA2MywgLy8gQ29nbml0byBkb21haW4gcHJlZml4IG1heCBsZW5ndGhcbiAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgIH0pLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBjb25zdCB1c2VyUG9vbERvbWFpbiA9IHVzZXJQb29sLmFkZERvbWFpbignRG9tYWluJywge1xuICAgICAgY29nbml0b0RvbWFpbjoge1xuICAgICAgICBkb21haW5QcmVmaXg6IGRvbWFpblByZWZpeCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnVzZXJQb29sID0gdXNlclBvb2w7XG4gICAgdGhpcy51c2VyUG9vbENsaWVudCA9IHVzZXJQb29sQ2xpZW50O1xuICAgIHRoaXMudXNlclBvb2xEb21haW4gPSB1c2VyUG9vbERvbWFpbjtcbiAgICB0aGlzLnJlc291cmNlU2VydmVyID0gcmVzb3VyY2VTZXJ2ZXI7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXV0aG9yaXplckNvbmZpZzogR2F0ZXdheUF1dGhvcml6ZXIudXNpbmdDb2duaXRvKHtcbiAgICAgICAgdXNlclBvb2w6IHVzZXJQb29sLFxuICAgICAgICBhbGxvd2VkQ2xpZW50czogW3VzZXJQb29sQ2xpZW50XSxcbiAgICAgIH0pLFxuICAgICAgdG9rZW5FbmRwb2ludFVybDogYGh0dHBzOi8vJHt1c2VyUG9vbERvbWFpbi5kb21haW5OYW1lfS5hdXRoLiR7U3RhY2sub2YodGhpcykucmVnaW9ufS5hbWF6b25jb2duaXRvLmNvbS9vYXV0aDIvdG9rZW5gLFxuICAgICAgb2F1dGhTY29wZXM6IG9hdXRoU2NvcGVzLm1hcChzY29wZSA9PiBzY29wZS5zY29wZU5hbWUpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGRlZmF1bHQgTUNQIHByb3RvY29sIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnYXRld2F5XG4gICAqIFByb3ZpZGVzIHNlbnNpYmxlIGRlZmF1bHRzIGZvciBNQ1AgcHJvdG9jb2wgc2V0dGluZ3NcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZURlZmF1bHRNY3BQcm90b2NvbENvbmZpZ3VyYXRpb24oKTogSUdhdGV3YXlQcm90b2NvbENvbmZpZyB7XG4gICAgcmV0dXJuIG5ldyBNY3BQcm90b2NvbENvbmZpZ3VyYXRpb24oe1xuICAgICAgc3VwcG9ydGVkVmVyc2lvbnM6IFtNQ1BQcm90b2NvbFZlcnNpb24uTUNQXzIwMjVfMDNfMjZdLFxuICAgICAgc2VhcmNoVHlwZTogTWNwR2F0ZXdheVNlYXJjaFR5cGUuU0VNQU5USUMsXG4gICAgICBpbnN0cnVjdGlvbnM6ICdEZWZhdWx0IGdhdGV3YXkgdG8gY29ubmVjdCB0byBleHRlcm5hbCBNQ1AgdG9vbHMnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBpbnRlcmNlcHRvciB0byB0aGlzIGdhdGV3YXlcbiAgICpcbiAgICogSW50ZXJjZXB0b3JzIGFsbG93IHlvdSB0byBydW4gY3VzdG9tIGNvZGUgYXQgc3BlY2lmaWMgcG9pbnRzIGluIHRoZSBnYXRld2F5IHJlcXVlc3QvcmVzcG9uc2UgZmxvdzpcbiAgICogLSBSRVFVRVNUIGludGVyY2VwdG9ycyBleGVjdXRlIGJlZm9yZSB0aGUgZ2F0ZXdheSBjYWxscyB0aGUgdGFyZ2V0XG4gICAqIC0gUkVTUE9OU0UgaW50ZXJjZXB0b3JzIGV4ZWN1dGUgYWZ0ZXIgdGhlIHRhcmdldCByZXNwb25kc1xuICAgKlxuICAgKiBBIGdhdGV3YXkgY2FuIGhhdmUgYXQgbW9zdCBvbmUgUkVRVUVTVCBpbnRlcmNlcHRvciBhbmQgb25lIFJFU1BPTlNFIGludGVyY2VwdG9yLlxuICAgKiBAcGFyYW0gaW50ZXJjZXB0b3IgVGhlIGludGVyY2VwdG9yIHRvIGFkZCAodXNlIExhbWJkYUludGVyY2VwdG9yIGZhY3RvcnkgbWV0aG9kcylcbiAgICogQHRocm93cyBFcnJvciBpZiBhbiBpbnRlcmNlcHRvciBvZiB0aGUgc2FtZSB0eXBlIGFscmVhZHkgZXhpc3RzXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkSW50ZXJjZXB0b3IoaW50ZXJjZXB0b3I6IElJbnRlcmNlcHRvcik6IHZvaWQge1xuICAgIGNvbnN0IGludGVyY2VwdGlvblBvaW50ID0gaW50ZXJjZXB0b3IuaW50ZXJjZXB0aW9uUG9pbnQ7XG5cbiAgICBpZiAoaW50ZXJjZXB0aW9uUG9pbnQgPT09IEludGVyY2VwdGlvblBvaW50LlJFUVVFU1QpIHtcbiAgICAgIGlmICh0aGlzLnJlcXVlc3RJbnRlcmNlcHRvckNvbmZpZykge1xuICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICdHYXRld2F5IGFscmVhZHkgaGFzIGEgUkVRVUVTVCBpbnRlcmNlcHRvciBjb25maWd1cmVkLiBBIGdhdGV3YXkgY2FuIGhhdmUgYXQgbW9zdCBvbmUgUkVRVUVTVCBpbnRlcmNlcHRvci4nLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5yZXF1ZXN0SW50ZXJjZXB0b3JDb25maWcgPSBpbnRlcmNlcHRvci5iaW5kKHRoaXMsIHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaW50ZXJjZXB0aW9uUG9pbnQgPT09IEludGVyY2VwdGlvblBvaW50LlJFU1BPTlNFKSB7XG4gICAgICBpZiAodGhpcy5yZXNwb25zZUludGVyY2VwdG9yQ29uZmlnKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgJ0dhdGV3YXkgYWxyZWFkeSBoYXMgYSBSRVNQT05TRSBpbnRlcmNlcHRvciBjb25maWd1cmVkLiBBIGdhdGV3YXkgY2FuIGhhdmUgYXQgbW9zdCBvbmUgUkVTUE9OU0UgaW50ZXJjZXB0b3IuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVzcG9uc2VJbnRlcmNlcHRvckNvbmZpZyA9IGludGVyY2VwdG9yLmJpbmQodGhpcywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgaW5pdGlhbGl6ZXMgaW50ZXJjZXB0b3JzIGZyb20gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb25zXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFuZEluaXRpYWxpemVJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3JzOiBJSW50ZXJjZXB0b3JbXSk6IHZvaWQge1xuICAgIGNvbnN0IHJlcXVlc3RDb3VudCA9IGludGVyY2VwdG9ycy5maWx0ZXIoaSA9PiBpLmludGVyY2VwdGlvblBvaW50ID09PSBJbnRlcmNlcHRpb25Qb2ludC5SRVFVRVNUKS5sZW5ndGg7XG4gICAgY29uc3QgcmVzcG9uc2VDb3VudCA9IGludGVyY2VwdG9ycy5maWx0ZXIoaSA9PiBpLmludGVyY2VwdGlvblBvaW50ID09PSBJbnRlcmNlcHRpb25Qb2ludC5SRVNQT05TRSkubGVuZ3RoO1xuXG4gICAgaWYgKHJlcXVlc3RDb3VudCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGBHYXRld2F5IGNhbiBoYXZlIGF0IG1vc3Qgb25lIFJFUVVFU1QgaW50ZXJjZXB0b3IuIEZvdW5kICR7cmVxdWVzdENvdW50fSBSRVFVRVNUIGludGVyY2VwdG9ycy5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2VDb3VudCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGBHYXRld2F5IGNhbiBoYXZlIGF0IG1vc3Qgb25lIFJFU1BPTlNFIGludGVyY2VwdG9yLiBGb3VuZCAke3Jlc3BvbnNlQ291bnR9IFJFU1BPTlNFIGludGVyY2VwdG9ycy5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGludGVyY2VwdG9yIG9mIGludGVyY2VwdG9ycykge1xuICAgICAgdGhpcy5hZGRJbnRlcmNlcHRvcihpbnRlcmNlcHRvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGludGVyY2VwdG9yIGNvbmZpZ3VyYXRpb25zIGZvciBDbG91ZEZvcm1hdGlvblxuICAgKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBubyBpbnRlcmNlcHRvcnMgYXJlIGNvbmZpZ3VyZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHJlbmRlckludGVyY2VwdG9yQ29uZmlndXJhdGlvbnMoKTogYW55W10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvbmZpZ3M6IGFueVtdID0gW107XG5cbiAgICBpZiAodGhpcy5yZXF1ZXN0SW50ZXJjZXB0b3JDb25maWcpIHtcbiAgICAgIGNvbmZpZ3MucHVzaCh0aGlzLnJlcXVlc3RJbnRlcmNlcHRvckNvbmZpZy5jb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNwb25zZUludGVyY2VwdG9yQ29uZmlnKSB7XG4gICAgICBjb25maWdzLnB1c2godGhpcy5yZXNwb25zZUludGVyY2VwdG9yQ29uZmlnLmNvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBjb25maWdzLmxlbmd0aCA+IDAgPyBjb25maWdzIDogdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
689
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImdhdGV3YXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQXdEO0FBQ3hELHFFQUFxRTtBQUNyRSxtREFBbUQ7QUFDbkQsMkNBQTJDO0FBRzNDLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFJMUUsaURBQTZDO0FBRTdDLDBEQUE4RDtBQUU5RCwrQ0FBa0Q7QUFFbEQsbUNBQXFFO0FBRXJFLHlDQUFnRztBQUdoRyw2Q0FBaUQ7QUFDakQsNkRBQWtHO0FBbVBsRzs7K0VBRStFO0FBQy9FOzs7Ozs7R0FNRztJQUVVLE9BQU87NEJBRG5CLG9DQUFrQjs7OztzQkFDVSwwQkFBVzs7Ozs7Ozt1QkFBbkIsU0FBUSxXQUFXOzs7OzJDQWtRckMsSUFBQSxrQ0FBYyxHQUFFOzRDQStCaEIsSUFBQSxrQ0FBYyxHQUFFOzJDQXlCaEIsSUFBQSxrQ0FBYyxHQUFFOzhDQThCaEIsSUFBQSxrQ0FBYyxHQUFFOzBDQXlPaEIsSUFBQSxrQ0FBYyxHQUFFO1lBOVRqQixnTUFBTyxlQUFlLDZEQW9CckI7WUFXRCxtTUFBTyxnQkFBZ0IsNkRBY3RCO1lBV0QsZ01BQU8sZUFBZSw2REFrQnJCO1lBWUQseU1BQU8sa0JBQWtCLDZEQWtCeEI7WUF1TkQsNkxBQU8sY0FBYyw2REFrQnBCO1lBcGxCSCw2S0Fpb0JDOzs7OztRQWhvQkMsc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyw4Q0FBOEMsQ0FBQztRQUN0Rzs7Ozs7OztXQU9HO1FBQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUNqQyxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBd0I7Ozs7Ozs7Ozs7WUFFeEIsTUFBTSxlQUFnQixTQUFRLDBCQUFXO2dCQUN2QixVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDOUIsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENB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LENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM1RCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztnQkFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDN0QsQ0FBQztZQUVELE9BQU8sT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ2pEOztZQWhvQlUsdURBQU87Ozs7O0FBQVAsMEJBQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjaywgVG9rZW4sIExhenksIE5hbWVzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgYmVkcm9ja2FnZW50Y29yZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZSc7XG5pbXBvcnQgKiBhcyBjb2duaXRvIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2duaXRvJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB0eXBlICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHR5cGUgeyBJRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuLy8gSW50ZXJuYWwgaW1wb3J0c1xuaW1wb3J0IHR5cGUgeyBHYXRld2F5RXhjZXB0aW9uTGV2ZWwsIElHYXRld2F5IH0gZnJvbSAnLi9nYXRld2F5LWJhc2UnO1xuaW1wb3J0IHsgR2F0ZXdheUJhc2UgfSBmcm9tICcuL2dhdGV3YXktYmFzZSc7XG5pbXBvcnQgdHlwZSB7IElHYXRld2F5QXV0aG9yaXplckNvbmZpZyB9IGZyb20gJy4vaW5ib3VuZC1hdXRoL2F1dGhvcml6ZXInO1xuaW1wb3J0IHsgR2F0ZXdheUF1dGhvcml6ZXIgfSBmcm9tICcuL2luYm91bmQtYXV0aC9hdXRob3JpemVyJztcbmltcG9ydCB0eXBlIHsgSUludGVyY2VwdG9yLCBJbnRlcmNlcHRvckJpbmRDb25maWcgfSBmcm9tICcuL2ludGVyY2VwdG9yJztcbmltcG9ydCB7IEludGVyY2VwdGlvblBvaW50IH0gZnJvbSAnLi9pbnRlcmNlcHRvcic7XG5pbXBvcnQgdHlwZSB7IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWcgfSBmcm9tICcuL291dGJvdW5kLWF1dGgvY3JlZGVudGlhbC1wcm92aWRlcic7XG5pbXBvcnQgeyBHQVRFV0FZX0FTU1VNRV9ST0xFLCBHQVRFV0FZX0tNU19LRVlfUEVSTVMgfSBmcm9tICcuL3Blcm1zJztcbmltcG9ydCB0eXBlIHsgSUdhdGV3YXlQcm90b2NvbENvbmZpZyB9IGZyb20gJy4vcHJvdG9jb2wnO1xuaW1wb3J0IHsgTWNwR2F0ZXdheVNlYXJjaFR5cGUsIE1jcFByb3RvY29sQ29uZmlndXJhdGlvbiwgTUNQUHJvdG9jb2xWZXJzaW9uIH0gZnJvbSAnLi9wcm90b2NvbCc7XG5pbXBvcnQgdHlwZSB7IEFwaVNjaGVtYSB9IGZyb20gJy4vdGFyZ2V0cy9zY2hlbWEvYXBpLXNjaGVtYSc7XG5pbXBvcnQgdHlwZSB7IFRvb2xTY2hlbWEgfSBmcm9tICcuL3RhcmdldHMvc2NoZW1hL3Rvb2wtc2NoZW1hJztcbmltcG9ydCB7IEdhdGV3YXlUYXJnZXQgfSBmcm9tICcuL3RhcmdldHMvdGFyZ2V0JztcbmltcG9ydCB7IHZhbGlkYXRlU3RyaW5nRmllbGQsIHZhbGlkYXRlRmllbGRQYXR0ZXJuLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuL3ZhbGlkYXRpb24taGVscGVycyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9wc1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGFkZGluZyBhIExhbWJkYSB0YXJnZXQgdG8gYSBnYXRld2F5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkTGFtYmRhVGFyZ2V0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogVmFsaWQgY2hhcmFjdGVycyBhcmUgYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSkgYW5kIC0gKGh5cGhlbilcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VGFyZ2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIExhbWJkYSBmdW5jdGlvbiB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIHRhcmdldFxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb246IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIHRvb2wgc2NoZW1hIGRlZmluaW5nIHRoZSBhdmFpbGFibGUgdG9vbHNcbiAgICovXG4gIHJlYWRvbmx5IHRvb2xTY2hlbWE6IFRvb2xTY2hlbWE7XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKiBAZGVmYXVsdCAtIFtHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLmlhbVJvbGUoKV1cbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPzogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGFkZGluZyBhbiBPcGVuQVBJIHRhcmdldCB0byBhIGdhdGV3YXlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRPcGVuQXBpVGFyZ2V0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogVmFsaWQgY2hhcmFjdGVycyBhcmUgYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSkgYW5kIC0gKGh5cGhlbilcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VGFyZ2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE9wZW5BUEkgc2NoZW1hIGRlZmluaW5nIHRoZSBBUElcbiAgICovXG4gIHJlYWRvbmx5IGFwaVNjaGVtYTogQXBpU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHZhbGlkYXRlIHRoZSBPcGVuQVBJIHNjaGVtYSBvciBub3RcbiAgICogTm90ZTogVmFsaWRhdGlvbiBpcyBvbmx5IHBlcmZvcm1lZCBmb3IgaW5saW5lIGFuZCBhc3NldC1iYXNlZCBzY2hlbWEgYW5kICBkdXJpbmcgQ0RLIHN5bnRoZXNpcy5cbiAgICogUzMgc2NoZW1hcyBjYW5ub3QgYmUgdmFsaWRhdGVkIGF0IHN5bnRoZXNpcyB0aW1lLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0ZU9wZW5BcGlTY2hlbWE/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogQGRlZmF1bHQgLSBbR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlci5pYW1Sb2xlKCldXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhZGRpbmcgYSBTbWl0aHkgdGFyZ2V0IHRvIGEgZ2F0ZXdheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZFNtaXRoeVRhcmdldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpIGFuZCAtIChoeXBoZW4pXG4gICAqIEBkZWZhdWx0IC0gYXV0byBnZW5lcmF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheVRhcmdldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBTbWl0aHkgbW9kZWwgZGVmaW5pbmcgdGhlIEFQSVxuICAgKi9cbiAgcmVhZG9ubHkgc21pdGh5TW9kZWw6IEFwaVNjaGVtYTtcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBkZWZhdWx0IC0gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuaWFtUm9sZSgpXVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM/OiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYWRkaW5nIGFuIE1DUCBTZXJ2ZXIgdGFyZ2V0IHRvIGEgZ2F0ZXdheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZE1jcFNlcnZlclRhcmdldE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpIGFuZCAtIChoeXBoZW4pXG4gICAqIEBkZWZhdWx0IC0gYXV0byBnZW5lcmF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheVRhcmdldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBIVFRQUyBlbmRwb2ludCBVUkwgb2YgdGhlIE1DUCBzZXJ2ZXJcbiAgICpcbiAgICogVGhlIGVuZHBvaW50IG11c3Q6XG4gICAqIC0gVXNlIEhUVFBTIHByb3RvY29sXG4gICAqIC0gQmUgcHJvcGVybHkgVVJMLWVuY29kZWRcbiAgICogLSBQb2ludCB0byBhbiBNQ1Agc2VydmVyIHRoYXQgaW1wbGVtZW50cyB0b29sIGNhcGFiaWxpdGllc1xuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqXG4gICAqIE1DUCBzZXJ2ZXJzIHJlcXVpcmUgZXhwbGljaXQgYXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbi5cbiAgICogT0F1dGgyIGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIG92ZXIgTm9BdXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhIEdhdGV3YXlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXlcbiAgICogVmFsaWQgY2hhcmFjdGVycyBhcmUgYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSkgYW5kIC0gKGh5cGhlbilcbiAgICogVGhlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHlvdXIgYWNjb3VudFxuICAgKiBAZGVmYXVsdCAtIGF1dG8gZ2VuZXJhdGVcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGdhdGV3YXlcbiAgICogVmFsaWQgY2hhcmFjdGVycyBhcmUgYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSksIC0gKGh5cGhlbikgYW5kIHNwYWNlc1xuICAgKiBUaGUgZGVzY3JpcHRpb24gY2FuIGhhdmUgdXAgdG8gMjAwIGNoYXJhY3RlcnNcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm90b2NvbCBjb25maWd1cmF0aW9uIGZvciB0aGUgZ2F0ZXdheVxuICAgKiBAZGVmYXVsdCAtIEEgZGVmYXVsdCBwcm90b2NvbCBjb25maWd1cmF0aW9uIHdpbGwgYmUgY3JlYXRlZCB1c2luZyBNQ1Agd2l0aCBmb2xsb3dpbmcgcGFyYW1zXG4gICAqICBzdXBwb3J0ZWRWZXJzaW9uczogW01DUFByb3RvY29sVmVyc2lvbi5NQ1BfMjAyNV8wM18yNl0sXG4gICAqICBzZWFyY2hUeXBlOiBNY3BHYXRld2F5U2VhcmNoVHlwZS5TRU1BTlRJQyxcbiAgICogIGluc3RydWN0aW9uczogXCJEZWZhdWx0IGdhdGV3YXkgdG8gY29ubmVjdCB0byBleHRlcm5hbCBNQ1AgdG9vbHNcIixcbiAgICovXG4gIHJlYWRvbmx5IHByb3RvY29sQ29uZmlndXJhdGlvbj86IElHYXRld2F5UHJvdG9jb2xDb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBhdXRob3JpemVyIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnYXRld2F5XG4gICAqIEBkZWZhdWx0IC0gQSBkZWZhdWx0IGF1dGhvcml6ZXIgd2lsbCBiZSBjcmVhdGVkIHVzaW5nIENvZ25pdG9cbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvcml6ZXJDb25maWd1cmF0aW9uPzogSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyYm9zaXR5IG9mIGV4Y2VwdGlvbiBtZXNzYWdlc1xuICAgKiBVc2UgREVCVUcgbW9kZSB0byBzZWUgZ3JhbnVsYXIgZXhjZXB0aW9uIG1lc3NhZ2VzIGZyb20gYSBHYXRld2F5XG4gICAqIEBkZWZhdWx0IC0gRXhjZXB0aW9uIG1lc3NhZ2VzIGFyZSBzYW5pdGl6ZWQgZm9yIHByZXNlbnRhdGlvbiB0byBlbmQgdXNlcnNcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2VwdGlvbkxldmVsPzogR2F0ZXdheUV4Y2VwdGlvbkxldmVsO1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIEtNUyBrZXkgdXNlZCB0byBlbmNyeXB0IGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBnYXRld2F5XG4gICAqIEBkZWZhdWx0IC0gTm8gZW5jcnlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSB0aGF0IHByb3ZpZGVzIHBlcm1pc3Npb25zIGZvciB0aGUgZ2F0ZXdheSB0byBhY2Nlc3MgQVdTIHNlcnZpY2VzXG4gICAqIEBkZWZhdWx0IC0gQSBuZXcgcm9sZSB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRhZ3MgZm9yIHRoZSBnYXRld2F5XG4gICAqIEEgbGlzdCBvZiBrZXk6dmFsdWUgcGFpcnMgb2YgdGFncyB0byBhcHBseSB0byB0aGlzIEdhdGV3YXkgcmVzb3VyY2VcbiAgICogQGRlZmF1bHQgLSBObyB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogSW50ZXJjZXB0b3IgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBnYXRld2F5XG4gICAqXG4gICAqIEludGVyY2VwdG9ycyBhbGxvdyB5b3UgdG8gcnVuIGN1c3RvbSBjb2RlIGR1cmluZyBlYWNoIGdhdGV3YXkgaW52b2NhdGlvbjpcbiAgICogLSBSRVFVRVNUIGludGVyY2VwdG9ycyBleGVjdXRlIGJlZm9yZSB0aGUgZ2F0ZXdheSBjYWxscyB0aGUgdGFyZ2V0XG4gICAqIC0gUkVTUE9OU0UgaW50ZXJjZXB0b3JzIGV4ZWN1dGUgYWZ0ZXIgdGhlIHRhcmdldCByZXNwb25kc1xuICAgKlxuICAgKiBBIGdhdGV3YXkgY2FuIGhhdmUgYXQgbW9zdCBvbmUgUkVRVUVTVCBpbnRlcmNlcHRvciBhbmQgb25lIFJFU1BPTlNFIGludGVyY2VwdG9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGludGVyY2VwdG9yc1xuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvZ2F0ZXdheS1pbnRlcmNlcHRvcnMuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJjZXB0b3JDb25maWd1cmF0aW9ucz86IElJbnRlcmNlcHRvcltdO1xufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgZm9yIGltcG9ydGluZyBhbiBleGlzdGluZyBHYXRld2F5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheUF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIHRoYXQgcHJvdmlkZXMgcGVybWlzc2lvbnMgZm9yIHRoZSBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBHYXRld2F5IHJlc291cmNlIGZvciBBV1MgQmVkcm9jayBBZ2VudCBDb3JlLlxuICogU2VydmVzIGFzIGFuIGludGVncmF0aW9uIHBvaW50IGJldHdlZW4geW91ciBhZ2VudCBhbmQgZXh0ZXJuYWwgc2VydmljZXMuXG4gKlxuICogQHJlc291cmNlIEFXUzo6QmVkcm9ja0FnZW50Q29yZTo6R2F0ZXdheVxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUtY29udHJvbC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVHYXRld2F5Lmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEdhdGV3YXkgZXh0ZW5kcyBHYXRld2F5QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWJlZHJvY2stYWdlbnRjb3JlLWFscGhhLkdhdGV3YXknO1xuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIEdhdGV3YXkgdXNpbmcgaXRzIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBleGlzdGluZyBHYXRld2F5XG4gICAqIEByZXR1cm5zIEFuIElHYXRld2F5IGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUgaW1wb3J0ZWQgZ2F0ZXdheVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tR2F0ZXdheUF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBHYXRld2F5QXR0cmlidXRlcyxcbiAgKTogSUdhdGV3YXkge1xuICAgIGNsYXNzIEltcG9ydGVkR2F0ZXdheSBleHRlbmRzIEdhdGV3YXlCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBnYXRld2F5QXJuID0gYXR0cnMuZ2F0ZXdheUFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBnYXRld2F5SWQgPSBhdHRycy5nYXRld2F5SWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZSA9IGF0dHJzLmdhdGV3YXlOYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHByb3RvY29sQ29uZmlndXJhdGlvbjogSUdhdGV3YXlQcm90b2NvbENvbmZpZztcbiAgICAgIHB1YmxpYyByZWFkb25seSBhdXRob3JpemVyQ29uZmlndXJhdGlvbjogSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGV4Y2VwdGlvbkxldmVsID0gdW5kZWZpbmVkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGttc0tleSA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSByb2xlID0gYXR0cnMucm9sZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBnYXRld2F5VXJsID0gdW5kZWZpbmVkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzdGF0dXNSZWFzb24gPSB1bmRlZmluZWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlZEF0ID0gdW5kZWZpbmVkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHVwZGF0ZWRBdCA9IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3RydWN0b3IoczogQ29uc3RydWN0LCBpOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocywgaSk7XG4gICAgICAgIC8vIENyZWF0ZSBwbGFjZWhvbGRlciBwcm90b2NvbCBhbmQgYXV0aG9yaXplciBjb25maWd1cmF0aW9uc1xuICAgICAgICB0aGlzLnByb3RvY29sQ29uZmlndXJhdGlvbiA9IG5ldyBNY3BQcm90b2NvbENvbmZpZ3VyYXRpb24oe1xuICAgICAgICAgIHN1cHBvcnRlZFZlcnNpb25zOiBbTUNQUHJvdG9jb2xWZXJzaW9uLk1DUF8yMDI1XzAzXzI2XSxcbiAgICAgICAgICBzZWFyY2hUeXBlOiBNY3BHYXRld2F5U2VhcmNoVHlwZS5TRU1BTlRJQyxcbiAgICAgICAgICBpbnN0cnVjdGlvbnM6ICdJbXBvcnRlZCBnYXRld2F5JyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXV0aG9yaXplckNvbmZpZ3VyYXRpb24gPSBHYXRld2F5QXV0aG9yaXplci51c2luZ0F3c0lhbSgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydGVkR2F0ZXdheShzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhdGV3YXlcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdhdGV3YXlBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBnYXRld2F5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnYXRld2F5SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXlcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvdG9jb2wgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdhdGV3YXlcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcm90b2NvbENvbmZpZ3VyYXRpb246IElHYXRld2F5UHJvdG9jb2xDb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBhdXRob3JpemVyIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnYXRld2F5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXV0aG9yaXplckNvbmZpZ3VyYXRpb246IElHYXRld2F5QXV0aG9yaXplckNvbmZpZztcblxuICAvKipcbiAgICogVGhlIGV4Y2VwdGlvbiBsZXZlbCBmb3IgdGhlIGdhdGV3YXlcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBleGNlcHRpb25MZXZlbD86IEdhdGV3YXlFeGNlcHRpb25MZXZlbDtcblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdXNlZCBmb3IgZW5jcnlwdGlvblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgZm9yIHRoZSBnYXRld2F5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgVVJMIGVuZHBvaW50IGZvciB0aGUgZ2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheVVybD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgZ2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIHJlYXNvbnMgZm9yIHRoZSBnYXRld2F5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGF0dXNSZWFzb24/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGltZXN0YW1wIHdoZW4gdGhlIGdhdGV3YXkgd2FzIGNyZWF0ZWRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcblxuICAvKipcbiAgICogVGltZXN0YW1wIHdoZW4gdGhlIGdhdGV3YXkgd2FzIGxhc3QgdXBkYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRlZEF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWdzIGFwcGxpZWQgdG8gdGhlIGdhdGV3YXlcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIENvZ25pdG8gVXNlciBQb29sIGNyZWF0ZWQgZm9yIHRoZSBnYXRld2F5IChpZiB1c2luZyBkZWZhdWx0IENvZ25pdG8gYXV0aG9yaXplcilcbiAgICovXG4gIHB1YmxpYyB1c2VyUG9vbD86IGNvZ25pdG8uSVVzZXJQb29sO1xuXG4gIC8qKlxuICAgKiBUaGUgQ29nbml0byBVc2VyIFBvb2wgQ2xpZW50IGNyZWF0ZWQgZm9yIHRoZSBnYXRld2F5IChpZiB1c2luZyBkZWZhdWx0IENvZ25pdG8gYXV0aG9yaXplcilcbiAgICovXG4gIHB1YmxpYyB1c2VyUG9vbENsaWVudD86IGNvZ25pdG8uSVVzZXJQb29sQ2xpZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgUkVRVUVTVCBpbnRlcmNlcHRvciBjb25maWd1cmF0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZXF1ZXN0SW50ZXJjZXB0b3JDb25maWc/OiBJbnRlcmNlcHRvckJpbmRDb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBSRVNQT05TRSBpbnRlcmNlcHRvciBjb25maWd1cmF0aW9uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSByZXNwb25zZUludGVyY2VwdG9yQ29uZmlnPzogSW50ZXJjZXB0b3JCaW5kQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgQ29nbml0byBVc2VyIFBvb2wgRG9tYWluIGNyZWF0ZWQgZm9yIHRoZSBnYXRld2F5IChpZiB1c2luZyBkZWZhdWx0IENvZ25pdG8gYXV0aG9yaXplcilcbiAgICovXG4gIHB1YmxpYyB1c2VyUG9vbERvbWFpbj86IGNvZ25pdG8uSVVzZXJQb29sRG9tYWluO1xuXG4gIC8qKlxuICAgKiBUaGUgQ29nbml0byBSZXNvdXJjZSBTZXJ2ZXIgY3JlYXRlZCBmb3IgdGhlIGdhdGV3YXkgKGlmIHVzaW5nIGRlZmF1bHQgQ29nbml0byBhdXRob3JpemVyKVxuICAgKi9cbiAgcHVibGljIHJlc291cmNlU2VydmVyPzogY29nbml0by5JVXNlclBvb2xSZXNvdXJjZVNlcnZlcjtcblxuICAvKipcbiAgICogVGhlIE9BdXRoMiB0b2tlbiBlbmRwb2ludCBVUkwgZm9yIGNsaWVudCBjcmVkZW50aWFscyBmbG93LlxuICAgKiBPbmx5IGF2YWlsYWJsZSB3aGVuIHVzaW5nIHRoZSBkZWZhdWx0IENvZ25pdG8gYXV0aG9yaXplci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0b2tlbkVuZHBvaW50VXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgT0F1dGgyIHNjb3BlIHN0cmluZ3MgZm9yIGNsaWVudCBjcmVkZW50aWFscyBmbG93LlxuICAgKiBPbmx5IGF2YWlsYWJsZSB3aGVuIHVzaW5nIHRoZSBkZWZhdWx0IENvZ25pdG8gYXV0aG9yaXplci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvYXV0aFNjb3Blcz86IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBHYXRld2F5UHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLy8gTWF4aW11bSBuYW1lIGxlbmd0aCBvZiA0OCBjaGFyYWN0ZXJzIGlzIGNob3NlbiBpbnN0ZWFkIG9mIDEwMCBjaGFyYWN0ZXJzIHRoYXQgbWVudGlvbmVkIGluIGRvY3VtZW50YXRpb24gYmVsb3csXG4gICAgICAvLyBkdWUgdG8gZmFpbHVyZSBpbiBDRiBkZXBsb3ltZW50IHdoZW4gbW9yZSB0aGFuIDQ4IGNoYXJhY3RlcnMgdXNlZFxuICAgICAgLy8gQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1RlbXBsYXRlUmVmZXJlbmNlL2F3cy1yZXNvdXJjZS1iZWRyb2NrYWdlbnRjb3JlLWdhdGV3YXkuaHRtbCNjZm4tYmVkcm9ja2FnZW50Y29yZS1nYXRld2F5LW5hbWVcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuZ2F0ZXdheU5hbWUgPz9cbiAgICAgICAgTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogNDggfSksXG4gICAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQXNzaWdubWVudHNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHRoaXMubmFtZSA9IHRoaXMucGh5c2ljYWxOYW1lO1xuICAgIHRoaXMudmFsaWRhdGVHYXRld2F5TmFtZSh0aGlzLm5hbWUpO1xuXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IHByb3BzLmRlc2NyaXB0aW9uO1xuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlRGVzY3JpcHRpb24odGhpcy5kZXNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy5rbXNLZXkgPSBwcm9wcy5rbXNLZXk7XG4gICAgdGhpcy5yb2xlID0gcHJvcHMucm9sZSA/PyB0aGlzLmNyZWF0ZUdhdGV3YXlSb2xlKCk7XG5cbiAgICBpZiAodGhpcy5rbXNLZXkgJiYgdGhpcy5yb2xlKSB7XG4gICAgICB0aGlzLmttc0tleS5ncmFudEVuY3J5cHREZWNyeXB0KHRoaXMucm9sZSk7XG4gICAgfVxuXG4gICAgdGhpcy5wcm90b2NvbENvbmZpZ3VyYXRpb24gPSBwcm9wcy5wcm90b2NvbENvbmZpZ3VyYXRpb24gPz8gdGhpcy5jcmVhdGVEZWZhdWx0TWNwUHJvdG9jb2xDb25maWd1cmF0aW9uKCk7XG4gICAgaWYgKHByb3BzLmF1dGhvcml6ZXJDb25maWd1cmF0aW9uKSB7XG4gICAgICB0aGlzLmF1dGhvcml6ZXJDb25maWd1cmF0aW9uID0gcHJvcHMuYXV0aG9yaXplckNvbmZpZ3VyYXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRDb2duaXRvQXV0aCA9IHRoaXMuY3JlYXRlRGVmYXVsdENvZ25pdG9BdXRob3JpemVyQ29uZmlnKCk7XG4gICAgICB0aGlzLmF1dGhvcml6ZXJDb25maWd1cmF0aW9uID0gZGVmYXVsdENvZ25pdG9BdXRoLmF1dGhvcml6ZXJDb25maWc7XG4gICAgICB0aGlzLnRva2VuRW5kcG9pbnRVcmwgPSBkZWZhdWx0Q29nbml0b0F1dGgudG9rZW5FbmRwb2ludFVybDtcbiAgICAgIHRoaXMub2F1dGhTY29wZXMgPSBkZWZhdWx0Q29nbml0b0F1dGgub2F1dGhTY29wZXM7XG4gICAgfVxuICAgIHRoaXMuZXhjZXB0aW9uTGV2ZWwgPSBwcm9wcy5leGNlcHRpb25MZXZlbDtcblxuICAgIHRoaXMudGFncyA9IHByb3BzLnRhZ3MgPz8ge307XG5cbiAgICAvLyBJbml0aWFsaXplIGludGVyY2VwdG9ycyBmcm9tIHByb3BzXG4gICAgaWYgKHByb3BzLmludGVyY2VwdG9yQ29uZmlndXJhdGlvbnMpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVBbmRJbml0aWFsaXplSW50ZXJjZXB0b3JzKHByb3BzLmludGVyY2VwdG9yQ29uZmlndXJhdGlvbnMpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEwxIEluc3RhbnRpYXRpb25cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBfcmVzb3VyY2UgPSBuZXcgYmVkcm9ja2FnZW50Y29yZS5DZm5HYXRld2F5KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGF1dGhvcml6ZXJDb25maWd1cmF0aW9uOiB0aGlzLmF1dGhvcml6ZXJDb25maWd1cmF0aW9uLl9yZW5kZXIoKSxcbiAgICAgIGF1dGhvcml6ZXJUeXBlOiB0aGlzLmF1dGhvcml6ZXJDb25maWd1cmF0aW9uLmF1dGhvcml6ZXJUeXBlLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBleGNlcHRpb25MZXZlbDogdGhpcy5leGNlcHRpb25MZXZlbCxcbiAgICAgIGludGVyY2VwdG9yQ29uZmlndXJhdGlvbnM6IExhenkuYW55KHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy5yZW5kZXJJbnRlcmNlcHRvckNvbmZpZ3VyYXRpb25zKCksXG4gICAgICB9KSxcbiAgICAgIGttc0tleUFybjogdGhpcy5rbXNLZXk/LmtleUFybixcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIHByb3RvY29sQ29uZmlndXJhdGlvbjogdGhpcy5wcm90b2NvbENvbmZpZ3VyYXRpb24uX3JlbmRlcigpLFxuICAgICAgcHJvdG9jb2xUeXBlOiB0aGlzLnByb3RvY29sQ29uZmlndXJhdGlvbi5wcm90b2NvbFR5cGUsXG4gICAgICByb2xlQXJuOiB0aGlzLnJvbGU/LnJvbGVBcm4sXG4gICAgICB0YWdzOiB0aGlzLnRhZ3MsXG4gICAgfSk7XG5cbiAgICB0aGlzLmdhdGV3YXlJZCA9IF9yZXNvdXJjZS5hdHRyR2F0ZXdheUlkZW50aWZpZXI7XG4gICAgdGhpcy5nYXRld2F5QXJuID0gX3Jlc291cmNlLmF0dHJHYXRld2F5QXJuO1xuICAgIHRoaXMuZ2F0ZXdheVVybCA9IF9yZXNvdXJjZS5hdHRyR2F0ZXdheVVybDtcbiAgICB0aGlzLnN0YXR1cyA9IF9yZXNvdXJjZS5hdHRyU3RhdHVzO1xuICAgIHRoaXMuY3JlYXRlZEF0ID0gX3Jlc291cmNlLmF0dHJDcmVhdGVkQXQ7XG4gICAgdGhpcy51cGRhdGVkQXQgPSBfcmVzb3VyY2UuYXR0clVwZGF0ZWRBdDtcbiAgICB0aGlzLnN0YXR1c1JlYXNvbiA9IF9yZXNvdXJjZS5hdHRyU3RhdHVzUmVhc29ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBMYW1iZGEgdGFyZ2V0IHRvIHRoaXMgZ2F0ZXdheVxuICAgKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIHRoYXQgY3JlYXRlcyBhIEdhdGV3YXlUYXJnZXQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZ2F0ZXdheVxuICAgKlxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZCBmb3IgdGhlIHRhcmdldFxuICAgKiBAcGFyYW0gcHJvcHMgUHJvcGVydGllcyBmb3IgdGhlIExhbWJkYSB0YXJnZXRcbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgR2F0ZXdheVRhcmdldFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZExhbWJkYVRhcmdldChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBBZGRMYW1iZGFUYXJnZXRPcHRpb25zLFxuICApOiBHYXRld2F5VGFyZ2V0IHtcbiAgICAvLyBMYW1iZGEgaW52b2tlIHBlcm1pc3Npb25zIGFyZSBhdXRvbWF0aWNhbGx5IGdyYW50ZWQgaW4gTGFtYmRhVGFyZ2V0Q29uZmlndXJhdGlvbi5iaW5kKClcbiAgICAvLyBCdWlsZCB0YXJnZXQgcHJvcHMsIGNvbmRpdGlvbmFsbHkgaW5jbHVkaW5nIGNyZWRlbnRpYWxzIGlmIGFycmF5IGhhcyBpdGVtc1xuICAgIGNvbnN0IHRhcmdldFByb3BzOiBhbnkgPSB7XG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBnYXRld2F5OiB0aGlzLFxuICAgICAgbGFtYmRhRnVuY3Rpb246IHByb3BzLmxhbWJkYUZ1bmN0aW9uLFxuICAgICAgdG9vbFNjaGVtYTogcHJvcHMudG9vbFNjaGVtYSxcbiAgICAgIC4uLihwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyAmJiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucy5sZW5ndGggPiAwXG4gICAgICAgID8geyBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMgfVxuICAgICAgICA6IHt9KSxcbiAgICB9O1xuXG4gICAgY29uc3QgdGFyZ2V0ID0gR2F0ZXdheVRhcmdldC5mb3JMYW1iZGEodGhpcywgaWQsIHRhcmdldFByb3BzKTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIE9wZW5BUEkgdGFyZ2V0IHRvIHRoaXMgZ2F0ZXdheVxuICAgKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIHRoYXQgY3JlYXRlcyBhIEdhdGV3YXlUYXJnZXQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZ2F0ZXdheVxuICAgKlxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZCBmb3IgdGhlIHRhcmdldFxuICAgKiBAcGFyYW0gcHJvcHMgUHJvcGVydGllcyBmb3IgdGhlIE9wZW5BUEkgdGFyZ2V0XG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIEdhdGV3YXlUYXJnZXRcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRPcGVuQXBpVGFyZ2V0KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEFkZE9wZW5BcGlUYXJnZXRPcHRpb25zLFxuICApOiBHYXRld2F5VGFyZ2V0IHtcbiAgICBjb25zdCB0YXJnZXQgPSBHYXRld2F5VGFyZ2V0LmZvck9wZW5BcGkodGhpcywgaWQsIHtcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lOiBwcm9wcy5nYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGdhdGV3YXk6IHRoaXMsXG4gICAgICBhcGlTY2hlbWE6IHByb3BzLmFwaVNjaGVtYSxcbiAgICAgIHZhbGlkYXRlT3BlbkFwaVNjaGVtYTogcHJvcHMudmFsaWRhdGVPcGVuQXBpU2NoZW1hLFxuICAgICAgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBTbWl0aHkgdGFyZ2V0IHRvIHRoaXMgZ2F0ZXdheVxuICAgKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIHRoYXQgY3JlYXRlcyBhIEdhdGV3YXlUYXJnZXQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZ2F0ZXdheVxuICAgKlxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZCBmb3IgdGhlIHRhcmdldFxuICAgKiBAcGFyYW0gcHJvcHMgUHJvcGVydGllcyBmb3IgdGhlIFNtaXRoeSB0YXJnZXRcbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgR2F0ZXdheVRhcmdldFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZFNtaXRoeVRhcmdldChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBBZGRTbWl0aHlUYXJnZXRPcHRpb25zLFxuICApOiBHYXRld2F5VGFyZ2V0IHtcbiAgICAvLyBCdWlsZCB0YXJnZXQgcHJvcHMsIGNvbmRpdGlvbmFsbHkgaW5jbHVkaW5nIGNyZWRlbnRpYWxzIGlmIGFycmF5IGhhcyBpdGVtc1xuICAgIGNvbnN0IHRhcmdldFByb3BzOiBhbnkgPSB7XG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBnYXRld2F5OiB0aGlzLFxuICAgICAgc21pdGh5TW9kZWw6IHByb3BzLnNtaXRoeU1vZGVsLFxuICAgICAgLi4uKHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zICYmIHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zLmxlbmd0aCA+IDBcbiAgICAgICAgPyB7IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyB9XG4gICAgICAgIDoge30pLFxuICAgIH07XG5cbiAgICBjb25zdCB0YXJnZXQgPSBHYXRld2F5VGFyZ2V0LmZvclNtaXRoeSh0aGlzLCBpZCwgdGFyZ2V0UHJvcHMpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gTUNQIHNlcnZlciB0YXJnZXQgdG8gdGhpcyBnYXRld2F5XG4gICAqIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBtZXRob2QgdGhhdCBjcmVhdGVzIGEgR2F0ZXdheVRhcmdldCBhc3NvY2lhdGVkIHdpdGggdGhpcyBnYXRld2F5XG4gICAqXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkIGZvciB0aGUgdGFyZ2V0XG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wZXJ0aWVzIGZvciB0aGUgTUNQIHNlcnZlciB0YXJnZXRcbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgR2F0ZXdheVRhcmdldFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvZ2F0ZXdheS10YXJnZXQtTUNQc2VydmVycy5odG1sXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkTWNwU2VydmVyVGFyZ2V0KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEFkZE1jcFNlcnZlclRhcmdldE9wdGlvbnMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIC8vIEJ1aWxkIHRhcmdldCBwcm9wcywgY29uZGl0aW9uYWxseSBpbmNsdWRpbmcgY3JlZGVudGlhbHMgaWYgYXJyYXkgaGFzIGl0ZW1zXG4gICAgY29uc3QgdGFyZ2V0UHJvcHM6IGFueSA9IHtcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lOiBwcm9wcy5nYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGdhdGV3YXk6IHRoaXMsXG4gICAgICBlbmRwb2ludDogcHJvcHMuZW5kcG9pbnQsXG4gICAgICAuLi4ocHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMgJiYgcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMubGVuZ3RoID4gMFxuICAgICAgICA/IHsgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zIH1cbiAgICAgICAgOiB7fSksXG4gICAgfTtcblxuICAgIGNvbnN0IHRhcmdldCA9IEdhdGV3YXlUYXJnZXQuZm9yTWNwU2VydmVyKHRoaXMsIGlkLCB0YXJnZXRQcm9wcyk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHNlcnZpY2Ugcm9sZSBmb3IgdGhlIGdhdGV3YXkgdG8gYXNzdW1lXG4gICAqXG4gICAqIFRoZSBzZXJ2aWNlIHJvbGUgc3RhcnRzIHdpdGggbWluaW1hbCBwZXJtaXNzaW9ucy4gQWRkaXRpb25hbCBwZXJtaXNzaW9uc1xuICAgKiBhcmUgYWRkZWQgYXV0b21hdGljYWxseSB3aGVuIHRhcmdldHMgYXJlIGNvbmZpZ3VyZWQ6XG4gICAqIC0gS01TIGVuY3J5cHRpb246IEF1dG9tYXRpY2FsbHkgZ3JhbnRzIGVuY3J5cHQvZGVjcnlwdCBwZXJtaXNzaW9uc1xuICAgKlxuICAgKiBGb3Igb3RoZXIgdGFyZ2V0IHR5cGVzLCBtYW51YWxseSBncmFudCBwZXJtaXNzaW9ucyB1c2luZyBzdGFuZGFyZCBDREsgZ3JhbnQgbWV0aG9kczpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUdhdGV3YXlSb2xlKCk6IGlhbS5Sb2xlIHtcbiAgICBjb25zdCByb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdTZXJ2aWNlUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdiZWRyb2NrLWFnZW50Y29yZS5hbWF6b25hd3MuY29tJyksXG4gICAgICBkZXNjcmlwdGlvbjogYFNlcnZpY2Ugcm9sZSBmb3IgQmVkcm9jayBBZ2VudENvcmUgR2F0ZXdheSAke3RoaXMubmFtZX1gLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVnaW9uID0gU3RhY2sub2YodGhpcykucmVnaW9uO1xuICAgIGNvbnN0IGFjY291bnQgPSBTdGFjay5vZih0aGlzKS5hY2NvdW50O1xuICAgIGNvbnN0IHBhcnRpdGlvbiA9IFN0YWNrLm9mKHRoaXMpLnBhcnRpdGlvbjtcblxuICAgIC8vIFRoaXMgcmVzdHJpY3RzIHJvbGUgYXNzdW1wdGlvbiB0byB0aGUgc3BlY2lmaWMgZ2F0ZXdheSByZXNvdXJjZSBvbmx5IGluIHRoaXMgYWNjb3VudCxcbiAgICAvLyBwcmV2ZW50aW5nIG90aGVyIGFjY291bnRzIGZyb20gYXNzdW1pbmcgdGhpcyByb2xlLlxuICAgIC8vIFNlZTpodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL2dhdGV3YXktcHJlcmVxdWlzaXRlcy1wZXJtaXNzaW9ucy5odG1sI2dhdGV3YXktc2VydmljZS1yb2xlLXBlcm1pc3Npb25zXG4gICAgcm9sZS5hc3N1bWVSb2xlUG9saWN5Py5hZGRTdGF0ZW1lbnRzKFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2JlZHJvY2stYWdlbnRjb3JlLmFtYXpvbmF3cy5jb20nKV0sXG4gICAgICAgIGFjdGlvbnM6IEdBVEVXQVlfQVNTVU1FX1JPTEUsXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICdhd3M6U291cmNlQWNjb3VudCc6IGFjY291bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBBcm5MaWtlOiB7XG4gICAgICAgICAgICAnYXdzOlNvdXJjZUFybic6IGBhcm46JHtwYXJ0aXRpb259OmJlZHJvY2stYWdlbnRjb3JlOiR7cmVnaW9ufToke2FjY291bnR9OmdhdGV3YXkvJHt0aGlzLm5hbWV9KmAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5rbXNLZXkpIHtcbiAgICAgIHJvbGUuYWRkVG9Qb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IEdBVEVXQVlfS01TX0tFWV9QRVJNUyxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5rbXNLZXkua2V5QXJuXSxcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvbGU7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBnYXRld2F5IG5hbWUgZm9ybWF0XG4gICAqIFBhdHRlcm46IF4oWzAtOWEtekEtWl1bLV0/KXsxLDQ4fSRcbiAgICogTWF4IGxlbmd0aDogNDggY2hhcmFjdGVyc1xuICAgKiBAcGFyYW0gbmFtZSBUaGUgZ2F0ZXdheSBuYW1lIHRvIHZhbGlkYXRlXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIG5hbWUgaXMgaW52YWxpZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVHYXRld2F5TmFtZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKG5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGVuZ3RoRXJyb3JzID0gdmFsaWRhdGVTdHJpbmdGaWVsZCh7XG4gICAgICB2YWx1ZTogbmFtZSxcbiAgICAgIG1pbkxlbmd0aDogMSxcbiAgICAgIG1heExlbmd0aDogNDgsXG4gICAgICBmaWVsZE5hbWU6ICdHYXRld2F5IG5hbWUnLFxuICAgIH0pO1xuXG4gICAgaWYgKGxlbmd0aEVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxlbmd0aEVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0dGVybkVycm9ycyA9IHZhbGlkYXRlRmllbGRQYXR0ZXJuKFxuICAgICAgbmFtZSxcbiAgICAgICdHYXRld2F5IG5hbWUnLFxuICAgICAgL14oWzAtOWEtekEtWl1bLV0/KXsxLDQ4fSQvLFxuICAgICAgJ0dhdGV3YXkgbmFtZSBtdXN0IGNvbnRhaW4gb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgaHlwaGVucywgd2l0aCBoeXBoZW5zIG9ubHkgYmV0d2VlbiBjaGFyYWN0ZXJzJyxcbiAgICApO1xuXG4gICAgaWYgKHBhdHRlcm5FcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihwYXR0ZXJuRXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBkZXNjcmlwdGlvbiBmb3JtYXRcbiAgICogTWF4IGxlbmd0aDogMjAwIGNoYXJhY3RlcnNcbiAgICogQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBkZXNjcmlwdGlvbiB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHZhbGlkYXRpb24gZmFpbHNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoZGVzY3JpcHRpb24pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGVTdHJpbmdGaWVsZCh7XG4gICAgICB2YWx1ZTogZGVzY3JpcHRpb24sXG4gICAgICBtaW5MZW5ndGg6IDEsXG4gICAgICBtYXhMZW5ndGg6IDIwMCxcbiAgICAgIGZpZWxkTmFtZTogJ0Rlc2NyaXB0aW9uJyxcbiAgICB9KTtcblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihlcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGVmYXVsdCBDb2duaXRvIGF1dGhvcml6ZXIgZm9yIHRoZSBnYXRld2F5XG4gICAqIFByb3Zpc2lvbnMgYSBDb2duaXRvIFVzZXIgUG9vbCBhbmQgY29uZmlndXJlcyBNMk0gKG1hY2hpbmUtdG8tbWFjaGluZSkgSldUIGF1dGhlbnRpY2F0aW9uXG4gICAqIHVzaW5nIE9BdXRoIDIuMCBjbGllbnQgY3JlZGVudGlhbHMgZ3JhbnQgZmxvd1xuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvaWRlbnRpdHktaWRwLWNvZ25pdG8uaHRtbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRGVmYXVsdENvZ25pdG9BdXRob3JpemVyQ29uZmlnKCk6IHtcbiAgICBhdXRob3JpemVyQ29uZmlnOiBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWc7XG4gICAgdG9rZW5FbmRwb2ludFVybDogc3RyaW5nO1xuICAgIG9hdXRoU2NvcGVzOiBzdHJpbmdbXTtcbiAgfSB7XG4gICAgY29uc3QgdXNlclBvb2wgPSBuZXcgY29nbml0by5Vc2VyUG9vbCh0aGlzLCAnVXNlclBvb2wnLCB7XG4gICAgICBzaWduSW5DYXNlU2Vuc2l0aXZlOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc291cmNlU2VydmVyID0gdXNlclBvb2wuYWRkUmVzb3VyY2VTZXJ2ZXIoJ1Jlc291cmNlU2VydmVyJywge1xuICAgICAgaWRlbnRpZmllcjogTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHsgbWF4TGVuZ3RoOiAyNTYsIHNlcGFyYXRvcjogJy0nIH0pLFxuICAgICAgc2NvcGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzY29wZU5hbWU6ICdyZWFkJyxcbiAgICAgICAgICBzY29wZURlc2NyaXB0aW9uOiAnUmVhZCBhY2Nlc3MgdG8gZ2F0ZXdheSB0b29scycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzY29wZU5hbWU6ICd3cml0ZScsXG4gICAgICAgICAgc2NvcGVEZXNjcmlwdGlvbjogJ1dyaXRlIGFjY2VzcyB0byBnYXRld2F5IHRvb2xzJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBvYXV0aFNjb3BlcyA9IFtcbiAgICAgIGNvZ25pdG8uT0F1dGhTY29wZS5yZXNvdXJjZVNlcnZlcihyZXNvdXJjZVNlcnZlciwge1xuICAgICAgICBzY29wZU5hbWU6ICdyZWFkJyxcbiAgICAgICAgc2NvcGVEZXNjcmlwdGlvbjogJ1JlYWQgYWNjZXNzIHRvIGdhdGV3YXkgdG9vbHMnLFxuICAgICAgfSksXG4gICAgICBjb2duaXRvLk9BdXRoU2NvcGUucmVzb3VyY2VTZXJ2ZXIocmVzb3VyY2VTZXJ2ZXIsIHtcbiAgICAgICAgc2NvcGVOYW1lOiAnd3JpdGUnLFxuICAgICAgICBzY29wZURlc2NyaXB0aW9uOiAnV3JpdGUgYWNjZXNzIHRvIGdhdGV3YXkgdG9vbHMnLFxuICAgICAgfSksXG4gICAgXTtcblxuICAgIGNvbnN0IHVzZXJQb29sQ2xpZW50ID0gdXNlclBvb2wuYWRkQ2xpZW50KCdEZWZhdWx0Q2xpZW50Jywge1xuICAgICAgZ2VuZXJhdGVTZWNyZXQ6IHRydWUsXG4gICAgICBvQXV0aDoge1xuICAgICAgICBmbG93czoge1xuICAgICAgICAgIGNsaWVudENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzY29wZXM6IG9hdXRoU2NvcGVzLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBDb2duaXRvIERvbWFpbiBmb3IgT0F1dGgyIHRva2VuIGVuZHBvaW50XG4gICAgLy8gVXNlIHVuaXF1ZVJlc291cmNlTmFtZSB0byBnZW5lcmF0ZSBhIHVuaXF1ZSBkb21haW4gcHJlZml4IHRvTG93ZXJDYXNlKCkgaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGUgaGFzaCBwb3J0aW9uIGlzIHVwcGVyY2FzZVxuICAgIGNvbnN0IGRvbWFpblByZWZpeCA9IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICBtYXhMZW5ndGg6IDYzLCAvLyBDb2duaXRvIGRvbWFpbiBwcmVmaXggbWF4IGxlbmd0aFxuICAgICAgc2VwYXJhdG9yOiAnLScsXG4gICAgfSkudG9Mb3dlckNhc2UoKTtcblxuICAgIGNvbnN0IHVzZXJQb29sRG9tYWluID0gdXNlclBvb2wuYWRkRG9tYWluKCdEb21haW4nLCB7XG4gICAgICBjb2duaXRvRG9tYWluOiB7XG4gICAgICAgIGRvbWFpblByZWZpeDogZG9tYWluUHJlZml4LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMudXNlclBvb2wgPSB1c2VyUG9vbDtcbiAgICB0aGlzLnVzZXJQb29sQ2xpZW50ID0gdXNlclBvb2xDbGllbnQ7XG4gICAgdGhpcy51c2VyUG9vbERvbWFpbiA9IHVzZXJQb29sRG9tYWluO1xuICAgIHRoaXMucmVzb3VyY2VTZXJ2ZXIgPSByZXNvdXJjZVNlcnZlcjtcblxuICAgIHJldHVybiB7XG4gICAgICBhdXRob3JpemVyQ29uZmlnOiBHYXRld2F5QXV0aG9yaXplci51c2luZ0NvZ25pdG8oe1xuICAgICAgICB1c2VyUG9vbDogdXNlclBvb2wsXG4gICAgICAgIGFsbG93ZWRDbGllbnRzOiBbdXNlclBvb2xDbGllbnRdLFxuICAgICAgfSksXG4gICAgICB0b2tlbkVuZHBvaW50VXJsOiBgaHR0cHM6Ly8ke3VzZXJQb29sRG9tYWluLmRvbWFpbk5hbWV9LmF1dGguJHtTdGFjay5vZih0aGlzKS5yZWdpb259LmFtYXpvbmNvZ25pdG8uY29tL29hdXRoMi90b2tlbmAsXG4gICAgICBvYXV0aFNjb3Blczogb2F1dGhTY29wZXMubWFwKHNjb3BlID0+IHNjb3BlLnNjb3BlTmFtZSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGVmYXVsdCBNQ1AgcHJvdG9jb2wgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdhdGV3YXlcbiAgICogUHJvdmlkZXMgc2Vuc2libGUgZGVmYXVsdHMgZm9yIE1DUCBwcm90b2NvbCBzZXR0aW5nc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRGVmYXVsdE1jcFByb3RvY29sQ29uZmlndXJhdGlvbigpOiBJR2F0ZXdheVByb3RvY29sQ29uZmlnIHtcbiAgICByZXR1cm4gbmV3IE1jcFByb3RvY29sQ29uZmlndXJhdGlvbih7XG4gICAgICBzdXBwb3J0ZWRWZXJzaW9uczogW01DUFByb3RvY29sVmVyc2lvbi5NQ1BfMjAyNV8wM18yNl0sXG4gICAgICBzZWFyY2hUeXBlOiBNY3BHYXRld2F5U2VhcmNoVHlwZS5TRU1BTlRJQyxcbiAgICAgIGluc3RydWN0aW9uczogJ0RlZmF1bHQgZ2F0ZXdheSB0byBjb25uZWN0IHRvIGV4dGVybmFsIE1DUCB0b29scycsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGludGVyY2VwdG9yIHRvIHRoaXMgZ2F0ZXdheVxuICAgKlxuICAgKiBJbnRlcmNlcHRvcnMgYWxsb3cgeW91IHRvIHJ1biBjdXN0b20gY29kZSBhdCBzcGVjaWZpYyBwb2ludHMgaW4gdGhlIGdhdGV3YXkgcmVxdWVzdC9yZXNwb25zZSBmbG93OlxuICAgKiAtIFJFUVVFU1QgaW50ZXJjZXB0b3JzIGV4ZWN1dGUgYmVmb3JlIHRoZSBnYXRld2F5IGNhbGxzIHRoZSB0YXJnZXRcbiAgICogLSBSRVNQT05TRSBpbnRlcmNlcHRvcnMgZXhlY3V0ZSBhZnRlciB0aGUgdGFyZ2V0IHJlc3BvbmRzXG4gICAqXG4gICAqIEEgZ2F0ZXdheSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSBSRVFVRVNUIGludGVyY2VwdG9yIGFuZCBvbmUgUkVTUE9OU0UgaW50ZXJjZXB0b3IuXG4gICAqIEBwYXJhbSBpbnRlcmNlcHRvciBUaGUgaW50ZXJjZXB0b3IgdG8gYWRkICh1c2UgTGFtYmRhSW50ZXJjZXB0b3IgZmFjdG9yeSBtZXRob2RzKVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGFuIGludGVyY2VwdG9yIG9mIHRoZSBzYW1lIHR5cGUgYWxyZWFkeSBleGlzdHNcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRJbnRlcmNlcHRvcihpbnRlcmNlcHRvcjogSUludGVyY2VwdG9yKTogdm9pZCB7XG4gICAgY29uc3QgaW50ZXJjZXB0aW9uUG9pbnQgPSBpbnRlcmNlcHRvci5pbnRlcmNlcHRpb25Qb2ludDtcblxuICAgIGlmIChpbnRlcmNlcHRpb25Qb2ludCA9PT0gSW50ZXJjZXB0aW9uUG9pbnQuUkVRVUVTVCkge1xuICAgICAgaWYgKHRoaXMucmVxdWVzdEludGVyY2VwdG9yQ29uZmlnKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgJ0dhdGV3YXkgYWxyZWFkeSBoYXMgYSBSRVFVRVNUIGludGVyY2VwdG9yIGNvbmZpZ3VyZWQuIEEgZ2F0ZXdheSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSBSRVFVRVNUIGludGVyY2VwdG9yLicsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlcXVlc3RJbnRlcmNlcHRvckNvbmZpZyA9IGludGVyY2VwdG9yLmJpbmQodGhpcywgdGhpcyk7XG4gICAgfSBlbHNlIGlmIChpbnRlcmNlcHRpb25Qb2ludCA9PT0gSW50ZXJjZXB0aW9uUG9pbnQuUkVTUE9OU0UpIHtcbiAgICAgIGlmICh0aGlzLnJlc3BvbnNlSW50ZXJjZXB0b3JDb25maWcpIHtcbiAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAnR2F0ZXdheSBhbHJlYWR5IGhhcyBhIFJFU1BPTlNFIGludGVyY2VwdG9yIGNvbmZpZ3VyZWQuIEEgZ2F0ZXdheSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSBSRVNQT05TRSBpbnRlcmNlcHRvci4nLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5yZXNwb25zZUludGVyY2VwdG9yQ29uZmlnID0gaW50ZXJjZXB0b3IuYmluZCh0aGlzLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuZCBpbml0aWFsaXplcyBpbnRlcmNlcHRvcnMgZnJvbSB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbnNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlQW5kSW5pdGlhbGl6ZUludGVyY2VwdG9ycyhpbnRlcmNlcHRvcnM6IElJbnRlcmNlcHRvcltdKTogdm9pZCB7XG4gICAgY29uc3QgcmVxdWVzdENvdW50ID0gaW50ZXJjZXB0b3JzLmZpbHRlcihpID0+IGkuaW50ZXJjZXB0aW9uUG9pbnQgPT09IEludGVyY2VwdGlvblBvaW50LlJFUVVFU1QpLmxlbmd0aDtcbiAgICBjb25zdCByZXNwb25zZUNvdW50ID0gaW50ZXJjZXB0b3JzLmZpbHRlcihpID0+IGkuaW50ZXJjZXB0aW9uUG9pbnQgPT09IEludGVyY2VwdGlvblBvaW50LlJFU1BPTlNFKS5sZW5ndGg7XG5cbiAgICBpZiAocmVxdWVzdENvdW50ID4gMSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgYEdhdGV3YXkgY2FuIGhhdmUgYXQgbW9zdCBvbmUgUkVRVUVTVCBpbnRlcmNlcHRvci4gRm91bmQgJHtyZXF1ZXN0Q291bnR9IFJFUVVFU1QgaW50ZXJjZXB0b3JzLmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChyZXNwb25zZUNvdW50ID4gMSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgYEdhdGV3YXkgY2FuIGhhdmUgYXQgbW9zdCBvbmUgUkVTUE9OU0UgaW50ZXJjZXB0b3IuIEZvdW5kICR7cmVzcG9uc2VDb3VudH0gUkVTUE9OU0UgaW50ZXJjZXB0b3JzLmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgaW50ZXJjZXB0b3Igb2YgaW50ZXJjZXB0b3JzKSB7XG4gICAgICB0aGlzLmFkZEludGVyY2VwdG9yKGludGVyY2VwdG9yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgaW50ZXJjZXB0b3IgY29uZmlndXJhdGlvbnMgZm9yIENsb3VkRm9ybWF0aW9uXG4gICAqIFJldHVybnMgdW5kZWZpbmVkIGlmIG5vIGludGVyY2VwdG9ycyBhcmUgY29uZmlndXJlZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcmVuZGVySW50ZXJjZXB0b3JDb25maWd1cmF0aW9ucygpOiBhbnlbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY29uZmlnczogYW55W10gPSBbXTtcblxuICAgIGlmICh0aGlzLnJlcXVlc3RJbnRlcmNlcHRvckNvbmZpZykge1xuICAgICAgY29uZmlncy5wdXNoKHRoaXMucmVxdWVzdEludGVyY2VwdG9yQ29uZmlnLmNvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc3BvbnNlSW50ZXJjZXB0b3JDb25maWcpIHtcbiAgICAgIGNvbmZpZ3MucHVzaCh0aGlzLnJlc3BvbnNlSW50ZXJjZXB0b3JDb25maWcuY29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZ3MubGVuZ3RoID4gMCA/IGNvbmZpZ3MgOiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
- import { IUserPoolClient, IUserPool } from 'aws-cdk-lib/aws-cognito';
2
- import { GatewayCustomClaim } from './custom-claim';
1
+ import type { IUserPoolClient, IUserPool } from 'aws-cdk-lib/aws-cognito';
2
+ import type { GatewayCustomClaim } from './custom-claim';
3
3
  /******************************************************************************
4
4
  * Authorizer Configuration
5
5
  *****************************************************************************/
@@ -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.237.0-alpha.0" };
24
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CustomJwtAuthorizer", version: "2.238.0-alpha.0" };
25
25
  authorizerType = GatewayAuthorizerType.CUSTOM_JWT;
26
26
  discoveryUrl;
27
27
  allowedAudience;
@@ -70,7 +70,7 @@ exports.CustomJwtAuthorizer = CustomJwtAuthorizer;
70
70
  *
71
71
  */
72
72
  class IamAuthorizer {
73
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.IamAuthorizer", version: "2.237.0-alpha.0" };
73
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.IamAuthorizer", version: "2.238.0-alpha.0" };
74
74
  authorizerType = GatewayAuthorizerType.AWS_IAM;
75
75
  /**
76
76
  * @internal
@@ -86,7 +86,7 @@ exports.IamAuthorizer = IamAuthorizer;
86
86
  * Factory class for creating Gateway Authorizers
87
87
  */
88
88
  class GatewayAuthorizer {
89
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayAuthorizer", version: "2.237.0-alpha.0" };
89
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayAuthorizer", version: "2.238.0-alpha.0" };
90
90
  /**
91
91
  * AWS IAM authorizer instance
92
92
  */
@@ -140,4 +140,4 @@ class GatewayAuthorizer {
140
140
  }
141
141
  }
142
142
  exports.GatewayAuthorizer = GatewayAuthorizer;
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF1dGhvcml6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSw4REFBd0Q7QUFHeEQ7OytFQUUrRTtBQUUvRTs7R0FFRztBQUNILElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUMvQixpQ0FBaUM7SUFDakMsa0RBQXlCLENBQUE7SUFDekIsOEJBQThCO0lBQzlCLDRDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQUtoQztBQTRERDs7R0FFRztBQUNILE1BQWEsbUJBQW1COztJQUNkLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxVQUFVLENBQUM7SUFDakQsWUFBWSxDQUFTO0lBQ3JCLGVBQWUsQ0FBWTtJQUMzQixjQUFjLENBQVk7SUFDMUIsYUFBYSxDQUFZO0lBQ3pCLFlBQVksQ0FBd0I7SUFFckQsWUFBWSxNQUE4Qjs7Ozs7OytDQVIvQixtQkFBbUI7Ozs7UUFTNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztLQUN6QztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLE9BQU87WUFDTCxtQkFBbUIsRUFBRTtnQkFDbkIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3RFLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDbkUsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNoRSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUk7b0JBQ3ZELFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDOUQsQ0FBQzthQUNIO1NBQ0YsQ0FBQztLQUNIOztBQS9CSCxrREFnQ0M7QUFFRDs7K0VBRStFO0FBRS9FOzs7R0FHRztBQUNILE1BQWEsYUFBYTs7SUFDUixjQUFjLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDO0lBRS9EOztPQUVHO0lBQ0gsT0FBTztRQUNMLDJEQUEyRDtRQUMzRCwrREFBK0Q7UUFDL0QsT0FBTyxTQUFTLENBQUM7S0FDbEI7O0FBVkgsc0NBV0M7QUFpQ0Q7O0dBRUc7QUFDSCxNQUFzQixpQkFBaUI7O0lBQ3JDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVc7UUFDdkIsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO0tBQzVCO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBcUM7Ozs7Ozs7Ozs7UUFDaEUsNEhBQTRIO1FBQzVILElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbkksTUFBTSxJQUFJLG9DQUFlLENBQUMsMkhBQTJILENBQUMsQ0FBQztRQUN6SixDQUFDO1FBQ0QsT0FBTyxJQUFJLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQy9DO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBNkI7Ozs7Ozs7Ozs7UUFDdEQsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sa0JBQWtCLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxtQ0FBbUMsQ0FBQztRQUVwSixPQUFPLElBQUksbUJBQW1CLENBQUM7WUFDN0IsWUFBWSxFQUFFLFlBQVk7WUFDMUIsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7WUFDbEYsZUFBZSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDdkMsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQ2xDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtTQUNqQyxDQUFDLENBQUM7S0FDSjs7QUFwQ0gsOENBcUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVVzZXJQb29sQ2xpZW50LCBJVXNlclBvb2wgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29nbml0byc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi92YWxpZGF0aW9uLWhlbHBlcnMnO1xuaW1wb3J0IHsgR2F0ZXdheUN1c3RvbUNsYWltIH0gZnJvbSAnLi9jdXN0b20tY2xhaW0nO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aG9yaXplciBDb25maWd1cmF0aW9uXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogR2F0ZXdheSBhdXRob3JpemVyIHR5cGVcbiAqL1xuZXhwb3J0IGVudW0gR2F0ZXdheUF1dGhvcml6ZXJUeXBlIHtcbiAgLyoqIEN1c3RvbSBKV1QgYXV0aG9yaXplciB0eXBlICovXG4gIENVU1RPTV9KV1QgPSAnQ1VTVE9NX0pXVCcsXG4gIC8qKiBBV1MgSUFNIGF1dGhvcml6ZXIgdHlwZSAqL1xuICBBV1NfSUFNID0gJ0FXU19JQU0nLFxufVxuXG4vKipcbiAqIEFic3RyYWN0IGludGVyZmFjZSBmb3IgZ2F0ZXdheSBhdXRob3JpemVyIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWcge1xuICAvKipcbiAgICogVGhlIGF1dGhvcml6ZXIgdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yaXplclR5cGU6IEdhdGV3YXlBdXRob3JpemVyVHlwZTtcblxuICAvKipcbiAgICogVGhlIGF1dGhvcml6ZXIgY29uZmlndXJhdGlvbiBpbiBDRk4gZm9ybWF0XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3JlbmRlcigpOiBhbnk7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbSBKV1RcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogQ3VzdG9tIEpXVCBhdXRob3JpemVyIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDdXN0b21Kd3RDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoaXMgVVJMIGlzIHVzZWQgdG8gZmV0Y2ggT3BlbklEIENvbm5lY3QgY29uZmlndXJhdGlvbiBvciBhdXRob3JpemF0aW9uIHNlcnZlciBtZXRhZGF0YVxuICAgKiBmb3IgdmFsaWRhdGluZyBpbmNvbWluZyB0b2tlbnMuXG4gICAqXG4gICAqIFBhdHRlcm46IC4rL1xcLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb25cbiAgICogUmVxdWlyZWQ6IFllc1xuICAgKi9cbiAgcmVhZG9ubHkgZGlzY292ZXJ5VXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgaW5kaXZpZHVhbCBhdWRpZW5jZSB2YWx1ZXMgdGhhdCBhcmUgdmFsaWRhdGVkIGluIHRoZSBpbmNvbWluZyBKV1QgdG9rZW4gdmFsaWRhdGlvbiBwcm9jZXNzLlxuICAgKiBAZGVmYXVsdCAtIE5vIGF1ZGllbmNlIHZhbGlkYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRBdWRpZW5jZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGluZGl2aWR1YWwgY2xpZW50IElEcyB0aGF0IGFyZSB2YWxpZGF0ZWQgaW4gdGhlIGluY29taW5nIEpXVCB0b2tlbiB2YWxpZGF0aW9uIHByb2Nlc3MuXG4gICAqIEBkZWZhdWx0IC0gTm8gY2xpZW50IElEIHZhbGlkYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRDbGllbnRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgaW5kaXZpZHVhbCBzY29wZXMgdGhhdCBhcmUgdmFsaWRhdGVkIGluIHRoZSBpbmNvbWluZyBKV1QgdG9rZW4gdmFsaWRhdGlvbiBwcm9jZXNzLlxuICAgKiBAZGVmYXVsdCAtIE5vIHNjb3BlIHZhbGlkYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRTY29wZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQ3VzdG9tIGNsYWltcyBmb3IgYWRkaXRpb25hbCBKV1QgdG9rZW4gdmFsaWRhdGlvbi5cbiAgICogQWxsb3dzIHlvdSB0byB2YWxpZGF0ZSBhZGRpdGlvbmFsIGZpZWxkcyBpbiBKV1QgdG9rZW5zIGJleW9uZCB0aGUgc3RhbmRhcmQgYXVkaWVuY2UsIGNsaWVudCwgYW5kIHNjb3BlIHZhbGlkYXRpb25zLlxuICAgKiBAZGVmYXVsdCAtIE5vIGN1c3RvbSBjbGFpbSB2YWxpZGF0aW9uXG4gICAqL1xuICByZWFkb25seSBjdXN0b21DbGFpbXM/OiBHYXRld2F5Q3VzdG9tQ2xhaW1bXTtcbn1cblxuLyoqXG4gKiBDdXN0b20gSldUIGF1dGhvcml6ZXIgY29uZmlndXJhdGlvbiBpbXBsZW1lbnRhdGlvblxuICovXG5leHBvcnQgY2xhc3MgQ3VzdG9tSnd0QXV0aG9yaXplciBpbXBsZW1lbnRzIElHYXRld2F5QXV0aG9yaXplckNvbmZpZyB7XG4gIHB1YmxpYyByZWFkb25seSBhdXRob3JpemVyVHlwZSA9IEdhdGV3YXlBdXRob3JpemVyVHlwZS5DVVNUT01fSldUO1xuICBwcml2YXRlIHJlYWRvbmx5IGRpc2NvdmVyeVVybDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGFsbG93ZWRBdWRpZW5jZT86IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IGFsbG93ZWRDbGllbnRzPzogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZFNjb3Blcz86IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IGN1c3RvbUNsYWltcz86IEdhdGV3YXlDdXN0b21DbGFpbVtdO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQ3VzdG9tSnd0Q29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuZGlzY292ZXJ5VXJsID0gY29uZmlnLmRpc2NvdmVyeVVybDtcbiAgICB0aGlzLmFsbG93ZWRBdWRpZW5jZSA9IGNvbmZpZy5hbGxvd2VkQXVkaWVuY2U7XG4gICAgdGhpcy5hbGxvd2VkQ2xpZW50cyA9IGNvbmZpZy5hbGxvd2VkQ2xpZW50cztcbiAgICB0aGlzLmFsbG93ZWRTY29wZXMgPSBjb25maWcuYWxsb3dlZFNjb3BlcztcbiAgICB0aGlzLmN1c3RvbUNsYWltcyA9IGNvbmZpZy5jdXN0b21DbGFpbXM7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3JlbmRlcigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjdXN0b21Kd3RBdXRob3JpemVyOiB7XG4gICAgICAgIGRpc2NvdmVyeVVybDogdGhpcy5kaXNjb3ZlcnlVcmwsXG4gICAgICAgIC4uLih0aGlzLmFsbG93ZWRBdWRpZW5jZSAmJiB7IGFsbG93ZWRBdWRpZW5jZTogdGhpcy5hbGxvd2VkQXVkaWVuY2UgfSksXG4gICAgICAgIC4uLih0aGlzLmFsbG93ZWRDbGllbnRzICYmIHsgYWxsb3dlZENsaWVudHM6IHRoaXMuYWxsb3dlZENsaWVudHMgfSksXG4gICAgICAgIC4uLih0aGlzLmFsbG93ZWRTY29wZXMgJiYgeyBhbGxvd2VkU2NvcGVzOiB0aGlzLmFsbG93ZWRTY29wZXMgfSksXG4gICAgICAgIC4uLih0aGlzLmN1c3RvbUNsYWltcyAmJiB0aGlzLmN1c3RvbUNsYWltcy5sZW5ndGggPiAwICYmIHtcbiAgICAgICAgICBjdXN0b21DbGFpbXM6IHRoaXMuY3VzdG9tQ2xhaW1zLm1hcChjbGFpbSA9PiBjbGFpbS5fcmVuZGVyKCkpLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBV1MgSUFNXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQVdTIElBTSBhdXRob3JpemVyIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb25cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBJYW1BdXRob3JpemVyIGltcGxlbWVudHMgSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIHtcbiAgcHVibGljIHJlYWRvbmx5IGF1dGhvcml6ZXJUeXBlID0gR2F0ZXdheUF1dGhvcml6ZXJUeXBlLkFXU19JQU07XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3JlbmRlcigpOiBhbnkge1xuICAgIC8vIEFXUyBJQU0gYXV0aG9yaXplciBkb2Vzbid0IG5lZWQgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uXG4gICAgLy8gUmV0dXJuIG51bGwgb3IgdW5kZWZpbmVkIHRvIGluZGljYXRlIG5vIGNvbmZpZ3VyYXRpb24gbmVlZGVkXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWN0b3J5XG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29nbml0b0F1dGhvcml6ZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQ29nbml0byBVc2VyIFBvb2wgdG8gdXNlIGZvciBhdXRoZW50aWNhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgdXNlclBvb2w6IElVc2VyUG9vbDtcbiAgLyoqXG4gICAqIFRoZSBhbGxvd2VkIFVzZXIgUG9vbCBjbGllbnRzXG4gICAqIEBkZWZhdWx0IC0gQWxsIGNsaWVudHMgYXJlIGFsbG93ZWRcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRDbGllbnRzPzogSVVzZXJQb29sQ2xpZW50W107XG4gIC8qKlxuICAgKiBUaGUgYWxsb3dlZCBhdWRpZW5jZXMgZm9yIEpXVCB2YWxpZGF0aW9uXG4gICAqIEBkZWZhdWx0IC0gTm8gYXVkaWVuY2UgdmFsaWRhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZEF1ZGllbmNlcz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogVGhlIGFsbG93ZWQgc2NvcGVzIGZvciBKV1QgdmFsaWRhdGlvblxuICAgKiBAZGVmYXVsdCAtIE5vIHNjb3BlIHZhbGlkYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRTY29wZXM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIEN1c3RvbSBjbGFpbXMgZm9yIGFkZGl0aW9uYWwgSldUIHRva2VuIHZhbGlkYXRpb24uXG4gICAqIEFsbG93cyB5b3UgdG8gdmFsaWRhdGUgYWRkaXRpb25hbCBmaWVsZHMgaW4gSldUIHRva2VucyBiZXlvbmQgdGhlIHN0YW5kYXJkIGF1ZGllbmNlLCBjbGllbnQsIGFuZCBzY29wZSB2YWxpZGF0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBObyBjdXN0b20gY2xhaW0gdmFsaWRhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tQ2xhaW1zPzogR2F0ZXdheUN1c3RvbUNsYWltW107XG59XG4vKipcbiAqIEZhY3RvcnkgY2xhc3MgZm9yIGNyZWF0aW5nIEdhdGV3YXkgQXV0aG9yaXplcnNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdhdGV3YXlBdXRob3JpemVyIHtcbiAgLyoqXG4gICAqIEFXUyBJQU0gYXV0aG9yaXplciBpbnN0YW5jZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ0F3c0lhbSgpOiBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWcge1xuICAgIHJldHVybiBuZXcgSWFtQXV0aG9yaXplcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGN1c3RvbSBKV1QgYXV0aG9yaXplclxuICAgKiBAcGFyYW0gY29uZmlndXJhdGlvbiAtIFRoZSBKV1QgY29uZmlndXJhdGlvblxuICAgKiBAcmV0dXJucyBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWcgY29uZmlndXJlZCBmb3IgY3VzdG9tIEpXVFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ0N1c3RvbUp3dChjb25maWd1cmF0aW9uOiBDdXN0b21Kd3RDb25maWd1cmF0aW9uKTogSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIHtcbiAgICAvLyBBdCBsZWFzdCBvbmUgb2YgYWxsb3dlZEF1ZGllbmNlLCBhbGxvd2VkQ2xpZW50cywgYWxsb3dlZFNjb3Blcywgb3IgY3VzdG9tQ2xhaW1zIG11c3QgYmUgZGVmaW5lZCBmb3IgQ1VTVE9NX0pXVCBhdXRob3JpemVyXG4gICAgaWYgKCFjb25maWd1cmF0aW9uLmFsbG93ZWRBdWRpZW5jZSAmJiAhY29uZmlndXJhdGlvbi5hbGxvd2VkQ2xpZW50cyAmJiAhY29uZmlndXJhdGlvbi5hbGxvd2VkU2NvcGVzICYmICFjb25maWd1cmF0aW9uLmN1c3RvbUNsYWltcykge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignQXQgbGVhc3Qgb25lIG9mIGFsbG93ZWRBdWRpZW5jZSwgYWxsb3dlZENsaWVudHMsIGFsbG93ZWRTY29wZXMsIG9yIGN1c3RvbUNsYWltcyBtdXN0IGJlIGRlZmluZWQgZm9yIENVU1RPTV9KV1QgYXV0aG9yaXplcicpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEN1c3RvbUp3dEF1dGhvcml6ZXIoY29uZmlndXJhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgSldUIGF1dGhvcml6ZXIgZnJvbSBDb2duaXRvIFVzZXIgUG9vbFxuICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgQ29nbml0byBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm5zIEN1c3RvbUp3dEF1dGhvcml6ZXIgY29uZmlndXJlZCBmb3IgQ29nbml0b1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ0NvZ25pdG8ocHJvcHM6IENvZ25pdG9BdXRob3JpemVyUHJvcHMpOiBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWcge1xuICAgIGNvbnN0IGRpc2NvdmVyeVVybCA9IGBodHRwczovL2NvZ25pdG8taWRwLiR7cHJvcHMudXNlclBvb2wuZW52LnJlZ2lvbn0uYW1hem9uYXdzLmNvbS8ke3Byb3BzLnVzZXJQb29sLnVzZXJQb29sSWR9Ly53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uYDtcblxuICAgIHJldHVybiBuZXcgQ3VzdG9tSnd0QXV0aG9yaXplcih7XG4gICAgICBkaXNjb3ZlcnlVcmw6IGRpc2NvdmVyeVVybCxcbiAgICAgIGFsbG93ZWRDbGllbnRzOiBwcm9wcy5hbGxvd2VkQ2xpZW50cz8uZmxhdE1hcCgoY2xpZW50KSA9PiBjbGllbnQudXNlclBvb2xDbGllbnRJZCksXG4gICAgICBhbGxvd2VkQXVkaWVuY2U6IHByb3BzLmFsbG93ZWRBdWRpZW5jZXMsXG4gICAgICBhbGxvd2VkU2NvcGVzOiBwcm9wcy5hbGxvd2VkU2NvcGVzLFxuICAgICAgY3VzdG9tQ2xhaW1zOiBwcm9wcy5jdXN0b21DbGFpbXMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF1dGhvcml6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSw4REFBd0Q7QUFHeEQ7OytFQUUrRTtBQUUvRTs7R0FFRztBQUNILElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUMvQixpQ0FBaUM7SUFDakMsa0RBQXlCLENBQUE7SUFDekIsOEJBQThCO0lBQzlCLDRDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQUtoQztBQTRERDs7R0FFRztBQUNILE1BQWEsbUJBQW1COztJQUNkLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxVQUFVLENBQUM7SUFDakQsWUFBWSxDQUFTO0lBQ3JCLGVBQWUsQ0FBWTtJQUMzQixjQUFjLENBQVk7SUFDMUIsYUFBYSxDQUFZO0lBQ3pCLFlBQVksQ0FBd0I7SUFFckQsWUFBWSxNQUE4Qjs7Ozs7OytDQVIvQixtQkFBbUI7Ozs7UUFTNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztLQUN6QztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLE9BQU87WUFDTCxtQkFBbUIsRUFBRTtnQkFDbkIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3RFLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDbkUsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNoRSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUk7b0JBQ3ZELFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDOUQsQ0FBQzthQUNIO1NBQ0YsQ0FBQztLQUNIOztBQS9CSCxrREFnQ0M7QUFFRDs7K0VBRStFO0FBRS9FOzs7R0FHRztBQUNILE1BQWEsYUFBYTs7SUFDUixjQUFjLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDO0lBRS9EOztPQUVHO0lBQ0gsT0FBTztRQUNMLDJEQUEyRDtRQUMzRCwrREFBK0Q7UUFDL0QsT0FBTyxTQUFTLENBQUM7S0FDbEI7O0FBVkgsc0NBV0M7QUFpQ0Q7O0dBRUc7QUFDSCxNQUFzQixpQkFBaUI7O0lBQ3JDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVc7UUFDdkIsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO0tBQzVCO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBcUM7Ozs7Ozs7Ozs7UUFDaEUsNEhBQTRIO1FBQzVILElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbkksTUFBTSxJQUFJLG9DQUFlLENBQUMsMkhBQTJILENBQUMsQ0FBQztRQUN6SixDQUFDO1FBQ0QsT0FBTyxJQUFJLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQy9DO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBNkI7Ozs7Ozs7Ozs7UUFDdEQsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sa0JBQWtCLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxtQ0FBbUMsQ0FBQztRQUVwSixPQUFPLElBQUksbUJBQW1CLENBQUM7WUFDN0IsWUFBWSxFQUFFLFlBQVk7WUFDMUIsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7WUFDbEYsZUFBZSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDdkMsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQ2xDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtTQUNqQyxDQUFDLENBQUM7S0FDSjs7QUFwQ0gsOENBcUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJVXNlclBvb2xDbGllbnQsIElVc2VyUG9vbCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2duaXRvJztcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uL3ZhbGlkYXRpb24taGVscGVycyc7XG5pbXBvcnQgdHlwZSB7IEdhdGV3YXlDdXN0b21DbGFpbSB9IGZyb20gJy4vY3VzdG9tLWNsYWltJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6ZXIgQ29uZmlndXJhdGlvblxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIEdhdGV3YXkgYXV0aG9yaXplciB0eXBlXG4gKi9cbmV4cG9ydCBlbnVtIEdhdGV3YXlBdXRob3JpemVyVHlwZSB7XG4gIC8qKiBDdXN0b20gSldUIGF1dGhvcml6ZXIgdHlwZSAqL1xuICBDVVNUT01fSldUID0gJ0NVU1RPTV9KV1QnLFxuICAvKiogQVdTIElBTSBhdXRob3JpemVyIHR5cGUgKi9cbiAgQVdTX0lBTSA9ICdBV1NfSUFNJyxcbn1cblxuLyoqXG4gKiBBYnN0cmFjdCBpbnRlcmZhY2UgZm9yIGdhdGV3YXkgYXV0aG9yaXplciBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBhdXRob3JpemVyIHR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvcml6ZXJUeXBlOiBHYXRld2F5QXV0aG9yaXplclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBhdXRob3JpemVyIGNvbmZpZ3VyYXRpb24gaW4gQ0ZOIGZvcm1hdFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9yZW5kZXIoKTogYW55O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b20gSldUXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIEN1c3RvbSBKV1QgYXV0aG9yaXplciBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tSnd0Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGlzIFVSTCBpcyB1c2VkIHRvIGZldGNoIE9wZW5JRCBDb25uZWN0IGNvbmZpZ3VyYXRpb24gb3IgYXV0aG9yaXphdGlvbiBzZXJ2ZXIgbWV0YWRhdGFcbiAgICogZm9yIHZhbGlkYXRpbmcgaW5jb21pbmcgdG9rZW5zLlxuICAgKlxuICAgKiBQYXR0ZXJuOiAuKy9cXC53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uXG4gICAqIFJlcXVpcmVkOiBZZXNcbiAgICovXG4gIHJlYWRvbmx5IGRpc2NvdmVyeVVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGluZGl2aWR1YWwgYXVkaWVuY2UgdmFsdWVzIHRoYXQgYXJlIHZhbGlkYXRlZCBpbiB0aGUgaW5jb21pbmcgSldUIHRva2VuIHZhbGlkYXRpb24gcHJvY2Vzcy5cbiAgICogQGRlZmF1bHQgLSBObyBhdWRpZW5jZSB2YWxpZGF0aW9uXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkQXVkaWVuY2U/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmVwcmVzZW50cyBpbmRpdmlkdWFsIGNsaWVudCBJRHMgdGhhdCBhcmUgdmFsaWRhdGVkIGluIHRoZSBpbmNvbWluZyBKV1QgdG9rZW4gdmFsaWRhdGlvbiBwcm9jZXNzLlxuICAgKiBAZGVmYXVsdCAtIE5vIGNsaWVudCBJRCB2YWxpZGF0aW9uXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkQ2xpZW50cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGluZGl2aWR1YWwgc2NvcGVzIHRoYXQgYXJlIHZhbGlkYXRlZCBpbiB0aGUgaW5jb21pbmcgSldUIHRva2VuIHZhbGlkYXRpb24gcHJvY2Vzcy5cbiAgICogQGRlZmF1bHQgLSBObyBzY29wZSB2YWxpZGF0aW9uXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkU2NvcGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBjbGFpbXMgZm9yIGFkZGl0aW9uYWwgSldUIHRva2VuIHZhbGlkYXRpb24uXG4gICAqIEFsbG93cyB5b3UgdG8gdmFsaWRhdGUgYWRkaXRpb25hbCBmaWVsZHMgaW4gSldUIHRva2VucyBiZXlvbmQgdGhlIHN0YW5kYXJkIGF1ZGllbmNlLCBjbGllbnQsIGFuZCBzY29wZSB2YWxpZGF0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBObyBjdXN0b20gY2xhaW0gdmFsaWRhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tQ2xhaW1zPzogR2F0ZXdheUN1c3RvbUNsYWltW107XG59XG5cbi8qKlxuICogQ3VzdG9tIEpXVCBhdXRob3JpemVyIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIEN1c3RvbUp3dEF1dGhvcml6ZXIgaW1wbGVtZW50cyBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWcge1xuICBwdWJsaWMgcmVhZG9ubHkgYXV0aG9yaXplclR5cGUgPSBHYXRld2F5QXV0aG9yaXplclR5cGUuQ1VTVE9NX0pXVDtcbiAgcHJpdmF0ZSByZWFkb25seSBkaXNjb3ZlcnlVcmw6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd2VkQXVkaWVuY2U/OiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd2VkQ2xpZW50cz86IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IGFsbG93ZWRTY29wZXM/OiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXN0b21DbGFpbXM/OiBHYXRld2F5Q3VzdG9tQ2xhaW1bXTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IEN1c3RvbUp3dENvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLmRpc2NvdmVyeVVybCA9IGNvbmZpZy5kaXNjb3ZlcnlVcmw7XG4gICAgdGhpcy5hbGxvd2VkQXVkaWVuY2UgPSBjb25maWcuYWxsb3dlZEF1ZGllbmNlO1xuICAgIHRoaXMuYWxsb3dlZENsaWVudHMgPSBjb25maWcuYWxsb3dlZENsaWVudHM7XG4gICAgdGhpcy5hbGxvd2VkU2NvcGVzID0gY29uZmlnLmFsbG93ZWRTY29wZXM7XG4gICAgdGhpcy5jdXN0b21DbGFpbXMgPSBjb25maWcuY3VzdG9tQ2xhaW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9yZW5kZXIoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgY3VzdG9tSnd0QXV0aG9yaXplcjoge1xuICAgICAgICBkaXNjb3ZlcnlVcmw6IHRoaXMuZGlzY292ZXJ5VXJsLFxuICAgICAgICAuLi4odGhpcy5hbGxvd2VkQXVkaWVuY2UgJiYgeyBhbGxvd2VkQXVkaWVuY2U6IHRoaXMuYWxsb3dlZEF1ZGllbmNlIH0pLFxuICAgICAgICAuLi4odGhpcy5hbGxvd2VkQ2xpZW50cyAmJiB7IGFsbG93ZWRDbGllbnRzOiB0aGlzLmFsbG93ZWRDbGllbnRzIH0pLFxuICAgICAgICAuLi4odGhpcy5hbGxvd2VkU2NvcGVzICYmIHsgYWxsb3dlZFNjb3BlczogdGhpcy5hbGxvd2VkU2NvcGVzIH0pLFxuICAgICAgICAuLi4odGhpcy5jdXN0b21DbGFpbXMgJiYgdGhpcy5jdXN0b21DbGFpbXMubGVuZ3RoID4gMCAmJiB7XG4gICAgICAgICAgY3VzdG9tQ2xhaW1zOiB0aGlzLmN1c3RvbUNsYWltcy5tYXAoY2xhaW0gPT4gY2xhaW0uX3JlbmRlcigpKSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVdTIElBTVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIEFXUyBJQU0gYXV0aG9yaXplciBjb25maWd1cmF0aW9uIGltcGxlbWVudGF0aW9uXG4gKlxuICovXG5leHBvcnQgY2xhc3MgSWFtQXV0aG9yaXplciBpbXBsZW1lbnRzIElHYXRld2F5QXV0aG9yaXplckNvbmZpZyB7XG4gIHB1YmxpYyByZWFkb25seSBhdXRob3JpemVyVHlwZSA9IEdhdGV3YXlBdXRob3JpemVyVHlwZS5BV1NfSUFNO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9yZW5kZXIoKTogYW55IHtcbiAgICAvLyBBV1MgSUFNIGF1dGhvcml6ZXIgZG9lc24ndCBuZWVkIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvblxuICAgIC8vIFJldHVybiBudWxsIG9yIHVuZGVmaW5lZCB0byBpbmRpY2F0ZSBubyBjb25maWd1cmF0aW9uIG5lZWRlZFxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFjdG9yeVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5leHBvcnQgaW50ZXJmYWNlIENvZ25pdG9BdXRob3JpemVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIENvZ25pdG8gVXNlciBQb29sIHRvIHVzZSBmb3IgYXV0aGVudGljYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJQb29sOiBJVXNlclBvb2w7XG4gIC8qKlxuICAgKiBUaGUgYWxsb3dlZCBVc2VyIFBvb2wgY2xpZW50c1xuICAgKiBAZGVmYXVsdCAtIEFsbCBjbGllbnRzIGFyZSBhbGxvd2VkXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkQ2xpZW50cz86IElVc2VyUG9vbENsaWVudFtdO1xuICAvKipcbiAgICogVGhlIGFsbG93ZWQgYXVkaWVuY2VzIGZvciBKV1QgdmFsaWRhdGlvblxuICAgKiBAZGVmYXVsdCAtIE5vIGF1ZGllbmNlIHZhbGlkYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRBdWRpZW5jZXM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBhbGxvd2VkIHNjb3BlcyBmb3IgSldUIHZhbGlkYXRpb25cbiAgICogQGRlZmF1bHQgLSBObyBzY29wZSB2YWxpZGF0aW9uXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkU2NvcGVzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBDdXN0b20gY2xhaW1zIGZvciBhZGRpdGlvbmFsIEpXVCB0b2tlbiB2YWxpZGF0aW9uLlxuICAgKiBBbGxvd3MgeW91IHRvIHZhbGlkYXRlIGFkZGl0aW9uYWwgZmllbGRzIGluIEpXVCB0b2tlbnMgYmV5b25kIHRoZSBzdGFuZGFyZCBhdWRpZW5jZSwgY2xpZW50LCBhbmQgc2NvcGUgdmFsaWRhdGlvbnMuXG4gICAqIEBkZWZhdWx0IC0gTm8gY3VzdG9tIGNsYWltIHZhbGlkYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbUNsYWltcz86IEdhdGV3YXlDdXN0b21DbGFpbVtdO1xufVxuLyoqXG4gKiBGYWN0b3J5IGNsYXNzIGZvciBjcmVhdGluZyBHYXRld2F5IEF1dGhvcml6ZXJzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHYXRld2F5QXV0aG9yaXplciB7XG4gIC8qKlxuICAgKiBBV1MgSUFNIGF1dGhvcml6ZXIgaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdBd3NJYW0oKTogSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIHtcbiAgICByZXR1cm4gbmV3IElhbUF1dGhvcml6ZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBjdXN0b20gSldUIGF1dGhvcml6ZXJcbiAgICogQHBhcmFtIGNvbmZpZ3VyYXRpb24gLSBUaGUgSldUIGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIGNvbmZpZ3VyZWQgZm9yIGN1c3RvbSBKV1RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdDdXN0b21Kd3QoY29uZmlndXJhdGlvbjogQ3VzdG9tSnd0Q29uZmlndXJhdGlvbik6IElHYXRld2F5QXV0aG9yaXplckNvbmZpZyB7XG4gICAgLy8gQXQgbGVhc3Qgb25lIG9mIGFsbG93ZWRBdWRpZW5jZSwgYWxsb3dlZENsaWVudHMsIGFsbG93ZWRTY29wZXMsIG9yIGN1c3RvbUNsYWltcyBtdXN0IGJlIGRlZmluZWQgZm9yIENVU1RPTV9KV1QgYXV0aG9yaXplclxuICAgIGlmICghY29uZmlndXJhdGlvbi5hbGxvd2VkQXVkaWVuY2UgJiYgIWNvbmZpZ3VyYXRpb24uYWxsb3dlZENsaWVudHMgJiYgIWNvbmZpZ3VyYXRpb24uYWxsb3dlZFNjb3BlcyAmJiAhY29uZmlndXJhdGlvbi5jdXN0b21DbGFpbXMpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0F0IGxlYXN0IG9uZSBvZiBhbGxvd2VkQXVkaWVuY2UsIGFsbG93ZWRDbGllbnRzLCBhbGxvd2VkU2NvcGVzLCBvciBjdXN0b21DbGFpbXMgbXVzdCBiZSBkZWZpbmVkIGZvciBDVVNUT01fSldUIGF1dGhvcml6ZXInKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDdXN0b21Kd3RBdXRob3JpemVyKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIEpXVCBhdXRob3JpemVyIGZyb20gQ29nbml0byBVc2VyIFBvb2xcbiAgICogQHBhcmFtIHByb3BzIC0gVGhlIENvZ25pdG8gY29uZmlndXJhdGlvblxuICAgKiBAcmV0dXJucyBDdXN0b21Kd3RBdXRob3JpemVyIGNvbmZpZ3VyZWQgZm9yIENvZ25pdG9cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdDb2duaXRvKHByb3BzOiBDb2duaXRvQXV0aG9yaXplclByb3BzKTogSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnIHtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmwgPSBgaHR0cHM6Ly9jb2duaXRvLWlkcC4ke3Byb3BzLnVzZXJQb29sLmVudi5yZWdpb259LmFtYXpvbmF3cy5jb20vJHtwcm9wcy51c2VyUG9vbC51c2VyUG9vbElkfS8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbmA7XG5cbiAgICByZXR1cm4gbmV3IEN1c3RvbUp3dEF1dGhvcml6ZXIoe1xuICAgICAgZGlzY292ZXJ5VXJsOiBkaXNjb3ZlcnlVcmwsXG4gICAgICBhbGxvd2VkQ2xpZW50czogcHJvcHMuYWxsb3dlZENsaWVudHM/LmZsYXRNYXAoKGNsaWVudCkgPT4gY2xpZW50LnVzZXJQb29sQ2xpZW50SWQpLFxuICAgICAgYWxsb3dlZEF1ZGllbmNlOiBwcm9wcy5hbGxvd2VkQXVkaWVuY2VzLFxuICAgICAgYWxsb3dlZFNjb3BlczogcHJvcHMuYWxsb3dlZFNjb3BlcyxcbiAgICAgIGN1c3RvbUNsYWltczogcHJvcHMuY3VzdG9tQ2xhaW1zLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -10,7 +10,7 @@
10
10
  * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
11
11
  * and limitations under the License.
12
12
  */
13
- import { CfnGateway } from 'aws-cdk-lib/aws-bedrockagentcore';
13
+ import type { CfnGateway } from 'aws-cdk-lib/aws-bedrockagentcore';
14
14
  import { CustomClaimOperator } from '../../common/types';
15
15
  /**
16
16
  * Represents a custom claim validation configuration for Gateway JWT authorizers.