projen 0.71.67 → 0.71.69

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 (243) hide show
  1. package/.jsii +24 -6
  2. package/docs/api/API.md +2 -0
  3. package/lib/awscdk/auto-discover.js +5 -5
  4. package/lib/awscdk/awscdk-app-java.js +1 -1
  5. package/lib/awscdk/awscdk-app-py.js +1 -1
  6. package/lib/awscdk/awscdk-app-ts.js +1 -1
  7. package/lib/awscdk/awscdk-construct.js +2 -2
  8. package/lib/awscdk/awscdk-deps-java.js +1 -1
  9. package/lib/awscdk/awscdk-deps-js.js +1 -1
  10. package/lib/awscdk/awscdk-deps-py.js +1 -1
  11. package/lib/awscdk/awscdk-deps.js +1 -1
  12. package/lib/awscdk/cdk-config.js +1 -1
  13. package/lib/awscdk/cdk-tasks.js +1 -1
  14. package/lib/awscdk/integration-test.js +1 -1
  15. package/lib/awscdk/lambda-extension.js +1 -1
  16. package/lib/awscdk/lambda-function.js +2 -2
  17. package/lib/build/build-workflow.js +1 -1
  18. package/lib/cdk/auto-discover-base.js +2 -2
  19. package/lib/cdk/construct-lib.js +1 -1
  20. package/lib/cdk/integration-test-base.js +1 -1
  21. package/lib/cdk/jsii-docgen.js +1 -1
  22. package/lib/cdk/jsii-project.js +1 -1
  23. package/lib/cdk8s/auto-discover.js +2 -2
  24. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  25. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  26. package/lib/cdk8s/cdk8s-construct.js +1 -1
  27. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  28. package/lib/cdk8s/cdk8s-deps.js +1 -1
  29. package/lib/cdk8s/integration-test.js +1 -1
  30. package/lib/cdktf/cdktf-construct.js +1 -1
  31. package/lib/circleci/circleci.js +1 -1
  32. package/lib/component.js +1 -1
  33. package/lib/dependencies.js +1 -1
  34. package/lib/dev-env.js +1 -1
  35. package/lib/docker-compose/docker-compose-service.js +1 -1
  36. package/lib/docker-compose/docker-compose.js +1 -1
  37. package/lib/file.js +1 -1
  38. package/lib/gitattributes.js +1 -1
  39. package/lib/github/actions-provider.js +1 -1
  40. package/lib/github/auto-approve.js +1 -1
  41. package/lib/github/auto-merge.js +1 -1
  42. package/lib/github/dependabot.js +1 -1
  43. package/lib/github/github-credentials.js +1 -1
  44. package/lib/github/github-project.js +1 -1
  45. package/lib/github/github.js +1 -1
  46. package/lib/github/mergify.js +1 -1
  47. package/lib/github/pr-template.js +1 -1
  48. package/lib/github/pull-request-lint.js +1 -1
  49. package/lib/github/stale.js +1 -1
  50. package/lib/github/task-workflow.js +1 -1
  51. package/lib/github/workflow-actions.js +1 -1
  52. package/lib/github/workflow-jobs.js +1 -1
  53. package/lib/github/workflows.js +1 -1
  54. package/lib/gitlab/configuration.js +1 -1
  55. package/lib/gitlab/gitlab-configuration.js +1 -1
  56. package/lib/gitlab/nested-configuration.js +1 -1
  57. package/lib/gitpod.js +1 -1
  58. package/lib/ignore-file.js +1 -1
  59. package/lib/ini.js +1 -1
  60. package/lib/java/java-project.js +1 -1
  61. package/lib/java/junit.js +1 -1
  62. package/lib/java/maven-compile.js +1 -1
  63. package/lib/java/maven-packaging.js +1 -1
  64. package/lib/java/maven-sample.js +1 -1
  65. package/lib/java/pom.js +1 -1
  66. package/lib/java/projenrc.js +1 -1
  67. package/lib/javascript/bundler.js +1 -1
  68. package/lib/javascript/eslint.js +1 -1
  69. package/lib/javascript/jest.js +4 -4
  70. package/lib/javascript/node-package.js +1 -1
  71. package/lib/javascript/node-project.js +1 -1
  72. package/lib/javascript/npm-config.js +1 -1
  73. package/lib/javascript/prettier.js +1 -1
  74. package/lib/javascript/projenrc.js +1 -1
  75. package/lib/javascript/typescript-config.js +2 -2
  76. package/lib/javascript/upgrade-dependencies.js +2 -2
  77. package/lib/json-patch.js +1 -1
  78. package/lib/json.js +1 -1
  79. package/lib/license.js +1 -1
  80. package/lib/logger.js +1 -1
  81. package/lib/makefile.js +1 -1
  82. package/lib/object-file.js +1 -1
  83. package/lib/project-build.js +1 -1
  84. package/lib/project.js +1 -1
  85. package/lib/projects.js +1 -1
  86. package/lib/projenrc-json.js +2 -2
  87. package/lib/projenrc.js +1 -1
  88. package/lib/python/pip.js +1 -1
  89. package/lib/python/poetry.js +2 -2
  90. package/lib/python/projenrc.js +1 -1
  91. package/lib/python/pytest-sample.js +1 -1
  92. package/lib/python/pytest.js +1 -1
  93. package/lib/python/python-project.js +1 -1
  94. package/lib/python/python-sample.js +1 -1
  95. package/lib/python/requirements-file.js +1 -1
  96. package/lib/python/setuppy.js +1 -1
  97. package/lib/python/setuptools.js +1 -1
  98. package/lib/python/venv.js +1 -1
  99. package/lib/readme.js +1 -1
  100. package/lib/release/publisher.js +1 -1
  101. package/lib/release/release-trigger.js +1 -1
  102. package/lib/release/release.js +1 -1
  103. package/lib/renovatebot.js +1 -1
  104. package/lib/run-task.js +1889 -0
  105. package/lib/sample-file.js +2 -2
  106. package/lib/semver.js +1 -1
  107. package/lib/source-code.js +1 -1
  108. package/lib/task-runtime.js +1 -1
  109. package/lib/task.js +1 -1
  110. package/lib/tasks.js +1 -1
  111. package/lib/testing.js +1 -1
  112. package/lib/textfile.js +1 -1
  113. package/lib/toml.js +1 -1
  114. package/lib/typescript/projenrc-ts.js +1 -1
  115. package/lib/typescript/projenrc.d.ts +8 -0
  116. package/lib/typescript/projenrc.js +14 -5
  117. package/lib/typescript/typescript-typedoc.js +1 -1
  118. package/lib/typescript/typescript.js +3 -3
  119. package/lib/version.js +1 -1
  120. package/lib/vscode/devcontainer.js +1 -1
  121. package/lib/vscode/extensions.js +1 -1
  122. package/lib/vscode/launch-config.js +1 -1
  123. package/lib/vscode/settings.js +1 -1
  124. package/lib/vscode/vscode.js +1 -1
  125. package/lib/web/next.js +3 -3
  126. package/lib/web/postcss.js +1 -1
  127. package/lib/web/react.js +4 -4
  128. package/lib/web/tailwind.js +1 -1
  129. package/lib/xmlfile.js +1 -1
  130. package/lib/yaml.js +1 -1
  131. package/node_modules/yaml/README.md +4 -0
  132. package/node_modules/yaml/browser/dist/compose/compose-collection.js +46 -29
  133. package/node_modules/yaml/browser/dist/compose/compose-doc.js +1 -0
  134. package/node_modules/yaml/browser/dist/compose/compose-scalar.js +1 -1
  135. package/node_modules/yaml/browser/dist/compose/composer.js +1 -1
  136. package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +3 -2
  137. package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +3 -2
  138. package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +4 -5
  139. package/node_modules/yaml/browser/dist/compose/util-map-includes.js +1 -1
  140. package/node_modules/yaml/browser/dist/doc/Document.js +12 -10
  141. package/node_modules/yaml/browser/dist/doc/anchors.js +1 -1
  142. package/node_modules/yaml/browser/dist/doc/createNode.js +6 -2
  143. package/node_modules/yaml/browser/dist/doc/directives.js +1 -1
  144. package/node_modules/yaml/browser/dist/index.js +1 -1
  145. package/node_modules/yaml/browser/dist/node_modules/tslib/tslib.es6.js +6 -149
  146. package/node_modules/yaml/browser/dist/nodes/Alias.js +9 -2
  147. package/node_modules/yaml/browser/dist/nodes/Collection.js +2 -1
  148. package/node_modules/yaml/browser/dist/nodes/Node.js +25 -35
  149. package/node_modules/yaml/browser/dist/nodes/Pair.js +1 -1
  150. package/node_modules/yaml/browser/dist/nodes/Scalar.js +2 -1
  151. package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +30 -2
  152. package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +17 -1
  153. package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +1 -1
  154. package/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
  155. package/node_modules/yaml/browser/dist/nodes/toJS.js +1 -1
  156. package/node_modules/yaml/browser/dist/schema/Schema.js +1 -1
  157. package/node_modules/yaml/browser/dist/schema/common/map.js +3 -28
  158. package/node_modules/yaml/browser/dist/schema/common/seq.js +3 -19
  159. package/node_modules/yaml/browser/dist/schema/tags.js +1 -1
  160. package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +9 -8
  161. package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +1 -1
  162. package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +14 -13
  163. package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +1 -1
  164. package/node_modules/yaml/browser/dist/stringify/stringify.js +1 -1
  165. package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +1 -1
  166. package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +1 -1
  167. package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +1 -1
  168. package/node_modules/yaml/browser/dist/stringify/stringifyString.js +10 -1
  169. package/node_modules/yaml/browser/dist/util.js +2 -0
  170. package/node_modules/yaml/browser/dist/visit.js +1 -1
  171. package/node_modules/yaml/dist/compose/compose-collection.d.ts +1 -1
  172. package/node_modules/yaml/dist/compose/compose-collection.js +47 -30
  173. package/node_modules/yaml/dist/compose/compose-doc.d.ts +2 -1
  174. package/node_modules/yaml/dist/compose/compose-doc.js +1 -0
  175. package/node_modules/yaml/dist/compose/compose-scalar.js +7 -7
  176. package/node_modules/yaml/dist/compose/composer.d.ts +5 -5
  177. package/node_modules/yaml/dist/compose/composer.js +3 -3
  178. package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +2 -1
  179. package/node_modules/yaml/dist/compose/resolve-block-map.js +3 -2
  180. package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +2 -1
  181. package/node_modules/yaml/dist/compose/resolve-block-seq.js +3 -2
  182. package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +2 -1
  183. package/node_modules/yaml/dist/compose/resolve-flow-collection.js +5 -6
  184. package/node_modules/yaml/dist/compose/util-map-includes.d.ts +3 -3
  185. package/node_modules/yaml/dist/compose/util-map-includes.js +3 -3
  186. package/node_modules/yaml/dist/doc/Document.d.ts +11 -9
  187. package/node_modules/yaml/dist/doc/Document.js +22 -20
  188. package/node_modules/yaml/dist/doc/anchors.d.ts +4 -4
  189. package/node_modules/yaml/dist/doc/anchors.js +2 -2
  190. package/node_modules/yaml/dist/doc/createNode.d.ts +1 -1
  191. package/node_modules/yaml/dist/doc/createNode.js +13 -9
  192. package/node_modules/yaml/dist/doc/directives.js +3 -3
  193. package/node_modules/yaml/dist/errors.d.ts +1 -1
  194. package/node_modules/yaml/dist/index.d.ts +2 -1
  195. package/node_modules/yaml/dist/index.js +9 -9
  196. package/node_modules/yaml/dist/nodes/Alias.d.ts +1 -1
  197. package/node_modules/yaml/dist/nodes/Alias.js +12 -5
  198. package/node_modules/yaml/dist/nodes/Collection.d.ts +3 -2
  199. package/node_modules/yaml/dist/nodes/Collection.js +10 -9
  200. package/node_modules/yaml/dist/nodes/Node.d.ts +5 -18
  201. package/node_modules/yaml/dist/nodes/Node.js +25 -51
  202. package/node_modules/yaml/dist/nodes/Pair.d.ts +2 -2
  203. package/node_modules/yaml/dist/nodes/Pair.js +4 -4
  204. package/node_modules/yaml/dist/nodes/Scalar.js +2 -1
  205. package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +7 -1
  206. package/node_modules/yaml/dist/nodes/YAMLMap.js +37 -9
  207. package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +3 -1
  208. package/node_modules/yaml/dist/nodes/YAMLSeq.js +21 -5
  209. package/node_modules/yaml/dist/nodes/addPairToJSMap.js +7 -7
  210. package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
  211. package/node_modules/yaml/dist/nodes/identity.js +53 -0
  212. package/node_modules/yaml/dist/nodes/toJS.d.ts +2 -5
  213. package/node_modules/yaml/dist/nodes/toJS.js +2 -2
  214. package/node_modules/yaml/dist/public-api.d.ts +3 -3
  215. package/node_modules/yaml/dist/schema/Schema.d.ts +1 -1
  216. package/node_modules/yaml/dist/schema/Schema.js +4 -4
  217. package/node_modules/yaml/dist/schema/common/map.js +4 -29
  218. package/node_modules/yaml/dist/schema/common/seq.js +4 -20
  219. package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -1
  220. package/node_modules/yaml/dist/schema/json/schema.d.ts +1 -1
  221. package/node_modules/yaml/dist/schema/tags.d.ts +1 -1
  222. package/node_modules/yaml/dist/schema/types.d.ts +11 -3
  223. package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +4 -1
  224. package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +11 -10
  225. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +1 -1
  226. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +5 -5
  227. package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -1
  228. package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +3 -1
  229. package/node_modules/yaml/dist/schema/yaml-1.1/set.js +17 -16
  230. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +1 -1
  231. package/node_modules/yaml/dist/stringify/stringify.js +8 -8
  232. package/node_modules/yaml/dist/stringify/stringifyCollection.js +8 -8
  233. package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -3
  234. package/node_modules/yaml/dist/stringify/stringifyDocument.js +2 -2
  235. package/node_modules/yaml/dist/stringify/stringifyPair.js +9 -9
  236. package/node_modules/yaml/dist/stringify/stringifyString.js +10 -1
  237. package/node_modules/yaml/dist/test-events.js +8 -8
  238. package/node_modules/yaml/dist/util.d.ts +4 -1
  239. package/node_modules/yaml/dist/util.js +4 -0
  240. package/node_modules/yaml/dist/visit.js +18 -18
  241. package/node_modules/yaml/package.json +8 -6
  242. package/package.json +3 -3
  243. package/node_modules/yaml/util.d.ts +0 -3
package/lib/web/react.js CHANGED
@@ -37,7 +37,7 @@ class ReactProject extends javascript_1.NodeProject {
37
37
  }
38
38
  }
39
39
  _a = JSII_RTTI_SYMBOL_1;
40
- ReactProject[_a] = { fqn: "projen.web.ReactProject", version: "0.71.67" };
40
+ ReactProject[_a] = { fqn: "projen.web.ReactProject", version: "0.71.69" };
41
41
  exports.ReactProject = ReactProject;
42
42
  /**
43
43
  * React project with TypeScript.
@@ -106,7 +106,7 @@ class ReactTypeScriptProject extends typescript_1.TypeScriptAppProject {
106
106
  }
107
107
  }
108
108
  _b = JSII_RTTI_SYMBOL_1;
109
- ReactTypeScriptProject[_b] = { fqn: "projen.web.ReactTypeScriptProject", version: "0.71.67" };
109
+ ReactTypeScriptProject[_b] = { fqn: "projen.web.ReactTypeScriptProject", version: "0.71.69" };
110
110
  exports.ReactTypeScriptProject = ReactTypeScriptProject;
111
111
  class ReactComponent extends component_1.Component {
112
112
  constructor(project, options) {
@@ -166,7 +166,7 @@ class ReactComponent extends component_1.Component {
166
166
  }
167
167
  }
168
168
  _c = JSII_RTTI_SYMBOL_1;
169
- ReactComponent[_c] = { fqn: "projen.web.ReactComponent", version: "0.71.67" };
169
+ ReactComponent[_c] = { fqn: "projen.web.ReactComponent", version: "0.71.69" };
170
170
  exports.ReactComponent = ReactComponent;
171
171
  class ReactSampleCode extends component_1.Component {
172
172
  constructor(project, options) {
@@ -356,6 +356,6 @@ class ReactTypeDef extends file_1.FileBase {
356
356
  }
357
357
  }
358
358
  _d = JSII_RTTI_SYMBOL_1;
359
- ReactTypeDef[_d] = { fqn: "projen.web.ReactTypeDef", version: "0.71.67" };
359
+ ReactTypeDef[_d] = { fqn: "projen.web.ReactTypeDef", version: "0.71.69" };
360
360
  exports.ReactTypeDef = ReactTypeDef;
361
361
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2ViL3JlYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDRDQUF5QztBQUN6QyxrQ0FBK0Q7QUFDL0QsOENBS3VCO0FBQ3ZCLGdEQUEyQztBQUMzQyxnREFBNEM7QUFDNUMsOENBQStFO0FBQy9FLGtDQUFvQztBQTBEcEM7Ozs7R0FJRztBQUNILE1BQWEsWUFBYSxTQUFRLHdCQUFXO0lBTzNDLFlBQVksT0FBNEI7UUFDdEMsS0FBSyxDQUFDO1lBQ0osSUFBSSxFQUFFLEtBQUs7WUFDWCxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDO1FBRXRDLElBQUksY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRXhFLDZGQUE2RjtRQUM3RixJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO1lBQzlCLElBQUksZUFBZSxDQUFDLElBQUksRUFBRTtnQkFDeEIsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ3BCLENBQUMsQ0FBQztZQUNILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO2dCQUM1QixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQzthQUN0RSxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Ozs7QUEzQlUsb0NBQVk7QUE4QnpCOzs7O0dBSUc7QUFDSCxNQUFhLHNCQUF1QixTQUFRLGlDQUFvQjtJQU05RCxZQUFZLE9BQXNDO1FBQ2hELE1BQU0s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QUksQ0FBQztnQkFDOUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNoQyxDQUFDLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BFLENBQUMsYUFBYSxHQUFHLGVBQWUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQzNEO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBT0Q7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxlQUFRO0lBQ3hDLFlBQ0UsT0FBK0IsRUFDL0IsUUFBZ0IsRUFDaEIsVUFBK0IsRUFBRTtRQUVqQyxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRVMsaUJBQWlCLENBQUMsQ0FBWTtRQUN0QyxPQUFPLENBQUMseUNBQXlDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7OztBQVhVLG9DQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgRmlsZUJhc2UsIEZpbGVCYXNlT3B0aW9ucywgSVJlc29sdmVyIH0gZnJvbSBcIi4uL2ZpbGVcIjtcbmltcG9ydCB7XG4gIE5vZGVQcm9qZWN0LFxuICBOb2RlUHJvamVjdE9wdGlvbnMsXG4gIFR5cGVTY3JpcHRKc3hNb2RlLFxuICBUeXBlU2NyaXB0TW9kdWxlUmVzb2x1dGlvbixcbn0gZnJvbSBcIi4uL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IFNhbXBsZURpciB9IGZyb20gXCIuLi9zYW1wbGUtZmlsZVwiO1xuaW1wb3J0IHsgU291cmNlQ29kZSB9IGZyb20gXCIuLi9zb3VyY2UtY29kZVwiO1xuaW1wb3J0IHsgVHlwZVNjcmlwdEFwcFByb2plY3QsIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gXCIuLi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tIFwiLi4vdXRpbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0UmV3aXJlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBSZXdpcmUgd2VicGFjayBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBVc2UgdGhpcyBwcm9wZXJ0eSB0byBvdmVycmlkZSB3ZWJwYWNrIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBwcm92aWRlZFxuICAgKiBieSBjcmVhdGUtcmVhY3QtYXBwLCB3aXRob3V0IG5lZWRpbmcgdG8gZWplY3QuXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgd2lsbCBjcmVhdGUgYSBgY29uZmlnLW92ZXJyaWRlcy5qc2AgZmlsZSBpbiB5b3VyIHJvb3QgZGlyZWN0b3J5LFxuICAgKiB3aGljaCB3aWxsIGNvbnRhaW4gdGhlIGRlc2lyZWQgcmV3aXJpbmcgY29kZS5cbiAgICpcbiAgICogVG8gKipvdmVycmlkZSoqIHRoZSBjb25maWd1cmF0aW9uLCB5b3UgY2FuIHByb3ZpZGUgc2ltcGxlIGtleSB2YWx1ZSBwYWlycy5cbiAgICogS2V5cyB0YWtlIHRoZSBmb3JtIG9mIGpzIGNvZGUgZGlyZWN0aXZlcyB0aGF0IHRyYXZlcnNlIHRvIHRoZSBkZXNpcmVkIHByb3BlcnR5LlxuICAgKiBWYWx1ZXMgc2hvdWxkIGJlIEpTT04gc2VyaWFsaXphYmxlIG9iamVjdHMuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbmZpZzpcbiAgICpcbiAgICogYGBganNvblxuICAgKiByZXdpcmU6IHsgXCJtb2R1bGUudW5rbm93bkNvbnRleHRDcml0aWNhbFwiOiBmYWxzZSB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBXaWxsIHRyYW5zbGF0ZSB0byB0aGUgZm9sbG93aW5nIGBjb25maWctb3ZlcnJpZGVzLmpzYCBmaWxlOlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG92ZXJyaWRlKGNvbmZpZywgZW52KSB7XG4gICAqICAgY29uZmlnLm1vZHVsZS51bmtub3duQ29udGV4dENyaXRpY2FsID0gZmFsc2U7XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcmV3aXJlZCBjb25maWcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93ZWJwYWNrLmpzLm9yZy9jb25maWd1cmF0aW9uL1xuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aW1hcm5leS9yZWFjdC1hcHAtcmV3aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmV3aXJlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9uc1xuICBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyxcbiAgICBSZWFjdFJld2lyZU9wdGlvbnMge31cblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdFByb2plY3RPcHRpb25zXG4gIGV4dGVuZHMgTm9kZVByb2plY3RPcHRpb25zLFxuICAgIFJlYWN0UmV3aXJlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTb3VyY2UgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcInNyY1wiXG4gICAqL1xuICByZWFkb25seSBzcmNkaXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBvbmUtdGltZSBzYW1wbGUgaW4gYHNyYy9gIGFuZCBgcHVibGljL2AgaWYgdGhlcmUgYXJlIG5vIGZpbGVzIHRoZXJlLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzYW1wbGVDb2RlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZWFjdCBwcm9qZWN0IHdpdGhvdXQgVHlwZVNjcmlwdC5cbiAqXG4gKiBAcGppZCByZWFjdFxuICovXG5leHBvcnQgY2xhc3MgUmVhY3RQcm9qZWN0IGV4dGVuZHMgTm9kZVByb2plY3Qge1xuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBzb3VyY2UgZmlsZXMgcmVzaWRlLlxuICAgKiBAZGVmYXVsdCBcInNyY1wiXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUmVhY3RQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIGplc3Q6IGZhbHNlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuc3JjZGlyID0gb3B0aW9ucy5zcmNkaXIgPz8gXCJzcmNcIjtcblxuICAgIG5ldyBSZWFjdENvbXBvbmVudCh0aGlzLCB7IHR5cGVzY3JpcHQ6IGZhbHNlLCByZXdpcmU6IG9wdGlvbnMucmV3aXJlIH0pO1xuXG4gICAgLy8gZ2VuZXJhdGUgc2FtcGxlIGNvZGUgaW4gYHNyY2AgYW5kIGBwdWJsaWNgIGlmIHRoZXNlIGRpcmVjdG9yaWVzIGFyZSBlbXB0eSBvciBub24tZXhpc3RlbnQuXG4gICAgaWYgKG9wdGlvbnMuc2FtcGxlQ29kZSA/PyB0cnVlKSB7XG4gICAgICBuZXcgUmVhY3RTYW1wbGVDb2RlKHRoaXMsIHtcbiAgICAgICAgZmlsZUV4dDogXCJqc3hcIixcbiAgICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICAgIH0pO1xuICAgICAgbmV3IFNhbXBsZURpcih0aGlzLCBcInB1YmxpY1wiLCB7XG4gICAgICAgIHNvdXJjZURpcjogcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiYXNzZXRzXCIsIFwid2ViXCIsIFwicmVhY3RcIiksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFjdCBwcm9qZWN0IHdpdGggVHlwZVNjcmlwdC5cbiAqXG4gKiBAcGppZCByZWFjdC10c1xuICovXG5leHBvcnQgY2xhc3MgUmVhY3RUeXBlU2NyaXB0UHJvamVjdCBleHRlbmRzIFR5cGVTY3JpcHRBcHBQcm9qZWN0IHtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggc291cmNlIGZpbGVzIHJlc2lkZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzcmNkaXI6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBSZWFjdFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucykge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgc3JjZGlyOiBcInNyY1wiLFxuICAgICAgZXNsaW50OiB0cnVlLFxuICAgICAgamVzdDogZmFsc2UsXG4gICAgICB0c2NvbmZpZzoge1xuICAgICAgICBpbmNsdWRlOiBbXCJzcmNcIl0sXG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIHRhcmdldDogXCJlczVcIixcbiAgICAgICAgICBsaWI6IFtcImRvbVwiLCBcImRvbS5pdGVyYWJsZVwiLCBcImVzbmV4dFwiXSxcbiAgICAgICAgICBhbGxvd0pzOiB0cnVlLFxuICAgICAgICAgIHNraXBMaWJDaGVjazogdHJ1ZSxcbiAgICAgICAgICBlc01vZHVsZUludGVyb3A6IHRydWUsXG4gICAgICAgICAgYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0czogdHJ1ZSxcbiAgICAgICAgICBzdHJpY3Q6IHRydWUsXG4gICAgICAgICAgZm9yY2VDb25zaXN0ZW50Q2FzaW5nSW5GaWxlTmFtZXM6IHRydWUsXG4gICAgICAgICAgbm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2g6IHRydWUsXG4gICAgICAgICAgbW9kdWxlOiBcImNvbW1vbmpzXCIsXG4gICAgICAgICAgbW9kdWxlUmVzb2x1dGlvbjogVHlwZVNjcmlwdE1vZHVsZVJlc29sdXRpb24uTk9ERSxcbiAgICAgICAgICByZXNvbHZlSnNvbk1vZHVsZTogdHJ1ZSxcbiAgICAgICAgICBpc29sYXRlZE1vZHVsZXM6IHRydWUsXG4gICAgICAgICAgbm9FbWl0OiB0cnVlLFxuICAgICAgICAgIGpzeDogVHlwZVNjcmlwdEpzeE1vZGUuUkVBQ1RfSlNYLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHR5cGVzY3JpcHRWZXJzaW9uOiBvcHRpb25zLnR5cGVzY3JpcHRWZXJzaW9uID8/IFwiXjQuMC4zXCIsXG4gICAgfTtcblxuICAgIC8vIG5ldmVyIGdlbmVyYXRlIGRlZmF1bHQgVHlwZVNjcmlwdCBzYW1wbGUgY29kZSwgc2luY2UgdGhpcyBjbGFzcyBwcm92aWRlcyBpdHMgb3duXG4gICAgc3VwZXIoXG4gICAgICBkZWVwTWVyZ2UoW1xuICAgICAgICBkZWZhdWx0T3B0aW9ucyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgeyBzYW1wbGVDb2RlOiBmYWxzZSB9LFxuICAgICAgXSkgYXMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zXG4gICAgKTtcblxuICAgIHRoaXMuc3JjZGlyID0gb3B0aW9ucy5zcmNkaXIgPz8gXCJzcmNcIjtcblxuICAgIHRoaXMuZXNsaW50Py5hZGRSdWxlcyh7XG4gICAgICBcImltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1wiOiBbXG4gICAgICAgIFwiZXJyb3JcIixcbiAgICAgICAge1xuICAgICAgICAgIGRldkRlcGVuZGVuY2llczogW1wiKiovc3JjLyoqLyoudGVzdC50c3hcIiwgXCIqKi9zcmMvc2V0dXBUZXN0cy50c1wiXSxcbiAgICAgICAgICBvcHRpb25hbERlcGVuZGVuY2llczogZmFsc2UsXG4gICAgICAgICAgcGVlckRlcGVuZGVuY2llczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBuZXcgUmVhY3RDb21wb25lbnQodGhpcywgeyB0eXBlc2NyaXB0OiB0cnVlLCByZXdpcmU6IG9wdGlvbnMucmV3aXJlIH0pO1xuXG4gICAgLy8gZ2VuZXJhdGUgc2FtcGxlIGNvZGUgaW4gYHNyY2AgYW5kIGBwdWJsaWNgIGlmIHRoZXNlIGRpcmVjdG9yaWVzIGFyZSBlbXB0eSBvciBub24tZXhpc3RlbnQuXG4gICAgaWYgKG9wdGlvbnMuc2FtcGxlQ29kZSA/PyB0cnVlKSB7XG4gICAgICBuZXcgUmVhY3RTYW1wbGVDb2RlKHRoaXMsIHtcbiAgICAgICAgZmlsZUV4dDogXCJ0c3hcIixcbiAgICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICAgIH0pO1xuICAgICAgbmV3IFNhbXBsZURpcih0aGlzLCBcInB1YmxpY1wiLCB7XG4gICAgICAgIHNvdXJjZURpcjogcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiYXNzZXRzXCIsIFwid2ViXCIsIFwicmVhY3RcIiksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnBhY2thZ2UuYWRkUGFja2FnZVJlc29sdXRpb25zKFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvaXNzdWVzLzYyMzAwXG4gICAgICBcIkB0eXBlcy9leHByZXNzQDQuMTcuMTNcIixcbiAgICAgIFwiQHR5cGVzL2V4cHJlc3Mtc2VydmUtc3RhdGljLWNvcmVANC4xNy4zMFwiXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0Q29tcG9uZW50T3B0aW9ucyBleHRlbmRzIFJlYWN0UmV3aXJlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFwcGx5IG9wdGlvbnMgc3BlY2lmaWMgZm9yIFR5cGVTY3JpcHQgUmVhY3QgcHJvamVjdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB0eXBlc2NyaXB0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFJlYWN0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0eXBlc2NyaXB0OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IE5vZGVQcm9qZWN0LCBvcHRpb25zOiBSZWFjdENvbXBvbmVudE9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMudHlwZXNjcmlwdCA9IG9wdGlvbnMudHlwZXNjcmlwdCA/PyBmYWxzZTtcblxuICAgIC8vIE5vIGNvbXBpbGUgZm9yIHJlYWN0IGFwcFxuICAgIHByb2plY3QuY29tcGlsZVRhc2sucmVzZXQoKTtcblxuICAgIHByb2plY3QuYWRkRGVwcyhcInJlYWN0XCIsIFwicmVhY3QtZG9tXCIsIFwicmVhY3Qtc2NyaXB0c0BeNVwiLCBcIndlYi12aXRhbHNcIik7XG4gICAgcHJvamVjdC5hZGREZXZEZXBzKFxuICAgICAgXCJAdGVzdGluZy1saWJyYXJ5L2plc3QtZG9tXCIsXG4gICAgICBcIkB0ZXN0aW5nLWxpYnJhcnkvcmVhY3RcIixcbiAgICAgIFwiQHRlc3RpbmctbGlicmFyeS91c2VyLWV2ZW50XCJcbiAgICApO1xuICAgIGlmICh0aGlzLnR5cGVzY3JpcHQpIHtcbiAgICAgIHByb2plY3QuYWRkRGV2RGVwcyhcIkB0eXBlcy9qZXN0XCIsIFwiQHR5cGVzL3JlYWN0XCIsIFwiQHR5cGVzL3JlYWN0LWRvbVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXdpcmUgPSBvcHRpb25zLnJld2lyZSA/PyBmYWxzZTtcblxuICAgIGlmIChyZXdpcmUpIHtcbiAgICAgIGNvbnN0IG92ZXJyaWRlc1BhdGggPSBcIi5wcm9qZW4vcmVhY3QtY29uZmlnLW92ZXJyaWRlcy5qc1wiO1xuICAgICAgcHJvamVjdC5hZGREZXZEZXBzKFwicmVhY3QtYXBwLXJld2lyZWRcIik7XG4gICAgICBwcm9qZWN0LmFkZEZpZWxkcyh7IFwiY29uZmlnLW92ZXJyaWRlcy1wYXRoXCI6IG92ZXJyaWRlc1BhdGggfSk7XG5cbiAgICAgIGNvbnN0IGNvbmZpZ092ZXJyaWRlcyA9IG5ldyBTb3VyY2VDb2RlKHRoaXMucHJvamVjdCwgb3ZlcnJpZGVzUGF0aCk7XG4gICAgICBpZiAoIWNvbmZpZ092ZXJyaWRlcy5tYXJrZXIpIHtcbiAgICAgICAgY29uZmlnT3ZlcnJpZGVzLmxpbmUoYC8vICR7Y29uZmlnT3ZlcnJpZGVzLm1hcmtlcn1gKTtcbiAgICAgIH1cbiAgICAgIGNvbmZpZ092ZXJyaWRlcy5saW5lKFwiLyoqXCIpO1xuICAgICAgY29uZmlnT3ZlcnJpZGVzLmxpbmUoXG4gICAgICAgIFwiICogT3ZlcnJpZGUgQ1JBIGNvbmZpZ3VyYXRpb24gd2l0aG91dCBuZWVkaW5nIHRvIGVqZWN0LlwiXG4gICAgICApO1xuICAgICAgY29uZmlnT3ZlcnJpZGVzLmxpbmUoXCIgKlwiKTtcbiAgICAgIGNvbmZpZ092ZXJyaWRlcy5saW5lKFxuICAgICAgICBcIiAqIEBzZWUgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvcmVhY3QtYXBwLXJld2lyZWRcIlxuICAgICAgKTtcbiAgICAgIGNvbmZpZ092ZXJyaWRlcy5saW5lKFwiICovXCIpO1xuICAgICAgY29uZmlnT3ZlcnJpZGVzLm9wZW4oXCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG92ZXJyaWRlKGNvbmZpZywgZW52KSB7XCIpO1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmV3aXJlKSkge1xuICAgICAgICBjb25maWdPdmVycmlkZXMubGluZShgY29uZmlnLiR7a2V5fSA9ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfTtgKTtcbiAgICAgIH1cbiAgICAgIGNvbmZpZ092ZXJyaWRlcy5saW5lKFwicmV0dXJuIGNvbmZpZztcIik7XG4gICAgICBjb25maWdPdmVycmlkZXMuY2xvc2UoXCJ9O1wiKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWFjdFNjcmlwdHMgPSByZXdpcmUgPyBcInJlYWN0LWFwcC1yZXdpcmVkXCIgOiBcInJlYWN0LXNjcmlwdHNcIjtcblxuICAgIC8vIENyZWF0ZSBSZWFjdCBBcHAgQ0xJIGNvbW1hbmRzLCBzZWU6IGh0dHBzOi8vY3JlYXRlLXJlYWN0LWFwcC5kZXYvZG9jcy9hdmFpbGFibGUtc2NyaXB0cy9cbiAgICBwcm9qZWN0LmFkZFRhc2soXCJkZXZcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiU3RhcnRzIHRoZSByZWFjdCBhcHBsaWNhdGlvblwiLFxuICAgICAgZXhlYzogYCR7cmVhY3RTY3JpcHRzfSBzdGFydGAsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LmNvbXBpbGVUYXNrLmV4ZWMoYCR7cmVhY3RTY3JpcHRzfSBidWlsZGApO1xuXG4gICAgcHJvamVjdC50ZXN0VGFzay5leGVjKGAke3JlYWN0U2NyaXB0c30gdGVzdCAtLXdhdGNoQWxsPWZhbHNlYCk7XG5cbiAgICBjb25zdCB0ZXN0V2F0Y2ggPSBwcm9qZWN0LnRhc2tzLnRyeUZpbmQoXCJ0ZXN0OndhdGNoXCIpO1xuICAgIHRlc3RXYXRjaD8ucmVzZXQoYCR7cmVhY3RTY3JpcHRzfSB0ZXN0YCk7XG5cbiAgICBwcm9qZWN0Lm5wbWlnbm9yZT8uZXhjbHVkZShcIiMgQnVpbGRcIiwgXCIvYnVpbGQvXCIpO1xuICAgIHByb2plY3QuZ2l0aWdub3JlLmV4Y2x1ZGUoXCIjIEJ1aWxkXCIsIFwiL2J1aWxkL1wiKTtcblxuICAgIHByb2plY3QucGFja2FnZS5hZGRGaWVsZChcImVzbGludENvbmZpZ1wiLCB7XG4gICAgICBleHRlbmRzOiBbXCJyZWFjdC1hcHBcIiwgXCJyZWFjdC1hcHAvamVzdFwiXSxcbiAgICB9KTtcblxuICAgIHByb2plY3QucGFja2FnZS5hZGRGaWVsZChcImJyb3dzZXJzbGlzdFwiLCB7XG4gICAgICBwcm9kdWN0aW9uOiBbXCI+MC4yJVwiLCBcIm5vdCBkZWFkXCIsIFwibm90IG9wX21pbmkgYWxsXCJdLFxuICAgICAgZGV2ZWxvcG1lbnQ6IFtcbiAgICAgICAgXCJsYXN0IDEgY2hyb21lIHZlcnNpb25cIixcbiAgICAgICAgXCJsYXN0IDEgZmlyZWZveCB2ZXJzaW9uXCIsXG4gICAgICAgIFwibGFzdCAxIHNhZmFyaSB2ZXJzaW9uXCIsXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG5cbmludGVyZmFjZSBSZWFjdFNhbXBsZUNvZGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbGUgZXh0ZW5zaW9uIGZvciBzYW1wbGUgamF2YXNjcmlwdCBjb2RlIHRvIGJlIHNhdmVkIGFzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImpzeFwiXG4gICAqL1xuICByZWFkb25seSBmaWxlRXh0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIFJlYWN0IGpzeCBmaWxlcyBhcmUgZGVjbGFyZWQuXG4gICAqL1xuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbn1cblxuY2xhc3MgUmVhY3RTYW1wbGVDb2RlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlRXh0OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM6IFJlYWN0U2FtcGxlQ29kZU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuZmlsZUV4dCA9IG9wdGlvbnMuZmlsZUV4dCA/PyBcImpzeFwiO1xuICAgIHRoaXMuc3JjZGlyID0gb3B0aW9ucy5zcmNkaXI7XG5cbiAgICBjb25zdCBsb2dvU3ZnID0gW1xuICAgICAgJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgODQxLjkgNTk1LjNcIj4nLFxuICAgICAgJyAgICA8ZyBmaWxsPVwiIzYxREFGQlwiPicsXG4gICAgICAnICAgICAgICA8cGF0aCBkPVwiTTY2Ni4zIDI5Ni41YzAtMzIuNS00MC43LTYzLjMtMTAzLjEtODIuNCAxNC40LTYzLjYgOC0xMTQuMi0yMC4yLTEzMC40LTYuNS0zLjgtMTQuMS01LjYtMjIuNC01LjZ2MjIuM2M0LjYgMCA4LjMuOSAxMS40IDIuNiAxMy42IDcuOCAxOS41IDM3LjUgMTQuOSA3NS43LTEuMSA5LjQtMi45IDE5LjMtNS4xIDI5LjQtMTkuNi00LjgtNDEtOC41LTYzLjUtMTAuOS0xMy41LTE4LjUtMjcuNS0zNS4zLTQxLjYtNTAgMzIuNi0zMC4zIDYzLjItNDYuOSA4NC00Ni45Vjc4Yy0yNy41IDAtNjMuNSAxOS42LTk5LjkgNTMuNi0zNi40LTMzLjgtNzIuNC01My4yLTk5LjktNTMuMnYyMi4zYzIwLjcgMCA1MS40IDE2LjUgODQgNDYuNi0xNCAxNC43LTI4IDMxLjQtNDEuMyA0OS45LTIyLjYgMi40LTQ0IDYuMS02My42IDExLTIuMy0xMC00LTE5LjctNS4yLTI5LTQuNy0zOC4yIDEuMS02Ny45IDE0LjYtNzUuOCAzLTEuOCA2LjktMi42IDExLjUtMi42Vjc4LjVjLTguNCAwLTE2IDEuOC0yMi42IDUuNi0yOC4xIDE2LjItMzQuNCA2Ni43LTE5LjkgMTMwLjEtNjIuMiAxOS4yLTEwMi43IDQ5LjktMTAyLjcgODIuMyAwIDMyLjUgNDAuNyA2My4zIDEwMy4xIDgyLjQtMTQuNCA2My42LTggMTE0LjIgMjAuMiAxMzAuNCA2LjUgMy44IDE0LjEgNS42IDIyLjUgNS42IDI3LjUgMCA2My41LTE5LjYgOTkuOS01My42IDM2LjQgMzMuOCA3Mi40IDUzLjIgOTkuOSA1My4yIDguNCAwIDE2LTEuOCAyMi42LTUuNiAyOC4xLTE2LjIgMzQuNC02Ni43IDE5LjktMTMwLjEgNjItMTkuMSAxMDIuNS00OS45IDEwMi41LTgyLjN6bS0xMzAuMi02Ni43Yy0zLjcgMTIuOS04LjMgMjYuMi0xMy41IDM5LjUtNC4xLTgtOC40LTE2LTEzLjEtMjQtNC42LTgtOS41LTE1LjgtMTQuNC0yMy40IDE0LjIgMi4xIDI3LjkgNC43IDQxIDcuOXptLTQ1LjggMTA2LjVjLTcuOCAxMy41LTE1LjggMjYuMy0yNC4xIDM4LjItMTQuOSAxLjMtMzAgMi00NS4yIDItMTUuMSAwLTMwLjItLjctNDUtMS45LTguMy0xMS45LTE2LjQtMjQuNi0yNC4yLTM4LTcuNi0xMy4xLTE0LjUtMjYuNC0yMC44LTM5LjggNi4yLTEzLjQgMTMuMi0yNi44IDIwLjctMzkuOSA3LjgtMTMuNSAxNS44LTI2LjMgMjQuMS0zOC4yIDE0LjktMS4zIDMwLTIgNDUuMi0yIDE1LjEgMCAzMC4yLjcgNDUgMS45IDguMyAxMS45IDE2LjQgMjQuNiAyNC4yIDM4IDcuNiAxMy4xIDE0LjUgMjYuNCAyMC44IDM5LjgtNi4zIDEzLjQtMTMuMiAyNi44LTIwLjcgMzkuOXptMzIuMy0xM2M1LjQgMTMuNCAxMCAyNi44IDEzLjggMzkuOC0xMy4xIDMuMi0yNi45IDUuOS00MS4yIDggNC45LTcuNyA5LjgtMTUuNiAxNC40LTIzLjcgNC42LTggOC45LTE2LjEgMTMtMjQuMXpNNDIxLjIgNDMwYy05LjMtOS42LTE4LjYtMjAuMy0yNy44LTMyIDkgLjQgMTguMi43IDI3LjUuNyA5LjQgMCAxOC43LS4yIDI3LjgtLjctOSAxMS43LTE4LjMgMjIuNC0yNy41IDMyem0tNzQuNC01OC45Yy0xNC4yLTIuMS0yNy45LTQuNy00MS03LjkgMy43LTEyLjkgOC4zLTI2LjIgMTMuNS0zOS41IDQuMSA4IDguNCAxNiAxMy4xIDI0IDQuNyA4IDkuNSAxNS44IDE0LjQgMjMuNHpNNDIwLjcgMTYzYzkuMyA5LjYgMTguNiAyMC4zIDI3LjggMzItOS0uNC0xOC4yLS43LTI3LjUtLjctOS40IDAtMTguNy4yLTI3LjguNyA5LTExLjcgMTguMy0yMi40IDI3LjUtMzJ6bS03NCA1OC45Yy00LjkgNy43LTkuOCAxNS42LTE0LjQgMjMuNy00LjYgOC04LjkgMTYtMTMgMjQtNS40LTEzLjQtMTAtMjYuOC0xMy44LTM5LjggMTMuMS0zLjEgMjYuOS01LjggNDEuMi03Ljl6bS05MC41IDEyNS4yYy0zNS40LTE1LjEtNTguMy0zNC45LTU4LjMtNTAuNiAwLTE1LjcgMjIuOS0zNS42IDU4LjMtNTAuNiA4LjYtMy43IDE4LTcgMjcuNy0xMC4xIDUuNyAxOS42IDEzLjIgNDAgMjIuNSA2MC45LTkuMiAyMC44LTE2LjYgNDEuMS0yMi4yIDYwLjYtOS45LTMuMS0xOS4zLTYuNS0yOC0xMC4yek0zMTAgNDkwYy0xMy42LTcuOC0xOS41LTM3LjUtMTQuOS03NS43IDEuMS05LjQgMi45LTE5LjMgNS4xLTI5LjQgMTkuNiA0LjggNDEgOC41IDYzLjUgMTAuOSAxMy41IDE4LjUgMjcuNSAzNS4zIDQxLjYgNTAtMzIuNiAzMC4zLTYzLjIgNDYuOS04NCA0Ni45LTQuNS0uMS04LjMtMS0xMS4zLTIuN3ptMjM3LjItNzYuMmM0LjcgMzguMi0xLjEgNjcuOS0xNC42IDc1LjgtMyAxLjgtNi45IDIuNi0xMS41IDIuNi0yMC43IDAtNTEuNC0xNi41LTg0LTQ2LjYgMTQtMTQuNyAyOC0zMS40IDQxLjMtNDkuOSAyMi42LTIuNCA0NC02LjEgNjMuNi0xMSAyLjMgMTAuMSA0LjEgMTkuOCA1LjIgMjkuMXptMzguNS02Ni43Yy04LjYgMy43LTE4IDctMjcuNyAxMC4xLTUuNy0xOS42LTEzLjItNDAtMjIuNS02MC45IDkuMi0yMC44IDE2LjYtNDEuMSAyMi4yLTYwLjYgOS45IDMuMSAxOS4zIDYuNSAyOC4xIDEwLjIgMzUuNCAxNS4xIDU4LjMgMzQuOSA1OC4zIDUwLjYtLjEgMTUuNy0yMyAzNS42LTU4LjQgNTAuNnpNMzIwLjggNzguNHpcIi8+JyxcbiAgICAgICcgICAgICAgIDxjaXJjbGUgY3g9XCI0MjAuOVwiIGN5PVwiMjk2LjVcIiByPVwiNDUuN1wiLz4nLFxuICAgICAgJyAgICAgICAgPHBhdGggZD1cIk01MjAuNSA3OC4xelwiLz4nLFxuICAgICAgXCIgICAgPC9nPlwiLFxuICAgICAgXCI8L3N2Zz5cIixcbiAgICAgIFwiXCIsXG4gICAgXTtcblxuICAgIGNvbnN0IGFwcEpzeCA9IFtcbiAgICAgIFwiaW1wb3J0IGxvZ28gZnJvbSAnLi9sb2dvLnN2Zyc7XCIsXG4gICAgICBcImltcG9ydCAnLi9BcHAuY3NzJ1wiLFxuICAgICAgXCJcIixcbiAgICAgIFwiZnVuY3Rpb24gQXBwKCkge1wiLFxuICAgICAgXCIgIHJldHVybiAoXCIsXG4gICAgICAnICAgPGRpdiBjbGFzc05hbWU9XCJBcHBcIj4nLFxuICAgICAgJyAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwiQXBwLWhlYWRlclwiPicsXG4gICAgICAnICAgICAgICA8aW1nIHNyYz17bG9nb30gY2xhc3NOYW1lPVwiQXBwLWxvZ29cIiBhbHQ9XCJsb2dvXCIgLz4nLFxuICAgICAgXCIgICAgICAgIDxwPlwiLFxuICAgICAgYCAgICAgICAgICBFZGl0IDxjb2RlPnNyYy9BcHAuJHt0aGlzLmZpbGVFeHR9PC9jb2RlPiBhbmQgc2F2ZSB0byByZWxvYWQuYCxcbiAgICAgIFwiICAgICAgICA8L3A+XCIsXG4gICAgICAnICAgICAgICA8YSBjbGFzc05hbWU9XCJBcHAtbGlua1wiJyxcbiAgICAgICcgICAgICAgICAgaHJlZj1cImh0dHBzOi8vcmVhY3Rqcy5vcmdcIicsXG4gICAgICAnICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiJyxcbiAgICAgICcgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiJyxcbiAgICAgIFwiICAgICAgICA+XCIsXG4gICAgICBcIiAgICAgICAgICBMZWFybiBSZWFjdFwiLFxuICAgICAgXCIgICAgICAgIDwvYT5cIixcbiAgICAgIFwiICAgICAgPC9oZWFkZXI+XCIsXG4gICAgICBcIiAgICA8L2Rpdj5cIixcbiAgICAgIFwiICApO1wiLFxuICAgICAgXCJ9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJleHBvcnQgZGVmYXVsdCBBcHA7XCIsXG4gICAgICBcIlwiLFxuICAgIF07XG5cbiAgICBjb25zdCBhcHBDc3MgPSBbXG4gICAgICBcIi5BcHAge1wiLFxuICAgICAgXCIgIHRleHQtYWxpZ246IGNlbnRlcjtcIixcbiAgICAgIFwifVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiLkFwcC1sb2dvIHtcIixcbiAgICAgIFwiICBoZWlnaHQ6IDQwdm1pbjtcIixcbiAgICAgIFwiICBwb2ludGVyLWV2ZW50czogbm9uZTtcIixcbiAgICAgIFwifVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiBuby1wcmVmZXJlbmNlKSB7XCIsXG4gICAgICBcIiAgLkFwcC1sb2dvIHtcIixcbiAgICAgIFwiICAgIGFuaW1hdGlvbjogQXBwLWxvZ28tc3BpbiBpbmZpbml0ZSAyMHMgbGluZWFyO1wiLFxuICAgICAgXCIgIH1cIixcbiAgICAgIFwifVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiLkFwcC1oZWFkZXIge1wiLFxuICAgICAgXCIgIGJhY2tncm91bmQtY29sb3I6ICMyODJjMzQ7XCIsXG4gICAgICBcIiAgbWluLWhlaWdodDogMTAwdmg7XCIsXG4gICAgICBcIiAgZGlzcGxheTogZmxleDtcIixcbiAgICAgIFwiICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1wiLFxuICAgICAgXCIgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XCIsXG4gICAgICBcIiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCIsXG4gICAgICBcIiAgZm9udC1zaXplOiBjYWxjKDEwcHggKyAydm1pbik7XCIsXG4gICAgICBcIiAgY29sb3I6IHdoaXRlO1wiLFxuICAgICAgXCJ9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIuQXBwLWxpbmsge1wiLFxuICAgICAgXCIgIGNvbG9yOiAjNjFkYWZiO1wiLFxuICAgICAgXCJ9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJAa2V5ZnJhbWVzIEFwcC1sb2dvLXNwaW4ge1wiLFxuICAgICAgXCIgIGZyb20ge1wiLFxuICAgICAgXCIgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XCIsXG4gICAgICBcIiAgfVwiLFxuICAgICAgXCIgIHRvIHtcIixcbiAgICAgIFwiICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XCIsXG4gICAgICBcIiAgfVwiLFxuICAgICAgXCJ9XCIsXG4gICAgICBcIlwiLFxuICAgIF07XG5cbiAgICBjb25zdCBhcHBUZXN0SnN4ID0gW1xuICAgICAgXCJpbXBvcnQgeyByZW5kZXIsIHNjcmVlbiB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1wiLFxuICAgICAgXCJpbXBvcnQgQXBwIGZyb20gJy4vQXBwJztcIixcbiAgICAgIFwiXCIsXG4gICAgICBcInRlc3QoJ3JlbmRlcnMgbGVhcm4gcmVhY3QgbGluaycsICgpID0+IHtcIixcbiAgICAgIFwiICByZW5kZXIoPEFwcCAvPik7XCIsXG4gICAgICBcIiAgY29uc3QgbGlua0VsZW1lbnQgPSBzY3JlZW4uZ2V0QnlUZXh0KC9sZWFybiByZWFjdC9pKTtcIixcbiAgICAgIFwiICBleHBlY3QobGlua0VsZW1lbnQpLnRvQmVJblRoZURvY3VtZW50KCk7XCIsXG4gICAgICBcIn0pO1wiLFxuICAgICAgXCJcIixcbiAgICBdO1xuXG4gICAgY29uc3QgaW5kZXhKc3ggPSBbXG4gICAgICBcImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XCIsXG4gICAgICBcImltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1wiLFxuICAgICAgXCJpbXBvcnQgJy4vaW5kZXguY3NzJztcIixcbiAgICAgIFwiaW1wb3J0IEFwcCBmcm9tICcuL0FwcCc7XCIsXG4gICAgICBcImltcG9ydCByZXBvcnRXZWJWaXRhbHMgZnJvbSAnLi9yZXBvcnRXZWJWaXRhbHMnO1wiLFxuICAgICAgXCJcIixcbiAgICAgIFwiUmVhY3RET00ucmVuZGVyKFwiLFxuICAgICAgXCIgIDxSZWFjdC5TdHJpY3RNb2RlPlwiLFxuICAgICAgXCIgICAgPEFwcCAvPlwiLFxuICAgICAgXCIgIDwvUmVhY3QuU3RyaWN0TW9kZT4sXCIsXG4gICAgICBcIiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKVwiLFxuICAgICAgXCIpO1wiLFxuICAgICAgXCJcIixcbiAgICAgIFwiLy8gSWYgeW91IHdhbnQgdG8gc3RhcnQgbWVhc3VyaW5nIHBlcmZvcm1hbmNlIGluIHlvdXIgYXBwLCBwYXNzIGEgZnVuY3Rpb25cIixcbiAgICAgIFwiLy8gdG8gbG9nIHJlc3VsdHMgKGZvciBleGFtcGxlOiByZXBvcnRXZWJWaXRhbHMoY29uc29sZS5sb2cpKVwiLFxuICAgICAgXCIvLyBvciBzZW5kIHRvIGFuIGFuYWx5dGljcyBlbmRwb2ludC4gTGVhcm4gbW9yZTogaHR0cHM6Ly9iaXQubHkvQ1JBLXZpdGFsc1wiLFxuICAgICAgXCJyZXBvcnRXZWJWaXRhbHMoKTtcIixcbiAgICAgIFwiXCIsXG4gICAgXTtcblxuICAgIGNvbnN0IGluZGV4Q3NzID0gW1xuICAgICAgXCJib2R5IHtcIixcbiAgICAgIFwiICBtYXJnaW46IDA7XCIsXG4gICAgICBcIiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ1JvYm90bycsICdPeHlnZW4nLFwiLFxuICAgICAgXCIgICAgJ1VidW50dScsICdDYW50YXJlbGwnLCAnRmlyYSBTYW5zJywgJ0Ryb2lkIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLFwiLFxuICAgICAgXCIgICAgc2Fucy1zZXJpZjtcIixcbiAgICAgIFwiICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcIixcbiAgICAgIFwiICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1wiLFxuICAgICAgXCJ9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJjb2RlIHtcIixcbiAgICAgIFwiICBmb250LWZhbWlseTogc291cmNlLWNvZGUtcHJvLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgJ0NvdXJpZXIgTmV3JyxcIixcbiAgICAgIFwiICAgIG1vbm9zcGFjZTtcIixcbiAgICAgIFwifVwiLFxuICAgICAgXCJcIixcbiAgICBdO1xuXG4gICAgY29uc3QgcmVwb3J0V2ViVml0YWxzSnMgPSBbXG4gICAgICBcImltcG9ydCB7IFJlcG9ydEhhbmRsZXIgfSBmcm9tICd3ZWItdml0YWxzJztcIixcbiAgICAgIFwiXCIsXG4gICAgICBcImNvbnN0IHJlcG9ydFdlYlZpdGFscyA9IChvblBlcmZFbnRyeT86IFJlcG9ydEhhbmRsZXIpID0+IHtcIixcbiAgICAgIFwiICBpZiAob25QZXJmRW50cnkgJiYgb25QZXJmRW50cnkgaW5zdGFuY2VvZiBGdW5jdGlvbikge1wiLFxuICAgICAgXCIgICAgaW1wb3J0KCd3ZWItdml0YWxzJykudGhlbihcIixcbiAgICAgIFwiICAgICAgKHsgZ2V0Q0xTLCBnZXRGSUQsIGdldEZDUCwgZ2V0TENQLCBnZXRUVEZCIH0pID0+IHtcIixcbiAgICAgIFwiICAgICAgICBnZXRDTFMob25QZXJmRW50cnkpO1wiLFxuICAgICAgXCIgICAgICAgIGdldEZJRChvblBlcmZFbnRyeSk7XCIsXG4gICAgICBcIiAgICAgICAgZ2V0RkNQKG9uUGVyZkVudHJ5KTtcIixcbiAgICAgIFwiICAgICAgICBnZXRMQ1Aob25QZXJmRW50cnkpO1wiLFxuICAgICAgXCIgICAgICAgIGdldFRURkIob25QZXJmRW50cnkpO1wiLFxuICAgICAgXCIgICAgICB9LFwiLFxuICAgICAgXCIgICAgICAoKSA9PiB7fVwiLFxuICAgICAgXCIgICAgKTtcIixcbiAgICAgIFwiICB9XCIsXG4gICAgICBcIn07XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJleHBvcnQgZGVmYXVsdCByZXBvcnRXZWJWaXRhbHM7XCIsXG4gICAgXTtcblxuICAgIGNvbnN0IHNldHVwVGVzdHNKcyA9IFtcbiAgICAgIFwiLy8gamVzdC1kb20gYWRkcyBjdXN0b20gamVzdCBtYXRjaGVycyBmb3IgYXNzZXJ0aW5nIG9uIERPTSBub2Rlcy5cIixcbiAgICAgIFwiLy8gYWxsb3dzIHlvdSB0byBkbyB0aGluZ3MgbGlrZTpcIixcbiAgICAgIFwiLy8gZXhwZWN0KGVsZW1lbnQpLnRvSGF2ZVRleHRDb250ZW50KC9yZWFjdC9pKVwiLFxuICAgICAgXCIvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vdGVzdGluZy1saWJyYXJ5L2plc3QtZG9tXCIsXG4gICAgICBcImltcG9ydCAnQHRlc3RpbmctbGlicmFyeS9qZXN0LWRvbSc7XCIsXG4gICAgICBcIlwiLFxuICAgIF07XG5cbiAgICBjb25zdCByZWFjdFR5cGVEZWYgPSBbJy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwicmVhY3Qtc2NyaXB0c1wiIC8+J107XG5cbiAgICAvLyBqcy90cyBub3QganN4L3RzeFxuICAgIGNvbnN0IGZpbGVFeHRXaXRob3V0WCA9IHRoaXMuZmlsZUV4dC5yZXBsYWNlKFwieFwiLCBcIlwiKTtcblxuICAgIG5ldyBTYW1wbGVEaXIocHJvamVjdCwgdGhpcy5zcmNkaXIsIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgIFwicmVhY3QtYXBwLWVudi5kLnRzXCI6IHJlYWN0VHlwZURlZi5qb2luKFwiXFxuXCIpLFxuICAgICAgICBcImxvZ28uc3ZnXCI6IGxvZ29Tdmcuam9pbihcIlxcblwiKSxcbiAgICAgICAgW1wiQXBwLlwiICsgdGhpcy5maWxlRXh0XTogYXBwSnN4LmpvaW4oXCJcXG5cIiksXG4gICAgICAgIFtcIkFwcC50ZXN0LlwiICsgdGhpcy5maWxlRXh0XTogYXBwVGVzdEpzeC5qb2luKFwiXFxuXCIpLFxuICAgICAgICBcIkFwcC5jc3NcIjogYXBwQ3NzLmpvaW4oXCJcXG5cIiksXG4gICAgICAgIFtcImluZGV4LlwiICsgdGhpcy5maWxlRXh0XTogaW5kZXhKc3guam9pbihcIlxcblwiKSxcbiAgICAgICAgXCJpbmRleC5jc3NcIjogaW5kZXhDc3Muam9pbihcIlxcblwiKSxcbiAgICAgICAgW1wicmVwb3J0V2ViVml0YWxzLlwiICsgZmlsZUV4dFdpdGhvdXRYXTogcmVwb3J0V2ViVml0YWxzSnMuam9pbihcIlxcblwiKSxcbiAgICAgICAgW1wic2V0dXBUZXN0cy5cIiArIGZpbGVFeHRXaXRob3V0WF06IHNldHVwVGVzdHNKcy5qb2luKFwiXFxuXCIpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIE5vIGxvbmdlciB1c2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0VHlwZURlZk9wdGlvbnMgZXh0ZW5kcyBGaWxlQmFzZU9wdGlvbnMge31cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBObyBsb25nZXIgdXNlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlYWN0VHlwZURlZiBleHRlbmRzIEZpbGVCYXNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvamVjdDogUmVhY3RUeXBlU2NyaXB0UHJvamVjdCxcbiAgICBmaWxlUGF0aDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFJlYWN0VHlwZURlZk9wdGlvbnMgPSB7fVxuICApIHtcbiAgICBzdXBlcihwcm9qZWN0LCBmaWxlUGF0aCwgb3B0aW9ucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUNvbnRlbnQoXzogSVJlc29sdmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gWycvLy8gPHJlZmVyZW5jZSB0eXBlcz1cInJlYWN0LXNjcmlwdHNcIiAvPiddLmpvaW4oXCJcXG5cIik7XG4gIH1cbn1cbiJdfQ==
@@ -32,6 +32,6 @@ class TailwindConfig {
32
32
  }
33
33
  }
34
34
  _a = JSII_RTTI_SYMBOL_1;
35
- TailwindConfig[_a] = { fqn: "projen.web.TailwindConfig", version: "0.71.67" };
35
+ TailwindConfig[_a] = { fqn: "projen.web.TailwindConfig", version: "0.71.69" };
36
36
  exports.TailwindConfig = TailwindConfig;
37
37
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbHdpbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2ViL3RhaWx3aW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esa0NBQW1DO0FBU25DOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLGNBQWM7SUFJekIsWUFBWSxPQUFvQixFQUFFLE9BQStCO1FBQy9ELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxFQUFFLFFBQVEsSUFBSSxzQkFBc0IsQ0FBQztRQUU1RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksZUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQy9DLEdBQUcsRUFBRTtnQkFDSCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxRQUFRLEVBQUUsS0FBSztnQkFDZixLQUFLLEVBQUU7b0JBQ0wsTUFBTSxFQUFFLEVBQUU7aUJBQ1g7Z0JBQ0QsUUFBUSxFQUFFO29CQUNSLE1BQU0sRUFBRSxFQUFFO2lCQUNYO2dCQUNELE9BQU8sRUFBRSxFQUFFO2FBQ1o7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Ozs7QUF0QlUsd0NBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlUHJvamVjdCB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBKc29uRmlsZSB9IGZyb20gXCIuLi9qc29uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFpbHdpbmRDb25maWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IFwidGFpbHdpbmQuY29uZmlnLmpzb25cIlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVjbGFyZXMgYSBUYWlsd2luZCBDU1MgY29uZmlndXJhdGlvbiBmaWxlLlxuICpcbiAqIFRoZXJlIGFyZSBtdWx0aXBsZSB3YXlzIHRvIGFkZCBUYWlsd2luZCBDU1MgaW4geW91ciBub2RlIHByb2plY3QgLSBzZWU6XG4gKiBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2luc3RhbGxhdGlvblxuICpcbiAqIEBzZWUgUG9zdENzc1xuICovXG5leHBvcnQgY2xhc3MgVGFpbHdpbmRDb25maWcge1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZpbGU6IEpzb25GaWxlO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IE5vZGVQcm9qZWN0LCBvcHRpb25zPzogVGFpbHdpbmRDb25maWdPcHRpb25zKSB7XG4gICAgdGhpcy5maWxlTmFtZSA9IG9wdGlvbnM/LmZpbGVOYW1lID8/IFwidGFpbHdpbmQuY29uZmlnLmpzb25cIjtcblxuICAgIHRoaXMuZmlsZSA9IG5ldyBKc29uRmlsZShwcm9qZWN0LCB0aGlzLmZpbGVOYW1lLCB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgcHVyZ2U6IFtdLFxuICAgICAgICBkYXJrTW9kZTogZmFsc2UsXG4gICAgICAgIHRoZW1lOiB7XG4gICAgICAgICAgZXh0ZW5kOiB7fSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFyaWFudHM6IHtcbiAgICAgICAgICBleHRlbmQ6IHt9LFxuICAgICAgICB9LFxuICAgICAgICBwbHVnaW5zOiBbXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0Lm5wbWlnbm9yZT8uZXhjbHVkZShgLyR7dGhpcy5maWxlTmFtZX1gKTtcbiAgfVxufVxuIl19
package/lib/xmlfile.js CHANGED
@@ -31,6 +31,6 @@ class XmlFile extends object_file_1.ObjectFile {
31
31
  }
32
32
  }
33
33
  _a = JSII_RTTI_SYMBOL_1;
34
- XmlFile[_a] = { fqn: "projen.XmlFile", version: "0.71.67" };
34
+ XmlFile[_a] = { fqn: "projen.XmlFile", version: "0.71.69" };
35
35
  exports.XmlFile = XmlFile;
36
36
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1sZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy94bWxmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQWtEO0FBRWxELCtDQUE4RDtBQVE5RDs7Ozs7R0FLRztBQUNILE1BQWEsT0FBUSxTQUFRLHdCQUFVO0lBQ3JDLFlBQ0UsT0FBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsVUFBMEIsRUFBRTtRQUU1QixLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRVMsaUJBQWlCLENBQUMsUUFBbUI7UUFDN0MsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELE1BQU0sU0FBUyxHQUFHLElBQUEsb0JBQVMsRUFBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDMUQsV0FBVyxFQUFFLElBQUk7WUFDakIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ3RCLENBQUMsQ0FBQztRQUVILE9BQU87WUFDTCxTQUFTO1lBQ1QsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3BELENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2YsQ0FBQzs7OztBQXhCVSwwQkFBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZSBhcyBjcmVhdGV4bWwgfSBmcm9tIFwieG1sYnVpbGRlcjJcIjtcbmltcG9ydCB7IElSZXNvbHZlciB9IGZyb20gXCIuL2ZpbGVcIjtcbmltcG9ydCB7IE9iamVjdEZpbGUsIE9iamVjdEZpbGVPcHRpb25zIH0gZnJvbSBcIi4vb2JqZWN0LWZpbGVcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi9wcm9qZWN0XCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFhtbEZpbGVgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFhtbEZpbGVPcHRpb25zIGV4dGVuZHMgT2JqZWN0RmlsZU9wdGlvbnMge31cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIFhNTCBmaWxlLlxuICpcbiAqIE9iamVjdHMgcGFzc2VkIGluIHdpbGwgYmUgc3ludGhlc2l6ZWQgdXNpbmcgdGhlIG5wbSBcInhtbFwiIGxpYnJhcnkuXG4gKiBAc2VlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3htbFxuICovXG5leHBvcnQgY2xhc3MgWG1sRmlsZSBleHRlbmRzIE9iamVjdEZpbGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9qZWN0OiBQcm9qZWN0LFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogWG1sRmlsZU9wdGlvbnMgPSB7fVxuICApIHtcbiAgICBzdXBlcihwcm9qZWN0LCBmaWxlUGF0aCwgb3B0aW9ucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUNvbnRlbnQocmVzb2x2ZXI6IElSZXNvbHZlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgb2JqID0gc3VwZXIuc3ludGhlc2l6ZUNvbnRlbnQocmVzb2x2ZXIpO1xuICAgIGlmICghb2JqKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHhtbFN0cmluZyA9IGNyZWF0ZXhtbCh7IGVuY29kaW5nOiBcIlVURi04XCIgfSwgb2JqKS5lbmQoe1xuICAgICAgcHJldHR5UHJpbnQ6IHRydWUsXG4gICAgICBpbmRlbnQ6IFwiIFwiLnJlcGVhdCg0KSxcbiAgICB9KTtcblxuICAgIHJldHVybiBbXG4gICAgICB4bWxTdHJpbmcsXG4gICAgICAuLi4odGhpcy5tYXJrZXIgPyBbYDwhLS0gJHt0aGlzLm1hcmtlcn0gLS0+YF0gOiBbXSksXG4gICAgXS5qb2luKFwiXFxuXCIpO1xuICB9XG59XG4iXX0=
package/lib/yaml.js CHANGED
@@ -29,6 +29,6 @@ class YamlFile extends object_file_1.ObjectFile {
29
29
  }
30
30
  }
31
31
  _a = JSII_RTTI_SYMBOL_1;
32
- YamlFile[_a] = { fqn: "projen.YamlFile", version: "0.71.67" };
32
+ YamlFile[_a] = { fqn: "projen.YamlFile", version: "0.71.69" };
33
33
  exports.YamlFile = YamlFile;
34
34
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy95YW1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBRTdCLCtDQUE4RDtBQWU5RDs7R0FFRztBQUNILE1BQWEsUUFBUyxTQUFRLHdCQUFVO0lBTXRDLFlBQVksT0FBZ0IsRUFBRSxRQUFnQixFQUFFLE9BQXdCO1FBQ3RFLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVTLGlCQUFpQixDQUFDLFFBQW1CO1FBQzdDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxPQUFPO1lBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVDLEVBQUU7WUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQy9CLE1BQU0sRUFBRSxDQUFDO2dCQUNULFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzthQUMxQixDQUFDO1NBQ0gsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixDQUFDOzs7O0FBekJVLDRCQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgWUFNTCBmcm9tIFwieWFtbFwiO1xuaW1wb3J0IHsgSVJlc29sdmVyIH0gZnJvbSBcIi4vZmlsZVwiO1xuaW1wb3J0IHsgT2JqZWN0RmlsZSwgT2JqZWN0RmlsZU9wdGlvbnMgfSBmcm9tIFwiLi9vYmplY3QtZmlsZVwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuL3Byb2plY3RcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBgSnNvbkZpbGVgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFlhbWxGaWxlT3B0aW9ucyBleHRlbmRzIE9iamVjdEZpbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIE1heGltdW0gbGluZSB3aWR0aCAoc2V0IHRvIDAgdG8gZGlzYWJsZSBmb2xkaW5nKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAwXG4gICAqL1xuICByZWFkb25seSBsaW5lV2lkdGg/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIFlBTUwgZmlsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFlhbWxGaWxlIGV4dGVuZHMgT2JqZWN0RmlsZSB7XG4gIC8qKlxuICAgKiBNYXhpbXVtIGxpbmUgd2lkdGggKHNldCB0byAwIHRvIGRpc2FibGUgZm9sZGluZykuXG4gICAqL1xuICBwdWJsaWMgbGluZVdpZHRoOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgZmlsZVBhdGg6IHN0cmluZywgb3B0aW9uczogWWFtbEZpbGVPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwgZmlsZVBhdGgsIG9wdGlvbnMpO1xuICAgIHRoaXMubGluZVdpZHRoID0gb3B0aW9ucy5saW5lV2lkdGggPz8gMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplQ29udGVudChyZXNvbHZlcjogSVJlc29sdmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBqc29uID0gc3VwZXIuc3ludGhlc2l6ZUNvbnRlbnQocmVzb2x2ZXIpO1xuICAgIGlmICghanNvbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAgLi4uKHRoaXMubWFya2VyID8gW2AjICR7dGhpcy5tYXJrZXJ9YF0gOiBbXSksXG4gICAgICBcIlwiLFxuICAgICAgWUFNTC5zdHJpbmdpZnkoSlNPTi5wYXJzZShqc29uKSwge1xuICAgICAgICBpbmRlbnQ6IDIsXG4gICAgICAgIGxpbmVXaWR0aDogdGhpcy5saW5lV2lkdGgsXG4gICAgICB9KSxcbiAgICBdLmpvaW4oXCJcXG5cIik7XG4gIH1cbn1cbiJdfQ==
@@ -14,6 +14,10 @@ It has no external dependencies and runs on Node.js as well as modern browsers.
14
14
  For the purposes of versioning, any changes that break any of the documented endpoints or APIs will be considered semver-major breaking changes.
15
15
  Undocumented library internals may change between minor versions, and previous APIs may be deprecated (but not removed).
16
16
 
17
+ The minimum supported TypeScript version of the included typings is 3.9;
18
+ for use in earlier versions you may need to set `skipLibCheck: true` in your config.
19
+ This requirement may be updated between minor versions of the library.
20
+
17
21
  For more information, see the project's documentation site: [**eemeli.org/yaml**](https://eemeli.org/yaml/)
18
22
 
19
23
  To install:
@@ -1,38 +1,50 @@
1
- import { isNode, isMap } from '../nodes/Node.js';
1
+ import { isNode } from '../nodes/identity.js';
2
2
  import { Scalar } from '../nodes/Scalar.js';
3
+ import { YAMLMap } from '../nodes/YAMLMap.js';
4
+ import { YAMLSeq } from '../nodes/YAMLSeq.js';
3
5
  import { resolveBlockMap } from './resolve-block-map.js';
4
6
  import { resolveBlockSeq } from './resolve-block-seq.js';
5
7
  import { resolveFlowCollection } from './resolve-flow-collection.js';
6
8
 
7
- function composeCollection(CN, ctx, token, tagToken, onError) {
8
- let coll;
9
- switch (token.type) {
10
- case 'block-map': {
11
- coll = resolveBlockMap(CN, ctx, token, onError);
12
- break;
13
- }
14
- case 'block-seq': {
15
- coll = resolveBlockSeq(CN, ctx, token, onError);
16
- break;
17
- }
18
- case 'flow-collection': {
19
- coll = resolveFlowCollection(CN, ctx, token, onError);
20
- break;
21
- }
22
- }
23
- if (!tagToken)
24
- return coll;
25
- const tagName = ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));
26
- if (!tagName)
27
- return coll;
28
- // Cast needed due to: https://github.com/Microsoft/TypeScript/issues/3841
9
+ function resolveCollection(CN, ctx, token, onError, tagName, tag) {
10
+ const coll = token.type === 'block-map'
11
+ ? resolveBlockMap(CN, ctx, token, onError, tag)
12
+ : token.type === 'block-seq'
13
+ ? resolveBlockSeq(CN, ctx, token, onError, tag)
14
+ : resolveFlowCollection(CN, ctx, token, onError, tag);
29
15
  const Coll = coll.constructor;
16
+ // If we got a tagName matching the class, or the tag name is '!',
17
+ // then use the tagName from the node class used to create it.
30
18
  if (tagName === '!' || tagName === Coll.tagName) {
31
19
  coll.tag = Coll.tagName;
32
20
  return coll;
33
21
  }
34
- const expType = isMap(coll) ? 'map' : 'seq';
35
- let tag = ctx.schema.tags.find(t => t.collection === expType && t.tag === tagName);
22
+ if (tagName)
23
+ coll.tag = tagName;
24
+ return coll;
25
+ }
26
+ function composeCollection(CN, ctx, token, tagToken, onError) {
27
+ const tagName = !tagToken
28
+ ? null
29
+ : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));
30
+ const expType = token.type === 'block-map'
31
+ ? 'map'
32
+ : token.type === 'block-seq'
33
+ ? 'seq'
34
+ : token.start.source === '{'
35
+ ? 'map'
36
+ : 'seq';
37
+ // shortcut: check if it's a generic YAMLMap or YAMLSeq
38
+ // before jumping into the custom tag logic.
39
+ if (!tagToken ||
40
+ !tagName ||
41
+ tagName === '!' ||
42
+ (tagName === YAMLMap.tagName && expType === 'map') ||
43
+ (tagName === YAMLSeq.tagName && expType === 'seq') ||
44
+ !expType) {
45
+ return resolveCollection(CN, ctx, token, onError, tagName);
46
+ }
47
+ let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);
36
48
  if (!tag) {
37
49
  const kt = ctx.schema.knownTags[tagName];
38
50
  if (kt && kt.collection === expType) {
@@ -40,12 +52,17 @@ function composeCollection(CN, ctx, token, tagToken, onError) {
40
52
  tag = kt;
41
53
  }
42
54
  else {
43
- onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);
44
- coll.tag = tagName;
45
- return coll;
55
+ if (kt?.collection) {
56
+ onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection}`, true);
57
+ }
58
+ else {
59
+ onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);
60
+ }
61
+ return resolveCollection(CN, ctx, token, onError, tagName);
46
62
  }
47
63
  }
48
- const res = tag.resolve(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options);
64
+ const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);
65
+ const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;
49
66
  const node = isNode(res)
50
67
  ? res
51
68
  : new Scalar(res);
@@ -26,6 +26,7 @@ function composeDoc(options, directives, { offset, start, value, end }, onError)
26
26
  !props.hasNewline)
27
27
  onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');
28
28
  }
29
+ // @ts-expect-error If Contents is set, let's trust the user
29
30
  doc.contents = value
30
31
  ? composeNode(ctx, value, props, onError)
31
32
  : composeEmptyNode(ctx, props.end, start, null, props, onError);
@@ -1,4 +1,4 @@
1
- import { SCALAR, isScalar } from '../nodes/Node.js';
1
+ import { SCALAR, isScalar } from '../nodes/identity.js';
2
2
  import { Scalar } from '../nodes/Scalar.js';
3
3
  import { resolveBlockScalar } from './resolve-block-scalar.js';
4
4
  import { resolveFlowScalar } from './resolve-flow-scalar.js';
@@ -1,7 +1,7 @@
1
1
  import { Directives } from '../doc/directives.js';
2
2
  import { Document } from '../doc/Document.js';
3
3
  import { YAMLWarning, YAMLParseError } from '../errors.js';
4
- import { isCollection, isPair } from '../nodes/Node.js';
4
+ import { isCollection, isPair } from '../nodes/identity.js';
5
5
  import { composeDoc } from './compose-doc.js';
6
6
  import { resolveEnd } from './resolve-end.js';
7
7
 
@@ -6,8 +6,9 @@ import { flowIndentCheck } from './util-flow-indent-check.js';
6
6
  import { mapIncludes } from './util-map-includes.js';
7
7
 
8
8
  const startColMsg = 'All mapping items must start at the same column';
9
- function resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError) {
10
- const map = new YAMLMap(ctx.schema);
9
+ function resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {
10
+ const NodeClass = tag?.nodeClass ?? YAMLMap;
11
+ const map = new NodeClass(ctx.schema);
11
12
  if (ctx.atRoot)
12
13
  ctx.atRoot = false;
13
14
  let offset = bm.offset;
@@ -2,8 +2,9 @@ import { YAMLSeq } from '../nodes/YAMLSeq.js';
2
2
  import { resolveProps } from './resolve-props.js';
3
3
  import { flowIndentCheck } from './util-flow-indent-check.js';
4
4
 
5
- function resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError) {
6
- const seq = new YAMLSeq(ctx.schema);
5
+ function resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {
6
+ const NodeClass = tag?.nodeClass ?? YAMLSeq;
7
+ const seq = new NodeClass(ctx.schema);
7
8
  if (ctx.atRoot)
8
9
  ctx.atRoot = false;
9
10
  let offset = bs.offset;
@@ -1,4 +1,4 @@
1
- import { isPair } from '../nodes/Node.js';
1
+ import { isPair } from '../nodes/identity.js';
2
2
  import { Pair } from '../nodes/Pair.js';
3
3
  import { YAMLMap } from '../nodes/YAMLMap.js';
4
4
  import { YAMLSeq } from '../nodes/YAMLSeq.js';
@@ -9,12 +9,11 @@ import { mapIncludes } from './util-map-includes.js';
9
9
 
10
10
  const blockMsg = 'Block collections are not allowed within flow collections';
11
11
  const isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');
12
- function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError) {
12
+ function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {
13
13
  const isMap = fc.start.source === '{';
14
14
  const fcName = isMap ? 'flow map' : 'flow sequence';
15
- const coll = isMap
16
- ? new YAMLMap(ctx.schema)
17
- : new YAMLSeq(ctx.schema);
15
+ const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap : YAMLSeq));
16
+ const coll = new NodeClass(ctx.schema);
18
17
  coll.flow = true;
19
18
  const atRoot = ctx.atRoot;
20
19
  if (atRoot)
@@ -1,4 +1,4 @@
1
- import { isScalar } from '../nodes/Node.js';
1
+ import { isScalar } from '../nodes/identity.js';
2
2
 
3
3
  function mapIncludes(ctx, items, search) {
4
4
  const { uniqueKeys } = ctx.options;
@@ -1,10 +1,9 @@
1
1
  import { Alias } from '../nodes/Alias.js';
2
2
  import { isEmptyPath, collectionFromPath } from '../nodes/Collection.js';
3
- import { NODE_TYPE, DOC, isNode, isCollection, isScalar } from '../nodes/Node.js';
3
+ import { NODE_TYPE, DOC, isNode, isCollection, isScalar } from '../nodes/identity.js';
4
4
  import { Pair } from '../nodes/Pair.js';
5
5
  import { toJS } from '../nodes/toJS.js';
6
6
  import { Schema } from '../schema/Schema.js';
7
- import { stringify } from '../stringify/stringify.js';
8
7
  import { stringifyDocument } from '../stringify/stringifyDocument.js';
9
8
  import { anchorNames, findNewAnchor, createNodeAnchors } from './anchors.js';
10
9
  import { applyReviver } from './applyReviver.js';
@@ -49,11 +48,9 @@ class Document {
49
48
  else
50
49
  this.directives = new Directives({ version });
51
50
  this.setSchema(version, options);
52
- if (value === undefined)
53
- this.contents = null;
54
- else {
55
- this.contents = this.createNode(value, _replacer, options);
56
- }
51
+ // @ts-expect-error We can't really know that this matches Contents.
52
+ this.contents =
53
+ value === undefined ? null : this.createNode(value, _replacer, options);
57
54
  }
58
55
  /**
59
56
  * Create a deep copy of this Document and its contents.
@@ -72,6 +69,7 @@ class Document {
72
69
  if (this.directives)
73
70
  copy.directives = this.directives.clone();
74
71
  copy.schema = this.schema.clone();
72
+ // @ts-expect-error We can't really know that this matches Contents.
75
73
  copy.contents = isNode(this.contents)
76
74
  ? this.contents.clone(copy.schema)
77
75
  : this.contents;
@@ -167,6 +165,7 @@ class Document {
167
165
  if (isEmptyPath(path)) {
168
166
  if (this.contents == null)
169
167
  return false;
168
+ // @ts-expect-error Presumed impossible if Strict extends false
170
169
  this.contents = null;
171
170
  return true;
172
171
  }
@@ -218,6 +217,7 @@ class Document {
218
217
  */
219
218
  set(key, value) {
220
219
  if (this.contents == null) {
220
+ // @ts-expect-error We can't really know that this matches Contents.
221
221
  this.contents = collectionFromPath(this.schema, [key], value);
222
222
  }
223
223
  else if (assertCollection(this.contents)) {
@@ -229,9 +229,12 @@ class Document {
229
229
  * boolean to add/remove the item from the set.
230
230
  */
231
231
  setIn(path, value) {
232
- if (isEmptyPath(path))
232
+ if (isEmptyPath(path)) {
233
+ // @ts-expect-error We can't really know that this matches Contents.
233
234
  this.contents = value;
235
+ }
234
236
  else if (this.contents == null) {
237
+ // @ts-expect-error We can't really know that this matches Contents.
235
238
  this.contents = collectionFromPath(this.schema, Array.from(path), value);
236
239
  }
237
240
  else if (assertCollection(this.contents)) {
@@ -291,8 +294,7 @@ class Document {
291
294
  keep: !json,
292
295
  mapAsMap: mapAsMap === true,
293
296
  mapKeyWarned: false,
294
- maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100,
295
- stringify
297
+ maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100
296
298
  };
297
299
  const res = toJS(this.contents, jsonArg ?? '', ctx);
298
300
  if (typeof onAnchor === 'function')
@@ -1,4 +1,4 @@
1
- import { isScalar, isCollection } from '../nodes/Node.js';
1
+ import { isScalar, isCollection } from '../nodes/identity.js';
2
2
  import { visit } from '../visit.js';
3
3
 
4
4
  /**
@@ -1,5 +1,5 @@
1
1
  import { Alias } from '../nodes/Alias.js';
2
- import { isNode, isPair, MAP, SEQ, isDocument } from '../nodes/Node.js';
2
+ import { isNode, isPair, MAP, SEQ, isDocument } from '../nodes/identity.js';
3
3
  import { Scalar } from '../nodes/Scalar.js';
4
4
 
5
5
  const defaultTagPrefix = 'tag:yaml.org,2002:';
@@ -74,9 +74,13 @@ function createNode(value, tagName, ctx) {
74
74
  }
75
75
  const node = tagObj?.createNode
76
76
  ? tagObj.createNode(ctx.schema, value, ctx)
77
- : new Scalar(value);
77
+ : typeof tagObj?.nodeClass?.from === 'function'
78
+ ? tagObj.nodeClass.from(ctx.schema, value, ctx)
79
+ : new Scalar(value);
78
80
  if (tagName)
79
81
  node.tag = tagName;
82
+ else if (!tagObj.default)
83
+ node.tag = tagObj.tag;
80
84
  if (ref)
81
85
  ref.node = node;
82
86
  return node;
@@ -1,4 +1,4 @@
1
- import { isNode } from '../nodes/Node.js';
1
+ import { isNode } from '../nodes/identity.js';
2
2
  import { visit } from '../visit.js';
3
3
 
4
4
  const escapeChars = {
@@ -3,7 +3,7 @@ export { Document } from './doc/Document.js';
3
3
  export { Schema } from './schema/Schema.js';
4
4
  export { YAMLError, YAMLParseError, YAMLWarning } from './errors.js';
5
5
  export { Alias } from './nodes/Alias.js';
6
- export { isAlias, isCollection, isDocument, isMap, isNode, isPair, isScalar, isSeq } from './nodes/Node.js';
6
+ export { isAlias, isCollection, isDocument, isMap, isNode, isPair, isScalar, isSeq } from './nodes/identity.js';
7
7
  export { Pair } from './nodes/Pair.js';
8
8
  export { Scalar } from './nodes/Scalar.js';
9
9
  export { YAMLMap } from './nodes/YAMLMap.js';
@@ -1,4 +1,4 @@
1
- /*! *****************************************************************************
1
+ /******************************************************************************
2
2
  Copyright (c) Microsoft Corporation.
3
3
 
4
4
  Permission to use, copy, modify, and/or distribute this software for any
@@ -12,153 +12,10 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
12
12
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
13
13
  PERFORMANCE OF THIS SOFTWARE.
14
14
  ***************************************************************************** */
15
-
16
- /* global Reflect, Promise */
17
- var extendStatics = function (d, b) {
18
- extendStatics = Object.setPrototypeOf || {
19
- __proto__: []
20
- } instanceof Array && function (d, b) {
21
- d.__proto__ = b;
22
- } || function (d, b) {
23
- for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
24
- };
25
-
26
- return extendStatics(d, b);
27
- };
28
-
29
- function __extends(d, b) {
30
- if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
31
- extendStatics(d, b);
32
-
33
- function __() {
34
- this.constructor = d;
35
- }
36
-
37
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38
- }
39
- function __generator(thisArg, body) {
40
- var _ = {
41
- label: 0,
42
- sent: function () {
43
- if (t[0] & 1) throw t[1];
44
- return t[1];
45
- },
46
- trys: [],
47
- ops: []
48
- },
49
- f,
50
- y,
51
- t,
52
- g;
53
- return g = {
54
- next: verb(0),
55
- "throw": verb(1),
56
- "return": verb(2)
57
- }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
58
- return this;
59
- }), g;
60
-
61
- function verb(n) {
62
- return function (v) {
63
- return step([n, v]);
64
- };
65
- }
66
-
67
- function step(op) {
68
- if (f) throw new TypeError("Generator is already executing.");
69
-
70
- while (_) try {
71
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
72
- if (y = 0, t) op = [op[0] & 2, t.value];
73
-
74
- switch (op[0]) {
75
- case 0:
76
- case 1:
77
- t = op;
78
- break;
79
-
80
- case 4:
81
- _.label++;
82
- return {
83
- value: op[1],
84
- done: false
85
- };
86
-
87
- case 5:
88
- _.label++;
89
- y = op[1];
90
- op = [0];
91
- continue;
92
-
93
- case 7:
94
- op = _.ops.pop();
95
-
96
- _.trys.pop();
97
-
98
- continue;
99
-
100
- default:
101
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
102
- _ = 0;
103
- continue;
104
- }
105
-
106
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
107
- _.label = op[1];
108
- break;
109
- }
110
-
111
- if (op[0] === 6 && _.label < t[1]) {
112
- _.label = t[1];
113
- t = op;
114
- break;
115
- }
116
-
117
- if (t && _.label < t[2]) {
118
- _.label = t[2];
119
-
120
- _.ops.push(op);
121
-
122
- break;
123
- }
124
-
125
- if (t[2]) _.ops.pop();
126
-
127
- _.trys.pop();
128
-
129
- continue;
130
- }
131
-
132
- op = body.call(thisArg, _);
133
- } catch (e) {
134
- op = [6, e];
135
- y = 0;
136
- } finally {
137
- f = t = 0;
138
- }
139
-
140
- if (op[0] & 5) throw op[1];
141
- return {
142
- value: op[0] ? op[1] : void 0,
143
- done: true
144
- };
145
- }
146
- }
147
- function __values(o) {
148
- var s = typeof Symbol === "function" && Symbol.iterator,
149
- m = s && o[s],
150
- i = 0;
151
- if (m) return m.call(o);
152
- if (o && typeof o.length === "number") return {
153
- next: function () {
154
- if (o && i >= o.length) o = void 0;
155
- return {
156
- value: o && o[i++],
157
- done: !o
158
- };
159
- }
160
- };
161
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
15
+ function __classPrivateFieldGet(receiver, state, kind, f) {
16
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
17
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
18
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
162
19
  }
163
20
 
164
- export { __extends, __generator, __values };
21
+ export { __classPrivateFieldGet };