projen 0.84.7 → 0.84.9

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 (162) hide show
  1. package/.jsii +263 -220
  2. package/lib/awscdk/auto-discover.js +5 -5
  3. package/lib/awscdk/awscdk-app-java.js +1 -1
  4. package/lib/awscdk/awscdk-app-py.js +1 -1
  5. package/lib/awscdk/awscdk-app-ts.js +1 -1
  6. package/lib/awscdk/awscdk-construct.js +2 -2
  7. package/lib/awscdk/awscdk-deps-java.js +1 -1
  8. package/lib/awscdk/awscdk-deps-js.js +1 -1
  9. package/lib/awscdk/awscdk-deps-py.js +1 -1
  10. package/lib/awscdk/awscdk-deps.js +1 -1
  11. package/lib/awscdk/cdk-config.js +1 -1
  12. package/lib/awscdk/cdk-tasks.js +1 -1
  13. package/lib/awscdk/integration-test.js +1 -1
  14. package/lib/awscdk/lambda-extension.js +1 -1
  15. package/lib/awscdk/lambda-function.js +2 -2
  16. package/lib/build/build-workflow.js +1 -1
  17. package/lib/cdk/auto-discover-base.js +2 -2
  18. package/lib/cdk/construct-lib.js +1 -1
  19. package/lib/cdk/integration-test-base.js +1 -1
  20. package/lib/cdk/jsii-docgen.js +1 -1
  21. package/lib/cdk/jsii-project.js +1 -1
  22. package/lib/cdk8s/auto-discover.js +2 -2
  23. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  24. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  25. package/lib/cdk8s/cdk8s-construct.js +1 -1
  26. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  27. package/lib/cdk8s/cdk8s-deps.js +1 -1
  28. package/lib/cdk8s/integration-test.js +1 -1
  29. package/lib/cdktf/cdktf-construct.js +1 -1
  30. package/lib/circleci/circleci.js +1 -1
  31. package/lib/component.js +1 -1
  32. package/lib/dependencies.js +1 -1
  33. package/lib/dev-env.js +1 -1
  34. package/lib/docker-compose/docker-compose-service.js +1 -1
  35. package/lib/docker-compose/docker-compose.js +1 -1
  36. package/lib/file.js +1 -1
  37. package/lib/gitattributes.js +1 -1
  38. package/lib/github/actions-provider.js +1 -1
  39. package/lib/github/auto-approve.js +1 -1
  40. package/lib/github/auto-merge.js +1 -1
  41. package/lib/github/dependabot.js +1 -1
  42. package/lib/github/github-credentials.js +1 -1
  43. package/lib/github/github-project.js +1 -1
  44. package/lib/github/github.js +1 -1
  45. package/lib/github/mergify.js +1 -1
  46. package/lib/github/pr-template.js +1 -1
  47. package/lib/github/pull-request-backport.js +1 -1
  48. package/lib/github/pull-request-lint.js +1 -1
  49. package/lib/github/stale.js +1 -1
  50. package/lib/github/task-workflow-job.js +1 -1
  51. package/lib/github/task-workflow.js +1 -1
  52. package/lib/github/workflow-actions.js +1 -1
  53. package/lib/github/workflow-jobs.js +1 -1
  54. package/lib/github/workflow-steps.js +1 -1
  55. package/lib/github/workflows.js +1 -1
  56. package/lib/gitlab/configuration-model.d.ts +2 -0
  57. package/lib/gitlab/configuration-model.js +1 -1
  58. package/lib/gitlab/configuration.d.ts +5 -1
  59. package/lib/gitlab/configuration.js +4 -2
  60. package/lib/gitlab/gitlab-configuration.js +1 -1
  61. package/lib/gitlab/nested-configuration.js +1 -1
  62. package/lib/gitpod.js +1 -1
  63. package/lib/ignore-file.js +1 -1
  64. package/lib/ini.js +1 -1
  65. package/lib/java/java-project.js +1 -1
  66. package/lib/java/junit.js +1 -1
  67. package/lib/java/maven-compile.js +1 -1
  68. package/lib/java/maven-packaging.js +1 -1
  69. package/lib/java/maven-sample.js +1 -1
  70. package/lib/java/pom.js +1 -1
  71. package/lib/java/projenrc.js +1 -1
  72. package/lib/javascript/bundler.js +1 -1
  73. package/lib/javascript/eslint.js +1 -1
  74. package/lib/javascript/jest.js +4 -4
  75. package/lib/javascript/license-checker.js +1 -1
  76. package/lib/javascript/node-package.js +1 -1
  77. package/lib/javascript/node-project.js +1 -1
  78. package/lib/javascript/npm-config.js +1 -1
  79. package/lib/javascript/prettier.js +1 -1
  80. package/lib/javascript/projenrc.js +1 -1
  81. package/lib/javascript/typescript-config.js +2 -2
  82. package/lib/javascript/upgrade-dependencies.js +2 -2
  83. package/lib/javascript/yarnrc.js +1 -1
  84. package/lib/json-patch.js +1 -1
  85. package/lib/json.js +1 -1
  86. package/lib/license.js +1 -1
  87. package/lib/logger.js +1 -1
  88. package/lib/makefile.js +1 -1
  89. package/lib/object-file.js +1 -1
  90. package/lib/project-build.js +1 -1
  91. package/lib/project-tree.js +1 -1
  92. package/lib/project.js +1 -1
  93. package/lib/projects.js +1 -1
  94. package/lib/projenrc-json.js +2 -2
  95. package/lib/projenrc.js +1 -1
  96. package/lib/python/pip.js +1 -1
  97. package/lib/python/poetry.js +2 -2
  98. package/lib/python/projenrc.js +1 -1
  99. package/lib/python/pytest-sample.js +1 -1
  100. package/lib/python/pytest.js +1 -1
  101. package/lib/python/python-project.js +1 -1
  102. package/lib/python/python-sample.js +1 -1
  103. package/lib/python/requirements-file.js +1 -1
  104. package/lib/python/setuppy.js +1 -1
  105. package/lib/python/setuptools.js +1 -1
  106. package/lib/python/venv.js +1 -1
  107. package/lib/readme.js +1 -1
  108. package/lib/release/publisher.js +1 -1
  109. package/lib/release/release-trigger.js +1 -1
  110. package/lib/release/release.js +1 -1
  111. package/lib/renovatebot.js +1 -1
  112. package/lib/sample-file.js +2 -2
  113. package/lib/semver.js +1 -1
  114. package/lib/source-code.js +1 -1
  115. package/lib/task-runtime.js +1 -1
  116. package/lib/task.js +1 -1
  117. package/lib/tasks.js +1 -1
  118. package/lib/testing.js +1 -1
  119. package/lib/textfile.js +1 -1
  120. package/lib/toml.js +1 -1
  121. package/lib/typescript/projenrc-ts.js +1 -1
  122. package/lib/typescript/projenrc.js +1 -1
  123. package/lib/typescript/typescript-typedoc.js +1 -1
  124. package/lib/typescript/typescript.js +8 -8
  125. package/lib/version.js +2 -2
  126. package/lib/vscode/devcontainer.js +1 -1
  127. package/lib/vscode/extensions.js +1 -1
  128. package/lib/vscode/launch-config.js +1 -1
  129. package/lib/vscode/settings.js +1 -1
  130. package/lib/vscode/vscode.js +1 -1
  131. package/lib/web/next.js +3 -3
  132. package/lib/web/postcss.js +1 -1
  133. package/lib/web/react.js +4 -4
  134. package/lib/web/tailwind.js +1 -1
  135. package/lib/xmlfile.js +1 -1
  136. package/lib/yaml.js +1 -1
  137. package/node_modules/yaml/browser/dist/compose/compose-collection.js +15 -3
  138. package/node_modules/yaml/browser/dist/compose/compose-node.js +1 -1
  139. package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +1 -1
  140. package/node_modules/yaml/browser/dist/compose/resolve-props.js +3 -3
  141. package/node_modules/yaml/browser/dist/nodes/Collection.js +0 -1
  142. package/node_modules/yaml/browser/dist/parse/lexer.js +2 -6
  143. package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +2 -0
  144. package/node_modules/yaml/dist/cli.d.ts +1 -2
  145. package/node_modules/yaml/dist/cli.mjs +8 -4
  146. package/node_modules/yaml/dist/compose/compose-collection.d.ts +7 -1
  147. package/node_modules/yaml/dist/compose/compose-collection.js +15 -3
  148. package/node_modules/yaml/dist/compose/compose-node.d.ts +1 -0
  149. package/node_modules/yaml/dist/compose/compose-node.js +1 -1
  150. package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +1 -2
  151. package/node_modules/yaml/dist/compose/resolve-block-map.js +1 -1
  152. package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +1 -1
  153. package/node_modules/yaml/dist/compose/resolve-props.d.ts +1 -1
  154. package/node_modules/yaml/dist/compose/resolve-props.js +3 -3
  155. package/node_modules/yaml/dist/nodes/Collection.d.ts +0 -1
  156. package/node_modules/yaml/dist/nodes/Collection.js +0 -1
  157. package/node_modules/yaml/dist/nodes/identity.d.ts +1 -1
  158. package/node_modules/yaml/dist/parse/lexer.js +2 -6
  159. package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +3 -3
  160. package/node_modules/yaml/dist/stringify/foldFlowLines.js +2 -0
  161. package/node_modules/yaml/package.json +1 -1
  162. package/package.json +1 -1
@@ -59,7 +59,7 @@ class TsJestBabelConfig {
59
59
  }
60
60
  exports.TsJestBabelConfig = TsJestBabelConfig;
61
61
  _a = JSII_RTTI_SYMBOL_1;
62
- TsJestBabelConfig[_a] = { fqn: "projen.typescript.TsJestBabelConfig", version: "0.84.7" };
62
+ TsJestBabelConfig[_a] = { fqn: "projen.typescript.TsJestBabelConfig", version: "0.84.9" };
63
63
  /**
64
64
  * @see https://kulshekhar.github.io/ts-jest/docs/getting-started/options/diagnostics/
65
65
  */
@@ -97,7 +97,7 @@ class TsJestDiagnostics {
97
97
  }
98
98
  exports.TsJestDiagnostics = TsJestDiagnostics;
99
99
  _b = JSII_RTTI_SYMBOL_1;
100
- TsJestDiagnostics[_b] = { fqn: "projen.typescript.TsJestDiagnostics", version: "0.84.7" };
100
+ TsJestDiagnostics[_b] = { fqn: "projen.typescript.TsJestDiagnostics", version: "0.84.9" };
101
101
  /**
102
102
  * @see https://kulshekhar.github.io/ts-jest/docs/getting-started/options/tsconfig/
103
103
  */
@@ -143,7 +143,7 @@ class TsJestTsconfig {
143
143
  }
144
144
  exports.TsJestTsconfig = TsJestTsconfig;
145
145
  _c = JSII_RTTI_SYMBOL_1;
146
- TsJestTsconfig[_c] = { fqn: "projen.typescript.TsJestTsconfig", version: "0.84.7" };
146
+ TsJestTsconfig[_c] = { fqn: "projen.typescript.TsJestTsconfig", version: "0.84.9" };
147
147
  /**
148
148
  * TypeScript project
149
149
  * @pjid typescript
@@ -325,7 +325,7 @@ class TypeScriptProject extends javascript_1.NodeProject {
325
325
  jest.discoverTestMatchPatternsForDirs([libtest], {
326
326
  fileExtensionPattern: this.tsconfig?.compilerOptions?.allowJs
327
327
  ? undefined
328
- : "ts?(x)",
328
+ : "js?(x)",
329
329
  });
330
330
  jest.addWatchIgnorePattern(`/${this.srcdir}/`);
331
331
  const resolveSnapshotPath = (test, ext) => {
@@ -414,7 +414,7 @@ class TypeScriptProject extends javascript_1.NodeProject {
414
414
  }
415
415
  exports.TypeScriptProject = TypeScriptProject;
416
416
  _d = JSII_RTTI_SYMBOL_1;
417
- TypeScriptProject[_d] = { fqn: "projen.typescript.TypeScriptProject", version: "0.84.7" };
417
+ TypeScriptProject[_d] = { fqn: "projen.typescript.TypeScriptProject", version: "0.84.9" };
418
418
  TypeScriptProject.DEFAULT_TS_JEST_TRANFORM_PATTERN = "^.+\\.[t]sx?$";
419
419
  class SampleCode extends component_1.Component {
420
420
  constructor(project) {
@@ -465,7 +465,7 @@ class TypeScriptAppProject extends TypeScriptProject {
465
465
  }
466
466
  exports.TypeScriptAppProject = TypeScriptAppProject;
467
467
  _e = JSII_RTTI_SYMBOL_1;
468
- TypeScriptAppProject[_e] = { fqn: "projen.typescript.TypeScriptAppProject", version: "0.84.7" };
468
+ TypeScriptAppProject[_e] = { fqn: "projen.typescript.TypeScriptAppProject", version: "0.84.9" };
469
469
  /**
470
470
  * @deprecated use `TypeScriptProject`
471
471
  */
@@ -473,7 +473,7 @@ class TypeScriptLibraryProject extends TypeScriptProject {
473
473
  }
474
474
  exports.TypeScriptLibraryProject = TypeScriptLibraryProject;
475
475
  _f = JSII_RTTI_SYMBOL_1;
476
- TypeScriptLibraryProject[_f] = { fqn: "projen.typescript.TypeScriptLibraryProject", version: "0.84.7" };
476
+ TypeScriptLibraryProject[_f] = { fqn: "projen.typescript.TypeScriptLibraryProject", version: "0.84.9" };
477
477
  /**
478
478
  * @internal
479
479
  */
@@ -491,4 +491,4 @@ function mergeTsconfigOptions(...options) {
491
491
  }), { compilerOptions: {} });
492
492
  }
493
493
  exports.mergeTsconfigOptions = mergeTsconfigOptions;
494
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlc2NyaXB0L3R5cGVzY3JpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsaUNBQWlDO0FBQ2pDLHNDQUF1QztBQUN2Qyw0Q0FBeUM7QUFDekMsOENBV3VCO0FBQ3ZCLDZDQUEwRDtBQUMxRCxnREFBMkM7QUFFM0MsMENBQXVDO0FBQ3ZDLDhDQUl1QjtBQUN2QixrQ0FBNEQ7QUFFNUQ7O0dBRUc7QUFDSCxNQUFhLGlCQUFpQjtJQUM1Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxRQUFRO1FBQ3BCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0I7UUFDNUIsT0FBTyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFnQjtRQUNyQyxPQUFPLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBMkI7UUFDOUMsT0FBTyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxZQUNtQixNQUE4QztRQUE5QyxXQUFNLEdBQU4sTUFBTSxDQUF3QztJQUM5RCxDQUFDO0lBRUo7OztPQUdHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDOztBQTVDSCw4Q0E2Q0M7OztBQUVEOztHQUVHO0FBQ0gsTUFBYSxpQkFBaUI7SUFDNUI7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBRztRQUNmLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxD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ZUFBZTtZQUMzQixHQUFHLE9BQU8sQ0FBQyxlQUFlO1NBQzNCO0tBQ0YsQ0FBQyxFQUNGLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxDQUN4QixDQUFDO0FBQ0osQ0FBQztBQWpCRCxvREFpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSBcInNlbXZlclwiO1xuaW1wb3J0IHsgUFJPSkVOX0RJUiB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7XG4gIEVzbGludCxcbiAgRXNsaW50T3B0aW9ucyxcbiAgSmVzdCxcbiAgTm9kZVByb2plY3QsXG4gIE5vZGVQcm9qZWN0T3B0aW9ucyxcbiAgUHJvamVucmMgYXMgTm9kZVByb2plY3RQcm9qZW5yYyxcbiAgVHJhbnNmb3JtLFxuICBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zLFxuICBUeXBlc2NyaXB0Q29uZmlnLFxuICBUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucyxcbn0gZnJvbSBcIi4uL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IGhhc0RlcGVuZGVuY3lWZXJzaW9uIH0gZnJvbSBcIi4uL2phdmFzY3JpcHQvdXRpbFwiO1xuaW1wb3J0IHsgU2FtcGxlRGlyIH0gZnJvbSBcIi4uL3NhbXBsZS1maWxlXCI7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSBcIi4uL3Rhc2tcIjtcbmltcG9ydCB7IFRleHRGaWxlIH0gZnJvbSBcIi4uL3RleHRmaWxlXCI7XG5pbXBvcnQge1xuICBQcm9qZW5yYyBhcyBQcm9qZW5yY1RzLFxuICBQcm9qZW5yY09wdGlvbnMgYXMgUHJvamVucmNUc09wdGlvbnMsXG4gIFR5cGVkb2NEb2NnZW4sXG59IGZyb20gXCIuLi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBkZWVwTWVyZ2UsIG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGggfSBmcm9tIFwiLi4vdXRpbFwiO1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9rdWxzaGVraGFyLmdpdGh1Yi5pby90cy1qZXN0L2RvY3MvZ2V0dGluZy1zdGFydGVkL29wdGlvbnMvYmFiZWxDb25maWcvXG4gKi9cbmV4cG9ydCBjbGFzcyBUc0plc3RCYWJlbENvbmZpZyB7XG4gIC8qKlxuICAgKiBEaXNhYmxlcyB0aGUgdXNlIG9mIEJhYmVsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRpc2FibGVkKCkge1xuICAgIHJldHVybiBuZXcgVHNKZXN0QmFiZWxDb25maWcoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgQmFiZWwgcHJvY2Vzc2luZ1xuICAgKlxuICAgKiBgdHMtamVzdGAgd2lsbCB0cnkgdG8gZmluZCBhbiBleGlzdGluZyBCYWJlbCBjb25maWd1cmF0aW9uIGFuZCBwYXNzIGl0IHRvIHRoZSBgYmFiZWwtamVzdGAgcHJvY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhdXRvRGV0ZWN0Q29uZmlnKCkge1xuICAgIHJldHVybiBuZXcgVHNKZXN0QmFiZWxDb25maWcodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUGF0aCB0byBhIGJhYmVscmMgZmlsZVxuICAgKlxuICAgKiBUaGUgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgd2hlcmUgeW91IHN0YXJ0IEplc3QgZnJvbS4gWW91IGNhbiBhbHNvIHVzZSBgPHJvb3REaXI+YCBpbiB0aGUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUZpbGUoZmlsZVBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgVHNKZXN0QmFiZWxDb25maWcoZmlsZVBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIElubGluZSBjb21waWxlciBvcHRpb25zXG4gICAqIEBzZWUgaHR0cHM6Ly9iYWJlbGpzLmlvL2RvY3Mvb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjdXN0b20oY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgcmV0dXJuIG5ldyBUc0plc3RCYWJlbENvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogYm9vbGVhbiB8IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBAanNpaSBpZ25vcmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgdG9KU09OKCk6IGJvb2xlYW4gfCBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWc7XG4gIH1cbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8va3Vsc2hla2hhci5naXRodWIuaW8vdHMtamVzdC9kb2NzL2dldHRpbmctc3RhcnRlZC9vcHRpb25zL2RpYWdub3N0aWNzL1xuICovXG5leHBvcnQgY2xhc3MgVHNKZXN0RGlhZ25vc3RpY3Mge1xuICAvKipcbiAgICogRW5hYmxlIGFsbCBkaWFnbm9zdGljcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWxsKCkge1xuICAgIHJldHVybiBuZXcgVHNKZXN0RGlhZ25vc3RpY3ModHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzYWJsZSBhbGwgZGlhZ25vc3RpY3MuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG5vbmUoKSB7XG4gICAgcmV0dXJuIG5ldyBUc0plc3REaWFnbm9zdGljcyhmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZSBhIGN1c3RvbSBkaWFnbm9zdGljcyBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8va3Vsc2hla2hhci5naXRodWIuaW8vdHMtamVzdC9kb2NzL2dldHRpbmctc3RhcnRlZC9vcHRpb25zL2RpYWdub3N0aWNzL1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjdXN0b20oY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgcmV0dXJuIG5ldyBUc0plc3REaWFnbm9zdGljcyhjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogYm9vbGVhbiB8IFJlY29yZDxzdHJpbmcsIGFueT4pIHt9XG5cbiAgLyoqXG4gICAqIEBqc2lpIGlnbm9yZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyB0b0pTT04oKTogYm9vbGVhbiB8IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZztcbiAgfVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9rdWxzaGVraGFyLmdpdGh1Yi5pby90cy1qZXN0L2RvY3MvZ2V0dGluZy1zdGFydGVkL29wdGlvbnMvdHNjb25maWcvXG4gKi9cbmV4cG9ydCBjbGFzcyBUc0plc3RUc2NvbmZpZyB7XG4gIC8qKlxuICAgKiBVc2VzIGB0c2NvbmZpZy5qc29uYCBpZiBmb3VuZCwgb3IgdGhlIGJ1aWx0LWluIGRlZmF1bHQgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhdXRvKCkge1xuICAgIHJldHVybiBuZXcgVHNKZXN0VHNjb25maWcodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogRm9yY2VgIHRzLWplc3RgIHRvIHVzZSBpdHMgYnVpbHQtaW4gZGVmYXVsdHMgZXZlbiBpZiB0aGVyZSBpcyBhIGB0c2NvbmZpZy5qc29uYCBpbiB5b3VyIHByb2plY3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJ1aWx0SW5EZWZhdWx0cygpIHtcbiAgICByZXR1cm4gbmV3IFRzSmVzdFRzY29uZmlnKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRoIHRvIGEgYHRzY29uZmlnYCBmaWxlXG4gICAqXG4gICAqIFRoZSBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB3aGVyZSB5b3Ugc3RhcnQgSmVzdCBmcm9tLiBZb3UgY2FuIGFsc28gdXNlIGA8cm9vdERpcj5gIGluIHRoZSBwYXRoIHRvIHN0YXJ0IGZyb20gdGhlIHByb2plY3Qgcm9vdCBkaXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21GaWxlKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFRzSmVzdFRzY29uZmlnKGZpbGVQYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmxpbmUgY29tcGlsZXIgb3B0aW9uc1xuICAgKlxuICAgKiBAc2VlIFR5cGVzY3JpcHRDb25maWdPcHRpb25zXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGN1c3RvbShjb25maWc6IFR5cGVzY3JpcHRDb25maWdPcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBUc0plc3RUc2NvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogYm9vbGVhbiB8IHN0cmluZyB8IFR5cGVzY3JpcHRDb25maWdPcHRpb25zXG4gICkge31cblxuICAvKipcbiAgICogQGpzaWkgaWdub3JlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHRvSlNPTigpOiBib29sZWFuIHwgc3RyaW5nIHwgVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZztcbiAgfVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9rdWxzaGVraGFyLmdpdGh1Yi5pby90cy1qZXN0L2RvY3MvZ2V0dGluZy1zdGFydGVkL29wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUc0plc3RUcmFuc2Zvcm1PcHRpb25zIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBUeXBlU2NyaXB0IEFTVCB0cmFuc2Zvcm1lcnNcbiAgICpcbiAgICogQGRlZmF1bHQgYXV0b1xuICAgKi9cbiAgcmVhZG9ubHkgYXN0VHJhbnNmb3JtZXJzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqXG4gICAqIEJhYmVsKEplc3QpIHJlbGF0ZWQgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgVHNKZXN0QmFiZWxDb25maWcuZGlzYWJsZWQoKVxuICAgKi9cbiAgcmVhZG9ubHkgYmFiZWxDb25maWc/OiBUc0plc3RCYWJlbENvbmZpZztcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgbW9kdWxlIHRvIHVzZSBhcyBjb21waWxlci5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ0eXBlc2NyaXB0XCJcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBpbGVyPzogc3RyaW5nO1xuICAvKipcbiAgICogRGlhZ25vc3RpY3MgcmVsYXRlZCBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBUc0plc3REaWFnbm9zdGljcy5hbGwoKVxuICAgKi9cbiAgcmVhZG9ubHkgZGlhZ25vc3RpY3M/OiBUc0plc3REaWFnbm9zdGljcztcbiAgLyoqXG4gICAqIFJ1biB0cy1qZXN0IHRlc3RzIHdpdGggdGhpcyBUU0NvbmZpZyBpc29sYXRlZE1vZHVsZXMgc2V0dGluZy5cbiAgICpcbiAgICogWW91J2xsIGxvc2UgdHlwZS1jaGVja2luZyBhYmlsaXR5IGFuZCBzb21lIGZlYXR1cmVzIHN1Y2ggYXMgY29uc3QgZW51bSwgYnV0IGluIHRoZSBjYXNlIHlvdSBwbGFuIG9uIHVzaW5nIEplc3Qgd2l0aCB0aGUgY2FjaGUgZGlzYWJsZWQgKGplc3QgLS1uby1jYWNoZSksIHlvdXIgdGVzdHMgd2lsbCB0aGVuIHJ1biBtdWNoIGZhc3Rlci5cbiAgICogQHNlZSBodHRwczovL2t1bHNoZWtoYXIuZ2l0aHViLmlvL3RzLWplc3QvZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvb3B0aW9ucy9pc29sYXRlZE1vZHVsZXNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGlzb2xhdGVkTW9kdWxlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBGaWxlcyB3aGljaCB3aWxsIGJlY29tZSBtb2R1bGVzIHJldHVybmluZyBzZWxmIGNvbnRlbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGRpc2FibGVkXG4gICAqL1xuICByZWFkb25seSBzdHJpbmdpZnlDb250ZW50UGF0aFJlZ2V4Pzogc3RyaW5nO1xuICAvKipcbiAgICogVHlwZVNjcmlwdCBjb21waWxlciByZWxhdGVkIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gWW91ciBwcm9qZWN0J3MgYHRzY29uZmlnRGV2YCBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWc/OiBUc0plc3RUc2NvbmZpZztcbiAgLyoqXG4gICAqIEVuYWJsZSBFU00gc3VwcG9ydFxuICAgKlxuICAgKiBAZGVmYXVsdCBhdXRvXG4gICAqL1xuICByZWFkb25seSB1c2VFU00/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRzSmVzdE9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggZmlsZXMgc2hvdWxkIHRzLWplc3QgYWN0IHVwb24uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9qZXN0anMuaW8vZG9jcy9jb25maWd1cmF0aW9uI3RyYW5zZm9ybS1vYmplY3RzdHJpbmctcGF0aHRvdHJhbnNmb3JtZXItLXBhdGh0b3RyYW5zZm9ybWVyLW9iamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCBcIl4uK1xcXFwuW3Rdc3g/JFwiXG4gICAqL1xuICByZWFkb25seSB0cmFuc2Zvcm1QYXR0ZXJuPzogc3RyaW5nO1xuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIGRlZmF1bHQgdHMtamVzdCB0cmFuc2Zvcm1lciBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhbnNmb3JtT3B0aW9ucz86IFRzSmVzdFRyYW5zZm9ybU9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIGV4dGVuZHMgTm9kZVByb2plY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFR5cGVzY3JpcHQgIGFydGlmYWN0cyBvdXRwdXQgZGlyZWN0b3J5XG4gICAqXG4gICAqIEBkZWZhdWx0IFwibGliXCJcbiAgICovXG4gIHJlYWRvbmx5IGxpYmRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZXNjcmlwdCBzb3VyY2VzIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJzcmNcIlxuICAgKi9cbiAgcmVhZG9ubHkgc3JjZGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBKZXN0IHRlc3RzIGRpcmVjdG9yeS4gVGVzdHMgZmlsZXMgc2hvdWxkIGJlIG5hbWVkIGB4eHgudGVzdC50c2AuXG4gICAqXG4gICAqIElmIHRoaXMgZGlyZWN0b3J5IGlzIHVuZGVyIGBzcmNkaXJgIChlLmcuIGBzcmMvdGVzdGAsIGBzcmMvX190ZXN0c19fYCksXG4gICAqIHRoZW4gdGVzdHMgYXJlIGdvaW5nIHRvIGJlIGNvbXBpbGVkIGludG8gYGxpYi9gIGFuZCBleGVjdXRlZCBhcyBqYXZhc2NyaXB0LlxuICAgKiBJZiB0aGUgdGVzdCBkaXJlY3RvcnkgaXMgb3V0c2lkZSBvZiBgc3JjYCwgdGhlbiB3ZSBjb25maWd1cmUgamVzdCB0b1xuICAgKiBjb21waWxlIHRoZSBjb2RlIGluLW1lbW9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RkaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldHVwIGVzbGludC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXNsaW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRXNsaW50IG9wdGlvbnNcbiAgICogQGRlZmF1bHQgLSBvcGluaW9uYXRlZCBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGVzbGludE9wdGlvbnM/OiBFc2xpbnRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IHZlcnNpb24gdG8gdXNlLlxuICAgKlxuICAgKiBOT1RFOiBUeXBlc2NyaXB0IGlzIG5vdCBzZW1hbnRpY2FsbHkgdmVyc2lvbmVkIGFuZCBzaG91bGQgcmVtYWluIG9uIHRoZVxuICAgKiBzYW1lIG1pbm9yLCBzbyB3ZSByZWNvbW1lbmQgdXNpbmcgYSBgfmAgZGVwZW5kZW5jeSAoZS5nLiBgfjEuMi4zYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzY3JpcHRWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2NnZW4gYnkgVHlwZWRvY1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZG9jZ2VuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG9jcyBkaXJlY3RvcnlcbiAgICpcbiAgICogQGRlZmF1bHQgXCJkb2NzXCJcbiAgICovXG4gIHJlYWRvbmx5IGRvY3NEaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBUU0NvbmZpZ1xuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWc/OiBUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucztcblxuICAvKipcbiAgICogQ3VzdG9tIHRzY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBkZXZlbG9wbWVudCB0c2NvbmZpZy5qc29uIGZpbGUgKHVzZWQgZm9yIHRlc3RpbmcpLlxuICAgKiBAZGVmYXVsdCAtIHVzZSB0aGUgcHJvZHVjdGlvbiB0c2NvbmZpZyBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZ0Rldj86IFR5cGVzY3JpcHRDb25maWdPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGV2ZWxvcG1lbnQgdHNjb25maWcuanNvbiBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcInRzY29uZmlnLmRldi5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IHRzY29uZmlnRGV2RmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogRG8gbm90IGdlbmVyYXRlIGEgYHRzY29uZmlnLmpzb25gIGZpbGUgKHVzZWQgYnkganNpaSBwcm9qZWN0cyBzaW5jZVxuICAgKiB0c2NvbmZpZy5qc29uIGlzIGdlbmVyYXRlZCBieSB0aGUganNpaSBjb21waWxlcikuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlVHNjb25maWc/OiBib29sZWFuO1xuICAvKipcbiAgICogRG8gbm90IGdlbmVyYXRlIGEgYHRzY29uZmlnLmRldi5qc29uYCBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZVRzY29uZmlnRGV2PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2VuZXJhdGUgb25lLXRpbWUgc2FtcGxlIGluIGBzcmMvYCBhbmQgYHRlc3QvYCBpZiB0aGVyZSBhcmUgbm8gZmlsZXMgdGhlcmUuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNhbXBsZUNvZGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgLmQudHMgZmlsZSB0aGF0IGluY2x1ZGVzIHRoZSB0eXBlIGRlY2xhcmF0aW9ucyBmb3IgdGhpcyBtb2R1bGUuXG4gICAqIEBkZWZhdWx0IC0gLmQudHMgZmlsZSBkZXJpdmVkIGZyb20gdGhlIHByb2plY3QncyBlbnRyeXBvaW50ICh1c3VhbGx5IGxpYi9pbmRleC5kLnRzKVxuICAgKi9cbiAgcmVhZG9ubHkgZW50cnlwb2ludFR5cGVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVc2UgVHlwZVNjcmlwdCBmb3IgeW91ciBwcm9qZW5yYyBmaWxlIChgLnByb2plbnJjLnRzYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBwam5ldyB0cnVlXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY1RzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgLnByb2plbnJjLnRzXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY1RzT3B0aW9ucz86IFByb2plbnJjVHNPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0cy1qZXN0XG4gICAqL1xuICByZWFkb25seSB0c0plc3RPcHRpb25zPzogVHNKZXN0T3B0aW9ucztcbn1cblxuLyoqXG4gKiBUeXBlU2NyaXB0IHByb2plY3RcbiAqIEBwamlkIHR5cGVzY3JpcHRcbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRQcm9qZWN0IGV4dGVuZHMgTm9kZVByb2plY3Qge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfVFNfSkVTVF9UUkFORk9STV9QQVRURVJOID0gXCJeLitcXFxcLlt0XXN4PyRcIjtcblxuICBwdWJsaWMgcmVhZG9ubHkgZG9jZ2VuPzogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IGRvY3NEaXJlY3Rvcnk6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGVzbGludD86IEVzbGludDtcbiAgcHVibGljIHJlYWRvbmx5IHRzY29uZmlnRXNsaW50PzogVHlwZXNjcmlwdENvbmZpZztcbiAgcHVibGljIHJlYWRvbmx5IHRzY29uZmlnPzogVHlwZXNjcmlwdENvbmZpZztcblxuICAvKipcbiAgICogQSB0eXBlc2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZSB3aGljaCBjb3ZlcnMgYWxsIGZpbGVzIChzb3VyY2VzLCB0ZXN0cywgcHJvamVuKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0c2NvbmZpZ0RldjogVHlwZXNjcmlwdENvbmZpZztcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgLnRzIHNvdXJjZXMgcmVzaWRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIGNvbXBpbGVkIC5qcyBmaWxlcyByZXNpZGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGliZGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGVzdHMgcmVzaWRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRlc3RkaXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFwid2F0Y2hcIiB0YXNrLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHdhdGNoVGFzazogVGFzaztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRpb25zLFxuXG4gICAgICAvLyBkaXNhYmxlIC5wcm9qZW5yYy5qcyBpZiB0eXBlc2NyaXB0IGlzIGVuYWJsZWRcbiAgICAgIHByb2plbnJjSnM6IG9wdGlvbnMucHJvamVucmNUcyA/IGZhbHNlIDogb3B0aW9ucy5wcm9qZW5yY0pzLFxuXG4gICAgICBqZXN0T3B0aW9uczoge1xuICAgICAgICAuLi5vcHRpb25zLmplc3RPcHRpb25zLFxuICAgICAgICBqZXN0Q29uZmlnOiB7XG4gICAgICAgICAgLi4ub3B0aW9ucy5qZXN0T3B0aW9ucz8uamVzdENvbmZpZyxcbiAgICAgICAgICB0ZXN0TWF0Y2g6IG9wdGlvbnMuamVzdE9wdGlvbnM/Lmplc3RDb25maWc/LnRlc3RNYXRjaCA/PyBbXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnNyY2RpciA9IG9wdGlvbnMuc3JjZGlyID8/IFwic3JjXCI7XG4gICAgdGhpcy5saWJkaXIgPSBvcHRpb25zLmxpYmRpciA/PyBcImxpYlwiO1xuXG4gICAgdGhpcy5kb2NnZW4gPSBvcHRpb25zLmRvY2dlbjtcbiAgICB0aGlzLmRvY3NEaXJlY3RvcnkgPSBvcHRpb25zLmRvY3NEaXJlY3RvcnkgPz8gXCJkb2NzL1wiO1xuXG4gICAgY29uc3QgdHNjb25maWdGaWxlbmFtZSA9IG9wdGlvbnMudHNjb25maWc/LmZpbGVOYW1lO1xuICAgIHRoaXMuY29tcGlsZVRhc2suZXhlYyhcbiAgICAgIFtcInRzY1wiLCBcIi0tYnVpbGRcIiwgdHNjb25maWdGaWxlbmFtZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpXG4gICAgKTtcblxuICAgIHRoaXMud2F0Y2hUYXNrID0gdGhpcy5hZGRUYXNrKFwid2F0Y2hcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiV2F0Y2ggJiBjb21waWxlIGluIHRoZSBiYWNrZ3JvdW5kXCIsXG4gICAgICBleGVjOiBbXCJ0c2NcIiwgXCItLWJ1aWxkXCIsIFwiLXdcIiwgdHNjb25maWdGaWxlbmFtZV1cbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAuam9pbihcIiBcIiksXG4gICAgfSk7XG5cbiAgICB0aGlzLnRlc3RkaXIgPSBvcHRpb25zLnRlc3RkaXIgPz8gXCJ0ZXN0XCI7XG4gICAgdGhpcy5naXRpZ25vcmUuaW5jbHVkZShgLyR7dGhpcy50ZXN0ZGlyfS9gKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShgLyR7dGhpcy50ZXN0ZGlyfS9gKTtcblxuICAgIC8vIGlmIHRoZSB0ZXN0IGRpcmVjdG9yeSBpcyB1bmRlciBgc3JjL2AsIHRoZW4gd2Ugd2lsbCBydW4gb3VyIHRlc3RzIGFnYWluc3RcbiAgICAvLyB0aGUgamF2YXNjcmlwdCBmaWxlcyBhbmQgbm90IGxldCBqZXN0IGNvbXBpbGUgaXQgZm9yIHVzLlxuICAgIGNvbnN0IGNvbXBpbGVkVGVzdHMgPSB0aGlzLnRlc3RkaXIuc3RhcnRzV2l0aCh0aGlzLnNyY2RpciArIHBhdGgucG9zaXguc2VwKTtcblxuICAgIGlmIChvcHRpb25zLmVudHJ5cG9pbnRUeXBlcyB8fCB0aGlzLmVudHJ5cG9pbnQgIT09IFwiXCIpIHtcbiAgICAgIGNvbnN0IGVudHJ5cG9pbnRQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICBwYXRoLmRpcm5hbWUodGhpcy5lbnRyeXBvaW50KSxcbiAgICAgICAgcGF0aC5iYXNlbmFtZSh0aGlzLmVudHJ5cG9pbnQsIFwiLmpzXCIpXG4gICAgICApO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQZXJzaXN0ZWRQYXRoKGVudHJ5cG9pbnRQYXRoKTtcbiAgICAgIGNvbnN0IGVudHJ5cG9pbnRUeXBlcyA9XG4gICAgICAgIG9wdGlvbnMuZW50cnlwb2ludFR5cGVzID8/IGAke25vcm1hbGl6ZWRQYXRofS5kLnRzYDtcbiAgICAgIHRoaXMucGFja2FnZS5hZGRGaWVsZChcInR5cGVzXCIsIGVudHJ5cG9pbnRUeXBlcyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGlsZXJPcHRpb25EZWZhdWx0czogVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucyA9IHtcbiAgICAgIGFsd2F5c1N0cmljdDogdHJ1ZSxcbiAgICAgIGRlY2xhcmF0aW9uOiB0cnVlLFxuICAgICAgZXNNb2R1bGVJbnRlcm9wOiB0cnVlLFxuICAgICAgZXhwZXJpbWVudGFsRGVjb3JhdG9yczogdHJ1ZSxcbiAgICAgIGlubGluZVNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgIGlubGluZVNvdXJjZXM6IHRydWUsXG4gICAgICBsaWI6IFtcImVzMjAxOVwiXSxcbiAgICAgIG1vZHVsZTogXCJDb21tb25KU1wiLFxuICAgICAgbm9FbWl0T25FcnJvcjogZmFsc2UsXG4gICAgICBub0ZhbGx0aHJvdWdoQ2FzZXNJblN3aXRjaDogdHJ1ZSxcbiAgICAgIG5vSW1wbGljaXRBbnk6IHRydWUsXG4gICAgICBub0ltcGxpY2l0UmV0dXJuczogdHJ1ZSxcbiAgICAgIG5vSW1wbGljaXRUaGlzOiB0cnVlLFxuICAgICAgbm9VbnVzZWRMb2NhbHM6IHRydWUsXG4gICAgICBub1VudXNlZFBhcmFtZXRlcnM6IHRydWUsXG4gICAgICByZXNvbHZlSnNvbk1vZHVsZTogdHJ1ZSxcbiAgICAgIHN0cmljdDogdHJ1ZSxcbiAgICAgIHN0cmljdE51bGxDaGVja3M6IHRydWUsXG4gICAgICBzdHJpY3RQcm9wZXJ0eUluaXRpYWxpemF0aW9uOiB0cnVlLFxuICAgICAgc3RyaXBJbnRlcm5hbDogdHJ1ZSxcbiAgICAgIHRhcmdldDogXCJFUzIwMTlcIixcbiAgICB9O1xuXG4gICAgaWYgKG9wdGlvbnMuZGlzYWJsZVRzY29uZmlnRGV2ICYmIG9wdGlvbnMuZGlzYWJsZVRzY29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQ2Fubm90IHNwZWNpZnkgYm90aCAnZGlzYWJsZVRzY29uZmlnRGV2JyBhbmQgJ2Rpc2FibGVUc2NvbmZpZycgZmllbGRzLlwiXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5kaXNhYmxlVHNjb25maWcpIHtcbiAgICAgIHRoaXMudHNjb25maWcgPSBuZXcgVHlwZXNjcmlwdENvbmZpZyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgbWVyZ2VUc2NvbmZpZ09wdGlvbnMoXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5jbHVkZTogW2Ake3RoaXMuc3JjZGlyfS8qKi8qLnRzYF0sXG4gICAgICAgICAgICAvLyBleGNsdWRlOiBbJ25vZGVfbW9kdWxlcyddLCAvLyBUT0RPOiBzaG91bGRuJ3Qgd2UgZXhjbHVkZSBub2RlX21vZHVsZXM/XG4gICAgICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgcm9vdERpcjogdGhpcy5zcmNkaXIsXG4gICAgICAgICAgICAgIG91dERpcjogdGhpcy5saWJkaXIsXG4gICAgICAgICAgICAgIC4uLmNvbXBpbGVyT3B0aW9uRGVmYXVsdHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3B0aW9ucy50c2NvbmZpZ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRpc2FibGVUc2NvbmZpZ0Rldikge1xuICAgICAgdGhpcy50c2NvbmZpZ0RldiA9IHRoaXMudHNjb25maWchO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0c2NvbmZpZ0RldkZpbGUgPSBvcHRpb25zLnRzY29uZmlnRGV2RmlsZSA/PyBcInRzY29uZmlnLmRldi5qc29uXCI7XG4gICAgICB0aGlzLnRzY29uZmlnRGV2ID0gbmV3IFR5cGVzY3JpcHRDb25maWcoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIG1lcmdlVHNjb25maWdPcHRpb25zKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpbGVOYW1lOiB0c2NvbmZpZ0RldkZpbGUsXG4gICAgICAgICAgICBpbmNsdWRlOiBbYCR7dGhpcy5zcmNkaXJ9LyoqLyoudHNgLCBgJHt0aGlzLnRlc3RkaXJ9LyoqLyoudHNgXSxcblxuICAgICAgICAgICAgZXhjbHVkZTogW1wibm9kZV9tb2R1bGVzXCJdLFxuICAgICAgICAgICAgY29tcGlsZXJPcHRpb25zOiBjb21waWxlck9wdGlvbkRlZmF1bHRzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3B0aW9ucy50c2NvbmZpZyxcbiAgICAgICAgICBvcHRpb25zLnRzY29uZmlnRGV2XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5naXRpZ25vcmUuaW5jbHVkZShgLyR7dGhpcy5zcmNkaXJ9L2ApO1xuICAgIHRoaXMubnBtaWdub3JlPy5leGNsdWRlKGAvJHt0aGlzLnNyY2Rpcn0vYCk7XG5cbiAgICBpZiAodGhpcy5zcmNkaXIgIT09IHRoaXMubGliZGlyKSB7XG4gICAgICAvLyBzZXBhcmF0ZWQsIGNhbiBpZ25vcmUgdGhlIGVudGlyZSBsaWJkaXJcbiAgICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoYC8ke3RoaXMubGliZGlyfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjb2xsb2NhdGVkLCBjYW4gb25seSBpZ25vcmUgdGhlIGNvbXBpbGVkIG91dHB1dFxuICAgICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZShgLyR7dGhpcy5saWJkaXJ9LyoqLyouanNgKTtcbiAgICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoYC8ke3RoaXMubGliZGlyfS8qKi8qLmQudHNgKTtcbiAgICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoYC8ke3RoaXMubGliZGlyfS8qKi8qLmQudHMubWFwYCk7XG4gICAgfVxuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmluY2x1ZGUoYC8ke3RoaXMubGliZGlyfS9gKTtcblxuICAgIHRoaXMubnBtaWdub3JlPy5pbmNsdWRlKGAvJHt0aGlzLmxpYmRpcn0vKiovKi5qc2ApO1xuICAgIHRoaXMubnBtaWdub3JlPy5pbmNsdWRlKGAvJHt0aGlzLmxpYmRpcn0vKiovKi5kLnRzYCk7XG5cbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKFwiL2Rpc3QvXCIpO1xuICAgIHRoaXMubnBtaWdub3JlPy5leGNsdWRlKFwiZGlzdFwiKTsgLy8ganNpaS1wYWNtYWsgZXhwZWN0cyB0aGlzIHRvIGJlIFwiZGlzdFwiIGFuZCBub3QgXCIvZGlzdFwiLiBvdGhlcndpc2UgaXQgd2lsbCB0YW1wZXIgd2l0aCBpdFxuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoXCIvdHNjb25maWcuanNvblwiKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShcIi8uZ2l0aHViL1wiKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShcIi8udnNjb2RlL1wiKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShcIi8uaWRlYS9cIik7XG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoXCIvLnByb2plbnJjLmpzXCIpO1xuICAgIHRoaXMubnBtaWdub3JlPy5leGNsdWRlKFwidHNjb25maWcudHNidWlsZGluZm9cIik7XG5cbiAgICBpZiAodGhpcy5qZXN0KSB7XG4gICAgICBpZiAoY29tcGlsZWRUZXN0cykge1xuICAgICAgICB0aGlzLmFkZEplc3RDb21waWxlZCh0aGlzLmplc3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZGRKZXN0Tm9Db21waWxlKHRoaXMuamVzdCwgb3B0aW9ucz8udHNKZXN0T3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZXNsaW50ID8/IHRydWUpIHtcbiAgICAgIHRoaXMuZXNsaW50ID0gbmV3IEVzbGludCh0aGlzLCB7XG4gICAgICAgIHRzY29uZmlnUGF0aDogYC4vJHt0aGlzLnRzY29uZmlnRGV2LmZpbGVOYW1lfWAsXG4gICAgICAgIGRpcnM6IFt0aGlzLnNyY2Rpcl0sXG4gICAgICAgIGRldmRpcnM6IFt0aGlzLnRlc3RkaXIsIFwiYnVpbGQtdG9vbHNcIl0sXG4gICAgICAgIGZpbGVFeHRlbnNpb25zOiBbXCIudHNcIiwgXCIudHN4XCJdLFxuICAgICAgICBsaW50UHJvamVuUmM6IGZhbHNlLFxuICAgICAgICAuLi5vcHRpb25zLmVzbGludE9wdGlvbnMsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy50c2NvbmZpZ0VzbGludCA9IHRoaXMudHNjb25maWdEZXY7XG4gICAgfVxuXG4gICAgLy8gd2hlbiB0aGlzIGlzIGEgcm9vdCBwcm9qZWN0XG4gICAgaWYgKCF0aGlzLnBhcmVudCkge1xuICAgICAgaWYgKG9wdGlvbnMucHJvamVucmNUcykge1xuICAgICAgICBuZXcgUHJvamVucmNUcyh0aGlzLCBvcHRpb25zLnByb2plbnJjVHNPcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHByb2plbnJjLmpzIGNyZWF0ZWQgaW4gTm9kZVByb2plY3QgbmVlZHMgdG8gYmUgYWRkZWQgaW4gdHNjb25maWdEZXZcbiAgICAgICAgY29uc3QgcHJvamVucmNKcyA9IE5vZGVQcm9qZWN0UHJvamVucmMub2YodGhpcyk7XG4gICAgICAgIGlmIChwcm9qZW5yY0pzKSB7XG4gICAgICAgICAgdGhpcy50c2NvbmZpZ0Rldi5hZGRJbmNsdWRlKHByb2plbnJjSnMuZmlsZVBhdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdHN2ZXIgPSBvcHRpb25zLnR5cGVzY3JpcHRWZXJzaW9uXG4gICAgICA/IGBAJHtvcHRpb25zLnR5cGVzY3JpcHRWZXJzaW9ufWBcbiAgICAgIDogXCJcIjtcblxuICAgIHRoaXMuYWRkRGV2RGVwcyhcbiAgICAgIGB0eXBlc2NyaXB0JHt0c3Zlcn1gLFxuICAgICAgLy8gQHR5cGVzL25vZGUgdmVyc2lvbnMgbnVtYmVycyBtYXRjaCB0aGUgbm9kZSBydW50aW1lIHZlcnNpb25zJyBtYWpvci5taW5vciwgaG93ZXZlciwgbmV3XG4gICAgICAvLyByZWxlYXNlcyBhcmUgb25seSBjcmVhdGVkIHdoZW4gQVBJIGNoYW5nZXMgYXJlIGluY2x1ZGVkIGluIGEgbm9kZSByZWxlYXNlLi4uIFdlIG1pZ2h0IGZvclxuICAgICAgLy8gZXhhbXBsZSBoYXZlIGRlcGVuZGVuY2llcyB0aGF0IHJlcXVpcmUgYG5vZGUgPj0gMTIuMjJgLCBidXQgYXMgMTIuMjEgYW5kIDEyLjIyIGRpZCBub3RcbiAgICAgIC8vIGluY2x1ZGUgQVBJIGNoYW5nZXMsIGBAdHlwZXMvbm9kZUAxMi4yMC54YCBpcyB0aGUgXCJjb3JyZWN0XCIgdmVyc2lvbiB0byB1c2UuIEFzIGl0IGlzIG5vdFxuICAgICAgLy8gcG9zc2libGUgdG8gZWFzaWx5IGRldGVybWluZSB0aGUgY29ycmVjdCB2ZXJzaW9uIHRvIHVzZSwgd2UgcGljayB1cCB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICAvL1xuICAgICAgLy8gQWRkaXRpb25hbGx5LCB3ZSBkZWZhdWx0IHRvIHRyYWNraW5nIHRoZSAxOC54IGxpbmUsIGFzIHRoZSBjdXJyZW50IGVhcmxpZXN0IExUUyByZWxlYXNlIG9mXG4gICAgICAvLyBub2RlIGlzIDE4LngsIHNvIHRoaXMgaXMgd2hhdCBjb3JyZXNwb25kcyB0byB0aGUgYnJvYWRlc3QgY29tcGF0aWJpbGl0eSB3aXRoIHN1cHBvcnRlZCBub2RlXG4gICAgICAvLyBydW50aW1lcy5cbiAgICAgIGBAdHlwZXMvbm9kZUBeJHtzZW12ZXIubWFqb3IodGhpcy5wYWNrYWdlLm1pbk5vZGVWZXJzaW9uID8/IFwiMTguMC4wXCIpfWBcbiAgICApO1xuXG4gICAgLy8gZ2VuZXJhdGUgc2FtcGxlIGNvZGUgaW4gYHNyY2AgYW5kIGBsaWJgIGlmIHRoZXNlIGRpcmVjdG9yaWVzIGFyZSBlbXB0eSBvciBub24tZXhpc3RlbnQuXG4gICAgaWYgKG9wdGlvbnMuc2FtcGxlQ29kZSA/PyB0cnVlKSB7XG4gICAgICBuZXcgU2FtcGxlQ29kZSh0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kb2NnZW4pIHtcbiAgICAgIG5ldyBUeXBlZG9jRG9jZ2VuKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0cyBhcmUgY29tcGlsZWQgdG8gYGxpYi9URVNURElSYCwgc28gd2UgZG9uJ3QgbmVlZCBqZXN0IHRvIGNvbXBpbGUgdGhlbVxuICAgKiBmb3IgdXMuIGp1c3QgcnVuIHRoZW0gZGlyZWN0bHkgZnJvbSBqYXZhc2NyaXB0LlxuICAgKi9cbiAgcHJpdmF0ZSBhZGRKZXN0Q29tcGlsZWQoamVzdDogSmVzdCkge1xuICAgIHRoaXMuYWRkRGV2RGVwcyhgQHR5cGVzL2plc3Qke2plc3QuamVzdFZlcnNpb259YCk7XG5cbiAgICBjb25zdCB0ZXN0b3V0ID0gcGF0aC5wb3NpeC5yZWxhdGl2ZSh0aGlzLnNyY2RpciwgdGhpcy50ZXN0ZGlyKTtcbiAgICBjb25zdCBsaWJ0ZXN0ID0gcGF0aC5wb3NpeC5qb2luKHRoaXMubGliZGlyLCB0ZXN0b3V0KTtcbiAgICBjb25zdCBzcmN0ZXN0ID0gdGhpcy50ZXN0ZGlyO1xuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoYC8ke2xpYnRlc3R9L2ApO1xuICAgIGplc3QuZGlzY292ZXJUZXN0TWF0Y2hQYXR0ZXJuc0ZvckRpcnMoW2xpYnRlc3RdLCB7XG4gICAgICBmaWxlRXh0ZW5zaW9uUGF0dGVybjogdGhpcy50c2NvbmZpZz8uY29tcGlsZXJPcHRpb25zPy5hbGxvd0pzXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogXCJ0cz8oeClcIixcbiAgICB9KTtcbiAgICBqZXN0LmFkZFdhdGNoSWdub3JlUGF0dGVybihgLyR7dGhpcy5zcmNkaXJ9L2ApO1xuXG4gICAgY29uc3QgcmVzb2x2ZVNuYXBzaG90UGF0aCA9ICh0ZXN0OiBzdHJpbmcsIGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBmdWxscGF0aCA9IHRlc3QucmVwbGFjZShsaWJ0ZXN0LCBzcmN0ZXN0KTtcbiAgICAgIHJldHVybiBwYXRoLmpvaW4oXG4gICAgICAgIHBhdGguZGlybmFtZShmdWxscGF0aCksXG4gICAgICAgIFwiX19zbmFwc2hvdHNfX1wiLFxuICAgICAgICBwYXRoLmJhc2VuYW1lKGZ1bGxwYXRoLCBcIi5qc1wiKSArIFwiLnRzXCIgKyBleHRcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc29sdmVUZXN0UGF0aCA9IChzbmFwOiBzdHJpbmcsIGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBmaWxlbmFtZSA9IHBhdGguYmFzZW5hbWUoc25hcCwgXCIudHNcIiArIGV4dCkgKyBcIi5qc1wiO1xuICAgICAgY29uc3QgZGlyID0gcGF0aC5kaXJuYW1lKHBhdGguZGlybmFtZShzbmFwKSkucmVwbGFjZShzcmN0ZXN0LCBsaWJ0ZXN0KTtcbiAgICAgIHJldHVybiBwYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc29sdmVyID0gbmV3IFRleHRGaWxlKFxuICAgICAgdGhpcyxcbiAgICAgIHBhdGgucG9zaXguam9pbihQUk9KRU5fRElSLCBcImplc3Qtc25hcHNob3QtcmVzb2x2ZXIuanNcIilcbiAgICApO1xuICAgIGlmICghcmVzb2x2ZXIubWFya2VyKSB7XG4gICAgICByZXNvbHZlci5hZGRMaW5lKGAvLyAke3Jlc29sdmVyLm1hcmtlcn1gKTtcbiAgICB9XG4gICAgcmVzb2x2ZXIuYWRkTGluZSgnY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpOycpO1xuICAgIHJlc29sdmVyLmFkZExpbmUoYGNvbnN0IGxpYnRlc3QgPSBcIiR7bGlidGVzdH1cIjtgKTtcbiAgICByZXNvbHZlci5hZGRMaW5lKGBjb25zdCBzcmN0ZXN0PSBcIiR7c3JjdGVzdH1cIjtgKTtcbiAgICByZXNvbHZlci5hZGRMaW5lKFwibW9kdWxlLmV4cG9ydHMgPSB7XCIpO1xuICAgIHJlc29sdmVyLmFkZExpbmUoXG4gICAgICBgICByZXNvbHZlU25hcHNob3RQYXRoOiAke3Jlc29sdmVTbmFwc2hvdFBhdGgudG9TdHJpbmcoKX0sYFxuICAgICk7XG4gICAgcmVzb2x2ZXIuYWRkTGluZShgICByZXNvbHZlVGVzdFBhdGg6ICR7cmVzb2x2ZVRlc3RQYXRoLnRvU3RyaW5nKCl9LGApO1xuICAgIHJlc29sdmVyLmFkZExpbmUoXG4gICAgICBcIiAgdGVzdFBhdGhGb3JDb25zaXN0ZW5jeUNoZWNrOiBwYXRoLmpvaW4oJ3NvbWUnLCAnX190ZXN0c19fJywgJ2V4YW1wbGUudGVzdC5qcycpXCJcbiAgICApO1xuICAgIHJlc29sdmVyLmFkZExpbmUoXCJ9O1wiKTtcblxuICAgIGplc3QuYWRkU25hcHNob3RSZXNvbHZlcihgLi8ke3Jlc29sdmVyLnBhdGh9YCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEplc3ROb0NvbXBpbGUoXG4gICAgamVzdDogSmVzdCxcbiAgICB0c0plc3RPcHRpb25zOiBUc0plc3RPcHRpb25zIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHRoaXMuYWRkRGV2RGVwcyhcbiAgICAgIGBAdHlwZXMvamVzdCR7amVzdC5qZXN0VmVyc2lvbn1gLFxuICAgICAgYHRzLWplc3Qke2plc3QuamVzdFZlcnNpb259YFxuICAgICk7XG5cbiAgICBqZXN0LmRpc2NvdmVyVGVzdE1hdGNoUGF0dGVybnNGb3JEaXJzKFt0aGlzLnNyY2RpciwgdGhpcy50ZXN0ZGlyXSwge1xuICAgICAgZmlsZUV4dGVuc2lvblBhdHRlcm46IHRoaXMudHNjb25maWc/LmNvbXBpbGVyT3B0aW9ucz8uYWxsb3dKc1xuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IFwidHM/KHgpXCIsXG4gICAgfSk7XG5cbiAgICAvLyBUZXN0IGZvciB0aGUgdHMtamVzdCB2ZXJzaW9uIHRoYXQgd2FzIHJlcXVlc3RlZDtcbiAgICAvL1xuICAgIC8vIC0gRmlyc3QsIGNoZWNrIHRoZSBgamVzdGAgdmVyc2lvbiB0aGF0IGlzIHJlcXVlc3RlZCB2aWEgcHJvamVuIHByb3BlcnRpZXMuIFRoaXNcbiAgICAvLyAgIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgYHRzLWplc3RgIHZlcnNpb24gYW55d2F5LlxuICAgIC8vIC0gSWYgbm9uZSBmb3VuZCwgZmFsbCBiYWNrIHRvIGluc3BlY3RpbmcgdGhlIGFjdHVhbCBgdHMtamVzdGAgdmVyc2lvblxuICAgIC8vICAgdGhhdCBoYXBwZW5zIHRvIGJlIGluc3RhbGxlZC5cbiAgICBsZXQgaGFzVHNKZXN0Mjk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgaWYgKGplc3QuamVzdFZlcnNpb24pIHtcbiAgICAgIC8vIFdlIGNvdWxkIG1heWJlIHJlcGxhY2UgdGhpcyB3aWxsIGZ1bGwgXCJhY3R1YWwgdmVyc2lvblwiIGNoZWNraW5nLCBidXRcbiAgICAgIC8vIHRoZSB0ZXN0cyBkZXBlbmQgb24gdGhpcyBhbmQgdGhlIHJlYWRpbmcgb2YgJ3BhY2thZ2UuanNvbicgaXMgdmVyeVxuICAgICAgLy8gYXdrd2FyZCB0byB0ZXN0LlxuICAgICAgLy8gTm90ZSB0aGF0IHdlIHVzZSB0aGUgcmVxdWVzdGVkIHZlcnNpb24gb2YgYGplc3RgIGFzIGEgcHJveHkgZm9yIHRoZVxuICAgICAgLy8gdmVyc2lvbiBvZiBgdHMtamVzdGAsIHdoaWNoIGlzIHdoYXQgd2UncmUgYWN0dWFsbHkgaW50ZXJlc3RlZCBpbi5cbiAgICAgIGNvbnN0IG1ham9yID0gc2VtdmVyLmNvZXJjZShqZXN0Lmplc3RWZXJzaW9uKT8ubWFqb3I7XG4gICAgICBoYXNUc0plc3QyOSA9IG1ham9yID8gbWFqb3IgPj0gMjkgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChoYXNUc0plc3QyOSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNUc0plc3QyOSA9IGhhc0RlcGVuZGVuY3lWZXJzaW9uKHRoaXMsIFwidHMtamVzdFwiLCBcIj49IDI5XCIpO1xuICAgIH1cblxuICAgIC8vIGFkZCByZWxldmFudCBkZXBzICh3ZSB0cmVhdCBcInVua25vd25cIiBhcyBoYXZpbmcgYSBtb2Rlcm4gdHMtamVzdClcbiAgICBpZiAoaGFzVHNKZXN0MjkgIT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRKZXN0Tm9Db21waWxlTW9kZXJuKGplc3QsIHRzSmVzdE9wdGlvbnMpO1xuICAgIH1cbiAgICB0aGlzLmFkZEplc3ROb0NvbXBpbGVMZWdhY3koamVzdCwgdHNKZXN0T3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGFkZEplc3ROb0NvbXBpbGVNb2Rlcm4oXG4gICAgamVzdDogSmVzdCxcbiAgICB0c0plc3RPcHRpb25zOiBUc0plc3RPcHRpb25zIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIGplc3QuY29uZmlnLnRyYW5zZm9ybSA9IGRlZXBNZXJnZShbXG4gICAgICB7XG4gICAgICAgIFt0c0plc3RPcHRpb25zPy50cmFuc2Zvcm1QYXR0ZXJuID8/XG4gICAgICAgIFR5cGVTY3JpcHRQcm9qZWN0LkRFRkFVTFRfVFNfSkVTVF9UUkFORk9STV9QQVRURVJOXTogbmV3IFRyYW5zZm9ybShcbiAgICAgICAgICBcInRzLWplc3RcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0c2NvbmZpZzogVHNKZXN0VHNjb25maWcuZnJvbUZpbGUodGhpcy50c2NvbmZpZ0Rldi5maWxlTmFtZSksXG4gICAgICAgICAgICAuLi4odHNKZXN0T3B0aW9ucz8udHJhbnNmb3JtT3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIGplc3QuY29uZmlnLnRyYW5zZm9ybSxcbiAgICBdKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSmVzdE5vQ29tcGlsZUxlZ2FjeShcbiAgICBqZXN0OiBKZXN0LFxuICAgIHRzSmVzdE9wdGlvbnM6IFRzSmVzdE9wdGlvbnMgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgaWYgKHRzSmVzdE9wdGlvbnMpIHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oXG4gICAgICAgIFwiWW91IGFyZSB1c2luZyBhIGxlZ2FjeSB2ZXJzaW9uICg8MjkpIG9mIGplc3QgYW5kIHRzLWplc3QgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRzSmVzdE9wdGlvbnMsIHRoZXkgd2lsbCBiZSBpZ25vcmVkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWplc3QuY29uZmlnLnByZXNldCkge1xuICAgICAgamVzdC5jb25maWcucHJlc2V0ID0gXCJ0cy1qZXN0XCI7XG4gICAgfVxuICAgIGplc3QuY29uZmlnLmdsb2JhbHMgPSBkZWVwTWVyZ2UoW1xuICAgICAge1xuICAgICAgICBcInRzLWplc3RcIjoge1xuICAgICAgICAgIHRzY29uZmlnOiB0aGlzLnRzY29uZmlnRGV2LmZpbGVOYW1lLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGplc3QuY29uZmlnLmdsb2JhbHMsXG4gICAgXSk7XG4gIH1cbn1cblxuY2xhc3MgU2FtcGxlQ29kZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgY29uc3Qgc3JjQ29kZSA9IFtcbiAgICAgIFwiZXhwb3J0IGNsYXNzIEhlbGxvIHtcIixcbiAgICAgIFwiICBwdWJsaWMgc2F5SGVsbG8oKSB7XCIsXG4gICAgICBcIiAgICByZXR1cm4gJ2hlbGxvLCB3b3JsZCEnO1wiLFxuICAgICAgXCIgIH1cIixcbiAgICAgIFwifVwiLFxuICAgIF0uam9pbihcIlxcblwiKTtcblxuICAgIGNvbnN0IHRlc3RDb2RlID0gW1xuICAgICAgXCJpbXBvcnQgeyBIZWxsbyB9IGZyb20gJy4uL3NyYyc7XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJ0ZXN0KCdoZWxsbycsICgpID0+IHtcIixcbiAgICAgIFwiICBleHBlY3QobmV3IEhlbGxvKCkuc2F5SGVsbG8oKSkudG9CZSgnaGVsbG8sIHdvcmxkIScpO1wiLFxuICAgICAgXCJ9KTtcIixcbiAgICBdLmpvaW4oXCJcXG5cIik7XG5cbiAgICBuZXcgU2FtcGxlRGlyKHByb2plY3QsIHByb2plY3Quc3JjZGlyLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICBcImluZGV4LnRzXCI6IHNyY0NvZGUsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHByb2plY3QuamVzdCkge1xuICAgICAgbmV3IFNhbXBsZURpcihwcm9qZWN0LCBwcm9qZWN0LnRlc3RkaXIsIHtcbiAgICAgICAgZmlsZXM6IHtcbiAgICAgICAgICBcImhlbGxvLnRlc3QudHNcIjogdGVzdENvZGUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBUeXBlU2NyaXB0IGFwcC5cbiAqXG4gKiBAcGppZCB0eXBlc2NyaXB0LWFwcFxuICovXG5leHBvcnQgY2xhc3MgVHlwZVNjcmlwdEFwcFByb2plY3QgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIGFsbG93TGlicmFyeURlcGVuZGVuY2llczogZmFsc2UsXG4gICAgICByZWxlYXNlV29ya2Zsb3c6IGZhbHNlLFxuICAgICAgZW50cnlwb2ludDogXCJcIiwgLy8gXCJtYWluXCIgaXMgbm90IG5lZWRlZCBpbiB0eXBlc2NyaXB0IGFwcHNcbiAgICAgIHBhY2thZ2U6IGZhbHNlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSBgVHlwZVNjcmlwdFByb2plY3RgXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0TGlicmFyeVByb2plY3QgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdCB7fVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlU2NyaXB0TGlicmFyeVByb2plY3RPcHRpb25zXG4gIGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIHt9XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVRzY29uZmlnT3B0aW9ucyhcbiAgLi4ub3B0aW9uczogKFR5cGVzY3JpcHRDb25maWdPcHRpb25zIHwgdW5kZWZpbmVkKVtdXG4pOiBUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucyB7XG4gIGNvbnN0IGRlZmluZWRPcHRpb25zID0gb3B0aW9ucy5maWx0ZXIoQm9vbGVhbikgYXMgVHlwZXNjcmlwdENvbmZpZ09wdGlvbnNbXTtcbiAgcmV0dXJuIGRlZmluZWRPcHRpb25zLnJlZHVjZTxUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucz4oXG4gICAgKHByZXZpb3VzLCBjdXJyZW50KSA9PiAoe1xuICAgICAgLi4ucHJldmlvdXMsXG4gICAgICAuLi5jdXJyZW50LFxuICAgICAgaW5jbHVkZTogWy4uLihwcmV2aW91cy5pbmNsdWRlID8/IFtdKSwgLi4uKGN1cnJlbnQuaW5jbHVkZSA/PyBbXSldLFxuICAgICAgZXhjbHVkZTogWy4uLihwcmV2aW91cy5leGNsdWRlID8/IFtdKSwgLi4uKGN1cnJlbnQuZXhjbHVkZSA/PyBbXSldLFxuICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgIC4uLnByZXZpb3VzLmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgLi4uY3VycmVudC5jb21waWxlck9wdGlvbnMsXG4gICAgICB9LFxuICAgIH0pLFxuICAgIHsgY29tcGlsZXJPcHRpb25zOiB7fSB9XG4gICk7XG59XG4iXX0=
494
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlc2NyaXB0L3R5cGVzY3JpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsaUNBQWlDO0FBQ2pDLHNDQUF1QztBQUN2Qyw0Q0FBeUM7QUFDekMsOENBV3VCO0FBQ3ZCLDZDQUEwRDtBQUMxRCxnREFBMkM7QUFFM0MsMENBQXVDO0FBQ3ZDLDhDQUl1QjtBQUN2QixrQ0FBNEQ7QUFFNUQ7O0dBRUc7QUFDSCxNQUFhLGlCQUFpQjtJQUM1Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxRQUFRO1FBQ3BCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0I7UUFDNUIsT0FBTyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFnQjtRQUNyQyxPQUFPLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBMkI7UUFDOUMsT0FBTyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxZQUNtQixNQUE4QztRQUE5QyxXQUFNLEdBQU4sTUFBTSxDQUF3QztJQUM5RCxDQUFDO0lBRUo7OztPQUdHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDOztBQTVDSCw4Q0E2Q0M7OztBQUVEOztHQUVHO0FBQ0gsTUFBYSxpQkFBaUI7SUFDNUI7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBRztRQUNmLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxD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ZUFBZTtZQUMzQixHQUFHLE9BQU8sQ0FBQyxlQUFlO1NBQzNCO0tBQ0YsQ0FBQyxFQUNGLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxDQUN4QixDQUFDO0FBQ0osQ0FBQztBQWpCRCxvREFpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSBcInNlbXZlclwiO1xuaW1wb3J0IHsgUFJPSkVOX0RJUiB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7XG4gIEVzbGludCxcbiAgRXNsaW50T3B0aW9ucyxcbiAgSmVzdCxcbiAgTm9kZVByb2plY3QsXG4gIE5vZGVQcm9qZWN0T3B0aW9ucyxcbiAgUHJvamVucmMgYXMgTm9kZVByb2plY3RQcm9qZW5yYyxcbiAgVHJhbnNmb3JtLFxuICBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zLFxuICBUeXBlc2NyaXB0Q29uZmlnLFxuICBUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucyxcbn0gZnJvbSBcIi4uL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IGhhc0RlcGVuZGVuY3lWZXJzaW9uIH0gZnJvbSBcIi4uL2phdmFzY3JpcHQvdXRpbFwiO1xuaW1wb3J0IHsgU2FtcGxlRGlyIH0gZnJvbSBcIi4uL3NhbXBsZS1maWxlXCI7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSBcIi4uL3Rhc2tcIjtcbmltcG9ydCB7IFRleHRGaWxlIH0gZnJvbSBcIi4uL3RleHRmaWxlXCI7XG5pbXBvcnQge1xuICBQcm9qZW5yYyBhcyBQcm9qZW5yY1RzLFxuICBQcm9qZW5yY09wdGlvbnMgYXMgUHJvamVucmNUc09wdGlvbnMsXG4gIFR5cGVkb2NEb2NnZW4sXG59IGZyb20gXCIuLi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBkZWVwTWVyZ2UsIG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGggfSBmcm9tIFwiLi4vdXRpbFwiO1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9rdWxzaGVraGFyLmdpdGh1Yi5pby90cy1qZXN0L2RvY3MvZ2V0dGluZy1zdGFydGVkL29wdGlvbnMvYmFiZWxDb25maWcvXG4gKi9cbmV4cG9ydCBjbGFzcyBUc0plc3RCYWJlbENvbmZpZyB7XG4gIC8qKlxuICAgKiBEaXNhYmxlcyB0aGUgdXNlIG9mIEJhYmVsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRpc2FibGVkKCkge1xuICAgIHJldHVybiBuZXcgVHNKZXN0QmFiZWxDb25maWcoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgQmFiZWwgcHJvY2Vzc2luZ1xuICAgKlxuICAgKiBgdHMtamVzdGAgd2lsbCB0cnkgdG8gZmluZCBhbiBleGlzdGluZyBCYWJlbCBjb25maWd1cmF0aW9uIGFuZCBwYXNzIGl0IHRvIHRoZSBgYmFiZWwtamVzdGAgcHJvY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhdXRvRGV0ZWN0Q29uZmlnKCkge1xuICAgIHJldHVybiBuZXcgVHNKZXN0QmFiZWxDb25maWcodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUGF0aCB0byBhIGJhYmVscmMgZmlsZVxuICAgKlxuICAgKiBUaGUgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgd2hlcmUgeW91IHN0YXJ0IEplc3QgZnJvbS4gWW91IGNhbiBhbHNvIHVzZSBgPHJvb3REaXI+YCBpbiB0aGUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUZpbGUoZmlsZVBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgVHNKZXN0QmFiZWxDb25maWcoZmlsZVBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIElubGluZSBjb21waWxlciBvcHRpb25zXG4gICAqIEBzZWUgaHR0cHM6Ly9iYWJlbGpzLmlvL2RvY3Mvb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjdXN0b20oY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgcmV0dXJuIG5ldyBUc0plc3RCYWJlbENvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogYm9vbGVhbiB8IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBAanNpaSBpZ25vcmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgdG9KU09OKCk6IGJvb2xlYW4gfCBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWc7XG4gIH1cbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8va3Vsc2hla2hhci5naXRodWIuaW8vdHMtamVzdC9kb2NzL2dldHRpbmctc3RhcnRlZC9vcHRpb25zL2RpYWdub3N0aWNzL1xuICovXG5leHBvcnQgY2xhc3MgVHNKZXN0RGlhZ25vc3RpY3Mge1xuICAvKipcbiAgICogRW5hYmxlIGFsbCBkaWFnbm9zdGljcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWxsKCkge1xuICAgIHJldHVybiBuZXcgVHNKZXN0RGlhZ25vc3RpY3ModHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzYWJsZSBhbGwgZGlhZ25vc3RpY3MuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG5vbmUoKSB7XG4gICAgcmV0dXJuIG5ldyBUc0plc3REaWFnbm9zdGljcyhmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZSBhIGN1c3RvbSBkaWFnbm9zdGljcyBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8va3Vsc2hla2hhci5naXRodWIuaW8vdHMtamVzdC9kb2NzL2dldHRpbmctc3RhcnRlZC9vcHRpb25zL2RpYWdub3N0aWNzL1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjdXN0b20oY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgcmV0dXJuIG5ldyBUc0plc3REaWFnbm9zdGljcyhjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogYm9vbGVhbiB8IFJlY29yZDxzdHJpbmcsIGFueT4pIHt9XG5cbiAgLyoqXG4gICAqIEBqc2lpIGlnbm9yZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyB0b0pTT04oKTogYm9vbGVhbiB8IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZztcbiAgfVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9rdWxzaGVraGFyLmdpdGh1Yi5pby90cy1qZXN0L2RvY3MvZ2V0dGluZy1zdGFydGVkL29wdGlvbnMvdHNjb25maWcvXG4gKi9cbmV4cG9ydCBjbGFzcyBUc0plc3RUc2NvbmZpZyB7XG4gIC8qKlxuICAgKiBVc2VzIGB0c2NvbmZpZy5qc29uYCBpZiBmb3VuZCwgb3IgdGhlIGJ1aWx0LWluIGRlZmF1bHQgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhdXRvKCkge1xuICAgIHJldHVybiBuZXcgVHNKZXN0VHNjb25maWcodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogRm9yY2VgIHRzLWplc3RgIHRvIHVzZSBpdHMgYnVpbHQtaW4gZGVmYXVsdHMgZXZlbiBpZiB0aGVyZSBpcyBhIGB0c2NvbmZpZy5qc29uYCBpbiB5b3VyIHByb2plY3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJ1aWx0SW5EZWZhdWx0cygpIHtcbiAgICByZXR1cm4gbmV3IFRzSmVzdFRzY29uZmlnKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRoIHRvIGEgYHRzY29uZmlnYCBmaWxlXG4gICAqXG4gICAqIFRoZSBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB3aGVyZSB5b3Ugc3RhcnQgSmVzdCBmcm9tLiBZb3UgY2FuIGFsc28gdXNlIGA8cm9vdERpcj5gIGluIHRoZSBwYXRoIHRvIHN0YXJ0IGZyb20gdGhlIHByb2plY3Qgcm9vdCBkaXIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21GaWxlKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFRzSmVzdFRzY29uZmlnKGZpbGVQYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmxpbmUgY29tcGlsZXIgb3B0aW9uc1xuICAgKlxuICAgKiBAc2VlIFR5cGVzY3JpcHRDb25maWdPcHRpb25zXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGN1c3RvbShjb25maWc6IFR5cGVzY3JpcHRDb25maWdPcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBUc0plc3RUc2NvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogYm9vbGVhbiB8IHN0cmluZyB8IFR5cGVzY3JpcHRDb25maWdPcHRpb25zXG4gICkge31cblxuICAvKipcbiAgICogQGpzaWkgaWdub3JlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHRvSlNPTigpOiBib29sZWFuIHwgc3RyaW5nIHwgVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZztcbiAgfVxufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9rdWxzaGVraGFyLmdpdGh1Yi5pby90cy1qZXN0L2RvY3MvZ2V0dGluZy1zdGFydGVkL29wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUc0plc3RUcmFuc2Zvcm1PcHRpb25zIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBUeXBlU2NyaXB0IEFTVCB0cmFuc2Zvcm1lcnNcbiAgICpcbiAgICogQGRlZmF1bHQgYXV0b1xuICAgKi9cbiAgcmVhZG9ubHkgYXN0VHJhbnNmb3JtZXJzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqXG4gICAqIEJhYmVsKEplc3QpIHJlbGF0ZWQgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgVHNKZXN0QmFiZWxDb25maWcuZGlzYWJsZWQoKVxuICAgKi9cbiAgcmVhZG9ubHkgYmFiZWxDb25maWc/OiBUc0plc3RCYWJlbENvbmZpZztcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgbW9kdWxlIHRvIHVzZSBhcyBjb21waWxlci5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ0eXBlc2NyaXB0XCJcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBpbGVyPzogc3RyaW5nO1xuICAvKipcbiAgICogRGlhZ25vc3RpY3MgcmVsYXRlZCBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBUc0plc3REaWFnbm9zdGljcy5hbGwoKVxuICAgKi9cbiAgcmVhZG9ubHkgZGlhZ25vc3RpY3M/OiBUc0plc3REaWFnbm9zdGljcztcbiAgLyoqXG4gICAqIFJ1biB0cy1qZXN0IHRlc3RzIHdpdGggdGhpcyBUU0NvbmZpZyBpc29sYXRlZE1vZHVsZXMgc2V0dGluZy5cbiAgICpcbiAgICogWW91J2xsIGxvc2UgdHlwZS1jaGVja2luZyBhYmlsaXR5IGFuZCBzb21lIGZlYXR1cmVzIHN1Y2ggYXMgY29uc3QgZW51bSwgYnV0IGluIHRoZSBjYXNlIHlvdSBwbGFuIG9uIHVzaW5nIEplc3Qgd2l0aCB0aGUgY2FjaGUgZGlzYWJsZWQgKGplc3QgLS1uby1jYWNoZSksIHlvdXIgdGVzdHMgd2lsbCB0aGVuIHJ1biBtdWNoIGZhc3Rlci5cbiAgICogQHNlZSBodHRwczovL2t1bHNoZWtoYXIuZ2l0aHViLmlvL3RzLWplc3QvZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvb3B0aW9ucy9pc29sYXRlZE1vZHVsZXNcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGlzb2xhdGVkTW9kdWxlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBGaWxlcyB3aGljaCB3aWxsIGJlY29tZSBtb2R1bGVzIHJldHVybmluZyBzZWxmIGNvbnRlbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGRpc2FibGVkXG4gICAqL1xuICByZWFkb25seSBzdHJpbmdpZnlDb250ZW50UGF0aFJlZ2V4Pzogc3RyaW5nO1xuICAvKipcbiAgICogVHlwZVNjcmlwdCBjb21waWxlciByZWxhdGVkIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gWW91ciBwcm9qZWN0J3MgYHRzY29uZmlnRGV2YCBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWc/OiBUc0plc3RUc2NvbmZpZztcbiAgLyoqXG4gICAqIEVuYWJsZSBFU00gc3VwcG9ydFxuICAgKlxuICAgKiBAZGVmYXVsdCBhdXRvXG4gICAqL1xuICByZWFkb25seSB1c2VFU00/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRzSmVzdE9wdGlvbnMge1xuICAvKipcbiAgICogV2hpY2ggZmlsZXMgc2hvdWxkIHRzLWplc3QgYWN0IHVwb24uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9qZXN0anMuaW8vZG9jcy9jb25maWd1cmF0aW9uI3RyYW5zZm9ybS1vYmplY3RzdHJpbmctcGF0aHRvdHJhbnNmb3JtZXItLXBhdGh0b3RyYW5zZm9ybWVyLW9iamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCBcIl4uK1xcXFwuW3Rdc3g/JFwiXG4gICAqL1xuICByZWFkb25seSB0cmFuc2Zvcm1QYXR0ZXJuPzogc3RyaW5nO1xuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIGRlZmF1bHQgdHMtamVzdCB0cmFuc2Zvcm1lciBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhbnNmb3JtT3B0aW9ucz86IFRzSmVzdFRyYW5zZm9ybU9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIGV4dGVuZHMgTm9kZVByb2plY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFR5cGVzY3JpcHQgIGFydGlmYWN0cyBvdXRwdXQgZGlyZWN0b3J5XG4gICAqXG4gICAqIEBkZWZhdWx0IFwibGliXCJcbiAgICovXG4gIHJlYWRvbmx5IGxpYmRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZXNjcmlwdCBzb3VyY2VzIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJzcmNcIlxuICAgKi9cbiAgcmVhZG9ubHkgc3JjZGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBKZXN0IHRlc3RzIGRpcmVjdG9yeS4gVGVzdHMgZmlsZXMgc2hvdWxkIGJlIG5hbWVkIGB4eHgudGVzdC50c2AuXG4gICAqXG4gICAqIElmIHRoaXMgZGlyZWN0b3J5IGlzIHVuZGVyIGBzcmNkaXJgIChlLmcuIGBzcmMvdGVzdGAsIGBzcmMvX190ZXN0c19fYCksXG4gICAqIHRoZW4gdGVzdHMgYXJlIGdvaW5nIHRvIGJlIGNvbXBpbGVkIGludG8gYGxpYi9gIGFuZCBleGVjdXRlZCBhcyBqYXZhc2NyaXB0LlxuICAgKiBJZiB0aGUgdGVzdCBkaXJlY3RvcnkgaXMgb3V0c2lkZSBvZiBgc3JjYCwgdGhlbiB3ZSBjb25maWd1cmUgamVzdCB0b1xuICAgKiBjb21waWxlIHRoZSBjb2RlIGluLW1lbW9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RkaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldHVwIGVzbGludC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXNsaW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRXNsaW50IG9wdGlvbnNcbiAgICogQGRlZmF1bHQgLSBvcGluaW9uYXRlZCBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGVzbGludE9wdGlvbnM/OiBFc2xpbnRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IHZlcnNpb24gdG8gdXNlLlxuICAgKlxuICAgKiBOT1RFOiBUeXBlc2NyaXB0IGlzIG5vdCBzZW1hbnRpY2FsbHkgdmVyc2lvbmVkIGFuZCBzaG91bGQgcmVtYWluIG9uIHRoZVxuICAgKiBzYW1lIG1pbm9yLCBzbyB3ZSByZWNvbW1lbmQgdXNpbmcgYSBgfmAgZGVwZW5kZW5jeSAoZS5nLiBgfjEuMi4zYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzY3JpcHRWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2NnZW4gYnkgVHlwZWRvY1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZG9jZ2VuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG9jcyBkaXJlY3RvcnlcbiAgICpcbiAgICogQGRlZmF1bHQgXCJkb2NzXCJcbiAgICovXG4gIHJlYWRvbmx5IGRvY3NEaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBUU0NvbmZpZ1xuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWc/OiBUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucztcblxuICAvKipcbiAgICogQ3VzdG9tIHRzY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBkZXZlbG9wbWVudCB0c2NvbmZpZy5qc29uIGZpbGUgKHVzZWQgZm9yIHRlc3RpbmcpLlxuICAgKiBAZGVmYXVsdCAtIHVzZSB0aGUgcHJvZHVjdGlvbiB0c2NvbmZpZyBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZ0Rldj86IFR5cGVzY3JpcHRDb25maWdPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGV2ZWxvcG1lbnQgdHNjb25maWcuanNvbiBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcInRzY29uZmlnLmRldi5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IHRzY29uZmlnRGV2RmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogRG8gbm90IGdlbmVyYXRlIGEgYHRzY29uZmlnLmpzb25gIGZpbGUgKHVzZWQgYnkganNpaSBwcm9qZWN0cyBzaW5jZVxuICAgKiB0c2NvbmZpZy5qc29uIGlzIGdlbmVyYXRlZCBieSB0aGUganNpaSBjb21waWxlcikuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlVHNjb25maWc/OiBib29sZWFuO1xuICAvKipcbiAgICogRG8gbm90IGdlbmVyYXRlIGEgYHRzY29uZmlnLmRldi5qc29uYCBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZVRzY29uZmlnRGV2PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2VuZXJhdGUgb25lLXRpbWUgc2FtcGxlIGluIGBzcmMvYCBhbmQgYHRlc3QvYCBpZiB0aGVyZSBhcmUgbm8gZmlsZXMgdGhlcmUuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNhbXBsZUNvZGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgLmQudHMgZmlsZSB0aGF0IGluY2x1ZGVzIHRoZSB0eXBlIGRlY2xhcmF0aW9ucyBmb3IgdGhpcyBtb2R1bGUuXG4gICAqIEBkZWZhdWx0IC0gLmQudHMgZmlsZSBkZXJpdmVkIGZyb20gdGhlIHByb2plY3QncyBlbnRyeXBvaW50ICh1c3VhbGx5IGxpYi9pbmRleC5kLnRzKVxuICAgKi9cbiAgcmVhZG9ubHkgZW50cnlwb2ludFR5cGVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVc2UgVHlwZVNjcmlwdCBmb3IgeW91ciBwcm9qZW5yYyBmaWxlIChgLnByb2plbnJjLnRzYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBwam5ldyB0cnVlXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY1RzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgLnByb2plbnJjLnRzXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY1RzT3B0aW9ucz86IFByb2plbnJjVHNPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0cy1qZXN0XG4gICAqL1xuICByZWFkb25seSB0c0plc3RPcHRpb25zPzogVHNKZXN0T3B0aW9ucztcbn1cblxuLyoqXG4gKiBUeXBlU2NyaXB0IHByb2plY3RcbiAqIEBwamlkIHR5cGVzY3JpcHRcbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRQcm9qZWN0IGV4dGVuZHMgTm9kZVByb2plY3Qge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfVFNfSkVTVF9UUkFORk9STV9QQVRURVJOID0gXCJeLitcXFxcLlt0XXN4PyRcIjtcblxuICBwdWJsaWMgcmVhZG9ubHkgZG9jZ2VuPzogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IGRvY3NEaXJlY3Rvcnk6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGVzbGludD86IEVzbGludDtcbiAgcHVibGljIHJlYWRvbmx5IHRzY29uZmlnRXNsaW50PzogVHlwZXNjcmlwdENvbmZpZztcbiAgcHVibGljIHJlYWRvbmx5IHRzY29uZmlnPzogVHlwZXNjcmlwdENvbmZpZztcblxuICAvKipcbiAgICogQSB0eXBlc2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZSB3aGljaCBjb3ZlcnMgYWxsIGZpbGVzIChzb3VyY2VzLCB0ZXN0cywgcHJvamVuKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0c2NvbmZpZ0RldjogVHlwZXNjcmlwdENvbmZpZztcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgLnRzIHNvdXJjZXMgcmVzaWRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIGNvbXBpbGVkIC5qcyBmaWxlcyByZXNpZGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGliZGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGVzdHMgcmVzaWRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRlc3RkaXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFwid2F0Y2hcIiB0YXNrLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHdhdGNoVGFzazogVGFzaztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRpb25zLFxuXG4gICAgICAvLyBkaXNhYmxlIC5wcm9qZW5yYy5qcyBpZiB0eXBlc2NyaXB0IGlzIGVuYWJsZWRcbiAgICAgIHByb2plbnJjSnM6IG9wdGlvbnMucHJvamVucmNUcyA/IGZhbHNlIDogb3B0aW9ucy5wcm9qZW5yY0pzLFxuXG4gICAgICBqZXN0T3B0aW9uczoge1xuICAgICAgICAuLi5vcHRpb25zLmplc3RPcHRpb25zLFxuICAgICAgICBqZXN0Q29uZmlnOiB7XG4gICAgICAgICAgLi4ub3B0aW9ucy5qZXN0T3B0aW9ucz8uamVzdENvbmZpZyxcbiAgICAgICAgICB0ZXN0TWF0Y2g6IG9wdGlvbnMuamVzdE9wdGlvbnM/Lmplc3RDb25maWc/LnRlc3RNYXRjaCA/PyBbXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnNyY2RpciA9IG9wdGlvbnMuc3JjZGlyID8/IFwic3JjXCI7XG4gICAgdGhpcy5saWJkaXIgPSBvcHRpb25zLmxpYmRpciA/PyBcImxpYlwiO1xuXG4gICAgdGhpcy5kb2NnZW4gPSBvcHRpb25zLmRvY2dlbjtcbiAgICB0aGlzLmRvY3NEaXJlY3RvcnkgPSBvcHRpb25zLmRvY3NEaXJlY3RvcnkgPz8gXCJkb2NzL1wiO1xuXG4gICAgY29uc3QgdHNjb25maWdGaWxlbmFtZSA9IG9wdGlvbnMudHNjb25maWc/LmZpbGVOYW1lO1xuICAgIHRoaXMuY29tcGlsZVRhc2suZXhlYyhcbiAgICAgIFtcInRzY1wiLCBcIi0tYnVpbGRcIiwgdHNjb25maWdGaWxlbmFtZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpXG4gICAgKTtcblxuICAgIHRoaXMud2F0Y2hUYXNrID0gdGhpcy5hZGRUYXNrKFwid2F0Y2hcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiV2F0Y2ggJiBjb21waWxlIGluIHRoZSBiYWNrZ3JvdW5kXCIsXG4gICAgICBleGVjOiBbXCJ0c2NcIiwgXCItLWJ1aWxkXCIsIFwiLXdcIiwgdHNjb25maWdGaWxlbmFtZV1cbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAuam9pbihcIiBcIiksXG4gICAgfSk7XG5cbiAgICB0aGlzLnRlc3RkaXIgPSBvcHRpb25zLnRlc3RkaXIgPz8gXCJ0ZXN0XCI7XG4gICAgdGhpcy5naXRpZ25vcmUuaW5jbHVkZShgLyR7dGhpcy50ZXN0ZGlyfS9gKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShgLyR7dGhpcy50ZXN0ZGlyfS9gKTtcblxuICAgIC8vIGlmIHRoZSB0ZXN0IGRpcmVjdG9yeSBpcyB1bmRlciBgc3JjL2AsIHRoZW4gd2Ugd2lsbCBydW4gb3VyIHRlc3RzIGFnYWluc3RcbiAgICAvLyB0aGUgamF2YXNjcmlwdCBmaWxlcyBhbmQgbm90IGxldCBqZXN0IGNvbXBpbGUgaXQgZm9yIHVzLlxuICAgIGNvbnN0IGNvbXBpbGVkVGVzdHMgPSB0aGlzLnRlc3RkaXIuc3RhcnRzV2l0aCh0aGlzLnNyY2RpciArIHBhdGgucG9zaXguc2VwKTtcblxuICAgIGlmIChvcHRpb25zLmVudHJ5cG9pbnRUeXBlcyB8fCB0aGlzLmVudHJ5cG9pbnQgIT09IFwiXCIpIHtcbiAgICAgIGNvbnN0IGVudHJ5cG9pbnRQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICBwYXRoLmRpcm5hbWUodGhpcy5lbnRyeXBvaW50KSxcbiAgICAgICAgcGF0aC5iYXNlbmFtZSh0aGlzLmVudHJ5cG9pbnQsIFwiLmpzXCIpXG4gICAgICApO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQZXJzaXN0ZWRQYXRoKGVudHJ5cG9pbnRQYXRoKTtcbiAgICAgIGNvbnN0IGVudHJ5cG9pbnRUeXBlcyA9XG4gICAgICAgIG9wdGlvbnMuZW50cnlwb2ludFR5cGVzID8/IGAke25vcm1hbGl6ZWRQYXRofS5kLnRzYDtcbiAgICAgIHRoaXMucGFja2FnZS5hZGRGaWVsZChcInR5cGVzXCIsIGVudHJ5cG9pbnRUeXBlcyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGlsZXJPcHRpb25EZWZhdWx0czogVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucyA9IHtcbiAgICAgIGFsd2F5c1N0cmljdDogdHJ1ZSxcbiAgICAgIGRlY2xhcmF0aW9uOiB0cnVlLFxuICAgICAgZXNNb2R1bGVJbnRlcm9wOiB0cnVlLFxuICAgICAgZXhwZXJpbWVudGFsRGVjb3JhdG9yczogdHJ1ZSxcbiAgICAgIGlubGluZVNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgIGlubGluZVNvdXJjZXM6IHRydWUsXG4gICAgICBsaWI6IFtcImVzMjAxOVwiXSxcbiAgICAgIG1vZHVsZTogXCJDb21tb25KU1wiLFxuICAgICAgbm9FbWl0T25FcnJvcjogZmFsc2UsXG4gICAgICBub0ZhbGx0aHJvdWdoQ2FzZXNJblN3aXRjaDogdHJ1ZSxcbiAgICAgIG5vSW1wbGljaXRBbnk6IHRydWUsXG4gICAgICBub0ltcGxpY2l0UmV0dXJuczogdHJ1ZSxcbiAgICAgIG5vSW1wbGljaXRUaGlzOiB0cnVlLFxuICAgICAgbm9VbnVzZWRMb2NhbHM6IHRydWUsXG4gICAgICBub1VudXNlZFBhcmFtZXRlcnM6IHRydWUsXG4gICAgICByZXNvbHZlSnNvbk1vZHVsZTogdHJ1ZSxcbiAgICAgIHN0cmljdDogdHJ1ZSxcbiAgICAgIHN0cmljdE51bGxDaGVja3M6IHRydWUsXG4gICAgICBzdHJpY3RQcm9wZXJ0eUluaXRpYWxpemF0aW9uOiB0cnVlLFxuICAgICAgc3RyaXBJbnRlcm5hbDogdHJ1ZSxcbiAgICAgIHRhcmdldDogXCJFUzIwMTlcIixcbiAgICB9O1xuXG4gICAgaWYgKG9wdGlvbnMuZGlzYWJsZVRzY29uZmlnRGV2ICYmIG9wdGlvbnMuZGlzYWJsZVRzY29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQ2Fubm90IHNwZWNpZnkgYm90aCAnZGlzYWJsZVRzY29uZmlnRGV2JyBhbmQgJ2Rpc2FibGVUc2NvbmZpZycgZmllbGRzLlwiXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5kaXNhYmxlVHNjb25maWcpIHtcbiAgICAgIHRoaXMudHNjb25maWcgPSBuZXcgVHlwZXNjcmlwdENvbmZpZyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgbWVyZ2VUc2NvbmZpZ09wdGlvbnMoXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5jbHVkZTogW2Ake3RoaXMuc3JjZGlyfS8qKi8qLnRzYF0sXG4gICAgICAgICAgICAvLyBleGNsdWRlOiBbJ25vZGVfbW9kdWxlcyddLCAvLyBUT0RPOiBzaG91bGRuJ3Qgd2UgZXhjbHVkZSBub2RlX21vZHVsZXM/XG4gICAgICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgcm9vdERpcjogdGhpcy5zcmNkaXIsXG4gICAgICAgICAgICAgIG91dERpcjogdGhpcy5saWJkaXIsXG4gICAgICAgICAgICAgIC4uLmNvbXBpbGVyT3B0aW9uRGVmYXVsdHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3B0aW9ucy50c2NvbmZpZ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRpc2FibGVUc2NvbmZpZ0Rldikge1xuICAgICAgdGhpcy50c2NvbmZpZ0RldiA9IHRoaXMudHNjb25maWchO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0c2NvbmZpZ0RldkZpbGUgPSBvcHRpb25zLnRzY29uZmlnRGV2RmlsZSA/PyBcInRzY29uZmlnLmRldi5qc29uXCI7XG4gICAgICB0aGlzLnRzY29uZmlnRGV2ID0gbmV3IFR5cGVzY3JpcHRDb25maWcoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIG1lcmdlVHNjb25maWdPcHRpb25zKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpbGVOYW1lOiB0c2NvbmZpZ0RldkZpbGUsXG4gICAgICAgICAgICBpbmNsdWRlOiBbYCR7dGhpcy5zcmNkaXJ9LyoqLyoudHNgLCBgJHt0aGlzLnRlc3RkaXJ9LyoqLyoudHNgXSxcblxuICAgICAgICAgICAgZXhjbHVkZTogW1wibm9kZV9tb2R1bGVzXCJdLFxuICAgICAgICAgICAgY29tcGlsZXJPcHRpb25zOiBjb21waWxlck9wdGlvbkRlZmF1bHRzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3B0aW9ucy50c2NvbmZpZyxcbiAgICAgICAgICBvcHRpb25zLnRzY29uZmlnRGV2XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5naXRpZ25vcmUuaW5jbHVkZShgLyR7dGhpcy5zcmNkaXJ9L2ApO1xuICAgIHRoaXMubnBtaWdub3JlPy5leGNsdWRlKGAvJHt0aGlzLnNyY2Rpcn0vYCk7XG5cbiAgICBpZiAodGhpcy5zcmNkaXIgIT09IHRoaXMubGliZGlyKSB7XG4gICAgICAvLyBzZXBhcmF0ZWQsIGNhbiBpZ25vcmUgdGhlIGVudGlyZSBsaWJkaXJcbiAgICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoYC8ke3RoaXMubGliZGlyfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjb2xsb2NhdGVkLCBjYW4gb25seSBpZ25vcmUgdGhlIGNvbXBpbGVkIG91dHB1dFxuICAgICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZShgLyR7dGhpcy5saWJkaXJ9LyoqLyouanNgKTtcbiAgICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoYC8ke3RoaXMubGliZGlyfS8qKi8qLmQudHNgKTtcbiAgICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoYC8ke3RoaXMubGliZGlyfS8qKi8qLmQudHMubWFwYCk7XG4gICAgfVxuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmluY2x1ZGUoYC8ke3RoaXMubGliZGlyfS9gKTtcblxuICAgIHRoaXMubnBtaWdub3JlPy5pbmNsdWRlKGAvJHt0aGlzLmxpYmRpcn0vKiovKi5qc2ApO1xuICAgIHRoaXMubnBtaWdub3JlPy5pbmNsdWRlKGAvJHt0aGlzLmxpYmRpcn0vKiovKi5kLnRzYCk7XG5cbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKFwiL2Rpc3QvXCIpO1xuICAgIHRoaXMubnBtaWdub3JlPy5leGNsdWRlKFwiZGlzdFwiKTsgLy8ganNpaS1wYWNtYWsgZXhwZWN0cyB0aGlzIHRvIGJlIFwiZGlzdFwiIGFuZCBub3QgXCIvZGlzdFwiLiBvdGhlcndpc2UgaXQgd2lsbCB0YW1wZXIgd2l0aCBpdFxuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoXCIvdHNjb25maWcuanNvblwiKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShcIi8uZ2l0aHViL1wiKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShcIi8udnNjb2RlL1wiKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShcIi8uaWRlYS9cIik7XG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoXCIvLnByb2plbnJjLmpzXCIpO1xuICAgIHRoaXMubnBtaWdub3JlPy5leGNsdWRlKFwidHNjb25maWcudHNidWlsZGluZm9cIik7XG5cbiAgICBpZiAodGhpcy5qZXN0KSB7XG4gICAgICBpZiAoY29tcGlsZWRUZXN0cykge1xuICAgICAgICB0aGlzLmFkZEplc3RDb21waWxlZCh0aGlzLmplc3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZGRKZXN0Tm9Db21waWxlKHRoaXMuamVzdCwgb3B0aW9ucz8udHNKZXN0T3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZXNsaW50ID8/IHRydWUpIHtcbiAgICAgIHRoaXMuZXNsaW50ID0gbmV3IEVzbGludCh0aGlzLCB7XG4gICAgICAgIHRzY29uZmlnUGF0aDogYC4vJHt0aGlzLnRzY29uZmlnRGV2LmZpbGVOYW1lfWAsXG4gICAgICAgIGRpcnM6IFt0aGlzLnNyY2Rpcl0sXG4gICAgICAgIGRldmRpcnM6IFt0aGlzLnRlc3RkaXIsIFwiYnVpbGQtdG9vbHNcIl0sXG4gICAgICAgIGZpbGVFeHRlbnNpb25zOiBbXCIudHNcIiwgXCIudHN4XCJdLFxuICAgICAgICBsaW50UHJvamVuUmM6IGZhbHNlLFxuICAgICAgICAuLi5vcHRpb25zLmVzbGludE9wdGlvbnMsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy50c2NvbmZpZ0VzbGludCA9IHRoaXMudHNjb25maWdEZXY7XG4gICAgfVxuXG4gICAgLy8gd2hlbiB0aGlzIGlzIGEgcm9vdCBwcm9qZWN0XG4gICAgaWYgKCF0aGlzLnBhcmVudCkge1xuICAgICAgaWYgKG9wdGlvbnMucHJvamVucmNUcykge1xuICAgICAgICBuZXcgUHJvamVucmNUcyh0aGlzLCBvcHRpb25zLnByb2plbnJjVHNPcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHByb2plbnJjLmpzIGNyZWF0ZWQgaW4gTm9kZVByb2plY3QgbmVlZHMgdG8gYmUgYWRkZWQgaW4gdHNjb25maWdEZXZcbiAgICAgICAgY29uc3QgcHJvamVucmNKcyA9IE5vZGVQcm9qZWN0UHJvamVucmMub2YodGhpcyk7XG4gICAgICAgIGlmIChwcm9qZW5yY0pzKSB7XG4gICAgICAgICAgdGhpcy50c2NvbmZpZ0Rldi5hZGRJbmNsdWRlKHByb2plbnJjSnMuZmlsZVBhdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdHN2ZXIgPSBvcHRpb25zLnR5cGVzY3JpcHRWZXJzaW9uXG4gICAgICA/IGBAJHtvcHRpb25zLnR5cGVzY3JpcHRWZXJzaW9ufWBcbiAgICAgIDogXCJcIjtcblxuICAgIHRoaXMuYWRkRGV2RGVwcyhcbiAgICAgIGB0eXBlc2NyaXB0JHt0c3Zlcn1gLFxuICAgICAgLy8gQHR5cGVzL25vZGUgdmVyc2lvbnMgbnVtYmVycyBtYXRjaCB0aGUgbm9kZSBydW50aW1lIHZlcnNpb25zJyBtYWpvci5taW5vciwgaG93ZXZlciwgbmV3XG4gICAgICAvLyByZWxlYXNlcyBhcmUgb25seSBjcmVhdGVkIHdoZW4gQVBJIGNoYW5nZXMgYXJlIGluY2x1ZGVkIGluIGEgbm9kZSByZWxlYXNlLi4uIFdlIG1pZ2h0IGZvclxuICAgICAgLy8gZXhhbXBsZSBoYXZlIGRlcGVuZGVuY2llcyB0aGF0IHJlcXVpcmUgYG5vZGUgPj0gMTIuMjJgLCBidXQgYXMgMTIuMjEgYW5kIDEyLjIyIGRpZCBub3RcbiAgICAgIC8vIGluY2x1ZGUgQVBJIGNoYW5nZXMsIGBAdHlwZXMvbm9kZUAxMi4yMC54YCBpcyB0aGUgXCJjb3JyZWN0XCIgdmVyc2lvbiB0byB1c2UuIEFzIGl0IGlzIG5vdFxuICAgICAgLy8gcG9zc2libGUgdG8gZWFzaWx5IGRldGVybWluZSB0aGUgY29ycmVjdCB2ZXJzaW9uIHRvIHVzZSwgd2UgcGljayB1cCB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICAvL1xuICAgICAgLy8gQWRkaXRpb25hbGx5LCB3ZSBkZWZhdWx0IHRvIHRyYWNraW5nIHRoZSAxOC54IGxpbmUsIGFzIHRoZSBjdXJyZW50IGVhcmxpZXN0IExUUyByZWxlYXNlIG9mXG4gICAgICAvLyBub2RlIGlzIDE4LngsIHNvIHRoaXMgaXMgd2hhdCBjb3JyZXNwb25kcyB0byB0aGUgYnJvYWRlc3QgY29tcGF0aWJpbGl0eSB3aXRoIHN1cHBvcnRlZCBub2RlXG4gICAgICAvLyBydW50aW1lcy5cbiAgICAgIGBAdHlwZXMvbm9kZUBeJHtzZW12ZXIubWFqb3IodGhpcy5wYWNrYWdlLm1pbk5vZGVWZXJzaW9uID8/IFwiMTguMC4wXCIpfWBcbiAgICApO1xuXG4gICAgLy8gZ2VuZXJhdGUgc2FtcGxlIGNvZGUgaW4gYHNyY2AgYW5kIGBsaWJgIGlmIHRoZXNlIGRpcmVjdG9yaWVzIGFyZSBlbXB0eSBvciBub24tZXhpc3RlbnQuXG4gICAgaWYgKG9wdGlvbnMuc2FtcGxlQ29kZSA/PyB0cnVlKSB7XG4gICAgICBuZXcgU2FtcGxlQ29kZSh0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kb2NnZW4pIHtcbiAgICAgIG5ldyBUeXBlZG9jRG9jZ2VuKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0cyBhcmUgY29tcGlsZWQgdG8gYGxpYi9URVNURElSYCwgc28gd2UgZG9uJ3QgbmVlZCBqZXN0IHRvIGNvbXBpbGUgdGhlbVxuICAgKiBmb3IgdXMuIGp1c3QgcnVuIHRoZW0gZGlyZWN0bHkgZnJvbSBqYXZhc2NyaXB0LlxuICAgKi9cbiAgcHJpdmF0ZSBhZGRKZXN0Q29tcGlsZWQoamVzdDogSmVzdCkge1xuICAgIHRoaXMuYWRkRGV2RGVwcyhgQHR5cGVzL2plc3Qke2plc3QuamVzdFZlcnNpb259YCk7XG5cbiAgICBjb25zdCB0ZXN0b3V0ID0gcGF0aC5wb3NpeC5yZWxhdGl2ZSh0aGlzLnNyY2RpciwgdGhpcy50ZXN0ZGlyKTtcbiAgICBjb25zdCBsaWJ0ZXN0ID0gcGF0aC5wb3NpeC5qb2luKHRoaXMubGliZGlyLCB0ZXN0b3V0KTtcbiAgICBjb25zdCBzcmN0ZXN0ID0gdGhpcy50ZXN0ZGlyO1xuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoYC8ke2xpYnRlc3R9L2ApO1xuICAgIGplc3QuZGlzY292ZXJUZXN0TWF0Y2hQYXR0ZXJuc0ZvckRpcnMoW2xpYnRlc3RdLCB7XG4gICAgICBmaWxlRXh0ZW5zaW9uUGF0dGVybjogdGhpcy50c2NvbmZpZz8uY29tcGlsZXJPcHRpb25zPy5hbGxvd0pzXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogXCJqcz8oeClcIixcbiAgICB9KTtcbiAgICBqZXN0LmFkZFdhdGNoSWdub3JlUGF0dGVybihgLyR7dGhpcy5zcmNkaXJ9L2ApO1xuXG4gICAgY29uc3QgcmVzb2x2ZVNuYXBzaG90UGF0aCA9ICh0ZXN0OiBzdHJpbmcsIGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBmdWxscGF0aCA9IHRlc3QucmVwbGFjZShsaWJ0ZXN0LCBzcmN0ZXN0KTtcbiAgICAgIHJldHVybiBwYXRoLmpvaW4oXG4gICAgICAgIHBhdGguZGlybmFtZShmdWxscGF0aCksXG4gICAgICAgIFwiX19zbmFwc2hvdHNfX1wiLFxuICAgICAgICBwYXRoLmJhc2VuYW1lKGZ1bGxwYXRoLCBcIi5qc1wiKSArIFwiLnRzXCIgKyBleHRcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc29sdmVUZXN0UGF0aCA9IChzbmFwOiBzdHJpbmcsIGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBmaWxlbmFtZSA9IHBhdGguYmFzZW5hbWUoc25hcCwgXCIudHNcIiArIGV4dCkgKyBcIi5qc1wiO1xuICAgICAgY29uc3QgZGlyID0gcGF0aC5kaXJuYW1lKHBhdGguZGlybmFtZShzbmFwKSkucmVwbGFjZShzcmN0ZXN0LCBsaWJ0ZXN0KTtcbiAgICAgIHJldHVybiBwYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc29sdmVyID0gbmV3IFRleHRGaWxlKFxuICAgICAgdGhpcyxcbiAgICAgIHBhdGgucG9zaXguam9pbihQUk9KRU5fRElSLCBcImplc3Qtc25hcHNob3QtcmVzb2x2ZXIuanNcIilcbiAgICApO1xuICAgIGlmICghcmVzb2x2ZXIubWFya2VyKSB7XG4gICAgICByZXNvbHZlci5hZGRMaW5lKGAvLyAke3Jlc29sdmVyLm1hcmtlcn1gKTtcbiAgICB9XG4gICAgcmVzb2x2ZXIuYWRkTGluZSgnY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpOycpO1xuICAgIHJlc29sdmVyLmFkZExpbmUoYGNvbnN0IGxpYnRlc3QgPSBcIiR7bGlidGVzdH1cIjtgKTtcbiAgICByZXNvbHZlci5hZGRMaW5lKGBjb25zdCBzcmN0ZXN0PSBcIiR7c3JjdGVzdH1cIjtgKTtcbiAgICByZXNvbHZlci5hZGRMaW5lKFwibW9kdWxlLmV4cG9ydHMgPSB7XCIpO1xuICAgIHJlc29sdmVyLmFkZExpbmUoXG4gICAgICBgICByZXNvbHZlU25hcHNob3RQYXRoOiAke3Jlc29sdmVTbmFwc2hvdFBhdGgudG9TdHJpbmcoKX0sYFxuICAgICk7XG4gICAgcmVzb2x2ZXIuYWRkTGluZShgICByZXNvbHZlVGVzdFBhdGg6ICR7cmVzb2x2ZVRlc3RQYXRoLnRvU3RyaW5nKCl9LGApO1xuICAgIHJlc29sdmVyLmFkZExpbmUoXG4gICAgICBcIiAgdGVzdFBhdGhGb3JDb25zaXN0ZW5jeUNoZWNrOiBwYXRoLmpvaW4oJ3NvbWUnLCAnX190ZXN0c19fJywgJ2V4YW1wbGUudGVzdC5qcycpXCJcbiAgICApO1xuICAgIHJlc29sdmVyLmFkZExpbmUoXCJ9O1wiKTtcblxuICAgIGplc3QuYWRkU25hcHNob3RSZXNvbHZlcihgLi8ke3Jlc29sdmVyLnBhdGh9YCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEplc3ROb0NvbXBpbGUoXG4gICAgamVzdDogSmVzdCxcbiAgICB0c0plc3RPcHRpb25zOiBUc0plc3RPcHRpb25zIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHRoaXMuYWRkRGV2RGVwcyhcbiAgICAgIGBAdHlwZXMvamVzdCR7amVzdC5qZXN0VmVyc2lvbn1gLFxuICAgICAgYHRzLWplc3Qke2plc3QuamVzdFZlcnNpb259YFxuICAgICk7XG5cbiAgICBqZXN0LmRpc2NvdmVyVGVzdE1hdGNoUGF0dGVybnNGb3JEaXJzKFt0aGlzLnNyY2RpciwgdGhpcy50ZXN0ZGlyXSwge1xuICAgICAgZmlsZUV4dGVuc2lvblBhdHRlcm46IHRoaXMudHNjb25maWc/LmNvbXBpbGVyT3B0aW9ucz8uYWxsb3dKc1xuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IFwidHM/KHgpXCIsXG4gICAgfSk7XG5cbiAgICAvLyBUZXN0IGZvciB0aGUgdHMtamVzdCB2ZXJzaW9uIHRoYXQgd2FzIHJlcXVlc3RlZDtcbiAgICAvL1xuICAgIC8vIC0gRmlyc3QsIGNoZWNrIHRoZSBgamVzdGAgdmVyc2lvbiB0aGF0IGlzIHJlcXVlc3RlZCB2aWEgcHJvamVuIHByb3BlcnRpZXMuIFRoaXNcbiAgICAvLyAgIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgYHRzLWplc3RgIHZlcnNpb24gYW55d2F5LlxuICAgIC8vIC0gSWYgbm9uZSBmb3VuZCwgZmFsbCBiYWNrIHRvIGluc3BlY3RpbmcgdGhlIGFjdHVhbCBgdHMtamVzdGAgdmVyc2lvblxuICAgIC8vICAgdGhhdCBoYXBwZW5zIHRvIGJlIGluc3RhbGxlZC5cbiAgICBsZXQgaGFzVHNKZXN0Mjk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgaWYgKGplc3QuamVzdFZlcnNpb24pIHtcbiAgICAgIC8vIFdlIGNvdWxkIG1heWJlIHJlcGxhY2UgdGhpcyB3aWxsIGZ1bGwgXCJhY3R1YWwgdmVyc2lvblwiIGNoZWNraW5nLCBidXRcbiAgICAgIC8vIHRoZSB0ZXN0cyBkZXBlbmQgb24gdGhpcyBhbmQgdGhlIHJlYWRpbmcgb2YgJ3BhY2thZ2UuanNvbicgaXMgdmVyeVxuICAgICAgLy8gYXdrd2FyZCB0byB0ZXN0LlxuICAgICAgLy8gTm90ZSB0aGF0IHdlIHVzZSB0aGUgcmVxdWVzdGVkIHZlcnNpb24gb2YgYGplc3RgIGFzIGEgcHJveHkgZm9yIHRoZVxuICAgICAgLy8gdmVyc2lvbiBvZiBgdHMtamVzdGAsIHdoaWNoIGlzIHdoYXQgd2UncmUgYWN0dWFsbHkgaW50ZXJlc3RlZCBpbi5cbiAgICAgIGNvbnN0IG1ham9yID0gc2VtdmVyLmNvZXJjZShqZXN0Lmplc3RWZXJzaW9uKT8ubWFqb3I7XG4gICAgICBoYXNUc0plc3QyOSA9IG1ham9yID8gbWFqb3IgPj0gMjkgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChoYXNUc0plc3QyOSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNUc0plc3QyOSA9IGhhc0RlcGVuZGVuY3lWZXJzaW9uKHRoaXMsIFwidHMtamVzdFwiLCBcIj49IDI5XCIpO1xuICAgIH1cblxuICAgIC8vIGFkZCByZWxldmFudCBkZXBzICh3ZSB0cmVhdCBcInVua25vd25cIiBhcyBoYXZpbmcgYSBtb2Rlcm4gdHMtamVzdClcbiAgICBpZiAoaGFzVHNKZXN0MjkgIT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRKZXN0Tm9Db21waWxlTW9kZXJuKGplc3QsIHRzSmVzdE9wdGlvbnMpO1xuICAgIH1cbiAgICB0aGlzLmFkZEplc3ROb0NvbXBpbGVMZWdhY3koamVzdCwgdHNKZXN0T3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGFkZEplc3ROb0NvbXBpbGVNb2Rlcm4oXG4gICAgamVzdDogSmVzdCxcbiAgICB0c0plc3RPcHRpb25zOiBUc0plc3RPcHRpb25zIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIGplc3QuY29uZmlnLnRyYW5zZm9ybSA9IGRlZXBNZXJnZShbXG4gICAgICB7XG4gICAgICAgIFt0c0plc3RPcHRpb25zPy50cmFuc2Zvcm1QYXR0ZXJuID8/XG4gICAgICAgIFR5cGVTY3JpcHRQcm9qZWN0LkRFRkFVTFRfVFNfSkVTVF9UUkFORk9STV9QQVRURVJOXTogbmV3IFRyYW5zZm9ybShcbiAgICAgICAgICBcInRzLWplc3RcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0c2NvbmZpZzogVHNKZXN0VHNjb25maWcuZnJvbUZpbGUodGhpcy50c2NvbmZpZ0Rldi5maWxlTmFtZSksXG4gICAgICAgICAgICAuLi4odHNKZXN0T3B0aW9ucz8udHJhbnNmb3JtT3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIGplc3QuY29uZmlnLnRyYW5zZm9ybSxcbiAgICBdKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSmVzdE5vQ29tcGlsZUxlZ2FjeShcbiAgICBqZXN0OiBKZXN0LFxuICAgIHRzSmVzdE9wdGlvbnM6IFRzSmVzdE9wdGlvbnMgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgaWYgKHRzSmVzdE9wdGlvbnMpIHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oXG4gICAgICAgIFwiWW91IGFyZSB1c2luZyBhIGxlZ2FjeSB2ZXJzaW9uICg8MjkpIG9mIGplc3QgYW5kIHRzLWplc3QgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRzSmVzdE9wdGlvbnMsIHRoZXkgd2lsbCBiZSBpZ25vcmVkLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWplc3QuY29uZmlnLnByZXNldCkge1xuICAgICAgamVzdC5jb25maWcucHJlc2V0ID0gXCJ0cy1qZXN0XCI7XG4gICAgfVxuICAgIGplc3QuY29uZmlnLmdsb2JhbHMgPSBkZWVwTWVyZ2UoW1xuICAgICAge1xuICAgICAgICBcInRzLWplc3RcIjoge1xuICAgICAgICAgIHRzY29uZmlnOiB0aGlzLnRzY29uZmlnRGV2LmZpbGVOYW1lLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGplc3QuY29uZmlnLmdsb2JhbHMsXG4gICAgXSk7XG4gIH1cbn1cblxuY2xhc3MgU2FtcGxlQ29kZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgY29uc3Qgc3JjQ29kZSA9IFtcbiAgICAgIFwiZXhwb3J0IGNsYXNzIEhlbGxvIHtcIixcbiAgICAgIFwiICBwdWJsaWMgc2F5SGVsbG8oKSB7XCIsXG4gICAgICBcIiAgICByZXR1cm4gJ2hlbGxvLCB3b3JsZCEnO1wiLFxuICAgICAgXCIgIH1cIixcbiAgICAgIFwifVwiLFxuICAgIF0uam9pbihcIlxcblwiKTtcblxuICAgIGNvbnN0IHRlc3RDb2RlID0gW1xuICAgICAgXCJpbXBvcnQgeyBIZWxsbyB9IGZyb20gJy4uL3NyYyc7XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJ0ZXN0KCdoZWxsbycsICgpID0+IHtcIixcbiAgICAgIFwiICBleHBlY3QobmV3IEhlbGxvKCkuc2F5SGVsbG8oKSkudG9CZSgnaGVsbG8sIHdvcmxkIScpO1wiLFxuICAgICAgXCJ9KTtcIixcbiAgICBdLmpvaW4oXCJcXG5cIik7XG5cbiAgICBuZXcgU2FtcGxlRGlyKHByb2plY3QsIHByb2plY3Quc3JjZGlyLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICBcImluZGV4LnRzXCI6IHNyY0NvZGUsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHByb2plY3QuamVzdCkge1xuICAgICAgbmV3IFNhbXBsZURpcihwcm9qZWN0LCBwcm9qZWN0LnRlc3RkaXIsIHtcbiAgICAgICAgZmlsZXM6IHtcbiAgICAgICAgICBcImhlbGxvLnRlc3QudHNcIjogdGVzdENvZGUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBUeXBlU2NyaXB0IGFwcC5cbiAqXG4gKiBAcGppZCB0eXBlc2NyaXB0LWFwcFxuICovXG5leHBvcnQgY2xhc3MgVHlwZVNjcmlwdEFwcFByb2plY3QgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIGFsbG93TGlicmFyeURlcGVuZGVuY2llczogZmFsc2UsXG4gICAgICByZWxlYXNlV29ya2Zsb3c6IGZhbHNlLFxuICAgICAgZW50cnlwb2ludDogXCJcIiwgLy8gXCJtYWluXCIgaXMgbm90IG5lZWRlZCBpbiB0eXBlc2NyaXB0IGFwcHNcbiAgICAgIHBhY2thZ2U6IGZhbHNlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSBgVHlwZVNjcmlwdFByb2plY3RgXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0TGlicmFyeVByb2plY3QgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdCB7fVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlU2NyaXB0TGlicmFyeVByb2plY3RPcHRpb25zXG4gIGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIHt9XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVRzY29uZmlnT3B0aW9ucyhcbiAgLi4ub3B0aW9uczogKFR5cGVzY3JpcHRDb25maWdPcHRpb25zIHwgdW5kZWZpbmVkKVtdXG4pOiBUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucyB7XG4gIGNvbnN0IGRlZmluZWRPcHRpb25zID0gb3B0aW9ucy5maWx0ZXIoQm9vbGVhbikgYXMgVHlwZXNjcmlwdENvbmZpZ09wdGlvbnNbXTtcbiAgcmV0dXJuIGRlZmluZWRPcHRpb25zLnJlZHVjZTxUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucz4oXG4gICAgKHByZXZpb3VzLCBjdXJyZW50KSA9PiAoe1xuICAgICAgLi4ucHJldmlvdXMsXG4gICAgICAuLi5jdXJyZW50LFxuICAgICAgaW5jbHVkZTogWy4uLihwcmV2aW91cy5pbmNsdWRlID8/IFtdKSwgLi4uKGN1cnJlbnQuaW5jbHVkZSA/PyBbXSldLFxuICAgICAgZXhjbHVkZTogWy4uLihwcmV2aW91cy5leGNsdWRlID8/IFtdKSwgLi4uKGN1cnJlbnQuZXhjbHVkZSA/PyBbXSldLFxuICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgIC4uLnByZXZpb3VzLmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgLi4uY3VycmVudC5jb21waWxlck9wdGlvbnMsXG4gICAgICB9LFxuICAgIH0pLFxuICAgIHsgY29tcGlsZXJPcHRpb25zOiB7fSB9XG4gICk7XG59XG4iXX0=
package/lib/version.js CHANGED
@@ -50,7 +50,7 @@ class Version extends component_1.Component {
50
50
  }
51
51
  exports.Version = Version;
52
52
  _a = JSII_RTTI_SYMBOL_1;
53
- Version[_a] = { fqn: "projen.Version", version: "0.84.7" };
53
+ Version[_a] = { fqn: "projen.Version", version: "0.84.9" };
54
54
  Version.STANDARD_VERSION = "standard-version@^9";
55
55
  /**
56
56
  * Find commits that should be considered releasable to decide if a release is required.
@@ -115,7 +115,7 @@ class ReleasableCommits {
115
115
  }
116
116
  exports.ReleasableCommits = ReleasableCommits;
117
117
  _b = JSII_RTTI_SYMBOL_1;
118
- ReleasableCommits[_b] = { fqn: "projen.ReleasableCommits", version: "0.84.7" };
118
+ ReleasableCommits[_b] = { fqn: "projen.ReleasableCommits", version: "0.84.9" };
119
119
  /**
120
120
  * Append a path argument to a git command if one is provided
121
121
  */
@@ -114,5 +114,5 @@ class DevContainer extends component_1.Component {
114
114
  }
115
115
  exports.DevContainer = DevContainer;
116
116
  _a = JSII_RTTI_SYMBOL_1;
117
- DevContainer[_a] = { fqn: "projen.vscode.DevContainer", version: "0.84.7" };
117
+ DevContainer[_a] = { fqn: "projen.vscode.DevContainer", version: "0.84.9" };
118
118
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2Y29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZzY29kZS9kZXZjb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBeUM7QUFNekMsa0NBQW1DO0FBSW5DOztHQUVHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQztBQTBDL0M7OztHQUdHO0FBQ0gsTUFBYSxZQUNYLFNBQVEscUJBQVM7SUFjakIsWUFBWSxPQUFnQixFQUFFLFVBQStCLEVBQUU7UUFDN0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLEtBQUssRUFBUSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxFQUF1QixDQUFDO1FBRWpELElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxFQUFFLFdBQVcsQ0FBQztRQUV4QyxJQUFJLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNuQixLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELElBQUksT0FBTyxFQUFFLGdCQUFnQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNE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cG9uZW50XCI7XG5pbXBvcnQge1xuICBEZXZFbnZpcm9ubWVudERvY2tlckltYWdlLFxuICBEZXZFbnZpcm9ubWVudE9wdGlvbnMsXG4gIElEZXZFbnZpcm9ubWVudCxcbn0gZnJvbSBcIi4uL2Rldi1lbnZcIjtcbmltcG9ydCB7IEpzb25GaWxlIH0gZnJvbSBcIi4uL2pzb25cIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gXCIuLi90YXNrXCI7XG5cbi8qKlxuICogUmVsYXRpdmUgcGF0aCBvZiBkZXZjb250YWluZXIgZmlsZSB0byBnZW5lcmF0ZVxuICovXG5jb25zdCBERVZDT05UQUlORVJfRklMRSA9IFwiLmRldmNvbnRhaW5lci5qc29uXCI7XG5cbi8qKlxuICogZGV2Y29udGFpbmVyIGZlYXR1cmVzIG9wdGlvbnNcbiAqIEBzZWUgaHR0cHM6Ly9jb250YWluZXJzLmRldi9pbXBsZW1lbnRvcnMvZmVhdHVyZXMvI2RldmNvbnRhaW5lci1qc29uLXByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXZDb250YWluZXJGZWF0dXJlIHtcbiAgLyoqXG4gICAqIGZlYXR1cmUgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogZmVhdHVyZSB2ZXJzaW9uXG4gICAqIEBkZWZhdWx0IGxhdGVzdFxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3RvciBvcHRpb25zIGZvciB0aGUgRGV2Q29udGFpbmVyIGNvbXBvbmVudC5cbiAqXG4gKiBUaGUgZGVmYXVsdCBkb2NrZXIgaW1hZ2UgdXNlZCBmb3IgR2l0SHViIENvZGVzcGFjZXMgaXMgZGVmaW5lZCBoZXJlOlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L3ZzY29kZS1kZXYtY29udGFpbmVycy90cmVlL21hc3Rlci9jb250YWluZXJzL2NvZGVzcGFjZXMtbGludXhcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXZDb250YWluZXJPcHRpb25zIGV4dGVuZHMgRGV2RW52aXJvbm1lbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIFZTQ29kZSBmZWF0dXJlcyB0aGF0IHNwZWNpZnkgdGhlIGZlYXR1cmVzIHRoYXQgc2hvdWxkIGJlXG4gICAqIGluc3RhbGxlZCBpbnNpZGUgdGhlIGNvbnRhaW5lciB3aGVuIGl0IGlzIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBmZWF0dXJlcz86IERldkNvbnRhaW5lckZlYXR1cmVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGV2Q29udGFpbmVyRW52aXJvbm1lbnQgZXh0ZW5kcyBJRGV2RW52aXJvbm1lbnQge1xuICAvKipcbiAgICogQWRkcyBhIGxpc3Qgb2YgVlNDb2RlIGZlYXR1cmVzIHRoYXQgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkXG4gICAqIGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSBmZWF0dXJlcyBmZWF0dXJlTmFtZSBhbmQgdmVyc2lvbihvcHRpb25hbCBkZWZhdWx0OiBsYXRlc3QpXG4gICAqL1xuICBhZGRGZWF0dXJlcyguLi5mZWF0dXJlczogRGV2Q29udGFpbmVyRmVhdHVyZVtdKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIGRldmVsb3BtZW50IGVudmlyb25tZW50IHJ1bm5pbmcgVlNDb2RlIGluIGEgY29udGFpbmVyOyB1c2VkIGJ5IEdpdEh1YlxuICogY29kZXNwYWNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERldkNvbnRhaW5lclxuICBleHRlbmRzIENvbXBvbmVudFxuICBpbXBsZW1lbnRzIElEZXZDb250YWluZXJFbnZpcm9ubWVudFxue1xuICBwcml2YXRlIGRvY2tlckltYWdlOiBEZXZFbnZpcm9ubWVudERvY2tlckltYWdlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IHBvc3RDcmVhdGVUYXNrczogVGFza1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IHBvcnRzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSB2c2NvZGVFeHRlbnNpb25zOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBmZWF0dXJlczogRGV2Q29udGFpbmVyRmVhdHVyZVtdO1xuXG4gIC8qKlxuICAgKiBEaXJlY3QgYWNjZXNzIHRvIHRoZSBkZXZjb250YWluZXIgY29uZmlndXJhdGlvbiAoZXNjYXBlIGhhdGNoKVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IERldkNvbnRhaW5lck9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy5wb3N0Q3JlYXRlVGFza3MgPSBuZXcgQXJyYXk8VGFzaz4oKTtcbiAgICB0aGlzLnBvcnRzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICB0aGlzLnZzY29kZUV4dGVuc2lvbnMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIHRoaXMuZmVhdHVyZXMgPSBuZXcgQXJyYXk8RGV2Q29udGFpbmVyRmVhdHVyZT4oKTtcblxuICAgIHRoaXMuZG9ja2VySW1hZ2UgPSBvcHRpb25zPy5kb2NrZXJJbWFnZTtcblxuICAgIGlmIChvcHRpb25zPy50YXNrcykge1xuICAgICAgZm9yIChjb25zdCB0YXNrIG9mIG9wdGlvbnMudGFza3MpIHtcbiAgICAgICAgdGhpcy5hZGRUYXNrcyh0YXNrKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LnBvcnRzKSB7XG4gICAgICB0aGlzLmFkZFBvcnRzKC4uLm9wdGlvbnMucG9ydHMpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucz8udnNjb2RlRXh0ZW5zaW9ucykge1xuICAgICAgdGhpcy5hZGRWc2NvZGVFeHRlbnNpb25zKC4uLm9wdGlvbnMudnNjb2RlRXh0ZW5zaW9ucyk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmZlYXR1cmVzKSB7XG4gICAgICB0aGlzLmFkZEZlYXR1cmVzKC4uLm9wdGlvbnMuZmVhdHVyZXMpO1xuICAgIH1cblxuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgaW1hZ2U6ICgpID0+IHRoaXMuZG9ja2VySW1hZ2U/LmltYWdlLFxuICAgICAgYnVpbGQ6IHtcbiAgICAgICAgZG9ja2VyZmlsZTogKCkgPT4gdGhpcy5kb2NrZXJJbWFnZT8uZG9ja2VyRmlsZSxcbiAgICAgIH0sXG4gICAgICBwb3N0Q3JlYXRlQ29tbWFuZDogKCkgPT4gdGhpcy5yZW5kZXJUYXNrcygpLFxuICAgICAgZm9yd2FyZFBvcnRzOiB0aGlzLnBvcnRzLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy52c2NvZGVFeHRlbnNpb25zLFxuICAgICAgZmVhdHVyZXM6ICgpID0+IHRoaXMucmVuZGVyRmVhdHVyZXMoKSxcbiAgICB9O1xuXG4gICAgbmV3IEpzb25GaWxlKHRoaXMucHJvamVjdCwgREVWQ09OVEFJTkVSX0ZJTEUsIHtcbiAgICAgIG9iajogdGhpcy5jb25maWcsXG4gICAgICBvbWl0RW1wdHk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkRG9ja2VySW1hZ2UoaW1hZ2U6IERldkVudmlyb25tZW50RG9ja2VySW1hZ2UpIHtcbiAgICBpZiAodGhpcy5kb2NrZXJJbWFnZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZG9ja2VySW1hZ2UgY2Fubm90IGJlIHJlZGVmaW5lZC5cIik7XG4gICAgfVxuICAgIHRoaXMuZG9ja2VySW1hZ2UgPSBpbWFnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRhc2tzIHRvIHJ1biB3aGVuIHRoZSBjb250YWluZXIgc3RhcnRzLiBUYXNrcyB3aWxsIGJlIHJ1biBpbiBzZXF1ZW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHRhc2tzIFRoZSBuZXcgdGFza3NcbiAgICovXG4gIHB1YmxpYyBhZGRUYXNrcyguLi50YXNrczogVGFza1tdKSB7XG4gICAgdGhpcy5wb3N0Q3JlYXRlVGFza3MucHVzaCguLi50YXNrcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBwb3J0cyB0aGF0IHNob3VsZCBiZSBleHBvc2VkIChmb3J3YXJkZWQpIGZyb20gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHBvcnRzIFRoZSBuZXcgcG9ydHNcbiAgICovXG4gIHB1YmxpYyBhZGRQb3J0cyguLi5wb3J0czogc3RyaW5nW10pIHtcbiAgICB0aGlzLnBvcnRzLnB1c2goLi4ucG9ydHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBsaXN0IG9mIFZTQ29kZSBleHRlbnNpb25zIHRoYXQgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkXG4gICAqIGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSBleHRlbnNpb25zIFRoZSBleHRlbnNpb24gSURzXG4gICAqL1xuICBwdWJsaWMgYWRkVnNjb2RlRXh0ZW5zaW9ucyguLi5leHRlbnNpb25zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudnNjb2RlRXh0ZW5zaW9ucy5wdXNoKC4uLmV4dGVuc2lvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBsaXN0IG9mIFZTQ29kZSBmZWF0dXJlcyB0aGF0IHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGluc3RhbGxlZFxuICAgKiBpbiB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAcGFyYW0gZmVhdHVyZXMgZmVhdHVyZU5hbWUgYW5kIHZlcnNpb24ob3B0aW9uYWwgZGVmYXVsdDogbGF0ZXN0KVxuICAgKi9cbiAgcHVibGljIGFkZEZlYXR1cmVzKC4uLmZlYXR1cmVzOiBEZXZDb250YWluZXJGZWF0dXJlW10pOiB2b2lkIHtcbiAgICB0aGlzLmZlYXR1cmVzLnB1c2goLi4uZmVhdHVyZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJUYXNrcygpIHtcbiAgICBpZiAodGhpcy5wb3N0Q3JlYXRlVGFza3MubGVuZ3RoICE9PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5wb3N0Q3JlYXRlVGFza3NcbiAgICAgICAgLm1hcCgodGFzaykgPT4gYCggbnB4IHByb2plbiAke3Rhc2submFtZX0gKWApXG4gICAgICAgIC5qb2luKFwiICYmIFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckZlYXR1cmVzKCkge1xuICAgIGlmICh0aGlzLmZlYXR1cmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mZWF0dXJlcy5yZWR1Y2U8e1xuICAgICAgW2tleTogc3RyaW5nXTogeyB2ZXJzaW9uOiBzdHJpbmcgfTtcbiAgICB9PigocHYsIGZlYXR1cmUpID0+IHtcbiAgICAgIHB2W2ZlYXR1cmUubmFtZV0gPSB7XG4gICAgICAgIHZlcnNpb246IGZlYXR1cmUudmVyc2lvbiA/PyBcImxhdGVzdFwiLFxuICAgICAgfTtcbiAgICAgIHJldHVybiBwdjtcbiAgICB9LCB7fSk7XG4gIH1cbn1cbiJdfQ==
@@ -55,5 +55,5 @@ class VsCodeRecommendedExtensions extends component_1.Component {
55
55
  }
56
56
  exports.VsCodeRecommendedExtensions = VsCodeRecommendedExtensions;
57
57
  _a = JSII_RTTI_SYMBOL_1;
58
- VsCodeRecommendedExtensions[_a] = { fqn: "projen.vscode.VsCodeRecommendedExtensions", version: "0.84.7" };
58
+ VsCodeRecommendedExtensions[_a] = { fqn: "projen.vscode.VsCodeRecommendedExtensions", version: "0.84.9" };
59
59
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92c2NvZGUvZXh0ZW5zaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDRDQUF5QztBQUN6QyxrQ0FBbUM7QUFFbkM7OztHQUdHO0FBQ0gsTUFBYSwyQkFBNEIsU0FBUSxxQkFBUztJQW1CeEQsWUFBWSxNQUFjO1FBQ3hCLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFuQnhCOzs7OztXQUtHO1FBQ2Msb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFFaEQ7Ozs7O1dBS0c7UUFDYyw0QkFBdUIsR0FBYSxFQUFFLENBQUM7UUFPdEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGVBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFO1lBQ2xFLFNBQVMsRUFBRSxJQUFJO1lBQ2YsYUFBYSxFQUFFLElBQUk7WUFDbkIsR0FBRyxFQUFFO2dCQUNILGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDckMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjthQUN0RDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksa0JBQWtCLENBQUMsR0FBRyxVQUFvQjtRQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLDBCQUEwQixDQUFDLEdBQUcsVUFBb0I7UUFDdkQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7O0FBakRILGtFQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZzQ29kZSB9IGZyb20gXCIuL3ZzY29kZVwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgSnNvbkZpbGUgfSBmcm9tIFwiLi4vanNvblwiO1xuXG4vKipcbiAqIFZTIENvZGUgV29ya3NwYWNlIHJlY29tbWVuZGVkIGV4dGVuc2lvbnNcbiAqIFNvdXJjZTogaHR0cHM6Ly9jb2RlLnZpc3VhbHN0dWRpby5jb20vZG9jcy9lZGl0b3IvZXh0ZW5zaW9uLW1hcmtldHBsYWNlI193b3Jrc3BhY2UtcmVjb21tZW5kZWQtZXh0ZW5zaW9uc1xuICovXG5leHBvcnQgY2xhc3MgVnNDb2RlUmVjb21tZW5kZWRFeHRlbnNpb25zIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgZXh0ZW5zaW9ucyB3aGljaCBzaG91bGQgYmUgcmVjb21tZW5kZWQgZm9yIHVzZXJzIG9mIHRoaXMgd29ya3NwYWNlLlxuICAgKiBUaGUgaWRlbnRpZmllciBvZiBhbiBleHRlbnNpb24gaXMgYWx3YXlzICcke3B1Ymxpc2hlcn0uJHtuYW1lfScuIEZvciBleGFtcGxlOiAnbXMtcHl0aG9uLnB5dGhvbicuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcmVjb21tZW5kYXRpb25zIGFyZSBtYWRlXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHJlY29tbWVuZGF0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBleHRlbnNpb25zIHJlY29tbWVuZGVkIGJ5IFZTIENvZGUgdGhhdCBzaG91bGQgbm90IGJlIHJlY29tbWVuZGVkIGZvciB1c2VycyBvZiB0aGlzIHdvcmtzcGFjZS5cbiAgICogVGhlIGlkZW50aWZpZXIgb2YgYW4gZXh0ZW5zaW9uIGlzIGFsd2F5cyAnJHtwdWJsaXNoZXJ9LiR7bmFtZX0nLiBGb3IgZXhhbXBsZTogJ21zLXB5dGhvbi5weXRob24nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJlY29tbWVuZGF0aW9ucyBhcmUgbWFya2VkIHVud2FudGVkXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHVud2FudGVkUmVjb21tZW5kYXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHB1YmxpYyByZWFkb25seSBmaWxlOiBKc29uRmlsZTtcblxuICBjb25zdHJ1Y3Rvcih2c2NvZGU6IFZzQ29kZSkge1xuICAgIHN1cGVyKHZzY29kZS5wcm9qZWN0KTtcblxuICAgIHRoaXMuZmlsZSA9IG5ldyBKc29uRmlsZSh2c2NvZGUucHJvamVjdCwgXCIudnNjb2RlL2V4dGVuc2lvbnMuanNvblwiLCB7XG4gICAgICBvbWl0RW1wdHk6IHRydWUsXG4gICAgICBhbGxvd0NvbW1lbnRzOiB0cnVlLFxuICAgICAgb2JqOiB7XG4gICAgICAgIHJlY29tbWVuZGF0aW9uczogdGhpcy5yZWNvbW1lbmRhdGlvbnMsXG4gICAgICAgIHVud2FudGVkUmVjb21tZW5kYXRpb25zOiB0aGlzLnVud2FudGVkUmVjb21tZW5kYXRpb25zLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbGlzdCBvZiBWUyBDb2RlIGV4dGVuc2lvbnMgYXMgcmVjb21tZW5kYXRpb25zIGZvciB0aGlzIHdvcmtzcGFjZS5cbiAgICpcbiAgICogQHBhcmFtIGV4dGVuc2lvbnMgVGhlIGV4dGVuc2lvbiBJRHNcbiAgICovXG4gIHB1YmxpYyBhZGRSZWNvbW1lbmRhdGlvbnMoLi4uZXh0ZW5zaW9uczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnJlY29tbWVuZGF0aW9ucy5wdXNoKC4uLmV4dGVuc2lvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmtzIGEgbGlzdCBvZiBWUyBDb2RlIGV4dGVuc2lvbnMgYXMgdW53YW50ZWQgcmVjb21tZW5kYXRpb25zIGZvciB0aGlzIHdvcmtzcGFjZS5cbiAgICogVlMgQ29kZSBzaG91bGQgbm90IGJlIHJlY29tbWVuZCB0aGVzZSBleHRlbnNpb25zIGZvciB1c2VycyBvZiB0aGlzIHdvcmtzcGFjZS5cbiAgICpcbiAgICogQHBhcmFtIGV4dGVuc2lvbnMgVGhlIGV4dGVuc2lvbiBJRHNcbiAgICovXG4gIHB1YmxpYyBhZGRVbndhbnRlZFJlY29tbWVuZGF0aW9ucyguLi5leHRlbnNpb25zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudW53YW50ZWRSZWNvbW1lbmRhdGlvbnMucHVzaCguLi5leHRlbnNpb25zKTtcbiAgfVxufVxuIl19
@@ -107,7 +107,7 @@ class VsCodeLaunchConfig extends component_1.Component {
107
107
  }
108
108
  exports.VsCodeLaunchConfig = VsCodeLaunchConfig;
109
109
  _a = JSII_RTTI_SYMBOL_1;
110
- VsCodeLaunchConfig[_a] = { fqn: "projen.vscode.VsCodeLaunchConfig", version: "0.84.7" };
110
+ VsCodeLaunchConfig[_a] = { fqn: "projen.vscode.VsCodeLaunchConfig", version: "0.84.9" };
111
111
  var InputCommandType;
112
112
  (function (InputCommandType) {
113
113
  InputCommandType["PROMPT_STRING"] = "promptString";
@@ -52,5 +52,5 @@ class VsCodeSettings extends component_1.Component {
52
52
  }
53
53
  exports.VsCodeSettings = VsCodeSettings;
54
54
  _a = JSII_RTTI_SYMBOL_1;
55
- VsCodeSettings[_a] = { fqn: "projen.vscode.VsCodeSettings", version: "0.84.7" };
55
+ VsCodeSettings[_a] = { fqn: "projen.vscode.VsCodeSettings", version: "0.84.9" };
56
56
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdnNjb2RlL3NldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsNENBQXlDO0FBQ3pDLGtDQUFtQztBQUVuQzs7O0dBR0c7QUFDSCxNQUFhLGNBQWUsU0FBUSxxQkFBUztJQUkzQyxZQUFZLE1BQWM7UUFDeEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUVsQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksZUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUU7WUFDaEUsU0FBUyxFQUFFLEtBQUs7WUFDaEIsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVLENBQUMsT0FBZSxFQUFFLEtBQWMsRUFBRSxRQUFpQjtRQUNsRSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFFBQVEsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNqRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FDaEIsUUFBaUMsRUFDakMsU0FBNkI7UUFFN0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDN0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUMxQyxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQzNDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzs7QUFuREgsd0NBb0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVnNDb2RlIH0gZnJvbSBcIi4vdnNjb2RlXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBKc29uRmlsZSB9IGZyb20gXCIuLi9qc29uXCI7XG5cbi8qKlxuICogVlMgQ29kZSBXb3Jrc3BhY2Ugc2V0dGluZ3NcbiAqIFNvdXJjZTogaHR0cHM6Ly9jb2RlLnZpc3VhbHN0dWRpby5jb20vZG9jcy9nZXRzdGFydGVkL3NldHRpbmdzI193b3Jrc3BhY2Utc2V0dGluZ3NcbiAqL1xuZXhwb3J0IGNsYXNzIFZzQ29kZVNldHRpbmdzIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb250ZW50OiBhbnk7XG4gIHB1YmxpYyByZWFkb25seSBmaWxlOiBKc29uRmlsZTtcblxuICBjb25zdHJ1Y3Rvcih2c2NvZGU6IFZzQ29kZSkge1xuICAgIHN1cGVyKHZzY29kZS5wcm9qZWN0KTtcblxuICAgIHRoaXMuY29udGVudCA9IHt9O1xuXG4gICAgdGhpcy5maWxlID0gbmV3IEpzb25GaWxlKHZzY29kZS5wcm9qZWN0LCBcIi52c2NvZGUvc2V0dGluZ3MuanNvblwiLCB7XG4gICAgICBvbWl0RW1wdHk6IGZhbHNlLFxuICAgICAgb2JqOiB0aGlzLmNvbnRlbnQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHdvcmtzcGFjZSBzZXR0aW5nXG4gICAqXG4gICAqIEBwYXJhbSBzZXR0aW5nIFRoZSBzZXR0aW5nIElEXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIHNldHRpbmdcbiAgICogQHBhcmFtIGxhbmd1YWdlIFNjb3BlIHRoZSBzZXR0aW5nIHRvIGEgc3BlY2lmaWMgbGFuZ3VhZ2VcbiAgICovXG4gIHB1YmxpYyBhZGRTZXR0aW5nKHNldHRpbmc6IHN0cmluZywgdmFsdWU6IHVua25vd24sIGxhbmd1YWdlPzogc3RyaW5nKSB7XG4gICAgaWYgKGxhbmd1YWdlKSB7XG4gICAgICB0aGlzLmNvbnRlbnRbYFske2xhbmd1YWdlfV1gXSA9IHRoaXMuY29udGVudFtgWyR7bGFuZ3VhZ2V9XWBdID8/IHt9O1xuICAgICAgdGhpcy5jb250ZW50W2BbJHtsYW5ndWFnZX1dYF1bc2V0dGluZ10gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250ZW50W3NldHRpbmddID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB3b3Jrc3BhY2Ugc2V0dGluZ1xuICAgKlxuICAgKiBAcGFyYW0gc2V0dGluZ3MgQXJyYXkgc3RydWN0dXJlOiBbc2V0dGluZzogc3RyaW5nLCB2YWx1ZTogYW55LCBsYW5ndWFnZXM/OiBzdHJpbmdbXV1cbiAgICovXG4gIHB1YmxpYyBhZGRTZXR0aW5ncyhcbiAgICBzZXR0aW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgbGFuZ3VhZ2VzPzogc3RyaW5nIHwgc3RyaW5nW11cbiAgKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobGFuZ3VhZ2VzKSkge1xuICAgICAgbGFuZ3VhZ2VzLmZvckVhY2goKGxhbmd1YWdlKSA9PiB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHNldHRpbmdzKS5mb3JFYWNoKChbc2V0dGluZywgdmFsdWVdKSA9PlxuICAgICAgICAgIHRoaXMuYWRkU2V0dGluZyhzZXR0aW5nLCB2YWx1ZSwgbGFuZ3VhZ2UpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmVudHJpZXMoc2V0dGluZ3MpLmZvckVhY2goKFtzZXR0aW5nLCB2YWx1ZV0pID0+XG4gICAgICAgIHRoaXMuYWRkU2V0dGluZyhzZXR0aW5nLCB2YWx1ZSwgbGFuZ3VhZ2VzKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -32,5 +32,5 @@ class VsCode extends component_1.Component {
32
32
  }
33
33
  exports.VsCode = VsCode;
34
34
  _a = JSII_RTTI_SYMBOL_1;
35
- VsCode[_a] = { fqn: "projen.vscode.VsCode", version: "0.84.7" };
35
+ VsCode[_a] = { fqn: "projen.vscode.VsCode", version: "0.84.9" };
36
36
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnNjb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZzY29kZS92c2NvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBMkQ7QUFDM0QsbURBQXFEO0FBQ3JELHlDQUE0QztBQUM1Qyw0Q0FBeUM7QUFHekMsTUFBYSxNQUFPLFNBQVEscUJBQVM7SUFLbkMsWUFBWSxPQUFnQjtRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGtDQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSx5QkFBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx3Q0FBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7O0FBL0JILHdCQWdDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZzQ29kZVJlY29tbWVuZGVkRXh0ZW5zaW9ucyB9IGZyb20gXCIuL2V4dGVuc2lvbnNcIjtcbmltcG9ydCB7IFZzQ29kZUxhdW5jaENvbmZpZyB9IGZyb20gXCIuL2xhdW5jaC1jb25maWdcIjtcbmltcG9ydCB7IFZzQ29kZVNldHRpbmdzIH0gZnJvbSBcIi4vc2V0dGluZ3NcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuXG5leHBvcnQgY2xhc3MgVnNDb2RlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfbGF1bmNoQ29uZmlnPzogVnNDb2RlTGF1bmNoQ29uZmlnO1xuICBwcml2YXRlIF9zZXR0aW5ncz86IFZzQ29kZVNldHRpbmdzO1xuICBwcml2YXRlIF9leHRlbnNpb25zPzogVnNDb2RlUmVjb21tZW5kZWRFeHRlbnNpb25zO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGF1bmNoQ29uZmlndXJhdGlvbigpIHtcbiAgICBpZiAoIXRoaXMuX2xhdW5jaENvbmZpZykge1xuICAgICAgdGhpcy5fbGF1bmNoQ29uZmlnID0gbmV3IFZzQ29kZUxhdW5jaENvbmZpZyh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbGF1bmNoQ29uZmlnO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXR0aW5ncygpIHtcbiAgICBpZiAoIXRoaXMuX3NldHRpbmdzKSB7XG4gICAgICB0aGlzLl9zZXR0aW5ncyA9IG5ldyBWc0NvZGVTZXR0aW5ncyh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3M7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGV4dGVuc2lvbnMoKSB7XG4gICAgaWYgKCF0aGlzLl9leHRlbnNpb25zKSB7XG4gICAgICB0aGlzLl9leHRlbnNpb25zID0gbmV3IFZzQ29kZVJlY29tbWVuZGVkRXh0ZW5zaW9ucyh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZXh0ZW5zaW9ucztcbiAgfVxufVxuIl19
package/lib/web/next.js CHANGED
@@ -40,7 +40,7 @@ class NextJsProject extends javascript_1.NodeProject {
40
40
  }
41
41
  exports.NextJsProject = NextJsProject;
42
42
  _a = JSII_RTTI_SYMBOL_1;
43
- NextJsProject[_a] = { fqn: "projen.web.NextJsProject", version: "0.84.7" };
43
+ NextJsProject[_a] = { fqn: "projen.web.NextJsProject", version: "0.84.9" };
44
44
  /**
45
45
  * Next.js project using TypeScript.
46
46
  *
@@ -123,7 +123,7 @@ class NextJsTypeScriptProject extends typescript_1.TypeScriptAppProject {
123
123
  }
124
124
  exports.NextJsTypeScriptProject = NextJsTypeScriptProject;
125
125
  _b = JSII_RTTI_SYMBOL_1;
126
- NextJsTypeScriptProject[_b] = { fqn: "projen.web.NextJsTypeScriptProject", version: "0.84.7" };
126
+ NextJsTypeScriptProject[_b] = { fqn: "projen.web.NextJsTypeScriptProject", version: "0.84.9" };
127
127
  class NextComponent extends component_1.Component {
128
128
  constructor(project, options) {
129
129
  super(project);
@@ -160,7 +160,7 @@ class NextComponent extends component_1.Component {
160
160
  }
161
161
  exports.NextComponent = NextComponent;
162
162
  _c = JSII_RTTI_SYMBOL_1;
163
- NextComponent[_c] = { fqn: "projen.web.NextComponent", version: "0.84.7" };
163
+ NextComponent[_c] = { fqn: "projen.web.NextComponent", version: "0.84.9" };
164
164
  class NextSampleCode extends component_1.Component {
165
165
  constructor(project, options) {
166
166
  super(project);
@@ -29,5 +29,5 @@ class PostCss {
29
29
  }
30
30
  exports.PostCss = PostCss;
31
31
  _a = JSII_RTTI_SYMBOL_1;
32
- PostCss[_a] = { fqn: "projen.web.PostCss", version: "0.84.7" };
32
+ PostCss[_a] = { fqn: "projen.web.PostCss", version: "0.84.9" };
33
33
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdGNzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93ZWIvcG9zdGNzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlDQUFtRTtBQUVuRSxrQ0FBbUM7QUFxQm5DOztHQUVHO0FBQ0gsTUFBYSxPQUFPO0lBS2xCLFlBQVksT0FBb0IsRUFBRSxPQUF3QjtRQUN4RCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sRUFBRSxRQUFRLElBQUkscUJBQXFCLENBQUM7UUFFM0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUzQixNQUFNLE1BQU0sR0FBMkIsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFdkQsSUFBSSxPQUFPLEVBQUUsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHlCQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztZQUN0RSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDM0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxlQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDL0MsR0FBRyxFQUFFLE1BQU07WUFDWCxNQUFNLEVBQUUsS0FBSztTQUNkLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7QUExQkgsMEJBMkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFpbHdpbmRDb25maWcsIFRhaWx3aW5kQ29uZmlnT3B0aW9ucyB9IGZyb20gXCIuL3RhaWx3aW5kXCI7XG5pbXBvcnQgeyBOb2RlUHJvamVjdCB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBKc29uRmlsZSB9IGZyb20gXCIuLi9qc29uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9zdENzc09wdGlvbnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgXCJwb3N0Y3NzLmNvbmZpZy5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbnN0YWxsIFRhaWx3aW5kIENTUyBhcyBhIFBvc3RDU1MgcGx1Z2luLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB0YWlsd2luZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRhaWx3aW5kIENTUyBvcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFpbHdpbmRPcHRpb25zPzogVGFpbHdpbmRDb25maWdPcHRpb25zO1xufVxuXG4vKipcbiAqIERlY2xhcmVzIGEgUG9zdENTUyBkZXBlbmRlbmN5IHdpdGggYSBkZWZhdWx0IGNvbmZpZyBmaWxlLlxuICovXG5leHBvcnQgY2xhc3MgUG9zdENzcyB7XG4gIHB1YmxpYyByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZTogSnNvbkZpbGU7XG4gIHB1YmxpYyByZWFkb25seSB0YWlsd2luZD86IFRhaWx3aW5kQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IE5vZGVQcm9qZWN0LCBvcHRpb25zPzogUG9zdENzc09wdGlvbnMpIHtcbiAgICB0aGlzLmZpbGVOYW1lID0gb3B0aW9ucz8uZmlsZU5hbWUgPz8gXCJwb3N0Y3NzLmNvbmZpZy5qc29uXCI7XG5cbiAgICBwcm9qZWN0LmFkZERlcHMoXCJwb3N0Y3NzXCIpO1xuXG4gICAgY29uc3QgY29uZmlnOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0geyBwbHVnaW5zOiB7fSB9O1xuXG4gICAgaWYgKG9wdGlvbnM/LnRhaWx3aW5kID8/IHRydWUpIHtcbiAgICAgIGNvbmZpZy5wbHVnaW5zLnRhaWx3aW5kY3NzID0ge307XG4gICAgICBjb25maWcucGx1Z2lucy5hdXRvcHJlZml4ZXIgPSB7fTtcbiAgICAgIHRoaXMudGFpbHdpbmQgPSBuZXcgVGFpbHdpbmRDb25maWcocHJvamVjdCwgb3B0aW9ucz8udGFpbHdpbmRPcHRpb25zKTtcbiAgICAgIGNvbmZpZy5wbHVnaW5zLnRhaWx3aW5kY3NzLmNvbmZpZyA9IHRoaXMudGFpbHdpbmQuZmlsZU5hbWU7XG4gICAgICBwcm9qZWN0LmFkZERlcHMoXCJ0YWlsd2luZGNzc1wiLCBcImF1dG9wcmVmaXhlclwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGUgPSBuZXcgSnNvbkZpbGUocHJvamVjdCwgdGhpcy5maWxlTmFtZSwge1xuICAgICAgb2JqOiBjb25maWcsXG4gICAgICBtYXJrZXI6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5ucG1pZ25vcmU/LmV4Y2x1ZGUoYC8ke3RoaXMuZmlsZU5hbWV9YCk7XG4gIH1cbn1cbiJdfQ==
package/lib/web/react.js CHANGED
@@ -38,7 +38,7 @@ class ReactProject extends javascript_1.NodeProject {
38
38
  }
39
39
  exports.ReactProject = ReactProject;
40
40
  _a = JSII_RTTI_SYMBOL_1;
41
- ReactProject[_a] = { fqn: "projen.web.ReactProject", version: "0.84.7" };
41
+ ReactProject[_a] = { fqn: "projen.web.ReactProject", version: "0.84.9" };
42
42
  /**
43
43
  * React project using TypeScript.
44
44
  *
@@ -107,7 +107,7 @@ class ReactTypeScriptProject extends typescript_1.TypeScriptAppProject {
107
107
  }
108
108
  exports.ReactTypeScriptProject = ReactTypeScriptProject;
109
109
  _b = JSII_RTTI_SYMBOL_1;
110
- ReactTypeScriptProject[_b] = { fqn: "projen.web.ReactTypeScriptProject", version: "0.84.7" };
110
+ ReactTypeScriptProject[_b] = { fqn: "projen.web.ReactTypeScriptProject", version: "0.84.9" };
111
111
  class ReactComponent extends component_1.Component {
112
112
  constructor(project, options) {
113
113
  super(project);
@@ -167,7 +167,7 @@ class ReactComponent extends component_1.Component {
167
167
  }
168
168
  exports.ReactComponent = ReactComponent;
169
169
  _c = JSII_RTTI_SYMBOL_1;
170
- ReactComponent[_c] = { fqn: "projen.web.ReactComponent", version: "0.84.7" };
170
+ ReactComponent[_c] = { fqn: "projen.web.ReactComponent", version: "0.84.9" };
171
171
  class ReactSampleCode extends component_1.Component {
172
172
  constructor(project, options) {
173
173
  super(project);
@@ -357,5 +357,5 @@ class ReactTypeDef extends file_1.FileBase {
357
357
  }
358
358
  exports.ReactTypeDef = ReactTypeDef;
359
359
  _d = JSII_RTTI_SYMBOL_1;
360
- ReactTypeDef[_d] = { fqn: "projen.web.ReactTypeDef", version: "0.84.7" };
360
+ ReactTypeDef[_d] = { fqn: "projen.web.ReactTypeDef", version: "0.84.9" };
361
361
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2ViL3JlYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDRDQUF5QztBQUN6QyxrQ0FBK0Q7QUFDL0QsOENBS3VCO0FBQ3ZCLGdEQUEyQztBQUMzQyxnREFBNEM7QUFDNUMsOENBQStFO0FBQy9FLGtDQUFvQztBQTBEcEM7Ozs7R0FJRztBQUNILE1BQWEsWUFBYSxTQUFRLHdCQUFXO0lBTzNDLFlBQVksT0FBNEI7UUFDdEMsS0FBSyxDQUFDO1lBQ0osSUFBSSxFQUFFLEtBQUs7WUFDWCxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDO1FBRXRDLElBQUksY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRXhFLDZGQUE2RjtRQUM3RixJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFLENBQUM7WUFDL0IsSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFO2dCQUN4QixPQUFPLEVBQUUsS0FBSztnQkFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07YUFDcEIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQzVCLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDO2FBQ3RFLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQTNCSCxvQ0E0QkM7OztBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLHNCQUF1QixTQUFRLGlDQUFvQjtJQU05RCxZQUFZLE9BQXNDO1FB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LFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQzlDLFdBQVcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDaEMsQ0FBQyxrQkFBa0IsR0FBRyxlQUFlLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNwRSxDQUFDLGFBQWEsR0FBRyxlQUFlLENBQUMsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUMzRDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQU9EOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsZUFBUTtJQUN4QyxZQUNFLE9BQStCLEVBQy9CLFFBQWdCLEVBQ2hCLFVBQStCLEVBQUU7UUFFakMsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVTLGlCQUFpQixDQUFDLENBQVk7UUFDdEMsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7O0FBWEgsb0NBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBGaWxlQmFzZSwgRmlsZUJhc2VPcHRpb25zLCBJUmVzb2x2ZXIgfSBmcm9tIFwiLi4vZmlsZVwiO1xuaW1wb3J0IHtcbiAgTm9kZVByb2plY3QsXG4gIE5vZGVQcm9qZWN0T3B0aW9ucyxcbiAgVHlwZVNjcmlwdEpzeE1vZGUsXG4gIFR5cGVTY3JpcHRNb2R1bGVSZXNvbHV0aW9uLFxufSBmcm9tIFwiLi4vamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgU2FtcGxlRGlyIH0gZnJvbSBcIi4uL3NhbXBsZS1maWxlXCI7XG5pbXBvcnQgeyBTb3VyY2VDb2RlIH0gZnJvbSBcIi4uL3NvdXJjZS1jb2RlXCI7XG5pbXBvcnQgeyBUeXBlU2NyaXB0QXBwUHJvamVjdCwgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIH0gZnJvbSBcIi4uL3R5cGVzY3JpcHRcIjtcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCIuLi91dGlsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RSZXdpcmVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFJld2lyZSB3ZWJwYWNrIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIFVzZSB0aGlzIHByb3BlcnR5IHRvIG92ZXJyaWRlIHdlYnBhY2sgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHByb3ZpZGVkXG4gICAqIGJ5IGNyZWF0ZS1yZWFjdC1hcHAsIHdpdGhvdXQgbmVlZGluZyB0byBlamVjdC5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIGNyZWF0ZSBhIGBjb25maWctb3ZlcnJpZGVzLmpzYCBmaWxlIGluIHlvdXIgcm9vdCBkaXJlY3RvcnksXG4gICAqIHdoaWNoIHdpbGwgY29udGFpbiB0aGUgZGVzaXJlZCByZXdpcmluZyBjb2RlLlxuICAgKlxuICAgKiBUbyAqKm92ZXJyaWRlKiogdGhlIGNvbmZpZ3VyYXRpb24sIHlvdSBjYW4gcHJvdmlkZSBzaW1wbGUga2V5IHZhbHVlIHBhaXJzLlxuICAgKiBLZXlzIHRha2UgdGhlIGZvcm0gb2YganMgY29kZSBkaXJlY3RpdmVzIHRoYXQgdHJhdmVyc2UgdG8gdGhlIGRlc2lyZWQgcHJvcGVydHkuXG4gICAqIFZhbHVlcyBzaG91bGQgYmUgSlNPTiBzZXJpYWxpemFibGUgb2JqZWN0cy5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29uZmlnOlxuICAgKlxuICAgKiBgYGBqc29uXG4gICAqIHJld2lyZTogeyBcIm1vZHVsZS51bmtub3duQ29udGV4dENyaXRpY2FsXCI6IGZhbHNlIH1cbiAgICogYGBgXG4gICAqXG4gICAqIFdpbGwgdHJhbnNsYXRlIHRvIHRoZSBmb2xsb3dpbmcgYGNvbmZpZy1vdmVycmlkZXMuanNgIGZpbGU6XG4gICAqXG4gICAqIGBgYGpzXG4gICAqIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gb3ZlcnJpZGUoY29uZmlnLCBlbnYpIHtcbiAgICogICBjb25maWcubW9kdWxlLnVua25vd25Db250ZXh0Q3JpdGljYWwgPSBmYWxzZTtcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyByZXdpcmVkIGNvbmZpZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3dlYnBhY2suanMub3JnL2NvbmZpZ3VyYXRpb24vXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3RpbWFybmV5L3JlYWN0LWFwcC1yZXdpcmVkXG4gICAqL1xuICByZWFkb25seSByZXdpcmU/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0VHlwZVNjcmlwdFByb2plY3RPcHRpb25zXG4gIGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zLFxuICAgIFJlYWN0UmV3aXJlT3B0aW9ucyB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0UHJvamVjdE9wdGlvbnNcbiAgZXh0ZW5kcyBOb2RlUHJvamVjdE9wdGlvbnMsXG4gICAgUmVhY3RSZXdpcmVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNvdXJjZSBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwic3JjXCJcbiAgICovXG4gIHJlYWRvbmx5IHNyY2Rpcj86IHN0cmluZztcbiAgLyoqXG4gICAqIEdlbmVyYXRlIG9uZS10aW1lIHNhbXBsZSBpbiBgc3JjL2AgYW5kIGBwdWJsaWMvYCBpZiB0aGVyZSBhcmUgbm8gZmlsZXMgdGhlcmUuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNhbXBsZUNvZGU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlYWN0IHByb2plY3QgdXNpbmcgSmF2YVNjcmlwdC5cbiAqXG4gKiBAcGppZCByZWFjdFxuICovXG5leHBvcnQgY2xhc3MgUmVhY3RQcm9qZWN0IGV4dGVuZHMgTm9kZVByb2plY3Qge1xuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBzb3VyY2UgZmlsZXMgcmVzaWRlLlxuICAgKiBAZGVmYXVsdCBcInNyY1wiXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUmVhY3RQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIGplc3Q6IGZhbHNlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuc3JjZGlyID0gb3B0aW9ucy5zcmNkaXIgPz8gXCJzcmNcIjtcblxuICAgIG5ldyBSZWFjdENvbXBvbmVudCh0aGlzLCB7IHR5cGVzY3JpcHQ6IGZhbHNlLCByZXdpcmU6IG9wdGlvbnMucmV3aXJlIH0pO1xuXG4gICAgLy8gZ2VuZXJhdGUgc2FtcGxlIGNvZGUgaW4gYHNyY2AgYW5kIGBwdWJsaWNgIGlmIHRoZXNlIGRpcmVjdG9yaWVzIGFyZSBlbXB0eSBvciBub24tZXhpc3RlbnQuXG4gICAgaWYgKG9wdGlvbnMuc2FtcGxlQ29kZSA/PyB0cnVlKSB7XG4gICAgICBuZXcgUmVhY3RTYW1wbGVDb2RlKHRoaXMsIHtcbiAgICAgICAgZmlsZUV4dDogXCJqc3hcIixcbiAgICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICAgIH0pO1xuICAgICAgbmV3IFNhbXBsZURpcih0aGlzLCBcInB1YmxpY1wiLCB7XG4gICAgICAgIHNvdXJjZURpcjogcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiYXNzZXRzXCIsIFwid2ViXCIsIFwicmVhY3RcIiksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFjdCBwcm9qZWN0IHVzaW5nIFR5cGVTY3JpcHQuXG4gKlxuICogQHBqaWQgcmVhY3QtdHNcbiAqL1xuZXhwb3J0IGNsYXNzIFJlYWN0VHlwZVNjcmlwdFByb2plY3QgZXh0ZW5kcyBUeXBlU2NyaXB0QXBwUHJvamVjdCB7XG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIHNvdXJjZSBmaWxlcyByZXNpZGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUmVhY3RUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICAgIHNyY2RpcjogXCJzcmNcIixcbiAgICAgIGVzbGludDogdHJ1ZSxcbiAgICAgIGplc3Q6IGZhbHNlLFxuICAgICAgdHNjb25maWc6IHtcbiAgICAgICAgaW5jbHVkZTogW1wic3JjXCJdLFxuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICB0YXJnZXQ6IFwiZXM1XCIsXG4gICAgICAgICAgbGliOiBbXCJkb21cIiwgXCJkb20uaXRlcmFibGVcIiwgXCJlc25leHRcIl0sXG4gICAgICAgICAgYWxsb3dKczogdHJ1ZSxcbiAgICAgICAgICBza2lwTGliQ2hlY2s6IHRydWUsXG4gICAgICAgICAgZXNNb2R1bGVJbnRlcm9wOiB0cnVlLFxuICAgICAgICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgICAgICAgc3RyaWN0OiB0cnVlLFxuICAgICAgICAgIGZvcmNlQ29uc2lzdGVudENhc2luZ0luRmlsZU5hbWVzOiB0cnVlLFxuICAgICAgICAgIG5vRmFsbHRocm91Z2hDYXNlc0luU3dpdGNoOiB0cnVlLFxuICAgICAgICAgIG1vZHVsZTogXCJjb21tb25qc1wiLFxuICAgICAgICAgIG1vZHVsZVJlc29sdXRpb246IFR5cGVTY3JpcHRNb2R1bGVSZXNvbHV0aW9uLk5PREUsXG4gICAgICAgICAgcmVzb2x2ZUpzb25Nb2R1bGU6IHRydWUsXG4gICAgICAgICAgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlLFxuICAgICAgICAgIG5vRW1pdDogdHJ1ZSxcbiAgICAgICAgICBqc3g6IFR5cGVTY3JpcHRKc3hNb2RlLlJFQUNUX0pTWCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0eXBlc2NyaXB0VmVyc2lvbjogb3B0aW9ucy50eXBlc2NyaXB0VmVyc2lvbiA/PyBcIl40LjAuM1wiLFxuICAgIH07XG5cbiAgICAvLyBuZXZlciBnZW5lcmF0ZSBkZWZhdWx0IFR5cGVTY3JpcHQgc2FtcGxlIGNvZGUsIHNpbmNlIHRoaXMgY2xhc3MgcHJvdmlkZXMgaXRzIG93blxuICAgIHN1cGVyKFxuICAgICAgZGVlcE1lcmdlKFtcbiAgICAgICAgZGVmYXVsdE9wdGlvbnMsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIHsgc2FtcGxlQ29kZTogZmFsc2UgfSxcbiAgICAgIF0pIGFzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9uc1xuICAgICk7XG5cbiAgICB0aGlzLnNyY2RpciA9IG9wdGlvbnMuc3JjZGlyID8/IFwic3JjXCI7XG5cbiAgICB0aGlzLmVzbGludD8uYWRkUnVsZXMoe1xuICAgICAgXCJpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcIjogW1xuICAgICAgICBcImVycm9yXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkZXZEZXBlbmRlbmNpZXM6IFtcIioqL3NyYy8qKi8qLnRlc3QudHN4XCIsIFwiKiovc3JjL3NldHVwVGVzdHMudHNcIl0sXG4gICAgICAgICAgb3B0aW9uYWxEZXBlbmRlbmNpZXM6IGZhbHNlLFxuICAgICAgICAgIHBlZXJEZXBlbmRlbmNpZXM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgbmV3IFJlYWN0Q29tcG9uZW50KHRoaXMsIHsgdHlwZXNjcmlwdDogdHJ1ZSwgcmV3aXJlOiBvcHRpb25zLnJld2lyZSB9KTtcblxuICAgIC8vIGdlbmVyYXRlIHNhbXBsZSBjb2RlIGluIGBzcmNgIGFuZCBgcHVibGljYCBpZiB0aGVzZSBkaXJlY3RvcmllcyBhcmUgZW1wdHkgb3Igbm9uLWV4aXN0ZW50LlxuICAgIGlmIChvcHRpb25zLnNhbXBsZUNvZGUgPz8gdHJ1ZSkge1xuICAgICAgbmV3IFJlYWN0U2FtcGxlQ29kZSh0aGlzLCB7XG4gICAgICAgIGZpbGVFeHQ6IFwidHN4XCIsXG4gICAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgICB9KTtcbiAgICAgIG5ldyBTYW1wbGVEaXIodGhpcywgXCJwdWJsaWNcIiwge1xuICAgICAgICBzb3VyY2VEaXI6IHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcImFzc2V0c1wiLCBcIndlYlwiLCBcInJlYWN0XCIpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5wYWNrYWdlLmFkZFBhY2thZ2VSZXNvbHV0aW9ucyhcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EZWZpbml0ZWx5VHlwZWQvRGVmaW5pdGVseVR5cGVkL2lzc3Vlcy82MjMwMFxuICAgICAgXCJAdHlwZXMvZXhwcmVzc0A0LjE3LjEzXCIsXG4gICAgICBcIkB0eXBlcy9leHByZXNzLXNlcnZlLXN0YXRpYy1jb3JlQDQuMTcuMzBcIlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdENvbXBvbmVudE9wdGlvbnMgZXh0ZW5kcyBSZWFjdFJld2lyZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBhcHBseSBvcHRpb25zIHNwZWNpZmljIGZvciBUeXBlU2NyaXB0IFJlYWN0IHByb2plY3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXNjcmlwdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBSZWFjdENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHlwZXNjcmlwdDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBOb2RlUHJvamVjdCwgb3B0aW9uczogUmVhY3RDb21wb25lbnRPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLnR5cGVzY3JpcHQgPSBvcHRpb25zLnR5cGVzY3JpcHQgPz8gZmFsc2U7XG5cbiAgICAvLyBObyBjb21waWxlIGZvciByZWFjdCBhcHBcbiAgICBwcm9qZWN0LmNvbXBpbGVUYXNrLnJlc2V0KCk7XG5cbiAgICBwcm9qZWN0LmFkZERlcHMoXCJyZWFjdFwiLCBcInJlYWN0LWRvbVwiLCBcIndlYi12aXRhbHNcIik7XG4gICAgcHJvamVjdC5hZGREZXZEZXBzKFxuICAgICAgXCJyZWFjdC1zY3JpcHRzQF41XCIsXG4gICAgICBcIkB0ZXN0aW5nLWxpYnJhcnkvamVzdC1kb21cIixcbiAgICAgIFwiQHRlc3RpbmctbGlicmFyeS9yZWFjdFwiLFxuICAgICAgXCJAdGVzdGluZy1saWJyYXJ5L3VzZXItZXZlbnRcIlxuICAgICk7XG4gICAgaWYgKHRoaXMudHlwZXNjcmlwdCkge1xuICAgICAgcHJvamVjdC5hZGREZXZEZXBzKFwiQHR5cGVzL2plc3RcIiwgXCJAdHlwZXMvcmVhY3RcIiwgXCJAdHlwZXMvcmVhY3QtZG9tXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHJld2lyZSA9IG9wdGlvbnMucmV3aXJlID8/IGZhbHNlO1xuXG4gICAgaWYgKHJld2lyZSkge1xuICAgICAgY29uc3Qgb3ZlcnJpZGVzUGF0aCA9IFwiLnByb2plbi9yZWFjdC1jb25maWctb3ZlcnJpZGVzLmpzXCI7XG4gICAgICBwcm9qZWN0LmFkZERldkRlcHMoXCJyZWFjdC1hcHAtcmV3aXJlZFwiKTtcbiAgICAgIHByb2plY3QuYWRkRmllbGRzKHsgXCJjb25maWctb3ZlcnJpZGVzLXBhdGhcIjogb3ZlcnJpZGVzUGF0aCB9KTtcblxuICAgICAgY29uc3QgY29uZmlnT3ZlcnJpZGVzID0gbmV3IFNvdXJjZUNvZGUodGhpcy5wcm9qZWN0LCBvdmVycmlkZXNQYXRoKTtcbiAgICAgIGlmICghY29uZmlnT3ZlcnJpZGVzLm1hcmtlcikge1xuICAgICAgICBjb25maWdPdmVycmlkZXMubGluZShgLy8gJHtjb25maWdPdmVycmlkZXMubWFya2VyfWApO1xuICAgICAgfVxuICAgICAgY29uZmlnT3ZlcnJpZGVzLmxpbmUoXCIvKipcIik7XG4gICAgICBjb25maWdPdmVycmlkZXMubGluZShcbiAgICAgICAgXCIgKiBPdmVycmlkZSBDUkEgY29uZmlndXJhdGlvbiB3aXRob3V0IG5lZWRpbmcgdG8gZWplY3QuXCJcbiAgICAgICk7XG4gICAgICBjb25maWdPdmVycmlkZXMubGluZShcIiAqXCIpO1xuICAgICAgY29uZmlnT3ZlcnJpZGVzLmxpbmUoXG4gICAgICAgIFwiICogQHNlZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9yZWFjdC1hcHAtcmV3aXJlZFwiXG4gICAgICApO1xuICAgICAgY29uZmlnT3ZlcnJpZGVzLmxpbmUoXCIgKi9cIik7XG4gICAgICBjb25maWdPdmVycmlkZXMub3BlbihcIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gb3ZlcnJpZGUoY29uZmlnLCBlbnYpIHtcIik7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXdpcmUpKSB7XG4gICAgICAgIGNvbmZpZ092ZXJyaWRlcy5saW5lKGBjb25maWcuJHtrZXl9ID0gJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9O2ApO1xuICAgICAgfVxuICAgICAgY29uZmlnT3ZlcnJpZGVzLmxpbmUoXCJyZXR1cm4gY29uZmlnO1wiKTtcbiAgICAgIGNvbmZpZ092ZXJyaWRlcy5jbG9zZShcIn07XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlYWN0U2NyaXB0cyA9IHJld2lyZSA/IFwicmVhY3QtYXBwLXJld2lyZWRcIiA6IFwicmVhY3Qtc2NyaXB0c1wiO1xuXG4gICAgLy8gQ3JlYXRlIFJlYWN0IEFwcCBDTEkgY29tbWFuZHMsIHNlZTogaHR0cHM6Ly9jcmVhdGUtcmVhY3QtYXBwLmRldi9kb2NzL2F2YWlsYWJsZS1zY3JpcHRzL1xuICAgIHByb2plY3QuYWRkVGFzayhcImRldlwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJTdGFydHMgdGhlIHJlYWN0IGFwcGxpY2F0aW9uXCIsXG4gICAgICBleGVjOiBgJHtyZWFjdFNjcmlwdHN9IHN0YXJ0YCxcbiAgICB9KTtcblxuICAgIHByb2plY3QuY29tcGlsZVRhc2suZXhlYyhgJHtyZWFjdFNjcmlwdHN9IGJ1aWxkYCk7XG5cbiAgICBwcm9qZWN0LnRlc3RUYXNrLmV4ZWMoYCR7cmVhY3RTY3JpcHRzfSB0ZXN0IC0td2F0Y2hBbGw9ZmFsc2VgKTtcblxuICAgIGNvbnN0IHRlc3RXYXRjaCA9IHByb2plY3QudGFza3MudHJ5RmluZChcInRlc3Q6d2F0Y2hcIik7XG4gICAgdGVzdFdhdGNoPy5yZXNldChgJHtyZWFjdFNjcmlwdHN9IHRlc3RgKTtcblxuICAgIHByb2plY3QubnBtaWdub3JlPy5leGNsdWRlKFwiIyBCdWlsZFwiLCBcIi9idWlsZC9cIik7XG4gICAgcHJvamVjdC5naXRpZ25vcmUuZXhjbHVkZShcIiMgQnVpbGRcIiwgXCIvYnVpbGQvXCIpO1xuXG4gICAgcHJvamVjdC5wYWNrYWdlLmFkZEZpZWxkKFwiZXNsaW50Q29uZmlnXCIsIHtcbiAgICAgIGV4dGVuZHM6IFtcInJlYWN0LWFwcFwiLCBcInJlYWN0LWFwcC9qZXN0XCJdLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5wYWNrYWdlLmFkZEZpZWxkKFwiYnJvd3NlcnNsaXN0XCIsIHtcbiAgICAgIHByb2R1Y3Rpb246IFtcIj4wLjIlXCIsIFwibm90IGRlYWRcIiwgXCJub3Qgb3BfbWluaSBhbGxcIl0sXG4gICAgICBkZXZlbG9wbWVudDogW1xuICAgICAgICBcImxhc3QgMSBjaHJvbWUgdmVyc2lvblwiLFxuICAgICAgICBcImxhc3QgMSBmaXJlZm94IHZlcnNpb25cIixcbiAgICAgICAgXCJsYXN0IDEgc2FmYXJpIHZlcnNpb25cIixcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFJlYWN0U2FtcGxlQ29kZU9wdGlvbnMge1xuICAvKipcbiAgICogRmlsZSBleHRlbnNpb24gZm9yIHNhbXBsZSBqYXZhc2NyaXB0IGNvZGUgdG8gYmUgc2F2ZWQgYXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwianN4XCJcbiAgICovXG4gIHJlYWRvbmx5IGZpbGVFeHQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggUmVhY3QganN4IGZpbGVzIGFyZSBkZWNsYXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xufVxuXG5jbGFzcyBSZWFjdFNhbXBsZUNvZGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGVFeHQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzcmNkaXI6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBOb2RlUHJvamVjdCwgb3B0aW9uczogUmVhY3RTYW1wbGVDb2RlT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy5maWxlRXh0ID0gb3B0aW9ucy5maWxlRXh0ID8/IFwianN4XCI7XG4gICAgdGhpcy5zcmNkaXIgPSBvcHRpb25zLnNyY2RpcjtcblxuICAgIGNvbnN0IGxvZ29TdmcgPSBbXG4gICAgICAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA4NDEuOSA1OTUuM1wiPicsXG4gICAgICAnICAgIDxnIGZpbGw9XCIjNjFEQUZCXCI+JyxcbiAgICAgICcgICAgICAgIDxwYXRoIGQ9XCJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40elwiLz4nLFxuICAgICAgJyAgICAgICAgPGNpcmNsZSBjeD1cIjQyMC45XCIgY3k9XCIyOTYuNVwiIHI9XCI0NS43XCIvPicsXG4gICAgICAnICAgICAgICA8cGF0aCBkPVwiTTUyMC41IDc4LjF6XCIvPicsXG4gICAgICBcIiAgICA8L2c+XCIsXG4gICAgICBcIjwvc3ZnPlwiLFxuICAgICAgXCJcIixcbiAgICBdO1xuXG4gICAgY29uc3QgYXBwSnN4ID0gW1xuICAgICAgXCJpbXBvcnQgbG9nbyBmcm9tICcuL2xvZ28uc3ZnJztcIixcbiAgICAgIFwiaW1wb3J0ICcuL0FwcC5jc3MnXCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJmdW5jdGlvbiBBcHAoKSB7XCIsXG4gICAgICBcIiAgcmV0dXJuIChcIixcbiAgICAgICcgICA8ZGl2IGNsYXNzTmFtZT1cIkFwcFwiPicsXG4gICAgICAnICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJBcHAtaGVhZGVyXCI+JyxcbiAgICAgICcgICAgICAgIDxpbWcgc3JjPXtsb2dvfSBjbGFzc05hbWU9XCJBcHAtbG9nb1wiIGFsdD1cImxvZ29cIiAvPicsXG4gICAgICBcIiAgICAgICAgPHA+XCIsXG4gICAgICBgICAgICAgICAgIEVkaXQgPGNvZGU+c3JjL0FwcC4ke3RoaXMuZmlsZUV4dH08L2NvZGU+IGFuZCBzYXZlIHRvIHJlbG9hZC5gLFxuICAgICAgXCIgICAgICAgIDwvcD5cIixcbiAgICAgICcgICAgICAgIDxhIGNsYXNzTmFtZT1cIkFwcC1saW5rXCInLFxuICAgICAgJyAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9yZWFjdGpzLm9yZ1wiJyxcbiAgICAgICcgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCInLFxuICAgICAgJyAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCInLFxuICAgICAgXCIgICAgICAgID5cIixcbiAgICAgIFwiICAgICAgICAgIExlYXJuIFJlYWN0XCIsXG4gICAgICBcIiAgICAgICAgPC9hPlwiLFxuICAgICAgXCIgICAgICA8L2hlYWRlcj5cIixcbiAgICAgIFwiICAgIDwvZGl2PlwiLFxuICAgICAgXCIgICk7XCIsXG4gICAgICBcIn1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcImV4cG9ydCBkZWZhdWx0IEFwcDtcIixcbiAgICAgIFwiXCIsXG4gICAgXTtcblxuICAgIGNvbnN0IGFwcENzcyA9IFtcbiAgICAgIFwiLkFwcCB7XCIsXG4gICAgICBcIiAgdGV4dC1hbGlnbjogY2VudGVyO1wiLFxuICAgICAgXCJ9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIuQXBwLWxvZ28ge1wiLFxuICAgICAgXCIgIGhlaWdodDogNDB2bWluO1wiLFxuICAgICAgXCIgIHBvaW50ZXItZXZlbnRzOiBub25lO1wiLFxuICAgICAgXCJ9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcIixcbiAgICAgIFwiICAuQXBwLWxvZ28ge1wiLFxuICAgICAgXCIgICAgYW5pbWF0aW9uOiBBcHAtbG9nby1zcGluIGluZmluaXRlIDIwcyBsaW5lYXI7XCIsXG4gICAgICBcIiAgfVwiLFxuICAgICAgXCJ9XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIuQXBwLWhlYWRlciB7XCIsXG4gICAgICBcIiAgYmFja2dyb3VuZC1jb2xvcjogIzI4MmMzNDtcIixcbiAgICAgIFwiICBtaW4taGVpZ2h0OiAxMDB2aDtcIixcbiAgICAgIFwiICBkaXNwbGF5OiBmbGV4O1wiLFxuICAgICAgXCIgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XCIsXG4gICAgICBcIiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcIixcbiAgICAgIFwiICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIixcbiAgICAgIFwiICBmb250LXNpemU6IGNhbGMoMTBweCArIDJ2bWluKTtcIixcbiAgICAgIFwiICBjb2xvcjogd2hpdGU7XCIsXG4gICAgICBcIn1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIi5BcHAtbGluayB7XCIsXG4gICAgICBcIiAgY29sb3I6ICM2MWRhZmI7XCIsXG4gICAgICBcIn1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcIkBrZXlmcmFtZXMgQXBwLWxvZ28tc3BpbiB7XCIsXG4gICAgICBcIiAgZnJvbSB7XCIsXG4gICAgICBcIiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcIixcbiAgICAgIFwiICB9XCIsXG4gICAgICBcIiAgdG8ge1wiLFxuICAgICAgXCIgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcIixcbiAgICAgIFwiICB9XCIsXG4gICAgICBcIn1cIixcbiAgICAgIFwiXCIsXG4gICAgXTtcblxuICAgIGNvbnN0IGFwcFRlc3RKc3ggPSBbXG4gICAgICBcImltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XCIsXG4gICAgICBcImltcG9ydCBBcHAgZnJvbSAnLi9BcHAnO1wiLFxuICAgICAgXCJcIixcbiAgICAgIFwidGVzdCgncmVuZGVycyBsZWFybiByZWFjdCBsaW5rJywgKCkgPT4ge1wiLFxuICAgICAgXCIgIHJlbmRlcig8QXBwIC8+KTtcIixcbiAgICAgIFwiICBjb25zdCBsaW5rRWxlbWVudCA9IHNjcmVlbi5nZXRCeVRleHQoL2xlYXJuIHJlYWN0L2kpO1wiLFxuICAgICAgXCIgIGV4cGVjdChsaW5rRWxlbWVudCkudG9CZUluVGhlRG9jdW1lbnQoKTtcIixcbiAgICAgIFwifSk7XCIsXG4gICAgICBcIlwiLFxuICAgIF07XG5cbiAgICBjb25zdCBpbmRleEpzeCA9IFtcbiAgICAgIFwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcIixcbiAgICAgIFwiaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XCIsXG4gICAgICBcImltcG9ydCAnLi9pbmRleC5jc3MnO1wiLFxuICAgICAgXCJpbXBvcnQgQXBwIGZyb20gJy4vQXBwJztcIixcbiAgICAgIFwiaW1wb3J0IHJlcG9ydFdlYlZpdGFscyBmcm9tICcuL3JlcG9ydFdlYlZpdGFscyc7XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJSZWFjdERPTS5yZW5kZXIoXCIsXG4gICAgICBcIiAgPFJlYWN0LlN0cmljdE1vZGU+XCIsXG4gICAgICBcIiAgICA8QXBwIC8+XCIsXG4gICAgICBcIiAgPC9SZWFjdC5TdHJpY3RNb2RlPixcIixcbiAgICAgIFwiICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpXCIsXG4gICAgICBcIik7XCIsXG4gICAgICBcIlwiLFxuICAgICAgXCIvLyBJZiB5b3Ugd2FudCB0byBzdGFydCBtZWFzdXJpbmcgcGVyZm9ybWFuY2UgaW4geW91ciBhcHAsIHBhc3MgYSBmdW5jdGlvblwiLFxuICAgICAgXCIvLyB0byBsb2cgcmVzdWx0cyAoZm9yIGV4YW1wbGU6IHJlcG9ydFdlYlZpdGFscyhjb25zb2xlLmxvZykpXCIsXG4gICAgICBcIi8vIG9yIHNlbmQgdG8gYW4gYW5hbHl0aWNzIGVuZHBvaW50LiBMZWFybiBtb3JlOiBodHRwczovL2JpdC5seS9DUkEtdml0YWxzXCIsXG4gICAgICBcInJlcG9ydFdlYlZpdGFscygpO1wiLFxuICAgICAgXCJcIixcbiAgICBdO1xuXG4gICAgY29uc3QgaW5kZXhDc3MgPSBbXG4gICAgICBcImJvZHkge1wiLFxuICAgICAgXCIgIG1hcmdpbjogMDtcIixcbiAgICAgIFwiICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCAnUm9ib3RvJywgJ094eWdlbicsXCIsXG4gICAgICBcIiAgICAnVWJ1bnR1JywgJ0NhbnRhcmVsbCcsICdGaXJhIFNhbnMnLCAnRHJvaWQgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsXCIsXG4gICAgICBcIiAgICBzYW5zLXNlcmlmO1wiLFxuICAgICAgXCIgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1wiLFxuICAgICAgXCIgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XCIsXG4gICAgICBcIn1cIixcbiAgICAgIFwiXCIsXG4gICAgICBcImNvZGUge1wiLFxuICAgICAgXCIgIGZvbnQtZmFtaWx5OiBzb3VyY2UtY29kZS1wcm8sIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAnQ291cmllciBOZXcnLFwiLFxuICAgICAgXCIgICAgbW9ub3NwYWNlO1wiLFxuICAgICAgXCJ9XCIsXG4gICAgICBcIlwiLFxuICAgIF07XG5cbiAgICBjb25zdCByZXBvcnRXZWJWaXRhbHNKcyA9IFtcbiAgICAgIFwiaW1wb3J0IHsgUmVwb3J0SGFuZGxlciB9IGZyb20gJ3dlYi12aXRhbHMnO1wiLFxuICAgICAgXCJcIixcbiAgICAgIFwiY29uc3QgcmVwb3J0V2ViVml0YWxzID0gKG9uUGVyZkVudHJ5PzogUmVwb3J0SGFuZGxlcikgPT4ge1wiLFxuICAgICAgXCIgIGlmIChvblBlcmZFbnRyeSAmJiBvblBlcmZFbnRyeSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XCIsXG4gICAgICBcIiAgICBpbXBvcnQoJ3dlYi12aXRhbHMnKS50aGVuKFwiLFxuICAgICAgXCIgICAgICAoeyBnZXRDTFMsIGdldEZJRCwgZ2V0RkNQLCBnZXRMQ1AsIGdldFRURkIgfSkgPT4ge1wiLFxuICAgICAgXCIgICAgICAgIGdldENMUyhvblBlcmZFbnRyeSk7XCIsXG4gICAgICBcIiAgICAgICAgZ2V0RklEKG9uUGVyZkVudHJ5KTtcIixcbiAgICAgIFwiICAgICAgICBnZXRGQ1Aob25QZXJmRW50cnkpO1wiLFxuICAgICAgXCIgICAgICAgIGdldExDUChvblBlcmZFbnRyeSk7XCIsXG4gICAgICBcIiAgICAgICAgZ2V0VFRGQihvblBlcmZFbnRyeSk7XCIsXG4gICAgICBcIiAgICAgIH0sXCIsXG4gICAgICBcIiAgICAgICgpID0+IHt9XCIsXG4gICAgICBcIiAgICApO1wiLFxuICAgICAgXCIgIH1cIixcbiAgICAgIFwifTtcIixcbiAgICAgIFwiXCIsXG4gICAgICBcImV4cG9ydCBkZWZhdWx0IHJlcG9ydFdlYlZpdGFscztcIixcbiAgICBdO1xuXG4gICAgY29uc3Qgc2V0dXBUZXN0c0pzID0gW1xuICAgICAgXCIvLyBqZXN0LWRvbSBhZGRzIGN1c3RvbSBqZXN0IG1hdGNoZXJzIGZvciBhc3NlcnRpbmcgb24gRE9NIG5vZGVzLlwiLFxuICAgICAgXCIvLyBhbGxvd3MgeW91IHRvIGRvIHRoaW5ncyBsaWtlOlwiLFxuICAgICAgXCIvLyBleHBlY3QoZWxlbWVudCkudG9IYXZlVGV4dENvbnRlbnQoL3JlYWN0L2kpXCIsXG4gICAgICBcIi8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS90ZXN0aW5nLWxpYnJhcnkvamVzdC1kb21cIixcbiAgICAgIFwiaW1wb3J0ICdAdGVzdGluZy1saWJyYXJ5L2plc3QtZG9tJztcIixcbiAgICAgIFwiXCIsXG4gICAgXTtcblxuICAgIGNvbnN0IHJlYWN0VHlwZURlZiA9IFsnLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJyZWFjdC1zY3JpcHRzXCIgLz4nXTtcblxuICAgIC8vIGpzL3RzIG5vdCBqc3gvdHN4XG4gICAgY29uc3QgZmlsZUV4dFdpdGhvdXRYID0gdGhpcy5maWxlRXh0LnJlcGxhY2UoXCJ4XCIsIFwiXCIpO1xuXG4gICAgbmV3IFNhbXBsZURpcihwcm9qZWN0LCB0aGlzLnNyY2Rpciwge1xuICAgICAgZmlsZXM6IHtcbiAgICAgICAgXCJyZWFjdC1hcHAtZW52LmQudHNcIjogcmVhY3RUeXBlRGVmLmpvaW4oXCJcXG5cIiksXG4gICAgICAgIFwibG9nby5zdmdcIjogbG9nb1N2Zy5qb2luKFwiXFxuXCIpLFxuICAgICAgICBbXCJBcHAuXCIgKyB0aGlzLmZpbGVFeHRdOiBhcHBKc3guam9pbihcIlxcblwiKSxcbiAgICAgICAgW1wiQXBwLnRlc3QuXCIgKyB0aGlzLmZpbGVFeHRdOiBhcHBUZXN0SnN4LmpvaW4oXCJcXG5cIiksXG4gICAgICAgIFwiQXBwLmNzc1wiOiBhcHBDc3Muam9pbihcIlxcblwiKSxcbiAgICAgICAgW1wiaW5kZXguXCIgKyB0aGlzLmZpbGVFeHRdOiBpbmRleEpzeC5qb2luKFwiXFxuXCIpLFxuICAgICAgICBcImluZGV4LmNzc1wiOiBpbmRleENzcy5qb2luKFwiXFxuXCIpLFxuICAgICAgICBbXCJyZXBvcnRXZWJWaXRhbHMuXCIgKyBmaWxlRXh0V2l0aG91dFhdOiByZXBvcnRXZWJWaXRhbHNKcy5qb2luKFwiXFxuXCIpLFxuICAgICAgICBbXCJzZXR1cFRlc3RzLlwiICsgZmlsZUV4dFdpdGhvdXRYXTogc2V0dXBUZXN0c0pzLmpvaW4oXCJcXG5cIiksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgTm8gbG9uZ2VyIHVzZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RUeXBlRGVmT3B0aW9ucyBleHRlbmRzIEZpbGVCYXNlT3B0aW9ucyB7fVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIE5vIGxvbmdlciB1c2VkLlxuICovXG5leHBvcnQgY2xhc3MgUmVhY3RUeXBlRGVmIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9qZWN0OiBSZWFjdFR5cGVTY3JpcHRQcm9qZWN0LFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogUmVhY3RUeXBlRGVmT3B0aW9ucyA9IHt9XG4gICkge1xuICAgIHN1cGVyKHByb2plY3QsIGZpbGVQYXRoLCBvcHRpb25zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplQ29udGVudChfOiBJUmVzb2x2ZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBbJy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwicmVhY3Qtc2NyaXB0c1wiIC8+J10uam9pbihcIlxcblwiKTtcbiAgfVxufVxuIl19
@@ -33,5 +33,5 @@ class TailwindConfig {
33
33
  }
34
34
  exports.TailwindConfig = TailwindConfig;
35
35
  _a = JSII_RTTI_SYMBOL_1;
36
- TailwindConfig[_a] = { fqn: "projen.web.TailwindConfig", version: "0.84.7" };
36
+ TailwindConfig[_a] = { fqn: "projen.web.TailwindConfig", version: "0.84.9" };
37
37
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbHdpbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2ViL3RhaWx3aW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esa0NBQW1DO0FBU25DOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLGNBQWM7SUFJekIsWUFBWSxPQUFvQixFQUFFLE9BQStCO1FBQy9ELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxFQUFFLFFBQVEsSUFBSSxzQkFBc0IsQ0FBQztRQUU1RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksZUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQy9DLEdBQUcsRUFBRTtnQkFDSCxPQUFPLEVBQUUsRUFBRTtnQkFDWCxLQUFLLEVBQUUsS0FBSztnQkFDWixLQUFLLEVBQUU7b0JBQ0wsTUFBTSxFQUFFLEVBQUU7aUJBQ1g7Z0JBQ0QsUUFBUSxFQUFFO29CQUNSLE1BQU0sRUFBRSxFQUFFO2lCQUNYO2dCQUNELE9BQU8sRUFBRSxFQUFFO2FBQ1o7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7O0FBdEJILHdDQXVCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGVQcm9qZWN0IH0gZnJvbSBcIi4uL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IEpzb25GaWxlIH0gZnJvbSBcIi4uL2pzb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBUYWlsd2luZENvbmZpZ09wdGlvbnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgXCJ0YWlsd2luZC5jb25maWcuanNvblwiXG4gICAqL1xuICByZWFkb25seSBmaWxlTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWNsYXJlcyBhIFRhaWx3aW5kIENTUyBjb25maWd1cmF0aW9uIGZpbGUuXG4gKlxuICogVGhlcmUgYXJlIG11bHRpcGxlIHdheXMgdG8gYWRkIFRhaWx3aW5kIENTUyBpbiB5b3VyIG5vZGUgcHJvamVjdCAtIHNlZTpcbiAqIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaW5zdGFsbGF0aW9uXG4gKlxuICogQHNlZSBQb3N0Q3NzXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWlsd2luZENvbmZpZyB7XG4gIHB1YmxpYyByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsZTogSnNvbkZpbGU7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM/OiBUYWlsd2luZENvbmZpZ09wdGlvbnMpIHtcbiAgICB0aGlzLmZpbGVOYW1lID0gb3B0aW9ucz8uZmlsZU5hbWUgPz8gXCJ0YWlsd2luZC5jb25maWcuanNvblwiO1xuXG4gICAgdGhpcy5maWxlID0gbmV3IEpzb25GaWxlKHByb2plY3QsIHRoaXMuZmlsZU5hbWUsIHtcbiAgICAgIG9iajoge1xuICAgICAgICBjb250ZW50OiBbXSxcbiAgICAgICAgbWVkaWE6IGZhbHNlLFxuICAgICAgICB0aGVtZToge1xuICAgICAgICAgIGV4dGVuZDoge30sXG4gICAgICAgIH0sXG4gICAgICAgIHZhcmlhbnRzOiB7XG4gICAgICAgICAgZXh0ZW5kOiB7fSxcbiAgICAgICAgfSxcbiAgICAgICAgcGx1Z2luczogW10sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5ucG1pZ25vcmU/LmV4Y2x1ZGUoYC8ke3RoaXMuZmlsZU5hbWV9YCk7XG4gIH1cbn1cbiJdfQ==
package/lib/xmlfile.js CHANGED
@@ -32,5 +32,5 @@ class XmlFile extends object_file_1.ObjectFile {
32
32
  }
33
33
  exports.XmlFile = XmlFile;
34
34
  _a = JSII_RTTI_SYMBOL_1;
35
- XmlFile[_a] = { fqn: "projen.XmlFile", version: "0.84.7" };
35
+ XmlFile[_a] = { fqn: "projen.XmlFile", version: "0.84.9" };
36
36
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1sZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy94bWxmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQWtEO0FBRWxELCtDQUE4RDtBQVE5RDs7Ozs7R0FLRztBQUNILE1BQWEsT0FBUSxTQUFRLHdCQUFVO0lBQ3JDLFlBQ0UsT0FBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsVUFBMEIsRUFBRTtRQUU1QixLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRVMsaUJBQWlCLENBQUMsUUFBbUI7UUFDN0MsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFBLG9CQUFTLEVBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzFELFdBQVcsRUFBRSxJQUFJO1lBQ2pCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUN0QixDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0wsU0FBUztZQUNULEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNwRCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNmLENBQUM7O0FBeEJILDBCQXlCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZSBhcyBjcmVhdGV4bWwgfSBmcm9tIFwieG1sYnVpbGRlcjJcIjtcbmltcG9ydCB7IElSZXNvbHZlciB9IGZyb20gXCIuL2ZpbGVcIjtcbmltcG9ydCB7IE9iamVjdEZpbGUsIE9iamVjdEZpbGVPcHRpb25zIH0gZnJvbSBcIi4vb2JqZWN0LWZpbGVcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi9wcm9qZWN0XCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFhtbEZpbGVgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFhtbEZpbGVPcHRpb25zIGV4dGVuZHMgT2JqZWN0RmlsZU9wdGlvbnMge31cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIFhNTCBmaWxlLlxuICpcbiAqIE9iamVjdHMgcGFzc2VkIGluIHdpbGwgYmUgc3ludGhlc2l6ZWQgdXNpbmcgdGhlIG5wbSBcInhtbFwiIGxpYnJhcnkuXG4gKiBAc2VlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3htbFxuICovXG5leHBvcnQgY2xhc3MgWG1sRmlsZSBleHRlbmRzIE9iamVjdEZpbGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9qZWN0OiBQcm9qZWN0LFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogWG1sRmlsZU9wdGlvbnMgPSB7fVxuICApIHtcbiAgICBzdXBlcihwcm9qZWN0LCBmaWxlUGF0aCwgb3B0aW9ucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUNvbnRlbnQocmVzb2x2ZXI6IElSZXNvbHZlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgb2JqID0gc3VwZXIuc3ludGhlc2l6ZUNvbnRlbnQocmVzb2x2ZXIpO1xuICAgIGlmICghb2JqKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHhtbFN0cmluZyA9IGNyZWF0ZXhtbCh7IGVuY29kaW5nOiBcIlVURi04XCIgfSwgb2JqKS5lbmQoe1xuICAgICAgcHJldHR5UHJpbnQ6IHRydWUsXG4gICAgICBpbmRlbnQ6IFwiIFwiLnJlcGVhdCg0KSxcbiAgICB9KTtcblxuICAgIHJldHVybiBbXG4gICAgICB4bWxTdHJpbmcsXG4gICAgICAuLi4odGhpcy5tYXJrZXIgPyBbYDwhLS0gJHt0aGlzLm1hcmtlcn0gLS0+YF0gOiBbXSksXG4gICAgXS5qb2luKFwiXFxuXCIpO1xuICB9XG59XG4iXX0=
package/lib/yaml.js CHANGED
@@ -30,5 +30,5 @@ class YamlFile extends object_file_1.ObjectFile {
30
30
  }
31
31
  exports.YamlFile = YamlFile;
32
32
  _a = JSII_RTTI_SYMBOL_1;
33
- YamlFile[_a] = { fqn: "projen.YamlFile", version: "0.84.7" };
33
+ YamlFile[_a] = { fqn: "projen.YamlFile", version: "0.84.9" };
34
34
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy95YW1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsNkJBQTZCO0FBRTdCLCtDQUE4RDtBQWM5RDs7R0FFRztBQUNILE1BQWEsUUFBUyxTQUFRLHdCQUFVO0lBTXRDLFlBQVksS0FBaUIsRUFBRSxRQUFnQixFQUFFLE9BQXdCO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVTLGlCQUFpQixDQUFDLFFBQW1CO1FBQzdDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTztZQUNMLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxFQUFFO1lBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMvQixNQUFNLEVBQUUsQ0FBQztnQkFDVCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7YUFDMUIsQ0FBQztTQUNILENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2YsQ0FBQzs7QUF6QkgsNEJBMEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBZQU1MIGZyb20gXCJ5YW1sXCI7XG5pbXBvcnQgeyBJUmVzb2x2ZXIgfSBmcm9tIFwiLi9maWxlXCI7XG5pbXBvcnQgeyBPYmplY3RGaWxlLCBPYmplY3RGaWxlT3B0aW9ucyB9IGZyb20gXCIuL29iamVjdC1maWxlXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEpzb25GaWxlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBZYW1sRmlsZU9wdGlvbnMgZXh0ZW5kcyBPYmplY3RGaWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNYXhpbXVtIGxpbmUgd2lkdGggKHNldCB0byAwIHRvIGRpc2FibGUgZm9sZGluZykuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gMFxuICAgKi9cbiAgcmVhZG9ubHkgbGluZVdpZHRoPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBZQU1MIGZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBZYW1sRmlsZSBleHRlbmRzIE9iamVjdEZpbGUge1xuICAvKipcbiAgICogTWF4aW11bSBsaW5lIHdpZHRoIChzZXQgdG8gMCB0byBkaXNhYmxlIGZvbGRpbmcpLlxuICAgKi9cbiAgcHVibGljIGxpbmVXaWR0aDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBJQ29uc3RydWN0LCBmaWxlUGF0aDogc3RyaW5nLCBvcHRpb25zOiBZYW1sRmlsZU9wdGlvbnMpIHtcbiAgICBzdXBlcihzY29wZSwgZmlsZVBhdGgsIG9wdGlvbnMpO1xuICAgIHRoaXMubGluZVdpZHRoID0gb3B0aW9ucy5saW5lV2lkdGggPz8gMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplQ29udGVudChyZXNvbHZlcjogSVJlc29sdmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBqc29uID0gc3VwZXIuc3ludGhlc2l6ZUNvbnRlbnQocmVzb2x2ZXIpO1xuICAgIGlmICghanNvbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAgLi4uKHRoaXMubWFya2VyID8gW2AjICR7dGhpcy5tYXJrZXJ9YF0gOiBbXSksXG4gICAgICBcIlwiLFxuICAgICAgWUFNTC5zdHJpbmdpZnkoSlNPTi5wYXJzZShqc29uKSwge1xuICAgICAgICBpbmRlbnQ6IDIsXG4gICAgICAgIGxpbmVXaWR0aDogdGhpcy5saW5lV2lkdGgsXG4gICAgICB9KSxcbiAgICBdLmpvaW4oXCJcXG5cIik7XG4gIH1cbn1cbiJdfQ==