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
@@ -134,7 +134,7 @@ class RecordSet extends __1.AwsConstructBase {
134
134
  }
135
135
  exports.RecordSet = RecordSet;
136
136
  _a = JSII_RTTI_SYMBOL_1;
137
- RecordSet[_a] = { fqn: "terraconstructs.aws.edge.RecordSet", version: "0.1.7" };
137
+ RecordSet[_a] = { fqn: "terraconstructs.aws.edge.RecordSet", version: "0.1.9" };
138
138
  /**
139
139
  * The record type.
140
140
  */
@@ -259,7 +259,7 @@ class RecordTarget {
259
259
  }
260
260
  exports.RecordTarget = RecordTarget;
261
261
  _b = JSII_RTTI_SYMBOL_1;
262
- RecordTarget[_b] = { fqn: "terraconstructs.aws.edge.RecordTarget", version: "0.1.7" };
262
+ RecordTarget[_b] = { fqn: "terraconstructs.aws.edge.RecordTarget", version: "0.1.9" };
263
263
  /**
264
264
  * A DNS A record
265
265
  *
@@ -276,7 +276,7 @@ class ARecord extends RecordSet {
276
276
  }
277
277
  exports.ARecord = ARecord;
278
278
  _c = JSII_RTTI_SYMBOL_1;
279
- ARecord[_c] = { fqn: "terraconstructs.aws.edge.ARecord", version: "0.1.7" };
279
+ ARecord[_c] = { fqn: "terraconstructs.aws.edge.ARecord", version: "0.1.9" };
280
280
  /**
281
281
  * A DNS AAAA record
282
282
  *
@@ -293,7 +293,7 @@ class AaaaRecord extends RecordSet {
293
293
  }
294
294
  exports.AaaaRecord = AaaaRecord;
295
295
  _d = JSII_RTTI_SYMBOL_1;
296
- AaaaRecord[_d] = { fqn: "terraconstructs.aws.edge.AaaaRecord", version: "0.1.7" };
296
+ AaaaRecord[_d] = { fqn: "terraconstructs.aws.edge.AaaaRecord", version: "0.1.9" };
297
297
  /**
298
298
  * A DNS CNAME record
299
299
  *
@@ -310,7 +310,7 @@ class CnameRecord extends RecordSet {
310
310
  }
311
311
  exports.CnameRecord = CnameRecord;
312
312
  _e = JSII_RTTI_SYMBOL_1;
313
- CnameRecord[_e] = { fqn: "terraconstructs.aws.edge.CnameRecord", version: "0.1.7" };
313
+ CnameRecord[_e] = { fqn: "terraconstructs.aws.edge.CnameRecord", version: "0.1.9" };
314
314
  /**
315
315
  * A DNS TXT record
316
316
  *
@@ -327,7 +327,7 @@ class TxtRecord extends RecordSet {
327
327
  }
328
328
  exports.TxtRecord = TxtRecord;
329
329
  _f = JSII_RTTI_SYMBOL_1;
330
- TxtRecord[_f] = { fqn: "terraconstructs.aws.edge.TxtRecord", version: "0.1.7" };
330
+ TxtRecord[_f] = { fqn: "terraconstructs.aws.edge.TxtRecord", version: "0.1.9" };
331
331
  /**
332
332
  * Formats a text value for use in a TXT record
333
333
  *
@@ -363,7 +363,7 @@ class SrvRecord extends RecordSet {
363
363
  }
364
364
  exports.SrvRecord = SrvRecord;
365
365
  _g = JSII_RTTI_SYMBOL_1;
366
- SrvRecord[_g] = { fqn: "terraconstructs.aws.edge.SrvRecord", version: "0.1.7" };
366
+ SrvRecord[_g] = { fqn: "terraconstructs.aws.edge.SrvRecord", version: "0.1.9" };
367
367
  /**
368
368
  * The CAA tag.
369
369
  */
@@ -401,7 +401,7 @@ class CaaRecord extends RecordSet {
401
401
  }
402
402
  exports.CaaRecord = CaaRecord;
403
403
  _h = JSII_RTTI_SYMBOL_1;
404
- CaaRecord[_h] = { fqn: "terraconstructs.aws.edge.CaaRecord", version: "0.1.7" };
404
+ CaaRecord[_h] = { fqn: "terraconstructs.aws.edge.CaaRecord", version: "0.1.9" };
405
405
  /**
406
406
  * A DNS Amazon CAA record.
407
407
  *
@@ -426,7 +426,7 @@ class CaaAmazonRecord extends CaaRecord {
426
426
  }
427
427
  exports.CaaAmazonRecord = CaaAmazonRecord;
428
428
  _j = JSII_RTTI_SYMBOL_1;
429
- CaaAmazonRecord[_j] = { fqn: "terraconstructs.aws.edge.CaaAmazonRecord", version: "0.1.7" };
429
+ CaaAmazonRecord[_j] = { fqn: "terraconstructs.aws.edge.CaaAmazonRecord", version: "0.1.9" };
430
430
  /**
431
431
  * A DNS MX record
432
432
  *
@@ -443,7 +443,7 @@ class MxRecord extends RecordSet {
443
443
  }
444
444
  exports.MxRecord = MxRecord;
445
445
  _k = JSII_RTTI_SYMBOL_1;
446
- MxRecord[_k] = { fqn: "terraconstructs.aws.edge.MxRecord", version: "0.1.7" };
446
+ MxRecord[_k] = { fqn: "terraconstructs.aws.edge.MxRecord", version: "0.1.9" };
447
447
  /**
448
448
  * A DNS NS record
449
449
  *
@@ -460,7 +460,7 @@ class NsRecord extends RecordSet {
460
460
  }
461
461
  exports.NsRecord = NsRecord;
462
462
  _l = JSII_RTTI_SYMBOL_1;
463
- NsRecord[_l] = { fqn: "terraconstructs.aws.edge.NsRecord", version: "0.1.7" };
463
+ NsRecord[_l] = { fqn: "terraconstructs.aws.edge.NsRecord", version: "0.1.9" };
464
464
  /**
465
465
  * A DNS DS record
466
466
  *
@@ -477,7 +477,7 @@ class DsRecord extends RecordSet {
477
477
  }
478
478
  exports.DsRecord = DsRecord;
479
479
  _m = JSII_RTTI_SYMBOL_1;
480
- DsRecord[_m] = { fqn: "terraconstructs.aws.edge.DsRecord", version: "0.1.7" };
480
+ DsRecord[_m] = { fqn: "terraconstructs.aws.edge.DsRecord", version: "0.1.9" };
481
481
  /**
482
482
  * A record to delegate further lookups to a different set of name servers.
483
483
  */
@@ -495,7 +495,7 @@ class ZoneDelegationRecord extends RecordSet {
495
495
  }
496
496
  exports.ZoneDelegationRecord = ZoneDelegationRecord;
497
497
  _o = JSII_RTTI_SYMBOL_1;
498
- ZoneDelegationRecord[_o] = { fqn: "terraconstructs.aws.edge.ZoneDelegationRecord", version: "0.1.7" };
498
+ ZoneDelegationRecord[_o] = { fqn: "terraconstructs.aws.edge.ZoneDelegationRecord", version: "0.1.9" };
499
499
  // ref https://github.com/aws/aws-cdk/blob/v2.156.0/packages/aws-cdk-lib/aws-route53/lib/util.ts
500
500
  /**
501
501
  * Route53 requires the record names are specified as fully qualified names, but this
@@ -184,4 +184,4 @@ export declare function makeHostedZoneArn(construct: Construct, hostedZoneId: st
184
184
  * @returns +zoneName+
185
185
  * @throws ValidationError if the name is not valid.
186
186
  */
187
- export declare function validateZoneName(zoneName: string): void;
187
+ export declare function validateZoneName(scope: Construct, zoneName: string): void;
@@ -8,6 +8,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
8
8
  const provider_aws_1 = require("@cdktf/provider-aws");
9
9
  const cdktf_1 = require("cdktf");
10
10
  const __1 = require("../");
11
+ const errors_1 = require("../../errors");
11
12
  /**
12
13
  * Container for records, and records contain information about how to route traffic for a
13
14
  * specific domain, such as example.com and its subdomains (acme.example.com, zenith.example.com)
@@ -71,7 +72,7 @@ class DnsZone extends __1.AwsConstructBase {
71
72
  * VPCs to which this hosted zone will be added
72
73
  */
73
74
  this.vpcs = new Array();
74
- validateZoneName(props.zoneName);
75
+ validateZoneName(this, props.zoneName);
75
76
  // Add a dot at the end if the addTrailingDot property is not false.
76
77
  const zoneName = props.addTrailingDot === false || props.zoneName.endsWith(".")
77
78
  ? props.zoneName
@@ -132,7 +133,7 @@ class DnsZone extends __1.AwsConstructBase {
132
133
  }
133
134
  exports.DnsZone = DnsZone;
134
135
  _a = JSII_RTTI_SYMBOL_1;
135
- DnsZone[_a] = { fqn: "terraconstructs.aws.edge.DnsZone", version: "0.1.7" };
136
+ DnsZone[_a] = { fqn: "terraconstructs.aws.edge.DnsZone", version: "0.1.9" };
136
137
  function makeHostedZoneArn(construct, hostedZoneId) {
137
138
  return __1.AwsStack.ofAwsConstruct(construct).formatArn({
138
139
  account: "",
@@ -150,15 +151,15 @@ function makeHostedZoneArn(construct, hostedZoneId) {
150
151
  * @returns +zoneName+
151
152
  * @throws ValidationError if the name is not valid.
152
153
  */
153
- function validateZoneName(zoneName) {
154
+ function validateZoneName(scope, zoneName) {
154
155
  if (zoneName.length > 255) {
155
- throw new Error("zone name cannot be more than 255 bytes long");
156
+ throw new errors_1.ValidationError("zone name cannot be more than 255 bytes long", scope);
156
157
  }
157
158
  if (zoneName.split(".").find((label) => label.length > 63)) {
158
- throw new Error("zone name labels cannot be more than 63 bytes long");
159
+ throw new errors_1.ValidationError("zone name labels cannot be more than 63 bytes long", scope);
159
160
  }
160
161
  if (!zoneName.match(/^[a-z0-9!"#$%&'()*+,/:;<=>?@[\\\]^_`{|}~.-]+$/i)) {
161
- throw new Error("zone names can only contain a-z, 0-9, -, ! \" # $ % & ' ( ) * + , - / : ; < = > ? @ [ ] ^ _ ` { | } ~ .");
162
+ throw new errors_1.ValidationError("zone names can only contain a-z, 0-9, -, ! \" # $ % & ' ( ) * + , - / : ; < = > ? @ [ ] ^ _ ` { | } ~ .", scope);
162
163
  }
163
164
  }
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXpvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2VkZ2UvZG5zLXpvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQXdUQSw4Q0FXQztBQVVELDRDQVlDOztBQXpWRCxzREFBc0U7QUFDdEUsaUNBQTBDO0FBRTFDLDJCQUthO0FBb0piOzs7R0FHRztBQUNILE1BQWEsT0FBUSxTQUFRLG9CQUFnQjtJQUMzQywrQ0FBK0M7SUFDL0M7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUN0QixLQUFnQixFQUNoQixFQUFVLEVBQ1YsTUFBYztRQUVkLE1BQU0sTUFBTyxTQUFRLG9CQUFnQjtZQUVuQyxJQUFXLGNBQWM7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN2QixDQUFDO1lBQ0QsSUFBVyxPQUFPO2dCQUNoQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDN0IsQ0FBQztZQUVELElBQVcsUUFBUTtnQkFDakIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUM5QixDQUFDO1lBQ0QsSUFBVyxHQUFHO2dCQUNaLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7WUFDN0IsQ0FBQztZQUNELElBQVcsV0FBVztnQkFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUNyQyxDQUFDO1lBQ0QsSUFBVyxpQkFBaUI7Z0JBQzFCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQztZQUMzQyxDQUFDO1lBRUQsWUFBWSxNQUFpQixFQUFFLEdBQVc7Z0JBQ3hDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQWZULFdBQU0sR0FBRyxNQUFNLENBQUM7Z0JBZ0I5QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksaUNBQWtCLENBQUMsa0JBQWtCLENBQ3pELElBQUksRUFD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QyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMzRCxNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUNELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxDQUFDLEVBQUUsQ0FBQztRQUN0RSxNQUFNLElBQUksS0FBSyxDQUNiLDBHQUEwRyxDQUMzRyxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByb3V0ZTUzWm9uZSwgZGF0YUF3c1JvdXRlNTNab25lIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IExhenksIElSZXNvbHZhYmxlIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQXdzU3RhY2ssXG4gIElBd3NDb25zdHJ1Y3QsXG4gIEF3c0NvbnN0cnVjdEJhc2UsXG4gIEF3c0NvbnN0cnVjdFByb3BzLFxufSBmcm9tIFwiLi4vXCI7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcIi4uL2NvbXB1dGVcIjtcbmltcG9ydCB7IElOZXR3b3JrIH0gZnJvbSBcIi4uL25ldHdvcmtcIjtcblxuLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNTYuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3Mtcm91dGU1My9saWIvaG9zdGVkLXpvbmUudHNcblxuLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyB0byBjcmVhdGUgYSBSb3V0ZSA1MyBob3N0ZWQgem9uZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbkRuc1pvbmVQcm9wcyBleHRlbmRzIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkb21haW4uIEZvciByZXNvdXJjZSByZWNvcmQgdHlwZXMgdGhhdCBpbmNsdWRlIGEgZG9tYWluXG4gICAqIG5hbWUsIHNwZWNpZnkgYSBmdWxseSBxdWFsaWZpZWQgZG9tYWluIG5hbWUuXG4gICAqL1xuICByZWFkb25seSB6b25lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFkZCBhIHRyYWlsaW5nIGRvdCB0byB0aGUgem9uZSBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhZGRUcmFpbGluZ0RvdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFueSBjb21tZW50cyB0aGF0IHlvdSB3YW50IHRvIGluY2x1ZGUgYWJvdXQgdGhlIGhvc3RlZCB6b25lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBub25lXG4gICAqL1xuICByZWFkb25seSBjb21tZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuNjAuMC9kb2NzL3Jlc291cmNlcy9yb3V0ZTUzX3pvbmUjZm9yY2VfZGVzdHJveSBSb3V0ZTUzWm9uZSNmb3JjZV9kZXN0cm95fVxuICAgKi9cbiAgcmVhZG9ubHkgZm9yY2VEZXN0cm95PzogYm9vbGVhbiB8IElSZXNvbHZhYmxlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgb2YgYSBuZXcgaG9zdGVkIHpvbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEbnNab25lUHJvcHMgZXh0ZW5kcyBDb21tb25EbnNab25lUHJvcHMge1xuICAvKipcbiAgICogQSBWUEMgdGhhdCB5b3Ugd2FudCB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIGhvc3RlZCB6b25lLiBXaGVuIHlvdSBzcGVjaWZ5XG4gICAqIHRoaXMgcHJvcGVydHksIGEgcHJpdmF0ZSBob3N0ZWQgem9uZSB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqXG4gICAqIFlvdSBjYW4gYXNzb2NpYXRlIGFkZGl0aW9uYWwgVlBDcyB0byB0aGlzIHByaXZhdGUgem9uZSB1c2luZyBgYWRkVnBjKHZwYylgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBwdWJsaWMgKG5vIFZQQ3MgYXNzb2NpYXRlZClcbiAgICovXG4gIHJlYWRvbmx5IHZwY3M/OiBlYzIuSVZwY1tdO1xuXG4gIC8qKlxuICAgKiBOZXR3b3JrcyB0aGF0IHlvdSB3YW50IHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgaG9zdGVkIHpvbmUuIFdoZW4geW91IHNwZWNpZnlcbiAgICogdGhpcyBwcm9wZXJ0eSwgYSBwcml2YXRlIGhvc3RlZCB6b25lIHdpbGwgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogQ29uZmxpY3RzIHdpdGggdGhlIGBkZWxlZ2F0aW9uU2V0SWRgIGFuZCBhbnkgYGF3c19yb3V0ZTUzX3pvbmVfYXNzb2NpYXRpb25gXG4gICAqIHJlc291cmNlIHNwZWNpZnlpbmcgdGhlIHNhbWUgem9uZSBJRC5cbiAgICpcbiAgICogWW91IGNhbiBhc3NvY2lhdGUgYWRkaXRpb25hbCBuZXR3b3JrcyB0byB0aGlzIHByaXZhdGUgem9uZSB1c2luZyBgYWRkTmV0d29yayhuZXR3b3JrKWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHB1YmxpYyAobm8gbmV0d29ya3MgYXNzb2NpYXRlZClcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGB2cGNzYCBpbnN0ZWFkXG4gICAqL1xuICByZWFkb25seSBuZXR3b3Jrcz86IElOZXR3b3JrW107XG5cbiAgLyoqXG4gICAqIERlbGVnYXRpb24gc2V0IElEIGZvciB0aGUgcHJpdmF0ZSBob3N0ZWQgem9uZS5cbiAgICpcbiAgICogVGhlIElEIG9mIHRoZSByZXVzYWJsZSBkZWxlZ2F0aW9uIHNldCB3aG9zZSBOUyByZWNvcmRzIHlvdSB3YW50IHRvIGFzc2lnbiB0byB0aGUgaG9zdGVkIHpvbmUuXG4gICAqXG4gICAqIENvbmZsaWN0cyB3aXRoIHZwYyBhcyBkZWxlZ2F0aW9uIHNldHMgY2FuIG9ubHkgYmUgdXNlZCBmb3IgcHVibGljIHpvbmVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZWdhdGlvblNldElkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE91dHB1dHMgd2hpY2ggbWF5IGJlIHJlZ2lzdGVyZWQgZm9yIG91dHB1dCB2aWEgdGhlIEdyaWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG5zWm9uZU91dHB1dHMge1xuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgaG9zdGVkIHpvbmVcbiAgICovXG4gIHJlYWRvbmx5IHpvbmVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBob3N0ZWQgem9uZVxuICAgKi9cbiAgcmVhZG9ubHkgem9uZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2V0IG9mIG5hbWUgc2VydmVycyBmb3IgdGhlIHNwZWNpZmljIGhvc3RlZCB6b25lLiBGb3IgZXhhbXBsZTpcbiAgICogbnMxLmV4YW1wbGUuY29tLlxuICAgKlxuICAgKiBUaGlzIGF0dHJpYnV0ZSB3aWxsIGJlIHVuZGVmaW5lZCBmb3IgcHJpdmF0ZSBob3N0ZWQgem9uZXMgb3IgaG9zdGVkIHpvbmVzIGltcG9ydGVkIGZyb20gYW5vdGhlciBzdGFjay5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZVNlcnZlcnM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgUm91dGUgNTMgbmFtZSBzZXJ2ZXIgdGhhdCBjcmVhdGVkIHRoZSBTT0EgcmVjb3JkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJpbWFyeU5hbWVTZXJ2ZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbXBvcnRlZCBvciBjcmVhdGVkIEROUyB6b25lIGF0dHJpYnV0ZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRG5zWm9uZSBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKiogU3Ryb25nbHkgdHlwZWQgb3V0cHV0cyAqL1xuICByZWFkb25seSBkbnNab25lT3V0cHV0czogRG5zWm9uZU91dHB1dHM7XG5cbiAgLyoqXG4gICAqIElEIG9mIHRoaXMgaG9zdGVkIHpvbmUsIHN1Y2ggYXMgXCJaMjNBQkM0WFlaTDA1QlwiXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHpvbmVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGUUROIG9mIHRoaXMgaG9zdGVkIHpvbmVcbiAgICovXG4gIHJlYWRvbmx5IHpvbmVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFSTiBvZiB0aGlzIGhvc3RlZCB6b25lLCBzdWNoIGFzIGFybjoke1BhcnRpdGlvbn06cm91dGU1Mzo6Omhvc3RlZHpvbmUvJHtJZH1cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBuYW1lIHNlcnZlcnMgaW4gYXNzb2NpYXRlZCAob3IgZGVmYXVsdCkgZGVsZWdhdGlvbiBzZXQuXG4gICAqIEZpbmQgbW9yZSBhYm91dCBkZWxlZ2F0aW9uIHNldHMgaW4gW0FXUyBkb2NzXVtkZWxlZ2F0aW9uIHNldCBkb2NzXS5cbiAgICpcbiAgICogUmV0dXJucyB0aGUgc2V0IG9mIG5hbWUgc2VydmVycyBmb3IgdGhlIHNwZWNpZmljIGhvc3RlZCB6b25lLiBGb3IgZXhhbXBsZTpcbiAgICogbnMxLmV4YW1wbGUuY29tLlxuICAgKlxuICAgKiBbZGVsZWdhdGlvbiBzZXQgZG9jc106IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9Sb3V0ZTUzL2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9kbnMtY29uZmlndXJpbmctZGVsZWdhdGlvbi1zZXQuaHRtbFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBuYW1lU2VydmVyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBSb3V0ZSA1MyBuYW1lIHNlcnZlciB0aGF0IGNyZWF0ZWQgdGhlIFNPQSByZWNvcmQuXG4gICAqL1xuICByZWFkb25seSBwcmltYXJ5TmFtZVNlcnZlcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnRhaW5lciBmb3IgcmVjb3JkcywgYW5kIHJlY29yZHMgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gcm91dGUgdHJhZmZpYyBmb3IgYVxuICogc3BlY2lmaWMgZG9tYWluLCBzdWNoIGFzIGV4YW1wbGUuY29tIGFuZCBpdHMgc3ViZG9tYWlucyAoYWNtZS5leGFtcGxlLmNvbSwgemVuaXRoLmV4YW1wbGUuY29tKVxuICovXG5leHBvcnQgY2xhc3MgRG5zWm9uZSBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJRG5zWm9uZSB7XG4gIC8vIFRPRE86IEFkZCBcImZyb20gR3JpZCBMb29rdXBcIiBzdGF0aWMgbWV0aG9kcz9cbiAgLyoqXG4gICAqIEltcG9ydCBhIFJvdXRlIDUzIGhvc3RlZCB6b25lIGRlZmluZWQgZWl0aGVyIG91dHNpZGUgb2YgVGVycmFDb25zdHJ1Y3QsIG9yIGZyb20gR3JpZCBMb29rdXBcbiAgICpcbiAgICogVXNlIHdoZW4gaG9zdGVkIHpvbmUgSUQgaXMga25vd24uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSB0aGUgcGFyZW50IENvbnN0cnVjdCBmb3IgdGhpcyBDb25zdHJ1Y3RcbiAgICogQHBhcmFtIGlkICB0aGUgbG9naWNhbCBuYW1lIG9mIHRoaXMgQ29uc3RydWN0XG4gICAqIEBwYXJhbSB6b25lSWQgdGhlIElEIG9mIHRoZSBob3N0ZWQgem9uZSB0byBpbXBvcnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVpvbmVJZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgem9uZUlkOiBzdHJpbmcsXG4gICk6IElEbnNab25lIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSURuc1pvbmUge1xuICAgICAgcHJpdmF0ZSByZWFkb25seSBfb3V0cHV0czogRG5zWm9uZU91dHB1dHM7XG4gICAgICBwdWJsaWMgZ2V0IGRuc1pvbmVPdXRwdXRzKCk6IERuc1pvbmVPdXRwdXRzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX291dHB1dHM7XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRuc1pvbmVPdXRwdXRzO1xuICAgICAgfVxuICAgICAgcHVibGljIHJlYWRvbmx5IHpvbmVJZCA9IHpvbmVJZDtcbiAgICAgIHB1YmxpYyBnZXQgem9uZU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YXNvdXJjZS5uYW1lO1xuICAgICAgfVxuICAgICAgcHVibGljIGdldCBhcm4oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YXNvdXJjZS5hcm47XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IG5hbWVTZXJ2ZXJzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YXNvdXJjZS5uYW1lU2VydmVycztcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgcHJpbWFyeU5hbWVTZXJ2ZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YXNvdXJjZS5wcmltYXJ5TmFtZVNlcnZlcjtcbiAgICAgIH1cbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0YXNvdXJjZTogZGF0YUF3c1JvdXRlNTNab25lLkRhdGFBd3NSb3V0ZTUzWm9uZTtcbiAgICAgIGNvbnN0cnVjdG9yKF9zY29wZTogQ29uc3RydWN0LCBfaWQ6IHN0cmluZykge1xuICAgICAgICBzdXBlcihfc2NvcGUsIF9pZCwge30pO1xuICAgICAgICB0aGlzLmRhdGFzb3VyY2UgPSBuZXcgZGF0YUF3c1JvdXRlNTNab25lLkRhdGFBd3NSb3V0ZTUzWm9uZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICB6b25lSWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fb3V0cHV0cyA9IHtcbiAgICAgICAgICB6b25lSWQ6IHpvbmVJZCxcbiAgICAgICAgICB6b25lTmFtZTogdGhpcy5kYXRhc291cmNlLm5hbWUsXG4gICAgICAgICAgbmFtZVNlcnZlcnM6IHRoaXMuZGF0YXNvdXJjZS5uYW1lU2VydmVycyxcbiAgICAgICAgICBwcmltYXJ5TmFtZVNlcnZlcjogdGhpcy5kYXRhc291cmNlLnByaW1hcnlOYW1lU2VydmVyLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXRzOiBEbnNab25lT3V0cHV0cztcbiAgcHVibGljIGdldCBkbnNab25lT3V0cHV0cygpOiBEbnNab25lT3V0cHV0cyB7XG4gICAgcmV0dXJuIHRoaXMuX291dHB1dHM7XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRuc1pvbmVPdXRwdXRzO1xuICB9XG4gIHB1YmxpYyByZWFkb25seSB6b25lSWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgem9uZU5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IG5hbWVTZXJ2ZXJzOiBzdHJpbmdbXTtcbiAgcHVibGljIHJlYWRvbmx5IHByaW1hcnlOYW1lU2VydmVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZQQ3MgdG8gd2hpY2ggdGhpcyBob3N0ZWQgem9uZSB3aWxsIGJlIGFkZGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdnBjcyA9IG5ldyBBcnJheTxyb3V0ZTUzWm9uZS5Sb3V0ZTUzWm9uZVZwYz4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVzb3VyY2U6IHJvdXRlNTNab25lLlJvdXRlNTNab25lO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEbnNab25lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHZhbGlkYXRlWm9uZU5hbWUocHJvcHMuem9uZU5hbWUpO1xuXG4gICAgLy8gQWRkIGEgZG90IGF0IHRoZSBlbmQgaWYgdGhlIGFkZFRyYWlsaW5nRG90IHByb3BlcnR5IGlzIG5vdCBmYWxzZS5cbiAgICBjb25zdCB6b25lTmFtZSA9XG4gICAgICBwcm9wcy5hZGRUcmFpbGluZ0RvdCA9PT0gZmFsc2UgfHwgcHJvcHMuem9uZU5hbWUuZW5kc1dpdGgoXCIuXCIpXG4gICAgICAgID8gcHJvcHMuem9uZU5hbWVcbiAgICAgICAgOiBgJHtwcm9wcy56b25lTmFtZX0uYDtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgcm91dGU1M1pvbmUuUm91dGU1M1pvbmUodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBuYW1lOiB6b25lTmFtZSxcbiAgICAgIGNvbW1lbnQ6IHByb3BzLmNvbW1lbnQsXG4gICAgICB2cGM6IExhenkuYW55VmFsdWUoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgIHRoaXMudnBjcy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IHRoaXMudnBjcy5tYXAoKG4pID0+IHJvdXRlNTNab25lLnJvdXRlNTNab25lVnBjVG9UZXJyYWZvcm0obikpLFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLnpvbmVJZCA9IHRoaXMucmVzb3VyY2UuaWQ7XG4gICAgdGhpcy5hcm4gPSB0aGlzLnJlc291cmNlLmFybjtcbiAgICB0aGlzLm5hbWVTZXJ2ZXJzID0gdGhpcy5yZXNvdXJjZS5uYW1lU2VydmVycztcbiAgICB0aGlzLnByaW1hcnlOYW1lU2VydmVyID0gdGhpcy5yZXNvdXJjZS5wcmltYXJ5TmFtZVNlcnZlcjtcbiAgICB0aGlzLnpvbmVOYW1lID0gcHJvcHMuem9uZU5hbWU7XG5cbiAgICBmb3IgKGNvbnN0IHZwYyBvZiBwcm9wcy5uZXR3b3JrcyB8fCBbXSkge1xuICAgICAgdGhpcy5hZGROZXR3b3JrKHZwYyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB2cGMgb2YgcHJvcHMudnBjcyB8fCBbXSkge1xuICAgICAgdGhpcy5hZGRWcGModnBjKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vdXRwdXRzID0ge1xuICAgICAgem9uZUlkOiB0aGlzLnpvbmVJZCxcbiAgICAgIHpvbmVOYW1lOiB0aGlzLnpvbmVOYW1lLFxuICAgICAgbmFtZVNlcnZlcnM6IHRoaXMubmFtZVNlcnZlcnMsXG4gICAgICBwcmltYXJ5TmFtZVNlcnZlcjogdGhpcy5yZXNvdXJjZS5wcmltYXJ5TmFtZVNlcnZlcixcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbm90aGVyIFZQQyB0byB0aGlzIHByaXZhdGUgaG9zdGVkIHpvbmUuXG4gICAqXG4gICAqIEBwYXJhbSB2cGMgdGhlIG90aGVyIFZQQyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkVnBjKHZwYzogZWMyLklWcGMpIHtcbiAgICB0aGlzLnZwY3MucHVzaCh7XG4gICAgICB2cGNJZDogdnBjLnZwY0lkLFxuICAgICAgdnBjUmVnaW9uOiB2cGMuZW52LnJlZ2lvbixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW5vdGhlciBOZXR3b3JrIHRvIHRoaXMgcHJpdmF0ZSBob3N0ZWQgem9uZS5cbiAgICpcbiAgICogVGhpcyBjb25mbGljdHMgd2l0aCB0aGUgYGRlbGVnYXRpb25TZXRJZGAgYW5kIGFueVxuICAgKiBgYXdzX3JvdXRlNTNfem9uZV9hc3NvY2lhdGlvbmAgY3JlYXRlZCBvdXRzaWRlIHRoaXMgc3BlYy5cbiAgICpcbiAgICogQHBhcmFtIG5ldHdvcmsgdGhlIG90aGVyIE5ldHdvcmsgdG8gYWRkLlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYWRkVnBjIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBhZGROZXR3b3JrKG5ldHdvcms6IElOZXR3b3JrKSB7XG4gICAgdGhpcy52cGNzLnB1c2goe1xuICAgICAgdnBjSWQ6IG5ldHdvcmsudnBjSWQsXG4gICAgICB2cGNSZWdpb246IG5ldHdvcmsuZW52LnJlZ2lvbiA/PyBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdChuZXR3b3JrKS5yZWdpb24sXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VIb3N0ZWRab25lQXJuKFxuICBjb25zdHJ1Y3Q6IENvbnN0cnVjdCxcbiAgaG9zdGVkWm9uZUlkOiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QoY29uc3RydWN0KS5mb3JtYXRBcm4oe1xuICAgIGFjY291bnQ6IFwiXCIsXG4gICAgcmVnaW9uOiBcIlwiLFxuICAgIHNlcnZpY2U6IFwicm91dGU1M1wiLFxuICAgIHJlc291cmNlOiBcImhvc3RlZHpvbmVcIixcbiAgICByZXNvdXJjZU5hbWU6IGhvc3RlZFpvbmVJZCxcbiAgfSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgem9uZSBuYW1lIGlzIHZhbGlkIGJ5IFJvdXRlNTMgc3BlY2lmYyBuYW1pbmcgcnVsZXMsXG4gKiBhbmQgdGhhdCB0aGVyZSBpcyBubyB0cmFpbGluZyBkb3QgaW4gdGhlIG5hbWUuXG4gKlxuICogQHBhcmFtIHpvbmVOYW1lIHRoZSB6b25lIG5hbWUgdG8gYmUgdmFsaWRhdGVkLlxuICogQHJldHVybnMgK3pvbmVOYW1lK1xuICogQHRocm93cyBWYWxpZGF0aW9uRXJyb3IgaWYgdGhlIG5hbWUgaXMgbm90IHZhbGlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVab25lTmFtZSh6b25lTmFtZTogc3RyaW5nKSB7XG4gIGlmICh6b25lTmFtZS5sZW5ndGggPiAyNTUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6b25lIG5hbWUgY2Fubm90IGJlIG1vcmUgdGhhbiAyNTUgYnl0ZXMgbG9uZ1wiKTtcbiAgfVxuICBpZiAoem9uZU5hbWUuc3BsaXQoXCIuXCIpLmZpbmQoKGxhYmVsKSA9PiBsYWJlbC5sZW5ndGggPiA2MykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6b25lIG5hbWUgbGFiZWxzIGNhbm5vdCBiZSBtb3JlIHRoYW4gNjMgYnl0ZXMgbG9uZ1wiKTtcbiAgfVxuICBpZiAoIXpvbmVOYW1lLm1hdGNoKC9eW2EtejAtOSFcIiMkJSYnKCkqKywvOjs8PT4/QFtcXFxcXFxdXl9ge3x9fi4tXSskL2kpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJ6b25lIG5hbWVzIGNhbiBvbmx5IGNvbnRhaW4gYS16LCAwLTksIC0sICEgXFxcIiAjICQgJSAmICcgKCApICogKyAsIC0gLyA6IDsgPCA9ID4gPyBAIFsgIF0gXiBfIGAgeyB8IH0gfiAuXCIsXG4gICAgKTtcbiAgfVxufVxuIl19
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXpvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2VkZ2UvZG5zLXpvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQXlUQSw4Q0FXQztBQVVELDRDQW1CQzs7QUFqV0Qsc0RBQXNFO0FBQ3RFLGlDQUEwQztBQUUxQywyQkFLYTtBQUNiLHlDQUErQztBQW9KL0M7OztHQUdHO0FBQ0gsTUFBYSxPQUFRLFNBQVEsb0JBQWdCO0lBQzNDLCtDQUErQztJQUMvQzs7Ozs7Ozs7T0FRRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQ3RCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixNQUFjO1FBRWQsTUFBTSxNQUFPLFNBQVEsb0JBQWdCO1lBRW5DLElBQVcsY0FBYztnQkFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUM3QixDQUFDO1lBRUQsSUFBVyxRQUFRO2dCQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQzlCLENBQUM7WUFDRCxJQUFXLEdBQUc7Z0JBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUM3QixDQUFDO1lBQ0QsSUFBVyxXQUFXO2dCQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1lBQ3JDLENBQUM7WUFDRCxJQUFXLGlCQUFpQjtnQkFDMUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDO1lBQzNDLENBQUM7WUFFRCxZQUFZLE1BQWlCLEVBQUUsR0FBVztnQkFDeEMsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBZlQsV0FBTSxHQUFHLE1BQU0sQ0FBQztnQkFnQjlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxpQ0FBa0IsQ0FBQyxrQkFBa0Is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QUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzNELE1BQU0sSUFBSSx3QkFBZSxDQUN2QixvREFBb0QsRUFDcEQsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsZ0RBQWdELENBQUMsRUFBRSxDQUFDO1FBQ3RFLE1BQU0sSUFBSSx3QkFBZSxDQUN2QiwwR0FBMEcsRUFDMUcsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJvdXRlNTNab25lLCBkYXRhQXdzUm91dGU1M1pvbmUgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgTGF6eSwgSVJlc29sdmFibGUgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBBd3NTdGFjayxcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9cIjtcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvcnNcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiLi4vY29tcHV0ZVwiO1xuaW1wb3J0IHsgSU5ldHdvcmsgfSBmcm9tIFwiLi4vbmV0d29ya1wiO1xuXG4vLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1yb3V0ZTUzL2xpYi9ob3N0ZWQtem9uZS50c1xuXG4vKipcbiAqIENvbW1vbiBwcm9wZXJ0aWVzIHRvIGNyZWF0ZSBhIFJvdXRlIDUzIGhvc3RlZCB6b25lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uRG5zWm9uZVByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRvbWFpbi4gRm9yIHJlc291cmNlIHJlY29yZCB0eXBlcyB0aGF0IGluY2x1ZGUgYSBkb21haW5cbiAgICogbmFtZSwgc3BlY2lmeSBhIGZ1bGx5IHF1YWxpZmllZCBkb21haW4gbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHpvbmVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWRkIGEgdHJhaWxpbmcgZG90IHRvIHRoZSB6b25lIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFkZFRyYWlsaW5nRG90PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQW55IGNvbW1lbnRzIHRoYXQgeW91IHdhbnQgdG8gaW5jbHVkZSBhYm91dCB0aGUgaG9zdGVkIHpvbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGNvbW1lbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42MC4wL2RvY3MvcmVzb3VyY2VzL3JvdXRlNTNfem9uZSNmb3JjZV9kZXN0cm95IFJvdXRlNTNab25lI2ZvcmNlX2Rlc3Ryb3l9XG4gICAqL1xuICByZWFkb25seSBmb3JjZURlc3Ryb3k/OiBib29sZWFuIHwgSVJlc29sdmFibGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBvZiBhIG5ldyBob3N0ZWQgem9uZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERuc1pvbmVQcm9wcyBleHRlbmRzIENvbW1vbkRuc1pvbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBBIFZQQyB0aGF0IHlvdSB3YW50IHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgaG9zdGVkIHpvbmUuIFdoZW4geW91IHNwZWNpZnlcbiAgICogdGhpcyBwcm9wZXJ0eSwgYSBwcml2YXRlIGhvc3RlZCB6b25lIHdpbGwgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogWW91IGNhbiBhc3NvY2lhdGUgYWRkaXRpb25hbCBWUENzIHRvIHRoaXMgcHJpdmF0ZSB6b25lIHVzaW5nIGBhZGRWcGModnBjKWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHB1YmxpYyAobm8gVlBDcyBhc3NvY2lhdGVkKVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjcz86IGVjMi5JVnBjW107XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtzIHRoYXQgeW91IHdhbnQgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBob3N0ZWQgem9uZS4gV2hlbiB5b3Ugc3BlY2lmeVxuICAgKiB0aGlzIHByb3BlcnR5LCBhIHByaXZhdGUgaG9zdGVkIHpvbmUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKlxuICAgKiBDb25mbGljdHMgd2l0aCB0aGUgYGRlbGVnYXRpb25TZXRJZGAgYW5kIGFueSBgYXdzX3JvdXRlNTNfem9uZV9hc3NvY2lhdGlvbmBcbiAgICogcmVzb3VyY2Ugc3BlY2lmeWluZyB0aGUgc2FtZSB6b25lIElELlxuICAgKlxuICAgKiBZb3UgY2FuIGFzc29jaWF0ZSBhZGRpdGlvbmFsIG5ldHdvcmtzIHRvIHRoaXMgcHJpdmF0ZSB6b25lIHVzaW5nIGBhZGROZXR3b3JrKG5ldHdvcmspYC5cbiAgICpcbiAgICogQGRlZmF1bHQgcHVibGljIChubyBuZXR3b3JrcyBhc3NvY2lhdGVkKVxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYHZwY3NgIGluc3RlYWRcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtzPzogSU5ldHdvcmtbXTtcblxuICAvKipcbiAgICogRGVsZWdhdGlvbiBzZXQgSUQgZm9yIHRoZSBwcml2YXRlIGhvc3RlZCB6b25lLlxuICAgKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJldXNhYmxlIGRlbGVnYXRpb24gc2V0IHdob3NlIE5TIHJlY29yZHMgeW91IHdhbnQgdG8gYXNzaWduIHRvIHRoZSBob3N0ZWQgem9uZS5cbiAgICpcbiAgICogQ29uZmxpY3RzIHdpdGggdnBjIGFzIGRlbGVnYXRpb24gc2V0cyBjYW4gb25seSBiZSB1c2VkIGZvciBwdWJsaWMgem9uZXMuXG4gICAqL1xuICByZWFkb25seSBkZWxlZ2F0aW9uU2V0SWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3V0cHV0cyB3aGljaCBtYXkgYmUgcmVnaXN0ZXJlZCBmb3Igb3V0cHV0IHZpYSB0aGUgR3JpZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEbnNab25lT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBob3N0ZWQgem9uZVxuICAgKi9cbiAgcmVhZG9ubHkgem9uZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGhvc3RlZCB6b25lXG4gICAqL1xuICByZWFkb25seSB6b25lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgbmFtZSBzZXJ2ZXJzIGZvciB0aGUgc3BlY2lmaWMgaG9zdGVkIHpvbmUuIEZvciBleGFtcGxlOlxuICAgKiBuczEuZXhhbXBsZS5jb20uXG4gICAqXG4gICAqIFRoaXMgYXR0cmlidXRlIHdpbGwgYmUgdW5kZWZpbmVkIGZvciBwcml2YXRlIGhvc3RlZCB6b25lcyBvciBob3N0ZWQgem9uZXMgaW1wb3J0ZWQgZnJvbSBhbm90aGVyIHN0YWNrLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBuYW1lU2VydmVyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBSb3V0ZSA1MyBuYW1lIHNlcnZlciB0aGF0IGNyZWF0ZWQgdGhlIFNPQSByZWNvcmQuXG4gICAqL1xuICByZWFkb25seSBwcmltYXJ5TmFtZVNlcnZlcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEltcG9ydGVkIG9yIGNyZWF0ZWQgRE5TIHpvbmUgYXR0cmlidXRlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElEbnNab25lIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIC8qKiBTdHJvbmdseSB0eXBlZCBvdXRwdXRzICovXG4gIHJlYWRvbmx5IGRuc1pvbmVPdXRwdXRzOiBEbnNab25lT3V0cHV0cztcblxuICAvKipcbiAgICogSUQgb2YgdGhpcyBob3N0ZWQgem9uZSwgc3VjaCBhcyBcIloyM0FCQzRYWVpMMDVCXCJcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgem9uZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZRRE4gb2YgdGhpcyBob3N0ZWQgem9uZVxuICAgKi9cbiAgcmVhZG9ubHkgem9uZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQVJOIG9mIHRoaXMgaG9zdGVkIHpvbmUsIHN1Y2ggYXMgYXJuOiR7UGFydGl0aW9ufTpyb3V0ZTUzOjo6aG9zdGVkem9uZS8ke0lkfVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhcm46IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIG5hbWUgc2VydmVycyBpbiBhc3NvY2lhdGVkIChvciBkZWZhdWx0KSBkZWxlZ2F0aW9uIHNldC5cbiAgICogRmluZCBtb3JlIGFib3V0IGRlbGVnYXRpb24gc2V0cyBpbiBbQVdTIGRvY3NdW2RlbGVnYXRpb24gc2V0IGRvY3NdLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgbmFtZSBzZXJ2ZXJzIGZvciB0aGUgc3BlY2lmaWMgaG9zdGVkIHpvbmUuIEZvciBleGFtcGxlOlxuICAgKiBuczEuZXhhbXBsZS5jb20uXG4gICAqXG4gICAqIFtkZWxlZ2F0aW9uIHNldCBkb2NzXTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL1JvdXRlNTMvbGF0ZXN0L0RldmVsb3Blckd1aWRlL2Rucy1jb25maWd1cmluZy1kZWxlZ2F0aW9uLXNldC5odG1sXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVTZXJ2ZXJzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIFJvdXRlIDUzIG5hbWUgc2VydmVyIHRoYXQgY3JlYXRlZCB0aGUgU09BIHJlY29yZC5cbiAgICovXG4gIHJlYWRvbmx5IHByaW1hcnlOYW1lU2VydmVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udGFpbmVyIGZvciByZWNvcmRzLCBhbmQgcmVjb3JkcyBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byByb3V0ZSB0cmFmZmljIGZvciBhXG4gKiBzcGVjaWZpYyBkb21haW4sIHN1Y2ggYXMgZXhhbXBsZS5jb20gYW5kIGl0cyBzdWJkb21haW5zIChhY21lLmV4YW1wbGUuY29tLCB6ZW5pdGguZXhhbXBsZS5jb20pXG4gKi9cbmV4cG9ydCBjbGFzcyBEbnNab25lIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElEbnNab25lIHtcbiAgLy8gVE9ETzogQWRkIFwiZnJvbSBHcmlkIExvb2t1cFwiIHN0YXRpYyBtZXRob2RzP1xuICAvKipcbiAgICogSW1wb3J0IGEgUm91dGUgNTMgaG9zdGVkIHpvbmUgZGVmaW5lZCBlaXRoZXIgb3V0c2lkZSBvZiBUZXJyYUNvbnN0cnVjdCwgb3IgZnJvbSBHcmlkIExvb2t1cFxuICAgKlxuICAgKiBVc2Ugd2hlbiBob3N0ZWQgem9uZSBJRCBpcyBrbm93bi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIHRoZSBwYXJlbnQgQ29uc3RydWN0IGZvciB0aGlzIENvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgIHRoZSBsb2dpY2FsIG5hbWUgb2YgdGhpcyBDb25zdHJ1Y3RcbiAgICogQHBhcmFtIHpvbmVJZCB0aGUgSUQgb2YgdGhlIGhvc3RlZCB6b25lIHRvIGltcG9ydFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tWm9uZUlkKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB6b25lSWQ6IHN0cmluZyxcbiAgKTogSURuc1pvbmUge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJRG5zWm9uZSB7XG4gICAgICBwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXRzOiBEbnNab25lT3V0cHV0cztcbiAgICAgIHB1YmxpYyBnZXQgZG5zWm9uZU91dHB1dHMoKTogRG5zWm9uZU91dHB1dHMge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3V0cHV0cztcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG5zWm9uZU91dHB1dHM7XG4gICAgICB9XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgem9uZUlkID0gem9uZUlkO1xuICAgICAgcHVibGljIGdldCB6b25lTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLm5hbWU7XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IGFybigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLmFybjtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgbmFtZVNlcnZlcnMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLm5hbWVTZXJ2ZXJzO1xuICAgICAgfVxuICAgICAgcHVibGljIGdldCBwcmltYXJ5TmFtZVNlcnZlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLnByaW1hcnlOYW1lU2VydmVyO1xuICAgICAgfVxuICAgICAgcHJpdmF0ZSByZWFkb25seSBkYXRhc291cmNlOiBkYXRhQXdzUm91dGU1M1pvbmUuRGF0YUF3c1JvdXRlNTNab25lO1xuICAgICAgY29uc3RydWN0b3IoX3Njb3BlOiBDb25zdHJ1Y3QsIF9pZDogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKF9zY29wZSwgX2lkLCB7fSk7XG4gICAgICAgIHRoaXMuZGF0YXNvdXJjZSA9IG5ldyBkYXRhQXdzUm91dGU1M1pvbmUuRGF0YUF3c1JvdXRlNTNab25lKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHpvbmVJZCxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9vdXRwdXRzID0ge1xuICAgICAgICAgIHpvbmVJZDogem9uZUlkLFxuICAgICAgICAgIHpvbmVOYW1lOiB0aGlzLmRhdGFzb3VyY2UubmFtZSxcbiAgICAgICAgICBuYW1lU2VydmVyczogdGhpcy5kYXRhc291cmNlLm5hbWVTZXJ2ZXJzLFxuICAgICAgICAgIHByaW1hcnlOYW1lU2VydmVyOiB0aGlzLmRhdGFzb3VyY2UucHJpbWFyeU5hbWVTZXJ2ZXIsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX291dHB1dHM6IERuc1pvbmVPdXRwdXRzO1xuICBwdWJsaWMgZ2V0IGRuc1pvbmVPdXRwdXRzKCk6IERuc1pvbmVPdXRwdXRzIHtcbiAgICByZXR1cm4gdGhpcy5fb3V0cHV0cztcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZG5zWm9uZU91dHB1dHM7XG4gIH1cbiAgcHVibGljIHJlYWRvbmx5IHpvbmVJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB6b25lTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZVNlcnZlcnM6IHN0cmluZ1tdO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpbWFyeU5hbWVTZXJ2ZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVlBDcyB0byB3aGljaCB0aGlzIGhvc3RlZCB6b25lIHdpbGwgYmUgYWRkZWRcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSB2cGNzID0gbmV3IEFycmF5PHJvdXRlNTNab25lLlJvdXRlNTNab25lVnBjPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSByZXNvdXJjZTogcm91dGU1M1pvbmUuUm91dGU1M1pvbmU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERuc1pvbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgdmFsaWRhdGVab25lTmFtZSh0aGlzLCBwcm9wcy56b25lTmFtZSk7XG5cbiAgICAvLyBBZGQgYSBkb3QgYXQgdGhlIGVuZCBpZiB0aGUgYWRkVHJhaWxpbmdEb3QgcHJvcGVydHkgaXMgbm90IGZhbHNlLlxuICAgIGNvbnN0IHpvbmVOYW1lID1cbiAgICAgIHByb3BzLmFkZFRyYWlsaW5nRG90ID09PSBmYWxzZSB8fCBwcm9wcy56b25lTmFtZS5lbmRzV2l0aChcIi5cIilcbiAgICAgICAgPyBwcm9wcy56b25lTmFtZVxuICAgICAgICA6IGAke3Byb3BzLnpvbmVOYW1lfS5gO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyByb3V0ZTUzWm9uZS5Sb3V0ZTUzWm9uZSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIG5hbWU6IHpvbmVOYW1lLFxuICAgICAgY29tbWVudDogcHJvcHMuY29tbWVudCxcbiAgICAgIHZwYzogTGF6eS5hbnlWYWx1ZSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgdGhpcy52cGNzLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogdGhpcy52cGNzLm1hcCgobikgPT4gcm91dGU1M1pvbmUucm91dGU1M1pvbmVWcGNUb1RlcnJhZm9ybShuKSksXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuem9uZUlkID0gdGhpcy5yZXNvdXJjZS5pZDtcbiAgICB0aGlzLmFybiA9IHRoaXMucmVzb3VyY2UuYXJuO1xuICAgIHRoaXMubmFtZVNlcnZlcnMgPSB0aGlzLnJlc291cmNlLm5hbWVTZXJ2ZXJzO1xuICAgIHRoaXMucHJpbWFyeU5hbWVTZXJ2ZXIgPSB0aGlzLnJlc291cmNlLnByaW1hcnlOYW1lU2VydmVyO1xuICAgIHRoaXMuem9uZU5hbWUgPSBwcm9wcy56b25lTmFtZTtcblxuICAgIGZvciAoY29uc3QgdnBjIG9mIHByb3BzLm5ldHdvcmtzIHx8IFtdKSB7XG4gICAgICB0aGlzLmFkZE5ldHdvcmsodnBjKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHZwYyBvZiBwcm9wcy52cGNzIHx8IFtdKSB7XG4gICAgICB0aGlzLmFkZFZwYyh2cGMpO1xuICAgIH1cblxuICAgIHRoaXMuX291dHB1dHMgPSB7XG4gICAgICB6b25lSWQ6IHRoaXMuem9uZUlkLFxuICAgICAgem9uZU5hbWU6IHRoaXMuem9uZU5hbWUsXG4gICAgICBuYW1lU2VydmVyczogdGhpcy5uYW1lU2VydmVycyxcbiAgICAgIHByaW1hcnlOYW1lU2VydmVyOiB0aGlzLnJlc291cmNlLnByaW1hcnlOYW1lU2VydmVyLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFub3RoZXIgVlBDIHRvIHRoaXMgcHJpdmF0ZSBob3N0ZWQgem9uZS5cbiAgICpcbiAgICogQHBhcmFtIHZwYyB0aGUgb3RoZXIgVlBDIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRWcGModnBjOiBlYzIuSVZwYykge1xuICAgIHRoaXMudnBjcy5wdXNoKHtcbiAgICAgIHZwY0lkOiB2cGMudnBjSWQsXG4gICAgICB2cGNSZWdpb246IHZwYy5lbnYucmVnaW9uLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbm90aGVyIE5ldHdvcmsgdG8gdGhpcyBwcml2YXRlIGhvc3RlZCB6b25lLlxuICAgKlxuICAgKiBUaGlzIGNvbmZsaWN0cyB3aXRoIHRoZSBgZGVsZWdhdGlvblNldElkYCBhbmQgYW55XG4gICAqIGBhd3Nfcm91dGU1M196b25lX2Fzc29jaWF0aW9uYCBjcmVhdGVkIG91dHNpZGUgdGhpcyBzcGVjLlxuICAgKlxuICAgKiBAcGFyYW0gbmV0d29yayB0aGUgb3RoZXIgTmV0d29yayB0byBhZGQuXG4gICAqIEBkZXByZWNhdGVkIHVzZSBhZGRWcGMgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIGFkZE5ldHdvcmsobmV0d29yazogSU5ldHdvcmspIHtcbiAgICB0aGlzLnZwY3MucHVzaCh7XG4gICAgICB2cGNJZDogbmV0d29yay52cGNJZCxcbiAgICAgIHZwY1JlZ2lvbjogbmV0d29yay5lbnYucmVnaW9uID8/IEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KG5ldHdvcmspLnJlZ2lvbixcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUhvc3RlZFpvbmVBcm4oXG4gIGNvbnN0cnVjdDogQ29uc3RydWN0LFxuICBob3N0ZWRab25lSWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIHJldHVybiBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdChjb25zdHJ1Y3QpLmZvcm1hdEFybih7XG4gICAgYWNjb3VudDogXCJcIixcbiAgICByZWdpb246IFwiXCIsXG4gICAgc2VydmljZTogXCJyb3V0ZTUzXCIsXG4gICAgcmVzb3VyY2U6IFwiaG9zdGVkem9uZVwiLFxuICAgIHJlc291cmNlTmFtZTogaG9zdGVkWm9uZUlkLFxuICB9KTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSB6b25lIG5hbWUgaXMgdmFsaWQgYnkgUm91dGU1MyBzcGVjaWZjIG5hbWluZyBydWxlcyxcbiAqIGFuZCB0aGF0IHRoZXJlIGlzIG5vIHRyYWlsaW5nIGRvdCBpbiB0aGUgbmFtZS5cbiAqXG4gKiBAcGFyYW0gem9uZU5hbWUgdGhlIHpvbmUgbmFtZSB0byBiZSB2YWxpZGF0ZWQuXG4gKiBAcmV0dXJucyArem9uZU5hbWUrXG4gKiBAdGhyb3dzIFZhbGlkYXRpb25FcnJvciBpZiB0aGUgbmFtZSBpcyBub3QgdmFsaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVpvbmVOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIHpvbmVOYW1lOiBzdHJpbmcpIHtcbiAgaWYgKHpvbmVOYW1lLmxlbmd0aCA+IDI1NSkge1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICBcInpvbmUgbmFtZSBjYW5ub3QgYmUgbW9yZSB0aGFuIDI1NSBieXRlcyBsb25nXCIsXG4gICAgICBzY29wZSxcbiAgICApO1xuICB9XG4gIGlmICh6b25lTmFtZS5zcGxpdChcIi5cIikuZmluZCgobGFiZWwpID0+IGxhYmVsLmxlbmd0aCA+IDYzKSkge1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICBcInpvbmUgbmFtZSBsYWJlbHMgY2Fubm90IGJlIG1vcmUgdGhhbiA2MyBieXRlcyBsb25nXCIsXG4gICAgICBzY29wZSxcbiAgICApO1xuICB9XG4gIGlmICghem9uZU5hbWUubWF0Y2goL15bYS16MC05IVwiIyQlJicoKSorLC86Ozw9Pj9AW1xcXFxcXF1eX2B7fH1+Li1dKyQvaSkpIHtcbiAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgXCJ6b25lIG5hbWVzIGNhbiBvbmx5IGNvbnRhaW4gYS16LCAwLTksIC0sICEgXFxcIiAjICQgJSAmICcgKCApICogKyAsIC0gLyA6IDsgPCA9ID4gPyBAIFsgIF0gXiBfIGAgeyB8IH0gfiAuXCIsXG4gICAgICBzY29wZSxcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -30,7 +30,7 @@ class FunctionCode {
30
30
  }
31
31
  exports.FunctionCode = FunctionCode;
32
32
  _a = JSII_RTTI_SYMBOL_1;
33
- FunctionCode[_a] = { fqn: "terraconstructs.aws.edge.FunctionCode", version: "0.1.7" };
33
+ FunctionCode[_a] = { fqn: "terraconstructs.aws.edge.FunctionCode", version: "0.1.9" };
34
34
  /**
35
35
  * Represents the function's source code as inline code
36
36
  */
@@ -108,7 +108,7 @@ class Function extends aws_construct_1.AwsConstructBase {
108
108
  }
109
109
  exports.Function = Function;
110
110
  _b = JSII_RTTI_SYMBOL_1;
111
- Function[_b] = { fqn: "terraconstructs.aws.edge.Function", version: "0.1.7" };
111
+ Function[_b] = { fqn: "terraconstructs.aws.edge.Function", version: "0.1.9" };
112
112
  /**
113
113
  * The type of events that a CloudFront function can be invoked in response to.
114
114
  */
@@ -57,7 +57,7 @@ class KeyValuePairs {
57
57
  }
58
58
  exports.KeyValuePairs = KeyValuePairs;
59
59
  _a = JSII_RTTI_SYMBOL_1;
60
- KeyValuePairs[_a] = { fqn: "terraconstructs.aws.edge.KeyValuePairs", version: "0.1.7" };
60
+ KeyValuePairs[_a] = { fqn: "terraconstructs.aws.edge.KeyValuePairs", version: "0.1.9" };
61
61
  /**
62
62
  * inline Key Value pairs.
63
63
  */
@@ -72,7 +72,7 @@ class InlineKeyValuePairs extends KeyValuePairs {
72
72
  }
73
73
  exports.InlineKeyValuePairs = InlineKeyValuePairs;
74
74
  _b = JSII_RTTI_SYMBOL_1;
75
- InlineKeyValuePairs[_b] = { fqn: "terraconstructs.aws.edge.InlineKeyValuePairs", version: "0.1.7" };
75
+ InlineKeyValuePairs[_b] = { fqn: "terraconstructs.aws.edge.InlineKeyValuePairs", version: "0.1.9" };
76
76
  /**
77
77
  * Key Value pairs stored in a local file.
78
78
  */
@@ -105,7 +105,7 @@ class FileKeyValuePairs extends KeyValuePairs {
105
105
  }
106
106
  exports.FileKeyValuePairs = FileKeyValuePairs;
107
107
  _c = JSII_RTTI_SYMBOL_1;
108
- FileKeyValuePairs[_c] = { fqn: "terraconstructs.aws.edge.FileKeyValuePairs", version: "0.1.7" };
108
+ FileKeyValuePairs[_c] = { fqn: "terraconstructs.aws.edge.FileKeyValuePairs", version: "0.1.9" };
109
109
  /**
110
110
  * A CloudFront Key Value Store.
111
111
  *
@@ -159,5 +159,5 @@ class KeyValueStore extends aws_construct_1.AwsConstructBase {
159
159
  }
160
160
  exports.KeyValueStore = KeyValueStore;
161
161
  _d = JSII_RTTI_SYMBOL_1;
162
- KeyValueStore[_d] = { fqn: "terraconstructs.aws.edge.KeyValueStore", version: "0.1.7" };
162
+ KeyValueStore[_d] = { fqn: "terraconstructs.aws.edge.KeyValueStore", version: "0.1.9" };
163
163
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LXZhbHVlLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9lZGdlL2tleS12YWx1ZS1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6QixzREFHNkI7QUFFN0Isb0RBSTBCO0FBWTFCOzs7OztHQUtHO0FBQ0gsTUFBc0IsYUFBYTtJQUFuQztRQTJCRSxxRUFBcUU7UUFDM0QsU0FBSSxHQUF3QixFQUFFLENBQUM7S0FpQjFDO0lBNUNDOzs7Ozs7Ozs7Ozs7T0FZRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBZ0I7UUFDckMsT0FBTyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUF5QjtRQUNoRCxPQUFPLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUlEOztPQUVHO0lBQ0ksTUFBTSxDQUNYLGdCQUF3QjtRQUV4QixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDdkQsTUFBTSxLQUFLLEdBQ1QsT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckUsT0FBTztnQkFDTCxHQUFHLEVBQUUsbURBQW1EO2dCQUN4RCxLQUFLLEVBQUUsc0RBQXNEO2dCQUM3RCxnQkFBZ0I7YUFDakIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUE1Q0gsc0NBNkNDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsYUFBYTtJQUNwRDs7T0FFRztJQUNI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QUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDckMsSUFBSSx5Q0FBMEIsQ0FBQywwQkFBMEIsQ0FDdkQsSUFBSSxFQUNKLE9BQU8sQ0FBQyxFQUFFLEVBQ1YsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7U0FDWixDQUFDO0lBQ0osQ0FBQzs7QUExREgsc0NBMkRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQge1xuICBjbG91ZGZyb250S2V5VmFsdWVTdG9yZSxcbiAgY2xvdWRmcm9udGtleXZhbHVlc3RvcmVLZXksXG59IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN0b3JlRGF0YSB7XG4gIC8qKlxuICAgKiBUaGUgbWV0aG9kIGNhbGxlZCB3aGVuIGdpdmVuIFN0b3JlRGF0YSBpcyBhZGRlZFxuICAgKiAoZm9yIHRoZSBmaXJzdCB0aW1lKSB0byBhIEtleVZhbHVlU3RvcmUuXG4gICAqL1xuICByZW5kZXIoXG4gICAga2V5VmFsdWVTdG9yZUFybjogc3RyaW5nLFxuICApOiBjbG91ZGZyb250a2V5dmFsdWVzdG9yZUtleS5DbG91ZGZyb250a2V5dmFsdWVzdG9yZUtleUNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBpbml0aWFsIGRhdGEgdG8gc2V0IGZvciB0aGUga2V5IHZhbHVlIHN0b3JlLlxuICpcbiAqIFRoaXMgaXMgd29yayBhcm91bmQgZm9yIGxhY2sgb2Ygc3VwcG9ydCBmb3IgaW1wb3J0X3NvdXJjZVxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2lzc3Vlcy8zNjUyNFxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgS2V5VmFsdWVQYWlycyBpbXBsZW1lbnRzIElTdG9yZURhdGEge1xuICAvKipcbiAgICogS2V5IFZhbHVlIHBhaXJzIHN0b3JlZCBpbiBhIGxvY2FsIGZpbGUuXG4gICAqXG4gICAqIFRoZSBrZXktdmFsdWUgcGFpcnMgaGF2ZSB0aGUgZm9sbG93aW5nIGxpbWl0czpcbiAgICpcbiAgICogLSBGaWxlIHNpemUg4oCTIDUgTUJcbiAgICogLSBLZXkgc2l6ZSDigJMgNTEyIGNoYXJhY3RlcnNcbiAgICogLSBWYWx1ZSBzaXplIOKAkyAxMDI0IGNoYXJhY3RlcnNcbiAgICpcbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL2t2cy13aXRoLWZ1bmN0aW9ucy1jcmVhdGUtczMta3ZwLmh0bWxcbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIHRoZSBwYXRoIHRvIHRoZSBsb2NhbCBmaWxlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21QYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBLZXlWYWx1ZVBhaXJzIHtcbiAgICByZXR1cm4gbmV3IEZpbGVLZXlWYWx1ZVBhaXJzKGZpbGVQYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBLZXkgVmFsdWUgcGFpcnMgaW5saW5lIHdpdGggQ29uc3RydWN0IHByb3BzLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSB0aGUgY29udGVudHMgb2YgdGhlIEtleVZhbHVlU3RvcmVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUlubGluZShkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogS2V5VmFsdWVQYWlycyB7XG4gICAgcmV0dXJuIG5ldyBJbmxpbmVLZXlWYWx1ZVBhaXJzKGRhdGEpO1xuICB9XG5cbiAgLy8gVE9ETzogc3VwcG9ydCBUZXJyYWZvcm1SZXNvdXJjZUxpZmVjeWNsZSBvbiB0aGUga2V5IHZhbHVlIGVudHJpZXM/XG4gIHByb3RlY3RlZCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIC8qKlxuICAgKiBDYWxsZWQgaW50ZXJuYWxseSBieSB0aGUgS2V5VmFsdWVTdG9yZSB0byByZW5kZXIgdGhlIHN0b3JlIGRhdGEuXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyKFxuICAgIGtleVZhbHVlU3RvcmVBcm46IHN0cmluZyxcbiAgKTogY2xvdWRmcm9udGtleXZhbHVlc3RvcmVLZXkuQ2xvdWRmcm9udGtleXZhbHVlc3RvcmVLZXlDb25maWdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuZGF0YSkubWFwKChba2V5LCB2YWx1ZUFueV0pID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgdHlwZW9mIHZhbHVlQW55ID09PSBcInN0cmluZ1wiID8gdmFsdWVBbnkgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZUFueSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXksIC8vVE9ETzogdmFsaWRhdGUga2V5IHN0cmluZyBsaW1pdCAoNTEyIGNoYXJhY3RlcnMpP1xuICAgICAgICB2YWx1ZSwgLy9UT0RPOiB2YWxpZGF0ZSB2YWx1ZSBzdHJpbmcgbGltaXQgKDEwMjQgY2hhcmFjdGVycyk/XG4gICAgICAgIGtleVZhbHVlU3RvcmVBcm4sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogaW5saW5lIEtleSBWYWx1ZSBwYWlycy5cbiAqL1xuZXhwb3J0IGNsYXNzIElubGluZUtleVZhbHVlUGFpcnMgZXh0ZW5kcyBLZXlWYWx1ZVBhaXJzIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBkYXRhIHRoZSBjb250ZW50cyBvZiB0aGUgS2V5VmFsdWVTdG9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZGF0YTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxufVxuXG4vKipcbiAqIEtleSBWYWx1ZSBwYWlycyBzdG9yZWQgaW4gYSBsb2NhbCBmaWxlLlxuICovXG5leHBvcnQgY2xhc3MgRmlsZUtleVZhbHVlUGFpcnMgZXh0ZW5kcyBLZXlWYWx1ZVBhaXJzIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCB0aGUgcGF0aCB0byB0aGUgbG9jYWwgZmlsZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZmlsZVBhdGg6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3Qgc3RhdHMgPSBmcy5zdGF0U3luYyhmaWxlUGF0aCk7XG4gICAgaWYgKHN0YXRzLnNpemUgPiA1ICogMTAyNCAqIDEwMjQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBmaWxlIHNpemUgb2YgJHtmaWxlUGF0aH0gc2hvdWxkIG5vdCBleGNlZWQgNU1CLiBSZWNlaXZlZDogJHtzdGF0cy5zaXplfWAsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCBcInV0ZjhcIik7XG4gICAgbGV0IHBhcnNlZERhdGE6IGFueTtcbiAgICB0cnkge1xuICAgICAgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoY29udGVudCk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEpTT04gZm9ybWF0OiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzUmVjb3JkT2ZTdHJpbmdBbnkocGFyc2VkRGF0YSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSAke2ZpbGVQYXRofSBjb250ZW50cyBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZWQgdHlwZSBSZWNvcmQ8c3RyaW5nLCBhbnk+YCxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZGF0YSA9IHBhcnNlZERhdGE7XG4gIH1cbiAgcHJpdmF0ZSBpc1JlY29yZE9mU3RyaW5nQW55KG9iajogYW55KTogb2JqIGlzIFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiICYmIG9iaiAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShvYmopO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHByb3BlcnRpZXMgdG8gY3JlYXRlIGEgS2V5IFZhbHVlIFN0b3JlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleVZhbHVlU3RvcmVQcm9wcyBleHRlbmRzIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgbmFtZSBvZiB0aGUgS2V5IFZhbHVlIFN0b3JlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBIGdlbmVyYXRlZCBuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lU3VmZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY29tbWVudCBmb3IgdGhlIEtleSBWYWx1ZSBTdG9yZVxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBjb21tZW50IHdpbGwgYmUgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSBjb21tZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgS2V5IFZhbHVlIHN0b3JlIGRhdGEuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBwb3B1bGF0ZSB0aGUgaW5pdGlhbCBpdGVtcyBpbiB0aGUgS2V5IFZhbHVlIFN0b3JlLiBUaGVcbiAgICogc291cmNlIGRhdGEgbXVzdCBiZSBpbiBhIHZhbGlkIEpTT04gZm9ybWF0LlxuICAgKlxuICAgKiBUaGUga2V5LXZhbHVlIHBhaXJzIGhhdmUgdGhlIGZvbGxvd2luZyBsaW1pdHM6XG4gICAqXG4gICAqIC0gRmlsZSBzaXplIOKAkyA1IE1CXG4gICAqIC0gS2V5IHNpemUg4oCTIDUxMiBjaGFyYWN0ZXJzXG4gICAqIC0gVmFsdWUgc2l6ZSDigJMgMTAyNCBjaGFyYWN0ZXJzXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGRhdGEgd2lsbCBiZSBpbXBvcnRlZCB0byB0aGUgc3RvcmVcbiAgICovXG4gIHJlYWRvbmx5IGRhdGE/OiBJU3RvcmVEYXRhO1xufVxuXG4vKipcbiAqIENsb3VkRnJvbnQgS2V5IFZhbHVlIFN0b3JlIG91dHB1dHMgZm9yIGEgc3RhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5VmFsdWVTdG9yZU91dHB1dHMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgS2V5IFZhbHVlIFN0b3JlLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFVuaXF1ZSBJRCBvZiB0aGUgS2V5IFZhbHVlIFN0b3JlLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgQ2xvdWRGcm9udCBLZXkgVmFsdWUgU3RvcmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUtleVZhbHVlU3RvcmUgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqIFN0cm9uZ2x5IHR5cGVkIG91dHB1dHNcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkga2V5VmFsdWVTdG9yZU91dHB1dHM6IEtleVZhbHVlU3RvcmVPdXRwdXRzO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBLZXkgVmFsdWUgU3RvcmUuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgVW5pcXVlIElEIG9mIHRoZSBLZXkgVmFsdWUgU3RvcmUuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIEtleSBWYWx1ZSBTdG9yZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBDbG91ZEZyb250IEtleSBWYWx1ZSBTdG9yZS5cbiAqXG4gKiBZb3UgY2FuIHN0b3JlIGFueSBvZiB0aGUgZm9sbG93aW5nIGZvcm1hdHM6XG4gKlxuICogLSBTdHJpbmdcbiAqIC0gQnl0ZS1lbmNvZGVkIHN0cmluZ1xuICogLSBKU09OXG4gKlxuICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL2t2cy13aXRoLWZ1bmN0aW9ucy5odG1sXG4gKlxuICogQHJlc291cmNlIGF3c19jbG91ZGZyb250X2tleV92YWx1ZV9zdG9yZVxuICovXG5leHBvcnQgY2xhc3MgS2V5VmFsdWVTdG9yZSBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJS2V5VmFsdWVTdG9yZSB7XG4gIC8vIFRPRE86IEFkZCBzdGF0aWMgZnJvbUxvb2t1cD9cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBjbG91ZGZyb250S2V5VmFsdWVTdG9yZS5DbG91ZGZyb250S2V5VmFsdWVTdG9yZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXRzOiBLZXlWYWx1ZVN0b3JlT3V0cHV0cztcbiAgcHVibGljIGdldCBrZXlWYWx1ZVN0b3JlT3V0cHV0cygpOiBLZXlWYWx1ZVN0b3JlT3V0cHV0cyB7XG4gICAgcmV0dXJuIHRoaXMuX291dHB1dHM7XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmtleVZhbHVlU3RvcmVPdXRwdXRzO1xuICB9XG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBzdGF0dXM6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogS2V5VmFsdWVTdG9yZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBjb25zdCB7IG5hbWVTdWZmaXggfSA9IHByb3BzO1xuICAgIC8vIFRPRE86IGNvbnNpZGVyIHVzaW5nIHRoZSBgdGhpcy5zdGFjay5tYWtlVW5pcXVlUmVzb3VyY2VOYW1lYCBmdW5jdGlvbj9cbiAgICBsZXQgbmFtZSA9IHRoaXMuZ3JpZFVVSUQ7XG4gICAgaWYgKG5hbWVTdWZmaXgpIHtcbiAgICAgIG5hbWUgPSBgJHtuYW1lfS0ke25hbWVTdWZmaXh9YDtcbiAgICB9XG4gICAgaWYgKG5hbWUubGVuZ3RoID4gNjQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBuYW1lIG9mIHRoZSBLZXkgVmFsdWUgU3RvcmUgbXVzdCBiZSBsZXNzIHRoYW4gNjQgY2hhcmFjdGVycy4gUmVjZWl2ZWQ6ICR7bmFtZX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGNsb3VkZnJvbnRLZXlWYWx1ZVN0b3JlLkNsb3VkZnJvbnRLZXlWYWx1ZVN0b3JlKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY29tbWVudDogcHJvcHM/LmNvbW1lbnQsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBpZiAocHJvcHMuZGF0YSkge1xuICAgICAgLy8gVE9ETzogc3VwcG9ydCBUZXJyYWZvcm1SZXNvdXJjZUxpZmVjeWNsZSBvbiB0aGUga2V5IHZhbHVlIGVudHJpZXM/XG4gICAgICBjb25zdCBkYXRhID0gcHJvcHMuZGF0YS5yZW5kZXIodGhpcy5yZXNvdXJjZS5hcm4pO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG5ldyBjbG91ZGZyb250a2V5dmFsdWVzdG9yZUtleS5DbG91ZGZyb250a2V5dmFsdWVzdG9yZUtleShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGBLZXktJHtpfWAsXG4gICAgICAgICAgZGF0YVtpXSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmFybiA9IHRoaXMucmVzb3VyY2UuYXJuO1xuICAgIHRoaXMuaWQgPSB0aGlzLnJlc291cmNlLmlkO1xuICAgIHRoaXMuc3RhdHVzID0gdGhpcy5yZXNvdXJjZS5ldGFnO1xuICAgIHRoaXMuX291dHB1dHMgPSB7XG4gICAgICBhcm46IHRoaXMuYXJuLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -98,7 +98,7 @@ class OriginBase {
98
98
  }
99
99
  exports.OriginBase = OriginBase;
100
100
  _a = JSII_RTTI_SYMBOL_1;
101
- OriginBase[_a] = { fqn: "terraconstructs.aws.edge.OriginBase", version: "0.1.7" };
101
+ OriginBase[_a] = { fqn: "terraconstructs.aws.edge.OriginBase", version: "0.1.9" };
102
102
  /**
103
103
  * Throws an error if a value is defined and not an integer or not in a range.
104
104
  */
@@ -183,7 +183,7 @@ class S3Origin {
183
183
  }
184
184
  exports.S3Origin = S3Origin;
185
185
  _b = JSII_RTTI_SYMBOL_1;
186
- S3Origin[_b] = { fqn: "terraconstructs.aws.edge.S3Origin", version: "0.1.7" };
186
+ S3Origin[_b] = { fqn: "terraconstructs.aws.edge.S3Origin", version: "0.1.9" };
187
187
  // https://github.com/aws/aws-cdk/blob/v2.156.0/packages/aws-cdk-lib/aws-cloudfront-origins/lib/s3-origin.ts#L51
188
188
  /**
189
189
  * An Origin specific to a S3 bucket (not configured for website hosting).
@@ -231,7 +231,7 @@ class HttpOrigin extends OriginBase {
231
231
  }
232
232
  exports.HttpOrigin = HttpOrigin;
233
233
  _c = JSII_RTTI_SYMBOL_1;
234
- HttpOrigin[_c] = { fqn: "terraconstructs.aws.edge.HttpOrigin", version: "0.1.7" };
234
+ HttpOrigin[_c] = { fqn: "terraconstructs.aws.edge.HttpOrigin", version: "0.1.9" };
235
235
  /**
236
236
  * Throws an error if a duration is defined and not an integer number of seconds within a range.
237
237
  */
@@ -141,7 +141,7 @@ class ResponseHeadersPolicy extends aws_construct_1.AwsConstructBase {
141
141
  }
142
142
  exports.ResponseHeadersPolicy = ResponseHeadersPolicy;
143
143
  _a = JSII_RTTI_SYMBOL_1;
144
- ResponseHeadersPolicy[_a] = { fqn: "terraconstructs.aws.edge.ResponseHeadersPolicy", version: "0.1.7" };
144
+ ResponseHeadersPolicy[_a] = { fqn: "terraconstructs.aws.edge.ResponseHeadersPolicy", version: "0.1.9" };
145
145
  /**
146
146
  * Enum representing possible values of the X-Frame-Options HTTP response header.
147
147
  */
@@ -212,5 +212,5 @@ class Alias extends AliasBase {
212
212
  }
213
213
  exports.Alias = Alias;
214
214
  _a = JSII_RTTI_SYMBOL_1;
215
- Alias[_a] = { fqn: "terraconstructs.aws.encryption.Alias", version: "0.1.7" };
215
+ Alias[_a] = { fqn: "terraconstructs.aws.encryption.Alias", version: "0.1.9" };
216
216
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2VuY3J5cHRpb24vYWxpYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5RkFBeUY7QUFFekYsc0RBQStDO0FBQy9DLGlDQUE0QztBQUU1QyxvREFBdUU7QUFDdkUsNENBQXdDO0FBRXhDLDhCQUE4QjtBQUU5QixNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQztBQUN2QyxNQUFNLGlCQUFpQixHQUFHLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztBQStEekQsTUFBZSxTQUFVLFNBQVEsZ0NBQWdCO0lBSy9DLElBQVcsWUFBWTtRQUNyQixPQUFPO1lBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLGNBQWMsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO0lBQ3hDLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsTUFBTTtRQUNmLE9BQU8sb0JBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzdDLE9BQU8sRUFBRSxLQUFLO1lBQ2QscUNBQXFDO1lBQ3JDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUztTQUN6QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQVcsUUFBUTtRQUNqQixPQUFPLG9CQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM3QyxPQUFPLEVBQUUsS0FBSztZQUNkLHFDQUFxQztZQUNyQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElB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QUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztnQkFDbkUsTUFBTSxJQUFJLEtBQUssQ0FDYiwyQkFBMkIsaUJBQWlCLEtBQUssU0FBUyxFQUFFLENBQzdELENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDO2dCQUNwRCxNQUFNLElBQUksS0FBSyxDQUNiLGtFQUFrRSxDQUNuRSxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFFdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHVCQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdEQsSUFBSSxFQUFFLFNBQVM7WUFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNO1NBQ3hDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDdEMsQ0FBQzs7QUFqS0gsc0JBa0tDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTcwLjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWttcy9saWIvYWxpYXMudHNcblxuaW1wb3J0IHsga21zQWxpYXMgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgVG9rZW4sIFRva2VuaXphdGlvbiB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEF3c0NvbnN0cnVjdFByb3BzLCBBd3NDb25zdHJ1Y3RCYXNlIH0gZnJvbSBcIi4uL2F3cy1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IEF3c1N0YWNrIH0gZnJvbSBcIi4uL2F3cy1zdGFja1wiO1xuaW1wb3J0IHsgSUtleSwgS2V5T3V0cHV0cyB9IGZyb20gXCIuL2tleVwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCIuLi9pYW1cIjtcblxuY29uc3QgUkVRVUlSRURfQUxJQVNfUFJFRklYID0gXCJhbGlhcy9cIjtcbmNvbnN0IERJU0FMTE9XRURfUFJFRklYID0gUkVRVUlSRURfQUxJQVNfUFJFRklYICsgXCJhd3MvXCI7XG5cbi8qKlxuICogT3V0cHV0cyB3aGljaCBtYXkgYmUgcmVnaXN0ZXJlZCBmb3Igb3V0cHV0IHZpYSB0aGUgR3JpZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGlhc091dHB1dHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGFsaWFzLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhbGlhc05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEtleSB0byB3aGljaCB0aGUgQWxpYXMgcmVmZXJzLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhbGlhc1RhcmdldEtleTogS2V5T3V0cHV0cztcbn1cblxuLyoqXG4gKiBBIEtNUyBLZXkgYWxpYXMuXG4gKiBBbiBhbGlhcyBjYW4gYmUgdXNlZCBpbiBhbGwgcGxhY2VzIHRoYXQgZXhwZWN0IGEga2V5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElBbGlhcyBleHRlbmRzIElLZXkge1xuICAvKiogU3Ryb25nbHkgdHlwZWQgb3V0cHV0cyAqL1xuICByZWFkb25seSBhbGlhc091dHB1dHM6IEFsaWFzT3V0cHV0cztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGFsaWFzLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhbGlhc05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEtleSB0byB3aGljaCB0aGUgQWxpYXMgcmVmZXJzLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhbGlhc1RhcmdldEtleTogSUtleTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3Rpb24gcHJvcGVydGllcyBmb3IgYSBLTVMgS2V5IEFsaWFzIG9iamVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGlhc1Byb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGFsaWFzLiBUaGUgbmFtZSBtdXN0IHN0YXJ0IHdpdGggYWxpYXMgZm9sbG93ZWQgYnkgYVxuICAgKiBmb3J3YXJkIHNsYXNoLCBzdWNoIGFzIGFsaWFzLy4gWW91IGNhbid0IHNwZWNpZnkgYWxpYXNlcyB0aGF0IGJlZ2luIHdpdGhcbiAgICogYWxpYXMvQVdTLiBUaGVzZSBhbGlhc2VzIGFyZSByZXNlcnZlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGtleSBmb3Igd2hpY2ggeW91IGFyZSBjcmVhdGluZyB0aGUgYWxpYXMuIFNwZWNpZnkgdGhlIGtleSdzXG4gICAqIGdsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIG9yIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pLiBZb3UgY2FuJ3RcbiAgICogc3BlY2lmeSBhbm90aGVyIGFsaWFzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0S2V5OiBJS2V5O1xufVxuXG5hYnN0cmFjdCBjbGFzcyBBbGlhc0Jhc2UgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSUFsaWFzIHtcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGFsaWFzTmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhbGlhc1RhcmdldEtleTogSUtleTtcblxuICBwdWJsaWMgZ2V0IGFsaWFzT3V0cHV0cygpOiBBbGlhc091dHB1dHMge1xuICAgIHJldHVybiB7XG4gICAgICBhbGlhc05hbWU6IHRoaXMuYWxpYXNOYW1lLFxuICAgICAgYWxpYXNUYXJnZXRLZXk6IHRoaXMua2V5T3V0cHV0cyxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBnZXQga2V5T3V0cHV0cygpOiBLZXlPdXRwdXRzIHtcbiAgICByZXR1cm4gdGhpcy5hbGlhc1RhcmdldEtleS5rZXlPdXRwdXRzO1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5hbGlhc091dHB1dHM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgYWxpYXMuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBhbGlhc0FybmAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIGdldCBrZXlBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgIHNlcnZpY2U6IFwia21zXCIsXG4gICAgICAvLyBhbGlhc05hbWUgYWxyZWFkeSBjb250YWlucyB0aGUgJy8nXG4gICAgICByZXNvdXJjZTogdGhpcy5hbGlhc05hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgYWxpYXMuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyBnZXQgYWxpYXNBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgIHNlcnZpY2U6IFwia21zXCIsXG4gICAgICAvLyBhbGlhc05hbWUgYWxyZWFkeSBjb250YWlucyB0aGUgJy8nXG4gICAgICByZXNvdXJjZTogdGhpcy5hbGlhc05hbWUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGtleUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxpYXNOYW1lO1xuICB9XG5cbiAgcHVibGljIGFkZEFsaWFzKGFsaWFzOiBzdHJpbmcpOiBBbGlhcyB7XG4gICAgcmV0dXJuIHRoaXMuYWxpYXNUYXJnZXRLZXkuYWRkQWxpYXMoYWxpYXMpO1xuICB9XG5cbiAgcHVibGljIGFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50LFxuICAgIGFsbG93Tm9PcD86IGJvb2xlYW4sXG4gICk6IGlhbS5BZGRUb1Jlc291cmNlUG9saWN5UmVzdWx0IHtcbiAgICByZXR1cm4gdGhpcy5hbGlhc1RhcmdldEtleS5hZGRUb1Jlc291cmNlUG9saWN5KHN0YXRlbWVudCwgYWxsb3dOb09wKTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmFsaWFzVGFyZ2V0S2V5LmdyYW50KGdyYW50ZWUsIC4uLmFjdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGdyYW50RGVjcnlwdChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuYWxpYXNUYXJnZXRLZXkuZ3JhbnREZWNyeXB0KGdyYW50ZWUpO1xuICB9XG5cbiAgcHVibGljIGdyYW50RW5jcnlwdChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuYWxpYXNUYXJnZXRLZXkuZ3JhbnRFbmNyeXB0KGdyYW50ZWUpO1xuICB9XG5cbiAgcHVibGljIGdyYW50RW5jcnlwdERlY3J5cHQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmFsaWFzVGFyZ2V0S2V5LmdyYW50RW5jcnlwdERlY3J5cHQoZ3JhbnRlZSk7XG4gIH1cblxuICBncmFudEdlbmVyYXRlTWFjKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5hbGlhc1RhcmdldEtleS5ncmFudEdlbmVyYXRlTWFjKGdyYW50ZWUpO1xuICB9XG5cbiAgZ3JhbnRWZXJpZnlNYWMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmFsaWFzVGFyZ2V0S2V5LmdyYW50VmVyaWZ5TWFjKGdyYW50ZWUpO1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBvZiBhIHJlZmVyZW5jZSB0byBhbiBleGlzdGluZyBLTVMgQWxpYXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGlhc0F0dHJpYnV0ZXMge1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBhbGlhcyBuYW1lLiBUaGlzIHZhbHVlIG11c3QgYmVnaW4gd2l0aCBhbGlhcy8gZm9sbG93ZWQgYnkgYSBuYW1lIChpLmUuIGFsaWFzL0V4YW1wbGVBbGlhcylcbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tZXIgbWFzdGVyIGtleSAoQ01LKSB0byB3aGljaCB0aGUgQWxpYXMgcmVmZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNUYXJnZXRLZXk6IElLZXk7XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIGRpc3BsYXkgbmFtZSBmb3IgYSBjdXN0b21lciBtYXN0ZXIga2V5IChDTUspIGluIEFXUyBLZXkgTWFuYWdlbWVudFxuICogU2VydmljZSAoQVdTIEtNUykuIFVzaW5nIGFuIGFsaWFzIHRvIHJlZmVyIHRvIGEga2V5IGNhbiBoZWxwIHlvdSBzaW1wbGlmeSBrZXlcbiAqIG1hbmFnZW1lbnQuIEZvciBleGFtcGxlLCB3aGVuIHJvdGF0aW5nIGtleXMsIHlvdSBjYW4ganVzdCB1cGRhdGUgdGhlIGFsaWFzXG4gKiBtYXBwaW5nIGluc3RlYWQgb2YgdHJhY2tpbmcgYW5kIGNoYW5naW5nIGtleSBJRHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAqIFdvcmtpbmcgd2l0aCBBbGlhc2VzIGluIHRoZSBBV1MgS2V5IE1hbmFnZW1lbnQgU2VydmljZSBEZXZlbG9wZXIgR3VpZGUuXG4gKlxuICogWW91IGNhbiBhbHNvIGFkZCBhbiBhbGlhcyBmb3IgYSBrZXkgYnkgY2FsbGluZyBga2V5LmFkZEFsaWFzKGFsaWFzKWAuXG4gKlxuICogQHJlc291cmNlIEFXUzo6S01TOjpBbGlhc1xuICovXG5leHBvcnQgY2xhc3MgQWxpYXMgZXh0ZW5kcyBBbGlhc0Jhc2Uge1xuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIEtNUyBBbGlhcyBkZWZpbmVkIG91dHNpZGUgdGhlIENESyBhcHAuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApLlxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWUuXG4gICAqIEBwYXJhbSBhdHRycyB0aGUgcHJvcGVydGllcyBvZiB0aGUgcmVmZXJlbmNlZCBLTVMgQWxpYXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFsaWFzQXR0cmlidXRlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXR0cnM6IEFsaWFzQXR0cmlidXRlcyxcbiAgKTogSUFsaWFzIHtcbiAgICBjbGFzcyBfQWxpYXMgZXh0ZW5kcyBBbGlhc0Jhc2Uge1xuICAgICAgcHVibGljIGdldCBhbGlhc05hbWUoKSB7XG4gICAgICAgIHJldHVybiBhdHRycy5hbGlhc05hbWU7XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IGFsaWFzVGFyZ2V0S2V5KCkge1xuICAgICAgICByZXR1cm4gYXR0cnMuYWxpYXNUYXJnZXRLZXk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgX0FsaWFzKHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIEtNUyBBbGlhcyBkZWZpbmVkIG91dHNpZGUgdGhlIENESyBhcHAsIGJ5IHRoZSBhbGlhcyBuYW1lLiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgdXNlZFxuICAgKiBpbnN0ZWFkIG9mICdmcm9tQWxpYXNBdHRyaWJ1dGVzJyB3aGVuIHRoZSB1bmRlcmx5aW5nIEtNUyBLZXkgQVJOIGlzIG5vdCBhdmFpbGFibGUuXG4gICAqIFRoaXMgQWxpYXMgd2lsbCBub3QgaGF2ZSBhIGRpcmVjdCByZWZlcmVuY2UgdG8gdGhlIEtNUyBLZXksIHNvIGFkZEFsaWFzIGFuZCBncmFudCogbWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZC5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIGFsaWFzTmFtZSBUaGUgZnVsbCBuYW1lIG9mIHRoZSBLTVMgQWxpYXMgKGUuZy4sICdhbGlhcy9hd3MvczMnLCAnYWxpYXMvbXlLZXlBbGlhcycpLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQWxpYXNOYW1lKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhbGlhc05hbWU6IHN0cmluZyxcbiAgKTogSUFsaWFzIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSUFsaWFzIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBrZXlBcm4gPSBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdCh0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiBcImttc1wiLFxuICAgICAgICByZXNvdXJjZTogYWxpYXNOYW1lLFxuICAgICAgfSk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkga2V5SWQgPSBhbGlhc05hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYWxpYXNOYW1lID0gYWxpYXNOYW1lO1xuICAgICAgcHVibGljIGdldCBrZXlPdXRwdXRzKCk6IEtleU91dHB1dHMge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtleUFybjogdGhpcy5rZXlBcm4sXG4gICAgICAgICAga2V5SWQ6IHRoaXMua2V5SWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IGFsaWFzT3V0cHV0cygpOiBBbGlhc091dHB1dHMge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFsaWFzTmFtZTogdGhpcy5hbGlhc05hbWUsXG4gICAgICAgICAgYWxpYXNUYXJnZXRLZXk6IHRoaXMua2V5T3V0cHV0cyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxpYXNPdXRwdXRzO1xuICAgICAgfVxuICAgICAgcHVibGljIGdldCBhbGlhc1RhcmdldEtleSgpOiBJS2V5IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiQ2Fubm90IGFjY2VzcyBhbGlhc1RhcmdldEtleSBvbiBhbiBBbGlhcyBpbXBvcnRlZCBieSBBbGlhcy5mcm9tQWxpYXNOYW1lKCkuXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBwdWJsaWMgYWRkQWxpYXMoX2FsaWFzOiBzdHJpbmcpOiBBbGlhcyB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIkNhbm5vdCBjYWxsIGFkZEFsaWFzIG9uIGFuIEFsaWFzIGltcG9ydGVkIGJ5IEFsaWFzLmZyb21BbGlhc05hbWUoKS5cIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBhZGRUb1Jlc291cmNlUG9saWN5KFxuICAgICAgICBfc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50LFxuICAgICAgICBfYWxsb3dOb09wPzogYm9vbGVhbixcbiAgICAgICk6IGlhbS5BZGRUb1Jlc291cmNlUG9saWN5UmVzdWx0IHtcbiAgICAgICAgcmV0dXJuIHsgc3RhdGVtZW50QWRkZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLl9hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgICAgIHJldHVybiBpYW0uR3JhbnQuZHJvcChncmFudGVlLCBcIlwiKTtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBncmFudERlY3J5cHQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgICAgICByZXR1cm4gaWFtLkdyYW50LmRyb3AoZ3JhbnRlZSwgXCJcIik7XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ3JhbnRFbmNyeXB0KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICAgICAgcmV0dXJuIGlhbS5HcmFudC5kcm9wKGdyYW50ZWUsIFwiXCIpO1xuICAgICAgfVxuICAgICAgcHVibGljIGdyYW50RW5jcnlwdERlY3J5cHQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgICAgICByZXR1cm4gaWFtLkdyYW50LmRyb3AoZ3JhbnRlZSwgXCJcIik7XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ3JhbnRHZW5lcmF0ZU1hYyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgICAgIHJldHVybiBpYW0uR3JhbnQuZHJvcChncmFudGVlLCBcIlwiKTtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBncmFudFZlcmlmeU1hYyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgICAgIHJldHVybiBpYW0uR3JhbnQuZHJvcChncmFudGVlLCBcIlwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGFsaWFzTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYWxpYXNUYXJnZXRLZXk6IElLZXk7XG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZToga21zQWxpYXMuS21zQWxpYXM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFsaWFzUHJvcHMpIHtcbiAgICBsZXQgYWxpYXNOYW1lID0gcHJvcHMuYWxpYXNOYW1lO1xuXG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQoYWxpYXNOYW1lKSkge1xuICAgICAgaWYgKCFhbGlhc05hbWUuc3RhcnRzV2l0aChSRVFVSVJFRF9BTElBU19QUkVGSVgpKSB7XG4gICAgICAgIGFsaWFzTmFtZSA9IFJFUVVJUkVEX0FMSUFTX1BSRUZJWCArIGFsaWFzTmFtZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFsaWFzTmFtZSA9PT0gUkVRVUlSRURfQUxJQVNfUFJFRklYKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQWxpYXMgbXVzdCBpbmNsdWRlIGEgdmFsdWUgYWZ0ZXIgXCIke1JFUVVJUkVEX0FMSUFTX1BSRUZJWH1cIjogJHthbGlhc05hbWV9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFsaWFzTmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoRElTQUxMT1dFRF9QUkVGSVgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQWxpYXMgY2Fubm90IHN0YXJ0IHdpdGggJHtESVNBTExPV0VEX1BSRUZJWH06ICR7YWxpYXNOYW1lfWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICghYWxpYXNOYW1lLm1hdGNoKC9eW2EtekEtWjAtOTovXy1dezEsMjU2fSQvKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJBbGlhcyBuYW1lIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAyNTYgY2hhcmFjdGVycyBpbiBhLXpBLVowLTk6L18tXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIFRva2VuaXphdGlvbi5yZXZlcnNlU3RyaW5nKGFsaWFzTmFtZSkuZmlyc3RWYWx1ZSAmJlxuICAgICAgVG9rZW5pemF0aW9uLnJldmVyc2VTdHJpbmcoYWxpYXNOYW1lKS5maXJzdFRva2VuID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IHZhbHVlSW5Ub2tlbiA9IFRva2VuaXphdGlvbi5yZXZlcnNlU3RyaW5nKGFsaWFzTmFtZSkuZmlyc3RWYWx1ZTtcblxuICAgICAgaWYgKCF2YWx1ZUluVG9rZW4uc3RhcnRzV2l0aChSRVFVSVJFRF9BTElBU19QUkVGSVgpKSB7XG4gICAgICAgIGFsaWFzTmFtZSA9IFJFUVVJUkVEX0FMSUFTX1BSRUZJWCArIGFsaWFzTmFtZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlSW5Ub2tlbi50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoRElTQUxMT1dFRF9QUkVGSVgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQWxpYXMgY2Fubm90IHN0YXJ0IHdpdGggJHtESVNBTExPV0VEX1BSRUZJWH06ICR7YWxpYXNOYW1lfWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdmFsdWVJblRva2VuLm1hdGNoKC9eW2EtekEtWjAtOTovXy1dezEsMjU2fSQvKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJBbGlhcyBuYW1lIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAyNTYgY2hhcmFjdGVycyBpbiBhLXpBLVowLTk6L18tXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLmFsaWFzVGFyZ2V0S2V5ID0gcHJvcHMudGFyZ2V0S2V5O1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBrbXNBbGlhcy5LbXNBbGlhcyh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIG5hbWU6IGFsaWFzTmFtZSxcbiAgICAgIHRhcmdldEtleUlkOiB0aGlzLmFsaWFzVGFyZ2V0S2V5LmtleUFybixcbiAgICB9KTtcblxuICAgIHRoaXMuYWxpYXNOYW1lID0gdGhpcy5yZXNvdXJjZS5uYW1lO1xuICB9XG59XG4iXX0=
@@ -582,5 +582,5 @@ class Key extends KeyBase {
582
582
  }
583
583
  exports.Key = Key;
584
584
  _a = JSII_RTTI_SYMBOL_1;
585
- Key[_a] = { fqn: "terraconstructs.aws.encryption.Key", version: "0.1.7" };
585
+ Key[_a] = { fqn: "terraconstructs.aws.encryption.Key", version: "0.1.9" };
586
586
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9lbmNyeXB0aW9uL2tleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHNGQUFzRjtBQUV0RixzREFBNEQ7QUFDNUQsaUNBQThCO0FBRTlCLGdDQUFtQztBQUNuQyxvREFJMEI7QUFDMUIsNENBQXdDO0FBQ3hDLG1DQUFnQztBQUVoQyw4QkFBOEI7QUFDOUIseUNBQXlDO0FBNkZ6QyxNQUFlLE9BQVEsU0FBUSxnQ0FBZ0I7SUF3QjdDLElBQVcsVUFBVTtRQUNuQixPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFDO0lBQ0osQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQVNELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBMkIsRUFBRTtRQUNyRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQVIxQjs7OztXQUlHO1FBQ2MsWUFBTyxHQUFZLEVBQUUsQ0FBQztRQUtyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN0QixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUU7U0FDL0QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUSxDQUFDLFNBQWlCO1FBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBRXhFLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUs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Q2IseUJBQXlCO1lBQ3pCLHVCQUF1QjtZQUN2QixxQkFBcUI7WUFDckIsaUJBQWlCO1lBQ2pCLG1CQUFtQjtTQUNwQixDQUFDO1FBRUYsSUFBSSxDQUFDLG1CQUFtQixDQUN0QixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDdEIsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO1lBQ2hCLE9BQU87WUFDUCxVQUFVLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1NBQzdDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7QUFuV0gsa0JBb1dDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvMi4xNzAuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3Mta21zL2xpYi9rZXkudHNcblxuaW1wb3J0IHsga21zS2V5LCBkYXRhQXdzS21zS2V5IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IFRva2VuIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXJuRm9ybWF0IH0gZnJvbSBcIi4uL2FyblwiO1xuaW1wb3J0IHtcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcbmltcG9ydCB7IEFsaWFzIH0gZnJvbSBcIi4vYWxpYXNcIjtcbmltcG9ydCB7IEtleUxvb2t1cE9wdGlvbnMgfSBmcm9tIFwiLi9rZXktbG9va3VwXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcIi4uL2lhbVwiO1xuaW1wb3J0ICogYXMgcGVybXMgZnJvbSBcIi4vcHJpdmF0ZS9wZXJtc1wiO1xuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiLi4vLi4vZHVyYXRpb25cIjtcblxuLyoqXG4gKiBPdXRwdXRzIHdoaWNoIG1heSBiZSByZWdpc3RlcmVkIGZvciBvdXRwdXQgdmlhIHRoZSBHcmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleU91dHB1dHMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUga2V5LlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBrZXlBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBrZXlcbiAgICogKHRoZSBwYXJ0IHRoYXQgbG9va3Mgc29tZXRoaW5nIGxpa2U6IDEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTBhYikuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGtleUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBLTVMgS2V5LCBlaXRoZXIgbWFuYWdlZCBieSB0aGlzIENESyBhcHAsIG9yIGltcG9ydGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElLZXkgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqIFN0cm9uZ2x5IHR5cGVkIG91dHB1dHMgKi9cbiAgcmVhZG9ubHkga2V5T3V0cHV0czogS2V5T3V0cHV0cztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUga2V5LlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBrZXlBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBrZXlcbiAgICogKHRoZSBwYXJ0IHRoYXQgbG9va3Mgc29tZXRoaW5nIGxpa2U6IDEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTBhYikuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGtleUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBuZXcgYWxpYXMgZm9yIHRoZSBrZXkuXG4gICAqL1xuICBhZGRBbGlhcyhhbGlhczogc3RyaW5nKTogQWxpYXM7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBzdGF0ZW1lbnQgdG8gdGhlIEtNUyBrZXkgcmVzb3VyY2UgcG9saWN5LlxuICAgKiBAcGFyYW0gc3RhdGVtZW50IFRoZSBwb2xpY3kgc3RhdGVtZW50IHRvIGFkZFxuICAgKiBAcGFyYW0gYWxsb3dOb09wIElmIHRoaXMgaXMgc2V0IHRvIGBmYWxzZWAgYW5kIHRoZXJlIGlzIG5vIHBvbGljeVxuICAgKiBkZWZpbmVkIChpLmUuIGV4dGVybmFsIGtleSksIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsLiBPdGhlcndpc2UsIGl0IHdpbGxcbiAgICogbm8tb3AuXG4gICAqL1xuICBhZGRUb1Jlc291cmNlUG9saWN5KFxuICAgIHN0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCxcbiAgICBhbGxvd05vT3A/OiBib29sZWFuLFxuICApOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdDtcblxuICAvKipcbiAgICogR3JhbnQgdGhlIGluZGljYXRlZCBwZXJtaXNzaW9ucyBvbiB0aGlzIGtleSB0byB0aGUgZ2l2ZW4gcHJpbmNpcGFsXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IGRlY3J5cHRpb24gcGVybWlzc2lvbnMgdXNpbmcgdGhpcyBrZXkgdG8gdGhlIGdpdmVuIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnREZWNyeXB0KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCBlbmNyeXB0aW9uIHBlcm1pc3Npb25zIHVzaW5nIHRoaXMga2V5IHRvIHRoZSBnaXZlbiBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50RW5jcnlwdChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiBwZXJtaXNzaW9ucyB1c2luZyB0aGlzIGtleSB0byB0aGUgZ2l2ZW4gcHJpbmNpcGFsXG4gICAqL1xuICBncmFudEVuY3J5cHREZWNyeXB0KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCBwZXJtaXNzaW9ucyB0byBnZW5lcmF0aW5nIE1BQ3MgdG8gdGhlIGdpdmVuIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRHZW5lcmF0ZU1hYyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgcGVybWlzc2lvbnMgdG8gdmVyaWZ5aW5nIE1BQ3MgdG8gdGhlIGdpdmVuIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRWZXJpZnlNYWMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG59XG5cbmFic3RyYWN0IGNsYXNzIEtleUJhc2UgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSUtleSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBrZXkuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkga2V5QXJuOiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGtleUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBwb2xpY3kgZG9jdW1lbnQgdGhhdCByZXByZXNlbnRzIHRoZSByZXNvdXJjZSBwb2xpY3kgb2YgdGhpcyBrZXkuXG4gICAqXG4gICAqIElmIHNwZWNpZmllZCwgYWRkVG9SZXNvdXJjZVBvbGljeSBjYW4gYmUgdXNlZCB0byBlZGl0IHRoaXMgcG9saWN5LlxuICAgKiBPdGhlcndpc2UgdGhpcyBtZXRob2Qgd2lsbCBuby1vcC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBwb2xpY3k/OiBpYW0uUG9saWN5RG9jdW1lbnQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHByb3BlcnR5IHRvIGNvbnRyb2wgdHJ1c3RpbmcgYWNjb3VudCBpZGVudGl0aWVzLlxuICAgKlxuICAgKiBJZiBzcGVjaWZpZWQsIGdyYW50cyB3aWxsIGRlZmF1bHQgaWRlbnRpdHkgcG9saWNpZXMgaW5zdGVhZCBvZiB0byBib3RoXG4gICAqIHJlc291cmNlIGFuZCBpZGVudGl0eSBwb2xpY2llcy4gVGhpcyBtYXRjaGVzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIHdoZW4gY3JlYXRpbmdcbiAgICogS01TIGtleXMgdmlhIHRoZSBBUEkgb3IgY29uc29sZS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSB0cnVzdEFjY291bnRJZGVudGl0aWVzOiBib29sZWFuO1xuXG4gIHB1YmxpYyBnZXQga2V5T3V0cHV0cygpOiBLZXlPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAga2V5QXJuOiB0aGlzLmtleUFybixcbiAgICAgIGtleUlkOiB0aGlzLmtleUlkLFxuICAgIH07XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmtleU91dHB1dHM7XG4gIH1cblxuICAvKipcbiAgICogQ29sbGVjdGlvbiBvZiBhbGlhc2VzIGFkZGVkIHRvIHRoZSBrZXlcbiAgICpcbiAgICogVHJhY2tlZCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIGFsaWFzTmFtZSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGVuZCBvZiBpdHMgSURcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgYWxpYXNlczogQWxpYXNbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBd3NDb25zdHJ1Y3RQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCkgPT4gdGhpcy5wb2xpY3k/LnZhbGlkYXRlRm9yUmVzb3VyY2VQb2xpY3koKSA/PyBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgbmV3IGFsaWFzIGZvciB0aGUga2V5LlxuICAgKi9cbiAgcHVibGljIGFkZEFsaWFzKGFsaWFzTmFtZTogc3RyaW5nKTogQWxpYXMge1xuICAgIGNvbnN0IGFsaWFzSWQgPSB0aGlzLmFsaWFzZXMubGVuZ3RoID4gMCA/IGBBbGlhcyR7YWxpYXNOYW1lfWAgOiBcIkFsaWFzXCI7XG5cbiAgICBjb25zdCBhbGlhcyA9IG5ldyBBbGlhcyh0aGlzLCBhbGlhc0lkLCB7IGFsaWFzTmFtZSwgdGFyZ2V0S2V5OiB0aGlzIH0pO1xuICAgIHRoaXMuYWxpYXNlcy5wdXNoKGFsaWFzKTtcblxuICAgIHJldHVybiBhbGlhcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgc3RhdGVtZW50IHRvIHRoZSBLTVMga2V5IHJlc291cmNlIHBvbGljeS5cbiAgICogQHBhcmFtIHN0YXRlbWVudCBUaGUgcG9saWN5IHN0YXRlbWVudCB0byBhZGRcbiAgICogQHBhcmFtIGFsbG93Tm9PcCBJZiB0aGlzIGlzIHNldCB0byBgZmFsc2VgIGFuZCB0aGVyZSBpcyBubyBwb2xpY3lcbiAgICogZGVmaW5lZCAoaS5lLiBleHRlcm5hbCBrZXkpLCB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbC4gT3RoZXJ3aXNlLCBpdCB3aWxsXG4gICAqIG5vLW9wLlxuICAgKi9cbiAgcHVibGljIGFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50LFxuICAgIGFsbG93Tm9PcCA9IHRydWUsXG4gICk6IGlhbS5BZGRUb1Jlc291cmNlUG9saWN5UmVzdWx0IHtcbiAgICBjb25zdCBzdGFjayA9IEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KHRoaXMpO1xuXG4gICAgaWYgKCF0aGlzLnBvbGljeSkge1xuICAgICAgaWYgKGFsbG93Tm9PcCkge1xuICAgICAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFVuYWJsZSB0byBhZGQgc3RhdGVtZW50IHRvIElBTSByZXNvdXJjZSBwb2xpY3kgZm9yIEtNUyBrZXk6ICR7SlNPTi5zdHJpbmdpZnkoc3RhY2sucmVzb2x2ZSh0aGlzLmtleUFybikpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMucG9saWN5LmFkZFN0YXRlbWVudHMoc3RhdGVtZW50KTtcbiAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogdHJ1ZSwgcG9saWN5RGVwZW5kYWJsZTogdGhpcy5wb2xpY3kgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCB0aGUgaW5kaWNhdGVkIHBlcm1pc3Npb25zIG9uIHRoaXMga2V5IHRvIHRoZSBnaXZlbiBwcmluY2lwYWxcbiAgICpcbiAgICogVGhpcyBtb2RpZmllcyBib3RoIHRoZSBwcmluY2lwYWwncyBwb2xpY3kgYXMgd2VsbCBhcyB0aGUgcmVzb3VyY2UgcG9saWN5LFxuICAgKiBzaW5jZSB0aGUgZGVmYXVsdCBDbG91ZEZvcm1hdGlvbiBzZXR1cCBmb3IgS01TIGtleXMgaXMgdGhhdCB0aGUgcG9saWN5XG4gICAqIG11c3Qgbm90IGJlIGVtcHR5IGFuZCBzbyBkZWZhdWx0IGdyYW50cyB3b24ndCB3b3JrLlxuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgLy8gS01TIHZlcmlmaWVzIHdoZXRoZXIgdGhlIHByaW5jaXBhbHMgaW5jbHVkZWQgaW4gaXRzIGtleSBwb2xpY3kgYWN0dWFsbHkgZXhpc3QuXG4gICAgLy8gVGhpcyBpcyBhIHByb2JsZW0gaWYgdGhlIHN0YWNrIHRoZSBncmFudGVlIGlzIHBhcnQgb2YgZGVwZW5kcyBvbiB0aGUga2V5IHN0YWNrXG4gICAgLy8gKGFzIGl0IHdvbid0IGV4aXN0IGJlZm9yZSB0aGUga2V5IHBvbGljeSBpcyBhdHRlbXB0ZWQgdG8gYmUgY3JlYXRlZCkuXG4gICAgLy8gSW4gdGhhdCBjYXNlLCBtYWtlIHRoZSBhY2NvdW50IHRoZSByZXNvdXJjZSBwb2xpY3kgcHJpbmNpcGFsXG4gICAgY29uc3QgZ3JhbnRlZVN0YWNrRGVwZW5kc09uS2V5U3RhY2sgPVxuICAgICAgdGhpcy5ncmFudGVlU3RhY2tEZXBlbmRzT25LZXlTdGFjayhncmFudGVlKTtcbiAgICBjb25zdCBwcmluY2lwYWwgPSBncmFudGVlU3RhY2tEZXBlbmRzT25LZXlTdGFja1xuICAgICAgPyBuZXcgaWFtLkFjY291bnRQcmluY2lwYWwoZ3JhbnRlZVN0YWNrRGVwZW5kc09uS2V5U3RhY2spXG4gICAgICA6IGdyYW50ZWUuZ3JhbnRQcmluY2lwYWw7XG5cbiAgICBjb25zdCBjcm9zc0FjY291bnRBY2Nlc3MgPSB0aGlzLmlzR3JhbnRlZUZyb21Bbm90aGVyQWNjb3VudChncmFudGVlKTtcbiAgICBjb25zdCBjcm9zc1JlZ2lvbkFjY2VzcyA9IHRoaXMuaXNHcmFudGVlRnJvbUFub3RoZXJSZWdpb24oZ3JhbnRlZSk7XG4gICAgY29uc3QgY3Jvc3NFbnZpcm9ubWVudCA9IGNyb3NzQWNjb3VudEFjY2VzcyB8fCBjcm9zc1JlZ2lvbkFjY2VzcztcbiAgICBjb25zdCBncmFudE9wdGlvbnM6IGlhbS5HcmFudFdpdGhSZXNvdXJjZU9wdGlvbnMgPSB7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlOiB0aGlzLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5rZXlBcm5dLFxuICAgICAgcmVzb3VyY2VTZWxmQXJuczogY3Jvc3NFbnZpcm9ubWVudCA/IHVuZGVmaW5lZCA6IFtcIipcIl0sXG4gICAgfTtcbiAgICBpZiAodGhpcy50cnVzdEFjY291bnRJZGVudGl0aWVzICYmICFjcm9zc0Vudmlyb25tZW50KSB7XG4gICAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsT3JSZXNvdXJjZShncmFudE9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsQW5kUmVzb3VyY2Uoe1xuICAgICAgICAuLi5ncmFudE9wdGlvbnMsXG4gICAgICAgIC8vIGlmIHRoZSBrZXkgaXMgdXNlZCBpbiBhIGNyb3NzLWVudmlyb25tZW50IG1hdHRlcixcbiAgICAgICAgLy8gd2UgY2FuJ3QgYWNjZXNzIHRoZSBLZXkgQVJOICh0aGV5IGRvbid0IGhhdmUgcGh5c2ljYWwgbmFtZXMpLFxuICAgICAgICAvLyBzbyBmYWxsIGJhY2sgdG8gdXNpbmcgJyonLiBUb0RvIHdlIG5lZWQgdG8gbWFrZSB0aGlzIGJldHRlci4uLiBzb21laG93XG4gICAgICAgIHJlc291cmNlQXJuczogY3Jvc3NFbnZpcm9ubWVudCA/IFtcIipcIl0gOiBbdGhpcy5rZXlBcm5dLFxuICAgICAgICByZXNvdXJjZVBvbGljeVByaW5jaXBhbDogcHJpbmNpcGFsLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IGRlY3J5cHRpb24gcGVybWlzc2lvbnMgdXNpbmcgdGhpcyBrZXkgdG8gdGhlIGdpdmVuIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50RGVjcnlwdChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgLi4ucGVybXMuREVDUllQVF9BQ1RJT05TKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBlbmNyeXB0aW9uIHBlcm1pc3Npb25zIHVzaW5nIHRoaXMga2V5IHRvIHRoZSBnaXZlbiBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudEVuY3J5cHQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsIC4uLnBlcm1zLkVOQ1JZUFRfQUNUSU9OUyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiBwZXJtaXNzaW9ucyB1c2luZyB0aGlzIGtleSB0byB0aGUgZ2l2ZW4gcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRFbmNyeXB0RGVjcnlwdChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoXG4gICAgICBncmFudGVlLFxuICAgICAgLi4uWy4uLnBlcm1zLkRFQ1JZUFRfQUNUSU9OUywgLi4ucGVybXMuRU5DUllQVF9BQ1RJT05TXSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHBlcm1pc3Npb25zIHRvIGdlbmVyYXRpbmcgTUFDcyB0byB0aGUgZ2l2ZW4gcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRHZW5lcmF0ZU1hYyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgLi4ucGVybXMuR0VORVJBVEVfSE1BQ19BQ1RJT05TKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwZXJtaXNzaW9ucyB0byB2ZXJpZnlpbmcgTUFDcyB0byB0aGUgZ2l2ZW4gcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRWZXJpZnlNYWMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsIC4uLnBlcm1zLlZFUklGWV9ITUFDX0FDVElPTlMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBncmFudGVlIGJlbG9uZ3MgdG8gYSBzdGFjayB0aGF0IHdpbGwgYmUgZGVwbG95ZWRcbiAgICogYWZ0ZXIgdGhlIHN0YWNrIGNvbnRhaW5pbmcgdGhpcyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIHRoZSBncmFudGVlIHRvIGdpdmUgcGVybWlzc2lvbnMgdG9cbiAgICogQHJldHVybnMgdGhlIGFjY291bnQgSUQgb2YgdGhlIGdyYW50ZWUgc3RhY2sgaWYgaXRzIHN0YWNrIGRvZXMgZGVwZW5kIG9uIHRoaXMgc3RhY2ssXG4gICAqICAgdW5kZWZpbmVkIG90aGVyd2lzZVxuICAgKi9cbiAgcHJpdmF0ZSBncmFudGVlU3RhY2tEZXBlbmRzT25LZXlTdGFjayhcbiAgICBncmFudGVlOiBpYW0uSUdyYW50YWJsZSxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBncmFudFByaW5jaXBhbCA9IGdyYW50ZWUuZ3JhbnRQcmluY2lwYWw7XG4gICAgLy8gdGhpcyBsb2dpYyBzaG91bGQgb25seSBhcHBseSB0byBuZXdseSBjcmVhdGVkXG4gICAgLy8gKD0gbm90IGltcG9ydGVkKSByZXNvdXJjZXNcbiAgICBpZiAoIWlhbS5wcmluY2lwYWxJc093bmVkUmVzb3VyY2UoZ3JhbnRQcmluY2lwYWwpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBrZXlTdGFjayA9IEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KHRoaXMpO1xuICAgIGNvbnN0IGdyYW50ZWVTdGFjayA9IEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KGdyYW50UHJpbmNpcGFsKTtcbiAgICBpZiAoa2V5U3RhY2sgPT09IGdyYW50ZWVTdGFjaykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBGaW5kIHRlc3QgY2FzZSB3aXRob3V0IGNyb3NzIHN0YWNrIHJlZmVyZW5jZSBjeWNsaWMgZGVwZW5kZW5jaWVzLi4uXG4gICAgcmV0dXJuIGdyYW50ZWVTdGFjay5kZXBlbmRlbmNpZXMuaW5jbHVkZXMoa2V5U3RhY2spXG4gICAgICA/IGdyYW50ZWVTdGFjay5hY2NvdW50XG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNHcmFudGVlRnJvbUFub3RoZXJSZWdpb24oZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBib29sZWFuIHtcbiAgICBpZiAoIWlhbS5wcmluY2lwYWxJc093bmVkUmVzb3VyY2UoZ3JhbnRlZS5ncmFudFByaW5jaXBhbCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3Qga2V5U3RhY2sgPSBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdCh0aGlzKTtcbiAgICBjb25zdCBpZGVudGl0eVN0YWNrID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QoZ3JhbnRlZS5ncmFudFByaW5jaXBhbCk7XG5cbiAgICAvLyBpZiB0d28gY29tcGFyZWQgc3RhY2tzIGhhdmUgdGhlIHNhbWUgcmVnaW9uLCB0aGlzIHNob3VsZCByZXR1cm4gJ2ZhbHNlJyBzaW5jZSBpdCdzIGZyb20gdGhlXG4gICAgLy8gc2FtZSByZWdpb247IGlmIHR3byBzdGFja3MgaGF2ZSBkaWZmZXJlbnQgcmVnaW9uLCB0aGVuIGNvbXBhcmUgZW52LnJlZ2lvblxuICAgIHJldHVybiAoXG4gICAgICBrZXlTdGFjay5yZWdpb24gIT09IGlkZW50aXR5U3RhY2sucmVnaW9uICYmXG4gICAgICB0aGlzLmVudi5yZWdpb24gIT09IGlkZW50aXR5U3RhY2sucmVnaW9uXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNHcmFudGVlRnJvbUFub3RoZXJBY2NvdW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpYW0ucHJpbmNpcGFsSXNPd25lZFJlc291cmNlKGdyYW50ZWUuZ3JhbnRQcmluY2lwYWwpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGtleVN0YWNrID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QodGhpcyk7XG4gICAgY29uc3QgaWRlbnRpdHlTdGFjayA9IEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KGdyYW50ZWUuZ3JhbnRQcmluY2lwYWwpO1xuXG4gICAgLy8gaWYgdHdvIGNvbXBhcmVkIHN0YWNrcyBoYXZlIHRoZSBzYW1lIGFjY291bnQsIHRoaXMgc2hvdWxkIHJldHVybiAnZmFsc2UnIHNpbmNlIGl0J3MgZnJvbSB0aGVcbiAgICAvLyBzYW1lIGFjY291bnQ7IGlmIHR3byBzdGFja3MgaGF2ZSBkaWZmZXJlbnQgYWNjb3VudCwgdGhlbiBjb21wYXJlIGVudi5hY2NvdW50XG4gICAgcmV0dXJuIChcbiAgICAgIGtleVN0YWNrLmFjY291bnQgIT09IGlkZW50aXR5U3RhY2suYWNjb3VudCAmJlxuICAgICAgdGhpcy5lbnYuYWNjb3VudCAhPT0gaWRlbnRpdHlTdGFjay5hY2NvdW50XG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBrZXkgc3BlYywgcmVwcmVzZW50cyB0aGUgY3J5cHRvZ3JhcGhpYyBjb25maWd1cmF0aW9uIG9mIGtleXMuXG4gKi9cbmV4cG9ydCBlbnVtIEtleVNwZWMge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQga2V5IHNwZWMuXG4gICAqXG4gICAqIFZhbGlkIHVzYWdlOiBFTkNSWVBUX0RFQ1JZUFRcbiAgICovXG4gIFNZTU1FVFJJQ19ERUZBVUxUID0gXCJTWU1NRVRSSUNfREVGQVVMVFwiLFxuXG4gIC8qKlxuICAgKiBSU0Egd2l0aCAyMDQ4IGJpdHMgb2Yga2V5LlxuICAgKlxuICAgKiBWYWxpZCB1c2FnZTogRU5DUllQVF9ERUNSWVBUIGFuZCBTSUdOX1ZFUklGWVxuICAgKi9cbiAgUlNBXzIwNDggPSBcIlJTQV8yMDQ4XCIsXG5cbiAgLyoqXG4gICAqIFJTQSB3aXRoIDMwNzIgYml0cyBvZiBrZXkuXG4gICAqXG4gICAqIFZhbGlkIHVzYWdlOiBFTkNSWVBUX0RFQ1JZUFQgYW5kIFNJR05fVkVSSUZZXG4gICAqL1xuICBSU0FfMzA3MiA9IFwiUlNBXzMwNzJcIixcblxuICAvKipcbiAgICogUlNBIHdpdGggNDA5NiBiaXRzIG9mIGtleS5cbiAgICpcbiAgICogVmFsaWQgdXNhZ2U6IEVOQ1JZUFRfREVDUllQVCBhbmQgU0lHTl9WRVJJRllcbiAgICovXG4gIFJTQV80MDk2ID0gXCJSU0FfNDA5NlwiLFxuXG4gIC8qKlxuICAgKiBOSVNUIEZJUFMgMTg2LTQsIFNlY3Rpb24gNi40LCBFQ0RTQSBzaWduYXR1cmUgdXNpbmcgdGhlIGN1cnZlIHNwZWNpZmllZCBieSB0aGUga2V5IGFuZFxuICAgKiBTSEEtMjU2IGZvciB0aGUgbWVzc2FnZSBkaWdlc3QuXG4gICAqXG4gICAqIFZhbGlkIHVzYWdlOiBTSUdOX1ZFUklGWVxuICAgKi9cbiAgRUNDX05JU1RfUDI1NiA9IFwiRUNDX05JU1RfUDI1NlwiLFxuXG4gIC8qKlxuICAgKiBOSVNUIEZJUFMgMTg2LTQsIFNlY3Rpb24gNi40LCBFQ0RTQSBzaWduYXR1cmUgdXNpbmcgdGhlIGN1cnZlIHNwZWNpZmllZCBieSB0aGUga2V5IGFuZFxuICAgKiBTSEEtMzg0IGZvciB0aGUgbWVzc2FnZSBkaWdlc3QuXG4gICAqXG4gICAqIFZhbGlkIHVzYWdlOiBTSUdOX1ZFUklGWVxuICAgKi9cbiAgRUNDX05JU1RfUDM4NCA9IFwiRUNDX05JU1RfUDM4NFwiLFxuXG4gIC8qKlxuICAgKiBOSVNUIEZJUFMgMTg2LTQsIFNlY3Rpb24gNi40LCBFQ0RTQSBzaWduYXR1cmUgdXNpbmcgdGhlIGN1cnZlIHNwZWNpZmllZCBieSB0aGUga2V5IGFuZFxuICAgKiBTSEEtNTEyIGZvciB0aGUgbWVzc2FnZSBkaWdlc3QuXG4gICAqXG4gICAqIFZhbGlkIHVzYWdlOiBTSUdOX1ZFUklGWVxuICAgKi9cbiAgRUNDX05JU1RfUDUyMSA9IFwiRUNDX05JU1RfUDUyMVwiLFxuXG4gIC8qKlxuICAgKiBTdGFuZGFyZHMgZm9yIEVmZmljaWVudCBDcnlwdG9ncmFwaHkgMiwgU2VjdGlvbiAyLjQuMSwgRUNEU0Egc2lnbmF0dXJlIG9uIHRoZSBLb2JsaXR6IGN1cnZlLlxuICAgKlxuICAgKiBWYWxpZCB1c2FnZTogU0lHTl9WRVJJRllcbiAgICovXG4gIEVDQ19TRUNHX1AyNTZLMSA9IFwiRUNDX1NFQ0dfUDI1NksxXCIsXG5cbiAgLyoqXG4gICAqIEhhc2gtQmFzZWQgTWVzc2FnZSBBdXRoZW50aWNhdGlvbiBDb2RlIGFzIGRlZmluZWQgaW4gUkZDIDIxMDQgdXNpbmcgdGhlIG1lc3NhZ2UgZGlnZXN0IGZ1bmN0aW9uIFNIQTIyNC5cbiAgICpcbiAgICogVmFsaWQgdXNhZ2U6IEdFTkVSQVRFX1ZFUklGWV9NQUNcbiAgICovXG4gIEhNQUNfMjI0ID0gXCJITUFDXzIyNFwiLFxuXG4gIC8qKlxuICAgKiBIYXNoLUJhc2VkIE1lc3NhZ2UgQXV0aGVudGljYXRpb24gQ29kZSBhcyBkZWZpbmVkIGluIFJGQyAyMTA0IHVzaW5nIHRoZSBtZXNzYWdlIGRpZ2VzdCBmdW5jdGlvbiBTSEEyNTYuXG4gICAqXG4gICAqIFZhbGlkIHVzYWdlOiBHRU5FUkFURV9WRVJJRllfTUFDXG4gICAqL1xuICBITUFDXzI1NiA9IFwiSE1BQ18yNTZcIixcblxuICAvKipcbiAgICogSGFzaC1CYXNlZCBNZXNzYWdlIEF1dGhlbnRpY2F0aW9uIENvZGUgYXMgZGVmaW5lZCBpbiBSRkMgMjEwNCB1c2luZyB0aGUgbWVzc2FnZSBkaWdlc3QgZnVuY3Rpb24gU0hBMzg0LlxuICAgKlxuICAgKiBWYWxpZCB1c2FnZTogR0VORVJBVEVfVkVSSUZZX01BQ1xuICAgKi9cbiAgSE1BQ18zODQgPSBcIkhNQUNfMzg0XCIsXG5cbiAgLyoqXG4gICAqIEhhc2gtQmFzZWQgTWVzc2FnZSBBdXRoZW50aWNhdGlvbiBDb2RlIGFzIGRlZmluZWQgaW4gUkZDIDIxMDQgdXNpbmcgdGhlIG1lc3NhZ2UgZGlnZXN0IGZ1bmN0aW9uIFNIQTUxMi5cbiAgICpcbiAgICogVmFsaWQgdXNhZ2U6IEdFTkVSQVRFX1ZFUklGWV9NQUNcbiAgICovXG4gIEhNQUNfNTEyID0gXCJITUFDXzUxMlwiLFxuXG4gIC8qKlxuICAgKiBFbGxpcHRpYyBjdXJ2ZSBrZXkgc3BlYyBhdmFpbGFibGUgb25seSBpbiBDaGluYSBSZWdpb25zLlxuICAgKlxuICAgKiBWYWxpZCB1c2FnZTogRU5DUllQVF9ERUNSWVBUIGFuZCBTSUdOX1ZFUklGWVxuICAgKi9cbiAgU00yID0gXCJTTTJcIixcbn1cblxuLyoqXG4gKiBUaGUga2V5IHVzYWdlLCByZXByZXNlbnRzIHRoZSBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgb2Yga2V5cy5cbiAqL1xuZXhwb3J0IGVudW0gS2V5VXNhZ2Uge1xuICAvKipcbiAgICogRW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbi5cbiAgICovXG4gIEVOQ1JZUFRfREVDUllQVCA9IFwiRU5DUllQVF9ERUNSWVBUXCIsXG5cbiAgLyoqXG4gICAqIFNpZ25pbmcgYW5kIHZlcmlmaWNhdGlvblxuICAgKi9cbiAgU0lHTl9WRVJJRlkgPSBcIlNJR05fVkVSSUZZXCIsXG5cbiAgLyoqXG4gICAqIEdlbmVyYXRpbmcgYW5kIHZlcmlmeWluZyBNQUNzXG4gICAqL1xuICBHRU5FUkFURV9WRVJJRllfTUFDID0gXCJHRU5FUkFURV9WRVJJRllfTUFDXCIsXG5cbiAgLyoqXG4gICAqIERlcml2aW5nIHNoYXJlZCBzZWNyZXRzXG4gICAqL1xuICBLRVlfQUdSRUVNRU5UID0gXCJLRVlfQUdSRUVNRU5UXCIsXG59XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIHByb3BlcnRpZXMgZm9yIGEgS01TIEtleSBvYmplY3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLZXlQcm9wcyBleHRlbmRzIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gb2YgdGhlIGtleS4gVXNlIGEgZGVzY3JpcHRpb24gdGhhdCBoZWxwcyB5b3VyIHVzZXJzIGRlY2lkZVxuICAgKiB3aGV0aGVyIHRoZSBrZXkgaXMgYXBwcm9wcmlhdGUgZm9yIGEgcGFydGljdWxhciB0YXNrLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgYWxpYXMgdG8gYWRkIHRvIHRoZSBrZXlcbiAgICpcbiAgICogTW9yZSBhbGlhc2VzIGNhbiBiZSBhZGRlZCBsYXRlciBieSBjYWxsaW5nIGBhZGRBbGlhc2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gYWxpYXMgaXMgYWRkZWQgZm9yIHRoZSBrZXkuXG4gICAqL1xuICByZWFkb25seSBhbGlhcz86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgQVdTIEtNUyByb3RhdGVzIHRoZSBrZXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVLZXlSb3RhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwZXJpb2QgYmV0d2VlbiBlYWNoIGF1dG9tYXRpYyByb3RhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBzZXQgYnkgQ0ZOIHRvIDM2NSBkYXlzLlxuICAgKi9cbiAgcmVhZG9ubHkgcm90YXRpb25QZXJpb2Q/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGtleSBpcyBhdmFpbGFibGUgZm9yIHVzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBLZXkgaXMgZW5hYmxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY3J5cHRvZ3JhcGhpYyBjb25maWd1cmF0aW9uIG9mIHRoZSBrZXkuIFRoZSB2YWxpZCB2YWx1ZSBkZXBlbmRzIG9uIHVzYWdlIG9mIHRoZSBrZXkuXG4gICAqXG4gICAqIElNUE9SVEFOVDogSWYgeW91IGNoYW5nZSB0aGlzIHByb3BlcnR5IG9mIGFuIGV4aXN0aW5nIGtleSwgdGhlIGV4aXN0aW5nIGtleSBpcyBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uXG4gICAqIGFuZCBhIG5ldyBrZXkgaXMgY3JlYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IEtleVNwZWMuU1lNTUVUUklDX0RFRkFVTFRcbiAgICovXG4gIHJlYWRvbmx5IGtleVNwZWM/OiBLZXlTcGVjO1xuXG4gIC8qKlxuICAgKiBUaGUgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zIGZvciB3aGljaCB0aGUga2V5IGNhbiBiZSB1c2VkLlxuICAgKlxuICAgKiBJTVBPUlRBTlQ6IElmIHlvdSBjaGFuZ2UgdGhpcyBwcm9wZXJ0eSBvZiBhbiBleGlzdGluZyBrZXksIHRoZSBleGlzdGluZyBrZXkgaXMgc2NoZWR1bGVkIGZvciBkZWxldGlvblxuICAgKiBhbmQgYSBuZXcga2V5IGlzIGNyZWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBLZXlVc2FnZS5FTkNSWVBUX0RFQ1JZUFRcbiAgICovXG4gIHJlYWRvbmx5IGtleVVzYWdlPzogS2V5VXNhZ2U7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBtdWx0aS1SZWdpb24gcHJpbWFyeSBrZXkgdGhhdCB5b3UgY2FuIHJlcGxpY2F0ZSBpbiBvdGhlciBBV1MgUmVnaW9ucy5cbiAgICpcbiAgICogWW91IGNhbid0IGNoYW5nZSB0aGUgYG11bHRpUmVnaW9uYCB2YWx1ZSBhZnRlciB0aGUgS01TIGtleSBpcyBjcmVhdGVkLlxuICAgKlxuICAgKiBJTVBPUlRBTlQ6IElmIHlvdSBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoZSBgbXVsdGlSZWdpb25gIHByb3BlcnR5IG9uIGFuIGV4aXN0aW5nIEtNUyBrZXksIHRoZSB1cGRhdGUgcmVxdWVzdCBmYWlscyxcbiAgICogcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgb2YgdGhlIFVwZGF0ZVJlcGxhY2VQb2xpY3kgYXR0cmlidXRlLlxuICAgKiBUaGlzIHByZXZlbnRzIHlvdSBmcm9tIGFjY2lkZW50YWxseSBkZWxldGluZyBhIEtNUyBrZXkgYnkgY2hhbmdpbmcgYW4gaW1tdXRhYmxlIHByb3BlcnR5IHZhbHVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL211bHRpLXJlZ2lvbi1rZXlzLW92ZXJ2aWV3Lmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IG11bHRpUmVnaW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3VzdG9tIHBvbGljeSBkb2N1bWVudCB0byBhdHRhY2ggdG8gdGhlIEtNUyBrZXkuXG4gICAqXG4gICAqIE5PVEUgLSBJZiB0aGUgYEBhd3MtY2RrL2F3cy1rbXM6ZGVmYXVsdEtleVBvbGljaWVzYCBmZWF0dXJlIGZsYWcgaXMgc2V0ICh0aGUgZGVmYXVsdCBmb3IgbmV3IHByb2plY3RzKSxcbiAgICogdGhpcyBwb2xpY3kgd2lsbCAqb3ZlcnJpZGUqIHRoZSBkZWZhdWx0IGtleSBwb2xpY3kgYW5kIGJlY29tZSB0aGUgb25seSBrZXkgcG9saWN5IGZvciB0aGUga2V5LiBJZiB0aGVcbiAgICogZmVhdHVyZSBmbGFnIGlzIG5vdCBzZXQsIHRoaXMgcG9saWN5IHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIGRlZmF1bHQga2V5IHBvbGljeS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBIHBvbGljeSBkb2N1bWVudCB3aXRoIHBlcm1pc3Npb25zIGZvciB0aGUgYWNjb3VudCByb290IHRvXG4gICAqIGFkbWluaXN0ZXIgdGhlIGtleSB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBwb2xpY3k/OiBpYW0uUG9saWN5RG9jdW1lbnQ7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwcmluY2lwYWxzIHRvIGFkZCBhcyBrZXkgYWRtaW5pc3RyYXRvcnMgdG8gdGhlIGtleSBwb2xpY3kuXG4gICAqXG4gICAqIEtleSBhZG1pbmlzdHJhdG9ycyBoYXZlIHBlcm1pc3Npb25zIHRvIG1hbmFnZSB0aGUga2V5IChlLmcuLCBjaGFuZ2UgcGVybWlzc2lvbnMsIHJldm9rZSksIGJ1dCBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uc1xuICAgKiB0byB1c2UgdGhlIGtleSBpbiBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgKGUuZy4sIGVuY3J5cHQsIGRlY3J5cHQpLlxuICAgKlxuICAgKiBUaGVzZSBwcmluY2lwYWxzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGRlZmF1bHQga2V5IHBvbGljeSAoaWYgbm9uZSBzcGVjaWZpZWQpLCBvciB0byB0aGUgc3BlY2lmaWVkIHBvbGljeSAoaWYgcHJvdmlkZWQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgYWRtaW5zPzogaWFtLklQcmluY2lwYWxbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUga2V5IHVzYWdlIGNhbiBiZSBncmFudGVkIGJ5IElBTSBwb2xpY2llc1xuICAgKlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBhZGRzIGEgZGVmYXVsdCBzdGF0ZW1lbnQgd2hpY2ggZGVsZWdhdGVzIGtleVxuICAgKiBhY2Nlc3MgY29udHJvbCBjb21wbGV0ZWx5IHRvIHRoZSBpZGVudGl0eSdzIElBTSBwb2xpY3kgKHNpbWlsYXJcbiAgICogdG8gaG93IGl0IHdvcmtzIGZvciBvdGhlciBBV1MgcmVzb3VyY2VzKS4gVGhpcyBtYXRjaGVzIHRoZSBkZWZhdWx0IGJlaGF2aW9yXG4gICAqIHdoZW4gY3JlYXRpbmcgS01TIGtleXMgdmlhIHRoZSBBUEkgb3IgY29uc29sZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ttcy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUva2V5LXBvbGljaWVzLmh0bWwja2V5LXBvbGljeS1kZWZhdWx0LWFsbG93LXJvb3QtZW5hYmxlLWlhbVxuICAgKi9cbiAgcmVhZG9ubHkgdHJ1c3RBY2NvdW50SWRlbnRpdGllcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhlIHdhaXRpbmcgcGVyaW9kIGJlZm9yZVxuICAgKiBBV1MgS01TIGRlbGV0ZXMgYSBDTUsgdGhhdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gYSBDbG91ZEZvcm1hdGlvbiBzdGFjay5cbiAgICpcbiAgICogV2hlbiB5b3UgcmVtb3ZlIGEgY3VzdG9tZXIgbWFzdGVyIGtleSAoQ01LKSBmcm9tIGEgQ2xvdWRGb3JtYXRpb24gc3RhY2ssIEFXUyBLTVMgc2NoZWR1bGVzIHRoZSBDTUsgZm9yIGRlbGV0aW9uXG4gICAqIGFuZCBzdGFydHMgdGhlIG1hbmRhdG9yeSB3YWl0aW5nIHBlcmlvZC4gVGhlIFBlbmRpbmdXaW5kb3dJbkRheXMgcHJvcGVydHkgZGV0ZXJtaW5lcyB0aGUgbGVuZ3RoIG9mIHdhaXRpbmcgcGVyaW9kLlxuICAgKiBEdXJpbmcgdGhlIHdhaXRpbmcgcGVyaW9kLCB0aGUga2V5IHN0YXRlIG9mIENNSyBpcyBQZW5kaW5nIERlbGV0aW9uLCB3aGljaCBwcmV2ZW50cyB0aGUgQ01LIGZyb20gYmVpbmcgdXNlZCBpblxuICAgKiBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMuIFdoZW4gdGhlIHdhaXRpbmcgcGVyaW9kIGV4cGlyZXMsIEFXUyBLTVMgcGVybWFuZW50bHkgZGVsZXRlcyB0aGUgQ01LLlxuICAgKlxuICAgKiBFbnRlciBhIHZhbHVlIGJldHdlZW4gNyBhbmQgMzAgZGF5cy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2Uta21zLWtleS5odG1sI2Nmbi1rbXMta2V5LXBlbmRpbmd3aW5kb3dpbmRheXNcbiAgICogQGRlZmF1bHQgLSAzMCBkYXlzXG4gICAqL1xuICByZWFkb25seSBwZW5kaW5nV2luZG93PzogRHVyYXRpb247XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIEtNUyBrZXkuXG4gKlxuICogQHJlc291cmNlIGF3c19rbXNfa2V5XG4gKi9cbmV4cG9ydCBjbGFzcyBLZXkgZXh0ZW5kcyBLZXlCYXNlIHtcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleHRlcm5hbGx5IGRlZmluZWQgS01TIEtleSB1c2luZyBpdHMgQVJOLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgIHRoZSBjb25zdHJ1Y3QgdGhhdCB3aWxsIFwib3duXCIgdGhlIGltcG9ydGVkIGtleS5cbiAgICogQHBhcmFtIGlkICAgICB0aGUgaWQgb2YgdGhlIGltcG9ydGVkIGtleSBpbiB0aGUgY29uc3RydWN0IHRyZWUuXG4gICAqIEBwYXJhbSBrZXlBcm4gdGhlIEFSTiBvZiBhbiBleGlzdGluZyBLTVMga2V5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tS2V5QXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGtleUFybjogc3RyaW5nKTogSUtleSB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgS2V5QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkga2V5QXJuID0ga2V5QXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGtleUlkOiBzdHJpbmc7XG4gICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9saWN5PzogaWFtLlBvbGljeURvY3VtZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgLy8gZGVmYXVsdGluZyB0cnVlOiBpZiB3ZSBhcmUgaW1wb3J0aW5nIHRoZSBrZXkgdGhlIGtleSBwb2xpY3kgaXNcbiAgICAgIC8vIHVuZGVmaW5lZCBhbmQgaW1wb3NzaWJsZSB0byBjaGFuZ2UgaGVyZTsgdGhpcyBtZWFucyB1cGRhdGluZyBpZGVudGl0eVxuICAgICAgLy8gcG9saWNpZXMgaXMgcmVhbGx5IHRoZSBvbmx5IG9wdGlvblxuICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRydXN0QWNjb3VudElkZW50aXRpZXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgICBjb25zdHJ1Y3RvcihrZXlJZDogc3RyaW5nLCBwcm9wczogQXdzQ29uc3RydWN0UHJvcHMgPSB7fSkge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgICAgICB0aGlzLmtleUlkID0ga2V5SWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qga2V5UmVzb3VyY2VOYW1lID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3Qoc2NvcGUpLnNwbGl0QXJuKFxuICAgICAga2V5QXJuLFxuICAgICAgQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgKS5yZXNvdXJjZU5hbWU7XG4gICAgaWYgKCFrZXlSZXNvdXJjZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEtNUyBrZXkgQVJOIG11c3QgYmUgaW4gdGhlIGZvcm1hdCAnYXJuOjxwYXJ0aXRpb24+Omttczo8cmVnaW9uPjo8YWNjb3VudD46a2V5LzxrZXlJZD4nLCBnb3Q6ICcke2tleUFybn0nYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoa2V5UmVzb3VyY2VOYW1lLCB7XG4gICAgICBlbnZpcm9ubWVudEZyb21Bcm46IGtleUFybixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBtdXRhYmxlIGBJS2V5YCBiYXNlZCBvbiBhIGxvdy1sZXZlbCBgS21zS2V5YC5cbiAgICogVGhpcyBtZXRob2QgaXMgZGlmZmVyZW50IHRoYW4gYGZyb21LZXlBcm4oKWAgYmVjYXVzZSB0aGUgYElLZXlgXG4gICAqIHJldHVybmVkIGZyb20gdGhpcyBtZXRob2QgaXMgbXV0YWJsZTtcbiAgICogbWVhbmluZywgY2FsbGluZyBhbnkgbXV0YXRpbmcgbWV0aG9kcyBvbiBpdCxcbiAgICogbGlrZSBgSUtleS5hZGRUb1Jlc291cmNlUG9saWN5KClgLFxuICAgKiB3aWxsIGFjdHVhbGx5IGJlIHJlZmxlY3RlZCBpbiB0aGUgcmVzdWx0aW5nIHRlbXBsYXRlLFxuICAgKiBhcyBvcHBvc2VkIHRvIHRoZSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgZnJvbUtleUFybigpYCxcbiAgICogb24gd2hpY2ggY2FsbGluZyB0aG9zZSBtZXRob2RzIHdvdWxkIGhhdmUgbm8gZWZmZWN0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVGZLZXkodGZLZXk6IGttc0tleS5LbXNLZXkpOiBJS2V5IHtcbiAgICAvLyB1c2UgYSBcIndlaXJkXCIgaWQgdGhhdCBoYXMgYSBoaWdoZXIgY2hhbmNlIG9mIGJlaW5nIHVuaXF1ZVxuICAgIGNvbnN0IGlkID0gXCJARnJvbVRmS2V5XCI7XG5cbiAgICAvLyBpZiBmcm9tVGZLZXkoKSB3YXMgYWxyZWFkeSBjYWxsZWQgb24gdGhpcyB0ZktleSxcbiAgICAvLyByZXR1cm4gdGhlIHNhbWUgTDJcbiAgICAvLyAoYXMgZGlmZmVyZW50IEwycyB3b3VsZCBjb25mbGljdCwgYmVjYXVzZSBvZiB0aGUgbXV0YXRpb24gb2YgdGhlIGtleVBvbGljeSBwcm9wZXJ0eSBvZiB0aGUgTDEgYmVsb3cpXG4gICAgY29uc3QgZXhpc3RpbmcgPSB0ZktleS5ub2RlLnRyeUZpbmRDaGlsZChpZCk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICByZXR1cm4gPElLZXk+ZXhpc3Rpbmc7XG4gICAgfVxuXG4gICAgbGV0IGtleVBvbGljeTogaWFtLlBvbGljeURvY3VtZW50O1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQodGZLZXkucG9saWN5SW5wdXQpKSB7XG4gICAgICAvLyBmaW5kIGZpcnN0IFBvbGljeURvY3VtZW50IGluIHRoZSBzY29wZSB3aG8ncyBqc29uIHRva2VuIHBvaW50cyB0byB0aGUga2V5IHBvbGljeVxuICAgICAga2V5UG9saWN5ID0gQXdzU3RhY2sub2YodGZLZXkpXG4gICAgICAgIC5ub2RlLmZpbmRBbGwoKVxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChjKSA9PlxuICAgICAgICAgICAgYyBpbnN0YW5jZW9mIGlhbS5Qb2xpY3lEb2N1bWVudCAmJiBjLmpzb24gPT09IHRmS2V5LnBvbGljeUlucHV0LFxuICAgICAgICApWzBdIGFzIGlhbS5Qb2xpY3lEb2N1bWVudDtcbiAgICAgIGlmICgha2V5UG9saWN5KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIkNvdWxkIG5vdCByZXNvbHZlIHRoZSBwYXNzZWQgYXdzX2ttc19rZXkgcG9saWN5IGF0dHJpYnV0ZSB0byBhIFBvbGljeURvY3VtZW50IHJlc291cmNlIGpzb24gYXR0cmlidXRlLiBcIiArXG4gICAgICAgICAgICBcIlRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBjcmVhdGUgYSBtdXRhYmxlIElLZXkgZnJvbSB0aGF0IFBvbGljeS4gXCIgK1xuICAgICAgICAgICAgXCJZb3UgaGF2ZSB0byB1c2UgZnJvbUtleUFybiBpbnN0ZWFkLCBwYXNzaW5nIGl0IHRoZSBBUk4gYXR0cmlidXRlIHByb3BlcnR5IG9mIHRoZSBsb3ctbGV2ZWwgQ2ZuS2V5XCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBvbGljeUlucHV0T2JqID0gSlNPTi5wYXJzZSh0ZktleS5wb2xpY3lJbnB1dCA/PyBcIlwiKTtcbiAgICAgICAgLy8gY3JlYXRlIG5ldyBQb2xpY3lEb2N1bWVudCBmcm9tIHRoZSBqc29uIHN0cmluZ1xuICAgICAgICBrZXlQb2xpY3kgPSBpYW0uUG9saWN5RG9jdW1lbnQuZnJvbUpzb24oXG4gICAgICAgICAgdGZLZXksXG4gICAgICAgICAgXCJQb2xpY3lcIixcbiAgICAgICAgICBwb2xpY3lJbnB1dE9iaixcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBJZiBQb2xpY3lEb2N1bWVudC5mcm9tSnNvbigpIHRocm93cyBhbiBleGNlcHRpb24uXG4gICAgICAgIC8vIEluIHRoYXQgY2FzZSwgYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIHRvIGVmZmVjdGl2ZWx5IG1ha2UgdGhlIHJldHVybmVkIElLZXkgaW1tdXRhYmxlLFxuICAgICAgICAvLyB0aHJvdyBhbiBleGNlcHRpb24gc3VnZ2VzdGluZyB0byB1c2UgdGhlIG90aGVyIGltcG9ydGluZyBtZXRob2RzIGluc3RlYWQuXG4gICAgICAgIC8vIFdlIG1pZ2h0IG1ha2UgdGhpcyBwYXJzaW5nIGxvZ2ljIHNtYXJ0ZXIgbGF0ZXIsXG4gICAgICAgIC8vIGJ1dCBsZXQncyBzdGFydCBieSBlcnJvcmluZyBvdXQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIkNvdWxkIG5vdCBwYXJzZSB0aGUgUG9saWN5RG9jdW1lbnQgb2YgdGhlIHBhc3NlZCBhd3Nfa21zX2tleSByZXNvdXJjZS4gXCIgK1xuICAgICAgICAgICAgXCJUaGlzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gY3JlYXRlIGEgbXV0YWJsZSBJS2V5IGZyb20gdGhhdCBQb2xpY3kuIFwiICtcbiAgICAgICAgICAgIFwiWW91IGhhdmUgdG8gdXNlIGZyb21LZXlBcm4gaW5zdGVhZCwgcGFzc2luZyBpdCB0aGUgQVJOIGF0dHJpYnV0ZSBwcm9wZXJ0eSBvZiB0aGUgbG93LWxldmVsIENmbktleVwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHJlLWVuc3VyZSBrZXkgcG9saWN5IHBvaW50cyB0byB0aGUgbmVzdGVkIEwyIFBvbGljeURvY3VtZW50XG4gICAgdGZLZXkucG9saWN5ID0ga2V5UG9saWN5Lmpzb247XG5cbiAgICByZXR1cm4gbmV3IChjbGFzcyBleHRlbmRzIEtleUJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGtleUFybiA9IHRmS2V5LmFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBrZXlJZCA9IHRmS2V5LmlkO1xuICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBvbGljeSA9IGtleVBvbGljeTtcbiAgICAgIHByb3RlY3RlZCByZWFkb25seSB0cnVzdEFjY291bnRJZGVudGl0aWVzID0gZmFsc2U7XG4gICAgfSkodGZLZXksIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgS2V5IGJ5IHF1ZXJ5aW5nIHRoZSBBV1MgZW52aXJvbm1lbnQgdGhpcyBzdGFjayBpcyBkZXBsb3llZCB0by5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBvbmx5IG5lZWRzIHRvIGJlIHVzZWQgdG8gdXNlIEtleXMgbm90IGRlZmluZWQgaW4geW91ciBDREtURlxuICAgKiBhcHBsaWNhdGlvbi4gSWYgeW91IGFyZSBsb29raW5nIHRvIHNoYXJlIGEgS2V5IGJldHdlZW4gc3RhY2tzLCB5b3UgY2FuXG4gICAqIHBhc3MgdGhlIGBLZXlgIG9iamVjdCBiZXR3ZWVuIHN0YWNrcyBhbmQgdXNlIGl0IGFzIG5vcm1hbC4gSW4gYWRkaXRpb24sXG4gICAqIGl0J3Mgbm90IG5lY2Vzc2FyeSB0byB1c2UgdGhpcyBtZXRob2QgaWYgYW4gaW50ZXJmYWNlIGFjY2VwdHMgYW4gYElLZXlgLlxuICAgKiBJbiB0aGlzIGNhc2UsIGBBbGlhcy5mcm9tQWxpYXNOYW1lKClgIGNhbiBiZSB1c2VkIHdoaWNoIHJldHVybnMgYW4gYWxpYXNcbiAgICogdGhhdCBleHRlbmRzIGBJS2V5YC5cbiAgICpcbiAgICogQ2FsbGluZyB0aGlzIG1ldGhvZCB3aWxsIGxlYWQgdG8gYSBsb29rdXAgd2hlbiB0aGUgQ0xJIGlzIGV4ZWN1dGVkLlxuICAgKiBZb3UgY2FuIHRoZXJlZm9yZSBub3QgdXNlIGFueSB2YWx1ZXMgdGhhdCB3aWxsIG9ubHkgYmUgYXZhaWxhYmxlIGF0XG4gICAqIFRlcnJhZm9ybSBleGVjdXRpb24gdGltZSAoaS5lLiwgVG9rZW5zKS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUxvb2t1cChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgb3B0aW9uczogS2V5TG9va3VwT3B0aW9ucyxcbiAgKTogSUtleSB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgS2V5QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkga2V5QXJuOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkga2V5SWQ6IHN0cmluZztcbiAgICAgIHB1YmxpYyByZWFkb25seSBkYXRhU291cmNlOiBkYXRhQXdzS21zS2V5LkRhdGFBd3NLbXNLZXk7XG4gICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9saWN5PzogaWFtLlBvbGljeURvY3VtZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgLy8gZGVmYXVsdGluZyB0cnVlOiBpZiB3ZSBhcmUgaW1wb3J0aW5nIHRoZSBrZXkgdGhlIGtleSBwb2xpY3kgaXNcbiAgICAgIC8vIHVuZGVmaW5lZCBhbmQgaW1wb3NzaWJsZSB0byBjaGFuZ2UgaGVyZTsgdGhpcyBtZWFucyB1cGRhdGluZyBpZGVudGl0eVxuICAgICAgLy8gcG9saWNpZXMgaXMgcmVhbGx5IHRoZSBvbmx5IG9wdGlvblxuICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRydXN0QWNjb3VudElkZW50aXRpZXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgICBjb25zdHJ1Y3RvcihrZXlJZDogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBkYXRhQXdzS21zS2V5LkRhdGFBd3NLbXNLZXkodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICAgICAga2V5SWQsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmtleUlkID0ga2V5SWQ7XG4gICAgICAgIHRoaXMua2V5QXJuID0gdGhpcy5kYXRhU291cmNlLmFybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChvcHRpb25zLmFsaWFzTmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJBbGwgYXJndW1lbnRzIHRvIEtleS5mcm9tTG9va3VwKCkgbXVzdCBiZSBjb25jcmV0ZSAobm8gVG9rZW5zKVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChvcHRpb25zLmFsaWFzTmFtZSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkga2V5QXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBrZXlJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGttc0tleS5LbXNLZXk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBvbGljeT86IGlhbS5Qb2xpY3lEb2N1bWVudDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRydXN0QWNjb3VudElkZW50aXRpZXM6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlS2V5Um90YXRpb24/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBLZXlQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBjb25zdCBkZW55TGlzdHMgPSB7XG4gICAgICBbS2V5VXNhZ2UuRU5DUllQVF9ERUNSWVBUXTogW1xuICAgICAgICBLZXlTcGVjLkVDQ19OSVNUX1AyNTYsXG4gICAgICAgIEtleVNwZWMuRUNDX05JU1RfUDM4NCxcbiAgICAgICAgS2V5U3BlYy5FQ0NfTklTVF9QNTIxLFxuICAgICAgICBLZXlTcGVjLkVDQ19TRUNHX1AyNTZLMSxcbiAgICAgICAgS2V5U3BlYy5ITUFDXzIyNCxcbiAgICAgICAgS2V5U3BlYy5ITUFDXzI1NixcbiAgICAgICAgS2V5U3BlYy5ITUFDXzM4NCxcbiAgICAgICAgS2V5U3BlYy5ITUFDXzUxMixcbiAgICAgIF0sXG4gICAgICBbS2V5VXNhZ2UuU0lHTl9WRVJJRlldOiBbXG4gICAgICAgIEtleVNwZWMuU1lNTUVUUklDX0RFRkFVTFQsXG4gICAgICAgIEtleVNwZWMuSE1BQ18yMjQsXG4gICAgICAgIEtleVNwZWMuSE1BQ18yNTYsXG4gICAgICAgIEtleVNwZWMuSE1BQ18zODQsXG4gICAgICAgIEtleVNwZWMuSE1BQ181MTIsXG4gICAgICBdLFxuICAgICAgW0tleVVzYWdlLkdFTkVSQVRFX1ZFUklGWV9NQUNdOiBbXG4gICAgICAgIEtleVNwZWMuUlNBXzIwNDgsXG4gICAgICAgIEtleVNwZWMuUlNBXzMwNzIsXG4gICAgICAgIEtleVNwZWMuUlNBXzQwOTYsXG4gICAgICAgIEtleVNwZWMuRUNDX05JU1RfUDI1NixcbiAgICAgICAgS2V5U3BlYy5FQ0NfTklTVF9QMzg0LFxuICAgICAgICBLZXlTcGVjLkVDQ19OSVNUX1A1MjEsXG4gICAgICAgIEtleVNwZWMuRUNDX1NFQ0dfUDI1NksxLFxuICAgICAgICBLZXlTcGVjLlNZTU1FVFJJQ19ERUZBVUxULFxuICAgICAgICBLZXlTcGVjLlNNMixcbiAgICAgIF0sXG4gICAgICBbS2V5VXNhZ2UuS0VZX0FHUkVFTUVOVF06IFtcbiAgICAgICAgS2V5U3BlYy5TWU1NRVRSSUNfREVGQVVMVCxcbiAgICAgICAgS2V5U3BlYy5SU0FfMjA0OCxcbiAgICAgICAgS2V5U3BlYy5SU0FfMzA3MixcbiAgICAgICAgS2V5U3BlYy5SU0FfNDA5NixcbiAgICAgICAgS2V5U3BlYy5FQ0NfU0VDR19QMjU2SzEsXG4gICAgICAgIEtleVNwZWMuSE1BQ18yMjQsXG4gICAgICAgIEtleVNwZWMuSE1BQ18yNTYsXG4gICAgICAgIEtleVNwZWMuSE1BQ18zODQsXG4gICAgICAgIEtleVNwZWMuSE1BQ181MTIsXG4gICAgICBdLFxuICAgIH07XG4gICAgY29uc3Qga2V5U3BlYyA9IHByb3BzLmtleVNwZWMgPz8gS2V5U3BlYy5TWU1NRVRSSUNfREVGQVVMVDtcbiAgICBjb25zdCBrZXlVc2FnZSA9IHByb3BzLmtleVVzYWdlID8/IEtleVVzYWdlLkVOQ1JZUFRfREVDUllQVDtcbiAgICBpZiAoZGVueUxpc3RzW2tleVVzYWdlXS5pbmNsdWRlcyhrZXlTcGVjKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBga2V5IHNwZWMgJyR7a2V5U3BlY30nIGlzIG5vdCB2YWxpZCB3aXRoIHVzYWdlICcke2tleVVzYWdlfSdgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoa2V5U3BlYy5zdGFydHNXaXRoKFwiSE1BQ1wiKSAmJiBwcm9wcy5lbmFibGVLZXlSb3RhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwia2V5IHJvdGF0aW9uIGNhbm5vdCBiZSBlbmFibGVkIG9uIEhNQUMga2V5c1wiKTtcbiAgICB9XG5cbiAgICBpZiAoa2V5U3BlYyAhPT0gS2V5U3BlYy5TWU1NRVRSSUNfREVGQVVMVCAmJiBwcm9wcy5lbmFibGVLZXlSb3RhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwia2V5IHJvdGF0aW9uIGNhbm5vdCBiZSBlbmFibGVkIG9uIGFzeW1tZXRyaWMga2V5c1wiKTtcbiAgICB9XG5cbiAgICB0aGlzLmVuYWJsZUtleVJvdGF0aW9uID0gcHJvcHMuZW5hYmxlS2V5Um90YXRpb247XG5cbiAgICBpZiAocHJvcHMucm90YXRpb25QZXJpb2QpIHtcbiAgICAgIGlmIChwcm9wcy5lbmFibGVLZXlSb3RhdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiJ3JvdGF0aW9uUGVyaW9kJyBjYW5ub3QgYmUgc3BlY2lmaWVkIHdoZW4gJ2VuYWJsZUtleVJvdGF0aW9uJyBpcyBkaXNhYmxlZFwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBwcm9wcy5yb3RhdGlvblBlcmlvZC50b0RheXMoKSA8IDkwIHx8XG4gICAgICAgIHByb3BzLnJvdGF0aW9uUGVyaW9kLnRvRGF5cygpID4gMjU2MFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJ3JvdGF0aW9uUGVyaW9kJyB2YWx1ZSBtdXN0IGJldHdlZW4gOTAgYW5kIDI2NTAgZGF5cy4gUmVjZWl2ZWQ6ICR7cHJvcHMucm90YXRpb25QZXJpb2QudG9EYXlzKCl9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIC8vIElmIHJvdGF0aW9uUGVyaW9kIGlzIHNwZWNpZmllZCwgZW5hYmxlS2V5Um90YXRpb24gaXMgc2V0IHRvIHRydWUgYnkgZGVmYXVsdFxuICAgICAgaWYgKHByb3BzLmVuYWJsZUtleVJvdGF0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5lbmFibGVLZXlSb3RhdGlvbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5wb2xpY3kgPSBwcm9wcy5wb2xpY3kgPz8gbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh0aGlzLCBcIlBvbGljeVwiKTtcbiAgICB0aGlzLnRydXN0QWNjb3VudElkZW50aXRpZXMgPSBwcm9wcy50cnVzdEFjY291bnRJZGVudGl0aWVzID8/IHRydWU7XG4gICAgaWYgKHRoaXMudHJ1c3RBY2NvdW50SWRlbnRpdGllcykge1xuICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IGtleSBwb2xpY3kgaWYgb25lIGhhc24ndCBiZWVuIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLlxuICAgICAgaWYgKCFwcm9wcy5wb2xpY3kpIHtcbiAgICAgICAgdGhpcy5hZGREZWZhdWx0QWRtaW5Qb2xpY3koKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRMZWdhY3lBZG1pblBvbGljeSgpO1xuICAgIH1cblxuICAgIGxldCBwZW5kaW5nV2luZG93SW5EYXlzO1xuICAgIGlmIChwcm9wcy5wZW5kaW5nV2luZG93KSB7XG4gICAgICBwZW5kaW5nV2luZG93SW5EYXlzID0gcHJvcHMucGVuZGluZ1dpbmRvdy50b0RheXMoKTtcbiAgICAgIGlmIChwZW5kaW5nV2luZG93SW5EYXlzIDwgNyB8fCBwZW5kaW5nV2luZG93SW5EYXlzID4gMzApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGAncGVuZGluZ1dpbmRvdycgdmFsdWUgbXVzdCBiZXR3ZWVuIDcgYW5kIDMwIGRheXMuIFJlY2VpdmVkOiAke3BlbmRpbmdXaW5kb3dJbkRheXN9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGttc0tleS5LbXNLZXkodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBlbmFibGVLZXlSb3RhdGlvbjogdGhpcy5lbmFibGVLZXlSb3RhdGlvbixcbiAgICAgIHJvdGF0aW9uUGVyaW9kSW5EYXlzOiBwcm9wcy5yb3RhdGlvblBlcmlvZD8udG9EYXlzKCksXG4gICAgICBpc0VuYWJsZWQ6IHByb3BzLmVuYWJsZWQsXG4gICAgICBjdXN0b21lck1hc3RlcktleVNwZWM6IHByb3BzLmtleVNwZWMsXG4gICAgICBrZXlVc2FnZTogcHJvcHMua2V5VXNhZ2UsXG4gICAgICBwb2xpY3k6IHRoaXMucG9saWN5Lmpzb24sXG4gICAgICBtdWx0aVJlZ2lvbjogcHJvcHMubXVsdGlSZWdpb24sXG4gICAgICBkZWxldGlvbldpbmRvd0luRGF5czogcGVuZGluZ1dpbmRvd0luRGF5cyxcbiAgICB9KTtcblxuICAgIHRoaXMua2V5QXJuID0gdGhpcy5yZXNvdXJjZS5hcm47XG4gICAgdGhpcy5rZXlJZCA9IHRoaXMucmVzb3VyY2UuaWQ7XG5cbiAgICAocHJvcHMuYWRtaW5zID8/IFtdKS5mb3JFYWNoKChwKSA9PiB0aGlzLmdyYW50QWRtaW4ocCkpO1xuXG4gICAgaWYgKHByb3BzLmFsaWFzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYWRkQWxpYXMocHJvcHMuYWxpYXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBhZG1pbnMgcGVybWlzc2lvbnMgdXNpbmcgdGhpcyBrZXkgdG8gdGhlIGdpdmVuIHByaW5jaXBhbFxuICAgKlxuICAgKiBLZXkgYWRtaW5pc3RyYXRvcnMgaGF2ZSBwZXJtaXNzaW9ucyB0byBtYW5hZ2UgdGhlIGtleSAoZS5nLiwgY2hhbmdlIHBlcm1pc3Npb25zLCByZXZva2UpLCBidXQgZG8gbm90IGhhdmUgcGVybWlzc2lvbnNcbiAgICogdG8gdXNlIHRoZSBrZXkgaW4gY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zIChlLmcuLCBlbmNyeXB0LCBkZWNyeXB0KS5cbiAgICovXG4gIHB1YmxpYyBncmFudEFkbWluKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAuLi5wZXJtcy5BRE1JTl9BQ1RJT05TKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBkZWZhdWx0IGtleSBwb2xpY3kgdG8gdGhlIGtleS4gVGhpcyBwb2xpY3kgZ2l2ZXMgdGhlIEFXUyBhY2NvdW50IChyb290IHVzZXIpIGZ1bGwgYWNjZXNzIHRvIHRoZSBDTUssXG4gICAqIHdoaWNoIHJlZHVjZXMgdGhlIHJpc2sgb2YgdGhlIENNSyBiZWNvbWluZyB1bm1hbmFnZWFibGUgYW5kIGVuYWJsZXMgSUFNIHBvbGljaWVzIHRvIGFsbG93IGFjY2VzcyB0byB0aGUgQ01LLlxuICAgKiBUaGlzIGlzIHRoZSBzYW1lIHBvbGljeSB0aGF0IGlzIGRlZmF1bHQgd2hlbiBjcmVhdGluZyBhIEtleSB2aWEgdGhlIEtNUyBBUEkgb3IgQ29uc29sZS5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9rZXktcG9saWNpZXMuaHRtbCNrZXktcG9saWN5LWRlZmF1bHRcbiAgICovXG4gIHByaXZhdGUgYWRkRGVmYXVsdEFkbWluUG9saWN5KCkge1xuICAgIHRoaXMuYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICBhY3Rpb25zOiBbXCJrbXM6KlwiXSxcbiAgICAgICAgcHJpbmNpcGFsczogW25ldyBpYW0uQWNjb3VudFJvb3RQcmluY2lwYWwoKV0sXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgYWNjb3VudCBhZG1pbiBwcml2aWxlZ2VzIC0tIG5vdCBmdWxsIGFjY291bnQgYWNjZXNzIC0tIHBsdXMgdGhlIEdlbmVyYXRlRGF0YUtleSBhY3Rpb24uXG4gICAqIFRoZSBHZW5lcmF0ZURhdGFLZXkgYWN0aW9uIHdhcyBhZGRlZCBmb3IgaW50ZXJvcCB3aXRoIFMzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvMzQ1OC5cbiAgICpcbiAgICogVGhpcyBwb2xpY3kgaXMgZGlzY291cmFnZWQuXG4gICAqXG4gICAqIEBsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2tleS1wb2xpY2llcy5odG1sI2tleS1wb2xpY3ktZGVmYXVsdFxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHJpdmF0ZSBhZGRMZWdhY3lBZG1pblBvbGljeSgpIHtcbiAgICAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYFsuLi5wZXJtcy5BRE1JTl9BQ1RJT05TLCAna21zOkdlbmVyYXRlRGF0YUtleSddYCxcbiAgICAvLyBidXQga2VlcGluZyB0aGlzIGV4cGxpY2l0IG9yZGVyaW5nIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSAoY2hhbmdpbmcgdGhlIG9yZGVyaW5nIGNhdXNlcyByZXNvdXJjZSB1cGRhdGVzKVxuICAgIGNvbnN0IGFjdGlvbnMgPSBbXG4gICAgICBcImttczpDcmVhdGUqXCIsXG4gICAgICBcImttczpEZXNjcmliZSpcIixcbiAgICAgIFwia21zOkVuYWJsZSpcIixcbiAgICAgIFwia21zOkxpc3QqXCIsXG4gICAgICBcImttczpQdXQqXCIsXG4gICAgICBcImttczpVcGRhdGUqXCIsXG4gICAgICBcImttczpSZXZva2UqXCIsXG4gICAgICBcImttczpEaXNhYmxlKlwiLFxuICAgICAgXCJrbXM6R2V0KlwiLFxuICAgICAgXCJrbXM6RGVsZXRlKlwiLFxuICAgICAgXCJrbXM6U2NoZWR1bGVLZXlEZWxldGlvblwiLFxuICAgICAgXCJrbXM6Q2FuY2VsS2V5RGVsZXRpb25cIixcbiAgICAgIFwia21zOkdlbmVyYXRlRGF0YUtleVwiLFxuICAgICAgXCJrbXM6VGFnUmVzb3VyY2VcIixcbiAgICAgIFwia21zOlVudGFnUmVzb3VyY2VcIixcbiAgICBdO1xuXG4gICAgdGhpcy5hZGRUb1Jlc291cmNlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgIGFjdGlvbnMsXG4gICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLkFjY291bnRSb290UHJpbmNpcGFsKCldLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -35,5 +35,5 @@ class ViaServicePrincipal extends iam.PrincipalBase {
35
35
  }
36
36
  exports.ViaServicePrincipal = ViaServicePrincipal;
37
37
  _a = JSII_RTTI_SYMBOL_1;
38
- ViaServicePrincipal[_a] = { fqn: "terraconstructs.aws.encryption.ViaServicePrincipal", version: "0.1.7" };
38
+ ViaServicePrincipal[_a] = { fqn: "terraconstructs.aws.encryption.ViaServicePrincipal", version: "0.1.9" };
39
39
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlhLXNlcnZpY2UtcHJpbmNpcGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9lbmNyeXB0aW9uL3ZpYS1zZXJ2aWNlLXByaW5jaXBhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdHQUF3RztBQUV4Ryw4QkFBOEI7QUFFOUI7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLEdBQUcsQ0FBQyxhQUFhO0lBR3hELFlBQ21CLFdBQW1CLEVBQ3BDLGFBQThCO1FBRTlCLEtBQUssRUFBRSxDQUFDO1FBSFMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFJcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUUsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixrRUFBa0U7UUFDbEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUM7UUFDL0MsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXhDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDZCxJQUFJLEVBQUUsY0FBYztZQUNwQixRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVNLFlBQVk7UUFDakIsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekUsT0FBTyxJQUFJLEtBQUssU0FBUztZQUN2QixDQUFDLENBQUMsdUJBQXVCLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxFQUFFO1lBQ25ELENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDaEIsQ0FBQzs7QUEvQkgsa0RBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvMi4xNzAuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3Mta21zL2xpYi92aWEtc2VydmljZS1wcmluY2lwYWwudHNcblxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCIuLi9pYW1cIjtcblxuLyoqXG4gKiBBIHByaW5jaXBhbCB0byBhbGxvdyBhY2Nlc3MgdG8gYSBrZXkgaWYgaXQncyBiZWluZyB1c2VkIHRocm91Z2ggYW5vdGhlciBBV1Mgc2VydmljZVxuICovXG5leHBvcnQgY2xhc3MgVmlhU2VydmljZVByaW5jaXBhbCBleHRlbmRzIGlhbS5QcmluY2lwYWxCYXNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlUHJpbmNpcGFsOiBpYW0uSVByaW5jaXBhbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgYmFzZVByaW5jaXBhbD86IGlhbS5JUHJpbmNpcGFsLFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYmFzZVByaW5jaXBhbCA9IGJhc2VQcmluY2lwYWwgPyBiYXNlUHJpbmNpcGFsIDogbmV3IGlhbS5BbnlQcmluY2lwYWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcG9saWN5RnJhZ21lbnQoKTogaWFtLlByaW5jaXBhbFBvbGljeUZyYWdtZW50IHtcbiAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgYmFzZSBwb2xpY3lGcmFnbWVudCB0byBhZGQgYSBjb25kaXRpb24gdG8gaXRcbiAgICBjb25zdCBiYXNlID0gdGhpcy5iYXNlUHJpbmNpcGFsLnBvbGljeUZyYWdtZW50O1xuICAgIGNvbnN0IGNvbmRpdGlvbnMgPSBbLi4uYmFzZS5jb25kaXRpb25zXTtcbiAgICBjb25zdCBwcmluY2lwYWxzID0gWy4uLmJhc2UucHJpbmNpcGFsc107XG5cbiAgICBjb25kaXRpb25zLnB1c2goe1xuICAgICAgdGVzdDogXCJTdHJpbmdFcXVhbHNcIixcbiAgICAgIHZhcmlhYmxlOiBcImttczpWaWFTZXJ2aWNlXCIsXG4gICAgICB2YWx1ZXM6IFt0aGlzLnNlcnZpY2VOYW1lXSxcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgaWFtLlByaW5jaXBhbFBvbGljeUZyYWdtZW50KHByaW5jaXBhbHMsIGNvbmRpdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGRlZHVwZVN0cmluZygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGJhc2UgPSBpYW0uQ29tcGFyYWJsZVByaW5jaXBhbC5kZWR1cGVTdHJpbmdGb3IodGhpcy5iYXNlUHJpbmNpcGFsKTtcbiAgICByZXR1cm4gYmFzZSAhPT0gdW5kZWZpbmVkXG4gICAgICA/IGBWaWFTZXJ2aWNlUHJpbmNpcGFsOiR7dGhpcy5zZXJ2aWNlTmFtZX06JHtiYXNlfWBcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=