@cdk_utils/iam 1.29.0 → 1.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (471) hide show
  1. package/.jsii +2 -2
  2. package/lib/generated/index.d.ts +1 -0
  3. package/lib/generated/index.js +7 -6
  4. package/lib/generated/services/a2c.js +1 -1
  5. package/lib/generated/services/a4b.js +3 -3
  6. package/lib/generated/services/access-analyzer.js +4 -4
  7. package/lib/generated/services/account-access.js +4 -4
  8. package/lib/generated/services/account.js +4 -4
  9. package/lib/generated/services/acm-pca.js +4 -4
  10. package/lib/generated/services/acm.js +4 -4
  11. package/lib/generated/services/aco-automation.js +4 -4
  12. package/lib/generated/services/action-recommendations.js +1 -1
  13. package/lib/generated/services/activate.js +1 -1
  14. package/lib/generated/services/agent-registry.js +4 -4
  15. package/lib/generated/services/agentaccess-mcp.js +2 -2
  16. package/lib/generated/services/aidevops.js +4 -4
  17. package/lib/generated/services/aiops.js +4 -4
  18. package/lib/generated/services/airflow-serverless.js +4 -4
  19. package/lib/generated/services/airflow.js +4 -4
  20. package/lib/generated/services/amplify.js +4 -4
  21. package/lib/generated/services/amplifybackend.js +3 -3
  22. package/lib/generated/services/amplifyuibuilder.js +4 -4
  23. package/lib/generated/services/aoss.js +4 -4
  24. package/lib/generated/services/apigateway.js +4 -4
  25. package/lib/generated/services/app-integrations.js +4 -4
  26. package/lib/generated/services/appconfig.js +4 -4
  27. package/lib/generated/services/appfabric.js +4 -4
  28. package/lib/generated/services/appflow.js +4 -4
  29. package/lib/generated/services/application-autoscaling.js +4 -4
  30. package/lib/generated/services/application-signals-mcp.js +3 -3
  31. package/lib/generated/services/application-signals.js +4 -4
  32. package/lib/generated/services/application-transformation.js +1 -1
  33. package/lib/generated/services/applicationinsights.js +3 -3
  34. package/lib/generated/services/appmesh-preview.js +2 -2
  35. package/lib/generated/services/appmesh.js +4 -4
  36. package/lib/generated/services/apprunner.js +4 -4
  37. package/lib/generated/services/appstream.js +4 -4
  38. package/lib/generated/services/appstudio.js +2 -2
  39. package/lib/generated/services/appsync.js +4 -4
  40. package/lib/generated/services/apptest.js +3 -3
  41. package/lib/generated/services/aps.js +4 -4
  42. package/lib/generated/services/arc-region-switch.js +4 -4
  43. package/lib/generated/services/arc-zonal-shift.js +4 -4
  44. package/lib/generated/services/arsenal.js +1 -1
  45. package/lib/generated/services/artifact.js +4 -4
  46. package/lib/generated/services/athena.js +4 -4
  47. package/lib/generated/services/auditmanager.js +4 -4
  48. package/lib/generated/services/autoscaling-plans.js +2 -2
  49. package/lib/generated/services/autoscaling.js +4 -4
  50. package/lib/generated/services/aws-external-anthropic.d.ts +24 -0
  51. package/lib/generated/services/aws-external-anthropic.js +44 -4
  52. package/lib/generated/services/aws-marketplace-management.js +1 -1
  53. package/lib/generated/services/aws-marketplace.js +4 -4
  54. package/lib/generated/services/aws-portal.js +1 -1
  55. package/lib/generated/services/awsconnector.js +1 -1
  56. package/lib/generated/services/b2bi.js +4 -4
  57. package/lib/generated/services/backup-gateway.js +4 -4
  58. package/lib/generated/services/backup-search.js +4 -4
  59. package/lib/generated/services/backup-storage.js +1 -1
  60. package/lib/generated/services/backup.js +4 -4
  61. package/lib/generated/services/batch.js +4 -4
  62. package/lib/generated/services/bcm-dashboards.js +4 -4
  63. package/lib/generated/services/bcm-data-exports.js +4 -4
  64. package/lib/generated/services/bcm-pricing-calculator.js +4 -4
  65. package/lib/generated/services/bcm-recommended-actions.js +2 -2
  66. package/lib/generated/services/bedrock-agentcore.js +4 -4
  67. package/lib/generated/services/bedrock-mantle.js +3 -3
  68. package/lib/generated/services/bedrock-websearch.js +2 -2
  69. package/lib/generated/services/bedrock.js +4 -4
  70. package/lib/generated/services/billing.d.ts +4 -0
  71. package/lib/generated/services/billing.js +12 -5
  72. package/lib/generated/services/billingconductor.js +4 -4
  73. package/lib/generated/services/braket.js +4 -4
  74. package/lib/generated/services/budgets.js +4 -4
  75. package/lib/generated/services/bugbust.js +3 -3
  76. package/lib/generated/services/cases.js +4 -4
  77. package/lib/generated/services/cassandra.js +4 -4
  78. package/lib/generated/services/ce.js +4 -4
  79. package/lib/generated/services/chatbot.js +4 -4
  80. package/lib/generated/services/chime.js +4 -4
  81. package/lib/generated/services/cleanrooms-ml.js +4 -4
  82. package/lib/generated/services/cleanrooms.js +4 -4
  83. package/lib/generated/services/cloud9.js +4 -4
  84. package/lib/generated/services/clouddirectory.js +3 -3
  85. package/lib/generated/services/cloudformation.js +4 -4
  86. package/lib/generated/services/cloudfront-keyvaluestore.js +3 -3
  87. package/lib/generated/services/cloudfront.js +4 -4
  88. package/lib/generated/services/cloudhsm.js +4 -4
  89. package/lib/generated/services/cloudsearch.js +3 -3
  90. package/lib/generated/services/cloudshell.js +3 -3
  91. package/lib/generated/services/cloudtrail-data.js +4 -4
  92. package/lib/generated/services/cloudtrail.js +4 -4
  93. package/lib/generated/services/cloudwatch.d.ts +10 -0
  94. package/lib/generated/services/cloudwatch.js +19 -6
  95. package/lib/generated/services/codeartifact.js +4 -4
  96. package/lib/generated/services/codebuild.js +4 -4
  97. package/lib/generated/services/codecatalyst.js +4 -4
  98. package/lib/generated/services/codecommit.js +4 -4
  99. package/lib/generated/services/codeconnections.js +4 -4
  100. package/lib/generated/services/codedeploy-commands-secure.js +1 -1
  101. package/lib/generated/services/codedeploy.js +4 -4
  102. package/lib/generated/services/codeguru-profiler.js +4 -4
  103. package/lib/generated/services/codeguru-reviewer.js +4 -4
  104. package/lib/generated/services/codeguru-security.js +4 -4
  105. package/lib/generated/services/codeguru.js +1 -1
  106. package/lib/generated/services/codepipeline.js +4 -4
  107. package/lib/generated/services/codestar-connections.js +4 -4
  108. package/lib/generated/services/codestar-notifications.js +4 -4
  109. package/lib/generated/services/codestar.js +3 -3
  110. package/lib/generated/services/codewhisperer.js +3 -3
  111. package/lib/generated/services/cognito-identity.js +4 -4
  112. package/lib/generated/services/cognito-idp.js +4 -4
  113. package/lib/generated/services/cognito-sync.js +3 -3
  114. package/lib/generated/services/comprehend.js +4 -4
  115. package/lib/generated/services/comprehendmedical.js +3 -3
  116. package/lib/generated/services/compute-optimizer.js +3 -3
  117. package/lib/generated/services/config.js +4 -4
  118. package/lib/generated/services/connect-campaigns.js +4 -4
  119. package/lib/generated/services/connect.js +4 -4
  120. package/lib/generated/services/consoleapp.js +2 -2
  121. package/lib/generated/services/consolidatedbilling.js +1 -1
  122. package/lib/generated/services/controlcatalog.js +3 -3
  123. package/lib/generated/services/controltower.js +4 -4
  124. package/lib/generated/services/cost-optimization-hub.js +2 -2
  125. package/lib/generated/services/cur.js +4 -4
  126. package/lib/generated/services/customer-verification.js +1 -1
  127. package/lib/generated/services/databrew.js +4 -4
  128. package/lib/generated/services/dataexchange.js +4 -4
  129. package/lib/generated/services/datapipeline.js +4 -4
  130. package/lib/generated/services/datasync.js +4 -4
  131. package/lib/generated/services/datazone.d.ts +28 -0
  132. package/lib/generated/services/datazone.js +47 -5
  133. package/lib/generated/services/dax.js +4 -4
  134. package/lib/generated/services/dbqms.js +1 -1
  135. package/lib/generated/services/deadline.js +4 -4
  136. package/lib/generated/services/detective.js +4 -4
  137. package/lib/generated/services/devicefarm.js +4 -4
  138. package/lib/generated/services/devops-guru.js +4 -4
  139. package/lib/generated/services/directconnect.js +4 -4
  140. package/lib/generated/services/discovery.js +3 -3
  141. package/lib/generated/services/dlm.js +4 -4
  142. package/lib/generated/services/dms.js +4 -4
  143. package/lib/generated/services/docdb-elastic.js +4 -4
  144. package/lib/generated/services/drs.js +4 -4
  145. package/lib/generated/services/ds-data.js +4 -4
  146. package/lib/generated/services/ds.js +4 -4
  147. package/lib/generated/services/dsql.js +4 -4
  148. package/lib/generated/services/dynamodb.js +4 -4
  149. package/lib/generated/services/ebs.js +4 -4
  150. package/lib/generated/services/ec2-instance-connect.js +4 -4
  151. package/lib/generated/services/ec2.js +4 -4
  152. package/lib/generated/services/ec2messages.js +2 -2
  153. package/lib/generated/services/ecr-public.js +4 -4
  154. package/lib/generated/services/ecr.js +4 -4
  155. package/lib/generated/services/ecs-mcp.js +1 -1
  156. package/lib/generated/services/ecs.js +4 -4
  157. package/lib/generated/services/eks-auth.js +4 -4
  158. package/lib/generated/services/eks-mcp.js +1 -1
  159. package/lib/generated/services/eks.js +4 -4
  160. package/lib/generated/services/elasticache.d.ts +10 -0
  161. package/lib/generated/services/elasticache.js +26 -7
  162. package/lib/generated/services/elasticbeanstalk.js +4 -4
  163. package/lib/generated/services/elasticfilesystem.js +4 -4
  164. package/lib/generated/services/elasticloadbalancing.js +4 -4
  165. package/lib/generated/services/elasticmapreduce.js +4 -4
  166. package/lib/generated/services/elastictranscoder.js +2 -2
  167. package/lib/generated/services/elemental-activations.js +1 -1
  168. package/lib/generated/services/elemental-appliances-software.js +2 -2
  169. package/lib/generated/services/elemental-inference.d.ts +6 -0
  170. package/lib/generated/services/elemental-inference.js +23 -8
  171. package/lib/generated/services/elemental-support-cases.js +3 -3
  172. package/lib/generated/services/elemental-support-content.js +1 -1
  173. package/lib/generated/services/emr-containers.js +4 -4
  174. package/lib/generated/services/emr-serverless.js +4 -4
  175. package/lib/generated/services/entityresolution.js +4 -4
  176. package/lib/generated/services/es.js +4 -4
  177. package/lib/generated/services/events.d.ts +247 -0
  178. package/lib/generated/services/events.js +285 -5
  179. package/lib/generated/services/eventsbilltoaws.js +3 -3
  180. package/lib/generated/services/evidently.js +3 -3
  181. package/lib/generated/services/evs.js +4 -4
  182. package/lib/generated/services/execute-api.js +4 -4
  183. package/lib/generated/services/finops-agent.js +1 -1
  184. package/lib/generated/services/finspace-api.js +3 -3
  185. package/lib/generated/services/finspace.js +4 -4
  186. package/lib/generated/services/firehose.js +4 -4
  187. package/lib/generated/services/fis.js +4 -4
  188. package/lib/generated/services/fms.js +4 -4
  189. package/lib/generated/services/forecast.js +4 -4
  190. package/lib/generated/services/frauddetector.js +4 -4
  191. package/lib/generated/services/freertos.js +3 -3
  192. package/lib/generated/services/freetier.js +2 -2
  193. package/lib/generated/services/fsx.js +4 -4
  194. package/lib/generated/services/gamelift.js +4 -4
  195. package/lib/generated/services/gameliftstreams.js +4 -4
  196. package/lib/generated/services/geo-maps.js +3 -3
  197. package/lib/generated/services/geo-places.js +3 -3
  198. package/lib/generated/services/geo-routes.js +3 -3
  199. package/lib/generated/services/geo.js +4 -4
  200. package/lib/generated/services/glacier.js +4 -4
  201. package/lib/generated/services/globalaccelerator.js +4 -4
  202. package/lib/generated/services/glue.js +4 -4
  203. package/lib/generated/services/grafana.js +4 -4
  204. package/lib/generated/services/greengrass.js +4 -4
  205. package/lib/generated/services/groundstation.js +4 -4
  206. package/lib/generated/services/groundtruthlabeling.js +1 -1
  207. package/lib/generated/services/guardduty.js +4 -4
  208. package/lib/generated/services/health-agent.js +4 -4
  209. package/lib/generated/services/health.js +4 -4
  210. package/lib/generated/services/healthlake.js +4 -4
  211. package/lib/generated/services/honeycode.js +2 -2
  212. package/lib/generated/services/iam.js +4 -4
  213. package/lib/generated/services/identity-sync.js +2 -2
  214. package/lib/generated/services/identitystore-auth.js +1 -1
  215. package/lib/generated/services/identitystore.d.ts +6 -0
  216. package/lib/generated/services/identitystore.js +15 -5
  217. package/lib/generated/services/imagebuilder.js +4 -4
  218. package/lib/generated/services/importexport.js +2 -2
  219. package/lib/generated/services/inspector-scan.js +2 -2
  220. package/lib/generated/services/inspector.js +2 -2
  221. package/lib/generated/services/inspector2-telemetry.js +1 -1
  222. package/lib/generated/services/inspector2.js +4 -4
  223. package/lib/generated/services/interconnect.js +4 -4
  224. package/lib/generated/services/internetmonitor.js +4 -4
  225. package/lib/generated/services/invoicing.js +4 -4
  226. package/lib/generated/services/iot-device-tester.js +1 -1
  227. package/lib/generated/services/iot.js +4 -4
  228. package/lib/generated/services/iotanalytics.js +3 -3
  229. package/lib/generated/services/iotdeviceadvisor.js +4 -4
  230. package/lib/generated/services/iotevents.js +3 -3
  231. package/lib/generated/services/iotfleethub.js +3 -3
  232. package/lib/generated/services/iotfleetwise.js +4 -4
  233. package/lib/generated/services/iotjobsdata.js +4 -4
  234. package/lib/generated/services/iotmanagedintegrations.js +4 -4
  235. package/lib/generated/services/iotsitewise.js +4 -4
  236. package/lib/generated/services/iottwinmaker.js +4 -4
  237. package/lib/generated/services/iotwireless.js +4 -4
  238. package/lib/generated/services/iq-permission.js +2 -2
  239. package/lib/generated/services/iq.js +2 -2
  240. package/lib/generated/services/ivs.js +4 -4
  241. package/lib/generated/services/ivschat.js +4 -4
  242. package/lib/generated/services/kafka-cluster.js +3 -3
  243. package/lib/generated/services/kafka.js +4 -4
  244. package/lib/generated/services/kafkaconnect.js +4 -4
  245. package/lib/generated/services/kendra-ranking.js +4 -4
  246. package/lib/generated/services/kendra.js +4 -4
  247. package/lib/generated/services/kinesis.d.ts +4 -0
  248. package/lib/generated/services/kinesis.js +12 -5
  249. package/lib/generated/services/kinesisanalytics.js +4 -4
  250. package/lib/generated/services/kinesisvideo.js +4 -4
  251. package/lib/generated/services/kms.js +4 -4
  252. package/lib/generated/services/lakeformation.js +3 -3
  253. package/lib/generated/services/lambda.js +4 -4
  254. package/lib/generated/services/launchwizard.js +4 -4
  255. package/lib/generated/services/lex.js +4 -4
  256. package/lib/generated/services/license-manager-linux-subscriptions.js +4 -4
  257. package/lib/generated/services/license-manager-user-subscriptions.js +4 -4
  258. package/lib/generated/services/license-manager.js +4 -4
  259. package/lib/generated/services/lightsail.js +4 -4
  260. package/lib/generated/services/logs.js +4 -4
  261. package/lib/generated/services/lookoutequipment.js +4 -4
  262. package/lib/generated/services/lookoutmetrics.js +3 -3
  263. package/lib/generated/services/lookoutvision.js +3 -3
  264. package/lib/generated/services/m2.js +4 -4
  265. package/lib/generated/services/machinelearning.js +3 -3
  266. package/lib/generated/services/macie2.js +4 -4
  267. package/lib/generated/services/managedblockchain-query.js +2 -2
  268. package/lib/generated/services/managedblockchain.js +4 -4
  269. package/lib/generated/services/mapcredits.js +2 -2
  270. package/lib/generated/services/marketplacecommerceanalytics.js +2 -2
  271. package/lib/generated/services/mechanicalturk.js +2 -2
  272. package/lib/generated/services/mediaconnect.js +4 -4
  273. package/lib/generated/services/mediaconvert.js +4 -4
  274. package/lib/generated/services/mediaimport.js +1 -1
  275. package/lib/generated/services/medialive.js +4 -4
  276. package/lib/generated/services/mediapackage-vod.js +4 -4
  277. package/lib/generated/services/mediapackage.js +4 -4
  278. package/lib/generated/services/mediapackagev2.js +4 -4
  279. package/lib/generated/services/mediastore.js +4 -4
  280. package/lib/generated/services/mediatailor.js +4 -4
  281. package/lib/generated/services/medical-imaging.js +4 -4
  282. package/lib/generated/services/memorydb.js +4 -4
  283. package/lib/generated/services/mgh.js +4 -4
  284. package/lib/generated/services/mgn.js +4 -4
  285. package/lib/generated/services/migrationhub-orchestrator.js +4 -4
  286. package/lib/generated/services/migrationhub-strategy.js +2 -2
  287. package/lib/generated/services/mobileanalytics.js +1 -1
  288. package/lib/generated/services/mobiletargeting.js +4 -4
  289. package/lib/generated/services/monitron.js +3 -3
  290. package/lib/generated/services/mpa.js +4 -4
  291. package/lib/generated/services/mq.js +4 -4
  292. package/lib/generated/services/neptune-db.js +4 -4
  293. package/lib/generated/services/neptune-graph.js +4 -4
  294. package/lib/generated/services/network-firewall.js +4 -4
  295. package/lib/generated/services/network-security-director.js +1 -1
  296. package/lib/generated/services/network-security-manager.d.ts +674 -0
  297. package/lib/generated/services/network-security-manager.js +778 -0
  298. package/lib/generated/services/networkflowmonitor.js +4 -4
  299. package/lib/generated/services/networkmanager-chat.js +1 -1
  300. package/lib/generated/services/networkmanager.js +4 -4
  301. package/lib/generated/services/networkmonitor.js +4 -4
  302. package/lib/generated/services/nimble.js +3 -3
  303. package/lib/generated/services/notifications-contacts.js +4 -4
  304. package/lib/generated/services/notifications.js +4 -4
  305. package/lib/generated/services/nova-act.js +3 -3
  306. package/lib/generated/services/oam.js +37 -20
  307. package/lib/generated/services/observabilityadmin.js +5 -8
  308. package/lib/generated/services/odb.js +4 -4
  309. package/lib/generated/services/omics.js +4 -4
  310. package/lib/generated/services/one.js +3 -3
  311. package/lib/generated/services/opensearch.js +3 -3
  312. package/lib/generated/services/opsworks-cm.js +2 -2
  313. package/lib/generated/services/opsworks.js +2 -2
  314. package/lib/generated/services/organizations.js +4 -4
  315. package/lib/generated/services/osis.js +4 -4
  316. package/lib/generated/services/outposts.js +4 -4
  317. package/lib/generated/services/panorama.js +3 -3
  318. package/lib/generated/services/partnercentral-account-management.js +2 -2
  319. package/lib/generated/services/partnercentral.js +4 -4
  320. package/lib/generated/services/payment-cryptography.js +4 -4
  321. package/lib/generated/services/payments.js +3 -3
  322. package/lib/generated/services/pca-connector-ad.js +4 -4
  323. package/lib/generated/services/pca-connector-scep.js +4 -4
  324. package/lib/generated/services/pcs.js +4 -4
  325. package/lib/generated/services/personalize.js +4 -4
  326. package/lib/generated/services/pi.js +4 -4
  327. package/lib/generated/services/pipes.js +4 -4
  328. package/lib/generated/services/polly.js +3 -3
  329. package/lib/generated/services/pricing.js +2 -2
  330. package/lib/generated/services/pricingplanmanager.js +3 -3
  331. package/lib/generated/services/private-networks.js +3 -3
  332. package/lib/generated/services/profile.js +4 -4
  333. package/lib/generated/services/proton.js +4 -4
  334. package/lib/generated/services/purchase-orders.js +3 -3
  335. package/lib/generated/services/q.js +3 -3
  336. package/lib/generated/services/qapps.js +4 -4
  337. package/lib/generated/services/qbusiness.js +4 -4
  338. package/lib/generated/services/qdeveloper.js +3 -3
  339. package/lib/generated/services/qldb.js +3 -3
  340. package/lib/generated/services/quicksight.js +4 -4
  341. package/lib/generated/services/ram.js +4 -4
  342. package/lib/generated/services/rbin.js +4 -4
  343. package/lib/generated/services/rds-data.js +4 -4
  344. package/lib/generated/services/rds-db.js +2 -2
  345. package/lib/generated/services/rds.js +4 -4
  346. package/lib/generated/services/redshift-data.js +4 -4
  347. package/lib/generated/services/redshift-serverless.js +4 -4
  348. package/lib/generated/services/redshift.js +4 -4
  349. package/lib/generated/services/refactor-spaces.js +4 -4
  350. package/lib/generated/services/rekognition.js +4 -4
  351. package/lib/generated/services/repostspace.js +4 -4
  352. package/lib/generated/services/researchstudio.js +1 -1
  353. package/lib/generated/services/resiliencehub.js +4 -4
  354. package/lib/generated/services/resource-explorer-2.js +4 -4
  355. package/lib/generated/services/resource-explorer.js +1 -1
  356. package/lib/generated/services/resource-groups.js +4 -4
  357. package/lib/generated/services/rhelkb.js +1 -1
  358. package/lib/generated/services/robomaker.js +3 -3
  359. package/lib/generated/services/rolesanywhere.js +4 -4
  360. package/lib/generated/services/route53-recovery-cluster.js +4 -4
  361. package/lib/generated/services/route53-recovery-control-config.js +4 -4
  362. package/lib/generated/services/route53-recovery-readiness.js +4 -4
  363. package/lib/generated/services/route53.js +4 -4
  364. package/lib/generated/services/route53domains.js +2 -2
  365. package/lib/generated/services/route53globalresolver.js +4 -4
  366. package/lib/generated/services/route53profiles.js +4 -4
  367. package/lib/generated/services/route53resolver.js +4 -4
  368. package/lib/generated/services/rtbfabric.js +4 -4
  369. package/lib/generated/services/rum.js +4 -4
  370. package/lib/generated/services/s3-object-lambda.js +3 -3
  371. package/lib/generated/services/s3-outposts.js +4 -4
  372. package/lib/generated/services/s3.js +4 -4
  373. package/lib/generated/services/s3express.js +3 -3
  374. package/lib/generated/services/s3files.js +4 -4
  375. package/lib/generated/services/s3tables.js +4 -4
  376. package/lib/generated/services/s3vectors.js +4 -4
  377. package/lib/generated/services/sagemaker-data-science-assistant.js +1 -1
  378. package/lib/generated/services/sagemaker-geospatial.js +4 -4
  379. package/lib/generated/services/sagemaker-mlflow.js +3 -3
  380. package/lib/generated/services/sagemaker-unified-studio-mcp.js +1 -1
  381. package/lib/generated/services/sagemaker.js +4 -4
  382. package/lib/generated/services/savingsplans.js +4 -4
  383. package/lib/generated/services/scheduler.js +4 -4
  384. package/lib/generated/services/schemas.js +4 -4
  385. package/lib/generated/services/scn.js +4 -4
  386. package/lib/generated/services/sdb.js +3 -3
  387. package/lib/generated/services/secretsmanager.js +4 -4
  388. package/lib/generated/services/security-ir.js +4 -4
  389. package/lib/generated/services/securityagent.d.ts +2 -0
  390. package/lib/generated/services/securityagent.js +8 -5
  391. package/lib/generated/services/securityhub.js +4 -4
  392. package/lib/generated/services/securitylake.js +4 -4
  393. package/lib/generated/services/serverlessrepo.js +4 -4
  394. package/lib/generated/services/servicecatalog.js +4 -4
  395. package/lib/generated/services/servicediscovery.js +4 -4
  396. package/lib/generated/services/serviceextract.js +1 -1
  397. package/lib/generated/services/servicequotas.js +4 -4
  398. package/lib/generated/services/ses.js +4 -4
  399. package/lib/generated/services/shield.js +4 -4
  400. package/lib/generated/services/signer.js +4 -4
  401. package/lib/generated/services/signin.js +4 -4
  402. package/lib/generated/services/simspaceweaver.js +3 -3
  403. package/lib/generated/services/sms-voice.js +4 -4
  404. package/lib/generated/services/sms.js +1 -1
  405. package/lib/generated/services/snow-device-management.js +4 -4
  406. package/lib/generated/services/snowball.js +2 -2
  407. package/lib/generated/services/sns.js +4 -4
  408. package/lib/generated/services/social-messaging.js +4 -4
  409. package/lib/generated/services/sqlworkbench.js +3 -3
  410. package/lib/generated/services/sqs.js +4 -4
  411. package/lib/generated/services/ssm-contacts.js +4 -4
  412. package/lib/generated/services/ssm-guiconnect.js +2 -2
  413. package/lib/generated/services/ssm-incidents.js +4 -4
  414. package/lib/generated/services/ssm-quicksetup.js +4 -4
  415. package/lib/generated/services/ssm-sap.js +4 -4
  416. package/lib/generated/services/ssm.js +4 -4
  417. package/lib/generated/services/ssmmessages.js +2 -2
  418. package/lib/generated/services/sso-directory.js +1 -1
  419. package/lib/generated/services/sso-oauth.js +3 -3
  420. package/lib/generated/services/sso.js +4 -4
  421. package/lib/generated/services/states.js +4 -4
  422. package/lib/generated/services/storagegateway.js +4 -4
  423. package/lib/generated/services/sts.js +4 -4
  424. package/lib/generated/services/support-console.js +1 -1
  425. package/lib/generated/services/support.js +2 -2
  426. package/lib/generated/services/supportapp.js +2 -2
  427. package/lib/generated/services/supportauthz.js +4 -4
  428. package/lib/generated/services/supportplans.js +1 -1
  429. package/lib/generated/services/sustainability.js +2 -2
  430. package/lib/generated/services/swf.js +4 -4
  431. package/lib/generated/services/synthetics.js +4 -4
  432. package/lib/generated/services/tag.js +2 -2
  433. package/lib/generated/services/tax.js +2 -2
  434. package/lib/generated/services/textract.js +4 -4
  435. package/lib/generated/services/thinclient.js +4 -4
  436. package/lib/generated/services/timestream-influxdb.js +4 -4
  437. package/lib/generated/services/timestream.js +4 -4
  438. package/lib/generated/services/tiros.js +1 -1
  439. package/lib/generated/services/tnb.js +4 -4
  440. package/lib/generated/services/transcribe.js +4 -4
  441. package/lib/generated/services/transfer.js +4 -4
  442. package/lib/generated/services/transform-custom.js +3 -3
  443. package/lib/generated/services/transform.js +3 -3
  444. package/lib/generated/services/translate.js +4 -4
  445. package/lib/generated/services/trustedadvisor.js +3 -3
  446. package/lib/generated/services/ts.js +3 -3
  447. package/lib/generated/services/user-subscriptions.js +2 -2
  448. package/lib/generated/services/uxc.js +2 -2
  449. package/lib/generated/services/vendor-insights.js +3 -3
  450. package/lib/generated/services/verified-access.js +1 -1
  451. package/lib/generated/services/verifiedpermissions.js +4 -4
  452. package/lib/generated/services/voiceid.js +4 -4
  453. package/lib/generated/services/vpc-lattice-svcs.js +3 -3
  454. package/lib/generated/services/vpc-lattice.js +4 -4
  455. package/lib/generated/services/vpce.js +2 -2
  456. package/lib/generated/services/waf-regional.js +4 -4
  457. package/lib/generated/services/waf.js +4 -4
  458. package/lib/generated/services/wafv2.js +4 -4
  459. package/lib/generated/services/wam.js +1 -1
  460. package/lib/generated/services/wellarchitected.js +4 -4
  461. package/lib/generated/services/wickr.js +4 -4
  462. package/lib/generated/services/wisdom.js +4 -4
  463. package/lib/generated/services/workdocs.js +3 -3
  464. package/lib/generated/services/worklink.js +3 -3
  465. package/lib/generated/services/workmail.js +4 -4
  466. package/lib/generated/services/workmailmessageflow.js +3 -3
  467. package/lib/generated/services/workspaces-instances.js +4 -4
  468. package/lib/generated/services/workspaces-web.js +4 -4
  469. package/lib/generated/services/workspaces.js +4 -4
  470. package/lib/generated/services/xray.js +4 -4
  471. package/package.json +1 -1
@@ -16,7 +16,7 @@ class EventsActions {
16
16
  }
17
17
  exports.EventsActions = EventsActions;
18
18
  _a = JSII_RTTI_SYMBOL_1;
19
- EventsActions[_a] = { fqn: "@cdk_utils/iam.events.EventsActions", version: "1.29.0" };
19
+ EventsActions[_a] = { fqn: "@cdk_utils/iam.events.EventsActions", version: "1.31.0" };
20
20
  /** The IAM service prefix. */
21
21
  EventsActions.SERVICE_PREFIX = "events";
22
22
  /** [Write] events:ActivateEventSource */
@@ -35,8 +35,12 @@ EventsActions.CreateConnection = "events:CreateConnection";
35
35
  EventsActions.CreateEndpoint = "events:CreateEndpoint";
36
36
  /** [Write] events:CreateEventBus */
37
37
  EventsActions.CreateEventBus = "events:CreateEventBus";
38
+ /** [Write] events:CreateEventSource */
39
+ EventsActions.CreateEventSource = "events:CreateEventSource";
38
40
  /** [Write] events:CreatePartnerEventSource */
39
41
  EventsActions.CreatePartnerEventSource = "events:CreatePartnerEventSource";
42
+ /** [Write] events:CreateSubscriber */
43
+ EventsActions.CreateSubscriber = "events:CreateSubscriber";
40
44
  /** [Write] events:DeactivateEventSource */
41
45
  EventsActions.DeactivateEventSource = "events:DeactivateEventSource";
42
46
  /** [Write] events:DeauthorizeConnection */
@@ -51,10 +55,16 @@ EventsActions.DeleteConnection = "events:DeleteConnection";
51
55
  EventsActions.DeleteEndpoint = "events:DeleteEndpoint";
52
56
  /** [Write] events:DeleteEventBus */
53
57
  EventsActions.DeleteEventBus = "events:DeleteEventBus";
58
+ /** [Write] events:DeleteEventSource */
59
+ EventsActions.DeleteEventSource = "events:DeleteEventSource";
54
60
  /** [Write] events:DeletePartnerEventSource */
55
61
  EventsActions.DeletePartnerEventSource = "events:DeletePartnerEventSource";
62
+ /** [PermissionManagement] events:DeleteResourcePolicy */
63
+ EventsActions.DeleteResourcePolicy = "events:DeleteResourcePolicy";
56
64
  /** [Write] events:DeleteRule */
57
65
  EventsActions.DeleteRule = "events:DeleteRule";
66
+ /** [Write] events:DeleteSubscriber */
67
+ EventsActions.DeleteSubscriber = "events:DeleteSubscriber";
58
68
  /** [Read] events:DescribeApiDestination */
59
69
  EventsActions.DescribeApiDestination = "events:DescribeApiDestination";
60
70
  /** [Read] events:DescribeArchive */
@@ -73,10 +83,14 @@ EventsActions.DescribePartnerEventSource = "events:DescribePartnerEventSource";
73
83
  EventsActions.DescribeReplay = "events:DescribeReplay";
74
84
  /** [Read] events:DescribeRule */
75
85
  EventsActions.DescribeRule = "events:DescribeRule";
86
+ /** [Read] events:DescribeSubscriber */
87
+ EventsActions.DescribeSubscriber = "events:DescribeSubscriber";
76
88
  /** [Write] events:DisableRule */
77
89
  EventsActions.DisableRule = "events:DisableRule";
78
90
  /** [Write] events:EnableRule */
79
91
  EventsActions.EnableRule = "events:EnableRule";
92
+ /** [Read] events:GetResourcePolicy */
93
+ EventsActions.actionGetResourcePolicy = "events:GetResourcePolicy";
80
94
  /** [Write] events:InvokeApiDestination */
81
95
  EventsActions.InvokeApiDestination = "events:InvokeApiDestination";
82
96
  /** [List] events:ListApiDestinations */
@@ -97,10 +111,14 @@ EventsActions.ListPartnerEventSourceAccounts = "events:ListPartnerEventSourceAcc
97
111
  EventsActions.ListPartnerEventSources = "events:ListPartnerEventSources";
98
112
  /** [List] events:ListReplays */
99
113
  EventsActions.ListReplays = "events:ListReplays";
114
+ /** [List] events:ListResourcePolicies */
115
+ EventsActions.ListResourcePolicies = "events:ListResourcePolicies";
100
116
  /** [List] events:ListRuleNamesByTarget */
101
117
  EventsActions.ListRuleNamesByTarget = "events:ListRuleNamesByTarget";
102
118
  /** [List] events:ListRules */
103
119
  EventsActions.ListRules = "events:ListRules";
120
+ /** [List] events:ListSubscribers */
121
+ EventsActions.ListSubscribers = "events:ListSubscribers";
104
122
  /** [List] events:ListTagsForResource */
105
123
  EventsActions.ListTagsForResource = "events:ListTagsForResource";
106
124
  /** [List] events:ListTargetsByRule */
@@ -111,6 +129,10 @@ EventsActions.PutEvents = "events:PutEvents";
111
129
  EventsActions.PutPartnerEvents = "events:PutPartnerEvents";
112
130
  /** [PermissionManagement] events:PutPermission */
113
131
  EventsActions.PutPermission = "events:PutPermission";
132
+ /** [Write] events:PutRawEvents */
133
+ EventsActions.PutRawEvents = "events:PutRawEvents";
134
+ /** [PermissionManagement] events:PutResourcePolicy */
135
+ EventsActions.PutResourcePolicy = "events:PutResourcePolicy";
114
136
  /** [Write] events:PutRule */
115
137
  EventsActions.PutRule = "events:PutRule";
116
138
  /** [Write] events:PutTargets */
@@ -121,6 +143,8 @@ EventsActions.RemovePermission = "events:RemovePermission";
121
143
  EventsActions.RemoveTargets = "events:RemoveTargets";
122
144
  /** [Write] events:RetrieveConnectionCredentials */
123
145
  EventsActions.RetrieveConnectionCredentials = "events:RetrieveConnectionCredentials";
146
+ /** [Write] events:RevokeResource */
147
+ EventsActions.RevokeResource = "events:RevokeResource";
124
148
  /** [Write] events:StartReplay */
125
149
  EventsActions.StartReplay = "events:StartReplay";
126
150
  /** [Tagging] events:TagResource */
@@ -139,6 +163,10 @@ EventsActions.UpdateConnection = "events:UpdateConnection";
139
163
  EventsActions.UpdateEndpoint = "events:UpdateEndpoint";
140
164
  /** [Write] events:UpdateEventBus */
141
165
  EventsActions.UpdateEventBus = "events:UpdateEventBus";
166
+ /** [Write] events:UpdateEventSource */
167
+ EventsActions.UpdateEventSource = "events:UpdateEventSource";
168
+ /** [Write] events:UpdateSubscriber */
169
+ EventsActions.UpdateSubscriber = "events:UpdateSubscriber";
142
170
  /** All read-level actions. */
143
171
  EventsActions.AllReadActions = [
144
172
  EventsActions.DescribeApiDestination,
@@ -150,6 +178,8 @@ EventsActions.AllReadActions = [
150
178
  EventsActions.DescribePartnerEventSource,
151
179
  EventsActions.DescribeReplay,
152
180
  EventsActions.DescribeRule,
181
+ EventsActions.DescribeSubscriber,
182
+ EventsActions.actionGetResourcePolicy,
153
183
  EventsActions.TestEventPattern,
154
184
  ];
155
185
  /** All write-level actions. */
@@ -162,7 +192,9 @@ EventsActions.AllWriteActions = [
162
192
  EventsActions.CreateConnection,
163
193
  EventsActions.CreateEndpoint,
164
194
  EventsActions.CreateEventBus,
195
+ EventsActions.CreateEventSource,
165
196
  EventsActions.CreatePartnerEventSource,
197
+ EventsActions.CreateSubscriber,
166
198
  EventsActions.DeactivateEventSource,
167
199
  EventsActions.DeauthorizeConnection,
168
200
  EventsActions.DeleteApiDestination,
@@ -170,23 +202,29 @@ EventsActions.AllWriteActions = [
170
202
  EventsActions.DeleteConnection,
171
203
  EventsActions.DeleteEndpoint,
172
204
  EventsActions.DeleteEventBus,
205
+ EventsActions.DeleteEventSource,
173
206
  EventsActions.DeletePartnerEventSource,
174
207
  EventsActions.DeleteRule,
208
+ EventsActions.DeleteSubscriber,
175
209
  EventsActions.DisableRule,
176
210
  EventsActions.EnableRule,
177
211
  EventsActions.InvokeApiDestination,
178
212
  EventsActions.PutEvents,
179
213
  EventsActions.PutPartnerEvents,
214
+ EventsActions.PutRawEvents,
180
215
  EventsActions.PutRule,
181
216
  EventsActions.PutTargets,
182
217
  EventsActions.RemoveTargets,
183
218
  EventsActions.RetrieveConnectionCredentials,
219
+ EventsActions.RevokeResource,
184
220
  EventsActions.StartReplay,
185
221
  EventsActions.UpdateApiDestination,
186
222
  EventsActions.UpdateArchive,
187
223
  EventsActions.UpdateConnection,
188
224
  EventsActions.UpdateEndpoint,
189
225
  EventsActions.UpdateEventBus,
226
+ EventsActions.UpdateEventSource,
227
+ EventsActions.UpdateSubscriber,
190
228
  ];
191
229
  /** All list-level actions. */
192
230
  EventsActions.AllListActions = [
@@ -199,14 +237,18 @@ EventsActions.AllListActions = [
199
237
  EventsActions.ListPartnerEventSourceAccounts,
200
238
  EventsActions.ListPartnerEventSources,
201
239
  EventsActions.ListReplays,
240
+ EventsActions.ListResourcePolicies,
202
241
  EventsActions.ListRuleNamesByTarget,
203
242
  EventsActions.ListRules,
243
+ EventsActions.ListSubscribers,
204
244
  EventsActions.ListTagsForResource,
205
245
  EventsActions.ListTargetsByRule,
206
246
  ];
207
247
  /** All permission-management-level actions. */
208
248
  EventsActions.AllPermissionManagementActions = [
249
+ EventsActions.DeleteResourcePolicy,
209
250
  EventsActions.PutPermission,
251
+ EventsActions.PutResourcePolicy,
210
252
  EventsActions.RemovePermission,
211
253
  ];
212
254
  /** All tagging-level actions. */
@@ -221,13 +263,16 @@ const ConnectionArnRegex = /^arn:(?<partition>[^:]+):events:(?<region>[^:]*):(?<
221
263
  const CreateSnapshotArnRegex = /^arn:(?<partition>[^:]+):events:(?<region>[^:]*):(?<account>[^:]*):target\/create-snapshot$/;
222
264
  const EndpointArnRegex = /^arn:(?<partition>[^:]+):events:(?<region>[^:]*):(?<account>[^:]*):endpoint\/(?<endpointName>[^:/?]+)$/;
223
265
  const EventBusArnRegex = /^arn:(?<partition>[^:]+):events:(?<region>[^:]*):(?<account>[^:]*):event-bus\/(?<eventBusName>[^:/?]+)$/;
266
+ const EventBusv2ArnRegex = /^arn:(?<partition>[^:]+):events:(?<region>[^:]*):(?<account>[^:]*):event-busv2\/(?<eventBusName>[^:/?]+)\/(?<opaqueId>[^:/?]+)$/;
224
267
  const EventSourceArnRegex = /^arn:(?<partition>[^:]+):events:(?<region>[^:]*)::event-source\/(?<eventSourceName>[^:/?]+)$/;
268
+ const EventSourcev2ArnRegex = /^arn:(?<partition>[^:]+):events:(?<region>[^:]*):(?<account>[^:]*):event-sourcev2\/(?<sourceType>[^:/?]+)\/(?<eventSourceName>[^:/?]+)\/(?<opaqueId>[^:/?]+)$/;
225
269
  const KeyArnRegex = /^arn:(?<partition>[^:]+):kms:(?<region>[^:]*):(?<account>[^:]*):key\/(?<keyId>[^:/?]+)$/;
226
270
  const RebootInstanceArnRegex = /^arn:(?<partition>[^:]+):events:(?<region>[^:]*):(?<account>[^:]*):target\/reboot-instance$/;
227
271
  const ReplayArnRegex = /^arn:(?<partition>[^:]+):events:(?<region>[^:]*):(?<account>[^:]*):replay\/(?<replayName>[^:/?]+)$/;
228
272
  const RuleOnCustomEventBusArnRegex = /^arn:(?<partition>[^:]+):events:(?<region>[^:]*):(?<account>[^:]*):rule\/(?<eventBusName>[^:/?]+)\/(?<ruleName>[^:/?]+)$/;
229
273
  const RuleOnDefaultEventBusArnRegex = /^arn:(?<partition>[^:]+):events:(?<region>[^:]*):(?<account>[^:]*):rule\/(?<ruleName>[^:/?]+)$/;
230
274
  const StopInstanceArnRegex = /^arn:(?<partition>[^:]+):events:(?<region>[^:]*):(?<account>[^:]*):target\/stop-instance$/;
275
+ const SubscriberArnRegex = /^arn:(?<partition>[^:]+):events:(?<region>[^:]*):(?<account>[^:]*):subscriber\/(?<subscriberName>[^:/?]+)\/(?<opaqueId>[^:/?]+)$/;
231
276
  const TerminateInstanceArnRegex = /^arn:(?<partition>[^:]+):events:(?<region>[^:]*):(?<account>[^:]*):target\/terminate-instance$/;
232
277
  /**
233
278
  * ARN builders, validators, and parsers for events resources.
@@ -428,6 +473,35 @@ class EventsResources {
428
473
  eventBusName: match.groups.eventBusName,
429
474
  };
430
475
  }
476
+ /**
477
+ * Builds an ARN for the event-busv2 resource.
478
+ */
479
+ static eventBusv2(props) {
480
+ return `arn:${props.partition ?? "aws"}:events:${props.region ?? "*"}:${props.account ?? "*"}:event-busv2/${props.eventBusName}/${props.opaqueId}`;
481
+ }
482
+ /**
483
+ * Validates whether a string is a valid ARN for the event-busv2 resource.
484
+ */
485
+ static isValidEventBusv2Arn(arn) {
486
+ return EventBusv2ArnRegex.test(arn);
487
+ }
488
+ /**
489
+ * Parses a event-busv2 ARN into its components.
490
+ * @throws Error if the ARN does not match the expected format.
491
+ */
492
+ static parseEventBusv2Arn(arn) {
493
+ const match = EventBusv2ArnRegex.exec(arn);
494
+ if (!match?.groups) {
495
+ throw new Error(`Invalid event-busv2 ARN: ${arn}`);
496
+ }
497
+ return {
498
+ partition: match.groups.partition,
499
+ region: match.groups.region,
500
+ account: match.groups.account,
501
+ eventBusName: match.groups.eventBusName,
502
+ opaqueId: match.groups.opaqueId,
503
+ };
504
+ }
431
505
  /**
432
506
  * Builds an ARN for the event-source resource.
433
507
  */
@@ -456,6 +530,36 @@ class EventsResources {
456
530
  eventSourceName: match.groups.eventSourceName,
457
531
  };
458
532
  }
533
+ /**
534
+ * Builds an ARN for the event-sourcev2 resource.
535
+ */
536
+ static eventSourcev2(props) {
537
+ return `arn:${props.partition ?? "aws"}:events:${props.region ?? "*"}:${props.account ?? "*"}:event-sourcev2/${props.sourceType}/${props.eventSourceName}/${props.opaqueId}`;
538
+ }
539
+ /**
540
+ * Validates whether a string is a valid ARN for the event-sourcev2 resource.
541
+ */
542
+ static isValidEventSourcev2Arn(arn) {
543
+ return EventSourcev2ArnRegex.test(arn);
544
+ }
545
+ /**
546
+ * Parses a event-sourcev2 ARN into its components.
547
+ * @throws Error if the ARN does not match the expected format.
548
+ */
549
+ static parseEventSourcev2Arn(arn) {
550
+ const match = EventSourcev2ArnRegex.exec(arn);
551
+ if (!match?.groups) {
552
+ throw new Error(`Invalid event-sourcev2 ARN: ${arn}`);
553
+ }
554
+ return {
555
+ partition: match.groups.partition,
556
+ region: match.groups.region,
557
+ account: match.groups.account,
558
+ sourceType: match.groups.sourceType,
559
+ eventSourceName: match.groups.eventSourceName,
560
+ opaqueId: match.groups.opaqueId,
561
+ };
562
+ }
459
563
  /**
460
564
  * Builds an ARN for the key resource.
461
565
  */
@@ -623,6 +727,35 @@ class EventsResources {
623
727
  account: match.groups.account,
624
728
  };
625
729
  }
730
+ /**
731
+ * Builds an ARN for the subscriber resource.
732
+ */
733
+ static subscriber(props) {
734
+ return `arn:${props.partition ?? "aws"}:events:${props.region ?? "*"}:${props.account ?? "*"}:subscriber/${props.subscriberName}/${props.opaqueId}`;
735
+ }
736
+ /**
737
+ * Validates whether a string is a valid ARN for the subscriber resource.
738
+ */
739
+ static isValidSubscriberArn(arn) {
740
+ return SubscriberArnRegex.test(arn);
741
+ }
742
+ /**
743
+ * Parses a subscriber ARN into its components.
744
+ * @throws Error if the ARN does not match the expected format.
745
+ */
746
+ static parseSubscriberArn(arn) {
747
+ const match = SubscriberArnRegex.exec(arn);
748
+ if (!match?.groups) {
749
+ throw new Error(`Invalid subscriber ARN: ${arn}`);
750
+ }
751
+ return {
752
+ partition: match.groups.partition,
753
+ region: match.groups.region,
754
+ account: match.groups.account,
755
+ subscriberName: match.groups.subscriberName,
756
+ opaqueId: match.groups.opaqueId,
757
+ };
758
+ }
626
759
  /**
627
760
  * Builds an ARN for the terminate-instance resource.
628
761
  */
@@ -653,7 +786,7 @@ class EventsResources {
653
786
  }
654
787
  exports.EventsResources = EventsResources;
655
788
  _b = JSII_RTTI_SYMBOL_1;
656
- EventsResources[_b] = { fqn: "@cdk_utils/iam.events.EventsResources", version: "1.29.0" };
789
+ EventsResources[_b] = { fqn: "@cdk_utils/iam.events.EventsResources", version: "1.31.0" };
657
790
  /**
658
791
  * API operation to required IAM actions mapping for events.
659
792
  */
@@ -661,7 +794,7 @@ class EventsOperations {
661
794
  }
662
795
  exports.EventsOperations = EventsOperations;
663
796
  _c = JSII_RTTI_SYMBOL_1;
664
- EventsOperations[_c] = { fqn: "@cdk_utils/iam.events.EventsOperations", version: "1.29.0" };
797
+ EventsOperations[_c] = { fqn: "@cdk_utils/iam.events.EventsOperations", version: "1.31.0" };
665
798
  /** IAM actions required for the ActivateEventSource API call. */
666
799
  EventsOperations.ActivateEventSource = [
667
800
  "events:ActivateEventSource",
@@ -686,10 +819,21 @@ EventsOperations.CreateEventBus = [
686
819
  "events:CreateEventBus",
687
820
  "events:TagResource",
688
821
  ];
822
+ /** IAM actions required for the CreateEventSource API call. */
823
+ EventsOperations.CreateEventSource = [
824
+ "events:CreateEventSource",
825
+ "events:TagResource",
826
+ ];
689
827
  /** IAM actions required for the CreatePartnerEventSource API call. */
690
828
  EventsOperations.CreatePartnerEventSource = [
691
829
  "events:CreatePartnerEventSource",
692
830
  ];
831
+ /** IAM actions required for the CreateSubscriber API call. */
832
+ EventsOperations.CreateSubscriber = [
833
+ "events:CreateSubscriber",
834
+ "iam:PassRole",
835
+ "events:TagResource",
836
+ ];
693
837
  /** IAM actions required for the DeactivateEventSource API call. */
694
838
  EventsOperations.DeactivateEventSource = [
695
839
  "events:DeactivateEventSource",
@@ -710,12 +854,20 @@ EventsOperations.DeleteConnection = ["events:DeleteConnection"];
710
854
  EventsOperations.DeleteEndpoint = ["events:DeleteEndpoint"];
711
855
  /** IAM actions required for the DeleteEventBus API call. */
712
856
  EventsOperations.DeleteEventBus = ["events:DeleteEventBus"];
857
+ /** IAM actions required for the DeleteEventSource API call. */
858
+ EventsOperations.DeleteEventSource = ["events:DeleteEventSource"];
713
859
  /** IAM actions required for the DeletePartnerEventSource API call. */
714
860
  EventsOperations.DeletePartnerEventSource = [
715
861
  "events:DeletePartnerEventSource",
716
862
  ];
863
+ /** IAM actions required for the DeleteResourcePolicy API call. */
864
+ EventsOperations.DeleteResourcePolicy = [
865
+ "events:DeleteResourcePolicy",
866
+ ];
717
867
  /** IAM actions required for the DeleteRule API call. */
718
868
  EventsOperations.DeleteRule = ["events:DeleteRule"];
869
+ /** IAM actions required for the DeleteSubscriber API call. */
870
+ EventsOperations.DeleteSubscriber = ["events:DeleteSubscriber"];
719
871
  /** IAM actions required for the DescribeApiDestination API call. */
720
872
  EventsOperations.DescribeApiDestination = [
721
873
  "events:DescribeApiDestination",
@@ -740,10 +892,14 @@ EventsOperations.DescribePartnerEventSource = [
740
892
  EventsOperations.DescribeReplay = ["events:DescribeReplay"];
741
893
  /** IAM actions required for the DescribeRule API call. */
742
894
  EventsOperations.DescribeRule = ["events:DescribeRule"];
895
+ /** IAM actions required for the DescribeSubscriber API call. */
896
+ EventsOperations.DescribeSubscriber = ["events:DescribeSubscriber"];
743
897
  /** IAM actions required for the DisableRule API call. */
744
898
  EventsOperations.DisableRule = ["events:DisableRule"];
745
899
  /** IAM actions required for the EnableRule API call. */
746
900
  EventsOperations.EnableRule = ["events:EnableRule"];
901
+ /** IAM actions required for the GetResourcePolicy API call. */
902
+ EventsOperations.opGetResourcePolicy = ["events:GetResourcePolicy"];
747
903
  /** IAM actions required for the ListApiDestinations API call. */
748
904
  EventsOperations.ListApiDestinations = [
749
905
  "events:ListApiDestinations",
@@ -768,12 +924,18 @@ EventsOperations.ListPartnerEventSources = [
768
924
  ];
769
925
  /** IAM actions required for the ListReplays API call. */
770
926
  EventsOperations.ListReplays = ["events:ListReplays"];
927
+ /** IAM actions required for the ListResourcePolicies API call. */
928
+ EventsOperations.ListResourcePolicies = [
929
+ "events:ListResourcePolicies",
930
+ ];
771
931
  /** IAM actions required for the ListRuleNamesByTarget API call. */
772
932
  EventsOperations.ListRuleNamesByTarget = [
773
933
  "events:ListRuleNamesByTarget",
774
934
  ];
775
935
  /** IAM actions required for the ListRules API call. */
776
936
  EventsOperations.ListRules = ["events:ListRules"];
937
+ /** IAM actions required for the ListSubscribers API call. */
938
+ EventsOperations.ListSubscribers = ["events:ListSubscribers"];
777
939
  /** IAM actions required for the ListTagsForResource API call. */
778
940
  EventsOperations.ListTagsForResource = [
779
941
  "events:ListTagsForResource",
@@ -786,6 +948,10 @@ EventsOperations.PutEvents = ["events:PutEvents"];
786
948
  EventsOperations.PutPartnerEvents = ["events:PutPartnerEvents"];
787
949
  /** IAM actions required for the PutPermission API call. */
788
950
  EventsOperations.PutPermission = ["events:PutPermission"];
951
+ /** IAM actions required for the PutRawEvents API call. */
952
+ EventsOperations.PutRawEvents = ["events:PutRawEvents"];
953
+ /** IAM actions required for the PutResourcePolicy API call. */
954
+ EventsOperations.PutResourcePolicy = ["events:PutResourcePolicy"];
789
955
  /** IAM actions required for the PutRule API call. */
790
956
  EventsOperations.PutRule = [
791
957
  "iam:PassRole",
@@ -798,6 +964,8 @@ EventsOperations.PutTargets = ["iam:PassRole", "events:PutTargets"];
798
964
  EventsOperations.RemovePermission = ["events:RemovePermission"];
799
965
  /** IAM actions required for the RemoveTargets API call. */
800
966
  EventsOperations.RemoveTargets = ["events:RemoveTargets"];
967
+ /** IAM actions required for the RevokeResource API call. */
968
+ EventsOperations.RevokeResource = ["events:RevokeResource"];
801
969
  /** IAM actions required for the StartReplay API call. */
802
970
  EventsOperations.StartReplay = ["events:StartReplay"];
803
971
  /** IAM actions required for the TagResource API call. */
@@ -821,6 +989,13 @@ EventsOperations.UpdateEndpoint = [
821
989
  ];
822
990
  /** IAM actions required for the UpdateEventBus API call. */
823
991
  EventsOperations.UpdateEventBus = ["events:UpdateEventBus"];
992
+ /** IAM actions required for the UpdateEventSource API call. */
993
+ EventsOperations.UpdateEventSource = ["events:UpdateEventSource"];
994
+ /** IAM actions required for the UpdateSubscriber API call. */
995
+ EventsOperations.UpdateSubscriber = [
996
+ "iam:PassRole",
997
+ "events:UpdateSubscriber",
998
+ ];
824
999
  /**
825
1000
  * Condition key constants and builders for events.
826
1001
  */
@@ -843,6 +1018,12 @@ class EventsConditions {
843
1018
  static tagKeys(values) {
844
1019
  return { "ForAllValues:StringEquals": { "aws:TagKeys": values } };
845
1020
  }
1021
+ /**
1022
+ * Generates a condition block for `events:ContentFilterPresent`.
1023
+ */
1024
+ static contentFilterPresent(value) {
1025
+ return { Bool: { "events:ContentFilterPresent": value } };
1026
+ }
846
1027
  /**
847
1028
  * Generates a condition block for `events:EventBusArn`.
848
1029
  */
@@ -855,6 +1036,46 @@ class EventsConditions {
855
1036
  static managedBy(value) {
856
1037
  return { StringEquals: { "events:ManagedBy": value } };
857
1038
  }
1039
+ /**
1040
+ * Generates a condition block for `events:Metadata/${MetadataKey}`.
1041
+ */
1042
+ static metadata(values) {
1043
+ return {
1044
+ "ForAllValues:StringEquals": { "events:Metadata/${MetadataKey}": values },
1045
+ };
1046
+ }
1047
+ /**
1048
+ * Generates a condition block for `events:Metadata/${MetadataKey}/Matcher`.
1049
+ */
1050
+ static metadataMatcher(value) {
1051
+ return {
1052
+ StringEquals: { "events:Metadata/${MetadataKey}/Matcher": value },
1053
+ };
1054
+ }
1055
+ /**
1056
+ * Generates a condition block for `events:PolicyName`.
1057
+ */
1058
+ static policyName(value) {
1059
+ return { StringEquals: { "events:PolicyName": value } };
1060
+ }
1061
+ /**
1062
+ * Generates a condition block for `events:SystemMetadata/AwsDetailType`.
1063
+ */
1064
+ static systemMetadataAWSDetailType(value) {
1065
+ return { StringEquals: { "events:SystemMetadata/AwsDetailType": value } };
1066
+ }
1067
+ /**
1068
+ * Generates a condition block for `events:SystemMetadata/AwsSource`.
1069
+ */
1070
+ static systemMetadataAWSSource(value) {
1071
+ return { StringEquals: { "events:SystemMetadata/AwsSource": value } };
1072
+ }
1073
+ /**
1074
+ * Generates a condition block for `events:SystemMetadata/ContentType`.
1075
+ */
1076
+ static systemMetadataContentType(value) {
1077
+ return { StringEquals: { "events:SystemMetadata/ContentType": value } };
1078
+ }
858
1079
  /**
859
1080
  * Generates a condition block for `events:TargetArn`.
860
1081
  */
@@ -908,7 +1129,7 @@ class EventsConditions {
908
1129
  }
909
1130
  exports.EventsConditions = EventsConditions;
910
1131
  _d = JSII_RTTI_SYMBOL_1;
911
- EventsConditions[_d] = { fqn: "@cdk_utils/iam.events.EventsConditions", version: "1.29.0" };
1132
+ EventsConditions[_d] = { fqn: "@cdk_utils/iam.events.EventsConditions", version: "1.31.0" };
912
1133
  /** Condition keys applicable to the CreateEndpoint action. */
913
1134
  EventsConditions.CreateEndpointConditionKeys = [
914
1135
  "events:EventBusArn",
@@ -918,6 +1139,24 @@ EventsConditions.CreateEventBusConditionKeys = [
918
1139
  "aws:RequestTag/${TagKey}",
919
1140
  "aws:TagKeys",
920
1141
  ];
1142
+ /** Condition keys applicable to the CreateEventSource action. */
1143
+ EventsConditions.CreateEventSourceConditionKeys = [
1144
+ "aws:RequestTag/${TagKey}",
1145
+ "aws:TagKeys",
1146
+ "events:source",
1147
+ ];
1148
+ /** Condition keys applicable to the CreateSubscriber action. */
1149
+ EventsConditions.CreateSubscriberConditionKeys = [
1150
+ "aws:RequestTag/${TagKey}",
1151
+ "aws:TagKeys",
1152
+ "events:ContentFilterPresent",
1153
+ "events:Metadata/${MetadataKey}",
1154
+ "events:Metadata/${MetadataKey}/Matcher",
1155
+ ];
1156
+ /** Condition keys applicable to the DeleteResourcePolicy action. */
1157
+ EventsConditions.DeleteResourcePolicyConditionKeys = [
1158
+ "events:PolicyName",
1159
+ ];
921
1160
  /** Condition keys applicable to the DeleteRule action. */
922
1161
  EventsConditions.DeleteRuleConditionKeys = [
923
1162
  "events:ManagedBy",
@@ -937,6 +1176,10 @@ EventsConditions.EnableRuleConditionKeys = [
937
1176
  "events:ManagedBy",
938
1177
  "events:creatorAccount",
939
1178
  ];
1179
+ /** Condition keys applicable to the GetResourcePolicy action. */
1180
+ EventsConditions.actionGetResourcePolicyConditionKeys = [
1181
+ "events:PolicyName",
1182
+ ];
940
1183
  /** Condition keys applicable to the ListTagsForResource action. */
941
1184
  EventsConditions.ListTagsForResourceConditionKeys = [
942
1185
  "events:creatorAccount",
@@ -947,10 +1190,25 @@ EventsConditions.ListTargetsByRuleConditionKeys = [
947
1190
  ];
948
1191
  /** Condition keys applicable to the PutEvents action. */
949
1192
  EventsConditions.PutEventsConditionKeys = [
1193
+ "events:SystemMetadata/AwsDetailType",
1194
+ "events:SystemMetadata/AwsSource",
1195
+ "events:SystemMetadata/ContentType",
950
1196
  "events:detail-type",
951
1197
  "events:eventBusInvocation",
952
1198
  "events:source",
953
1199
  ];
1200
+ /** Condition keys applicable to the PutRawEvents action. */
1201
+ EventsConditions.PutRawEventsConditionKeys = [
1202
+ "events:Metadata/${MetadataKey}",
1203
+ "events:SystemMetadata/AwsDetailType",
1204
+ "events:SystemMetadata/AwsSource",
1205
+ "events:SystemMetadata/ContentType",
1206
+ "events:eventBusInvocation",
1207
+ ];
1208
+ /** Condition keys applicable to the PutResourcePolicy action. */
1209
+ EventsConditions.PutResourcePolicyConditionKeys = [
1210
+ "events:PolicyName",
1211
+ ];
954
1212
  /** Condition keys applicable to the PutRule action. */
955
1213
  EventsConditions.PutRuleConditionKeys = [
956
1214
  "aws:RequestTag/${TagKey}",
@@ -989,16 +1247,38 @@ EventsConditions.UntagResourceConditionKeys = [
989
1247
  EventsConditions.UpdateEndpointConditionKeys = [
990
1248
  "events:EventBusArn",
991
1249
  ];
1250
+ /** Condition keys applicable to the UpdateEventSource action. */
1251
+ EventsConditions.UpdateEventSourceConditionKeys = ["events:source"];
1252
+ /** Condition keys applicable to the UpdateSubscriber action. */
1253
+ EventsConditions.UpdateSubscriberConditionKeys = [
1254
+ "events:ContentFilterPresent",
1255
+ "events:Metadata/${MetadataKey}",
1256
+ "events:Metadata/${MetadataKey}/Matcher",
1257
+ ];
992
1258
  /** Condition key: aws:RequestTag/${TagKey} (String) */
993
1259
  EventsConditions.AWS_REQUEST_TAG = "aws:RequestTag/${TagKey}";
994
1260
  /** Condition key: aws:ResourceTag/${TagKey} (String) */
995
1261
  EventsConditions.AWS_RESOURCE_TAG = "aws:ResourceTag/${TagKey}";
996
1262
  /** Condition key: aws:TagKeys (ArrayOfString) */
997
1263
  EventsConditions.AWS_TAG_KEYS = "aws:TagKeys";
1264
+ /** Condition key: events:ContentFilterPresent (Bool) */
1265
+ EventsConditions.CONTENT_FILTER_PRESENT = "events:ContentFilterPresent";
998
1266
  /** Condition key: events:EventBusArn (ArrayOfARN) */
999
1267
  EventsConditions.EVENT_BUS_ARN = "events:EventBusArn";
1000
1268
  /** Condition key: events:ManagedBy (String) */
1001
1269
  EventsConditions.MANAGED_BY = "events:ManagedBy";
1270
+ /** Condition key: events:Metadata/${MetadataKey} (ArrayOfString) */
1271
+ EventsConditions.METADATA = "events:Metadata/${MetadataKey}";
1272
+ /** Condition key: events:Metadata/${MetadataKey}/Matcher (String) */
1273
+ EventsConditions.METADATA_MATCHER = "events:Metadata/${MetadataKey}/Matcher";
1274
+ /** Condition key: events:PolicyName (String) */
1275
+ EventsConditions.POLICY_NAME = "events:PolicyName";
1276
+ /** Condition key: events:SystemMetadata/AwsDetailType (String) */
1277
+ EventsConditions.SYSTEM_METADATA_AWS_DETAIL_TYPE = "events:SystemMetadata/AwsDetailType";
1278
+ /** Condition key: events:SystemMetadata/AwsSource (String) */
1279
+ EventsConditions.SYSTEM_METADATA_AWS_SOURCE = "events:SystemMetadata/AwsSource";
1280
+ /** Condition key: events:SystemMetadata/ContentType (String) */
1281
+ EventsConditions.SYSTEM_METADATA_CONTENT_TYPE = "events:SystemMetadata/ContentType";
1002
1282
  /** Condition key: events:TargetArn (ArrayOfARN) */
1003
1283
  EventsConditions.TARGET_ARN = "events:TargetArn";
1004
1284
  /** Condition key: events:creatorAccount (String) */
@@ -1015,4 +1295,4 @@ EventsConditions.DETAIL_USER_IDENTITY_PRINCIPAL_ID = "events:detail.userIdentity
1015
1295
  EventsConditions.EVENT_BUS_INVOCATION = "events:eventBusInvocation";
1016
1296
  /** Condition key: events:source (ArrayOfString) */
1017
1297
  EventsConditions.SOURCE = "events:source";
1018
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9zZXJ2aWNlcy9ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRkFBZ0Y7QUFDaEYsNkNBQTZDO0FBQzdDLDBEQUEwRDtBQUMxRCw2Q0FBNkM7QUFDN0Msb0RBQW9EO0FBQ3BELGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQWEsYUFBYTs7QUFBMUIsc0NBNE1DOzs7QUEzTUEsOEJBQThCO0FBQ2QsNEJBQWMsR0FBRyxRQUFRLENBQUM7QUFFMUMseUNBQXlDO0FBQ3pCLGlDQUFtQixHQUFHLDRCQUE0QixDQUFDO0FBQ25FLHVEQUF1RDtBQUN2QywrQ0FBaUMsR0FDaEQsMENBQTBDLENBQUM7QUFDNUMsa0NBQWtDO0FBQ2xCLDBCQUFZLEdBQUcscUJBQXFCLENBQUM7QUFDckQsMENBQTBDO0FBQzFCLGtDQUFvQixHQUFHLDZCQUE2QixDQUFDO0FBQ3JFLG1DQUFtQztBQUNuQiwyQkFBYSxHQUFHLHNCQUFzQixDQUFDO0FBQ3ZELHNDQUFzQztBQUN0Qiw4QkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM3RCxvQ0FBb0M7QUFDcEIsNEJBQWMsR0FBRyx1QkFBdUIsQ0FBQztBQUN6RCxvQ0FBb0M7QUFDcEIsNEJBQWMsR0FBRyx1QkFBdUIsQ0FBQztBQUN6RCw4Q0FBOEM7QUFDOUIsc0NBQXdCLEdBQUcsaUNBQWlDLENBQUM7QUFDN0UsMkNBQTJDO0FBQzNCLG1DQUFxQixHQUFHLDhCQUE4QixDQUFDO0FBQ3ZFLDJDQUEyQztBQUMzQixtQ0FBcUIsR0FBRyw4QkFBOEIsQ0FBQztBQUN2RSwwQ0FBMEM7QUFDMUIsa0NBQW9CLEdBQUcsNkJBQTZCLENBQUM7QUFDckUsbUNBQW1DO0FBQ25CLDJCQUFhLEdBQUcsc0JBQXNCLENBQUM7QUFDdkQsc0NBQXNDO0FBQ3RCLDhCQUFnQixHQUFHLHlCQUF5QixDQUFDO0FBQzdELG9DQUFv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Q3ZCLENBQUM7QUFDRiw4REFBOEQ7QUFDOUMsNENBQTJCLEdBQWE7SUFDdkQsb0JBQW9CO0NBQ3BCLENBQUM7QUFFRix1REFBdUQ7QUFDdkMsZ0NBQWUsR0FBRywwQkFBMEIsQ0FBQztBQUM3RCx3REFBd0Q7QUFDeEMsaUNBQWdCLEdBQUcsMkJBQTJCLENBQUM7QUFDL0QsaURBQWlEO0FBQ2pDLDZCQUFZLEdBQUcsYUFBYSxDQUFDO0FBQzdDLHFEQUFxRDtBQUNyQyw4QkFBYSxHQUFHLG9CQUFvQixDQUFDO0FBQ3JELCtDQUErQztBQUMvQiwyQkFBVSxHQUFHLGtCQUFrQixDQUFDO0FBQ2hELG1EQUFtRDtBQUNuQywyQkFBVSxHQUFHLGtCQUFrQixDQUFDO0FBQ2hELG9EQUFvRDtBQUNwQyxnQ0FBZSxHQUFHLHVCQUF1QixDQUFDO0FBQzFELHdEQUF3RDtBQUN4Qyw0QkFBVyxHQUFHLG9CQUFvQixDQUFDO0FBQ25ELDBEQUEwRDtBQUMxQyx1Q0FBc0IsR0FBRyw2QkFBNkIsQ0FBQztBQUN2RSxvREFBb0Q7QUFDcEMsK0JBQWMsR0FBRyx1QkFBdUIsQ0FBQztBQUN6RCxxRUFBcUU7QUFDckQsa0RBQWlDLEdBQ2hELHdDQUF3QyxDQUFDO0FBQzFDLHdEQUF3RDtBQUN4QyxxQ0FBb0IsR0FBRywyQkFBMkIsQ0FBQztBQUNuRSxtREFBbUQ7QUFDbkMsdUJBQU0sR0FBRyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVVUTy1HRU5FUkFURUQgRklMRSDigJQgRE8gTk9UIEVESVQgTUFOVUFMTFlcbi8vIEdlbmVyYXRlZCBmcm9tIEFXUyBTZXJ2aWNlIEF1dGhvcml6YXRpb24gUmVmZXJlbmNlIGRhdGFcbi8vIFNvdXJjZTogZGF0YS9zZXJ2aWNlLXJlZmVyZW5jZS9ldmVudHMuanNvblxuLy8gUnVuIGBucHggcHJvamVuIGdlbmVyYXRlLWNvbnN0YW50c2AgdG8gcmVnZW5lcmF0ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBJQU0gYWN0aW9uIGNvbnN0YW50cyBmb3IgdGhlIGV2ZW50cyBzZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRzQWN0aW9ucyB7XG5cdC8qKiBUaGUgSUFNIHNlcnZpY2UgcHJlZml4LiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU0VSVklDRV9QUkVGSVggPSBcImV2ZW50c1wiO1xuXG5cdC8qKiBbV3JpdGVdIGV2ZW50czpBY3RpdmF0ZUV2ZW50U291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBBY3RpdmF0ZUV2ZW50U291cmNlID0gXCJldmVudHM6QWN0aXZhdGVFdmVudFNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6QWxsb3dWZW5kZWRMb2dEZWxpdmVyeUZvclJlc291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxvd1ZlbmRlZExvZ0RlbGl2ZXJ5Rm9yUmVzb3VyY2UgPVxuXHRcdFwiZXZlbnRzOkFsbG93VmVuZGVkTG9nRGVsaXZlcnlGb3JSZXNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6Q2FuY2VsUmVwbGF5ICovXG5cdHN0YXRpYyByZWFkb25seSBDYW5jZWxSZXBsYXkgPSBcImV2ZW50czpDYW5jZWxSZXBsYXlcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkNyZWF0ZUFwaURlc3RpbmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVBcGlEZXN0aW5hdGlvbiA9IFwiZXZlbnRzOkNyZWF0ZUFwaURlc3RpbmF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpDcmVhdGVBcmNoaXZlICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVBcmNoaXZlID0gXCJldmVudHM6Q3JlYXRlQXJjaGl2ZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6Q3JlYXRlQ29ubmVjdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQ29ubmVjdGlvbiA9IFwiZXZlbnRzOkNyZWF0ZUNvbm5lY3Rpb25cIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkNyZWF0ZUVuZHBvaW50ICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFbmRwb2ludCA9IFwiZXZlbnRzOkNyZWF0ZUVuZHBvaW50XCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpDcmVhdGVFdmVudEJ1cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRXZlbnRCdXMgPSBcImV2ZW50czpDcmVhdGVFdmVudEJ1c1wiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6Q3JlYXRlUGFydG5lckV2ZW50U291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVQYXJ0bmVyRXZlbnRTb3VyY2UgPSBcImV2ZW50czpDcmVhdGVQYXJ0bmVyRXZlbnRTb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkRlYWN0aXZhdGVFdmVudFNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVhY3RpdmF0ZUV2ZW50U291cmNlID0gXCJldmVudHM6RGVhY3RpdmF0ZUV2ZW50U291cmNlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWF1dGhvcml6ZUNvbm5lY3Rpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlYXV0aG9yaXplQ29ubmVjdGlvbiA9IFwiZXZlbnRzOkRlYXV0aG9yaXplQ29ubmVjdGlvblwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGVsZXRlQXBpRGVzdGluYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUFwaURlc3RpbmF0aW9uID0gXCJldmVudHM6RGVsZXRlQXBpRGVzdGluYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkRlbGV0ZUFyY2hpdmUgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUFyY2hpdmUgPSBcImV2ZW50czpEZWxldGVBcmNoaXZlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWxldGVDb25uZWN0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVDb25uZWN0aW9uID0gXCJldmVudHM6RGVsZXRlQ29ubmVjdGlvblwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGVsZXRlRW5kcG9pbnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUVuZHBvaW50ID0gXCJldmVudHM6RGVsZXRlRW5kcG9pbnRcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkRlbGV0ZUV2ZW50QnVzICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVFdmVudEJ1cyA9IFwiZXZlbnRzOkRlbGV0ZUV2ZW50QnVzXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVBhcnRuZXJFdmVudFNvdXJjZSA9IFwiZXZlbnRzOkRlbGV0ZVBhcnRuZXJFdmVudFNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGVsZXRlUnVsZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlUnVsZSA9IFwiZXZlbnRzOkRlbGV0ZVJ1bGVcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVBcGlEZXN0aW5hdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVBcGlEZXN0aW5hdGlvbiA9IFwiZXZlbnRzOkRlc2NyaWJlQXBpRGVzdGluYXRpb25cIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVBcmNoaXZlICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUFyY2hpdmUgPSBcImV2ZW50czpEZXNjcmliZUFyY2hpdmVcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVDb25uZWN0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUNvbm5lY3Rpb24gPSBcImV2ZW50czpEZXNjcmliZUNvbm5lY3Rpb25cIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVFbmRwb2ludCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVFbmRwb2ludCA9IFwiZXZlbnRzOkRlc2NyaWJlRW5kcG9pbnRcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVFdmVudEJ1cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVFdmVudEJ1cyA9IFwiZXZlbnRzOkRlc2NyaWJlRXZlbnRCdXNcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVFdmVudFNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVFdmVudFNvdXJjZSA9IFwiZXZlbnRzOkRlc2NyaWJlRXZlbnRTb3VyY2VcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVQYXJ0bmVyRXZlbnRTb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlUGFydG5lckV2ZW50U291cmNlID1cblx0XHRcImV2ZW50czpEZXNjcmliZVBhcnRuZXJFdmVudFNvdXJjZVwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZVJlcGxheSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVSZXBsYXkgPSBcImV2ZW50czpEZXNjcmliZVJlcGxheVwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlUnVsZSA9IFwiZXZlbnRzOkRlc2NyaWJlUnVsZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGlzYWJsZVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IERpc2FibGVSdWxlID0gXCJldmVudHM6RGlzYWJsZVJ1bGVcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkVuYWJsZVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IEVuYWJsZVJ1bGUgPSBcImV2ZW50czpFbmFibGVSdWxlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpJbnZva2VBcGlEZXN0aW5hdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgSW52b2tlQXBpRGVzdGluYXRpb24gPSBcImV2ZW50czpJbnZva2VBcGlEZXN0aW5hdGlvblwiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0QXBpRGVzdGluYXRpb25zICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0QXBpRGVzdGluYXRpb25zID0gXCJldmVudHM6TGlzdEFwaURlc3RpbmF0aW9uc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0QXJjaGl2ZXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RBcmNoaXZlcyA9IFwiZXZlbnRzOkxpc3RBcmNoaXZlc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0Q29ubmVjdGlvbnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RDb25uZWN0aW9ucyA9IFwiZXZlbnRzOkxpc3RDb25uZWN0aW9uc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0RW5kcG9pbnRzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RW5kcG9pbnRzID0gXCJldmVudHM6TGlzdEVuZHBvaW50c1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0RXZlbnRCdXNlcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEV2ZW50QnVzZXMgPSBcImV2ZW50czpMaXN0RXZlbnRCdXNlc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0RXZlbnRTb3VyY2VzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RXZlbnRTb3VyY2VzID0gXCJldmVudHM6TGlzdEV2ZW50U291cmNlc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0UGFydG5lckV2ZW50U291cmNlQWNjb3VudHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RQYXJ0bmVyRXZlbnRTb3VyY2VBY2NvdW50cyA9XG5cdFx0XCJldmVudHM6TGlzdFBhcnRuZXJFdmVudFNvdXJjZUFjY291bnRzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RQYXJ0bmVyRXZlbnRTb3VyY2VzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UGFydG5lckV2ZW50U291cmNlcyA9IFwiZXZlbnRzOkxpc3RQYXJ0bmVyRXZlbnRTb3VyY2VzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RSZXBsYXlzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UmVwbGF5cyA9IFwiZXZlbnRzOkxpc3RSZXBsYXlzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RSdWxlTmFtZXNCeVRhcmdldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJ1bGVOYW1lc0J5VGFyZ2V0ID0gXCJldmVudHM6TGlzdFJ1bGVOYW1lc0J5VGFyZ2V0XCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RSdWxlcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJ1bGVzID0gXCJldmVudHM6TGlzdFJ1bGVzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RUYWdzRm9yUmVzb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2UgPSBcImV2ZW50czpMaXN0VGFnc0ZvclJlc291cmNlXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RUYXJnZXRzQnlSdWxlICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFyZ2V0c0J5UnVsZSA9IFwiZXZlbnRzOkxpc3RUYXJnZXRzQnlSdWxlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpQdXRFdmVudHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dEV2ZW50cyA9IFwiZXZlbnRzOlB1dEV2ZW50c1wiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6UHV0UGFydG5lckV2ZW50cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UGFydG5lckV2ZW50cyA9IFwiZXZlbnRzOlB1dFBhcnRuZXJFdmVudHNcIjtcblx0LyoqIFtQZXJtaXNzaW9uTWFuYWdlbWVudF0gZXZlbnRzOlB1dFBlcm1pc3Npb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFBlcm1pc3Npb24gPSBcImV2ZW50czpQdXRQZXJtaXNzaW9uXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpQdXRSdWxlICovXG5cdHN0YXRpYyByZWFkb25seSBQdXRSdWxlID0gXCJldmVudHM6UHV0UnVsZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6UHV0VGFyZ2V0cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0VGFyZ2V0cyA9IFwiZXZlbnRzOlB1dFRhcmdldHNcIjtcblx0LyoqIFtQZXJtaXNzaW9uTWFuYWdlbWVudF0gZXZlbnRzOlJlbW92ZVBlcm1pc3Npb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFJlbW92ZVBlcm1pc3Npb24gPSBcImV2ZW50czpSZW1vdmVQZXJtaXNzaW9uXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpSZW1vdmVUYXJnZXRzICovXG5cdHN0YXRpYyByZWFkb25seSBSZW1vdmVUYXJnZXRzID0gXCJldmVudHM6UmVtb3ZlVGFyZ2V0c1wiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6UmV0cmlldmVDb25uZWN0aW9uQ3JlZGVudGlhbHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IFJldHJpZXZlQ29ubmVjdGlvbkNyZWRlbnRpYWxzID1cblx0XHRcImV2ZW50czpSZXRyaWV2ZUNvbm5lY3Rpb25DcmVkZW50aWFsc1wiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6U3RhcnRSZXBsYXkgKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0UmVwbGF5ID0gXCJldmVudHM6U3RhcnRSZXBsYXlcIjtcblx0LyoqIFtUYWdnaW5nXSBldmVudHM6VGFnUmVzb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IFRhZ1Jlc291cmNlID0gXCJldmVudHM6VGFnUmVzb3VyY2VcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6VGVzdEV2ZW50UGF0dGVybiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGVzdEV2ZW50UGF0dGVybiA9IFwiZXZlbnRzOlRlc3RFdmVudFBhdHRlcm5cIjtcblx0LyoqIFtUYWdnaW5nXSBldmVudHM6VW50YWdSZXNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZSA9IFwiZXZlbnRzOlVudGFnUmVzb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlVwZGF0ZUFwaURlc3RpbmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVBcGlEZXN0aW5hdGlvbiA9IFwiZXZlbnRzOlVwZGF0ZUFwaURlc3RpbmF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpVcGRhdGVBcmNoaXZlICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVBcmNoaXZlID0gXCJldmVudHM6VXBkYXRlQXJjaGl2ZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6VXBkYXRlQ29ubmVjdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQ29ubmVjdGlvbiA9IFwiZXZlbnRzOlVwZGF0ZUNvbm5lY3Rpb25cIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlVwZGF0ZUVuZHBvaW50ICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFbmRwb2ludCA9IFwiZXZlbnRzOlVwZGF0ZUVuZHBvaW50XCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpVcGRhdGVFdmVudEJ1cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXZlbnRCdXMgPSBcImV2ZW50czpVcGRhdGVFdmVudEJ1c1wiO1xuXG5cdC8qKiBBbGwgcmVhZC1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsUmVhZEFjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdEV2ZW50c0FjdGlvbnMuRGVzY3JpYmVBcGlEZXN0aW5hdGlvbixcblx0XHRFdmVudHNBY3Rpb25zLkRlc2NyaWJlQXJjaGl2ZSxcblx0XHRFdmVudHNBY3Rpb25zLkRlc2NyaWJlQ29ubmVjdGlvbixcblx0XHRFdmVudHNBY3Rpb25zLkRlc2NyaWJlRW5kcG9pbnQsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZXNjcmliZUV2ZW50QnVzLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVzY3JpYmVFdmVudFNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLkRlc2NyaWJlUGFydG5lckV2ZW50U291cmNlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVzY3JpYmVSZXBsYXksXG5cdFx0RXZlbnRzQWN0aW9ucy5EZXNjcmliZVJ1bGUsXG5cdFx0RXZlbnRzQWN0aW9ucy5UZXN0RXZlbnRQYXR0ZXJuLFxuXHRdO1xuXHQvKiogQWxsIHdyaXRlLWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxXcml0ZUFjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdEV2ZW50c0FjdGlvbnMuQWN0aXZhdGVFdmVudFNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLkFsbG93VmVuZGVkTG9nRGVsaXZlcnlGb3JSZXNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLkNhbmNlbFJlcGxheSxcblx0XHRFdmVudHNBY3Rpb25zLkNyZWF0ZUFwaURlc3RpbmF0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuQ3JlYXRlQXJjaGl2ZSxcblx0XHRFdmVudHNBY3Rpb25zLkNyZWF0ZUNvbm5lY3Rpb24sXG5cdFx0RXZlbnRzQWN0aW9ucy5DcmVhdGVFbmRwb2ludCxcblx0XHRFdmVudHNBY3Rpb25zLkNyZWF0ZUV2ZW50QnVzLFxuXHRcdEV2ZW50c0FjdGlvbnMuQ3JlYXRlUGFydG5lckV2ZW50U291cmNlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVhY3RpdmF0ZUV2ZW50U291cmNlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVhdXRob3JpemVDb25uZWN0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVsZXRlQXBpRGVzdGluYXRpb24sXG5cdFx0RXZlbnRzQWN0aW9ucy5EZWxldGVBcmNoaXZlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVsZXRlQ29ubmVjdGlvbixcblx0XHRFdmVudHNBY3Rpb25zLkRlbGV0ZUVuZHBvaW50LFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVsZXRlRXZlbnRCdXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZWxldGVSdWxlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGlzYWJsZVJ1bGUsXG5cdFx0RXZlbnRzQWN0aW9ucy5FbmFibGVSdWxlLFxuXHRcdEV2ZW50c0FjdGlvbnMuSW52b2tlQXBpRGVzdGluYXRpb24sXG5cdFx0RXZlbnRzQWN0aW9ucy5QdXRFdmVudHMsXG5cdFx0RXZlbnRzQWN0aW9ucy5QdXRQYXJ0bmVyRXZlbnRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuUHV0UnVsZSxcblx0XHRFdmVudHNBY3Rpb25zLlB1dFRhcmdldHMsXG5cdFx0RXZlbnRzQWN0aW9ucy5SZW1vdmVUYXJnZXRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuUmV0cmlldmVDb25uZWN0aW9uQ3JlZGVudGlhbHMsXG5cdFx0RXZlbnRzQWN0aW9ucy5TdGFydFJlcGxheSxcblx0XHRFdmVudHNBY3Rpb25zLlVwZGF0ZUFwaURlc3RpbmF0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuVXBkYXRlQXJjaGl2ZSxcblx0XHRFdmVudHNBY3Rpb25zLlVwZGF0ZUNvbm5lY3Rpb24sXG5cdFx0RXZlbnRzQWN0aW9ucy5VcGRhdGVFbmRwb2ludCxcblx0XHRFdmVudHNBY3Rpb25zLlVwZGF0ZUV2ZW50QnVzLFxuXHRdO1xuXHQvKiogQWxsIGxpc3QtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbExpc3RBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RBcGlEZXN0aW5hdGlvbnMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0QXJjaGl2ZXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0Q29ubmVjdGlvbnMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0RW5kcG9pbnRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdEV2ZW50QnVzZXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0RXZlbnRTb3VyY2VzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFBhcnRuZXJFdmVudFNvdXJjZUFjY291bnRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFBhcnRuZXJFdmVudFNvdXJjZXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0UmVwbGF5cyxcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RSdWxlTmFtZXNCeVRhcmdldCxcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RSdWxlcyxcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RUYWdzRm9yUmVzb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0VGFyZ2V0c0J5UnVsZSxcblx0XTtcblx0LyoqIEFsbCBwZXJtaXNzaW9uLW1hbmFnZW1lbnQtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbFBlcm1pc3Npb25NYW5hZ2VtZW50QWN0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0RXZlbnRzQWN0aW9ucy5QdXRQZXJtaXNzaW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuUmVtb3ZlUGVybWlzc2lvbixcblx0XTtcblx0LyoqIEFsbCB0YWdnaW5nLWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxUYWdnaW5nQWN0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0RXZlbnRzQWN0aW9ucy5UYWdSZXNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLlVudGFnUmVzb3VyY2UsXG5cdF07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBhbGlhcyBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzQWxpYXNBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgQWxpYXMgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGFsaWFzOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgYWxpYXMgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0FsaWFzQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBBbGlhcyBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGFsaWFzOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBhcGktZGVzdGluYXRpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0FQSURlc3RpbmF0aW9uQXJuUHJvcHMge1xuXHQvKiogVGhlIEFwaURlc3RpbmF0aW9uTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgYXBpRGVzdGluYXRpb25OYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgYXBpLWRlc3RpbmF0aW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNBUElEZXN0aW5hdGlvbkFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgQXBpRGVzdGluYXRpb25OYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgYXBpRGVzdGluYXRpb25OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBhcmNoaXZlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNBcmNoaXZlQXJuUHJvcHMge1xuXHQvKiogVGhlIEFyY2hpdmVOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBhcmNoaXZlTmFtZTogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGFyY2hpdmUgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0FyY2hpdmVBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIEFyY2hpdmVOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgYXJjaGl2ZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGNvbm5lY3Rpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0Nvbm5lY3Rpb25Bcm5Qcm9wcyB7XG5cdC8qKiBUaGUgQ29ubmVjdGlvbk5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGNvbm5lY3Rpb25OYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgY29ubmVjdGlvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzQ29ubmVjdGlvbkFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgQ29ubmVjdGlvbk5hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBjb25uZWN0aW9uTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgY3JlYXRlLXNuYXBzaG90IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNDcmVhdGVTbmFwc2hvdEFyblByb3BzIHtcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBjcmVhdGUtc25hcHNob3QgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0NyZWF0ZVNuYXBzaG90QXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGVuZHBvaW50IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFbmRwb2ludEFyblByb3BzIHtcblx0LyoqIFRoZSBFbmRwb2ludE5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGVuZHBvaW50TmFtZTogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGVuZHBvaW50IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFbmRwb2ludEFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRW5kcG9pbnROYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZW5kcG9pbnROYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBldmVudC1idXMgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0V2ZW50QnVzQXJuUHJvcHMge1xuXHQvKiogVGhlIEV2ZW50QnVzTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZXZlbnRCdXNOYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZXZlbnQtYnVzIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFdmVudEJ1c0FybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRXZlbnRCdXNOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZXZlbnRCdXNOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBldmVudC1zb3VyY2UgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0V2ZW50U291cmNlQXJuUHJvcHMge1xuXHQvKiogVGhlIEV2ZW50U291cmNlTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZXZlbnRTb3VyY2VOYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZXZlbnQtc291cmNlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFdmVudFNvdXJjZUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRXZlbnRTb3VyY2VOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZXZlbnRTb3VyY2VOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBrZXkgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0tleUFyblByb3BzIHtcblx0LyoqIFRoZSBLZXlJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkga2V5SWQ6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBrZXkgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0tleUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgS2V5SWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBrZXlJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgcmVib290LWluc3RhbmNlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNSZWJvb3RJbnN0YW5jZUFyblByb3BzIHtcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSByZWJvb3QtaW5zdGFuY2UgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1JlYm9vdEluc3RhbmNlQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHJlcGxheSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzUmVwbGF5QXJuUHJvcHMge1xuXHQvKiogVGhlIFJlcGxheU5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHJlcGxheU5hbWU6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSByZXBsYXkgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1JlcGxheUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgUmVwbGF5TmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHJlcGxheU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHJ1bGUtb24tY3VzdG9tLWV2ZW50LWJ1cyBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzUnVsZU9uQ3VzdG9tRXZlbnRCdXNBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgRXZlbnRCdXNOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBldmVudEJ1c05hbWU6IHN0cmluZztcblx0LyoqIFRoZSBSdWxlTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgcnVsZU5hbWU6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBydWxlLW9uLWN1c3RvbS1ldmVudC1idXMgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1J1bGVPbkN1c3RvbUV2ZW50QnVzQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBFdmVudEJ1c05hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBldmVudEJ1c05hbWU6IHN0cmluZztcblx0LyoqIFRoZSBSdWxlTmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBydWxlLW9uLWRlZmF1bHQtZXZlbnQtYnVzIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgUnVsZU5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgcnVsZS1vbi1kZWZhdWx0LWV2ZW50LWJ1cyBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzUnVsZU9uRGVmYXVsdEV2ZW50QnVzQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBSdWxlTmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBzdG9wLWluc3RhbmNlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNTdG9wSW5zdGFuY2VBcm5Qcm9wcyB7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgc3RvcC1pbnN0YW5jZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzU3RvcEluc3RhbmNlQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHRlcm1pbmF0ZS1pbnN0YW5jZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzVGVybWluYXRlSW5zdGFuY2VBcm5Qcm9wcyB7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgdGVybWluYXRlLWluc3RhbmNlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNUZXJtaW5hdGVJbnN0YW5jZUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG59XG5cbmNvbnN0IEFsaWFzQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmttczooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmFsaWFzXFwvKD88YWxpYXM+W146Lz9dKykkLztcbmNvbnN0IEFQSURlc3RpbmF0aW9uQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmFwaS1kZXN0aW5hdGlvblxcLyg/PGFwaURlc3RpbmF0aW9uTmFtZT5bXjovP10rKSQvO1xuY29uc3QgQXJjaGl2ZUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTphcmNoaXZlXFwvKD88YXJjaGl2ZU5hbWU+W146Lz9dKykkLztcbmNvbnN0IENvbm5lY3Rpb25Bcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6Y29ubmVjdGlvblxcLyg/PGNvbm5lY3Rpb25OYW1lPlteOi8/XSspJC87XG5jb25zdCBDcmVhdGVTbmFwc2hvdEFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTp0YXJnZXRcXC9jcmVhdGUtc25hcHNob3QkLztcbmNvbnN0IEVuZHBvaW50QXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmVuZHBvaW50XFwvKD88ZW5kcG9pbnROYW1lPlteOi8/XSspJC87XG5jb25zdCBFdmVudEJ1c0FyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpldmVudC1idXNcXC8oPzxldmVudEJ1c05hbWU+W146Lz9dKykkLztcbmNvbnN0IEV2ZW50U291cmNlQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOjpldmVudC1zb3VyY2VcXC8oPzxldmVudFNvdXJjZU5hbWU+W146Lz9dKykkLztcbmNvbnN0IEtleUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTprbXM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTprZXlcXC8oPzxrZXlJZD5bXjovP10rKSQvO1xuY29uc3QgUmVib290SW5zdGFuY2VBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6dGFyZ2V0XFwvcmVib290LWluc3RhbmNlJC87XG5jb25zdCBSZXBsYXlBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6cmVwbGF5XFwvKD88cmVwbGF5TmFtZT5bXjovP10rKSQvO1xuY29uc3QgUnVsZU9uQ3VzdG9tRXZlbnRCdXNBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6cnVsZVxcLyg/PGV2ZW50QnVzTmFtZT5bXjovP10rKVxcLyg/PHJ1bGVOYW1lPlteOi8/XSspJC87XG5jb25zdCBSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6cnVsZVxcLyg/PHJ1bGVOYW1lPlteOi8/XSspJC87XG5jb25zdCBTdG9wSW5zdGFuY2VBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6dGFyZ2V0XFwvc3RvcC1pbnN0YW5jZSQvO1xuY29uc3QgVGVybWluYXRlSW5zdGFuY2VBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6dGFyZ2V0XFwvdGVybWluYXRlLWluc3RhbmNlJC87XG5cbi8qKlxuICogQVJOIGJ1aWxkZXJzLCB2YWxpZGF0b3JzLCBhbmQgcGFyc2VycyBmb3IgZXZlbnRzIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50c1Jlc291cmNlcyB7XG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgYWxpYXMgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgYWxpYXMocHJvcHM6IEV2ZW50c0FsaWFzQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Omttczoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTphbGlhcy8ke3Byb3BzLmFsaWFzfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBhbGlhcyByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkQWxpYXNBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gQWxpYXNBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgYWxpYXMgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlQWxpYXNBcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNBbGlhc0FybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gQWxpYXNBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYWxpYXMgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0YWxpYXM6IG1hdGNoLmdyb3VwcyEuYWxpYXMsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgYXBpLWRlc3RpbmF0aW9uIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGFwaURlc3RpbmF0aW9uKHByb3BzOiBFdmVudHNBUElEZXN0aW5hdGlvbkFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06YXBpLWRlc3RpbmF0aW9uLyR7cHJvcHMuYXBpRGVzdGluYXRpb25OYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBhcGktZGVzdGluYXRpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZEFQSURlc3RpbmF0aW9uQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEFQSURlc3RpbmF0aW9uQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGFwaS1kZXN0aW5hdGlvbiBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VBUElEZXN0aW5hdGlvbkFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogRXZlbnRzQVBJRGVzdGluYXRpb25Bcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEFQSURlc3RpbmF0aW9uQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFwaS1kZXN0aW5hdGlvbiBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRhcGlEZXN0aW5hdGlvbk5hbWU6IG1hdGNoLmdyb3VwcyEuYXBpRGVzdGluYXRpb25OYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGFyY2hpdmUgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgYXJjaGl2ZShwcm9wczogRXZlbnRzQXJjaGl2ZUFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06YXJjaGl2ZS8ke3Byb3BzLmFyY2hpdmVOYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBhcmNoaXZlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRBcmNoaXZlQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEFyY2hpdmVBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgYXJjaGl2ZSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VBcmNoaXZlQXJuKGFybjogc3RyaW5nKTogRXZlbnRzQXJjaGl2ZUFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gQXJjaGl2ZUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhcmNoaXZlIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGFyY2hpdmVOYW1lOiBtYXRjaC5ncm91cHMhLmFyY2hpdmVOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGNvbm5lY3Rpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgY29ubmVjdGlvbihwcm9wczogRXZlbnRzQ29ubmVjdGlvbkFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06Y29ubmVjdGlvbi8ke3Byb3BzLmNvbm5lY3Rpb25OYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBjb25uZWN0aW9uIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRDb25uZWN0aW9uQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIENvbm5lY3Rpb25Bcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgY29ubmVjdGlvbiBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VDb25uZWN0aW9uQXJuKGFybjogc3RyaW5nKTogRXZlbnRzQ29ubmVjdGlvbkFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gQ29ubmVjdGlvbkFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjb25uZWN0aW9uIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGNvbm5lY3Rpb25OYW1lOiBtYXRjaC5ncm91cHMhLmNvbm5lY3Rpb25OYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGNyZWF0ZS1zbmFwc2hvdCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBjcmVhdGVTbmFwc2hvdChwcm9wczogRXZlbnRzQ3JlYXRlU25hcHNob3RBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnRhcmdldC9jcmVhdGUtc25hcHNob3RgO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgY3JlYXRlLXNuYXBzaG90IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRDcmVhdGVTbmFwc2hvdEFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBDcmVhdGVTbmFwc2hvdEFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBjcmVhdGUtc25hcHNob3QgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlQ3JlYXRlU25hcHNob3RBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEV2ZW50c0NyZWF0ZVNuYXBzaG90QXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBDcmVhdGVTbmFwc2hvdEFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjcmVhdGUtc25hcHNob3QgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGVuZHBvaW50IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGVuZHBvaW50KHByb3BzOiBFdmVudHNFbmRwb2ludEFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06ZW5kcG9pbnQvJHtwcm9wcy5lbmRwb2ludE5hbWV9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGVuZHBvaW50IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRFbmRwb2ludEFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBFbmRwb2ludEFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBlbmRwb2ludCBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VFbmRwb2ludEFybihhcm46IHN0cmluZyk6IEV2ZW50c0VuZHBvaW50QXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBFbmRwb2ludEFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbmRwb2ludCBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRlbmRwb2ludE5hbWU6IG1hdGNoLmdyb3VwcyEuZW5kcG9pbnROYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGV2ZW50LWJ1cyByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBldmVudEJ1cyhwcm9wczogRXZlbnRzRXZlbnRCdXNBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmV2ZW50LWJ1cy8ke3Byb3BzLmV2ZW50QnVzTmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZXZlbnQtYnVzIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRFdmVudEJ1c0Fybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBFdmVudEJ1c0FyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBldmVudC1idXMgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlRXZlbnRCdXNBcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNFdmVudEJ1c0FybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gRXZlbnRCdXNBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZXZlbnQtYnVzIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGV2ZW50QnVzTmFtZTogbWF0Y2guZ3JvdXBzIS5ldmVudEJ1c05hbWUsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgZXZlbnQtc291cmNlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGV2ZW50U291cmNlKHByb3BzOiBFdmVudHNFdmVudFNvdXJjZUFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OjpldmVudC1zb3VyY2UvJHtwcm9wcy5ldmVudFNvdXJjZU5hbWV9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGV2ZW50LXNvdXJjZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkRXZlbnRTb3VyY2VBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRXZlbnRTb3VyY2VBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgZXZlbnQtc291cmNlIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUV2ZW50U291cmNlQXJuKGFybjogc3RyaW5nKTogRXZlbnRzRXZlbnRTb3VyY2VBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEV2ZW50U291cmNlQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGV2ZW50LXNvdXJjZSBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRldmVudFNvdXJjZU5hbWU6IG1hdGNoLmdyb3VwcyEuZXZlbnRTb3VyY2VOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGtleSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBrZXkocHJvcHM6IEV2ZW50c0tleUFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTprbXM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06a2V5LyR7cHJvcHMua2V5SWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGtleSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkS2V5QXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEtleUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBrZXkgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlS2V5QXJuKGFybjogc3RyaW5nKTogRXZlbnRzS2V5QXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBLZXlBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQga2V5IEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGtleUlkOiBtYXRjaC5ncm91cHMhLmtleUlkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHJlYm9vdC1pbnN0YW5jZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyByZWJvb3RJbnN0YW5jZShwcm9wczogRXZlbnRzUmVib290SW5zdGFuY2VBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnRhcmdldC9yZWJvb3QtaW5zdGFuY2VgO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgcmVib290LWluc3RhbmNlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRSZWJvb3RJbnN0YW5jZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBSZWJvb3RJbnN0YW5jZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSByZWJvb3QtaW5zdGFuY2UgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlUmVib290SW5zdGFuY2VBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEV2ZW50c1JlYm9vdEluc3RhbmNlQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBSZWJvb3RJbnN0YW5jZUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZWJvb3QtaW5zdGFuY2UgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHJlcGxheSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyByZXBsYXkocHJvcHM6IEV2ZW50c1JlcGxheUFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06cmVwbGF5LyR7cHJvcHMucmVwbGF5TmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgcmVwbGF5IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRSZXBsYXlBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gUmVwbGF5QXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHJlcGxheSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VSZXBsYXlBcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNSZXBsYXlBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFJlcGxheUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZXBsYXkgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0cmVwbGF5TmFtZTogbWF0Y2guZ3JvdXBzIS5yZXBsYXlOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHJ1bGUtb24tY3VzdG9tLWV2ZW50LWJ1cyByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBydWxlT25DdXN0b21FdmVudEJ1cyhcblx0XHRwcm9wczogRXZlbnRzUnVsZU9uQ3VzdG9tRXZlbnRCdXNBcm5Qcm9wcyxcblx0KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06cnVsZS8ke3Byb3BzLmV2ZW50QnVzTmFtZX0vJHtwcm9wcy5ydWxlTmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgcnVsZS1vbi1jdXN0b20tZXZlbnQtYnVzIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRSdWxlT25DdXN0b21FdmVudEJ1c0Fybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBSdWxlT25DdXN0b21FdmVudEJ1c0FyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBydWxlLW9uLWN1c3RvbS1ldmVudC1idXMgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlUnVsZU9uQ3VzdG9tRXZlbnRCdXNBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEV2ZW50c1J1bGVPbkN1c3RvbUV2ZW50QnVzQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBSdWxlT25DdXN0b21FdmVudEJ1c0FyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBydWxlLW9uLWN1c3RvbS1ldmVudC1idXMgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0ZXZlbnRCdXNOYW1lOiBtYXRjaC5ncm91cHMhLmV2ZW50QnVzTmFtZSxcblx0XHRcdHJ1bGVOYW1lOiBtYXRjaC5ncm91cHMhLnJ1bGVOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHJ1bGUtb24tZGVmYXVsdC1ldmVudC1idXMgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgcnVsZU9uRGVmYXVsdEV2ZW50QnVzKFxuXHRcdHByb3BzOiBFdmVudHNSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm5Qcm9wcyxcblx0KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06cnVsZS8ke3Byb3BzLnJ1bGVOYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBydWxlLW9uLWRlZmF1bHQtZXZlbnQtYnVzIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gUnVsZU9uRGVmYXVsdEV2ZW50QnVzQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHJ1bGUtb24tZGVmYXVsdC1ldmVudC1idXMgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlUnVsZU9uRGVmYXVsdEV2ZW50QnVzQXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBFdmVudHNSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFJ1bGVPbkRlZmF1bHRFdmVudEJ1c0FyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBydWxlLW9uLWRlZmF1bHQtZXZlbnQtYnVzIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdHJ1bGVOYW1lOiBtYXRjaC5ncm91cHMhLnJ1bGVOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHN0b3AtaW5zdGFuY2UgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgc3RvcEluc3RhbmNlKHByb3BzOiBFdmVudHNTdG9wSW5zdGFuY2VBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnRhcmdldC9zdG9wLWluc3RhbmNlYDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIHN0b3AtaW5zdGFuY2UgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZFN0b3BJbnN0YW5jZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBTdG9wSW5zdGFuY2VBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgc3RvcC1pbnN0YW5jZSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VTdG9wSW5zdGFuY2VBcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNTdG9wSW5zdGFuY2VBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFN0b3BJbnN0YW5jZUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzdG9wLWluc3RhbmNlIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSB0ZXJtaW5hdGUtaW5zdGFuY2UgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgdGVybWluYXRlSW5zdGFuY2UocHJvcHM6IEV2ZW50c1Rlcm1pbmF0ZUluc3RhbmNlQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTp0YXJnZXQvdGVybWluYXRlLWluc3RhbmNlYDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIHRlcm1pbmF0ZS1pbnN0YW5jZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkVGVybWluYXRlSW5zdGFuY2VBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gVGVybWluYXRlSW5zdGFuY2VBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgdGVybWluYXRlLWluc3RhbmNlIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZVRlcm1pbmF0ZUluc3RhbmNlQXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBFdmVudHNUZXJtaW5hdGVJbnN0YW5jZUFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gVGVybWluYXRlSW5zdGFuY2VBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVybWluYXRlLWluc3RhbmNlIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHR9O1xuXHR9XG59XG5cbi8qKlxuICogQVBJIG9wZXJhdGlvbiB0byByZXF1aXJlZCBJQU0gYWN0aW9ucyBtYXBwaW5nIGZvciBldmVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudHNPcGVyYXRpb25zIHtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQWN0aXZhdGVFdmVudFNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFjdGl2YXRlRXZlbnRTb3VyY2U6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkFjdGl2YXRlRXZlbnRTb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ2FuY2VsUmVwbGF5IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ2FuY2VsUmVwbGF5OiBzdHJpbmdbXSA9IFtcImV2ZW50czpDYW5jZWxSZXBsYXlcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZUFwaURlc3RpbmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQXBpRGVzdGluYXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkNyZWF0ZUFwaURlc3RpbmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZUFyY2hpdmUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVBcmNoaXZlOiBzdHJpbmdbXSA9IFtcImV2ZW50czpDcmVhdGVBcmNoaXZlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVDb25uZWN0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQ29ubmVjdGlvbjogc3RyaW5nW10gPSBbXCJldmVudHM6Q3JlYXRlQ29ubmVjdGlvblwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlRW5kcG9pbnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFbmRwb2ludDogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6Q3JlYXRlRW5kcG9pbnRcIixcblx0XHRcImlhbTpQYXNzUm9sZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVFdmVudEJ1cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUV2ZW50QnVzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpDcmVhdGVFdmVudEJ1c1wiLFxuXHRcdFwiZXZlbnRzOlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZVBhcnRuZXJFdmVudFNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVBhcnRuZXJFdmVudFNvdXJjZTogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6Q3JlYXRlUGFydG5lckV2ZW50U291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlYWN0aXZhdGVFdmVudFNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlYWN0aXZhdGVFdmVudFNvdXJjZTogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6RGVhY3RpdmF0ZUV2ZW50U291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlYXV0aG9yaXplQ29ubmVjdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlYXV0aG9yaXplQ29ubmVjdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6RGVhdXRob3JpemVDb25uZWN0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUFwaURlc3RpbmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlQXBpRGVzdGluYXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkRlbGV0ZUFwaURlc3RpbmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUFyY2hpdmUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVBcmNoaXZlOiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZWxldGVBcmNoaXZlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVDb25uZWN0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlQ29ubmVjdGlvbjogc3RyaW5nW10gPSBbXCJldmVudHM6RGVsZXRlQ29ubmVjdGlvblwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlRW5kcG9pbnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVFbmRwb2ludDogc3RyaW5nW10gPSBbXCJldmVudHM6RGVsZXRlRW5kcG9pbnRcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUV2ZW50QnVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRXZlbnRCdXM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlbGV0ZUV2ZW50QnVzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2U6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkRlbGV0ZVBhcnRuZXJFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlUnVsZTogc3RyaW5nW10gPSBbXCJldmVudHM6RGVsZXRlUnVsZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVzY3JpYmVBcGlEZXN0aW5hdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlQXBpRGVzdGluYXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkRlc2NyaWJlQXBpRGVzdGluYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVzY3JpYmVBcmNoaXZlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVBcmNoaXZlOiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZXNjcmliZUFyY2hpdmVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlQ29ubmVjdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlQ29ubmVjdGlvbjogc3RyaW5nW10gPSBbXCJldmVudHM6RGVzY3JpYmVDb25uZWN0aW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZUVuZHBvaW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVFbmRwb2ludDogc3RyaW5nW10gPSBbXCJldmVudHM6RGVzY3JpYmVFbmRwb2ludFwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVzY3JpYmVFdmVudEJ1cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlRXZlbnRCdXM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlc2NyaWJlRXZlbnRCdXNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlRXZlbnRTb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUV2ZW50U291cmNlOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZXNjcmliZUV2ZW50U291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlUGFydG5lckV2ZW50U291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVQYXJ0bmVyRXZlbnRTb3VyY2U6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkRlc2NyaWJlUGFydG5lckV2ZW50U291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlUmVwbGF5IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVSZXBsYXk6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlc2NyaWJlUmVwbGF5XCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZVJ1bGUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZVJ1bGU6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlc2NyaWJlUnVsZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGlzYWJsZVJ1bGUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEaXNhYmxlUnVsZTogc3RyaW5nW10gPSBbXCJldmVudHM6RGlzYWJsZVJ1bGVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEVuYWJsZVJ1bGUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBFbmFibGVSdWxlOiBzdHJpbmdbXSA9IFtcImV2ZW50czpFbmFibGVSdWxlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0QXBpRGVzdGluYXRpb25zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEFwaURlc3RpbmF0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6TGlzdEFwaURlc3RpbmF0aW9uc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0QXJjaGl2ZXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0QXJjaGl2ZXM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkxpc3RBcmNoaXZlc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdENvbm5lY3Rpb25zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdENvbm5lY3Rpb25zOiBzdHJpbmdbXSA9IFtcImV2ZW50czpMaXN0Q29ubmVjdGlvbnNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RFbmRwb2ludHMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RW5kcG9pbnRzOiBzdHJpbmdbXSA9IFtcImV2ZW50czpMaXN0RW5kcG9pbnRzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0RXZlbnRCdXNlcyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFdmVudEJ1c2VzOiBzdHJpbmdbXSA9IFtcImV2ZW50czpMaXN0RXZlbnRCdXNlc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdEV2ZW50U291cmNlcyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFdmVudFNvdXJjZXM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkxpc3RFdmVudFNvdXJjZXNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RQYXJ0bmVyRXZlbnRTb3VyY2VBY2NvdW50cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RQYXJ0bmVyRXZlbnRTb3VyY2VBY2NvdW50czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6TGlzdFBhcnRuZXJFdmVudFNvdXJjZUFjY291bnRzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RQYXJ0bmVyRXZlbnRTb3VyY2VzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFBhcnRuZXJFdmVudFNvdXJjZXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkxpc3RQYXJ0bmVyRXZlbnRTb3VyY2VzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RSZXBsYXlzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJlcGxheXM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkxpc3RSZXBsYXlzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0UnVsZU5hbWVzQnlUYXJnZXQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UnVsZU5hbWVzQnlUYXJnZXQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkxpc3RSdWxlTmFtZXNCeVRhcmdldFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0UnVsZXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UnVsZXM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkxpc3RSdWxlc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFRhZ3NGb3JSZXNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2U6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkxpc3RUYWdzRm9yUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFRhcmdldHNCeVJ1bGUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFyZ2V0c0J5UnVsZTogc3RyaW5nW10gPSBbXCJldmVudHM6TGlzdFRhcmdldHNCeVJ1bGVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFB1dEV2ZW50cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dEV2ZW50czogc3RyaW5nW10gPSBbXCJldmVudHM6UHV0RXZlbnRzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBQdXRQYXJ0bmVyRXZlbnRzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UGFydG5lckV2ZW50czogc3RyaW5nW10gPSBbXCJldmVudHM6UHV0UGFydG5lckV2ZW50c1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgUHV0UGVybWlzc2lvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFBlcm1pc3Npb246IHN0cmluZ1tdID0gW1wiZXZlbnRzOlB1dFBlcm1pc3Npb25cIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFB1dFJ1bGUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBQdXRSdWxlOiBzdHJpbmdbXSA9IFtcblx0XHRcImlhbTpQYXNzUm9sZVwiLFxuXHRcdFwiZXZlbnRzOlB1dFJ1bGVcIixcblx0XHRcImV2ZW50czpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBQdXRUYXJnZXRzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0VGFyZ2V0czogc3RyaW5nW10gPSBbXCJpYW06UGFzc1JvbGVcIiwgXCJldmVudHM6UHV0VGFyZ2V0c1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgUmVtb3ZlUGVybWlzc2lvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFJlbW92ZVBlcm1pc3Npb246IHN0cmluZ1tdID0gW1wiZXZlbnRzOlJlbW92ZVBlcm1pc3Npb25cIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFJlbW92ZVRhcmdldHMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBSZW1vdmVUYXJnZXRzOiBzdHJpbmdbXSA9IFtcImV2ZW50czpSZW1vdmVUYXJnZXRzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBTdGFydFJlcGxheSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0UmVwbGF5OiBzdHJpbmdbXSA9IFtcImV2ZW50czpTdGFydFJlcGxheVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVGFnUmVzb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBUYWdSZXNvdXJjZTogc3RyaW5nW10gPSBbXCJldmVudHM6VGFnUmVzb3VyY2VcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFRlc3RFdmVudFBhdHRlcm4gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBUZXN0RXZlbnRQYXR0ZXJuOiBzdHJpbmdbXSA9IFtcImV2ZW50czpUZXN0RXZlbnRQYXR0ZXJuXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVbnRhZ1Jlc291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZTogc3RyaW5nW10gPSBbXCJldmVudHM6VW50YWdSZXNvdXJjZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlQXBpRGVzdGluYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVBcGlEZXN0aW5hdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6VXBkYXRlQXBpRGVzdGluYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlQXJjaGl2ZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUFyY2hpdmU6IHN0cmluZ1tdID0gW1wiZXZlbnRzOlVwZGF0ZUFyY2hpdmVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUNvbm5lY3Rpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVDb25uZWN0aW9uOiBzdHJpbmdbXSA9IFtcImV2ZW50czpVcGRhdGVDb25uZWN0aW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVFbmRwb2ludCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUVuZHBvaW50OiBzdHJpbmdbXSA9IFtcblx0XHRcImlhbTpQYXNzUm9sZVwiLFxuXHRcdFwiZXZlbnRzOlVwZGF0ZUVuZHBvaW50XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUV2ZW50QnVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXZlbnRCdXM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOlVwZGF0ZUV2ZW50QnVzXCJdO1xufVxuXG4vKipcbiAqIENvbmRpdGlvbiBrZXkgY29uc3RhbnRzIGFuZCBidWlsZGVycyBmb3IgZXZlbnRzLlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRzQ29uZGl0aW9ucyB7XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVFbmRwb2ludCBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFbmRwb2ludENvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkV2ZW50QnVzQXJuXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVFdmVudEJ1cyBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFdmVudEJ1c0NvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgRGVsZXRlUnVsZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVSdWxlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6TWFuYWdlZEJ5XCIsXG5cdFx0XCJldmVudHM6Y3JlYXRvckFjY291bnRcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIERlc2NyaWJlUnVsZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZVJ1bGVDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgRGlzYWJsZVJ1bGUgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGlzYWJsZVJ1bGVDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpNYW5hZ2VkQnlcIixcblx0XHRcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgRW5hYmxlUnVsZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBFbmFibGVSdWxlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6TWFuYWdlZEJ5XCIsXG5cdFx0XCJldmVudHM6Y3JlYXRvckFjY291bnRcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIExpc3RUYWdzRm9yUmVzb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBMaXN0VGFyZ2V0c0J5UnVsZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFyZ2V0c0J5UnVsZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBQdXRFdmVudHMgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0RXZlbnRzQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6ZGV0YWlsLXR5cGVcIixcblx0XHRcImV2ZW50czpldmVudEJ1c0ludm9jYXRpb25cIixcblx0XHRcImV2ZW50czpzb3VyY2VcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFB1dFJ1bGUgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UnVsZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRcdFwiZXZlbnRzOk1hbmFnZWRCeVwiLFxuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdFx0XCJldmVudHM6ZGV0YWlsLXR5cGVcIixcblx0XHRcImV2ZW50czpkZXRhaWwuZXZlbnRUeXBlQ29kZVwiLFxuXHRcdFwiZXZlbnRzOmRldGFpbC5zZXJ2aWNlXCIsXG5cdFx0XCJldmVudHM6ZGV0YWlsLnVzZXJJZGVudGl0eS5wcmluY2lwYWxJZFwiLFxuXHRcdFwiZXZlbnRzOnNvdXJjZVwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgUHV0VGFyZ2V0cyBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBQdXRUYXJnZXRzQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6TWFuYWdlZEJ5XCIsXG5cdFx0XCJldmVudHM6VGFyZ2V0QXJuXCIsXG5cdFx0XCJldmVudHM6Y3JlYXRvckFjY291bnRcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFJlbW92ZVRhcmdldHMgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUmVtb3ZlVGFyZ2V0c0NvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOk1hbmFnZWRCeVwiLFxuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBUYWdSZXNvdXJjZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBUYWdSZXNvdXJjZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBVbnRhZ1Jlc291cmNlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVudGFnUmVzb3VyY2VDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdFx0XCJldmVudHM6Y3JlYXRvckFjY291bnRcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFVwZGF0ZUVuZHBvaW50IGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUVuZHBvaW50Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6RXZlbnRCdXNBcm5cIixcblx0XTtcblxuXHQvKiogQ29uZGl0aW9uIGtleTogYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9IChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBBV1NfUkVRVUVTVF9UQUcgPSBcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fSAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQVdTX1JFU09VUkNFX1RBRyA9IFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogYXdzOlRhZ0tleXMgKEFycmF5T2ZTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBBV1NfVEFHX0tFWVMgPSBcImF3czpUYWdLZXlzXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6RXZlbnRCdXNBcm4gKEFycmF5T2ZBUk4pICovXG5cdHN0YXRpYyByZWFkb25seSBFVkVOVF9CVVNfQVJOID0gXCJldmVudHM6RXZlbnRCdXNBcm5cIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpNYW5hZ2VkQnkgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IE1BTkFHRURfQlkgPSBcImV2ZW50czpNYW5hZ2VkQnlcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpUYXJnZXRBcm4gKEFycmF5T2ZBUk4pICovXG5cdHN0YXRpYyByZWFkb25seSBUQVJHRVRfQVJOID0gXCJldmVudHM6VGFyZ2V0QXJuXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6Y3JlYXRvckFjY291bnQgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IENSRUFUT1JfQUNDT1VOVCA9IFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6ZGV0YWlsLXR5cGUgKEFycmF5T2ZTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBERVRBSUxfVFlQRSA9IFwiZXZlbnRzOmRldGFpbC10eXBlXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6ZGV0YWlsLmV2ZW50VHlwZUNvZGUgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IERFVEFJTF9FVkVOVF9UWVBFX0NPREUgPSBcImV2ZW50czpkZXRhaWwuZXZlbnRUeXBlQ29kZVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOmRldGFpbC5zZXJ2aWNlIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBERVRBSUxfU0VSVklDRSA9IFwiZXZlbnRzOmRldGFpbC5zZXJ2aWNlXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6ZGV0YWlsLnVzZXJJZGVudGl0eS5wcmluY2lwYWxJZCAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgREVUQUlMX1VTRVJfSURFTlRJVFlfUFJJTkNJUEFMX0lEID1cblx0XHRcImV2ZW50czpkZXRhaWwudXNlcklkZW50aXR5LnByaW5jaXBhbElkXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6ZXZlbnRCdXNJbnZvY2F0aW9uIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBFVkVOVF9CVVNfSU5WT0NBVElPTiA9IFwiZXZlbnRzOmV2ZW50QnVzSW52b2NhdGlvblwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOnNvdXJjZSAoQXJyYXlPZlN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IFNPVVJDRSA9IFwiZXZlbnRzOnNvdXJjZVwiO1xuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1gLlxuXHQgKi9cblx0c3RhdGljIHJlcXVlc3RUYWcodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1gLlxuXHQgKi9cblx0c3RhdGljIHJlc291cmNlVGFnKHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgYXdzOlRhZ0tleXNgLlxuXHQgKi9cblx0c3RhdGljIHRhZ0tleXModmFsdWVzOiBzdHJpbmdbXSk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4ge1xuXHRcdHJldHVybiB7IFwiRm9yQWxsVmFsdWVzOlN0cmluZ0VxdWFsc1wiOiB7IFwiYXdzOlRhZ0tleXNcIjogdmFsdWVzIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6RXZlbnRCdXNBcm5gLlxuXHQgKi9cblx0c3RhdGljIGV2ZW50QnVzQVJOKFxuXHRcdHZhbHVlczogc3RyaW5nW10sXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4ge1xuXHRcdHJldHVybiB7IFwiRm9yQWxsVmFsdWVzOkFybkVxdWFsc1wiOiB7IFwiZXZlbnRzOkV2ZW50QnVzQXJuXCI6IHZhbHVlcyB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOk1hbmFnZWRCeWAuXG5cdCAqL1xuXHRzdGF0aWMgbWFuYWdlZEJ5KHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOk1hbmFnZWRCeVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOlRhcmdldEFybmAuXG5cdCAqL1xuXHRzdGF0aWMgdGFyZ2V0QVJOKHZhbHVlczogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4+IHtcblx0XHRyZXR1cm4geyBcIkZvckFsbFZhbHVlczpBcm5FcXVhbHNcIjogeyBcImV2ZW50czpUYXJnZXRBcm5cIjogdmFsdWVzIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6Y3JlYXRvckFjY291bnRgLlxuXHQgKi9cblx0c3RhdGljIGNyZWF0b3JBY2NvdW50KHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6ZGV0YWlsLXR5cGVgLlxuXHQgKi9cblx0c3RhdGljIGRldGFpbFR5cGUoXG5cdFx0dmFsdWVzOiBzdHJpbmdbXSxcblx0KTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nW10+PiB7XG5cdFx0cmV0dXJuIHsgXCJGb3JBbGxWYWx1ZXM6U3RyaW5nRXF1YWxzXCI6IHsgXCJldmVudHM6ZGV0YWlsLXR5cGVcIjogdmFsdWVzIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6ZGV0YWlsLmV2ZW50VHlwZUNvZGVgLlxuXHQgKi9cblx0c3RhdGljIGRldGFpbEV2ZW50VHlwZUNvZGUoXG5cdFx0dmFsdWU6IHN0cmluZyxcblx0KTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImV2ZW50czpkZXRhaWwuZXZlbnRUeXBlQ29kZVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOmRldGFpbC5zZXJ2aWNlYC5cblx0ICovXG5cdHN0YXRpYyBkZXRhaWxTZXJ2aWNlKHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOmRldGFpbC5zZXJ2aWNlXCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6ZGV0YWlsLnVzZXJJZGVudGl0eS5wcmluY2lwYWxJZGAuXG5cdCAqL1xuXHRzdGF0aWMgZGV0YWlsVXNlcklkZW50aXR5UHJpbmNpcGFsSWQoXG5cdFx0dmFsdWU6IHN0cmluZyxcblx0KTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7XG5cdFx0XHRTdHJpbmdFcXVhbHM6IHsgXCJldmVudHM6ZGV0YWlsLnVzZXJJZGVudGl0eS5wcmluY2lwYWxJZFwiOiB2YWx1ZSB9LFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOmV2ZW50QnVzSW52b2NhdGlvbmAuXG5cdCAqL1xuXHRzdGF0aWMgZXZlbnRCdXNJbnZvY2F0aW9uKFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJldmVudHM6ZXZlbnRCdXNJbnZvY2F0aW9uXCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6c291cmNlYC5cblx0ICovXG5cdHN0YXRpYyBzb3VyY2UodmFsdWVzOiBzdHJpbmdbXSk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4ge1xuXHRcdHJldHVybiB7IFwiRm9yQWxsVmFsdWVzOlN0cmluZ0VxdWFsc1wiOiB7IFwiZXZlbnRzOnNvdXJjZVwiOiB2YWx1ZXMgfSB9O1xuXHR9XG59XG4iXX0=
1298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9zZXJ2aWNlcy9ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRkFBZ0Y7QUFDaEYsNkNBQTZDO0FBQzdDLDBEQUEwRDtBQUMxRCw2Q0FBNkM7QUFDN0Msb0RBQW9EO0FBQ3BELGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQWEsYUFBYTs7QUFBMUIsc0NBc1BDOzs7QUFyUEEsOEJBQThCO0FBQ2QsNEJBQWMsR0FBRyxRQUFRLENBQUM7QUFFMUMseUNBQXlDO0FBQ3pCLGlDQUFtQixHQUFHLDRCQUE0QixDQUFDO0FBQ25FLHVEQUF1RDtBQUN2QywrQ0FBaUMsR0FDaEQsMENBQTBDLENBQUM7QUFDNUMsa0NBQWtDO0FBQ2xCLDBCQUFZLEdBQUcscUJBQXFCLENBQUM7QUFDckQsMENBQTBDO0FBQzFCLGtDQUFvQixHQUFHLDZCQUE2QixDQUFDO0FBQ3JFLG1DQUFtQztBQUNuQiwyQkFBYSxHQUFHLHNCQUFzQixDQUFDO0FBQ3ZELHNDQUFzQztBQUN0Qiw4QkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM3RCxvQ0FBb0M7QUFDcEIsNEJBQWMsR0FBRyx1QkFBdUIsQ0FBQztBQUN6RCxvQ0FBb0M7QUFDcEIsNEJBQWMsR0FBRyx1QkFBdUIsQ0FBQztBQUN6RCx1Q0FBdUM7QUFDdkIsK0JBQWlCLEdBQUcsMEJBQTBCLENBQUM7QUFDL0QsOENBQThDO0FBQzlCLHNDQUF3QixHQUFHLGlDQUFpQyxDQUFDO0FBQzdFLHNDQUFzQztBQUN0Qiw4QkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM3RCwyQ0FBMkM7QUFDM0IsbUNBQXFCLEdBQUcsOEJBQThCLENBQUM7QUFDdkUsMkNBQTJDO0FBQzNCLG1DQUFxQixHQUFHLDhCQUE4QixDQUFDO0FBQ3ZFLDBDQUEwQztBQUMxQixrQ0FBb0IsR0FBRyw2QkFBNkIsQ0FBQztBQUNyRSxtQ0FB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dkUsb0RBQW9EO0FBQ3BDLCtCQUFjLEdBQUcsdUJBQXVCLENBQUM7QUFDekQscUVBQXFFO0FBQ3JELGtEQUFpQyxHQUNoRCx3Q0FBd0MsQ0FBQztBQUMxQyx3REFBd0Q7QUFDeEMscUNBQW9CLEdBQUcsMkJBQTJCLENBQUM7QUFDbkUsbURBQW1EO0FBQ25DLHVCQUFNLEdBQUcsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFVVE8tR0VORVJBVEVEIEZJTEUg4oCUIERPIE5PVCBFRElUIE1BTlVBTExZXG4vLyBHZW5lcmF0ZWQgZnJvbSBBV1MgU2VydmljZSBBdXRob3JpemF0aW9uIFJlZmVyZW5jZSBkYXRhXG4vLyBTb3VyY2U6IGRhdGEvc2VydmljZS1yZWZlcmVuY2UvZXZlbnRzLmpzb25cbi8vIFJ1biBgbnB4IHByb2plbiBnZW5lcmF0ZS1jb25zdGFudHNgIHRvIHJlZ2VuZXJhdGVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogSUFNIGFjdGlvbiBjb25zdGFudHMgZm9yIHRoZSBldmVudHMgc2VydmljZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50c0FjdGlvbnMge1xuXHQvKiogVGhlIElBTSBzZXJ2aWNlIHByZWZpeC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFNFUlZJQ0VfUFJFRklYID0gXCJldmVudHNcIjtcblxuXHQvKiogW1dyaXRlXSBldmVudHM6QWN0aXZhdGVFdmVudFNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWN0aXZhdGVFdmVudFNvdXJjZSA9IFwiZXZlbnRzOkFjdGl2YXRlRXZlbnRTb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkFsbG93VmVuZGVkTG9nRGVsaXZlcnlGb3JSZXNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsb3dWZW5kZWRMb2dEZWxpdmVyeUZvclJlc291cmNlID1cblx0XHRcImV2ZW50czpBbGxvd1ZlbmRlZExvZ0RlbGl2ZXJ5Rm9yUmVzb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkNhbmNlbFJlcGxheSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ2FuY2VsUmVwbGF5ID0gXCJldmVudHM6Q2FuY2VsUmVwbGF5XCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpDcmVhdGVBcGlEZXN0aW5hdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQXBpRGVzdGluYXRpb24gPSBcImV2ZW50czpDcmVhdGVBcGlEZXN0aW5hdGlvblwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6Q3JlYXRlQXJjaGl2ZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQXJjaGl2ZSA9IFwiZXZlbnRzOkNyZWF0ZUFyY2hpdmVcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkNyZWF0ZUNvbm5lY3Rpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUNvbm5lY3Rpb24gPSBcImV2ZW50czpDcmVhdGVDb25uZWN0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpDcmVhdGVFbmRwb2ludCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRW5kcG9pbnQgPSBcImV2ZW50czpDcmVhdGVFbmRwb2ludFwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6Q3JlYXRlRXZlbnRCdXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUV2ZW50QnVzID0gXCJldmVudHM6Q3JlYXRlRXZlbnRCdXNcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkNyZWF0ZUV2ZW50U291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFdmVudFNvdXJjZSA9IFwiZXZlbnRzOkNyZWF0ZUV2ZW50U291cmNlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpDcmVhdGVQYXJ0bmVyRXZlbnRTb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVBhcnRuZXJFdmVudFNvdXJjZSA9IFwiZXZlbnRzOkNyZWF0ZVBhcnRuZXJFdmVudFNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6Q3JlYXRlU3Vic2NyaWJlciAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlU3Vic2NyaWJlciA9IFwiZXZlbnRzOkNyZWF0ZVN1YnNjcmliZXJcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkRlYWN0aXZhdGVFdmVudFNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVhY3RpdmF0ZUV2ZW50U291cmNlID0gXCJldmVudHM6RGVhY3RpdmF0ZUV2ZW50U291cmNlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWF1dGhvcml6ZUNvbm5lY3Rpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlYXV0aG9yaXplQ29ubmVjdGlvbiA9IFwiZXZlbnRzOkRlYXV0aG9yaXplQ29ubmVjdGlvblwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGVsZXRlQXBpRGVzdGluYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUFwaURlc3RpbmF0aW9uID0gXCJldmVudHM6RGVsZXRlQXBpRGVzdGluYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkRlbGV0ZUFyY2hpdmUgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUFyY2hpdmUgPSBcImV2ZW50czpEZWxldGVBcmNoaXZlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWxldGVDb25uZWN0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVDb25uZWN0aW9uID0gXCJldmVudHM6RGVsZXRlQ29ubmVjdGlvblwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGVsZXRlRW5kcG9pbnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUVuZHBvaW50ID0gXCJldmVudHM6RGVsZXRlRW5kcG9pbnRcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkRlbGV0ZUV2ZW50QnVzICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVFdmVudEJ1cyA9IFwiZXZlbnRzOkRlbGV0ZUV2ZW50QnVzXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWxldGVFdmVudFNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRXZlbnRTb3VyY2UgPSBcImV2ZW50czpEZWxldGVFdmVudFNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGVsZXRlUGFydG5lckV2ZW50U291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2UgPSBcImV2ZW50czpEZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2VcIjtcblx0LyoqIFtQZXJtaXNzaW9uTWFuYWdlbWVudF0gZXZlbnRzOkRlbGV0ZVJlc291cmNlUG9saWN5ICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVSZXNvdXJjZVBvbGljeSA9IFwiZXZlbnRzOkRlbGV0ZVJlc291cmNlUG9saWN5XCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpEZWxldGVSdWxlICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVSdWxlID0gXCJldmVudHM6RGVsZXRlUnVsZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGVsZXRlU3Vic2NyaWJlciAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlU3Vic2NyaWJlciA9IFwiZXZlbnRzOkRlbGV0ZVN1YnNjcmliZXJcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVBcGlEZXN0aW5hdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVBcGlEZXN0aW5hdGlvbiA9IFwiZXZlbnRzOkRlc2NyaWJlQXBpRGVzdGluYXRpb25cIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVBcmNoaXZlICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUFyY2hpdmUgPSBcImV2ZW50czpEZXNjcmliZUFyY2hpdmVcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVDb25uZWN0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUNvbm5lY3Rpb24gPSBcImV2ZW50czpEZXNjcmliZUNvbm5lY3Rpb25cIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVFbmRwb2ludCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVFbmRwb2ludCA9IFwiZXZlbnRzOkRlc2NyaWJlRW5kcG9pbnRcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVFdmVudEJ1cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVFdmVudEJ1cyA9IFwiZXZlbnRzOkRlc2NyaWJlRXZlbnRCdXNcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVFdmVudFNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVFdmVudFNvdXJjZSA9IFwiZXZlbnRzOkRlc2NyaWJlRXZlbnRTb3VyY2VcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6RGVzY3JpYmVQYXJ0bmVyRXZlbnRTb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlUGFydG5lckV2ZW50U291cmNlID1cblx0XHRcImV2ZW50czpEZXNjcmliZVBhcnRuZXJFdmVudFNvdXJjZVwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZVJlcGxheSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVSZXBsYXkgPSBcImV2ZW50czpEZXNjcmliZVJlcGxheVwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlUnVsZSA9IFwiZXZlbnRzOkRlc2NyaWJlUnVsZVwiO1xuXHQvKiogW1JlYWRdIGV2ZW50czpEZXNjcmliZVN1YnNjcmliZXIgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlU3Vic2NyaWJlciA9IFwiZXZlbnRzOkRlc2NyaWJlU3Vic2NyaWJlclwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6RGlzYWJsZVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IERpc2FibGVSdWxlID0gXCJldmVudHM6RGlzYWJsZVJ1bGVcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOkVuYWJsZVJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IEVuYWJsZVJ1bGUgPSBcImV2ZW50czpFbmFibGVSdWxlXCI7XG5cdC8qKiBbUmVhZF0gZXZlbnRzOkdldFJlc291cmNlUG9saWN5ICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRSZXNvdXJjZVBvbGljeSA9IFwiZXZlbnRzOkdldFJlc291cmNlUG9saWN5XCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpJbnZva2VBcGlEZXN0aW5hdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgSW52b2tlQXBpRGVzdGluYXRpb24gPSBcImV2ZW50czpJbnZva2VBcGlEZXN0aW5hdGlvblwiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0QXBpRGVzdGluYXRpb25zICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0QXBpRGVzdGluYXRpb25zID0gXCJldmVudHM6TGlzdEFwaURlc3RpbmF0aW9uc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0QXJjaGl2ZXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RBcmNoaXZlcyA9IFwiZXZlbnRzOkxpc3RBcmNoaXZlc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0Q29ubmVjdGlvbnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RDb25uZWN0aW9ucyA9IFwiZXZlbnRzOkxpc3RDb25uZWN0aW9uc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0RW5kcG9pbnRzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RW5kcG9pbnRzID0gXCJldmVudHM6TGlzdEVuZHBvaW50c1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0RXZlbnRCdXNlcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEV2ZW50QnVzZXMgPSBcImV2ZW50czpMaXN0RXZlbnRCdXNlc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0RXZlbnRTb3VyY2VzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RXZlbnRTb3VyY2VzID0gXCJldmVudHM6TGlzdEV2ZW50U291cmNlc1wiO1xuXHQvKiogW0xpc3RdIGV2ZW50czpMaXN0UGFydG5lckV2ZW50U291cmNlQWNjb3VudHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RQYXJ0bmVyRXZlbnRTb3VyY2VBY2NvdW50cyA9XG5cdFx0XCJldmVudHM6TGlzdFBhcnRuZXJFdmVudFNvdXJjZUFjY291bnRzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RQYXJ0bmVyRXZlbnRTb3VyY2VzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UGFydG5lckV2ZW50U291cmNlcyA9IFwiZXZlbnRzOkxpc3RQYXJ0bmVyRXZlbnRTb3VyY2VzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RSZXBsYXlzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UmVwbGF5cyA9IFwiZXZlbnRzOkxpc3RSZXBsYXlzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RSZXNvdXJjZVBvbGljaWVzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UmVzb3VyY2VQb2xpY2llcyA9IFwiZXZlbnRzOkxpc3RSZXNvdXJjZVBvbGljaWVzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RSdWxlTmFtZXNCeVRhcmdldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJ1bGVOYW1lc0J5VGFyZ2V0ID0gXCJldmVudHM6TGlzdFJ1bGVOYW1lc0J5VGFyZ2V0XCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RSdWxlcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJ1bGVzID0gXCJldmVudHM6TGlzdFJ1bGVzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RTdWJzY3JpYmVycyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFN1YnNjcmliZXJzID0gXCJldmVudHM6TGlzdFN1YnNjcmliZXJzXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RUYWdzRm9yUmVzb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2UgPSBcImV2ZW50czpMaXN0VGFnc0ZvclJlc291cmNlXCI7XG5cdC8qKiBbTGlzdF0gZXZlbnRzOkxpc3RUYXJnZXRzQnlSdWxlICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFyZ2V0c0J5UnVsZSA9IFwiZXZlbnRzOkxpc3RUYXJnZXRzQnlSdWxlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpQdXRFdmVudHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dEV2ZW50cyA9IFwiZXZlbnRzOlB1dEV2ZW50c1wiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6UHV0UGFydG5lckV2ZW50cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UGFydG5lckV2ZW50cyA9IFwiZXZlbnRzOlB1dFBhcnRuZXJFdmVudHNcIjtcblx0LyoqIFtQZXJtaXNzaW9uTWFuYWdlbWVudF0gZXZlbnRzOlB1dFBlcm1pc3Npb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFBlcm1pc3Npb24gPSBcImV2ZW50czpQdXRQZXJtaXNzaW9uXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpQdXRSYXdFdmVudHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJhd0V2ZW50cyA9IFwiZXZlbnRzOlB1dFJhd0V2ZW50c1wiO1xuXHQvKiogW1Blcm1pc3Npb25NYW5hZ2VtZW50XSBldmVudHM6UHV0UmVzb3VyY2VQb2xpY3kgKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJlc291cmNlUG9saWN5ID0gXCJldmVudHM6UHV0UmVzb3VyY2VQb2xpY3lcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlB1dFJ1bGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJ1bGUgPSBcImV2ZW50czpQdXRSdWxlXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpQdXRUYXJnZXRzICovXG5cdHN0YXRpYyByZWFkb25seSBQdXRUYXJnZXRzID0gXCJldmVudHM6UHV0VGFyZ2V0c1wiO1xuXHQvKiogW1Blcm1pc3Npb25NYW5hZ2VtZW50XSBldmVudHM6UmVtb3ZlUGVybWlzc2lvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUmVtb3ZlUGVybWlzc2lvbiA9IFwiZXZlbnRzOlJlbW92ZVBlcm1pc3Npb25cIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlJlbW92ZVRhcmdldHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IFJlbW92ZVRhcmdldHMgPSBcImV2ZW50czpSZW1vdmVUYXJnZXRzXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpSZXRyaWV2ZUNvbm5lY3Rpb25DcmVkZW50aWFscyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUmV0cmlldmVDb25uZWN0aW9uQ3JlZGVudGlhbHMgPVxuXHRcdFwiZXZlbnRzOlJldHJpZXZlQ29ubmVjdGlvbkNyZWRlbnRpYWxzXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpSZXZva2VSZXNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUmV2b2tlUmVzb3VyY2UgPSBcImV2ZW50czpSZXZva2VSZXNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6U3RhcnRSZXBsYXkgKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0UmVwbGF5ID0gXCJldmVudHM6U3RhcnRSZXBsYXlcIjtcblx0LyoqIFtUYWdnaW5nXSBldmVudHM6VGFnUmVzb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IFRhZ1Jlc291cmNlID0gXCJldmVudHM6VGFnUmVzb3VyY2VcIjtcblx0LyoqIFtSZWFkXSBldmVudHM6VGVzdEV2ZW50UGF0dGVybiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGVzdEV2ZW50UGF0dGVybiA9IFwiZXZlbnRzOlRlc3RFdmVudFBhdHRlcm5cIjtcblx0LyoqIFtUYWdnaW5nXSBldmVudHM6VW50YWdSZXNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZSA9IFwiZXZlbnRzOlVudGFnUmVzb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlVwZGF0ZUFwaURlc3RpbmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVBcGlEZXN0aW5hdGlvbiA9IFwiZXZlbnRzOlVwZGF0ZUFwaURlc3RpbmF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpVcGRhdGVBcmNoaXZlICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVBcmNoaXZlID0gXCJldmVudHM6VXBkYXRlQXJjaGl2ZVwiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6VXBkYXRlQ29ubmVjdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQ29ubmVjdGlvbiA9IFwiZXZlbnRzOlVwZGF0ZUNvbm5lY3Rpb25cIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlVwZGF0ZUVuZHBvaW50ICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFbmRwb2ludCA9IFwiZXZlbnRzOlVwZGF0ZUVuZHBvaW50XCI7XG5cdC8qKiBbV3JpdGVdIGV2ZW50czpVcGRhdGVFdmVudEJ1cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXZlbnRCdXMgPSBcImV2ZW50czpVcGRhdGVFdmVudEJ1c1wiO1xuXHQvKiogW1dyaXRlXSBldmVudHM6VXBkYXRlRXZlbnRTb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUV2ZW50U291cmNlID0gXCJldmVudHM6VXBkYXRlRXZlbnRTb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gZXZlbnRzOlVwZGF0ZVN1YnNjcmliZXIgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVN1YnNjcmliZXIgPSBcImV2ZW50czpVcGRhdGVTdWJzY3JpYmVyXCI7XG5cblx0LyoqIEFsbCByZWFkLWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxSZWFkQWN0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0RXZlbnRzQWN0aW9ucy5EZXNjcmliZUFwaURlc3RpbmF0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVzY3JpYmVBcmNoaXZlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVzY3JpYmVDb25uZWN0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVzY3JpYmVFbmRwb2ludCxcblx0XHRFdmVudHNBY3Rpb25zLkRlc2NyaWJlRXZlbnRCdXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZXNjcmliZUV2ZW50U291cmNlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVzY3JpYmVQYXJ0bmVyRXZlbnRTb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZXNjcmliZVJlcGxheSxcblx0XHRFdmVudHNBY3Rpb25zLkRlc2NyaWJlUnVsZSxcblx0XHRFdmVudHNBY3Rpb25zLkRlc2NyaWJlU3Vic2NyaWJlcixcblx0XHRFdmVudHNBY3Rpb25zLmFjdGlvbkdldFJlc291cmNlUG9saWN5LFxuXHRcdEV2ZW50c0FjdGlvbnMuVGVzdEV2ZW50UGF0dGVybixcblx0XTtcblx0LyoqIEFsbCB3cml0ZS1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsV3JpdGVBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRFdmVudHNBY3Rpb25zLkFjdGl2YXRlRXZlbnRTb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5BbGxvd1ZlbmRlZExvZ0RlbGl2ZXJ5Rm9yUmVzb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5DYW5jZWxSZXBsYXksXG5cdFx0RXZlbnRzQWN0aW9ucy5DcmVhdGVBcGlEZXN0aW5hdGlvbixcblx0XHRFdmVudHNBY3Rpb25zLkNyZWF0ZUFyY2hpdmUsXG5cdFx0RXZlbnRzQWN0aW9ucy5DcmVhdGVDb25uZWN0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuQ3JlYXRlRW5kcG9pbnQsXG5cdFx0RXZlbnRzQWN0aW9ucy5DcmVhdGVFdmVudEJ1cyxcblx0XHRFdmVudHNBY3Rpb25zLkNyZWF0ZUV2ZW50U291cmNlLFxuXHRcdEV2ZW50c0FjdGlvbnMuQ3JlYXRlUGFydG5lckV2ZW50U291cmNlLFxuXHRcdEV2ZW50c0FjdGlvbnMuQ3JlYXRlU3Vic2NyaWJlcixcblx0XHRFdmVudHNBY3Rpb25zLkRlYWN0aXZhdGVFdmVudFNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLkRlYXV0aG9yaXplQ29ubmVjdGlvbixcblx0XHRFdmVudHNBY3Rpb25zLkRlbGV0ZUFwaURlc3RpbmF0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVsZXRlQXJjaGl2ZSxcblx0XHRFdmVudHNBY3Rpb25zLkRlbGV0ZUNvbm5lY3Rpb24sXG5cdFx0RXZlbnRzQWN0aW9ucy5EZWxldGVFbmRwb2ludCxcblx0XHRFdmVudHNBY3Rpb25zLkRlbGV0ZUV2ZW50QnVzLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVsZXRlRXZlbnRTb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5EZWxldGVSdWxlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRGVsZXRlU3Vic2NyaWJlcixcblx0XHRFdmVudHNBY3Rpb25zLkRpc2FibGVSdWxlLFxuXHRcdEV2ZW50c0FjdGlvbnMuRW5hYmxlUnVsZSxcblx0XHRFdmVudHNBY3Rpb25zLkludm9rZUFwaURlc3RpbmF0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuUHV0RXZlbnRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuUHV0UGFydG5lckV2ZW50cyxcblx0XHRFdmVudHNBY3Rpb25zLlB1dFJhd0V2ZW50cyxcblx0XHRFdmVudHNBY3Rpb25zLlB1dFJ1bGUsXG5cdFx0RXZlbnRzQWN0aW9ucy5QdXRUYXJnZXRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuUmVtb3ZlVGFyZ2V0cyxcblx0XHRFdmVudHNBY3Rpb25zLlJldHJpZXZlQ29ubmVjdGlvbkNyZWRlbnRpYWxzLFxuXHRcdEV2ZW50c0FjdGlvbnMuUmV2b2tlUmVzb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5TdGFydFJlcGxheSxcblx0XHRFdmVudHNBY3Rpb25zLlVwZGF0ZUFwaURlc3RpbmF0aW9uLFxuXHRcdEV2ZW50c0FjdGlvbnMuVXBkYXRlQXJjaGl2ZSxcblx0XHRFdmVudHNBY3Rpb25zLlVwZGF0ZUNvbm5lY3Rpb24sXG5cdFx0RXZlbnRzQWN0aW9ucy5VcGRhdGVFbmRwb2ludCxcblx0XHRFdmVudHNBY3Rpb25zLlVwZGF0ZUV2ZW50QnVzLFxuXHRcdEV2ZW50c0FjdGlvbnMuVXBkYXRlRXZlbnRTb3VyY2UsXG5cdFx0RXZlbnRzQWN0aW9ucy5VcGRhdGVTdWJzY3JpYmVyLFxuXHRdO1xuXHQvKiogQWxsIGxpc3QtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbExpc3RBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RBcGlEZXN0aW5hdGlvbnMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0QXJjaGl2ZXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0Q29ubmVjdGlvbnMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0RW5kcG9pbnRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdEV2ZW50QnVzZXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0RXZlbnRTb3VyY2VzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFBhcnRuZXJFdmVudFNvdXJjZUFjY291bnRzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFBhcnRuZXJFdmVudFNvdXJjZXMsXG5cdFx0RXZlbnRzQWN0aW9ucy5MaXN0UmVwbGF5cyxcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RSZXNvdXJjZVBvbGljaWVzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFJ1bGVOYW1lc0J5VGFyZ2V0LFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFJ1bGVzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFN1YnNjcmliZXJzLFxuXHRcdEV2ZW50c0FjdGlvbnMuTGlzdFRhZ3NGb3JSZXNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLkxpc3RUYXJnZXRzQnlSdWxlLFxuXHRdO1xuXHQvKiogQWxsIHBlcm1pc3Npb24tbWFuYWdlbWVudC1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsUGVybWlzc2lvbk1hbmFnZW1lbnRBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRFdmVudHNBY3Rpb25zLkRlbGV0ZVJlc291cmNlUG9saWN5LFxuXHRcdEV2ZW50c0FjdGlvbnMuUHV0UGVybWlzc2lvbixcblx0XHRFdmVudHNBY3Rpb25zLlB1dFJlc291cmNlUG9saWN5LFxuXHRcdEV2ZW50c0FjdGlvbnMuUmVtb3ZlUGVybWlzc2lvbixcblx0XTtcblx0LyoqIEFsbCB0YWdnaW5nLWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxUYWdnaW5nQWN0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0RXZlbnRzQWN0aW9ucy5UYWdSZXNvdXJjZSxcblx0XHRFdmVudHNBY3Rpb25zLlVudGFnUmVzb3VyY2UsXG5cdF07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBhbGlhcyBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzQWxpYXNBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgQWxpYXMgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGFsaWFzOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgYWxpYXMgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0FsaWFzQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBBbGlhcyBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGFsaWFzOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBhcGktZGVzdGluYXRpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0FQSURlc3RpbmF0aW9uQXJuUHJvcHMge1xuXHQvKiogVGhlIEFwaURlc3RpbmF0aW9uTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgYXBpRGVzdGluYXRpb25OYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgYXBpLWRlc3RpbmF0aW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNBUElEZXN0aW5hdGlvbkFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgQXBpRGVzdGluYXRpb25OYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgYXBpRGVzdGluYXRpb25OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBhcmNoaXZlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNBcmNoaXZlQXJuUHJvcHMge1xuXHQvKiogVGhlIEFyY2hpdmVOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBhcmNoaXZlTmFtZTogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGFyY2hpdmUgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0FyY2hpdmVBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIEFyY2hpdmVOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgYXJjaGl2ZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGNvbm5lY3Rpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0Nvbm5lY3Rpb25Bcm5Qcm9wcyB7XG5cdC8qKiBUaGUgQ29ubmVjdGlvbk5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGNvbm5lY3Rpb25OYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgY29ubmVjdGlvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzQ29ubmVjdGlvbkFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgQ29ubmVjdGlvbk5hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBjb25uZWN0aW9uTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgY3JlYXRlLXNuYXBzaG90IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNDcmVhdGVTbmFwc2hvdEFyblByb3BzIHtcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBjcmVhdGUtc25hcHNob3QgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0NyZWF0ZVNuYXBzaG90QXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGVuZHBvaW50IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFbmRwb2ludEFyblByb3BzIHtcblx0LyoqIFRoZSBFbmRwb2ludE5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGVuZHBvaW50TmFtZTogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGVuZHBvaW50IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFbmRwb2ludEFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRW5kcG9pbnROYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZW5kcG9pbnROYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBldmVudC1idXMgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0V2ZW50QnVzQXJuUHJvcHMge1xuXHQvKiogVGhlIEV2ZW50QnVzTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZXZlbnRCdXNOYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZXZlbnQtYnVzIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFdmVudEJ1c0FybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRXZlbnRCdXNOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZXZlbnRCdXNOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBldmVudC1idXN2MiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzRXZlbnRCdXN2MkFyblByb3BzIHtcblx0LyoqIFRoZSBFdmVudEJ1c05hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGV2ZW50QnVzTmFtZTogc3RyaW5nO1xuXHQvKiogVGhlIE9wYXF1ZUlkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBvcGFxdWVJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGV2ZW50LWJ1c3YyIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFdmVudEJ1c3YyQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBFdmVudEJ1c05hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBldmVudEJ1c05hbWU6IHN0cmluZztcblx0LyoqIFRoZSBPcGFxdWVJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IG9wYXF1ZUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBldmVudC1zb3VyY2UgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0V2ZW50U291cmNlQXJuUHJvcHMge1xuXHQvKiogVGhlIEV2ZW50U291cmNlTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZXZlbnRTb3VyY2VOYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZXZlbnQtc291cmNlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNFdmVudFNvdXJjZUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRXZlbnRTb3VyY2VOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZXZlbnRTb3VyY2VOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBldmVudC1zb3VyY2V2MiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzRXZlbnRTb3VyY2V2MkFyblByb3BzIHtcblx0LyoqIFRoZSBTb3VyY2VUeXBlIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBzb3VyY2VUeXBlOiBzdHJpbmc7XG5cdC8qKiBUaGUgRXZlbnRTb3VyY2VOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBldmVudFNvdXJjZU5hbWU6IHN0cmluZztcblx0LyoqIFRoZSBPcGFxdWVJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgb3BhcXVlSWQ6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBldmVudC1zb3VyY2V2MiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzRXZlbnRTb3VyY2V2MkFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgU291cmNlVHlwZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHNvdXJjZVR5cGU6IHN0cmluZztcblx0LyoqIFRoZSBFdmVudFNvdXJjZU5hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBldmVudFNvdXJjZU5hbWU6IHN0cmluZztcblx0LyoqIFRoZSBPcGFxdWVJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IG9wYXF1ZUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBrZXkgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0tleUFyblByb3BzIHtcblx0LyoqIFRoZSBLZXlJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkga2V5SWQ6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBrZXkgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c0tleUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgS2V5SWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBrZXlJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgcmVib290LWluc3RhbmNlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNSZWJvb3RJbnN0YW5jZUFyblByb3BzIHtcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSByZWJvb3QtaW5zdGFuY2UgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1JlYm9vdEluc3RhbmNlQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHJlcGxheSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzUmVwbGF5QXJuUHJvcHMge1xuXHQvKiogVGhlIFJlcGxheU5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHJlcGxheU5hbWU6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSByZXBsYXkgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1JlcGxheUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgUmVwbGF5TmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHJlcGxheU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHJ1bGUtb24tY3VzdG9tLWV2ZW50LWJ1cyBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzUnVsZU9uQ3VzdG9tRXZlbnRCdXNBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgRXZlbnRCdXNOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBldmVudEJ1c05hbWU6IHN0cmluZztcblx0LyoqIFRoZSBSdWxlTmFtZSBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgcnVsZU5hbWU6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBydWxlLW9uLWN1c3RvbS1ldmVudC1idXMgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1J1bGVPbkN1c3RvbUV2ZW50QnVzQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBFdmVudEJ1c05hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBldmVudEJ1c05hbWU6IHN0cmluZztcblx0LyoqIFRoZSBSdWxlTmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBydWxlLW9uLWRlZmF1bHQtZXZlbnQtYnVzIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgUnVsZU5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgcnVsZS1vbi1kZWZhdWx0LWV2ZW50LWJ1cyBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzUnVsZU9uRGVmYXVsdEV2ZW50QnVzQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBSdWxlTmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBzdG9wLWluc3RhbmNlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNTdG9wSW5zdGFuY2VBcm5Qcm9wcyB7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgc3RvcC1pbnN0YW5jZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzU3RvcEluc3RhbmNlQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHN1YnNjcmliZXIgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50c1N1YnNjcmliZXJBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgU3Vic2NyaWJlck5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHN1YnNjcmliZXJOYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgT3BhcXVlSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IG9wYXF1ZUlkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgc3Vic2NyaWJlciBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzU3Vic2NyaWJlckFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgU3Vic2NyaWJlck5hbWUgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBzdWJzY3JpYmVyTmFtZTogc3RyaW5nO1xuXHQvKiogVGhlIE9wYXF1ZUlkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgb3BhcXVlSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHRlcm1pbmF0ZS1pbnN0YW5jZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRzVGVybWluYXRlSW5zdGFuY2VBcm5Qcm9wcyB7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgdGVybWluYXRlLWluc3RhbmNlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudHNUZXJtaW5hdGVJbnN0YW5jZUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG59XG5cbmNvbnN0IEFsaWFzQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmttczooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmFsaWFzXFwvKD88YWxpYXM+W146Lz9dKykkLztcbmNvbnN0IEFQSURlc3RpbmF0aW9uQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmFwaS1kZXN0aW5hdGlvblxcLyg/PGFwaURlc3RpbmF0aW9uTmFtZT5bXjovP10rKSQvO1xuY29uc3QgQXJjaGl2ZUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTphcmNoaXZlXFwvKD88YXJjaGl2ZU5hbWU+W146Lz9dKykkLztcbmNvbnN0IENvbm5lY3Rpb25Bcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6Y29ubmVjdGlvblxcLyg/PGNvbm5lY3Rpb25OYW1lPlteOi8/XSspJC87XG5jb25zdCBDcmVhdGVTbmFwc2hvdEFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTp0YXJnZXRcXC9jcmVhdGUtc25hcHNob3QkLztcbmNvbnN0IEVuZHBvaW50QXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmVuZHBvaW50XFwvKD88ZW5kcG9pbnROYW1lPlteOi8/XSspJC87XG5jb25zdCBFdmVudEJ1c0FyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpldmVudC1idXNcXC8oPzxldmVudEJ1c05hbWU+W146Lz9dKykkLztcbmNvbnN0IEV2ZW50QnVzdjJBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6ZXZlbnQtYnVzdjJcXC8oPzxldmVudEJ1c05hbWU+W146Lz9dKylcXC8oPzxvcGFxdWVJZD5bXjovP10rKSQvO1xuY29uc3QgRXZlbnRTb3VyY2VBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6ZXZlbnRzOig/PHJlZ2lvbj5bXjpdKik6OmV2ZW50LXNvdXJjZVxcLyg/PGV2ZW50U291cmNlTmFtZT5bXjovP10rKSQvO1xuY29uc3QgRXZlbnRTb3VyY2V2MkFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpldmVudC1zb3VyY2V2MlxcLyg/PHNvdXJjZVR5cGU+W146Lz9dKylcXC8oPzxldmVudFNvdXJjZU5hbWU+W146Lz9dKylcXC8oPzxvcGFxdWVJZD5bXjovP10rKSQvO1xuY29uc3QgS2V5QXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmttczooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmtleVxcLyg/PGtleUlkPlteOi8/XSspJC87XG5jb25zdCBSZWJvb3RJbnN0YW5jZUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTp0YXJnZXRcXC9yZWJvb3QtaW5zdGFuY2UkLztcbmNvbnN0IFJlcGxheUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpyZXBsYXlcXC8oPzxyZXBsYXlOYW1lPlteOi8/XSspJC87XG5jb25zdCBSdWxlT25DdXN0b21FdmVudEJ1c0FyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpydWxlXFwvKD88ZXZlbnRCdXNOYW1lPlteOi8/XSspXFwvKD88cnVsZU5hbWU+W146Lz9dKykkLztcbmNvbnN0IFJ1bGVPbkRlZmF1bHRFdmVudEJ1c0FyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpydWxlXFwvKD88cnVsZU5hbWU+W146Lz9dKykkLztcbmNvbnN0IFN0b3BJbnN0YW5jZUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTp0YXJnZXRcXC9zdG9wLWluc3RhbmNlJC87XG5jb25zdCBTdWJzY3JpYmVyQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmV2ZW50czooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOnN1YnNjcmliZXJcXC8oPzxzdWJzY3JpYmVyTmFtZT5bXjovP10rKVxcLyg/PG9wYXF1ZUlkPlteOi8/XSspJC87XG5jb25zdCBUZXJtaW5hdGVJbnN0YW5jZUFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpldmVudHM6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTp0YXJnZXRcXC90ZXJtaW5hdGUtaW5zdGFuY2UkLztcblxuLyoqXG4gKiBBUk4gYnVpbGRlcnMsIHZhbGlkYXRvcnMsIGFuZCBwYXJzZXJzIGZvciBldmVudHMgcmVzb3VyY2VzLlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRzUmVzb3VyY2VzIHtcblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBhbGlhcyByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBhbGlhcyhwcm9wczogRXZlbnRzQWxpYXNBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06a21zOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmFsaWFzLyR7cHJvcHMuYWxpYXN9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGFsaWFzIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRBbGlhc0Fybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBBbGlhc0FyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBhbGlhcyBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VBbGlhc0Fybihhcm46IHN0cmluZyk6IEV2ZW50c0FsaWFzQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBBbGlhc0FyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhbGlhcyBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRhbGlhczogbWF0Y2guZ3JvdXBzIS5hbGlhcyxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBhcGktZGVzdGluYXRpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgYXBpRGVzdGluYXRpb24ocHJvcHM6IEV2ZW50c0FQSURlc3RpbmF0aW9uQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTphcGktZGVzdGluYXRpb24vJHtwcm9wcy5hcGlEZXN0aW5hdGlvbk5hbWV9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGFwaS1kZXN0aW5hdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkQVBJRGVzdGluYXRpb25Bcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gQVBJRGVzdGluYXRpb25Bcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgYXBpLWRlc3RpbmF0aW9uIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUFQSURlc3RpbmF0aW9uQXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBFdmVudHNBUElEZXN0aW5hdGlvbkFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gQVBJRGVzdGluYXRpb25Bcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXBpLWRlc3RpbmF0aW9uIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGFwaURlc3RpbmF0aW9uTmFtZTogbWF0Y2guZ3JvdXBzIS5hcGlEZXN0aW5hdGlvbk5hbWUsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgYXJjaGl2ZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBhcmNoaXZlKHByb3BzOiBFdmVudHNBcmNoaXZlQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTphcmNoaXZlLyR7cHJvcHMuYXJjaGl2ZU5hbWV9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGFyY2hpdmUgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZEFyY2hpdmVBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gQXJjaGl2ZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBhcmNoaXZlIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUFyY2hpdmVBcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNBcmNoaXZlQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBBcmNoaXZlQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFyY2hpdmUgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0YXJjaGl2ZU5hbWU6IG1hdGNoLmdyb3VwcyEuYXJjaGl2ZU5hbWUsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgY29ubmVjdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBjb25uZWN0aW9uKHByb3BzOiBFdmVudHNDb25uZWN0aW9uQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpjb25uZWN0aW9uLyR7cHJvcHMuY29ubmVjdGlvbk5hbWV9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGNvbm5lY3Rpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZENvbm5lY3Rpb25Bcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gQ29ubmVjdGlvbkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBjb25uZWN0aW9uIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUNvbm5lY3Rpb25Bcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNDb25uZWN0aW9uQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBDb25uZWN0aW9uQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbm5lY3Rpb24gQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0Y29ubmVjdGlvbk5hbWU6IG1hdGNoLmdyb3VwcyEuY29ubmVjdGlvbk5hbWUsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgY3JlYXRlLXNuYXBzaG90IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGNyZWF0ZVNuYXBzaG90KHByb3BzOiBFdmVudHNDcmVhdGVTbmFwc2hvdEFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06dGFyZ2V0L2NyZWF0ZS1zbmFwc2hvdGA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBjcmVhdGUtc25hcHNob3QgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZENyZWF0ZVNuYXBzaG90QXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIENyZWF0ZVNuYXBzaG90QXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGNyZWF0ZS1zbmFwc2hvdCBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VDcmVhdGVTbmFwc2hvdEFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogRXZlbnRzQ3JlYXRlU25hcHNob3RBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IENyZWF0ZVNuYXBzaG90QXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNyZWF0ZS1zbmFwc2hvdCBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgZW5kcG9pbnQgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgZW5kcG9pbnQocHJvcHM6IEV2ZW50c0VuZHBvaW50QXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTplbmRwb2ludC8ke3Byb3BzLmVuZHBvaW50TmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZW5kcG9pbnQgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZEVuZHBvaW50QXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEVuZHBvaW50QXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGVuZHBvaW50IEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUVuZHBvaW50QXJuKGFybjogc3RyaW5nKTogRXZlbnRzRW5kcG9pbnRBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEVuZHBvaW50QXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVuZHBvaW50IEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGVuZHBvaW50TmFtZTogbWF0Y2guZ3JvdXBzIS5lbmRwb2ludE5hbWUsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgZXZlbnQtYnVzIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGV2ZW50QnVzKHByb3BzOiBFdmVudHNFdmVudEJ1c0FyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06ZXZlbnQtYnVzLyR7cHJvcHMuZXZlbnRCdXNOYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBldmVudC1idXMgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZEV2ZW50QnVzQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEV2ZW50QnVzQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGV2ZW50LWJ1cyBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VFdmVudEJ1c0Fybihhcm46IHN0cmluZyk6IEV2ZW50c0V2ZW50QnVzQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBFdmVudEJ1c0FyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBldmVudC1idXMgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0ZXZlbnRCdXNOYW1lOiBtYXRjaC5ncm91cHMhLmV2ZW50QnVzTmFtZSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBldmVudC1idXN2MiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBldmVudEJ1c3YyKHByb3BzOiBFdmVudHNFdmVudEJ1c3YyQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmV2ZW50czoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpldmVudC1idXN2Mi8ke3Byb3BzLmV2ZW50QnVzTmFtZX0vJHtwcm9wcy5vcGFxdWVJZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZXZlbnQtYnVzdjIgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZEV2ZW50QnVzdjJBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRXZlbnRCdXN2MkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBldmVudC1idXN2MiBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VFdmVudEJ1c3YyQXJuKGFybjogc3RyaW5nKTogRXZlbnRzRXZlbnRCdXN2MkFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gRXZlbnRCdXN2MkFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBldmVudC1idXN2MiBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRldmVudEJ1c05hbWU6IG1hdGNoLmdyb3VwcyEuZXZlbnRCdXNOYW1lLFxuXHRcdFx0b3BhcXVlSWQ6IG1hdGNoLmdyb3VwcyEub3BhcXVlSWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgZXZlbnQtc291cmNlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGV2ZW50U291cmNlKHByb3BzOiBFdmVudHNFdmVudFNvdXJjZUFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OjpldmVudC1zb3VyY2UvJHtwcm9wcy5ldmVudFNvdXJjZU5hbWV9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGV2ZW50LXNvdXJjZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkRXZlbnRTb3VyY2VBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRXZlbnRTb3VyY2VBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgZXZlbnQtc291cmNlIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUV2ZW50U291cmNlQXJuKGFybjogc3RyaW5nKTogRXZlbnRzRXZlbnRTb3VyY2VBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEV2ZW50U291cmNlQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGV2ZW50LXNvdXJjZSBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRldmVudFNvdXJjZU5hbWU6IG1hdGNoLmdyb3VwcyEuZXZlbnRTb3VyY2VOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGV2ZW50LXNvdXJjZXYyIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGV2ZW50U291cmNldjIocHJvcHM6IEV2ZW50c0V2ZW50U291cmNldjJBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmV2ZW50LXNvdXJjZXYyLyR7cHJvcHMuc291cmNlVHlwZX0vJHtwcm9wcy5ldmVudFNvdXJjZU5hbWV9LyR7cHJvcHMub3BhcXVlSWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGV2ZW50LXNvdXJjZXYyIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRFdmVudFNvdXJjZXYyQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEV2ZW50U291cmNldjJBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgZXZlbnQtc291cmNldjIgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlRXZlbnRTb3VyY2V2MkFybihhcm46IHN0cmluZyk6IEV2ZW50c0V2ZW50U291cmNldjJBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEV2ZW50U291cmNldjJBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZXZlbnQtc291cmNldjIgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0c291cmNlVHlwZTogbWF0Y2guZ3JvdXBzIS5zb3VyY2VUeXBlLFxuXHRcdFx0ZXZlbnRTb3VyY2VOYW1lOiBtYXRjaC5ncm91cHMhLmV2ZW50U291cmNlTmFtZSxcblx0XHRcdG9wYXF1ZUlkOiBtYXRjaC5ncm91cHMhLm9wYXF1ZUlkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGtleSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBrZXkocHJvcHM6IEV2ZW50c0tleUFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTprbXM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06a2V5LyR7cHJvcHMua2V5SWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGtleSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkS2V5QXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEtleUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBrZXkgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlS2V5QXJuKGFybjogc3RyaW5nKTogRXZlbnRzS2V5QXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBLZXlBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQga2V5IEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGtleUlkOiBtYXRjaC5ncm91cHMhLmtleUlkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHJlYm9vdC1pbnN0YW5jZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyByZWJvb3RJbnN0YW5jZShwcm9wczogRXZlbnRzUmVib290SW5zdGFuY2VBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnRhcmdldC9yZWJvb3QtaW5zdGFuY2VgO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgcmVib290LWluc3RhbmNlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRSZWJvb3RJbnN0YW5jZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBSZWJvb3RJbnN0YW5jZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSByZWJvb3QtaW5zdGFuY2UgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlUmVib290SW5zdGFuY2VBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEV2ZW50c1JlYm9vdEluc3RhbmNlQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBSZWJvb3RJbnN0YW5jZUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZWJvb3QtaW5zdGFuY2UgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHJlcGxheSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyByZXBsYXkocHJvcHM6IEV2ZW50c1JlcGxheUFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06cmVwbGF5LyR7cHJvcHMucmVwbGF5TmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgcmVwbGF5IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRSZXBsYXlBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gUmVwbGF5QXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHJlcGxheSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VSZXBsYXlBcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNSZXBsYXlBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFJlcGxheUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZXBsYXkgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0cmVwbGF5TmFtZTogbWF0Y2guZ3JvdXBzIS5yZXBsYXlOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHJ1bGUtb24tY3VzdG9tLWV2ZW50LWJ1cyByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBydWxlT25DdXN0b21FdmVudEJ1cyhcblx0XHRwcm9wczogRXZlbnRzUnVsZU9uQ3VzdG9tRXZlbnRCdXNBcm5Qcm9wcyxcblx0KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06cnVsZS8ke3Byb3BzLmV2ZW50QnVzTmFtZX0vJHtwcm9wcy5ydWxlTmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgcnVsZS1vbi1jdXN0b20tZXZlbnQtYnVzIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRSdWxlT25DdXN0b21FdmVudEJ1c0Fybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBSdWxlT25DdXN0b21FdmVudEJ1c0FyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBydWxlLW9uLWN1c3RvbS1ldmVudC1idXMgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlUnVsZU9uQ3VzdG9tRXZlbnRCdXNBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEV2ZW50c1J1bGVPbkN1c3RvbUV2ZW50QnVzQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBSdWxlT25DdXN0b21FdmVudEJ1c0FyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBydWxlLW9uLWN1c3RvbS1ldmVudC1idXMgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0ZXZlbnRCdXNOYW1lOiBtYXRjaC5ncm91cHMhLmV2ZW50QnVzTmFtZSxcblx0XHRcdHJ1bGVOYW1lOiBtYXRjaC5ncm91cHMhLnJ1bGVOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHJ1bGUtb24tZGVmYXVsdC1ldmVudC1idXMgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgcnVsZU9uRGVmYXVsdEV2ZW50QnVzKFxuXHRcdHByb3BzOiBFdmVudHNSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm5Qcm9wcyxcblx0KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpldmVudHM6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06cnVsZS8ke3Byb3BzLnJ1bGVOYW1lfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBydWxlLW9uLWRlZmF1bHQtZXZlbnQtYnVzIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gUnVsZU9uRGVmYXVsdEV2ZW50QnVzQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHJ1bGUtb24tZGVmYXVsdC1ldmVudC1idXMgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlUnVsZU9uRGVmYXVsdEV2ZW50QnVzQXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBFdmVudHNSdWxlT25EZWZhdWx0RXZlbnRCdXNBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFJ1bGVPbkRlZmF1bHRFdmVudEJ1c0FyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBydWxlLW9uLWRlZmF1bHQtZXZlbnQtYnVzIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdHJ1bGVOYW1lOiBtYXRjaC5ncm91cHMhLnJ1bGVOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHN0b3AtaW5zdGFuY2UgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgc3RvcEluc3RhbmNlKHByb3BzOiBFdmVudHNTdG9wSW5zdGFuY2VBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnRhcmdldC9zdG9wLWluc3RhbmNlYDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIHN0b3AtaW5zdGFuY2UgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZFN0b3BJbnN0YW5jZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBTdG9wSW5zdGFuY2VBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgc3RvcC1pbnN0YW5jZSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VTdG9wSW5zdGFuY2VBcm4oYXJuOiBzdHJpbmcpOiBFdmVudHNTdG9wSW5zdGFuY2VBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFN0b3BJbnN0YW5jZUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzdG9wLWluc3RhbmNlIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBzdWJzY3JpYmVyIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIHN1YnNjcmliZXIocHJvcHM6IEV2ZW50c1N1YnNjcmliZXJBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnN1YnNjcmliZXIvJHtwcm9wcy5zdWJzY3JpYmVyTmFtZX0vJHtwcm9wcy5vcGFxdWVJZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgc3Vic2NyaWJlciByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkU3Vic2NyaWJlckFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBTdWJzY3JpYmVyQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHN1YnNjcmliZXIgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlU3Vic2NyaWJlckFybihhcm46IHN0cmluZyk6IEV2ZW50c1N1YnNjcmliZXJBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFN1YnNjcmliZXJBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc3Vic2NyaWJlciBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRzdWJzY3JpYmVyTmFtZTogbWF0Y2guZ3JvdXBzIS5zdWJzY3JpYmVyTmFtZSxcblx0XHRcdG9wYXF1ZUlkOiBtYXRjaC5ncm91cHMhLm9wYXF1ZUlkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHRlcm1pbmF0ZS1pbnN0YW5jZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyB0ZXJtaW5hdGVJbnN0YW5jZShwcm9wczogRXZlbnRzVGVybWluYXRlSW5zdGFuY2VBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06ZXZlbnRzOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OnRhcmdldC90ZXJtaW5hdGUtaW5zdGFuY2VgO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgdGVybWluYXRlLWluc3RhbmNlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRUZXJtaW5hdGVJbnN0YW5jZUFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBUZXJtaW5hdGVJbnN0YW5jZUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSB0ZXJtaW5hdGUtaW5zdGFuY2UgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlVGVybWluYXRlSW5zdGFuY2VBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEV2ZW50c1Rlcm1pbmF0ZUluc3RhbmNlQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBUZXJtaW5hdGVJbnN0YW5jZUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZXJtaW5hdGUtaW5zdGFuY2UgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdH07XG5cdH1cbn1cblxuLyoqXG4gKiBBUEkgb3BlcmF0aW9uIHRvIHJlcXVpcmVkIElBTSBhY3Rpb25zIG1hcHBpbmcgZm9yIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50c09wZXJhdGlvbnMge1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBBY3RpdmF0ZUV2ZW50U291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWN0aXZhdGVFdmVudFNvdXJjZTogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6QWN0aXZhdGVFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDYW5jZWxSZXBsYXkgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDYW5jZWxSZXBsYXk6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkNhbmNlbFJlcGxheVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlQXBpRGVzdGluYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVBcGlEZXN0aW5hdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6Q3JlYXRlQXBpRGVzdGluYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlQXJjaGl2ZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUFyY2hpdmU6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkNyZWF0ZUFyY2hpdmVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZUNvbm5lY3Rpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVDb25uZWN0aW9uOiBzdHJpbmdbXSA9IFtcImV2ZW50czpDcmVhdGVDb25uZWN0aW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVFbmRwb2ludCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUVuZHBvaW50OiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpDcmVhdGVFbmRwb2ludFwiLFxuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZUV2ZW50QnVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRXZlbnRCdXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkNyZWF0ZUV2ZW50QnVzXCIsXG5cdFx0XCJldmVudHM6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlRXZlbnRTb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFdmVudFNvdXJjZTogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6Q3JlYXRlRXZlbnRTb3VyY2VcIixcblx0XHRcImV2ZW50czpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVQYXJ0bmVyRXZlbnRTb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVQYXJ0bmVyRXZlbnRTb3VyY2U6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkNyZWF0ZVBhcnRuZXJFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVTdWJzY3JpYmVyIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlU3Vic2NyaWJlcjogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6Q3JlYXRlU3Vic2NyaWJlclwiLFxuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJldmVudHM6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVhY3RpdmF0ZUV2ZW50U291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVhY3RpdmF0ZUV2ZW50U291cmNlOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZWFjdGl2YXRlRXZlbnRTb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVhdXRob3JpemVDb25uZWN0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVhdXRob3JpemVDb25uZWN0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZWF1dGhvcml6ZUNvbm5lY3Rpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlQXBpRGVzdGluYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVBcGlEZXN0aW5hdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6RGVsZXRlQXBpRGVzdGluYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlQXJjaGl2ZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUFyY2hpdmU6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlbGV0ZUFyY2hpdmVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUNvbm5lY3Rpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVDb25uZWN0aW9uOiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZWxldGVDb25uZWN0aW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVFbmRwb2ludCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUVuZHBvaW50OiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZWxldGVFbmRwb2ludFwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlRXZlbnRCdXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVFdmVudEJ1czogc3RyaW5nW10gPSBbXCJldmVudHM6RGVsZXRlRXZlbnRCdXNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUV2ZW50U291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRXZlbnRTb3VyY2U6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlbGV0ZUV2ZW50U291cmNlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVQYXJ0bmVyRXZlbnRTb3VyY2U6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkRlbGV0ZVBhcnRuZXJFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVSZXNvdXJjZVBvbGljeSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVJlc291cmNlUG9saWN5OiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZWxldGVSZXNvdXJjZVBvbGljeVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlUnVsZTogc3RyaW5nW10gPSBbXCJldmVudHM6RGVsZXRlUnVsZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlU3Vic2NyaWJlciBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVN1YnNjcmliZXI6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlbGV0ZVN1YnNjcmliZXJcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlQXBpRGVzdGluYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUFwaURlc3RpbmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZXNjcmliZUFwaURlc3RpbmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlQXJjaGl2ZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlQXJjaGl2ZTogc3RyaW5nW10gPSBbXCJldmVudHM6RGVzY3JpYmVBcmNoaXZlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZUNvbm5lY3Rpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUNvbm5lY3Rpb246IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlc2NyaWJlQ29ubmVjdGlvblwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVzY3JpYmVFbmRwb2ludCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlRW5kcG9pbnQ6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkRlc2NyaWJlRW5kcG9pbnRcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlRXZlbnRCdXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZUV2ZW50QnVzOiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZXNjcmliZUV2ZW50QnVzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZUV2ZW50U291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVFdmVudFNvdXJjZTogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6RGVzY3JpYmVFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZVBhcnRuZXJFdmVudFNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlUGFydG5lckV2ZW50U291cmNlOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpEZXNjcmliZVBhcnRuZXJFdmVudFNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZVJlcGxheSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlUmVwbGF5OiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZXNjcmliZVJlcGxheVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVzY3JpYmVSdWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVSdWxlOiBzdHJpbmdbXSA9IFtcImV2ZW50czpEZXNjcmliZVJ1bGVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlU3Vic2NyaWJlciBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlU3Vic2NyaWJlcjogc3RyaW5nW10gPSBbXCJldmVudHM6RGVzY3JpYmVTdWJzY3JpYmVyXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEaXNhYmxlUnVsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERpc2FibGVSdWxlOiBzdHJpbmdbXSA9IFtcImV2ZW50czpEaXNhYmxlUnVsZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRW5hYmxlUnVsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEVuYWJsZVJ1bGU6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkVuYWJsZVJ1bGVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldFJlc291cmNlUG9saWN5IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRSZXNvdXJjZVBvbGljeTogc3RyaW5nW10gPSBbXCJldmVudHM6R2V0UmVzb3VyY2VQb2xpY3lcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RBcGlEZXN0aW5hdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0QXBpRGVzdGluYXRpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpMaXN0QXBpRGVzdGluYXRpb25zXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RBcmNoaXZlcyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RBcmNoaXZlczogc3RyaW5nW10gPSBbXCJldmVudHM6TGlzdEFyY2hpdmVzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0Q29ubmVjdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0Q29ubmVjdGlvbnM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkxpc3RDb25uZWN0aW9uc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdEVuZHBvaW50cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFbmRwb2ludHM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkxpc3RFbmRwb2ludHNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RFdmVudEJ1c2VzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEV2ZW50QnVzZXM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkxpc3RFdmVudEJ1c2VzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0RXZlbnRTb3VyY2VzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEV2ZW50U291cmNlczogc3RyaW5nW10gPSBbXCJldmVudHM6TGlzdEV2ZW50U291cmNlc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFBhcnRuZXJFdmVudFNvdXJjZUFjY291bnRzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFBhcnRuZXJFdmVudFNvdXJjZUFjY291bnRzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpMaXN0UGFydG5lckV2ZW50U291cmNlQWNjb3VudHNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFBhcnRuZXJFdmVudFNvdXJjZXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UGFydG5lckV2ZW50U291cmNlczogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6TGlzdFBhcnRuZXJFdmVudFNvdXJjZXNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFJlcGxheXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UmVwbGF5czogc3RyaW5nW10gPSBbXCJldmVudHM6TGlzdFJlcGxheXNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RSZXNvdXJjZVBvbGljaWVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFJlc291cmNlUG9saWNpZXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkxpc3RSZXNvdXJjZVBvbGljaWVzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RSdWxlTmFtZXNCeVRhcmdldCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RSdWxlTmFtZXNCeVRhcmdldDogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6TGlzdFJ1bGVOYW1lc0J5VGFyZ2V0XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RSdWxlcyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RSdWxlczogc3RyaW5nW10gPSBbXCJldmVudHM6TGlzdFJ1bGVzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0U3Vic2NyaWJlcnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0U3Vic2NyaWJlcnM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOkxpc3RTdWJzY3JpYmVyc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFRhZ3NGb3JSZXNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2U6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkxpc3RUYWdzRm9yUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFRhcmdldHNCeVJ1bGUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFyZ2V0c0J5UnVsZTogc3RyaW5nW10gPSBbXCJldmVudHM6TGlzdFRhcmdldHNCeVJ1bGVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFB1dEV2ZW50cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dEV2ZW50czogc3RyaW5nW10gPSBbXCJldmVudHM6UHV0RXZlbnRzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBQdXRQYXJ0bmVyRXZlbnRzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UGFydG5lckV2ZW50czogc3RyaW5nW10gPSBbXCJldmVudHM6UHV0UGFydG5lckV2ZW50c1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgUHV0UGVybWlzc2lvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFBlcm1pc3Npb246IHN0cmluZ1tdID0gW1wiZXZlbnRzOlB1dFBlcm1pc3Npb25cIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFB1dFJhd0V2ZW50cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJhd0V2ZW50czogc3RyaW5nW10gPSBbXCJldmVudHM6UHV0UmF3RXZlbnRzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBQdXRSZXNvdXJjZVBvbGljeSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJlc291cmNlUG9saWN5OiBzdHJpbmdbXSA9IFtcImV2ZW50czpQdXRSZXNvdXJjZVBvbGljeVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgUHV0UnVsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJ1bGU6IHN0cmluZ1tdID0gW1xuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJldmVudHM6UHV0UnVsZVwiLFxuXHRcdFwiZXZlbnRzOlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFB1dFRhcmdldHMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBQdXRUYXJnZXRzOiBzdHJpbmdbXSA9IFtcImlhbTpQYXNzUm9sZVwiLCBcImV2ZW50czpQdXRUYXJnZXRzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBSZW1vdmVQZXJtaXNzaW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUmVtb3ZlUGVybWlzc2lvbjogc3RyaW5nW10gPSBbXCJldmVudHM6UmVtb3ZlUGVybWlzc2lvblwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgUmVtb3ZlVGFyZ2V0cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFJlbW92ZVRhcmdldHM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOlJlbW92ZVRhcmdldHNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFJldm9rZVJlc291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUmV2b2tlUmVzb3VyY2U6IHN0cmluZ1tdID0gW1wiZXZlbnRzOlJldm9rZVJlc291cmNlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBTdGFydFJlcGxheSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0UmVwbGF5OiBzdHJpbmdbXSA9IFtcImV2ZW50czpTdGFydFJlcGxheVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVGFnUmVzb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBUYWdSZXNvdXJjZTogc3RyaW5nW10gPSBbXCJldmVudHM6VGFnUmVzb3VyY2VcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFRlc3RFdmVudFBhdHRlcm4gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBUZXN0RXZlbnRQYXR0ZXJuOiBzdHJpbmdbXSA9IFtcImV2ZW50czpUZXN0RXZlbnRQYXR0ZXJuXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVbnRhZ1Jlc291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZTogc3RyaW5nW10gPSBbXCJldmVudHM6VW50YWdSZXNvdXJjZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlQXBpRGVzdGluYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVBcGlEZXN0aW5hdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6VXBkYXRlQXBpRGVzdGluYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlQXJjaGl2ZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUFyY2hpdmU6IHN0cmluZ1tdID0gW1wiZXZlbnRzOlVwZGF0ZUFyY2hpdmVcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUNvbm5lY3Rpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVDb25uZWN0aW9uOiBzdHJpbmdbXSA9IFtcImV2ZW50czpVcGRhdGVDb25uZWN0aW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVFbmRwb2ludCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUVuZHBvaW50OiBzdHJpbmdbXSA9IFtcblx0XHRcImlhbTpQYXNzUm9sZVwiLFxuXHRcdFwiZXZlbnRzOlVwZGF0ZUVuZHBvaW50XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUV2ZW50QnVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXZlbnRCdXM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOlVwZGF0ZUV2ZW50QnVzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVFdmVudFNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUV2ZW50U291cmNlOiBzdHJpbmdbXSA9IFtcImV2ZW50czpVcGRhdGVFdmVudFNvdXJjZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlU3Vic2NyaWJlciBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVN1YnNjcmliZXI6IHN0cmluZ1tdID0gW1xuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJldmVudHM6VXBkYXRlU3Vic2NyaWJlclwiLFxuXHRdO1xufVxuXG4vKipcbiAqIENvbmRpdGlvbiBrZXkgY29uc3RhbnRzIGFuZCBidWlsZGVycyBmb3IgZXZlbnRzLlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRzQ29uZGl0aW9ucyB7XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVFbmRwb2ludCBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFbmRwb2ludENvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkV2ZW50QnVzQXJuXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVFdmVudEJ1cyBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFdmVudEJ1c0NvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlRXZlbnRTb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRXZlbnRTb3VyY2VDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XHRcImV2ZW50czpzb3VyY2VcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIENyZWF0ZVN1YnNjcmliZXIgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlU3Vic2NyaWJlckNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRcdFwiZXZlbnRzOkNvbnRlbnRGaWx0ZXJQcmVzZW50XCIsXG5cdFx0XCJldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX1cIixcblx0XHRcImV2ZW50czpNZXRhZGF0YS8ke01ldGFkYXRhS2V5fS9NYXRjaGVyXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBEZWxldGVSZXNvdXJjZVBvbGljeSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVSZXNvdXJjZVBvbGljeUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOlBvbGljeU5hbWVcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIERlbGV0ZVJ1bGUgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlUnVsZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOk1hbmFnZWRCeVwiLFxuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBEZXNjcmliZVJ1bGUgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVSdWxlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6Y3JlYXRvckFjY291bnRcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIERpc2FibGVSdWxlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERpc2FibGVSdWxlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6TWFuYWdlZEJ5XCIsXG5cdFx0XCJldmVudHM6Y3JlYXRvckFjY291bnRcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIEVuYWJsZVJ1bGUgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRW5hYmxlUnVsZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOk1hbmFnZWRCeVwiLFxuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBHZXRSZXNvdXJjZVBvbGljeSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRSZXNvdXJjZVBvbGljeUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOlBvbGljeU5hbWVcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIExpc3RUYWdzRm9yUmVzb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBMaXN0VGFyZ2V0c0J5UnVsZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFyZ2V0c0J5UnVsZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBQdXRFdmVudHMgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0RXZlbnRzQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJldmVudHM6U3lzdGVtTWV0YWRhdGEvQXdzRGV0YWlsVHlwZVwiLFxuXHRcdFwiZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0F3c1NvdXJjZVwiLFxuXHRcdFwiZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0NvbnRlbnRUeXBlXCIsXG5cdFx0XCJldmVudHM6ZGV0YWlsLXR5cGVcIixcblx0XHRcImV2ZW50czpldmVudEJ1c0ludm9jYXRpb25cIixcblx0XHRcImV2ZW50czpzb3VyY2VcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFB1dFJhd0V2ZW50cyBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBQdXRSYXdFdmVudHNDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpNZXRhZGF0YS8ke01ldGFkYXRhS2V5fVwiLFxuXHRcdFwiZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0F3c0RldGFpbFR5cGVcIixcblx0XHRcImV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NTb3VyY2VcIixcblx0XHRcImV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Db250ZW50VHlwZVwiLFxuXHRcdFwiZXZlbnRzOmV2ZW50QnVzSW52b2NhdGlvblwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgUHV0UmVzb3VyY2VQb2xpY3kgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0UmVzb3VyY2VQb2xpY3lDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpQb2xpY3lOYW1lXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBQdXRSdWxlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFB1dFJ1bGVDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XHRcImV2ZW50czpNYW5hZ2VkQnlcIixcblx0XHRcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiLFxuXHRcdFwiZXZlbnRzOmRldGFpbC10eXBlXCIsXG5cdFx0XCJldmVudHM6ZGV0YWlsLmV2ZW50VHlwZUNvZGVcIixcblx0XHRcImV2ZW50czpkZXRhaWwuc2VydmljZVwiLFxuXHRcdFwiZXZlbnRzOmRldGFpbC51c2VySWRlbnRpdHkucHJpbmNpcGFsSWRcIixcblx0XHRcImV2ZW50czpzb3VyY2VcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFB1dFRhcmdldHMgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgUHV0VGFyZ2V0c0NvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOk1hbmFnZWRCeVwiLFxuXHRcdFwiZXZlbnRzOlRhcmdldEFyblwiLFxuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBSZW1vdmVUYXJnZXRzIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFJlbW92ZVRhcmdldHNDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImV2ZW50czpNYW5hZ2VkQnlcIixcblx0XHRcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVGFnUmVzb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGFnUmVzb3VyY2VDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XHRcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVW50YWdSZXNvdXJjZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVbnRhZ1Jlc291cmNlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRcdFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBVcGRhdGVFbmRwb2ludCBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFbmRwb2ludENvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkV2ZW50QnVzQXJuXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBVcGRhdGVFdmVudFNvdXJjZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFdmVudFNvdXJjZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1wiZXZlbnRzOnNvdXJjZVwiXTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFVwZGF0ZVN1YnNjcmliZXIgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlU3Vic2NyaWJlckNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZXZlbnRzOkNvbnRlbnRGaWx0ZXJQcmVzZW50XCIsXG5cdFx0XCJldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX1cIixcblx0XHRcImV2ZW50czpNZXRhZGF0YS8ke01ldGFkYXRhS2V5fS9NYXRjaGVyXCIsXG5cdF07XG5cblx0LyoqIENvbmRpdGlvbiBrZXk6IGF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fSAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQVdTX1JFUVVFU1RfVEFHID0gXCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX0gKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IEFXU19SRVNPVVJDRV9UQUcgPSBcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGF3czpUYWdLZXlzIChBcnJheU9mU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQVdTX1RBR19LRVlTID0gXCJhd3M6VGFnS2V5c1wiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOkNvbnRlbnRGaWx0ZXJQcmVzZW50IChCb29sKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ09OVEVOVF9GSUxURVJfUFJFU0VOVCA9IFwiZXZlbnRzOkNvbnRlbnRGaWx0ZXJQcmVzZW50XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6RXZlbnRCdXNBcm4gKEFycmF5T2ZBUk4pICovXG5cdHN0YXRpYyByZWFkb25seSBFVkVOVF9CVVNfQVJOID0gXCJldmVudHM6RXZlbnRCdXNBcm5cIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpNYW5hZ2VkQnkgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IE1BTkFHRURfQlkgPSBcImV2ZW50czpNYW5hZ2VkQnlcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpNZXRhZGF0YS8ke01ldGFkYXRhS2V5fSAoQXJyYXlPZlN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IE1FVEFEQVRBID0gXCJldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX1cIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpNZXRhZGF0YS8ke01ldGFkYXRhS2V5fS9NYXRjaGVyIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBNRVRBREFUQV9NQVRDSEVSID0gXCJldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX0vTWF0Y2hlclwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOlBvbGljeU5hbWUgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IFBPTElDWV9OQU1FID0gXCJldmVudHM6UG9saWN5TmFtZVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0F3c0RldGFpbFR5cGUgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IFNZU1RFTV9NRVRBREFUQV9BV1NfREVUQUlMX1RZUEUgPVxuXHRcdFwiZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0F3c0RldGFpbFR5cGVcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NTb3VyY2UgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IFNZU1RFTV9NRVRBREFUQV9BV1NfU09VUkNFID1cblx0XHRcImV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NTb3VyY2VcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Db250ZW50VHlwZSAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU1lTVEVNX01FVEFEQVRBX0NPTlRFTlRfVFlQRSA9XG5cdFx0XCJldmVudHM6U3lzdGVtTWV0YWRhdGEvQ29udGVudFR5cGVcIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGV2ZW50czpUYXJnZXRBcm4gKEFycmF5T2ZBUk4pICovXG5cdHN0YXRpYyByZWFkb25seSBUQVJHRVRfQVJOID0gXCJldmVudHM6VGFyZ2V0QXJuXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6Y3JlYXRvckFjY291bnQgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IENSRUFUT1JfQUNDT1VOVCA9IFwiZXZlbnRzOmNyZWF0b3JBY2NvdW50XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6ZGV0YWlsLXR5cGUgKEFycmF5T2ZTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBERVRBSUxfVFlQRSA9IFwiZXZlbnRzOmRldGFpbC10eXBlXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6ZGV0YWlsLmV2ZW50VHlwZUNvZGUgKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IERFVEFJTF9FVkVOVF9UWVBFX0NPREUgPSBcImV2ZW50czpkZXRhaWwuZXZlbnRUeXBlQ29kZVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOmRldGFpbC5zZXJ2aWNlIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBERVRBSUxfU0VSVklDRSA9IFwiZXZlbnRzOmRldGFpbC5zZXJ2aWNlXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6ZGV0YWlsLnVzZXJJZGVudGl0eS5wcmluY2lwYWxJZCAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgREVUQUlMX1VTRVJfSURFTlRJVFlfUFJJTkNJUEFMX0lEID1cblx0XHRcImV2ZW50czpkZXRhaWwudXNlcklkZW50aXR5LnByaW5jaXBhbElkXCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBldmVudHM6ZXZlbnRCdXNJbnZvY2F0aW9uIChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBFVkVOVF9CVVNfSU5WT0NBVElPTiA9IFwiZXZlbnRzOmV2ZW50QnVzSW52b2NhdGlvblwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogZXZlbnRzOnNvdXJjZSAoQXJyYXlPZlN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IFNPVVJDRSA9IFwiZXZlbnRzOnNvdXJjZVwiO1xuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1gLlxuXHQgKi9cblx0c3RhdGljIHJlcXVlc3RUYWcodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1gLlxuXHQgKi9cblx0c3RhdGljIHJlc291cmNlVGFnKHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgYXdzOlRhZ0tleXNgLlxuXHQgKi9cblx0c3RhdGljIHRhZ0tleXModmFsdWVzOiBzdHJpbmdbXSk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4ge1xuXHRcdHJldHVybiB7IFwiRm9yQWxsVmFsdWVzOlN0cmluZ0VxdWFsc1wiOiB7IFwiYXdzOlRhZ0tleXNcIjogdmFsdWVzIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6Q29udGVudEZpbHRlclByZXNlbnRgLlxuXHQgKi9cblx0c3RhdGljIGNvbnRlbnRGaWx0ZXJQcmVzZW50KFxuXHRcdHZhbHVlOiBib29sZWFuLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4ge1xuXHRcdHJldHVybiB7IEJvb2w6IHsgXCJldmVudHM6Q29udGVudEZpbHRlclByZXNlbnRcIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpFdmVudEJ1c0FybmAuXG5cdCAqL1xuXHRzdGF0aWMgZXZlbnRCdXNBUk4oXG5cdFx0dmFsdWVzOiBzdHJpbmdbXSxcblx0KTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nW10+PiB7XG5cdFx0cmV0dXJuIHsgXCJGb3JBbGxWYWx1ZXM6QXJuRXF1YWxzXCI6IHsgXCJldmVudHM6RXZlbnRCdXNBcm5cIjogdmFsdWVzIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6TWFuYWdlZEJ5YC5cblx0ICovXG5cdHN0YXRpYyBtYW5hZ2VkQnkodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJldmVudHM6TWFuYWdlZEJ5XCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX1gLlxuXHQgKi9cblx0c3RhdGljIG1ldGFkYXRhKHZhbHVlczogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0XCJGb3JBbGxWYWx1ZXM6U3RyaW5nRXF1YWxzXCI6IHsgXCJldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX1cIjogdmFsdWVzIH0sXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6TWV0YWRhdGEvJHtNZXRhZGF0YUtleX0vTWF0Y2hlcmAuXG5cdCAqL1xuXHRzdGF0aWMgbWV0YWRhdGFNYXRjaGVyKFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0U3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOk1ldGFkYXRhLyR7TWV0YWRhdGFLZXl9L01hdGNoZXJcIjogdmFsdWUgfSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpQb2xpY3lOYW1lYC5cblx0ICovXG5cdHN0YXRpYyBwb2xpY3lOYW1lKHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOlBvbGljeU5hbWVcIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NEZXRhaWxUeXBlYC5cblx0ICovXG5cdHN0YXRpYyBzeXN0ZW1NZXRhZGF0YUFXU0RldGFpbFR5cGUoXG5cdFx0dmFsdWU6IHN0cmluZyxcblx0KTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImV2ZW50czpTeXN0ZW1NZXRhZGF0YS9Bd3NEZXRhaWxUeXBlXCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBldmVudHM6U3lzdGVtTWV0YWRhdGEvQXdzU291cmNlYC5cblx0ICovXG5cdHN0YXRpYyBzeXN0ZW1NZXRhZGF0YUFXU1NvdXJjZShcblx0XHR2YWx1ZTogc3RyaW5nLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0F3c1NvdXJjZVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOlN5c3RlbU1ldGFkYXRhL0NvbnRlbnRUeXBlYC5cblx0ICovXG5cdHN0YXRpYyBzeXN0ZW1NZXRhZGF0YUNvbnRlbnRUeXBlKFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJldmVudHM6U3lzdGVtTWV0YWRhdGEvQ29udGVudFR5cGVcIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpUYXJnZXRBcm5gLlxuXHQgKi9cblx0c3RhdGljIHRhcmdldEFSTih2YWx1ZXM6IHN0cmluZ1tdKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nW10+PiB7XG5cdFx0cmV0dXJuIHsgXCJGb3JBbGxWYWx1ZXM6QXJuRXF1YWxzXCI6IHsgXCJldmVudHM6VGFyZ2V0QXJuXCI6IHZhbHVlcyB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOmNyZWF0b3JBY2NvdW50YC5cblx0ICovXG5cdHN0YXRpYyBjcmVhdG9yQWNjb3VudCh2YWx1ZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImV2ZW50czpjcmVhdG9yQWNjb3VudFwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOmRldGFpbC10eXBlYC5cblx0ICovXG5cdHN0YXRpYyBkZXRhaWxUeXBlKFxuXHRcdHZhbHVlczogc3RyaW5nW10sXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4ge1xuXHRcdHJldHVybiB7IFwiRm9yQWxsVmFsdWVzOlN0cmluZ0VxdWFsc1wiOiB7IFwiZXZlbnRzOmRldGFpbC10eXBlXCI6IHZhbHVlcyB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOmRldGFpbC5ldmVudFR5cGVDb2RlYC5cblx0ICovXG5cdHN0YXRpYyBkZXRhaWxFdmVudFR5cGVDb2RlKFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJldmVudHM6ZGV0YWlsLmV2ZW50VHlwZUNvZGVcIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpkZXRhaWwuc2VydmljZWAuXG5cdCAqL1xuXHRzdGF0aWMgZGV0YWlsU2VydmljZSh2YWx1ZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImV2ZW50czpkZXRhaWwuc2VydmljZVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOmRldGFpbC51c2VySWRlbnRpdHkucHJpbmNpcGFsSWRgLlxuXHQgKi9cblx0c3RhdGljIGRldGFpbFVzZXJJZGVudGl0eVByaW5jaXBhbElkKFxuXHRcdHZhbHVlOiBzdHJpbmcsXG5cdCk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0U3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOmRldGFpbC51c2VySWRlbnRpdHkucHJpbmNpcGFsSWRcIjogdmFsdWUgfSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGV2ZW50czpldmVudEJ1c0ludm9jYXRpb25gLlxuXHQgKi9cblx0c3RhdGljIGV2ZW50QnVzSW52b2NhdGlvbihcblx0XHR2YWx1ZTogc3RyaW5nLFxuXHQpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiZXZlbnRzOmV2ZW50QnVzSW52b2NhdGlvblwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgZXZlbnRzOnNvdXJjZWAuXG5cdCAqL1xuXHRzdGF0aWMgc291cmNlKHZhbHVlczogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4+IHtcblx0XHRyZXR1cm4geyBcIkZvckFsbFZhbHVlczpTdHJpbmdFcXVhbHNcIjogeyBcImV2ZW50czpzb3VyY2VcIjogdmFsdWVzIH0gfTtcblx0fVxufVxuIl19