projen 0.101.13 → 0.101.15

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 (328) hide show
  1. package/.jsii +106 -35
  2. package/lib/ai-instructions.js +2 -2
  3. package/lib/awscdk/auto-discover.js +6 -6
  4. package/lib/awscdk/awscdk-app-java.js +1 -1
  5. package/lib/awscdk/awscdk-app-py.js +1 -1
  6. package/lib/awscdk/awscdk-app-ts.js +1 -1
  7. package/lib/awscdk/awscdk-construct.js +1 -1
  8. package/lib/awscdk/awscdk-deps-java.js +1 -1
  9. package/lib/awscdk/awscdk-deps-js.js +1 -1
  10. package/lib/awscdk/awscdk-deps-py.js +1 -1
  11. package/lib/awscdk/awscdk-deps.js +1 -1
  12. package/lib/awscdk/cdk-config.js +3 -3
  13. package/lib/awscdk/cdk-tasks.js +1 -1
  14. package/lib/awscdk/integration-test.js +1 -1
  15. package/lib/awscdk/lambda-extension.js +1 -1
  16. package/lib/awscdk/lambda-function.js +2 -2
  17. package/lib/build/build-workflow.js +1 -1
  18. package/lib/cdk/auto-discover-base.js +2 -2
  19. package/lib/cdk/construct-lib.js +1 -1
  20. package/lib/cdk/integration-test-base.js +1 -1
  21. package/lib/cdk/jsii-build.js +1 -1
  22. package/lib/cdk/jsii-docgen.js +1 -1
  23. package/lib/cdk/jsii-project.js +1 -1
  24. package/lib/cdk8s/auto-discover.js +2 -2
  25. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  26. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  27. package/lib/cdk8s/cdk8s-construct.js +1 -1
  28. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  29. package/lib/cdk8s/cdk8s-deps.js +1 -1
  30. package/lib/cdk8s/integration-test.js +1 -1
  31. package/lib/cdktf/cdktf-construct.js +1 -1
  32. package/lib/circleci/circleci.js +1 -1
  33. package/lib/cli/task-runtime.d.ts +34 -1
  34. package/lib/cli/task-runtime.js +99 -10
  35. package/lib/component.js +2 -2
  36. package/lib/dependencies.js +1 -1
  37. package/lib/dev-env.js +1 -1
  38. package/lib/docker-compose/docker-compose-service.js +1 -1
  39. package/lib/docker-compose/docker-compose.js +1 -1
  40. package/lib/file.js +1 -1
  41. package/lib/gitattributes.js +1 -1
  42. package/lib/github/actions-provider.js +1 -1
  43. package/lib/github/auto-approve.js +1 -1
  44. package/lib/github/auto-merge.js +1 -1
  45. package/lib/github/auto-queue.js +1 -1
  46. package/lib/github/dependabot.js +1 -1
  47. package/lib/github/dependency-review.js +1 -1
  48. package/lib/github/github-credentials.js +1 -1
  49. package/lib/github/github-project.js +1 -1
  50. package/lib/github/github.js +1 -1
  51. package/lib/github/merge-queue.js +1 -1
  52. package/lib/github/mergify.js +1 -1
  53. package/lib/github/pr-template.js +1 -1
  54. package/lib/github/pull-request-backport.js +1 -1
  55. package/lib/github/pull-request-lint.js +1 -1
  56. package/lib/github/stale.js +1 -1
  57. package/lib/github/task-workflow-job.js +1 -1
  58. package/lib/github/task-workflow.js +1 -1
  59. package/lib/github/workflow-actions.js +1 -1
  60. package/lib/github/workflow-jobs.js +1 -1
  61. package/lib/github/workflow-steps.js +1 -1
  62. package/lib/github/workflows.js +1 -1
  63. package/lib/gitlab/configuration.js +1 -1
  64. package/lib/gitlab/gitlab-configuration.js +1 -1
  65. package/lib/gitlab/nested-configuration.js +1 -1
  66. package/lib/gitpod.js +1 -1
  67. package/lib/ignore-file.js +1 -1
  68. package/lib/ini.js +1 -1
  69. package/lib/java/java-project.js +1 -1
  70. package/lib/java/junit.js +1 -1
  71. package/lib/java/maven-compile.js +1 -1
  72. package/lib/java/maven-packaging.js +1 -1
  73. package/lib/java/maven-sample.js +1 -1
  74. package/lib/java/pom.js +2 -2
  75. package/lib/java/projenrc.js +1 -1
  76. package/lib/javascript/biome/biome.js +1 -1
  77. package/lib/javascript/bundler.js +1 -1
  78. package/lib/javascript/eslint.js +1 -1
  79. package/lib/javascript/jest.js +4 -4
  80. package/lib/javascript/license-checker.js +1 -1
  81. package/lib/javascript/node-package.js +1 -1
  82. package/lib/javascript/node-project.js +1 -1
  83. package/lib/javascript/npm-config.js +1 -1
  84. package/lib/javascript/pnpm-workspace-config.js +2 -2
  85. package/lib/javascript/pnpm-workspace.js +1 -1
  86. package/lib/javascript/prettier.js +1 -1
  87. package/lib/javascript/projenrc.js +1 -1
  88. package/lib/javascript/typescript-config.js +2 -2
  89. package/lib/javascript/upgrade-dependencies.js +2 -2
  90. package/lib/javascript/yarnrc.js +1 -1
  91. package/lib/json-patch.js +1 -1
  92. package/lib/json.js +1 -1
  93. package/lib/license.js +1 -1
  94. package/lib/logger.js +1 -1
  95. package/lib/makefile.js +1 -1
  96. package/lib/object-file.js +1 -1
  97. package/lib/project-build.js +1 -1
  98. package/lib/project-tree.js +1 -1
  99. package/lib/project.js +1 -1
  100. package/lib/projects.js +1 -1
  101. package/lib/projenrc-json.js +1 -1
  102. package/lib/projenrc.js +1 -1
  103. package/lib/python/pip.js +1 -1
  104. package/lib/python/poetry.js +2 -2
  105. package/lib/python/projenrc.js +1 -1
  106. package/lib/python/pyproject-toml-file.js +1 -1
  107. package/lib/python/pytest-sample.js +1 -1
  108. package/lib/python/pytest.js +1 -1
  109. package/lib/python/python-project.js +1 -1
  110. package/lib/python/python-sample.js +1 -1
  111. package/lib/python/requirements-file.js +1 -1
  112. package/lib/python/setuppy.js +1 -1
  113. package/lib/python/setuptools.js +1 -1
  114. package/lib/python/uv-config.js +1 -1
  115. package/lib/python/uv.js +1 -1
  116. package/lib/python/venv.js +1 -1
  117. package/lib/readme.js +1 -1
  118. package/lib/release/apply-version-bump.task.js +48 -0
  119. package/lib/release/bump-version.d.ts +52 -8
  120. package/lib/release/bump-version.js +86 -116
  121. package/lib/release/publisher.js +1 -1
  122. package/lib/release/release-trigger.js +1 -1
  123. package/lib/release/release.js +1 -1
  124. package/lib/release/resolve-latest-tag.task.d.ts +1 -0
  125. package/lib/release/resolve-latest-tag.task.js +23 -0
  126. package/lib/release/suggest-version-bump.task.d.ts +1 -0
  127. package/lib/release/suggest-version-bump.task.js +25 -0
  128. package/lib/renovatebot.js +1 -1
  129. package/lib/run-task.cjs +118 -32
  130. package/lib/sample-file.js +2 -2
  131. package/lib/script-runner.js +1 -1
  132. package/lib/source-code.js +1 -1
  133. package/lib/task-model.d.ts +19 -0
  134. package/lib/task-model.js +1 -1
  135. package/lib/task-shell.js +1 -1
  136. package/lib/task.js +1 -1
  137. package/lib/tasks.js +1 -1
  138. package/lib/testing.js +1 -1
  139. package/lib/textfile.js +1 -1
  140. package/lib/toml.js +1 -1
  141. package/lib/typescript/projenrc-ts.js +1 -1
  142. package/lib/typescript/projenrc.js +1 -1
  143. package/lib/typescript/typescript-runner.js +1 -1
  144. package/lib/typescript/typescript-typedoc.js +1 -1
  145. package/lib/typescript/typescript.js +5 -5
  146. package/lib/util/exec.d.ts +1 -43
  147. package/lib/util/exec.js +4 -73
  148. package/lib/util/task-env.d.ts +11 -0
  149. package/lib/util/task-env.js +41 -0
  150. package/lib/version.d.ts +10 -0
  151. package/lib/version.js +47 -9
  152. package/lib/vscode/devcontainer.js +1 -1
  153. package/lib/vscode/extensions.js +1 -1
  154. package/lib/vscode/launch-config.js +1 -1
  155. package/lib/vscode/settings.js +1 -1
  156. package/lib/vscode/vscode.js +1 -1
  157. package/lib/web/next.js +3 -3
  158. package/lib/web/postcss.js +1 -1
  159. package/lib/web/react.js +3 -3
  160. package/lib/web/tailwind.js +1 -1
  161. package/lib/xmlfile.js +1 -1
  162. package/lib/yaml.js +1 -1
  163. package/node_modules/dax/{script/deps/jsr.io/@david/shell/0.5.4 → esm/deps/jsr.io/@david/shell/0.6.0}/internal.d.ts.map +1 -1
  164. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/mod.d.ts.map +1 -1
  165. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/byteRingBuffer.d.ts.map +1 -1
  166. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/command.d.ts.map +1 -1
  167. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commandHandler.d.ts.map +1 -1
  168. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/args.d.ts.map +1 -1
  169. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cat.d.ts.map +1 -1
  170. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cd.d.ts.map +1 -1
  171. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cpMv.d.ts.map +1 -1
  172. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/echo.d.ts.map +1 -1
  173. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/executable.d.ts.map +1 -1
  174. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/exit.d.ts.map +1 -1
  175. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/export.d.ts.map +1 -1
  176. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/mkdir.d.ts.map +1 -1
  177. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/printenv.d.ts.map +1 -1
  178. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/pwd.d.ts.map +1 -1
  179. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/rm.d.ts.map +1 -1
  180. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/set.d.ts.map +1 -1
  181. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/shopt.d.ts.map +1 -1
  182. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/sleep.d.ts.map +1 -1
  183. package/node_modules/dax/{script/deps/jsr.io/@david/shell/0.5.4 → esm/deps/jsr.io/@david/shell/0.6.0}/src/commands/test.d.ts.map +1 -1
  184. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/touch.d.ts.map +1 -1
  185. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/unset.d.ts.map +1 -1
  186. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/which.d.ts.map +1 -1
  187. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/common.d.ts.map +1 -1
  188. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/dollar.d.ts.map +1 -1
  189. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/fsFile.d.ts.map +1 -1
  190. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/glob.d.ts.map +1 -1
  191. package/node_modules/dax/esm/deps/jsr.io/@david/shell/0.6.0/src/lib/rs_lib.d.ts.map +1 -0
  192. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lib/rs_lib.internal.d.ts.map +1 -1
  193. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lineRingBuffer.d.ts.map +1 -1
  194. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/pipes.d.ts.map +1 -1
  195. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/result.d.ts.map +1 -1
  196. package/node_modules/dax/{script/deps/jsr.io/@david/shell/0.5.4 → esm/deps/jsr.io/@david/shell/0.6.0}/src/shell.d.ts +5 -1
  197. package/node_modules/dax/esm/deps/jsr.io/@david/shell/0.6.0/src/shell.d.ts.map +1 -0
  198. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/signal.d.ts.map +1 -1
  199. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/spawn.d.ts.map +1 -1
  200. package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/streams.d.ts.map +1 -1
  201. package/node_modules/dax/esm/mod.d.ts +3 -3
  202. package/node_modules/dax/esm/mod.js +73 -41
  203. package/node_modules/dax/esm/src/common.d.ts +1 -1
  204. package/node_modules/dax/esm/src/console/utils.d.ts +1 -1
  205. package/node_modules/dax/esm/src/request.d.ts +2 -2
  206. package/node_modules/dax/package.json +1 -1
  207. package/node_modules/dax/{esm/deps/jsr.io/@david/shell/0.5.4 → script/deps/jsr.io/@david/shell/0.6.0}/internal.d.ts.map +1 -1
  208. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/mod.d.ts.map +1 -1
  209. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/byteRingBuffer.d.ts.map +1 -1
  210. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/command.d.ts.map +1 -1
  211. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commandHandler.d.ts.map +1 -1
  212. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/args.d.ts.map +1 -1
  213. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cat.d.ts.map +1 -1
  214. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cd.d.ts.map +1 -1
  215. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cpMv.d.ts.map +1 -1
  216. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/echo.d.ts.map +1 -1
  217. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/executable.d.ts.map +1 -1
  218. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/exit.d.ts.map +1 -1
  219. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/export.d.ts.map +1 -1
  220. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/mkdir.d.ts.map +1 -1
  221. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/printenv.d.ts.map +1 -1
  222. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/pwd.d.ts.map +1 -1
  223. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/rm.d.ts.map +1 -1
  224. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/set.d.ts.map +1 -1
  225. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/shopt.d.ts.map +1 -1
  226. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/sleep.d.ts.map +1 -1
  227. package/node_modules/dax/{esm/deps/jsr.io/@david/shell/0.5.4 → script/deps/jsr.io/@david/shell/0.6.0}/src/commands/test.d.ts.map +1 -1
  228. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/touch.d.ts.map +1 -1
  229. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/unset.d.ts.map +1 -1
  230. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/which.d.ts.map +1 -1
  231. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/common.d.ts.map +1 -1
  232. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/dollar.d.ts.map +1 -1
  233. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/fsFile.d.ts.map +1 -1
  234. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/glob.d.ts.map +1 -1
  235. package/node_modules/dax/script/deps/jsr.io/@david/shell/0.6.0/src/lib/rs_lib.d.ts.map +1 -0
  236. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lib/rs_lib.internal.d.ts.map +1 -1
  237. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lineRingBuffer.d.ts.map +1 -1
  238. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/pipes.d.ts.map +1 -1
  239. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/result.d.ts.map +1 -1
  240. package/node_modules/dax/{esm/deps/jsr.io/@david/shell/0.5.4 → script/deps/jsr.io/@david/shell/0.6.0}/src/shell.d.ts +5 -1
  241. package/node_modules/dax/script/deps/jsr.io/@david/shell/0.6.0/src/shell.d.ts.map +1 -0
  242. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/signal.d.ts.map +1 -1
  243. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/spawn.d.ts.map +1 -1
  244. package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/streams.d.ts.map +1 -1
  245. package/node_modules/dax/script/mod.d.ts +3 -3
  246. package/node_modules/dax/script/mod.js +105 -73
  247. package/node_modules/dax/script/src/common.d.ts +1 -1
  248. package/node_modules/dax/script/src/console/utils.d.ts +1 -1
  249. package/node_modules/dax/script/src/request.d.ts +2 -2
  250. package/package.json +3 -2
  251. package/lib/release/bump-version.task.js +0 -90
  252. package/node_modules/dax/esm/deps/jsr.io/@david/shell/0.5.4/src/lib/rs_lib.d.ts.map +0 -1
  253. package/node_modules/dax/esm/deps/jsr.io/@david/shell/0.5.4/src/shell.d.ts.map +0 -1
  254. package/node_modules/dax/script/deps/jsr.io/@david/shell/0.5.4/src/lib/rs_lib.d.ts.map +0 -1
  255. package/node_modules/dax/script/deps/jsr.io/@david/shell/0.5.4/src/shell.d.ts.map +0 -1
  256. /package/lib/release/{bump-version.task.d.ts → apply-version-bump.task.d.ts} +0 -0
  257. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/internal.d.ts +0 -0
  258. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/mod.d.ts +0 -0
  259. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/byteRingBuffer.d.ts +0 -0
  260. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/command.d.ts +0 -0
  261. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commandHandler.d.ts +0 -0
  262. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/args.d.ts +0 -0
  263. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cat.d.ts +0 -0
  264. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cd.d.ts +0 -0
  265. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cpMv.d.ts +0 -0
  266. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/echo.d.ts +0 -0
  267. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/executable.d.ts +0 -0
  268. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/exit.d.ts +0 -0
  269. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/export.d.ts +0 -0
  270. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/mkdir.d.ts +0 -0
  271. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/printenv.d.ts +0 -0
  272. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/pwd.d.ts +0 -0
  273. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/rm.d.ts +0 -0
  274. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/set.d.ts +0 -0
  275. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/shopt.d.ts +0 -0
  276. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/sleep.d.ts +0 -0
  277. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/test.d.ts +0 -0
  278. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/touch.d.ts +0 -0
  279. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/unset.d.ts +0 -0
  280. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/which.d.ts +0 -0
  281. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/common.d.ts +0 -0
  282. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/dollar.d.ts +0 -0
  283. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/fsFile.d.ts +0 -0
  284. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/glob.d.ts +0 -0
  285. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lib/rs_lib.d.ts +0 -0
  286. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lib/rs_lib.internal.d.ts +0 -0
  287. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lineRingBuffer.d.ts +0 -0
  288. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/pipes.d.ts +0 -0
  289. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/result.d.ts +0 -0
  290. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/signal.d.ts +0 -0
  291. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/spawn.d.ts +0 -0
  292. /package/node_modules/dax/esm/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/streams.d.ts +0 -0
  293. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/internal.d.ts +0 -0
  294. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/mod.d.ts +0 -0
  295. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/byteRingBuffer.d.ts +0 -0
  296. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/command.d.ts +0 -0
  297. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commandHandler.d.ts +0 -0
  298. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/args.d.ts +0 -0
  299. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cat.d.ts +0 -0
  300. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cd.d.ts +0 -0
  301. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/cpMv.d.ts +0 -0
  302. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/echo.d.ts +0 -0
  303. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/executable.d.ts +0 -0
  304. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/exit.d.ts +0 -0
  305. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/export.d.ts +0 -0
  306. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/mkdir.d.ts +0 -0
  307. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/printenv.d.ts +0 -0
  308. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/pwd.d.ts +0 -0
  309. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/rm.d.ts +0 -0
  310. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/set.d.ts +0 -0
  311. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/shopt.d.ts +0 -0
  312. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/sleep.d.ts +0 -0
  313. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/test.d.ts +0 -0
  314. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/touch.d.ts +0 -0
  315. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/unset.d.ts +0 -0
  316. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/commands/which.d.ts +0 -0
  317. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/common.d.ts +0 -0
  318. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/dollar.d.ts +0 -0
  319. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/fsFile.d.ts +0 -0
  320. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/glob.d.ts +0 -0
  321. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lib/rs_lib.d.ts +0 -0
  322. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lib/rs_lib.internal.d.ts +0 -0
  323. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/lineRingBuffer.d.ts +0 -0
  324. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/pipes.d.ts +0 -0
  325. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/result.d.ts +0 -0
  326. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/signal.d.ts +0 -0
  327. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/spawn.d.ts +0 -0
  328. /package/node_modules/dax/script/deps/jsr.io/@david/shell/{0.5.4 → 0.6.0}/src/streams.d.ts +0 -0
@@ -45,7 +45,7 @@ const util_1 = require("./util");
45
45
  * Use this for creating example code files or other resources.
46
46
  */
47
47
  class SampleFile extends component_1.Component {
48
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleFile", version: "0.101.13" };
48
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleFile", version: "0.101.15" };
49
49
  filePath;
50
50
  options;
51
51
  /**
@@ -96,7 +96,7 @@ exports.SampleFile = SampleFile;
96
96
  * Renders the given files into the directory if the directory does not exist. Use this to create sample code files
97
97
  */
98
98
  class SampleDir extends component_1.Component {
99
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleDir", version: "0.101.13" };
99
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleDir", version: "0.101.15" };
100
100
  dir;
101
101
  options;
102
102
  /**
@@ -10,7 +10,7 @@ const component_1 = require("./component");
10
10
  * `.projenrc.ts`) and is attached to a project by whoever consumes it.
11
11
  */
12
12
  class ScriptRunner extends component_1.FutureComponent {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ScriptRunner", version: "0.101.13" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ScriptRunner", version: "0.101.15" };
14
14
  configFor(entrypoint) {
15
15
  return {
16
16
  dependencies: [],
@@ -9,7 +9,7 @@ const textfile_1 = require("./textfile");
9
9
  */
10
10
  class SourceCode extends component_1.Component {
11
11
  filePath;
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SourceCode", version: "0.101.13" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SourceCode", version: "0.101.15" };
13
13
  file;
14
14
  indentLevel = 0;
15
15
  indent;
@@ -199,6 +199,17 @@ export interface TaskStepOptions {
199
199
  readonly env?: {
200
200
  [name: string]: string;
201
201
  };
202
+ /**
203
+ * Capture this step's (trimmed) stdout into an environment variable of this
204
+ * name, visible to all later steps of the task run. For `spawn` steps the
205
+ * spawned subtask's combined stdout is captured.
206
+ *
207
+ * Set only when the step runs (a skipped step leaves it unset) and always
208
+ * overwrites. The step's output still streams live.
209
+ *
210
+ * @default - stdout is not captured
211
+ */
212
+ readonly outputEnv?: string;
202
213
  /**
203
214
  * The shell used to run this step, overriding the task/project shell.
204
215
  *
@@ -257,6 +268,14 @@ export interface TaskStep {
257
268
  readonly env?: {
258
269
  [name: string]: string;
259
270
  };
271
+ /**
272
+ * Capture this step's standard output and expose it to later steps as an
273
+ * environment variable with this name.
274
+ *
275
+ * @see {@link TaskStepOptions.outputEnv}
276
+ * @default - stdout is not captured
277
+ */
278
+ readonly outputEnv?: string;
260
279
  /**
261
280
  * The step shell in `tasks.json` form: a keyword (`"projen"` or `"system"`)
262
281
  * or an invocation argument list.
package/lib/task-model.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90YXNrLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRhc2tTaGVsbCB9IGZyb20gXCIuL3Rhc2stc2hlbGxcIjtcblxuLyoqXG4gKiBTY2hlbWEgZm9yIGB0YXNrcy5qc29uYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrc01hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSB0YXNrcyBtYW5pZmVzdCBzY2hlbWEuXG4gICAqXG4gICAqIFVzZWQgYnkgdGhlIHRhc2sgcnVudGltZSB0byBkZXRlY3QgbWFuaWZlc3RzIHByb2R1Y2VkIGJ5IGEgbmV3ZXIgdmVyc2lvblxuICAgKiBvZiBwcm9qZW4uIE1hbmlmZXN0cyBnZW5lcmF0ZWQgYnkgb2xkZXIgdmVyc2lvbnMgb2YgcHJvamVuIG9taXQgdGhpcyBmaWVsZFxuICAgKiBhbmQgYXJlIHRyZWF0ZWQgYXMgXCJsZWdhY3lcIiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIG1hbmlmZXN0IGlzIHRyZWF0ZWQgYXMgYSBsZWdhY3kgKHVudmVyc2lvbmVkKSBtYW5pZmVzdFxuICAgKi9cbiAgcmVhZG9ubHkgbWFuaWZlc3RWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBbGwgdGFza3MgYXZhaWxhYmxlIGZvciB0aGlzIHByb2plY3QuXG4gICAqL1xuICByZWFkb25seSB0YXNrcz86IHsgW25hbWU6IHN0cmluZ106IFRhc2tTcGVjIH07XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IGZvciBhbGwgdGFza3MuXG4gICAqL1xuICByZWFkb25seSBlbnY/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdGFzayBzaGVsbCwgaW4gYHRhc2tzLmpzb25gIGZvcm06IGEga2V5d29yZCAoYFwicHJvamVuXCJgIG9yXG4gICAqIGBcInN5c3RlbVwiYCkgb3IgYW4gaW52b2NhdGlvbiBhcmd1bWVudCBsaXN0LiBTZWVcbiAgICoge0BsaW5rIFRhc2tDb21tb25PcHRpb25zLnNoZWxsfS5cbiAgICovXG4gIHJlYWRvbmx5IHNoZWxsPzogc3RyaW5nIHwgc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFza0NvbW1vbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoaXMgYnVpbGQgY29tbWFuZC5cbiAgICogQGRlZmF1bHQgLSB0aGUgdGFzayBuYW1lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogRGVmaW5lcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhpcyB0YXNrLlxuICAgKiBWYWx1ZXMgaW4gdGhpcyBtYXAgd2lsbCBiZSBldmFsdWF0ZWQgaW4gYSBzaGVsbCwgc28geW91IGNhbiBkbyBzdHVmZiBsaWtlIGAkKGVjaG8gXCJmb29cIilgLlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgcmVhZG9ubHkgZW52PzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IG11c3QgYmUgZGVmaW5lZCBpbiBvcmRlciB0byBleGVjdXRlXG4gICAqIHRoaXMgdGFzay4gVGFzayBleGVjdXRpb24gd2lsbCBmYWlsIGlmIG9uZSBvZiB0aGVzZSBpcyBub3QgZGVmaW5lZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkRW52Pzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEEgc2hlbGwgY29tbWFuZCB3aGljaCBkZXRlcm1pbmVzIGlmIHRoZSB0aGlzIHRhc2sgc2hvdWxkIGJlIGV4ZWN1dGVkLiBJZlxuICAgKiB0aGUgcHJvZ3JhbSBleGl0cyB3aXRoIGEgemVybyBleGl0IGNvZGUsIHN0ZXBzIHdpbGwgYmUgZXhlY3V0ZWQuIEEgbm9uLXplcm9cbiAgICogY29kZSBtZWFucyB0aGF0IHRhc2sgd2lsbCBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZGl0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya2luZyBkaXJlY3RvcnkgZm9yIGFsbCBzdGVwcyBpbiB0aGlzIHRhc2sgKHVubGVzcyBvdmVycmlkZGVuIGJ5IHRoZVxuICAgKiBzdGVwKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICByZWFkb25seSBjd2Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzaGVsbCB1c2VkIHRvIHJ1biB0aGlzIHRhc2sncyBjb21tYW5kcywgaW5jbHVkaW5nIGl0cyBgY29uZGl0aW9uYCBhbmRcbiAgICogYCQoLi4uKWAgZW52aXJvbm1lbnQgZXZhbHVhdGlvbi4gVXNlIHtAbGluayBUYXNrU2hlbGx9IHRvIHBpY2sgYSBidWlsdC1pblxuICAgKiBvciBhbiBleHBsaWNpdCBpbnZvY2F0aW9uLiBTZXQgYXQgcHJvamVjdCwgdGFzayBvciBzdGVwIGxldmVsOyB0aGUgbmVhcmVzdFxuICAgKiBkZWNsYXJlZCBsZXZlbCB3aW5zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGluaGVyaXRlZCBmcm9tIHRoZSB0YXNrL3Byb2plY3QsIG90aGVyd2lzZSB0aGUgYnVpbHQtaW4gcHJvamVuIHNoZWxsXG4gICAqL1xuICByZWFkb25seSBzaGVsbD86IFRhc2tTaGVsbDtcbn1cblxuLyoqXG4gKiBTcGVjaWZpY2F0aW9uIG9mIGEgc2luZ2xlIHRhc2suXG4gKlxuICogVGhlIGB0YXNrcy5qc29uYCAobWFuaWZlc3QpIGZvcm0gb2YgYSB0YXNrLiB7QGxpbmsgVGFza0NvbW1vbk9wdGlvbnN9IGlzIHRoZVxuICogZm9ybSB1c2VkIHRvIGRlZmluZSBvbmU7IHRoZXkgZGlmZmVyIG9ubHkgaW4gdGhlIHJlbmRlcmVkIGBzaGVsbGAgZmllbGQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFza1NwZWMge1xuICAvKipcbiAgICogVGFzayBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhpcyBidWlsZCBjb21tYW5kLlxuICAgKiBAZGVmYXVsdCAtIHRoZSB0YXNrIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGlzIHRhc2suXG4gICAqIFZhbHVlcyBpbiB0aGlzIG1hcCB3aWxsIGJlIGV2YWx1YXRlZCBpbiBhIHNoZWxsLCBzbyB5b3UgY2FuIGRvIHN0dWZmIGxpa2UgYCQoZWNobyBcImZvb1wiKWAuXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICByZWFkb25seSBlbnY/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQSBzZXQgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgbXVzdCBiZSBkZWZpbmVkIGluIG9yZGVyIHRvIGV4ZWN1dGVcbiAgICogdGhpcyB0YXNrLiBUYXNrIGV4ZWN1dGlvbiB3aWxsIGZhaWwgaWYgb25lIG9mIHRoZXNlIGlzIG5vdCBkZWZpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZWRFbnY/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBzaGVsbCBjb21tYW5kIHdoaWNoIGRldGVybWluZXMgaWYgdGhlIHRoaXMgdGFzayBzaG91bGQgYmUgZXhlY3V0ZWQuIElmXG4gICAqIHRoZSBwcm9ncmFtIGV4aXRzIHdpdGggYSB6ZXJvIGV4aXQgY29kZSwgc3RlcHMgd2lsbCBiZSBleGVjdXRlZC4gQSBub24temVyb1xuICAgKiBjb2RlIG1lYW5zIHRoYXQgdGFzayB3aWxsIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBjb25kaXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBmb3IgYWxsIHN0ZXBzIGluIHRoaXMgdGFzayAodW5sZXNzIG92ZXJyaWRkZW4gYnkgdGhlXG4gICAqIHN0ZXApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHByb2Nlc3MuY3dkKClcbiAgICovXG4gIHJlYWRvbmx5IGN3ZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRhc2sgc2hlbGwgaW4gYHRhc2tzLmpzb25gIGZvcm06IGEga2V5d29yZCAoYFwicHJvamVuXCJgIG9yIGBcInN5c3RlbVwiYClcbiAgICogb3IgYW4gaW52b2NhdGlvbiBhcmd1bWVudCBsaXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBidWlsdC1pbiBwcm9qZW4gc2hlbGxcbiAgICovXG4gIHJlYWRvbmx5IHNoZWxsPzogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRhc2sgc3RlcHMuXG4gICAqL1xuICByZWFkb25seSBzdGVwcz86IFRhc2tTdGVwW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGFzayBzdGVwcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrU3RlcE9wdGlvbnMge1xuICAvKipcbiAgICogU3RlcCBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IGZvciB0aGlzIHN0ZXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGV0ZXJtaW5lZCBieSB0aGUgdGFza1xuICAgKi9cbiAgcmVhZG9ubHkgY3dkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNoZWxsIGNvbW1hbmQgd2hpY2ggZGV0ZXJtaW5lcyBpZiB0aGUgdGhpcyBzdGVwIHNob3VsZCBiZSBleGVjdXRlZC4gSWZcbiAgICogdGhlIHByb2dyYW0gZXhpdHMgd2l0aCBhIHplcm8gZXhpdCBjb2RlLCB0aGUgc3RlcCB3aWxsIGJlIGV4ZWN1dGVkLiBBIG5vbi16ZXJvXG4gICAqIGNvZGUgbWVhbnMgdGhlIHN0ZXAgd2lsbCBiZSBza2lwcGVkIChzdWJzZXF1ZW50IHRhc2sgc3RlcHMgd2lsbCBzdGlsbCBiZSBldmFsdWF0ZWQvZXhlY3V0ZWQpLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZGl0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhpcyBzdGVwIHJlY2VpdmUgYXJncyBwYXNzZWQgdG8gdGhlIHRhc2suXG4gICAqXG4gICAqIElmIGB0cnVlYCwgYXJncyBhcmUgcGFzc2VkIHRocm91Z2ggYXQgdGhlIGVuZCBvZiB0aGUgYGV4ZWNgIHNoZWxsIGNvbW1hbmQuXFxcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBhcmdzIGNhbiBiZSBjaGFuZ2VkIGJ5IGluY2x1ZGluZyB0aGUgbWFya2VyIGAkQGAgaW5zaWRlIHRoZSBjb21tYW5kIHN0cmluZy5cbiAgICpcbiAgICogSWYgdGhlIG1hcmtlciBpcyBleHBsaWNpdGx5IGRvdWJsZS1xdW90ZWQgKFwiJEBcIikgYXJndW1lbnRzIHdpbGwgYmUgd3JhcHBlZCBpbiBkb3VibGUgcXVvdGVzLCBhcHByb3hpbWF0aW5nXG4gICAqIHRoZSB3aGl0ZXNwYWNlIHByZXNlcnZpbmcgYmVoYXZpb3Igb2YgYmFzaCB2YXJpYWJsZSBleHBhbnNpb24uXG4gICAqXG4gICAqIElmIHRoZSBzdGVwIHNwYXducyBhIHN1YnRhc2ssIGFyZ3MgYXJlIHBhc3NlZCB0byB0aGUgc3VidGFzay5cbiAgICogVGhlIHN1YnRhc2sgbXVzdCBkZWZpbmUgc3RlcHMgcmVjZWl2aW5nIGFyZ3MgZm9yIHRoaXMgdG8gaGF2ZSBhbnkgZWZmZWN0LlxuICAgKlxuICAgKiBAZXhhbXBsZSB0YXNrLmV4ZWMoXCJlY2hvIEhlbGxvICRAIFdvcmxkIVwiLCB7IHJlY2VpdmVBcmdzOiB0cnVlIH0pO1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVjZWl2ZUFyZ3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgZml4ZWQgYXJndW1lbnRzIGFsd2F5cyBwYXNzZWQgdG8gdGhlIHN0ZXAuXG4gICAqXG4gICAqIFVzZWZ1bCB0byByZS11c2UgZXhpc3RpbmcgdGFza3Mgd2l0aG91dCBoYXZpbmcgdG8gcmUtZGVmaW5lIHRoZSB3aG9sZSB0YXNrLlxcXG4gICAqIEZpeGVkIGFyZ3MgYXJlIGFsd2F5cyBwYXNzZWQgdG8gdGhlIHN0ZXAsIGV2ZW4gaWYgYHJlY2VpdmVBcmdzYCBpcyBgZmFsc2VgXG4gICAqIGFuZCBhcmUgYWx3YXlzIHBhc3NlZCBiZWZvcmUgYW55IGFyZ3MgdGhlIHRhc2sgaXMgY2FsbGVkIHdpdGguXG4gICAqXG4gICAqIElmIHRoZSBzdGVwIGV4ZWN1dGVzIGEgc2hlbGwgY29tbWFuZHMsIGFyZ3MgYXJlIHBhc3NlZCB0aHJvdWdoIGF0IHRoZSBlbmQgb2YgdGhlIGBleGVjYCBzaGVsbCBjb21tYW5kLlxcXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgYXJncyBjYW4gYmUgY2hhbmdlZCBieSBpbmNsdWRpbmcgdGhlIG1hcmtlciBgJEBgIGluc2lkZSB0aGUgY29tbWFuZCBzdHJpbmcuXG4gICAqXG4gICAqIElmIHRoZSBzdGVwIHNwYXducyBhIHN1YnRhc2ssIGFyZ3MgYXJlIHBhc3NlZCB0byB0aGUgc3VidGFzay5cbiAgICogVGhlIHN1YnRhc2sgbXVzdCBkZWZpbmUgc3RlcHMgcmVjZWl2aW5nIGFyZ3MgZm9yIHRoaXMgdG8gaGF2ZSBhbnkgZWZmZWN0LlxuICAgKlxuICAgKiBJZiB0aGUgc3RlcCBjYWxscyBhIGJ1aWx0aW4gc2NyaXB0LCBhcmdzIGFyZSBwYXNzZWQgdG8gdGhlIHNjcmlwdC5cbiAgICogSXQgaXMgdXAgdG8gdGhlIHNjcmlwdCB0byB1c2Ugb3IgZGlzY2FyZCB0aGUgYXJndW1lbnRzLlxuICAgKlxuICAgKiBAZXhhbXBsZSB0YXNrLnNwYXduKFwiZGVwbG95XCIsIHsgYXJnczogW1wiLS1mb3JjZVwiXSB9KTtcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgc3RlcFxuICAgKi9cbiAgcmVhZG9ubHkgYXJncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGlzIHN0ZXAgKGBleGVjYCBhbmQgYGJ1aWx0aW5gIG9ubHkpLlxuICAgKiBWYWx1ZXMgaW4gdGhpcyBtYXAgY2FuIGJlIHNpbXBsZSwgbGl0ZXJhbCB2YWx1ZXMgb3Igc2hlbGwgZXhwcmVzc2lvbnMgdGhhdCB3aWxsIGJlIGV2YWx1YXRlZCBhdCBydW50aW1lIGUuZy4gYCQoZWNobyBcImZvb1wiKWAuXG4gICAqXG4gICAqIEBleGFtcGxlIHsgXCJmb29cIjogXCJiYXJcIiwgXCJib29cIjogXCIkKGVjaG8gYmF6KVwiIH1cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZGVmaW5lZCBpbiBzdGVwXG4gICAqL1xuICByZWFkb25seSBlbnY/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIHNoZWxsIHVzZWQgdG8gcnVuIHRoaXMgc3RlcCwgb3ZlcnJpZGluZyB0aGUgdGFzay9wcm9qZWN0IHNoZWxsLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBUYXNrQ29tbW9uT3B0aW9ucy5zaGVsbH1cbiAgICogQGRlZmF1bHQgLSB0aGUgdGFzaydzIChvciBwcm9qZWN0J3MpIHNoZWxsXG4gICAqL1xuICByZWFkb25seSBzaGVsbD86IFRhc2tTaGVsbDtcbn1cblxuLyoqXG4gKiBBIHNpbmdsZSBzdGVwIHdpdGhpbiBhIHRhc2suIFRoZSBzdGVwIGNvdWxkIGVpdGhlciBiZSAgdGhlIGV4ZWN1dGlvbiBvZiBhXG4gKiBzaGVsbCBjb21tYW5kIG9yIGV4ZWN1dGlvbiBvZiBhIHN1Yi10YXNrLCBieSBuYW1lLlxuICpcbiAqIFRoZSBgdGFza3MuanNvbmAgKG1hbmlmZXN0KSBmb3JtIG9mIGEgc3RlcC4ge0BsaW5rIFRhc2tTdGVwT3B0aW9uc30gaXMgdGhlXG4gKiBmb3JtIHVzZWQgdG8gZGVmaW5lIHN0ZXBzICh2aWEgYHRhc2suZXhlYygpYCBldGMuKTsgdGhleSBkaWZmZXIgb25seSBpbiB0aGVcbiAqIHJlbmRlcmVkIGBzaGVsbGAgZmllbGQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFza1N0ZXAge1xuICAvKipcbiAgICogU3RlcCBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IGZvciB0aGlzIHN0ZXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGV0ZXJtaW5lZCBieSB0aGUgdGFza1xuICAgKi9cbiAgcmVhZG9ubHkgY3dkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNoZWxsIGNvbW1hbmQgd2hpY2ggZGV0ZXJtaW5lcyBpZiB0aGUgdGhpcyBzdGVwIHNob3VsZCBiZSBleGVjdXRlZC4gSWZcbiAgICogdGhlIHByb2dyYW0gZXhpdHMgd2l0aCBhIHplcm8gZXhpdCBjb2RlLCB0aGUgc3RlcCB3aWxsIGJlIGV4ZWN1dGVkLiBBIG5vbi16ZXJvXG4gICAqIGNvZGUgbWVhbnMgdGhlIHN0ZXAgd2lsbCBiZSBza2lwcGVkIChzdWJzZXF1ZW50IHRhc2sgc3RlcHMgd2lsbCBzdGlsbCBiZSBldmFsdWF0ZWQvZXhlY3V0ZWQpLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZGl0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhpcyBzdGVwIHJlY2VpdmUgYXJncyBwYXNzZWQgdG8gdGhlIHRhc2suXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIFRhc2tTdGVwT3B0aW9ucy5yZWNlaXZlQXJnc31cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJlY2VpdmVBcmdzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGZpeGVkIGFyZ3VtZW50cyBhbHdheXMgcGFzc2VkIHRvIHRoZSBzdGVwLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBUYXNrU3RlcE9wdGlvbnMuYXJnc31cbiAgICogQGRlZmF1bHQgLSBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgc3RlcFxuICAgKi9cbiAgcmVhZG9ubHkgYXJncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGlzIHN0ZXAgKGBleGVjYCBhbmQgYGJ1aWx0aW5gIG9ubHkpLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBUYXNrU3RlcE9wdGlvbnMuZW52fVxuICAgKiBAZGVmYXVsdCAtIG5vIGVudmlyb25tZW50IHZhcmlhYmxlcyBkZWZpbmVkIGluIHN0ZXBcbiAgICovXG4gIHJlYWRvbmx5IGVudj86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgc3RlcCBzaGVsbCBpbiBgdGFza3MuanNvbmAgZm9ybTogYSBrZXl3b3JkIChgXCJwcm9qZW5cImAgb3IgYFwic3lzdGVtXCJgKVxuICAgKiBvciBhbiBpbnZvY2F0aW9uIGFyZ3VtZW50IGxpc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIHRhc2sncyAob3IgcHJvamVjdCdzKSBzaGVsbFxuICAgKi9cbiAgcmVhZG9ubHkgc2hlbGw/OiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU2hlbGwgY29tbWFuZCB0byBleGVjdXRlLlxuICAgKlxuICAgKiBUaGUgd2hvbGUgY29tbWFuZCBpcyBhIHNpbmdsZSBzaGVsbCBzdHJpbmcuIFRvIHBhc3MgYXJndW1lbnRzIGFzIGEgbGlzdFxuICAgKiBpbnN0ZWFkIC0gd2l0aG91dCBoYXZpbmcgdG8gcXVvdGUgc3BhY2VzIG9yIG90aGVyIGNoYXJhY3RlcnMgeW91cnNlbGYgLVxuICAgKiB1c2UgYGV4ZWNBcmdzYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkb24ndCBleGVjdXRlIGEgc2hlbGwgY29tbWFuZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhlYz86IHN0cmluZztcblxuICAvKipcbiAgICogU2hlbGwgY29tbWFuZCB0byBleGVjdXRlLCBwcm92aWRlZCBhcyBhIGxpc3Qgb2YgdGhlIHByb2dyYW0gZm9sbG93ZWQgYnlcbiAgICogaXRzIGFyZ3VtZW50cyAoYW4gXCJhcmd2XCIpLlxuICAgKlxuICAgKiBPZnRlbiBtb3JlIGNvbnZlbmllbnQgdGhhbiBgZXhlY2A6IGVhY2ggZWxlbWVudCBpcyBwYXNzZWQgdG8gdGhlXG4gICAqIHByb2dyYW0gYXMtaXMsIHNvIGFyZ3VtZW50cyB3aXRoIHNwYWNlcyBvciBzcGVjaWFsIGNoYXJhY3RlcnMgZG9uJ3QgbmVlZFxuICAgKiBxdW90aW5nLiBGaXhlZCAoYGFyZ3NgKSBvciByZWNlaXZlZCAoYHJlY2VpdmVBcmdzYCkgYXJndW1lbnRzIGFyZSBpbnNlcnRlZFxuICAgKiB3aGVyZXZlciBhIGAkQGAgZWxlbWVudCBhcHBlYXJzLCBvciBhcHBlbmRlZCBhdCB0aGUgZW5kIGlmIHRoZXJlIGlzIG5vbmUuXG4gICAqXG4gICAqIFRoZSBlbGVtZW50cyBhcmUgbm90IHJ1biB0aHJvdWdoIGEgc2hlbGwsIHNvIGVudmlyb25tZW50IHZhcmlhYmxlcyAoYCRGT09gKVxuICAgKiBhcmUgbm90IGV4cGFuZGVkIGFuZCBvdGhlciBzaGVsbCBmZWF0dXJlcyBhcmUgdW5hdmFpbGFibGUuIFVzZSBgZXhlY2BcbiAgICogaWYgeW91IG5lZWQgdGhlbS5cbiAgICpcbiAgICogTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYGV4ZWNgLlxuICAgKlxuICAgKiBAZXhhbXBsZSB7IGV4ZWNBcmdzOiBbXCJlY2hvXCIsIFwiaGVsbG8gd29ybGRcIl0gfVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRvbid0IGV4ZWN1dGUgYSBzaGVsbCBjb21tYW5kXG4gICAqL1xuICByZWFkb25seSBleGVjQXJncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTdWJ0YXNrIHRvIGV4ZWN1dGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkb24ndCBzcGF3biBhIHN1YnRhc2tcbiAgICovXG4gIHJlYWRvbmx5IHNwYXduPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcmludCBhIG1lc3NhZ2UuXG4gICAqIEBkZWZhdWx0IC0gZG9uJ3Qgc2F5IGFueXRoaW5nXG4gICAqL1xuICByZWFkb25seSBzYXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIGEgYnVpbHQtaW4gdGFzayB0byBleGVjdXRlLlxuICAgKlxuICAgKiBCdWlsdC1pbiB0YXNrcyBhcmUgbm9kZS5qcyBwcm9ncmFtcyBiYWtlZCBpbnRvIHRoZSBwcm9qZW4gbW9kdWxlIGFuZCBhc1xuICAgKiBjb21wb25lbnQgcnVudGltZSBoZWxwZXJzLlxuICAgKlxuICAgKiBUaGUgbmFtZSBpcyBhIHBhdGggcmVsYXRpdmUgdG8gdGhlIHByb2plbiBsaWIvIGRpcmVjdG9yeSAod2l0aG91dCB0aGUgLnRhc2suanMgZXh0ZW5zaW9uKS5cbiAgICogRm9yIGV4YW1wbGUsIGlmIHlvdXIgYnVpbHQgaW4gYnVpbHRpbiB0YXNrIGlzIHVuZGVyIGBzcmMvcmVsZWFzZS9yZXNvbHZlLXZlcnNpb24udGFzay50c2AsXG4gICAqIHRoZW4gdGhpcyB3b3VsZCBiZSBgcmVsZWFzZS9yZXNvbHZlLXZlcnNpb25gLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRvIG5vdCBleGVjdXRlIGEgYnVpbHRpbiB0YXNrXG4gICAqL1xuICByZWFkb25seSBidWlsdGluPzogc3RyaW5nO1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90YXNrLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRhc2tTaGVsbCB9IGZyb20gXCIuL3Rhc2stc2hlbGxcIjtcblxuLyoqXG4gKiBTY2hlbWEgZm9yIGB0YXNrcy5qc29uYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrc01hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSB0YXNrcyBtYW5pZmVzdCBzY2hlbWEuXG4gICAqXG4gICAqIFVzZWQgYnkgdGhlIHRhc2sgcnVudGltZSB0byBkZXRlY3QgbWFuaWZlc3RzIHByb2R1Y2VkIGJ5IGEgbmV3ZXIgdmVyc2lvblxuICAgKiBvZiBwcm9qZW4uIE1hbmlmZXN0cyBnZW5lcmF0ZWQgYnkgb2xkZXIgdmVyc2lvbnMgb2YgcHJvamVuIG9taXQgdGhpcyBmaWVsZFxuICAgKiBhbmQgYXJlIHRyZWF0ZWQgYXMgXCJsZWdhY3lcIiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIG1hbmlmZXN0IGlzIHRyZWF0ZWQgYXMgYSBsZWdhY3kgKHVudmVyc2lvbmVkKSBtYW5pZmVzdFxuICAgKi9cbiAgcmVhZG9ubHkgbWFuaWZlc3RWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBbGwgdGFza3MgYXZhaWxhYmxlIGZvciB0aGlzIHByb2plY3QuXG4gICAqL1xuICByZWFkb25seSB0YXNrcz86IHsgW25hbWU6IHN0cmluZ106IFRhc2tTcGVjIH07XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IGZvciBhbGwgdGFza3MuXG4gICAqL1xuICByZWFkb25seSBlbnY/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdGFzayBzaGVsbCwgaW4gYHRhc2tzLmpzb25gIGZvcm06IGEga2V5d29yZCAoYFwicHJvamVuXCJgIG9yXG4gICAqIGBcInN5c3RlbVwiYCkgb3IgYW4gaW52b2NhdGlvbiBhcmd1bWVudCBsaXN0LiBTZWVcbiAgICoge0BsaW5rIFRhc2tDb21tb25PcHRpb25zLnNoZWxsfS5cbiAgICovXG4gIHJlYWRvbmx5IHNoZWxsPzogc3RyaW5nIHwgc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFza0NvbW1vbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoaXMgYnVpbGQgY29tbWFuZC5cbiAgICogQGRlZmF1bHQgLSB0aGUgdGFzayBuYW1lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogRGVmaW5lcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhpcyB0YXNrLlxuICAgKiBWYWx1ZXMgaW4gdGhpcyBtYXAgd2lsbCBiZSBldmFsdWF0ZWQgaW4gYSBzaGVsbCwgc28geW91IGNhbiBkbyBzdHVmZiBsaWtlIGAkKGVjaG8gXCJmb29cIilgLlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgcmVhZG9ubHkgZW52PzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IG11c3QgYmUgZGVmaW5lZCBpbiBvcmRlciB0byBleGVjdXRlXG4gICAqIHRoaXMgdGFzay4gVGFzayBleGVjdXRpb24gd2lsbCBmYWlsIGlmIG9uZSBvZiB0aGVzZSBpcyBub3QgZGVmaW5lZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkRW52Pzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEEgc2hlbGwgY29tbWFuZCB3aGljaCBkZXRlcm1pbmVzIGlmIHRoZSB0aGlzIHRhc2sgc2hvdWxkIGJlIGV4ZWN1dGVkLiBJZlxuICAgKiB0aGUgcHJvZ3JhbSBleGl0cyB3aXRoIGEgemVybyBleGl0IGNvZGUsIHN0ZXBzIHdpbGwgYmUgZXhlY3V0ZWQuIEEgbm9uLXplcm9cbiAgICogY29kZSBtZWFucyB0aGF0IHRhc2sgd2lsbCBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZGl0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya2luZyBkaXJlY3RvcnkgZm9yIGFsbCBzdGVwcyBpbiB0aGlzIHRhc2sgKHVubGVzcyBvdmVycmlkZGVuIGJ5IHRoZVxuICAgKiBzdGVwKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBwcm9jZXNzLmN3ZCgpXG4gICAqL1xuICByZWFkb25seSBjd2Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzaGVsbCB1c2VkIHRvIHJ1biB0aGlzIHRhc2sncyBjb21tYW5kcywgaW5jbHVkaW5nIGl0cyBgY29uZGl0aW9uYCBhbmRcbiAgICogYCQoLi4uKWAgZW52aXJvbm1lbnQgZXZhbHVhdGlvbi4gVXNlIHtAbGluayBUYXNrU2hlbGx9IHRvIHBpY2sgYSBidWlsdC1pblxuICAgKiBvciBhbiBleHBsaWNpdCBpbnZvY2F0aW9uLiBTZXQgYXQgcHJvamVjdCwgdGFzayBvciBzdGVwIGxldmVsOyB0aGUgbmVhcmVzdFxuICAgKiBkZWNsYXJlZCBsZXZlbCB3aW5zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGluaGVyaXRlZCBmcm9tIHRoZSB0YXNrL3Byb2plY3QsIG90aGVyd2lzZSB0aGUgYnVpbHQtaW4gcHJvamVuIHNoZWxsXG4gICAqL1xuICByZWFkb25seSBzaGVsbD86IFRhc2tTaGVsbDtcbn1cblxuLyoqXG4gKiBTcGVjaWZpY2F0aW9uIG9mIGEgc2luZ2xlIHRhc2suXG4gKlxuICogVGhlIGB0YXNrcy5qc29uYCAobWFuaWZlc3QpIGZvcm0gb2YgYSB0YXNrLiB7QGxpbmsgVGFza0NvbW1vbk9wdGlvbnN9IGlzIHRoZVxuICogZm9ybSB1c2VkIHRvIGRlZmluZSBvbmU7IHRoZXkgZGlmZmVyIG9ubHkgaW4gdGhlIHJlbmRlcmVkIGBzaGVsbGAgZmllbGQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFza1NwZWMge1xuICAvKipcbiAgICogVGFzayBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhpcyBidWlsZCBjb21tYW5kLlxuICAgKiBAZGVmYXVsdCAtIHRoZSB0YXNrIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGlzIHRhc2suXG4gICAqIFZhbHVlcyBpbiB0aGlzIG1hcCB3aWxsIGJlIGV2YWx1YXRlZCBpbiBhIHNoZWxsLCBzbyB5b3UgY2FuIGRvIHN0dWZmIGxpa2UgYCQoZWNobyBcImZvb1wiKWAuXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICByZWFkb25seSBlbnY/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQSBzZXQgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgbXVzdCBiZSBkZWZpbmVkIGluIG9yZGVyIHRvIGV4ZWN1dGVcbiAgICogdGhpcyB0YXNrLiBUYXNrIGV4ZWN1dGlvbiB3aWxsIGZhaWwgaWYgb25lIG9mIHRoZXNlIGlzIG5vdCBkZWZpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZWRFbnY/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBzaGVsbCBjb21tYW5kIHdoaWNoIGRldGVybWluZXMgaWYgdGhlIHRoaXMgdGFzayBzaG91bGQgYmUgZXhlY3V0ZWQuIElmXG4gICAqIHRoZSBwcm9ncmFtIGV4aXRzIHdpdGggYSB6ZXJvIGV4aXQgY29kZSwgc3RlcHMgd2lsbCBiZSBleGVjdXRlZC4gQSBub24temVyb1xuICAgKiBjb2RlIG1lYW5zIHRoYXQgdGFzayB3aWxsIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBjb25kaXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBmb3IgYWxsIHN0ZXBzIGluIHRoaXMgdGFzayAodW5sZXNzIG92ZXJyaWRkZW4gYnkgdGhlXG4gICAqIHN0ZXApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHByb2Nlc3MuY3dkKClcbiAgICovXG4gIHJlYWRvbmx5IGN3ZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRhc2sgc2hlbGwgaW4gYHRhc2tzLmpzb25gIGZvcm06IGEga2V5d29yZCAoYFwicHJvamVuXCJgIG9yIGBcInN5c3RlbVwiYClcbiAgICogb3IgYW4gaW52b2NhdGlvbiBhcmd1bWVudCBsaXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBidWlsdC1pbiBwcm9qZW4gc2hlbGxcbiAgICovXG4gIHJlYWRvbmx5IHNoZWxsPzogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRhc2sgc3RlcHMuXG4gICAqL1xuICByZWFkb25seSBzdGVwcz86IFRhc2tTdGVwW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGFzayBzdGVwcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrU3RlcE9wdGlvbnMge1xuICAvKipcbiAgICogU3RlcCBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IGZvciB0aGlzIHN0ZXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGV0ZXJtaW5lZCBieSB0aGUgdGFza1xuICAgKi9cbiAgcmVhZG9ubHkgY3dkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNoZWxsIGNvbW1hbmQgd2hpY2ggZGV0ZXJtaW5lcyBpZiB0aGUgdGhpcyBzdGVwIHNob3VsZCBiZSBleGVjdXRlZC4gSWZcbiAgICogdGhlIHByb2dyYW0gZXhpdHMgd2l0aCBhIHplcm8gZXhpdCBjb2RlLCB0aGUgc3RlcCB3aWxsIGJlIGV4ZWN1dGVkLiBBIG5vbi16ZXJvXG4gICAqIGNvZGUgbWVhbnMgdGhlIHN0ZXAgd2lsbCBiZSBza2lwcGVkIChzdWJzZXF1ZW50IHRhc2sgc3RlcHMgd2lsbCBzdGlsbCBiZSBldmFsdWF0ZWQvZXhlY3V0ZWQpLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZGl0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhpcyBzdGVwIHJlY2VpdmUgYXJncyBwYXNzZWQgdG8gdGhlIHRhc2suXG4gICAqXG4gICAqIElmIGB0cnVlYCwgYXJncyBhcmUgcGFzc2VkIHRocm91Z2ggYXQgdGhlIGVuZCBvZiB0aGUgYGV4ZWNgIHNoZWxsIGNvbW1hbmQuXFxcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBhcmdzIGNhbiBiZSBjaGFuZ2VkIGJ5IGluY2x1ZGluZyB0aGUgbWFya2VyIGAkQGAgaW5zaWRlIHRoZSBjb21tYW5kIHN0cmluZy5cbiAgICpcbiAgICogSWYgdGhlIG1hcmtlciBpcyBleHBsaWNpdGx5IGRvdWJsZS1xdW90ZWQgKFwiJEBcIikgYXJndW1lbnRzIHdpbGwgYmUgd3JhcHBlZCBpbiBkb3VibGUgcXVvdGVzLCBhcHByb3hpbWF0aW5nXG4gICAqIHRoZSB3aGl0ZXNwYWNlIHByZXNlcnZpbmcgYmVoYXZpb3Igb2YgYmFzaCB2YXJpYWJsZSBleHBhbnNpb24uXG4gICAqXG4gICAqIElmIHRoZSBzdGVwIHNwYXducyBhIHN1YnRhc2ssIGFyZ3MgYXJlIHBhc3NlZCB0byB0aGUgc3VidGFzay5cbiAgICogVGhlIHN1YnRhc2sgbXVzdCBkZWZpbmUgc3RlcHMgcmVjZWl2aW5nIGFyZ3MgZm9yIHRoaXMgdG8gaGF2ZSBhbnkgZWZmZWN0LlxuICAgKlxuICAgKiBAZXhhbXBsZSB0YXNrLmV4ZWMoXCJlY2hvIEhlbGxvICRAIFdvcmxkIVwiLCB7IHJlY2VpdmVBcmdzOiB0cnVlIH0pO1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVjZWl2ZUFyZ3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgZml4ZWQgYXJndW1lbnRzIGFsd2F5cyBwYXNzZWQgdG8gdGhlIHN0ZXAuXG4gICAqXG4gICAqIFVzZWZ1bCB0byByZS11c2UgZXhpc3RpbmcgdGFza3Mgd2l0aG91dCBoYXZpbmcgdG8gcmUtZGVmaW5lIHRoZSB3aG9sZSB0YXNrLlxcXG4gICAqIEZpeGVkIGFyZ3MgYXJlIGFsd2F5cyBwYXNzZWQgdG8gdGhlIHN0ZXAsIGV2ZW4gaWYgYHJlY2VpdmVBcmdzYCBpcyBgZmFsc2VgXG4gICAqIGFuZCBhcmUgYWx3YXlzIHBhc3NlZCBiZWZvcmUgYW55IGFyZ3MgdGhlIHRhc2sgaXMgY2FsbGVkIHdpdGguXG4gICAqXG4gICAqIElmIHRoZSBzdGVwIGV4ZWN1dGVzIGEgc2hlbGwgY29tbWFuZHMsIGFyZ3MgYXJlIHBhc3NlZCB0aHJvdWdoIGF0IHRoZSBlbmQgb2YgdGhlIGBleGVjYCBzaGVsbCBjb21tYW5kLlxcXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgYXJncyBjYW4gYmUgY2hhbmdlZCBieSBpbmNsdWRpbmcgdGhlIG1hcmtlciBgJEBgIGluc2lkZSB0aGUgY29tbWFuZCBzdHJpbmcuXG4gICAqXG4gICAqIElmIHRoZSBzdGVwIHNwYXducyBhIHN1YnRhc2ssIGFyZ3MgYXJlIHBhc3NlZCB0byB0aGUgc3VidGFzay5cbiAgICogVGhlIHN1YnRhc2sgbXVzdCBkZWZpbmUgc3RlcHMgcmVjZWl2aW5nIGFyZ3MgZm9yIHRoaXMgdG8gaGF2ZSBhbnkgZWZmZWN0LlxuICAgKlxuICAgKiBJZiB0aGUgc3RlcCBjYWxscyBhIGJ1aWx0aW4gc2NyaXB0LCBhcmdzIGFyZSBwYXNzZWQgdG8gdGhlIHNjcmlwdC5cbiAgICogSXQgaXMgdXAgdG8gdGhlIHNjcmlwdCB0byB1c2Ugb3IgZGlzY2FyZCB0aGUgYXJndW1lbnRzLlxuICAgKlxuICAgKiBAZXhhbXBsZSB0YXNrLnNwYXduKFwiZGVwbG95XCIsIHsgYXJnczogW1wiLS1mb3JjZVwiXSB9KTtcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgc3RlcFxuICAgKi9cbiAgcmVhZG9ubHkgYXJncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGlzIHN0ZXAgKGBleGVjYCBhbmQgYGJ1aWx0aW5gIG9ubHkpLlxuICAgKiBWYWx1ZXMgaW4gdGhpcyBtYXAgY2FuIGJlIHNpbXBsZSwgbGl0ZXJhbCB2YWx1ZXMgb3Igc2hlbGwgZXhwcmVzc2lvbnMgdGhhdCB3aWxsIGJlIGV2YWx1YXRlZCBhdCBydW50aW1lIGUuZy4gYCQoZWNobyBcImZvb1wiKWAuXG4gICAqXG4gICAqIEBleGFtcGxlIHsgXCJmb29cIjogXCJiYXJcIiwgXCJib29cIjogXCIkKGVjaG8gYmF6KVwiIH1cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZGVmaW5lZCBpbiBzdGVwXG4gICAqL1xuICByZWFkb25seSBlbnY/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQ2FwdHVyZSB0aGlzIHN0ZXAncyAodHJpbW1lZCkgc3Rkb3V0IGludG8gYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgb2YgdGhpc1xuICAgKiBuYW1lLCB2aXNpYmxlIHRvIGFsbCBsYXRlciBzdGVwcyBvZiB0aGUgdGFzayBydW4uIEZvciBgc3Bhd25gIHN0ZXBzIHRoZVxuICAgKiBzcGF3bmVkIHN1YnRhc2sncyBjb21iaW5lZCBzdGRvdXQgaXMgY2FwdHVyZWQuXG4gICAqXG4gICAqIFNldCBvbmx5IHdoZW4gdGhlIHN0ZXAgcnVucyAoYSBza2lwcGVkIHN0ZXAgbGVhdmVzIGl0IHVuc2V0KSBhbmQgYWx3YXlzXG4gICAqIG92ZXJ3cml0ZXMuIFRoZSBzdGVwJ3Mgb3V0cHV0IHN0aWxsIHN0cmVhbXMgbGl2ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBzdGRvdXQgaXMgbm90IGNhcHR1cmVkXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRFbnY/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzaGVsbCB1c2VkIHRvIHJ1biB0aGlzIHN0ZXAsIG92ZXJyaWRpbmcgdGhlIHRhc2svcHJvamVjdCBzaGVsbC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgVGFza0NvbW1vbk9wdGlvbnMuc2hlbGx9XG4gICAqIEBkZWZhdWx0IC0gdGhlIHRhc2sncyAob3IgcHJvamVjdCdzKSBzaGVsbFxuICAgKi9cbiAgcmVhZG9ubHkgc2hlbGw/OiBUYXNrU2hlbGw7XG59XG5cbi8qKlxuICogQSBzaW5nbGUgc3RlcCB3aXRoaW4gYSB0YXNrLiBUaGUgc3RlcCBjb3VsZCBlaXRoZXIgYmUgIHRoZSBleGVjdXRpb24gb2YgYVxuICogc2hlbGwgY29tbWFuZCBvciBleGVjdXRpb24gb2YgYSBzdWItdGFzaywgYnkgbmFtZS5cbiAqXG4gKiBUaGUgYHRhc2tzLmpzb25gIChtYW5pZmVzdCkgZm9ybSBvZiBhIHN0ZXAuIHtAbGluayBUYXNrU3RlcE9wdGlvbnN9IGlzIHRoZVxuICogZm9ybSB1c2VkIHRvIGRlZmluZSBzdGVwcyAodmlhIGB0YXNrLmV4ZWMoKWAgZXRjLik7IHRoZXkgZGlmZmVyIG9ubHkgaW4gdGhlXG4gKiByZW5kZXJlZCBgc2hlbGxgIGZpZWxkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tTdGVwIHtcbiAgLyoqXG4gICAqIFN0ZXAgbmFtZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBmb3IgdGhpcyBzdGVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRldGVybWluZWQgYnkgdGhlIHRhc2tcbiAgICovXG4gIHJlYWRvbmx5IGN3ZD86IHN0cmluZztcblxuICAvKipcbiAgICogQSBzaGVsbCBjb21tYW5kIHdoaWNoIGRldGVybWluZXMgaWYgdGhlIHRoaXMgc3RlcCBzaG91bGQgYmUgZXhlY3V0ZWQuIElmXG4gICAqIHRoZSBwcm9ncmFtIGV4aXRzIHdpdGggYSB6ZXJvIGV4aXQgY29kZSwgdGhlIHN0ZXAgd2lsbCBiZSBleGVjdXRlZC4gQSBub24temVyb1xuICAgKiBjb2RlIG1lYW5zIHRoZSBzdGVwIHdpbGwgYmUgc2tpcHBlZCAoc3Vic2VxdWVudCB0YXNrIHN0ZXBzIHdpbGwgc3RpbGwgYmUgZXZhbHVhdGVkL2V4ZWN1dGVkKS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbmRpdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogU2hvdWxkIHRoaXMgc3RlcCByZWNlaXZlIGFyZ3MgcGFzc2VkIHRvIHRoZSB0YXNrLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBUYXNrU3RlcE9wdGlvbnMucmVjZWl2ZUFyZ3N9XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSByZWNlaXZlQXJncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBmaXhlZCBhcmd1bWVudHMgYWx3YXlzIHBhc3NlZCB0byB0aGUgc3RlcC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgVGFza1N0ZXBPcHRpb25zLmFyZ3N9XG4gICAqIEBkZWZhdWx0IC0gbm8gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHN0ZXBcbiAgICovXG4gIHJlYWRvbmx5IGFyZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRGVmaW5lcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhpcyBzdGVwIChgZXhlY2AgYW5kIGBidWlsdGluYCBvbmx5KS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgVGFza1N0ZXBPcHRpb25zLmVudn1cbiAgICogQGRlZmF1bHQgLSBubyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZGVmaW5lZCBpbiBzdGVwXG4gICAqL1xuICByZWFkb25seSBlbnY/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQ2FwdHVyZSB0aGlzIHN0ZXAncyBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4cG9zZSBpdCB0byBsYXRlciBzdGVwcyBhcyBhblxuICAgKiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHRoaXMgbmFtZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgVGFza1N0ZXBPcHRpb25zLm91dHB1dEVudn1cbiAgICogQGRlZmF1bHQgLSBzdGRvdXQgaXMgbm90IGNhcHR1cmVkXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRFbnY/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGVwIHNoZWxsIGluIGB0YXNrcy5qc29uYCBmb3JtOiBhIGtleXdvcmQgKGBcInByb2plblwiYCBvciBgXCJzeXN0ZW1cImApXG4gICAqIG9yIGFuIGludm9jYXRpb24gYXJndW1lbnQgbGlzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgdGFzaydzIChvciBwcm9qZWN0J3MpIHNoZWxsXG4gICAqL1xuICByZWFkb25seSBzaGVsbD86IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTaGVsbCBjb21tYW5kIHRvIGV4ZWN1dGUuXG4gICAqXG4gICAqIFRoZSB3aG9sZSBjb21tYW5kIGlzIGEgc2luZ2xlIHNoZWxsIHN0cmluZy4gVG8gcGFzcyBhcmd1bWVudHMgYXMgYSBsaXN0XG4gICAqIGluc3RlYWQgLSB3aXRob3V0IGhhdmluZyB0byBxdW90ZSBzcGFjZXMgb3Igb3RoZXIgY2hhcmFjdGVycyB5b3Vyc2VsZiAtXG4gICAqIHVzZSBgZXhlY0FyZ3NgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRvbid0IGV4ZWN1dGUgYSBzaGVsbCBjb21tYW5kXG4gICAqL1xuICByZWFkb25seSBleGVjPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaGVsbCBjb21tYW5kIHRvIGV4ZWN1dGUsIHByb3ZpZGVkIGFzIGEgbGlzdCBvZiB0aGUgcHJvZ3JhbSBmb2xsb3dlZCBieVxuICAgKiBpdHMgYXJndW1lbnRzIChhbiBcImFyZ3ZcIikuXG4gICAqXG4gICAqIE9mdGVuIG1vcmUgY29udmVuaWVudCB0aGFuIGBleGVjYDogZWFjaCBlbGVtZW50IGlzIHBhc3NlZCB0byB0aGVcbiAgICogcHJvZ3JhbSBhcy1pcywgc28gYXJndW1lbnRzIHdpdGggc3BhY2VzIG9yIHNwZWNpYWwgY2hhcmFjdGVycyBkb24ndCBuZWVkXG4gICAqIHF1b3RpbmcuIEZpeGVkIChgYXJnc2ApIG9yIHJlY2VpdmVkIChgcmVjZWl2ZUFyZ3NgKSBhcmd1bWVudHMgYXJlIGluc2VydGVkXG4gICAqIHdoZXJldmVyIGEgYCRAYCBlbGVtZW50IGFwcGVhcnMsIG9yIGFwcGVuZGVkIGF0IHRoZSBlbmQgaWYgdGhlcmUgaXMgbm9uZS5cbiAgICpcbiAgICogVGhlIGVsZW1lbnRzIGFyZSBub3QgcnVuIHRocm91Z2ggYSBzaGVsbCwgc28gZW52aXJvbm1lbnQgdmFyaWFibGVzIChgJEZPT2ApXG4gICAqIGFyZSBub3QgZXhwYW5kZWQgYW5kIG90aGVyIHNoZWxsIGZlYXR1cmVzIGFyZSB1bmF2YWlsYWJsZS4gVXNlIGBleGVjYFxuICAgKiBpZiB5b3UgbmVlZCB0aGVtLlxuICAgKlxuICAgKiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgZXhlY2AuXG4gICAqXG4gICAqIEBleGFtcGxlIHsgZXhlY0FyZ3M6IFtcImVjaG9cIiwgXCJoZWxsbyB3b3JsZFwiXSB9XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZG9uJ3QgZXhlY3V0ZSBhIHNoZWxsIGNvbW1hbmRcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWNBcmdzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFN1YnRhc2sgdG8gZXhlY3V0ZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRvbid0IHNwYXduIGEgc3VidGFza1xuICAgKi9cbiAgcmVhZG9ubHkgc3Bhd24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByaW50IGEgbWVzc2FnZS5cbiAgICogQGRlZmF1bHQgLSBkb24ndCBzYXkgYW55dGhpbmdcbiAgICovXG4gIHJlYWRvbmx5IHNheT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgYSBidWlsdC1pbiB0YXNrIHRvIGV4ZWN1dGUuXG4gICAqXG4gICAqIEJ1aWx0LWluIHRhc2tzIGFyZSBub2RlLmpzIHByb2dyYW1zIGJha2VkIGludG8gdGhlIHByb2plbiBtb2R1bGUgYW5kIGFzXG4gICAqIGNvbXBvbmVudCBydW50aW1lIGhlbHBlcnMuXG4gICAqXG4gICAqIFRoZSBuYW1lIGlzIGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgcHJvamVuIGxpYi8gZGlyZWN0b3J5ICh3aXRob3V0IHRoZSAudGFzay5qcyBleHRlbnNpb24pLlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgeW91ciBidWlsdCBpbiBidWlsdGluIHRhc2sgaXMgdW5kZXIgYHNyYy9yZWxlYXNlL3Jlc29sdmUtdmVyc2lvbi50YXNrLnRzYCxcbiAgICogdGhlbiB0aGlzIHdvdWxkIGJlIGByZWxlYXNlL3Jlc29sdmUtdmVyc2lvbmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZG8gbm90IGV4ZWN1dGUgYSBidWlsdGluIHRhc2tcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWx0aW4/OiBzdHJpbmc7XG59XG4iXX0=
package/lib/task-shell.js CHANGED
@@ -19,7 +19,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
19
19
  */
20
20
  class TaskShell {
21
21
  value;
22
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.TaskShell", version: "0.101.13" };
22
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.TaskShell", version: "0.101.15" };
23
23
  /**
24
24
  * The built-in cross-platform shell (the default). It interprets POSIX-style
25
25
  * task syntax (`mkdir -p`, `&&`, `$VAR`, ...) identically on every platform,
package/lib/task.js CHANGED
@@ -8,7 +8,7 @@ const logging_1 = require("./logging");
8
8
  * commands and subtasks.
9
9
  */
10
10
  class Task {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Task", version: "0.101.13" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Task", version: "0.101.15" };
12
12
  /**
13
13
  * Task name.
14
14
  */
package/lib/tasks.js CHANGED
@@ -48,7 +48,7 @@ const task_runner_1 = require("./task-runner");
48
48
  * synthesized into `.projen/tasks.json`.
49
49
  */
50
50
  class Tasks extends component_1.Component {
51
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Tasks", version: "0.101.13" };
51
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Tasks", version: "0.101.15" };
52
52
  _tasks;
53
53
  _env;
54
54
  _shell;
package/lib/testing.js CHANGED
@@ -10,7 +10,7 @@ const synth_1 = require("./util/synth");
10
10
  * @example `expect(Testing.synth(someProject)).toMatchSnapshot()`
11
11
  */
12
12
  class Testing {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Testing", version: "0.101.13" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Testing", version: "0.101.15" };
14
14
  /**
15
15
  * Produces a simple JS object that represents the contents of the projects with field names being file paths.
16
16
  * @param project the project to produce a snapshot for
package/lib/textfile.js CHANGED
@@ -7,7 +7,7 @@ const file_1 = require("./file");
7
7
  * A text file.
8
8
  */
9
9
  class TextFile extends file_1.FileBase {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.TextFile", version: "0.101.13" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.TextFile", version: "0.101.15" };
11
11
  lines;
12
12
  /**
13
13
  * Defines a text file.
package/lib/toml.js CHANGED
@@ -41,7 +41,7 @@ const object_file_1 = require("./object-file");
41
41
  * Represents a TOML file.
42
42
  */
43
43
  class TomlFile extends object_file_1.ObjectFile {
44
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.TomlFile", version: "0.101.13" };
44
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.TomlFile", version: "0.101.15" };
45
45
  constructor(scope, filePath, options) {
46
46
  super(scope, filePath, options);
47
47
  }
@@ -16,7 +16,7 @@ const DEFAULT_FILENAME = ".projenrc.ts";
16
16
  * and has no expectations around the project's main language.
17
17
  */
18
18
  class ProjenrcTs extends projenrc_1.ProjenrcFile {
19
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.ProjenrcTs", version: "0.101.13" };
19
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.ProjenrcTs", version: "0.101.15" };
20
20
  /**
21
21
  * TypeScript configuration file used to compile projen source files
22
22
  */
@@ -15,7 +15,7 @@ const DEFAULT_FILENAME = ".projenrc.ts";
15
15
  * This component is used within TypeScriptProject.
16
16
  */
17
17
  class Projenrc extends projenrc_1.ProjenrcFile {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.Projenrc", version: "0.101.13" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.Projenrc", version: "0.101.15" };
19
19
  filePath;
20
20
  tsconfig;
21
21
  _projenCodeDir;
@@ -13,7 +13,7 @@ const recreate_1 = require("../util/recreate");
13
13
  * adjusted options.
14
14
  */
15
15
  class TypeScriptRunner extends script_runner_1.ScriptRunner {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptRunner", version: "0.101.13" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptRunner", version: "0.101.15" };
17
17
  /**
18
18
  * Use ts-node to execute TypeScript files.
19
19
  */
@@ -6,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  Adds a simple Typescript documentation generator
7
7
  */
8
8
  class TypedocDocgen {
9
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypedocDocgen", version: "0.101.13" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypedocDocgen", version: "0.101.15" };
10
10
  constructor(project) {
11
11
  project.addDevDeps("typedoc");
12
12
  const docgen = project.addTask("docgen", {
@@ -52,7 +52,7 @@ const util_2 = require("../util");
52
52
  */
53
53
  class TsJestBabelConfig {
54
54
  config;
55
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestBabelConfig", version: "0.101.13" };
55
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestBabelConfig", version: "0.101.15" };
56
56
  /**
57
57
  * Disables the use of Babel
58
58
  */
@@ -99,7 +99,7 @@ exports.TsJestBabelConfig = TsJestBabelConfig;
99
99
  */
100
100
  class TsJestDiagnostics {
101
101
  config;
102
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestDiagnostics", version: "0.101.13" };
102
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestDiagnostics", version: "0.101.15" };
103
103
  /**
104
104
  * Enable all diagnostics.
105
105
  */
@@ -137,7 +137,7 @@ exports.TsJestDiagnostics = TsJestDiagnostics;
137
137
  */
138
138
  class TsJestTsconfig {
139
139
  config;
140
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestTsconfig", version: "0.101.13" };
140
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TsJestTsconfig", version: "0.101.15" };
141
141
  /**
142
142
  * Uses `tsconfig.json` if found, or the built-in default TypeScript compiler options.
143
143
  */
@@ -183,7 +183,7 @@ exports.TsJestTsconfig = TsJestTsconfig;
183
183
  * @pjid typescript
184
184
  */
185
185
  class TypeScriptProject extends javascript_1.NodeProject {
186
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptProject", version: "0.101.13" };
186
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptProject", version: "0.101.15" };
187
187
  static DEFAULT_TS_JEST_TRANFORM_PATTERN = "^.+\\.[t]sx?$";
188
188
  docgen;
189
189
  docsDirectory;
@@ -620,7 +620,7 @@ class SampleCode extends component_1.Component {
620
620
  * @pjid typescript-app
621
621
  */
622
622
  class TypeScriptAppProject extends TypeScriptProject {
623
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptAppProject", version: "0.101.13" };
623
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.typescript.TypeScriptAppProject", version: "0.101.15" };
624
624
  constructor(options) {
625
625
  // Releasing and packaging are coupled. If one is disabled, disable the other by default.
626
626
  const shouldRelease = options.release ?? false;
@@ -1,3 +1,4 @@
1
+ export declare const MAX_BUFFER: number;
1
2
  /**
2
3
  * Options for shell-free command execution.
3
4
  */
@@ -109,46 +110,3 @@ export declare const npm: AsyncTool;
109
110
  * Cross-platform helper for `npx` (a Windows `.cmd` shim).
110
111
  */
111
112
  export declare const npx: AsyncTool;
112
- export declare const rawShell: {
113
- /**
114
- * Runs a user-supplied shell command line and resolves its trimmed
115
- * STDOUT. Rejects if the command exits non-zero.
116
- */
117
- capture: (command: string, options: {
118
- cwd: string;
119
- env?: Record<string, string>;
120
- }) => Promise<string>;
121
- /**
122
- * Runs a user-supplied shell command line and resolves its trimmed
123
- * STDOUT, or `undefined` if the command failed or produced no output.
124
- */
125
- tryCapture: (command: string, options: {
126
- cwd: string;
127
- env?: Record<string, string>;
128
- }) => Promise<string | undefined>;
129
- };
130
- /**
131
- * Normalized result of running a command through the system shell (a subset of
132
- * node's `SpawnSyncReturns`).
133
- */
134
- export interface SystemShellResult {
135
- /** Exit code, or `null` if terminated by a signal or never spawned. */
136
- readonly status: number | null;
137
- /** Captured stdout, or `null` when stdout was inherited. */
138
- readonly stdout: Buffer | null;
139
- /** Captured stderr, or `null` when stderr was inherited. */
140
- readonly stderr: Buffer | null;
141
- /** An error raised while attempting to spawn (not a non-zero exit). */
142
- readonly error?: Error;
143
- }
144
- /**
145
- * Runs a command line through the operating system's default shell (`/bin/sh`
146
- * on POSIX, `cmd.exe` on Windows). Never throws for a non-zero exit (that is
147
- * reported via `status`); a spawn failure is reported via `error`. The caller
148
- * supplies the full `env`.
149
- */
150
- export declare function systemShell(command: string, options: {
151
- cwd: string;
152
- env?: NodeJS.ProcessEnv;
153
- capture?: boolean;
154
- }): SystemShellResult;
package/lib/util/exec.js CHANGED
@@ -33,19 +33,18 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.rawShell = exports.npx = exports.npm = exports.node = exports.poetry = exports.uv = exports.git = void 0;
36
+ exports.npx = exports.npm = exports.node = exports.poetry = exports.uv = exports.git = exports.MAX_BUFFER = void 0;
37
37
  exports.tool = tool;
38
- exports.systemShell = systemShell;
39
38
  const child_process = __importStar(require("child_process"));
40
39
  const fs = __importStar(require("fs"));
41
40
  const os = __importStar(require("os"));
42
41
  const path = __importStar(require("path"));
43
42
  const dax_1 = require("dax");
44
43
  const logging = __importStar(require("../logging"));
45
- const MAX_BUFFER = 10 * 1024 * 1024;
44
+ exports.MAX_BUFFER = 10 * 1024 * 1024;
46
45
  function spawnOpts(options) {
47
46
  return {
48
- maxBuffer: MAX_BUFFER,
47
+ maxBuffer: exports.MAX_BUFFER,
49
48
  cwd: options.cwd,
50
49
  env: options.env ? { ...process.env, ...options.env } : undefined,
51
50
  // run the program directly, without going through a shell
@@ -196,72 +195,4 @@ exports.npm = shimTool("npm");
196
195
  * Cross-platform helper for `npx` (a Windows `.cmd` shim).
197
196
  */
198
197
  exports.npx = shimTool("npx");
199
- //
200
- // ---------------------------------------------------------------------------
201
- // rawShell: arbitrary shell command strings (via dax, cross-platform).
202
- //
203
- // This runs an opaque command *string* through dax's cross-platform shell
204
- // (incl. Windows). The command is parsed by a shell as-is, so it is meant for
205
- // arbitrary command lines that cannot be expressed as a fixed binary plus a
206
- // list of arguments, e.g. a release's `nextVersionCommand` or
207
- // `ReleasableCommits.exec()` (and projen's own generated `ReleasableCommits`
208
- // queries). For everything else prefer the structured `tool`/`git` helpers
209
- // (or `shimTool` for `.cmd` shims), which take an explicit list of arguments.
210
- //
211
- // `$.raw` is required here (and only here): the input is an opaque command
212
- // line, so it must be parsed by a shell. dax provides that shell on every
213
- // platform, including Windows.
214
- // ---------------------------------------------------------------------------
215
- //
216
- exports.rawShell = {
217
- /**
218
- * Runs a user-supplied shell command line and resolves its trimmed
219
- * STDOUT. Rejects if the command exits non-zero.
220
- */
221
- capture: async (command, options) => {
222
- logging.debug(`${command} (cwd: ${options.cwd})`);
223
- const cmd = dax_1.$.raw `${command}`.cwd(options.cwd);
224
- return (options.env ? cmd.env(options.env) : cmd).text();
225
- },
226
- /**
227
- * Runs a user-supplied shell command line and resolves its trimmed
228
- * STDOUT, or `undefined` if the command failed or produced no output.
229
- */
230
- tryCapture: async (command, options) => {
231
- logging.debug(`${command} (cwd: ${options.cwd})`);
232
- let cmd = dax_1.$.raw `${command}`.cwd(options.cwd).noThrow().stdout("piped");
233
- if (options.env) {
234
- cmd = cmd.env(options.env);
235
- }
236
- const result = await cmd;
237
- if (result.code !== 0) {
238
- return undefined;
239
- }
240
- const out = result.stdout.trim();
241
- return out || undefined;
242
- },
243
- };
244
- /**
245
- * Runs a command line through the operating system's default shell (`/bin/sh`
246
- * on POSIX, `cmd.exe` on Windows). Never throws for a non-zero exit (that is
247
- * reported via `status`); a spawn failure is reported via `error`. The caller
248
- * supplies the full `env`.
249
- */
250
- function systemShell(command, options) {
251
- logging.debug(`${command} (cwd: ${options.cwd})`);
252
- const result = child_process.spawnSync(command, {
253
- cwd: options.cwd,
254
- shell: true,
255
- maxBuffer: MAX_BUFFER,
256
- env: options.env,
257
- // "pipe" for STDERR (when capturing) means it appears in exceptions.
258
- stdio: options.capture ? ["inherit", "pipe", "pipe"] : "inherit",
259
- });
260
- return {
261
- status: result.status,
262
- stdout: result.stdout ?? null,
263
- stderr: result.stderr ?? null,
264
- error: result.error,
265
- };
266
- }
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2V4ZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0xBLG9CQU1DO0FBaU1ELGtDQW1CQztBQXpaRCw2REFBK0M7QUFDL0MsdUNBQXlCO0FBQ3pCLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsNkJBQXdCO0FBQ3hCLG9EQUFzQztBQUV0QyxNQUFNLFVBQVUsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQXdEcEMsU0FBUyxTQUFTLENBQUMsT0FBd0I7SUFDekMsT0FBTztRQUNMLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztRQUNoQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDakUsMERBQTBEO1FBQzFELEtBQUssRUFBRSxLQUFjO0tBQ3RCLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLElBQWMsRUFBRSxPQUFtQjtJQUM1RCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFFakUsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1FBQ3JDLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUNyQixxRUFBcUU7UUFDckUsbUVBQW1FO1FBQ25FLDBFQUEwRTtRQUMxRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENB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S0FBSztLQUNwQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoaWxkX3Byb2Nlc3MgZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyAkIH0gZnJvbSBcImRheFwiO1xuaW1wb3J0ICogYXMgbG9nZ2luZyBmcm9tIFwiLi4vbG9nZ2luZ1wiO1xuXG5jb25zdCBNQVhfQlVGRkVSID0gMTAgKiAxMDI0ICogMTAyNDtcblxuLy9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2hlbGwtZnJlZSBleGVjdXRpb24gKGV4ZWNGaWxlU3luYywgc2hlbGw6IGZhbHNlKS5cbi8vXG4vLyBUaGUgcHJvZ3JhbSBhbmQgZWFjaCBhcmd1bWVudCBhcmUgcGFzc2VkIHRvIHRoZSBPUyBkaXJlY3RseSB3aXRob3V0IGdvaW5nXG4vLyB0aHJvdWdoIGEgc2hlbGwsIHNvIHRoZXJlIGlzIG5vIHF1b3RpbmcgdG8gZ2V0IHJpZ2h0IGFuZCBubyBkaWZmZXJlbmNlc1xuLy8gYmV0d2VlbiBwbGF0Zm9ybSBzaGVsbHMgdG8gYWNjb3VudCBmb3Igd2hlbiBjb21tYW5kcyBpbmNsdWRlIHZhbHVlcyBkZXJpdmVkXG4vLyBmcm9tIGZpbGVzLCBnaXQgb3V0cHV0LCBjb25maWd1cmF0aW9uLCBldGMuXG4vL1xuLy8gT25seSBwZXItdG9vbCBoZWxwZXJzIGFyZSBleHBvcnRlZCAoZS5nLiBgZ2l0YCk7IHRoZSBnZW5lcmljIHByaW1pdGl2ZXMgYXJlXG4vLyBrZXB0IHByaXZhdGUgc28gY2FsbCBzaXRlcyBhcmUgZXhwbGljaXQgYWJvdXQgd2hpY2ggdG9vbCB0aGV5IGludm9rZS5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy9cblxuLyoqXG4gKiBPcHRpb25zIGZvciBzaGVsbC1mcmVlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNGaWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXb3JraW5nIGRpcmVjdG9yeSBmb3IgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBjd2Q6IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIG1lcmdlZCBvbiB0b3Agb2YgYHByb2Nlc3MuZW52YC5cbiAgICovXG4gIHJlYWRvbmx5IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD47XG5cbiAgLyoqXG4gICAqIEZvciBgY2FwdHVyZWAvYHRyeUNhcHR1cmVgOiBpbnRlcmxlYXZlIFNUREVSUiBpbnRvIHRoZSBjYXB0dXJlZCBvdXRwdXRcbiAgICogaW5zdGVhZCBvZiBvbmx5IGNhcHR1cmluZyBTVERPVVQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjYXB0dXJlU3RkZXJyPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgVG9vbC5ydW59LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bk9wdGlvbnMgZXh0ZW5kcyBFeGVjRmlsZU9wdGlvbnMge1xuICAvKipcbiAgICogU3RyZWFtIHRoZSBjaGlsZCdzIHN0ZG91dCBhbmQgc3RkZXJyIHN0cmFpZ2h0IHRvIHRoZSBwYXJlbnQncyBzdGRvdXQgYW5kXG4gICAqIHN0ZGVyciAoZnVsbCBpbmhlcml0YW5jZSksIGluc3RlYWQgb2YgcmVkaXJlY3Rpbmcgc3Rkb3V0IHRvIHN0ZGVyciBhbmRcbiAgICogY2FwdHVyaW5nIHN0ZGVyciAodGhlIGRlZmF1bHQpLlxuICAgKlxuICAgKiBVc2UgdGhpcyB3aGVuIGxhdW5jaGluZyBhIGNoaWxkIHByb2Nlc3Mgd2hvc2Ugc3Rkb3V0IGlzIG1lYW5pbmdmdWwgYW5kXG4gICAqIHdob3NlIG91dHB1dCBzaG91bGQgc3RyZWFtIGxpdmUgdG8gdGhlIHVzZXIgKGUuZy4gdGhlIHByb2plbiBDTEkpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5oZXJpdFN0ZGlvPzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gc3Bhd25PcHRzKG9wdGlvbnM6IEV4ZWNGaWxlT3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIG1heEJ1ZmZlcjogTUFYX0JVRkZFUixcbiAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgIGVudjogb3B0aW9ucy5lbnYgPyB7IC4uLnByb2Nlc3MuZW52LCAuLi5vcHRpb25zLmVudiB9IDogdW5kZWZpbmVkLFxuICAgIC8vIHJ1biB0aGUgcHJvZ3JhbSBkaXJlY3RseSwgd2l0aG91dCBnb2luZyB0aHJvdWdoIGEgc2hlbGxcbiAgICBzaGVsbDogZmFsc2UgYXMgY29uc3QsXG4gIH07XG59XG5cbi8qKlxuICogUnVucyBhIHByb2dyYW0gd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBpbmhlcml0aW5nIHN0ZG91dC4gVGhyb3dzIGlmIHRoZVxuICogY29tbWFuZCBleGl0cyB3aXRoIGEgbm9uLXplcm8gc3RhdHVzLlxuICovXG5mdW5jdGlvbiBydW4oZmlsZTogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogUnVuT3B0aW9ucyk6IHZvaWQge1xuICBsb2dnaW5nLmRlYnVnKGAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG5cbiAgY2hpbGRfcHJvY2Vzcy5leGVjRmlsZVN5bmMoZmlsZSwgYXJncywge1xuICAgIC4uLnNwYXduT3B0cyhvcHRpb25zKSxcbiAgICAvLyBCeSBkZWZhdWx0IHRoZSBjaGlsZCdzIHN0ZG91dCBpcyByZWRpcmVjdGVkIHRvIFNUREVSUiAodG8ga2VlcCB0aGVcbiAgICAvLyBwYXJlbnQncyBTVERPVVQgY2xlYW4pIGFuZCBpdHMgU1RERVJSIGlzIHBpcGVkIHNvIGl0IHN1cmZhY2VzIGluXG4gICAgLy8gZXhjZXB0aW9ucy4gYGluaGVyaXRTdGRpb2AgaW5zdGVhZCBzdHJlYW1zIGJvdGggc3RyYWlnaHQgdG8gdGhlIHBhcmVudC5cbiAgICBzdGRpbzogb3B0aW9ucy5pbmhlcml0U3RkaW8gPyBcImluaGVyaXRcIiA6IFtcImluaGVyaXRcIiwgMiwgXCJwaXBlXCJdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIGEgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgdHJpbW1lZCBTVERPVVQgKG9yIFNURE9VVCtTVERFUlIgaW50ZXJsZWF2ZWRcbiAqIGluIHRoZWlyIG9yaWdpbmFsIHdyaXRlIG9yZGVyLCBpZiBgY2FwdHVyZVN0ZGVycmAgaXMgc2V0KS4gVGhyb3dzIGlmIHRoZVxuICogY29tbWFuZCBleGl0cyB3aXRoIGEgbm9uLXplcm8gc3RhdHVzLlxuICovXG5mdW5jdGlvbiBjYXB0dXJlKFxuICBmaWxlOiBzdHJpbmcsXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMsXG4pOiBzdHJpbmcge1xuICBsb2dnaW5nLmRlYnVnKGAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG5cbiAgaWYgKG9wdGlvbnMuY2FwdHVyZVN0ZGVycikge1xuICAgIC8vIFNhbWUgZmQgZm9yIGJvdGggc3RyZWFtcyBzbyB0aGV5IGludGVybGVhdmUgaW4gd3JpdGUgb3JkZXIuIEEgc2hhcmVkXG4gICAgLy8gaW4tbWVtb3J5IFdyaXRhYmxlIHdvbid0IHdvcmsgaGVyZSAtIGV4ZWNGaWxlU3luYyBvbmx5IGFjY2VwdHMgc3RkaW9cbiAgICAvLyBzdHJlYW1zIGJhY2tlZCBieSBhIHJlYWwgZmQgKHR0eS9maWxlL3NvY2tldC9waXBlKS5cbiAgICBjb25zdCBjb21iaW5lZEZpbGUgPSBwYXRoLmpvaW4oXG4gICAgICBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksIFwicHJvamVuLWNhcHR1cmUtXCIpKSxcbiAgICAgIFwib3V0cHV0XCIsXG4gICAgKTtcbiAgICBjb25zdCBmZCA9IGZzLm9wZW5TeW5jKGNvbWJpbmVkRmlsZSwgXCJ3K1wiKTtcbiAgICB0cnkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjRmlsZVN5bmMoZmlsZSwgYXJncywge1xuICAgICAgICAgIC4uLnNwYXduT3B0cyhvcHRpb25zKSxcbiAgICAgICAgICBzdGRpbzogW1wiaW5oZXJpdFwiLCBmZCwgZmRdLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAvLyBtaXJyb3JzIGV4ZWNGaWxlU3luYydzIG93biBiZWhhdmlvciBvZiBhdHRhY2hpbmcgb3V0cHV0IHRvIHRoZSBlcnJvclxuICAgICAgICBlLnN0ZG91dCA9IGZzLnJlYWRGaWxlU3luYyhjb21iaW5lZEZpbGUpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhjb21iaW5lZEZpbGUsIFwidXRmLThcIikudHJpbSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBmcy5jbG9zZVN5bmMoZmQpO1xuICAgICAgZnMucm1TeW5jKHBhdGguZGlybmFtZShjb21iaW5lZEZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNoaWxkX3Byb2Nlc3NcbiAgICAuZXhlY0ZpbGVTeW5jKGZpbGUsIGFyZ3MsIHtcbiAgICAgIC4uLnNwYXduT3B0cyhvcHRpb25zKSxcbiAgICAgIHN0ZGlvOiBbXCJpbmhlcml0XCIsIFwicGlwZVwiLCBcInBpcGVcIl0sIC8vIFwicGlwZVwiIGZvciBTVERFUlIgbWVhbnMgaXQgYXBwZWFycyBpbiBleGNlcHRpb25zXG4gICAgfSlcbiAgICAudG9TdHJpbmcoXCJ1dGYtOFwiKVxuICAgIC50cmltKCk7XG59XG5cbi8qKlxuICogUnVucyBhIHByb2dyYW0gYW5kIHJldHVybnMgaXRzIHRyaW1tZWQgU1RET1VUIChvciBTVERPVVQrU1RERVJSIGludGVybGVhdmVkXG4gKiBpbiB0aGVpciBvcmlnaW5hbCB3cml0ZSBvcmRlciwgaWYgYGNhcHR1cmVTdGRlcnJgIGlzIHNldCksIG9yIGB1bmRlZmluZWRgXG4gKiBpZiB0aGUgY29tbWFuZCBmYWlsZWQgb3IgcHJvZHVjZWQgbm8gb3V0cHV0LlxuICovXG5mdW5jdGlvbiB0cnlDYXB0dXJlKFxuICBmaWxlOiBzdHJpbmcsXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIGNvbnN0IHZhbHVlID0gY2FwdHVyZShmaWxlLCBhcmdzLCBvcHRpb25zKTtcblxuICAgIC8vIGFuIGVtcHR5IHN0cmluZyBpcyB0aGUgc2FtZSBhcyB1bmRlZmluZWRcbiAgICByZXR1cm4gdmFsdWUgfHwgdW5kZWZpbmVkO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQSBzaGVsbC1mcmVlIGhhbmRsZSBmb3IgaW52b2tpbmcgYSBzaW5nbGUgcHJvZ3JhbSBieSBuYW1lIG9yIHBhdGguXG4gKlxuICogRWFjaCBhcmd1bWVudCBpcyBwYXNzZWQgdG8gdGhlIHByb2dyYW0gdmVyYmF0aW0gKG5vIHNoZWxsIHBhcnNpbmcpLCBzbyB0aGVyZVxuICogaXMgbm8gcXVvdGluZyB0byBnZXQgcmlnaHQgZm9yIHZhbHVlcyBzdWNoIGFzIHRhZ3MsIHZlcnNpb25zLCBicmFuY2ggbmFtZXNcbiAqIG9yIGZpbGUgcGF0aHMuXG4gKlxuICogTm90ZTogdGhlIHByb2dyYW0gaXMgZXhlY3V0ZWQgZGlyZWN0bHksIHdpdGhvdXQgYSBzaGVsbC4gT24gV2luZG93cyB0aGlzXG4gKiBtZWFucyBpdCBtdXN0IGJlIGEgcmVhbCBleGVjdXRhYmxlIC0gYC5jbWRgL2AuYmF0YCBzaGltcyAoc3VjaCBhc1xuICogbnBtLWluc3RhbGxlZCBDTElzIGxpa2UgbnBtL25weC95YXJuL3BucG0pIGNhbm5vdCBiZSBpbnZva2VkIHRoaXMgd2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvb2wge1xuICAvKipcbiAgICogUnVucyBgPHRvb2w+IDxhcmdzPmAsIGluaGVyaXRpbmcgc3Rkb3V0LiBUaHJvd3Mgb24gbm9uLXplcm8gZXhpdC5cbiAgICovXG4gIHJ1bihhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogUnVuT3B0aW9ucyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gIGFuZCByZXR1cm5zIGl0cyB0cmltbWVkIFNURE9VVC4gVGhyb3dzIG9uIG5vbi16ZXJvIGV4aXQuXG4gICAqL1xuICBjYXB0dXJlKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gIGFuZCByZXR1cm5zIGl0cyB0cmltbWVkIFNURE9VVCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlXG4gICAqIGNvbW1hbmQgZmFpbGVkIG9yIHByb2R1Y2VkIG5vIG91dHB1dC5cbiAgICovXG4gIHRyeUNhcHR1cmUoYXJnczogc3RyaW5nW10sIG9wdGlvbnM6IEV4ZWNGaWxlT3B0aW9ucyk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc2hlbGwtZnJlZSB7QGxpbmsgVG9vbH0gZm9yIHRoZSBnaXZlbiBwcm9ncmFtLlxuICpcbiAqIEBleGFtcGxlIGNvbnN0IGdpdCA9IHRvb2woXCJnaXRcIik7IGdpdC5ydW4oW1widGFnXCIsIFwiLS1kZWxldGVcIiwgdGFnXSwgeyBjd2QgfSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b29sKGZpbGU6IHN0cmluZyk6IFRvb2wge1xuICByZXR1cm4ge1xuICAgIHJ1bjogKGFyZ3MsIG9wdGlvbnMpID0+IHJ1bihmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgICBjYXB0dXJlOiAoYXJncywgb3B0aW9ucykgPT4gY2FwdHVyZShmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgICB0cnlDYXB0dXJlOiAoYXJncywgb3B0aW9ucykgPT4gdHJ5Q2FwdHVyZShmaWxlLCBhcmdzLCBvcHRpb25zKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBTaGVsbC1mcmVlIGhlbHBlciBmb3IgaW52b2tpbmcgYGdpdGAuXG4gKlxuICogQGV4YW1wbGUgZ2l0LnJ1bihbXCJ0YWdcIiwgXCItLWRlbGV0ZVwiLCB0YWddLCB7IGN3ZCB9KTtcbiAqL1xuZXhwb3J0IGNvbnN0IGdpdCA9IHRvb2woXCJnaXRcIik7XG5cbi8qKlxuICogU2hlbGwtZnJlZSBoZWxwZXIgZm9yIGludm9raW5nIGB1dmAgKHNoaXBzIGFzIGEgbmF0aXZlIGJpbmFyeSBvbiBhbGxcbiAqIHBsYXRmb3JtcykuXG4gKi9cbmV4cG9ydCBjb25zdCB1diA9IHRvb2woXCJ1dlwiKTtcblxuLyoqXG4gKiBTaGVsbC1mcmVlIGhlbHBlciBmb3IgaW52b2tpbmcgYHBvZXRyeWAuXG4gKi9cbmV4cG9ydCBjb25zdCBwb2V0cnkgPSB0b29sKFwicG9ldHJ5XCIpO1xuXG4vKipcbiAqIFNoZWxsLWZyZWUgaGVscGVyIGZvciBpbnZva2luZyB0aGUgY3VycmVudCBOb2RlLmpzIGV4ZWN1dGFibGVcbiAqIChgcHJvY2Vzcy5leGVjUGF0aGApLlxuICovXG5leHBvcnQgY29uc3Qgbm9kZSA9IHRvb2wocHJvY2Vzcy5leGVjUGF0aCk7XG5cbi8vXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENyb3NzLXBsYXRmb3JtIGV4ZWN1dGlvbiB2aWEgZGF4IChmb3IgYmluYXJpZXMgdGhhdCBtYXkgYmUgYC5jbWRgIHNoaW1zKS5cbi8vXG4vLyBgdG9vbGAgYWJvdmUgdXNlcyBgZXhlY0ZpbGVTeW5jYCB3aXRoIGBzaGVsbDogZmFsc2VgLCB3aGljaCBjYW5ub3QgbGF1bmNoXG4vLyBXaW5kb3dzIGAuY21kYC9gLmJhdGAgc2hpbXMgc3VjaCBhcyBgbnB4YCBvciBgbnBtYC4gYHNoaW1Ub29sYCBydW5zIHRocm91Z2hcbi8vIGRheCwgd2hpY2ggcmVzb2x2ZXMgdGhvc2Ugc2hpbXMgY3Jvc3MtcGxhdGZvcm0uIEFyZ3VtZW50cyBhcmUgaW50ZXJwb2xhdGVkXG4vLyB0aHJvdWdoIGRheCdzIGVzY2FwaW5nIChOT1QgYCQucmF3YCksIHNvIGVhY2ggdmFsdWUgaXMgcGFzc2VkIGFzIGEgc2luZ2xlXG4vLyBsaXRlcmFsIGFyZ3VtZW50IHdpdGggbm8gcXVvdGluZyB0byBnZXQgcmlnaHQuIGRheCBpcyBhc3luY2hyb25vdXMsIHNvXG4vLyB0aGVzZSBoZWxwZXJzIGFyZSBvbmx5IHVzYWJsZSBmcm9tIGFzeW5jIGNhbGwgc2l0ZXMuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vXG5cbi8qKlxuICogQXN5bmMsIGRheC1iYWNrZWQgZXF1aXZhbGVudCBvZiB7QGxpbmsgVG9vbH0gZm9yIHByb2dyYW1zIHRoYXQgbWF5IGJlIGFcbiAqIFdpbmRvd3MgYC5jbWRgL2AuYmF0YCBzaGltIChlLmcuIGBucHhgLCBgbnBtYCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXN5bmNUb29sIHtcbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gLCBpbmhlcml0aW5nIHN0ZG91dC4gUmVqZWN0cyBvbiBub24temVybyBleGl0LlxuICAgKi9cbiAgcnVuKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBSdW5zIGA8dG9vbD4gPGFyZ3M+YCBhbmQgcmVzb2x2ZXMgaXRzIHRyaW1tZWQgU1RET1VULiBSZWplY3RzIG9uIG5vbi16ZXJvXG4gICAqIGV4aXQuXG4gICAqL1xuICBjYXB0dXJlKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiB7QGxpbmsgQXN5bmNUb29sfSB0aGF0IGludm9rZXMgYGZpbGVgIHZpYSBkYXgsIHJlc29sdmluZyBXaW5kb3dzXG4gKiBgLmNtZGAvYC5iYXRgIHNoaW1zIGFuZCBlc2NhcGluZyBldmVyeSBhcmd1bWVudCAoc28gZWFjaCB2YWx1ZSBpcyBwYXNzZWQgYXNcbiAqIGEgc2luZ2xlIGxpdGVyYWwgYXJndW1lbnQpLlxuICpcbiAqIEBleGFtcGxlIGF3YWl0IG5weC5ydW4oW1wiY29tbWl0LWFuZC10YWctdmVyc2lvbkBeMTJcIl0sIHsgY3dkIH0pO1xuICovXG5mdW5jdGlvbiBzaGltVG9vbChmaWxlOiBzdHJpbmcpOiBBc3luY1Rvb2wge1xuICBjb25zdCBidWlsZCA9IChhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogRXhlY0ZpbGVPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY21kID0gJGAke2ZpbGV9ICR7YXJnc31gLmN3ZChvcHRpb25zLmN3ZCkuc3RkZXJyKFwicGlwZWRcIikubm9UaHJvdygpO1xuICAgIHJldHVybiBvcHRpb25zLmVudiA/IGNtZC5lbnYob3B0aW9ucy5lbnYpIDogY21kO1xuICB9O1xuICBjb25zdCBlbnN1cmVPayA9IChcbiAgICBhcmdzOiBzdHJpbmdbXSxcbiAgICByZXN1bHQ6IHsgY29kZTogbnVtYmVyOyBzdGRlcnI6IHN0cmluZyB9LFxuICApID0+IHtcbiAgICBpZiAocmVzdWx0LmNvZGUgIT09IDApIHtcbiAgICAgIC8vIE1pbWljIHRoZSBgY2hpbGRfcHJvY2Vzc2AgZXJyb3Igc2hhcGUgKGBzdGF0dXNgLCBgc3RkZXJyYCkgc28gY2FsbGVyc1xuICAgICAgLy8gY2FuIGluc3BlY3Qgc3RkZXJyIChlLmcuIHRvIGRldGVjdCBFTk9FTlQvRTQwNCBmcm9tIG5wbSkuXG4gICAgICBjb25zdCBlcnJvcjogYW55ID0gbmV3IEVycm9yKFxuICAgICAgICBgQ29tbWFuZCBmYWlsZWQgKGV4aXQgY29kZSAke3Jlc3VsdC5jb2RlfSk6ICR7ZmlsZX0gJHthcmdzLmpvaW4oXCIgXCIpfWAsXG4gICAgICApO1xuICAgICAgZXJyb3Iuc3RhdHVzID0gcmVzdWx0LmNvZGU7XG4gICAgICBlcnJvci5zdGRlcnIgPSBCdWZmZXIuZnJvbShyZXN1bHQuc3RkZXJyKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBydW46IGFzeW5jIChhcmdzLCBvcHRpb25zKSA9PiB7XG4gICAgICBsb2dnaW5nLmRlYnVnKGAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG4gICAgICBlbnN1cmVPayhhcmdzLCBhd2FpdCBidWlsZChhcmdzLCBvcHRpb25zKSk7XG4gICAgfSxcbiAgICBjYXB0dXJlOiBhc3luYyAoYXJncywgb3B0aW9ucykgPT4ge1xuICAgICAgbG9nZ2luZy5kZWJ1ZyhgJHtmaWxlfSAke2FyZ3Muam9pbihcIiBcIil9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYnVpbGQoYXJncywgb3B0aW9ucykuc3Rkb3V0KFwicGlwZWRcIik7XG4gICAgICBlbnN1cmVPayhhcmdzLCByZXN1bHQpO1xuICAgICAgcmV0dXJuIHJlc3VsdC5zdGRvdXQudHJpbSgpO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogQ3Jvc3MtcGxhdGZvcm0gaGVscGVyIGZvciBgbnBtYCAoYSBXaW5kb3dzIGAuY21kYCBzaGltKS5cbiAqL1xuZXhwb3J0IGNvbnN0IG5wbSA9IHNoaW1Ub29sKFwibnBtXCIpO1xuXG4vKipcbiAqIENyb3NzLXBsYXRmb3JtIGhlbHBlciBmb3IgYG5weGAgKGEgV2luZG93cyBgLmNtZGAgc2hpbSkuXG4gKi9cbmV4cG9ydCBjb25zdCBucHggPSBzaGltVG9vbChcIm5weFwiKTtcblxuLy9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gcmF3U2hlbGw6IGFyYml0cmFyeSBzaGVsbCBjb21tYW5kIHN0cmluZ3MgKHZpYSBkYXgsIGNyb3NzLXBsYXRmb3JtKS5cbi8vXG4vLyBUaGlzIHJ1bnMgYW4gb3BhcXVlIGNvbW1hbmQgKnN0cmluZyogdGhyb3VnaCBkYXgncyBjcm9zcy1wbGF0Zm9ybSBzaGVsbFxuLy8gKGluY2wuIFdpbmRvd3MpLiBUaGUgY29tbWFuZCBpcyBwYXJzZWQgYnkgYSBzaGVsbCBhcy1pcywgc28gaXQgaXMgbWVhbnQgZm9yXG4vLyBhcmJpdHJhcnkgY29tbWFuZCBsaW5lcyB0aGF0IGNhbm5vdCBiZSBleHByZXNzZWQgYXMgYSBmaXhlZCBiaW5hcnkgcGx1cyBhXG4vLyBsaXN0IG9mIGFyZ3VtZW50cywgZS5nLiBhIHJlbGVhc2UncyBgbmV4dFZlcnNpb25Db21tYW5kYCBvclxuLy8gYFJlbGVhc2FibGVDb21taXRzLmV4ZWMoKWAgKGFuZCBwcm9qZW4ncyBvd24gZ2VuZXJhdGVkIGBSZWxlYXNhYmxlQ29tbWl0c2Bcbi8vIHF1ZXJpZXMpLiBGb3IgZXZlcnl0aGluZyBlbHNlIHByZWZlciB0aGUgc3RydWN0dXJlZCBgdG9vbGAvYGdpdGAgaGVscGVyc1xuLy8gKG9yIGBzaGltVG9vbGAgZm9yIGAuY21kYCBzaGltcyksIHdoaWNoIHRha2UgYW4gZXhwbGljaXQgbGlzdCBvZiBhcmd1bWVudHMuXG4vL1xuLy8gYCQucmF3YCBpcyByZXF1aXJlZCBoZXJlIChhbmQgb25seSBoZXJlKTogdGhlIGlucHV0IGlzIGFuIG9wYXF1ZSBjb21tYW5kXG4vLyBsaW5lLCBzbyBpdCBtdXN0IGJlIHBhcnNlZCBieSBhIHNoZWxsLiBkYXggcHJvdmlkZXMgdGhhdCBzaGVsbCBvbiBldmVyeVxuLy8gcGxhdGZvcm0sIGluY2x1ZGluZyBXaW5kb3dzLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuXG5leHBvcnQgY29uc3QgcmF3U2hlbGwgPSB7XG4gIC8qKlxuICAgKiBSdW5zIGEgdXNlci1zdXBwbGllZCBzaGVsbCBjb21tYW5kIGxpbmUgYW5kIHJlc29sdmVzIGl0cyB0cmltbWVkXG4gICAqIFNURE9VVC4gUmVqZWN0cyBpZiB0aGUgY29tbWFuZCBleGl0cyBub24temVyby5cbiAgICovXG4gIGNhcHR1cmU6IGFzeW5jIChcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgb3B0aW9uczogeyBjd2Q6IHN0cmluZzsgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB9LFxuICApOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIGxvZ2dpbmcuZGVidWcoYCR7Y29tbWFuZH0gKGN3ZDogJHtvcHRpb25zLmN3ZH0pYCk7XG4gICAgY29uc3QgY21kID0gJC5yYXdgJHtjb21tYW5kfWAuY3dkKG9wdGlvbnMuY3dkKTtcbiAgICByZXR1cm4gKG9wdGlvbnMuZW52ID8gY21kLmVudihvcHRpb25zLmVudikgOiBjbWQpLnRleHQoKTtcbiAgfSxcblxuICAvKipcbiAgICogUnVucyBhIHVzZXItc3VwcGxpZWQgc2hlbGwgY29tbWFuZCBsaW5lIGFuZCByZXNvbHZlcyBpdHMgdHJpbW1lZFxuICAgKiBTVERPVVQsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBjb21tYW5kIGZhaWxlZCBvciBwcm9kdWNlZCBubyBvdXRwdXQuXG4gICAqL1xuICB0cnlDYXB0dXJlOiBhc3luYyAoXG4gICAgY29tbWFuZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHsgY3dkOiBzdHJpbmc7IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfSxcbiAgKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBsb2dnaW5nLmRlYnVnKGAke2NvbW1hbmR9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuICAgIGxldCBjbWQgPSAkLnJhd2Ake2NvbW1hbmR9YC5jd2Qob3B0aW9ucy5jd2QpLm5vVGhyb3coKS5zdGRvdXQoXCJwaXBlZFwiKTtcbiAgICBpZiAob3B0aW9ucy5lbnYpIHtcbiAgICAgIGNtZCA9IGNtZC5lbnYob3B0aW9ucy5lbnYpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjbWQ7XG4gICAgaWYgKHJlc3VsdC5jb2RlICE9PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBvdXQgPSByZXN1bHQuc3Rkb3V0LnRyaW0oKTtcbiAgICByZXR1cm4gb3V0IHx8IHVuZGVmaW5lZDtcbiAgfSxcbn07XG5cbi8vXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHN5c3RlbVNoZWxsOiB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIG5hdGl2ZSBzaGVsbC5cbi8vXG4vLyBSdW5zIGFuIG9wYXF1ZSBjb21tYW5kIHN0cmluZyB0aHJvdWdoIHRoZSBPUyBkZWZhdWx0IHNoZWxsIChgL2Jpbi9zaGAgb25cbi8vIFBPU0lYLCBgY21kLmV4ZWAgb24gV2luZG93cykgdmlhIGBjaGlsZF9wcm9jZXNzYCB3aXRoIGBzaGVsbDogdHJ1ZWAuIFRoaXNcbi8vIGJhY2tzIHRoZSBgXCJAc3lzdGVtXCJgIHRhc2sgc2hlbGwsIHdoaWNoIGxldHMgYSB0YXNrIG9wdCBvdXQgb2YgdGhlIGJ1aWx0LWluXG4vLyBjcm9zcy1wbGF0Zm9ybSBzaGVsbCBhbmQgdXNlIHRoZSBob3N0J3MgbmF0aXZlIHNoZWxsIGluc3RlYWQuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vXG5cbi8qKlxuICogTm9ybWFsaXplZCByZXN1bHQgb2YgcnVubmluZyBhIGNvbW1hbmQgdGhyb3VnaCB0aGUgc3lzdGVtIHNoZWxsIChhIHN1YnNldCBvZlxuICogbm9kZSdzIGBTcGF3blN5bmNSZXR1cm5zYCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3lzdGVtU2hlbGxSZXN1bHQge1xuICAvKiogRXhpdCBjb2RlLCBvciBgbnVsbGAgaWYgdGVybWluYXRlZCBieSBhIHNpZ25hbCBvciBuZXZlciBzcGF3bmVkLiAqL1xuICByZWFkb25seSBzdGF0dXM6IG51bWJlciB8IG51bGw7XG4gIC8qKiBDYXB0dXJlZCBzdGRvdXQsIG9yIGBudWxsYCB3aGVuIHN0ZG91dCB3YXMgaW5oZXJpdGVkLiAqL1xuICByZWFkb25seSBzdGRvdXQ6IEJ1ZmZlciB8IG51bGw7XG4gIC8qKiBDYXB0dXJlZCBzdGRlcnIsIG9yIGBudWxsYCB3aGVuIHN0ZGVyciB3YXMgaW5oZXJpdGVkLiAqL1xuICByZWFkb25seSBzdGRlcnI6IEJ1ZmZlciB8IG51bGw7XG4gIC8qKiBBbiBlcnJvciByYWlzZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBzcGF3biAobm90IGEgbm9uLXplcm8gZXhpdCkuICovXG4gIHJlYWRvbmx5IGVycm9yPzogRXJyb3I7XG59XG5cbi8qKlxuICogUnVucyBhIGNvbW1hbmQgbGluZSB0aHJvdWdoIHRoZSBvcGVyYXRpbmcgc3lzdGVtJ3MgZGVmYXVsdCBzaGVsbCAoYC9iaW4vc2hgXG4gKiBvbiBQT1NJWCwgYGNtZC5leGVgIG9uIFdpbmRvd3MpLiBOZXZlciB0aHJvd3MgZm9yIGEgbm9uLXplcm8gZXhpdCAodGhhdCBpc1xuICogcmVwb3J0ZWQgdmlhIGBzdGF0dXNgKTsgYSBzcGF3biBmYWlsdXJlIGlzIHJlcG9ydGVkIHZpYSBgZXJyb3JgLiBUaGUgY2FsbGVyXG4gKiBzdXBwbGllcyB0aGUgZnVsbCBgZW52YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5c3RlbVNoZWxsKFxuICBjb21tYW5kOiBzdHJpbmcsXG4gIG9wdGlvbnM6IHsgY3dkOiBzdHJpbmc7IGVudj86IE5vZGVKUy5Qcm9jZXNzRW52OyBjYXB0dXJlPzogYm9vbGVhbiB9LFxuKTogU3lzdGVtU2hlbGxSZXN1bHQge1xuICBsb2dnaW5nLmRlYnVnKGAke2NvbW1hbmR9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuICBjb25zdCByZXN1bHQgPSBjaGlsZF9wcm9jZXNzLnNwYXduU3luYyhjb21tYW5kLCB7XG4gICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICBzaGVsbDogdHJ1ZSxcbiAgICBtYXhCdWZmZXI6IE1BWF9CVUZGRVIsXG4gICAgZW52OiBvcHRpb25zLmVudixcbiAgICAvLyBcInBpcGVcIiBmb3IgU1RERVJSICh3aGVuIGNhcHR1cmluZykgbWVhbnMgaXQgYXBwZWFycyBpbiBleGNlcHRpb25zLlxuICAgIHN0ZGlvOiBvcHRpb25zLmNhcHR1cmUgPyBbXCJpbmhlcml0XCIsIFwicGlwZVwiLCBcInBpcGVcIl0gOiBcImluaGVyaXRcIixcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLFxuICAgIHN0ZG91dDogcmVzdWx0LnN0ZG91dCA/PyBudWxsLFxuICAgIHN0ZGVycjogcmVzdWx0LnN0ZGVyciA/PyBudWxsLFxuICAgIGVycm9yOiByZXN1bHQuZXJyb3IsXG4gIH07XG59XG4iXX0=
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2V4ZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0xBLG9CQU1DO0FBck1ELDZEQUErQztBQUMvQyx1Q0FBeUI7QUFDekIsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw2QkFBd0I7QUFDeEIsb0RBQXNDO0FBRXpCLFFBQUEsVUFBVSxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBd0QzQyxTQUFTLFNBQVMsQ0FBQyxPQUF3QjtJQUN6QyxPQUFPO1FBQ0wsU0FBUyxFQUFFLGtCQUFVO1FBQ3JCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztRQUNoQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDakUsMERBQTBEO1FBQzFELEtBQUssRUFBRSxLQUFjO0tBQ3RCLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLElBQWMsRUFBRSxPQUFtQjtJQUM1RCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFFakUsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1FBQ3JDLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUNyQixxRUFBcUU7UUFDckUsbUVBQW1FO1FBQ25FLDBFQUEwRTtRQUMxRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDO0tBQ2pFLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxPQUFPLENBQ2QsSUFBWSxFQUNaLElBQWMsRUFDZCxPQUF3QjtJQUV4QixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFFakUsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUIsdUVBQXVFO1FBQ3ZFLHVFQUF1RTtRQUN2RSxzREFBc0Q7UUFDdEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDNUIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLEVBQ3pELFFBQVEsQ0FDVCxDQUFDO1FBQ0YsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDO2dCQUNILGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtvQkFDckMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO29CQUNyQixLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDM0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7Z0JBQ2hCLHVFQUF1RTtnQkFDdkUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN6QyxNQUFNLENBQUMsQ0FBQztZQUNWLENBQUM7WUFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZELENBQUM7Z0JBQVMsQ0FBQztZQUNULEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sYUFBYTtTQUNqQixZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtRQUN4QixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDckIsS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxtREFBbUQ7S0FDeEYsQ0FBQztTQUNELFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDakIsSUFBSSxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsVUFBVSxDQUNqQixJQUFZLEVBQ1osSUFBYyxFQUNkLE9BQXdCO0lBRXhCLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTNDLDJDQUEyQztRQUMzQyxPQUFPLEtBQUssSUFBSSxTQUFTLENBQUM7SUFDNUIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FBK0JEOzs7O0dBSUc7QUFDSCxTQUFnQixJQUFJLENBQUMsSUFBWTtJQUMvQixPQUFPO1FBQ0wsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDO1FBQ2hELE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztRQUN4RCxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7S0FDL0QsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ1UsUUFBQSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRS9COzs7R0FHRztBQUNVLFFBQUEsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUU3Qjs7R0FFRztBQUNVLFFBQUEsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVyQzs7O0dBR0c7QUFDVSxRQUFBLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBZ0MzQzs7Ozs7O0dBTUc7QUFDSCxTQUFTLFFBQVEsQ0FBQyxJQUFZO0lBQzVCLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBYyxFQUFFLE9BQXdCLEVBQUUsRUFBRTtRQUN6RCxNQUFNLEdBQUcsR0FBRyxJQUFBLE9BQUMsRUFBQSxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxRSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0lBQ0YsTUFBTSxRQUFRLEdBQUcsQ0FDZixJQUFjLEVBQ2QsTUFBd0MsRUFDeEMsRUFBRTtRQUNGLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0Qix3RUFBd0U7WUFDeEUsNERBQTREO1lBQzVELE1BQU0sS0FBSyxHQUFRLElBQUksS0FBSyxDQUMxQiw2QkFBNkIsTUFBTSxDQUFDLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUN2RSxDQUFDO1lBQ0YsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQzNCLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUMsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBQ0YsT0FBTztRQUNMLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNqRSxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDakUsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxRCxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNVLFFBQUEsR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUVuQzs7R0FFRztBQUNVLFFBQUEsR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoaWxkX3Byb2Nlc3MgZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyAkIH0gZnJvbSBcImRheFwiO1xuaW1wb3J0ICogYXMgbG9nZ2luZyBmcm9tIFwiLi4vbG9nZ2luZ1wiO1xuXG5leHBvcnQgY29uc3QgTUFYX0JVRkZFUiA9IDEwICogMTAyNCAqIDEwMjQ7XG5cbi8vXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNoZWxsLWZyZWUgZXhlY3V0aW9uIChleGVjRmlsZVN5bmMsIHNoZWxsOiBmYWxzZSkuXG4vL1xuLy8gVGhlIHByb2dyYW0gYW5kIGVhY2ggYXJndW1lbnQgYXJlIHBhc3NlZCB0byB0aGUgT1MgZGlyZWN0bHkgd2l0aG91dCBnb2luZ1xuLy8gdGhyb3VnaCBhIHNoZWxsLCBzbyB0aGVyZSBpcyBubyBxdW90aW5nIHRvIGdldCByaWdodCBhbmQgbm8gZGlmZmVyZW5jZXNcbi8vIGJldHdlZW4gcGxhdGZvcm0gc2hlbGxzIHRvIGFjY291bnQgZm9yIHdoZW4gY29tbWFuZHMgaW5jbHVkZSB2YWx1ZXMgZGVyaXZlZFxuLy8gZnJvbSBmaWxlcywgZ2l0IG91dHB1dCwgY29uZmlndXJhdGlvbiwgZXRjLlxuLy9cbi8vIE9ubHkgcGVyLXRvb2wgaGVscGVycyBhcmUgZXhwb3J0ZWQgKGUuZy4gYGdpdGApOyB0aGUgZ2VuZXJpYyBwcmltaXRpdmVzIGFyZVxuLy8ga2VwdCBwcml2YXRlIHNvIGNhbGwgc2l0ZXMgYXJlIGV4cGxpY2l0IGFib3V0IHdoaWNoIHRvb2wgdGhleSBpbnZva2UuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vXG5cbi8qKlxuICogT3B0aW9ucyBmb3Igc2hlbGwtZnJlZSBjb21tYW5kIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjRmlsZU9wdGlvbnMge1xuICAvKipcbiAgICogV29ya2luZyBkaXJlY3RvcnkgZm9yIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgY3dkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBtZXJnZWQgb24gdG9wIG9mIGBwcm9jZXNzLmVudmAuXG4gICAqL1xuICByZWFkb25seSBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xuXG4gIC8qKlxuICAgKiBGb3IgYGNhcHR1cmVgL2B0cnlDYXB0dXJlYDogaW50ZXJsZWF2ZSBTVERFUlIgaW50byB0aGUgY2FwdHVyZWQgb3V0cHV0XG4gICAqIGluc3RlYWQgb2Ygb25seSBjYXB0dXJpbmcgU1RET1VULlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FwdHVyZVN0ZGVycj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIFRvb2wucnVufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5PcHRpb25zIGV4dGVuZHMgRXhlY0ZpbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFN0cmVhbSB0aGUgY2hpbGQncyBzdGRvdXQgYW5kIHN0ZGVyciBzdHJhaWdodCB0byB0aGUgcGFyZW50J3Mgc3Rkb3V0IGFuZFxuICAgKiBzdGRlcnIgKGZ1bGwgaW5oZXJpdGFuY2UpLCBpbnN0ZWFkIG9mIHJlZGlyZWN0aW5nIHN0ZG91dCB0byBzdGRlcnIgYW5kXG4gICAqIGNhcHR1cmluZyBzdGRlcnIgKHRoZSBkZWZhdWx0KS5cbiAgICpcbiAgICogVXNlIHRoaXMgd2hlbiBsYXVuY2hpbmcgYSBjaGlsZCBwcm9jZXNzIHdob3NlIHN0ZG91dCBpcyBtZWFuaW5nZnVsIGFuZFxuICAgKiB3aG9zZSBvdXRwdXQgc2hvdWxkIHN0cmVhbSBsaXZlIHRvIHRoZSB1c2VyIChlLmcuIHRoZSBwcm9qZW4gQ0xJKS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGluaGVyaXRTdGRpbz86IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIHNwYXduT3B0cyhvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBtYXhCdWZmZXI6IE1BWF9CVUZGRVIsXG4gICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICBlbnY6IG9wdGlvbnMuZW52ID8geyAuLi5wcm9jZXNzLmVudiwgLi4ub3B0aW9ucy5lbnYgfSA6IHVuZGVmaW5lZCxcbiAgICAvLyBydW4gdGhlIHByb2dyYW0gZGlyZWN0bHksIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCBhIHNoZWxsXG4gICAgc2hlbGw6IGZhbHNlIGFzIGNvbnN0LFxuICB9O1xufVxuXG4vKipcbiAqIFJ1bnMgYSBwcm9ncmFtIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cywgaW5oZXJpdGluZyBzdGRvdXQuIFRocm93cyBpZiB0aGVcbiAqIGNvbW1hbmQgZXhpdHMgd2l0aCBhIG5vbi16ZXJvIHN0YXR1cy5cbiAqL1xuZnVuY3Rpb24gcnVuKGZpbGU6IHN0cmluZywgYXJnczogc3RyaW5nW10sIG9wdGlvbnM6IFJ1bk9wdGlvbnMpOiB2b2lkIHtcbiAgbG9nZ2luZy5kZWJ1ZyhgJHtmaWxlfSAke2FyZ3Muam9pbihcIiBcIil9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuXG4gIGNoaWxkX3Byb2Nlc3MuZXhlY0ZpbGVTeW5jKGZpbGUsIGFyZ3MsIHtcbiAgICAuLi5zcGF3bk9wdHMob3B0aW9ucyksXG4gICAgLy8gQnkgZGVmYXVsdCB0aGUgY2hpbGQncyBzdGRvdXQgaXMgcmVkaXJlY3RlZCB0byBTVERFUlIgKHRvIGtlZXAgdGhlXG4gICAgLy8gcGFyZW50J3MgU1RET1VUIGNsZWFuKSBhbmQgaXRzIFNUREVSUiBpcyBwaXBlZCBzbyBpdCBzdXJmYWNlcyBpblxuICAgIC8vIGV4Y2VwdGlvbnMuIGBpbmhlcml0U3RkaW9gIGluc3RlYWQgc3RyZWFtcyBib3RoIHN0cmFpZ2h0IHRvIHRoZSBwYXJlbnQuXG4gICAgc3RkaW86IG9wdGlvbnMuaW5oZXJpdFN0ZGlvID8gXCJpbmhlcml0XCIgOiBbXCJpbmhlcml0XCIsIDIsIFwicGlwZVwiXSxcbiAgfSk7XG59XG5cbi8qKlxuICogUnVucyBhIHByb2dyYW0gYW5kIHJldHVybnMgaXRzIHRyaW1tZWQgU1RET1VUIChvciBTVERPVVQrU1RERVJSIGludGVybGVhdmVkXG4gKiBpbiB0aGVpciBvcmlnaW5hbCB3cml0ZSBvcmRlciwgaWYgYGNhcHR1cmVTdGRlcnJgIGlzIHNldCkuIFRocm93cyBpZiB0aGVcbiAqIGNvbW1hbmQgZXhpdHMgd2l0aCBhIG5vbi16ZXJvIHN0YXR1cy5cbiAqL1xuZnVuY3Rpb24gY2FwdHVyZShcbiAgZmlsZTogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogRXhlY0ZpbGVPcHRpb25zLFxuKTogc3RyaW5nIHtcbiAgbG9nZ2luZy5kZWJ1ZyhgJHtmaWxlfSAke2FyZ3Muam9pbihcIiBcIil9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuXG4gIGlmIChvcHRpb25zLmNhcHR1cmVTdGRlcnIpIHtcbiAgICAvLyBTYW1lIGZkIGZvciBib3RoIHN0cmVhbXMgc28gdGhleSBpbnRlcmxlYXZlIGluIHdyaXRlIG9yZGVyLiBBIHNoYXJlZFxuICAgIC8vIGluLW1lbW9yeSBXcml0YWJsZSB3b24ndCB3b3JrIGhlcmUgLSBleGVjRmlsZVN5bmMgb25seSBhY2NlcHRzIHN0ZGlvXG4gICAgLy8gc3RyZWFtcyBiYWNrZWQgYnkgYSByZWFsIGZkICh0dHkvZmlsZS9zb2NrZXQvcGlwZSkuXG4gICAgY29uc3QgY29tYmluZWRGaWxlID0gcGF0aC5qb2luKFxuICAgICAgZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCBcInByb2plbi1jYXB0dXJlLVwiKSksXG4gICAgICBcIm91dHB1dFwiLFxuICAgICk7XG4gICAgY29uc3QgZmQgPSBmcy5vcGVuU3luYyhjb21iaW5lZEZpbGUsIFwidytcIik7XG4gICAgdHJ5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNoaWxkX3Byb2Nlc3MuZXhlY0ZpbGVTeW5jKGZpbGUsIGFyZ3MsIHtcbiAgICAgICAgICAuLi5zcGF3bk9wdHMob3B0aW9ucyksXG4gICAgICAgICAgc3RkaW86IFtcImluaGVyaXRcIiwgZmQsIGZkXSxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgLy8gbWlycm9ycyBleGVjRmlsZVN5bmMncyBvd24gYmVoYXZpb3Igb2YgYXR0YWNoaW5nIG91dHB1dCB0byB0aGUgZXJyb3JcbiAgICAgICAgZS5zdGRvdXQgPSBmcy5yZWFkRmlsZVN5bmMoY29tYmluZWRGaWxlKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoY29tYmluZWRGaWxlLCBcInV0Zi04XCIpLnRyaW0oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgZnMuY2xvc2VTeW5jKGZkKTtcbiAgICAgIGZzLnJtU3luYyhwYXRoLmRpcm5hbWUoY29tYmluZWRGaWxlKSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjaGlsZF9wcm9jZXNzXG4gICAgLmV4ZWNGaWxlU3luYyhmaWxlLCBhcmdzLCB7XG4gICAgICAuLi5zcGF3bk9wdHMob3B0aW9ucyksXG4gICAgICBzdGRpbzogW1wiaW5oZXJpdFwiLCBcInBpcGVcIiwgXCJwaXBlXCJdLCAvLyBcInBpcGVcIiBmb3IgU1RERVJSIG1lYW5zIGl0IGFwcGVhcnMgaW4gZXhjZXB0aW9uc1xuICAgIH0pXG4gICAgLnRvU3RyaW5nKFwidXRmLThcIilcbiAgICAudHJpbSgpO1xufVxuXG4vKipcbiAqIFJ1bnMgYSBwcm9ncmFtIGFuZCByZXR1cm5zIGl0cyB0cmltbWVkIFNURE9VVCAob3IgU1RET1VUK1NUREVSUiBpbnRlcmxlYXZlZFxuICogaW4gdGhlaXIgb3JpZ2luYWwgd3JpdGUgb3JkZXIsIGlmIGBjYXB0dXJlU3RkZXJyYCBpcyBzZXQpLCBvciBgdW5kZWZpbmVkYFxuICogaWYgdGhlIGNvbW1hbmQgZmFpbGVkIG9yIHByb2R1Y2VkIG5vIG91dHB1dC5cbiAqL1xuZnVuY3Rpb24gdHJ5Q2FwdHVyZShcbiAgZmlsZTogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogRXhlY0ZpbGVPcHRpb25zLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWx1ZSA9IGNhcHR1cmUoZmlsZSwgYXJncywgb3B0aW9ucyk7XG5cbiAgICAvLyBhbiBlbXB0eSBzdHJpbmcgaXMgdGhlIHNhbWUgYXMgdW5kZWZpbmVkXG4gICAgcmV0dXJuIHZhbHVlIHx8IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIEEgc2hlbGwtZnJlZSBoYW5kbGUgZm9yIGludm9raW5nIGEgc2luZ2xlIHByb2dyYW0gYnkgbmFtZSBvciBwYXRoLlxuICpcbiAqIEVhY2ggYXJndW1lbnQgaXMgcGFzc2VkIHRvIHRoZSBwcm9ncmFtIHZlcmJhdGltIChubyBzaGVsbCBwYXJzaW5nKSwgc28gdGhlcmVcbiAqIGlzIG5vIHF1b3RpbmcgdG8gZ2V0IHJpZ2h0IGZvciB2YWx1ZXMgc3VjaCBhcyB0YWdzLCB2ZXJzaW9ucywgYnJhbmNoIG5hbWVzXG4gKiBvciBmaWxlIHBhdGhzLlxuICpcbiAqIE5vdGU6IHRoZSBwcm9ncmFtIGlzIGV4ZWN1dGVkIGRpcmVjdGx5LCB3aXRob3V0IGEgc2hlbGwuIE9uIFdpbmRvd3MgdGhpc1xuICogbWVhbnMgaXQgbXVzdCBiZSBhIHJlYWwgZXhlY3V0YWJsZSAtIGAuY21kYC9gLmJhdGAgc2hpbXMgKHN1Y2ggYXNcbiAqIG5wbS1pbnN0YWxsZWQgQ0xJcyBsaWtlIG5wbS9ucHgveWFybi9wbnBtKSBjYW5ub3QgYmUgaW52b2tlZCB0aGlzIHdheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb29sIHtcbiAgLyoqXG4gICAqIFJ1bnMgYDx0b29sPiA8YXJncz5gLCBpbmhlcml0aW5nIHN0ZG91dC4gVGhyb3dzIG9uIG5vbi16ZXJvIGV4aXQuXG4gICAqL1xuICBydW4oYXJnczogc3RyaW5nW10sIG9wdGlvbnM6IFJ1bk9wdGlvbnMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSdW5zIGA8dG9vbD4gPGFyZ3M+YCBhbmQgcmV0dXJucyBpdHMgdHJpbW1lZCBTVERPVVQuIFRocm93cyBvbiBub24temVybyBleGl0LlxuICAgKi9cbiAgY2FwdHVyZShhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogRXhlY0ZpbGVPcHRpb25zKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSdW5zIGA8dG9vbD4gPGFyZ3M+YCBhbmQgcmV0dXJucyBpdHMgdHJpbW1lZCBTVERPVVQsIG9yIGB1bmRlZmluZWRgIGlmIHRoZVxuICAgKiBjb21tYW5kIGZhaWxlZCBvciBwcm9kdWNlZCBubyBvdXRwdXQuXG4gICAqL1xuICB0cnlDYXB0dXJlKGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zOiBFeGVjRmlsZU9wdGlvbnMpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNoZWxsLWZyZWUge0BsaW5rIFRvb2x9IGZvciB0aGUgZ2l2ZW4gcHJvZ3JhbS5cbiAqXG4gKiBAZXhhbXBsZSBjb25zdCBnaXQgPSB0b29sKFwiZ2l0XCIpOyBnaXQucnVuKFtcInRhZ1wiLCBcIi0tZGVsZXRlXCIsIHRhZ10sIHsgY3dkIH0pO1xuICovXG5leHBvcnQgZnVuY3Rpb24gdG9vbChmaWxlOiBzdHJpbmcpOiBUb29sIHtcbiAgcmV0dXJuIHtcbiAgICBydW46IChhcmdzLCBvcHRpb25zKSA9PiBydW4oZmlsZSwgYXJncywgb3B0aW9ucyksXG4gICAgY2FwdHVyZTogKGFyZ3MsIG9wdGlvbnMpID0+IGNhcHR1cmUoZmlsZSwgYXJncywgb3B0aW9ucyksXG4gICAgdHJ5Q2FwdHVyZTogKGFyZ3MsIG9wdGlvbnMpID0+IHRyeUNhcHR1cmUoZmlsZSwgYXJncywgb3B0aW9ucyksXG4gIH07XG59XG5cbi8qKlxuICogU2hlbGwtZnJlZSBoZWxwZXIgZm9yIGludm9raW5nIGBnaXRgLlxuICpcbiAqIEBleGFtcGxlIGdpdC5ydW4oW1widGFnXCIsIFwiLS1kZWxldGVcIiwgdGFnXSwgeyBjd2QgfSk7XG4gKi9cbmV4cG9ydCBjb25zdCBnaXQgPSB0b29sKFwiZ2l0XCIpO1xuXG4vKipcbiAqIFNoZWxsLWZyZWUgaGVscGVyIGZvciBpbnZva2luZyBgdXZgIChzaGlwcyBhcyBhIG5hdGl2ZSBiaW5hcnkgb24gYWxsXG4gKiBwbGF0Zm9ybXMpLlxuICovXG5leHBvcnQgY29uc3QgdXYgPSB0b29sKFwidXZcIik7XG5cbi8qKlxuICogU2hlbGwtZnJlZSBoZWxwZXIgZm9yIGludm9raW5nIGBwb2V0cnlgLlxuICovXG5leHBvcnQgY29uc3QgcG9ldHJ5ID0gdG9vbChcInBvZXRyeVwiKTtcblxuLyoqXG4gKiBTaGVsbC1mcmVlIGhlbHBlciBmb3IgaW52b2tpbmcgdGhlIGN1cnJlbnQgTm9kZS5qcyBleGVjdXRhYmxlXG4gKiAoYHByb2Nlc3MuZXhlY1BhdGhgKS5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vZGUgPSB0b29sKHByb2Nlc3MuZXhlY1BhdGgpO1xuXG4vL1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDcm9zcy1wbGF0Zm9ybSBleGVjdXRpb24gdmlhIGRheCAoZm9yIGJpbmFyaWVzIHRoYXQgbWF5IGJlIGAuY21kYCBzaGltcykuXG4vL1xuLy8gYHRvb2xgIGFib3ZlIHVzZXMgYGV4ZWNGaWxlU3luY2Agd2l0aCBgc2hlbGw6IGZhbHNlYCwgd2hpY2ggY2Fubm90IGxhdW5jaFxuLy8gV2luZG93cyBgLmNtZGAvYC5iYXRgIHNoaW1zIHN1Y2ggYXMgYG5weGAgb3IgYG5wbWAuIGBzaGltVG9vbGAgcnVucyB0aHJvdWdoXG4vLyBkYXgsIHdoaWNoIHJlc29sdmVzIHRob3NlIHNoaW1zIGNyb3NzLXBsYXRmb3JtLiBBcmd1bWVudHMgYXJlIGludGVycG9sYXRlZFxuLy8gdGhyb3VnaCBkYXgncyBlc2NhcGluZyAoTk9UIGAkLnJhd2ApLCBzbyBlYWNoIHZhbHVlIGlzIHBhc3NlZCBhcyBhIHNpbmdsZVxuLy8gbGl0ZXJhbCBhcmd1bWVudCB3aXRoIG5vIHF1b3RpbmcgdG8gZ2V0IHJpZ2h0LiBkYXggaXMgYXN5bmNocm9ub3VzLCBzb1xuLy8gdGhlc2UgaGVscGVycyBhcmUgb25seSB1c2FibGUgZnJvbSBhc3luYyBjYWxsIHNpdGVzLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuXG4vKipcbiAqIEFzeW5jLCBkYXgtYmFja2VkIGVxdWl2YWxlbnQgb2Yge0BsaW5rIFRvb2x9IGZvciBwcm9ncmFtcyB0aGF0IG1heSBiZSBhXG4gKiBXaW5kb3dzIGAuY21kYC9gLmJhdGAgc2hpbSAoZS5nLiBgbnB4YCwgYG5wbWApLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzeW5jVG9vbCB7XG4gIC8qKlxuICAgKiBSdW5zIGA8dG9vbD4gPGFyZ3M+YCwgaW5oZXJpdGluZyBzdGRvdXQuIFJlamVjdHMgb24gbm9uLXplcm8gZXhpdC5cbiAgICovXG4gIHJ1bihhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogRXhlY0ZpbGVPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogUnVucyBgPHRvb2w+IDxhcmdzPmAgYW5kIHJlc29sdmVzIGl0cyB0cmltbWVkIFNURE9VVC4gUmVqZWN0cyBvbiBub24temVyb1xuICAgKiBleGl0LlxuICAgKi9cbiAgY2FwdHVyZShhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogRXhlY0ZpbGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4ge0BsaW5rIEFzeW5jVG9vbH0gdGhhdCBpbnZva2VzIGBmaWxlYCB2aWEgZGF4LCByZXNvbHZpbmcgV2luZG93c1xuICogYC5jbWRgL2AuYmF0YCBzaGltcyBhbmQgZXNjYXBpbmcgZXZlcnkgYXJndW1lbnQgKHNvIGVhY2ggdmFsdWUgaXMgcGFzc2VkIGFzXG4gKiBhIHNpbmdsZSBsaXRlcmFsIGFyZ3VtZW50KS5cbiAqXG4gKiBAZXhhbXBsZSBhd2FpdCBucHgucnVuKFtcImNvbW1pdC1hbmQtdGFnLXZlcnNpb25AXjEyXCJdLCB7IGN3ZCB9KTtcbiAqL1xuZnVuY3Rpb24gc2hpbVRvb2woZmlsZTogc3RyaW5nKTogQXN5bmNUb29sIHtcbiAgY29uc3QgYnVpbGQgPSAoYXJnczogc3RyaW5nW10sIG9wdGlvbnM6IEV4ZWNGaWxlT3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IGNtZCA9ICRgJHtmaWxlfSAke2FyZ3N9YC5jd2Qob3B0aW9ucy5jd2QpLnN0ZGVycihcInBpcGVkXCIpLm5vVGhyb3coKTtcbiAgICByZXR1cm4gb3B0aW9ucy5lbnYgPyBjbWQuZW52KG9wdGlvbnMuZW52KSA6IGNtZDtcbiAgfTtcbiAgY29uc3QgZW5zdXJlT2sgPSAoXG4gICAgYXJnczogc3RyaW5nW10sXG4gICAgcmVzdWx0OiB7IGNvZGU6IG51bWJlcjsgc3RkZXJyOiBzdHJpbmcgfSxcbiAgKSA9PiB7XG4gICAgaWYgKHJlc3VsdC5jb2RlICE9PSAwKSB7XG4gICAgICAvLyBNaW1pYyB0aGUgYGNoaWxkX3Byb2Nlc3NgIGVycm9yIHNoYXBlIChgc3RhdHVzYCwgYHN0ZGVycmApIHNvIGNhbGxlcnNcbiAgICAgIC8vIGNhbiBpbnNwZWN0IHN0ZGVyciAoZS5nLiB0byBkZXRlY3QgRU5PRU5UL0U0MDQgZnJvbSBucG0pLlxuICAgICAgY29uc3QgZXJyb3I6IGFueSA9IG5ldyBFcnJvcihcbiAgICAgICAgYENvbW1hbmQgZmFpbGVkIChleGl0IGNvZGUgJHtyZXN1bHQuY29kZX0pOiAke2ZpbGV9ICR7YXJncy5qb2luKFwiIFwiKX1gLFxuICAgICAgKTtcbiAgICAgIGVycm9yLnN0YXR1cyA9IHJlc3VsdC5jb2RlO1xuICAgICAgZXJyb3Iuc3RkZXJyID0gQnVmZmVyLmZyb20ocmVzdWx0LnN0ZGVycik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG4gIHJldHVybiB7XG4gICAgcnVuOiBhc3luYyAoYXJncywgb3B0aW9ucykgPT4ge1xuICAgICAgbG9nZ2luZy5kZWJ1ZyhgJHtmaWxlfSAke2FyZ3Muam9pbihcIiBcIil9IChjd2Q6ICR7b3B0aW9ucy5jd2R9KWApO1xuICAgICAgZW5zdXJlT2soYXJncywgYXdhaXQgYnVpbGQoYXJncywgb3B0aW9ucykpO1xuICAgIH0sXG4gICAgY2FwdHVyZTogYXN5bmMgKGFyZ3MsIG9wdGlvbnMpID0+IHtcbiAgICAgIGxvZ2dpbmcuZGVidWcoYCR7ZmlsZX0gJHthcmdzLmpvaW4oXCIgXCIpfSAoY3dkOiAke29wdGlvbnMuY3dkfSlgKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJ1aWxkKGFyZ3MsIG9wdGlvbnMpLnN0ZG91dChcInBpcGVkXCIpO1xuICAgICAgZW5zdXJlT2soYXJncywgcmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQuc3Rkb3V0LnRyaW0oKTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIENyb3NzLXBsYXRmb3JtIGhlbHBlciBmb3IgYG5wbWAgKGEgV2luZG93cyBgLmNtZGAgc2hpbSkuXG4gKi9cbmV4cG9ydCBjb25zdCBucG0gPSBzaGltVG9vbChcIm5wbVwiKTtcblxuLyoqXG4gKiBDcm9zcy1wbGF0Zm9ybSBoZWxwZXIgZm9yIGBucHhgIChhIFdpbmRvd3MgYC5jbWRgIHNoaW0pLlxuICovXG5leHBvcnQgY29uc3QgbnB4ID0gc2hpbVRvb2woXCJucHhcIik7XG4iXX0=
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Runs a builtin's async body, exiting non-zero on failure. Prints the error's
3
+ * stack when available, otherwise its message/string form - dax parse errors
4
+ * are not `Error` instances and have no `.stack`, so a naive `console.log(e.stack)`
5
+ * would print a bare "undefined".
6
+ */
7
+ export declare function runBuiltin(body: () => Promise<void>): void;
8
+ /** Returns a required env var, throwing a clear error when it is missing. */
9
+ export declare function requireEnv(name: string): string;
10
+ /** Parses an optional integer env var, throwing when it is set but not a number. */
11
+ export declare function intEnv(name: string): number | undefined;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ // Small helpers shared by the release builtin task entrypoints
3
+ // (`resolve-tag`, `decide-bump-type`, `apply-bump`).
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.runBuiltin = runBuiltin;
6
+ exports.requireEnv = requireEnv;
7
+ exports.intEnv = intEnv;
8
+ /**
9
+ * Runs a builtin's async body, exiting non-zero on failure. Prints the error's
10
+ * stack when available, otherwise its message/string form - dax parse errors
11
+ * are not `Error` instances and have no `.stack`, so a naive `console.log(e.stack)`
12
+ * would print a bare "undefined".
13
+ */
14
+ function runBuiltin(body) {
15
+ body().catch((e) => {
16
+ const err = e;
17
+ console.error(err?.stack ?? err?.message ?? String(e));
18
+ process.exit(1);
19
+ });
20
+ }
21
+ /** Returns a required env var, throwing a clear error when it is missing. */
22
+ function requireEnv(name) {
23
+ const value = process.env[name];
24
+ if (!value) {
25
+ throw new Error(`${name} is required`);
26
+ }
27
+ return value;
28
+ }
29
+ /** Parses an optional integer env var, throwing when it is set but not a number. */
30
+ function intEnv(name) {
31
+ const raw = process.env[name];
32
+ if (raw == null || raw === "") {
33
+ return undefined;
34
+ }
35
+ const value = parseInt(raw, 10);
36
+ if (Number.isNaN(value)) {
37
+ throw new Error(`${name} must be a number: ${raw}`);
38
+ }
39
+ return value;
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1lbnYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC90YXNrLWVudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0RBQStEO0FBQy9ELHFEQUFxRDs7QUFRckQsZ0NBTUM7QUFHRCxnQ0FNQztBQUdELHdCQVVDO0FBbENEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLElBQXlCO0lBQ2xELElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQVUsRUFBRSxFQUFFO1FBQzFCLE1BQU0sR0FBRyxHQUFHLENBQXlDLENBQUM7UUFDdEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsRUFBRSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCw2RUFBNkU7QUFDN0UsU0FBZ0IsVUFBVSxDQUFDLElBQVk7SUFDckMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxjQUFjLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsb0ZBQW9GO0FBQ3BGLFNBQWdCLE1BQU0sQ0FBQyxJQUFZO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUM5QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxzQkFBc0IsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU21hbGwgaGVscGVycyBzaGFyZWQgYnkgdGhlIHJlbGVhc2UgYnVpbHRpbiB0YXNrIGVudHJ5cG9pbnRzXG4vLyAoYHJlc29sdmUtdGFnYCwgYGRlY2lkZS1idW1wLXR5cGVgLCBgYXBwbHktYnVtcGApLlxuXG4vKipcbiAqIFJ1bnMgYSBidWlsdGluJ3MgYXN5bmMgYm9keSwgZXhpdGluZyBub24temVybyBvbiBmYWlsdXJlLiBQcmludHMgdGhlIGVycm9yJ3NcbiAqIHN0YWNrIHdoZW4gYXZhaWxhYmxlLCBvdGhlcndpc2UgaXRzIG1lc3NhZ2Uvc3RyaW5nIGZvcm0gLSBkYXggcGFyc2UgZXJyb3JzXG4gKiBhcmUgbm90IGBFcnJvcmAgaW5zdGFuY2VzIGFuZCBoYXZlIG5vIGAuc3RhY2tgLCBzbyBhIG5haXZlIGBjb25zb2xlLmxvZyhlLnN0YWNrKWBcbiAqIHdvdWxkIHByaW50IGEgYmFyZSBcInVuZGVmaW5lZFwiLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuQnVpbHRpbihib2R5OiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gIGJvZHkoKS5jYXRjaCgoZTogdW5rbm93bikgPT4ge1xuICAgIGNvbnN0IGVyciA9IGUgYXMgeyBzdGFjaz86IHN0cmluZzsgbWVzc2FnZT86IHN0cmluZyB9O1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyPy5zdGFjayA/PyBlcnI/Lm1lc3NhZ2UgPz8gU3RyaW5nKGUpKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH0pO1xufVxuXG4vKiogUmV0dXJucyBhIHJlcXVpcmVkIGVudiB2YXIsIHRocm93aW5nIGEgY2xlYXIgZXJyb3Igd2hlbiBpdCBpcyBtaXNzaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVFbnYobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgdmFsdWUgPSBwcm9jZXNzLmVudltuYW1lXTtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSBpcyByZXF1aXJlZGApO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqIFBhcnNlcyBhbiBvcHRpb25hbCBpbnRlZ2VyIGVudiB2YXIsIHRocm93aW5nIHdoZW4gaXQgaXMgc2V0IGJ1dCBub3QgYSBudW1iZXIuICovXG5leHBvcnQgZnVuY3Rpb24gaW50RW52KG5hbWU6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJhdyA9IHByb2Nlc3MuZW52W25hbWVdO1xuICBpZiAocmF3ID09IG51bGwgfHwgcmF3ID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCB2YWx1ZSA9IHBhcnNlSW50KHJhdywgMTApO1xuICBpZiAoTnVtYmVyLmlzTmFOKHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgbnVtYmVyOiAke3Jhd31gKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG4iXX0=
package/lib/version.d.ts CHANGED
@@ -78,6 +78,16 @@ export interface VersionOptions {
78
78
  export declare class Version extends Component {
79
79
  readonly bumpTask: Task;
80
80
  readonly unbumpTask: Task;
81
+ /**
82
+ * The task that prints the releasable commits since the latest tag. Spawned
83
+ * by `bump`; its shell can be overridden via `task.shell`.
84
+ */
85
+ readonly releasableCommitsTask: Task;
86
+ /**
87
+ * The task that runs the user's `nextVersionCommand`, if configured. Spawned
88
+ * by `bump`; its shell can be overridden via `task.shell`.
89
+ */
90
+ readonly nextVersionTask?: Task;
81
91
  /**
82
92
  * The name of the changelog file (under `artifactsDirectory`).
83
93
  */