@macedon-technologies/batman 1.29.0 → 1.30.0
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.
- package/.jsii +17 -95
- package/API.md +0 -268
- package/README.md +46 -0
- package/build-tools/scan-generated-workflows.ts +0 -1
- package/lib/ApiConstructFile.js +2 -20
- package/lib/Application.d.ts +0 -1
- package/lib/Application.js +4 -9
- package/lib/BaseApplicationStackFile.js +13 -9
- package/lib/BatmanProject.d.ts +0 -4
- package/lib/BatmanProject.js +2 -3
- package/lib/BootcampApplication.d.ts +0 -6
- package/lib/BootcampApplication.js +1 -8
- package/lib/BootcampBaseApplicationStackFile.js +1 -9
- package/lib/BootcampProject.js +2 -3
- package/lib/CodeOwnersFile.js +1 -1
- package/lib/LocalDevAppFile.js +1 -2
- package/lib/MainFile.d.ts +0 -1
- package/lib/MainFile.js +1 -4
- package/lib/ProductionDeployWorkflow.js +1 -1
- package/lib/SoftwareFactoryFiles.js +1 -1
- package/lib/StagingDeployWorkflow.js +1 -1
- package/lib/index.d.ts +0 -1
- package/lib/index.js +1 -2
- package/lib/utils.js +3 -3
- package/package.json +1 -1
- package/lib/WorkflowAutoDiscover.d.ts +0 -6
- package/lib/WorkflowAutoDiscover.js +0 -104
- package/lib/WorkflowProvider.d.ts +0 -5
- package/lib/WorkflowProvider.js +0 -308
package/lib/BootcampProject.js
CHANGED
|
@@ -12,7 +12,7 @@ const SoftwareFactoryFiles_1 = require("./SoftwareFactoryFiles");
|
|
|
12
12
|
const utils_1 = require("./utils");
|
|
13
13
|
const ViteReactProject_1 = require("./ViteReactProject");
|
|
14
14
|
class BootcampProject extends awscdk_1.AwsCdkTypeScriptApp {
|
|
15
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.BootcampProject", version: "1.
|
|
15
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.BootcampProject", version: "1.30.0" };
|
|
16
16
|
constructor(options) {
|
|
17
17
|
super({
|
|
18
18
|
...options,
|
|
@@ -85,7 +85,6 @@ class BootcampProject extends awscdk_1.AwsCdkTypeScriptApp {
|
|
|
85
85
|
...options.dev,
|
|
86
86
|
},
|
|
87
87
|
additionalTags: options.additionalTags,
|
|
88
|
-
n8nWorkflows: options.n8nWorkflows,
|
|
89
88
|
actionVersions: options.actionVersions,
|
|
90
89
|
e2eTesting: options.e2eTesting,
|
|
91
90
|
});
|
|
@@ -126,4 +125,4 @@ class BootcampProject extends awscdk_1.AwsCdkTypeScriptApp {
|
|
|
126
125
|
}
|
|
127
126
|
}
|
|
128
127
|
exports.BootcampProject = BootcampProject;
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQm9vdGNhbXBQcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Jvb3RjYW1wUHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsOENBQXdEO0FBQ3hELDhDQUFzRDtBQUV0RCwrREFBNEQ7QUFDNUQscURBQWtEO0FBQ2xELDJEQUF3RDtBQUN4RCx1REFBb0Q7QUFDcEQsaUVBQThEO0FBQzlELG1DQUF5QztBQUN6Qyx5REFBc0Q7QUFPdEQsTUFBYSxlQUFnQixTQUFRLDRCQUFtQjs7SUFDdEQsWUFBWSxPQUErQjtRQUN6QyxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxTQUFTO1lBQzNDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxNQUFNO1lBQzVELElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixVQUFVLEVBQUUsSUFBSTtZQUNoQixhQUFhLEVBQUUsS0FBSztZQUNwQixJQUFJLEVBQUU7Z0JBQ0osbUJBQW1CO2dCQUNuQixnQkFBZ0I7Z0JBQ2hCLFdBQVc7Z0JBQ1gsSUFBSTtnQkFDSixxQkFBcUI7Z0JBQ3JCLDJCQUEyQjtnQkFDM0IsMEJBQTBCO2dCQUMxQixtQ0FBbUM7Z0JBQ25DLGNBQWM7Z0JBQ2QsaUNBQWlDO2dCQUNqQyxTQUFTO2dCQUNULGlCQUFpQjtnQkFDakIsYUFBYTtnQkFDYixHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRTthQUN0QjtZQUNELE9BQU8sRUFBRTtnQkFDUCxxQkFBcUI7Z0JBQ3JCLFNBQVM7Z0JBQ1QsY0FBYztnQkFDZCxxQ0FBcUM7Z0JBQ3JDLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFO2FBQ3pCO1lBQ0QsU0FBUyxFQUFFO2dCQUNULG1EQUFtRDtnQkFDbkQsY0FBYztnQkFDZCxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRTthQUMzQjtZQUNELFFBQVEs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QWtHLEVBQ2xHLFNBQVMsQ0FBQyxVQUFVLENBQ3JCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDdEIsSUFBSSxFQUFFLDJFQUEyRTtZQUNqRixXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUM7SUFHTCxDQUFDOztBQTlISCwwQ0ErSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBd3NDZGtUeXBlU2NyaXB0QXBwIH0gZnJvbSAncHJvamVuL2xpYi9hd3NjZGsnO1xuaW1wb3J0IHsgR2l0aHViQ3JlZGVudGlhbHMgfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yic7XG5pbXBvcnQgeyBCYXRtYW5Qcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4vQmF0bWFuUHJvamVjdCc7XG5pbXBvcnQgeyBCb290Y2FtcEFwcGxpY2F0aW9uIH0gZnJvbSAnLi9Cb290Y2FtcEFwcGxpY2F0aW9uJztcbmltcG9ydCB7IENvZGVPd25lcnNGaWxlIH0gZnJvbSAnLi9Db2RlT3duZXJzRmlsZSc7XG5pbXBvcnQgeyBEYXRhRG9nQXNwZWN0RmlsZSB9IGZyb20gJy4vRGF0YURvZ0FzcGVjdEZpbGUnO1xuaW1wb3J0IHsgR2l0SHViUm9sZXNGaWxlIH0gZnJvbSAnLi9HaXRIdWJSb2xlc0ZpbGUnO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5RmlsZXMgfSBmcm9tICcuL1NvZnR3YXJlRmFjdG9yeUZpbGVzJztcbmltcG9ydCB7IHJlYWRtZUNvbnRlbnRzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBWaXRlUmVhY3RQcm9qZWN0IH0gZnJvbSAnLi9WaXRlUmVhY3RQcm9qZWN0JztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RjYW1wUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBCYXRtYW5Qcm9qZWN0T3B0aW9ucyB7XG5cbn1cblxuZXhwb3J0IGNsYXNzIEJvb3RjYW1wUHJvamVjdCBleHRlbmRzIEF3c0Nka1R5cGVTY3JpcHRBcHAge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBCb290Y2FtcFByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGNka1ZlcnNpb246IG9wdGlvbnMuY2RrVmVyc2lvbiB8fCAnMi4yMjQuMCcsXG4gICAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogb3B0aW9ucy5kZWZhdWx0UmVsZWFzZUJyYW5jaCB8fCAnbWFpbicsXG4gICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICBwcm9qZW5yY1RzOiB0cnVlLFxuICAgICAgYnVpbGRXb3JrZmxvdzogZmFsc2UsXG4gICAgICBkZXBzOiBbXG4gICAgICAgICdAdHlwZXMvYXdzLWxhbWJkYScsXG4gICAgICAgICdAdHlwZXMvZXhwcmVzcycsXG4gICAgICAgICdAdHlwZXMvcGcnLFxuICAgICAgICAncGcnLFxuICAgICAgICAnQGF3cy1zZGsvcmRzLXNpZ25lcicsXG4gICAgICAgICdkYXRhZG9nLWNkay1jb25zdHJ1Y3RzLXYyJyxcbiAgICAgICAgJ0BjZGtsYWJzL2F3cy1sYW1iZGEtcnVzdCcsXG4gICAgICAgICdAYXdzLWxhbWJkYS1wb3dlcnRvb2xzL3BhcmFtZXRlcnMnLFxuICAgICAgICAnanNvbndlYnRva2VuJyxcbiAgICAgICAgJ0Bhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXInLFxuICAgICAgICAnZXhwcmVzcycsXG4gICAgICAgICdzZXJ2ZXJsZXNzLWh0dHAnLFxuICAgICAgICAnY2RrLXJkcy1zcWwnLFxuICAgICAgICAuLi5vcHRpb25zLmRlcHMgfHwgW10sXG4gICAgICBdLFxuICAgICAgZGV2RGVwczogW1xuICAgICAgICAnQHR5cGVzL2pzb253ZWJ0b2tlbicsXG4gICAgICAgICdub2RlbW9uJyxcbiAgICAgICAgJ2NvbmN1cnJlbnRseScsXG4gICAgICAgICdAbWFjZWRvbi10ZWNobm9sb2dpZXMvYmF0bWFuQF4xLjAuMCcsXG4gICAgICAgIC4uLm9wdGlvbnMuZGV2RGVwcyB8fCBbXSxcbiAgICAgIF0sXG4gICAgICBnaXRpZ25vcmU6IFtcbiAgICAgICAgJ3NyYy9jb25zdHJ1Y3RzL2hhbmRsZXIvY2xlcmstYXV0aG9yaXplci90YXJnZXQvKionLFxuICAgICAgICAnKiovLkRTX1N0b3JlJyxcbiAgICAgICAgLi4ub3B0aW9ucy5naXRpZ25vcmUgfHwgW10sXG4gICAgICBdLFxuICAgICAgdHNjb25maWc6IHtcbiAgICAgICAgLi4ub3B0aW9ucy50c2NvbmZpZyxcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgLi4ub3B0aW9ucy50c2NvbmZpZz8uY29tcGlsZXJPcHRpb25zLFxuICAgICAgICAgIGlzb2xhdGVkTW9kdWxlczogdHJ1ZSxcbiAgICAgICAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcbiAgICAgIG1pbk5vZGVWZXJzaW9uOiBvcHRpb25zLm1pbk5vZGVWZXJzaW9uIHx8ICcyMicsXG4gICAgICBkZXBzVXBncmFkZU9wdGlvbnM6IHtcbiAgICAgICAgd29ya2Zsb3dPcHRpb25zOiB7XG4gICAgICAgICAgcHJvamVuQ3JlZGVudGlhbHM6IEdpdGh1YkNyZWRlbnRpYWxzLmZyb21QZXJzb25hbEFjY2Vzc1Rva2VuKHtcbiAgICAgICAgICAgIHNlY3JldDogJ0dJVEhVQl9UT0tFTicsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcmVhZG1lOiB7XG4gICAgICAgIGNvbnRlbnRzOiByZWFkbWVDb250ZW50cyhvcHRpb25zLm5hbWUsIG9wdGlvbnMuZTJlVGVzdGluZyA/PyB0cnVlLCBvcHRpb25zLnBhY2thZ2VNYW5hZ2VyKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cblxuICAgIC8vIENyZWF0ZSBzdGFuZGFyZCBwcm9qZWN0IGZpbGVzXG4gICAgY29uc3QgUFJJTUFSWV9BQ0NPVU5UID0gJzAxNTk1NTgxNzI2Myc7XG4gICAgY29uc3QgUFJJTUFSWV9SRUdJT04gPSAndXMtZWFzdC0xJztcblxuICAgIG5ldyBCb290Y2FtcEFwcGxpY2F0aW9uKHRoaXMsIHtcbiAgICAgIGdpdGh1YlJlcG9zaXRvcnk6IGBtYWNlZG9uLXRlY2hub2xvZ2llcy8ke29wdGlvbnMubmFtZX1gLFxuICAgICAgZGV2OiB7XG4gICAgICAgIC4uLm9wdGlvbnMuZGV2LFxuICAgICAgfSxcbiAgICAgIHN0YWdpbmc6IHtcbiAgICAgICAgLi4ub3B0aW9ucy5zdGFnaW5nLFxuICAgICAgfSxcbiAgICAgIHByb2Q6IHtcbiAgICAgICAgLi4ub3B0aW9ucy5kZXYsXG4gICAgICB9LFxuICAgICAgYWRkaXRpb25hbFRhZ3M6IG9wdGlvbnMuYWRkaXRpb25hbFRhZ3MsXG4gICAgICBhY3Rpb25WZXJzaW9uczogb3B0aW9ucy5hY3Rpb25WZXJzaW9ucyxcbiAgICAgIGUyZVRlc3Rpbmc6IG9wdGlvbnMuZTJlVGVzdGluZyxcbiAgICB9KTtcblxuICAgIG5ldyBHaXRIdWJSb2xlc0ZpbGUodGhpcywge1xuICAgICAgYWNjb3VudDogUFJJTUFSWV9BQ0NPVU5ULFxuICAgICAgcHJpbWFyeVJlZ2lvbjogUFJJTUFSWV9SRUdJT04sXG4gICAgfSk7XG5cbiAgICBuZXcgQ29kZU93bmVyc0ZpbGUodGhpcywge1xuICAgICAgYWRkaXRpb25hbE93bmVyczogb3B0aW9ucy5hZGRpdGlvbmFsQ29kZU93bmVycyxcbiAgICB9KTtcblxuICAgIG5ldyBEYXRhRG9nQXNwZWN0RmlsZSh0aGlzKTtcblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlGaWxlcyh0aGlzLCB7XG4gICAgICByZXBvTmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgYmFzZUJyYW5jaDogb3B0aW9ucy5kZWZhdWx0UmVsZWFzZUJyYW5jaCxcbiAgICAgIGFjdGlvblZlcnNpb25zOiBvcHRpb25zLmFjdGlvblZlcnNpb25zLFxuICAgICAgYXR0ZXN0YXRpb25GaWxlczogb3B0aW9ucy5hdHRlc3RhdGlvbkZpbGVzLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgdml0ZVJlYWN0ID0gbmV3IFZpdGVSZWFjdFByb2plY3Qoe1xuICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6ICdtYWluJyxcbiAgICAgIHBhcmVudDogdGhpcyxcbiAgICAgIG91dGRpcjogJ3dlYicsXG4gICAgICBkZXBzOiBvcHRpb25zLndlYnNpdGVEZXBzLFxuICAgICAgZTJlVGVzdGluZzogb3B0aW9ucy5lMmVUZXN0aW5nLFxuICAgIH0pO1xuICAgIHZpdGVSZWFjdC5hZGRDb25maWdGaWVsZCgnc29tZXRoaW5nJywgJ251bWJlcicpO1xuICAgIHZpdGVSZWFjdC5hZGRDb25maWdGaWVsZCgnc29tZXRoaW5nRWxzZScsICdzdHJpbmcnKTtcblxuICAgIGNvbnN0IGNvbmN1cnJlbnRseSA9ICguLi5hcmdzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgcmV0dXJuIGBjb25jdXJyZW50bHkgJHthcmdzLm1hcChhID0+IGBcIiR7YX1cImApLmpvaW4oJyAnKX1gO1xuICAgIH07XG5cbiAgICB0aGlzLmFkZFRhc2soJ2RldicsIHtcbiAgICAgIGV4ZWM6IGNvbmN1cnJlbnRseShcbiAgICAgICAgJ25vZGVtb24gLS13YXRjaCAuL3NyYy9jb25zdHJ1Y3RzL2hhbmRsZXIgLS13YXRjaCAuL3NyYy9hcGkgLS13YXRjaCAuL2xvY2FsL2Rldi50cyAuL2xvY2FsL2Rldi50cycsXG4gICAgICAgIHZpdGVSZWFjdC5kZXZDb21tYW5kLFxuICAgICAgKSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkVGFzaygnY2RrOmRldicsIHtcbiAgICAgIGV4ZWM6ICdjZGsgLWEgXCJucHggdHMtbm9kZSAtUCB0c2NvbmZpZy5qc29uIC0tcHJlZmVyLXRzLWV4dHMgc3JjL0xvY2FsRGV2QXBwLnRzXCInLFxuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgfSk7XG5cblxuICB9XG59XG4iXX0=
|
package/lib/CodeOwnersFile.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.CodeOwnersFile = void 0;
|
|
|
4
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
5
|
const projen_1 = require("projen");
|
|
6
6
|
class CodeOwnersFile extends projen_1.TextFile {
|
|
7
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.CodeOwnersFile", version: "1.
|
|
7
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.CodeOwnersFile", version: "1.30.0" };
|
|
8
8
|
constructor(project, options = {}) {
|
|
9
9
|
const defaultOwners = ['* @macedon-technologies/platform', '* @macedon-technologies/ai-development-team'];
|
|
10
10
|
const allOwners = [...defaultOwners, ...(options.additionalOwners || [])];
|
package/lib/LocalDevAppFile.js
CHANGED
|
@@ -24,7 +24,6 @@ new ApplicationStack(app, \`${options.projectName}-dev-\${context}\`, {
|
|
|
24
24
|
hostname: context, // there should be a way to block anon-dev...
|
|
25
25
|
datadogSecretArn: '${options.dev.datadogSecretArn}',
|
|
26
26
|
clerkJwksUrl: '${options.dev.clerkJwksUrl}',
|
|
27
|
-
n8nEndpoint: '${options.dev.n8nEndpoint}',
|
|
28
27
|
${options.dev.additionalStackProps ? Object.entries(options.dev.additionalStackProps).map(([key, value]) => `${key}: ${(0, utils_1.serializeTs)(value)},`).join('\n ') : ''}
|
|
29
28
|
});
|
|
30
29
|
app.synth();
|
|
@@ -34,4 +33,4 @@ app.synth();
|
|
|
34
33
|
}
|
|
35
34
|
}
|
|
36
35
|
exports.LocalDevAppFile = LocalDevAppFile;
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxEZXZBcHBGaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0xvY2FsRGV2QXBwRmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBb0Q7QUFHcEQsbUNBQXNDO0FBT3RDLE1BQWEsZUFBZ0IsU0FBUSxtQkFBVTtJQUM3QyxZQUFZLE9BQTRCLEVBQUUsT0FBK0I7UUFDdkUsS0FBSyxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRTtZQUNuQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs4QkFTYyxPQUFPLENBQUMsV0FBVzs7Z0JBRWpDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTztlQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU07OzJCQUVOLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9COzt1QkFFcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0I7bUJBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWTtJQUN2QyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEtBQUssSUFBQSxtQkFBVyxFQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7OztDQUdoSztTQUNJLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSx1QkFBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRjtBQTVCRCwwQ0E0QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXBlbmRlbmN5VHlwZSwgU2FtcGxlRmlsZSB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBBd3NDZGtUeXBlU2NyaXB0QXBwIH0gZnJvbSAncHJvamVuL2xpYi9hd3NjZGsnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRDb25maWcgfSBmcm9tICcuL01haW5GaWxlJztcbmltcG9ydCB7IHNlcmlhbGl6ZVRzIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxEZXZBcHBGaWxlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHByb2plY3ROYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRldjogRW52aXJvbm1lbnRDb25maWc7XG59XG5cbmV4cG9ydCBjbGFzcyBMb2NhbERldkFwcEZpbGUgZXh0ZW5kcyBTYW1wbGVGaWxlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCwgb3B0aW9uczogTG9jYWxEZXZBcHBGaWxlT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QsICdzcmMvTG9jYWxEZXZBcHAudHMnLCB7XG4gICAgICBjb250ZW50czogYGltcG9ydCB7IEFwcCB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uU3RhY2sgfSBmcm9tICcuL3N0YWNrcy9BcHBsaWNhdGlvblN0YWNrJztcblxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuXG5sZXQgY29udGV4dCA9IGFwcC5ub2RlLnRyeUdldENvbnRleHQoJ2xvY2FsLWRldi1wcmVmaXgnKTtcbmlmICghY29udGV4dCkge1xuICB0aHJvdyBuZXcgRXJyb3IoXCJDb250ZXh0IHZhcmlhYmxlICdsb2NhbC1kZXYtcHJlZml4JyBpcyByZXF1aXJlZCBmb3IgbG9jYWwgZGV2ZWxvcG1lbnQgc3RhY2suIFByb3ZpZGUgaXQgbGlrZTogXFxgeWFybiBjZGs6ZGV2IC0tY29udGV4dCBsb2NhbC1kZXYtcHJlZml4PXlvdXItaGFuZGxlIGRpZmZcXGBcIik7XG59XG5uZXcgQXBwbGljYXRpb25TdGFjayhhcHAsIFxcYCR7b3B0aW9ucy5wcm9qZWN0TmFtZX0tZGV2LVxcJHtjb250ZXh0fVxcYCwge1xuICBlbnY6IHtcbiAgICBhY2NvdW50OiAnJHtvcHRpb25zLmRldi5hY2NvdW50fScsXG4gICAgcmVnaW9uOiAnJHtvcHRpb25zLmRldi5yZWdpb259JyxcbiAgfSxcbiAgaG9zdGVkWm9uZURvbWFpbk5hbWU6ICcke29wdGlvbnMuZGV2Lmhvc3RlZFpvbmVEb21haW5OYW1lfScsXG4gIGhvc3RuYW1lOiBjb250ZXh0LCAvLyB0aGVyZSBzaG91bGQgYmUgYSB3YXkgdG8gYmxvY2sgYW5vbi1kZXYuLi5cbiAgZGF0YWRvZ1NlY3JldEFybjogJyR7b3B0aW9ucy5kZXYuZGF0YWRvZ1NlY3JldEFybn0nLFxuICBjbGVya0p3a3NVcmw6ICcke29wdGlvbnMuZGV2LmNsZXJrSndrc1VybH0nLFxuICAke29wdGlvbnMuZGV2LmFkZGl0aW9uYWxTdGFja1Byb3BzID8gT2JqZWN0LmVudHJpZXMob3B0aW9ucy5kZXYuYWRkaXRpb25hbFN0YWNrUHJvcHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9OiAke3NlcmlhbGl6ZVRzKHZhbHVlKX0sYCkuam9pbignXFxuICAnKSA6ICcnfVxufSk7XG5hcHAuc3ludGgoKTtcbmAsXG4gICAgfSk7XG4gICAgcHJvamVjdC5kZXBzLmFkZERlcGVuZGVuY3koJ2RvdGVudicsIERlcGVuZGVuY3lUeXBlLkRFVkVOVik7XG4gIH1cbn1cbiJdfQ==
|
package/lib/MainFile.d.ts
CHANGED
package/lib/MainFile.js
CHANGED
|
@@ -20,7 +20,6 @@ const devStack = new ApplicationStack(app, '${options.projectName}-dev', {
|
|
|
20
20
|
hostname: '${options.dev.hostname}',
|
|
21
21
|
datadogSecretArn: '${options.dev.datadogSecretArn}',
|
|
22
22
|
clerkJwksUrl: '${options.dev.clerkJwksUrl}',
|
|
23
|
-
n8nEndpoint: '${options.dev.n8nEndpoint}',
|
|
24
23
|
${options.dev.additionalStackProps ? Object.entries(options.dev.additionalStackProps).map(([key, value]) => `${key}: ${(0, utils_1.serializeTs)(value)},`).join('\n ') : ''}
|
|
25
24
|
});
|
|
26
25
|
Tags.of(devStack).add('client', '${options.projectName}');
|
|
@@ -36,7 +35,6 @@ const stagingStack = new ApplicationStack(app, '${options.projectName}-staging',
|
|
|
36
35
|
hostname: '${options.staging.hostname}',
|
|
37
36
|
datadogSecretArn: '${options.staging.datadogSecretArn}',
|
|
38
37
|
clerkJwksUrl: '${options.staging.clerkJwksUrl}',
|
|
39
|
-
n8nEndpoint: '${options.staging.n8nEndpoint}',
|
|
40
38
|
${options.staging.additionalStackProps ? Object.entries(options.staging.additionalStackProps).map(([key, value]) => `${key}: ${(0, utils_1.serializeTs)(value)},`).join('\n ') : ''}
|
|
41
39
|
});
|
|
42
40
|
Tags.of(stagingStack).add('client', '${options.projectName}');
|
|
@@ -52,7 +50,6 @@ const prodStack = new ApplicationStack(app, '${options.projectName}-prod', {
|
|
|
52
50
|
hostname: '${options.prod.hostname}',
|
|
53
51
|
datadogSecretArn: '${options.prod.datadogSecretArn}',
|
|
54
52
|
clerkJwksUrl: '${options.prod.clerkJwksUrl}',
|
|
55
|
-
n8nEndpoint: '${options.prod.n8nEndpoint}',
|
|
56
53
|
${options.prod.additionalStackProps ? Object.entries(options.prod.additionalStackProps).map(([key, value]) => `${key}: ${(0, utils_1.serializeTs)(value)},`).join('\n ') : ''}
|
|
57
54
|
});
|
|
58
55
|
Tags.of(prodStack).add('client', '${options.projectName}');
|
|
@@ -65,4 +62,4 @@ app.synth();
|
|
|
65
62
|
}
|
|
66
63
|
}
|
|
67
64
|
exports.MainFile = MainFile;
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFpbkZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvTWFpbkZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW9DO0FBRXBDLG1DQUFzQztBQXFCdEMsTUFBYSxRQUFTLFNBQVEsbUJBQVU7SUFDdEMsWUFBWSxPQUE0QixFQUFFLE9BQXdCO1FBQ2hFLEtBQUssQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFO1lBQzVCLFFBQVEsRUFBRTs7Ozs7OENBSzhCLE9BQU8sQ0FBQyxXQUFXOztnQkFFakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPO2VBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTTs7MkJBRU4sT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0I7ZUFDNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRO3VCQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCO21CQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVk7SUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxLQUFLLElBQUEsbUJBQVcsRUFBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFOzttQ0FFOUgsT0FBTyxDQUFDLFdBQVc7O0VBRXBELE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQywwQkFBMEIsR0FBRyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFOztrREFFckcsT0FBTyxDQUFDLFdBQVc7O2dCQUVyRCxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU87ZUFDeEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNOzsyQkFFVixPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQjtlQUNoRCxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVE7dUJBQ2hCLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCO21CQUNwQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVk7SUFDM0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxLQUFLLElBQUEsbUJBQVcsRUFBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFOzt1Q0FFbEksT0FBTyxDQUFDLFdBQVc7O0VBRXhELE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyw4QkFBOEIsR0FBRyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFOzsrQ0FFNUcsT0FBTyxDQUFDLFdBQVc7O2dCQUVsRCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU87ZUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNOzsyQkFFUCxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQjtlQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVE7dUJBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7bUJBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWTtJQUN4QyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEtBQUssSUFBQSxtQkFBVyxFQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7O29DQUUvSCxPQUFPLENBQUMsV0FBVzs7RUFFckQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLDJCQUEyQixHQUFHLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7OztDQUd2SjtTQUNJLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXpERCw0QkF5REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYW1wbGVGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEF3c0Nka1R5cGVTY3JpcHRBcHAgfSBmcm9tICdwcm9qZW4vbGliL2F3c2Nkayc7XG5pbXBvcnQgeyBzZXJpYWxpemVUcyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50Q29uZmlnIHtcbiAgcmVhZG9ubHkgaG9zdGVkWm9uZURvbWFpbk5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgaG9zdG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGF0YWRvZ1NlY3JldEFybjogc3RyaW5nO1xuICByZWFkb25seSBjbGVya0p3a3NVcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcbiAgcmVhZG9ubHkgY2xlcmtQdWJsaXNoYWJsZUtleTogc3RyaW5nO1xuICByZWFkb25seSBhZGRpdGlvbmFsU3RhY2tQcm9wcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFpbkZpbGVPcHRpb25zIHtcbiAgcmVhZG9ubHkgcHJvamVjdE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGV2OiBFbnZpcm9ubWVudENvbmZpZztcbiAgcmVhZG9ubHkgc3RhZ2luZzogRW52aXJvbm1lbnRDb25maWc7XG4gIHJlYWRvbmx5IHByb2Q6IEVudmlyb25tZW50Q29uZmlnO1xuICByZWFkb25seSBhZGRpdGlvbmFsVGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBjbGFzcyBNYWluRmlsZSBleHRlbmRzIFNhbXBsZUZpbGUge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBBd3NDZGtUeXBlU2NyaXB0QXBwLCBvcHRpb25zOiBNYWluRmlsZU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCAnc3JjL21haW4udHMnLCB7XG4gICAgICBjb250ZW50czogYGltcG9ydCB7IEFwcCwgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uU3RhY2sgfSBmcm9tICcuL3N0YWNrcy9BcHBsaWNhdGlvblN0YWNrJztcblxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuXG5jb25zdCBkZXZTdGFjayA9IG5ldyBBcHBsaWNhdGlvblN0YWNrKGFwcCwgJyR7b3B0aW9ucy5wcm9qZWN0TmFtZX0tZGV2Jywge1xuICBlbnY6IHtcbiAgICBhY2NvdW50OiAnJHtvcHRpb25zLmRldi5hY2NvdW50fScsXG4gICAgcmVnaW9uOiAnJHtvcHRpb25zLmRldi5yZWdpb259JyxcbiAgfSxcbiAgaG9zdGVkWm9uZURvbWFpbk5hbWU6ICcke29wdGlvbnMuZGV2Lmhvc3RlZFpvbmVEb21haW5OYW1lfScsXG4gIGhvc3RuYW1lOiAnJHtvcHRpb25zLmRldi5ob3N0bmFtZX0nLFxuICBkYXRhZG9nU2VjcmV0QXJuOiAnJHtvcHRpb25zLmRldi5kYXRhZG9nU2VjcmV0QXJufScsXG4gIGNsZXJrSndrc1VybDogJyR7b3B0aW9ucy5kZXYuY2xlcmtKd2tzVXJsfScsXG4gICR7b3B0aW9ucy5kZXYuYWRkaXRpb25hbFN0YWNrUHJvcHMgPyBPYmplY3QuZW50cmllcyhvcHRpb25zLmRldi5hZGRpdGlvbmFsU3RhY2tQcm9wcykubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX06ICR7c2VyaWFsaXplVHModmFsdWUpfSxgKS5qb2luKCdcXG4gICcpIDogJyd9XG59KTtcblRhZ3Mub2YoZGV2U3RhY2spLmFkZCgnY2xpZW50JywgJyR7b3B0aW9ucy5wcm9qZWN0TmFtZX0nKTtcblRhZ3Mub2YoZGV2U3RhY2spLmFkZCgnZW52JywgJ2RldicpO1xuJHtvcHRpb25zLmFkZGl0aW9uYWxUYWdzID8gT2JqZWN0LmVudHJpZXMob3B0aW9ucy5hZGRpdGlvbmFsVGFncykubWFwKChba2V5LCB2YWx1ZV0pID0+IGBUYWdzLm9mKGRldlN0YWNrKS5hZGQoJyR7a2V5fScsICcke3ZhbHVlfScpO2ApLmpvaW4oJ1xcbicpIDogJyd9XG5cbmNvbnN0IHN0YWdpbmdTdGFjayA9IG5ldyBBcHBsaWNhdGlvblN0YWNrKGFwcCwgJyR7b3B0aW9ucy5wcm9qZWN0TmFtZX0tc3RhZ2luZycsIHtcbiAgZW52OiB7XG4gICAgYWNjb3VudDogJyR7b3B0aW9ucy5zdGFnaW5nLmFjY291bnR9JyxcbiAgICByZWdpb246ICcke29wdGlvbnMuc3RhZ2luZy5yZWdpb259JyxcbiAgfSxcbiAgaG9zdGVkWm9uZURvbWFpbk5hbWU6ICcke29wdGlvbnMuc3RhZ2luZy5ob3N0ZWRab25lRG9tYWluTmFtZX0nLFxuICBob3N0bmFtZTogJyR7b3B0aW9ucy5zdGFnaW5nLmhvc3RuYW1lfScsXG4gIGRhdGFkb2dTZWNyZXRBcm46ICcke29wdGlvbnMuc3RhZ2luZy5kYXRhZG9nU2VjcmV0QXJufScsXG4gIGNsZXJrSndrc1VybDogJyR7b3B0aW9ucy5zdGFnaW5nLmNsZXJrSndrc1VybH0nLFxuICAke29wdGlvbnMuc3RhZ2luZy5hZGRpdGlvbmFsU3RhY2tQcm9wcyA/IE9iamVjdC5lbnRyaWVzKG9wdGlvbnMuc3RhZ2luZy5hZGRpdGlvbmFsU3RhY2tQcm9wcykubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX06ICR7c2VyaWFsaXplVHModmFsdWUpfSxgKS5qb2luKCdcXG4gICcpIDogJyd9XG59KTtcblRhZ3Mub2Yoc3RhZ2luZ1N0YWNrKS5hZGQoJ2NsaWVudCcsICcke29wdGlvbnMucHJvamVjdE5hbWV9Jyk7XG5UYWdzLm9mKHN0YWdpbmdTdGFjaykuYWRkKCdlbnYnLCAnc3RhZ2luZycpO1xuJHtvcHRpb25zLmFkZGl0aW9uYWxUYWdzID8gT2JqZWN0LmVudHJpZXMob3B0aW9ucy5hZGRpdGlvbmFsVGFncykubWFwKChba2V5LCB2YWx1ZV0pID0+IGBUYWdzLm9mKHN0YWdpbmdTdGFjaykuYWRkKCcke2tleX0nLCAnJHt2YWx1ZX0nKTtgKS5qb2luKCdcXG4nKSA6ICcnfVxuXG5jb25zdCBwcm9kU3RhY2sgPSBuZXcgQXBwbGljYXRpb25TdGFjayhhcHAsICcke29wdGlvbnMucHJvamVjdE5hbWV9LXByb2QnLCB7XG4gIGVudjoge1xuICAgIGFjY291bnQ6ICcke29wdGlvbnMucHJvZC5hY2NvdW50fScsXG4gICAgcmVnaW9uOiAnJHtvcHRpb25zLnByb2QucmVnaW9ufScsXG4gIH0sXG4gIGhvc3RlZFpvbmVEb21haW5OYW1lOiAnJHtvcHRpb25zLnByb2QuaG9zdGVkWm9uZURvbWFpbk5hbWV9JyxcbiAgaG9zdG5hbWU6ICcke29wdGlvbnMucHJvZC5ob3N0bmFtZX0nLFxuICBkYXRhZG9nU2VjcmV0QXJuOiAnJHtvcHRpb25zLnByb2QuZGF0YWRvZ1NlY3JldEFybn0nLFxuICBjbGVya0p3a3NVcmw6ICcke29wdGlvbnMucHJvZC5jbGVya0p3a3NVcmx9JyxcbiAgJHtvcHRpb25zLnByb2QuYWRkaXRpb25hbFN0YWNrUHJvcHMgPyBPYmplY3QuZW50cmllcyhvcHRpb25zLnByb2QuYWRkaXRpb25hbFN0YWNrUHJvcHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9OiAke3NlcmlhbGl6ZVRzKHZhbHVlKX0sYCkuam9pbignXFxuICAnKSA6ICcnfVxufSk7XG5UYWdzLm9mKHByb2RTdGFjaykuYWRkKCdjbGllbnQnLCAnJHtvcHRpb25zLnByb2plY3ROYW1lfScpO1xuVGFncy5vZihwcm9kU3RhY2spLmFkZCgnZW52JywgJ3Byb2QnKTtcbiR7b3B0aW9ucy5hZGRpdGlvbmFsVGFncyA/IE9iamVjdC5lbnRyaWVzKG9wdGlvbnMuYWRkaXRpb25hbFRhZ3MpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgVGFncy5vZihwcm9kU3RhY2spLmFkZCgnJHtrZXl9JywgJyR7dmFsdWV9Jyk7YCkuam9pbignXFxuJykgOiAnJ31cblxuYXBwLnN5bnRoKCk7XG5gLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -7,7 +7,7 @@ const javascript_1 = require("projen/lib/javascript");
|
|
|
7
7
|
const utils_1 = require("./utils");
|
|
8
8
|
const WorkflowActionVersions_1 = require("./WorkflowActionVersions");
|
|
9
9
|
class ProductionDeployWorkflow extends projen_1.YamlFile {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.ProductionDeployWorkflow", version: "1.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.ProductionDeployWorkflow", version: "1.30.0" };
|
|
11
11
|
constructor(project, options) {
|
|
12
12
|
const packageManager = project.package.packageManager;
|
|
13
13
|
const actionVersions = (0, WorkflowActionVersions_1.resolveActionVersions)(options.actionVersions);
|
|
@@ -34,7 +34,7 @@ const DEFAULT_GITHUB_OWNER = 'macedon-technologies';
|
|
|
34
34
|
* workflows that wire them together) is templated.
|
|
35
35
|
*/
|
|
36
36
|
class SoftwareFactoryFiles {
|
|
37
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.SoftwareFactoryFiles", version: "1.
|
|
37
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.SoftwareFactoryFiles", version: "1.30.0" };
|
|
38
38
|
constructor(project, options) {
|
|
39
39
|
const { repoName, actionVersions, attestationFiles } = options;
|
|
40
40
|
const githubOwner = options.githubOwner || DEFAULT_GITHUB_OWNER;
|
|
@@ -7,7 +7,7 @@ const javascript_1 = require("projen/lib/javascript");
|
|
|
7
7
|
const utils_1 = require("./utils");
|
|
8
8
|
const WorkflowActionVersions_1 = require("./WorkflowActionVersions");
|
|
9
9
|
class StagingDeployWorkflow extends projen_1.YamlFile {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.StagingDeployWorkflow", version: "1.
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.StagingDeployWorkflow", version: "1.30.0" };
|
|
11
11
|
constructor(project, options) {
|
|
12
12
|
const packageManager = project.package.packageManager;
|
|
13
13
|
const actionVersions = (0, WorkflowActionVersions_1.resolveActionVersions)(options.actionVersions);
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -23,5 +23,4 @@ __exportStar(require("./SoftwareFactoryFiles"), exports);
|
|
|
23
23
|
__exportStar(require("./StagingDeployWorkflow"), exports);
|
|
24
24
|
__exportStar(require("./ProductionDeployWorkflow"), exports);
|
|
25
25
|
__exportStar(require("./WorkflowActionVersions"), exports);
|
|
26
|
-
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBZ0M7QUFDaEMscURBQTRFO0FBQW5FLGtIQUFBLGVBQWUsT0FBQTtBQUN4QixtREFBaUM7QUFDakMseURBQXVDO0FBR3ZDLDBEQUF3QztBQUN4Qyw2REFBMkM7QUFDM0MsMkRBQXlDO0FBQ3pDLHlEQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vQmF0bWFuUHJvamVjdCc7XG5leHBvcnQgeyBCb290Y2FtcFByb2plY3QsIEJvb3RjYW1wUHJvamVjdE9wdGlvbnMgfSBmcm9tICcuL0Jvb3RjYW1wUHJvamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL0NvZGVPd25lcnNGaWxlJztcbmV4cG9ydCAqIGZyb20gJy4vU29mdHdhcmVGYWN0b3J5RmlsZXMnO1xuZXhwb3J0IHsgRW52aXJvbm1lbnRDb25maWcgfSBmcm9tICcuL01haW5GaWxlJztcbmV4cG9ydCB7IEFwcGxpY2F0aW9uRW52aXJvbm1lbnRDb25maWcgfSBmcm9tICcuL0FwcGxpY2F0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vU3RhZ2luZ0RlcGxveVdvcmtmbG93JztcbmV4cG9ydCAqIGZyb20gJy4vUHJvZHVjdGlvbkRlcGxveVdvcmtmbG93JztcbmV4cG9ydCAqIGZyb20gJy4vV29ya2Zsb3dBY3Rpb25WZXJzaW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL1dvcmtmbG93QXV0b0Rpc2NvdmVyJztcbiJdfQ==
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBZ0M7QUFDaEMscURBQTRFO0FBQW5FLGtIQUFBLGVBQWUsT0FBQTtBQUN4QixtREFBaUM7QUFDakMseURBQXVDO0FBR3ZDLDBEQUF3QztBQUN4Qyw2REFBMkM7QUFDM0MsMkRBQXlDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9CYXRtYW5Qcm9qZWN0JztcbmV4cG9ydCB7IEJvb3RjYW1wUHJvamVjdCwgQm9vdGNhbXBQcm9qZWN0T3B0aW9ucyB9IGZyb20gJy4vQm9vdGNhbXBQcm9qZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vQ29kZU93bmVyc0ZpbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlGaWxlcyc7XG5leHBvcnQgeyBFbnZpcm9ubWVudENvbmZpZyB9IGZyb20gJy4vTWFpbkZpbGUnO1xuZXhwb3J0IHsgQXBwbGljYXRpb25FbnZpcm9ubWVudENvbmZpZyB9IGZyb20gJy4vQXBwbGljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9TdGFnaW5nRGVwbG95V29ya2Zsb3cnO1xuZXhwb3J0ICogZnJvbSAnLi9Qcm9kdWN0aW9uRGVwbG95V29ya2Zsb3cnO1xuZXhwb3J0ICogZnJvbSAnLi9Xb3JrZmxvd0FjdGlvblZlcnNpb25zJztcbiJdfQ==
|
package/lib/utils.js
CHANGED
|
@@ -112,7 +112,7 @@ function readmeContents(projectName, e2eTesting = true, packageManager = javascr
|
|
|
112
112
|
'| `src/LocalDevApp.ts` | Local development CDK app — used by `yarn cdk:dev` - deploys to AWS for slower but more thorough testing |',
|
|
113
113
|
'| `src/GitHubRoles.ts` | CDK app for deploying the GitHub OIDC IAM role (one-time bootstrap) |',
|
|
114
114
|
'| `src/stacks/ApplicationStack.ts` | Your primary stack — extend it to add resources |',
|
|
115
|
-
'| `src/stacks/BaseApplicationStack.ts` | Base stack with
|
|
115
|
+
'| `src/stacks/BaseApplicationStack.ts` | Base stack with API, static website, Datadog, and Route 53 wired up |',
|
|
116
116
|
'| `src/stacks/GitHubRolesStack.ts` | IAM role stack for GitHub Actions OIDC authentication |',
|
|
117
117
|
'| `src/constructs/Api.ts` | API Gateway + Lambda construct with Clerk JWT authorizer |',
|
|
118
118
|
'| `src/constructs/StaticWebsite.ts` | CloudFront + S3 + ACM + Route 53 construct |',
|
|
@@ -237,7 +237,7 @@ function readmeContents(projectName, e2eTesting = true, packageManager = javascr
|
|
|
237
237
|
'',
|
|
238
238
|
'## Where to Start',
|
|
239
239
|
'',
|
|
240
|
-
'1. **`src/stacks/ApplicationStack.ts`** — Add your CDK constructs here. The base stack already provides `this.api`, `this.
|
|
240
|
+
'1. **`src/stacks/ApplicationStack.ts`** — Add your CDK constructs here. The base stack already provides `this.api`, `this.hostedZone`, `this.datadog`, and (when the stack creates one) `this.vpc` as protected properties.',
|
|
241
241
|
'',
|
|
242
242
|
'2. **`web/`** — Build your frontend. Start with `web/src/App.tsx` and add services alongside `web/src/services/ApiService.ts`.',
|
|
243
243
|
'',
|
|
@@ -286,4 +286,4 @@ function readmeContents(projectName, e2eTesting = true, packageManager = javascr
|
|
|
286
286
|
'This updates all managed files to the latest Batman standards. Your editable sample files are never touched.',
|
|
287
287
|
].join('\n');
|
|
288
288
|
}
|
|
289
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSw0Q0FZQztBQU1ELHdDQVdDO0FBV0QsNERBT0M7QUFVRCxzREFFQztBQU9ELDREQUVDO0FBRUQsa0NBZ0JDO0FBRUQsd0NBa01DO0FBL1JELHNEQUEyRDtBQUUzRDs7R0FFRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLGNBQWtDLEVBQUUsTUFBYztJQUNqRixRQUFRLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssK0JBQWtCLENBQUMsR0FBRztZQUN6QixPQUFPLFdBQVcsTUFBTSxFQUFFLENBQUM7UUFDN0IsS0FBSywrQkFBa0IsQ0FBQyxHQUFHO1lBQ3pCLE9BQU8sV0FBVyxNQUFNLEVBQUUsQ0FBQztRQUM3QixLQUFLLCtCQUFrQixDQUFDLElBQUk7WUFDMUIsT0FBTyxRQUFRLE1BQU0sRUFBRSxDQUFDO1FBQzFCO1lBQ0Usb0ZBQW9GO1lBQ3BGLE9BQU8sUUFBUSxNQUFNLEVBQUUsQ0FBQztJQUM1QixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxjQUFrQztJQUMvRCxRQUFRLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssK0JBQWtCLENBQUMsR0FBRztZQUN6QixPQUFPLFFBQVEsQ0FBQztRQUNsQixLQUFLLCtCQUFrQixDQUFDLEdBQUc7WUFDekIsT0FBTywrQkFBK0IsQ0FBQztRQUN6QyxLQUFLLCtCQUFrQixDQUFDLElBQUk7WUFDMUIsT0FBTyxnQ0FBZ0MsQ0FBQztRQUMxQztZQUNFLE9BQU8sZ0NBQWdDLENBQUM7SUFDNUMsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLHdCQUF3QjtJQUN0QyxPQUFPO1FBQ0wsbUdBQW1HO1FBQ25HLG9EQUFvRDtRQUNwRCwrQ0FBK0M7UUFDL0MsSUFBSTtLQUNMLENBQUM7QUFDSixDQUFDO0FB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O1FBQ1osS0FBSztRQUNMLEVBQUU7UUFDRiw4R0FBOEc7S0FDL0csQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZVBhY2thZ2VNYW5hZ2VyIH0gZnJvbSAncHJvamVuL2xpYi9qYXZhc2NyaXB0JztcblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBjb21tYW5kIHVzZWQgdG8gcnVuIGEgcGFja2FnZS5qc29uIHNjcmlwdCBmb3IgdGhlIGdpdmVuIHBhY2thZ2UgbWFuYWdlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blNjcmlwdENvbW1hbmQocGFja2FnZU1hbmFnZXI6IE5vZGVQYWNrYWdlTWFuYWdlciwgc2NyaXB0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHBhY2thZ2VNYW5hZ2VyKSB7XG4gICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuTlBNOlxuICAgICAgcmV0dXJuIGBucG0gcnVuICR7c2NyaXB0fWA7XG4gICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuQlVOOlxuICAgICAgcmV0dXJuIGBidW4gcnVuICR7c2NyaXB0fWA7XG4gICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTTpcbiAgICAgIHJldHVybiBgcG5wbSAke3NjcmlwdH1gO1xuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBhbGwgeWFybiB2YXJpYW50cyAoeWFybiwgeWFybjIsIHlhcm5fY2xhc3NpYywgeWFybl9iZXJyeSkgc2hhcmUgdGhlIGB5YXJuYCBiaW5hcnlcbiAgICAgIHJldHVybiBgeWFybiAke3NjcmlwdH1gO1xuICB9XG59XG5cbi8qKlxuICogUmVuZGVycyB0aGUgY29tbWFuZCB1c2VkIHRvIGRvIGEgY2xlYW4sIHJlcHJvZHVjaWJsZSBkZXBlbmRlbmN5IGluc3RhbGwgKGUuZy4gZm9yIENJKVxuICogZm9yIHRoZSBnaXZlbiBwYWNrYWdlIG1hbmFnZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsQ29tbWFuZChwYWNrYWdlTWFuYWdlcjogTm9kZVBhY2thZ2VNYW5hZ2VyKTogc3RyaW5nIHtcbiAgc3dpdGNoIChwYWNrYWdlTWFuYWdlcikge1xuICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLk5QTTpcbiAgICAgIHJldHVybiAnbnBtIGNpJztcbiAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5CVU46XG4gICAgICByZXR1cm4gJ2J1biBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlJztcbiAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNOlxuICAgICAgcmV0dXJuICdwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGUnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ3lhcm4gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZSc7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNoIGxpbmVzIHRoYXQgc2FuaXRpemUgYSBgQ0xFQU5fQlJBTkNIX05BTUVgIHZhcmlhYmxlIChhbHJlYWR5IHN0cmlwcGVkIG9mIGFueVxuICogY29udmVudGlvbmFsLWNvbW1pdCBwcmVmaXgpIGludG8gYSB2YWx1ZSBzYWZlIHRvIHVzZSBhcyBhIENsb3VkRm9ybWF0aW9uIHN0YWNrLW5hbWVcbiAqIGZyYWdtZW50OiBjb2xsYXBzZXMgcnVucyBvZiBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgdG8gYC1gLCB0cmltcyBsZWFkaW5nL3RyYWlsaW5nXG4gKiBgLWAsIGFuZCBwcmVmaXhlcyB3aXRoIGBwci1gIGlmIHRoZSByZXN1bHQgd291bGQgbm90IHN0YXJ0IHdpdGggYSBsZXR0ZXIgKG9yIGlzIGVtcHR5KS5cbiAqXG4gKiBTaGFyZWQgYnkgUHJEZXBsb3lXb3JrZmxvdyBhbmQgUHJDbGVhbnVwV29ya2Zsb3cgc28gYm90aCBkZXJpdmUgdGhlIGlkZW50aWNhbCBzdGFja1xuICogbmFtZSBmb3IgYSBnaXZlbiBicmFuY2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZUJyYW5jaE5hbWVTY3JpcHQoKTogc3RyaW5nW10ge1xuICByZXR1cm4gW1xuICAgICdDTEVBTl9CUkFOQ0hfTkFNRT0kKGVjaG8gXCIkQ0xFQU5fQlJBTkNIX05BTUVcIiB8IHNlZCAtRSBcXCdzL1teQS1aYS16MC05XSsvLS9nOyBzL14tKy8vOyBzLy0rJC8vXFwnKScsXG4gICAgJ2lmIFtbICEgXCIkQ0xFQU5fQlJBTkNIX05BTUVcIiA9fiBeW0EtWmEtel0gXV07IHRoZW4nLFxuICAgICcgIENMRUFOX0JSQU5DSF9OQU1FPVwicHItJHtDTEVBTl9CUkFOQ0hfTkFNRX1cIicsXG4gICAgJ2ZpJyxcbiAgXTtcbn1cblxuLyoqXG4gKiBKb2lucyBjb21tYW5kcyB3aXRoIGA7YCBpbnN0ZWFkIG9mIGAmJmAvYHx8YCBzbyB0aGUgcmVzdWx0IGlzIHZhbGlkIGZvciBhIHN3YW1wXG4gKiBjb21tYW5kL3NoZWxsIG1vZGVsJ3MgYHJ1bjpgIHZhbHVlIG9uIGJvdGggUE9TSVggc2hlbGxzIGFuZCBXaW5kb3dzIFBvd2VyU2hlbGwgNS4xXG4gKiAod2hpY2ggaGFzIG5vIGAmJmAvYHx8YCBjaGFpbiBvcGVyYXRvcnMgYmVmb3JlIHB3c2ggNykuIFVubGlrZSBgJiZgLCBgO2AgZG9lcyBub3RcbiAqIHNob3J0LWNpcmN1aXQgb24gZmFpbHVyZSDigJQgY2FsbGVycyB0aGF0IG5lZWQgZmFpbHVyZSB0byBzdG9wIHRoZSBzZXF1ZW5jZSBzaG91bGQgc3BsaXRcbiAqIGludG8gc2VwYXJhdGUgd29ya2Zsb3cgc3RlcHMgd2l0aCB0aGVpciBvd24gYGFzc2VydGAgZ2F0ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoaXNcbiAqIGZvciBjb250cm9sIGZsb3cuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaGVsbFBvcnRhYmxlU2VxdWVuY2UoLi4uY29tbWFuZHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvbW1hbmRzLmpvaW4oJzsgJyk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBvcnRhYmxlIGZvcmNlLWRlbGV0ZSBmb3IgYSBzaW5nbGUgZmlsZSwgZm9yIHVzZSBpbiBhIHN3YW1wIGNvbW1hbmQvc2hlbGxcbiAqIG1vZGVsJ3MgYHJ1bjpgIHZhbHVlIGluIHBsYWNlIG9mIGBybSAtZiA8cGF0aD5gIChhbWJpZ3VvdXMgd2l0aCBQb3dlclNoZWxsIDUuMSdzXG4gKiBgUmVtb3ZlLUl0ZW0gLUZpbHRlcmAgYWxpYXMpLiBNYXRjaGVzIHRoZSBmaXggYWxyZWFkeSB2YWxpZGF0ZWQgaW4gZXhtYW4jMTM2LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hlbGxQb3J0YWJsZUZvcmNlRGVsZXRlKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgbm9kZSAtZSBcInJlcXVpcmUoJ2ZzJykucm1TeW5jKCcke3BhdGh9JywgeyBmb3JjZTogdHJ1ZSB9KVwiYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZVRzKHZhbHVlOiBhbnksIGRlcHRoID0gMSk6IHN0cmluZyB7XG4gIGNvbnN0IHBhZCA9ICcgICcucmVwZWF0KGRlcHRoKTtcbiAgY29uc3QgaW5uZXJQYWQgPSAnICAnLnJlcGVhdChkZXB0aCArIDEpO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIGAnJHt2YWx1ZX0nYDtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBjb25zdCBpdGVtcyA9IHZhbHVlLm1hcCh2ID0+IGAke2lubmVyUGFkfSR7c2VyaWFsaXplVHModiwgZGVwdGggKyAxKX1gKS5qb2luKCcsXFxuJyk7XG4gICAgcmV0dXJuIGBbXFxuJHtpdGVtc30sXFxuJHtwYWR9XWA7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpXG4gICAgICAubWFwKChbaywgdl0pID0+IGAke2lubmVyUGFkfSR7a306ICR7c2VyaWFsaXplVHModiwgZGVwdGggKyAxKX1gKVxuICAgICAgLmpvaW4oJyxcXG4nKTtcbiAgICByZXR1cm4gYHtcXG4ke2VudHJpZXN9LFxcbiR7cGFkfX1gO1xuICB9XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkbWVDb250ZW50cyhcbiAgcHJvamVjdE5hbWU6IHN0cmluZyxcbiAgZTJlVGVzdGluZyA9IHRydWUsXG4gIHBhY2thZ2VNYW5hZ2VyOiBOb2RlUGFja2FnZU1hbmFnZXIgPSBOb2RlUGFja2FnZU1hbmFnZXIuWUFSTl9DTEFTU0lDLFxuKSB7XG4gIGNvbnN0IHRlc3RFMmVDb21tYW5kID0gcnVuU2NyaXB0Q29tbWFuZChwYWNrYWdlTWFuYWdlciwgJ3Rlc3Q6ZTJlJyk7XG4gIHJldHVybiBbXG4gICAgYCMgJHtwcm9qZWN0TmFtZX1gLFxuICAgICcnLFxuICAgICdUaGlzIHByb2plY3Qgd2FzIGJvb3RzdHJhcHBlZCB3aXRoIFtCYXRtYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9tYWNlZG9uLXRlY2hub2xvZ2llcy9wbGF0Zm9ybS1jb21tb24pLicsXG4gICAgJycsXG4gICAgJyMjIFdoYXQgQmF0bWFuIENyZWF0ZWQnLFxuICAgICcnLFxuICAgICcjIyMgQ0RLIEluZnJhc3RydWN0dXJlIChgc3JjL2ApJyxcbiAgICAnJyxcbiAgICAnfCBGaWxlIHwgRGVzY3JpcHRpb24gfCcsXG4gICAgJ3wtLS0tLS18LS0tLS0tLS0tLS0tLXwnLFxuICAgICd8IGBzcmMvbWFpbi50c2AgfCBDREsgYXBwIGVudHJ5IHBvaW50IOKAlCBpbnN0YW50aWF0ZXMgZGV2LCBzdGFnaW5nLCBhbmQgcHJvZCBgQXBwbGljYXRpb25TdGFja2BzIHwnLFxuICAgICd8IGBzcmMvTG9jYWxEZXZBcHAudHNgIHwgTG9jYWwgZGV2ZWxvcG1lbnQgQ0RLIGFwcCDigJQgdXNlZCBieSBgeWFybiBjZGs6ZGV2YCAtIGRlcGxveXMgdG8gQVdTIGZvciBzbG93ZXIgYnV0IG1vcmUgdGhvcm91Z2ggdGVzdGluZyB8JyxcbiAgICAnfCBgc3JjL0dpdEh1YlJvbGVzLnRzYCB8IENESyBhcHAgZm9yIGRlcGxveWluZyB0aGUgR2l0SHViIE9JREMgSUFNIHJvbGUgKG9uZS10aW1lIGJvb3RzdHJhcCkgfCcsXG4gICAgJ3wgYHNyYy9zdGFja3MvQXBwbGljYXRpb25TdGFjay50c2AgfCBZb3VyIHByaW1hcnkgc3RhY2sg4oCUIGV4dGVuZCBpdCB0byBhZGQgcmVzb3VyY2VzIHwnLFxuICAgICd8IGBzcmMvc3RhY2tzL0Jhc2VBcHBsaWNhdGlvblN0YWNrLnRzYCB8IEJhc2Ugc3RhY2sgd2l0aCBWUEMsIEFQSSwgc3RhdGljIHdlYnNpdGUsIERhdGFkb2csIGFuZCBSb3V0ZSA1MyB3aXJlZCB1cCB8JyxcbiAgICAnfCBgc3JjL3N0YWNrcy9HaXRIdWJSb2xlc1N0YWNrLnRzYCB8IElBTSByb2xlIHN0YWNrIGZvciBHaXRIdWIgQWN0aW9ucyBPSURDIGF1dGhlbnRpY2F0aW9uIHwnLFxuICAgICd8IGBzcmMvY29uc3RydWN0cy9BcGkudHNgIHwgQVBJIEdhdGV3YXkgKyBMYW1iZGEgY29uc3RydWN0IHdpdGggQ2xlcmsgSldUIGF1dGhvcml6ZXIgfCcsXG4gICAgJ3wgYHNyYy9jb25zdHJ1Y3RzL1N0YXRpY1dlYnNpdGUudHNgIHwgQ2xvdWRGcm9udCArIFMzICsgQUNNICsgUm91dGUgNTMgY29uc3RydWN0IHwnLFxuICAgICd8IGBzcmMvY29uc3RydWN0cy9oYW5kbGVyL0FwaS5GdW5jdGlvbi50c2AgfCBMYW1iZGEgaGFuZGxlciBlbnRyeSBwb2ludCwgYmFzaWMgd3JhcHBlciBhcm91bmQgRXhwcmVzcy1jb21wYXRpYmxlIGFwcCBjb2RlIHwnLFxuICAgICd8IGBzcmMvYXNwZWN0cy9EYXRhRG9nQXNwZWN0LnRzYCB8IENESyBhc3BlY3QgdGhhdCB3aXJlcyBhbGwgTGFtYmRhIGZ1bmN0aW9ucyB0byBEYXRhZG9nIHwnLFxuICAgICcnLFxuICAgICcjIyMgRnJvbnRlbmQgKGB3ZWIvYCknLFxuICAgICcnLFxuICAgICd8IEZpbGUgfCBEZXNjcmlwdGlvbiB8JyxcbiAgICAnfC0tLS0tLXwtLS0tLS0tLS0tLS0tfCcsXG4gICAgJ3wgYHdlYi9zcmMvbWFpbi50c3hgIHwgUmVhY3QgYXBwIGVudHJ5IHBvaW50IHdpdGggQ2xlcmsgYW5kIFJlYWN0IFF1ZXJ5IHByb3ZpZGVycyB8JyxcbiAgICAnfCBgd2ViL3NyYy9BcHAudHN4YCB8IFJvb3QgYXBwbGljYXRpb24gY29tcG9uZW50IHwnLFxuICAgICd8IGB3ZWIvc3JjL0FwcC5jc3NgIC8gYHdlYi9zcmMvaW5kZXguY3NzYCB8IEJhc2Ugc3R5bGVzaGVldHMgKFRhaWx3aW5kIENTUyB2NCkgfCcsXG4gICAgJ3wgYHdlYi9zcmMvY29uZmlnLnRzYCB8IGB1c2VDb25maWcoKWAgaG9vayDigJQgbG9hZHMgcnVudGltZSBjb25maWcgZnJvbSBgY29uZmlnLmpzb25gIHwnLFxuICAgICd8IGB3ZWIvc3JjL3NlcnZpY2VzL0FwaVNlcnZpY2UudHNgIHwgYHVzZUFwaVF1ZXJ5KClgIC8gYHVzZUFwaU11dGF0aW9uKClgIOKAlCBhdXRoZW50aWNhdGVkIEFQSSBob29rcywgY2FjaGVkIHBlciBwYXRoIHwnLFxuICAgICd8IGB3ZWIvc3JjL2hlbHBlcnMvYCB8IGByZXF1ZXN0cy50c2AsIGBIdHRwRXJyb3IudHNgLCBgZXJyb3JzLnRzYCwgYHJldHJ5LnRzYCDigJQgdGhlIHJlcXVlc3QgYW5kIGVycm9yIGhlbHBlcnMgYEFwaVNlcnZpY2VgIGlzIGJ1aWx0IG9uIHwnLFxuICAgICd8IGB3ZWIvcHVibGljL2NvbmZpZy5qc29uYCB8IFJ1bnRpbWUgY29uZmlnIChBUEkgYmFzZSBVUkwsIENsZXJrIHB1Ymxpc2hhYmxlIGtleSkgfCcsXG4gICAgLi4uKGUyZVRlc3RpbmcgPyBbXG4gICAgICAnfCBgd2ViL3BsYXl3cmlnaHQuY29uZmlnLnRzYCB8IFBsYXl3cmlnaHQgZTJlIGNvbmZpZyDigJQgc2VlIGB3ZWIvZTJlL1JFQURNRS5tZGAgfCcsXG4gICAgICBgfCBcXGB3ZWIvZTJlL1xcYCB8IFBsYXl3cmlnaHQgZTJlIHN1aXRlIChcXGAke3Rlc3RFMmVDb21tYW5kfVxcYCk7IGFsc28gcnVuIGluIENJIGFnYWluc3QgZWFjaCBQUidzIGRlcGxveWVkIFVSTCB8YCxcbiAgICBdIDogW10pLFxuICAgICcnLFxuICAgICcjIyMgR2l0SHViIEFjdGlvbnMgV29ya2Zsb3dzIChgLmdpdGh1Yi93b3JrZmxvd3MvYCknLFxuICAgICcnLFxuICAgICd8IEZpbGUgfCBUcmlnZ2VyIHwnLFxuICAgICd8LS0tLS0tfC0tLS0tLS0tLXwnLFxuICAgICd8IGBwci1kZXBsb3kueW1sYCB8IE9uIHB1bGwgcmVxdWVzdCBvcGVuL3VwZGF0ZSDigJQgZGVwbG95cyBhIHBlci1QUiBkZXYgc3RhY2sgfCcsXG4gICAgJ3wgYHByLWNsZWFudXAueW1sYCB8IE9uIHB1bGwgcmVxdWVzdCBjbG9zZSDigJQgdGVhcnMgZG93biB0aGUgcGVyLVBSIGRldiBzdGFjayB8JyxcbiAgICAnfCBgc3RhZ2luZy1kZXBsb3kueW1sYCB8IE9uIHB1c2ggdG8gYG1haW5gIOKAlCBkZXBsb3lzIHRvIHN0YWdpbmcgfCcsXG4gICAgJ3wgYHByb2R1Y3Rpb24tZGVwbG95LnltbGAgfCBNYW51YWxseSB0cmlnZ2VyZWQg4oCUIGRlcGxveXMgdG8gcHJvZHVjdGlvbiB8JyxcbiAgICAnJyxcbiAgICAnLS0tJyxcbiAgICAnJyxcbiAgICAnIyMgRmlsZXMgWW91IENhbiBFZGl0JyxcbiAgICAnJyxcbiAgICAnVGhlc2UgZmlsZXMgYXJlIGdlbmVyYXRlZCBvbmNlIGFuZCBuZXZlciBvdmVyd3JpdHRlbiBieSBCYXRtYW4uIE1vZGlmeSB0aGVtIGZyZWVseS4nLFxuICAgICcnLFxuICAgICd8IEZpbGUgfCBXaGF0IHRvIGRvIHdpdGggaXQgfCcsXG4gICAgJ3wtLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS18JyxcbiAgICAnfCBgLnByb2plbnJjLnRzIHwgVGhlIG1haW4gUHJvamVuIGNvbmZpZ3VyYXRpb24gZmlsZS4gQWRkaXRpb25hbCBkZXBlbmRlbmNpZXMgZm9yIGVpdGhlciB0aGUgQVBJIG9yIHRoZSBXZWIgZnJvbnRlbmQgbmVlZCB0byBiZSBhZGRlZCBoZXJlIHwnLFxuICAgICd8IGBzcmMvc3RhY2tzL0FwcGxpY2F0aW9uU3RhY2sudHNgIHwgKipTdGFydCBoZXJlLioqIEFkZCBDREsgY29uc3RydWN0cyB0byBidWlsZCB5b3VyIGluZnJhc3RydWN0dXJlIHwnLFxuICAgICd8IGBzcmMvYXBpL2FwcC50cyB8IFRoZSBtYWluIG1vbm9saXRoaWMgQVBJIFJFU1Qgc2VydmVyIGZpbGUuIE1haW4gZmlsZSB5b3Ugc2hvdWxkIGJlIG1vZGlmeWluZyB8JyxcbiAgICAnfCBgd2ViL3NyYy9BcHAudHN4YCB8IEJ1aWxkIHlvdXIgVUkgaGVyZSB8JyxcbiAgICAnfCBgd2ViL3NyYy9BcHAuY3NzYCAvIGB3ZWIvc3JjL2luZGV4LmNzc2AgfCBTdHlsZSB5b3VyIGFwcGxpY2F0aW9uIHwnLFxuICAgICd8IGB3ZWIvc3JjL21haW4udHN4YCB8IEFkanVzdCB0b3AtbGV2ZWwgcHJvdmlkZXJzIG9yIHJvdXRpbmcgfCcsXG4gICAgJ3wgYHdlYi9zcmMvc2VydmljZXMvQXBpU2VydmljZS50c2AgLyBgd2ViL3NyYy9oZWxwZXJzL2AgfCBBZGQgQVBJIHNlcnZpY2UgaG9va3MgYWxvbmdzaWRlIGBBcGlTZXJ2aWNlLnRzYCwgb3IgYWRqdXN0IHRoZSByZXF1ZXN0IGhlbHBlcnMgfCcsXG4gICAgJ3wgYHdlYi9wdWJsaWMvY29uZmlnLmpzb25gIHwgVXBkYXRlIGZvciBsb2NhbCBkZXZlbG9wbWVudCAoQVBJIFVSTCwgQ2xlcmsga2V5KSB8JyxcbiAgICAuLi4oZTJlVGVzdGluZyA/IFtcbiAgICAgICd8IGB3ZWIvcGxheXdyaWdodC5jb25maWcudHNgIC8gYHdlYi9lMmUvYCB8IFBsYXl3cmlnaHQgZTJlIHN1aXRlIOKAlCBleHRlbmQgaXQgd2l0aCByZWFsIGZsb3dzOyBzZWUgYHdlYi9lMmUvUkVBRE1FLm1kYCB8JyxcbiAgICBdIDogW10pLFxuICAgICcnLFxuICAgICcjIyBGaWxlcyBZb3UgQ2Fubm90IEVkaXQnLFxuICAgICcnLFxuICAgICdUaGVzZSBmaWxlcyBhcmUgKiptYW5hZ2VkIGJ5IEJhdG1hbioqIGFuZCB3aWxsIGJlIG92ZXJ3cml0dGVuIGV2ZXJ5IHRpbWUgYG5weCBwcm9qZW5gIHJ1bnMuIERvIG5vdCBlZGl0IHRoZW0gZGlyZWN0bHkg4oCUIG1ha2UgY2hhbmdlcyBpbiBgLnByb2plbnJjLnRzYCBpbnN0ZWFkLicsXG4gICAgJycsXG4gICAgJz4gWyFJTVBPUlRBTlRdJyxcbiAgICAnPiBJZiB5b3UgaGF2ZSBBTlkgY2hhbmdlcyB5b3Ugd2FudCB0byBtYWtlIHRvIHRoZXNlIGZpbGVzLCBub3RpZnkgI3RlYW0tYmF0bWFuIG9uIFNsYWNrLiAnLFxuICAgICc+IFdlIG1haW50YWluIHRoZXNlIGZpbGVzIGFzIHBhcnQgb2YgdGhlIGNvcmUgQmF0bWFuIGV4cGVyaWVuY2UsIGFuZCB5b3VyIGZlZWRiYWNrIGlzIGNydWNpYWwgdG8gZW5zdXJlIHRoZXkgbWVldCB5b3VyIG5lZWRzLicsXG4gICAgJycsXG4gICAgJ3wgRmlsZSB8IFdoeSBpdFxcJ3MgbWFuYWdlZCB8JyxcbiAgICAnfC0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLXwnLFxuICAgICd8IGBzcmMvc3RhY2tzL0Jhc2VBcHBsaWNhdGlvblN0YWNrLnRzYCB8IENvcmUgc3RhY2sgd2lyaW5nIOKAlCB1cGRhdGVkIHdpdGggQmF0bWFuIHJlbGVhc2VzIHwnLFxuICAgICd8IGBzcmMvYXNwZWN0cy9EYXRhRG9nQXNwZWN0LnRzYCB8IERhdGFkb2cgQ0RLIGFzcGVjdCB8JyxcbiAgICAnfCBgd2ViL3ZpdGUuY29uZmlnLnRzYCB8IFZpdGUgY29uZmlndXJhdGlvbiB8JyxcbiAgICAnfCBgd2ViL2VzbGludC5jb25maWcuanNgIHwgRVNMaW50IGNvbmZpZ3VyYXRpb24gfCcsXG4gICAgJ3wgYHdlYi9wb3N0Y3NzLmNvbmZpZy5qc2AgfCBQb3N0Q1NTIC8gVGFpbHdpbmQgY29uZmlndXJhdGlvbiB8JyxcbiAgICAnfCBgd2ViL2luZGV4Lmh0bWxgIHwgSFRNTCBlbnRyeSBwb2ludCB8JyxcbiAgICAnfCBgd2ViL3RzY29uZmlnLmpzb25gIC8gYHdlYi90c2NvbmZpZy5hcHAuanNvbmAgLyBgd2ViL3RzY29uZmlnLm5vZGUuanNvbmAgfCBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gfCcsXG4gICAgJ3wgYHdlYi9zcmMvdml0ZS1lbnYuZC50c2AgfCBWaXRlIHR5cGUgZGVjbGFyYXRpb25zIHwnLFxuICAgICd8IGB3ZWIvc3JjL2NvbmZpZy50c2AgfCBSdW50aW1lIGNvbmZpZyBob29rIOKAlCBzaGFwZSBkcml2ZW4gYnkgYC5wcm9qZW5yYy50c2AgfCcsXG4gICAgJ3wgYC5naXRodWIvQ09ERU9XTkVSU2AgfCBDb2RlIG93bmVyc2hpcCBwb2xpY3kgfCcsXG4gICAgJ3wgYC5naXRodWIvd29ya2Zsb3dzLyoueW1sYCB8IEFsbCBDSS9DRCB3b3JrZmxvd3MgfCcsXG4gICAgJ3wgYGFyY2hpdGVjdHVyZS1ydWxlcy9jaGVjay50c2AsIGB0c2NvbmZpZy5qc29uYCwgYFJFQURNRS5tZGAgfCBBcmNoaXRlY3R1cmUgcnVsZSBlbmdpbmUgfCcsXG4gICAgJ3wgYGF0dGVzdGF0aW9uL21hbmlmZXN0LnRzYCwgYHZlcmlmeS50c2AsIGB0c2NvbmZpZy5qc29uYCB8IFBSIGF0dGVzdGF0aW9uIG1lY2hhbmlzbSB8JyxcbiAgICAnfCBgb3BlbnNwZWMtZ2F0ZXMvY2hlY2stdGFza3MtY29tcGxldGUudHNgLCBgdHNjb25maWcuanNvbmAgfCBPcGVuU3BlYyB0YXNrLWNvbXBsZXRpb24gZ2F0ZSB8JyxcbiAgICAnfCBgc3dhbXAtYm9vdHN0cmFwL3B1bGwtZXh0ZW5zaW9ucy50c2AsIGB0c2NvbmZpZy5qc29uYCB8IFB1bGxzIHN3YW1wIGV4dGVuc2lvbnMgYXQgdGhlaXIgcGlubmVkIHZlcnNpb25zIHwnLFxuICAgICd8IGB3b3JrZmxvd3Mvd29ya2Zsb3ctKi55YW1sYCB8IFN3YW1wIHdvcmtmbG93cyB0aGUgc29mdHdhcmUgZmFjdG9yeSBydW5zIHwnLFxuICAgICcnLFxuICAgICc+ICoqVGlwOioqIEZpbGVzIHdpdGggYSBgfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibnB4IHByb2plblwiLiB+fmAgaGVhZGVyIGFyZSBtYW5hZ2VkIGZpbGVzLicsXG4gICAgJycsXG4gICAgJyMjIyBTb2Z0d2FyZSBGYWN0b3J5IChgbW9kZWxzL2AsIGBhcmNoaXRlY3R1cmUtcnVsZXMvcnVsZXMuanNvbmApJyxcbiAgICAnJyxcbiAgICAnQmF0bWFuIGFsc28gc2VlZHMgYSBbc3dhbXBdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FtcC1jbHViL3N3YW1wKSBzb2Z0d2FyZScsXG4gICAgJ2ZhY3Rvcnkg4oCUIGEgYEBzd2FtcC9zb2Z0d2FyZS1mYWN0b3J5YCBzdGF0ZSBtYWNoaW5lIHRoYXQgZHJpdmVzIGEgR2l0SHViJyxcbiAgICAnaXNzdWUgdGhyb3VnaCBpbnRha2UsIE9wZW5TcGVjIHBsYW5uaW5nLCBpbXBsZW1lbnRhdGlvbiwgcHJlLVBSJyxcbiAgICAndmVyaWZpY2F0aW9uLCBhbmQgYW4gb3BlbmVkIFBSLiBUaGUgc2VlZCBmaWxlcyB1bmRlciBgbW9kZWxzLyoqLyoueWFtbGAgYW5kJyxcbiAgICAnYGFyY2hpdGVjdHVyZS1ydWxlcy9ydWxlcy5qc29uYCBhcmUgZ2VuZXJhdGVkIG9uY2UgKGxpa2UgdGhlIGZpbGVzIGluJyxcbiAgICAnXCJGaWxlcyBZb3UgQ2FuIEVkaXRcIiBhYm92ZSkg4oCUIHR1bmUgdGhlIGZhY3RvcnlcXCdzIHN0YWdlcy9nYXRlcyBvciBhZGQgeW91cicsXG4gICAgJ293biBhcmNoaXRlY3R1cmUgcnVsZXMgZGlyZWN0bHkgaW4gdGhvc2UgZmlsZXMuJyxcbiAgICAnJyxcbiAgICAnYHN3YW1wIGluaXRgIHJ1bnMgYXV0b21hdGljYWxseSBhcyBwYXJ0IG9mIGBpbnN0YWxsYC9gaW5zdGFsbDpjaWAgKGEgc2lsZW50JyxcbiAgICAnbm8tb3AgaWYgYHN3YW1wYCBpc25cXCd0IG9uIFBBVEgsIGUuZy4gaW4gQ0kpLCBzbyB0aGUgcmVwbyBzdGF5cyBpbml0aWFsaXplZCcsXG4gICAgJ3dpdGhvdXQgYSBzZXBhcmF0ZSBzdGVwLicsXG4gICAgJycsXG4gICAgJ2Bzd2FtcFZlcnNpb25gIGluIGAuc3dhbXAueWFtbGAgaXMgdGhlIG1pbmltdW0gc3dhbXAgQ0xJIHRoZSByZXBvIG5lZWRzOiB0aGUnLFxuICAgICd2ZXJzaW9uIGl0IHdhcyBsYXN0IHVwZ3JhZGVkIHdpdGguIHN3YW1wIGRvZXNuXFwndCBrZWVwIG9sZCBidWlsZHMsIHNvIGluc3RhbGwnLFxuICAgICd0aGUgY3VycmVudCBgc3RhYmxlYCByZWxlYXNlIHJhdGhlciB0aGFuIHRoYXQgZXhhY3QgdmVyc2lvbjonLFxuICAgICcnLFxuICAgICdgYGBiYXNoJyxcbiAgICAnIyBtYWNPUyAvIExpbnV4JyxcbiAgICAnY3VybCAtZnNTTCBodHRwczovL3N3YW1wLmNsdWIvaW5zdGFsbC5zaCB8IHNoJyxcbiAgICAnJyxcbiAgICAnIyBXaW5kb3dzIChQb3dlclNoZWxsKScsXG4gICAgJ2lybSBodHRwczovL3N3YW1wLmNsdWIvaW5zdGFsbC5wczEgfCBpZXgnLFxuICAgICdgYGAnLFxuICAgICcnLFxuICAgICdPbmUtdGltZSBzZXR1cCBiZXlvbmQgdGhhdCwgYWZ0ZXIgeW91ciBmaXJzdCBgbnB4IHByb2plbmA6JyxcbiAgICAnJyxcbiAgICAnYGBgYmFzaCcsXG4gICAgJyMgUHVsbHMgZWFjaCBleHRlbnNpb24gYXQgdGhlIHZlcnNpb24gcGlubmVkIGluJyxcbiAgICAnIyBleHRlbnNpb25zL21vZGVscy91cHN0cmVhbV9leHRlbnNpb25zLmpzb24gKG9yIHRoZSBsYXRlc3QnLFxuICAgICcjIHNvZnR3YXJlLWZhY3RvcnkvZ2l0aHViIGV4dGVuc2lvbnMgaW4gYSByZXBvIHdpdGggbm8gbG9ja2ZpbGUgeWV0KSwnLFxuICAgICcjIHJlc3RvcmVzIHRoZSBsb2NrZmlsZSBhbmQgY29tbWl0dGVkIHNraWxsIGZpbGVzIGZyb20gZ2l0LCBhbmQgY3JlYXRlcyB0aGUnLFxuICAgICcjIHJlcG9cXCdzIHNlY3JldHMgdmF1bHQnLFxuICAgICducHggcHJvamVuIHN3YW1wOmJvb3RzdHJhcCcsXG4gICAgJycsXG4gICAgJyMgVGhlbiBzdG9yZSBhIEdpdEh1YiB0b2tlbiB0aGUgZmFjdG9yeSBjYW4gb3BlbiBQUnMgd2l0aCcsXG4gICAgJ3N3YW1wIHZhdWx0IHB1dCA8cmVwbz4tc2VjcmV0cyBHSVRIVUJfVE9LRU4gLS1yZWZyZXNoLWZyb20gXCJnaCBhdXRoIHRva2VuXCInLFxuICAgICdgYGAnLFxuICAgICcnLFxuICAgICctLS0nLFxuICAgICcnLFxuICAgICcjIyBXaGVyZSB0byBTdGFydCcsXG4gICAgJycsXG4gICAgJzEuICoqYHNyYy9zdGFja3MvQXBwbGljYXRpb25TdGFjay50c2AqKiDigJQgQWRkIHlvdXIgQ0RLIGNvbnN0cnVjdHMgaGVyZS4gVGhlIGJhc2Ugc3RhY2sgYWxyZWFkeSBwcm92aWRlcyBgdGhpcy5hcGlgLCBgdGhpcy52cGNgLCBgdGhpcy5ob3N0ZWRab25lYCwgYW5kIGB0aGlzLmRhdGFkb2dgIGFzIHByb3RlY3RlZCBwcm9wZXJ0aWVzLicsXG4gICAgJycsXG4gICAgJzIuICoqYHdlYi9gKiog4oCUIEJ1aWxkIHlvdXIgZnJvbnRlbmQuIFN0YXJ0IHdpdGggYHdlYi9zcmMvQXBwLnRzeGAgYW5kIGFkZCBzZXJ2aWNlcyBhbG9uZ3NpZGUgYHdlYi9zcmMvc2VydmljZXMvQXBpU2VydmljZS50c2AuJyxcbiAgICAnJyxcbiAgICAnMy4gKipgc3JjL2FwaS9hcHAudHNgKiog4oCUIEltcGxlbWVudCB5b3VyIGJhY2tlbmQgTGFtYmRhIGhhbmRsZXIgbG9naWMgaGVyZS4nLFxuICAgICcnLFxuICAgICc0LiAqKmAucHJvamVucmMudHNgKiogLSBNYW5hZ2VzIHByb2plY3QgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9uLiBSdW4gYG5weCBwcm9qZW5gIGFmdGVyIG1ha2luZyBhbnkgY2hhbmdlcyB0byB0aGlzIGZpbGUuJyxcbiAgICAnLS0tJyxcbiAgICAnJyxcbiAgICAnIyMgRGV2ZWxvcG1lbnQgV29ya2Zsb3cnLFxuICAgICcnLFxuICAgICdgYGBiYXNoJyxcbiAgICAnIyBJbnN0YWxsIGRlcGVuZGVuY2llcycsXG4gICAgJ3lhcm4gaW5zdGFsbCcsXG4gICAgJycsXG4gICAgJyMgU3RhcnQgbG9jYWwgZGV2IHNlcnZlciAoYmFja2VuZCBMYW1iZGEgKyBWaXRlIGZyb250ZW5kIGluIHBhcmFsbGVsKScsXG4gICAgJ3lhcm4gZGV2JyxcbiAgICAnJyxcbiAgICAnIyBEZXBsb3kgYSBwZXJzb25hbCBkZXYgc3RhY2sgdG8gQVdTIGFzIGFuIGFsdGVybmF0aXZlIHRvIGxvY2FsIGRldmVsb3BtZW50LCBwcm92aWRlcyBtb3JlIHRob3JvdWdoIGVuZC10by1lbmQgdGVzdGluZycsXG4gICAgJ3lhcm4gY2RrOmRldiAtLWNvbnRleHQgbG9jYWwtZGV2LXByZWZpeD15b3VyLWhhbmRsZSBkZXBsb3knLFxuICAgICcnLFxuICAgICcjIFJlZGVwbG95IHlvdXIgcGVyc29uYWwgZGV2IHN0YWNrIGZhc3Q6IGFmdGVyIHRoZSBmaXJzdCBkZXBsb3kgYWJvdmUsIGtlZXAnLFxuICAgIFwiIyByZXVzaW5nIHRoZSBzYW1lIHN0YWNrIChkb24ndCBkZWxldGUgaXQgYmV0d2VlbiBicmFuY2hlcykgYW5kIGl0ZXJhdGUgd2l0aFwiLFxuICAgICcjIGhvdHN3YXAtZmFsbGJhY2sgaW5zdGVhZCBvZiBhIGZ1bGwgQ2xvdWRGb3JtYXRpb24gZGVwbG95bWVudCcsXG4gICAgJ3lhcm4gY2RrOmRldjpob3Rzd2FwIC0tY29udGV4dCBsb2NhbC1kZXYtcHJlZml4PXlvdXItaGFuZGxlJyxcbiAgICAnJyxcbiAgICAnIyBSdW4gdGVzdHMnLFxuICAgICd5YXJuIHRlc3QnLFxuICAgICcnLFxuICAgICcjIFJlLXN5bnRoZXNpemUgcHJvamVjdCBmaWxlcyBhZnRlciBlZGl0aW5nIC5wcm9qZW5yYy50cycsXG4gICAgJ25weCBwcm9qZW4nLFxuICAgICdgYGAnLFxuICAgICcnLFxuICAgICc+IFshSU1QT1JUQU5UXScsXG4gICAgJz4gYC0taG90c3dhcC1mYWxsYmFja2AgKHVzZWQgYnkgYGNkazpkZXY6aG90c3dhcGAgYW5kIHRoZSBgd2F0Y2hgIHRhc2spIGlzIGZvcicsXG4gICAgJz4gcGVyc29uYWwgZGV2IHN0YWNrcyBvbmx5IOKAlCBuZXZlciBydW4gaXQgYWdhaW5zdCBzdGFnaW5nIG9yIHByb2QuJyxcbiAgICAnJyxcbiAgICAnLS0tJyxcbiAgICAnJyxcbiAgICAnIyMgVXBncmFkaW5nIEJhdG1hbicsXG4gICAgJycsXG4gICAgJ2BgYGJhc2gnLFxuICAgICd5YXJuIGFkZCBAbWFjZWRvbi10ZWNobm9sb2dpZXMvYmF0bWFuQGxhdGVzdCcsXG4gICAgJ25weCBwcm9qZW4nLFxuICAgICdgYGAnLFxuICAgICcnLFxuICAgICdUaGlzIHVwZGF0ZXMgYWxsIG1hbmFnZWQgZmlsZXMgdG8gdGhlIGxhdGVzdCBCYXRtYW4gc3RhbmRhcmRzLiBZb3VyIGVkaXRhYmxlIHNhbXBsZSBmaWxlcyBhcmUgbmV2ZXIgdG91Y2hlZC4nLFxuICBdLmpvaW4oJ1xcbicpO1xufVxuIl19
|
|
289
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSw0Q0FZQztBQU1ELHdDQVdDO0FBV0QsNERBT0M7QUFVRCxzREFFQztBQU9ELDREQUVDO0FBRUQsa0NBZ0JDO0FBRUQsd0NBa01DO0FBL1JELHNEQUEyRDtBQUUzRDs7R0FFRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLGNBQWtDLEVBQUUsTUFBYztJQUNqRixRQUFRLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssK0JBQWtCLENBQUMsR0FBRztZQUN6QixPQUFPLFdBQVcsTUFBTSxFQUFFLENBQUM7UUFDN0IsS0FBSywrQkFBa0IsQ0FBQyxHQUFHO1lBQ3pCLE9BQU8sV0FBVyxNQUFNLEVBQUUsQ0FBQztRQUM3QixLQUFLLCtCQUFrQixDQUFDLElBQUk7WUFDMUIsT0FBTyxRQUFRLE1BQU0sRUFBRSxDQUFDO1FBQzFCO1lBQ0Usb0ZBQW9GO1lBQ3BGLE9BQU8sUUFBUSxNQUFNLEVBQUUsQ0FBQztJQUM1QixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxjQUFrQztJQUMvRCxRQUFRLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssK0JBQWtCLENBQUMsR0FBRztZQUN6QixPQUFPLFFBQVEsQ0FBQztRQUNsQixLQUFLLCtCQUFrQixDQUFDLEdBQUc7WUFDekIsT0FBTywrQkFBK0IsQ0FBQztRQUN6QyxLQUFLLCtCQUFrQixDQUFDLElBQUk7WUFDMUIsT0FBTyxnQ0FBZ0MsQ0FBQztRQUMxQztZQUNFLE9BQU8sZ0NBQWdDLENBQUM7SUFDNUMsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLHdCQUF3QjtJQUN0QyxPQUFPO1FBQ0wsbUdBQW1HO1FBQ25HLG9EQUFvRDtRQUNwRCwrQ0FBK0M7UUFDL0MsSUFBSTtLQUNMLENBQUM7QUFDSixDQUFDO0FB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O1FBQ1osS0FBSztRQUNMLEVBQUU7UUFDRiw4R0FBOEc7S0FDL0csQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZVBhY2thZ2VNYW5hZ2VyIH0gZnJvbSAncHJvamVuL2xpYi9qYXZhc2NyaXB0JztcblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBjb21tYW5kIHVzZWQgdG8gcnVuIGEgcGFja2FnZS5qc29uIHNjcmlwdCBmb3IgdGhlIGdpdmVuIHBhY2thZ2UgbWFuYWdlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blNjcmlwdENvbW1hbmQocGFja2FnZU1hbmFnZXI6IE5vZGVQYWNrYWdlTWFuYWdlciwgc2NyaXB0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHBhY2thZ2VNYW5hZ2VyKSB7XG4gICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuTlBNOlxuICAgICAgcmV0dXJuIGBucG0gcnVuICR7c2NyaXB0fWA7XG4gICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuQlVOOlxuICAgICAgcmV0dXJuIGBidW4gcnVuICR7c2NyaXB0fWA7XG4gICAgY2FzZSBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTTpcbiAgICAgIHJldHVybiBgcG5wbSAke3NjcmlwdH1gO1xuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBhbGwgeWFybiB2YXJpYW50cyAoeWFybiwgeWFybjIsIHlhcm5fY2xhc3NpYywgeWFybl9iZXJyeSkgc2hhcmUgdGhlIGB5YXJuYCBiaW5hcnlcbiAgICAgIHJldHVybiBgeWFybiAke3NjcmlwdH1gO1xuICB9XG59XG5cbi8qKlxuICogUmVuZGVycyB0aGUgY29tbWFuZCB1c2VkIHRvIGRvIGEgY2xlYW4sIHJlcHJvZHVjaWJsZSBkZXBlbmRlbmN5IGluc3RhbGwgKGUuZy4gZm9yIENJKVxuICogZm9yIHRoZSBnaXZlbiBwYWNrYWdlIG1hbmFnZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsQ29tbWFuZChwYWNrYWdlTWFuYWdlcjogTm9kZVBhY2thZ2VNYW5hZ2VyKTogc3RyaW5nIHtcbiAgc3dpdGNoIChwYWNrYWdlTWFuYWdlcikge1xuICAgIGNhc2UgTm9kZVBhY2thZ2VNYW5hZ2VyLk5QTTpcbiAgICAgIHJldHVybiAnbnBtIGNpJztcbiAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5CVU46XG4gICAgICByZXR1cm4gJ2J1biBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlJztcbiAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNOlxuICAgICAgcmV0dXJuICdwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGUnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ3lhcm4gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZSc7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNoIGxpbmVzIHRoYXQgc2FuaXRpemUgYSBgQ0xFQU5fQlJBTkNIX05BTUVgIHZhcmlhYmxlIChhbHJlYWR5IHN0cmlwcGVkIG9mIGFueVxuICogY29udmVudGlvbmFsLWNvbW1pdCBwcmVmaXgpIGludG8gYSB2YWx1ZSBzYWZlIHRvIHVzZSBhcyBhIENsb3VkRm9ybWF0aW9uIHN0YWNrLW5hbWVcbiAqIGZyYWdtZW50OiBjb2xsYXBzZXMgcnVucyBvZiBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgdG8gYC1gLCB0cmltcyBsZWFkaW5nL3RyYWlsaW5nXG4gKiBgLWAsIGFuZCBwcmVmaXhlcyB3aXRoIGBwci1gIGlmIHRoZSByZXN1bHQgd291bGQgbm90IHN0YXJ0IHdpdGggYSBsZXR0ZXIgKG9yIGlzIGVtcHR5KS5cbiAqXG4gKiBTaGFyZWQgYnkgUHJEZXBsb3lXb3JrZmxvdyBhbmQgUHJDbGVhbnVwV29ya2Zsb3cgc28gYm90aCBkZXJpdmUgdGhlIGlkZW50aWNhbCBzdGFja1xuICogbmFtZSBmb3IgYSBnaXZlbiBicmFuY2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZUJyYW5jaE5hbWVTY3JpcHQoKTogc3RyaW5nW10ge1xuICByZXR1cm4gW1xuICAgICdDTEVBTl9CUkFOQ0hfTkFNRT0kKGVjaG8gXCIkQ0xFQU5fQlJBTkNIX05BTUVcIiB8IHNlZCAtRSBcXCdzL1teQS1aYS16MC05XSsvLS9nOyBzL14tKy8vOyBzLy0rJC8vXFwnKScsXG4gICAgJ2lmIFtbICEgXCIkQ0xFQU5fQlJBTkNIX05BTUVcIiA9fiBeW0EtWmEtel0gXV07IHRoZW4nLFxuICAgICcgIENMRUFOX0JSQU5DSF9OQU1FPVwicHItJHtDTEVBTl9CUkFOQ0hfTkFNRX1cIicsXG4gICAgJ2ZpJyxcbiAgXTtcbn1cblxuLyoqXG4gKiBKb2lucyBjb21tYW5kcyB3aXRoIGA7YCBpbnN0ZWFkIG9mIGAmJmAvYHx8YCBzbyB0aGUgcmVzdWx0IGlzIHZhbGlkIGZvciBhIHN3YW1wXG4gKiBjb21tYW5kL3NoZWxsIG1vZGVsJ3MgYHJ1bjpgIHZhbHVlIG9uIGJvdGggUE9TSVggc2hlbGxzIGFuZCBXaW5kb3dzIFBvd2VyU2hlbGwgNS4xXG4gKiAod2hpY2ggaGFzIG5vIGAmJmAvYHx8YCBjaGFpbiBvcGVyYXRvcnMgYmVmb3JlIHB3c2ggNykuIFVubGlrZSBgJiZgLCBgO2AgZG9lcyBub3RcbiAqIHNob3J0LWNpcmN1aXQgb24gZmFpbHVyZSDigJQgY2FsbGVycyB0aGF0IG5lZWQgZmFpbHVyZSB0byBzdG9wIHRoZSBzZXF1ZW5jZSBzaG91bGQgc3BsaXRcbiAqIGludG8gc2VwYXJhdGUgd29ya2Zsb3cgc3RlcHMgd2l0aCB0aGVpciBvd24gYGFzc2VydGAgZ2F0ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoaXNcbiAqIGZvciBjb250cm9sIGZsb3cuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaGVsbFBvcnRhYmxlU2VxdWVuY2UoLi4uY29tbWFuZHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvbW1hbmRzLmpvaW4oJzsgJyk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHBvcnRhYmxlIGZvcmNlLWRlbGV0ZSBmb3IgYSBzaW5nbGUgZmlsZSwgZm9yIHVzZSBpbiBhIHN3YW1wIGNvbW1hbmQvc2hlbGxcbiAqIG1vZGVsJ3MgYHJ1bjpgIHZhbHVlIGluIHBsYWNlIG9mIGBybSAtZiA8cGF0aD5gIChhbWJpZ3VvdXMgd2l0aCBQb3dlclNoZWxsIDUuMSdzXG4gKiBgUmVtb3ZlLUl0ZW0gLUZpbHRlcmAgYWxpYXMpLiBNYXRjaGVzIHRoZSBmaXggYWxyZWFkeSB2YWxpZGF0ZWQgaW4gZXhtYW4jMTM2LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hlbGxQb3J0YWJsZUZvcmNlRGVsZXRlKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgbm9kZSAtZSBcInJlcXVpcmUoJ2ZzJykucm1TeW5jKCcke3BhdGh9JywgeyBmb3JjZTogdHJ1ZSB9KVwiYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZVRzKHZhbHVlOiBhbnksIGRlcHRoID0gMSk6IHN0cmluZyB7XG4gIGNvbnN0IHBhZCA9ICcgICcucmVwZWF0KGRlcHRoKTtcbiAgY29uc3QgaW5uZXJQYWQgPSAnICAnLnJlcGVhdChkZXB0aCArIDEpO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIGAnJHt2YWx1ZX0nYDtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBjb25zdCBpdGVtcyA9IHZhbHVlLm1hcCh2ID0+IGAke2lubmVyUGFkfSR7c2VyaWFsaXplVHModiwgZGVwdGggKyAxKX1gKS5qb2luKCcsXFxuJyk7XG4gICAgcmV0dXJuIGBbXFxuJHtpdGVtc30sXFxuJHtwYWR9XWA7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpXG4gICAgICAubWFwKChbaywgdl0pID0+IGAke2lubmVyUGFkfSR7a306ICR7c2VyaWFsaXplVHModiwgZGVwdGggKyAxKX1gKVxuICAgICAgLmpvaW4oJyxcXG4nKTtcbiAgICByZXR1cm4gYHtcXG4ke2VudHJpZXN9LFxcbiR7cGFkfX1gO1xuICB9XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkbWVDb250ZW50cyhcbiAgcHJvamVjdE5hbWU6IHN0cmluZyxcbiAgZTJlVGVzdGluZyA9IHRydWUsXG4gIHBhY2thZ2VNYW5hZ2VyOiBOb2RlUGFja2FnZU1hbmFnZXIgPSBOb2RlUGFja2FnZU1hbmFnZXIuWUFSTl9DTEFTU0lDLFxuKSB7XG4gIGNvbnN0IHRlc3RFMmVDb21tYW5kID0gcnVuU2NyaXB0Q29tbWFuZChwYWNrYWdlTWFuYWdlciwgJ3Rlc3Q6ZTJlJyk7XG4gIHJldHVybiBbXG4gICAgYCMgJHtwcm9qZWN0TmFtZX1gLFxuICAgICcnLFxuICAgICdUaGlzIHByb2plY3Qgd2FzIGJvb3RzdHJhcHBlZCB3aXRoIFtCYXRtYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9tYWNlZG9uLXRlY2hub2xvZ2llcy9wbGF0Zm9ybS1jb21tb24pLicsXG4gICAgJycsXG4gICAgJyMjIFdoYXQgQmF0bWFuIENyZWF0ZWQnLFxuICAgICcnLFxuICAgICcjIyMgQ0RLIEluZnJhc3RydWN0dXJlIChgc3JjL2ApJyxcbiAgICAnJyxcbiAgICAnfCBGaWxlIHwgRGVzY3JpcHRpb24gfCcsXG4gICAgJ3wtLS0tLS18LS0tLS0tLS0tLS0tLXwnLFxuICAgICd8IGBzcmMvbWFpbi50c2AgfCBDREsgYXBwIGVudHJ5IHBvaW50IOKAlCBpbnN0YW50aWF0ZXMgZGV2LCBzdGFnaW5nLCBhbmQgcHJvZCBgQXBwbGljYXRpb25TdGFja2BzIHwnLFxuICAgICd8IGBzcmMvTG9jYWxEZXZBcHAudHNgIHwgTG9jYWwgZGV2ZWxvcG1lbnQgQ0RLIGFwcCDigJQgdXNlZCBieSBgeWFybiBjZGs6ZGV2YCAtIGRlcGxveXMgdG8gQVdTIGZvciBzbG93ZXIgYnV0IG1vcmUgdGhvcm91Z2ggdGVzdGluZyB8JyxcbiAgICAnfCBgc3JjL0dpdEh1YlJvbGVzLnRzYCB8IENESyBhcHAgZm9yIGRlcGxveWluZyB0aGUgR2l0SHViIE9JREMgSUFNIHJvbGUgKG9uZS10aW1lIGJvb3RzdHJhcCkgfCcsXG4gICAgJ3wgYHNyYy9zdGFja3MvQXBwbGljYXRpb25TdGFjay50c2AgfCBZb3VyIHByaW1hcnkgc3RhY2sg4oCUIGV4dGVuZCBpdCB0byBhZGQgcmVzb3VyY2VzIHwnLFxuICAgICd8IGBzcmMvc3RhY2tzL0Jhc2VBcHBsaWNhdGlvblN0YWNrLnRzYCB8IEJhc2Ugc3RhY2sgd2l0aCBBUEksIHN0YXRpYyB3ZWJzaXRlLCBEYXRhZG9nLCBhbmQgUm91dGUgNTMgd2lyZWQgdXAgfCcsXG4gICAgJ3wgYHNyYy9zdGFja3MvR2l0SHViUm9sZXNTdGFjay50c2AgfCBJQU0gcm9sZSBzdGFjayBmb3IgR2l0SHViIEFjdGlvbnMgT0lEQyBhdXRoZW50aWNhdGlvbiB8JyxcbiAgICAnfCBgc3JjL2NvbnN0cnVjdHMvQXBpLnRzYCB8IEFQSSBHYXRld2F5ICsgTGFtYmRhIGNvbnN0cnVjdCB3aXRoIENsZXJrIEpXVCBhdXRob3JpemVyIHwnLFxuICAgICd8IGBzcmMvY29uc3RydWN0cy9TdGF0aWNXZWJzaXRlLnRzYCB8IENsb3VkRnJvbnQgKyBTMyArIEFDTSArIFJvdXRlIDUzIGNvbnN0cnVjdCB8JyxcbiAgICAnfCBgc3JjL2NvbnN0cnVjdHMvaGFuZGxlci9BcGkuRnVuY3Rpb24udHNgIHwgTGFtYmRhIGhhbmRsZXIgZW50cnkgcG9pbnQsIGJhc2ljIHdyYXBwZXIgYXJvdW5kIEV4cHJlc3MtY29tcGF0aWJsZSBhcHAgY29kZSB8JyxcbiAgICAnfCBgc3JjL2FzcGVjdHMvRGF0YURvZ0FzcGVjdC50c2AgfCBDREsgYXNwZWN0IHRoYXQgd2lyZXMgYWxsIExhbWJkYSBmdW5jdGlvbnMgdG8gRGF0YWRvZyB8JyxcbiAgICAnJyxcbiAgICAnIyMjIEZyb250ZW5kIChgd2ViL2ApJyxcbiAgICAnJyxcbiAgICAnfCBGaWxlIHwgRGVzY3JpcHRpb24gfCcsXG4gICAgJ3wtLS0tLS18LS0tLS0tLS0tLS0tLXwnLFxuICAgICd8IGB3ZWIvc3JjL21haW4udHN4YCB8IFJlYWN0IGFwcCBlbnRyeSBwb2ludCB3aXRoIENsZXJrIGFuZCBSZWFjdCBRdWVyeSBwcm92aWRlcnMgfCcsXG4gICAgJ3wgYHdlYi9zcmMvQXBwLnRzeGAgfCBSb290IGFwcGxpY2F0aW9uIGNvbXBvbmVudCB8JyxcbiAgICAnfCBgd2ViL3NyYy9BcHAuY3NzYCAvIGB3ZWIvc3JjL2luZGV4LmNzc2AgfCBCYXNlIHN0eWxlc2hlZXRzIChUYWlsd2luZCBDU1MgdjQpIHwnLFxuICAgICd8IGB3ZWIvc3JjL2NvbmZpZy50c2AgfCBgdXNlQ29uZmlnKClgIGhvb2sg4oCUIGxvYWRzIHJ1bnRpbWUgY29uZmlnIGZyb20gYGNvbmZpZy5qc29uYCB8JyxcbiAgICAnfCBgd2ViL3NyYy9zZXJ2aWNlcy9BcGlTZXJ2aWNlLnRzYCB8IGB1c2VBcGlRdWVyeSgpYCAvIGB1c2VBcGlNdXRhdGlvbigpYCDigJQgYXV0aGVudGljYXRlZCBBUEkgaG9va3MsIGNhY2hlZCBwZXIgcGF0aCB8JyxcbiAgICAnfCBgd2ViL3NyYy9oZWxwZXJzL2AgfCBgcmVxdWVzdHMudHNgLCBgSHR0cEVycm9yLnRzYCwgYGVycm9ycy50c2AsIGByZXRyeS50c2Ag4oCUIHRoZSByZXF1ZXN0IGFuZCBlcnJvciBoZWxwZXJzIGBBcGlTZXJ2aWNlYCBpcyBidWlsdCBvbiB8JyxcbiAgICAnfCBgd2ViL3B1YmxpYy9jb25maWcuanNvbmAgfCBSdW50aW1lIGNvbmZpZyAoQVBJIGJhc2UgVVJMLCBDbGVyayBwdWJsaXNoYWJsZSBrZXkpIHwnLFxuICAgIC4uLihlMmVUZXN0aW5nID8gW1xuICAgICAgJ3wgYHdlYi9wbGF5d3JpZ2h0LmNvbmZpZy50c2AgfCBQbGF5d3JpZ2h0IGUyZSBjb25maWcg4oCUIHNlZSBgd2ViL2UyZS9SRUFETUUubWRgIHwnLFxuICAgICAgYHwgXFxgd2ViL2UyZS9cXGAgfCBQbGF5d3JpZ2h0IGUyZSBzdWl0ZSAoXFxgJHt0ZXN0RTJlQ29tbWFuZH1cXGApOyBhbHNvIHJ1biBpbiBDSSBhZ2FpbnN0IGVhY2ggUFIncyBkZXBsb3llZCBVUkwgfGAsXG4gICAgXSA6IFtdKSxcbiAgICAnJyxcbiAgICAnIyMjIEdpdEh1YiBBY3Rpb25zIFdvcmtmbG93cyAoYC5naXRodWIvd29ya2Zsb3dzL2ApJyxcbiAgICAnJyxcbiAgICAnfCBGaWxlIHwgVHJpZ2dlciB8JyxcbiAgICAnfC0tLS0tLXwtLS0tLS0tLS18JyxcbiAgICAnfCBgcHItZGVwbG95LnltbGAgfCBPbiBwdWxsIHJlcXVlc3Qgb3Blbi91cGRhdGUg4oCUIGRlcGxveXMgYSBwZXItUFIgZGV2IHN0YWNrIHwnLFxuICAgICd8IGBwci1jbGVhbnVwLnltbGAgfCBPbiBwdWxsIHJlcXVlc3QgY2xvc2Ug4oCUIHRlYXJzIGRvd24gdGhlIHBlci1QUiBkZXYgc3RhY2sgfCcsXG4gICAgJ3wgYHN0YWdpbmctZGVwbG95LnltbGAgfCBPbiBwdXNoIHRvIGBtYWluYCDigJQgZGVwbG95cyB0byBzdGFnaW5nIHwnLFxuICAgICd8IGBwcm9kdWN0aW9uLWRlcGxveS55bWxgIHwgTWFudWFsbHkgdHJpZ2dlcmVkIOKAlCBkZXBsb3lzIHRvIHByb2R1Y3Rpb24gfCcsXG4gICAgJycsXG4gICAgJy0tLScsXG4gICAgJycsXG4gICAgJyMjIEZpbGVzIFlvdSBDYW4gRWRpdCcsXG4gICAgJycsXG4gICAgJ1RoZXNlIGZpbGVzIGFyZSBnZW5lcmF0ZWQgb25jZSBhbmQgbmV2ZXIgb3ZlcndyaXR0ZW4gYnkgQmF0bWFuLiBNb2RpZnkgdGhlbSBmcmVlbHkuJyxcbiAgICAnJyxcbiAgICAnfCBGaWxlIHwgV2hhdCB0byBkbyB3aXRoIGl0IHwnLFxuICAgICd8LS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfCcsXG4gICAgJ3wgYC5wcm9qZW5yYy50cyB8IFRoZSBtYWluIFByb2plbiBjb25maWd1cmF0aW9uIGZpbGUuIEFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzIGZvciBlaXRoZXIgdGhlIEFQSSBvciB0aGUgV2ViIGZyb250ZW5kIG5lZWQgdG8gYmUgYWRkZWQgaGVyZSB8JyxcbiAgICAnfCBgc3JjL3N0YWNrcy9BcHBsaWNhdGlvblN0YWNrLnRzYCB8ICoqU3RhcnQgaGVyZS4qKiBBZGQgQ0RLIGNvbnN0cnVjdHMgdG8gYnVpbGQgeW91ciBpbmZyYXN0cnVjdHVyZSB8JyxcbiAgICAnfCBgc3JjL2FwaS9hcHAudHMgfCBUaGUgbWFpbiBtb25vbGl0aGljIEFQSSBSRVNUIHNlcnZlciBmaWxlLiBNYWluIGZpbGUgeW91IHNob3VsZCBiZSBtb2RpZnlpbmcgfCcsXG4gICAgJ3wgYHdlYi9zcmMvQXBwLnRzeGAgfCBCdWlsZCB5b3VyIFVJIGhlcmUgfCcsXG4gICAgJ3wgYHdlYi9zcmMvQXBwLmNzc2AgLyBgd2ViL3NyYy9pbmRleC5jc3NgIHwgU3R5bGUgeW91ciBhcHBsaWNhdGlvbiB8JyxcbiAgICAnfCBgd2ViL3NyYy9tYWluLnRzeGAgfCBBZGp1c3QgdG9wLWxldmVsIHByb3ZpZGVycyBvciByb3V0aW5nIHwnLFxuICAgICd8IGB3ZWIvc3JjL3NlcnZpY2VzL0FwaVNlcnZpY2UudHNgIC8gYHdlYi9zcmMvaGVscGVycy9gIHwgQWRkIEFQSSBzZXJ2aWNlIGhvb2tzIGFsb25nc2lkZSBgQXBpU2VydmljZS50c2AsIG9yIGFkanVzdCB0aGUgcmVxdWVzdCBoZWxwZXJzIHwnLFxuICAgICd8IGB3ZWIvcHVibGljL2NvbmZpZy5qc29uYCB8IFVwZGF0ZSBmb3IgbG9jYWwgZGV2ZWxvcG1lbnQgKEFQSSBVUkwsIENsZXJrIGtleSkgfCcsXG4gICAgLi4uKGUyZVRlc3RpbmcgPyBbXG4gICAgICAnfCBgd2ViL3BsYXl3cmlnaHQuY29uZmlnLnRzYCAvIGB3ZWIvZTJlL2AgfCBQbGF5d3JpZ2h0IGUyZSBzdWl0ZSDigJQgZXh0ZW5kIGl0IHdpdGggcmVhbCBmbG93czsgc2VlIGB3ZWIvZTJlL1JFQURNRS5tZGAgfCcsXG4gICAgXSA6IFtdKSxcbiAgICAnJyxcbiAgICAnIyMgRmlsZXMgWW91IENhbm5vdCBFZGl0JyxcbiAgICAnJyxcbiAgICAnVGhlc2UgZmlsZXMgYXJlICoqbWFuYWdlZCBieSBCYXRtYW4qKiBhbmQgd2lsbCBiZSBvdmVyd3JpdHRlbiBldmVyeSB0aW1lIGBucHggcHJvamVuYCBydW5zLiBEbyBub3QgZWRpdCB0aGVtIGRpcmVjdGx5IOKAlCBtYWtlIGNoYW5nZXMgaW4gYC5wcm9qZW5yYy50c2AgaW5zdGVhZC4nLFxuICAgICcnLFxuICAgICc+IFshSU1QT1JUQU5UXScsXG4gICAgJz4gSWYgeW91IGhhdmUgQU5ZIGNoYW5nZXMgeW91IHdhbnQgdG8gbWFrZSB0byB0aGVzZSBmaWxlcywgbm90aWZ5ICN0ZWFtLWJhdG1hbiBvbiBTbGFjay4gJyxcbiAgICAnPiBXZSBtYWludGFpbiB0aGVzZSBmaWxlcyBhcyBwYXJ0IG9mIHRoZSBjb3JlIEJhdG1hbiBleHBlcmllbmNlLCBhbmQgeW91ciBmZWVkYmFjayBpcyBjcnVjaWFsIHRvIGVuc3VyZSB0aGV5IG1lZXQgeW91ciBuZWVkcy4nLFxuICAgICcnLFxuICAgICd8IEZpbGUgfCBXaHkgaXRcXCdzIG1hbmFnZWQgfCcsXG4gICAgJ3wtLS0tLS18LS0tLS0tLS0tLS0tLS0tLS18JyxcbiAgICAnfCBgc3JjL3N0YWNrcy9CYXNlQXBwbGljYXRpb25TdGFjay50c2AgfCBDb3JlIHN0YWNrIHdpcmluZyDigJQgdXBkYXRlZCB3aXRoIEJhdG1hbiByZWxlYXNlcyB8JyxcbiAgICAnfCBgc3JjL2FzcGVjdHMvRGF0YURvZ0FzcGVjdC50c2AgfCBEYXRhZG9nIENESyBhc3BlY3QgfCcsXG4gICAgJ3wgYHdlYi92aXRlLmNvbmZpZy50c2AgfCBWaXRlIGNvbmZpZ3VyYXRpb24gfCcsXG4gICAgJ3wgYHdlYi9lc2xpbnQuY29uZmlnLmpzYCB8IEVTTGludCBjb25maWd1cmF0aW9uIHwnLFxuICAgICd8IGB3ZWIvcG9zdGNzcy5jb25maWcuanNgIHwgUG9zdENTUyAvIFRhaWx3aW5kIGNvbmZpZ3VyYXRpb24gfCcsXG4gICAgJ3wgYHdlYi9pbmRleC5odG1sYCB8IEhUTUwgZW50cnkgcG9pbnQgfCcsXG4gICAgJ3wgYHdlYi90c2NvbmZpZy5qc29uYCAvIGB3ZWIvdHNjb25maWcuYXBwLmpzb25gIC8gYHdlYi90c2NvbmZpZy5ub2RlLmpzb25gIHwgVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIHwnLFxuICAgICd8IGB3ZWIvc3JjL3ZpdGUtZW52LmQudHNgIHwgVml0ZSB0eXBlIGRlY2xhcmF0aW9ucyB8JyxcbiAgICAnfCBgd2ViL3NyYy9jb25maWcudHNgIHwgUnVudGltZSBjb25maWcgaG9vayDigJQgc2hhcGUgZHJpdmVuIGJ5IGAucHJvamVucmMudHNgIHwnLFxuICAgICd8IGAuZ2l0aHViL0NPREVPV05FUlNgIHwgQ29kZSBvd25lcnNoaXAgcG9saWN5IHwnLFxuICAgICd8IGAuZ2l0aHViL3dvcmtmbG93cy8qLnltbGAgfCBBbGwgQ0kvQ0Qgd29ya2Zsb3dzIHwnLFxuICAgICd8IGBhcmNoaXRlY3R1cmUtcnVsZXMvY2hlY2sudHNgLCBgdHNjb25maWcuanNvbmAsIGBSRUFETUUubWRgIHwgQXJjaGl0ZWN0dXJlIHJ1bGUgZW5naW5lIHwnLFxuICAgICd8IGBhdHRlc3RhdGlvbi9tYW5pZmVzdC50c2AsIGB2ZXJpZnkudHNgLCBgdHNjb25maWcuanNvbmAgfCBQUiBhdHRlc3RhdGlvbiBtZWNoYW5pc20gfCcsXG4gICAgJ3wgYG9wZW5zcGVjLWdhdGVzL2NoZWNrLXRhc2tzLWNvbXBsZXRlLnRzYCwgYHRzY29uZmlnLmpzb25gIHwgT3BlblNwZWMgdGFzay1jb21wbGV0aW9uIGdhdGUgfCcsXG4gICAgJ3wgYHN3YW1wLWJvb3RzdHJhcC9wdWxsLWV4dGVuc2lvbnMudHNgLCBgdHNjb25maWcuanNvbmAgfCBQdWxscyBzd2FtcCBleHRlbnNpb25zIGF0IHRoZWlyIHBpbm5lZCB2ZXJzaW9ucyB8JyxcbiAgICAnfCBgd29ya2Zsb3dzL3dvcmtmbG93LSoueWFtbGAgfCBTd2FtcCB3b3JrZmxvd3MgdGhlIHNvZnR3YXJlIGZhY3RvcnkgcnVucyB8JyxcbiAgICAnJyxcbiAgICAnPiAqKlRpcDoqKiBGaWxlcyB3aXRoIGEgYH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5weCBwcm9qZW5cIi4gfn5gIGhlYWRlciBhcmUgbWFuYWdlZCBmaWxlcy4nLFxuICAgICcnLFxuICAgICcjIyMgU29mdHdhcmUgRmFjdG9yeSAoYG1vZGVscy9gLCBgYXJjaGl0ZWN0dXJlLXJ1bGVzL3J1bGVzLmpzb25gKScsXG4gICAgJycsXG4gICAgJ0JhdG1hbiBhbHNvIHNlZWRzIGEgW3N3YW1wXShodHRwczovL2dpdGh1Yi5jb20vc3dhbXAtY2x1Yi9zd2FtcCkgc29mdHdhcmUnLFxuICAgICdmYWN0b3J5IOKAlCBhIGBAc3dhbXAvc29mdHdhcmUtZmFjdG9yeWAgc3RhdGUgbWFjaGluZSB0aGF0IGRyaXZlcyBhIEdpdEh1YicsXG4gICAgJ2lzc3VlIHRocm91Z2ggaW50YWtlLCBPcGVuU3BlYyBwbGFubmluZywgaW1wbGVtZW50YXRpb24sIHByZS1QUicsXG4gICAgJ3ZlcmlmaWNhdGlvbiwgYW5kIGFuIG9wZW5lZCBQUi4gVGhlIHNlZWQgZmlsZXMgdW5kZXIgYG1vZGVscy8qKi8qLnlhbWxgIGFuZCcsXG4gICAgJ2BhcmNoaXRlY3R1cmUtcnVsZXMvcnVsZXMuanNvbmAgYXJlIGdlbmVyYXRlZCBvbmNlIChsaWtlIHRoZSBmaWxlcyBpbicsXG4gICAgJ1wiRmlsZXMgWW91IENhbiBFZGl0XCIgYWJvdmUpIOKAlCB0dW5lIHRoZSBmYWN0b3J5XFwncyBzdGFnZXMvZ2F0ZXMgb3IgYWRkIHlvdXInLFxuICAgICdvd24gYXJjaGl0ZWN0dXJlIHJ1bGVzIGRpcmVjdGx5IGluIHRob3NlIGZpbGVzLicsXG4gICAgJycsXG4gICAgJ2Bzd2FtcCBpbml0YCBydW5zIGF1dG9tYXRpY2FsbHkgYXMgcGFydCBvZiBgaW5zdGFsbGAvYGluc3RhbGw6Y2lgIChhIHNpbGVudCcsXG4gICAgJ25vLW9wIGlmIGBzd2FtcGAgaXNuXFwndCBvbiBQQVRILCBlLmcuIGluIENJKSwgc28gdGhlIHJlcG8gc3RheXMgaW5pdGlhbGl6ZWQnLFxuICAgICd3aXRob3V0IGEgc2VwYXJhdGUgc3RlcC4nLFxuICAgICcnLFxuICAgICdgc3dhbXBWZXJzaW9uYCBpbiBgLnN3YW1wLnlhbWxgIGlzIHRoZSBtaW5pbXVtIHN3YW1wIENMSSB0aGUgcmVwbyBuZWVkczogdGhlJyxcbiAgICAndmVyc2lvbiBpdCB3YXMgbGFzdCB1cGdyYWRlZCB3aXRoLiBzd2FtcCBkb2VzblxcJ3Qga2VlcCBvbGQgYnVpbGRzLCBzbyBpbnN0YWxsJyxcbiAgICAndGhlIGN1cnJlbnQgYHN0YWJsZWAgcmVsZWFzZSByYXRoZXIgdGhhbiB0aGF0IGV4YWN0IHZlcnNpb246JyxcbiAgICAnJyxcbiAgICAnYGBgYmFzaCcsXG4gICAgJyMgbWFjT1MgLyBMaW51eCcsXG4gICAgJ2N1cmwgLWZzU0wgaHR0cHM6Ly9zd2FtcC5jbHViL2luc3RhbGwuc2ggfCBzaCcsXG4gICAgJycsXG4gICAgJyMgV2luZG93cyAoUG93ZXJTaGVsbCknLFxuICAgICdpcm0gaHR0cHM6Ly9zd2FtcC5jbHViL2luc3RhbGwucHMxIHwgaWV4JyxcbiAgICAnYGBgJyxcbiAgICAnJyxcbiAgICAnT25lLXRpbWUgc2V0dXAgYmV5b25kIHRoYXQsIGFmdGVyIHlvdXIgZmlyc3QgYG5weCBwcm9qZW5gOicsXG4gICAgJycsXG4gICAgJ2BgYGJhc2gnLFxuICAgICcjIFB1bGxzIGVhY2ggZXh0ZW5zaW9uIGF0IHRoZSB2ZXJzaW9uIHBpbm5lZCBpbicsXG4gICAgJyMgZXh0ZW5zaW9ucy9tb2RlbHMvdXBzdHJlYW1fZXh0ZW5zaW9ucy5qc29uIChvciB0aGUgbGF0ZXN0JyxcbiAgICAnIyBzb2Z0d2FyZS1mYWN0b3J5L2dpdGh1YiBleHRlbnNpb25zIGluIGEgcmVwbyB3aXRoIG5vIGxvY2tmaWxlIHlldCksJyxcbiAgICAnIyByZXN0b3JlcyB0aGUgbG9ja2ZpbGUgYW5kIGNvbW1pdHRlZCBza2lsbCBmaWxlcyBmcm9tIGdpdCwgYW5kIGNyZWF0ZXMgdGhlJyxcbiAgICAnIyByZXBvXFwncyBzZWNyZXRzIHZhdWx0JyxcbiAgICAnbnB4IHByb2plbiBzd2FtcDpib290c3RyYXAnLFxuICAgICcnLFxuICAgICcjIFRoZW4gc3RvcmUgYSBHaXRIdWIgdG9rZW4gdGhlIGZhY3RvcnkgY2FuIG9wZW4gUFJzIHdpdGgnLFxuICAgICdzd2FtcCB2YXVsdCBwdXQgPHJlcG8+LXNlY3JldHMgR0lUSFVCX1RPS0VOIC0tcmVmcmVzaC1mcm9tIFwiZ2ggYXV0aCB0b2tlblwiJyxcbiAgICAnYGBgJyxcbiAgICAnJyxcbiAgICAnLS0tJyxcbiAgICAnJyxcbiAgICAnIyMgV2hlcmUgdG8gU3RhcnQnLFxuICAgICcnLFxuICAgICcxLiAqKmBzcmMvc3RhY2tzL0FwcGxpY2F0aW9uU3RhY2sudHNgKiog4oCUIEFkZCB5b3VyIENESyBjb25zdHJ1Y3RzIGhlcmUuIFRoZSBiYXNlIHN0YWNrIGFscmVhZHkgcHJvdmlkZXMgYHRoaXMuYXBpYCwgYHRoaXMuaG9zdGVkWm9uZWAsIGB0aGlzLmRhdGFkb2dgLCBhbmQgKHdoZW4gdGhlIHN0YWNrIGNyZWF0ZXMgb25lKSBgdGhpcy52cGNgIGFzIHByb3RlY3RlZCBwcm9wZXJ0aWVzLicsXG4gICAgJycsXG4gICAgJzIuICoqYHdlYi9gKiog4oCUIEJ1aWxkIHlvdXIgZnJvbnRlbmQuIFN0YXJ0IHdpdGggYHdlYi9zcmMvQXBwLnRzeGAgYW5kIGFkZCBzZXJ2aWNlcyBhbG9uZ3NpZGUgYHdlYi9zcmMvc2VydmljZXMvQXBpU2VydmljZS50c2AuJyxcbiAgICAnJyxcbiAgICAnMy4gKipgc3JjL2FwaS9hcHAudHNgKiog4oCUIEltcGxlbWVudCB5b3VyIGJhY2tlbmQgTGFtYmRhIGhhbmRsZXIgbG9naWMgaGVyZS4nLFxuICAgICcnLFxuICAgICc0LiAqKmAucHJvamVucmMudHNgKiogLSBNYW5hZ2VzIHByb2plY3QgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9uLiBSdW4gYG5weCBwcm9qZW5gIGFmdGVyIG1ha2luZyBhbnkgY2hhbmdlcyB0byB0aGlzIGZpbGUuJyxcbiAgICAnLS0tJyxcbiAgICAnJyxcbiAgICAnIyMgRGV2ZWxvcG1lbnQgV29ya2Zsb3cnLFxuICAgICcnLFxuICAgICdgYGBiYXNoJyxcbiAgICAnIyBJbnN0YWxsIGRlcGVuZGVuY2llcycsXG4gICAgJ3lhcm4gaW5zdGFsbCcsXG4gICAgJycsXG4gICAgJyMgU3RhcnQgbG9jYWwgZGV2IHNlcnZlciAoYmFja2VuZCBMYW1iZGEgKyBWaXRlIGZyb250ZW5kIGluIHBhcmFsbGVsKScsXG4gICAgJ3lhcm4gZGV2JyxcbiAgICAnJyxcbiAgICAnIyBEZXBsb3kgYSBwZXJzb25hbCBkZXYgc3RhY2sgdG8gQVdTIGFzIGFuIGFsdGVybmF0aXZlIHRvIGxvY2FsIGRldmVsb3BtZW50LCBwcm92aWRlcyBtb3JlIHRob3JvdWdoIGVuZC10by1lbmQgdGVzdGluZycsXG4gICAgJ3lhcm4gY2RrOmRldiAtLWNvbnRleHQgbG9jYWwtZGV2LXByZWZpeD15b3VyLWhhbmRsZSBkZXBsb3knLFxuICAgICcnLFxuICAgICcjIFJlZGVwbG95IHlvdXIgcGVyc29uYWwgZGV2IHN0YWNrIGZhc3Q6IGFmdGVyIHRoZSBmaXJzdCBkZXBsb3kgYWJvdmUsIGtlZXAnLFxuICAgIFwiIyByZXVzaW5nIHRoZSBzYW1lIHN0YWNrIChkb24ndCBkZWxldGUgaXQgYmV0d2VlbiBicmFuY2hlcykgYW5kIGl0ZXJhdGUgd2l0aFwiLFxuICAgICcjIGhvdHN3YXAtZmFsbGJhY2sgaW5zdGVhZCBvZiBhIGZ1bGwgQ2xvdWRGb3JtYXRpb24gZGVwbG95bWVudCcsXG4gICAgJ3lhcm4gY2RrOmRldjpob3Rzd2FwIC0tY29udGV4dCBsb2NhbC1kZXYtcHJlZml4PXlvdXItaGFuZGxlJyxcbiAgICAnJyxcbiAgICAnIyBSdW4gdGVzdHMnLFxuICAgICd5YXJuIHRlc3QnLFxuICAgICcnLFxuICAgICcjIFJlLXN5bnRoZXNpemUgcHJvamVjdCBmaWxlcyBhZnRlciBlZGl0aW5nIC5wcm9qZW5yYy50cycsXG4gICAgJ25weCBwcm9qZW4nLFxuICAgICdgYGAnLFxuICAgICcnLFxuICAgICc+IFshSU1QT1JUQU5UXScsXG4gICAgJz4gYC0taG90c3dhcC1mYWxsYmFja2AgKHVzZWQgYnkgYGNkazpkZXY6aG90c3dhcGAgYW5kIHRoZSBgd2F0Y2hgIHRhc2spIGlzIGZvcicsXG4gICAgJz4gcGVyc29uYWwgZGV2IHN0YWNrcyBvbmx5IOKAlCBuZXZlciBydW4gaXQgYWdhaW5zdCBzdGFnaW5nIG9yIHByb2QuJyxcbiAgICAnJyxcbiAgICAnLS0tJyxcbiAgICAnJyxcbiAgICAnIyMgVXBncmFkaW5nIEJhdG1hbicsXG4gICAgJycsXG4gICAgJ2BgYGJhc2gnLFxuICAgICd5YXJuIGFkZCBAbWFjZWRvbi10ZWNobm9sb2dpZXMvYmF0bWFuQGxhdGVzdCcsXG4gICAgJ25weCBwcm9qZW4nLFxuICAgICdgYGAnLFxuICAgICcnLFxuICAgICdUaGlzIHVwZGF0ZXMgYWxsIG1hbmFnZWQgZmlsZXMgdG8gdGhlIGxhdGVzdCBCYXRtYW4gc3RhbmRhcmRzLiBZb3VyIGVkaXRhYmxlIHNhbXBsZSBmaWxlcyBhcmUgbmV2ZXIgdG91Y2hlZC4nLFxuICBdLmpvaW4oJ1xcbicpO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.WorkflowAutoDiscover = void 0;
|
|
37
|
-
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
38
|
-
const fs = __importStar(require("fs"));
|
|
39
|
-
const path = __importStar(require("path"));
|
|
40
|
-
const projen_1 = require("projen");
|
|
41
|
-
class WorkflowAutoDiscover extends projen_1.Component {
|
|
42
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.WorkflowAutoDiscover", version: "1.29.0" };
|
|
43
|
-
constructor(project) {
|
|
44
|
-
super(project);
|
|
45
|
-
}
|
|
46
|
-
synthesize() {
|
|
47
|
-
super.synthesize();
|
|
48
|
-
const workflowsDir = path.join(this.project.outdir, 'src/workflows');
|
|
49
|
-
let workflowFiles = [];
|
|
50
|
-
if (fs.existsSync(workflowsDir)) {
|
|
51
|
-
workflowFiles = fs.readdirSync(workflowsDir)
|
|
52
|
-
.filter(f => f.endsWith('.json'))
|
|
53
|
-
.sort();
|
|
54
|
-
}
|
|
55
|
-
const constructsDir = path.join(this.project.outdir, 'src/constructs');
|
|
56
|
-
fs.mkdirSync(constructsDir, { recursive: true });
|
|
57
|
-
for (const file of workflowFiles) {
|
|
58
|
-
const baseName = file.replace(/\.json$/, '');
|
|
59
|
-
const className = toClassName(baseName);
|
|
60
|
-
const content = generateWorkflowFile(className, file);
|
|
61
|
-
fs.writeFileSync(path.join(constructsDir, `${className}.ts`), content);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
exports.WorkflowAutoDiscover = WorkflowAutoDiscover;
|
|
66
|
-
function generateWorkflowFile(className, workflowJsonName) {
|
|
67
|
-
return [
|
|
68
|
-
'// ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen".',
|
|
69
|
-
"import { join } from 'path';",
|
|
70
|
-
"import { ISecret } from 'aws-cdk-lib/aws-secretsmanager';",
|
|
71
|
-
"import { Construct } from 'constructs';",
|
|
72
|
-
"import { Replacement, WorkflowProvider } from './WorkflowProvider';",
|
|
73
|
-
'',
|
|
74
|
-
`export interface ${className}Props {`,
|
|
75
|
-
' readonly secret: ISecret;',
|
|
76
|
-
' readonly replacements?: Replacement[];',
|
|
77
|
-
'}',
|
|
78
|
-
'',
|
|
79
|
-
`export class ${className} extends WorkflowProvider {`,
|
|
80
|
-
` constructor(scope: Construct, id: string, props: ${className}Props) {`,
|
|
81
|
-
' super(scope, id, {',
|
|
82
|
-
` workflowFilePath: join(__dirname, '../workflows/${workflowJsonName}'),`,
|
|
83
|
-
' secret: props.secret,',
|
|
84
|
-
' replacements: props.replacements,',
|
|
85
|
-
' });',
|
|
86
|
-
' }',
|
|
87
|
-
'}',
|
|
88
|
-
'',
|
|
89
|
-
].join('\n');
|
|
90
|
-
}
|
|
91
|
-
function toPascalCase(str) {
|
|
92
|
-
return str
|
|
93
|
-
.split(/[-_\s]+/)
|
|
94
|
-
.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
95
|
-
.join('');
|
|
96
|
-
}
|
|
97
|
-
function toClassName(baseName) {
|
|
98
|
-
const pascal = toPascalCase(baseName);
|
|
99
|
-
if (pascal.toLowerCase().endsWith('workflow')) {
|
|
100
|
-
return pascal.slice(0, -8) + 'Workflow';
|
|
101
|
-
}
|
|
102
|
-
return pascal + 'Workflow';
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29ya2Zsb3dBdXRvRGlzY292ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvV29ya2Zsb3dBdXRvRGlzY292ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsbUNBQW1DO0FBR25DLE1BQWEsb0JBQXFCLFNBQVEsa0JBQVM7O0lBQ2pELFlBQVksT0FBNEI7UUFDdEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxVQUFVO1FBQ1IsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRW5CLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDckUsSUFBSSxhQUFhLEdBQWEsRUFBRSxDQUFDO1FBRWpDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ2hDLGFBQWEsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQztpQkFDekMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDaEMsSUFBSSxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZFLEVBQUUsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFakQsS0FBSyxNQUFNLElBQUksSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEMsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RELEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxTQUFTLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDOztBQTFCSCxvREEyQkM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLFNBQWlCLEVBQUUsZ0JBQXdCO0lBQ3ZFLE9BQU87UUFDTCwrRUFBK0U7UUFDL0UsOEJBQThCO1FBQzlCLDJEQUEyRDtRQUMzRCx5Q0FBeUM7UUFDekMscUVBQXFFO1FBQ3JFLEVBQUU7UUFDRixvQkFBb0IsU0FBUyxTQUFTO1FBQ3RDLDZCQUE2QjtRQUM3QiwwQ0FBMEM7UUFDMUMsR0FBRztRQUNILEVBQUU7UUFDRixnQkFBZ0IsU0FBUyw2QkFBNkI7UUFDdEQsc0RBQXNELFNBQVMsVUFBVTtRQUN6RSx3QkFBd0I7UUFDeEIseURBQXlELGdCQUFnQixLQUFLO1FBQzlFLDZCQUE2QjtRQUM3Qix5Q0FBeUM7UUFDekMsU0FBUztRQUNULEtBQUs7UUFDTCxHQUFHO1FBQ0gsRUFBRTtLQUNILENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEdBQVc7SUFDL0IsT0FBTyxHQUFHO1NBQ1AsS0FBSyxDQUFDLFNBQVMsQ0FBQztTQUNoQixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLFFBQWdCO0lBQ25DLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM5QyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO0lBQzFDLENBQUM7SUFDRCxPQUFPLE1BQU0sR0FBRyxVQUFVLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCB9IGZyb20gJ3Byb2plbi9saWIvYXdzY2RrJztcblxuZXhwb3J0IGNsYXNzIFdvcmtmbG93QXV0b0Rpc2NvdmVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuICB9XG5cbiAgc3ludGhlc2l6ZSgpOiB2b2lkIHtcbiAgICBzdXBlci5zeW50aGVzaXplKCk7XG5cbiAgICBjb25zdCB3b3JrZmxvd3NEaXIgPSBwYXRoLmpvaW4odGhpcy5wcm9qZWN0Lm91dGRpciwgJ3NyYy93b3JrZmxvd3MnKTtcbiAgICBsZXQgd29ya2Zsb3dGaWxlczogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmIChmcy5leGlzdHNTeW5jKHdvcmtmbG93c0RpcikpIHtcbiAgICAgIHdvcmtmbG93RmlsZXMgPSBmcy5yZWFkZGlyU3luYyh3b3JrZmxvd3NEaXIpXG4gICAgICAgIC5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKCcuanNvbicpKVxuICAgICAgICAuc29ydCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnN0cnVjdHNEaXIgPSBwYXRoLmpvaW4odGhpcy5wcm9qZWN0Lm91dGRpciwgJ3NyYy9jb25zdHJ1Y3RzJyk7XG4gICAgZnMubWtkaXJTeW5jKGNvbnN0cnVjdHNEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIHdvcmtmbG93RmlsZXMpIHtcbiAgICAgIGNvbnN0IGJhc2VOYW1lID0gZmlsZS5yZXBsYWNlKC9cXC5qc29uJC8sICcnKTtcbiAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRvQ2xhc3NOYW1lKGJhc2VOYW1lKTtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBnZW5lcmF0ZVdvcmtmbG93RmlsZShjbGFzc05hbWUsIGZpbGUpO1xuICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oY29uc3RydWN0c0RpciwgYCR7Y2xhc3NOYW1lfS50c2ApLCBjb250ZW50KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVXb3JrZmxvd0ZpbGUoY2xhc3NOYW1lOiBzdHJpbmcsIHdvcmtmbG93SnNvbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBbXG4gICAgJy8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5weCBwcm9qZW5cIi4nLFxuICAgIFwiaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1wiLFxuICAgIFwiaW1wb3J0IHsgSVNlY3JldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlcic7XCIsXG4gICAgXCJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcIixcbiAgICBcImltcG9ydCB7IFJlcGxhY2VtZW50LCBXb3JrZmxvd1Byb3ZpZGVyIH0gZnJvbSAnLi9Xb3JrZmxvd1Byb3ZpZGVyJztcIixcbiAgICAnJyxcbiAgICBgZXhwb3J0IGludGVyZmFjZSAke2NsYXNzTmFtZX1Qcm9wcyB7YCxcbiAgICAnICByZWFkb25seSBzZWNyZXQ6IElTZWNyZXQ7JyxcbiAgICAnICByZWFkb25seSByZXBsYWNlbWVudHM/OiBSZXBsYWNlbWVudFtdOycsXG4gICAgJ30nLFxuICAgICcnLFxuICAgIGBleHBvcnQgY2xhc3MgJHtjbGFzc05hbWV9IGV4dGVuZHMgV29ya2Zsb3dQcm92aWRlciB7YCxcbiAgICBgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogJHtjbGFzc05hbWV9UHJvcHMpIHtgLFxuICAgICcgICAgc3VwZXIoc2NvcGUsIGlkLCB7JyxcbiAgICBgICAgICAgd29ya2Zsb3dGaWxlUGF0aDogam9pbihfX2Rpcm5hbWUsICcuLi93b3JrZmxvd3MvJHt3b3JrZmxvd0pzb25OYW1lfScpLGAsXG4gICAgJyAgICAgIHNlY3JldDogcHJvcHMuc2VjcmV0LCcsXG4gICAgJyAgICAgIHJlcGxhY2VtZW50czogcHJvcHMucmVwbGFjZW1lbnRzLCcsXG4gICAgJyAgICB9KTsnLFxuICAgICcgIH0nLFxuICAgICd9JyxcbiAgICAnJyxcbiAgXS5qb2luKCdcXG4nKTtcbn1cblxuZnVuY3Rpb24gdG9QYXNjYWxDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0clxuICAgIC5zcGxpdCgvWy1fXFxzXSsvKVxuICAgIC5tYXAod29yZCA9PiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKS50b0xvd2VyQ2FzZSgpKVxuICAgIC5qb2luKCcnKTtcbn1cblxuZnVuY3Rpb24gdG9DbGFzc05hbWUoYmFzZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBhc2NhbCA9IHRvUGFzY2FsQ2FzZShiYXNlTmFtZSk7XG4gIGlmIChwYXNjYWwudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnd29ya2Zsb3cnKSkge1xuICAgIHJldHVybiBwYXNjYWwuc2xpY2UoMCwgLTgpICsgJ1dvcmtmbG93JztcbiAgfVxuICByZXR1cm4gcGFzY2FsICsgJ1dvcmtmbG93Jztcbn1cbiJdfQ==
|