projen 0.103.22 → 0.103.23

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 (166) hide show
  1. package/.jsii +346 -4
  2. package/lib/ai-instructions.js +2 -2
  3. package/lib/awscdk/auto-discover.js +6 -6
  4. package/lib/awscdk/awscdk-app-java.js +1 -1
  5. package/lib/awscdk/awscdk-app-py.js +1 -1
  6. package/lib/awscdk/awscdk-app-ts.js +1 -1
  7. package/lib/awscdk/awscdk-construct.js +1 -1
  8. package/lib/awscdk/awscdk-deps-java.js +1 -1
  9. package/lib/awscdk/awscdk-deps-js.js +1 -1
  10. package/lib/awscdk/awscdk-deps-py.js +1 -1
  11. package/lib/awscdk/awscdk-deps.js +1 -1
  12. package/lib/awscdk/cdk-config.js +3 -3
  13. package/lib/awscdk/cdk-tasks.js +1 -1
  14. package/lib/awscdk/integration-test.js +1 -1
  15. package/lib/awscdk/lambda-extension.js +1 -1
  16. package/lib/awscdk/lambda-function.js +2 -2
  17. package/lib/build/build-workflow.js +1 -1
  18. package/lib/cdk/auto-discover-base.js +2 -2
  19. package/lib/cdk/construct-lib.js +1 -1
  20. package/lib/cdk/integration-test-base.js +1 -1
  21. package/lib/cdk/jsii-build.js +4 -4
  22. package/lib/cdk/jsii-docgen.js +1 -1
  23. package/lib/cdk/jsii-project.js +1 -1
  24. package/lib/cdk8s/auto-discover.js +2 -2
  25. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  26. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  27. package/lib/cdk8s/cdk8s-construct.js +1 -1
  28. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  29. package/lib/cdk8s/cdk8s-deps.js +1 -1
  30. package/lib/cdk8s/integration-test.js +1 -1
  31. package/lib/cdktf/cdktf-construct.js +1 -1
  32. package/lib/cdktn/cdktn-app-ts.js +1 -1
  33. package/lib/cdktn/cdktn-config.js +1 -1
  34. package/lib/cdktn/cdktn-construct.js +1 -1
  35. package/lib/cdktn/cdktn-deps.js +1 -1
  36. package/lib/cdktn/cdktn-tasks.js +1 -1
  37. package/lib/circleci/circleci.js +1 -1
  38. package/lib/component.js +2 -2
  39. package/lib/dependencies.js +1 -1
  40. package/lib/dev-env.js +1 -1
  41. package/lib/docker-compose/docker-compose-service.js +1 -1
  42. package/lib/docker-compose/docker-compose.js +1 -1
  43. package/lib/file.js +1 -1
  44. package/lib/gitattributes.js +1 -1
  45. package/lib/github/actions-provider.js +1 -1
  46. package/lib/github/actions.const.d.ts +5 -2
  47. package/lib/github/actions.const.js +11 -6
  48. package/lib/github/auto-approve.js +1 -1
  49. package/lib/github/auto-merge.js +1 -1
  50. package/lib/github/auto-queue.js +1 -1
  51. package/lib/github/dependabot.js +1 -1
  52. package/lib/github/dependency-review.js +3 -3
  53. package/lib/github/github-credentials.js +3 -3
  54. package/lib/github/github-project.js +1 -1
  55. package/lib/github/github.js +1 -1
  56. package/lib/github/index.d.ts +1 -0
  57. package/lib/github/index.js +2 -1
  58. package/lib/github/merge-queue.js +1 -1
  59. package/lib/github/mergify.js +1 -1
  60. package/lib/github/pr-template.js +1 -1
  61. package/lib/github/pull-request-backport.js +3 -3
  62. package/lib/github/pull-request-lint.js +4 -4
  63. package/lib/github/stale.js +3 -3
  64. package/lib/github/task-workflow-job.js +1 -1
  65. package/lib/github/task-workflow.js +1 -1
  66. package/lib/github/workflow-actions.js +4 -4
  67. package/lib/github/workflow-jobs.js +1 -1
  68. package/lib/github/workflow-steps.js +5 -5
  69. package/lib/github/workflows.js +7 -7
  70. package/lib/gitlab/configuration.js +1 -1
  71. package/lib/gitlab/gitlab-configuration.js +1 -1
  72. package/lib/gitlab/nested-configuration.js +1 -1
  73. package/lib/gitpod.js +1 -1
  74. package/lib/ignore-file.js +1 -1
  75. package/lib/ini.js +1 -1
  76. package/lib/java/java-project.js +1 -1
  77. package/lib/java/junit.js +1 -1
  78. package/lib/java/maven-compile.js +1 -1
  79. package/lib/java/maven-packaging.js +1 -1
  80. package/lib/java/maven-sample.js +1 -1
  81. package/lib/java/pom.js +2 -2
  82. package/lib/java/projenrc.js +1 -1
  83. package/lib/javascript/biome/biome.js +1 -1
  84. package/lib/javascript/bundler.js +1 -1
  85. package/lib/javascript/eslint.js +1 -1
  86. package/lib/javascript/jest.js +4 -4
  87. package/lib/javascript/license-checker.js +1 -1
  88. package/lib/javascript/node-config-file.js +1 -1
  89. package/lib/javascript/node-package.js +1 -1
  90. package/lib/javascript/node-project.js +8 -8
  91. package/lib/javascript/npm-config.js +1 -1
  92. package/lib/javascript/pnpm-workspace-config.js +2 -2
  93. package/lib/javascript/pnpm-workspace.js +1 -1
  94. package/lib/javascript/prettier.js +1 -1
  95. package/lib/javascript/projenrc.js +1 -1
  96. package/lib/javascript/typescript-config.js +2 -2
  97. package/lib/javascript/upgrade-dependencies.js +2 -2
  98. package/lib/javascript/yarnrc.js +1 -1
  99. package/lib/json-patch.js +1 -1
  100. package/lib/json.js +1 -1
  101. package/lib/license.js +1 -1
  102. package/lib/logger.js +1 -1
  103. package/lib/makefile.js +1 -1
  104. package/lib/object-file.js +1 -1
  105. package/lib/polaris/coverity-go.js +1 -1
  106. package/lib/polaris/coverity-java.js +1 -1
  107. package/lib/polaris/coverity-javascript.js +1 -1
  108. package/lib/polaris/coverity.js +1 -1
  109. package/lib/project-build.js +1 -1
  110. package/lib/project-tree.js +1 -1
  111. package/lib/project.js +1 -1
  112. package/lib/projects.js +1 -1
  113. package/lib/projenrc-json.js +1 -1
  114. package/lib/projenrc.js +1 -1
  115. package/lib/properties-file.js +1 -1
  116. package/lib/python/pip.js +1 -1
  117. package/lib/python/poetry.js +2 -2
  118. package/lib/python/projenrc.js +1 -1
  119. package/lib/python/pyproject-toml-file.js +1 -1
  120. package/lib/python/pytest-sample.js +1 -1
  121. package/lib/python/pytest.js +1 -1
  122. package/lib/python/python-project.js +1 -1
  123. package/lib/python/python-sample.js +1 -1
  124. package/lib/python/requirements-file.js +1 -1
  125. package/lib/python/setuppy.js +1 -1
  126. package/lib/python/setuptools.js +1 -1
  127. package/lib/python/uv-config.js +1 -1
  128. package/lib/python/uv.js +1 -1
  129. package/lib/python/venv.js +1 -1
  130. package/lib/readme.js +1 -1
  131. package/lib/release/publisher.js +4 -4
  132. package/lib/release/release-trigger.js +1 -1
  133. package/lib/release/release.js +1 -1
  134. package/lib/renovatebot.js +1 -1
  135. package/lib/run-task.cjs +1 -1
  136. package/lib/sample-file.js +2 -2
  137. package/lib/script-runner.js +1 -1
  138. package/lib/sonarqube/javascript.js +1 -1
  139. package/lib/sonarqube/rust.js +1 -1
  140. package/lib/sonarqube/sonarqube.js +1 -1
  141. package/lib/sonarqube/typescript.js +1 -1
  142. package/lib/source-code.js +1 -1
  143. package/lib/task-shell.js +1 -1
  144. package/lib/task.js +1 -1
  145. package/lib/tasks.js +1 -1
  146. package/lib/testing.js +1 -1
  147. package/lib/textfile.js +1 -1
  148. package/lib/toml.js +1 -1
  149. package/lib/typescript/projenrc-ts.js +1 -1
  150. package/lib/typescript/projenrc.js +1 -1
  151. package/lib/typescript/typescript-runner.js +1 -1
  152. package/lib/typescript/typescript-typedoc.js +1 -1
  153. package/lib/typescript/typescript.js +5 -5
  154. package/lib/version.js +2 -2
  155. package/lib/vscode/devcontainer.js +1 -1
  156. package/lib/vscode/extensions.js +1 -1
  157. package/lib/vscode/launch-config.js +1 -1
  158. package/lib/vscode/settings.js +1 -1
  159. package/lib/vscode/vscode.js +1 -1
  160. package/lib/web/next.js +3 -3
  161. package/lib/web/postcss.js +1 -1
  162. package/lib/web/react.js +3 -3
  163. package/lib/web/tailwind.js +1 -1
  164. package/lib/xmlfile.js +1 -1
  165. package/lib/yaml.js +1 -1
  166. package/package.json +1 -1
@@ -51,7 +51,7 @@ var ValidateTsconfig;
51
51
  * }));
52
52
  */
53
53
  class JsiiBuild {
54
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiBuild", version: "0.103.22" };
54
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiBuild", version: "0.103.23" };
55
55
  options;
56
56
  extraJobOptions;
57
57
  constructor(options = {}, extraJobOptions) {
@@ -322,14 +322,14 @@ class JsiiBuild {
322
322
  if (project.package.packageManager === javascript_1.NodePackageManager.PNPM) {
323
323
  bootstrapSteps.push({
324
324
  name: "Setup pnpm",
325
- uses: actions_const_1.GitHubActions.PNPM_ACTION_SETUP,
325
+ uses: actions_const_1.ActionRefs.PNPM_ACTION_SETUP,
326
326
  with: { version: project.package.pnpmVersion },
327
327
  });
328
328
  }
329
329
  else if (project.package.packageManager === javascript_1.NodePackageManager.BUN) {
330
330
  bootstrapSteps.push({
331
331
  name: "Setup bun",
332
- uses: actions_const_1.GitHubActions.OVEN_SH_SETUP_BUN,
332
+ uses: actions_const_1.ActionRefs.OVEN_SH_SETUP_BUN,
333
333
  with: { "bun-version": project.package.bunVersion },
334
334
  });
335
335
  }
@@ -374,4 +374,4 @@ const publishTo = {
374
374
  dotnet: "publishToNuget",
375
375
  go: "publishToGo",
376
376
  };
377
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1idWlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGsvanNpaS1idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EscUNBQTBDO0FBQzFDLCtDQUEyQztBQU8zQyxvREFHaUM7QUFDakMsMkRBQXdEO0FBQ3hELDZEQUF5RDtBQUV6RCwrREFBMEQ7QUFDMUQsOENBQW1EO0FBRW5ELDZDQUFpRDtBQU1qRCxzREFBMEQ7QUFDMUQsOENBQWtEO0FBRWxELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDO0FBQ3BDLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBRTFDOztHQUVHO0FBQ0gsSUFBWSxnQkFvQlg7QUFwQkQsV0FBWSxnQkFBZ0I7SUFDMUI7O09BRUc7SUFDSCxxQ0FBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILDJDQUF1QixDQUFBO0lBRXZCOztPQUVHO0lBQ0gsdUNBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCwrQkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQXBCVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQW9CM0I7QUFxS0Q7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQWEsU0FBUzs7SUFDSCxPQUFPLENBQW1CO0lBQzFCLGVBQWUsQ0FBZTtJQUUvQyxZQUNFLFVBQTRCLEVBQUUsRUFDOUIsZUFBeUM7UUFFekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQWlCLENBQUM7SUFDakUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUSxDQUFDLFNBQXFCO1FBQ25DLE9BQU8sU0FBUyxZQUFZLDhCQUFpQixDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBQyxPQUFtQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVC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QU0sT0FBTyxDQUFDLGtCQUFrQixJQUFJLHNCQUFzQixFQUFFO1NBQ2xFLEVBQ0Q7WUFDRSxJQUFJLEVBQUUsVUFBVSxNQUFNLFdBQVc7WUFDakMsR0FBRyxFQUFFLE1BQU0sT0FBTyxPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7U0FDNUQsRUFDRDtZQUNFLElBQUksRUFBRSxXQUFXLE1BQU0sV0FBVztZQUNsQyxHQUFHLEVBQUUsTUFBTSxPQUFPLElBQUksT0FBTyxDQUFDLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTtTQUNqRixDQUNGLENBQUM7UUFFRixPQUFPO1lBQ0wsWUFBWSxFQUFFLHVCQUFjLENBQUMsTUFBTSxDQUFDO1lBQ3BDLGNBQWM7WUFDZCxjQUFjO1NBQ2YsQ0FBQztJQUNKLENBQUM7O0FBdlpILDhCQXdaQztBQVlELE1BQU0sU0FBUyxHQUFvQjtJQUNqQyxFQUFFLEVBQUUsY0FBYztJQUNsQixJQUFJLEVBQUUsZ0JBQWdCO0lBQ3RCLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCLE1BQU0sRUFBRSxnQkFBZ0I7SUFDeEIsRUFBRSxFQUFFLGFBQWE7Q0FDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSUNvbnN0cnVjdCwgSU1peGluIH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB0eXBlIHsgVGFzayB9IGZyb20gXCIuLlwiO1xuaW1wb3J0IHR5cGUgeyBKc2lpUGFjbWFrVGFyZ2V0IH0gZnJvbSBcIi4vY29uc3RzXCI7XG5pbXBvcnQgeyBKU0lJX1RPT0xDSEFJTiB9IGZyb20gXCIuL2NvbnN0c1wiO1xuaW1wb3J0IHsgSnNpaURvY2dlbiB9IGZyb20gXCIuL2pzaWktZG9jZ2VuXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEpzaWlEb3ROZXRUYXJnZXQsXG4gIEpzaWlHb1RhcmdldCxcbiAgSnNpaUphdmFUYXJnZXQsXG4gIEpzaWlQeXRob25UYXJnZXQsXG59IGZyb20gXCIuL2pzaWktcHJvamVjdFwiO1xuaW1wb3J0IHtcbiAgUFVMTF9SRVFVRVNUX1JFUE9TSVRPUlksXG4gIFBVTExfUkVRVUVTVF9TSEEsXG59IGZyb20gXCIuLi9idWlsZC9wcml2YXRlL2NvbnN0c1wiO1xuaW1wb3J0IHsgR2l0SHViQWN0aW9ucyB9IGZyb20gXCIuLi9naXRodWIvYWN0aW9ucy5jb25zdFwiO1xuaW1wb3J0IHsgV29ya2Zsb3dTdGVwcyB9IGZyb20gXCIuLi9naXRodWIvd29ya2Zsb3ctc3RlcHNcIjtcbmltcG9ydCB0eXBlIHsgSm9iLCBTdGVwLCBUb29scyB9IGZyb20gXCIuLi9naXRodWIvd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uIH0gZnJvbSBcIi4uL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IE5vZGVQYWNrYWdlTWFuYWdlciB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgdHlwZSB7IFR5cGVzY3JpcHRDb25maWcgfSBmcm9tIFwiLi4vamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgaXNZYXJuQmVycnkgfSBmcm9tIFwiLi4vamF2YXNjcmlwdC91dGlsXCI7XG5pbXBvcnQgdHlwZSB7XG4gIENvbW1vblB1Ymxpc2hPcHRpb25zLFxuICBOcG1QdWJsaXNoT3B0aW9ucyxcbiAgUHVibGlzaGVyLFxufSBmcm9tIFwiLi4vcmVsZWFzZVwiO1xuaW1wb3J0IHsgZmlsdGVyZWRSdW5zT25PcHRpb25zIH0gZnJvbSBcIi4uL3J1bm5lci1vcHRpb25zXCI7XG5pbXBvcnQgeyBUeXBlU2NyaXB0UHJvamVjdCB9IGZyb20gXCIuLi90eXBlc2NyaXB0XCI7XG5cbmNvbnN0IFJFUE9fVEVNUF9ESVJFQ1RPUlkgPSBcIi5yZXBvXCI7XG5jb25zdCBCVUlMRF9BUlRJRkFDVF9PTERfRElSID0gXCJkaXN0Lm9sZFwiO1xuXG4vKipcbiAqIExldmVsIG9mIHRzY29uZmlnIHZhbGlkYXRpb24ganNpaSBzaG91bGQgcGVyZm9ybS5cbiAqL1xuZXhwb3J0IGVudW0gVmFsaWRhdGVUc2NvbmZpZyB7XG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYWdhaW5zdCBhIHN0cmljdCBydWxlIHNldCBkZXNpZ25lZCBmb3Igd2lkZXNwcmVhZCBzdXBwb3J0IGFuZCBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIFNUUklDVCA9IFwic3RyaWN0XCIsXG5cbiAgLyoqXG4gICAqIEVuZm9yY2VzIGEgdHNjb25maWcgYXMgaWYgaXQgd2VyZSBnZW5lcmF0ZWQgYnkganNpaS5cbiAgICovXG4gIEdFTkVSQVRFRCA9IFwiZ2VuZXJhdGVkXCIsXG5cbiAgLyoqXG4gICAqIE9ubHkgcmVqZWN0IG9wdGlvbnMga25vd24gdG8gYmUgaW5jb21wYXRpYmxlIHdpdGgganNpaS5cbiAgICovXG4gIE1JTklNQUwgPSBcIm1pbmltYWxcIixcblxuICAvKipcbiAgICogRGlzYWJsZXMgYWxsIGNvbmZpZyB2YWxpZGF0aW9uLiBVc2UgYXQgeW91ciBvd24gcmlzay5cbiAgICovXG4gIE9GRiA9IFwib2ZmXCIsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEpzaWlCdWlsZGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaUJ1aWxkT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQdWJsaXNoIHRvIG1hdmVuXG4gICAqIEBkZWZhdWx0IC0gbm8gcHVibGlzaGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvTWF2ZW4/OiBKc2lpSmF2YVRhcmdldDtcblxuICAvKipcbiAgICogUHVibGlzaCB0byBweXBpXG4gICAqIEBkZWZhdWx0IC0gbm8gcHVibGlzaGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvUHlwaT86IEpzaWlQeXRob25UYXJnZXQ7XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggR28gYmluZGluZ3MgdG8gYSBnaXQgcmVwb3NpdG9yeS5cbiAgICogQGRlZmF1bHQgLSBubyBwdWJsaXNoaW5nXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVG9Hbz86IEpzaWlHb1RhcmdldDtcblxuICAvKipcbiAgICogUHVibGlzaCB0byBOdUdldFxuICAgKiBAZGVmYXVsdCAtIG5vIHB1Ymxpc2hpbmdcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb051Z2V0PzogSnNpaURvdE5ldFRhcmdldDtcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSBydW4gQVBJIGNvbXBhdGliaWxpdHkgdGVzdCBhZ2FpbnN0IHRoZSBsYXRlc3QgdmVyc2lvbiBwdWJsaXNoZWQgdG8gbnBtIGFmdGVyIGNvbXBpbGF0aW9uLlxuICAgKlxuICAgKiAtIFlvdSBjYW4gbWFudWFsbHkgcnVuIGNvbXBhdGliaWxpdHkgdGVzdHMgdXNpbmcgYHlhcm4gY29tcGF0YCBpZiB0aGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQuXG4gICAqIC0gWW91IGNhbiBpZ25vcmUgY29tcGF0aWJpbGl0eSBmYWlsdXJlcyBieSBhZGRpbmcgbGluZXMgdG8gYSBcIi5jb21wYXRpZ25vcmVcIiBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGF0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgaWdub3JlIGZpbGUgZm9yIEFQSSBjb21wYXRpYmlsaXR5IHRlc3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIi5jb21wYXRpZ25vcmVcIlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGF0SWdub3JlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY2NlcHRzIGEgbGlzdCBvZiBnbG9iIHBhdHRlcm5zLiBGaWxlcyBtYXRjaGluZyBhbnkgb2YgdGhvc2UgcGF0dGVybnMgd2lsbCBiZSBleGNsdWRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGlucHV0LlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBqc2lpIHdpbGwgaW5jbHVkZSBhbGwgKi50cyBmaWxlcyAoZXhjZXB0IC5kLnRzIGZpbGVzKSBpbiB0aGUgVHlwZVNjcmlwdCBjb21waWxlciBpbnB1dC5cbiAgICogVGhpcyBjYW4gYmUgcHJvYmxlbWF0aWMgZm9yIGV4YW1wbGUgd2hlbiB0aGUgcGFja2FnZSdzIGJ1aWxkIG9yIHRlc3QgcHJvY2VkdXJlIGdlbmVyYXRlcyAudHMgZmlsZXNcbiAgICogdGhhdCBjYW5ub3QgYmUgY29tcGlsZWQgd2l0aCBqc2lpJ3MgY29tcGlsZXIgc2V0dGluZ3MuXG4gICAqL1xuICByZWFkb25seSBleGNsdWRlVHlwZXNjcmlwdD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBGaWxlIHBhdGggZm9yIGdlbmVyYXRlZCBkb2NzLlxuICAgKiBAZGVmYXVsdCBcIkFQSS5tZFwiXG4gICAqL1xuICByZWFkb25seSBkb2NnZW5GaWxlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogRW1pdCBhIGNvbXByZXNzZWQgdmVyc2lvbiBvZiB0aGUgYXNzZW1ibHlcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNvbXByZXNzQXNzZW1ibHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoZSBqc2lpIGNvbXBpbGVyIHRvIHVzZS5cbiAgICpcbiAgICogU2V0IHRvIFwiKlwiIGlmIHlvdSB3YW50IHRvIG1hbnVhbGx5IG1hbmFnZSB0aGUgdmVyc2lvbiBvZiBqc2lpIGluIHlvdXJcbiAgICogcHJvamVjdCBieSBtYW5hZ2luZyB1cGRhdGVzIHRvIGBwYWNrYWdlLmpzb25gIG9uIHlvdXIgb3duLlxuICAgKlxuICAgKiBOT1RFOiBUaGUganNpaSBjb21waWxlciByZWxlYXNlcyBzaW5jZSA1LjAuMCBhcmUgbm90IHNlbWFudGljYWxseSB2ZXJzaW9uZWRcbiAgICogYW5kIHNob3VsZCByZW1haW4gb24gdGhlIHNhbWUgbWlub3IsIHNvIHdlIHJlY29tbWVuZCB1c2luZyBhIGB+YCBkZXBlbmRlbmN5XG4gICAqIChlLmcuIGB+NS4wLjBgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ+NS45LjBcIlxuICAgKi9cbiAgcmVhZG9ubHkganNpaVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFiaWxpdHkgb2YgdGhlIHBhY2thZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwic3RhYmxlXCJcbiAgICovXG4gIHJlYWRvbmx5IHN0YWJpbGl0eT86IHN0cmluZztcblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBNYXJrRG93biBmaWxlIGRlc2NyaWJpbmcgdGhlIGpzaWkgQVBJLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBkb2NnZW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHB1Ymxpc2ggdG8gbnBtLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlVG9OcG0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVzZSB0cnVzdGVkIHB1Ymxpc2hpbmcgZm9yIG5wbS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG5wbVRydXN0ZWRQdWJsaXNoaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgcHVibGlzaGluZyBucG0gcGFja2FnZSB0byBBV1MgQ29kZUFydGlmYWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgY29kZUFydGlmYWN0T3B0aW9ucz86IE5wbVB1Ymxpc2hPcHRpb25zW1wiY29kZUFydGlmYWN0T3B0aW9uc1wiXTtcblxuICAvKipcbiAgICogUmVsYXRpdmUgcGF0aCBvZiB0aGUgcGFja2FnZSB3aXRoaW4gdGhlIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZCBpbiBtb25vcmVwbyBzZXR1cHMgd2hlcmUgdGhlIHBhY2thZ2UgaXMgbm90IGF0IHRoZSByb290LlxuICAgKiBQYWNrYWdpbmcgc3RlcHMgd2lsbCBleHRyYWN0IGJ1aWxkIGFydGlmYWN0cyBpbnRvIHRoaXMgc3ViZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIi5cIiAtIHJvb3Qgb2YgdGhlIHJlcG9zaXRvcnlcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtzcGFjZURpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5vZGUgdmVyc2lvbiB0byB1c2UgaW4gcGFja2FnaW5nIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJsdHMvKlwiXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd05vZGVWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHN0ZXBzIHRvIHJ1biBiZWZvcmUgcGFja2FnaW5nIGluIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Qm9vdHN0cmFwU3RlcHM/OiBBcnJheTxTdGVwPjtcblxuICAvKipcbiAgICogTGV2ZWwgb2YgdHNjb25maWcgdmFsaWRhdGlvbiBqc2lpIHNob3VsZCBwZXJmb3JtIG9uIHRoZSB1c2VyLXByb3ZpZGVkIHRzY29uZmlnLlxuICAgKlxuICAgKiBPbmx5IHJlbGV2YW50IHdoZW4gdGhlIHByb2plY3Qgc3ludGhlc2l6ZXMgaXRzIG93biB0c2NvbmZpZ1xuICAgKiAoaS5lLiBgZGlzYWJsZVRzY29uZmlnYCBpcyBub3Qgc2V0IG9uIHRoZSBUeXBlU2NyaXB0UHJvamVjdCkuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9hd3MuZ2l0aHViLmlvL2pzaWkvdXNlci1ndWlkZXMvbGliLWF1dGhvci9jb25maWd1cmF0aW9uLyN2YWxpZGF0ZXRzY29uZmlnXG4gICAqIEBkZWZhdWx0IFZhbGlkYXRlVHNjb25maWcuU1RSSUNUXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0ZVRzY29uZmlnPzogVmFsaWRhdGVUc2NvbmZpZztcblxuICAvKipcbiAgICogVGhlIFR5cGVzY3JpcHRDb25maWcgdGhhdCBqc2lpIGNvbXBpbGVzIGFnYWluc3QuXG4gICAqXG4gICAqIFByb3ZpZGUgYSBkZWRpY2F0ZWQgY29uZmlnIChlLmcuIG9uZSBuYW1lZCBgdHNjb25maWcuanNpaS5qc29uYCkgdG8ga2VlcFxuICAgKiBqc2lpIGNvbXBpbGF0aW9uIHNlcGFyYXRlIGZyb20gdGhlIHByb2plY3QncyBlZGl0b3ItZmFjaW5nIGB0c2NvbmZpZy5qc29uYC5cbiAgICoganNpaSByZXF1aXJlcyBhIGNvbW1lbnQtZnJlZSwgc3RyaWN0LXZhbGlkIGNvbmZpZywgc28gYEpzaWlCdWlsZGAgZGlzYWJsZXNcbiAgICogY29tbWVudHMgb24gd2hpY2hldmVyIGNvbmZpZyBpdCBpcyBnaXZlbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgcHJvamVjdCdzIHRzY29uZmlnIChpLmUuIGBwcm9qZWN0LnRzY29uZmlnYClcbiAgICovXG4gIHJlYWRvbmx5IHRzY29uZmlnPzogVHlwZXNjcmlwdENvbmZpZztcbn1cblxuLyoqXG4gKiBBIG1peGluIHRoYXQgYWRkcyBqc2lpIGNvbXBpbGF0aW9uLCBtdWx0aS1sYW5ndWFnZSBwYWNrYWdpbmcsIGFuZCBwdWJsaXNoaW5nXG4gKiBjYXBhYmlsaXRpZXMgdG8gYW55IFR5cGVTY3JpcHQgcHJvamVjdC5cbiAqXG4gKiBUaGlzIGltcGxlbWVudHMgdGhlIGNvbnN0cnVjdHMgYElNaXhpbmAgaW50ZXJmYWNlIGFuZCBpcyBhcHBsaWVkIHVzaW5nIHRoZVxuICogYC53aXRoKClgIG1ldGhvZCBvbiBhbnkgY29uc3RydWN0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBwcm9qZWN0ID0gbmV3IFR5cGVTY3JpcHRQcm9qZWN0KHsgZGlzYWJsZVRzY29uZmlnOiB0cnVlLCAuLi4gfSk7XG4gKiBwcm9qZWN0LndpdGgobmV3IEpzaWlCdWlsZCh7XG4gKiAgIGpzaWlWZXJzaW9uOiAnfjUuOS4wJyxcbiAqICAgcHVibGlzaFRvTWF2ZW46IHsgLi4uIH0sXG4gKiB9KSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBKc2lpQnVpbGQgaW1wbGVtZW50cyBJTWl4aW4ge1xuICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IEpzaWlCdWlsZE9wdGlvbnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXh0cmFKb2JPcHRpb25zOiBQYXJ0aWFsPEpvYj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgb3B0aW9uczogSnNpaUJ1aWxkT3B0aW9ucyA9IHt9LFxuICAgIGV4dHJhSm9iT3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuZXh0cmFKb2JPcHRpb25zID0gKGV4dHJhSm9iT3B0aW9ucyA/PyB7fSkgYXMgUGFydGlhbDxKb2I+O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uc3RydWN0IGlzIGEgVHlwZVNjcmlwdFByb2plY3QuXG4gICAqL1xuICBwdWJsaWMgc3VwcG9ydHMoY29uc3RydWN0OiBJQ29uc3RydWN0KTogY29uc3RydWN0IGlzIFR5cGVTY3JpcHRQcm9qZWN0IHtcbiAgICByZXR1cm4gY29uc3RydWN0IGluc3RhbmNlb2YgVHlwZVNjcmlwdFByb2plY3Q7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBqc2lpIGNvbmZpZ3VyYXRpb24gdG8gdGhlIHRhcmdldCBUeXBlU2NyaXB0UHJvamVjdC5cbiAgICovXG4gIHB1YmxpYyBhcHBseVRvKHByb2plY3Q6IElDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3VwcG9ydHMocHJvamVjdCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMgfTtcbiAgICBjb25zdCBzcmNkaXIgPSBwcm9qZWN0LnNyY2RpcjtcbiAgICBjb25zdCBsaWJkaXIgPSBwcm9qZWN0LmxpYmRpcjtcblxuICAgIHByb2plY3QuYWRkRmllbGRzKHsgdHlwZXM6IGAke2xpYmRpcn0vaW5kZXguZC50c2AgfSk7XG5cbiAgICBjb25zdCBjb21wcmVzc0Fzc2VtYmx5ID0gb3B0aW9ucy5jb21wcmVzc0Fzc2VtYmx5ID8/IGZhbHNlO1xuXG4gICAgLy8gdGhpcyBpcyBhbiB1bmhlbHBmdWwgd2FybmluZ1xuICAgIGNvbnN0IGpzaWlGbGFncyA9IFtcIi0tc2lsZW5jZS13YXJuaW5ncz1yZXNlcnZlZC13b3JkXCJdO1xuICAgIGlmIChjb21wcmVzc0Fzc2VtYmx5KSB7XG4gICAgICBqc2lpRmxhZ3MucHVzaChcIi0tY29tcHJlc3MtYXNzZW1ibHlcIik7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGF0SWdub3JlID0gb3B0aW9ucy5jb21wYXRJZ25vcmUgPz8gXCIuY29tcGF0aWdub3JlXCI7XG5cbiAgICBwcm9qZWN0LmFkZEZpZWxkcyh7XG4gICAgICBzdGFiaWxpdHk6XG4gICAgICAgIG9wdGlvbnMuc3RhYmlsaXR5ID8/IHByb2plY3QucGFja2FnZS5tYW5pZmVzdC5zdGFiaWxpdHkgPz8gXCJzdGFibGVcIixcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zLnN0YWJpbGl0eSA9PT0gXCJkZXByZWNhdGVkXCIpIHtcbiAgICAgIHByb2plY3QuYWRkRmllbGRzKHsgZGVwcmVjYXRlZDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBwcm9qZWN0LmNvbXBpbGVUYXNrLnJlc2V0KFtcImpzaWlcIiwgLi4uanNpaUZsYWdzXS5qb2luKFwiIFwiKSk7XG4gICAgcHJvamVjdC53YXRjaFRhc2sucmVzZXQoW1wianNpaVwiLCBcIi13XCIsIC4uLmpzaWlGbGFnc10uam9pbihcIiBcIikpO1xuXG4gICAgY29uc3QgY29tcGF0VGFzayA9IHByb2plY3QuYWRkVGFzayhcImNvbXBhdFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYFBlcmZvcm0gQVBJIGNvbXBhdGliaWxpdHkgY2hlY2sgYWdhaW5zdCBsYXRlc3QgdmVyc2lvbmAsXG4gICAgICBleGVjQXJnczogW1xuICAgICAgICBcImpzaWktZGlmZlwiLFxuICAgICAgICBgbnBtOiR7cHJvamVjdC5wYWNrYWdlLnBhY2thZ2VOYW1lfWAsXG4gICAgICAgIFwiLWtcIixcbiAgICAgICAgXCItLWlnbm9yZS1maWxlXCIsXG4gICAgICAgIGNvbXBhdElnbm9yZSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5jb21wYXQgPz8gZmFsc2UpIHtcbiAgICAgIHByb2plY3QuY29tcGlsZVRhc2suc3Bhd24oY29tcGF0VGFzayk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGEgbmV3IHBhY2thZ2U6YWxsIHRhc2ssIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggbGFuZ3VhZ2UgdGFyZ2V0cyBsYXRlclxuICAgIGNvbnN0IHBhY2thZ2VBbGxUYXNrID0gcHJvamVjdC5hZGRUYXNrKFwicGFja2FnZS1hbGxcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiUGFja2FnZXMgYXJ0aWZhY3RzIGZvciBhbGwgdGFyZ2V0IGxhbmd1YWdlc1wiLFxuICAgIH0pO1xuXG4gICAgLy8gaW4ganNpaSB3ZSBjb25zaWRlciB0aGUgZW50aXJlIHJlcG8gKHBvc3QgYnVpbGQpIGFzIHRoZSBidWlsZCBhcnRpZmFjdFxuICAgIC8vIHdoaWNoIGlzIHRoZW4gdXNlZCB0byBjcmVhdGUgdGhlIGxhbmd1YWdlIGJpbmRpbmdzIGluIHNlcGFyYXRlIGpvYnMuXG4gICAgY29uc3QgcGFja2FnZUpzVGFzayA9IHRoaXMuYWRkUGFja2FnaW5nVGFzayhwcm9qZWN0LCBwYWNrYWdlQWxsVGFzaywgXCJqc1wiKTtcblxuICAgIC8vIFdoZW4gcnVubmluZyBpbnNpZGUgQ0kgd2UgaW5pdGlhbGx5IG9ubHkgcGFja2FnZSBqcy4gT3RoZXIgdGFyZ2V0cyBhcmUgcGFja2FnZWQgaW4gc2VwYXJhdGUgam9icy5cbiAgICAvLyBPdXRzaWRlIG9mIENJIChpLmUgbG9jYWxseSkgd2Ugc2ltcGx5IHBhY2thZ2UgYWxsIHRhcmdldHMuXG4gICAgcHJvamVjdC5wYWNrYWdlVGFzay5yZXNldCgpO1xuICAgIHByb2plY3QucGFja2FnZVRhc2suc3Bhd24ocGFja2FnZUpzVGFzaywge1xuICAgICAgLy8gT25seSBydW4gaW4gQ0lcbiAgICAgIGNvbmRpdGlvbjogYG5vZGUgLWUgXCJpZiAoIXByb2Nlc3MuZW52LkNJKSBwcm9jZXNzLmV4aXQoMSlcImAsXG4gICAgfSk7XG4gICAgcHJvamVjdC5wYWNrYWdlVGFzay5zcGF3bihwYWNrYWdlQWxsVGFzaywge1xuICAgICAgLy8gRG9uJ3QgcnVuIGluIENJXG4gICAgICBjb25kaXRpb246IGBub2RlIC1lIFwiaWYgKHByb2Nlc3MuZW52LkNJKSBwcm9jZXNzLmV4aXQoMSlcImAsXG4gICAgfSk7XG5cbiAgICBjb25zdCB0YXJnZXRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbiAgICBjb25zdCBqc2lpOiBhbnkgPSB7XG4gICAgICBvdXRkaXI6IHByb2plY3QuYXJ0aWZhY3RzRGlyZWN0b3J5LFxuICAgICAgdGFyZ2V0cyxcbiAgICB9O1xuXG4gICAgLy8ganNpaSBjb21waWxlcyBhZ2FpbnN0IGFuIGV4cGxpY2l0bHkgcHJvdmlkZWQgdHNjb25maWcsIGZhbGxpbmcgYmFjayB0b1xuICAgIC8vIHRoZSBwcm9qZWN0J3Mgb3duIHRzY29uZmlnIHdoZW4gb25lIGlzIG5vdCBpbmplY3RlZC4gV2hlbiBuZWl0aGVyIGlzXG4gICAgLy8gYXZhaWxhYmxlIChlLmcuIGBkaXNhYmxlVHNjb25maWdgKSwgbGV0IGpzaWkgZ2VuZXJhdGUgb25lIGZyb20gdHNjIHNldHRpbmdzLlxuICAgIGNvbnN0IHRzY29uZmlnID0gb3B0aW9ucy50c2NvbmZpZyA/PyBwcm9qZWN0LnRzY29uZmlnO1xuICAgIGlmICh0c2NvbmZpZykge1xuICAgICAgLy8gQHRzLWlnbm9yZSBqc2lpIHVzZXMgSlNPTi5wYXJzZSgpIGFuZCBjYW5ub3QgaGFuZGxlIGNvbW1lbnRzXG4gICAgICB0c2NvbmZpZy5maWxlLmNvbmZpZ3VyZUNvbW1lbnRzKGZhbHNlKTtcbiAgICAgIGpzaWkudHNjb25maWcgPSB0c2NvbmZpZy5maWxlTmFtZTtcbiAgICAgIGpzaWkudmFsaWRhdGVUc2NvbmZpZyA9XG4gICAgICAgIG9wdGlvbnMudmFsaWRhdGVUc2NvbmZpZyA/PyBWYWxpZGF0ZVRzY29uZmlnLlNUUklDVDtcblxuICAgICAgaWYgKG9wdGlvbnMuZXhjbHVkZVR5cGVzY3JpcHQpIHtcbiAgICAgICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIG9wdGlvbnMuZXhjbHVkZVR5cGVzY3JpcHQpIHtcbiAgICAgICAgICB0c2NvbmZpZy5hZGRFeGNsdWRlKHBhdHRlcm4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGpzaWkudHNjID0ge1xuICAgICAgICBvdXREaXI6IGxpYmRpcixcbiAgICAgICAgcm9vdERpcjogc3JjZGlyLFxuICAgICAgfTtcbiAgICAgIGlmIChvcHRpb25zLmV4Y2x1ZGVUeXBlc2NyaXB0KSB7XG4gICAgICAgIGpzaWkuZXhjbHVkZVR5cGVzY3JpcHQgPSBvcHRpb25zLmV4Y2x1ZGVUeXBlc2NyaXB0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb2plY3QuYWRkRmllbGRzKHsganNpaSB9KTtcblxuICAgIGNvbnN0IGV4dHJhSm9iT3B0aW9uczogUGFydGlhbDxKb2I+ID0gdGhpcy5leHRyYUpvYk9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9ucy5yZWxlYXNlVG9OcG0gIT09IGZhbHNlKSB7XG4gICAgICBjb25zdCBucG1qczogTnBtUHVibGlzaE9wdGlvbnMgPSB7XG4gICAgICAgIHJlZ2lzdHJ5OiBwcm9qZWN0LnBhY2thZ2UubnBtUmVnaXN0cnksXG4gICAgICAgIG5wbVRva2VuU2VjcmV0OiBwcm9qZWN0LnBhY2thZ2UubnBtVG9rZW5TZWNyZXQsXG4gICAgICAgIG5wbVByb3ZlbmFuY2U6IHByb2plY3QucGFja2FnZS5ucG1Qcm92ZW5hbmNlLFxuICAgICAgICBjb2RlQXJ0aWZhY3RPcHRpb25zOiBvcHRpb25zLmNvZGVBcnRpZmFjdE9wdGlvbnMsXG4gICAgICAgIHRydXN0ZWRQdWJsaXNoaW5nOlxuICAgICAgICAgIG9wdGlvbnMubnBtVHJ1c3RlZFB1Ymxpc2hpbmcgPz9cbiAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICBwcm9qZWN0Lm9wdGlvbnMubnBtVHJ1c3RlZFB1Ymxpc2hpbmcgPz9cbiAgICAgICAgICBmYWxzZSxcbiAgICAgIH07XG4gICAgICB0aGlzLmFkZFRhcmdldFRvQnVpbGQocHJvamVjdCwgcGFja2FnZUpzVGFzaywgXCJqc1wiLCBleHRyYUpvYk9wdGlvbnMpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb1JlbGVhc2UocHJvamVjdCwgcGFja2FnZUpzVGFzaywgXCJqc1wiLCBucG1qcyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWF2ZW4gPSBvcHRpb25zLnB1Ymxpc2hUb01hdmVuO1xuICAgIGlmIChtYXZlbikge1xuICAgICAgdGFyZ2V0cy5qYXZhID0ge1xuICAgICAgICBwYWNrYWdlOiBtYXZlbi5qYXZhUGFja2FnZSxcbiAgICAgICAgbWF2ZW46IHtcbiAgICAgICAgICBncm91cElkOiBtYXZlbi5tYXZlbkdyb3VwSWQsXG4gICAgICAgICAgYXJ0aWZhY3RJZDogbWF2ZW4ubWF2ZW5BcnRpZmFjdElkLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgdGFzayA9IHRoaXMuYWRkUGFja2FnaW5nVGFzayhwcm9qZWN0LCBwYWNrYWdlQWxsVGFzaywgXCJqYXZhXCIpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb0J1aWxkKHByb2plY3QsIHRhc2ssIFwiamF2YVwiLCBleHRyYUpvYk9wdGlvbnMpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb1JlbGVhc2UocHJvamVjdCwgdGFzaywgXCJqYXZhXCIsIG1hdmVuKTtcbiAgICB9XG5cbiAgICBjb25zdCBweXBpID0gb3B0aW9ucy5wdWJsaXNoVG9QeXBpO1xuICAgIGlmIChweXBpKSB7XG4gICAgICB0YXJnZXRzLnB5dGhvbiA9IHtcbiAgICAgICAgZGlzdE5hbWU6IHB5cGkuZGlzdE5hbWUsXG4gICAgICAgIG1vZHVsZTogcHlwaS5tb2R1bGUsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRQYWNrYWdpbmdUYXNrKHByb2plY3QsIHBhY2thZ2VBbGxUYXNrLCBcInB5dGhvblwiKTtcbiAgICAgIHRoaXMuYWRkVGFyZ2V0VG9CdWlsZChwcm9qZWN0LCB0YXNrLCBcInB5dGhvblwiLCBleHRyYUpvYk9wdGlvbnMpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb1JlbGVhc2UocHJvamVjdCwgdGFzaywgXCJweXRob25cIiwgcHlwaSk7XG4gICAgfVxuXG4gICAgY29uc3QgbnVnZXQgPSBvcHRpb25zLnB1Ymxpc2hUb051Z2V0O1xuICAgIGlmIChudWdldCkge1xuICAgICAgdGFyZ2V0cy5kb3RuZXQgPSB7XG4gICAgICAgIG5hbWVzcGFjZTogbnVnZXQuZG90TmV0TmFtZXNwYWNlLFxuICAgICAgICBwYWNrYWdlSWQ6IG51Z2V0LnBhY2thZ2VJZCxcbiAgICAgICAgaWNvblVybDogbnVnZXQuaWNvblVybCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHRhc2sgPSB0aGlzLmFkZFBhY2thZ2luZ1Rhc2socHJvamVjdCwgcGFja2FnZUFsbFRhc2ssIFwiZG90bmV0XCIpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb0J1aWxkKHByb2plY3QsIHRhc2ssIFwiZG90bmV0XCIsIGV4dHJhSm9iT3B0aW9ucyk7XG4gICAgICB0aGlzLmFkZFRhcmdldFRvUmVsZWFzZShwcm9qZWN0LCB0YXNrLCBcImRvdG5ldFwiLCBudWdldCk7XG4gICAgfVxuXG4gICAgY29uc3QgZ29sYW5nID0gb3B0aW9ucy5wdWJsaXNoVG9HbztcbiAgICBpZiAoZ29sYW5nKSB7XG4gICAgICB0YXJnZXRzLmdvID0ge1xuICAgICAgICBtb2R1bGVOYW1lOiBnb2xhbmcubW9kdWxlTmFtZSxcbiAgICAgICAgcGFja2FnZU5hbWU6IGdvbGFuZy5wYWNrYWdlTmFtZSxcbiAgICAgICAgdmVyc2lvblN1ZmZpeDogZ29sYW5nLnZlcnNpb25TdWZmaXgsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRQYWNrYWdpbmdUYXNrKHByb2plY3QsIHBhY2thZ2VBbGxUYXNrLCBcImdvXCIpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb0J1aWxkKHByb2plY3QsIHRhc2ssIFwiZ29cIiwgZXh0cmFKb2JPcHRpb25zKTtcbiAgICAgIHRoaXMuYWRkVGFyZ2V0VG9SZWxlYXNlKHByb2plY3QsIHRhc2ssIFwiZ29cIiwgZ29sYW5nKTtcbiAgICB9XG5cbiAgICAvLyBJZiBqc2lpVmVyc2lvbiBpcyBcIipcIiwgZG9uJ3Qgc3BlY2lmeSBhbnl0aGluZyBzbyB0aGUgdXNlciBjYW4gbWFuYWdlLlxuICAgIC8vIE90aGVyd2lzZSwgdXNlIGBqc2lpVmVyc2lvbmBcbiAgICBjb25zdCBqc2lpVmVyc2lvbiA9IG9wdGlvbnMuanNpaVZlcnNpb24gPz8gXCJ+NS45LjBcIjtcbiAgICBjb25zdCBqc2lpU3VmZml4ID0ganNpaVZlcnNpb24gPT09IFwiKlwiID8gXCJcIiA6IGBAJHtqc2lpVmVyc2lvbn1gO1xuICAgIHByb2plY3QuYWRkRGV2RGVwcyhcbiAgICAgIGBqc2lpJHtqc2lpU3VmZml4fWAsXG4gICAgICBganNpaS1yb3NldHRhJHtqc2lpU3VmZml4fWAsXG4gICAgICBcImpzaWktZGlmZlwiLFxuICAgICAgXCJqc2lpLXBhY21ha1wiLFxuICAgICk7XG5cbiAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKFwiLmpzaWlcIik7XG4gICAgaWYgKCF0c2NvbmZpZykge1xuICAgICAgcHJvamVjdC5naXRpZ25vcmUuZXhjbHVkZShcInRzY29uZmlnLmpzb25cIik7XG4gICAgfVxuICAgIHByb2plY3QubnBtaWdub3JlPy5pbmNsdWRlKFwiLmpzaWlcIik7XG5cbiAgICBpZiAob3B0aW9ucy5kb2NnZW4gPz8gdHJ1ZSkge1xuICAgICAgLy8gSWYganNpaVZlcnNpb24gaXMgXCIqXCIsIGRvbid0IHNwZWNpZnkgYW55dGhpbmcgc28gdGhlIHVzZXIgY2FuIG1hbmFnZS5cbiAgICAgIC8vIE90aGVyd2lzZSB1c2UgYSB2ZXJzaW9uIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIGFsbCBzdXBwb3J0ZWQganNpaSByZWxlYXNlcy5cbiAgICAgIGNvbnN0IGRvY2dlblZlcnNpb24gPSBvcHRpb25zLmpzaWlWZXJzaW9uID09PSBcIipcIiA/IFwiKlwiIDogXCJeMTAuNS4wXCI7XG4gICAgICBuZXcgSnNpaURvY2dlbihwcm9qZWN0LCB7XG4gICAgICAgIHZlcnNpb246IGRvY2dlblZlcnNpb24sXG4gICAgICAgIGZpbGVQYXRoOiBvcHRpb25zLmRvY2dlbkZpbGVQYXRoLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8ganNpaSB1cGRhdGVzIC5ucG1pZ25vcmUsIHNvIHdlIG1ha2UgaXQgd3JpdGFibGVcbiAgICBpZiAocHJvamVjdC5ucG1pZ25vcmUpIHtcbiAgICAgIHByb2plY3QubnBtaWdub3JlLnJlYWRvbmx5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB0YXJnZXQgbGFuZ3VhZ2UgdG8gdGhlIHJlbGVhc2Ugd29ya2Zsb3cuXG4gICAqL1xuICBwcml2YXRlIGFkZFRhcmdldFRvUmVsZWFzZShcbiAgICBwcm9qZWN0OiBUeXBlU2NyaXB0UHJvamVjdCxcbiAgICBwYWNrVGFzazogVGFzayxcbiAgICBsYW5ndWFnZTogSnNpaVBhY21ha1RhcmdldCxcbiAgICB0YXJnZXQ6XG4gICAgICB8IEpzaWlQeXRob25UYXJnZXRcbiAgICAgIHwgSnNpaURvdE5ldFRhcmdldFxuICAgICAgfCBKc2lpR29UYXJnZXRcbiAgICAgIHwgSnNpaUphdmFUYXJnZXRcbiAgICAgIHwgTnBtUHVibGlzaE9wdGlvbnMsXG4gICkge1xuICAgIGlmICghcHJvamVjdC5yZWxlYXNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFjbWFrID0gdGhpcy5wYWNtYWtGb3JMYW5ndWFnZShwcm9qZWN0LCBsYW5ndWFnZSwgcGFja1Rhc2spO1xuICAgIGNvbnN0IHByZVB1Ymxpc2hTdGVwcyA9IFtcbiAgICAgIC4uLnBhY21hay5ib290c3RyYXBTdGVwcyxcbiAgICAgIFdvcmtmbG93U3RlcHMuY2hlY2tvdXQoe1xuICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgcGF0aDogUkVQT19URU1QX0RJUkVDVE9SWSxcbiAgICAgICAgICAuLi4ocHJvamVjdC5naXRodWI/LmRvd25sb2FkTGZzID8geyBsZnM6IHRydWUgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLi4ucGFjbWFrLnBhY2thZ2luZ1N0ZXBzLFxuICAgIF07XG4gICAgY29uc3QgY29tbW9uUHVibGlzaE9wdGlvbnM6IENvbW1vblB1Ymxpc2hPcHRpb25zID0ge1xuICAgICAgcHVibGlzaFRvb2xzOiBwYWNtYWsucHVibGlzaFRvb2xzLFxuICAgICAgcHJlUHVibGlzaFN0ZXBzLFxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVyOiBQdWJsaXNoVG8gPSBwdWJsaXNoVG9bbGFuZ3VhZ2VdO1xuICAgIHByb2plY3QucmVsZWFzZT8ucHVibGlzaGVyW2hhbmRsZXJdKHtcbiAgICAgIC4uLmNvbW1vblB1Ymxpc2hPcHRpb25zLFxuICAgICAgLi4udGFyZ2V0LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB0YXJnZXQgbGFuZ3VhZ2UgdG8gdGhlIGJ1aWxkIHdvcmtmbG93LlxuICAgKi9cbiAgcHJpdmF0ZSBhZGRUYXJnZXRUb0J1aWxkKFxuICAgIHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0LFxuICAgIHBhY2tUYXNrOiBUYXNrLFxuICAgIGxhbmd1YWdlOiBKc2lpUGFjbWFrVGFyZ2V0LFxuICAgIGV4dHJhSm9iT3B0aW9uczogUGFydGlhbDxKb2I+LFxuICApIHtcbiAgICBpZiAoIXByb2plY3QuYnVpbGRXb3JrZmxvdykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwYWNtYWsgPSB0aGlzLnBhY21ha0Zvckxhbmd1YWdlKHByb2plY3QsIGxhbmd1YWdlLCBwYWNrVGFzayk7XG5cbiAgICBwcm9qZWN0LmJ1aWxkV29ya2Zsb3cuYWRkUG9zdEJ1aWxkSm9iKGBwYWNrYWdlLSR7bGFuZ3VhZ2V9YCwge1xuICAgICAgLi4uZmlsdGVyZWRSdW5zT25PcHRpb25zKFxuICAgICAgICBleHRyYUpvYk9wdGlvbnMucnVuc09uLFxuICAgICAgICBleHRyYUpvYk9wdGlvbnMucnVuc09uR3JvdXAsXG4gICAgICApLFxuICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgIH0sXG4gICAgICB0b29sczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgdmVyc2lvbjpcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy53b3JrZmxvd05vZGVWZXJzaW9uID8/XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBwcm9qZWN0Lm5vZGVWZXJzaW9uID8/XG4gICAgICAgICAgICBcImx0cy8qXCIsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnBhY21hay5wdWJsaXNoVG9vbHMsXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAgLi4ucGFjbWFrLmJvb3RzdHJhcFN0ZXBzLFxuICAgICAgICBXb3JrZmxvd1N0ZXBzLmNoZWNrb3V0KHtcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICBwYXRoOiBSRVBPX1RFTVBfRElSRUNUT1JZLFxuICAgICAgICAgICAgcmVmOiBQVUxMX1JFUVVFU1RfU0hBLFxuICAgICAgICAgICAgcmVwb3NpdG9yeTogUFVMTF9SRVFVRVNUX1JFUE9TSVRPUlksXG4gICAgICAgICAgICAuLi4ocHJvamVjdC5naXRodWI/LmRvd25sb2FkTGZzID8geyBsZnM6IHRydWUgfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAgLi4ucGFjbWFrLnBhY2thZ2luZ1N0ZXBzLFxuICAgICAgXSxcbiAgICAgIC4uLmV4dHJhSm9iT3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUGFja2FnaW5nVGFzayhcbiAgICBwcm9qZWN0OiBUeXBlU2NyaXB0UHJvamVjdCxcbiAgICBwYWNrYWdlQWxsVGFzazogVGFzayxcbiAgICBsYW5ndWFnZTogSnNpaVBhY21ha1RhcmdldCxcbiAgKTogVGFzayB7XG4gICAgY29uc3QgcGFja2FnZVRhcmdldFRhc2sgPSBwcm9qZWN0LnRhc2tzLmFkZFRhc2soYHBhY2thZ2U6JHtsYW5ndWFnZX1gLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYENyZWF0ZSAke2xhbmd1YWdlfSBsYW5ndWFnZSBiaW5kaW5nc2AsXG4gICAgfSk7XG4gICAgY29uc3QgY29tbWFuZFBhcnRzID0gW1wianNpaS1wYWNtYWtcIiwgXCItdlwiXTtcblxuICAgIGlmIChwcm9qZWN0LnBhY2thZ2UucGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNKSB7XG4gICAgICBjb21tYW5kUGFydHMucHVzaChcIi0tcGFjay1jb21tYW5kXCIsIFwicG5wbSBwYWNrXCIpO1xuICAgIH1cblxuICAgIGNvbW1hbmRQYXJ0cy5wdXNoKFwiLS10YXJnZXRcIiwgbGFuZ3VhZ2UpO1xuXG4gICAgcGFja2FnZVRhcmdldFRhc2suZXhlY0FyZ3MoY29tbWFuZFBhcnRzKTtcblxuICAgIHBhY2thZ2VBbGxUYXNrLnNwYXduKHBhY2thZ2VUYXJnZXRUYXNrKTtcbiAgICByZXR1cm4gcGFja2FnZVRhcmdldFRhc2s7XG4gIH1cblxuICBwcml2YXRlIHBhY21ha0Zvckxhbmd1YWdlKFxuICAgIHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0LFxuICAgIHRhcmdldDogSnNpaVBhY21ha1RhcmdldCxcbiAgICBwYWNrVGFzazogVGFzayxcbiAgKToge1xuICAgIHB1Ymxpc2hUb29sczogVG9vbHM7XG4gICAgYm9vdHN0cmFwU3RlcHM6IEFycmF5PFN0ZXA+O1xuICAgIHBhY2thZ2luZ1N0ZXBzOiBBcnJheTxTdGVwPjtcbiAgfSB7XG4gICAgY29uc3QgYm9vdHN0cmFwU3RlcHM6IEFycmF5PFN0ZXA+ID0gW107XG4gICAgY29uc3QgcGFja2FnaW5nU3RlcHM6IEFycmF5PFN0ZXA+ID0gW107XG5cbiAgICAvLyBHZW5lcmljIGJvb3RzdHJhcHBpbmcgZm9yIGFsbCB0YXJnZXQgbGFuZ3VhZ2VzXG4gICAgYm9vdHN0cmFwU3RlcHMucHVzaCguLi4odGhpcy5vcHRpb25zLndvcmtmbG93Qm9vdHN0cmFwU3RlcHMgPz8gW10pKTtcbiAgICBpZiAocHJvamVjdC5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyID09PSBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTSkge1xuICAgICAgYm9vdHN0cmFwU3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6IFwiU2V0dXAgcG5wbVwiLFxuICAgICAgICB1c2VzOiBHaXRIdWJBY3Rpb25zLlBOUE1fQUNUSU9OX1NFVFVQLFxuICAgICAgICB3aXRoOiB7IHZlcnNpb246IHByb2plY3QucGFja2FnZS5wbnBtVmVyc2lvbiB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChwcm9qZWN0LnBhY2thZ2UucGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5CVU4pIHtcbiAgICAgIGJvb3RzdHJhcFN0ZXBzLnB1c2goe1xuICAgICAgICBuYW1lOiBcIlNldHVwIGJ1blwiLFxuICAgICAgICB1c2VzOiBHaXRIdWJBY3Rpb25zLk9WRU5fU0hfU0VUVVBfQlVOLFxuICAgICAgICB3aXRoOiB7IFwiYnVuLXZlcnNpb25cIjogcHJvamVjdC5wYWNrYWdlLmJ1blZlcnNpb24gfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNZYXJuQmVycnkocHJvamVjdC5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyKSkge1xuICAgICAgYm9vdHN0cmFwU3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6IFwiRW5hYmxlIGNvcmVwYWNrXCIsXG4gICAgICAgIHJ1bjogXCJjb3JlcGFjayBlbmFibGVcIixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHdvcmtEaXIgPSB0aGlzLm9wdGlvbnMud29ya3NwYWNlRGlyZWN0b3J5XG4gICAgICA/IGAke1JFUE9fVEVNUF9ESVJFQ1RPUll9LyR7dGhpcy5vcHRpb25zLndvcmtzcGFjZURpcmVjdG9yeX1gXG4gICAgICA6IFJFUE9fVEVNUF9ESVJFQ1RPUlk7XG5cbiAgICAvLyBJbnN0YWxsYXRpb24gc3RlcHMgYmVmb3JlIHBhY2thZ2luZywgYnV0IGFmdGVyIGNoZWNrb3V0XG4gICAgcGFja2FnaW5nU3RlcHMucHVzaChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJJbnN0YWxsIERlcGVuZGVuY2llc1wiLFxuICAgICAgICBydW46IGBjZCAke1JFUE9fVEVNUF9ESVJFQ1RPUll9ICYmICR7cHJvamVjdC5wYWNrYWdlLmluc3RhbGxDb21tYW5kfWAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBcIkV4dHJhY3QgYnVpbGQgYXJ0aWZhY3RcIixcbiAgICAgICAgcnVuOiBgdGFyIC0tc3RyaXAtY29tcG9uZW50cz0xIC14enZmICR7cHJvamVjdC5hcnRpZmFjdHNEaXJlY3Rvcnl9L2pzLyoudGd6IC1DICR7d29ya0Rpcn1gLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogYE1vdmUgYnVpbGQgYXJ0aWZhY3Qgb3V0IG9mIHRoZSB3YXlgLFxuICAgICAgICBydW46IGBtdiAke3Byb2plY3QuYXJ0aWZhY3RzRGlyZWN0b3J5fSAke0JVSUxEX0FSVElGQUNUX09MRF9ESVJ9YCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGBDcmVhdGUgJHt0YXJnZXR9IGFydGlmYWN0YCxcbiAgICAgICAgcnVuOiBgY2QgJHt3b3JrRGlyfSAmJiAke3Byb2plY3QucnVuVGFza0NvbW1hbmQocGFja1Rhc2spfWAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBgQ29sbGVjdCAke3RhcmdldH0gYXJ0aWZhY3RgLFxuICAgICAgICBydW46IGBtdiAke3dvcmtEaXJ9LyR7cHJvamVjdC5hcnRpZmFjdHNEaXJlY3Rvcnl9ICR7cHJvamVjdC5hcnRpZmFjdHNEaXJlY3Rvcnl9YCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwdWJsaXNoVG9vbHM6IEpTSUlfVE9PTENIQUlOW3RhcmdldF0sXG4gICAgICBib290c3RyYXBTdGVwcyxcbiAgICAgIHBhY2thZ2luZ1N0ZXBzLFxuICAgIH07XG4gIH1cbn1cblxudHlwZSBQdWJsaXNoVG8gPSBrZXlvZiBQdWJsaXNoZXIgJlxuICAoXG4gICAgfCBcInB1Ymxpc2hUb05wbVwiXG4gICAgfCBcInB1Ymxpc2hUb01hdmVuXCJcbiAgICB8IFwicHVibGlzaFRvUHlQaVwiXG4gICAgfCBcInB1Ymxpc2hUb051Z2V0XCJcbiAgICB8IFwicHVibGlzaFRvR29cIlxuICApO1xuXG50eXBlIFB1Ymxpc2hUb1RhcmdldCA9IHsgW0sgaW4gSnNpaVBhY21ha1RhcmdldF06IFB1Ymxpc2hUbyB9O1xuY29uc3QgcHVibGlzaFRvOiBQdWJsaXNoVG9UYXJnZXQgPSB7XG4gIGpzOiBcInB1Ymxpc2hUb05wbVwiLFxuICBqYXZhOiBcInB1Ymxpc2hUb01hdmVuXCIsXG4gIHB5dGhvbjogXCJwdWJsaXNoVG9QeVBpXCIsXG4gIGRvdG5ldDogXCJwdWJsaXNoVG9OdWdldFwiLFxuICBnbzogXCJwdWJsaXNoVG9Hb1wiLFxufTtcbiJdfQ==
377
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1idWlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGsvanNpaS1idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EscUNBQTBDO0FBQzFDLCtDQUEyQztBQU8zQyxvREFHaUM7QUFDakMsMkRBQXFEO0FBQ3JELDZEQUF5RDtBQUV6RCwrREFBMEQ7QUFDMUQsOENBQW1EO0FBRW5ELDZDQUFpRDtBQU1qRCxzREFBMEQ7QUFDMUQsOENBQWtEO0FBRWxELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDO0FBQ3BDLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBRTFDOztHQUVHO0FBQ0gsSUFBWSxnQkFvQlg7QUFwQkQsV0FBWSxnQkFBZ0I7SUFDMUI7O09BRUc7SUFDSCxxQ0FBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILDJDQUF1QixDQUFBO0lBRXZCOztPQUVHO0lBQ0gsdUNBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCwrQkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQXBCVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQW9CM0I7QUFxS0Q7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQWEsU0FBUzs7SUFDSCxPQUFPLENBQW1CO0lBQzFCLGVBQWUsQ0FBZTtJQUUvQyxZQUNFLFVBQTRCLEVBQUUsRUFDOUIsZUFBeUM7UUFFekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQWlCLENBQUM7SUFDakUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUSxDQUFDLFNBQXFCO1FBQ25DLE9BQU8sU0FBUyxZQUFZLDhCQUFpQixDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBQyxPQUFtQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzVC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QU0sT0FBTyxDQUFDLGtCQUFrQixJQUFJLHNCQUFzQixFQUFFO1NBQ2xFLEVBQ0Q7WUFDRSxJQUFJLEVBQUUsVUFBVSxNQUFNLFdBQVc7WUFDakMsR0FBRyxFQUFFLE1BQU0sT0FBTyxPQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7U0FDNUQsRUFDRDtZQUNFLElBQUksRUFBRSxXQUFXLE1BQU0sV0FBVztZQUNsQyxHQUFHLEVBQUUsTUFBTSxPQUFPLElBQUksT0FBTyxDQUFDLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTtTQUNqRixDQUNGLENBQUM7UUFFRixPQUFPO1lBQ0wsWUFBWSxFQUFFLHVCQUFjLENBQUMsTUFBTSxDQUFDO1lBQ3BDLGNBQWM7WUFDZCxjQUFjO1NBQ2YsQ0FBQztJQUNKLENBQUM7O0FBdlpILDhCQXdaQztBQVlELE1BQU0sU0FBUyxHQUFvQjtJQUNqQyxFQUFFLEVBQUUsY0FBYztJQUNsQixJQUFJLEVBQUUsZ0JBQWdCO0lBQ3RCLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCLE1BQU0sRUFBRSxnQkFBZ0I7SUFDeEIsRUFBRSxFQUFFLGFBQWE7Q0FDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSUNvbnN0cnVjdCwgSU1peGluIH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB0eXBlIHsgVGFzayB9IGZyb20gXCIuLlwiO1xuaW1wb3J0IHR5cGUgeyBKc2lpUGFjbWFrVGFyZ2V0IH0gZnJvbSBcIi4vY29uc3RzXCI7XG5pbXBvcnQgeyBKU0lJX1RPT0xDSEFJTiB9IGZyb20gXCIuL2NvbnN0c1wiO1xuaW1wb3J0IHsgSnNpaURvY2dlbiB9IGZyb20gXCIuL2pzaWktZG9jZ2VuXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEpzaWlEb3ROZXRUYXJnZXQsXG4gIEpzaWlHb1RhcmdldCxcbiAgSnNpaUphdmFUYXJnZXQsXG4gIEpzaWlQeXRob25UYXJnZXQsXG59IGZyb20gXCIuL2pzaWktcHJvamVjdFwiO1xuaW1wb3J0IHtcbiAgUFVMTF9SRVFVRVNUX1JFUE9TSVRPUlksXG4gIFBVTExfUkVRVUVTVF9TSEEsXG59IGZyb20gXCIuLi9idWlsZC9wcml2YXRlL2NvbnN0c1wiO1xuaW1wb3J0IHsgQWN0aW9uUmVmcyB9IGZyb20gXCIuLi9naXRodWIvYWN0aW9ucy5jb25zdFwiO1xuaW1wb3J0IHsgV29ya2Zsb3dTdGVwcyB9IGZyb20gXCIuLi9naXRodWIvd29ya2Zsb3ctc3RlcHNcIjtcbmltcG9ydCB0eXBlIHsgSm9iLCBTdGVwLCBUb29scyB9IGZyb20gXCIuLi9naXRodWIvd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uIH0gZnJvbSBcIi4uL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IE5vZGVQYWNrYWdlTWFuYWdlciB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgdHlwZSB7IFR5cGVzY3JpcHRDb25maWcgfSBmcm9tIFwiLi4vamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgaXNZYXJuQmVycnkgfSBmcm9tIFwiLi4vamF2YXNjcmlwdC91dGlsXCI7XG5pbXBvcnQgdHlwZSB7XG4gIENvbW1vblB1Ymxpc2hPcHRpb25zLFxuICBOcG1QdWJsaXNoT3B0aW9ucyxcbiAgUHVibGlzaGVyLFxufSBmcm9tIFwiLi4vcmVsZWFzZVwiO1xuaW1wb3J0IHsgZmlsdGVyZWRSdW5zT25PcHRpb25zIH0gZnJvbSBcIi4uL3J1bm5lci1vcHRpb25zXCI7XG5pbXBvcnQgeyBUeXBlU2NyaXB0UHJvamVjdCB9IGZyb20gXCIuLi90eXBlc2NyaXB0XCI7XG5cbmNvbnN0IFJFUE9fVEVNUF9ESVJFQ1RPUlkgPSBcIi5yZXBvXCI7XG5jb25zdCBCVUlMRF9BUlRJRkFDVF9PTERfRElSID0gXCJkaXN0Lm9sZFwiO1xuXG4vKipcbiAqIExldmVsIG9mIHRzY29uZmlnIHZhbGlkYXRpb24ganNpaSBzaG91bGQgcGVyZm9ybS5cbiAqL1xuZXhwb3J0IGVudW0gVmFsaWRhdGVUc2NvbmZpZyB7XG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYWdhaW5zdCBhIHN0cmljdCBydWxlIHNldCBkZXNpZ25lZCBmb3Igd2lkZXNwcmVhZCBzdXBwb3J0IGFuZCBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIFNUUklDVCA9IFwic3RyaWN0XCIsXG5cbiAgLyoqXG4gICAqIEVuZm9yY2VzIGEgdHNjb25maWcgYXMgaWYgaXQgd2VyZSBnZW5lcmF0ZWQgYnkganNpaS5cbiAgICovXG4gIEdFTkVSQVRFRCA9IFwiZ2VuZXJhdGVkXCIsXG5cbiAgLyoqXG4gICAqIE9ubHkgcmVqZWN0IG9wdGlvbnMga25vd24gdG8gYmUgaW5jb21wYXRpYmxlIHdpdGgganNpaS5cbiAgICovXG4gIE1JTklNQUwgPSBcIm1pbmltYWxcIixcblxuICAvKipcbiAgICogRGlzYWJsZXMgYWxsIGNvbmZpZyB2YWxpZGF0aW9uLiBVc2UgYXQgeW91ciBvd24gcmlzay5cbiAgICovXG4gIE9GRiA9IFwib2ZmXCIsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEpzaWlCdWlsZGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaUJ1aWxkT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQdWJsaXNoIHRvIG1hdmVuXG4gICAqIEBkZWZhdWx0IC0gbm8gcHVibGlzaGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvTWF2ZW4/OiBKc2lpSmF2YVRhcmdldDtcblxuICAvKipcbiAgICogUHVibGlzaCB0byBweXBpXG4gICAqIEBkZWZhdWx0IC0gbm8gcHVibGlzaGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvUHlwaT86IEpzaWlQeXRob25UYXJnZXQ7XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggR28gYmluZGluZ3MgdG8gYSBnaXQgcmVwb3NpdG9yeS5cbiAgICogQGRlZmF1bHQgLSBubyBwdWJsaXNoaW5nXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVG9Hbz86IEpzaWlHb1RhcmdldDtcblxuICAvKipcbiAgICogUHVibGlzaCB0byBOdUdldFxuICAgKiBAZGVmYXVsdCAtIG5vIHB1Ymxpc2hpbmdcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb051Z2V0PzogSnNpaURvdE5ldFRhcmdldDtcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSBydW4gQVBJIGNvbXBhdGliaWxpdHkgdGVzdCBhZ2FpbnN0IHRoZSBsYXRlc3QgdmVyc2lvbiBwdWJsaXNoZWQgdG8gbnBtIGFmdGVyIGNvbXBpbGF0aW9uLlxuICAgKlxuICAgKiAtIFlvdSBjYW4gbWFudWFsbHkgcnVuIGNvbXBhdGliaWxpdHkgdGVzdHMgdXNpbmcgYHlhcm4gY29tcGF0YCBpZiB0aGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQuXG4gICAqIC0gWW91IGNhbiBpZ25vcmUgY29tcGF0aWJpbGl0eSBmYWlsdXJlcyBieSBhZGRpbmcgbGluZXMgdG8gYSBcIi5jb21wYXRpZ25vcmVcIiBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGF0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgaWdub3JlIGZpbGUgZm9yIEFQSSBjb21wYXRpYmlsaXR5IHRlc3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIi5jb21wYXRpZ25vcmVcIlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGF0SWdub3JlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBY2NlcHRzIGEgbGlzdCBvZiBnbG9iIHBhdHRlcm5zLiBGaWxlcyBtYXRjaGluZyBhbnkgb2YgdGhvc2UgcGF0dGVybnMgd2lsbCBiZSBleGNsdWRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGlucHV0LlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBqc2lpIHdpbGwgaW5jbHVkZSBhbGwgKi50cyBmaWxlcyAoZXhjZXB0IC5kLnRzIGZpbGVzKSBpbiB0aGUgVHlwZVNjcmlwdCBjb21waWxlciBpbnB1dC5cbiAgICogVGhpcyBjYW4gYmUgcHJvYmxlbWF0aWMgZm9yIGV4YW1wbGUgd2hlbiB0aGUgcGFja2FnZSdzIGJ1aWxkIG9yIHRlc3QgcHJvY2VkdXJlIGdlbmVyYXRlcyAudHMgZmlsZXNcbiAgICogdGhhdCBjYW5ub3QgYmUgY29tcGlsZWQgd2l0aCBqc2lpJ3MgY29tcGlsZXIgc2V0dGluZ3MuXG4gICAqL1xuICByZWFkb25seSBleGNsdWRlVHlwZXNjcmlwdD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBGaWxlIHBhdGggZm9yIGdlbmVyYXRlZCBkb2NzLlxuICAgKiBAZGVmYXVsdCBcIkFQSS5tZFwiXG4gICAqL1xuICByZWFkb25seSBkb2NnZW5GaWxlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogRW1pdCBhIGNvbXByZXNzZWQgdmVyc2lvbiBvZiB0aGUgYXNzZW1ibHlcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNvbXByZXNzQXNzZW1ibHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoZSBqc2lpIGNvbXBpbGVyIHRvIHVzZS5cbiAgICpcbiAgICogU2V0IHRvIFwiKlwiIGlmIHlvdSB3YW50IHRvIG1hbnVhbGx5IG1hbmFnZSB0aGUgdmVyc2lvbiBvZiBqc2lpIGluIHlvdXJcbiAgICogcHJvamVjdCBieSBtYW5hZ2luZyB1cGRhdGVzIHRvIGBwYWNrYWdlLmpzb25gIG9uIHlvdXIgb3duLlxuICAgKlxuICAgKiBOT1RFOiBUaGUganNpaSBjb21waWxlciByZWxlYXNlcyBzaW5jZSA1LjAuMCBhcmUgbm90IHNlbWFudGljYWxseSB2ZXJzaW9uZWRcbiAgICogYW5kIHNob3VsZCByZW1haW4gb24gdGhlIHNhbWUgbWlub3IsIHNvIHdlIHJlY29tbWVuZCB1c2luZyBhIGB+YCBkZXBlbmRlbmN5XG4gICAqIChlLmcuIGB+NS4wLjBgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ+NS45LjBcIlxuICAgKi9cbiAgcmVhZG9ubHkganNpaVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFiaWxpdHkgb2YgdGhlIHBhY2thZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwic3RhYmxlXCJcbiAgICovXG4gIHJlYWRvbmx5IHN0YWJpbGl0eT86IHN0cmluZztcblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBNYXJrRG93biBmaWxlIGRlc2NyaWJpbmcgdGhlIGpzaWkgQVBJLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBkb2NnZW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHB1Ymxpc2ggdG8gbnBtLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlVG9OcG0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVzZSB0cnVzdGVkIHB1Ymxpc2hpbmcgZm9yIG5wbS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG5wbVRydXN0ZWRQdWJsaXNoaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgcHVibGlzaGluZyBucG0gcGFja2FnZSB0byBBV1MgQ29kZUFydGlmYWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgY29kZUFydGlmYWN0T3B0aW9ucz86IE5wbVB1Ymxpc2hPcHRpb25zW1wiY29kZUFydGlmYWN0T3B0aW9uc1wiXTtcblxuICAvKipcbiAgICogUmVsYXRpdmUgcGF0aCBvZiB0aGUgcGFja2FnZSB3aXRoaW4gdGhlIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZCBpbiBtb25vcmVwbyBzZXR1cHMgd2hlcmUgdGhlIHBhY2thZ2UgaXMgbm90IGF0IHRoZSByb290LlxuICAgKiBQYWNrYWdpbmcgc3RlcHMgd2lsbCBleHRyYWN0IGJ1aWxkIGFydGlmYWN0cyBpbnRvIHRoaXMgc3ViZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIi5cIiAtIHJvb3Qgb2YgdGhlIHJlcG9zaXRvcnlcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtzcGFjZURpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5vZGUgdmVyc2lvbiB0byB1c2UgaW4gcGFja2FnaW5nIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJsdHMvKlwiXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd05vZGVWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHN0ZXBzIHRvIHJ1biBiZWZvcmUgcGFja2FnaW5nIGluIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Qm9vdHN0cmFwU3RlcHM/OiBBcnJheTxTdGVwPjtcblxuICAvKipcbiAgICogTGV2ZWwgb2YgdHNjb25maWcgdmFsaWRhdGlvbiBqc2lpIHNob3VsZCBwZXJmb3JtIG9uIHRoZSB1c2VyLXByb3ZpZGVkIHRzY29uZmlnLlxuICAgKlxuICAgKiBPbmx5IHJlbGV2YW50IHdoZW4gdGhlIHByb2plY3Qgc3ludGhlc2l6ZXMgaXRzIG93biB0c2NvbmZpZ1xuICAgKiAoaS5lLiBgZGlzYWJsZVRzY29uZmlnYCBpcyBub3Qgc2V0IG9uIHRoZSBUeXBlU2NyaXB0UHJvamVjdCkuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9hd3MuZ2l0aHViLmlvL2pzaWkvdXNlci1ndWlkZXMvbGliLWF1dGhvci9jb25maWd1cmF0aW9uLyN2YWxpZGF0ZXRzY29uZmlnXG4gICAqIEBkZWZhdWx0IFZhbGlkYXRlVHNjb25maWcuU1RSSUNUXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0ZVRzY29uZmlnPzogVmFsaWRhdGVUc2NvbmZpZztcblxuICAvKipcbiAgICogVGhlIFR5cGVzY3JpcHRDb25maWcgdGhhdCBqc2lpIGNvbXBpbGVzIGFnYWluc3QuXG4gICAqXG4gICAqIFByb3ZpZGUgYSBkZWRpY2F0ZWQgY29uZmlnIChlLmcuIG9uZSBuYW1lZCBgdHNjb25maWcuanNpaS5qc29uYCkgdG8ga2VlcFxuICAgKiBqc2lpIGNvbXBpbGF0aW9uIHNlcGFyYXRlIGZyb20gdGhlIHByb2plY3QncyBlZGl0b3ItZmFjaW5nIGB0c2NvbmZpZy5qc29uYC5cbiAgICoganNpaSByZXF1aXJlcyBhIGNvbW1lbnQtZnJlZSwgc3RyaWN0LXZhbGlkIGNvbmZpZywgc28gYEpzaWlCdWlsZGAgZGlzYWJsZXNcbiAgICogY29tbWVudHMgb24gd2hpY2hldmVyIGNvbmZpZyBpdCBpcyBnaXZlbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgcHJvamVjdCdzIHRzY29uZmlnIChpLmUuIGBwcm9qZWN0LnRzY29uZmlnYClcbiAgICovXG4gIHJlYWRvbmx5IHRzY29uZmlnPzogVHlwZXNjcmlwdENvbmZpZztcbn1cblxuLyoqXG4gKiBBIG1peGluIHRoYXQgYWRkcyBqc2lpIGNvbXBpbGF0aW9uLCBtdWx0aS1sYW5ndWFnZSBwYWNrYWdpbmcsIGFuZCBwdWJsaXNoaW5nXG4gKiBjYXBhYmlsaXRpZXMgdG8gYW55IFR5cGVTY3JpcHQgcHJvamVjdC5cbiAqXG4gKiBUaGlzIGltcGxlbWVudHMgdGhlIGNvbnN0cnVjdHMgYElNaXhpbmAgaW50ZXJmYWNlIGFuZCBpcyBhcHBsaWVkIHVzaW5nIHRoZVxuICogYC53aXRoKClgIG1ldGhvZCBvbiBhbnkgY29uc3RydWN0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBwcm9qZWN0ID0gbmV3IFR5cGVTY3JpcHRQcm9qZWN0KHsgZGlzYWJsZVRzY29uZmlnOiB0cnVlLCAuLi4gfSk7XG4gKiBwcm9qZWN0LndpdGgobmV3IEpzaWlCdWlsZCh7XG4gKiAgIGpzaWlWZXJzaW9uOiAnfjUuOS4wJyxcbiAqICAgcHVibGlzaFRvTWF2ZW46IHsgLi4uIH0sXG4gKiB9KSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBKc2lpQnVpbGQgaW1wbGVtZW50cyBJTWl4aW4ge1xuICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IEpzaWlCdWlsZE9wdGlvbnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXh0cmFKb2JPcHRpb25zOiBQYXJ0aWFsPEpvYj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgb3B0aW9uczogSnNpaUJ1aWxkT3B0aW9ucyA9IHt9LFxuICAgIGV4dHJhSm9iT3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuZXh0cmFKb2JPcHRpb25zID0gKGV4dHJhSm9iT3B0aW9ucyA/PyB7fSkgYXMgUGFydGlhbDxKb2I+O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uc3RydWN0IGlzIGEgVHlwZVNjcmlwdFByb2plY3QuXG4gICAqL1xuICBwdWJsaWMgc3VwcG9ydHMoY29uc3RydWN0OiBJQ29uc3RydWN0KTogY29uc3RydWN0IGlzIFR5cGVTY3JpcHRQcm9qZWN0IHtcbiAgICByZXR1cm4gY29uc3RydWN0IGluc3RhbmNlb2YgVHlwZVNjcmlwdFByb2plY3Q7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBqc2lpIGNvbmZpZ3VyYXRpb24gdG8gdGhlIHRhcmdldCBUeXBlU2NyaXB0UHJvamVjdC5cbiAgICovXG4gIHB1YmxpYyBhcHBseVRvKHByb2plY3Q6IElDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3VwcG9ydHMocHJvamVjdCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMgfTtcbiAgICBjb25zdCBzcmNkaXIgPSBwcm9qZWN0LnNyY2RpcjtcbiAgICBjb25zdCBsaWJkaXIgPSBwcm9qZWN0LmxpYmRpcjtcblxuICAgIHByb2plY3QuYWRkRmllbGRzKHsgdHlwZXM6IGAke2xpYmRpcn0vaW5kZXguZC50c2AgfSk7XG5cbiAgICBjb25zdCBjb21wcmVzc0Fzc2VtYmx5ID0gb3B0aW9ucy5jb21wcmVzc0Fzc2VtYmx5ID8/IGZhbHNlO1xuXG4gICAgLy8gdGhpcyBpcyBhbiB1bmhlbHBmdWwgd2FybmluZ1xuICAgIGNvbnN0IGpzaWlGbGFncyA9IFtcIi0tc2lsZW5jZS13YXJuaW5ncz1yZXNlcnZlZC13b3JkXCJdO1xuICAgIGlmIChjb21wcmVzc0Fzc2VtYmx5KSB7XG4gICAgICBqc2lpRmxhZ3MucHVzaChcIi0tY29tcHJlc3MtYXNzZW1ibHlcIik7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGF0SWdub3JlID0gb3B0aW9ucy5jb21wYXRJZ25vcmUgPz8gXCIuY29tcGF0aWdub3JlXCI7XG5cbiAgICBwcm9qZWN0LmFkZEZpZWxkcyh7XG4gICAgICBzdGFiaWxpdHk6XG4gICAgICAgIG9wdGlvbnMuc3RhYmlsaXR5ID8/IHByb2plY3QucGFja2FnZS5tYW5pZmVzdC5zdGFiaWxpdHkgPz8gXCJzdGFibGVcIixcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zLnN0YWJpbGl0eSA9PT0gXCJkZXByZWNhdGVkXCIpIHtcbiAgICAgIHByb2plY3QuYWRkRmllbGRzKHsgZGVwcmVjYXRlZDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBwcm9qZWN0LmNvbXBpbGVUYXNrLnJlc2V0KFtcImpzaWlcIiwgLi4uanNpaUZsYWdzXS5qb2luKFwiIFwiKSk7XG4gICAgcHJvamVjdC53YXRjaFRhc2sucmVzZXQoW1wianNpaVwiLCBcIi13XCIsIC4uLmpzaWlGbGFnc10uam9pbihcIiBcIikpO1xuXG4gICAgY29uc3QgY29tcGF0VGFzayA9IHByb2plY3QuYWRkVGFzayhcImNvbXBhdFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYFBlcmZvcm0gQVBJIGNvbXBhdGliaWxpdHkgY2hlY2sgYWdhaW5zdCBsYXRlc3QgdmVyc2lvbmAsXG4gICAgICBleGVjQXJnczogW1xuICAgICAgICBcImpzaWktZGlmZlwiLFxuICAgICAgICBgbnBtOiR7cHJvamVjdC5wYWNrYWdlLnBhY2thZ2VOYW1lfWAsXG4gICAgICAgIFwiLWtcIixcbiAgICAgICAgXCItLWlnbm9yZS1maWxlXCIsXG4gICAgICAgIGNvbXBhdElnbm9yZSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5jb21wYXQgPz8gZmFsc2UpIHtcbiAgICAgIHByb2plY3QuY29tcGlsZVRhc2suc3Bhd24oY29tcGF0VGFzayk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGEgbmV3IHBhY2thZ2U6YWxsIHRhc2ssIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggbGFuZ3VhZ2UgdGFyZ2V0cyBsYXRlclxuICAgIGNvbnN0IHBhY2thZ2VBbGxUYXNrID0gcHJvamVjdC5hZGRUYXNrKFwicGFja2FnZS1hbGxcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiUGFja2FnZXMgYXJ0aWZhY3RzIGZvciBhbGwgdGFyZ2V0IGxhbmd1YWdlc1wiLFxuICAgIH0pO1xuXG4gICAgLy8gaW4ganNpaSB3ZSBjb25zaWRlciB0aGUgZW50aXJlIHJlcG8gKHBvc3QgYnVpbGQpIGFzIHRoZSBidWlsZCBhcnRpZmFjdFxuICAgIC8vIHdoaWNoIGlzIHRoZW4gdXNlZCB0byBjcmVhdGUgdGhlIGxhbmd1YWdlIGJpbmRpbmdzIGluIHNlcGFyYXRlIGpvYnMuXG4gICAgY29uc3QgcGFja2FnZUpzVGFzayA9IHRoaXMuYWRkUGFja2FnaW5nVGFzayhwcm9qZWN0LCBwYWNrYWdlQWxsVGFzaywgXCJqc1wiKTtcblxuICAgIC8vIFdoZW4gcnVubmluZyBpbnNpZGUgQ0kgd2UgaW5pdGlhbGx5IG9ubHkgcGFja2FnZSBqcy4gT3RoZXIgdGFyZ2V0cyBhcmUgcGFja2FnZWQgaW4gc2VwYXJhdGUgam9icy5cbiAgICAvLyBPdXRzaWRlIG9mIENJIChpLmUgbG9jYWxseSkgd2Ugc2ltcGx5IHBhY2thZ2UgYWxsIHRhcmdldHMuXG4gICAgcHJvamVjdC5wYWNrYWdlVGFzay5yZXNldCgpO1xuICAgIHByb2plY3QucGFja2FnZVRhc2suc3Bhd24ocGFja2FnZUpzVGFzaywge1xuICAgICAgLy8gT25seSBydW4gaW4gQ0lcbiAgICAgIGNvbmRpdGlvbjogYG5vZGUgLWUgXCJpZiAoIXByb2Nlc3MuZW52LkNJKSBwcm9jZXNzLmV4aXQoMSlcImAsXG4gICAgfSk7XG4gICAgcHJvamVjdC5wYWNrYWdlVGFzay5zcGF3bihwYWNrYWdlQWxsVGFzaywge1xuICAgICAgLy8gRG9uJ3QgcnVuIGluIENJXG4gICAgICBjb25kaXRpb246IGBub2RlIC1lIFwiaWYgKHByb2Nlc3MuZW52LkNJKSBwcm9jZXNzLmV4aXQoMSlcImAsXG4gICAgfSk7XG5cbiAgICBjb25zdCB0YXJnZXRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbiAgICBjb25zdCBqc2lpOiBhbnkgPSB7XG4gICAgICBvdXRkaXI6IHByb2plY3QuYXJ0aWZhY3RzRGlyZWN0b3J5LFxuICAgICAgdGFyZ2V0cyxcbiAgICB9O1xuXG4gICAgLy8ganNpaSBjb21waWxlcyBhZ2FpbnN0IGFuIGV4cGxpY2l0bHkgcHJvdmlkZWQgdHNjb25maWcsIGZhbGxpbmcgYmFjayB0b1xuICAgIC8vIHRoZSBwcm9qZWN0J3Mgb3duIHRzY29uZmlnIHdoZW4gb25lIGlzIG5vdCBpbmplY3RlZC4gV2hlbiBuZWl0aGVyIGlzXG4gICAgLy8gYXZhaWxhYmxlIChlLmcuIGBkaXNhYmxlVHNjb25maWdgKSwgbGV0IGpzaWkgZ2VuZXJhdGUgb25lIGZyb20gdHNjIHNldHRpbmdzLlxuICAgIGNvbnN0IHRzY29uZmlnID0gb3B0aW9ucy50c2NvbmZpZyA/PyBwcm9qZWN0LnRzY29uZmlnO1xuICAgIGlmICh0c2NvbmZpZykge1xuICAgICAgLy8gQHRzLWlnbm9yZSBqc2lpIHVzZXMgSlNPTi5wYXJzZSgpIGFuZCBjYW5ub3QgaGFuZGxlIGNvbW1lbnRzXG4gICAgICB0c2NvbmZpZy5maWxlLmNvbmZpZ3VyZUNvbW1lbnRzKGZhbHNlKTtcbiAgICAgIGpzaWkudHNjb25maWcgPSB0c2NvbmZpZy5maWxlTmFtZTtcbiAgICAgIGpzaWkudmFsaWRhdGVUc2NvbmZpZyA9XG4gICAgICAgIG9wdGlvbnMudmFsaWRhdGVUc2NvbmZpZyA/PyBWYWxpZGF0ZVRzY29uZmlnLlNUUklDVDtcblxuICAgICAgaWYgKG9wdGlvbnMuZXhjbHVkZVR5cGVzY3JpcHQpIHtcbiAgICAgICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIG9wdGlvbnMuZXhjbHVkZVR5cGVzY3JpcHQpIHtcbiAgICAgICAgICB0c2NvbmZpZy5hZGRFeGNsdWRlKHBhdHRlcm4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGpzaWkudHNjID0ge1xuICAgICAgICBvdXREaXI6IGxpYmRpcixcbiAgICAgICAgcm9vdERpcjogc3JjZGlyLFxuICAgICAgfTtcbiAgICAgIGlmIChvcHRpb25zLmV4Y2x1ZGVUeXBlc2NyaXB0KSB7XG4gICAgICAgIGpzaWkuZXhjbHVkZVR5cGVzY3JpcHQgPSBvcHRpb25zLmV4Y2x1ZGVUeXBlc2NyaXB0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb2plY3QuYWRkRmllbGRzKHsganNpaSB9KTtcblxuICAgIGNvbnN0IGV4dHJhSm9iT3B0aW9uczogUGFydGlhbDxKb2I+ID0gdGhpcy5leHRyYUpvYk9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9ucy5yZWxlYXNlVG9OcG0gIT09IGZhbHNlKSB7XG4gICAgICBjb25zdCBucG1qczogTnBtUHVibGlzaE9wdGlvbnMgPSB7XG4gICAgICAgIHJlZ2lzdHJ5OiBwcm9qZWN0LnBhY2thZ2UubnBtUmVnaXN0cnksXG4gICAgICAgIG5wbVRva2VuU2VjcmV0OiBwcm9qZWN0LnBhY2thZ2UubnBtVG9rZW5TZWNyZXQsXG4gICAgICAgIG5wbVByb3ZlbmFuY2U6IHByb2plY3QucGFja2FnZS5ucG1Qcm92ZW5hbmNlLFxuICAgICAgICBjb2RlQXJ0aWZhY3RPcHRpb25zOiBvcHRpb25zLmNvZGVBcnRpZmFjdE9wdGlvbnMsXG4gICAgICAgIHRydXN0ZWRQdWJsaXNoaW5nOlxuICAgICAgICAgIG9wdGlvbnMubnBtVHJ1c3RlZFB1Ymxpc2hpbmcgPz9cbiAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICBwcm9qZWN0Lm9wdGlvbnMubnBtVHJ1c3RlZFB1Ymxpc2hpbmcgPz9cbiAgICAgICAgICBmYWxzZSxcbiAgICAgIH07XG4gICAgICB0aGlzLmFkZFRhcmdldFRvQnVpbGQocHJvamVjdCwgcGFja2FnZUpzVGFzaywgXCJqc1wiLCBleHRyYUpvYk9wdGlvbnMpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb1JlbGVhc2UocHJvamVjdCwgcGFja2FnZUpzVGFzaywgXCJqc1wiLCBucG1qcyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWF2ZW4gPSBvcHRpb25zLnB1Ymxpc2hUb01hdmVuO1xuICAgIGlmIChtYXZlbikge1xuICAgICAgdGFyZ2V0cy5qYXZhID0ge1xuICAgICAgICBwYWNrYWdlOiBtYXZlbi5qYXZhUGFja2FnZSxcbiAgICAgICAgbWF2ZW46IHtcbiAgICAgICAgICBncm91cElkOiBtYXZlbi5tYXZlbkdyb3VwSWQsXG4gICAgICAgICAgYXJ0aWZhY3RJZDogbWF2ZW4ubWF2ZW5BcnRpZmFjdElkLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgdGFzayA9IHRoaXMuYWRkUGFja2FnaW5nVGFzayhwcm9qZWN0LCBwYWNrYWdlQWxsVGFzaywgXCJqYXZhXCIpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb0J1aWxkKHByb2plY3QsIHRhc2ssIFwiamF2YVwiLCBleHRyYUpvYk9wdGlvbnMpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb1JlbGVhc2UocHJvamVjdCwgdGFzaywgXCJqYXZhXCIsIG1hdmVuKTtcbiAgICB9XG5cbiAgICBjb25zdCBweXBpID0gb3B0aW9ucy5wdWJsaXNoVG9QeXBpO1xuICAgIGlmIChweXBpKSB7XG4gICAgICB0YXJnZXRzLnB5dGhvbiA9IHtcbiAgICAgICAgZGlzdE5hbWU6IHB5cGkuZGlzdE5hbWUsXG4gICAgICAgIG1vZHVsZTogcHlwaS5tb2R1bGUsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRQYWNrYWdpbmdUYXNrKHByb2plY3QsIHBhY2thZ2VBbGxUYXNrLCBcInB5dGhvblwiKTtcbiAgICAgIHRoaXMuYWRkVGFyZ2V0VG9CdWlsZChwcm9qZWN0LCB0YXNrLCBcInB5dGhvblwiLCBleHRyYUpvYk9wdGlvbnMpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb1JlbGVhc2UocHJvamVjdCwgdGFzaywgXCJweXRob25cIiwgcHlwaSk7XG4gICAgfVxuXG4gICAgY29uc3QgbnVnZXQgPSBvcHRpb25zLnB1Ymxpc2hUb051Z2V0O1xuICAgIGlmIChudWdldCkge1xuICAgICAgdGFyZ2V0cy5kb3RuZXQgPSB7XG4gICAgICAgIG5hbWVzcGFjZTogbnVnZXQuZG90TmV0TmFtZXNwYWNlLFxuICAgICAgICBwYWNrYWdlSWQ6IG51Z2V0LnBhY2thZ2VJZCxcbiAgICAgICAgaWNvblVybDogbnVnZXQuaWNvblVybCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHRhc2sgPSB0aGlzLmFkZFBhY2thZ2luZ1Rhc2socHJvamVjdCwgcGFja2FnZUFsbFRhc2ssIFwiZG90bmV0XCIpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb0J1aWxkKHByb2plY3QsIHRhc2ssIFwiZG90bmV0XCIsIGV4dHJhSm9iT3B0aW9ucyk7XG4gICAgICB0aGlzLmFkZFRhcmdldFRvUmVsZWFzZShwcm9qZWN0LCB0YXNrLCBcImRvdG5ldFwiLCBudWdldCk7XG4gICAgfVxuXG4gICAgY29uc3QgZ29sYW5nID0gb3B0aW9ucy5wdWJsaXNoVG9HbztcbiAgICBpZiAoZ29sYW5nKSB7XG4gICAgICB0YXJnZXRzLmdvID0ge1xuICAgICAgICBtb2R1bGVOYW1lOiBnb2xhbmcubW9kdWxlTmFtZSxcbiAgICAgICAgcGFja2FnZU5hbWU6IGdvbGFuZy5wYWNrYWdlTmFtZSxcbiAgICAgICAgdmVyc2lvblN1ZmZpeDogZ29sYW5nLnZlcnNpb25TdWZmaXgsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRQYWNrYWdpbmdUYXNrKHByb2plY3QsIHBhY2thZ2VBbGxUYXNrLCBcImdvXCIpO1xuICAgICAgdGhpcy5hZGRUYXJnZXRUb0J1aWxkKHByb2plY3QsIHRhc2ssIFwiZ29cIiwgZXh0cmFKb2JPcHRpb25zKTtcbiAgICAgIHRoaXMuYWRkVGFyZ2V0VG9SZWxlYXNlKHByb2plY3QsIHRhc2ssIFwiZ29cIiwgZ29sYW5nKTtcbiAgICB9XG5cbiAgICAvLyBJZiBqc2lpVmVyc2lvbiBpcyBcIipcIiwgZG9uJ3Qgc3BlY2lmeSBhbnl0aGluZyBzbyB0aGUgdXNlciBjYW4gbWFuYWdlLlxuICAgIC8vIE90aGVyd2lzZSwgdXNlIGBqc2lpVmVyc2lvbmBcbiAgICBjb25zdCBqc2lpVmVyc2lvbiA9IG9wdGlvbnMuanNpaVZlcnNpb24gPz8gXCJ+NS45LjBcIjtcbiAgICBjb25zdCBqc2lpU3VmZml4ID0ganNpaVZlcnNpb24gPT09IFwiKlwiID8gXCJcIiA6IGBAJHtqc2lpVmVyc2lvbn1gO1xuICAgIHByb2plY3QuYWRkRGV2RGVwcyhcbiAgICAgIGBqc2lpJHtqc2lpU3VmZml4fWAsXG4gICAgICBganNpaS1yb3NldHRhJHtqc2lpU3VmZml4fWAsXG4gICAgICBcImpzaWktZGlmZlwiLFxuICAgICAgXCJqc2lpLXBhY21ha1wiLFxuICAgICk7XG5cbiAgICBwcm9qZWN0LmdpdGlnbm9yZS5leGNsdWRlKFwiLmpzaWlcIik7XG4gICAgaWYgKCF0c2NvbmZpZykge1xuICAgICAgcHJvamVjdC5naXRpZ25vcmUuZXhjbHVkZShcInRzY29uZmlnLmpzb25cIik7XG4gICAgfVxuICAgIHByb2plY3QubnBtaWdub3JlPy5pbmNsdWRlKFwiLmpzaWlcIik7XG5cbiAgICBpZiAob3B0aW9ucy5kb2NnZW4gPz8gdHJ1ZSkge1xuICAgICAgLy8gSWYganNpaVZlcnNpb24gaXMgXCIqXCIsIGRvbid0IHNwZWNpZnkgYW55dGhpbmcgc28gdGhlIHVzZXIgY2FuIG1hbmFnZS5cbiAgICAgIC8vIE90aGVyd2lzZSB1c2UgYSB2ZXJzaW9uIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIGFsbCBzdXBwb3J0ZWQganNpaSByZWxlYXNlcy5cbiAgICAgIGNvbnN0IGRvY2dlblZlcnNpb24gPSBvcHRpb25zLmpzaWlWZXJzaW9uID09PSBcIipcIiA/IFwiKlwiIDogXCJeMTAuNS4wXCI7XG4gICAgICBuZXcgSnNpaURvY2dlbihwcm9qZWN0LCB7XG4gICAgICAgIHZlcnNpb246IGRvY2dlblZlcnNpb24sXG4gICAgICAgIGZpbGVQYXRoOiBvcHRpb25zLmRvY2dlbkZpbGVQYXRoLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8ganNpaSB1cGRhdGVzIC5ucG1pZ25vcmUsIHNvIHdlIG1ha2UgaXQgd3JpdGFibGVcbiAgICBpZiAocHJvamVjdC5ucG1pZ25vcmUpIHtcbiAgICAgIHByb2plY3QubnBtaWdub3JlLnJlYWRvbmx5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB0YXJnZXQgbGFuZ3VhZ2UgdG8gdGhlIHJlbGVhc2Ugd29ya2Zsb3cuXG4gICAqL1xuICBwcml2YXRlIGFkZFRhcmdldFRvUmVsZWFzZShcbiAgICBwcm9qZWN0OiBUeXBlU2NyaXB0UHJvamVjdCxcbiAgICBwYWNrVGFzazogVGFzayxcbiAgICBsYW5ndWFnZTogSnNpaVBhY21ha1RhcmdldCxcbiAgICB0YXJnZXQ6XG4gICAgICB8IEpzaWlQeXRob25UYXJnZXRcbiAgICAgIHwgSnNpaURvdE5ldFRhcmdldFxuICAgICAgfCBKc2lpR29UYXJnZXRcbiAgICAgIHwgSnNpaUphdmFUYXJnZXRcbiAgICAgIHwgTnBtUHVibGlzaE9wdGlvbnMsXG4gICkge1xuICAgIGlmICghcHJvamVjdC5yZWxlYXNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFjbWFrID0gdGhpcy5wYWNtYWtGb3JMYW5ndWFnZShwcm9qZWN0LCBsYW5ndWFnZSwgcGFja1Rhc2spO1xuICAgIGNvbnN0IHByZVB1Ymxpc2hTdGVwcyA9IFtcbiAgICAgIC4uLnBhY21hay5ib290c3RyYXBTdGVwcyxcbiAgICAgIFdvcmtmbG93U3RlcHMuY2hlY2tvdXQoe1xuICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgcGF0aDogUkVQT19URU1QX0RJUkVDVE9SWSxcbiAgICAgICAgICAuLi4ocHJvamVjdC5naXRodWI/LmRvd25sb2FkTGZzID8geyBsZnM6IHRydWUgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLi4ucGFjbWFrLnBhY2thZ2luZ1N0ZXBzLFxuICAgIF07XG4gICAgY29uc3QgY29tbW9uUHVibGlzaE9wdGlvbnM6IENvbW1vblB1Ymxpc2hPcHRpb25zID0ge1xuICAgICAgcHVibGlzaFRvb2xzOiBwYWNtYWsucHVibGlzaFRvb2xzLFxuICAgICAgcHJlUHVibGlzaFN0ZXBzLFxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVyOiBQdWJsaXNoVG8gPSBwdWJsaXNoVG9bbGFuZ3VhZ2VdO1xuICAgIHByb2plY3QucmVsZWFzZT8ucHVibGlzaGVyW2hhbmRsZXJdKHtcbiAgICAgIC4uLmNvbW1vblB1Ymxpc2hPcHRpb25zLFxuICAgICAgLi4udGFyZ2V0LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB0YXJnZXQgbGFuZ3VhZ2UgdG8gdGhlIGJ1aWxkIHdvcmtmbG93LlxuICAgKi9cbiAgcHJpdmF0ZSBhZGRUYXJnZXRUb0J1aWxkKFxuICAgIHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0LFxuICAgIHBhY2tUYXNrOiBUYXNrLFxuICAgIGxhbmd1YWdlOiBKc2lpUGFjbWFrVGFyZ2V0LFxuICAgIGV4dHJhSm9iT3B0aW9uczogUGFydGlhbDxKb2I+LFxuICApIHtcbiAgICBpZiAoIXByb2plY3QuYnVpbGRXb3JrZmxvdykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwYWNtYWsgPSB0aGlzLnBhY21ha0Zvckxhbmd1YWdlKHByb2plY3QsIGxhbmd1YWdlLCBwYWNrVGFzayk7XG5cbiAgICBwcm9qZWN0LmJ1aWxkV29ya2Zsb3cuYWRkUG9zdEJ1aWxkSm9iKGBwYWNrYWdlLSR7bGFuZ3VhZ2V9YCwge1xuICAgICAgLi4uZmlsdGVyZWRSdW5zT25PcHRpb25zKFxuICAgICAgICBleHRyYUpvYk9wdGlvbnMucnVuc09uLFxuICAgICAgICBleHRyYUpvYk9wdGlvbnMucnVuc09uR3JvdXAsXG4gICAgICApLFxuICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgIH0sXG4gICAgICB0b29sczoge1xuICAgICAgICBub2RlOiB7XG4gICAgICAgICAgdmVyc2lvbjpcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy53b3JrZmxvd05vZGVWZXJzaW9uID8/XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBwcm9qZWN0Lm5vZGVWZXJzaW9uID8/XG4gICAgICAgICAgICBcImx0cy8qXCIsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnBhY21hay5wdWJsaXNoVG9vbHMsXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAgLi4ucGFjbWFrLmJvb3RzdHJhcFN0ZXBzLFxuICAgICAgICBXb3JrZmxvd1N0ZXBzLmNoZWNrb3V0KHtcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICBwYXRoOiBSRVBPX1RFTVBfRElSRUNUT1JZLFxuICAgICAgICAgICAgcmVmOiBQVUxMX1JFUVVFU1RfU0hBLFxuICAgICAgICAgICAgcmVwb3NpdG9yeTogUFVMTF9SRVFVRVNUX1JFUE9TSVRPUlksXG4gICAgICAgICAgICAuLi4ocHJvamVjdC5naXRodWI/LmRvd25sb2FkTGZzID8geyBsZnM6IHRydWUgfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAgLi4ucGFjbWFrLnBhY2thZ2luZ1N0ZXBzLFxuICAgICAgXSxcbiAgICAgIC4uLmV4dHJhSm9iT3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUGFja2FnaW5nVGFzayhcbiAgICBwcm9qZWN0OiBUeXBlU2NyaXB0UHJvamVjdCxcbiAgICBwYWNrYWdlQWxsVGFzazogVGFzayxcbiAgICBsYW5ndWFnZTogSnNpaVBhY21ha1RhcmdldCxcbiAgKTogVGFzayB7XG4gICAgY29uc3QgcGFja2FnZVRhcmdldFRhc2sgPSBwcm9qZWN0LnRhc2tzLmFkZFRhc2soYHBhY2thZ2U6JHtsYW5ndWFnZX1gLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYENyZWF0ZSAke2xhbmd1YWdlfSBsYW5ndWFnZSBiaW5kaW5nc2AsXG4gICAgfSk7XG4gICAgY29uc3QgY29tbWFuZFBhcnRzID0gW1wianNpaS1wYWNtYWtcIiwgXCItdlwiXTtcblxuICAgIGlmIChwcm9qZWN0LnBhY2thZ2UucGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNKSB7XG4gICAgICBjb21tYW5kUGFydHMucHVzaChcIi0tcGFjay1jb21tYW5kXCIsIFwicG5wbSBwYWNrXCIpO1xuICAgIH1cblxuICAgIGNvbW1hbmRQYXJ0cy5wdXNoKFwiLS10YXJnZXRcIiwgbGFuZ3VhZ2UpO1xuXG4gICAgcGFja2FnZVRhcmdldFRhc2suZXhlY0FyZ3MoY29tbWFuZFBhcnRzKTtcblxuICAgIHBhY2thZ2VBbGxUYXNrLnNwYXduKHBhY2thZ2VUYXJnZXRUYXNrKTtcbiAgICByZXR1cm4gcGFja2FnZVRhcmdldFRhc2s7XG4gIH1cblxuICBwcml2YXRlIHBhY21ha0Zvckxhbmd1YWdlKFxuICAgIHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0LFxuICAgIHRhcmdldDogSnNpaVBhY21ha1RhcmdldCxcbiAgICBwYWNrVGFzazogVGFzayxcbiAgKToge1xuICAgIHB1Ymxpc2hUb29sczogVG9vbHM7XG4gICAgYm9vdHN0cmFwU3RlcHM6IEFycmF5PFN0ZXA+O1xuICAgIHBhY2thZ2luZ1N0ZXBzOiBBcnJheTxTdGVwPjtcbiAgfSB7XG4gICAgY29uc3QgYm9vdHN0cmFwU3RlcHM6IEFycmF5PFN0ZXA+ID0gW107XG4gICAgY29uc3QgcGFja2FnaW5nU3RlcHM6IEFycmF5PFN0ZXA+ID0gW107XG5cbiAgICAvLyBHZW5lcmljIGJvb3RzdHJhcHBpbmcgZm9yIGFsbCB0YXJnZXQgbGFuZ3VhZ2VzXG4gICAgYm9vdHN0cmFwU3RlcHMucHVzaCguLi4odGhpcy5vcHRpb25zLndvcmtmbG93Qm9vdHN0cmFwU3RlcHMgPz8gW10pKTtcbiAgICBpZiAocHJvamVjdC5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyID09PSBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTSkge1xuICAgICAgYm9vdHN0cmFwU3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6IFwiU2V0dXAgcG5wbVwiLFxuICAgICAgICB1c2VzOiBBY3Rpb25SZWZzLlBOUE1fQUNUSU9OX1NFVFVQLFxuICAgICAgICB3aXRoOiB7IHZlcnNpb246IHByb2plY3QucGFja2FnZS5wbnBtVmVyc2lvbiB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChwcm9qZWN0LnBhY2thZ2UucGFja2FnZU1hbmFnZXIgPT09IE5vZGVQYWNrYWdlTWFuYWdlci5CVU4pIHtcbiAgICAgIGJvb3RzdHJhcFN0ZXBzLnB1c2goe1xuICAgICAgICBuYW1lOiBcIlNldHVwIGJ1blwiLFxuICAgICAgICB1c2VzOiBBY3Rpb25SZWZzLk9WRU5fU0hfU0VUVVBfQlVOLFxuICAgICAgICB3aXRoOiB7IFwiYnVuLXZlcnNpb25cIjogcHJvamVjdC5wYWNrYWdlLmJ1blZlcnNpb24gfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNZYXJuQmVycnkocHJvamVjdC5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyKSkge1xuICAgICAgYm9vdHN0cmFwU3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6IFwiRW5hYmxlIGNvcmVwYWNrXCIsXG4gICAgICAgIHJ1bjogXCJjb3JlcGFjayBlbmFibGVcIixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHdvcmtEaXIgPSB0aGlzLm9wdGlvbnMud29ya3NwYWNlRGlyZWN0b3J5XG4gICAgICA/IGAke1JFUE9fVEVNUF9ESVJFQ1RPUll9LyR7dGhpcy5vcHRpb25zLndvcmtzcGFjZURpcmVjdG9yeX1gXG4gICAgICA6IFJFUE9fVEVNUF9ESVJFQ1RPUlk7XG5cbiAgICAvLyBJbnN0YWxsYXRpb24gc3RlcHMgYmVmb3JlIHBhY2thZ2luZywgYnV0IGFmdGVyIGNoZWNrb3V0XG4gICAgcGFja2FnaW5nU3RlcHMucHVzaChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJJbnN0YWxsIERlcGVuZGVuY2llc1wiLFxuICAgICAgICBydW46IGBjZCAke1JFUE9fVEVNUF9ESVJFQ1RPUll9ICYmICR7cHJvamVjdC5wYWNrYWdlLmluc3RhbGxDb21tYW5kfWAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBcIkV4dHJhY3QgYnVpbGQgYXJ0aWZhY3RcIixcbiAgICAgICAgcnVuOiBgdGFyIC0tc3RyaXAtY29tcG9uZW50cz0xIC14enZmICR7cHJvamVjdC5hcnRpZmFjdHNEaXJlY3Rvcnl9L2pzLyoudGd6IC1DICR7d29ya0Rpcn1gLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogYE1vdmUgYnVpbGQgYXJ0aWZhY3Qgb3V0IG9mIHRoZSB3YXlgLFxuICAgICAgICBydW46IGBtdiAke3Byb2plY3QuYXJ0aWZhY3RzRGlyZWN0b3J5fSAke0JVSUxEX0FSVElGQUNUX09MRF9ESVJ9YCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGBDcmVhdGUgJHt0YXJnZXR9IGFydGlmYWN0YCxcbiAgICAgICAgcnVuOiBgY2QgJHt3b3JrRGlyfSAmJiAke3Byb2plY3QucnVuVGFza0NvbW1hbmQocGFja1Rhc2spfWAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBgQ29sbGVjdCAke3RhcmdldH0gYXJ0aWZhY3RgLFxuICAgICAgICBydW46IGBtdiAke3dvcmtEaXJ9LyR7cHJvamVjdC5hcnRpZmFjdHNEaXJlY3Rvcnl9ICR7cHJvamVjdC5hcnRpZmFjdHNEaXJlY3Rvcnl9YCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwdWJsaXNoVG9vbHM6IEpTSUlfVE9PTENIQUlOW3RhcmdldF0sXG4gICAgICBib290c3RyYXBTdGVwcyxcbiAgICAgIHBhY2thZ2luZ1N0ZXBzLFxuICAgIH07XG4gIH1cbn1cblxudHlwZSBQdWJsaXNoVG8gPSBrZXlvZiBQdWJsaXNoZXIgJlxuICAoXG4gICAgfCBcInB1Ymxpc2hUb05wbVwiXG4gICAgfCBcInB1Ymxpc2hUb01hdmVuXCJcbiAgICB8IFwicHVibGlzaFRvUHlQaVwiXG4gICAgfCBcInB1Ymxpc2hUb051Z2V0XCJcbiAgICB8IFwicHVibGlzaFRvR29cIlxuICApO1xuXG50eXBlIFB1Ymxpc2hUb1RhcmdldCA9IHsgW0sgaW4gSnNpaVBhY21ha1RhcmdldF06IFB1Ymxpc2hUbyB9O1xuY29uc3QgcHVibGlzaFRvOiBQdWJsaXNoVG9UYXJnZXQgPSB7XG4gIGpzOiBcInB1Ymxpc2hUb05wbVwiLFxuICBqYXZhOiBcInB1Ymxpc2hUb01hdmVuXCIsXG4gIHB5dGhvbjogXCJwdWJsaXNoVG9QeVBpXCIsXG4gIGRvdG5ldDogXCJwdWJsaXNoVG9OdWdldFwiLFxuICBnbzogXCJwdWJsaXNoVG9Hb1wiLFxufTtcbiJdfQ==
@@ -11,7 +11,7 @@ const dependencies_1 = require("../dependencies");
11
11
  * - Enforces that markdown file is checked in
12
12
  */
13
13
  class JsiiDocgen extends component_1.Component {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiDocgen", version: "0.103.22" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiDocgen", version: "0.103.23" };
15
15
  constructor(scope, options = {}) {
16
16
  super(scope);
17
17
  const version = options.version ?? "*";
@@ -20,7 +20,7 @@ var Stability;
20
20
  * @pjid jsii
21
21
  */
22
22
  class JsiiProject extends typescript_1.TypeScriptProject {
23
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiProject", version: "0.103.22" };
23
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk.JsiiProject", version: "0.103.23" };
24
24
  constructor(options) {
25
25
  const { authorEmail, authorUrl } = parseAuthorAddress(options);
26
26
  const defaultOptions = {
@@ -10,7 +10,7 @@ const component_1 = require("../component");
10
10
  * found in the test tree.
11
11
  */
12
12
  class AutoDiscover extends component_1.Component {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.AutoDiscover", version: "0.103.22" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.AutoDiscover", version: "0.103.23" };
14
14
  constructor(project, options) {
15
15
  super(project);
16
16
  if (options.integrationTestAutoDiscover ?? true) {
@@ -23,7 +23,7 @@ exports.AutoDiscover = AutoDiscover;
23
23
  * Discovers and creates integration tests from files in the test root.
24
24
  */
25
25
  class IntegrationTestAutoDiscover extends cdk_1.IntegrationTestAutoDiscoverBase {
26
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.IntegrationTestAutoDiscover", version: "0.103.22" };
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.IntegrationTestAutoDiscover", version: "0.103.23" };
27
27
  constructor(project, options) {
28
28
  super(project, options);
29
29
  for (const entrypoint of this.entrypoints) {
@@ -12,7 +12,7 @@ const python_project_1 = require("../python/python-project");
12
12
  * @pjid cdk8s-app-py
13
13
  */
14
14
  class Cdk8sPythonApp extends python_project_1.PythonProject {
15
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sPythonApp", version: "0.103.22" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sPythonApp", version: "0.103.23" };
16
16
  /**
17
17
  * The CDK8s app entrypoint
18
18
  */
@@ -50,7 +50,7 @@ const yaml_1 = require("../yaml");
50
50
  * @pjid cdk8s-app-ts
51
51
  */
52
52
  class Cdk8sTypeScriptApp extends typescript_1.TypeScriptAppProject {
53
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sTypeScriptApp", version: "0.103.22" };
53
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sTypeScriptApp", version: "0.103.23" };
54
54
  /**
55
55
  * The CDK8s app entrypoint
56
56
  */
@@ -48,7 +48,7 @@ const cdk_1 = require("../cdk");
48
48
  * @pjid cdk8s-construct
49
49
  */
50
50
  class ConstructLibraryCdk8s extends cdk_1.ConstructLibrary {
51
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.ConstructLibraryCdk8s", version: "0.103.22" };
51
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.ConstructLibraryCdk8s", version: "0.103.23" };
52
52
  /**
53
53
  * The CDK8s version this app is using.
54
54
  */
@@ -4,7 +4,7 @@ exports.Cdk8sDepsPy = void 0;
4
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const cdk8s_deps_1 = require("./cdk8s-deps");
6
6
  class Cdk8sDepsPy extends cdk8s_deps_1.Cdk8sDeps {
7
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sDepsPy", version: "0.103.22" };
7
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sDepsPy", version: "0.103.23" };
8
8
  packageNames() {
9
9
  return {
10
10
  cdk8s: "cdk8s",
@@ -42,7 +42,7 @@ const dependencies_1 = require("../dependencies");
42
42
  * Manages dependencies on the CDK8s.
43
43
  */
44
44
  class Cdk8sDeps extends component_1.Component {
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sDeps", version: "0.103.22" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.Cdk8sDeps", version: "0.103.23" };
46
46
  /**
47
47
  * The dependency requirement for CDK8s.
48
48
  */
@@ -9,7 +9,7 @@ const dependencies_1 = require("../dependencies");
9
9
  * CDK8S integration test.
10
10
  */
11
11
  class IntegrationTest extends cdk_1.IntegrationTestBase {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.IntegrationTest", version: "0.103.22" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdk8s.IntegrationTest", version: "0.103.23" };
13
13
  constructor(project, options) {
14
14
  super(project, options);
15
15
  project.deps.requestDependency({
@@ -49,7 +49,7 @@ const cdk_1 = require("../cdk");
49
49
  * @pjid cdktf-construct
50
50
  */
51
51
  class ConstructLibraryCdktf extends cdk_1.ConstructLibrary {
52
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktf.ConstructLibraryCdktf", version: "0.103.22" };
52
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktf.ConstructLibraryCdktf", version: "0.103.23" };
53
53
  constructor(options) {
54
54
  super(options);
55
55
  if (!options.cdktfVersion) {
@@ -54,7 +54,7 @@ const fs_1 = require("../util/fs");
54
54
  * @pjid cdktn-app-ts
55
55
  */
56
56
  class CdktnTypeScriptApp extends typescript_1.TypeScriptAppProject {
57
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnTypeScriptApp", version: "0.103.22" };
57
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnTypeScriptApp", version: "0.103.23" };
58
58
  /**
59
59
  * The CDKTN app entrypoint.
60
60
  */
@@ -46,7 +46,7 @@ const json_1 = require("../json");
46
46
  * backwards compatibility with its CDKTF origins.
47
47
  */
48
48
  class CdktnConfig extends component_1.Component {
49
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnConfig", version: "0.103.22" };
49
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnConfig", version: "0.103.23" };
50
50
  /**
51
51
  * Represents the JSON file.
52
52
  */
@@ -17,7 +17,7 @@ const dependencies_1 = require("../dependencies");
17
17
  * @pjid cdktn-construct
18
18
  */
19
19
  class ConstructLibraryCdktn extends cdk_1.ConstructLibrary {
20
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.ConstructLibraryCdktn", version: "0.103.22" };
20
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.ConstructLibraryCdktn", version: "0.103.23" };
21
21
  cdktnDeps;
22
22
  constructor(options) {
23
23
  super(options);
@@ -42,7 +42,7 @@ const dependencies_1 = require("../dependencies");
42
42
  * Manages dependencies on CDK Terrain (CDKTN).
43
43
  */
44
44
  class CdktnDeps extends component_1.Component {
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnDeps", version: "0.103.22" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnDeps", version: "0.103.23" };
46
46
  /**
47
47
  * The dependency requirement for CDKTN (e.g. `^0.24.0`).
48
48
  */
@@ -7,7 +7,7 @@ const component_1 = require("../component");
7
7
  * Adds standard CDKTN tasks to your project.
8
8
  */
9
9
  class CdktnTasks extends component_1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnTasks", version: "0.103.22" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.cdktn.CdktnTasks", version: "0.103.23" };
11
11
  /**
12
12
  * Gets/updates Terraform providers and modules.
13
13
  */
@@ -12,7 +12,7 @@ const yaml_1 = require("../yaml");
12
12
  * @see https://circleci.com/docs/2.0/configuration-reference/
13
13
  */
14
14
  class Circleci extends component_1.Component {
15
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.circleci.Circleci", version: "0.103.22" };
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.circleci.Circleci", version: "0.103.23" };
16
16
  /**
17
17
  * The yaml file for the Circleci pipeline
18
18
  * */
package/lib/component.js CHANGED
@@ -16,7 +16,7 @@ const componentId = (scope) => {
16
16
  * @param id Unique id of the component. If not provided, an unstable AutoId is generated.
17
17
  */
18
18
  class Component extends constructs_1.Construct {
19
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Component", version: "0.103.22" };
19
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Component", version: "0.103.23" };
20
20
  /**
21
21
  * Test whether the given construct is a component.
22
22
  */
@@ -175,7 +175,7 @@ function guardDetached(target) {
175
175
  * ```
176
176
  */
177
177
  class FutureComponent extends Component {
178
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.FutureComponent", version: "0.103.22" };
178
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.FutureComponent", version: "0.103.23" };
179
179
  newTargetName;
180
180
  attachedState = false;
181
181
  constructor() {
@@ -51,7 +51,7 @@ const json_1 = require("./json");
51
51
  * `nodeProject.addDeps()` or use the generic API of `project.deps`:
52
52
  */
53
53
  class Dependencies extends component_1.Component {
54
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Dependencies", version: "0.103.22" };
54
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Dependencies", version: "0.103.23" };
55
55
  /**
56
56
  * The project-relative path of the deps manifest file.
57
57
  */
package/lib/dev-env.js CHANGED
@@ -6,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  * Options for specifying the Docker image of the container.
7
7
  */
8
8
  class DevEnvironmentDockerImage {
9
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DevEnvironmentDockerImage", version: "0.103.22" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DevEnvironmentDockerImage", version: "0.103.23" };
10
10
  /**
11
11
  * A publicly available Docker image.
12
12
  * @example 'ubuntu:latest'
@@ -7,7 +7,7 @@ const docker_compose_1 = require("./docker-compose");
7
7
  * A docker-compose service.
8
8
  */
9
9
  class DockerComposeService {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DockerComposeService", version: "0.103.22" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DockerComposeService", version: "0.103.23" };
11
11
  /**
12
12
  * Name of the service.
13
13
  */
@@ -11,7 +11,7 @@ const yaml_1 = require("../yaml");
11
11
  * Create a docker-compose YAML file.
12
12
  */
13
13
  class DockerCompose extends component_1.Component {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DockerCompose", version: "0.103.22" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.DockerCompose", version: "0.103.23" };
15
15
  /**
16
16
  * Depends on a service name.
17
17
  */
package/lib/file.js CHANGED
@@ -45,7 +45,7 @@ const util_1 = require("./util");
45
45
  const constructs_1 = require("./util/constructs");
46
46
  const diff_1 = require("./util/diff");
47
47
  class FileBase extends component_1.Component {
48
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.FileBase", version: "0.103.22" };
48
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.FileBase", version: "0.103.23" };
49
49
  /**
50
50
  * The file path, relative to the project's outdir.
51
51
  */
@@ -32,7 +32,7 @@ var EndOfLine;
32
32
  * @see https://git-scm.com/docs/gitattributes
33
33
  */
34
34
  class GitAttributesFile extends file_1.FileBase {
35
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.GitAttributesFile", version: "0.103.22" };
35
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.GitAttributesFile", version: "0.103.23" };
36
36
  attributes = new Map();
37
37
  /**
38
38
  * The default end of line character for text files.
@@ -6,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  * Manage the versions used for GitHub Actions used in steps
7
7
  */
8
8
  class GitHubActionsProvider {
9
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GitHubActionsProvider", version: "0.103.22" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GitHubActionsProvider", version: "0.103.23" };
10
10
  actions = new Map();
11
11
  /**
12
12
  * Define an override for a given action.
@@ -1,7 +1,10 @@
1
1
  /**
2
- * Fully qualified references for all GitHub Actions used by this project.
2
+ * Fully qualified references (`owner/repo@ref`) for GitHub Actions.
3
+ *
4
+ * Use these when authoring workflow steps, so that every step references a
5
+ * reviewed action version.
3
6
  */
4
- export declare class GitHubActions {
7
+ export declare class ActionRefs {
5
8
  /** actions/checkout at v7.0.1 */
6
9
  static readonly ACTIONS_CHECKOUT = "actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1";
7
10
  /** actions/create-github-app-token at v3.2.0 (immutable) */
@@ -1,11 +1,16 @@
1
1
  "use strict";
2
- // ~~ Generated by projen. To modify, edit .projenrc.ts and run "node ./projen.js".
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.GitHubActions = void 0;
3
+ exports.ActionRefs = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ // ~~ Generated by projen. To modify, edit .projenrc.ts and run "node ./projen.js".
5
6
  /**
6
- * Fully qualified references for all GitHub Actions used by this project.
7
+ * Fully qualified references (`owner/repo@ref`) for GitHub Actions.
8
+ *
9
+ * Use these when authoring workflow steps, so that every step references a
10
+ * reviewed action version.
7
11
  */
8
- class GitHubActions {
12
+ class ActionRefs {
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.ActionRefs", version: "0.103.23" };
9
14
  /** actions/checkout at v7.0.1 */
10
15
  static ACTIONS_CHECKOUT = "actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1";
11
16
  /** actions/create-github-app-token at v3.2.0 (immutable) */
@@ -46,5 +51,5 @@ class GitHubActions {
46
51
  static SQREN_BACKPORT_GITHUB_ACTION = "sqren/backport-github-action@8a6c0381851f43f9f1fddc7303f0e9015eb57b62";
47
52
  constructor() { }
48
53
  }
49
- exports.GitHubActions = GitHubActions;
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5jb25zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9naXRodWIvYWN0aW9ucy5jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsbUZBQW1GOzs7QUFFbkY7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFDeEIsaUNBQWlDO0lBQzFCLE1BQU0sQ0FBVSxnQkFBZ0IsR0FBRywyREFBMkQsQ0FBQztJQUN0Ryw0REFBNEQ7SUFDckQsTUFBTSxDQUFVLCtCQUErQixHQUFHLHdDQUF3QyxDQUFDO0lBQ2xHLGlEQUFpRDtJQUMxQyxNQUFNLENBQVUsZ0NBQWdDLEdBQUcsMkVBQTJFLENBQUM7SUFDdEksMENBQTBDO0lBQ25DLE1BQU0sQ0FBVSx5QkFBeUIsR0FBRyxvRUFBb0UsQ0FBQztJQUN4SCxzQ0FBc0M7SUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFHLGdFQUFnRSxDQUFDO0lBQ2hILGlEQUFpRDtJQUMxQyxNQUFNLENBQVUsb0JBQW9CLEdBQUcsNkJBQTZCLENBQUM7SUFDNUUsNkNBQTZDO0lBQ3RDLE1BQU0sQ0FBVSxnQkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQztJQUNwRSwrQ0FBK0M7SUFDeEMsTUFBTSxDQUFVLGtCQUFrQixHQUFHLDJCQUEyQixDQUFDO0lBQ3hFLCtDQUErQztJQUN4QyxNQUFNLENBQVUsa0JBQWtCLEdBQUcsMkJBQTJCLENBQUM7SUFDeEUsaURBQWlEO0lBQzFDLE1BQU0sQ0FBVSxvQkFBb0IsR0FBRyw2QkFBNkIsQ0FBQztJQUM1RSwyQ0FBMkM7SUFDcEMsTUFBTSxDQUFVLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQztJQUMvRCx3Q0FBd0M7SUFDakMsTUFBTSxDQUFVLHVCQUF1QixHQUFHLGtFQUFrRSxDQUFDO0lBQ3BILG9EQUFvRDtJQUM3QyxNQUFNLENBQVUsbUNBQW1DLEdBQUcsOEVBQThFLENBQUM7SUFDNUksa0VBQWtFO0lBQzNELE1BQU0sQ0FBVSxxQ0FBcUMsR0FBRyw4Q0FBOEMsQ0FBQztJQUM5RyxtREFBbUQ7SUFDNUMsTUFBTSxDQUFVLHNCQUFzQixHQUFHLCtCQUErQixDQUFDO0lBQ2hGLGtDQUFrQztJQUMzQixNQUFNLENBQVUsaUJBQWlCLEdBQUcsNERBQTRELENBQUM7SUFDeEcsNERBQTREO0lBQ3JELE1BQU0sQ0FBVSwrQkFBK0IsR0FBRyx3Q0FBd0MsQ0FBQztJQUNsRywrQ0FBK0M7SUFDeEMsTUFBTSxDQUFVLGlCQUFpQixHQUFHLDJCQUEyQixDQUFDO0lBQ3ZFLDhDQUE4QztJQUN2QyxNQUFNLENBQVUsNEJBQTRCLEdBQUcsdUVBQXVFLENBQUM7SUFFOUgsZ0JBQXVCLENBQUM7O0FBeEMxQixzQ0F5Q0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJub2RlIC4vcHJvamVuLmpzXCIuXG5cbi8qKlxuICogRnVsbHkgcXVhbGlmaWVkIHJlZmVyZW5jZXMgZm9yIGFsbCBHaXRIdWIgQWN0aW9ucyB1c2VkIGJ5IHRoaXMgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEdpdEh1YkFjdGlvbnMge1xuICAvKiogYWN0aW9ucy9jaGVja291dCBhdCB2Ny4wLjEgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBQ1RJT05TX0NIRUNLT1VUID0gXCJhY3Rpb25zL2NoZWNrb3V0QDNkM2M0MmU1YWFjNWJhODA1ODI1ZGE3NjQxMGMxODEyNzNiYTkwYjFcIjtcbiAgLyoqIGFjdGlvbnMvY3JlYXRlLWdpdGh1Yi1hcHAtdG9rZW4gYXQgdjMuMi4wIChpbW11dGFibGUpICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUNUSU9OU19DUkVBVEVfR0lUSFVCX0FQUF9UT0tFTiA9IFwiYWN0aW9ucy9jcmVhdGUtZ2l0aHViLWFwcC10b2tlbkB2My4yLjBcIjtcbiAgLyoqIGFjdGlvbnMvZGVwZW5kZW5jeS1yZXZpZXctYWN0aW9uIGF0IHY1LjAuMCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTlNfREVQRU5ERU5DWV9SRVZJRVdfQUNUSU9OID0gXCJhY3Rpb25zL2RlcGVuZGVuY3ktcmV2aWV3LWFjdGlvbkBhMWQyODJiMzZiNmYzNTE5YWExZjNmYzYzNmY2MDljNDdkZGRiMjk0XCI7XG4gIC8qKiBhY3Rpb25zL2Rvd25sb2FkLWFydGlmYWN0IGF0IHY4LjAuMSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTlNfRE9XTkxPQURfQVJUSUZBQ1QgPSBcImFjdGlvbnMvZG93bmxvYWQtYXJ0aWZhY3RAM2U1ZjQ1YjJjZmI5MTcyMDU0YjQwODdhNDBlOGUwYjVhNTQ2MWU3Y1wiO1xuICAvKiogYWN0aW9ucy9naXRodWItc2NyaXB0IGF0IHY5LjAuMCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTlNfR0lUSFVCX1NDUklQVCA9IFwiYWN0aW9ucy9naXRodWItc2NyaXB0QDNhMjg0NGI3ZTljNDIyZDNjMTBkMjg3Yzg5NTU3M2Y3MTA4ZGExYjNcIjtcbiAgLyoqIGFjdGlvbnMvc2V0dXAtZG90bmV0IGF0IHY2LjAuMCAoaW1tdXRhYmxlKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTlNfU0VUVVBfRE9UTkVUID0gXCJhY3Rpb25zL3NldHVwLWRvdG5ldEB2Ni4wLjBcIjtcbiAgLyoqIGFjdGlvbnMvc2V0dXAtZ28gYXQgdjcuMC4wIChpbW11dGFibGUpICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUNUSU9OU19TRVRVUF9HTyA9IFwiYWN0aW9ucy9zZXR1cC1nb0B2Ny4wLjBcIjtcbiAgLyoqIGFjdGlvbnMvc2V0dXAtamF2YSBhdCB2Ni4wLjAgKGltbXV0YWJsZSkgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBQ1RJT05TX1NFVFVQX0pBVkEgPSBcImFjdGlvbnMvc2V0dXAtamF2YUB2Ni4wLjBcIjtcbiAgLyoqIGFjdGlvbnMvc2V0dXAtbm9kZSBhdCB2Ny4wLjAgKGltbXV0YWJsZSkgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBQ1RJT05TX1NFVFVQX05PREUgPSBcImFjdGlvbnMvc2V0dXAtbm9kZUB2Ny4wLjBcIjtcbiAgLyoqIGFjdGlvbnMvc2V0dXAtcHl0aG9uIGF0IHY3LjAuMCAoaW1tdXRhYmxlKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTlNfU0VUVVBfUFlUSE9OID0gXCJhY3Rpb25zL3NldHVwLXB5dGhvbkB2Ny4wLjBcIjtcbiAgLyoqIGFjdGlvbnMvc3RhbGUgYXQgdjExLjAuMCAoaW1tdXRhYmxlKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTlNfU1RBTEUgPSBcImFjdGlvbnMvc3RhbGVAdjExLjAuMFwiO1xuICAvKiogYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3QgYXQgdjcuMC4xICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUNUSU9OU19VUExPQURfQVJUSUZBQ1QgPSBcImFjdGlvbnMvdXBsb2FkLWFydGlmYWN0QDA0M2ZiNDZkMWE5M2M3N2FhZTY1NmU3YzFjNjRhODc1ZDFmYzZhMGFcIjtcbiAgLyoqIGFtYW5ubi9hY3Rpb24tc2VtYW50aWMtcHVsbC1yZXF1ZXN0IGF0IHY2LjEuMSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFNQU5OTl9BQ1RJT05fU0VNQU5USUNfUFVMTF9SRVFVRVNUID0gXCJhbWFubm4vYWN0aW9uLXNlbWFudGljLXB1bGwtcmVxdWVzdEA0OGYyNTYyODRiZDQ2Y2RhYWIxMDQ4YzM3MjEzNjBlODA4MzM1ZDUwXCI7XG4gIC8qKiBhd3MtYWN0aW9ucy9jb25maWd1cmUtYXdzLWNyZWRlbnRpYWxzIGF0IHY2LjIuMyAoaW1tdXRhYmxlKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFXU19BQ1RJT05TX0NPTkZJR1VSRV9BV1NfQ1JFREVOVElBTFMgPSBcImF3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAdjYuMi4zXCI7XG4gIC8qKiBjb2RlY292L2NvZGVjb3YtYWN0aW9uIGF0IHY3LjAuMCAoaW1tdXRhYmxlKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPREVDT1ZfQ09ERUNPVl9BQ1RJT04gPSBcImNvZGVjb3YvY29kZWNvdi1hY3Rpb25AdjcuMC4wXCI7XG4gIC8qKiBvdmVuLXNoL3NldHVwLWJ1biBhdCB2Mi4yLjAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBPVkVOX1NIX1NFVFVQX0JVTiA9IFwib3Zlbi1zaC9zZXR1cC1idW5AMGM1MDc3ZTUxNDE5ODY4NjE4YWVhYTVmZTgwMTljNjI0MjE4NTdkNlwiO1xuICAvKiogcGV0ZXItZXZhbnMvY3JlYXRlLXB1bGwtcmVxdWVzdCBhdCB2OC4xLjEgKGltbXV0YWJsZSkgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQRVRFUl9FVkFOU19DUkVBVEVfUFVMTF9SRVFVRVNUID0gXCJwZXRlci1ldmFucy9jcmVhdGUtcHVsbC1yZXF1ZXN0QHY4LjEuMVwiO1xuICAvKiogcG5wbS9hY3Rpb24tc2V0dXAgYXQgdjYuMC4xMCAoaW1tdXRhYmxlKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBOUE1fQUNUSU9OX1NFVFVQID0gXCJwbnBtL2FjdGlvbi1zZXR1cEB2Ni4wLjEwXCI7XG4gIC8qKiBzcXJlbi9iYWNrcG9ydC1naXRodWItYWN0aW9uIGF0IHYxMi4wLjQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTUVJFTl9CQUNLUE9SVF9HSVRIVUJfQUNUSU9OID0gXCJzcXJlbi9iYWNrcG9ydC1naXRodWItYWN0aW9uQDhhNmMwMzgxODUxZjQzZjlmMWZkZGM3MzAzZjBlOTAxNWViNTdiNjJcIjtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cbn0iXX0=
54
+ exports.ActionRefs = ActionRefs;
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5jb25zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9naXRodWIvYWN0aW9ucy5jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUZBQW1GO0FBRW5GOzs7OztHQUtHO0FBQ0gsTUFBYSxVQUFVOztJQUNyQixpQ0FBaUM7SUFDMUIsTUFBTSxDQUFVLGdCQUFnQixHQUFHLDJEQUEyRCxDQUFDO0lBQ3RHLDREQUE0RDtJQUNyRCxNQUFNLENBQVUsK0JBQStCLEdBQUcsd0NBQXdDLENBQUM7SUFDbEcsaURBQWlEO0lBQzFDLE1BQU0sQ0FBVSxnQ0FBZ0MsR0FBRywyRUFBMkUsQ0FBQztJQUN0SSwwQ0FBMEM7SUFDbkMsTUFBTSxDQUFVLHlCQUF5QixHQUFHLG9FQUFvRSxDQUFDO0lBQ3hILHNDQUFzQztJQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQUcsZ0VBQWdFLENBQUM7SUFDaEgsaURBQWlEO0lBQzFDLE1BQU0sQ0FBVSxvQkFBb0IsR0FBRyw2QkFBNkIsQ0FBQztJQUM1RSw2Q0FBNkM7SUFDdEMsTUFBTSxDQUFVLGdCQUFnQixHQUFHLHlCQUF5QixDQUFDO0lBQ3BFLCtDQUErQztJQUN4QyxNQUFNLENBQVUsa0JBQWtCLEdBQUcsMkJBQTJCLENBQUM7SUFDeEUsK0NBQStDO0lBQ3hDLE1BQU0sQ0FBVSxrQkFBa0IsR0FBRywyQkFBMkIsQ0FBQztJQUN4RSxpREFBaUQ7SUFDMUMsTUFBTSxDQUFVLG9CQUFvQixHQUFHLDZCQUE2QixDQUFDO0lBQzVFLDJDQUEyQztJQUNwQyxNQUFNLENBQVUsYUFBYSxHQUFHLHVCQUF1QixDQUFDO0lBQy9ELHdDQUF3QztJQUNqQyxNQUFNLENBQVUsdUJBQXVCLEdBQUcsa0VBQWtFLENBQUM7SUFDcEgsb0RBQW9EO0lBQzdDLE1BQU0sQ0FBVSxtQ0FBbUMsR0FBRyw4RUFBOEUsQ0FBQztJQUM1SSxrRUFBa0U7SUFDM0QsTUFBTSxDQUFVLHFDQUFxQyxHQUFHLDhDQUE4QyxDQUFDO0lBQzlHLG1EQUFtRDtJQUM1QyxNQUFNLENBQVUsc0JBQXNCLEdBQUcsK0JBQStCLENBQUM7SUFDaEYsa0NBQWtDO0lBQzNCLE1BQU0sQ0FBVSxpQkFBaUIsR0FBRyw0REFBNEQsQ0FBQztJQUN4Ryw0REFBNEQ7SUFDckQsTUFBTSxDQUFVLCtCQUErQixHQUFHLHdDQUF3QyxDQUFDO0lBQ2xHLCtDQUErQztJQUN4QyxNQUFNLENBQVUsaUJBQWlCLEdBQUcsMkJBQTJCLENBQUM7SUFDdkUsOENBQThDO0lBQ3ZDLE1BQU0sQ0FBVSw0QkFBNEIsR0FBRyx1RUFBdUUsQ0FBQztJQUU5SCxnQkFBdUIsQ0FBQzs7QUF4QzFCLGdDQXlDQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5vZGUgLi9wcm9qZW4uanNcIi5cblxuLyoqXG4gKiBGdWxseSBxdWFsaWZpZWQgcmVmZXJlbmNlcyAoYG93bmVyL3JlcG9AcmVmYCkgZm9yIEdpdEh1YiBBY3Rpb25zLlxuICogXG4gKiBVc2UgdGhlc2Ugd2hlbiBhdXRob3Jpbmcgd29ya2Zsb3cgc3RlcHMsIHNvIHRoYXQgZXZlcnkgc3RlcCByZWZlcmVuY2VzIGFcbiAqIHJldmlld2VkIGFjdGlvbiB2ZXJzaW9uLlxuICovXG5leHBvcnQgY2xhc3MgQWN0aW9uUmVmcyB7XG4gIC8qKiBhY3Rpb25zL2NoZWNrb3V0IGF0IHY3LjAuMSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTlNfQ0hFQ0tPVVQgPSBcImFjdGlvbnMvY2hlY2tvdXRAM2QzYzQyZTVhYWM1YmE4MDU4MjVkYTc2NDEwYzE4MTI3M2JhOTBiMVwiO1xuICAvKiogYWN0aW9ucy9jcmVhdGUtZ2l0aHViLWFwcC10b2tlbiBhdCB2My4yLjAgKGltbXV0YWJsZSkgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBQ1RJT05TX0NSRUFURV9HSVRIVUJfQVBQX1RPS0VOID0gXCJhY3Rpb25zL2NyZWF0ZS1naXRodWItYXBwLXRva2VuQHYzLjIuMFwiO1xuICAvKiogYWN0aW9ucy9kZXBlbmRlbmN5LXJldmlldy1hY3Rpb24gYXQgdjUuMC4wICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUNUSU9OU19ERVBFTkRFTkNZX1JFVklFV19BQ1RJT04gPSBcImFjdGlvbnMvZGVwZW5kZW5jeS1yZXZpZXctYWN0aW9uQGExZDI4MmIzNmI2ZjM1MTlhYTFmM2ZjNjM2ZjYwOWM0N2RkZGIyOTRcIjtcbiAgLyoqIGFjdGlvbnMvZG93bmxvYWQtYXJ0aWZhY3QgYXQgdjguMC4xICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUNUSU9OU19ET1dOTE9BRF9BUlRJRkFDVCA9IFwiYWN0aW9ucy9kb3dubG9hZC1hcnRpZmFjdEAzZTVmNDViMmNmYjkxNzIwNTRiNDA4N2E0MGU4ZTBiNWE1NDYxZTdjXCI7XG4gIC8qKiBhY3Rpb25zL2dpdGh1Yi1zY3JpcHQgYXQgdjkuMC4wICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUNUSU9OU19HSVRIVUJfU0NSSVBUID0gXCJhY3Rpb25zL2dpdGh1Yi1zY3JpcHRAM2EyODQ0YjdlOWM0MjJkM2MxMGQyODdjODk1NTczZjcxMDhkYTFiM1wiO1xuICAvKiogYWN0aW9ucy9zZXR1cC1kb3RuZXQgYXQgdjYuMC4wIChpbW11dGFibGUpICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUNUSU9OU19TRVRVUF9ET1RORVQgPSBcImFjdGlvbnMvc2V0dXAtZG90bmV0QHY2LjAuMFwiO1xuICAvKiogYWN0aW9ucy9zZXR1cC1nbyBhdCB2Ny4wLjAgKGltbXV0YWJsZSkgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBQ1RJT05TX1NFVFVQX0dPID0gXCJhY3Rpb25zL3NldHVwLWdvQHY3LjAuMFwiO1xuICAvKiogYWN0aW9ucy9zZXR1cC1qYXZhIGF0IHY2LjAuMCAoaW1tdXRhYmxlKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTlNfU0VUVVBfSkFWQSA9IFwiYWN0aW9ucy9zZXR1cC1qYXZhQHY2LjAuMFwiO1xuICAvKiogYWN0aW9ucy9zZXR1cC1ub2RlIGF0IHY3LjAuMCAoaW1tdXRhYmxlKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTlNfU0VUVVBfTk9ERSA9IFwiYWN0aW9ucy9zZXR1cC1ub2RlQHY3LjAuMFwiO1xuICAvKiogYWN0aW9ucy9zZXR1cC1weXRob24gYXQgdjcuMC4wIChpbW11dGFibGUpICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUNUSU9OU19TRVRVUF9QWVRIT04gPSBcImFjdGlvbnMvc2V0dXAtcHl0aG9uQHY3LjAuMFwiO1xuICAvKiogYWN0aW9ucy9zdGFsZSBhdCB2MTEuMC4wIChpbW11dGFibGUpICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUNUSU9OU19TVEFMRSA9IFwiYWN0aW9ucy9zdGFsZUB2MTEuMC4wXCI7XG4gIC8qKiBhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdCBhdCB2Ny4wLjEgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBQ1RJT05TX1VQTE9BRF9BUlRJRkFDVCA9IFwiYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3RAMDQzZmI0NmQxYTkzYzc3YWFlNjU2ZTdjMWM2NGE4NzVkMWZjNmEwYVwiO1xuICAvKiogYW1hbm5uL2FjdGlvbi1zZW1hbnRpYy1wdWxsLXJlcXVlc3QgYXQgdjYuMS4xICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQU1BTk5OX0FDVElPTl9TRU1BTlRJQ19QVUxMX1JFUVVFU1QgPSBcImFtYW5ubi9hY3Rpb24tc2VtYW50aWMtcHVsbC1yZXF1ZXN0QDQ4ZjI1NjI4NGJkNDZjZGFhYjEwNDhjMzcyMTM2MGU4MDgzMzVkNTBcIjtcbiAgLyoqIGF3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHMgYXQgdjYuMi4zIChpbW11dGFibGUpICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVdTX0FDVElPTlNfQ09ORklHVVJFX0FXU19DUkVERU5USUFMUyA9IFwiYXdzLWFjdGlvbnMvY29uZmlndXJlLWF3cy1jcmVkZW50aWFsc0B2Ni4yLjNcIjtcbiAgLyoqIGNvZGVjb3YvY29kZWNvdi1hY3Rpb24gYXQgdjcuMC4wIChpbW11dGFibGUpICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ09ERUNPVl9DT0RFQ09WX0FDVElPTiA9IFwiY29kZWNvdi9jb2RlY292LWFjdGlvbkB2Ny4wLjBcIjtcbiAgLyoqIG92ZW4tc2gvc2V0dXAtYnVuIGF0IHYyLjIuMCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9WRU5fU0hfU0VUVVBfQlVOID0gXCJvdmVuLXNoL3NldHVwLWJ1bkAwYzUwNzdlNTE0MTk4Njg2MThhZWFhNWZlODAxOWM2MjQyMTg1N2Q2XCI7XG4gIC8qKiBwZXRlci1ldmFucy9jcmVhdGUtcHVsbC1yZXF1ZXN0IGF0IHY4LjEuMSAoaW1tdXRhYmxlKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBFVEVSX0VWQU5TX0NSRUFURV9QVUxMX1JFUVVFU1QgPSBcInBldGVyLWV2YW5zL2NyZWF0ZS1wdWxsLXJlcXVlc3RAdjguMS4xXCI7XG4gIC8qKiBwbnBtL2FjdGlvbi1zZXR1cCBhdCB2Ni4wLjEwIChpbW11dGFibGUpICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUE5QTV9BQ1RJT05fU0VUVVAgPSBcInBucG0vYWN0aW9uLXNldHVwQHY2LjAuMTBcIjtcbiAgLyoqIHNxcmVuL2JhY2twb3J0LWdpdGh1Yi1hY3Rpb24gYXQgdjEyLjAuNCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNRUkVOX0JBQ0tQT1JUX0dJVEhVQl9BQ1RJT04gPSBcInNxcmVuL2JhY2twb3J0LWdpdGh1Yi1hY3Rpb25AOGE2YzAzODE4NTFmNDNmOWYxZmRkYzczMDNmMGU5MDE1ZWI1N2I2MlwiO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxufSJdfQ==
@@ -8,7 +8,7 @@ const component_1 = require("../component");
8
8
  * Auto approve pull requests that meet a criteria
9
9
  */
10
10
  class AutoApprove extends component_1.Component {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.AutoApprove", version: "0.103.22" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.AutoApprove", version: "0.103.23" };
12
12
  label;
13
13
  constructor(github, options = {}) {
14
14
  super(github.project);
@@ -19,7 +19,7 @@ const component_1 = require("../component");
19
19
  * @see https://mergify.com/
20
20
  */
21
21
  class AutoMerge extends component_1.Component {
22
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.AutoMerge", version: "0.103.22" };
22
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.AutoMerge", version: "0.103.23" };
23
23
  lazyConditions = new Array();
24
24
  constructor(github, options = {}) {
25
25
  super(github.project);
@@ -54,7 +54,7 @@ var MergeMethod;
54
54
  * PRs will be merged once they pass required checks.
55
55
  */
56
56
  class AutoQueue extends component_1.Component {
57
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.AutoQueue", version: "0.103.22" };
57
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.AutoQueue", version: "0.103.23" };
58
58
  constructor(scope, options = {}) {
59
59
  super(scope);
60
60
  const workflowEngine = github_1.GitHub.of(this.project);
@@ -166,7 +166,7 @@ var VersioningStrategy;
166
166
  * on the lockfile itself will be proposed.
167
167
  */
168
168
  class Dependabot extends component_1.Component {
169
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.Dependabot", version: "0.103.22" };
169
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.Dependabot", version: "0.103.23" };
170
170
  /**
171
171
  * The raw dependabot configuration.
172
172
  * @see https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates