@macedon-technologies/batman 1.13.0 → 1.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +7 -5
- package/API.md +961 -1062
- package/lib/Api/ApiFiles.d.ts +5 -0
- package/lib/Api/ApiFiles.js +15 -0
- package/lib/Api/ApiFunctionFile.d.ts +4 -0
- package/lib/Api/ApiFunctionFile.js +18 -0
- package/lib/Api/ApiHelperFiles.d.ts +5 -0
- package/lib/Api/ApiHelperFiles.js +15 -0
- package/lib/Api/AppHelperFile.d.ts +4 -0
- package/lib/Api/AppHelperFile.js +63 -0
- package/lib/Api/AppMiddlewareFiles.d.ts +5 -0
- package/lib/Api/AppMiddlewareFiles.js +19 -0
- package/lib/Api/AuthMiddlewareFile.d.ts +4 -0
- package/lib/Api/AuthMiddlewareFile.js +109 -0
- package/lib/Api/CorsMiddlewareFile.d.ts +4 -0
- package/lib/Api/CorsMiddlewareFile.js +54 -0
- package/lib/Api/ErrorHandlerMiddlewareFile.d.ts +4 -0
- package/lib/Api/ErrorHandlerMiddlewareFile.js +49 -0
- package/lib/Api/ExpressApiRouterFile.d.ts +4 -0
- package/lib/Api/ExpressApiRouterFile.js +66 -0
- package/lib/Application.js +6 -6
- package/lib/BatmanProject.js +2 -4
- package/lib/BootcampApplication.js +4 -4
- package/lib/BootcampProject.js +2 -4
- package/lib/CodeOwnersFile.js +2 -4
- package/lib/LocalDevAppFile.js +2 -1
- package/lib/LocalDevFiles.d.ts +7 -0
- package/lib/LocalDevFiles.js +13 -0
- package/lib/{ApiFunctionFile.d.ts → LocalDevServerFile.d.ts} +1 -1
- package/lib/LocalDevServerFile.js +59 -0
- package/lib/ProductionDeployWorkflow.js +2 -4
- package/lib/StagingDeployWorkflow.js +2 -4
- package/lib/ViteReactProject.js +36 -2
- package/lib/WorkflowAutoDiscover.js +37 -6
- package/package.json +45 -39
- package/pnpm-workspace.yaml +6 -0
- package/lib/ApiFunctionFile.js +0 -30
package/lib/ViteReactProject.js
CHANGED
|
@@ -3,11 +3,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ViteReactProject = void 0;
|
|
4
4
|
const path_1 = require("path");
|
|
5
5
|
const projen_1 = require("projen");
|
|
6
|
+
const javascript_1 = require("projen/lib/javascript");
|
|
6
7
|
const typescript_1 = require("projen/lib/typescript");
|
|
8
|
+
function runScriptCommand(packageManager, script) {
|
|
9
|
+
switch (packageManager) {
|
|
10
|
+
case javascript_1.NodePackageManager.NPM:
|
|
11
|
+
return `npm run ${script}`;
|
|
12
|
+
case javascript_1.NodePackageManager.BUN:
|
|
13
|
+
return `bun run ${script}`;
|
|
14
|
+
case javascript_1.NodePackageManager.PNPM:
|
|
15
|
+
return `pnpm ${script}`;
|
|
16
|
+
default:
|
|
17
|
+
// all yarn variants (yarn, yarn2, yarn_classic, yarn_berry) share the `yarn` binary
|
|
18
|
+
return `yarn ${script}`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
7
21
|
/**
|
|
8
22
|
* Vite + React TypeScript project
|
|
9
23
|
*/
|
|
10
24
|
class ViteReactProject extends typescript_1.TypeScriptAppProject {
|
|
25
|
+
srcdir;
|
|
26
|
+
publicDir;
|
|
27
|
+
devCommand;
|
|
28
|
+
configFields;
|
|
11
29
|
constructor(options) {
|
|
12
30
|
const { sampleCode = true, srcdir = 'src', publicDir = 'public', title, ...restOptions } = options;
|
|
13
31
|
super({
|
|
@@ -17,6 +35,20 @@ class ViteReactProject extends typescript_1.TypeScriptAppProject {
|
|
|
17
35
|
jest: false, // Vite uses vitest typically
|
|
18
36
|
package: true,
|
|
19
37
|
disableTsconfig: true, // We'll manage tsconfig ourselves
|
|
38
|
+
packageManager: restOptions.parent.package.packageManager,
|
|
39
|
+
pnpmOptions: {
|
|
40
|
+
workspaceYamlOptions: {
|
|
41
|
+
// This subproject has its own separate lockfile/store from its parent,
|
|
42
|
+
// so it needs its own approval for the native postinstall scripts its
|
|
43
|
+
// fixed dependency set always needs (esbuild's binary download, and
|
|
44
|
+
// @clerk/clerk-react's transitive @clerk/shared setup script).
|
|
45
|
+
allowBuilds: {
|
|
46
|
+
'esbuild': true,
|
|
47
|
+
'@clerk/shared': true,
|
|
48
|
+
},
|
|
49
|
+
...restOptions.pnpmOptions?.workspaceYamlOptions,
|
|
50
|
+
},
|
|
51
|
+
},
|
|
20
52
|
deps: [
|
|
21
53
|
'@clerk/clerk-react',
|
|
22
54
|
'@tanstack/react-query',
|
|
@@ -24,6 +56,7 @@ class ViteReactProject extends typescript_1.TypeScriptAppProject {
|
|
|
24
56
|
'autoprefixer',
|
|
25
57
|
'postcss',
|
|
26
58
|
'tailwindcss',
|
|
59
|
+
'rollup',
|
|
27
60
|
...(options.deps ? options.deps : []),
|
|
28
61
|
],
|
|
29
62
|
});
|
|
@@ -71,7 +104,7 @@ class ViteReactProject extends typescript_1.TypeScriptAppProject {
|
|
|
71
104
|
const relativeOutdir = this.parent
|
|
72
105
|
? (0, path_1.relative)(this.parent.outdir, this.outdir)
|
|
73
106
|
: (0, path_1.basename)(this.outdir);
|
|
74
|
-
this.devCommand = `cd ${relativeOutdir} &&
|
|
107
|
+
this.devCommand = `cd ${relativeOutdir} && ${runScriptCommand(this.package.packageManager, 'dev')}`;
|
|
75
108
|
}
|
|
76
109
|
/**
|
|
77
110
|
* Add a custom field to the Config type
|
|
@@ -294,6 +327,7 @@ export function useConfig() {
|
|
|
294
327
|
* Creates the config.json sample file for runtime configuration
|
|
295
328
|
*/
|
|
296
329
|
class ConfigJsonFile extends projen_1.SampleFile {
|
|
330
|
+
path;
|
|
297
331
|
constructor(project, _options) {
|
|
298
332
|
super(project, `${project.publicDir}/config.json`, {
|
|
299
333
|
contents: JSON.stringify({
|
|
@@ -646,4 +680,4 @@ html, body, #root {
|
|
|
646
680
|
});
|
|
647
681
|
}
|
|
648
682
|
}
|
|
649
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVml0ZVJlYWN0UHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9WaXRlUmVhY3RQcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUEwQztBQUMxQyxtQ0FBc0Y7QUFDdEYsc0RBQXVGO0FBNEJ2Rjs7R0FFRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsaUNBQW9CO0lBTXhELFlBQVksT0FBZ0M7UUFDMUMsTUFBTSxFQUNKLFVBQVUsR0FBRyxJQUFJLEVBQ2pCLE1BQU0sR0FBRyxLQUFLLEVBQ2QsU0FBUyxHQUFHLFFBQVEsRUFDcEIsS0FBSyxFQUNMLEdBQUcsV0FBVyxFQUNmLEdBQUcsT0FBTyxDQUFDO1FBQ1osS0FBSyxDQUFDO1lBQ0osR0FBRyxXQUFXO1lBQ2QsVUFBVSxFQUFFLEtBQUssRUFBRSxxQ0FBcUM7WUFDeEQsTUFBTSxFQUFFLEtBQUssRUFBRSxtQ0FBbUM7WUFDbEQsSUFBSSxFQUFFLEtBQUssRUFBRSw2QkFBNkI7WUFDMUMsT0FBTyxFQUFFLElBQUk7WUFDYixlQUFlLEVBQUUsSUFBSSxFQUFFLGtDQUFrQztZQUN6RCxJQUFJLEVBQUU7Z0JBQ0osb0JBQW9CO2dCQUNwQix1QkFBdUI7Z0JBQ3ZCLHNCQUFzQjtnQkFDdEIsY0FBYztnQkFDZCxTQUFTO2dCQUNULGFBQWE7Z0JBQ2IsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUN0QztTQUNGLENBQUMsQ0FBQztRQUVILG1DQUFtQztRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBRTlDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTNCLHFCQUFxQjtRQUNyQixJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUU7WUFDdEIs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QVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxXQUFXLEVBQUU7WUFDcEQsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EwQ2Y7U0FDSSxDQUFDLENBQUM7UUFFSCxtQkFBbUI7UUFDbkIsSUFBSSxtQkFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLFlBQVksRUFBRTtZQUNyRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBd0RmO1NBQ0ksQ0FBQyxDQUFDO0lBRUwsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVsYXRpdmUsIGJhc2VuYW1lIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEZpbGVCYXNlLCBKc29uRmlsZSwgUHJvamVjdCwgU2FtcGxlRmlsZSwgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgVHlwZVNjcmlwdEFwcFByb2plY3QsIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gJ3Byb2plbi9saWIvdHlwZXNjcmlwdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVml0ZVJlYWN0UHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBnZW5lcmF0ZSBzYW1wbGUgY29kZVxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzYW1wbGVDb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU291cmNlIGRpcmVjdG9yeVxuICAgKiBAZGVmYXVsdCBcInNyY1wiXG4gICAqL1xuICByZWFkb25seSBzcmNkaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBkaXJlY3RvcnkgZm9yIHN0YXRpYyBhc3NldHNcbiAgICogQGRlZmF1bHQgXCJwdWJsaWNcIlxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaXRsZSBmb3IgdGhlIEhUTUwgcGFnZVxuICAgKiBAZGVmYXVsdCBwcm9qZWN0IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFZpdGUgKyBSZWFjdCBUeXBlU2NyaXB0IHByb2plY3RcbiAqL1xuZXhwb3J0IGNsYXNzIFZpdGVSZWFjdFByb2plY3QgZXh0ZW5kcyBUeXBlU2NyaXB0QXBwUHJvamVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHB1YmxpY0Rpcjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZGV2Q29tbWFuZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0ZpZWxkczogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBWaXRlUmVhY3RQcm9qZWN0T3B0aW9ucykge1xuICAgIGNvbnN0IHtcbiAgICAgIHNhbXBsZUNvZGUgPSB0cnVlLFxuICAgICAgc3JjZGlyID0gJ3NyYycsXG4gICAgICBwdWJsaWNEaXIgPSAncHVibGljJyxcbiAgICAgIHRpdGxlLFxuICAgICAgLi4ucmVzdE9wdGlvbnNcbiAgICB9ID0gb3B0aW9ucztcbiAgICBzdXBlcih7XG4gICAgICAuLi5yZXN0T3B0aW9ucyxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLCAvLyBXZSdsbCBoYW5kbGUgc2FtcGxlIGNvZGUgb3Vyc2VsdmVzXG4gICAgICBlc2xpbnQ6IGZhbHNlLCAvLyBXZSdsbCBjb25maWd1cmUgZXNsaW50IG91cnNlbHZlc1xuICAgICAgamVzdDogZmFsc2UsIC8vIFZpdGUgdXNlcyB2aXRlc3QgdHlwaWNhbGx5XG4gICAgICBwYWNrYWdlOiB0cnVlLFxuICAgICAgZGlzYWJsZVRzY29uZmlnOiB0cnVlLCAvLyBXZSdsbCBtYW5hZ2UgdHNjb25maWcgb3Vyc2VsdmVzXG4gICAgICBkZXBzOiBbXG4gICAgICAgICdAY2xlcmsvY2xlcmstcmVhY3QnLFxuICAgICAgICAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JyxcbiAgICAgICAgJ0B0YWlsd2luZGNzcy9wb3N0Y3NzJyxcbiAgICAgICAgJ2F1dG9wcmVmaXhlcicsXG4gICAgICAgICdwb3N0Y3NzJyxcbiAgICAgICAgJ3RhaWx3aW5kY3NzJyxcbiAgICAgICAgLi4uKG9wdGlvbnMuZGVwcyA/IG9wdGlvbnMuZGVwcyA6IFtdKSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBJbml0aWFsaXplIGNvbmZpZyBmaWVsZHMgc3RvcmFnZVxuICAgIHRoaXMuY29uZmlnRmllbGRzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICAgIHRoaXMuc3JjZGlyID0gc3JjZGlyO1xuICAgIHRoaXMucHVibGljRGlyID0gcHVibGljRGlyO1xuXG4gICAgLy8gQWRkIFZpdGUgY29tcG9uZW50XG4gICAgbmV3IFZpdGVDb21wb25lbnQodGhpcywge1xuICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICB9KTtcblxuICAgIC8vIEFkZCBFU0xpbnQgY29uZmlndXJhdGlvblxuICAgIG5ldyBWaXRlRXNsaW50Q29uZmlnKHRoaXMpO1xuXG4gICAgLy8gQWRkIGluZGV4Lmh0bWxcbiAgICBuZXcgSW5kZXhIdG1sKHRoaXMsIHtcbiAgICAgIHRpdGxlOiB0aXRsZSA/PyB0aGlzLm5hbWUsXG4gICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIFR5cGVTY3JpcHQgY29uZmlnc1xuICAgIG5ldyBWaXRlVHNDb25maWdzKHRoaXMsIHtcbiAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgLmdpdGlnbm9yZSBlbnRyaWVzXG4gICAgdGhpcy5naXRpZ25vcmU/LmFkZFBhdHRlcm5zKCdkaXN0JywgJ2Rpc3Qtc3NyJywgJyoubG9jYWwnKTtcblxuICAgIC8vIEFkZCB2aXRlLWVudi5kLnRzIGZvciB0eXBlIGRlY2xhcmF0aW9uc1xuICAgIG5ldyBWaXRlRW52RHRzKHRoaXMsIHtcbiAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgUG9zdENTUyBjb25maWcgZm9yIFRhaWx3aW5kXG4gICAgbmV3IFBvc3RDU1NDb25maWdGaWxlKHRoaXMpO1xuXG4gICAgLy8gQWRkIGNvbmZpZy50cyBmb3IgcnVudGltZSBjb25maWd1cmF0aW9uXG4gICAgbmV3IENvbmZpZ0ZpbGUodGhpcywge1xuICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICB9KTtcblxuICAgIC8vIEFkZCBzYW1wbGUgY29uZmlnLmpzb25cbiAgICBuZXcgQ29uZmlnSnNvbkZpbGUodGhpcywgeyB9KTtcblxuXG4gICAgLy8gQWRkIHNhbXBsZSBjb2RlIGlmIHJlcXVlc3RlZFxuICAgIGlmIChzYW1wbGVDb2RlKSB7XG4gICAgICBuZXcgVml0ZVNhbXBsZUNvZGUodGhpcywge1xuICAgICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgICAgICBwdWJsaWNEaXI6IHRoaXMucHVibGljRGlyLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gVXNlIHJlbGF0aXZlIHBhdGggZm9yIGRldkNvbW1hbmRcbiAgICBjb25zdCByZWxhdGl2ZU91dGRpciA9IHRoaXMucGFyZW50XG4gICAgICA/IHJlbGF0aXZlKHRoaXMucGFyZW50Lm91dGRpciwgdGhpcy5vdXRkaXIpXG4gICAgICA6IGJhc2VuYW1lKHRoaXMub3V0ZGlyKTtcbiAgICB0aGlzLmRldkNvbW1hbmQgPSBgY2QgJHtyZWxhdGl2ZU91dGRpcn0gJiYgeWFybiBkZXZgO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGN1c3RvbSBmaWVsZCB0byB0aGUgQ29uZmlnIHR5cGVcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBUaGUgbmFtZSBvZiB0aGUgZmllbGRcbiAgICogQHBhcmFtIGZpZWxkVHlwZSBUaGUgVHlwZVNjcmlwdCB0eXBlIG9mIHRoZSBmaWVsZCAoZS5nLiwgJ3N0cmluZycsICdudW1iZXInLCAnYm9vbGVhbicsICdzdHJpbmdbXScpXG4gICAqIEByZXR1cm5zIHRoaXMgcHJvamVjdCBpbnN0YW5jZSBmb3IgY2hhaW5pbmdcbiAgICovXG4gIGFkZENvbmZpZ0ZpZWxkKGZpZWxkTmFtZTogc3RyaW5nLCBmaWVsZFR5cGU6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnRmllbGRzLnNldChmaWVsZE5hbWUsIGZpZWxkVHlwZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjb25maWcgZmllbGRzIG1hcCAoZm9yIGludGVybmFsIHVzZSBieSBDb25maWdGaWxlKVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldENvbmZpZ0ZpZWxkcygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdGaWVsZHM7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFZpdGVDb21wb25lbnRPcHRpb25zIHtcbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJlcyBWaXRlIGRlcGVuZGVuY2llcyBhbmQgc2NyaXB0c1xuICovXG5jbGFzcyBWaXRlQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogVHlwZVNjcmlwdEFwcFByb2plY3QsIF9vcHRpb25zOiBWaXRlQ29tcG9uZW50T3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgY29uc3QgdHNQcm9qZWN0ID0gcHJvamVjdCBhcyBUeXBlU2NyaXB0QXBwUHJvamVjdDtcblxuICAgIC8vIFNldCBwYWNrYWdlIHR5cGUgdG8gbW9kdWxlIGZvciBFU00gc3VwcG9ydFxuICAgIHRzUHJvamVjdC5wYWNrYWdlLmFkZEZpZWxkKCd0eXBlJywgJ21vZHVsZScpO1xuXG4gICAgLy8gQWRkIFJlYWN0IGRlcGVuZGVuY2llc1xuICAgIHRzUHJvamVjdC5hZGREZXBzKCdyZWFjdEBeMTkuMi4wJywgJ3JlYWN0LWRvbUBeMTkuMi4wJyk7XG5cbiAgICAvLyBBZGQgZGV2IGRlcGVuZGVuY2llc1xuICAgIHRzUHJvamVjdC5hZGREZXZEZXBzKFxuICAgICAgJ0B0eXBlcy9yZWFjdEBeMTkuMi4yJyxcbiAgICAgICdAdHlwZXMvcmVhY3QtZG9tQF4xOS4yLjInLFxuICAgICAgJ0B2aXRlanMvcGx1Z2luLXJlYWN0QF41LjEuMCcsXG4gICAgICAndml0ZUBeNS40LjAnLFxuICAgICAgJ3R5cGVzY3JpcHRAfjUuOS4zJyxcbiAgICAgICdAZXNsaW50L2pzQF45LjM5LjEnLFxuICAgICAgJ2VzbGludEBeOS4zOS4xJyxcbiAgICAgICdlc2xpbnQtcGx1Z2luLXJlYWN0LWhvb2tzQF41LjIuMCcsXG4gICAgICAnZXNsaW50LXBsdWdpbi1yZWFjdC1yZWZyZXNoQF4wLjQuMjQnLFxuICAgICAgJ2dsb2JhbHNAXjE2LjUuMCcsXG4gICAgICAndHlwZXNjcmlwdC1lc2xpbnRAXjguNDYuMycsXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSB2aXRlLmNvbmZpZy50cyBhcyBhIG1hbmFnZWQgZmlsZVxuICAgIG5ldyBWaXRlQ29uZmlnRmlsZShwcm9qZWN0KTtcblxuICAgIC8vIEFkZCBzY3JpcHRzXG4gICAgdHNQcm9qZWN0LmFkZFRhc2soJ2RldicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnU3RhcnQgZGV2ZWxvcG1lbnQgc2VydmVyJyxcbiAgICAgIGV4ZWM6ICd2aXRlJyxcbiAgICB9KTtcblxuICAgIC8vIFJlbW92ZSBhbmQgcmVjcmVhdGUgYnVpbGQgdGFzayB0byBjdXN0b21pemUgaXQgZm9yIFZpdGVcbiAgICB0c1Byb2plY3QucmVtb3ZlVGFzaygnYnVpbGQnKTtcbiAgICB0c1Byb2plY3QuYWRkVGFzaygnYnVpbGQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIGZvciBwcm9kdWN0aW9uJyxcbiAgICAgIGV4ZWM6ICd0c2MgLWIgJiYgdml0ZSBidWlsZCcsXG4gICAgfSk7XG5cbiAgICB0c1Byb2plY3QuYWRkVGFzaygncHJldmlldycsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHJldmlldyBwcm9kdWN0aW9uIGJ1aWxkJyxcbiAgICAgIGV4ZWM6ICd2aXRlIHByZXZpZXcnLFxuICAgIH0pO1xuXG4gICAgdHNQcm9qZWN0LmFkZFRhc2soJ2xpbnQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0xpbnQgY29kZScsXG4gICAgICBleGVjOiAnZXNsaW50IC4nLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gZm9yIFZpdGUgKyBSZWFjdFxuICovXG5jbGFzcyBWaXRlRXNsaW50Q29uZmlnIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCwgJ2VzbGludC5jb25maWcuanMnLCB7XG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHN5bnRoZXNpemVDb250ZW50KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGBpbXBvcnQganMgZnJvbSAnQGVzbGludC9qcydcbmltcG9ydCBnbG9iYWxzIGZyb20gJ2dsb2JhbHMnXG5pbXBvcnQgcmVhY3RIb29rcyBmcm9tICdlc2xpbnQtcGx1Z2luLXJlYWN0LWhvb2tzJ1xuaW1wb3J0IHJlYWN0UmVmcmVzaCBmcm9tICdlc2xpbnQtcGx1Z2luLXJlYWN0LXJlZnJlc2gnXG5pbXBvcnQgdHNlc2xpbnQgZnJvbSAndHlwZXNjcmlwdC1lc2xpbnQnXG5cbmV4cG9ydCBkZWZhdWx0IFtcbiAgeyBpZ25vcmVzOiBbJ2Rpc3QnXSB9LFxuICB7XG4gICAgZmlsZXM6IFsnKiovKi57dHMsdHN4fSddLFxuICAgIGxhbmd1YWdlT3B0aW9uczoge1xuICAgICAgZWNtYVZlcnNpb246IDIwMjAsXG4gICAgICBnbG9iYWxzOiBnbG9iYWxzLmJyb3dzZXIsXG4gICAgfSxcbiAgICBwbHVnaW5zOiB7XG4gICAgICAncmVhY3QtaG9va3MnOiByZWFjdEhvb2tzLFxuICAgICAgJ3JlYWN0LXJlZnJlc2gnOiByZWFjdFJlZnJlc2gsXG4gICAgfSxcbiAgICBydWxlczoge1xuICAgICAgLi4ucmVhY3RIb29rcy5jb25maWdzLnJlY29tbWVuZGVkLnJ1bGVzLFxuICAgICAgJ3JlYWN0LXJlZnJlc2gvb25seS1leHBvcnQtY29tcG9uZW50cyc6IFtcbiAgICAgICAgJ3dhcm4nLFxuICAgICAgICB7IGFsbG93Q29uc3RhbnRFeHBvcnQ6IHRydWUgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbiAganMuY29uZmlncy5yZWNvbW1lbmRlZCxcbiAgLi4udHNlc2xpbnQuY29uZmlncy5yZWNvbW1lbmRlZCxcbl1cbmA7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSB2aXRlLmNvbmZpZy50cyBmaWxlXG4gKi9cbmNsYXNzIFZpdGVDb25maWdGaWxlIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCwgJ3ZpdGUuY29uZmlnLnRzJywge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBzeW50aGVzaXplQ29udGVudCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBgaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSAndml0ZSdcbmltcG9ydCByZWFjdCBmcm9tICdAdml0ZWpzL3BsdWdpbi1yZWFjdCdcblxuLy8gaHR0cHM6Ly92aXRlLmRldi9jb25maWcvXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xuICBwbHVnaW5zOiBbcmVhY3QoKV0sXG59KVxuYDtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIHBvc3Rjc3MuY29uZmlnLmpzIGZpbGUgZm9yIFRhaWx3aW5kIENTUyB2NFxuICovXG5jbGFzcyBQb3N0Q1NTQ29uZmlnRmlsZSBleHRlbmRzIEZpbGVCYXNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QsICdwb3N0Y3NzLmNvbmZpZy5qcycsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgc3ludGhlc2l6ZUNvbnRlbnQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gYGV4cG9ydCBkZWZhdWx0IHtcbiAgcGx1Z2luczoge1xuICAgIFwiQHRhaWx3aW5kY3NzL3Bvc3Rjc3NcIjoge30sXG4gICAgYXV0b3ByZWZpeGVyOiB7fSxcbiAgfSxcbn1cbmA7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFZpdGVFbnZEdHNPcHRpb25zIHtcbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgdml0ZS1lbnYuZC50cyBmaWxlIGZvciB0eXBlIGRlY2xhcmF0aW9uc1xuICovXG5jbGFzcyBWaXRlRW52RHRzIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBWaXRlRW52RHRzT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QsIGAke29wdGlvbnMuc3JjZGlyfS92aXRlLWVudi5kLnRzYCwge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBzeW50aGVzaXplQ29udGVudCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBgLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJ2aXRlL2NsaWVudFwiIC8+XG5gO1xuICB9XG59XG5cbmludGVyZmFjZSBDb25maWdGaWxlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNvbmZpZy50cyBmaWxlIGZvciBydW50aW1lIGNvbmZpZ3VyYXRpb25cbiAqL1xuY2xhc3MgQ29uZmlnRmlsZSBleHRlbmRzIEZpbGVCYXNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogQ29uZmlnRmlsZU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCBgJHtvcHRpb25zLnNyY2Rpcn0vY29uZmlnLnRzYCwge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBzeW50aGVzaXplQ29udGVudCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIEdldCBjdXN0b20gY29uZmlnIGZpZWxkcyBmcm9tIHBhcmVudCBwcm9qZWN0XG4gICAgY29uc3Qgdml0ZVByb2plY3QgPSB0aGlzLnByb2plY3QgYXMgVml0ZVJlYWN0UHJvamVjdDtcbiAgICBjb25zdCBjdXN0b21GaWVsZHMgPSB2aXRlUHJvamVjdC5nZXRDb25maWdGaWVsZHMoKTtcblxuICAgIC8vIEdlbmVyYXRlIGJhc2UgY29uZmlnIHR5cGVcbiAgICBjb25zdCBiYXNlQ29uZmlnVHlwZSA9IGB0eXBlIEJhc2VDb25maWcgPSB7XG4gIGNsZXJrUHVibGlzaGFibGVLZXk6IHN0cmluZztcbiAgYXBpQmFzZVVybDogc3RyaW5nO1xuICB0aW1lb3V0OiBudW1iZXI7XG59YDtcblxuICAgIC8vIEdlbmVyYXRlIGN1c3RvbSBmaWVsZHMgdHlwZSBpZiBhbnkgZXhpc3RcbiAgICBsZXQgY29uZmlnVHlwZURlZmluaXRpb246IHN0cmluZztcbiAgICBpZiAoY3VzdG9tRmllbGRzLnNpemUgPiAwKSB7XG4gICAgICBjb25zdCBmaWVsZERlZmluaXRpb25zID0gQXJyYXkuZnJvbShjdXN0b21GaWVsZHMuZW50cmllcygpKVxuICAgICAgICAubWFwKChbbmFtZSwgdHlwZV0pID0+IGAgICR7bmFtZX06ICR7dHlwZX07YClcbiAgICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gICAgICBjb25zdCBjdXN0b21GaWVsZHNUeXBlID0gYHR5cGUgQ3VzdG9tQ29uZmlnID0ge1xuJHtmaWVsZERlZmluaXRpb25zfVxufWA7XG5cbiAgICAgIGNvbmZpZ1R5cGVEZWZpbml0aW9uID0gYCR7Y3VzdG9tRmllbGRzVHlwZX1cblxuZXhwb3J0IHR5cGUgQ29uZmlnID0gQmFzZUNvbmZpZyAmIEN1c3RvbUNvbmZpZztgO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWdUeXBlRGVmaW5pdGlvbiA9ICdleHBvcnQgdHlwZSBDb25maWcgPSBCYXNlQ29uZmlnOyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG4ke2Jhc2VDb25maWdUeXBlfVxuXG4ke2NvbmZpZ1R5cGVEZWZpbml0aW9ufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQ29uZmlnKCkge1xuICBjb25zdCBbbG9hZGVkQ29uZmlnLCBzZXRMb2FkZWRDb25maWddID0gdXNlU3RhdGU8Q29uZmlnfHVuZGVmaW5lZD4oKTtcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbG9hZGVkQ29uZmlnKSB7XG4gICAgICBmZXRjaCgnL2NvbmZpZy5qc29uJywgeyBjYWNoZTogJ25vLXN0b3JlJyB9KS50aGVuKHJlc3BvbnNlPT57XG4gICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKChjb25maWcpID0+IHtcbiAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgc2V0TG9hZGVkQ29uZmlnKGNvbmZpZylcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIH1cbiAgfSwgW2xvYWRlZENvbmZpZ10pO1xuXG4gIHJldHVybiB7IGNvbmZpZzogbG9hZGVkQ29uZmlnLCBpc0xvYWRpbmcgfTtcbn1cbmA7XG4gIH1cbn1cblxuaW50ZXJmYWNlIENvbmZpZ0pzb25GaWxlT3B0aW9ucyB7fVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNvbmZpZy5qc29uIHNhbXBsZSBmaWxlIGZvciBydW50aW1lIGNvbmZpZ3VyYXRpb25cbiAqL1xuY2xhc3MgQ29uZmlnSnNvbkZpbGUgZXh0ZW5kcyBTYW1wbGVGaWxlIHtcbiAgcGF0aDogc3RyaW5nO1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBWaXRlUmVhY3RQcm9qZWN0LCBfb3B0aW9uczogQ29uZmlnSnNvbkZpbGVPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwgYCR7cHJvamVjdC5wdWJsaWNEaXJ9L2NvbmZpZy5qc29uYCwge1xuICAgICAgY29udGVudHM6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgYXBpQmFzZVVybDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGknLFxuICAgICAgICBjbGVya1B1Ymxpc2hhYmxlS2V5OiAndGJkJyxcbiAgICAgIH0sIG51bGwsIDIpLFxuICAgIH0pO1xuICAgIHRoaXMucGF0aCA9IGAke3Byb2plY3QucHVibGljRGlyfS9jb25maWcuanNvbmA7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEluZGV4SHRtbE9wdGlvbnMge1xuICByZWFkb25seSB0aXRsZTogc3RyaW5nO1xuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBpbmRleC5odG1sIGZpbGVcbiAqL1xuY2xhc3MgSW5kZXhIdG1sIGV4dGVuZHMgU2FtcGxlRmlsZSB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEluZGV4SHRtbE9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCAnaW5kZXguaHRtbCcsIHtcbiAgICAgIGNvbnRlbnRzOiBgPCFkb2N0eXBlIGh0bWw+XG48aHRtbCBsYW5nPVwiZW5cIj5cbiAgPGhlYWQ+XG4gICAgPG1ldGEgY2hhcnNldD1cIlVURi04XCIgLz5cbiAgICA8bGluayByZWw9XCJpY29uXCIgdHlwZT1cImltYWdlL3N2Zyt4bWxcIiBocmVmPVwiL3ZpdGUuc3ZnXCIgLz5cbiAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMFwiIC8+XG4gICAgPHRpdGxlPiR7b3B0aW9ucy50aXRsZX08L3RpdGxlPlxuICA8L2hlYWQ+XG4gIDxib2R5PlxuICAgIDxkaXYgaWQ9XCJyb290XCI+PC9kaXY+XG4gICAgPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgc3JjPVwiLyR7b3B0aW9ucy5zcmNkaXJ9L21haW4udHN4XCI+PC9zY3JpcHQ+XG4gIDwvYm9keT5cbjwvaHRtbD5cbmAsXG4gICAgfSk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFZpdGVUc0NvbmZpZ3NPcHRpb25zIHtcbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBWaXRlXG4gKi9cbmNsYXNzIFZpdGVUc0NvbmZpZ3MgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBWaXRlVHNDb25maWdzT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgLy8gTWFpbiB0c2NvbmZpZy5qc29uIChwcm9qZWN0IHJlZmVyZW5jZXMpXG4gICAgbmV3IEpzb25GaWxlKHByb2plY3QsICd0c2NvbmZpZy5qc29uJywge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICBvYmo6IHtcbiAgICAgICAgZmlsZXM6IFtdLFxuICAgICAgICByZWZlcmVuY2VzOiBbXG4gICAgICAgICAgeyBwYXRoOiAnLi90c2NvbmZpZy5hcHAuanNvbicgfSxcbiAgICAgICAgICB7IHBhdGg6ICcuL3RzY29uZmlnLm5vZGUuanNvbicgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyB0c2NvbmZpZy5hcHAuanNvbiAoZm9yIGFwcGxpY2F0aW9uIGNvZGUpXG4gICAgbmV3IEpzb25GaWxlKHByb2plY3QsICd0c2NvbmZpZy5hcHAuanNvbicsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgICAgb2JqOiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIHRhcmdldDogJ0VTMjAyMCcsXG4gICAgICAgICAgdXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHM6IHRydWUsXG4gICAgICAgICAgbGliOiBbJ0VTMjAyMCcsICdET00nLCAnRE9NLkl0ZXJhYmxlJ10sXG4gICAgICAgICAgbW9kdWxlOiAnRVNOZXh0JyxcbiAgICAgICAgICBza2lwTGliQ2hlY2s6IHRydWUsXG5cbiAgICAgICAgICAvLyBCdW5kbGVyIG1vZGVcbiAgICAgICAgICBtb2R1bGVSZXNvbHV0aW9uOiAnYnVuZGxlcicsXG4gICAgICAgICAgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgICAgICAgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlLFxuICAgICAgICAgIG1vZHVsZURldGVjdGlvbjogJ2ZvcmNlJyxcbiAgICAgICAgICBub0VtaXQ6IHRydWUsXG4gICAgICAgICAganN4OiAncmVhY3QtanN4JyxcblxuICAgICAgICAgIC8vIExpbnRpbmdcbiAgICAgICAgICBzdHJpY3Q6IHRydWUsXG4gICAgICAgICAgbm9VbnVzZWRMb2NhbHM6IHRydWUsXG4gICAgICAgICAgbm9VbnVzZWRQYXJhbWV0ZXJzOiB0cnVlLFxuICAgICAgICAgIG5vRmFsbHRocm91Z2hDYXNlc0luU3dpdGNoOiB0cnVlLFxuICAgICAgICAgIG5vVW5jaGVja2VkU2lkZUVmZmVjdEltcG9ydHM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluY2x1ZGU6IFtvcHRpb25zLnNyY2Rpcl0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gdHNjb25maWcubm9kZS5qc29uIChmb3IgVml0ZSBjb25maWcpXG4gICAgbmV3IEpzb25GaWxlKHByb2plY3QsICd0c2NvbmZpZy5ub2RlLmpzb24nLCB7XG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgIG9iajoge1xuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICB0YXJnZXQ6ICdFUzIwMjInLFxuICAgICAgICAgIGxpYjogWydFUzIwMjMnXSxcbiAgICAgICAgICBtb2R1bGU6ICdFU05leHQnLFxuICAgICAgICAgIHNraXBMaWJDaGVjazogdHJ1ZSxcblxuICAgICAgICAgIC8vIEJ1bmRsZXIgbW9kZVxuICAgICAgICAgIG1vZHVsZVJlc29sdXRpb246ICdidW5kbGVyJyxcbiAgICAgICAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICAgICAgICBpc29sYXRlZE1vZHVsZXM6IHRydWUsXG4gICAgICAgICAgbW9kdWxlRGV0ZWN0aW9uOiAnZm9yY2UnLFxuICAgICAgICAgIG5vRW1pdDogdHJ1ZSxcblxuICAgICAgICAgIC8vIExpbnRpbmdcbiAgICAgICAgICBzdHJpY3Q6IHRydWUsXG4gICAgICAgICAgbm9VbnVzZWRMb2NhbHM6IHRydWUsXG4gICAgICAgICAgbm9VbnVzZWRQYXJhbWV0ZXJzOiB0cnVlLFxuICAgICAgICAgIG5vRmFsbHRocm91Z2hDYXNlc0luU3dpdGNoOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpbmNsdWRlOiBbJ3ZpdGUuY29uZmlnLnRzJ10sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmludGVyZmFjZSBWaXRlU2FtcGxlQ29kZU9wdGlvbnMge1xuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbiAgcmVhZG9ubHkgcHVibGljRGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHNhbXBsZSBjb2RlIGZvciBhIFZpdGUgKyBSZWFjdCBwcm9qZWN0XG4gKi9cbmNsYXNzIFZpdGVTYW1wbGVDb2RlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogVml0ZVNhbXBsZUNvZGVPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICAvLyBDcmVhdGUgQXBwLnRzeFxuICAgIG5ldyBTYW1wbGVGaWxlKHByb2plY3QsIGAke29wdGlvbnMuc3JjZGlyfS9BcHAudHN4YCwge1xuICAgICAgY29udGVudHM6IGBpbXBvcnQgJy4vQXBwLmNzcydcbmltcG9ydCB7IFNpZ25lZEluLCBVc2VyQnV0dG9uIH0gZnJvbSAnQGNsZXJrL2NsZXJrLXJlYWN0JztcbmltcG9ydCB7IHVzZUJhc2VRdWVyeSB9IGZyb20gXCIuL3NlcnZpY2VzL0Jhc2VTZXJ2aWNlLnRzXCI7XG5cblxuZnVuY3Rpb24gQXBwKCkge1xuICBjb25zdCB7ZGF0YSwgaXNMb2FkaW5nfSA9IHVzZUJhc2VRdWVyeSgnLycsIHtyZXRyeU9uTW91bnQ6IHRydWV9KTtcblxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgICAgPGhlYWRlcj5cblxuICAgICAgICAgIDxTaWduZWRJbj5cbiAgICAgICAgICAgIDxVc2VyQnV0dG9uLz5cbiAgICAgICAgICA8L1NpZ25lZEluPlxuICAgICAgICA8L2hlYWRlcj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkXCI+XG4gICAgICAgICAgeyBpc0xvYWRpbmcgPyAnTG9hZGluZy4uLicgOiBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsICwpfVxuICAgICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBBcHBcbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgQmFzZVNlcnZpY2UudHNcbiAgICBuZXcgVGV4dEZpbGUocHJvamVjdCwgYCR7b3B0aW9ucy5zcmNkaXJ9L3NlcnZpY2VzL0Jhc2VTZXJ2aWNlLnRzYCwge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICBsaW5lczogW1xuICAgICAgICAnaW1wb3J0IHsgdXNlUXVlcnksIFVzZVF1ZXJ5T3B0aW9ucyB9IGZyb20gXFwnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XFwnOycsXG4gICAgICAgICdpbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSBcXCdAY2xlcmsvY2xlcmstcmVhY3RcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gXFwnLi4vY29uZmlnXFwnOycsXG4gICAgICAgICcnLFxuICAgICAgICAnZXhwb3J0IGZ1bmN0aW9uIHVzZUJhc2VRdWVyeTxURGF0YSA9IHVua25vd24+KCcsXG4gICAgICAgICcgIHBhdGg6IHN0cmluZywnLFxuICAgICAgICAnICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8VERhdGE+LCBcXCdxdWVyeUtleVxcJyB8IFxcJ3F1ZXJ5Rm5cXCc+JyxcbiAgICAgICAgJykgeycsXG4gICAgICAgICcgIGNvbnN0IHsgY29uZmlnIH0gPSB1c2VDb25maWcoKTsnLFxuICAgICAgICAnICBjb25zdCB7IGdldFRva2VuIH0gPSB1c2VBdXRoKCk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIHJldHVybiB1c2VRdWVyeTxURGF0YT4oeycsXG4gICAgICAgICcgICAgcXVlcnlLZXk6IFtcXCdiYXNlXFwnXSwnLFxuICAgICAgICAnICAgIHF1ZXJ5Rm46IGFzeW5jICgpID0+IHsnLFxuICAgICAgICAnICAgICAgaWYgKCFjb25maWc/LmFwaUJhc2VVcmwpIHsnLFxuICAgICAgICAnICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFwnQVBJIGJhc2UgVVJMIG5vdCBjb25maWd1cmVkXFwnKTsnLFxuICAgICAgICAnICAgICAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCBnZXRUb2tlbigpOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgICAgLy8gTm9ybWFsaXplIFVSTCBieSByZW1vdmluZyB0cmFpbGluZyBzbGFzaCBmcm9tIGJhc2VVcmwgYW5kIGVuc3VyaW5nIHBhdGggc3RhcnRzIHdpdGggc2xhc2gnLFxuICAgICAgICAnICAgICAgY29uc3QgYmFzZVVybCA9IGNvbmZpZy5hcGlCYXNlVXJsLnJlcGxhY2UoL1xcXFwvKyQvLCBcXCdcXCcpOycsXG4gICAgICAgICcgICAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IHBhdGguc3RhcnRzV2l0aChcXCcvXFwnKSA/IHBhdGggOiBgLyR7cGF0aH1gOycsXG4gICAgICAgICcgICAgICAnLFxuICAgICAgICAnICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfSR7bm9ybWFsaXplZFBhdGh9YCwgeycsXG4gICAgICAgICcgICAgICAgIGhlYWRlcnM6IHsnLFxuICAgICAgICAnICAgICAgICAgIFxcJ0F1dGhvcml6YXRpb25cXCc6IGBCZWFyZXIgJHt0b2tlbn1gLCcsXG4gICAgICAgICcgICAgICAgIH0sJyxcbiAgICAgICAgJyAgICAgIH0pOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgICAgaWYgKCFyZXNwb25zZS5vaykgeycsXG4gICAgICAgICcgICAgICAgIHRocm93IG5ldyBFcnJvcihgSFRUUCBlcnJvciEgc3RhdHVzOiAke3Jlc3BvbnNlLnN0YXR1c31gKTsnLFxuICAgICAgICAnICAgICAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTsnLFxuICAgICAgICAnICAgIH0sJyxcbiAgICAgICAgJyAgICBlbmFibGVkOiAhIWNvbmZpZz8uYXBpQmFzZVVybCwnLFxuICAgICAgICAnICAgIC4uLm9wdGlvbnMsJyxcbiAgICAgICAgJyAgfSk7JyxcbiAgICAgICAgJ30nLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBSb290U2VydmljZS50c1xuICAgIG5ldyBTYW1wbGVGaWxlKHByb2plY3QsIGAke29wdGlvbnMuc3JjZGlyfS9zZXJ2aWNlcy9Sb290U2VydmljZS50c2AsIHtcbiAgICAgIGNvbnRlbnRzOiBgaW1wb3J0IHsgVXNlUXVlcnlPcHRpb25zIH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcbmltcG9ydCB7IHVzZUJhc2VRdWVyeSB9IGZyb20gJy4vQmFzZVNlcnZpY2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUm9vdFF1ZXJ5PFREYXRhID0gdW5rbm93bj4oXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxURGF0YT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZUJhc2VRdWVyeTxURGF0YT4oJy8nLCBvcHRpb25zKTtcbn1cbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgQXBwLmNzc1xuICAgIG5ldyBTYW1wbGVGaWxlKHByb2plY3QsIGAke29wdGlvbnMuc3JjZGlyfS9BcHAuY3NzYCwge1xuICAgICAgY29udGVudHM6IGAjcm9vdCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5sb2dvIHtcbiAgaGVpZ2h0OiA2ZW07XG4gIHBhZGRpbmc6IDEuNWVtO1xuICB3aWxsLWNoYW5nZTogZmlsdGVyO1xuICB0cmFuc2l0aW9uOiBmaWx0ZXIgMzAwbXM7XG59XG4ubG9nbzpob3ZlciB7XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDJlbSAjNjQ2Y2ZmYWEpO1xufVxuLmxvZ28ucmVhY3Q6aG92ZXIge1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAyZW0gIzYxZGFmYmFhKTtcbn1cblxuQGtleWZyYW1lcyBsb2dvLXNwaW4ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcbiAgYTpudGgtb2YtdHlwZSgyKSAubG9nbyB7XG4gICAgYW5pbWF0aW9uOiBsb2dvLXNwaW4gaW5maW5pdGUgMjBzIGxpbmVhcjtcbiAgfVxufVxuXG4uY2FyZCB7XG4gIHBhZGRpbmc6IDJlbTtcbn1cblxuLnJlYWQtdGhlLWRvY3Mge1xuICBjb2xvcjogIzg4ODtcbn1cbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgbWFpbi50c3hcbiAgICBuZXcgU2FtcGxlRmlsZShwcm9qZWN0LCBgJHtvcHRpb25zLnNyY2Rpcn0vbWFpbi50c3hgLCB7XG4gICAgICBjb250ZW50czogYGltcG9ydCB7IFN0cmljdE1vZGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVJvb3QgfSBmcm9tICdyZWFjdC1kb20vY2xpZW50J1xuaW1wb3J0ICcuL2luZGV4LmNzcydcbmltcG9ydCBBcHAgZnJvbSAnLi9BcHAudHN4J1xuaW1wb3J0IHsgQ2xlcmtQcm92aWRlciwgU2lnbmVkSW4sIFNpZ25lZE91dCwgU2lnbkluQnV0dG9uIH0gZnJvbSAnQGNsZXJrL2NsZXJrLXJlYWN0J1xuaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnXG5pbXBvcnQgeyBRdWVyeUNsaWVudCwgUXVlcnlDbGllbnRQcm92aWRlciB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIlxuXG5mdW5jdGlvbiBBcHBXcmFwcGVyKCkge1xuICBjb25zdCB7IGNvbmZpZywgaXNMb2FkaW5nIH0gPSB1c2VDb25maWcoKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSBuZXcgUXVlcnlDbGllbnQoKVxuICBpZiAoaXNMb2FkaW5nIHx8ICFjb25maWcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJsb2FkaW5nLXNjcmVlblwiPlxuICAgICAgICBMb2FkaW5nLi4uXG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Q2xlcmtQcm92aWRlciBwdWJsaXNoYWJsZUtleT17Y29uZmlnLmNsZXJrUHVibGlzaGFibGVLZXl9PlxuICAgICAgPFF1ZXJ5Q2xpZW50UHJvdmlkZXIgY2xpZW50PXtxdWVyeUNsaWVudH0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbFwiPlxuICAgICAgICAgIDxTaWduZWRPdXQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG1pbi1oLXNjcmVlblwiPlxuICAgICAgICAgICAgICA8U2lnbkluQnV0dG9uLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvU2lnbmVkT3V0PlxuICAgICAgICAgIDxTaWduZWRJbj5cbiAgICAgICAgICAgIDxBcHAvPlxuICAgICAgICAgIDwvU2lnbmVkSW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9RdWVyeUNsaWVudFByb3ZpZGVyPlxuICAgIDwvQ2xlcmtQcm92aWRlcj5cbiAgKTtcbn1cblxuY3JlYXRlUm9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpISkucmVuZGVyKFxuICA8U3RyaWN0TW9kZT5cbiAgICA8QXBwV3JhcHBlci8+XG4gIDwvU3RyaWN0TW9kZT5cbilcbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgaW5kZXguY3NzXG4gICAgbmV3IFNhbXBsZUZpbGUocHJvamVjdCwgYCR7b3B0aW9ucy5zcmNkaXJ9L2luZGV4LmNzc2AsIHtcbiAgICAgIGNvbnRlbnRzOiBgQGltcG9ydCBcInRhaWx3aW5kY3NzXCI7XG5cbkB0aGVtZSB7XG4gIC0tY29sb3Itc2NoZW1lOiBsaWdodCBkYXJrO1xufVxuXG46cm9vdCB7XG4gIGZvbnQtZmFtaWx5OiBJbnRlciwgc3lzdGVtLXVpLCBBdmVuaXIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG5cbiAgY29sb3Itc2NoZW1lOiBsaWdodCBkYXJrO1xuXG4gIGZvbnQtc3ludGhlc2lzOiBub25lO1xuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuYSB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiAjNjQ2Y2ZmO1xuICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7XG59XG5hOmhvdmVyIHtcbiAgY29sb3I6ICM1MzViZjI7XG59XG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xufVxuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMy4yZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjE7XG59XG5cbmJ1dHRvbiB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5sb2FkaW5nLXNjcmVlbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBoZWlnaHQ6IDEwMHZoO1xuICBmb250LXNpemU6IDEuNXJlbTtcbn1cblxuaHRtbCwgYm9keSwgI3Jvb3Qge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuYCxcbiAgICB9KTtcblxuICB9XG59XG4iXX0=
|
|
683
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVml0ZVJlYWN0UHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9WaXRlUmVhY3RQcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUEwQztBQUMxQyxtQ0FBc0Y7QUFDdEYsc0RBQTJEO0FBQzNELHNEQUF1RjtBQUd2RixTQUFTLGdCQUFnQixDQUFDLGNBQWtDLEVBQUUsTUFBYztJQUMxRSxRQUFRLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssK0JBQWtCLENBQUMsR0FBRztZQUN6QixPQUFPLFdBQVcsTUFBTSxFQUFFLENBQUM7UUFDN0IsS0FBSywrQkFBa0IsQ0FBQyxHQUFHO1lBQ3pCLE9BQU8sV0FBVyxNQUFNLEVBQUUsQ0FBQztRQUM3QixLQUFLLCtCQUFrQixDQUFDLElBQUk7WUFDMUIsT0FBTyxRQUFRLE1BQU0sRUFBRSxDQUFDO1FBQzFCO1lBQ0Usb0ZBQW9GO1lBQ3BGLE9BQU8sUUFBUSxNQUFNLEVBQUUsQ0FBQztJQUM1QixDQUFDO0FBQ0gsQ0FBQztBQTRCRDs7R0FFRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsaUNBQW9CO0lBQ3hDLE1BQU0sQ0FBUztJQUNmLFNBQVMsQ0FBUztJQUNsQixVQUFVLENBQVM7SUFDbEIsWUFBWSxDQUFzQjtJQUVuRCxZQUFZLE9BQWdDO1FBQzFDLE1BQU0sRUFDSixVQUFVLEdBQUcsSUFBSSxFQUNqQixNQUFNLEdBQUcsS0FBSyxFQUNkLFNBQVMsR0FBRyxRQUFRLEVBQ3BCLEtBQUssRUFDTCxHQUFHLFdBQVcsRUFDZixHQUFHLE9BQU8sQ0FBQztRQUNaLEtBQUssQ0FBQztZQUNKLEdBQUcsV0FBVztZQUNkLFVBQVUsRUFBRSxLQUFLLEVBQUUscUNBQXFDO1lBQ3hELE1BQU0sRUFBRSxLQUFLLEVBQUUsbUNBQW1DO1lBQ2xELElBQUksRUFBRSxLQUFLLEVBQUUsNkJBQTZCO1lBQzFDLE9BQU8sRUFBRSxJQUFJO1lBQ2IsZUFBZSxFQUFFLElBQUksRUFB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QUcsT0FBTyxDQUFDLE1BQU0sWUFBWSxFQUFFO1lBQ3JELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F3RGY7U0FDSSxDQUFDLENBQUM7SUFFTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWxhdGl2ZSwgYmFzZW5hbWUgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IENvbXBvbmVudCwgRmlsZUJhc2UsIEpzb25GaWxlLCBQcm9qZWN0LCBTYW1wbGVGaWxlLCBUZXh0RmlsZSB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBOb2RlUGFja2FnZU1hbmFnZXIgfSBmcm9tICdwcm9qZW4vbGliL2phdmFzY3JpcHQnO1xuaW1wb3J0IHsgVHlwZVNjcmlwdEFwcFByb2plY3QsIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gJ3Byb2plbi9saWIvdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBCYXRtYW5Qcm9qZWN0IH0gZnJvbSAnLi9CYXRtYW5Qcm9qZWN0JztcblxuZnVuY3Rpb24gcnVuU2NyaXB0Q29tbWFuZChwYWNrYWdlTWFuYWdlcjogTm9kZVBhY2thZ2VNYW5hZ2VyLCBzY3JpcHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHN3aXRjaCAocGFja2FnZU1hbmFnZXIpIHtcbiAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5OUE06XG4gICAgICByZXR1cm4gYG5wbSBydW4gJHtzY3JpcHR9YDtcbiAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5CVU46XG4gICAgICByZXR1cm4gYGJ1biBydW4gJHtzY3JpcHR9YDtcbiAgICBjYXNlIE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNOlxuICAgICAgcmV0dXJuIGBwbnBtICR7c2NyaXB0fWA7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIGFsbCB5YXJuIHZhcmlhbnRzICh5YXJuLCB5YXJuMiwgeWFybl9jbGFzc2ljLCB5YXJuX2JlcnJ5KSBzaGFyZSB0aGUgYHlhcm5gIGJpbmFyeVxuICAgICAgcmV0dXJuIGB5YXJuICR7c2NyaXB0fWA7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaXRlUmVhY3RQcm9qZWN0T3B0aW9ucyBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGdlbmVyYXRlIHNhbXBsZSBjb2RlXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNhbXBsZUNvZGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTb3VyY2UgZGlyZWN0b3J5XG4gICAqIEBkZWZhdWx0IFwic3JjXCJcbiAgICovXG4gIHJlYWRvbmx5IHNyY2Rpcj86IHN0cmluZztcblxuICAvKipcbiAgICogUHVibGljIGRpcmVjdG9yeSBmb3Igc3RhdGljIGFzc2V0c1xuICAgKiBAZGVmYXVsdCBcInB1YmxpY1wiXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpdGxlIGZvciB0aGUgSFRNTCBwYWdlXG4gICAqIEBkZWZhdWx0IHByb2plY3QgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVml0ZSArIFJlYWN0IFR5cGVTY3JpcHQgcHJvamVjdFxuICovXG5leHBvcnQgY2xhc3MgVml0ZVJlYWN0UHJvamVjdCBleHRlbmRzIFR5cGVTY3JpcHRBcHBQcm9qZWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGljRGlyOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBkZXZDb21tYW5kOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnRmllbGRzOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFZpdGVSZWFjdFByb2plY3RPcHRpb25zKSB7XG4gICAgY29uc3Qge1xuICAgICAgc2FtcGxlQ29kZSA9IHRydWUsXG4gICAgICBzcmNkaXIgPSAnc3JjJyxcbiAgICAgIHB1YmxpY0RpciA9ICdwdWJsaWMnLFxuICAgICAgdGl0bGUsXG4gICAgICAuLi5yZXN0T3B0aW9uc1xuICAgIH0gPSBvcHRpb25zO1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLnJlc3RPcHRpb25zLFxuICAgICAgc2FtcGxlQ29kZTogZmFsc2UsIC8vIFdlJ2xsIGhhbmRsZSBzYW1wbGUgY29kZSBvdXJzZWx2ZXNcbiAgICAgIGVzbGludDogZmFsc2UsIC8vIFdlJ2xsIGNvbmZpZ3VyZSBlc2xpbnQgb3Vyc2VsdmVzXG4gICAgICBqZXN0OiBmYWxzZSwgLy8gVml0ZSB1c2VzIHZpdGVzdCB0eXBpY2FsbHlcbiAgICAgIHBhY2thZ2U6IHRydWUsXG4gICAgICBkaXNhYmxlVHNjb25maWc6IHRydWUsIC8vIFdlJ2xsIG1hbmFnZSB0c2NvbmZpZyBvdXJzZWx2ZXNcbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiAocmVzdE9wdGlvbnMucGFyZW50IGFzIEJhdG1hblByb2plY3QpLnBhY2thZ2UucGFja2FnZU1hbmFnZXIsXG4gICAgICBwbnBtT3B0aW9uczoge1xuICAgICAgICB3b3Jrc3BhY2VZYW1sT3B0aW9uczoge1xuICAgICAgICAgIC8vIFRoaXMgc3VicHJvamVjdCBoYXMgaXRzIG93biBzZXBhcmF0ZSBsb2NrZmlsZS9zdG9yZSBmcm9tIGl0cyBwYXJlbnQsXG4gICAgICAgICAgLy8gc28gaXQgbmVlZHMgaXRzIG93biBhcHByb3ZhbCBmb3IgdGhlIG5hdGl2ZSBwb3N0aW5zdGFsbCBzY3JpcHRzIGl0c1xuICAgICAgICAgIC8vIGZpeGVkIGRlcGVuZGVuY3kgc2V0IGFsd2F5cyBuZWVkcyAoZXNidWlsZCdzIGJpbmFyeSBkb3dubG9hZCwgYW5kXG4gICAgICAgICAgLy8gQGNsZXJrL2NsZXJrLXJlYWN0J3MgdHJhbnNpdGl2ZSBAY2xlcmsvc2hhcmVkIHNldHVwIHNjcmlwdCkuXG4gICAgICAgICAgYWxsb3dCdWlsZHM6IHtcbiAgICAgICAgICAgICdlc2J1aWxkJzogdHJ1ZSxcbiAgICAgICAgICAgICdAY2xlcmsvc2hhcmVkJzogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLnJlc3RPcHRpb25zLnBucG1PcHRpb25zPy53b3Jrc3BhY2VZYW1sT3B0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbXG4gICAgICAgICdAY2xlcmsvY2xlcmstcmVhY3QnLFxuICAgICAgICAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JyxcbiAgICAgICAgJ0B0YWlsd2luZGNzcy9wb3N0Y3NzJyxcbiAgICAgICAgJ2F1dG9wcmVmaXhlcicsXG4gICAgICAgICdwb3N0Y3NzJyxcbiAgICAgICAgJ3RhaWx3aW5kY3NzJyxcbiAgICAgICAgJ3JvbGx1cCcsXG4gICAgICAgIC4uLihvcHRpb25zLmRlcHMgPyBvcHRpb25zLmRlcHMgOiBbXSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBjb25maWcgZmllbGRzIHN0b3JhZ2VcbiAgICB0aGlzLmNvbmZpZ0ZpZWxkcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgICB0aGlzLnNyY2RpciA9IHNyY2RpcjtcbiAgICB0aGlzLnB1YmxpY0RpciA9IHB1YmxpY0RpcjtcblxuICAgIC8vIEFkZCBWaXRlIGNvbXBvbmVudFxuICAgIG5ldyBWaXRlQ29tcG9uZW50KHRoaXMsIHtcbiAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgRVNMaW50IGNvbmZpZ3VyYXRpb25cbiAgICBuZXcgVml0ZUVzbGludENvbmZpZyh0aGlzKTtcblxuICAgIC8vIEFkZCBpbmRleC5odG1sXG4gICAgbmV3IEluZGV4SHRtbCh0aGlzLCB7XG4gICAgICB0aXRsZTogdGl0bGUgPz8gdGhpcy5uYW1lLFxuICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICB9KTtcblxuICAgIC8vIEFkZCBUeXBlU2NyaXB0IGNvbmZpZ3NcbiAgICBuZXcgVml0ZVRzQ29uZmlncyh0aGlzLCB7XG4gICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIC5naXRpZ25vcmUgZW50cmllc1xuICAgIHRoaXMuZ2l0aWdub3JlPy5hZGRQYXR0ZXJucygnZGlzdCcsICdkaXN0LXNzcicsICcqLmxvY2FsJyk7XG5cbiAgICAvLyBBZGQgdml0ZS1lbnYuZC50cyBmb3IgdHlwZSBkZWNsYXJhdGlvbnNcbiAgICBuZXcgVml0ZUVudkR0cyh0aGlzLCB7XG4gICAgICBzcmNkaXI6IHRoaXMuc3JjZGlyLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIFBvc3RDU1MgY29uZmlnIGZvciBUYWlsd2luZFxuICAgIG5ldyBQb3N0Q1NTQ29uZmlnRmlsZSh0aGlzKTtcblxuICAgIC8vIEFkZCBjb25maWcudHMgZm9yIHJ1bnRpbWUgY29uZmlndXJhdGlvblxuICAgIG5ldyBDb25maWdGaWxlKHRoaXMsIHtcbiAgICAgIHNyY2RpcjogdGhpcy5zcmNkaXIsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgc2FtcGxlIGNvbmZpZy5qc29uXG4gICAgbmV3IENvbmZpZ0pzb25GaWxlKHRoaXMsIHsgfSk7XG5cblxuICAgIC8vIEFkZCBzYW1wbGUgY29kZSBpZiByZXF1ZXN0ZWRcbiAgICBpZiAoc2FtcGxlQ29kZSkge1xuICAgICAgbmV3IFZpdGVTYW1wbGVDb2RlKHRoaXMsIHtcbiAgICAgICAgc3JjZGlyOiB0aGlzLnNyY2RpcixcbiAgICAgICAgcHVibGljRGlyOiB0aGlzLnB1YmxpY0RpcixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFVzZSByZWxhdGl2ZSBwYXRoIGZvciBkZXZDb21tYW5kXG4gICAgY29uc3QgcmVsYXRpdmVPdXRkaXIgPSB0aGlzLnBhcmVudFxuICAgICAgPyByZWxhdGl2ZSh0aGlzLnBhcmVudC5vdXRkaXIsIHRoaXMub3V0ZGlyKVxuICAgICAgOiBiYXNlbmFtZSh0aGlzLm91dGRpcik7XG4gICAgdGhpcy5kZXZDb21tYW5kID0gYGNkICR7cmVsYXRpdmVPdXRkaXJ9ICYmICR7cnVuU2NyaXB0Q29tbWFuZCh0aGlzLnBhY2thZ2UucGFja2FnZU1hbmFnZXIsICdkZXYnKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGN1c3RvbSBmaWVsZCB0byB0aGUgQ29uZmlnIHR5cGVcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBUaGUgbmFtZSBvZiB0aGUgZmllbGRcbiAgICogQHBhcmFtIGZpZWxkVHlwZSBUaGUgVHlwZVNjcmlwdCB0eXBlIG9mIHRoZSBmaWVsZCAoZS5nLiwgJ3N0cmluZycsICdudW1iZXInLCAnYm9vbGVhbicsICdzdHJpbmdbXScpXG4gICAqIEByZXR1cm5zIHRoaXMgcHJvamVjdCBpbnN0YW5jZSBmb3IgY2hhaW5pbmdcbiAgICovXG4gIGFkZENvbmZpZ0ZpZWxkKGZpZWxkTmFtZTogc3RyaW5nLCBmaWVsZFR5cGU6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnRmllbGRzLnNldChmaWVsZE5hbWUsIGZpZWxkVHlwZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjb25maWcgZmllbGRzIG1hcCAoZm9yIGludGVybmFsIHVzZSBieSBDb25maWdGaWxlKVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldENvbmZpZ0ZpZWxkcygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdGaWVsZHM7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFZpdGVDb21wb25lbnRPcHRpb25zIHtcbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJlcyBWaXRlIGRlcGVuZGVuY2llcyBhbmQgc2NyaXB0c1xuICovXG5jbGFzcyBWaXRlQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogVHlwZVNjcmlwdEFwcFByb2plY3QsIF9vcHRpb25zOiBWaXRlQ29tcG9uZW50T3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgY29uc3QgdHNQcm9qZWN0ID0gcHJvamVjdCBhcyBUeXBlU2NyaXB0QXBwUHJvamVjdDtcblxuICAgIC8vIFNldCBwYWNrYWdlIHR5cGUgdG8gbW9kdWxlIGZvciBFU00gc3VwcG9ydFxuICAgIHRzUHJvamVjdC5wYWNrYWdlLmFkZEZpZWxkKCd0eXBlJywgJ21vZHVsZScpO1xuXG4gICAgLy8gQWRkIFJlYWN0IGRlcGVuZGVuY2llc1xuICAgIHRzUHJvamVjdC5hZGREZXBzKCdyZWFjdEBeMTkuMi4wJywgJ3JlYWN0LWRvbUBeMTkuMi4wJyk7XG5cbiAgICAvLyBBZGQgZGV2IGRlcGVuZGVuY2llc1xuICAgIHRzUHJvamVjdC5hZGREZXZEZXBzKFxuICAgICAgJ0B0eXBlcy9yZWFjdEBeMTkuMi4yJyxcbiAgICAgICdAdHlwZXMvcmVhY3QtZG9tQF4xOS4yLjInLFxuICAgICAgJ0B2aXRlanMvcGx1Z2luLXJlYWN0QF41LjEuMCcsXG4gICAgICAndml0ZUBeNS40LjAnLFxuICAgICAgJ3R5cGVzY3JpcHRAfjUuOS4zJyxcbiAgICAgICdAZXNsaW50L2pzQF45LjM5LjEnLFxuICAgICAgJ2VzbGludEBeOS4zOS4xJyxcbiAgICAgICdlc2xpbnQtcGx1Z2luLXJlYWN0LWhvb2tzQF41LjIuMCcsXG4gICAgICAnZXNsaW50LXBsdWdpbi1yZWFjdC1yZWZyZXNoQF4wLjQuMjQnLFxuICAgICAgJ2dsb2JhbHNAXjE2LjUuMCcsXG4gICAgICAndHlwZXNjcmlwdC1lc2xpbnRAXjguNDYuMycsXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSB2aXRlLmNvbmZpZy50cyBhcyBhIG1hbmFnZWQgZmlsZVxuICAgIG5ldyBWaXRlQ29uZmlnRmlsZShwcm9qZWN0KTtcblxuICAgIC8vIEFkZCBzY3JpcHRzXG4gICAgdHNQcm9qZWN0LmFkZFRhc2soJ2RldicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnU3RhcnQgZGV2ZWxvcG1lbnQgc2VydmVyJyxcbiAgICAgIGV4ZWM6ICd2aXRlJyxcbiAgICB9KTtcblxuICAgIC8vIFJlbW92ZSBhbmQgcmVjcmVhdGUgYnVpbGQgdGFzayB0byBjdXN0b21pemUgaXQgZm9yIFZpdGVcbiAgICB0c1Byb2plY3QucmVtb3ZlVGFzaygnYnVpbGQnKTtcbiAgICB0c1Byb2plY3QuYWRkVGFzaygnYnVpbGQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIGZvciBwcm9kdWN0aW9uJyxcbiAgICAgIGV4ZWM6ICd0c2MgLWIgJiYgdml0ZSBidWlsZCcsXG4gICAgfSk7XG5cbiAgICB0c1Byb2plY3QuYWRkVGFzaygncHJldmlldycsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHJldmlldyBwcm9kdWN0aW9uIGJ1aWxkJyxcbiAgICAgIGV4ZWM6ICd2aXRlIHByZXZpZXcnLFxuICAgIH0pO1xuXG4gICAgdHNQcm9qZWN0LmFkZFRhc2soJ2xpbnQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0xpbnQgY29kZScsXG4gICAgICBleGVjOiAnZXNsaW50IC4nLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgRVNMaW50IGNvbmZpZ3VyYXRpb24gZm9yIFZpdGUgKyBSZWFjdFxuICovXG5jbGFzcyBWaXRlRXNsaW50Q29uZmlnIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCwgJ2VzbGludC5jb25maWcuanMnLCB7XG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHN5bnRoZXNpemVDb250ZW50KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGBpbXBvcnQganMgZnJvbSAnQGVzbGludC9qcydcbmltcG9ydCBnbG9iYWxzIGZyb20gJ2dsb2JhbHMnXG5pbXBvcnQgcmVhY3RIb29rcyBmcm9tICdlc2xpbnQtcGx1Z2luLXJlYWN0LWhvb2tzJ1xuaW1wb3J0IHJlYWN0UmVmcmVzaCBmcm9tICdlc2xpbnQtcGx1Z2luLXJlYWN0LXJlZnJlc2gnXG5pbXBvcnQgdHNlc2xpbnQgZnJvbSAndHlwZXNjcmlwdC1lc2xpbnQnXG5cbmV4cG9ydCBkZWZhdWx0IFtcbiAgeyBpZ25vcmVzOiBbJ2Rpc3QnXSB9LFxuICB7XG4gICAgZmlsZXM6IFsnKiovKi57dHMsdHN4fSddLFxuICAgIGxhbmd1YWdlT3B0aW9uczoge1xuICAgICAgZWNtYVZlcnNpb246IDIwMjAsXG4gICAgICBnbG9iYWxzOiBnbG9iYWxzLmJyb3dzZXIsXG4gICAgfSxcbiAgICBwbHVnaW5zOiB7XG4gICAgICAncmVhY3QtaG9va3MnOiByZWFjdEhvb2tzLFxuICAgICAgJ3JlYWN0LXJlZnJlc2gnOiByZWFjdFJlZnJlc2gsXG4gICAgfSxcbiAgICBydWxlczoge1xuICAgICAgLi4ucmVhY3RIb29rcy5jb25maWdzLnJlY29tbWVuZGVkLnJ1bGVzLFxuICAgICAgJ3JlYWN0LXJlZnJlc2gvb25seS1leHBvcnQtY29tcG9uZW50cyc6IFtcbiAgICAgICAgJ3dhcm4nLFxuICAgICAgICB7IGFsbG93Q29uc3RhbnRFeHBvcnQ6IHRydWUgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbiAganMuY29uZmlncy5yZWNvbW1lbmRlZCxcbiAgLi4udHNlc2xpbnQuY29uZmlncy5yZWNvbW1lbmRlZCxcbl1cbmA7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSB2aXRlLmNvbmZpZy50cyBmaWxlXG4gKi9cbmNsYXNzIFZpdGVDb25maWdGaWxlIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCwgJ3ZpdGUuY29uZmlnLnRzJywge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBzeW50aGVzaXplQ29udGVudCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBgaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSAndml0ZSdcbmltcG9ydCByZWFjdCBmcm9tICdAdml0ZWpzL3BsdWdpbi1yZWFjdCdcblxuLy8gaHR0cHM6Ly92aXRlLmRldi9jb25maWcvXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xuICBwbHVnaW5zOiBbcmVhY3QoKV0sXG59KVxuYDtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIHBvc3Rjc3MuY29uZmlnLmpzIGZpbGUgZm9yIFRhaWx3aW5kIENTUyB2NFxuICovXG5jbGFzcyBQb3N0Q1NTQ29uZmlnRmlsZSBleHRlbmRzIEZpbGVCYXNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QsICdwb3N0Y3NzLmNvbmZpZy5qcycsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgc3ludGhlc2l6ZUNvbnRlbnQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gYGV4cG9ydCBkZWZhdWx0IHtcbiAgcGx1Z2luczoge1xuICAgIFwiQHRhaWx3aW5kY3NzL3Bvc3Rjc3NcIjoge30sXG4gICAgYXV0b3ByZWZpeGVyOiB7fSxcbiAgfSxcbn1cbmA7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFZpdGVFbnZEdHNPcHRpb25zIHtcbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgdml0ZS1lbnYuZC50cyBmaWxlIGZvciB0eXBlIGRlY2xhcmF0aW9uc1xuICovXG5jbGFzcyBWaXRlRW52RHRzIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBWaXRlRW52RHRzT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QsIGAke29wdGlvbnMuc3JjZGlyfS92aXRlLWVudi5kLnRzYCwge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBzeW50aGVzaXplQ29udGVudCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBgLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJ2aXRlL2NsaWVudFwiIC8+XG5gO1xuICB9XG59XG5cbmludGVyZmFjZSBDb25maWdGaWxlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNvbmZpZy50cyBmaWxlIGZvciBydW50aW1lIGNvbmZpZ3VyYXRpb25cbiAqL1xuY2xhc3MgQ29uZmlnRmlsZSBleHRlbmRzIEZpbGVCYXNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogQ29uZmlnRmlsZU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCBgJHtvcHRpb25zLnNyY2Rpcn0vY29uZmlnLnRzYCwge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBzeW50aGVzaXplQ29udGVudCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIEdldCBjdXN0b20gY29uZmlnIGZpZWxkcyBmcm9tIHBhcmVudCBwcm9qZWN0XG4gICAgY29uc3Qgdml0ZVByb2plY3QgPSB0aGlzLnByb2plY3QgYXMgVml0ZVJlYWN0UHJvamVjdDtcbiAgICBjb25zdCBjdXN0b21GaWVsZHMgPSB2aXRlUHJvamVjdC5nZXRDb25maWdGaWVsZHMoKTtcblxuICAgIC8vIEdlbmVyYXRlIGJhc2UgY29uZmlnIHR5cGVcbiAgICBjb25zdCBiYXNlQ29uZmlnVHlwZSA9IGB0eXBlIEJhc2VDb25maWcgPSB7XG4gIGNsZXJrUHVibGlzaGFibGVLZXk6IHN0cmluZztcbiAgYXBpQmFzZVVybDogc3RyaW5nO1xuICB0aW1lb3V0OiBudW1iZXI7XG59YDtcblxuICAgIC8vIEdlbmVyYXRlIGN1c3RvbSBmaWVsZHMgdHlwZSBpZiBhbnkgZXhpc3RcbiAgICBsZXQgY29uZmlnVHlwZURlZmluaXRpb246IHN0cmluZztcbiAgICBpZiAoY3VzdG9tRmllbGRzLnNpemUgPiAwKSB7XG4gICAgICBjb25zdCBmaWVsZERlZmluaXRpb25zID0gQXJyYXkuZnJvbShjdXN0b21GaWVsZHMuZW50cmllcygpKVxuICAgICAgICAubWFwKChbbmFtZSwgdHlwZV0pID0+IGAgICR7bmFtZX06ICR7dHlwZX07YClcbiAgICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gICAgICBjb25zdCBjdXN0b21GaWVsZHNUeXBlID0gYHR5cGUgQ3VzdG9tQ29uZmlnID0ge1xuJHtmaWVsZERlZmluaXRpb25zfVxufWA7XG5cbiAgICAgIGNvbmZpZ1R5cGVEZWZpbml0aW9uID0gYCR7Y3VzdG9tRmllbGRzVHlwZX1cblxuZXhwb3J0IHR5cGUgQ29uZmlnID0gQmFzZUNvbmZpZyAmIEN1c3RvbUNvbmZpZztgO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWdUeXBlRGVmaW5pdGlvbiA9ICdleHBvcnQgdHlwZSBDb25maWcgPSBCYXNlQ29uZmlnOyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG4ke2Jhc2VDb25maWdUeXBlfVxuXG4ke2NvbmZpZ1R5cGVEZWZpbml0aW9ufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQ29uZmlnKCkge1xuICBjb25zdCBbbG9hZGVkQ29uZmlnLCBzZXRMb2FkZWRDb25maWddID0gdXNlU3RhdGU8Q29uZmlnfHVuZGVmaW5lZD4oKTtcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbG9hZGVkQ29uZmlnKSB7XG4gICAgICBmZXRjaCgnL2NvbmZpZy5qc29uJywgeyBjYWNoZTogJ25vLXN0b3JlJyB9KS50aGVuKHJlc3BvbnNlPT57XG4gICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKChjb25maWcpID0+IHtcbiAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgc2V0TG9hZGVkQ29uZmlnKGNvbmZpZylcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIH1cbiAgfSwgW2xvYWRlZENvbmZpZ10pO1xuXG4gIHJldHVybiB7IGNvbmZpZzogbG9hZGVkQ29uZmlnLCBpc0xvYWRpbmcgfTtcbn1cbmA7XG4gIH1cbn1cblxuaW50ZXJmYWNlIENvbmZpZ0pzb25GaWxlT3B0aW9ucyB7fVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNvbmZpZy5qc29uIHNhbXBsZSBmaWxlIGZvciBydW50aW1lIGNvbmZpZ3VyYXRpb25cbiAqL1xuY2xhc3MgQ29uZmlnSnNvbkZpbGUgZXh0ZW5kcyBTYW1wbGVGaWxlIHtcbiAgcGF0aDogc3RyaW5nO1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBWaXRlUmVhY3RQcm9qZWN0LCBfb3B0aW9uczogQ29uZmlnSnNvbkZpbGVPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwgYCR7cHJvamVjdC5wdWJsaWNEaXJ9L2NvbmZpZy5qc29uYCwge1xuICAgICAgY29udGVudHM6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgYXBpQmFzZVVybDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGknLFxuICAgICAgICBjbGVya1B1Ymxpc2hhYmxlS2V5OiAndGJkJyxcbiAgICAgIH0sIG51bGwsIDIpLFxuICAgIH0pO1xuICAgIHRoaXMucGF0aCA9IGAke3Byb2plY3QucHVibGljRGlyfS9jb25maWcuanNvbmA7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEluZGV4SHRtbE9wdGlvbnMge1xuICByZWFkb25seSB0aXRsZTogc3RyaW5nO1xuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBpbmRleC5odG1sIGZpbGVcbiAqL1xuY2xhc3MgSW5kZXhIdG1sIGV4dGVuZHMgU2FtcGxlRmlsZSB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEluZGV4SHRtbE9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0LCAnaW5kZXguaHRtbCcsIHtcbiAgICAgIGNvbnRlbnRzOiBgPCFkb2N0eXBlIGh0bWw+XG48aHRtbCBsYW5nPVwiZW5cIj5cbiAgPGhlYWQ+XG4gICAgPG1ldGEgY2hhcnNldD1cIlVURi04XCIgLz5cbiAgICA8bGluayByZWw9XCJpY29uXCIgdHlwZT1cImltYWdlL3N2Zyt4bWxcIiBocmVmPVwiL3ZpdGUuc3ZnXCIgLz5cbiAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMFwiIC8+XG4gICAgPHRpdGxlPiR7b3B0aW9ucy50aXRsZX08L3RpdGxlPlxuICA8L2hlYWQ+XG4gIDxib2R5PlxuICAgIDxkaXYgaWQ9XCJyb290XCI+PC9kaXY+XG4gICAgPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgc3JjPVwiLyR7b3B0aW9ucy5zcmNkaXJ9L21haW4udHN4XCI+PC9zY3JpcHQ+XG4gIDwvYm9keT5cbjwvaHRtbD5cbmAsXG4gICAgfSk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFZpdGVUc0NvbmZpZ3NPcHRpb25zIHtcbiAgcmVhZG9ubHkgc3JjZGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBWaXRlXG4gKi9cbmNsYXNzIFZpdGVUc0NvbmZpZ3MgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBWaXRlVHNDb25maWdzT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgLy8gTWFpbiB0c2NvbmZpZy5qc29uIChwcm9qZWN0IHJlZmVyZW5jZXMpXG4gICAgbmV3IEpzb25GaWxlKHByb2plY3QsICd0c2NvbmZpZy5qc29uJywge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICBvYmo6IHtcbiAgICAgICAgZmlsZXM6IFtdLFxuICAgICAgICByZWZlcmVuY2VzOiBbXG4gICAgICAgICAgeyBwYXRoOiAnLi90c2NvbmZpZy5hcHAuanNvbicgfSxcbiAgICAgICAgICB7IHBhdGg6ICcuL3RzY29uZmlnLm5vZGUuanNvbicgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyB0c2NvbmZpZy5hcHAuanNvbiAoZm9yIGFwcGxpY2F0aW9uIGNvZGUpXG4gICAgbmV3IEpzb25GaWxlKHByb2plY3QsICd0c2NvbmZpZy5hcHAuanNvbicsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgICAgb2JqOiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIHRhcmdldDogJ0VTMjAyMCcsXG4gICAgICAgICAgdXNlRGVmaW5lRm9yQ2xhc3NGaWVsZHM6IHRydWUsXG4gICAgICAgICAgbGliOiBbJ0VTMjAyMCcsICdET00nLCAnRE9NLkl0ZXJhYmxlJ10sXG4gICAgICAgICAgbW9kdWxlOiAnRVNOZXh0JyxcbiAgICAgICAgICBza2lwTGliQ2hlY2s6IHRydWUsXG5cbiAgICAgICAgICAvLyBCdW5kbGVyIG1vZGVcbiAgICAgICAgICBtb2R1bGVSZXNvbHV0aW9uOiAnYnVuZGxlcicsXG4gICAgICAgICAgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgICAgICAgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlLFxuICAgICAgICAgIG1vZHVsZURldGVjdGlvbjogJ2ZvcmNlJyxcbiAgICAgICAgICBub0VtaXQ6IHRydWUsXG4gICAgICAgICAganN4OiAncmVhY3QtanN4JyxcblxuICAgICAgICAgIC8vIExpbnRpbmdcbiAgICAgICAgICBzdHJpY3Q6IHRydWUsXG4gICAgICAgICAgbm9VbnVzZWRMb2NhbHM6IHRydWUsXG4gICAgICAgICAgbm9VbnVzZWRQYXJhbWV0ZXJzOiB0cnVlLFxuICAgICAgICAgIG5vRmFsbHRocm91Z2hDYXNlc0luU3dpdGNoOiB0cnVlLFxuICAgICAgICAgIG5vVW5jaGVja2VkU2lkZUVmZmVjdEltcG9ydHM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGluY2x1ZGU6IFtvcHRpb25zLnNyY2Rpcl0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gdHNjb25maWcubm9kZS5qc29uIChmb3IgVml0ZSBjb25maWcpXG4gICAgbmV3IEpzb25GaWxlKHByb2plY3QsICd0c2NvbmZpZy5ub2RlLmpzb24nLCB7XG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgIG9iajoge1xuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICB0YXJnZXQ6ICdFUzIwMjInLFxuICAgICAgICAgIGxpYjogWydFUzIwMjMnXSxcbiAgICAgICAgICBtb2R1bGU6ICdFU05leHQnLFxuICAgICAgICAgIHNraXBMaWJDaGVjazogdHJ1ZSxcblxuICAgICAgICAgIC8vIEJ1bmRsZXIgbW9kZVxuICAgICAgICAgIG1vZHVsZVJlc29sdXRpb246ICdidW5kbGVyJyxcbiAgICAgICAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICAgICAgICBpc29sYXRlZE1vZHVsZXM6IHRydWUsXG4gICAgICAgICAgbW9kdWxlRGV0ZWN0aW9uOiAnZm9yY2UnLFxuICAgICAgICAgIG5vRW1pdDogdHJ1ZSxcblxuICAgICAgICAgIC8vIExpbnRpbmdcbiAgICAgICAgICBzdHJpY3Q6IHRydWUsXG4gICAgICAgICAgbm9VbnVzZWRMb2NhbHM6IHRydWUsXG4gICAgICAgICAgbm9VbnVzZWRQYXJhbWV0ZXJzOiB0cnVlLFxuICAgICAgICAgIG5vRmFsbHRocm91Z2hDYXNlc0luU3dpdGNoOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBpbmNsdWRlOiBbJ3ZpdGUuY29uZmlnLnRzJ10sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmludGVyZmFjZSBWaXRlU2FtcGxlQ29kZU9wdGlvbnMge1xuICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbiAgcmVhZG9ubHkgcHVibGljRGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHNhbXBsZSBjb2RlIGZvciBhIFZpdGUgKyBSZWFjdCBwcm9qZWN0XG4gKi9cbmNsYXNzIFZpdGVTYW1wbGVDb2RlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogVml0ZVNhbXBsZUNvZGVPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICAvLyBDcmVhdGUgQXBwLnRzeFxuICAgIG5ldyBTYW1wbGVGaWxlKHByb2plY3QsIGAke29wdGlvbnMuc3JjZGlyfS9BcHAudHN4YCwge1xuICAgICAgY29udGVudHM6IGBpbXBvcnQgJy4vQXBwLmNzcydcbmltcG9ydCB7IFNpZ25lZEluLCBVc2VyQnV0dG9uIH0gZnJvbSAnQGNsZXJrL2NsZXJrLXJlYWN0JztcbmltcG9ydCB7IHVzZUJhc2VRdWVyeSB9IGZyb20gXCIuL3NlcnZpY2VzL0Jhc2VTZXJ2aWNlLnRzXCI7XG5cblxuZnVuY3Rpb24gQXBwKCkge1xuICBjb25zdCB7ZGF0YSwgaXNMb2FkaW5nfSA9IHVzZUJhc2VRdWVyeSgnLycsIHtyZXRyeU9uTW91bnQ6IHRydWV9KTtcblxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgICAgPGhlYWRlcj5cblxuICAgICAgICAgIDxTaWduZWRJbj5cbiAgICAgICAgICAgIDxVc2VyQnV0dG9uLz5cbiAgICAgICAgICA8L1NpZ25lZEluPlxuICAgICAgICA8L2hlYWRlcj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkXCI+XG4gICAgICAgICAgeyBpc0xvYWRpbmcgPyAnTG9hZGluZy4uLicgOiBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsICwpfVxuICAgICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBBcHBcbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgQmFzZVNlcnZpY2UudHNcbiAgICBuZXcgVGV4dEZpbGUocHJvamVjdCwgYCR7b3B0aW9ucy5zcmNkaXJ9L3NlcnZpY2VzL0Jhc2VTZXJ2aWNlLnRzYCwge1xuICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICBsaW5lczogW1xuICAgICAgICAnaW1wb3J0IHsgdXNlUXVlcnksIFVzZVF1ZXJ5T3B0aW9ucyB9IGZyb20gXFwnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XFwnOycsXG4gICAgICAgICdpbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSBcXCdAY2xlcmsvY2xlcmstcmVhY3RcXCc7JyxcbiAgICAgICAgJ2ltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gXFwnLi4vY29uZmlnXFwnOycsXG4gICAgICAgICcnLFxuICAgICAgICAnZXhwb3J0IGZ1bmN0aW9uIHVzZUJhc2VRdWVyeTxURGF0YSA9IHVua25vd24+KCcsXG4gICAgICAgICcgIHBhdGg6IHN0cmluZywnLFxuICAgICAgICAnICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8VERhdGE+LCBcXCdxdWVyeUtleVxcJyB8IFxcJ3F1ZXJ5Rm5cXCc+JyxcbiAgICAgICAgJykgeycsXG4gICAgICAgICcgIGNvbnN0IHsgY29uZmlnIH0gPSB1c2VDb25maWcoKTsnLFxuICAgICAgICAnICBjb25zdCB7IGdldFRva2VuIH0gPSB1c2VBdXRoKCk7JyxcbiAgICAgICAgJycsXG4gICAgICAgICcgIHJldHVybiB1c2VRdWVyeTxURGF0YT4oeycsXG4gICAgICAgICcgICAgcXVlcnlLZXk6IFtcXCdiYXNlXFwnXSwnLFxuICAgICAgICAnICAgIHF1ZXJ5Rm46IGFzeW5jICgpID0+IHsnLFxuICAgICAgICAnICAgICAgaWYgKCFjb25maWc/LmFwaUJhc2VVcmwpIHsnLFxuICAgICAgICAnICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFwnQVBJIGJhc2UgVVJMIG5vdCBjb25maWd1cmVkXFwnKTsnLFxuICAgICAgICAnICAgICAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCBnZXRUb2tlbigpOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgICAgLy8gTm9ybWFsaXplIFVSTCBieSByZW1vdmluZyB0cmFpbGluZyBzbGFzaCBmcm9tIGJhc2VVcmwgYW5kIGVuc3VyaW5nIHBhdGggc3RhcnRzIHdpdGggc2xhc2gnLFxuICAgICAgICAnICAgICAgY29uc3QgYmFzZVVybCA9IGNvbmZpZy5hcGlCYXNlVXJsLnJlcGxhY2UoL1xcXFwvKyQvLCBcXCdcXCcpOycsXG4gICAgICAgICcgICAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IHBhdGguc3RhcnRzV2l0aChcXCcvXFwnKSA/IHBhdGggOiBgLyR7cGF0aH1gOycsXG4gICAgICAgICcgICAgICAnLFxuICAgICAgICAnICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfSR7bm9ybWFsaXplZFBhdGh9YCwgeycsXG4gICAgICAgICcgICAgICAgIGhlYWRlcnM6IHsnLFxuICAgICAgICAnICAgICAgICAgIFxcJ0F1dGhvcml6YXRpb25cXCc6IGBCZWFyZXIgJHt0b2tlbn1gLCcsXG4gICAgICAgICcgICAgICAgIH0sJyxcbiAgICAgICAgJyAgICAgIH0pOycsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgICAgaWYgKCFyZXNwb25zZS5vaykgeycsXG4gICAgICAgICcgICAgICAgIHRocm93IG5ldyBFcnJvcihgSFRUUCBlcnJvciEgc3RhdHVzOiAke3Jlc3BvbnNlLnN0YXR1c31gKTsnLFxuICAgICAgICAnICAgICAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTsnLFxuICAgICAgICAnICAgIH0sJyxcbiAgICAgICAgJyAgICBlbmFibGVkOiAhIWNvbmZpZz8uYXBpQmFzZVVybCwnLFxuICAgICAgICAnICAgIC4uLm9wdGlvbnMsJyxcbiAgICAgICAgJyAgfSk7JyxcbiAgICAgICAgJ30nLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBSb290U2VydmljZS50c1xuICAgIG5ldyBTYW1wbGVGaWxlKHByb2plY3QsIGAke29wdGlvbnMuc3JjZGlyfS9zZXJ2aWNlcy9Sb290U2VydmljZS50c2AsIHtcbiAgICAgIGNvbnRlbnRzOiBgaW1wb3J0IHsgVXNlUXVlcnlPcHRpb25zIH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcbmltcG9ydCB7IHVzZUJhc2VRdWVyeSB9IGZyb20gJy4vQmFzZVNlcnZpY2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUm9vdFF1ZXJ5PFREYXRhID0gdW5rbm93bj4oXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxURGF0YT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZUJhc2VRdWVyeTxURGF0YT4oJy8nLCBvcHRpb25zKTtcbn1cbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgQXBwLmNzc1xuICAgIG5ldyBTYW1wbGVGaWxlKHByb2plY3QsIGAke29wdGlvbnMuc3JjZGlyfS9BcHAuY3NzYCwge1xuICAgICAgY29udGVudHM6IGAjcm9vdCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5sb2dvIHtcbiAgaGVpZ2h0OiA2ZW07XG4gIHBhZGRpbmc6IDEuNWVtO1xuICB3aWxsLWNoYW5nZTogZmlsdGVyO1xuICB0cmFuc2l0aW9uOiBmaWx0ZXIgMzAwbXM7XG59XG4ubG9nbzpob3ZlciB7XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDJlbSAjNjQ2Y2ZmYWEpO1xufVxuLmxvZ28ucmVhY3Q6aG92ZXIge1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAyZW0gIzYxZGFmYmFhKTtcbn1cblxuQGtleWZyYW1lcyBsb2dvLXNwaW4ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcbiAgYTpudGgtb2YtdHlwZSgyKSAubG9nbyB7XG4gICAgYW5pbWF0aW9uOiBsb2dvLXNwaW4gaW5maW5pdGUgMjBzIGxpbmVhcjtcbiAgfVxufVxuXG4uY2FyZCB7XG4gIHBhZGRpbmc6IDJlbTtcbn1cblxuLnJlYWQtdGhlLWRvY3Mge1xuICBjb2xvcjogIzg4ODtcbn1cbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgbWFpbi50c3hcbiAgICBuZXcgU2FtcGxlRmlsZShwcm9qZWN0LCBgJHtvcHRpb25zLnNyY2Rpcn0vbWFpbi50c3hgLCB7XG4gICAgICBjb250ZW50czogYGltcG9ydCB7IFN0cmljdE1vZGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVJvb3QgfSBmcm9tICdyZWFjdC1kb20vY2xpZW50J1xuaW1wb3J0ICcuL2luZGV4LmNzcydcbmltcG9ydCBBcHAgZnJvbSAnLi9BcHAudHN4J1xuaW1wb3J0IHsgQ2xlcmtQcm92aWRlciwgU2lnbmVkSW4sIFNpZ25lZE91dCwgU2lnbkluQnV0dG9uIH0gZnJvbSAnQGNsZXJrL2NsZXJrLXJlYWN0J1xuaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnXG5pbXBvcnQgeyBRdWVyeUNsaWVudCwgUXVlcnlDbGllbnRQcm92aWRlciB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIlxuXG5mdW5jdGlvbiBBcHBXcmFwcGVyKCkge1xuICBjb25zdCB7IGNvbmZpZywgaXNMb2FkaW5nIH0gPSB1c2VDb25maWcoKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSBuZXcgUXVlcnlDbGllbnQoKVxuICBpZiAoaXNMb2FkaW5nIHx8ICFjb25maWcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJsb2FkaW5nLXNjcmVlblwiPlxuICAgICAgICBMb2FkaW5nLi4uXG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Q2xlcmtQcm92aWRlciBwdWJsaXNoYWJsZUtleT17Y29uZmlnLmNsZXJrUHVibGlzaGFibGVLZXl9PlxuICAgICAgPFF1ZXJ5Q2xpZW50UHJvdmlkZXIgY2xpZW50PXtxdWVyeUNsaWVudH0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbFwiPlxuICAgICAgICAgIDxTaWduZWRPdXQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG1pbi1oLXNjcmVlblwiPlxuICAgICAgICAgICAgICA8U2lnbkluQnV0dG9uLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvU2lnbmVkT3V0PlxuICAgICAgICAgIDxTaWduZWRJbj5cbiAgICAgICAgICAgIDxBcHAvPlxuICAgICAgICAgIDwvU2lnbmVkSW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9RdWVyeUNsaWVudFByb3ZpZGVyPlxuICAgIDwvQ2xlcmtQcm92aWRlcj5cbiAgKTtcbn1cblxuY3JlYXRlUm9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpISkucmVuZGVyKFxuICA8U3RyaWN0TW9kZT5cbiAgICA8QXBwV3JhcHBlci8+XG4gIDwvU3RyaWN0TW9kZT5cbilcbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgaW5kZXguY3NzXG4gICAgbmV3IFNhbXBsZUZpbGUocHJvamVjdCwgYCR7b3B0aW9ucy5zcmNkaXJ9L2luZGV4LmNzc2AsIHtcbiAgICAgIGNvbnRlbnRzOiBgQGltcG9ydCBcInRhaWx3aW5kY3NzXCI7XG5cbkB0aGVtZSB7XG4gIC0tY29sb3Itc2NoZW1lOiBsaWdodCBkYXJrO1xufVxuXG46cm9vdCB7XG4gIGZvbnQtZmFtaWx5OiBJbnRlciwgc3lzdGVtLXVpLCBBdmVuaXIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG5cbiAgY29sb3Itc2NoZW1lOiBsaWdodCBkYXJrO1xuXG4gIGZvbnQtc3ludGhlc2lzOiBub25lO1xuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuYSB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiAjNjQ2Y2ZmO1xuICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7XG59XG5hOmhvdmVyIHtcbiAgY29sb3I6ICM1MzViZjI7XG59XG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xufVxuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMy4yZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjE7XG59XG5cbmJ1dHRvbiB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5sb2FkaW5nLXNjcmVlbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBoZWlnaHQ6IDEwMHZoO1xuICBmb250LXNpemU6IDEuNXJlbTtcbn1cblxuaHRtbCwgYm9keSwgI3Jvb3Qge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuYCxcbiAgICB9KTtcblxuICB9XG59XG4iXX0=
|
|
@@ -1,12 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
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
|
+
})();
|
|
3
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
36
|
exports.WorkflowAutoDiscover = void 0;
|
|
5
37
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
-
const fs = require("fs");
|
|
7
|
-
const path = require("path");
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
8
40
|
const projen_1 = require("projen");
|
|
9
41
|
class WorkflowAutoDiscover extends projen_1.Component {
|
|
42
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.WorkflowAutoDiscover", version: "1.14.1" };
|
|
10
43
|
constructor(project) {
|
|
11
44
|
super(project);
|
|
12
45
|
}
|
|
@@ -30,8 +63,6 @@ class WorkflowAutoDiscover extends projen_1.Component {
|
|
|
30
63
|
}
|
|
31
64
|
}
|
|
32
65
|
exports.WorkflowAutoDiscover = WorkflowAutoDiscover;
|
|
33
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
34
|
-
WorkflowAutoDiscover[_a] = { fqn: "@macedon-technologies/batman.WorkflowAutoDiscover", version: "1.13.0" };
|
|
35
66
|
function generateWorkflowFile(className, workflowJsonName) {
|
|
36
67
|
return [
|
|
37
68
|
'// ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen".',
|
|
@@ -70,4 +101,4 @@ function toClassName(baseName) {
|
|
|
70
101
|
}
|
|
71
102
|
return pascal + 'Workflow';
|
|
72
103
|
}
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29ya2Zsb3dBdXRvRGlzY292ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvV29ya2Zsb3dBdXRvRGlzY292ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsbUNBQW1DO0FBR25DLE1BQWEsb0JBQXFCLFNBQVEsa0JBQVM7O0lBQ2pELFlBQVksT0FBNEI7UUFDdEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxVQUFVO1FBQ1IsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRW5CLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDckUsSUFBSSxhQUFhLEdBQWEsRUFBRSxDQUFDO1FBRWpDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ2hDLGFBQWEsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQztpQkFDekMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDaEMsSUFBSSxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZFLEVBQUUsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFakQsS0FBSyxNQUFNLElBQUksSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEMsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RELEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxTQUFTLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDOztBQTFCSCxvREEyQkM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLFNBQWlCLEVBQUUsZ0JBQXdCO0lBQ3ZFLE9BQU87UUFDTCwrRUFBK0U7UUFDL0UsOEJBQThCO1FBQzlCLDJEQUEyRDtRQUMzRCx5Q0FBeUM7UUFDekMscUVBQXFFO1FBQ3JFLEVBQUU7UUFDRixvQkFBb0IsU0FBUyxTQUFTO1FBQ3RDLDZCQUE2QjtRQUM3QiwwQ0FBMEM7UUFDMUMsR0FBRztRQUNILEVBQUU7UUFDRixnQkFBZ0IsU0FBUyw2QkFBNkI7UUFDdEQsc0RBQXNELFNBQVMsVUFBVTtRQUN6RSx3QkFBd0I7UUFDeEIseURBQXlELGdCQUFnQixLQUFLO1FBQzlFLDZCQUE2QjtRQUM3Qix5Q0FBeUM7UUFDekMsU0FBUztRQUNULEtBQUs7UUFDTCxHQUFHO1FBQ0gsRUFBRTtLQUNILENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEdBQVc7SUFDL0IsT0FBTyxHQUFHO1NBQ1AsS0FBSyxDQUFDLFNBQVMsQ0FBQztTQUNoQixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLFFBQWdCO0lBQ25DLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM5QyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO0lBQzFDLENBQUM7SUFDRCxPQUFPLE1BQU0sR0FBRyxVQUFVLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCB9IGZyb20gJ3Byb2plbi9saWIvYXdzY2RrJztcblxuZXhwb3J0IGNsYXNzIFdvcmtmbG93QXV0b0Rpc2NvdmVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogQXdzQ2RrVHlwZVNjcmlwdEFwcCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuICB9XG5cbiAgc3ludGhlc2l6ZSgpOiB2b2lkIHtcbiAgICBzdXBlci5zeW50aGVzaXplKCk7XG5cbiAgICBjb25zdCB3b3JrZmxvd3NEaXIgPSBwYXRoLmpvaW4odGhpcy5wcm9qZWN0Lm91dGRpciwgJ3NyYy93b3JrZmxvd3MnKTtcbiAgICBsZXQgd29ya2Zsb3dGaWxlczogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmIChmcy5leGlzdHNTeW5jKHdvcmtmbG93c0RpcikpIHtcbiAgICAgIHdvcmtmbG93RmlsZXMgPSBmcy5yZWFkZGlyU3luYyh3b3JrZmxvd3NEaXIpXG4gICAgICAgIC5maWx0ZXIoZiA9PiBmLmVuZHNXaXRoKCcuanNvbicpKVxuICAgICAgICAuc29ydCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnN0cnVjdHNEaXIgPSBwYXRoLmpvaW4odGhpcy5wcm9qZWN0Lm91dGRpciwgJ3NyYy9jb25zdHJ1Y3RzJyk7XG4gICAgZnMubWtkaXJTeW5jKGNvbnN0cnVjdHNEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIHdvcmtmbG93RmlsZXMpIHtcbiAgICAgIGNvbnN0IGJhc2VOYW1lID0gZmlsZS5yZXBsYWNlKC9cXC5qc29uJC8sICcnKTtcbiAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRvQ2xhc3NOYW1lKGJhc2VOYW1lKTtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBnZW5lcmF0ZVdvcmtmbG93RmlsZShjbGFzc05hbWUsIGZpbGUpO1xuICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4oY29uc3RydWN0c0RpciwgYCR7Y2xhc3NOYW1lfS50c2ApLCBjb250ZW50KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVXb3JrZmxvd0ZpbGUoY2xhc3NOYW1lOiBzdHJpbmcsIHdvcmtmbG93SnNvbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBbXG4gICAgJy8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5weCBwcm9qZW5cIi4nLFxuICAgIFwiaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1wiLFxuICAgIFwiaW1wb3J0IHsgSVNlY3JldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlcic7XCIsXG4gICAgXCJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcIixcbiAgICBcImltcG9ydCB7IFJlcGxhY2VtZW50LCBXb3JrZmxvd1Byb3ZpZGVyIH0gZnJvbSAnLi9Xb3JrZmxvd1Byb3ZpZGVyJztcIixcbiAgICAnJyxcbiAgICBgZXhwb3J0IGludGVyZmFjZSAke2NsYXNzTmFtZX1Qcm9wcyB7YCxcbiAgICAnICByZWFkb25seSBzZWNyZXQ6IElTZWNyZXQ7JyxcbiAgICAnICByZWFkb25seSByZXBsYWNlbWVudHM/OiBSZXBsYWNlbWVudFtdOycsXG4gICAgJ30nLFxuICAgICcnLFxuICAgIGBleHBvcnQgY2xhc3MgJHtjbGFzc05hbWV9IGV4dGVuZHMgV29ya2Zsb3dQcm92aWRlciB7YCxcbiAgICBgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogJHtjbGFzc05hbWV9UHJvcHMpIHtgLFxuICAgICcgICAgc3VwZXIoc2NvcGUsIGlkLCB7JyxcbiAgICBgICAgICAgd29ya2Zsb3dGaWxlUGF0aDogam9pbihfX2Rpcm5hbWUsICcuLi93b3JrZmxvd3MvJHt3b3JrZmxvd0pzb25OYW1lfScpLGAsXG4gICAgJyAgICAgIHNlY3JldDogcHJvcHMuc2VjcmV0LCcsXG4gICAgJyAgICAgIHJlcGxhY2VtZW50czogcHJvcHMucmVwbGFjZW1lbnRzLCcsXG4gICAgJyAgICB9KTsnLFxuICAgICcgIH0nLFxuICAgICd9JyxcbiAgICAnJyxcbiAgXS5qb2luKCdcXG4nKTtcbn1cblxuZnVuY3Rpb24gdG9QYXNjYWxDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0clxuICAgIC5zcGxpdCgvWy1fXFxzXSsvKVxuICAgIC5tYXAod29yZCA9PiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKS50b0xvd2VyQ2FzZSgpKVxuICAgIC5qb2luKCcnKTtcbn1cblxuZnVuY3Rpb24gdG9DbGFzc05hbWUoYmFzZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBhc2NhbCA9IHRvUGFzY2FsQ2FzZShiYXNlTmFtZSk7XG4gIGlmIChwYXNjYWwudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnd29ya2Zsb3cnKSkge1xuICAgIHJldHVybiBwYXNjYWwuc2xpY2UoMCwgLTgpICsgJ1dvcmtmbG93JztcbiAgfVxuICByZXR1cm4gcGFzY2FsICsgJ1dvcmtmbG93Jztcbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -4,30 +4,6 @@
|
|
|
4
4
|
"type": "git",
|
|
5
5
|
"url": "https://github.com/macedon-technologies/platform-common"
|
|
6
6
|
},
|
|
7
|
-
"scripts": {
|
|
8
|
-
"build": "npx projen build",
|
|
9
|
-
"bump": "npx projen bump",
|
|
10
|
-
"clobber": "npx projen clobber",
|
|
11
|
-
"compat": "npx projen compat",
|
|
12
|
-
"compile": "npx projen compile",
|
|
13
|
-
"default": "npx projen default",
|
|
14
|
-
"docgen": "npx projen docgen",
|
|
15
|
-
"eject": "npx projen eject",
|
|
16
|
-
"eslint": "npx projen eslint",
|
|
17
|
-
"package": "npx projen package",
|
|
18
|
-
"package-all": "npx projen package-all",
|
|
19
|
-
"package:js": "npx projen package:js",
|
|
20
|
-
"post-compile": "npx projen post-compile",
|
|
21
|
-
"post-upgrade": "npx projen post-upgrade",
|
|
22
|
-
"pre-compile": "npx projen pre-compile",
|
|
23
|
-
"release": "npx projen release",
|
|
24
|
-
"test": "npx projen test",
|
|
25
|
-
"test:watch": "npx projen test:watch",
|
|
26
|
-
"unbump": "npx projen unbump",
|
|
27
|
-
"upgrade": "npx projen upgrade",
|
|
28
|
-
"watch": "npx projen watch",
|
|
29
|
-
"projen": "npx projen"
|
|
30
|
-
},
|
|
31
7
|
"author": {
|
|
32
8
|
"name": "Matthew Bonig",
|
|
33
9
|
"email": "matthew.bonig@macedonconsulting.com",
|
|
@@ -40,32 +16,40 @@
|
|
|
40
16
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
41
17
|
"@typescript-eslint/parser": "^8",
|
|
42
18
|
"commit-and-tag-version": "^12",
|
|
43
|
-
"constructs": "10.
|
|
19
|
+
"constructs": "10.5.0",
|
|
44
20
|
"eslint": "^9",
|
|
45
21
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
46
22
|
"eslint-plugin-import": "^2.32.0",
|
|
47
23
|
"jest": "^30.2.0",
|
|
48
|
-
"jest-junit": "^
|
|
24
|
+
"jest-junit": "^17",
|
|
49
25
|
"jsii": "~5.9.0",
|
|
50
26
|
"jsii-diff": "^1.119.0",
|
|
51
27
|
"jsii-docgen": "^10.5.0",
|
|
52
28
|
"jsii-pacmak": "^1.119.0",
|
|
53
29
|
"jsii-rosetta": "~5.9.0",
|
|
54
|
-
"projen": "0.
|
|
30
|
+
"projen": "0.103.1",
|
|
55
31
|
"ts-jest": "^29.4.5",
|
|
56
32
|
"ts-node": "^10.9.2",
|
|
57
33
|
"typescript": "^5.9.3"
|
|
58
34
|
},
|
|
59
35
|
"peerDependencies": {
|
|
60
|
-
"constructs": "10.
|
|
61
|
-
"projen": "^0.
|
|
36
|
+
"constructs": "10.5.0",
|
|
37
|
+
"projen": "^0.103.1"
|
|
62
38
|
},
|
|
63
39
|
"dependencies": {
|
|
64
|
-
"projen": "^0.
|
|
40
|
+
"projen": "^0.103.1"
|
|
41
|
+
},
|
|
42
|
+
"devEngines": {
|
|
43
|
+
"packageManager": {
|
|
44
|
+
"name": "pnpm",
|
|
45
|
+
"version": ">=10",
|
|
46
|
+
"onFail": "ignore"
|
|
47
|
+
}
|
|
65
48
|
},
|
|
66
49
|
"main": "lib/index.js",
|
|
67
50
|
"license": "Apache-2.0",
|
|
68
|
-
"
|
|
51
|
+
"stability": "stable",
|
|
52
|
+
"version": "1.14.1",
|
|
69
53
|
"jest": {
|
|
70
54
|
"coverageProvider": "v8",
|
|
71
55
|
"testMatch": [
|
|
@@ -106,20 +90,42 @@
|
|
|
106
90
|
"^.+\\.[t]sx?$": [
|
|
107
91
|
"ts-jest",
|
|
108
92
|
{
|
|
109
|
-
"tsconfig": "tsconfig.
|
|
93
|
+
"tsconfig": "test/tsconfig.json"
|
|
110
94
|
}
|
|
111
95
|
]
|
|
112
96
|
}
|
|
113
97
|
},
|
|
114
98
|
"types": "lib/index.d.ts",
|
|
115
|
-
"stability": "stable",
|
|
116
99
|
"jsii": {
|
|
117
100
|
"outdir": "dist",
|
|
118
101
|
"targets": {},
|
|
119
|
-
"
|
|
120
|
-
|
|
121
|
-
"rootDir": "src"
|
|
122
|
-
}
|
|
102
|
+
"tsconfig": "tsconfig.json",
|
|
103
|
+
"validateTsconfig": "strict"
|
|
123
104
|
},
|
|
124
|
-
"//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"
|
|
125
|
-
|
|
105
|
+
"//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"pnpm exec projen\".",
|
|
106
|
+
"scripts": {
|
|
107
|
+
"build": "projen build",
|
|
108
|
+
"bump": "projen bump",
|
|
109
|
+
"bump:releasable-commits": "projen bump:releasable-commits",
|
|
110
|
+
"clobber": "projen clobber",
|
|
111
|
+
"compat": "projen compat",
|
|
112
|
+
"compile": "projen compile",
|
|
113
|
+
"default": "projen default",
|
|
114
|
+
"docgen": "projen docgen",
|
|
115
|
+
"eject": "projen eject",
|
|
116
|
+
"eslint": "projen eslint",
|
|
117
|
+
"package": "projen package",
|
|
118
|
+
"package-all": "projen package-all",
|
|
119
|
+
"package:js": "projen package:js",
|
|
120
|
+
"post-compile": "projen post-compile",
|
|
121
|
+
"post-upgrade": "projen post-upgrade",
|
|
122
|
+
"pre-compile": "projen pre-compile",
|
|
123
|
+
"release": "projen release",
|
|
124
|
+
"test": "projen test",
|
|
125
|
+
"test:watch": "projen test:watch",
|
|
126
|
+
"unbump": "projen unbump",
|
|
127
|
+
"upgrade": "projen upgrade",
|
|
128
|
+
"watch": "projen watch",
|
|
129
|
+
"projen": "projen"
|
|
130
|
+
}
|
|
131
|
+
}
|
package/lib/ApiFunctionFile.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ApiFunctionFile = void 0;
|
|
4
|
-
const projen_1 = require("projen");
|
|
5
|
-
class ApiFunctionFile extends projen_1.SampleFile {
|
|
6
|
-
constructor(project) {
|
|
7
|
-
super(project, 'src/constructs/handler/Api.Function.ts', {
|
|
8
|
-
contents: `import type { APIGatewayEvent, APIGatewayProxyResult } from 'aws-lambda';
|
|
9
|
-
|
|
10
|
-
export const N8N_JWT_KEY = 'N8N_JWT_KEY';
|
|
11
|
-
export const N8N_ENDPOINT = 'N8N_ENDPOINT';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Unified handler that routes all API requests to appropriate services
|
|
15
|
-
* This handler can handle multiple endpoints and services (plants, orders, etc.)
|
|
16
|
-
*/
|
|
17
|
-
export const handler = async (event: APIGatewayEvent): Promise<APIGatewayProxyResult> => {
|
|
18
|
-
return {
|
|
19
|
-
statusCode: 200,
|
|
20
|
-
body: JSON.stringify({
|
|
21
|
-
message: 'API is up and running',
|
|
22
|
-
}),
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
`,
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
exports.ApiFunctionFile = ApiFunctionFile;
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpRnVuY3Rpb25GaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0FwaUZ1bmN0aW9uRmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBb0M7QUFHcEMsTUFBYSxlQUFnQixTQUFRLG1CQUFVO0lBQzdDLFlBQVksT0FBNEI7UUFDdEMsS0FBSyxDQUFDLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRTtZQUN2RCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUJmO1NBQ0ksQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBdkJELDBDQXVCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhbXBsZUZpbGUgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCB9IGZyb20gJ3Byb2plbi9saWIvYXdzY2RrJztcblxuZXhwb3J0IGNsYXNzIEFwaUZ1bmN0aW9uRmlsZSBleHRlbmRzIFNhbXBsZUZpbGUge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBBd3NDZGtUeXBlU2NyaXB0QXBwKSB7XG4gICAgc3VwZXIocHJvamVjdCwgJ3NyYy9jb25zdHJ1Y3RzL2hhbmRsZXIvQXBpLkZ1bmN0aW9uLnRzJywge1xuICAgICAgY29udGVudHM6IGBpbXBvcnQgdHlwZSB7IEFQSUdhdGV3YXlFdmVudCwgQVBJR2F0ZXdheVByb3h5UmVzdWx0IH0gZnJvbSAnYXdzLWxhbWJkYSc7XG5cbmV4cG9ydCBjb25zdCBOOE5fSldUX0tFWSA9ICdOOE5fSldUX0tFWSc7XG5leHBvcnQgY29uc3QgTjhOX0VORFBPSU5UID0gJ044Tl9FTkRQT0lOVCc7XG5cbi8qKlxuICogVW5pZmllZCBoYW5kbGVyIHRoYXQgcm91dGVzIGFsbCBBUEkgcmVxdWVzdHMgdG8gYXBwcm9wcmlhdGUgc2VydmljZXNcbiAqIFRoaXMgaGFuZGxlciBjYW4gaGFuZGxlIG11bHRpcGxlIGVuZHBvaW50cyBhbmQgc2VydmljZXMgKHBsYW50cywgb3JkZXJzLCBldGMuKVxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlciA9IGFzeW5jIChldmVudDogQVBJR2F0ZXdheUV2ZW50KTogUHJvbWlzZTxBUElHYXRld2F5UHJveHlSZXN1bHQ+ID0+IHtcbiAgcmV0dXJuIHtcbiAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgbWVzc2FnZTogJ0FQSSBpcyB1cCBhbmQgcnVubmluZycsXG4gICAgfSksXG4gIH07XG59O1xuYCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|