projen 0.52.22 → 0.52.26

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 (237) hide show
  1. package/.jsii +139 -107
  2. package/changelog.md +1 -1
  3. package/docs/api/API.md +42 -39
  4. package/lib/awscdk/auto-discover.d.ts +14 -46
  5. package/lib/awscdk/auto-discover.js +8 -22
  6. package/lib/awscdk/awscdk-app-java.d.ts +10 -32
  7. package/lib/awscdk/awscdk-app-java.js +5 -9
  8. package/lib/awscdk/awscdk-app-ts.d.ts +15 -35
  9. package/lib/awscdk/awscdk-app-ts.js +6 -14
  10. package/lib/awscdk/awscdk-construct.d.ts +14 -28
  11. package/lib/awscdk/awscdk-construct.js +8 -16
  12. package/lib/awscdk/awscdk-deps-java.d.ts +1 -8
  13. package/lib/awscdk/awscdk-deps-java.js +3 -10
  14. package/lib/awscdk/awscdk-deps-js.d.ts +1 -8
  15. package/lib/awscdk/awscdk-deps-js.js +3 -10
  16. package/lib/awscdk/awscdk-deps.d.ts +28 -67
  17. package/lib/awscdk/awscdk-deps.js +5 -12
  18. package/lib/awscdk/cdk-config.d.ts +19 -51
  19. package/lib/awscdk/cdk-config.js +13 -11
  20. package/lib/awscdk/cdk-tasks.d.ts +7 -24
  21. package/lib/awscdk/cdk-tasks.js +3 -8
  22. package/lib/awscdk/integration-test.d.ts +7 -29
  23. package/lib/awscdk/integration-test.js +3 -8
  24. package/lib/awscdk/lambda-function.d.ts +22 -50
  25. package/lib/awscdk/lambda-function.js +11 -24
  26. package/lib/build/build-workflow.d.ts +33 -78
  27. package/lib/build/build-workflow.js +15 -25
  28. package/lib/cdk/auto-discover-base.d.ts +11 -34
  29. package/lib/cdk/auto-discover-base.js +5 -15
  30. package/lib/cdk/construct-lib.d.ts +8 -22
  31. package/lib/cdk/construct-lib.js +3 -8
  32. package/lib/cdk/integration-test-base.d.ts +12 -38
  33. package/lib/cdk/integration-test-base.js +2 -8
  34. package/lib/cdk/jsii-docgen.d.ts +6 -12
  35. package/lib/cdk/jsii-docgen.js +6 -8
  36. package/lib/cdk/jsii-project.d.ts +16 -95
  37. package/lib/cdk/jsii-project.js +3 -10
  38. package/lib/cdk8s/auto-discover.d.ts +6 -23
  39. package/lib/cdk8s/auto-discover.js +6 -15
  40. package/lib/cdk8s/cdk8s-app-ts.d.ts +21 -43
  41. package/lib/cdk8s/cdk8s-app-ts.js +4 -7
  42. package/lib/cdk8s/cdk8s-construct.d.ts +12 -27
  43. package/lib/cdk8s/cdk8s-construct.js +3 -7
  44. package/lib/cdk8s/integration-test.d.ts +2 -9
  45. package/lib/cdk8s/integration-test.js +3 -8
  46. package/lib/cdktf/cdktf-construct.d.ts +3 -12
  47. package/lib/cdktf/cdktf-construct.js +3 -7
  48. package/lib/component.d.ts +4 -17
  49. package/lib/component.js +6 -19
  50. package/lib/dependencies.d.ts +44 -77
  51. package/lib/dependencies.js +50 -38
  52. package/lib/dev-env.d.ts +26 -53
  53. package/lib/dev-env.js +9 -19
  54. package/lib/docker-compose.d.ts +83 -209
  55. package/lib/docker-compose.js +38 -61
  56. package/lib/file.d.ts +24 -71
  57. package/lib/file.js +4 -16
  58. package/lib/gitattributes.d.ts +3 -14
  59. package/lib/gitattributes.js +5 -16
  60. package/lib/github/auto-approve.d.ts +7 -23
  61. package/lib/github/auto-approve.js +3 -8
  62. package/lib/github/auto-merge.d.ts +7 -29
  63. package/lib/github/auto-merge.js +7 -16
  64. package/lib/github/dependabot.d.ts +54 -147
  65. package/lib/github/dependabot.js +81 -22
  66. package/lib/github/github-project.d.ts +26 -70
  67. package/lib/github/github-project.js +5 -10
  68. package/lib/github/github.d.ts +19 -58
  69. package/lib/github/github.js +9 -30
  70. package/lib/github/mergify.d.ts +9 -54
  71. package/lib/github/mergify.js +2 -14
  72. package/lib/github/pr-template.d.ts +3 -13
  73. package/lib/github/pr-template.js +3 -8
  74. package/lib/github/pull-request-lint.d.ts +8 -28
  75. package/lib/github/pull-request-lint.js +3 -9
  76. package/lib/github/stale.d.ts +17 -47
  77. package/lib/github/stale.js +6 -10
  78. package/lib/github/task-workflow.d.ts +21 -63
  79. package/lib/github/task-workflow.js +3 -8
  80. package/lib/github/workflows-model.d.ts +199 -582
  81. package/lib/github/workflows-model.js +5 -4
  82. package/lib/github/workflows.d.ts +14 -41
  83. package/lib/github/workflows.js +8 -16
  84. package/lib/gitlab/configuration-model.d.ts +145 -947
  85. package/lib/gitlab/configuration-model.js +11 -28
  86. package/lib/gitlab/configuration.d.ts +31 -121
  87. package/lib/gitlab/configuration.js +14 -49
  88. package/lib/gitlab/gitlab-configuration.d.ts +2 -13
  89. package/lib/gitlab/gitlab-configuration.js +4 -15
  90. package/lib/gitlab/nested-configuration.d.ts +1 -9
  91. package/lib/gitlab/nested-configuration.js +3 -8
  92. package/lib/gitpod.d.ts +71 -167
  93. package/lib/gitpod.js +75 -42
  94. package/lib/ignore-file.d.ts +4 -23
  95. package/lib/ignore-file.js +6 -25
  96. package/lib/ini.d.ts +2 -14
  97. package/lib/ini.js +3 -13
  98. package/lib/java/java-project.d.ts +29 -70
  99. package/lib/java/java-project.js +10 -17
  100. package/lib/java/junit.d.ts +5 -17
  101. package/lib/java/junit.js +3 -8
  102. package/lib/java/maven-compile.d.ts +4 -13
  103. package/lib/java/maven-compile.js +3 -8
  104. package/lib/java/maven-packaging.d.ts +6 -21
  105. package/lib/java/maven-packaging.js +3 -8
  106. package/lib/java/maven-sample.d.ts +2 -12
  107. package/lib/java/maven-sample.js +3 -8
  108. package/lib/java/pom.d.ts +38 -100
  109. package/lib/java/pom.js +13 -25
  110. package/lib/java/projenrc.d.ts +7 -22
  111. package/lib/java/projenrc.js +3 -8
  112. package/lib/javascript/bundler.d.ts +30 -72
  113. package/lib/javascript/bundler.js +13 -21
  114. package/lib/javascript/eslint.d.ts +27 -84
  115. package/lib/javascript/eslint.js +11 -30
  116. package/lib/javascript/jest.d.ts +91 -344
  117. package/lib/javascript/jest.js +6 -23
  118. package/lib/javascript/node-package.d.ts +111 -259
  119. package/lib/javascript/node-package.js +64 -81
  120. package/lib/javascript/node-project.d.ts +112 -220
  121. package/lib/javascript/node-project.js +54 -73
  122. package/lib/javascript/npm-config.d.ts +9 -19
  123. package/lib/javascript/npm-config.js +9 -16
  124. package/lib/javascript/prettier.d.ts +65 -196
  125. package/lib/javascript/prettier.js +70 -46
  126. package/lib/javascript/projenrc.d.ts +2 -12
  127. package/lib/javascript/projenrc.js +3 -8
  128. package/lib/javascript/typescript-config.d.ts +62 -158
  129. package/lib/javascript/typescript-config.js +31 -18
  130. package/lib/javascript/upgrade-dependencies.d.ts +35 -94
  131. package/lib/javascript/upgrade-dependencies.js +21 -51
  132. package/lib/json.d.ts +3 -17
  133. package/lib/json.js +3 -13
  134. package/lib/license.d.ts +3 -20
  135. package/lib/license.js +2 -13
  136. package/lib/logger.d.ts +18 -62
  137. package/lib/logger.js +17 -37
  138. package/lib/makefile.d.ts +14 -45
  139. package/lib/makefile.js +7 -25
  140. package/lib/object-file.d.ts +19 -39
  141. package/lib/object-file.js +17 -28
  142. package/lib/option-hints.d.ts +4 -13
  143. package/lib/option-hints.js +11 -5
  144. package/lib/project-build.d.ts +7 -26
  145. package/lib/project-build.js +3 -8
  146. package/lib/project.d.ts +64 -186
  147. package/lib/project.js +43 -91
  148. package/lib/projects.d.ts +11 -32
  149. package/lib/projects.js +4 -8
  150. package/lib/projenrc-json.d.ts +2 -12
  151. package/lib/projenrc-json.js +3 -8
  152. package/lib/python/pip.d.ts +7 -23
  153. package/lib/python/pip.js +8 -17
  154. package/lib/python/poetry.d.ts +36 -121
  155. package/lib/python/poetry.js +12 -26
  156. package/lib/python/projenrc.d.ts +4 -15
  157. package/lib/python/projenrc.js +3 -8
  158. package/lib/python/pytest.d.ts +3 -16
  159. package/lib/python/pytest.js +2 -8
  160. package/lib/python/python-deps.d.ts +7 -21
  161. package/lib/python/python-deps.js +1 -1
  162. package/lib/python/python-env.d.ts +1 -6
  163. package/lib/python/python-env.js +1 -1
  164. package/lib/python/python-packaging.d.ts +12 -34
  165. package/lib/python/python-packaging.js +1 -1
  166. package/lib/python/python-project.d.ts +34 -79
  167. package/lib/python/python-project.js +7 -20
  168. package/lib/python/python-sample.d.ts +2 -9
  169. package/lib/python/python-sample.js +3 -8
  170. package/lib/python/requirements-file.d.ts +4 -19
  171. package/lib/python/requirements-file.js +5 -15
  172. package/lib/python/setuppy.d.ts +11 -39
  173. package/lib/python/setuppy.js +3 -13
  174. package/lib/python/setuptools.d.ts +2 -14
  175. package/lib/python/setuptools.js +3 -8
  176. package/lib/python/venv.d.ts +4 -14
  177. package/lib/python/venv.js +4 -11
  178. package/lib/readme.d.ts +7 -16
  179. package/lib/readme.js +5 -7
  180. package/lib/release/publisher.d.ts +103 -206
  181. package/lib/release/publisher.js +47 -59
  182. package/lib/release/release-trigger.d.ts +16 -48
  183. package/lib/release/release-trigger.js +8 -18
  184. package/lib/release/release.d.ts +50 -110
  185. package/lib/release/release.js +9 -24
  186. package/lib/sample-file.d.ts +14 -47
  187. package/lib/sample-file.js +9 -30
  188. package/lib/semver.d.ts +4 -21
  189. package/lib/semver.js +6 -20
  190. package/lib/source-code.d.ts +7 -23
  191. package/lib/source-code.js +7 -19
  192. package/lib/task-model.d.ts +21 -61
  193. package/lib/task-model.js +1 -1
  194. package/lib/task-runtime.d.ts +7 -24
  195. package/lib/task-runtime.js +7 -20
  196. package/lib/task.d.ts +29 -73
  197. package/lib/task.js +28 -61
  198. package/lib/tasks.d.ts +12 -34
  199. package/lib/tasks.js +14 -36
  200. package/lib/testing.d.ts +6 -10
  201. package/lib/testing.js +8 -12
  202. package/lib/textfile.d.ts +9 -24
  203. package/lib/textfile.js +9 -19
  204. package/lib/toml.d.ts +2 -14
  205. package/lib/toml.js +3 -13
  206. package/lib/typescript/projenrc.d.ts +4 -14
  207. package/lib/typescript/projenrc.js +3 -8
  208. package/lib/typescript/typescript-typedoc.d.ts +1 -6
  209. package/lib/typescript/typescript-typedoc.js +3 -8
  210. package/lib/typescript/typescript.d.ts +24 -82
  211. package/lib/typescript/typescript.js +6 -15
  212. package/lib/version.d.ts +9 -38
  213. package/lib/version.js +2 -11
  214. package/lib/vscode/devcontainer.d.ts +10 -30
  215. package/lib/vscode/devcontainer.js +10 -26
  216. package/lib/vscode/launch-config.d.ts +18 -97
  217. package/lib/vscode/launch-config.js +9 -15
  218. package/lib/vscode/vscode.d.ts +0 -9
  219. package/lib/vscode/vscode.js +2 -11
  220. package/lib/web/next.d.ts +19 -60
  221. package/lib/web/next.js +6 -20
  222. package/lib/web/postcss.d.ts +3 -24
  223. package/lib/web/postcss.js +3 -8
  224. package/lib/web/react.d.ts +13 -60
  225. package/lib/web/react.js +7 -32
  226. package/lib/web/tailwind.d.ts +1 -15
  227. package/lib/web/tailwind.js +3 -7
  228. package/lib/xmlfile.d.ts +2 -14
  229. package/lib/xmlfile.js +3 -13
  230. package/lib/yaml.d.ts +4 -19
  231. package/lib/yaml.js +3 -13
  232. package/node_modules/xmlbuilder2/node_modules/@types/node/README.md +1 -1
  233. package/node_modules/xmlbuilder2/node_modules/@types/node/buffer.d.ts +90 -0
  234. package/node_modules/xmlbuilder2/node_modules/@types/node/package.json +2 -2
  235. package/package.json +4 -4
  236. package/releasetag.txt +1 -1
  237. package/version.txt +1 -1
package/lib/web/next.js CHANGED
@@ -10,15 +10,11 @@ const typescript_1 = require("../typescript");
10
10
  const util_1 = require("../util");
11
11
  const postcss_1 = require("./postcss");
12
12
  /**
13
- * (experimental) Next.js project without TypeScript.
13
+ * Next.js project without TypeScript.
14
14
  *
15
- * @experimental
16
15
  * @pjid nextjs
17
16
  */
18
17
  class NextJsProject extends javascript_1.NodeProject {
19
- /**
20
- * @experimental
21
- */
22
18
  constructor(options) {
23
19
  var _d, _e, _f, _g;
24
20
  super({
@@ -43,17 +39,13 @@ class NextJsProject extends javascript_1.NodeProject {
43
39
  }
44
40
  exports.NextJsProject = NextJsProject;
45
41
  _a = JSII_RTTI_SYMBOL_1;
46
- NextJsProject[_a] = { fqn: "projen.web.NextJsProject", version: "0.52.22" };
42
+ NextJsProject[_a] = { fqn: "projen.web.NextJsProject", version: "0.52.26" };
47
43
  /**
48
- * (experimental) Next.js project with TypeScript.
44
+ * Next.js project with TypeScript.
49
45
  *
50
- * @experimental
51
46
  * @pjid nextjs-ts
52
47
  */
53
48
  class NextJsTypeScriptProject extends typescript_1.TypeScriptAppProject {
54
- /**
55
- * @experimental
56
- */
57
49
  constructor(options) {
58
50
  var _d, _e, _f, _g;
59
51
  const defaultOptions = {
@@ -109,14 +101,8 @@ class NextJsTypeScriptProject extends typescript_1.TypeScriptAppProject {
109
101
  }
110
102
  exports.NextJsTypeScriptProject = NextJsTypeScriptProject;
111
103
  _b = JSII_RTTI_SYMBOL_1;
112
- NextJsTypeScriptProject[_b] = { fqn: "projen.web.NextJsTypeScriptProject", version: "0.52.22" };
113
- /**
114
- * @experimental
115
- */
104
+ NextJsTypeScriptProject[_b] = { fqn: "projen.web.NextJsTypeScriptProject", version: "0.52.26" };
116
105
  class NextComponent extends component_1.Component {
117
- /**
118
- * @experimental
119
- */
120
106
  constructor(project, options) {
121
107
  var _d, _e, _f;
122
108
  super(project);
@@ -153,7 +139,7 @@ class NextComponent extends component_1.Component {
153
139
  }
154
140
  exports.NextComponent = NextComponent;
155
141
  _c = JSII_RTTI_SYMBOL_1;
156
- NextComponent[_c] = { fqn: "projen.web.NextComponent", version: "0.52.22" };
142
+ NextComponent[_c] = { fqn: "projen.web.NextComponent", version: "0.52.26" };
157
143
  class NextSampleCode extends component_1.Component {
158
144
  constructor(project, options) {
159
145
  var _d;
@@ -404,4 +390,4 @@ class NextSampleCode extends component_1.Component {
404
390
  });
405
391
  }
406
392
  }
407
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93ZWIvbmV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUF5QztBQUN6Qyw4Q0FLdUI7QUFDdkIsZ0RBQXVEO0FBQ3ZELDhDQUErRTtBQUMvRSxrQ0FBb0M7QUFDcEMsdUNBQW9DOzs7Ozs7O0FBeUJwQyxNQUFhLGFBQWMsU0FBUSx3QkFBVzs7OztJQVU1QyxZQUFZLE9BQTZCOztRQUN2QyxLQUFLLENBQUM7WUFDSixJQUFJLEVBQUUsS0FBSztZQUNYLGNBQWMsRUFBRSxTQUFTO1lBQ3pCLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLFNBQUcsT0FBTyxDQUFDLE1BQU0sbUNBQUksT0FBTyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLFNBQUcsT0FBTyxDQUFDLFNBQVMsbUNBQUksUUFBUSxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLFNBQUcsT0FBTyxDQUFDLFFBQVEsbUNBQUksSUFBSSxDQUFDO1FBRXpDLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXhFLCtGQUErRjtRQUMvRixVQUFJLE9BQU8sQ0FBQyxVQUFVLG1DQUFJLElBQUksRUFBRTtZQUM5QixJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3ZCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7YUFDeEIsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOztBQWhDSCxzQ0FpQ0M7Ozs7Ozs7OztBQUdELE1BQWEsdUJBQXdCLFNBQVEsaUNBQW9COzs7O0lBVS9ELFlBQVksT0FBdUM7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Q0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQzlDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSx1QkFBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3JDLEtBQUssRUFBRTtnQkFDTCxZQUFZLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDbkM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLHdCQUFVLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRTtZQUN2QyxRQUFRLEVBQUU7Z0JBQ1IsZ0NBQWdDO2dCQUNoQyw2Q0FBNkM7Z0JBQzdDLG1EQUFtRDtnQkFDbkQseUNBQXlDO2dCQUN6QyxnRkFBZ0Y7Z0JBQ2hGLEVBQUU7YUFDSCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQge1xuICBOb2RlUHJvamVjdCxcbiAgTm9kZVByb2plY3RPcHRpb25zLFxuICBUeXBlU2NyaXB0SnN4TW9kZSxcbiAgVHlwZVNjcmlwdE1vZHVsZVJlc29sdXRpb24sXG59IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBTYW1wbGVEaXIsIFNhbXBsZUZpbGUgfSBmcm9tIFwiLi4vc2FtcGxlLWZpbGVcIjtcbmltcG9ydCB7IFR5cGVTY3JpcHRBcHBQcm9qZWN0LCBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgfSBmcm9tIFwiLi4vdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIi4uL3V0aWxcIjtcbmltcG9ydCB7IFBvc3RDc3MgfSBmcm9tIFwiLi9wb3N0Y3NzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dEpzQ29tbW9uUHJvamVjdE9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhc3NldHNkaXI/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHRhaWx3aW5kPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0SnNUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnNcbiAgZXh0ZW5kcyBOZXh0SnNDb21tb25Qcm9qZWN0T3B0aW9ucyxcbiAgICBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMge31cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0SnNQcm9qZWN0T3B0aW9uc1xuICBleHRlbmRzIE5leHRKc0NvbW1vblByb2plY3RPcHRpb25zLFxuICAgIE5vZGVQcm9qZWN0T3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzcmNkaXI/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2FtcGxlQ29kZT86IGJvb2xlYW47XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgTmV4dEpzUHJvamVjdCBleHRlbmRzIE5vZGVQcm9qZWN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGFzc2V0c2Rpcjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSB0YWlsd2luZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBOZXh0SnNQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIGplc3Q6IGZhbHNlLFxuICAgICAgbWluTm9kZVZlcnNpb246IFwiMTIuMTMuMFwiLCAvLyBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2luc3RhbGxhdGlvblxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuc3JjZGlyID0gb3B0aW9ucy5zcmNkaXIgPz8gXCJwYWdlc1wiO1xuICAgIHRoaXMuYXNzZXRzZGlyID0gb3B0aW9ucy5hc3NldHNkaXIgPz8gXCJwdWJsaWNcIjtcbiAgICB0aGlzLnRhaWx3aW5kID0gb3B0aW9ucy50YWlsd2luZCA/PyB0cnVlO1xuXG4gICAgbmV3IE5leHRDb21wb25lbnQodGhpcywgeyB0eXBlc2NyaXB0OiBmYWxzZSwgdGFpbHdpbmQ6IHRoaXMudGFpbHdpbmQgfSk7XG5cbiAgICAvLyBnZW5lcmF0ZSBzYW1wbGUgY29kZSBpbiBgcGFnZXNgIGFuZCBgcHVibGljYCBpZiB0aGVzZSBkaXJlY3RvcmllcyBhcmUgZW1wdHkgb3Igbm9uLWV4aXN0ZW50LlxuICAgIGlmIChvcHRpb25zLnNhbXBsZUNvZGUgPz8gdHJ1ZSkge1xuICAgICAgbmV3IE5leHRTYW1wbGVDb2RlKHRoaXMsIHtcbiAgICAgICAgZmlsZUV4dDogXCJqc1wiLFxuICAgICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgICAgICBhc3NldHNkaXI6IHRoaXMuYXNzZXRzZGlyLFxuICAgICAgICB0YWlsd2luZDogdGhpcy50YWlsd2luZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIE5leHRKc1R5cGVTY3JpcHRQcm9qZWN0IGV4dGVuZHMgVHlwZVNjcmlwdEFwcFByb2plY3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBzcmNkaXI6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgYXNzZXRzZGlyOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IHRhaWx3aW5kOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE5leHRKc1R5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucykge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgc3JjZGlyOiBcInBhZ2VzXCIsXG4gICAgICBlc2xpbnQ6IGZhbHNlLFxuICAgICAgbWluTm9kZVZlcnNpb246IFwiMTIuMTMuMFwiLCAvLyBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2luc3RhbGxhdGlvblxuICAgICAgamVzdDogZmFsc2UsXG4gICAgICB0c2NvbmZpZzoge1xuICAgICAgICBpbmNsdWRlOiBbXCIqKi8qLnRzXCIsIFwiKiovKi50c3hcIl0sXG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIC8vIHJlcXVpcmVkIGJ5IE5leHQuanNcbiAgICAgICAgICBlc01vZHVsZUludGVyb3A6IHRydWUsXG4gICAgICAgICAgbW9kdWxlOiBcImVzbmV4dFwiLFxuICAgICAgICAgIG1vZHVsZVJlc29sdXRpb246IFR5cGVTY3JpcHRNb2R1bGVSZXNvbHV0aW9uLk5PREUsXG4gICAgICAgICAgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlLFxuICAgICAgICAgIHJlc29sdmVKc29uTW9kdWxlOiB0cnVlLFxuICAgICAgICAgIGpzeDogVHlwZVNjcmlwdEpzeE1vZGUuUFJFU0VSVkUsXG5cbiAgICAgICAgICAvLyByZWNvbW1lbmRlZCBieSBOZXh0LmpzXG4gICAgICAgICAgYWxsb3dKczogdHJ1ZSxcbiAgICAgICAgICBza2lwTGliQ2hlY2s6IHRydWUsXG4gICAgICAgICAgZm9yY2VDb25zaXN0ZW50Q2FzaW5nSW5GaWxlTmFtZXM6IHRydWUsXG4gICAgICAgICAgbm9FbWl0OiB0cnVlLFxuICAgICAgICAgIGxpYjogW1wiZG9tXCIsIFwiZG9tLml0ZXJhYmxlXCIsIFwiZXNuZXh0XCJdLFxuICAgICAgICAgIHN0cmljdDogZmFsc2UsXG4gICAgICAgICAgdGFyZ2V0OiBcImVzNVwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgLy8gbmV2ZXIgZ2VuZXJhdGUgZGVmYXVsdCBUeXBlU2NyaXB0IHNhbXBsZSBjb2RlLCBzaW5jZSB0aGlzIGNsYXNzIHByb3ZpZGVzIGl0cyBvd25cbiAgICBzdXBlcihcbiAgICAgIGRlZXBNZXJnZShbXG4gICAgICAgIGRlZmF1bHRPcHRpb25zLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICB7IHNhbXBsZUNvZGU6IGZhbHNlIH0sXG4gICAgICBdKSBhcyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnNcbiAgICApO1xuXG4gICAgdGhpcy5zcmNkaXIgPSBvcHRpb25zLnNyY2RpciA/PyBcInBhZ2VzXCI7XG4gICAgdGhpcy5hc3NldHNkaXIgPSBvcHRpb25zLmFzc2V0c2RpciA/PyBcInB1YmxpY1wiO1xuICAgIHRoaXMudGFpbHdpbmQgPSBvcHRpb25zLnRhaWx3aW5kID8/IHRydWU7XG5cbiAgICBuZXcgTmV4dENvbXBvbmVudCh0aGlzLCB7IHR5cGVzY3JpcHQ6IHRydWUsIHRhaWx3aW5kOiB0aGlzLnRhaWx3aW5kIH0pO1xuXG4gICAgLy8gJ25leHQgYnVpbGQnIGNvbW1hbmQgZmFpbHMgaWYgdHNjb25maWcuanNvbiBpcyBpbW11dGFibGVcbiAgICBpZiAodGhpcy50c2NvbmZpZykge1xuICAgICAgdGhpcy50c2NvbmZpZy5maWxlLnJlYWRvbmx5ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZ2VuZXJhdGUgc2FtcGxlIGNvZGUgaW4gYHBhZ2VzYCBhbmQgYHB1YmxpY2AgaWYgdGhlc2UgZGlyZWN0b3JpZXMgYXJlIGVtcHR5IG9yIG5vbi1leGlzdGVudC5cbiAgICBpZiAob3B0aW9ucy5zYW1wbGVDb2RlID8/IHRydWUpIHtcbiAgICAgIG5ldyBOZXh0U2FtcGxlQ29kZSh0aGlzLCB7XG4gICAgICAgIGZpbGVFeHQ6IFwidHN4XCIsXG4gICAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgICAgIGFzc2V0c2RpcjogdGhpcy5hc3NldHNkaXIsXG4gICAgICAgIHRhaWx3aW5kOiB0aGlzLnRhaWx3aW5kLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dENvbXBvbmVudE9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHR5cGVzY3JpcHQ/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHRhaWx3aW5kPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIE5leHRDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHR5cGVzY3JpcHQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFpbHdpbmQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM6IE5leHRDb21wb25lbnRPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLnR5cGVzY3JpcHQgPSBvcHRpb25zLnR5cGVzY3JpcHQgPz8gZmFsc2U7XG4gICAgdGhpcy50YWlsd2luZCA9IG9wdGlvbnMudGFpbHdpbmQgPz8gdHJ1ZTtcblxuICAgIHByb2plY3QuYWRkRGVwcyhcIm5leHRcIiwgXCJyZWFjdFwiLCBcInJlYWN0LWRvbVwiKTtcbiAgICBpZiAodGhpcy50eXBlc2NyaXB0KSB7XG4gICAgICBwcm9qZWN0LmFkZERldkRlcHMoXCJAdHlwZXMvcmVhY3RcIiwgXCJAdHlwZXMvcmVhY3QtZG9tXCIpO1xuICAgIH1cbiAgICBpZiAodGhpcy50YWlsd2luZCkge1xuICAgICAgbmV3IFBvc3RDc3MocHJvamVjdCwgeyB0YWlsd2luZDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvLyBOZXh0SlMgQ0xJIGNvbW1hbmRzLCBzZWU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwaS1yZWZlcmVuY2UvY2xpXG4gICAgcHJvamVjdC5hZGRUYXNrKFwiZGV2XCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlN0YXJ0cyB0aGUgTmV4dC5qcyBhcHBsaWNhdGlvbiBpbiBkZXZlbG9wbWVudCBtb2RlXCIsXG4gICAgICBleGVjOiBcIm5leHQgZGV2XCIsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LmNvbXBpbGVUYXNrLmV4ZWMoXCJuZXh0IGJ1aWxkXCIpO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKFwiZXhwb3J0XCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkV4cG9ydHMgdGhlIGFwcGxpY2F0aW9uIGZvciBwcm9kdWN0aW9uIGRlcGxveW1lbnRcIixcbiAgICAgIGV4ZWM6IFwibmV4dCBleHBvcnRcIixcbiAgICB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzayhcInNlcnZlclwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJTdGFydHMgdGhlIE5leHQuanMgYXBwbGljYXRpb24gaW4gcHJvZHVjdGlvbiBtb2RlXCIsXG4gICAgICBleGVjOiBcIm5leHQgc3RhcnRcIixcbiAgICB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzayhcInRlbGVtZXRyeVwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJDaGVja3MgdGhlIHN0YXR1cyBvZiBOZXh0LmpzIHRlbGVtZXRyeSBjb2xsZWN0aW9uXCIsXG4gICAgICBleGVjOiBcIm5leHQgdGVsZW1ldHJ5XCIsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0Lm5wbWlnbm9yZT8uZXhjbHVkZShcIiMgTmV4dC5qc1wiLCBcIi8ubmV4dC9cIik7XG4gICAgcHJvamVjdC5naXRpZ25vcmUuZXhjbHVkZShcIiMgTmV4dC5qc1wiLCBcIi8ubmV4dC9cIik7XG4gIH1cbn1cblxuaW50ZXJmYWNlIE5leHRTYW1wbGVDb2RlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWxlIGV4dGVuc2lvbiBmb3Igc2FtcGxlIGphdmFzY3JpcHQgY29kZSB0byBiZSBzYXZlZCBhcy5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJqc1wiXG4gICAqL1xuICByZWFkb25seSBmaWxlRXh0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIE5leHQuanMgcGFnZXMgYXJlIGRlY2xhcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggYXBwIGFzc2V0cyByZXNpZGUuXG4gICAqL1xuICByZWFkb25seSBhc3NldHNkaXI6IHN0cmluZztcblxuICAvKipcbiAgICogU2V0dXAgVGFpbHdpbmQgYXMgYSBQb3N0Q1NTIHBsdWdpbi5cbiAgICovXG4gIHJlYWRvbmx5IHRhaWx3aW5kOiBib29sZWFuO1xufVxuXG5jbGFzcyBOZXh0U2FtcGxlQ29kZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsZUV4dDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGFzc2V0c2Rpcjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHRhaWx3aW5kOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IE5vZGVQcm9qZWN0LCBvcHRpb25zOiBOZXh0U2FtcGxlQ29kZU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuZmlsZUV4dCA9IG9wdGlvbnMuZmlsZUV4dCA/PyBcImpzXCI7XG4gICAgdGhpcy5zcmNkaXIgPSBvcHRpb25zLnNyY2RpcjtcbiAgICB0aGlzLmFzc2V0c2RpciA9IG9wdGlvbnMuYXNzZXRzZGlyO1xuICAgIHRoaXMudGFpbHdpbmQgPSBvcHRpb25zLnRhaWx3aW5kO1xuXG4gICAgY29uc3QgaW5kZXhKcyA9IFtcbiAgICAgICdpbXBvcnQgSGVhZCBmcm9tIFwibmV4dC9oZWFkXCInLFxuICAgICAgXCJcIixcbiAgICAgIFwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSG9tZSgpIHtcIixcbiAgICAgIFwiICByZXR1cm4gKFwiLFxuICAgICAgJyAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPicsXG4gICAgICBcIiAgICAgIDxIZWFkPlwiLFxuICAgICAgXCIgICAgICAgIDx0aXRsZT5DcmVhdGUgTmV4dCBBcHA8L3RpdGxlPlwiLFxuICAgICAgXCIgICAgICA8L0hlYWQ+XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICA8bWFpbj5cIixcbiAgICAgICcgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0aXRsZVwiPicsXG4gICAgICAnICAgICAgICAgIFdlbGNvbWUgdG8gPGEgaHJlZj1cImh0dHBzOi8vbmV4dGpzLm9yZ1wiPk5leHQuanMhPC9hPicsXG4gICAgICBcIiAgICAgICAgPC9oMT5cIixcbiAgICAgIFwiXCIsXG4gICAgICAnICAgICAgICA8cCBjbGFzc05hbWU9XCJkZXNjcmlwdGlvblwiPicsXG4gICAgICBcIiAgICAgICAgICBHZXQgc3RhcnRlZCBieSBlZGl0aW5nIDxjb2RlPnBhZ2VzL2luZGV4LmpzPC9jb2RlPlwiLFxuICAgICAgXCIgICAgICAgIDwvcD5cIixcbiAgICAgIFwiXCIsXG4gICAgICAnICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWRcIj4nLFxuICAgICAgJyAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3NcIiBjbGFzc05hbWU9XCJjYXJkXCI+JyxcbiAgICAgIFwiICAgICAgICAgICAgPGgzPkRvY3VtZW50YXRpb24gJnJhcnI7PC9oMz5cIixcbiAgICAgIFwiICAgICAgICAgICAgPHA+RmluZCBpbi1kZXB0aCBpbmZvcm1hdGlvbiBhYm91dCBOZXh0LmpzIGZlYXR1cmVzIGFuZCBBUEkuPC9wPlwiLFxuICAgICAgXCIgICAgICAgICAgPC9hPlwiLFxuICAgICAgXCJcIixcbiAgICAgICcgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vbmV4dGpzLm9yZy9sZWFyblwiIGNsYXNzTmFtZT1cImNhcmRcIj4nLFxuICAgICAgXCIgICAgICAgICAgICA8aDM+TGVhcm4gJnJhcnI7PC9oMz5cIixcbiAgICAgIFwiICAgICAgICAgICAgPHA+TGVhcm4gYWJvdXQgTmV4dC5qcyBpbiBhbiBpbnRlcmFjdGl2ZSBjb3Vyc2Ugd2l0aCBxdWl6emVzITwvcD5cIixcbiAgICAgIFwiICAgICAgICAgIDwvYT5cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgICA8YVwiLFxuICAgICAgJyAgICAgICAgICAgIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL25leHQuanMvdHJlZS9tYXN0ZXIvZXhhbXBsZXNcIicsXG4gICAgICAnICAgICAgICAgICAgY2xhc3NOYW1lPVwiY2FyZFwiJyxcbiAgICAgIFwiICAgICAgICAgID5cIixcbiAgICAgIFwiICAgICAgICAgICAgPGgzPkV4YW1wbGVzICZyYXJyOzwvaDM+XCIsXG4gICAgICBcIiAgICAgICAgICAgIDxwPkRpc2NvdmVyIGFuZCBkZXBsb3kgYm9pbGVycGxhdGUgZXhhbXBsZSBOZXh0LmpzIHByb2plY3RzLjwvcD5cIixcbiAgICAgIFwiICAgICAgICAgIDwvYT5cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgICA8YVwiLFxuICAgICAgJyAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3ZlcmNlbC5jb20vaW1wb3J0P2ZpbHRlcj1uZXh0LmpzJnV0bV9zb3VyY2U9Y3JlYXRlLW5leHQtYXBwJnV0bV9tZWRpdW09ZGVmYXVsdC10ZW1wbGF0ZSZ1dG1fY2FtcGFpZ249Y3JlYXRlLW5leHQtYXBwXCInLFxuICAgICAgJyAgICAgICAgICAgIGNsYXNzTmFtZT1cImNhcmRcIicsXG4gICAgICBcIiAgICAgICAgICA+XCIsXG4gICAgICBcIiAgICAgICAgICAgIDxoMz5EZXBsb3kgJnJhcnI7PC9oMz5cIixcbiAgICAgIFwiICAgICAgICAgICAgPHA+XCIsXG4gICAgICBcIiAgICAgICAgICAgICAgSW5zdGFudGx5IGRlcGxveSB5b3VyIE5leHQuanMgc2l0ZSB0byBhIHB1YmxpYyBVUkwgd2l0aCBWZXJjZWwuXCIsXG4gICAgICBcIiAgICAgICAgICAgIDwvcD5cIixcbiAgICAgIFwiICAgICAgICAgIDwvYT5cIixcbiAgICAgIFwiICAgICAgICA8L2Rpdj5cIixcbiAgICAgIFwiICAgICAgPC9tYWluPlwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgPGZvb3Rlcj5cIixcbiAgICAgIFwiICAgICAgICA8YVwiLFxuICAgICAgJyAgICAgICAgICBocmVmPVwiaHR0cHM6Ly92ZXJjZWwuY29tP3V0bV9zb3VyY2U9Y3JlYXRlLW5leHQtYXBwJnV0bV9tZWRpdW09ZGVmYXVsdC10ZW1wbGF0ZSZ1dG1fY2FtcGFpZ249Y3JlYXRlLW5leHQtYXBwXCInLFxuICAgICAgJyAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIicsXG4gICAgICAnICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIicsXG4gICAgICBcIiAgICAgICAgPlwiLFxuICAgICAgXCIgICAgICAgICAgUG93ZXJlZCBieSBWZXJjZWxcIixcbiAgICAgICcgICAgICAgICAgPGltZyBzcmM9XCIvdmVyY2VsLnN2Z1wiIGFsdD1cIlZlcmNlbCBMb2dvXCIgY2xhc3NOYW1lPVwibG9nb1wiIC8+JyxcbiAgICAgIFwiICAgICAgICA8L2E+XCIsXG4gICAgICBcIiAgICAgIDwvZm9vdGVyPlwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgPHN0eWxlIGpzeD57YFwiLFxuICAgICAgXCIgICAgICAgIC5jb250YWluZXIge1wiLFxuICAgICAgXCIgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7XCIsXG4gICAgICBcIiAgICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcIixcbiAgICAgIFwiICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XCIsXG4gICAgICBcIiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1wiLFxuICAgICAgXCIgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCIsXG4gICAgICBcIiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgbWFpbiB7XCIsXG4gICAgICBcIiAgICAgICAgICBwYWRkaW5nOiA1cmVtIDA7XCIsXG4gICAgICBcIiAgICAgICAgICBmbGV4OiAxO1wiLFxuICAgICAgXCIgICAgICAgICAgZGlzcGxheTogZmxleDtcIixcbiAgICAgIFwiICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XCIsXG4gICAgICBcIiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIixcbiAgICAgIFwiICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICBmb290ZXIge1wiLFxuICAgICAgXCIgICAgICAgICAgd2lkdGg6IDEwMCU7XCIsXG4gICAgICBcIiAgICAgICAgICBoZWlnaHQ6IDEwMHB4O1wiLFxuICAgICAgXCIgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlYWVhZWE7XCIsXG4gICAgICBcIiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1wiLFxuICAgICAgXCIgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCIsXG4gICAgICBcIiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgZm9vdGVyIGltZyB7XCIsXG4gICAgICBcIiAgICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgZm9vdGVyIGEge1wiLFxuICAgICAgXCIgICAgICAgICAgZGlzcGxheTogZmxleDtcIixcbiAgICAgIFwiICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1wiLFxuICAgICAgXCIgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIGEge1wiLFxuICAgICAgXCIgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XCIsXG4gICAgICBcIiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICAudGl0bGUgYSB7XCIsXG4gICAgICBcIiAgICAgICAgICBjb2xvcjogIzAwNzBmMztcIixcbiAgICAgIFwiICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIC50aXRsZSBhOmhvdmVyLFwiLFxuICAgICAgXCIgICAgICAgIC50aXRsZSBhOmZvY3VzLFwiLFxuICAgICAgXCIgICAgICAgIC50aXRsZSBhOmFjdGl2ZSB7XCIsXG4gICAgICBcIiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIC50aXRsZSB7XCIsXG4gICAgICBcIiAgICAgICAgICBtYXJnaW46IDA7XCIsXG4gICAgICBcIiAgICAgICAgICBsaW5lLWhlaWdodDogMS4xNTtcIixcbiAgICAgIFwiICAgICAgICAgIGZvbnQtc2l6ZTogNHJlbTtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIC50aXRsZSxcIixcbiAgICAgIFwiICAgICAgICAuZGVzY3JpcHRpb24ge1wiLFxuICAgICAgXCIgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgLmRlc2NyaXB0aW9uIHtcIixcbiAgICAgIFwiICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XCIsXG4gICAgICBcIiAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIGNvZGUge1wiLFxuICAgICAgXCIgICAgICAgICAgYmFja2dyb3VuZDogI2ZhZmFmYTtcIixcbiAgICAgIFwiICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcIixcbiAgICAgIFwiICAgICAgICAgIHBhZGRpbmc6IDAuNzVyZW07XCIsXG4gICAgICBcIiAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcIixcbiAgICAgIFwiICAgICAgICAgIGZvbnQtZmFtaWx5OiBNZW5sbywgTW9uYWNvLCBMdWNpZGEgQ29uc29sZSwgTGliZXJhdGlvbiBNb25vLFwiLFxuICAgICAgXCIgICAgICAgICAgICBEZWphVnUgU2FucyBNb25vLCBCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8sIENvdXJpZXIgTmV3LCBtb25vc3BhY2U7XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICAuZ3JpZCB7XCIsXG4gICAgICBcIiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1wiLFxuICAgICAgXCIgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcIixcbiAgICAgIFwiICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1wiLFxuICAgICAgXCIgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1wiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICAgIG1heC13aWR0aDogODAwcHg7XCIsXG4gICAgICBcIiAgICAgICAgICBtYXJnaW4tdG9wOiAzcmVtO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgLmNhcmQge1wiLFxuICAgICAgXCIgICAgICAgICAgbWFyZ2luOiAxcmVtO1wiLFxuICAgICAgXCIgICAgICAgICAgZmxleC1iYXNpczogNDUlO1wiLFxuICAgICAgXCIgICAgICAgICAgcGFkZGluZzogMS41cmVtO1wiLFxuICAgICAgXCIgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcIixcbiAgICAgIFwiICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1wiLFxuICAgICAgXCIgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1wiLFxuICAgICAgXCIgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VhZWFlYTtcIixcbiAgICAgIFwiICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XCIsXG4gICAgICBcIiAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjE1cyBlYXNlLCBib3JkZXItY29sb3IgMC4xNXMgZWFzZTtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIC5jYXJkOmhvdmVyLFwiLFxuICAgICAgXCIgICAgICAgIC5jYXJkOmZvY3VzLFwiLFxuICAgICAgXCIgICAgICAgIC5jYXJkOmFjdGl2ZSB7XCIsXG4gICAgICBcIiAgICAgICAgICBjb2xvcjogIzAwNzBmMztcIixcbiAgICAgIFwiICAgICAgICAgIGJvcmRlci1jb2xvcjogIzAwNzBmMztcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIC5jYXJkIGgzIHtcIixcbiAgICAgIFwiICAgICAgICAgIG1hcmdpbjogMCAwIDFyZW0gMDtcIixcbiAgICAgIFwiICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgLmNhcmQgcCB7XCIsXG4gICAgICBcIiAgICAgICAgICBtYXJnaW46IDA7XCIsXG4gICAgICBcIiAgICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XCIsXG4gICAgICBcIiAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgLmxvZ28ge1wiLFxuICAgICAgXCIgICAgICAgICAgaGVpZ2h0OiAxZW07XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcIixcbiAgICAgIFwiICAgICAgICAgIC5ncmlkIHtcIixcbiAgICAgIFwiICAgICAgICAgICAgd2lkdGg6IDEwMCU7XCIsXG4gICAgICBcIiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XCIsXG4gICAgICBcIiAgICAgICAgICB9XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCIgICAgICBgfTwvc3R5bGU+XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICA8c3R5bGUganN4IGdsb2JhbD57YFwiLFxuICAgICAgXCIgICAgICAgIGh0bWwsXCIsXG4gICAgICBcIiAgICAgICAgYm9keSB7XCIsXG4gICAgICBcIiAgICAgICAgICBwYWRkaW5nOiAwO1wiLFxuICAgICAgXCIgICAgICAgICAgbWFyZ2luOiAwO1wiLFxuICAgICAgXCIgICAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgU2Vnb2UgVUksIFJvYm90byxcIixcbiAgICAgIFwiICAgICAgICAgICAgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgRmlyYSBTYW5zLCBEcm9pZCBTYW5zLCBIZWx2ZXRpY2EgTmV1ZSxcIixcbiAgICAgIFwiICAgICAgICAgICAgc2Fucy1zZXJpZjtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgICoge1wiLFxuICAgICAgXCIgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIiAgICAgIGB9PC9zdHlsZT5cIixcbiAgICAgIFwiICAgIDwvZGl2PlwiLFxuICAgICAgXCIgIClcIixcbiAgICAgIFwifVwiLFxuICAgICAgXCJcIixcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMudGFpbHdpbmQpIHtcbiAgICAgIGluZGV4SnMudW5zaGlmdCgnaW1wb3J0IFwidGFpbHdpbmRjc3MvdGFpbHdpbmQuY3NzXCInKTtcbiAgICB9XG5cbiAgICBjb25zdCB2ZXJjZWxTdmcgPSBbXG4gICAgICAnPHN2ZyB3aWR0aD1cIjI4M1wiIGhlaWdodD1cIjY0XCIgdmlld0JveD1cIjAgMCAyODMgNjRcIiBmaWxsPVwibm9uZVwiICcsXG4gICAgICAnICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4nLFxuICAgICAgJyAgICA8cGF0aCBkPVwiTTE0MS4wNCAxNmMtMTEuMDQgMC0xOSA3LjItMTkgMThzOC45NiAxOCAyMCAxOGM2LjY3IDAgMTIuNTUtMi42NCAxNi4xOS03LjA5bC03LjY1LTQuNDJjLTIuMDIgMi4yMS01LjA5IDMuNS04LjU0IDMuNS00Ljc5IDAtOC44Ni0yLjUtMTAuMzctNi41aDI4LjAyYy4yMi0xLjEyLjM1LTIuMjguMzUtMy41IDAtMTAuNzktNy45Ni0xNy45OS0xOS0xNy45OXptLTkuNDYgMTQuNWMxLjI1LTMuOTkgNC42Ny02LjUgOS40NS02LjUgNC43OSAwIDguMjEgMi41MSA5LjQ1IDYuNWgtMTguOXpNMjQ4LjcyIDE2Yy0xMS4wNCAwLTE5IDcuMi0xOSAxOHM4Ljk2IDE4IDIwIDE4YzYuNjcgMCAxMi41NS0yLjY0IDE2LjE5LTcuMDlsLTcuNjUtNC40MmMtMi4wMiAyLjIxLTUuMDkgMy41LTguNTQgMy41LTQuNzkgMC04Ljg2LTIuNS0xMC4zNy02LjVoMjguMDJjLjIyLTEuMTIuMzUtMi4yOC4zNS0zLjUgMC0xMC43OS03Ljk2LTE3Ljk5LTE5LTE3Ljk5em0tOS40NSAxNC41YzEuMjUtMy45OSA0LjY3LTYuNSA5LjQ1LTYuNSA0Ljc5IDAgOC4yMSAyLjUxIDkuNDUgNi41aC0xOC45ek0yMDAuMjQgMzRjMCA2IDMuOTIgMTAgMTAgMTAgNC4xMiAwIDcuMjEtMS44NyA4LjgtNC45Mmw3LjY4IDQuNDNjLTMuMTggNS4zLTkuMTQgOC40OS0xNi40OCA4LjQ5LTExLjA1IDAtMTktNy4yLTE5LTE4czcuOTYtMTggMTktMThjNy4zNCAwIDEzLjI5IDMuMTkgMTYuNDggOC40OWwtNy42OCA0LjQzYy0xLjU5LTMuMDUtNC42OC00LjkyLTguOC00LjkyLTYuMDcgMC0xMCA0LTEwIDEwem04Mi40OC0yOXY0NmgtOVY1aDl6TTM2Ljk1IDBMNzMuOSA2NEgwTDM2Ljk1IDB6bTkyLjM4IDVsLTI3LjcxIDQ4TDczLjkxIDVIODQuM2wxNy4zMiAzMCAxNy4zMi0zMGgxMC4zOXptNTguOTEgMTJ2OS42OWMtMS0uMjktMi4wNi0uNDktMy4yLS40OS01LjgxIDAtMTAgNC0xMCAxMFY1MWgtOVYxN2g5djkuMmMwLTUuMDggNS45MS05LjIgMTMuMi05LjJ6XCIgZmlsbD1cIiMwMDBcIi8+JyxcbiAgICAgIFwiPC9zdmc+XCIsXG4gICAgXTtcblxuICAgIG5ldyBTYW1wbGVEaXIocHJvamVjdCwgdGhpcy5zcmNkaXIsIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgIFtcImluZGV4LlwiICsgdGhpcy5maWxlRXh0XTogaW5kZXhKcy5qb2luKFwiXFxuXCIpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIG5ldyBTYW1wbGVEaXIocHJvamVjdCwgdGhpcy5hc3NldHNkaXIsIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgIFwidmVyY2VsLnN2Z1wiOiB2ZXJjZWxTdmcuam9pbihcIlxcblwiKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBuZXcgU2FtcGxlRmlsZShwcm9qZWN0LCBcIm5leHQtZW52LmQudHNcIiwge1xuICAgICAgY29udGVudHM6IFtcbiAgICAgICAgJy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwibmV4dFwiIC8+JyxcbiAgICAgICAgJy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwibmV4dC90eXBlcy9nbG9iYWxcIiAvPicsXG4gICAgICAgICcvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIm5leHQvaW1hZ2UtdHlwZXMvZ2xvYmFsXCIgLz4nLFxuICAgICAgICBcIi8vIE5PVEU6IFRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGVkaXRlZFwiLFxuICAgICAgICBcIi8vIHNlZSBodHRwczovL25leHRqcy5vcmcvZG9jcy9iYXNpYy1mZWF0dXJlcy90eXBlc2NyaXB0IGZvciBtb3JlIGluZm9ybWF0aW9uLlwiLFxuICAgICAgICBcIlwiLFxuICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
393
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93ZWIvbmV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUF5QztBQUN6Qyw4Q0FLdUI7QUFDdkIsZ0RBQXVEO0FBQ3ZELDhDQUErRTtBQUMvRSxrQ0FBb0M7QUFDcEMsdUNBQW9DO0FBMENwQzs7OztHQUlHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsd0JBQVc7SUFrQjVDLFlBQVksT0FBNkI7O1FBQ3ZDLEtBQUssQ0FBQztZQUNKLElBQUksRUFBRSxLQUFLO1lBQ1gsY0FBYyxFQUFFLFNBQVM7WUFDekIsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sU0FBRyxPQUFPLENBQUMsTUFBTSxtQ0FBSSxPQUFPLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsU0FBRyxPQUFPLENBQUMsU0FBUyxtQ0FBSSxRQUFRLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsU0FBRyxPQUFPLENBQUMsUUFBUSxtQ0FBSSxJQUFJLENBQUM7UUFFekMsSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFeEUsK0ZBQStGO1FBQy9GLFVBQUksT0FBTyxDQUFDLFVBQVUsbUNBQUksSUFBSSxFQUFFO1lBQzlCLElBQUksY0FBYyxDQUFDLElBQUksRUFBRTtnQkFDdkIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUN4QixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O0FBeENILHNDQXlDQzs7O0FBRUQ7Ozs7R0FJRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsaUNBQW9CO0lBa0IvRCxZ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QkFDTCxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDOUM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLHVCQUFTLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDckMsS0FBSyxFQUFFO2dCQUNMLFlBQVksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNuQztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksd0JBQVUsQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFO1lBQ3ZDLFFBQVEsRUFBRTtnQkFDUixnQ0FBZ0M7Z0JBQ2hDLDZDQUE2QztnQkFDN0MsbURBQW1EO2dCQUNuRCx5Q0FBeUM7Z0JBQ3pDLGdGQUFnRjtnQkFDaEYsRUFBRTthQUNILENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7XG4gIE5vZGVQcm9qZWN0LFxuICBOb2RlUHJvamVjdE9wdGlvbnMsXG4gIFR5cGVTY3JpcHRKc3hNb2RlLFxuICBUeXBlU2NyaXB0TW9kdWxlUmVzb2x1dGlvbixcbn0gZnJvbSBcIi4uL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IFNhbXBsZURpciwgU2FtcGxlRmlsZSB9IGZyb20gXCIuLi9zYW1wbGUtZmlsZVwiO1xuaW1wb3J0IHsgVHlwZVNjcmlwdEFwcFByb2plY3QsIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gXCIuLi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tIFwiLi4vdXRpbFwiO1xuaW1wb3J0IHsgUG9zdENzcyB9IGZyb20gXCIuL3Bvc3Rjc3NcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXh0SnNDb21tb25Qcm9qZWN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBc3NldHMgZGlyZWN0b3J5XG4gICAqXG4gICAqIEBkZWZhdWx0IFwicHVibGljXCJcbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0c2Rpcj86IHN0cmluZztcblxuICAvKipcbiAgICogU2V0dXAgVGFpbHdpbmQgQ1NTIGFzIGEgUG9zdENTUyBwbHVnaW4uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pbnN0YWxsYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAZmVhdHVyZWRcbiAgICovXG4gIHJlYWRvbmx5IHRhaWx3aW5kPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0SnNUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnNcbiAgZXh0ZW5kcyBOZXh0SnNDb21tb25Qcm9qZWN0T3B0aW9ucyxcbiAgICBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMge31cblxuZXhwb3J0IGludGVyZmFjZSBOZXh0SnNQcm9qZWN0T3B0aW9uc1xuICBleHRlbmRzIE5leHRKc0NvbW1vblByb2plY3RPcHRpb25zLFxuICAgIE5vZGVQcm9qZWN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUeXBlc2NyaXB0IHNvdXJjZXMgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcInNyY1wiXG4gICAqL1xuICByZWFkb25seSBzcmNkaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIG9uZS10aW1lIHNhbXBsZSBpbiBgcGFnZXMvYCBhbmQgYHB1YmxpYy9gIGlmIHRoZXJlIGFyZSBubyBmaWxlcyB0aGVyZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2FtcGxlQ29kZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogTmV4dC5qcyBwcm9qZWN0IHdpdGhvdXQgVHlwZVNjcmlwdC5cbiAqXG4gKiBAcGppZCBuZXh0anNcbiAqL1xuZXhwb3J0IGNsYXNzIE5leHRKc1Byb2plY3QgZXh0ZW5kcyBOb2RlUHJvamVjdCB7XG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIHNvdXJjZSBmaWxlcyByZXNpZGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggYXBwIGFzc2V0cyByZXNpZGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXNzZXRzZGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldHVwIFRhaWx3aW5kIGFzIGEgUG9zdENTUyBwbHVnaW4uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pbnN0YWxsYXRpb25cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWlsd2luZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBOZXh0SnNQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIGplc3Q6IGZhbHNlLFxuICAgICAgbWluTm9kZVZlcnNpb246IFwiMTIuMTMuMFwiLCAvLyBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2luc3RhbGxhdGlvblxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuc3JjZGlyID0gb3B0aW9ucy5zcmNkaXIgPz8gXCJwYWdlc1wiO1xuICAgIHRoaXMuYXNzZXRzZGlyID0gb3B0aW9ucy5hc3NldHNkaXIgPz8gXCJwdWJsaWNcIjtcbiAgICB0aGlzLnRhaWx3aW5kID0gb3B0aW9ucy50YWlsd2luZCA/PyB0cnVlO1xuXG4gICAgbmV3IE5leHRDb21wb25lbnQodGhpcywgeyB0eXBlc2NyaXB0OiBmYWxzZSwgdGFpbHdpbmQ6IHRoaXMudGFpbHdpbmQgfSk7XG5cbiAgICAvLyBnZW5lcmF0ZSBzYW1wbGUgY29kZSBpbiBgcGFnZXNgIGFuZCBgcHVibGljYCBpZiB0aGVzZSBkaXJlY3RvcmllcyBhcmUgZW1wdHkgb3Igbm9uLWV4aXN0ZW50LlxuICAgIGlmIChvcHRpb25zLnNhbXBsZUNvZGUgPz8gdHJ1ZSkge1xuICAgICAgbmV3IE5leHRTYW1wbGVDb2RlKHRoaXMsIHtcbiAgICAgICAgZmlsZUV4dDogXCJqc1wiLFxuICAgICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgICAgICBhc3NldHNkaXI6IHRoaXMuYXNzZXRzZGlyLFxuICAgICAgICB0YWlsd2luZDogdGhpcy50YWlsd2luZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE5leHQuanMgcHJvamVjdCB3aXRoIFR5cGVTY3JpcHQuXG4gKlxuICogQHBqaWQgbmV4dGpzLXRzXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXh0SnNUeXBlU2NyaXB0UHJvamVjdCBleHRlbmRzIFR5cGVTY3JpcHRBcHBQcm9qZWN0IHtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggc291cmNlIGZpbGVzIHJlc2lkZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzcmNkaXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBhcHAgYXNzZXRzIHJlc2lkZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhc3NldHNkaXI6IHN0cmluZztcblxuICAvKipcbiAgICogU2V0dXAgVGFpbHdpbmQgYXMgYSBQb3N0Q1NTIHBsdWdpbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2luc3RhbGxhdGlvblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhaWx3aW5kOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE5leHRKc1R5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucykge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgc3JjZGlyOiBcInBhZ2VzXCIsXG4gICAgICBlc2xpbnQ6IGZhbHNlLFxuICAgICAgbWluTm9kZVZlcnNpb246IFwiMTIuMTMuMFwiLCAvLyBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2luc3RhbGxhdGlvblxuICAgICAgamVzdDogZmFsc2UsXG4gICAgICB0c2NvbmZpZzoge1xuICAgICAgICBpbmNsdWRlOiBbXCIqKi8qLnRzXCIsIFwiKiovKi50c3hcIl0sXG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIC8vIHJlcXVpcmVkIGJ5IE5leHQuanNcbiAgICAgICAgICBlc01vZHVsZUludGVyb3A6IHRydWUsXG4gICAgICAgICAgbW9kdWxlOiBcImVzbmV4dFwiLFxuICAgICAgICAgIG1vZHVsZVJlc29sdXRpb246IFR5cGVTY3JpcHRNb2R1bGVSZXNvbHV0aW9uLk5PREUsXG4gICAgICAgICAgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlLFxuICAgICAgICAgIHJlc29sdmVKc29uTW9kdWxlOiB0cnVlLFxuICAgICAgICAgIGpzeDogVHlwZVNjcmlwdEpzeE1vZGUuUFJFU0VSVkUsXG5cbiAgICAgICAgICAvLyByZWNvbW1lbmRlZCBieSBOZXh0LmpzXG4gICAgICAgICAgYWxsb3dKczogdHJ1ZSxcbiAgICAgICAgICBza2lwTGliQ2hlY2s6IHRydWUsXG4gICAgICAgICAgZm9yY2VDb25zaXN0ZW50Q2FzaW5nSW5GaWxlTmFtZXM6IHRydWUsXG4gICAgICAgICAgbm9FbWl0OiB0cnVlLFxuICAgICAgICAgIGxpYjogW1wiZG9tXCIsIFwiZG9tLml0ZXJhYmxlXCIsIFwiZXNuZXh0XCJdLFxuICAgICAgICAgIHN0cmljdDogZmFsc2UsXG4gICAgICAgICAgdGFyZ2V0OiBcImVzNVwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgLy8gbmV2ZXIgZ2VuZXJhdGUgZGVmYXVsdCBUeXBlU2NyaXB0IHNhbXBsZSBjb2RlLCBzaW5jZSB0aGlzIGNsYXNzIHByb3ZpZGVzIGl0cyBvd25cbiAgICBzdXBlcihcbiAgICAgIGRlZXBNZXJnZShbXG4gICAgICAgIGRlZmF1bHRPcHRpb25zLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICB7IHNhbXBsZUNvZGU6IGZhbHNlIH0sXG4gICAgICBdKSBhcyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnNcbiAgICApO1xuXG4gICAgdGhpcy5zcmNkaXIgPSBvcHRpb25zLnNyY2RpciA/PyBcInBhZ2VzXCI7XG4gICAgdGhpcy5hc3NldHNkaXIgPSBvcHRpb25zLmFzc2V0c2RpciA/PyBcInB1YmxpY1wiO1xuICAgIHRoaXMudGFpbHdpbmQgPSBvcHRpb25zLnRhaWx3aW5kID8/IHRydWU7XG5cbiAgICBuZXcgTmV4dENvbXBvbmVudCh0aGlzLCB7IHR5cGVzY3JpcHQ6IHRydWUsIHRhaWx3aW5kOiB0aGlzLnRhaWx3aW5kIH0pO1xuXG4gICAgLy8gJ25leHQgYnVpbGQnIGNvbW1hbmQgZmFpbHMgaWYgdHNjb25maWcuanNvbiBpcyBpbW11dGFibGVcbiAgICBpZiAodGhpcy50c2NvbmZpZykge1xuICAgICAgdGhpcy50c2NvbmZpZy5maWxlLnJlYWRvbmx5ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZ2VuZXJhdGUgc2FtcGxlIGNvZGUgaW4gYHBhZ2VzYCBhbmQgYHB1YmxpY2AgaWYgdGhlc2UgZGlyZWN0b3JpZXMgYXJlIGVtcHR5IG9yIG5vbi1leGlzdGVudC5cbiAgICBpZiAob3B0aW9ucy5zYW1wbGVDb2RlID8/IHRydWUpIHtcbiAgICAgIG5ldyBOZXh0U2FtcGxlQ29kZSh0aGlzLCB7XG4gICAgICAgIGZpbGVFeHQ6IFwidHN4XCIsXG4gICAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgICAgIGFzc2V0c2RpcjogdGhpcy5hc3NldHNkaXIsXG4gICAgICAgIHRhaWx3aW5kOiB0aGlzLnRhaWx3aW5kLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dENvbXBvbmVudE9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBhcHBseSBvcHRpb25zIHNwZWNpZmljIGZvciBUeXBlU2NyaXB0IE5leHQuanMgcHJvamVjdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB0eXBlc2NyaXB0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0dXAgVGFpbHdpbmQgYXMgYSBQb3N0Q1NTIHBsdWdpbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2luc3RhbGxhdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB0YWlsd2luZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBOZXh0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0eXBlc2NyaXB0OiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IHRhaWx3aW5kOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IE5vZGVQcm9qZWN0LCBvcHRpb25zOiBOZXh0Q29tcG9uZW50T3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy50eXBlc2NyaXB0ID0gb3B0aW9ucy50eXBlc2NyaXB0ID8/IGZhbHNlO1xuICAgIHRoaXMudGFpbHdpbmQgPSBvcHRpb25zLnRhaWx3aW5kID8/IHRydWU7XG5cbiAgICBwcm9qZWN0LmFkZERlcHMoXCJuZXh0XCIsIFwicmVhY3RcIiwgXCJyZWFjdC1kb21cIik7XG4gICAgaWYgKHRoaXMudHlwZXNjcmlwdCkge1xuICAgICAgcHJvamVjdC5hZGREZXZEZXBzKFwiQHR5cGVzL3JlYWN0XCIsIFwiQHR5cGVzL3JlYWN0LWRvbVwiKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudGFpbHdpbmQpIHtcbiAgICAgIG5ldyBQb3N0Q3NzKHByb2plY3QsIHsgdGFpbHdpbmQ6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLy8gTmV4dEpTIENMSSBjb21tYW5kcywgc2VlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcGktcmVmZXJlbmNlL2NsaVxuICAgIHByb2plY3QuYWRkVGFzayhcImRldlwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJTdGFydHMgdGhlIE5leHQuanMgYXBwbGljYXRpb24gaW4gZGV2ZWxvcG1lbnQgbW9kZVwiLFxuICAgICAgZXhlYzogXCJuZXh0IGRldlwiLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5jb21waWxlVGFzay5leGVjKFwibmV4dCBidWlsZFwiKTtcblxuICAgIHByb2plY3QuYWRkVGFzayhcImV4cG9ydFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJFeHBvcnRzIHRoZSBhcHBsaWNhdGlvbiBmb3IgcHJvZHVjdGlvbiBkZXBsb3ltZW50XCIsXG4gICAgICBleGVjOiBcIm5leHQgZXhwb3J0XCIsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LmFkZFRhc2soXCJzZXJ2ZXJcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiU3RhcnRzIHRoZSBOZXh0LmpzIGFwcGxpY2F0aW9uIGluIHByb2R1Y3Rpb24gbW9kZVwiLFxuICAgICAgZXhlYzogXCJuZXh0IHN0YXJ0XCIsXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LmFkZFRhc2soXCJ0ZWxlbWV0cnlcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiQ2hlY2tzIHRoZSBzdGF0dXMgb2YgTmV4dC5qcyB0ZWxlbWV0cnkgY29sbGVjdGlvblwiLFxuICAgICAgZXhlYzogXCJuZXh0IHRlbGVtZXRyeVwiLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5ucG1pZ25vcmU/LmV4Y2x1ZGUoXCIjIE5leHQuanNcIiwgXCIvLm5leHQvXCIpO1xuICAgIHByb2plY3QuZ2l0aWdub3JlLmV4Y2x1ZGUoXCIjIE5leHQuanNcIiwgXCIvLm5leHQvXCIpO1xuICB9XG59XG5cbmludGVyZmFjZSBOZXh0U2FtcGxlQ29kZU9wdGlvbnMge1xuICAvKipcbiAgICogRmlsZSBleHRlbnNpb24gZm9yIHNhbXBsZSBqYXZhc2NyaXB0IGNvZGUgdG8gYmUgc2F2ZWQgYXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwianNcIlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZUV4dD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBOZXh0LmpzIHBhZ2VzIGFyZSBkZWNsYXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIGFwcCBhc3NldHMgcmVzaWRlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRzZGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldHVwIFRhaWx3aW5kIGFzIGEgUG9zdENTUyBwbHVnaW4uXG4gICAqL1xuICByZWFkb25seSB0YWlsd2luZDogYm9vbGVhbjtcbn1cblxuY2xhc3MgTmV4dFNhbXBsZUNvZGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGVFeHQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBhc3NldHNkaXI6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSB0YWlsd2luZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBOb2RlUHJvamVjdCwgb3B0aW9uczogTmV4dFNhbXBsZUNvZGVPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLmZpbGVFeHQgPSBvcHRpb25zLmZpbGVFeHQgPz8gXCJqc1wiO1xuICAgIHRoaXMuc3JjZGlyID0gb3B0aW9ucy5zcmNkaXI7XG4gICAgdGhpcy5hc3NldHNkaXIgPSBvcHRpb25zLmFzc2V0c2RpcjtcbiAgICB0aGlzLnRhaWx3aW5kID0gb3B0aW9ucy50YWlsd2luZDtcblxuICAgIGNvbnN0IGluZGV4SnMgPSBbXG4gICAgICAnaW1wb3J0IEhlYWQgZnJvbSBcIm5leHQvaGVhZFwiJyxcbiAgICAgIFwiXCIsXG4gICAgICBcImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEhvbWUoKSB7XCIsXG4gICAgICBcIiAgcmV0dXJuIChcIixcbiAgICAgICcgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXJcIj4nLFxuICAgICAgXCIgICAgICA8SGVhZD5cIixcbiAgICAgIFwiICAgICAgICA8dGl0bGU+Q3JlYXRlIE5leHQgQXBwPC90aXRsZT5cIixcbiAgICAgIFwiICAgICAgPC9IZWFkPlwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgPG1haW4+XCIsXG4gICAgICAnICAgICAgICA8aDEgY2xhc3NOYW1lPVwidGl0bGVcIj4nLFxuICAgICAgJyAgICAgICAgICBXZWxjb21lIHRvIDxhIGhyZWY9XCJodHRwczovL25leHRqcy5vcmdcIj5OZXh0LmpzITwvYT4nLFxuICAgICAgXCIgICAgICAgIDwvaDE+XCIsXG4gICAgICBcIlwiLFxuICAgICAgJyAgICAgICAgPHAgY2xhc3NOYW1lPVwiZGVzY3JpcHRpb25cIj4nLFxuICAgICAgXCIgICAgICAgICAgR2V0IHN0YXJ0ZWQgYnkgZWRpdGluZyA8Y29kZT5wYWdlcy9pbmRleC5qczwvY29kZT5cIixcbiAgICAgIFwiICAgICAgICA8L3A+XCIsXG4gICAgICBcIlwiLFxuICAgICAgJyAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkXCI+JyxcbiAgICAgICcgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzXCIgY2xhc3NOYW1lPVwiY2FyZFwiPicsXG4gICAgICBcIiAgICAgICAgICAgIDxoMz5Eb2N1bWVudGF0aW9uICZyYXJyOzwvaDM+XCIsXG4gICAgICBcIiAgICAgICAgICAgIDxwPkZpbmQgaW4tZGVwdGggaW5mb3JtYXRpb24gYWJvdXQgTmV4dC5qcyBmZWF0dXJlcyBhbmQgQVBJLjwvcD5cIixcbiAgICAgIFwiICAgICAgICAgIDwvYT5cIixcbiAgICAgIFwiXCIsXG4gICAgICAnICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL25leHRqcy5vcmcvbGVhcm5cIiBjbGFzc05hbWU9XCJjYXJkXCI+JyxcbiAgICAgIFwiICAgICAgICAgICAgPGgzPkxlYXJuICZyYXJyOzwvaDM+XCIsXG4gICAgICBcIiAgICAgICAgICAgIDxwPkxlYXJuIGFib3V0IE5leHQuanMgaW4gYW4gaW50ZXJhY3RpdmUgY291cnNlIHdpdGggcXVpenplcyE8L3A+XCIsXG4gICAgICBcIiAgICAgICAgICA8L2E+XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgICAgPGFcIixcbiAgICAgICcgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzL3RyZWUvbWFzdGVyL2V4YW1wbGVzXCInLFxuICAgICAgJyAgICAgICAgICAgIGNsYXNzTmFtZT1cImNhcmRcIicsXG4gICAgICBcIiAgICAgICAgICA+XCIsXG4gICAgICBcIiAgICAgICAgICAgIDxoMz5FeGFtcGxlcyAmcmFycjs8L2gzPlwiLFxuICAgICAgXCIgICAgICAgICAgICA8cD5EaXNjb3ZlciBhbmQgZGVwbG95IGJvaWxlcnBsYXRlIGV4YW1wbGUgTmV4dC5qcyBwcm9qZWN0cy48L3A+XCIsXG4gICAgICBcIiAgICAgICAgICA8L2E+XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgICAgPGFcIixcbiAgICAgICcgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly92ZXJjZWwuY29tL2ltcG9ydD9maWx0ZXI9bmV4dC5qcyZ1dG1fc291cmNlPWNyZWF0ZS1uZXh0LWFwcCZ1dG1fbWVkaXVtPWRlZmF1bHQtdGVtcGxhdGUmdXRtX2NhbXBhaWduPWNyZWF0ZS1uZXh0LWFwcFwiJyxcbiAgICAgICcgICAgICAgICAgICBjbGFzc05hbWU9XCJjYXJkXCInLFxuICAgICAgXCIgICAgICAgICAgPlwiLFxuICAgICAgXCIgICAgICAgICAgICA8aDM+RGVwbG95ICZyYXJyOzwvaDM+XCIsXG4gICAgICBcIiAgICAgICAgICAgIDxwPlwiLFxuICAgICAgXCIgICAgICAgICAgICAgIEluc3RhbnRseSBkZXBsb3kgeW91ciBOZXh0LmpzIHNpdGUgdG8gYSBwdWJsaWMgVVJMIHdpdGggVmVyY2VsLlwiLFxuICAgICAgXCIgICAgICAgICAgICA8L3A+XCIsXG4gICAgICBcIiAgICAgICAgICA8L2E+XCIsXG4gICAgICBcIiAgICAgICAgPC9kaXY+XCIsXG4gICAgICBcIiAgICAgIDwvbWFpbj5cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgIDxmb290ZXI+XCIsXG4gICAgICBcIiAgICAgICAgPGFcIixcbiAgICAgICcgICAgICAgICAgaHJlZj1cImh0dHBzOi8vdmVyY2VsLmNvbT91dG1fc291cmNlPWNyZWF0ZS1uZXh0LWFwcCZ1dG1fbWVkaXVtPWRlZmF1bHQtdGVtcGxhdGUmdXRtX2NhbXBhaWduPWNyZWF0ZS1uZXh0LWFwcFwiJyxcbiAgICAgICcgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCInLFxuICAgICAgJyAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCInLFxuICAgICAgXCIgICAgICAgID5cIixcbiAgICAgIFwiICAgICAgICAgIFBvd2VyZWQgYnkgVmVyY2VsXCIsXG4gICAgICAnICAgICAgICAgIDxpbWcgc3JjPVwiL3ZlcmNlbC5zdmdcIiBhbHQ9XCJWZXJjZWwgTG9nb1wiIGNsYXNzTmFtZT1cImxvZ29cIiAvPicsXG4gICAgICBcIiAgICAgICAgPC9hPlwiLFxuICAgICAgXCIgICAgICA8L2Zvb3Rlcj5cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgIDxzdHlsZSBqc3g+e2BcIixcbiAgICAgIFwiICAgICAgICAuY29udGFpbmVyIHtcIixcbiAgICAgIFwiICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1wiLFxuICAgICAgXCIgICAgICAgICAgcGFkZGluZzogMCAwLjVyZW07XCIsXG4gICAgICBcIiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1wiLFxuICAgICAgXCIgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcIixcbiAgICAgIFwiICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1wiLFxuICAgICAgXCIgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIG1haW4ge1wiLFxuICAgICAgXCIgICAgICAgICAgcGFkZGluZzogNXJlbSAwO1wiLFxuICAgICAgXCIgICAgICAgICAgZmxleDogMTtcIixcbiAgICAgIFwiICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XCIsXG4gICAgICBcIiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1wiLFxuICAgICAgXCIgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCIsXG4gICAgICBcIiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgZm9vdGVyIHtcIixcbiAgICAgIFwiICAgICAgICAgIHdpZHRoOiAxMDAlO1wiLFxuICAgICAgXCIgICAgICAgICAgaGVpZ2h0OiAxMDBweDtcIixcbiAgICAgIFwiICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWFlYWVhO1wiLFxuICAgICAgXCIgICAgICAgICAgZGlzcGxheTogZmxleDtcIixcbiAgICAgIFwiICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1wiLFxuICAgICAgXCIgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIGZvb3RlciBpbWcge1wiLFxuICAgICAgXCIgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIGZvb3RlciBhIHtcIixcbiAgICAgIFwiICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XCIsXG4gICAgICBcIiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIixcbiAgICAgIFwiICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICBhIHtcIixcbiAgICAgIFwiICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1wiLFxuICAgICAgXCIgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgLnRpdGxlIGEge1wiLFxuICAgICAgXCIgICAgICAgICAgY29sb3I6ICMwMDcwZjM7XCIsXG4gICAgICBcIiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICAudGl0bGUgYTpob3ZlcixcIixcbiAgICAgIFwiICAgICAgICAudGl0bGUgYTpmb2N1cyxcIixcbiAgICAgIFwiICAgICAgICAudGl0bGUgYTphY3RpdmUge1wiLFxuICAgICAgXCIgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICAudGl0bGUge1wiLFxuICAgICAgXCIgICAgICAgICAgbWFyZ2luOiAwO1wiLFxuICAgICAgXCIgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7XCIsXG4gICAgICBcIiAgICAgICAgICBmb250LXNpemU6IDRyZW07XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICAudGl0bGUsXCIsXG4gICAgICBcIiAgICAgICAgLmRlc2NyaXB0aW9uIHtcIixcbiAgICAgIFwiICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIC5kZXNjcmlwdGlvbiB7XCIsXG4gICAgICBcIiAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1wiLFxuICAgICAgXCIgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICBjb2RlIHtcIixcbiAgICAgIFwiICAgICAgICAgIGJhY2tncm91bmQ6ICNmYWZhZmE7XCIsXG4gICAgICBcIiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XCIsXG4gICAgICBcIiAgICAgICAgICBwYWRkaW5nOiAwLjc1cmVtO1wiLFxuICAgICAgXCIgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XCIsXG4gICAgICBcIiAgICAgICAgICBmb250LWZhbWlseTogTWVubG8sIE1vbmFjbywgTHVjaWRhIENvbnNvbGUsIExpYmVyYXRpb24gTW9ubyxcIixcbiAgICAgIFwiICAgICAgICAgICAgRGVqYVZ1IFNhbnMgTW9ubywgQml0c3RyZWFtIFZlcmEgU2FucyBNb25vLCBDb3VyaWVyIE5ldywgbW9ub3NwYWNlO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgLmdyaWQge1wiLFxuICAgICAgXCIgICAgICAgICAgZGlzcGxheTogZmxleDtcIixcbiAgICAgIFwiICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XCIsXG4gICAgICBcIiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIixcbiAgICAgIFwiICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgICBtYXgtd2lkdGg6IDgwMHB4O1wiLFxuICAgICAgXCIgICAgICAgICAgbWFyZ2luLXRvcDogM3JlbTtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIC5jYXJkIHtcIixcbiAgICAgIFwiICAgICAgICAgIG1hcmdpbjogMXJlbTtcIixcbiAgICAgIFwiICAgICAgICAgIGZsZXgtYmFzaXM6IDQ1JTtcIixcbiAgICAgIFwiICAgICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcIixcbiAgICAgIFwiICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XCIsXG4gICAgICBcIiAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcIixcbiAgICAgIFwiICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcIixcbiAgICAgIFwiICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYWVhZWE7XCIsXG4gICAgICBcIiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1wiLFxuICAgICAgXCIgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZSwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICAuY2FyZDpob3ZlcixcIixcbiAgICAgIFwiICAgICAgICAuY2FyZDpmb2N1cyxcIixcbiAgICAgIFwiICAgICAgICAuY2FyZDphY3RpdmUge1wiLFxuICAgICAgXCIgICAgICAgICAgY29sb3I6ICMwMDcwZjM7XCIsXG4gICAgICBcIiAgICAgICAgICBib3JkZXItY29sb3I6ICMwMDcwZjM7XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICAuY2FyZCBoMyB7XCIsXG4gICAgICBcIiAgICAgICAgICBtYXJnaW46IDAgMCAxcmVtIDA7XCIsXG4gICAgICBcIiAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIC5jYXJkIHAge1wiLFxuICAgICAgXCIgICAgICAgICAgbWFyZ2luOiAwO1wiLFxuICAgICAgXCIgICAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1wiLFxuICAgICAgXCIgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcIixcbiAgICAgIFwiICAgICAgICB9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIgICAgICAgIC5sb2dvIHtcIixcbiAgICAgIFwiICAgICAgICAgIGhlaWdodDogMWVtO1wiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XCIsXG4gICAgICBcIiAgICAgICAgICAuZ3JpZCB7XCIsXG4gICAgICBcIiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1wiLFxuICAgICAgXCIgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1wiLFxuICAgICAgXCIgICAgICAgICAgfVwiLFxuICAgICAgXCIgICAgICAgIH1cIixcbiAgICAgIFwiICAgICAgYH08L3N0eWxlPlwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgPHN0eWxlIGpzeCBnbG9iYWw+e2BcIixcbiAgICAgIFwiICAgICAgICBodG1sLFwiLFxuICAgICAgXCIgICAgICAgIGJvZHkge1wiLFxuICAgICAgXCIgICAgICAgICAgcGFkZGluZzogMDtcIixcbiAgICAgIFwiICAgICAgICAgIG1hcmdpbjogMDtcIixcbiAgICAgIFwiICAgICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFNlZ29lIFVJLCBSb2JvdG8sXCIsXG4gICAgICBcIiAgICAgICAgICAgIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsIEZpcmEgU2FucywgRHJvaWQgU2FucywgSGVsdmV0aWNhIE5ldWUsXCIsXG4gICAgICBcIiAgICAgICAgICAgIHNhbnMtc2VyaWY7XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiICAgICAgICAqIHtcIixcbiAgICAgIFwiICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XCIsXG4gICAgICBcIiAgICAgICAgfVwiLFxuICAgICAgXCIgICAgICBgfTwvc3R5bGU+XCIsXG4gICAgICBcIiAgICA8L2Rpdj5cIixcbiAgICAgIFwiICApXCIsXG4gICAgICBcIn1cIixcbiAgICAgIFwiXCIsXG4gICAgXTtcblxuICAgIGlmICh0aGlzLnRhaWx3aW5kKSB7XG4gICAgICBpbmRleEpzLnVuc2hpZnQoJ2ltcG9ydCBcInRhaWx3aW5kY3NzL3RhaWx3aW5kLmNzc1wiJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdmVyY2VsU3ZnID0gW1xuICAgICAgJzxzdmcgd2lkdGg9XCIyODNcIiBoZWlnaHQ9XCI2NFwiIHZpZXdCb3g9XCIwIDAgMjgzIDY0XCIgZmlsbD1cIm5vbmVcIiAnLFxuICAgICAgJyAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+JyxcbiAgICAgICcgICAgPHBhdGggZD1cIk0xNDEuMDQgMTZjLTExLjA0IDAtMTkgNy4yLTE5IDE4czguOTYgMTggMjAgMThjNi42NyAwIDEyLjU1LTIuNjQgMTYuMTktNy4wOWwtNy42NS00LjQyYy0yLjAyIDIuMjEtNS4wOSAzLjUtOC41NCAzLjUtNC43OSAwLTguODYtMi41LTEwLjM3LTYuNWgyOC4wMmMuMjItMS4xMi4zNS0yLjI4LjM1LTMuNSAwLTEwLjc5LTcuOTYtMTcuOTktMTktMTcuOTl6bS05LjQ2IDE0LjVjMS4yNS0zLjk5IDQuNjctNi41IDkuNDUtNi41IDQuNzkgMCA4LjIxIDIuNTEgOS40NSA2LjVoLTE4Ljl6TTI0OC43MiAxNmMtMTEuMDQgMC0xOSA3LjItMTkgMThzOC45NiAxOCAyMCAxOGM2LjY3IDAgMTIuNTUtMi42NCAxNi4xOS03LjA5bC03LjY1LTQuNDJjLTIuMDIgMi4yMS01LjA5IDMuNS04LjU0IDMuNS00Ljc5IDAtOC44Ni0yLjUtMTAuMzctNi41aDI4LjAyYy4yMi0xLjEyLjM1LTIuMjguMzUtMy41IDAtMTAuNzktNy45Ni0xNy45OS0xOS0xNy45OXptLTkuNDUgMTQuNWMxLjI1LTMuOTkgNC42Ny02LjUgOS40NS02LjUgNC43OSAwIDguMjEgMi41MSA5LjQ1IDYuNWgtMTguOXpNMjAwLjI0IDM0YzAgNiAzLjkyIDEwIDEwIDEwIDQuMTIgMCA3LjIxLTEuODcgOC44LTQuOTJsNy42OCA0LjQzYy0zLjE4IDUuMy05LjE0IDguNDktMTYuNDggOC40OS0xMS4wNSAwLTE5LTcuMi0xOS0xOHM3Ljk2LTE4IDE5LTE4YzcuMzQgMCAxMy4yOSAzLjE5IDE2LjQ4IDguNDlsLTcuNjggNC40M2MtMS41OS0zLjA1LTQuNjgtNC45Mi04LjgtNC45Mi02LjA3IDAtMTAgNC0xMCAxMHptODIuNDgtMjl2NDZoLTlWNWg5ek0zNi45NSAwTDczLjkgNjRIMEwzNi45NSAwem05Mi4zOCA1bC0yNy43MSA0OEw3My45MSA1SDg0LjNsMTcuMzIgMzAgMTcuMzItMzBoMTAuMzl6bTU4LjkxIDEydjkuNjljLTEtLjI5LTIuMDYtLjQ5LTMuMi0uNDktNS44MSAwLTEwIDQtMTAgMTBWNTFoLTlWMTdoOXY5LjJjMC01LjA4IDUuOTEtOS4yIDEzLjItOS4yelwiIGZpbGw9XCIjMDAwXCIvPicsXG4gICAgICBcIjwvc3ZnPlwiLFxuICAgIF07XG5cbiAgICBuZXcgU2FtcGxlRGlyKHByb2plY3QsIHRoaXMuc3JjZGlyLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICBbXCJpbmRleC5cIiArIHRoaXMuZmlsZUV4dF06IGluZGV4SnMuam9pbihcIlxcblwiKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBuZXcgU2FtcGxlRGlyKHByb2plY3QsIHRoaXMuYXNzZXRzZGlyLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICBcInZlcmNlbC5zdmdcIjogdmVyY2VsU3ZnLmpvaW4oXCJcXG5cIiksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgbmV3IFNhbXBsZUZpbGUocHJvamVjdCwgXCJuZXh0LWVudi5kLnRzXCIsIHtcbiAgICAgIGNvbnRlbnRzOiBbXG4gICAgICAgICcvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIm5leHRcIiAvPicsXG4gICAgICAgICcvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIm5leHQvdHlwZXMvZ2xvYmFsXCIgLz4nLFxuICAgICAgICAnLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJuZXh0L2ltYWdlLXR5cGVzL2dsb2JhbFwiIC8+JyxcbiAgICAgICAgXCIvLyBOT1RFOiBUaGlzIGZpbGUgc2hvdWxkIG5vdCBiZSBlZGl0ZWRcIixcbiAgICAgICAgXCIvLyBzZWUgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYmFzaWMtZmVhdHVyZXMvdHlwZXNjcmlwdCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIixcbiAgICAgICAgXCJcIixcbiAgICAgIF0uam9pbihcIlxcblwiKSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,49 +1,28 @@
1
1
  import { NodeProject } from "../javascript";
2
2
  import { JsonFile } from "../json";
3
3
  import { TailwindConfig, TailwindConfigOptions } from "./tailwind";
4
- /**
5
- * @experimental
6
- */
7
4
  export interface PostCssOptions {
8
5
  /**
9
6
  * @default "postcss.config.json"
10
- * @experimental
11
7
  */
12
8
  readonly fileName?: string;
13
9
  /**
14
- * (experimental) Install Tailwind CSS as a PostCSS plugin.
10
+ * Install Tailwind CSS as a PostCSS plugin.
15
11
  *
16
12
  * @default true
17
- * @experimental
18
13
  */
19
14
  readonly tailwind?: boolean;
20
15
  /**
21
- * (experimental) Tailwind CSS options.
22
- *
23
- * @experimental
16
+ * Tailwind CSS options.
24
17
  */
25
18
  readonly tailwindOptions?: TailwindConfigOptions;
26
19
  }
27
20
  /**
28
- * (experimental) Declares a PostCSS dependency with a default config file.
29
- *
30
- * @experimental
21
+ * Declares a PostCSS dependency with a default config file.
31
22
  */
32
23
  export declare class PostCss {
33
- /**
34
- * @experimental
35
- */
36
24
  readonly fileName: string;
37
- /**
38
- * @experimental
39
- */
40
25
  readonly file: JsonFile;
41
- /**
42
- * @experimental
43
- */
44
26
  readonly tailwind?: TailwindConfig;
45
- /**
46
- * @experimental
47
- */
48
27
  constructor(project: NodeProject, options?: PostCssOptions);
49
28
  }
@@ -6,14 +6,9 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const json_1 = require("../json");
7
7
  const tailwind_1 = require("./tailwind");
8
8
  /**
9
- * (experimental) Declares a PostCSS dependency with a default config file.
10
- *
11
- * @experimental
9
+ * Declares a PostCSS dependency with a default config file.
12
10
  */
13
11
  class PostCss {
14
- /**
15
- * @experimental
16
- */
17
12
  constructor(project, options) {
18
13
  var _b, _c, _d;
19
14
  this.fileName = (_b = options === null || options === void 0 ? void 0 : options.fileName) !== null && _b !== void 0 ? _b : "postcss.config.json";
@@ -34,5 +29,5 @@ class PostCss {
34
29
  }
35
30
  exports.PostCss = PostCss;
36
31
  _a = JSII_RTTI_SYMBOL_1;
37
- PostCss[_a] = { fqn: "projen.web.PostCss", version: "0.52.22" };
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdGNzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93ZWIvcG9zdGNzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLGtDQUFtQztBQUNuQyx5Q0FBbUU7Ozs7OztBQWNuRSxNQUFhLE9BQU87Ozs7SUFLbEIsWUFBWSxPQUFvQixFQUFFLE9BQXdCOztRQUN4RCxJQUFJLENBQUMsUUFBUSxTQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxRQUFRLG1DQUFJLHFCQUFxQixDQUFDO1FBRTNELE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFM0IsTUFBTSxNQUFNLEdBQTJCLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBRXZELFVBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFFBQVEsbUNBQUksSUFBSSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHlCQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxlQUFlLENBQUMsQ0FBQztZQUN0RSxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQztTQUNoRDtRQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxlQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDL0MsR0FBRyxFQUFFLE1BQU07WUFDWCxNQUFNLEVBQUUsS0FBSztTQUNkLENBQUMsQ0FBQztRQUVILE1BQUEsT0FBTyxDQUFDLFNBQVMsMENBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO0lBQ2xELENBQUM7O0FBekJILDBCQTBCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGVQcm9qZWN0IH0gZnJvbSBcIi4uL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IEpzb25GaWxlIH0gZnJvbSBcIi4uL2pzb25cIjtcbmltcG9ydCB7IFRhaWx3aW5kQ29uZmlnLCBUYWlsd2luZENvbmZpZ09wdGlvbnMgfSBmcm9tIFwiLi90YWlsd2luZFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RDc3NPcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGZpbGVOYW1lPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHRhaWx3aW5kPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdGFpbHdpbmRPcHRpb25zPzogVGFpbHdpbmRDb25maWdPcHRpb25zO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIFBvc3RDc3Mge1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZpbGU6IEpzb25GaWxlO1xuICBwdWJsaWMgcmVhZG9ubHkgdGFpbHdpbmQ/OiBUYWlsd2luZENvbmZpZztcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBOb2RlUHJvamVjdCwgb3B0aW9ucz86IFBvc3RDc3NPcHRpb25zKSB7XG4gICAgdGhpcy5maWxlTmFtZSA9IG9wdGlvbnM/LmZpbGVOYW1lID8/IFwicG9zdGNzcy5jb25maWcuanNvblwiO1xuXG4gICAgcHJvamVjdC5hZGREZXBzKFwicG9zdGNzc1wiKTtcblxuICAgIGNvbnN0IGNvbmZpZzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHsgcGx1Z2luczoge30gfTtcblxuICAgIGlmIChvcHRpb25zPy50YWlsd2luZCA/PyB0cnVlKSB7XG4gICAgICBjb25maWcucGx1Z2lucy50YWlsd2luZGNzcyA9IHt9O1xuICAgICAgY29uZmlnLnBsdWdpbnMuYXV0b3ByZWZpeGVyID0ge307XG4gICAgICB0aGlzLnRhaWx3aW5kID0gbmV3IFRhaWx3aW5kQ29uZmlnKHByb2plY3QsIG9wdGlvbnM/LnRhaWx3aW5kT3B0aW9ucyk7XG4gICAgICBwcm9qZWN0LmFkZERlcHMoXCJ0YWlsd2luZGNzc1wiLCBcImF1dG9wcmVmaXhlclwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGUgPSBuZXcgSnNvbkZpbGUocHJvamVjdCwgdGhpcy5maWxlTmFtZSwge1xuICAgICAgb2JqOiBjb25maWcsXG4gICAgICBtYXJrZXI6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5ucG1pZ25vcmU/LmV4Y2x1ZGUoYC8ke3RoaXMuZmlsZU5hbWV9YCk7XG4gIH1cbn1cbiJdfQ==
32
+ PostCss[_a] = { fqn: "projen.web.PostCss", version: "0.52.26" };
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdGNzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93ZWIvcG9zdGNzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLGtDQUFtQztBQUNuQyx5Q0FBbUU7QUFxQm5FOztHQUVHO0FBQ0gsTUFBYSxPQUFPO0lBS2xCLFlBQVksT0FBb0IsRUFBRSxPQUF3Qjs7UUFDeEQsSUFBSSxDQUFDLFFBQVEsU0FBRyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsUUFBUSxtQ0FBSSxxQkFBcUIsQ0FBQztRQUUzRCxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTNCLE1BQU0sTUFBTSxHQUEyQixFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUV2RCxVQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxRQUFRLG1DQUFJLElBQUksRUFBRTtZQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx5QkFBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsZUFBZSxDQUFDLENBQUM7WUFDdEUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDaEQ7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksZUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQy9DLEdBQUcsRUFBRSxNQUFNO1lBQ1gsTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDLENBQUM7UUFFSCxNQUFBLE9BQU8sQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtJQUNsRCxDQUFDOztBQXpCSCwwQkEwQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlUHJvamVjdCB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBKc29uRmlsZSB9IGZyb20gXCIuLi9qc29uXCI7XG5pbXBvcnQgeyBUYWlsd2luZENvbmZpZywgVGFpbHdpbmRDb25maWdPcHRpb25zIH0gZnJvbSBcIi4vdGFpbHdpbmRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQb3N0Q3NzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCBcInBvc3Rjc3MuY29uZmlnLmpzb25cIlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluc3RhbGwgVGFpbHdpbmQgQ1NTIGFzIGEgUG9zdENTUyBwbHVnaW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHRhaWx3aW5kPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGFpbHdpbmQgQ1NTIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSB0YWlsd2luZE9wdGlvbnM/OiBUYWlsd2luZENvbmZpZ09wdGlvbnM7XG59XG5cbi8qKlxuICogRGVjbGFyZXMgYSBQb3N0Q1NTIGRlcGVuZGVuY3kgd2l0aCBhIGRlZmF1bHQgY29uZmlnIGZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBQb3N0Q3NzIHtcbiAgcHVibGljIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBmaWxlOiBKc29uRmlsZTtcbiAgcHVibGljIHJlYWRvbmx5IHRhaWx3aW5kPzogVGFpbHdpbmRDb25maWc7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM/OiBQb3N0Q3NzT3B0aW9ucykge1xuICAgIHRoaXMuZmlsZU5hbWUgPSBvcHRpb25zPy5maWxlTmFtZSA/PyBcInBvc3Rjc3MuY29uZmlnLmpzb25cIjtcblxuICAgIHByb2plY3QuYWRkRGVwcyhcInBvc3Rjc3NcIik7XG5cbiAgICBjb25zdCBjb25maWc6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7IHBsdWdpbnM6IHt9IH07XG5cbiAgICBpZiAob3B0aW9ucz8udGFpbHdpbmQgPz8gdHJ1ZSkge1xuICAgICAgY29uZmlnLnBsdWdpbnMudGFpbHdpbmRjc3MgPSB7fTtcbiAgICAgIGNvbmZpZy5wbHVnaW5zLmF1dG9wcmVmaXhlciA9IHt9O1xuICAgICAgdGhpcy50YWlsd2luZCA9IG5ldyBUYWlsd2luZENvbmZpZyhwcm9qZWN0LCBvcHRpb25zPy50YWlsd2luZE9wdGlvbnMpO1xuICAgICAgcHJvamVjdC5hZGREZXBzKFwidGFpbHdpbmRjc3NcIiwgXCJhdXRvcHJlZml4ZXJcIik7XG4gICAgfVxuXG4gICAgdGhpcy5maWxlID0gbmV3IEpzb25GaWxlKHByb2plY3QsIHRoaXMuZmlsZU5hbWUsIHtcbiAgICAgIG9iajogY29uZmlnLFxuICAgICAgbWFya2VyOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHByb2plY3QubnBtaWdub3JlPy5leGNsdWRlKGAvJHt0aGlzLmZpbGVOYW1lfWApO1xuICB9XG59XG4iXX0=
@@ -2,12 +2,9 @@ import { Component } from "../component";
2
2
  import { FileBase, FileBaseOptions, IResolver } from "../file";
3
3
  import { NodeProject, NodeProjectOptions } from "../javascript";
4
4
  import { TypeScriptAppProject, TypeScriptProjectOptions } from "../typescript";
5
- /**
6
- * @experimental
7
- */
8
5
  export interface ReactRewireOptions {
9
6
  /**
10
- * (experimental) Rewire webpack configuration.
7
+ * Rewire webpack configuration.
11
8
  *
12
9
  * Use this property to override webpack configuration properties provided
13
10
  * by create-react-app, without needing to eject.
@@ -29,124 +26,80 @@ export interface ReactRewireOptions {
29
26
  *
30
27
  * ```js
31
28
  * module.exports = function override(config, env) {
32
- * config.module.unknownContextCritical = false;
29
+ * config.module.unknownContextCritical = false;
33
30
  * }
34
31
  * ```
35
32
  *
36
33
  * @default - No rewired config.
34
+ *
35
+ * @see https://webpack.js.org/configuration/
37
36
  * @see https://github.com/timarney/react-app-rewired
38
- * @experimental
39
37
  */
40
38
  readonly rewire?: {
41
39
  [key: string]: any;
42
40
  };
43
41
  }
44
- /**
45
- * @experimental
46
- */
47
42
  export interface ReactTypeScriptProjectOptions extends TypeScriptProjectOptions, ReactRewireOptions {
48
43
  }
49
- /**
50
- * @experimental
51
- */
52
44
  export interface ReactProjectOptions extends NodeProjectOptions, ReactRewireOptions {
53
45
  /**
54
- * (experimental) Source directory.
46
+ * Source directory.
55
47
  *
56
48
  * @default "src"
57
- * @experimental
58
49
  */
59
50
  readonly srcdir?: string;
60
51
  /**
61
- * (experimental) Generate one-time sample in `src/` and `public/` if there are no files there.
62
- *
52
+ * Generate one-time sample in `src/` and `public/` if there are no files there.
63
53
  * @default true
64
- * @experimental
65
54
  */
66
55
  readonly sampleCode?: boolean;
67
56
  }
68
57
  /**
69
- * (experimental) React project without TypeScript.
58
+ * React project without TypeScript.
70
59
  *
71
- * @experimental
72
60
  * @pjid react
73
61
  */
74
62
  export declare class ReactProject extends NodeProject {
75
63
  /**
76
- * (experimental) The directory in which source files reside.
77
- *
64
+ * The directory in which source files reside.
78
65
  * @default "src"
79
- * @experimental
80
66
  */
81
67
  readonly srcdir: string;
82
- /**
83
- * @experimental
84
- */
85
68
  constructor(options: ReactProjectOptions);
86
69
  }
87
70
  /**
88
- * (experimental) React project with TypeScript.
71
+ * React project with TypeScript.
89
72
  *
90
- * @experimental
91
73
  * @pjid react-ts
92
74
  */
93
75
  export declare class ReactTypeScriptProject extends TypeScriptAppProject {
94
76
  /**
95
- * (experimental) The directory in which source files reside.
96
- *
97
- * @experimental
77
+ * The directory in which source files reside.
98
78
  */
99
79
  readonly srcdir: string;
100
80
  /**
101
- * (experimental) TypeScript definition file included that ensures React types are picked up by the TypeScript compiler.
81
+ * TypeScript definition file included that ensures React types are picked
82
+ * up by the TypeScript compiler.
102
83
  *
103
- * @experimental
104
84
  */
105
85
  readonly reactTypeDef: ReactTypeDef;
106
- /**
107
- * @experimental
108
- */
109
86
  constructor(options: ReactTypeScriptProjectOptions);
110
87
  }
111
- /**
112
- * @experimental
113
- */
114
88
  export interface ReactComponentOptions extends ReactRewireOptions {
115
89
  /**
116
- * (experimental) Whether to apply options specific for TypeScript React projects.
90
+ * Whether to apply options specific for TypeScript React projects.
117
91
  *
118
92
  * @default false
119
- * @experimental
120
93
  */
121
94
  readonly typescript?: boolean;
122
95
  }
123
- /**
124
- * @experimental
125
- */
126
96
  export declare class ReactComponent extends Component {
127
97
  private readonly typescript;
128
- /**
129
- * @experimental
130
- */
131
98
  constructor(project: NodeProject, options: ReactComponentOptions);
132
99
  }
133
- /**
134
- * @experimental
135
- */
136
100
  export interface ReactTypeDefOptions extends FileBaseOptions {
137
101
  }
138
- /**
139
- * @experimental
140
- */
141
102
  export declare class ReactTypeDef extends FileBase {
142
- /**
143
- * @experimental
144
- */
145
103
  constructor(project: ReactTypeScriptProject, filePath: string, options?: ReactTypeDefOptions);
146
- /**
147
- * (experimental) Implemented by derived classes and returns the contents of the file to emit.
148
- *
149
- * @experimental
150
- */
151
104
  protected synthesizeContent(_: IResolver): string | undefined;
152
105
  }