terraconstructs 0.1.7 → 0.1.9

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 (297) hide show
  1. package/.jsii +1602 -1223
  2. package/go.mod +83 -77
  3. package/go.sum +175 -159
  4. package/lib/asset-staging.js +1 -1
  5. package/lib/aws/arn.js +1 -1
  6. package/lib/aws/aws-asset-manager.js +1 -1
  7. package/lib/aws/aws-construct.js +1 -1
  8. package/lib/aws/aws-stack.js +1 -1
  9. package/lib/aws/aws-tags.js +2 -2
  10. package/lib/aws/cloudwatch/actions/appscaling.js +1 -1
  11. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  12. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  13. package/lib/aws/cloudwatch/actions/sns.js +1 -1
  14. package/lib/aws/cloudwatch/actions/ssm.js +2 -2
  15. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  16. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  17. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  18. package/lib/aws/cloudwatch/alarm.js +9 -8
  19. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  20. package/lib/aws/cloudwatch/dashboard.js +1 -1
  21. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  22. package/lib/aws/cloudwatch/graph.js +8 -8
  23. package/lib/aws/cloudwatch/layout.js +3 -3
  24. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  25. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  26. package/lib/aws/cloudwatch/log-group.js +1 -1
  27. package/lib/aws/cloudwatch/log-query.js +1 -1
  28. package/lib/aws/cloudwatch/log-stream.js +1 -1
  29. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  30. package/lib/aws/cloudwatch/metric.js +2 -2
  31. package/lib/aws/cloudwatch/pattern.js +3 -3
  32. package/lib/aws/cloudwatch/policy.js +1 -1
  33. package/lib/aws/cloudwatch/query-definition.js +2 -2
  34. package/lib/aws/cloudwatch/stats.js +1 -1
  35. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  36. package/lib/aws/cloudwatch/text.js +1 -1
  37. package/lib/aws/cloudwatch/variable.js +3 -3
  38. package/lib/aws/cloudwatch/widget.js +1 -1
  39. package/lib/aws/compute/access-log.js +9 -7
  40. package/lib/aws/compute/activity.js +1 -1
  41. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  42. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  43. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  44. package/lib/aws/compute/alb/application-listener.js +1 -1
  45. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  46. package/lib/aws/compute/alb/application-target-group.js +1 -1
  47. package/lib/aws/compute/alb/conditions.js +1 -1
  48. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  49. package/lib/aws/compute/alb/trust-store.js +1 -1
  50. package/lib/aws/compute/api-definition.d.ts +1 -1
  51. package/lib/aws/compute/api-definition.js +11 -16
  52. package/lib/aws/compute/api-key.js +7 -8
  53. package/lib/aws/compute/apigateway-util.js +10 -21
  54. package/lib/aws/compute/architecture.js +1 -1
  55. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  56. package/lib/aws/compute/authorizer.js +1 -1
  57. package/lib/aws/compute/authorizers/identity-source.js +4 -5
  58. package/lib/aws/compute/authorizers/lambda.js +8 -11
  59. package/lib/aws/compute/autoscaling-common/interval-utils.js +7 -11
  60. package/lib/aws/compute/base-path-mapping.js +6 -8
  61. package/lib/aws/compute/base-scalable-attribute.js +1 -1
  62. package/lib/aws/compute/bastion-host.js +1 -1
  63. package/lib/aws/compute/chain.js +1 -1
  64. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  65. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  66. package/lib/aws/compute/client-vpn-route.js +2 -2
  67. package/lib/aws/compute/code.js +23 -40
  68. package/lib/aws/compute/condition.js +1 -1
  69. package/lib/aws/compute/connections.js +1 -1
  70. package/lib/aws/compute/cors.js +1 -1
  71. package/lib/aws/compute/deployment.js +1 -1
  72. package/lib/aws/compute/domain-name.js +9 -8
  73. package/lib/aws/compute/event-invoke-config.js +1 -1
  74. package/lib/aws/compute/event-source-filter.js +2 -2
  75. package/lib/aws/compute/event-source-mapping.js +1 -1
  76. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  77. package/lib/aws/compute/event-sources/s3.js +1 -1
  78. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  79. package/lib/aws/compute/event-sources/sqs.js +1 -1
  80. package/lib/aws/compute/fields.js +4 -4
  81. package/lib/aws/compute/function-alias.js +1 -1
  82. package/lib/aws/compute/function-base.js +12 -12
  83. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  84. package/lib/aws/compute/function-destinations/function.js +1 -1
  85. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  86. package/lib/aws/compute/function-nodejs/function.js +1 -1
  87. package/lib/aws/compute/function-url.js +1 -1
  88. package/lib/aws/compute/function-vpc-config.generated.d.ts +3 -3
  89. package/lib/aws/compute/function-vpc-config.generated.js +1 -1
  90. package/lib/aws/compute/function.js +4 -3
  91. package/lib/aws/compute/gateway-response.js +2 -2
  92. package/lib/aws/compute/handler.js +1 -1
  93. package/lib/aws/compute/instance-types.js +1 -1
  94. package/lib/aws/compute/instance.js +1 -1
  95. package/lib/aws/compute/integration.js +10 -16
  96. package/lib/aws/compute/integrations/aws.js +4 -4
  97. package/lib/aws/compute/integrations/http.js +1 -1
  98. package/lib/aws/compute/integrations/lambda.js +1 -1
  99. package/lib/aws/compute/integrations/mock.js +1 -1
  100. package/lib/aws/compute/integrations/stepfunctions.js +4 -5
  101. package/lib/aws/compute/ip-addresses.js +2 -2
  102. package/lib/aws/compute/ipam.js +1 -1
  103. package/lib/aws/compute/key-pair.js +1 -1
  104. package/lib/aws/compute/lambda-api.js +7 -10
  105. package/lib/aws/compute/launch-template.js +2 -2
  106. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  107. package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
  108. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  109. package/lib/aws/compute/lb-shared/lb-listener-config.generated.d.ts +37 -31
  110. package/lib/aws/compute/lb-shared/lb-listener-config.generated.js +1 -1
  111. package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.d.ts +10 -4
  112. package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.js +1 -1
  113. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  114. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  115. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  116. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  117. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  118. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  119. package/lib/aws/compute/load-balancer.js +3 -3
  120. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  121. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  122. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  123. package/lib/aws/compute/machine-image/common.js +1 -1
  124. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  125. package/lib/aws/compute/method.js +1 -1
  126. package/lib/aws/compute/model.js +3 -3
  127. package/lib/aws/compute/nat.js +5 -5
  128. package/lib/aws/compute/network-acl-types.js +2 -2
  129. package/lib/aws/compute/network-acl.js +3 -3
  130. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  131. package/lib/aws/compute/nlb/network-listener.js +1 -1
  132. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  133. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  134. package/lib/aws/compute/peer.js +1 -1
  135. package/lib/aws/compute/placement-group.js +1 -1
  136. package/lib/aws/compute/port.js +1 -1
  137. package/lib/aws/compute/prefix-list.js +1 -1
  138. package/lib/aws/compute/requestvalidator.js +1 -1
  139. package/lib/aws/compute/resource.js +3 -3
  140. package/lib/aws/compute/restapi.js +9 -10
  141. package/lib/aws/compute/route.js +10 -10
  142. package/lib/aws/compute/runtime.d.ts +8 -0
  143. package/lib/aws/compute/runtime.js +20 -7
  144. package/lib/aws/compute/scalable-target.js +1 -1
  145. package/lib/aws/compute/schedule.js +6 -12
  146. package/lib/aws/compute/security-group.js +1 -1
  147. package/lib/aws/compute/stage.js +8 -11
  148. package/lib/aws/compute/state-graph.js +1 -1
  149. package/lib/aws/compute/state-machine-fragment.js +1 -1
  150. package/lib/aws/compute/state-machine.js +4 -4
  151. package/lib/aws/compute/states/choice.js +1 -1
  152. package/lib/aws/compute/states/custom-state.js +1 -1
  153. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  154. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  155. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  156. package/lib/aws/compute/states/distributed-map.js +1 -1
  157. package/lib/aws/compute/states/fail.js +1 -1
  158. package/lib/aws/compute/states/map-base.js +1 -1
  159. package/lib/aws/compute/states/map.js +1 -1
  160. package/lib/aws/compute/states/parallel.js +1 -1
  161. package/lib/aws/compute/states/pass.js +2 -2
  162. package/lib/aws/compute/states/state.js +1 -1
  163. package/lib/aws/compute/states/succeed.js +1 -1
  164. package/lib/aws/compute/states/task-base.js +2 -2
  165. package/lib/aws/compute/states/task.js +1 -1
  166. package/lib/aws/compute/states/wait.js +2 -2
  167. package/lib/aws/compute/step-scaling-action.js +1 -1
  168. package/lib/aws/compute/step-scaling-policy.js +9 -14
  169. package/lib/aws/compute/stepfunctions-api.js +5 -6
  170. package/lib/aws/compute/subnet-v2.js +2 -2
  171. package/lib/aws/compute/subnet.js +1 -1
  172. package/lib/aws/compute/target-tracking-scaling-policy.js +9 -12
  173. package/lib/aws/compute/task-credentials.js +1 -1
  174. package/lib/aws/compute/task-input.js +1 -1
  175. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  176. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  177. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  178. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  179. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  180. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  181. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  182. package/lib/aws/compute/types.js +1 -1
  183. package/lib/aws/compute/usage-plan.js +1 -1
  184. package/lib/aws/compute/user-data.js +3 -3
  185. package/lib/aws/compute/volume.js +2 -2
  186. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  187. package/lib/aws/compute/vpc-endpoint.js +6 -6
  188. package/lib/aws/compute/vpc-flow-logs.js +8 -6
  189. package/lib/aws/compute/vpc-link.js +1 -1
  190. package/lib/aws/compute/vpc-v2-base.js +1 -1
  191. package/lib/aws/compute/vpc-v2.js +2 -2
  192. package/lib/aws/compute/vpc.js +4 -4
  193. package/lib/aws/compute/vpn.js +3 -3
  194. package/lib/aws/edge/certificate.js +1 -1
  195. package/lib/aws/edge/distribution.js +3 -3
  196. package/lib/aws/edge/dns-alias-record-targets.js +6 -6
  197. package/lib/aws/edge/dns-record.js +13 -13
  198. package/lib/aws/edge/dns-zone.d.ts +1 -1
  199. package/lib/aws/edge/dns-zone.js +8 -7
  200. package/lib/aws/edge/function.js +2 -2
  201. package/lib/aws/edge/key-value-store.js +4 -4
  202. package/lib/aws/edge/origin.js +3 -3
  203. package/lib/aws/edge/response-headers-policy.js +1 -1
  204. package/lib/aws/encryption/alias.js +1 -1
  205. package/lib/aws/encryption/key.js +1 -1
  206. package/lib/aws/encryption/via-service-principal.js +1 -1
  207. package/lib/aws/iam/grant.js +2 -2
  208. package/lib/aws/iam/group.js +1 -1
  209. package/lib/aws/iam/instance-profile.js +1 -1
  210. package/lib/aws/iam/managed-policy.js +1 -1
  211. package/lib/aws/iam/oidc-provider.js +1 -1
  212. package/lib/aws/iam/policy-document-config.generated.d.ts +8 -8
  213. package/lib/aws/iam/policy-document-config.generated.js +1 -1
  214. package/lib/aws/iam/policy-document.js +1 -1
  215. package/lib/aws/iam/policy-statement-props.generated.d.ts +8 -8
  216. package/lib/aws/iam/policy-statement-props.generated.js +1 -1
  217. package/lib/aws/iam/policy-statement.js +1 -1
  218. package/lib/aws/iam/policy.js +1 -1
  219. package/lib/aws/iam/principals.js +20 -20
  220. package/lib/aws/iam/role.js +1 -1
  221. package/lib/aws/iam/saml-provider.js +2 -2
  222. package/lib/aws/iam/unknown-principal.js +1 -1
  223. package/lib/aws/iam/user.js +1 -1
  224. package/lib/aws/network/simple-ipv4-vpc.js +1 -1
  225. package/lib/aws/network/subnet-group.js +3 -3
  226. package/lib/aws/network/subnet.js +4 -4
  227. package/lib/aws/notify/archive.js +1 -1
  228. package/lib/aws/notify/connection.js +3 -3
  229. package/lib/aws/notify/event-bus.d.ts +19 -0
  230. package/lib/aws/notify/event-bus.js +22 -26
  231. package/lib/aws/notify/event-pattern.js +1 -1
  232. package/lib/aws/notify/input.js +2 -2
  233. package/lib/aws/notify/kinesis-stream.js +1 -1
  234. package/lib/aws/notify/notification-rule.js +1 -1
  235. package/lib/aws/notify/policy.js +1 -1
  236. package/lib/aws/notify/queue-config.generated.d.ts +18 -12
  237. package/lib/aws/notify/queue-config.generated.js +1 -1
  238. package/lib/aws/notify/queue-policy.js +1 -1
  239. package/lib/aws/notify/queue.js +1 -1
  240. package/lib/aws/notify/resource-policy.js +1 -1
  241. package/lib/aws/notify/rule.js +1 -1
  242. package/lib/aws/notify/schedule.js +1 -1
  243. package/lib/aws/notify/subscription-filter.js +7 -8
  244. package/lib/aws/notify/subscription.js +23 -25
  245. package/lib/aws/notify/subscriptions/email.js +1 -1
  246. package/lib/aws/notify/subscriptions/lambda.js +1 -1
  247. package/lib/aws/notify/subscriptions/sms.js +1 -1
  248. package/lib/aws/notify/subscriptions/sqs.js +1 -1
  249. package/lib/aws/notify/subscriptions/url.js +1 -1
  250. package/lib/aws/notify/targets/event-bus.js +1 -1
  251. package/lib/aws/notify/targets/function.js +1 -1
  252. package/lib/aws/notify/targets/log-group.js +2 -2
  253. package/lib/aws/notify/targets/sqs.js +1 -1
  254. package/lib/aws/notify/targets/state-machine.js +1 -1
  255. package/lib/aws/notify/topic-base.js +4 -4
  256. package/lib/aws/notify/topic.js +1 -1
  257. package/lib/aws/provider-config.generated.d.ts +41 -33
  258. package/lib/aws/provider-config.generated.js +1 -1
  259. package/lib/aws/storage/assets/image-asset.js +8 -12
  260. package/lib/aws/storage/assets/s3.js +4 -4
  261. package/lib/aws/storage/auth-token.js +2 -2
  262. package/lib/aws/storage/billing.js +1 -1
  263. package/lib/aws/storage/bucket-notifications.js +1 -1
  264. package/lib/aws/storage/bucket-policy.js +1 -1
  265. package/lib/aws/storage/bucket-source.js +1 -1
  266. package/lib/aws/storage/bucket.js +2 -2
  267. package/lib/aws/storage/capacity.js +1 -1
  268. package/lib/aws/storage/cors-config.generated.d.ts +9 -3
  269. package/lib/aws/storage/cors-config.generated.js +1 -1
  270. package/lib/aws/storage/cors-rule-config.generated.d.ts +5 -5
  271. package/lib/aws/storage/cors-rule-config.generated.js +1 -1
  272. package/lib/aws/storage/ecr-repository.js +19 -32
  273. package/lib/aws/storage/encryption.js +1 -1
  274. package/lib/aws/storage/lifecycle-config.generated.d.ts +7 -7
  275. package/lib/aws/storage/lifecycle-config.generated.js +1 -1
  276. package/lib/aws/storage/notification-targets/function.js +1 -1
  277. package/lib/aws/storage/notification-targets/queue.js +1 -1
  278. package/lib/aws/storage/origin-access-identity.js +1 -1
  279. package/lib/aws/storage/parameter.js +2 -2
  280. package/lib/aws/storage/table.js +50 -101
  281. package/lib/aws/storage/website-config.generated.d.ts +11 -5
  282. package/lib/aws/storage/website-config.generated.js +1 -1
  283. package/lib/bundling.js +7 -6
  284. package/lib/construct-base.js +2 -2
  285. package/lib/duration.js +1 -1
  286. package/lib/errors.js +5 -3
  287. package/lib/expiration.js +1 -1
  288. package/lib/fs/ignore.js +4 -4
  289. package/lib/fs/index.js +1 -1
  290. package/lib/index.d.ts +1 -0
  291. package/lib/index.js +2 -1
  292. package/lib/private/asset-staging.js +3 -2
  293. package/lib/size.js +1 -1
  294. package/lib/stack-base.js +1 -1
  295. package/lib/terra-func.js +1 -1
  296. package/lib/time-zone.js +1 -1
  297. package/package.json +3 -3
@@ -8,6 +8,7 @@ const crypto = require("crypto");
8
8
  const os = require("os");
9
9
  // import { AssetStaging } from "../asset-staging";
10
10
  const asset_staging_1 = require("../asset-staging");
11
+ const errors_1 = require("../errors");
11
12
  class AssetBundlingBase {
12
13
  constructor(options) {
13
14
  this.options = options;
@@ -193,7 +194,7 @@ function dockerExec(args, options) {
193
194
  .split("\n")
194
195
  .map((line, idx) => `${idx === 0 ? firstLine : padding}${line}`);
195
196
  }
196
- throw new Error([
197
+ throw new errors_1.ExecutionError([
197
198
  `${prog} exited with ${reason}`,
198
199
  ...(prependLines("--> STDOUT: ", proc.stdout) ?? []),
199
200
  ...(prependLines("--> STDERR: ", proc.stderr) ?? []),
@@ -202,4 +203,4 @@ function dockerExec(args, options) {
202
203
  }
203
204
  return proc;
204
205
  }
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtc3RhZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcml2YXRlL2Fzc2V0LXN0YWdpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNHQUFzRzs7O0FBME10RyxnQ0F3REM7QUFoUUQsaURBQTREO0FBQzVELGlDQUFpQztBQUNqQyx5QkFBeUI7QUFDekIsbURBQW1EO0FBQ25ELG9EQUFnRDtBQWlCaEQsTUFBZSxpQkFBaUI7SUFFOUIsWUFBWSxPQUE2QjtRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBQ0Q7O09BRUc7SUFDTyxhQUFhO1FBQ3JCLElBQUksSUFBWSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN0QixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDM0IsQ0FBQzthQUFNLENBQUM7WUFDTiwwQkFBMEI7WUFDMUIsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQy9CLElBQUk7Z0JBQ0YsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyx1QkFBdUI7b0JBQ3pDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDbkMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNwQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsaUJBQWlCO0lBQzNEOztPQUVHO0lBQ0ksR0FBRztRQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUNyQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO1lBQzdCLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzFC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QUMsQ0FBQyxHQUFHLENBQ3JEO1NBQ0YsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFWixTQUFTLFlBQVksQ0FDbkIsU0FBaUIsRUFDakIsSUFBaUM7WUFFakMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMvQixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFDRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QyxPQUFPLElBQUk7aUJBQ1IsUUFBUSxDQUFDLE9BQU8sQ0FBQztpQkFDakIsS0FBSyxDQUFDLElBQUksQ0FBQztpQkFDWCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUVELE1BQU0sSUFBSSxLQUFLLENBQ2I7WUFDRSxHQUFHLElBQUksZ0JBQWdCLE1BQU0sRUFBRTtZQUMvQixHQUFHLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JELEdBQUcsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckQsZ0JBQWdCLE9BQU8sRUFBRTtTQUMxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE4Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2NvcmUvbGliL3ByaXZhdGUvYXNzZXQtc3RhZ2luZy50c1xuXG5pbXBvcnQgeyBzcGF3blN5bmMsIFNwYXduU3luY09wdGlvbnMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCAqIGFzIG9zIGZyb20gXCJvc1wiO1xuLy8gaW1wb3J0IHsgQXNzZXRTdGFnaW5nIH0gZnJvbSBcIi4uL2Fzc2V0LXN0YWdpbmdcIjtcbmltcG9ydCB7IEFzc2V0U3RhZ2luZyB9IGZyb20gXCIuLi9hc3NldC1zdGFnaW5nXCI7XG5pbXBvcnQgeyBCdW5kbGluZ09wdGlvbnMgfSBmcm9tIFwiLi4vYnVuZGxpbmdcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBEb2NrZXIgYmFzZWQgYnVuZGxpbmcgb2YgYXNzZXRzXG4gKi9cbmludGVyZmFjZSBBc3NldEJ1bmRsaW5nT3B0aW9ucyBleHRlbmRzIEJ1bmRsaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQYXRoIHdoZXJlIHRoZSBzb3VyY2UgZmlsZXMgYXJlIGxvY2F0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZVBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIFBhdGggd2hlcmUgdGhlIG91dHB1dCBmaWxlcyBzaG91bGQgYmUgc3RvcmVkXG4gICAqL1xuICByZWFkb25seSBidW5kbGVEaXI6IHN0cmluZztcbn1cblxuYWJzdHJhY3QgY2xhc3MgQXNzZXRCdW5kbGluZ0Jhc2Uge1xuICBwcm90ZWN0ZWQgb3B0aW9uczogQXNzZXRCdW5kbGluZ09wdGlvbnM7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFzc2V0QnVuZGxpbmdPcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBhIHVzZWZ1bCBkZWZhdWx0IHVzZXIgaWYgbm90IGdpdmVuIG90aGVyd2lzZVxuICAgKi9cbiAgcHJvdGVjdGVkIGRldGVybWluZVVzZXIoKSB7XG4gICAgbGV0IHVzZXI6IHN0cmluZztcbiAgICBpZiAodGhpcy5vcHRpb25zLnVzZXIpIHtcbiAgICAgIHVzZXIgPSB0aGlzLm9wdGlvbnMudXNlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGVmYXVsdCB0byBjdXJyZW50IHVzZXJcbiAgICAgIGNvbnN0IHVzZXJJbmZvID0gb3MudXNlckluZm8oKTtcbiAgICAgIHVzZXIgPVxuICAgICAgICB1c2VySW5mby51aWQgIT09IC0xIC8vIHVpZCBpcyAtMSBvbiBXaW5kb3dzXG4gICAgICAgICAgPyBgJHt1c2VySW5mby51aWR9OiR7dXNlckluZm8uZ2lkfWBcbiAgICAgICAgICA6IFwiMTAwMDoxMDAwXCI7XG4gICAgfVxuICAgIHJldHVybiB1c2VyO1xuICB9XG59XG5cbi8qKlxuICogQnVuZGxlcyBmaWxlcyB3aXRoIGJpbmQgbW91bnQgYXMgY29weSBtZXRob2RcbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2V0QnVuZGxpbmdCaW5kTW91bnQgZXh0ZW5kcyBBc3NldEJ1bmRsaW5nQmFzZSB7XG4gIC8qKlxuICAgKiBCdW5kbGUgZmlsZXMgd2l0aCBiaW5kIG1vdW50IGFzIGNvcHkgbWV0aG9kXG4gICAqL1xuICBwdWJsaWMgcnVuKCkge1xuICAgIHRoaXMub3B0aW9ucy5pbWFnZS5ydW4oe1xuICAgICAgY29tbWFuZDogdGhpcy5vcHRpb25zLmNvbW1hbmQsXG4gICAgICB1c2VyOiB0aGlzLmRldGVybWluZVVzZXIoKSxcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLm9wdGlvbnMuZW52aXJvbm1lbnQsXG4gICAgICBlbnRyeXBvaW50OiB0aGlzLm9wdGlvbnMuZW50cnlwb2ludCxcbiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6XG4gICAgICAgIHRoaXMub3B0aW9ucy53b3JraW5nRGlyZWN0b3J5ID8/IEFzc2V0U3RhZ2luZy5CVU5ETElOR19JTlBVVF9ESVIsXG4gICAgICBzZWN1cml0eU9wdDogdGhpcy5vcHRpb25zLnNlY3VyaXR5T3B0ID8/IFwiXCIsXG4gICAgICB2b2x1bWVzRnJvbTogdGhpcy5vcHRpb25zLnZvbHVtZXNGcm9tLFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICB7XG4gICAgICAgICAgaG9zdFBhdGg6IHRoaXMub3B0aW9ucy5zb3VyY2VQYXRoLFxuICAgICAgICAgIGNvbnRhaW5lclBhdGg6IEFzc2V0U3RhZ2luZy5CVU5ETElOR19JTlBVVF9ESVIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBob3N0UGF0aDogdGhpcy5vcHRpb25zLmJ1bmRsZURpcixcbiAgICAgICAgICBjb250YWluZXJQYXRoOiBBc3NldFN0YWdpbmcuQlVORExJTkdfT1VUUFVUX0RJUixcbiAgICAgICAgfSxcbiAgICAgICAgLi4uKHRoaXMub3B0aW9ucy52b2x1bWVzID8/IFtdKSxcbiAgICAgIF0sXG4gICAgICBuZXR3b3JrOiB0aGlzLm9wdGlvbnMubmV0d29yayxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGVzIGEgaGVscGVyIGNvbnRhaW5lciBmb3IgY29weWluZyBidW5kbGluZyByZWxhdGVkIGZpbGVzIHRvIHNwZWNpZmljIGlucHV0IGFuZCBvdXRwdXQgdm9sdW1lc1xuICovXG5leHBvcnQgY2xhc3MgQXNzZXRCdW5kbGluZ1ZvbHVtZUNvcHkgZXh0ZW5kcyBBc3NldEJ1bmRsaW5nQmFzZSB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBEb2NrZXIgdm9sdW1lIHRoYXQgaXMgdXNlZCBmb3IgdGhlIGFzc2V0IGlucHV0XG4gICAqL1xuICBwcml2YXRlIGlucHV0Vm9sdW1lTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgRG9ja2VyIHZvbHVtZSB0aGF0IGlzIHVzZWQgZm9yIHRoZSBhc3NldCBvdXRwdXRcbiAgICovXG4gIHByaXZhdGUgb3V0cHV0Vm9sdW1lTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgRG9ja2VyIGhlbHBlciBjb250YWluZXIgdG8gY29weSBmaWxlcyBpbnRvIHRoZSB2b2x1bWVcbiAgICovXG4gIHB1YmxpYyBjb3B5Q29udGFpbmVyTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFzc2V0QnVuZGxpbmdPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gICAgY29uc3QgY29weVN1ZmZpeCA9IGNyeXB0by5yYW5kb21CeXRlcygxMikudG9TdHJpbmcoXCJoZXhcIik7XG4gICAgdGhpcy5pbnB1dFZvbHVtZU5hbWUgPSBgYXNzZXRJbnB1dCR7Y29weVN1ZmZpeH1gO1xuICAgIHRoaXMub3V0cHV0Vm9sdW1lTmFtZSA9IGBhc3NldE91dHB1dCR7Y29weVN1ZmZpeH1gO1xuICAgIHRoaXMuY29weUNvbnRhaW5lck5hbWUgPSBgY29weUNvbnRhaW5lciR7Y29weVN1ZmZpeH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdm9sdW1lcyBmb3IgYXNzZXQgaW5wdXQgYW5kIG91dHB1dFxuICAgKi9cbiAgcHJpdmF0ZSBwcmVwYXJlVm9sdW1lcygpIHtcbiAgICBkb2NrZXJFeGVjKFtcInZvbHVtZVwiLCBcImNyZWF0ZVwiLCB0aGlzLmlucHV0Vm9sdW1lTmFtZV0pO1xuICAgIGRvY2tlckV4ZWMoW1widm9sdW1lXCIsIFwiY3JlYXRlXCIsIHRoaXMub3V0cHV0Vm9sdW1lTmFtZV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdm9sdW1lcyBmb3IgYXNzZXQgaW5wdXQgYW5kIG91dHB1dFxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhblZvbHVtZXMoKSB7XG4gICAgZG9ja2VyRXhlYyhbXCJ2b2x1bWVcIiwgXCJybVwiLCB0aGlzLmlucHV0Vm9sdW1lTmFtZV0pO1xuICAgIGRvY2tlckV4ZWMoW1widm9sdW1lXCIsIFwicm1cIiwgdGhpcy5vdXRwdXRWb2x1bWVOYW1lXSk7XG4gIH1cblxuICAvKipcbiAgICogcnVucyBhIGhlbHBlciBjb250YWluZXIgdGhhdCBob2xkcyB2b2x1bWVzIGFuZCBkb2VzIHNvbWUgcHJlcGFyYXRpb24gdGFza3NcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdGhhdCB3aWxsIGxhdGVyIGFjY2VzcyB0aGVzZSBmaWxlcyBhbmQgbmVlZHMgcGVybWlzc2lvbnMgdG8gZG8gc29cbiAgICovXG4gIHByaXZhdGUgc3RhcnRIZWxwZXJDb250YWluZXIodXNlcjogc3RyaW5nKSB7XG4gICAgZG9ja2VyRXhlYyhbXG4gICAgICBcInJ1blwiLFxuICAgICAgXCItLW5hbWVcIixcbiAgICAgIHRoaXMuY29weUNvbnRhaW5lck5hbWUsXG4gICAgICBcIi12XCIsXG4gICAgICBgJHt0aGlzLmlucHV0Vm9sdW1lTmFtZX06JHtBc3NldFN0YWdpbmcuQlVORExJTkdfSU5QVVRfRElSfWAsXG4gICAgICBcIi12XCIsXG4gICAgICBgJHt0aGlzLm91dHB1dFZvbHVtZU5hbWV9OiR7QXNzZXRTdGFnaW5nLkJVTkRMSU5HX09VVFBVVF9ESVJ9YCxcbiAgICAgIFwicHVibGljLmVjci5hd3MvZG9ja2VyL2xpYnJhcnkvYWxwaW5lXCIsXG4gICAgICBcInNoXCIsXG4gICAgICBcIi1jXCIsXG4gICAgICBgbWtkaXIgLXAgJHtBc3NldFN0YWdpbmcuQlVORExJTkdfSU5QVVRfRElSfSAmJiBjaG93biAtUiAke3VzZXJ9ICR7QXNzZXRTdGFnaW5nLkJVTkRMSU5HX09VVFBVVF9ESVJ9ICYmIGNob3duIC1SICR7dXNlcn0gJHtBc3NldFN0YWdpbmcuQlVORExJTkdfSU5QVVRfRElSfWAsXG4gICAgXSk7XG4gIH1cblxuICAvKipcbiAgICogcmVtb3ZlcyB0aGUgRG9ja2VyIGhlbHBlciBjb250YWluZXJcbiAgICovXG4gIHByaXZhdGUgY2xlYW5IZWxwZXJDb250YWluZXIoKSB7XG4gICAgZG9ja2VyRXhlYyhbXCJybVwiLCB0aGlzLmNvcHlDb250YWluZXJOYW1lXSk7XG4gIH1cblxuICAvKipcbiAgICogY29weSBmaWxlcyBmcm9tIHRoZSBob3N0IHdoZXJlIHRoaXMgaXMgZXhlY3V0ZWQgaW50byB0aGUgaW5wdXQgdm9sdW1lXG4gICAqIEBwYXJhbSBzb3VyY2VQYXRoIC0gcGF0aCB0byBmb2xkZXIgd2hlcmUgZmlsZXMgc2hvdWxkIGJlIGNvcGllZCBmcm9tIC0gd2l0aG91dCB0cmFpbGluZyBzbGFzaFxuICAgKi9cbiAgcHJpdmF0ZSBjb3B5SW5wdXRGcm9tKHNvdXJjZVBhdGg6IHN0cmluZykge1xuICAgIGRvY2tlckV4ZWMoW1xuICAgICAgXCJjcFwiLFxuICAgICAgYCR7c291cmNlUGF0aH0vLmAsXG4gICAgICBgJHt0aGlzLmNvcHlDb250YWluZXJOYW1lfToke0Fzc2V0U3RhZ2luZy5CVU5ETElOR19JTlBVVF9ESVJ9YCxcbiAgICBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb3B5IGZpbGVzIGZyb20gdGhlIHRoZSBvdXRwdXQgdm9sdW1lIHRvIHRoZSBob3N0IHdoZXJlIHRoaXMgaXMgZXhlY3V0ZWRcbiAgICogQHBhcmFtIG91dHB1dFBhdGggLSBwYXRoIHRvIGZvbGRlciB3aGVyZSBmaWxlcyBzaG91bGQgYmUgY29waWVkIHRvIC0gd2l0aG91dCB0cmFpbGluZyBzbGFzaFxuICAgKi9cbiAgcHJpdmF0ZSBjb3B5T3V0cHV0VG8ob3V0cHV0UGF0aDogc3RyaW5nKSB7XG4gICAgZG9ja2VyRXhlYyhbXG4gICAgICBcImNwXCIsXG4gICAgICBgJHt0aGlzLmNvcHlDb250YWluZXJOYW1lfToke0Fzc2V0U3RhZ2luZy5CVU5ETElOR19PVVRQVVRfRElSfS8uYCxcbiAgICAgIG91dHB1dFBhdGgsXG4gICAgXSk7XG4gIH1cblxuICAvKipcbiAgICogQnVuZGxlIGZpbGVzIHdpdGggVk9MVU1FX0NPUFkgbWV0aG9kXG4gICAqL1xuICBwdWJsaWMgcnVuKCkge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmRldGVybWluZVVzZXIoKTtcbiAgICB0aGlzLnByZXBhcmVWb2x1bWVzKCk7XG4gICAgdGhpcy5zdGFydEhlbHBlckNvbnRhaW5lcih1c2VyKTsgLy8gVE9ETyBoYW5kbGUgdXNlciBwcm9wZXJseVxuICAgIHRoaXMuY29weUlucHV0RnJvbSh0aGlzLm9wdGlvbnMuc291cmNlUGF0aCk7XG5cbiAgICB0aGlzLm9wdGlvbnMuaW1hZ2UucnVuKHtcbiAgICAgIGNvbW1hbmQ6IHRoaXMub3B0aW9ucy5jb21tYW5kLFxuICAgICAgdXNlcjogdXNlcixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLm9wdGlvbnMuZW52aXJvbm1lbnQsXG4gICAgICBlbnRyeXBvaW50OiB0aGlzLm9wdGlvbnMuZW50cnlwb2ludCxcbiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6XG4gICAgICAgIHRoaXMub3B0aW9ucy53b3JraW5nRGlyZWN0b3J5ID8/IEFzc2V0U3RhZ2luZy5CVU5ETElOR19JTlBVVF9ESVIsXG4gICAgICBzZWN1cml0eU9wdDogdGhpcy5vcHRpb25zLnNlY3VyaXR5T3B0ID8/IFwiXCIsXG4gICAgICB2b2x1bWVzOiB0aGlzLm9wdGlvbnMudm9sdW1lcyxcbiAgICAgIHZvbHVtZXNGcm9tOiBbXG4gICAgICAgIHRoaXMuY29weUNvbnRhaW5lck5hbWUsXG4gICAgICAgIC4uLih0aGlzLm9wdGlvbnMudm9sdW1lc0Zyb20gPz8gW10pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMuY29weU91dHB1dFRvKHRoaXMub3B0aW9ucy5idW5kbGVEaXIpO1xuICAgIHRoaXMuY2xlYW5IZWxwZXJDb250YWluZXIoKTtcbiAgICB0aGlzLmNsZWFuVm9sdW1lcygpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb2NrZXJFeGVjKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zPzogU3Bhd25TeW5jT3B0aW9ucykge1xuICBjb25zdCBwcm9nID0gcHJvY2Vzcy5lbnYuQ0RLX0RPQ0tFUiA/PyBcImRvY2tlclwiO1xuICBjb25zdCBwcm9jID0gc3Bhd25TeW5jKFxuICAgIHByb2csXG4gICAgYXJncyxcbiAgICBvcHRpb25zID8/IHtcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICBzdGRpbzogW1xuICAgICAgICAvLyBzaG93IERvY2tlciBvdXRwdXRcbiAgICAgICAgXCJpZ25vcmVcIiwgLy8gaWdub3JlIHN0ZGlvXG4gICAgICAgIC8vIEFXU0NESzogcHJvY2Vzcy5zdGRlcnIsIC8vIHJlZGlyZWN0IHN0ZG91dCB0byBzdGRlcnIgKGNhdXNlcyByYWRpeCBlcnJvciBpbiBidW4/KVxuICAgICAgICBcImluaGVyaXRcIixcbiAgICAgICAgXCJpbmhlcml0XCIsIC8vIGluaGVyaXQgc3RkZXJyXG4gICAgICBdLFxuICAgIH0sXG4gICk7XG5cbiAgaWYgKHByb2MuZXJyb3IpIHtcbiAgICB0aHJvdyBwcm9jLmVycm9yO1xuICB9XG5cbiAgaWYgKHByb2Muc3RhdHVzICE9PSAwKSB7XG4gICAgY29uc3QgcmVhc29uID1cbiAgICAgIHByb2Muc2lnbmFsICE9IG51bGwgPyBgc2lnbmFsICR7cHJvYy5zaWduYWx9YCA6IGBzdGF0dXMgJHtwcm9jLnN0YXR1c31gO1xuICAgIGNvbnN0IGNvbW1hbmQgPSBbXG4gICAgICBwcm9nLFxuICAgICAgLi4uYXJncy5tYXAoKGFyZykgPT5cbiAgICAgICAgL1teYS16MC05Xy1dL2kudGVzdChhcmcpID8gSlNPTi5zdHJpbmdpZnkoYXJnKSA6IGFyZyxcbiAgICAgICksXG4gICAgXS5qb2luKFwiIFwiKTtcblxuICAgIGZ1bmN0aW9uIHByZXBlbmRMaW5lcyhcbiAgICAgIGZpcnN0TGluZTogc3RyaW5nLFxuICAgICAgdGV4dDogQnVmZmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICk6IHN0cmluZ1tdIHtcbiAgICAgIGlmICghdGV4dCB8fCB0ZXh0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBjb25zdCBwYWRkaW5nID0gXCIgXCIucmVwZWF0KGZpcnN0TGluZS5sZW5ndGgpO1xuICAgICAgcmV0dXJuIHRleHRcbiAgICAgICAgLnRvU3RyaW5nKFwidXRmLThcIilcbiAgICAgICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgICAgIC5tYXAoKGxpbmUsIGlkeCkgPT4gYCR7aWR4ID09PSAwID8gZmlyc3RMaW5lIDogcGFkZGluZ30ke2xpbmV9YCk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgW1xuICAgICAgICBgJHtwcm9nfSBleGl0ZWQgd2l0aCAke3JlYXNvbn1gLFxuICAgICAgICAuLi4ocHJlcGVuZExpbmVzKFwiLS0+IFNURE9VVDogIFwiLCBwcm9jLnN0ZG91dCkgPz8gW10pLFxuICAgICAgICAuLi4ocHJlcGVuZExpbmVzKFwiLS0+IFNUREVSUjogIFwiLCBwcm9jLnN0ZGVycikgPz8gW10pLFxuICAgICAgICBgLS0+IENvbW1hbmQ6ICR7Y29tbWFuZH1gLFxuICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gcHJvYztcbn1cbiJdfQ==
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtc3RhZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcml2YXRlL2Fzc2V0LXN0YWdpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNHQUFzRzs7O0FBMk10RyxnQ0F3REM7QUFqUUQsaURBQTREO0FBQzVELGlDQUFpQztBQUNqQyx5QkFBeUI7QUFDekIsbURBQW1EO0FBQ25ELG9EQUFnRDtBQUVoRCxzQ0FBMkM7QUFnQjNDLE1BQWUsaUJBQWlCO0lBRTlCLFlBQVksT0FBNkI7UUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUNEOztPQUVHO0lBQ08sYUFBYTtRQUNyQixJQUFJLElBQVksQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQzNCLENBQUM7YUFBTSxDQUFDO1lBQ04sMEJBQTBCO1lBQzFCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMvQixJQUFJO2dCQUNGLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsdUJBQXVCO29CQUN6QyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxHQUFHLEVBQUU7b0JBQ25DLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDcEIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLHNCQUF1QixTQUFRLGlCQUFpQjtJQUMzRDs7T0FFRztJQUNJLEdBQUc7UUFDUixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDckIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTztZQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLGFB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LENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUNyRDtTQUNGLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRVosU0FBUyxZQUFZLENBQ25CLFNBQWlCLEVBQ2pCLElBQWlDO1lBRWpDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1lBQ0QsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsT0FBTyxJQUFJO2lCQUNSLFFBQVEsQ0FBQyxPQUFPLENBQUM7aUJBQ2pCLEtBQUssQ0FBQyxJQUFJLENBQUM7aUJBQ1gsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxNQUFNLElBQUksdUJBQWMsQ0FDdEI7WUFDRSxHQUFHLElBQUksZ0JBQWdCLE1BQU0sRUFBRTtZQUMvQixHQUFHLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JELEdBQUcsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckQsZ0JBQWdCLE9BQU8sRUFBRTtTQUMxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE4Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2NvcmUvbGliL3ByaXZhdGUvYXNzZXQtc3RhZ2luZy50c1xuXG5pbXBvcnQgeyBzcGF3blN5bmMsIFNwYXduU3luY09wdGlvbnMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCAqIGFzIG9zIGZyb20gXCJvc1wiO1xuLy8gaW1wb3J0IHsgQXNzZXRTdGFnaW5nIH0gZnJvbSBcIi4uL2Fzc2V0LXN0YWdpbmdcIjtcbmltcG9ydCB7IEFzc2V0U3RhZ2luZyB9IGZyb20gXCIuLi9hc3NldC1zdGFnaW5nXCI7XG5pbXBvcnQgeyBCdW5kbGluZ09wdGlvbnMgfSBmcm9tIFwiLi4vYnVuZGxpbmdcIjtcbmltcG9ydCB7IEV4ZWN1dGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIERvY2tlciBiYXNlZCBidW5kbGluZyBvZiBhc3NldHNcbiAqL1xuaW50ZXJmYWNlIEFzc2V0QnVuZGxpbmdPcHRpb25zIGV4dGVuZHMgQnVuZGxpbmdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFBhdGggd2hlcmUgdGhlIHNvdXJjZSBmaWxlcyBhcmUgbG9jYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlUGF0aDogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCB3aGVyZSB0aGUgb3V0cHV0IGZpbGVzIHNob3VsZCBiZSBzdG9yZWRcbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsZURpcjogc3RyaW5nO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBBc3NldEJ1bmRsaW5nQmFzZSB7XG4gIHByb3RlY3RlZCBvcHRpb25zOiBBc3NldEJ1bmRsaW5nT3B0aW9ucztcbiAgY29uc3RydWN0b3Iob3B0aW9uczogQXNzZXRCdW5kbGluZ09wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGEgdXNlZnVsIGRlZmF1bHQgdXNlciBpZiBub3QgZ2l2ZW4gb3RoZXJ3aXNlXG4gICAqL1xuICBwcm90ZWN0ZWQgZGV0ZXJtaW5lVXNlcigpIHtcbiAgICBsZXQgdXNlcjogc3RyaW5nO1xuICAgIGlmICh0aGlzLm9wdGlvbnMudXNlcikge1xuICAgICAgdXNlciA9IHRoaXMub3B0aW9ucy51c2VyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWZhdWx0IHRvIGN1cnJlbnQgdXNlclxuICAgICAgY29uc3QgdXNlckluZm8gPSBvcy51c2VySW5mbygpO1xuICAgICAgdXNlciA9XG4gICAgICAgIHVzZXJJbmZvLnVpZCAhPT0gLTEgLy8gdWlkIGlzIC0xIG9uIFdpbmRvd3NcbiAgICAgICAgICA/IGAke3VzZXJJbmZvLnVpZH06JHt1c2VySW5mby5naWR9YFxuICAgICAgICAgIDogXCIxMDAwOjEwMDBcIjtcbiAgICB9XG4gICAgcmV0dXJuIHVzZXI7XG4gIH1cbn1cblxuLyoqXG4gKiBCdW5kbGVzIGZpbGVzIHdpdGggYmluZCBtb3VudCBhcyBjb3B5IG1ldGhvZFxuICovXG5leHBvcnQgY2xhc3MgQXNzZXRCdW5kbGluZ0JpbmRNb3VudCBleHRlbmRzIEFzc2V0QnVuZGxpbmdCYXNlIHtcbiAgLyoqXG4gICAqIEJ1bmRsZSBmaWxlcyB3aXRoIGJpbmQgbW91bnQgYXMgY29weSBtZXRob2RcbiAgICovXG4gIHB1YmxpYyBydW4oKSB7XG4gICAgdGhpcy5vcHRpb25zLmltYWdlLnJ1bih7XG4gICAgICBjb21tYW5kOiB0aGlzLm9wdGlvbnMuY29tbWFuZCxcbiAgICAgIHVzZXI6IHRoaXMuZGV0ZXJtaW5lVXNlcigpLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMub3B0aW9ucy5lbnZpcm9ubWVudCxcbiAgICAgIGVudHJ5cG9pbnQ6IHRoaXMub3B0aW9ucy5lbnRyeXBvaW50LFxuICAgICAgd29ya2luZ0RpcmVjdG9yeTpcbiAgICAgICAgdGhpcy5vcHRpb25zLndvcmtpbmdEaXJlY3RvcnkgPz8gQXNzZXRTdGFnaW5nLkJVTkRMSU5HX0lOUFVUX0RJUixcbiAgICAgIHNlY3VyaXR5T3B0OiB0aGlzLm9wdGlvbnMuc2VjdXJpdHlPcHQgPz8gXCJcIixcbiAgICAgIHZvbHVtZXNGcm9tOiB0aGlzLm9wdGlvbnMudm9sdW1lc0Zyb20sXG4gICAgICB2b2x1bWVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBob3N0UGF0aDogdGhpcy5vcHRpb25zLnNvdXJjZVBhdGgsXG4gICAgICAgICAgY29udGFpbmVyUGF0aDogQXNzZXRTdGFnaW5nLkJVTkRMSU5HX0lOUFVUX0RJUixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGhvc3RQYXRoOiB0aGlzLm9wdGlvbnMuYnVuZGxlRGlyLFxuICAgICAgICAgIGNvbnRhaW5lclBhdGg6IEFzc2V0U3RhZ2luZy5CVU5ETElOR19PVVRQVVRfRElSLFxuICAgICAgICB9LFxuICAgICAgICAuLi4odGhpcy5vcHRpb25zLnZvbHVtZXMgPz8gW10pLFxuICAgICAgXSxcbiAgICAgIG5ldHdvcms6IHRoaXMub3B0aW9ucy5uZXR3b3JrLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYSBoZWxwZXIgY29udGFpbmVyIGZvciBjb3B5aW5nIGJ1bmRsaW5nIHJlbGF0ZWQgZmlsZXMgdG8gc3BlY2lmaWMgaW5wdXQgYW5kIG91dHB1dCB2b2x1bWVzXG4gKi9cbmV4cG9ydCBjbGFzcyBBc3NldEJ1bmRsaW5nVm9sdW1lQ29weSBleHRlbmRzIEFzc2V0QnVuZGxpbmdCYXNlIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIERvY2tlciB2b2x1bWUgdGhhdCBpcyB1c2VkIGZvciB0aGUgYXNzZXQgaW5wdXRcbiAgICovXG4gIHByaXZhdGUgaW5wdXRWb2x1bWVOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBEb2NrZXIgdm9sdW1lIHRoYXQgaXMgdXNlZCBmb3IgdGhlIGFzc2V0IG91dHB1dFxuICAgKi9cbiAgcHJpdmF0ZSBvdXRwdXRWb2x1bWVOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBEb2NrZXIgaGVscGVyIGNvbnRhaW5lciB0byBjb3B5IGZpbGVzIGludG8gdGhlIHZvbHVtZVxuICAgKi9cbiAgcHVibGljIGNvcHlDb250YWluZXJOYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQXNzZXRCdW5kbGluZ09wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgICBjb25zdCBjb3B5U3VmZml4ID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDEyKS50b1N0cmluZyhcImhleFwiKTtcbiAgICB0aGlzLmlucHV0Vm9sdW1lTmFtZSA9IGBhc3NldElucHV0JHtjb3B5U3VmZml4fWA7XG4gICAgdGhpcy5vdXRwdXRWb2x1bWVOYW1lID0gYGFzc2V0T3V0cHV0JHtjb3B5U3VmZml4fWA7XG4gICAgdGhpcy5jb3B5Q29udGFpbmVyTmFtZSA9IGBjb3B5Q29udGFpbmVyJHtjb3B5U3VmZml4fWA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB2b2x1bWVzIGZvciBhc3NldCBpbnB1dCBhbmQgb3V0cHV0XG4gICAqL1xuICBwcml2YXRlIHByZXBhcmVWb2x1bWVzKCkge1xuICAgIGRvY2tlckV4ZWMoW1widm9sdW1lXCIsIFwiY3JlYXRlXCIsIHRoaXMuaW5wdXRWb2x1bWVOYW1lXSk7XG4gICAgZG9ja2VyRXhlYyhbXCJ2b2x1bWVcIiwgXCJjcmVhdGVcIiwgdGhpcy5vdXRwdXRWb2x1bWVOYW1lXSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB2b2x1bWVzIGZvciBhc3NldCBpbnB1dCBhbmQgb3V0cHV0XG4gICAqL1xuICBwcml2YXRlIGNsZWFuVm9sdW1lcygpIHtcbiAgICBkb2NrZXJFeGVjKFtcInZvbHVtZVwiLCBcInJtXCIsIHRoaXMuaW5wdXRWb2x1bWVOYW1lXSk7XG4gICAgZG9ja2VyRXhlYyhbXCJ2b2x1bWVcIiwgXCJybVwiLCB0aGlzLm91dHB1dFZvbHVtZU5hbWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBydW5zIGEgaGVscGVyIGNvbnRhaW5lciB0aGF0IGhvbGRzIHZvbHVtZXMgYW5kIGRvZXMgc29tZSBwcmVwYXJhdGlvbiB0YXNrc1xuICAgKiBAcGFyYW0gdXNlciBUaGUgdXNlciB0aGF0IHdpbGwgbGF0ZXIgYWNjZXNzIHRoZXNlIGZpbGVzIGFuZCBuZWVkcyBwZXJtaXNzaW9ucyB0byBkbyBzb1xuICAgKi9cbiAgcHJpdmF0ZSBzdGFydEhlbHBlckNvbnRhaW5lcih1c2VyOiBzdHJpbmcpIHtcbiAgICBkb2NrZXJFeGVjKFtcbiAgICAgIFwicnVuXCIsXG4gICAgICBcIi0tbmFtZVwiLFxuICAgICAgdGhpcy5jb3B5Q29udGFpbmVyTmFtZSxcbiAgICAgIFwiLXZcIixcbiAgICAgIGAke3RoaXMuaW5wdXRWb2x1bWVOYW1lfToke0Fzc2V0U3RhZ2luZy5CVU5ETElOR19JTlBVVF9ESVJ9YCxcbiAgICAgIFwiLXZcIixcbiAgICAgIGAke3RoaXMub3V0cHV0Vm9sdW1lTmFtZX06JHtBc3NldFN0YWdpbmcuQlVORExJTkdfT1VUUFVUX0RJUn1gLFxuICAgICAgXCJwdWJsaWMuZWNyLmF3cy9kb2NrZXIvbGlicmFyeS9hbHBpbmVcIixcbiAgICAgIFwic2hcIixcbiAgICAgIFwiLWNcIixcbiAgICAgIGBta2RpciAtcCAke0Fzc2V0U3RhZ2luZy5CVU5ETElOR19JTlBVVF9ESVJ9ICYmIGNob3duIC1SICR7dXNlcn0gJHtBc3NldFN0YWdpbmcuQlVORExJTkdfT1VUUFVUX0RJUn0gJiYgY2hvd24gLVIgJHt1c2VyfSAke0Fzc2V0U3RhZ2luZy5CVU5ETElOR19JTlBVVF9ESVJ9YCxcbiAgICBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZW1vdmVzIHRoZSBEb2NrZXIgaGVscGVyIGNvbnRhaW5lclxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhbkhlbHBlckNvbnRhaW5lcigpIHtcbiAgICBkb2NrZXJFeGVjKFtcInJtXCIsIHRoaXMuY29weUNvbnRhaW5lck5hbWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb3B5IGZpbGVzIGZyb20gdGhlIGhvc3Qgd2hlcmUgdGhpcyBpcyBleGVjdXRlZCBpbnRvIHRoZSBpbnB1dCB2b2x1bWVcbiAgICogQHBhcmFtIHNvdXJjZVBhdGggLSBwYXRoIHRvIGZvbGRlciB3aGVyZSBmaWxlcyBzaG91bGQgYmUgY29waWVkIGZyb20gLSB3aXRob3V0IHRyYWlsaW5nIHNsYXNoXG4gICAqL1xuICBwcml2YXRlIGNvcHlJbnB1dEZyb20oc291cmNlUGF0aDogc3RyaW5nKSB7XG4gICAgZG9ja2VyRXhlYyhbXG4gICAgICBcImNwXCIsXG4gICAgICBgJHtzb3VyY2VQYXRofS8uYCxcbiAgICAgIGAke3RoaXMuY29weUNvbnRhaW5lck5hbWV9OiR7QXNzZXRTdGFnaW5nLkJVTkRMSU5HX0lOUFVUX0RJUn1gLFxuICAgIF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGNvcHkgZmlsZXMgZnJvbSB0aGUgdGhlIG91dHB1dCB2b2x1bWUgdG8gdGhlIGhvc3Qgd2hlcmUgdGhpcyBpcyBleGVjdXRlZFxuICAgKiBAcGFyYW0gb3V0cHV0UGF0aCAtIHBhdGggdG8gZm9sZGVyIHdoZXJlIGZpbGVzIHNob3VsZCBiZSBjb3BpZWQgdG8gLSB3aXRob3V0IHRyYWlsaW5nIHNsYXNoXG4gICAqL1xuICBwcml2YXRlIGNvcHlPdXRwdXRUbyhvdXRwdXRQYXRoOiBzdHJpbmcpIHtcbiAgICBkb2NrZXJFeGVjKFtcbiAgICAgIFwiY3BcIixcbiAgICAgIGAke3RoaXMuY29weUNvbnRhaW5lck5hbWV9OiR7QXNzZXRTdGFnaW5nLkJVTkRMSU5HX09VVFBVVF9ESVJ9Ly5gLFxuICAgICAgb3V0cHV0UGF0aCxcbiAgICBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdW5kbGUgZmlsZXMgd2l0aCBWT0xVTUVfQ09QWSBtZXRob2RcbiAgICovXG4gIHB1YmxpYyBydW4oKSB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuZGV0ZXJtaW5lVXNlcigpO1xuICAgIHRoaXMucHJlcGFyZVZvbHVtZXMoKTtcbiAgICB0aGlzLnN0YXJ0SGVscGVyQ29udGFpbmVyKHVzZXIpOyAvLyBUT0RPIGhhbmRsZSB1c2VyIHByb3Blcmx5XG4gICAgdGhpcy5jb3B5SW5wdXRGcm9tKHRoaXMub3B0aW9ucy5zb3VyY2VQYXRoKTtcblxuICAgIHRoaXMub3B0aW9ucy5pbWFnZS5ydW4oe1xuICAgICAgY29tbWFuZDogdGhpcy5vcHRpb25zLmNvbW1hbmQsXG4gICAgICB1c2VyOiB1c2VyLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMub3B0aW9ucy5lbnZpcm9ubWVudCxcbiAgICAgIGVudHJ5cG9pbnQ6IHRoaXMub3B0aW9ucy5lbnRyeXBvaW50LFxuICAgICAgd29ya2luZ0RpcmVjdG9yeTpcbiAgICAgICAgdGhpcy5vcHRpb25zLndvcmtpbmdEaXJlY3RvcnkgPz8gQXNzZXRTdGFnaW5nLkJVTkRMSU5HX0lOUFVUX0RJUixcbiAgICAgIHNlY3VyaXR5T3B0OiB0aGlzLm9wdGlvbnMuc2VjdXJpdHlPcHQgPz8gXCJcIixcbiAgICAgIHZvbHVtZXM6IHRoaXMub3B0aW9ucy52b2x1bWVzLFxuICAgICAgdm9sdW1lc0Zyb206IFtcbiAgICAgICAgdGhpcy5jb3B5Q29udGFpbmVyTmFtZSxcbiAgICAgICAgLi4uKHRoaXMub3B0aW9ucy52b2x1bWVzRnJvbSA/PyBbXSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb3B5T3V0cHV0VG8odGhpcy5vcHRpb25zLmJ1bmRsZURpcik7XG4gICAgdGhpcy5jbGVhbkhlbHBlckNvbnRhaW5lcigpO1xuICAgIHRoaXMuY2xlYW5Wb2x1bWVzKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvY2tlckV4ZWMoYXJnczogc3RyaW5nW10sIG9wdGlvbnM/OiBTcGF3blN5bmNPcHRpb25zKSB7XG4gIGNvbnN0IHByb2cgPSBwcm9jZXNzLmVudi5DREtfRE9DS0VSID8/IFwiZG9ja2VyXCI7XG4gIGNvbnN0IHByb2MgPSBzcGF3blN5bmMoXG4gICAgcHJvZyxcbiAgICBhcmdzLFxuICAgIG9wdGlvbnMgPz8ge1xuICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIHN0ZGlvOiBbXG4gICAgICAgIC8vIHNob3cgRG9ja2VyIG91dHB1dFxuICAgICAgICBcImlnbm9yZVwiLCAvLyBpZ25vcmUgc3RkaW9cbiAgICAgICAgLy8gQVdTQ0RLOiBwcm9jZXNzLnN0ZGVyciwgLy8gcmVkaXJlY3Qgc3Rkb3V0IHRvIHN0ZGVyciAoY2F1c2VzIHJhZGl4IGVycm9yIGluIGJ1bj8pXG4gICAgICAgIFwiaW5oZXJpdFwiLFxuICAgICAgICBcImluaGVyaXRcIiwgLy8gaW5oZXJpdCBzdGRlcnJcbiAgICAgIF0sXG4gICAgfSxcbiAgKTtcblxuICBpZiAocHJvYy5lcnJvcikge1xuICAgIHRocm93IHByb2MuZXJyb3I7XG4gIH1cblxuICBpZiAocHJvYy5zdGF0dXMgIT09IDApIHtcbiAgICBjb25zdCByZWFzb24gPVxuICAgICAgcHJvYy5zaWduYWwgIT0gbnVsbCA/IGBzaWduYWwgJHtwcm9jLnNpZ25hbH1gIDogYHN0YXR1cyAke3Byb2Muc3RhdHVzfWA7XG4gICAgY29uc3QgY29tbWFuZCA9IFtcbiAgICAgIHByb2csXG4gICAgICAuLi5hcmdzLm1hcCgoYXJnKSA9PlxuICAgICAgICAvW15hLXowLTlfLV0vaS50ZXN0KGFyZykgPyBKU09OLnN0cmluZ2lmeShhcmcpIDogYXJnLFxuICAgICAgKSxcbiAgICBdLmpvaW4oXCIgXCIpO1xuXG4gICAgZnVuY3Rpb24gcHJlcGVuZExpbmVzKFxuICAgICAgZmlyc3RMaW5lOiBzdHJpbmcsXG4gICAgICB0ZXh0OiBCdWZmZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgKTogc3RyaW5nW10ge1xuICAgICAgaWYgKCF0ZXh0IHx8IHRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhZGRpbmcgPSBcIiBcIi5yZXBlYXQoZmlyc3RMaW5lLmxlbmd0aCk7XG4gICAgICByZXR1cm4gdGV4dFxuICAgICAgICAudG9TdHJpbmcoXCJ1dGYtOFwiKVxuICAgICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgICAgLm1hcCgobGluZSwgaWR4KSA9PiBgJHtpZHggPT09IDAgPyBmaXJzdExpbmUgOiBwYWRkaW5nfSR7bGluZX1gKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXhlY3V0aW9uRXJyb3IoXG4gICAgICBbXG4gICAgICAgIGAke3Byb2d9IGV4aXRlZCB3aXRoICR7cmVhc29ufWAsXG4gICAgICAgIC4uLihwcmVwZW5kTGluZXMoXCItLT4gU1RET1VUOiAgXCIsIHByb2Muc3Rkb3V0KSA/PyBbXSksXG4gICAgICAgIC4uLihwcmVwZW5kTGluZXMoXCItLT4gU1RERVJSOiAgXCIsIHByb2Muc3RkZXJyKSA/PyBbXSksXG4gICAgICAgIGAtLT4gQ29tbWFuZDogJHtjb21tYW5kfWAsXG4gICAgICBdLmpvaW4oXCJcXG5cIiksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBwcm9jO1xufVxuIl19
package/lib/size.js CHANGED
@@ -164,7 +164,7 @@ class Size {
164
164
  }
165
165
  exports.Size = Size;
166
166
  _a = JSII_RTTI_SYMBOL_1;
167
- Size[_a] = { fqn: "terraconstructs.Size", version: "0.1.7" };
167
+ Size[_a] = { fqn: "terraconstructs.Size", version: "0.1.9" };
168
168
  /**
169
169
  * Rounding behaviour when converting between units of `Size`.
170
170
  */
package/lib/stack-base.js CHANGED
@@ -165,5 +165,5 @@ class StackBase extends cdktf_1.TerraformStack {
165
165
  }
166
166
  exports.StackBase = StackBase;
167
167
  _a = JSII_RTTI_SYMBOL_1;
168
- StackBase[_a] = { fqn: "terraconstructs.StackBase", version: "0.1.7" };
168
+ StackBase[_a] = { fqn: "terraconstructs.StackBase", version: "0.1.9" };
169
169
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGFjay1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOERBQXNFO0FBQ3RFLGlDQVdlO0FBQ2YsMkNBQXlEO0FBQ3pELHVDQUltQjtBQUVuQixNQUFNLGNBQWMsR0FBRyxJQUFJLDRCQUFvQixDQUFDLElBQUksb0JBQVksRUFBRSxDQUFDLENBQUM7QUFFcEUsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFzSGxFOzs7O0dBSUc7QUFDSCxNQUFzQixTQUFVLFNBQVEsc0JBQWM7SUFDcEQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBTTtRQUMvQixPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLGlCQUFpQixJQUFJLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQXFCO1FBQ2xELE1BQU0sQ0FBQyxHQUFHLHNCQUFjLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsYUFBYSxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksU0FBUyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksZ0ZBQWdGLENBQ3JKLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBNEI7UUFDakQsTUFBTSxJQUFJLEdBQUcsc0JBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxD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dUU7Z0JBQ3ZFLCtJQUErSTtnQkFDL0ksNENBQTRDO2dCQUM1QywrSUFBK0k7Z0JBQy9JLE1BQU0sUUFBUSxHQUFHLG9CQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtvQkFDekMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO29CQUN4QixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7b0JBQ2hCLFFBQVEsRUFBRSxjQUFjO2lCQUN6QixDQUFDLENBQUM7Z0JBQ0gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDcEQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBOUxILDhCQStMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb3ZpZGVyIGFzIGFyY2hpdmVQcm92aWRlciB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXJjaGl2ZVwiO1xuaW1wb3J0IHtcbiAgVGVycmFmb3JtU3RhY2ssXG4gIFRlcnJhZm9ybUVsZW1lbnQsXG4gIEh0dHBCYWNrZW5kQ29uZmlnLFxuICBIdHRwQmFja2VuZCxcbiAgVG9rZW5pemF0aW9uLFxuICBEZWZhdWx0VG9rZW5SZXNvbHZlciwgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tY2RrL2Jsb2IvdjAuMjAuOS9wYWNrYWdlcy9jZGt0Zi9saWIvdG9rZW5zL3Jlc29sdmFibGUudHMjTDE3NlxuICBTdHJpbmdDb25jYXQsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLWNkay9ibG9iL3YwLjIwLjkvcGFja2FnZXMvY2RrdGYvbGliL3Rva2Vucy9yZXNvbHZhYmxlLnRzI0wxNTZcbiAgQXNwZWN0cyxcbiAgSVJlc29sdmVDb250ZXh0LFxuICBMYXp5LFxufSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCwgTm9kZSB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBtYWtlVW5pcXVlUmVzb3VyY2VOYW1lLFxuICBtYWtlVW5pcXVlUmVzb3VyY2VOYW1lUHJlZml4LFxuICBUZXJyYWZvcm1EZXBlbmRlbmN5QXNwZWN0LFxufSBmcm9tIFwiLi9wcml2YXRlXCI7XG5cbmNvbnN0IFRPS0VOX1JFU09MVkVSID0gbmV3IERlZmF1bHRUb2tlblJlc29sdmVyKG5ldyBTdHJpbmdDb25jYXQoKSk7XG5cbmNvbnN0IFRFUlJBU1RBQ0tfU1lNQk9MID0gU3ltYm9sLmZvcihcInRlcnJhY29uc3RydWN0cy9saWIuU3RhY2tcIik7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2NvcmUvbGliL25hbWVzLnRzXG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgYSB1bmlxdWUgcmVzb3VyY2UgbmFtZV9wcmVmaXguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5pcXVlUmVzb3VyY2VOYW1lUHJlZml4T3B0aW9uc1xuICBleHRlbmRzIFVuaXF1ZVJlc291cmNlTmFtZU9wdGlvbnMge1xuICAvKipcbiAgICogTGVuZ3RoIG9mIHRoZSByYW5kb20gZ2VuZXJhdGVkIHN1ZmZpeCBhZGRlZCBieSBzb21lIFRlcnJhZm9ybSBwcm92aWRlcnMuXG4gICAqXG4gICAqIE5PVEU6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLXByb3ZpZGVyLWF3cy9pc3N1ZXMvNjI1XG4gICAqIEBkZWZhdWx0IC0gMjZcbiAgICovXG4gIHJlYWRvbmx5IHN1ZmZpeExlbmd0aD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhIHVuaXF1ZSByZXNvdXJjZSBuYW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVuaXF1ZVJlc291cmNlTmFtZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSB1bmlxdWUgcmVzb3VyY2UgbmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAyNTZcbiAgICovXG4gIHJlYWRvbmx5IG1heExlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHNlcGFyYXRvciB1c2VkIGJldHdlZW4gdGhlIHBhdGggY29tcG9uZW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBzZXBhcmF0b3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbGxvd2VkIGluIHRoZSB1bmlxdWUgcmVzb3VyY2UgbmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByZWZpeCB0byBiZSBhZGRlZCBpbnRvIHRoZSBzdGFjayBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNvbnZlcnQgdGhlIHJlc291cmNlIG5hbWUgdG8gbG93ZXJjYXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBsb3dlckNhc2U/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIFRlcnJhQ29uc3RydWN0IFVVSUQgd2l0aGluIHRoZSBncmlkLlxuICAgKlxuICAgKiBVVUlEIGlzIGdlbmVyYXRlZCBieSB0aGUgQ0xJIGFuZCBlbnN1cmVzIHJlc291cmNlIElkZW50aXR5XG4gICAqIGlzIGRlY291cGxlZCBmcm9tIHJlc291cmNlIHRhZ2dpbmcgZm9yIGNvbnNpc3RlbmN5LlxuICAgKlxuICAgKiBVVUlEIG1heSBiZSB1c2VyIHByb3ZpZGVkIGZvciBpbXBvcnRlZCByZXNvdXJjZXNcbiAgICovXG4gIHJlYWRvbmx5IGdyaWRVVUlEOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCBuYW1lIHBhc3NlZCBpbiBmcm9tIHRoZSBDTElcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdG9yZXMgdGhlIHN0YXRlIHVzaW5nIGEgc2ltcGxlIFJFU1QgY2xpZW50LlxuICAgKlxuICAgKiBTdGF0ZSB3aWxsIGJlIGZldGNoZWQgdmlhIEdFVCwgdXBkYXRlZCB2aWEgUE9TVCwgYW5kIHB1cmdlZCB3aXRoIERFTEVURS5cbiAgICogVGhlIG1ldGhvZCB1c2VkIGZvciB1cGRhdGluZyBpcyBjb25maWd1cmFibGUuXG4gICAqXG4gICAqIFRoaXMgYmFja2VuZCBvcHRpb25hbGx5IHN1cHBvcnRzIHN0YXRlIGxvY2tpbmcuXG4gICAqIFdoZW4gbG9ja2luZyBzdXBwb3J0IGlzIGVuYWJsZWQgaXQgd2lsbCB1c2UgTE9DSyBhbmQgVU5MT0NLIHJlcXVlc3RzIHByb3ZpZGluZyB0aGUgbG9jayBpbmZvIGluIHRoZSBib2R5LlxuICAgKiBUaGUgZW5kcG9pbnQgc2hvdWxkIHJldHVybiBhIDQyMzogTG9ja2VkIG9yIDQwOTogQ29uZmxpY3Qgd2l0aCB0aGUgaG9sZGluZyBsb2NrIGluZm8gd2hlblxuICAgKiBpdCdzIGFscmVhZHkgdGFrZW4sIDIwMDogT0sgZm9yIHN1Y2Nlc3MuIEFueSBvdGhlciBzdGF0dXMgd2lsbCBiZSBjb25zaWRlcmVkIGFuIGVycm9yLlxuICAgKiBUaGUgSUQgb2YgdGhlIGhvbGRpbmcgbG9jayBpbmZvIHdpbGwgYmUgYWRkZWQgYXMgYSBxdWVyeSBwYXJhbWV0ZXIgdG8gc3RhdGUgdXBkYXRlcyByZXF1ZXN0cy5cbiAgICpcbiAgICogUmVhZCBtb3JlIGFib3V0IHRoaXMgYmFja2VuZCBpbiB0aGUgVGVycmFmb3JtIGRvY3M6XG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2xhbmd1YWdlL3NldHRpbmdzL2JhY2tlbmRzL2h0dHBcbiAgICovXG4gIHJlYWRvbmx5IGdyaWRCYWNrZW5kQ29uZmlnPzogSHR0cEJhY2tlbmRDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN0YWNrIGV4dGVuZHMgSUNvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCBOYW1lIHBhc3NlZCBpbiBmcm9tIHRoZSBDTElcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50TmFtZTogc3RyaW5nO1xuICByZWFkb25seSBncmlkVVVJRDogc3RyaW5nO1xuICByZWFkb25seSBncmlkQmFja2VuZD86IEh0dHBCYWNrZW5kO1xuICAvKipcbiAgICogQSBzaW5nbGV0b24gQXJjaGl2ZSBQcm92aWRlciB1c2VkIHRvIGFyY2hpdmUgYXNzZXRzLlxuICAgKiBUaGlzIGlzIHVzZWQgZm9yIGV4YW1wbGUgZm9yIGlubGluZSBDb2RlIGNvbnRlbnQgaW4gYXdzIExhbWJkYSBGdW5jdGlvbnMuXG4gICAqXG4gICAqIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2lzc3Vlcy85Nzc0I2lzc3VlY29tbWVudC02NjkzNTY3ODZcbiAgICovXG4gIHJlYWRvbmx5IGFyY2hpdmVQcm92aWRlcjogYXJjaGl2ZVByb3ZpZGVyLkFyY2hpdmVQcm92aWRlcjtcbiAgcmVzb2x2ZShvYmo6IGFueSwgcHJlcGFyaW5nPzogYm9vbGVhbik6IGFueTtcbiAgdW5pcXVlUmVzb3VyY2VOYW1lKFxuICAgIHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUsXG4gICAgb3B0aW9ucz86IFVuaXF1ZVJlc291cmNlTmFtZU9wdGlvbnMsXG4gICk6IHN0cmluZztcbiAgdW5pcXVlUmVzb3VyY2VOYW1lUHJlZml4KFxuICAgIHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUsXG4gICAgb3B0aW9ucz86IFVuaXF1ZVJlc291cmNlTmFtZVByZWZpeE9wdGlvbnMsXG4gICk6IHN0cmluZztcbiAgLy8gdG9Kc29uU3RyaW5nKG9iajogYW55LCBzcGFjZT86IG51bWJlcik6IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhbGwgVGVycmFDb25zdHJ1Y3RzIHN0YWNrc1xuICpcbiAqIFByb3ZpZGVzIGEgcmVmZXJlbmNlIHRvIHRoZSBncmlkIFVVSUQgYW5kIGVudmlyb25tZW50IG5hbWVcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0YWNrQmFzZSBleHRlbmRzIFRlcnJhZm9ybVN0YWNrIGltcGxlbWVudHMgSVN0YWNrIHtcbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBTdGFjay5cbiAgICpcbiAgICogYXR0cmlidXRlIGRldGVjdGlvbiBzaW5jZSBhcyAnaW5zdGFuY2VvZicgcG90ZW50aWFsbHkgZmFpbHMgYWNyb3NzIExpYnJhcnkgcmVsZWFzZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVGVycmFTdGFjayh4OiBhbnkpOiB4IGlzIElTdGFjayB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgVEVSUkFTVEFDS19TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rcyB1cCB0aGUgZmlyc3Qgc3RhY2sgc2NvcGUgaW4gd2hpY2ggYGNvbnN0cnVjdGAgaXMgZGVmaW5lZC4gRmFpbHMgaWYgdGhlcmUgaXMgbm8gc3RhY2sgdXAgdGhlIHRyZWUgb3IgdGhlIHN0YWNrIGlzIG5vdCBhbiBJU3RhY2suXG4gICAqIEBwYXJhbSBjb25zdHJ1Y3QgVGhlIGNvbnN0cnVjdCB0byBzdGFydCB0aGUgc2VhcmNoIGZyb20uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mVGVycmFDb25zdHJ1Y3QoY29uc3RydWN0OiBJQ29uc3RydWN0KTogSVN0YWNrIHtcbiAgICBjb25zdCBzID0gVGVycmFmb3JtU3RhY2sub2YoY29uc3RydWN0KTtcbiAgICBpZiAoU3RhY2tCYXNlLmlzVGVycmFTdGFjayhzKSkge1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBSZXNvdXJjZSAnJHtjb25zdHJ1Y3QuY29uc3RydWN0b3I/Lm5hbWV9JyBhdCAnJHtjb25zdHJ1Y3Qubm9kZS5wYXRofScgc2hvdWxkIGJlIGNyZWF0ZWQgaW4gdGhlIHNjb3BlIG9mIFRlcnJhQ29uc3RydWN0IElTdGFjaywgYnV0IG5vIElTdGFjayBmb3VuZGAsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgY29uc3RydWN0IGJhc2VkIG9uIGl0cyBwYXRoIHdpdGhpblxuICAgKiBhIFRlcnJhZm9ybVN0YWNrLiBzZWUgdW5pcXVlUmVzb3VyY2VOYW1lLCBidXQgd2l0aCBubyBzZXBhcmF0b3IsIG1heGltdW0gbGVuZ3RoIDI1NSBhbmQgYWxsb3dzXG4gICAqICBcIl9cIiBhbmQgXCItXCIgb24gdG9wIG9mIGFscGhhbnVtZXJpY2FsIGNoYXJhY3RlcnMuXG4gICAqXG4gICAqIEBwYXJhbSBjb25zdHJ1Y3QgVGhlIGNvbnN0cnVjdFxuICAgKiBAcmV0dXJucyBhIHVuaXF1ZSByZXNvdXJjZSBuYW1lIGJhc2VkIG9uIHRoZSBjb25zdHJ1Y3QgcGF0aFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1bmlxdWVJZChjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QgfCBOb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IENvbnN0cnVjdC5pc0NvbnN0cnVjdChjb25zdHJ1Y3QpID8gY29uc3RydWN0Lm5vZGUgOiBjb25zdHJ1Y3Q7XG4gICAgY29uc3Qgc3RhY2sgPSBub2RlLnNjb3Blc1xuICAgICAgLnJldmVyc2UoKVxuICAgICAgLmZpbmQoKGNvbXBvbmVudCkgPT4gVGVycmFmb3JtU3RhY2suaXNTdGFjayhjb21wb25lbnQpKTtcblxuICAgIGlmICghc3RhY2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJVbmFibGUgdG8gY2FsY3VsYXRlIGEgdW5pcXVlIGlkIHdpdGhvdXQgYSBzdGFjayBpbiB0aGUgY29uc3RydWN0IHBhdGhcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3BlY0luZGV4ID0gbm9kZS5zY29wZXMuaW5kZXhPZihzdGFjayk7XG4gICAgY29uc3QgY29tcG9uZW50c1BhdGggPSBub2RlLnNjb3Blc1xuICAgICAgLnNsaWNlKHNwZWNJbmRleClcbiAgICAgIC5tYXAoKGNvbXBvbmVudCkgPT4gY29tcG9uZW50Lm5vZGUuaWQpO1xuXG4gICAgcmV0dXJuIG1ha2VVbmlxdWVSZXNvdXJjZU5hbWUoY29tcG9uZW50c1BhdGgsIHtcbiAgICAgIG1heExlbmd0aDogMjU1LFxuICAgICAgLy8gYXZvaWQgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy82NDIxXG4gICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6IFwiXy1cIixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFjayB1bmlxdWUgZ3JpZCBpZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JpZFVVSUQ6IHN0cmluZztcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgTmFtZSBwYXNzZWQgaW4gZnJvbSB0aGUgQ0xJXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW52aXJvbm1lbnROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBncmlkIHByb3ZpZGVkIGJhY2tlbmQgZm9yIHN0YXRlIHN0b3JhZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBncmlkQmFja2VuZD86IEh0dHBCYWNrZW5kO1xuXG4gIHByaXZhdGUgYXJjaGl2ZVByb3ZpZGVyU2luZ2xldG9uPzogYXJjaGl2ZVByb3ZpZGVyLkFyY2hpdmVQcm92aWRlcjtcbiAgcHVibGljIGdldCBhcmNoaXZlUHJvdmlkZXIoKTogYXJjaGl2ZVByb3ZpZGVyLkFyY2hpdmVQcm92aWRlciB7XG4gICAgaWYgKCF0aGlzLmFyY2hpdmVQcm92aWRlclNpbmdsZXRvbikge1xuICAgICAgdGhpcy5hcmNoaXZlUHJvdmlkZXJTaW5nbGV0b24gPSBuZXcgYXJjaGl2ZVByb3ZpZGVyLkFyY2hpdmVQcm92aWRlcihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJBcmNoaXZlUHJvdmlkZXJcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFyY2hpdmVQcm92aWRlclNpbmdsZXRvbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFja0Jhc2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5ncmlkVVVJRCA9IHByb3BzLmdyaWRVVUlEO1xuICAgIHRoaXMuZW52aXJvbm1lbnROYW1lID0gcHJvcHMuZW52aXJvbm1lbnROYW1lO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBURVJSQVNUQUNLX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgICBpZiAocHJvcHMuZ3JpZEJhY2tlbmRDb25maWcpIHtcbiAgICAgIHRoaXMuZ3JpZEJhY2tlbmQgPSBuZXcgSHR0cEJhY2tlbmQodGhpcywgcHJvcHMuZ3JpZEJhY2tlbmRDb25maWcpO1xuICAgIH1cblxuICAgIC8vIE1hcCBjb25zdHJ1Y3QgdHJlZSBkZXBlbmRlbmNpZXMgdG8gSVRlcnJhZm9ybURlcGVuZGFibGVzXG4gICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvaXNzdWVzLzI3MjcjaXNzdWVjb21tZW50LTE0NzMzMjEwNzVcbiAgICBBc3BlY3RzLm9mKHRoaXMpLmFkZChuZXcgVGVycmFmb3JtRGVwZW5kZW5jeUFzcGVjdCgpKTtcbiAgICAvLyBBc3BlY3RzIGFyZSBpbnZva2VkIGluIHN5bnRoIGFmdGVyIHN0YWNrIGhhcyBiZWVuIHByZXBhcmVkXG4gICAgLy8gdGhpcyBzaG91bGQgZW5zdXJlIGFueSByZXNvdXJjZXMgYWRkZWQgZHVyaW5nIGBwcmVwYXJlU3RhY2soKWAgYXJlIGluY2x1ZGVkIGluIHRoZSBkZXBlbmRlbmN5IHRyZWVcbiAgICAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLWNkay9ibG9iL3YwLjIwLjkvcGFja2FnZXMvY2RrdGYvbGliL3N5bnRoZXNpemUvc3ludGhlc2l6ZXIudHMjTDEyMVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBUZXJyYWZvcm0tY29tcGF0aWJsZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBUZXJyYWZvcm0gRWxlbWVudCBiYXNlZFxuICAgKiBvbiBpdHMgcGF0aC4gVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgc3RhY2tOYW1lIG9mIHRoZSBwYXJlbnQgc3RhY2sgKG5vbi1uZXN0ZWQpXG4gICAqIHRvIHRoZSBjb25zdHJ1Y3QsIGFuZCB0aGUgaWRzIG9mIHRoZSBjb21wb25lbnRzIGluIHRoZSBjb25zdHJ1Y3QgcGF0aC5cbiAgICpcbiAgICogVGhlIHVzZXIgY2FuIGRlZmluZSBhbGxvd2VkIHNwZWNpYWwgY2hhcmFjdGVycywgYSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgZWxlbWVudHMsXG4gICAqIGFuZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIHJlc291cmNlIG5hbWUuIFRoZSBuYW1lIGluY2x1ZGVzIGEgaHVtYW4gcmVhZGFibGUgcG9ydGlvbiByZW5kZXJlZFxuICAgKiBmcm9tIHRoZSBwYXRoIGNvbXBvbmVudHMsIHdpdGggb3Igd2l0aG91dCB1c2VyIGRlZmluZWQgc2VwYXJhdG9ycywgYW5kIGEgaGFzaCBzdWZmaXguXG4gICAqIElmIHRoZSByZXNvdXJjZSBuYW1lIGlzIGxvbmdlciB0aGFuIHRoZSBtYXhpbXVtIGxlbmd0aCwgaXQgaXMgdHJpbW1lZCBpbiB0aGUgbWlkZGxlLlxuICAgKlxuICAgKiBAcGFyYW0gdGZFbGVtZW50IFRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZGVmaW5pbmcgdGhlIHVuaXF1ZSByZXNvdXJjZSBuYW1lXG4gICAqIEByZXR1cm5zIGEgdW5pcXVlIHJlc291cmNlIG5hbWUgYmFzZWQgb24gdGhlIGNvbnN0cnVjdCBwYXRoXG4gICAqL1xuICBwdWJsaWMgdW5pcXVlUmVzb3VyY2VOYW1lKFxuICAgIHRmRWxlbWVudDogVGVycmFmb3JtRWxlbWVudCB8IE5vZGUsXG4gICAgb3B0aW9uczogVW5pcXVlUmVzb3VyY2VOYW1lT3B0aW9ucyA9IHt9LFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vZGUgPSBDb25zdHJ1Y3QuaXNDb25zdHJ1Y3QodGZFbGVtZW50KSA/IHRmRWxlbWVudC5ub2RlIDogdGZFbGVtZW50O1xuICAgIGNvbnN0IHN0YWNrID0gVGVycmFmb3JtRWxlbWVudC5pc1RlcnJhZm9ybUVsZW1lbnQodGZFbGVtZW50KVxuICAgICAgPyB0ZkVsZW1lbnQuY2RrdGZTdGFja1xuICAgICAgOiB0aGlzO1xuICAgIGNvbnN0IHN0YWNrSW5kZXggPSBub2RlLnNjb3Blcy5pbmRleE9mKHN0YWNrKTtcbiAgICBjb25zdCBjb21wb25lbnRzUGF0aCA9IG5vZGUuc2NvcGVzXG4gICAgICAuc2xpY2Uoc3RhY2tJbmRleClcbiAgICAgIC5tYXAoKGNvbXBvbmVudCkgPT4gY29tcG9uZW50Lm5vZGUuaWQpO1xuXG4gICAgcmV0dXJuIG1ha2VVbmlxdWVSZXNvdXJjZU5hbWUoY29tcG9uZW50c1BhdGgsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBUZXJyYWZvcm0tY29tcGF0aWJsZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBUZXJyYWZvcm0gRWxlbWVudCBiYXNlZFxuICAgKiBvbiBpdHMgcGF0aC4gVGhpcyBmdW5jdGlvbiBmaW5kcyB0aGUgc3RhY2tOYW1lIG9mIHRoZSBwYXJlbnQgc3RhY2sgKG5vbi1uZXN0ZWQpXG4gICAqIHRvIHRoZSBjb25zdHJ1Y3QsIGFuZCB0aGUgaWRzIG9mIHRoZSBjb21wb25lbnRzIGluIHRoZSBjb25zdHJ1Y3QgcGF0aC5cbiAgICpcbiAgICogVGhlIHVzZXIgY2FuIGRlZmluZSBhbGxvd2VkIHNwZWNpYWwgY2hhcmFjdGVycywgYSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgZWxlbWVudHMsXG4gICAqIGFuZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIHJlc291cmNlIG5hbWUuIFRoZSBuYW1lIGluY2x1ZGVzIGEgaHVtYW4gcmVhZGFibGUgcG9ydGlvbiByZW5kZXJlZFxuICAgKiBmcm9tIHRoZSBwYXRoIGNvbXBvbmVudHMsIHdpdGggb3Igd2l0aG91dCB1c2VyIGRlZmluZWQgc2VwYXJhdG9ycywgYW5kIGRlcGVuZHMgb24gdGhlXG4gICAqIHJlc291cmNlIHByb3ZpZGVyIHRvIGdlbmVyYXRlIHRoZSByYW5kb20gc3VmZml4LlxuICAgKlxuICAgKiBJZiB0aGUgcmVzb3VyY2UgbmFtZSBpcyBsb25nZXIgdGhhbiB0aGUgbWF4aW11bSBsZW5ndGggLSBzdWZmaXhMZW5ndGgsIGl0IGlzIHRyaW1tZWQgaW4gdGhlIG1pZGRsZS5cbiAgICpcbiAgICogQHBhcmFtIHRmRWxlbWVudCBUaGUgY29uc3RydWN0XG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIGRlZmluaW5nIHRoZSB1bmlxdWUgcmVzb3VyY2UgbmFtZVxuICAgKiBAcmV0dXJucyBhIHVuaXF1ZSByZXNvdXJjZSBuYW1lIGJhc2VkIG9uIHRoZSBjb25zdHJ1Y3QgcGF0aFxuICAgKi9cbiAgcHVibGljIHVuaXF1ZVJlc291cmNlTmFtZVByZWZpeChcbiAgICB0ZkVsZW1lbnQ6IFRlcnJhZm9ybUVsZW1lbnQgfCBOb2RlLFxuICAgIG9wdGlvbnM6IFVuaXF1ZVJlc291cmNlTmFtZVByZWZpeE9wdGlvbnMgPSB7fSxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBub2RlID0gQ29uc3RydWN0LmlzQ29uc3RydWN0KHRmRWxlbWVudCkgPyB0ZkVsZW1lbnQubm9kZSA6IHRmRWxlbWVudDtcbiAgICBjb25zdCBzdGFjayA9IFRlcnJhZm9ybUVsZW1lbnQuaXNUZXJyYWZvcm1FbGVtZW50KHRmRWxlbWVudClcbiAgICAgID8gdGZFbGVtZW50LmNka3RmU3RhY2tcbiAgICAgIDogdGhpcztcbiAgICBjb25zdCBzdGFja0luZGV4ID0gbm9kZS5zY29wZXMuaW5kZXhPZihzdGFjayk7XG4gICAgY29uc3QgY29tcG9uZW50c1BhdGggPSBub2RlLnNjb3Blc1xuICAgICAgLnNsaWNlKHN0YWNrSW5kZXgpXG4gICAgICAubWFwKChjb21wb25lbnQpID0+IGNvbXBvbmVudC5ub2RlLmlkKTtcblxuICAgIHJldHVybiBtYWtlVW5pcXVlUmVzb3VyY2VOYW1lUHJlZml4KGNvbXBvbmVudHNQYXRoLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKiBSZXNvbHZlIElSZXNvbHZhYmxlIGluIHNjb3BlIG9mIHRoaXMgQXdzU3RhY2sgKi9cbiAgcHVibGljIHJlc29sdmUob2JqOiBhbnksIHByZXBhcmluZyA9IGZhbHNlKTogYW55IHtcbiAgICByZXR1cm4gVG9rZW5pemF0aW9uLnJlc29sdmUob2JqLCB7XG4gICAgICBzY29wZTogdGhpcyxcbiAgICAgIHByZXBhcmluZyxcbiAgICAgIHJlc29sdmVyOiBUT0tFTl9SRVNPTFZFUixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGFuIG9iamVjdCwgcG90ZW50aWFsbHkgY29udGFpbmluZyB0b2tlbnMsIHRvIGEgSlNPTiBzdHJpbmdcbiAgICovXG4gIHB1YmxpYyB0b0pzb25TdHJpbmcob2JqOiBhbnksIHNwYWNlPzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTGF6eS5zdHJpbmdWYWx1ZSh7XG4gICAgICBwcm9kdWNlOiAoY3R4OiBJUmVzb2x2ZUNvbnRleHQpID0+IHtcbiAgICAgICAgLy8gRmlyc3QgcmVzb2x2ZSBUb2tlbiBvYmplY3RzIHdpdGggc3RyaW5nIGNvbmNhdC4uLiB0aGVuIEpTT04uc3RyaW5naWZ5IHRoZSByZXN1bHRpbmcgb2JqZWN0XG4gICAgICAgIC8vXG4gICAgICAgIC8vIHVubGlrZSBjbG91ZGZvcm1hdGlvbiwgVGVycmFmb3JtIGRvZXMgbm90IG5lZWQgYW4gaW50cmluc2ljIHdyYXBwZXI/XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzhkY2E1MDc5ZTE4OTMxMjIwNTdmOWUyYzU0YzBkYTBiYTY0NDkyNmUvcGFja2FnZXMvJTQwYXdzLWNkay9jb3JlL2xpYi9wcml2YXRlL2Nsb3VkZm9ybWF0aW9uLWxhbmcudHMjTDczXG4gICAgICAgIC8vIGludHJpbnNpYyB3cmFwcGVyIHdpdGhvdXQgY3Jvc3Mgc3RhY2sgcmVmXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzE0ZTRiYzkxZWQ1ZjBmOGNiN2M4YWM5ZWU4YTZkZTRkYTU0ZTY1ODUvcGFja2FnZXMvJTQwYXdzLWNkay9jb3JlL2xpYi9wcml2YXRlL2Nsb3VkZm9ybWF0aW9uLWxhbmcudHMjTDUwXG4gICAgICAgIGNvbnN0IHJlc29sdmVkID0gVG9rZW5pemF0aW9uLnJlc29sdmUob2JqLCB7XG4gICAgICAgICAgcHJlcGFyaW5nOiBjdHgucHJlcGFyaW5nLFxuICAgICAgICAgIHNjb3BlOiBjdHguc2NvcGUsXG4gICAgICAgICAgcmVzb2x2ZXI6IFRPS0VOX1JFU09MVkVSLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHJlc29sdmVkLCB1bmRlZmluZWQsIHNwYWNlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
package/lib/terra-func.js CHANGED
@@ -159,7 +159,7 @@ class Fn extends cdktf_1.Fn {
159
159
  }
160
160
  exports.Fn = Fn;
161
161
  _a = JSII_RTTI_SYMBOL_1;
162
- Fn[_a] = { fqn: "terraconstructs.Fn", version: "0.1.7" };
162
+ Fn[_a] = { fqn: "terraconstructs.Fn", version: "0.1.9" };
163
163
  function range(n) {
164
164
  const ret = [];
165
165
  for (let i = 0; i < n; i++) {
package/lib/time-zone.js CHANGED
@@ -29,7 +29,7 @@ class TimeZone {
29
29
  }
30
30
  exports.TimeZone = TimeZone;
31
31
  _a = JSII_RTTI_SYMBOL_1;
32
- TimeZone[_a] = { fqn: "terraconstructs.TimeZone", version: "0.1.7" };
32
+ TimeZone[_a] = { fqn: "terraconstructs.TimeZone", version: "0.1.9" };
33
33
  /** IANA Time Zone database entry for Africa/Abidjan. UTC offset +00:00/+00:00. */
34
34
  TimeZone.AFRICA_ABIDJAN = new TimeZone("Africa/Abidjan");
35
35
  /** IANA Time Zone database entry for Africa/Algiers. UTC offset +01:00/+01:00. */
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  },
12
12
  "devDependencies": {
13
13
  "@cdktf/provider-archive": "11.0.0",
14
- "@cdktf/provider-aws": "20.1.0",
14
+ "@cdktf/provider-aws": "21.22.0",
15
15
  "@cdktf/provider-cloudinit": "11.0.0",
16
16
  "@cdktf/provider-docker": "12.0.2",
17
17
  "@cdktf/provider-time": "11.0.0",
@@ -47,7 +47,7 @@
47
47
  },
48
48
  "peerDependencies": {
49
49
  "@cdktf/provider-archive": "^11.0.0",
50
- "@cdktf/provider-aws": "^20.1.0",
50
+ "@cdktf/provider-aws": "^21.22.0",
51
51
  "@cdktf/provider-cloudinit": "^11.0.0",
52
52
  "@cdktf/provider-docker": "^12.0.2",
53
53
  "@cdktf/provider-time": "^11.0.0",
@@ -82,7 +82,7 @@
82
82
  "publishConfig": {
83
83
  "access": "public"
84
84
  },
85
- "version": "0.1.7",
85
+ "version": "0.1.9",
86
86
  "jest": {
87
87
  "coverageProvider": "v8",
88
88
  "setupFilesAfterEnv": [