projen 0.99.38 → 0.99.39

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 (325) hide show
  1. package/.jsii +1434 -1434
  2. package/lib/_resolve.d.ts +1 -1
  3. package/lib/_resolve.js +1 -1
  4. package/lib/ai-instructions.d.ts +3 -2
  5. package/lib/ai-instructions.js +3 -3
  6. package/lib/awscdk/auto-discover.d.ts +7 -6
  7. package/lib/awscdk/auto-discover.js +7 -7
  8. package/lib/awscdk/awscdk-app-java.d.ts +5 -3
  9. package/lib/awscdk/awscdk-app-java.js +2 -2
  10. package/lib/awscdk/awscdk-app-py.d.ts +4 -2
  11. package/lib/awscdk/awscdk-app-py.js +2 -2
  12. package/lib/awscdk/awscdk-app-ts.d.ts +6 -4
  13. package/lib/awscdk/awscdk-app-ts.js +2 -2
  14. package/lib/awscdk/awscdk-construct.d.ts +4 -3
  15. package/lib/awscdk/awscdk-construct.js +3 -3
  16. package/lib/awscdk/awscdk-deps-java.d.ts +2 -1
  17. package/lib/awscdk/awscdk-deps-java.js +2 -2
  18. package/lib/awscdk/awscdk-deps-js.d.ts +2 -1
  19. package/lib/awscdk/awscdk-deps-js.js +2 -2
  20. package/lib/awscdk/awscdk-deps-py.d.ts +2 -1
  21. package/lib/awscdk/awscdk-deps-py.js +2 -2
  22. package/lib/awscdk/awscdk-deps.d.ts +1 -1
  23. package/lib/awscdk/awscdk-deps.js +2 -2
  24. package/lib/awscdk/awscdk-pytest-sample.d.ts +1 -1
  25. package/lib/awscdk/awscdk-pytest-sample.js +1 -1
  26. package/lib/awscdk/cdk-config.d.ts +1 -1
  27. package/lib/awscdk/cdk-config.js +5 -5
  28. package/lib/awscdk/cdk-tasks.d.ts +2 -2
  29. package/lib/awscdk/cdk-tasks.js +2 -2
  30. package/lib/awscdk/integ-runner.d.ts +1 -1
  31. package/lib/awscdk/integ-runner.js +1 -1
  32. package/lib/awscdk/integration-test.d.ts +5 -4
  33. package/lib/awscdk/integration-test.js +2 -2
  34. package/lib/awscdk/lambda-extension.d.ts +3 -3
  35. package/lib/awscdk/lambda-extension.js +2 -2
  36. package/lib/awscdk/lambda-function.d.ts +3 -3
  37. package/lib/awscdk/lambda-function.js +3 -3
  38. package/lib/build/build-workflow.d.ts +5 -5
  39. package/lib/build/build-workflow.js +2 -2
  40. package/lib/cdk/auto-discover-base.d.ts +1 -1
  41. package/lib/cdk/auto-discover-base.js +3 -3
  42. package/lib/cdk/construct-lib.d.ts +2 -1
  43. package/lib/cdk/construct-lib.js +2 -2
  44. package/lib/cdk/consts.d.ts +1 -1
  45. package/lib/cdk/consts.js +1 -1
  46. package/lib/cdk/integration-test-base.d.ts +2 -2
  47. package/lib/cdk/integration-test-base.js +2 -2
  48. package/lib/cdk/jsii-docgen.d.ts +1 -1
  49. package/lib/cdk/jsii-docgen.js +2 -2
  50. package/lib/cdk/jsii-project.d.ts +3 -2
  51. package/lib/cdk/jsii-project.js +2 -2
  52. package/lib/cdk8s/auto-discover.d.ts +3 -2
  53. package/lib/cdk8s/auto-discover.js +3 -3
  54. package/lib/cdk8s/cdk8s-app-py.d.ts +3 -2
  55. package/lib/cdk8s/cdk8s-app-py.js +2 -2
  56. package/lib/cdk8s/cdk8s-app-ts.d.ts +3 -2
  57. package/lib/cdk8s/cdk8s-app-ts.js +2 -2
  58. package/lib/cdk8s/cdk8s-construct.d.ts +2 -1
  59. package/lib/cdk8s/cdk8s-construct.js +2 -2
  60. package/lib/cdk8s/cdk8s-deps-js.d.ts +2 -1
  61. package/lib/cdk8s/cdk8s-deps-js.js +1 -1
  62. package/lib/cdk8s/cdk8s-deps-py.d.ts +2 -1
  63. package/lib/cdk8s/cdk8s-deps-py.js +2 -2
  64. package/lib/cdk8s/cdk8s-deps.d.ts +1 -1
  65. package/lib/cdk8s/cdk8s-deps.js +2 -2
  66. package/lib/cdk8s/integration-test.d.ts +3 -2
  67. package/lib/cdk8s/integration-test.js +2 -2
  68. package/lib/cdktf/cdktf-construct.d.ts +2 -1
  69. package/lib/cdktf/cdktf-construct.js +2 -2
  70. package/lib/circleci/circleci.d.ts +2 -2
  71. package/lib/circleci/circleci.js +2 -2
  72. package/lib/circleci/constant.d.ts +1 -1
  73. package/lib/circleci/constant.js +1 -1
  74. package/lib/cli/synth.d.ts +1 -1
  75. package/lib/cli/synth.js +1 -1
  76. package/lib/cli/tasks.d.ts +2 -2
  77. package/lib/cli/tasks.js +1 -1
  78. package/lib/clobber.d.ts +1 -1
  79. package/lib/clobber.js +1 -1
  80. package/lib/component.d.ts +3 -2
  81. package/lib/component.js +2 -2
  82. package/lib/dependencies.d.ts +1 -1
  83. package/lib/dependencies.js +2 -2
  84. package/lib/dev-env.d.ts +1 -1
  85. package/lib/dev-env.js +2 -2
  86. package/lib/docker-compose/docker-compose-render.d.ts +1 -1
  87. package/lib/docker-compose/docker-compose-render.js +1 -1
  88. package/lib/docker-compose/docker-compose-service.d.ts +4 -4
  89. package/lib/docker-compose/docker-compose-service.js +2 -2
  90. package/lib/docker-compose/docker-compose.d.ts +6 -5
  91. package/lib/docker-compose/docker-compose.js +2 -2
  92. package/lib/docker-compose/index.d.ts +2 -2
  93. package/lib/docker-compose/index.js +1 -3
  94. package/lib/file.d.ts +1 -1
  95. package/lib/file.js +2 -2
  96. package/lib/gitattributes.d.ts +3 -2
  97. package/lib/gitattributes.js +2 -2
  98. package/lib/github/actions-provider.js +1 -1
  99. package/lib/github/auto-approve.d.ts +2 -2
  100. package/lib/github/auto-approve.js +2 -2
  101. package/lib/github/auto-merge.d.ts +1 -1
  102. package/lib/github/auto-merge.js +2 -2
  103. package/lib/github/auto-queue.d.ts +3 -3
  104. package/lib/github/auto-queue.js +7 -6
  105. package/lib/github/constants.d.ts +1 -1
  106. package/lib/github/constants.js +1 -1
  107. package/lib/github/dependabot.d.ts +1 -1
  108. package/lib/github/dependabot.js +2 -2
  109. package/lib/github/github-credentials.d.ts +1 -1
  110. package/lib/github/github-credentials.js +2 -2
  111. package/lib/github/github-project.d.ts +11 -8
  112. package/lib/github/github-project.js +2 -2
  113. package/lib/github/github.d.ts +9 -6
  114. package/lib/github/github.js +2 -2
  115. package/lib/github/merge-queue.d.ts +2 -2
  116. package/lib/github/merge-queue.js +4 -5
  117. package/lib/github/mergify.d.ts +1 -1
  118. package/lib/github/mergify.js +2 -2
  119. package/lib/github/pr-template.d.ts +2 -2
  120. package/lib/github/pr-template.js +2 -2
  121. package/lib/github/private/util.d.ts +1 -1
  122. package/lib/github/private/util.js +1 -1
  123. package/lib/github/pull-request-backport.d.ts +1 -1
  124. package/lib/github/pull-request-backport.js +2 -2
  125. package/lib/github/pull-request-lint.d.ts +2 -2
  126. package/lib/github/pull-request-lint.js +12 -29
  127. package/lib/github/stale-util.d.ts +1 -1
  128. package/lib/github/stale-util.js +1 -1
  129. package/lib/github/stale.d.ts +2 -2
  130. package/lib/github/stale.js +2 -2
  131. package/lib/github/task-workflow-job.d.ts +6 -6
  132. package/lib/github/task-workflow-job.js +2 -2
  133. package/lib/github/task-workflow.d.ts +4 -4
  134. package/lib/github/task-workflow.js +2 -2
  135. package/lib/github/workflow-actions.d.ts +3 -3
  136. package/lib/github/workflow-actions.js +2 -2
  137. package/lib/github/workflow-jobs.d.ts +3 -3
  138. package/lib/github/workflow-jobs.js +2 -2
  139. package/lib/github/workflow-steps.d.ts +2 -2
  140. package/lib/github/workflow-steps.js +2 -2
  141. package/lib/github/workflows-model.d.ts +1 -1
  142. package/lib/github/workflows-model.js +1 -1
  143. package/lib/github/workflows.d.ts +3 -3
  144. package/lib/github/workflows.js +2 -2
  145. package/lib/gitlab/configuration.d.ts +2 -2
  146. package/lib/gitlab/configuration.js +2 -2
  147. package/lib/gitlab/gitlab-configuration.d.ts +2 -2
  148. package/lib/gitlab/gitlab-configuration.js +2 -2
  149. package/lib/gitlab/nested-configuration.d.ts +3 -3
  150. package/lib/gitlab/nested-configuration.js +2 -2
  151. package/lib/gitpod.d.ts +3 -3
  152. package/lib/gitpod.js +2 -2
  153. package/lib/ignore-file.d.ts +3 -2
  154. package/lib/ignore-file.js +2 -2
  155. package/lib/index.d.ts +2 -2
  156. package/lib/index.js +1 -3
  157. package/lib/ini.d.ts +4 -3
  158. package/lib/ini.js +2 -2
  159. package/lib/java/java-project.d.ts +12 -6
  160. package/lib/java/java-project.js +2 -2
  161. package/lib/java/junit.d.ts +2 -2
  162. package/lib/java/junit.js +2 -2
  163. package/lib/java/maven-compile.d.ts +2 -2
  164. package/lib/java/maven-compile.js +2 -2
  165. package/lib/java/maven-packaging.d.ts +2 -2
  166. package/lib/java/maven-packaging.js +2 -2
  167. package/lib/java/maven-sample.d.ts +1 -1
  168. package/lib/java/maven-sample.js +2 -2
  169. package/lib/java/pom.d.ts +1 -1
  170. package/lib/java/pom.js +3 -3
  171. package/lib/java/projenrc.d.ts +3 -3
  172. package/lib/java/projenrc.js +2 -2
  173. package/lib/javascript/biome/biome.d.ts +1 -1
  174. package/lib/javascript/biome/biome.js +2 -2
  175. package/lib/javascript/bundler.d.ts +2 -2
  176. package/lib/javascript/bundler.js +2 -2
  177. package/lib/javascript/eslint.d.ts +5 -5
  178. package/lib/javascript/eslint.js +2 -2
  179. package/lib/javascript/jest.d.ts +2 -2
  180. package/lib/javascript/jest.js +5 -5
  181. package/lib/javascript/license-checker.d.ts +2 -2
  182. package/lib/javascript/license-checker.js +2 -2
  183. package/lib/javascript/node-package.d.ts +3 -3
  184. package/lib/javascript/node-package.js +16 -9
  185. package/lib/javascript/node-project.d.ts +22 -13
  186. package/lib/javascript/node-project.js +2 -2
  187. package/lib/javascript/npm-config.d.ts +1 -1
  188. package/lib/javascript/npm-config.js +2 -2
  189. package/lib/javascript/prettier.d.ts +4 -3
  190. package/lib/javascript/prettier.js +2 -2
  191. package/lib/javascript/projenrc.js +1 -1
  192. package/lib/javascript/typescript-config.d.ts +1 -1
  193. package/lib/javascript/typescript-config.js +3 -3
  194. package/lib/javascript/upgrade-dependencies.d.ts +5 -5
  195. package/lib/javascript/upgrade-dependencies.js +3 -3
  196. package/lib/javascript/util.d.ts +1 -1
  197. package/lib/javascript/util.js +1 -1
  198. package/lib/javascript/yarnrc.d.ts +1 -1
  199. package/lib/javascript/yarnrc.js +2 -2
  200. package/lib/json-patch.js +2 -4
  201. package/lib/json.d.ts +4 -3
  202. package/lib/json.js +2 -2
  203. package/lib/license.d.ts +3 -2
  204. package/lib/license.js +2 -2
  205. package/lib/logger.d.ts +1 -1
  206. package/lib/logger.js +2 -2
  207. package/lib/makefile.d.ts +3 -2
  208. package/lib/makefile.js +2 -2
  209. package/lib/object-file.d.ts +3 -2
  210. package/lib/object-file.js +2 -2
  211. package/lib/project-build.d.ts +2 -2
  212. package/lib/project-build.js +2 -2
  213. package/lib/project-tree.d.ts +1 -1
  214. package/lib/project-tree.js +2 -2
  215. package/lib/project.d.ts +14 -10
  216. package/lib/project.js +2 -2
  217. package/lib/projects.js +1 -1
  218. package/lib/projenrc-json.d.ts +1 -1
  219. package/lib/projenrc-json.js +3 -3
  220. package/lib/projenrc.d.ts +1 -1
  221. package/lib/projenrc.js +2 -2
  222. package/lib/python/index.d.ts +3 -3
  223. package/lib/python/index.js +1 -4
  224. package/lib/python/pip.d.ts +3 -3
  225. package/lib/python/pip.js +2 -2
  226. package/lib/python/poetry.d.ts +7 -7
  227. package/lib/python/poetry.js +3 -3
  228. package/lib/python/projenrc.d.ts +1 -1
  229. package/lib/python/projenrc.js +2 -2
  230. package/lib/python/pyproject-toml-file.d.ts +3 -3
  231. package/lib/python/pyproject-toml-file.js +2 -2
  232. package/lib/python/pytest-sample.d.ts +1 -1
  233. package/lib/python/pytest-sample.js +2 -2
  234. package/lib/python/pytest.d.ts +1 -1
  235. package/lib/python/pytest.js +2 -2
  236. package/lib/python/python-deps.d.ts +2 -2
  237. package/lib/python/python-deps.js +1 -1
  238. package/lib/python/python-packaging.d.ts +3 -3
  239. package/lib/python/python-packaging.js +1 -1
  240. package/lib/python/python-project.d.ts +11 -9
  241. package/lib/python/python-project.js +2 -2
  242. package/lib/python/python-sample.d.ts +1 -1
  243. package/lib/python/python-sample.js +2 -2
  244. package/lib/python/requirements-file.d.ts +4 -3
  245. package/lib/python/requirements-file.js +2 -2
  246. package/lib/python/setuppy.d.ts +3 -2
  247. package/lib/python/setuppy.js +2 -2
  248. package/lib/python/setuptools.d.ts +4 -4
  249. package/lib/python/setuptools.js +2 -2
  250. package/lib/python/uv.d.ts +8 -8
  251. package/lib/python/uv.js +2 -2
  252. package/lib/python/venv.d.ts +2 -2
  253. package/lib/python/venv.js +2 -2
  254. package/lib/readme.d.ts +1 -1
  255. package/lib/readme.js +2 -2
  256. package/lib/release/bump-version.d.ts +1 -1
  257. package/lib/release/bump-version.js +1 -1
  258. package/lib/release/bump-version.task.js +1 -20
  259. package/lib/release/commit-tag-version.d.ts +1 -1
  260. package/lib/release/commit-tag-version.js +1 -1
  261. package/lib/release/publisher.d.ts +4 -4
  262. package/lib/release/publisher.js +2 -2
  263. package/lib/release/release-trigger.js +1 -1
  264. package/lib/release/release.d.ts +6 -6
  265. package/lib/release/release.js +2 -2
  266. package/lib/release/tag-version.task.js +1 -15
  267. package/lib/release/update-changelog.task.js +1 -15
  268. package/lib/renovatebot.js +1 -1
  269. package/lib/run-task.cjs +12 -5
  270. package/lib/sample-file.d.ts +1 -1
  271. package/lib/sample-file.js +3 -3
  272. package/lib/semver.js +1 -1
  273. package/lib/smithy/smithy-build.d.ts +2 -2
  274. package/lib/smithy/smithy-build.js +1 -1
  275. package/lib/source-code.d.ts +1 -1
  276. package/lib/source-code.js +2 -2
  277. package/lib/task-runtime.d.ts +1 -1
  278. package/lib/task-runtime.js +11 -6
  279. package/lib/task.d.ts +1 -1
  280. package/lib/task.js +2 -2
  281. package/lib/tasks.d.ts +3 -2
  282. package/lib/tasks.js +2 -2
  283. package/lib/testing.d.ts +3 -3
  284. package/lib/testing.js +2 -2
  285. package/lib/textfile.d.ts +3 -2
  286. package/lib/textfile.js +2 -2
  287. package/lib/toml.d.ts +4 -3
  288. package/lib/toml.js +2 -2
  289. package/lib/typescript/projenrc-ts.d.ts +1 -1
  290. package/lib/typescript/projenrc-ts.js +2 -2
  291. package/lib/typescript/projenrc.d.ts +1 -1
  292. package/lib/typescript/projenrc.js +2 -2
  293. package/lib/typescript/typescript-typedoc.d.ts +1 -1
  294. package/lib/typescript/typescript-typedoc.js +2 -2
  295. package/lib/typescript/typescript.d.ts +4 -3
  296. package/lib/typescript/typescript.js +8 -8
  297. package/lib/util/name.d.ts +1 -1
  298. package/lib/util/name.js +1 -1
  299. package/lib/util/synth.d.ts +1 -1
  300. package/lib/util/synth.js +1 -1
  301. package/lib/version.d.ts +2 -2
  302. package/lib/version.js +3 -3
  303. package/lib/vscode/devcontainer.d.ts +3 -3
  304. package/lib/vscode/devcontainer.js +2 -2
  305. package/lib/vscode/extensions.d.ts +1 -1
  306. package/lib/vscode/extensions.js +2 -2
  307. package/lib/vscode/launch-config.d.ts +1 -1
  308. package/lib/vscode/launch-config.js +2 -2
  309. package/lib/vscode/settings.d.ts +1 -1
  310. package/lib/vscode/settings.js +2 -2
  311. package/lib/vscode/vscode.d.ts +1 -1
  312. package/lib/vscode/vscode.js +2 -2
  313. package/lib/web/next.d.ts +4 -2
  314. package/lib/web/next.js +4 -4
  315. package/lib/web/postcss.d.ts +3 -2
  316. package/lib/web/postcss.js +2 -2
  317. package/lib/web/react.d.ts +6 -3
  318. package/lib/web/react.js +5 -5
  319. package/lib/web/tailwind.d.ts +1 -1
  320. package/lib/web/tailwind.js +2 -2
  321. package/lib/xmlfile.d.ts +4 -3
  322. package/lib/xmlfile.js +2 -2
  323. package/lib/yaml.d.ts +4 -3
  324. package/lib/yaml.js +2 -2
  325. package/package.json +1 -1
@@ -149,5 +149,5 @@ class WorkflowSteps {
149
149
  }
150
150
  exports.WorkflowSteps = WorkflowSteps;
151
151
  _a = JSII_RTTI_SYMBOL_1;
152
- WorkflowSteps[_a] = { fqn: "projen.github.WorkflowSteps", version: "0.99.38" };
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctc3RlcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2l0aHViL3dvcmtmbG93LXN0ZXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsMkNBQWlFO0FBRWpFOztHQUVHO0FBQ0gsTUFBYSxhQUFhO0lBQ3hCOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUEyQixFQUFFO1FBQ2xELE1BQU0sWUFBWSxHQUFHLElBQUEsd0NBQStCLEVBQUM7WUFDbkQsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVTtZQUN4QyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLO1lBQzNCLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUc7WUFDdkIsVUFBVSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVTtZQUNyQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJO1lBQ3pCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUM3QyxDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0wsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7Z0JBQ3pCLEdBQUcsT0FBTztnQkFDVixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxVQUFVO2FBQ2pDLENBQUM7WUFDRixJQUFJLEVBQUUscUJBQXFCO1lBQzNCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUztTQUN0RSxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQWdDO1FBQzdE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L0IsVUFBVSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVTtnQkFDckMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhO2dCQUM5QyxjQUFjLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLO2dCQUNwQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLO2FBQy9CLENBQUM7WUFDSixDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsT0FBTztZQUNMLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO2dCQUN6QixHQUFHLE9BQU87Z0JBQ1YsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLElBQUksbUJBQW1CO2FBQzNDLENBQUM7WUFDRixJQUFJLEVBQUUsOEJBQThCO1lBQ3BDLElBQUksRUFBRSxvQkFBb0I7U0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNLLE1BQU0sQ0FBQyxrQkFBa0IsQ0FDL0IsT0FBNkI7UUFFN0IsT0FBTztZQUNMLGVBQWUsRUFBRSxPQUFPLEVBQUUsZUFBZTtZQUN6QyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUc7WUFDakIsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2YsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2YsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJO1lBQ25CLGNBQWMsRUFBRSxPQUFPLEVBQUUsY0FBYztZQUN2QyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCO1NBQzVDLENBQUM7SUFDSixDQUFDOztBQTFKSCxzQ0EySkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHaXRJZGVudGl0eSB9IGZyb20gXCIuL3Rhc2std29ya2Zsb3dcIjtcbmltcG9ydCB7IEpvYlN0ZXBDb25maWd1cmF0aW9uLCBKb2JTdGVwIH0gZnJvbSBcIi4vd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyByZW1vdmVOdWxsT3JVbmRlZmluZWRQcm9wZXJ0aWVzIH0gZnJvbSBcIi4uL3V0aWwvb2JqZWN0XCI7XG5cbi8qKlxuICogQSBjb2xsZWN0aW9uIG9mIHZlcnkgY29tbW9ubHkgdXNlZCwgaW5kaXZpZHVhbCwgR2l0SHViIFdvcmtmbG93IEpvYiBzdGVwcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFdvcmtmbG93U3RlcHMge1xuICAvKipcbiAgICogQ2hlY2tzIG91dCBhIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBgY2hlY2tvdXRgIEpvYlN0ZXBcbiAgICogQHJldHVybnMgQSBKb2JTdGVwIHRoYXQgY2hlY2tzIG91dCBhIHJlcG9zaXRvcnlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2hlY2tvdXQob3B0aW9uczogQ2hlY2tvdXRPcHRpb25zID0ge30pOiBKb2JTdGVwIHtcbiAgICBjb25zdCBjaGVja291dFdpdGggPSByZW1vdmVOdWxsT3JVbmRlZmluZWRQcm9wZXJ0aWVzKHtcbiAgICAgIFwiZmV0Y2gtZGVwdGhcIjogb3B0aW9ucz8ud2l0aD8uZmV0Y2hEZXB0aCxcbiAgICAgIHRva2VuOiBvcHRpb25zPy53aXRoPy50b2tlbixcbiAgICAgIHJlZjogb3B0aW9ucz8ud2l0aD8ucmVmLFxuICAgICAgcmVwb3NpdG9yeTogb3B0aW9ucz8ud2l0aD8ucmVwb3NpdG9yeSxcbiAgICAgIHBhdGg6IG9wdGlvbnM/LndpdGg/LnBhdGgsXG4gICAgICAuLi4ob3B0aW9ucz8ud2l0aD8ubGZzID8geyBsZnM6IHRydWUgfSA6IHt9KSxcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmJ1aWxkSm9iU3RlcENvbmZpZyh7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSA/PyBcIkNoZWNrb3V0XCIsXG4gICAgICB9KSxcbiAgICAgIHVzZXM6IFwiYWN0aW9ucy9jaGVja291dEB2NlwiLFxuICAgICAgd2l0aDogT2JqZWN0LmtleXMoY2hlY2tvdXRXaXRoKS5sZW5ndGggPiAwID8gY2hlY2tvdXRXaXRoIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlcyB0aGUgZ2l0IGlkZW50aXR5ICh1c2VyIG5hbWUgYW5kIGVtYWlsKS5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGdpdCBpZGVudGl0eSBKb2JTdGVwXG4gICAqIEByZXR1cm5zIEpvYiBzdGVwIHRoYXQgY29uZmlndXJlcyB0aGUgcHJvdmlkZWQgZ2l0IGlkZW50aXR5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNldHVwR2l0SWRlbnRpdHkob3B0aW9uczogU2V0dXBHaXRJZGVudGl0eU9wdGlvbnMpOiBKb2JTdGVwIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5idWlsZEpvYlN0ZXBDb25maWcoe1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUgPz8gXCJTZXQgZ2l0IGlkZW50aXR5XCIsXG4gICAgICB9KSxcbiAgICAgIHJ1bjogW1xuICAgICAgICBgZ2l0IGNvbmZpZyB1c2VyLm5hbWUgXCIke29wdGlvbnMuZ2l0SWRlbnRpdHkubmFtZX1cImAsXG4gICAgICAgIGBnaXQgY29uZmlnIHVzZXIuZW1haWwgXCIke29wdGlvbnMuZ2l0SWRlbnRpdHkuZW1haWx9XCJgLFxuICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgdGFnIGV4aXN0cy5cbiAgICpcbiAgICogUmVxdWlyZXMgYSBjaGVja291dCBzdGVwIHRvIGhhdmUgYmVlbiBydW4gYmVmb3JlIHRoaXMgc3RlcCB3aXRoIFwiZmV0Y2gtZGVwdGhcIiBzZXQgdG8gXCIwXCIuXG4gICAqXG4gICAqIE91dHB1dHM6XG4gICAqIC0gYGV4aXN0c2A6IEEgc3RyaW5nIHZhbHVlIG9mICd0cnVlJyBvciAnZmFsc2UnIGluZGljYXRpbmcgaWYgdGhlIHRhZyBleGlzdHMuXG4gICAqXG4gICAqIEBwYXJhbSB0YWcgVGhlIHRhZyB0byBjaGVjay4gWW91IG1heSB1c2UgdmFsaWQgYmFzaCBjb2RlIGluc3RlYWQgb2YgYSBsaXRlcmFsIHN0cmluZyBpbiB0aGlzIGZpZWxkLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgYHRhZy1leGlzdHNgIEpvYlN0ZXBcbiAgICogQHJldHVybnMgSm9iIHN0ZXAgdGhhdCBjaGVja3MgaWYgdGhlIHByb3ZpZGVkIHRhZyBleGlzdHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdGFnRXhpc3RzKHRhZzogc3RyaW5nLCBvcHRpb25zOiBKb2JTdGVwQ29uZmlndXJhdGlvbik6IEpvYlN0ZXAge1xuICAgIGNvbnN0IGNoZWNrVGFnID0gKHJlbW90ZVRhZzogc3RyaW5nKSA9PlxuICAgICAgYGdpdCBscy1yZW1vdGUgLXEgLS1leGl0LWNvZGUgLS10YWdzIG9yaWdpbiAke3JlbW90ZVRhZ31gO1xuICAgIGNvbnN0IHZhcklzU2V0ID0gKHZhcmlhYmxlOiBzdHJpbmcpID0+IGBbICEgLXogXCIkJHt2YXJpYWJsZX1cIiBdYDtcbiAgICBjb25zdCBzZXRPdXRwdXQgPSAodmFsdWU6IGJvb2xlYW4pID0+XG4gICAgICBgKGVjaG8gXCJleGlzdHM9JHt2YWx1ZSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwifVwiID4+ICRHSVRIVUJfT1VUUFVUKWA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5idWlsZEpvYlN0ZXBDb25maWcoe1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUgPz8gXCJDaGVjayBpZiB0YWcgZXhpc3RzXCIsXG4gICAgICAgIGlkOiBvcHRpb25zLmlkID8/IFwiY2hlY2stdGFnXCIsXG4gICAgICAgIHNoZWxsOiBcImJhc2hcIixcbiAgICAgIH0pLFxuICAgICAgcnVuOiBbXG4gICAgICAgIGBUQUc9JHt0YWd9YCxcbiAgICAgICAgYCgke3ZhcklzU2V0KFwiVEFHXCIpfSAmJiAke2NoZWNrVGFnKFwiJFRBR1wiKX0gJiYgJHtzZXRPdXRwdXQoXG4gICAgICAgICAgdHJ1ZSxcbiAgICAgICAgKX0pIHx8ICR7c2V0T3V0cHV0KGZhbHNlKX1gLFxuICAgICAgICBcImNhdCAkR0lUSFVCX09VVFBVVFwiLFxuICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVXBsb2FkcyBhbiBhcnRpZmFjdC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGB1cGxvYWQtYXJ0aWZhY3RgIEpvYlN0ZXBcbiAgICogQHJldHVybnMgQSBKb2JTdGVwIHRoYXQgdXBsb2FkcyBhbiBhcnRpZmFjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1cGxvYWRBcnRpZmFjdChvcHRpb25zOiBVcGxvYWRBcnRpZmFjdE9wdGlvbnMpOiBKb2JTdGVwIHtcbiAgICBjb25zdCB1cGxvYWRBcnRpZmFjdFdpdGg6IFVwbG9hZEFydGlmYWN0V2l0aCA9XG4gICAgICByZW1vdmVOdWxsT3JVbmRlZmluZWRQcm9wZXJ0aWVzKHtcbiAgICAgICAgbmFtZTogb3B0aW9ucz8ud2l0aD8ubmFtZSxcbiAgICAgICAgcGF0aDogb3B0aW9ucz8ud2l0aD8ucGF0aCxcbiAgICAgICAgb3ZlcndyaXRlOiBvcHRpb25zPy53aXRoPy5vdmVyd3JpdGUgPz8gdHJ1ZSxcbiAgICAgICAgXCJpZi1uby1maWxlcy1mb3VuZFwiOiBvcHRpb25zPy53aXRoPy5pZk5vRmlsZXNGb3VuZCxcbiAgICAgICAgXCJyZXRlbnRpb24tZGF5c1wiOiBvcHRpb25zPy53aXRoPy5yZXRlbnRpb25EYXlzLFxuICAgICAgICBcImNvbXByZXNzaW9uLWxldmVsXCI6IG9wdGlvbnM/LndpdGg/LmNvbXByZXNzaW9uTGV2ZWwsXG4gICAgICAgIFwiaW5jbHVkZS1oaWRkZW4tZmlsZXNcIjogb3B0aW9ucz8ud2l0aD8uaW5jbHVkZUhpZGRlbkZpbGVzLFxuICAgICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5idWlsZEpvYlN0ZXBDb25maWcoe1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUgPz8gXCJVcGxvYWQgYXJ0aWZhY3RcIixcbiAgICAgIH0pLFxuICAgICAgdXNlczogXCJhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEB2N1wiLFxuICAgICAgd2l0aDogdXBsb2FkQXJ0aWZhY3RXaXRoLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRG93bmxvYWRzIGFuIGFydGlmYWN0LlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgYGRvd25sb2FkLWFydGlmYWN0YCBKb2JTdGVwXG4gICAqIEByZXR1cm5zIEEgSm9iU3RlcCB0aGF0IGRvd25sb2FkcyBhbiBhcnRpZmFjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkb3dubG9hZEFydGlmYWN0KG9wdGlvbnM/OiBEb3dubG9hZEFydGlmYWN0T3B0aW9ucyk6IEpvYlN0ZXAge1xuICAgIGNvbnN0IGRvd25sb2FkQXJ0aWZhY3RXaXRoOiBEb3dubG9hZEFydGlmYWN0V2l0aCB8IHVuZGVmaW5lZCA9IG9wdGlvbnM/LndpdGhcbiAgICAgID8gcmVtb3ZlTnVsbE9yVW5kZWZpbmVkUHJvcGVydGllcyh7XG4gICAgICAgICAgbmFtZTogb3B0aW9ucz8ud2l0aD8ubmFtZSxcbiAgICAgICAgICBwYXRoOiBvcHRpb25zPy53aXRoPy5wYXRoLFxuICAgICAgICAgIHBhdHRlcm46IG9wdGlvbnM/LndpdGg/LnBhdHRlcm4sXG4gICAgICAgICAgcmVwb3NpdG9yeTogb3B0aW9ucz8ud2l0aD8ucmVwb3NpdG9yeSxcbiAgICAgICAgICBcIm1lcmdlLW11bHRpcGxlXCI6IG9wdGlvbnM/LndpdGg/Lm1lcmdlTXVsdGlwbGUsXG4gICAgICAgICAgXCJnaXRodWItdG9rZW5cIjogb3B0aW9ucz8ud2l0aD8udG9rZW4sXG4gICAgICAgICAgXCJydW4taWRcIjogb3B0aW9ucz8ud2l0aD8ucnVuSWQsXG4gICAgICAgIH0pXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmJ1aWxkSm9iU3RlcENvbmZpZyh7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIG5hbWU6IG9wdGlvbnM/Lm5hbWUgPz8gXCJEb3dubG9hZCBhcnRpZmFjdFwiLFxuICAgICAgfSksXG4gICAgICB1c2VzOiBcImFjdGlvbnMvZG93bmxvYWQtYXJ0aWZhY3RAdjhcIixcbiAgICAgIHdpdGg6IGRvd25sb2FkQXJ0aWZhY3RXaXRoLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU2ltcGxlIGFkYXB0ZXIgdG8gZW5zdXJlIHdlIG9ubHkgaW5jbHVkZSB0aGUgbmVjZXNzYXJ5IGZpZWxkcyBmb3IgYSBKb2JTdGVwQ29uZmlndXJhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGJ1aWxkSm9iU3RlcENvbmZpZyhcbiAgICBvcHRpb25zOiBKb2JTdGVwQ29uZmlndXJhdGlvbixcbiAgKTogSm9iU3RlcENvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICBjb250aW51ZU9uRXJyb3I6IG9wdGlvbnM/LmNvbnRpbnVlT25FcnJvcixcbiAgICAgIGVudjogb3B0aW9ucz8uZW52LFxuICAgICAgaWQ6IG9wdGlvbnM/LmlkLFxuICAgICAgaWY6IG9wdGlvbnM/LmlmLFxuICAgICAgbmFtZTogb3B0aW9ucz8ubmFtZSxcbiAgICAgIHRpbWVvdXRNaW51dGVzOiBvcHRpb25zPy50aW1lb3V0TWludXRlcyxcbiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IG9wdGlvbnM/LndvcmtpbmdEaXJlY3RvcnksXG4gICAgfTtcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBDaGVja291dE9wdGlvbnMgZXh0ZW5kcyBKb2JTdGVwQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBgY2hlY2tvdXRgLlxuICAgKi9cbiAgcmVhZG9ubHkgd2l0aD86IENoZWNrb3V0V2l0aDtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgY2hlY2tvdXRgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrb3V0V2l0aCB7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgY29tbWl0cyB0byBmZXRjaC4gMCBpbmRpY2F0ZXMgYWxsIGhpc3RvcnkgZm9yIGFsbCBicmFuY2hlcyBhbmQgdGFncy5cbiAgICpcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hEZXB0aD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgTEZTIGlzIGVuYWJsZWQgZm9yIHRoZSBHaXRIdWIgcmVwb3NpdG9yeVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbGZzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQnJhbmNoIG9yIHRhZyBuYW1lLlxuICAgKiBAZGVmYXVsdCAtIHRoZSBkZWZhdWx0IGJyYW5jaCBpcyBpbXBsaWNpdGx5IHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlZj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgKG93bmVyL3JlcG8pIHRvIHVzZS5cbiAgICogQGRlZmF1bHQgLSB0aGUgZGVmYXVsdCByZXBvc2l0b3J5IGlzIGltcGxpY2l0bHkgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3NpdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBHaXRIdWIgdG9rZW4gdG8gdXNlIHdoZW4gY2hlY2tpbmcgb3V0IHRoZSByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBJZiB0aGUgaW50ZW50IGlzIHRvIHB1c2ggY2hhbmdlcyBiYWNrIHRvIHRoZSBicmFuY2gsIHRoZW4geW91IG11c3QgdXNlIGFcbiAgICogUEFUIHdpdGggYHJlcG9gIChhbmQgcG9zc2libHkgYHdvcmtmbG93c2ApIHBlcm1pc3Npb25zLlxuICAgKiBAZGVmYXVsdCAtIHRoZSBkZWZhdWx0IEdJVEhVQl9UT0tFTiBpcyBpbXBsaWNpdGx5IHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHRva2VuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWxhdGl2ZSBwYXRoIHVuZGVyICRHSVRIVUJfV09SS1NQQUNFIHRvIHBsYWNlIHRoZSByZXBvc2l0b3J5XG4gICAqIEBkZWZhdWx0IC0gJEdJVEhVQl9XT1JLU1BBQ0VcbiAgICovXG4gIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0dXBHaXRJZGVudGl0eU9wdGlvbnMgZXh0ZW5kcyBKb2JTdGVwQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpdHkgdG8gdXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0SWRlbnRpdHk6IEdpdElkZW50aXR5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZEFydGlmYWN0V2l0aCB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBhcnRpZmFjdCB0byB1cGxvYWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiYXJ0aWZhY3RcIlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBmaWxlLCBkaXJlY3Rvcnkgb3Igd2lsZGNhcmQgcGF0dGVybiB0aGF0IGRlc2NyaWJlcyB3aGF0IHRvIHVwbG9hZFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzaXJlZCBiZWhhdmlvciBpZiBubyBmaWxlcyBhcmUgZm91bmQgdXNpbmcgdGhlIHByb3ZpZGVkIHBhdGguXG4gICAqIEF2YWlsYWJsZSBPcHRpb25zOlxuICAgKiAgIHdhcm46IE91dHB1dCBhIHdhcm5pbmcgYnV0IGRvIG5vdCBmYWlsIHRoZSBhY3Rpb25cbiAgICogICBlcnJvcjogRmFpbCB0aGUgYWN0aW9uIHdpdGggYW4gZXJyb3IgbWVzc2FnZVxuICAgKiAgIGlnbm9yZTogRG8gbm90IG91dHB1dCBhbnkgd2FybmluZ3Mgb3IgZXJyb3JzLCB0aGUgYWN0aW9uIGRvZXMgbm90IGZhaWxcbiAgICpcbiAgICogQGRlZmF1bHQgXCJ3YXJuXCJcbiAgICovXG4gIHJlYWRvbmx5IGlmTm9GaWxlc0ZvdW5kPzogXCJlcnJvclwiIHwgXCJ3YXJuXCIgfCBcImlnbm9yZVwiO1xuXG4gIC8qKlxuICAgKiBEdXJhdGlvbiBhZnRlciB3aGljaCBhcnRpZmFjdCB3aWxsIGV4cGlyZSBpbiBkYXlzLiAwIG1lYW5zIHVzaW5nIGRlZmF1bHQgcmVwb3NpdG9yeSByZXRlbnRpb24uXG4gICAqXG4gICAqIE1pbmltdW0gMSBkYXkuXG4gICAqIE1heGltdW0gOTAgZGF5cyB1bmxlc3MgY2hhbmdlZCBmcm9tIHRoZSByZXBvc2l0b3J5IHNldHRpbmdzIHBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIGRlZmF1bHQgcmVwb3NpdG9yeSByZXRlbnRpb25cbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvbkRheXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbiBmb3IgWmxpYiB0byBiZSBhcHBsaWVkIHRvIHRoZSBhcnRpZmFjdCBhcmNoaXZlLlxuICAgKlxuICAgKiBUaGUgdmFsdWUgY2FuIHJhbmdlIGZyb20gMCB0byA5LlxuICAgKiBGb3IgbGFyZ2UgZmlsZXMgdGhhdCBhcmUgbm90IGVhc2lseSBjb21wcmVzc2VkLCBhIHZhbHVlIG9mIDAgaXMgcmVjb21tZW5kZWQgZm9yIHNpZ25pZmljYW50bHkgZmFzdGVyIHVwbG9hZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDZcbiAgICovXG4gIHJlYWRvbmx5IGNvbXByZXNzaW9uTGV2ZWw/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYWN0aW9uIHNob3VsZCBvdmVyd3JpdGUgYW4gZXhpc3RpbmcgYXJ0aWZhY3Qgd2l0aCB0aGUgc2FtZSBuYW1lIChzaG91bGQgb25lIGV4aXN0KVxuICAgKlxuICAgKiBJbnRyb2R1Y2VkIGluIHY0IGFuZCByZXByZXNlbnRzIGEgYnJlYWtpbmcgY2hhbmdlIGZyb20gdGhlIGJlaGF2aW9yIG9mIHRoZSB2MyBhY3Rpb24uXG4gICAqIFRvIG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcsIHRoaXMgc2hvdWxkIGJlIHNldCB0aGUgYHRydWVgICh0aGUgZGVmYXVsdCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG92ZXJ3cml0ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBoaWRkZW4gZmlsZXMgaW4gdGhlIHByb3ZpZGVkIHBhdGggaW4gdGhlIGFydGlmYWN0XG4gICAqXG4gICAqIFRoZSBmaWxlIGNvbnRlbnRzIG9mIGFueSBoaWRkZW4gZmlsZXMgaW4gdGhlIHBhdGggc2hvdWxkIGJlIHZhbGlkYXRlZCBiZWZvcmUgZW5hYmxlZCB0aGlzIHRvIGF2b2lkIHVwbG9hZGluZyBzZW5zaXRpdmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlSGlkZGVuRmlsZXM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZEFydGlmYWN0T3B0aW9ucyBleHRlbmRzIEpvYlN0ZXBDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGB1cGxvYWQtYXJ0aWZhY3RgLlxuICAgKi9cbiAgcmVhZG9ubHkgd2l0aDogVXBsb2FkQXJ0aWZhY3RXaXRoO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvd25sb2FkQXJ0aWZhY3RXaXRoIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGFydGlmYWN0IHRvIGRvd25sb2FkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgdW5zcGVjaWZpZWQsIGFsbCBhcnRpZmFjdHMgZm9yIHRoZSBydW4gYXJlIGRvd25sb2FkZWRcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZmlsZSwgZGlyZWN0b3J5IG9yIHdpbGRjYXJkIHBhdHRlcm4gdGhhdCBkZXNjcmliZXMgd2hhdCB0byBkb3dubG9hZC4gU3VwcG9ydHMgYmFzaWMgdGlsZGUgZXhwYW5zaW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtICRHSVRIVUJfV09SS1NQQUNFXG4gICAqL1xuICByZWFkb25seSBwYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGdsb2IgcGF0dGVybiB0byB0aGUgYXJ0aWZhY3RzIHRoYXQgc2hvdWxkIGJlIGRvd25sb2FkZWRcbiAgICogVGhpcyBpcyBpZ25vcmVkIGlmIG5hbWUgaXMgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSBwYXR0ZXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIG11bHRpcGxlIGFydGlmYWN0cyBhcmUgbWF0Y2hlZCwgdGhpcyBjaGFuZ2VzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3JpZXNcbiAgICogSWYgdHJ1ZSwgdGhlIGRvd25sb2FkZWQgYXJ0aWZhY3RzIHdpbGwgYmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHNwZWNpZmllZCBieSBwYXRoXG4gICAqIElmIGZhbHNlLCB0aGUgZG93bmxvYWRlZCBhcnRpZmFjdHMgd2lsbCBiZSBleHRyYWN0ZWQgaW50byBpbmRpdmlkdWFsIG5hbWVkIGRpcmVjdG9yaWVzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHBhdGhcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG1lcmdlTXVsdGlwbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgR2l0SHViIHRva2VuIHVzZWQgdG8gYXV0aGVudGljYXRlIHdpdGggdGhlIEdpdEh1YiBBUEkgdG8gZG93bmxvYWQgYXJ0aWZhY3RzIGZyb20gYSBkaWZmZXJlbnQgcmVwb3NpdG9yeSBvciBmcm9tIGEgZGlmZmVyZW50IHdvcmtmbG93IHJ1blxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIHVuc3BlY2lmaWVkLCB0aGUgYWN0aW9uIHdpbGwgZG93bmxvYWQgYXJ0aWZhY3RzIGZyb20gdGhlIGN1cnJlbnQgcmVwbyBhbmQgdGhlIGN1cnJlbnQgd29ya2Zsb3cgcnVuXG4gICAqL1xuICByZWFkb25seSB0b2tlbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgb3duZXIgYW5kIHRoZSByZXBvc2l0b3J5IG5hbWUgam9pbmVkIHRvZ2V0aGVyIGJ5IFwiL1wiXG4gICAqIElmIGdpdGh1Yi10b2tlbiBpcyBzcGVjaWZpZWQsIHRoaXMgaXMgdGhlIHJlcG9zaXRvcnkgdGhhdCBhcnRpZmFjdHMgd2lsbCBiZSBkb3dubG9hZGVkIGZyb21cbiAgICpcbiAgICogQGRlZmF1bHQgLSAke3sgZ2l0aHViLnJlcG9zaXRvcnkgfX1cbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgd29ya2Zsb3cgcnVuIHdoZXJlIHRoZSBkZXNpcmVkIGRvd25sb2FkIGFydGlmYWN0IHdhcyB1cGxvYWRlZCBmcm9tXG4gICAqIElmIGdpdGh1Yi10b2tlbiBpcyBzcGVjaWZpZWQsIHRoaXMgaXMgdGhlIHJ1biB0aGF0IGFydGlmYWN0cyB3aWxsIGJlIGRvd25sb2FkZWQgZnJvbVxuICAgKlxuICAgKiBAZGVmYXVsdCAtICR7eyBnaXRodWIucnVuX2lkIH19XG4gICAqL1xuICByZWFkb25seSBydW5JZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb3dubG9hZEFydGlmYWN0T3B0aW9ucyBleHRlbmRzIEpvYlN0ZXBDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGBkb3dubG9hZC1hcnRpZmFjdGAuXG4gICAqL1xuICByZWFkb25seSB3aXRoOiBEb3dubG9hZEFydGlmYWN0V2l0aDtcbn1cbiJdfQ==
152
+ WorkflowSteps[_a] = { fqn: "projen.github.WorkflowSteps", version: "0.99.39" };
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctc3RlcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2l0aHViL3dvcmtmbG93LXN0ZXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsMkNBQWlFO0FBRWpFOztHQUVHO0FBQ0gsTUFBYSxhQUFhO0lBQ3hCOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUEyQixFQUFFO1FBQ2xELE1BQU0sWUFBWSxHQUFHLElBQUEsd0NBQStCLEVBQUM7WUFDbkQsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVTtZQUN4QyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLO1lBQzNCLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUc7WUFDdkIsVUFBVSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVTtZQUNyQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJO1lBQ3pCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUM3QyxDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0wsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7Z0JBQ3pCLEdBQUcsT0FBTztnQkFDVixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxVQUFVO2FBQ2pDLENBQUM7WUFDRixJQUFJLEVBQUUscUJBQXFCO1lBQzNCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUztTQUN0RSxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQWdDO1FBQzdE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L0IsVUFBVSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVTtnQkFDckMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhO2dCQUM5QyxjQUFjLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLO2dCQUNwQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLO2FBQy9CLENBQUM7WUFDSixDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsT0FBTztZQUNMLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO2dCQUN6QixHQUFHLE9BQU87Z0JBQ1YsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLElBQUksbUJBQW1CO2FBQzNDLENBQUM7WUFDRixJQUFJLEVBQUUsOEJBQThCO1lBQ3BDLElBQUksRUFBRSxvQkFBb0I7U0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNLLE1BQU0sQ0FBQyxrQkFBa0IsQ0FDL0IsT0FBNkI7UUFFN0IsT0FBTztZQUNMLGVBQWUsRUFBRSxPQUFPLEVBQUUsZUFBZTtZQUN6QyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUc7WUFDakIsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2YsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2YsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJO1lBQ25CLGNBQWMsRUFBRSxPQUFPLEVBQUUsY0FBYztZQUN2QyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCO1NBQzVDLENBQUM7SUFDSixDQUFDOztBQTFKSCxzQ0EySkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEdpdElkZW50aXR5IH0gZnJvbSBcIi4vdGFzay13b3JrZmxvd1wiO1xuaW1wb3J0IHR5cGUgeyBKb2JTdGVwQ29uZmlndXJhdGlvbiwgSm9iU3RlcCB9IGZyb20gXCIuL3dvcmtmbG93cy1tb2RlbFwiO1xuaW1wb3J0IHsgcmVtb3ZlTnVsbE9yVW5kZWZpbmVkUHJvcGVydGllcyB9IGZyb20gXCIuLi91dGlsL29iamVjdFwiO1xuXG4vKipcbiAqIEEgY29sbGVjdGlvbiBvZiB2ZXJ5IGNvbW1vbmx5IHVzZWQsIGluZGl2aWR1YWwsIEdpdEh1YiBXb3JrZmxvdyBKb2Igc3RlcHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1N0ZXBzIHtcbiAgLyoqXG4gICAqIENoZWNrcyBvdXQgYSByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgYGNoZWNrb3V0YCBKb2JTdGVwXG4gICAqIEByZXR1cm5zIEEgSm9iU3RlcCB0aGF0IGNoZWNrcyBvdXQgYSByZXBvc2l0b3J5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNoZWNrb3V0KG9wdGlvbnM6IENoZWNrb3V0T3B0aW9ucyA9IHt9KTogSm9iU3RlcCB7XG4gICAgY29uc3QgY2hlY2tvdXRXaXRoID0gcmVtb3ZlTnVsbE9yVW5kZWZpbmVkUHJvcGVydGllcyh7XG4gICAgICBcImZldGNoLWRlcHRoXCI6IG9wdGlvbnM/LndpdGg/LmZldGNoRGVwdGgsXG4gICAgICB0b2tlbjogb3B0aW9ucz8ud2l0aD8udG9rZW4sXG4gICAgICByZWY6IG9wdGlvbnM/LndpdGg/LnJlZixcbiAgICAgIHJlcG9zaXRvcnk6IG9wdGlvbnM/LndpdGg/LnJlcG9zaXRvcnksXG4gICAgICBwYXRoOiBvcHRpb25zPy53aXRoPy5wYXRoLFxuICAgICAgLi4uKG9wdGlvbnM/LndpdGg/LmxmcyA/IHsgbGZzOiB0cnVlIH0gOiB7fSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5idWlsZEpvYlN0ZXBDb25maWcoe1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUgPz8gXCJDaGVja291dFwiLFxuICAgICAgfSksXG4gICAgICB1c2VzOiBcImFjdGlvbnMvY2hlY2tvdXRAdjZcIixcbiAgICAgIHdpdGg6IE9iamVjdC5rZXlzKGNoZWNrb3V0V2l0aCkubGVuZ3RoID4gMCA/IGNoZWNrb3V0V2l0aCA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgdGhlIGdpdCBpZGVudGl0eSAodXNlciBuYW1lIGFuZCBlbWFpbCkuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBnaXQgaWRlbnRpdHkgSm9iU3RlcFxuICAgKiBAcmV0dXJucyBKb2Igc3RlcCB0aGF0IGNvbmZpZ3VyZXMgdGhlIHByb3ZpZGVkIGdpdCBpZGVudGl0eVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzZXR1cEdpdElkZW50aXR5KG9wdGlvbnM6IFNldHVwR2l0SWRlbnRpdHlPcHRpb25zKTogSm9iU3RlcCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuYnVpbGRKb2JTdGVwQ29uZmlnKHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lID8/IFwiU2V0IGdpdCBpZGVudGl0eVwiLFxuICAgICAgfSksXG4gICAgICBydW46IFtcbiAgICAgICAgYGdpdCBjb25maWcgdXNlci5uYW1lIFwiJHtvcHRpb25zLmdpdElkZW50aXR5Lm5hbWV9XCJgLFxuICAgICAgICBgZ2l0IGNvbmZpZyB1c2VyLmVtYWlsIFwiJHtvcHRpb25zLmdpdElkZW50aXR5LmVtYWlsfVwiYCxcbiAgICAgIF0uam9pbihcIlxcblwiKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHRhZyBleGlzdHMuXG4gICAqXG4gICAqIFJlcXVpcmVzIGEgY2hlY2tvdXQgc3RlcCB0byBoYXZlIGJlZW4gcnVuIGJlZm9yZSB0aGlzIHN0ZXAgd2l0aCBcImZldGNoLWRlcHRoXCIgc2V0IHRvIFwiMFwiLlxuICAgKlxuICAgKiBPdXRwdXRzOlxuICAgKiAtIGBleGlzdHNgOiBBIHN0cmluZyB2YWx1ZSBvZiAndHJ1ZScgb3IgJ2ZhbHNlJyBpbmRpY2F0aW5nIGlmIHRoZSB0YWcgZXhpc3RzLlxuICAgKlxuICAgKiBAcGFyYW0gdGFnIFRoZSB0YWcgdG8gY2hlY2suIFlvdSBtYXkgdXNlIHZhbGlkIGJhc2ggY29kZSBpbnN0ZWFkIG9mIGEgbGl0ZXJhbCBzdHJpbmcgaW4gdGhpcyBmaWVsZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGB0YWctZXhpc3RzYCBKb2JTdGVwXG4gICAqIEByZXR1cm5zIEpvYiBzdGVwIHRoYXQgY2hlY2tzIGlmIHRoZSBwcm92aWRlZCB0YWcgZXhpc3RzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHRhZ0V4aXN0cyh0YWc6IHN0cmluZywgb3B0aW9uczogSm9iU3RlcENvbmZpZ3VyYXRpb24pOiBKb2JTdGVwIHtcbiAgICBjb25zdCBjaGVja1RhZyA9IChyZW1vdGVUYWc6IHN0cmluZykgPT5cbiAgICAgIGBnaXQgbHMtcmVtb3RlIC1xIC0tZXhpdC1jb2RlIC0tdGFncyBvcmlnaW4gJHtyZW1vdGVUYWd9YDtcbiAgICBjb25zdCB2YXJJc1NldCA9ICh2YXJpYWJsZTogc3RyaW5nKSA9PiBgWyAhIC16IFwiJCR7dmFyaWFibGV9XCIgXWA7XG4gICAgY29uc3Qgc2V0T3V0cHV0ID0gKHZhbHVlOiBib29sZWFuKSA9PlxuICAgICAgYChlY2hvIFwiZXhpc3RzPSR7dmFsdWUgPyBcInRydWVcIiA6IFwiZmFsc2VcIn1cIiA+PiAkR0lUSFVCX09VVFBVVClgO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuYnVpbGRKb2JTdGVwQ29uZmlnKHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lID8/IFwiQ2hlY2sgaWYgdGFnIGV4aXN0c1wiLFxuICAgICAgICBpZDogb3B0aW9ucy5pZCA/PyBcImNoZWNrLXRhZ1wiLFxuICAgICAgICBzaGVsbDogXCJiYXNoXCIsXG4gICAgICB9KSxcbiAgICAgIHJ1bjogW1xuICAgICAgICBgVEFHPSR7dGFnfWAsXG4gICAgICAgIGAoJHt2YXJJc1NldChcIlRBR1wiKX0gJiYgJHtjaGVja1RhZyhcIiRUQUdcIil9ICYmICR7c2V0T3V0cHV0KFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICl9KSB8fCAke3NldE91dHB1dChmYWxzZSl9YCxcbiAgICAgICAgXCJjYXQgJEdJVEhVQl9PVVRQVVRcIixcbiAgICAgIF0uam9pbihcIlxcblwiKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFVwbG9hZHMgYW4gYXJ0aWZhY3QuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBgdXBsb2FkLWFydGlmYWN0YCBKb2JTdGVwXG4gICAqIEByZXR1cm5zIEEgSm9iU3RlcCB0aGF0IHVwbG9hZHMgYW4gYXJ0aWZhY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXBsb2FkQXJ0aWZhY3Qob3B0aW9uczogVXBsb2FkQXJ0aWZhY3RPcHRpb25zKTogSm9iU3RlcCB7XG4gICAgY29uc3QgdXBsb2FkQXJ0aWZhY3RXaXRoOiBVcGxvYWRBcnRpZmFjdFdpdGggPVxuICAgICAgcmVtb3ZlTnVsbE9yVW5kZWZpbmVkUHJvcGVydGllcyh7XG4gICAgICAgIG5hbWU6IG9wdGlvbnM/LndpdGg/Lm5hbWUsXG4gICAgICAgIHBhdGg6IG9wdGlvbnM/LndpdGg/LnBhdGgsXG4gICAgICAgIG92ZXJ3cml0ZTogb3B0aW9ucz8ud2l0aD8ub3ZlcndyaXRlID8/IHRydWUsXG4gICAgICAgIFwiaWYtbm8tZmlsZXMtZm91bmRcIjogb3B0aW9ucz8ud2l0aD8uaWZOb0ZpbGVzRm91bmQsXG4gICAgICAgIFwicmV0ZW50aW9uLWRheXNcIjogb3B0aW9ucz8ud2l0aD8ucmV0ZW50aW9uRGF5cyxcbiAgICAgICAgXCJjb21wcmVzc2lvbi1sZXZlbFwiOiBvcHRpb25zPy53aXRoPy5jb21wcmVzc2lvbkxldmVsLFxuICAgICAgICBcImluY2x1ZGUtaGlkZGVuLWZpbGVzXCI6IG9wdGlvbnM/LndpdGg/LmluY2x1ZGVIaWRkZW5GaWxlcyxcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuYnVpbGRKb2JTdGVwQ29uZmlnKHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lID8/IFwiVXBsb2FkIGFydGlmYWN0XCIsXG4gICAgICB9KSxcbiAgICAgIHVzZXM6IFwiYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3RAdjdcIixcbiAgICAgIHdpdGg6IHVwbG9hZEFydGlmYWN0V2l0aCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERvd25sb2FkcyBhbiBhcnRpZmFjdC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGBkb3dubG9hZC1hcnRpZmFjdGAgSm9iU3RlcFxuICAgKiBAcmV0dXJucyBBIEpvYlN0ZXAgdGhhdCBkb3dubG9hZHMgYW4gYXJ0aWZhY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZG93bmxvYWRBcnRpZmFjdChvcHRpb25zPzogRG93bmxvYWRBcnRpZmFjdE9wdGlvbnMpOiBKb2JTdGVwIHtcbiAgICBjb25zdCBkb3dubG9hZEFydGlmYWN0V2l0aDogRG93bmxvYWRBcnRpZmFjdFdpdGggfCB1bmRlZmluZWQgPSBvcHRpb25zPy53aXRoXG4gICAgICA/IHJlbW92ZU51bGxPclVuZGVmaW5lZFByb3BlcnRpZXMoe1xuICAgICAgICAgIG5hbWU6IG9wdGlvbnM/LndpdGg/Lm5hbWUsXG4gICAgICAgICAgcGF0aDogb3B0aW9ucz8ud2l0aD8ucGF0aCxcbiAgICAgICAgICBwYXR0ZXJuOiBvcHRpb25zPy53aXRoPy5wYXR0ZXJuLFxuICAgICAgICAgIHJlcG9zaXRvcnk6IG9wdGlvbnM/LndpdGg/LnJlcG9zaXRvcnksXG4gICAgICAgICAgXCJtZXJnZS1tdWx0aXBsZVwiOiBvcHRpb25zPy53aXRoPy5tZXJnZU11bHRpcGxlLFxuICAgICAgICAgIFwiZ2l0aHViLXRva2VuXCI6IG9wdGlvbnM/LndpdGg/LnRva2VuLFxuICAgICAgICAgIFwicnVuLWlkXCI6IG9wdGlvbnM/LndpdGg/LnJ1bklkLFxuICAgICAgICB9KVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5idWlsZEpvYlN0ZXBDb25maWcoe1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBuYW1lOiBvcHRpb25zPy5uYW1lID8/IFwiRG93bmxvYWQgYXJ0aWZhY3RcIixcbiAgICAgIH0pLFxuICAgICAgdXNlczogXCJhY3Rpb25zL2Rvd25sb2FkLWFydGlmYWN0QHY4XCIsXG4gICAgICB3aXRoOiBkb3dubG9hZEFydGlmYWN0V2l0aCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNpbXBsZSBhZGFwdGVyIHRvIGVuc3VyZSB3ZSBvbmx5IGluY2x1ZGUgdGhlIG5lY2Vzc2FyeSBmaWVsZHMgZm9yIGEgSm9iU3RlcENvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBidWlsZEpvYlN0ZXBDb25maWcoXG4gICAgb3B0aW9uczogSm9iU3RlcENvbmZpZ3VyYXRpb24sXG4gICk6IEpvYlN0ZXBDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGludWVPbkVycm9yOiBvcHRpb25zPy5jb250aW51ZU9uRXJyb3IsXG4gICAgICBlbnY6IG9wdGlvbnM/LmVudixcbiAgICAgIGlkOiBvcHRpb25zPy5pZCxcbiAgICAgIGlmOiBvcHRpb25zPy5pZixcbiAgICAgIG5hbWU6IG9wdGlvbnM/Lm5hbWUsXG4gICAgICB0aW1lb3V0TWludXRlczogb3B0aW9ucz8udGltZW91dE1pbnV0ZXMsXG4gICAgICB3b3JraW5nRGlyZWN0b3J5OiBvcHRpb25zPy53b3JraW5nRGlyZWN0b3J5LFxuICAgIH07XG4gIH1cbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tvdXRPcHRpb25zIGV4dGVuZHMgSm9iU3RlcENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgYGNoZWNrb3V0YC5cbiAgICovXG4gIHJlYWRvbmx5IHdpdGg/OiBDaGVja291dFdpdGg7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYGNoZWNrb3V0YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGVja291dFdpdGgge1xuICAvKipcbiAgICogTnVtYmVyIG9mIGNvbW1pdHMgdG8gZmV0Y2guIDAgaW5kaWNhdGVzIGFsbCBoaXN0b3J5IGZvciBhbGwgYnJhbmNoZXMgYW5kIHRhZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IGZldGNoRGVwdGg/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaGV0aGVyIExGUyBpcyBlbmFibGVkIGZvciB0aGUgR2l0SHViIHJlcG9zaXRvcnlcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGxmcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEJyYW5jaCBvciB0YWcgbmFtZS5cbiAgICogQGRlZmF1bHQgLSB0aGUgZGVmYXVsdCBicmFuY2ggaXMgaW1wbGljaXRseSB1c2VkXG4gICAqL1xuICByZWFkb25seSByZWY/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IChvd25lci9yZXBvKSB0byB1c2UuXG4gICAqIEBkZWZhdWx0IC0gdGhlIGRlZmF1bHQgcmVwb3NpdG9yeSBpcyBpbXBsaWNpdGx5IHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgR2l0SHViIHRva2VuIHRvIHVzZSB3aGVuIGNoZWNraW5nIG91dCB0aGUgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogSWYgdGhlIGludGVudCBpcyB0byBwdXNoIGNoYW5nZXMgYmFjayB0byB0aGUgYnJhbmNoLCB0aGVuIHlvdSBtdXN0IHVzZSBhXG4gICAqIFBBVCB3aXRoIGByZXBvYCAoYW5kIHBvc3NpYmx5IGB3b3JrZmxvd3NgKSBwZXJtaXNzaW9ucy5cbiAgICogQGRlZmF1bHQgLSB0aGUgZGVmYXVsdCBHSVRIVUJfVE9LRU4gaXMgaW1wbGljaXRseSB1c2VkXG4gICAqL1xuICByZWFkb25seSB0b2tlbj86IHN0cmluZztcblxuICAvKipcbiAgICogUmVsYXRpdmUgcGF0aCB1bmRlciAkR0lUSFVCX1dPUktTUEFDRSB0byBwbGFjZSB0aGUgcmVwb3NpdG9yeVxuICAgKiBAZGVmYXVsdCAtICRHSVRIVUJfV09SS1NQQUNFXG4gICAqL1xuICByZWFkb25seSBwYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldHVwR2l0SWRlbnRpdHlPcHRpb25zIGV4dGVuZHMgSm9iU3RlcENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIGlkZW50aXR5IHRvIHVzZS5cbiAgICovXG4gIHJlYWRvbmx5IGdpdElkZW50aXR5OiBHaXRJZGVudGl0eTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRBcnRpZmFjdFdpdGgge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgYXJ0aWZhY3QgdG8gdXBsb2FkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImFydGlmYWN0XCJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZmlsZSwgZGlyZWN0b3J5IG9yIHdpbGRjYXJkIHBhdHRlcm4gdGhhdCBkZXNjcmliZXMgd2hhdCB0byB1cGxvYWRcbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc2lyZWQgYmVoYXZpb3IgaWYgbm8gZmlsZXMgYXJlIGZvdW5kIHVzaW5nIHRoZSBwcm92aWRlZCBwYXRoLlxuICAgKiBBdmFpbGFibGUgT3B0aW9uczpcbiAgICogICB3YXJuOiBPdXRwdXQgYSB3YXJuaW5nIGJ1dCBkbyBub3QgZmFpbCB0aGUgYWN0aW9uXG4gICAqICAgZXJyb3I6IEZhaWwgdGhlIGFjdGlvbiB3aXRoIGFuIGVycm9yIG1lc3NhZ2VcbiAgICogICBpZ25vcmU6IERvIG5vdCBvdXRwdXQgYW55IHdhcm5pbmdzIG9yIGVycm9ycywgdGhlIGFjdGlvbiBkb2VzIG5vdCBmYWlsXG4gICAqXG4gICAqIEBkZWZhdWx0IFwid2FyblwiXG4gICAqL1xuICByZWFkb25seSBpZk5vRmlsZXNGb3VuZD86IFwiZXJyb3JcIiB8IFwid2FyblwiIHwgXCJpZ25vcmVcIjtcblxuICAvKipcbiAgICogRHVyYXRpb24gYWZ0ZXIgd2hpY2ggYXJ0aWZhY3Qgd2lsbCBleHBpcmUgaW4gZGF5cy4gMCBtZWFucyB1c2luZyBkZWZhdWx0IHJlcG9zaXRvcnkgcmV0ZW50aW9uLlxuICAgKlxuICAgKiBNaW5pbXVtIDEgZGF5LlxuICAgKiBNYXhpbXVtIDkwIGRheXMgdW5sZXNzIGNoYW5nZWQgZnJvbSB0aGUgcmVwb3NpdG9yeSBzZXR0aW5ncyBwYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBkZWZhdWx0IHJlcG9zaXRvcnkgcmV0ZW50aW9uXG4gICAqL1xuICByZWFkb25seSByZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbGV2ZWwgb2YgY29tcHJlc3Npb24gZm9yIFpsaWIgdG8gYmUgYXBwbGllZCB0byB0aGUgYXJ0aWZhY3QgYXJjaGl2ZS5cbiAgICpcbiAgICogVGhlIHZhbHVlIGNhbiByYW5nZSBmcm9tIDAgdG8gOS5cbiAgICogRm9yIGxhcmdlIGZpbGVzIHRoYXQgYXJlIG5vdCBlYXNpbHkgY29tcHJlc3NlZCwgYSB2YWx1ZSBvZiAwIGlzIHJlY29tbWVuZGVkIGZvciBzaWduaWZpY2FudGx5IGZhc3RlciB1cGxvYWRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCA2XG4gICAqL1xuICByZWFkb25seSBjb21wcmVzc2lvbkxldmVsPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGFjdGlvbiBzaG91bGQgb3ZlcndyaXRlIGFuIGV4aXN0aW5nIGFydGlmYWN0IHdpdGggdGhlIHNhbWUgbmFtZSAoc2hvdWxkIG9uZSBleGlzdClcbiAgICpcbiAgICogSW50cm9kdWNlZCBpbiB2NCBhbmQgcmVwcmVzZW50cyBhIGJyZWFraW5nIGNoYW5nZSBmcm9tIHRoZSBiZWhhdmlvciBvZiB0aGUgdjMgYWN0aW9uLlxuICAgKiBUbyBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nLCB0aGlzIHNob3VsZCBiZSBzZXQgdGhlIGB0cnVlYCAodGhlIGRlZmF1bHQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBvdmVyd3JpdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgaGlkZGVuIGZpbGVzIGluIHRoZSBwcm92aWRlZCBwYXRoIGluIHRoZSBhcnRpZmFjdFxuICAgKlxuICAgKiBUaGUgZmlsZSBjb250ZW50cyBvZiBhbnkgaGlkZGVuIGZpbGVzIGluIHRoZSBwYXRoIHNob3VsZCBiZSB2YWxpZGF0ZWQgYmVmb3JlIGVuYWJsZWQgdGhpcyB0byBhdm9pZCB1cGxvYWRpbmcgc2Vuc2l0aXZlIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZUhpZGRlbkZpbGVzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRBcnRpZmFjdE9wdGlvbnMgZXh0ZW5kcyBKb2JTdGVwQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBgdXBsb2FkLWFydGlmYWN0YC5cbiAgICovXG4gIHJlYWRvbmx5IHdpdGg6IFVwbG9hZEFydGlmYWN0V2l0aDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb3dubG9hZEFydGlmYWN0V2l0aCB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBhcnRpZmFjdCB0byBkb3dubG9hZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElmIHVuc3BlY2lmaWVkLCBhbGwgYXJ0aWZhY3RzIGZvciB0aGUgcnVuIGFyZSBkb3dubG9hZGVkXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGZpbGUsIGRpcmVjdG9yeSBvciB3aWxkY2FyZCBwYXR0ZXJuIHRoYXQgZGVzY3JpYmVzIHdoYXQgdG8gZG93bmxvYWQuIFN1cHBvcnRzIGJhc2ljIHRpbGRlIGV4cGFuc2lvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAkR0lUSFVCX1dPUktTUEFDRVxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogQSBnbG9iIHBhdHRlcm4gdG8gdGhlIGFydGlmYWN0cyB0aGF0IHNob3VsZCBiZSBkb3dubG9hZGVkXG4gICAqIFRoaXMgaXMgaWdub3JlZCBpZiBuYW1lIGlzIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0dGVybj86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiBtdWx0aXBsZSBhcnRpZmFjdHMgYXJlIG1hdGNoZWQsIHRoaXMgY2hhbmdlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yaWVzXG4gICAqIElmIHRydWUsIHRoZSBkb3dubG9hZGVkIGFydGlmYWN0cyB3aWxsIGJlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBzcGVjaWZpZWQgYnkgcGF0aFxuICAgKiBJZiBmYWxzZSwgdGhlIGRvd25sb2FkZWQgYXJ0aWZhY3RzIHdpbGwgYmUgZXh0cmFjdGVkIGludG8gaW5kaXZpZHVhbCBuYW1lZCBkaXJlY3RvcmllcyB3aXRoaW4gdGhlIHNwZWNpZmllZCBwYXRoXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBtZXJnZU11bHRpcGxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIEdpdEh1YiB0b2tlbiB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB3aXRoIHRoZSBHaXRIdWIgQVBJIHRvIGRvd25sb2FkIGFydGlmYWN0cyBmcm9tIGEgZGlmZmVyZW50IHJlcG9zaXRvcnkgb3IgZnJvbSBhIGRpZmZlcmVudCB3b3JrZmxvdyBydW5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiB1bnNwZWNpZmllZCwgdGhlIGFjdGlvbiB3aWxsIGRvd25sb2FkIGFydGlmYWN0cyBmcm9tIHRoZSBjdXJyZW50IHJlcG8gYW5kIHRoZSBjdXJyZW50IHdvcmtmbG93IHJ1blxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IG93bmVyIGFuZCB0aGUgcmVwb3NpdG9yeSBuYW1lIGpvaW5lZCB0b2dldGhlciBieSBcIi9cIlxuICAgKiBJZiBnaXRodWItdG9rZW4gaXMgc3BlY2lmaWVkLCB0aGlzIGlzIHRoZSByZXBvc2l0b3J5IHRoYXQgYXJ0aWZhY3RzIHdpbGwgYmUgZG93bmxvYWRlZCBmcm9tXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gJHt7IGdpdGh1Yi5yZXBvc2l0b3J5IH19XG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIHdvcmtmbG93IHJ1biB3aGVyZSB0aGUgZGVzaXJlZCBkb3dubG9hZCBhcnRpZmFjdCB3YXMgdXBsb2FkZWQgZnJvbVxuICAgKiBJZiBnaXRodWItdG9rZW4gaXMgc3BlY2lmaWVkLCB0aGlzIGlzIHRoZSBydW4gdGhhdCBhcnRpZmFjdHMgd2lsbCBiZSBkb3dubG9hZGVkIGZyb21cbiAgICpcbiAgICogQGRlZmF1bHQgLSAke3sgZ2l0aHViLnJ1bl9pZCB9fVxuICAgKi9cbiAgcmVhZG9ubHkgcnVuSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG93bmxvYWRBcnRpZmFjdE9wdGlvbnMgZXh0ZW5kcyBKb2JTdGVwQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBgZG93bmxvYWQtYXJ0aWZhY3RgLlxuICAgKi9cbiAgcmVhZG9ubHkgd2l0aDogRG93bmxvYWRBcnRpZmFjdFdpdGg7XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { GroupRunnerOptions } from "../runner-options";
1
+ import type { GroupRunnerOptions } from "../runner-options";
2
2
  export interface CommonJobDefinition {
3
3
  /**
4
4
  * The name of the job displayed on GitHub.
@@ -31,4 +31,4 @@ var AppPermission;
31
31
  AppPermission["ADMIN"] = "admin";
32
32
  })(AppPermission || (exports.AppPermission = AppPermission = {}));
33
33
  //#endregion
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3dzLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHVGQUF1Rjs7O0FBNFR2Rjs7R0FFRztBQUNILElBQVksYUFTWDtBQVRELFdBQVksYUFBYTtJQUN2Qix1QkFBdUI7SUFDdkIsOEJBQWEsQ0FBQTtJQUViLHdCQUF3QjtJQUN4QixnQ0FBZSxDQUFBO0lBRWYsdUJBQXVCO0lBQ3ZCLDhCQUFhLENBQUE7QUFDZixDQUFDLEVBVFcsYUFBYSw2QkFBYixhQUFhLFFBU3hCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLGFBV1g7QUFYRCxXQUFZLGFBQWE7SUFDdkIsd0JBQXdCO0lBQ3hCLDhCQUFhLENBQUE7SUFDYix3QkFBd0I7SUFDeEIsZ0NBQWUsQ0FBQTtJQUNmOzs7O09BSUc7SUFDSCxnQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFYVyxhQUFhLDZCQUFiLGFBQWEsUUFXeEI7QUFrOEJELFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvcmVmZXJlbmNlL3dvcmtmbG93LXN5bnRheC1mb3ItZ2l0aHViLWFjdGlvbnNcblxuaW1wb3J0IHsgR3JvdXBSdW5uZXJPcHRpb25zIH0gZnJvbSBcIi4uL3J1bm5lci1vcHRpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uSm9iRGVmaW5pdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgam9iIGRpc3BsYXllZCBvbiBHaXRIdWIuXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIGFueSBqb2JzIHRoYXQgbXVzdCBjb21wbGV0ZSBzdWNjZXNzZnVsbHkgYmVmb3JlIHRoaXMgam9iIHdpbGxcbiAgICogcnVuLiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5ncy4gSWYgYSBqb2IgZmFpbHMsIGFsbCBqb2JzXG4gICAqIHRoYXQgbmVlZCBpdCBhcmUgc2tpcHBlZCB1bmxlc3MgdGhlIGpvYnMgdXNlIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvblxuICAgKiB0aGF0IGNhdXNlcyB0aGUgam9iIHRvIGNvbnRpbnVlLlxuICAgKi9cbiAgcmVhZG9ubHkgbmVlZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogWW91IGNhbiBtb2RpZnkgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZ3JhbnRlZCB0byB0aGUgR0lUSFVCX1RPS0VOLCBhZGRpbmdcbiAgICogb3IgcmVtb3ZpbmcgYWNjZXNzIGFzIHJlcXVpcmVkLCBzbyB0aGF0IHlvdSBvbmx5IGFsbG93IHRoZSBtaW5pbXVtIHJlcXVpcmVkXG4gICAqIGFjY2Vzcy5cbiAgICpcbiAgICogVXNlIGB7IGNvbnRlbnRzOiBSRUFEIH1gIGlmIHlvdXIgam9iIG9ubHkgbmVlZHMgdG8gY2xvbmUgY29kZS5cbiAgICpcbiAgICogVGhpcyBpcyBpbnRlbnRpb25hbGx5IGEgcmVxdWlyZWQgZmllbGQgc2luY2UgaXQgaXMgcmVxdWlyZWQgaW4gb3JkZXIgdG9cbiAgICogYWxsb3cgd29ya2Zsb3dzIHRvIHJ1biBpbiBHaXRIdWIgcmVwb3NpdG9yaWVzIHdpdGggcmVzdHJpY3RlZCBkZWZhdWx0XG4gICAqIGFjY2Vzcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3JlZmVyZW5jZS9hdXRoZW50aWNhdGlvbi1pbi1hLXdvcmtmbG93I3Blcm1pc3Npb25zLWZvci10aGUtZ2l0aHViX3Rva2VuXG4gICAqL1xuICByZWFkb25seSBwZXJtaXNzaW9uczogSm9iUGVybWlzc2lvbnM7XG5cbiAgLyoqXG4gICAqIENvbmN1cnJlbmN5IGVuc3VyZXMgdGhhdCBvbmx5IGEgc2luZ2xlIGpvYiBvciB3b3JrZmxvdyB1c2luZyB0aGUgc2FtZVxuICAgKiBjb25jdXJyZW5jeSBncm91cCB3aWxsIHJ1biBhdCBhIHRpbWUuIEEgY29uY3VycmVuY3kgZ3JvdXAgY2FuIGJlIGFueVxuICAgKiBzdHJpbmcgb3IgZXhwcmVzc2lvbi4gVGhlIGV4cHJlc3Npb24gY2FuIHVzZSBhbnkgY29udGV4dCBleGNlcHQgZm9yIHRoZVxuICAgKiBzZWNyZXRzIGNvbnRleHQuXG4gICAqXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGNvbmN1cnJlbmN5PzogdW5rbm93bjtcblxuICAvKipcbiAgICogWW91IGNhbiB1c2UgdGhlIGlmIGNvbmRpdGlvbmFsIHRvIHByZXZlbnQgYSBqb2IgZnJvbSBydW5uaW5nIHVubGVzcyBhXG4gICAqIGNvbmRpdGlvbiBpcyBtZXQuIFlvdSBjYW4gdXNlIGFueSBzdXBwb3J0ZWQgY29udGV4dCBhbmQgZXhwcmVzc2lvbiB0b1xuICAgKiBjcmVhdGUgYSBjb25kaXRpb25hbC5cbiAgICovXG4gIHJlYWRvbmx5IGlmPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0cmF0ZWd5IGNyZWF0ZXMgYSBidWlsZCBtYXRyaXggZm9yIHlvdXIgam9icy4gWW91IGNhbiBkZWZpbmUgZGlmZmVyZW50XG4gICAqIHZhcmlhdGlvbnMgdG8gcnVuIGVhY2ggam9iIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RyYXRlZ3k/OiBKb2JTdHJhdGVneTtcbn1cblxuLyoqXG4gKiBBIEdpdEh1YiBXb3JrZmxvdyBKb2IgY2FsbGluZyBhIHJldXNhYmxlIHdvcmtmbG93XG4gKlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvYkNhbGxpbmdSZXVzYWJsZVdvcmtmbG93IGV4dGVuZHMgQ29tbW9uSm9iRGVmaW5pdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gYW5kIHZlcnNpb24gb2YgYSByZXVzYWJsZSB3b3JrZmxvdyBmaWxlIHRvIHJ1biBhcyBhIGpvYi5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXM6IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiBhIGpvYiBpcyB1c2VkIHRvIGNhbGwgYSByZXVzYWJsZSB3b3JrZmxvdywgeW91IGNhbiB1c2Ugd2l0aCB0b1xuICAgKiBwcm92aWRlIGEgbWFwIG9mIGlucHV0cyB0aGF0IGFyZSBwYXNzZWQgdG8gdGhlIGNhbGxlZCB3b3JrZmxvdy5cbiAgICpcbiAgICogQWxsb3dlZCBleHByZXNzaW9uIGNvbnRleHRzOiBgZ2l0aHViYCwgYW5kIGBuZWVkc2AuXG4gICAqL1xuICByZWFkb25seSB3aXRoPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgYm9vbGVhbj47XG5cbiAgLyoqXG4gICAqIFdoZW4gYSBqb2IgaXMgdXNlZCB0byBjYWxsIGEgcmV1c2FibGUgd29ya2Zsb3csIHlvdSBjYW4gdXNlIHNlY3JldHMgdG9cbiAgICogcHJvdmlkZSBhIG1hcCBvZiBzZWNyZXRzIHRoYXQgYXJlIHBhc3NlZCB0byB0aGUgY2FsbGVkIHdvcmtmbG93LlxuICAgKlxuICAgKiBVc2UgdGhlICdpbmhlcml0JyBrZXl3b3JkIHRvIHBhc3MgYWxsIHRoZSBjYWxsaW5nIHdvcmtmbG93J3Mgc2VjcmV0cyB0byB0aGUgY2FsbGVkIHdvcmtmbG93XG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzPzogc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBBIEdpdEh1YiBXb3JrZmxvdyBqb2IgZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKb2IgZXh0ZW5kcyBDb21tb25Kb2JEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIG1hY2hpbmUgdG8gcnVuIHRoZSBqb2Igb24uIFRoZSBtYWNoaW5lIGNhbiBiZSBlaXRoZXIgYVxuICAgKiBHaXRIdWItaG9zdGVkIHJ1bm5lciBvciBhIHNlbGYtaG9zdGVkIHJ1bm5lci5cbiAgICpcbiAgICogQGV4YW1wbGUgW1widWJ1bnR1LWxhdGVzdFwiXVxuICAgKi9cbiAgcmVhZG9ubHkgcnVuc09uPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEdpdGh1YiBSdW5uZXIgR3JvdXAgc2VsZWN0aW9uIG9wdGlvbnNcbiAgICogQGRlc2NyaXB0aW9uIERlZmluZXMgYSB0YXJnZXQgUnVubmVyIEdyb3VwIGJ5IG5hbWUgYW5kL29yIGxhYmVsc1xuICAgKiBAdGhyb3dzIHtFcnJvcn0gaWYgYm90aCBgcnVuc09uYCBhbmQgYHJ1bnNPbkdyb3VwYCBhcmUgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSBydW5zT25Hcm91cD86IEdyb3VwUnVubmVyT3B0aW9ucztcblxuICAvKipcbiAgICogQSBqb2IgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiB0YXNrcyBjYWxsZWQgc3RlcHMuIFN0ZXBzIGNhbiBydW4gY29tbWFuZHMsXG4gICAqIHJ1biBzZXR1cCB0YXNrcywgb3IgcnVuIGFuIGFjdGlvbiBpbiB5b3VyIHJlcG9zaXRvcnksIGEgcHVibGljIHJlcG9zaXRvcnksXG4gICAqIG9yIGFuIGFjdGlvbiBwdWJsaXNoZWQgaW4gYSBEb2NrZXIgcmVnaXN0cnkuIE5vdCBhbGwgc3RlcHMgcnVuIGFjdGlvbnMsXG4gICAqIGJ1dCBhbGwgYWN0aW9ucyBydW4gYXMgYSBzdGVwLiBFYWNoIHN0ZXAgcnVucyBpbiBpdHMgb3duIHByb2Nlc3MgaW4gdGhlXG4gICAqIHJ1bm5lciBlbnZpcm9ubWVudCBhbmQgaGFzIGFjY2VzcyB0byB0aGUgd29ya3NwYWNlIGFuZCBmaWxlc3lzdGVtLlxuICAgKiBCZWNhdXNlIHN0ZXBzIHJ1biBpbiB0aGVpciBvd24gcHJvY2VzcywgY2hhbmdlcyB0byBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICogYXJlIG5vdCBwcmVzZXJ2ZWQgYmV0d2VlbiBzdGVwcy4gR2l0SHViIHByb3ZpZGVzIGJ1aWx0LWluIHN0ZXBzIHRvIHNldCB1cFxuICAgKiBhbmQgY29tcGxldGUgYSBqb2IuXG4gICAqL1xuICByZWFkb25seSBzdGVwczogSm9iU3RlcFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgdGhhdCB0aGUgam9iIHJlZmVyZW5jZXMuIEFsbCBlbnZpcm9ubWVudCBwcm90ZWN0aW9uIHJ1bGVzXG4gICAqIG11c3QgcGFzcyBiZWZvcmUgYSBqb2IgcmVmZXJlbmNpbmcgdGhlIGVudmlyb25tZW50IGlzIHNlbnQgdG8gYSBydW5uZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy9yZWZlcmVuY2UvZW52aXJvbm1lbnRzXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IHVua25vd247XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIG91dHB1dHMgZm9yIGEgam9iLiBKb2Igb3V0cHV0cyBhcmUgYXZhaWxhYmxlIHRvIGFsbCBkb3duc3RyZWFtXG4gICAqIGpvYnMgdGhhdCBkZXBlbmQgb24gdGhpcyBqb2IuXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRzPzogUmVjb3JkPHN0cmluZywgSm9iU3RlcE91dHB1dD47XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSBhdmFpbGFibGUgdG8gYWxsIHN0ZXBzIGluIHRoZVxuICAgKiBqb2IuIFlvdSBjYW4gYWxzbyBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgZW50aXJlIHdvcmtmbG93IG9yIGFuXG4gICAqIGluZGl2aWR1YWwgc3RlcC5cbiAgICovXG4gIHJlYWRvbmx5IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCB3aWxsIGFwcGx5IHRvIGFsbCBzdGVwcyBpbiB0aGUgam9iLiBZb3VcbiAgICogY2FuIGFsc28gc2V0IGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBlbnRpcmUgd29ya2Zsb3cuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0cz86IEpvYkRlZmF1bHRzO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgbWludXRlcyB0byBsZXQgYSBqb2IgcnVuIGJlZm9yZSBHaXRIdWJcbiAgICogYXV0b21hdGljYWxseSBjYW5jZWxzIGl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAzNjBcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRNaW51dGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBQcmV2ZW50cyBhIHdvcmtmbG93IHJ1biBmcm9tIGZhaWxpbmcgd2hlbiBhIGpvYiBmYWlscy4gU2V0IHRvIHRydWUgdG9cbiAgICogYWxsb3cgYSB3b3JrZmxvdyBydW4gdG8gcGFzcyB3aGVuIHRoaXMgam9iIGZhaWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGludWVPbkVycm9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBjb250YWluZXIgdG8gcnVuIGFueSBzdGVwcyBpbiBhIGpvYiB0aGF0IGRvbid0IGFscmVhZHkgc3BlY2lmeSBhXG4gICAqIGNvbnRhaW5lci4gSWYgeW91IGhhdmUgc3RlcHMgdGhhdCB1c2UgYm90aCBzY3JpcHQgYW5kIGNvbnRhaW5lciBhY3Rpb25zLFxuICAgKiB0aGUgY29udGFpbmVyIGFjdGlvbnMgd2lsbCBydW4gYXMgc2libGluZyBjb250YWluZXJzIG9uIHRoZSBzYW1lIG5ldHdvcmtcbiAgICogd2l0aCB0aGUgc2FtZSB2b2x1bWUgbW91bnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyPzogQ29udGFpbmVyT3B0aW9ucztcblxuICAvKipcbiAgICogVXNlZCB0byBob3N0IHNlcnZpY2UgY29udGFpbmVycyBmb3IgYSBqb2IgaW4gYSB3b3JrZmxvdy4gU2VydmljZVxuICAgKiBjb250YWluZXJzIGFyZSB1c2VmdWwgZm9yIGNyZWF0aW5nIGRhdGFiYXNlcyBvciBjYWNoZSBzZXJ2aWNlcyBsaWtlIFJlZGlzLlxuICAgKiBUaGUgcnVubmVyIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBhIERvY2tlciBuZXR3b3JrIGFuZCBtYW5hZ2VzIHRoZSBsaWZlXG4gICAqIGN5Y2xlIG9mIHRoZSBzZXJ2aWNlIGNvbnRhaW5lcnMuXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlcz86IFJlY29yZDxzdHJpbmcsIENvbnRhaW5lck9wdGlvbnM+O1xuXG4gIC8qKlxuICAgKiBUb29scyByZXF1aXJlZCBmb3IgdGhpcyBqb2IuIFRyYW5zbGF0ZXMgaW50byBgYWN0aW9ucy9zZXR1cC14eHhgIHN0ZXBzIGF0XG4gICAqIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGpvYi5cbiAgICovXG4gIHJlYWRvbmx5IHRvb2xzPzogVG9vbHM7XG59XG5cbi8qKlxuICogU3VwcG9ydGVkIHRvb2xzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xzIHtcbiAgLyoqXG4gICAqIFNldHVwIGphdmEgKHRlbXVyaW4gZGlzdHJpYnV0aW9uKS5cbiAgICogQGRlZmF1bHQgLSBub3QgaW5zdGFsbGVkXG4gICAqL1xuICByZWFkb25seSBqYXZhPzogVG9vbFJlcXVpcmVtZW50O1xuXG4gIC8qKlxuICAgKiBTZXR1cCBweXRob24uXG4gICAqIEBkZWZhdWx0IC0gbm90IGluc3RhbGxlZFxuICAgKi9cbiAgcmVhZG9ubHkgcHl0aG9uPzogVG9vbFJlcXVpcmVtZW50O1xuXG4gIC8qKlxuICAgKiBTZXR1cCBnb2xhbmcuXG4gICAqIEBkZWZhdWx0IC0gbm90IGluc3RhbGxlZFxuICAgKi9cbiAgcmVhZG9ubHkgZ28/OiBUb29sUmVxdWlyZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFNldHVwIG5vZGUuanNcbiAgICogQGRlZmF1bHQgLSBub3QgaW5zdGFsbGVkXG4gICAqL1xuICByZWFkb25seSBub2RlPzogVG9vbFJlcXVpcmVtZW50O1xuXG4gIC8qKlxuICAgKiBTZXR1cCAuTkVUIENvcmVcbiAgICogQGRlZmF1bHQgLSBub3QgaW5zdGFsbGVkXG4gICAqL1xuICByZWFkb25seSBkb3RuZXQ/OiBUb29sUmVxdWlyZW1lbnQ7XG59XG5cbi8qKlxuICogVmVyc2lvbiByZXF1aXJlbWVudCBmb3IgdG9vbHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbFJlcXVpcmVtZW50IHtcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBhdmFpbGFibGUgc2NvcGVzIGFuZCBhY2Nlc3MgdmFsdWVzIGZvciB3b3JrZmxvdyBwZXJtaXNzaW9ucy4gSWYgeW91XG4gKiBzcGVjaWZ5IHRoZSBhY2Nlc3MgZm9yIGFueSBvZiB0aGVzZSBzY29wZXMsIGFsbCB0aG9zZSB0aGF0IGFyZSBub3RcbiAqIHNwZWNpZmllZCBhcmUgc2V0IHRvIGBKb2JQZXJtaXNzaW9uLk5PTkVgLCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGJlaGF2aW9yXG4gKiB3aGVuIG5vbmUgaXMgc3BlY2lmaWVkLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy93cml0aW5nLXdvcmtmbG93cy9jaG9vc2luZy13aGF0LXlvdXItd29ya2Zsb3ctZG9lcy9jb250cm9sbGluZy1wZXJtaXNzaW9ucy1mb3ItZ2l0aHViX3Rva2VuI2RlZmluaW5nLWFjY2Vzcy1mb3ItdGhlLWdpdGh1Yl90b2tlbi1wZXJtaXNzaW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvYlBlcm1pc3Npb25zIHtcbiAgcmVhZG9ubHkgYWN0aW9ucz86IEpvYlBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGF0dGVzdGF0aW9ucz86IEpvYlBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGNoZWNrcz86IEpvYlBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGNvbnRlbnRzPzogSm9iUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgZGVwbG95bWVudHM/OiBKb2JQZXJtaXNzaW9uO1xuICByZWFkb25seSBpZFRva2VuPzogSm9iUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgaXNzdWVzPzogSm9iUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgbW9kZWxzPzogSm9iUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgZGlzY3Vzc2lvbnM/OiBKb2JQZXJtaXNzaW9uO1xuICByZWFkb25seSBwYWNrYWdlcz86IEpvYlBlcm1pc3Npb247XG4gIHJlYWRvbmx5IHBhZ2VzPzogSm9iUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgcHVsbFJlcXVlc3RzPzogSm9iUGVybWlzc2lvbjtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHJlbW92ZWQgYnkgR2l0SHViXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5UHJvamVjdHM/OiBKb2JQZXJtaXNzaW9uO1xuICByZWFkb25seSBzZWN1cml0eUV2ZW50cz86IEpvYlBlcm1pc3Npb247XG4gIHJlYWRvbmx5IHN0YXR1c2VzPzogSm9iUGVybWlzc2lvbjtcbn1cblxuLyoqXG4gKiBUaGUgcGVybWlzc2lvbnMgYXZhaWxhYmxlIHRvIGEgR2l0SHViIEFwcC5cbiAqXG4gKiBUeXBpY2FsbHkgYSB0b2tlbiBmb3IgYSBHaXRIdWIgQXBwIGhhcyBhbGwgdGhlIGF2YWlsYWJsZSBzY29wZXMvcGVybWlzc2lvbnMgYXZhaWxhYmxlIHRvIHRoZSBhcHBcbiAqIGl0c2VsZjsgaG93ZXZlciwgYSBtb3JlIGxpbWl0ZWQgc2V0IG9mIHBlcm1pc3Npb25zIGNhbiBiZSBzcGVjaWZpZWQuIFdoZW4gcGVybWlzc2lvbnMgYXJlIHByb3ZpZGVkLFxuICogKipvbmx5KiogdGhlIHNwZWNpZmllZCBwZXJtaXNzaW9ucyBhcmUgZ3JhbnRlZCB0byB0aGUgdG9rZW4uXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9yZXN0L2FwcHMvYXBwcz9hcGlWZXJzaW9uPTIwMjItMTEtMjgjY3JlYXRlLWFuLWluc3RhbGxhdGlvbi1hY2Nlc3MtdG9rZW4tZm9yLWFuLWFwcFxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vYWN0aW9ucy9jcmVhdGUtZ2l0aHViLWFwcC10b2tlbi9ibG9iL21haW4vYWN0aW9uLnltbCNMMjhcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBQZXJtaXNzaW9ucyB7XG4gIHJlYWRvbmx5IGFjdGlvbnM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBhdHRlc3RhdGlvbnM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBhZG1pbmlzdHJhdGlvbj86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGNoZWNrcz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGNvZGVzcGFjZXM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBjb250ZW50cz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGRlcGVuZGFib3RTZWNyZXRzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgZGVwbG95bWVudHM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBlbWFpbEFkZHJlc3Nlcz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGVudmlyb25tZW50cz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGZvbGxvd2Vycz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGdpdFNzaEtleXM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBncGdLZXlzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgaW50ZXJhY3Rpb25MaW1pdHM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBpc3N1ZXM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBtZW1iZXJzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBvcmdhbml6YXRpb25BZG1pbmlzdHJhdGlvbj86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbkFubm91bmNlbWVudEJhbm5lcnM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBvcmdhbml6YXRpb25Db3BpbG90U2VhdE1hbmFnZW1lbnQ/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBvcmdhbml6YXRpb25DdXN0b21PcmdSb2xlcz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbkN1c3RvbVByb3BlcnRpZXM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBvcmdhbml6YXRpb25DdXN0b21Sb2xlcz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbkV2ZW50cz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbkhvb2tzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uUGFja2FnZXM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBvcmdhbml6YXRpb25QZXJzb25hbEFjY2Vzc1Rva2VuUmVxdWVzdHM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBvcmdhbml6YXRpb25QZXJzb25hbEFjY2Vzc1Rva2Vucz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvblBsYW4/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBvcmdhbml6YXRpb25Qcm9qZWN0cz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvblNlY3JldHM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBvcmdhbml6YXRpb25TZWxmSG9zdGVkUnVubmVycz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ25haXphdGlvblVzZXJCbG9ja2luZz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IHBhY2thZ2VzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgcGFnZXM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBwcm9maWxlPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgcHVsbFJlcXVlc3RzPzogQXBwUGVybWlzc2lvbjtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHJlbW92ZWQgYnkgR2l0SHViXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5QW5ub3VuY2VtZW50QmFubmVycz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IHJlcG9zaXRvcnlDdXN0b21Qcm9wZXJ0aWVzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgcmVwb3NpdG9yeUhvb2tzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgcmVwb3NpdG9yeVByb2plY3RzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgc2VjcmV0U2Nhbm5pbmdBbGVydHM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBzZWNyZXRzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgc2VjdXJpdHlFdmVudHM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBzaW5nbGVGaWxlPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgc3RhcnJpbmc/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBzdGF0dXNlcz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IHRlYW1EaXNjdXNzaW9ucz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IHZ1bG5lcmFiaWxpdHlBbGVydHM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSB3b3JrZmxvd3M/OiBBcHBQZXJtaXNzaW9uO1xufVxuXG4vKipcbiAqIEFjY2VzcyBsZXZlbCBmb3Igd29ya2Zsb3cgcGVybWlzc2lvbiBzY29wZXMuXG4gKi9cbmV4cG9ydCBlbnVtIEpvYlBlcm1pc3Npb24ge1xuICAvKiogUmVhZC1vbmx5IGFjY2VzcyAqL1xuICBSRUFEID0gXCJyZWFkXCIsXG5cbiAgLyoqIFJlYWQtd3JpdGUgYWNjZXNzICovXG4gIFdSSVRFID0gXCJ3cml0ZVwiLFxuXG4gIC8qKiBObyBhY2Nlc3MgYXQgYWxsICovXG4gIE5PTkUgPSBcIm5vbmVcIixcbn1cblxuLyoqXG4gKiBUaGUgcGVybWlzc2lvbnMgYXZhaWxhYmxlIGZvciBhbiBhY2Nlc3MgdG9rZW4gZm9yIGEgR2l0SHViIEFwcC5cbiAqL1xuZXhwb3J0IGVudW0gQXBwUGVybWlzc2lvbiB7XG4gIC8qKiBSZWFkLW9ubHkgYWNjY2VzcyAqL1xuICBSRUFEID0gXCJyZWFkXCIsXG4gIC8qKiBSZWFkLXdyaXRlIGFjY2VzcyAqL1xuICBXUklURSA9IFwid3JpdGVcIixcbiAgLyoqXG4gICAqIFJlYWQtd3JpdGUgYW5kIGFkbWluIGFjY2Vzcy5cbiAgICpcbiAgICogTm90IGFsbCBwZXJtaXNzaW9ucyBzdXBwb3J0IGBhZG1pbmAuXG4gICAqL1xuICBBRE1JTiA9IFwiYWRtaW5cIixcbn1cblxuLyoqXG4gKiBBbiBvdXRwdXQgYmluZGluZyBmb3IgYSBqb2IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSm9iU3RlcE91dHB1dCB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHN0ZXAgdGhhdCBleHBvc2VzIHRoZSBvdXRwdXQuXG4gICAqL1xuICByZWFkb25seSBzdGVwSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGpvYiBvdXRwdXQgdGhhdCBpcyBiZWluZyBib3VuZC5cbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dE5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZhdWx0IHNldHRpbmdzIGZvciBhbGwgc3RlcHMgaW4gdGhlIGpvYi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKb2JEZWZhdWx0cyB7XG4gIC8qKiBEZWZhdWx0IHJ1biBzZXR0aW5ncy4gKi9cbiAgcmVhZG9ubHkgcnVuPzogUnVuU2V0dGluZ3M7XG59XG5cbi8qKlxuICogUnVuIHNldHRpbmdzIGZvciBhIGpvYi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5TZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBXaGljaCBzaGVsbCB0byB1c2UgZm9yIHJ1bm5pbmcgdGhlIHN0ZXAuXG4gICAqXG4gICAqIEBleGFtcGxlIFwiYmFzaFwiXG4gICAqL1xuICByZWFkb25seSBzaGVsbD86IHN0cmluZztcblxuICAvKipcbiAgICogV29ya2luZyBkaXJlY3RvcnkgdG8gdXNlIHdoZW4gcnVubmluZyB0aGUgc3RlcC5cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtpbmdEaXJlY3Rvcnk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRmllbGRzIHRoYXQgZGVzY3JpYmUgdGhlIEhvdywgV2h5LCBXaGVuLCBhbmQgV2hvIG9mIGEgU3RlcC5cbiAqIFRoZXNlIGZpZWxkcyBjYW4gaGF2ZSBub25lIHByZXNlbnQsIGJ1dCBjYW4gYmUgcHJlc2VudCBvbiBldmVyeSBTdGVwLCBhbmQgaGF2ZSBubyBlZmZlY3Qgb24gb25lIGFub3RoZXIuXG4gKlxuICogVGhpcyBzdGFuZHMgaW4gY29udHJhc3QgdG8gdGhlIENvbW1hbmQgKG5vbi1Db25maWd1cmF0aW9uKSBmaWVsZHMsIHdoaWNoIGFyZSBtdXR1YWxseSBleGNsdXNpdmUsIGFuZCBkZXNjcmliZSB0aGUgV2hhdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGVwQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc3RlcC4gWW91IGNhbiB1c2UgdGhlIGlkIHRvIHJlZmVyZW5jZSB0aGVcbiAgICogc3RlcCBpbiBjb250ZXh0cy5cbiAgICovXG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBZb3UgY2FuIHVzZSB0aGUgaWYgY29uZGl0aW9uYWwgdG8gcHJldmVudCBhIGpvYiBmcm9tIHJ1bm5pbmcgdW5sZXNzIGFcbiAgICogY29uZGl0aW9uIGlzIG1ldC4gWW91IGNhbiB1c2UgYW55IHN1cHBvcnRlZCBjb250ZXh0IGFuZCBleHByZXNzaW9uIHRvXG4gICAqIGNyZWF0ZSBhIGNvbmRpdGlvbmFsLlxuICAgKi9cbiAgcmVhZG9ubHkgaWY/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbmFtZSBmb3IgeW91ciBzdGVwIHRvIGRpc3BsYXkgb24gR2l0SHViLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogU2V0cyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHN0ZXBzIHRvIHVzZSBpbiB0aGUgcnVubmVyIGVudmlyb25tZW50LlxuICAgKiBZb3UgY2FuIGFsc28gc2V0IGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIGVudGlyZSB3b3JrZmxvdyBvciBhIGpvYi5cbiAgICovXG4gIHJlYWRvbmx5IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHdvcmtpbmcgZGlyZWN0b3J5IGZvciBhIHN0ZXAuXG4gICAqIE92ZXJyaWRlcyBhIGpvYidzIHdvcmtpbmcgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2luZ0RpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHNoZWxsIHNldHRpbmdzIGluIHRoZSBydW5uZXIncyBvcGVyYXRpbmcgc3lzdGVtIGFuZCB0aGUgam9iJ3MgZGVmYXVsdC5cbiAgICpcbiAgICogUmVmZXIgdG8gR2l0SHViIGRvY3VtZW50YXRpb24gZm9yIGFsbG93ZWQgdmFsdWVzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvd3JpdGluZy13b3JrZmxvd3Mvd29ya2Zsb3ctc3ludGF4LWZvci1naXRodWItYWN0aW9ucyNqb2Jzam9iX2lkc3RlcHNzaGVsbFxuICAgKi9cbiAgcmVhZG9ubHkgc2hlbGw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhpcyBjb250YWlucyB0aGUgZmllbGRzIHRoYXQgYXJlIGNvbW1vbiBhbW9uZ3N0IGJvdGg6XG4gKiAtIEpvYlN0ZXAsIHdoaWNoIGlzIGEgc3RlcCB0aGF0IGlzIHBhcnQgb2YgYSBKb2IgaW4gR2l0aHViIEFjdGlvbnMuIFRoaXMgaXMgYnkgZmFyIHRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZS5cbiAqIC0gVGhlIG1ldGFkYXRhIGZpbGUgYGFjdGlvbi55YW1sYCB0aGF0IGlzIHVzZWQgdG8gZGVmaW5lIGFuIEFjdGlvbiB3aGVuIHlvdSBhcmUgY3JlYXRpbmcgb25lLiBBcyBpbiwgaWYgeW91IHdlcmUgY3JlYXRpbmcgYW4gQWN0aW9uIHRvIGJlIHVzZWQgaW4gYSBKb2JTdGVwLlxuICogVGhlcmUgaXMgc29tZSBvdmVybGFwIGJldHdlZW4gdGhlIHR3bywgYW5kIHRoaXMgY2FwdHVyZXMgdGhhdCBvdmVybGFwLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy9jcmVhdGluZy1hY3Rpb25zL21ldGFkYXRhLXN5bnRheC1mb3ItZ2l0aHViLWFjdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGVwIGV4dGVuZHMgU3RlcENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogU2VsZWN0cyBhbiBhY3Rpb24gdG8gcnVuIGFzIHBhcnQgb2YgYSBzdGVwIGluIHlvdXIgam9iLiBBbiBhY3Rpb24gaXMgYVxuICAgKiByZXVzYWJsZSB1bml0IG9mIGNvZGUuIFlvdSBjYW4gdXNlIGFuIGFjdGlvbiBkZWZpbmVkIGluIHRoZSBzYW1lXG4gICAqIHJlcG9zaXRvcnkgYXMgdGhlIHdvcmtmbG93LCBhIHB1YmxpYyByZXBvc2l0b3J5LCBvciBpbiBhIHB1Ymxpc2hlZCBEb2NrZXJcbiAgICogY29udGFpbmVyIGltYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlcz86IHN0cmluZztcblxuICAvKipcbiAgICogUnVucyBjb21tYW5kLWxpbmUgcHJvZ3JhbXMgdXNpbmcgdGhlIG9wZXJhdGluZyBzeXN0ZW0ncyBzaGVsbC4gSWYgeW91IGRvXG4gICAqIG5vdCBwcm92aWRlIGEgbmFtZSwgdGhlIHN0ZXAgbmFtZSB3aWxsIGRlZmF1bHQgdG8gdGhlIHRleHQgc3BlY2lmaWVkIGluXG4gICAqIHRoZSBydW4gY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bj86IHN0cmluZztcblxuICAvKipcbiAgICogQSBtYXAgb2YgdGhlIGlucHV0IHBhcmFtZXRlcnMgZGVmaW5lZCBieSB0aGUgYWN0aW9uLiBFYWNoIGlucHV0IHBhcmFtZXRlclxuICAgKiBpcyBhIGtleS92YWx1ZSBwYWlyLiBJbnB1dCBwYXJhbWV0ZXJzIGFyZSBzZXQgYXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgKiBUaGUgdmFyaWFibGUgaXMgcHJlZml4ZWQgd2l0aCBJTlBVVF8gYW5kIGNvbnZlcnRlZCB0byB1cHBlciBjYXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgd2l0aD86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbi8qKlxuICogVGhlc2Ugc2V0dGluZ3MgYXJlIHVuaXF1ZSB0byBhIEpvYlN0ZXAgZnJvbSB0aGUgZmllbGRzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIG1ldGFkYXRhIGFjdGlvbi55YW1sIGZpbGUgcHJlc2VudCBpbiB3aGVuIGNyZWF0aW5nIGEgbmV3IEdpdEh1YiBBY3Rpb24uXG4gKiBUaGVzZSBmaWVsZHMgYXJlIG5vdCBwcmVzZW50IGluIGFjdGlvbi55bWwsIGJ1dCBhcmUgaW4gSm9iU3RlcCwgd2hpY2ggYXJlIHVzaW5nIHdoZW4gY3JlYXRpbmcgd29ya2Zsb3dzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvYlN0ZXBDb25maWd1cmF0aW9uIGV4dGVuZHMgU3RlcENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogUHJldmVudHMgYSBqb2IgZnJvbSBmYWlsaW5nIHdoZW4gYSBzdGVwIGZhaWxzLiBTZXQgdG8gdHJ1ZSB0byBhbGxvdyBhIGpvYlxuICAgKiB0byBwYXNzIHdoZW4gdGhpcyBzdGVwIGZhaWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGludWVPbkVycm9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgdG8gcnVuIHRoZSBzdGVwIGJlZm9yZSBraWxsaW5nIHRoZSBwcm9jZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dE1pbnV0ZXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogSm9iU3RlcHMgcnVuIGFzIHBhcnQgb2YgYSBHaXRIdWIgV29ya2Zsb3cgSm9iLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy91c2luZy13b3JrZmxvd3Mvd29ya2Zsb3ctc3ludGF4LWZvci1naXRodWItYWN0aW9ucyNqb2Jzam9iX2lkc3RlcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKb2JTdGVwIGV4dGVuZHMgU3RlcCwgSm9iU3RlcENvbmZpZ3VyYXRpb24ge31cblxuLyoqXG4gKiBBIHN0cmF0ZWd5IGNyZWF0ZXMgYSBidWlsZCBtYXRyaXggZm9yIHlvdXIgam9icy4gWW91IGNhbiBkZWZpbmUgZGlmZmVyZW50XG4gKiB2YXJpYXRpb25zIHRvIHJ1biBlYWNoIGpvYiBpbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKb2JTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBZb3UgY2FuIGRlZmluZSBhIG1hdHJpeCBvZiBkaWZmZXJlbnQgam9iIGNvbmZpZ3VyYXRpb25zLiBBIG1hdHJpeCBhbGxvd3NcbiAgICogeW91IHRvIGNyZWF0ZSBtdWx0aXBsZSBqb2JzIGJ5IHBlcmZvcm1pbmcgdmFyaWFibGUgc3Vic3RpdHV0aW9uIGluIGFcbiAgICogc2luZ2xlIGpvYiBkZWZpbml0aW9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiB1c2UgYSBtYXRyaXggdG8gY3JlYXRlIGpvYnNcbiAgICogZm9yIG1vcmUgdGhhbiBvbmUgc3VwcG9ydGVkIHZlcnNpb24gb2YgYSBwcm9ncmFtbWluZyBsYW5ndWFnZSwgb3BlcmF0aW5nXG4gICAqIHN5c3RlbSwgb3IgdG9vbC4gQSBtYXRyaXggcmV1c2VzIHRoZSBqb2IncyBjb25maWd1cmF0aW9uIGFuZCBjcmVhdGVzIGFcbiAgICogam9iIGZvciBlYWNoIG1hdHJpeCB5b3UgY29uZmlndXJlLlxuICAgKlxuICAgKiBBIGpvYiBtYXRyaXggY2FuIGdlbmVyYXRlIGEgbWF4aW11bSBvZiAyNTYgam9icyBwZXIgd29ya2Zsb3cgcnVuLiBUaGlzXG4gICAqIGxpbWl0IGFsc28gYXBwbGllcyB0byBzZWxmLWhvc3RlZCBydW5uZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF0cml4PzogSm9iTWF0cml4O1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBHaXRIdWIgY2FuY2VscyBhbGwgaW4tcHJvZ3Jlc3Mgam9icyBpZiBhbnkgbWF0cml4IGpvYlxuICAgKiBmYWlscy4gRGVmYXVsdDogdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZmFpbEZhc3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygam9icyB0aGF0IGNhbiBydW4gc2ltdWx0YW5lb3VzbHkgd2hlbiB1c2luZyBhXG4gICAqIG1hdHJpeCBqb2Igc3RyYXRlZ3kuIEJ5IGRlZmF1bHQsIEdpdEh1YiB3aWxsIG1heGltaXplIHRoZSBudW1iZXIgb2Ygam9ic1xuICAgKiBydW4gaW4gcGFyYWxsZWwgZGVwZW5kaW5nIG9uIHRoZSBhdmFpbGFibGUgcnVubmVycyBvbiBHaXRIdWItaG9zdGVkXG4gICAqIHZpcnR1YWwgbWFjaGluZXMuXG4gICAqL1xuICByZWFkb25seSBtYXhQYXJhbGxlbD86IG51bWJlcjtcbn1cblxudHlwZSBKb2JNYXRyaXhWYWx1ZSA9IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI7XG5cbi8qKlxuICogQSBqb2IgbWF0cml4LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvYk1hdHJpeCB7XG4gIC8qKlxuICAgKiBFYWNoIG9wdGlvbiB5b3UgZGVmaW5lIGluIHRoZSBtYXRyaXggaGFzIGEga2V5IGFuZCB2YWx1ZS4gVGhlIGtleXMgeW91XG4gICAqIGRlZmluZSBiZWNvbWUgcHJvcGVydGllcyBpbiB0aGUgbWF0cml4IGNvbnRleHQgYW5kIHlvdSBjYW4gcmVmZXJlbmNlIHRoZVxuICAgKiBwcm9wZXJ0eSBpbiBvdGhlciBhcmVhcyBvZiB5b3VyIHdvcmtmbG93IGZpbGUuIEZvciBleGFtcGxlLCBpZiB5b3UgZGVmaW5lXG4gICAqIHRoZSBrZXkgb3MgdGhhdCBjb250YWlucyBhbiBhcnJheSBvZiBvcGVyYXRpbmcgc3lzdGVtcywgeW91IGNhbiB1c2UgdGhlXG4gICAqIG1hdHJpeC5vcyBwcm9wZXJ0eSBhcyB0aGUgdmFsdWUgb2YgdGhlIHJ1bnMtb24ga2V5d29yZCB0byBjcmVhdGUgYSBqb2JcbiAgICogZm9yIGVhY2ggb3BlcmF0aW5nIHN5c3RlbS5cbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IEpvYk1hdHJpeFZhbHVlW10+O1xuXG4gIC8qKlxuICAgKiBZb3UgY2FuIGFkZCBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBhIGJ1aWxkIG1hdHJpeCBqb2IgdGhhdFxuICAgKiBhbHJlYWR5IGV4aXN0cy4gRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIHVzZSBhIHNwZWNpZmljIHZlcnNpb24gb2YgbnBtXG4gICAqIHdoZW4gdGhlIGpvYiB0aGF0IHVzZXMgd2luZG93cy1sYXRlc3QgYW5kIHZlcnNpb24gOCBvZiBub2RlIHJ1bnMsIHlvdSBjYW5cbiAgICogdXNlIGluY2x1ZGUgdG8gc3BlY2lmeSB0aGF0IGFkZGl0aW9uYWwgb3B0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZT86IEFycmF5PFJlY29yZDxzdHJpbmcsIEpvYk1hdHJpeFZhbHVlPj47XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gcmVtb3ZlIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZGVmaW5lZCBpbiB0aGUgYnVpbGQgbWF0cml4XG4gICAqIHVzaW5nIHRoZSBleGNsdWRlIG9wdGlvbi4gVXNpbmcgZXhjbHVkZSByZW1vdmVzIGEgam9iIGRlZmluZWQgYnkgdGhlXG4gICAqIGJ1aWxkIG1hdHJpeC5cbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGU/OiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBKb2JNYXRyaXhWYWx1ZT4+O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgcGVydGFpbmluZyB0byBjb250YWluZXIgZW52aXJvbm1lbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIERvY2tlciBpbWFnZSB0byB1c2UgYXMgdGhlIGNvbnRhaW5lciB0byBydW4gdGhlIGFjdGlvbi4gVGhlIHZhbHVlIGNhblxuICAgKiBiZSB0aGUgRG9ja2VyIEh1YiBpbWFnZSBuYW1lIG9yIGEgcmVnaXN0cnkgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IGltYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGYgdGhlIGltYWdlJ3MgY29udGFpbmVyIHJlZ2lzdHJ5IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uIHRvIHB1bGwgdGhlXG4gICAqIGltYWdlLCB5b3UgY2FuIHVzZSBjcmVkZW50aWFscyB0byBzZXQgYSBtYXAgb2YgdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZC5cbiAgICogVGhlIGNyZWRlbnRpYWxzIGFyZSB0aGUgc2FtZSB2YWx1ZXMgdGhhdCB5b3Ugd291bGQgcHJvdmlkZSB0byB0aGUgZG9ja2VyXG4gICAqIGxvZ2luIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFscz86IENvbnRhaW5lckNyZWRlbnRpYWxzO1xuXG4gIC8qKlxuICAgKiBTZXRzIGEgbWFwIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiB0aGUgY29udGFpbmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogU2V0cyBhbiBhcnJheSBvZiBwb3J0cyB0byBleHBvc2Ugb24gdGhlIGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnRzPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFNldHMgYW4gYXJyYXkgb2Ygdm9sdW1lcyBmb3IgdGhlIGNvbnRhaW5lciB0byB1c2UuIFlvdSBjYW4gdXNlIHZvbHVtZXMgdG9cbiAgICogc2hhcmUgZGF0YSBiZXR3ZWVuIHNlcnZpY2VzIG9yIG90aGVyIHN0ZXBzIGluIGEgam9iLiBZb3UgY2FuIHNwZWNpZnlcbiAgICogbmFtZWQgRG9ja2VyIHZvbHVtZXMsIGFub255bW91cyBEb2NrZXIgdm9sdW1lcywgb3IgYmluZCBtb3VudHMgb24gdGhlXG4gICAqIGhvc3QuXG4gICAqXG4gICAqIFRvIHNwZWNpZnkgYSB2b2x1bWUsIHlvdSBzcGVjaWZ5IHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHBhdGg6XG4gICAqIGA8c291cmNlPjo8ZGVzdGluYXRpb25QYXRoPmAuXG4gICAqL1xuICByZWFkb25seSB2b2x1bWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgRG9ja2VyIGNvbnRhaW5lciByZXNvdXJjZSBvcHRpb25zLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9yZWZlcmVuY2UvY29tbWFuZGxpbmUvY3JlYXRlLyNvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBvcHRpb25zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ3JlZGVudGlhbHMgdG8gdXNlIHRvIGF1dGhlbnRpY2F0ZSB0byBEb2NrZXIgcmVnaXN0cmllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJDcmVkZW50aWFscyB7XG4gIC8qKiBUaGUgdXNlcm5hbWUuICovXG4gIHJlYWRvbmx5IHVzZXJuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBwYXNzd29yZC4gKi9cbiAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgc2V0IG9mIGF2YWlsYWJsZSB0cmlnZ2VycyBmb3IgR2l0SHViIFdvcmtmbG93cy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvcmVmZXJlbmNlL2V2ZW50cy10aGF0LXRyaWdnZXItd29ya2Zsb3dzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJpZ2dlcnMge1xuICAvLyNyZWdpb24gU2NoZWR1bGVkIGV2ZW50c1xuICAvKipcbiAgICogWW91IGNhbiBzY2hlZHVsZSBhIHdvcmtmbG93IHRvIHJ1biBhdCBzcGVjaWZpYyBVVEMgdGltZXMgdXNpbmcgUE9TSVggY3JvblxuICAgKiBzeW50YXguIFNjaGVkdWxlZCB3b3JrZmxvd3MgcnVuIG9uIHRoZSBsYXRlc3QgY29tbWl0IG9uIHRoZSBkZWZhdWx0IG9yXG4gICAqIGJhc2UgYnJhbmNoLiBUaGUgc2hvcnRlc3QgaW50ZXJ2YWwgeW91IGNhbiBydW4gc2NoZWR1bGVkIHdvcmtmbG93cyBpc1xuICAgKiBvbmNlIGV2ZXJ5IDUgbWludXRlcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Nyb250YWIuaHRtbCN0YWdfMjBfMjVfMDdcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlPzogQ3JvblNjaGVkdWxlT3B0aW9uc1tdO1xuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gTWFudWFsIGV2ZW50c1xuICAvKipcbiAgICogWW91IGNhbiBjb25maWd1cmUgY3VzdG9tLWRlZmluZWQgaW5wdXQgcHJvcGVydGllcywgZGVmYXVsdCBpbnB1dCB2YWx1ZXMsXG4gICAqIGFuZCByZXF1aXJlZCBpbnB1dHMgZm9yIHRoZSBldmVudCBkaXJlY3RseSBpbiB5b3VyIHdvcmtmbG93LiBXaGVuIHRoZVxuICAgKiB3b3JrZmxvdyBydW5zLCB5b3UgY2FuIGFjY2VzcyB0aGUgaW5wdXQgdmFsdWVzIGluIHRoZSBnaXRodWIuZXZlbnQuaW5wdXRzXG4gICAqIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0Rpc3BhdGNoPzogV29ya2Zsb3dEaXNwYXRjaE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gdXNlIHRoZSBHaXRIdWIgQVBJIHRvIHRyaWdnZXIgYSB3ZWJob29rIGV2ZW50IGNhbGxlZFxuICAgKiByZXBvc2l0b3J5X2Rpc3BhdGNoIHdoZW4geW91IHdhbnQgdG8gdHJpZ2dlciBhIHdvcmtmbG93IGZvciBhY3Rpdml0eSB0aGF0XG4gICAqIGhhcHBlbnMgb3V0c2lkZSBvZiBHaXRIdWIuXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5RGlzcGF0Y2g/OiBSZXBvc2l0b3J5RGlzcGF0Y2hPcHRpb25zO1xuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gV29ya2Zsb3cgcmV1c2UgZXZlbnRzXG4gIC8qKlxuICAgKiBDYW4gYmUgY2FsbGVkIGZyb20gYW5vdGhlciB3b3JrZmxvd1xuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvbGVhcm4tZ2l0aHViLWFjdGlvbnMvcmV1c2luZy13b3JrZmxvd3NcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Q2FsbD86IFdvcmtmbG93Q2FsbE9wdGlvbnM7XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBXZWJob29rIGV2ZW50c1xuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgdGhlIGJyYW5jaF9wcm90ZWN0aW9uX3J1bGUgZXZlbnQgb2NjdXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoUHJvdGVjdGlvblJ1bGU/OiBCcmFuY2hQcm90ZWN0aW9uUnVsZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIHRoZSBjaGVja19ydW4gZXZlbnQgb2NjdXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hlY2tSdW4/OiBDaGVja1J1bk9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIHRoZSBjaGVja19zdWl0ZSBldmVudCBvY2N1cnMuXG4gICAqL1xuICByZWFkb25seSBjaGVja1N1aXRlPzogQ2hlY2tTdWl0ZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIHNvbWVvbmUgY3JlYXRlcyBhIGJyYW5jaCBvciB0YWcsIHdoaWNoXG4gICAqIHRyaWdnZXJzIHRoZSBjcmVhdGUgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBjcmVhdGU/OiBDcmVhdGVPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSBzb21lb25lIGRlbGV0ZXMgYSBicmFuY2ggb3IgdGFnLCB3aGljaFxuICAgKiB0cmlnZ2VycyB0aGUgZGVsZXRlIGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlPzogRGVsZXRlT3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgc29tZW9uZSBjcmVhdGVzIGEgZGVwbG95bWVudCwgd2hpY2ggdHJpZ2dlcnNcbiAgICogdGhlIGRlcGxveW1lbnQgZXZlbnQuIERlcGxveW1lbnRzIGNyZWF0ZWQgd2l0aCBhIGNvbW1pdCBTSEEgbWF5IG5vdCBoYXZlXG4gICAqIGEgR2l0IHJlZi5cbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveW1lbnQ/OiBEZXBsb3ltZW50T3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgYSB0aGlyZCBwYXJ0eSBwcm92aWRlcyBhIGRlcGxveW1lbnQgc3RhdHVzLFxuICAgKiB3aGljaCB0cmlnZ2VycyB0aGUgZGVwbG95bWVudF9zdGF0dXMgZXZlbnQuIERlcGxveW1lbnRzIGNyZWF0ZWQgd2l0aCBhXG4gICAqIGNvbW1pdCBTSEEgbWF5IG5vdCBoYXZlIGEgR2l0IHJlZi5cbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveW1lbnRTdGF0dXM/OiBEZXBsb3ltZW50U3RhdHVzT3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgdGhlIGRpc2N1c3Npb24gZXZlbnQgb2NjdXJzLiBNb3JlIHRoYW4gb25lIGFjdGl2aXR5IHR5cGUgdHJpZ2dlcnMgdGhpcyBldmVudC5cbiAgICogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9ncmFwaHFsL2d1aWRlcy91c2luZy10aGUtZ3JhcGhxbC1hcGktZm9yLWRpc2N1c3Npb25zXG4gICAqL1xuICByZWFkb25seSBkaXNjdXNzaW9uPzogRGlzY3Vzc2lvbk9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIHRoZSBkaXNjdXNzaW9uX2NvbW1lbnQgZXZlbnQgb2NjdXJzLiBNb3JlIHRoYW4gb25lIGFjdGl2aXR5IHR5cGUgdHJpZ2dlcnMgdGhpcyBldmVudC5cbiAgICogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9ncmFwaHFsL2d1aWRlcy91c2luZy10aGUtZ3JhcGhxbC1hcGktZm9yLWRpc2N1c3Npb25zXG4gICAqL1xuICByZWFkb25seSBkaXNjdXNzaW9uQ29tbWVudD86IERpc2N1c3Npb25Db21tZW50T3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgd2hlbiBzb21lb25lIGZvcmtzIGEgcmVwb3NpdG9yeSwgd2hpY2hcbiAgICogdHJpZ2dlcnMgdGhlIGZvcmsgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBmb3JrPzogRm9ya09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyB3aGVuIHNvbWVvbmUgY3JlYXRlcyBvciB1cGRhdGVzIGEgV2lraSBwYWdlLCB3aGljaFxuICAgKiB0cmlnZ2VycyB0aGUgZ29sbHVtIGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZ29sbHVtPzogR29sbHVtT3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgdGhlIGlzc3VlX2NvbW1lbnQgZXZlbnQgb2NjdXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNzdWVDb21tZW50PzogSXNzdWVDb21tZW50T3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgdGhlIGlzc3VlcyBldmVudCBvY2N1cnMuXG4gICAqL1xuICByZWFkb25seSBpc3N1ZXM/OiBJc3N1ZXNPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSB0aGUgbGFiZWwgZXZlbnQgb2NjdXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWw/OiBMYWJlbE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyB3aGVuIGEgcHVsbCByZXF1ZXN0IGlzIGFkZGVkIHRvIGEgbWVyZ2UgcXVldWUsIHdoaWNoXG4gICAqIGFkZHMgdGhlIHB1bGwgcmVxdWVzdCB0byBhIG1lcmdlIGdyb3VwLlxuICAgKlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgbWVyZ2VHcm91cD86IE1lcmdlR3JvdXBPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSB0aGUgbWlsZXN0b25lIGV2ZW50IG9jY3Vycy5cbiAgICovXG4gIHJlYWRvbmx5IG1pbGVzdG9uZT86IE1pbGVzdG9uZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIHNvbWVvbmUgcHVzaGVzIHRvIGEgR2l0SHViIFBhZ2VzLWVuYWJsZWRcbiAgICogYnJhbmNoLCB3aGljaCB0cmlnZ2VycyB0aGUgcGFnZV9idWlsZCBldmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHBhZ2VCdWlsZD86IFBhZ2VCdWlsZE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIHRoZSBwcm9qZWN0IGV2ZW50IG9jY3Vycy5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3Q/OiBQcm9qZWN0T3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgdGhlIHByb2plY3RfY2FyZCBldmVudCBvY2N1cnMuXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0Q2FyZD86IFByb2plY3RDYXJkT3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgdGhlIHByb2plY3RfY29sdW1uIGV2ZW50IG9jY3Vycy5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3RDb2x1bW4/OiBQcm9qZWN0Q29sdW1uT3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgc29tZW9uZSBtYWtlcyBhIHByaXZhdGUgcmVwb3NpdG9yeSBwdWJsaWMsXG4gICAqIHdoaWNoIHRyaWdnZXJzIHRoZSBwdWJsaWMgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBwdWJsaWM/OiBQdWJsaWNPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSB0aGUgcHVsbF9yZXF1ZXN0IGV2ZW50IG9jY3Vycy5cbiAgICovXG4gIHJlYWRvbmx5IHB1bGxSZXF1ZXN0PzogUHVsbFJlcXVlc3RPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSB0aGUgcHVsbF9yZXF1ZXN0X3JldmlldyBldmVudCBvY2N1cnMuXG4gICAqL1xuICByZWFkb25seSBwdWxsUmVxdWVzdFJldmlldz86IFB1bGxSZXF1ZXN0UmV2aWV3T3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgYSBjb21tZW50IG9uIGEgcHVsbCByZXF1ZXN0J3MgdW5pZmllZCBkaWZmIGlzXG4gICAqIG1vZGlmaWVkLCB3aGljaCB0cmlnZ2VycyB0aGUgcHVsbF9yZXF1ZXN0X3Jldmlld19jb21tZW50IGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgcHVsbFJlcXVlc3RSZXZpZXdDb21tZW50PzogUHVsbFJlcXVlc3RSZXZpZXdDb21tZW50T3B0aW9ucztcblxuICAvKipcbiAgICogVGhpcyBldmVudCBydW5zIGluIHRoZSBjb250ZXh0IG9mIHRoZSBiYXNlIG9mIHRoZSBwdWxsIHJlcXVlc3QsIHJhdGhlclxuICAgKiB0aGFuIGluIHRoZSBtZXJnZSBjb21taXQgYXMgdGhlIHB1bGxfcmVxdWVzdCBldmVudCBkb2VzLiBUaGlzIHByZXZlbnRzXG4gICAqIGV4ZWN1dGluZyB1bnNhZmUgd29ya2Zsb3cgY29kZSBmcm9tIHRoZSBoZWFkIG9mIHRoZSBwdWxsIHJlcXVlc3QgdGhhdFxuICAgKiBjb3VsZCBhbHRlciB5b3VyIHJlcG9zaXRvcnkgb3Igc3RlYWwgYW55IHNlY3JldHMgeW91IHVzZSBpbiB5b3VyIHdvcmtmbG93LlxuICAgKiBUaGlzIGV2ZW50IGFsbG93cyB5b3UgdG8gZG8gdGhpbmdzIGxpa2UgY3JlYXRlIHdvcmtmbG93cyB0aGF0IGxhYmVsIGFuZFxuICAgKiBjb21tZW50IG9uIHB1bGwgcmVxdWVzdHMgYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mIHRoZSBldmVudCBwYXlsb2FkLlxuICAgKlxuICAgKiBXQVJOSU5HOiBUaGUgYHB1bGxfcmVxdWVzdF90YXJnZXRgIGV2ZW50IGlzIGdyYW50ZWQgcmVhZC93cml0ZSByZXBvc2l0b3J5XG4gICAqIHRva2VuIGFuZCBjYW4gYWNjZXNzIHNlY3JldHMsIGV2ZW4gd2hlbiBpdCBpcyB0cmlnZ2VyZWQgZnJvbSBhIGZvcmsuXG4gICAqIEFsdGhvdWdoIHRoZSB3b3JrZmxvdyBydW5zIGluIHRoZSBjb250ZXh0IG9mIHRoZSBiYXNlIG9mIHRoZSBwdWxsIHJlcXVlc3QsXG4gICAqIHlvdSBzaG91bGQgbWFrZSBzdXJlIHRoYXQgeW91IGRvIG5vdCBjaGVjayBvdXQsIGJ1aWxkLCBvciBydW4gdW50cnVzdGVkXG4gICAqIGNvZGUgZnJvbSB0aGUgcHVsbCByZXF1ZXN0IHdpdGggdGhpcyBldmVudC4gQWRkaXRpb25hbGx5LCBhbnkgY2FjaGVzXG4gICAqIHNoYXJlIHRoZSBzYW1lIHNjb3BlIGFzIHRoZSBiYXNlIGJyYW5jaCwgYW5kIHRvIGhlbHAgcHJldmVudCBjYWNoZVxuICAgKiBwb2lzb25pbmcsIHlvdSBzaG91bGQgbm90IHNhdmUgdGhlIGNhY2hlIGlmIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgdGhhdFxuICAgKiB0aGUgY2FjaGUgY29udGVudHMgd2VyZSBhbHRlcmVkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vc2VjdXJpdHlsYWIuZ2l0aHViLmNvbS9yZXNlYXJjaC9naXRodWItYWN0aW9ucy1wcmV2ZW50aW5nLXB3bi1yZXF1ZXN0c1xuICAgKi9cbiAgcmVhZG9ubHkgcHVsbFJlcXVlc3RUYXJnZXQ/OiBQdWxsUmVxdWVzdFRhcmdldE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyB3aGVuIHNvbWVvbmUgcHVzaGVzIHRvIGEgcmVwb3NpdG9yeSBicmFuY2gsIHdoaWNoXG4gICAqIHRyaWdnZXJzIHRoZSBwdXNoIGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgcHVzaD86IFB1c2hPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSBhIHBhY2thZ2UgaXMgcHVibGlzaGVkIG9yIHVwZGF0ZWQuXG4gICAqL1xuICByZWFkb25seSByZWdpc3RyeVBhY2thZ2U/OiBSZWdpc3RyeVBhY2thZ2VPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSB0aGUgcmVsZWFzZSBldmVudCBvY2N1cnMuXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlPzogUmVsZWFzZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIHRoZSBzdGF0dXMgb2YgYSBHaXQgY29tbWl0IGNoYW5nZXMsIHdoaWNoXG4gICAqIHRyaWdnZXJzIHRoZSBzdGF0dXMgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM/OiBTdGF0dXNPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSB0aGUgd2F0Y2ggZXZlbnQgb2NjdXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgd2F0Y2g/OiBXYXRjaE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgb2NjdXJzIHdoZW4gYSB3b3JrZmxvdyBydW4gaXMgcmVxdWVzdGVkIG9yIGNvbXBsZXRlZCwgYW5kXG4gICAqIGFsbG93cyB5b3UgdG8gZXhlY3V0ZSBhIHdvcmtmbG93IGJhc2VkIG9uIHRoZSBmaW5pc2hlZCByZXN1bHQgb2YgYW5vdGhlclxuICAgKiB3b3JrZmxvdy4gQSB3b3JrZmxvdyBydW4gaXMgdHJpZ2dlcmVkIHJlZ2FyZGxlc3Mgb2YgdGhlIHJlc3VsdCBvZiB0aGVcbiAgICogcHJldmlvdXMgd29ya2Zsb3cuXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1J1bj86IFdvcmtmbG93UnVuT3B0aW9ucztcbiAgLy8jZW5kcmVnaW9uXG59XG5cbi8qKlxuICogQ1JPTiBzY2hlZHVsZSBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyb25TY2hlZHVsZU9wdGlvbnMge1xuICAvKipcbiAgICogQHNlZSBodHRwczovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Nyb250YWIuaHRtbCN0YWdfMjBfMjVfMDdcbiAgICovXG4gIHJlYWRvbmx5IGNyb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXBvc2l0b3J5IGRpc3BhdGNoIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3NpdG9yeURpc3BhdGNoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGljaCBhY3Rpdml0eSB0eXBlcyB0byB0cmlnZ2VyIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgLSBhbGwgYWN0aXZpdHkgdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQnJhbmNoIFByb3RlY3Rpb24gUnVsZSBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnJhbmNoUHJvdGVjdGlvblJ1bGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcImNyZWF0ZWRcIiB8IFwiZWRpdGVkXCIgfCBcImRlbGV0ZWRcIj47XG59XG5cbi8qKlxuICogQ2hlY2sgcnVuIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tSdW5PcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcbiAgICBcImNyZWF0ZVwiIHwgXCJyZXJlcXVlc3RlZFwiIHwgXCJjb21wbGV0ZWRcIiB8IFwicmVxdWVzdGVkX2FjdGlvblwiXG4gID47XG59XG5cbi8qKlxuICogQ2hlY2sgc3VpdGUgb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrU3VpdGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcImNvbXBsZXRlZFwiIHwgXCJyZXF1ZXN0ZWRcIiB8IFwicmVyZXF1ZXN0ZWRcIj47XG59XG5cbi8qKlxuICogRGlzY3Vzc2lvbiBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlzY3Vzc2lvbk9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFxuICAgIHwgXCJjcmVhdGVkXCJcbiAgICB8IFwiZWRpdGVkXCJcbiAgICB8IFwidHJhbnNmZXJyZWRcIlxuICAgIHwgXCJwaW5uZWRcIlxuICAgIHwgXCJ1bnBpbm5lZFwiXG4gICAgfCBcImxhYmVsZWRcIlxuICAgIHwgXCJ1bmxhYmVsZWRcIlxuICAgIHwgXCJsb2NrZWRcIlxuICAgIHwgXCJ1bmxvY2tlZFwiXG4gICAgfCBcImNhdGVnb3J5X2NoYW5nZWRcIlxuICAgIHwgXCJhbnN3ZXJlZFwiXG4gICAgfCBcInVuYW5zd2VyZWRcIlxuICA+O1xufVxuXG4vKipcbiAqIERpc2N1c3Npb24gY29tbWVudCBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlzY3Vzc2lvbkNvbW1lbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcImNyZWF0ZWRcIiB8IFwiZWRpdGVkXCIgfCBcImRlbGV0ZWRcIj47XG59XG5cbi8qKlxuICogSXNzdWUgY29tbWVudCBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXNzdWVDb21tZW50T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGljaCBhY3Rpdml0eSB0eXBlcyB0byB0cmlnZ2VyIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgLSBhbGwgYWN0aXZpdHkgdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzPzogQXJyYXk8XCJjcmVhdGVkXCIgfCBcImVkaXRlZFwiIHwgXCJkZWxldGVkXCI+O1xufVxuXG4vKipcbiAqIElzc3VlcyBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXNzdWVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGljaCBhY3Rpdml0eSB0eXBlcyB0byB0cmlnZ2VyIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgLSBhbGwgYWN0aXZpdHkgdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzPzogQXJyYXk8XG4gICAgfCBcIm9wZW5lZFwiXG4gICAgfCBcImVkaXRlZFwiXG4gICAgfCBcImRlbGV0ZWRcIlxuICAgIHwgXCJ0cmFuc2ZlcnJlZFwiXG4gICAgfCBcInBpbm5lZFwiXG4gICAgfCBcInVucGlubmVkXCJcbiAgICB8IFwiY2xvc2VkXCJcbiAgICB8IFwicmVvcGVuZWRcIlxuICAgIHwgXCJhc3NpZ25lZFwiXG4gICAgfCBcInVuYXNzaWduZWRcIlxuICAgIHwgXCJsYWJlbGVkXCJcbiAgICB8IFwidW5sYWJlbGVkXCJcbiAgICB8IFwibG9ja2VkXCJcbiAgICB8IFwidW5sb2NrZWRcIlxuICAgIHwgXCJtaWxlc3RvbmVkXCJcbiAgICB8IFwiZGVtaWxlc3RvbmVkXCJcbiAgPjtcbn1cblxuLyoqXG4gKiBMYWJlbCBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFiZWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcImNyZWF0ZWRcIiB8IFwiZWRpdGVkXCIgfCBcImRlbGV0ZWRcIj47XG59XG5cbi8qKlxuICogTWVyZ2UgZ3JvdXAgb3B0aW9ucy5cbiAqXG4gKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lcmdlR3JvdXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZW4gdXNpbmcgdGhlIG1lcmdlX2dyb3VwIGV2ZW50cywgeW91IGNhbiBjb25maWd1cmUgYSB3b3JrZmxvd1xuICAgKiB0byBydW4gb24gc3BlY2lmaWMgYmFzZSBicmFuY2hlcy4gSWYgbm90IHNwZWNpZmllZCwgYWxsIGJyYW5jaGVzIHdpbGxcbiAgICogdHJpZ2dlciB0aGUgd29ya2Zsb3cuXG4gICAqL1xuICByZWFkb25seSBicmFuY2hlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE1pbGVzdG9uZSBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWlsZXN0b25lT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGljaCBhY3Rpdml0eSB0eXBlcyB0byB0cmlnZ2VyIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgLSBhbGwgYWN0aXZpdHkgdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzPzogQXJyYXk8XG4gICAgXCJjcmVhdGVkXCIgfCBcImNsb3NlZFwiIHwgXCJvcGVuZWRcIiB8IFwiZWRpdGVkXCIgfCBcImRlbGV0ZWRcIlxuICA+O1xufVxuXG4vKipcbiAqIFByb2plY3Qgb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcbiAgICBcImNyZWF0ZWRcIiB8IFwidXBkYXRlZFwiIHwgXCJjbG9zZWRcIiB8IFwicmVvcGVuZWRcIiB8IFwiZWRpdGVkXCIgfCBcImRlbGV0ZWRcIlxuICA+O1xufVxuXG4vKipcbiAqIFByb2plY3QgY2FyZCBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdENhcmRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcbiAgICBcImNyZWF0ZWRcIiB8IFwibW92ZWRcIiB8IFwiY29udmVydGVkXCIgfCBcImVkaXRlZFwiIHwgXCJkZWxldGVkXCJcbiAgPjtcbn1cblxuLyoqXG4gKiBQcm9iamVjdCBjb2x1bW4gb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RDb2x1bW5PcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcImNyZWF0ZWRcIiB8IFwidXBkYXRlZFwiIHwgXCJtb3ZlZFwiIHwgXCJkZWxldGVkXCI+O1xufVxuXG4vKipcbiAqIFB1bGwgcmVxdWVzdCBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVsbFJlcXVlc3RPcHRpb25zIGV4dGVuZHMgUHVzaE9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFxuICAgIHwgXCJhc3NpZ25lZFwiXG4gICAgfCBcInVuYXNzaWduZWRcIlxuICAgIHwgXCJsYWJlbGVkXCJcbiAgICB8IFwidW5sYWJlbGVkXCJcbiAgICB8IFwib3BlbmVkXCJcbiAgICB8IFwiZWRpdGVkXCJcbiAgICB8IFwiY2xvc2VkXCJcbiAgICB8IFwicmVvcGVuZWRcIlxuICAgIHwgXCJzeW5jaHJvbml6ZVwiXG4gICAgfCBcInJlYWR5X2Zvcl9yZXZpZXdcIlxuICAgIHwgXCJsb2NrZWRcIlxuICAgIHwgXCJ1bmxvY2tlZFwiXG4gICAgfCBcInJldmlld19yZXF1ZXN0ZWRcIlxuICAgIHwgXCJyZXZpZXdfcmVxdWVzdF9yZW1vdmVkXCJcbiAgPjtcbn1cblxuLyoqXG4gKiBQdWxsIHJlcXVlc3QgcmV2aWV3IG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWxsUmVxdWVzdFJldmlld09wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFwic3VibWl0dGVkXCIgfCBcImVkaXRlZFwiIHwgXCJkaXNtaXNzZWRcIj47XG59XG5cbi8qKlxuICogUHVsbCByZXF1ZXN0IHJldmlldyBjb21tZW50IG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWxsUmVxdWVzdFJldmlld0NvbW1lbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcImNyZWF0ZWRcIiB8IFwiZWRpdGVkXCIgfCBcImRlbGV0ZWRcIj47XG59XG5cbi8qKlxuICogUHVsbCByZXF1ZXN0IHRhcmdldCBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1bGxSZXF1ZXN0VGFyZ2V0T3B0aW9ucyBleHRlbmRzIFB1c2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcbiAgICB8IFwiYXNzaWduZWRcIlxuICAgIHwgXCJ1bmFzc2lnbmVkXCJcbiAgICB8IFwibGFiZWxlZFwiXG4gICAgfCBcInVubGFiZWxlZFwiXG4gICAgfCBcIm9wZW5lZFwiXG4gICAgfCBcImVkaXRlZFwiXG4gICAgfCBcImNsb3NlZFwiXG4gICAgfCBcInJlb3BlbmVkXCJcbiAgICB8IFwic3luY2hyb25pemVcIlxuICAgIHwgXCJyZWFkeV9mb3JfcmV2aWV3XCJcbiAgICB8IFwibG9ja2VkXCJcbiAgICB8IFwidW5sb2NrZWRcIlxuICAgIHwgXCJyZXZpZXdfcmVxdWVzdGVkXCJcbiAgICB8IFwicmV2aWV3X3JlcXVlc3RfcmVtb3ZlZFwiXG4gID47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcHVzaC1saWtlIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdXNoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGVuIHVzaW5nIHRoZSBwdXNoLCBwdWxsX3JlcXVlc3QgYW5kIHB1bGxfcmVxdWVzdF90YXJnZXQgZXZlbnRzLCB5b3UgY2FuIGNvbmZpZ3VyZSBhIHdvcmtmbG93XG4gICAqIHRvIHJ1biBvbiBzcGVjaWZpYyBicmFuY2hlcyBvciB0YWdzLiBGb3IgYSBwdWxsX3JlcXVlc3QgZXZlbnQsIG9ubHlcbiAgICogYnJhbmNoZXMgYW5kIHRhZ3Mgb24gdGhlIGJhc2UgYXJlIGV2YWx1YXRlZC4gSWYgeW91IGRlZmluZSBvbmx5IHRhZ3Mgb3JcbiAgICogb25seSBicmFuY2hlcywgdGhlIHdvcmtmbG93IHdvbid0IHJ1biBmb3IgZXZlbnRzIGFmZmVjdGluZyB0aGUgdW5kZWZpbmVkXG4gICAqIEdpdCByZWYuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy9yZWZlcmVuY2Uvd29ya2Zsb3ctc3ludGF4LWZvci1naXRodWItYWN0aW9ucyNmaWx0ZXItcGF0dGVybi1jaGVhdC1zaGVldFxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hlbiB1c2luZyB0aGUgcHVzaCwgcHVsbF9yZXF1ZXN0IGFuZCBwdWxsX3JlcXVlc3RfdGFyZ2V0IGV2ZW50cywgeW91IGNhbiBjb25maWd1cmUgYSB3b3JrZmxvd1xuICAgKiB0byBydW4gb24gc3BlY2lmaWMgYnJhbmNoZXMgb3IgdGFncy4gRm9yIGEgcHVsbF9yZXF1ZXN0IGV2ZW50LCBvbmx5XG4gICAqIGJyYW5jaGVzIGFuZCB0YWdzIG9uIHRoZSBiYXNlIGFyZSBldmFsdWF0ZWQuIElmIHlvdSBkZWZpbmUgb25seSB0YWdzIG9yXG4gICAqIG9ubHkgYnJhbmNoZXMsIHRoZSB3b3JrZmxvdyB3b24ndCBydW4gZm9yIGV2ZW50cyBhZmZlY3RpbmcgdGhlIHVuZGVmaW5lZFxuICAgKiBHaXQgcmVmLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvcmVmZXJlbmNlL3dvcmtmbG93LXN5bnRheC1mb3ItZ2l0aHViLWFjdGlvbnMjZmlsdGVyLXBhdHRlcm4tY2hlYXQtc2hlZXRcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hlbiB1c2luZyB0aGUgcHVzaCwgcHVsbF9yZXF1ZXN0IGFuZCBwdWxsX3JlcXVlc3RfdGFyZ2V0IGV2ZW50cywgeW91IGNhbiBjb25maWd1cmUgYSB3b3JrZmxvd1xuICAgKiB0byBydW4gd2hlbiBhdCBsZWFzdCBvbmUgZmlsZSBkb2VzIG5vdCBtYXRjaCBwYXRocy1pZ25vcmUgb3IgYXQgbGVhc3Qgb25lXG4gICAqIG1vZGlmaWVkIGZpbGUgbWF0Y2hlcyB0aGUgY29uZmlndXJlZCBwYXRocy4gUGF0aCBmaWx0ZXJzIGFyZSBub3RcbiAgICogZXZhbHVhdGVkIGZvciBwdXNoZXMgdG8gdGFncy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3JlZmVyZW5jZS93b3JrZmxvdy1zeW50YXgtZm9yLWdpdGh1Yi1hY3Rpb25zI2ZpbHRlci1wYXR0ZXJuLWNoZWF0LXNoZWV0XG4gICAqL1xuICByZWFkb25seSBwYXRocz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJlZ2lzdHJ5IHBhY2thZ2Ugb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdHJ5UGFja2FnZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFwicHVibGlzaGVkXCIgfCBcInVwZGF0ZWRcIj47XG59XG5cbi8qKlxuICogUmVsZWFzZSBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVsZWFzZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFxuICAgIHwgXCJwdWJsaXNoZWRcIlxuICAgIHwgXCJ1bnB1Ymxpc2hlZFwiXG4gICAgfCBcImNyZWF0ZWRcIlxuICAgIHwgXCJlZGl0ZWRcIlxuICAgIHwgXCJkZWxldGVkXCJcbiAgICB8IFwicHJlcmVsZWFzZWRcIlxuICAgIHwgXCJyZWxlYXNlZFwiXG4gID47XG59XG5cbi8qKlxuICogV2F0Y2ggb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFdhdGNoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGljaCBhY3Rpdml0eSB0eXBlcyB0byB0cmlnZ2VyIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgLSBhbGwgYWN0aXZpdHkgdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzPzogQXJyYXk8XCJzdGFydGVkXCI+O1xufVxuXG4vKipcbiAqIFdvcmtmbG93IHJ1biBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dSdW5PcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIHdvcmtmbG93IHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFueSB3b3JrZmxvd3NcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93cz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBXaGljaCBhY3Rpdml0eSB0eXBlcyB0byB0cmlnZ2VyIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgLSBhbGwgYWN0aXZpdHkgdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzPzogQXJyYXk8XCJjb21wbGV0ZWRcIiB8IFwicmVxdWVzdGVkXCI+O1xuICAvKipcbiAgICogV2hpY2ggYnJhbmNoZXMgb3IgYnJhbmNoLWlnbm9yZSB0byBsaW1pdCB0aGUgdHJpZ2dlciB0by5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gbm8gYnJhbmNoIGxpbWl0c1xuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoZXM/OiBBcnJheTxzdHJpbmc+O1xufVxuXG4vLyNyZWdpb24gRW1wdHkgT3B0aW9ucyAoZnV0dXJlLXByb29maW5nIHRoZSBBUEkpXG4vKipcbiAqIFRoZSBXb3JrZmxvdyBkaXNwYXRjaCBldmVudCBhY2NlcHRzIG5vIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dEaXNwYXRjaE9wdGlvbnMge31cblxuLyoqXG4gKiBUaGUgV29ya2Zsb3cgQ2FsbCBldmVudCBhY2NlcHRzIG5vIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dDYWxsT3B0aW9ucyB7fVxuXG4vKipcbiAqIFRoZSBDcmVhdGUgZXZlbnQgYWNjZXB0cyBubyBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU9wdGlvbnMge31cblxuLyoqXG4gKiBUaGUgRGVsZXRlIGV2ZW50IGFjY2VwdHMgbm8gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWxldGVPcHRpb25zIHt9XG5cbi8qKlxuICogVGhlIERlcGxveW1lbnQgZXZlbnQgYWNjZXB0cyBubyBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveW1lbnRPcHRpb25zIHt9XG5cbi8qKlxuICogVGhlIERlcGxveW1lbnQgc3RhdHVzIGV2ZW50IGFjY2VwdHMgbm8gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXBsb3ltZW50U3RhdHVzT3B0aW9ucyB7fVxuXG4vKipcbiAqIFRoZSBGb3JrIGV2ZW50IGFjY2VwdHMgbm8gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JrT3B0aW9ucyB7fVxuXG4vKipcbiAqIFRoZSBHb2xsdW0gZXZlbnQgYWNjZXB0cyBubyBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdvbGx1bU9wdGlvbnMge31cblxuLyoqXG4gKiBUaGUgUGFnZSBidWlsZCBldmVudCBhY2NlcHRzIG5vIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZUJ1aWxkT3B0aW9ucyB7fVxuXG4vKipcbiAqIFRoZSBQdWJsaWMgZXZlbnQgYWNjZXB0cyBubyBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY09wdGlvbnMge31cblxuLyoqXG4gKiBUaGUgU3RhdHVzIGV2ZW50IGFjY2VwdHMgbm8gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGF0dXNPcHRpb25zIHt9XG4vLyNlbmRyZWdpb25cbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3dzLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHVGQUF1Rjs7O0FBNFR2Rjs7R0FFRztBQUNILElBQVksYUFTWDtBQVRELFdBQVksYUFBYTtJQUN2Qix1QkFBdUI7SUFDdkIsOEJBQWEsQ0FBQTtJQUViLHdCQUF3QjtJQUN4QixnQ0FBZSxDQUFBO0lBRWYsdUJBQXVCO0lBQ3ZCLDhCQUFhLENBQUE7QUFDZixDQUFDLEVBVFcsYUFBYSw2QkFBYixhQUFhLFFBU3hCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLGFBV1g7QUFYRCxXQUFZLGFBQWE7SUFDdkIsd0JBQXdCO0lBQ3hCLDhCQUFhLENBQUE7SUFDYix3QkFBd0I7SUFDeEIsZ0NBQWUsQ0FBQTtJQUNmOzs7O09BSUc7SUFDSCxnQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFYVyxhQUFhLDZCQUFiLGFBQWEsUUFXeEI7QUFrOEJELFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvcmVmZXJlbmNlL3dvcmtmbG93LXN5bnRheC1mb3ItZ2l0aHViLWFjdGlvbnNcblxuaW1wb3J0IHR5cGUgeyBHcm91cFJ1bm5lck9wdGlvbnMgfSBmcm9tIFwiLi4vcnVubmVyLW9wdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb21tb25Kb2JEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBqb2IgZGlzcGxheWVkIG9uIEdpdEh1Yi5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXMgYW55IGpvYnMgdGhhdCBtdXN0IGNvbXBsZXRlIHN1Y2Nlc3NmdWxseSBiZWZvcmUgdGhpcyBqb2Igd2lsbFxuICAgKiBydW4uIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzLiBJZiBhIGpvYiBmYWlscywgYWxsIGpvYnNcbiAgICogdGhhdCBuZWVkIGl0IGFyZSBza2lwcGVkIHVubGVzcyB0aGUgam9icyB1c2UgYSBjb25kaXRpb25hbCBleHByZXNzaW9uXG4gICAqIHRoYXQgY2F1c2VzIHRoZSBqb2IgdG8gY29udGludWUuXG4gICAqL1xuICByZWFkb25seSBuZWVkcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBZb3UgY2FuIG1vZGlmeSB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBncmFudGVkIHRvIHRoZSBHSVRIVUJfVE9LRU4sIGFkZGluZ1xuICAgKiBvciByZW1vdmluZyBhY2Nlc3MgYXMgcmVxdWlyZWQsIHNvIHRoYXQgeW91IG9ubHkgYWxsb3cgdGhlIG1pbmltdW0gcmVxdWlyZWRcbiAgICogYWNjZXNzLlxuICAgKlxuICAgKiBVc2UgYHsgY29udGVudHM6IFJFQUQgfWAgaWYgeW91ciBqb2Igb25seSBuZWVkcyB0byBjbG9uZSBjb2RlLlxuICAgKlxuICAgKiBUaGlzIGlzIGludGVudGlvbmFsbHkgYSByZXF1aXJlZCBmaWVsZCBzaW5jZSBpdCBpcyByZXF1aXJlZCBpbiBvcmRlciB0b1xuICAgKiBhbGxvdyB3b3JrZmxvd3MgdG8gcnVuIGluIEdpdEh1YiByZXBvc2l0b3JpZXMgd2l0aCByZXN0cmljdGVkIGRlZmF1bHRcbiAgICogYWNjZXNzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvcmVmZXJlbmNlL2F1dGhlbnRpY2F0aW9uLWluLWEtd29ya2Zsb3cjcGVybWlzc2lvbnMtZm9yLXRoZS1naXRodWJfdG9rZW5cbiAgICovXG4gIHJlYWRvbmx5IHBlcm1pc3Npb25zOiBKb2JQZXJtaXNzaW9ucztcblxuICAvKipcbiAgICogQ29uY3VycmVuY3kgZW5zdXJlcyB0aGF0IG9ubHkgYSBzaW5nbGUgam9iIG9yIHdvcmtmbG93IHVzaW5nIHRoZSBzYW1lXG4gICAqIGNvbmN1cnJlbmN5IGdyb3VwIHdpbGwgcnVuIGF0IGEgdGltZS4gQSBjb25jdXJyZW5jeSBncm91cCBjYW4gYmUgYW55XG4gICAqIHN0cmluZyBvciBleHByZXNzaW9uLiBUaGUgZXhwcmVzc2lvbiBjYW4gdXNlIGFueSBjb250ZXh0IGV4Y2VwdCBmb3IgdGhlXG4gICAqIHNlY3JldHMgY29udGV4dC5cbiAgICpcbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgY29uY3VycmVuY3k/OiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBZb3UgY2FuIHVzZSB0aGUgaWYgY29uZGl0aW9uYWwgdG8gcHJldmVudCBhIGpvYiBmcm9tIHJ1bm5pbmcgdW5sZXNzIGFcbiAgICogY29uZGl0aW9uIGlzIG1ldC4gWW91IGNhbiB1c2UgYW55IHN1cHBvcnRlZCBjb250ZXh0IGFuZCBleHByZXNzaW9uIHRvXG4gICAqIGNyZWF0ZSBhIGNvbmRpdGlvbmFsLlxuICAgKi9cbiAgcmVhZG9ubHkgaWY/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3RyYXRlZ3kgY3JlYXRlcyBhIGJ1aWxkIG1hdHJpeCBmb3IgeW91ciBqb2JzLiBZb3UgY2FuIGRlZmluZSBkaWZmZXJlbnRcbiAgICogdmFyaWF0aW9ucyB0byBydW4gZWFjaCBqb2IgaW4uXG4gICAqL1xuICByZWFkb25seSBzdHJhdGVneT86IEpvYlN0cmF0ZWd5O1xufVxuXG4vKipcbiAqIEEgR2l0SHViIFdvcmtmbG93IEpvYiBjYWxsaW5nIGEgcmV1c2FibGUgd29ya2Zsb3dcbiAqXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSm9iQ2FsbGluZ1JldXNhYmxlV29ya2Zsb3cgZXh0ZW5kcyBDb21tb25Kb2JEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBhbmQgdmVyc2lvbiBvZiBhIHJldXNhYmxlIHdvcmtmbG93IGZpbGUgdG8gcnVuIGFzIGEgam9iLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIGEgam9iIGlzIHVzZWQgdG8gY2FsbCBhIHJldXNhYmxlIHdvcmtmbG93LCB5b3UgY2FuIHVzZSB3aXRoIHRvXG4gICAqIHByb3ZpZGUgYSBtYXAgb2YgaW5wdXRzIHRoYXQgYXJlIHBhc3NlZCB0byB0aGUgY2FsbGVkIHdvcmtmbG93LlxuICAgKlxuICAgKiBBbGxvd2VkIGV4cHJlc3Npb24gY29udGV4dHM6IGBnaXRodWJgLCBhbmQgYG5lZWRzYC5cbiAgICovXG4gIHJlYWRvbmx5IHdpdGg/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBib29sZWFuPjtcblxuICAvKipcbiAgICogV2hlbiBhIGpvYiBpcyB1c2VkIHRvIGNhbGwgYSByZXVzYWJsZSB3b3JrZmxvdywgeW91IGNhbiB1c2Ugc2VjcmV0cyB0b1xuICAgKiBwcm92aWRlIGEgbWFwIG9mIHNlY3JldHMgdGhhdCBhcmUgcGFzc2VkIHRvIHRoZSBjYWxsZWQgd29ya2Zsb3cuXG4gICAqXG4gICAqIFVzZSB0aGUgJ2luaGVyaXQnIGtleXdvcmQgdG8gcGFzcyBhbGwgdGhlIGNhbGxpbmcgd29ya2Zsb3cncyBzZWNyZXRzIHRvIHRoZSBjYWxsZWQgd29ya2Zsb3dcbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldHM/OiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIEEgR2l0SHViIFdvcmtmbG93IGpvYiBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvYiBleHRlbmRzIENvbW1vbkpvYkRlZmluaXRpb24ge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgbWFjaGluZSB0byBydW4gdGhlIGpvYiBvbi4gVGhlIG1hY2hpbmUgY2FuIGJlIGVpdGhlciBhXG4gICAqIEdpdEh1Yi1ob3N0ZWQgcnVubmVyIG9yIGEgc2VsZi1ob3N0ZWQgcnVubmVyLlxuICAgKlxuICAgKiBAZXhhbXBsZSBbXCJ1YnVudHUtbGF0ZXN0XCJdXG4gICAqL1xuICByZWFkb25seSBydW5zT24/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogR2l0aHViIFJ1bm5lciBHcm91cCBzZWxlY3Rpb24gb3B0aW9uc1xuICAgKiBAZGVzY3JpcHRpb24gRGVmaW5lcyBhIHRhcmdldCBSdW5uZXIgR3JvdXAgYnkgbmFtZSBhbmQvb3IgbGFiZWxzXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBpZiBib3RoIGBydW5zT25gIGFuZCBgcnVuc09uR3JvdXBgIGFyZSBzcGVjaWZpZWRcbiAgICovXG4gIHJlYWRvbmx5IHJ1bnNPbkdyb3VwPzogR3JvdXBSdW5uZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBBIGpvYiBjb250YWlucyBhIHNlcXVlbmNlIG9mIHRhc2tzIGNhbGxlZCBzdGVwcy4gU3RlcHMgY2FuIHJ1biBjb21tYW5kcyxcbiAgICogcnVuIHNldHVwIHRhc2tzLCBvciBydW4gYW4gYWN0aW9uIGluIHlvdXIgcmVwb3NpdG9yeSwgYSBwdWJsaWMgcmVwb3NpdG9yeSxcbiAgICogb3IgYW4gYWN0aW9uIHB1Ymxpc2hlZCBpbiBhIERvY2tlciByZWdpc3RyeS4gTm90IGFsbCBzdGVwcyBydW4gYWN0aW9ucyxcbiAgICogYnV0IGFsbCBhY3Rpb25zIHJ1biBhcyBhIHN0ZXAuIEVhY2ggc3RlcCBydW5zIGluIGl0cyBvd24gcHJvY2VzcyBpbiB0aGVcbiAgICogcnVubmVyIGVudmlyb25tZW50IGFuZCBoYXMgYWNjZXNzIHRvIHRoZSB3b3Jrc3BhY2UgYW5kIGZpbGVzeXN0ZW0uXG4gICAqIEJlY2F1c2Ugc3RlcHMgcnVuIGluIHRoZWlyIG93biBwcm9jZXNzLCBjaGFuZ2VzIHRvIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKiBhcmUgbm90IHByZXNlcnZlZCBiZXR3ZWVuIHN0ZXBzLiBHaXRIdWIgcHJvdmlkZXMgYnVpbHQtaW4gc3RlcHMgdG8gc2V0IHVwXG4gICAqIGFuZCBjb21wbGV0ZSBhIGpvYi5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZXBzOiBKb2JTdGVwW107XG5cbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCB0aGF0IHRoZSBqb2IgcmVmZXJlbmNlcy4gQWxsIGVudmlyb25tZW50IHByb3RlY3Rpb24gcnVsZXNcbiAgICogbXVzdCBwYXNzIGJlZm9yZSBhIGpvYiByZWZlcmVuY2luZyB0aGUgZW52aXJvbm1lbnQgaXMgc2VudCB0byBhIHJ1bm5lci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3JlZmVyZW5jZS9lbnZpcm9ubWVudHNcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogdW5rbm93bjtcblxuICAvKipcbiAgICogQSBtYXAgb2Ygb3V0cHV0cyBmb3IgYSBqb2IuIEpvYiBvdXRwdXRzIGFyZSBhdmFpbGFibGUgdG8gYWxsIGRvd25zdHJlYW1cbiAgICogam9icyB0aGF0IGRlcGVuZCBvbiB0aGlzIGpvYi5cbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCBKb2JTdGVwT3V0cHV0PjtcblxuICAvKipcbiAgICogQSBtYXAgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgYXJlIGF2YWlsYWJsZSB0byBhbGwgc3RlcHMgaW4gdGhlXG4gICAqIGpvYi4gWW91IGNhbiBhbHNvIHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBlbnRpcmUgd29ya2Zsb3cgb3IgYW5cbiAgICogaW5kaXZpZHVhbCBzdGVwLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogQSBtYXAgb2YgZGVmYXVsdCBzZXR0aW5ncyB0aGF0IHdpbGwgYXBwbHkgdG8gYWxsIHN0ZXBzIGluIHRoZSBqb2IuIFlvdVxuICAgKiBjYW4gYWxzbyBzZXQgZGVmYXVsdCBzZXR0aW5ncyBmb3IgdGhlIGVudGlyZSB3b3JrZmxvdy5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRzPzogSm9iRGVmYXVsdHM7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBtaW51dGVzIHRvIGxldCBhIGpvYiBydW4gYmVmb3JlIEdpdEh1YlxuICAgKiBhdXRvbWF0aWNhbGx5IGNhbmNlbHMgaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDM2MFxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dE1pbnV0ZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFByZXZlbnRzIGEgd29ya2Zsb3cgcnVuIGZyb20gZmFpbGluZyB3aGVuIGEgam9iIGZhaWxzLiBTZXQgdG8gdHJ1ZSB0b1xuICAgKiBhbGxvdyBhIHdvcmtmbG93IHJ1biB0byBwYXNzIHdoZW4gdGhpcyBqb2IgZmFpbHMuXG4gICAqL1xuICByZWFkb25seSBjb250aW51ZU9uRXJyb3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGNvbnRhaW5lciB0byBydW4gYW55IHN0ZXBzIGluIGEgam9iIHRoYXQgZG9uJ3QgYWxyZWFkeSBzcGVjaWZ5IGFcbiAgICogY29udGFpbmVyLiBJZiB5b3UgaGF2ZSBzdGVwcyB0aGF0IHVzZSBib3RoIHNjcmlwdCBhbmQgY29udGFpbmVyIGFjdGlvbnMsXG4gICAqIHRoZSBjb250YWluZXIgYWN0aW9ucyB3aWxsIHJ1biBhcyBzaWJsaW5nIGNvbnRhaW5lcnMgb24gdGhlIHNhbWUgbmV0d29ya1xuICAgKiB3aXRoIHRoZSBzYW1lIHZvbHVtZSBtb3VudHMuXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXI/OiBDb250YWluZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGhvc3Qgc2VydmljZSBjb250YWluZXJzIGZvciBhIGpvYiBpbiBhIHdvcmtmbG93LiBTZXJ2aWNlXG4gICAqIGNvbnRhaW5lcnMgYXJlIHVzZWZ1bCBmb3IgY3JlYXRpbmcgZGF0YWJhc2VzIG9yIGNhY2hlIHNlcnZpY2VzIGxpa2UgUmVkaXMuXG4gICAqIFRoZSBydW5uZXIgYXV0b21hdGljYWxseSBjcmVhdGVzIGEgRG9ja2VyIG5ldHdvcmsgYW5kIG1hbmFnZXMgdGhlIGxpZmVcbiAgICogY3ljbGUgb2YgdGhlIHNlcnZpY2UgY29udGFpbmVycy5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VzPzogUmVjb3JkPHN0cmluZywgQ29udGFpbmVyT3B0aW9ucz47XG5cbiAgLyoqXG4gICAqIFRvb2xzIHJlcXVpcmVkIGZvciB0aGlzIGpvYi4gVHJhbnNsYXRlcyBpbnRvIGBhY3Rpb25zL3NldHVwLXh4eGAgc3RlcHMgYXRcbiAgICogdGhlIGJlZ2lubmluZyBvZiB0aGUgam9iLlxuICAgKi9cbiAgcmVhZG9ubHkgdG9vbHM/OiBUb29scztcbn1cblxuLyoqXG4gKiBTdXBwb3J0ZWQgdG9vbHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbHMge1xuICAvKipcbiAgICogU2V0dXAgamF2YSAodGVtdXJpbiBkaXN0cmlidXRpb24pLlxuICAgKiBAZGVmYXVsdCAtIG5vdCBpbnN0YWxsZWRcbiAgICovXG4gIHJlYWRvbmx5IGphdmE/OiBUb29sUmVxdWlyZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFNldHVwIHB5dGhvbi5cbiAgICogQGRlZmF1bHQgLSBub3QgaW5zdGFsbGVkXG4gICAqL1xuICByZWFkb25seSBweXRob24/OiBUb29sUmVxdWlyZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFNldHVwIGdvbGFuZy5cbiAgICogQGRlZmF1bHQgLSBub3QgaW5zdGFsbGVkXG4gICAqL1xuICByZWFkb25seSBnbz86IFRvb2xSZXF1aXJlbWVudDtcblxuICAvKipcbiAgICogU2V0dXAgbm9kZS5qc1xuICAgKiBAZGVmYXVsdCAtIG5vdCBpbnN0YWxsZWRcbiAgICovXG4gIHJlYWRvbmx5IG5vZGU/OiBUb29sUmVxdWlyZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFNldHVwIC5ORVQgQ29yZVxuICAgKiBAZGVmYXVsdCAtIG5vdCBpbnN0YWxsZWRcbiAgICovXG4gIHJlYWRvbmx5IGRvdG5ldD86IFRvb2xSZXF1aXJlbWVudDtcbn1cblxuLyoqXG4gKiBWZXJzaW9uIHJlcXVpcmVtZW50IGZvciB0b29scy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb29sUmVxdWlyZW1lbnQge1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGF2YWlsYWJsZSBzY29wZXMgYW5kIGFjY2VzcyB2YWx1ZXMgZm9yIHdvcmtmbG93IHBlcm1pc3Npb25zLiBJZiB5b3VcbiAqIHNwZWNpZnkgdGhlIGFjY2VzcyBmb3IgYW55IG9mIHRoZXNlIHNjb3BlcywgYWxsIHRob3NlIHRoYXQgYXJlIG5vdFxuICogc3BlY2lmaWVkIGFyZSBzZXQgdG8gYEpvYlBlcm1pc3Npb24uTk9ORWAsIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgYmVoYXZpb3JcbiAqIHdoZW4gbm9uZSBpcyBzcGVjaWZpZWQuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3dyaXRpbmctd29ya2Zsb3dzL2Nob29zaW5nLXdoYXQteW91ci13b3JrZmxvdy1kb2VzL2NvbnRyb2xsaW5nLXBlcm1pc3Npb25zLWZvci1naXRodWJfdG9rZW4jZGVmaW5pbmctYWNjZXNzLWZvci10aGUtZ2l0aHViX3Rva2VuLXBlcm1pc3Npb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSm9iUGVybWlzc2lvbnMge1xuICByZWFkb25seSBhY3Rpb25zPzogSm9iUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgYXR0ZXN0YXRpb25zPzogSm9iUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgY2hlY2tzPzogSm9iUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgY29udGVudHM/OiBKb2JQZXJtaXNzaW9uO1xuICByZWFkb25seSBkZXBsb3ltZW50cz86IEpvYlBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGlkVG9rZW4/OiBKb2JQZXJtaXNzaW9uO1xuICByZWFkb25seSBpc3N1ZXM/OiBKb2JQZXJtaXNzaW9uO1xuICByZWFkb25seSBtb2RlbHM/OiBKb2JQZXJtaXNzaW9uO1xuICByZWFkb25seSBkaXNjdXNzaW9ucz86IEpvYlBlcm1pc3Npb247XG4gIHJlYWRvbmx5IHBhY2thZ2VzPzogSm9iUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgcGFnZXM/OiBKb2JQZXJtaXNzaW9uO1xuICByZWFkb25seSBwdWxsUmVxdWVzdHM/OiBKb2JQZXJtaXNzaW9uO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgcmVtb3ZlZCBieSBHaXRIdWJcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnlQcm9qZWN0cz86IEpvYlBlcm1pc3Npb247XG4gIHJlYWRvbmx5IHNlY3VyaXR5RXZlbnRzPzogSm9iUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgc3RhdHVzZXM/OiBKb2JQZXJtaXNzaW9uO1xufVxuXG4vKipcbiAqIFRoZSBwZXJtaXNzaW9ucyBhdmFpbGFibGUgdG8gYSBHaXRIdWIgQXBwLlxuICpcbiAqIFR5cGljYWxseSBhIHRva2VuIGZvciBhIEdpdEh1YiBBcHAgaGFzIGFsbCB0aGUgYXZhaWxhYmxlIHNjb3Blcy9wZXJtaXNzaW9ucyBhdmFpbGFibGUgdG8gdGhlIGFwcFxuICogaXRzZWxmOyBob3dldmVyLCBhIG1vcmUgbGltaXRlZCBzZXQgb2YgcGVybWlzc2lvbnMgY2FuIGJlIHNwZWNpZmllZC4gV2hlbiBwZXJtaXNzaW9ucyBhcmUgcHJvdmlkZWQsXG4gKiAqKm9ubHkqKiB0aGUgc3BlY2lmaWVkIHBlcm1pc3Npb25zIGFyZSBncmFudGVkIHRvIHRoZSB0b2tlbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL3Jlc3QvYXBwcy9hcHBzP2FwaVZlcnNpb249MjAyMi0xMS0yOCNjcmVhdGUtYW4taW5zdGFsbGF0aW9uLWFjY2Vzcy10b2tlbi1mb3ItYW4tYXBwXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hY3Rpb25zL2NyZWF0ZS1naXRodWItYXBwLXRva2VuL2Jsb2IvbWFpbi9hY3Rpb24ueW1sI0wyOFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcFBlcm1pc3Npb25zIHtcbiAgcmVhZG9ubHkgYWN0aW9ucz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGF0dGVzdGF0aW9ucz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGFkbWluaXN0cmF0aW9uPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgY2hlY2tzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgY29kZXNwYWNlcz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGNvbnRlbnRzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgZGVwZW5kYWJvdFNlY3JldHM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBkZXBsb3ltZW50cz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGVtYWlsQWRkcmVzc2VzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgZW52aXJvbm1lbnRzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgZm9sbG93ZXJzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgZ2l0U3NoS2V5cz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGdwZ0tleXM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBpbnRlcmFjdGlvbkxpbWl0cz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IGlzc3Vlcz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG1lbWJlcnM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBtZXRhZGF0YT86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbkFkbWluaXN0cmF0aW9uPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uQW5ub3VuY2VtZW50QmFubmVycz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbkNvcGlsb3RTZWF0TWFuYWdlbWVudD86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbkN1c3RvbU9yZ1JvbGVzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uQ3VzdG9tUHJvcGVydGllcz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbkN1c3RvbVJvbGVzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uRXZlbnRzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uSG9va3M/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBvcmdhbml6YXRpb25QYWNrYWdlcz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvblBlcnNvbmFsQWNjZXNzVG9rZW5SZXF1ZXN0cz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvblBlcnNvbmFsQWNjZXNzVG9rZW5zPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uUGxhbj86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvblByb2plY3RzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uU2VjcmV0cz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvblNlbGZIb3N0ZWRSdW5uZXJzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgb3JnbmFpemF0aW9uVXNlckJsb2NraW5nPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgcGFja2FnZXM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBwYWdlcz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBwdWxsUmVxdWVzdHM/OiBBcHBQZXJtaXNzaW9uO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgcmVtb3ZlZCBieSBHaXRIdWJcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnlBbm5vdW5jZW1lbnRCYW5uZXJzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgcmVwb3NpdG9yeUN1c3RvbVByb3BlcnRpZXM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSByZXBvc2l0b3J5SG9va3M/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSByZXBvc2l0b3J5UHJvamVjdHM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBzZWNyZXRTY2FubmluZ0FsZXJ0cz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IHNlY3JldHM/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBzZWN1cml0eUV2ZW50cz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IHNpbmdsZUZpbGU/OiBBcHBQZXJtaXNzaW9uO1xuICByZWFkb25seSBzdGFycmluZz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IHN0YXR1c2VzPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgdGVhbURpc2N1c3Npb25zPzogQXBwUGVybWlzc2lvbjtcbiAgcmVhZG9ubHkgdnVsbmVyYWJpbGl0eUFsZXJ0cz86IEFwcFBlcm1pc3Npb247XG4gIHJlYWRvbmx5IHdvcmtmbG93cz86IEFwcFBlcm1pc3Npb247XG59XG5cbi8qKlxuICogQWNjZXNzIGxldmVsIGZvciB3b3JrZmxvdyBwZXJtaXNzaW9uIHNjb3Blcy5cbiAqL1xuZXhwb3J0IGVudW0gSm9iUGVybWlzc2lvbiB7XG4gIC8qKiBSZWFkLW9ubHkgYWNjZXNzICovXG4gIFJFQUQgPSBcInJlYWRcIixcblxuICAvKiogUmVhZC13cml0ZSBhY2Nlc3MgKi9cbiAgV1JJVEUgPSBcIndyaXRlXCIsXG5cbiAgLyoqIE5vIGFjY2VzcyBhdCBhbGwgKi9cbiAgTk9ORSA9IFwibm9uZVwiLFxufVxuXG4vKipcbiAqIFRoZSBwZXJtaXNzaW9ucyBhdmFpbGFibGUgZm9yIGFuIGFjY2VzcyB0b2tlbiBmb3IgYSBHaXRIdWIgQXBwLlxuICovXG5leHBvcnQgZW51bSBBcHBQZXJtaXNzaW9uIHtcbiAgLyoqIFJlYWQtb25seSBhY2NjZXNzICovXG4gIFJFQUQgPSBcInJlYWRcIixcbiAgLyoqIFJlYWQtd3JpdGUgYWNjZXNzICovXG4gIFdSSVRFID0gXCJ3cml0ZVwiLFxuICAvKipcbiAgICogUmVhZC13cml0ZSBhbmQgYWRtaW4gYWNjZXNzLlxuICAgKlxuICAgKiBOb3QgYWxsIHBlcm1pc3Npb25zIHN1cHBvcnQgYGFkbWluYC5cbiAgICovXG4gIEFETUlOID0gXCJhZG1pblwiLFxufVxuXG4vKipcbiAqIEFuIG91dHB1dCBiaW5kaW5nIGZvciBhIGpvYi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKb2JTdGVwT3V0cHV0IHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgc3RlcCB0aGF0IGV4cG9zZXMgdGhlIG91dHB1dC5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZXBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgam9iIG91dHB1dCB0aGF0IGlzIGJlaW5nIGJvdW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0TmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlZmF1bHQgc2V0dGluZ3MgZm9yIGFsbCBzdGVwcyBpbiB0aGUgam9iLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvYkRlZmF1bHRzIHtcbiAgLyoqIERlZmF1bHQgcnVuIHNldHRpbmdzLiAqL1xuICByZWFkb25seSBydW4/OiBSdW5TZXR0aW5ncztcbn1cblxuLyoqXG4gKiBSdW4gc2V0dGluZ3MgZm9yIGEgam9iLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1blNldHRpbmdzIHtcbiAgLyoqXG4gICAqIFdoaWNoIHNoZWxsIHRvIHVzZSBmb3IgcnVubmluZyB0aGUgc3RlcC5cbiAgICpcbiAgICogQGV4YW1wbGUgXCJiYXNoXCJcbiAgICovXG4gIHJlYWRvbmx5IHNoZWxsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXb3JraW5nIGRpcmVjdG9yeSB0byB1c2Ugd2hlbiBydW5uaW5nIHRoZSBzdGVwLlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2luZ0RpcmVjdG9yeT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBGaWVsZHMgdGhhdCBkZXNjcmliZSB0aGUgSG93LCBXaHksIFdoZW4sIGFuZCBXaG8gb2YgYSBTdGVwLlxuICogVGhlc2UgZmllbGRzIGNhbiBoYXZlIG5vbmUgcHJlc2VudCwgYnV0IGNhbiBiZSBwcmVzZW50IG9uIGV2ZXJ5IFN0ZXAsIGFuZCBoYXZlIG5vIGVmZmVjdCBvbiBvbmUgYW5vdGhlci5cbiAqXG4gKiBUaGlzIHN0YW5kcyBpbiBjb250cmFzdCB0byB0aGUgQ29tbWFuZCAobm9uLUNvbmZpZ3VyYXRpb24pIGZpZWxkcywgd2hpY2ggYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwgYW5kIGRlc2NyaWJlIHRoZSBXaGF0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzdGVwLiBZb3UgY2FuIHVzZSB0aGUgaWQgdG8gcmVmZXJlbmNlIHRoZVxuICAgKiBzdGVwIGluIGNvbnRleHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gdXNlIHRoZSBpZiBjb25kaXRpb25hbCB0byBwcmV2ZW50IGEgam9iIGZyb20gcnVubmluZyB1bmxlc3MgYVxuICAgKiBjb25kaXRpb24gaXMgbWV0LiBZb3UgY2FuIHVzZSBhbnkgc3VwcG9ydGVkIGNvbnRleHQgYW5kIGV4cHJlc3Npb24gdG9cbiAgICogY3JlYXRlIGEgY29uZGl0aW9uYWwuXG4gICAqL1xuICByZWFkb25seSBpZj86IHN0cmluZztcblxuICAvKipcbiAgICogQSBuYW1lIGZvciB5b3VyIHN0ZXAgdG8gZGlzcGxheSBvbiBHaXRIdWIuXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXRzIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3Igc3RlcHMgdG8gdXNlIGluIHRoZSBydW5uZXIgZW52aXJvbm1lbnQuXG4gICAqIFlvdSBjYW4gYWxzbyBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgZW50aXJlIHdvcmtmbG93IG9yIGEgam9iLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGEgd29ya2luZyBkaXJlY3RvcnkgZm9yIGEgc3RlcC5cbiAgICogT3ZlcnJpZGVzIGEgam9iJ3Mgd29ya2luZyBkaXJlY3RvcnkuXG4gICAqL1xuICByZWFkb25seSB3b3JraW5nRGlyZWN0b3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgc2hlbGwgc2V0dGluZ3MgaW4gdGhlIHJ1bm5lcidzIG9wZXJhdGluZyBzeXN0ZW0gYW5kIHRoZSBqb2IncyBkZWZhdWx0LlxuICAgKlxuICAgKiBSZWZlciB0byBHaXRIdWIgZG9jdW1lbnRhdGlvbiBmb3IgYWxsb3dlZCB2YWx1ZXMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy93cml0aW5nLXdvcmtmbG93cy93b3JrZmxvdy1zeW50YXgtZm9yLWdpdGh1Yi1hY3Rpb25zI2pvYnNqb2JfaWRzdGVwc3NoZWxsXG4gICAqL1xuICByZWFkb25seSBzaGVsbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGlzIGNvbnRhaW5zIHRoZSBmaWVsZHMgdGhhdCBhcmUgY29tbW9uIGFtb25nc3QgYm90aDpcbiAqIC0gSm9iU3RlcCwgd2hpY2ggaXMgYSBzdGVwIHRoYXQgaXMgcGFydCBvZiBhIEpvYiBpbiBHaXRodWIgQWN0aW9ucy4gVGhpcyBpcyBieSBmYXIgdGhlIG1vc3QgY29tbW9uIHVzZSBjYXNlLlxuICogLSBUaGUgbWV0YWRhdGEgZmlsZSBgYWN0aW9uLnlhbWxgIHRoYXQgaXMgdXNlZCB0byBkZWZpbmUgYW4gQWN0aW9uIHdoZW4geW91IGFyZSBjcmVhdGluZyBvbmUuIEFzIGluLCBpZiB5b3Ugd2VyZSBjcmVhdGluZyBhbiBBY3Rpb24gdG8gYmUgdXNlZCBpbiBhIEpvYlN0ZXAuXG4gKiBUaGVyZSBpcyBzb21lIG92ZXJsYXAgYmV0d2VlbiB0aGUgdHdvLCBhbmQgdGhpcyBjYXB0dXJlcyB0aGF0IG92ZXJsYXAuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL2NyZWF0aW5nLWFjdGlvbnMvbWV0YWRhdGEtc3ludGF4LWZvci1naXRodWItYWN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXAgZXh0ZW5kcyBTdGVwQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBTZWxlY3RzIGFuIGFjdGlvbiB0byBydW4gYXMgcGFydCBvZiBhIHN0ZXAgaW4geW91ciBqb2IuIEFuIGFjdGlvbiBpcyBhXG4gICAqIHJldXNhYmxlIHVuaXQgb2YgY29kZS4gWW91IGNhbiB1c2UgYW4gYWN0aW9uIGRlZmluZWQgaW4gdGhlIHNhbWVcbiAgICogcmVwb3NpdG9yeSBhcyB0aGUgd29ya2Zsb3csIGEgcHVibGljIHJlcG9zaXRvcnksIG9yIGluIGEgcHVibGlzaGVkIERvY2tlclxuICAgKiBjb250YWluZXIgaW1hZ2UuXG4gICAqL1xuICByZWFkb25seSB1c2VzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSdW5zIGNvbW1hbmQtbGluZSBwcm9ncmFtcyB1c2luZyB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIHNoZWxsLiBJZiB5b3UgZG9cbiAgICogbm90IHByb3ZpZGUgYSBuYW1lLCB0aGUgc3RlcCBuYW1lIHdpbGwgZGVmYXVsdCB0byB0aGUgdGV4dCBzcGVjaWZpZWQgaW5cbiAgICogdGhlIHJ1biBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgcnVuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiB0aGUgaW5wdXQgcGFyYW1ldGVycyBkZWZpbmVkIGJ5IHRoZSBhY3Rpb24uIEVhY2ggaW5wdXQgcGFyYW1ldGVyXG4gICAqIGlzIGEga2V5L3ZhbHVlIHBhaXIuIElucHV0IHBhcmFtZXRlcnMgYXJlIHNldCBhcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqIFRoZSB2YXJpYWJsZSBpcyBwcmVmaXhlZCB3aXRoIElOUFVUXyBhbmQgY29udmVydGVkIHRvIHVwcGVyIGNhc2UuXG4gICAqL1xuICByZWFkb25seSB3aXRoPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuLyoqXG4gKiBUaGVzZSBzZXR0aW5ncyBhcmUgdW5pcXVlIHRvIGEgSm9iU3RlcCBmcm9tIHRoZSBmaWVsZHMgY29udGFpbmVkIHdpdGhpbiB0aGUgbWV0YWRhdGEgYWN0aW9uLnlhbWwgZmlsZSBwcmVzZW50IGluIHdoZW4gY3JlYXRpbmcgYSBuZXcgR2l0SHViIEFjdGlvbi5cbiAqIFRoZXNlIGZpZWxkcyBhcmUgbm90IHByZXNlbnQgaW4gYWN0aW9uLnltbCwgYnV0IGFyZSBpbiBKb2JTdGVwLCB3aGljaCBhcmUgdXNpbmcgd2hlbiBjcmVhdGluZyB3b3JrZmxvd3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSm9iU3RlcENvbmZpZ3VyYXRpb24gZXh0ZW5kcyBTdGVwQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBQcmV2ZW50cyBhIGpvYiBmcm9tIGZhaWxpbmcgd2hlbiBhIHN0ZXAgZmFpbHMuIFNldCB0byB0cnVlIHRvIGFsbG93IGEgam9iXG4gICAqIHRvIHBhc3Mgd2hlbiB0aGlzIHN0ZXAgZmFpbHMuXG4gICAqL1xuICByZWFkb25seSBjb250aW51ZU9uRXJyb3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgbWludXRlcyB0byBydW4gdGhlIHN0ZXAgYmVmb3JlIGtpbGxpbmcgdGhlIHByb2Nlc3MuXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0TWludXRlcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBKb2JTdGVwcyBydW4gYXMgcGFydCBvZiBhIEdpdEh1YiBXb3JrZmxvdyBKb2IuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3VzaW5nLXdvcmtmbG93cy93b3JrZmxvdy1zeW50YXgtZm9yLWdpdGh1Yi1hY3Rpb25zI2pvYnNqb2JfaWRzdGVwc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvYlN0ZXAgZXh0ZW5kcyBTdGVwLCBKb2JTdGVwQ29uZmlndXJhdGlvbiB7fVxuXG4vKipcbiAqIEEgc3RyYXRlZ3kgY3JlYXRlcyBhIGJ1aWxkIG1hdHJpeCBmb3IgeW91ciBqb2JzLiBZb3UgY2FuIGRlZmluZSBkaWZmZXJlbnRcbiAqIHZhcmlhdGlvbnMgdG8gcnVuIGVhY2ggam9iIGluLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvYlN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIFlvdSBjYW4gZGVmaW5lIGEgbWF0cml4IG9mIGRpZmZlcmVudCBqb2IgY29uZmlndXJhdGlvbnMuIEEgbWF0cml4IGFsbG93c1xuICAgKiB5b3UgdG8gY3JlYXRlIG11bHRpcGxlIGpvYnMgYnkgcGVyZm9ybWluZyB2YXJpYWJsZSBzdWJzdGl0dXRpb24gaW4gYVxuICAgKiBzaW5nbGUgam9iIGRlZmluaXRpb24uIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSBhIG1hdHJpeCB0byBjcmVhdGUgam9ic1xuICAgKiBmb3IgbW9yZSB0aGFuIG9uZSBzdXBwb3J0ZWQgdmVyc2lvbiBvZiBhIHByb2dyYW1taW5nIGxhbmd1YWdlLCBvcGVyYXRpbmdcbiAgICogc3lzdGVtLCBvciB0b29sLiBBIG1hdHJpeCByZXVzZXMgdGhlIGpvYidzIGNvbmZpZ3VyYXRpb24gYW5kIGNyZWF0ZXMgYVxuICAgKiBqb2IgZm9yIGVhY2ggbWF0cml4IHlvdSBjb25maWd1cmUuXG4gICAqXG4gICAqIEEgam9iIG1hdHJpeCBjYW4gZ2VuZXJhdGUgYSBtYXhpbXVtIG9mIDI1NiBqb2JzIHBlciB3b3JrZmxvdyBydW4uIFRoaXNcbiAgICogbGltaXQgYWxzbyBhcHBsaWVzIHRvIHNlbGYtaG9zdGVkIHJ1bm5lcnMuXG4gICAqL1xuICByZWFkb25seSBtYXRyaXg/OiBKb2JNYXRyaXg7XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIEdpdEh1YiBjYW5jZWxzIGFsbCBpbi1wcm9ncmVzcyBqb2JzIGlmIGFueSBtYXRyaXggam9iXG4gICAqIGZhaWxzLiBEZWZhdWx0OiB0cnVlXG4gICAqL1xuICByZWFkb25seSBmYWlsRmFzdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBqb2JzIHRoYXQgY2FuIHJ1biBzaW11bHRhbmVvdXNseSB3aGVuIHVzaW5nIGFcbiAgICogbWF0cml4IGpvYiBzdHJhdGVneS4gQnkgZGVmYXVsdCwgR2l0SHViIHdpbGwgbWF4aW1pemUgdGhlIG51bWJlciBvZiBqb2JzXG4gICAqIHJ1biBpbiBwYXJhbGxlbCBkZXBlbmRpbmcgb24gdGhlIGF2YWlsYWJsZSBydW5uZXJzIG9uIEdpdEh1Yi1ob3N0ZWRcbiAgICogdmlydHVhbCBtYWNoaW5lcy5cbiAgICovXG4gIHJlYWRvbmx5IG1heFBhcmFsbGVsPzogbnVtYmVyO1xufVxuXG50eXBlIEpvYk1hdHJpeFZhbHVlID0gc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcjtcblxuLyoqXG4gKiBBIGpvYiBtYXRyaXguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSm9iTWF0cml4IHtcbiAgLyoqXG4gICAqIEVhY2ggb3B0aW9uIHlvdSBkZWZpbmUgaW4gdGhlIG1hdHJpeCBoYXMgYSBrZXkgYW5kIHZhbHVlLiBUaGUga2V5cyB5b3VcbiAgICogZGVmaW5lIGJlY29tZSBwcm9wZXJ0aWVzIGluIHRoZSBtYXRyaXggY29udGV4dCBhbmQgeW91IGNhbiByZWZlcmVuY2UgdGhlXG4gICAqIHByb3BlcnR5IGluIG90aGVyIGFyZWFzIG9mIHlvdXIgd29ya2Zsb3cgZmlsZS4gRm9yIGV4YW1wbGUsIGlmIHlvdSBkZWZpbmVcbiAgICogdGhlIGtleSBvcyB0aGF0IGNvbnRhaW5zIGFuIGFycmF5IG9mIG9wZXJhdGluZyBzeXN0ZW1zLCB5b3UgY2FuIHVzZSB0aGVcbiAgICogbWF0cml4Lm9zIHByb3BlcnR5IGFzIHRoZSB2YWx1ZSBvZiB0aGUgcnVucy1vbiBrZXl3b3JkIHRvIGNyZWF0ZSBhIGpvYlxuICAgKiBmb3IgZWFjaCBvcGVyYXRpbmcgc3lzdGVtLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgSm9iTWF0cml4VmFsdWVbXT47XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gYWRkIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGEgYnVpbGQgbWF0cml4IGpvYiB0aGF0XG4gICAqIGFscmVhZHkgZXhpc3RzLiBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gdXNlIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiBucG1cbiAgICogd2hlbiB0aGUgam9iIHRoYXQgdXNlcyB3aW5kb3dzLWxhdGVzdCBhbmQgdmVyc2lvbiA4IG9mIG5vZGUgcnVucywgeW91IGNhblxuICAgKiB1c2UgaW5jbHVkZSB0byBzcGVjaWZ5IHRoYXQgYWRkaXRpb25hbCBvcHRpb24uXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlPzogQXJyYXk8UmVjb3JkPHN0cmluZywgSm9iTWF0cml4VmFsdWU+PjtcblxuICAvKipcbiAgICogWW91IGNhbiByZW1vdmUgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBkZWZpbmVkIGluIHRoZSBidWlsZCBtYXRyaXhcbiAgICogdXNpbmcgdGhlIGV4Y2x1ZGUgb3B0aW9uLiBVc2luZyBleGNsdWRlIHJlbW92ZXMgYSBqb2IgZGVmaW5lZCBieSB0aGVcbiAgICogYnVpbGQgbWF0cml4LlxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZT86IEFycmF5PFJlY29yZDxzdHJpbmcsIEpvYk1hdHJpeFZhbHVlPj47XG59XG5cbi8qKlxuICogT3B0aW9ucyBwZXJ0YWluaW5nIHRvIGNvbnRhaW5lciBlbnZpcm9ubWVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgRG9ja2VyIGltYWdlIHRvIHVzZSBhcyB0aGUgY29udGFpbmVyIHRvIHJ1biB0aGUgYWN0aW9uLiBUaGUgdmFsdWUgY2FuXG4gICAqIGJlIHRoZSBEb2NrZXIgSHViIGltYWdlIG5hbWUgb3IgYSByZWdpc3RyeSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogZiB0aGUgaW1hZ2UncyBjb250YWluZXIgcmVnaXN0cnkgcmVxdWlyZXMgYXV0aGVudGljYXRpb24gdG8gcHVsbCB0aGVcbiAgICogaW1hZ2UsIHlvdSBjYW4gdXNlIGNyZWRlbnRpYWxzIHRvIHNldCBhIG1hcCBvZiB0aGUgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLlxuICAgKiBUaGUgY3JlZGVudGlhbHMgYXJlIHRoZSBzYW1lIHZhbHVlcyB0aGF0IHlvdSB3b3VsZCBwcm92aWRlIHRvIHRoZSBkb2NrZXJcbiAgICogbG9naW4gY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxzPzogQ29udGFpbmVyQ3JlZGVudGlhbHM7XG5cbiAgLyoqXG4gICAqIFNldHMgYSBtYXAgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIHRoZSBjb250YWluZXIuXG4gICAqL1xuICByZWFkb25seSBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBTZXRzIGFuIGFycmF5IG9mIHBvcnRzIHRvIGV4cG9zZSBvbiB0aGUgY29udGFpbmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydHM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogU2V0cyBhbiBhcnJheSBvZiB2b2x1bWVzIGZvciB0aGUgY29udGFpbmVyIHRvIHVzZS4gWW91IGNhbiB1c2Ugdm9sdW1lcyB0b1xuICAgKiBzaGFyZSBkYXRhIGJldHdlZW4gc2VydmljZXMgb3Igb3RoZXIgc3RlcHMgaW4gYSBqb2IuIFlvdSBjYW4gc3BlY2lmeVxuICAgKiBuYW1lZCBEb2NrZXIgdm9sdW1lcywgYW5vbnltb3VzIERvY2tlciB2b2x1bWVzLCBvciBiaW5kIG1vdW50cyBvbiB0aGVcbiAgICogaG9zdC5cbiAgICpcbiAgICogVG8gc3BlY2lmeSBhIHZvbHVtZSwgeW91IHNwZWNpZnkgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcGF0aDpcbiAgICogYDxzb3VyY2U+OjxkZXN0aW5hdGlvblBhdGg+YC5cbiAgICovXG4gIHJlYWRvbmx5IHZvbHVtZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBEb2NrZXIgY29udGFpbmVyIHJlc291cmNlIG9wdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL3JlZmVyZW5jZS9jb21tYW5kbGluZS9jcmVhdGUvI29wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDcmVkZW50aWFscyB0byB1c2UgdG8gYXV0aGVudGljYXRlIHRvIERvY2tlciByZWdpc3RyaWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lckNyZWRlbnRpYWxzIHtcbiAgLyoqIFRoZSB1c2VybmFtZS4gKi9cbiAgcmVhZG9ubHkgdXNlcm5hbWU6IHN0cmluZztcblxuICAvKiogVGhlIHBhc3N3b3JkLiAqL1xuICByZWFkb25seSBwYXNzd29yZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBzZXQgb2YgYXZhaWxhYmxlIHRyaWdnZXJzIGZvciBHaXRIdWIgV29ya2Zsb3dzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy9yZWZlcmVuY2UvZXZlbnRzLXRoYXQtdHJpZ2dlci13b3JrZmxvd3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmlnZ2VycyB7XG4gIC8vI3JlZ2lvbiBTY2hlZHVsZWQgZXZlbnRzXG4gIC8qKlxuICAgKiBZb3UgY2FuIHNjaGVkdWxlIGEgd29ya2Zsb3cgdG8gcnVuIGF0IHNwZWNpZmljIFVUQyB0aW1lcyB1c2luZyBQT1NJWCBjcm9uXG4gICAqIHN5bnRheC4gU2NoZWR1bGVkIHdvcmtmbG93cyBydW4gb24gdGhlIGxhdGVzdCBjb21taXQgb24gdGhlIGRlZmF1bHQgb3JcbiAgICogYmFzZSBicmFuY2guIFRoZSBzaG9ydGVzdCBpbnRlcnZhbCB5b3UgY2FuIHJ1biBzY2hlZHVsZWQgd29ya2Zsb3dzIGlzXG4gICAqIG9uY2UgZXZlcnkgNSBtaW51dGVzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvY3JvbnRhYi5odG1sI3RhZ18yMF8yNV8wN1xuICAgKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGU/OiBDcm9uU2NoZWR1bGVPcHRpb25zW107XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBNYW51YWwgZXZlbnRzXG4gIC8qKlxuICAgKiBZb3UgY2FuIGNvbmZpZ3VyZSBjdXN0b20tZGVmaW5lZCBpbnB1dCBwcm9wZXJ0aWVzLCBkZWZhdWx0IGlucHV0IHZhbHVlcyxcbiAgICogYW5kIHJlcXVpcmVkIGlucHV0cyBmb3IgdGhlIGV2ZW50IGRpcmVjdGx5IGluIHlvdXIgd29ya2Zsb3cuIFdoZW4gdGhlXG4gICAqIHdvcmtmbG93IHJ1bnMsIHlvdSBjYW4gYWNjZXNzIHRoZSBpbnB1dCB2YWx1ZXMgaW4gdGhlIGdpdGh1Yi5ldmVudC5pbnB1dHNcbiAgICogY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93RGlzcGF0Y2g/OiBXb3JrZmxvd0Rpc3BhdGNoT3B0aW9ucztcblxuICAvKipcbiAgICogWW91IGNhbiB1c2UgdGhlIEdpdEh1YiBBUEkgdG8gdHJpZ2dlciBhIHdlYmhvb2sgZXZlbnQgY2FsbGVkXG4gICAqIHJlcG9zaXRvcnlfZGlzcGF0Y2ggd2hlbiB5b3Ugd2FudCB0byB0cmlnZ2VyIGEgd29ya2Zsb3cgZm9yIGFjdGl2aXR5IHRoYXRcbiAgICogaGFwcGVucyBvdXRzaWRlIG9mIEdpdEh1Yi5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnlEaXNwYXRjaD86IFJlcG9zaXRvcnlEaXNwYXRjaE9wdGlvbnM7XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBXb3JrZmxvdyByZXVzZSBldmVudHNcbiAgLyoqXG4gICAqIENhbiBiZSBjYWxsZWQgZnJvbSBhbm90aGVyIHdvcmtmbG93XG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy9sZWFybi1naXRodWItYWN0aW9ucy9yZXVzaW5nLXdvcmtmbG93c1xuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dDYWxsPzogV29ya2Zsb3dDYWxsT3B0aW9ucztcbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIFdlYmhvb2sgZXZlbnRzXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSB0aGUgYnJhbmNoX3Byb3RlY3Rpb25fcnVsZSBldmVudCBvY2N1cnMuXG4gICAqL1xuICByZWFkb25seSBicmFuY2hQcm90ZWN0aW9uUnVsZT86IEJyYW5jaFByb3RlY3Rpb25SdWxlT3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgdGhlIGNoZWNrX3J1biBldmVudCBvY2N1cnMuXG4gICAqL1xuICByZWFkb25seSBjaGVja1J1bj86IENoZWNrUnVuT3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgdGhlIGNoZWNrX3N1aXRlIGV2ZW50IG9jY3Vycy5cbiAgICovXG4gIHJlYWRvbmx5IGNoZWNrU3VpdGU/OiBDaGVja1N1aXRlT3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgc29tZW9uZSBjcmVhdGVzIGEgYnJhbmNoIG9yIHRhZywgd2hpY2hcbiAgICogdHJpZ2dlcnMgdGhlIGNyZWF0ZSBldmVudC5cbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZT86IENyZWF0ZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIHNvbWVvbmUgZGVsZXRlcyBhIGJyYW5jaCBvciB0YWcsIHdoaWNoXG4gICAqIHRyaWdnZXJzIHRoZSBkZWxldGUgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBkZWxldGU/OiBEZWxldGVPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSBzb21lb25lIGNyZWF0ZXMgYSBkZXBsb3ltZW50LCB3aGljaCB0cmlnZ2Vyc1xuICAgKiB0aGUgZGVwbG95bWVudCBldmVudC4gRGVwbG95bWVudHMgY3JlYXRlZCB3aXRoIGEgY29tbWl0IFNIQSBtYXkgbm90IGhhdmVcbiAgICogYSBHaXQgcmVmLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95bWVudD86IERlcGxveW1lbnRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSBhIHRoaXJkIHBhcnR5IHByb3ZpZGVzIGEgZGVwbG95bWVudCBzdGF0dXMsXG4gICAqIHdoaWNoIHRyaWdnZXJzIHRoZSBkZXBsb3ltZW50X3N0YXR1cyBldmVudC4gRGVwbG95bWVudHMgY3JlYXRlZCB3aXRoIGFcbiAgICogY29tbWl0IFNIQSBtYXkgbm90IGhhdmUgYSBHaXQgcmVmLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95bWVudFN0YXR1cz86IERlcGxveW1lbnRTdGF0dXNPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSB0aGUgZGlzY3Vzc2lvbiBldmVudCBvY2N1cnMuIE1vcmUgdGhhbiBvbmUgYWN0aXZpdHkgdHlwZSB0cmlnZ2VycyB0aGlzIGV2ZW50LlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2dyYXBocWwvZ3VpZGVzL3VzaW5nLXRoZS1ncmFwaHFsLWFwaS1mb3ItZGlzY3Vzc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IGRpc2N1c3Npb24/OiBEaXNjdXNzaW9uT3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgdGhlIGRpc2N1c3Npb25fY29tbWVudCBldmVudCBvY2N1cnMuIE1vcmUgdGhhbiBvbmUgYWN0aXZpdHkgdHlwZSB0cmlnZ2VycyB0aGlzIGV2ZW50LlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2dyYXBocWwvZ3VpZGVzL3VzaW5nLXRoZS1ncmFwaHFsLWFwaS1mb3ItZGlzY3Vzc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IGRpc2N1c3Npb25Db21tZW50PzogRGlzY3Vzc2lvbkNvbW1lbnRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSB3aGVuIHNvbWVvbmUgZm9ya3MgYSByZXBvc2l0b3J5LCB3aGljaFxuICAgKiB0cmlnZ2VycyB0aGUgZm9yayBldmVudC5cbiAgICovXG4gIHJlYWRvbmx5IGZvcms/OiBGb3JrT3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IHdoZW4gc29tZW9uZSBjcmVhdGVzIG9yIHVwZGF0ZXMgYSBXaWtpIHBhZ2UsIHdoaWNoXG4gICAqIHRyaWdnZXJzIHRoZSBnb2xsdW0gZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBnb2xsdW0/OiBHb2xsdW1PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSB0aGUgaXNzdWVfY29tbWVudCBldmVudCBvY2N1cnMuXG4gICAqL1xuICByZWFkb25seSBpc3N1ZUNvbW1lbnQ/OiBJc3N1ZUNvbW1lbnRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSB0aGUgaXNzdWVzIGV2ZW50IG9jY3Vycy5cbiAgICovXG4gIHJlYWRvbmx5IGlzc3Vlcz86IElzc3Vlc09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIHRoZSBsYWJlbCBldmVudCBvY2N1cnMuXG4gICAqL1xuICByZWFkb25seSBsYWJlbD86IExhYmVsT3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IHdoZW4gYSBwdWxsIHJlcXVlc3QgaXMgYWRkZWQgdG8gYSBtZXJnZSBxdWV1ZSwgd2hpY2hcbiAgICogYWRkcyB0aGUgcHVsbCByZXF1ZXN0IHRvIGEgbWVyZ2UgZ3JvdXAuXG4gICAqXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBtZXJnZUdyb3VwPzogTWVyZ2VHcm91cE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIHRoZSBtaWxlc3RvbmUgZXZlbnQgb2NjdXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgbWlsZXN0b25lPzogTWlsZXN0b25lT3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgc29tZW9uZSBwdXNoZXMgdG8gYSBHaXRIdWIgUGFnZXMtZW5hYmxlZFxuICAgKiBicmFuY2gsIHdoaWNoIHRyaWdnZXJzIHRoZSBwYWdlX2J1aWxkIGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFnZUJ1aWxkPzogUGFnZUJ1aWxkT3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgdGhlIHByb2plY3QgZXZlbnQgb2NjdXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdD86IFByb2plY3RPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSB0aGUgcHJvamVjdF9jYXJkIGV2ZW50IG9jY3Vycy5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3RDYXJkPzogUHJvamVjdENhcmRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSB0aGUgcHJvamVjdF9jb2x1bW4gZXZlbnQgb2NjdXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdENvbHVtbj86IFByb2plY3RDb2x1bW5PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSBzb21lb25lIG1ha2VzIGEgcHJpdmF0ZSByZXBvc2l0b3J5IHB1YmxpYyxcbiAgICogd2hpY2ggdHJpZ2dlcnMgdGhlIHB1YmxpYyBldmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpYz86IFB1YmxpY09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIHRoZSBwdWxsX3JlcXVlc3QgZXZlbnQgb2NjdXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHVsbFJlcXVlc3Q/OiBQdWxsUmVxdWVzdE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIHRoZSBwdWxsX3JlcXVlc3RfcmV2aWV3IGV2ZW50IG9jY3Vycy5cbiAgICovXG4gIHJlYWRvbmx5IHB1bGxSZXF1ZXN0UmV2aWV3PzogUHVsbFJlcXVlc3RSZXZpZXdPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBSdW5zIHlvdXIgd29ya2Zsb3cgYW55dGltZSBhIGNvbW1lbnQgb24gYSBwdWxsIHJlcXVlc3QncyB1bmlmaWVkIGRpZmYgaXNcbiAgICogbW9kaWZpZWQsIHdoaWNoIHRyaWdnZXJzIHRoZSBwdWxsX3JlcXVlc3RfcmV2aWV3X2NvbW1lbnQgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBwdWxsUmVxdWVzdFJldmlld0NvbW1lbnQ/OiBQdWxsUmVxdWVzdFJldmlld0NvbW1lbnRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IHJ1bnMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGJhc2Ugb2YgdGhlIHB1bGwgcmVxdWVzdCwgcmF0aGVyXG4gICAqIHRoYW4gaW4gdGhlIG1lcmdlIGNvbW1pdCBhcyB0aGUgcHVsbF9yZXF1ZXN0IGV2ZW50IGRvZXMuIFRoaXMgcHJldmVudHNcbiAgICogZXhlY3V0aW5nIHVuc2FmZSB3b3JrZmxvdyBjb2RlIGZyb20gdGhlIGhlYWQgb2YgdGhlIHB1bGwgcmVxdWVzdCB0aGF0XG4gICAqIGNvdWxkIGFsdGVyIHlvdXIgcmVwb3NpdG9yeSBvciBzdGVhbCBhbnkgc2VjcmV0cyB5b3UgdXNlIGluIHlvdXIgd29ya2Zsb3cuXG4gICAqIFRoaXMgZXZlbnQgYWxsb3dzIHlvdSB0byBkbyB0aGluZ3MgbGlrZSBjcmVhdGUgd29ya2Zsb3dzIHRoYXQgbGFiZWwgYW5kXG4gICAqIGNvbW1lbnQgb24gcHVsbCByZXF1ZXN0cyBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgdGhlIGV2ZW50IHBheWxvYWQuXG4gICAqXG4gICAqIFdBUk5JTkc6IFRoZSBgcHVsbF9yZXF1ZXN0X3RhcmdldGAgZXZlbnQgaXMgZ3JhbnRlZCByZWFkL3dyaXRlIHJlcG9zaXRvcnlcbiAgICogdG9rZW4gYW5kIGNhbiBhY2Nlc3Mgc2VjcmV0cywgZXZlbiB3aGVuIGl0IGlzIHRyaWdnZXJlZCBmcm9tIGEgZm9yay5cbiAgICogQWx0aG91Z2ggdGhlIHdvcmtmbG93IHJ1bnMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGJhc2Ugb2YgdGhlIHB1bGwgcmVxdWVzdCxcbiAgICogeW91IHNob3VsZCBtYWtlIHN1cmUgdGhhdCB5b3UgZG8gbm90IGNoZWNrIG91dCwgYnVpbGQsIG9yIHJ1biB1bnRydXN0ZWRcbiAgICogY29kZSBmcm9tIHRoZSBwdWxsIHJlcXVlc3Qgd2l0aCB0aGlzIGV2ZW50LiBBZGRpdGlvbmFsbHksIGFueSBjYWNoZXNcbiAgICogc2hhcmUgdGhlIHNhbWUgc2NvcGUgYXMgdGhlIGJhc2UgYnJhbmNoLCBhbmQgdG8gaGVscCBwcmV2ZW50IGNhY2hlXG4gICAqIHBvaXNvbmluZywgeW91IHNob3VsZCBub3Qgc2F2ZSB0aGUgY2FjaGUgaWYgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGF0XG4gICAqIHRoZSBjYWNoZSBjb250ZW50cyB3ZXJlIGFsdGVyZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9zZWN1cml0eWxhYi5naXRodWIuY29tL3Jlc2VhcmNoL2dpdGh1Yi1hY3Rpb25zLXByZXZlbnRpbmctcHduLXJlcXVlc3RzXG4gICAqL1xuICByZWFkb25seSBwdWxsUmVxdWVzdFRhcmdldD86IFB1bGxSZXF1ZXN0VGFyZ2V0T3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IHdoZW4gc29tZW9uZSBwdXNoZXMgdG8gYSByZXBvc2l0b3J5IGJyYW5jaCwgd2hpY2hcbiAgICogdHJpZ2dlcnMgdGhlIHB1c2ggZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBwdXNoPzogUHVzaE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIGEgcGFja2FnZSBpcyBwdWJsaXNoZWQgb3IgdXBkYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lzdHJ5UGFja2FnZT86IFJlZ2lzdHJ5UGFja2FnZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIHRoZSByZWxlYXNlIGV2ZW50IG9jY3Vycy5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2U/OiBSZWxlYXNlT3B0aW9ucztcblxuICAvKipcbiAgICogUnVucyB5b3VyIHdvcmtmbG93IGFueXRpbWUgdGhlIHN0YXR1cyBvZiBhIEdpdCBjb21taXQgY2hhbmdlcywgd2hpY2hcbiAgICogdHJpZ2dlcnMgdGhlIHN0YXR1cyBldmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IFN0YXR1c09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFJ1bnMgeW91ciB3b3JrZmxvdyBhbnl0aW1lIHRoZSB3YXRjaCBldmVudCBvY2N1cnMuXG4gICAqL1xuICByZWFkb25seSB3YXRjaD86IFdhdGNoT3B0aW9ucztcblxuICAvKipcbiAgICogVGhpcyBldmVudCBvY2N1cnMgd2hlbiBhIHdvcmtmbG93IHJ1biBpcyByZXF1ZXN0ZWQgb3IgY29tcGxldGVkLCBhbmRcbiAgICogYWxsb3dzIHlvdSB0byBleGVjdXRlIGEgd29ya2Zsb3cgYmFzZWQgb24gdGhlIGZpbmlzaGVkIHJlc3VsdCBvZiBhbm90aGVyXG4gICAqIHdvcmtmbG93LiBBIHdvcmtmbG93IHJ1biBpcyB0cmlnZ2VyZWQgcmVnYXJkbGVzcyBvZiB0aGUgcmVzdWx0IG9mIHRoZVxuICAgKiBwcmV2aW91cyB3b3JrZmxvdy5cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93UnVuPzogV29ya2Zsb3dSdW5PcHRpb25zO1xuICAvLyNlbmRyZWdpb25cbn1cblxuLyoqXG4gKiBDUk9OIHNjaGVkdWxlIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JvblNjaGVkdWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvY3JvbnRhYi5odG1sI3RhZ18yMF8yNV8wN1xuICAgKi9cbiAgcmVhZG9ubHkgY3Jvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcG9zaXRvcnkgZGlzcGF0Y2ggb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvc2l0b3J5RGlzcGF0Y2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBCcmFuY2ggUHJvdGVjdGlvbiBSdWxlIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCcmFuY2hQcm90ZWN0aW9uUnVsZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFwiY3JlYXRlZFwiIHwgXCJlZGl0ZWRcIiB8IFwiZGVsZXRlZFwiPjtcbn1cblxuLyoqXG4gKiBDaGVjayBydW4gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGVja1J1bk9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFxuICAgIFwiY3JlYXRlXCIgfCBcInJlcmVxdWVzdGVkXCIgfCBcImNvbXBsZXRlZFwiIHwgXCJyZXF1ZXN0ZWRfYWN0aW9uXCJcbiAgPjtcbn1cblxuLyoqXG4gKiBDaGVjayBzdWl0ZSBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tTdWl0ZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFwiY29tcGxldGVkXCIgfCBcInJlcXVlc3RlZFwiIHwgXCJyZXJlcXVlc3RlZFwiPjtcbn1cblxuLyoqXG4gKiBEaXNjdXNzaW9uIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXNjdXNzaW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGljaCBhY3Rpdml0eSB0eXBlcyB0byB0cmlnZ2VyIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgLSBhbGwgYWN0aXZpdHkgdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzPzogQXJyYXk8XG4gICAgfCBcImNyZWF0ZWRcIlxuICAgIHwgXCJlZGl0ZWRcIlxuICAgIHwgXCJ0cmFuc2ZlcnJlZFwiXG4gICAgfCBcInBpbm5lZFwiXG4gICAgfCBcInVucGlubmVkXCJcbiAgICB8IFwibGFiZWxlZFwiXG4gICAgfCBcInVubGFiZWxlZFwiXG4gICAgfCBcImxvY2tlZFwiXG4gICAgfCBcInVubG9ja2VkXCJcbiAgICB8IFwiY2F0ZWdvcnlfY2hhbmdlZFwiXG4gICAgfCBcImFuc3dlcmVkXCJcbiAgICB8IFwidW5hbnN3ZXJlZFwiXG4gID47XG59XG5cbi8qKlxuICogRGlzY3Vzc2lvbiBjb21tZW50IG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXNjdXNzaW9uQ29tbWVudE9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFwiY3JlYXRlZFwiIHwgXCJlZGl0ZWRcIiB8IFwiZGVsZXRlZFwiPjtcbn1cblxuLyoqXG4gKiBJc3N1ZSBjb21tZW50IG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJc3N1ZUNvbW1lbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcImNyZWF0ZWRcIiB8IFwiZWRpdGVkXCIgfCBcImRlbGV0ZWRcIj47XG59XG5cbi8qKlxuICogSXNzdWVzIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJc3N1ZXNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcbiAgICB8IFwib3BlbmVkXCJcbiAgICB8IFwiZWRpdGVkXCJcbiAgICB8IFwiZGVsZXRlZFwiXG4gICAgfCBcInRyYW5zZmVycmVkXCJcbiAgICB8IFwicGlubmVkXCJcbiAgICB8IFwidW5waW5uZWRcIlxuICAgIHwgXCJjbG9zZWRcIlxuICAgIHwgXCJyZW9wZW5lZFwiXG4gICAgfCBcImFzc2lnbmVkXCJcbiAgICB8IFwidW5hc3NpZ25lZFwiXG4gICAgfCBcImxhYmVsZWRcIlxuICAgIHwgXCJ1bmxhYmVsZWRcIlxuICAgIHwgXCJsb2NrZWRcIlxuICAgIHwgXCJ1bmxvY2tlZFwiXG4gICAgfCBcIm1pbGVzdG9uZWRcIlxuICAgIHwgXCJkZW1pbGVzdG9uZWRcIlxuICA+O1xufVxuXG4vKipcbiAqIExhYmVsIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYWJlbE9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFwiY3JlYXRlZFwiIHwgXCJlZGl0ZWRcIiB8IFwiZGVsZXRlZFwiPjtcbn1cblxuLyoqXG4gKiBNZXJnZSBncm91cCBvcHRpb25zLlxuICpcbiAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVyZ2VHcm91cE9wdGlvbnMge1xuICAvKipcbiAgICogV2hlbiB1c2luZyB0aGUgbWVyZ2VfZ3JvdXAgZXZlbnRzLCB5b3UgY2FuIGNvbmZpZ3VyZSBhIHdvcmtmbG93XG4gICAqIHRvIHJ1biBvbiBzcGVjaWZpYyBiYXNlIGJyYW5jaGVzLiBJZiBub3Qgc3BlY2lmaWVkLCBhbGwgYnJhbmNoZXMgd2lsbFxuICAgKiB0cmlnZ2VyIHRoZSB3b3JrZmxvdy5cbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWlsZXN0b25lIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNaWxlc3RvbmVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcbiAgICBcImNyZWF0ZWRcIiB8IFwiY2xvc2VkXCIgfCBcIm9wZW5lZFwiIHwgXCJlZGl0ZWRcIiB8IFwiZGVsZXRlZFwiXG4gID47XG59XG5cbi8qKlxuICogUHJvamVjdCBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFxuICAgIFwiY3JlYXRlZFwiIHwgXCJ1cGRhdGVkXCIgfCBcImNsb3NlZFwiIHwgXCJyZW9wZW5lZFwiIHwgXCJlZGl0ZWRcIiB8IFwiZGVsZXRlZFwiXG4gID47XG59XG5cbi8qKlxuICogUHJvamVjdCBjYXJkIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0Q2FyZE9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFxuICAgIFwiY3JlYXRlZFwiIHwgXCJtb3ZlZFwiIHwgXCJjb252ZXJ0ZWRcIiB8IFwiZWRpdGVkXCIgfCBcImRlbGV0ZWRcIlxuICA+O1xufVxuXG4vKipcbiAqIFByb2JqZWN0IGNvbHVtbiBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdENvbHVtbk9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFwiY3JlYXRlZFwiIHwgXCJ1cGRhdGVkXCIgfCBcIm1vdmVkXCIgfCBcImRlbGV0ZWRcIj47XG59XG5cbi8qKlxuICogUHVsbCByZXF1ZXN0IG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWxsUmVxdWVzdE9wdGlvbnMgZXh0ZW5kcyBQdXNoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGljaCBhY3Rpdml0eSB0eXBlcyB0byB0cmlnZ2VyIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgLSBhbGwgYWN0aXZpdHkgdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzPzogQXJyYXk8XG4gICAgfCBcImFzc2lnbmVkXCJcbiAgICB8IFwidW5hc3NpZ25lZFwiXG4gICAgfCBcImxhYmVsZWRcIlxuICAgIHwgXCJ1bmxhYmVsZWRcIlxuICAgIHwgXCJvcGVuZWRcIlxuICAgIHwgXCJlZGl0ZWRcIlxuICAgIHwgXCJjbG9zZWRcIlxuICAgIHwgXCJyZW9wZW5lZFwiXG4gICAgfCBcInN5bmNocm9uaXplXCJcbiAgICB8IFwicmVhZHlfZm9yX3Jldmlld1wiXG4gICAgfCBcImxvY2tlZFwiXG4gICAgfCBcInVubG9ja2VkXCJcbiAgICB8IFwicmV2aWV3X3JlcXVlc3RlZFwiXG4gICAgfCBcInJldmlld19yZXF1ZXN0X3JlbW92ZWRcIlxuICA+O1xufVxuXG4vKipcbiAqIFB1bGwgcmVxdWVzdCByZXZpZXcgb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1bGxSZXF1ZXN0UmV2aWV3T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGljaCBhY3Rpdml0eSB0eXBlcyB0byB0cmlnZ2VyIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgLSBhbGwgYWN0aXZpdHkgdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzPzogQXJyYXk8XCJzdWJtaXR0ZWRcIiB8IFwiZWRpdGVkXCIgfCBcImRpc21pc3NlZFwiPjtcbn1cblxuLyoqXG4gKiBQdWxsIHJlcXVlc3QgcmV2aWV3IGNvbW1lbnQgb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudE9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFwiY3JlYXRlZFwiIHwgXCJlZGl0ZWRcIiB8IFwiZGVsZXRlZFwiPjtcbn1cblxuLyoqXG4gKiBQdWxsIHJlcXVlc3QgdGFyZ2V0IG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVsbFJlcXVlc3RUYXJnZXRPcHRpb25zIGV4dGVuZHMgUHVzaE9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggYWN0aXZpdHkgdHlwZXMgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYWxsIGFjdGl2aXR5IHR5cGVzXG4gICAqL1xuICByZWFkb25seSB0eXBlcz86IEFycmF5PFxuICAgIHwgXCJhc3NpZ25lZFwiXG4gICAgfCBcInVuYXNzaWduZWRcIlxuICAgIHwgXCJsYWJlbGVkXCJcbiAgICB8IFwidW5sYWJlbGVkXCJcbiAgICB8IFwib3BlbmVkXCJcbiAgICB8IFwiZWRpdGVkXCJcbiAgICB8IFwiY2xvc2VkXCJcbiAgICB8IFwicmVvcGVuZWRcIlxuICAgIHwgXCJzeW5jaHJvbml6ZVwiXG4gICAgfCBcInJlYWR5X2Zvcl9yZXZpZXdcIlxuICAgIHwgXCJsb2NrZWRcIlxuICAgIHwgXCJ1bmxvY2tlZFwiXG4gICAgfCBcInJldmlld19yZXF1ZXN0ZWRcIlxuICAgIHwgXCJyZXZpZXdfcmVxdWVzdF9yZW1vdmVkXCJcbiAgPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBwdXNoLWxpa2UgZXZlbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1c2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZW4gdXNpbmcgdGhlIHB1c2gsIHB1bGxfcmVxdWVzdCBhbmQgcHVsbF9yZXF1ZXN0X3RhcmdldCBldmVudHMsIHlvdSBjYW4gY29uZmlndXJlIGEgd29ya2Zsb3dcbiAgICogdG8gcnVuIG9uIHNwZWNpZmljIGJyYW5jaGVzIG9yIHRhZ3MuIEZvciBhIHB1bGxfcmVxdWVzdCBldmVudCwgb25seVxuICAgKiBicmFuY2hlcyBhbmQgdGFncyBvbiB0aGUgYmFzZSBhcmUgZXZhbHVhdGVkLiBJZiB5b3UgZGVmaW5lIG9ubHkgdGFncyBvclxuICAgKiBvbmx5IGJyYW5jaGVzLCB0aGUgd29ya2Zsb3cgd29uJ3QgcnVuIGZvciBldmVudHMgYWZmZWN0aW5nIHRoZSB1bmRlZmluZWRcbiAgICogR2l0IHJlZi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3JlZmVyZW5jZS93b3JrZmxvdy1zeW50YXgtZm9yLWdpdGh1Yi1hY3Rpb25zI2ZpbHRlci1wYXR0ZXJuLWNoZWF0LXNoZWV0XG4gICAqL1xuICByZWFkb25seSBicmFuY2hlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGVuIHVzaW5nIHRoZSBwdXNoLCBwdWxsX3JlcXVlc3QgYW5kIHB1bGxfcmVxdWVzdF90YXJnZXQgZXZlbnRzLCB5b3UgY2FuIGNvbmZpZ3VyZSBhIHdvcmtmbG93XG4gICAqIHRvIHJ1biBvbiBzcGVjaWZpYyBicmFuY2hlcyBvciB0YWdzLiBGb3IgYSBwdWxsX3JlcXVlc3QgZXZlbnQsIG9ubHlcbiAgICogYnJhbmNoZXMgYW5kIHRhZ3Mgb24gdGhlIGJhc2UgYXJlIGV2YWx1YXRlZC4gSWYgeW91IGRlZmluZSBvbmx5IHRhZ3Mgb3JcbiAgICogb25seSBicmFuY2hlcywgdGhlIHdvcmtmbG93IHdvbid0IHJ1biBmb3IgZXZlbnRzIGFmZmVjdGluZyB0aGUgdW5kZWZpbmVkXG4gICAqIEdpdCByZWYuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy9yZWZlcmVuY2Uvd29ya2Zsb3ctc3ludGF4LWZvci1naXRodWItYWN0aW9ucyNmaWx0ZXItcGF0dGVybi1jaGVhdC1zaGVldFxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGVuIHVzaW5nIHRoZSBwdXNoLCBwdWxsX3JlcXVlc3QgYW5kIHB1bGxfcmVxdWVzdF90YXJnZXQgZXZlbnRzLCB5b3UgY2FuIGNvbmZpZ3VyZSBhIHdvcmtmbG93XG4gICAqIHRvIHJ1biB3aGVuIGF0IGxlYXN0IG9uZSBmaWxlIGRvZXMgbm90IG1hdGNoIHBhdGhzLWlnbm9yZSBvciBhdCBsZWFzdCBvbmVcbiAgICogbW9kaWZpZWQgZmlsZSBtYXRjaGVzIHRoZSBjb25maWd1cmVkIHBhdGhzLiBQYXRoIGZpbHRlcnMgYXJlIG5vdFxuICAgKiBldmFsdWF0ZWQgZm9yIHB1c2hlcyB0byB0YWdzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvcmVmZXJlbmNlL3dvcmtmbG93LXN5bnRheC1mb3ItZ2l0aHViLWFjdGlvbnMjZmlsdGVyLXBhdHRlcm4tY2hlYXQtc2hlZXRcbiAgICovXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUmVnaXN0cnkgcGFja2FnZSBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0cnlQYWNrYWdlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGljaCBhY3Rpdml0eSB0eXBlcyB0byB0cmlnZ2VyIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgLSBhbGwgYWN0aXZpdHkgdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzPzogQXJyYXk8XCJwdWJsaXNoZWRcIiB8IFwidXBkYXRlZFwiPjtcbn1cblxuLyoqXG4gKiBSZWxlYXNlIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWxlYXNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGljaCBhY3Rpdml0eSB0eXBlcyB0byB0cmlnZ2VyIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgLSBhbGwgYWN0aXZpdHkgdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzPzogQXJyYXk8XG4gICAgfCBcInB1Ymxpc2hlZFwiXG4gICAgfCBcInVucHVibGlzaGVkXCJcbiAgICB8IFwiY3JlYXRlZFwiXG4gICAgfCBcImVkaXRlZFwiXG4gICAgfCBcImRlbGV0ZWRcIlxuICAgIHwgXCJwcmVyZWxlYXNlZFwiXG4gICAgfCBcInJlbGVhc2VkXCJcbiAgPjtcbn1cblxuLyoqXG4gKiBXYXRjaCBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2F0Y2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcInN0YXJ0ZWRcIj47XG59XG5cbi8qKlxuICogV29ya2Zsb3cgcnVuIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd1J1bk9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggd29ya2Zsb3cgdG8gdHJpZ2dlciBvbi5cbiAgICpcbiAgICogQGRlZmF1bHRzIC0gYW55IHdvcmtmbG93c1xuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dzPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIFdoaWNoIGFjdGl2aXR5IHR5cGVzIHRvIHRyaWdnZXIgb24uXG4gICAqXG4gICAqIEBkZWZhdWx0cyAtIGFsbCBhY3Rpdml0eSB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXM/OiBBcnJheTxcImNvbXBsZXRlZFwiIHwgXCJyZXF1ZXN0ZWRcIj47XG4gIC8qKlxuICAgKiBXaGljaCBicmFuY2hlcyBvciBicmFuY2gtaWdub3JlIHRvIGxpbWl0IHRoZSB0cmlnZ2VyIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdHMgLSBubyBicmFuY2ggbGltaXRzXG4gICAqL1xuICByZWFkb25seSBicmFuY2hlcz86IEFycmF5PHN0cmluZz47XG59XG5cbi8vI3JlZ2lvbiBFbXB0eSBPcHRpb25zIChmdXR1cmUtcHJvb2ZpbmcgdGhlIEFQSSlcbi8qKlxuICogVGhlIFdvcmtmbG93IGRpc3BhdGNoIGV2ZW50IGFjY2VwdHMgbm8gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd0Rpc3BhdGNoT3B0aW9ucyB7fVxuXG4vKipcbiAqIFRoZSBXb3JrZmxvdyBDYWxsIGV2ZW50IGFjY2VwdHMgbm8gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd0NhbGxPcHRpb25zIHt9XG5cbi8qKlxuICogVGhlIENyZWF0ZSBldmVudCBhY2NlcHRzIG5vIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlT3B0aW9ucyB7fVxuXG4vKipcbiAqIFRoZSBEZWxldGUgZXZlbnQgYWNjZXB0cyBubyBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZU9wdGlvbnMge31cblxuLyoqXG4gKiBUaGUgRGVwbG95bWVudCBldmVudCBhY2NlcHRzIG5vIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95bWVudE9wdGlvbnMge31cblxuLyoqXG4gKiBUaGUgRGVwbG95bWVudCBzdGF0dXMgZXZlbnQgYWNjZXB0cyBubyBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveW1lbnRTdGF0dXNPcHRpb25zIHt9XG5cbi8qKlxuICogVGhlIEZvcmsgZXZlbnQgYWNjZXB0cyBubyBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcmtPcHRpb25zIHt9XG5cbi8qKlxuICogVGhlIEdvbGx1bSBldmVudCBhY2NlcHRzIG5vIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR29sbHVtT3B0aW9ucyB7fVxuXG4vKipcbiAqIFRoZSBQYWdlIGJ1aWxkIGV2ZW50IGFjY2VwdHMgbm8gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdlQnVpbGRPcHRpb25zIHt9XG5cbi8qKlxuICogVGhlIFB1YmxpYyBldmVudCBhY2NlcHRzIG5vIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljT3B0aW9ucyB7fVxuXG4vKipcbiAqIFRoZSBTdGF0dXMgZXZlbnQgYWNjZXB0cyBubyBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YXR1c09wdGlvbnMge31cbi8vI2VuZHJlZ2lvblxuIl19
@@ -1,6 +1,6 @@
1
- import { GitHub } from "./github";
2
- import { GithubCredentials } from "./github-credentials";
3
- import * as workflows from "./workflows-model";
1
+ import type { GitHub } from "./github";
2
+ import type { GithubCredentials } from "./github-credentials";
3
+ import type * as workflows from "./workflows-model";
4
4
  import { Component } from "../component";
5
5
  import { YamlFile } from "../yaml";
6
6
  /**
@@ -139,7 +139,7 @@ class GithubWorkflow extends component_1.Component {
139
139
  }
140
140
  exports.GithubWorkflow = GithubWorkflow;
141
141
  _a = JSII_RTTI_SYMBOL_1;
142
- GithubWorkflow[_a] = { fqn: "projen.github.GithubWorkflow", version: "0.99.38" };
142
+ GithubWorkflow[_a] = { fqn: "projen.github.GithubWorkflow", version: "0.99.39" };
143
143
  function snakeCaseKeys(obj) {
144
144
  if (typeof obj !== "object" || obj == null) {
145
145
  return obj;
@@ -311,4 +311,4 @@ function verifyJobConstraints(jobs) {
311
311
  }
312
312
  }
313
313
  }
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dpdGh1Yi93b3JrZmxvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5Q0FBb0M7QUFDcEMsK0JBQTZCO0FBSzdCLDBDQUFzQztBQUN0Qyw0Q0FBeUM7QUFDekMsa0NBQW1EO0FBQ25ELGtDQUFtQztBQXlFbkM7Ozs7OztHQU1HO0FBQ0gsTUFBYSxjQUFlLFNBQVEscUJBQVM7SUFRM0M7Ozs7T0FJRztJQUNILElBQVcsSUFBSTtRQUliLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBMENEOzs7O09BSUc7SUFDSCxZQUNFLE1BQWMsRUFDZCxJQUFZLEVBQ1osVUFBaUMsRUFBRTtRQUVuQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFqQnJDLFVBQUssR0FHbEIsRUFBRSxDQUFDO1FBRUMsV0FBTSxHQUF1QixFQUFFLENBQUM7UUFjdEMsTUFBTSxrQkFBa0IsR0FBdUI7WUFDN0MsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixLQUFLLEVBQUUsd0JBQXdCO1NBQ2hDLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0I7WUFDekMsQ0FBQyxDQUFFLElBQUEsZ0JBQVMsRUFBQztnQkFDVCxrQkFBa0I7Z0JBQ2xCLE9BQU8sQ0FBQyxrQkFBa0I7YUFDM0IsQ0FBd0I7WUFDM0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBRTlCLElBQUks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SCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dG5hbWUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBzbmFrZSB9IGZyb20gXCJjYXNlXCI7XG5pbXBvcnQgeyBHaXRIdWJBY3Rpb25zUHJvdmlkZXIgfSBmcm9tIFwiLi9hY3Rpb25zLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBHaXRIdWIgfSBmcm9tIFwiLi9naXRodWJcIjtcbmltcG9ydCB7IEdpdGh1YkNyZWRlbnRpYWxzIH0gZnJvbSBcIi4vZ2l0aHViLWNyZWRlbnRpYWxzXCI7XG5pbXBvcnQgKiBhcyB3b3JrZmxvd3MgZnJvbSBcIi4vd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcIi4uL19yZXNvbHZlXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBkZWVwTWVyZ2UsIGtlYmFiQ2FzZUtleXMgfSBmcm9tIFwiLi4vdXRpbFwiO1xuaW1wb3J0IHsgWWFtbEZpbGUgfSBmcm9tIFwiLi4veWFtbFwiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBjb25jdXJyZW5jeWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uY3VycmVuY3lPcHRpb25zIHtcbiAgLyoqXG4gICAqIENvbmN1cnJlbmN5IGdyb3VwIGNvbnRyb2xzIHdoaWNoIHdvcmtmbG93IHJ1bnMgd2lsbCBzaGFyZSB0aGUgc2FtZSBjb25jdXJyZW5jeSBsaW1pdC5cbiAgICogRm9yIGV4YW1wbGUsIGlmIHlvdSBzcGVjaWZ5IGAke3sgZ2l0aHViLndvcmtmbG93IH19LSR7eyBnaXRodWIucmVmIH19YCwgd29ya2Zsb3cgcnVucyB0cmlnZ2VyZWRcbiAgICogb24gdGhlIHNhbWUgYnJhbmNoIGNhbm5vdCBydW4gY29uY3VycmVudGx5LCBidXQgd29ya2Zsb3dzIHJ1bnMgdHJpZ2dlcmVkIG9uIGRpZmZlcmVudCBicmFuY2hlcyBjYW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gJHt7IGdpdGh1Yi53b3JrZmxvdyB9fVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvd3JpdGluZy13b3JrZmxvd3MvY2hvb3Npbmctd2hhdC15b3VyLXdvcmtmbG93LWRvZXMvdXNpbmctY29uY3VycmVuY3kjZXhhbXBsZS1jb25jdXJyZW5jeS1ncm91cHNcbiAgICovXG4gIHJlYWRvbmx5IGdyb3VwPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIGEgd29ya2Zsb3cgaXMgdHJpZ2dlcmVkIHdoaWxlIGFub3RoZXIgb25lIChpbiB0aGUgc2FtZSBncm91cCkgaXMgcnVubmluZywgc2hvdWxkIEdpdEh1YiBjYW5jZWxcbiAgICogdGhlIHJ1bm5pbmcgd29ya2Zsb3c/XG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjYW5jZWxJblByb2dyZXNzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgR2l0aHViV29ya2Zsb3dgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdGh1YldvcmtmbG93T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGb3JjZSB0aGUgY3JlYXRpb24gb2YgdGhlIHdvcmtmbG93IGV2ZW4gaWYgYHdvcmtmbG93c2AgaXMgZGlzYWJsZWQgaW4gYEdpdEh1YmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBjb25jdXJyZW5jeSBsaW1pdGF0aW9ucy4gVXNlIGBjb25jdXJyZW5jeU9wdGlvbnNgIHRvIGNvbmZpZ3VyZSBzcGVjaWZpYyBub24gZGVmYXVsdCB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBsaW1pdENvbmN1cnJlbmN5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uY3VycmVuY3kgZW5zdXJlcyB0aGF0IG9ubHkgYSBzaW5nbGUgam9iIG9yIHdvcmtmbG93IHVzaW5nIHRoZSBzYW1lIGNvbmN1cnJlbmN5IGdyb3VwIHdpbGwgcnVuIGF0IGEgdGltZS4gQ3VycmVudGx5IGluIGJldGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0geyBncm91cDogJHt7IGdpdGh1Yi53b3JrZmxvdyB9fSwgY2FuY2VsSW5Qcm9ncmVzczogZmFsc2UgfVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvbGVhcm4tZ2l0aHViLWFjdGlvbnMvd29ya2Zsb3ctc3ludGF4LWZvci1naXRodWItYWN0aW9ucyNjb25jdXJyZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgY29uY3VycmVuY3lPcHRpb25zPzogQ29uY3VycmVuY3lPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgZm9yIHRoZSB3b3JrZmxvdy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKi9cbiAgcmVhZG9ubHkgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogU2V0IGEgY3VzdG9tIGZpbGUgbmFtZSBmb3IgdGhlIHdvcmtmbG93IGRlZmluaXRpb24gZmlsZS4gTXVzdCBpbmNsdWRlIGVpdGhlciBhIC55bWwgb3IgLnlhbWwgZmlsZSBleHRlbnNpb24uXG4gICAqXG4gICAqIFVzZSB0aGlzIG9wdGlvbiB0byBzZXQgYSBmaWxlIG5hbWUgZm9yIHRoZSB3b3JrZmxvdyBmaWxlLCB0aGF0IGlzIGRpZmZlcmVudCB0aGFuIHRoZSBkaXNwbGF5IG5hbWUuXG4gICAqXG4gICAqIEBleGFtcGxlIFwiYnVpbGQtbmV3LnltbFwiXG4gICAqIEBleGFtcGxlIFwibXktd29ya2Zsb3cueWFtbFwiXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBwYXRoLXNhZmUgdmVyc2lvbiBvZiB0aGUgd29ya2Zsb3cgbmFtZSBwbHVzIHRoZSAueW1sIGZpbGUgZW5kaW5nLCBlLmcuIGJ1aWxkLnltbFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogV29ya2Zsb3cgZm9yIEdpdEh1Yi5cbiAqXG4gKiBBIHdvcmtmbG93IGlzIGEgY29uZmlndXJhYmxlIGF1dG9tYXRlZCBwcm9jZXNzIG1hZGUgdXAgb2Ygb25lIG9yIG1vcmUgam9icy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvcmVmZXJlbmNlL3dvcmtmbG93LXN5bnRheC1mb3ItZ2l0aHViLWFjdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIEdpdGh1YldvcmtmbG93IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB3b3JrZmxvdy4gR2l0SHViIGRpc3BsYXlzIHRoZSBuYW1lcyBvZiB5b3VyIHdvcmtmbG93cyB1bmRlciB5b3VyIHJlcG9zaXRvcnknc1xuICAgKiBcIkFjdGlvbnNcIiB0YWIuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy93cml0aW5nLXdvcmtmbG93cy93b3JrZmxvdy1zeW50YXgtZm9yLWdpdGh1Yi1hY3Rpb25zI25hbWVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsbCBjdXJyZW50IGpvYnMgb2YgdGhlIHdvcmtmbG93LlxuICAgKlxuICAgKiBUaGlzIGlzIGEgcmVhZC1vbmx5IGNvcHksIHVzZSB0aGUgcmVzcGVjdGl2ZSBoZWxwZXIgbWV0aG9kcyB0byBhZGQsIHVwZGF0ZSBvciByZW1vdmUgam9icy5cbiAgICovXG4gIHB1YmxpYyBnZXQgam9icygpOiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHdvcmtmbG93cy5Kb2IgfCB3b3JrZmxvd3MuSm9iQ2FsbGluZ1JldXNhYmxlV29ya2Zsb3dcbiAgPiB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5fam9icyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb25jdXJyZW5jeSBjb25maWd1cmF0aW9uIG9mIHRoZSB3b3JrZmxvdy4gdW5kZWZpbmVkIG1lYW5zIG5vIGNvbmN1cnJlbmN5IGxpbWl0YXRpb25zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbmN1cnJlbmN5PzogQ29uY3VycmVuY3lPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgZm9yIHRoZSB3b3JrZmxvdy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya2Zsb3cgWUFNTCBmaWxlLiBNYXkgbm90IGV4aXN0IGlmIGB3b3JrZmxvd3NFbmFibGVkYCBpcyBmYWxzZSBvbiBgR2l0SHViYC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmaWxlOiBZYW1sRmlsZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogR2l0SHViIEFQSSBhdXRoZW50aWNhdGlvbiBtZXRob2QgdXNlZCBieSBwcm9qZW4gd29ya2Zsb3dzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb2plbkNyZWRlbnRpYWxzOiBHaXRodWJDcmVkZW50aWFscztcblxuICAvKipcbiAgICogVGhlIG5hbWUgZm9yIHdvcmtmbG93IHJ1bnMgZ2VuZXJhdGVkIGZyb20gdGhlIHdvcmtmbG93LiBHaXRIdWIgZGlzcGxheXMgdGhlXG4gICAqIHdvcmtmbG93IHJ1biBuYW1lIGluIHRoZSBsaXN0IG9mIHdvcmtmbG93IHJ1bnMgb24geW91ciByZXBvc2l0b3J5J3NcbiAgICogXCJBY3Rpb25zXCIgdGFiLiBJZiBgcnVuLW5hbWVgIGlzIG9taXR0ZWQgb3IgaXMgb25seSB3aGl0ZXNwYWNlLCB0aGVuIHRoZSBydW5cbiAgICogbmFtZSBpcyBzZXQgdG8gZXZlbnQtc3BlY2lmaWMgaW5mb3JtYXRpb24gZm9yIHRoZSB3b3JrZmxvdyBydW4uIEZvclxuICAgKiBleGFtcGxlLCBmb3IgYSB3b3JrZmxvdyB0cmlnZ2VyZWQgYnkgYSBgcHVzaGAgb3IgYHB1bGxfcmVxdWVzdGAgZXZlbnQsIGl0XG4gICAqIGlzIHNldCBhcyB0aGUgY29tbWl0IG1lc3NhZ2UuXG4gICAqXG4gICAqIFRoaXMgdmFsdWUgY2FuIGluY2x1ZGUgZXhwcmVzc2lvbnMgYW5kIGNhbiByZWZlcmVuY2UgYGdpdGh1YmAgYW5kIGBpbnB1dHNgXG4gICAqIGNvbnRleHRzLlxuICAgKi9cbiAgcHVibGljIHJ1bk5hbWU/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfam9iczogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICB3b3JrZmxvd3MuSm9iIHwgd29ya2Zsb3dzLkpvYkNhbGxpbmdSZXVzYWJsZVdvcmtmbG93XG4gID4gPSB7fTtcbiAgcHJpdmF0ZSBhY3Rpb25zOiBHaXRIdWJBY3Rpb25zUHJvdmlkZXI7XG4gIHByaXZhdGUgZXZlbnRzOiB3b3JrZmxvd3MuVHJpZ2dlcnMgPSB7fTtcblxuICAvKipcbiAgICogQHBhcmFtIGdpdGh1YiBUaGUgR2l0SHViIGNvbXBvbmVudCBvZiB0aGUgcHJvamVjdCB0aGlzIHdvcmtmbG93IGJlbG9uZ3MgdG8uXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSB3b3JrZmxvdywgZGlzcGxheWVkIHVuZGVyIHRoZSByZXBvc2l0b3J5J3MgXCJBY3Rpb25zXCIgdGFiLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBBZGRpdGlvbmFsIG9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSB3b3JrZmxvdy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIGdpdGh1YjogR2l0SHViLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiBHaXRodWJXb3JrZmxvd09wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgc3VwZXIoZ2l0aHViLnByb2plY3QsIGAke25ldy50YXJnZXQubmFtZX0jJHtuYW1lfWApO1xuXG4gICAgY29uc3QgZGVmYXVsdENvbmN1cnJlbmN5OiBDb25jdXJyZW5jeU9wdGlvbnMgPSB7XG4gICAgICBjYW5jZWxJblByb2dyZXNzOiBmYWxzZSxcbiAgICAgIGdyb3VwOiBcIiR7eyBnaXRodWIud29ya2Zsb3cgfX1cIixcbiAgICB9O1xuXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmNvbmN1cnJlbmN5ID0gb3B0aW9ucy5saW1pdENvbmN1cnJlbmN5XG4gICAgICA/IChkZWVwTWVyZ2UoW1xuICAgICAgICAgIGRlZmF1bHRDb25jdXJyZW5jeSxcbiAgICAgICAgICBvcHRpb25zLmNvbmN1cnJlbmN5T3B0aW9ucyxcbiAgICAgICAgXSkgYXMgQ29uY3VycmVuY3lPcHRpb25zKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5wcm9qZW5DcmVkZW50aWFscyA9IGdpdGh1Yi5wcm9qZW5DcmVkZW50aWFscztcbiAgICB0aGlzLmFjdGlvbnMgPSBnaXRodWIuYWN0aW9ucztcblxuICAgIHRoaXMuZW52ID0gb3B0aW9ucy5lbnY7XG5cbiAgICBjb25zdCB3b3JrZmxvd3NFbmFibGVkID0gZ2l0aHViLndvcmtmbG93c0VuYWJsZWQgfHwgb3B0aW9ucy5mb3JjZTtcblxuICAgIGlmICh3b3JrZmxvd3NFbmFibGVkKSB7XG4gICAgICBjb25zdCBmaWxlTmFtZSA9IG9wdGlvbnMuZmlsZU5hbWUgPz8gYCR7bmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpfS55bWxgO1xuICAgICAgY29uc3QgZXh0ZW5zaW9uID0gZXh0bmFtZShmaWxlTmFtZSkudG9Mb3dlckNhc2UoKTtcblxuICAgICAgaWYgKCFbXCIueW1sXCIsIFwiLnlhbWxcIl0uaW5jbHVkZXMoZXh0ZW5zaW9uKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEdpdEh1YiBXb3JrZmxvdyBmaWxlcyBtdXN0IGhhdmUgZWl0aGVyIGEgLnltbCBvciAueWFtbCBmaWxlIGV4dGVuc2lvbiwgZ290OiAke2ZpbGVOYW1lfWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZmlsZSA9IG5ldyBZYW1sRmlsZSh0aGlzLnByb2plY3QsIGAuZ2l0aHViL3dvcmtmbG93cy8ke2ZpbGVOYW1lfWAsIHtcbiAgICAgICAgb2JqOiAoKSA9PiB0aGlzLnJlbmRlcldvcmtmbG93KCksXG4gICAgICAgIC8vIEdpdEh1YiBuZWVkcyB0byByZWFkIHRoZSBmaWxlIGZyb20gdGhlIHJlcG9zaXRvcnkgaW4gb3JkZXIgdG8gd29yay5cbiAgICAgICAgY29tbWl0dGVkOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBldmVudHMgdG8gdHJpZ2dlcnMgdGhlIHdvcmtmbG93LlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRzIFRoZSBldmVudChzKSB0byB0cmlnZ2VyIHRoZSB3b3JrZmxvdy5cbiAgICovXG4gIHB1YmxpYyBvbihldmVudHM6IHdvcmtmbG93cy5UcmlnZ2Vycykge1xuICAgIHRoaXMuZXZlbnRzID0ge1xuICAgICAgLi4udGhpcy5ldmVudHMsXG4gICAgICAuLi5ldmVudHMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgc2luZ2xlIGpvYiB0byB0aGUgd29ya2Zsb3cuXG4gICAqIEBwYXJhbSBpZCBUaGUgam9iIG5hbWUgKHVuaXF1ZSB3aXRoaW4gdGhlIHdvcmtmbG93KVxuICAgKiBAcGFyYW0gam9iIFRoZSBqb2Igc3BlY2lmaWNhdGlvblxuICAgKi9cbiAgcHVibGljIGFkZEpvYihcbiAgICBpZDogc3RyaW5nLFxuICAgIGpvYjogd29ya2Zsb3dzLkpvYiB8IHdvcmtmbG93cy5Kb2JDYWxsaW5nUmV1c2FibGVXb3JrZmxvdyxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5hZGRKb2JzKHsgW2lkXTogam9iIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBqb2JzIHRvIHRoZSB3b3JrZmxvdy5cbiAgICpcbiAgICogQHBhcmFtIGpvYnMgSm9icyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkSm9icyhcbiAgICBqb2JzOiBSZWNvcmQ8c3RyaW5nLCB3b3JrZmxvd3MuSm9iIHwgd29ya2Zsb3dzLkpvYkNhbGxpbmdSZXVzYWJsZVdvcmtmbG93PixcbiAgKSB7XG4gICAgdmVyaWZ5Sm9iQ29uc3RyYWludHMoam9icyk7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl9qb2JzLCB7IC4uLmpvYnMgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc2luZ2xlIGpvYiBmcm9tIHRoZSB3b3JrZmxvdy5cbiAgICogQHBhcmFtIGlkIFRoZSBqb2IgbmFtZSAodW5pcXVlIHdpdGhpbiB0aGUgd29ya2Zsb3cpXG4gICAqL1xuICBwdWJsaWMgZ2V0Sm9iKFxuICAgIGlkOiBzdHJpbmcsXG4gICk6IHdvcmtmbG93cy5Kb2IgfCB3b3JrZmxvd3MuSm9iQ2FsbGluZ1JldXNhYmxlV29ya2Zsb3cge1xuICAgIHJldHVybiB0aGlzLl9qb2JzW2lkXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgc2luZ2xlIGpvYiB0byB0aGUgd29ya2Zsb3cuXG4gICAqIEBwYXJhbSBpZCBUaGUgam9iIG5hbWUgKHVuaXF1ZSB3aXRoaW4gdGhlIHdvcmtmbG93KVxuICAgKi9cbiAgcHVibGljIHVwZGF0ZUpvYihcbiAgICBpZDogc3RyaW5nLFxuICAgIGpvYjogd29ya2Zsb3dzLkpvYiB8IHdvcmtmbG93cy5Kb2JDYWxsaW5nUmV1c2FibGVXb3JrZmxvdyxcbiAgKSB7XG4gICAgdGhpcy51cGRhdGVKb2JzKHsgW2lkXTogam9iIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgam9icyBmb3IgdGhpcyB3b3JrZmxvd1xuICAgKiBEb2VzIGEgY29tcGxldGUgcmVwbGFjZSwgaXQgZG9lcyBub3QgdHJ5IHRvIG1lcmdlIHRoZSBqb2JzXG4gICAqXG4gICAqIEBwYXJhbSBqb2JzIEpvYnMgdG8gdXBkYXRlLlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZUpvYnMoXG4gICAgam9iczogUmVjb3JkPHN0cmluZywgd29ya2Zsb3dzLkpvYiB8IHdvcmtmbG93cy5Kb2JDYWxsaW5nUmV1c2FibGVXb3JrZmxvdz4sXG4gICkge1xuICAgIHZlcmlmeUpvYkNvbnN0cmFpbnRzKGpvYnMpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5fam9icywgeyAuLi5qb2JzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBzaW5nbGUgam9iIHRvIHRoZSB3b3JrZmxvdy5cbiAgICogQHBhcmFtIGlkIFRoZSBqb2IgbmFtZSAodW5pcXVlIHdpdGhpbiB0aGUgd29ya2Zsb3cpXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlSm9iKGlkOiBzdHJpbmcpIHtcbiAgICBkZWxldGUgdGhpcy5fam9ic1tpZF07XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcldvcmtmbG93KCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBcInJ1bi1uYW1lXCI6IHRoaXMucnVuTmFtZSxcbiAgICAgIG9uOiBzbmFrZUNhc2VLZXlzKHRoaXMuZXZlbnRzKSxcbiAgICAgIGNvbmN1cnJlbmN5OiB0aGlzLmNvbmN1cnJlbmN5XG4gICAgICAgID8ge1xuICAgICAgICAgICAgZ3JvdXA6IHRoaXMuY29uY3VycmVuY3k/Lmdyb3VwLFxuICAgICAgICAgICAgXCJjYW5jZWwtaW4tcHJvZ3Jlc3NcIjogdGhpcy5jb25jdXJyZW5jeS5jYW5jZWxJblByb2dyZXNzLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBlbnY6IHRoaXMuZW52LFxuICAgICAgam9iczogcmVuZGVySm9icyh0aGlzLl9qb2JzLCB0aGlzLmFjdGlvbnMpLFxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gc25ha2VDYXNlS2V5czxUID0gdW5rbm93bj4ob2JqOiBUKTogVCB7XG4gIGlmICh0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiIHx8IG9iaiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICByZXR1cm4gb2JqLm1hcChzbmFrZUNhc2VLZXlzKSBhcyBhbnk7XG4gIH1cblxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAobGV0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgaWYgKHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgIT0gbnVsbCkge1xuICAgICAgdiA9IHNuYWtlQ2FzZUtleXModik7XG4gICAgfVxuICAgIHJlc3VsdFtzbmFrZShrKV0gPSB2O1xuICB9XG4gIHJldHVybiByZXN1bHQgYXMgYW55O1xufVxuXG5mdW5jdGlvbiByZW5kZXJKb2JzKFxuICBqb2JzOiBSZWNvcmQ8c3RyaW5nLCB3b3JrZmxvd3MuSm9iIHwgd29ya2Zsb3dzLkpvYkNhbGxpbmdSZXVzYWJsZVdvcmtmbG93PixcbiAgYWN0aW9uczogR2l0SHViQWN0aW9uc1Byb3ZpZGVyLFxuKSB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBbbmFtZSwgam9iXSBvZiBPYmplY3QuZW50cmllcyhqb2JzKSkge1xuICAgIHJlc3VsdFtuYW1lXSA9IHJlbmRlckpvYihqb2IpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG5cbiAgLyoqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy9yZWZlcmVuY2Uvd29ya2Zsb3ctc3ludGF4LWZvci1naXRodWItYWN0aW9ucyAqL1xuICBmdW5jdGlvbiByZW5kZXJKb2IoXG4gICAgam9iOiB3b3JrZmxvd3MuSm9iIHwgd29ya2Zsb3dzLkpvYkNhbGxpbmdSZXVzYWJsZVdvcmtmbG93LFxuICApIHtcbiAgICBjb25zdCBzdGVwcyA9IG5ldyBBcnJheTx3b3JrZmxvd3MuSm9iU3RlcD4oKTtcblxuICAgIC8vIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvdXNpbmctd29ya2Zsb3dzL3JldXNpbmctd29ya2Zsb3dzI3N1cHBvcnRlZC1rZXl3b3Jkcy1mb3Itam9icy10aGF0LWNhbGwtYS1yZXVzYWJsZS13b3JrZmxvd1xuICAgIGlmIChcInVzZXNcIiBpbiBqb2IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IGpvYi5uYW1lLFxuICAgICAgICBuZWVkczogYXJyYXlPclNjYWxhcihqb2IubmVlZHMpLFxuICAgICAgICBpZjogam9iLmlmLFxuICAgICAgICBwZXJtaXNzaW9uczoga2ViYWJDYXNlS2V5cyhqb2IucGVybWlzc2lvbnMpLFxuICAgICAgICBjb25jdXJyZW5jeTogam9iLmNvbmN1cnJlbmN5LFxuICAgICAgICB1c2VzOiBqb2IudXNlcyxcbiAgICAgICAgd2l0aDogam9iLndpdGgsXG4gICAgICAgIHNlY3JldHM6IGpvYi5zZWNyZXRzLFxuICAgICAgICBzdHJhdGVneTogcmVuZGVySm9iU3RyYXRlZ3koam9iLnN0cmF0ZWd5KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGpvYi50b29scykge1xuICAgICAgc3RlcHMucHVzaCguLi5zZXR1cFRvb2xzKGpvYi50b29scykpO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJEZWZpbmVkU3RlcHMgPSBrZWJhYkNhc2VLZXlzKHJlc29sdmUoam9iLnN0ZXBzKSwgZmFsc2UpO1xuICAgIHN0ZXBzLnB1c2goLi4udXNlckRlZmluZWRTdGVwcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogam9iLm5hbWUsXG4gICAgICBuZWVkczogYXJyYXlPclNjYWxhcihqb2IubmVlZHMpLFxuICAgICAgXCJydW5zLW9uXCI6IGFycmF5T3JTY2FsYXIoam9iLnJ1bnNPbkdyb3VwKSA/PyBhcnJheU9yU2NhbGFyKGpvYi5ydW5zT24pLFxuICAgICAgcGVybWlzc2lvbnM6IGtlYmFiQ2FzZUtleXMoam9iLnBlcm1pc3Npb25zKSxcbiAgICAgIGVudmlyb25tZW50OiBqb2IuZW52aXJvbm1lbnQsXG4gICAgICBjb25jdXJyZW5jeTogam9iLmNvbmN1cnJlbmN5LFxuICAgICAgb3V0cHV0czogcmVuZGVySm9iT3V0cHV0cyhqb2Iub3V0cHV0cyksXG4gICAgICBlbnY6IGpvYi5lbnYsXG4gICAgICBkZWZhdWx0czoga2ViYWJDYXNlS2V5cyhqb2IuZGVmYXVsdHMpLFxuICAgICAgaWY6IGpvYi5pZixcbiAgICAgIHN0ZXBzOiBzdGVwcy5tYXAocmVuZGVyU3RlcCksXG4gICAgICBcInRpbWVvdXQtbWludXRlc1wiOiBqb2IudGltZW91dE1pbnV0ZXMsXG4gICAgICBzdHJhdGVneTogcmVuZGVySm9iU3RyYXRlZ3koam9iLnN0cmF0ZWd5KSxcbiAgICAgIFwiY29udGludWUtb24tZXJyb3JcIjogam9iLmNvbnRpbnVlT25FcnJvcixcbiAgICAgIGNvbnRhaW5lcjogam9iLmNvbnRhaW5lcixcbiAgICAgIHNlcnZpY2VzOiBqb2Iuc2VydmljZXMsXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbmRlckpvYk91dHB1dHMob3V0cHV0OiB3b3JrZmxvd3MuSm9iW1wib3V0cHV0c1wiXSkge1xuICAgIGlmIChvdXRwdXQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCByZW5kZXJlZDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGZvciAoY29uc3QgW25hbWUsIHsgc3RlcElkLCBvdXRwdXROYW1lIH1dIG9mIE9iamVjdC5lbnRyaWVzKG91dHB1dCkpIHtcbiAgICAgIHJlbmRlcmVkW25hbWVdID0gYFxcJHt7IHN0ZXBzLiR7c3RlcElkfS5vdXRwdXRzLiR7b3V0cHV0TmFtZX0gfX1gO1xuICAgIH1cbiAgICByZXR1cm4gcmVuZGVyZWQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW5kZXJKb2JTdHJhdGVneShzdHJhdGVneTogd29ya2Zsb3dzLkpvYltcInN0cmF0ZWd5XCJdKSB7XG4gICAgaWYgKHN0cmF0ZWd5ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgcmVuZGVyZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgXCJtYXgtcGFyYWxsZWxcIjogc3RyYXRlZ3kubWF4UGFyYWxsZWwsXG4gICAgICBcImZhaWwtZmFzdFwiOiBzdHJhdGVneS5mYWlsRmFzdCxcbiAgICB9O1xuXG4gICAgaWYgKHN0cmF0ZWd5Lm1hdHJpeCkge1xuICAgICAgY29uc3QgbWF0cml4OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgICAgaW5jbHVkZTogc3RyYXRlZ3kubWF0cml4LmluY2x1ZGUsXG4gICAgICAgIGV4Y2x1ZGU6IHN0cmF0ZWd5Lm1hdHJpeC5leGNsdWRlLFxuICAgICAgfTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVzXSBvZiBPYmplY3QuZW50cmllcyhcbiAgICAgICAgc3RyYXRlZ3kubWF0cml4LmRvbWFpbiA/PyB7fSxcbiAgICAgICkpIHtcbiAgICAgICAgaWYgKGtleSBpbiBtYXRyaXgpIHtcbiAgICAgICAgICAvLyBBIGRvbWFpbiBrZXkgd2FzIHNldCB0byBgaW5jbHVkZWAsIG9yIGBleGNsdWRlYDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYElsbGVnYWwgam9iIHN0cmF0ZWd5IG1hdHJpeCBrZXk6ICR7a2V5fWApO1xuICAgICAgICB9XG4gICAgICAgIG1hdHJpeFtrZXldID0gdmFsdWVzO1xuICAgICAgfVxuICAgICAgcmVuZGVyZWQubWF0cml4ID0gbWF0cml4O1xuICAgIH1cblxuICAgIHJldHVybiByZW5kZXJlZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbmRlclN0ZXAoc3RlcDogd29ya2Zsb3dzLkpvYlN0ZXApIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogc3RlcC5uYW1lLFxuICAgICAgaWQ6IHN0ZXAuaWQsXG4gICAgICBpZjogc3RlcC5pZixcbiAgICAgIHVzZXM6IHN0ZXAudXNlcyAmJiBhY3Rpb25zLmdldChzdGVwLnVzZXMpLFxuICAgICAgZW52OiBzdGVwLmVudixcbiAgICAgIHJ1bjogc3RlcC5ydW4sXG4gICAgICBzaGVsbDogc3RlcC5zaGVsbCxcbiAgICAgIHdpdGg6IHN0ZXAud2l0aCxcbiAgICAgIFwiY29udGludWUtb24tZXJyb3JcIjogc3RlcC5jb250aW51ZU9uRXJyb3IsXG4gICAgICBcInRpbWVvdXQtbWludXRlc1wiOiBzdGVwLnRpbWVvdXRNaW51dGVzLFxuICAgICAgXCJ3b3JraW5nLWRpcmVjdG9yeVwiOiBzdGVwLndvcmtpbmdEaXJlY3RvcnksXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhcnJheU9yU2NhbGFyPFQ+KGFycjogVCB8IFRbXSB8IHVuZGVmaW5lZCk6IFQgfCBUW10gfCB1bmRlZmluZWQge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgIHJldHVybiBhcnI7XG4gIH1cbiAgaWYgKGFyciA9PSBudWxsIHx8IGFyci5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gYXJyO1xuICB9XG4gIGlmIChhcnIubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIGFyclswXTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG5mdW5jdGlvbiBzZXR1cFRvb2xzKHRvb2xzOiB3b3JrZmxvd3MuVG9vbHMpIHtcbiAgY29uc3Qgc3RlcHM6IHdvcmtmbG93cy5Kb2JTdGVwW10gPSBbXTtcblxuICBpZiAodG9vbHMuamF2YSkge1xuICAgIHN0ZXBzLnB1c2goe1xuICAgICAgdXNlczogXCJhY3Rpb25zL3NldHVwLWphdmFAdjVcIixcbiAgICAgIHdpdGg6IHsgZGlzdHJpYnV0aW9uOiBcImNvcnJldHRvXCIsIFwiamF2YS12ZXJzaW9uXCI6IHRvb2xzLmphdmEudmVyc2lvbiB9LFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHRvb2xzLm5vZGUpIHtcbiAgICBzdGVwcy5wdXNoKHtcbiAgICAgIHVzZXM6IFwiYWN0aW9ucy9zZXR1cC1ub2RlQHY2XCIsXG4gICAgICB3aXRoOiB7XG4gICAgICAgIFwibm9kZS12ZXJzaW9uXCI6IHRvb2xzLm5vZGUudmVyc2lvbixcbiAgICAgICAgXCJwYWNrYWdlLW1hbmFnZXItY2FjaGVcIjogXCJmYWxzZVwiLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGlmICh0b29scy5weXRob24pIHtcbiAgICBzdGVwcy5wdXNoKHtcbiAgICAgIHVzZXM6IFwiYWN0aW9ucy9zZXR1cC1weXRob25AdjZcIixcbiAgICAgIHdpdGg6IHsgXCJweXRob24tdmVyc2lvblwiOiB0b29scy5weXRob24udmVyc2lvbiB9LFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHRvb2xzLmdvKSB7XG4gICAgc3RlcHMucHVzaCh7XG4gICAgICB1c2VzOiBcImFjdGlvbnMvc2V0dXAtZ29AdjZcIixcbiAgICAgIHdpdGg6IHsgXCJnby12ZXJzaW9uXCI6IHRvb2xzLmdvLnZlcnNpb24gfSxcbiAgICB9KTtcbiAgfVxuXG4gIGlmICh0b29scy5kb3RuZXQpIHtcbiAgICBzdGVwcy5wdXNoKHtcbiAgICAgIHVzZXM6IFwiYWN0aW9ucy9zZXR1cC1kb3RuZXRAdjVcIixcbiAgICAgIHdpdGg6IHsgXCJkb3RuZXQtdmVyc2lvblwiOiB0b29scy5kb3RuZXQudmVyc2lvbiB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHN0ZXBzO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlKb2JDb25zdHJhaW50cyhcbiAgam9iczogUmVjb3JkPHN0cmluZywgd29ya2Zsb3dzLkpvYiB8IHdvcmtmbG93cy5Kb2JDYWxsaW5nUmV1c2FibGVXb3JrZmxvdz4sXG4pIHtcbiAgLy8gdmVyaWZ5IHRoYXQgam9iIGhhcyBhIFwicGVybWlzc2lvbnNcIiBzdGF0ZW1lbnQgdG8gZW5zdXJlIHdvcmtmbG93IGNhblxuICAvLyBvcGVyYXRlIGluIHJlcG9zIHdpdGggZGVmYXVsdCB0b2tlbnMgc2V0IHRvIHJlYWRvbmx5XG4gIGZvciAoY29uc3QgW2lkLCBqb2JdIG9mIE9iamVjdC5lbnRyaWVzKGpvYnMpKSB7XG4gICAgaWYgKCFqb2IucGVybWlzc2lvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYCR7aWR9OiBhbGwgd29ya2Zsb3cgam9icyBtdXN0IGhhdmUgYSBcInBlcm1pc3Npb25zXCIgY2xhdXNlIHRvIGVuc3VyZSB3b3JrZmxvdyBjYW4gb3BlcmF0ZSBpbiByZXN0cmljdGVkIHJlcG9zaXRvcmllc2AsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dpdGh1Yi93b3JrZmxvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5Q0FBb0M7QUFDcEMsK0JBQTZCO0FBSzdCLDBDQUFzQztBQUN0Qyw0Q0FBeUM7QUFDekMsa0NBQW1EO0FBQ25ELGtDQUFtQztBQXlFbkM7Ozs7OztHQU1HO0FBQ0gsTUFBYSxjQUFlLFNBQVEscUJBQVM7SUFRM0M7Ozs7T0FJRztJQUNILElBQVcsSUFBSTtRQUliLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBMENEOzs7O09BSUc7SUFDSCxZQUNFLE1BQWMsRUFDZCxJQUFZLEVBQ1osVUFBaUMsRUFBRTtRQUVuQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFqQnJDLFVBQUssR0FHbEIsRUFBRSxDQUFDO1FBRUMsV0FBTSxHQUF1QixFQUFFLENBQUM7UUFjdEMsTUFBTSxrQkFBa0IsR0FBdUI7WUFDN0MsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixLQUFLLEVBQUUsd0JBQXdCO1NBQ2hDLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0I7WUFDekMsQ0FBQyxDQUFFLElBQUEsZ0JBQVMsRUFBQztnQkFDVCxrQkFBa0I7Z0JBQ2xCLE9BQU8sQ0FBQyxrQkFBa0I7YUFDM0IsQ0FBd0I7WUFDM0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBRTlCLElBQUks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SCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dG5hbWUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBzbmFrZSB9IGZyb20gXCJjYXNlXCI7XG5pbXBvcnQgdHlwZSB7IEdpdEh1YkFjdGlvbnNQcm92aWRlciB9IGZyb20gXCIuL2FjdGlvbnMtcHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIHsgR2l0SHViIH0gZnJvbSBcIi4vZ2l0aHViXCI7XG5pbXBvcnQgdHlwZSB7IEdpdGh1YkNyZWRlbnRpYWxzIH0gZnJvbSBcIi4vZ2l0aHViLWNyZWRlbnRpYWxzXCI7XG5pbXBvcnQgdHlwZSAqIGFzIHdvcmtmbG93cyBmcm9tIFwiLi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwiLi4vX3Jlc29sdmVcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IGRlZXBNZXJnZSwga2ViYWJDYXNlS2V5cyB9IGZyb20gXCIuLi91dGlsXCI7XG5pbXBvcnQgeyBZYW1sRmlsZSB9IGZyb20gXCIuLi95YW1sXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYGNvbmN1cnJlbmN5YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25jdXJyZW5jeU9wdGlvbnMge1xuICAvKipcbiAgICogQ29uY3VycmVuY3kgZ3JvdXAgY29udHJvbHMgd2hpY2ggd29ya2Zsb3cgcnVucyB3aWxsIHNoYXJlIHRoZSBzYW1lIGNvbmN1cnJlbmN5IGxpbWl0LlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgeW91IHNwZWNpZnkgYCR7eyBnaXRodWIud29ya2Zsb3cgfX0tJHt7IGdpdGh1Yi5yZWYgfX1gLCB3b3JrZmxvdyBydW5zIHRyaWdnZXJlZFxuICAgKiBvbiB0aGUgc2FtZSBicmFuY2ggY2Fubm90IHJ1biBjb25jdXJyZW50bHksIGJ1dCB3b3JrZmxvd3MgcnVucyB0cmlnZ2VyZWQgb24gZGlmZmVyZW50IGJyYW5jaGVzIGNhbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAke3sgZ2l0aHViLndvcmtmbG93IH19XG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy93cml0aW5nLXdvcmtmbG93cy9jaG9vc2luZy13aGF0LXlvdXItd29ya2Zsb3ctZG9lcy91c2luZy1jb25jdXJyZW5jeSNleGFtcGxlLWNvbmN1cnJlbmN5LWdyb3Vwc1xuICAgKi9cbiAgcmVhZG9ubHkgZ3JvdXA/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gYSB3b3JrZmxvdyBpcyB0cmlnZ2VyZWQgd2hpbGUgYW5vdGhlciBvbmUgKGluIHRoZSBzYW1lIGdyb3VwKSBpcyBydW5uaW5nLCBzaG91bGQgR2l0SHViIGNhbmNlbFxuICAgKiB0aGUgcnVubmluZyB3b3JrZmxvdz9cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNhbmNlbEluUHJvZ3Jlc3M/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBHaXRodWJXb3JrZmxvd2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2l0aHViV29ya2Zsb3dPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZvcmNlIHRoZSBjcmVhdGlvbiBvZiB0aGUgd29ya2Zsb3cgZXZlbiBpZiBgd29ya2Zsb3dzYCBpcyBkaXNhYmxlZCBpbiBgR2l0SHViYC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlIGNvbmN1cnJlbmN5IGxpbWl0YXRpb25zLiBVc2UgYGNvbmN1cnJlbmN5T3B0aW9uc2AgdG8gY29uZmlndXJlIHNwZWNpZmljIG5vbiBkZWZhdWx0IHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0Q29uY3VycmVuY3k/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25jdXJyZW5jeSBlbnN1cmVzIHRoYXQgb25seSBhIHNpbmdsZSBqb2Igb3Igd29ya2Zsb3cgdXNpbmcgdGhlIHNhbWUgY29uY3VycmVuY3kgZ3JvdXAgd2lsbCBydW4gYXQgYSB0aW1lLiBDdXJyZW50bHkgaW4gYmV0YS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB7IGdyb3VwOiAke3sgZ2l0aHViLndvcmtmbG93IH19LCBjYW5jZWxJblByb2dyZXNzOiBmYWxzZSB9XG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy9sZWFybi1naXRodWItYWN0aW9ucy93b3JrZmxvdy1zeW50YXgtZm9yLWdpdGh1Yi1hY3Rpb25zI2NvbmN1cnJlbmN5XG4gICAqL1xuICByZWFkb25seSBjb25jdXJyZW5jeU9wdGlvbnM/OiBDb25jdXJyZW5jeU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBmb3IgdGhlIHdvcmtmbG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqL1xuICByZWFkb25seSBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBTZXQgYSBjdXN0b20gZmlsZSBuYW1lIGZvciB0aGUgd29ya2Zsb3cgZGVmaW5pdGlvbiBmaWxlLiBNdXN0IGluY2x1ZGUgZWl0aGVyIGEgLnltbCBvciAueWFtbCBmaWxlIGV4dGVuc2lvbi5cbiAgICpcbiAgICogVXNlIHRoaXMgb3B0aW9uIHRvIHNldCBhIGZpbGUgbmFtZSBmb3IgdGhlIHdvcmtmbG93IGZpbGUsIHRoYXQgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGRpc3BsYXkgbmFtZS5cbiAgICpcbiAgICogQGV4YW1wbGUgXCJidWlsZC1uZXcueW1sXCJcbiAgICogQGV4YW1wbGUgXCJteS13b3JrZmxvdy55YW1sXCJcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIHBhdGgtc2FmZSB2ZXJzaW9uIG9mIHRoZSB3b3JrZmxvdyBuYW1lIHBsdXMgdGhlIC55bWwgZmlsZSBlbmRpbmcsIGUuZy4gYnVpbGQueW1sXG4gICAqL1xuICByZWFkb25seSBmaWxlTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBXb3JrZmxvdyBmb3IgR2l0SHViLlxuICpcbiAqIEEgd29ya2Zsb3cgaXMgYSBjb25maWd1cmFibGUgYXV0b21hdGVkIHByb2Nlc3MgbWFkZSB1cCBvZiBvbmUgb3IgbW9yZSBqb2JzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy9yZWZlcmVuY2Uvd29ya2Zsb3ctc3ludGF4LWZvci1naXRodWItYWN0aW9uc1xuICovXG5leHBvcnQgY2xhc3MgR2l0aHViV29ya2Zsb3cgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHdvcmtmbG93LiBHaXRIdWIgZGlzcGxheXMgdGhlIG5hbWVzIG9mIHlvdXIgd29ya2Zsb3dzIHVuZGVyIHlvdXIgcmVwb3NpdG9yeSdzXG4gICAqIFwiQWN0aW9uc1wiIHRhYi5cbiAgICogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3dyaXRpbmctd29ya2Zsb3dzL3dvcmtmbG93LXN5bnRheC1mb3ItZ2l0aHViLWFjdGlvbnMjbmFtZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQWxsIGN1cnJlbnQgam9icyBvZiB0aGUgd29ya2Zsb3cuXG4gICAqXG4gICAqIFRoaXMgaXMgYSByZWFkLW9ubHkgY29weSwgdXNlIHRoZSByZXNwZWN0aXZlIGhlbHBlciBtZXRob2RzIHRvIGFkZCwgdXBkYXRlIG9yIHJlbW92ZSBqb2JzLlxuICAgKi9cbiAgcHVibGljIGdldCBqb2JzKCk6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgd29ya2Zsb3dzLkpvYiB8IHdvcmtmbG93cy5Kb2JDYWxsaW5nUmV1c2FibGVXb3JrZmxvd1xuICA+IHtcbiAgICByZXR1cm4geyAuLi50aGlzLl9qb2JzIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbmN1cnJlbmN5IGNvbmZpZ3VyYXRpb24gb2YgdGhlIHdvcmtmbG93LiB1bmRlZmluZWQgbWVhbnMgbm8gY29uY3VycmVuY3kgbGltaXRhdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29uY3VycmVuY3k/OiBDb25jdXJyZW5jeU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBmb3IgdGhlIHdvcmtmbG93LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFRoZSB3b3JrZmxvdyBZQU1MIGZpbGUuIE1heSBub3QgZXhpc3QgaWYgYHdvcmtmbG93c0VuYWJsZWRgIGlzIGZhbHNlIG9uIGBHaXRIdWJgLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZpbGU6IFlhbWxGaWxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBHaXRIdWIgQVBJIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB1c2VkIGJ5IHByb2plbiB3b3JrZmxvd3MuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVuQ3JlZGVudGlhbHM6IEdpdGh1YkNyZWRlbnRpYWxzO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBmb3Igd29ya2Zsb3cgcnVucyBnZW5lcmF0ZWQgZnJvbSB0aGUgd29ya2Zsb3cuIEdpdEh1YiBkaXNwbGF5cyB0aGVcbiAgICogd29ya2Zsb3cgcnVuIG5hbWUgaW4gdGhlIGxpc3Qgb2Ygd29ya2Zsb3cgcnVucyBvbiB5b3VyIHJlcG9zaXRvcnknc1xuICAgKiBcIkFjdGlvbnNcIiB0YWIuIElmIGBydW4tbmFtZWAgaXMgb21pdHRlZCBvciBpcyBvbmx5IHdoaXRlc3BhY2UsIHRoZW4gdGhlIHJ1blxuICAgKiBuYW1lIGlzIHNldCB0byBldmVudC1zcGVjaWZpYyBpbmZvcm1hdGlvbiBmb3IgdGhlIHdvcmtmbG93IHJ1bi4gRm9yXG4gICAqIGV4YW1wbGUsIGZvciBhIHdvcmtmbG93IHRyaWdnZXJlZCBieSBhIGBwdXNoYCBvciBgcHVsbF9yZXF1ZXN0YCBldmVudCwgaXRcbiAgICogaXMgc2V0IGFzIHRoZSBjb21taXQgbWVzc2FnZS5cbiAgICpcbiAgICogVGhpcyB2YWx1ZSBjYW4gaW5jbHVkZSBleHByZXNzaW9ucyBhbmQgY2FuIHJlZmVyZW5jZSBgZ2l0aHViYCBhbmQgYGlucHV0c2BcbiAgICogY29udGV4dHMuXG4gICAqL1xuICBwdWJsaWMgcnVuTmFtZT86IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9qb2JzOiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHdvcmtmbG93cy5Kb2IgfCB3b3JrZmxvd3MuSm9iQ2FsbGluZ1JldXNhYmxlV29ya2Zsb3dcbiAgPiA9IHt9O1xuICBwcml2YXRlIGFjdGlvbnM6IEdpdEh1YkFjdGlvbnNQcm92aWRlcjtcbiAgcHJpdmF0ZSBldmVudHM6IHdvcmtmbG93cy5UcmlnZ2VycyA9IHt9O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gZ2l0aHViIFRoZSBHaXRIdWIgY29tcG9uZW50IG9mIHRoZSBwcm9qZWN0IHRoaXMgd29ya2Zsb3cgYmVsb25ncyB0by5cbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHdvcmtmbG93LCBkaXNwbGF5ZWQgdW5kZXIgdGhlIHJlcG9zaXRvcnkncyBcIkFjdGlvbnNcIiB0YWIuXG4gICAqIEBwYXJhbSBvcHRpb25zIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIHdvcmtmbG93LlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgZ2l0aHViOiBHaXRIdWIsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEdpdGh1YldvcmtmbG93T3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBzdXBlcihnaXRodWIucHJvamVjdCwgYCR7bmV3LnRhcmdldC5uYW1lfSMke25hbWV9YCk7XG5cbiAgICBjb25zdCBkZWZhdWx0Q29uY3VycmVuY3k6IENvbmN1cnJlbmN5T3B0aW9ucyA9IHtcbiAgICAgIGNhbmNlbEluUHJvZ3Jlc3M6IGZhbHNlLFxuICAgICAgZ3JvdXA6IFwiJHt7IGdpdGh1Yi53b3JrZmxvdyB9fVwiLFxuICAgIH07XG5cbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuY29uY3VycmVuY3kgPSBvcHRpb25zLmxpbWl0Q29uY3VycmVuY3lcbiAgICAgID8gKGRlZXBNZXJnZShbXG4gICAgICAgICAgZGVmYXVsdENvbmN1cnJlbmN5LFxuICAgICAgICAgIG9wdGlvbnMuY29uY3VycmVuY3lPcHRpb25zLFxuICAgICAgICBdKSBhcyBDb25jdXJyZW5jeU9wdGlvbnMpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnByb2plbkNyZWRlbnRpYWxzID0gZ2l0aHViLnByb2plbkNyZWRlbnRpYWxzO1xuICAgIHRoaXMuYWN0aW9ucyA9IGdpdGh1Yi5hY3Rpb25zO1xuXG4gICAgdGhpcy5lbnYgPSBvcHRpb25zLmVudjtcblxuICAgIGNvbnN0IHdvcmtmbG93c0VuYWJsZWQgPSBnaXRodWIud29ya2Zsb3dzRW5hYmxlZCB8fCBvcHRpb25zLmZvcmNlO1xuXG4gICAgaWYgKHdvcmtmbG93c0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGZpbGVOYW1lID0gb3B0aW9ucy5maWxlTmFtZSA/PyBgJHtuYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCl9LnltbGA7XG4gICAgICBjb25zdCBleHRlbnNpb24gPSBleHRuYW1lKGZpbGVOYW1lKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICBpZiAoIVtcIi55bWxcIiwgXCIueWFtbFwiXS5pbmNsdWRlcyhleHRlbnNpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgR2l0SHViIFdvcmtmbG93IGZpbGVzIG11c3QgaGF2ZSBlaXRoZXIgYSAueW1sIG9yIC55YW1sIGZpbGUgZXh0ZW5zaW9uLCBnb3Q6ICR7ZmlsZU5hbWV9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5maWxlID0gbmV3IFlhbWxGaWxlKHRoaXMucHJvamVjdCwgYC5naXRodWIvd29ya2Zsb3dzLyR7ZmlsZU5hbWV9YCwge1xuICAgICAgICBvYmo6ICgpID0+IHRoaXMucmVuZGVyV29ya2Zsb3coKSxcbiAgICAgICAgLy8gR2l0SHViIG5lZWRzIHRvIHJlYWQgdGhlIGZpbGUgZnJvbSB0aGUgcmVwb3NpdG9yeSBpbiBvcmRlciB0byB3b3JrLlxuICAgICAgICBjb21taXR0ZWQ6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGV2ZW50cyB0byB0cmlnZ2VycyB0aGUgd29ya2Zsb3cuXG4gICAqXG4gICAqIEBwYXJhbSBldmVudHMgVGhlIGV2ZW50KHMpIHRvIHRyaWdnZXIgdGhlIHdvcmtmbG93LlxuICAgKi9cbiAgcHVibGljIG9uKGV2ZW50czogd29ya2Zsb3dzLlRyaWdnZXJzKSB7XG4gICAgdGhpcy5ldmVudHMgPSB7XG4gICAgICAuLi50aGlzLmV2ZW50cyxcbiAgICAgIC4uLmV2ZW50cyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBzaW5nbGUgam9iIHRvIHRoZSB3b3JrZmxvdy5cbiAgICogQHBhcmFtIGlkIFRoZSBqb2IgbmFtZSAodW5pcXVlIHdpdGhpbiB0aGUgd29ya2Zsb3cpXG4gICAqIEBwYXJhbSBqb2IgVGhlIGpvYiBzcGVjaWZpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgYWRkSm9iKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgam9iOiB3b3JrZmxvd3MuSm9iIHwgd29ya2Zsb3dzLkpvYkNhbGxpbmdSZXVzYWJsZVdvcmtmbG93LFxuICApOiB2b2lkIHtcbiAgICB0aGlzLmFkZEpvYnMoeyBbaWRdOiBqb2IgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGpvYnMgdG8gdGhlIHdvcmtmbG93LlxuICAgKlxuICAgKiBAcGFyYW0gam9icyBKb2JzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGRKb2JzKFxuICAgIGpvYnM6IFJlY29yZDxzdHJpbmcsIHdvcmtmbG93cy5Kb2IgfCB3b3JrZmxvd3MuSm9iQ2FsbGluZ1JldXNhYmxlV29ya2Zsb3c+LFxuICApIHtcbiAgICB2ZXJpZnlKb2JDb25zdHJhaW50cyhqb2JzKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuX2pvYnMsIHsgLi4uam9icyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzaW5nbGUgam9iIGZyb20gdGhlIHdvcmtmbG93LlxuICAgKiBAcGFyYW0gaWQgVGhlIGpvYiBuYW1lICh1bmlxdWUgd2l0aGluIHRoZSB3b3JrZmxvdylcbiAgICovXG4gIHB1YmxpYyBnZXRKb2IoXG4gICAgaWQ6IHN0cmluZyxcbiAgKTogd29ya2Zsb3dzLkpvYiB8IHdvcmtmbG93cy5Kb2JDYWxsaW5nUmV1c2FibGVXb3JrZmxvdyB7XG4gICAgcmV0dXJuIHRoaXMuX2pvYnNbaWRdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYSBzaW5nbGUgam9iIHRvIHRoZSB3b3JrZmxvdy5cbiAgICogQHBhcmFtIGlkIFRoZSBqb2IgbmFtZSAodW5pcXVlIHdpdGhpbiB0aGUgd29ya2Zsb3cpXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlSm9iKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgam9iOiB3b3JrZmxvd3MuSm9iIHwgd29ya2Zsb3dzLkpvYkNhbGxpbmdSZXVzYWJsZVdvcmtmbG93LFxuICApIHtcbiAgICB0aGlzLnVwZGF0ZUpvYnMoeyBbaWRdOiBqb2IgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBqb2JzIGZvciB0aGlzIHdvcmtmbG93XG4gICAqIERvZXMgYSBjb21wbGV0ZSByZXBsYWNlLCBpdCBkb2VzIG5vdCB0cnkgdG8gbWVyZ2UgdGhlIGpvYnNcbiAgICpcbiAgICogQHBhcmFtIGpvYnMgSm9icyB0byB1cGRhdGUuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlSm9icyhcbiAgICBqb2JzOiBSZWNvcmQ8c3RyaW5nLCB3b3JrZmxvd3MuSm9iIHwgd29ya2Zsb3dzLkpvYkNhbGxpbmdSZXVzYWJsZVdvcmtmbG93PixcbiAgKSB7XG4gICAgdmVyaWZ5Sm9iQ29uc3RyYWludHMoam9icyk7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl9qb2JzLCB7IC4uLmpvYnMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHNpbmdsZSBqb2IgdG8gdGhlIHdvcmtmbG93LlxuICAgKiBAcGFyYW0gaWQgVGhlIGpvYiBuYW1lICh1bmlxdWUgd2l0aGluIHRoZSB3b3JrZmxvdylcbiAgICovXG4gIHB1YmxpYyByZW1vdmVKb2IoaWQ6IHN0cmluZykge1xuICAgIGRlbGV0ZSB0aGlzLl9qb2JzW2lkXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyV29ya2Zsb3coKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIFwicnVuLW5hbWVcIjogdGhpcy5ydW5OYW1lLFxuICAgICAgb246IHNuYWtlQ2FzZUtleXModGhpcy5ldmVudHMpLFxuICAgICAgY29uY3VycmVuY3k6IHRoaXMuY29uY3VycmVuY3lcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBncm91cDogdGhpcy5jb25jdXJyZW5jeT8uZ3JvdXAsXG4gICAgICAgICAgICBcImNhbmNlbC1pbi1wcm9ncmVzc1wiOiB0aGlzLmNvbmN1cnJlbmN5LmNhbmNlbEluUHJvZ3Jlc3MsXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICBqb2JzOiByZW5kZXJKb2JzKHRoaXMuX2pvYnMsIHRoaXMuYWN0aW9ucyksXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzbmFrZUNhc2VLZXlzPFQgPSB1bmtub3duPihvYmo6IFQpOiBUIHtcbiAgaWYgKHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIgfHwgb2JqID09IG51bGwpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmoubWFwKHNuYWtlQ2FzZUtleXMpIGFzIGFueTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChsZXQgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICBpZiAodHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdiAhPSBudWxsKSB7XG4gICAgICB2ID0gc25ha2VDYXNlS2V5cyh2KTtcbiAgICB9XG4gICAgcmVzdWx0W3NuYWtlKGspXSA9IHY7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdCBhcyBhbnk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckpvYnMoXG4gIGpvYnM6IFJlY29yZDxzdHJpbmcsIHdvcmtmbG93cy5Kb2IgfCB3b3JrZmxvd3MuSm9iQ2FsbGluZ1JldXNhYmxlV29ya2Zsb3c+LFxuICBhY3Rpb25zOiBHaXRIdWJBY3Rpb25zUHJvdmlkZXIsXG4pIHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtuYW1lLCBqb2JdIG9mIE9iamVjdC5lbnRyaWVzKGpvYnMpKSB7XG4gICAgcmVzdWx0W25hbWVdID0gcmVuZGVySm9iKGpvYik7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcblxuICAvKiogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3JlZmVyZW5jZS93b3JrZmxvdy1zeW50YXgtZm9yLWdpdGh1Yi1hY3Rpb25zICovXG4gIGZ1bmN0aW9uIHJlbmRlckpvYihcbiAgICBqb2I6IHdvcmtmbG93cy5Kb2IgfCB3b3JrZmxvd3MuSm9iQ2FsbGluZ1JldXNhYmxlV29ya2Zsb3csXG4gICkge1xuICAgIGNvbnN0IHN0ZXBzID0gbmV3IEFycmF5PHdvcmtmbG93cy5Kb2JTdGVwPigpO1xuXG4gICAgLy8gaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy91c2luZy13b3JrZmxvd3MvcmV1c2luZy13b3JrZmxvd3Mjc3VwcG9ydGVkLWtleXdvcmRzLWZvci1qb2JzLXRoYXQtY2FsbC1hLXJldXNhYmxlLXdvcmtmbG93XG4gICAgaWYgKFwidXNlc1wiIGluIGpvYikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogam9iLm5hbWUsXG4gICAgICAgIG5lZWRzOiBhcnJheU9yU2NhbGFyKGpvYi5uZWVkcyksXG4gICAgICAgIGlmOiBqb2IuaWYsXG4gICAgICAgIHBlcm1pc3Npb25zOiBrZWJhYkNhc2VLZXlzKGpvYi5wZXJtaXNzaW9ucyksXG4gICAgICAgIGNvbmN1cnJlbmN5OiBqb2IuY29uY3VycmVuY3ksXG4gICAgICAgIHVzZXM6IGpvYi51c2VzLFxuICAgICAgICB3aXRoOiBqb2Iud2l0aCxcbiAgICAgICAgc2VjcmV0czogam9iLnNlY3JldHMsXG4gICAgICAgIHN0cmF0ZWd5OiByZW5kZXJKb2JTdHJhdGVneShqb2Iuc3RyYXRlZ3kpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoam9iLnRvb2xzKSB7XG4gICAgICBzdGVwcy5wdXNoKC4uLnNldHVwVG9vbHMoam9iLnRvb2xzKSk7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlckRlZmluZWRTdGVwcyA9IGtlYmFiQ2FzZUtleXMocmVzb2x2ZShqb2Iuc3RlcHMpLCBmYWxzZSk7XG4gICAgc3RlcHMucHVzaCguLi51c2VyRGVmaW5lZFN0ZXBzKTtcblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBqb2IubmFtZSxcbiAgICAgIG5lZWRzOiBhcnJheU9yU2NhbGFyKGpvYi5uZWVkcyksXG4gICAgICBcInJ1bnMtb25cIjogYXJyYXlPclNjYWxhcihqb2IucnVuc09uR3JvdXApID8/IGFycmF5T3JTY2FsYXIoam9iLnJ1bnNPbiksXG4gICAgICBwZXJtaXNzaW9uczoga2ViYWJDYXNlS2V5cyhqb2IucGVybWlzc2lvbnMpLFxuICAgICAgZW52aXJvbm1lbnQ6IGpvYi5lbnZpcm9ubWVudCxcbiAgICAgIGNvbmN1cnJlbmN5OiBqb2IuY29uY3VycmVuY3ksXG4gICAgICBvdXRwdXRzOiByZW5kZXJKb2JPdXRwdXRzKGpvYi5vdXRwdXRzKSxcbiAgICAgIGVudjogam9iLmVudixcbiAgICAgIGRlZmF1bHRzOiBrZWJhYkNhc2VLZXlzKGpvYi5kZWZhdWx0cyksXG4gICAgICBpZjogam9iLmlmLFxuICAgICAgc3RlcHM6IHN0ZXBzLm1hcChyZW5kZXJTdGVwKSxcbiAgICAgIFwidGltZW91dC1taW51dGVzXCI6IGpvYi50aW1lb3V0TWludXRlcyxcbiAgICAgIHN0cmF0ZWd5OiByZW5kZXJKb2JTdHJhdGVneShqb2Iuc3RyYXRlZ3kpLFxuICAgICAgXCJjb250aW51ZS1vbi1lcnJvclwiOiBqb2IuY29udGludWVPbkVycm9yLFxuICAgICAgY29udGFpbmVyOiBqb2IuY29udGFpbmVyLFxuICAgICAgc2VydmljZXM6IGpvYi5zZXJ2aWNlcyxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcmVuZGVySm9iT3V0cHV0cyhvdXRwdXQ6IHdvcmtmbG93cy5Kb2JbXCJvdXRwdXRzXCJdKSB7XG4gICAgaWYgKG91dHB1dCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbmRlcmVkOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgZm9yIChjb25zdCBbbmFtZSwgeyBzdGVwSWQsIG91dHB1dE5hbWUgfV0gb2YgT2JqZWN0LmVudHJpZXMob3V0cHV0KSkge1xuICAgICAgcmVuZGVyZWRbbmFtZV0gPSBgXFwke3sgc3RlcHMuJHtzdGVwSWR9Lm91dHB1dHMuJHtvdXRwdXROYW1lfSB9fWA7XG4gICAgfVxuICAgIHJldHVybiByZW5kZXJlZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbmRlckpvYlN0cmF0ZWd5KHN0cmF0ZWd5OiB3b3JrZmxvd3MuSm9iW1wic3RyYXRlZ3lcIl0pIHtcbiAgICBpZiAoc3RyYXRlZ3kgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCByZW5kZXJlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBcIm1heC1wYXJhbGxlbFwiOiBzdHJhdGVneS5tYXhQYXJhbGxlbCxcbiAgICAgIFwiZmFpbC1mYXN0XCI6IHN0cmF0ZWd5LmZhaWxGYXN0LFxuICAgIH07XG5cbiAgICBpZiAoc3RyYXRlZ3kubWF0cml4KSB7XG4gICAgICBjb25zdCBtYXRyaXg6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgICBpbmNsdWRlOiBzdHJhdGVneS5tYXRyaXguaW5jbHVkZSxcbiAgICAgICAgZXhjbHVkZTogc3RyYXRlZ3kubWF0cml4LmV4Y2x1ZGUsXG4gICAgICB9O1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZXNdIG9mIE9iamVjdC5lbnRyaWVzKFxuICAgICAgICBzdHJhdGVneS5tYXRyaXguZG9tYWluID8/IHt9LFxuICAgICAgKSkge1xuICAgICAgICBpZiAoa2V5IGluIG1hdHJpeCkge1xuICAgICAgICAgIC8vIEEgZG9tYWluIGtleSB3YXMgc2V0IHRvIGBpbmNsdWRlYCwgb3IgYGV4Y2x1ZGVgOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSWxsZWdhbCBqb2Igc3RyYXRlZ3kgbWF0cml4IGtleTogJHtrZXl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbWF0cml4W2tleV0gPSB2YWx1ZXM7XG4gICAgICB9XG4gICAgICByZW5kZXJlZC5tYXRyaXggPSBtYXRyaXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbmRlcmVkO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVuZGVyU3RlcChzdGVwOiB3b3JrZmxvd3MuSm9iU3RlcCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBzdGVwLm5hbWUsXG4gICAgICBpZDogc3RlcC5pZCxcbiAgICAgIGlmOiBzdGVwLmlmLFxuICAgICAgdXNlczogc3RlcC51c2VzICYmIGFjdGlvbnMuZ2V0KHN0ZXAudXNlcyksXG4gICAgICBlbnY6IHN0ZXAuZW52LFxuICAgICAgcnVuOiBzdGVwLnJ1bixcbiAgICAgIHNoZWxsOiBzdGVwLnNoZWxsLFxuICAgICAgd2l0aDogc3RlcC53aXRoLFxuICAgICAgXCJjb250aW51ZS1vbi1lcnJvclwiOiBzdGVwLmNvbnRpbnVlT25FcnJvcixcbiAgICAgIFwidGltZW91dC1taW51dGVzXCI6IHN0ZXAudGltZW91dE1pbnV0ZXMsXG4gICAgICBcIndvcmtpbmctZGlyZWN0b3J5XCI6IHN0ZXAud29ya2luZ0RpcmVjdG9yeSxcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGFycmF5T3JTY2FsYXI8VD4oYXJyOiBUIHwgVFtdIHwgdW5kZWZpbmVkKTogVCB8IFRbXSB8IHVuZGVmaW5lZCB7XG4gIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgcmV0dXJuIGFycjtcbiAgfVxuICBpZiAoYXJyID09IG51bGwgfHwgYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBhcnI7XG4gIH1cbiAgaWYgKGFyci5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gYXJyWzBdO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIHNldHVwVG9vbHModG9vbHM6IHdvcmtmbG93cy5Ub29scykge1xuICBjb25zdCBzdGVwczogd29ya2Zsb3dzLkpvYlN0ZXBbXSA9IFtdO1xuXG4gIGlmICh0b29scy5qYXZhKSB7XG4gICAgc3RlcHMucHVzaCh7XG4gICAgICB1c2VzOiBcImFjdGlvbnMvc2V0dXAtamF2YUB2NVwiLFxuICAgICAgd2l0aDogeyBkaXN0cmlidXRpb246IFwiY29ycmV0dG9cIiwgXCJqYXZhLXZlcnNpb25cIjogdG9vbHMuamF2YS52ZXJzaW9uIH0sXG4gICAgfSk7XG4gIH1cblxuICBpZiAodG9vbHMubm9kZSkge1xuICAgIHN0ZXBzLnB1c2goe1xuICAgICAgdXNlczogXCJhY3Rpb25zL3NldHVwLW5vZGVAdjZcIixcbiAgICAgIHdpdGg6IHtcbiAgICAgICAgXCJub2RlLXZlcnNpb25cIjogdG9vbHMubm9kZS52ZXJzaW9uLFxuICAgICAgICBcInBhY2thZ2UtbWFuYWdlci1jYWNoZVwiOiBcImZhbHNlXCIsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHRvb2xzLnB5dGhvbikge1xuICAgIHN0ZXBzLnB1c2goe1xuICAgICAgdXNlczogXCJhY3Rpb25zL3NldHVwLXB5dGhvbkB2NlwiLFxuICAgICAgd2l0aDogeyBcInB5dGhvbi12ZXJzaW9uXCI6IHRvb2xzLnB5dGhvbi52ZXJzaW9uIH0sXG4gICAgfSk7XG4gIH1cblxuICBpZiAodG9vbHMuZ28pIHtcbiAgICBzdGVwcy5wdXNoKHtcbiAgICAgIHVzZXM6IFwiYWN0aW9ucy9zZXR1cC1nb0B2NlwiLFxuICAgICAgd2l0aDogeyBcImdvLXZlcnNpb25cIjogdG9vbHMuZ28udmVyc2lvbiB9LFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHRvb2xzLmRvdG5ldCkge1xuICAgIHN0ZXBzLnB1c2goe1xuICAgICAgdXNlczogXCJhY3Rpb25zL3NldHVwLWRvdG5ldEB2NVwiLFxuICAgICAgd2l0aDogeyBcImRvdG5ldC12ZXJzaW9uXCI6IHRvb2xzLmRvdG5ldC52ZXJzaW9uIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gc3RlcHM7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUpvYkNvbnN0cmFpbnRzKFxuICBqb2JzOiBSZWNvcmQ8c3RyaW5nLCB3b3JrZmxvd3MuSm9iIHwgd29ya2Zsb3dzLkpvYkNhbGxpbmdSZXVzYWJsZVdvcmtmbG93Pixcbikge1xuICAvLyB2ZXJpZnkgdGhhdCBqb2IgaGFzIGEgXCJwZXJtaXNzaW9uc1wiIHN0YXRlbWVudCB0byBlbnN1cmUgd29ya2Zsb3cgY2FuXG4gIC8vIG9wZXJhdGUgaW4gcmVwb3Mgd2l0aCBkZWZhdWx0IHRva2VucyBzZXQgdG8gcmVhZG9ubHlcbiAgZm9yIChjb25zdCBbaWQsIGpvYl0gb2YgT2JqZWN0LmVudHJpZXMoam9icykpIHtcbiAgICBpZiAoIWpvYi5wZXJtaXNzaW9ucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHtpZH06IGFsbCB3b3JrZmxvdyBqb2JzIG11c3QgaGF2ZSBhIFwicGVybWlzc2lvbnNcIiBjbGF1c2UgdG8gZW5zdXJlIHdvcmtmbG93IGNhbiBvcGVyYXRlIGluIHJlc3RyaWN0ZWQgcmVwb3NpdG9yaWVzYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
- import { Artifacts, Cache, Default, DefaultHooks, IDToken, Image, Include, Job, Retry, Service, VariableConfig, Workflow } from "./configuration-model";
1
+ import type { Artifacts, Cache, Default, DefaultHooks, IDToken, Image, Include, Job, Retry, Service, VariableConfig, Workflow } from "./configuration-model";
2
2
  import { Component } from "../component";
3
- import { Project } from "../project";
3
+ import type { Project } from "../project";
4
4
  import { YamlFile } from "../yaml";
5
5
  /**
6
6
  * Options for `CiConfiguration`.