projen 0.58.0 → 0.58.3

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 (469) hide show
  1. package/.jsii +34 -16
  2. package/docs/api/API.md +4 -2
  3. package/lib/_resolve.d.ts +0 -1
  4. package/lib/_resolve.js +5 -6
  5. package/lib/awscdk/auto-discover.d.ts +0 -1
  6. package/lib/awscdk/auto-discover.js +10 -11
  7. package/lib/awscdk/awscdk-app-java.d.ts +0 -1
  8. package/lib/awscdk/awscdk-app-java.js +3 -4
  9. package/lib/awscdk/awscdk-app-py.d.ts +0 -1
  10. package/lib/awscdk/awscdk-app-py.js +6 -7
  11. package/lib/awscdk/awscdk-app-ts.d.ts +0 -1
  12. package/lib/awscdk/awscdk-app-ts.js +11 -12
  13. package/lib/awscdk/awscdk-construct.d.ts +0 -1
  14. package/lib/awscdk/awscdk-construct.js +8 -9
  15. package/lib/awscdk/awscdk-deps-java.d.ts +0 -1
  16. package/lib/awscdk/awscdk-deps-java.js +1 -1
  17. package/lib/awscdk/awscdk-deps-js.d.ts +0 -1
  18. package/lib/awscdk/awscdk-deps-js.js +1 -1
  19. package/lib/awscdk/awscdk-deps-py.d.ts +0 -1
  20. package/lib/awscdk/awscdk-deps.d.ts +0 -1
  21. package/lib/awscdk/awscdk-deps.js +9 -12
  22. package/lib/awscdk/awscdk-pytest-sample.d.ts +0 -1
  23. package/lib/awscdk/cdk-config.d.ts +0 -1
  24. package/lib/awscdk/cdk-config.js +6 -7
  25. package/lib/awscdk/cdk-tasks.d.ts +0 -1
  26. package/lib/awscdk/cdk-tasks.js +3 -4
  27. package/lib/awscdk/index.d.ts +0 -1
  28. package/lib/awscdk/integration-test.d.ts +0 -1
  29. package/lib/awscdk/integration-test.js +5 -6
  30. package/lib/awscdk/internal.d.ts +0 -1
  31. package/lib/awscdk/lambda-extension.d.ts +0 -1
  32. package/lib/awscdk/lambda-extension.js +7 -9
  33. package/lib/awscdk/lambda-function.d.ts +0 -1
  34. package/lib/awscdk/lambda-function.js +8 -9
  35. package/lib/build/build-workflow.d.ts +0 -1
  36. package/lib/build/build-workflow.js +14 -17
  37. package/lib/build/index.d.ts +0 -1
  38. package/lib/builtin-example.task.d.ts +0 -1
  39. package/lib/cdk/auto-discover-base.d.ts +0 -1
  40. package/lib/cdk/auto-discover-base.js +2 -2
  41. package/lib/cdk/construct-lib.d.ts +0 -1
  42. package/lib/cdk/construct-lib.js +1 -1
  43. package/lib/cdk/consts.d.ts +0 -1
  44. package/lib/cdk/index.d.ts +0 -1
  45. package/lib/cdk/integration-test-base.d.ts +0 -1
  46. package/lib/cdk/integration-test-base.js +3 -4
  47. package/lib/cdk/internal.d.ts +0 -1
  48. package/lib/cdk/jsii-docgen.d.ts +0 -1
  49. package/lib/cdk/jsii-docgen.js +3 -4
  50. package/lib/cdk/jsii-project.d.ts +0 -1
  51. package/lib/cdk/jsii-project.js +16 -18
  52. package/lib/cdk8s/auto-discover.d.ts +0 -1
  53. package/lib/cdk8s/auto-discover.js +4 -5
  54. package/lib/cdk8s/cdk8s-app-ts.d.ts +0 -1
  55. package/lib/cdk8s/cdk8s-app-ts.js +6 -7
  56. package/lib/cdk8s/cdk8s-construct.d.ts +0 -1
  57. package/lib/cdk8s/cdk8s-construct.js +5 -6
  58. package/lib/cdk8s/index.d.ts +0 -1
  59. package/lib/cdk8s/integration-test.d.ts +0 -1
  60. package/lib/cdk8s/integration-test.js +1 -1
  61. package/lib/cdktf/cdktf-construct.d.ts +0 -1
  62. package/lib/cdktf/cdktf-construct.js +3 -4
  63. package/lib/cdktf/index.d.ts +0 -1
  64. package/lib/cleanup.d.ts +0 -1
  65. package/lib/cleanup.js +2 -2
  66. package/lib/cli/cmds/new.d.ts +0 -1
  67. package/lib/cli/cmds/new.js +9 -15
  68. package/lib/cli/index.d.ts +0 -1
  69. package/lib/cli/macros.d.ts +0 -1
  70. package/lib/cli/macros.js +6 -8
  71. package/lib/cli/synth.d.ts +0 -1
  72. package/lib/cli/synth.js +2 -3
  73. package/lib/cli/tasks.d.ts +0 -1
  74. package/lib/cli/tasks.js +5 -7
  75. package/lib/cli/util.d.ts +0 -1
  76. package/lib/clobber.d.ts +0 -1
  77. package/lib/common.d.ts +0 -1
  78. package/lib/component.d.ts +0 -1
  79. package/lib/component.js +1 -1
  80. package/lib/dependencies.d.ts +0 -1
  81. package/lib/dependencies.js +3 -3
  82. package/lib/dev-env.d.ts +0 -1
  83. package/lib/dev-env.js +1 -1
  84. package/lib/docker-compose.d.ts +0 -1
  85. package/lib/docker-compose.js +16 -21
  86. package/lib/file.d.ts +0 -1
  87. package/lib/file.js +7 -8
  88. package/lib/gitattributes.d.ts +0 -1
  89. package/lib/gitattributes.js +1 -1
  90. package/lib/github/auto-approve.d.ts +0 -1
  91. package/lib/github/auto-approve.js +6 -7
  92. package/lib/github/auto-merge.d.ts +0 -1
  93. package/lib/github/auto-merge.js +6 -6
  94. package/lib/github/constants.d.ts +0 -1
  95. package/lib/github/dependabot.d.ts +0 -1
  96. package/lib/github/dependabot.js +6 -7
  97. package/lib/github/github-credentials.d.ts +0 -1
  98. package/lib/github/github-credentials.js +5 -7
  99. package/lib/github/github-project.d.ts +0 -1
  100. package/lib/github/github-project.js +7 -8
  101. package/lib/github/github.d.ts +0 -1
  102. package/lib/github/github.js +5 -6
  103. package/lib/github/index.d.ts +0 -1
  104. package/lib/github/mergify.d.ts +0 -1
  105. package/lib/github/mergify.js +4 -5
  106. package/lib/github/pr-template.d.ts +0 -1
  107. package/lib/github/pr-template.js +3 -4
  108. package/lib/github/pull-request-lint.d.ts +0 -1
  109. package/lib/github/pull-request-lint.js +7 -8
  110. package/lib/github/stale-util.d.ts +0 -1
  111. package/lib/github/stale-util.js +10 -9
  112. package/lib/github/stale.d.ts +0 -1
  113. package/lib/github/stale.js +3 -4
  114. package/lib/github/task-workflow.d.ts +0 -1
  115. package/lib/github/task-workflow.js +8 -9
  116. package/lib/github/util.d.ts +0 -1
  117. package/lib/github/workflow-actions.d.ts +0 -1
  118. package/lib/github/workflows-model.d.ts +0 -1
  119. package/lib/github/workflows.d.ts +0 -1
  120. package/lib/github/workflows.js +3 -4
  121. package/lib/gitlab/configuration-model.d.ts +0 -1
  122. package/lib/gitlab/configuration.d.ts +0 -1
  123. package/lib/gitlab/configuration.js +9 -10
  124. package/lib/gitlab/gitlab-configuration.d.ts +0 -1
  125. package/lib/gitlab/gitlab-configuration.js +1 -1
  126. package/lib/gitlab/index.d.ts +0 -1
  127. package/lib/gitlab/nested-configuration.d.ts +0 -1
  128. package/lib/gitlab/nested-configuration.js +1 -1
  129. package/lib/gitpod.d.ts +0 -1
  130. package/lib/gitpod.js +9 -10
  131. package/lib/ignore-file.d.ts +0 -1
  132. package/lib/ignore-file.js +1 -1
  133. package/lib/index.d.ts +0 -1
  134. package/lib/ini.d.ts +0 -1
  135. package/lib/ini.js +1 -1
  136. package/lib/inventory.d.ts +0 -1
  137. package/lib/inventory.js +18 -22
  138. package/lib/java/index.d.ts +0 -1
  139. package/lib/java/java-project.d.ts +0 -1
  140. package/lib/java/java-project.js +9 -10
  141. package/lib/java/junit.d.ts +0 -1
  142. package/lib/java/junit.js +4 -5
  143. package/lib/java/maven-compile.d.ts +0 -1
  144. package/lib/java/maven-compile.js +4 -5
  145. package/lib/java/maven-packaging.d.ts +0 -1
  146. package/lib/java/maven-packaging.js +5 -6
  147. package/lib/java/maven-sample.d.ts +0 -1
  148. package/lib/java/maven-sample.js +1 -1
  149. package/lib/java/pom.d.ts +0 -1
  150. package/lib/java/pom.js +6 -9
  151. package/lib/java/projenrc.d.ts +0 -1
  152. package/lib/java/projenrc.js +10 -12
  153. package/lib/javascript/bundler.d.ts +0 -1
  154. package/lib/javascript/bundler.js +9 -11
  155. package/lib/javascript/eslint.d.ts +5 -2
  156. package/lib/javascript/eslint.js +10 -11
  157. package/lib/javascript/index.d.ts +0 -1
  158. package/lib/javascript/jest.d.ts +0 -1
  159. package/lib/javascript/jest.js +19 -19
  160. package/lib/javascript/node-package.d.ts +0 -1
  161. package/lib/javascript/node-package.js +36 -37
  162. package/lib/javascript/node-project.d.ts +0 -1
  163. package/lib/javascript/node-project.js +53 -54
  164. package/lib/javascript/npm-config.d.ts +0 -1
  165. package/lib/javascript/npm-config.js +1 -1
  166. package/lib/javascript/prettier.d.ts +0 -1
  167. package/lib/javascript/prettier.js +5 -7
  168. package/lib/javascript/projenrc.d.ts +0 -1
  169. package/lib/javascript/projenrc.js +4 -5
  170. package/lib/javascript/render-options.d.ts +0 -1
  171. package/lib/javascript/render-options.js +7 -8
  172. package/lib/javascript/typescript-config.d.ts +0 -1
  173. package/lib/javascript/typescript-config.js +6 -7
  174. package/lib/javascript/upgrade-dependencies.d.ts +0 -1
  175. package/lib/javascript/upgrade-dependencies.js +30 -30
  176. package/lib/javascript/util.d.ts +0 -1
  177. package/lib/javascript/util.js +3 -4
  178. package/lib/json.d.ts +0 -1
  179. package/lib/json.js +3 -4
  180. package/lib/license.d.ts +0 -1
  181. package/lib/license.js +3 -4
  182. package/lib/logger.d.ts +0 -1
  183. package/lib/logger.js +6 -7
  184. package/lib/logging.d.ts +0 -1
  185. package/lib/makefile.d.ts +0 -1
  186. package/lib/makefile.js +1 -1
  187. package/lib/object-file.d.ts +0 -1
  188. package/lib/object-file.js +6 -8
  189. package/lib/option-hints.d.ts +0 -1
  190. package/lib/project-build.d.ts +0 -1
  191. package/lib/project-build.js +1 -1
  192. package/lib/project.d.ts +0 -1
  193. package/lib/project.js +7 -8
  194. package/lib/projects.d.ts +0 -1
  195. package/lib/projects.js +5 -6
  196. package/lib/projenrc-json.d.ts +0 -1
  197. package/lib/projenrc-json.js +5 -6
  198. package/lib/python/index.d.ts +0 -1
  199. package/lib/python/pip.d.ts +0 -1
  200. package/lib/python/pip.js +1 -1
  201. package/lib/python/poetry.d.ts +0 -1
  202. package/lib/python/poetry.js +4 -5
  203. package/lib/python/projenrc.d.ts +0 -1
  204. package/lib/python/projenrc.js +7 -10
  205. package/lib/python/pytest-sample.d.ts +0 -1
  206. package/lib/python/pytest-sample.js +1 -1
  207. package/lib/python/pytest.d.ts +0 -1
  208. package/lib/python/pytest.js +4 -5
  209. package/lib/python/python-deps.d.ts +0 -1
  210. package/lib/python/python-env.d.ts +0 -1
  211. package/lib/python/python-packaging.d.ts +0 -1
  212. package/lib/python/python-project.d.ts +0 -1
  213. package/lib/python/python-project.js +16 -17
  214. package/lib/python/python-sample.d.ts +0 -1
  215. package/lib/python/python-sample.js +1 -1
  216. package/lib/python/requirements-file.d.ts +0 -1
  217. package/lib/python/requirements-file.js +1 -1
  218. package/lib/python/setuppy.d.ts +0 -1
  219. package/lib/python/setuppy.js +1 -1
  220. package/lib/python/setuptools.d.ts +0 -1
  221. package/lib/python/setuptools.js +1 -1
  222. package/lib/python/venv.d.ts +0 -1
  223. package/lib/python/venv.js +3 -4
  224. package/lib/readme.d.ts +0 -1
  225. package/lib/readme.js +4 -5
  226. package/lib/release/bump-version.d.ts +0 -1
  227. package/lib/release/bump-version.js +4 -5
  228. package/lib/release/bump-version.task.d.ts +0 -1
  229. package/lib/release/bump-version.task.js +2 -2
  230. package/lib/release/index.d.ts +0 -1
  231. package/lib/release/publisher.d.ts +0 -1
  232. package/lib/release/publisher.js +108 -123
  233. package/lib/release/release-trigger.d.ts +0 -1
  234. package/lib/release/release-trigger.js +5 -7
  235. package/lib/release/release.d.ts +0 -1
  236. package/lib/release/release.js +11 -13
  237. package/lib/release/reset-version.task.d.ts +0 -1
  238. package/lib/release/tag-version.d.ts +0 -1
  239. package/lib/release/tag-version.task.d.ts +0 -1
  240. package/lib/release/update-changelog.d.ts +0 -1
  241. package/lib/release/update-changelog.task.d.ts +0 -1
  242. package/lib/renovatebot.d.ts +0 -1
  243. package/lib/renovatebot.js +5 -6
  244. package/lib/run-projenrc-json.task.d.ts +0 -1
  245. package/lib/run-task.js +1809 -0
  246. package/lib/sample-file.d.ts +0 -1
  247. package/lib/sample-file.js +4 -4
  248. package/lib/semver.d.ts +0 -1
  249. package/lib/semver.js +3 -4
  250. package/lib/source-code.d.ts +0 -1
  251. package/lib/source-code.js +5 -6
  252. package/lib/task-model.d.ts +0 -1
  253. package/lib/task-runtime.d.ts +0 -1
  254. package/lib/task-runtime.js +15 -19
  255. package/lib/task.d.ts +0 -1
  256. package/lib/task.js +4 -5
  257. package/lib/tasks.d.ts +0 -1
  258. package/lib/tasks.js +1 -1
  259. package/lib/testing.d.ts +0 -1
  260. package/lib/testing.js +1 -1
  261. package/lib/textfile.d.ts +0 -1
  262. package/lib/textfile.js +3 -4
  263. package/lib/toml.d.ts +0 -1
  264. package/lib/toml.js +1 -1
  265. package/lib/typescript/index.d.ts +0 -1
  266. package/lib/typescript/projenrc.d.ts +0 -1
  267. package/lib/typescript/projenrc.js +9 -10
  268. package/lib/typescript/typescript-typedoc.d.ts +0 -1
  269. package/lib/typescript/typescript-typedoc.js +1 -1
  270. package/lib/typescript/typescript.d.ts +0 -1
  271. package/lib/typescript/typescript.js +43 -46
  272. package/lib/util/semver.d.ts +0 -1
  273. package/lib/util/semver.js +2 -3
  274. package/lib/util/synth.d.ts +0 -1
  275. package/lib/util/synth.js +2 -3
  276. package/lib/util.d.ts +0 -1
  277. package/lib/util.js +7 -9
  278. package/lib/version.d.ts +0 -1
  279. package/lib/version.js +3 -4
  280. package/lib/vscode/devcontainer.d.ts +0 -1
  281. package/lib/vscode/devcontainer.js +8 -8
  282. package/lib/vscode/index.d.ts +0 -1
  283. package/lib/vscode/launch-config.d.ts +0 -1
  284. package/lib/vscode/launch-config.js +1 -1
  285. package/lib/vscode/vscode.d.ts +0 -1
  286. package/lib/vscode/vscode.js +1 -1
  287. package/lib/web/index.d.ts +0 -1
  288. package/lib/web/next.d.ts +0 -1
  289. package/lib/web/next.js +16 -20
  290. package/lib/web/postcss.d.ts +0 -1
  291. package/lib/web/postcss.js +6 -7
  292. package/lib/web/react.d.ts +0 -1
  293. package/lib/web/react.js +15 -19
  294. package/lib/web/tailwind.d.ts +0 -1
  295. package/lib/web/tailwind.js +4 -5
  296. package/lib/xmlfile.d.ts +0 -1
  297. package/lib/xmlfile.js +1 -1
  298. package/lib/yaml.d.ts +0 -1
  299. package/lib/yaml.js +3 -4
  300. package/package.json +5 -5
  301. package/lib/_resolve.d.ts.map +0 -1
  302. package/lib/awscdk/auto-discover.d.ts.map +0 -1
  303. package/lib/awscdk/awscdk-app-java.d.ts.map +0 -1
  304. package/lib/awscdk/awscdk-app-py.d.ts.map +0 -1
  305. package/lib/awscdk/awscdk-app-ts.d.ts.map +0 -1
  306. package/lib/awscdk/awscdk-construct.d.ts.map +0 -1
  307. package/lib/awscdk/awscdk-deps-java.d.ts.map +0 -1
  308. package/lib/awscdk/awscdk-deps-js.d.ts.map +0 -1
  309. package/lib/awscdk/awscdk-deps-py.d.ts.map +0 -1
  310. package/lib/awscdk/awscdk-deps.d.ts.map +0 -1
  311. package/lib/awscdk/awscdk-pytest-sample.d.ts.map +0 -1
  312. package/lib/awscdk/cdk-config.d.ts.map +0 -1
  313. package/lib/awscdk/cdk-tasks.d.ts.map +0 -1
  314. package/lib/awscdk/index.d.ts.map +0 -1
  315. package/lib/awscdk/integration-test.d.ts.map +0 -1
  316. package/lib/awscdk/internal.d.ts.map +0 -1
  317. package/lib/awscdk/lambda-extension.d.ts.map +0 -1
  318. package/lib/awscdk/lambda-function.d.ts.map +0 -1
  319. package/lib/build/build-workflow.d.ts.map +0 -1
  320. package/lib/build/index.d.ts.map +0 -1
  321. package/lib/builtin-example.task.d.ts.map +0 -1
  322. package/lib/cdk/auto-discover-base.d.ts.map +0 -1
  323. package/lib/cdk/construct-lib.d.ts.map +0 -1
  324. package/lib/cdk/consts.d.ts.map +0 -1
  325. package/lib/cdk/index.d.ts.map +0 -1
  326. package/lib/cdk/integration-test-base.d.ts.map +0 -1
  327. package/lib/cdk/internal.d.ts.map +0 -1
  328. package/lib/cdk/jsii-docgen.d.ts.map +0 -1
  329. package/lib/cdk/jsii-project.d.ts.map +0 -1
  330. package/lib/cdk8s/auto-discover.d.ts.map +0 -1
  331. package/lib/cdk8s/cdk8s-app-ts.d.ts.map +0 -1
  332. package/lib/cdk8s/cdk8s-construct.d.ts.map +0 -1
  333. package/lib/cdk8s/index.d.ts.map +0 -1
  334. package/lib/cdk8s/integration-test.d.ts.map +0 -1
  335. package/lib/cdktf/cdktf-construct.d.ts.map +0 -1
  336. package/lib/cdktf/index.d.ts.map +0 -1
  337. package/lib/cleanup.d.ts.map +0 -1
  338. package/lib/cli/cmds/new.d.ts.map +0 -1
  339. package/lib/cli/index.d.ts.map +0 -1
  340. package/lib/cli/macros.d.ts.map +0 -1
  341. package/lib/cli/synth.d.ts.map +0 -1
  342. package/lib/cli/tasks.d.ts.map +0 -1
  343. package/lib/cli/util.d.ts.map +0 -1
  344. package/lib/clobber.d.ts.map +0 -1
  345. package/lib/common.d.ts.map +0 -1
  346. package/lib/component.d.ts.map +0 -1
  347. package/lib/dependencies.d.ts.map +0 -1
  348. package/lib/dev-env.d.ts.map +0 -1
  349. package/lib/docker-compose.d.ts.map +0 -1
  350. package/lib/file.d.ts.map +0 -1
  351. package/lib/gitattributes.d.ts.map +0 -1
  352. package/lib/github/auto-approve.d.ts.map +0 -1
  353. package/lib/github/auto-merge.d.ts.map +0 -1
  354. package/lib/github/constants.d.ts.map +0 -1
  355. package/lib/github/dependabot.d.ts.map +0 -1
  356. package/lib/github/github-credentials.d.ts.map +0 -1
  357. package/lib/github/github-project.d.ts.map +0 -1
  358. package/lib/github/github.d.ts.map +0 -1
  359. package/lib/github/index.d.ts.map +0 -1
  360. package/lib/github/mergify.d.ts.map +0 -1
  361. package/lib/github/pr-template.d.ts.map +0 -1
  362. package/lib/github/pull-request-lint.d.ts.map +0 -1
  363. package/lib/github/stale-util.d.ts.map +0 -1
  364. package/lib/github/stale.d.ts.map +0 -1
  365. package/lib/github/task-workflow.d.ts.map +0 -1
  366. package/lib/github/util.d.ts.map +0 -1
  367. package/lib/github/workflow-actions.d.ts.map +0 -1
  368. package/lib/github/workflows-model.d.ts.map +0 -1
  369. package/lib/github/workflows.d.ts.map +0 -1
  370. package/lib/gitlab/configuration-model.d.ts.map +0 -1
  371. package/lib/gitlab/configuration.d.ts.map +0 -1
  372. package/lib/gitlab/gitlab-configuration.d.ts.map +0 -1
  373. package/lib/gitlab/index.d.ts.map +0 -1
  374. package/lib/gitlab/nested-configuration.d.ts.map +0 -1
  375. package/lib/gitpod.d.ts.map +0 -1
  376. package/lib/ignore-file.d.ts.map +0 -1
  377. package/lib/index.d.ts.map +0 -1
  378. package/lib/ini.d.ts.map +0 -1
  379. package/lib/inventory.d.ts.map +0 -1
  380. package/lib/java/index.d.ts.map +0 -1
  381. package/lib/java/java-project.d.ts.map +0 -1
  382. package/lib/java/junit.d.ts.map +0 -1
  383. package/lib/java/maven-compile.d.ts.map +0 -1
  384. package/lib/java/maven-packaging.d.ts.map +0 -1
  385. package/lib/java/maven-sample.d.ts.map +0 -1
  386. package/lib/java/pom.d.ts.map +0 -1
  387. package/lib/java/projenrc.d.ts.map +0 -1
  388. package/lib/javascript/bundler.d.ts.map +0 -1
  389. package/lib/javascript/eslint.d.ts.map +0 -1
  390. package/lib/javascript/index.d.ts.map +0 -1
  391. package/lib/javascript/jest.d.ts.map +0 -1
  392. package/lib/javascript/node-package.d.ts.map +0 -1
  393. package/lib/javascript/node-project.d.ts.map +0 -1
  394. package/lib/javascript/npm-config.d.ts.map +0 -1
  395. package/lib/javascript/prettier.d.ts.map +0 -1
  396. package/lib/javascript/projenrc.d.ts.map +0 -1
  397. package/lib/javascript/render-options.d.ts.map +0 -1
  398. package/lib/javascript/typescript-config.d.ts.map +0 -1
  399. package/lib/javascript/upgrade-dependencies.d.ts.map +0 -1
  400. package/lib/javascript/util.d.ts.map +0 -1
  401. package/lib/json.d.ts.map +0 -1
  402. package/lib/license.d.ts.map +0 -1
  403. package/lib/logger.d.ts.map +0 -1
  404. package/lib/logging.d.ts.map +0 -1
  405. package/lib/makefile.d.ts.map +0 -1
  406. package/lib/object-file.d.ts.map +0 -1
  407. package/lib/option-hints.d.ts.map +0 -1
  408. package/lib/project-build.d.ts.map +0 -1
  409. package/lib/project.d.ts.map +0 -1
  410. package/lib/projects.d.ts.map +0 -1
  411. package/lib/projenrc-json.d.ts.map +0 -1
  412. package/lib/python/index.d.ts.map +0 -1
  413. package/lib/python/pip.d.ts.map +0 -1
  414. package/lib/python/poetry.d.ts.map +0 -1
  415. package/lib/python/projenrc.d.ts.map +0 -1
  416. package/lib/python/pytest-sample.d.ts.map +0 -1
  417. package/lib/python/pytest.d.ts.map +0 -1
  418. package/lib/python/python-deps.d.ts.map +0 -1
  419. package/lib/python/python-env.d.ts.map +0 -1
  420. package/lib/python/python-packaging.d.ts.map +0 -1
  421. package/lib/python/python-project.d.ts.map +0 -1
  422. package/lib/python/python-sample.d.ts.map +0 -1
  423. package/lib/python/requirements-file.d.ts.map +0 -1
  424. package/lib/python/setuppy.d.ts.map +0 -1
  425. package/lib/python/setuptools.d.ts.map +0 -1
  426. package/lib/python/venv.d.ts.map +0 -1
  427. package/lib/readme.d.ts.map +0 -1
  428. package/lib/release/bump-version.d.ts.map +0 -1
  429. package/lib/release/bump-version.task.d.ts.map +0 -1
  430. package/lib/release/index.d.ts.map +0 -1
  431. package/lib/release/publisher.d.ts.map +0 -1
  432. package/lib/release/release-trigger.d.ts.map +0 -1
  433. package/lib/release/release.d.ts.map +0 -1
  434. package/lib/release/reset-version.task.d.ts.map +0 -1
  435. package/lib/release/tag-version.d.ts.map +0 -1
  436. package/lib/release/tag-version.task.d.ts.map +0 -1
  437. package/lib/release/update-changelog.d.ts.map +0 -1
  438. package/lib/release/update-changelog.task.d.ts.map +0 -1
  439. package/lib/renovatebot.d.ts.map +0 -1
  440. package/lib/run-projenrc-json.task.d.ts.map +0 -1
  441. package/lib/sample-file.d.ts.map +0 -1
  442. package/lib/semver.d.ts.map +0 -1
  443. package/lib/source-code.d.ts.map +0 -1
  444. package/lib/task-model.d.ts.map +0 -1
  445. package/lib/task-runtime.d.ts.map +0 -1
  446. package/lib/task.d.ts.map +0 -1
  447. package/lib/tasks.d.ts.map +0 -1
  448. package/lib/testing.d.ts.map +0 -1
  449. package/lib/textfile.d.ts.map +0 -1
  450. package/lib/toml.d.ts.map +0 -1
  451. package/lib/typescript/index.d.ts.map +0 -1
  452. package/lib/typescript/projenrc.d.ts.map +0 -1
  453. package/lib/typescript/typescript-typedoc.d.ts.map +0 -1
  454. package/lib/typescript/typescript.d.ts.map +0 -1
  455. package/lib/util/semver.d.ts.map +0 -1
  456. package/lib/util/synth.d.ts.map +0 -1
  457. package/lib/util.d.ts.map +0 -1
  458. package/lib/version.d.ts.map +0 -1
  459. package/lib/vscode/devcontainer.d.ts.map +0 -1
  460. package/lib/vscode/index.d.ts.map +0 -1
  461. package/lib/vscode/launch-config.d.ts.map +0 -1
  462. package/lib/vscode/vscode.d.ts.map +0 -1
  463. package/lib/web/index.d.ts.map +0 -1
  464. package/lib/web/next.d.ts.map +0 -1
  465. package/lib/web/postcss.d.ts.map +0 -1
  466. package/lib/web/react.d.ts.map +0 -1
  467. package/lib/web/tailwind.d.ts.map +0 -1
  468. package/lib/xmlfile.d.ts.map +0 -1
  469. package/lib/yaml.d.ts.map +0 -1
package/lib/cli/tasks.js CHANGED
@@ -8,10 +8,9 @@ const logging = require("../logging");
8
8
  * @param ya yargs
9
9
  */
10
10
  function discoverTaskCommands(runtime, ya) {
11
- var _a, _b;
12
- const tasks = (_a = runtime.manifest.tasks) !== null && _a !== void 0 ? _a : {};
11
+ const tasks = runtime.manifest.tasks ?? {};
13
12
  for (const task of Object.values(tasks)) {
14
- ya.command(task.name, (_b = task.description) !== null && _b !== void 0 ? _b : "", taskCommandHandler(task.name));
13
+ ya.command(task.name, task.description ?? "", taskCommandHandler(task.name));
15
14
  }
16
15
  function taskCommandHandler(taskName) {
17
16
  return (args) => {
@@ -35,7 +34,6 @@ function discoverTaskCommands(runtime, ya) {
35
34
  };
36
35
  }
37
36
  function inspectTask(name, indent = 0) {
38
- var _a, _b;
39
37
  const writeln = (s) => console.log(" ".repeat(indent) + s);
40
38
  const task = runtime.tryFindTask(name);
41
39
  if (!task) {
@@ -44,10 +42,10 @@ function discoverTaskCommands(runtime, ya) {
44
42
  if (task.description) {
45
43
  writeln(`${chalk.underline("description")}: ${task.description}`);
46
44
  }
47
- for (const [k, v] of Object.entries((_a = task.env) !== null && _a !== void 0 ? _a : {})) {
45
+ for (const [k, v] of Object.entries(task.env ?? {})) {
48
46
  writeln(`${chalk.underline("env")}: ${k}=${v}`);
49
47
  }
50
- for (const step of (_b = task.steps) !== null && _b !== void 0 ? _b : []) {
48
+ for (const step of task.steps ?? []) {
51
49
  if (step.spawn) {
52
50
  writeln(`- ${chalk.bold(step.spawn)}`);
53
51
  inspectTask(step.spawn, indent + 2);
@@ -62,4 +60,4 @@ function discoverTaskCommands(runtime, ya) {
62
60
  }
63
61
  }
64
62
  exports.discoverTaskCommands = discoverTaskCommands;
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL3Rhc2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUUvQixzQ0FBc0M7QUFHdEM7OztHQUdHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsT0FBb0IsRUFBRSxFQUFjOztJQUN2RSxNQUFNLEtBQUssU0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssbUNBQUksRUFBRSxDQUFDO0lBQzNDLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN2QyxFQUFFLENBQUMsT0FBTyxDQUNSLElBQUksQ0FBQyxJQUFJLFFBQ1QsSUFBSSxDQUFDLFdBQVcsbUNBQUksRUFBRSxFQUN0QixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQzlCLENBQUM7S0FDSDtJQUVELFNBQVMsa0JBQWtCLENBQUMsUUFBZ0I7UUFDMUMsT0FBTyxDQUFDLElBQWdCLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtnQkFDckIsS0FBSyxFQUFFLEdBQUc7Z0JBQ1YsSUFBSSxFQUFFLDZCQUE2QjthQUNwQyxDQUFDLENBQUM7WUFFSCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBRXZCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsSUFBSTtvQkFDRixPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUMzQjtnQkFBQyxPQUFPLENBQUMsRUFBRTtvQkFDVixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDakI7YUFDRjtRQUNILENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTLFdBQVcsQ0FBQyxJQUFZLEVBQUUsTUFBTSxHQUFHLENBQUM7O1FBQzNDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFbkUsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksMENBQTBDLElBQUksR0FBRyxDQUFDLENBQUM7U0FDM0U7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUNuRTtRQUVELEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxPQUFDLElBQUksQ0FBQyxHQUFHLG1DQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQ25ELE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDakQ7UUFFRCxLQUFLLE1BQU0sSUFBSSxVQUFJLElBQUksQ0FBQyxLQUFLLG1DQUFJLEVBQUUsRUFBRTtZQUNuQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDckM7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNwQixPQUFPLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUNqQztpQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ3ZCLE9BQU8sQ0FBQyxjQUFjLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO1NBQ0Y7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQTNERCxvREEyREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gXCJ5YXJnc1wiO1xuaW1wb3J0ICogYXMgbG9nZ2luZyBmcm9tIFwiLi4vbG9nZ2luZ1wiO1xuaW1wb3J0IHsgVGFza1J1bnRpbWUgfSBmcm9tIFwiLi4vdGFzay1ydW50aW1lXCI7XG5cbi8qKlxuICogUmVhZHMgLnByb2plbi90YXNrcy5qc29uIGFuZCBhZGRzIENMSSBjb21tYW5kcyBmb3IgYWxsIHRhc2tzLlxuICogQHBhcmFtIHlhIHlhcmdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXNjb3ZlclRhc2tDb21tYW5kcyhydW50aW1lOiBUYXNrUnVudGltZSwgeWE6IHlhcmdzLkFyZ3YpIHtcbiAgY29uc3QgdGFza3MgPSBydW50aW1lLm1hbmlmZXN0LnRhc2tzID8/IHt9O1xuICBmb3IgKGNvbnN0IHRhc2sgb2YgT2JqZWN0LnZhbHVlcyh0YXNrcykpIHtcbiAgICB5YS5jb21tYW5kKFxuICAgICAgdGFzay5uYW1lLFxuICAgICAgdGFzay5kZXNjcmlwdGlvbiA/PyBcIlwiLFxuICAgICAgdGFza0NvbW1hbmRIYW5kbGVyKHRhc2submFtZSlcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gdGFza0NvbW1hbmRIYW5kbGVyKHRhc2tOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKGFyZ3M6IHlhcmdzLkFyZ3YpID0+IHtcbiAgICAgIGFyZ3Mub3B0aW9uKFwiaW5zcGVjdFwiLCB7XG4gICAgICAgIGFsaWFzOiBcImlcIixcbiAgICAgICAgZGVzYzogXCJzaG93IGFsbCBzdGVwcyBpbiB0aGlzIHRhc2tcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhcmd2ID0gYXJncy5hcmd2O1xuXG4gICAgICBpZiAoYXJndi5pbnNwZWN0KSB7XG4gICAgICAgIHJldHVybiBpbnNwZWN0VGFzayh0YXNrTmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJ1bnRpbWUucnVuVGFzayh0YXNrTmFtZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBsb2dnaW5nLmVycm9yKGUubWVzc2FnZSk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluc3BlY3RUYXNrKG5hbWU6IHN0cmluZywgaW5kZW50ID0gMCkge1xuICAgIGNvbnN0IHdyaXRlbG4gPSAoczogc3RyaW5nKSA9PiBjb25zb2xlLmxvZyhcIiBcIi5yZXBlYXQoaW5kZW50KSArIHMpO1xuXG4gICAgY29uc3QgdGFzayA9IHJ1bnRpbWUudHJ5RmluZFRhc2sobmFtZSk7XG4gICAgaWYgKCF0YXNrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX06IHVuYWJsZSB0byByZXNvbHZlIHN1YnRhc2sgd2l0aCBuYW1lIFwiJHtuYW1lfVwiYCk7XG4gICAgfVxuXG4gICAgaWYgKHRhc2suZGVzY3JpcHRpb24pIHtcbiAgICAgIHdyaXRlbG4oYCR7Y2hhbGsudW5kZXJsaW5lKFwiZGVzY3JpcHRpb25cIil9OiAke3Rhc2suZGVzY3JpcHRpb259YCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXModGFzay5lbnYgPz8ge30pKSB7XG4gICAgICB3cml0ZWxuKGAke2NoYWxrLnVuZGVybGluZShcImVudlwiKX06ICR7a309JHt2fWApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc3RlcCBvZiB0YXNrLnN0ZXBzID8/IFtdKSB7XG4gICAgICBpZiAoc3RlcC5zcGF3bikge1xuICAgICAgICB3cml0ZWxuKGAtICR7Y2hhbGsuYm9sZChzdGVwLnNwYXduKX1gKTtcbiAgICAgICAgaW5zcGVjdFRhc2soc3RlcC5zcGF3biwgaW5kZW50ICsgMik7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAuZXhlYykge1xuICAgICAgICB3cml0ZWxuKGAtIGV4ZWM6ICR7c3RlcC5leGVjfWApO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLmJ1aWx0aW4pIHtcbiAgICAgICAgd3JpdGVsbihgLSBidWlsdGluOiAke3N0ZXAuYnVpbHRpbn1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL3Rhc2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUUvQixzQ0FBc0M7QUFHdEM7OztHQUdHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsT0FBb0IsRUFBRSxFQUFjO0lBQ3ZFLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDdkMsRUFBRSxDQUFDLE9BQU8sQ0FDUixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxFQUN0QixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQzlCLENBQUM7S0FDSDtJQUVELFNBQVMsa0JBQWtCLENBQUMsUUFBZ0I7UUFDMUMsT0FBTyxDQUFDLElBQWdCLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtnQkFDckIsS0FBSyxFQUFFLEdBQUc7Z0JBQ1YsSUFBSSxFQUFFLDZCQUE2QjthQUNwQyxDQUFDLENBQUM7WUFFSCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBRXZCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsSUFBSTtvQkFDRixPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUMzQjtnQkFBQyxPQUFPLENBQUMsRUFBRTtvQkFDVixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDakI7YUFDRjtRQUNILENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTLFdBQVcsQ0FBQyxJQUFZLEVBQUUsTUFBTSxHQUFHLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVuRSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSwwQ0FBMEMsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUMzRTtRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQ25FO1FBRUQsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUNuRCxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRTtZQUNuQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDckM7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNwQixPQUFPLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUNqQztpQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ3ZCLE9BQU8sQ0FBQyxjQUFjLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO1NBQ0Y7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQTNERCxvREEyREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gXCJ5YXJnc1wiO1xuaW1wb3J0ICogYXMgbG9nZ2luZyBmcm9tIFwiLi4vbG9nZ2luZ1wiO1xuaW1wb3J0IHsgVGFza1J1bnRpbWUgfSBmcm9tIFwiLi4vdGFzay1ydW50aW1lXCI7XG5cbi8qKlxuICogUmVhZHMgLnByb2plbi90YXNrcy5qc29uIGFuZCBhZGRzIENMSSBjb21tYW5kcyBmb3IgYWxsIHRhc2tzLlxuICogQHBhcmFtIHlhIHlhcmdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXNjb3ZlclRhc2tDb21tYW5kcyhydW50aW1lOiBUYXNrUnVudGltZSwgeWE6IHlhcmdzLkFyZ3YpIHtcbiAgY29uc3QgdGFza3MgPSBydW50aW1lLm1hbmlmZXN0LnRhc2tzID8/IHt9O1xuICBmb3IgKGNvbnN0IHRhc2sgb2YgT2JqZWN0LnZhbHVlcyh0YXNrcykpIHtcbiAgICB5YS5jb21tYW5kKFxuICAgICAgdGFzay5uYW1lLFxuICAgICAgdGFzay5kZXNjcmlwdGlvbiA/PyBcIlwiLFxuICAgICAgdGFza0NvbW1hbmRIYW5kbGVyKHRhc2submFtZSlcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gdGFza0NvbW1hbmRIYW5kbGVyKHRhc2tOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKGFyZ3M6IHlhcmdzLkFyZ3YpID0+IHtcbiAgICAgIGFyZ3Mub3B0aW9uKFwiaW5zcGVjdFwiLCB7XG4gICAgICAgIGFsaWFzOiBcImlcIixcbiAgICAgICAgZGVzYzogXCJzaG93IGFsbCBzdGVwcyBpbiB0aGlzIHRhc2tcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhcmd2ID0gYXJncy5hcmd2O1xuXG4gICAgICBpZiAoYXJndi5pbnNwZWN0KSB7XG4gICAgICAgIHJldHVybiBpbnNwZWN0VGFzayh0YXNrTmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJ1bnRpbWUucnVuVGFzayh0YXNrTmFtZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBsb2dnaW5nLmVycm9yKGUubWVzc2FnZSk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluc3BlY3RUYXNrKG5hbWU6IHN0cmluZywgaW5kZW50ID0gMCkge1xuICAgIGNvbnN0IHdyaXRlbG4gPSAoczogc3RyaW5nKSA9PiBjb25zb2xlLmxvZyhcIiBcIi5yZXBlYXQoaW5kZW50KSArIHMpO1xuXG4gICAgY29uc3QgdGFzayA9IHJ1bnRpbWUudHJ5RmluZFRhc2sobmFtZSk7XG4gICAgaWYgKCF0YXNrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX06IHVuYWJsZSB0byByZXNvbHZlIHN1YnRhc2sgd2l0aCBuYW1lIFwiJHtuYW1lfVwiYCk7XG4gICAgfVxuXG4gICAgaWYgKHRhc2suZGVzY3JpcHRpb24pIHtcbiAgICAgIHdyaXRlbG4oYCR7Y2hhbGsudW5kZXJsaW5lKFwiZGVzY3JpcHRpb25cIil9OiAke3Rhc2suZGVzY3JpcHRpb259YCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXModGFzay5lbnYgPz8ge30pKSB7XG4gICAgICB3cml0ZWxuKGAke2NoYWxrLnVuZGVybGluZShcImVudlwiKX06ICR7a309JHt2fWApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc3RlcCBvZiB0YXNrLnN0ZXBzID8/IFtdKSB7XG4gICAgICBpZiAoc3RlcC5zcGF3bikge1xuICAgICAgICB3cml0ZWxuKGAtICR7Y2hhbGsuYm9sZChzdGVwLnNwYXduKX1gKTtcbiAgICAgICAgaW5zcGVjdFRhc2soc3RlcC5zcGF3biwgaW5kZW50ICsgMik7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAuZXhlYykge1xuICAgICAgICB3cml0ZWxuKGAtIGV4ZWM6ICR7c3RlcC5leGVjfWApO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLmJ1aWx0aW4pIHtcbiAgICAgICAgd3JpdGVsbihgLSBidWlsdGluOiAke3N0ZXAuYnVpbHRpbn1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
package/lib/cli/util.d.ts CHANGED
@@ -17,4 +17,3 @@ export declare function installPackage(baseDir: string, spec: string): string;
17
17
  * @returns The string that includes the install command ("npm install ...")
18
18
  */
19
19
  export declare function renderInstallCommand(dir: string, module: string): string;
20
- //# sourceMappingURL=util.d.ts.map
package/lib/clobber.d.ts CHANGED
@@ -3,4 +3,3 @@ import { Project } from "./project";
3
3
  export declare class Clobber extends Component {
4
4
  constructor(project: Project);
5
5
  }
6
- //# sourceMappingURL=clobber.d.ts.map
package/lib/common.d.ts CHANGED
@@ -3,4 +3,3 @@ export declare const PROJEN_DIR = ".projen";
3
3
  export declare const PROJEN_MARKER: string;
4
4
  export declare const IS_TEST_RUN: boolean;
5
5
  export declare const PROJEN_VERSION: any;
6
- //# sourceMappingURL=common.d.ts.map
@@ -18,4 +18,3 @@ export declare class Component {
18
18
  */
19
19
  postSynthesize(): void;
20
20
  }
21
- //# sourceMappingURL=component.d.ts.map
package/lib/component.js CHANGED
@@ -26,5 +26,5 @@ class Component {
26
26
  }
27
27
  exports.Component = Component;
28
28
  _a = JSII_RTTI_SYMBOL_1;
29
- Component[_a] = { fqn: "projen.Component", version: "0.58.0" };
29
+ Component[_a] = { fqn: "projen.Component", version: "0.58.3" };
30
30
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBOztHQUVHO0FBQ0gsTUFBYSxTQUFTO0lBQ3BCLFlBQTRCLE9BQWdCO1FBQWhCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDMUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhLEtBQUksQ0FBQztJQUV6Qjs7T0FFRztJQUNJLFVBQVUsS0FBSSxDQUFDO0lBRXRCOztPQUVHO0lBQ0ksY0FBYyxLQUFJLENBQUM7O0FBbEI1Qiw4QkFtQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4vcHJvamVjdFwiO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwcm9qZWN0IGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgcHJvamVjdC5fYWRkQ29tcG9uZW50KHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgc3ludGhlc2lzLlxuICAgKi9cbiAgcHVibGljIHByZVN5bnRoZXNpemUoKSB7fVxuXG4gIC8qKlxuICAgKiBTeW50aGVzaXplcyBmaWxlcyB0byB0aGUgcHJvamVjdCBvdXRwdXQgZGlyZWN0b3J5LlxuICAgKi9cbiAgcHVibGljIHN5bnRoZXNpemUoKSB7fVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgc3ludGhlc2lzLiBPcmRlciBpcyAqbm90KiBndWFyYW50ZWVkLlxuICAgKi9cbiAgcHVibGljIHBvc3RTeW50aGVzaXplKCkge31cbn1cbiJdfQ==
@@ -152,4 +152,3 @@ export declare enum DependencyType {
152
152
  */
153
153
  DEVENV = "devenv"
154
154
  }
155
- //# sourceMappingURL=dependencies.d.ts.map
@@ -51,7 +51,7 @@ class Dependencies extends component_1.Component {
51
51
  return { name };
52
52
  }
53
53
  else {
54
- return { name, version: version === null || version === void 0 ? void 0 : version.join("@") };
54
+ return { name, version: version?.join("@") };
55
55
  }
56
56
  }
57
57
  /**
@@ -169,7 +169,7 @@ class Dependencies extends component_1.Component {
169
169
  }
170
170
  exports.Dependencies = Dependencies;
171
171
  _a = JSII_RTTI_SYMBOL_1;
172
- Dependencies[_a] = { fqn: "projen.Dependencies", version: "0.58.0" };
172
+ Dependencies[_a] = { fqn: "projen.Dependencies", version: "0.58.3" };
173
173
  /**
174
174
  * The project-relative path of the deps manifest file.
175
175
  */
@@ -232,4 +232,4 @@ var DependencyType;
232
232
  */
233
233
  DependencyType["DEVENV"] = "devenv";
234
234
  })(DependencyType = exports.DependencyType || (exports.DependencyType = {}));
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RlcGVuZGVuY2llcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QixxQ0FBc0M7QUFDdEMsMkNBQXdDO0FBQ3hDLGlDQUFrQztBQUdsQzs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsWUFBYSxTQUFRLHFCQUFTO0lBZ0N6Qzs7O09BR0c7SUFDSCxZQUFZLE9BQWdCO1FBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQVBBLFVBQUssR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO1FBUy9DLDRFQUE0RTtRQUM1RSxzRUFBc0U7UUFDdEUsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ3BCLElBQUksZUFBUSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsYUFBYSxFQUFFO2dCQUNoRCxTQUFTLEVBQUUsSUFBSTtnQkFDZixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTthQUN6QixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUF2Q0Q7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVk7UUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO1FBRUQsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDM0MsSUFBSSxPQUFPLENBQUMs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RWI7OztPQUdHO0lBQ0gscUNBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCxpQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwrQkFBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxtQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBaENXLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBZ0N6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IFBST0pFTl9ESVIgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgSnNvbkZpbGUgfSBmcm9tIFwiLi9qc29uXCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4vcHJvamVjdFwiO1xuXG4vKipcbiAqIFRoZSBgRGVwZW5kZW5jaWVzYCBjb21wb25lbnQgaXMgcmVzcG9uc2libGUgdG8gdHJhY2sgdGhlIGxpc3Qgb2YgZGVwZW5kZW5jaWVzXG4gKiBhIHByb2plY3QgaGFzLCBhbmQgdGhlbiB1c2VkIGJ5IHByb2plY3QgdHlwZXMgYXMgdGhlIG1vZGVsIGZvciByZW5kZXJpbmdcbiAqIHByb2plY3Qtc3BlY2lmaWMgZGVwZW5kZW5jeSBtYW5pZmVzdHMgc3VjaCBhcyB0aGUgZGVwZW5kZW5jaWVzIHNlY3Rpb25cbiAqIGBwYWNrYWdlLmpzb25gIGZpbGVzLlxuICpcbiAqIFRvIGFkZCBhIGRlcGVuZGVuY3kgeW91IGNhbiB1c2UgYSBwcm9qZWN0LXR5cGUgc3BlY2lmaWMgQVBJIHN1Y2ggYXNcbiAqIGBub2RlUHJvamVjdC5hZGREZXBzKClgIG9yIHVzZSB0aGUgZ2VuZXJpYyBBUEkgb2YgYHByb2plY3QuZGVwc2A6XG4gKi9cbmV4cG9ydCBjbGFzcyBEZXBlbmRlbmNpZXMgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIHByb2plY3QtcmVsYXRpdmUgcGF0aCBvZiB0aGUgZGVwcyBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNQU5JRkVTVF9GSUxFID0gcGF0aC5wb3NpeC5qb2luKFxuICAgIFBST0pFTl9ESVIsXG4gICAgXCJkZXBzLmpzb25cIlxuICApO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb29yZGluYXRlcyBvZiBhIGRlcGVuZGVuY3kgc3BlYy5cbiAgICpcbiAgICogR2l2ZW4gYGZvb0BeMy40LjBgIHJldHVybnMgYHsgbmFtZTogXCJmb29cIiwgdmVyc2lvbjogXCJeMy40LjBcIiB9YC5cbiAgICogR2l2ZW4gYGJhckBucG06QGJhci9sZWdhY3lgIHJldHVybnMgYHsgbmFtZTogXCJiYXJcIiwgdmVyc2lvbjogXCJucG06QGJhci9sZWdhY3lcIiB9YC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VEZXBlbmRlbmN5KHNwZWM6IHN0cmluZyk6IERlcGVuZGVuY3lDb29yZGluYXRlcyB7XG4gICAgY29uc3Qgc2NvcGUgPSBzcGVjLnN0YXJ0c1dpdGgoXCJAXCIpO1xuICAgIGlmIChzY29wZSkge1xuICAgICAgc3BlYyA9IHNwZWMuc3Vic3RyKDEpO1xuICAgIH1cblxuICAgIGNvbnN0IFttb2R1bGUsIC4uLnZlcnNpb25dID0gc3BlYy5zcGxpdChcIkBcIik7XG4gICAgY29uc3QgbmFtZSA9IHNjb3BlID8gYEAke21vZHVsZX1gIDogbW9kdWxlO1xuICAgIGlmICh2ZXJzaW9uLmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4geyBuYW1lIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IG5hbWUsIHZlcnNpb246IHZlcnNpb24/LmpvaW4oXCJAXCIpIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVwcyA9IG5ldyBBcnJheTxEZXBlbmRlbmN5PigpO1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgZGVwZW5kZW5jaWVzIGNvbXBvbmVudCB0byB0aGUgcHJvamVjdC5cbiAgICogQHBhcmFtIHByb2plY3QgVGhlIHBhcmVudCBwcm9qZWN0XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICAvLyB0aGlzIGlzIG5vdCByZWFsbHkgcmVxdWlyZWQgYXQgdGhlIG1vbWVudCwgYnV0IGFjdHVhbGx5IHF1aXRlIHVzZWZ1bCBhcyBhXG4gICAgLy8gY2hlY2tlZC1pbiBzb3VyY2Ugb2YgdHJ1dGggZm9yIGRlcGVuZGVuY2llcyBhbmQgd2lsbCBwb3RlbnRpYWxseSBiZVxuICAgIC8vIHZhbHVhYmxlIGluIHRoZSBmdXR1cmUgZm9yIENMSSB0b29scy5cbiAgICBpZiAoIXByb2plY3QuZWplY3RlZCkge1xuICAgICAgbmV3IEpzb25GaWxlKHByb2plY3QsIERlcGVuZGVuY2llcy5NQU5JRkVTVF9GSUxFLCB7XG4gICAgICAgIG9taXRFbXB0eTogdHJ1ZSxcbiAgICAgICAgb2JqOiAoKSA9PiB0aGlzLnRvSnNvbigpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEEgY29weSBvZiBhbGwgZGVwZW5kZW5jaWVzIHJlY29yZGVkIGZvciB0aGlzIHByb2plY3QuXG4gICAqXG4gICAqIFRoZSBsaXN0IGlzIHNvcnRlZCBieSB0eXBlLT5uYW1lLT52ZXJzaW9uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFsbCgpOiBEZXBlbmRlbmN5W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5fZGVwc10uc29ydChjb21wYXJlRGVwcykubWFwKG5vcm1hbGl6ZURlcCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGRlcGVuZGVuY3kgYnkgbmFtZS5cbiAgICpcbiAgICogRmFpbHMgaWYgdGhlcmUgaXMgbm8gZGVwZW5kZW5jeSBkZWZpbmVkIGJ5IHRoYXQgbmFtZSBvciBpZiBgdHlwZWAgaXMgbm90XG4gICAqIHByb3ZpZGVkIGFuZCB0aGVyZSBpcyBtb3JlIHRoZW4gb25lIGRlcGVuZGVuY3kgdHlwZSBmb3IgdGhpcyBkZXBlbmRlbmN5LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZGVwZW5kZW5jeVxuICAgKiBAcGFyYW0gdHlwZSBUaGUgZGVwZW5kZW5jeSB0eXBlLiBJZiB0aGlzIGRlcGVuZGVuY3kgaXMgZGVmaW5lZCBvbmx5IGZvciBhXG4gICAqIHNpbmdsZSB0eXBlLCB0aGlzIGFyZ3VtZW50IGNhbiBiZSBvbWl0dGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBhIGNvcHkgKGNhbm5vdCBiZSBtb2RpZmllZClcbiAgICovXG4gIHB1YmxpYyBnZXREZXBlbmRlbmN5KG5hbWU6IHN0cmluZywgdHlwZT86IERlcGVuZGVuY3lUeXBlKTogRGVwZW5kZW5jeSB7XG4gICAgY29uc3QgZGVwID0gdGhpcy50cnlHZXREZXBlbmRlbmN5KG5hbWUsIHR5cGUpO1xuICAgIGlmICghZGVwKSB7XG4gICAgICBjb25zdCBtc2cgPSB0eXBlXG4gICAgICAgID8gYHRoZXJlIGlzIG5vICR7dHlwZX0gZGVwZW5kZW5jeSBkZWZpbmVkIG9uIFwiJHtuYW1lfVwiYFxuICAgICAgICA6IGB0aGVyZSBpcyBubyBkZXBlbmRlbmN5IGRlZmluZWQgb24gXCIke25hbWV9XCJgO1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBkZXBlbmRlbmN5IGJ5IG5hbWUuXG4gICAqXG4gICAqIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlcmUgaXMgbm8gZGVwZW5kZW5jeSBkZWZpbmVkIGJ5IHRoYXQgbmFtZSBvciBpZlxuICAgKiBgdHlwZWAgaXMgbm90IHByb3ZpZGVkIGFuZCB0aGVyZSBpcyBtb3JlIHRoZW4gb25lIGRlcGVuZGVuY3kgdHlwZSBmb3IgdGhpc1xuICAgKiBkZXBlbmRlbmN5LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZGVwZW5kZW5jeVxuICAgKiBAcGFyYW0gdHlwZSBUaGUgZGVwZW5kZW5jeSB0eXBlLiBJZiB0aGlzIGRlcGVuZGVuY3kgaXMgZGVmaW5lZCBvbmx5IGZvciBhXG4gICAqIHNpbmdsZSB0eXBlLCB0aGlzIGFyZ3VtZW50IGNhbiBiZSBvbWl0dGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBhIGNvcHkgKGNhbm5vdCBiZSBtb2RpZmllZCkgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vIG1hdGNoXG4gICAqL1xuICBwdWJsaWMgdHJ5R2V0RGVwZW5kZW5jeShcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdHlwZT86IERlcGVuZGVuY3lUeXBlXG4gICk6IERlcGVuZGVuY3kgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlkeCA9IHRoaXMudHJ5R2V0RGVwZW5kZW5jeUluZGV4KG5hbWUsIHR5cGUpO1xuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5ub3JtYWxpemVEZXAodGhpcy5fZGVwc1tpZHhdKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBkZXBlbmRlbmN5IHRvIHRoaXMgcHJvamVjdC5cbiAgICogQHBhcmFtIHNwZWMgVGhlIGRlcGVuZGVuY3kgc3BlYyBpbiB0aGUgZm9ybWF0IGBNT0RVTEVbQFZFUlNJT05dYCB3aGVyZVxuICAgKiBgTU9EVUxFYCBpcyB0aGUgcGFja2FnZS1tYW5hZ2VyLXNwZWNpZmljIG1vZHVsZSBuYW1lIGFuZCBgVkVSU0lPTmAgaXMgYW5cbiAgICogb3B0aW9uYWwgc2VtYW50aWMgdmVyc2lvbiByZXF1aXJlbWVudCAoZS5nLiBgXjMuNC4wYCkuXG4gICAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIHRoZSBkZXBlbmRlbmN5LlxuICAgKi9cbiAgcHVibGljIGFkZERlcGVuZGVuY3koXG4gICAgc3BlYzogc3RyaW5nLFxuICAgIHR5cGU6IERlcGVuZGVuY3lUeXBlLFxuICAgIG1ldGFkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cbiAgKTogRGVwZW5kZW5jeSB7XG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5kZWJ1ZyhgJHt0eXBlfS1kZXAgJHtzcGVjfWApO1xuXG4gICAgY29uc3QgZGVwOiBEZXBlbmRlbmN5ID0ge1xuICAgICAgLi4uRGVwZW5kZW5jaWVzLnBhcnNlRGVwZW5kZW5jeShzcGVjKSxcbiAgICAgIHR5cGUsXG4gICAgICBtZXRhZGF0YSxcbiAgICB9O1xuXG4gICAgY29uc3QgZXhpc3RpbmdEZXBJbmRleCA9IHRoaXMudHJ5R2V0RGVwZW5kZW5jeUluZGV4KGRlcC5uYW1lLCB0eXBlKTtcblxuICAgIGlmIChleGlzdGluZ0RlcEluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYHVwZGF0aW5nIGV4aXN0aW5nICR7ZGVwLnR5cGV9LWRlcCAke2RlcC5uYW1lfSB3aXRoIG1vcmUgc3BlY2lmaWMgdmVyc2lvbi9tZXRhZGF0YWBcbiAgICAgICk7XG4gICAgICB0aGlzLl9kZXBzW2V4aXN0aW5nRGVwSW5kZXhdID0gZGVwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kZXBzLnB1c2goZGVwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBkZXBlbmRlbmN5LlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRvIHJlbW92ZSAod2l0aG91dCB0aGUgdmVyc2lvbilcbiAgICogQHBhcmFtIHR5cGUgVGhlIGRlcGVuZGVuY3kgdHlwZS4gVGhpcyBpcyBvbmx5IHJlcXVpcmVkIGlmIHRoZXJlIHRoZVxuICAgKiBkZXBlbmRlbmN5IGlzIGRlZmluZWQgZm9yIG11bHRpcGxlIHR5cGVzLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZURlcGVuZGVuY3kobmFtZTogc3RyaW5nLCB0eXBlPzogRGVwZW5kZW5jeVR5cGUpIHtcbiAgICBjb25zdCByZW1vdmVJbmRleCA9IHRoaXMudHJ5R2V0RGVwZW5kZW5jeUluZGV4KG5hbWUsIHR5cGUpO1xuICAgIGlmIChyZW1vdmVJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kZXBzLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XG4gIH1cblxuICBwcml2YXRlIHRyeUdldERlcGVuZGVuY3lJbmRleChuYW1lOiBzdHJpbmcsIHR5cGU/OiBEZXBlbmRlbmN5VHlwZSk6IG51bWJlciB7XG4gICAgY29uc3QgZGVwcyA9IHRoaXMuX2RlcHMuZmlsdGVyKChkKSA9PiBkLm5hbWUgPT09IG5hbWUpO1xuICAgIGlmIChkZXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xOyAvLyBub3QgZm91bmRcbiAgICB9XG5cbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIGlmIChkZXBzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBcIiR7bmFtZX1cIiBpcyBkZWZpbmVkIGZvciBtdWx0aXBsZSBkZXBlbmRlbmN5IHR5cGVzOiAke2RlcHNcbiAgICAgICAgICAgIC5tYXAoKGQpID0+IGQudHlwZSlcbiAgICAgICAgICAgIC5qb2luKFwiLFwiKX0uIFBsZWFzZSBzcGVjaWZ5IGRlcGVuZGVuY3kgdHlwZWBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdHlwZSA9IGRlcHNbMF0udHlwZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZGVwcy5maW5kSW5kZXgoXG4gICAgICAoZGVwKSA9PiBkZXAubmFtZSA9PT0gbmFtZSAmJiBkZXAudHlwZSA9PT0gdHlwZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHRvSnNvbigpOiBEZXBzTWFuaWZlc3QgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLl9kZXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlcGVuZGVuY2llczogdGhpcy5fZGVwcy5zb3J0KGNvbXBhcmVEZXBzKS5tYXAobm9ybWFsaXplRGVwKSxcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZURlcChkOiBEZXBlbmRlbmN5KSB7XG4gIGNvbnN0IG9iajogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGQpKSB7XG4gICAgaWYgKHYgPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIE9iamVjdC5rZXlzKHYpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHYpICYmIHYubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgb2JqW2tdID0gdjtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVEZXBzKGQxOiBEZXBlbmRlbmN5LCBkMjogRGVwZW5kZW5jeSkge1xuICByZXR1cm4gc3BlY09mKGQxKS5sb2NhbGVDb21wYXJlKHNwZWNPZihkMikpO1xuXG4gIGZ1bmN0aW9uIHNwZWNPZihkZXA6IERlcGVuZGVuY3kpIHtcbiAgICBsZXQgc3BlYyA9IGRlcC50eXBlICsgXCI6XCIgKyBkZXAubmFtZTtcbiAgICBpZiAoZGVwLnZlcnNpb24pIHtcbiAgICAgIHNwZWMgKz0gXCJAXCIgKyBkZXAudmVyc2lvbjtcbiAgICB9XG4gICAgcmV0dXJuIHNwZWM7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBzTWFuaWZlc3Qge1xuICAvKipcbiAgICogQWxsIGRlcGVuZGVuY2llcyBvZiB0aGlzIG1vZHVsZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llczogRGVwZW5kZW5jeVtdO1xufVxuXG4vKipcbiAqIENvb3JkaW5hdGVzIG9mIHRoZSBkZXBlbmRlbmN5IChuYW1lIGFuZCB2ZXJzaW9uKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXBlbmRlbmN5Q29vcmRpbmF0ZXMge1xuICAvKipcbiAgICogVGhlIHBhY2thZ2UgbWFuYWdlciBuYW1lIG9mIHRoZSBkZXBlbmRlbmN5IChlLmcuIGBsZWZ0cGFkYCBmb3IgbnBtKS5cbiAgICpcbiAgICogTk9URTogRm9yIHBhY2thZ2UgbWFuYWdlcnMgdGhhdCB1c2UgY29tcGxleCBjb29yZGluYXRlcyAobGlrZSBNYXZlbiksIHdlXG4gICAqIHdpbGwgY29kaWZ5IGl0IGludG8gYSBzdHJpbmcgc29tZWhvdy5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogU2VtYW50aWMgdmVyc2lvbiB2ZXJzaW9uIHJlcXVpcmVtZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHJlcXVpcmVtZW50IGlzIG1hbmFnZWQgYnkgdGhlIHBhY2thZ2UgbWFuYWdlciAoZS5nLiBucG0veWFybikuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwcm9qZWN0IGRlcGVuZGVuY3kuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwZW5kZW5jeSBleHRlbmRzIERlcGVuZGVuY3lDb29yZGluYXRlcyB7XG4gIC8qKlxuICAgKiBXaGljaCB0eXBlIG9mIGRlcGVuZGVuY3kgdGhpcyBpcyAocnVudGltZSwgYnVpbGQtdGltZSwgZXRjKS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IERlcGVuZGVuY3lUeXBlO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIEpTT04gbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXBlbmRlbmN5IChwYWNrYWdlIG1hbmFnZXJcbiAgICogc3BlY2lmaWMpLlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKipcbiAqIFR5cGUgb2YgZGVwZW5kZW5jeS5cbiAqL1xuZXhwb3J0IGVudW0gRGVwZW5kZW5jeVR5cGUge1xuICAvKipcbiAgICogVGhlIGRlcGVuZGVuY3kgaXMgcmVxdWlyZWQgZm9yIHRoZSBwcm9ncmFtL2xpYnJhcnkgZHVyaW5nIHJ1bnRpbWUuXG4gICAqL1xuICBSVU5USU1FID0gXCJydW50aW1lXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXBlbmRlbmN5IGlzIHJlcXVpcmVkIGF0IHJ1bnRpbWUgYnV0IGV4cGVjdGVkIHRvIGJlIGluc3RhbGxlZCBieSB0aGVcbiAgICogY29uc3VtZXIuXG4gICAqL1xuICBQRUVSID0gXCJwZWVyXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXBlbmRlbmN5IGlzIGJ1bmRsZWQgYW5kIHNoaXBwZWQgd2l0aCB0aGUgbW9kdWxlLCBzbyBjb25zdW1lcnMgYXJlIG5vdFxuICAgKiByZXF1aXJlZCB0byBpbnN0YWxsIGl0LlxuICAgKi9cbiAgQlVORExFRCA9IFwiYnVuZGxlZFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVwZW5kZW5jeSBpcyByZXF1aXJlZCB0byBydW4gdGhlIGBidWlsZGAgdGFzay5cbiAgICovXG4gIEJVSUxEID0gXCJidWlsZFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVwZW5kZW5jeSBpcyByZXF1aXJlZCB0byBydW4gdGhlIGB0ZXN0YCB0YXNrLlxuICAgKi9cbiAgVEVTVCA9IFwidGVzdFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVwZW5kZW5jeSBpcyByZXF1aXJlZCBmb3IgZGV2ZWxvcG1lbnQgKGUuZy4gSURFIHBsdWdpbnMpLlxuICAgKi9cbiAgREVWRU5WID0gXCJkZXZlbnZcIixcbn1cbiJdfQ==
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RlcGVuZGVuY2llcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QixxQ0FBc0M7QUFDdEMsMkNBQXdDO0FBQ3hDLGlDQUFrQztBQUdsQzs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsWUFBYSxTQUFRLHFCQUFTO0lBZ0N6Qzs7O09BR0c7SUFDSCxZQUFZLE9BQWdCO1FBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQVBBLFVBQUssR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO1FBUy9DLDRFQUE0RTtRQUM1RSxzRUFBc0U7UUFDdEUsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ3BCLElBQUksZUFBUSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsYUFBYSxFQUFFO2dCQUNoRCxTQUFTLEVBQUUsSUFBSTtnQkFDZixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTthQUN6QixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUF2Q0Q7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVk7UUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO1FBRUQsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDM0MsSUFBSSxPQUFPLENBQUMs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LENBQUE7SUFFbkI7O09BRUc7SUFDSCxpQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwrQkFBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxtQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBaENXLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBZ0N6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IFBST0pFTl9ESVIgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgSnNvbkZpbGUgfSBmcm9tIFwiLi9qc29uXCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4vcHJvamVjdFwiO1xuXG4vKipcbiAqIFRoZSBgRGVwZW5kZW5jaWVzYCBjb21wb25lbnQgaXMgcmVzcG9uc2libGUgdG8gdHJhY2sgdGhlIGxpc3Qgb2YgZGVwZW5kZW5jaWVzXG4gKiBhIHByb2plY3QgaGFzLCBhbmQgdGhlbiB1c2VkIGJ5IHByb2plY3QgdHlwZXMgYXMgdGhlIG1vZGVsIGZvciByZW5kZXJpbmdcbiAqIHByb2plY3Qtc3BlY2lmaWMgZGVwZW5kZW5jeSBtYW5pZmVzdHMgc3VjaCBhcyB0aGUgZGVwZW5kZW5jaWVzIHNlY3Rpb25cbiAqIGBwYWNrYWdlLmpzb25gIGZpbGVzLlxuICpcbiAqIFRvIGFkZCBhIGRlcGVuZGVuY3kgeW91IGNhbiB1c2UgYSBwcm9qZWN0LXR5cGUgc3BlY2lmaWMgQVBJIHN1Y2ggYXNcbiAqIGBub2RlUHJvamVjdC5hZGREZXBzKClgIG9yIHVzZSB0aGUgZ2VuZXJpYyBBUEkgb2YgYHByb2plY3QuZGVwc2A6XG4gKi9cbmV4cG9ydCBjbGFzcyBEZXBlbmRlbmNpZXMgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIHByb2plY3QtcmVsYXRpdmUgcGF0aCBvZiB0aGUgZGVwcyBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNQU5JRkVTVF9GSUxFID0gcGF0aC5wb3NpeC5qb2luKFxuICAgIFBST0pFTl9ESVIsXG4gICAgXCJkZXBzLmpzb25cIlxuICApO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb29yZGluYXRlcyBvZiBhIGRlcGVuZGVuY3kgc3BlYy5cbiAgICpcbiAgICogR2l2ZW4gYGZvb0BeMy40LjBgIHJldHVybnMgYHsgbmFtZTogXCJmb29cIiwgdmVyc2lvbjogXCJeMy40LjBcIiB9YC5cbiAgICogR2l2ZW4gYGJhckBucG06QGJhci9sZWdhY3lgIHJldHVybnMgYHsgbmFtZTogXCJiYXJcIiwgdmVyc2lvbjogXCJucG06QGJhci9sZWdhY3lcIiB9YC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VEZXBlbmRlbmN5KHNwZWM6IHN0cmluZyk6IERlcGVuZGVuY3lDb29yZGluYXRlcyB7XG4gICAgY29uc3Qgc2NvcGUgPSBzcGVjLnN0YXJ0c1dpdGgoXCJAXCIpO1xuICAgIGlmIChzY29wZSkge1xuICAgICAgc3BlYyA9IHNwZWMuc3Vic3RyKDEpO1xuICAgIH1cblxuICAgIGNvbnN0IFttb2R1bGUsIC4uLnZlcnNpb25dID0gc3BlYy5zcGxpdChcIkBcIik7XG4gICAgY29uc3QgbmFtZSA9IHNjb3BlID8gYEAke21vZHVsZX1gIDogbW9kdWxlO1xuICAgIGlmICh2ZXJzaW9uLmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4geyBuYW1lIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IG5hbWUsIHZlcnNpb246IHZlcnNpb24/LmpvaW4oXCJAXCIpIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVwcyA9IG5ldyBBcnJheTxEZXBlbmRlbmN5PigpO1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgZGVwZW5kZW5jaWVzIGNvbXBvbmVudCB0byB0aGUgcHJvamVjdC5cbiAgICogQHBhcmFtIHByb2plY3QgVGhlIHBhcmVudCBwcm9qZWN0XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICAvLyB0aGlzIGlzIG5vdCByZWFsbHkgcmVxdWlyZWQgYXQgdGhlIG1vbWVudCwgYnV0IGFjdHVhbGx5IHF1aXRlIHVzZWZ1bCBhcyBhXG4gICAgLy8gY2hlY2tlZC1pbiBzb3VyY2Ugb2YgdHJ1dGggZm9yIGRlcGVuZGVuY2llcyBhbmQgd2lsbCBwb3RlbnRpYWxseSBiZVxuICAgIC8vIHZhbHVhYmxlIGluIHRoZSBmdXR1cmUgZm9yIENMSSB0b29scy5cbiAgICBpZiAoIXByb2plY3QuZWplY3RlZCkge1xuICAgICAgbmV3IEpzb25GaWxlKHByb2plY3QsIERlcGVuZGVuY2llcy5NQU5JRkVTVF9GSUxFLCB7XG4gICAgICAgIG9taXRFbXB0eTogdHJ1ZSxcbiAgICAgICAgb2JqOiAoKSA9PiB0aGlzLnRvSnNvbigpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEEgY29weSBvZiBhbGwgZGVwZW5kZW5jaWVzIHJlY29yZGVkIGZvciB0aGlzIHByb2plY3QuXG4gICAqXG4gICAqIFRoZSBsaXN0IGlzIHNvcnRlZCBieSB0eXBlLT5uYW1lLT52ZXJzaW9uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFsbCgpOiBEZXBlbmRlbmN5W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5fZGVwc10uc29ydChjb21wYXJlRGVwcykubWFwKG5vcm1hbGl6ZURlcCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGRlcGVuZGVuY3kgYnkgbmFtZS5cbiAgICpcbiAgICogRmFpbHMgaWYgdGhlcmUgaXMgbm8gZGVwZW5kZW5jeSBkZWZpbmVkIGJ5IHRoYXQgbmFtZSBvciBpZiBgdHlwZWAgaXMgbm90XG4gICAqIHByb3ZpZGVkIGFuZCB0aGVyZSBpcyBtb3JlIHRoZW4gb25lIGRlcGVuZGVuY3kgdHlwZSBmb3IgdGhpcyBkZXBlbmRlbmN5LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZGVwZW5kZW5jeVxuICAgKiBAcGFyYW0gdHlwZSBUaGUgZGVwZW5kZW5jeSB0eXBlLiBJZiB0aGlzIGRlcGVuZGVuY3kgaXMgZGVmaW5lZCBvbmx5IGZvciBhXG4gICAqIHNpbmdsZSB0eXBlLCB0aGlzIGFyZ3VtZW50IGNhbiBiZSBvbWl0dGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBhIGNvcHkgKGNhbm5vdCBiZSBtb2RpZmllZClcbiAgICovXG4gIHB1YmxpYyBnZXREZXBlbmRlbmN5KG5hbWU6IHN0cmluZywgdHlwZT86IERlcGVuZGVuY3lUeXBlKTogRGVwZW5kZW5jeSB7XG4gICAgY29uc3QgZGVwID0gdGhpcy50cnlHZXREZXBlbmRlbmN5KG5hbWUsIHR5cGUpO1xuICAgIGlmICghZGVwKSB7XG4gICAgICBjb25zdCBtc2cgPSB0eXBlXG4gICAgICAgID8gYHRoZXJlIGlzIG5vICR7dHlwZX0gZGVwZW5kZW5jeSBkZWZpbmVkIG9uIFwiJHtuYW1lfVwiYFxuICAgICAgICA6IGB0aGVyZSBpcyBubyBkZXBlbmRlbmN5IGRlZmluZWQgb24gXCIke25hbWV9XCJgO1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBkZXBlbmRlbmN5IGJ5IG5hbWUuXG4gICAqXG4gICAqIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlcmUgaXMgbm8gZGVwZW5kZW5jeSBkZWZpbmVkIGJ5IHRoYXQgbmFtZSBvciBpZlxuICAgKiBgdHlwZWAgaXMgbm90IHByb3ZpZGVkIGFuZCB0aGVyZSBpcyBtb3JlIHRoZW4gb25lIGRlcGVuZGVuY3kgdHlwZSBmb3IgdGhpc1xuICAgKiBkZXBlbmRlbmN5LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZGVwZW5kZW5jeVxuICAgKiBAcGFyYW0gdHlwZSBUaGUgZGVwZW5kZW5jeSB0eXBlLiBJZiB0aGlzIGRlcGVuZGVuY3kgaXMgZGVmaW5lZCBvbmx5IGZvciBhXG4gICAqIHNpbmdsZSB0eXBlLCB0aGlzIGFyZ3VtZW50IGNhbiBiZSBvbWl0dGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBhIGNvcHkgKGNhbm5vdCBiZSBtb2RpZmllZCkgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vIG1hdGNoXG4gICAqL1xuICBwdWJsaWMgdHJ5R2V0RGVwZW5kZW5jeShcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdHlwZT86IERlcGVuZGVuY3lUeXBlXG4gICk6IERlcGVuZGVuY3kgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlkeCA9IHRoaXMudHJ5R2V0RGVwZW5kZW5jeUluZGV4KG5hbWUsIHR5cGUpO1xuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5ub3JtYWxpemVEZXAodGhpcy5fZGVwc1tpZHhdKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBkZXBlbmRlbmN5IHRvIHRoaXMgcHJvamVjdC5cbiAgICogQHBhcmFtIHNwZWMgVGhlIGRlcGVuZGVuY3kgc3BlYyBpbiB0aGUgZm9ybWF0IGBNT0RVTEVbQFZFUlNJT05dYCB3aGVyZVxuICAgKiBgTU9EVUxFYCBpcyB0aGUgcGFja2FnZS1tYW5hZ2VyLXNwZWNpZmljIG1vZHVsZSBuYW1lIGFuZCBgVkVSU0lPTmAgaXMgYW5cbiAgICogb3B0aW9uYWwgc2VtYW50aWMgdmVyc2lvbiByZXF1aXJlbWVudCAoZS5nLiBgXjMuNC4wYCkuXG4gICAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIHRoZSBkZXBlbmRlbmN5LlxuICAgKi9cbiAgcHVibGljIGFkZERlcGVuZGVuY3koXG4gICAgc3BlYzogc3RyaW5nLFxuICAgIHR5cGU6IERlcGVuZGVuY3lUeXBlLFxuICAgIG1ldGFkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cbiAgKTogRGVwZW5kZW5jeSB7XG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5kZWJ1ZyhgJHt0eXBlfS1kZXAgJHtzcGVjfWApO1xuXG4gICAgY29uc3QgZGVwOiBEZXBlbmRlbmN5ID0ge1xuICAgICAgLi4uRGVwZW5kZW5jaWVzLnBhcnNlRGVwZW5kZW5jeShzcGVjKSxcbiAgICAgIHR5cGUsXG4gICAgICBtZXRhZGF0YSxcbiAgICB9O1xuXG4gICAgY29uc3QgZXhpc3RpbmdEZXBJbmRleCA9IHRoaXMudHJ5R2V0RGVwZW5kZW5jeUluZGV4KGRlcC5uYW1lLCB0eXBlKTtcblxuICAgIGlmIChleGlzdGluZ0RlcEluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYHVwZGF0aW5nIGV4aXN0aW5nICR7ZGVwLnR5cGV9LWRlcCAke2RlcC5uYW1lfSB3aXRoIG1vcmUgc3BlY2lmaWMgdmVyc2lvbi9tZXRhZGF0YWBcbiAgICAgICk7XG4gICAgICB0aGlzLl9kZXBzW2V4aXN0aW5nRGVwSW5kZXhdID0gZGVwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kZXBzLnB1c2goZGVwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBkZXBlbmRlbmN5LlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRvIHJlbW92ZSAod2l0aG91dCB0aGUgdmVyc2lvbilcbiAgICogQHBhcmFtIHR5cGUgVGhlIGRlcGVuZGVuY3kgdHlwZS4gVGhpcyBpcyBvbmx5IHJlcXVpcmVkIGlmIHRoZXJlIHRoZVxuICAgKiBkZXBlbmRlbmN5IGlzIGRlZmluZWQgZm9yIG11bHRpcGxlIHR5cGVzLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZURlcGVuZGVuY3kobmFtZTogc3RyaW5nLCB0eXBlPzogRGVwZW5kZW5jeVR5cGUpIHtcbiAgICBjb25zdCByZW1vdmVJbmRleCA9IHRoaXMudHJ5R2V0RGVwZW5kZW5jeUluZGV4KG5hbWUsIHR5cGUpO1xuICAgIGlmIChyZW1vdmVJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kZXBzLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XG4gIH1cblxuICBwcml2YXRlIHRyeUdldERlcGVuZGVuY3lJbmRleChuYW1lOiBzdHJpbmcsIHR5cGU/OiBEZXBlbmRlbmN5VHlwZSk6IG51bWJlciB7XG4gICAgY29uc3QgZGVwcyA9IHRoaXMuX2RlcHMuZmlsdGVyKChkKSA9PiBkLm5hbWUgPT09IG5hbWUpO1xuICAgIGlmIChkZXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xOyAvLyBub3QgZm91bmRcbiAgICB9XG5cbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIGlmIChkZXBzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBcIiR7bmFtZX1cIiBpcyBkZWZpbmVkIGZvciBtdWx0aXBsZSBkZXBlbmRlbmN5IHR5cGVzOiAke2RlcHNcbiAgICAgICAgICAgIC5tYXAoKGQpID0+IGQudHlwZSlcbiAgICAgICAgICAgIC5qb2luKFwiLFwiKX0uIFBsZWFzZSBzcGVjaWZ5IGRlcGVuZGVuY3kgdHlwZWBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdHlwZSA9IGRlcHNbMF0udHlwZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZGVwcy5maW5kSW5kZXgoXG4gICAgICAoZGVwKSA9PiBkZXAubmFtZSA9PT0gbmFtZSAmJiBkZXAudHlwZSA9PT0gdHlwZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHRvSnNvbigpOiBEZXBzTWFuaWZlc3QgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLl9kZXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlcGVuZGVuY2llczogdGhpcy5fZGVwcy5zb3J0KGNvbXBhcmVEZXBzKS5tYXAobm9ybWFsaXplRGVwKSxcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZURlcChkOiBEZXBlbmRlbmN5KSB7XG4gIGNvbnN0IG9iajogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGQpKSB7XG4gICAgaWYgKHYgPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIE9iamVjdC5rZXlzKHYpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHYpICYmIHYubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgb2JqW2tdID0gdjtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVEZXBzKGQxOiBEZXBlbmRlbmN5LCBkMjogRGVwZW5kZW5jeSkge1xuICByZXR1cm4gc3BlY09mKGQxKS5sb2NhbGVDb21wYXJlKHNwZWNPZihkMikpO1xuXG4gIGZ1bmN0aW9uIHNwZWNPZihkZXA6IERlcGVuZGVuY3kpIHtcbiAgICBsZXQgc3BlYyA9IGRlcC50eXBlICsgXCI6XCIgKyBkZXAubmFtZTtcbiAgICBpZiAoZGVwLnZlcnNpb24pIHtcbiAgICAgIHNwZWMgKz0gXCJAXCIgKyBkZXAudmVyc2lvbjtcbiAgICB9XG4gICAgcmV0dXJuIHNwZWM7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBzTWFuaWZlc3Qge1xuICAvKipcbiAgICogQWxsIGRlcGVuZGVuY2llcyBvZiB0aGlzIG1vZHVsZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llczogRGVwZW5kZW5jeVtdO1xufVxuXG4vKipcbiAqIENvb3JkaW5hdGVzIG9mIHRoZSBkZXBlbmRlbmN5IChuYW1lIGFuZCB2ZXJzaW9uKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXBlbmRlbmN5Q29vcmRpbmF0ZXMge1xuICAvKipcbiAgICogVGhlIHBhY2thZ2UgbWFuYWdlciBuYW1lIG9mIHRoZSBkZXBlbmRlbmN5IChlLmcuIGBsZWZ0cGFkYCBmb3IgbnBtKS5cbiAgICpcbiAgICogTk9URTogRm9yIHBhY2thZ2UgbWFuYWdlcnMgdGhhdCB1c2UgY29tcGxleCBjb29yZGluYXRlcyAobGlrZSBNYXZlbiksIHdlXG4gICAqIHdpbGwgY29kaWZ5IGl0IGludG8gYSBzdHJpbmcgc29tZWhvdy5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogU2VtYW50aWMgdmVyc2lvbiB2ZXJzaW9uIHJlcXVpcmVtZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHJlcXVpcmVtZW50IGlzIG1hbmFnZWQgYnkgdGhlIHBhY2thZ2UgbWFuYWdlciAoZS5nLiBucG0veWFybikuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwcm9qZWN0IGRlcGVuZGVuY3kuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwZW5kZW5jeSBleHRlbmRzIERlcGVuZGVuY3lDb29yZGluYXRlcyB7XG4gIC8qKlxuICAgKiBXaGljaCB0eXBlIG9mIGRlcGVuZGVuY3kgdGhpcyBpcyAocnVudGltZSwgYnVpbGQtdGltZSwgZXRjKS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IERlcGVuZGVuY3lUeXBlO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIEpTT04gbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXBlbmRlbmN5IChwYWNrYWdlIG1hbmFnZXJcbiAgICogc3BlY2lmaWMpLlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKipcbiAqIFR5cGUgb2YgZGVwZW5kZW5jeS5cbiAqL1xuZXhwb3J0IGVudW0gRGVwZW5kZW5jeVR5cGUge1xuICAvKipcbiAgICogVGhlIGRlcGVuZGVuY3kgaXMgcmVxdWlyZWQgZm9yIHRoZSBwcm9ncmFtL2xpYnJhcnkgZHVyaW5nIHJ1bnRpbWUuXG4gICAqL1xuICBSVU5USU1FID0gXCJydW50aW1lXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXBlbmRlbmN5IGlzIHJlcXVpcmVkIGF0IHJ1bnRpbWUgYnV0IGV4cGVjdGVkIHRvIGJlIGluc3RhbGxlZCBieSB0aGVcbiAgICogY29uc3VtZXIuXG4gICAqL1xuICBQRUVSID0gXCJwZWVyXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXBlbmRlbmN5IGlzIGJ1bmRsZWQgYW5kIHNoaXBwZWQgd2l0aCB0aGUgbW9kdWxlLCBzbyBjb25zdW1lcnMgYXJlIG5vdFxuICAgKiByZXF1aXJlZCB0byBpbnN0YWxsIGl0LlxuICAgKi9cbiAgQlVORExFRCA9IFwiYnVuZGxlZFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVwZW5kZW5jeSBpcyByZXF1aXJlZCB0byBydW4gdGhlIGBidWlsZGAgdGFzay5cbiAgICovXG4gIEJVSUxEID0gXCJidWlsZFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVwZW5kZW5jeSBpcyByZXF1aXJlZCB0byBydW4gdGhlIGB0ZXN0YCB0YXNrLlxuICAgKi9cbiAgVEVTVCA9IFwidGVzdFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgZGVwZW5kZW5jeSBpcyByZXF1aXJlZCBmb3IgZGV2ZWxvcG1lbnQgKGUuZy4gSURFIHBsdWdpbnMpLlxuICAgKi9cbiAgREVWRU5WID0gXCJkZXZlbnZcIixcbn1cbiJdfQ==
package/lib/dev-env.d.ts CHANGED
@@ -78,4 +78,3 @@ export interface IDevEnvironment {
78
78
  */
79
79
  addVscodeExtensions(...extensions: string[]): void;
80
80
  }
81
- //# sourceMappingURL=dev-env.d.ts.map
package/lib/dev-env.js CHANGED
@@ -27,5 +27,5 @@ class DevEnvironmentDockerImage {
27
27
  }
28
28
  exports.DevEnvironmentDockerImage = DevEnvironmentDockerImage;
29
29
  _a = JSII_RTTI_SYMBOL_1;
30
- DevEnvironmentDockerImage[_a] = { fqn: "projen.DevEnvironmentDockerImage", version: "0.58.0" };
30
+ DevEnvironmentDockerImage[_a] = { fqn: "projen.DevEnvironmentDockerImage", version: "0.58.3" };
31
31
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2LWVudi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXYtZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBNEJBOztHQUVHO0FBQ0gsTUFBYSx5QkFBeUI7SUE2QnBDLGdCQUF1QixDQUFDO0lBNUJ4Qjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFhO1FBQ25DLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBa0I7UUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQ3hCLENBQUM7O0FBakJILDhEQThCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhc2sgfSBmcm9tIFwiLi90YXNrXCI7XG5cbi8qKlxuICogQmFzZSBvcHRpb25zIGZvciBjb25maWd1cmluZyBhIGNvbnRhaW5lci1iYXNlZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXZFbnZpcm9ubWVudE9wdGlvbnMge1xuICAvKipcbiAgICogQSBEb2NrZXIgaW1hZ2Ugb3IgRG9ja2VyZmlsZSBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IGRvY2tlckltYWdlPzogRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgdGFza3MgdGhhdCBzaG91bGQgYmUgcnVuIHdoZW4gdGhlIGNvbnRhaW5lciBzdGFydHMuXG4gICAqL1xuICByZWFkb25seSB0YXNrcz86IFRhc2tbXTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgcG9ydHMgdGhhdCBzaG91bGQgYmUgZXhwb3NlZCBmcm9tIHRoZSBjb250YWluZXIuXG4gICAqL1xuICByZWFkb25seSBwb3J0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBleHRlbnNpb24gSURzIHRoYXQgc3BlY2lmeSB0aGUgZXh0ZW5zaW9ucyB0aGF0IHNob3VsZCBiZVxuICAgKiBpbnN0YWxsZWQgaW5zaWRlIHRoZSBjb250YWluZXIgd2hlbiBpdCBpcyBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdnNjb2RlRXh0ZW5zaW9ucz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHNwZWNpZnlpbmcgdGhlIERvY2tlciBpbWFnZSBvZiB0aGUgY29udGFpbmVyLlxuICovXG5leHBvcnQgY2xhc3MgRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZSB7XG4gIC8qKlxuICAgKiBBIHB1YmxpY2x5IGF2YWlsYWJsZSBEb2NrZXIgaW1hZ2UuXG4gICAqIEBleGFtcGxlICd1YnVudHU6bGF0ZXN0J1xuICAgKiBAcGFyYW0gaW1hZ2UgYSBEb2NrZXIgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlKGltYWdlOiBzdHJpbmcpOiBEZXZFbnZpcm9ubWVudERvY2tlckltYWdlIHtcbiAgICByZXR1cm4geyBpbWFnZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZWxhdGl2ZSBwYXRoIG9mIGEgRG9ja2VyZmlsZSB0aGF0IGRlZmluZXMgdGhlIGNvbnRhaW5lciBjb250ZW50cy5cbiAgICogQGV4YW1wbGUgJy5naXRwb2QuRG9ja2VyJ1xuICAgKiBAcGFyYW0gZG9ja2VyRmlsZSBhIHJlbGF0aXZlIHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUZpbGUoZG9ja2VyRmlsZTogc3RyaW5nKTogRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZSB7XG4gICAgcmV0dXJuIHsgZG9ja2VyRmlsZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgcHVibGljbHkgYXZhaWxhYmxlIERvY2tlciBpbWFnZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlbGF0aXZlIHBhdGggb2YgYSBEb2NrZXJmaWxlIHRoYXQgZGVmaW5lcyB0aGUgY29udGFpbmVyIGNvbnRlbnRzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRvY2tlckZpbGU/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKlxuICogQWJzdHJhY3QgaW50ZXJmYWNlIGZvciBjb250YWluZXItYmFzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLCBzdWNoIGFzXG4gKiBHaXRwb2QgYW5kIEdpdEh1YiBDb2Rlc3BhY2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElEZXZFbnZpcm9ubWVudCB7XG4gIC8qKlxuICAgKiBBZGQgYSBjdXN0b20gRG9ja2VyIGltYWdlIG9yIERvY2tlcmZpbGUgZm9yIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSBpbWFnZSBUaGUgRG9ja2VyIGltYWdlXG4gICAqL1xuICBhZGREb2NrZXJJbWFnZShpbWFnZTogRGV2RW52aXJvbm1lbnREb2NrZXJJbWFnZSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZHMgdGFza3MgdG8gcnVuIHdoZW4gdGhlIGNvbnRhaW5lciBzdGFydHMuXG4gICAqXG4gICAqIEBwYXJhbSB0YXNrcyBUaGUgbmV3IHRhc2tzXG4gICAqL1xuICBhZGRUYXNrcyguLi50YXNrczogVGFza1tdKTogdm9pZDtcblxuICAvKipcbiAgICogQWRkcyBwb3J0cyB0aGF0IHNob3VsZCBiZSBleHBvc2VkIChmb3J3YXJkZWQpIGZyb20gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHBvcnRzIFRoZSBuZXcgcG9ydHNcbiAgICovXG4gIGFkZFBvcnRzKC4uLnBvcnRzOiBzdHJpbmdbXSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBsaXN0IG9mIFZTQ29kZSBleHRlbnNpb25zIHRoYXQgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkXG4gICAqIGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSBleHRlbnNpb25zIFRoZSBleHRlbnNpb24gSURzXG4gICAqL1xuICBhZGRWc2NvZGVFeHRlbnNpb25zKC4uLmV4dGVuc2lvbnM6IHN0cmluZ1tdKTogdm9pZDtcbn1cbiJdfQ==
@@ -306,4 +306,3 @@ export interface DockerComposeVolumeMount {
306
306
  */
307
307
  readonly target: string;
308
308
  }
309
- //# sourceMappingURL=docker-compose.d.ts.map
@@ -11,21 +11,20 @@ const yaml_1 = require("./yaml");
11
11
  */
12
12
  class DockerCompose extends component_1.Component {
13
13
  constructor(project, props) {
14
- var _c;
15
14
  super(project);
16
- const nameSuffix = (props === null || props === void 0 ? void 0 : props.nameSuffix) ? `${props.nameSuffix}.yml` : "yml";
15
+ const nameSuffix = props?.nameSuffix ? `${props.nameSuffix}.yml` : "yml";
17
16
  new yaml_1.YamlFile(project, `docker-compose.${nameSuffix}`, {
18
17
  committed: true,
19
18
  readonly: true,
20
19
  obj: () => this._synthesizeDockerCompose(),
21
20
  });
22
- if ((props === null || props === void 0 ? void 0 : props.schemaVersion) && !parseFloat(props.schemaVersion)) {
21
+ if (props?.schemaVersion && !parseFloat(props.schemaVersion)) {
23
22
  throw Error("Version tag needs to be a number");
24
23
  }
25
- this.version = (props === null || props === void 0 ? void 0 : props.schemaVersion) ? props.schemaVersion : "3.3";
24
+ this.version = props?.schemaVersion ? props.schemaVersion : "3.3";
26
25
  this.services = {};
27
26
  // Add the services provided via the constructor argument.
28
- const initialServices = (_c = props === null || props === void 0 ? void 0 : props.services) !== null && _c !== void 0 ? _c : {};
27
+ const initialServices = props?.services ?? {};
29
28
  for (const [name, serviceDescription] of Object.entries(initialServices)) {
30
29
  this.addService(name, serviceDescription);
31
30
  }
@@ -45,8 +44,7 @@ class DockerCompose extends component_1.Component {
45
44
  * @param options Port mapping options
46
45
  */
47
46
  static portMapping(publishedPort, targetPort, options) {
48
- var _c;
49
- const protocol = (_c = options === null || options === void 0 ? void 0 : options.protocol) !== null && _c !== void 0 ? _c : DockerComposeProtocol.TCP;
47
+ const protocol = options?.protocol ?? DockerComposeProtocol.TCP;
50
48
  return {
51
49
  target: targetPort,
52
50
  published: publishedPort,
@@ -113,13 +111,12 @@ class DockerCompose extends component_1.Component {
113
111
  }
114
112
  exports.DockerCompose = DockerCompose;
115
113
  _a = JSII_RTTI_SYMBOL_1;
116
- DockerCompose[_a] = { fqn: "projen.DockerCompose", version: "0.58.0" };
114
+ DockerCompose[_a] = { fqn: "projen.DockerCompose", version: "0.58.3" };
117
115
  /**
118
116
  * A docker-compose service.
119
117
  */
120
118
  class DockerComposeService {
121
119
  constructor(serviceName, serviceDescription) {
122
- var _c, _d, _e, _f;
123
120
  if ((!serviceDescription.imageBuild && !serviceDescription.image) ||
124
121
  (serviceDescription.imageBuild && serviceDescription.image)) {
125
122
  throw new Error(`A service ${serviceName} requires exactly one of a \`imageBuild\` or \`image\` key`);
@@ -128,10 +125,10 @@ class DockerComposeService {
128
125
  this.command = serviceDescription.command;
129
126
  this.image = serviceDescription.image;
130
127
  this.imageBuild = serviceDescription.imageBuild;
131
- this.dependsOn = (_c = serviceDescription.dependsOn) !== null && _c !== void 0 ? _c : [];
132
- this.volumes = (_d = serviceDescription.volumes) !== null && _d !== void 0 ? _d : [];
133
- this.ports = (_e = serviceDescription.ports) !== null && _e !== void 0 ? _e : [];
134
- this.environment = (_f = serviceDescription.environment) !== null && _f !== void 0 ? _f : {};
128
+ this.dependsOn = serviceDescription.dependsOn ?? [];
129
+ this.volumes = serviceDescription.volumes ?? [];
130
+ this.ports = serviceDescription.ports ?? [];
131
+ this.environment = serviceDescription.environment ?? {};
135
132
  }
136
133
  /**
137
134
  * Add a port mapping
@@ -140,8 +137,7 @@ class DockerComposeService {
140
137
  * @param options Port mapping options
141
138
  */
142
139
  addPort(publishedPort, targetPort, options) {
143
- var _c;
144
- (_c = this.ports) === null || _c === void 0 ? void 0 : _c.push(DockerCompose.portMapping(publishedPort, targetPort, options));
140
+ this.ports?.push(DockerCompose.portMapping(publishedPort, targetPort, options));
145
141
  }
146
142
  /**
147
143
  * Add an environment variable
@@ -168,7 +164,7 @@ class DockerComposeService {
168
164
  }
169
165
  exports.DockerComposeService = DockerComposeService;
170
166
  _b = JSII_RTTI_SYMBOL_1;
171
- DockerComposeService[_b] = { fqn: "projen.DockerComposeService", version: "0.58.0" };
167
+ DockerComposeService[_b] = { fqn: "projen.DockerComposeService", version: "0.58.3" };
172
168
  /**
173
169
  * Network protocol for port mapping
174
170
  */
@@ -184,7 +180,6 @@ var DockerComposeProtocol;
184
180
  DockerComposeProtocol["UDP"] = "udp";
185
181
  })(DockerComposeProtocol = exports.DockerComposeProtocol || (exports.DockerComposeProtocol = {}));
186
182
  function renderDockerComposeFile(serviceDescriptions, version) {
187
- var _c, _d;
188
183
  // Record volume configuration
189
184
  const volumeConfig = {};
190
185
  const volumeInfo = {
@@ -197,13 +192,13 @@ function renderDockerComposeFile(serviceDescriptions, version) {
197
192
  };
198
193
  // Render service configuration
199
194
  const services = {};
200
- for (const [serviceName, serviceDescription] of Object.entries(serviceDescriptions !== null && serviceDescriptions !== void 0 ? serviceDescriptions : {})) {
195
+ for (const [serviceName, serviceDescription] of Object.entries(serviceDescriptions ?? {})) {
201
196
  // Resolve the names of each dependency and check that they exist.
202
197
  // Note: They may not exist if the user made a mistake when referencing a
203
198
  // service by name via `DockerCompose.serviceName()`.
204
199
  // @see DockerCompose.serviceName
205
200
  const dependsOn = Array();
206
- for (const dependsOnServiceName of (_c = serviceDescription.dependsOn) !== null && _c !== void 0 ? _c : []) {
201
+ for (const dependsOnServiceName of serviceDescription.dependsOn ?? []) {
207
202
  const resolvedServiceName = dependsOnServiceName.serviceName;
208
203
  if (resolvedServiceName === serviceName) {
209
204
  throw new Error(`Service ${serviceName} cannot depend on itself`);
@@ -216,7 +211,7 @@ function renderDockerComposeFile(serviceDescriptions, version) {
216
211
  // Give each volume binding a chance to bind any necessary volume
217
212
  // configuration and provide volume mount information for the service.
218
213
  const volumes = [];
219
- for (const volumeBinding of (_d = serviceDescription.volumes) !== null && _d !== void 0 ? _d : []) {
214
+ for (const volumeBinding of serviceDescription.volumes ?? []) {
220
215
  volumes.push(volumeBinding.bind(volumeInfo));
221
216
  }
222
217
  // Create and store the service configuration, taking care not to create
@@ -286,4 +281,4 @@ function shouldDecamelizeDockerComposeKey(path) {
286
281
  // Otherwise, let it all decamelize.
287
282
  return true;
288
283
  }
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLWNvbXBvc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZG9ja2VyLWNvbXBvc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQ0FBd0M7QUFFeEMsaUNBQW1EO0FBQ25ELGlDQUFrQztBQW9DbEM7O0dBRUc7QUFDSCxNQUFhLGFBQWMsU0FBUSxxQkFBUztJQWlGMUMsWUFBWSxPQUFnQixFQUFFLEtBQTBCOztRQUN0RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLFVBQVUsR0FBRyxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBTSxDQUFDLFVBQVUsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDMUUsSUFBSSxlQUFRLENBQUMsT0FBTyxFQUFFLGtCQUFrQixVQUFVLEVBQUUsRUFBRTtZQUNwRCxTQUFTLEVBQUUsSUFBSTtZQUNmLFFBQVEsRUFBRSxJQUFJO1lBQ2QsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtTQUMzQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLGFBQWEsS0FBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDNUQsTUFBTSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztTQUNqRDtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsYUFBYSxFQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFFbkIsMERBQTBEO1FBQzFELE1BQU0sZUFBZSxTQUFHLEtBQUssYUFBTCxLQUFLLHVCQUFM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QkFBNkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDakQsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELG9DQUFvQztJQUNwQyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBkZWNhbWVsaXplS2V5c1JlY3Vyc2l2ZWx5IH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHsgWWFtbEZpbGUgfSBmcm9tIFwiLi95YW1sXCI7XG5cbi8qKlxuICogUHJvcHMgZm9yIERvY2tlckNvbXBvc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyQ29tcG9zZVByb3BzIHtcbiAgLyoqXG4gICAqIEEgbmFtZSB0byBhZGQgdG8gdGhlIGRvY2tlci1jb21wb3NlLnltbCBmaWxlbmFtZS5cbiAgICogQGV4YW1wbGUgJ215bmFtZScgeWllbGRzICdkb2NrZXItY29tcG9zZS5teW5hbWUueW1sJ1xuICAgKiBAZGVmYXVsdCAtIG5vIG5hbWUgaXMgYWRkZWRcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVTdWZmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERvY2tlciBDb21wb3NlIHNjaGVtYSB2ZXJzaW9uIGRvIGJlIHVzZWRcbiAgICogQGRlZmF1bHQgMy4zXG4gICAqL1xuICByZWFkb25seSBzY2hlbWFWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXJ2aWNlIGRlc2NyaXB0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VzPzogUmVjb3JkPHN0cmluZywgRG9ja2VyQ29tcG9zZVNlcnZpY2VEZXNjcmlwdGlvbj47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcG9ydCBtYXBwaW5ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJDb21wb3NlUG9ydE1hcHBpbmdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFBvcnQgbWFwcGluZyBwcm90b2NvbC5cbiAgICogQGRlZmF1bHQgRG9ja2VyQ29tcG9zZVByb3RvY29sLlRDUFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdG9jb2w/OiBEb2NrZXJDb21wb3NlUHJvdG9jb2w7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZG9ja2VyLWNvbXBvc2UgWUFNTCBmaWxlLlxuICovXG5leHBvcnQgY2xhc3MgRG9ja2VyQ29tcG9zZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBEZXBlbmRzIG9uIGEgc2VydmljZSBuYW1lLlxuICAgKi9cbiAgc3RhdGljIHNlcnZpY2VOYW1lKHNlcnZpY2VOYW1lOiBzdHJpbmcpOiBJRG9ja2VyQ29tcG9zZVNlcnZpY2VOYW1lIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VydmljZU5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBwb3J0IG1hcHBpbmcuXG4gICAqIEBwYXJhbSBwdWJsaXNoZWRQb3J0IFB1Ymxpc2hlZCBwb3J0IG51bWJlclxuICAgKiBAcGFyYW0gdGFyZ2V0UG9ydCBDb250YWluZXIncyBwb3J0IG51bWJlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBQb3J0IG1hcHBpbmcgb3B0aW9uc1xuICAgKi9cbiAgc3RhdGljIHBvcnRNYXBwaW5nKFxuICAgIHB1Ymxpc2hlZFBvcnQ6IG51bWJlcixcbiAgICB0YXJnZXRQb3J0OiBudW1iZXIsXG4gICAgb3B0aW9ucz86IERvY2tlckNvbXBvc2VQb3J0TWFwcGluZ09wdGlvbnNcbiAgKTogRG9ja2VyQ29tcG9zZVNlcnZpY2VQb3J0IHtcbiAgICBjb25zdCBwcm90b2NvbCA9IG9wdGlvbnM/LnByb3RvY29sID8/IERvY2tlckNvbXBvc2VQcm90b2NvbC5UQ1A7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiB0YXJnZXRQb3J0LFxuICAgICAgcHVibGlzaGVkOiBwdWJsaXNoZWRQb3J0LFxuICAgICAgcHJvdG9jb2w6IHByb3RvY29sLFxuICAgICAgbW9kZTogXCJob3N0XCIsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBiaW5kIHZvbHVtZSB0aGF0IGJpbmRzIGEgaG9zdCBwYXRoIHRvIHRoZSB0YXJnZXQgcGF0aCBpbiB0aGUgY29udGFpbmVyLlxuICAgKiBAcGFyYW0gc291cmNlUGF0aCBIb3N0IHBhdGggbmFtZVxuICAgKiBAcGFyYW0gdGFyZ2V0UGF0aCBUYXJnZXQgcGF0aCBuYW1lXG4gICAqL1xuICBzdGF0aWMgYmluZFZvbHVtZShcbiAgICBzb3VyY2VQYXRoOiBzdHJpbmcsXG4gICAgdGFyZ2V0UGF0aDogc3RyaW5nXG4gICk6IElEb2NrZXJDb21wb3NlVm9sdW1lQmluZGluZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJpbmQoX3ZvbHVtZUluZm86IElEb2NrZXJDb21wb3NlVm9sdW1lQ29uZmlnKTogRG9ja2VyQ29tcG9zZVZvbHVtZU1vdW50IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBcImJpbmRcIixcbiAgICAgICAgICBzb3VyY2U6IHNvdXJjZVBhdGgsXG4gICAgICAgICAgdGFyZ2V0OiB0YXJnZXRQYXRoLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5hbWVkIHZvbHVtZSBhbmQgbW91bnQgaXQgdG8gdGhlIHRhcmdldCBwYXRoLiBJZiB5b3UgdXNlIHRoaXNcbiAgICogbmFtZWQgdm9sdW1lIGluIHNldmVyYWwgc2VydmljZXMsIHRoZSB2b2x1bWUgd2lsbCBiZSBzaGFyZWQuIEluIHRoaXNcbiAgICogY2FzZSwgdGhlIHZvbHVtZSBjb25maWd1cmF0aW9uIG9mIHRoZSBmaXJzdC1wcm92aWRlZCBvcHRpb25zIGFyZSB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0gdm9sdW1lTmFtZSBOYW1lIG9mIHRoZSB2b2x1bWVcbiAgICogQHBhcmFtIHRhcmdldFBhdGggVGFyZ2V0IHBhdGhcbiAgICogQHBhcmFtIG9wdGlvbnMgdm9sdW1lIGNvbmZpZ3VyYXRpb24gKGRlZmF1bHQ6IGRvY2tlciBjb21wb3NlIGRlZmF1bHRzKVxuICAgKi9cbiAgc3RhdGljIG5hbWVkVm9sdW1lKFxuICAgIHZvbHVtZU5hbWU6IHN0cmluZyxcbiAgICB0YXJnZXRQYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogRG9ja2VyQ29tcG9zZVZvbHVtZUNvbmZpZyA9IHt9XG4gICk6IElEb2NrZXJDb21wb3NlVm9sdW1lQmluZGluZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJpbmQodm9sdW1lSW5mbzogSURvY2tlckNvbXBvc2VWb2x1bWVDb25maWcpOiBEb2NrZXJDb21wb3NlVm9sdW1lTW91bnQge1xuICAgICAgICB2b2x1bWVJbmZvLmFkZFZvbHVtZUNvbmZpZ3VyYXRpb24odm9sdW1lTmFtZSwgb3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBcInZvbHVtZVwiLFxuICAgICAgICAgIHNvdXJjZTogdm9sdW1lTmFtZSxcbiAgICAgICAgICB0YXJnZXQ6IHRhcmdldFBhdGgsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2VzOiBSZWNvcmQ8c3RyaW5nLCBEb2NrZXJDb21wb3NlU2VydmljZT47XG4gIHByaXZhdGUgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIHByb3BzPzogRG9ja2VyQ29tcG9zZVByb3BzKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBjb25zdCBuYW1lU3VmZml4ID0gcHJvcHM/Lm5hbWVTdWZmaXggPyBgJHtwcm9wcyEubmFtZVN1ZmZpeH0ueW1sYCA6IFwieW1sXCI7XG4gICAgbmV3IFlhbWxGaWxlKHByb2plY3QsIGBkb2NrZXItY29tcG9zZS4ke25hbWVTdWZmaXh9YCwge1xuICAgICAgY29tbWl0dGVkOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICBvYmo6ICgpID0+IHRoaXMuX3N5bnRoZXNpemVEb2NrZXJDb21wb3NlKCksXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHM/LnNjaGVtYVZlcnNpb24gJiYgIXBhcnNlRmxvYXQocHJvcHMuc2NoZW1hVmVyc2lvbikpIHtcbiAgICAgIHRocm93IEVycm9yKFwiVmVyc2lvbiB0YWcgbmVlZHMgdG8gYmUgYSBudW1iZXJcIik7XG4gICAgfVxuICAgIHRoaXMudmVyc2lvbiA9IHByb3BzPy5zY2hlbWFWZXJzaW9uID8gcHJvcHMuc2NoZW1hVmVyc2lvbiA6IFwiMy4zXCI7XG4gICAgdGhpcy5zZXJ2aWNlcyA9IHt9O1xuXG4gICAgLy8gQWRkIHRoZSBzZXJ2aWNlcyBwcm92aWRlZCB2aWEgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50LlxuICAgIGNvbnN0IGluaXRpYWxTZXJ2aWNlcyA9IHByb3BzPy5zZXJ2aWNlcyA/PyB7fTtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBzZXJ2aWNlRGVzY3JpcHRpb25dIG9mIE9iamVjdC5lbnRyaWVzKGluaXRpYWxTZXJ2aWNlcykpIHtcbiAgICAgIHRoaXMuYWRkU2VydmljZShuYW1lLCBzZXJ2aWNlRGVzY3JpcHRpb24pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBzZXJ2aWNlIHRvIHRoZSBkb2NrZXItY29tcG9zZSBmaWxlLlxuICAgKiBAcGFyYW0gc2VydmljZU5hbWUgbmFtZSBvZiB0aGUgc2VydmljZVxuICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gYSBzZXJ2aWNlIGRlc2NyaXB0aW9uXG4gICAqL1xuICBwdWJsaWMgYWRkU2VydmljZShcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uOiBEb2NrZXJDb21wb3NlU2VydmljZURlc2NyaXB0aW9uXG4gICk6IERvY2tlckNvbXBvc2VTZXJ2aWNlIHtcbiAgICBjb25zdCBzZXJ2aWNlID0gbmV3IERvY2tlckNvbXBvc2VTZXJ2aWNlKHNlcnZpY2VOYW1lLCBkZXNjcmlwdGlvbik7XG4gICAgdGhpcy5zZXJ2aWNlc1tzZXJ2aWNlTmFtZV0gPSBzZXJ2aWNlO1xuICAgIHJldHVybiBzZXJ2aWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3N5bnRoZXNpemVEb2NrZXJDb21wb3NlKCk6IG9iamVjdCB7XG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc2VydmljZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRG9ja2VyQ29tcG9zZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgc2VydmljZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyRG9ja2VyQ29tcG9zZUZpbGUodGhpcy5zZXJ2aWNlcywgdGhpcy52ZXJzaW9uKTtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGludGVyZmFjZSBwcm92aWRpbmcgdGhlIG5hbWUgb2YgYSBkb2NrZXIgY29tcG9zZSBzZXJ2aWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElEb2NrZXJDb21wb3NlU2VydmljZU5hbWUge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRvY2tlciBjb21wb3NlIHNlcnZpY2UuXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlc2NyaXB0aW9uIG9mIGEgZG9ja2VyLWNvbXBvc2UueW1sIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyQ29tcG9zZVNlcnZpY2VEZXNjcmlwdGlvbiB7XG4gIC8qKlxuICAgKiBVc2UgYSBkb2NrZXIgaW1hZ2UuXG4gICAqIE5vdGU6IFlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIGBidWlsZGAgb3IgYGltYWdlYCBrZXkuXG4gICAqIEBzZWUgaW1hZ2VCdWlsZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgZG9ja2VyIGltYWdlLlxuICAgKiBOb3RlOiBZb3UgbXVzdCBzcGVjaWZ5IGVpdGhlciBgaW1hZ2VCdWlsZGAgb3IgYGltYWdlYCBrZXkuXG4gICAqIEBzZWUgaW1hZ2VcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlQnVpbGQ/OiBEb2NrZXJDb21wb3NlQnVpbGQ7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYSBjb21tYW5kIHRvIHRoZSBkb2NrZXIgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCAtIHVzZSB0aGUgY29udGFpbmVyJ3MgZGVmYXVsdCBjb21tYW5kXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE5hbWVzIG9mIG90aGVyIHNlcnZpY2VzIHRoaXMgc2VydmljZSBkZXBlbmRzIG9uLlxuICAgKiBAZGVmYXVsdCAtIG5vIGRlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kc09uPzogSURvY2tlckNvbXBvc2VTZXJ2aWNlTmFtZVtdO1xuXG4gIC8qKlxuICAgKiBNb3VudCBzb21lIHZvbHVtZXMgaW50byB0aGUgc2VydmljZS5cbiAgICogVXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHRvIGNyZWF0ZSB2b2x1bWVzOlxuICAgKiBAc2VlIERvY2tlckNvbXBvc2UuYmluZFZvbHVtZSgpIHRvIG1vdW50IGEgaG9zdCBwYXRoXG4gICAqIEBzZWUgRG9ja2VyQ29tcG9zZS5uYW1lZFZvbHVtZSgpIHRvIGNyZWF0ZSAmIG1vdW50IGEgbmFtZWQgdm9sdW1lXG4gICAqL1xuICByZWFkb25seSB2b2x1bWVzPzogSURvY2tlckNvbXBvc2VWb2x1bWVCaW5kaW5nW107XG5cbiAgLyoqXG4gICAqIE1hcCBzb21lIHBvcnRzLlxuICAgKiBAZGVmYXVsdCAtIG5vIHBvcnRzIGFyZSBtYXBwZWRcbiAgICovXG4gIHJlYWRvbmx5IHBvcnRzPzogRG9ja2VyQ29tcG9zZVNlcnZpY2VQb3J0W107XG5cbiAgLyoqXG4gICAqIEFkZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqIEBkZWZhdWx0IC0gbm8gZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIEEgZG9ja2VyLWNvbXBvc2Ugc2VydmljZS5cbiAqL1xuZXhwb3J0IGNsYXNzIERvY2tlckNvbXBvc2VTZXJ2aWNlIGltcGxlbWVudHMgSURvY2tlckNvbXBvc2VTZXJ2aWNlTmFtZSB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBzZXJ2aWNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERvY2tlciBpbWFnZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogRG9ja2VyIGltYWdlIGJ1aWxkIGluc3RydWN0aW9ucy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZUJ1aWxkPzogRG9ja2VyQ29tcG9zZUJ1aWxkO1xuXG4gIC8qKlxuICAgKiBDb21tYW5kIHRvIHJ1biBpbiB0aGUgY29udGFpbmVyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbW1hbmQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3RoZXIgc2VydmljZXMgdGhhdCB0aGlzIHNlcnZpY2UgZGVwZW5kcyBvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXBlbmRzT246IElEb2NrZXJDb21wb3NlU2VydmljZU5hbWVbXTtcblxuICAvKipcbiAgICogVm9sdW1lcyBtb3VudGVkIGluIHRoZSBjb250YWluZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdm9sdW1lczogSURvY2tlckNvbXBvc2VWb2x1bWVCaW5kaW5nW107XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2hlZCBwb3J0cy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwb3J0czogRG9ja2VyQ29tcG9zZVNlcnZpY2VQb3J0W107XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlbnZpcm9ubWVudDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICAgIHNlcnZpY2VEZXNjcmlwdGlvbjogRG9ja2VyQ29tcG9zZVNlcnZpY2VEZXNjcmlwdGlvblxuICApIHtcbiAgICBpZiAoXG4gICAgICAoIXNlcnZpY2VEZXNjcmlwdGlvbi5pbWFnZUJ1aWxkICYmICFzZXJ2aWNlRGVzY3JpcHRpb24uaW1hZ2UpIHx8XG4gICAgICAoc2VydmljZURlc2NyaXB0aW9uLmltYWdlQnVpbGQgJiYgc2VydmljZURlc2NyaXB0aW9uLmltYWdlKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQSBzZXJ2aWNlICR7c2VydmljZU5hbWV9IHJlcXVpcmVzIGV4YWN0bHkgb25lIG9mIGEgXFxgaW1hZ2VCdWlsZFxcYCBvciBcXGBpbWFnZVxcYCBrZXlgXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuc2VydmljZU5hbWUgPSBzZXJ2aWNlTmFtZTtcbiAgICB0aGlzLmNvbW1hbmQgPSBzZXJ2aWNlRGVzY3JpcHRpb24uY29tbWFuZDtcbiAgICB0aGlzLmltYWdlID0gc2VydmljZURlc2NyaXB0aW9uLmltYWdlO1xuICAgIHRoaXMuaW1hZ2VCdWlsZCA9IHNlcnZpY2VEZXNjcmlwdGlvbi5pbWFnZUJ1aWxkO1xuICAgIHRoaXMuZGVwZW5kc09uID0gc2VydmljZURlc2NyaXB0aW9uLmRlcGVuZHNPbiA/PyBbXTtcbiAgICB0aGlzLnZvbHVtZXMgPSBzZXJ2aWNlRGVzY3JpcHRpb24udm9sdW1lcyA/PyBbXTtcbiAgICB0aGlzLnBvcnRzID0gc2VydmljZURlc2NyaXB0aW9uLnBvcnRzID8/IFtdO1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBzZXJ2aWNlRGVzY3JpcHRpb24uZW52aXJvbm1lbnQgPz8ge307XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgcG9ydCBtYXBwaW5nXG4gICAqIEBwYXJhbSBwdWJsaXNoZWRQb3J0IFB1Ymxpc2hlZCBwb3J0IG51bWJlclxuICAgKiBAcGFyYW0gdGFyZ2V0UG9ydCBDb250YWluZXIncyBwb3J0IG51bWJlclxuICAgKiBAcGFyYW0gb3B0aW9ucyBQb3J0IG1hcHBpbmcgb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIGFkZFBvcnQoXG4gICAgcHVibGlzaGVkUG9ydDogbnVtYmVyLFxuICAgIHRhcmdldFBvcnQ6IG51bWJlcixcbiAgICBvcHRpb25zPzogRG9ja2VyQ29tcG9zZVBvcnRNYXBwaW5nT3B0aW9uc1xuICApIHtcbiAgICB0aGlzLnBvcnRzPy5wdXNoKFxuICAgICAgRG9ja2VyQ29tcG9zZS5wb3J0TWFwcGluZyhwdWJsaXNoZWRQb3J0LCB0YXJnZXRQb3J0LCBvcHRpb25zKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGVudmlyb25tZW50IHZhcmlhYmxlXG4gICAqIEBwYXJhbSBuYW1lIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVcbiAgICogQHBhcmFtIHZhbHVlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICAgKi9cbiAgcHVibGljIGFkZEVudmlyb25tZW50KG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZW52aXJvbm1lbnRbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIHRoZSBzZXJ2aWNlIGRlcGVuZCBvbiBhbm90aGVyIHNlcnZpY2UuXG4gICAqIEBwYXJhbSBzZXJ2aWNlTmFtZVxuICAgKi9cbiAgcHVibGljIGFkZERlcGVuZHNPbihzZXJ2aWNlTmFtZTogSURvY2tlckNvbXBvc2VTZXJ2aWNlTmFtZSkge1xuICAgIHRoaXMuZGVwZW5kc09uLnB1c2goc2VydmljZU5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHZvbHVtZSB0byB0aGUgc2VydmljZS5cbiAgICogQHBhcmFtIHZvbHVtZVxuICAgKi9cbiAgcHVibGljIGFkZFZvbHVtZSh2b2x1bWU6IElEb2NrZXJDb21wb3NlVm9sdW1lQmluZGluZykge1xuICAgIHRoaXMudm9sdW1lcy5wdXNoKHZvbHVtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHNlcnZpY2UgcG9ydCBtYXBwaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyQ29tcG9zZVNlcnZpY2VQb3J0IHtcbiAgLyoqXG4gICAqIFB1Ymxpc2hlZCBwb3J0IG51bWJlclxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaGVkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRhcmdldCBwb3J0IG51bWJlclxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE5ldHdvcmsgcHJvdG9jb2xcbiAgICovXG4gIHJlYWRvbmx5IHByb3RvY29sOiBEb2NrZXJDb21wb3NlUHJvdG9jb2w7XG5cbiAgLyoqXG4gICAqIFBvcnQgbWFwcGluZyBtb2RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE5ldHdvcmsgcHJvdG9jb2wgZm9yIHBvcnQgbWFwcGluZ1xuICovXG5leHBvcnQgZW51bSBEb2NrZXJDb21wb3NlUHJvdG9jb2wge1xuICAvKipcbiAgICogVENQIHByb3RvY29sXG4gICAqL1xuICBUQ1AgPSBcInRjcFwiLFxuXG4gIC8qKlxuICAgKiBVRFAgcHJvdG9jb2xcbiAgICovXG4gIFVEUCA9IFwidWRwXCIsXG59XG5cbi8qKlxuICogQnVpbGQgYXJndW1lbnRzIGZvciBjcmVhdGluZyBhIGRvY2tlciBpbWFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJDb21wb3NlQnVpbGQge1xuICAvKipcbiAgICogRG9ja2VyIGJ1aWxkIGNvbnRleHQgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGRvY2tlcmZpbGUgdG8gYnVpbGQgZnJvbS5cbiAgICogQGRlZmF1bHQgXCJEb2NrZXJmaWxlXCJcbiAgICovXG4gIHJlYWRvbmx5IGRvY2tlcmZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3MuXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBhcmUgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGFyZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIFZvbHVtZSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyQ29tcG9zZVZvbHVtZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBEcml2ZXIgdG8gdXNlIGZvciB0aGUgdm9sdW1lXG4gICAqIEBkZWZhdWx0IC0gdmFsdWUgaXMgbm90IHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBkcml2ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgdG8gcHJvdmlkZSB0byB0aGUgZHJpdmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZHJpdmVyT3B0cz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFNldCB0byB0cnVlIHRvIGluZGljYXRlIHRoYXQgdGhlIHZvbHVtZSBpcyBleHRlcm5hbGx5IGNyZWF0ZWQuXG4gICAqIEBkZWZhdWx0IC0gdW5zZXQsIGluZGljYXRpbmcgdGhhdCBkb2NrZXItY29tcG9zZSBjcmVhdGVzIHRoZSB2b2x1bWVcbiAgICovXG4gIHJlYWRvbmx5IGV4dGVybmFsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgdm9sdW1lIGZvciB3aGVuIHRoZSB2b2x1bWUgbmFtZSBpc24ndCBnb2luZyB0byB3b3JrIGluIFlBTUwuXG4gICAqIEBkZWZhdWx0IC0gdW5zZXQsIGluZGljYXRpbmcgdGhhdCBkb2NrZXItY29tcG9zZSBjcmVhdGVzIHZvbHVtZXMgYXMgdXN1YWxcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVm9sdW1lIGJpbmRpbmcgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURvY2tlckNvbXBvc2VWb2x1bWVCaW5kaW5nIHtcbiAgLyoqXG4gICAqIEJpbmRzIHRoZSByZXF1ZXN0ZWQgdm9sdW1lIHRvIHRoZSBkb2NrZXItY29tcG9zZSB2b2x1bWUgY29uZmlndXJhdGlvbiBhbmRcbiAgICogcHJvdmlkZSBtb3VudGluZyBpbnN0cnVjdGlvbnMgZm9yIHN5bnRoZXNpcy5cbiAgICogQHBhcmFtIHZvbHVtZUNvbmZpZyB0aGUgdm9sdW1lIGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgbW91bnRpbmcgaW5zdHJ1Y3Rpb25zIGZvciB0aGUgc2VydmljZS5cbiAgICovXG4gIGJpbmQodm9sdW1lQ29uZmlnOiBJRG9ja2VyQ29tcG9zZVZvbHVtZUNvbmZpZyk6IERvY2tlckNvbXBvc2VWb2x1bWVNb3VudDtcbn1cblxuLyoqXG4gKiBTdG9yYWdlIGZvciB2b2x1bWUgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRG9ja2VyQ29tcG9zZVZvbHVtZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBBZGQgdm9sdW1lIGNvbmZpZ3VyYXRpb24gdG8gdGhlIHJlcG9zaXRvcnkuXG4gICAqIEBwYXJhbSB2b2x1bWVOYW1lXG4gICAqIEBwYXJhbSBjb25maWd1cmF0aW9uXG4gICAqL1xuICBhZGRWb2x1bWVDb25maWd1cmF0aW9uKFxuICAgIHZvbHVtZU5hbWU6IHN0cmluZyxcbiAgICBjb25maWd1cmF0aW9uOiBEb2NrZXJDb21wb3NlVm9sdW1lQ29uZmlnXG4gICk6IHZvaWQ7XG59XG5cbi8qKlxuICogU2VydmljZSB2b2x1bWUgbW91bnRpbmcgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyQ29tcG9zZVZvbHVtZU1vdW50IHtcbiAgLyoqXG4gICAqIFR5cGUgb2Ygdm9sdW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWb2x1bWUgc291cmNlXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IHN0cmluZztcblxuICAvKipcbiAgICogVm9sdW1lIHRhcmdldFxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU3RydWN0dXJlIG9mIGEgZG9ja2VyIGNvbXBvc2UgZmlsZSBiZWZvcmUgd2UgZGVjYW1lbGl6ZS5cbiAqIEBpbnRlcm5hbFxuICovXG5pbnRlcmZhY2UgRG9ja2VyQ29tcG9zZUZpbGVTY2hlbWEge1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIHNlcnZpY2VzOiBSZWNvcmQ8c3RyaW5nLCBEb2NrZXJDb21wb3NlRmlsZVNlcnZpY2VTY2hlbWE+O1xuICB2b2x1bWVzPzogUmVjb3JkPHN0cmluZywgRG9ja2VyQ29tcG9zZVZvbHVtZUNvbmZpZz47XG59XG5cbi8qKlxuICogU3RydWN0dXJlIG9mIGEgZG9ja2VyIGNvbXBvc2UgZmlsZSdzIHNlcnZpY2UgYmVmb3JlIHdlIGRlY2FtZWxpemUuXG4gKiBAaW50ZXJuYWxcbiAqL1xuaW50ZXJmYWNlIERvY2tlckNvbXBvc2VGaWxlU2VydmljZVNjaGVtYSB7XG4gIHJlYWRvbmx5IGRlcGVuZHNPbj86IHN0cmluZ1tdO1xuICByZWFkb25seSBidWlsZD86IERvY2tlckNvbXBvc2VCdWlsZDtcbiAgcmVhZG9ubHkgaW1hZ2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbW1hbmQ/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgdm9sdW1lcz86IERvY2tlckNvbXBvc2VWb2x1bWVNb3VudFtdO1xuICByZWFkb25seSBwb3J0cz86IERvY2tlckNvbXBvc2VTZXJ2aWNlUG9ydFtdO1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbmZ1bmN0aW9uIHJlbmRlckRvY2tlckNvbXBvc2VGaWxlKFxuICBzZXJ2aWNlRGVzY3JpcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBEb2NrZXJDb21wb3NlU2VydmljZT4sXG4gIHZlcnNpb246IHN0cmluZ1xuKTogb2JqZWN0IHtcbiAgLy8gUmVjb3JkIHZvbHVtZSBjb25maWd1cmF0aW9uXG4gIGNvbnN0IHZvbHVtZUNvbmZpZzogUmVjb3JkPHN0cmluZywgRG9ja2VyQ29tcG9zZVZvbHVtZUNvbmZpZz4gPSB7fTtcbiAgY29uc3Qgdm9sdW1lSW5mbzogSURvY2tlckNvbXBvc2VWb2x1bWVDb25maWcgPSB7XG4gICAgYWRkVm9sdW1lQ29uZmlndXJhdGlvbihcbiAgICAgIHZvbHVtZU5hbWU6IHN0cmluZyxcbiAgICAgIGNvbmZpZ3VyYXRpb246IERvY2tlckNvbXBvc2VWb2x1bWVDb25maWdcbiAgICApIHtcbiAgICAgIGlmICghdm9sdW1lQ29uZmlnW3ZvbHVtZU5hbWVdKSB7XG4gICAgICAgIC8vIEZpcnN0IHZvbHVtZSBjb25maWd1cmF0aW9uIHRha2VzIHByZWNlZGVuY2UuXG4gICAgICAgIHZvbHVtZUNvbmZpZ1t2b2x1bWVOYW1lXSA9IGNvbmZpZ3VyYXRpb247XG4gICAgICB9XG4gICAgfSxcbiAgfTtcblxuICAvLyBSZW5kZXIgc2VydmljZSBjb25maWd1cmF0aW9uXG4gIGNvbnN0IHNlcnZpY2VzOiBSZWNvcmQ8c3RyaW5nLCBEb2NrZXJDb21wb3NlRmlsZVNlcnZpY2VTY2hlbWE+ID0ge307XG4gIGZvciAoY29uc3QgW3NlcnZpY2VOYW1lLCBzZXJ2aWNlRGVzY3JpcHRpb25dIG9mIE9iamVjdC5lbnRyaWVzKFxuICAgIHNlcnZpY2VEZXNjcmlwdGlvbnMgPz8ge31cbiAgKSkge1xuICAgIC8vIFJlc29sdmUgdGhlIG5hbWVzIG9mIGVhY2ggZGVwZW5kZW5jeSBhbmQgY2hlY2sgdGhhdCB0aGV5IGV4aXN0LlxuICAgIC8vIE5vdGU6IFRoZXkgbWF5IG5vdCBleGlzdCBpZiB0aGUgdXNlciBtYWRlIGEgbWlzdGFrZSB3aGVuIHJlZmVyZW5jaW5nIGFcbiAgICAvLyBzZXJ2aWNlIGJ5IG5hbWUgdmlhIGBEb2NrZXJDb21wb3NlLnNlcnZpY2VOYW1lKClgLlxuICAgIC8vIEBzZWUgRG9ja2VyQ29tcG9zZS5zZXJ2aWNlTmFtZVxuICAgIGNvbnN0IGRlcGVuZHNPbiA9IEFycmF5PHN0cmluZz4oKTtcbiAgICBmb3IgKGNvbnN0IGRlcGVuZHNPblNlcnZpY2VOYW1lIG9mIHNlcnZpY2VEZXNjcmlwdGlvbi5kZXBlbmRzT24gPz8gW10pIHtcbiAgICAgIGNvbnN0IHJlc29sdmVkU2VydmljZU5hbWUgPSBkZXBlbmRzT25TZXJ2aWNlTmFtZS5zZXJ2aWNlTmFtZTtcbiAgICAgIGlmIChyZXNvbHZlZFNlcnZpY2VOYW1lID09PSBzZXJ2aWNlTmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlcnZpY2UgJHtzZXJ2aWNlTmFtZX0gY2Fubm90IGRlcGVuZCBvbiBpdHNlbGZgKTtcbiAgICAgIH1cbiAgICAgIGlmICghc2VydmljZURlc2NyaXB0aW9uc1tyZXNvbHZlZFNlcnZpY2VOYW1lXSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFVuYWJsZSB0byByZXNvbHZlIHNlcnZpY2UgbmFtZWQgJHtyZXNvbHZlZFNlcnZpY2VOYW1lfSBmb3IgJHtzZXJ2aWNlTmFtZX1gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGRlcGVuZHNPbi5wdXNoKHJlc29sdmVkU2VydmljZU5hbWUpO1xuICAgIH1cblxuICAgIC8vIEdpdmUgZWFjaCB2b2x1bWUgYmluZGluZyBhIGNoYW5jZSB0byBiaW5kIGFueSBuZWNlc3Nhcnkgdm9sdW1lXG4gICAgLy8gY29uZmlndXJhdGlvbiBhbmQgcHJvdmlkZSB2b2x1bWUgbW91bnQgaW5mb3JtYXRpb24gZm9yIHRoZSBzZXJ2aWNlLlxuICAgIGNvbnN0IHZvbHVtZXM6IERvY2tlckNvbXBvc2VWb2x1bWVNb3VudFtdID0gW107XG4gICAgZm9yIChjb25zdCB2b2x1bWVCaW5kaW5nIG9mIHNlcnZpY2VEZXNjcmlwdGlvbi52b2x1bWVzID8/IFtdKSB7XG4gICAgICB2b2x1bWVzLnB1c2godm9sdW1lQmluZGluZy5iaW5kKHZvbHVtZUluZm8pKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgYW5kIHN0b3JlIHRoZSBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24sIHRha2luZyBjYXJlIG5vdCB0byBjcmVhdGVcbiAgICAvLyBvYmplY3QgbWVtYmVycyB3aXRoIHVuZGVmaW5lZCB2YWx1ZXMuXG4gICAgc2VydmljZXNbc2VydmljZU5hbWVdID0ge1xuICAgICAgLi4uZ2V0T2JqZWN0V2l0aEtleUFuZFZhbHVlSWZWYWx1ZUlzRGVmaW5lZChcbiAgICAgICAgXCJpbWFnZVwiLFxuICAgICAgICBzZXJ2aWNlRGVzY3JpcHRpb24uaW1hZ2VcbiAgICAgICksXG4gICAgICAuLi5nZXRPYmplY3RXaXRoS2V5QW5kVmFsdWVJZlZhbHVlSXNEZWZpbmVkKFxuICAgICAgICBcImJ1aWxkXCIsXG4gICAgICAgIHNlcnZpY2VEZXNjcmlwdGlvbi5pbWFnZUJ1aWxkXG4gICAgICApLFxuICAgICAgLi4uZ2V0T2JqZWN0V2l0aEtleUFuZFZhbHVlSWZWYWx1ZUlzRGVmaW5lZChcbiAgICAgICAgXCJjb21tYW5kXCIsXG4gICAgICAgIHNlcnZpY2VEZXNjcmlwdGlvbi5jb21tYW5kXG4gICAgICApLFxuICAgICAgLi4uKE9iamVjdC5rZXlzKHNlcnZpY2VEZXNjcmlwdGlvbi5lbnZpcm9ubWVudCkubGVuZ3RoID4gMFxuICAgICAgICA/IHsgZW52aXJvbm1lbnQ6IHNlcnZpY2VEZXNjcmlwdGlvbi5lbnZpcm9ubWVudCB9XG4gICAgICAgIDoge30pLFxuICAgICAgLi4uKHNlcnZpY2VEZXNjcmlwdGlvbi5wb3J0cy5sZW5ndGggPiAwXG4gICAgICAgID8geyBwb3J0czogc2VydmljZURlc2NyaXB0aW9uLnBvcnRzIH1cbiAgICAgICAgOiB7fSksXG4gICAgICAuLi4oZGVwZW5kc09uLmxlbmd0aCA+IDAgPyB7IGRlcGVuZHNPbiB9IDoge30pLFxuICAgICAgLi4uKHZvbHVtZXMubGVuZ3RoID4gMCA/IHsgdm9sdW1lcyB9IDoge30pLFxuICAgIH07XG4gIH1cblxuICAvLyBFeHBsaWNpdCB3aXRoIHRoZSB0eXBlIGhlcmUgYmVjYXVzZSB0aGUgZGVjYW1lbGl6ZSBzdGVwIGFmdGVyIHRoaXMgd2lwZXNcbiAgLy8gb3V0IHR5cGVzLlxuICBjb25zdCBpbnB1dDogRG9ja2VyQ29tcG9zZUZpbGVTY2hlbWEgPSB7XG4gICAgdmVyc2lvbixcbiAgICBzZXJ2aWNlcyxcbiAgICAuLi4oT2JqZWN0LmtleXModm9sdW1lQ29uZmlnKS5sZW5ndGggPiAwID8geyB2b2x1bWVzOiB2b2x1bWVDb25maWcgfSA6IHt9KSxcbiAgfTtcblxuICAvLyBDaGFuZ2UgbW9zdCBrZXlzIHRvIHNuYWtlIGNhc2UuXG4gIHJldHVybiBkZWNhbWVsaXplS2V5c1JlY3Vyc2l2ZWx5KGlucHV0LCB7XG4gICAgc2hvdWxkRGVjYW1lbGl6ZTogc2hvdWxkRGVjYW1lbGl6ZURvY2tlckNvbXBvc2VLZXksXG4gICAgc2VwYXJhdG9yOiBcIl9cIixcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0dXJucyBgeyBba2V5XTogdmFsdWUgfWAgaWYgYHZhbHVlYCBpcyBkZWZpbmVkLCBvdGhlcndpc2UgcmV0dXJucyBge31gIHNvXG4gKiB0aGF0IG9iamVjdCBzcHJlYWRpbmcgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgYSBwZWN1bGlhciBpbnRlcmZhY2UuXG4gKiBAcGFyYW0ga2V5XG4gKiBAcGFyYW0gdmFsdWVcbiAqL1xuZnVuY3Rpb24gZ2V0T2JqZWN0V2l0aEtleUFuZFZhbHVlSWZWYWx1ZUlzRGVmaW5lZDxLIGV4dGVuZHMgc3RyaW5nLCBUPihcbiAga2V5OiBLLFxuICB2YWx1ZTogVFxuKTogeyBLOiBUIH0gfCB7fSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8geyBba2V5XTogdmFsdWUgfSA6IHt9O1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUga2V5IGF0IHRoZSBnaXZlbiBwYXRoIHNob3VsZCBiZSBkZWNhbWVsaXplZC5cbiAqIExhcmdlbHksIGFsbCBrZXlzIHNob3VsZCBiZSBzbmFrZSBjYXNlZC4gQnV0LCB0aGVyZSBhcmUgc29tZVxuICogZXhjZXB0aW9ucyBmb3IgdXNlci1wcm92aWRlZCBuYW1lcyBmb3Igc2VydmljZXMsIHZvbHVtZXMsIGFuZFxuICogZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqIEBwYXJhbSBwYXRoXG4gKi9cbmZ1bmN0aW9uIHNob3VsZERlY2FtZWxpemVEb2NrZXJDb21wb3NlS2V5KHBhdGg6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IHBvdW5kUGF0aCA9IHBhdGguam9pbihcIiNcIik7XG5cbiAgLy8gRG9lcyBub3QgZGVjYW1lbGl6ZSB1c2VyJ3MgbmFtZXMuXG4gIC8vIHNlcnZpY2VzLm5hbWVoZXJlOlxuICAvLyB2b2x1bWVzLm5hbWVoZXJlOlxuICBpZiAoL14oc2VydmljZXN8dm9sdW1lcykjW14jXSskLy50ZXN0KHBvdW5kUGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBEb2VzIG5vdCBkZWNhbWVsaXplIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAvLyBzZXJ2aWNlcy5uYW1laGVyZS5lbnZpcm9ubWVudC4qXG4gIGlmICgvXnNlcnZpY2VzI1teI10rI2Vudmlyb25tZW50Iy8udGVzdChwb3VuZFBhdGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRG9lcyBub3QgZGVjYW1lbGl6ZSBidWlsZCBhcmd1bWVudHNcbiAgLy8gc2VydmljZXMubmFtZWhlcmUuYnVpbGQuYXJncy4qXG4gIGlmICgvXnNlcnZpY2VzI1teI10rI2J1aWxkI2FyZ3MjLy50ZXN0KHBvdW5kUGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBPdGhlcndpc2UsIGxldCBpdCBhbGwgZGVjYW1lbGl6ZS5cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0=
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLWNvbXBvc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZG9ja2VyLWNvbXBvc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQ0FBd0M7QUFFeEMsaUNBQW1EO0FBQ25ELGlDQUFrQztBQW9DbEM7O0dBRUc7QUFDSCxNQUFhLGFBQWMsU0FBUSxxQkFBUztJQWlGMUMsWUFBWSxPQUFnQixFQUFFLEtBQTBCO1FBQ3RELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBTSxDQUFDLFVBQVUsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDMUUsSUFBSSxlQUFRLENBQUMsT0FBTyxFQUFFLGtCQUFrQixVQUFVLEVBQUUsRUFBRTtZQUNwRCxTQUFTLEVBQUUsSUFBSTtZQUNmLFFBQVEsRUFBRSxJQUFJO1lBQ2QsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtTQUMzQyxDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssRUFBRSxhQUFhLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzVELE1BQU0sS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7U0FDakQ7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNsRSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVuQiwwREFBMEQ7UUFDMUQsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDOUMsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxl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bmVudFwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuL3Byb2plY3RcIjtcbmltcG9ydCB7IGRlY2FtZWxpemVLZXlzUmVjdXJzaXZlbHkgfSBmcm9tIFwiLi91dGlsXCI7XG5pbXBvcnQgeyBZYW1sRmlsZSB9IGZyb20gXCIuL3lhbWxcIjtcblxuLyoqXG4gKiBQcm9wcyBmb3IgRG9ja2VyQ29tcG9zZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJDb21wb3NlUHJvcHMge1xuICAvKipcbiAgICogQSBuYW1lIHRvIGFkZCB0byB0aGUgZG9ja2VyLWNvbXBvc2UueW1sIGZpbGVuYW1lLlxuICAgKiBAZXhhbXBsZSAnbXluYW1lJyB5aWVsZHMgJ2RvY2tlci1jb21wb3NlLm15bmFtZS55bWwnXG4gICAqIEBkZWZhdWx0IC0gbm8gbmFtZSBpcyBhZGRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZVN1ZmZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogRG9ja2VyIENvbXBvc2Ugc2NoZW1hIHZlcnNpb24gZG8gYmUgdXNlZFxuICAgKiBAZGVmYXVsdCAzLjNcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVtYVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlcnZpY2UgZGVzY3JpcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZXM/OiBSZWNvcmQ8c3RyaW5nLCBEb2NrZXJDb21wb3NlU2VydmljZURlc2NyaXB0aW9uPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBwb3J0IG1hcHBpbmdzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlckNvbXBvc2VQb3J0TWFwcGluZ09wdGlvbnMge1xuICAvKipcbiAgICogUG9ydCBtYXBwaW5nIHByb3RvY29sLlxuICAgKiBAZGVmYXVsdCBEb2NrZXJDb21wb3NlUHJvdG9jb2wuVENQXG4gICAqL1xuICByZWFkb25seSBwcm90b2NvbD86IERvY2tlckNvbXBvc2VQcm90b2NvbDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBkb2NrZXItY29tcG9zZSBZQU1MIGZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEb2NrZXJDb21wb3NlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIERlcGVuZHMgb24gYSBzZXJ2aWNlIG5hbWUuXG4gICAqL1xuICBzdGF0aWMgc2VydmljZU5hbWUoc2VydmljZU5hbWU6IHN0cmluZyk6IElEb2NrZXJDb21wb3NlU2VydmljZU5hbWUge1xuICAgIHJldHVybiB7XG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHBvcnQgbWFwcGluZy5cbiAgICogQHBhcmFtIHB1Ymxpc2hlZFBvcnQgUHVibGlzaGVkIHBvcnQgbnVtYmVyXG4gICAqIEBwYXJhbSB0YXJnZXRQb3J0IENvbnRhaW5lcidzIHBvcnQgbnVtYmVyXG4gICAqIEBwYXJhbSBvcHRpb25zIFBvcnQgbWFwcGluZyBvcHRpb25zXG4gICAqL1xuICBzdGF0aWMgcG9ydE1hcHBpbmcoXG4gICAgcHVibGlzaGVkUG9ydDogbnVtYmVyLFxuICAgIHRhcmdldFBvcnQ6IG51bWJlcixcbiAgICBvcHRpb25zPzogRG9ja2VyQ29tcG9zZVBvcnRNYXBwaW5nT3B0aW9uc1xuICApOiBEb2NrZXJDb21wb3NlU2VydmljZVBvcnQge1xuICAgIGNvbnN0IHByb3RvY29sID0gb3B0aW9ucz8ucHJvdG9jb2wgPz8gRG9ja2VyQ29tcG9zZVByb3RvY29sLlRDUDtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IHRhcmdldFBvcnQsXG4gICAgICBwdWJsaXNoZWQ6IHB1Ymxpc2hlZFBvcnQsXG4gICAgICBwcm90b2NvbDogcHJvdG9jb2wsXG4gICAgICBtb2RlOiBcImhvc3RcIixcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGJpbmQgdm9sdW1lIHRoYXQgYmluZHMgYSBob3N0IHBhdGggdG8gdGhlIHRhcmdldCBwYXRoIGluIHRoZSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBzb3VyY2VQYXRoIEhvc3QgcGF0aCBuYW1lXG4gICAqIEBwYXJhbSB0YXJnZXRQYXRoIFRhcmdldCBwYXRoIG5hbWVcbiAgICovXG4gIHN0YXRpYyBiaW5kVm9sdW1lKFxuICAgIHNvdXJjZVBhdGg6IHN0cmluZyxcbiAgICB0YXJnZXRQYXRoOiBzdHJpbmdcbiAgKTogSURvY2tlckNvbXBvc2VWb2x1bWVCaW5kaW5nIHtcbiAgICByZXR1cm4ge1xuICAgICAgYmluZChfdm9sdW1lSW5mbzogSURvY2tlckNvbXBvc2VWb2x1bWVDb25maWcpOiBEb2NrZXJDb21wb3NlVm9sdW1lTW91bnQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiYmluZFwiLFxuICAgICAgICAgIHNvdXJjZTogc291cmNlUGF0aCxcbiAgICAgICAgICB0YXJnZXQ6IHRhcmdldFBhdGgsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmFtZWQgdm9sdW1lIGFuZCBtb3VudCBpdCB0byB0aGUgdGFyZ2V0IHBhdGguIElmIHlvdSB1c2UgdGhpc1xuICAgKiBuYW1lZCB2b2x1bWUgaW4gc2V2ZXJhbCBzZXJ2aWNlcywgdGhlIHZvbHVtZSB3aWxsIGJlIHNoYXJlZC4gSW4gdGhpc1xuICAgKiBjYXNlLCB0aGUgdm9sdW1lIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGZpcnN0LXByb3ZpZGVkIG9wdGlvbnMgYXJlIHVzZWQuXG4gICAqXG4gICAqIEBwYXJhbSB2b2x1bWVOYW1lIE5hbWUgb2YgdGhlIHZvbHVtZVxuICAgKiBAcGFyYW0gdGFyZ2V0UGF0aCBUYXJnZXQgcGF0aFxuICAgKiBAcGFyYW0gb3B0aW9ucyB2b2x1bWUgY29uZmlndXJhdGlvbiAoZGVmYXVsdDogZG9ja2VyIGNvbXBvc2UgZGVmYXVsdHMpXG4gICAqL1xuICBzdGF0aWMgbmFtZWRWb2x1bWUoXG4gICAgdm9sdW1lTmFtZTogc3RyaW5nLFxuICAgIHRhcmdldFBhdGg6IHN0cmluZyxcbiAgICBvcHRpb25zOiBEb2NrZXJDb21wb3NlVm9sdW1lQ29uZmlnID0ge31cbiAgKTogSURvY2tlckNvbXBvc2VWb2x1bWVCaW5kaW5nIHtcbiAgICByZXR1cm4ge1xuICAgICAgYmluZCh2b2x1bWVJbmZvOiBJRG9ja2VyQ29tcG9zZVZvbHVtZUNvbmZpZyk6IERvY2tlckNvbXBvc2VWb2x1bWVNb3VudCB7XG4gICAgICAgIHZvbHVtZUluZm8uYWRkVm9sdW1lQ29uZmlndXJhdGlvbih2b2x1bWVOYW1lLCBvcHRpb25zKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwidm9sdW1lXCIsXG4gICAgICAgICAgc291cmNlOiB2b2x1bWVOYW1lLFxuICAgICAgICAgIHRhcmdldDogdGFyZ2V0UGF0aCxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZXM6IFJlY29yZDxzdHJpbmcsIERvY2tlckNvbXBvc2VTZXJ2aWNlPjtcbiAgcHJpdmF0ZSByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgcHJvcHM/OiBEb2NrZXJDb21wb3NlUHJvcHMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGNvbnN0IG5hbWVTdWZmaXggPSBwcm9wcz8ubmFtZVN1ZmZpeCA/IGAke3Byb3BzIS5uYW1lU3VmZml4fS55bWxgIDogXCJ5bWxcIjtcbiAgICBuZXcgWWFtbEZpbGUocHJvamVjdCwgYGRvY2tlci1jb21wb3NlLiR7bmFtZVN1ZmZpeH1gLCB7XG4gICAgICBjb21taXR0ZWQ6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgIG9iajogKCkgPT4gdGhpcy5fc3ludGhlc2l6ZURvY2tlckNvbXBvc2UoKSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcz8uc2NoZW1hVmVyc2lvbiAmJiAhcGFyc2VGbG9hdChwcm9wcy5zY2hlbWFWZXJzaW9uKSkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJWZXJzaW9uIHRhZyBuZWVkcyB0byBiZSBhIG51bWJlclwiKTtcbiAgICB9XG4gICAgdGhpcy52ZXJzaW9uID0gcHJvcHM/LnNjaGVtYVZlcnNpb24gPyBwcm9wcy5zY2hlbWFWZXJzaW9uIDogXCIzLjNcIjtcbiAgICB0aGlzLnNlcnZpY2VzID0ge307XG5cbiAgICAvLyBBZGQgdGhlIHNlcnZpY2VzIHByb3ZpZGVkIHZpYSB0aGUgY29uc3RydWN0b3IgYXJndW1lbnQuXG4gICAgY29uc3QgaW5pdGlhbFNlcnZpY2VzID0gcHJvcHM/LnNlcnZpY2VzID8/IHt9O1xuICAgIGZvciAoY29uc3QgW25hbWUsIHNlcnZpY2VEZXNjcmlwdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoaW5pdGlhbFNlcnZpY2VzKSkge1xuICAgICAgdGhpcy5hZGRTZXJ2aWNlKG5hbWUsIHNlcnZpY2VEZXNjcmlwdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNlcnZpY2UgdG8gdGhlIGRvY2tlci1jb21wb3NlIGZpbGUuXG4gICAqIEBwYXJhbSBzZXJ2aWNlTmFtZSBuYW1lIG9mIHRoZSBzZXJ2aWNlXG4gICAqIEBwYXJhbSBkZXNjcmlwdGlvbiBhIHNlcnZpY2UgZGVzY3JpcHRpb25cbiAgICovXG4gIHB1YmxpYyBhZGRTZXJ2aWNlKFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb246IERvY2tlckNvbXBvc2VTZXJ2aWNlRGVzY3JpcHRpb25cbiAgKTogRG9ja2VyQ29tcG9zZVNlcnZpY2Uge1xuICAgIGNvbnN0IHNlcnZpY2UgPSBuZXcgRG9ja2VyQ29tcG9zZVNlcnZpY2Uoc2VydmljZU5hbWUsIGRlc2NyaXB0aW9uKTtcbiAgICB0aGlzLnNlcnZpY2VzW3NlcnZpY2VOYW1lXSA9IHNlcnZpY2U7XG4gICAgcmV0dXJuIHNlcnZpY2U7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfc3ludGhlc2l6ZURvY2tlckNvbXBvc2UoKTogb2JqZWN0IHtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zZXJ2aWNlcykubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEb2NrZXJDb21wb3NlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBzZXJ2aWNlXCIpO1xuICAgIH1cblxuICAgIHJldHVybiByZW5kZXJEb2NrZXJDb21wb3NlRmlsZSh0aGlzLnNlcnZpY2VzLCB0aGlzLnZlcnNpb24pO1xuICB9XG59XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIHByb3ZpZGluZyB0aGUgbmFtZSBvZiBhIGRvY2tlciBjb21wb3NlIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURvY2tlckNvbXBvc2VTZXJ2aWNlTmFtZSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZG9ja2VyIGNvbXBvc2Ugc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVzY3JpcHRpb24gb2YgYSBkb2NrZXItY29tcG9zZS55bWwgc2VydmljZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJDb21wb3NlU2VydmljZURlc2NyaXB0aW9uIHtcbiAgLyoqXG4gICAqIFVzZSBhIGRvY2tlciBpbWFnZS5cbiAgICogTm90ZTogWW91IG11c3Qgc3BlY2lmeSBlaXRoZXIgYGJ1aWxkYCBvciBgaW1hZ2VgIGtleS5cbiAgICogQHNlZSBpbWFnZUJ1aWxkXG4gICAqL1xuICByZWFkb25seSBpbWFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgYSBkb2NrZXIgaW1hZ2UuXG4gICAqIE5vdGU6IFlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIGBpbWFnZUJ1aWxkYCBvciBgaW1hZ2VgIGtleS5cbiAgICogQHNlZSBpbWFnZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VCdWlsZD86IERvY2tlckNvbXBvc2VCdWlsZDtcblxuICAvKipcbiAgICogUHJvdmlkZSBhIGNvbW1hbmQgdG8gdGhlIGRvY2tlciBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IC0gdXNlIHRoZSBjb250YWluZXIncyBkZWZhdWx0IGNvbW1hbmRcbiAgICovXG4gIHJlYWRvbmx5IGNvbW1hbmQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTmFtZXMgb2Ygb3RoZXIgc2VydmljZXMgdGhpcyBzZXJ2aWNlIGRlcGVuZHMgb24uXG4gICAqIEBkZWZhdWx0IC0gbm8gZGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRzT24/OiBJRG9ja2VyQ29tcG9zZVNlcnZpY2VOYW1lW107XG5cbiAgLyoqXG4gICAqIE1vdW50IHNvbWUgdm9sdW1lcyBpbnRvIHRoZSBzZXJ2aWNlLlxuICAgKiBVc2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gY3JlYXRlIHZvbHVtZXM6XG4gICAqIEBzZWUgRG9ja2VyQ29tcG9zZS5iaW5kVm9sdW1lKCkgdG8gbW91bnQgYSBob3N0IHBhdGhcbiAgICogQHNlZSBEb2NrZXJDb21wb3NlLm5hbWVkVm9sdW1lKCkgdG8gY3JlYXRlICYgbW91bnQgYSBuYW1lZCB2b2x1bWVcbiAgICovXG4gIHJlYWRvbmx5IHZvbHVtZXM/OiBJRG9ja2VyQ29tcG9zZVZvbHVtZUJpbmRpbmdbXTtcblxuICAvKipcbiAgICogTWFwIHNvbWUgcG9ydHMuXG4gICAqIEBkZWZhdWx0IC0gbm8gcG9ydHMgYXJlIG1hcHBlZFxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydHM/OiBEb2NrZXJDb21wb3NlU2VydmljZVBvcnRbXTtcblxuICAvKipcbiAgICogQWRkIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogQGRlZmF1bHQgLSBubyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogQSBkb2NrZXItY29tcG9zZSBzZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgRG9ja2VyQ29tcG9zZVNlcnZpY2UgaW1wbGVtZW50cyBJRG9ja2VyQ29tcG9zZVNlcnZpY2VOYW1lIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHNlcnZpY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRG9ja2VyIGltYWdlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2NrZXIgaW1hZ2UgYnVpbGQgaW5zdHJ1Y3Rpb25zLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlQnVpbGQ/OiBEb2NrZXJDb21wb3NlQnVpbGQ7XG5cbiAgLyoqXG4gICAqIENvbW1hbmQgdG8gcnVuIGluIHRoZSBjb250YWluZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29tbWFuZD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPdGhlciBzZXJ2aWNlcyB0aGF0IHRoaXMgc2VydmljZSBkZXBlbmRzIG9uLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlcGVuZHNPbjogSURvY2tlckNvbXBvc2VTZXJ2aWNlTmFtZVtdO1xuXG4gIC8qKlxuICAgKiBWb2x1bWVzIG1vdW50ZWQgaW4gdGhlIGNvbnRhaW5lci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2b2x1bWVzOiBJRG9ja2VyQ29tcG9zZVZvbHVtZUJpbmRpbmdbXTtcblxuICAvKipcbiAgICogUHVibGlzaGVkIHBvcnRzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBvcnRzOiBEb2NrZXJDb21wb3NlU2VydmljZVBvcnRbXTtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVudmlyb25tZW50OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgc2VydmljZURlc2NyaXB0aW9uOiBEb2NrZXJDb21wb3NlU2VydmljZURlc2NyaXB0aW9uXG4gICkge1xuICAgIGlmIChcbiAgICAgICghc2VydmljZURlc2NyaXB0aW9uLmltYWdlQnVpbGQgJiYgIXNlcnZpY2VEZXNjcmlwdGlvbi5pbWFnZSkgfHxcbiAgICAgIChzZXJ2aWNlRGVzY3JpcHRpb24uaW1hZ2VCdWlsZCAmJiBzZXJ2aWNlRGVzY3JpcHRpb24uaW1hZ2UpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBIHNlcnZpY2UgJHtzZXJ2aWNlTmFtZX0gcmVxdWlyZXMgZXhhY3RseSBvbmUgb2YgYSBcXGBpbWFnZUJ1aWxkXFxgIG9yIFxcYGltYWdlXFxgIGtleWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXJ2aWNlTmFtZSA9IHNlcnZpY2VOYW1lO1xuICAgIHRoaXMuY29tbWFuZCA9IHNlcnZpY2VEZXNjcmlwdGlvbi5jb21tYW5kO1xuICAgIHRoaXMuaW1hZ2UgPSBzZXJ2aWNlRGVzY3JpcHRpb24uaW1hZ2U7XG4gICAgdGhpcy5pbWFnZUJ1aWxkID0gc2VydmljZURlc2NyaXB0aW9uLmltYWdlQnVpbGQ7XG4gICAgdGhpcy5kZXBlbmRzT24gPSBzZXJ2aWNlRGVzY3JpcHRpb24uZGVwZW5kc09uID8/IFtdO1xuICAgIHRoaXMudm9sdW1lcyA9IHNlcnZpY2VEZXNjcmlwdGlvbi52b2x1bWVzID8/IFtdO1xuICAgIHRoaXMucG9ydHMgPSBzZXJ2aWNlRGVzY3JpcHRpb24ucG9ydHMgPz8gW107XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IHNlcnZpY2VEZXNjcmlwdGlvbi5lbnZpcm9ubWVudCA/PyB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBwb3J0IG1hcHBpbmdcbiAgICogQHBhcmFtIHB1Ymxpc2hlZFBvcnQgUHVibGlzaGVkIHBvcnQgbnVtYmVyXG4gICAqIEBwYXJhbSB0YXJnZXRQb3J0IENvbnRhaW5lcidzIHBvcnQgbnVtYmVyXG4gICAqIEBwYXJhbSBvcHRpb25zIFBvcnQgbWFwcGluZyBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgYWRkUG9ydChcbiAgICBwdWJsaXNoZWRQb3J0OiBudW1iZXIsXG4gICAgdGFyZ2V0UG9ydDogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiBEb2NrZXJDb21wb3NlUG9ydE1hcHBpbmdPcHRpb25zXG4gICkge1xuICAgIHRoaXMucG9ydHM/LnB1c2goXG4gICAgICBEb2NrZXJDb21wb3NlLnBvcnRNYXBwaW5nKHB1Ymxpc2hlZFBvcnQsIHRhcmdldFBvcnQsIG9wdGlvbnMpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgICogQHBhcmFtIG5hbWUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZVxuICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlXG4gICAqL1xuICBwdWJsaWMgYWRkRW52aXJvbm1lbnQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5lbnZpcm9ubWVudFtuYW1lXSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgdGhlIHNlcnZpY2UgZGVwZW5kIG9uIGFub3RoZXIgc2VydmljZS5cbiAgICogQHBhcmFtIHNlcnZpY2VOYW1lXG4gICAqL1xuICBwdWJsaWMgYWRkRGVwZW5kc09uKHNlcnZpY2VOYW1lOiBJRG9ja2VyQ29tcG9zZVNlcnZpY2VOYW1lKSB7XG4gICAgdGhpcy5kZXBlbmRzT24ucHVzaChzZXJ2aWNlTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdm9sdW1lIHRvIHRoZSBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gdm9sdW1lXG4gICAqL1xuICBwdWJsaWMgYWRkVm9sdW1lKHZvbHVtZTogSURvY2tlckNvbXBvc2VWb2x1bWVCaW5kaW5nKSB7XG4gICAgdGhpcy52b2x1bWVzLnB1c2godm9sdW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgc2VydmljZSBwb3J0IG1hcHBpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJDb21wb3NlU2VydmljZVBvcnQge1xuICAvKipcbiAgICogUHVibGlzaGVkIHBvcnQgbnVtYmVyXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoZWQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGFyZ2V0IHBvcnQgbnVtYmVyXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogTmV0d29yayBwcm90b2NvbFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdG9jb2w6IERvY2tlckNvbXBvc2VQcm90b2NvbDtcblxuICAvKipcbiAgICogUG9ydCBtYXBwaW5nIG1vZGUuXG4gICAqL1xuICByZWFkb25seSBtb2RlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTmV0d29yayBwcm90b2NvbCBmb3IgcG9ydCBtYXBwaW5nXG4gKi9cbmV4cG9ydCBlbnVtIERvY2tlckNvbXBvc2VQcm90b2NvbCB7XG4gIC8qKlxuICAgKiBUQ1AgcHJvdG9jb2xcbiAgICovXG4gIFRDUCA9IFwidGNwXCIsXG5cbiAgLyoqXG4gICAqIFVEUCBwcm90b2NvbFxuICAgKi9cbiAgVURQID0gXCJ1ZHBcIixcbn1cblxuLyoqXG4gKiBCdWlsZCBhcmd1bWVudHMgZm9yIGNyZWF0aW5nIGEgZG9ja2VyIGltYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlckNvbXBvc2VCdWlsZCB7XG4gIC8qKlxuICAgKiBEb2NrZXIgYnVpbGQgY29udGV4dCBkaXJlY3RvcnkuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZG9ja2VyZmlsZSB0byBidWlsZCBmcm9tLlxuICAgKiBAZGVmYXVsdCBcIkRvY2tlcmZpbGVcIlxuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgYXJncy5cbiAgICogQGRlZmF1bHQgLSBub25lIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgYXJncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogVm9sdW1lIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJDb21wb3NlVm9sdW1lQ29uZmlnIHtcbiAgLyoqXG4gICAqIERyaXZlciB0byB1c2UgZm9yIHRoZSB2b2x1bWVcbiAgICogQGRlZmF1bHQgLSB2YWx1ZSBpcyBub3QgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGRyaXZlcj86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9ucyB0byBwcm92aWRlIHRvIHRoZSBkcml2ZXIuXG4gICAqL1xuICByZWFkb25seSBkcml2ZXJPcHRzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdm9sdW1lIGlzIGV4dGVybmFsbHkgY3JlYXRlZC5cbiAgICogQGRlZmF1bHQgLSB1bnNldCwgaW5kaWNhdGluZyB0aGF0IGRvY2tlci1jb21wb3NlIGNyZWF0ZXMgdGhlIHZvbHVtZVxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZXJuYWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSB2b2x1bWUgZm9yIHdoZW4gdGhlIHZvbHVtZSBuYW1lIGlzbid0IGdvaW5nIHRvIHdvcmsgaW4gWUFNTC5cbiAgICogQGRlZmF1bHQgLSB1bnNldCwgaW5kaWNhdGluZyB0aGF0IGRvY2tlci1jb21wb3NlIGNyZWF0ZXMgdm9sdW1lcyBhcyB1c3VhbFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBWb2x1bWUgYmluZGluZyBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRG9ja2VyQ29tcG9zZVZvbHVtZUJpbmRpbmcge1xuICAvKipcbiAgICogQmluZHMgdGhlIHJlcXVlc3RlZCB2b2x1bWUgdG8gdGhlIGRvY2tlci1jb21wb3NlIHZvbHVtZSBjb25maWd1cmF0aW9uIGFuZFxuICAgKiBwcm92aWRlIG1vdW50aW5nIGluc3RydWN0aW9ucyBmb3Igc3ludGhlc2lzLlxuICAgKiBAcGFyYW0gdm9sdW1lQ29uZmlnIHRoZSB2b2x1bWUgY29uZmlndXJhdGlvblxuICAgKiBAcmV0dXJucyBtb3VudGluZyBpbnN0cnVjdGlvbnMgZm9yIHRoZSBzZXJ2aWNlLlxuICAgKi9cbiAgYmluZCh2b2x1bWVDb25maWc6IElEb2NrZXJDb21wb3NlVm9sdW1lQ29uZmlnKTogRG9ja2VyQ29tcG9zZVZvbHVtZU1vdW50O1xufVxuXG4vKipcbiAqIFN0b3JhZ2UgZm9yIHZvbHVtZSBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElEb2NrZXJDb21wb3NlVm9sdW1lQ29uZmlnIHtcbiAgLyoqXG4gICAqIEFkZCB2b2x1bWUgY29uZmlndXJhdGlvbiB0byB0aGUgcmVwb3NpdG9yeS5cbiAgICogQHBhcmFtIHZvbHVtZU5hbWVcbiAgICogQHBhcmFtIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIGFkZFZvbHVtZUNvbmZpZ3VyYXRpb24oXG4gICAgdm9sdW1lTmFtZTogc3RyaW5nLFxuICAgIGNvbmZpZ3VyYXRpb246IERvY2tlckNvbXBvc2VWb2x1bWVDb25maWdcbiAgKTogdm9pZDtcbn1cblxuLyoqXG4gKiBTZXJ2aWNlIHZvbHVtZSBtb3VudGluZyBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJDb21wb3NlVm9sdW1lTW91bnQge1xuICAvKipcbiAgICogVHlwZSBvZiB2b2x1bWUuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZvbHVtZSBzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWb2x1bWUgdGFyZ2V0XG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTdHJ1Y3R1cmUgb2YgYSBkb2NrZXIgY29tcG9zZSBmaWxlIGJlZm9yZSB3ZSBkZWNhbWVsaXplLlxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBEb2NrZXJDb21wb3NlRmlsZVNjaGVtYSB7XG4gIHZlcnNpb246IHN0cmluZztcbiAgc2VydmljZXM6IFJlY29yZDxzdHJpbmcsIERvY2tlckNvbXBvc2VGaWxlU2VydmljZVNjaGVtYT47XG4gIHZvbHVtZXM/OiBSZWNvcmQ8c3RyaW5nLCBEb2NrZXJDb21wb3NlVm9sdW1lQ29uZmlnPjtcbn1cblxuLyoqXG4gKiBTdHJ1Y3R1cmUgb2YgYSBkb2NrZXIgY29tcG9zZSBmaWxlJ3Mgc2VydmljZSBiZWZvcmUgd2UgZGVjYW1lbGl6ZS5cbiAqIEBpbnRlcm5hbFxuICovXG5pbnRlcmZhY2UgRG9ja2VyQ29tcG9zZUZpbGVTZXJ2aWNlU2NoZW1hIHtcbiAgcmVhZG9ubHkgZGVwZW5kc09uPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IGJ1aWxkPzogRG9ja2VyQ29tcG9zZUJ1aWxkO1xuICByZWFkb25seSBpbWFnZT86IHN0cmluZztcbiAgcmVhZG9ubHkgY29tbWFuZD86IHN0cmluZ1tdO1xuICByZWFkb25seSB2b2x1bWVzPzogRG9ja2VyQ29tcG9zZVZvbHVtZU1vdW50W107XG4gIHJlYWRvbmx5IHBvcnRzPzogRG9ja2VyQ29tcG9zZVNlcnZpY2VQb3J0W107XG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRG9ja2VyQ29tcG9zZUZpbGUoXG4gIHNlcnZpY2VEZXNjcmlwdGlvbnM6IFJlY29yZDxzdHJpbmcsIERvY2tlckNvbXBvc2VTZXJ2aWNlPixcbiAgdmVyc2lvbjogc3RyaW5nXG4pOiBvYmplY3Qge1xuICAvLyBSZWNvcmQgdm9sdW1lIGNvbmZpZ3VyYXRpb25cbiAgY29uc3Qgdm9sdW1lQ29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBEb2NrZXJDb21wb3NlVm9sdW1lQ29uZmlnPiA9IHt9O1xuICBjb25zdCB2b2x1bWVJbmZvOiBJRG9ja2VyQ29tcG9zZVZvbHVtZUNvbmZpZyA9IHtcbiAgICBhZGRWb2x1bWVDb25maWd1cmF0aW9uKFxuICAgICAgdm9sdW1lTmFtZTogc3RyaW5nLFxuICAgICAgY29uZmlndXJhdGlvbjogRG9ja2VyQ29tcG9zZVZvbHVtZUNvbmZpZ1xuICAgICkge1xuICAgICAgaWYgKCF2b2x1bWVDb25maWdbdm9sdW1lTmFtZV0pIHtcbiAgICAgICAgLy8gRmlyc3Qgdm9sdW1lIGNvbmZpZ3VyYXRpb24gdGFrZXMgcHJlY2VkZW5jZS5cbiAgICAgICAgdm9sdW1lQ29uZmlnW3ZvbHVtZU5hbWVdID0gY29uZmlndXJhdGlvbjtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xuXG4gIC8vIFJlbmRlciBzZXJ2aWNlIGNvbmZpZ3VyYXRpb25cbiAgY29uc3Qgc2VydmljZXM6IFJlY29yZDxzdHJpbmcsIERvY2tlckNvbXBvc2VGaWxlU2VydmljZVNjaGVtYT4gPSB7fTtcbiAgZm9yIChjb25zdCBbc2VydmljZU5hbWUsIHNlcnZpY2VEZXNjcmlwdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoXG4gICAgc2VydmljZURlc2NyaXB0aW9ucyA/PyB7fVxuICApKSB7XG4gICAgLy8gUmVzb2x2ZSB0aGUgbmFtZXMgb2YgZWFjaCBkZXBlbmRlbmN5IGFuZCBjaGVjayB0aGF0IHRoZXkgZXhpc3QuXG4gICAgLy8gTm90ZTogVGhleSBtYXkgbm90IGV4aXN0IGlmIHRoZSB1c2VyIG1hZGUgYSBtaXN0YWtlIHdoZW4gcmVmZXJlbmNpbmcgYVxuICAgIC8vIHNlcnZpY2UgYnkgbmFtZSB2aWEgYERvY2tlckNvbXBvc2Uuc2VydmljZU5hbWUoKWAuXG4gICAgLy8gQHNlZSBEb2NrZXJDb21wb3NlLnNlcnZpY2VOYW1lXG4gICAgY29uc3QgZGVwZW5kc09uID0gQXJyYXk8c3RyaW5nPigpO1xuICAgIGZvciAoY29uc3QgZGVwZW5kc09uU2VydmljZU5hbWUgb2Ygc2VydmljZURlc2NyaXB0aW9uLmRlcGVuZHNPbiA/PyBbXSkge1xuICAgICAgY29uc3QgcmVzb2x2ZWRTZXJ2aWNlTmFtZSA9IGRlcGVuZHNPblNlcnZpY2VOYW1lLnNlcnZpY2VOYW1lO1xuICAgICAgaWYgKHJlc29sdmVkU2VydmljZU5hbWUgPT09IHNlcnZpY2VOYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2VydmljZSAke3NlcnZpY2VOYW1lfSBjYW5ub3QgZGVwZW5kIG9uIGl0c2VsZmApO1xuICAgICAgfVxuICAgICAgaWYgKCFzZXJ2aWNlRGVzY3JpcHRpb25zW3Jlc29sdmVkU2VydmljZU5hbWVdKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVW5hYmxlIHRvIHJlc29sdmUgc2VydmljZSBuYW1lZCAke3Jlc29sdmVkU2VydmljZU5hbWV9IGZvciAke3NlcnZpY2VOYW1lfWBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgZGVwZW5kc09uLnB1c2gocmVzb2x2ZWRTZXJ2aWNlTmFtZSk7XG4gICAgfVxuXG4gICAgLy8gR2l2ZSBlYWNoIHZvbHVtZSBiaW5kaW5nIGEgY2hhbmNlIHRvIGJpbmQgYW55IG5lY2Vzc2FyeSB2b2x1bWVcbiAgICAvLyBjb25maWd1cmF0aW9uIGFuZCBwcm92aWRlIHZvbHVtZSBtb3VudCBpbmZvcm1hdGlvbiBmb3IgdGhlIHNlcnZpY2UuXG4gICAgY29uc3Qgdm9sdW1lczogRG9ja2VyQ29tcG9zZVZvbHVtZU1vdW50W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHZvbHVtZUJpbmRpbmcgb2Ygc2VydmljZURlc2NyaXB0aW9uLnZvbHVtZXMgPz8gW10pIHtcbiAgICAgIHZvbHVtZXMucHVzaCh2b2x1bWVCaW5kaW5nLmJpbmQodm9sdW1lSW5mbykpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhbmQgc3RvcmUgdGhlIHNlcnZpY2UgY29uZmlndXJhdGlvbiwgdGFraW5nIGNhcmUgbm90IHRvIGNyZWF0ZVxuICAgIC8vIG9iamVjdCBtZW1iZXJzIHdpdGggdW5kZWZpbmVkIHZhbHVlcy5cbiAgICBzZXJ2aWNlc1tzZXJ2aWNlTmFtZV0gPSB7XG4gICAgICAuLi5nZXRPYmplY3RXaXRoS2V5QW5kVmFsdWVJZlZhbHVlSXNEZWZpbmVkKFxuICAgICAgICBcImltYWdlXCIsXG4gICAgICAgIHNlcnZpY2VEZXNjcmlwdGlvbi5pbWFnZVxuICAgICAgKSxcbiAgICAgIC4uLmdldE9iamVjdFdpdGhLZXlBbmRWYWx1ZUlmVmFsdWVJc0RlZmluZWQoXG4gICAgICAgIFwiYnVpbGRcIixcbiAgICAgICAgc2VydmljZURlc2NyaXB0aW9uLmltYWdlQnVpbGRcbiAgICAgICksXG4gICAgICAuLi5nZXRPYmplY3RXaXRoS2V5QW5kVmFsdWVJZlZhbHVlSXNEZWZpbmVkKFxuICAgICAgICBcImNvbW1hbmRcIixcbiAgICAgICAgc2VydmljZURlc2NyaXB0aW9uLmNvbW1hbmRcbiAgICAgICksXG4gICAgICAuLi4oT2JqZWN0LmtleXMoc2VydmljZURlc2NyaXB0aW9uLmVudmlyb25tZW50KS5sZW5ndGggPiAwXG4gICAgICAgID8geyBlbnZpcm9ubWVudDogc2VydmljZURlc2NyaXB0aW9uLmVudmlyb25tZW50IH1cbiAgICAgICAgOiB7fSksXG4gICAgICAuLi4oc2VydmljZURlc2NyaXB0aW9uLnBvcnRzLmxlbmd0aCA+IDBcbiAgICAgICAgPyB7IHBvcnRzOiBzZXJ2aWNlRGVzY3JpcHRpb24ucG9ydHMgfVxuICAgICAgICA6IHt9KSxcbiAgICAgIC4uLihkZXBlbmRzT24ubGVuZ3RoID4gMCA/IHsgZGVwZW5kc09uIH0gOiB7fSksXG4gICAgICAuLi4odm9sdW1lcy5sZW5ndGggPiAwID8geyB2b2x1bWVzIH0gOiB7fSksXG4gICAgfTtcbiAgfVxuXG4gIC8vIEV4cGxpY2l0IHdpdGggdGhlIHR5cGUgaGVyZSBiZWNhdXNlIHRoZSBkZWNhbWVsaXplIHN0ZXAgYWZ0ZXIgdGhpcyB3aXBlc1xuICAvLyBvdXQgdHlwZXMuXG4gIGNvbnN0IGlucHV0OiBEb2NrZXJDb21wb3NlRmlsZVNjaGVtYSA9IHtcbiAgICB2ZXJzaW9uLFxuICAgIHNlcnZpY2VzLFxuICAgIC4uLihPYmplY3Qua2V5cyh2b2x1bWVDb25maWcpLmxlbmd0aCA+IDAgPyB7IHZvbHVtZXM6IHZvbHVtZUNvbmZpZyB9IDoge30pLFxuICB9O1xuXG4gIC8vIENoYW5nZSBtb3N0IGtleXMgdG8gc25ha2UgY2FzZS5cbiAgcmV0dXJuIGRlY2FtZWxpemVLZXlzUmVjdXJzaXZlbHkoaW5wdXQsIHtcbiAgICBzaG91bGREZWNhbWVsaXplOiBzaG91bGREZWNhbWVsaXplRG9ja2VyQ29tcG9zZUtleSxcbiAgICBzZXBhcmF0b3I6IFwiX1wiLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGB7IFtrZXldOiB2YWx1ZSB9YCBpZiBgdmFsdWVgIGlzIGRlZmluZWQsIG90aGVyd2lzZSByZXR1cm5zIGB7fWAgc29cbiAqIHRoYXQgb2JqZWN0IHNwcmVhZGluZyBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBhIHBlY3VsaWFyIGludGVyZmFjZS5cbiAqIEBwYXJhbSBrZXlcbiAqIEBwYXJhbSB2YWx1ZVxuICovXG5mdW5jdGlvbiBnZXRPYmplY3RXaXRoS2V5QW5kVmFsdWVJZlZhbHVlSXNEZWZpbmVkPEsgZXh0ZW5kcyBzdHJpbmcsIFQ+KFxuICBrZXk6IEssXG4gIHZhbHVlOiBUXG4pOiB7IEs6IFQgfSB8IHt9IHtcbiAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB7IFtrZXldOiB2YWx1ZSB9IDoge307XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBrZXkgYXQgdGhlIGdpdmVuIHBhdGggc2hvdWxkIGJlIGRlY2FtZWxpemVkLlxuICogTGFyZ2VseSwgYWxsIGtleXMgc2hvdWxkIGJlIHNuYWtlIGNhc2VkLiBCdXQsIHRoZXJlIGFyZSBzb21lXG4gKiBleGNlcHRpb25zIGZvciB1c2VyLXByb3ZpZGVkIG5hbWVzIGZvciBzZXJ2aWNlcywgdm9sdW1lcywgYW5kXG4gKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogQHBhcmFtIHBhdGhcbiAqL1xuZnVuY3Rpb24gc2hvdWxkRGVjYW1lbGl6ZURvY2tlckNvbXBvc2VLZXkocGF0aDogc3RyaW5nW10pIHtcbiAgY29uc3QgcG91bmRQYXRoID0gcGF0aC5qb2luKFwiI1wiKTtcblxuICAvLyBEb2VzIG5vdCBkZWNhbWVsaXplIHVzZXIncyBuYW1lcy5cbiAgLy8gc2VydmljZXMubmFtZWhlcmU6XG4gIC8vIHZvbHVtZXMubmFtZWhlcmU6XG4gIGlmICgvXihzZXJ2aWNlc3x2b2x1bWVzKSNbXiNdKyQvLnRlc3QocG91bmRQYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIERvZXMgbm90IGRlY2FtZWxpemUgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gIC8vIHNlcnZpY2VzLm5hbWVoZXJlLmVudmlyb25tZW50LipcbiAgaWYgKC9ec2VydmljZXMjW14jXSsjZW52aXJvbm1lbnQjLy50ZXN0KHBvdW5kUGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBEb2VzIG5vdCBkZWNhbWVsaXplIGJ1aWxkIGFyZ3VtZW50c1xuICAvLyBzZXJ2aWNlcy5uYW1laGVyZS5idWlsZC5hcmdzLipcbiAgaWYgKC9ec2VydmljZXMjW14jXSsjYnVpbGQjYXJncyMvLnRlc3QocG91bmRQYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIE90aGVyd2lzZSwgbGV0IGl0IGFsbCBkZWNhbWVsaXplLlxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ==
package/lib/file.d.ts CHANGED
@@ -117,4 +117,3 @@ export interface IResolvable {
117
117
  */
118
118
  toJSON(): any;
119
119
  }
120
- //# sourceMappingURL=file.d.ts.map