projen 0.98.3 → 0.98.5

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 (149) hide show
  1. package/.jsii +957 -350
  2. package/lib/ai-instructions.d.ts +147 -0
  3. package/lib/ai-instructions.js +238 -0
  4. package/lib/awscdk/auto-discover.js +5 -5
  5. package/lib/awscdk/awscdk-app-java.js +1 -1
  6. package/lib/awscdk/awscdk-app-py.js +1 -1
  7. package/lib/awscdk/awscdk-app-ts.js +1 -1
  8. package/lib/awscdk/awscdk-construct.js +2 -2
  9. package/lib/awscdk/awscdk-deps-java.js +1 -1
  10. package/lib/awscdk/awscdk-deps-js.js +1 -1
  11. package/lib/awscdk/awscdk-deps-py.js +1 -1
  12. package/lib/awscdk/awscdk-deps.js +1 -1
  13. package/lib/awscdk/cdk-config.js +4 -4
  14. package/lib/awscdk/cdk-tasks.js +1 -1
  15. package/lib/awscdk/integration-test.js +1 -1
  16. package/lib/awscdk/internal.d.ts +1 -0
  17. package/lib/awscdk/lambda-extension.js +1 -1
  18. package/lib/awscdk/lambda-function.js +2 -2
  19. package/lib/awscdk/private/feature-flags-v2.const.d.ts +2 -1
  20. package/lib/awscdk/private/feature-flags-v2.const.js +4 -3
  21. package/lib/build/build-workflow.js +1 -1
  22. package/lib/cdk/auto-discover-base.js +2 -2
  23. package/lib/cdk/construct-lib.js +1 -1
  24. package/lib/cdk/integration-test-base.js +1 -1
  25. package/lib/cdk/jsii-docgen.js +1 -1
  26. package/lib/cdk/jsii-project.js +1 -1
  27. package/lib/cdk8s/auto-discover.js +2 -2
  28. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  29. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  30. package/lib/cdk8s/cdk8s-construct.js +1 -1
  31. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  32. package/lib/cdk8s/cdk8s-deps.js +1 -1
  33. package/lib/cdk8s/integration-test.js +1 -1
  34. package/lib/cdktf/cdktf-construct.js +1 -1
  35. package/lib/circleci/circleci.js +1 -1
  36. package/lib/component.js +3 -3
  37. package/lib/dependencies.js +1 -1
  38. package/lib/dev-env.js +1 -1
  39. package/lib/docker-compose/docker-compose-service.js +1 -1
  40. package/lib/docker-compose/docker-compose.js +1 -1
  41. package/lib/file.js +3 -3
  42. package/lib/gitattributes.js +1 -1
  43. package/lib/github/actions-provider.js +1 -1
  44. package/lib/github/auto-approve.js +1 -1
  45. package/lib/github/auto-merge.js +1 -1
  46. package/lib/github/auto-queue.js +1 -1
  47. package/lib/github/dependabot.js +1 -1
  48. package/lib/github/github-credentials.js +1 -1
  49. package/lib/github/github-project.js +1 -1
  50. package/lib/github/github.js +1 -1
  51. package/lib/github/merge-queue.js +1 -1
  52. package/lib/github/mergify.js +1 -1
  53. package/lib/github/pr-template.js +1 -1
  54. package/lib/github/pull-request-backport.js +1 -1
  55. package/lib/github/pull-request-lint.js +1 -1
  56. package/lib/github/stale.js +1 -1
  57. package/lib/github/task-workflow-job.js +1 -1
  58. package/lib/github/task-workflow.js +1 -1
  59. package/lib/github/workflow-actions.js +1 -1
  60. package/lib/github/workflow-jobs.js +1 -1
  61. package/lib/github/workflow-steps.js +1 -1
  62. package/lib/github/workflows.js +1 -1
  63. package/lib/gitlab/configuration.js +1 -1
  64. package/lib/gitlab/gitlab-configuration.js +1 -1
  65. package/lib/gitlab/nested-configuration.js +1 -1
  66. package/lib/gitpod.js +1 -1
  67. package/lib/ignore-file.js +1 -1
  68. package/lib/index.d.ts +1 -0
  69. package/lib/index.js +2 -1
  70. package/lib/ini.js +1 -1
  71. package/lib/java/java-project.js +1 -1
  72. package/lib/java/junit.js +1 -1
  73. package/lib/java/maven-compile.js +1 -1
  74. package/lib/java/maven-packaging.js +1 -1
  75. package/lib/java/maven-sample.js +1 -1
  76. package/lib/java/pom.js +2 -2
  77. package/lib/java/projenrc.js +1 -1
  78. package/lib/javascript/biome/biome-config.d.ts +71 -25
  79. package/lib/javascript/biome/biome-config.js +39 -1
  80. package/lib/javascript/biome/biome.js +1 -1
  81. package/lib/javascript/bundler.js +1 -1
  82. package/lib/javascript/eslint.js +1 -1
  83. package/lib/javascript/jest.d.ts +3 -1
  84. package/lib/javascript/jest.js +20 -17
  85. package/lib/javascript/license-checker.js +1 -1
  86. package/lib/javascript/node-package.js +1 -1
  87. package/lib/javascript/node-project.js +1 -1
  88. package/lib/javascript/npm-config.js +1 -1
  89. package/lib/javascript/prettier.js +1 -1
  90. package/lib/javascript/projenrc.js +1 -1
  91. package/lib/javascript/typescript-config.js +2 -2
  92. package/lib/javascript/upgrade-dependencies.js +2 -2
  93. package/lib/javascript/yarnrc.js +1 -1
  94. package/lib/json-patch.js +1 -1
  95. package/lib/json.js +1 -1
  96. package/lib/license.js +1 -1
  97. package/lib/logger.js +3 -3
  98. package/lib/makefile.js +1 -1
  99. package/lib/object-file.js +1 -1
  100. package/lib/project-build.js +1 -1
  101. package/lib/project-tree.js +1 -1
  102. package/lib/project.js +3 -3
  103. package/lib/projects.js +1 -1
  104. package/lib/projenrc-json.js +2 -2
  105. package/lib/projenrc.js +1 -1
  106. package/lib/python/pip.js +1 -1
  107. package/lib/python/poetry.js +2 -2
  108. package/lib/python/projenrc.js +1 -1
  109. package/lib/python/pytest-sample.js +1 -1
  110. package/lib/python/pytest.js +1 -1
  111. package/lib/python/python-project.js +1 -1
  112. package/lib/python/python-sample.js +1 -1
  113. package/lib/python/requirements-file.js +1 -1
  114. package/lib/python/setuppy.js +1 -1
  115. package/lib/python/setuptools.js +1 -1
  116. package/lib/python/venv.js +1 -1
  117. package/lib/readme.js +1 -1
  118. package/lib/release/publisher.js +1 -1
  119. package/lib/release/release-trigger.js +1 -1
  120. package/lib/release/release.js +1 -1
  121. package/lib/renovatebot.js +1 -1
  122. package/lib/sample-file.js +2 -2
  123. package/lib/semver.js +1 -1
  124. package/lib/source-code.js +1 -1
  125. package/lib/task-runtime.js +1 -1
  126. package/lib/task.js +1 -1
  127. package/lib/tasks.js +1 -1
  128. package/lib/testing.js +1 -1
  129. package/lib/textfile.js +1 -1
  130. package/lib/toml.js +1 -1
  131. package/lib/typescript/projenrc-ts.js +1 -1
  132. package/lib/typescript/projenrc.js +1 -1
  133. package/lib/typescript/typescript-typedoc.js +1 -1
  134. package/lib/typescript/typescript.js +6 -6
  135. package/lib/util/constructs.d.ts +17 -4
  136. package/lib/util/constructs.js +30 -6
  137. package/lib/version.js +2 -2
  138. package/lib/vscode/devcontainer.js +1 -1
  139. package/lib/vscode/extensions.js +1 -1
  140. package/lib/vscode/launch-config.js +1 -1
  141. package/lib/vscode/settings.js +1 -1
  142. package/lib/vscode/vscode.js +1 -1
  143. package/lib/web/next.js +3 -3
  144. package/lib/web/postcss.js +1 -1
  145. package/lib/web/react.js +4 -4
  146. package/lib/web/tailwind.js +1 -1
  147. package/lib/xmlfile.js +1 -1
  148. package/lib/yaml.js +1 -1
  149. package/package.json +12 -8
@@ -0,0 +1,147 @@
1
+ import { Component } from "./component";
2
+ import { FileBase, IResolver } from "./file";
3
+ import { Project } from "./project";
4
+ /**
5
+ * Supported AI coding assistants and their instruction file locations.
6
+ */
7
+ export declare enum AiAgent {
8
+ /**
9
+ * GitHub Copilot - .github/copilot-instructions.md
10
+ */
11
+ GITHUB_COPILOT = "GitHub Copilot",
12
+ /**
13
+ * Cursor IDE - .cursor/rules/project.md
14
+ */
15
+ CURSOR = "Cursor",
16
+ /**
17
+ * Claude Code - CLAUDE.md
18
+ */
19
+ CLAUDE = "Claude",
20
+ /**
21
+ * Amazon Q - .amazonq/rules/project.md
22
+ */
23
+ AMAZON_Q = "Amazon Q",
24
+ /**
25
+ * Kiro - .kiro/steering/project.md
26
+ */
27
+ KIRO = "Kiro"
28
+ }
29
+ /**
30
+ * Options for configuring AI tool instruction files.
31
+ */
32
+ export interface AiInstructionsOptions {
33
+ /**
34
+ * Which AI agents to generate instruction files for.
35
+ *
36
+ * @default - All agents: [AiAgent.GITHUB_COPILOT, AiAgent.CURSOR, AiAgent.CLAUDE, AiAgent.AMAZON_Q]
37
+ */
38
+ readonly agents?: AiAgent[];
39
+ /**
40
+ * General instructions applicable to all agents.
41
+ *
42
+ * @default - no agent specific instructions
43
+ */
44
+ readonly instructions?: string[];
45
+ /**
46
+ * Per-agent custom instructions. Allows different instructions for different AI tools.
47
+ *
48
+ * @default - no agent specific instructions
49
+ * @example
50
+ * {
51
+ * [AiAgent.GITHUB_COPILOT]: {
52
+ * instructions: ["Use descriptive commit messages."]
53
+ * },
54
+ * [AiAgent.CURSOR]: {
55
+ * instructions: ["Prefer functional patterns.", "Always add tests."]
56
+ * }
57
+ * }
58
+ */
59
+ readonly agentSpecificInstructions?: Record<string, string[]>;
60
+ /**
61
+ * Include default instructions for projen and general best practices.
62
+ *
63
+ * Default instructions will only be included for agents provided in the `agents` option.
64
+ * If `agents` is not provided, default instructions will be included for all agents.
65
+ *
66
+ * @default true
67
+ */
68
+ readonly includeDefaultInstructions?: boolean;
69
+ }
70
+ /**
71
+ * Generates instruction files for AI coding assistants with projen-specific guidance.
72
+ *
73
+ * This component creates configuration files that help AI tools like GitHub Copilot,
74
+ * Cursor IDE, Claude Code, and Amazon Q understand that the project is managed by projen
75
+ * and should follow projen conventions.
76
+ *
77
+ * @example
78
+ * const project = new TypeScriptProject({
79
+ * name: "my-project",
80
+ * defaultReleaseBranch: "main",
81
+ * });
82
+ *
83
+ * // Basic usage - generates files for all supported AI agents
84
+ * new AiInstructions(project);
85
+ *
86
+ * // Custom usage - specify which agents and add custom instructions
87
+ * new AiInstructions(project, {
88
+ * agents: [AiAgent.GITHUB_COPILOT, AiAgent.CURSOR],
89
+ * agentSpecificInstructions: {
90
+ * [AiAgent.GITHUB_COPILOT]: ["Always use descriptive commit messages."],
91
+ * },
92
+ * });
93
+ *
94
+ * // Add more instructions after instantiation
95
+ * const ai = new AiInstructions(project);
96
+ * ai.addInstructions("Use functional programming patterns.");
97
+ * ai.addInstructions("Always write comprehensive tests.");
98
+ */
99
+ export declare class AiInstructions extends Component {
100
+ /**
101
+ * Returns projen-specific instructions for AI agents.
102
+ */
103
+ static projen(project: Project): string;
104
+ /**
105
+ * Returns development best practices instructions for AI agents.
106
+ */
107
+ static bestPractices(project: Project): string;
108
+ private readonly agents;
109
+ private readonly files;
110
+ constructor(project: Project, options?: AiInstructionsOptions);
111
+ /**
112
+ * Create or return the instructions file.
113
+ */
114
+ private ensureInstructionsFile;
115
+ /**
116
+ * Adds instructions that will be included for all selected AI agents.
117
+ *
118
+ * @param instructions The instructions to add.
119
+ * @example
120
+ * aiInstructions.addInstructions("Always use TypeScript strict mode.");
121
+ * aiInstructions.addInstructions("Prefer functional programming.", "Avoid mutations.");
122
+ */
123
+ addInstructions(...instructions: string[]): void;
124
+ /**
125
+ * Add instructions for a specific AI agent.
126
+ *
127
+ * This can also be used to add instructions for an AI agent that was previously not enabled.
128
+ *
129
+ * @param agent The AI agent to add instructions for
130
+ * @param instructions The instruction(s) to add
131
+ * @example
132
+ * aiInstructions.addAgentSpecificInstructions(AiAgent.GITHUB_COPILOT, "Use descriptive commit messages.");
133
+ */
134
+ addAgentSpecificInstructions(agent: AiAgent, ...instructions: string[]): void;
135
+ /**
136
+ * Get the file path for a given AI agent.
137
+ */
138
+ private getAgentFilePath;
139
+ }
140
+ export declare class AiInstructionsFile extends FileBase {
141
+ private readonly instructions;
142
+ /**
143
+ * Adds instructions to the instruction file.
144
+ */
145
+ addInstructions(...instructions: string[]): void;
146
+ protected synthesizeContent(resolver: IResolver): string | undefined;
147
+ }
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ var _a, _b;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AiInstructionsFile = exports.AiInstructions = exports.AiAgent = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const component_1 = require("./component");
7
+ const file_1 = require("./file");
8
+ /**
9
+ * Supported AI coding assistants and their instruction file locations.
10
+ */
11
+ var AiAgent;
12
+ (function (AiAgent) {
13
+ /**
14
+ * GitHub Copilot - .github/copilot-instructions.md
15
+ */
16
+ AiAgent["GITHUB_COPILOT"] = "GitHub Copilot";
17
+ /**
18
+ * Cursor IDE - .cursor/rules/project.md
19
+ */
20
+ AiAgent["CURSOR"] = "Cursor";
21
+ /**
22
+ * Claude Code - CLAUDE.md
23
+ */
24
+ AiAgent["CLAUDE"] = "Claude";
25
+ /**
26
+ * Amazon Q - .amazonq/rules/project.md
27
+ */
28
+ AiAgent["AMAZON_Q"] = "Amazon Q";
29
+ /**
30
+ * Kiro - .kiro/steering/project.md
31
+ */
32
+ AiAgent["KIRO"] = "Kiro";
33
+ })(AiAgent || (exports.AiAgent = AiAgent = {}));
34
+ /**
35
+ * Generates instruction files for AI coding assistants with projen-specific guidance.
36
+ *
37
+ * This component creates configuration files that help AI tools like GitHub Copilot,
38
+ * Cursor IDE, Claude Code, and Amazon Q understand that the project is managed by projen
39
+ * and should follow projen conventions.
40
+ *
41
+ * @example
42
+ * const project = new TypeScriptProject({
43
+ * name: "my-project",
44
+ * defaultReleaseBranch: "main",
45
+ * });
46
+ *
47
+ * // Basic usage - generates files for all supported AI agents
48
+ * new AiInstructions(project);
49
+ *
50
+ * // Custom usage - specify which agents and add custom instructions
51
+ * new AiInstructions(project, {
52
+ * agents: [AiAgent.GITHUB_COPILOT, AiAgent.CURSOR],
53
+ * agentSpecificInstructions: {
54
+ * [AiAgent.GITHUB_COPILOT]: ["Always use descriptive commit messages."],
55
+ * },
56
+ * });
57
+ *
58
+ * // Add more instructions after instantiation
59
+ * const ai = new AiInstructions(project);
60
+ * ai.addInstructions("Use functional programming patterns.");
61
+ * ai.addInstructions("Always write comprehensive tests.");
62
+ */
63
+ class AiInstructions extends component_1.Component {
64
+ /**
65
+ * Returns projen-specific instructions for AI agents.
66
+ */
67
+ static projen(project) {
68
+ return projenInstructions(project);
69
+ }
70
+ /**
71
+ * Returns development best practices instructions for AI agents.
72
+ */
73
+ static bestPractices(project) {
74
+ return bestPracticesInstructions(project);
75
+ }
76
+ constructor(project, options = {}) {
77
+ super(project);
78
+ this.files = new Map();
79
+ this.agents =
80
+ options.agents ??
81
+ Object.values(AiAgent).filter((v) => typeof v === "string");
82
+ // Assert files for declared agents
83
+ for (const agent of this.agents) {
84
+ this.ensureInstructionsFile(agent);
85
+ }
86
+ if (options.includeDefaultInstructions ?? true) {
87
+ this.addInstructions(AiInstructions.projen(project), AiInstructions.bestPractices(project));
88
+ }
89
+ if (options.instructions) {
90
+ this.addInstructions(...options.instructions);
91
+ }
92
+ if (options.agentSpecificInstructions) {
93
+ for (const [agent, instructions] of Object.entries(options.agentSpecificInstructions)) {
94
+ this.addAgentSpecificInstructions(agent, ...instructions);
95
+ }
96
+ }
97
+ }
98
+ /**
99
+ * Create or return the instructions file.
100
+ */
101
+ ensureInstructionsFile(agent) {
102
+ if (this.files.has(agent)) {
103
+ return this.files.get(agent);
104
+ }
105
+ const filePath = this.getAgentFilePath(agent);
106
+ const file = new AiInstructionsFile(this.project, filePath, {
107
+ committed: true,
108
+ readonly: true,
109
+ });
110
+ this.files.set(agent, file);
111
+ this.project.addPackageIgnore(file.path);
112
+ return file;
113
+ }
114
+ /**
115
+ * Adds instructions that will be included for all selected AI agents.
116
+ *
117
+ * @param instructions The instructions to add.
118
+ * @example
119
+ * aiInstructions.addInstructions("Always use TypeScript strict mode.");
120
+ * aiInstructions.addInstructions("Prefer functional programming.", "Avoid mutations.");
121
+ */
122
+ addInstructions(...instructions) {
123
+ for (const agent of this.files.keys()) {
124
+ this.addAgentSpecificInstructions(agent, ...instructions);
125
+ }
126
+ }
127
+ /**
128
+ * Add instructions for a specific AI agent.
129
+ *
130
+ * This can also be used to add instructions for an AI agent that was previously not enabled.
131
+ *
132
+ * @param agent The AI agent to add instructions for
133
+ * @param instructions The instruction(s) to add
134
+ * @example
135
+ * aiInstructions.addAgentSpecificInstructions(AiAgent.GITHUB_COPILOT, "Use descriptive commit messages.");
136
+ */
137
+ addAgentSpecificInstructions(agent, ...instructions) {
138
+ const file = this.ensureInstructionsFile(agent);
139
+ file.addInstructions(...instructions);
140
+ }
141
+ /**
142
+ * Get the file path for a given AI agent.
143
+ */
144
+ getAgentFilePath(agent) {
145
+ switch (agent) {
146
+ case AiAgent.GITHUB_COPILOT:
147
+ return ".github/copilot-instructions.md";
148
+ case AiAgent.CURSOR:
149
+ return ".cursor/rules/project.md";
150
+ case AiAgent.CLAUDE:
151
+ return "CLAUDE.md";
152
+ case AiAgent.AMAZON_Q:
153
+ return ".amazonq/rules/project.md";
154
+ case AiAgent.KIRO:
155
+ return ".kiro/steering/project.md";
156
+ default:
157
+ throw new Error(`Unknown AI agent: ${agent}`);
158
+ }
159
+ }
160
+ }
161
+ exports.AiInstructions = AiInstructions;
162
+ _a = JSII_RTTI_SYMBOL_1;
163
+ AiInstructions[_a] = { fqn: "projen.AiInstructions", version: "0.98.5" };
164
+ class AiInstructionsFile extends file_1.FileBase {
165
+ constructor() {
166
+ super(...arguments);
167
+ this.instructions = [];
168
+ }
169
+ /**
170
+ * Adds instructions to the instruction file.
171
+ */
172
+ addInstructions(...instructions) {
173
+ this.instructions.push(...instructions);
174
+ }
175
+ synthesizeContent(resolver) {
176
+ return resolver.resolve(this.instructions).join("\n\n") + "\n";
177
+ }
178
+ }
179
+ exports.AiInstructionsFile = AiInstructionsFile;
180
+ _b = JSII_RTTI_SYMBOL_1;
181
+ AiInstructionsFile[_b] = { fqn: "projen.AiInstructionsFile", version: "0.98.5" };
182
+ function bestPracticesInstructions(project) {
183
+ const projenCommand = project.projenCommand;
184
+ return `# Development Best Practices
185
+
186
+ - **Always run build after changes**: After modifying any source or test file, run \`${projenCommand} build\` to ensure your changes compile and pass all tests.
187
+ - **Task completion criteria**: A task is not considered complete until:
188
+ - All tests pass (\`${projenCommand} test\`)
189
+ - There are no compilation errors (\`${projenCommand} compile\`)
190
+ - There are no linting errors (usually part of the build, if not, run the linter defined in tasks.json)
191
+ - The full build succeeds (\`${projenCommand} build\`)`;
192
+ }
193
+ function projenInstructions(project) {
194
+ const projenCommand = project.projenCommand;
195
+ return `# Projen-managed Project Instructions
196
+
197
+ This project is managed by [projen](https://github.com/projen/projen), a project configuration management tool.
198
+
199
+ ## Important Guidelines
200
+
201
+ ### Task Execution
202
+
203
+ - **Always use projen for task execution**: Run tasks using \`${projenCommand} <task-name>\` instead of directly using npm, yarn, or other package managers.
204
+ - **Check available tasks**: Look in \`.projen/tasks.json\` to see all available tasks, their descriptions, and steps.
205
+ - **Common tasks**:
206
+ - \`${projenCommand}\` - Synthesize project configuration files
207
+ - \`${projenCommand} build\` - Builds the project, including running tests
208
+ - \`${projenCommand} test\` - Runs tests only
209
+ - \`${projenCommand} compile\` - Compiles the source code only
210
+
211
+ ### File Modifications
212
+
213
+ - **DO NOT manually edit generated files**: Files marked with a comment like "~~ Generated by projen. To modify..." should never be edited directly.
214
+ - **Modify configuration in .projenrc**: To change project configuration, always edit the \`.projenrc.ts\`, \`.projenrc.py\` or \`.projenrc.json\` etc. file and then run \`${projenCommand}\` to regenerate the project files.
215
+ - **Check .projenrc first**: Before suggesting changes to package.json, tsconfig.json, or other configuration files, always check if these are managed by projen and suggest changes to .projenrc instead.
216
+
217
+ ### Dependencies
218
+
219
+ - **Add dependencies through projen**: Use the projen configuration to add dependencies instead of manually editing package.json or using npm/yarn install directly.
220
+ - **Example**: In .projenrc, use methods like \`addDeps()\`, \`addDevDeps()\`, or \`addPeerDeps()\` to add dependencies.
221
+
222
+ ### Workflow
223
+
224
+ 1. Make changes to .projenrc configuration file
225
+ 2. Run \`${projenCommand}\` to synthesize and update generated files
226
+ 3. Review the changes
227
+ 4. Commit both .projenrc and the generated files
228
+
229
+ ## Projen Configuration
230
+
231
+ This project's configuration is defined in the .projenrc file at the root of the repository. All project metadata, dependencies, scripts, and tooling configuration should be managed through this file.
232
+
233
+ ## Additional Resources
234
+
235
+ - [Projen Documentation](https://projen.io)
236
+ - [Projen GitHub Repository](https://github.com/projen/projen)`;
237
+ }
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktaW5zdHJ1Y3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FpLWluc3RydWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJDQUF3QztBQUN4QyxpQ0FBNkM7QUFHN0M7O0dBRUc7QUFDSCxJQUFZLE9BeUJYO0FBekJELFdBQVksT0FBTztJQUNqQjs7T0FFRztJQUNILDRDQUFpQyxDQUFBO0lBRWpDOztPQUVHO0lBQ0gsNEJBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCw0QkFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILGdDQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gsd0JBQWEsQ0FBQTtBQUNmLENBQUMsRUF6QlcsT0FBTyx1QkFBUCxPQUFPLFFBeUJsQjtBQStDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQUNILE1BQWEsY0FBZSxTQUFRLHFCQUFTO0lBQzNDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFnQjtRQUNuQyxPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBZ0I7UUFDMUMsT0FBTyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBS0QsWUFBWSxPQUFnQixFQUFFLFVBQWlDLEVBQUU7UUFDL0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBSEEsVUFBSyxHQUFxQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBS25FLElBQUksQ0FBQyxNQUFNO1lBQ1QsT0FBTyxDQUFDLE1BQU07Z0JBQ2IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQzVCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQ2YsQ0FBQztRQUVsQixtQ0FBbUM7UUFDbkMsS0FBSyxNQUFN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QUNsRCxDQUFDO0lBQ0gsQ0FBQzs7QUF4SEgsd0NBeUhDOzs7QUFFRCxNQUFhLGtCQUFtQixTQUFRLGVBQVE7SUFBaEQ7O1FBQ21CLGlCQUFZLEdBQWEsRUFBRSxDQUFDO0tBWTlDO0lBVkM7O09BRUc7SUFDSSxlQUFlLENBQUMsR0FBRyxZQUFzQjtRQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxRQUFtQjtRQUM3QyxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDakUsQ0FBQzs7QUFaSCxnREFhQzs7O0FBRUQsU0FBUyx5QkFBeUIsQ0FBQyxPQUFnQjtJQUNqRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO0lBQzVDLE9BQU87O3VGQUU4RSxhQUFhOzt3QkFFNUUsYUFBYTt5Q0FDSSxhQUFhOztpQ0FFckIsYUFBYSxXQUFXLENBQUM7QUFDMUQsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsT0FBZ0I7SUFDMUMsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUM1QyxPQUFPOzs7Ozs7OztnRUFRdUQsYUFBYTs7O1FBR3JFLGFBQWE7UUFDYixhQUFhO1FBQ2IsYUFBYTtRQUNiLGFBQWE7Ozs7OzhLQUt5SixhQUFhOzs7Ozs7Ozs7OztXQVdoTCxhQUFhOzs7Ozs7Ozs7OzsrREFXdUMsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBGaWxlQmFzZSwgSVJlc29sdmVyIH0gZnJvbSBcIi4vZmlsZVwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuL3Byb2plY3RcIjtcblxuLyoqXG4gKiBTdXBwb3J0ZWQgQUkgY29kaW5nIGFzc2lzdGFudHMgYW5kIHRoZWlyIGluc3RydWN0aW9uIGZpbGUgbG9jYXRpb25zLlxuICovXG5leHBvcnQgZW51bSBBaUFnZW50IHtcbiAgLyoqXG4gICAqIEdpdEh1YiBDb3BpbG90IC0gLmdpdGh1Yi9jb3BpbG90LWluc3RydWN0aW9ucy5tZFxuICAgKi9cbiAgR0lUSFVCX0NPUElMT1QgPSBcIkdpdEh1YiBDb3BpbG90XCIsXG5cbiAgLyoqXG4gICAqIEN1cnNvciBJREUgLSAuY3Vyc29yL3J1bGVzL3Byb2plY3QubWRcbiAgICovXG4gIENVUlNPUiA9IFwiQ3Vyc29yXCIsXG5cbiAgLyoqXG4gICAqIENsYXVkZSBDb2RlIC0gQ0xBVURFLm1kXG4gICAqL1xuICBDTEFVREUgPSBcIkNsYXVkZVwiLFxuXG4gIC8qKlxuICAgKiBBbWF6b24gUSAtIC5hbWF6b25xL3J1bGVzL3Byb2plY3QubWRcbiAgICovXG4gIEFNQVpPTl9RID0gXCJBbWF6b24gUVwiLFxuXG4gIC8qKlxuICAgKiBLaXJvIC0gLmtpcm8vc3RlZXJpbmcvcHJvamVjdC5tZFxuICAgKi9cbiAgS0lSTyA9IFwiS2lyb1wiLFxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIEFJIHRvb2wgaW5zdHJ1Y3Rpb24gZmlsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWlJbnN0cnVjdGlvbnNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoaWNoIEFJIGFnZW50cyB0byBnZW5lcmF0ZSBpbnN0cnVjdGlvbiBmaWxlcyBmb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQWxsIGFnZW50czogW0FpQWdlbnQuR0lUSFVCX0NPUElMT1QsIEFpQWdlbnQuQ1VSU09SLCBBaUFnZW50LkNMQVVERSwgQWlBZ2VudC5BTUFaT05fUV1cbiAgICovXG4gIHJlYWRvbmx5IGFnZW50cz86IEFpQWdlbnRbXTtcblxuICAvKipcbiAgICogR2VuZXJhbCBpbnN0cnVjdGlvbnMgYXBwbGljYWJsZSB0byBhbGwgYWdlbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFnZW50IHNwZWNpZmljIGluc3RydWN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgaW5zdHJ1Y3Rpb25zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFBlci1hZ2VudCBjdXN0b20gaW5zdHJ1Y3Rpb25zLiBBbGxvd3MgZGlmZmVyZW50IGluc3RydWN0aW9ucyBmb3IgZGlmZmVyZW50IEFJIHRvb2xzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGFnZW50IHNwZWNpZmljIGluc3RydWN0aW9uc1xuICAgKiBAZXhhbXBsZVxuICAgKiB7XG4gICAqICAgW0FpQWdlbnQuR0lUSFVCX0NPUElMT1RdOiB7XG4gICAqICAgICBpbnN0cnVjdGlvbnM6IFtcIlVzZSBkZXNjcmlwdGl2ZSBjb21taXQgbWVzc2FnZXMuXCJdXG4gICAqICAgfSxcbiAgICogICBbQWlBZ2VudC5DVVJTT1JdOiB7XG4gICAqICAgICBpbnN0cnVjdGlvbnM6IFtcIlByZWZlciBmdW5jdGlvbmFsIHBhdHRlcm5zLlwiLCBcIkFsd2F5cyBhZGQgdGVzdHMuXCJdXG4gICAqICAgfVxuICAgKiB9XG4gICAqL1xuICByZWFkb25seSBhZ2VudFNwZWNpZmljSW5zdHJ1Y3Rpb25zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+O1xuXG4gIC8qKlxuICAgKiBJbmNsdWRlIGRlZmF1bHQgaW5zdHJ1Y3Rpb25zIGZvciBwcm9qZW4gYW5kIGdlbmVyYWwgYmVzdCBwcmFjdGljZXMuXG4gICAqXG4gICAqIERlZmF1bHQgaW5zdHJ1Y3Rpb25zIHdpbGwgb25seSBiZSBpbmNsdWRlZCBmb3IgYWdlbnRzIHByb3ZpZGVkIGluIHRoZSBgYWdlbnRzYCBvcHRpb24uXG4gICAqIElmIGBhZ2VudHNgIGlzIG5vdCBwcm92aWRlZCwgZGVmYXVsdCBpbnN0cnVjdGlvbnMgd2lsbCBiZSBpbmNsdWRlZCBmb3IgYWxsIGFnZW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZURlZmF1bHRJbnN0cnVjdGlvbnM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBpbnN0cnVjdGlvbiBmaWxlcyBmb3IgQUkgY29kaW5nIGFzc2lzdGFudHMgd2l0aCBwcm9qZW4tc3BlY2lmaWMgZ3VpZGFuY2UuXG4gKlxuICogVGhpcyBjb21wb25lbnQgY3JlYXRlcyBjb25maWd1cmF0aW9uIGZpbGVzIHRoYXQgaGVscCBBSSB0b29scyBsaWtlIEdpdEh1YiBDb3BpbG90LFxuICogQ3Vyc29yIElERSwgQ2xhdWRlIENvZGUsIGFuZCBBbWF6b24gUSB1bmRlcnN0YW5kIHRoYXQgdGhlIHByb2plY3QgaXMgbWFuYWdlZCBieSBwcm9qZW5cbiAqIGFuZCBzaG91bGQgZm9sbG93IHByb2plbiBjb252ZW50aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcHJvamVjdCA9IG5ldyBUeXBlU2NyaXB0UHJvamVjdCh7XG4gKiAgIG5hbWU6IFwibXktcHJvamVjdFwiLFxuICogICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogXCJtYWluXCIsXG4gKiB9KTtcbiAqXG4gKiAvLyBCYXNpYyB1c2FnZSAtIGdlbmVyYXRlcyBmaWxlcyBmb3IgYWxsIHN1cHBvcnRlZCBBSSBhZ2VudHNcbiAqIG5ldyBBaUluc3RydWN0aW9ucyhwcm9qZWN0KTtcbiAqXG4gKiAvLyBDdXN0b20gdXNhZ2UgLSBzcGVjaWZ5IHdoaWNoIGFnZW50cyBhbmQgYWRkIGN1c3RvbSBpbnN0cnVjdGlvbnNcbiAqIG5ldyBBaUluc3RydWN0aW9ucyhwcm9qZWN0LCB7XG4gKiAgIGFnZW50czogW0FpQWdlbnQuR0lUSFVCX0NPUElMT1QsIEFpQWdlbnQuQ1VSU09SXSxcbiAqICAgYWdlbnRTcGVjaWZpY0luc3RydWN0aW9uczoge1xuICogICAgIFtBaUFnZW50LkdJVEhVQl9DT1BJTE9UXTogW1wiQWx3YXlzIHVzZSBkZXNjcmlwdGl2ZSBjb21taXQgbWVzc2FnZXMuXCJdLFxuICogICB9LFxuICogfSk7XG4gKlxuICogLy8gQWRkIG1vcmUgaW5zdHJ1Y3Rpb25zIGFmdGVyIGluc3RhbnRpYXRpb25cbiAqIGNvbnN0IGFpID0gbmV3IEFpSW5zdHJ1Y3Rpb25zKHByb2plY3QpO1xuICogYWkuYWRkSW5zdHJ1Y3Rpb25zKFwiVXNlIGZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcgcGF0dGVybnMuXCIpO1xuICogYWkuYWRkSW5zdHJ1Y3Rpb25zKFwiQWx3YXlzIHdyaXRlIGNvbXByZWhlbnNpdmUgdGVzdHMuXCIpO1xuICovXG5leHBvcnQgY2xhc3MgQWlJbnN0cnVjdGlvbnMgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogUmV0dXJucyBwcm9qZW4tc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zIGZvciBBSSBhZ2VudHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHByb2plbihwcm9qZWN0OiBQcm9qZWN0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcHJvamVuSW5zdHJ1Y3Rpb25zKHByb2plY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZGV2ZWxvcG1lbnQgYmVzdCBwcmFjdGljZXMgaW5zdHJ1Y3Rpb25zIGZvciBBSSBhZ2VudHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJlc3RQcmFjdGljZXMocHJvamVjdDogUHJvamVjdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGJlc3RQcmFjdGljZXNJbnN0cnVjdGlvbnMocHJvamVjdCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGFnZW50czogQWlBZ2VudFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGVzOiBNYXA8QWlBZ2VudCwgQWlJbnN0cnVjdGlvbnNGaWxlPiA9IG5ldyBNYXAoKTtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBBaUluc3RydWN0aW9uc09wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy5hZ2VudHMgPVxuICAgICAgb3B0aW9ucy5hZ2VudHMgPz9cbiAgICAgIChPYmplY3QudmFsdWVzKEFpQWdlbnQpLmZpbHRlcihcbiAgICAgICAgKHYpID0+IHR5cGVvZiB2ID09PSBcInN0cmluZ1wiXG4gICAgICApIGFzIEFpQWdlbnRbXSk7XG5cbiAgICAvLyBBc3NlcnQgZmlsZXMgZm9yIGRlY2xhcmVkIGFnZW50c1xuICAgIGZvciAoY29uc3QgYWdlbnQgb2YgdGhpcy5hZ2VudHMpIHtcbiAgICAgIHRoaXMuZW5zdXJlSW5zdHJ1Y3Rpb25zRmlsZShhZ2VudCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaW5jbHVkZURlZmF1bHRJbnN0cnVjdGlvbnMgPz8gdHJ1ZSkge1xuICAgICAgdGhpcy5hZGRJbnN0cnVjdGlvbnMoXG4gICAgICAgIEFpSW5zdHJ1Y3Rpb25zLnByb2plbihwcm9qZWN0KSxcbiAgICAgICAgQWlJbnN0cnVjdGlvbnMuYmVzdFByYWN0aWNlcyhwcm9qZWN0KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5pbnN0cnVjdGlvbnMpIHtcbiAgICAgIHRoaXMuYWRkSW5zdHJ1Y3Rpb25zKC4uLm9wdGlvbnMuaW5zdHJ1Y3Rpb25zKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5hZ2VudFNwZWNpZmljSW5zdHJ1Y3Rpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IFthZ2VudCwgaW5zdHJ1Y3Rpb25zXSBvZiBPYmplY3QuZW50cmllcyhcbiAgICAgICAgb3B0aW9ucy5hZ2VudFNwZWNpZmljSW5zdHJ1Y3Rpb25zXG4gICAgICApKSB7XG4gICAgICAgIHRoaXMuYWRkQWdlbnRTcGVjaWZpY0luc3RydWN0aW9ucyhhZ2VudCBhcyBBaUFnZW50LCAuLi5pbnN0cnVjdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgb3IgcmV0dXJuIHRoZSBpbnN0cnVjdGlvbnMgZmlsZS5cbiAgICovXG4gIHByaXZhdGUgZW5zdXJlSW5zdHJ1Y3Rpb25zRmlsZShhZ2VudDogQWlBZ2VudCk6IEFpSW5zdHJ1Y3Rpb25zRmlsZSB7XG4gICAgaWYgKHRoaXMuZmlsZXMuaGFzKGFnZW50KSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZXMuZ2V0KGFnZW50KSE7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmdldEFnZW50RmlsZVBhdGgoYWdlbnQpO1xuICAgIGNvbnN0IGZpbGUgPSBuZXcgQWlJbnN0cnVjdGlvbnNGaWxlKHRoaXMucHJvamVjdCwgZmlsZVBhdGgsIHtcbiAgICAgIGNvbW1pdHRlZDogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuZmlsZXMuc2V0KGFnZW50LCBmaWxlKTtcbiAgICB0aGlzLnByb2plY3QuYWRkUGFja2FnZUlnbm9yZShmaWxlLnBhdGgpO1xuICAgIHJldHVybiBmaWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgaW5zdHJ1Y3Rpb25zIHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBmb3IgYWxsIHNlbGVjdGVkIEFJIGFnZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGluc3RydWN0aW9ucyBUaGUgaW5zdHJ1Y3Rpb25zIHRvIGFkZC5cbiAgICogQGV4YW1wbGVcbiAgICogYWlJbnN0cnVjdGlvbnMuYWRkSW5zdHJ1Y3Rpb25zKFwiQWx3YXlzIHVzZSBUeXBlU2NyaXB0IHN0cmljdCBtb2RlLlwiKTtcbiAgICogYWlJbnN0cnVjdGlvbnMuYWRkSW5zdHJ1Y3Rpb25zKFwiUHJlZmVyIGZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcuXCIsIFwiQXZvaWQgbXV0YXRpb25zLlwiKTtcbiAgICovXG4gIHB1YmxpYyBhZGRJbnN0cnVjdGlvbnMoLi4uaW5zdHJ1Y3Rpb25zOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgYWdlbnQgb2YgdGhpcy5maWxlcy5rZXlzKCkpIHtcbiAgICAgIHRoaXMuYWRkQWdlbnRTcGVjaWZpY0luc3RydWN0aW9ucyhhZ2VudCwgLi4uaW5zdHJ1Y3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGluc3RydWN0aW9ucyBmb3IgYSBzcGVjaWZpYyBBSSBhZ2VudC5cbiAgICpcbiAgICogVGhpcyBjYW4gYWxzbyBiZSB1c2VkIHRvIGFkZCBpbnN0cnVjdGlvbnMgZm9yIGFuIEFJIGFnZW50IHRoYXQgd2FzIHByZXZpb3VzbHkgbm90IGVuYWJsZWQuXG4gICAqXG4gICAqIEBwYXJhbSBhZ2VudCBUaGUgQUkgYWdlbnQgdG8gYWRkIGluc3RydWN0aW9ucyBmb3JcbiAgICogQHBhcmFtIGluc3RydWN0aW9ucyBUaGUgaW5zdHJ1Y3Rpb24ocykgdG8gYWRkXG4gICAqIEBleGFtcGxlXG4gICAqIGFpSW5zdHJ1Y3Rpb25zLmFkZEFnZW50U3BlY2lmaWNJbnN0cnVjdGlvbnMoQWlBZ2VudC5HSVRIVUJfQ09QSUxPVCwgXCJVc2UgZGVzY3JpcHRpdmUgY29tbWl0IG1lc3NhZ2VzLlwiKTtcbiAgICovXG4gIHB1YmxpYyBhZGRBZ2VudFNwZWNpZmljSW5zdHJ1Y3Rpb25zKFxuICAgIGFnZW50OiBBaUFnZW50LFxuICAgIC4uLmluc3RydWN0aW9uczogc3RyaW5nW11cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgZmlsZSA9IHRoaXMuZW5zdXJlSW5zdHJ1Y3Rpb25zRmlsZShhZ2VudCk7XG4gICAgZmlsZS5hZGRJbnN0cnVjdGlvbnMoLi4uaW5zdHJ1Y3Rpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZpbGUgcGF0aCBmb3IgYSBnaXZlbiBBSSBhZ2VudC5cbiAgICovXG4gIHByaXZhdGUgZ2V0QWdlbnRGaWxlUGF0aChhZ2VudDogQWlBZ2VudCk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChhZ2VudCkge1xuICAgICAgY2FzZSBBaUFnZW50LkdJVEhVQl9DT1BJTE9UOlxuICAgICAgICByZXR1cm4gXCIuZ2l0aHViL2NvcGlsb3QtaW5zdHJ1Y3Rpb25zLm1kXCI7XG4gICAgICBjYXNlIEFpQWdlbnQuQ1VSU09SOlxuICAgICAgICByZXR1cm4gXCIuY3Vyc29yL3J1bGVzL3Byb2plY3QubWRcIjtcbiAgICAgIGNhc2UgQWlBZ2VudC5DTEFVREU6XG4gICAgICAgIHJldHVybiBcIkNMQVVERS5tZFwiO1xuICAgICAgY2FzZSBBaUFnZW50LkFNQVpPTl9ROlxuICAgICAgICByZXR1cm4gXCIuYW1hem9ucS9ydWxlcy9wcm9qZWN0Lm1kXCI7XG4gICAgICBjYXNlIEFpQWdlbnQuS0lSTzpcbiAgICAgICAgcmV0dXJuIFwiLmtpcm8vc3RlZXJpbmcvcHJvamVjdC5tZFwiO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIEFJIGFnZW50OiAke2FnZW50fWApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWlJbnN0cnVjdGlvbnNGaWxlIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGluc3RydWN0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogQWRkcyBpbnN0cnVjdGlvbnMgdG8gdGhlIGluc3RydWN0aW9uIGZpbGUuXG4gICAqL1xuICBwdWJsaWMgYWRkSW5zdHJ1Y3Rpb25zKC4uLmluc3RydWN0aW9uczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLmluc3RydWN0aW9ucy5wdXNoKC4uLmluc3RydWN0aW9ucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUNvbnRlbnQocmVzb2x2ZXI6IElSZXNvbHZlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHJlc29sdmVyLnJlc29sdmUodGhpcy5pbnN0cnVjdGlvbnMpLmpvaW4oXCJcXG5cXG5cIikgKyBcIlxcblwiO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJlc3RQcmFjdGljZXNJbnN0cnVjdGlvbnMocHJvamVjdDogUHJvamVjdCk6IHN0cmluZyB7XG4gIGNvbnN0IHByb2plbkNvbW1hbmQgPSBwcm9qZWN0LnByb2plbkNvbW1hbmQ7XG4gIHJldHVybiBgIyBEZXZlbG9wbWVudCBCZXN0IFByYWN0aWNlc1xuXG4tICoqQWx3YXlzIHJ1biBidWlsZCBhZnRlciBjaGFuZ2VzKio6IEFmdGVyIG1vZGlmeWluZyBhbnkgc291cmNlIG9yIHRlc3QgZmlsZSwgcnVuIFxcYCR7cHJvamVuQ29tbWFuZH0gYnVpbGRcXGAgdG8gZW5zdXJlIHlvdXIgY2hhbmdlcyBjb21waWxlIGFuZCBwYXNzIGFsbCB0ZXN0cy5cbi0gKipUYXNrIGNvbXBsZXRpb24gY3JpdGVyaWEqKjogQSB0YXNrIGlzIG5vdCBjb25zaWRlcmVkIGNvbXBsZXRlIHVudGlsOlxuICAtIEFsbCB0ZXN0cyBwYXNzIChcXGAke3Byb2plbkNvbW1hbmR9IHRlc3RcXGApXG4gIC0gVGhlcmUgYXJlIG5vIGNvbXBpbGF0aW9uIGVycm9ycyAoXFxgJHtwcm9qZW5Db21tYW5kfSBjb21waWxlXFxgKVxuICAtIFRoZXJlIGFyZSBubyBsaW50aW5nIGVycm9ycyAodXN1YWxseSBwYXJ0IG9mIHRoZSBidWlsZCwgaWYgbm90LCBydW4gdGhlIGxpbnRlciBkZWZpbmVkIGluIHRhc2tzLmpzb24pXG4gIC0gVGhlIGZ1bGwgYnVpbGQgc3VjY2VlZHMgKFxcYCR7cHJvamVuQ29tbWFuZH0gYnVpbGRcXGApYDtcbn1cblxuZnVuY3Rpb24gcHJvamVuSW5zdHJ1Y3Rpb25zKHByb2plY3Q6IFByb2plY3QpOiBzdHJpbmcge1xuICBjb25zdCBwcm9qZW5Db21tYW5kID0gcHJvamVjdC5wcm9qZW5Db21tYW5kO1xuICByZXR1cm4gYCMgUHJvamVuLW1hbmFnZWQgUHJvamVjdCBJbnN0cnVjdGlvbnNcblxuVGhpcyBwcm9qZWN0IGlzIG1hbmFnZWQgYnkgW3Byb2plbl0oaHR0cHM6Ly9naXRodWIuY29tL3Byb2plbi9wcm9qZW4pLCBhIHByb2plY3QgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IHRvb2wuXG5cbiMjIEltcG9ydGFudCBHdWlkZWxpbmVzXG5cbiMjIyBUYXNrIEV4ZWN1dGlvblxuXG4tICoqQWx3YXlzIHVzZSBwcm9qZW4gZm9yIHRhc2sgZXhlY3V0aW9uKio6IFJ1biB0YXNrcyB1c2luZyBcXGAke3Byb2plbkNvbW1hbmR9IDx0YXNrLW5hbWU+XFxgIGluc3RlYWQgb2YgZGlyZWN0bHkgdXNpbmcgbnBtLCB5YXJuLCBvciBvdGhlciBwYWNrYWdlIG1hbmFnZXJzLlxuLSAqKkNoZWNrIGF2YWlsYWJsZSB0YXNrcyoqOiBMb29rIGluIFxcYC5wcm9qZW4vdGFza3MuanNvblxcYCB0byBzZWUgYWxsIGF2YWlsYWJsZSB0YXNrcywgdGhlaXIgZGVzY3JpcHRpb25zLCBhbmQgc3RlcHMuXG4tICoqQ29tbW9uIHRhc2tzKio6XG4gIC0gXFxgJHtwcm9qZW5Db21tYW5kfVxcYCAtIFN5bnRoZXNpemUgcHJvamVjdCBjb25maWd1cmF0aW9uIGZpbGVzXG4gIC0gXFxgJHtwcm9qZW5Db21tYW5kfSBidWlsZFxcYCAtIEJ1aWxkcyB0aGUgcHJvamVjdCwgaW5jbHVkaW5nIHJ1bm5pbmcgdGVzdHNcbiAgLSBcXGAke3Byb2plbkNvbW1hbmR9IHRlc3RcXGAgLSBSdW5zIHRlc3RzIG9ubHlcbiAgLSBcXGAke3Byb2plbkNvbW1hbmR9IGNvbXBpbGVcXGAgLSBDb21waWxlcyB0aGUgc291cmNlIGNvZGUgb25seVxuXG4jIyMgRmlsZSBNb2RpZmljYXRpb25zXG5cbi0gKipETyBOT1QgbWFudWFsbHkgZWRpdCBnZW5lcmF0ZWQgZmlsZXMqKjogRmlsZXMgbWFya2VkIHdpdGggYSBjb21tZW50IGxpa2UgXCJ+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnkuLi5cIiBzaG91bGQgbmV2ZXIgYmUgZWRpdGVkIGRpcmVjdGx5LlxuLSAqKk1vZGlmeSBjb25maWd1cmF0aW9uIGluIC5wcm9qZW5yYyoqOiBUbyBjaGFuZ2UgcHJvamVjdCBjb25maWd1cmF0aW9uLCBhbHdheXMgZWRpdCB0aGUgXFxgLnByb2plbnJjLnRzXFxgLCBcXGAucHJvamVucmMucHlcXGAgb3IgXFxgLnByb2plbnJjLmpzb25cXGAgZXRjLiBmaWxlIGFuZCB0aGVuIHJ1biBcXGAke3Byb2plbkNvbW1hbmR9XFxgIHRvIHJlZ2VuZXJhdGUgdGhlIHByb2plY3QgZmlsZXMuXG4tICoqQ2hlY2sgLnByb2plbnJjIGZpcnN0Kio6IEJlZm9yZSBzdWdnZXN0aW5nIGNoYW5nZXMgdG8gcGFja2FnZS5qc29uLCB0c2NvbmZpZy5qc29uLCBvciBvdGhlciBjb25maWd1cmF0aW9uIGZpbGVzLCBhbHdheXMgY2hlY2sgaWYgdGhlc2UgYXJlIG1hbmFnZWQgYnkgcHJvamVuIGFuZCBzdWdnZXN0IGNoYW5nZXMgdG8gLnByb2plbnJjIGluc3RlYWQuXG5cbiMjIyBEZXBlbmRlbmNpZXNcblxuLSAqKkFkZCBkZXBlbmRlbmNpZXMgdGhyb3VnaCBwcm9qZW4qKjogVXNlIHRoZSBwcm9qZW4gY29uZmlndXJhdGlvbiB0byBhZGQgZGVwZW5kZW5jaWVzIGluc3RlYWQgb2YgbWFudWFsbHkgZWRpdGluZyBwYWNrYWdlLmpzb24gb3IgdXNpbmcgbnBtL3lhcm4gaW5zdGFsbCBkaXJlY3RseS5cbi0gKipFeGFtcGxlKio6IEluIC5wcm9qZW5yYywgdXNlIG1ldGhvZHMgbGlrZSBcXGBhZGREZXBzKClcXGAsIFxcYGFkZERldkRlcHMoKVxcYCwgb3IgXFxgYWRkUGVlckRlcHMoKVxcYCB0byBhZGQgZGVwZW5kZW5jaWVzLlxuXG4jIyMgV29ya2Zsb3dcblxuMS4gTWFrZSBjaGFuZ2VzIHRvIC5wcm9qZW5yYyBjb25maWd1cmF0aW9uIGZpbGVcbjIuIFJ1biBcXGAke3Byb2plbkNvbW1hbmR9XFxgIHRvIHN5bnRoZXNpemUgYW5kIHVwZGF0ZSBnZW5lcmF0ZWQgZmlsZXNcbjMuIFJldmlldyB0aGUgY2hhbmdlc1xuNC4gQ29tbWl0IGJvdGggLnByb2plbnJjIGFuZCB0aGUgZ2VuZXJhdGVkIGZpbGVzXG5cbiMjIFByb2plbiBDb25maWd1cmF0aW9uXG5cblRoaXMgcHJvamVjdCdzIGNvbmZpZ3VyYXRpb24gaXMgZGVmaW5lZCBpbiB0aGUgLnByb2plbnJjIGZpbGUgYXQgdGhlIHJvb3Qgb2YgdGhlIHJlcG9zaXRvcnkuIEFsbCBwcm9qZWN0IG1ldGFkYXRhLCBkZXBlbmRlbmNpZXMsIHNjcmlwdHMsIGFuZCB0b29saW5nIGNvbmZpZ3VyYXRpb24gc2hvdWxkIGJlIG1hbmFnZWQgdGhyb3VnaCB0aGlzIGZpbGUuXG5cbiMjIEFkZGl0aW9uYWwgUmVzb3VyY2VzXG5cbi0gW1Byb2plbiBEb2N1bWVudGF0aW9uXShodHRwczovL3Byb2plbi5pbylcbi0gW1Byb2plbiBHaXRIdWIgUmVwb3NpdG9yeV0oaHR0cHM6Ly9naXRodWIuY29tL3Byb2plbi9wcm9qZW4pYDtcbn1cbiJdfQ==
@@ -27,7 +27,7 @@ class IntegrationTestAutoDiscover extends cdk_1.IntegrationTestAutoDiscoverBase
27
27
  }
28
28
  exports.IntegrationTestAutoDiscover = IntegrationTestAutoDiscover;
29
29
  _a = JSII_RTTI_SYMBOL_1;
30
- IntegrationTestAutoDiscover[_a] = { fqn: "projen.awscdk.IntegrationTestAutoDiscover", version: "0.98.3" };
30
+ IntegrationTestAutoDiscover[_a] = { fqn: "projen.awscdk.IntegrationTestAutoDiscover", version: "0.98.5" };
31
31
  /**
32
32
  * Creates lambdas from entry points discovered in the project's source tree.
33
33
  */
@@ -48,7 +48,7 @@ class LambdaAutoDiscover extends cdk_1.AutoDiscoverBase {
48
48
  }
49
49
  exports.LambdaAutoDiscover = LambdaAutoDiscover;
50
50
  _b = JSII_RTTI_SYMBOL_1;
51
- LambdaAutoDiscover[_b] = { fqn: "projen.awscdk.LambdaAutoDiscover", version: "0.98.3" };
51
+ LambdaAutoDiscover[_b] = { fqn: "projen.awscdk.LambdaAutoDiscover", version: "0.98.5" };
52
52
  /**
53
53
  * Creates edge lambdas from entry points discovered in the project's source tree.
54
54
  */
@@ -70,7 +70,7 @@ class EdgeLambdaAutoDiscover extends cdk_1.AutoDiscoverBase {
70
70
  }
71
71
  exports.EdgeLambdaAutoDiscover = EdgeLambdaAutoDiscover;
72
72
  _c = JSII_RTTI_SYMBOL_1;
73
- EdgeLambdaAutoDiscover[_c] = { fqn: "projen.awscdk.EdgeLambdaAutoDiscover", version: "0.98.3" };
73
+ EdgeLambdaAutoDiscover[_c] = { fqn: "projen.awscdk.EdgeLambdaAutoDiscover", version: "0.98.5" };
74
74
  /**
75
75
  * Creates Lambda Extensions from entrypoints discovered in the project's
76
76
  * source tree.
@@ -92,7 +92,7 @@ class LambdaExtensionAutoDiscover extends cdk_1.AutoDiscoverBase {
92
92
  }
93
93
  exports.LambdaExtensionAutoDiscover = LambdaExtensionAutoDiscover;
94
94
  _d = JSII_RTTI_SYMBOL_1;
95
- LambdaExtensionAutoDiscover[_d] = { fqn: "projen.awscdk.LambdaExtensionAutoDiscover", version: "0.98.3" };
95
+ LambdaExtensionAutoDiscover[_d] = { fqn: "projen.awscdk.LambdaExtensionAutoDiscover", version: "0.98.5" };
96
96
  /**
97
97
  * Discovers and creates integration tests and lambdas from code in the
98
98
  * project's source and test trees.
@@ -136,5 +136,5 @@ class AutoDiscover extends component_1.Component {
136
136
  }
137
137
  exports.AutoDiscover = AutoDiscover;
138
138
  _e = JSII_RTTI_SYMBOL_1;
139
- AutoDiscover[_e] = { fqn: "projen.awscdk.AutoDiscover", version: "0.98.3" };
139
+ AutoDiscover[_e] = { fqn: "projen.awscdk.AutoDiscover", version: "0.98.5" };
140
140
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1kaXNjb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXV0by1kaXNjb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHlEQUc0QjtBQUM1Qix5Q0FJb0I7QUFDcEIseURBRzRCO0FBQzVCLHVEQUFnRjtBQUNoRixnQ0FJZ0I7QUFDaEIsNENBQXlDO0FBOEJ6Qzs7R0FFRztBQUNILE1BQWEsMkJBQTRCLFNBQVEscUNBQStCO0lBQzlFLFlBQVksT0FBZ0IsRUFBRSxPQUEyQztRQUN2RSxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXhCLEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzFDLElBQUksa0NBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNoQyxVQUFVO2dCQUNWLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztnQkFDeEIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO2dCQUNsQyxHQUFHLE9BQU8sQ0FBQyxzQkFBc0I7YUFDbEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7O0FBWkgsa0VBYUM7OztBQWlCRDs7R0FFRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsc0JBQWdCO0lBQ3RELFlBQVksT0FBZ0IsRUFBRSxPQUFrQztRQUM5RCxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ2IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQzFCLFNBQVMsRUFBRSxnQ0FBcUI7U0FDakMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDMUMsSUFBSSxnQ0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQy9CLFVBQVU7Z0JBQ1YsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO2dCQUN4QixHQUFHLE9BQU8sQ0FBQyxhQUFhO2FBQ3pCLENB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QUMsT0FBTztnQkFDeEIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO2dCQUNsQyxzQkFBc0IsRUFBRSxPQUFPLENBQUMsc0JBQXNCO2FBQ3ZELENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQXZDSCxvQ0F3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBd3NDZGtEZXBzIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHNcIjtcbmltcG9ydCB7XG4gIEludGVncmF0aW9uVGVzdCxcbiAgSW50ZWdyYXRpb25UZXN0Q29tbW9uT3B0aW9ucyxcbn0gZnJvbSBcIi4vaW50ZWdyYXRpb24tdGVzdFwiO1xuaW1wb3J0IHtcbiAgVFlQRVNDUklQVF9FREdFX0xBTUJEQV9FWFQsXG4gIFRZUEVTQ1JJUFRfTEFNQkRBX0VYVCxcbiAgVFlQRVNDUklQVF9MQU1CREFfRVhURU5TSU9OX0VYVCxcbn0gZnJvbSBcIi4vaW50ZXJuYWxcIjtcbmltcG9ydCB7XG4gIExhbWJkYUV4dGVuc2lvbixcbiAgTGFtYmRhRXh0ZW5zaW9uQ29tbW9uT3B0aW9ucyxcbn0gZnJvbSBcIi4vbGFtYmRhLWV4dGVuc2lvblwiO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24sIExhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucyB9IGZyb20gXCIuL2xhbWJkYS1mdW5jdGlvblwiO1xuaW1wb3J0IHtcbiAgQXV0b0Rpc2NvdmVyQmFzZSxcbiAgSW50ZWdyYXRpb25UZXN0QXV0b0Rpc2NvdmVyQmFzZSxcbiAgSW50ZWdyYXRpb25UZXN0QXV0b0Rpc2NvdmVyQmFzZU9wdGlvbnMsXG59IGZyb20gXCIuLi9jZGtcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuXG4vKipcbiAqIENvbW1vbiBvcHRpb25zIGZvciBhdXRvIGRpc2NvdmVyaW5nIHByb2plY3Qgc3ViY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvRGlzY292ZXJDb21tb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIHRzY29uZmlnIGZpbGUgdG8gdXNlIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cy5cbiAgICovXG4gIHJlYWRvbmx5IHRzY29uZmlnUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBV1MgQ0RLIGRlcGVuZGVuY3kgbWFuYWdlci5cbiAgICovXG4gIHJlYWRvbmx5IGNka0RlcHM6IEF3c0Nka0RlcHM7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEludGVncmF0aW9uVGVzdEF1dG9EaXNjb3ZlcmBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ3JhdGlvblRlc3RBdXRvRGlzY292ZXJPcHRpb25zXG4gIGV4dGVuZHMgQXV0b0Rpc2NvdmVyQ29tbW9uT3B0aW9ucyxcbiAgICBJbnRlZ3JhdGlvblRlc3RBdXRvRGlzY292ZXJCYXNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cy5cbiAgICovXG4gIHJlYWRvbmx5IGludGVncmF0aW9uVGVzdE9wdGlvbnM/OiBJbnRlZ3JhdGlvblRlc3RDb21tb25PcHRpb25zO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgaW50ZWdyYXRpb24gdGVzdHMgZnJvbSBlbnRyeSBwb2ludHMgZGlzY292ZXJlZCBpbiB0aGUgdGVzdCB0cmVlLlxuICovXG5leHBvcnQgY2xhc3MgSW50ZWdyYXRpb25UZXN0QXV0b0Rpc2NvdmVyIGV4dGVuZHMgSW50ZWdyYXRpb25UZXN0QXV0b0Rpc2NvdmVyQmFzZSB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEludGVncmF0aW9uVGVzdEF1dG9EaXNjb3Zlck9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCBvcHRpb25zKTtcblxuICAgIGZvciAoY29uc3QgZW50cnlwb2ludCBvZiB0aGlzLmVudHJ5cG9pbnRzKSB7XG4gICAgICBuZXcgSW50ZWdyYXRpb25UZXN0KHRoaXMucHJvamVjdCwge1xuICAgICAgICBlbnRyeXBvaW50LFxuICAgICAgICBjZGtEZXBzOiBvcHRpb25zLmNka0RlcHMsXG4gICAgICAgIHRzY29uZmlnUGF0aDogb3B0aW9ucy50c2NvbmZpZ1BhdGgsXG4gICAgICAgIC4uLm9wdGlvbnMuaW50ZWdyYXRpb25UZXN0T3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBMYW1iZGFBdXRvRGlzY292ZXJgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhQXV0b0Rpc2NvdmVyT3B0aW9ucyBleHRlbmRzIEF1dG9EaXNjb3ZlckNvbW1vbk9wdGlvbnMge1xuICAvKipcbiAgICogUHJvamVjdCBzb3VyY2UgdHJlZSAocmVsYXRpdmUgdG8gcHJvamVjdCBvdXRwdXQgZGlyZWN0b3J5KS5cbiAgICovXG4gIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBBV1MgTGFtYmRhIGZ1bmN0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYU9wdGlvbnM/OiBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnM7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBsYW1iZGFzIGZyb20gZW50cnkgcG9pbnRzIGRpc2NvdmVyZWQgaW4gdGhlIHByb2plY3QncyBzb3VyY2UgdHJlZS5cbiAqL1xuZXhwb3J0IGNsYXNzIExhbWJkYUF1dG9EaXNjb3ZlciBleHRlbmRzIEF1dG9EaXNjb3ZlckJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBMYW1iZGFBdXRvRGlzY292ZXJPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwge1xuICAgICAgcHJvamVjdGRpcjogb3B0aW9ucy5zcmNkaXIsXG4gICAgICBleHRlbnNpb246IFRZUEVTQ1JJUFRfTEFNQkRBX0VYVCxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgZW50cnlwb2ludCBvZiB0aGlzLmVudHJ5cG9pbnRzKSB7XG4gICAgICBuZXcgTGFtYmRhRnVuY3Rpb24odGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIGVudHJ5cG9pbnQsXG4gICAgICAgIGNka0RlcHM6IG9wdGlvbnMuY2RrRGVwcyxcbiAgICAgICAgLi4ub3B0aW9ucy5sYW1iZGFPcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEVkZ2VMYW1iZGFBdXRvRGlzY292ZXJgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWRnZUxhbWJkYUF1dG9EaXNjb3Zlck9wdGlvbnNcbiAgZXh0ZW5kcyBBdXRvRGlzY292ZXJDb21tb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFByb2plY3Qgc291cmNlIHRyZWUgKHJlbGF0aXZlIHRvIHByb2plY3Qgb3V0cHV0IGRpcmVjdG9yeSkuXG4gICAqL1xuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgQVdTIExhbWJkYSBmdW5jdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFPcHRpb25zPzogTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgZWRnZSBsYW1iZGFzIGZyb20gZW50cnkgcG9pbnRzIGRpc2NvdmVyZWQgaW4gdGhlIHByb2plY3QncyBzb3VyY2UgdHJlZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEVkZ2VMYW1iZGFBdXRvRGlzY292ZXIgZXh0ZW5kcyBBdXRvRGlzY292ZXJCYXNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogRWRnZUxhbWJkYUF1dG9EaXNjb3Zlck9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCB7XG4gICAgICBwcm9qZWN0ZGlyOiBvcHRpb25zLnNyY2RpcixcbiAgICAgIGV4dGVuc2lvbjogVFlQRVNDUklQVF9FREdFX0xBTUJEQV9FWFQsXG4gICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5cG9pbnQgb2YgdGhpcy5lbnRyeXBvaW50cykge1xuICAgICAgbmV3IExhbWJkYUZ1bmN0aW9uKHRoaXMucHJvamVjdCwge1xuICAgICAgICBlbnRyeXBvaW50LFxuICAgICAgICBjZGtEZXBzOiBvcHRpb25zLmNka0RlcHMsXG4gICAgICAgIC4uLm9wdGlvbnMubGFtYmRhT3B0aW9ucyxcbiAgICAgICAgZWRnZUxhbWJkYTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBMYW1iZGFFeHRlbnNpb25BdXRvRGlzY292ZXJgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhRXh0ZW5zaW9uQXV0b0Rpc2NvdmVyT3B0aW9uc1xuICBleHRlbmRzIEF1dG9EaXNjb3ZlckNvbW1vbk9wdGlvbnMge1xuICAvKipcbiAgICogUHJvamVjdCBzb3VyY2UgdHJlZSAocmVsYXRpdmUgdG8gcHJvamVjdCBvdXRwdXQgZGlyZWN0b3J5KS5cbiAgICovXG4gIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBsYW1iZGEgZXh0ZW5zaW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUV4dGVuc2lvbk9wdGlvbnM/OiBMYW1iZGFFeHRlbnNpb25Db21tb25PcHRpb25zO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgTGFtYmRhIEV4dGVuc2lvbnMgZnJvbSBlbnRyeXBvaW50cyBkaXNjb3ZlcmVkIGluIHRoZSBwcm9qZWN0J3NcbiAqIHNvdXJjZSB0cmVlLlxuICovXG5leHBvcnQgY2xhc3MgTGFtYmRhRXh0ZW5zaW9uQXV0b0Rpc2NvdmVyIGV4dGVuZHMgQXV0b0Rpc2NvdmVyQmFzZSB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IExhbWJkYUV4dGVuc2lvbkF1dG9EaXNjb3Zlck9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCB7XG4gICAgICBwcm9qZWN0ZGlyOiBvcHRpb25zLnNyY2RpcixcbiAgICAgIGV4dGVuc2lvbjogVFlQRVNDUklQVF9MQU1CREFfRVhURU5TSU9OX0VYVCxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgZW50cnlwb2ludCBvZiB0aGlzLmVudHJ5cG9pbnRzKSB7XG4gICAgICBuZXcgTGFtYmRhRXh0ZW5zaW9uKHRoaXMucHJvamVjdCwge1xuICAgICAgICBlbnRyeXBvaW50LFxuICAgICAgICBjZGtEZXBzOiBvcHRpb25zLmNka0RlcHMsXG4gICAgICAgIC4uLm9wdGlvbnMubGFtYmRhRXh0ZW5zaW9uT3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBBdXRvRGlzY292ZXJgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0Rpc2NvdmVyT3B0aW9uc1xuICBleHRlbmRzIExhbWJkYUF1dG9EaXNjb3Zlck9wdGlvbnMsXG4gICAgTGFtYmRhRXh0ZW5zaW9uQXV0b0Rpc2NvdmVyT3B0aW9ucyxcbiAgICBJbnRlZ3JhdGlvblRlc3RBdXRvRGlzY292ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEF1dG8tZGlzY292ZXIgbGFtYmRhIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhQXV0b0Rpc2NvdmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQXV0by1kaXNjb3ZlciBlZGdlIGxhbWJkYSBmdW5jdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVkZ2VMYW1iZGFBdXRvRGlzY292ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBdXRvLWRpc2NvdmVyIGxhbWJkYSBleHRlbnNpb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFFeHRlbnNpb25BdXRvRGlzY292ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBdXRvLWRpc2NvdmVyIGludGVncmF0aW9uIHRlc3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBpbnRlZ3JhdGlvblRlc3RBdXRvRGlzY292ZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIERpc2NvdmVycyBhbmQgY3JlYXRlcyBpbnRlZ3JhdGlvbiB0ZXN0cyBhbmQgbGFtYmRhcyBmcm9tIGNvZGUgaW4gdGhlXG4gKiBwcm9qZWN0J3Mgc291cmNlIGFuZCB0ZXN0IHRyZWVzLlxuICovXG5leHBvcnQgY2xhc3MgQXV0b0Rpc2NvdmVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogQXV0b0Rpc2NvdmVyT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgaWYgKG9wdGlvbnMubGFtYmRhQXV0b0Rpc2NvdmVyID8/IHRydWUpIHtcbiAgICAgIG5ldyBMYW1iZGFBdXRvRGlzY292ZXIodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgIGNka0RlcHM6IG9wdGlvbnMuY2RrRGVwcyxcbiAgICAgICAgdHNjb25maWdQYXRoOiBvcHRpb25zLnRzY29uZmlnUGF0aCxcbiAgICAgICAgc3JjZGlyOiBvcHRpb25zLnNyY2RpcixcbiAgICAgICAgbGFtYmRhT3B0aW9uczogb3B0aW9ucy5sYW1iZGFPcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZWRnZUxhbWJkYUF1dG9EaXNjb3ZlciA/PyB0cnVlKSB7XG4gICAgICBuZXcgRWRnZUxhbWJkYUF1dG9EaXNjb3Zlcih0aGlzLnByb2plY3QsIHtcbiAgICAgICAgY2RrRGVwczogb3B0aW9ucy5jZGtEZXBzLFxuICAgICAgICB0c2NvbmZpZ1BhdGg6IG9wdGlvbnMudHNjb25maWdQYXRoLFxuICAgICAgICBzcmNkaXI6IG9wdGlvbnMuc3JjZGlyLFxuICAgICAgICBsYW1iZGFPcHRpb25zOiBvcHRpb25zLmxhbWJkYU9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5sYW1iZGFFeHRlbnNpb25BdXRvRGlzY292ZXIgPz8gdHJ1ZSkge1xuICAgICAgbmV3IExhbWJkYUV4dGVuc2lvbkF1dG9EaXNjb3Zlcih0aGlzLnByb2plY3QsIHtcbiAgICAgICAgY2RrRGVwczogb3B0aW9ucy5jZGtEZXBzLFxuICAgICAgICB0c2NvbmZpZ1BhdGg6IG9wdGlvbnMudHNjb25maWdQYXRoLFxuICAgICAgICBzcmNkaXI6IG9wdGlvbnMuc3JjZGlyLFxuICAgICAgICBsYW1iZGFFeHRlbnNpb25PcHRpb25zOiBvcHRpb25zLmxhbWJkYUV4dGVuc2lvbk9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5pbnRlZ3JhdGlvblRlc3RBdXRvRGlzY292ZXIgPz8gdHJ1ZSkge1xuICAgICAgbmV3IEludGVncmF0aW9uVGVzdEF1dG9EaXNjb3Zlcih0aGlzLnByb2plY3QsIHtcbiAgICAgICAgY2RrRGVwczogb3B0aW9ucy5jZGtEZXBzLFxuICAgICAgICB0ZXN0ZGlyOiBvcHRpb25zLnRlc3RkaXIsXG4gICAgICAgIHRzY29uZmlnUGF0aDogb3B0aW9ucy50c2NvbmZpZ1BhdGgsXG4gICAgICAgIGludGVncmF0aW9uVGVzdE9wdGlvbnM6IG9wdGlvbnMuaW50ZWdyYXRpb25UZXN0T3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -81,5 +81,5 @@ class AwsCdkJavaApp extends java_1.JavaProject {
81
81
  }
82
82
  exports.AwsCdkJavaApp = AwsCdkJavaApp;
83
83
  _a = JSII_RTTI_SYMBOL_1;
84
- AwsCdkJavaApp[_a] = { fqn: "projen.awscdk.AwsCdkJavaApp", version: "0.98.3" };
84
+ AwsCdkJavaApp[_a] = { fqn: "projen.awscdk.AwsCdkJavaApp", version: "0.98.5" };
85
85
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWFwcC1qYXZhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9hd3NjZGstYXBwLWphdmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBNEI7QUFDNUIsMEJBQStDO0FBRS9DLHlEQUFvRDtBQUNwRCw2Q0FBaUU7QUFDakUsMkNBQXVDO0FBQ3ZDLGtDQUEwRDtBQWUxRDs7OztHQUlHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsa0JBQVc7SUErQjVDLFlBQVksT0FBNkI7UUFDdkMsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RCxNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTFFLEtBQUssQ0FBQztZQUNKLEdBQUcsT0FBTztZQUNWLE1BQU0sRUFBRSxLQUFLO1lBQ2IsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7U0FDekMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUVuQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksaUNBQWMsQ0FBQyxJQUFJLEVBQUU7WUFDdEMsY0FBYyxFQUFFLGtCQUFjLENBQUMsT0FBTztZQUN0QyxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksb0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxzQkFBUyxDQUFDLElBQUksRUFBRTtZQUNuQyxHQUFHLEVBQUUsMENBQTBDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDL0QsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksZ0JBQWdCLENBQUMsR0FBRyxPQUFpQjtRQUMxQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFTyxTQUFTO1FBQ2YsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsTUFBTSxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxPQUFPLENBQUM7UUFDOUMsSUFBSSxhQUFTLENBQUMsSUFBSSxFQUFFLElBQUEsV0FBSSxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUU7WUFDdkQsS0FBSyxFQUFFO2dCQUNMLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ1YsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHO29CQUMzQixFQUFFO29CQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxJQUFJLENBQUM7d0JBQy9CLENBQUMsQ0FBQyx5Q0FBeUM7d0JBQzNDLENBQUMsQ0FBQyxvQ0FBb0M7b0JBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxJQUFJLENBQUM7d0JBQy9CLENBQUMsQ0FBQywyQ0FBMkM7d0JBQzdDLENBQUMsQ0FBQyxzQ0FBc0M7b0JBQzFDLEVBQUU7b0JBQ0YsZ0JBQWdCLElBQUksQ0FBQyxhQUFhLElBQUk7b0JBQ3RDLGtEQUFrRDtvQkFDbEQsMEJBQTBCO29CQUMxQix1QkFBdUIsSUFBSSxDQUFDLElBQUksS0FBSztvQkFDckMsa0JBQWtCO29CQUNsQixLQUFLO29CQUNMLEdBQUc7aUJBQ0osQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2I7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQXJHSCxzQ0FzR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlLCBTYW1wbGVEaXIgfSBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IEF3c0Nka0RlcHMsIEF3c0Nka0RlcHNDb21tb25PcHRpb25zIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHNcIjtcbmltcG9ydCB7IEF3c0Nka0RlcHNKYXZhIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHMtamF2YVwiO1xuaW1wb3J0IHsgQ2RrQ29uZmlnLCBDZGtDb25maWdDb21tb25PcHRpb25zIH0gZnJvbSBcIi4vY2RrLWNvbmZpZ1wiO1xuaW1wb3J0IHsgQ2RrVGFza3MgfSBmcm9tIFwiLi9jZGstdGFza3NcIjtcbmltcG9ydCB7IEphdmFQcm9qZWN0LCBKYXZhUHJvamVjdE9wdGlvbnMgfSBmcm9tIFwiLi4vamF2YVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF3c0Nka0phdmFBcHBPcHRpb25zXG4gIGV4dGVuZHMgSmF2YVByb2plY3RPcHRpb25zLFxuICAgIENka0NvbmZpZ0NvbW1vbk9wdGlvbnMsXG4gICAgQXdzQ2RrRGVwc0NvbW1vbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEphdmEgY2xhc3Mgd2l0aCB0aGUgc3RhdGljIGBtYWluKClgIG1ldGhvZC4gVGhpcyBtZXRob2RcbiAgICogc2hvdWxkIGNhbGwgYGFwcC5zeW50aCgpYCBvbiB0aGUgQ0RLIGFwcC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJvcmcuYWNtZS5NeUFwcFwiXG4gICAqL1xuICByZWFkb25seSBtYWluQ2xhc3M6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBV1MgQ0RLIGFwcCBpbiBKYXZhLlxuICpcbiAqIEBwamlkIGF3c2Nkay1hcHAtamF2YVxuICovXG5leHBvcnQgY2xhc3MgQXdzQ2RrSmF2YUFwcCBleHRlbmRzIEphdmFQcm9qZWN0IHtcbiAgLyoqXG4gICAqIFRoZSBgY2RrLmpzb25gIGZpbGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2RrQ29uZmlnOiBDZGtDb25maWc7XG5cbiAgLyoqXG4gICAqIENESyBkZXBlbmRlbmN5IG1hbmFnZW1lbnQgaGVscGVyIGNsYXNzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2RrRGVwczogQXdzQ2RrRGVwcztcblxuICAvKipcbiAgICogVGhlIGZ1bGwgbmFtZSBvZiB0aGUgbWFpbiBjbGFzcyBvZiB0aGUgamF2YSBhcHAgKHBhY2thZ2UuQ2xhc3MpLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG1haW5DbGFzczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDREsgdGFza3MuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2RrVGFza3M6IENka1Rhc2tzO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgSmF2YSBwYWNrYWdlIHRoYXQgaW5jbHVkZXMgdGhlIG1haW4gY2xhc3MuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWFpblBhY2thZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEphdmEgY2xhc3Mgd2l0aCB0aGUgc3RhdGljIGBtYWluKClgIG1ldGhvZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtYWluQ2xhc3NOYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQXdzQ2RrSmF2YUFwcE9wdGlvbnMpIHtcbiAgICBjb25zdCBtYWluQ2xhc3NDb21wb25lbnRzID0gb3B0aW9ucy5tYWluQ2xhc3Muc3BsaXQoXCIuXCIpO1xuICAgIGNvbnN0IG1haW5QYWNrYWdlID0gbWFpbkNsYXNzQ29tcG9uZW50cy5zbGljZSgwLCAtMSk7XG4gICAgY29uc3QgbWFpbkNsYXNzTmFtZSA9IG1haW5DbGFzc0NvbXBvbmVudHNbbWFpbkNsYXNzQ29tcG9uZW50cy5sZW5ndGggLSAxXTtcblxuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBzYW1wbGU6IGZhbHNlLFxuICAgICAgc2FtcGxlSmF2YVBhY2thZ2U6IG1haW5QYWNrYWdlLmpvaW4oXCIuXCIpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5tYWluQ2xhc3MgPSBvcHRpb25zLm1haW5DbGFzcztcbiAgICB0aGlzLm1haW5QYWNrYWdlID0gbWFpblBhY2thZ2Uuam9pbihcIi5cIik7XG4gICAgdGhpcy5tYWluQ2xhc3NOYW1lID0gbWFpbkNsYXNzTmFtZTtcblxuICAgIHRoaXMuY2RrRGVwcyA9IG5ldyBBd3NDZGtEZXBzSmF2YSh0aGlzLCB7XG4gICAgICBkZXBlbmRlbmN5VHlwZTogRGVwZW5kZW5jeVR5cGUuUlVOVElNRSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNka1Rhc2tzID0gbmV3IENka1Rhc2tzKHRoaXMpO1xuICAgIHRoaXMucG9zdENvbXBpbGVUYXNrLnNwYXduKHRoaXMuY2RrVGFza3Muc3ludGgpO1xuXG4gICAgdGhpcy5jZGtDb25maWcgPSBuZXcgQ2RrQ29uZmlnKHRoaXMsIHtcbiAgICAgIGFwcDogYG12biBleGVjOmphdmEgLS1xdWlldCAtRGV4ZWMubWFpbkNsYXNzPSR7dGhpcy5tYWluQ2xhc3N9YCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5zYW1wbGUgPz8gdHJ1ZSkge1xuICAgICAgdGhpcy5hZGRTYW1wbGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBBV1MgQ0RLIG1vZHVsZSBkZXBlbmRlbmNpZXNcbiAgICpcbiAgICogQHBhcmFtIG1vZHVsZXMgVGhlIGxpc3Qgb2YgbW9kdWxlcyB0byBkZXBlbmQgb24gKGUuZy4gXCJzb2Z0d2FyZS5hbWF6b24uYXdzY2RrL2F3cy1sYW1iZGFcIiwgXCJzb2Z0d2FyZS5hbWF6b24uYXdzY2RrL2F3cy1pYW1cIiwgZXRjKVxuICAgKiBAZGVwcmVjYXRlZCBJbiBDREsgMi54IGFsbCBtb2R1bGVzIGFyZSBhdmFpbGFibGUgYnkgZGVmYXVsdC4gQWxwaGEgbW9kdWxlcyBzaG91bGQgYmUgYWRkZWQgdXNpbmcgdGhlIHN0YW5kYXJkICdkZXBzJ1xuICAgKi9cbiAgcHVibGljIGFkZENka0RlcGVuZGVuY3koLi4ubW9kdWxlczogc3RyaW5nW10pIHtcbiAgICBmb3IgKGNvbnN0IG0gb2YgbW9kdWxlcykge1xuICAgICAgdGhpcy5jZGtEZXBzLmFkZFYxRGVwZW5kZW5jaWVzKG0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkU2FtcGxlKCkge1xuICAgIGNvbnN0IHBrZyA9IHRoaXMubWFpblBhY2thZ2Uuc3BsaXQoXCIuXCIpO1xuICAgIGNvbnN0IGphdmFGaWxlID0gYCR7dGhpcy5tYWluQ2xhc3NOYW1lfS5qYXZhYDtcbiAgICBuZXcgU2FtcGxlRGlyKHRoaXMsIGpvaW4oXCJzcmNcIiwgXCJtYWluXCIsIFwiamF2YVwiLCAuLi5wa2cpLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICBbamF2YUZpbGVdOiBbXG4gICAgICAgICAgYHBhY2thZ2UgJHtwa2cuam9pbihcIi5cIil9O2AsXG4gICAgICAgICAgXCJcIixcbiAgICAgICAgICB0aGlzLmNka0RlcHMuY2RrTWFqb3JWZXJzaW9uID09IDFcbiAgICAgICAgICAgID8gXCJpbXBvcnQgc29mdHdhcmUuYW1hem9uLmF3c2Nkay5jb3JlLkFwcDtcIlxuICAgICAgICAgICAgOiBcImltcG9ydCBzb2Z0d2FyZS5hbWF6b24uYXdzY2RrLkFwcDtcIixcbiAgICAgICAgICB0aGlzLmNka0RlcHMuY2RrTWFqb3JWZXJzaW9uID09IDFcbiAgICAgICAgICAgID8gXCJpbXBvcnQgc29mdHdhcmUuYW1hem9uLmF3c2Nkay5jb3JlLlN0YWNrO1wiXG4gICAgICAgICAgICA6IFwiaW1wb3J0IHNvZnR3YXJlLmFtYXpvbi5hd3NjZGsuU3RhY2s7XCIsXG4gICAgICAgICAgXCJcIixcbiAgICAgICAgICBgcHVibGljIGNsYXNzICR7dGhpcy5tYWluQ2xhc3NOYW1lfSB7YCxcbiAgICAgICAgICBcIiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oZmluYWwgU3RyaW5nW10gYXJncykge1wiLFxuICAgICAgICAgIFwiICAgIEFwcCBhcHAgPSBuZXcgQXBwKCk7XCIsXG4gICAgICAgICAgYCAgICBuZXcgU3RhY2soYXBwLCBcIiR7dGhpcy5uYW1lfVwiKTtgLFxuICAgICAgICAgIFwiICAgIGFwcC5zeW50aCgpO1wiLFxuICAgICAgICAgIFwiICB9XCIsXG4gICAgICAgICAgXCJ9XCIsXG4gICAgICAgIF0uam9pbihcIlxcblwiKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -58,7 +58,7 @@ class AwsCdkPythonApp extends python_project_1.PythonProject {
58
58
  }
59
59
  exports.AwsCdkPythonApp = AwsCdkPythonApp;
60
60
  _a = JSII_RTTI_SYMBOL_1;
61
- AwsCdkPythonApp[_a] = { fqn: "projen.awscdk.AwsCdkPythonApp", version: "0.98.3" };
61
+ AwsCdkPythonApp[_a] = { fqn: "projen.awscdk.AwsCdkPythonApp", version: "0.98.5" };
62
62
  class AppCode extends __1.Component {
63
63
  constructor(project, fileName, cdkVersion) {
64
64
  super(project);
@@ -187,7 +187,7 @@ class AwsCdkTypeScriptApp extends typescript_1.TypeScriptAppProject {
187
187
  }
188
188
  exports.AwsCdkTypeScriptApp = AwsCdkTypeScriptApp;
189
189
  _a = JSII_RTTI_SYMBOL_1;
190
- AwsCdkTypeScriptApp[_a] = { fqn: "projen.awscdk.AwsCdkTypeScriptApp", version: "0.98.3" };
190
+ AwsCdkTypeScriptApp[_a] = { fqn: "projen.awscdk.AwsCdkTypeScriptApp", version: "0.98.5" };
191
191
  /**
192
192
  * Ensures a path is properly prefixed with './' if it's a relative path
193
193
  * @param {string} filePath - The path to normalize
@@ -85,11 +85,11 @@ class AwsCdkConstructLibrary extends cdk_1.ConstructLibrary {
85
85
  }
86
86
  exports.AwsCdkConstructLibrary = AwsCdkConstructLibrary;
87
87
  _a = JSII_RTTI_SYMBOL_1;
88
- AwsCdkConstructLibrary[_a] = { fqn: "projen.awscdk.AwsCdkConstructLibrary", version: "0.98.3" };
88
+ AwsCdkConstructLibrary[_a] = { fqn: "projen.awscdk.AwsCdkConstructLibrary", version: "0.98.5" };
89
89
  /** @deprecated use `AwsCdkConstructLibrary` */
90
90
  class ConstructLibraryAws extends AwsCdkConstructLibrary {
91
91
  }
92
92
  exports.ConstructLibraryAws = ConstructLibraryAws;
93
93
  _b = JSII_RTTI_SYMBOL_1;
94
- ConstructLibraryAws[_b] = { fqn: "projen.awscdk.ConstructLibraryAws", version: "0.98.3" };
94
+ ConstructLibraryAws[_b] = { fqn: "projen.awscdk.ConstructLibraryAws", version: "0.98.5" };
95
95
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXdzY2RrLWNvbnN0cnVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUFpQztBQUNqQyxtREFBK0M7QUFFL0MscURBQWdEO0FBQ2hELGlEQUE2QztBQUU3QyxnQ0FBbUU7QUFDbkUsa0RBQWlEO0FBNERqRDs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsc0JBQWdCO0lBRzFELFlBQVksT0FBc0M7UUFDaEQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBRWhFLEtBQUssQ0FBQztZQUNKLHFCQUFxQixFQUNuQixlQUFlLEtBQUssQ0FBQztnQkFDbkIsQ0FBQyxDQUFDO29CQUNFLG1CQUFtQixFQUFFLEtBQUs7aUJBQzNCO2dCQUNILENBQUMsQ0FBQyxTQUFTO1lBQ2YsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLGNBQWMsSUFBSSxPQUFPO1lBQ3RELEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSw2QkFBWSxDQUFDLElBQUksRUFBRTtZQUNwQyxvRUFBb0U7WUFDcEUsY0FBYyxFQUFFLDZCQUFjLENBQUMsSUFBSTtZQUNuQyxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLDRCQUFZLENBQUMsSUFBSSxFQUFFO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7WUFDdkMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxJQUFJO1lBQ3RELHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsSUFBSSxJQUFJO1lBQzlELDJCQUEyQixFQUFFLE9BQU8sQ0FBQywyQkFBMkIsSUFBSSxJQUFJO1lBQ3hFLDJCQUEyQixFQUFFLE9BQU8sQ0FBQywyQkFBMkIsSUFBSSxJQUFJO1NBQ3pFLENBQUMsQ0FBQztRQUVILElBQUksT0FBTyxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDcEMsSUFBSSwwQkFBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksa0JBQWtCLENBQUMsR0FBRyxJQUFjO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLHNCQUFzQixDQUFDLEdBQUcsSUFBYztRQUM3QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDOztBQTFFSCx3REEyRUM7OztBQU1ELCtDQUErQztBQUMvQyxNQUFhLG1CQUFvQixTQUFRLHNCQUFzQjs7QUFBL0Qsa0RBQWtFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gXCJzZW12ZXJcIjtcbmltcG9ydCB7IEF1dG9EaXNjb3ZlciB9IGZyb20gXCIuL2F1dG8tZGlzY292ZXJcIjtcbmltcG9ydCB7IEF3c0Nka0RlcHMsIEF3c0Nka0RlcHNDb21tb25PcHRpb25zIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHNcIjtcbmltcG9ydCB7IEF3c0Nka0RlcHNKcyB9IGZyb20gXCIuL2F3c2Nkay1kZXBzLWpzXCI7XG5pbXBvcnQgeyBJbnRlZ1J1bm5lciB9IGZyb20gXCIuL2ludGVnLXJ1bm5lclwiO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zIH0gZnJvbSBcIi4vbGFtYmRhLWZ1bmN0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RMaWJyYXJ5LCBDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB9IGZyb20gXCIuLi9jZGtcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9uc1xuICBleHRlbmRzIENvbnN0cnVjdExpYnJhcnlPcHRpb25zLFxuICAgIEF3c0Nka0RlcHNDb21tb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkcyBhbiBgYXdzX2xhbWJkYS5GdW5jdGlvbmAgZm9yIGVhY2ggYC5sYW1iZGEudHNgIGhhbmRsZXJcbiAgICogaW4geW91ciBzb3VyY2UgdHJlZS4gSWYgdGhpcyBpcyBkaXNhYmxlZCwgeW91IGVpdGhlciBuZWVkIHRvIGV4cGxpY2l0bHlcbiAgICogY2FsbCBgYXdzX2xhbWJkYS5GdW5jdGlvbi5hdXRvRGlzY292ZXIoKWAgb3IgZGVmaW5lIGEgYG5ld1xuICAgKiBhd3NfbGFtYmRhLkZ1bmN0aW9uKClgIGZvciBlYWNoIGhhbmRsZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkcyBhbiBgY2xvdWRmcm9udC5leHBlcmltZW50YWwuRWRnZUZ1bmN0aW9uYCBmb3IgZWFjaFxuICAgKiBgLmVkZ2UtbGFtYmRhLnRzYCBoYW5kbGVyIGluIHlvdXIgc291cmNlIHRyZWUuIElmIHRoaXMgaXMgZGlzYWJsZWQsIHlvdSBjYW5cbiAgICogbWFudWFsbHkgYWRkIGFuIGBhd3NjZGsuQXV0b0Rpc2NvdmVyYCBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlZGdlTGFtYmRhQXV0b0Rpc2NvdmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhZGRzIGFuIGBhd3NjZGsuTGFtYmRhRXh0ZW5zaW9uYCBmb3IgZWFjaCBgLmxhbWJkYS1leHRlbnNpb24udHNgXG4gICAqIGVudHJ5cG9pbnQgaW4geW91ciBzb3VyY2UgdHJlZS4gSWYgdGhpcyBpcyBkaXNhYmxlZCwgeW91IGNhbiBtYW51YWxseSBhZGQgYW5cbiAgICogYGF3c2Nkay5BdXRvRGlzY292ZXJgIGNvbXBvbmVudCB0byB5b3VyIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhRXh0ZW5zaW9uQXV0b0Rpc2NvdmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSBkaXNjb3ZlcnMgYW5kIGNyZWF0ZXMgaW50ZWdyYXRpb24gdGVzdHMgZm9yIGVhY2ggYC5pbnRlZy50c2BcbiAgICogZmlsZSB1bmRlciB5b3VyIHRlc3QgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBpbnRlZ3JhdGlvblRlc3RBdXRvRGlzY292ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIHRoZSBBV1MgQ0RLIGludGVnLXJ1bm5lci5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsSW50ZWdSdW5uZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb21tb24gb3B0aW9ucyBmb3IgYWxsIEFXUyBMYW1iZGEgZnVuY3Rpb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhT3B0aW9ucz86IExhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucztcbn1cblxuLyoqXG4gKiBBV1MgQ0RLIGNvbnN0cnVjdCBsaWJyYXJ5IHByb2plY3RcbiAqXG4gKiBBIG11bHRpLWxhbmd1YWdlIChqc2lpKSBjb25zdHJ1Y3QgbGlicmFyeSB3aGljaCB2ZW5kcyBjb25zdHJ1Y3RzIGRlc2lnbmVkIHRvXG4gKiB1c2Ugd2l0aGluIHRoZSBBV1MgQ0RLIHdpdGggYSBmcmllbmRseSB3b3JrZmxvdyBhbmQgYXV0b21hdGljIHB1Ymxpc2hpbmcgdG9cbiAqIHRoZSBjb25zdHJ1Y3QgY2F0YWxvZy5cbiAqXG4gKiBAcGppZCBhd3NjZGstY29uc3RydWN0XG4gKi9cbmV4cG9ydCBjbGFzcyBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5IGV4dGVuZHMgQ29uc3RydWN0TGlicmFyeSB7XG4gIHB1YmxpYyByZWFkb25seSBjZGtEZXBzOiBBd3NDZGtEZXBzO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zKSB7XG4gICAgY29uc3QgY2RrTWFqb3JWZXJzaW9uID0gc2VtdmVyLnBhcnNlKG9wdGlvbnMuY2RrVmVyc2lvbik/Lm1ham9yO1xuXG4gICAgc3VwZXIoe1xuICAgICAgcGVlckRlcGVuZGVuY3lPcHRpb25zOlxuICAgICAgICBjZGtNYWpvclZlcnNpb24gPT09IDFcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgcGlubmVkRGV2RGVwZW5kZW5jeTogZmFsc2UsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB3b3JrZmxvd05vZGVWZXJzaW9uOiBvcHRpb25zLm1pbk5vZGVWZXJzaW9uID8/IFwibHRzLypcIixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNka0RlcHMgPSBuZXcgQXdzQ2RrRGVwc0pzKHRoaXMsIHtcbiAgICAgIC8vIHNpbmNlIHRoaXMgd2UgYXJlIGEgbGlicmFyeSwgZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBhZGRlZCBhIHBlZXJzXG4gICAgICBkZXBlbmRlbmN5VHlwZTogRGVwZW5kZW5jeVR5cGUuUEVFUixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBuZXcgQXV0b0Rpc2NvdmVyKHRoaXMsIHtcbiAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgICB0ZXN0ZGlyOiB0aGlzLnRlc3RkaXIsXG4gICAgICBsYW1iZGFPcHRpb25zOiBvcHRpb25zLmxhbWJkYU9wdGlvbnMsXG4gICAgICB0c2NvbmZpZ1BhdGg6IHRoaXMudHNjb25maWdEZXYuZmlsZU5hbWUsXG4gICAgICBjZGtEZXBzOiB0aGlzLmNka0RlcHMsXG4gICAgICBsYW1iZGFBdXRvRGlzY292ZXI6IG9wdGlvbnMubGFtYmRhQXV0b0Rpc2NvdmVyID8/IHRydWUsXG4gICAgICBlZGdlTGFtYmRhQXV0b0Rpc2NvdmVyOiBvcHRpb25zLmVkZ2VMYW1iZGFBdXRvRGlzY292ZXIgPz8gdHJ1ZSxcbiAgICAgIGxhbWJkYUV4dGVuc2lvbkF1dG9EaXNjb3Zlcjogb3B0aW9ucy5sYW1iZGFFeHRlbnNpb25BdXRvRGlzY292ZXIgPz8gdHJ1ZSxcbiAgICAgIGludGVncmF0aW9uVGVzdEF1dG9EaXNjb3Zlcjogb3B0aW9ucy5pbnRlZ3JhdGlvblRlc3RBdXRvRGlzY292ZXIgPz8gdHJ1ZSxcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zLmV4cGVyaW1lbnRhbEludGVnUnVubmVyKSB7XG4gICAgICBuZXcgSW50ZWdSdW5uZXIodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgQ0RLIHZlcnNpb24gZm9yIHRoaXMgbGlicmFyeS5cbiAgICovXG4gIHB1YmxpYyBnZXQgY2RrVmVyc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5jZGtEZXBzLmNka1ZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBjZGtWZXJzaW9uYFxuICAgKi9cbiAgcHVibGljIGdldCB2ZXJzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNka1ZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBkZXBlbmRlbmNpZXMgdG8gQVdTIENESyBtb2R1bGVzLlxuICAgKlxuICAgKiBTaW5jZSB0aGlzIGlzIGEgbGlicmFyeSBwcm9qZWN0LCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBhZGRlZCBhcyBwZWVyIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQHBhcmFtIGRlcHMgbmFtZXMgb2YgY2RrIG1vZHVsZXMgKGUuZy4gYEBhd3MtY2RrL2F3cy1sYW1iZGFgKS5cbiAgICogQGRlcHJlY2F0ZWQgTm90IHN1cHBvcnRlZCBpbiB2Mi4gRm9yIHYxLCB1c2UgYHByb2plY3QuY2RrRGVwcy5hZGRWMURlcGVuZGVuY2llcygpYFxuICAgKi9cbiAgcHVibGljIGFkZENka0RlcGVuZGVuY2llcyguLi5kZXBzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiB0aGlzLmNka0RlcHMuYWRkVjFEZXBlbmRlbmNpZXMoLi4uZGVwcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBBV1MgQ0RLIG1vZHVsZXMgYXMgZGV2IGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQHBhcmFtIGRlcHMgbmFtZXMgb2YgY2RrIG1vZHVsZXMgKGUuZy4gYEBhd3MtY2RrL2F3cy1sYW1iZGFgKS5cbiAgICogQGRlcHJlY2F0ZWQgTm90IHN1cHBvcnRlZCBpbiB2Mi4gRm9yIHYxLCB1c2UgYHByb2plY3QuY2RrRGVwcy5hZGRWMURldkRlcGVuZGVuY2llcygpYFxuICAgKi9cbiAgcHVibGljIGFkZENka1Rlc3REZXBlbmRlbmNpZXMoLi4uZGVwczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy5jZGtEZXBzLmFkZFYxRGV2RGVwZW5kZW5jaWVzKC4uLmRlcHMpO1xuICB9XG59XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgYEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zYCAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RMaWJyYXJ5QXdzT3B0aW9uc1xuICBleHRlbmRzIEF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zIHt9XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgYEF3c0Nka0NvbnN0cnVjdExpYnJhcnlgICovXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0TGlicmFyeUF3cyBleHRlbmRzIEF3c0Nka0NvbnN0cnVjdExpYnJhcnkge31cbiJdfQ==
@@ -19,5 +19,5 @@ class AwsCdkDepsJava extends awscdk_deps_1.AwsCdkDeps {
19
19
  }
20
20
  exports.AwsCdkDepsJava = AwsCdkDepsJava;
21
21
  _a = JSII_RTTI_SYMBOL_1;
22
- AwsCdkDepsJava[_a] = { fqn: "projen.awscdk.AwsCdkDepsJava", version: "0.98.3" };
22
+ AwsCdkDepsJava[_a] = { fqn: "projen.awscdk.AwsCdkDepsJava", version: "0.98.5" };
23
23
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWRlcHMtamF2YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvYXdzY2RrLWRlcHMtamF2YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtDQUErRDtBQUUvRDs7R0FFRztBQUNILE1BQWEsY0FBZSxTQUFRLHdCQUFVO0lBQ2xDLFlBQVk7UUFDcEIsT0FBTztZQUNMLE1BQU0sRUFBRSw2QkFBNkI7WUFDckMsTUFBTSxFQUFFLG9DQUFvQztZQUM1QyxVQUFVLEVBQUUsZ0NBQWdDO1lBQzVDLFVBQVUsRUFBRSxtQ0FBbUM7U0FDaEQsQ0FBQztJQUNKLENBQUM7O0FBUkgsd0NBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBd3NDZGtEZXBzLCBBd3NDZGtQYWNrYWdlTmFtZXMgfSBmcm9tIFwiLi9hd3NjZGstZGVwc1wiO1xuXG4vKipcbiAqIE1hbmFnZXMgZGVwZW5kZW5jaWVzIG9uIHRoZSBBV1MgQ0RLIGZvciBKYXZhIHByb2plY3RzLlxuICovXG5leHBvcnQgY2xhc3MgQXdzQ2RrRGVwc0phdmEgZXh0ZW5kcyBBd3NDZGtEZXBzIHtcbiAgcHJvdGVjdGVkIHBhY2thZ2VOYW1lcygpOiBBd3NDZGtQYWNrYWdlTmFtZXMge1xuICAgIHJldHVybiB7XG4gICAgICBjb3JlVjE6IFwic29mdHdhcmUuYW1hem9uLmF3c2Nkay9jb3JlXCIsXG4gICAgICBjb3JlVjI6IFwic29mdHdhcmUuYW1hem9uLmF3c2Nkay9hd3MtY2RrLWxpYlwiLFxuICAgICAgY29uc3RydWN0czogXCJzb2Z0d2FyZS5jb25zdHJ1Y3RzL2NvbnN0cnVjdHNcIixcbiAgICAgIGFzc2VydGlvbnM6IFwic29mdHdhcmUuYW1hem9uLmF3c2Nkay9hc3NlcnRpb25zXCIsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -20,5 +20,5 @@ class AwsCdkDepsJs extends awscdk_deps_1.AwsCdkDeps {
20
20
  }
21
21
  exports.AwsCdkDepsJs = AwsCdkDepsJs;
22
22
  _a = JSII_RTTI_SYMBOL_1;
23
- AwsCdkDepsJs[_a] = { fqn: "projen.awscdk.AwsCdkDepsJs", version: "0.98.3" };
23
+ AwsCdkDepsJs[_a] = { fqn: "projen.awscdk.AwsCdkDepsJs", version: "0.98.5" };
24
24
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWRlcHMtanMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzY2RrL2F3c2Nkay1kZXBzLWpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0NBQStEO0FBRS9EOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsd0JBQVU7SUFDaEMsWUFBWTtRQUNwQixPQUFPO1lBQ0wsTUFBTSxFQUFFLGVBQWU7WUFDdkIsTUFBTSxFQUFFLGFBQWE7WUFDckIsVUFBVSxFQUFFLFlBQVk7WUFDeEIsTUFBTSxFQUFFLGlCQUFpQjtZQUN6QixVQUFVLEVBQUUscUJBQXFCO1NBQ2xDLENBQUM7SUFDSixDQUFDOztBQVRILG9DQVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXdzQ2RrRGVwcywgQXdzQ2RrUGFja2FnZU5hbWVzIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHNcIjtcblxuLyoqXG4gKiBNYW5hZ2VzIGRlcGVuZGVuY2llcyBvbiB0aGUgQVdTIENESyBmb3IgTm9kZS5qcyBwcm9qZWN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEF3c0Nka0RlcHNKcyBleHRlbmRzIEF3c0Nka0RlcHMge1xuICBwcm90ZWN0ZWQgcGFja2FnZU5hbWVzKCk6IEF3c0Nka1BhY2thZ2VOYW1lcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvcmVWMTogXCJAYXdzLWNkay9jb3JlXCIsXG4gICAgICBjb3JlVjI6IFwiYXdzLWNkay1saWJcIixcbiAgICAgIGNvbnN0cnVjdHM6IFwiY29uc3RydWN0c1wiLFxuICAgICAgYXNzZXJ0OiBcIkBhd3MtY2RrL2Fzc2VydFwiLFxuICAgICAgYXNzZXJ0aW9uczogXCJAYXdzLWNkay9hc3NlcnRpb25zXCIsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -20,5 +20,5 @@ class AwsCdkDepsPy extends awscdk_deps_1.AwsCdkDeps {
20
20
  }
21
21
  exports.AwsCdkDepsPy = AwsCdkDepsPy;
22
22
  _a = JSII_RTTI_SYMBOL_1;
23
- AwsCdkDepsPy[_a] = { fqn: "projen.awscdk.AwsCdkDepsPy", version: "0.98.3" };
23
+ AwsCdkDepsPy[_a] = { fqn: "projen.awscdk.AwsCdkDepsPy", version: "0.98.5" };
24
24
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWRlcHMtcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzY2RrL2F3c2Nkay1kZXBzLXB5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0NBQStEO0FBRS9EOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsd0JBQVU7SUFDaEMsWUFBWTtRQUNwQixPQUFPO1lBQ0wsTUFBTSxFQUFFLGNBQWM7WUFDdEIsTUFBTSxFQUFFLGFBQWE7WUFDckIsVUFBVSxFQUFFLFlBQVk7WUFDeEIsTUFBTSxFQUFFLGdCQUFnQjtZQUN4QixVQUFVLEVBQUUsb0JBQW9CO1NBQ2pDLENBQUM7SUFDSixDQUFDOztBQVRILG9DQVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXdzQ2RrRGVwcywgQXdzQ2RrUGFja2FnZU5hbWVzIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHNcIjtcblxuLyoqXG4gKiBNYW5hZ2VzIGRlcGVuZGVuY2llcyBvbiB0aGUgQVdTIENESyBmb3IgUHl0aG9uIHByb2plY3RzLlxuICovXG5leHBvcnQgY2xhc3MgQXdzQ2RrRGVwc1B5IGV4dGVuZHMgQXdzQ2RrRGVwcyB7XG4gIHByb3RlY3RlZCBwYWNrYWdlTmFtZXMoKTogQXdzQ2RrUGFja2FnZU5hbWVzIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29yZVYxOiBcImF3c19jZGsuY29yZVwiLFxuICAgICAgY29yZVYyOiBcImF3cy1jZGstbGliXCIsXG4gICAgICBjb25zdHJ1Y3RzOiBcImNvbnN0cnVjdHNcIixcbiAgICAgIGFzc2VydDogXCJhd3NfY2RrLmFzc2VydFwiLFxuICAgICAgYXNzZXJ0aW9uczogXCJhd3NfY2RrLmFzc2VydGlvbnNcIixcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -160,7 +160,7 @@ class AwsCdkDeps extends component_1.Component {
160
160
  }
161
161
  exports.AwsCdkDeps = AwsCdkDeps;
162
162
  _a = JSII_RTTI_SYMBOL_1;
163
- AwsCdkDeps[_a] = { fqn: "projen.awscdk.AwsCdkDeps", version: "0.98.3" };
163
+ AwsCdkDeps[_a] = { fqn: "projen.awscdk.AwsCdkDeps", version: "0.98.5" };
164
164
  /**
165
165
  * Which AWS CDK version a construct library package belongs to.
166
166
  */
@@ -19,7 +19,7 @@ class CdkFeatureFlagsV1 {
19
19
  }
20
20
  exports.CdkFeatureFlagsV1 = CdkFeatureFlagsV1;
21
21
  _a = JSII_RTTI_SYMBOL_1;
22
- CdkFeatureFlagsV1[_a] = { fqn: "projen.awscdk.CdkFeatureFlagsV1", version: "0.98.3" };
22
+ CdkFeatureFlagsV1[_a] = { fqn: "projen.awscdk.CdkFeatureFlagsV1", version: "0.98.5" };
23
23
  /**
24
24
  * Disable all feature flags.
25
25
  */
@@ -55,7 +55,7 @@ class CdkFeatureFlagsV2 {
55
55
  }
56
56
  exports.CdkFeatureFlagsV2 = CdkFeatureFlagsV2;
57
57
  _b = JSII_RTTI_SYMBOL_1;
58
- CdkFeatureFlagsV2[_b] = { fqn: "projen.awscdk.CdkFeatureFlagsV2", version: "0.98.3" };
58
+ CdkFeatureFlagsV2[_b] = { fqn: "projen.awscdk.CdkFeatureFlagsV2", version: "0.98.5" };
59
59
  /**
60
60
  * Disable all feature flags.
61
61
  */
@@ -79,7 +79,7 @@ class CdkFeatureFlags {
79
79
  }
80
80
  exports.CdkFeatureFlags = CdkFeatureFlags;
81
81
  _c = JSII_RTTI_SYMBOL_1;
82
- CdkFeatureFlags[_c] = { fqn: "projen.awscdk.CdkFeatureFlags", version: "0.98.3" };
82
+ CdkFeatureFlags[_c] = { fqn: "projen.awscdk.CdkFeatureFlags", version: "0.98.5" };
83
83
  /**
84
84
  * CDK V1 feature flags configuration.
85
85
  * @deprecated CDK V1 is EOS. Upgrade to CDK V2.
@@ -156,7 +156,7 @@ class CdkConfig extends component_1.Component {
156
156
  }
157
157
  exports.CdkConfig = CdkConfig;
158
158
  _d = JSII_RTTI_SYMBOL_1;
159
- CdkConfig[_d] = { fqn: "projen.awscdk.CdkConfig", version: "0.98.3" };
159
+ CdkConfig[_d] = { fqn: "projen.awscdk.CdkConfig", version: "0.98.5" };
160
160
  /**
161
161
  * Which approval is required when deploying CDK apps.
162
162
  */