projen 0.49.0 → 0.49.1

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 (285) hide show
  1. package/.jsii +1059 -1056
  2. package/.prettierignore +1 -0
  3. package/.prettierrc.json +3 -0
  4. package/API.md +1 -1
  5. package/changelog.md +1 -11
  6. package/lib/_resolve.d.ts +1 -1
  7. package/lib/_resolve.js +5 -7
  8. package/lib/awscdk/auto-discover.d.ts +4 -4
  9. package/lib/awscdk/auto-discover.js +2 -2
  10. package/lib/awscdk/awscdk-app-java.d.ts +4 -4
  11. package/lib/awscdk/awscdk-app-java.js +22 -18
  12. package/lib/awscdk/awscdk-app-ts.d.ts +5 -5
  13. package/lib/awscdk/awscdk-app-ts.js +33 -32
  14. package/lib/awscdk/awscdk-construct.d.ts +3 -3
  15. package/lib/awscdk/awscdk-construct.js +10 -8
  16. package/lib/awscdk/awscdk-deps-java.d.ts +1 -1
  17. package/lib/awscdk/awscdk-deps-java.js +6 -6
  18. package/lib/awscdk/awscdk-deps-js.d.ts +1 -1
  19. package/lib/awscdk/awscdk-deps-js.js +7 -7
  20. package/lib/awscdk/awscdk-deps.d.ts +3 -3
  21. package/lib/awscdk/awscdk-deps.js +17 -14
  22. package/lib/awscdk/cdk-config.d.ts +3 -3
  23. package/lib/awscdk/cdk-config.js +5 -5
  24. package/lib/awscdk/cdk-tasks.d.ts +3 -3
  25. package/lib/awscdk/cdk-tasks.js +21 -20
  26. package/lib/awscdk/index.d.ts +11 -11
  27. package/lib/awscdk/index.js +1 -1
  28. package/lib/awscdk/integration-test.d.ts +4 -4
  29. package/lib/awscdk/integration-test.js +15 -13
  30. package/lib/awscdk/internal.js +16 -16
  31. package/lib/awscdk/lambda-function.d.ts +4 -4
  32. package/lib/awscdk/lambda-function.js +29 -29
  33. package/lib/build/build-workflow.d.ts +5 -5
  34. package/lib/build/build-workflow.js +36 -30
  35. package/lib/build/index.d.ts +1 -1
  36. package/lib/build/index.js +1 -1
  37. package/lib/builtin-example.task.js +3 -3
  38. package/lib/cdk/construct-lib.d.ts +1 -1
  39. package/lib/cdk/construct-lib.js +4 -4
  40. package/lib/cdk/consts.d.ts +2 -2
  41. package/lib/cdk/consts.js +5 -5
  42. package/lib/cdk/index.d.ts +3 -3
  43. package/lib/cdk/index.js +1 -1
  44. package/lib/cdk/jsii-docgen.d.ts +1 -1
  45. package/lib/cdk/jsii-docgen.js +7 -7
  46. package/lib/cdk/jsii-project.d.ts +3 -3
  47. package/lib/cdk/jsii-project.js +39 -39
  48. package/lib/cdk8s/cdk8s-app-ts.d.ts +1 -1
  49. package/lib/cdk8s/cdk8s-app-ts.js +28 -21
  50. package/lib/cdk8s/cdk8s-construct.d.ts +1 -1
  51. package/lib/cdk8s/cdk8s-construct.js +10 -6
  52. package/lib/cdk8s/index.d.ts +2 -2
  53. package/lib/cdk8s/index.js +1 -1
  54. package/lib/cdktf/cdktf-construct.d.ts +1 -1
  55. package/lib/cdktf/cdktf-construct.js +4 -4
  56. package/lib/cdktf/index.d.ts +1 -1
  57. package/lib/cdktf/index.js +1 -1
  58. package/lib/cleanup.js +20 -14
  59. package/lib/cli/cmds/new.js +71 -42
  60. package/lib/cli/index.js +27 -10
  61. package/lib/cli/macros.js +15 -11
  62. package/lib/cli/synth.d.ts +1 -1
  63. package/lib/cli/synth.js +15 -12
  64. package/lib/cli/tasks.d.ts +2 -2
  65. package/lib/cli/tasks.js +9 -6
  66. package/lib/cli/util.js +4 -4
  67. package/lib/clobber.d.ts +2 -2
  68. package/lib/clobber.js +14 -10
  69. package/lib/common.js +7 -9
  70. package/lib/component.d.ts +1 -1
  71. package/lib/component.js +2 -2
  72. package/lib/dependencies.d.ts +2 -2
  73. package/lib/dependencies.js +14 -12
  74. package/lib/dev-env.d.ts +1 -1
  75. package/lib/dev-env.js +2 -2
  76. package/lib/docker-compose.d.ts +2 -2
  77. package/lib/docker-compose.js +23 -19
  78. package/lib/file.d.ts +2 -2
  79. package/lib/file.js +7 -5
  80. package/lib/gitattributes.d.ts +2 -2
  81. package/lib/gitattributes.js +7 -8
  82. package/lib/github/auto-approve.d.ts +2 -2
  83. package/lib/github/auto-approve.js +25 -15
  84. package/lib/github/auto-merge.d.ts +2 -2
  85. package/lib/github/auto-merge.js +14 -14
  86. package/lib/github/constants.d.ts +1 -1
  87. package/lib/github/constants.js +4 -4
  88. package/lib/github/dependabot.d.ts +2 -2
  89. package/lib/github/dependabot.js +16 -14
  90. package/lib/github/github-project.d.ts +5 -5
  91. package/lib/github/github-project.js +14 -10
  92. package/lib/github/github.d.ts +7 -7
  93. package/lib/github/github.js +7 -5
  94. package/lib/github/index.d.ts +13 -13
  95. package/lib/github/index.js +1 -1
  96. package/lib/github/mergify.d.ts +2 -2
  97. package/lib/github/mergify.js +3 -3
  98. package/lib/github/pr-template.d.ts +2 -2
  99. package/lib/github/pr-template.js +5 -5
  100. package/lib/github/pull-request-lint.d.ts +2 -2
  101. package/lib/github/pull-request-lint.js +17 -14
  102. package/lib/github/stale-util.d.ts +1 -1
  103. package/lib/github/stale-util.js +2 -3
  104. package/lib/github/stale.d.ts +2 -2
  105. package/lib/github/stale.js +28 -20
  106. package/lib/github/task-workflow.d.ts +4 -4
  107. package/lib/github/task-workflow.js +12 -10
  108. package/lib/github/workflow-actions.d.ts +2 -2
  109. package/lib/github/workflow-actions.js +22 -20
  110. package/lib/github/workflows-model.d.ts +20 -20
  111. package/lib/github/workflows-model.js +1 -1
  112. package/lib/github/workflows.d.ts +4 -4
  113. package/lib/github/workflows.js +42 -27
  114. package/lib/gitpod.d.ts +4 -4
  115. package/lib/gitpod.js +12 -9
  116. package/lib/ignore-file.d.ts +2 -2
  117. package/lib/ignore-file.js +10 -13
  118. package/lib/index.d.ts +46 -46
  119. package/lib/index.js +1 -1
  120. package/lib/ini.d.ts +3 -3
  121. package/lib/ini.js +4 -4
  122. package/lib/inventory.d.ts +1 -1
  123. package/lib/inventory.js +34 -30
  124. package/lib/java/index.d.ts +7 -7
  125. package/lib/java/index.js +1 -1
  126. package/lib/java/java-project.d.ts +6 -6
  127. package/lib/java/java-project.js +11 -13
  128. package/lib/java/junit.d.ts +3 -3
  129. package/lib/java/junit.js +17 -17
  130. package/lib/java/maven-compile.d.ts +3 -3
  131. package/lib/java/maven-compile.js +7 -7
  132. package/lib/java/maven-packaging.d.ts +3 -3
  133. package/lib/java/maven-packaging.js +12 -16
  134. package/lib/java/maven-sample.d.ts +2 -2
  135. package/lib/java/maven-sample.js +12 -12
  136. package/lib/java/pom.d.ts +2 -2
  137. package/lib/java/pom.js +16 -14
  138. package/lib/java/projenrc.d.ts +3 -3
  139. package/lib/java/projenrc.js +35 -25
  140. package/lib/javascript/bundler.d.ts +3 -3
  141. package/lib/javascript/bundler.js +14 -12
  142. package/lib/javascript/eslint.d.ts +4 -3
  143. package/lib/javascript/eslint.js +102 -86
  144. package/lib/javascript/index.d.ts +10 -10
  145. package/lib/javascript/index.js +1 -1
  146. package/lib/javascript/jest.d.ts +4 -4
  147. package/lib/javascript/jest.js +48 -37
  148. package/lib/javascript/node-package.d.ts +2 -2
  149. package/lib/javascript/node-package.js +87 -77
  150. package/lib/javascript/node-project.d.ts +11 -11
  151. package/lib/javascript/node-project.js +78 -52
  152. package/lib/javascript/npm-config.d.ts +2 -2
  153. package/lib/javascript/npm-config.js +4 -4
  154. package/lib/javascript/prettier.d.ts +4 -4
  155. package/lib/javascript/prettier.js +5 -5
  156. package/lib/javascript/projenrc.d.ts +2 -2
  157. package/lib/javascript/projenrc.js +8 -8
  158. package/lib/javascript/render-options.d.ts +2 -2
  159. package/lib/javascript/render-options.js +23 -18
  160. package/lib/javascript/typescript-config.d.ts +2 -2
  161. package/lib/javascript/typescript-config.js +5 -5
  162. package/lib/javascript/upgrade-dependencies.d.ts +4 -4
  163. package/lib/javascript/upgrade-dependencies.js +67 -53
  164. package/lib/javascript/util.js +2 -2
  165. package/lib/json.d.ts +3 -3
  166. package/lib/json.js +4 -4
  167. package/lib/license.d.ts +2 -2
  168. package/lib/license.js +7 -7
  169. package/lib/logger.d.ts +2 -2
  170. package/lib/logger.js +14 -9
  171. package/lib/logging.js +2 -2
  172. package/lib/makefile.d.ts +2 -2
  173. package/lib/makefile.js +12 -15
  174. package/lib/object-file.d.ts +2 -2
  175. package/lib/object-file.js +9 -7
  176. package/lib/option-hints.js +1 -1
  177. package/lib/project-build.d.ts +3 -3
  178. package/lib/project-build.js +14 -14
  179. package/lib/project.d.ts +14 -14
  180. package/lib/project.js +41 -23
  181. package/lib/projects.d.ts +1 -1
  182. package/lib/projects.js +10 -11
  183. package/lib/projenrc-json.d.ts +2 -2
  184. package/lib/projenrc-json.js +5 -5
  185. package/lib/python/index.d.ts +13 -13
  186. package/lib/python/index.js +1 -1
  187. package/lib/python/pip.d.ts +4 -4
  188. package/lib/python/pip.js +16 -12
  189. package/lib/python/poetry.d.ts +7 -7
  190. package/lib/python/poetry.js +41 -33
  191. package/lib/python/projenrc.d.ts +2 -2
  192. package/lib/python/projenrc.js +24 -21
  193. package/lib/python/pytest.d.ts +2 -2
  194. package/lib/python/pytest.js +19 -19
  195. package/lib/python/python-deps.d.ts +2 -2
  196. package/lib/python/python-deps.js +1 -1
  197. package/lib/python/python-packaging.d.ts +2 -2
  198. package/lib/python/python-packaging.js +1 -1
  199. package/lib/python/python-project.d.ts +7 -7
  200. package/lib/python/python-project.js +14 -13
  201. package/lib/python/python-sample.d.ts +2 -2
  202. package/lib/python/python-sample.js +17 -17
  203. package/lib/python/requirements-file.d.ts +3 -3
  204. package/lib/python/requirements-file.js +7 -8
  205. package/lib/python/setuppy.d.ts +2 -2
  206. package/lib/python/setuppy.js +23 -23
  207. package/lib/python/setuptools.d.ts +4 -4
  208. package/lib/python/setuptools.js +11 -11
  209. package/lib/python/venv.d.ts +3 -3
  210. package/lib/python/venv.js +6 -6
  211. package/lib/readme.d.ts +2 -2
  212. package/lib/readme.js +5 -3
  213. package/lib/release/bump-version.d.ts +1 -1
  214. package/lib/release/bump-version.js +37 -26
  215. package/lib/release/bump-version.task.js +7 -7
  216. package/lib/release/index.d.ts +3 -3
  217. package/lib/release/index.js +1 -1
  218. package/lib/release/publisher.d.ts +4 -4
  219. package/lib/release/publisher.js +93 -78
  220. package/lib/release/release-trigger.js +3 -3
  221. package/lib/release/release.d.ts +6 -6
  222. package/lib/release/release.js +37 -23
  223. package/lib/release/reset-version.task.js +4 -4
  224. package/lib/release/tag-version.js +1 -1
  225. package/lib/release/tag-version.task.js +3 -3
  226. package/lib/release/update-changelog.js +6 -4
  227. package/lib/release/update-changelog.task.js +4 -4
  228. package/lib/run-projenrc-json.task.js +5 -5
  229. package/lib/sample-file.d.ts +2 -2
  230. package/lib/sample-file.js +8 -8
  231. package/lib/semver.js +17 -7
  232. package/lib/source-code.d.ts +2 -2
  233. package/lib/source-code.js +5 -5
  234. package/lib/task-model.js +1 -1
  235. package/lib/task-runtime.d.ts +1 -1
  236. package/lib/task-runtime.js +27 -27
  237. package/lib/task.d.ts +1 -1
  238. package/lib/task.js +2 -2
  239. package/lib/tasks.d.ts +3 -3
  240. package/lib/tasks.js +5 -5
  241. package/lib/testing.d.ts +1 -1
  242. package/lib/testing.js +2 -2
  243. package/lib/textfile.d.ts +2 -2
  244. package/lib/textfile.js +3 -3
  245. package/lib/toml.d.ts +3 -3
  246. package/lib/toml.js +4 -4
  247. package/lib/typescript/index.d.ts +3 -3
  248. package/lib/typescript/index.js +1 -1
  249. package/lib/typescript/projenrc.d.ts +2 -2
  250. package/lib/typescript/projenrc.js +10 -10
  251. package/lib/typescript/typescript-typedoc.d.ts +1 -1
  252. package/lib/typescript/typescript-typedoc.js +4 -4
  253. package/lib/typescript/typescript.d.ts +3 -3
  254. package/lib/typescript/typescript.js +59 -62
  255. package/lib/util/semver.js +33 -33
  256. package/lib/util/synth.d.ts +1 -1
  257. package/lib/util/synth.js +15 -12
  258. package/lib/util.js +39 -32
  259. package/lib/version.d.ts +3 -3
  260. package/lib/version.js +12 -12
  261. package/lib/vscode/devcontainer.d.ts +4 -4
  262. package/lib/vscode/devcontainer.js +13 -8
  263. package/lib/vscode/index.d.ts +3 -3
  264. package/lib/vscode/index.js +1 -1
  265. package/lib/vscode/launch-config.d.ts +2 -2
  266. package/lib/vscode/launch-config.js +4 -4
  267. package/lib/vscode/vscode.d.ts +3 -3
  268. package/lib/vscode/vscode.js +2 -2
  269. package/lib/web/index.d.ts +4 -4
  270. package/lib/web/index.js +1 -1
  271. package/lib/web/next.d.ts +3 -3
  272. package/lib/web/next.js +241 -237
  273. package/lib/web/postcss.d.ts +3 -3
  274. package/lib/web/postcss.js +9 -6
  275. package/lib/web/react.d.ts +4 -4
  276. package/lib/web/react.js +172 -177
  277. package/lib/web/tailwind.d.ts +2 -2
  278. package/lib/web/tailwind.js +3 -3
  279. package/lib/xmlfile.d.ts +3 -3
  280. package/lib/xmlfile.js +5 -5
  281. package/lib/yaml.d.ts +3 -3
  282. package/lib/yaml.js +4 -4
  283. package/package.json +4 -1
  284. package/releasetag.txt +1 -1
  285. package/version.txt +1 -1
package/lib/inventory.js CHANGED
@@ -4,8 +4,8 @@ exports.readJsiiManifest = exports.resolveProjectType = exports.discover = void
4
4
  const path = require("path");
5
5
  const case_1 = require("case");
6
6
  const fs = require("fs-extra");
7
- const PROJEN_MODULE_ROOT = path.join(__dirname, '..');
8
- const PROJECT_BASE_FQN = 'projen.Project';
7
+ const PROJEN_MODULE_ROOT = path.join(__dirname, "..");
8
+ const PROJECT_BASE_FQN = "projen.Project";
9
9
  /**
10
10
  * Returns a list of project types exported the modules defined in `moduleDirs`.
11
11
  * This list will always also include the built-in projen project types.
@@ -36,7 +36,7 @@ function discoverJsiiTypes(...moduleDirs) {
36
36
  const jsii = {};
37
37
  const discoveredManifests = [];
38
38
  const discoverJsii = (dir) => {
39
- const jsiiFile = path.join(dir, '.jsii');
39
+ const jsiiFile = path.join(dir, ".jsii");
40
40
  if (!fs.existsSync(jsiiFile)) {
41
41
  return;
42
42
  } // no jsii manifest
@@ -68,8 +68,8 @@ function discoverJsiiTypes(...moduleDirs) {
68
68
  for (const dir of [...moduleDirs, PROJEN_MODULE_ROOT]) {
69
69
  discoverJsii(dir);
70
70
  // Read from scoped packages
71
- if (dir.includes('@') && fs.lstatSync(dir).isDirectory()) {
72
- const childDirs = fs.readdirSync(dir).map(file => path.join(dir, file));
71
+ if (dir.includes("@") && fs.lstatSync(dir).isDirectory()) {
72
+ const childDirs = fs.readdirSync(dir).map((file) => path.join(dir, file));
73
73
  for (const child of childDirs) {
74
74
  discoverJsii(child);
75
75
  }
@@ -78,15 +78,13 @@ function discoverJsiiTypes(...moduleDirs) {
78
78
  return jsii;
79
79
  }
80
80
  function resolveProjectType(projectFqn) {
81
- let [moduleName] = projectFqn.split('.');
82
- if (moduleName === 'projen') {
81
+ let [moduleName] = projectFqn.split(".");
82
+ if (moduleName === "projen") {
83
83
  moduleName = PROJEN_MODULE_ROOT;
84
84
  }
85
85
  // try picking the manifest. We only need the base folder but this is directly a nice check if we request from a valid jsii package
86
86
  const jsiiManifestFile = require.resolve(`${moduleName}/.jsii`, {
87
- paths: [
88
- process.cwd(),
89
- ],
87
+ paths: [process.cwd()],
90
88
  });
91
89
  const moduleFolder = path.dirname(jsiiManifestFile);
92
90
  // Read all jsii types that can be loaded from this project type
@@ -101,9 +99,11 @@ function toProjectType(jsii, fqn) {
101
99
  }
102
100
  const typeinfo = jsii[fqn];
103
101
  // projen.web.ReactProject -> web.ReactProject
104
- const typename = fqn.substring(fqn.indexOf('.') + 1);
105
- const docsurl = `https://github.com/projen/projen/blob/main/API.md#projen-${typename.toLocaleLowerCase().replace(/\./g, '-')}`;
106
- let pjid = (_c = (_b = (_a = typeinfo.docs) === null || _a === void 0 ? void 0 : _a.custom) === null || _b === void 0 ? void 0 : _b.pjid) !== null && _c !== void 0 ? _c : case_1.snake(typename).replace(/_project$/, '');
102
+ const typename = fqn.substring(fqn.indexOf(".") + 1);
103
+ const docsurl = `https://github.com/projen/projen/blob/main/API.md#projen-${typename
104
+ .toLocaleLowerCase()
105
+ .replace(/\./g, "-")}`;
106
+ let pjid = (_c = (_b = (_a = typeinfo.docs) === null || _a === void 0 ? void 0 : _a.custom) === null || _b === void 0 ? void 0 : _b.pjid) !== null && _c !== void 0 ? _c : case_1.snake(typename).replace(/_project$/, "");
107
107
  return {
108
108
  moduleName: typeinfo.assembly,
109
109
  typename,
@@ -115,8 +115,8 @@ function toProjectType(jsii, fqn) {
115
115
  };
116
116
  }
117
117
  function readJsiiManifest(jsiiFqn) {
118
- let [moduleName] = jsiiFqn.split('.');
119
- if (moduleName === 'projen') {
118
+ let [moduleName] = jsiiFqn.split(".");
119
+ if (moduleName === "projen") {
120
120
  moduleName = PROJEN_MODULE_ROOT;
121
121
  }
122
122
  const jsiiManifestFile = require.resolve(`${moduleName}/.jsii`);
@@ -129,7 +129,8 @@ function discoverOptions(jsii, fqn) {
129
129
  const params = (_c = (_b = (_a = jsii[fqn]) === null || _a === void 0 ? void 0 : _a.initializer) === null || _b === void 0 ? void 0 : _b.parameters) !== null && _c !== void 0 ? _c : [];
130
130
  const optionsParam = params[0];
131
131
  const optionsTypeFqn = (_d = optionsParam === null || optionsParam === void 0 ? void 0 : optionsParam.type) === null || _d === void 0 ? void 0 : _d.fqn;
132
- if (params.length > 1 || (params.length === 1 && (optionsParam === null || optionsParam === void 0 ? void 0 : optionsParam.name) !== 'options')) {
132
+ if (params.length > 1 ||
133
+ (params.length === 1 && (optionsParam === null || optionsParam === void 0 ? void 0 : optionsParam.name) !== "options")) {
133
134
  throw new Error(`constructor for project ${fqn} must have a single "options" argument of a struct type. got ${JSON.stringify(params)}`);
134
135
  }
135
136
  addOptions(optionsTypeFqn);
@@ -156,7 +157,7 @@ function discoverOptions(jsii, fqn) {
156
157
  }
157
158
  const isOptional = optional || prop.optional;
158
159
  let defaultValue = (_d = prop.docs) === null || _d === void 0 ? void 0 : _d.default;
159
- if (defaultValue === 'undefined') {
160
+ if (defaultValue === "undefined") {
160
161
  defaultValue = undefined;
161
162
  }
162
163
  // if this is a mandatory option and we have a default value, it has to be JSON-parsable to the correct type
@@ -172,15 +173,15 @@ function discoverOptions(jsii, fqn) {
172
173
  name: prop.name,
173
174
  fqn: (_g = prop.type) === null || _g === void 0 ? void 0 : _g.fqn,
174
175
  docs: prop.docs.summary,
175
- simpleType: prop.type ? getSimpleTypeName(prop.type) : 'unknown',
176
+ simpleType: prop.type ? getSimpleTypeName(prop.type) : "unknown",
176
177
  fullType: prop.type,
177
178
  kind: jsiiKind,
178
179
  jsonLike: prop.type ? isJsonLike(jsii, prop.type) : undefined,
179
- switch: propPath.map(p => case_1.snake(p).replace(/_/g, '-')).join('-'),
180
+ switch: propPath.map((p) => case_1.snake(p).replace(/_/g, "-")).join("-"),
180
181
  default: defaultValue,
181
182
  optional: isOptional,
182
- featured: ((_j = (_h = prop.docs) === null || _h === void 0 ? void 0 : _h.custom) === null || _j === void 0 ? void 0 : _j.featured) === 'true',
183
- deprecated: prop.docs.stability === 'deprecated' ? true : undefined,
183
+ featured: ((_j = (_h = prop.docs) === null || _h === void 0 ? void 0 : _h.custom) === null || _j === void 0 ? void 0 : _j.featured) === "true",
184
+ deprecated: prop.docs.stability === "deprecated" ? true : undefined,
184
185
  });
185
186
  }
186
187
  for (const ifc of (_k = struct.interfaces) !== null && _k !== void 0 ? _k : []) {
@@ -193,22 +194,25 @@ function getSimpleTypeName(type) {
193
194
  return type.primitive; // e.g. 'string', 'boolean', 'number'
194
195
  }
195
196
  else if (type === null || type === void 0 ? void 0 : type.fqn) {
196
- return type.fqn.split('.').pop(); // projen.NodeProjectOptions -> NodeProjectOptions
197
+ return type.fqn.split(".").pop(); // projen.NodeProjectOptions -> NodeProjectOptions
197
198
  }
198
- else { // any other types such as collection types
199
- return 'unknown';
199
+ else {
200
+ // any other types such as collection types
201
+ return "unknown";
200
202
  }
201
203
  }
202
204
  /**
203
205
  * Whether a value of this type is serializable into JSON.
204
206
  */
205
207
  function isJsonLike(jsii, type) {
206
- if (type.primitive) { // string, boolean, number, any
208
+ if (type.primitive) {
209
+ // string, boolean, number, any
207
210
  return true;
208
211
  }
209
212
  else if (type.fqn) {
210
213
  const kind = jsii[type.fqn].kind;
211
- if (['interface', 'enum'].includes(kind)) { // not 'class'
214
+ if (["interface", "enum"].includes(kind)) {
215
+ // not 'class'
212
216
  return true;
213
217
  }
214
218
  }
@@ -232,7 +236,7 @@ function isProjectType(jsii, fqn) {
232
236
  if (!type) {
233
237
  throw new Error(`Could not find project type with fqn "${fqn}" in .jsii file.`);
234
238
  }
235
- if (type.kind !== 'class') {
239
+ if (type.kind !== "class") {
236
240
  return false;
237
241
  }
238
242
  if (type.abstract) {
@@ -257,12 +261,12 @@ function isProjectType(jsii, fqn) {
257
261
  }
258
262
  function checkDefaultIsParsable(prop, value, type) {
259
263
  // macros are pass-through
260
- if (value.startsWith('$')) {
264
+ if (value.startsWith("$")) {
261
265
  return;
262
266
  }
263
267
  try {
264
268
  const parsed = JSON.parse(value);
265
- if (typeof (parsed) !== type) {
269
+ if (typeof parsed !== type) {
266
270
  throw new Error(`cannot parse @default value for mandatory option ${prop} as a ${type}: ${parsed}`);
267
271
  }
268
272
  }
@@ -270,4 +274,4 @@ function checkDefaultIsParsable(prop, value, type) {
270
274
  throw new Error(`unable to JSON.parse() value "${value}" specified as @default for mandatory option "${prop}": ${e.message}`);
271
275
  }
272
276
  }
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52ZW50b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ludmVudG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFDN0IsK0JBQTZCO0FBQzdCLCtCQUErQjtBQUUvQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RELE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7QUE2RTFDOzs7Ozs7R0FNRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxHQUFHLFVBQW9CO0lBRTlDLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFFOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQWUsQ0FBQztJQUV4QyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDbkMsSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLE1BQU0sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoQjtLQUNGO0lBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQWRELDRCQWNDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLFVBQW9CO0lBQ2hELE1BQU0sSUFBSSxHQUFjLEVBQUUsQ0FBQztJQUMzQixNQUFNLG1CQUFtQixHQUFrQixFQUFFLENBQUM7SUFFOUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFX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QixPQUFPLElBQUksRUFBRTtRQUNYLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxnQkFBZ0IsRUFBRTtZQUNqQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2Q7S0FDRjtBQUNILENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsSUFBWTtJQUN2RSwwQkFBMEI7SUFDMUIsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3pCLE9BQU87S0FDUjtJQUNELElBQUk7UUFDRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksT0FBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxJQUFJLFNBQVMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDckc7S0FFRjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsS0FBSyxpREFBaUQsSUFBSSxNQUFPLENBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ3hJO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBzbmFrZSB9IGZyb20gJ2Nhc2UnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuXG5jb25zdCBQUk9KRU5fTU9EVUxFX1JPT1QgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nKTtcbmNvbnN0IFBST0pFQ1RfQkFTRV9GUU4gPSAncHJvamVuLlByb2plY3QnO1xuXG50eXBlIEpzaWlUeXBlcyA9IHsgW25hbWU6IHN0cmluZ106IEpzaWlUeXBlIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdE9wdGlvbiB7XG4gIHBhdGg6IHN0cmluZ1tdO1xuICBuYW1lOiBzdHJpbmc7XG4gIGZxbj86IHN0cmluZztcbiAgc3dpdGNoOiBzdHJpbmc7XG4gIC8qKiBTaW1wbGUgdHlwZSBuYW1lLCBlLmcuIFwic3RyaW5nXCIsIFwiYm9vbGVhblwiLCBcIm51bWJlclwiLCBcIkVzbGludE9wdGlvbnNcIiwgXCJNeUVudW1cIi4gQ29sbGVjdGlvbnMgYXJlIFwidW5rbm93blwiICovXG4gIHNpbXBsZVR5cGU6IHN0cmluZztcbiAgLyoqIEZ1bGwgSlNJSSB0eXBlLCBlLmcuIHsgcHJpbWl0aXZlOiBcInN0cmluZ1wiIH0gb3IgeyBjb2xsZWN0aW9uOiB7IGVsZW1lbnR0eXBlOiB7IHByaW1pdGl2ZTogJ3N0cmluZycgfSwga2luZDogJ21hcCcgfSB9ICovXG4gIGZ1bGxUeXBlOiBKc2lpUHJvcGVydHlUeXBlO1xuICBraW5kPzogJ2NsYXNzJyB8ICdlbnVtJyB8ICdpbnRlcmZhY2UnO1xuICBqc29uTGlrZT86IGJvb2xlYW47XG4gIHBhcmVudDogc3RyaW5nO1xuICBkb2NzPzogc3RyaW5nO1xuICBkZWZhdWx0Pzogc3RyaW5nO1xuICBvcHRpb25hbD86IGJvb2xlYW47XG4gIGRlcHJlY2F0ZWQ/OiBib29sZWFuO1xuICBmZWF0dXJlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdFR5cGUge1xuICBtb2R1bGVOYW1lOiBzdHJpbmc7XG4gIHBqaWQ6IHN0cmluZztcbiAgZnFuOiBzdHJpbmc7XG4gIHR5cGVuYW1lOiBzdHJpbmc7XG4gIG9wdGlvbnM6IFByb2plY3RPcHRpb25bXTtcbiAgZG9jcz86IHN0cmluZztcbiAgZG9jc3VybDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSnNpaVR5cGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFzc2VtYmx5OiBzdHJpbmc7XG4gIGtpbmQ6IHN0cmluZztcbiAgYWJzdHJhY3Q/OiBib29sZWFuO1xuICBiYXNlPzogc3RyaW5nO1xuICBmcW46IHN0cmluZztcbiAgaW50ZXJmYWNlcz86IHN0cmluZ1tdO1xuICBpbml0aWFsaXplcj86IHtcbiAgICBwYXJhbWV0ZXJzPzogQXJyYXk8e1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgdHlwZT86IHsgZnFuPzogc3RyaW5nIH07XG4gICAgfT47XG4gIH07XG4gIHByb3BlcnRpZXM/OiBBcnJheTx7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRvY3M6IHtcbiAgICAgIHN1bW1hcnk/OiBzdHJpbmc7XG4gICAgICBkZWZhdWx0Pzogc3RyaW5nO1xuICAgICAgZGVwcmVjYXRlZD86IHN0cmluZztcbiAgICAgIHN0YWJpbGl0eT86IHN0cmluZztcbiAgICAgIGN1c3RvbT86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIH07XG4gICAgb3B0aW9uYWw/OiBib29sZWFuO1xuICAgIHR5cGU/OiBKc2lpUHJvcGVydHlUeXBlO1xuICB9PjtcbiAgZG9jcz86IHtcbiAgICBzdW1tYXJ5Pzogc3RyaW5nO1xuICAgIGRlcHJlY2F0ZWQ/OiBzdHJpbmc7XG4gICAgY3VzdG9tPzoge1xuICAgICAgcGppZD86IHN0cmluZztcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlQcm9wZXJ0eVR5cGUge1xuICBwcmltaXRpdmU/OiBzdHJpbmc7XG4gIGZxbj86IHN0cmluZztcbiAgY29sbGVjdGlvbj86IHtcbiAgICBlbGVtZW50dHlwZTogSnNpaVByb3BlcnR5VHlwZTtcbiAgICBraW5kOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGxpc3Qgb2YgcHJvamVjdCB0eXBlcyBleHBvcnRlZCB0aGUgbW9kdWxlcyBkZWZpbmVkIGluIGBtb2R1bGVEaXJzYC5cbiAqIFRoaXMgbGlzdCB3aWxsIGFsd2F5cyBhbHNvIGluY2x1ZGUgdGhlIGJ1aWx0LWluIHByb2plbiBwcm9qZWN0IHR5cGVzLlxuICogTW9kdWxlcyB3aXRob3V0IGEgLmpzaWkgbWFuaWZlc3QgYXJlIHNraXBwZWQuXG4gKlxuICogQHBhcmFtIG1vZHVsZURpcnMgQSBsaXN0IG9mIG5wbSBtb2R1bGUgZGlyZWN0b3JpZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc2NvdmVyKC4uLm1vZHVsZURpcnM6IHN0cmluZ1tdKSB7XG5cbiAgY29uc3QganNpaSA9IGRpc2NvdmVySnNpaVR5cGVzKC4uLm1vZHVsZURpcnMpO1xuXG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxQcm9qZWN0VHlwZT4oKTtcblxuICBmb3IgKGNvbnN0IGZxbiBvZiBPYmplY3Qua2V5cyhqc2lpKSkge1xuICAgIGlmIChpc1Byb2plY3RUeXBlKGpzaWksIGZxbikpIHtcbiAgICAgIGNvbnN0IHAgPSB0b1Byb2plY3RUeXBlKGpzaWksIGZxbik7XG4gICAgICByZXN1bHQucHVzaChwKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LnNvcnQoKHIxLCByMikgPT4gcjEucGppZC5sb2NhbGVDb21wYXJlKHIyLnBqaWQpKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFsbCBqc2lpIHR5cGVzIGZyb20gQG1vZHVsZXNEaXJzLlxuICogV2hlbiBhIGpzaWkgbW9kdWxlIGlzIGZvdW5kIGl0IHdpbGwgcmVjdXNpdmVseSBsaXN0IHRoZSB0eXBlcyBmcm9tIHRoZSBkZXBlbmRhbnQgbW9kdWxlIGFzIHdlbGxcbiAqXG4gKiBAcGFyYW0gbW9kdWxlRGlyc1xuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24gZGlzY292ZXJKc2lpVHlwZXMoLi4ubW9kdWxlRGlyczogc3RyaW5nW10pIHtcbiAgY29uc3QganNpaTogSnNpaVR5cGVzID0ge307XG4gIGNvbnN0IGRpc2NvdmVyZWRNYW5pZmVzdHM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICBjb25zdCBkaXNjb3ZlckpzaWkgPSAoZGlyOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBqc2lpRmlsZSA9IHBhdGguam9pbihkaXIsICcuanNpaScpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhqc2lpRmlsZSkpIHsgcmV0dXJuOyB9IC8vIG5vIGpzaWkgbWFuaWZlc3RcblxuICAgIGNvbnN0IG1hbmlmZXN0ID0gZnMucmVhZEpzb25TeW5jKGpzaWlGaWxlKTtcblxuICAgIGlmIChkaXNjb3ZlcmVkTWFuaWZlc3RzLmluY2x1ZGVzKG1hbmlmZXN0LmZpbmdlcnByaW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkaXNjb3ZlcmVkTWFuaWZlc3RzLnB1c2gobWFuaWZlc3QuZmluZ2VycHJpbnQpO1xuXG4gICAgZm9yIChjb25zdCBbZnFuLCB0eXBlXSBvZiBPYmplY3QuZW50cmllcyhtYW5pZmVzdC50eXBlcyBhcyBKc2lpVHlwZXMpKSB7XG4gICAgICBqc2lpW2Zxbl0gPSB7XG4gICAgICAgIC4uLnR5cGUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEFsc28gc2VhcmNoIHJlY3Vyc2l2ZWx5IGluIG5lc3RlZCBwcm9qZWN0IGRlcGVuZGVuY2llcy4gSWYgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaXMgYW4gZXh0ZXJuYWwgbW9kdWxlXG4gICAgLy8gdGhpcyB3aWxsIGFsc28gZW5kLXVwIGluIHRoZSBwcm9qZW4gbW9kdWxlIGFuZCBhZGQgdGhlIHByb2plbiB0eXBlc1xuICAgIGlmIChtYW5pZmVzdC5kZXBlbmRlbmNpZXMpIHtcbiAgICAgIGZvciAoY29uc3QgZGVwZW5kZW5jeSBvZiBPYmplY3Qua2V5cyhtYW5pZmVzdC5kZXBlbmRlbmNpZXMpKSB7XG4gICAgICAgIGNvbnN0IG5lc3RlZERlcGVuZGVuY3lGb2xkZXIgPSBwYXRoLmRpcm5hbWUocmVxdWlyZS5yZXNvbHZlKGAke2RlcGVuZGVuY3l9L3BhY2thZ2UuanNvbmAsIHtcbiAgICAgICAgICBwYXRoczogW2Rpcl0sXG4gICAgICAgIH0pKTtcblxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhuZXN0ZWREZXBlbmRlbmN5Rm9sZGVyKSkge1xuICAgICAgICAgIGRpc2NvdmVySnNpaShuZXN0ZWREZXBlbmRlbmN5Rm9sZGVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvLyByZWFkIGFsbCAuanNpaSBtYW5pZmVzdHMgZnJvbSBhbGwgcmVxdWVzdGVkIG1vZHVsZXMgYW5kIG1lcmdlXG4gIC8vIHRoZW0gYWxsIGludG8gYSBzaW5nbGUgbWFwIG9mIGZxbi0+dHlwZS5cbiAgZm9yIChjb25zdCBkaXIgb2YgWy4uLm1vZHVsZURpcnMsIFBST0pFTl9NT0RVTEVfUk9PVF0pIHtcbiAgICBkaXNjb3ZlckpzaWkoZGlyKTtcblxuICAgIC8vIFJlYWQgZnJvbSBzY29wZWQgcGFja2FnZXNcbiAgICBpZiAoZGlyLmluY2x1ZGVzKCdAJykgJiYgZnMubHN0YXRTeW5jKGRpcikuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgY29uc3QgY2hpbGREaXJzID0gZnMucmVhZGRpclN5bmMoZGlyKS5tYXAoZmlsZSA9PiBwYXRoLmpvaW4oZGlyLCBmaWxlKSk7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkRGlycykge1xuICAgICAgICBkaXNjb3ZlckpzaWkoY2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBqc2lpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVByb2plY3RUeXBlKHByb2plY3RGcW46IHN0cmluZyk6IFByb2plY3RUeXBlIHtcbiAgbGV0IFttb2R1bGVOYW1lXSA9IHByb2plY3RGcW4uc3BsaXQoJy4nKTtcbiAgaWYgKG1vZHVsZU5hbWUgPT09ICdwcm9qZW4nKSB7XG4gICAgbW9kdWxlTmFtZSA9IFBST0pFTl9NT0RVTEVfUk9PVDtcbiAgfVxuXG4gIC8vIHRyeSBwaWNraW5nIHRoZSBtYW5pZmVzdC4gV2Ugb25seSBuZWVkIHRoZSBiYXNlIGZvbGRlciBidXQgdGhpcyBpcyBkaXJlY3RseSBhIG5pY2UgY2hlY2sgaWYgd2UgcmVxdWVzdCBmcm9tIGEgdmFsaWQganNpaSBwYWNrYWdlXG4gIGNvbnN0IGpzaWlNYW5pZmVzdEZpbGUgPSByZXF1aXJlLnJlc29sdmUoYCR7bW9kdWxlTmFtZX0vLmpzaWlgLCB7XG4gICAgcGF0aHM6IFtcbiAgICAgIHByb2Nlc3MuY3dkKCksXG4gICAgXSxcbiAgfSk7XG4gIGNvbnN0IG1vZHVsZUZvbGRlciA9IHBhdGguZGlybmFtZShqc2lpTWFuaWZlc3RGaWxlKTtcblxuICAvLyBSZWFkIGFsbCBqc2lpIHR5cGVzIHRoYXQgY2FuIGJlIGxvYWRlZCBmcm9tIHRoaXMgcHJvamVjdCB0eXBlXG4gIGNvbnN0IGpzaWkgPSBkaXNjb3ZlckpzaWlUeXBlcyhtb2R1bGVGb2xkZXIpO1xuICByZXR1cm4gdG9Qcm9qZWN0VHlwZShqc2lpLCBwcm9qZWN0RnFuKTtcbn1cblxuZnVuY3Rpb24gdG9Qcm9qZWN0VHlwZShqc2lpOiBKc2lpVHlwZXMsIGZxbjogc3RyaW5nKTogUHJvamVjdFR5cGUge1xuICBpZiAoIWlzUHJvamVjdFR5cGUoanNpaSwgZnFuKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRnVsbHkgcXVhbGlmaWVkIG5hbWUgXCIke2Zxbn1cIiBpcyBub3QgYSB2YWxpZCBwcm9qZWN0IHR5cGUuYCk7XG4gIH1cblxuICBjb25zdCB0eXBlaW5mbyA9IGpzaWlbZnFuXTtcblxuICAvLyBwcm9qZW4ud2ViLlJlYWN0UHJvamVjdCAtPiB3ZWIuUmVhY3RQcm9qZWN0XG4gIGNvbnN0IHR5cGVuYW1lID0gZnFuLnN1YnN0cmluZyhmcW4uaW5kZXhPZignLicpICsgMSk7XG5cbiAgY29uc3QgZG9jc3VybCA9IGBodHRwczovL2dpdGh1Yi5jb20vcHJvamVuL3Byb2plbi9ibG9iL21haW4vQVBJLm1kI3Byb2plbi0ke3R5cGVuYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkucmVwbGFjZSgvXFwuL2csICctJyl9YDtcbiAgbGV0IHBqaWQgPSB0eXBlaW5mby5kb2NzPy5jdXN0b20/LnBqaWQgPz8gc25ha2UodHlwZW5hbWUpLnJlcGxhY2UoL19wcm9qZWN0JC8sICcnKTtcbiAgcmV0dXJuIHtcbiAgICBtb2R1bGVOYW1lOiB0eXBlaW5mby5hc3NlbWJseSxcbiAgICB0eXBlbmFtZSxcbiAgICBwamlkLFxuICAgIGZxbixcbiAgICBvcHRpb25zOiBkaXNjb3Zlck9wdGlvbnMoanNpaSwgZnFuKS5zb3J0KChvMSwgbzIpID0+IG8xLm5hbWUubG9jYWxlQ29tcGFyZShvMi5uYW1lKSksXG4gICAgZG9jczogdHlwZWluZm8uZG9jcz8uc3VtbWFyeSxcbiAgICBkb2NzdXJsLFxuICB9IGFzIFByb2plY3RUeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEpzaWlNYW5pZmVzdChqc2lpRnFuOiBzdHJpbmcpOiBhbnkge1xuICBsZXQgW21vZHVsZU5hbWVdID0ganNpaUZxbi5zcGxpdCgnLicpO1xuICBpZiAobW9kdWxlTmFtZSA9PT0gJ3Byb2plbicpIHtcbiAgICBtb2R1bGVOYW1lID0gUFJPSkVOX01PRFVMRV9ST09UO1xuICB9XG5cbiAgY29uc3QganNpaU1hbmlmZXN0RmlsZSA9IHJlcXVpcmUucmVzb2x2ZShgJHttb2R1bGVOYW1lfS8uanNpaWApO1xuICByZXR1cm4gZnMucmVhZEpzb25TeW5jKGpzaWlNYW5pZmVzdEZpbGUpO1xufVxuXG5mdW5jdGlvbiBkaXNjb3Zlck9wdGlvbnMoanNpaTogSnNpaVR5cGVzLCBmcW46IHN0cmluZyk6IFByb2plY3RPcHRpb25bXSB7XG4gIGNvbnN0IG9wdGlvbnM6IHsgW25hbWU6IHN0cmluZ106IFByb2plY3RPcHRpb24gfSA9IHt9O1xuICBjb25zdCBwYXJhbXMgPSBqc2lpW2Zxbl0/LmluaXRpYWxpemVyPy5wYXJhbWV0ZXJzID8/IFtdO1xuICBjb25zdCBvcHRpb25zUGFyYW0gPSBwYXJhbXNbMF07XG4gIGNvbnN0IG9wdGlvbnNUeXBlRnFuID0gb3B0aW9uc1BhcmFtPy50eXBlPy5mcW47XG5cbiAgaWYgKHBhcmFtcy5sZW5ndGggPiAxIHx8IChwYXJhbXMubGVuZ3RoID09PSAxICYmIG9wdGlvbnNQYXJhbT8ubmFtZSAhPT0gJ29wdGlvbnMnKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgY29uc3RydWN0b3IgZm9yIHByb2plY3QgJHtmcW59IG11c3QgaGF2ZSBhIHNpbmdsZSBcIm9wdGlvbnNcIiBhcmd1bWVudCBvZiBhIHN0cnVjdCB0eXBlLiBnb3QgJHtKU09OLnN0cmluZ2lmeShwYXJhbXMpfWApO1xuICB9XG5cbiAgYWRkT3B0aW9ucyhvcHRpb25zVHlwZUZxbik7XG5cbiAgY29uc3Qgb3B0cyA9IE9iamVjdC52YWx1ZXMob3B0aW9ucyk7XG5cbiAgcmV0dXJuIG9wdHMuc29ydCgoYSwgYikgPT4gYS5zd2l0Y2gubG9jYWxlQ29tcGFyZShiLnN3aXRjaCkpO1xuXG4gIGZ1bmN0aW9uIGFkZE9wdGlvbnMob2Zxbj86IHN0cmluZywgYmFzZVBhdGg6IHN0cmluZ1tdID0gW10sIG9wdGlvbmFsID0gZmFsc2UpIHtcbiAgICBpZiAoIW9mcW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJ1Y3QgPSBqc2lpW29mcW5dO1xuICAgIGlmICghc3RydWN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuYWJsZSB0byBmaW5kIG9wdGlvbnMgdHlwZSAke29mcW59IGZvciBwcm9qZWN0ICR7ZnFufWApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcHJvcCBvZiBzdHJ1Y3QucHJvcGVydGllcyA/PyBbXSkge1xuICAgICAgY29uc3QgcHJvcFBhdGggPSBbLi4uYmFzZVBhdGgsIHByb3AubmFtZV07XG5cbiAgICAgIC8vIHByb3RlY3QgYWdhaW5zdCBkb3VibGUtYm9va2luZ1xuICAgICAgaWYgKHByb3AubmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgZHVwbGljYXRlIG9wdGlvbiBcIiR7cHJvcC5uYW1lfVwiIGluICR7ZnFufSAoYWxyZWFkeSBkZWNsYXJlZCBpbiAke29wdGlvbnNbcHJvcC5uYW1lXS5wYXJlbnR9KWApO1xuICAgICAgfVxuXG4gICAgICBsZXQganNpaUtpbmQ7XG4gICAgICBpZiAocHJvcC50eXBlPy5mcW4pIHtcbiAgICAgICAganNpaUtpbmQgPSBqc2lpW3Byb3AudHlwZT8uZnFuXS5raW5kOyAvLyBlLmcuICdjbGFzcycsICdpbnRlcmZhY2UnLCAnZW51bSdcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNPcHRpb25hbCA9IG9wdGlvbmFsIHx8IHByb3Aub3B0aW9uYWw7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlID0gcHJvcC5kb2NzPy5kZWZhdWx0O1xuXG4gICAgICBpZiAoZGVmYXVsdFZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGlmIHRoaXMgaXMgYSBtYW5kYXRvcnkgb3B0aW9uIGFuZCB3ZSBoYXZlIGEgZGVmYXVsdCB2YWx1ZSwgaXQgaGFzIHRvIGJlIEpTT04tcGFyc2FibGUgdG8gdGhlIGNvcnJlY3QgdHlwZVxuICAgICAgaWYgKCFpc09wdGlvbmFsICYmIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICBpZiAoIXByb3AudHlwZT8ucHJpbWl0aXZlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGByZXF1aXJlZCBvcHRpb24gXCIke3Byb3AubmFtZX1cIiB3aXRoIGEgQGRlZmF1bHQgbXVzdCB1c2UgcHJpbWl0aXZlIHR5cGVzIChzdHJpbmcsIG51bWJlciBvciBib29sZWFuKS4gdHlwZSBmb3VuZCBpczogJHtKU09OLnN0cmluZ2lmeShwcm9wLnR5cGUpfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY2hlY2tEZWZhdWx0SXNQYXJzYWJsZShwcm9wLm5hbWUsIGRlZmF1bHRWYWx1ZSwgcHJvcC50eXBlPy5wcmltaXRpdmUpO1xuICAgICAgfVxuXG4gICAgICBvcHRpb25zW3Byb3AubmFtZV0gPSBmaWx0ZXJVbmRlZmluZWQoe1xuICAgICAgICBwYXRoOiBwcm9wUGF0aCxcbiAgICAgICAgcGFyZW50OiBzdHJ1Y3QubmFtZSxcbiAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICBmcW46IHByb3AudHlwZT8uZnFuLFxuICAgICAgICBkb2NzOiBwcm9wLmRvY3Muc3VtbWFyeSxcbiAgICAgICAgc2ltcGxlVHlwZTogcHJvcC50eXBlID8gZ2V0U2ltcGxlVHlwZU5hbWUocHJvcC50eXBlKSA6ICd1bmtub3duJyxcbiAgICAgICAgZnVsbFR5cGU6IHByb3AudHlwZSxcbiAgICAgICAga2luZDoganNpaUtpbmQsXG4gICAgICAgIGpzb25MaWtlOiBwcm9wLnR5cGUgPyBpc0pzb25MaWtlKGpzaWksIHByb3AudHlwZSkgOiB1bmRlZmluZWQsXG4gICAgICAgIHN3aXRjaDogcHJvcFBhdGgubWFwKHAgPT4gc25ha2UocCkucmVwbGFjZSgvXy9nLCAnLScpKS5qb2luKCctJyksXG4gICAgICAgIGRlZmF1bHQ6IGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgb3B0aW9uYWw6IGlzT3B0aW9uYWwsXG4gICAgICAgIGZlYXR1cmVkOiBwcm9wLmRvY3M/LmN1c3RvbT8uZmVhdHVyZWQgPT09ICd0cnVlJyxcbiAgICAgICAgZGVwcmVjYXRlZDogcHJvcC5kb2NzLnN0YWJpbGl0eSA9PT0gJ2RlcHJlY2F0ZWQnID8gdHJ1ZSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgaWZjIG9mIHN0cnVjdC5pbnRlcmZhY2VzID8/IFtdKSB7XG4gICAgICBhZGRPcHRpb25zKGlmYyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFNpbXBsZVR5cGVOYW1lKHR5cGU6IEpzaWlQcm9wZXJ0eVR5cGUpOiBzdHJpbmcge1xuICBpZiAodHlwZT8ucHJpbWl0aXZlKSB7XG4gICAgcmV0dXJuIHR5cGUucHJpbWl0aXZlOyAvLyBlLmcuICdzdHJpbmcnLCAnYm9vbGVhbicsICdudW1iZXInXG4gIH0gZWxzZSBpZiAodHlwZT8uZnFuKSB7XG4gICAgcmV0dXJuIHR5cGUuZnFuLnNwbGl0KCcuJykucG9wKCkhOyAvLyBwcm9qZW4uTm9kZVByb2plY3RPcHRpb25zIC0+IE5vZGVQcm9qZWN0T3B0aW9uc1xuICB9IGVsc2UgeyAvLyBhbnkgb3RoZXIgdHlwZXMgc3VjaCBhcyBjb2xsZWN0aW9uIHR5cGVzXG4gICAgcmV0dXJuICd1bmtub3duJztcbiAgfVxufVxuXG4vKipcbiAqIFdoZXRoZXIgYSB2YWx1ZSBvZiB0aGlzIHR5cGUgaXMgc2VyaWFsaXphYmxlIGludG8gSlNPTi5cbiAqL1xuZnVuY3Rpb24gaXNKc29uTGlrZShqc2lpOiBKc2lpVHlwZXMsIHR5cGU6IEpzaWlQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgaWYgKHR5cGUucHJpbWl0aXZlKSB7IC8vIHN0cmluZywgYm9vbGVhbiwgbnVtYmVyLCBhbnlcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmICh0eXBlLmZxbikge1xuICAgIGNvbnN0IGtpbmQgPSBqc2lpW3R5cGUuZnFuXS5raW5kO1xuICAgIGlmIChbJ2ludGVyZmFjZScsICdlbnVtJ10uaW5jbHVkZXMoa2luZCkpIHsgLy8gbm90ICdjbGFzcydcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlLmNvbGxlY3Rpb24pIHtcbiAgICByZXR1cm4gaXNKc29uTGlrZShqc2lpLCB0eXBlLmNvbGxlY3Rpb24uZWxlbWVudHR5cGUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZmlsdGVyVW5kZWZpbmVkKG9iajogYW55KSB7XG4gIGNvbnN0IHJldDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXRba10gPSB2O1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBpc1Byb2plY3RUeXBlKGpzaWk6IEpzaWlUeXBlcywgZnFuOiBzdHJpbmcpIHtcbiAgY29uc3QgdHlwZSA9IGpzaWlbZnFuXTtcblxuICBpZiAoIXR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIHByb2plY3QgdHlwZSB3aXRoIGZxbiBcIiR7ZnFufVwiIGluICAuanNpaSBmaWxlLmApO1xuICB9XG5cbiAgaWYgKHR5cGUua2luZCAhPT0gJ2NsYXNzJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZS5hYnN0cmFjdCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlLmRvY3M/LmRlcHJlY2F0ZWQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBsZXQgY3VyciA9IHR5cGU7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGN1cnIuZnFuID09PSBQUk9KRUNUX0JBU0VfRlFOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnIuYmFzZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGN1cnIgPSBqc2lpW2N1cnIuYmFzZV07XG4gICAgaWYgKCFjdXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrRGVmYXVsdElzUGFyc2FibGUocHJvcDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpIHtcbiAgLy8gbWFjcm9zIGFyZSBwYXNzLXRocm91Z2hcbiAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJyQnKSkge1xuICAgIHJldHVybjtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgIGlmICh0eXBlb2YocGFyc2VkKSAhPT0gdHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW5ub3QgcGFyc2UgQGRlZmF1bHQgdmFsdWUgZm9yIG1hbmRhdG9yeSBvcHRpb24gJHtwcm9wfSBhcyBhICR7dHlwZX06ICR7cGFyc2VkfWApO1xuICAgIH1cblxuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bmFibGUgdG8gSlNPTi5wYXJzZSgpIHZhbHVlIFwiJHt2YWx1ZX1cIiBzcGVjaWZpZWQgYXMgQGRlZmF1bHQgZm9yIG1hbmRhdG9yeSBvcHRpb24gXCIke3Byb3B9XCI6ICR7KGUgYXMgYW55KS5tZXNzYWdlfWApO1xuICB9XG59XG4iXX0=
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52ZW50b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ludmVudG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFDN0IsK0JBQTZCO0FBQzdCLCtCQUErQjtBQUUvQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RELE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7QUE2RTFDOzs7Ozs7R0FNRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxHQUFHLFVBQW9CO0lBQzlDLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFFOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQWUsQ0FBQztJQUV4QyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDbkMsSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLE1BQU0sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoQjtLQUNGO0lBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQWJELDRCQWFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLFVBQW9CO0lBQ2hELE1BQU0sSUFBSSxHQUFjLEVBQUUsQ0FBQztJQUMzQixNQUFNLG1CQUFtQixHQUFrQixFQUFFLENBQUM7SUFFOUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtRQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM1QixPQUFPO1NBQ1IsQ0FBQyxtQkFBbUI7UUFFckIsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzQyxJQUFJLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdEQsT0FBTztTQUNSO1FBQ0QsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBa0IsQ0FBQyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRztnQkFDVixHQUFHLElBQUk7YUFDUixDQUFDO1NBQ0g7UUFFRCx3R0FBd0c7UUFDeEcsc0VBQXNFO1FBQ3RFLElBQUksUUFBUSxDQUFDLFlBQVksRUFBRTtZQUN6QixLQUFLLE1BQU0sVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUMzRCxNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQ3pDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxVQUFVLGVBQWUsRUFBRTtvQkFDNUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDO2lCQUNiLENBQUMsQ0FDSCxDQUFDO2dCQUVGLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO29CQUN6QyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztpQkFDdEM7YUFDRjtTQUNGO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsZ0VBQWdFO0lBQ2hFLDJDQUEyQztJQUMzQyxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxVQUFVLEVBQUUsa0JBQWtCLENBQUMsRUFBRTtRQUNyRCxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbEIsNEJBQTRCO1FBQzVCLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3hELE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzFFLEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxFQUFFO2dCQUM3QixZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDckI7U0FDRjtLQUNGO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBZ0Isa0JBQWtCLENBQUMsVUFBa0I7SUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFO1FBQzNCLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQztLQUNqQztJQUVELG1JQUFtSTtJQUNuSSxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxVQUFVLFFBQVEsRUFBRTtRQUM5RCxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDdkIsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRXBELGdFQUFnRTtJQUNoRSxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3QyxPQUFPLGFBQWEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQWZELGdEQWVDO0FBRUQsU0FBUyxhQUFhLENBQUMsSUFBZSxFQUFFLEdBQVc7O0lBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQ2IseUJBQXlCLEdBQUcsZ0NBQWdDLENBQzdELENBQUM7S0FDSDtJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUzQiw4Q0FBOEM7SUFDOUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRXJELE1BQU0sT0FBTyxHQUFHLDREQUE0RCxRQUFRO1NBQ2pGLGlCQUFpQixFQUFFO1NBQ25CLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUN6QixJQUFJLElBQUkscUJBQ04sUUFBUSxDQUFDLElBQUksMENBQUUsTUFBTSwwQ0FBRSxJQUFJLG1DQUFJLFlBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLE9BQU87UUFDTCxVQUFVLEVBQUUsUUFBUSxDQUFDLFFBQVE7UUFDN0IsUUFBUTtRQUNSLElBQUk7UUFDSixHQUFHO1FBQ0gsT0FBTyxFQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQ2xELEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FDL0I7UUFDRCxJQUFJLFFBQUUsUUFBUSxDQUFDLElBQUksMENBQUUsT0FBTztRQUM1QixPQUFPO0tBQ08sQ0FBQztBQUNuQixDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsT0FBZTtJQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUU7UUFDM0IsVUFBVSxHQUFHLGtCQUFrQixDQUFDO0tBQ2pDO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsVUFBVSxRQUFRLENBQUMsQ0FBQztJQUNoRSxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBUkQsNENBUUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUFlLEVBQUUsR0FBVzs7SUFDbkQsTUFBTSxPQUFPLEdBQXNDLEVBQUUsQ0FBQztJQUN0RCxNQUFNLE1BQU0scUJBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQywwQ0FBRSxXQUFXLDBDQUFFLFVBQVUsbUNBQUksRUFBRSxDQUFDO0lBQ3hELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixNQUFNLGNBQWMsU0FBRyxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUUsSUFBSSwwQ0FBRSxHQUFHLENBQUM7SUFFL0MsSUFDRSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDakIsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFBLFlBQVksYUFBWixZQUFZLHVCQUFaLFlBQVksQ0FBRSxJQUFJLE1BQUssU0FBUyxDQUFDLEVBQ3pEO1FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FDYiwyQkFBMkIsR0FBRyxnRUFBZ0UsSUFBSSxDQUFDLFNBQVMsQ0FDMUcsTUFBTSxDQUNQLEVBQUUsQ0FDSixDQUFDO0tBQ0g7SUFFRCxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFM0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVwQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUU3RCxTQUFTLFVBQVUsQ0FDakIsSUFBYSxFQUNiLFdBQXFCLEVBQUUsRUFDdkIsUUFBUSxHQUFHLEtBQUs7O1FBRWhCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLElBQUksZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDM0U7UUFFRCxLQUFLLE1BQU0sSUFBSSxVQUFJLE1BQU0sQ0FBQyxVQUFVLG1DQUFJLEVBQUUsRUFBRTtZQUMxQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUxQyxpQ0FBaUM7WUFDakMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sRUFBRTtnQkFDeEIsTUFBTSxJQUFJLEtBQUssQ0FDYixxQkFBcUIsSUFBSSxDQUFDLElBQUksUUFBUSxHQUFHLHlCQUN2QyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQ3JCLEdBQUcsQ0FDSixDQUFDO2FBQ0g7WUFFRCxJQUFJLFFBQVEsQ0FBQztZQUNiLFVBQUksSUFBSSxDQUFDLElBQUksMENBQUUsR0FBRyxFQUFFO2dCQUNsQixRQUFRLEdBQUcsSUFBSSxPQUFDLElBQUksQ0FBQyxJQUFJLDBDQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLG9DQUFvQzthQUMzRTtZQUVELE1BQU0sVUFBVSxHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzdDLElBQUksWUFBWSxTQUFHLElBQUksQ0FBQyxJQUFJLDBDQUFFLE9BQU8sQ0FBQztZQUV0QyxJQUFJLFlBQVksS0FBSyxXQUFXLEVBQUU7Z0JBQ2hDLFlBQVksR0FBRyxTQUFTLENBQUM7YUFDMUI7WUFFRCw0R0FBNEc7WUFDNUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxZQUFZLEVBQUU7Z0JBQy9CLElBQUksUUFBQyxJQUFJLENBQUMsSUFBSSwwQ0FBRSxTQUFTLENBQUEsRUFBRTtvQkFDekIsTUFBTSxJQUFJLEtBQUssQ0FDYixvQkFDRSxJQUFJLENBQUMsSUFDUCwwRkFBMEYsSUFBSSxDQUFDLFNBQVMsQ0FDdEcsSUFBSSxDQUFDLElBQUksQ0FDVixFQUFFLENBQ0osQ0FBQztpQkFDSDtnQkFFRCxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFlBQVksUUFBRSxJQUFJLENBQUMsSUFBSSwwQ0FBRSxTQUFTLENBQUMsQ0FBQzthQUN2RTtZQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsZUFBZSxDQUFDO2dCQUNuQyxJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixHQUFHLFFBQUUsSUFBSSxDQUFDLElBQUksMENBQUUsR0FBRztnQkFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDaEUsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNuQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQzdELE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7Z0JBQ2xFLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixRQUFRLEVBQUUsVUFBVTtnQkFDcEIsUUFBUSxFQUFFLGFBQUEsSUFBSSxDQUFDLElBQUksMENBQUUsTUFBTSwwQ0FBRSxRQUFRLE1BQUssTUFBTTtnQkFDaEQsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQ3BFLENBQUMsQ0FBQztTQUNKO1FBRUQsS0FBSyxNQUFNLEdBQUcsVUFBSSxNQUFNLENBQUMsVUFBVSxtQ0FBSSxFQUFFLEVBQUU7WUFDekMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLElBQXNCO0lBQy9DLElBQUksSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFNBQVMsRUFBRTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxxQ0FBcUM7S0FDN0Q7U0FBTSxJQUFJLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxHQUFHLEVBQUU7UUFDcEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUcsQ0FBQyxDQUFDLGtEQUFrRDtLQUN0RjtTQUFNO1FBQ0wsMkNBQTJDO1FBQzNDLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxVQUFVLENBQUMsSUFBZSxFQUFFLElBQXNCO0lBQ3pELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNsQiwrQkFBK0I7UUFDL0IsT0FBTyxJQUFJLENBQUM7S0FDYjtTQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNuQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN4QyxjQUFjO1lBQ2QsT0FBTyxJQUFJLENBQUM7U0FDYjtLQUNGO1NBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQzFCLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQ3REO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsR0FBUTtJQUMvQixNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7SUFDcEIsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDeEMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ25CLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDWjtLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsSUFBZSxFQUFFLEdBQVc7O0lBQ2pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV2QixJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FDYix5Q0FBeUMsR0FBRyxtQkFBbUIsQ0FDaEUsQ0FBQztLQUNIO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtRQUN6QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2pCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxVQUFJLElBQUksQ0FBQyxJQUFJLDBDQUFFLFVBQVUsRUFBRTtRQUN6QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ2hCLE9BQU8sSUFBSSxFQUFFO1FBQ1gsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLGdCQUFnQixFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTyxLQUFLLENBQUM7U0FDZDtLQUNGO0FBQ0gsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxJQUFZO0lBQ3ZFLDBCQUEwQjtJQUMxQixJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDekIsT0FBTztLQUNSO0lBQ0QsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxPQUFPLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FDYixvREFBb0QsSUFBSSxTQUFTLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FDbkYsQ0FBQztTQUNIO0tBQ0Y7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE1BQU0sSUFBSSxLQUFLLENBQ2IsaUNBQWlDLEtBQUssaURBQWlELElBQUksTUFDeEYsQ0FBUyxDQUFDLE9BQ2IsRUFBRSxDQUNILENBQUM7S0FDSDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBzbmFrZSB9IGZyb20gXCJjYXNlXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcblxuY29uc3QgUFJPSkVOX01PRFVMRV9ST09UID0gcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiKTtcbmNvbnN0IFBST0pFQ1RfQkFTRV9GUU4gPSBcInByb2plbi5Qcm9qZWN0XCI7XG5cbnR5cGUgSnNpaVR5cGVzID0geyBbbmFtZTogc3RyaW5nXTogSnNpaVR5cGUgfTtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0T3B0aW9uIHtcbiAgcGF0aDogc3RyaW5nW107XG4gIG5hbWU6IHN0cmluZztcbiAgZnFuPzogc3RyaW5nO1xuICBzd2l0Y2g6IHN0cmluZztcbiAgLyoqIFNpbXBsZSB0eXBlIG5hbWUsIGUuZy4gXCJzdHJpbmdcIiwgXCJib29sZWFuXCIsIFwibnVtYmVyXCIsIFwiRXNsaW50T3B0aW9uc1wiLCBcIk15RW51bVwiLiBDb2xsZWN0aW9ucyBhcmUgXCJ1bmtub3duXCIgKi9cbiAgc2ltcGxlVHlwZTogc3RyaW5nO1xuICAvKiogRnVsbCBKU0lJIHR5cGUsIGUuZy4geyBwcmltaXRpdmU6IFwic3RyaW5nXCIgfSBvciB7IGNvbGxlY3Rpb246IHsgZWxlbWVudHR5cGU6IHsgcHJpbWl0aXZlOiAnc3RyaW5nJyB9LCBraW5kOiAnbWFwJyB9IH0gKi9cbiAgZnVsbFR5cGU6IEpzaWlQcm9wZXJ0eVR5cGU7XG4gIGtpbmQ/OiBcImNsYXNzXCIgfCBcImVudW1cIiB8IFwiaW50ZXJmYWNlXCI7XG4gIGpzb25MaWtlPzogYm9vbGVhbjtcbiAgcGFyZW50OiBzdHJpbmc7XG4gIGRvY3M/OiBzdHJpbmc7XG4gIGRlZmF1bHQ/OiBzdHJpbmc7XG4gIG9wdGlvbmFsPzogYm9vbGVhbjtcbiAgZGVwcmVjYXRlZD86IGJvb2xlYW47XG4gIGZlYXR1cmVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0VHlwZSB7XG4gIG1vZHVsZU5hbWU6IHN0cmluZztcbiAgcGppZDogc3RyaW5nO1xuICBmcW46IHN0cmluZztcbiAgdHlwZW5hbWU6IHN0cmluZztcbiAgb3B0aW9uczogUHJvamVjdE9wdGlvbltdO1xuICBkb2NzPzogc3RyaW5nO1xuICBkb2NzdXJsOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBKc2lpVHlwZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgYXNzZW1ibHk6IHN0cmluZztcbiAga2luZDogc3RyaW5nO1xuICBhYnN0cmFjdD86IGJvb2xlYW47XG4gIGJhc2U/OiBzdHJpbmc7XG4gIGZxbjogc3RyaW5nO1xuICBpbnRlcmZhY2VzPzogc3RyaW5nW107XG4gIGluaXRpYWxpemVyPzoge1xuICAgIHBhcmFtZXRlcnM/OiBBcnJheTx7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICB0eXBlPzogeyBmcW4/OiBzdHJpbmcgfTtcbiAgICB9PjtcbiAgfTtcbiAgcHJvcGVydGllcz86IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZG9jczoge1xuICAgICAgc3VtbWFyeT86IHN0cmluZztcbiAgICAgIGRlZmF1bHQ/OiBzdHJpbmc7XG4gICAgICBkZXByZWNhdGVkPzogc3RyaW5nO1xuICAgICAgc3RhYmlsaXR5Pzogc3RyaW5nO1xuICAgICAgY3VzdG9tPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgfTtcbiAgICBvcHRpb25hbD86IGJvb2xlYW47XG4gICAgdHlwZT86IEpzaWlQcm9wZXJ0eVR5cGU7XG4gIH0+O1xuICBkb2NzPzoge1xuICAgIHN1bW1hcnk/OiBzdHJpbmc7XG4gICAgZGVwcmVjYXRlZD86IHN0cmluZztcbiAgICBjdXN0b20/OiB7XG4gICAgICBwamlkPzogc3RyaW5nO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaVByb3BlcnR5VHlwZSB7XG4gIHByaW1pdGl2ZT86IHN0cmluZztcbiAgZnFuPzogc3RyaW5nO1xuICBjb2xsZWN0aW9uPzoge1xuICAgIGVsZW1lbnR0eXBlOiBKc2lpUHJvcGVydHlUeXBlO1xuICAgIGtpbmQ6IHN0cmluZztcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBwcm9qZWN0IHR5cGVzIGV4cG9ydGVkIHRoZSBtb2R1bGVzIGRlZmluZWQgaW4gYG1vZHVsZURpcnNgLlxuICogVGhpcyBsaXN0IHdpbGwgYWx3YXlzIGFsc28gaW5jbHVkZSB0aGUgYnVpbHQtaW4gcHJvamVuIHByb2plY3QgdHlwZXMuXG4gKiBNb2R1bGVzIHdpdGhvdXQgYSAuanNpaSBtYW5pZmVzdCBhcmUgc2tpcHBlZC5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlRGlycyBBIGxpc3Qgb2YgbnBtIG1vZHVsZSBkaXJlY3Rvcmllc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGlzY292ZXIoLi4ubW9kdWxlRGlyczogc3RyaW5nW10pIHtcbiAgY29uc3QganNpaSA9IGRpc2NvdmVySnNpaVR5cGVzKC4uLm1vZHVsZURpcnMpO1xuXG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxQcm9qZWN0VHlwZT4oKTtcblxuICBmb3IgKGNvbnN0IGZxbiBvZiBPYmplY3Qua2V5cyhqc2lpKSkge1xuICAgIGlmIChpc1Byb2plY3RUeXBlKGpzaWksIGZxbikpIHtcbiAgICAgIGNvbnN0IHAgPSB0b1Byb2plY3RUeXBlKGpzaWksIGZxbik7XG4gICAgICByZXN1bHQucHVzaChwKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LnNvcnQoKHIxLCByMikgPT4gcjEucGppZC5sb2NhbGVDb21wYXJlKHIyLnBqaWQpKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFsbCBqc2lpIHR5cGVzIGZyb20gQG1vZHVsZXNEaXJzLlxuICogV2hlbiBhIGpzaWkgbW9kdWxlIGlzIGZvdW5kIGl0IHdpbGwgcmVjdXNpdmVseSBsaXN0IHRoZSB0eXBlcyBmcm9tIHRoZSBkZXBlbmRhbnQgbW9kdWxlIGFzIHdlbGxcbiAqXG4gKiBAcGFyYW0gbW9kdWxlRGlyc1xuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24gZGlzY292ZXJKc2lpVHlwZXMoLi4ubW9kdWxlRGlyczogc3RyaW5nW10pIHtcbiAgY29uc3QganNpaTogSnNpaVR5cGVzID0ge307XG4gIGNvbnN0IGRpc2NvdmVyZWRNYW5pZmVzdHM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICBjb25zdCBkaXNjb3ZlckpzaWkgPSAoZGlyOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBqc2lpRmlsZSA9IHBhdGguam9pbihkaXIsIFwiLmpzaWlcIik7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGpzaWlGaWxlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gbm8ganNpaSBtYW5pZmVzdFxuXG4gICAgY29uc3QgbWFuaWZlc3QgPSBmcy5yZWFkSnNvblN5bmMoanNpaUZpbGUpO1xuXG4gICAgaWYgKGRpc2NvdmVyZWRNYW5pZmVzdHMuaW5jbHVkZXMobWFuaWZlc3QuZmluZ2VycHJpbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRpc2NvdmVyZWRNYW5pZmVzdHMucHVzaChtYW5pZmVzdC5maW5nZXJwcmludCk7XG5cbiAgICBmb3IgKGNvbnN0IFtmcW4sIHR5cGVdIG9mIE9iamVjdC5lbnRyaWVzKG1hbmlmZXN0LnR5cGVzIGFzIEpzaWlUeXBlcykpIHtcbiAgICAgIGpzaWlbZnFuXSA9IHtcbiAgICAgICAgLi4udHlwZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQWxzbyBzZWFyY2ggcmVjdXJzaXZlbHkgaW4gbmVzdGVkIHByb2plY3QgZGVwZW5kZW5jaWVzLiBJZiB0aGUgcmVxdWVzdGVkIG1vZHVsZSBpcyBhbiBleHRlcm5hbCBtb2R1bGVcbiAgICAvLyB0aGlzIHdpbGwgYWxzbyBlbmQtdXAgaW4gdGhlIHByb2plbiBtb2R1bGUgYW5kIGFkZCB0aGUgcHJvamVuIHR5cGVzXG4gICAgaWYgKG1hbmlmZXN0LmRlcGVuZGVuY2llcykge1xuICAgICAgZm9yIChjb25zdCBkZXBlbmRlbmN5IG9mIE9iamVjdC5rZXlzKG1hbmlmZXN0LmRlcGVuZGVuY2llcykpIHtcbiAgICAgICAgY29uc3QgbmVzdGVkRGVwZW5kZW5jeUZvbGRlciA9IHBhdGguZGlybmFtZShcbiAgICAgICAgICByZXF1aXJlLnJlc29sdmUoYCR7ZGVwZW5kZW5jeX0vcGFja2FnZS5qc29uYCwge1xuICAgICAgICAgICAgcGF0aHM6IFtkaXJdLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMobmVzdGVkRGVwZW5kZW5jeUZvbGRlcikpIHtcbiAgICAgICAgICBkaXNjb3ZlckpzaWkobmVzdGVkRGVwZW5kZW5jeUZvbGRlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLy8gcmVhZCBhbGwgLmpzaWkgbWFuaWZlc3RzIGZyb20gYWxsIHJlcXVlc3RlZCBtb2R1bGVzIGFuZCBtZXJnZVxuICAvLyB0aGVtIGFsbCBpbnRvIGEgc2luZ2xlIG1hcCBvZiBmcW4tPnR5cGUuXG4gIGZvciAoY29uc3QgZGlyIG9mIFsuLi5tb2R1bGVEaXJzLCBQUk9KRU5fTU9EVUxFX1JPT1RdKSB7XG4gICAgZGlzY292ZXJKc2lpKGRpcik7XG5cbiAgICAvLyBSZWFkIGZyb20gc2NvcGVkIHBhY2thZ2VzXG4gICAgaWYgKGRpci5pbmNsdWRlcyhcIkBcIikgJiYgZnMubHN0YXRTeW5jKGRpcikuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgY29uc3QgY2hpbGREaXJzID0gZnMucmVhZGRpclN5bmMoZGlyKS5tYXAoKGZpbGUpID0+IHBhdGguam9pbihkaXIsIGZpbGUpKTtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGREaXJzKSB7XG4gICAgICAgIGRpc2NvdmVySnNpaShjaGlsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGpzaWk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUHJvamVjdFR5cGUocHJvamVjdEZxbjogc3RyaW5nKTogUHJvamVjdFR5cGUge1xuICBsZXQgW21vZHVsZU5hbWVdID0gcHJvamVjdEZxbi5zcGxpdChcIi5cIik7XG4gIGlmIChtb2R1bGVOYW1lID09PSBcInByb2plblwiKSB7XG4gICAgbW9kdWxlTmFtZSA9IFBST0pFTl9NT0RVTEVfUk9PVDtcbiAgfVxuXG4gIC8vIHRyeSBwaWNraW5nIHRoZSBtYW5pZmVzdC4gV2Ugb25seSBuZWVkIHRoZSBiYXNlIGZvbGRlciBidXQgdGhpcyBpcyBkaXJlY3RseSBhIG5pY2UgY2hlY2sgaWYgd2UgcmVxdWVzdCBmcm9tIGEgdmFsaWQganNpaSBwYWNrYWdlXG4gIGNvbnN0IGpzaWlNYW5pZmVzdEZpbGUgPSByZXF1aXJlLnJlc29sdmUoYCR7bW9kdWxlTmFtZX0vLmpzaWlgLCB7XG4gICAgcGF0aHM6IFtwcm9jZXNzLmN3ZCgpXSxcbiAgfSk7XG4gIGNvbnN0IG1vZHVsZUZvbGRlciA9IHBhdGguZGlybmFtZShqc2lpTWFuaWZlc3RGaWxlKTtcblxuICAvLyBSZWFkIGFsbCBqc2lpIHR5cGVzIHRoYXQgY2FuIGJlIGxvYWRlZCBmcm9tIHRoaXMgcHJvamVjdCB0eXBlXG4gIGNvbnN0IGpzaWkgPSBkaXNjb3ZlckpzaWlUeXBlcyhtb2R1bGVGb2xkZXIpO1xuICByZXR1cm4gdG9Qcm9qZWN0VHlwZShqc2lpLCBwcm9qZWN0RnFuKTtcbn1cblxuZnVuY3Rpb24gdG9Qcm9qZWN0VHlwZShqc2lpOiBKc2lpVHlwZXMsIGZxbjogc3RyaW5nKTogUHJvamVjdFR5cGUge1xuICBpZiAoIWlzUHJvamVjdFR5cGUoanNpaSwgZnFuKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBGdWxseSBxdWFsaWZpZWQgbmFtZSBcIiR7ZnFufVwiIGlzIG5vdCBhIHZhbGlkIHByb2plY3QgdHlwZS5gXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGVpbmZvID0ganNpaVtmcW5dO1xuXG4gIC8vIHByb2plbi53ZWIuUmVhY3RQcm9qZWN0IC0+IHdlYi5SZWFjdFByb2plY3RcbiAgY29uc3QgdHlwZW5hbWUgPSBmcW4uc3Vic3RyaW5nKGZxbi5pbmRleE9mKFwiLlwiKSArIDEpO1xuXG4gIGNvbnN0IGRvY3N1cmwgPSBgaHR0cHM6Ly9naXRodWIuY29tL3Byb2plbi9wcm9qZW4vYmxvYi9tYWluL0FQSS5tZCNwcm9qZW4tJHt0eXBlbmFtZVxuICAgIC50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoL1xcLi9nLCBcIi1cIil9YDtcbiAgbGV0IHBqaWQgPVxuICAgIHR5cGVpbmZvLmRvY3M/LmN1c3RvbT8ucGppZCA/PyBzbmFrZSh0eXBlbmFtZSkucmVwbGFjZSgvX3Byb2plY3QkLywgXCJcIik7XG4gIHJldHVybiB7XG4gICAgbW9kdWxlTmFtZTogdHlwZWluZm8uYXNzZW1ibHksXG4gICAgdHlwZW5hbWUsXG4gICAgcGppZCxcbiAgICBmcW4sXG4gICAgb3B0aW9uczogZGlzY292ZXJPcHRpb25zKGpzaWksIGZxbikuc29ydCgobzEsIG8yKSA9PlxuICAgICAgbzEubmFtZS5sb2NhbGVDb21wYXJlKG8yLm5hbWUpXG4gICAgKSxcbiAgICBkb2NzOiB0eXBlaW5mby5kb2NzPy5zdW1tYXJ5LFxuICAgIGRvY3N1cmwsXG4gIH0gYXMgUHJvamVjdFR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkSnNpaU1hbmlmZXN0KGpzaWlGcW46IHN0cmluZyk6IGFueSB7XG4gIGxldCBbbW9kdWxlTmFtZV0gPSBqc2lpRnFuLnNwbGl0KFwiLlwiKTtcbiAgaWYgKG1vZHVsZU5hbWUgPT09IFwicHJvamVuXCIpIHtcbiAgICBtb2R1bGVOYW1lID0gUFJPSkVOX01PRFVMRV9ST09UO1xuICB9XG5cbiAgY29uc3QganNpaU1hbmlmZXN0RmlsZSA9IHJlcXVpcmUucmVzb2x2ZShgJHttb2R1bGVOYW1lfS8uanNpaWApO1xuICByZXR1cm4gZnMucmVhZEpzb25TeW5jKGpzaWlNYW5pZmVzdEZpbGUpO1xufVxuXG5mdW5jdGlvbiBkaXNjb3Zlck9wdGlvbnMoanNpaTogSnNpaVR5cGVzLCBmcW46IHN0cmluZyk6IFByb2plY3RPcHRpb25bXSB7XG4gIGNvbnN0IG9wdGlvbnM6IHsgW25hbWU6IHN0cmluZ106IFByb2plY3RPcHRpb24gfSA9IHt9O1xuICBjb25zdCBwYXJhbXMgPSBqc2lpW2Zxbl0/LmluaXRpYWxpemVyPy5wYXJhbWV0ZXJzID8/IFtdO1xuICBjb25zdCBvcHRpb25zUGFyYW0gPSBwYXJhbXNbMF07XG4gIGNvbnN0IG9wdGlvbnNUeXBlRnFuID0gb3B0aW9uc1BhcmFtPy50eXBlPy5mcW47XG5cbiAgaWYgKFxuICAgIHBhcmFtcy5sZW5ndGggPiAxIHx8XG4gICAgKHBhcmFtcy5sZW5ndGggPT09IDEgJiYgb3B0aW9uc1BhcmFtPy5uYW1lICE9PSBcIm9wdGlvbnNcIilcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYGNvbnN0cnVjdG9yIGZvciBwcm9qZWN0ICR7ZnFufSBtdXN0IGhhdmUgYSBzaW5nbGUgXCJvcHRpb25zXCIgYXJndW1lbnQgb2YgYSBzdHJ1Y3QgdHlwZS4gZ290ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHBhcmFtc1xuICAgICAgKX1gXG4gICAgKTtcbiAgfVxuXG4gIGFkZE9wdGlvbnMob3B0aW9uc1R5cGVGcW4pO1xuXG4gIGNvbnN0IG9wdHMgPSBPYmplY3QudmFsdWVzKG9wdGlvbnMpO1xuXG4gIHJldHVybiBvcHRzLnNvcnQoKGEsIGIpID0+IGEuc3dpdGNoLmxvY2FsZUNvbXBhcmUoYi5zd2l0Y2gpKTtcblxuICBmdW5jdGlvbiBhZGRPcHRpb25zKFxuICAgIG9mcW4/OiBzdHJpbmcsXG4gICAgYmFzZVBhdGg6IHN0cmluZ1tdID0gW10sXG4gICAgb3B0aW9uYWwgPSBmYWxzZVxuICApIHtcbiAgICBpZiAoIW9mcW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJ1Y3QgPSBqc2lpW29mcW5dO1xuICAgIGlmICghc3RydWN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuYWJsZSB0byBmaW5kIG9wdGlvbnMgdHlwZSAke29mcW59IGZvciBwcm9qZWN0ICR7ZnFufWApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcHJvcCBvZiBzdHJ1Y3QucHJvcGVydGllcyA/PyBbXSkge1xuICAgICAgY29uc3QgcHJvcFBhdGggPSBbLi4uYmFzZVBhdGgsIHByb3AubmFtZV07XG5cbiAgICAgIC8vIHByb3RlY3QgYWdhaW5zdCBkb3VibGUtYm9va2luZ1xuICAgICAgaWYgKHByb3AubmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgZHVwbGljYXRlIG9wdGlvbiBcIiR7cHJvcC5uYW1lfVwiIGluICR7ZnFufSAoYWxyZWFkeSBkZWNsYXJlZCBpbiAke1xuICAgICAgICAgICAgb3B0aW9uc1twcm9wLm5hbWVdLnBhcmVudFxuICAgICAgICAgIH0pYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBsZXQganNpaUtpbmQ7XG4gICAgICBpZiAocHJvcC50eXBlPy5mcW4pIHtcbiAgICAgICAganNpaUtpbmQgPSBqc2lpW3Byb3AudHlwZT8uZnFuXS5raW5kOyAvLyBlLmcuICdjbGFzcycsICdpbnRlcmZhY2UnLCAnZW51bSdcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNPcHRpb25hbCA9IG9wdGlvbmFsIHx8IHByb3Aub3B0aW9uYWw7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlID0gcHJvcC5kb2NzPy5kZWZhdWx0O1xuXG4gICAgICBpZiAoZGVmYXVsdFZhbHVlID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgLy8gaWYgdGhpcyBpcyBhIG1hbmRhdG9yeSBvcHRpb24gYW5kIHdlIGhhdmUgYSBkZWZhdWx0IHZhbHVlLCBpdCBoYXMgdG8gYmUgSlNPTi1wYXJzYWJsZSB0byB0aGUgY29ycmVjdCB0eXBlXG4gICAgICBpZiAoIWlzT3B0aW9uYWwgJiYgZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgIGlmICghcHJvcC50eXBlPy5wcmltaXRpdmUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgcmVxdWlyZWQgb3B0aW9uIFwiJHtcbiAgICAgICAgICAgICAgcHJvcC5uYW1lXG4gICAgICAgICAgICB9XCIgd2l0aCBhIEBkZWZhdWx0IG11c3QgdXNlIHByaW1pdGl2ZSB0eXBlcyAoc3RyaW5nLCBudW1iZXIgb3IgYm9vbGVhbikuIHR5cGUgZm91bmQgaXM6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgIHByb3AudHlwZVxuICAgICAgICAgICAgKX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNoZWNrRGVmYXVsdElzUGFyc2FibGUocHJvcC5uYW1lLCBkZWZhdWx0VmFsdWUsIHByb3AudHlwZT8ucHJpbWl0aXZlKTtcbiAgICAgIH1cblxuICAgICAgb3B0aW9uc1twcm9wLm5hbWVdID0gZmlsdGVyVW5kZWZpbmVkKHtcbiAgICAgICAgcGF0aDogcHJvcFBhdGgsXG4gICAgICAgIHBhcmVudDogc3RydWN0Lm5hbWUsXG4gICAgICAgIG5hbWU6IHByb3AubmFtZSxcbiAgICAgICAgZnFuOiBwcm9wLnR5cGU/LmZxbixcbiAgICAgICAgZG9jczogcHJvcC5kb2NzLnN1bW1hcnksXG4gICAgICAgIHNpbXBsZVR5cGU6IHByb3AudHlwZSA/IGdldFNpbXBsZVR5cGVOYW1lKHByb3AudHlwZSkgOiBcInVua25vd25cIixcbiAgICAgICAgZnVsbFR5cGU6IHByb3AudHlwZSxcbiAgICAgICAga2luZDoganNpaUtpbmQsXG4gICAgICAgIGpzb25MaWtlOiBwcm9wLnR5cGUgPyBpc0pzb25MaWtlKGpzaWksIHByb3AudHlwZSkgOiB1bmRlZmluZWQsXG4gICAgICAgIHN3aXRjaDogcHJvcFBhdGgubWFwKChwKSA9PiBzbmFrZShwKS5yZXBsYWNlKC9fL2csIFwiLVwiKSkuam9pbihcIi1cIiksXG4gICAgICAgIGRlZmF1bHQ6IGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgb3B0aW9uYWw6IGlzT3B0aW9uYWwsXG4gICAgICAgIGZlYXR1cmVkOiBwcm9wLmRvY3M/LmN1c3RvbT8uZmVhdHVyZWQgPT09IFwidHJ1ZVwiLFxuICAgICAgICBkZXByZWNhdGVkOiBwcm9wLmRvY3Muc3RhYmlsaXR5ID09PSBcImRlcHJlY2F0ZWRcIiA/IHRydWUgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGlmYyBvZiBzdHJ1Y3QuaW50ZXJmYWNlcyA/PyBbXSkge1xuICAgICAgYWRkT3B0aW9ucyhpZmMpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTaW1wbGVUeXBlTmFtZSh0eXBlOiBKc2lpUHJvcGVydHlUeXBlKTogc3RyaW5nIHtcbiAgaWYgKHR5cGU/LnByaW1pdGl2ZSkge1xuICAgIHJldHVybiB0eXBlLnByaW1pdGl2ZTsgLy8gZS5nLiAnc3RyaW5nJywgJ2Jvb2xlYW4nLCAnbnVtYmVyJ1xuICB9IGVsc2UgaWYgKHR5cGU/LmZxbikge1xuICAgIHJldHVybiB0eXBlLmZxbi5zcGxpdChcIi5cIikucG9wKCkhOyAvLyBwcm9qZW4uTm9kZVByb2plY3RPcHRpb25zIC0+IE5vZGVQcm9qZWN0T3B0aW9uc1xuICB9IGVsc2Uge1xuICAgIC8vIGFueSBvdGhlciB0eXBlcyBzdWNoIGFzIGNvbGxlY3Rpb24gdHlwZXNcbiAgICByZXR1cm4gXCJ1bmtub3duXCI7XG4gIH1cbn1cblxuLyoqXG4gKiBXaGV0aGVyIGEgdmFsdWUgb2YgdGhpcyB0eXBlIGlzIHNlcmlhbGl6YWJsZSBpbnRvIEpTT04uXG4gKi9cbmZ1bmN0aW9uIGlzSnNvbkxpa2UoanNpaTogSnNpaVR5cGVzLCB0eXBlOiBKc2lpUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlLnByaW1pdGl2ZSkge1xuICAgIC8vIHN0cmluZywgYm9vbGVhbiwgbnVtYmVyLCBhbnlcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmICh0eXBlLmZxbikge1xuICAgIGNvbnN0IGtpbmQgPSBqc2lpW3R5cGUuZnFuXS5raW5kO1xuICAgIGlmIChbXCJpbnRlcmZhY2VcIiwgXCJlbnVtXCJdLmluY2x1ZGVzKGtpbmQpKSB7XG4gICAgICAvLyBub3QgJ2NsYXNzJ1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGUuY29sbGVjdGlvbikge1xuICAgIHJldHVybiBpc0pzb25MaWtlKGpzaWksIHR5cGUuY29sbGVjdGlvbi5lbGVtZW50dHlwZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJVbmRlZmluZWQob2JqOiBhbnkpIHtcbiAgY29uc3QgcmV0OiBhbnkgPSB7fTtcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldFtrXSA9IHY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGlzUHJvamVjdFR5cGUoanNpaTogSnNpaVR5cGVzLCBmcW46IHN0cmluZykge1xuICBjb25zdCB0eXBlID0ganNpaVtmcW5dO1xuXG4gIGlmICghdHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDb3VsZCBub3QgZmluZCBwcm9qZWN0IHR5cGUgd2l0aCBmcW4gXCIke2Zxbn1cIiBpbiAgLmpzaWkgZmlsZS5gXG4gICAgKTtcbiAgfVxuXG4gIGlmICh0eXBlLmtpbmQgIT09IFwiY2xhc3NcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZS5hYnN0cmFjdCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlLmRvY3M/LmRlcHJlY2F0ZWQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBsZXQgY3VyciA9IHR5cGU7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGN1cnIuZnFuID09PSBQUk9KRUNUX0JBU0VfRlFOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnIuYmFzZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGN1cnIgPSBqc2lpW2N1cnIuYmFzZV07XG4gICAgaWYgKCFjdXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrRGVmYXVsdElzUGFyc2FibGUocHJvcDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpIHtcbiAgLy8gbWFjcm9zIGFyZSBwYXNzLXRocm91Z2hcbiAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoXCIkXCIpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgaWYgKHR5cGVvZiBwYXJzZWQgIT09IHR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGNhbm5vdCBwYXJzZSBAZGVmYXVsdCB2YWx1ZSBmb3IgbWFuZGF0b3J5IG9wdGlvbiAke3Byb3B9IGFzIGEgJHt0eXBlfTogJHtwYXJzZWR9YFxuICAgICAgKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgdW5hYmxlIHRvIEpTT04ucGFyc2UoKSB2YWx1ZSBcIiR7dmFsdWV9XCIgc3BlY2lmaWVkIGFzIEBkZWZhdWx0IGZvciBtYW5kYXRvcnkgb3B0aW9uIFwiJHtwcm9wfVwiOiAke1xuICAgICAgICAoZSBhcyBhbnkpLm1lc3NhZ2VcbiAgICAgIH1gXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,7 +1,7 @@
1
- export * from './pom';
2
- export * from './java-project';
3
- export * from './maven-sample';
4
- export * from './maven-compile';
5
- export * from './maven-packaging';
6
- export * from './junit';
7
- export * from './projenrc';
1
+ export * from "./pom";
2
+ export * from "./java-project";
3
+ export * from "./maven-sample";
4
+ export * from "./maven-compile";
5
+ export * from "./maven-packaging";
6
+ export * from "./junit";
7
+ export * from "./projenrc";
package/lib/java/index.js CHANGED
@@ -17,4 +17,4 @@ __exportStar(require("./maven-compile"), exports);
17
17
  __exportStar(require("./maven-packaging"), exports);
18
18
  __exportStar(require("./junit"), exports);
19
19
  __exportStar(require("./projenrc"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBc0I7QUFDdEIsaURBQStCO0FBQy9CLGlEQUErQjtBQUMvQixrREFBZ0M7QUFDaEMsb0RBQWtDO0FBQ2xDLDBDQUF3QjtBQUN4Qiw2Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BvbSc7XG5leHBvcnQgKiBmcm9tICcuL2phdmEtcHJvamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL21hdmVuLXNhbXBsZSc7XG5leHBvcnQgKiBmcm9tICcuL21hdmVuLWNvbXBpbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXZlbi1wYWNrYWdpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9qdW5pdCc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2plbnJjJzsiXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBc0I7QUFDdEIsaURBQStCO0FBQy9CLGlEQUErQjtBQUMvQixrREFBZ0M7QUFDaEMsb0RBQWtDO0FBQ2xDLDBDQUF3QjtBQUN4Qiw2Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9wb21cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2phdmEtcHJvamVjdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWF2ZW4tc2FtcGxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tYXZlbi1jb21waWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tYXZlbi1wYWNrYWdpbmdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2p1bml0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcm9qZW5yY1wiO1xuIl19
@@ -1,9 +1,9 @@
1
- import { GitHubProject, GitHubProjectOptions } from '../github';
2
- import { Junit, JunitOptions } from './junit';
3
- import { MavenCompile, MavenCompileOptions } from './maven-compile';
4
- import { MavenPackaging, MavenPackagingOptions } from './maven-packaging';
5
- import { PluginOptions, Pom, PomOptions } from './pom';
6
- import { Projenrc as ProjenrcJava, ProjenrcOptions } from './projenrc';
1
+ import { GitHubProject, GitHubProjectOptions } from "../github";
2
+ import { Junit, JunitOptions } from "./junit";
3
+ import { MavenCompile, MavenCompileOptions } from "./maven-compile";
4
+ import { MavenPackaging, MavenPackagingOptions } from "./maven-packaging";
5
+ import { PluginOptions, Pom, PomOptions } from "./pom";
6
+ import { Projenrc as ProjenrcJava, ProjenrcOptions } from "./projenrc";
7
7
  /**
8
8
  * (experimental) Options for `JavaProject`.
9
9
  *
@@ -23,12 +23,12 @@ class JavaProject extends github_1.GitHubProject {
23
23
  constructor(options) {
24
24
  var _b, _c, _d, _e, _f, _g, _h;
25
25
  super(options);
26
- this.distdir = (_b = options.distdir) !== null && _b !== void 0 ? _b : 'dist/java';
26
+ this.distdir = (_b = options.distdir) !== null && _b !== void 0 ? _b : "dist/java";
27
27
  this.pom = new pom_1.Pom(this, options);
28
28
  if ((_c = options.projenrcJava) !== null && _c !== void 0 ? _c : true) {
29
29
  this.projenrc = new projenrc_1.Projenrc(this, this.pom, options.projenrcJavaOptions);
30
30
  }
31
- const sampleJavaPackage = (_d = options.sampleJavaPackage) !== null && _d !== void 0 ? _d : 'org.acme';
31
+ const sampleJavaPackage = (_d = options.sampleJavaPackage) !== null && _d !== void 0 ? _d : "org.acme";
32
32
  if ((_e = options.junit) !== null && _e !== void 0 ? _e : true) {
33
33
  this.junit = new junit_1.Junit(this, {
34
34
  pom: this.pom,
@@ -40,18 +40,16 @@ class JavaProject extends github_1.GitHubProject {
40
40
  new maven_sample_1.MavenSample(this, { package: sampleJavaPackage });
41
41
  }
42
42
  // platform independent build
43
- this.pom.addProperty('project.build.sourceEncoding', 'UTF-8');
44
- this.gitignore.exclude('.classpath');
45
- this.gitignore.exclude('.project');
46
- this.gitignore.exclude('.settings');
43
+ this.pom.addProperty("project.build.sourceEncoding", "UTF-8");
44
+ this.gitignore.exclude(".classpath");
45
+ this.gitignore.exclude(".project");
46
+ this.gitignore.exclude(".settings");
47
47
  this.compile = new maven_compile_1.MavenCompile(this, this.pom, options.compileOptions);
48
48
  this.packaging = new maven_packaging_1.MavenPackaging(this, this.pom, options.packagingOptions);
49
- this.addPlugin('org.apache.maven.plugins/maven-enforcer-plugin@3.0.0-M3', {
50
- executions: [{ id: 'enforce-maven', goals: ['enforce'] }],
49
+ this.addPlugin("org.apache.maven.plugins/maven-enforcer-plugin@3.0.0-M3", {
50
+ executions: [{ id: "enforce-maven", goals: ["enforce"] }],
51
51
  configuration: {
52
- rules: [
53
- { requireMavenVersion: [{ version: '3.6' }] },
54
- ],
52
+ rules: [{ requireMavenVersion: [{ version: "3.6" }] }],
55
53
  },
56
54
  });
57
55
  for (const dep of (_g = options.deps) !== null && _g !== void 0 ? _g : []) {
@@ -94,5 +92,5 @@ class JavaProject extends github_1.GitHubProject {
94
92
  }
95
93
  exports.JavaProject = JavaProject;
96
94
  _a = JSII_RTTI_SYMBOL_1;
97
- JavaProject[_a] = { fqn: "projen.java.JavaProject", version: "0.49.0" };
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmEvamF2YS1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0NBQWdFO0FBQ2hFLG1DQUE4QztBQUM5QyxtREFBb0U7QUFDcEUsdURBQTBFO0FBQzFFLGlEQUE2QztBQUM3QywrQkFBdUQ7QUFDdkQseUNBQXVFOzs7Ozs7O0FBOEN2RSxNQUFhLFdBQVksU0FBUSxzQkFBYTs7OztJQW1CNUMsWUFBWSxPQUEyQjs7UUFDckMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLE9BQU8sU0FBRyxPQUFPLENBQUMsT0FBTyxtQ0FBSSxXQUFXLENBQUM7UUFDOUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbEMsVUFBSSxPQUFPLENBQUMsWUFBWSxtQ0FBSSxJQUFJLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDL0U7UUFFRCxNQUFNLGlCQUFpQixTQUFHLE9BQU8sQ0FBQyxpQkFBaUIsbUNBQUksVUFBVSxDQUFDO1FBRWxFLFVBQUksT0FBTyxDQUFDLEtBQUssbUNBQUksSUFBSSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxhQUFLLENBQUMsSUFBSSxFQUFFO2dCQUMzQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsaUJBQWlCO2dCQUNqQixHQUFHLE9BQU8sQ0FBQyxZQUFZO2FBQ3hCLENBQUMsQ0FBQztTQUNKO1FBRUQsVUFBSSxPQUFPLENBQUMsTUFBTSxtQ0FBSSxJQUFJLEVBQUU7WUFDMUIsSUFBSSwwQkFBVyxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7U0FDdkQ7UUFFRCw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsOEJBQThCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLDRCQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxnQ0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxTQUFTLENBQUMseURBQXlELEVBQUU7WUFDeEUsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDekQsYUFBYSxFQUFFO2dCQUNiLEtBQUssRUFBRTtvQkFDTCxFQUFFLG1CQUFtQixFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtpQkFDOUM7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxHQUFHLFVBQUksT0FBTyxDQUFDLElBQUksbUNBQUksRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7UUFFRCxLQUFLLE1BQU0sR0FBRyxVQUFJLE9BQU8sQ0FBQyxRQUFRLG1DQUFJLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDOzs7Ozs7O0lBR00sYUFBYSxDQUFDLElBQVk7UUFDL0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs7Ozs7O0lBR00saUJBQWlCLENBQUMsSUFBWTtRQUNuQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7Ozs7Ozs7OztJQUdNLFNBQVMsQ0FBQyxJQUFZLEVBQUUsVUFBeUIsRUFBRTtRQUN4RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDOztBQXBGSCxrQ0FxRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHaXRIdWJQcm9qZWN0LCBHaXRIdWJQcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4uL2dpdGh1Yic7XG5pbXBvcnQgeyBKdW5pdCwgSnVuaXRPcHRpb25zIH0gZnJvbSAnLi9qdW5pdCc7XG5pbXBvcnQgeyBNYXZlbkNvbXBpbGUsIE1hdmVuQ29tcGlsZU9wdGlvbnMgfSBmcm9tICcuL21hdmVuLWNvbXBpbGUnO1xuaW1wb3J0IHsgTWF2ZW5QYWNrYWdpbmcsIE1hdmVuUGFja2FnaW5nT3B0aW9ucyB9IGZyb20gJy4vbWF2ZW4tcGFja2FnaW5nJztcbmltcG9ydCB7IE1hdmVuU2FtcGxlIH0gZnJvbSAnLi9tYXZlbi1zYW1wbGUnO1xuaW1wb3J0IHsgUGx1Z2luT3B0aW9ucywgUG9tLCBQb21PcHRpb25zIH0gZnJvbSAnLi9wb20nO1xuaW1wb3J0IHsgUHJvamVucmMgYXMgUHJvamVucmNKYXZhLCBQcm9qZW5yY09wdGlvbnMgfSBmcm9tICcuL3Byb2plbnJjJztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBKYXZhUHJvamVjdENvbW1vbk9wdGlvbnMgZXh0ZW5kcyBHaXRIdWJQcm9qZWN0T3B0aW9ucywgUG9tT3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkaXN0ZGlyPzogc3RyaW5nO1xuXG4gIC8vIC0tIGRlcGVuZGVuY2llcyAtLVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkZXBzPzogc3RyaW5nW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB0ZXN0RGVwcz86IHN0cmluZ1tdO1xuXG4gIC8vIC0tIGNvbXBvbmVudHMgLS1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkganVuaXQ/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGp1bml0T3B0aW9ucz86IEp1bml0T3B0aW9ucztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHBhY2thZ2luZ09wdGlvbnM/OiBNYXZlblBhY2thZ2luZ09wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29tcGlsZU9wdGlvbnM/OiBNYXZlbkNvbXBpbGVPcHRpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwcm9qZW5yY0phdmE/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHByb2plbnJjSmF2YU9wdGlvbnM/OiBQcm9qZW5yY09wdGlvbnM7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgSmF2YVByb2plY3RPcHRpb25zIGV4dGVuZHMgSmF2YVByb2plY3RDb21tb25PcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzYW1wbGU/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzYW1wbGVKYXZhUGFja2FnZT86IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBKYXZhUHJvamVjdCBleHRlbmRzIEdpdEh1YlByb2plY3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IHBvbTogUG9tO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGp1bml0PzogSnVuaXQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IHBhY2thZ2luZzogTWF2ZW5QYWNrYWdpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBjb21waWxlOiBNYXZlbkNvbXBpbGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVucmM/OiBQcm9qZW5yY0phdmE7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGRpc3RkaXI6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBKYXZhUHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIHRoaXMuZGlzdGRpciA9IG9wdGlvbnMuZGlzdGRpciA/PyAnZGlzdC9qYXZhJztcbiAgICB0aGlzLnBvbSA9IG5ldyBQb20odGhpcywgb3B0aW9ucyk7XG5cbiAgICBpZiAob3B0aW9ucy5wcm9qZW5yY0phdmEgPz8gdHJ1ZSkge1xuICAgICAgdGhpcy5wcm9qZW5yYyA9IG5ldyBQcm9qZW5yY0phdmEodGhpcywgdGhpcy5wb20sIG9wdGlvbnMucHJvamVucmNKYXZhT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2FtcGxlSmF2YVBhY2thZ2UgPSBvcHRpb25zLnNhbXBsZUphdmFQYWNrYWdlID8/ICdvcmcuYWNtZSc7XG5cbiAgICBpZiAob3B0aW9ucy5qdW5pdCA/PyB0cnVlKSB7XG4gICAgICB0aGlzLmp1bml0ID0gbmV3IEp1bml0KHRoaXMsIHtcbiAgICAgICAgcG9tOiB0aGlzLnBvbSxcbiAgICAgICAgc2FtcGxlSmF2YVBhY2thZ2UsXG4gICAgICAgIC4uLm9wdGlvbnMuanVuaXRPcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2FtcGxlID8/IHRydWUpIHtcbiAgICAgIG5ldyBNYXZlblNhbXBsZSh0aGlzLCB7IHBhY2thZ2U6IHNhbXBsZUphdmFQYWNrYWdlIH0pO1xuICAgIH1cblxuICAgIC8vIHBsYXRmb3JtIGluZGVwZW5kZW50IGJ1aWxkXG4gICAgdGhpcy5wb20uYWRkUHJvcGVydHkoJ3Byb2plY3QuYnVpbGQuc291cmNlRW5jb2RpbmcnLCAnVVRGLTgnKTtcblxuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoJy5jbGFzc3BhdGgnKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKCcucHJvamVjdCcpO1xuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoJy5zZXR0aW5ncycpO1xuXG4gICAgdGhpcy5jb21waWxlID0gbmV3IE1hdmVuQ29tcGlsZSh0aGlzLCB0aGlzLnBvbSwgb3B0aW9ucy5jb21waWxlT3B0aW9ucyk7XG4gICAgdGhpcy5wYWNrYWdpbmcgPSBuZXcgTWF2ZW5QYWNrYWdpbmcodGhpcywgdGhpcy5wb20sIG9wdGlvbnMucGFja2FnaW5nT3B0aW9ucyk7XG5cbiAgICB0aGlzLmFkZFBsdWdpbignb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zL21hdmVuLWVuZm9yY2VyLXBsdWdpbkAzLjAuMC1NMycsIHtcbiAgICAgIGV4ZWN1dGlvbnM6IFt7IGlkOiAnZW5mb3JjZS1tYXZlbicsIGdvYWxzOiBbJ2VuZm9yY2UnXSB9XSxcbiAgICAgIGNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICB7IHJlcXVpcmVNYXZlblZlcnNpb246IFt7IHZlcnNpb246ICczLjYnIH1dIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCBkZXAgb2Ygb3B0aW9ucy5kZXBzID8/IFtdKSB7XG4gICAgICB0aGlzLmFkZERlcGVuZGVuY3koZGVwKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRlcCBvZiBvcHRpb25zLnRlc3REZXBzID8/IFtdKSB7XG4gICAgICB0aGlzLmFkZFRlc3REZXBlbmRlbmN5KGRlcCk7XG4gICAgfVxuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGFkZERlcGVuZGVuY3koc3BlYzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucG9tLmFkZERlcGVuZGVuY3koc3BlYyk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkVGVzdERlcGVuZGVuY3koc3BlYzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucG9tLmFkZFRlc3REZXBlbmRlbmN5KHNwZWMpO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBhZGRQbHVnaW4oc3BlYzogc3RyaW5nLCBvcHRpb25zOiBQbHVnaW5PcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5wb20uYWRkUGx1Z2luKHNwZWMsIG9wdGlvbnMpO1xuICB9XG59XG4iXX0=
95
+ JavaProject[_a] = { fqn: "projen.java.JavaProject", version: "0.49.1" };
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmEvamF2YS1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0NBQWdFO0FBQ2hFLG1DQUE4QztBQUM5QyxtREFBb0U7QUFDcEUsdURBQTBFO0FBQzFFLGlEQUE2QztBQUM3QywrQkFBdUQ7QUFDdkQseUNBQXVFOzs7Ozs7O0FBZ0R2RSxNQUFhLFdBQVksU0FBUSxzQkFBYTs7OztJQW1CNUMsWUFBWSxPQUEyQjs7UUFDckMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLE9BQU8sU0FBRyxPQUFPLENBQUMsT0FBTyxtQ0FBSSxXQUFXLENBQUM7UUFDOUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFbEMsVUFBSSxPQUFPLENBQUMsWUFBWSxtQ0FBSSxJQUFJLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFZLENBQzlCLElBQUksRUFDSixJQUFJLENBQUMsR0FBRyxFQUNSLE9BQU8sQ0FBQyxtQkFBbUIsQ0FDNUIsQ0FBQztTQUNIO1FBRUQsTUFBTSxpQkFBaUIsU0FBRyxPQUFPLENBQUMsaUJBQWlCLG1DQUFJLFVBQVUsQ0FBQztRQUVsRSxVQUFJLE9BQU8sQ0FBQyxLQUFLLG1DQUFJLElBQUksRUFBRTtZQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksYUFBSyxDQUFDLElBQUksRUFBRTtnQkFDM0IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNiLGlCQUFpQjtnQkFDakIsR0FBRyxPQUFPLENBQUMsWUFBWTthQUN4QixDQUFDLENBQUM7U0FDSjtRQUVELFVBQUksT0FBTyxDQUFDLE1BQU0sbUNBQUksSUFBSSxFQUFFO1lBQzFCLElBQUksMEJBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLDhCQUE4QixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTlELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSw0QkFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksZ0NBQWMsQ0FDakMsSUFBSSxFQUNKLElBQUksQ0FBQyxHQUFHLEVBQ1IsT0FBTyxDQUFDLGdCQUFnQixDQUN6QixDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyx5REFBeUQsRUFBRTtZQUN4RSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN6RCxhQUFhLEVBQUU7Z0JBQ2IsS0FBSyxFQUFFLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQzthQUN2RDtTQUNGLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxHQUFHLFVBQUksT0FBTyxDQUFDLElBQUksbUNBQUksRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7UUFFRCxLQUFLLE1BQU0sR0FBRyxVQUFJLE9BQU8sQ0FBQyxRQUFRLG1DQUFJLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDOzs7Ozs7O0lBR00sYUFBYSxDQUFDLElBQVk7UUFDL0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs7Ozs7O0lBR00saUJBQWlCLENBQUMsSUFBWTtRQUNuQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7Ozs7Ozs7OztJQUdNLFNBQVMsQ0FBQyxJQUFZLEVBQUUsVUFBeUIsRUFBRTtRQUN4RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDOztBQTFGSCxrQ0EyRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHaXRIdWJQcm9qZWN0LCBHaXRIdWJQcm9qZWN0T3B0aW9ucyB9IGZyb20gXCIuLi9naXRodWJcIjtcbmltcG9ydCB7IEp1bml0LCBKdW5pdE9wdGlvbnMgfSBmcm9tIFwiLi9qdW5pdFwiO1xuaW1wb3J0IHsgTWF2ZW5Db21waWxlLCBNYXZlbkNvbXBpbGVPcHRpb25zIH0gZnJvbSBcIi4vbWF2ZW4tY29tcGlsZVwiO1xuaW1wb3J0IHsgTWF2ZW5QYWNrYWdpbmcsIE1hdmVuUGFja2FnaW5nT3B0aW9ucyB9IGZyb20gXCIuL21hdmVuLXBhY2thZ2luZ1wiO1xuaW1wb3J0IHsgTWF2ZW5TYW1wbGUgfSBmcm9tIFwiLi9tYXZlbi1zYW1wbGVcIjtcbmltcG9ydCB7IFBsdWdpbk9wdGlvbnMsIFBvbSwgUG9tT3B0aW9ucyB9IGZyb20gXCIuL3BvbVwiO1xuaW1wb3J0IHsgUHJvamVucmMgYXMgUHJvamVucmNKYXZhLCBQcm9qZW5yY09wdGlvbnMgfSBmcm9tIFwiLi9wcm9qZW5yY1wiO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEphdmFQcm9qZWN0Q29tbW9uT3B0aW9uc1xuICBleHRlbmRzIEdpdEh1YlByb2plY3RPcHRpb25zLFxuICAgIFBvbU9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGlzdGRpcj86IHN0cmluZztcblxuICAvLyAtLSBkZXBlbmRlbmNpZXMgLS1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGVwcz86IHN0cmluZ1tdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdGVzdERlcHM/OiBzdHJpbmdbXTtcblxuICAvLyAtLSBjb21wb25lbnRzIC0tXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGp1bml0PzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBqdW5pdE9wdGlvbnM/OiBKdW5pdE9wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwYWNrYWdpbmdPcHRpb25zPzogTWF2ZW5QYWNrYWdpbmdPcHRpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNvbXBpbGVPcHRpb25zPzogTWF2ZW5Db21waWxlT3B0aW9ucztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcHJvamVucmNKYXZhPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwcm9qZW5yY0phdmFPcHRpb25zPzogUHJvamVucmNPcHRpb25zO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEphdmFQcm9qZWN0T3B0aW9ucyBleHRlbmRzIEphdmFQcm9qZWN0Q29tbW9uT3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2FtcGxlPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2FtcGxlSmF2YVBhY2thZ2U/OiBzdHJpbmc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgSmF2YVByb2plY3QgZXh0ZW5kcyBHaXRIdWJQcm9qZWN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBwb206IFBvbTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBqdW5pdD86IEp1bml0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBwYWNrYWdpbmc6IE1hdmVuUGFja2FnaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgY29tcGlsZTogTWF2ZW5Db21waWxlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IHByb2plbnJjPzogUHJvamVucmNKYXZhO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBkaXN0ZGlyOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogSmF2YVByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICB0aGlzLmRpc3RkaXIgPSBvcHRpb25zLmRpc3RkaXIgPz8gXCJkaXN0L2phdmFcIjtcbiAgICB0aGlzLnBvbSA9IG5ldyBQb20odGhpcywgb3B0aW9ucyk7XG5cbiAgICBpZiAob3B0aW9ucy5wcm9qZW5yY0phdmEgPz8gdHJ1ZSkge1xuICAgICAgdGhpcy5wcm9qZW5yYyA9IG5ldyBQcm9qZW5yY0phdmEoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMucG9tLFxuICAgICAgICBvcHRpb25zLnByb2plbnJjSmF2YU9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2FtcGxlSmF2YVBhY2thZ2UgPSBvcHRpb25zLnNhbXBsZUphdmFQYWNrYWdlID8/IFwib3JnLmFjbWVcIjtcblxuICAgIGlmIChvcHRpb25zLmp1bml0ID8/IHRydWUpIHtcbiAgICAgIHRoaXMuanVuaXQgPSBuZXcgSnVuaXQodGhpcywge1xuICAgICAgICBwb206IHRoaXMucG9tLFxuICAgICAgICBzYW1wbGVKYXZhUGFja2FnZSxcbiAgICAgICAgLi4ub3B0aW9ucy5qdW5pdE9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zYW1wbGUgPz8gdHJ1ZSkge1xuICAgICAgbmV3IE1hdmVuU2FtcGxlKHRoaXMsIHsgcGFja2FnZTogc2FtcGxlSmF2YVBhY2thZ2UgfSk7XG4gICAgfVxuXG4gICAgLy8gcGxhdGZvcm0gaW5kZXBlbmRlbnQgYnVpbGRcbiAgICB0aGlzLnBvbS5hZGRQcm9wZXJ0eShcInByb2plY3QuYnVpbGQuc291cmNlRW5jb2RpbmdcIiwgXCJVVEYtOFwiKTtcblxuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoXCIuY2xhc3NwYXRoXCIpO1xuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoXCIucHJvamVjdFwiKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKFwiLnNldHRpbmdzXCIpO1xuXG4gICAgdGhpcy5jb21waWxlID0gbmV3IE1hdmVuQ29tcGlsZSh0aGlzLCB0aGlzLnBvbSwgb3B0aW9ucy5jb21waWxlT3B0aW9ucyk7XG4gICAgdGhpcy5wYWNrYWdpbmcgPSBuZXcgTWF2ZW5QYWNrYWdpbmcoXG4gICAgICB0aGlzLFxuICAgICAgdGhpcy5wb20sXG4gICAgICBvcHRpb25zLnBhY2thZ2luZ09wdGlvbnNcbiAgICApO1xuXG4gICAgdGhpcy5hZGRQbHVnaW4oXCJvcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnMvbWF2ZW4tZW5mb3JjZXItcGx1Z2luQDMuMC4wLU0zXCIsIHtcbiAgICAgIGV4ZWN1dGlvbnM6IFt7IGlkOiBcImVuZm9yY2UtbWF2ZW5cIiwgZ29hbHM6IFtcImVuZm9yY2VcIl0gfV0sXG4gICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgIHJ1bGVzOiBbeyByZXF1aXJlTWF2ZW5WZXJzaW9uOiBbeyB2ZXJzaW9uOiBcIjMuNlwiIH1dIH1dLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgZGVwIG9mIG9wdGlvbnMuZGVwcyA/PyBbXSkge1xuICAgICAgdGhpcy5hZGREZXBlbmRlbmN5KGRlcCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBkZXAgb2Ygb3B0aW9ucy50ZXN0RGVwcyA/PyBbXSkge1xuICAgICAgdGhpcy5hZGRUZXN0RGVwZW5kZW5jeShkZXApO1xuICAgIH1cbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBhZGREZXBlbmRlbmN5KHNwZWM6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnBvbS5hZGREZXBlbmRlbmN5KHNwZWMpO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGFkZFRlc3REZXBlbmRlbmN5KHNwZWM6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnBvbS5hZGRUZXN0RGVwZW5kZW5jeShzcGVjKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkUGx1Z2luKHNwZWM6IHN0cmluZywgb3B0aW9uczogUGx1Z2luT3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMucG9tLmFkZFBsdWdpbihzcGVjLCBvcHRpb25zKTtcbiAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
- import { Component } from '../component';
2
- import { Project } from '../project';
3
- import { Pom } from './pom';
1
+ import { Component } from "../component";
2
+ import { Project } from "../project";
3
+ import { Pom } from "./pom";
4
4
  /**
5
5
  * (experimental) Options for `Junit`.
6
6
  *
package/lib/java/junit.js CHANGED
@@ -6,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const path_1 = require("path");
7
7
  const component_1 = require("../component");
8
8
  const sample_file_1 = require("../sample-file");
9
- const TESTDIR = path_1.join('src', 'test', 'java');
9
+ const TESTDIR = path_1.join("src", "test", "java");
10
10
  /**
11
11
  * (experimental) Implements JUnit-based testing.
12
12
  *
@@ -20,31 +20,31 @@ class Junit extends component_1.Component {
20
20
  var _b, _c;
21
21
  super(project);
22
22
  const pom = options.pom;
23
- const version = (_b = options.version) !== null && _b !== void 0 ? _b : '5.7.0';
23
+ const version = (_b = options.version) !== null && _b !== void 0 ? _b : "5.7.0";
24
24
  pom.addTestDependency(`org.junit.jupiter/junit-jupiter-api@${version}`);
25
25
  pom.addTestDependency(`org.junit.jupiter/junit-jupiter-engine@${version}`);
26
- project.testTask.exec('mvn test');
27
- const javaPackage = (_c = options.sampleJavaPackage) !== null && _c !== void 0 ? _c : 'org.acme';
28
- const javaPackagePath = javaPackage.split('.');
26
+ project.testTask.exec("mvn test");
27
+ const javaPackage = (_c = options.sampleJavaPackage) !== null && _c !== void 0 ? _c : "org.acme";
28
+ const javaPackagePath = javaPackage.split(".");
29
29
  new sample_file_1.SampleDir(project, path_1.join(TESTDIR, ...javaPackagePath), {
30
30
  files: {
31
- 'MyTest.java': [
31
+ "MyTest.java": [
32
32
  `package ${javaPackage};`,
33
- '',
34
- 'import org.junit.jupiter.api.Test;',
35
- '',
36
- 'public class MyTest {',
37
- ' @Test',
38
- ' public void testHello() {',
33
+ "",
34
+ "import org.junit.jupiter.api.Test;",
35
+ "",
36
+ "public class MyTest {",
37
+ " @Test",
38
+ " public void testHello() {",
39
39
  ' System.out.println("Hello, world!");',
40
- ' }',
41
- '}',
42
- ].join('\n'),
40
+ " }",
41
+ "}",
42
+ ].join("\n"),
43
43
  },
44
44
  });
45
45
  }
46
46
  }
47
47
  exports.Junit = Junit;
48
48
  _a = JSII_RTTI_SYMBOL_1;
49
- Junit[_a] = { fqn: "projen.java.Junit", version: "0.49.0" };
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YS9qdW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUE0QjtBQUM1Qiw0Q0FBeUM7QUFFekMsZ0RBQTJDO0FBRzNDLE1BQU0sT0FBTyxHQUFHLFdBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDOzs7Ozs7QUFlNUMsTUFBYSxLQUFNLFNBQVEscUJBQVM7Ozs7SUFDbEMsWUFBWSxPQUFnQixFQUFFLE9BQXFCOztRQUNqRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQ3hCLE1BQU0sT0FBTyxTQUFHLE9BQU8sQ0FBQyxPQUFPLG1DQUFJLE9BQU8sQ0FBQztRQUUzQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsdUNBQXVDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEUsR0FBRyxDQUFDLGlCQUFpQixDQUFDLDBDQUEwQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRTNFLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxDLE1BQU0sV0FBVyxTQUFHLE9BQU8sQ0FBQyxpQkFBaUIsbUNBQUksVUFBVSxDQUFDO1FBQzVELE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0MsSUFBSSx1QkFBUyxDQUFDLE9BQU8sRUFBRSxXQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsZUFBZSxDQUFDLEVBQUU7WUFDeEQsS0FBSyxFQUFFO2dCQUNMLGFBQWEsRUFBRTtvQkFDYixXQUFXLFdBQVcsR0FBRztvQkFDekIsRUFBRTtvQkFDRixvQ0FBb0M7b0JBQ3BDLEVBQUU7b0JBQ0YsdUJBQXVCO29CQUN2QixTQUFTO29CQUNULDZCQUE2QjtvQkFDN0IsMENBQTBDO29CQUMxQyxLQUFLO29CQUNMLEdBQUc7aUJBQ0osQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2I7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQTlCSCxzQkErQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uL3Byb2plY3QnO1xuaW1wb3J0IHsgU2FtcGxlRGlyIH0gZnJvbSAnLi4vc2FtcGxlLWZpbGUnO1xuaW1wb3J0IHsgUG9tIH0gZnJvbSAnLi9wb20nO1xuXG5jb25zdCBURVNURElSID0gam9pbignc3JjJywgJ3Rlc3QnLCAnamF2YScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEp1bml0T3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwb206IFBvbTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNhbXBsZUphdmFQYWNrYWdlPzogc3RyaW5nO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBKdW5pdCBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEp1bml0T3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgY29uc3QgcG9tID0gb3B0aW9ucy5wb207XG4gICAgY29uc3QgdmVyc2lvbiA9IG9wdGlvbnMudmVyc2lvbiA/PyAnNS43LjAnO1xuXG4gICAgcG9tLmFkZFRlc3REZXBlbmRlbmN5KGBvcmcuanVuaXQuanVwaXRlci9qdW5pdC1qdXBpdGVyLWFwaUAke3ZlcnNpb259YCk7XG4gICAgcG9tLmFkZFRlc3REZXBlbmRlbmN5KGBvcmcuanVuaXQuanVwaXRlci9qdW5pdC1qdXBpdGVyLWVuZ2luZUAke3ZlcnNpb259YCk7XG5cbiAgICBwcm9qZWN0LnRlc3RUYXNrLmV4ZWMoJ212biB0ZXN0Jyk7XG5cbiAgICBjb25zdCBqYXZhUGFja2FnZSA9IG9wdGlvbnMuc2FtcGxlSmF2YVBhY2thZ2UgPz8gJ29yZy5hY21lJztcbiAgICBjb25zdCBqYXZhUGFja2FnZVBhdGggPSBqYXZhUGFja2FnZS5zcGxpdCgnLicpO1xuICAgIG5ldyBTYW1wbGVEaXIocHJvamVjdCwgam9pbihURVNURElSLCAuLi5qYXZhUGFja2FnZVBhdGgpLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICAnTXlUZXN0LmphdmEnOiBbXG4gICAgICAgICAgYHBhY2thZ2UgJHtqYXZhUGFja2FnZX07YCxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnaW1wb3J0IG9yZy5qdW5pdC5qdXBpdGVyLmFwaS5UZXN0OycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ3B1YmxpYyBjbGFzcyBNeVRlc3QgeycsXG4gICAgICAgICAgJyAgQFRlc3QnLFxuICAgICAgICAgICcgIHB1YmxpYyB2b2lkIHRlc3RIZWxsbygpIHsnLFxuICAgICAgICAgICcgICAgU3lzdGVtLm91dC5wcmludGxuKFwiSGVsbG8sIHdvcmxkIVwiKTsnLFxuICAgICAgICAgICcgIH0nLFxuICAgICAgICAgICd9JyxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
49
+ Junit[_a] = { fqn: "projen.java.Junit", version: "0.49.1" };
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YS9qdW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUE0QjtBQUM1Qiw0Q0FBeUM7QUFFekMsZ0RBQTJDO0FBRzNDLE1BQU0sT0FBTyxHQUFHLFdBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDOzs7Ozs7QUFlNUMsTUFBYSxLQUFNLFNBQVEscUJBQVM7Ozs7SUFDbEMsWUFBWSxPQUFnQixFQUFFLE9BQXFCOztRQUNqRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQ3hCLE1BQU0sT0FBTyxTQUFHLE9BQU8sQ0FBQyxPQUFPLG1DQUFJLE9BQU8sQ0FBQztRQUUzQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsdUNBQXVDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEUsR0FBRyxDQUFDLGlCQUFpQixDQUFDLDBDQUEwQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRTNFLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxDLE1BQU0sV0FBVyxTQUFHLE9BQU8sQ0FBQyxpQkFBaUIsbUNBQUksVUFBVSxDQUFDO1FBQzVELE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0MsSUFBSSx1QkFBUyxDQUFDLE9BQU8sRUFBRSxXQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsZUFBZSxDQUFDLEVBQUU7WUFDeEQsS0FBSyxFQUFFO2dCQUNMLGFBQWEsRUFBRTtvQkFDYixXQUFXLFdBQVcsR0FBRztvQkFDekIsRUFBRTtvQkFDRixvQ0FBb0M7b0JBQ3BDLEVBQUU7b0JBQ0YsdUJBQXVCO29CQUN2QixTQUFTO29CQUNULDZCQUE2QjtvQkFDN0IsMENBQTBDO29CQUMxQyxLQUFLO29CQUNMLEdBQUc7aUJBQ0osQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2I7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQTlCSCxzQkErQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgU2FtcGxlRGlyIH0gZnJvbSBcIi4uL3NhbXBsZS1maWxlXCI7XG5pbXBvcnQgeyBQb20gfSBmcm9tIFwiLi9wb21cIjtcblxuY29uc3QgVEVTVERJUiA9IGpvaW4oXCJzcmNcIiwgXCJ0ZXN0XCIsIFwiamF2YVwiKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBKdW5pdE9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcG9tOiBQb207XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzYW1wbGVKYXZhUGFja2FnZT86IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgSnVuaXQgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBKdW5pdE9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGNvbnN0IHBvbSA9IG9wdGlvbnMucG9tO1xuICAgIGNvbnN0IHZlcnNpb24gPSBvcHRpb25zLnZlcnNpb24gPz8gXCI1LjcuMFwiO1xuXG4gICAgcG9tLmFkZFRlc3REZXBlbmRlbmN5KGBvcmcuanVuaXQuanVwaXRlci9qdW5pdC1qdXBpdGVyLWFwaUAke3ZlcnNpb259YCk7XG4gICAgcG9tLmFkZFRlc3REZXBlbmRlbmN5KGBvcmcuanVuaXQuanVwaXRlci9qdW5pdC1qdXBpdGVyLWVuZ2luZUAke3ZlcnNpb259YCk7XG5cbiAgICBwcm9qZWN0LnRlc3RUYXNrLmV4ZWMoXCJtdm4gdGVzdFwiKTtcblxuICAgIGNvbnN0IGphdmFQYWNrYWdlID0gb3B0aW9ucy5zYW1wbGVKYXZhUGFja2FnZSA/PyBcIm9yZy5hY21lXCI7XG4gICAgY29uc3QgamF2YVBhY2thZ2VQYXRoID0gamF2YVBhY2thZ2Uuc3BsaXQoXCIuXCIpO1xuICAgIG5ldyBTYW1wbGVEaXIocHJvamVjdCwgam9pbihURVNURElSLCAuLi5qYXZhUGFja2FnZVBhdGgpLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICBcIk15VGVzdC5qYXZhXCI6IFtcbiAgICAgICAgICBgcGFja2FnZSAke2phdmFQYWNrYWdlfTtgLFxuICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgXCJpbXBvcnQgb3JnLmp1bml0Lmp1cGl0ZXIuYXBpLlRlc3Q7XCIsXG4gICAgICAgICAgXCJcIixcbiAgICAgICAgICBcInB1YmxpYyBjbGFzcyBNeVRlc3Qge1wiLFxuICAgICAgICAgIFwiICBAVGVzdFwiLFxuICAgICAgICAgIFwiICBwdWJsaWMgdm9pZCB0ZXN0SGVsbG8oKSB7XCIsXG4gICAgICAgICAgJyAgICBTeXN0ZW0ub3V0LnByaW50bG4oXCJIZWxsbywgd29ybGQhXCIpOycsXG4gICAgICAgICAgXCIgIH1cIixcbiAgICAgICAgICBcIn1cIixcbiAgICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
- import { Component } from '../component';
2
- import { Project } from '../project';
3
- import { Pom } from './pom';
1
+ import { Component } from "../component";
2
+ import { Project } from "../project";
3
+ import { Pom } from "./pom";
4
4
  /**
5
5
  * (experimental) Options for `MavenCompile`.
6
6
  *
@@ -16,17 +16,17 @@ class MavenCompile extends component_1.Component {
16
16
  constructor(project, pom, options = {}) {
17
17
  var _b, _c;
18
18
  super(project);
19
- project.gitignore.exclude('target');
20
- pom.addPlugin('org.apache.maven.plugins/maven-compiler-plugin@3.8.1', {
19
+ project.gitignore.exclude("target");
20
+ pom.addPlugin("org.apache.maven.plugins/maven-compiler-plugin@3.8.1", {
21
21
  configuration: {
22
- source: (_b = options.source) !== null && _b !== void 0 ? _b : '1.8',
23
- target: (_c = options.target) !== null && _c !== void 0 ? _c : '1.8',
22
+ source: (_b = options.source) !== null && _b !== void 0 ? _b : "1.8",
23
+ target: (_c = options.target) !== null && _c !== void 0 ? _c : "1.8",
24
24
  },
25
25
  });
26
- project.compileTask.exec('mvn compiler:compile');
26
+ project.compileTask.exec("mvn compiler:compile");
27
27
  }
28
28
  }
29
29
  exports.MavenCompile = MavenCompile;
30
30
  _a = JSII_RTTI_SYMBOL_1;
31
- MavenCompile[_a] = { fqn: "projen.java.MavenCompile", version: "0.49.0" };
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF2ZW4tY29tcGlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qYXZhL21hdmVuLWNvbXBpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBeUM7Ozs7OztBQWN6QyxNQUFhLFlBQWEsU0FBUSxxQkFBUzs7OztJQUN6QyxZQUFZLE9BQWdCLEVBQUUsR0FBUSxFQUFFLFVBQStCLEVBQUU7O1FBQ3ZFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBDLEdBQUcsQ0FBQyxTQUFTLENBQUMsc0RBQXNELEVBQUU7WUFDcEUsYUFBYSxFQUFFO2dCQUNiLE1BQU0sUUFBRSxPQUFPLENBQUMsTUFBTSxtQ0FBSSxLQUFLO2dCQUMvQixNQUFNLFFBQUUsT0FBTyxDQUFDLE1BQU0sbUNBQUksS0FBSzthQUNoQztTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDbkQsQ0FBQzs7QUFkSCxvQ0FlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vcHJvamVjdCc7XG5pbXBvcnQgeyBQb20gfSBmcm9tICcuL3BvbSc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIE1hdmVuQ29tcGlsZU9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNvdXJjZT86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB0YXJnZXQ/OiBzdHJpbmc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBNYXZlbkNvbXBpbGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBwb206IFBvbSwgb3B0aW9uczogTWF2ZW5Db21waWxlT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKCd0YXJnZXQnKTtcblxuICAgIHBvbS5hZGRQbHVnaW4oJ29yZy5hcGFjaGUubWF2ZW4ucGx1Z2lucy9tYXZlbi1jb21waWxlci1wbHVnaW5AMy44LjEnLCB7XG4gICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgIHNvdXJjZTogb3B0aW9ucy5zb3VyY2UgPz8gJzEuOCcsXG4gICAgICAgIHRhcmdldDogb3B0aW9ucy50YXJnZXQgPz8gJzEuOCcsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5jb21waWxlVGFzay5leGVjKCdtdm4gY29tcGlsZXI6Y29tcGlsZScpO1xuICB9XG59Il19
31
+ MavenCompile[_a] = { fqn: "projen.java.MavenCompile", version: "0.49.1" };
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF2ZW4tY29tcGlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qYXZhL21hdmVuLWNvbXBpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBeUM7Ozs7OztBQWN6QyxNQUFhLFlBQWEsU0FBUSxxQkFBUzs7OztJQUN6QyxZQUFZLE9BQWdCLEVBQUUsR0FBUSxFQUFFLFVBQStCLEVBQUU7O1FBQ3ZFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBDLEdBQUcsQ0FBQyxTQUFTLENBQUMsc0RBQXNELEVBQUU7WUFDcEUsYUFBYSxFQUFFO2dCQUNiLE1BQU0sUUFBRSxPQUFPLENBQUMsTUFBTSxtQ0FBSSxLQUFLO2dCQUMvQixNQUFNLFFBQUUsT0FBTyxDQUFDLE1BQU0sbUNBQUksS0FBSzthQUNoQztTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDbkQsQ0FBQzs7QUFkSCxvQ0FlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgUG9tIH0gZnJvbSBcIi4vcG9tXCI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIE1hdmVuQ29tcGlsZU9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNvdXJjZT86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB0YXJnZXQ/OiBzdHJpbmc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBNYXZlbkNvbXBpbGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBwb206IFBvbSwgb3B0aW9uczogTWF2ZW5Db21waWxlT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKFwidGFyZ2V0XCIpO1xuXG4gICAgcG9tLmFkZFBsdWdpbihcIm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2lucy9tYXZlbi1jb21waWxlci1wbHVnaW5AMy44LjFcIiwge1xuICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICBzb3VyY2U6IG9wdGlvbnMuc291cmNlID8/IFwiMS44XCIsXG4gICAgICAgIHRhcmdldDogb3B0aW9ucy50YXJnZXQgPz8gXCIxLjhcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBwcm9qZWN0LmNvbXBpbGVUYXNrLmV4ZWMoXCJtdm4gY29tcGlsZXI6Y29tcGlsZVwiKTtcbiAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
- import { Component } from '../component';
2
- import { Project } from '../project';
3
- import { Pom } from './pom';
1
+ import { Component } from "../component";
2
+ import { Project } from "../project";
3
+ import { Pom } from "./pom";
4
4
  /**
5
5
  * (experimental) Options for `MavenPackage`.
6
6
  *