@horietakehiro/aws-cdk-utul 0.30.0 → 0.31.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 (196) hide show
  1. package/README.md +2 -5
  2. package/lib/assertions.d.ts +3 -3
  3. package/lib/assertions.js +4 -4
  4. package/lib/typed-resource.d.ts +1 -1
  5. package/lib/typed-resource.js +1 -1
  6. package/lib/types/cfn-resource-types/aws-accessanalyzer-analyzer.d.ts +33 -3
  7. package/lib/types/cfn-resource-types/aws-accessanalyzer-analyzer.js +1 -1
  8. package/lib/types/cfn-resource-types/aws-apigateway-basepathmappingv2.d.ts +25 -0
  9. package/lib/types/cfn-resource-types/aws-apigateway-basepathmappingv2.js +3 -0
  10. package/lib/types/cfn-resource-types/aws-apigateway-domainnameaccessassociation.d.ts +29 -0
  11. package/lib/types/cfn-resource-types/aws-apigateway-domainnameaccessassociation.js +3 -0
  12. package/lib/types/cfn-resource-types/aws-apigateway-domainnamev2.d.ts +28 -0
  13. package/lib/types/cfn-resource-types/aws-apigateway-domainnamev2.js +3 -0
  14. package/lib/types/cfn-resource-types/aws-applicationautoscaling-scalingpolicy.d.ts +98 -0
  15. package/lib/types/cfn-resource-types/aws-applicationautoscaling-scalingpolicy.js +1 -1
  16. package/lib/types/cfn-resource-types/aws-applicationinsights-application.d.ts +4 -0
  17. package/lib/types/cfn-resource-types/aws-applicationinsights-application.js +1 -1
  18. package/lib/types/cfn-resource-types/aws-applicationsignals-servicelevelobjective.d.ts +19 -0
  19. package/lib/types/cfn-resource-types/aws-applicationsignals-servicelevelobjective.js +1 -1
  20. package/lib/types/cfn-resource-types/aws-autoscaling-autoscalinggroup.d.ts +89 -61
  21. package/lib/types/cfn-resource-types/aws-autoscaling-autoscalinggroup.js +1 -1
  22. package/lib/types/cfn-resource-types/aws-autoscaling-scalingpolicy.d.ts +3 -0
  23. package/lib/types/cfn-resource-types/aws-autoscaling-scalingpolicy.js +1 -1
  24. package/lib/types/cfn-resource-types/aws-b2bi-capability.d.ts +2 -2
  25. package/lib/types/cfn-resource-types/aws-b2bi-capability.js +1 -1
  26. package/lib/types/cfn-resource-types/aws-b2bi-transformer.d.ts +2 -2
  27. package/lib/types/cfn-resource-types/aws-b2bi-transformer.js +1 -1
  28. package/lib/types/cfn-resource-types/aws-batch-computeenvironment.d.ts +7 -0
  29. package/lib/types/cfn-resource-types/aws-batch-computeenvironment.js +1 -1
  30. package/lib/types/cfn-resource-types/aws-chatbot-customaction.d.ts +45 -0
  31. package/lib/types/cfn-resource-types/aws-chatbot-customaction.js +3 -0
  32. package/lib/types/cfn-resource-types/aws-chatbot-microsoftteamschannelconfiguration.d.ts +4 -0
  33. package/lib/types/cfn-resource-types/aws-chatbot-microsoftteamschannelconfiguration.js +1 -1
  34. package/lib/types/cfn-resource-types/aws-chatbot-slackchannelconfiguration.d.ts +4 -0
  35. package/lib/types/cfn-resource-types/aws-chatbot-slackchannelconfiguration.js +1 -1
  36. package/lib/types/cfn-resource-types/aws-cloudformation-guardhook.d.ts +163 -0
  37. package/lib/types/cfn-resource-types/aws-cloudformation-guardhook.js +3 -0
  38. package/lib/types/cfn-resource-types/aws-cloudformation-lambdahook.d.ts +146 -0
  39. package/lib/types/cfn-resource-types/aws-cloudformation-lambdahook.js +3 -0
  40. package/lib/types/cfn-resource-types/aws-cloudfront-cachepolicy.d.ts +88 -1
  41. package/lib/types/cfn-resource-types/aws-cloudfront-cachepolicy.js +1 -1
  42. package/lib/types/cfn-resource-types/aws-cloudfront-cloudfrontoriginaccessidentity.d.ts +7 -1
  43. package/lib/types/cfn-resource-types/aws-cloudfront-cloudfrontoriginaccessidentity.js +1 -1
  44. package/lib/types/cfn-resource-types/aws-cloudfront-continuousdeploymentpolicy.d.ts +64 -2
  45. package/lib/types/cfn-resource-types/aws-cloudfront-continuousdeploymentpolicy.js +1 -1
  46. package/lib/types/cfn-resource-types/aws-cloudfront-distribution.d.ts +45 -7
  47. package/lib/types/cfn-resource-types/aws-cloudfront-distribution.js +1 -1
  48. package/lib/types/cfn-resource-types/aws-cloudfront-function.d.ts +38 -1
  49. package/lib/types/cfn-resource-types/aws-cloudfront-function.js +1 -1
  50. package/lib/types/cfn-resource-types/aws-cloudfront-keygroup.d.ts +14 -1
  51. package/lib/types/cfn-resource-types/aws-cloudfront-keygroup.js +1 -1
  52. package/lib/types/cfn-resource-types/aws-cloudfront-keyvaluestore.d.ts +16 -1
  53. package/lib/types/cfn-resource-types/aws-cloudfront-keyvaluestore.js +1 -1
  54. package/lib/types/cfn-resource-types/aws-cloudfront-monitoringsubscription.d.ts +13 -1
  55. package/lib/types/cfn-resource-types/aws-cloudfront-monitoringsubscription.js +1 -1
  56. package/lib/types/cfn-resource-types/aws-cloudfront-originaccesscontrol.d.ts +25 -1
  57. package/lib/types/cfn-resource-types/aws-cloudfront-originaccesscontrol.js +1 -1
  58. package/lib/types/cfn-resource-types/aws-cloudfront-originrequestpolicy.d.ts +56 -1
  59. package/lib/types/cfn-resource-types/aws-cloudfront-originrequestpolicy.js +1 -1
  60. package/lib/types/cfn-resource-types/aws-cloudfront-publickey.d.ts +16 -1
  61. package/lib/types/cfn-resource-types/aws-cloudfront-publickey.js +1 -1
  62. package/lib/types/cfn-resource-types/aws-cloudfront-realtimelogconfig.d.ts +28 -1
  63. package/lib/types/cfn-resource-types/aws-cloudfront-realtimelogconfig.js +1 -1
  64. package/lib/types/cfn-resource-types/aws-cloudfront-responseheaderspolicy.d.ts +185 -1
  65. package/lib/types/cfn-resource-types/aws-cloudfront-responseheaderspolicy.js +1 -1
  66. package/lib/types/cfn-resource-types/aws-cloudtrail-dashboard.d.ts +105 -0
  67. package/lib/types/cfn-resource-types/aws-cloudtrail-dashboard.js +3 -0
  68. package/lib/types/cfn-resource-types/aws-cloudtrail-trail.d.ts +79 -79
  69. package/lib/types/cfn-resource-types/aws-cloudtrail-trail.js +1 -1
  70. package/lib/types/cfn-resource-types/aws-cognito-managedloginbranding.d.ts +28 -0
  71. package/lib/types/cfn-resource-types/aws-cognito-managedloginbranding.js +3 -0
  72. package/lib/types/cfn-resource-types/aws-cognito-userpool.d.ts +100 -93
  73. package/lib/types/cfn-resource-types/aws-cognito-userpool.js +1 -1
  74. package/lib/types/cfn-resource-types/aws-connect-emailaddress.d.ts +44 -0
  75. package/lib/types/cfn-resource-types/aws-connect-emailaddress.js +3 -0
  76. package/lib/types/cfn-resource-types/aws-connect-hoursofoperation.d.ts +94 -14
  77. package/lib/types/cfn-resource-types/aws-connect-hoursofoperation.js +1 -1
  78. package/lib/types/cfn-resource-types/aws-connect-tasktemplate.d.ts +1 -1
  79. package/lib/types/cfn-resource-types/aws-connect-tasktemplate.js +1 -1
  80. package/lib/types/cfn-resource-types/aws-connectcampaignsv2-campaign.d.ts +337 -0
  81. package/lib/types/cfn-resource-types/aws-connectcampaignsv2-campaign.js +3 -0
  82. package/lib/types/cfn-resource-types/aws-customerprofiles-integration.d.ts +7 -0
  83. package/lib/types/cfn-resource-types/aws-customerprofiles-integration.js +1 -1
  84. package/lib/types/cfn-resource-types/aws-customerprofiles-segmentdefinition.d.ts +232 -0
  85. package/lib/types/cfn-resource-types/aws-customerprofiles-segmentdefinition.js +3 -0
  86. package/lib/types/cfn-resource-types/aws-deadline-fleet.d.ts +12 -0
  87. package/lib/types/cfn-resource-types/aws-deadline-fleet.js +1 -1
  88. package/lib/types/cfn-resource-types/aws-dynamodb-globaltable.d.ts +105 -96
  89. package/lib/types/cfn-resource-types/aws-dynamodb-globaltable.js +1 -1
  90. package/lib/types/cfn-resource-types/aws-dynamodb-table.d.ts +33 -1
  91. package/lib/types/cfn-resource-types/aws-dynamodb-table.js +1 -1
  92. package/lib/types/cfn-resource-types/aws-ec2-ec2fleet.d.ts +35 -35
  93. package/lib/types/cfn-resource-types/aws-ec2-ec2fleet.js +1 -1
  94. package/lib/types/cfn-resource-types/aws-ec2-launchtemplate.d.ts +80 -63
  95. package/lib/types/cfn-resource-types/aws-ec2-launchtemplate.js +1 -1
  96. package/lib/types/cfn-resource-types/aws-ec2-spotfleet.d.ts +129 -129
  97. package/lib/types/cfn-resource-types/aws-ec2-spotfleet.js +1 -1
  98. package/lib/types/cfn-resource-types/aws-ec2-vpcblockpublicaccessexclusion.d.ts +40 -0
  99. package/lib/types/cfn-resource-types/aws-ec2-vpcblockpublicaccessexclusion.js +3 -0
  100. package/lib/types/cfn-resource-types/aws-ec2-vpcblockpublicaccessoptions.d.ts +13 -0
  101. package/lib/types/cfn-resource-types/aws-ec2-vpcblockpublicaccessoptions.js +3 -0
  102. package/lib/types/cfn-resource-types/aws-ecr-repositorycreationtemplate.d.ts +2 -2
  103. package/lib/types/cfn-resource-types/aws-ecr-repositorycreationtemplate.js +1 -1
  104. package/lib/types/cfn-resource-types/aws-ecs-service.d.ts +9 -2
  105. package/lib/types/cfn-resource-types/aws-ecs-service.js +1 -1
  106. package/lib/types/cfn-resource-types/aws-ecs-taskdefinition.d.ts +24 -14
  107. package/lib/types/cfn-resource-types/aws-ecs-taskdefinition.js +1 -1
  108. package/lib/types/cfn-resource-types/aws-efs-filesystem.d.ts +3 -0
  109. package/lib/types/cfn-resource-types/aws-efs-filesystem.js +1 -1
  110. package/lib/types/cfn-resource-types/aws-eks-cluster.d.ts +165 -87
  111. package/lib/types/cfn-resource-types/aws-eks-cluster.js +1 -1
  112. package/lib/types/cfn-resource-types/aws-eks-nodegroup.d.ts +10 -0
  113. package/lib/types/cfn-resource-types/aws-eks-nodegroup.js +1 -1
  114. package/lib/types/cfn-resource-types/aws-elasticache-user.d.ts +2 -2
  115. package/lib/types/cfn-resource-types/aws-elasticache-user.js +1 -1
  116. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listener.d.ts +3 -3
  117. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listener.js +1 -1
  118. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listenerrule.d.ts +1 -1
  119. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listenerrule.js +1 -1
  120. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-loadbalancer.d.ts +19 -11
  121. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-loadbalancer.js +1 -1
  122. package/lib/types/cfn-resource-types/aws-fis-experimenttemplate.d.ts +97 -80
  123. package/lib/types/cfn-resource-types/aws-fis-experimenttemplate.js +1 -1
  124. package/lib/types/cfn-resource-types/aws-gamelift-containerfleet.d.ts +277 -0
  125. package/lib/types/cfn-resource-types/aws-gamelift-containerfleet.js +3 -0
  126. package/lib/types/cfn-resource-types/aws-gamelift-containergroupdefinition.d.ts +243 -15
  127. package/lib/types/cfn-resource-types/aws-gamelift-containergroupdefinition.js +1 -1
  128. package/lib/types/cfn-resource-types/aws-iot-domainconfiguration.d.ts +2 -0
  129. package/lib/types/cfn-resource-types/aws-iot-domainconfiguration.js +1 -1
  130. package/lib/types/cfn-resource-types/aws-iot-thingtype.d.ts +8 -0
  131. package/lib/types/cfn-resource-types/aws-iot-thingtype.js +1 -1
  132. package/lib/types/cfn-resource-types/aws-iotfleetwise-campaign.d.ts +38 -2
  133. package/lib/types/cfn-resource-types/aws-iotfleetwise-campaign.js +1 -1
  134. package/lib/types/cfn-resource-types/aws-iotfleetwise-decodermanifest.d.ts +61 -42
  135. package/lib/types/cfn-resource-types/aws-iotfleetwise-decodermanifest.js +1 -1
  136. package/lib/types/cfn-resource-types/aws-iotfleetwise-statetemplate.d.ts +35 -0
  137. package/lib/types/cfn-resource-types/aws-iotfleetwise-statetemplate.js +3 -0
  138. package/lib/types/cfn-resource-types/aws-iotsitewise-portal.d.ts +24 -0
  139. package/lib/types/cfn-resource-types/aws-iotsitewise-portal.js +1 -1
  140. package/lib/types/cfn-resource-types/aws-ivs-ingestconfiguration.d.ts +51 -0
  141. package/lib/types/cfn-resource-types/aws-ivs-ingestconfiguration.js +3 -0
  142. package/lib/types/cfn-resource-types/aws-kinesisfirehose-deliverystream.d.ts +44 -6
  143. package/lib/types/cfn-resource-types/aws-kinesisfirehose-deliverystream.js +1 -1
  144. package/lib/types/cfn-resource-types/aws-lambda-eventsourcemapping.d.ts +134 -113
  145. package/lib/types/cfn-resource-types/aws-lambda-eventsourcemapping.js +1 -1
  146. package/lib/types/cfn-resource-types/aws-lambda-permission.d.ts +1 -1
  147. package/lib/types/cfn-resource-types/aws-lambda-permission.js +1 -1
  148. package/lib/types/cfn-resource-types/aws-m2-deployment.d.ts +25 -0
  149. package/lib/types/cfn-resource-types/aws-m2-deployment.js +3 -0
  150. package/lib/types/cfn-resource-types/aws-opensearchserverless-securityconfig.d.ts +35 -1
  151. package/lib/types/cfn-resource-types/aws-opensearchserverless-securityconfig.js +1 -1
  152. package/lib/types/cfn-resource-types/aws-organizations-policy.d.ts +2 -2
  153. package/lib/types/cfn-resource-types/aws-organizations-policy.js +1 -1
  154. package/lib/types/cfn-resource-types/aws-rbin-rule.d.ts +101 -0
  155. package/lib/types/cfn-resource-types/aws-rbin-rule.js +3 -0
  156. package/lib/types/cfn-resource-types/aws-rds-globalcluster.d.ts +7 -0
  157. package/lib/types/cfn-resource-types/aws-rds-globalcluster.js +1 -1
  158. package/lib/types/cfn-resource-types/aws-resourcegroups-tagsynctask.d.ts +37 -0
  159. package/lib/types/cfn-resource-types/aws-resourcegroups-tagsynctask.js +3 -0
  160. package/lib/types/cfn-resource-types/aws-route53resolver-firewallrulegroup.d.ts +13 -1
  161. package/lib/types/cfn-resource-types/aws-route53resolver-firewallrulegroup.js +1 -1
  162. package/lib/types/cfn-resource-types/aws-s3express-directorybucket.d.ts +31 -0
  163. package/lib/types/cfn-resource-types/aws-s3express-directorybucket.js +1 -1
  164. package/lib/types/cfn-resource-types/aws-sagemaker-cluster.d.ts +1 -0
  165. package/lib/types/cfn-resource-types/aws-sagemaker-cluster.js +1 -1
  166. package/lib/types/cfn-resource-types/aws-sagemaker-domain.d.ts +1 -1
  167. package/lib/types/cfn-resource-types/aws-sagemaker-domain.js +1 -1
  168. package/lib/types/cfn-resource-types/aws-sagemaker-inferencecomponent.d.ts +8 -3
  169. package/lib/types/cfn-resource-types/aws-sagemaker-inferencecomponent.js +1 -1
  170. package/lib/types/cfn-resource-types/aws-sagemaker-userprofile.d.ts +1 -1
  171. package/lib/types/cfn-resource-types/aws-sagemaker-userprofile.js +1 -1
  172. package/lib/types/cfn-resource-types/aws-synthetics-canary.d.ts +4 -0
  173. package/lib/types/cfn-resource-types/aws-synthetics-canary.js +1 -1
  174. package/lib/types/cfn-resource-types/aws-vpclattice-accesslogsubscription.d.ts +1 -0
  175. package/lib/types/cfn-resource-types/aws-vpclattice-accesslogsubscription.js +1 -1
  176. package/lib/types/cfn-resource-types/aws-vpclattice-servicenetwork.d.ts +4 -0
  177. package/lib/types/cfn-resource-types/aws-vpclattice-servicenetwork.js +1 -1
  178. package/lib/types/cfn-resource-types/aws-wisdom-knowledgebase.d.ts +73 -6
  179. package/lib/types/cfn-resource-types/aws-wisdom-knowledgebase.js +1 -1
  180. package/lib/types/cfn-resource-types/aws-wisdom-messagetemplate.d.ts +449 -0
  181. package/lib/types/cfn-resource-types/aws-wisdom-messagetemplate.js +3 -0
  182. package/lib/types/cfn-resource-types/aws-wisdom-messagetemplateversion.d.ts +21 -0
  183. package/lib/types/cfn-resource-types/aws-wisdom-messagetemplateversion.js +3 -0
  184. package/lib/types/cfn-resource-types/aws-workspacesweb-dataprotectionsettings.d.ts +74 -0
  185. package/lib/types/cfn-resource-types/aws-workspacesweb-dataprotectionsettings.js +3 -0
  186. package/lib/types/cfn-resource-types/aws-workspacesweb-portal.d.ts +1 -0
  187. package/lib/types/cfn-resource-types/aws-workspacesweb-portal.js +1 -1
  188. package/lib/types/cfn-resource-types.d.ts +44 -6
  189. package/lib/types/cfn-resource-types.js +72 -34
  190. package/package.json +1 -1
  191. package/lib/types/cfn-resource-types/aws-quicksight-analysis.d.ts +0 -3865
  192. package/lib/types/cfn-resource-types/aws-quicksight-analysis.js +0 -3
  193. package/lib/types/cfn-resource-types/aws-quicksight-dashboard.d.ts +0 -3988
  194. package/lib/types/cfn-resource-types/aws-quicksight-dashboard.js +0 -3
  195. package/lib/types/cfn-resource-types/aws-quicksight-template.d.ts +0 -3875
  196. package/lib/types/cfn-resource-types/aws-quicksight-template.js +0 -3
package/README.md CHANGED
@@ -20,21 +20,18 @@
20
20
 
21
21
  ![type-hinting-1](./docs/type-hinting-1.png)
22
22
 
23
- - You can use by just wrapping AWS CDK's `Template` class.
23
+ <!-- - You can use by just wrapping AWS CDK's `Template` class. -->
24
24
  - You can use all methods implemented by AWS CDK's `Template` class with proper type definitions.
25
25
  - Return values of some methods - e.g. `findResources` - are changed from original ones, so that succeeding processes can handle and access them more easily.
26
26
  - You can still use AWS CDK's `Matcher` class and other arbitrary objects too.
27
27
 
28
28
  ```js
29
29
  import { Stack } from "aws-cdk-lib";
30
- import { Template } from "aws-cdk-lib/assertions";
31
-
32
30
  import { TypedTemplate } from "@horietakehiro/aws-cdk-utul/lib/assertions";
33
31
  import { AWS_EC2_SUBNET, AWS_EC2_VPC } from "@horietakehiro/aws-cdk-utul/lib/types/cfn-resource-types";
34
32
  const stack = new Stack()
35
33
 
36
- // just wrap an original `Template` instance of aws-cdk-lib/assertions
37
- const template = new TypedTemplate(Template.fromStack(stack))
34
+ const template = TypedTemplate.fromStack(stack)
38
35
  // you can execute all method implemented in original `Template` instance
39
36
  template.hasResource(AWS_EC2_VPC({Properties: {
40
37
  CidrBlock: "10.0.0.0/16"
@@ -1,5 +1,5 @@
1
1
  import { Template, Match, Matcher } from "aws-cdk-lib/assertions";
2
- import { Condition, InputResource, Mapping, OutputResource, InputParamter, OutputParameter, ReturnValue, InputOutput, OutputOutput } from "./typed-resource";
2
+ import { Condition, InputResource, Mapping, OutputResource, InputParamter, OutputParameter, ReturnValue, InputOutput, OutputOutput, InputResourceWithoutType } from "./typed-resource";
3
3
  /**
4
4
  * almost same class as `Template` class at "aws-cdk-lib/assertions", but you can use this with proper type definitions
5
5
  */
@@ -26,10 +26,10 @@ export declare class TypedTemplate {
26
26
  static fromString(...args: Parameters<typeof Template.fromString>): TypedTemplate;
27
27
  /**
28
28
  * same function as `Template.resourceCountIs`
29
- * @param r
29
+ * @param type
30
30
  * @param count
31
31
  */
32
- resourceCountIs<T>(r: InputResource<T>, count: number): void;
32
+ resourceCountIs<T>(type: (resource?: InputResourceWithoutType<T>) => InputResource<T>, count: number): void;
33
33
  /**
34
34
  * same function as `Template.resourcePropertiesCountIs`
35
35
  * @param r
package/lib/assertions.js CHANGED
@@ -35,11 +35,11 @@ class TypedTemplate {
35
35
  }
36
36
  /**
37
37
  * same function as `Template.resourceCountIs`
38
- * @param r
38
+ * @param type
39
39
  * @param count
40
40
  */
41
- resourceCountIs(r, count) {
42
- this.template.resourceCountIs(r.Type, count);
41
+ resourceCountIs(type, count) {
42
+ this.template.resourceCountIs(type().Type, count);
43
43
  }
44
44
  /**
45
45
  * same function as `Template.resourcePropertiesCountIs`
@@ -201,4 +201,4 @@ class ExtraMatch extends assertions_1.Match {
201
201
  }
202
202
  }
203
203
  exports.ExtraMatch = ExtraMatch;
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFzc2VydGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBSWdDO0FBYWhDOztHQUVHO0FBQ0gsTUFBYSxhQUFhO0lBRXhCLFlBQW9CLFFBQWtCO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FDZCxHQUFHLElBQTJDO1FBRTlDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FDYixHQUFHLElBQTBDO1FBRTdDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixHQUFHLElBQTRDO1FBRS9DLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFJLENBQW1CLEVBQUUsS0FBYTtRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gseUJBQXlCLENBQUksQ0FBbUIsRUFBRSxLQUFhO1FBQzdELElBQUksQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDRDs7O09BR0c7SUFDSCxx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QUMsU0FBaUIsRUFBRSxTQUFpQjtRQUNoRCxPQUFPLGtCQUFLLENBQUMsWUFBWSxDQUFDLEVBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBaUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUExQkQsZ0NBMEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVGVtcGxhdGUsXG4gIE1hdGNoLFxuICBNYXRjaGVyLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXNzZXJ0aW9uc1wiO1xuaW1wb3J0IHtcbiAgQ29uZGl0aW9uLFxuICBJbnB1dFJlc291cmNlLFxuICBNYXBwaW5nLFxuICBPdXRwdXRSZXNvdXJjZSxcbiAgSW5wdXRQYXJhbXRlcixcbiAgT3V0cHV0UGFyYW1ldGVyLFxuICBSZXR1cm5WYWx1ZSxcbiAgSW5wdXRPdXRwdXQsXG4gIE91dHB1dE91dHB1dCxcbn0gZnJvbSBcIi4vdHlwZWQtcmVzb3VyY2VcIjtcblxuLyoqXG4gKiBhbG1vc3Qgc2FtZSBjbGFzcyBhcyBgVGVtcGxhdGVgIGNsYXNzIGF0IFwiYXdzLWNkay1saWIvYXNzZXJ0aW9uc1wiLCBidXQgeW91IGNhbiB1c2UgdGhpcyB3aXRoIHByb3BlciB0eXBlIGRlZmluaXRpb25zXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlZFRlbXBsYXRlIHtcbiAgdGVtcGxhdGU6IFRlbXBsYXRlO1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKHRlbXBsYXRlOiBUZW1wbGF0ZSkge1xuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5mcm9tU3RhY2tgIGJ1dCByZXR1cm5zIGBUeXBlZFRlbXBsYXRlYFxuICAgKiBAcGFyYW0gYXJncyBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBzdGF0aWMgZnJvbVN0YWNrKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIFRlbXBsYXRlLmZyb21TdGFjaz5cbiAgKTogVHlwZWRUZW1wbGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlZFRlbXBsYXRlKFRlbXBsYXRlLmZyb21TdGFjayguLi5hcmdzKSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmZyb21KU09OYCBidXQgcmV0dXJucyBgVHlwZWRUZW1wbGF0ZWBcbiAgICogQHBhcmFtIGFyZ3MgXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgc3RhdGljIGZyb21KU09OKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIFRlbXBsYXRlLmZyb21KU09OPlxuICApOiBUeXBlZFRlbXBsYXRlIHtcbiAgICByZXR1cm4gbmV3IFR5cGVkVGVtcGxhdGUoVGVtcGxhdGUuZnJvbUpTT04oLi4uYXJncykpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5mcm9tU3RyaW5nYCBidXQgcmV0dXJucyBgVHlwZWRUZW1wbGF0ZWBcbiAgICogQHBhcmFtIGFyZ3MgXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgc3RhdGljIGZyb21TdHJpbmcoXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgVGVtcGxhdGUuZnJvbVN0cmluZz5cbiAgKTogVHlwZWRUZW1wbGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlZFRlbXBsYXRlKFRlbXBsYXRlLmZyb21TdHJpbmcoLi4uYXJncykpO1xuICB9XG5cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLnJlc291cmNlQ291bnRJc2BcbiAgICogQHBhcmFtIHIgXG4gICAqIEBwYXJhbSBjb3VudCBcbiAgICovXG4gIHJlc291cmNlQ291bnRJczxUPihyOiBJbnB1dFJlc291cmNlPFQ+LCBjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoci5UeXBlLCBjb3VudCk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLnJlc291cmNlUHJvcGVydGllc0NvdW50SXNgXG4gICAqIEBwYXJhbSByIFxuICAgKiBAcGFyYW0gY291bnQgXG4gICAqL1xuICByZXNvdXJjZVByb3BlcnRpZXNDb3VudElzPFQ+KHI6IElucHV0UmVzb3VyY2U8VD4sIGNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLnJlc291cmNlUHJvcGVydGllc0NvdW50SXMoci5UeXBlLCByLlByb3BlcnRpZXMsIGNvdW50KTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzYFxuICAgKiBAcGFyYW0gciBcbiAgICovXG4gIGhhc1Jlc291cmNlUHJvcGVydGllczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoci5UeXBlLCByLlByb3BlcnRpZXMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNSZXNvdXJjZWBcbiAgICogQHBhcmFtIHIgXG4gICAqL1xuICBoYXNSZXNvdXJjZTxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNSZXNvdXJjZShyLlR5cGUsIHIpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kUmVzb3VyY2VzYFxuICAgKiBAcGFyYW0gciBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBmaW5kUmVzb3VyY2VzPFQ+KHI6IElucHV0UmVzb3VyY2U8VD4pOiBSZXR1cm5WYWx1ZTxPdXRwdXRSZXNvdXJjZTxUPj5bXSB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy50ZW1wbGF0ZS5maW5kUmVzb3VyY2VzKHIuVHlwZSwgcikgYXMge1xuICAgICAgW2lkIGluIHN0cmluZ106IE91dHB1dFJlc291cmNlPFQ+O1xuICAgIH07XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc291cmNlcykubWFwKChbaWQsIHJlc291cmNlXSkgPT4ge1xuICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkZWY6IHJlc291cmNlIH07XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmFsbFJlc291cmNlc2BcbiAgICogQHBhcmFtIHIgXG4gICAqL1xuICBhbGxSZXNvdXJjZXM8VD4ocjogSW5wdXRSZXNvdXJjZTxUPik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuYWxsUmVzb3VyY2VzKHIuVHlwZSwgcik7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmFsbFJlc291cmNlUHJvcGVydGllc2BcbiAgICogQHBhcmFtIHIgXG4gICAqL1xuICBhbGxSZXNvdXJjZXNQcm9wZXJ0aWVzPFQ+KHI6IElucHV0UmVzb3VyY2U8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmFsbFJlc291cmNlc1Byb3BlcnRpZXMoci5UeXBlLCByLlByb3BlcnRpZXMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNQYXJhbWV0ZXJgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWQgXG4gICAqIEBwYXJhbSBwcm9wcyBcbiAgICovXG4gIGhhc1BhcmFtZXRlcihsb2dpY2FsSWQ6IHN0cmluZywgcHJvcHM6IElucHV0UGFyYW10ZXIpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmhhc1BhcmFtZXRlcihsb2dpY2FsSWQsIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZmluZFBhcmFtZXRlcnNgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWQgXG4gICAqIEBwYXJhbSBwcm9wcyBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBmaW5kUGFyYW1ldGVycyhcbiAgICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IElucHV0UGFyYW10ZXJcbiAgKTogUmV0dXJuVmFsdWU8T3V0cHV0UGFyYW1ldGVyPltdIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0gdGhpcy50ZW1wbGF0ZS5maW5kUGFyYW1ldGVycyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocGFyYW1ldGVycykubWFwKChbaWQsIHBhcmFtZXRlcl0pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiBwYXJhbWV0ZXIgYXMgT3V0cHV0UGFyYW1ldGVyIH07XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc091dHB1dGBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZCBcbiAgICogQHBhcmFtIHByb3BzIFxuICAgKi9cbiAgaGFzT3V0cHV0KGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogSW5wdXRPdXRwdXQpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmhhc091dHB1dChsb2dpY2FsSWQsIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZmluZE91dHB1dHNgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWQgXG4gICAqIEBwYXJhbSBwcm9wcyBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBmaW5kT3V0cHV0cyhcbiAgICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IElucHV0T3V0cHV0XG4gICk6IFJldHVyblZhbHVlPE91dHB1dE91dHB1dD5bXSB7XG4gICAgY29uc3Qgb3V0cHV0cyA9IHRoaXMudGVtcGxhdGUuZmluZE91dHB1dHMobG9naWNhbElkLCBwcm9wcyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG91dHB1dHMpLm1hcCgoW2lkLCBvdXRwdXRdKSA9PiB7XG4gICAgICByZXR1cm4geyBpZDogaWQsIGRlZjogb3V0cHV0IGFzIE91dHB1dE91dHB1dCB9O1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNNYXBwaW5nYFxuICAgKiBAcGFyYW0gbG9naWNhbElkIFxuICAgKiBAcGFyYW0gcHJvcHMgXG4gICAqL1xuICBoYXNNYXBwaW5nKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogYW55KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNNYXBwaW5nKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kTWFwcGluZ3NgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWQgXG4gICAqIEBwYXJhbSBwcm9wcyBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBmaW5kTWFwcGluZ3MobG9naWNhbElkOiBzdHJpbmcsIHByb3BzPzogYW55KTogUmV0dXJuVmFsdWU8TWFwcGluZz5bXSB7XG4gICAgY29uc3QgbWFwcGluZ3MgPSB0aGlzLnRlbXBsYXRlLmZpbmRNYXBwaW5ncyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMobWFwcGluZ3MpLm1hcCgoW2lkLCBtYXBwaW5nXSkgPT4ge1xuICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkZWY6IG1hcHBpbmcgfTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzQ29uZGl0aW9uYFxuICAgKiBAcGFyYW0gbG9naWNhbElkIFxuICAgKiBAcGFyYW0gcHJvcHMgXG4gICAqL1xuICBoYXNDb25kaXRpb24obG9naWNhbElkOiBzdHJpbmcsIHByb3BzOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmhhc0NvbmRpdGlvbihsb2dpY2FsSWQsIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZmluZENvbmRpdGlvbnNgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWQgXG4gICAqIEBwYXJhbSBwcm9wcyBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBmaW5kQ29uZGl0aW9ucyhsb2dpY2FsSWQ6IHN0cmluZywgcHJvcHM/OiBhbnkpOiBSZXR1cm5WYWx1ZTxDb25kaXRpb24+W10ge1xuICAgIGNvbnN0IGNvbmRpdGlvbnMgPSB0aGlzLnRlbXBsYXRlLmZpbmRDb25kaXRpb25zKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhjb25kaXRpb25zKS5tYXAoKFtpZCwgY29uZGl0aW9uXSkgPT4ge1xuICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkZWY6IGNvbmRpdGlvbiB9O1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogcHJvdmlkZXMgc29tZSBzeW50YXggc3VnYXJzIGZvciBgTWF0Y2hgIGNsYXNzIGF0IGBhd3MtY2RrLWxpYi9hc3NlcnRpb25zYFxuICovXG5leHBvcnQgY2xhc3MgRXh0cmFNYXRjaCBleHRlbmRzIE1hdGNoIHtcbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYE1hdGNoLm9iamVjdEVxdWFscyh7IFJlZjogbG9naWNhbElkIH0pYFxuICAgKiBAcGFyYW0gbG9naWNhbElkIFxuICAgKiBAcmV0dXJucyBcbiAgICovXG4gIHN0YXRpYyByZWYobG9naWNhbElkOiBzdHJpbmcpOiBNYXRjaGVyIHtcbiAgICByZXR1cm4gTWF0Y2gub2JqZWN0RXF1YWxzKHsgUmVmOiBsb2dpY2FsSWQgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYE1hdGNoLm9iamVjdEVxdWFscyh7XCJGbjo6R2V0QXR0XCI6IFtsb2dpY2FsSWQsIGF0dHJpYnV0ZV19KWBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZCBcbiAgICogQHBhcmFtIGF0dHJpYnV0ZSBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBzdGF0aWMgZ2V0QXR0KGxvZ2ljYWxJZDogc3RyaW5nLCBhdHRyaWJ1dGU6IHN0cmluZyk6IE1hdGNoZXIge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RFcXVhbHMoe1wiRm46OkdldEF0dFwiOiBbbG9naWNhbElkLCBhdHRyaWJ1dGVdfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYE1hdGNoLm9iamVjdEVxdWFscyh7XCJGbjo6R2V0QXR0XCI6IFtsb2dpY2FsSWQsIFwiQXJuXCJdfSlgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWQgXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgc3RhdGljIGdldEF0dEFybihsb2dpY2FsSWQ6IHN0cmluZyk6IE1hdGNoZXIge1xuICAgIHJldHVybiB0aGlzLmdldEF0dChsb2dpY2FsSWQsIFwiQXJuXCIpO1xuICB9XG59XG4iXX0=
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFzc2VydGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQWtFO0FBY2xFOztHQUVHO0FBQ0gsTUFBYSxhQUFhO0lBRXhCLFlBQW9CLFFBQWtCO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FDZCxHQUFHLElBQTJDO1FBRTlDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FDYixHQUFHLElBQTBDO1FBRTdDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixHQUFHLElBQTRDO1FBRS9DLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUNiLElBQWtFLEVBQ2xFLEtBQWE7UUFFYixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCx5QkFBeUIsQ0FBSSxDQUFtQixFQUFFLEtBQWE7UUFDN0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNEOzs7T0FHRztJ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QU0sQ0FBQyxTQUFpQixFQUFFLFNBQWlCO1FBQ2hELE9BQU8sa0JBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFpQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQTFCRCxnQ0EwQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZSwgTWF0Y2gsIE1hdGNoZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXNzZXJ0aW9uc1wiO1xuaW1wb3J0IHtcbiAgQ29uZGl0aW9uLFxuICBJbnB1dFJlc291cmNlLFxuICBNYXBwaW5nLFxuICBPdXRwdXRSZXNvdXJjZSxcbiAgSW5wdXRQYXJhbXRlcixcbiAgT3V0cHV0UGFyYW1ldGVyLFxuICBSZXR1cm5WYWx1ZSxcbiAgSW5wdXRPdXRwdXQsXG4gIE91dHB1dE91dHB1dCxcbiAgSW5wdXRSZXNvdXJjZVdpdGhvdXRUeXBlLFxufSBmcm9tIFwiLi90eXBlZC1yZXNvdXJjZVwiO1xuXG4vKipcbiAqIGFsbW9zdCBzYW1lIGNsYXNzIGFzIGBUZW1wbGF0ZWAgY2xhc3MgYXQgXCJhd3MtY2RrLWxpYi9hc3NlcnRpb25zXCIsIGJ1dCB5b3UgY2FuIHVzZSB0aGlzIHdpdGggcHJvcGVyIHR5cGUgZGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVkVGVtcGxhdGUge1xuICB0ZW1wbGF0ZTogVGVtcGxhdGU7XG4gIHByaXZhdGUgY29uc3RydWN0b3IodGVtcGxhdGU6IFRlbXBsYXRlKSB7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmZyb21TdGFja2AgYnV0IHJldHVybnMgYFR5cGVkVGVtcGxhdGVgXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgZnJvbVN0YWNrKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIFRlbXBsYXRlLmZyb21TdGFjaz5cbiAgKTogVHlwZWRUZW1wbGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlZFRlbXBsYXRlKFRlbXBsYXRlLmZyb21TdGFjayguLi5hcmdzKSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmZyb21KU09OYCBidXQgcmV0dXJucyBgVHlwZWRUZW1wbGF0ZWBcbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBmcm9tSlNPTihcbiAgICAuLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBUZW1wbGF0ZS5mcm9tSlNPTj5cbiAgKTogVHlwZWRUZW1wbGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlZFRlbXBsYXRlKFRlbXBsYXRlLmZyb21KU09OKC4uLmFyZ3MpKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZnJvbVN0cmluZ2AgYnV0IHJldHVybnMgYFR5cGVkVGVtcGxhdGVgXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgZnJvbVN0cmluZyhcbiAgICAuLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBUZW1wbGF0ZS5mcm9tU3RyaW5nPlxuICApOiBUeXBlZFRlbXBsYXRlIHtcbiAgICByZXR1cm4gbmV3IFR5cGVkVGVtcGxhdGUoVGVtcGxhdGUuZnJvbVN0cmluZyguLi5hcmdzKSk7XG4gIH1cblxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUucmVzb3VyY2VDb3VudElzYFxuICAgKiBAcGFyYW0gdHlwZSBcbiAgICogQHBhcmFtIGNvdW50IFxuICAgKi9cbiAgcmVzb3VyY2VDb3VudElzPFQ+KFxuICAgIHR5cGU6IChyZXNvdXJjZT86IElucHV0UmVzb3VyY2VXaXRob3V0VHlwZTxUPikgPT4gSW5wdXRSZXNvdXJjZTxUPixcbiAgICBjb3VudDogbnVtYmVyXG4gICk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUucmVzb3VyY2VDb3VudElzKHR5cGUoKS5UeXBlLCBjb3VudCk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLnJlc291cmNlUHJvcGVydGllc0NvdW50SXNgXG4gICAqIEBwYXJhbSByXG4gICAqIEBwYXJhbSBjb3VudFxuICAgKi9cbiAgcmVzb3VyY2VQcm9wZXJ0aWVzQ291bnRJczxUPihyOiBJbnB1dFJlc291cmNlPFQ+LCBjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5yZXNvdXJjZVByb3BlcnRpZXNDb3VudElzKHIuVHlwZSwgci5Qcm9wZXJ0aWVzLCBjb3VudCk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllc2BcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGhhc1Jlc291cmNlUHJvcGVydGllczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoci5UeXBlLCByLlByb3BlcnRpZXMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNSZXNvdXJjZWBcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGhhc1Jlc291cmNlPFQ+KHI6IElucHV0UmVzb3VyY2U8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmhhc1Jlc291cmNlKHIuVHlwZSwgcik7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmZpbmRSZXNvdXJjZXNgXG4gICAqIEBwYXJhbSByXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kUmVzb3VyY2VzPFQ+KHI6IElucHV0UmVzb3VyY2U8VD4pOiBSZXR1cm5WYWx1ZTxPdXRwdXRSZXNvdXJjZTxUPj5bXSB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy50ZW1wbGF0ZS5maW5kUmVzb3VyY2VzKHIuVHlwZSwgcikgYXMge1xuICAgICAgW2lkIGluIHN0cmluZ106IE91dHB1dFJlc291cmNlPFQ+O1xuICAgIH07XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc291cmNlcykubWFwKChbaWQsIHJlc291cmNlXSkgPT4ge1xuICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkZWY6IHJlc291cmNlIH07XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmFsbFJlc291cmNlc2BcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGFsbFJlc291cmNlczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5hbGxSZXNvdXJjZXMoci5UeXBlLCByKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuYWxsUmVzb3VyY2VQcm9wZXJ0aWVzYFxuICAgKiBAcGFyYW0gclxuICAgKi9cbiAgYWxsUmVzb3VyY2VzUHJvcGVydGllczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5hbGxSZXNvdXJjZXNQcm9wZXJ0aWVzKHIuVHlwZSwgci5Qcm9wZXJ0aWVzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzUGFyYW1ldGVyYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzUGFyYW1ldGVyKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogSW5wdXRQYXJhbXRlcik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzUGFyYW1ldGVyKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kUGFyYW1ldGVyc2BcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbmRQYXJhbWV0ZXJzKFxuICAgIGxvZ2ljYWxJZDogc3RyaW5nLFxuICAgIHByb3BzPzogSW5wdXRQYXJhbXRlclxuICApOiBSZXR1cm5WYWx1ZTxPdXRwdXRQYXJhbWV0ZXI+W10ge1xuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB0aGlzLnRlbXBsYXRlLmZpbmRQYXJhbWV0ZXJzKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhwYXJhbWV0ZXJzKS5tYXAoKFtpZCwgcGFyYW1ldGVyXSkgPT4ge1xuICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkZWY6IHBhcmFtZXRlciBhcyBPdXRwdXRQYXJhbWV0ZXIgfTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzT3V0cHV0YFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzT3V0cHV0KGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogSW5wdXRPdXRwdXQpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmhhc091dHB1dChsb2dpY2FsSWQsIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZmluZE91dHB1dHNgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kT3V0cHV0cyhcbiAgICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IElucHV0T3V0cHV0XG4gICk6IFJldHVyblZhbHVlPE91dHB1dE91dHB1dD5bXSB7XG4gICAgY29uc3Qgb3V0cHV0cyA9IHRoaXMudGVtcGxhdGUuZmluZE91dHB1dHMobG9naWNhbElkLCBwcm9wcyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG91dHB1dHMpLm1hcCgoW2lkLCBvdXRwdXRdKSA9PiB7XG4gICAgICByZXR1cm4geyBpZDogaWQsIGRlZjogb3V0cHV0IGFzIE91dHB1dE91dHB1dCB9O1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNNYXBwaW5nYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzTWFwcGluZyhsb2dpY2FsSWQ6IHN0cmluZywgcHJvcHM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzTWFwcGluZyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZmluZE1hcHBpbmdzYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZmluZE1hcHBpbmdzKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wcz86IGFueSk6IFJldHVyblZhbHVlPE1hcHBpbmc+W10ge1xuICAgIGNvbnN0IG1hcHBpbmdzID0gdGhpcy50ZW1wbGF0ZS5maW5kTWFwcGluZ3MobG9naWNhbElkLCBwcm9wcyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG1hcHBpbmdzKS5tYXAoKFtpZCwgbWFwcGluZ10pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiBtYXBwaW5nIH07XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc0NvbmRpdGlvbmBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICovXG4gIGhhc0NvbmRpdGlvbihsb2dpY2FsSWQ6IHN0cmluZywgcHJvcHM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzQ29uZGl0aW9uKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kQ29uZGl0aW9uc2BcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbmRDb25kaXRpb25zKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wcz86IGFueSk6IFJldHVyblZhbHVlPENvbmRpdGlvbj5bXSB7XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IHRoaXMudGVtcGxhdGUuZmluZENvbmRpdGlvbnMobG9naWNhbElkLCBwcm9wcyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNvbmRpdGlvbnMpLm1hcCgoW2lkLCBjb25kaXRpb25dKSA9PiB7XG4gICAgICByZXR1cm4geyBpZDogaWQsIGRlZjogY29uZGl0aW9uIH07XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBwcm92aWRlcyBzb21lIHN5bnRheCBzdWdhcnMgZm9yIGBNYXRjaGAgY2xhc3MgYXQgYGF3cy1jZGstbGliL2Fzc2VydGlvbnNgXG4gKi9cbmV4cG9ydCBjbGFzcyBFeHRyYU1hdGNoIGV4dGVuZHMgTWF0Y2gge1xuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgTWF0Y2gub2JqZWN0RXF1YWxzKHsgUmVmOiBsb2dpY2FsSWQgfSlgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyByZWYobG9naWNhbElkOiBzdHJpbmcpOiBNYXRjaGVyIHtcbiAgICByZXR1cm4gTWF0Y2gub2JqZWN0RXF1YWxzKHsgUmVmOiBsb2dpY2FsSWQgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYE1hdGNoLm9iamVjdEVxdWFscyh7XCJGbjo6R2V0QXR0XCI6IFtsb2dpY2FsSWQsIGF0dHJpYnV0ZV19KWBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gYXR0cmlidXRlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgZ2V0QXR0KGxvZ2ljYWxJZDogc3RyaW5nLCBhdHRyaWJ1dGU6IHN0cmluZyk6IE1hdGNoZXIge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RFcXVhbHMoeyBcIkZuOjpHZXRBdHRcIjogW2xvZ2ljYWxJZCwgYXR0cmlidXRlXSB9KTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgTWF0Y2gub2JqZWN0RXF1YWxzKHtcIkZuOjpHZXRBdHRcIjogW2xvZ2ljYWxJZCwgXCJBcm5cIl19KWBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGdldEF0dEFybihsb2dpY2FsSWQ6IHN0cmluZyk6IE1hdGNoZXIge1xuICAgIHJldHVybiB0aGlzLmdldEF0dChsb2dpY2FsSWQsIFwiQXJuXCIpO1xuICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { Matcher } from "aws-cdk-lib/assertions";
2
- type Primitives = string | number | boolean | undefined | null | symbol | bigint;
2
+ type Primitives = string | number | boolean | undefined | null | symbol | bigint | string[] | number[] | boolean[] | bigint[];
3
3
  /**
4
4
  * make properties of `T` asignable Matcher recirsively and other arbitrary json objects for primitive type fields
5
5
  */
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWQtcmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlZC1yZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0Y2hlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hc3NlcnRpb25zXCI7XG5cbnR5cGUgUHJpbWl0aXZlcyA9XG4gIHwgc3RyaW5nXG4gIHwgbnVtYmVyXG4gIHwgYm9vbGVhblxuICB8IHVuZGVmaW5lZFxuICB8IG51bGxcbiAgfCBzeW1ib2xcbiAgfCBiaWdpbnQ7XG4vKipcbiAqIG1ha2UgcHJvcGVydGllcyBvZiBgVGAgYXNpZ25hYmxlIE1hdGNoZXIgcmVjaXJzaXZlbHkgYW5kIG90aGVyIGFyYml0cmFyeSBqc29uIG9iamVjdHMgZm9yIHByaW1pdGl2ZSB0eXBlIGZpZWxkc1xuICovXG50eXBlIEFsc29NYXRjaGFibGU8VD4gPSB7XG4gIFtwIGluIGtleW9mIFRdPzogVFtwXSBleHRlbmRzIFByaW1pdGl2ZXNcbiAgICA/IFRbcF0gfCBNYXRjaGVyIHwgeyBba2V5IGluIHN0cmluZ106IGFueSB9XG4gICAgOiBBbHNvTWF0Y2hhYmxlPFRbcF0+IHwgTWF0Y2hlcjtcbn07XG4vKipcbiAqIG1ha2UgcHJvcGVydGllcyBvZiBgVGAgYXNpZ25hYmxlIGFyYml0cmFyeSBqc29uIG9iamVjdHNcbiAqL1xudHlwZSBBbHNvQW55PFQ+ID0ge1xuICBbcCBpbiBrZXlvZiBUXTogVFtwXSBleHRlbmRzIFByaW1pdGl2ZXNcbiAgICA/IFRbcF0gfCB7IFtrZXkgaW4gc3RyaW5nXTogYW55IH1cbiAgICA6IEFsc29Bbnk8VFtwXT47XG59O1xuXG4vKipcbiAqIENsb3VkRm9ybWF0aW9uIFJlc291cmNlIGJhc2VkIG9uIHRoZSBkZWZpbml0aW9uIGF0IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9qYV9qcC9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9kdWN0LWF0dHJpYnV0ZS1yZWZlcmVuY2UuaHRtbFxuICovXG5pbnRlcmZhY2UgQmFzZVJlc291cmNlIHtcbiAgQ3JlYXRpb25Qb2xpY3k/OiBhbnk7XG4gIERlbGV0aW9uUG9saWN5PzogXCJEZWxldGVcIiB8IFwiUmV0YWluXCIgfCBcIlJldGFpbkV4Y2VwdE9uQ3JlYXRlXCIgfCBcIlNuYXBzaG90XCI7XG4gIERlcGVuZHNPbj86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBNZXRhZGF0YT86IGFueTtcbiAgVXBkYXRlUG9saWN5PzogYW55O1xuICBVcGRhdGVSZXBsYWNlUG9saWN5PzogXCJEZWxldGVcIiB8IFwiUmV0YWluXCIgfCBcIlNuYXBzaG90XCI7XG4gIENvbmRpdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnB1dFJlc291cmNlPFQ+IGV4dGVuZHMgQWxzb01hdGNoYWJsZTxCYXNlUmVzb3VyY2U+IHtcbiAgUHJvcGVydGllcz86IEFsc29NYXRjaGFibGU8VD47XG4gIFR5cGU6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRSZXNvdXJjZVdpdGhvdXRUeXBlPFQ+XG4gIGV4dGVuZHMgT21pdDxJbnB1dFJlc291cmNlPFQ+LCBcIlR5cGVcIj4ge31cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0UmVzb3VyY2U8VD4gZXh0ZW5kcyBBbHNvQW55PEJhc2VSZXNvdXJjZT4ge1xuICBQcm9wZXJ0aWVzPzogQWxzb0FueTxUPjtcbiAgVHlwZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIGludGVyZmFjZSBvZiByZXR1cm4gdmFsdWUgb2YgVHlwZWRUZW1wbGF0ZSdzIG1ldGhvZHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXR1cm5WYWx1ZTxUPiB7XG4gIC8qKlxuICAgKiBsb2dpY2FsIGlkIG9mIGNsb3VkZm9ybWF0aW9uIHJlc291cmNlcywgcGFyYW1ldGVycywgb3V0cHV0cy4uLlxuICAgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIGRlZmluaXRpb24gb2YgY2xvdWRmb3JtYXRpb24gcmVzb3VyY2VzLCBwYXJhbWV0ZXJzLCBvdXRwdXRzLi4uXG4gICAqL1xuICBkZWY6IFQ7XG59XG5cbi8qKlxuICogaW50ZXJmYWNlIG9mIGNsb3VkZm9ybWF0aW9uIHRlbXBsYXRlIG91dHB1dFxuICovXG5pbnRlcmZhY2UgT3V0cHV0IHtcbiAgRGVzY3JpcHRpb24/OiBhbnk7XG4gIFZhbHVlOiBhbnk7XG4gIEV4cG9ydD86IHtcbiAgICBOYW1lOiBhbnk7XG4gIH07XG59XG5leHBvcnQgaW50ZXJmYWNlIElucHV0T3V0cHV0IGV4dGVuZHMgQWxzb01hdGNoYWJsZTxPdXRwdXQ+IHt9XG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dE91dHB1dCBleHRlbmRzIEFsc29Bbnk8T3V0cHV0PiB7fVxuLyoqXG4gKiBpbnRlcmZhY2Ugb2YgY2xvdWRmb3JtYXRpb24gdGVtcGxhdGUgcGFyYW1ldGVyXG4gKi9cbmludGVyZmFjZSBQYXJhbWV0ZXIge1xuICBBbGxvd2VkUGF0dGVybj86IHN0cmluZztcbiAgQWxsb3dlZFZhbHVlcz86IGFueVtdO1xuICBDb25zdHJhaW50RGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIERlZmF1bHQ/OiBhbnk7XG4gIERlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBNYXhMZW5ndGg/OiBudW1iZXI7XG4gIE1heFZhbHVlPzogbnVtYmVyO1xuICBNaW5MZW5ndGg/OiBudW1iZXI7XG4gIE1pblZhbHVlPzogbnVtYmVyO1xuICBOb0VjaG8/OiBib29sZWFuO1xuICBUeXBlOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIElucHV0UGFyYW10ZXIgZXh0ZW5kcyBBbHNvTWF0Y2hhYmxlPFBhcmFtZXRlcj4ge31cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0UGFyYW1ldGVyIGV4dGVuZHMgQWxzb0FueTxQYXJhbWV0ZXI+IHt9XG5cbmV4cG9ydCB0eXBlIENvbmRpdGlvbiA9IHtcbiAgW2tleSBpbiBzdHJpbmddOiB7XG4gICAgW2tleSBpbiBzdHJpbmddOiBhbnk7XG4gIH07XG59O1xuZXhwb3J0IHR5cGUgTWFwcGluZyA9IHtcbiAgW2tleSBpbiBzdHJpbmddOiB7XG4gICAgW2tleSBpbiBzdHJpbmddOiBhbnk7XG4gIH07XG59O1xuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWQtcmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlZC1yZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0Y2hlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hc3NlcnRpb25zXCI7XG5cbnR5cGUgUHJpbWl0aXZlcyA9XG4gIHwgc3RyaW5nXG4gIHwgbnVtYmVyXG4gIHwgYm9vbGVhblxuICB8IHVuZGVmaW5lZFxuICB8IG51bGxcbiAgfCBzeW1ib2xcbiAgfCBiaWdpbnQgfCBzdHJpbmdbXSB8IG51bWJlcltdIHwgYm9vbGVhbltdIHwgYmlnaW50W107XG4vKipcbiAqIG1ha2UgcHJvcGVydGllcyBvZiBgVGAgYXNpZ25hYmxlIE1hdGNoZXIgcmVjaXJzaXZlbHkgYW5kIG90aGVyIGFyYml0cmFyeSBqc29uIG9iamVjdHMgZm9yIHByaW1pdGl2ZSB0eXBlIGZpZWxkc1xuICovXG50eXBlIEFsc29NYXRjaGFibGU8VD4gPSB7XG4gIFtwIGluIGtleW9mIFRdPzogVFtwXSBleHRlbmRzIFByaW1pdGl2ZXNcbiAgPyBUW3BdIHwgTWF0Y2hlciB8IHsgW2tleSBpbiBzdHJpbmddOiBhbnkgfVxuICA6IEFsc29NYXRjaGFibGU8VFtwXT4gfCBNYXRjaGVyO1xufTtcbi8qKlxuICogbWFrZSBwcm9wZXJ0aWVzIG9mIGBUYCBhc2lnbmFibGUgYXJiaXRyYXJ5IGpzb24gb2JqZWN0c1xuICovXG50eXBlIEFsc29Bbnk8VD4gPSB7XG4gIFtwIGluIGtleW9mIFRdOiBUW3BdIGV4dGVuZHMgUHJpbWl0aXZlc1xuICA/IFRbcF0gfCB7IFtrZXkgaW4gc3RyaW5nXTogYW55IH1cbiAgOiBBbHNvQW55PFRbcF0+O1xufTtcblxuLyoqXG4gKiBDbG91ZEZvcm1hdGlvbiBSZXNvdXJjZSBiYXNlZCBvbiB0aGUgZGVmaW5pdGlvbiBhdCBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vamFfanAvQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvZHVjdC1hdHRyaWJ1dGUtcmVmZXJlbmNlLmh0bWxcbiAqL1xuaW50ZXJmYWNlIEJhc2VSZXNvdXJjZSB7XG4gIENyZWF0aW9uUG9saWN5PzogYW55O1xuICBEZWxldGlvblBvbGljeT86IFwiRGVsZXRlXCIgfCBcIlJldGFpblwiIHwgXCJSZXRhaW5FeGNlcHRPbkNyZWF0ZVwiIHwgXCJTbmFwc2hvdFwiO1xuICBEZXBlbmRzT24/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgTWV0YWRhdGE/OiBhbnk7XG4gIFVwZGF0ZVBvbGljeT86IGFueTtcbiAgVXBkYXRlUmVwbGFjZVBvbGljeT86IFwiRGVsZXRlXCIgfCBcIlJldGFpblwiIHwgXCJTbmFwc2hvdFwiO1xuICBDb25kaXRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRSZXNvdXJjZTxUPiBleHRlbmRzIEFsc29NYXRjaGFibGU8QmFzZVJlc291cmNlPiB7XG4gIFByb3BlcnRpZXM/OiBBbHNvTWF0Y2hhYmxlPFQ+O1xuICBUeXBlOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIElucHV0UmVzb3VyY2VXaXRob3V0VHlwZTxUPlxuICBleHRlbmRzIE9taXQ8SW5wdXRSZXNvdXJjZTxUPiwgXCJUeXBlXCI+IHsgfVxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRSZXNvdXJjZTxUPiBleHRlbmRzIEFsc29Bbnk8QmFzZVJlc291cmNlPiB7XG4gIFByb3BlcnRpZXM/OiBBbHNvQW55PFQ+O1xuICBUeXBlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogaW50ZXJmYWNlIG9mIHJldHVybiB2YWx1ZSBvZiBUeXBlZFRlbXBsYXRlJ3MgbWV0aG9kc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHVyblZhbHVlPFQ+IHtcbiAgLyoqXG4gICAqIGxvZ2ljYWwgaWQgb2YgY2xvdWRmb3JtYXRpb24gcmVzb3VyY2VzLCBwYXJhbWV0ZXJzLCBvdXRwdXRzLi4uXG4gICAqL1xuICBpZDogc3RyaW5nO1xuICAvKipcbiAgICogZGVmaW5pdGlvbiBvZiBjbG91ZGZvcm1hdGlvbiByZXNvdXJjZXMsIHBhcmFtZXRlcnMsIG91dHB1dHMuLi5cbiAgICovXG4gIGRlZjogVDtcbn1cblxuLyoqXG4gKiBpbnRlcmZhY2Ugb2YgY2xvdWRmb3JtYXRpb24gdGVtcGxhdGUgb3V0cHV0XG4gKi9cbmludGVyZmFjZSBPdXRwdXQge1xuICBEZXNjcmlwdGlvbj86IGFueTtcbiAgVmFsdWU6IGFueTtcbiAgRXhwb3J0Pzoge1xuICAgIE5hbWU6IGFueTtcbiAgfTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRPdXRwdXQgZXh0ZW5kcyBBbHNvTWF0Y2hhYmxlPE91dHB1dD4geyB9XG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dE91dHB1dCBleHRlbmRzIEFsc29Bbnk8T3V0cHV0PiB7IH1cbi8qKlxuICogaW50ZXJmYWNlIG9mIGNsb3VkZm9ybWF0aW9uIHRlbXBsYXRlIHBhcmFtZXRlclxuICovXG5pbnRlcmZhY2UgUGFyYW1ldGVyIHtcbiAgQWxsb3dlZFBhdHRlcm4/OiBzdHJpbmc7XG4gIEFsbG93ZWRWYWx1ZXM/OiBhbnlbXTtcbiAgQ29uc3RyYWludERlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBEZWZhdWx0PzogYW55O1xuICBEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgTWF4TGVuZ3RoPzogbnVtYmVyO1xuICBNYXhWYWx1ZT86IG51bWJlcjtcbiAgTWluTGVuZ3RoPzogbnVtYmVyO1xuICBNaW5WYWx1ZT86IG51bWJlcjtcbiAgTm9FY2hvPzogYm9vbGVhbjtcbiAgVHlwZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBJbnB1dFBhcmFtdGVyIGV4dGVuZHMgQWxzb01hdGNoYWJsZTxQYXJhbWV0ZXI+IHsgfVxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRQYXJhbWV0ZXIgZXh0ZW5kcyBBbHNvQW55PFBhcmFtZXRlcj4geyB9XG5cbmV4cG9ydCB0eXBlIENvbmRpdGlvbiA9IHtcbiAgW2tleSBpbiBzdHJpbmddOiB7XG4gICAgW2tleSBpbiBzdHJpbmddOiBhbnk7XG4gIH07XG59O1xuZXhwb3J0IHR5cGUgTWFwcGluZyA9IHtcbiAgW2tleSBpbiBzdHJpbmddOiB7XG4gICAgW2tleSBpbiBzdHJpbmddOiBhbnk7XG4gIH07XG59O1xuIl19
@@ -1,3 +1,7 @@
1
+ /**
2
+ * An array of key-value pairs to apply to this resource.
3
+ */
4
+ export type Tags = Tag[];
1
5
  /**
2
6
  * The AWS::AccessAnalyzer::Analyzer type specifies an analyzer of the user's account
3
7
  */
@@ -57,16 +61,42 @@ export interface Tag {
57
61
  */
58
62
  Key: string;
59
63
  /**
60
- * The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
64
+ * The value for the tag. You can specify a value that is 0 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
61
65
  */
62
- Value: string;
66
+ Value?: string;
63
67
  }
64
68
  /**
65
69
  * The Configuration for Unused Access Analyzer
66
70
  */
67
71
  export interface UnusedAccessConfiguration {
68
72
  /**
69
- * The specified access age in days for which to generate findings for unused access. For example, if you specify 90 days, the analyzer will generate findings for IAM entities within the accounts of the selected organization for any access that hasn't been used in 90 or more days since the analyzer's last scan. You can choose a value between 1 and 180 days.
73
+ * The specified access age in days for which to generate findings for unused access. For example, if you specify 90 days, the analyzer will generate findings for IAM entities within the accounts of the selected organization for any access that hasn't been used in 90 or more days since the analyzer's last scan. You can choose a value between 1 and 365 days.
70
74
  */
71
75
  UnusedAccessAge?: number;
76
+ /**
77
+ * Contains information about rules for the analyzer.
78
+ */
79
+ AnalysisRule?: {
80
+ /**
81
+ * A list of rules for the analyzer containing criteria to exclude from analysis. Entities that meet the rule criteria will not generate findings.
82
+ */
83
+ Exclusions?: AnalysisRuleCriteria[];
84
+ };
85
+ }
86
+ /**
87
+ * The criteria for an analysis rule for an analyzer.
88
+ */
89
+ export interface AnalysisRuleCriteria {
90
+ /**
91
+ * A list of AWS account IDs to apply to the analysis rule criteria. The accounts cannot include the organization analyzer owner account. Account IDs can only be applied to the analysis rule criteria for organization-level analyzers.
92
+ */
93
+ AccountIds?: string[];
94
+ /**
95
+ * An array of key-value pairs to match for your resources. You can use the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
96
+ *
97
+ * For the tag key, you can specify a value that is 1 to 128 characters in length and cannot be prefixed with aws:.
98
+ *
99
+ * For the tag value, you can specify a value that is 0 to 256 characters in length. If the specified tag value is 0 characters, the rule is applied to all principals with the specified tag key.
100
+ */
101
+ ResourceTags?: Tags[];
72
102
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFjY2Vzc2FuYWx5emVyLWFuYWx5emVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWFjY2Vzc2FuYWx5emVyLWFuYWx5emVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBBV1M6OkFjY2Vzc0FuYWx5emVyOjpBbmFseXplciB0eXBlIHNwZWNpZmllcyBhbiBhbmFseXplciBvZiB0aGUgdXNlcidzIGFjY291bnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0FDQ0VTU0FOQUxZWkVSX0FOQUxZWkVSIHtcbi8qKlxuICogQW5hbHl6ZXIgbmFtZVxuICovXG5BbmFseXplck5hbWU/OiBzdHJpbmdcbkFyY2hpdmVSdWxlcz86IEFyY2hpdmVSdWxlW11cbi8qKlxuICogQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIGFuYWx5emVyXG4gKi9cbkFybj86IHN0cmluZ1xuLyoqXG4gKiBBbiBhcnJheSBvZiBrZXktdmFsdWUgcGFpcnMgdG8gYXBwbHkgdG8gdGhpcyByZXNvdXJjZS5cbiAqIFxuICogQG1heEl0ZW1zIDUwXG4gKi9cblRhZ3M/OiBUYWdbXVxuLyoqXG4gKiBUaGUgdHlwZSBvZiB0aGUgYW5hbHl6ZXIsIG11c3QgYmUgb25lIG9mIEFDQ09VTlQsIE9SR0FOSVpBVElPTiwgQUNDT1VOVF9VTlVTRURfQUNDRVNTIG9yIE9SR0FOSVpBVElPTl9VTlVTRURfQUNDRVNTXG4gKi9cblR5cGU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFuYWx5emVyXG4gKi9cbkFuYWx5emVyQ29uZmlndXJhdGlvbj86IHtcblVudXNlZEFjY2Vzc0NvbmZpZ3VyYXRpb24/OiBVbnVzZWRBY2Nlc3NDb25maWd1cmF0aW9uXG59XG59XG4vKipcbiAqIEFuIEFjY2VzcyBBbmFseXplciBhcmNoaXZlIHJ1bGUuIEFyY2hpdmUgcnVsZXMgYXV0b21hdGljYWxseSBhcmNoaXZlIG5ldyBmaW5kaW5ncyB0aGF0IG1lZXQgdGhlIGNyaXRlcmlhIHlvdSBkZWZpbmUgd2hlbiB5b3UgY3JlYXRlIHRoZSBydWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFyY2hpdmVSdWxlIHtcbi8qKlxuICogQG1pbkl0ZW1zIDFcbiAqL1xuRmlsdGVyOiBGaWx0ZXJbXVxuLyoqXG4gKiBUaGUgYXJjaGl2ZSBydWxlIG5hbWVcbiAqL1xuUnVsZU5hbWU6IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXIge1xuQ29udGFpbnM/OiBzdHJpbmdbXVxuRXE/OiBzdHJpbmdbXVxuRXhpc3RzPzogYm9vbGVhblxuUHJvcGVydHk6IHN0cmluZ1xuTmVxPzogc3RyaW5nW11cbn1cbi8qKlxuICogQSBrZXktdmFsdWUgcGFpciB0byBhc3NvY2lhdGUgd2l0aCBhIHJlc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIFRoZSBrZXkgbmFtZSBvZiB0aGUgdGFnLiBZb3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSB0aGF0IGlzIDEgdG8gMTI3IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGF3czouIFlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlc3BhY2UsIF8sIC4sIC8sID0sICssIGFuZCAtLiBcbiAqL1xuS2V5OiBzdHJpbmdcbi8qKlxuICogVGhlIHZhbHVlIGZvciB0aGUgdGFnLiBZb3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSB0aGF0IGlzIDEgdG8gMjU1IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGF3czouIFlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlc3BhY2UsIF8sIC4sIC8sID0sICssIGFuZCAtLiBcbiAqL1xuVmFsdWU6IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgQ29uZmlndXJhdGlvbiBmb3IgVW51c2VkIEFjY2VzcyBBbmFseXplclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVudXNlZEFjY2Vzc0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgc3BlY2lmaWVkIGFjY2VzcyBhZ2UgaW4gZGF5cyBmb3Igd2hpY2ggdG8gZ2VuZXJhdGUgZmluZGluZ3MgZm9yIHVudXNlZCBhY2Nlc3MuIEZvciBleGFtcGxlLCBpZiB5b3Ugc3BlY2lmeSA5MCBkYXlzLCB0aGUgYW5hbHl6ZXIgd2lsbCBnZW5lcmF0ZSBmaW5kaW5ncyBmb3IgSUFNIGVudGl0aWVzIHdpdGhpbiB0aGUgYWNjb3VudHMgb2YgdGhlIHNlbGVjdGVkIG9yZ2FuaXphdGlvbiBmb3IgYW55IGFjY2VzcyB0aGF0IGhhc24ndCBiZWVuIHVzZWQgaW4gOTAgb3IgbW9yZSBkYXlzIHNpbmNlIHRoZSBhbmFseXplcidzIGxhc3Qgc2Nhbi4gWW91IGNhbiBjaG9vc2UgYSB2YWx1ZSBiZXR3ZWVuIDEgYW5kIDE4MCBkYXlzLlxuICovXG5VbnVzZWRBY2Nlc3NBZ2U/OiBudW1iZXJcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFjY2Vzc2FuYWx5emVyLWFuYWx5emVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWFjY2Vzc2FuYWx5emVyLWFuYWx5emVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuIGFycmF5IG9mIGtleS12YWx1ZSBwYWlycyB0byBhcHBseSB0byB0aGlzIHJlc291cmNlLlxuICovXG5leHBvcnQgdHlwZSBUYWdzID0gVGFnW11cblxuLyoqXG4gKiBUaGUgQVdTOjpBY2Nlc3NBbmFseXplcjo6QW5hbHl6ZXIgdHlwZSBzcGVjaWZpZXMgYW4gYW5hbHl6ZXIgb2YgdGhlIHVzZXIncyBhY2NvdW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19BQ0NFU1NBTkFMWVpFUl9BTkFMWVpFUiB7XG4vKipcbiAqIEFuYWx5emVyIG5hbWVcbiAqL1xuQW5hbHl6ZXJOYW1lPzogc3RyaW5nXG5BcmNoaXZlUnVsZXM/OiBBcmNoaXZlUnVsZVtdXG4vKipcbiAqIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBhbmFseXplclxuICovXG5Bcm4/OiBzdHJpbmdcbi8qKlxuICogQW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHRvIGFwcGx5IHRvIHRoaXMgcmVzb3VyY2UuXG4gKiBcbiAqIEBtYXhJdGVtcyA1MFxuICovXG5UYWdzPzogVGFnW11cbi8qKlxuICogVGhlIHR5cGUgb2YgdGhlIGFuYWx5emVyLCBtdXN0IGJlIG9uZSBvZiBBQ0NPVU5ULCBPUkdBTklaQVRJT04sIEFDQ09VTlRfVU5VU0VEX0FDQ0VTUyBvciBPUkdBTklaQVRJT05fVU5VU0VEX0FDQ0VTU1xuICovXG5UeXBlOiBzdHJpbmdcbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhbmFseXplclxuICovXG5BbmFseXplckNvbmZpZ3VyYXRpb24/OiB7XG5VbnVzZWRBY2Nlc3NDb25maWd1cmF0aW9uPzogVW51c2VkQWNjZXNzQ29uZmlndXJhdGlvblxufVxufVxuLyoqXG4gKiBBbiBBY2Nlc3MgQW5hbHl6ZXIgYXJjaGl2ZSBydWxlLiBBcmNoaXZlIHJ1bGVzIGF1dG9tYXRpY2FsbHkgYXJjaGl2ZSBuZXcgZmluZGluZ3MgdGhhdCBtZWV0IHRoZSBjcml0ZXJpYSB5b3UgZGVmaW5lIHdoZW4geW91IGNyZWF0ZSB0aGUgcnVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcmNoaXZlUnVsZSB7XG4vKipcbiAqIEBtaW5JdGVtcyAxXG4gKi9cbkZpbHRlcjogRmlsdGVyW11cbi8qKlxuICogVGhlIGFyY2hpdmUgcnVsZSBuYW1lXG4gKi9cblJ1bGVOYW1lOiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyIHtcbkNvbnRhaW5zPzogc3RyaW5nW11cbkVxPzogc3RyaW5nW11cbkV4aXN0cz86IGJvb2xlYW5cblByb3BlcnR5OiBzdHJpbmdcbk5lcT86IHN0cmluZ1tdXG59XG4vKipcbiAqIEEga2V5LXZhbHVlIHBhaXIgdG8gYXNzb2NpYXRlIHdpdGggYSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuLyoqXG4gKiBUaGUga2V5IG5hbWUgb2YgdGhlIHRhZy4gWW91IGNhbiBzcGVjaWZ5IGEgdmFsdWUgdGhhdCBpcyAxIHRvIDEyNyBVbmljb2RlIGNoYXJhY3RlcnMgaW4gbGVuZ3RoIGFuZCBjYW5ub3QgYmUgcHJlZml4ZWQgd2l0aCBhd3M6LiBZb3UgY2FuIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiB0aGUgc2V0IG9mIFVuaWNvZGUgbGV0dGVycywgZGlnaXRzLCB3aGl0ZXNwYWNlLCBfLCAuLCAvLCA9LCArLCBhbmQgLS4gXG4gKi9cbktleTogc3RyaW5nXG4vKipcbiAqIFRoZSB2YWx1ZSBmb3IgdGhlIHRhZy4gWW91IGNhbiBzcGVjaWZ5IGEgdmFsdWUgdGhhdCBpcyAwIHRvIDI1NSBVbmljb2RlIGNoYXJhY3RlcnMgaW4gbGVuZ3RoIGFuZCBjYW5ub3QgYmUgcHJlZml4ZWQgd2l0aCBhd3M6LiBZb3UgY2FuIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiB0aGUgc2V0IG9mIFVuaWNvZGUgbGV0dGVycywgZGlnaXRzLCB3aGl0ZXNwYWNlLCBfLCAuLCAvLCA9LCArLCBhbmQgLS4gXG4gKi9cblZhbHVlPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBDb25maWd1cmF0aW9uIGZvciBVbnVzZWQgQWNjZXNzIEFuYWx5emVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW51c2VkQWNjZXNzQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBzcGVjaWZpZWQgYWNjZXNzIGFnZSBpbiBkYXlzIGZvciB3aGljaCB0byBnZW5lcmF0ZSBmaW5kaW5ncyBmb3IgdW51c2VkIGFjY2Vzcy4gRm9yIGV4YW1wbGUsIGlmIHlvdSBzcGVjaWZ5IDkwIGRheXMsIHRoZSBhbmFseXplciB3aWxsIGdlbmVyYXRlIGZpbmRpbmdzIGZvciBJQU0gZW50aXRpZXMgd2l0aGluIHRoZSBhY2NvdW50cyBvZiB0aGUgc2VsZWN0ZWQgb3JnYW5pemF0aW9uIGZvciBhbnkgYWNjZXNzIHRoYXQgaGFzbid0IGJlZW4gdXNlZCBpbiA5MCBvciBtb3JlIGRheXMgc2luY2UgdGhlIGFuYWx5emVyJ3MgbGFzdCBzY2FuLiBZb3UgY2FuIGNob29zZSBhIHZhbHVlIGJldHdlZW4gMSBhbmQgMzY1IGRheXMuXG4gKi9cblVudXNlZEFjY2Vzc0FnZT86IG51bWJlclxuLyoqXG4gKiBDb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBydWxlcyBmb3IgdGhlIGFuYWx5emVyLlxuICovXG5BbmFseXNpc1J1bGU/OiB7XG4vKipcbiAqIEEgbGlzdCBvZiBydWxlcyBmb3IgdGhlIGFuYWx5emVyIGNvbnRhaW5pbmcgY3JpdGVyaWEgdG8gZXhjbHVkZSBmcm9tIGFuYWx5c2lzLiBFbnRpdGllcyB0aGF0IG1lZXQgdGhlIHJ1bGUgY3JpdGVyaWEgd2lsbCBub3QgZ2VuZXJhdGUgZmluZGluZ3MuXG4gKi9cbkV4Y2x1c2lvbnM/OiBBbmFseXNpc1J1bGVDcml0ZXJpYVtdXG59XG59XG4vKipcbiAqIFRoZSBjcml0ZXJpYSBmb3IgYW4gYW5hbHlzaXMgcnVsZSBmb3IgYW4gYW5hbHl6ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHlzaXNSdWxlQ3JpdGVyaWEge1xuLyoqXG4gKiBBIGxpc3Qgb2YgQVdTIGFjY291bnQgSURzIHRvIGFwcGx5IHRvIHRoZSBhbmFseXNpcyBydWxlIGNyaXRlcmlhLiBUaGUgYWNjb3VudHMgY2Fubm90IGluY2x1ZGUgdGhlIG9yZ2FuaXphdGlvbiBhbmFseXplciBvd25lciBhY2NvdW50LiBBY2NvdW50IElEcyBjYW4gb25seSBiZSBhcHBsaWVkIHRvIHRoZSBhbmFseXNpcyBydWxlIGNyaXRlcmlhIGZvciBvcmdhbml6YXRpb24tbGV2ZWwgYW5hbHl6ZXJzLlxuICovXG5BY2NvdW50SWRzPzogc3RyaW5nW11cbi8qKlxuICogQW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHRvIG1hdGNoIGZvciB5b3VyIHJlc291cmNlcy4gWW91IGNhbiB1c2UgdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGVzcGFjZSwgXywgLiwgLywgPSwgKywgYW5kIC0uXG4gKiBcbiAqIEZvciB0aGUgdGFnIGtleSwgeW91IGNhbiBzcGVjaWZ5IGEgdmFsdWUgdGhhdCBpcyAxIHRvIDEyOCBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYXdzOi5cbiAqIFxuICogRm9yIHRoZSB0YWcgdmFsdWUsIHlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMCB0byAyNTYgY2hhcmFjdGVycyBpbiBsZW5ndGguIElmIHRoZSBzcGVjaWZpZWQgdGFnIHZhbHVlIGlzIDAgY2hhcmFjdGVycywgdGhlIHJ1bGUgaXMgYXBwbGllZCB0byBhbGwgcHJpbmNpcGFscyB3aXRoIHRoZSBzcGVjaWZpZWQgdGFnIGtleS5cbiAqL1xuUmVzb3VyY2VUYWdzPzogVGFnc1tdXG59XG4iXX0=
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Resource Type definition for AWS::ApiGateway::BasePathMappingV2
3
+ */
4
+ export interface _AWS_APIGATEWAY_BASEPATHMAPPINGV2 {
5
+ /**
6
+ * The base path name that callers of the API must provide in the URL after the domain name.
7
+ */
8
+ BasePath?: string;
9
+ /**
10
+ * The Arn of an AWS::ApiGateway::DomainNameV2 resource.
11
+ */
12
+ DomainNameArn: string;
13
+ /**
14
+ * The ID of the API.
15
+ */
16
+ RestApiId: string;
17
+ /**
18
+ * The name of the API's stage.
19
+ */
20
+ Stage?: string;
21
+ /**
22
+ * Amazon Resource Name (ARN) of the resource.
23
+ */
24
+ BasePathMappingArn?: string;
25
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFwaWdhdGV3YXktYmFzZXBhdGhtYXBwaW5ndjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtYXBpZ2F0ZXdheS1iYXNlcGF0aG1hcHBpbmd2Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXNvdXJjZSBUeXBlIGRlZmluaXRpb24gZm9yIEFXUzo6QXBpR2F0ZXdheTo6QmFzZVBhdGhNYXBwaW5nVjJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0FQSUdBVEVXQVlfQkFTRVBBVEhNQVBQSU5HVjIge1xuLyoqXG4gKiBUaGUgYmFzZSBwYXRoIG5hbWUgdGhhdCBjYWxsZXJzIG9mIHRoZSBBUEkgbXVzdCBwcm92aWRlIGluIHRoZSBVUkwgYWZ0ZXIgdGhlIGRvbWFpbiBuYW1lLlxuICovXG5CYXNlUGF0aD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQXJuIG9mIGFuIEFXUzo6QXBpR2F0ZXdheTo6RG9tYWluTmFtZVYyIHJlc291cmNlLlxuICovXG5Eb21haW5OYW1lQXJuOiBzdHJpbmdcbi8qKlxuICogVGhlIElEIG9mIHRoZSBBUEkuXG4gKi9cblJlc3RBcGlJZDogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBBUEkncyBzdGFnZS5cbiAqL1xuU3RhZ2U/OiBzdHJpbmdcbi8qKlxuICogQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHJlc291cmNlLlxuICovXG5CYXNlUGF0aE1hcHBpbmdBcm4/OiBzdHJpbmdcbn1cbiJdfQ==
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Resource Type definition for AWS::ApiGateway::DomainNameAccessAssociation.
3
+ */
4
+ export interface _AWS_APIGATEWAY_DOMAINNAMEACCESSASSOCIATION {
5
+ /**
6
+ * The amazon resource name (ARN) of the domain name access association resource.
7
+ */
8
+ DomainNameAccessAssociationArn?: string;
9
+ /**
10
+ * The amazon resource name (ARN) of the domain name resource.
11
+ */
12
+ DomainNameArn: string;
13
+ /**
14
+ * The source of the domain name access association resource.
15
+ */
16
+ AccessAssociationSource: string;
17
+ /**
18
+ * The source type of the domain name access association resource.
19
+ */
20
+ AccessAssociationSourceType: "VPCE";
21
+ /**
22
+ * An array of arbitrary tags (key-value pairs) to associate with the domainname access association.
23
+ */
24
+ Tags?: Tag[];
25
+ }
26
+ export interface Tag {
27
+ Value: string;
28
+ Key: string;
29
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFwaWdhdGV3YXktZG9tYWlubmFtZWFjY2Vzc2Fzc29jaWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWFwaWdhdGV3YXktZG9tYWlubmFtZWFjY2Vzc2Fzc29jaWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlc291cmNlIFR5cGUgZGVmaW5pdGlvbiBmb3IgQVdTOjpBcGlHYXRld2F5OjpEb21haW5OYW1lQWNjZXNzQXNzb2NpYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19BUElHQVRFV0FZX0RPTUFJTk5BTUVBQ0NFU1NBU1NPQ0lBVElPTiB7XG4vKipcbiAqIFRoZSBhbWF6b24gcmVzb3VyY2UgbmFtZSAoQVJOKSBvZiB0aGUgZG9tYWluIG5hbWUgYWNjZXNzIGFzc29jaWF0aW9uIHJlc291cmNlLlxuICovXG5Eb21haW5OYW1lQWNjZXNzQXNzb2NpYXRpb25Bcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIGFtYXpvbiByZXNvdXJjZSBuYW1lIChBUk4pIG9mIHRoZSBkb21haW4gbmFtZSByZXNvdXJjZS5cbiAqL1xuRG9tYWluTmFtZUFybjogc3RyaW5nXG4vKipcbiAqIFRoZSBzb3VyY2Ugb2YgdGhlIGRvbWFpbiBuYW1lIGFjY2VzcyBhc3NvY2lhdGlvbiByZXNvdXJjZS5cbiAqL1xuQWNjZXNzQXNzb2NpYXRpb25Tb3VyY2U6IHN0cmluZ1xuLyoqXG4gKiBUaGUgc291cmNlIHR5cGUgb2YgdGhlIGRvbWFpbiBuYW1lIGFjY2VzcyBhc3NvY2lhdGlvbiByZXNvdXJjZS5cbiAqL1xuQWNjZXNzQXNzb2NpYXRpb25Tb3VyY2VUeXBlOiBcIlZQQ0VcIlxuLyoqXG4gKiBBbiBhcnJheSBvZiBhcmJpdHJhcnkgdGFncyAoa2V5LXZhbHVlIHBhaXJzKSB0byBhc3NvY2lhdGUgd2l0aCB0aGUgZG9tYWlubmFtZSBhY2Nlc3MgYXNzb2NpYXRpb24uXG4gKi9cblRhZ3M/OiBUYWdbXVxufVxuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuVmFsdWU6IHN0cmluZ1xuS2V5OiBzdHJpbmdcbn1cbiJdfQ==
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Resource Type definition for AWS::ApiGateway::DomainNameV2.
3
+ */
4
+ export interface _AWS_APIGATEWAY_DOMAINNAMEV2 {
5
+ CertificateArn?: string;
6
+ DomainName?: string;
7
+ EndpointConfiguration?: EndpointConfiguration;
8
+ SecurityPolicy?: string;
9
+ Policy?: ({
10
+ [k: string]: unknown;
11
+ } | string);
12
+ ManagementPolicy?: ({
13
+ [k: string]: unknown;
14
+ } | string);
15
+ DomainNameId?: string;
16
+ /**
17
+ * The amazon resource name (ARN) of the domain name resource.
18
+ */
19
+ DomainNameArn?: string;
20
+ Tags?: Tag[];
21
+ }
22
+ export interface EndpointConfiguration {
23
+ Types?: string[];
24
+ }
25
+ export interface Tag {
26
+ Key?: string;
27
+ Value?: string;
28
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFwaWdhdGV3YXktZG9tYWlubmFtZXYyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWFwaWdhdGV3YXktZG9tYWlubmFtZXYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlc291cmNlIFR5cGUgZGVmaW5pdGlvbiBmb3IgQVdTOjpBcGlHYXRld2F5OjpEb21haW5OYW1lVjIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19BUElHQVRFV0FZX0RPTUFJTk5BTUVWMiB7XG5DZXJ0aWZpY2F0ZUFybj86IHN0cmluZ1xuRG9tYWluTmFtZT86IHN0cmluZ1xuRW5kcG9pbnRDb25maWd1cmF0aW9uPzogRW5kcG9pbnRDb25maWd1cmF0aW9uXG5TZWN1cml0eVBvbGljeT86IHN0cmluZ1xuUG9saWN5PzogKHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59IHwgc3RyaW5nKVxuTWFuYWdlbWVudFBvbGljeT86ICh7XG5bazogc3RyaW5nXTogdW5rbm93blxufSB8IHN0cmluZylcbkRvbWFpbk5hbWVJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgYW1hem9uIHJlc291cmNlIG5hbWUgKEFSTikgb2YgdGhlIGRvbWFpbiBuYW1lIHJlc291cmNlLlxuICovXG5Eb21haW5OYW1lQXJuPzogc3RyaW5nXG5UYWdzPzogVGFnW11cbn1cbmV4cG9ydCBpbnRlcmZhY2UgRW5kcG9pbnRDb25maWd1cmF0aW9uIHtcblR5cGVzPzogc3RyaW5nW11cbn1cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbktleT86IHN0cmluZ1xuVmFsdWU/OiBzdHJpbmdcbn1cbiJdfQ==
@@ -77,6 +77,7 @@ export interface _AWS_APPLICATIONAUTOSCALING_SCALINGPOLICY {
77
77
  TargetTrackingScalingPolicyConfiguration?: TargetTrackingScalingPolicyConfiguration;
78
78
  Arn?: string;
79
79
  StepScalingPolicyConfiguration?: StepScalingPolicyConfiguration;
80
+ PredictiveScalingPolicyConfiguration?: PredictiveScalingPolicyConfiguration;
80
81
  }
81
82
  /**
82
83
  * A target tracking scaling policy.
@@ -290,3 +291,100 @@ export interface StepAdjustment {
290
291
  */
291
292
  ScalingAdjustment: number;
292
293
  }
294
+ export interface PredictiveScalingPolicyConfiguration {
295
+ MaxCapacityBreachBehavior?: string;
296
+ MaxCapacityBuffer?: number;
297
+ Mode?: string;
298
+ MetricSpecifications: PredictiveScalingMetricSpecification[];
299
+ SchedulingBufferTime?: number;
300
+ }
301
+ export interface PredictiveScalingMetricSpecification {
302
+ CustomizedLoadMetricSpecification?: PredictiveScalingCustomizedLoadMetric;
303
+ PredefinedLoadMetricSpecification?: PredictiveScalingPredefinedLoadMetric;
304
+ TargetValue: number;
305
+ PredefinedScalingMetricSpecification?: PredictiveScalingPredefinedScalingMetric;
306
+ CustomizedCapacityMetricSpecification?: PredictiveScalingCustomizedCapacityMetric;
307
+ CustomizedScalingMetricSpecification?: PredictiveScalingCustomizedScalingMetric;
308
+ PredefinedMetricPairSpecification?: PredictiveScalingPredefinedMetricPair;
309
+ }
310
+ export interface PredictiveScalingCustomizedLoadMetric {
311
+ MetricDataQueries: PredictiveScalingMetricDataQuery[];
312
+ }
313
+ export interface PredictiveScalingMetricDataQuery {
314
+ /**
315
+ * Indicates whether to return the timestamps and raw data values of this metric.
316
+ */
317
+ ReturnData?: boolean;
318
+ /**
319
+ * The math expression to perform on the returned data, if this object is performing a math expression.
320
+ */
321
+ Expression?: string;
322
+ /**
323
+ * A human-readable label for this metric or expression. This is especially useful if this is a math expression, so that you know what the value represents.
324
+ */
325
+ Label?: string;
326
+ MetricStat?: PredictiveScalingMetricStat;
327
+ /**
328
+ * A short name that identifies the object's results in the response.
329
+ */
330
+ Id?: string;
331
+ }
332
+ /**
333
+ * Information about the metric data to return.
334
+ */
335
+ export interface PredictiveScalingMetricStat {
336
+ /**
337
+ * The statistic to return. It can include any CloudWatch statistic or extended statistic.
338
+ */
339
+ Stat?: string;
340
+ Metric?: PredictiveScalingMetric;
341
+ /**
342
+ * The unit to use for the returned data points.
343
+ */
344
+ Unit?: string;
345
+ }
346
+ /**
347
+ * The CloudWatch metric to return, including the metric name, namespace, and dimensions.
348
+ */
349
+ export interface PredictiveScalingMetric {
350
+ /**
351
+ * The name of the metric.
352
+ */
353
+ MetricName?: string;
354
+ /**
355
+ * The dimensions for the metric.
356
+ */
357
+ Dimensions?: PredictiveScalingMetricDimension[];
358
+ /**
359
+ * The namespace of the metric.
360
+ */
361
+ Namespace?: string;
362
+ }
363
+ export interface PredictiveScalingMetricDimension {
364
+ /**
365
+ * The value of the dimension.
366
+ */
367
+ Value?: string;
368
+ /**
369
+ * The name of the dimension.
370
+ */
371
+ Name?: string;
372
+ }
373
+ export interface PredictiveScalingPredefinedLoadMetric {
374
+ PredefinedMetricType: string;
375
+ ResourceLabel?: string;
376
+ }
377
+ export interface PredictiveScalingPredefinedScalingMetric {
378
+ PredefinedMetricType: string;
379
+ ResourceLabel?: string;
380
+ }
381
+ export interface PredictiveScalingCustomizedCapacityMetric {
382
+ MetricDataQueries: PredictiveScalingMetricDataQuery[];
383
+ }
384
+ export interface PredictiveScalingCustomizedScalingMetric {
385
+ MetricDataQueries: PredictiveScalingMetricDataQuery[];
386
+ }
387
+ export interface PredictiveScalingPredefinedMetricPair {
388
+ PredefinedMetricType: string;
389
+ ResourceLabel?: string;
390
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFwcGxpY2F0aW9uYXV0b3NjYWxpbmctc2NhbGluZ3BvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1hcHBsaWNhdGlvbmF1dG9zY2FsaW5nLXNjYWxpbmdwb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGBgQVdTOjpBcHBsaWNhdGlvbkF1dG9TY2FsaW5nOjpTY2FsaW5nUG9saWN5YGAgcmVzb3VyY2UgZGVmaW5lcyBhIHNjYWxpbmcgcG9saWN5IHRoYXQgQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIHVzZXMgdG8gYWRqdXN0IHRoZSBjYXBhY2l0eSBvZiBhIHNjYWxhYmxlIHRhcmdldC4gXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVGFyZ2V0IHRyYWNraW5nIHNjYWxpbmcgcG9saWNpZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9hcHBsaWNhdGlvbi91c2VyZ3VpZGUvYXBwbGljYXRpb24tYXV0by1zY2FsaW5nLXRhcmdldC10cmFja2luZy5odG1sKSBhbmQgW1N0ZXAgc2NhbGluZyBwb2xpY2llc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2FwcGxpY2F0aW9uL3VzZXJndWlkZS9hcHBsaWNhdGlvbi1hdXRvLXNjYWxpbmctc3RlcC1zY2FsaW5nLXBvbGljaWVzLmh0bWwpIGluIHRoZSAqQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfQVBQTElDQVRJT05BVVRPU0NBTElOR19TQ0FMSU5HUE9MSUNZIHtcbi8qKlxuICogVGhlIHNjYWxpbmcgcG9saWN5IHR5cGUuXG4gKiAgVGhlIGZvbGxvd2luZyBwb2xpY3kgdHlwZXMgYXJlIHN1cHBvcnRlZDogXG4gKiAgIGBgVGFyZ2V0VHJhY2tpbmdTY2FsaW5nYGDigJROb3Qgc3VwcG9ydGVkIGZvciBBbWF6b24gRU1SXG4gKiAgIGBgU3RlcFNjYWxpbmdgYOKAlE5vdCBzdXBwb3J0ZWQgZm9yIER5bmFtb0RCLCBBbWF6b24gQ29tcHJlaGVuZCwgTGFtYmRhLCBBbWF6b24gS2V5c3BhY2VzLCBBbWF6b24gTVNLLCBBbWF6b24gRWxhc3RpQ2FjaGUsIG9yIE5lcHR1bmUuXG4gKi9cblBvbGljeVR5cGU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgcmVzb3VyY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBzY2FsaW5nIHBvbGljeS4gVGhpcyBzdHJpbmcgY29uc2lzdHMgb2YgdGhlIHJlc291cmNlIHR5cGUgYW5kIHVuaXF1ZSBpZGVudGlmaWVyLlxuICogICArICBFQ1Mgc2VydmljZSAtIFRoZSByZXNvdXJjZSB0eXBlIGlzIGBgc2VydmljZWBgIGFuZCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgaXMgdGhlIGNsdXN0ZXIgbmFtZSBhbmQgc2VydmljZSBuYW1lLiBFeGFtcGxlOiBgYHNlcnZpY2UvbXktY2x1c3Rlci9teS1zZXJ2aWNlYGAuXG4gKiAgICsgIFNwb3QgRmxlZXQgLSBUaGUgcmVzb3VyY2UgdHlwZSBpcyBgYHNwb3QtZmxlZXQtcmVxdWVzdGBgIGFuZCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgaXMgdGhlIFNwb3QgRmxlZXQgcmVxdWVzdCBJRC4gRXhhbXBsZTogYGBzcG90LWZsZWV0LXJlcXVlc3Qvc2ZyLTczZmJkMmNlLWFhMzAtNDk0Yy04Nzg4LTFjZWU0RVhBTVBMRWBgLlxuICogICArICBFTVIgY2x1c3RlciAtIFRoZSByZXNvdXJjZSB0eXBlIGlzIGBgaW5zdGFuY2Vncm91cGBgIGFuZCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgaXMgdGhlIGNsdXN0ZXIgSUQgYW5kIGluc3RhbmNlIGdyb3VwIElELiBFeGFtcGxlOiBgYGluc3RhbmNlZ3JvdXAvai0yRUVaTllLVUExTlRWL2lnLTE3OTFZNEUxTDhZSTBgYC5cbiAqICAgKyAgQXBwU3RyZWFtIDIuMCBmbGVldCAtIFRoZSByZXNvdXJjZSB0eXBlIGlzIGBgZmxlZXRgYCBhbmQgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGlzIHRoZSBmbGVldCBuYW1lLiBFeGFtcGxlOiBgYGZsZWV0L3NhbXBsZS1mbGVldGBgLlxuICogICArICBEeW5hbW9EQiB0YWJsZSAtIFRoZSByZXNvdXJjZSB0eXBlIGlzIGBgdGFibGVgYCBhbmQgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGlzIHRoZSB0YWJsZSBuYW1lLiBFeGFtcGxlOiBgYHRhYmxlL215LXRhYmxlYGAuXG4gKiAgICsgIER5bmFtb0RCIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXggLSBUaGUgcmVzb3VyY2UgdHlwZSBpcyBgYGluZGV4YGAgYW5kIHRoZSB1bmlxdWUgaWRlbnRpZmllciBpcyB0aGUgaW5kZXggbmFtZS4gRXhhbXBsZTogYGB0YWJsZS9teS10YWJsZS9pbmRleC9teS10YWJsZS1pbmRleGBgLlxuICogICArICBBdXJvcmEgREIgY2x1c3RlciAtIFRoZSByZXNvdXJjZSB0eXBlIGlzIGBgY2x1c3RlcmBgIGFuZCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgaXMgdGhlIGNsdXN0ZXIgbmFtZS4gRXhhbXBsZTogYGBjbHVzdGVyOm15LWRiLWNsdXN0ZXJgYC5cbiAqICAgKyAgU2FnZU1ha2VyIGVuZHBvaW50IHZhcmlhbnQgLSBUaGUgcmVzb3VyY2UgdHlwZSBpcyBgYHZhcmlhbnRgYCBhbmQgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGlzIHRoZSByZXNvdXJjZSBJRC4gRXhhbXBsZTogYGBlbmRwb2ludC9teS1lbmQtcG9pbnQvdmFyaWFudC9LTWVhbnNDbHVzdGVyaW5nYGAuXG4gKiAgICsgIEN1c3RvbSByZXNvdXJjZXMgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCBhIHJlc291cmNlIHR5cGUuIFRoaXMgcGFyYW1ldGVyIG11c3Qgc3BlY2lmeSB0aGUgYGBPdXRwdXRWYWx1ZWBgIGZyb20gdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIHN0YWNrIHVzZWQgdG8gYWNjZXNzIHRoZSByZXNvdXJjZXMuIFRoZSB1bmlxdWUgaWRlbnRpZmllciBpcyBkZWZpbmVkIGJ5IHRoZSBzZXJ2aWNlIHByb3ZpZGVyLiBNb3JlIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBpbiBvdXIgW0dpdEh1YiByZXBvc2l0b3J5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtYXV0by1zY2FsaW5nLWN1c3RvbS1yZXNvdXJjZSkuXG4gKiAgICsgIEFtYXpvbiBDb21wcmVoZW5kIGRvY3VtZW50IGNsYXNzaWZpY2F0aW9uIGVuZHBvaW50IC0gVGhlIHJlc291cmNlIHR5cGUgYW5kIHVuaXF1ZSBpZGVudGlmaWVyIGFyZSBzcGVjaWZpZWQgdXNpbmcgdGhlIGVuZHBvaW50IEFSTi4gRXhhbXBsZTogYGBhcm46YXdzOmNvbXByZWhlbmQ6dXMtd2VzdC0yOjEyMzQ1Njc4OTAxMjpkb2N1bWVudC1jbGFzc2lmaWVyLWVuZHBvaW50L0VYQU1QTEVgYC5cbiAqICAgKyAgQW1hem9uIENvbXByZWhlbmQgZW50aXR5IHJlY29nbml6ZXIgZW5kcG9pbnQgLSBUaGUgcmVzb3VyY2UgdHlwZSBhbmQgdW5pcXVlIGlkZW50aWZpZXIgYXJlIHNwZWNpZmllZCB1c2luZyB0aGUgZW5kcG9pbnQgQVJOLiBFeGFtcGxlOiBgYGFybjphd3M6Y29tcHJlaGVuZDp1cy13ZXN0LTI6MTIzNDU2Nzg5MDEyOmVudGl0eS1yZWNvZ25pemVyLWVuZHBvaW50L0VYQU1QTEVgYC5cbiAqICAgKyAgTGFtYmRhIHByb3Zpc2lvbmVkIGNvbmN1cnJlbmN5IC0gVGhlIHJlc291cmNlIHR5cGUgaXMgYGBmdW5jdGlvbmBgIGFuZCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgaXMgdGhlIGZ1bmN0aW9uIG5hbWUgd2l0aCBhIGZ1bmN0aW9uIHZlcnNpb24gb3IgYWxpYXMgbmFtZSBzdWZmaXggdGhhdCBpcyBub3QgYGAkTEFURVNUYGAuIEV4YW1wbGU6IGBgZnVuY3Rpb246bXktZnVuY3Rpb246cHJvZGBgIG9yIGBgZnVuY3Rpb246bXktZnVuY3Rpb246MWBgLlxuICogICArICBBbWF6b24gS2V5c3BhY2VzIHRhYmxlIC0gVGhlIHJlc291cmNlIHR5cGUgaXMgYGB0YWJsZWBgIGFuZCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgaXMgdGhlIHRhYmxlIG5hbWUuIEV4YW1wbGU6IGBga2V5c3BhY2UvbXlrZXlzcGFjZS90YWJsZS9teXRhYmxlYGAuXG4gKiAgICsgIEFtYXpvbiBNU0sgY2x1c3RlciAtIFRoZSByZXNvdXJjZSB0eXBlIGFuZCB1bmlxdWUgaWRlbnRpZmllciBhcmUgc3BlY2lmaWVkIHVzaW5nIHRoZSBjbHVzdGVyIEFSTi4gRXhhbXBsZTogYGBhcm46YXdzOmthZmthOnVzLWVhc3QtMToxMjM0NTY3ODkwMTI6Y2x1c3Rlci9kZW1vLWNsdXN0ZXItMS82MzU3ZTBiMi0wZTZhLTRiODYtYTBiNC03MGRmOTM0YzJlMzEtNWBgLlxuICogICArICBBbWF6b24gRWxhc3RpQ2FjaGUgcmVwbGljYXRpb24gZ3JvdXAgLSBUaGUgcmVzb3VyY2UgdHlwZSBpcyBgYHJlcGxpY2F0aW9uLWdyb3VwYGAgYW5kIHRoZSB1bmlxdWUgaWRlbnRpZmllciBpcyB0aGUgcmVwbGljYXRpb24gZ3JvdXAgbmFtZS4gRXhhbXBsZTogYGByZXBsaWNhdGlvbi1ncm91cC9teWNsdXN0ZXJgYC5cbiAqICAgKyAgTmVwdHVuZSBjbHVzdGVyIC0gVGhlIHJlc291cmNlIHR5cGUgaXMgYGBjbHVzdGVyYGAgYW5kIHRoZSB1bmlxdWUgaWRlbnRpZmllciBpcyB0aGUgY2x1c3RlciBuYW1lLiBFeGFtcGxlOiBgYGNsdXN0ZXI6bXljbHVzdGVyYGAuXG4gKiAgICsgIFNhZ2VNYWtlciBzZXJ2ZXJsZXNzIGVuZHBvaW50IC0gVGhlIHJlc291cmNlIHR5cGUgaXMgYGB2YXJpYW50YGAgYW5kIHRoZSB1bmlxdWUgaWRlbnRpZmllciBpcyB0aGUgcmVzb3VyY2UgSUQuIEV4YW1wbGU6IGBgZW5kcG9pbnQvbXktZW5kLXBvaW50L3ZhcmlhbnQvS01lYW5zQ2x1c3RlcmluZ2BgLlxuICogICArICBTYWdlTWFrZXIgaW5mZXJlbmNlIGNvbXBvbmVudCAtIFRoZSByZXNvdXJjZSB0eXBlIGlzIGBgaW5mZXJlbmNlLWNvbXBvbmVudGBgIGFuZCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgaXMgdGhlIHJlc291cmNlIElELiBFeGFtcGxlOiBgYGluZmVyZW5jZS1jb21wb25lbnQvbXktaW5mZXJlbmNlLWNvbXBvbmVudGBgLlxuICogICArICBQb29sIG9mIFdvcmtTcGFjZXMgLSBUaGUgcmVzb3VyY2UgdHlwZSBpcyBgYHdvcmtzcGFjZXNwb29sYGAgYW5kIHRoZSB1bmlxdWUgaWRlbnRpZmllciBpcyB0aGUgcG9vbCBJRC4gRXhhbXBsZTogYGB3b3Jrc3BhY2VzcG9vbC93c3Bvb2wtMTIzNDU2YGAuXG4gKi9cblJlc291cmNlSWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIENsb3VkRm9ybWF0aW9uLWdlbmVyYXRlZCBJRCBvZiBhbiBBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgc2NhbGFibGUgdGFyZ2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgSUQsIHNlZSB0aGUgUmV0dXJuIFZhbHVlIHNlY3Rpb24gb2YgdGhlIGBgQVdTOjpBcHBsaWNhdGlvbkF1dG9TY2FsaW5nOjpTY2FsYWJsZVRhcmdldGBgIHJlc291cmNlLlxuICogICBZb3UgbXVzdCBzcGVjaWZ5IGVpdGhlciB0aGUgYGBTY2FsaW5nVGFyZ2V0SWRgYCBwcm9wZXJ0eSwgb3IgdGhlIGBgUmVzb3VyY2VJZGBgLCBgYFNjYWxhYmxlRGltZW5zaW9uYGAsIGFuZCBgYFNlcnZpY2VOYW1lc3BhY2VgYCBwcm9wZXJ0aWVzLCBidXQgbm90IGJvdGguXG4gKi9cblNjYWxpbmdUYXJnZXRJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgc2NhbGluZyBwb2xpY3kuXG4gKiAgVXBkYXRlcyB0byB0aGUgbmFtZSBvZiBhIHRhcmdldCB0cmFja2luZyBzY2FsaW5nIHBvbGljeSBhcmUgbm90IHN1cHBvcnRlZCwgdW5sZXNzIHlvdSBhbHNvIHVwZGF0ZSB0aGUgbWV0cmljIHVzZWQgZm9yIHNjYWxpbmcuIFRvIGNoYW5nZSBvbmx5IGEgdGFyZ2V0IHRyYWNraW5nIHNjYWxpbmcgcG9saWN5J3MgbmFtZSwgZmlyc3QgZGVsZXRlIHRoZSBwb2xpY3kgYnkgcmVtb3ZpbmcgdGhlIGV4aXN0aW5nIGBgQVdTOjpBcHBsaWNhdGlvbkF1dG9TY2FsaW5nOjpTY2FsaW5nUG9saWN5YGAgcmVzb3VyY2UgZnJvbSB0aGUgdGVtcGxhdGUgYW5kIHVwZGF0aW5nIHRoZSBzdGFjay4gVGhlbiwgcmVjcmVhdGUgdGhlIHJlc291cmNlIHdpdGggdGhlIHNhbWUgc2V0dGluZ3MgYW5kIGEgZGlmZmVyZW50IG5hbWUuXG4gKi9cblBvbGljeU5hbWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZXNwYWNlIG9mIHRoZSBBV1Mgc2VydmljZSB0aGF0IHByb3ZpZGVzIHRoZSByZXNvdXJjZSwgb3IgYSBgYGN1c3RvbS1yZXNvdXJjZWBgLlxuICovXG5TZXJ2aWNlTmFtZXNwYWNlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBzY2FsYWJsZSBkaW1lbnNpb24uIFRoaXMgc3RyaW5nIGNvbnNpc3RzIG9mIHRoZSBzZXJ2aWNlIG5hbWVzcGFjZSwgcmVzb3VyY2UgdHlwZSwgYW5kIHNjYWxpbmcgcHJvcGVydHkuXG4gKiAgICsgICBgYGVjczpzZXJ2aWNlOkRlc2lyZWRDb3VudGBgIC0gVGhlIHRhc2sgY291bnQgb2YgYW4gRUNTIHNlcnZpY2UuXG4gKiAgICsgICBgYGVsYXN0aWNtYXByZWR1Y2U6aW5zdGFuY2Vncm91cDpJbnN0YW5jZUNvdW50YGAgLSBUaGUgaW5zdGFuY2UgY291bnQgb2YgYW4gRU1SIEluc3RhbmNlIEdyb3VwLlxuICogICArICAgYGBlYzI6c3BvdC1mbGVldC1yZXF1ZXN0OlRhcmdldENhcGFjaXR5YGAgLSBUaGUgdGFyZ2V0IGNhcGFjaXR5IG9mIGEgU3BvdCBGbGVldC5cbiAqICAgKyAgIGBgYXBwc3RyZWFtOmZsZWV0OkRlc2lyZWRDYXBhY2l0eWBgIC0gVGhlIGNhcGFjaXR5IG9mIGFuIEFwcFN0cmVhbSAyLjAgZmxlZXQuXG4gKiAgICsgICBgYGR5bmFtb2RiOnRhYmxlOlJlYWRDYXBhY2l0eVVuaXRzYGAgLSBUaGUgcHJvdmlzaW9uZWQgcmVhZCBjYXBhY2l0eSBmb3IgYSBEeW5hbW9EQiB0YWJsZS5cbiAqICAgKyAgIGBgZHluYW1vZGI6dGFibGU6V3JpdGVDYXBhY2l0eVVuaXRzYGAgLSBUaGUgcHJvdmlzaW9uZWQgd3JpdGUgY2FwYWNpdHkgZm9yIGEgRHluYW1vREIgdGFibGUuXG4gKiAgICsgICBgYGR5bmFtb2RiOmluZGV4OlJlYWRDYXBhY2l0eVVuaXRzYGAgLSBUaGUgcHJvdmlzaW9uZWQgcmVhZCBjYXBhY2l0eSBmb3IgYSBEeW5hbW9EQiBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LlxuICogICArICAgYGBkeW5hbW9kYjppbmRleDpXcml0ZUNhcGFjaXR5VW5pdHNgYCAtIFRoZSBwcm92aXNpb25lZCB3cml0ZSBjYXBhY2l0eSBmb3IgYSBEeW5hbW9EQiBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LlxuICogICArICAgYGByZHM6Y2x1c3RlcjpSZWFkUmVwbGljYUNvdW50YGAgLSBUaGUgY291bnQgb2YgQXVyb3JhIFJlcGxpY2FzIGluIGFuIEF1cm9yYSBEQiBjbHVzdGVyLiBBdmFpbGFibGUgZm9yIEF1cm9yYSBNeVNRTC1jb21wYXRpYmxlIGVkaXRpb24gYW5kIEF1cm9yYSBQb3N0Z3JlU1FMLWNvbXBhdGlibGUgZWRpdGlvbi5cbiAqICAgKyAgIGBgc2FnZW1ha2VyOnZhcmlhbnQ6RGVzaXJlZEluc3RhbmNlQ291bnRgYCAtIFRoZSBudW1iZXIgb2YgRUMyIGluc3RhbmNlcyBmb3IgYSBTYWdlTWFrZXIgbW9kZWwgZW5kcG9pbnQgdmFyaWFudC5cbiAqICAgKyAgIGBgY3VzdG9tLXJlc291cmNlOlJlc291cmNlVHlwZTpQcm9wZXJ0eWBgIC0gVGhlIHNjYWxhYmxlIGRpbWVuc2lvbiBmb3IgYSBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZWQgYnkgeW91ciBvd24gYXBwbGljYXRpb24gb3Igc2VydmljZS5cbiAqICAgKyAgIGBgY29tcHJlaGVuZDpkb2N1bWVudC1jbGFzc2lmaWVyLWVuZHBvaW50OkRlc2lyZWRJbmZlcmVuY2VVbml0c2BgIC0gVGhlIG51bWJlciBvZiBpbmZlcmVuY2UgdW5pdHMgZm9yIGFuIEFtYXpvbiBDb21wcmVoZW5kIGRvY3VtZW50IGNsYXNzaWZpY2F0aW9uIGVuZHBvaW50LlxuICogICArICAgYGBjb21wcmVoZW5kOmVudGl0eS1yZWNvZ25pemVyLWVuZHBvaW50OkRlc2lyZWRJbmZlcmVuY2VVbml0c2BgIC0gVGhlIG51bWJlciBvZiBpbmZlcmVuY2UgdW5pdHMgZm9yIGFuIEFtYXpvbiBDb21wcmVoZW5kIGVudGl0eSByZWNvZ25pemVyIGVuZHBvaW50LlxuICogICArICAgYGBsYW1iZGE6ZnVuY3Rpb246UHJvdmlzaW9uZWRDb25jdXJyZW5jeWBgIC0gVGhlIHByb3Zpc2lvbmVkIGNvbmN1cnJlbmN5IGZvciBhIExhbWJkYSBmdW5jdGlvbi5cbiAqICAgKyAgIGBgY2Fzc2FuZHJhOnRhYmxlOlJlYWRDYXBhY2l0eVVuaXRzYGAgLSBUaGUgcHJvdmlzaW9uZWQgcmVhZCBjYXBhY2l0eSBmb3IgYW4gQW1hem9uIEtleXNwYWNlcyB0YWJsZS5cbiAqICAgKyAgIGBgY2Fzc2FuZHJhOnRhYmxlOldyaXRlQ2FwYWNpdHlVbml0c2BgIC0gVGhlIHByb3Zpc2lvbmVkIHdyaXRlIGNhcGFjaXR5IGZvciBhbiBBbWF6b24gS2V5c3BhY2VzIHRhYmxlLlxuICogICArICAgYGBrYWZrYTpicm9rZXItc3RvcmFnZTpWb2x1bWVTaXplYGAgLSBUaGUgcHJvdmlzaW9uZWQgdm9sdW1lIHNpemUgKGluIEdpQikgZm9yIGJyb2tlcnMgaW4gYW4gQW1hem9uIE1TSyBjbHVzdGVyLlxuICogICArICAgYGBlbGFzdGljYWNoZTpyZXBsaWNhdGlvbi1ncm91cDpOb2RlR3JvdXBzYGAgLSBUaGUgbnVtYmVyIG9mIG5vZGUgZ3JvdXBzIGZvciBhbiBBbWF6b24gRWxhc3RpQ2FjaGUgcmVwbGljYXRpb24gZ3JvdXAuXG4gKiAgICsgICBgYGVsYXN0aWNhY2hlOnJlcGxpY2F0aW9uLWdyb3VwOlJlcGxpY2FzYGAgLSBUaGUgbnVtYmVyIG9mIHJlcGxpY2FzIHBlciBub2RlIGdyb3VwIGZvciBhbiBBbWF6b24gRWxhc3RpQ2FjaGUgcmVwbGljYXRpb24gZ3JvdXAuXG4gKiAgICsgICBgYG5lcHR1bmU6Y2x1c3RlcjpSZWFkUmVwbGljYUNvdW50YGAgLSBUaGUgY291bnQgb2YgcmVhZCByZXBsaWNhcyBpbiBhbiBBbWF6b24gTmVwdHVuZSBEQiBjbHVzdGVyLlxuICogICArICAgYGBzYWdlbWFrZXI6dmFyaWFudDpEZXNpcmVkUHJvdmlzaW9uZWRDb25jdXJyZW5jeWBgIC0gVGhlIHByb3Zpc2lvbmVkIGNvbmN1cnJlbmN5IGZvciBhIFNhZ2VNYWtlciBzZXJ2ZXJsZXNzIGVuZHBvaW50LlxuICogICArICAgYGBzYWdlbWFrZXI6aW5mZXJlbmNlLWNvbXBvbmVudDpEZXNpcmVkQ29weUNvdW50YGAgLSBUaGUgbnVtYmVyIG9mIGNvcGllcyBhY3Jvc3MgYW4gZW5kcG9pbnQgZm9yIGEgU2FnZU1ha2VyIGluZmVyZW5jZSBjb21wb25lbnQuXG4gKiAgICsgICBgYHdvcmtzcGFjZXM6d29ya3NwYWNlc3Bvb2w6RGVzaXJlZFVzZXJTZXNzaW9uc2BgIC0gVGhlIG51bWJlciBvZiB1c2VyIHNlc3Npb25zIGZvciB0aGUgV29ya1NwYWNlcyBpbiB0aGUgcG9vbC5cbiAqL1xuU2NhbGFibGVEaW1lbnNpb24/OiBzdHJpbmdcblRhcmdldFRyYWNraW5nU2NhbGluZ1BvbGljeUNvbmZpZ3VyYXRpb24/OiBUYXJnZXRUcmFja2luZ1NjYWxpbmdQb2xpY3lDb25maWd1cmF0aW9uXG5Bcm4/OiBzdHJpbmdcblN0ZXBTY2FsaW5nUG9saWN5Q29uZmlndXJhdGlvbj86IFN0ZXBTY2FsaW5nUG9saWN5Q29uZmlndXJhdGlvblxufVxuLyoqXG4gKiBBIHRhcmdldCB0cmFja2luZyBzY2FsaW5nIHBvbGljeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRUcmFja2luZ1NjYWxpbmdQb2xpY3lDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB0byB3YWl0IGZvciBhIHByZXZpb3VzIHNjYWxlLW91dCBhY3Rpdml0eSB0byB0YWtlIGVmZmVjdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGZvciBkZWZhdWx0IHZhbHVlcywgc2VlIFtEZWZpbmUgY29vbGRvd24gcGVyaW9kc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2FwcGxpY2F0aW9uL3VzZXJndWlkZS90YXJnZXQtdHJhY2tpbmctc2NhbGluZy1wb2xpY3ktb3ZlcnZpZXcuaHRtbCN0YXJnZXQtdHJhY2tpbmctY29vbGRvd24pIGluIHRoZSAqQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5TY2FsZU91dENvb2xkb3duPzogbnVtYmVyXG4vKipcbiAqIFRoZSB0YXJnZXQgdmFsdWUgZm9yIHRoZSBtZXRyaWMuIEFsdGhvdWdoIHRoaXMgcHJvcGVydHkgYWNjZXB0cyBudW1iZXJzIG9mIHR5cGUgRG91YmxlLCBpdCB3b24ndCBhY2NlcHQgdmFsdWVzIHRoYXQgYXJlIGVpdGhlciB0b28gc21hbGwgb3IgdG9vIGxhcmdlLiBWYWx1ZXMgbXVzdCBiZSBpbiB0aGUgcmFuZ2Ugb2YgLTJeMzYwIHRvIDJeMzYwLiBUaGUgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIG51bWJlciBiYXNlZCBvbiB0aGUgY2hvaWNlIG9mIG1ldHJpYy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBtZXRyaWMgaXMgQ1BVIHV0aWxpemF0aW9uLCB0aGVuIHRoZSB0YXJnZXQgdmFsdWUgaXMgYSBwZXJjZW50IHZhbHVlIHRoYXQgcmVwcmVzZW50cyBob3cgbXVjaCBvZiB0aGUgQ1BVIGNhbiBiZSB1c2VkIGJlZm9yZSBzY2FsaW5nIG91dC5cbiAqL1xuVGFyZ2V0VmFsdWU6IG51bWJlclxuQ3VzdG9taXplZE1ldHJpY1NwZWNpZmljYXRpb24/OiBDdXN0b21pemVkTWV0cmljU3BlY2lmaWNhdGlvblxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBzY2FsZSBpbiBieSB0aGUgdGFyZ2V0IHRyYWNraW5nIHNjYWxpbmcgcG9saWN5IGlzIGRpc2FibGVkLiBJZiB0aGUgdmFsdWUgaXMgYGB0cnVlYGAsIHNjYWxlIGluIGlzIGRpc2FibGVkIGFuZCB0aGUgdGFyZ2V0IHRyYWNraW5nIHNjYWxpbmcgcG9saWN5IHdvbid0IHJlbW92ZSBjYXBhY2l0eSBmcm9tIHRoZSBzY2FsYWJsZSB0YXJnZXQuIE90aGVyd2lzZSwgc2NhbGUgaW4gaXMgZW5hYmxlZCBhbmQgdGhlIHRhcmdldCB0cmFja2luZyBzY2FsaW5nIHBvbGljeSBjYW4gcmVtb3ZlIGNhcGFjaXR5IGZyb20gdGhlIHNjYWxhYmxlIHRhcmdldC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGBmYWxzZWBgLlxuICovXG5EaXNhYmxlU2NhbGVJbj86IGJvb2xlYW5cbi8qKlxuICogVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCBhZnRlciBhIHNjYWxlLWluIGFjdGl2aXR5IGNvbXBsZXRlcyBiZWZvcmUgYW5vdGhlciBzY2FsZS1pbiBhY3Rpdml0eSBjYW4gc3RhcnQuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBmb3IgZGVmYXVsdCB2YWx1ZXMsIHNlZSBbRGVmaW5lIGNvb2xkb3duIHBlcmlvZHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9hcHBsaWNhdGlvbi91c2VyZ3VpZGUvdGFyZ2V0LXRyYWNraW5nLXNjYWxpbmctcG9saWN5LW92ZXJ2aWV3Lmh0bWwjdGFyZ2V0LXRyYWNraW5nLWNvb2xkb3duKSBpbiB0aGUgKkFwcGxpY2F0aW9uIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuU2NhbGVJbkNvb2xkb3duPzogbnVtYmVyXG5QcmVkZWZpbmVkTWV0cmljU3BlY2lmaWNhdGlvbj86IFByZWRlZmluZWRNZXRyaWNTcGVjaWZpY2F0aW9uXG59XG4vKipcbiAqIEEgY3VzdG9taXplZCBtZXRyaWMuIFlvdSBjYW4gc3BlY2lmeSBlaXRoZXIgYSBwcmVkZWZpbmVkIG1ldHJpYyBvciBhIGN1c3RvbWl6ZWQgbWV0cmljLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbWl6ZWRNZXRyaWNTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIG1ldHJpYy4gVG8gZ2V0IHRoZSBleGFjdCBtZXRyaWMgbmFtZSwgbmFtZXNwYWNlLCBhbmQgZGltZW5zaW9ucywgaW5zcGVjdCB0aGUgW01ldHJpY10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTWV0cmljLmh0bWwpIG9iamVjdCB0aGF0J3MgcmV0dXJuZWQgYnkgYSBjYWxsIHRvIFtMaXN0TWV0cmljc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdE1ldHJpY3MuaHRtbCkuXG4gKi9cbk1ldHJpY05hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIG1ldHJpY3MgdG8gaW5jbHVkZSBpbiB0aGUgdGFyZ2V0IHRyYWNraW5nIHNjYWxpbmcgcG9saWN5LCBhcyBhIG1ldHJpYyBkYXRhIHF1ZXJ5LiBUaGlzIGNhbiBpbmNsdWRlIGJvdGggcmF3IG1ldHJpYyBhbmQgbWV0cmljIG1hdGggZXhwcmVzc2lvbnMuXG4gKi9cbk1ldHJpY3M/OiBUYXJnZXRUcmFja2luZ01ldHJpY0RhdGFRdWVyeVtdXG4vKipcbiAqIFRoZSBzdGF0aXN0aWMgb2YgdGhlIG1ldHJpYy5cbiAqL1xuU3RhdGlzdGljPzogc3RyaW5nXG4vKipcbiAqIFRoZSBkaW1lbnNpb25zIG9mIHRoZSBtZXRyaWMuIFxuICogIENvbmRpdGlvbmFsOiBJZiB5b3UgcHVibGlzaGVkIHlvdXIgbWV0cmljIHdpdGggZGltZW5zaW9ucywgeW91IG11c3Qgc3BlY2lmeSB0aGUgc2FtZSBkaW1lbnNpb25zIGluIHlvdXIgc2NhbGluZyBwb2xpY3kuXG4gKi9cbkRpbWVuc2lvbnM/OiBNZXRyaWNEaW1lbnNpb25bXVxuLyoqXG4gKiBUaGUgdW5pdCBvZiB0aGUgbWV0cmljLiBGb3IgYSBjb21wbGV0ZSBsaXN0IG9mIHRoZSB1bml0cyB0aGF0IENsb3VkV2F0Y2ggc3VwcG9ydHMsIHNlZSB0aGUgW01ldHJpY0RhdHVtXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9NZXRyaWNEYXR1bS5odG1sKSBkYXRhIHR5cGUgaW4gdGhlICpBbWF6b24gQ2xvdWRXYXRjaCBBUEkgUmVmZXJlbmNlKi5cbiAqL1xuVW5pdD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZXNwYWNlIG9mIHRoZSBtZXRyaWMuXG4gKi9cbk5hbWVzcGFjZT86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgbWV0cmljIGRhdGEgdG8gcmV0dXJuLiBBbHNvIGRlZmluZXMgd2hldGhlciB0aGlzIGNhbGwgaXMgcmV0dXJuaW5nIGRhdGEgZm9yIG9uZSBtZXRyaWMgb25seSwgb3Igd2hldGhlciBpdCBpcyBwZXJmb3JtaW5nIGEgbWF0aCBleHByZXNzaW9uIG9uIHRoZSB2YWx1ZXMgb2YgcmV0dXJuZWQgbWV0cmljIHN0YXRpc3RpY3MgdG8gY3JlYXRlIGEgbmV3IHRpbWUgc2VyaWVzLiBBIHRpbWUgc2VyaWVzIGlzIGEgc2VyaWVzIG9mIGRhdGEgcG9pbnRzLCBlYWNoIG9mIHdoaWNoIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHRpbWVzdGFtcC5cbiAqICBZb3UgY2FuIGNhbGwgZm9yIGEgc2luZ2xlIG1ldHJpYyBvciBwZXJmb3JtIG1hdGggZXhwcmVzc2lvbnMgb24gbXVsdGlwbGUgbWV0cmljcy4gQW55IGV4cHJlc3Npb25zIHVzZWQgaW4gYSBtZXRyaWMgc3BlY2lmaWNhdGlvbiBtdXN0IGV2ZW50dWFsbHkgcmV0dXJuIGEgc2luZ2xlIHRpbWUgc2VyaWVzLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBleGFtcGxlcywgc2VlIFtDcmVhdGUgYSB0YXJnZXQgdHJhY2tpbmcgc2NhbGluZyBwb2xpY3kgZm9yIEFwcGxpY2F0aW9uIEF1dG8gU2NhbGluZyB1c2luZyBtZXRyaWMgbWF0aF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2FwcGxpY2F0aW9uL3VzZXJndWlkZS9hcHBsaWNhdGlvbi1hdXRvLXNjYWxpbmctdGFyZ2V0LXRyYWNraW5nLW1ldHJpYy1tYXRoLmh0bWwpIGluIHRoZSAqQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICogICBgYFRhcmdldFRyYWNraW5nTWV0cmljRGF0YVF1ZXJ5YGAgaXMgYSBwcm9wZXJ0eSBvZiB0aGUgW0FXUzo6QXBwbGljYXRpb25BdXRvU2NhbGluZzo6U2NhbGluZ1BvbGljeSBDdXN0b21pemVkTWV0cmljU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtYXBwbGljYXRpb25hdXRvc2NhbGluZy1zY2FsaW5ncG9saWN5LWN1c3RvbWl6ZWRtZXRyaWNzcGVjaWZpY2F0aW9uLmh0bWwpIHByb3BlcnR5IHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0VHJhY2tpbmdNZXRyaWNEYXRhUXVlcnkge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byByZXR1cm4gdGhlIHRpbWVzdGFtcHMgYW5kIHJhdyBkYXRhIHZhbHVlcyBvZiB0aGlzIG1ldHJpYy4gXG4gKiAgSWYgeW91IHVzZSBhbnkgbWF0aCBleHByZXNzaW9ucywgc3BlY2lmeSBgYHRydWVgYCBmb3IgdGhpcyB2YWx1ZSBmb3Igb25seSB0aGUgZmluYWwgbWF0aCBleHByZXNzaW9uIHRoYXQgdGhlIG1ldHJpYyBzcGVjaWZpY2F0aW9uIGlzIGJhc2VkIG9uLiBZb3UgbXVzdCBzcGVjaWZ5IGBgZmFsc2VgYCBmb3IgYGBSZXR1cm5EYXRhYGAgZm9yIGFsbCB0aGUgb3RoZXIgbWV0cmljcyBhbmQgZXhwcmVzc2lvbnMgdXNlZCBpbiB0aGUgbWV0cmljIHNwZWNpZmljYXRpb24uXG4gKiAgSWYgeW91IGFyZSBvbmx5IHJldHJpZXZpbmcgbWV0cmljcyBhbmQgbm90IHBlcmZvcm1pbmcgYW55IG1hdGggZXhwcmVzc2lvbnMsIGRvIG5vdCBzcGVjaWZ5IGFueXRoaW5nIGZvciBgYFJldHVybkRhdGFgYC4gVGhpcyBzZXRzIGl0IHRvIGl0cyBkZWZhdWx0IChgYHRydWVgYCkuXG4gKi9cblJldHVybkRhdGE/OiBib29sZWFuXG4vKipcbiAqIFRoZSBtYXRoIGV4cHJlc3Npb24gdG8gcGVyZm9ybSBvbiB0aGUgcmV0dXJuZWQgZGF0YSwgaWYgdGhpcyBvYmplY3QgaXMgcGVyZm9ybWluZyBhIG1hdGggZXhwcmVzc2lvbi4gVGhpcyBleHByZXNzaW9uIGNhbiB1c2UgdGhlIGBgSWRgYCBvZiB0aGUgb3RoZXIgbWV0cmljcyB0byByZWZlciB0byB0aG9zZSBtZXRyaWNzLCBhbmQgY2FuIGFsc28gdXNlIHRoZSBgYElkYGAgb2Ygb3RoZXIgZXhwcmVzc2lvbnMgdG8gdXNlIHRoZSByZXN1bHQgb2YgdGhvc2UgZXhwcmVzc2lvbnMuIFxuICogIENvbmRpdGlvbmFsOiBXaXRoaW4gZWFjaCBgYFRhcmdldFRyYWNraW5nTWV0cmljRGF0YVF1ZXJ5YGAgb2JqZWN0LCB5b3UgbXVzdCBzcGVjaWZ5IGVpdGhlciBgYEV4cHJlc3Npb25gYCBvciBgYE1ldHJpY1N0YXRgYCwgYnV0IG5vdCBib3RoLlxuICovXG5FeHByZXNzaW9uPzogc3RyaW5nXG4vKipcbiAqIEEgaHVtYW4tcmVhZGFibGUgbGFiZWwgZm9yIHRoaXMgbWV0cmljIG9yIGV4cHJlc3Npb24uIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgaWYgdGhpcyBpcyBhIG1hdGggZXhwcmVzc2lvbiwgc28gdGhhdCB5b3Uga25vdyB3aGF0IHRoZSB2YWx1ZSByZXByZXNlbnRzLlxuICovXG5MYWJlbD86IHN0cmluZ1xuTWV0cmljU3RhdD86IFRhcmdldFRyYWNraW5nTWV0cmljU3RhdFxuLyoqXG4gKiBBIHNob3J0IG5hbWUgdGhhdCBpZGVudGlmaWVzIHRoZSBvYmplY3QncyByZXN1bHRzIGluIHRoZSByZXNwb25zZS4gVGhpcyBuYW1lIG11c3QgYmUgdW5pcXVlIGFtb25nIGFsbCBgYE1ldHJpY0RhdGFRdWVyeWBgIG9iamVjdHMgc3BlY2lmaWVkIGZvciBhIHNpbmdsZSBzY2FsaW5nIHBvbGljeS4gSWYgeW91IGFyZSBwZXJmb3JtaW5nIG1hdGggZXhwcmVzc2lvbnMgb24gdGhpcyBzZXQgb2YgZGF0YSwgdGhpcyBuYW1lIHJlcHJlc2VudHMgdGhhdCBkYXRhIGFuZCBjYW4gc2VydmUgYXMgYSB2YXJpYWJsZSBpbiB0aGUgbWF0aGVtYXRpY2FsIGV4cHJlc3Npb24uIFRoZSB2YWxpZCBjaGFyYWN0ZXJzIGFyZSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgdW5kZXJzY29yZXMuIFRoZSBmaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBhIGxvd2VyY2FzZSBsZXR0ZXIuXG4gKi9cbklkPzogc3RyaW5nXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSBtZXRyaWMgZGF0YSB0byByZXR1cm4uXG4gKiAgQ29uZGl0aW9uYWw6IFdpdGhpbiBlYWNoIGBgTWV0cmljRGF0YVF1ZXJ5YGAgb2JqZWN0LCB5b3UgbXVzdCBzcGVjaWZ5IGVpdGhlciBgYEV4cHJlc3Npb25gYCBvciBgYE1ldHJpY1N0YXRgYCwgYnV0IG5vdCBib3RoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldFRyYWNraW5nTWV0cmljU3RhdCB7XG4vKipcbiAqIFRoZSBzdGF0aXN0aWMgdG8gcmV0dXJuLiBJdCBjYW4gaW5jbHVkZSBhbnkgQ2xvdWRXYXRjaCBzdGF0aXN0aWMgb3IgZXh0ZW5kZWQgc3RhdGlzdGljLiBGb3IgYSBsaXN0IG9mIHZhbGlkIHZhbHVlcywgc2VlIHRoZSB0YWJsZSBpbiBbU3RhdGlzdGljc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L21vbml0b3JpbmcvY2xvdWR3YXRjaF9jb25jZXB0cy5odG1sI1N0YXRpc3RpYykgaW4gdGhlICpBbWF6b24gQ2xvdWRXYXRjaCBVc2VyIEd1aWRlKi5cbiAqICBUaGUgbW9zdCBjb21tb25seSB1c2VkIG1ldHJpYyBmb3Igc2NhbGluZyBpcyBgYEF2ZXJhZ2VgYC5cbiAqL1xuU3RhdD86IHN0cmluZ1xuTWV0cmljPzogVGFyZ2V0VHJhY2tpbmdNZXRyaWNcbi8qKlxuICogVGhlIHVuaXQgdG8gdXNlIGZvciB0aGUgcmV0dXJuZWQgZGF0YSBwb2ludHMuIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgdGhlIHVuaXRzIHRoYXQgQ2xvdWRXYXRjaCBzdXBwb3J0cywgc2VlIHRoZSBbTWV0cmljRGF0dW1dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX01ldHJpY0RhdHVtLmh0bWwpIGRhdGEgdHlwZSBpbiB0aGUgKkFtYXpvbiBDbG91ZFdhdGNoIEFQSSBSZWZlcmVuY2UqLlxuICovXG5Vbml0Pzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBDbG91ZFdhdGNoIG1ldHJpYyB0byByZXR1cm4sIGluY2x1ZGluZyB0aGUgbWV0cmljIG5hbWUsIG5hbWVzcGFjZSwgYW5kIGRpbWVuc2lvbnMuIFRvIGdldCB0aGUgZXhhY3QgbWV0cmljIG5hbWUsIG5hbWVzcGFjZSwgYW5kIGRpbWVuc2lvbnMsIGluc3BlY3QgdGhlIFtNZXRyaWNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX01ldHJpYy5odG1sKSBvYmplY3QgdGhhdCBpcyByZXR1cm5lZCBieSBhIGNhbGwgdG8gW0xpc3RNZXRyaWNzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9MaXN0TWV0cmljcy5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRUcmFja2luZ01ldHJpYyB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBtZXRyaWMuXG4gKi9cbk1ldHJpY05hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIGRpbWVuc2lvbnMgZm9yIHRoZSBtZXRyaWMuIEZvciB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZGltZW5zaW9ucywgc2VlIHRoZSBBV1MgZG9jdW1lbnRhdGlvbiBhdmFpbGFibGUgZnJvbSB0aGUgdGFibGUgaW4gW3NlcnZpY2VzIHRoYXQgcHVibGlzaCBDbG91ZFdhdGNoIG1ldHJpY3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9tb25pdG9yaW5nL2F3cy1zZXJ2aWNlcy1jbG91ZHdhdGNoLW1ldHJpY3MuaHRtbCkgaW4gdGhlICpBbWF6b24gQ2xvdWRXYXRjaCBVc2VyIEd1aWRlKi4gXG4gKiAgQ29uZGl0aW9uYWw6IElmIHlvdSBwdWJsaXNoZWQgeW91ciBtZXRyaWMgd2l0aCBkaW1lbnNpb25zLCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSBzYW1lIGRpbWVuc2lvbnMgaW4geW91ciBzY2FsaW5nIHBvbGljeS5cbiAqL1xuRGltZW5zaW9ucz86IFRhcmdldFRyYWNraW5nTWV0cmljRGltZW5zaW9uW11cbi8qKlxuICogVGhlIG5hbWVzcGFjZSBvZiB0aGUgbWV0cmljLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB0YWJsZSBpbiBbc2VydmljZXMgdGhhdCBwdWJsaXNoIENsb3VkV2F0Y2ggbWV0cmljc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L21vbml0b3JpbmcvYXdzLXNlcnZpY2VzLWNsb3Vkd2F0Y2gtbWV0cmljcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBDbG91ZFdhdGNoIFVzZXIgR3VpZGUqLlxuICovXG5OYW1lc3BhY2U/OiBzdHJpbmdcbn1cbi8qKlxuICogYGBUYXJnZXRUcmFja2luZ01ldHJpY0RpbWVuc2lvbmBgIHNwZWNpZmllcyBhIG5hbWUvdmFsdWUgcGFpciB0aGF0IGlzIHBhcnQgb2YgdGhlIGlkZW50aXR5IG9mIGEgQ2xvdWRXYXRjaCBtZXRyaWMgZm9yIHRoZSBgYERpbWVuc2lvbnNgYCBwcm9wZXJ0eSBvZiB0aGUgW0FXUzo6QXBwbGljYXRpb25BdXRvU2NhbGluZzo6U2NhbGluZ1BvbGljeSBUYXJnZXRUcmFja2luZ01ldHJpY10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtYXBwbGljYXRpb25hdXRvc2NhbGluZy1zY2FsaW5ncG9saWN5LXRhcmdldHRyYWNraW5nbWV0cmljLmh0bWwpIHByb3BlcnR5IHR5cGUuIER1cGxpY2F0ZSBkaW1lbnNpb25zIGFyZSBub3QgYWxsb3dlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRUcmFja2luZ01ldHJpY0RpbWVuc2lvbiB7XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgZGltZW5zaW9uLlxuICovXG5WYWx1ZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgZGltZW5zaW9uLlxuICovXG5OYW1lPzogc3RyaW5nXG59XG4vKipcbiAqIGBgTWV0cmljRGltZW5zaW9uYGAgc3BlY2lmaWVzIGEgbmFtZS92YWx1ZSBwYWlyIHRoYXQgaXMgcGFydCBvZiB0aGUgaWRlbnRpdHkgb2YgYSBDbG91ZFdhdGNoIG1ldHJpYyBmb3IgdGhlIGBgRGltZW5zaW9uc2BgIHByb3BlcnR5IG9mIHRoZSBbQVdTOjpBcHBsaWNhdGlvbkF1dG9TY2FsaW5nOjpTY2FsaW5nUG9saWN5IEN1c3RvbWl6ZWRNZXRyaWNTcGVjaWZpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1hcHBsaWNhdGlvbmF1dG9zY2FsaW5nLXNjYWxpbmdwb2xpY3ktY3VzdG9taXplZG1ldHJpY3NwZWNpZmljYXRpb24uaHRtbCkgcHJvcGVydHkgdHlwZS4gRHVwbGljYXRlIGRpbWVuc2lvbnMgYXJlIG5vdCBhbGxvd2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY0RpbWVuc2lvbiB7XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgZGltZW5zaW9uLlxuICovXG5WYWx1ZTogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBkaW1lbnNpb24uXG4gKi9cbk5hbWU6IHN0cmluZ1xufVxuLyoqXG4gKiBBIHByZWRlZmluZWQgbWV0cmljLiBZb3UgY2FuIHNwZWNpZnkgZWl0aGVyIGEgcHJlZGVmaW5lZCBtZXRyaWMgb3IgYSBjdXN0b21pemVkIG1ldHJpYy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVkZWZpbmVkTWV0cmljU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSBtZXRyaWMgdHlwZS4gVGhlIGBgQUxCUmVxdWVzdENvdW50UGVyVGFyZ2V0YGAgbWV0cmljIHR5cGUgYXBwbGllcyBvbmx5IHRvIFNwb3QgZmxlZXQgcmVxdWVzdHMgYW5kIEVDUyBzZXJ2aWNlcy5cbiAqL1xuUHJlZGVmaW5lZE1ldHJpY1R5cGU6IHN0cmluZ1xuLyoqXG4gKiBJZGVudGlmaWVzIHRoZSByZXNvdXJjZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1ldHJpYyB0eXBlLiBZb3UgY2FuJ3Qgc3BlY2lmeSBhIHJlc291cmNlIGxhYmVsIHVubGVzcyB0aGUgbWV0cmljIHR5cGUgaXMgYGBBTEJSZXF1ZXN0Q291bnRQZXJUYXJnZXRgYCBhbmQgdGhlcmUgaXMgYSB0YXJnZXQgZ3JvdXAgYXR0YWNoZWQgdG8gdGhlIFNwb3QgRmxlZXQgb3IgRUNTIHNlcnZpY2UuXG4gKiAgWW91IGNyZWF0ZSB0aGUgcmVzb3VyY2UgbGFiZWwgYnkgYXBwZW5kaW5nIHRoZSBmaW5hbCBwb3J0aW9uIG9mIHRoZSBsb2FkIGJhbGFuY2VyIEFSTiBhbmQgdGhlIGZpbmFsIHBvcnRpb24gb2YgdGhlIHRhcmdldCBncm91cCBBUk4gaW50byBhIHNpbmdsZSB2YWx1ZSwgc2VwYXJhdGVkIGJ5IGEgZm9yd2FyZCBzbGFzaCAoLykuIFRoZSBmb3JtYXQgb2YgdGhlIHJlc291cmNlIGxhYmVsIGlzOlxuICogICBgYGFwcC9teS1hbGIvNzc4ZDQxMjMxYjE0MWEwZi90YXJnZXRncm91cC9teS1hbGItdGFyZ2V0LWdyb3VwLzk0M2YwMTdmMTAwYmVjZmZgYC5cbiAqICBXaGVyZTpcbiAqICAgKyAgYXBwLzxsb2FkLWJhbGFuY2VyLW5hbWU+Lzxsb2FkLWJhbGFuY2VyLWlkPiBpcyB0aGUgZmluYWwgcG9ydGlvbiBvZiB0aGUgbG9hZCBiYWxhbmNlciBBUk5cbiAqICAgKyAgdGFyZ2V0Z3JvdXAvPHRhcmdldC1ncm91cC1uYW1lPi88dGFyZ2V0LWdyb3VwLWlkPiBpcyB0aGUgZmluYWwgcG9ydGlvbiBvZiB0aGUgdGFyZ2V0IGdyb3VwIEFSTi5cbiAqICAgXG4gKiAgVG8gZmluZCB0aGUgQVJOIGZvciBhbiBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyLCB1c2UgdGhlIFtEZXNjcmliZUxvYWRCYWxhbmNlcnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbGFzdGljbG9hZGJhbGFuY2luZy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZXNjcmliZUxvYWRCYWxhbmNlcnMuaHRtbCkgQVBJIG9wZXJhdGlvbi4gVG8gZmluZCB0aGUgQVJOIGZvciB0aGUgdGFyZ2V0IGdyb3VwLCB1c2UgdGhlIFtEZXNjcmliZVRhcmdldEdyb3Vwc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VsYXN0aWNsb2FkYmFsYW5jaW5nL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlVGFyZ2V0R3JvdXBzLmh0bWwpIEFQSSBvcGVyYXRpb24uXG4gKi9cblJlc291cmNlTGFiZWw/OiBzdHJpbmdcbn1cbi8qKlxuICogQSBzdGVwIHNjYWxpbmcgcG9saWN5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBTY2FsaW5nUG9saWN5Q29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBhZ2dyZWdhdGlvbiB0eXBlIGZvciB0aGUgQ2xvdWRXYXRjaCBtZXRyaWNzLiBWYWxpZCB2YWx1ZXMgYXJlIGBgTWluaW11bWBgLCBgYE1heGltdW1gYCwgYW5kIGBgQXZlcmFnZWBgLiBJZiB0aGUgYWdncmVnYXRpb24gdHlwZSBpcyBudWxsLCB0aGUgdmFsdWUgaXMgdHJlYXRlZCBhcyBgYEF2ZXJhZ2VgYC5cbiAqL1xuTWV0cmljQWdncmVnYXRpb25UeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gc2Vjb25kcywgdG8gd2FpdCBmb3IgYSBwcmV2aW91cyBzY2FsaW5nIGFjdGl2aXR5IHRvIHRha2UgZWZmZWN0LiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyAzMDAuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0Nvb2xkb3duIHBlcmlvZF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2FwcGxpY2F0aW9uL3VzZXJndWlkZS9zdGVwLXNjYWxpbmctcG9saWN5LW92ZXJ2aWV3Lmh0bWwjc3RlcC1zY2FsaW5nLWNvb2xkb3duKSBpbiB0aGUgKkFwcGxpY2F0aW9uIEF1dG8gU2NhbGluZyBVc2VyIEd1aWRlKi5cbiAqL1xuQ29vbGRvd24/OiBudW1iZXJcbi8qKlxuICogQSBzZXQgb2YgYWRqdXN0bWVudHMgdGhhdCBlbmFibGUgeW91IHRvIHNjYWxlIGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoZSBhbGFybSBicmVhY2guXG4gKiAgQXQgbGVhc3Qgb25lIHN0ZXAgYWRqdXN0bWVudCBpcyByZXF1aXJlZCBpZiB5b3UgYXJlIGFkZGluZyBhIG5ldyBzdGVwIHNjYWxpbmcgcG9saWN5IGNvbmZpZ3VyYXRpb24uXG4gKi9cblN0ZXBBZGp1c3RtZW50cz86IFN0ZXBBZGp1c3RtZW50W11cbi8qKlxuICogVGhlIG1pbmltdW0gdmFsdWUgdG8gc2NhbGUgYnkgd2hlbiB0aGUgYWRqdXN0bWVudCB0eXBlIGlzIGBgUGVyY2VudENoYW5nZUluQ2FwYWNpdHlgYC4gRm9yIGV4YW1wbGUsIHN1cHBvc2UgdGhhdCB5b3UgY3JlYXRlIGEgc3RlcCBzY2FsaW5nIHBvbGljeSB0byBzY2FsZSBvdXQgYW4gQW1hem9uIEVDUyBzZXJ2aWNlIGJ5IDI1IHBlcmNlbnQgYW5kIHlvdSBzcGVjaWZ5IGEgYGBNaW5BZGp1c3RtZW50TWFnbml0dWRlYGAgb2YgMi4gSWYgdGhlIHNlcnZpY2UgaGFzIDQgdGFza3MgYW5kIHRoZSBzY2FsaW5nIHBvbGljeSBpcyBwZXJmb3JtZWQsIDI1IHBlcmNlbnQgb2YgNCBpcyAxLiBIb3dldmVyLCBiZWNhdXNlIHlvdSBzcGVjaWZpZWQgYSBgYE1pbkFkanVzdG1lbnRNYWduaXR1ZGVgYCBvZiAyLCBBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgc2NhbGVzIG91dCB0aGUgc2VydmljZSBieSAyIHRhc2tzLlxuICovXG5NaW5BZGp1c3RtZW50TWFnbml0dWRlPzogbnVtYmVyXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBgYFNjYWxpbmdBZGp1c3RtZW50YGAgdmFsdWUgaW4gdGhlIGBgU3RlcEFkanVzdG1lbnRgYCBwcm9wZXJ0eSBpcyBhbiBhYnNvbHV0ZSBudW1iZXIgb3IgYSBwZXJjZW50YWdlIG9mIHRoZSBjdXJyZW50IGNhcGFjaXR5LlxuICovXG5BZGp1c3RtZW50VHlwZT86IHN0cmluZ1xufVxuLyoqXG4gKiBgYFN0ZXBBZGp1c3RtZW50YGAgc3BlY2lmaWVzIGEgc3RlcCBhZGp1c3RtZW50IGZvciB0aGUgYGBTdGVwQWRqdXN0bWVudHNgYCBwcm9wZXJ0eSBvZiB0aGUgW0FXUzo6QXBwbGljYXRpb25BdXRvU2NhbGluZzo6U2NhbGluZ1BvbGljeSBTdGVwU2NhbGluZ1BvbGljeUNvbmZpZ3VyYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWFwcGxpY2F0aW9uYXV0b3NjYWxpbmctc2NhbGluZ3BvbGljeS1zdGVwc2NhbGluZ3BvbGljeWNvbmZpZ3VyYXRpb24uaHRtbCkgcHJvcGVydHkgdHlwZS4gXG4gKiAgRm9yIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXMsIHN1cHBvc2UgdGhhdCB5b3UgaGF2ZSBhbiBhbGFybSB3aXRoIGEgYnJlYWNoIHRocmVzaG9sZCBvZiA1MDogXG4gKiAgICsgIFRvIHRyaWdnZXIgYSBzdGVwIGFkanVzdG1lbnQgd2hlbiB0aGUgbWV0cmljIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byA1MCBhbmQgbGVzcyB0aGFuIDYwLCBzcGVjaWZ5IGEgbG93ZXIgYm91bmQgb2YgMCBhbmQgYW4gdXBwZXIgYm91bmQgb2YgMTAuIFxuICogICArICBUbyB0cmlnZ2VyIGEgc3RlcCBhZGp1c3RtZW50IHdoZW4gdGhlIG1ldHJpYyBpcyBncmVhdGVyIHRoYW4gNDAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byA1MCwgc3BlY2lmeSBhIGxvd2VyIGJvdW5kIG9mIC0xMCBhbmQgYW4gdXBwZXIgYm91bmQgb2YgMC4gXG4gKiAgIFxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1N0ZXAgYWRqdXN0bWVudHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9hcHBsaWNhdGlvbi91c2VyZ3VpZGUvYXBwbGljYXRpb24tYXV0by1zY2FsaW5nLXN0ZXAtc2NhbGluZy1wb2xpY2llcy5odG1sI2FzLXNjYWxpbmctc3RlcHMpIGluIHRoZSAqQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICogIFlvdSBjYW4gZmluZCBhIHNhbXBsZSB0ZW1wbGF0ZSBzbmlwcGV0IGluIHRoZSBbRXhhbXBsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1hcHBsaWNhdGlvbmF1dG9zY2FsaW5nLXNjYWxpbmdwb2xpY3kuaHRtbCNhd3MtcmVzb3VyY2UtYXBwbGljYXRpb25hdXRvc2NhbGluZy1zY2FsaW5ncG9saWN5LS1leGFtcGxlcykgc2VjdGlvbiBvZiB0aGUgYGBBV1M6OkFwcGxpY2F0aW9uQXV0b1NjYWxpbmc6OlNjYWxpbmdQb2xpY3lgYCBkb2N1bWVudGF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBBZGp1c3RtZW50IHtcbi8qKlxuICogVGhlIHVwcGVyIGJvdW5kIGZvciB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBhbGFybSB0aHJlc2hvbGQgYW5kIHRoZSBDbG91ZFdhdGNoIG1ldHJpYy4gSWYgdGhlIG1ldHJpYyB2YWx1ZSBpcyBhYm92ZSB0aGUgYnJlYWNoIHRocmVzaG9sZCwgdGhlIHVwcGVyIGJvdW5kIGlzIGV4Y2x1c2l2ZSAodGhlIG1ldHJpYyBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgdGhyZXNob2xkIHBsdXMgdGhlIHVwcGVyIGJvdW5kKS4gT3RoZXJ3aXNlLCBpdCBpcyBpbmNsdXNpdmUgKHRoZSBtZXRyaWMgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRocmVzaG9sZCBwbHVzIHRoZSB1cHBlciBib3VuZCkuIEEgbnVsbCB2YWx1ZSBpbmRpY2F0ZXMgcG9zaXRpdmUgaW5maW5pdHkuXG4gKiAgWW91IG11c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgdXBwZXIgb3IgbG93ZXIgYm91bmQuXG4gKi9cbk1ldHJpY0ludGVydmFsVXBwZXJCb3VuZD86IG51bWJlclxuLyoqXG4gKiBUaGUgbG93ZXIgYm91bmQgZm9yIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGFsYXJtIHRocmVzaG9sZCBhbmQgdGhlIENsb3VkV2F0Y2ggbWV0cmljLiBJZiB0aGUgbWV0cmljIHZhbHVlIGlzIGFib3ZlIHRoZSBicmVhY2ggdGhyZXNob2xkLCB0aGUgbG93ZXIgYm91bmQgaXMgaW5jbHVzaXZlICh0aGUgbWV0cmljIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0aHJlc2hvbGQgcGx1cyB0aGUgbG93ZXIgYm91bmQpLiBPdGhlcndpc2UsIGl0IGlzIGV4Y2x1c2l2ZSAodGhlIG1ldHJpYyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgdGhyZXNob2xkIHBsdXMgdGhlIGxvd2VyIGJvdW5kKS4gQSBudWxsIHZhbHVlIGluZGljYXRlcyBuZWdhdGl2ZSBpbmZpbml0eS5cbiAqICBZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IG9uZSB1cHBlciBvciBsb3dlciBib3VuZC5cbiAqL1xuTWV0cmljSW50ZXJ2YWxMb3dlckJvdW5kPzogbnVtYmVyXG4vKipcbiAqIFRoZSBhbW91bnQgYnkgd2hpY2ggdG8gc2NhbGUuIFRoZSBhZGp1c3RtZW50IGlzIGJhc2VkIG9uIHRoZSB2YWx1ZSB0aGF0IHlvdSBzcGVjaWZpZWQgaW4gdGhlIGBgQWRqdXN0bWVudFR5cGVgYCBwcm9wZXJ0eSAoZWl0aGVyIGFuIGFic29sdXRlIG51bWJlciBvciBhIHBlcmNlbnRhZ2UpLiBBIHBvc2l0aXZlIHZhbHVlIGFkZHMgdG8gdGhlIGN1cnJlbnQgY2FwYWNpdHkgYW5kIGEgbmVnYXRpdmUgbnVtYmVyIHN1YnRyYWN0cyBmcm9tIHRoZSBjdXJyZW50IGNhcGFjaXR5LlxuICovXG5TY2FsaW5nQWRqdXN0bWVudDogbnVtYmVyXG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFwcGxpY2F0aW9uYXV0b3NjYWxpbmctc2NhbGluZ3BvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1hcHBsaWNhdGlvbmF1dG9zY2FsaW5nLXNjYWxpbmdwb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGBgQVdTOjpBcHBsaWNhdGlvbkF1dG9TY2FsaW5nOjpTY2FsaW5nUG9saWN5YGAgcmVzb3VyY2UgZGVmaW5lcyBhIHNjYWxpbmcgcG9saWN5IHRoYXQgQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIHVzZXMgdG8gYWRqdXN0IHRoZSBjYXBhY2l0eSBvZiBhIHNjYWxhYmxlIHRhcmdldC4gXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVGFyZ2V0IHRyYWNraW5nIHNjYWxpbmcgcG9saWNpZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9hcHBsaWNhdGlvbi91c2VyZ3VpZGUvYXBwbGljYXRpb24tYXV0by1zY2FsaW5nLXRhcmdldC10cmFja2luZy5odG1sKSBhbmQgW1N0ZXAgc2NhbGluZyBwb2xpY2llc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2FwcGxpY2F0aW9uL3VzZXJndWlkZS9hcHBsaWNhdGlvbi1hdXRvLXNjYWxpbmctc3RlcC1zY2FsaW5nLXBvbGljaWVzLmh0bWwpIGluIHRoZSAqQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfQVBQTElDQVRJT05BVVRPU0NBTElOR19TQ0FMSU5HUE9MSUNZIHtcbi8qKlxuICogVGhlIHNjYWxpbmcgcG9saWN5IHR5cGUuXG4gKiAgVGhlIGZvbGxvd2luZyBwb2xpY3kgdHlwZXMgYXJlIHN1cHBvcnRlZDogXG4gKiAgIGBgVGFyZ2V0VHJhY2tpbmdTY2FsaW5nYGDigJROb3Qgc3VwcG9ydGVkIGZvciBBbWF6b24gRU1SXG4gKiAgIGBgU3RlcFNjYWxpbmdgYOKAlE5vdCBzdXBwb3J0ZWQgZm9yIER5bmFtb0RCLCBBbWF6b24gQ29tcHJlaGVuZCwgTGFtYmRhLCBBbWF6b24gS2V5c3BhY2VzLCBBbWF6b24gTVNLLCBBbWF6b24gRWxhc3RpQ2FjaGUsIG9yIE5lcHR1bmUuXG4gKi9cblBvbGljeVR5cGU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgcmVzb3VyY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBzY2FsaW5nIHBvbGljeS4gVGhpcyBzdHJpbmcgY29uc2lzdHMgb2YgdGhlIHJlc291cmNlIHR5cGUgYW5kIHVuaXF1ZSBpZGVudGlmaWVyLlxuICogICArICBFQ1Mgc2VydmljZSAtIFRoZSByZXNvdXJjZSB0eXBlIGlzIGBgc2VydmljZWBgIGFuZCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgaXMgdGhlIGNsdXN0ZXIgbmFtZSBhbmQgc2VydmljZSBuYW1lLiBFeGFtcGxlOiBgYHNlcnZpY2UvbXktY2x1c3Rlci9teS1zZXJ2aWNlYGAuXG4gKiAgICsgIFNwb3QgRmxlZXQgLSBUaGUgcmVzb3VyY2UgdHlwZSBpcyBgYHNwb3QtZmxlZXQtcmVxdWVzdGBgIGFuZCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgaXMgdGhlIFNwb3QgRmxlZXQgcmVxdWVzdCBJRC4gRXhhbXBsZTogYGBzcG90LWZsZWV0LXJlcXVlc3Qvc2ZyLTczZmJkMmNlLWFhMzAtNDk0Yy04Nzg4LTFjZWU0RVhBTVBMRWBgLlxuICogICArICBFTVIgY2x1c3RlciAtIFRoZSByZXNvdXJjZSB0eXBlIGlzIGBgaW5zdGFuY2Vncm91cGBgIGFuZCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgaXMgdGhlIGNsdXN0ZXIgSUQgYW5kIGluc3RhbmNlIGdyb3VwIElELiBFeGFtcGxlOiBgYGluc3RhbmNlZ3JvdXAvai0yRUVaTllLVUExTlRWL2lnLTE3OTFZNEUxTDhZSTBgYC5cbiAqICAgKyAgQXBwU3RyZWFtIDIuMCBmbGVldCAtIFRoZSByZXNvdXJjZSB0eXBlIGlzIGBgZmxlZXRgYCBhbmQgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGlzIHRoZSBmbGVldCBuYW1lLiBFeGFtcGxlOiBgYGZsZWV0L3NhbXBsZS1mbGVldGBgLlxuICogICArICBEeW5hbW9EQiB0YWJsZSAtIFRoZSByZXNvdXJjZSB0eXBlIGlzIGBgdGFibGVgYCBhbmQgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGlzIHRoZSB0YWJsZSBuYW1lLiBFeGFtcGxlOiBgYHRhYmxlL215LXRhYmxlYGAuXG4gKiAgICsgIER5bmFtb0RCIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXggLSBUaGUgcmVzb3VyY2UgdHlwZSBpcyBgYGluZGV4YGAgYW5kIHRoZSB1bmlxdWUgaWRlbnRpZmllciBpcyB0aGUgaW5kZXggbmFtZS4gRXhhbXBsZTogYGB0YWJsZS9teS10YWJsZS9pbmRleC9teS10YWJsZS1pbmRleGBgLlxuICogICArICBBdXJvcmEgREIgY2x1c3RlciAtIFRoZSByZXNvdXJjZSB0eXBlIGlzIGBgY2x1c3RlcmBgIGFuZCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgaXMgdGhlIGNsdXN0ZXIgbmFtZS4gRXhhbXBsZTogYGBjbHVzdGVyOm15LWRiLWNsdXN0ZXJgYC5cbiAqICAgKyAgU2FnZU1ha2VyIGVuZHBvaW50IHZhcmlhbnQgLSBUaGUgcmVzb3VyY2UgdHlwZSBpcyBgYHZhcmlhbnRgYCBhbmQgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGlzIHRoZSByZXNvdXJjZSBJRC4gRXhhbXBsZTogYGBlbmRwb2ludC9teS1lbmQtcG9pbnQvdmFyaWFudC9LTWVhbnNDbHVzdGVyaW5nYGAuXG4gKiAgICsgIEN1c3RvbSByZXNvdXJjZXMgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCBhIHJlc291cmNlIHR5cGUuIFRoaXMgcGFyYW1ldGVyIG11c3Qgc3BlY2lmeSB0aGUgYGBPdXRwdXRWYWx1ZWBgIGZyb20gdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIHN0YWNrIHVzZWQgdG8gYWNjZXNzIHRoZSByZXNvdXJjZXMuIFRoZSB1bmlxdWUgaWRlbnRpZmllciBpcyBkZWZpbmVkIGJ5IHRoZSBzZXJ2aWNlIHByb3ZpZGVyLiBNb3JlIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBpbiBvdXIgW0dpdEh1YiByZXBvc2l0b3J5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtYXV0by1zY2FsaW5nLWN1c3RvbS1yZXNvdXJjZSkuXG4gKiAgICsgIEFtYXpvbiBDb21wcmVoZW5kIGRvY3VtZW50IGNsYXNzaWZpY2F0aW9uIGVuZHBvaW50IC0gVGhlIHJlc291cmNlIHR5cGUgYW5kIHVuaXF1ZSBpZGVudGlmaWVyIGFyZSBzcGVjaWZpZWQgdXNpbmcgdGhlIGVuZHBvaW50IEFSTi4gRXhhbXBsZTogYGBhcm46YXdzOmNvbXByZWhlbmQ6dXMtd2VzdC0yOjEyMzQ1Njc4OTAxMjpkb2N1bWVudC1jbGFzc2lmaWVyLWVuZHBvaW50L0VYQU1QTEVgYC5cbiAqICAgKyAgQW1hem9uIENvbXByZWhlbmQgZW50aXR5IHJlY29nbml6ZXIgZW5kcG9pbnQgLSBUaGUgcmVzb3VyY2UgdHlwZSBhbmQgdW5pcXVlIGlkZW50aWZpZXIgYXJlIHNwZWNpZmllZCB1c2luZyB0aGUgZW5kcG9pbnQgQVJOLiBFeGFtcGxlOiBgYGFybjphd3M6Y29tcHJlaGVuZDp1cy13ZXN0LTI6MTIzNDU2Nzg5MDEyOmVudGl0eS1yZWNvZ25pemVyLWVuZHBvaW50L0VYQU1QTEVgYC5cbiAqICAgKyAgTGFtYmRhIHByb3Zpc2lvbmVkIGNvbmN1cnJlbmN5IC0gVGhlIHJlc291cmNlIHR5cGUgaXMgYGBmdW5jdGlvbmBgIGFuZCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgaXMgdGhlIGZ1bmN0aW9uIG5hbWUgd2l0aCBhIGZ1bmN0aW9uIHZlcnNpb24gb3IgYWxpYXMgbmFtZSBzdWZmaXggdGhhdCBpcyBub3QgYGAkTEFURVNUYGAuIEV4YW1wbGU6IGBgZnVuY3Rpb246bXktZnVuY3Rpb246cHJvZGBgIG9yIGBgZnVuY3Rpb246bXktZnVuY3Rpb246MWBgLlxuICogICArICBBbWF6b24gS2V5c3BhY2VzIHRhYmxlIC0gVGhlIHJlc291cmNlIHR5cGUgaXMgYGB0YWJsZWBgIGFuZCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgaXMgdGhlIHRhYmxlIG5hbWUuIEV4YW1wbGU6IGBga2V5c3BhY2UvbXlrZXlzcGFjZS90YWJsZS9teXRhYmxlYGAuXG4gKiAgICsgIEFtYXpvbiBNU0sgY2x1c3RlciAtIFRoZSByZXNvdXJjZSB0eXBlIGFuZCB1bmlxdWUgaWRlbnRpZmllciBhcmUgc3BlY2lmaWVkIHVzaW5nIHRoZSBjbHVzdGVyIEFSTi4gRXhhbXBsZTogYGBhcm46YXdzOmthZmthOnVzLWVhc3QtMToxMjM0NTY3ODkwMTI6Y2x1c3Rlci9kZW1vLWNsdXN0ZXItMS82MzU3ZTBiMi0wZTZhLTRiODYtYTBiNC03MGRmOTM0YzJlMzEtNWBgLlxuICogICArICBBbWF6b24gRWxhc3RpQ2FjaGUgcmVwbGljYXRpb24gZ3JvdXAgLSBUaGUgcmVzb3VyY2UgdHlwZSBpcyBgYHJlcGxpY2F0aW9uLWdyb3VwYGAgYW5kIHRoZSB1bmlxdWUgaWRlbnRpZmllciBpcyB0aGUgcmVwbGljYXRpb24gZ3JvdXAgbmFtZS4gRXhhbXBsZTogYGByZXBsaWNhdGlvbi1ncm91cC9teWNsdXN0ZXJgYC5cbiAqICAgKyAgTmVwdHVuZSBjbHVzdGVyIC0gVGhlIHJlc291cmNlIHR5cGUgaXMgYGBjbHVzdGVyYGAgYW5kIHRoZSB1bmlxdWUgaWRlbnRpZmllciBpcyB0aGUgY2x1c3RlciBuYW1lLiBFeGFtcGxlOiBgYGNsdXN0ZXI6bXljbHVzdGVyYGAuXG4gKiAgICsgIFNhZ2VNYWtlciBzZXJ2ZXJsZXNzIGVuZHBvaW50IC0gVGhlIHJlc291cmNlIHR5cGUgaXMgYGB2YXJpYW50YGAgYW5kIHRoZSB1bmlxdWUgaWRlbnRpZmllciBpcyB0aGUgcmVzb3VyY2UgSUQuIEV4YW1wbGU6IGBgZW5kcG9pbnQvbXktZW5kLXBvaW50L3ZhcmlhbnQvS01lYW5zQ2x1c3RlcmluZ2BgLlxuICogICArICBTYWdlTWFrZXIgaW5mZXJlbmNlIGNvbXBvbmVudCAtIFRoZSByZXNvdXJjZSB0eXBlIGlzIGBgaW5mZXJlbmNlLWNvbXBvbmVudGBgIGFuZCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgaXMgdGhlIHJlc291cmNlIElELiBFeGFtcGxlOiBgYGluZmVyZW5jZS1jb21wb25lbnQvbXktaW5mZXJlbmNlLWNvbXBvbmVudGBgLlxuICogICArICBQb29sIG9mIFdvcmtTcGFjZXMgLSBUaGUgcmVzb3VyY2UgdHlwZSBpcyBgYHdvcmtzcGFjZXNwb29sYGAgYW5kIHRoZSB1bmlxdWUgaWRlbnRpZmllciBpcyB0aGUgcG9vbCBJRC4gRXhhbXBsZTogYGB3b3Jrc3BhY2VzcG9vbC93c3Bvb2wtMTIzNDU2YGAuXG4gKi9cblJlc291cmNlSWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIENsb3VkRm9ybWF0aW9uLWdlbmVyYXRlZCBJRCBvZiBhbiBBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgc2NhbGFibGUgdGFyZ2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgSUQsIHNlZSB0aGUgUmV0dXJuIFZhbHVlIHNlY3Rpb24gb2YgdGhlIGBgQVdTOjpBcHBsaWNhdGlvbkF1dG9TY2FsaW5nOjpTY2FsYWJsZVRhcmdldGBgIHJlc291cmNlLlxuICogICBZb3UgbXVzdCBzcGVjaWZ5IGVpdGhlciB0aGUgYGBTY2FsaW5nVGFyZ2V0SWRgYCBwcm9wZXJ0eSwgb3IgdGhlIGBgUmVzb3VyY2VJZGBgLCBgYFNjYWxhYmxlRGltZW5zaW9uYGAsIGFuZCBgYFNlcnZpY2VOYW1lc3BhY2VgYCBwcm9wZXJ0aWVzLCBidXQgbm90IGJvdGguXG4gKi9cblNjYWxpbmdUYXJnZXRJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgc2NhbGluZyBwb2xpY3kuXG4gKiAgVXBkYXRlcyB0byB0aGUgbmFtZSBvZiBhIHRhcmdldCB0cmFja2luZyBzY2FsaW5nIHBvbGljeSBhcmUgbm90IHN1cHBvcnRlZCwgdW5sZXNzIHlvdSBhbHNvIHVwZGF0ZSB0aGUgbWV0cmljIHVzZWQgZm9yIHNjYWxpbmcuIFRvIGNoYW5nZSBvbmx5IGEgdGFyZ2V0IHRyYWNraW5nIHNjYWxpbmcgcG9saWN5J3MgbmFtZSwgZmlyc3QgZGVsZXRlIHRoZSBwb2xpY3kgYnkgcmVtb3ZpbmcgdGhlIGV4aXN0aW5nIGBgQVdTOjpBcHBsaWNhdGlvbkF1dG9TY2FsaW5nOjpTY2FsaW5nUG9saWN5YGAgcmVzb3VyY2UgZnJvbSB0aGUgdGVtcGxhdGUgYW5kIHVwZGF0aW5nIHRoZSBzdGFjay4gVGhlbiwgcmVjcmVhdGUgdGhlIHJlc291cmNlIHdpdGggdGhlIHNhbWUgc2V0dGluZ3MgYW5kIGEgZGlmZmVyZW50IG5hbWUuXG4gKi9cblBvbGljeU5hbWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZXNwYWNlIG9mIHRoZSBBV1Mgc2VydmljZSB0aGF0IHByb3ZpZGVzIHRoZSByZXNvdXJjZSwgb3IgYSBgYGN1c3RvbS1yZXNvdXJjZWBgLlxuICovXG5TZXJ2aWNlTmFtZXNwYWNlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBzY2FsYWJsZSBkaW1lbnNpb24uIFRoaXMgc3RyaW5nIGNvbnNpc3RzIG9mIHRoZSBzZXJ2aWNlIG5hbWVzcGFjZSwgcmVzb3VyY2UgdHlwZSwgYW5kIHNjYWxpbmcgcHJvcGVydHkuXG4gKiAgICsgICBgYGVjczpzZXJ2aWNlOkRlc2lyZWRDb3VudGBgIC0gVGhlIHRhc2sgY291bnQgb2YgYW4gRUNTIHNlcnZpY2UuXG4gKiAgICsgICBgYGVsYXN0aWNtYXByZWR1Y2U6aW5zdGFuY2Vncm91cDpJbnN0YW5jZUNvdW50YGAgLSBUaGUgaW5zdGFuY2UgY291bnQgb2YgYW4gRU1SIEluc3RhbmNlIEdyb3VwLlxuICogICArICAgYGBlYzI6c3BvdC1mbGVldC1yZXF1ZXN0OlRhcmdldENhcGFjaXR5YGAgLSBUaGUgdGFyZ2V0IGNhcGFjaXR5IG9mIGEgU3BvdCBGbGVldC5cbiAqICAgKyAgIGBgYXBwc3RyZWFtOmZsZWV0OkRlc2lyZWRDYXBhY2l0eWBgIC0gVGhlIGNhcGFjaXR5IG9mIGFuIEFwcFN0cmVhbSAyLjAgZmxlZXQuXG4gKiAgICsgICBgYGR5bmFtb2RiOnRhYmxlOlJlYWRDYXBhY2l0eVVuaXRzYGAgLSBUaGUgcHJvdmlzaW9uZWQgcmVhZCBjYXBhY2l0eSBmb3IgYSBEeW5hbW9EQiB0YWJsZS5cbiAqICAgKyAgIGBgZHluYW1vZGI6dGFibGU6V3JpdGVDYXBhY2l0eVVuaXRzYGAgLSBUaGUgcHJvdmlzaW9uZWQgd3JpdGUgY2FwYWNpdHkgZm9yIGEgRHluYW1vREIgdGFibGUuXG4gKiAgICsgICBgYGR5bmFtb2RiOmluZGV4OlJlYWRDYXBhY2l0eVVuaXRzYGAgLSBUaGUgcHJvdmlzaW9uZWQgcmVhZCBjYXBhY2l0eSBmb3IgYSBEeW5hbW9EQiBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LlxuICogICArICAgYGBkeW5hbW9kYjppbmRleDpXcml0ZUNhcGFjaXR5VW5pdHNgYCAtIFRoZSBwcm92aXNpb25lZCB3cml0ZSBjYXBhY2l0eSBmb3IgYSBEeW5hbW9EQiBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LlxuICogICArICAgYGByZHM6Y2x1c3RlcjpSZWFkUmVwbGljYUNvdW50YGAgLSBUaGUgY291bnQgb2YgQXVyb3JhIFJlcGxpY2FzIGluIGFuIEF1cm9yYSBEQiBjbHVzdGVyLiBBdmFpbGFibGUgZm9yIEF1cm9yYSBNeVNRTC1jb21wYXRpYmxlIGVkaXRpb24gYW5kIEF1cm9yYSBQb3N0Z3JlU1FMLWNvbXBhdGlibGUgZWRpdGlvbi5cbiAqICAgKyAgIGBgc2FnZW1ha2VyOnZhcmlhbnQ6RGVzaXJlZEluc3RhbmNlQ291bnRgYCAtIFRoZSBudW1iZXIgb2YgRUMyIGluc3RhbmNlcyBmb3IgYSBTYWdlTWFrZXIgbW9kZWwgZW5kcG9pbnQgdmFyaWFudC5cbiAqICAgKyAgIGBgY3VzdG9tLXJlc291cmNlOlJlc291cmNlVHlwZTpQcm9wZXJ0eWBgIC0gVGhlIHNjYWxhYmxlIGRpbWVuc2lvbiBmb3IgYSBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZWQgYnkgeW91ciBvd24gYXBwbGljYXRpb24gb3Igc2VydmljZS5cbiAqICAgKyAgIGBgY29tcHJlaGVuZDpkb2N1bWVudC1jbGFzc2lmaWVyLWVuZHBvaW50OkRlc2lyZWRJbmZlcmVuY2VVbml0c2BgIC0gVGhlIG51bWJlciBvZiBpbmZlcmVuY2UgdW5pdHMgZm9yIGFuIEFtYXpvbiBDb21wcmVoZW5kIGRvY3VtZW50IGNsYXNzaWZpY2F0aW9uIGVuZHBvaW50LlxuICogICArICAgYGBjb21wcmVoZW5kOmVudGl0eS1yZWNvZ25pemVyLWVuZHBvaW50OkRlc2lyZWRJbmZlcmVuY2VVbml0c2BgIC0gVGhlIG51bWJlciBvZiBpbmZlcmVuY2UgdW5pdHMgZm9yIGFuIEFtYXpvbiBDb21wcmVoZW5kIGVudGl0eSByZWNvZ25pemVyIGVuZHBvaW50LlxuICogICArICAgYGBsYW1iZGE6ZnVuY3Rpb246UHJvdmlzaW9uZWRDb25jdXJyZW5jeWBgIC0gVGhlIHByb3Zpc2lvbmVkIGNvbmN1cnJlbmN5IGZvciBhIExhbWJkYSBmdW5jdGlvbi5cbiAqICAgKyAgIGBgY2Fzc2FuZHJhOnRhYmxlOlJlYWRDYXBhY2l0eVVuaXRzYGAgLSBUaGUgcHJvdmlzaW9uZWQgcmVhZCBjYXBhY2l0eSBmb3IgYW4gQW1hem9uIEtleXNwYWNlcyB0YWJsZS5cbiAqICAgKyAgIGBgY2Fzc2FuZHJhOnRhYmxlOldyaXRlQ2FwYWNpdHlVbml0c2BgIC0gVGhlIHByb3Zpc2lvbmVkIHdyaXRlIGNhcGFjaXR5IGZvciBhbiBBbWF6b24gS2V5c3BhY2VzIHRhYmxlLlxuICogICArICAgYGBrYWZrYTpicm9rZXItc3RvcmFnZTpWb2x1bWVTaXplYGAgLSBUaGUgcHJvdmlzaW9uZWQgdm9sdW1lIHNpemUgKGluIEdpQikgZm9yIGJyb2tlcnMgaW4gYW4gQW1hem9uIE1TSyBjbHVzdGVyLlxuICogICArICAgYGBlbGFzdGljYWNoZTpyZXBsaWNhdGlvbi1ncm91cDpOb2RlR3JvdXBzYGAgLSBUaGUgbnVtYmVyIG9mIG5vZGUgZ3JvdXBzIGZvciBhbiBBbWF6b24gRWxhc3RpQ2FjaGUgcmVwbGljYXRpb24gZ3JvdXAuXG4gKiAgICsgICBgYGVsYXN0aWNhY2hlOnJlcGxpY2F0aW9uLWdyb3VwOlJlcGxpY2FzYGAgLSBUaGUgbnVtYmVyIG9mIHJlcGxpY2FzIHBlciBub2RlIGdyb3VwIGZvciBhbiBBbWF6b24gRWxhc3RpQ2FjaGUgcmVwbGljYXRpb24gZ3JvdXAuXG4gKiAgICsgICBgYG5lcHR1bmU6Y2x1c3RlcjpSZWFkUmVwbGljYUNvdW50YGAgLSBUaGUgY291bnQgb2YgcmVhZCByZXBsaWNhcyBpbiBhbiBBbWF6b24gTmVwdHVuZSBEQiBjbHVzdGVyLlxuICogICArICAgYGBzYWdlbWFrZXI6dmFyaWFudDpEZXNpcmVkUHJvdmlzaW9uZWRDb25jdXJyZW5jeWBgIC0gVGhlIHByb3Zpc2lvbmVkIGNvbmN1cnJlbmN5IGZvciBhIFNhZ2VNYWtlciBzZXJ2ZXJsZXNzIGVuZHBvaW50LlxuICogICArICAgYGBzYWdlbWFrZXI6aW5mZXJlbmNlLWNvbXBvbmVudDpEZXNpcmVkQ29weUNvdW50YGAgLSBUaGUgbnVtYmVyIG9mIGNvcGllcyBhY3Jvc3MgYW4gZW5kcG9pbnQgZm9yIGEgU2FnZU1ha2VyIGluZmVyZW5jZSBjb21wb25lbnQuXG4gKiAgICsgICBgYHdvcmtzcGFjZXM6d29ya3NwYWNlc3Bvb2w6RGVzaXJlZFVzZXJTZXNzaW9uc2BgIC0gVGhlIG51bWJlciBvZiB1c2VyIHNlc3Npb25zIGZvciB0aGUgV29ya1NwYWNlcyBpbiB0aGUgcG9vbC5cbiAqL1xuU2NhbGFibGVEaW1lbnNpb24/OiBzdHJpbmdcblRhcmdldFRyYWNraW5nU2NhbGluZ1BvbGljeUNvbmZpZ3VyYXRpb24/OiBUYXJnZXRUcmFja2luZ1NjYWxpbmdQb2xpY3lDb25maWd1cmF0aW9uXG5Bcm4/OiBzdHJpbmdcblN0ZXBTY2FsaW5nUG9saWN5Q29uZmlndXJhdGlvbj86IFN0ZXBTY2FsaW5nUG9saWN5Q29uZmlndXJhdGlvblxuUHJlZGljdGl2ZVNjYWxpbmdQb2xpY3lDb25maWd1cmF0aW9uPzogUHJlZGljdGl2ZVNjYWxpbmdQb2xpY3lDb25maWd1cmF0aW9uXG59XG4vKipcbiAqIEEgdGFyZ2V0IHRyYWNraW5nIHNjYWxpbmcgcG9saWN5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldFRyYWNraW5nU2NhbGluZ1BvbGljeUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgYW1vdW50IG9mIHRpbWUsIGluIHNlY29uZHMsIHRvIHdhaXQgZm9yIGEgcHJldmlvdXMgc2NhbGUtb3V0IGFjdGl2aXR5IHRvIHRha2UgZWZmZWN0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgZm9yIGRlZmF1bHQgdmFsdWVzLCBzZWUgW0RlZmluZSBjb29sZG93biBwZXJpb2RzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvYXBwbGljYXRpb24vdXNlcmd1aWRlL3RhcmdldC10cmFja2luZy1zY2FsaW5nLXBvbGljeS1vdmVydmlldy5odG1sI3RhcmdldC10cmFja2luZy1jb29sZG93bikgaW4gdGhlICpBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKi9cblNjYWxlT3V0Q29vbGRvd24/OiBudW1iZXJcbi8qKlxuICogVGhlIHRhcmdldCB2YWx1ZSBmb3IgdGhlIG1ldHJpYy4gQWx0aG91Z2ggdGhpcyBwcm9wZXJ0eSBhY2NlcHRzIG51bWJlcnMgb2YgdHlwZSBEb3VibGUsIGl0IHdvbid0IGFjY2VwdCB2YWx1ZXMgdGhhdCBhcmUgZWl0aGVyIHRvbyBzbWFsbCBvciB0b28gbGFyZ2UuIFZhbHVlcyBtdXN0IGJlIGluIHRoZSByYW5nZSBvZiAtMl4zNjAgdG8gMl4zNjAuIFRoZSB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgbnVtYmVyIGJhc2VkIG9uIHRoZSBjaG9pY2Ugb2YgbWV0cmljLiBGb3IgZXhhbXBsZSwgaWYgdGhlIG1ldHJpYyBpcyBDUFUgdXRpbGl6YXRpb24sIHRoZW4gdGhlIHRhcmdldCB2YWx1ZSBpcyBhIHBlcmNlbnQgdmFsdWUgdGhhdCByZXByZXNlbnRzIGhvdyBtdWNoIG9mIHRoZSBDUFUgY2FuIGJlIHVzZWQgYmVmb3JlIHNjYWxpbmcgb3V0LlxuICovXG5UYXJnZXRWYWx1ZTogbnVtYmVyXG5DdXN0b21pemVkTWV0cmljU3BlY2lmaWNhdGlvbj86IEN1c3RvbWl6ZWRNZXRyaWNTcGVjaWZpY2F0aW9uXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHNjYWxlIGluIGJ5IHRoZSB0YXJnZXQgdHJhY2tpbmcgc2NhbGluZyBwb2xpY3kgaXMgZGlzYWJsZWQuIElmIHRoZSB2YWx1ZSBpcyBgYHRydWVgYCwgc2NhbGUgaW4gaXMgZGlzYWJsZWQgYW5kIHRoZSB0YXJnZXQgdHJhY2tpbmcgc2NhbGluZyBwb2xpY3kgd29uJ3QgcmVtb3ZlIGNhcGFjaXR5IGZyb20gdGhlIHNjYWxhYmxlIHRhcmdldC4gT3RoZXJ3aXNlLCBzY2FsZSBpbiBpcyBlbmFibGVkIGFuZCB0aGUgdGFyZ2V0IHRyYWNraW5nIHNjYWxpbmcgcG9saWN5IGNhbiByZW1vdmUgY2FwYWNpdHkgZnJvbSB0aGUgc2NhbGFibGUgdGFyZ2V0LiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYGZhbHNlYGAuXG4gKi9cbkRpc2FibGVTY2FsZUluPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgYW1vdW50IG9mIHRpbWUsIGluIHNlY29uZHMsIGFmdGVyIGEgc2NhbGUtaW4gYWN0aXZpdHkgY29tcGxldGVzIGJlZm9yZSBhbm90aGVyIHNjYWxlLWluIGFjdGl2aXR5IGNhbiBzdGFydC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGZvciBkZWZhdWx0IHZhbHVlcywgc2VlIFtEZWZpbmUgY29vbGRvd24gcGVyaW9kc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2FwcGxpY2F0aW9uL3VzZXJndWlkZS90YXJnZXQtdHJhY2tpbmctc2NhbGluZy1wb2xpY3ktb3ZlcnZpZXcuaHRtbCN0YXJnZXQtdHJhY2tpbmctY29vbGRvd24pIGluIHRoZSAqQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5TY2FsZUluQ29vbGRvd24/OiBudW1iZXJcblByZWRlZmluZWRNZXRyaWNTcGVjaWZpY2F0aW9uPzogUHJlZGVmaW5lZE1ldHJpY1NwZWNpZmljYXRpb25cbn1cbi8qKlxuICogQSBjdXN0b21pemVkIG1ldHJpYy4gWW91IGNhbiBzcGVjaWZ5IGVpdGhlciBhIHByZWRlZmluZWQgbWV0cmljIG9yIGEgY3VzdG9taXplZCBtZXRyaWMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9taXplZE1ldHJpY1NwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgbWV0cmljLiBUbyBnZXQgdGhlIGV4YWN0IG1ldHJpYyBuYW1lLCBuYW1lc3BhY2UsIGFuZCBkaW1lbnNpb25zLCBpbnNwZWN0IHRoZSBbTWV0cmljXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9NZXRyaWMuaHRtbCkgb2JqZWN0IHRoYXQncyByZXR1cm5lZCBieSBhIGNhbGwgdG8gW0xpc3RNZXRyaWNzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9MaXN0TWV0cmljcy5odG1sKS5cbiAqL1xuTWV0cmljTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWV0cmljcyB0byBpbmNsdWRlIGluIHRoZSB0YXJnZXQgdHJhY2tpbmcgc2NhbGluZyBwb2xpY3ksIGFzIGEgbWV0cmljIGRhdGEgcXVlcnkuIFRoaXMgY2FuIGluY2x1ZGUgYm90aCByYXcgbWV0cmljIGFuZCBtZXRyaWMgbWF0aCBleHByZXNzaW9ucy5cbiAqL1xuTWV0cmljcz86IFRhcmdldFRyYWNraW5nTWV0cmljRGF0YVF1ZXJ5W11cbi8qKlxuICogVGhlIHN0YXRpc3RpYyBvZiB0aGUgbWV0cmljLlxuICovXG5TdGF0aXN0aWM/OiBzdHJpbmdcbi8qKlxuICogVGhlIGRpbWVuc2lvbnMgb2YgdGhlIG1ldHJpYy4gXG4gKiAgQ29uZGl0aW9uYWw6IElmIHlvdSBwdWJsaXNoZWQgeW91ciBtZXRyaWMgd2l0aCBkaW1lbnNpb25zLCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSBzYW1lIGRpbWVuc2lvbnMgaW4geW91ciBzY2FsaW5nIHBvbGljeS5cbiAqL1xuRGltZW5zaW9ucz86IE1ldHJpY0RpbWVuc2lvbltdXG4vKipcbiAqIFRoZSB1bml0IG9mIHRoZSBtZXRyaWMuIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgdGhlIHVuaXRzIHRoYXQgQ2xvdWRXYXRjaCBzdXBwb3J0cywgc2VlIHRoZSBbTWV0cmljRGF0dW1dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX01ldHJpY0RhdHVtLmh0bWwpIGRhdGEgdHlwZSBpbiB0aGUgKkFtYXpvbiBDbG91ZFdhdGNoIEFQSSBSZWZlcmVuY2UqLlxuICovXG5Vbml0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lc3BhY2Ugb2YgdGhlIG1ldHJpYy5cbiAqL1xuTmFtZXNwYWNlPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBtZXRyaWMgZGF0YSB0byByZXR1cm4uIEFsc28gZGVmaW5lcyB3aGV0aGVyIHRoaXMgY2FsbCBpcyByZXR1cm5pbmcgZGF0YSBmb3Igb25lIG1ldHJpYyBvbmx5LCBvciB3aGV0aGVyIGl0IGlzIHBlcmZvcm1pbmcgYSBtYXRoIGV4cHJlc3Npb24gb24gdGhlIHZhbHVlcyBvZiByZXR1cm5lZCBtZXRyaWMgc3RhdGlzdGljcyB0byBjcmVhdGUgYSBuZXcgdGltZSBzZXJpZXMuIEEgdGltZSBzZXJpZXMgaXMgYSBzZXJpZXMgb2YgZGF0YSBwb2ludHMsIGVhY2ggb2Ygd2hpY2ggaXMgYXNzb2NpYXRlZCB3aXRoIGEgdGltZXN0YW1wLlxuICogIFlvdSBjYW4gY2FsbCBmb3IgYSBzaW5nbGUgbWV0cmljIG9yIHBlcmZvcm0gbWF0aCBleHByZXNzaW9ucyBvbiBtdWx0aXBsZSBtZXRyaWNzLiBBbnkgZXhwcmVzc2lvbnMgdXNlZCBpbiBhIG1ldHJpYyBzcGVjaWZpY2F0aW9uIG11c3QgZXZlbnR1YWxseSByZXR1cm4gYSBzaW5nbGUgdGltZSBzZXJpZXMuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGV4YW1wbGVzLCBzZWUgW0NyZWF0ZSBhIHRhcmdldCB0cmFja2luZyBzY2FsaW5nIHBvbGljeSBmb3IgQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIHVzaW5nIG1ldHJpYyBtYXRoXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvYXBwbGljYXRpb24vdXNlcmd1aWRlL2FwcGxpY2F0aW9uLWF1dG8tc2NhbGluZy10YXJnZXQtdHJhY2tpbmctbWV0cmljLW1hdGguaHRtbCkgaW4gdGhlICpBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgIGBgVGFyZ2V0VHJhY2tpbmdNZXRyaWNEYXRhUXVlcnlgYCBpcyBhIHByb3BlcnR5IG9mIHRoZSBbQVdTOjpBcHBsaWNhdGlvbkF1dG9TY2FsaW5nOjpTY2FsaW5nUG9saWN5IEN1c3RvbWl6ZWRNZXRyaWNTcGVjaWZpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1hcHBsaWNhdGlvbmF1dG9zY2FsaW5nLXNjYWxpbmdwb2xpY3ktY3VzdG9taXplZG1ldHJpY3NwZWNpZmljYXRpb24uaHRtbCkgcHJvcGVydHkgdHlwZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRUcmFja2luZ01ldHJpY0RhdGFRdWVyeSB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRvIHJldHVybiB0aGUgdGltZXN0YW1wcyBhbmQgcmF3IGRhdGEgdmFsdWVzIG9mIHRoaXMgbWV0cmljLiBcbiAqICBJZiB5b3UgdXNlIGFueSBtYXRoIGV4cHJlc3Npb25zLCBzcGVjaWZ5IGBgdHJ1ZWBgIGZvciB0aGlzIHZhbHVlIGZvciBvbmx5IHRoZSBmaW5hbCBtYXRoIGV4cHJlc3Npb24gdGhhdCB0aGUgbWV0cmljIHNwZWNpZmljYXRpb24gaXMgYmFzZWQgb24uIFlvdSBtdXN0IHNwZWNpZnkgYGBmYWxzZWBgIGZvciBgYFJldHVybkRhdGFgYCBmb3IgYWxsIHRoZSBvdGhlciBtZXRyaWNzIGFuZCBleHByZXNzaW9ucyB1c2VkIGluIHRoZSBtZXRyaWMgc3BlY2lmaWNhdGlvbi5cbiAqICBJZiB5b3UgYXJlIG9ubHkgcmV0cmlldmluZyBtZXRyaWNzIGFuZCBub3QgcGVyZm9ybWluZyBhbnkgbWF0aCBleHByZXNzaW9ucywgZG8gbm90IHNwZWNpZnkgYW55dGhpbmcgZm9yIGBgUmV0dXJuRGF0YWBgLiBUaGlzIHNldHMgaXQgdG8gaXRzIGRlZmF1bHQgKGBgdHJ1ZWBgKS5cbiAqL1xuUmV0dXJuRGF0YT86IGJvb2xlYW5cbi8qKlxuICogVGhlIG1hdGggZXhwcmVzc2lvbiB0byBwZXJmb3JtIG9uIHRoZSByZXR1cm5lZCBkYXRhLCBpZiB0aGlzIG9iamVjdCBpcyBwZXJmb3JtaW5nIGEgbWF0aCBleHByZXNzaW9uLiBUaGlzIGV4cHJlc3Npb24gY2FuIHVzZSB0aGUgYGBJZGBgIG9mIHRoZSBvdGhlciBtZXRyaWNzIHRvIHJlZmVyIHRvIHRob3NlIG1ldHJpY3MsIGFuZCBjYW4gYWxzbyB1c2UgdGhlIGBgSWRgYCBvZiBvdGhlciBleHByZXNzaW9ucyB0byB1c2UgdGhlIHJlc3VsdCBvZiB0aG9zZSBleHByZXNzaW9ucy4gXG4gKiAgQ29uZGl0aW9uYWw6IFdpdGhpbiBlYWNoIGBgVGFyZ2V0VHJhY2tpbmdNZXRyaWNEYXRhUXVlcnlgYCBvYmplY3QsIHlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIGBgRXhwcmVzc2lvbmBgIG9yIGBgTWV0cmljU3RhdGBgLCBidXQgbm90IGJvdGguXG4gKi9cbkV4cHJlc3Npb24/OiBzdHJpbmdcbi8qKlxuICogQSBodW1hbi1yZWFkYWJsZSBsYWJlbCBmb3IgdGhpcyBtZXRyaWMgb3IgZXhwcmVzc2lvbi4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBpZiB0aGlzIGlzIGEgbWF0aCBleHByZXNzaW9uLCBzbyB0aGF0IHlvdSBrbm93IHdoYXQgdGhlIHZhbHVlIHJlcHJlc2VudHMuXG4gKi9cbkxhYmVsPzogc3RyaW5nXG5NZXRyaWNTdGF0PzogVGFyZ2V0VHJhY2tpbmdNZXRyaWNTdGF0XG4vKipcbiAqIEEgc2hvcnQgbmFtZSB0aGF0IGlkZW50aWZpZXMgdGhlIG9iamVjdCdzIHJlc3VsdHMgaW4gdGhlIHJlc3BvbnNlLiBUaGlzIG5hbWUgbXVzdCBiZSB1bmlxdWUgYW1vbmcgYWxsIGBgTWV0cmljRGF0YVF1ZXJ5YGAgb2JqZWN0cyBzcGVjaWZpZWQgZm9yIGEgc2luZ2xlIHNjYWxpbmcgcG9saWN5LiBJZiB5b3UgYXJlIHBlcmZvcm1pbmcgbWF0aCBleHByZXNzaW9ucyBvbiB0aGlzIHNldCBvZiBkYXRhLCB0aGlzIG5hbWUgcmVwcmVzZW50cyB0aGF0IGRhdGEgYW5kIGNhbiBzZXJ2ZSBhcyBhIHZhcmlhYmxlIGluIHRoZSBtYXRoZW1hdGljYWwgZXhwcmVzc2lvbi4gVGhlIHZhbGlkIGNoYXJhY3RlcnMgYXJlIGxldHRlcnMsIG51bWJlcnMsIGFuZCB1bmRlcnNjb3Jlcy4gVGhlIGZpcnN0IGNoYXJhY3RlciBtdXN0IGJlIGEgbG93ZXJjYXNlIGxldHRlci5cbiAqL1xuSWQ/OiBzdHJpbmdcbn1cbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIG1ldHJpYyBkYXRhIHRvIHJldHVybi5cbiAqICBDb25kaXRpb25hbDogV2l0aGluIGVhY2ggYGBNZXRyaWNEYXRhUXVlcnlgYCBvYmplY3QsIHlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIGBgRXhwcmVzc2lvbmBgIG9yIGBgTWV0cmljU3RhdGBgLCBidXQgbm90IGJvdGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0VHJhY2tpbmdNZXRyaWNTdGF0IHtcbi8qKlxuICogVGhlIHN0YXRpc3RpYyB0byByZXR1cm4uIEl0IGNhbiBpbmNsdWRlIGFueSBDbG91ZFdhdGNoIHN0YXRpc3RpYyBvciBleHRlbmRlZCBzdGF0aXN0aWMuIEZvciBhIGxpc3Qgb2YgdmFsaWQgdmFsdWVzLCBzZWUgdGhlIHRhYmxlIGluIFtTdGF0aXN0aWNzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvbW9uaXRvcmluZy9jbG91ZHdhdGNoX2NvbmNlcHRzLmh0bWwjU3RhdGlzdGljKSBpbiB0aGUgKkFtYXpvbiBDbG91ZFdhdGNoIFVzZXIgR3VpZGUqLlxuICogIFRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgbWV0cmljIGZvciBzY2FsaW5nIGlzIGBgQXZlcmFnZWBgLlxuICovXG5TdGF0Pzogc3RyaW5nXG5NZXRyaWM/OiBUYXJnZXRUcmFja2luZ01ldHJpY1xuLyoqXG4gKiBUaGUgdW5pdCB0byB1c2UgZm9yIHRoZSByZXR1cm5lZCBkYXRhIHBvaW50cy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiB0aGUgdW5pdHMgdGhhdCBDbG91ZFdhdGNoIHN1cHBvcnRzLCBzZWUgdGhlIFtNZXRyaWNEYXR1bV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTWV0cmljRGF0dW0uaHRtbCkgZGF0YSB0eXBlIGluIHRoZSAqQW1hem9uIENsb3VkV2F0Y2ggQVBJIFJlZmVyZW5jZSouXG4gKi9cblVuaXQ/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIENsb3VkV2F0Y2ggbWV0cmljIHRvIHJldHVybiwgaW5jbHVkaW5nIHRoZSBtZXRyaWMgbmFtZSwgbmFtZXNwYWNlLCBhbmQgZGltZW5zaW9ucy4gVG8gZ2V0IHRoZSBleGFjdCBtZXRyaWMgbmFtZSwgbmFtZXNwYWNlLCBhbmQgZGltZW5zaW9ucywgaW5zcGVjdCB0aGUgW01ldHJpY10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTWV0cmljLmh0bWwpIG9iamVjdCB0aGF0IGlzIHJldHVybmVkIGJ5IGEgY2FsbCB0byBbTGlzdE1ldHJpY3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0xpc3RNZXRyaWNzLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldFRyYWNraW5nTWV0cmljIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIG1ldHJpYy5cbiAqL1xuTWV0cmljTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgZGltZW5zaW9ucyBmb3IgdGhlIG1ldHJpYy4gRm9yIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBkaW1lbnNpb25zLCBzZWUgdGhlIEFXUyBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZSBmcm9tIHRoZSB0YWJsZSBpbiBbc2VydmljZXMgdGhhdCBwdWJsaXNoIENsb3VkV2F0Y2ggbWV0cmljc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L21vbml0b3JpbmcvYXdzLXNlcnZpY2VzLWNsb3Vkd2F0Y2gtbWV0cmljcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBDbG91ZFdhdGNoIFVzZXIgR3VpZGUqLiBcbiAqICBDb25kaXRpb25hbDogSWYgeW91IHB1Ymxpc2hlZCB5b3VyIG1ldHJpYyB3aXRoIGRpbWVuc2lvbnMsIHlvdSBtdXN0IHNwZWNpZnkgdGhlIHNhbWUgZGltZW5zaW9ucyBpbiB5b3VyIHNjYWxpbmcgcG9saWN5LlxuICovXG5EaW1lbnNpb25zPzogVGFyZ2V0VHJhY2tpbmdNZXRyaWNEaW1lbnNpb25bXVxuLyoqXG4gKiBUaGUgbmFtZXNwYWNlIG9mIHRoZSBtZXRyaWMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHRhYmxlIGluIFtzZXJ2aWNlcyB0aGF0IHB1Ymxpc2ggQ2xvdWRXYXRjaCBtZXRyaWNzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvbW9uaXRvcmluZy9hd3Mtc2VydmljZXMtY2xvdWR3YXRjaC1tZXRyaWNzLmh0bWwpIGluIHRoZSAqQW1hem9uIENsb3VkV2F0Y2ggVXNlciBHdWlkZSouXG4gKi9cbk5hbWVzcGFjZT86IHN0cmluZ1xufVxuLyoqXG4gKiBgYFRhcmdldFRyYWNraW5nTWV0cmljRGltZW5zaW9uYGAgc3BlY2lmaWVzIGEgbmFtZS92YWx1ZSBwYWlyIHRoYXQgaXMgcGFydCBvZiB0aGUgaWRlbnRpdHkgb2YgYSBDbG91ZFdhdGNoIG1ldHJpYyBmb3IgdGhlIGBgRGltZW5zaW9uc2BgIHByb3BlcnR5IG9mIHRoZSBbQVdTOjpBcHBsaWNhdGlvbkF1dG9TY2FsaW5nOjpTY2FsaW5nUG9saWN5IFRhcmdldFRyYWNraW5nTWV0cmljXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1hcHBsaWNhdGlvbmF1dG9zY2FsaW5nLXNjYWxpbmdwb2xpY3ktdGFyZ2V0dHJhY2tpbmdtZXRyaWMuaHRtbCkgcHJvcGVydHkgdHlwZS4gRHVwbGljYXRlIGRpbWVuc2lvbnMgYXJlIG5vdCBhbGxvd2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldFRyYWNraW5nTWV0cmljRGltZW5zaW9uIHtcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBkaW1lbnNpb24uXG4gKi9cblZhbHVlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBkaW1lbnNpb24uXG4gKi9cbk5hbWU/OiBzdHJpbmdcbn1cbi8qKlxuICogYGBNZXRyaWNEaW1lbnNpb25gYCBzcGVjaWZpZXMgYSBuYW1lL3ZhbHVlIHBhaXIgdGhhdCBpcyBwYXJ0IG9mIHRoZSBpZGVudGl0eSBvZiBhIENsb3VkV2F0Y2ggbWV0cmljIGZvciB0aGUgYGBEaW1lbnNpb25zYGAgcHJvcGVydHkgb2YgdGhlIFtBV1M6OkFwcGxpY2F0aW9uQXV0b1NjYWxpbmc6OlNjYWxpbmdQb2xpY3kgQ3VzdG9taXplZE1ldHJpY1NwZWNpZmljYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWFwcGxpY2F0aW9uYXV0b3NjYWxpbmctc2NhbGluZ3BvbGljeS1jdXN0b21pemVkbWV0cmljc3BlY2lmaWNhdGlvbi5odG1sKSBwcm9wZXJ0eSB0eXBlLiBEdXBsaWNhdGUgZGltZW5zaW9ucyBhcmUgbm90IGFsbG93ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0cmljRGltZW5zaW9uIHtcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBkaW1lbnNpb24uXG4gKi9cblZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGRpbWVuc2lvbi5cbiAqL1xuTmFtZTogc3RyaW5nXG59XG4vKipcbiAqIEEgcHJlZGVmaW5lZCBtZXRyaWMuIFlvdSBjYW4gc3BlY2lmeSBlaXRoZXIgYSBwcmVkZWZpbmVkIG1ldHJpYyBvciBhIGN1c3RvbWl6ZWQgbWV0cmljLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByZWRlZmluZWRNZXRyaWNTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogVGhlIG1ldHJpYyB0eXBlLiBUaGUgYGBBTEJSZXF1ZXN0Q291bnRQZXJUYXJnZXRgYCBtZXRyaWMgdHlwZSBhcHBsaWVzIG9ubHkgdG8gU3BvdCBmbGVldCByZXF1ZXN0cyBhbmQgRUNTIHNlcnZpY2VzLlxuICovXG5QcmVkZWZpbmVkTWV0cmljVHlwZTogc3RyaW5nXG4vKipcbiAqIElkZW50aWZpZXMgdGhlIHJlc291cmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWV0cmljIHR5cGUuIFlvdSBjYW4ndCBzcGVjaWZ5IGEgcmVzb3VyY2UgbGFiZWwgdW5sZXNzIHRoZSBtZXRyaWMgdHlwZSBpcyBgYEFMQlJlcXVlc3RDb3VudFBlclRhcmdldGBgIGFuZCB0aGVyZSBpcyBhIHRhcmdldCBncm91cCBhdHRhY2hlZCB0byB0aGUgU3BvdCBGbGVldCBvciBFQ1Mgc2VydmljZS5cbiAqICBZb3UgY3JlYXRlIHRoZSByZXNvdXJjZSBsYWJlbCBieSBhcHBlbmRpbmcgdGhlIGZpbmFsIHBvcnRpb24gb2YgdGhlIGxvYWQgYmFsYW5jZXIgQVJOIGFuZCB0aGUgZmluYWwgcG9ydGlvbiBvZiB0aGUgdGFyZ2V0IGdyb3VwIEFSTiBpbnRvIGEgc2luZ2xlIHZhbHVlLCBzZXBhcmF0ZWQgYnkgYSBmb3J3YXJkIHNsYXNoICgvKS4gVGhlIGZvcm1hdCBvZiB0aGUgcmVzb3VyY2UgbGFiZWwgaXM6XG4gKiAgIGBgYXBwL215LWFsYi83NzhkNDEyMzFiMTQxYTBmL3RhcmdldGdyb3VwL215LWFsYi10YXJnZXQtZ3JvdXAvOTQzZjAxN2YxMDBiZWNmZmBgLlxuICogIFdoZXJlOlxuICogICArICBhcHAvPGxvYWQtYmFsYW5jZXItbmFtZT4vPGxvYWQtYmFsYW5jZXItaWQ+IGlzIHRoZSBmaW5hbCBwb3J0aW9uIG9mIHRoZSBsb2FkIGJhbGFuY2VyIEFSTlxuICogICArICB0YXJnZXRncm91cC88dGFyZ2V0LWdyb3VwLW5hbWU+Lzx0YXJnZXQtZ3JvdXAtaWQ+IGlzIHRoZSBmaW5hbCBwb3J0aW9uIG9mIHRoZSB0YXJnZXQgZ3JvdXAgQVJOLlxuICogICBcbiAqICBUbyBmaW5kIHRoZSBBUk4gZm9yIGFuIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIsIHVzZSB0aGUgW0Rlc2NyaWJlTG9hZEJhbGFuY2Vyc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VsYXN0aWNsb2FkYmFsYW5jaW5nL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlTG9hZEJhbGFuY2Vycy5odG1sKSBBUEkgb3BlcmF0aW9uLiBUbyBmaW5kIHRoZSBBUk4gZm9yIHRoZSB0YXJnZXQgZ3JvdXAsIHVzZSB0aGUgW0Rlc2NyaWJlVGFyZ2V0R3JvdXBzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWxhc3RpY2xvYWRiYWxhbmNpbmcvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVUYXJnZXRHcm91cHMuaHRtbCkgQVBJIG9wZXJhdGlvbi5cbiAqL1xuUmVzb3VyY2VMYWJlbD86IHN0cmluZ1xufVxuLyoqXG4gKiBBIHN0ZXAgc2NhbGluZyBwb2xpY3kuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcFNjYWxpbmdQb2xpY3lDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIGFnZ3JlZ2F0aW9uIHR5cGUgZm9yIHRoZSBDbG91ZFdhdGNoIG1ldHJpY3MuIFZhbGlkIHZhbHVlcyBhcmUgYGBNaW5pbXVtYGAsIGBgTWF4aW11bWBgLCBhbmQgYGBBdmVyYWdlYGAuIElmIHRoZSBhZ2dyZWdhdGlvbiB0eXBlIGlzIG51bGwsIHRoZSB2YWx1ZSBpcyB0cmVhdGVkIGFzIGBgQXZlcmFnZWBgLlxuICovXG5NZXRyaWNBZ2dyZWdhdGlvblR5cGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB0byB3YWl0IGZvciBhIHByZXZpb3VzIHNjYWxpbmcgYWN0aXZpdHkgdG8gdGFrZSBlZmZlY3QuIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIDMwMC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29vbGRvd24gcGVyaW9kXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvYXBwbGljYXRpb24vdXNlcmd1aWRlL3N0ZXAtc2NhbGluZy1wb2xpY3ktb3ZlcnZpZXcuaHRtbCNzdGVwLXNjYWxpbmctY29vbGRvd24pIGluIHRoZSAqQXBwbGljYXRpb24gQXV0byBTY2FsaW5nIFVzZXIgR3VpZGUqLlxuICovXG5Db29sZG93bj86IG51bWJlclxuLyoqXG4gKiBBIHNldCBvZiBhZGp1c3RtZW50cyB0aGF0IGVuYWJsZSB5b3UgdG8gc2NhbGUgYmFzZWQgb24gdGhlIHNpemUgb2YgdGhlIGFsYXJtIGJyZWFjaC5cbiAqICBBdCBsZWFzdCBvbmUgc3RlcCBhZGp1c3RtZW50IGlzIHJlcXVpcmVkIGlmIHlvdSBhcmUgYWRkaW5nIGEgbmV3IHN0ZXAgc2NhbGluZyBwb2xpY3kgY29uZmlndXJhdGlvbi5cbiAqL1xuU3RlcEFkanVzdG1lbnRzPzogU3RlcEFkanVzdG1lbnRbXVxuLyoqXG4gKiBUaGUgbWluaW11bSB2YWx1ZSB0byBzY2FsZSBieSB3aGVuIHRoZSBhZGp1c3RtZW50IHR5cGUgaXMgYGBQZXJjZW50Q2hhbmdlSW5DYXBhY2l0eWBgLiBGb3IgZXhhbXBsZSwgc3VwcG9zZSB0aGF0IHlvdSBjcmVhdGUgYSBzdGVwIHNjYWxpbmcgcG9saWN5IHRvIHNjYWxlIG91dCBhbiBBbWF6b24gRUNTIHNlcnZpY2UgYnkgMjUgcGVyY2VudCBhbmQgeW91IHNwZWNpZnkgYSBgYE1pbkFkanVzdG1lbnRNYWduaXR1ZGVgYCBvZiAyLiBJZiB0aGUgc2VydmljZSBoYXMgNCB0YXNrcyBhbmQgdGhlIHNjYWxpbmcgcG9saWN5IGlzIHBlcmZvcm1lZCwgMjUgcGVyY2VudCBvZiA0IGlzIDEuIEhvd2V2ZXIsIGJlY2F1c2UgeW91IHNwZWNpZmllZCBhIGBgTWluQWRqdXN0bWVudE1hZ25pdHVkZWBgIG9mIDIsIEFwcGxpY2F0aW9uIEF1dG8gU2NhbGluZyBzY2FsZXMgb3V0IHRoZSBzZXJ2aWNlIGJ5IDIgdGFza3MuXG4gKi9cbk1pbkFkanVzdG1lbnRNYWduaXR1ZGU/OiBudW1iZXJcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGBgU2NhbGluZ0FkanVzdG1lbnRgYCB2YWx1ZSBpbiB0aGUgYGBTdGVwQWRqdXN0bWVudGBgIHByb3BlcnR5IGlzIGFuIGFic29sdXRlIG51bWJlciBvciBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGN1cnJlbnQgY2FwYWNpdHkuXG4gKi9cbkFkanVzdG1lbnRUeXBlPzogc3RyaW5nXG59XG4vKipcbiAqIGBgU3RlcEFkanVzdG1lbnRgYCBzcGVjaWZpZXMgYSBzdGVwIGFkanVzdG1lbnQgZm9yIHRoZSBgYFN0ZXBBZGp1c3RtZW50c2BgIHByb3BlcnR5IG9mIHRoZSBbQVdTOjpBcHBsaWNhdGlvbkF1dG9TY2FsaW5nOjpTY2FsaW5nUG9saWN5IFN0ZXBTY2FsaW5nUG9saWN5Q29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtYXBwbGljYXRpb25hdXRvc2NhbGluZy1zY2FsaW5ncG9saWN5LXN0ZXBzY2FsaW5ncG9saWN5Y29uZmlndXJhdGlvbi5odG1sKSBwcm9wZXJ0eSB0eXBlLiBcbiAqICBGb3IgdGhlIGZvbGxvd2luZyBleGFtcGxlcywgc3VwcG9zZSB0aGF0IHlvdSBoYXZlIGFuIGFsYXJtIHdpdGggYSBicmVhY2ggdGhyZXNob2xkIG9mIDUwOiBcbiAqICAgKyAgVG8gdHJpZ2dlciBhIHN0ZXAgYWRqdXN0bWVudCB3aGVuIHRoZSBtZXRyaWMgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDUwIGFuZCBsZXNzIHRoYW4gNjAsIHNwZWNpZnkgYSBsb3dlciBib3VuZCBvZiAwIGFuZCBhbiB1cHBlciBib3VuZCBvZiAxMC4gXG4gKiAgICsgIFRvIHRyaWdnZXIgYSBzdGVwIGFkanVzdG1lbnQgd2hlbiB0aGUgbWV0cmljIGlzIGdyZWF0ZXIgdGhhbiA0MCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDUwLCBzcGVjaWZ5IGEgbG93ZXIgYm91bmQgb2YgLTEwIGFuZCBhbiB1cHBlciBib3VuZCBvZiAwLiBcbiAqICAgXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU3RlcCBhZGp1c3RtZW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2FwcGxpY2F0aW9uL3VzZXJndWlkZS9hcHBsaWNhdGlvbi1hdXRvLXNjYWxpbmctc3RlcC1zY2FsaW5nLXBvbGljaWVzLmh0bWwjYXMtc2NhbGluZy1zdGVwcykgaW4gdGhlICpBcHBsaWNhdGlvbiBBdXRvIFNjYWxpbmcgVXNlciBHdWlkZSouXG4gKiAgWW91IGNhbiBmaW5kIGEgc2FtcGxlIHRlbXBsYXRlIHNuaXBwZXQgaW4gdGhlIFtFeGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWFwcGxpY2F0aW9uYXV0b3NjYWxpbmctc2NhbGluZ3BvbGljeS5odG1sI2F3cy1yZXNvdXJjZS1hcHBsaWNhdGlvbmF1dG9zY2FsaW5nLXNjYWxpbmdwb2xpY3ktLWV4YW1wbGVzKSBzZWN0aW9uIG9mIHRoZSBgYEFXUzo6QXBwbGljYXRpb25BdXRvU2NhbGluZzo6U2NhbGluZ1BvbGljeWBgIGRvY3VtZW50YXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcEFkanVzdG1lbnQge1xuLyoqXG4gKiBUaGUgdXBwZXIgYm91bmQgZm9yIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGFsYXJtIHRocmVzaG9sZCBhbmQgdGhlIENsb3VkV2F0Y2ggbWV0cmljLiBJZiB0aGUgbWV0cmljIHZhbHVlIGlzIGFib3ZlIHRoZSBicmVhY2ggdGhyZXNob2xkLCB0aGUgdXBwZXIgYm91bmQgaXMgZXhjbHVzaXZlICh0aGUgbWV0cmljIG11c3QgYmUgbGVzcyB0aGFuIHRoZSB0aHJlc2hvbGQgcGx1cyB0aGUgdXBwZXIgYm91bmQpLiBPdGhlcndpc2UsIGl0IGlzIGluY2x1c2l2ZSAodGhlIG1ldHJpYyBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgdGhyZXNob2xkIHBsdXMgdGhlIHVwcGVyIGJvdW5kKS4gQSBudWxsIHZhbHVlIGluZGljYXRlcyBwb3NpdGl2ZSBpbmZpbml0eS5cbiAqICBZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IG9uZSB1cHBlciBvciBsb3dlciBib3VuZC5cbiAqL1xuTWV0cmljSW50ZXJ2YWxVcHBlckJvdW5kPzogbnVtYmVyXG4vKipcbiAqIFRoZSBsb3dlciBib3VuZCBmb3IgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgYWxhcm0gdGhyZXNob2xkIGFuZCB0aGUgQ2xvdWRXYXRjaCBtZXRyaWMuIElmIHRoZSBtZXRyaWMgdmFsdWUgaXMgYWJvdmUgdGhlIGJyZWFjaCB0aHJlc2hvbGQsIHRoZSBsb3dlciBib3VuZCBpcyBpbmNsdXNpdmUgKHRoZSBtZXRyaWMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRocmVzaG9sZCBwbHVzIHRoZSBsb3dlciBib3VuZCkuIE90aGVyd2lzZSwgaXQgaXMgZXhjbHVzaXZlICh0aGUgbWV0cmljIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSB0aHJlc2hvbGQgcGx1cyB0aGUgbG93ZXIgYm91bmQpLiBBIG51bGwgdmFsdWUgaW5kaWNhdGVzIG5lZ2F0aXZlIGluZmluaXR5LlxuICogIFlvdSBtdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lIHVwcGVyIG9yIGxvd2VyIGJvdW5kLlxuICovXG5NZXRyaWNJbnRlcnZhbExvd2VyQm91bmQ/OiBudW1iZXJcbi8qKlxuICogVGhlIGFtb3VudCBieSB3aGljaCB0byBzY2FsZS4gVGhlIGFkanVzdG1lbnQgaXMgYmFzZWQgb24gdGhlIHZhbHVlIHRoYXQgeW91IHNwZWNpZmllZCBpbiB0aGUgYGBBZGp1c3RtZW50VHlwZWBgIHByb3BlcnR5IChlaXRoZXIgYW4gYWJzb2x1dGUgbnVtYmVyIG9yIGEgcGVyY2VudGFnZSkuIEEgcG9zaXRpdmUgdmFsdWUgYWRkcyB0byB0aGUgY3VycmVudCBjYXBhY2l0eSBhbmQgYSBuZWdhdGl2ZSBudW1iZXIgc3VidHJhY3RzIGZyb20gdGhlIGN1cnJlbnQgY2FwYWNpdHkuXG4gKi9cblNjYWxpbmdBZGp1c3RtZW50OiBudW1iZXJcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZGljdGl2ZVNjYWxpbmdQb2xpY3lDb25maWd1cmF0aW9uIHtcbk1heENhcGFjaXR5QnJlYWNoQmVoYXZpb3I/OiBzdHJpbmdcbk1heENhcGFjaXR5QnVmZmVyPzogbnVtYmVyXG5Nb2RlPzogc3RyaW5nXG5NZXRyaWNTcGVjaWZpY2F0aW9uczogUHJlZGljdGl2ZVNjYWxpbmdNZXRyaWNTcGVjaWZpY2F0aW9uW11cblNjaGVkdWxpbmdCdWZmZXJUaW1lPzogbnVtYmVyXG59XG5leHBvcnQgaW50ZXJmYWNlIFByZWRpY3RpdmVTY2FsaW5nTWV0cmljU3BlY2lmaWNhdGlvbiB7XG5DdXN0b21pemVkTG9hZE1ldHJpY1NwZWNpZmljYXRpb24/OiBQcmVkaWN0aXZlU2NhbGluZ0N1c3RvbWl6ZWRMb2FkTWV0cmljXG5QcmVkZWZpbmVkTG9hZE1ldHJpY1NwZWNpZmljYXRpb24/OiBQcmVkaWN0aXZlU2NhbGluZ1ByZWRlZmluZWRMb2FkTWV0cmljXG5UYXJnZXRWYWx1ZTogbnVtYmVyXG5QcmVkZWZpbmVkU2NhbGluZ01ldHJpY1NwZWNpZmljYXRpb24/OiBQcmVkaWN0aXZlU2NhbGluZ1ByZWRlZmluZWRTY2FsaW5nTWV0cmljXG5DdXN0b21pemVkQ2FwYWNpdHlNZXRyaWNTcGVjaWZpY2F0aW9uPzogUHJlZGljdGl2ZVNjYWxpbmdDdXN0b21pemVkQ2FwYWNpdHlNZXRyaWNcbkN1c3RvbWl6ZWRTY2FsaW5nTWV0cmljU3BlY2lmaWNhdGlvbj86IFByZWRpY3RpdmVTY2FsaW5nQ3VzdG9taXplZFNjYWxpbmdNZXRyaWNcblByZWRlZmluZWRNZXRyaWNQYWlyU3BlY2lmaWNhdGlvbj86IFByZWRpY3RpdmVTY2FsaW5nUHJlZGVmaW5lZE1ldHJpY1BhaXJcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZGljdGl2ZVNjYWxpbmdDdXN0b21pemVkTG9hZE1ldHJpYyB7XG5NZXRyaWNEYXRhUXVlcmllczogUHJlZGljdGl2ZVNjYWxpbmdNZXRyaWNEYXRhUXVlcnlbXVxufVxuZXhwb3J0IGludGVyZmFjZSBQcmVkaWN0aXZlU2NhbGluZ01ldHJpY0RhdGFRdWVyeSB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRvIHJldHVybiB0aGUgdGltZXN0YW1wcyBhbmQgcmF3IGRhdGEgdmFsdWVzIG9mIHRoaXMgbWV0cmljLlxuICovXG5SZXR1cm5EYXRhPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgbWF0aCBleHByZXNzaW9uIHRvIHBlcmZvcm0gb24gdGhlIHJldHVybmVkIGRhdGEsIGlmIHRoaXMgb2JqZWN0IGlzIHBlcmZvcm1pbmcgYSBtYXRoIGV4cHJlc3Npb24uXG4gKi9cbkV4cHJlc3Npb24/OiBzdHJpbmdcbi8qKlxuICogQSBodW1hbi1yZWFkYWJsZSBsYWJlbCBmb3IgdGhpcyBtZXRyaWMgb3IgZXhwcmVzc2lvbi4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBpZiB0aGlzIGlzIGEgbWF0aCBleHByZXNzaW9uLCBzbyB0aGF0IHlvdSBrbm93IHdoYXQgdGhlIHZhbHVlIHJlcHJlc2VudHMuXG4gKi9cbkxhYmVsPzogc3RyaW5nXG5NZXRyaWNTdGF0PzogUHJlZGljdGl2ZVNjYWxpbmdNZXRyaWNTdGF0XG4vKipcbiAqIEEgc2hvcnQgbmFtZSB0aGF0IGlkZW50aWZpZXMgdGhlIG9iamVjdCdzIHJlc3VsdHMgaW4gdGhlIHJlc3BvbnNlLlxuICovXG5JZD86IHN0cmluZ1xufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgbWV0cmljIGRhdGEgdG8gcmV0dXJuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByZWRpY3RpdmVTY2FsaW5nTWV0cmljU3RhdCB7XG4vKipcbiAqIFRoZSBzdGF0aXN0aWMgdG8gcmV0dXJuLiBJdCBjYW4gaW5jbHVkZSBhbnkgQ2xvdWRXYXRjaCBzdGF0aXN0aWMgb3IgZXh0ZW5kZWQgc3RhdGlzdGljLlxuICovXG5TdGF0Pzogc3RyaW5nXG5NZXRyaWM/OiBQcmVkaWN0aXZlU2NhbGluZ01ldHJpY1xuLyoqXG4gKiBUaGUgdW5pdCB0byB1c2UgZm9yIHRoZSByZXR1cm5lZCBkYXRhIHBvaW50cy5cbiAqL1xuVW5pdD86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgQ2xvdWRXYXRjaCBtZXRyaWMgdG8gcmV0dXJuLCBpbmNsdWRpbmcgdGhlIG1ldHJpYyBuYW1lLCBuYW1lc3BhY2UsIGFuZCBkaW1lbnNpb25zLiBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVkaWN0aXZlU2NhbGluZ01ldHJpYyB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBtZXRyaWMuXG4gKi9cbk1ldHJpY05hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIGRpbWVuc2lvbnMgZm9yIHRoZSBtZXRyaWMuXG4gKi9cbkRpbWVuc2lvbnM/OiBQcmVkaWN0aXZlU2NhbGluZ01ldHJpY0RpbWVuc2lvbltdXG4vKipcbiAqIFRoZSBuYW1lc3BhY2Ugb2YgdGhlIG1ldHJpYy5cbiAqL1xuTmFtZXNwYWNlPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIFByZWRpY3RpdmVTY2FsaW5nTWV0cmljRGltZW5zaW9uIHtcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBkaW1lbnNpb24uXG4gKi9cblZhbHVlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBkaW1lbnNpb24uXG4gKi9cbk5hbWU/OiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZGljdGl2ZVNjYWxpbmdQcmVkZWZpbmVkTG9hZE1ldHJpYyB7XG5QcmVkZWZpbmVkTWV0cmljVHlwZTogc3RyaW5nXG5SZXNvdXJjZUxhYmVsPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIFByZWRpY3RpdmVTY2FsaW5nUHJlZGVmaW5lZFNjYWxpbmdNZXRyaWMge1xuUHJlZGVmaW5lZE1ldHJpY1R5cGU6IHN0cmluZ1xuUmVzb3VyY2VMYWJlbD86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBQcmVkaWN0aXZlU2NhbGluZ0N1c3RvbWl6ZWRDYXBhY2l0eU1ldHJpYyB7XG5NZXRyaWNEYXRhUXVlcmllczogUHJlZGljdGl2ZVNjYWxpbmdNZXRyaWNEYXRhUXVlcnlbXVxufVxuZXhwb3J0IGludGVyZmFjZSBQcmVkaWN0aXZlU2NhbGluZ0N1c3RvbWl6ZWRTY2FsaW5nTWV0cmljIHtcbk1ldHJpY0RhdGFRdWVyaWVzOiBQcmVkaWN0aXZlU2NhbGluZ01ldHJpY0RhdGFRdWVyeVtdXG59XG5leHBvcnQgaW50ZXJmYWNlIFByZWRpY3RpdmVTY2FsaW5nUHJlZGVmaW5lZE1ldHJpY1BhaXIge1xuUHJlZGVmaW5lZE1ldHJpY1R5cGU6IHN0cmluZ1xuUmVzb3VyY2VMYWJlbD86IHN0cmluZ1xufVxuIl19
@@ -52,6 +52,10 @@ export interface _AWS_APPLICATIONINSIGHTS_APPLICATION {
52
52
  * The SNS topic provided to Application Insights that is associated to the created opsItem.
53
53
  */
54
54
  OpsItemSNSTopicArn?: string;
55
+ /**
56
+ * Application Insights sends notifications to this SNS topic whenever there is a problem update in the associated application.
57
+ */
58
+ SNSNotificationArn?: string;
55
59
  /**
56
60
  * The tags of Application Insights application.
57
61
  *