@cdk_utils/iam 1.3.0 → 1.5.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 (461) hide show
  1. package/.jsii +5437 -2583
  2. package/lib/generated/services/a2c.js +1 -1
  3. package/lib/generated/services/a4b.js +3 -3
  4. package/lib/generated/services/access-analyzer.js +4 -4
  5. package/lib/generated/services/account-access.js +4 -4
  6. package/lib/generated/services/account.js +4 -4
  7. package/lib/generated/services/acm-pca.js +4 -4
  8. package/lib/generated/services/acm.js +4 -4
  9. package/lib/generated/services/aco-automation.js +4 -4
  10. package/lib/generated/services/action-recommendations.js +1 -1
  11. package/lib/generated/services/activate.js +1 -1
  12. package/lib/generated/services/agent-registry.js +4 -4
  13. package/lib/generated/services/agentaccess-mcp.js +2 -2
  14. package/lib/generated/services/aidevops.js +4 -4
  15. package/lib/generated/services/aiops.js +4 -4
  16. package/lib/generated/services/airflow-serverless.js +4 -4
  17. package/lib/generated/services/airflow.js +4 -4
  18. package/lib/generated/services/amplify.js +4 -4
  19. package/lib/generated/services/amplifybackend.js +3 -3
  20. package/lib/generated/services/amplifyuibuilder.js +4 -4
  21. package/lib/generated/services/aoss.js +4 -4
  22. package/lib/generated/services/apigateway.js +4 -4
  23. package/lib/generated/services/app-integrations.js +4 -4
  24. package/lib/generated/services/appconfig.d.ts +126 -0
  25. package/lib/generated/services/appconfig.js +157 -15
  26. package/lib/generated/services/appfabric.js +4 -4
  27. package/lib/generated/services/appflow.js +4 -4
  28. package/lib/generated/services/application-autoscaling.js +4 -4
  29. package/lib/generated/services/application-signals-mcp.js +3 -3
  30. package/lib/generated/services/application-signals.js +4 -4
  31. package/lib/generated/services/application-transformation.js +1 -1
  32. package/lib/generated/services/applicationinsights.js +3 -3
  33. package/lib/generated/services/appmesh-preview.js +2 -2
  34. package/lib/generated/services/appmesh.js +4 -4
  35. package/lib/generated/services/apprunner.js +4 -4
  36. package/lib/generated/services/appstream.js +4 -4
  37. package/lib/generated/services/appstudio.js +2 -2
  38. package/lib/generated/services/appsync.js +4 -4
  39. package/lib/generated/services/apptest.js +3 -3
  40. package/lib/generated/services/aps.js +4 -4
  41. package/lib/generated/services/arc-region-switch.js +4 -4
  42. package/lib/generated/services/arc-zonal-shift.js +4 -4
  43. package/lib/generated/services/arsenal.js +1 -1
  44. package/lib/generated/services/artifact.js +4 -4
  45. package/lib/generated/services/athena.js +4 -4
  46. package/lib/generated/services/auditmanager.js +4 -4
  47. package/lib/generated/services/autoscaling-plans.js +2 -2
  48. package/lib/generated/services/autoscaling.js +4 -4
  49. package/lib/generated/services/aws-external-anthropic.js +3 -3
  50. package/lib/generated/services/aws-marketplace-management.js +1 -1
  51. package/lib/generated/services/aws-marketplace.js +4 -4
  52. package/lib/generated/services/aws-portal.js +1 -1
  53. package/lib/generated/services/awsconnector.js +1 -1
  54. package/lib/generated/services/b2bi.js +4 -4
  55. package/lib/generated/services/backup-gateway.js +4 -4
  56. package/lib/generated/services/backup-search.js +4 -4
  57. package/lib/generated/services/backup-storage.js +1 -1
  58. package/lib/generated/services/backup.js +4 -4
  59. package/lib/generated/services/batch.js +4 -4
  60. package/lib/generated/services/bcm-dashboards.js +4 -4
  61. package/lib/generated/services/bcm-data-exports.js +4 -4
  62. package/lib/generated/services/bcm-pricing-calculator.js +4 -4
  63. package/lib/generated/services/bcm-recommended-actions.js +2 -2
  64. package/lib/generated/services/bedrock-agentcore.js +4 -4
  65. package/lib/generated/services/bedrock-mantle.js +3 -3
  66. package/lib/generated/services/bedrock-websearch.js +2 -2
  67. package/lib/generated/services/bedrock.d.ts +65 -0
  68. package/lib/generated/services/bedrock.js +75 -5
  69. package/lib/generated/services/billing.js +4 -4
  70. package/lib/generated/services/billingconductor.js +4 -4
  71. package/lib/generated/services/braket.js +4 -4
  72. package/lib/generated/services/budgets.js +4 -4
  73. package/lib/generated/services/bugbust.js +3 -3
  74. package/lib/generated/services/cases.js +4 -4
  75. package/lib/generated/services/cassandra.js +4 -4
  76. package/lib/generated/services/ce.js +4 -4
  77. package/lib/generated/services/chatbot.js +4 -4
  78. package/lib/generated/services/chime.js +4 -4
  79. package/lib/generated/services/cleanrooms-ml.js +4 -4
  80. package/lib/generated/services/cleanrooms.js +4 -4
  81. package/lib/generated/services/cloud9.js +4 -4
  82. package/lib/generated/services/clouddirectory.js +3 -3
  83. package/lib/generated/services/cloudformation.js +4 -4
  84. package/lib/generated/services/cloudfront-keyvaluestore.js +3 -3
  85. package/lib/generated/services/cloudfront.js +4 -4
  86. package/lib/generated/services/cloudhsm.js +4 -4
  87. package/lib/generated/services/cloudsearch.js +3 -3
  88. package/lib/generated/services/cloudshell.js +3 -3
  89. package/lib/generated/services/cloudtrail-data.js +4 -4
  90. package/lib/generated/services/cloudtrail.js +4 -4
  91. package/lib/generated/services/cloudwatch.js +4 -4
  92. package/lib/generated/services/codeartifact.js +4 -4
  93. package/lib/generated/services/codebuild.js +4 -4
  94. package/lib/generated/services/codecatalyst.js +4 -4
  95. package/lib/generated/services/codecommit.js +4 -4
  96. package/lib/generated/services/codeconnections.js +4 -4
  97. package/lib/generated/services/codedeploy-commands-secure.js +1 -1
  98. package/lib/generated/services/codedeploy.js +4 -4
  99. package/lib/generated/services/codeguru-profiler.js +4 -4
  100. package/lib/generated/services/codeguru-reviewer.js +4 -4
  101. package/lib/generated/services/codeguru-security.js +4 -4
  102. package/lib/generated/services/codeguru.js +1 -1
  103. package/lib/generated/services/codepipeline.js +4 -4
  104. package/lib/generated/services/codestar-connections.js +4 -4
  105. package/lib/generated/services/codestar-notifications.js +6 -5
  106. package/lib/generated/services/codestar.js +3 -3
  107. package/lib/generated/services/codewhisperer.js +3 -3
  108. package/lib/generated/services/cognito-identity.js +4 -4
  109. package/lib/generated/services/cognito-idp.js +4 -4
  110. package/lib/generated/services/cognito-sync.js +3 -3
  111. package/lib/generated/services/comprehend.js +4 -4
  112. package/lib/generated/services/comprehendmedical.js +3 -3
  113. package/lib/generated/services/compute-optimizer.js +3 -3
  114. package/lib/generated/services/config.js +4 -4
  115. package/lib/generated/services/connect-campaigns.js +4 -4
  116. package/lib/generated/services/connect.d.ts +10 -0
  117. package/lib/generated/services/connect.js +15 -5
  118. package/lib/generated/services/consoleapp.js +2 -2
  119. package/lib/generated/services/consolidatedbilling.js +1 -1
  120. package/lib/generated/services/controlcatalog.js +3 -3
  121. package/lib/generated/services/controltower.js +4 -4
  122. package/lib/generated/services/cost-optimization-hub.js +2 -2
  123. package/lib/generated/services/cur.js +4 -4
  124. package/lib/generated/services/customer-verification.js +1 -1
  125. package/lib/generated/services/databrew.js +4 -4
  126. package/lib/generated/services/dataexchange.js +4 -4
  127. package/lib/generated/services/datapipeline.js +4 -4
  128. package/lib/generated/services/datasync.js +4 -4
  129. package/lib/generated/services/datazone.js +4 -4
  130. package/lib/generated/services/dax.js +4 -4
  131. package/lib/generated/services/dbqms.js +1 -1
  132. package/lib/generated/services/deadline.js +4 -4
  133. package/lib/generated/services/detective.js +4 -4
  134. package/lib/generated/services/devicefarm.js +4 -4
  135. package/lib/generated/services/devops-guru.js +4 -4
  136. package/lib/generated/services/directconnect.js +4 -4
  137. package/lib/generated/services/discovery.js +3 -3
  138. package/lib/generated/services/dlm.js +4 -4
  139. package/lib/generated/services/dms.js +4 -4
  140. package/lib/generated/services/docdb-elastic.js +4 -4
  141. package/lib/generated/services/drs.d.ts +162 -0
  142. package/lib/generated/services/drs.js +183 -5
  143. package/lib/generated/services/ds-data.js +4 -4
  144. package/lib/generated/services/ds.js +4 -4
  145. package/lib/generated/services/dsql.js +4 -4
  146. package/lib/generated/services/dynamodb.js +4 -4
  147. package/lib/generated/services/ebs.js +4 -4
  148. package/lib/generated/services/ec2-instance-connect.js +4 -4
  149. package/lib/generated/services/ec2.js +4 -4
  150. package/lib/generated/services/ec2messages.js +2 -2
  151. package/lib/generated/services/ecr-public.js +4 -4
  152. package/lib/generated/services/ecr.js +4 -4
  153. package/lib/generated/services/ecs-mcp.js +1 -1
  154. package/lib/generated/services/ecs.js +4 -4
  155. package/lib/generated/services/eks-auth.js +4 -4
  156. package/lib/generated/services/eks-mcp.js +1 -1
  157. package/lib/generated/services/eks.js +4 -4
  158. package/lib/generated/services/elasticache.js +4 -4
  159. package/lib/generated/services/elasticbeanstalk.js +4 -4
  160. package/lib/generated/services/elasticfilesystem.js +4 -4
  161. package/lib/generated/services/elasticloadbalancing.js +4 -4
  162. package/lib/generated/services/elasticmapreduce.js +4 -4
  163. package/lib/generated/services/elastictranscoder.js +2 -2
  164. package/lib/generated/services/elemental-activations.js +1 -1
  165. package/lib/generated/services/elemental-appliances-software.js +2 -2
  166. package/lib/generated/services/elemental-inference.js +4 -4
  167. package/lib/generated/services/elemental-support-cases.js +3 -3
  168. package/lib/generated/services/elemental-support-content.js +1 -1
  169. package/lib/generated/services/emr-containers.js +4 -4
  170. package/lib/generated/services/emr-serverless.js +4 -4
  171. package/lib/generated/services/entityresolution.js +4 -4
  172. package/lib/generated/services/es.js +4 -4
  173. package/lib/generated/services/events.js +4 -4
  174. package/lib/generated/services/eventsbilltoaws.js +3 -3
  175. package/lib/generated/services/evidently.js +3 -3
  176. package/lib/generated/services/evs.js +4 -4
  177. package/lib/generated/services/execute-api.js +4 -4
  178. package/lib/generated/services/finops-agent.js +1 -1
  179. package/lib/generated/services/finspace-api.js +3 -3
  180. package/lib/generated/services/finspace.js +4 -4
  181. package/lib/generated/services/firehose.js +4 -4
  182. package/lib/generated/services/fis.js +4 -4
  183. package/lib/generated/services/fms.js +4 -4
  184. package/lib/generated/services/forecast.js +4 -4
  185. package/lib/generated/services/frauddetector.js +4 -4
  186. package/lib/generated/services/freertos.js +3 -3
  187. package/lib/generated/services/freetier.js +2 -2
  188. package/lib/generated/services/fsx.js +4 -4
  189. package/lib/generated/services/gamelift.js +4 -4
  190. package/lib/generated/services/gameliftstreams.js +4 -4
  191. package/lib/generated/services/geo-maps.js +3 -3
  192. package/lib/generated/services/geo-places.js +3 -3
  193. package/lib/generated/services/geo-routes.js +3 -3
  194. package/lib/generated/services/geo.js +4 -4
  195. package/lib/generated/services/glacier.js +4 -4
  196. package/lib/generated/services/globalaccelerator.js +4 -4
  197. package/lib/generated/services/glue.js +4 -4
  198. package/lib/generated/services/grafana.js +4 -4
  199. package/lib/generated/services/greengrass.js +6 -9
  200. package/lib/generated/services/groundstation.js +4 -4
  201. package/lib/generated/services/groundtruthlabeling.js +1 -1
  202. package/lib/generated/services/guardduty.js +4 -4
  203. package/lib/generated/services/health-agent.js +4 -4
  204. package/lib/generated/services/health.js +4 -4
  205. package/lib/generated/services/healthlake.js +4 -4
  206. package/lib/generated/services/honeycode.js +2 -2
  207. package/lib/generated/services/iam.js +4 -4
  208. package/lib/generated/services/identity-sync.js +2 -2
  209. package/lib/generated/services/identitystore-auth.js +1 -1
  210. package/lib/generated/services/identitystore.js +4 -4
  211. package/lib/generated/services/imagebuilder.js +4 -4
  212. package/lib/generated/services/importexport.js +2 -2
  213. package/lib/generated/services/inspector-scan.js +2 -2
  214. package/lib/generated/services/inspector.js +2 -2
  215. package/lib/generated/services/inspector2-telemetry.js +1 -1
  216. package/lib/generated/services/inspector2.js +4 -4
  217. package/lib/generated/services/interconnect.js +4 -4
  218. package/lib/generated/services/internetmonitor.js +4 -4
  219. package/lib/generated/services/invoicing.js +4 -4
  220. package/lib/generated/services/iot-device-tester.js +1 -1
  221. package/lib/generated/services/iot.js +4 -4
  222. package/lib/generated/services/iotanalytics.js +3 -3
  223. package/lib/generated/services/iotdeviceadvisor.js +4 -4
  224. package/lib/generated/services/iotevents.js +3 -3
  225. package/lib/generated/services/iotfleethub.js +3 -3
  226. package/lib/generated/services/iotfleetwise.js +4 -4
  227. package/lib/generated/services/iotjobsdata.js +4 -4
  228. package/lib/generated/services/iotmanagedintegrations.js +4 -4
  229. package/lib/generated/services/iotsitewise.js +4 -4
  230. package/lib/generated/services/iottwinmaker.js +4 -4
  231. package/lib/generated/services/iotwireless.js +4 -4
  232. package/lib/generated/services/iq-permission.js +2 -2
  233. package/lib/generated/services/iq.js +2 -2
  234. package/lib/generated/services/ivs.js +4 -4
  235. package/lib/generated/services/ivschat.js +4 -4
  236. package/lib/generated/services/kafka-cluster.js +3 -3
  237. package/lib/generated/services/kafka.js +4 -4
  238. package/lib/generated/services/kafkaconnect.js +4 -4
  239. package/lib/generated/services/kendra-ranking.js +4 -4
  240. package/lib/generated/services/kendra.js +4 -4
  241. package/lib/generated/services/kinesis.js +4 -4
  242. package/lib/generated/services/kinesisanalytics.js +4 -4
  243. package/lib/generated/services/kinesisvideo.js +4 -4
  244. package/lib/generated/services/kms.js +4 -4
  245. package/lib/generated/services/lakeformation.js +3 -3
  246. package/lib/generated/services/lambda.js +4 -4
  247. package/lib/generated/services/launchwizard.js +4 -4
  248. package/lib/generated/services/lex.js +4 -4
  249. package/lib/generated/services/license-manager-linux-subscriptions.js +4 -4
  250. package/lib/generated/services/license-manager-user-subscriptions.js +4 -4
  251. package/lib/generated/services/license-manager.js +4 -4
  252. package/lib/generated/services/lightsail.js +4 -4
  253. package/lib/generated/services/logs.js +4 -4
  254. package/lib/generated/services/lookoutequipment.js +4 -4
  255. package/lib/generated/services/lookoutmetrics.js +3 -3
  256. package/lib/generated/services/lookoutvision.js +3 -3
  257. package/lib/generated/services/m2.js +4 -4
  258. package/lib/generated/services/machinelearning.js +3 -3
  259. package/lib/generated/services/macie2.js +4 -4
  260. package/lib/generated/services/managedblockchain-query.js +2 -2
  261. package/lib/generated/services/managedblockchain.js +4 -4
  262. package/lib/generated/services/mapcredits.js +2 -2
  263. package/lib/generated/services/marketplacecommerceanalytics.js +2 -2
  264. package/lib/generated/services/mechanicalturk.js +2 -2
  265. package/lib/generated/services/mediaconnect.js +4 -4
  266. package/lib/generated/services/mediaconvert.js +4 -4
  267. package/lib/generated/services/mediaimport.js +1 -1
  268. package/lib/generated/services/medialive.js +4 -4
  269. package/lib/generated/services/mediapackage-vod.js +4 -4
  270. package/lib/generated/services/mediapackage.js +4 -4
  271. package/lib/generated/services/mediapackagev2.js +4 -4
  272. package/lib/generated/services/mediastore.js +4 -4
  273. package/lib/generated/services/mediatailor.js +4 -4
  274. package/lib/generated/services/medical-imaging.js +4 -4
  275. package/lib/generated/services/memorydb.js +4 -4
  276. package/lib/generated/services/mgh.js +4 -4
  277. package/lib/generated/services/mgn.js +4 -4
  278. package/lib/generated/services/migrationhub-orchestrator.js +4 -4
  279. package/lib/generated/services/migrationhub-strategy.js +2 -2
  280. package/lib/generated/services/mobileanalytics.js +1 -1
  281. package/lib/generated/services/mobiletargeting.js +4 -4
  282. package/lib/generated/services/monitron.js +3 -3
  283. package/lib/generated/services/mpa.js +4 -4
  284. package/lib/generated/services/mq.js +4 -4
  285. package/lib/generated/services/neptune-db.js +4 -4
  286. package/lib/generated/services/neptune-graph.js +4 -4
  287. package/lib/generated/services/network-firewall.js +4 -4
  288. package/lib/generated/services/network-security-director.js +1 -1
  289. package/lib/generated/services/networkflowmonitor.js +4 -4
  290. package/lib/generated/services/networkmanager-chat.js +1 -1
  291. package/lib/generated/services/networkmanager.js +4 -4
  292. package/lib/generated/services/networkmonitor.js +4 -4
  293. package/lib/generated/services/nimble.js +3 -3
  294. package/lib/generated/services/notifications-contacts.js +4 -4
  295. package/lib/generated/services/notifications.js +4 -4
  296. package/lib/generated/services/nova-act.js +3 -3
  297. package/lib/generated/services/oam.js +4 -4
  298. package/lib/generated/services/observabilityadmin.js +4 -4
  299. package/lib/generated/services/odb.js +4 -4
  300. package/lib/generated/services/omics.js +4 -4
  301. package/lib/generated/services/one.js +3 -3
  302. package/lib/generated/services/opensearch.js +3 -3
  303. package/lib/generated/services/opsworks-cm.js +2 -2
  304. package/lib/generated/services/opsworks.js +2 -2
  305. package/lib/generated/services/organizations.js +4 -4
  306. package/lib/generated/services/osis.js +4 -4
  307. package/lib/generated/services/outposts.js +4 -4
  308. package/lib/generated/services/panorama.js +3 -3
  309. package/lib/generated/services/partnercentral-account-management.js +2 -2
  310. package/lib/generated/services/partnercentral.js +4 -4
  311. package/lib/generated/services/payment-cryptography.js +4 -4
  312. package/lib/generated/services/payments.js +3 -3
  313. package/lib/generated/services/pca-connector-ad.js +4 -4
  314. package/lib/generated/services/pca-connector-scep.js +4 -4
  315. package/lib/generated/services/pcs.js +4 -4
  316. package/lib/generated/services/personalize.js +5 -6
  317. package/lib/generated/services/pi.js +4 -4
  318. package/lib/generated/services/pipes.js +4 -4
  319. package/lib/generated/services/polly.js +3 -3
  320. package/lib/generated/services/pricing.js +2 -2
  321. package/lib/generated/services/pricingplanmanager.js +3 -3
  322. package/lib/generated/services/private-networks.js +3 -3
  323. package/lib/generated/services/profile.js +4 -4
  324. package/lib/generated/services/proton.js +4 -4
  325. package/lib/generated/services/purchase-orders.js +3 -3
  326. package/lib/generated/services/q.js +3 -3
  327. package/lib/generated/services/qapps.js +4 -4
  328. package/lib/generated/services/qbusiness.js +4 -4
  329. package/lib/generated/services/qdeveloper.js +3 -3
  330. package/lib/generated/services/qldb.js +3 -3
  331. package/lib/generated/services/quicksight.js +4 -4
  332. package/lib/generated/services/ram.js +4 -4
  333. package/lib/generated/services/rbin.js +4 -4
  334. package/lib/generated/services/rds-data.js +4 -4
  335. package/lib/generated/services/rds-db.js +2 -2
  336. package/lib/generated/services/rds.js +4 -4
  337. package/lib/generated/services/redshift-data.js +4 -4
  338. package/lib/generated/services/redshift-serverless.js +4 -4
  339. package/lib/generated/services/redshift.js +4 -4
  340. package/lib/generated/services/refactor-spaces.js +4 -4
  341. package/lib/generated/services/rekognition.js +4 -4
  342. package/lib/generated/services/repostspace.js +4 -4
  343. package/lib/generated/services/researchstudio.js +1 -1
  344. package/lib/generated/services/resiliencehub.js +4 -4
  345. package/lib/generated/services/resource-explorer-2.js +4 -4
  346. package/lib/generated/services/resource-explorer.js +1 -1
  347. package/lib/generated/services/resource-groups.js +4 -4
  348. package/lib/generated/services/rhelkb.js +1 -1
  349. package/lib/generated/services/robomaker.js +3 -3
  350. package/lib/generated/services/rolesanywhere.js +4 -4
  351. package/lib/generated/services/route53-recovery-cluster.js +4 -4
  352. package/lib/generated/services/route53-recovery-control-config.js +4 -4
  353. package/lib/generated/services/route53-recovery-readiness.js +4 -4
  354. package/lib/generated/services/route53.js +4 -4
  355. package/lib/generated/services/route53domains.js +2 -2
  356. package/lib/generated/services/route53globalresolver.js +4 -4
  357. package/lib/generated/services/route53profiles.js +4 -4
  358. package/lib/generated/services/route53resolver.js +4 -4
  359. package/lib/generated/services/rtbfabric.js +4 -4
  360. package/lib/generated/services/rum.js +4 -4
  361. package/lib/generated/services/s3-object-lambda.js +3 -3
  362. package/lib/generated/services/s3-outposts.js +4 -4
  363. package/lib/generated/services/s3.js +4 -4
  364. package/lib/generated/services/s3express.js +3 -3
  365. package/lib/generated/services/s3files.js +4 -4
  366. package/lib/generated/services/s3tables.js +4 -4
  367. package/lib/generated/services/s3vectors.js +4 -4
  368. package/lib/generated/services/sagemaker-data-science-assistant.js +1 -1
  369. package/lib/generated/services/sagemaker-geospatial.js +4 -4
  370. package/lib/generated/services/sagemaker-mlflow.js +3 -3
  371. package/lib/generated/services/sagemaker-unified-studio-mcp.js +1 -1
  372. package/lib/generated/services/sagemaker.js +4 -4
  373. package/lib/generated/services/savingsplans.js +4 -4
  374. package/lib/generated/services/scheduler.js +4 -4
  375. package/lib/generated/services/schemas.js +4 -4
  376. package/lib/generated/services/scn.js +4 -4
  377. package/lib/generated/services/sdb.js +3 -3
  378. package/lib/generated/services/secretsmanager.js +4 -4
  379. package/lib/generated/services/security-ir.js +4 -4
  380. package/lib/generated/services/securityagent.js +4 -4
  381. package/lib/generated/services/securityhub.js +4 -4
  382. package/lib/generated/services/securitylake.js +4 -4
  383. package/lib/generated/services/serverlessrepo.js +4 -4
  384. package/lib/generated/services/servicecatalog.js +4 -4
  385. package/lib/generated/services/servicediscovery.js +4 -4
  386. package/lib/generated/services/serviceextract.js +1 -1
  387. package/lib/generated/services/servicequotas.js +4 -4
  388. package/lib/generated/services/ses.js +4 -4
  389. package/lib/generated/services/shield.js +4 -4
  390. package/lib/generated/services/signer.js +4 -4
  391. package/lib/generated/services/signin.js +4 -4
  392. package/lib/generated/services/simspaceweaver.js +3 -3
  393. package/lib/generated/services/sms-voice.js +4 -4
  394. package/lib/generated/services/sms.js +1 -1
  395. package/lib/generated/services/snow-device-management.js +4 -4
  396. package/lib/generated/services/snowball.js +2 -2
  397. package/lib/generated/services/sns.js +6 -5
  398. package/lib/generated/services/social-messaging.js +4 -4
  399. package/lib/generated/services/sqlworkbench.js +3 -3
  400. package/lib/generated/services/sqs.js +4 -4
  401. package/lib/generated/services/ssm-contacts.js +4 -4
  402. package/lib/generated/services/ssm-guiconnect.js +2 -2
  403. package/lib/generated/services/ssm-incidents.js +4 -4
  404. package/lib/generated/services/ssm-quicksetup.js +4 -4
  405. package/lib/generated/services/ssm-sap.js +4 -4
  406. package/lib/generated/services/ssm.js +4 -4
  407. package/lib/generated/services/ssmmessages.js +2 -2
  408. package/lib/generated/services/sso-directory.js +1 -1
  409. package/lib/generated/services/sso-oauth.js +3 -3
  410. package/lib/generated/services/sso.js +4 -4
  411. package/lib/generated/services/states.js +4 -4
  412. package/lib/generated/services/storagegateway.js +4 -4
  413. package/lib/generated/services/sts.js +4 -4
  414. package/lib/generated/services/support-console.js +1 -1
  415. package/lib/generated/services/support.js +2 -2
  416. package/lib/generated/services/supportapp.js +2 -2
  417. package/lib/generated/services/supportauthz.js +4 -4
  418. package/lib/generated/services/supportplans.js +1 -1
  419. package/lib/generated/services/sustainability.js +2 -2
  420. package/lib/generated/services/swf.js +4 -4
  421. package/lib/generated/services/synthetics.js +7 -13
  422. package/lib/generated/services/tag.js +2 -2
  423. package/lib/generated/services/tax.js +2 -2
  424. package/lib/generated/services/textract.js +4 -4
  425. package/lib/generated/services/thinclient.js +4 -4
  426. package/lib/generated/services/timestream-influxdb.js +4 -4
  427. package/lib/generated/services/timestream.js +4 -4
  428. package/lib/generated/services/tiros.js +1 -1
  429. package/lib/generated/services/tnb.js +4 -4
  430. package/lib/generated/services/transcribe.js +4 -4
  431. package/lib/generated/services/transfer.js +4 -4
  432. package/lib/generated/services/transform-custom.js +3 -3
  433. package/lib/generated/services/transform.js +3 -3
  434. package/lib/generated/services/translate.js +4 -4
  435. package/lib/generated/services/trustedadvisor.js +3 -3
  436. package/lib/generated/services/ts.js +3 -3
  437. package/lib/generated/services/user-subscriptions.js +2 -2
  438. package/lib/generated/services/uxc.js +2 -2
  439. package/lib/generated/services/vendor-insights.js +3 -3
  440. package/lib/generated/services/verified-access.js +1 -1
  441. package/lib/generated/services/verifiedpermissions.js +4 -4
  442. package/lib/generated/services/voiceid.js +4 -4
  443. package/lib/generated/services/vpc-lattice-svcs.js +3 -3
  444. package/lib/generated/services/vpc-lattice.js +4 -4
  445. package/lib/generated/services/vpce.js +2 -2
  446. package/lib/generated/services/waf-regional.js +4 -4
  447. package/lib/generated/services/waf.js +4 -4
  448. package/lib/generated/services/wafv2.js +4 -4
  449. package/lib/generated/services/wam.js +1 -1
  450. package/lib/generated/services/wellarchitected.js +4 -4
  451. package/lib/generated/services/wickr.js +4 -4
  452. package/lib/generated/services/wisdom.js +4 -4
  453. package/lib/generated/services/workdocs.js +3 -3
  454. package/lib/generated/services/worklink.js +3 -3
  455. package/lib/generated/services/workmail.js +4 -4
  456. package/lib/generated/services/workmailmessageflow.js +3 -3
  457. package/lib/generated/services/workspaces-instances.js +4 -4
  458. package/lib/generated/services/workspaces-web.js +4 -4
  459. package/lib/generated/services/workspaces.js +4 -4
  460. package/lib/generated/services/xray.js +4 -4
  461. package/package.json +1 -1
@@ -16,7 +16,7 @@ class AppconfigActions {
16
16
  }
17
17
  exports.AppconfigActions = AppconfigActions;
18
18
  _a = JSII_RTTI_SYMBOL_1;
19
- AppconfigActions[_a] = { fqn: "@cdk_utils/iam.appconfig.AppconfigActions", version: "1.3.0" };
19
+ AppconfigActions[_a] = { fqn: "@cdk_utils/iam.appconfig.AppconfigActions", version: "1.5.0" };
20
20
  /** The IAM service prefix. */
21
21
  AppconfigActions.SERVICE_PREFIX = "appconfig";
22
22
  /** [Write] appconfig:CreateApplication */
@@ -27,6 +27,8 @@ AppconfigActions.CreateConfigurationProfile = "appconfig:CreateConfigurationProf
27
27
  AppconfigActions.CreateDeploymentStrategy = "appconfig:CreateDeploymentStrategy";
28
28
  /** [Write] appconfig:CreateEnvironment */
29
29
  AppconfigActions.CreateEnvironment = "appconfig:CreateEnvironment";
30
+ /** [Write] appconfig:CreateExperimentDefinition */
31
+ AppconfigActions.CreateExperimentDefinition = "appconfig:CreateExperimentDefinition";
30
32
  /** [Write] appconfig:CreateExtension */
31
33
  AppconfigActions.CreateExtension = "appconfig:CreateExtension";
32
34
  /** [Write] appconfig:CreateExtensionAssociation */
@@ -41,6 +43,8 @@ AppconfigActions.DeleteConfigurationProfile = "appconfig:DeleteConfigurationProf
41
43
  AppconfigActions.DeleteDeploymentStrategy = "appconfig:DeleteDeploymentStrategy";
42
44
  /** [Write] appconfig:DeleteEnvironment */
43
45
  AppconfigActions.DeleteEnvironment = "appconfig:DeleteEnvironment";
46
+ /** [Write] appconfig:DeleteExperimentDefinition */
47
+ AppconfigActions.DeleteExperimentDefinition = "appconfig:DeleteExperimentDefinition";
44
48
  /** [Write] appconfig:DeleteExtension */
45
49
  AppconfigActions.DeleteExtension = "appconfig:DeleteExtension";
46
50
  /** [Write] appconfig:DeleteExtensionAssociation */
@@ -61,6 +65,10 @@ AppconfigActions.actionGetDeployment = "appconfig:GetDeployment";
61
65
  AppconfigActions.actionGetDeploymentStrategy = "appconfig:GetDeploymentStrategy";
62
66
  /** [Read] appconfig:GetEnvironment */
63
67
  AppconfigActions.actionGetEnvironment = "appconfig:GetEnvironment";
68
+ /** [Read] appconfig:GetExperimentDefinition */
69
+ AppconfigActions.actionGetExperimentDefinition = "appconfig:GetExperimentDefinition";
70
+ /** [Read] appconfig:GetExperimentRun */
71
+ AppconfigActions.actionGetExperimentRun = "appconfig:GetExperimentRun";
64
72
  /** [Read] appconfig:GetExtension */
65
73
  AppconfigActions.actionGetExtension = "appconfig:GetExtension";
66
74
  /** [Read] appconfig:GetExtensionAssociation */
@@ -79,6 +87,12 @@ AppconfigActions.ListDeploymentStrategies = "appconfig:ListDeploymentStrategies"
79
87
  AppconfigActions.ListDeployments = "appconfig:ListDeployments";
80
88
  /** [List] appconfig:ListEnvironments */
81
89
  AppconfigActions.ListEnvironments = "appconfig:ListEnvironments";
90
+ /** [List] appconfig:ListExperimentDefinitions */
91
+ AppconfigActions.ListExperimentDefinitions = "appconfig:ListExperimentDefinitions";
92
+ /** [List] appconfig:ListExperimentRunEvents */
93
+ AppconfigActions.ListExperimentRunEvents = "appconfig:ListExperimentRunEvents";
94
+ /** [List] appconfig:ListExperimentRuns */
95
+ AppconfigActions.ListExperimentRuns = "appconfig:ListExperimentRuns";
82
96
  /** [List] appconfig:ListExtensionAssociations */
83
97
  AppconfigActions.ListExtensionAssociations = "appconfig:ListExtensionAssociations";
84
98
  /** [List] appconfig:ListExtensions */
@@ -91,8 +105,12 @@ AppconfigActions.ListTagsForResource = "appconfig:ListTagsForResource";
91
105
  AppconfigActions.StartConfigurationSession = "appconfig:StartConfigurationSession";
92
106
  /** [Write] appconfig:StartDeployment */
93
107
  AppconfigActions.StartDeployment = "appconfig:StartDeployment";
108
+ /** [Write] appconfig:StartExperimentRun */
109
+ AppconfigActions.StartExperimentRun = "appconfig:StartExperimentRun";
94
110
  /** [Write] appconfig:StopDeployment */
95
111
  AppconfigActions.StopDeployment = "appconfig:StopDeployment";
112
+ /** [Write] appconfig:StopExperimentRun */
113
+ AppconfigActions.StopExperimentRun = "appconfig:StopExperimentRun";
96
114
  /** [Tagging] appconfig:TagResource */
97
115
  AppconfigActions.TagResource = "appconfig:TagResource";
98
116
  /** [Tagging] appconfig:UntagResource */
@@ -107,6 +125,10 @@ AppconfigActions.UpdateConfigurationProfile = "appconfig:UpdateConfigurationProf
107
125
  AppconfigActions.UpdateDeploymentStrategy = "appconfig:UpdateDeploymentStrategy";
108
126
  /** [Write] appconfig:UpdateEnvironment */
109
127
  AppconfigActions.UpdateEnvironment = "appconfig:UpdateEnvironment";
128
+ /** [Write] appconfig:UpdateExperimentDefinition */
129
+ AppconfigActions.UpdateExperimentDefinition = "appconfig:UpdateExperimentDefinition";
130
+ /** [Write] appconfig:UpdateExperimentRun */
131
+ AppconfigActions.UpdateExperimentRun = "appconfig:UpdateExperimentRun";
110
132
  /** [Write] appconfig:UpdateExtension */
111
133
  AppconfigActions.UpdateExtension = "appconfig:UpdateExtension";
112
134
  /** [Write] appconfig:UpdateExtensionAssociation */
@@ -122,6 +144,8 @@ AppconfigActions.AllReadActions = [
122
144
  AppconfigActions.actionGetDeployment,
123
145
  AppconfigActions.actionGetDeploymentStrategy,
124
146
  AppconfigActions.actionGetEnvironment,
147
+ AppconfigActions.actionGetExperimentDefinition,
148
+ AppconfigActions.actionGetExperimentRun,
125
149
  AppconfigActions.actionGetExtension,
126
150
  AppconfigActions.actionGetExtensionAssociation,
127
151
  AppconfigActions.actionGetHostedConfigurationVersion,
@@ -134,6 +158,7 @@ AppconfigActions.AllWriteActions = [
134
158
  AppconfigActions.CreateConfigurationProfile,
135
159
  AppconfigActions.CreateDeploymentStrategy,
136
160
  AppconfigActions.CreateEnvironment,
161
+ AppconfigActions.CreateExperimentDefinition,
137
162
  AppconfigActions.CreateExtension,
138
163
  AppconfigActions.CreateExtensionAssociation,
139
164
  AppconfigActions.CreateHostedConfigurationVersion,
@@ -141,17 +166,22 @@ AppconfigActions.AllWriteActions = [
141
166
  AppconfigActions.DeleteConfigurationProfile,
142
167
  AppconfigActions.DeleteDeploymentStrategy,
143
168
  AppconfigActions.DeleteEnvironment,
169
+ AppconfigActions.DeleteExperimentDefinition,
144
170
  AppconfigActions.DeleteExtension,
145
171
  AppconfigActions.DeleteExtensionAssociation,
146
172
  AppconfigActions.DeleteHostedConfigurationVersion,
147
173
  AppconfigActions.StartConfigurationSession,
148
174
  AppconfigActions.StartDeployment,
175
+ AppconfigActions.StartExperimentRun,
149
176
  AppconfigActions.StopDeployment,
177
+ AppconfigActions.StopExperimentRun,
150
178
  AppconfigActions.UpdateAccountSettings,
151
179
  AppconfigActions.UpdateApplication,
152
180
  AppconfigActions.UpdateConfigurationProfile,
153
181
  AppconfigActions.UpdateDeploymentStrategy,
154
182
  AppconfigActions.UpdateEnvironment,
183
+ AppconfigActions.UpdateExperimentDefinition,
184
+ AppconfigActions.UpdateExperimentRun,
155
185
  AppconfigActions.UpdateExtension,
156
186
  AppconfigActions.UpdateExtensionAssociation,
157
187
  AppconfigActions.ValidateConfiguration,
@@ -163,6 +193,9 @@ AppconfigActions.AllListActions = [
163
193
  AppconfigActions.ListDeploymentStrategies,
164
194
  AppconfigActions.ListDeployments,
165
195
  AppconfigActions.ListEnvironments,
196
+ AppconfigActions.ListExperimentDefinitions,
197
+ AppconfigActions.ListExperimentRunEvents,
198
+ AppconfigActions.ListExperimentRuns,
166
199
  AppconfigActions.ListExtensionAssociations,
167
200
  AppconfigActions.ListExtensions,
168
201
  AppconfigActions.ListHostedConfigurationVersions,
@@ -180,6 +213,8 @@ const ConfigurationprofileArnRegex = /^arn:(?<partition>[^:]+):appconfig:(?<regi
180
213
  const DeploymentArnRegex = /^arn:(?<partition>[^:]+):appconfig:(?<region>[^:]*):(?<account>[^:]*):application\/(?<applicationId>[^:/?]+)\/environment\/(?<environmentId>[^:/?]+)\/deployment\/(?<deploymentNumber>[^:/?]+)$/;
181
214
  const DeploymentstrategyArnRegex = /^arn:(?<partition>[^:]+):appconfig:(?<region>[^:]*):(?<account>[^:]*):deploymentstrategy\/(?<deploymentStrategyId>[^:/?]+)$/;
182
215
  const EnvironmentArnRegex = /^arn:(?<partition>[^:]+):appconfig:(?<region>[^:]*):(?<account>[^:]*):application\/(?<applicationId>[^:/?]+)\/environment\/(?<environmentId>[^:/?]+)$/;
216
+ const ExperimentdefinitionArnRegex = /^arn:(?<partition>[^:]+):appconfig:(?<region>[^:]*):(?<account>[^:]*):application\/(?<applicationId>[^:/?]+)\/experimentdefinition\/(?<experimentDefinitionId>[^:/?]+)$/;
217
+ const ExperimentrunArnRegex = /^arn:(?<partition>[^:]+):appconfig:(?<region>[^:]*):(?<account>[^:]*):application\/(?<applicationId>[^:/?]+)\/experimentdefinition\/(?<experimentDefinitionId>[^:/?]+)\/experimentrun\/(?<experimentRunNumber>[^:/?]+)$/;
183
218
  const ExtensionArnRegex = /^arn:(?<partition>[^:]+):appconfig:(?<region>[^:]*):(?<account>[^:]*):extension\/(?<extensionId>[^:/?]+)\/(?<extensionVersionNumber>[^:/?]+)$/;
184
219
  const ExtensionassociationArnRegex = /^arn:(?<partition>[^:]+):appconfig:(?<region>[^:]*):(?<account>[^:]*):extensionassociation\/(?<extensionAssociationId>[^:/?]+)$/;
185
220
  const HostedconfigurationversionArnRegex = /^arn:(?<partition>[^:]+):appconfig:(?<region>[^:]*):(?<account>[^:]*):application\/(?<applicationId>[^:/?]+)\/configurationprofile\/(?<configurationProfileId>[^:/?]+)$/;
@@ -361,6 +396,65 @@ class AppconfigResources {
361
396
  environmentId: match.groups.environmentId,
362
397
  };
363
398
  }
399
+ /**
400
+ * Builds an ARN for the experimentdefinition resource.
401
+ */
402
+ static experimentdefinition(props) {
403
+ return `arn:${props.partition ?? "aws"}:appconfig:${props.region ?? "*"}:${props.account ?? "*"}:application/${props.applicationId}/experimentdefinition/${props.experimentDefinitionId}`;
404
+ }
405
+ /**
406
+ * Validates whether a string is a valid ARN for the experimentdefinition resource.
407
+ */
408
+ static isValidExperimentdefinitionArn(arn) {
409
+ return ExperimentdefinitionArnRegex.test(arn);
410
+ }
411
+ /**
412
+ * Parses a experimentdefinition ARN into its components.
413
+ * @throws Error if the ARN does not match the expected format.
414
+ */
415
+ static parseExperimentdefinitionArn(arn) {
416
+ const match = ExperimentdefinitionArnRegex.exec(arn);
417
+ if (!match?.groups) {
418
+ throw new Error(`Invalid experimentdefinition ARN: ${arn}`);
419
+ }
420
+ return {
421
+ partition: match.groups.partition,
422
+ region: match.groups.region,
423
+ account: match.groups.account,
424
+ applicationId: match.groups.applicationId,
425
+ experimentDefinitionId: match.groups.experimentDefinitionId,
426
+ };
427
+ }
428
+ /**
429
+ * Builds an ARN for the experimentrun resource.
430
+ */
431
+ static experimentrun(props) {
432
+ return `arn:${props.partition ?? "aws"}:appconfig:${props.region ?? "*"}:${props.account ?? "*"}:application/${props.applicationId}/experimentdefinition/${props.experimentDefinitionId}/experimentrun/${props.experimentRunNumber}`;
433
+ }
434
+ /**
435
+ * Validates whether a string is a valid ARN for the experimentrun resource.
436
+ */
437
+ static isValidExperimentrunArn(arn) {
438
+ return ExperimentrunArnRegex.test(arn);
439
+ }
440
+ /**
441
+ * Parses a experimentrun ARN into its components.
442
+ * @throws Error if the ARN does not match the expected format.
443
+ */
444
+ static parseExperimentrunArn(arn) {
445
+ const match = ExperimentrunArnRegex.exec(arn);
446
+ if (!match?.groups) {
447
+ throw new Error(`Invalid experimentrun ARN: ${arn}`);
448
+ }
449
+ return {
450
+ partition: match.groups.partition,
451
+ region: match.groups.region,
452
+ account: match.groups.account,
453
+ applicationId: match.groups.applicationId,
454
+ experimentDefinitionId: match.groups.experimentDefinitionId,
455
+ experimentRunNumber: match.groups.experimentRunNumber,
456
+ };
457
+ }
364
458
  /**
365
459
  * Builds an ARN for the extension resource.
366
460
  */
@@ -450,7 +544,7 @@ class AppconfigResources {
450
544
  }
451
545
  exports.AppconfigResources = AppconfigResources;
452
546
  _b = JSII_RTTI_SYMBOL_1;
453
- AppconfigResources[_b] = { fqn: "@cdk_utils/iam.appconfig.AppconfigResources", version: "1.3.0" };
547
+ AppconfigResources[_b] = { fqn: "@cdk_utils/iam.appconfig.AppconfigResources", version: "1.5.0" };
454
548
  /**
455
549
  * API operation to required IAM actions mapping for appconfig.
456
550
  */
@@ -458,7 +552,7 @@ class AppconfigOperations {
458
552
  }
459
553
  exports.AppconfigOperations = AppconfigOperations;
460
554
  _c = JSII_RTTI_SYMBOL_1;
461
- AppconfigOperations[_c] = { fqn: "@cdk_utils/iam.appconfig.AppconfigOperations", version: "1.3.0" };
555
+ AppconfigOperations[_c] = { fqn: "@cdk_utils/iam.appconfig.AppconfigOperations", version: "1.5.0" };
462
556
  /** IAM actions required for the CreateApplication API call. */
463
557
  AppconfigOperations.CreateApplication = [
464
558
  "appconfig:CreateApplication",
@@ -483,6 +577,7 @@ AppconfigOperations.CreateEnvironment = [
483
577
  ];
484
578
  /** IAM actions required for the CreateExperimentDefinition API call. */
485
579
  AppconfigOperations.CreateExperimentDefinition = [
580
+ "appconfig:CreateExperimentDefinition",
486
581
  "appconfig:TagResource",
487
582
  ];
488
583
  /** IAM actions required for the CreateExtension API call. */
@@ -513,7 +608,9 @@ AppconfigOperations.DeleteDeploymentStrategy = [
513
608
  /** IAM actions required for the DeleteEnvironment API call. */
514
609
  AppconfigOperations.DeleteEnvironment = ["appconfig:DeleteEnvironment"];
515
610
  /** IAM actions required for the DeleteExperimentDefinition API call. */
516
- AppconfigOperations.DeleteExperimentDefinition = [];
611
+ AppconfigOperations.DeleteExperimentDefinition = [
612
+ "appconfig:DeleteExperimentDefinition",
613
+ ];
517
614
  /** IAM actions required for the DeleteExtension API call. */
518
615
  AppconfigOperations.DeleteExtension = ["appconfig:DeleteExtension"];
519
616
  /** IAM actions required for the DeleteExtensionAssociation API call. */
@@ -545,9 +642,11 @@ AppconfigOperations.opGetDeploymentStrategy = [
545
642
  /** IAM actions required for the GetEnvironment API call. */
546
643
  AppconfigOperations.opGetEnvironment = ["appconfig:GetEnvironment"];
547
644
  /** IAM actions required for the GetExperimentDefinition API call. */
548
- AppconfigOperations.opGetExperimentDefinition = [];
645
+ AppconfigOperations.opGetExperimentDefinition = [
646
+ "appconfig:GetExperimentDefinition",
647
+ ];
549
648
  /** IAM actions required for the GetExperimentRun API call. */
550
- AppconfigOperations.opGetExperimentRun = [];
649
+ AppconfigOperations.opGetExperimentRun = ["appconfig:GetExperimentRun"];
551
650
  /** IAM actions required for the GetExtension API call. */
552
651
  AppconfigOperations.opGetExtension = ["appconfig:GetExtension"];
553
652
  /** IAM actions required for the GetExtensionAssociation API call. */
@@ -577,11 +676,17 @@ AppconfigOperations.ListDeployments = ["appconfig:ListDeployments"];
577
676
  /** IAM actions required for the ListEnvironments API call. */
578
677
  AppconfigOperations.ListEnvironments = ["appconfig:ListEnvironments"];
579
678
  /** IAM actions required for the ListExperimentDefinitions API call. */
580
- AppconfigOperations.ListExperimentDefinitions = [];
679
+ AppconfigOperations.ListExperimentDefinitions = [
680
+ "appconfig:ListExperimentDefinitions",
681
+ ];
581
682
  /** IAM actions required for the ListExperimentRunEvents API call. */
582
- AppconfigOperations.ListExperimentRunEvents = [];
683
+ AppconfigOperations.ListExperimentRunEvents = [
684
+ "appconfig:ListExperimentRunEvents",
685
+ ];
583
686
  /** IAM actions required for the ListExperimentRuns API call. */
584
- AppconfigOperations.ListExperimentRuns = [];
687
+ AppconfigOperations.ListExperimentRuns = [
688
+ "appconfig:ListExperimentRuns",
689
+ ];
585
690
  /** IAM actions required for the ListExtensionAssociations API call. */
586
691
  AppconfigOperations.ListExtensionAssociations = [
587
692
  "appconfig:ListExtensionAssociations",
@@ -606,11 +711,14 @@ AppconfigOperations.StartDeployment = [
606
711
  "appconfig:TagResource",
607
712
  ];
608
713
  /** IAM actions required for the StartExperimentRun API call. */
609
- AppconfigOperations.StartExperimentRun = ["appconfig:TagResource"];
714
+ AppconfigOperations.StartExperimentRun = [
715
+ "appconfig:StartExperimentRun",
716
+ "appconfig:TagResource",
717
+ ];
610
718
  /** IAM actions required for the StopDeployment API call. */
611
719
  AppconfigOperations.StopDeployment = ["appconfig:StopDeployment"];
612
720
  /** IAM actions required for the StopExperimentRun API call. */
613
- AppconfigOperations.StopExperimentRun = [];
721
+ AppconfigOperations.StopExperimentRun = ["appconfig:StopExperimentRun"];
614
722
  /** IAM actions required for the TagResource API call. */
615
723
  AppconfigOperations.TagResource = ["appconfig:TagResource"];
616
724
  /** IAM actions required for the UntagResource API call. */
@@ -636,9 +744,13 @@ AppconfigOperations.UpdateEnvironment = [
636
744
  "appconfig:UpdateEnvironment",
637
745
  ];
638
746
  /** IAM actions required for the UpdateExperimentDefinition API call. */
639
- AppconfigOperations.UpdateExperimentDefinition = [];
747
+ AppconfigOperations.UpdateExperimentDefinition = [
748
+ "appconfig:UpdateExperimentDefinition",
749
+ ];
640
750
  /** IAM actions required for the UpdateExperimentRun API call. */
641
- AppconfigOperations.UpdateExperimentRun = [];
751
+ AppconfigOperations.UpdateExperimentRun = [
752
+ "appconfig:UpdateExperimentRun",
753
+ ];
642
754
  /** IAM actions required for the UpdateExtension API call. */
643
755
  AppconfigOperations.UpdateExtension = [
644
756
  "iam:PassRole",
@@ -677,7 +789,7 @@ class AppconfigConditions {
677
789
  }
678
790
  exports.AppconfigConditions = AppconfigConditions;
679
791
  _d = JSII_RTTI_SYMBOL_1;
680
- AppconfigConditions[_d] = { fqn: "@cdk_utils/iam.appconfig.AppconfigConditions", version: "1.3.0" };
792
+ AppconfigConditions[_d] = { fqn: "@cdk_utils/iam.appconfig.AppconfigConditions", version: "1.5.0" };
681
793
  /** Condition keys applicable to the CreateApplication action. */
682
794
  AppconfigConditions.CreateApplicationConditionKeys = [
683
795
  "aws:RequestTag/${TagKey}",
@@ -698,6 +810,11 @@ AppconfigConditions.CreateEnvironmentConditionKeys = [
698
810
  "aws:RequestTag/${TagKey}",
699
811
  "aws:TagKeys",
700
812
  ];
813
+ /** Condition keys applicable to the CreateExperimentDefinition action. */
814
+ AppconfigConditions.CreateExperimentDefinitionConditionKeys = [
815
+ "aws:RequestTag/${TagKey}",
816
+ "aws:TagKeys",
817
+ ];
701
818
  /** Condition keys applicable to the CreateExtension action. */
702
819
  AppconfigConditions.CreateExtensionConditionKeys = [
703
820
  "aws:RequestTag/${TagKey}",
@@ -732,6 +849,14 @@ AppconfigConditions.actionGetDeploymentStrategyConditionKeys = [
732
849
  AppconfigConditions.actionGetEnvironmentConditionKeys = [
733
850
  "aws:ResourceTag/${TagKey}",
734
851
  ];
852
+ /** Condition keys applicable to the GetExperimentDefinition action. */
853
+ AppconfigConditions.actionGetExperimentDefinitionConditionKeys = [
854
+ "aws:ResourceTag/${TagKey}",
855
+ ];
856
+ /** Condition keys applicable to the GetExperimentRun action. */
857
+ AppconfigConditions.actionGetExperimentRunConditionKeys = [
858
+ "aws:ResourceTag/${TagKey}",
859
+ ];
735
860
  /** Condition keys applicable to the GetExtension action. */
736
861
  AppconfigConditions.actionGetExtensionConditionKeys = [
737
862
  "aws:ResourceTag/${TagKey}",
@@ -757,6 +882,15 @@ AppconfigConditions.StartDeploymentConditionKeys = [
757
882
  "aws:RequestTag/${TagKey}",
758
883
  "aws:TagKeys",
759
884
  ];
885
+ /** Condition keys applicable to the StartExperimentRun action. */
886
+ AppconfigConditions.StartExperimentRunConditionKeys = [
887
+ "aws:RequestTag/${TagKey}",
888
+ "aws:TagKeys",
889
+ ];
890
+ /** Condition keys applicable to the StopExperimentRun action. */
891
+ AppconfigConditions.StopExperimentRunConditionKeys = [
892
+ "aws:ResourceTag/${TagKey}",
893
+ ];
760
894
  /** Condition keys applicable to the TagResource action. */
761
895
  AppconfigConditions.TagResourceConditionKeys = [
762
896
  "aws:RequestTag/${TagKey}",
@@ -781,6 +915,14 @@ AppconfigConditions.UpdateDeploymentStrategyConditionKeys = [
781
915
  AppconfigConditions.UpdateEnvironmentConditionKeys = [
782
916
  "aws:ResourceTag/${TagKey}",
783
917
  ];
918
+ /** Condition keys applicable to the UpdateExperimentDefinition action. */
919
+ AppconfigConditions.UpdateExperimentDefinitionConditionKeys = [
920
+ "aws:ResourceTag/${TagKey}",
921
+ ];
922
+ /** Condition keys applicable to the UpdateExperimentRun action. */
923
+ AppconfigConditions.UpdateExperimentRunConditionKeys = [
924
+ "aws:ResourceTag/${TagKey}",
925
+ ];
784
926
  /** Condition keys applicable to the UpdateExtension action. */
785
927
  AppconfigConditions.UpdateExtensionConditionKeys = [
786
928
  "aws:ResourceTag/${TagKey}",
@@ -795,4 +937,4 @@ AppconfigConditions.AWS_REQUEST_TAG = "aws:RequestTag/${TagKey}";
795
937
  AppconfigConditions.AWS_RESOURCE_TAG = "aws:ResourceTag/${TagKey}";
796
938
  /** Condition key: aws:TagKeys (ArrayOfString) */
797
939
  AppconfigConditions.AWS_TAG_KEYS = "aws:TagKeys";
798
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9zZXJ2aWNlcy9hcHBjb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRkFBZ0Y7QUFDaEYsNkNBQTZDO0FBQzdDLDBEQUEwRDtBQUMxRCxnREFBZ0Q7QUFDaEQsb0RBQW9EO0FBQ3BELGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQWEsZ0JBQWdCOztBQUE3Qiw0Q0FxTEM7OztBQXBMQSw4QkFBOEI7QUFDZCwrQkFBYyxHQUFHLFdBQVcsQ0FBQztBQUU3QywwQ0FBMEM7QUFDMUIsa0NBQWlCLEdBQUcsNkJBQTZCLENBQUM7QUFDbEUsbURBQW1EO0FBQ25DLDJDQUEwQixHQUN6QyxzQ0FBc0MsQ0FBQztBQUN4QyxpREFBaUQ7QUFDakMseUNBQXdCLEdBQ3ZDLG9DQUFvQyxDQUFDO0FBQ3RDLDBDQUEwQztBQUMxQixrQ0FBaUIsR0FBRyw2QkFBNkIsQ0FBQztBQUNsRSx3Q0FBd0M7QUFDeEIsZ0NBQWUsR0FBRywyQkFBMkIsQ0FBQztBQUM5RCxtREFBbUQ7QUFDbkMsMkNBQTBCLEdBQ3pDLHNDQUFzQyxDQUFDO0FBQ3hDLHlEQUF5RDtBQUN6QyxpREFBZ0MsR0FDL0MsNENBQTRDLENBQUM7QUFDOUMsMENBQTBDO0FBQzFCLGtDQUFpQixHQUFHLDZCQUE2QixDQUFDO0FBQ2xFLG1EQUFtRDtBQUNuQywyQ0FBMEIsR0FDekMsc0NBQXNDLENBQUM7QUFDeEMsaURBQWlEO0FBQ2pDLHlDQUF3QixHQUN2QyxvQ0FBb0MsQ0FBQztBQUN0QywwQ0FBMEM7QUFDMUIsa0NBQWlCLEdBQUcsNkJBQTZCLENBQUM7QUFDbEUsd0NBQXdDO0FBQ3hCLGdDQUFlLEdBQUcsMkJBQTJCLENBQUM7QUFDOUQsbURBQW1EO0FBQ25DLDJDQUEwQixHQUN6QyxzQ0FBc0MsQ0FBQztBQUN4Qyx5REFBeUQ7QUFDekMsaURBQWdDLEdBQy9DLDRDQUE0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O0NBQzNCLENBQUM7QUFDRix5RUFBeUU7QUFDekQsMERBQXNDLEdBQWE7SUFDbEUsMkJBQTJCO0NBQzNCLENBQUM7QUFDRiwrREFBK0Q7QUFDL0MsZ0RBQTRCLEdBQWE7SUFDeEQsMEJBQTBCO0lBQzFCLGFBQWE7Q0FDYixDQUFDO0FBQ0YsMkRBQTJEO0FBQzNDLDRDQUF3QixHQUFhO0lBQ3BELDBCQUEwQjtJQUMxQiwyQkFBMkI7SUFDM0IsYUFBYTtDQUNiLENBQUM7QUFDRiw2REFBNkQ7QUFDN0MsOENBQTBCLEdBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN2RSxpRUFBaUU7QUFDakQsa0RBQThCLEdBQWE7SUFDMUQsMkJBQTJCO0NBQzNCLENBQUM7QUFDRiwwRUFBMEU7QUFDMUQsMkRBQXVDLEdBQWE7SUFDbkUsMkJBQTJCO0NBQzNCLENBQUM7QUFDRix3RUFBd0U7QUFDeEQseURBQXFDLEdBQWE7SUFDakUsMkJBQTJCO0NBQzNCLENBQUM7QUFDRixpRUFBaUU7QUFDakQsa0RBQThCLEdBQWE7SUFDMUQsMkJBQTJCO0NBQzNCLENBQUM7QUFDRiwrREFBK0Q7QUFDL0MsZ0RBQTRCLEdBQWE7SUFDeEQsMkJBQTJCO0NBQzNCLENBQUM7QUFDRiwwRUFBMEU7QUFDMUQsMkRBQXVDLEdBQWE7SUFDbkUsMkJBQTJCO0NBQzNCLENBQUM7QUFFRix1REFBdUQ7QUFDdkMsbUNBQWUsR0FBRywwQkFBMEIsQ0FBQztBQUM3RCx3REFBd0Q7QUFDeEMsb0NBQWdCLEdBQUcsMkJBQTJCLENBQUM7QUFDL0QsaURBQWlEO0FBQ2pDLGdDQUFZLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFVVE8tR0VORVJBVEVEIEZJTEUg4oCUIERPIE5PVCBFRElUIE1BTlVBTExZXG4vLyBHZW5lcmF0ZWQgZnJvbSBBV1MgU2VydmljZSBBdXRob3JpemF0aW9uIFJlZmVyZW5jZSBkYXRhXG4vLyBTb3VyY2U6IGRhdGEvc2VydmljZS1yZWZlcmVuY2UvYXBwY29uZmlnLmpzb25cbi8vIFJ1biBgbnB4IHByb2plbiBnZW5lcmF0ZS1jb25zdGFudHNgIHRvIHJlZ2VuZXJhdGVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogSUFNIGFjdGlvbiBjb25zdGFudHMgZm9yIHRoZSBhcHBjb25maWcgc2VydmljZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEFwcGNvbmZpZ0FjdGlvbnMge1xuXHQvKiogVGhlIElBTSBzZXJ2aWNlIHByZWZpeC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFNFUlZJQ0VfUFJFRklYID0gXCJhcHBjb25maWdcIjtcblxuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6Q3JlYXRlQXBwbGljYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUFwcGxpY2F0aW9uID0gXCJhcHBjb25maWc6Q3JlYXRlQXBwbGljYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOkNyZWF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVDb25maWd1cmF0aW9uUHJvZmlsZSA9XG5cdFx0XCJhcHBjb25maWc6Q3JlYXRlQ29uZmlndXJhdGlvblByb2ZpbGVcIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOkNyZWF0ZURlcGxveW1lbnRTdHJhdGVneSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRGVwbG95bWVudFN0cmF0ZWd5ID1cblx0XHRcImFwcGNvbmZpZzpDcmVhdGVEZXBsb3ltZW50U3RyYXRlZ3lcIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOkNyZWF0ZUVudmlyb25tZW50ICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFbnZpcm9ubWVudCA9IFwiYXBwY29uZmlnOkNyZWF0ZUVudmlyb25tZW50XCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpDcmVhdGVFeHRlbnNpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUV4dGVuc2lvbiA9IFwiYXBwY29uZmlnOkNyZWF0ZUV4dGVuc2lvblwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6Q3JlYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUV4dGVuc2lvbkFzc29jaWF0aW9uID1cblx0XHRcImFwcGNvbmZpZzpDcmVhdGVFeHRlbnNpb25Bc3NvY2lhdGlvblwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6Q3JlYXRlSG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uID1cblx0XHRcImFwcGNvbmZpZzpDcmVhdGVIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvblwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6RGVsZXRlQXBwbGljYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUFwcGxpY2F0aW9uID0gXCJhcHBjb25maWc6RGVsZXRlQXBwbGljYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOkRlbGV0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVDb25maWd1cmF0aW9uUHJvZmlsZSA9XG5cdFx0XCJhcHBjb25maWc6RGVsZXRlQ29uZmlndXJhdGlvblByb2ZpbGVcIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOkRlbGV0ZURlcGxveW1lbnRTdHJhdGVneSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRGVwbG95bWVudFN0cmF0ZWd5ID1cblx0XHRcImFwcGNvbmZpZzpEZWxldGVEZXBsb3ltZW50U3RyYXRlZ3lcIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOkRlbGV0ZUVudmlyb25tZW50ICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVFbnZpcm9ubWVudCA9IFwiYXBwY29uZmlnOkRlbGV0ZUVudmlyb25tZW50XCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpEZWxldGVFeHRlbnNpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUV4dGVuc2lvbiA9IFwiYXBwY29uZmlnOkRlbGV0ZUV4dGVuc2lvblwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6RGVsZXRlRXh0ZW5zaW9uQXNzb2NpYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUV4dGVuc2lvbkFzc29jaWF0aW9uID1cblx0XHRcImFwcGNvbmZpZzpEZWxldGVFeHRlbnNpb25Bc3NvY2lhdGlvblwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6RGVsZXRlSG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uID1cblx0XHRcImFwcGNvbmZpZzpEZWxldGVIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvblwiO1xuXHQvKiogW1JlYWRdIGFwcGNvbmZpZzpHZXRBY2NvdW50U2V0dGluZ3MgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEFjY291bnRTZXR0aW5ncyA9IFwiYXBwY29uZmlnOkdldEFjY291bnRTZXR0aW5nc1wiO1xuXHQvKiogW1JlYWRdIGFwcGNvbmZpZzpHZXRBcHBsaWNhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0QXBwbGljYXRpb24gPSBcImFwcGNvbmZpZzpHZXRBcHBsaWNhdGlvblwiO1xuXHQvKiogW1JlYWRdIGFwcGNvbmZpZzpHZXRDb25maWd1cmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRDb25maWd1cmF0aW9uID0gXCJhcHBjb25maWc6R2V0Q29uZmlndXJhdGlvblwiO1xuXHQvKiogW1JlYWRdIGFwcGNvbmZpZzpHZXRDb25maWd1cmF0aW9uUHJvZmlsZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0Q29uZmlndXJhdGlvblByb2ZpbGUgPVxuXHRcdFwiYXBwY29uZmlnOkdldENvbmZpZ3VyYXRpb25Qcm9maWxlXCI7XG5cdC8qKiBbUmVhZF0gYXBwY29uZmlnOkdldERlcGxveW1lbnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldERlcGxveW1lbnQgPSBcImFwcGNvbmZpZzpHZXREZXBsb3ltZW50XCI7XG5cdC8qKiBbUmVhZF0gYXBwY29uZmlnOkdldERlcGxveW1lbnRTdHJhdGVneSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0RGVwbG95bWVudFN0cmF0ZWd5ID1cblx0XHRcImFwcGNvbmZpZzpHZXREZXBsb3ltZW50U3RyYXRlZ3lcIjtcblx0LyoqIFtSZWFkXSBhcHBjb25maWc6R2V0RW52aXJvbm1lbnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEVudmlyb25tZW50ID0gXCJhcHBjb25maWc6R2V0RW52aXJvbm1lbnRcIjtcblx0LyoqIFtSZWFkXSBhcHBjb25maWc6R2V0RXh0ZW5zaW9uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRFeHRlbnNpb24gPSBcImFwcGNvbmZpZzpHZXRFeHRlbnNpb25cIjtcblx0LyoqIFtSZWFkXSBhcHBjb25maWc6R2V0RXh0ZW5zaW9uQXNzb2NpYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEV4dGVuc2lvbkFzc29jaWF0aW9uID1cblx0XHRcImFwcGNvbmZpZzpHZXRFeHRlbnNpb25Bc3NvY2lhdGlvblwiO1xuXHQvKiogW1JlYWRdIGFwcGNvbmZpZzpHZXRIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0SG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb24gPVxuXHRcdFwiYXBwY29uZmlnOkdldEhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uXCI7XG5cdC8qKiBbUmVhZF0gYXBwY29uZmlnOkdldExhdGVzdENvbmZpZ3VyYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldExhdGVzdENvbmZpZ3VyYXRpb24gPVxuXHRcdFwiYXBwY29uZmlnOkdldExhdGVzdENvbmZpZ3VyYXRpb25cIjtcblx0LyoqIFtMaXN0XSBhcHBjb25maWc6TGlzdEFwcGxpY2F0aW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEFwcGxpY2F0aW9ucyA9IFwiYXBwY29uZmlnOkxpc3RBcHBsaWNhdGlvbnNcIjtcblx0LyoqIFtMaXN0XSBhcHBjb25maWc6TGlzdENvbmZpZ3VyYXRpb25Qcm9maWxlcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdENvbmZpZ3VyYXRpb25Qcm9maWxlcyA9XG5cdFx0XCJhcHBjb25maWc6TGlzdENvbmZpZ3VyYXRpb25Qcm9maWxlc1wiO1xuXHQvKiogW0xpc3RdIGFwcGNvbmZpZzpMaXN0RGVwbG95bWVudFN0cmF0ZWdpZXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3REZXBsb3ltZW50U3RyYXRlZ2llcyA9XG5cdFx0XCJhcHBjb25maWc6TGlzdERlcGxveW1lbnRTdHJhdGVnaWVzXCI7XG5cdC8qKiBbTGlzdF0gYXBwY29uZmlnOkxpc3REZXBsb3ltZW50cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdERlcGxveW1lbnRzID0gXCJhcHBjb25maWc6TGlzdERlcGxveW1lbnRzXCI7XG5cdC8qKiBbTGlzdF0gYXBwY29uZmlnOkxpc3RFbnZpcm9ubWVudHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFbnZpcm9ubWVudHMgPSBcImFwcGNvbmZpZzpMaXN0RW52aXJvbm1lbnRzXCI7XG5cdC8qKiBbTGlzdF0gYXBwY29uZmlnOkxpc3RFeHRlbnNpb25Bc3NvY2lhdGlvbnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFeHRlbnNpb25Bc3NvY2lhdGlvbnMgPVxuXHRcdFwiYXBwY29uZmlnOkxpc3RFeHRlbnNpb25Bc3NvY2lhdGlvbnNcIjtcblx0LyoqIFtMaXN0XSBhcHBjb25maWc6TGlzdEV4dGVuc2lvbnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFeHRlbnNpb25zID0gXCJhcHBjb25maWc6TGlzdEV4dGVuc2lvbnNcIjtcblx0LyoqIFtMaXN0XSBhcHBjb25maWc6TGlzdEhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9ucyA9XG5cdFx0XCJhcHBjb25maWc6TGlzdEhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uc1wiO1xuXHQvKiogW1JlYWRdIGFwcGNvbmZpZzpMaXN0VGFnc0ZvclJlc291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFnc0ZvclJlc291cmNlID0gXCJhcHBjb25maWc6TGlzdFRhZ3NGb3JSZXNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6U3RhcnRDb25maWd1cmF0aW9uU2Vzc2lvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RhcnRDb25maWd1cmF0aW9uU2Vzc2lvbiA9XG5cdFx0XCJhcHBjb25maWc6U3RhcnRDb25maWd1cmF0aW9uU2Vzc2lvblwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6U3RhcnREZXBsb3ltZW50ICovXG5cdHN0YXRpYyByZWFkb25seSBTdGFydERlcGxveW1lbnQgPSBcImFwcGNvbmZpZzpTdGFydERlcGxveW1lbnRcIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOlN0b3BEZXBsb3ltZW50ICovXG5cdHN0YXRpYyByZWFkb25seSBTdG9wRGVwbG95bWVudCA9IFwiYXBwY29uZmlnOlN0b3BEZXBsb3ltZW50XCI7XG5cdC8qKiBbVGFnZ2luZ10gYXBwY29uZmlnOlRhZ1Jlc291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBUYWdSZXNvdXJjZSA9IFwiYXBwY29uZmlnOlRhZ1Jlc291cmNlXCI7XG5cdC8qKiBbVGFnZ2luZ10gYXBwY29uZmlnOlVudGFnUmVzb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVudGFnUmVzb3VyY2UgPSBcImFwcGNvbmZpZzpVbnRhZ1Jlc291cmNlXCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpVcGRhdGVBY2NvdW50U2V0dGluZ3MgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUFjY291bnRTZXR0aW5ncyA9IFwiYXBwY29uZmlnOlVwZGF0ZUFjY291bnRTZXR0aW5nc1wiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6VXBkYXRlQXBwbGljYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUFwcGxpY2F0aW9uID0gXCJhcHBjb25maWc6VXBkYXRlQXBwbGljYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOlVwZGF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVDb25maWd1cmF0aW9uUHJvZmlsZSA9XG5cdFx0XCJhcHBjb25maWc6VXBkYXRlQ29uZmlndXJhdGlvblByb2ZpbGVcIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOlVwZGF0ZURlcGxveW1lbnRTdHJhdGVneSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRGVwbG95bWVudFN0cmF0ZWd5ID1cblx0XHRcImFwcGNvbmZpZzpVcGRhdGVEZXBsb3ltZW50U3RyYXRlZ3lcIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOlVwZGF0ZUVudmlyb25tZW50ICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFbnZpcm9ubWVudCA9IFwiYXBwY29uZmlnOlVwZGF0ZUVudmlyb25tZW50XCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpVcGRhdGVFeHRlbnNpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUV4dGVuc2lvbiA9IFwiYXBwY29uZmlnOlVwZGF0ZUV4dGVuc2lvblwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6VXBkYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUV4dGVuc2lvbkFzc29jaWF0aW9uID1cblx0XHRcImFwcGNvbmZpZzpVcGRhdGVFeHRlbnNpb25Bc3NvY2lhdGlvblwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6VmFsaWRhdGVDb25maWd1cmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBWYWxpZGF0ZUNvbmZpZ3VyYXRpb24gPSBcImFwcGNvbmZpZzpWYWxpZGF0ZUNvbmZpZ3VyYXRpb25cIjtcblxuXHQvKiogQWxsIHJlYWQtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbFJlYWRBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRBcHBjb25maWdBY3Rpb25zLmFjdGlvbkdldEFjY291bnRTZXR0aW5ncyxcblx0XHRBcHBjb25maWdBY3Rpb25zLmFjdGlvbkdldEFwcGxpY2F0aW9uLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuYWN0aW9uR2V0Q29uZmlndXJhdGlvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLmFjdGlvbkdldENvbmZpZ3VyYXRpb25Qcm9maWxlLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuYWN0aW9uR2V0RGVwbG95bWVudCxcblx0XHRBcHBjb25maWdBY3Rpb25zLmFjdGlvbkdldERlcGxveW1lbnRTdHJhdGVneSxcblx0XHRBcHBjb25maWdBY3Rpb25zLmFjdGlvbkdldEVudmlyb25tZW50LFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuYWN0aW9uR2V0RXh0ZW5zaW9uLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuYWN0aW9uR2V0RXh0ZW5zaW9uQXNzb2NpYXRpb24sXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5hY3Rpb25HZXRIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLmFjdGlvbkdldExhdGVzdENvbmZpZ3VyYXRpb24sXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5MaXN0VGFnc0ZvclJlc291cmNlLFxuXHRdO1xuXHQvKiogQWxsIHdyaXRlLWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxXcml0ZUFjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuQ3JlYXRlQXBwbGljYXRpb24sXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5DcmVhdGVDb25maWd1cmF0aW9uUHJvZmlsZSxcblx0XHRBcHBjb25maWdBY3Rpb25zLkNyZWF0ZURlcGxveW1lbnRTdHJhdGVneSxcblx0XHRBcHBjb25maWdBY3Rpb25zLkNyZWF0ZUVudmlyb25tZW50LFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuQ3JlYXRlRXh0ZW5zaW9uLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuQ3JlYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb24sXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5DcmVhdGVIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLkRlbGV0ZUFwcGxpY2F0aW9uLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuRGVsZXRlQ29uZmlndXJhdGlvblByb2ZpbGUsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5EZWxldGVEZXBsb3ltZW50U3RyYXRlZ3ksXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5EZWxldGVFbnZpcm9ubWVudCxcblx0XHRBcHBjb25maWdBY3Rpb25zLkRlbGV0ZUV4dGVuc2lvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLkRlbGV0ZUV4dGVuc2lvbkFzc29jaWF0aW9uLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuRGVsZXRlSG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb24sXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5TdGFydENvbmZpZ3VyYXRpb25TZXNzaW9uLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuU3RhcnREZXBsb3ltZW50LFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuU3RvcERlcGxveW1lbnQsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5VcGRhdGVBY2NvdW50U2V0dGluZ3MsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5VcGRhdGVBcHBsaWNhdGlvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLlVwZGF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuVXBkYXRlRGVwbG95bWVudFN0cmF0ZWd5LFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuVXBkYXRlRW52aXJvbm1lbnQsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5VcGRhdGVFeHRlbnNpb24sXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5VcGRhdGVFeHRlbnNpb25Bc3NvY2lhdGlvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLlZhbGlkYXRlQ29uZmlndXJhdGlvbixcblx0XTtcblx0LyoqIEFsbCBsaXN0LWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxMaXN0QWN0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5MaXN0QXBwbGljYXRpb25zLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuTGlzdENvbmZpZ3VyYXRpb25Qcm9maWxlcyxcblx0XHRBcHBjb25maWdBY3Rpb25zLkxpc3REZXBsb3ltZW50U3RyYXRlZ2llcyxcblx0XHRBcHBjb25maWdBY3Rpb25zLkxpc3REZXBsb3ltZW50cyxcblx0XHRBcHBjb25maWdBY3Rpb25zLkxpc3RFbnZpcm9ubWVudHMsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5MaXN0RXh0ZW5zaW9uQXNzb2NpYXRpb25zLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuTGlzdEV4dGVuc2lvbnMsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5MaXN0SG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb25zLFxuXHRdO1xuXHQvKiogQWxsIHBlcm1pc3Npb24tbWFuYWdlbWVudC1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsUGVybWlzc2lvbk1hbmFnZW1lbnRBY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuXHQvKiogQWxsIHRhZ2dpbmctbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbFRhZ2dpbmdBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRBcHBjb25maWdBY3Rpb25zLlRhZ1Jlc291cmNlLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuVW50YWdSZXNvdXJjZSxcblx0XTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGFwcGxpY2F0aW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdBcHBsaWNhdGlvbkFyblByb3BzIHtcblx0LyoqIFRoZSBBcHBsaWNhdGlvbklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgYXBwbGljYXRpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGNvbmZpZ0FwcGxpY2F0aW9uQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBBcHBsaWNhdGlvbklkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgYXBwbGljYXRpb25JZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgY29uZmlndXJhdGlvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwY29uZmlnQ29uZmlndXJhdGlvbkFyblByb3BzIHtcblx0LyoqIFRoZSBBcHBsaWNhdGlvbklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgRW52aXJvbm1lbnRJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZW52aXJvbm1lbnRJZDogc3RyaW5nO1xuXHQvKiogVGhlIENvbmZpZ3VyYXRpb25Qcm9maWxlSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25Qcm9maWxlSWQ6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBjb25maWd1cmF0aW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdDb25maWd1cmF0aW9uQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBBcHBsaWNhdGlvbklkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgYXBwbGljYXRpb25JZDogc3RyaW5nO1xuXHQvKiogVGhlIEVudmlyb25tZW50SWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBlbnZpcm9ubWVudElkOiBzdHJpbmc7XG5cdC8qKiBUaGUgQ29uZmlndXJhdGlvblByb2ZpbGVJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25Qcm9maWxlSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGNvbmZpZ3VyYXRpb25wcm9maWxlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdDb25maWd1cmF0aW9ucHJvZmlsZUFyblByb3BzIHtcblx0LyoqIFRoZSBBcHBsaWNhdGlvbklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgQ29uZmlndXJhdGlvblByb2ZpbGVJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgY29uZmlndXJhdGlvblByb2ZpbGVJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGNvbmZpZ3VyYXRpb25wcm9maWxlIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdDb25maWd1cmF0aW9ucHJvZmlsZUFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgQXBwbGljYXRpb25JZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcblx0LyoqIFRoZSBDb25maWd1cmF0aW9uUHJvZmlsZUlkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgY29uZmlndXJhdGlvblByb2ZpbGVJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgZGVwbG95bWVudCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwY29uZmlnRGVwbG95bWVudEFyblByb3BzIHtcblx0LyoqIFRoZSBBcHBsaWNhdGlvbklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgRW52aXJvbm1lbnRJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZW52aXJvbm1lbnRJZDogc3RyaW5nO1xuXHQvKiogVGhlIERlcGxveW1lbnROdW1iZXIgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGRlcGxveW1lbnROdW1iZXI6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBkZXBsb3ltZW50IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdEZXBsb3ltZW50QXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBBcHBsaWNhdGlvbklkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgYXBwbGljYXRpb25JZDogc3RyaW5nO1xuXHQvKiogVGhlIEVudmlyb25tZW50SWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBlbnZpcm9ubWVudElkOiBzdHJpbmc7XG5cdC8qKiBUaGUgRGVwbG95bWVudE51bWJlciBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGRlcGxveW1lbnROdW1iZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGRlcGxveW1lbnRzdHJhdGVneSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwY29uZmlnRGVwbG95bWVudHN0cmF0ZWd5QXJuUHJvcHMge1xuXHQvKiogVGhlIERlcGxveW1lbnRTdHJhdGVneUlkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBkZXBsb3ltZW50U3RyYXRlZ3lJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGRlcGxveW1lbnRzdHJhdGVneSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwY29uZmlnRGVwbG95bWVudHN0cmF0ZWd5QXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBEZXBsb3ltZW50U3RyYXRlZ3lJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGRlcGxveW1lbnRTdHJhdGVneUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBlbnZpcm9ubWVudCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwY29uZmlnRW52aXJvbm1lbnRBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgQXBwbGljYXRpb25JZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgYXBwbGljYXRpb25JZDogc3RyaW5nO1xuXHQvKiogVGhlIEVudmlyb25tZW50SWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGVudmlyb25tZW50SWQ6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBlbnZpcm9ubWVudCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwY29uZmlnRW52aXJvbm1lbnRBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIEFwcGxpY2F0aW9uSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgRW52aXJvbm1lbnRJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGVudmlyb25tZW50SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGV4dGVuc2lvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwY29uZmlnRXh0ZW5zaW9uQXJuUHJvcHMge1xuXHQvKiogVGhlIEV4dGVuc2lvbklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBleHRlbnNpb25JZDogc3RyaW5nO1xuXHQvKiogVGhlIEV4dGVuc2lvblZlcnNpb25OdW1iZXIgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGV4dGVuc2lvblZlcnNpb25OdW1iZXI6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBleHRlbnNpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGNvbmZpZ0V4dGVuc2lvbkFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRXh0ZW5zaW9uSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBleHRlbnNpb25JZDogc3RyaW5nO1xuXHQvKiogVGhlIEV4dGVuc2lvblZlcnNpb25OdW1iZXIgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBleHRlbnNpb25WZXJzaW9uTnVtYmVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBleHRlbnNpb25hc3NvY2lhdGlvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwY29uZmlnRXh0ZW5zaW9uYXNzb2NpYXRpb25Bcm5Qcm9wcyB7XG5cdC8qKiBUaGUgRXh0ZW5zaW9uQXNzb2NpYXRpb25JZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZXh0ZW5zaW9uQXNzb2NpYXRpb25JZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGV4dGVuc2lvbmFzc29jaWF0aW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdFeHRlbnNpb25hc3NvY2lhdGlvbkFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRXh0ZW5zaW9uQXNzb2NpYXRpb25JZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGV4dGVuc2lvbkFzc29jaWF0aW9uSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGhvc3RlZGNvbmZpZ3VyYXRpb252ZXJzaW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdIb3N0ZWRjb25maWd1cmF0aW9udmVyc2lvbkFyblByb3BzIHtcblx0LyoqIFRoZSBBcHBsaWNhdGlvbklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgQ29uZmlndXJhdGlvblByb2ZpbGVJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgY29uZmlndXJhdGlvblByb2ZpbGVJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGhvc3RlZGNvbmZpZ3VyYXRpb252ZXJzaW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdIb3N0ZWRjb25maWd1cmF0aW9udmVyc2lvbkFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgQXBwbGljYXRpb25JZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcblx0LyoqIFRoZSBDb25maWd1cmF0aW9uUHJvZmlsZUlkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgY29uZmlndXJhdGlvblByb2ZpbGVJZDogc3RyaW5nO1xufVxuXG5jb25zdCBBcHBsaWNhdGlvbkFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTphcHBjb25maWc6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTphcHBsaWNhdGlvblxcLyg/PGFwcGxpY2F0aW9uSWQ+W146Lz9dKykkLztcbmNvbnN0IENvbmZpZ3VyYXRpb25Bcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6YXBwY29uZmlnOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6YXBwbGljYXRpb25cXC8oPzxhcHBsaWNhdGlvbklkPlteOi8/XSspXFwvZW52aXJvbm1lbnRcXC8oPzxlbnZpcm9ubWVudElkPlteOi8/XSspXFwvY29uZmlndXJhdGlvblxcLyg/PGNvbmZpZ3VyYXRpb25Qcm9maWxlSWQ+W146Lz9dKykkLztcbmNvbnN0IENvbmZpZ3VyYXRpb25wcm9maWxlQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmFwcGNvbmZpZzooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmFwcGxpY2F0aW9uXFwvKD88YXBwbGljYXRpb25JZD5bXjovP10rKVxcL2NvbmZpZ3VyYXRpb25wcm9maWxlXFwvKD88Y29uZmlndXJhdGlvblByb2ZpbGVJZD5bXjovP10rKSQvO1xuY29uc3QgRGVwbG95bWVudEFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTphcHBjb25maWc6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTphcHBsaWNhdGlvblxcLyg/PGFwcGxpY2F0aW9uSWQ+W146Lz9dKylcXC9lbnZpcm9ubWVudFxcLyg/PGVudmlyb25tZW50SWQ+W146Lz9dKylcXC9kZXBsb3ltZW50XFwvKD88ZGVwbG95bWVudE51bWJlcj5bXjovP10rKSQvO1xuY29uc3QgRGVwbG95bWVudHN0cmF0ZWd5QXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmFwcGNvbmZpZzooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmRlcGxveW1lbnRzdHJhdGVneVxcLyg/PGRlcGxveW1lbnRTdHJhdGVneUlkPlteOi8/XSspJC87XG5jb25zdCBFbnZpcm9ubWVudEFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTphcHBjb25maWc6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTphcHBsaWNhdGlvblxcLyg/PGFwcGxpY2F0aW9uSWQ+W146Lz9dKylcXC9lbnZpcm9ubWVudFxcLyg/PGVudmlyb25tZW50SWQ+W146Lz9dKykkLztcbmNvbnN0IEV4dGVuc2lvbkFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTphcHBjb25maWc6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpleHRlbnNpb25cXC8oPzxleHRlbnNpb25JZD5bXjovP10rKVxcLyg/PGV4dGVuc2lvblZlcnNpb25OdW1iZXI+W146Lz9dKykkLztcbmNvbnN0IEV4dGVuc2lvbmFzc29jaWF0aW9uQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmFwcGNvbmZpZzooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmV4dGVuc2lvbmFzc29jaWF0aW9uXFwvKD88ZXh0ZW5zaW9uQXNzb2NpYXRpb25JZD5bXjovP10rKSQvO1xuY29uc3QgSG9zdGVkY29uZmlndXJhdGlvbnZlcnNpb25Bcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6YXBwY29uZmlnOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6YXBwbGljYXRpb25cXC8oPzxhcHBsaWNhdGlvbklkPlteOi8/XSspXFwvY29uZmlndXJhdGlvbnByb2ZpbGVcXC8oPzxjb25maWd1cmF0aW9uUHJvZmlsZUlkPlteOi8/XSspJC87XG5cbi8qKlxuICogQVJOIGJ1aWxkZXJzLCB2YWxpZGF0b3JzLCBhbmQgcGFyc2VycyBmb3IgYXBwY29uZmlnIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFwcGNvbmZpZ1Jlc291cmNlcyB7XG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgYXBwbGljYXRpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgYXBwbGljYXRpb24ocHJvcHM6IEFwcGNvbmZpZ0FwcGxpY2F0aW9uQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmFwcGNvbmZpZzoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTphcHBsaWNhdGlvbi8ke3Byb3BzLmFwcGxpY2F0aW9uSWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGFwcGxpY2F0aW9uIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRBcHBsaWNhdGlvbkFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBBcHBsaWNhdGlvbkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBhcHBsaWNhdGlvbiBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VBcHBsaWNhdGlvbkFybihhcm46IHN0cmluZyk6IEFwcGNvbmZpZ0FwcGxpY2F0aW9uQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBBcHBsaWNhdGlvbkFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhcHBsaWNhdGlvbiBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRhcHBsaWNhdGlvbklkOiBtYXRjaC5ncm91cHMhLmFwcGxpY2F0aW9uSWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgY29uZmlndXJhdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBjb25maWd1cmF0aW9uKHByb3BzOiBBcHBjb25maWdDb25maWd1cmF0aW9uQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmFwcGNvbmZpZzoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTphcHBsaWNhdGlvbi8ke3Byb3BzLmFwcGxpY2F0aW9uSWR9L2Vudmlyb25tZW50LyR7cHJvcHMuZW52aXJvbm1lbnRJZH0vY29uZmlndXJhdGlvbi8ke3Byb3BzLmNvbmZpZ3VyYXRpb25Qcm9maWxlSWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZENvbmZpZ3VyYXRpb25Bcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gQ29uZmlndXJhdGlvbkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBjb25maWd1cmF0aW9uIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUNvbmZpZ3VyYXRpb25Bcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEFwcGNvbmZpZ0NvbmZpZ3VyYXRpb25Bcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IENvbmZpZ3VyYXRpb25Bcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY29uZmlndXJhdGlvbiBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRhcHBsaWNhdGlvbklkOiBtYXRjaC5ncm91cHMhLmFwcGxpY2F0aW9uSWQsXG5cdFx0XHRlbnZpcm9ubWVudElkOiBtYXRjaC5ncm91cHMhLmVudmlyb25tZW50SWQsXG5cdFx0XHRjb25maWd1cmF0aW9uUHJvZmlsZUlkOiBtYXRjaC5ncm91cHMhLmNvbmZpZ3VyYXRpb25Qcm9maWxlSWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgY29uZmlndXJhdGlvbnByb2ZpbGUgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgY29uZmlndXJhdGlvbnByb2ZpbGUoXG5cdFx0cHJvcHM6IEFwcGNvbmZpZ0NvbmZpZ3VyYXRpb25wcm9maWxlQXJuUHJvcHMsXG5cdCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06YXBwY29uZmlnOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmFwcGxpY2F0aW9uLyR7cHJvcHMuYXBwbGljYXRpb25JZH0vY29uZmlndXJhdGlvbnByb2ZpbGUvJHtwcm9wcy5jb25maWd1cmF0aW9uUHJvZmlsZUlkfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBjb25maWd1cmF0aW9ucHJvZmlsZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkQ29uZmlndXJhdGlvbnByb2ZpbGVBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gQ29uZmlndXJhdGlvbnByb2ZpbGVBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgY29uZmlndXJhdGlvbnByb2ZpbGUgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlQ29uZmlndXJhdGlvbnByb2ZpbGVBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEFwcGNvbmZpZ0NvbmZpZ3VyYXRpb25wcm9maWxlQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBDb25maWd1cmF0aW9ucHJvZmlsZUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjb25maWd1cmF0aW9ucHJvZmlsZSBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRhcHBsaWNhdGlvbklkOiBtYXRjaC5ncm91cHMhLmFwcGxpY2F0aW9uSWQsXG5cdFx0XHRjb25maWd1cmF0aW9uUHJvZmlsZUlkOiBtYXRjaC5ncm91cHMhLmNvbmZpZ3VyYXRpb25Qcm9maWxlSWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgZGVwbG95bWVudCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBkZXBsb3ltZW50KHByb3BzOiBBcHBjb25maWdEZXBsb3ltZW50QXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmFwcGNvbmZpZzoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTphcHBsaWNhdGlvbi8ke3Byb3BzLmFwcGxpY2F0aW9uSWR9L2Vudmlyb25tZW50LyR7cHJvcHMuZW52aXJvbm1lbnRJZH0vZGVwbG95bWVudC8ke3Byb3BzLmRlcGxveW1lbnROdW1iZXJ9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGRlcGxveW1lbnQgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZERlcGxveW1lbnRBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRGVwbG95bWVudEFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBkZXBsb3ltZW50IEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZURlcGxveW1lbnRBcm4oYXJuOiBzdHJpbmcpOiBBcHBjb25maWdEZXBsb3ltZW50QXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBEZXBsb3ltZW50QXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRlcGxveW1lbnQgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0YXBwbGljYXRpb25JZDogbWF0Y2guZ3JvdXBzIS5hcHBsaWNhdGlvbklkLFxuXHRcdFx0ZW52aXJvbm1lbnRJZDogbWF0Y2guZ3JvdXBzIS5lbnZpcm9ubWVudElkLFxuXHRcdFx0ZGVwbG95bWVudE51bWJlcjogbWF0Y2guZ3JvdXBzIS5kZXBsb3ltZW50TnVtYmVyLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGRlcGxveW1lbnRzdHJhdGVneSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBkZXBsb3ltZW50c3RyYXRlZ3koXG5cdFx0cHJvcHM6IEFwcGNvbmZpZ0RlcGxveW1lbnRzdHJhdGVneUFyblByb3BzLFxuXHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmFwcGNvbmZpZzoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpkZXBsb3ltZW50c3RyYXRlZ3kvJHtwcm9wcy5kZXBsb3ltZW50U3RyYXRlZ3lJZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZGVwbG95bWVudHN0cmF0ZWd5IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWREZXBsb3ltZW50c3RyYXRlZ3lBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRGVwbG95bWVudHN0cmF0ZWd5QXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGRlcGxveW1lbnRzdHJhdGVneSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VEZXBsb3ltZW50c3RyYXRlZ3lBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEFwcGNvbmZpZ0RlcGxveW1lbnRzdHJhdGVneUFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gRGVwbG95bWVudHN0cmF0ZWd5QXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRlcGxveW1lbnRzdHJhdGVneSBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRkZXBsb3ltZW50U3RyYXRlZ3lJZDogbWF0Y2guZ3JvdXBzIS5kZXBsb3ltZW50U3RyYXRlZ3lJZCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBlbnZpcm9ubWVudCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBlbnZpcm9ubWVudChwcm9wczogQXBwY29uZmlnRW52aXJvbm1lbnRBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06YXBwY29uZmlnOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmFwcGxpY2F0aW9uLyR7cHJvcHMuYXBwbGljYXRpb25JZH0vZW52aXJvbm1lbnQvJHtwcm9wcy5lbnZpcm9ubWVudElkfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBlbnZpcm9ubWVudCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkRW52aXJvbm1lbnRBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRW52aXJvbm1lbnRBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgZW52aXJvbm1lbnQgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlRW52aXJvbm1lbnRBcm4oYXJuOiBzdHJpbmcpOiBBcHBjb25maWdFbnZpcm9ubWVudEFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gRW52aXJvbm1lbnRBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZW52aXJvbm1lbnQgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0YXBwbGljYXRpb25JZDogbWF0Y2guZ3JvdXBzIS5hcHBsaWNhdGlvbklkLFxuXHRcdFx0ZW52aXJvbm1lbnRJZDogbWF0Y2guZ3JvdXBzIS5lbnZpcm9ubWVudElkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGV4dGVuc2lvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBleHRlbnNpb24ocHJvcHM6IEFwcGNvbmZpZ0V4dGVuc2lvbkFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTphcHBjb25maWc6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06ZXh0ZW5zaW9uLyR7cHJvcHMuZXh0ZW5zaW9uSWR9LyR7cHJvcHMuZXh0ZW5zaW9uVmVyc2lvbk51bWJlcn1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZXh0ZW5zaW9uIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRFeHRlbnNpb25Bcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRXh0ZW5zaW9uQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGV4dGVuc2lvbiBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VFeHRlbnNpb25Bcm4oYXJuOiBzdHJpbmcpOiBBcHBjb25maWdFeHRlbnNpb25Bcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEV4dGVuc2lvbkFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBleHRlbnNpb24gQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0ZXh0ZW5zaW9uSWQ6IG1hdGNoLmdyb3VwcyEuZXh0ZW5zaW9uSWQsXG5cdFx0XHRleHRlbnNpb25WZXJzaW9uTnVtYmVyOiBtYXRjaC5ncm91cHMhLmV4dGVuc2lvblZlcnNpb25OdW1iZXIsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgZXh0ZW5zaW9uYXNzb2NpYXRpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgZXh0ZW5zaW9uYXNzb2NpYXRpb24oXG5cdFx0cHJvcHM6IEFwcGNvbmZpZ0V4dGVuc2lvbmFzc29jaWF0aW9uQXJuUHJvcHMsXG5cdCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06YXBwY29uZmlnOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmV4dGVuc2lvbmFzc29jaWF0aW9uLyR7cHJvcHMuZXh0ZW5zaW9uQXNzb2NpYXRpb25JZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZXh0ZW5zaW9uYXNzb2NpYXRpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZEV4dGVuc2lvbmFzc29jaWF0aW9uQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEV4dGVuc2lvbmFzc29jaWF0aW9uQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGV4dGVuc2lvbmFzc29jaWF0aW9uIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUV4dGVuc2lvbmFzc29jaWF0aW9uQXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBBcHBjb25maWdFeHRlbnNpb25hc3NvY2lhdGlvbkFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gRXh0ZW5zaW9uYXNzb2NpYXRpb25Bcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZXh0ZW5zaW9uYXNzb2NpYXRpb24gQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0ZXh0ZW5zaW9uQXNzb2NpYXRpb25JZDogbWF0Y2guZ3JvdXBzIS5leHRlbnNpb25Bc3NvY2lhdGlvbklkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGhvc3RlZGNvbmZpZ3VyYXRpb252ZXJzaW9uIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGhvc3RlZGNvbmZpZ3VyYXRpb252ZXJzaW9uKFxuXHRcdHByb3BzOiBBcHBjb25maWdIb3N0ZWRjb25maWd1cmF0aW9udmVyc2lvbkFyblByb3BzLFxuXHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmFwcGNvbmZpZzoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTphcHBsaWNhdGlvbi8ke3Byb3BzLmFwcGxpY2F0aW9uSWR9L2NvbmZpZ3VyYXRpb25wcm9maWxlLyR7cHJvcHMuY29uZmlndXJhdGlvblByb2ZpbGVJZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgaG9zdGVkY29uZmlndXJhdGlvbnZlcnNpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZEhvc3RlZGNvbmZpZ3VyYXRpb252ZXJzaW9uQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEhvc3RlZGNvbmZpZ3VyYXRpb252ZXJzaW9uQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGhvc3RlZGNvbmZpZ3VyYXRpb252ZXJzaW9uIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUhvc3RlZGNvbmZpZ3VyYXRpb252ZXJzaW9uQXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBBcHBjb25maWdIb3N0ZWRjb25maWd1cmF0aW9udmVyc2lvbkFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gSG9zdGVkY29uZmlndXJhdGlvbnZlcnNpb25Bcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaG9zdGVkY29uZmlndXJhdGlvbnZlcnNpb24gQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0YXBwbGljYXRpb25JZDogbWF0Y2guZ3JvdXBzIS5hcHBsaWNhdGlvbklkLFxuXHRcdFx0Y29uZmlndXJhdGlvblByb2ZpbGVJZDogbWF0Y2guZ3JvdXBzIS5jb25maWd1cmF0aW9uUHJvZmlsZUlkLFxuXHRcdH07XG5cdH1cbn1cblxuLyoqXG4gKiBBUEkgb3BlcmF0aW9uIHRvIHJlcXVpcmVkIElBTSBhY3Rpb25zIG1hcHBpbmcgZm9yIGFwcGNvbmZpZy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFwcGNvbmZpZ09wZXJhdGlvbnMge1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVBcHBsaWNhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUFwcGxpY2F0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpDcmVhdGVBcHBsaWNhdGlvblwiLFxuXHRcdFwiYXBwY29uZmlnOlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQ29uZmlndXJhdGlvblByb2ZpbGU6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOkNyZWF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlXCIsXG5cdFx0XCJpYW06UGFzc1JvbGVcIixcblx0XHRcImFwcGNvbmZpZzpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVEZXBsb3ltZW50U3RyYXRlZ3kgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVEZXBsb3ltZW50U3RyYXRlZ3k6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOkNyZWF0ZURlcGxveW1lbnRTdHJhdGVneVwiLFxuXHRcdFwiYXBwY29uZmlnOlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZUVudmlyb25tZW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRW52aXJvbm1lbnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOkNyZWF0ZUVudmlyb25tZW50XCIsXG5cdFx0XCJpYW06UGFzc1JvbGVcIixcblx0XHRcImFwcGNvbmZpZzpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVFeHBlcmltZW50RGVmaW5pdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUV4cGVyaW1lbnREZWZpbml0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVFeHRlbnNpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFeHRlbnNpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOkNyZWF0ZUV4dGVuc2lvblwiLFxuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJhcHBjb25maWc6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFeHRlbnNpb25Bc3NvY2lhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6Q3JlYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb25cIixcblx0XHRcImFwcGNvbmZpZzpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpDcmVhdGVIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVBcHBsaWNhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUFwcGxpY2F0aW9uOiBzdHJpbmdbXSA9IFtcImFwcGNvbmZpZzpEZWxldGVBcHBsaWNhdGlvblwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlQ29uZmlndXJhdGlvblByb2ZpbGUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVDb25maWd1cmF0aW9uUHJvZmlsZTogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6RGVsZXRlQ29uZmlndXJhdGlvblByb2ZpbGVcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlRGVwbG95bWVudFN0cmF0ZWd5IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRGVwbG95bWVudFN0cmF0ZWd5OiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpEZWxldGVEZXBsb3ltZW50U3RyYXRlZ3lcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlRW52aXJvbm1lbnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVFbnZpcm9ubWVudDogc3RyaW5nW10gPSBbXCJhcHBjb25maWc6RGVsZXRlRW52aXJvbm1lbnRcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUV4cGVyaW1lbnREZWZpbml0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRXhwZXJpbWVudERlZmluaXRpb246IHN0cmluZ1tdID0gW107XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUV4dGVuc2lvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUV4dGVuc2lvbjogc3RyaW5nW10gPSBbXCJhcHBjb25maWc6RGVsZXRlRXh0ZW5zaW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVFeHRlbnNpb25Bc3NvY2lhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUV4dGVuc2lvbkFzc29jaWF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpEZWxldGVFeHRlbnNpb25Bc3NvY2lhdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpEZWxldGVIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRBY2NvdW50U2V0dGluZ3MgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldEFjY291bnRTZXR0aW5nczogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6R2V0QWNjb3VudFNldHRpbmdzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldEFwcGxpY2F0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRBcHBsaWNhdGlvbjogc3RyaW5nW10gPSBbXCJhcHBjb25maWc6R2V0QXBwbGljYXRpb25cIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldENvbmZpZ3VyYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldENvbmZpZ3VyYXRpb246IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOkdldENvbmZpZ3VyYXRpb25cIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldENvbmZpZ3VyYXRpb25Qcm9maWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRDb25maWd1cmF0aW9uUHJvZmlsZTogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6R2V0Q29uZmlndXJhdGlvblByb2ZpbGVcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0RGVwbG95bWVudCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0RGVwbG95bWVudDogc3RyaW5nW10gPSBbXCJhcHBjb25maWc6R2V0RGVwbG95bWVudFwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0RGVwbG95bWVudFN0cmF0ZWd5IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXREZXBsb3ltZW50U3RyYXRlZ3k6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOkdldERlcGxveW1lbnRTdHJhdGVneVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRFbnZpcm9ubWVudCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0RW52aXJvbm1lbnQ6IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOkdldEVudmlyb25tZW50XCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRFeHBlcmltZW50RGVmaW5pdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0RXhwZXJpbWVudERlZmluaXRpb246IHN0cmluZ1tdID0gW107XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldEV4cGVyaW1lbnRSdW4gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldEV4cGVyaW1lbnRSdW46IHN0cmluZ1tdID0gW107XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldEV4dGVuc2lvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0RXh0ZW5zaW9uOiBzdHJpbmdbXSA9IFtcImFwcGNvbmZpZzpHZXRFeHRlbnNpb25cIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldEV4dGVuc2lvbkFzc29jaWF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRFeHRlbnNpb25Bc3NvY2lhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6R2V0RXh0ZW5zaW9uQXNzb2NpYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0SG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldEhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpHZXRIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRMYXRlc3RDb25maWd1cmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRMYXRlc3RDb25maWd1cmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpHZXRMYXRlc3RDb25maWd1cmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RBcHBsaWNhdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0QXBwbGljYXRpb25zOiBzdHJpbmdbXSA9IFtcImFwcGNvbmZpZzpMaXN0QXBwbGljYXRpb25zXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0Q29uZmlndXJhdGlvblByb2ZpbGVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdENvbmZpZ3VyYXRpb25Qcm9maWxlczogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6TGlzdENvbmZpZ3VyYXRpb25Qcm9maWxlc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0RGVwbG95bWVudFN0cmF0ZWdpZXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RGVwbG95bWVudFN0cmF0ZWdpZXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOkxpc3REZXBsb3ltZW50U3RyYXRlZ2llc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0RGVwbG95bWVudHMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RGVwbG95bWVudHM6IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOkxpc3REZXBsb3ltZW50c1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdEVudmlyb25tZW50cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFbnZpcm9ubWVudHM6IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOkxpc3RFbnZpcm9ubWVudHNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RFeHBlcmltZW50RGVmaW5pdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RXhwZXJpbWVudERlZmluaXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0RXhwZXJpbWVudFJ1bkV2ZW50cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFeHBlcmltZW50UnVuRXZlbnRzOiBzdHJpbmdbXSA9IFtdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0RXhwZXJpbWVudFJ1bnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RXhwZXJpbWVudFJ1bnM6IHN0cmluZ1tdID0gW107XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RFeHRlbnNpb25Bc3NvY2lhdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RXh0ZW5zaW9uQXNzb2NpYXRpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpMaXN0RXh0ZW5zaW9uQXNzb2NpYXRpb25zXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RFeHRlbnNpb25zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEV4dGVuc2lvbnM6IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOkxpc3RFeHRlbnNpb25zXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0SG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb25zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uczogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6TGlzdEhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0VGFnc0ZvclJlc291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRhZ3NGb3JSZXNvdXJjZTogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6TGlzdFRhZ3NGb3JSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBTdGFydENvbmZpZ3VyYXRpb25TZXNzaW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RhcnRDb25maWd1cmF0aW9uU2Vzc2lvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6U3RhcnRDb25maWd1cmF0aW9uU2Vzc2lvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBTdGFydERlcGxveW1lbnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBTdGFydERlcGxveW1lbnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOlN0YXJ0RGVwbG95bWVudFwiLFxuXHRcdFwiYXBwY29uZmlnOlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFN0YXJ0RXhwZXJpbWVudFJ1biBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0RXhwZXJpbWVudFJ1bjogc3RyaW5nW10gPSBbXCJhcHBjb25maWc6VGFnUmVzb3VyY2VcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFN0b3BEZXBsb3ltZW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcERlcGxveW1lbnQ6IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOlN0b3BEZXBsb3ltZW50XCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBTdG9wRXhwZXJpbWVudFJ1biBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0b3BFeHBlcmltZW50UnVuOiBzdHJpbmdbXSA9IFtdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBUYWdSZXNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFRhZ1Jlc291cmNlOiBzdHJpbmdbXSA9IFtcImFwcGNvbmZpZzpUYWdSZXNvdXJjZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVW50YWdSZXNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVudGFnUmVzb3VyY2U6IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOlVudGFnUmVzb3VyY2VcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUFjY291bnRTZXR0aW5ncyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUFjY291bnRTZXR0aW5nczogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6VXBkYXRlQWNjb3VudFNldHRpbmdzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUFwcGxpY2F0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQXBwbGljYXRpb246IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOlVwZGF0ZUFwcGxpY2F0aW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVDb25maWd1cmF0aW9uUHJvZmlsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlOiBzdHJpbmdbXSA9IFtcblx0XHRcImlhbTpQYXNzUm9sZVwiLFxuXHRcdFwiYXBwY29uZmlnOlVwZGF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZURlcGxveW1lbnRTdHJhdGVneSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZURlcGxveW1lbnRTdHJhdGVneTogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6VXBkYXRlRGVwbG95bWVudFN0cmF0ZWd5XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUVudmlyb25tZW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRW52aXJvbm1lbnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJhcHBjb25maWc6VXBkYXRlRW52aXJvbm1lbnRcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlRXhwZXJpbWVudERlZmluaXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFeHBlcmltZW50RGVmaW5pdGlvbjogc3RyaW5nW10gPSBbXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlRXhwZXJpbWVudFJ1biBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUV4cGVyaW1lbnRSdW46IHN0cmluZ1tdID0gW107XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUV4dGVuc2lvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUV4dGVuc2lvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJpYW06UGFzc1JvbGVcIixcblx0XHRcImFwcGNvbmZpZzpVcGRhdGVFeHRlbnNpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFeHRlbnNpb25Bc3NvY2lhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6VXBkYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVmFsaWRhdGVDb25maWd1cmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVmFsaWRhdGVDb25maWd1cmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpWYWxpZGF0ZUNvbmZpZ3VyYXRpb25cIixcblx0XTtcbn1cblxuLyoqXG4gKiBDb25kaXRpb24ga2V5IGNvbnN0YW50cyBhbmQgYnVpbGRlcnMgZm9yIGFwcGNvbmZpZy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFwcGNvbmZpZ0NvbmRpdGlvbnMge1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlQXBwbGljYXRpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQXBwbGljYXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIENyZWF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVEZXBsb3ltZW50U3RyYXRlZ3kgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRGVwbG95bWVudFN0cmF0ZWd5Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVFbnZpcm9ubWVudCBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFbnZpcm9ubWVudENvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlRXh0ZW5zaW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUV4dGVuc2lvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIEdldEFwcGxpY2F0aW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEFwcGxpY2F0aW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBHZXRDb25maWd1cmF0aW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldENvbmZpZ3VyYXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIEdldENvbmZpZ3VyYXRpb25Qcm9maWxlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldENvbmZpZ3VyYXRpb25Qcm9maWxlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBHZXREZXBsb3ltZW50IGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldERlcGxveW1lbnRDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIEdldERlcGxveW1lbnRTdHJhdGVneSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXREZXBsb3ltZW50U3RyYXRlZ3lDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIEdldEVudmlyb25tZW50IGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEVudmlyb25tZW50Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBHZXRFeHRlbnNpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0RXh0ZW5zaW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBHZXRFeHRlbnNpb25Bc3NvY2lhdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRFeHRlbnNpb25Bc3NvY2lhdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgR2V0TGF0ZXN0Q29uZmlndXJhdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRMYXRlc3RDb25maWd1cmF0aW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBMaXN0VGFnc0ZvclJlc291cmNlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2VDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFN0YXJ0Q29uZmlndXJhdGlvblNlc3Npb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RhcnRDb25maWd1cmF0aW9uU2Vzc2lvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgU3RhcnREZXBsb3ltZW50IGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0RGVwbG95bWVudENvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVGFnUmVzb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGFnUmVzb3VyY2VDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFVudGFnUmVzb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1wiYXdzOlRhZ0tleXNcIl07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBVcGRhdGVBcHBsaWNhdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVBcHBsaWNhdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVXBkYXRlQ29uZmlndXJhdGlvblByb2ZpbGUgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQ29uZmlndXJhdGlvblByb2ZpbGVDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFVwZGF0ZURlcGxveW1lbnRTdHJhdGVneSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVEZXBsb3ltZW50U3RyYXRlZ3lDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFVwZGF0ZUVudmlyb25tZW50IGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUVudmlyb25tZW50Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBVcGRhdGVFeHRlbnNpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXh0ZW5zaW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBVcGRhdGVFeHRlbnNpb25Bc3NvY2lhdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFeHRlbnNpb25Bc3NvY2lhdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiLFxuXHRdO1xuXG5cdC8qKiBDb25kaXRpb24ga2V5OiBhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX0gKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IEFXU19SRVFVRVNUX1RBRyA9IFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9IChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBBV1NfUkVTT1VSQ0VfVEFHID0gXCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCI7XG5cdC8qKiBDb25kaXRpb24ga2V5OiBhd3M6VGFnS2V5cyAoQXJyYXlPZlN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IEFXU19UQUdfS0VZUyA9IFwiYXdzOlRhZ0tleXNcIjtcblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9YC5cblx0ICovXG5cdHN0YXRpYyByZXF1ZXN0VGFnKHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9YC5cblx0ICovXG5cdHN0YXRpYyByZXNvdXJjZVRhZyh2YWx1ZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGF3czpUYWdLZXlzYC5cblx0ICovXG5cdHN0YXRpYyB0YWdLZXlzKHZhbHVlczogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4+IHtcblx0XHRyZXR1cm4geyBcIkZvckFsbFZhbHVlczpTdHJpbmdFcXVhbHNcIjogeyBcImF3czpUYWdLZXlzXCI6IHZhbHVlcyB9IH07XG5cdH1cbn1cbiJdfQ==
940
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9zZXJ2aWNlcy9hcHBjb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRkFBZ0Y7QUFDaEYsNkNBQTZDO0FBQzdDLDBEQUEwRDtBQUMxRCxnREFBZ0Q7QUFDaEQsb0RBQW9EO0FBQ3BELGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQWEsZ0JBQWdCOztBQUE3Qiw0Q0EyTkM7OztBQTFOQSw4QkFBOEI7QUFDZCwrQkFBYyxHQUFHLFdBQVcsQ0FBQztBQUU3QywwQ0FBMEM7QUFDMUIsa0NBQWlCLEdBQUcsNkJBQTZCLENBQUM7QUFDbEUsbURBQW1EO0FBQ25DLDJDQUEwQixHQUN6QyxzQ0FBc0MsQ0FBQztBQUN4QyxpREFBaUQ7QUFDakMseUNBQXdCLEdBQ3ZDLG9DQUFvQyxDQUFDO0FBQ3RDLDBDQUEwQztBQUMxQixrQ0FBaUIsR0FBRyw2QkFBNkIsQ0FBQztBQUNsRSxtREFBbUQ7QUFDbkMsMkNBQTBCLEdBQ3pDLHNDQUFzQyxDQUFDO0FBQ3hDLHdDQUF3QztBQUN4QixnQ0FBZSxHQUFHLDJCQUEyQixDQUFDO0FBQzlELG1EQUFtRDtBQUNuQywyQ0FBMEIsR0FDekMsc0NBQXNDLENBQUM7QUFDeEMseURBQXlEO0FBQ3pDLGlEQUFnQyxHQUMvQyw0Q0FBNEMsQ0FBQztBQUM5QywwQ0FBMEM7QUFDMUIsa0NBQWlCLEdBQUcsNkJBQTZCLENBQUM7QUFDbEUsbURBQW1EO0FBQ25DLDJDQUEwQixHQUN6QyxzQ0FBc0MsQ0FBQztBQUN4QyxpREFBaUQ7QUFDakMseUNBQXdCLEdBQ3ZDLG9DQUFvQyxDQUFDO0FBQ3RDLDBDQUEwQztBQUMxQixrQ0FBaUIsR0FBRyw2QkFBNkIsQ0FBQztBQUNsRSxtREFBbUQ7QUFDbkMsMkNBQTBCLEdBQ3pDLHNDQUFzQyxDQUFDO0FBQ3hDLHdDQUF3QztBQUN4QixnQ0FBZSxHQUFHLDJCQUEy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QixHQUFHLDJCQUEyQixDQUFDO0FBQy9ELGlEQUFpRDtBQUNqQyxnQ0FBWSxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBVVRPLUdFTkVSQVRFRCBGSUxFIOKAlCBETyBOT1QgRURJVCBNQU5VQUxMWVxuLy8gR2VuZXJhdGVkIGZyb20gQVdTIFNlcnZpY2UgQXV0aG9yaXphdGlvbiBSZWZlcmVuY2UgZGF0YVxuLy8gU291cmNlOiBkYXRhL3NlcnZpY2UtcmVmZXJlbmNlL2FwcGNvbmZpZy5qc29uXG4vLyBSdW4gYG5weCBwcm9qZW4gZ2VuZXJhdGUtY29uc3RhbnRzYCB0byByZWdlbmVyYXRlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIElBTSBhY3Rpb24gY29uc3RhbnRzIGZvciB0aGUgYXBwY29uZmlnIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcHBjb25maWdBY3Rpb25zIHtcblx0LyoqIFRoZSBJQU0gc2VydmljZSBwcmVmaXguICovXG5cdHN0YXRpYyByZWFkb25seSBTRVJWSUNFX1BSRUZJWCA9IFwiYXBwY29uZmlnXCI7XG5cblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOkNyZWF0ZUFwcGxpY2F0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVBcHBsaWNhdGlvbiA9IFwiYXBwY29uZmlnOkNyZWF0ZUFwcGxpY2F0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpDcmVhdGVDb25maWd1cmF0aW9uUHJvZmlsZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQ29uZmlndXJhdGlvblByb2ZpbGUgPVxuXHRcdFwiYXBwY29uZmlnOkNyZWF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlXCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpDcmVhdGVEZXBsb3ltZW50U3RyYXRlZ3kgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZURlcGxveW1lbnRTdHJhdGVneSA9XG5cdFx0XCJhcHBjb25maWc6Q3JlYXRlRGVwbG95bWVudFN0cmF0ZWd5XCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpDcmVhdGVFbnZpcm9ubWVudCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRW52aXJvbm1lbnQgPSBcImFwcGNvbmZpZzpDcmVhdGVFbnZpcm9ubWVudFwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6Q3JlYXRlRXhwZXJpbWVudERlZmluaXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUV4cGVyaW1lbnREZWZpbml0aW9uID1cblx0XHRcImFwcGNvbmZpZzpDcmVhdGVFeHBlcmltZW50RGVmaW5pdGlvblwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6Q3JlYXRlRXh0ZW5zaW9uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFeHRlbnNpb24gPSBcImFwcGNvbmZpZzpDcmVhdGVFeHRlbnNpb25cIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOkNyZWF0ZUV4dGVuc2lvbkFzc29jaWF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFeHRlbnNpb25Bc3NvY2lhdGlvbiA9XG5cdFx0XCJhcHBjb25maWc6Q3JlYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOkNyZWF0ZUhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvbiA9XG5cdFx0XCJhcHBjb25maWc6Q3JlYXRlSG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb25cIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOkRlbGV0ZUFwcGxpY2F0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVBcHBsaWNhdGlvbiA9IFwiYXBwY29uZmlnOkRlbGV0ZUFwcGxpY2F0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpEZWxldGVDb25maWd1cmF0aW9uUHJvZmlsZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlQ29uZmlndXJhdGlvblByb2ZpbGUgPVxuXHRcdFwiYXBwY29uZmlnOkRlbGV0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlXCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpEZWxldGVEZXBsb3ltZW50U3RyYXRlZ3kgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZURlcGxveW1lbnRTdHJhdGVneSA9XG5cdFx0XCJhcHBjb25maWc6RGVsZXRlRGVwbG95bWVudFN0cmF0ZWd5XCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpEZWxldGVFbnZpcm9ubWVudCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRW52aXJvbm1lbnQgPSBcImFwcGNvbmZpZzpEZWxldGVFbnZpcm9ubWVudFwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6RGVsZXRlRXhwZXJpbWVudERlZmluaXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUV4cGVyaW1lbnREZWZpbml0aW9uID1cblx0XHRcImFwcGNvbmZpZzpEZWxldGVFeHBlcmltZW50RGVmaW5pdGlvblwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6RGVsZXRlRXh0ZW5zaW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVFeHRlbnNpb24gPSBcImFwcGNvbmZpZzpEZWxldGVFeHRlbnNpb25cIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOkRlbGV0ZUV4dGVuc2lvbkFzc29jaWF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVFeHRlbnNpb25Bc3NvY2lhdGlvbiA9XG5cdFx0XCJhcHBjb25maWc6RGVsZXRlRXh0ZW5zaW9uQXNzb2NpYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOkRlbGV0ZUhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvbiA9XG5cdFx0XCJhcHBjb25maWc6RGVsZXRlSG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb25cIjtcblx0LyoqIFtSZWFkXSBhcHBjb25maWc6R2V0QWNjb3VudFNldHRpbmdzICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRBY2NvdW50U2V0dGluZ3MgPSBcImFwcGNvbmZpZzpHZXRBY2NvdW50U2V0dGluZ3NcIjtcblx0LyoqIFtSZWFkXSBhcHBjb25maWc6R2V0QXBwbGljYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEFwcGxpY2F0aW9uID0gXCJhcHBjb25maWc6R2V0QXBwbGljYXRpb25cIjtcblx0LyoqIFtSZWFkXSBhcHBjb25maWc6R2V0Q29uZmlndXJhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0Q29uZmlndXJhdGlvbiA9IFwiYXBwY29uZmlnOkdldENvbmZpZ3VyYXRpb25cIjtcblx0LyoqIFtSZWFkXSBhcHBjb25maWc6R2V0Q29uZmlndXJhdGlvblByb2ZpbGUgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldENvbmZpZ3VyYXRpb25Qcm9maWxlID1cblx0XHRcImFwcGNvbmZpZzpHZXRDb25maWd1cmF0aW9uUHJvZmlsZVwiO1xuXHQvKiogW1JlYWRdIGFwcGNvbmZpZzpHZXREZXBsb3ltZW50ICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXREZXBsb3ltZW50ID0gXCJhcHBjb25maWc6R2V0RGVwbG95bWVudFwiO1xuXHQvKiogW1JlYWRdIGFwcGNvbmZpZzpHZXREZXBsb3ltZW50U3RyYXRlZ3kgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldERlcGxveW1lbnRTdHJhdGVneSA9XG5cdFx0XCJhcHBjb25maWc6R2V0RGVwbG95bWVudFN0cmF0ZWd5XCI7XG5cdC8qKiBbUmVhZF0gYXBwY29uZmlnOkdldEVudmlyb25tZW50ICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRFbnZpcm9ubWVudCA9IFwiYXBwY29uZmlnOkdldEVudmlyb25tZW50XCI7XG5cdC8qKiBbUmVhZF0gYXBwY29uZmlnOkdldEV4cGVyaW1lbnREZWZpbml0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRFeHBlcmltZW50RGVmaW5pdGlvbiA9XG5cdFx0XCJhcHBjb25maWc6R2V0RXhwZXJpbWVudERlZmluaXRpb25cIjtcblx0LyoqIFtSZWFkXSBhcHBjb25maWc6R2V0RXhwZXJpbWVudFJ1biAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0RXhwZXJpbWVudFJ1biA9IFwiYXBwY29uZmlnOkdldEV4cGVyaW1lbnRSdW5cIjtcblx0LyoqIFtSZWFkXSBhcHBjb25maWc6R2V0RXh0ZW5zaW9uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRFeHRlbnNpb24gPSBcImFwcGNvbmZpZzpHZXRFeHRlbnNpb25cIjtcblx0LyoqIFtSZWFkXSBhcHBjb25maWc6R2V0RXh0ZW5zaW9uQXNzb2NpYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEV4dGVuc2lvbkFzc29jaWF0aW9uID1cblx0XHRcImFwcGNvbmZpZzpHZXRFeHRlbnNpb25Bc3NvY2lhdGlvblwiO1xuXHQvKiogW1JlYWRdIGFwcGNvbmZpZzpHZXRIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0SG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb24gPVxuXHRcdFwiYXBwY29uZmlnOkdldEhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uXCI7XG5cdC8qKiBbUmVhZF0gYXBwY29uZmlnOkdldExhdGVzdENvbmZpZ3VyYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldExhdGVzdENvbmZpZ3VyYXRpb24gPVxuXHRcdFwiYXBwY29uZmlnOkdldExhdGVzdENvbmZpZ3VyYXRpb25cIjtcblx0LyoqIFtMaXN0XSBhcHBjb25maWc6TGlzdEFwcGxpY2F0aW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEFwcGxpY2F0aW9ucyA9IFwiYXBwY29uZmlnOkxpc3RBcHBsaWNhdGlvbnNcIjtcblx0LyoqIFtMaXN0XSBhcHBjb25maWc6TGlzdENvbmZpZ3VyYXRpb25Qcm9maWxlcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdENvbmZpZ3VyYXRpb25Qcm9maWxlcyA9XG5cdFx0XCJhcHBjb25maWc6TGlzdENvbmZpZ3VyYXRpb25Qcm9maWxlc1wiO1xuXHQvKiogW0xpc3RdIGFwcGNvbmZpZzpMaXN0RGVwbG95bWVudFN0cmF0ZWdpZXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3REZXBsb3ltZW50U3RyYXRlZ2llcyA9XG5cdFx0XCJhcHBjb25maWc6TGlzdERlcGxveW1lbnRTdHJhdGVnaWVzXCI7XG5cdC8qKiBbTGlzdF0gYXBwY29uZmlnOkxpc3REZXBsb3ltZW50cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdERlcGxveW1lbnRzID0gXCJhcHBjb25maWc6TGlzdERlcGxveW1lbnRzXCI7XG5cdC8qKiBbTGlzdF0gYXBwY29uZmlnOkxpc3RFbnZpcm9ubWVudHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFbnZpcm9ubWVudHMgPSBcImFwcGNvbmZpZzpMaXN0RW52aXJvbm1lbnRzXCI7XG5cdC8qKiBbTGlzdF0gYXBwY29uZmlnOkxpc3RFeHBlcmltZW50RGVmaW5pdGlvbnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFeHBlcmltZW50RGVmaW5pdGlvbnMgPVxuXHRcdFwiYXBwY29uZmlnOkxpc3RFeHBlcmltZW50RGVmaW5pdGlvbnNcIjtcblx0LyoqIFtMaXN0XSBhcHBjb25maWc6TGlzdEV4cGVyaW1lbnRSdW5FdmVudHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFeHBlcmltZW50UnVuRXZlbnRzID0gXCJhcHBjb25maWc6TGlzdEV4cGVyaW1lbnRSdW5FdmVudHNcIjtcblx0LyoqIFtMaXN0XSBhcHBjb25maWc6TGlzdEV4cGVyaW1lbnRSdW5zICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RXhwZXJpbWVudFJ1bnMgPSBcImFwcGNvbmZpZzpMaXN0RXhwZXJpbWVudFJ1bnNcIjtcblx0LyoqIFtMaXN0XSBhcHBjb25maWc6TGlzdEV4dGVuc2lvbkFzc29jaWF0aW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEV4dGVuc2lvbkFzc29jaWF0aW9ucyA9XG5cdFx0XCJhcHBjb25maWc6TGlzdEV4dGVuc2lvbkFzc29jaWF0aW9uc1wiO1xuXHQvKiogW0xpc3RdIGFwcGNvbmZpZzpMaXN0RXh0ZW5zaW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEV4dGVuc2lvbnMgPSBcImFwcGNvbmZpZzpMaXN0RXh0ZW5zaW9uc1wiO1xuXHQvKiogW0xpc3RdIGFwcGNvbmZpZzpMaXN0SG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb25zICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0SG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb25zID1cblx0XHRcImFwcGNvbmZpZzpMaXN0SG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb25zXCI7XG5cdC8qKiBbUmVhZF0gYXBwY29uZmlnOkxpc3RUYWdzRm9yUmVzb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2UgPSBcImFwcGNvbmZpZzpMaXN0VGFnc0ZvclJlc291cmNlXCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpTdGFydENvbmZpZ3VyYXRpb25TZXNzaW9uICovXG5cdHN0YXRpYyByZWFkb25seSBTdGFydENvbmZpZ3VyYXRpb25TZXNzaW9uID1cblx0XHRcImFwcGNvbmZpZzpTdGFydENvbmZpZ3VyYXRpb25TZXNzaW9uXCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpTdGFydERlcGxveW1lbnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0RGVwbG95bWVudCA9IFwiYXBwY29uZmlnOlN0YXJ0RGVwbG95bWVudFwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6U3RhcnRFeHBlcmltZW50UnVuICovXG5cdHN0YXRpYyByZWFkb25seSBTdGFydEV4cGVyaW1lbnRSdW4gPSBcImFwcGNvbmZpZzpTdGFydEV4cGVyaW1lbnRSdW5cIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOlN0b3BEZXBsb3ltZW50ICovXG5cdHN0YXRpYyByZWFkb25seSBTdG9wRGVwbG95bWVudCA9IFwiYXBwY29uZmlnOlN0b3BEZXBsb3ltZW50XCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpTdG9wRXhwZXJpbWVudFJ1biAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcEV4cGVyaW1lbnRSdW4gPSBcImFwcGNvbmZpZzpTdG9wRXhwZXJpbWVudFJ1blwiO1xuXHQvKiogW1RhZ2dpbmddIGFwcGNvbmZpZzpUYWdSZXNvdXJjZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGFnUmVzb3VyY2UgPSBcImFwcGNvbmZpZzpUYWdSZXNvdXJjZVwiO1xuXHQvKiogW1RhZ2dpbmddIGFwcGNvbmZpZzpVbnRhZ1Jlc291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBVbnRhZ1Jlc291cmNlID0gXCJhcHBjb25maWc6VW50YWdSZXNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6VXBkYXRlQWNjb3VudFNldHRpbmdzICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVBY2NvdW50U2V0dGluZ3MgPSBcImFwcGNvbmZpZzpVcGRhdGVBY2NvdW50U2V0dGluZ3NcIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOlVwZGF0ZUFwcGxpY2F0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVBcHBsaWNhdGlvbiA9IFwiYXBwY29uZmlnOlVwZGF0ZUFwcGxpY2F0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpVcGRhdGVDb25maWd1cmF0aW9uUHJvZmlsZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQ29uZmlndXJhdGlvblByb2ZpbGUgPVxuXHRcdFwiYXBwY29uZmlnOlVwZGF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlXCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpVcGRhdGVEZXBsb3ltZW50U3RyYXRlZ3kgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZURlcGxveW1lbnRTdHJhdGVneSA9XG5cdFx0XCJhcHBjb25maWc6VXBkYXRlRGVwbG95bWVudFN0cmF0ZWd5XCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpVcGRhdGVFbnZpcm9ubWVudCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRW52aXJvbm1lbnQgPSBcImFwcGNvbmZpZzpVcGRhdGVFbnZpcm9ubWVudFwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6VXBkYXRlRXhwZXJpbWVudERlZmluaXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUV4cGVyaW1lbnREZWZpbml0aW9uID1cblx0XHRcImFwcGNvbmZpZzpVcGRhdGVFeHBlcmltZW50RGVmaW5pdGlvblwiO1xuXHQvKiogW1dyaXRlXSBhcHBjb25maWc6VXBkYXRlRXhwZXJpbWVudFJ1biAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXhwZXJpbWVudFJ1biA9IFwiYXBwY29uZmlnOlVwZGF0ZUV4cGVyaW1lbnRSdW5cIjtcblx0LyoqIFtXcml0ZV0gYXBwY29uZmlnOlVwZGF0ZUV4dGVuc2lvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXh0ZW5zaW9uID0gXCJhcHBjb25maWc6VXBkYXRlRXh0ZW5zaW9uXCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpVcGRhdGVFeHRlbnNpb25Bc3NvY2lhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb24gPVxuXHRcdFwiYXBwY29uZmlnOlVwZGF0ZUV4dGVuc2lvbkFzc29jaWF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGFwcGNvbmZpZzpWYWxpZGF0ZUNvbmZpZ3VyYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFZhbGlkYXRlQ29uZmlndXJhdGlvbiA9IFwiYXBwY29uZmlnOlZhbGlkYXRlQ29uZmlndXJhdGlvblwiO1xuXG5cdC8qKiBBbGwgcmVhZC1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsUmVhZEFjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuYWN0aW9uR2V0QWNjb3VudFNldHRpbmdzLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuYWN0aW9uR2V0QXBwbGljYXRpb24sXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5hY3Rpb25HZXRDb25maWd1cmF0aW9uLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuYWN0aW9uR2V0Q29uZmlndXJhdGlvblByb2ZpbGUsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5hY3Rpb25HZXREZXBsb3ltZW50LFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuYWN0aW9uR2V0RGVwbG95bWVudFN0cmF0ZWd5LFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuYWN0aW9uR2V0RW52aXJvbm1lbnQsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5hY3Rpb25HZXRFeHBlcmltZW50RGVmaW5pdGlvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLmFjdGlvbkdldEV4cGVyaW1lbnRSdW4sXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5hY3Rpb25HZXRFeHRlbnNpb24sXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5hY3Rpb25HZXRFeHRlbnNpb25Bc3NvY2lhdGlvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLmFjdGlvbkdldEhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuYWN0aW9uR2V0TGF0ZXN0Q29uZmlndXJhdGlvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLkxpc3RUYWdzRm9yUmVzb3VyY2UsXG5cdF07XG5cdC8qKiBBbGwgd3JpdGUtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbFdyaXRlQWN0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5DcmVhdGVBcHBsaWNhdGlvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLkNyZWF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuQ3JlYXRlRGVwbG95bWVudFN0cmF0ZWd5LFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuQ3JlYXRlRW52aXJvbm1lbnQsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5DcmVhdGVFeHBlcmltZW50RGVmaW5pdGlvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLkNyZWF0ZUV4dGVuc2lvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLkNyZWF0ZUV4dGVuc2lvbkFzc29jaWF0aW9uLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuQ3JlYXRlSG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb24sXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5EZWxldGVBcHBsaWNhdGlvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLkRlbGV0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuRGVsZXRlRGVwbG95bWVudFN0cmF0ZWd5LFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuRGVsZXRlRW52aXJvbm1lbnQsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5EZWxldGVFeHBlcmltZW50RGVmaW5pdGlvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLkRlbGV0ZUV4dGVuc2lvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLkRlbGV0ZUV4dGVuc2lvbkFzc29jaWF0aW9uLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuRGVsZXRlSG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb24sXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5TdGFydENvbmZpZ3VyYXRpb25TZXNzaW9uLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuU3RhcnREZXBsb3ltZW50LFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuU3RhcnRFeHBlcmltZW50UnVuLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuU3RvcERlcGxveW1lbnQsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5TdG9wRXhwZXJpbWVudFJ1bixcblx0XHRBcHBjb25maWdBY3Rpb25zLlVwZGF0ZUFjY291bnRTZXR0aW5ncyxcblx0XHRBcHBjb25maWdBY3Rpb25zLlVwZGF0ZUFwcGxpY2F0aW9uLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuVXBkYXRlQ29uZmlndXJhdGlvblByb2ZpbGUsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5VcGRhdGVEZXBsb3ltZW50U3RyYXRlZ3ksXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5VcGRhdGVFbnZpcm9ubWVudCxcblx0XHRBcHBjb25maWdBY3Rpb25zLlVwZGF0ZUV4cGVyaW1lbnREZWZpbml0aW9uLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuVXBkYXRlRXhwZXJpbWVudFJ1bixcblx0XHRBcHBjb25maWdBY3Rpb25zLlVwZGF0ZUV4dGVuc2lvbixcblx0XHRBcHBjb25maWdBY3Rpb25zLlVwZGF0ZUV4dGVuc2lvbkFzc29jaWF0aW9uLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuVmFsaWRhdGVDb25maWd1cmF0aW9uLFxuXHRdO1xuXHQvKiogQWxsIGxpc3QtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbExpc3RBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRBcHBjb25maWdBY3Rpb25zLkxpc3RBcHBsaWNhdGlvbnMsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5MaXN0Q29uZmlndXJhdGlvblByb2ZpbGVzLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuTGlzdERlcGxveW1lbnRTdHJhdGVnaWVzLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuTGlzdERlcGxveW1lbnRzLFxuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuTGlzdEVudmlyb25tZW50cyxcblx0XHRBcHBjb25maWdBY3Rpb25zLkxpc3RFeHBlcmltZW50RGVmaW5pdGlvbnMsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5MaXN0RXhwZXJpbWVudFJ1bkV2ZW50cyxcblx0XHRBcHBjb25maWdBY3Rpb25zLkxpc3RFeHBlcmltZW50UnVucyxcblx0XHRBcHBjb25maWdBY3Rpb25zLkxpc3RFeHRlbnNpb25Bc3NvY2lhdGlvbnMsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5MaXN0RXh0ZW5zaW9ucyxcblx0XHRBcHBjb25maWdBY3Rpb25zLkxpc3RIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvbnMsXG5cdF07XG5cdC8qKiBBbGwgcGVybWlzc2lvbi1tYW5hZ2VtZW50LWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxQZXJtaXNzaW9uTWFuYWdlbWVudEFjdGlvbnM6IHN0cmluZ1tdID0gW107XG5cdC8qKiBBbGwgdGFnZ2luZy1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsVGFnZ2luZ0FjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdEFwcGNvbmZpZ0FjdGlvbnMuVGFnUmVzb3VyY2UsXG5cdFx0QXBwY29uZmlnQWN0aW9ucy5VbnRhZ1Jlc291cmNlLFxuXHRdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgYXBwbGljYXRpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGNvbmZpZ0FwcGxpY2F0aW9uQXJuUHJvcHMge1xuXHQvKiogVGhlIEFwcGxpY2F0aW9uSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBhcHBsaWNhdGlvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwY29uZmlnQXBwbGljYXRpb25Bcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIEFwcGxpY2F0aW9uSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBjb25maWd1cmF0aW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdDb25maWd1cmF0aW9uQXJuUHJvcHMge1xuXHQvKiogVGhlIEFwcGxpY2F0aW9uSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcblx0LyoqIFRoZSBFbnZpcm9ubWVudElkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBlbnZpcm9ubWVudElkOiBzdHJpbmc7XG5cdC8qKiBUaGUgQ29uZmlndXJhdGlvblByb2ZpbGVJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgY29uZmlndXJhdGlvblByb2ZpbGVJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGNvbmZpZ3VyYXRpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGNvbmZpZ0NvbmZpZ3VyYXRpb25Bcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIEFwcGxpY2F0aW9uSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgRW52aXJvbm1lbnRJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGVudmlyb25tZW50SWQ6IHN0cmluZztcblx0LyoqIFRoZSBDb25maWd1cmF0aW9uUHJvZmlsZUlkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgY29uZmlndXJhdGlvblByb2ZpbGVJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgY29uZmlndXJhdGlvbnByb2ZpbGUgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGNvbmZpZ0NvbmZpZ3VyYXRpb25wcm9maWxlQXJuUHJvcHMge1xuXHQvKiogVGhlIEFwcGxpY2F0aW9uSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcblx0LyoqIFRoZSBDb25maWd1cmF0aW9uUHJvZmlsZUlkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBjb25maWd1cmF0aW9uUHJvZmlsZUlkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgY29uZmlndXJhdGlvbnByb2ZpbGUgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGNvbmZpZ0NvbmZpZ3VyYXRpb25wcm9maWxlQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBBcHBsaWNhdGlvbklkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgYXBwbGljYXRpb25JZDogc3RyaW5nO1xuXHQvKiogVGhlIENvbmZpZ3VyYXRpb25Qcm9maWxlSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBjb25maWd1cmF0aW9uUHJvZmlsZUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBkZXBsb3ltZW50IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdEZXBsb3ltZW50QXJuUHJvcHMge1xuXHQvKiogVGhlIEFwcGxpY2F0aW9uSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcblx0LyoqIFRoZSBFbnZpcm9ubWVudElkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBlbnZpcm9ubWVudElkOiBzdHJpbmc7XG5cdC8qKiBUaGUgRGVwbG95bWVudE51bWJlciBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZGVwbG95bWVudE51bWJlcjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGRlcGxveW1lbnQgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGNvbmZpZ0RlcGxveW1lbnRBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIEFwcGxpY2F0aW9uSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgRW52aXJvbm1lbnRJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGVudmlyb25tZW50SWQ6IHN0cmluZztcblx0LyoqIFRoZSBEZXBsb3ltZW50TnVtYmVyIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZGVwbG95bWVudE51bWJlcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgZGVwbG95bWVudHN0cmF0ZWd5IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdEZXBsb3ltZW50c3RyYXRlZ3lBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgRGVwbG95bWVudFN0cmF0ZWd5SWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGRlcGxveW1lbnRTdHJhdGVneUlkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZGVwbG95bWVudHN0cmF0ZWd5IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdEZXBsb3ltZW50c3RyYXRlZ3lBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIERlcGxveW1lbnRTdHJhdGVneUlkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZGVwbG95bWVudFN0cmF0ZWd5SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGVudmlyb25tZW50IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdFbnZpcm9ubWVudEFyblByb3BzIHtcblx0LyoqIFRoZSBBcHBsaWNhdGlvbklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgRW52aXJvbm1lbnRJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZW52aXJvbm1lbnRJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGVudmlyb25tZW50IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdFbnZpcm9ubWVudEFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgQXBwbGljYXRpb25JZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcblx0LyoqIFRoZSBFbnZpcm9ubWVudElkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZW52aXJvbm1lbnRJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgZXhwZXJpbWVudGRlZmluaXRpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGNvbmZpZ0V4cGVyaW1lbnRkZWZpbml0aW9uQXJuUHJvcHMge1xuXHQvKiogVGhlIEFwcGxpY2F0aW9uSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcblx0LyoqIFRoZSBFeHBlcmltZW50RGVmaW5pdGlvbklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBleHBlcmltZW50RGVmaW5pdGlvbklkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZXhwZXJpbWVudGRlZmluaXRpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGNvbmZpZ0V4cGVyaW1lbnRkZWZpbml0aW9uQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBBcHBsaWNhdGlvbklkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgYXBwbGljYXRpb25JZDogc3RyaW5nO1xuXHQvKiogVGhlIEV4cGVyaW1lbnREZWZpbml0aW9uSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBleHBlcmltZW50RGVmaW5pdGlvbklkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBleHBlcmltZW50cnVuIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdFeHBlcmltZW50cnVuQXJuUHJvcHMge1xuXHQvKiogVGhlIEFwcGxpY2F0aW9uSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcblx0LyoqIFRoZSBFeHBlcmltZW50RGVmaW5pdGlvbklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBleHBlcmltZW50RGVmaW5pdGlvbklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgRXhwZXJpbWVudFJ1bk51bWJlciBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZXhwZXJpbWVudFJ1bk51bWJlcjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGV4cGVyaW1lbnRydW4gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGNvbmZpZ0V4cGVyaW1lbnRydW5Bcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIEFwcGxpY2F0aW9uSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgRXhwZXJpbWVudERlZmluaXRpb25JZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGV4cGVyaW1lbnREZWZpbml0aW9uSWQ6IHN0cmluZztcblx0LyoqIFRoZSBFeHBlcmltZW50UnVuTnVtYmVyIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZXhwZXJpbWVudFJ1bk51bWJlcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgZXh0ZW5zaW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdFeHRlbnNpb25Bcm5Qcm9wcyB7XG5cdC8qKiBUaGUgRXh0ZW5zaW9uSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGV4dGVuc2lvbklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgRXh0ZW5zaW9uVmVyc2lvbk51bWJlciBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZXh0ZW5zaW9uVmVyc2lvbk51bWJlcjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGV4dGVuc2lvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwY29uZmlnRXh0ZW5zaW9uQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBFeHRlbnNpb25JZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGV4dGVuc2lvbklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgRXh0ZW5zaW9uVmVyc2lvbk51bWJlciBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGV4dGVuc2lvblZlcnNpb25OdW1iZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGV4dGVuc2lvbmFzc29jaWF0aW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBjb25maWdFeHRlbnNpb25hc3NvY2lhdGlvbkFyblByb3BzIHtcblx0LyoqIFRoZSBFeHRlbnNpb25Bc3NvY2lhdGlvbklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBleHRlbnNpb25Bc3NvY2lhdGlvbklkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZXh0ZW5zaW9uYXNzb2NpYXRpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGNvbmZpZ0V4dGVuc2lvbmFzc29jaWF0aW9uQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBFeHRlbnNpb25Bc3NvY2lhdGlvbklkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZXh0ZW5zaW9uQXNzb2NpYXRpb25JZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgaG9zdGVkY29uZmlndXJhdGlvbnZlcnNpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGNvbmZpZ0hvc3RlZGNvbmZpZ3VyYXRpb252ZXJzaW9uQXJuUHJvcHMge1xuXHQvKiogVGhlIEFwcGxpY2F0aW9uSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcblx0LyoqIFRoZSBDb25maWd1cmF0aW9uUHJvZmlsZUlkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBjb25maWd1cmF0aW9uUHJvZmlsZUlkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgaG9zdGVkY29uZmlndXJhdGlvbnZlcnNpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGNvbmZpZ0hvc3RlZGNvbmZpZ3VyYXRpb252ZXJzaW9uQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBBcHBsaWNhdGlvbklkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgYXBwbGljYXRpb25JZDogc3RyaW5nO1xuXHQvKiogVGhlIENvbmZpZ3VyYXRpb25Qcm9maWxlSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBjb25maWd1cmF0aW9uUHJvZmlsZUlkOiBzdHJpbmc7XG59XG5cbmNvbnN0IEFwcGxpY2F0aW9uQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmFwcGNvbmZpZzooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmFwcGxpY2F0aW9uXFwvKD88YXBwbGljYXRpb25JZD5bXjovP10rKSQvO1xuY29uc3QgQ29uZmlndXJhdGlvbkFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTphcHBjb25maWc6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTphcHBsaWNhdGlvblxcLyg/PGFwcGxpY2F0aW9uSWQ+W146Lz9dKylcXC9lbnZpcm9ubWVudFxcLyg/PGVudmlyb25tZW50SWQ+W146Lz9dKylcXC9jb25maWd1cmF0aW9uXFwvKD88Y29uZmlndXJhdGlvblByb2ZpbGVJZD5bXjovP10rKSQvO1xuY29uc3QgQ29uZmlndXJhdGlvbnByb2ZpbGVBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6YXBwY29uZmlnOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6YXBwbGljYXRpb25cXC8oPzxhcHBsaWNhdGlvbklkPlteOi8/XSspXFwvY29uZmlndXJhdGlvbnByb2ZpbGVcXC8oPzxjb25maWd1cmF0aW9uUHJvZmlsZUlkPlteOi8/XSspJC87XG5jb25zdCBEZXBsb3ltZW50QXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmFwcGNvbmZpZzooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmFwcGxpY2F0aW9uXFwvKD88YXBwbGljYXRpb25JZD5bXjovP10rKVxcL2Vudmlyb25tZW50XFwvKD88ZW52aXJvbm1lbnRJZD5bXjovP10rKVxcL2RlcGxveW1lbnRcXC8oPzxkZXBsb3ltZW50TnVtYmVyPlteOi8/XSspJC87XG5jb25zdCBEZXBsb3ltZW50c3RyYXRlZ3lBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6YXBwY29uZmlnOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6ZGVwbG95bWVudHN0cmF0ZWd5XFwvKD88ZGVwbG95bWVudFN0cmF0ZWd5SWQ+W146Lz9dKykkLztcbmNvbnN0IEVudmlyb25tZW50QXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmFwcGNvbmZpZzooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmFwcGxpY2F0aW9uXFwvKD88YXBwbGljYXRpb25JZD5bXjovP10rKVxcL2Vudmlyb25tZW50XFwvKD88ZW52aXJvbm1lbnRJZD5bXjovP10rKSQvO1xuY29uc3QgRXhwZXJpbWVudGRlZmluaXRpb25Bcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6YXBwY29uZmlnOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6YXBwbGljYXRpb25cXC8oPzxhcHBsaWNhdGlvbklkPlteOi8/XSspXFwvZXhwZXJpbWVudGRlZmluaXRpb25cXC8oPzxleHBlcmltZW50RGVmaW5pdGlvbklkPlteOi8/XSspJC87XG5jb25zdCBFeHBlcmltZW50cnVuQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmFwcGNvbmZpZzooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmFwcGxpY2F0aW9uXFwvKD88YXBwbGljYXRpb25JZD5bXjovP10rKVxcL2V4cGVyaW1lbnRkZWZpbml0aW9uXFwvKD88ZXhwZXJpbWVudERlZmluaXRpb25JZD5bXjovP10rKVxcL2V4cGVyaW1lbnRydW5cXC8oPzxleHBlcmltZW50UnVuTnVtYmVyPlteOi8/XSspJC87XG5jb25zdCBFeHRlbnNpb25Bcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6YXBwY29uZmlnOig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6ZXh0ZW5zaW9uXFwvKD88ZXh0ZW5zaW9uSWQ+W146Lz9dKylcXC8oPzxleHRlbnNpb25WZXJzaW9uTnVtYmVyPlteOi8/XSspJC87XG5jb25zdCBFeHRlbnNpb25hc3NvY2lhdGlvbkFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTphcHBjb25maWc6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpleHRlbnNpb25hc3NvY2lhdGlvblxcLyg/PGV4dGVuc2lvbkFzc29jaWF0aW9uSWQ+W146Lz9dKykkLztcbmNvbnN0IEhvc3RlZGNvbmZpZ3VyYXRpb252ZXJzaW9uQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmFwcGNvbmZpZzooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmFwcGxpY2F0aW9uXFwvKD88YXBwbGljYXRpb25JZD5bXjovP10rKVxcL2NvbmZpZ3VyYXRpb25wcm9maWxlXFwvKD88Y29uZmlndXJhdGlvblByb2ZpbGVJZD5bXjovP10rKSQvO1xuXG4vKipcbiAqIEFSTiBidWlsZGVycywgdmFsaWRhdG9ycywgYW5kIHBhcnNlcnMgZm9yIGFwcGNvbmZpZyByZXNvdXJjZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcHBjb25maWdSZXNvdXJjZXMge1xuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGFwcGxpY2F0aW9uIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGFwcGxpY2F0aW9uKHByb3BzOiBBcHBjb25maWdBcHBsaWNhdGlvbkFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTphcHBjb25maWc6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06YXBwbGljYXRpb24vJHtwcm9wcy5hcHBsaWNhdGlvbklkfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBhcHBsaWNhdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkQXBwbGljYXRpb25Bcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gQXBwbGljYXRpb25Bcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgYXBwbGljYXRpb24gQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlQXBwbGljYXRpb25Bcm4oYXJuOiBzdHJpbmcpOiBBcHBjb25maWdBcHBsaWNhdGlvbkFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gQXBwbGljYXRpb25Bcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXBwbGljYXRpb24gQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0YXBwbGljYXRpb25JZDogbWF0Y2guZ3JvdXBzIS5hcHBsaWNhdGlvbklkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgY29uZmlndXJhdGlvbihwcm9wczogQXBwY29uZmlnQ29uZmlndXJhdGlvbkFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTphcHBjb25maWc6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06YXBwbGljYXRpb24vJHtwcm9wcy5hcHBsaWNhdGlvbklkfS9lbnZpcm9ubWVudC8ke3Byb3BzLmVudmlyb25tZW50SWR9L2NvbmZpZ3VyYXRpb24vJHtwcm9wcy5jb25maWd1cmF0aW9uUHJvZmlsZUlkfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBjb25maWd1cmF0aW9uIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRDb25maWd1cmF0aW9uQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIENvbmZpZ3VyYXRpb25Bcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgY29uZmlndXJhdGlvbiBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VDb25maWd1cmF0aW9uQXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBBcHBjb25maWdDb25maWd1cmF0aW9uQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBDb25maWd1cmF0aW9uQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0YXBwbGljYXRpb25JZDogbWF0Y2guZ3JvdXBzIS5hcHBsaWNhdGlvbklkLFxuXHRcdFx0ZW52aXJvbm1lbnRJZDogbWF0Y2guZ3JvdXBzIS5lbnZpcm9ubWVudElkLFxuXHRcdFx0Y29uZmlndXJhdGlvblByb2ZpbGVJZDogbWF0Y2guZ3JvdXBzIS5jb25maWd1cmF0aW9uUHJvZmlsZUlkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGNvbmZpZ3VyYXRpb25wcm9maWxlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGNvbmZpZ3VyYXRpb25wcm9maWxlKFxuXHRcdHByb3BzOiBBcHBjb25maWdDb25maWd1cmF0aW9ucHJvZmlsZUFyblByb3BzLFxuXHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmFwcGNvbmZpZzoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTphcHBsaWNhdGlvbi8ke3Byb3BzLmFwcGxpY2F0aW9uSWR9L2NvbmZpZ3VyYXRpb25wcm9maWxlLyR7cHJvcHMuY29uZmlndXJhdGlvblByb2ZpbGVJZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgY29uZmlndXJhdGlvbnByb2ZpbGUgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZENvbmZpZ3VyYXRpb25wcm9maWxlQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIENvbmZpZ3VyYXRpb25wcm9maWxlQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGNvbmZpZ3VyYXRpb25wcm9maWxlIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUNvbmZpZ3VyYXRpb25wcm9maWxlQXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBBcHBjb25maWdDb25maWd1cmF0aW9ucHJvZmlsZUFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gQ29uZmlndXJhdGlvbnByb2ZpbGVBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY29uZmlndXJhdGlvbnByb2ZpbGUgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0YXBwbGljYXRpb25JZDogbWF0Y2guZ3JvdXBzIS5hcHBsaWNhdGlvbklkLFxuXHRcdFx0Y29uZmlndXJhdGlvblByb2ZpbGVJZDogbWF0Y2guZ3JvdXBzIS5jb25maWd1cmF0aW9uUHJvZmlsZUlkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGRlcGxveW1lbnQgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgZGVwbG95bWVudChwcm9wczogQXBwY29uZmlnRGVwbG95bWVudEFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTphcHBjb25maWc6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06YXBwbGljYXRpb24vJHtwcm9wcy5hcHBsaWNhdGlvbklkfS9lbnZpcm9ubWVudC8ke3Byb3BzLmVudmlyb25tZW50SWR9L2RlcGxveW1lbnQvJHtwcm9wcy5kZXBsb3ltZW50TnVtYmVyfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBkZXBsb3ltZW50IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWREZXBsb3ltZW50QXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIERlcGxveW1lbnRBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgZGVwbG95bWVudCBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VEZXBsb3ltZW50QXJuKGFybjogc3RyaW5nKTogQXBwY29uZmlnRGVwbG95bWVudEFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gRGVwbG95bWVudEFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZXBsb3ltZW50IEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGFwcGxpY2F0aW9uSWQ6IG1hdGNoLmdyb3VwcyEuYXBwbGljYXRpb25JZCxcblx0XHRcdGVudmlyb25tZW50SWQ6IG1hdGNoLmdyb3VwcyEuZW52aXJvbm1lbnRJZCxcblx0XHRcdGRlcGxveW1lbnROdW1iZXI6IG1hdGNoLmdyb3VwcyEuZGVwbG95bWVudE51bWJlcixcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBkZXBsb3ltZW50c3RyYXRlZ3kgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgZGVwbG95bWVudHN0cmF0ZWd5KFxuXHRcdHByb3BzOiBBcHBjb25maWdEZXBsb3ltZW50c3RyYXRlZ3lBcm5Qcm9wcyxcblx0KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTphcHBjb25maWc6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06ZGVwbG95bWVudHN0cmF0ZWd5LyR7cHJvcHMuZGVwbG95bWVudFN0cmF0ZWd5SWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGRlcGxveW1lbnRzdHJhdGVneSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkRGVwbG95bWVudHN0cmF0ZWd5QXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIERlcGxveW1lbnRzdHJhdGVneUFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBkZXBsb3ltZW50c3RyYXRlZ3kgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlRGVwbG95bWVudHN0cmF0ZWd5QXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBBcHBjb25maWdEZXBsb3ltZW50c3RyYXRlZ3lBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IERlcGxveW1lbnRzdHJhdGVneUFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZXBsb3ltZW50c3RyYXRlZ3kgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0ZGVwbG95bWVudFN0cmF0ZWd5SWQ6IG1hdGNoLmdyb3VwcyEuZGVwbG95bWVudFN0cmF0ZWd5SWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgZW52aXJvbm1lbnQgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgZW52aXJvbm1lbnQocHJvcHM6IEFwcGNvbmZpZ0Vudmlyb25tZW50QXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmFwcGNvbmZpZzoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTphcHBsaWNhdGlvbi8ke3Byb3BzLmFwcGxpY2F0aW9uSWR9L2Vudmlyb25tZW50LyR7cHJvcHMuZW52aXJvbm1lbnRJZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZW52aXJvbm1lbnQgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZEVudmlyb25tZW50QXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEVudmlyb25tZW50QXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGVudmlyb25tZW50IEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZUVudmlyb25tZW50QXJuKGFybjogc3RyaW5nKTogQXBwY29uZmlnRW52aXJvbm1lbnRBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEVudmlyb25tZW50QXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVudmlyb25tZW50IEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGFwcGxpY2F0aW9uSWQ6IG1hdGNoLmdyb3VwcyEuYXBwbGljYXRpb25JZCxcblx0XHRcdGVudmlyb25tZW50SWQ6IG1hdGNoLmdyb3VwcyEuZW52aXJvbm1lbnRJZCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBleHBlcmltZW50ZGVmaW5pdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBleHBlcmltZW50ZGVmaW5pdGlvbihcblx0XHRwcm9wczogQXBwY29uZmlnRXhwZXJpbWVudGRlZmluaXRpb25Bcm5Qcm9wcyxcblx0KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTphcHBjb25maWc6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06YXBwbGljYXRpb24vJHtwcm9wcy5hcHBsaWNhdGlvbklkfS9leHBlcmltZW50ZGVmaW5pdGlvbi8ke3Byb3BzLmV4cGVyaW1lbnREZWZpbml0aW9uSWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGV4cGVyaW1lbnRkZWZpbml0aW9uIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRFeHBlcmltZW50ZGVmaW5pdGlvbkFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBFeHBlcmltZW50ZGVmaW5pdGlvbkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBleHBlcmltZW50ZGVmaW5pdGlvbiBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VFeHBlcmltZW50ZGVmaW5pdGlvbkFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogQXBwY29uZmlnRXhwZXJpbWVudGRlZmluaXRpb25Bcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEV4cGVyaW1lbnRkZWZpbml0aW9uQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGV4cGVyaW1lbnRkZWZpbml0aW9uIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGFwcGxpY2F0aW9uSWQ6IG1hdGNoLmdyb3VwcyEuYXBwbGljYXRpb25JZCxcblx0XHRcdGV4cGVyaW1lbnREZWZpbml0aW9uSWQ6IG1hdGNoLmdyb3VwcyEuZXhwZXJpbWVudERlZmluaXRpb25JZCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBleHBlcmltZW50cnVuIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGV4cGVyaW1lbnRydW4ocHJvcHM6IEFwcGNvbmZpZ0V4cGVyaW1lbnRydW5Bcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06YXBwY29uZmlnOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmFwcGxpY2F0aW9uLyR7cHJvcHMuYXBwbGljYXRpb25JZH0vZXhwZXJpbWVudGRlZmluaXRpb24vJHtwcm9wcy5leHBlcmltZW50RGVmaW5pdGlvbklkfS9leHBlcmltZW50cnVuLyR7cHJvcHMuZXhwZXJpbWVudFJ1bk51bWJlcn1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZXhwZXJpbWVudHJ1biByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkRXhwZXJpbWVudHJ1bkFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBFeHBlcmltZW50cnVuQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGV4cGVyaW1lbnRydW4gQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlRXhwZXJpbWVudHJ1bkFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogQXBwY29uZmlnRXhwZXJpbWVudHJ1bkFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gRXhwZXJpbWVudHJ1bkFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBleHBlcmltZW50cnVuIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGFwcGxpY2F0aW9uSWQ6IG1hdGNoLmdyb3VwcyEuYXBwbGljYXRpb25JZCxcblx0XHRcdGV4cGVyaW1lbnREZWZpbml0aW9uSWQ6IG1hdGNoLmdyb3VwcyEuZXhwZXJpbWVudERlZmluaXRpb25JZCxcblx0XHRcdGV4cGVyaW1lbnRSdW5OdW1iZXI6IG1hdGNoLmdyb3VwcyEuZXhwZXJpbWVudFJ1bk51bWJlcixcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBleHRlbnNpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgZXh0ZW5zaW9uKHByb3BzOiBBcHBjb25maWdFeHRlbnNpb25Bcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06YXBwY29uZmlnOiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmV4dGVuc2lvbi8ke3Byb3BzLmV4dGVuc2lvbklkfS8ke3Byb3BzLmV4dGVuc2lvblZlcnNpb25OdW1iZXJ9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGV4dGVuc2lvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkRXh0ZW5zaW9uQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEV4dGVuc2lvbkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBleHRlbnNpb24gQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlRXh0ZW5zaW9uQXJuKGFybjogc3RyaW5nKTogQXBwY29uZmlnRXh0ZW5zaW9uQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBFeHRlbnNpb25Bcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZXh0ZW5zaW9uIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGV4dGVuc2lvbklkOiBtYXRjaC5ncm91cHMhLmV4dGVuc2lvbklkLFxuXHRcdFx0ZXh0ZW5zaW9uVmVyc2lvbk51bWJlcjogbWF0Y2guZ3JvdXBzIS5leHRlbnNpb25WZXJzaW9uTnVtYmVyLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGV4dGVuc2lvbmFzc29jaWF0aW9uIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGV4dGVuc2lvbmFzc29jaWF0aW9uKFxuXHRcdHByb3BzOiBBcHBjb25maWdFeHRlbnNpb25hc3NvY2lhdGlvbkFyblByb3BzLFxuXHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9OmFwcGNvbmZpZzoke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpleHRlbnNpb25hc3NvY2lhdGlvbi8ke3Byb3BzLmV4dGVuc2lvbkFzc29jaWF0aW9uSWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGV4dGVuc2lvbmFzc29jaWF0aW9uIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRFeHRlbnNpb25hc3NvY2lhdGlvbkFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBFeHRlbnNpb25hc3NvY2lhdGlvbkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBleHRlbnNpb25hc3NvY2lhdGlvbiBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VFeHRlbnNpb25hc3NvY2lhdGlvbkFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogQXBwY29uZmlnRXh0ZW5zaW9uYXNzb2NpYXRpb25Bcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEV4dGVuc2lvbmFzc29jaWF0aW9uQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGV4dGVuc2lvbmFzc29jaWF0aW9uIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGV4dGVuc2lvbkFzc29jaWF0aW9uSWQ6IG1hdGNoLmdyb3VwcyEuZXh0ZW5zaW9uQXNzb2NpYXRpb25JZCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBob3N0ZWRjb25maWd1cmF0aW9udmVyc2lvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBob3N0ZWRjb25maWd1cmF0aW9udmVyc2lvbihcblx0XHRwcm9wczogQXBwY29uZmlnSG9zdGVkY29uZmlndXJhdGlvbnZlcnNpb25Bcm5Qcm9wcyxcblx0KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTphcHBjb25maWc6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06YXBwbGljYXRpb24vJHtwcm9wcy5hcHBsaWNhdGlvbklkfS9jb25maWd1cmF0aW9ucHJvZmlsZS8ke3Byb3BzLmNvbmZpZ3VyYXRpb25Qcm9maWxlSWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGhvc3RlZGNvbmZpZ3VyYXRpb252ZXJzaW9uIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRIb3N0ZWRjb25maWd1cmF0aW9udmVyc2lvbkFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBIb3N0ZWRjb25maWd1cmF0aW9udmVyc2lvbkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBob3N0ZWRjb25maWd1cmF0aW9udmVyc2lvbiBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VIb3N0ZWRjb25maWd1cmF0aW9udmVyc2lvbkFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogQXBwY29uZmlnSG9zdGVkY29uZmlndXJhdGlvbnZlcnNpb25Bcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEhvc3RlZGNvbmZpZ3VyYXRpb252ZXJzaW9uQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGhvc3RlZGNvbmZpZ3VyYXRpb252ZXJzaW9uIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGFwcGxpY2F0aW9uSWQ6IG1hdGNoLmdyb3VwcyEuYXBwbGljYXRpb25JZCxcblx0XHRcdGNvbmZpZ3VyYXRpb25Qcm9maWxlSWQ6IG1hdGNoLmdyb3VwcyEuY29uZmlndXJhdGlvblByb2ZpbGVJZCxcblx0XHR9O1xuXHR9XG59XG5cbi8qKlxuICogQVBJIG9wZXJhdGlvbiB0byByZXF1aXJlZCBJQU0gYWN0aW9ucyBtYXBwaW5nIGZvciBhcHBjb25maWcuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcHBjb25maWdPcGVyYXRpb25zIHtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlQXBwbGljYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVBcHBsaWNhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6Q3JlYXRlQXBwbGljYXRpb25cIixcblx0XHRcImFwcGNvbmZpZzpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVDb25maWd1cmF0aW9uUHJvZmlsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpDcmVhdGVDb25maWd1cmF0aW9uUHJvZmlsZVwiLFxuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJhcHBjb25maWc6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlRGVwbG95bWVudFN0cmF0ZWd5IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRGVwbG95bWVudFN0cmF0ZWd5OiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpDcmVhdGVEZXBsb3ltZW50U3RyYXRlZ3lcIixcblx0XHRcImFwcGNvbmZpZzpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVFbnZpcm9ubWVudCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUVudmlyb25tZW50OiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpDcmVhdGVFbnZpcm9ubWVudFwiLFxuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJhcHBjb25maWc6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlRXhwZXJpbWVudERlZmluaXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFeHBlcmltZW50RGVmaW5pdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6Q3JlYXRlRXhwZXJpbWVudERlZmluaXRpb25cIixcblx0XHRcImFwcGNvbmZpZzpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVFeHRlbnNpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFeHRlbnNpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOkNyZWF0ZUV4dGVuc2lvblwiLFxuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJhcHBjb25maWc6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFeHRlbnNpb25Bc3NvY2lhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6Q3JlYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb25cIixcblx0XHRcImFwcGNvbmZpZzpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpDcmVhdGVIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVBcHBsaWNhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUFwcGxpY2F0aW9uOiBzdHJpbmdbXSA9IFtcImFwcGNvbmZpZzpEZWxldGVBcHBsaWNhdGlvblwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlQ29uZmlndXJhdGlvblByb2ZpbGUgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVDb25maWd1cmF0aW9uUHJvZmlsZTogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6RGVsZXRlQ29uZmlndXJhdGlvblByb2ZpbGVcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlRGVwbG95bWVudFN0cmF0ZWd5IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRGVwbG95bWVudFN0cmF0ZWd5OiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpEZWxldGVEZXBsb3ltZW50U3RyYXRlZ3lcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlRW52aXJvbm1lbnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVFbnZpcm9ubWVudDogc3RyaW5nW10gPSBbXCJhcHBjb25maWc6RGVsZXRlRW52aXJvbm1lbnRcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUV4cGVyaW1lbnREZWZpbml0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRXhwZXJpbWVudERlZmluaXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOkRlbGV0ZUV4cGVyaW1lbnREZWZpbml0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUV4dGVuc2lvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUV4dGVuc2lvbjogc3RyaW5nW10gPSBbXCJhcHBjb25maWc6RGVsZXRlRXh0ZW5zaW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVFeHRlbnNpb25Bc3NvY2lhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUV4dGVuc2lvbkFzc29jaWF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpEZWxldGVFeHRlbnNpb25Bc3NvY2lhdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpEZWxldGVIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRBY2NvdW50U2V0dGluZ3MgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldEFjY291bnRTZXR0aW5nczogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6R2V0QWNjb3VudFNldHRpbmdzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldEFwcGxpY2F0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRBcHBsaWNhdGlvbjogc3RyaW5nW10gPSBbXCJhcHBjb25maWc6R2V0QXBwbGljYXRpb25cIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldENvbmZpZ3VyYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldENvbmZpZ3VyYXRpb246IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOkdldENvbmZpZ3VyYXRpb25cIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldENvbmZpZ3VyYXRpb25Qcm9maWxlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRDb25maWd1cmF0aW9uUHJvZmlsZTogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6R2V0Q29uZmlndXJhdGlvblByb2ZpbGVcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0RGVwbG95bWVudCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0RGVwbG95bWVudDogc3RyaW5nW10gPSBbXCJhcHBjb25maWc6R2V0RGVwbG95bWVudFwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0RGVwbG95bWVudFN0cmF0ZWd5IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXREZXBsb3ltZW50U3RyYXRlZ3k6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOkdldERlcGxveW1lbnRTdHJhdGVneVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRFbnZpcm9ubWVudCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0RW52aXJvbm1lbnQ6IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOkdldEVudmlyb25tZW50XCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRFeHBlcmltZW50RGVmaW5pdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0RXhwZXJpbWVudERlZmluaXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOkdldEV4cGVyaW1lbnREZWZpbml0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldEV4cGVyaW1lbnRSdW4gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldEV4cGVyaW1lbnRSdW46IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOkdldEV4cGVyaW1lbnRSdW5cIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldEV4dGVuc2lvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0RXh0ZW5zaW9uOiBzdHJpbmdbXSA9IFtcImFwcGNvbmZpZzpHZXRFeHRlbnNpb25cIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldEV4dGVuc2lvbkFzc29jaWF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRFeHRlbnNpb25Bc3NvY2lhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6R2V0RXh0ZW5zaW9uQXNzb2NpYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0SG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldEhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpHZXRIb3N0ZWRDb25maWd1cmF0aW9uVmVyc2lvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRMYXRlc3RDb25maWd1cmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRMYXRlc3RDb25maWd1cmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpHZXRMYXRlc3RDb25maWd1cmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RBcHBsaWNhdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0QXBwbGljYXRpb25zOiBzdHJpbmdbXSA9IFtcImFwcGNvbmZpZzpMaXN0QXBwbGljYXRpb25zXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0Q29uZmlndXJhdGlvblByb2ZpbGVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdENvbmZpZ3VyYXRpb25Qcm9maWxlczogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6TGlzdENvbmZpZ3VyYXRpb25Qcm9maWxlc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0RGVwbG95bWVudFN0cmF0ZWdpZXMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RGVwbG95bWVudFN0cmF0ZWdpZXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOkxpc3REZXBsb3ltZW50U3RyYXRlZ2llc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0RGVwbG95bWVudHMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RGVwbG95bWVudHM6IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOkxpc3REZXBsb3ltZW50c1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdEVudmlyb25tZW50cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFbnZpcm9ubWVudHM6IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOkxpc3RFbnZpcm9ubWVudHNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RFeHBlcmltZW50RGVmaW5pdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RXhwZXJpbWVudERlZmluaXRpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpMaXN0RXhwZXJpbWVudERlZmluaXRpb25zXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RFeHBlcmltZW50UnVuRXZlbnRzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEV4cGVyaW1lbnRSdW5FdmVudHM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOkxpc3RFeHBlcmltZW50UnVuRXZlbnRzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RFeHBlcmltZW50UnVucyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RFeHBlcmltZW50UnVuczogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6TGlzdEV4cGVyaW1lbnRSdW5zXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RFeHRlbnNpb25Bc3NvY2lhdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RXh0ZW5zaW9uQXNzb2NpYXRpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpMaXN0RXh0ZW5zaW9uQXNzb2NpYXRpb25zXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RFeHRlbnNpb25zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEV4dGVuc2lvbnM6IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOkxpc3RFeHRlbnNpb25zXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0SG9zdGVkQ29uZmlndXJhdGlvblZlcnNpb25zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uczogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6TGlzdEhvc3RlZENvbmZpZ3VyYXRpb25WZXJzaW9uc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0VGFnc0ZvclJlc291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRhZ3NGb3JSZXNvdXJjZTogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6TGlzdFRhZ3NGb3JSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBTdGFydENvbmZpZ3VyYXRpb25TZXNzaW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RhcnRDb25maWd1cmF0aW9uU2Vzc2lvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6U3RhcnRDb25maWd1cmF0aW9uU2Vzc2lvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBTdGFydERlcGxveW1lbnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBTdGFydERlcGxveW1lbnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOlN0YXJ0RGVwbG95bWVudFwiLFxuXHRcdFwiYXBwY29uZmlnOlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFN0YXJ0RXhwZXJpbWVudFJ1biBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0RXhwZXJpbWVudFJ1bjogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6U3RhcnRFeHBlcmltZW50UnVuXCIsXG5cdFx0XCJhcHBjb25maWc6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgU3RvcERlcGxveW1lbnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBTdG9wRGVwbG95bWVudDogc3RyaW5nW10gPSBbXCJhcHBjb25maWc6U3RvcERlcGxveW1lbnRcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFN0b3BFeHBlcmltZW50UnVuIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcEV4cGVyaW1lbnRSdW46IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOlN0b3BFeHBlcmltZW50UnVuXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBUYWdSZXNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFRhZ1Jlc291cmNlOiBzdHJpbmdbXSA9IFtcImFwcGNvbmZpZzpUYWdSZXNvdXJjZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVW50YWdSZXNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVudGFnUmVzb3VyY2U6IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOlVudGFnUmVzb3VyY2VcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUFjY291bnRTZXR0aW5ncyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUFjY291bnRTZXR0aW5nczogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6VXBkYXRlQWNjb3VudFNldHRpbmdzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUFwcGxpY2F0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQXBwbGljYXRpb246IHN0cmluZ1tdID0gW1wiYXBwY29uZmlnOlVwZGF0ZUFwcGxpY2F0aW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVDb25maWd1cmF0aW9uUHJvZmlsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlOiBzdHJpbmdbXSA9IFtcblx0XHRcImlhbTpQYXNzUm9sZVwiLFxuXHRcdFwiYXBwY29uZmlnOlVwZGF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZURlcGxveW1lbnRTdHJhdGVneSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZURlcGxveW1lbnRTdHJhdGVneTogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6VXBkYXRlRGVwbG95bWVudFN0cmF0ZWd5XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUVudmlyb25tZW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRW52aXJvbm1lbnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJhcHBjb25maWc6VXBkYXRlRW52aXJvbm1lbnRcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlRXhwZXJpbWVudERlZmluaXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFeHBlcmltZW50RGVmaW5pdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJhcHBjb25maWc6VXBkYXRlRXhwZXJpbWVudERlZmluaXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlRXhwZXJpbWVudFJ1biBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUV4cGVyaW1lbnRSdW46IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOlVwZGF0ZUV4cGVyaW1lbnRSdW5cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlRXh0ZW5zaW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXh0ZW5zaW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImlhbTpQYXNzUm9sZVwiLFxuXHRcdFwiYXBwY29uZmlnOlVwZGF0ZUV4dGVuc2lvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVFeHRlbnNpb25Bc3NvY2lhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUV4dGVuc2lvbkFzc29jaWF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImFwcGNvbmZpZzpVcGRhdGVFeHRlbnNpb25Bc3NvY2lhdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBWYWxpZGF0ZUNvbmZpZ3VyYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBWYWxpZGF0ZUNvbmZpZ3VyYXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiYXBwY29uZmlnOlZhbGlkYXRlQ29uZmlndXJhdGlvblwiLFxuXHRdO1xufVxuXG4vKipcbiAqIENvbmRpdGlvbiBrZXkgY29uc3RhbnRzIGFuZCBidWlsZGVycyBmb3IgYXBwY29uZmlnLlxuICovXG5leHBvcnQgY2xhc3MgQXBwY29uZmlnQ29uZGl0aW9ucyB7XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVBcHBsaWNhdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVBcHBsaWNhdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlQ29uZmlndXJhdGlvblByb2ZpbGUgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQ29uZmlndXJhdGlvblByb2ZpbGVDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIENyZWF0ZURlcGxveW1lbnRTdHJhdGVneSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVEZXBsb3ltZW50U3RyYXRlZ3lDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIENyZWF0ZUVudmlyb25tZW50IGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUVudmlyb25tZW50Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVFeHBlcmltZW50RGVmaW5pdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVFeHBlcmltZW50RGVmaW5pdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlRXh0ZW5zaW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUV4dGVuc2lvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIEdldEFwcGxpY2F0aW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEFwcGxpY2F0aW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBHZXRDb25maWd1cmF0aW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldENvbmZpZ3VyYXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIEdldENvbmZpZ3VyYXRpb25Qcm9maWxlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldENvbmZpZ3VyYXRpb25Qcm9maWxlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBHZXREZXBsb3ltZW50IGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldERlcGxveW1lbnRDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIEdldERlcGxveW1lbnRTdHJhdGVneSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXREZXBsb3ltZW50U3RyYXRlZ3lDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIEdldEVudmlyb25tZW50IGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEVudmlyb25tZW50Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBHZXRFeHBlcmltZW50RGVmaW5pdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRFeHBlcmltZW50RGVmaW5pdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgR2V0RXhwZXJpbWVudFJ1biBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRFeHBlcmltZW50UnVuQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBHZXRFeHRlbnNpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0RXh0ZW5zaW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBHZXRFeHRlbnNpb25Bc3NvY2lhdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRFeHRlbnNpb25Bc3NvY2lhdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgR2V0TGF0ZXN0Q29uZmlndXJhdGlvbiBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRMYXRlc3RDb25maWd1cmF0aW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBMaXN0VGFnc0ZvclJlc291cmNlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2VDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFN0YXJ0Q29uZmlndXJhdGlvblNlc3Npb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RhcnRDb25maWd1cmF0aW9uU2Vzc2lvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgU3RhcnREZXBsb3ltZW50IGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0RGVwbG95bWVudENvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgU3RhcnRFeHBlcmltZW50UnVuIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0RXhwZXJpbWVudFJ1bkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgU3RvcEV4cGVyaW1lbnRSdW4gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcEV4cGVyaW1lbnRSdW5Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFRhZ1Jlc291cmNlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFRhZ1Jlc291cmNlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBVbnRhZ1Jlc291cmNlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVudGFnUmVzb3VyY2VDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcImF3czpUYWdLZXlzXCJdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVXBkYXRlQXBwbGljYXRpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQXBwbGljYXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFVwZGF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUNvbmZpZ3VyYXRpb25Qcm9maWxlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBVcGRhdGVEZXBsb3ltZW50U3RyYXRlZ3kgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRGVwbG95bWVudFN0cmF0ZWd5Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBVcGRhdGVFbnZpcm9ubWVudCBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVFbnZpcm9ubWVudENvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVXBkYXRlRXhwZXJpbWVudERlZmluaXRpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXhwZXJpbWVudERlZmluaXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFVwZGF0ZUV4cGVyaW1lbnRSdW4gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXhwZXJpbWVudFJ1bkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVXBkYXRlRXh0ZW5zaW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUV4dGVuc2lvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVXBkYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRXh0ZW5zaW9uQXNzb2NpYXRpb25Db25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XTtcblxuXHQvKiogQ29uZGl0aW9uIGtleTogYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9IChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBBV1NfUkVRVUVTVF9UQUcgPSBcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fSAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQVdTX1JFU09VUkNFX1RBRyA9IFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogYXdzOlRhZ0tleXMgKEFycmF5T2ZTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBBV1NfVEFHX0tFWVMgPSBcImF3czpUYWdLZXlzXCI7XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fWAuXG5cdCAqL1xuXHRzdGF0aWMgcmVxdWVzdFRhZyh2YWx1ZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fWAuXG5cdCAqL1xuXHRzdGF0aWMgcmVzb3VyY2VUYWcodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBhd3M6VGFnS2V5c2AuXG5cdCAqL1xuXHRzdGF0aWMgdGFnS2V5cyh2YWx1ZXM6IHN0cmluZ1tdKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nW10+PiB7XG5cdFx0cmV0dXJuIHsgXCJGb3JBbGxWYWx1ZXM6U3RyaW5nRXF1YWxzXCI6IHsgXCJhd3M6VGFnS2V5c1wiOiB2YWx1ZXMgfSB9O1xuXHR9XG59XG4iXX0=