@openelement/adapter-vite 0.41.0-alpha.1 → 0.41.0-alpha.2
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/package.json +19 -14
- package/src/app-vite.d.ts +15 -0
- package/src/app-vite.js +40 -0
- package/src/build-context.d.ts +13 -29
- package/src/build-context.js +29 -82
- package/src/build.js +19 -7
- package/src/cli/build-ssg.js +1 -2
- package/src/index.d.ts +2 -1
- package/src/index.js +3 -2
- package/src/ssg-package-resolver.js +1 -2
- package/src/workspace-alias.js +1 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openelement/adapter-vite",
|
|
3
|
-
"version": "0.41.0-alpha.
|
|
3
|
+
"version": "0.41.0-alpha.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
"import": "./src/index.js",
|
|
11
11
|
"default": "./src/index.js"
|
|
12
12
|
},
|
|
13
|
+
"./app-vite": {
|
|
14
|
+
"types": "./src/app-vite.d.ts",
|
|
15
|
+
"import": "./src/app-vite.js",
|
|
16
|
+
"default": "./src/app-vite.js"
|
|
17
|
+
},
|
|
13
18
|
"./build-context": {
|
|
14
19
|
"types": "./src/build-context.d.ts",
|
|
15
20
|
"import": "./src/build-context.js",
|
|
@@ -61,18 +66,6 @@
|
|
|
61
66
|
"default": "./src/cli/build-ssg.js"
|
|
62
67
|
}
|
|
63
68
|
},
|
|
64
|
-
"dependencies": {
|
|
65
|
-
"@mdx-js/rollup": "^3.1.1",
|
|
66
|
-
"@hono/vite-dev-server": "^0.25.3",
|
|
67
|
-
"sanitize-html": "^2.17.4",
|
|
68
|
-
"@types/sanitize-html": "^2",
|
|
69
|
-
"vite": "^8.0.10",
|
|
70
|
-
"@openelement/protocol": "^0.41.0-alpha.1",
|
|
71
|
-
"@openelement/core": "^0.41.0-alpha.1",
|
|
72
|
-
"@openelement/ssg": "^0.41.0-alpha.1",
|
|
73
|
-
"@openelement/content": "^0.41.0-alpha.1",
|
|
74
|
-
"@deno/shim-deno": "~0.19.0"
|
|
75
|
-
},
|
|
76
69
|
"repository": {
|
|
77
70
|
"type": "git",
|
|
78
71
|
"url": "git+https://github.com/open-element/openelement.git"
|
|
@@ -83,5 +76,17 @@
|
|
|
83
76
|
"ssg",
|
|
84
77
|
"framework",
|
|
85
78
|
"deno"
|
|
86
|
-
]
|
|
79
|
+
],
|
|
80
|
+
"dependencies": {
|
|
81
|
+
"@mdx-js/rollup": "^3.1.1",
|
|
82
|
+
"@hono/vite-dev-server": "^0.25.3",
|
|
83
|
+
"sanitize-html": "^2.17.4",
|
|
84
|
+
"@types/sanitize-html": "^2",
|
|
85
|
+
"vite": "^8.0.10",
|
|
86
|
+
"@openelement/protocol": "^0.41.0-alpha.2",
|
|
87
|
+
"@openelement/content": "^0.41.0-alpha.2",
|
|
88
|
+
"@openelement/app": "^0.41.0-alpha.2",
|
|
89
|
+
"@openelement/core": "^0.41.0-alpha.2",
|
|
90
|
+
"@openelement/ssg": "^0.41.0-alpha.2"
|
|
91
|
+
}
|
|
87
92
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @openelement/adapter-vite - Unified openElement Vite plugin entry.
|
|
3
|
+
*
|
|
4
|
+
* Kept separate from the route authoring API so application routes can import
|
|
5
|
+
* @openelement/app without loading Vite/build orchestration.
|
|
6
|
+
*/ import type { Plugin } from 'vite';
|
|
7
|
+
import type { FrameworkOptions } from '@openelement/protocol/framework';
|
|
8
|
+
import type { OpenElementContentOptions } from '@openelement/content';
|
|
9
|
+
import type { OpenElementI18nOptions } from '@openelement/app/i18n';
|
|
10
|
+
/** Options for the openElement() unified Vite entry. */ export interface OpenElementOptions extends FrameworkOptions {
|
|
11
|
+
/** Content module options (blog + nav + sitemap). Omit to disable. */ content?: OpenElementContentOptions;
|
|
12
|
+
/** i18n module options. Omit to disable. */ i18n?: OpenElementI18nOptions;
|
|
13
|
+
}
|
|
14
|
+
export declare function openElement(options?: OpenElementOptions): Plugin[];
|
|
15
|
+
export default openElement;
|
package/src/app-vite.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @openelement/adapter-vite - Unified openElement Vite plugin entry.
|
|
3
|
+
*
|
|
4
|
+
* Kept separate from the route authoring API so application routes can import
|
|
5
|
+
* @openelement/app without loading Vite/build orchestration.
|
|
6
|
+
*/ import { OpenElementBuildContext } from './build-context.js';
|
|
7
|
+
import { createOpenPlugin } from './plugin.js';
|
|
8
|
+
import { openContent } from '@openelement/content';
|
|
9
|
+
import { openI18n } from '@openelement/app/i18n-plugin';
|
|
10
|
+
import { createLogger } from '@openelement/core/logger';
|
|
11
|
+
const log = createLogger('app');
|
|
12
|
+
export function openElement(options = {}) {
|
|
13
|
+
const { content: contentOpts, i18n: i18nOpts, ...coreOpts } = options;
|
|
14
|
+
const ctx = new OpenElementBuildContext({
|
|
15
|
+
...coreOpts,
|
|
16
|
+
routesDir: coreOpts.routesDir || 'app/routes',
|
|
17
|
+
islandsDir: coreOpts.islandsDir || 'app/islands',
|
|
18
|
+
componentsDir: coreOpts.componentsDir || 'app/components'
|
|
19
|
+
});
|
|
20
|
+
const plugins = [
|
|
21
|
+
...createOpenPlugin(coreOpts, ctx)
|
|
22
|
+
];
|
|
23
|
+
if (i18nOpts) {
|
|
24
|
+
plugins.push(openI18n({
|
|
25
|
+
...i18nOpts,
|
|
26
|
+
ctx
|
|
27
|
+
}));
|
|
28
|
+
log.info('i18n plugin loaded');
|
|
29
|
+
}
|
|
30
|
+
if (contentOpts) {
|
|
31
|
+
plugins.push(...openContent({
|
|
32
|
+
...contentOpts,
|
|
33
|
+
ctx
|
|
34
|
+
}));
|
|
35
|
+
log.info('Content plugin loaded');
|
|
36
|
+
}
|
|
37
|
+
return plugins;
|
|
38
|
+
}
|
|
39
|
+
export default openElement;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9hZGFwdGVyLXZpdGUvc3JjL2FwcC12aXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG9wZW5lbGVtZW50L2FkYXB0ZXItdml0ZSAtIFVuaWZpZWQgb3BlbkVsZW1lbnQgVml0ZSBwbHVnaW4gZW50cnkuXG4gKlxuICogS2VwdCBzZXBhcmF0ZSBmcm9tIHRoZSByb3V0ZSBhdXRob3JpbmcgQVBJIHNvIGFwcGxpY2F0aW9uIHJvdXRlcyBjYW4gaW1wb3J0XG4gKiBAb3BlbmVsZW1lbnQvYXBwIHdpdGhvdXQgbG9hZGluZyBWaXRlL2J1aWxkIG9yY2hlc3RyYXRpb24uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICd2aXRlJztcbmltcG9ydCB0eXBlIHsgRnJhbWV3b3JrT3B0aW9ucyB9IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9mcmFtZXdvcmsnO1xuaW1wb3J0IHR5cGUgeyBPcGVuRWxlbWVudENvbnRlbnRPcHRpb25zIH0gZnJvbSAnQG9wZW5lbGVtZW50L2NvbnRlbnQnO1xuaW1wb3J0IHR5cGUgeyBPcGVuRWxlbWVudEkxOG5PcHRpb25zIH0gZnJvbSAnQG9wZW5lbGVtZW50L2FwcC9pMThuJztcblxuaW1wb3J0IHsgT3BlbkVsZW1lbnRCdWlsZENvbnRleHQgfSBmcm9tICcuL2J1aWxkLWNvbnRleHQuanMnO1xuaW1wb3J0IHsgY3JlYXRlT3BlblBsdWdpbiB9IGZyb20gJy4vcGx1Z2luLmpzJztcbmltcG9ydCB7IG9wZW5Db250ZW50IH0gZnJvbSAnQG9wZW5lbGVtZW50L2NvbnRlbnQnO1xuaW1wb3J0IHsgb3BlbkkxOG4gfSBmcm9tICdAb3BlbmVsZW1lbnQvYXBwL2kxOG4tcGx1Z2luJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0BvcGVuZWxlbWVudC9jb3JlL2xvZ2dlcic7XG5cbmNvbnN0IGxvZyA9IGNyZWF0ZUxvZ2dlcignYXBwJyk7XG5cbi8qKiBPcHRpb25zIGZvciB0aGUgb3BlbkVsZW1lbnQoKSB1bmlmaWVkIFZpdGUgZW50cnkuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5FbGVtZW50T3B0aW9ucyBleHRlbmRzIEZyYW1ld29ya09wdGlvbnMge1xuICAvKiogQ29udGVudCBtb2R1bGUgb3B0aW9ucyAoYmxvZyArIG5hdiArIHNpdGVtYXApLiBPbWl0IHRvIGRpc2FibGUuICovXG4gIGNvbnRlbnQ/OiBPcGVuRWxlbWVudENvbnRlbnRPcHRpb25zO1xuICAvKiogaTE4biBtb2R1bGUgb3B0aW9ucy4gT21pdCB0byBkaXNhYmxlLiAqL1xuICBpMThuPzogT3BlbkVsZW1lbnRJMThuT3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5FbGVtZW50KG9wdGlvbnM6IE9wZW5FbGVtZW50T3B0aW9ucyA9IHt9KTogUGx1Z2luW10ge1xuICBjb25zdCB7IGNvbnRlbnQ6IGNvbnRlbnRPcHRzLCBpMThuOiBpMThuT3B0cywgLi4uY29yZU9wdHMgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGN0eCA9IG5ldyBPcGVuRWxlbWVudEJ1aWxkQ29udGV4dCh7XG4gICAgLi4uY29yZU9wdHMsXG4gICAgcm91dGVzRGlyOiBjb3JlT3B0cy5yb3V0ZXNEaXIgfHwgJ2FwcC9yb3V0ZXMnLFxuICAgIGlzbGFuZHNEaXI6IGNvcmVPcHRzLmlzbGFuZHNEaXIgfHwgJ2FwcC9pc2xhbmRzJyxcbiAgICBjb21wb25lbnRzRGlyOiBjb3JlT3B0cy5jb21wb25lbnRzRGlyIHx8ICdhcHAvY29tcG9uZW50cycsXG4gIH0pO1xuXG4gIGNvbnN0IHBsdWdpbnM6IFBsdWdpbltdID0gWy4uLmNyZWF0ZU9wZW5QbHVnaW4oY29yZU9wdHMsIGN0eCldO1xuXG4gIGlmIChpMThuT3B0cykge1xuICAgIHBsdWdpbnMucHVzaChvcGVuSTE4bih7IC4uLmkxOG5PcHRzLCBjdHggfSkpO1xuICAgIGxvZy5pbmZvKCdpMThuIHBsdWdpbiBsb2FkZWQnKTtcbiAgfVxuXG4gIGlmIChjb250ZW50T3B0cykge1xuICAgIHBsdWdpbnMucHVzaCguLi5vcGVuQ29udGVudCh7IC4uLmNvbnRlbnRPcHRzLCBjdHggfSkpO1xuICAgIGxvZy5pbmZvKCdDb250ZW50IHBsdWdpbiBsb2FkZWQnKTtcbiAgfVxuXG4gIHJldHVybiBwbHVnaW5zO1xufVxuXG5leHBvcnQgZGVmYXVsdCBvcGVuRWxlbWVudDtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Q0FLQyxHQU9ELFNBQVMsdUJBQXVCLFFBQVEscUJBQXFCO0FBQzdELFNBQVMsZ0JBQWdCLFFBQVEsY0FBYztBQUMvQyxTQUFTLFdBQVcsUUFBUSx1QkFBdUI7QUFDbkQsU0FBUyxRQUFRLFFBQVEsK0JBQStCO0FBQ3hELFNBQVMsWUFBWSxRQUFRLDJCQUEyQjtBQUV4RCxNQUFNLE1BQU0sYUFBYTtBQVV6QixPQUFPLFNBQVMsWUFBWSxVQUE4QixDQUFDLENBQUM7RUFDMUQsTUFBTSxFQUFFLFNBQVMsV0FBVyxFQUFFLE1BQU0sUUFBUSxFQUFFLEdBQUcsVUFBVSxHQUFHO0VBQzlELE1BQU0sTUFBTSxJQUFJLHdCQUF3QjtJQUN0QyxHQUFHLFFBQVE7SUFDWCxXQUFXLFNBQVMsU0FBUyxJQUFJO0lBQ2pDLFlBQVksU0FBUyxVQUFVLElBQUk7SUFDbkMsZUFBZSxTQUFTLGFBQWEsSUFBSTtFQUMzQztFQUVBLE1BQU0sVUFBb0I7T0FBSSxpQkFBaUIsVUFBVTtHQUFLO0VBRTlELElBQUksVUFBVTtJQUNaLFFBQVEsSUFBSSxDQUFDLFNBQVM7TUFBRSxHQUFHLFFBQVE7TUFBRTtJQUFJO0lBQ3pDLElBQUksSUFBSSxDQUFDO0VBQ1g7RUFFQSxJQUFJLGFBQWE7SUFDZixRQUFRLElBQUksSUFBSSxZQUFZO01BQUUsR0FBRyxXQUFXO01BQUU7SUFBSTtJQUNsRCxJQUFJLElBQUksQ0FBQztFQUNYO0VBRUEsT0FBTztBQUNUO0FBRUEsZUFBZSxZQUFZIn0=
|
package/src/build-context.d.ts
CHANGED
|
@@ -12,22 +12,14 @@
|
|
|
12
12
|
* - Sub-plugins (openContent, openI18n) write their data -> ctx fields
|
|
13
13
|
*
|
|
14
14
|
* ctx is passed via explicit parameter - no globalThis or module-level discovery.
|
|
15
|
-
* use openElement() from @openelement/
|
|
15
|
+
* use openElement() from @openelement/adapter-vite for the recommended unified entry.
|
|
16
16
|
*
|
|
17
17
|
* Fields are grouped by Phase to improve type safety and maintainability.
|
|
18
18
|
*/ import type { Alias, ResolvedConfig } from 'vite';
|
|
19
19
|
import type { CompatibilityClassification, FrameworkOptions, HydrationStrategy, OpenElementBlogOptions, OpenElementHeaderNavLink, OpenElementI18nContextOptions, OpenElementNavSection, RouteEntry } from '@openelement/protocol/framework';
|
|
20
20
|
import type { OpenElementPackageManifest } from '@openelement/protocol/manifest';
|
|
21
21
|
import type { IslandDecl, SsrAdmissionPlan } from '@openelement/protocol/ssg';
|
|
22
|
-
export type
|
|
23
|
-
readonly __phase1: unique symbol;
|
|
24
|
-
};
|
|
25
|
-
export type Phase2Token = {
|
|
26
|
-
readonly __phase2: unique symbol;
|
|
27
|
-
};
|
|
28
|
-
export type Phase3Token = {
|
|
29
|
-
readonly __phase3: unique symbol;
|
|
30
|
-
};
|
|
22
|
+
export type Phase = 1 | 2 | 3;
|
|
31
23
|
export declare class Phase1Meta {
|
|
32
24
|
/** The generated Hono entry module code (virtual module content) */ honoEntryCode: string;
|
|
33
25
|
/** Cached routes from buildStart() for virtual entry regeneration */ cachedRoutes: RouteEntry[];
|
|
@@ -75,25 +67,6 @@ export declare class Phase3Meta {
|
|
|
75
67
|
/** Skip Deno pre-resolution, use regex fallback. */ skipPreResolution?: boolean;
|
|
76
68
|
}
|
|
77
69
|
export declare class OpenElementBuildContext {
|
|
78
|
-
/** Phase completion tokens - used for compile-time ordering enforcement */ readonly _phaseTokens: {
|
|
79
|
-
1: Phase1Token | null;
|
|
80
|
-
2: Phase2Token | null;
|
|
81
|
-
3: Phase3Token | null;
|
|
82
|
-
};
|
|
83
|
-
/** Mark Phase 1 as complete and return the token for subsequent phases */ completePhase1(): Phase1Token;
|
|
84
|
-
/** Mark Phase 2 as complete (after Phase 1 or Phase 3) */ completePhase2(token: Phase1Token | Phase3Token): Phase2Token;
|
|
85
|
-
/** Mark Phase 3 as complete (only requires Phase 1, not Phase 2) */ completePhase3(token: Phase1Token): Phase3Token;
|
|
86
|
-
/** Populate Phase 3 invariants from resolved Vite config and framework options. */ populatePhase3(options: FrameworkOptions & {
|
|
87
|
-
allowHeadExtrasScripts?: boolean;
|
|
88
|
-
}, config: ResolvedConfig, ssrNoExternal: (string | {
|
|
89
|
-
__type: 'RegExp';
|
|
90
|
-
source: string;
|
|
91
|
-
flags: string;
|
|
92
|
-
})[]): void;
|
|
93
|
-
/** Return a read-only view of Phase 3 metadata. */ getPhase3Meta(): Readonly<Phase3Meta>;
|
|
94
|
-
/** Check whether a phase has been completed. */ isPhaseComplete(phase: 1 | 2 | 3): boolean;
|
|
95
|
-
/** Run Phase 3 after Phase 1, enforcing ordering and logging. */ runPhase3(runner: (ctx: this) => Promise<void>): Promise<void>;
|
|
96
|
-
/** Run Phase 2 after Phase 3, enforcing ordering and logging. */ runPhase2(runner: (ctx: this) => Promise<void>): Promise<void>;
|
|
97
70
|
/** Phase 1: Route scanning & build metadata */ readonly phase1: Phase1Meta;
|
|
98
71
|
/** Phase 2: Client island build state */ readonly phase2: Phase2Meta;
|
|
99
72
|
/** Phase 3: SSG rendering state */ readonly phase3: Phase3Meta;
|
|
@@ -106,6 +79,17 @@ export declare class OpenElementBuildContext {
|
|
|
106
79
|
[key: string]: unknown;
|
|
107
80
|
};
|
|
108
81
|
/** Resolved framework options with defaults applied (read-only after construction) */ readonly options: FrameworkOptions;
|
|
82
|
+
/** Tracks which build phases have completed. */ private completed: any;
|
|
109
83
|
constructor(options: FrameworkOptions);
|
|
84
|
+
/** Mark a phase as complete, enforcing ordering constraints. */ markComplete(phase: Phase): void;
|
|
85
|
+
/** Check whether a phase has been completed. */ isComplete(phase: Phase): boolean;
|
|
86
|
+
/** Populate Phase 3 invariants from resolved Vite config and framework options. */ populatePhase3(options: FrameworkOptions & {
|
|
87
|
+
allowHeadExtrasScripts?: boolean;
|
|
88
|
+
}, config: ResolvedConfig, ssrNoExternal: (string | {
|
|
89
|
+
__type: 'RegExp';
|
|
90
|
+
source: string;
|
|
91
|
+
flags: string;
|
|
92
|
+
})[]): void;
|
|
93
|
+
/** Return a read-only view of Phase 3 metadata. */ getPhase3Meta(): Readonly<Phase3Meta>;
|
|
110
94
|
/** Reset all mutable state (for watch mode / testing) */ reset(): void;
|
|
111
95
|
}
|
package/src/build-context.js
CHANGED
|
@@ -12,12 +12,10 @@
|
|
|
12
12
|
* - Sub-plugins (openContent, openI18n) write their data -> ctx fields
|
|
13
13
|
*
|
|
14
14
|
* ctx is passed via explicit parameter - no globalThis or module-level discovery.
|
|
15
|
-
* use openElement() from @openelement/
|
|
15
|
+
* use openElement() from @openelement/adapter-vite for the recommended unified entry.
|
|
16
16
|
*
|
|
17
17
|
* Fields are grouped by Phase to improve type safety and maintainability.
|
|
18
|
-
*/
|
|
19
|
-
const log = createLogger('core');
|
|
20
|
-
export class Phase1Meta {
|
|
18
|
+
*/ export class Phase1Meta {
|
|
21
19
|
/** The generated Hono entry module code (virtual module content) */ honoEntryCode = '';
|
|
22
20
|
/** Cached routes from buildStart() for virtual entry regeneration */ cachedRoutes = [];
|
|
23
21
|
/** Island tag names discovered during route scanning (local islands) */ islandTagNames = [];
|
|
@@ -57,37 +55,35 @@ export class Phase3Meta {
|
|
|
57
55
|
/** Skip Deno pre-resolution, use regex fallback. */ skipPreResolution;
|
|
58
56
|
}
|
|
59
57
|
export class OpenElementBuildContext {
|
|
60
|
-
/** Phase
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
58
|
+
/** Phase 1: Route scanning & build metadata */ phase1 = new Phase1Meta();
|
|
59
|
+
/** Phase 2: Client island build state */ phase2 = new Phase2Meta();
|
|
60
|
+
/** Phase 3: SSG rendering state */ phase3 = new Phase3Meta();
|
|
61
|
+
/** Plugin data from content/i18n sub-plugins */ plugins = {
|
|
62
|
+
blogOptions: null,
|
|
63
|
+
navSections: [],
|
|
64
|
+
headerNav: [],
|
|
65
|
+
sitemapOptions: null,
|
|
66
|
+
i18nOptions: null
|
|
64
67
|
};
|
|
65
|
-
/**
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
this._phaseTokens[1] = token;
|
|
70
|
-
return token;
|
|
68
|
+
/** Resolved framework options with defaults applied (read-only after construction) */ options;
|
|
69
|
+
/** Tracks which build phases have completed. */ completed = new Set();
|
|
70
|
+
constructor(options){
|
|
71
|
+
this.options = options;
|
|
71
72
|
}
|
|
72
|
-
/** Mark
|
|
73
|
-
if (
|
|
74
|
-
throw new Error('Phase 2
|
|
73
|
+
/** Mark a phase as complete, enforcing ordering constraints. */ markComplete(phase) {
|
|
74
|
+
if (phase === 2 && !this.completed.has(3)) {
|
|
75
|
+
throw new Error('Phase 2 requires Phase 3 to be completed first');
|
|
75
76
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
this.
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
/** Mark Phase 3 as complete (only requires Phase 1, not Phase 2) */ completePhase3(token) {
|
|
83
|
-
if (this._phaseTokens[1] !== token) {
|
|
84
|
-
throw new Error('Phase 3 called before Phase 1 completed');
|
|
77
|
+
if (phase === 2 && !this.completed.has(1)) {
|
|
78
|
+
throw new Error('Phase 2 requires Phase 1 to be completed first');
|
|
79
|
+
}
|
|
80
|
+
if (phase === 3 && !this.completed.has(1)) {
|
|
81
|
+
throw new Error('Phase 3 requires Phase 1 to be completed first');
|
|
85
82
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
this.
|
|
90
|
-
return t3;
|
|
83
|
+
this.completed.add(phase);
|
|
84
|
+
}
|
|
85
|
+
/** Check whether a phase has been completed. */ isComplete(phase) {
|
|
86
|
+
return this.completed.has(phase);
|
|
91
87
|
}
|
|
92
88
|
/** Populate Phase 3 invariants from resolved Vite config and framework options. */ populatePhase3(options, config, ssrNoExternal) {
|
|
93
89
|
let base = config.base || '/';
|
|
@@ -112,57 +108,8 @@ export class OpenElementBuildContext {
|
|
|
112
108
|
/** Return a read-only view of Phase 3 metadata. */ getPhase3Meta() {
|
|
113
109
|
return this.phase3;
|
|
114
110
|
}
|
|
115
|
-
/** Check whether a phase has been completed. */ isPhaseComplete(phase) {
|
|
116
|
-
return this._phaseTokens[phase] !== null;
|
|
117
|
-
}
|
|
118
|
-
/** Run Phase 3 after Phase 1, enforcing ordering and logging. */ async runPhase3(runner) {
|
|
119
|
-
const phase1Token = this._phaseTokens[1];
|
|
120
|
-
if (!phase1Token) {
|
|
121
|
-
throw new Error('Phase 3 called before Phase 1 completed');
|
|
122
|
-
}
|
|
123
|
-
this.completePhase3(phase1Token);
|
|
124
|
-
log.info('[3/3] Static site generation...');
|
|
125
|
-
try {
|
|
126
|
-
await runner(this);
|
|
127
|
-
log.info('[3/3] Static site generation - complete');
|
|
128
|
-
} catch (error) {
|
|
129
|
-
log.error(`[3/3] Static site generation - FAILED: ${error}`);
|
|
130
|
-
throw error;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
/** Run Phase 2 after Phase 3, enforcing ordering and logging. */ async runPhase2(runner) {
|
|
134
|
-
const phase3Token = this._phaseTokens[3];
|
|
135
|
-
if (!phase3Token) {
|
|
136
|
-
throw new Error('Phase 2 called before Phase 3 completed');
|
|
137
|
-
}
|
|
138
|
-
this.completePhase2(phase3Token);
|
|
139
|
-
log.info('[2/3] Client island build...');
|
|
140
|
-
try {
|
|
141
|
-
await runner(this);
|
|
142
|
-
log.info('[2/3] Client island build - complete');
|
|
143
|
-
} catch (error) {
|
|
144
|
-
log.error(`[2/3] Client island build - FAILED: ${error}`);
|
|
145
|
-
throw error;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
/** Phase 1: Route scanning & build metadata */ phase1 = new Phase1Meta();
|
|
149
|
-
/** Phase 2: Client island build state */ phase2 = new Phase2Meta();
|
|
150
|
-
/** Phase 3: SSG rendering state */ phase3 = new Phase3Meta();
|
|
151
|
-
/** Plugin data from content/i18n sub-plugins */ plugins = {
|
|
152
|
-
blogOptions: null,
|
|
153
|
-
navSections: [],
|
|
154
|
-
headerNav: [],
|
|
155
|
-
sitemapOptions: null,
|
|
156
|
-
i18nOptions: null
|
|
157
|
-
};
|
|
158
|
-
/** Resolved framework options with defaults applied (read-only after construction) */ options;
|
|
159
|
-
constructor(options){
|
|
160
|
-
this.options = options;
|
|
161
|
-
}
|
|
162
111
|
/** Reset all mutable state (for watch mode / testing) */ reset() {
|
|
163
|
-
this.
|
|
164
|
-
this._phaseTokens[2] = null;
|
|
165
|
-
this._phaseTokens[3] = null;
|
|
112
|
+
this.completed.clear();
|
|
166
113
|
const userResolveAlias = this.phase1.userResolveAlias;
|
|
167
114
|
// NOTE: userResolveAlias is NOT reset - it's user configuration, not
|
|
168
115
|
// build state. It's set in config()/configResolved() and must persist
|
|
@@ -181,4 +128,4 @@ export class OpenElementBuildContext {
|
|
|
181
128
|
});
|
|
182
129
|
}
|
|
183
130
|
}
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9hZGFwdGVyLXZpdGUvc3JjL2J1aWxkLWNvbnRleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAb3BlbmVsZW1lbnQvYWRhcHRlci12aXRlIC0gb3BlbkVsZW1lbnQgQnVpbGQgQ29udGV4dFxuICpcbiAqIFNoYXJlZCBtdXRhYmxlIHN0YXRlIGZvciBhbGwgb3BlbkVsZW1lbnQgVml0ZSBwbHVnaW5zLlxuICogUmVwbGFjZXMgdGhlIGNsb3N1cmUtY2FwdHVyZWQgdmFyaWFibGVzIChob25vRW50cnlDb2RlLCBzY2FubmVkSXNsYW5kVGFnTmFtZXMsIGV0Yy4pXG4gKiB3aXRoIGEgc2luZ2xlIG9iamVjdCB0aGF0J3MgZXhwbGljaXRseSBwYXNzZWQgYXJvdW5kLlxuICpcbiAqIEFsc28gcmVwbGFjZXMgdGhlIC5vcGVuRWxlbWVudC8gdGVtcCBkaXJlY3RvcnkgYXMgSVBDIGJldHdlZW4gYnVpbGQgcGhhc2VzOlxuICogLSBQaGFzZSAxIChvcGVuOmJ1aWxkKSB3cml0ZXMgbWV0YWRhdGEgLT4gY3R4IGZpZWxkc1xuICogLSBQaGFzZSAyIChidWlsZC1jbGllbnQpIHJlYWRzIG1ldGFkYXRhIC0+IGN0eCBmaWVsZHNcbiAqIC0gUGhhc2UgMyAoYnVpbGQtc3NnKSByZWFkcyBtZXRhZGF0YSAtPiBjdHggZmllbGRzXG4gKiAtIFN1Yi1wbHVnaW5zIChvcGVuQ29udGVudCwgb3BlbkkxOG4pIHdyaXRlIHRoZWlyIGRhdGEgLT4gY3R4IGZpZWxkc1xuICpcbiAqIGN0eCBpcyBwYXNzZWQgdmlhIGV4cGxpY2l0IHBhcmFtZXRlciAtIG5vIGdsb2JhbFRoaXMgb3IgbW9kdWxlLWxldmVsIGRpc2NvdmVyeS5cbiAqIHVzZSBvcGVuRWxlbWVudCgpIGZyb20gQG9wZW5lbGVtZW50L2FwcC92aXRlIGZvciB0aGUgcmVjb21tZW5kZWQgdW5pZmllZCBlbnRyeS5cbiAqXG4gKiBGaWVsZHMgYXJlIGdyb3VwZWQgYnkgUGhhc2UgdG8gaW1wcm92ZSB0eXBlIHNhZmV0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQWxpYXMsIFJlc29sdmVkQ29uZmlnIH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbXBhdGliaWxpdHlDbGFzc2lmaWNhdGlvbixcbiAgRnJhbWV3b3JrT3B0aW9ucyxcbiAgSHlkcmF0aW9uU3RyYXRlZ3ksXG4gIE9wZW5FbGVtZW50QmxvZ09wdGlvbnMsXG4gIE9wZW5FbGVtZW50SGVhZGVyTmF2TGluayxcbiAgT3BlbkVsZW1lbnRJMThuQ29udGV4dE9wdGlvbnMsXG4gIE9wZW5FbGVtZW50TmF2U2VjdGlvbixcbiAgUm91dGVFbnRyeSxcbn0gZnJvbSAnQG9wZW5lbGVtZW50L3Byb3RvY29sL2ZyYW1ld29yayc7XG5pbXBvcnQgdHlwZSB7IE9wZW5FbGVtZW50UGFja2FnZU1hbmlmZXN0IH0gZnJvbSAnQG9wZW5lbGVtZW50L3Byb3RvY29sL21hbmlmZXN0JztcbmltcG9ydCB0eXBlIHsgSXNsYW5kRGVjbCwgU3NyQWRtaXNzaW9uUGxhbiB9IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9zc2cnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnQG9wZW5lbGVtZW50L2NvcmUvbG9nZ2VyJztcblxuY29uc3QgbG9nID0gY3JlYXRlTG9nZ2VyKCdjb3JlJyk7XG5cbi8vIFRoZXNlIGJyYW5kZWQgdHlwZXMgZW5zdXJlIFBoYXNlIDIgY2FuIG9ubHkgcnVuIGFmdGVyIFBoYXNlIDEsXG4vLyBhbmQgUGhhc2UgMyBjYW4gb25seSBydW4gYWZ0ZXIgUGhhc2UgMi4gVGhlIGNvbXBpbGVyIGNhdGNoZXNcbi8vIG91dC1vZi1vcmRlciBwaGFzZSBjYWxscyBhdCBidWlsZCB0aW1lLlxuZXhwb3J0IHR5cGUgUGhhc2UxVG9rZW4gPSB7IHJlYWRvbmx5IF9fcGhhc2UxOiB1bmlxdWUgc3ltYm9sIH07XG5leHBvcnQgdHlwZSBQaGFzZTJUb2tlbiA9IHsgcmVhZG9ubHkgX19waGFzZTI6IHVuaXF1ZSBzeW1ib2wgfTtcbmV4cG9ydCB0eXBlIFBoYXNlM1Rva2VuID0geyByZWFkb25seSBfX3BoYXNlMzogdW5pcXVlIHN5bWJvbCB9O1xuXG5leHBvcnQgY2xhc3MgUGhhc2UxTWV0YSB7XG4gIC8qKiBUaGUgZ2VuZXJhdGVkIEhvbm8gZW50cnkgbW9kdWxlIGNvZGUgKHZpcnR1YWwgbW9kdWxlIGNvbnRlbnQpICovXG4gIGhvbm9FbnRyeUNvZGU6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBDYWNoZWQgcm91dGVzIGZyb20gYnVpbGRTdGFydCgpIGZvciB2aXJ0dWFsIGVudHJ5IHJlZ2VuZXJhdGlvbiAqL1xuICBjYWNoZWRSb3V0ZXM6IFJvdXRlRW50cnlbXSA9IFtdO1xuXG4gIC8qKiBJc2xhbmQgdGFnIG5hbWVzIGRpc2NvdmVyZWQgZHVyaW5nIHJvdXRlIHNjYW5uaW5nIChsb2NhbCBpc2xhbmRzKSAqL1xuICBpc2xhbmRUYWdOYW1lczogc3RyaW5nW10gPSBbXTtcblxuICAvKiogUmVsYXRpdmUgZmlsZSBwYXRocyBmb3IgbG9jYWwgaXNsYW5kcyAqL1xuICBpc2xhbmRGaWxlczogc3RyaW5nW10gPSBbXTtcblxuICAvKiogTG9jYWwgaXNsYW5kIG1ldGFkYXRhIGluZGV4ZWQgYnkgdGFnIG5hbWUuICovXG4gIGlzbGFuZE1ldGE6IFJlY29yZDxzdHJpbmcsIFBhcnRpYWw8SXNsYW5kRGVjbD4+ID0ge307XG5cbiAgLyoqIFBhY2thZ2UgbWFuaWZlc3RzIGRpc2NvdmVyZWQgZnJvbSBucG0vSlNSIHBhY2thZ2VzICovXG4gIHBhY2thZ2VNYW5pZmVzdHM6IE9wZW5FbGVtZW50UGFja2FnZU1hbmlmZXN0W10gPSBbXTtcblxuICAvKiogUGFja2FnZSBpc2xhbmQgZGVjbGFyYXRpb25zIGV4dHJhY3RlZCBmcm9tIG1hbmlmZXN0cyAqL1xuICBwYWNrYWdlSXNsYW5kRGVjbHM6IElzbGFuZERlY2xbXSA9IFtdO1xuXG4gIC8qKiBTU1IgYWRtaXNzaW9uIHBsYW4gcHJvZHVjZWQgYmVmb3JlIFNTUiBlbnRyeSBnZW5lcmF0aW9uLiAqL1xuICBzc3JBZG1pc3Npb25QbGFuOiBTc3JBZG1pc3Npb25QbGFuIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIHYwLjE4LjA6IENFTS1kZXJpdmVkIGNvbXBhdGliaWxpdHkgY2xhc3NpZmljYXRpb25zIGZyb20gdGhlIGNsYXNzaWZpZXIuICovXG4gIGNlbUNsYXNzaWZpY2F0aW9uczogQ29tcGF0aWJpbGl0eUNsYXNzaWZpY2F0aW9uW10gPSBbXTtcblxuICAvKiogV2hldGhlciB0aGUgU1NSK2NsaWVudCBidWlsZCBoYXMgY29tcGxldGVkICovXG4gIGJ1aWxkQ29tcGxldGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFZpdGUgcmVzb2x2ZWQgY29uZmlnIChzZXQgaW4gY29uZmlnUmVzb2x2ZWQgaG9vaykgKi9cbiAgcmVzb2x2ZWRDb25maWc6IFJlc29sdmVkQ29uZmlnIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFVzZXItcHJvdmlkZWQgcmVzb2x2ZS5hbGlhcyBpbiBpdHMgb3JpZ2luYWwgZm9ybWF0ICovXG4gIHVzZXJSZXNvbHZlQWxpYXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBBbGlhc1tdIHwgbnVsbCA9IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBQaGFzZTJNZXRhIHtcbiAgLyoqIEdlbmVyYXRlZCBjbGllbnQgaXNsYW5kIGVudHJ5IGNvZGUgKi9cbiAgY2xpZW50RW50cnlDb2RlOiBzdHJpbmcgPSAnJztcbn1cblxuZXhwb3J0IGNsYXNzIFBoYXNlM01ldGEge1xuICAvKiogR2VuZXJhdGVkIFNTRyBlbnRyeSBjb2RlIChmb3Igdml0ZUJ1aWxkIFNTUiBpbnB1dCkgKi9cbiAgc3NnRW50cnlDb2RlOiBzdHJpbmcgPSAnJztcblxuICAvKiogUHJvamVjdCByb290IGRpcmVjdG9yeSAqL1xuICByb290OiBzdHJpbmcgPSAnJztcblxuICAvKiogT3V0cHV0IGRpcmVjdG9yeSAoZGVmYXVsdDogJ2Rpc3QnKSAqL1xuICBvdXREaXI6IHN0cmluZyA9ICdkaXN0JztcblxuICAvKiogQmFzZSBVUkwgcGF0aCAoZGVmYXVsdDogJy8nKSAqL1xuICBiYXNlOiBzdHJpbmcgPSAnLyc7XG5cbiAgLyoqIE1pZGRsZXdhcmUgY29uZmlnIGZyb20gY3JlYXRlT3BlblBsdWdpbigpIG9wdGlvbnMgKi9cbiAgbWlkZGxld2FyZTogRnJhbWV3b3JrT3B0aW9uc1snbWlkZGxld2FyZSddIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIEhUTUwgZG9jdW1lbnQgb3B0aW9ucyBmcm9tIGNyZWF0ZU9wZW5QbHVnaW4oKSBvcHRpb25zICovXG4gIGh0bWw6IHsgbGFuZz86IHN0cmluZzsgdGl0bGU/OiBzdHJpbmcgfSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBJc2xhbmQgaHlkcmF0aW9uIHN0cmF0ZWd5IChkZWZhdWx0OiAnaWRsZScpICovXG4gIHVwZ3JhZGVTdHJhdGVneTogSHlkcmF0aW9uU3RyYXRlZ3kgPSAnaWRsZSc7XG5cbiAgLyoqIFZpZXcgVHJhbnNpdGlvbnMgZW5hYmxlZCAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgdmlld1RyYW5zaXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKiBTcGVjdWxhdGlvbiBSdWxlcyBjb25maWcgZnJvbSBjcmVhdGVPcGVuUGx1Z2luKCkgb3B0aW9ucyAqL1xuICBzcGVjdWxhdGlvbjogRnJhbWV3b3JrT3B0aW9uc1snc3BlY3VsYXRpb24nXSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBFeHRyYSBIVE1MIHRvIGluamVjdCBpbnRvIDxoZWFkPiAqL1xuICBoZWFkRXh0cmFzOiBzdHJpbmcgPSAnJztcblxuICAvKiogV2hldGhlciBoZWFkRXh0cmFzIHNjcmlwdHMgd2VyZSBwcm9kdWNlZCBieSBzdHJ1Y3R1cmVkIGluamVjdGlvbiBBUElzLiAqL1xuICBhbGxvd0hlYWRFeHRyYXNTY3JpcHRzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEFwcGxpY2F0aW9uIHNoZWxsIHJlbmRlcmVkIGFyb3VuZCByb3V0ZXMuICovXG4gIGFwcFNoZWxsOiBGcmFtZXdvcmtPcHRpb25zWydhcHBTaGVsbCddID0gdW5kZWZpbmVkO1xuXG4gIC8qKiBOYW1lZCByb3V0ZSBsYXlvdXRzIHNlbGVjdGVkIGJ5IHJvdXRlIG1ldGEuICovXG4gIGxheW91dHM6IEZyYW1ld29ya09wdGlvbnNbJ2xheW91dHMnXSA9IHVuZGVmaW5lZDtcblxuICAvKiogU1NSIG5vRXh0ZXJuYWwgcGF0dGVybnMgKHNlcmlhbGl6ZWQpICovXG4gIHNzck5vRXh0ZXJuYWw6IChzdHJpbmcgfCB7IF9fdHlwZTogJ1JlZ0V4cCc7IHNvdXJjZTogc3RyaW5nOyBmbGFnczogc3RyaW5nIH0pW10gPSBbXTtcblxuICAvKiogU1NSIGRlcHMgdG8ga2VlcCBhcyBleHRlcm5hbCAocmVzb2x2ZWQgYnkgRGVubyBpbXBvcnQoKSBhdCBydW50aW1lIHBlciBBRFItMDA0MykgKi9cbiAgc3NyRXh0ZXJuYWw6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqIFJvdXRlcyBkaXJlY3RvcnkgKi9cbiAgcm91dGVzRGlyOiBzdHJpbmcgPSAnYXBwL3JvdXRlcyc7XG5cbiAgLyoqIElzbGFuZHMgZGlyZWN0b3J5ICovXG4gIGlzbGFuZHNEaXI6IHN0cmluZyA9ICdhcHAvaXNsYW5kcyc7XG5cbiAgLyoqIENvbXBvbmVudHMgZGlyZWN0b3J5ICovXG4gIGNvbXBvbmVudHNEaXI6IHN0cmluZyA9ICdhcHAvY29tcG9uZW50cyc7XG5cbiAgLyoqIEFEUi0wMDQ3OiBQcmUtcmVzb2x2ZWQgZXh0ZXJuYWwgZGVwZW5kZW5jeSBtYW5pZmVzdCAoYXV0by1nZW5lcmF0ZWQgZnJvbSBkZW5vIGluZm8pLiAqL1xuICBleHRlcm5hbE1hbmlmZXN0PzogaW1wb3J0KCdAb3BlbmVsZW1lbnQvcHJvdG9jb2wvc3NnJykuRXh0ZXJuYWxNYW5pZmVzdDtcblxuICAvKiogU2tpcCBEZW5vIHByZS1yZXNvbHV0aW9uLCB1c2UgcmVnZXggZmFsbGJhY2suICovXG4gIHNraXBQcmVSZXNvbHV0aW9uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIE9wZW5FbGVtZW50QnVpbGRDb250ZXh0IHtcbiAgLyoqIFBoYXNlIGNvbXBsZXRpb24gdG9rZW5zIC0gdXNlZCBmb3IgY29tcGlsZS10aW1lIG9yZGVyaW5nIGVuZm9yY2VtZW50ICovXG4gIHJlYWRvbmx5IF9waGFzZVRva2Vuczoge1xuICAgIDE6IFBoYXNlMVRva2VuIHwgbnVsbDtcbiAgICAyOiBQaGFzZTJUb2tlbiB8IG51bGw7XG4gICAgMzogUGhhc2UzVG9rZW4gfCBudWxsO1xuICB9ID0geyAxOiBudWxsLCAyOiBudWxsLCAzOiBudWxsIH07XG5cbiAgLyoqIE1hcmsgUGhhc2UgMSBhcyBjb21wbGV0ZSBhbmQgcmV0dXJuIHRoZSB0b2tlbiBmb3Igc3Vic2VxdWVudCBwaGFzZXMgKi9cbiAgY29tcGxldGVQaGFzZTEoKTogUGhhc2UxVG9rZW4ge1xuICAgIGNvbnN0IHRva2VuOiBQaGFzZTFUb2tlbiA9IHsgX19waGFzZTE6IFN5bWJvbCgpIGFzIG5ldmVyIH07XG4gICAgdGhpcy5fcGhhc2VUb2tlbnNbMV0gPSB0b2tlbjtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICAvKiogTWFyayBQaGFzZSAyIGFzIGNvbXBsZXRlIChhZnRlciBQaGFzZSAxIG9yIFBoYXNlIDMpICovXG4gIGNvbXBsZXRlUGhhc2UyKHRva2VuOiBQaGFzZTFUb2tlbiB8IFBoYXNlM1Rva2VuKTogUGhhc2UyVG9rZW4ge1xuICAgIGlmICh0aGlzLl9waGFzZVRva2Vuc1sxXSAhPT0gdG9rZW4gJiYgdGhpcy5fcGhhc2VUb2tlbnNbM10gIT09IHRva2VuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BoYXNlIDIgY2FsbGVkIGJlZm9yZSBQaGFzZSAxIGNvbXBsZXRlZCcpO1xuICAgIH1cbiAgICBjb25zdCB0MjogUGhhc2UyVG9rZW4gPSB7IF9fcGhhc2UyOiBTeW1ib2woKSBhcyBuZXZlciB9O1xuICAgIHRoaXMuX3BoYXNlVG9rZW5zWzJdID0gdDI7XG4gICAgcmV0dXJuIHQyO1xuICB9XG5cbiAgLyoqIE1hcmsgUGhhc2UgMyBhcyBjb21wbGV0ZSAob25seSByZXF1aXJlcyBQaGFzZSAxLCBub3QgUGhhc2UgMikgKi9cbiAgY29tcGxldGVQaGFzZTModG9rZW46IFBoYXNlMVRva2VuKTogUGhhc2UzVG9rZW4ge1xuICAgIGlmICh0aGlzLl9waGFzZVRva2Vuc1sxXSAhPT0gdG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUGhhc2UgMyBjYWxsZWQgYmVmb3JlIFBoYXNlIDEgY29tcGxldGVkJyk7XG4gICAgfVxuICAgIGNvbnN0IHQzOiBQaGFzZTNUb2tlbiA9IHsgX19waGFzZTM6IFN5bWJvbCgpIGFzIG5ldmVyIH07XG4gICAgdGhpcy5fcGhhc2VUb2tlbnNbM10gPSB0MztcbiAgICByZXR1cm4gdDM7XG4gIH1cblxuICAvKiogUG9wdWxhdGUgUGhhc2UgMyBpbnZhcmlhbnRzIGZyb20gcmVzb2x2ZWQgVml0ZSBjb25maWcgYW5kIGZyYW1ld29yayBvcHRpb25zLiAqL1xuICBwb3B1bGF0ZVBoYXNlMyhcbiAgICBvcHRpb25zOiBGcmFtZXdvcmtPcHRpb25zICYgeyBhbGxvd0hlYWRFeHRyYXNTY3JpcHRzPzogYm9vbGVhbiB9LFxuICAgIGNvbmZpZzogUmVzb2x2ZWRDb25maWcsXG4gICAgc3NyTm9FeHRlcm5hbDogKHN0cmluZyB8IHsgX190eXBlOiAnUmVnRXhwJzsgc291cmNlOiBzdHJpbmc7IGZsYWdzOiBzdHJpbmcgfSlbXSxcbiAgKTogdm9pZCB7XG4gICAgbGV0IGJhc2UgPSBjb25maWcuYmFzZSB8fCAnLyc7XG4gICAgaWYgKCFiYXNlLmVuZHNXaXRoKCcvJykpIGJhc2UgKz0gJy8nO1xuXG4gICAgdGhpcy5waGFzZTMucm9vdCA9IGNvbmZpZy5yb290O1xuICAgIHRoaXMucGhhc2UzLm91dERpciA9IG9wdGlvbnMuYnVpbGQ/Lm91dERpciB8fCAnZGlzdCc7XG4gICAgdGhpcy5waGFzZTMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5waGFzZTMuc3NyTm9FeHRlcm5hbCA9IHNzck5vRXh0ZXJuYWw7XG4gICAgdGhpcy5waGFzZTMucm91dGVzRGlyID0gb3B0aW9ucy5yb3V0ZXNEaXIgfHwgJ2FwcC9yb3V0ZXMnO1xuICAgIHRoaXMucGhhc2UzLmlzbGFuZHNEaXIgPSBvcHRpb25zLmlzbGFuZHNEaXIgfHwgJ2FwcC9pc2xhbmRzJztcbiAgICB0aGlzLnBoYXNlMy5jb21wb25lbnRzRGlyID0gb3B0aW9ucy5jb21wb25lbnRzRGlyIHx8ICdhcHAvY29tcG9uZW50cyc7XG4gICAgdGhpcy5waGFzZTMubWlkZGxld2FyZSA9IG9wdGlvbnMubWlkZGxld2FyZSB8fCBudWxsO1xuICAgIHRoaXMucGhhc2UzLmh0bWwgPSBvcHRpb25zLmh0bWwgfHwgbnVsbDtcbiAgICB0aGlzLnBoYXNlMy51cGdyYWRlU3RyYXRlZ3kgPSBvcHRpb25zLmlzbGFuZD8udXBncmFkZVN0cmF0ZWd5IHx8ICdpZGxlJztcbiAgICB0aGlzLnBoYXNlMy52aWV3VHJhbnNpdGlvbiA9IG9wdGlvbnMudmlld1RyYW5zaXRpb24gPz8gdHJ1ZTtcbiAgICB0aGlzLnBoYXNlMy5zcGVjdWxhdGlvbiA9IG9wdGlvbnMuc3BlY3VsYXRpb24gPz8gbnVsbDtcbiAgICB0aGlzLnBoYXNlMy5oZWFkRXh0cmFzID0gb3B0aW9ucy5oZWFkRXh0cmFzIHx8ICcnO1xuICAgIHRoaXMucGhhc2UzLmFsbG93SGVhZEV4dHJhc1NjcmlwdHMgPSBvcHRpb25zLmFsbG93SGVhZEV4dHJhc1NjcmlwdHMgfHwgZmFsc2U7XG4gICAgdGhpcy5waGFzZTMuYXBwU2hlbGwgPSBvcHRpb25zLmFwcFNoZWxsO1xuICAgIHRoaXMucGhhc2UzLmxheW91dHMgPSBvcHRpb25zLmxheW91dHM7XG4gIH1cblxuICAvKiogUmV0dXJuIGEgcmVhZC1vbmx5IHZpZXcgb2YgUGhhc2UgMyBtZXRhZGF0YS4gKi9cbiAgZ2V0UGhhc2UzTWV0YSgpOiBSZWFkb25seTxQaGFzZTNNZXRhPiB7XG4gICAgcmV0dXJuIHRoaXMucGhhc2UzO1xuICB9XG5cbiAgLyoqIENoZWNrIHdoZXRoZXIgYSBwaGFzZSBoYXMgYmVlbiBjb21wbGV0ZWQuICovXG4gIGlzUGhhc2VDb21wbGV0ZShwaGFzZTogMSB8IDIgfCAzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BoYXNlVG9rZW5zW3BoYXNlXSAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKiBSdW4gUGhhc2UgMyBhZnRlciBQaGFzZSAxLCBlbmZvcmNpbmcgb3JkZXJpbmcgYW5kIGxvZ2dpbmcuICovXG4gIGFzeW5jIHJ1blBoYXNlMyhydW5uZXI6IChjdHg6IHRoaXMpID0+IFByb21pc2U8dm9pZD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwaGFzZTFUb2tlbiA9IHRoaXMuX3BoYXNlVG9rZW5zWzFdO1xuICAgIGlmICghcGhhc2UxVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUGhhc2UgMyBjYWxsZWQgYmVmb3JlIFBoYXNlIDEgY29tcGxldGVkJyk7XG4gICAgfVxuICAgIHRoaXMuY29tcGxldGVQaGFzZTMocGhhc2UxVG9rZW4pO1xuXG4gICAgbG9nLmluZm8oJ1szLzNdIFN0YXRpYyBzaXRlIGdlbmVyYXRpb24uLi4nKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcnVubmVyKHRoaXMpO1xuICAgICAgbG9nLmluZm8oJ1szLzNdIFN0YXRpYyBzaXRlIGdlbmVyYXRpb24gLSBjb21wbGV0ZScpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2cuZXJyb3IoYFszLzNdIFN0YXRpYyBzaXRlIGdlbmVyYXRpb24gLSBGQUlMRUQ6ICR7ZXJyb3J9YCk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKiogUnVuIFBoYXNlIDIgYWZ0ZXIgUGhhc2UgMywgZW5mb3JjaW5nIG9yZGVyaW5nIGFuZCBsb2dnaW5nLiAqL1xuICBhc3luYyBydW5QaGFzZTIocnVubmVyOiAoY3R4OiB0aGlzKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGhhc2UzVG9rZW4gPSB0aGlzLl9waGFzZVRva2Vuc1szXTtcbiAgICBpZiAoIXBoYXNlM1Rva2VuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BoYXNlIDIgY2FsbGVkIGJlZm9yZSBQaGFzZSAzIGNvbXBsZXRlZCcpO1xuICAgIH1cbiAgICB0aGlzLmNvbXBsZXRlUGhhc2UyKHBoYXNlM1Rva2VuKTtcblxuICAgIGxvZy5pbmZvKCdbMi8zXSBDbGllbnQgaXNsYW5kIGJ1aWxkLi4uJyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJ1bm5lcih0aGlzKTtcbiAgICAgIGxvZy5pbmZvKCdbMi8zXSBDbGllbnQgaXNsYW5kIGJ1aWxkIC0gY29tcGxldGUnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nLmVycm9yKGBbMi8zXSBDbGllbnQgaXNsYW5kIGJ1aWxkIC0gRkFJTEVEOiAke2Vycm9yfWApO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgLyoqIFBoYXNlIDE6IFJvdXRlIHNjYW5uaW5nICYgYnVpbGQgbWV0YWRhdGEgKi9cbiAgcmVhZG9ubHkgcGhhc2UxOiBQaGFzZTFNZXRhID0gbmV3IFBoYXNlMU1ldGEoKTtcblxuICAvKiogUGhhc2UgMjogQ2xpZW50IGlzbGFuZCBidWlsZCBzdGF0ZSAqL1xuICByZWFkb25seSBwaGFzZTI6IFBoYXNlMk1ldGEgPSBuZXcgUGhhc2UyTWV0YSgpO1xuXG4gIC8qKiBQaGFzZSAzOiBTU0cgcmVuZGVyaW5nIHN0YXRlICovXG4gIHJlYWRvbmx5IHBoYXNlMzogUGhhc2UzTWV0YSA9IG5ldyBQaGFzZTNNZXRhKCk7XG5cbiAgLyoqIFBsdWdpbiBkYXRhIGZyb20gY29udGVudC9pMThuIHN1Yi1wbHVnaW5zICovXG4gIHJlYWRvbmx5IHBsdWdpbnM6IHtcbiAgICBibG9nT3B0aW9uczogT3BlbkVsZW1lbnRCbG9nT3B0aW9ucyB8IG51bGw7XG4gICAgbmF2U2VjdGlvbnM6IE9wZW5FbGVtZW50TmF2U2VjdGlvbltdO1xuICAgIGhlYWRlck5hdjogT3BlbkVsZW1lbnRIZWFkZXJOYXZMaW5rW107XG4gICAgc2l0ZW1hcE9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgICBpMThuT3B0aW9uczogT3BlbkVsZW1lbnRJMThuQ29udGV4dE9wdGlvbnMgfCBudWxsO1xuICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gIH0gPSB7XG4gICAgYmxvZ09wdGlvbnM6IG51bGwsXG4gICAgbmF2U2VjdGlvbnM6IFtdLFxuICAgIGhlYWRlck5hdjogW10sXG4gICAgc2l0ZW1hcE9wdGlvbnM6IG51bGwsXG4gICAgaTE4bk9wdGlvbnM6IG51bGwsXG4gIH07XG5cbiAgLyoqIFJlc29sdmVkIGZyYW1ld29yayBvcHRpb25zIHdpdGggZGVmYXVsdHMgYXBwbGllZCAocmVhZC1vbmx5IGFmdGVyIGNvbnN0cnVjdGlvbikgKi9cbiAgcmVhZG9ubHkgb3B0aW9uczogRnJhbWV3b3JrT3B0aW9ucztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBGcmFtZXdvcmtPcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIC8qKiBSZXNldCBhbGwgbXV0YWJsZSBzdGF0ZSAoZm9yIHdhdGNoIG1vZGUgLyB0ZXN0aW5nKSAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLl9waGFzZVRva2Vuc1sxXSA9IG51bGw7XG4gICAgdGhpcy5fcGhhc2VUb2tlbnNbMl0gPSBudWxsO1xuICAgIHRoaXMuX3BoYXNlVG9rZW5zWzNdID0gbnVsbDtcblxuICAgIGNvbnN0IHVzZXJSZXNvbHZlQWxpYXMgPSB0aGlzLnBoYXNlMS51c2VyUmVzb2x2ZUFsaWFzO1xuICAgIC8vIE5PVEU6IHVzZXJSZXNvbHZlQWxpYXMgaXMgTk9UIHJlc2V0IC0gaXQncyB1c2VyIGNvbmZpZ3VyYXRpb24sIG5vdFxuICAgIC8vIGJ1aWxkIHN0YXRlLiBJdCdzIHNldCBpbiBjb25maWcoKS9jb25maWdSZXNvbHZlZCgpIGFuZCBtdXN0IHBlcnNpc3RcbiAgICAvLyB0aHJvdWdoIGJ1aWxkU3RhcnQoKSBmb3IgUGhhc2UgMiBhbmQgMyB0byB1c2UuXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnBoYXNlMSwgbmV3IFBoYXNlMU1ldGEoKSwgeyB1c2VyUmVzb2x2ZUFsaWFzIH0pO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5waGFzZTIsIG5ldyBQaGFzZTJNZXRhKCkpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5waGFzZTMsIG5ldyBQaGFzZTNNZXRhKCkpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5wbHVnaW5zLCB7XG4gICAgICBibG9nT3B0aW9uczogbnVsbCxcbiAgICAgIG5hdlNlY3Rpb25zOiBbXSxcbiAgICAgIGhlYWRlck5hdjogW10sXG4gICAgICBzaXRlbWFwT3B0aW9uczogbnVsbCxcbiAgICAgIGkxOG5PcHRpb25zOiBudWxsLFxuICAgIH0pO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUJDLEdBZUQsU0FBUyxZQUFZLFFBQVEsMkJBQTJCO0FBRXhELE1BQU0sTUFBTSxhQUFhO0FBU3pCLE9BQU8sTUFBTTtFQUNYLGtFQUFrRSxHQUNsRSxnQkFBd0IsR0FBRztFQUUzQixtRUFBbUUsR0FDbkUsZUFBNkIsRUFBRSxDQUFDO0VBRWhDLHNFQUFzRSxHQUN0RSxpQkFBMkIsRUFBRSxDQUFDO0VBRTlCLDBDQUEwQyxHQUMxQyxjQUF3QixFQUFFLENBQUM7RUFFM0IsK0NBQStDLEdBQy9DLGFBQWtELENBQUMsRUFBRTtFQUVyRCx1REFBdUQsR0FDdkQsbUJBQWlELEVBQUUsQ0FBQztFQUVwRCx5REFBeUQsR0FDekQscUJBQW1DLEVBQUUsQ0FBQztFQUV0Qyw2REFB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
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9hZGFwdGVyLXZpdGUvc3JjL2J1aWxkLWNvbnRleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAb3BlbmVsZW1lbnQvYWRhcHRlci12aXRlIC0gb3BlbkVsZW1lbnQgQnVpbGQgQ29udGV4dFxuICpcbiAqIFNoYXJlZCBtdXRhYmxlIHN0YXRlIGZvciBhbGwgb3BlbkVsZW1lbnQgVml0ZSBwbHVnaW5zLlxuICogUmVwbGFjZXMgdGhlIGNsb3N1cmUtY2FwdHVyZWQgdmFyaWFibGVzIChob25vRW50cnlDb2RlLCBzY2FubmVkSXNsYW5kVGFnTmFtZXMsIGV0Yy4pXG4gKiB3aXRoIGEgc2luZ2xlIG9iamVjdCB0aGF0J3MgZXhwbGljaXRseSBwYXNzZWQgYXJvdW5kLlxuICpcbiAqIEFsc28gcmVwbGFjZXMgdGhlIC5vcGVuRWxlbWVudC8gdGVtcCBkaXJlY3RvcnkgYXMgSVBDIGJldHdlZW4gYnVpbGQgcGhhc2VzOlxuICogLSBQaGFzZSAxIChvcGVuOmJ1aWxkKSB3cml0ZXMgbWV0YWRhdGEgLT4gY3R4IGZpZWxkc1xuICogLSBQaGFzZSAyIChidWlsZC1jbGllbnQpIHJlYWRzIG1ldGFkYXRhIC0+IGN0eCBmaWVsZHNcbiAqIC0gUGhhc2UgMyAoYnVpbGQtc3NnKSByZWFkcyBtZXRhZGF0YSAtPiBjdHggZmllbGRzXG4gKiAtIFN1Yi1wbHVnaW5zIChvcGVuQ29udGVudCwgb3BlbkkxOG4pIHdyaXRlIHRoZWlyIGRhdGEgLT4gY3R4IGZpZWxkc1xuICpcbiAqIGN0eCBpcyBwYXNzZWQgdmlhIGV4cGxpY2l0IHBhcmFtZXRlciAtIG5vIGdsb2JhbFRoaXMgb3IgbW9kdWxlLWxldmVsIGRpc2NvdmVyeS5cbiAqIHVzZSBvcGVuRWxlbWVudCgpIGZyb20gQG9wZW5lbGVtZW50L2FkYXB0ZXItdml0ZSBmb3IgdGhlIHJlY29tbWVuZGVkIHVuaWZpZWQgZW50cnkuXG4gKlxuICogRmllbGRzIGFyZSBncm91cGVkIGJ5IFBoYXNlIHRvIGltcHJvdmUgdHlwZSBzYWZldHkgYW5kIG1haW50YWluYWJpbGl0eS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFsaWFzLCBSZXNvbHZlZENvbmZpZyB9IGZyb20gJ3ZpdGUnO1xuaW1wb3J0IHR5cGUge1xuICBDb21wYXRpYmlsaXR5Q2xhc3NpZmljYXRpb24sXG4gIEZyYW1ld29ya09wdGlvbnMsXG4gIEh5ZHJhdGlvblN0cmF0ZWd5LFxuICBPcGVuRWxlbWVudEJsb2dPcHRpb25zLFxuICBPcGVuRWxlbWVudEhlYWRlck5hdkxpbmssXG4gIE9wZW5FbGVtZW50STE4bkNvbnRleHRPcHRpb25zLFxuICBPcGVuRWxlbWVudE5hdlNlY3Rpb24sXG4gIFJvdXRlRW50cnksXG59IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9mcmFtZXdvcmsnO1xuaW1wb3J0IHR5cGUgeyBPcGVuRWxlbWVudFBhY2thZ2VNYW5pZmVzdCB9IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9tYW5pZmVzdCc7XG5pbXBvcnQgdHlwZSB7IElzbGFuZERlY2wsIFNzckFkbWlzc2lvblBsYW4gfSBmcm9tICdAb3BlbmVsZW1lbnQvcHJvdG9jb2wvc3NnJztcblxuZXhwb3J0IHR5cGUgUGhhc2UgPSAxIHwgMiB8IDM7XG5cbmV4cG9ydCBjbGFzcyBQaGFzZTFNZXRhIHtcbiAgLyoqIFRoZSBnZW5lcmF0ZWQgSG9ubyBlbnRyeSBtb2R1bGUgY29kZSAodmlydHVhbCBtb2R1bGUgY29udGVudCkgKi9cbiAgaG9ub0VudHJ5Q29kZTogc3RyaW5nID0gJyc7XG5cbiAgLyoqIENhY2hlZCByb3V0ZXMgZnJvbSBidWlsZFN0YXJ0KCkgZm9yIHZpcnR1YWwgZW50cnkgcmVnZW5lcmF0aW9uICovXG4gIGNhY2hlZFJvdXRlczogUm91dGVFbnRyeVtdID0gW107XG5cbiAgLyoqIElzbGFuZCB0YWcgbmFtZXMgZGlzY292ZXJlZCBkdXJpbmcgcm91dGUgc2Nhbm5pbmcgKGxvY2FsIGlzbGFuZHMpICovXG4gIGlzbGFuZFRhZ05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBSZWxhdGl2ZSBmaWxlIHBhdGhzIGZvciBsb2NhbCBpc2xhbmRzICovXG4gIGlzbGFuZEZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBMb2NhbCBpc2xhbmQgbWV0YWRhdGEgaW5kZXhlZCBieSB0YWcgbmFtZS4gKi9cbiAgaXNsYW5kTWV0YTogUmVjb3JkPHN0cmluZywgUGFydGlhbDxJc2xhbmREZWNsPj4gPSB7fTtcblxuICAvKiogUGFja2FnZSBtYW5pZmVzdHMgZGlzY292ZXJlZCBmcm9tIG5wbS9KU1IgcGFja2FnZXMgKi9cbiAgcGFja2FnZU1hbmlmZXN0czogT3BlbkVsZW1lbnRQYWNrYWdlTWFuaWZlc3RbXSA9IFtdO1xuXG4gIC8qKiBQYWNrYWdlIGlzbGFuZCBkZWNsYXJhdGlvbnMgZXh0cmFjdGVkIGZyb20gbWFuaWZlc3RzICovXG4gIHBhY2thZ2VJc2xhbmREZWNsczogSXNsYW5kRGVjbFtdID0gW107XG5cbiAgLyoqIFNTUiBhZG1pc3Npb24gcGxhbiBwcm9kdWNlZCBiZWZvcmUgU1NSIGVudHJ5IGdlbmVyYXRpb24uICovXG4gIHNzckFkbWlzc2lvblBsYW46IFNzckFkbWlzc2lvblBsYW4gfCBudWxsID0gbnVsbDtcblxuICAvKiogdjAuMTguMDogQ0VNLWRlcml2ZWQgY29tcGF0aWJpbGl0eSBjbGFzc2lmaWNhdGlvbnMgZnJvbSB0aGUgY2xhc3NpZmllci4gKi9cbiAgY2VtQ2xhc3NpZmljYXRpb25zOiBDb21wYXRpYmlsaXR5Q2xhc3NpZmljYXRpb25bXSA9IFtdO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBTU1IrY2xpZW50IGJ1aWxkIGhhcyBjb21wbGV0ZWQgKi9cbiAgYnVpbGRDb21wbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogVml0ZSByZXNvbHZlZCBjb25maWcgKHNldCBpbiBjb25maWdSZXNvbHZlZCBob29rKSAqL1xuICByZXNvbHZlZENvbmZpZzogUmVzb2x2ZWRDb25maWcgfCBudWxsID0gbnVsbDtcblxuICAvKiogVXNlci1wcm92aWRlZCByZXNvbHZlLmFsaWFzIGluIGl0cyBvcmlnaW5hbCBmb3JtYXQgKi9cbiAgdXNlclJlc29sdmVBbGlhczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IEFsaWFzW10gfCBudWxsID0gbnVsbDtcbn1cblxuZXhwb3J0IGNsYXNzIFBoYXNlMk1ldGEge1xuICAvKiogR2VuZXJhdGVkIGNsaWVudCBpc2xhbmQgZW50cnkgY29kZSAqL1xuICBjbGllbnRFbnRyeUNvZGU6IHN0cmluZyA9ICcnO1xufVxuXG5leHBvcnQgY2xhc3MgUGhhc2UzTWV0YSB7XG4gIC8qKiBHZW5lcmF0ZWQgU1NHIGVudHJ5IGNvZGUgKGZvciB2aXRlQnVpbGQgU1NSIGlucHV0KSAqL1xuICBzc2dFbnRyeUNvZGU6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBQcm9qZWN0IHJvb3QgZGlyZWN0b3J5ICovXG4gIHJvb3Q6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBPdXRwdXQgZGlyZWN0b3J5IChkZWZhdWx0OiAnZGlzdCcpICovXG4gIG91dERpcjogc3RyaW5nID0gJ2Rpc3QnO1xuXG4gIC8qKiBCYXNlIFVSTCBwYXRoIChkZWZhdWx0OiAnLycpICovXG4gIGJhc2U6IHN0cmluZyA9ICcvJztcblxuICAvKiogTWlkZGxld2FyZSBjb25maWcgZnJvbSBjcmVhdGVPcGVuUGx1Z2luKCkgb3B0aW9ucyAqL1xuICBtaWRkbGV3YXJlOiBGcmFtZXdvcmtPcHRpb25zWydtaWRkbGV3YXJlJ10gfCBudWxsID0gbnVsbDtcblxuICAvKiogSFRNTCBkb2N1bWVudCBvcHRpb25zIGZyb20gY3JlYXRlT3BlblBsdWdpbigpIG9wdGlvbnMgKi9cbiAgaHRtbDogeyBsYW5nPzogc3RyaW5nOyB0aXRsZT86IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIElzbGFuZCBoeWRyYXRpb24gc3RyYXRlZ3kgKGRlZmF1bHQ6ICdpZGxlJykgKi9cbiAgdXBncmFkZVN0cmF0ZWd5OiBIeWRyYXRpb25TdHJhdGVneSA9ICdpZGxlJztcblxuICAvKiogVmlldyBUcmFuc2l0aW9ucyBlbmFibGVkIChkZWZhdWx0OiB0cnVlKSAqL1xuICB2aWV3VHJhbnNpdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqIFNwZWN1bGF0aW9uIFJ1bGVzIGNvbmZpZyBmcm9tIGNyZWF0ZU9wZW5QbHVnaW4oKSBvcHRpb25zICovXG4gIHNwZWN1bGF0aW9uOiBGcmFtZXdvcmtPcHRpb25zWydzcGVjdWxhdGlvbiddIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIEV4dHJhIEhUTUwgdG8gaW5qZWN0IGludG8gPGhlYWQ+ICovXG4gIGhlYWRFeHRyYXM6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBXaGV0aGVyIGhlYWRFeHRyYXMgc2NyaXB0cyB3ZXJlIHByb2R1Y2VkIGJ5IHN0cnVjdHVyZWQgaW5qZWN0aW9uIEFQSXMuICovXG4gIGFsbG93SGVhZEV4dHJhc1NjcmlwdHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogQXBwbGljYXRpb24gc2hlbGwgcmVuZGVyZWQgYXJvdW5kIHJvdXRlcy4gKi9cbiAgYXBwU2hlbGw6IEZyYW1ld29ya09wdGlvbnNbJ2FwcFNoZWxsJ10gPSB1bmRlZmluZWQ7XG5cbiAgLyoqIE5hbWVkIHJvdXRlIGxheW91dHMgc2VsZWN0ZWQgYnkgcm91dGUgbWV0YS4gKi9cbiAgbGF5b3V0czogRnJhbWV3b3JrT3B0aW9uc1snbGF5b3V0cyddID0gdW5kZWZpbmVkO1xuXG4gIC8qKiBTU1Igbm9FeHRlcm5hbCBwYXR0ZXJucyAoc2VyaWFsaXplZCkgKi9cbiAgc3NyTm9FeHRlcm5hbDogKHN0cmluZyB8IHsgX190eXBlOiAnUmVnRXhwJzsgc291cmNlOiBzdHJpbmc7IGZsYWdzOiBzdHJpbmcgfSlbXSA9IFtdO1xuXG4gIC8qKiBTU1IgZGVwcyB0byBrZWVwIGFzIGV4dGVybmFsIChyZXNvbHZlZCBieSBEZW5vIGltcG9ydCgpIGF0IHJ1bnRpbWUgcGVyIEFEUi0wMDQzKSAqL1xuICBzc3JFeHRlcm5hbDogc3RyaW5nW10gPSBbXTtcblxuICAvKiogUm91dGVzIGRpcmVjdG9yeSAqL1xuICByb3V0ZXNEaXI6IHN0cmluZyA9ICdhcHAvcm91dGVzJztcblxuICAvKiogSXNsYW5kcyBkaXJlY3RvcnkgKi9cbiAgaXNsYW5kc0Rpcjogc3RyaW5nID0gJ2FwcC9pc2xhbmRzJztcblxuICAvKiogQ29tcG9uZW50cyBkaXJlY3RvcnkgKi9cbiAgY29tcG9uZW50c0Rpcjogc3RyaW5nID0gJ2FwcC9jb21wb25lbnRzJztcblxuICAvKiogQURSLTAwNDc6IFByZS1yZXNvbHZlZCBleHRlcm5hbCBkZXBlbmRlbmN5IG1hbmlmZXN0IChhdXRvLWdlbmVyYXRlZCBmcm9tIGRlbm8gaW5mbykuICovXG4gIGV4dGVybmFsTWFuaWZlc3Q/OiBpbXBvcnQoJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9zc2cnKS5FeHRlcm5hbE1hbmlmZXN0O1xuXG4gIC8qKiBTa2lwIERlbm8gcHJlLXJlc29sdXRpb24sIHVzZSByZWdleCBmYWxsYmFjay4gKi9cbiAgc2tpcFByZVJlc29sdXRpb24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgT3BlbkVsZW1lbnRCdWlsZENvbnRleHQge1xuICAvKiogUGhhc2UgMTogUm91dGUgc2Nhbm5pbmcgJiBidWlsZCBtZXRhZGF0YSAqL1xuICByZWFkb25seSBwaGFzZTE6IFBoYXNlMU1ldGEgPSBuZXcgUGhhc2UxTWV0YSgpO1xuXG4gIC8qKiBQaGFzZSAyOiBDbGllbnQgaXNsYW5kIGJ1aWxkIHN0YXRlICovXG4gIHJlYWRvbmx5IHBoYXNlMjogUGhhc2UyTWV0YSA9IG5ldyBQaGFzZTJNZXRhKCk7XG5cbiAgLyoqIFBoYXNlIDM6IFNTRyByZW5kZXJpbmcgc3RhdGUgKi9cbiAgcmVhZG9ubHkgcGhhc2UzOiBQaGFzZTNNZXRhID0gbmV3IFBoYXNlM01ldGEoKTtcblxuICAvKiogUGx1Z2luIGRhdGEgZnJvbSBjb250ZW50L2kxOG4gc3ViLXBsdWdpbnMgKi9cbiAgcmVhZG9ubHkgcGx1Z2luczoge1xuICAgIGJsb2dPcHRpb25zOiBPcGVuRWxlbWVudEJsb2dPcHRpb25zIHwgbnVsbDtcbiAgICBuYXZTZWN0aW9uczogT3BlbkVsZW1lbnROYXZTZWN0aW9uW107XG4gICAgaGVhZGVyTmF2OiBPcGVuRWxlbWVudEhlYWRlck5hdkxpbmtbXTtcbiAgICBzaXRlbWFwT3B0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgIGkxOG5PcHRpb25zOiBPcGVuRWxlbWVudEkxOG5Db250ZXh0T3B0aW9ucyB8IG51bGw7XG4gICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgfSA9IHtcbiAgICBibG9nT3B0aW9uczogbnVsbCxcbiAgICBuYXZTZWN0aW9uczogW10sXG4gICAgaGVhZGVyTmF2OiBbXSxcbiAgICBzaXRlbWFwT3B0aW9uczogbnVsbCxcbiAgICBpMThuT3B0aW9uczogbnVsbCxcbiAgfTtcblxuICAvKiogUmVzb2x2ZWQgZnJhbWV3b3JrIG9wdGlvbnMgd2l0aCBkZWZhdWx0cyBhcHBsaWVkIChyZWFkLW9ubHkgYWZ0ZXIgY29uc3RydWN0aW9uKSAqL1xuICByZWFkb25seSBvcHRpb25zOiBGcmFtZXdvcmtPcHRpb25zO1xuXG4gIC8qKiBUcmFja3Mgd2hpY2ggYnVpbGQgcGhhc2VzIGhhdmUgY29tcGxldGVkLiAqL1xuICBwcml2YXRlIGNvbXBsZXRlZCA9IG5ldyBTZXQ8UGhhc2U+KCk7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogRnJhbWV3b3JrT3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICAvKiogTWFyayBhIHBoYXNlIGFzIGNvbXBsZXRlLCBlbmZvcmNpbmcgb3JkZXJpbmcgY29uc3RyYWludHMuICovXG4gIG1hcmtDb21wbGV0ZShwaGFzZTogUGhhc2UpOiB2b2lkIHtcbiAgICBpZiAocGhhc2UgPT09IDIgJiYgIXRoaXMuY29tcGxldGVkLmhhcygzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQaGFzZSAyIHJlcXVpcmVzIFBoYXNlIDMgdG8gYmUgY29tcGxldGVkIGZpcnN0Jyk7XG4gICAgfVxuICAgIGlmIChwaGFzZSA9PT0gMiAmJiAhdGhpcy5jb21wbGV0ZWQuaGFzKDEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BoYXNlIDIgcmVxdWlyZXMgUGhhc2UgMSB0byBiZSBjb21wbGV0ZWQgZmlyc3QnKTtcbiAgICB9XG4gICAgaWYgKHBoYXNlID09PSAzICYmICF0aGlzLmNvbXBsZXRlZC5oYXMoMSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUGhhc2UgMyByZXF1aXJlcyBQaGFzZSAxIHRvIGJlIGNvbXBsZXRlZCBmaXJzdCcpO1xuICAgIH1cbiAgICB0aGlzLmNvbXBsZXRlZC5hZGQocGhhc2UpO1xuICB9XG5cbiAgLyoqIENoZWNrIHdoZXRoZXIgYSBwaGFzZSBoYXMgYmVlbiBjb21wbGV0ZWQuICovXG4gIGlzQ29tcGxldGUocGhhc2U6IFBoYXNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGxldGVkLmhhcyhwaGFzZSk7XG4gIH1cblxuICAvKiogUG9wdWxhdGUgUGhhc2UgMyBpbnZhcmlhbnRzIGZyb20gcmVzb2x2ZWQgVml0ZSBjb25maWcgYW5kIGZyYW1ld29yayBvcHRpb25zLiAqL1xuICBwb3B1bGF0ZVBoYXNlMyhcbiAgICBvcHRpb25zOiBGcmFtZXdvcmtPcHRpb25zICYgeyBhbGxvd0hlYWRFeHRyYXNTY3JpcHRzPzogYm9vbGVhbiB9LFxuICAgIGNvbmZpZzogUmVzb2x2ZWRDb25maWcsXG4gICAgc3NyTm9FeHRlcm5hbDogKHN0cmluZyB8IHsgX190eXBlOiAnUmVnRXhwJzsgc291cmNlOiBzdHJpbmc7IGZsYWdzOiBzdHJpbmcgfSlbXSxcbiAgKTogdm9pZCB7XG4gICAgbGV0IGJhc2UgPSBjb25maWcuYmFzZSB8fCAnLyc7XG4gICAgaWYgKCFiYXNlLmVuZHNXaXRoKCcvJykpIGJhc2UgKz0gJy8nO1xuXG4gICAgdGhpcy5waGFzZTMucm9vdCA9IGNvbmZpZy5yb290O1xuICAgIHRoaXMucGhhc2UzLm91dERpciA9IG9wdGlvbnMuYnVpbGQ/Lm91dERpciB8fCAnZGlzdCc7XG4gICAgdGhpcy5waGFzZTMuYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5waGFzZTMuc3NyTm9FeHRlcm5hbCA9IHNzck5vRXh0ZXJuYWw7XG4gICAgdGhpcy5waGFzZTMucm91dGVzRGlyID0gb3B0aW9ucy5yb3V0ZXNEaXIgfHwgJ2FwcC9yb3V0ZXMnO1xuICAgIHRoaXMucGhhc2UzLmlzbGFuZHNEaXIgPSBvcHRpb25zLmlzbGFuZHNEaXIgfHwgJ2FwcC9pc2xhbmRzJztcbiAgICB0aGlzLnBoYXNlMy5jb21wb25lbnRzRGlyID0gb3B0aW9ucy5jb21wb25lbnRzRGlyIHx8ICdhcHAvY29tcG9uZW50cyc7XG4gICAgdGhpcy5waGFzZTMubWlkZGxld2FyZSA9IG9wdGlvbnMubWlkZGxld2FyZSB8fCBudWxsO1xuICAgIHRoaXMucGhhc2UzLmh0bWwgPSBvcHRpb25zLmh0bWwgfHwgbnVsbDtcbiAgICB0aGlzLnBoYXNlMy51cGdyYWRlU3RyYXRlZ3kgPSBvcHRpb25zLmlzbGFuZD8udXBncmFkZVN0cmF0ZWd5IHx8ICdpZGxlJztcbiAgICB0aGlzLnBoYXNlMy52aWV3VHJhbnNpdGlvbiA9IG9wdGlvbnMudmlld1RyYW5zaXRpb24gPz8gdHJ1ZTtcbiAgICB0aGlzLnBoYXNlMy5zcGVjdWxhdGlvbiA9IG9wdGlvbnMuc3BlY3VsYXRpb24gPz8gbnVsbDtcbiAgICB0aGlzLnBoYXNlMy5oZWFkRXh0cmFzID0gb3B0aW9ucy5oZWFkRXh0cmFzIHx8ICcnO1xuICAgIHRoaXMucGhhc2UzLmFsbG93SGVhZEV4dHJhc1NjcmlwdHMgPSBvcHRpb25zLmFsbG93SGVhZEV4dHJhc1NjcmlwdHMgfHwgZmFsc2U7XG4gICAgdGhpcy5waGFzZTMuYXBwU2hlbGwgPSBvcHRpb25zLmFwcFNoZWxsO1xuICAgIHRoaXMucGhhc2UzLmxheW91dHMgPSBvcHRpb25zLmxheW91dHM7XG4gIH1cblxuICAvKiogUmV0dXJuIGEgcmVhZC1vbmx5IHZpZXcgb2YgUGhhc2UgMyBtZXRhZGF0YS4gKi9cbiAgZ2V0UGhhc2UzTWV0YSgpOiBSZWFkb25seTxQaGFzZTNNZXRhPiB7XG4gICAgcmV0dXJuIHRoaXMucGhhc2UzO1xuICB9XG5cbiAgLyoqIFJlc2V0IGFsbCBtdXRhYmxlIHN0YXRlIChmb3Igd2F0Y2ggbW9kZSAvIHRlc3RpbmcpICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY29tcGxldGVkLmNsZWFyKCk7XG5cbiAgICBjb25zdCB1c2VyUmVzb2x2ZUFsaWFzID0gdGhpcy5waGFzZTEudXNlclJlc29sdmVBbGlhcztcbiAgICAvLyBOT1RFOiB1c2VyUmVzb2x2ZUFsaWFzIGlzIE5PVCByZXNldCAtIGl0J3MgdXNlciBjb25maWd1cmF0aW9uLCBub3RcbiAgICAvLyBidWlsZCBzdGF0ZS4gSXQncyBzZXQgaW4gY29uZmlnKCkvY29uZmlnUmVzb2x2ZWQoKSBhbmQgbXVzdCBwZXJzaXN0XG4gICAgLy8gdGhyb3VnaCBidWlsZFN0YXJ0KCkgZm9yIFBoYXNlIDIgYW5kIDMgdG8gdXNlLlxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5waGFzZTEsIG5ldyBQaGFzZTFNZXRhKCksIHsgdXNlclJlc29sdmVBbGlhcyB9KTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMucGhhc2UyLCBuZXcgUGhhc2UyTWV0YSgpKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMucGhhc2UzLCBuZXcgUGhhc2UzTWV0YSgpKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMucGx1Z2lucywge1xuICAgICAgYmxvZ09wdGlvbnM6IG51bGwsXG4gICAgICBuYXZTZWN0aW9uczogW10sXG4gICAgICBoZWFkZXJOYXY6IFtdLFxuICAgICAgc2l0ZW1hcE9wdGlvbnM6IG51bGwsXG4gICAgICBpMThuT3B0aW9uczogbnVsbCxc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
|
package/src/build.js
CHANGED
|
@@ -44,22 +44,34 @@ const log = createLogger('core');
|
|
|
44
44
|
// SSG only needs Phase 1 - it renders HTML from the SSR bundle.
|
|
45
45
|
// Phase 2 runs last because client chunks have content hashes that
|
|
46
46
|
// don't affect HTML content, and injection is a post-processing step.
|
|
47
|
-
ctx.
|
|
48
|
-
|
|
47
|
+
ctx.markComplete(1);
|
|
48
|
+
log.info('[3/3] Static site generation...');
|
|
49
|
+
try {
|
|
49
50
|
const { buildSSG } = await import('./cli/build-ssg.js');
|
|
50
51
|
await buildSSG({}, ctx);
|
|
51
|
-
|
|
52
|
+
ctx.markComplete(3);
|
|
53
|
+
log.info('[3/3] Static site generation - complete');
|
|
54
|
+
} catch (error) {
|
|
55
|
+
log.error(`[3/3] Static site generation - FAILED: ${error}`);
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
52
58
|
// Phase 2: Client island bundle (only if islands exist)
|
|
53
59
|
if (totalIslands > 0) {
|
|
54
|
-
|
|
60
|
+
log.info('[2/3] Client island build...');
|
|
61
|
+
try {
|
|
55
62
|
const { buildClient } = await import('./cli/build-client.js');
|
|
56
63
|
await buildClient(ctx);
|
|
57
|
-
|
|
64
|
+
ctx.markComplete(2);
|
|
65
|
+
log.info('[2/3] Client island build - complete');
|
|
66
|
+
} catch (error) {
|
|
67
|
+
log.error(`[2/3] Client island build - FAILED: ${error}`);
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
58
70
|
}
|
|
59
71
|
// -- Inject client script (only runs if Phase 2 completed) --
|
|
60
72
|
// Phase 2's manifest.json tells us the client chunk URLs to inject
|
|
61
73
|
// into the already-rendered HTML pages.
|
|
62
|
-
if (ctx.
|
|
74
|
+
if (ctx.isComplete(2)) {
|
|
63
75
|
try {
|
|
64
76
|
const outDir = ctx.phase3.outDir || 'dist';
|
|
65
77
|
const root = ctx.phase3.root || process.cwd();
|
|
@@ -94,4 +106,4 @@ const log = createLogger('core');
|
|
|
94
106
|
}
|
|
95
107
|
};
|
|
96
108
|
}
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9hZGFwdGVyLXZpdGUvc3JjL2J1aWxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG9wZW5lbGVtZW50L2FkYXB0ZXItdml0ZSAtIEJ1aWxkIHBsdWdpblxuICogb3BlbkVsZW1lbnQgQXJjaGl0ZWN0dXJlIChLwrdJwrdTwrdTKTogS25vd2xlZGdlIMK3IElzb2xhdGVkIMK3IFNlbWFudGljIMK3IFN0YXRpY1xuICogQnVpbGQgcHJvZHVjZXMgb25seSBzdGF0aWMgZmlsZXMgKEsrUyksIElzbGFuZHMgYXJlIHRoZSBvbmx5IEpTIChJKS5cbiAqIEFQSSBSb3V0ZXMgKFMgLSBTZXJ2ZXJsZXNzIGV4dGVuc2lvbikgZGVwbG95IHNlcGFyYXRlbHkuXG4gKlxuICogQURSIDAwMTE6IGNsb3NlQnVuZGxlIHdyaXRlcyBtZXRhZGF0YSB0byBjdHgsIHRoZW4gdHJpZ2dlcnMgUGhhc2UgMi8zLlxuICogTm8gZ2xvYmFsVGhpcyBicmlkZ2UgLSBjdHggc3RheXMgaW4gY3JlYXRlT3BlblBsdWdpbigpIGNsb3N1cmUgc2NvcGUgdGhyb3VnaG91dC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiwgUmVzb2x2ZWRDb25maWcgfSBmcm9tICd2aXRlJztcbmltcG9ydCB0eXBlIHsgRnJhbWV3b3JrT3B0aW9ucyB9IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9mcmFtZXdvcmsnO1xuaW1wb3J0IHR5cGUgeyBPcGVuRWxlbWVudEJ1aWxkQ29udGV4dCB9IGZyb20gJy4vYnVpbGQtY29udGV4dC5qcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICdAb3BlbmVsZW1lbnQvY29yZS9sb2dnZXInO1xuaW1wb3J0IHsgY2xlYW5Tc3JBcnRpZmFjdHMsIHBvc3RQcm9jZXNzQ2xpZW50SXNsYW5kQnVpbGQgfSBmcm9tICdAb3BlbmVsZW1lbnQvc3NnJztcblxuY29uc3QgbG9nID0gY3JlYXRlTG9nZ2VyKCdjb3JlJyk7XG5cbi8qKiBWaXRlIHBsdWdpbjogd3JpdGVzIGJ1aWxkIG1ldGFkYXRhIHRvIGN0eCwgdGhlbiBydW5zIFBoYXNlIDIgKyBQaGFzZSAzICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQbHVnaW4oXG4gIG9wdGlvbnM6IEZyYW1ld29ya09wdGlvbnMgJiB7IGFsbG93SGVhZEV4dHJhc1NjcmlwdHM/OiBib29sZWFuIH0gPSB7fSxcbiAgY3R4PzogT3BlbkVsZW1lbnRCdWlsZENvbnRleHQsXG4pOiBQbHVnaW4ge1xuICBsZXQgY29uZmlnOiBSZXNvbHZlZENvbmZpZztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdvcGVuOmJ1aWxkJyxcblxuICAgIGNvbmZpZ1Jlc29sdmVkKHJlc29sdmVkQ29uZmlnKSB7XG4gICAgICBjb25maWcgPSByZXNvbHZlZENvbmZpZztcbiAgICB9LFxuXG4gICAgYXN5bmMgY2xvc2VCdW5kbGUoKSB7XG4gICAgICAvLyBPbmx5IHJ1biBpbiBidWlsZCBtb2RlIChub3QgZGV2KVxuICAgICAgaWYgKGNvbmZpZy5jb21tYW5kICE9PSAnYnVpbGQnKSByZXR1cm47XG5cbiAgICAgIGlmICghY3R4KSB7XG4gICAgICAgIGxvZy53YXJuKCdvcGVuOmJ1aWxkIHNraXBwZWQgUGhhc2UgMi8zIGJlY2F1c2Ugbm8gT3BlbkVsZW1lbnRCdWlsZENvbnRleHQgd2FzIHByb3ZpZGVkLicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFNlcmlhbGl6ZSBTU1Igbm9FeHRlcm5hbCBwYXR0ZXJucyAoUmVnRXhwIC0+IG1hcmtlciBvYmplY3RzKVxuICAgICAgY29uc3Qgc3NyTm9FeHRlcm5hbCA9ICgob3B0aW9ucy5zc3I/Lm5vRXh0ZXJuYWwgfHxcbiAgICAgICAgKGNvbmZpZy5zc3IgYXMgeyBub0V4dGVybmFsPzogKHN0cmluZyB8IFJlZ0V4cClbXSB9IHwgdW5kZWZpbmVkKT8ubm9FeHRlcm5hbCkgfHwgW10pXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgX190eXBlOiAnUmVnRXhwJywgc291cmNlOiBpdGVtLnNvdXJjZSwgZmxhZ3M6IGl0ZW0uZmxhZ3MgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH0pO1xuXG4gICAgICAvLyAtLS0gV3JpdGUgdG8gT3BlbkVsZW1lbnRCdWlsZENvbnRleHQgLS0tLS0tLS0tLVxuICAgICAgY3R4LnBvcHVsYXRlUGhhc2UzKFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHNzck5vRXh0ZXJuYWwgYXMgKHN0cmluZyB8IHsgX190eXBlOiAnUmVnRXhwJzsgc291cmNlOiBzdHJpbmc7IGZsYWdzOiBzdHJpbmcgfSlbXSxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHRvdGFsSXNsYW5kcyA9IChjdHgucGhhc2UxLmlzbGFuZFRhZ05hbWVzPy5sZW5ndGggfHwgMCkgK1xuICAgICAgICAoY3R4LnBoYXNlMS5wYWNrYWdlSXNsYW5kRGVjbHM/Lmxlbmd0aCB8fCAwKTtcblxuICAgICAgbG9nLmluZm8oJ1BoYXNlIDEvMyBjb21wbGV0ZSAtIFNTUiBidW5kbGUgKyBtZXRhZGF0YSB3cml0dGVuIHRvIGN0eCcpO1xuXG4gICAgICAvLyBBRFIgMDAyMzogUGhhc2UgMyAoU1NHKSBydW5zIGJlZm9yZSBQaGFzZSAyIChjbGllbnQgYnVuZGxlKS5cbiAgICAgIC8vIFNTRyBvbmx5IG5lZWRzIFBoYXNlIDEgLSBpdCByZW5kZXJzIEhUTUwgZnJvbSB0aGUgU1NSIGJ1bmRsZS5cbiAgICAgIC8vIFBoYXNlIDIgcnVucyBsYXN0IGJlY2F1c2UgY2xpZW50IGNodW5rcyBoYXZlIGNvbnRlbnQgaGFzaGVzIHRoYXRcbiAgICAgIC8vIGRvbid0IGFmZmVjdCBIVE1MIGNvbnRlbnQsIGFuZCBpbmplY3Rpb24gaXMgYSBwb3N0LXByb2Nlc3Npbmcgc3RlcC5cbiAgICAgIGN0eC5jb21wbGV0ZVBoYXNlMSgpO1xuXG4gICAgICBhd2FpdCBjdHgucnVuUGhhc2UzKGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgeyBidWlsZFNTRyB9ID0gYXdhaXQgaW1wb3J0KCcuL2NsaS9idWlsZC1zc2cuanMnKTtcbiAgICAgICAgYXdhaXQgYnVpbGRTU0coe30sIGN0eCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gUGhhc2UgMjogQ2xpZW50IGlzbGFuZCBidW5kbGUgKG9ubHkgaWYgaXNsYW5kcyBleGlzdClcbiAgICAgIGlmICh0b3RhbElzbGFuZHMgPiAwKSB7XG4gICAgICAgIGF3YWl0IGN0eC5ydW5QaGFzZTIoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgYnVpbGRDbGllbnQgfSA9IGF3YWl0IGltcG9ydCgnLi9jbGkvYnVpbGQtY2xpZW50LmpzJyk7XG4gICAgICAgICAgYXdhaXQgYnVpbGRDbGllbnQoY3R4KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIC0tIEluamVjdCBjbGllbnQgc2NyaXB0IChvbmx5IHJ1bnMgaWYgUGhhc2UgMiBjb21wbGV0ZWQpIC0tXG4gICAgICAvLyBQaGFzZSAyJ3MgbWFuaWZlc3QuanNvbiB0ZWxscyB1cyB0aGUgY2xpZW50IGNodW5rIFVSTHMgdG8gaW5qZWN0XG4gICAgICAvLyBpbnRvIHRoZSBhbHJlYWR5LXJlbmRlcmVkIEhUTUwgcGFnZXMuXG4gICAgICBpZiAoY3R4LmlzUGhhc2VDb21wbGV0ZSgyKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG91dERpciA9IGN0eC5waGFzZTMub3V0RGlyIHx8ICdkaXN0JztcbiAgICAgICAgICBjb25zdCByb290ID0gY3R4LnBoYXNlMy5yb290IHx8IHByb2Nlc3MuY3dkKCk7XG4gICAgICAgICAgY29uc3QgY2xpZW50TWFuaWZlc3RQYXRoID0gam9pbihyb290LCBvdXREaXIsICdjbGllbnQnLCAnLnZpdGUnLCAnbWFuaWZlc3QuanNvbicpO1xuICAgICAgICAgIGNvbnN0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jIH0gPSBhd2FpdCBpbXBvcnQoJ25vZGU6ZnMnKTtcbiAgICAgICAgICBpZiAoZXhpc3RzU3luYyhjbGllbnRNYW5pZmVzdFBhdGgpKSB7XG4gICAgICAgICAgICBjb25zdCBtYW5pZmVzdFJhdyA9IHJlYWRGaWxlU3luYyhjbGllbnRNYW5pZmVzdFBhdGgsICd1dGYtOCcpO1xuICAgICAgICAgICAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKG1hbmlmZXN0UmF3KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3NyYywgZW50cnldIG9mIE9iamVjdC5lbnRyaWVzKG1hbmlmZXN0KSBhcyBbc3RyaW5nLCB7IGZpbGU/OiBzdHJpbmcgfV1bXSkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKHNyYy5pbmNsdWRlcygnb3Blbi1jbGllbnQtZW50cnknKSB8fCBzcmMuaW5jbHVkZXMoJ3ZpcnR1YWw6b3Blbi1jbGllbnQnKSkgJiZcbiAgICAgICAgICAgICAgICBlbnRyeS5maWxlXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPSBjdHgucGhhc2UzLmJhc2UgfHwgJy8nO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjcmlwdFNyYyA9IGAke2Jhc2V9Y2xpZW50LyR7ZW50cnkuZmlsZX1gO1xuICAgICAgICAgICAgICAgIGF3YWl0IHBvc3RQcm9jZXNzQ2xpZW50SXNsYW5kQnVpbGQoY3R4LCBzY3JpcHRTcmMpO1xuICAgICAgICAgICAgICAgIGxvZy5pbmZvKGBDbGllbnQgc2NyaXB0IGluamVjdGVkOiAke3NjcmlwdFNyY31gKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBsb2cud2FybihgRmFpbGVkIHRvIGluamVjdCBjbGllbnQgc2NyaXB0OiAke2Vycm9yfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2cuaW5mbygnTm8gUGhhc2UgMiAtIGNsaWVudCBzY3JpcHQgaW5qZWN0aW9uIHNraXBwZWQnKTtcbiAgICAgIH1cblxuICAgICAgLy8gLS0gQ2xlYW4gUGhhc2UgMSBTU1IgYXJ0aWZhY3RzIGZyb20gcHVibGljIGRpc3QgKHYwLjE0LjEwKSAtLVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgY2xlYW5Tc3JBcnRpZmFjdHMoY3R4KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZy53YXJuKGBGYWlsZWQgdG8gY2xlYW4gU1NSIGFydGlmYWN0czogJHtlcnJvcn1gKTtcbiAgICAgIH1cblxuICAgICAgbG9nLmluZm8oJ0J1aWxkIGNvbXBsZXRlLicpO1xuICAgIH0sXG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0NBUUMsR0FLRCxTQUFTLElBQUksUUFBUSxZQUFZO0FBQ2pDLE9BQU8sYUFBYSxlQUFlO0FBQ25DLFNBQVMsWUFBWSxRQUFRLDJCQUEyQjtBQUN4RCxTQUFTLGlCQUFpQixFQUFFLDRCQUE0QixRQUFRLG1CQUFtQjtBQUVuRixNQUFNLE1BQU0sYUFBYTtBQUV6QiwyRUFBMkUsR0FDM0UsT0FBTyxTQUFTLFlBQ2QsVUFBbUUsQ0FBQyxDQUFDLEVBQ3JFLEdBQTZCO0VBRTdCLElBQUk7RUFFSixPQUFPO0lBQ0wsTUFBTTtJQUVOLGdCQUFlLGNBQWM7TUFDM0IsU0FBUztJQUNYO0lBRUEsTUFBTTtNQUNKLG1DQUFtQztNQUNuQyxJQUFJLE9BQU8sT0FBTyxLQUFLLFNBQVM7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
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9hZGFwdGVyLXZpdGUvc3JjL2J1aWxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG9wZW5lbGVtZW50L2FkYXB0ZXItdml0ZSAtIEJ1aWxkIHBsdWdpblxuICogb3BlbkVsZW1lbnQgQXJjaGl0ZWN0dXJlIChLwrdJwrdTwrdTKTogS25vd2xlZGdlIMK3IElzb2xhdGVkIMK3IFNlbWFudGljIMK3IFN0YXRpY1xuICogQnVpbGQgcHJvZHVjZXMgb25seSBzdGF0aWMgZmlsZXMgKEsrUyksIElzbGFuZHMgYXJlIHRoZSBvbmx5IEpTIChJKS5cbiAqIEFQSSBSb3V0ZXMgKFMgLSBTZXJ2ZXJsZXNzIGV4dGVuc2lvbikgZGVwbG95IHNlcGFyYXRlbHkuXG4gKlxuICogQURSIDAwMTE6IGNsb3NlQnVuZGxlIHdyaXRlcyBtZXRhZGF0YSB0byBjdHgsIHRoZW4gdHJpZ2dlcnMgUGhhc2UgMi8zLlxuICogTm8gZ2xvYmFsVGhpcyBicmlkZ2UgLSBjdHggc3RheXMgaW4gY3JlYXRlT3BlblBsdWdpbigpIGNsb3N1cmUgc2NvcGUgdGhyb3VnaG91dC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiwgUmVzb2x2ZWRDb25maWcgfSBmcm9tICd2aXRlJztcbmltcG9ydCB0eXBlIHsgRnJhbWV3b3JrT3B0aW9ucyB9IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9mcmFtZXdvcmsnO1xuaW1wb3J0IHR5cGUgeyBPcGVuRWxlbWVudEJ1aWxkQ29udGV4dCB9IGZyb20gJy4vYnVpbGQtY29udGV4dC5qcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICdAb3BlbmVsZW1lbnQvY29yZS9sb2dnZXInO1xuaW1wb3J0IHsgY2xlYW5Tc3JBcnRpZmFjdHMsIHBvc3RQcm9jZXNzQ2xpZW50SXNsYW5kQnVpbGQgfSBmcm9tICdAb3BlbmVsZW1lbnQvc3NnJztcblxuY29uc3QgbG9nID0gY3JlYXRlTG9nZ2VyKCdjb3JlJyk7XG5cbi8qKiBWaXRlIHBsdWdpbjogd3JpdGVzIGJ1aWxkIG1ldGFkYXRhIHRvIGN0eCwgdGhlbiBydW5zIFBoYXNlIDIgKyBQaGFzZSAzICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQbHVnaW4oXG4gIG9wdGlvbnM6IEZyYW1ld29ya09wdGlvbnMgJiB7IGFsbG93SGVhZEV4dHJhc1NjcmlwdHM/OiBib29sZWFuIH0gPSB7fSxcbiAgY3R4PzogT3BlbkVsZW1lbnRCdWlsZENvbnRleHQsXG4pOiBQbHVnaW4ge1xuICBsZXQgY29uZmlnOiBSZXNvbHZlZENvbmZpZztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdvcGVuOmJ1aWxkJyxcblxuICAgIGNvbmZpZ1Jlc29sdmVkKHJlc29sdmVkQ29uZmlnKSB7XG4gICAgICBjb25maWcgPSByZXNvbHZlZENvbmZpZztcbiAgICB9LFxuXG4gICAgYXN5bmMgY2xvc2VCdW5kbGUoKSB7XG4gICAgICAvLyBPbmx5IHJ1biBpbiBidWlsZCBtb2RlIChub3QgZGV2KVxuICAgICAgaWYgKGNvbmZpZy5jb21tYW5kICE9PSAnYnVpbGQnKSByZXR1cm47XG5cbiAgICAgIGlmICghY3R4KSB7XG4gICAgICAgIGxvZy53YXJuKCdvcGVuOmJ1aWxkIHNraXBwZWQgUGhhc2UgMi8zIGJlY2F1c2Ugbm8gT3BlbkVsZW1lbnRCdWlsZENvbnRleHQgd2FzIHByb3ZpZGVkLicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFNlcmlhbGl6ZSBTU1Igbm9FeHRlcm5hbCBwYXR0ZXJucyAoUmVnRXhwIC0+IG1hcmtlciBvYmplY3RzKVxuICAgICAgY29uc3Qgc3NyTm9FeHRlcm5hbCA9ICgob3B0aW9ucy5zc3I/Lm5vRXh0ZXJuYWwgfHxcbiAgICAgICAgKGNvbmZpZy5zc3IgYXMgeyBub0V4dGVybmFsPzogKHN0cmluZyB8IFJlZ0V4cClbXSB9IHwgdW5kZWZpbmVkKT8ubm9FeHRlcm5hbCkgfHwgW10pXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgX190eXBlOiAnUmVnRXhwJywgc291cmNlOiBpdGVtLnNvdXJjZSwgZmxhZ3M6IGl0ZW0uZmxhZ3MgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH0pO1xuXG4gICAgICAvLyAtLS0gV3JpdGUgdG8gT3BlbkVsZW1lbnRCdWlsZENvbnRleHQgLS0tLS0tLS0tLVxuICAgICAgY3R4LnBvcHVsYXRlUGhhc2UzKFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHNzck5vRXh0ZXJuYWwgYXMgKHN0cmluZyB8IHsgX190eXBlOiAnUmVnRXhwJzsgc291cmNlOiBzdHJpbmc7IGZsYWdzOiBzdHJpbmcgfSlbXSxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHRvdGFsSXNsYW5kcyA9IChjdHgucGhhc2UxLmlzbGFuZFRhZ05hbWVzPy5sZW5ndGggfHwgMCkgK1xuICAgICAgICAoY3R4LnBoYXNlMS5wYWNrYWdlSXNsYW5kRGVjbHM/Lmxlbmd0aCB8fCAwKTtcblxuICAgICAgbG9nLmluZm8oJ1BoYXNlIDEvMyBjb21wbGV0ZSAtIFNTUiBidW5kbGUgKyBtZXRhZGF0YSB3cml0dGVuIHRvIGN0eCcpO1xuXG4gICAgICAvLyBBRFIgMDAyMzogUGhhc2UgMyAoU1NHKSBydW5zIGJlZm9yZSBQaGFzZSAyIChjbGllbnQgYnVuZGxlKS5cbiAgICAgIC8vIFNTRyBvbmx5IG5lZWRzIFBoYXNlIDEgLSBpdCByZW5kZXJzIEhUTUwgZnJvbSB0aGUgU1NSIGJ1bmRsZS5cbiAgICAgIC8vIFBoYXNlIDIgcnVucyBsYXN0IGJlY2F1c2UgY2xpZW50IGNodW5rcyBoYXZlIGNvbnRlbnQgaGFzaGVzIHRoYXRcbiAgICAgIC8vIGRvbid0IGFmZmVjdCBIVE1MIGNvbnRlbnQsIGFuZCBpbmplY3Rpb24gaXMgYSBwb3N0LXByb2Nlc3Npbmcgc3RlcC5cbiAgICAgIGN0eC5tYXJrQ29tcGxldGUoMSk7XG5cbiAgICAgIGxvZy5pbmZvKCdbMy8zXSBTdGF0aWMgc2l0ZSBnZW5lcmF0aW9uLi4uJyk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGJ1aWxkU1NHIH0gPSBhd2FpdCBpbXBvcnQoJy4vY2xpL2J1aWxkLXNzZy5qcycpO1xuICAgICAgICBhd2FpdCBidWlsZFNTRyh7fSwgY3R4KTtcbiAgICAgICAgY3R4Lm1hcmtDb21wbGV0ZSgzKTtcbiAgICAgICAgbG9nLmluZm8oJ1szLzNdIFN0YXRpYyBzaXRlIGdlbmVyYXRpb24gLSBjb21wbGV0ZScpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nLmVycm9yKGBbMy8zXSBTdGF0aWMgc2l0ZSBnZW5lcmF0aW9uIC0gRkFJTEVEOiAke2Vycm9yfWApO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgLy8gUGhhc2UgMjogQ2xpZW50IGlzbGFuZCBidW5kbGUgKG9ubHkgaWYgaXNsYW5kcyBleGlzdClcbiAgICAgIGlmICh0b3RhbElzbGFuZHMgPiAwKSB7XG4gICAgICAgIGxvZy5pbmZvKCdbMi8zXSBDbGllbnQgaXNsYW5kIGJ1aWxkLi4uJyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgeyBidWlsZENsaWVudCB9ID0gYXdhaXQgaW1wb3J0KCcuL2NsaS9idWlsZC1jbGllbnQuanMnKTtcbiAgICAgICAgICBhd2FpdCBidWlsZENsaWVudChjdHgpO1xuICAgICAgICAgIGN0eC5tYXJrQ29tcGxldGUoMik7XG4gICAgICAgICAgbG9nLmluZm8oJ1syLzNdIENsaWVudCBpc2xhbmQgYnVpbGQgLSBjb21wbGV0ZScpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGxvZy5lcnJvcihgWzIvM10gQ2xpZW50IGlzbGFuZCBidWlsZCAtIEZBSUxFRDogJHtlcnJvcn1gKTtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyAtLSBJbmplY3QgY2xpZW50IHNjcmlwdCAob25seSBydW5zIGlmIFBoYXNlIDIgY29tcGxldGVkKSAtLVxuICAgICAgLy8gUGhhc2UgMidzIG1hbmlmZXN0Lmpzb24gdGVsbHMgdXMgdGhlIGNsaWVudCBjaHVuayBVUkxzIHRvIGluamVjdFxuICAgICAgLy8gaW50byB0aGUgYWxyZWFkeS1yZW5kZXJlZCBIVE1MIHBhZ2VzLlxuICAgICAgaWYgKGN0eC5pc0NvbXBsZXRlKDIpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3Qgb3V0RGlyID0gY3R4LnBoYXNlMy5vdXREaXIgfHwgJ2Rpc3QnO1xuICAgICAgICAgIGNvbnN0IHJvb3QgPSBjdHgucGhhc2UzLnJvb3QgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICAgICAgICBjb25zdCBjbGllbnRNYW5pZmVzdFBhdGggPSBqb2luKHJvb3QsIG91dERpciwgJ2NsaWVudCcsICcudml0ZScsICdtYW5pZmVzdC5qc29uJyk7XG4gICAgICAgICAgY29uc3QgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSA9IGF3YWl0IGltcG9ydCgnbm9kZTpmcycpO1xuICAgICAgICAgIGlmIChleGlzdHNTeW5jKGNsaWVudE1hbmlmZXN0UGF0aCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hbmlmZXN0UmF3ID0gcmVhZEZpbGVTeW5jKGNsaWVudE1hbmlmZXN0UGF0aCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2UobWFuaWZlc3RSYXcpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbc3JjLCBlbnRyeV0gb2YgT2JqZWN0LmVudHJpZXMobWFuaWZlc3QpIGFzIFtzdHJpbmcsIHsgZmlsZT86IHN0cmluZyB9XVtdKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAoc3JjLmluY2x1ZGVzKCdvcGVuLWNsaWVudC1lbnRyeScpIHx8IHNyYy5pbmNsdWRlcygndmlydHVhbDpvcGVuLWNsaWVudCcpKSAmJlxuICAgICAgICAgICAgICAgIGVudHJ5LmZpbGVcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9IGN0eC5waGFzZTMuYmFzZSB8fCAnLyc7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0U3JjID0gYCR7YmFzZX1jbGllbnQvJHtlbnRyeS5maWxlfWA7XG4gICAgICAgICAgICAgICAgYXdhaXQgcG9zdFByb2Nlc3NDbGllbnRJc2xhbmRCdWlsZChjdHgsIHNjcmlwdFNyYyk7XG4gICAgICAgICAgICAgICAgbG9nLmluZm8oYENsaWVudCBzY3JpcHQgaW5qZWN0ZWQ6ICR7c2NyaXB0U3JjfWApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGxvZy53YXJuKGBGYWlsZWQgdG8gaW5qZWN0IGNsaWVudCBzY3JpcHQ6ICR7ZXJyb3J9YCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy5pbmZvKCdObyBQaGFzZSAyIC0gY2xpZW50IHNjcmlwdCBpbmplY3Rpb24gc2tpcHBlZCcpO1xuICAgICAgfVxuXG4gICAgICAvLyAtLSBDbGVhbiBQaGFzZSAxIFNTUiBhcnRpZmFjdHMgZnJvbSBwdWJsaWMgZGlzdCAodjAuMTQuMTApIC0tXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBjbGVhblNzckFydGlmYWN0cyhjdHgpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nLndhcm4oYEZhaWxlZCB0byBjbGVhbiBTU1IgYXJ0aWZhY3RzOiAke2Vycm9yfWApO1xuICAgICAgfVxuXG4gICAgICBsb2cuaW5mbygnQnVpbGQgY29tcGxldGUuJyk7XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Q0FRQyxHQUtELFNBQVMsSUFBSSxRQUFRLFlBQVk7QUFDakMsT0FBTyxhQUFhLGVBQWU7QUFDbkMsU0FBUyxZQUFZLFFBQVEsMkJBQTJCO0FBQ3hELFNBQVMsaUJBQWlCLEVBQUUsNEJBQTRCLFFBQVEsbUJBQW1CO0FBRW5GLE1BQU0sTUFBTSxhQUFhO0FBRXpCLDJFQUEyRSxHQUMzRSxPQUFPLFNBQVMsWUFDZCxVQUFtRSxDQUFDLENBQUMsRUFDckUsR0FBNkI7RUFFN0IsSUFBSTtFQUVKLE9BQU87SUFDTCxNQUFNO0lBRU4sZ0JBQWUsY0FBYztNQUMzQixTQUFTO0lBQ1g7SUFFQSxNQUFNO01BQ0osbUNBQW1DO01BQ25DLElBQUksT0FBTyxPQUFPLEtBQUssU0FBUztNQUVoQyxJQUFJLENBQUMsS0FBSztRQUNSLElBQUksSUFBSSxDQUFDO1FBQ1Q7TUFDRjtNQUVBLCtEQUErRDtNQUMvRCxNQUFNLGdCQUFnQixDQUFDLEFBQUMsUUFBUSxHQUFHLEVBQUUsY0FDbEMsT0FBTyxHQUFHLEVBQXVELGNBQWUsRUFBRSxFQUNsRixHQUFHLENBQUMsQ0FBQztRQUNKLElBQUksZ0JBQWdCLFFBQVE7VUFDMUIsT0FBTztZQUFFLFFBQVE7WUFBVSxRQUFRLEtBQUssTUFBTTtZQUFFLE9BQU8sS0FBSyxLQUFLO1VBQUM7UUFDcEU7UUFDQSxPQUFPO01BQ1Q7TUFFRixrREFBa0Q7TUFDbEQsSUFBSSxjQUFjLENBQ2hCLFNBQ0EsUUFDQTtNQUdGLE1BQU0sZUFBZSxDQUFDLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsSUFDMUQsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxVQUFVLENBQUM7TUFFN0MsSUFBSSxJQUFJLENBQUM7TUFFVCwrREFBK0Q7TUFDL0QsZ0VBQWdFO01BQ2hFLG1FQUFtRTtNQUNuRSxzRUFBc0U7TUFDdEUsSUFBSSxZQUFZLENBQUM7TUFFakIsSUFBSSxJQUFJLENBQUM7TUFDVCxJQUFJO1FBQ0YsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxDQUFDLEdBQUc7UUFDbkIsSUFBSSxZQUFZLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUM7TUFDWCxFQUFFLE9BQU8sT0FBTztRQUNkLElBQUksS0FBSyxDQUFDLENBQUMsdUNBQXVDLEVBQUUsT0FBTztRQUMzRCxNQUFNO01BQ1I7TUFFQSx3REFBd0Q7TUFDeEQsSUFBSSxlQUFlLEdBQUc7UUFDcEIsSUFBSSxJQUFJLENBQUM7UUFDVCxJQUFJO1VBQ0YsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDO1VBQ3JDLE1BQU0sWUFBWTtVQUNsQixJQUFJLFlBQVksQ0FBQztVQUNqQixJQUFJLElBQUksQ0FBQztRQUNYLEVBQUUsT0FBTyxPQUFPO1VBQ2QsSUFBSSxLQUFLLENBQUMsQ0FBQyxvQ0FBb0MsRUFBRSxPQUFPO1VBQ3hELE1BQU07UUFDUjtNQUNGO01BRUEsOERBQThEO01BQzlELG1FQUFtRTtNQUNuRSx3Q0FBd0M7TUFDeEMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxJQUFJO1FBQ3JCLElBQUk7VUFDRixNQUFNLFNBQVMsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJO1VBQ3BDLE1BQU0sT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksUUFBUSxHQUFHO1VBQzNDLE1BQU0scUJBQXFCLEtBQUssTUFBTSxRQUFRLFVBQVUsU0FBUztVQUNqRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDO1VBQ2xELElBQUksV0FBVyxxQkFBcUI7WUFDbEMsTUFBTSxjQUFjLGFBQWEsb0JBQW9CO1lBQ3JELE1BQU0sV0FBVyxLQUFLLEtBQUssQ0FBQztZQUM1QixLQUFLLE1BQU0sQ0FBQyxLQUFLLE1BQU0sSUFBSSxPQUFPLE9BQU8sQ0FBQyxVQUE0QztjQUNwRixJQUNFLENBQUMsSUFBSSxRQUFRLENBQUMsd0JBQXdCLElBQUksUUFBUSxDQUFDLHNCQUFzQixLQUN6RSxNQUFNLElBQUksRUFDVjtnQkFDQSxNQUFNLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJO2dCQUNoQyxNQUFNLFlBQVksR0FBRyxLQUFLLE9BQU8sRUFBRSxNQUFNLElBQUksRUFBRTtnQkFDL0MsTUFBTSw2QkFBNkIsS0FBSztnQkFDeEMsSUFBSSxJQUFJLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxXQUFXO2dCQUMvQztjQUNGO1lBQ0Y7VUFDRjtRQUNGLEVBQUUsT0FBTyxPQUFPO1VBQ2QsSUFBSSxJQUFJLENBQUMsQ0FBQyxnQ0FBZ0MsRUFBRSxPQUFPO1FBQ3JEO01BQ0YsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDO01BQ1g7TUFFQSxnRUFBZ0U7TUFDaEUsSUFBSTtRQUNGLE1BQU0sa0JBQWtCO01BQzFCLEVBQUUsT0FBTyxPQUFPO1FBQ2QsSUFBSSxJQUFJLENBQUMsQ0FBQywrQkFBK0IsRUFBRSxPQUFPO01BQ3BEO01BRUEsSUFBSSxJQUFJLENBQUM7SUFDWDtFQUNGO0FBQ0YifQ==
|
package/src/cli/build-ssg.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Deno } from "@deno/shim-deno";
|
|
2
1
|
/**
|
|
3
2
|
* @openelement/adapter-vite - CLI: SSG Build
|
|
4
3
|
*
|
|
@@ -374,4 +373,4 @@ if (typeof globalThis.customElements === 'undefined') {
|
|
|
374
373
|
}
|
|
375
374
|
}
|
|
376
375
|
export { buildSSG };
|
|
377
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9hZGFwdGVyLXZpdGUvc3JjL2NsaS9idWlsZC1zc2cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVubyB9IGZyb20gXCJAZGVuby9zaGltLWRlbm9cIjtcbi8qKlxuICogQG9wZW5lbGVtZW50L2FkYXB0ZXItdml0ZSAtIENMSTogU1NHIEJ1aWxkXG4gKlxuICogU1NHIHJlbmRlcmluZyArIHBvc3QtcHJvY2Vzc2luZy5cbiAqIEJ1aWxkcyBhIHNlbGYtY29udGFpbmVkIFNTUiBidW5kbGUgdmlhIHZpdGVCdWlsZChzc3I6dHJ1ZSwgbm9FeHRlcm5hbCksXG4gKiB0aGVuIGltcG9ydHMgaXQgdG8gcmVuZGVyIGFsbCBwYWdlcyB0byBzdGF0aWMgSFRNTCwgYW5kIHBvc3QtcHJvY2Vzc2VzXG4gKiBpc2xhbmQgcGF0aHMuXG4gKlxuICogQURSIDAwMTE6IFRoaXMgbW9kdWxlIGV4cG9ydHMgYnVpbGRTU0coKSBvbmx5IC0gaXQgaXMgY2FsbGVkIGZyb21cbiAqIGNsb3NlQnVuZGxlKCkgaW4gb3BlbjpidWlsZCBwbHVnaW4uIE5vIGxvbmdlciBhIHN0YW5kYWxvbmUgQ0xJIGVudHJ5LlxuICogY3R4IHBhcmFtZXRlciBpcyByZXF1aXJlZCAobm8gZ2xvYmFsVGhpcyBmYWxsYmFjaykuXG4gKlxuICogVXNhZ2U6XG4gKiAgIGRlbm8gdGFzayBidWlsZCAgKHVuaWZpZWQgZW50cnkgLSBydW5zIGFsbCAzIHBoYXNlcylcbiAqL1xuXG5pbXBvcnQgeyBqb2luLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgeyBub3JtYWxpemVQYXRoIH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB0eXBlIHsgRnJhbWV3b3JrT3B0aW9ucywgSHlkcmF0aW9uU3RyYXRlZ3kgfSBmcm9tICdAb3BlbmVsZW1lbnQvcHJvdG9jb2wvZnJhbWV3b3JrJztcbmltcG9ydCB0eXBlIHsgT3BlbkVsZW1lbnRQYWNrYWdlTWFuaWZlc3QgfSBmcm9tICdAb3BlbmVsZW1lbnQvcHJvdG9jb2wvbWFuaWZlc3QnO1xuaW1wb3J0IHR5cGUgeyBPcGVuRWxlbWVudEJ1aWxkQ29udGV4dCB9IGZyb20gJy4uL2J1aWxkLWNvbnRleHQuanMnO1xuaW1wb3J0IHsgc3NnUmVuZGVyIH0gZnJvbSAnQG9wZW5lbGVtZW50L3NzZyc7XG5pbXBvcnQgeyBTc3JSZW5kZXJFcnJvciB9IGZyb20gJ0BvcGVuZWxlbWVudC9jb3JlL2Vycm9ycyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICdAb3BlbmVsZW1lbnQvY29yZS9sb2dnZXInO1xuaW1wb3J0IHsgY3JlYXRlU3NnUmVuZGVyRXZpZGVuY2UgfSBmcm9tICcuL3NzZy1yZW5kZXIuanMnO1xuaW1wb3J0IHsgY3JlYXRlR2VuZXJhdGVkRGF0YVJlc29sdmVyUGx1Z2luIH0gZnJvbSAnLi4vZ2VuZXJhdGVkLWRhdGEtcmVzb2x2ZXIuanMnO1xuaW1wb3J0IHsgY3JlYXRlT3BlbkpzclBhY2thZ2VSZXNvbHZlclBsdWdpbiB9IGZyb20gJy4uL3NzZy1wYWNrYWdlLXJlc29sdmVyLmpzJztcbmltcG9ydCB7IGdlbmVyYXRlU3NyUG9seWZpbGxCYW5uZXIsIHJlc29sdmVFeHRlcm5hbE1hbmlmZXN0IH0gZnJvbSAnQG9wZW5lbGVtZW50L3NzZyc7XG5pbXBvcnQgeyBvcHRpb25hbFBhY2thZ2VTdHVic1BsdWdpbiB9IGZyb20gJy4uL3BsdWdpbi5qcyc7XG5pbXBvcnQgeyBub3JtYWxpemVWaXRlQWxpYXNlcyB9IGZyb20gJy4uL2FsaWFzLXV0aWxzLmpzJztcblxuLyoqIEZhbGxiYWNrIHBhY2thZ2UgdmVyc2lvbiB3aGVuIGFkYXB0ZXItdml0ZSBjYW5ub3QgcmVhZCBpdHMgb3duIGRlbm8uanNvbi4gKi9cbmNvbnN0IERFRkFVTFRfQURBUFRFUl9WRVJTSU9OX0ZBTExCQUNLID0gJzAuMzUuMSc7XG5cbi8qKiBDaHVuayBzaXplIHdhcm5pbmcgbGltaXQgKGtCKSBmb3IgdGhlIFNTUiBidW5kbGUgYnVpbGQuICovXG5jb25zdCBTU1JfQ0hVTktfU0laRV9XQVJOSU5HX0xJTUlUX0tCID0gMTUwMDtcblxuLyoqIFJvbGx1cC9WaXRlIG91dHB1dCBwYXRocyBtYXBwaW5nIGZvciBrbm93biBleHRlcm5hbHMuICovXG5jb25zdCBTU1JfRVhURVJOQUxfUEFUSFM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdzYW5pdGl6ZS1odG1sJzogJ25wbTpzYW5pdGl6ZS1odG1sQF4yLjE3LjQnLFxufTtcblxuY29uc3QgbG9nID0gY3JlYXRlTG9nZ2VyKCdzc2cnKTtcblxuY29uc3QgVklSVFVBTF9TU0dfRU5UUllfSUQgPSAndmlydHVhbDpvcGVuLXNzZy1lbnRyeSc7XG5jb25zdCBSRVNPTFZFRF9TU0dfRU5UUllfSUQgPSAnXFwwJyArIFZJUlRVQUxfU1NHX0VOVFJZX0lEO1xuZnVuY3Rpb24gZ2V0SnNyUGFja2FnZVZlcnNpb24obWV0YVVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSBtZXRhVXJsLm1hdGNoKC9cXC9Ab3BlbmVsZW1lbnRcXC9hZGFwdGVyLXZpdGVcXC8oW14vXSspXFwvLyk7XG4gIGlmIChtYXRjaCkgcmV0dXJuIG1hdGNoWzFdO1xuICAvLyBSZWFkIGZyb20gb3duIGRlbm8uanNvblxuICB0cnkge1xuICAgIGNvbnN0IGRlbm9Kc29uID0gSlNPTi5wYXJzZShcbiAgICAgIHR5cGVvZiBEZW5vICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IERlbm8ucmVhZFRleHRGaWxlU3luYyhuZXcgVVJMKCcuLi9kZW5vLmpzb24nLCBpbXBvcnQubWV0YS51cmwpKVxuICAgICAgICA6IHJlYWRGaWxlU3luYyhuZXcgVVJMKCcuLi9kZW5vLmpzb24nLCBpbXBvcnQubWV0YS51cmwpLCAndXRmLTgnKSxcbiAgICApO1xuICAgIHJldHVybiBkZW5vSnNvbi52ZXJzaW9uIHx8IERFRkFVTFRfQURBUFRFUl9WRVJTSU9OX0ZBTExCQUNLO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gREVGQVVMVF9BREFQVEVSX1ZFUlNJT05fRkFMTEJBQ0s7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0TG9jYWxPcGVuRWxlbWVudFBhY2thZ2VSb290KG1ldGFVcmw6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBpZiAoIW1ldGFVcmwuc3RhcnRzV2l0aCgnZmlsZTonKSkgcmV0dXJuIG51bGw7XG4gIHRyeSB7XG4gICAgY29uc3Qgcm9vdCA9IHJlc29sdmUoZmlsZVVSTFRvUGF0aChuZXcgVVJMKCcuJywgbWV0YVVybCkpLCAnLi4nLCAnLi4nLCAnLi4nLCAnLi4nKTtcbiAgICByZXR1cm4gZXhpc3RzU3luYyhyZXNvbHZlKHJvb3QsICdwYWNrYWdlcycsICdjb3JlJywgJ2Rlbm8uanNvbicpKSA/IHJvb3QgOiBudWxsO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5pbnRlcmZhY2UgQnVpbGRTU0dPcHRpb25zIHtcbiAgcm9vdD86IHN0cmluZztcbiAgb3V0RGlyPzogc3RyaW5nO1xuICByb3V0ZXNEaXI/OiBzdHJpbmc7XG4gIGlzbGFuZHNEaXI/OiBzdHJpbmc7XG4gIG1pZGRsZXdhcmU/OiBGcmFtZXdvcmtPcHRpb25zWydtaWRkbGV3YXJlJ107XG4gIHNzcj86IEZyYW1ld29ya09wdGlvbnNbJ3NzciddO1xuICBpc2xhbmRUYWdOYW1lcz86IHN0cmluZ1tdO1xuICBpc2xhbmRNZXRhPzogUmVjb3JkPHN0cmluZywgUGFydGlhbDxpbXBvcnQoJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9zc2cnKS5Jc2xhbmREZWNsPj47XG4gIHBhY2thZ2VNYW5pZmVzdHM/OiBPcGVuRWxlbWVudFBhY2thZ2VNYW5pZmVzdFtdO1xuICAvKiogQHNlY3VyaXR5IEluamVjdGVkIGFzIHJhdyBIVE1MIHdpdGhvdXQgc2FuaXRpemF0aW9uICovXG4gIGhlYWRFeHRyYXM/OiBzdHJpbmc7XG4gIGFsbG93SGVhZEV4dHJhc1NjcmlwdHM/OiBib29sZWFuO1xuICBodG1sPzogeyBsYW5nPzogc3RyaW5nOyB0aXRsZT86IHN0cmluZyB9O1xuICBhcHBTaGVsbD86IEZyYW1ld29ya09wdGlvbnNbJ2FwcFNoZWxsJ107XG4gIGxheW91dHM/OiBGcmFtZXdvcmtPcHRpb25zWydsYXlvdXRzJ107XG4gIHVwZ3JhZGVTdHJhdGVneT86IEh5ZHJhdGlvblN0cmF0ZWd5O1xuICByZXNvbHZlQWxpYXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgaW1wb3J0KCd2aXRlJykuQWxpYXNbXTtcbiAgYmFzZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFZpZXcgVHJhbnNpdGlvbnMgQVBJIGNvbmZpZ3VyYXRpb24uXG4gICAqIFdoZW4gdHJ1ZSAoZGVmYXVsdCksIGluamVjdHMgPG1ldGEgbmFtZT1cInZpZXctdHJhbnNpdGlvblwiIGNvbnRlbnQ9XCJzYW1lLW9yaWdpblwiPlxuICAgKiBpbnRvIGFsbCBIVE1MIGZpbGVzIGZvciBzbW9vdGggY3Jvc3MtcGFnZSBhbmltYXRpb25zIGluIE1QQSBuYXZpZ2F0aW9uLlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgdmlld1RyYW5zaXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY3VsYXRpb24gUnVsZXMgQVBJIGNvbmZpZ3VyYXRpb24uXG4gICAqIEVuYWJsZXMgYnJvd3NlciBwcmVmZXRjaC9wcmVyZW5kZXIgb2YgcGFnZXMgYmVmb3JlIHRoZSB1c2VyIG5hdmlnYXRlcy5cbiAgICogQ2FuIGJlIGEgYm9vbGVhbiAodHJ1ZSA9IGF1dG8tZ2VuZXJhdGUgZnJvbSByb3V0ZXMpIG9yIGV4cGxpY2l0IHJ1bGVzLlxuICAgKi9cbiAgc3BlY3VsYXRpb24/OiBib29sZWFuIHwgaW1wb3J0KCdAb3BlbmVsZW1lbnQvcHJvdG9jb2wvc3NnJykuU3BlY3VsYXRpb25SdWxlc09wdGlvbnM7XG4gIC8qKiBBRFItMDA0NzogU2tpcCBEZW5vIHByZS1yZXNvbHV0aW9uLCB1c2UgcmVnZXggZmFsbGJhY2sgZm9yIGV4dGVybmFsIGRlcHMuICovXG4gIHNraXBQcmVSZXNvbHV0aW9uPzogYm9vbGVhbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRTU0coXG4gIG9wdGlvbnM6IEJ1aWxkU1NHT3B0aW9ucyA9IHt9LFxuICBjdHg6IE9wZW5FbGVtZW50QnVpbGRDb250ZXh0LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJvb3QgPSBvcHRpb25zLnJvb3QgfHwgY3R4LnBoYXNlMy5yb290IHx8IHByb2Nlc3MuY3dkKCk7XG4gIGNvbnN0IG91dERpciA9IG9wdGlvbnMub3V0RGlyIHx8IGN0eC5waGFzZTMub3V0RGlyIHx8ICdkaXN0JztcbiAgY29uc3Qgcm91dGVzRGlyID0gb3B0aW9ucy5yb3V0ZXNEaXIgfHwgY3R4LnBoYXNlMy5yb3V0ZXNEaXIgfHwgJ2FwcC9yb3V0ZXMnO1xuICBjb25zdCBpc2xhbmRzRGlyID0gb3B0aW9ucy5pc2xhbmRzRGlyIHx8IGN0eC5waGFzZTMuaXNsYW5kc0RpciB8fCAnYXBwL2lzbGFuZHMnO1xuICBjb25zdCBhcHBTaGVsbCA9IG9wdGlvbnMuYXBwU2hlbGwgPz8gY3R4LnBoYXNlMy5hcHBTaGVsbDtcbiAgY29uc3QgbGF5b3V0cyA9IG9wdGlvbnMubGF5b3V0cyA/PyBjdHgucGhhc2UzLmxheW91dHM7XG5cbiAgLy8gU09QLXYwLjIxLjY6IERldGVjdCBpZiB3ZSdyZSBydW5uaW5nIGZyb20gYSBEZW5vIHdvcmtzcGFjZS5cbiAgLy8gSW4gd29ya3NwYWNlIG1vZGUsIEBkZW5vL3ZpdGUtcGx1Z2luIHJlc29sdmVzIGJhcmUgc3BlY2lmaWVycy5cbiAgLy8gSW4gSlNSIG1vZGUsIHdlIG5lZWQgdGhlIG9wZW46c3NnLWNvcmUtcmVzb2x2ZSBwbHVnaW4uXG4gIGNvbnN0IHdvcmtzcGFjZVJvb3QgPSAoKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBmb3IgKGxldCBkID0gcmVzb2x2ZShyb290KTsgZCAhPT0gcmVzb2x2ZShkLCAnLi4nKTsgZCA9IHJlc29sdmUoZCwgJy4uJykpIHtcbiAgICAgICAgY29uc3QgY2ZnID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMocmVzb2x2ZShkLCAnZGVuby5qc29uJyksICd1dGYtOCcpKTtcbiAgICAgICAgaWYgKGNmZy53b3Jrc3BhY2UgJiYgQXJyYXkuaXNBcnJheShjZmcud29ya3NwYWNlKSkgcmV0dXJuIGQ7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7IC8qIGRlbm8uanNvbiBub3QgZm91bmQsIGtlZXAgd2Fsa2luZyB1cCAqLyB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0pKCk7XG5cbiAgLy8gUmVhZCBpc2xhbmQgbWV0YWRhdGEgZnJvbSBjdHggKEFEUiAwMDEwOiBubyAub3BlbkVsZW1lbnQvIGZhbGxiYWNrKVxuICBjb25zdCBpc2xhbmRUYWdOYW1lcyA9IG9wdGlvbnMuaXNsYW5kVGFnTmFtZXMgfHwgY3R4LnBoYXNlMS5pc2xhbmRUYWdOYW1lcyB8fCBbXTtcbiAgY29uc3QgaXNsYW5kTWV0YSA9IG9wdGlvbnMuaXNsYW5kTWV0YSB8fCBjdHgucGhhc2UxLmlzbGFuZE1ldGEgfHwge307XG4gIGNvbnN0IHBhY2thZ2VNYW5pZmVzdHMgPSBvcHRpb25zLnBhY2thZ2VNYW5pZmVzdHMgfHwgY3R4LnBoYXNlMS5wYWNrYWdlTWFuaWZlc3RzIHx8IFtdO1xuICBjb25zdCBtZXRhZGF0YVJlc29sdmVBbGlhcyA9IG9wdGlvbnMucmVzb2x2ZUFsaWFzIHx8XG4gICAgKGN0eC5waGFzZTEudXNlclJlc29sdmVBbGlhcyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgaW1wb3J0KCd2aXRlJykuQWxpYXNbXSB8IHVuZGVmaW5lZCk7XG5cbiAgLy8gUmVhZCBvcHRpb25zIGZyb20gY3R4XG4gIGlmICghb3B0aW9ucy5oZWFkRXh0cmFzKSBvcHRpb25zLmhlYWRFeHRyYXMgPSBjdHgucGhhc2UzLmhlYWRFeHRyYXMgfHwgdW5kZWZpbmVkO1xuICBpZiAob3B0aW9ucy5hbGxvd0hlYWRFeHRyYXNTY3JpcHRzID09PSB1bmRlZmluZWQpIHtcbiAgICBvcHRpb25zLmFsbG93SGVhZEV4dHJhc1NjcmlwdHMgPSBjdHgucGhhc2UzLmFsbG93SGVhZEV4dHJhc1NjcmlwdHM7XG4gIH1cbiAgaWYgKCFvcHRpb25zLmh0bWwpIG9wdGlvbnMuaHRtbCA9IGN0eC5waGFzZTMuaHRtbCB8fCB1bmRlZmluZWQ7XG4gIGlmICghb3B0aW9ucy5taWRkbGV3YXJlKSBvcHRpb25zLm1pZGRsZXdhcmUgPSBjdHgucGhhc2UzLm1pZGRsZXdhcmUgfHwgdW5kZWZpbmVkO1xuICBpZiAoIW9wdGlvbnMudXBncmFkZVN0cmF0ZWd5KSBvcHRpb25zLnVwZ3JhZGVTdHJhdGVneSA9IGN0eC5waGFzZTMudXBncmFkZVN0cmF0ZWd5O1xuICBpZiAoIW9wdGlvbnMuYmFzZSkgb3B0aW9ucy5iYXNlID0gY3R4LnBoYXNlMy5iYXNlO1xuICBpZiAob3B0aW9ucy52aWV3VHJhbnNpdGlvbiA9PT0gdW5kZWZpbmVkKSBvcHRpb25zLnZpZXdUcmFuc2l0aW9uID0gY3R4LnBoYXNlMy52aWV3VHJhbnNpdGlvbjtcbiAgaWYgKCFvcHRpb25zLnNwZWN1bGF0aW9uKSBvcHRpb25zLnNwZWN1bGF0aW9uID0gY3R4LnBoYXNlMy5zcGVjdWxhdGlvbiB8fCB1bmRlZmluZWQ7XG5cbiAgLy8gR2VuZXJhdGUgU1NHIGVudHJ5IGNvZGVcbiAgY29uc3QgeyBzY2FuUm91dGVzLCBzY2FuSXNsYW5kcywgc2NhbklzbGFuZE1ldGEsIGZpbGVUb1RhZ05hbWUgfSA9IGF3YWl0IGltcG9ydChcbiAgICAnQG9wZW5lbGVtZW50L3NzZydcbiAgKTtcbiAgY29uc3QgeyBnZW5lcmF0ZUhvbm9FbnRyeUNvZGUgfSA9IGF3YWl0IGltcG9ydCgnQG9wZW5lbGVtZW50L3NzZycpO1xuXG4gIGNvbnN0IHJvdXRlcyA9IGF3YWl0IHNjYW5Sb3V0ZXMocm91dGVzRGlyKTtcblxuICAvLyB2MC4yNS4wOiBHZW5lcmF0ZSB0eXBlLXNhZmUgcm91dGUgcGFyYW1ldGVyIGRlY2xhcmF0aW9ucyBmb3IgYHZpcnR1YWw6b3Blbi1yb3V0ZXNgXG4gIGNvbnN0IHsgZ2VuZXJhdGVSb3V0ZVR5cGVzIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcGVuZWxlbWVudC9zc2cnKTtcbiAgY29uc3Qgcm91dGVUeXBlRHRzID0gZ2VuZXJhdGVSb3V0ZVR5cGVzKHJvdXRlcyk7XG4gIGNvbnN0IGRvdE9wZW5FbGVtZW50RGlyID0gam9pbihyb290LCAnLm9wZW5FbGVtZW50Jyk7XG4gIG1rZGlyU3luYyhkb3RPcGVuRWxlbWVudERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIHdyaXRlRmlsZVN5bmMoam9pbihkb3RPcGVuRWxlbWVudERpciwgJ3JvdXRlcy5kLnRzJyksIHJvdXRlVHlwZUR0cywgJ3V0Zi04Jyk7XG4gIGxvZy5pbmZvKGBSb3V0ZSB0eXBlcyBnZW5lcmF0ZWQgLT4gLm9wZW5FbGVtZW50L3JvdXRlcy5kLnRzYCk7XG5cbiAgY29uc3QgaXNsYW5kc1Jvb3QgPSBqb2luKHJvb3QsIGlzbGFuZHNEaXIpO1xuICBjb25zdCBzc2dJc2xhbmRGaWxlcyA9IGF3YWl0IHNjYW5Jc2xhbmRzKGlzbGFuZHNSb290KTtcbiAgY29uc3Qgc3NnSXNsYW5kVGFnTmFtZXMgPSBpc2xhbmRUYWdOYW1lcy5sZW5ndGggPiAwXG4gICAgPyBpc2xhbmRUYWdOYW1lc1xuICAgIDogc3NnSXNsYW5kRmlsZXMubWFwKChmKSA9PiBmaWxlVG9UYWdOYW1lKGYpKTtcbiAgY29uc3Qgc3NnSXNsYW5kTWV0YSA9IE9iamVjdC5rZXlzKGlzbGFuZE1ldGEpLmxlbmd0aCA+IDBcbiAgICA/IGlzbGFuZE1ldGFcbiAgICA6IGF3YWl0IHNjYW5Jc2xhbmRNZXRhKGlzbGFuZHNSb290LCBzc2dJc2xhbmRGaWxlcyk7XG4gIGNvbnN0IHsgYnVpbGRFbnRyeURlc2NyaXB0b3IgfSA9IGF3YWl0IGltcG9ydCgnQG9wZW5lbGVtZW50L3NzZycpO1xuXG4gIGN0eC5waGFzZTEuc3NyQWRtaXNzaW9uUGxhbiA9IGJ1aWxkRW50cnlEZXNjcmlwdG9yKHJvdXRlcywge1xuICAgIHJvdXRlc0RpcixcbiAgICBpc2xhbmRzRGlyLFxuICAgIHNzZzogdHJ1ZSxcbiAgICBpc2xhbmRUYWdOYW1lczogc3NnSXNsYW5kVGFnTmFtZXMsXG4gICAgaXNsYW5kRmlsZXM6IHNzZ0lzbGFuZEZpbGVzLFxuICAgIGlzbGFuZE1ldGE6IHNzZ0lzbGFuZE1ldGEsXG4gICAgcGFja2FnZU1hbmlmZXN0cyxcbiAgICBjbGllbnRPbmx5VGFnczogW10sXG4gICAgYXBwU2hlbGwsXG4gICAgbGF5b3V0cyxcbiAgfSkuc3NyQWRtaXNzaW9uUGxhbjtcblxuICBjb25zdCByYXdTc2dFbnRyeUNvZGUgPSBnZW5lcmF0ZVNzclBvbHlmaWxsQmFubmVyKCkgKyAnXFxuJyArIGdlbmVyYXRlSG9ub0VudHJ5Q29kZShyb3V0ZXMsIHtcbiAgICByb3V0ZXNEaXIsXG4gICAgaXNsYW5kc0RpcixcbiAgICBtaWRkbGV3YXJlOiBvcHRpb25zLm1pZGRsZXdhcmUsXG4gICAgc3NnOiB0cnVlLFxuICAgIGlzbGFuZFRhZ05hbWVzOiBzc2dJc2xhbmRUYWdOYW1lcyxcbiAgICBpc2xhbmRGaWxlczogc3NnSXNsYW5kRmlsZXMsXG4gICAgaXNsYW5kTWV0YTogc3NnSXNsYW5kTWV0YSxcbiAgICBwYWNrYWdlTWFuaWZlc3RzLFxuICAgIGhlYWRFeHRyYXM6IG9wdGlvbnMuaGVhZEV4dHJhcyxcbiAgICBhbGxvd0hlYWRFeHRyYXNTY3JpcHRzOiBvcHRpb25zLmFsbG93SGVhZEV4dHJhc1NjcmlwdHMsXG4gICAgaHRtbDogb3B0aW9ucy5odG1sLFxuICAgIHVwZ3JhZGVTdHJhdGVneTogb3B0aW9ucy51cGdyYWRlU3RyYXRlZ3kgfHwgJ2lkbGUnLFxuICAgIGNsaWVudE9ubHlUYWdzOiBbXSxcbiAgICBhcHBTaGVsbCxcbiAgICBsYXlvdXRzLFxuICB9KTtcbiAgLy8gRGVubyBpbXBvcnQgbWFwIHJlc29sdXRpb24gaGFuZGxlcyBiYXJlIHNwZWNpZmllcnMgKGUuZy4gQG9wZW5lbGVtZW50L3VpL29wZW4tY2FsbG91dClcbiAgLy8gdmlhIHRoZSBjcmVhdGVEZW5vSW1wb3J0TWFwUGx1Z2luIGFkZGVkIHRvIHRoZSBQaGFzZSAzIHZpdGVCdWlsZCBwbHVnaW5zIGJlbG93LlxuICBjb25zdCBzc2dFbnRyeUNvZGUgPSByYXdTc2dFbnRyeUNvZGU7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB7IGJ1aWxkOiB2aXRlQnVpbGQgfSA9IGF3YWl0IGltcG9ydCgndml0ZScpO1xuXG4gICAgLy8gU1NSIG5vRXh0ZXJuYWw6IHBhY2thZ2VzIHRoYXQgTVVTVCBiZSBpbmxpbmVkIGludG8gdGhlIFNTUiBidW5kbGUuXG4gICAgLy8gV2l0aG91dCB0aGVzZSwgdGhlIFNTUiBidW5kbGUgY29udGFpbnMgYmFyZSBzcGVjaWZpZXIgaW1wb3J0cyB0aGF0IGNhbm5vdFxuICAgIC8vIGJlIHJlc29sdmVkIGluIG5vbi13b3Jrc3BhY2UgZW52aXJvbm1lbnRzIChlLmcuIENGIFBhZ2VzKSwgY2F1c2luZ1xuICAgIC8vIGltcG9ydChlbnRyeS5qcykgdG8gZmFpbCBhbmQgdGhlIGVudGlyZSBTU0cgcGlwZWxpbmUgdG8gcHJvZHVjZSBlbXB0eSBIVE1MLlxuICAgIGNvbnN0IGRlZmF1bHROb0V4dGVybmFsID0gW1xuICAgICAgL15Ab3BlbmVsZW1lbnRcXC8vLFxuICAgIF07XG4gICAgLy8gQURSLTAwNDc6IEV4dGVybmFsIHBhY2thZ2VzIGFyZSBleHRlcm5hbGl6ZWQsIG5vdCBidW5kbGVkLlxuICAgIC8vIEFEUi0wMDU0OiBBU1QtYmFzZWQgZXhwb3J0cyByZXNvbHV0aW9uIGNvdmVycyBBTEwgc3VicGF0aCBleHBvcnRzXG4gICAgLy8gc28gUm9sbGRvd24gZXh0ZXJuYWxpemVzIHRoZW0gY29ycmVjdGx5IHZpYSBtYW5pZmVzdC5zcGVjaWZpZXJzLlxuICAgIC8vIENvbnN1bWVyIHRlbXBsYXRlIGRlbm8uanNvbiBkZWNsYXJlcyB0aGVzZSBwYWNrYWdlcyBzbyBEZW5vIGNhblxuICAgIC8vIHJlc29sdmUgdGhlbSBhdCBydW50aW1lIHdoZW4gYnVpbGRTU0coKSBleGVjdXRlcyBpbXBvcnQoZW50cnkuanMpLlxuICAgIC8vIEhvbm8gc3RheXMgZXh0ZXJuYWwgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgcmVxdWVzdHMgYWRhcHRlci1zcGVjaWZpY1xuICAgIC8vIGJ1bmRsaW5nIHRocm91Z2ggb3B0aW9ucy5zc3Iubm9FeHRlcm5hbC5cbiAgICBjb25zdCBzc3JFeHRlcm5hbERlZmF1bHRzID0gW1xuICAgICAgJ2hvbm8nLFxuICAgIF07XG5cbiAgICAvLyBTdGVwIDA6IERlbm8gcHJlLXJlc29sdXRpb24gKyBBU1Qgc3VicGF0aCBkaXNjb3ZlcnkgKEFEUi0wMDQ3ICsgQURSLTAwNTQpXG4gICAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCByZXNvbHZlRXh0ZXJuYWxNYW5pZmVzdChcbiAgICAgIHNzckV4dGVybmFsRGVmYXVsdHMsXG4gICAgICByb290LFxuICAgICAgb3B0aW9ucy5za2lwUHJlUmVzb2x1dGlvbiB8fCBjdHgucGhhc2UzPy5za2lwUHJlUmVzb2x1dGlvbixcbiAgICApO1xuXG4gICAgY29uc3QgdXNlck5vRXh0ZXJuYWwgPSBvcHRpb25zLnNzcj8ubm9FeHRlcm5hbCB8fCBbXTtcbiAgICBjb25zdCBhbGxOb0V4dGVybmFsID0gWy4uLmRlZmF1bHROb0V4dGVybmFsLCAuLi51c2VyTm9FeHRlcm5hbF07XG5cbiAgICAvLyBIYW5kbGUgYWxpYXMgLSBwcmVmZXIgQ0xJIG9wdGlvbnMsIHRoZW4gY3R4IGZyb20gUGhhc2UgMVxuICAgIGNvbnN0IGFsaWFzID0gbWV0YWRhdGFSZXNvbHZlQWxpYXM7XG4gICAgY29uc3Qgdml0ZVJlc29sdmVBbGlhcyA9IG5vcm1hbGl6ZVZpdGVBbGlhc2VzKGFsaWFzLCByb290KTtcbiAgICBpZiAoYWxpYXMpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGFsaWFzKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGEgb2YgYWxpYXMpIHtcbiAgICAgICAgICBpZiAoYS5maW5kID09PSAnQG9wZW5lbGVtZW50L3VpJykge1xuICAgICAgICAgICAgLy8gdjAuMTQuNjogQ2hlY2sgaWYgcmVwbGFjZW1lbnQgaXMgYWxyZWFkeSBjb3ZlcmVkIGJ5IGRlZmF1bHROb0V4dGVybmFsXG4gICAgICAgICAgICBjb25zdCBpc0FscmVhZHlDb3ZlcmVkID0gZGVmYXVsdE5vRXh0ZXJuYWwuc29tZShcbiAgICAgICAgICAgICAgKHBhdHRlcm46IHN0cmluZyB8IFJlZ0V4cCkgPT5cbiAgICAgICAgICAgICAgICBwYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwICYmIHBhdHRlcm4udGVzdChhLnJlcGxhY2VtZW50KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIWlzQWxyZWFkeUNvdmVyZWQpIHtcbiAgICAgICAgICAgICAgYWxsTm9FeHRlcm5hbC5wdXNoKGEucmVwbGFjZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICgnQG9wZW5lbGVtZW50L3VpJyBpbiBhbGlhcykge1xuICAgICAgICBjb25zdCBpc0FscmVhZHlDb3ZlcmVkID0gZGVmYXVsdE5vRXh0ZXJuYWwuc29tZShcbiAgICAgICAgICAocGF0dGVybjogc3RyaW5nIHwgUmVnRXhwKSA9PlxuICAgICAgICAgICAgcGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cCAmJiBwYXR0ZXJuLnRlc3QoYWxpYXNbJ0BvcGVuZWxlbWVudC91aSddKSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFpc0FscmVhZHlDb3ZlcmVkKSB7XG4gICAgICAgICAgYWxsTm9FeHRlcm5hbC5wdXNoKGFsaWFzWydAb3BlbmVsZW1lbnQvdWknXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCdWlsZCB0aGUgc2VsZi1jb250YWluZWQgU1NSIGJ1bmRsZSAoQURSIDAwMDggUGhhc2UgQylcbiAgICAvLyBSZXBsYWNlcyBjcmVhdGVTZXJ2ZXIoKSArIHNzckxvYWRNb2R1bGUoKSB3aXRoIHZpdGVCdWlsZCArIGltcG9ydCgpLlxuICAgIC8vIG5vRXh0ZXJuYWwgZW5zdXJlcyBhbGwgZGVwZW5kZW5jaWVzIGFyZSBpbmxpbmVkIGludG8gYSBzaW5nbGUgYnVuZGxlLFxuICAgIC8vIHNvIG1vZHVsZS1sZXZlbCB2YXJpYWJsZXMgKFBoYXNlIEIpIGFyZSBzaGFyZWQgYWNyb3NzIHRoZSBlbnRpcmUgZ3JhcGguXG4gICAgY29uc3Qgc3NyT3V0RGlyID0gam9pbihyb290LCBvdXREaXIsICdzZXJ2ZXInKTtcbiAgICBsb2cuaW5mbyhgQnVpbGRpbmcgU1NSIGJ1bmRsZSAtPiAke3Nzck91dERpcn1gKTtcbiAgICBjb25zdCBjbGllbnRPbmx5SXNsYW5kSWRzID0gbmV3IFNldChcbiAgICAgIE9iamVjdC5lbnRyaWVzKHNzZ0lzbGFuZE1ldGEpXG4gICAgICAgIC5maWx0ZXIoKFssIG1ldGFdKSA9PiBtZXRhLnNzciA9PT0gZmFsc2UpXG4gICAgICAgIC5tYXAoKFt0YWddKSA9PiB7XG4gICAgICAgICAgY29uc3QgZmlsZSA9IHNzZ0lzbGFuZEZpbGVzW3NzZ0lzbGFuZFRhZ05hbWVzLmluZGV4T2YodGFnKV07XG4gICAgICAgICAgcmV0dXJuIGZpbGUgPyBub3JtYWxpemVQYXRoKHJlc29sdmUocm9vdCwgaXNsYW5kc0RpciwgZmlsZSkpIDogJyc7XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbiksXG4gICAgKTtcbiAgICAvLyB2MC4yMTogQnVpbGQgZmlsZVBhdGggLT4gdGFnTmFtZSBtYXAgZm9yIGNsaWVudC1vbmx5IHBsYWNlaG9sZGVyIGdlbmVyYXRpb24uXG4gICAgY29uc3QgY2xpZW50T25seVRhZ01hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBbdGFnLCBtZXRhXSBvZiBPYmplY3QuZW50cmllcyhzc2dJc2xhbmRNZXRhKSkge1xuICAgICAgaWYgKG1ldGEuc3NyICE9PSBmYWxzZSkgY29udGludWU7XG4gICAgICBjb25zdCBmaWxlID0gc3NnSXNsYW5kRmlsZXNbc3NnSXNsYW5kVGFnTmFtZXMuaW5kZXhPZih0YWcpXTtcbiAgICAgIGlmIChmaWxlKSBjbGllbnRPbmx5VGFnTWFwLnNldChub3JtYWxpemVQYXRoKHJlc29sdmUocm9vdCwgaXNsYW5kc0RpciwgZmlsZSkpLCB0YWcpO1xuICAgIH1cblxuICAgIC8vIHYwLjIxIFNPUC0wMDQ6IENvbmZsaWN0IGRldGVjdGlvbjogc2FtZSB0YWcgbXVzdCBub3QgYmUgYm90aCBTU1IgYW5kIGNsaWVudDpvbmx5LlxuICAgIGNvbnN0IHNzclRhZ3MgPSBuZXcgU2V0KFxuICAgICAgT2JqZWN0LmVudHJpZXMoc3NnSXNsYW5kTWV0YSlcbiAgICAgICAgLmZpbHRlcigoWywgbWV0YV0pID0+IG1ldGEuc3NyICE9PSBmYWxzZSlcbiAgICAgICAgLm1hcCgoW3RhZ10pID0+IHRhZyksXG4gICAgKTtcbiAgICBjb25zdCBjb25mbGljdFRhZ3MgPSBbLi4uY2xpZW50T25seVRhZ01hcC52YWx1ZXMoKV0uZmlsdGVyKCh0KSA9PiBzc3JUYWdzLmhhcyh0KSk7XG4gICAgaWYgKGNvbmZsaWN0VGFncy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBbb3BlbkVsZW1lbnRdIFNTUitjbGllbnQ6b25seSBjb25mbGljdCBkZXRlY3RlZCBmb3IgdGFnczogJHtjb25mbGljdFRhZ3Muam9pbignLCAnKX0uIGAgK1xuICAgICAgICAgICdBIHRhZyBjYW5ub3QgYmUgYm90aCBTU1ItY2FwYWJsZSBhbmQgY2xpZW50Om9ubHkgb24gdGhlIHNhbWUgcGFnZS4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBhd2FpdCB2aXRlQnVpbGQoe1xuICAgICAgY29uZmlnRmlsZTogZmFsc2UsXG4gICAgICByb290LFxuICAgICAgbG9nTGV2ZWw6ICdlcnJvcicsXG4gICAgICBidWlsZDoge1xuICAgICAgICBzc3I6IHRydWUsXG4gICAgICAgIG91dERpcjogc3NyT3V0RGlyLFxuICAgICAgICBjaHVua1NpemVXYXJuaW5nTGltaXQ6IFNTUl9DSFVOS19TSVpFX1dBUk5JTkdfTElNSVRfS0IsXG4gICAgICAgIHJvbGx1cE9wdGlvbnM6IHtcbiAgICAgICAgICBpbnB1dDogeyBlbnRyeTogVklSVFVBTF9TU0dfRU5UUllfSUQgfSxcbiAgICAgICAgICAvLyB2MC4yMTogU3VwcHJlc3MgSU1QT1JUX0lTX1VOREVGSU5FRCBmb3IgcmV2YWxpZGF0ZTsgdGhlIGdlbmVyYXRlZFxuICAgICAgICAgIC8vIGNvZGUgdXNlcyB0eXBlb2YgY2hlY2sgd2hpY2ggY29ycmVjdGx5IGhhbmRsZXMgdW5kZWZpbmVkIGV4cG9ydHMuXG4gICAgICAgICAgb253YXJuKHdhcm5pbmcsIHdhcm4pIHtcbiAgICAgICAgICAgIGlmICh3YXJuaW5nLmNvZGUgPT09ICdJTVBPUlRfSVNfVU5ERUZJTkVEJykgcmV0dXJuO1xuICAgICAgICAgICAgd2Fybih3YXJuaW5nKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIG91dHB1dDoge1xuICAgICAgICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgICAgICAgIC8vIFdvcmtzcGFjZSBzb3VyY2VzIG1heSB1c2UgZXhwbGljaXQgbnBtOiBzcGVjaWZpZXJzIHRoYXQgUm9sbGRvd25cbiAgICAgICAgICAgIC8vIHJld3JpdGVzIHRvIGJhcmUgaW1wb3J0cyB3aGlsZSBidW5kbGluZy4gUmUtZW1pdCBrbm93biBleHRlcm5hbHNcbiAgICAgICAgICAgIC8vIGFzIERlbm8tcmVzb2x2YWJsZSBucG06IGltcG9ydHMgZm9yIGZyZXNoIEpTUiBjb25zdW1lcnMuXG4gICAgICAgICAgICBwYXRoczogU1NSX0VYVEVSTkFMX1BBVEhTLFxuICAgICAgICAgICAgLy8gQURSLTAwNDQ6IGN1c3RvbUVsZW1lbnRzIHBvbHlmaWxsIG11c3QgcnVuIGJlZm9yZSBFU00gaW1wb3J0cy5cbiAgICAgICAgICAgIC8vIFVzZXMgTWFwLWJhY2tlZCBkZWZpbmUoKS9nZXQoKTsgcmVuZGVyRHNkQnlOYW1lKCkgbG9va3MgdXBcbiAgICAgICAgICAgIC8vIGNvbXBvbmVudHMgdmlhIGN1c3RvbUVsZW1lbnRzLmdldCh0YWdOYW1lKSBkdXJpbmcgU1NHIHJlbmRlcmluZy5cbiAgICAgICAgICAgIC8vIFNPUC0wMTY6IEhUTUxFbGVtZW50IHN0dWIgaXMgc2VsZi1jb250YWluZWQgaW4gQG9wZW5lbGVtZW50L2NvcmUvZHNkLWVsZW1lbnQudHMuXG4gICAgICAgICAgICBiYW5uZXI6IGBcXFxuaWYgKHR5cGVvZiBnbG9iYWxUaGlzLmN1c3RvbUVsZW1lbnRzID09PSAndW5kZWZpbmVkJykge1xuICBjb25zdCBfX29wZW5DZVJlZ2lzdHJ5ID0gbmV3IE1hcCgpO1xuICBnbG9iYWxUaGlzLmN1c3RvbUVsZW1lbnRzID0ge1xuICAgIGRlZmluZShuYW1lLCBjdG9yLCBfb3B0cykgeyBfX29wZW5DZVJlZ2lzdHJ5LnNldChuYW1lLCBjdG9yKTsgfSxcbiAgICBnZXQobmFtZSkgeyByZXR1cm4gX19vcGVuQ2VSZWdpc3RyeS5nZXQobmFtZSk7IH0sXG4gICAgd2hlbkRlZmluZWQobmFtZSkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKF9fb3BlbkNlUmVnaXN0cnkuZ2V0KG5hbWUpKTsgfSxcbiAgICB1cGdyYWRlKF9yb290KSB7fSxcbiAgfTtcbn1cbmAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzc3I6IHsgbm9FeHRlcm5hbDogYWxsTm9FeHRlcm5hbCwgZXh0ZXJuYWw6IG1hbmlmZXN0LnNwZWNpZmllcnMgfSxcbiAgICAgIC8vIEFEUiAwMDA4IFBoYXNlIEE6IEluamVjdCBoZWFkRXh0cmFzIHZpYSBkZWZpbmUgaW5zdGVhZCBvZiAub3BlbkVsZW1lbnQvaGVhZC1leHRyYXMuaHRtbFxuICAgICAgLy8gVGhlIGdlbmVyYXRlZCBlbnRyeSBjb2RlIHVzZXMgX19IRUFEX0VYVFJBU19fIHdoaWNoIGdldHMgcmVwbGFjZWRcbiAgICAgIC8vIGF0IGJ1aWxkIHRpbWUuIFRoaXMgYXZvaWRzIHRoZSBWaXRlIFNTUiBBc3luY0Z1bmN0aW9uIHN5bnRheCBlcnJvcnNcbiAgICAgIC8vIHRoYXQgbGFyZ2UgaW5saW5lIHN0cmluZ3MgKHdpdGggYmFja3RpY2tzLyR7fSkgY2F1c2UuXG4gICAgICBkZWZpbmU6IG9wdGlvbnMuaGVhZEV4dHJhc1xuICAgICAgICA/IHsgX19IRUFEX0VYVFJBU19fOiBKU09OLnN0cmluZ2lmeShvcHRpb25zLmhlYWRFeHRyYXMpIH1cbiAgICAgICAgOiB7IF9fSEVBRF9FWFRSQVNfXzogJ1wiXCInIH0sXG4gICAgICBlc2J1aWxkOiB7XG4gICAgICAgIC8vIEFEUi0wMDU3OiBKU1ggYXV0b21hdGljIHJ1bnRpbWUsIHNhbWUgcmVhc29uIGFzIGJ1aWxkLWNsaWVudC50cy5cbiAgICAgICAgLy8gU1NHIGJ1aWxkIGFsc28gcHJvY2Vzc2VzIC50c3ggaXNsYW5kIGZpbGVzIGZvciBTU1IgcmVuZGVyaW5nLlxuICAgICAgICBqc3g6ICdhdXRvbWF0aWMnLFxuICAgICAgICBqc3hJbXBvcnRTb3VyY2U6ICdAb3BlbmVsZW1lbnQvY29yZScsXG4gICAgICAgIHRzY29uZmlnUmF3OiB7XG4gICAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgICB1c2VEZWZpbmVGb3JDbGFzc0ZpZWxkczogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIC8vIEFEUiAwMDEwOiBWaXJ0dWFsIFNTRyBlbnRyeSBtb2R1bGVcbiAgICAgICAgLy8gUmVwbGFjZXMgLm9wZW5FbGVtZW50Ly5vcGVuRWxlbWVudC1zc2ctZW50cnkudHMgZmlsZSB3cml0ZVxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ29wZW46dmlydHVhbC1zc2ctZW50cnknLFxuICAgICAgICAgIHJlc29sdmVJZChpZCkge1xuICAgICAgICAgICAgaWYgKGlkID09PSBWSVJUVUFMX1NTR19FTlRSWV9JRCkgcmV0dXJuIFJFU09MVkVEX1NTR19FTlRSWV9JRDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxvYWQoaWQpIHtcbiAgICAgICAgICAgIGlmIChpZCA9PT0gUkVTT0xWRURfU1NHX0VOVFJZX0lEKSByZXR1cm4gc3NnRW50cnlDb2RlO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC8vIEFEUiAwMDA4IFBoYXNlIEM6IFByb3ZpZGUgc3R1YnMgZm9yIHJldGFpbmVkIG9wdGlvbmFsIHBhY2thZ2VzLlxuICAgICAgICAvLyBUaGUgZ2VuZXJhdGVkIGVudHJ5IGNvZGUgY2FuIGltcG9ydCBAb3BlbmVsZW1lbnQvY29udGVudCBhbmRcbiAgICAgICAgLy8gQG9wZW5lbGVtZW50L2kxOG4sIGJ1dCB0aGVzZSBtYXkgbm90IGJlIGluc3RhbGxlZC5cbiAgICAgICAgLy8gVGhpcyBwbHVnaW4gcmVzb2x2ZXMgdGhlbSB0byBlbXB0eSBzdHVicyB3aGVuIG1pc3NpbmcsIHNvIHRoZVxuICAgICAgICAvLyB2aXRlQnVpbGQoKSBzdWNjZWVkcyByZWdhcmRsZXNzIG9mIHdoaWNoIHBhY2thZ2VzIGFyZSBhdmFpbGFibGUuXG4gICAgICAgIG9wdGlvbmFsUGFja2FnZVN0dWJzUGx1Z2luKCksXG4gICAgICAgIGNyZWF0ZUdlbmVyYXRlZERhdGFSZXNvbHZlclBsdWdpbih7XG4gICAgICAgICAgcm9vdCxcbiAgICAgICAgICBuYW1lOiAnb3Blbjpzc2ctZ2VuZXJhdGVkLWRhdGEnLFxuICAgICAgICB9KSxcbiAgICAgICAgY3JlYXRlT3BlbkpzclBhY2thZ2VSZXNvbHZlclBsdWdpbih7XG4gICAgICAgICAgd29ya3NwYWNlUm9vdCxcbiAgICAgICAgICB2ZXJzaW9uOiBnZXRKc3JQYWNrYWdlVmVyc2lvbihpbXBvcnQubWV0YS51cmwpLFxuICAgICAgICAgIGxvY2FsUGFja2FnZVJvb3Q6IGdldExvY2FsT3BlbkVsZW1lbnRQYWNrYWdlUm9vdChpbXBvcnQubWV0YS51cmwpLFxuICAgICAgICAgIHVzZXJBbGlhc2VzOiBtZXRhZGF0YVJlc29sdmVBbGlhcyxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnb3Blbjpzc2ctY2xpZW50LW9ubHktaXNsYW5kLXN0dWJzJyxcbiAgICAgICAgICBlbmZvcmNlOiAncHJlJyxcbiAgICAgICAgICBsb2FkKGlkKSB7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplUGF0aChpZC5zcGxpdCgnPycpWzBdKTtcbiAgICAgICAgICAgIGlmICghY2xpZW50T25seUlzbGFuZElkcy5oYXMobm9ybWFsaXplZCkpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IHRhZ05hbWUgPSBjbGllbnRPbmx5VGFnTWFwLmdldChub3JtYWxpemVkKSB8fCAnb3Blbi1jbGllbnQtb25seS1zdHViJztcbiAgICAgICAgICAgIC8vIENsaWVudC1vbmx5IHN0dWIgbWFya2VyIHVzZXMgYW4gdW5icmFuZGVkIGF0dHJpYnV0ZS5cbiAgICAgICAgICAgIC8vIFNTUiBvdXRwdXRzIDx0YWctbmFtZSBkYXRhLWNsaWVudC1vbmx5PVwidHJ1ZVwiPjwvdGFnLW5hbWU+XG4gICAgICAgICAgICAvLyBDbGllbnQgcnVudGltZSBpbXBvcnRzIHRoZSByZWFsIG1vZHVsZSBhbmQgdXBncmFkZXMgdGhlIGVsZW1lbnQuXG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBgaW1wb3J0IHsgZGVmaW5lSXNsYW5kQ29uZmlnIH0gZnJvbSAnQG9wZW5lbGVtZW50L2FwcCc7YCxcbiAgICAgICAgICAgICAgYGV4cG9ydCBjb25zdCB0YWdOYW1lID0gJHtKU09OLnN0cmluZ2lmeSh0YWdOYW1lKX07YCxcbiAgICAgICAgICAgICAgJ2V4cG9ydCBjb25zdCBvcGVuRWxlbWVudCA9IGRlZmluZUlzbGFuZENvbmZpZyh7IHNzcjogZmFsc2UgfSk7JyxcbiAgICAgICAgICAgICAgYGV4cG9ydCBkZWZhdWx0IGNsYXNzIE9wZW5DbGllbnRPbmx5U3R1YiBleHRlbmRzIEhUTUxFbGVtZW50IHtcbiAgY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgaWYgKCF0aGlzLmhhc0F0dHJpYnV0ZSgnZGF0YS1jbGllbnQtb25seScpKSB7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZGF0YS1jbGllbnQtb25seScsICd0cnVlJyk7XG4gICAgfVxuICB9XG59YCxcbiAgICAgICAgICAgIF0uam9pbignXFxuJyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICByZXNvbHZlOiB7XG4gICAgICAgIHByZXNlcnZlU3ltbGlua3M6IHRydWUsXG4gICAgICAgIGV4dGVuc2lvbnM6IFsnLnRzJywgJy50c3gnLCAnLmpzJywgJy5qc3gnLCAnLmpzb24nXSxcbiAgICAgICAgLi4uKHZpdGVSZXNvbHZlQWxpYXMgPyB7IGFsaWFzOiB2aXRlUmVzb2x2ZUFsaWFzIH0gOiB7fSksXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGxvZy5pbmZvKCdTU1IgYnVuZGxlIGJ1aWx0IHN1Y2Nlc3NmdWxseScpO1xuXG4gICAgLy8gTG9hZCB0aGUgU1NSIGJ1bmRsZSBhbmQgcnVuIFNTRyByZW5kZXJpbmcgcGlwZWxpbmVcbiAgICBjb25zdCBzc3JCdW5kbGVQYXRoID0gcmVzb2x2ZShzc3JPdXREaXIsICdlbnRyeS5qcycpO1xuICAgIC8vIE0tMTggZml4OiBVc2UgcHJvY2Vzcy5wbGF0Zm9ybSBpbnN0ZWFkIG9mIERlbm8uYnVpbGQub3MgZm9yIE5vZGUuanMgY29tcGF0XG4gICAgY29uc3QgaXNXaW5kb3dzID0gdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMic7XG4gICAgY29uc3Qgc3NyQnVuZGxlVXJsID0gaXNXaW5kb3dzXG4gICAgICA/ICdmaWxlOi8vLycgKyBzc3JCdW5kbGVQYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKVxuICAgICAgOiAnZmlsZTovLycgKyBzc3JCdW5kbGVQYXRoO1xuICAgIGNvbnN0IG1vZHVsZSA9IGF3YWl0IGltcG9ydChzc3JCdW5kbGVVcmwpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gICAgaWYgKCFtb2R1bGUuZGVmYXVsdCkge1xuICAgICAgdGhyb3cgbmV3IFNzclJlbmRlckVycm9yKCd2aXJ0dWFsOm9wZW4tc3NnLWVudHJ5JywgbmV3IEVycm9yKCdGYWlsZWQgdG8gbG9hZCBIb25vIGFwcCcpKTtcbiAgICB9XG5cbiAgICAvLyBEZWxlZ2F0ZSB0byBzaGFyZWQgc3NnUmVuZGVyKCkgLSB6ZXJvIFZpdGUgZGVwZW5kZW5jeSBmcm9tIHRoaXMgcG9pbnRcbiAgICBhd2FpdCBzc2dSZW5kZXIoXG4gICAgICBtb2R1bGUgYXMgUGFyYW1ldGVyczx0eXBlb2Ygc3NnUmVuZGVyPlswXSxcbiAgICAgIHtcbiAgICAgICAgcm9vdCxcbiAgICAgICAgb3V0RGlyLFxuICAgICAgICBiYXNlOiBvcHRpb25zLmJhc2UgfHwgJy8nLFxuICAgICAgICBoZWFkRXh0cmFzOiBvcHRpb25zLmhlYWRFeHRyYXMsXG4gICAgICAgIGh0bWw6IG9wdGlvbnMuaHRtbCxcbiAgICAgICAgbWlkZGxld2FyZTogb3B0aW9ucy5taWRkbGV3YXJlLFxuICAgICAgICBpc2xhbmRUYWdOYW1lczogc3NnSXNsYW5kVGFnTmFtZXMsXG4gICAgICAgIHZpZXdUcmFuc2l0aW9uOiBvcHRpb25zLnZpZXdUcmFuc2l0aW9uLFxuICAgICAgICBzcGVjdWxhdGlvbjogb3B0aW9ucy5zcGVjdWxhdGlvbiBhcyBib29sZWFuIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgY3JlYXRlU3NnUmVuZGVyRXZpZGVuY2UoY3R4KSxcbiAgICApO1xuXG4gICAgbG9nLmluZm8oJ1N0YXRpYyBzaXRlIGdlbmVyYXRlZCAtPiAnICsgam9pbihyb290LCBvdXREaXIpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc3QgY2F1c2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyKSk7XG4gICAgdGhyb3cgbmV3IFNzclJlbmRlckVycm9yKCdTU0cgcGlwZWxpbmUnLCBjYXVzZSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgYnVpbGRTU0cgfTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLElBQUksUUFBUSxrQkFBa0I7QUFDdkM7Ozs7Ozs7Ozs7Ozs7O0NBY0MsR0FFRCxTQUFTLElBQUksRUFBRSxPQUFPLFFBQVEsWUFBWTtBQUMxQyxTQUFTLGFBQWEsUUFBUSxXQUFXO0FBQ3pDLFNBQVMsYUFBYSxRQUFRLE9BQU87QUFDckMsT0FBTyxhQUFhLGVBQWU7QUFDbkMsU0FBUyxVQUFVLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxhQUFhLFFBQVEsVUFBVTtBQUk3RSxTQUFTLFNBQVMsUUFBUSxtQkFBbUI7QUFDN0MsU0FBUyxjQUFjLFFBQVEsMkJBQTJCO0FBQzFELFNBQVMsWUFBWSxRQUFRLDJCQUEyQjtBQUN4RCxTQUFTLHVCQUF1QixRQUFRLGtCQUFrQjtBQUMxRCxTQUFTLGlDQUFpQyxRQUFRLGdDQUFnQztBQUNsRixTQUFTLGtDQUFrQyxRQUFRLDZCQUE2QjtBQUNoRixTQUFTLHlCQUF5QixFQUFFLHVCQUF1QixRQUFRLG1CQUFtQjtBQUN0RixTQUFTLDBCQUEwQixRQUFRLGVBQWU7QUFDMUQsU0FBUyxvQkFBb0IsUUFBUSxv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
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9hZGFwdGVyLXZpdGUvc3JjL2NsaS9idWlsZC1zc2cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAb3BlbmVsZW1lbnQvYWRhcHRlci12aXRlIC0gQ0xJOiBTU0cgQnVpbGRcbiAqXG4gKiBTU0cgcmVuZGVyaW5nICsgcG9zdC1wcm9jZXNzaW5nLlxuICogQnVpbGRzIGEgc2VsZi1jb250YWluZWQgU1NSIGJ1bmRsZSB2aWEgdml0ZUJ1aWxkKHNzcjp0cnVlLCBub0V4dGVybmFsKSxcbiAqIHRoZW4gaW1wb3J0cyBpdCB0byByZW5kZXIgYWxsIHBhZ2VzIHRvIHN0YXRpYyBIVE1MLCBhbmQgcG9zdC1wcm9jZXNzZXNcbiAqIGlzbGFuZCBwYXRocy5cbiAqXG4gKiBBRFIgMDAxMTogVGhpcyBtb2R1bGUgZXhwb3J0cyBidWlsZFNTRygpIG9ubHkgLSBpdCBpcyBjYWxsZWQgZnJvbVxuICogY2xvc2VCdW5kbGUoKSBpbiBvcGVuOmJ1aWxkIHBsdWdpbi4gTm8gbG9uZ2VyIGEgc3RhbmRhbG9uZSBDTEkgZW50cnkuXG4gKiBjdHggcGFyYW1ldGVyIGlzIHJlcXVpcmVkIChubyBnbG9iYWxUaGlzIGZhbGxiYWNrKS5cbiAqXG4gKiBVc2FnZTpcbiAqICAgZGVubyB0YXNrIGJ1aWxkICAodW5pZmllZCBlbnRyeSAtIHJ1bnMgYWxsIDMgcGhhc2VzKVxuICovXG5cbmltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCB7IG5vcm1hbGl6ZVBhdGggfSBmcm9tICd2aXRlJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMsIHJlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHR5cGUgeyBGcmFtZXdvcmtPcHRpb25zLCBIeWRyYXRpb25TdHJhdGVneSB9IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9mcmFtZXdvcmsnO1xuaW1wb3J0IHR5cGUgeyBPcGVuRWxlbWVudFBhY2thZ2VNYW5pZmVzdCB9IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9tYW5pZmVzdCc7XG5pbXBvcnQgdHlwZSB7IE9wZW5FbGVtZW50QnVpbGRDb250ZXh0IH0gZnJvbSAnLi4vYnVpbGQtY29udGV4dC5qcyc7XG5pbXBvcnQgeyBzc2dSZW5kZXIgfSBmcm9tICdAb3BlbmVsZW1lbnQvc3NnJztcbmltcG9ydCB7IFNzclJlbmRlckVycm9yIH0gZnJvbSAnQG9wZW5lbGVtZW50L2NvcmUvZXJyb3JzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0BvcGVuZWxlbWVudC9jb3JlL2xvZ2dlcic7XG5pbXBvcnQgeyBjcmVhdGVTc2dSZW5kZXJFdmlkZW5jZSB9IGZyb20gJy4vc3NnLXJlbmRlci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVHZW5lcmF0ZWREYXRhUmVzb2x2ZXJQbHVnaW4gfSBmcm9tICcuLi9nZW5lcmF0ZWQtZGF0YS1yZXNvbHZlci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVPcGVuSnNyUGFja2FnZVJlc29sdmVyUGx1Z2luIH0gZnJvbSAnLi4vc3NnLXBhY2thZ2UtcmVzb2x2ZXIuanMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVTc3JQb2x5ZmlsbEJhbm5lciwgcmVzb2x2ZUV4dGVybmFsTWFuaWZlc3QgfSBmcm9tICdAb3BlbmVsZW1lbnQvc3NnJztcbmltcG9ydCB7IG9wdGlvbmFsUGFja2FnZVN0dWJzUGx1Z2luIH0gZnJvbSAnLi4vcGx1Z2luLmpzJztcbmltcG9ydCB7IG5vcm1hbGl6ZVZpdGVBbGlhc2VzIH0gZnJvbSAnLi4vYWxpYXMtdXRpbHMuanMnO1xuXG4vKiogRmFsbGJhY2sgcGFja2FnZSB2ZXJzaW9uIHdoZW4gYWRhcHRlci12aXRlIGNhbm5vdCByZWFkIGl0cyBvd24gZGVuby5qc29uLiAqL1xuY29uc3QgREVGQVVMVF9BREFQVEVSX1ZFUlNJT05fRkFMTEJBQ0sgPSAnMC4zNS4xJztcblxuLyoqIENodW5rIHNpemUgd2FybmluZyBsaW1pdCAoa0IpIGZvciB0aGUgU1NSIGJ1bmRsZSBidWlsZC4gKi9cbmNvbnN0IFNTUl9DSFVOS19TSVpFX1dBUk5JTkdfTElNSVRfS0IgPSAxNTAwO1xuXG4vKiogUm9sbHVwL1ZpdGUgb3V0cHV0IHBhdGhzIG1hcHBpbmcgZm9yIGtub3duIGV4dGVybmFscy4gKi9cbmNvbnN0IFNTUl9FWFRFUk5BTF9QQVRIUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ3Nhbml0aXplLWh0bWwnOiAnbnBtOnNhbml0aXplLWh0bWxAXjIuMTcuNCcsXG59O1xuXG5jb25zdCBsb2cgPSBjcmVhdGVMb2dnZXIoJ3NzZycpO1xuXG5jb25zdCBWSVJUVUFMX1NTR19FTlRSWV9JRCA9ICd2aXJ0dWFsOm9wZW4tc3NnLWVudHJ5JztcbmNvbnN0IFJFU09MVkVEX1NTR19FTlRSWV9JRCA9ICdcXDAnICsgVklSVFVBTF9TU0dfRU5UUllfSUQ7XG5mdW5jdGlvbiBnZXRKc3JQYWNrYWdlVmVyc2lvbihtZXRhVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IG1ldGFVcmwubWF0Y2goL1xcL0BvcGVuZWxlbWVudFxcL2FkYXB0ZXItdml0ZVxcLyhbXi9dKylcXC8vKTtcbiAgaWYgKG1hdGNoKSByZXR1cm4gbWF0Y2hbMV07XG4gIC8vIFJlYWQgZnJvbSBvd24gZGVuby5qc29uXG4gIHRyeSB7XG4gICAgY29uc3QgZGVub0pzb24gPSBKU09OLnBhcnNlKFxuICAgICAgdHlwZW9mIERlbm8gIT09ICd1bmRlZmluZWQnXG4gICAgICAgID8gRGVuby5yZWFkVGV4dEZpbGVTeW5jKG5ldyBVUkwoJy4uL2Rlbm8uanNvbicsIGltcG9ydC5tZXRhLnVybCkpXG4gICAgICAgIDogcmVhZEZpbGVTeW5jKG5ldyBVUkwoJy4uL2Rlbm8uanNvbicsIGltcG9ydC5tZXRhLnVybCksICd1dGYtOCcpLFxuICAgICk7XG4gICAgcmV0dXJuIGRlbm9Kc29uLnZlcnNpb24gfHwgREVGQVVMVF9BREFQVEVSX1ZFUlNJT05fRkFMTEJBQ0s7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBERUZBVUxUX0FEQVBURVJfVkVSU0lPTl9GQUxMQkFDSztcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRMb2NhbE9wZW5FbGVtZW50UGFja2FnZVJvb3QobWV0YVVybDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICghbWV0YVVybC5zdGFydHNXaXRoKCdmaWxlOicpKSByZXR1cm4gbnVsbDtcbiAgdHJ5IHtcbiAgICBjb25zdCByb290ID0gcmVzb2x2ZShmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4nLCBtZXRhVXJsKSksICcuLicsICcuLicsICcuLicsICcuLicpO1xuICAgIHJldHVybiBleGlzdHNTeW5jKHJlc29sdmUocm9vdCwgJ3BhY2thZ2VzJywgJ2NvcmUnLCAnZGVuby5qc29uJykpID8gcm9vdCA6IG51bGw7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmludGVyZmFjZSBCdWlsZFNTR09wdGlvbnMge1xuICByb290Pzogc3RyaW5nO1xuICBvdXREaXI/OiBzdHJpbmc7XG4gIHJvdXRlc0Rpcj86IHN0cmluZztcbiAgaXNsYW5kc0Rpcj86IHN0cmluZztcbiAgbWlkZGxld2FyZT86IEZyYW1ld29ya09wdGlvbnNbJ21pZGRsZXdhcmUnXTtcbiAgc3NyPzogRnJhbWV3b3JrT3B0aW9uc1snc3NyJ107XG4gIGlzbGFuZFRhZ05hbWVzPzogc3RyaW5nW107XG4gIGlzbGFuZE1ldGE/OiBSZWNvcmQ8c3RyaW5nLCBQYXJ0aWFsPGltcG9ydCgnQG9wZW5lbGVtZW50L3Byb3RvY29sL3NzZycpLklzbGFuZERlY2w+PjtcbiAgcGFja2FnZU1hbmlmZXN0cz86IE9wZW5FbGVtZW50UGFja2FnZU1hbmlmZXN0W107XG4gIC8qKiBAc2VjdXJpdHkgSW5qZWN0ZWQgYXMgcmF3IEhUTUwgd2l0aG91dCBzYW5pdGl6YXRpb24gKi9cbiAgaGVhZEV4dHJhcz86IHN0cmluZztcbiAgYWxsb3dIZWFkRXh0cmFzU2NyaXB0cz86IGJvb2xlYW47XG4gIGh0bWw/OiB7IGxhbmc/OiBzdHJpbmc7IHRpdGxlPzogc3RyaW5nIH07XG4gIGFwcFNoZWxsPzogRnJhbWV3b3JrT3B0aW9uc1snYXBwU2hlbGwnXTtcbiAgbGF5b3V0cz86IEZyYW1ld29ya09wdGlvbnNbJ2xheW91dHMnXTtcbiAgdXBncmFkZVN0cmF0ZWd5PzogSHlkcmF0aW9uU3RyYXRlZ3k7XG4gIHJlc29sdmVBbGlhcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBpbXBvcnQoJ3ZpdGUnKS5BbGlhc1tdO1xuICBiYXNlPzogc3RyaW5nO1xuICAvKipcbiAgICogVmlldyBUcmFuc2l0aW9ucyBBUEkgY29uZmlndXJhdGlvbi5cbiAgICogV2hlbiB0cnVlIChkZWZhdWx0KSwgaW5qZWN0cyA8bWV0YSBuYW1lPVwidmlldy10cmFuc2l0aW9uXCIgY29udGVudD1cInNhbWUtb3JpZ2luXCI+XG4gICAqIGludG8gYWxsIEhUTUwgZmlsZXMgZm9yIHNtb290aCBjcm9zcy1wYWdlIGFuaW1hdGlvbnMgaW4gTVBBIG5hdmlnYXRpb24uXG4gICAqIFNldCB0byBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB2aWV3VHJhbnNpdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTcGVjdWxhdGlvbiBSdWxlcyBBUEkgY29uZmlndXJhdGlvbi5cbiAgICogRW5hYmxlcyBicm93c2VyIHByZWZldGNoL3ByZXJlbmRlciBvZiBwYWdlcyBiZWZvcmUgdGhlIHVzZXIgbmF2aWdhdGVzLlxuICAgKiBDYW4gYmUgYSBib29sZWFuICh0cnVlID0gYXV0by1nZW5lcmF0ZSBmcm9tIHJvdXRlcykgb3IgZXhwbGljaXQgcnVsZXMuXG4gICAqL1xuICBzcGVjdWxhdGlvbj86IGJvb2xlYW4gfCBpbXBvcnQoJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9zc2cnKS5TcGVjdWxhdGlvblJ1bGVzT3B0aW9ucztcbiAgLyoqIEFEUi0wMDQ3OiBTa2lwIERlbm8gcHJlLXJlc29sdXRpb24sIHVzZSByZWdleCBmYWxsYmFjayBmb3IgZXh0ZXJuYWwgZGVwcy4gKi9cbiAgc2tpcFByZVJlc29sdXRpb24/OiBib29sZWFuO1xufVxuXG5hc3luYyBmdW5jdGlvbiBidWlsZFNTRyhcbiAgb3B0aW9uczogQnVpbGRTU0dPcHRpb25zID0ge30sXG4gIGN0eDogT3BlbkVsZW1lbnRCdWlsZENvbnRleHQsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgcm9vdCA9IG9wdGlvbnMucm9vdCB8fCBjdHgucGhhc2UzLnJvb3QgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3Qgb3V0RGlyID0gb3B0aW9ucy5vdXREaXIgfHwgY3R4LnBoYXNlMy5vdXREaXIgfHwgJ2Rpc3QnO1xuICBjb25zdCByb3V0ZXNEaXIgPSBvcHRpb25zLnJvdXRlc0RpciB8fCBjdHgucGhhc2UzLnJvdXRlc0RpciB8fCAnYXBwL3JvdXRlcyc7XG4gIGNvbnN0IGlzbGFuZHNEaXIgPSBvcHRpb25zLmlzbGFuZHNEaXIgfHwgY3R4LnBoYXNlMy5pc2xhbmRzRGlyIHx8ICdhcHAvaXNsYW5kcyc7XG4gIGNvbnN0IGFwcFNoZWxsID0gb3B0aW9ucy5hcHBTaGVsbCA/PyBjdHgucGhhc2UzLmFwcFNoZWxsO1xuICBjb25zdCBsYXlvdXRzID0gb3B0aW9ucy5sYXlvdXRzID8/IGN0eC5waGFzZTMubGF5b3V0cztcblxuICAvLyBTT1AtdjAuMjEuNjogRGV0ZWN0IGlmIHdlJ3JlIHJ1bm5pbmcgZnJvbSBhIERlbm8gd29ya3NwYWNlLlxuICAvLyBJbiB3b3Jrc3BhY2UgbW9kZSwgQGRlbm8vdml0ZS1wbHVnaW4gcmVzb2x2ZXMgYmFyZSBzcGVjaWZpZXJzLlxuICAvLyBJbiBKU1IgbW9kZSwgd2UgbmVlZCB0aGUgb3Blbjpzc2ctY29yZS1yZXNvbHZlIHBsdWdpbi5cbiAgY29uc3Qgd29ya3NwYWNlUm9vdCA9ICgoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGZvciAobGV0IGQgPSByZXNvbHZlKHJvb3QpOyBkICE9PSByZXNvbHZlKGQsICcuLicpOyBkID0gcmVzb2x2ZShkLCAnLi4nKSkge1xuICAgICAgICBjb25zdCBjZmcgPSBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhyZXNvbHZlKGQsICdkZW5vLmpzb24nKSwgJ3V0Zi04JykpO1xuICAgICAgICBpZiAoY2ZnLndvcmtzcGFjZSAmJiBBcnJheS5pc0FycmF5KGNmZy53b3Jrc3BhY2UpKSByZXR1cm4gZDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHsgLyogZGVuby5qc29uIG5vdCBmb3VuZCwga2VlcCB3YWxraW5nIHVwICovIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSkoKTtcblxuICAvLyBSZWFkIGlzbGFuZCBtZXRhZGF0YSBmcm9tIGN0eCAoQURSIDAwMTA6IG5vIC5vcGVuRWxlbWVudC8gZmFsbGJhY2spXG4gIGNvbnN0IGlzbGFuZFRhZ05hbWVzID0gb3B0aW9ucy5pc2xhbmRUYWdOYW1lcyB8fCBjdHgucGhhc2UxLmlzbGFuZFRhZ05hbWVzIHx8IFtdO1xuICBjb25zdCBpc2xhbmRNZXRhID0gb3B0aW9ucy5pc2xhbmRNZXRhIHx8IGN0eC5waGFzZTEuaXNsYW5kTWV0YSB8fCB7fTtcbiAgY29uc3QgcGFja2FnZU1hbmlmZXN0cyA9IG9wdGlvbnMucGFja2FnZU1hbmlmZXN0cyB8fCBjdHgucGhhc2UxLnBhY2thZ2VNYW5pZmVzdHMgfHwgW107XG4gIGNvbnN0IG1ldGFkYXRhUmVzb2x2ZUFsaWFzID0gb3B0aW9ucy5yZXNvbHZlQWxpYXMgfHxcbiAgICAoY3R4LnBoYXNlMS51c2VyUmVzb2x2ZUFsaWFzIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBpbXBvcnQoJ3ZpdGUnKS5BbGlhc1tdIHwgdW5kZWZpbmVkKTtcblxuICAvLyBSZWFkIG9wdGlvbnMgZnJvbSBjdHhcbiAgaWYgKCFvcHRpb25zLmhlYWRFeHRyYXMpIG9wdGlvbnMuaGVhZEV4dHJhcyA9IGN0eC5waGFzZTMuaGVhZEV4dHJhcyB8fCB1bmRlZmluZWQ7XG4gIGlmIChvcHRpb25zLmFsbG93SGVhZEV4dHJhc1NjcmlwdHMgPT09IHVuZGVmaW5lZCkge1xuICAgIG9wdGlvbnMuYWxsb3dIZWFkRXh0cmFzU2NyaXB0cyA9IGN0eC5waGFzZTMuYWxsb3dIZWFkRXh0cmFzU2NyaXB0cztcbiAgfVxuICBpZiAoIW9wdGlvbnMuaHRtbCkgb3B0aW9ucy5odG1sID0gY3R4LnBoYXNlMy5odG1sIHx8IHVuZGVmaW5lZDtcbiAgaWYgKCFvcHRpb25zLm1pZGRsZXdhcmUpIG9wdGlvbnMubWlkZGxld2FyZSA9IGN0eC5waGFzZTMubWlkZGxld2FyZSB8fCB1bmRlZmluZWQ7XG4gIGlmICghb3B0aW9ucy51cGdyYWRlU3RyYXRlZ3kpIG9wdGlvbnMudXBncmFkZVN0cmF0ZWd5ID0gY3R4LnBoYXNlMy51cGdyYWRlU3RyYXRlZ3k7XG4gIGlmICghb3B0aW9ucy5iYXNlKSBvcHRpb25zLmJhc2UgPSBjdHgucGhhc2UzLmJhc2U7XG4gIGlmIChvcHRpb25zLnZpZXdUcmFuc2l0aW9uID09PSB1bmRlZmluZWQpIG9wdGlvbnMudmlld1RyYW5zaXRpb24gPSBjdHgucGhhc2UzLnZpZXdUcmFuc2l0aW9uO1xuICBpZiAoIW9wdGlvbnMuc3BlY3VsYXRpb24pIG9wdGlvbnMuc3BlY3VsYXRpb24gPSBjdHgucGhhc2UzLnNwZWN1bGF0aW9uIHx8IHVuZGVmaW5lZDtcblxuICAvLyBHZW5lcmF0ZSBTU0cgZW50cnkgY29kZVxuICBjb25zdCB7IHNjYW5Sb3V0ZXMsIHNjYW5Jc2xhbmRzLCBzY2FuSXNsYW5kTWV0YSwgZmlsZVRvVGFnTmFtZSB9ID0gYXdhaXQgaW1wb3J0KFxuICAgICdAb3BlbmVsZW1lbnQvc3NnJ1xuICApO1xuICBjb25zdCB7IGdlbmVyYXRlSG9ub0VudHJ5Q29kZSB9ID0gYXdhaXQgaW1wb3J0KCdAb3BlbmVsZW1lbnQvc3NnJyk7XG5cbiAgY29uc3Qgcm91dGVzID0gYXdhaXQgc2NhblJvdXRlcyhyb3V0ZXNEaXIpO1xuXG4gIC8vIHYwLjI1LjA6IEdlbmVyYXRlIHR5cGUtc2FmZSByb3V0ZSBwYXJhbWV0ZXIgZGVjbGFyYXRpb25zIGZvciBgdmlydHVhbDpvcGVuLXJvdXRlc2BcbiAgY29uc3QgeyBnZW5lcmF0ZVJvdXRlVHlwZXMgfSA9IGF3YWl0IGltcG9ydCgnQG9wZW5lbGVtZW50L3NzZycpO1xuICBjb25zdCByb3V0ZVR5cGVEdHMgPSBnZW5lcmF0ZVJvdXRlVHlwZXMocm91dGVzKTtcbiAgY29uc3QgZG90T3BlbkVsZW1lbnREaXIgPSBqb2luKHJvb3QsICcub3BlbkVsZW1lbnQnKTtcbiAgbWtkaXJTeW5jKGRvdE9wZW5FbGVtZW50RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgd3JpdGVGaWxlU3luYyhqb2luKGRvdE9wZW5FbGVtZW50RGlyLCAncm91dGVzLmQudHMnKSwgcm91dGVUeXBlRHRzLCAndXRmLTgnKTtcbiAgbG9nLmluZm8oYFJvdXRlIHR5cGVzIGdlbmVyYXRlZCAtPiAub3BlbkVsZW1lbnQvcm91dGVzLmQudHNgKTtcblxuICBjb25zdCBpc2xhbmRzUm9vdCA9IGpvaW4ocm9vdCwgaXNsYW5kc0Rpcik7XG4gIGNvbnN0IHNzZ0lzbGFuZEZpbGVzID0gYXdhaXQgc2NhbklzbGFuZHMoaXNsYW5kc1Jvb3QpO1xuICBjb25zdCBzc2dJc2xhbmRUYWdOYW1lcyA9IGlzbGFuZFRhZ05hbWVzLmxlbmd0aCA+IDBcbiAgICA/IGlzbGFuZFRhZ05hbWVzXG4gICAgOiBzc2dJc2xhbmRGaWxlcy5tYXAoKGYpID0+IGZpbGVUb1RhZ05hbWUoZikpO1xuICBjb25zdCBzc2dJc2xhbmRNZXRhID0gT2JqZWN0LmtleXMoaXNsYW5kTWV0YSkubGVuZ3RoID4gMFxuICAgID8gaXNsYW5kTWV0YVxuICAgIDogYXdhaXQgc2NhbklzbGFuZE1ldGEoaXNsYW5kc1Jvb3QsIHNzZ0lzbGFuZEZpbGVzKTtcbiAgY29uc3QgeyBidWlsZEVudHJ5RGVzY3JpcHRvciB9ID0gYXdhaXQgaW1wb3J0KCdAb3BlbmVsZW1lbnQvc3NnJyk7XG5cbiAgY3R4LnBoYXNlMS5zc3JBZG1pc3Npb25QbGFuID0gYnVpbGRFbnRyeURlc2NyaXB0b3Iocm91dGVzLCB7XG4gICAgcm91dGVzRGlyLFxuICAgIGlzbGFuZHNEaXIsXG4gICAgc3NnOiB0cnVlLFxuICAgIGlzbGFuZFRhZ05hbWVzOiBzc2dJc2xhbmRUYWdOYW1lcyxcbiAgICBpc2xhbmRGaWxlczogc3NnSXNsYW5kRmlsZXMsXG4gICAgaXNsYW5kTWV0YTogc3NnSXNsYW5kTWV0YSxcbiAgICBwYWNrYWdlTWFuaWZlc3RzLFxuICAgIGNsaWVudE9ubHlUYWdzOiBbXSxcbiAgICBhcHBTaGVsbCxcbiAgICBsYXlvdXRzLFxuICB9KS5zc3JBZG1pc3Npb25QbGFuO1xuXG4gIGNvbnN0IHJhd1NzZ0VudHJ5Q29kZSA9IGdlbmVyYXRlU3NyUG9seWZpbGxCYW5uZXIoKSArICdcXG4nICsgZ2VuZXJhdGVIb25vRW50cnlDb2RlKHJvdXRlcywge1xuICAgIHJvdXRlc0RpcixcbiAgICBpc2xhbmRzRGlyLFxuICAgIG1pZGRsZXdhcmU6IG9wdGlvbnMubWlkZGxld2FyZSxcbiAgICBzc2c6IHRydWUsXG4gICAgaXNsYW5kVGFnTmFtZXM6IHNzZ0lzbGFuZFRhZ05hbWVzLFxuICAgIGlzbGFuZEZpbGVzOiBzc2dJc2xhbmRGaWxlcyxcbiAgICBpc2xhbmRNZXRhOiBzc2dJc2xhbmRNZXRhLFxuICAgIHBhY2thZ2VNYW5pZmVzdHMsXG4gICAgaGVhZEV4dHJhczogb3B0aW9ucy5oZWFkRXh0cmFzLFxuICAgIGFsbG93SGVhZEV4dHJhc1NjcmlwdHM6IG9wdGlvbnMuYWxsb3dIZWFkRXh0cmFzU2NyaXB0cyxcbiAgICBodG1sOiBvcHRpb25zLmh0bWwsXG4gICAgdXBncmFkZVN0cmF0ZWd5OiBvcHRpb25zLnVwZ3JhZGVTdHJhdGVneSB8fCAnaWRsZScsXG4gICAgY2xpZW50T25seVRhZ3M6IFtdLFxuICAgIGFwcFNoZWxsLFxuICAgIGxheW91dHMsXG4gIH0pO1xuICAvLyBEZW5vIGltcG9ydCBtYXAgcmVzb2x1dGlvbiBoYW5kbGVzIGJhcmUgc3BlY2lmaWVycyAoZS5nLiBAb3BlbmVsZW1lbnQvdWkvb3Blbi1jYWxsb3V0KVxuICAvLyB2aWEgdGhlIGNyZWF0ZURlbm9JbXBvcnRNYXBQbHVnaW4gYWRkZWQgdG8gdGhlIFBoYXNlIDMgdml0ZUJ1aWxkIHBsdWdpbnMgYmVsb3cuXG4gIGNvbnN0IHNzZ0VudHJ5Q29kZSA9IHJhd1NzZ0VudHJ5Q29kZTtcblxuICB0cnkge1xuICAgIGNvbnN0IHsgYnVpbGQ6IHZpdGVCdWlsZCB9ID0gYXdhaXQgaW1wb3J0KCd2aXRlJyk7XG5cbiAgICAvLyBTU1Igbm9FeHRlcm5hbDogcGFja2FnZXMgdGhhdCBNVVNUIGJlIGlubGluZWQgaW50byB0aGUgU1NSIGJ1bmRsZS5cbiAgICAvLyBXaXRob3V0IHRoZXNlLCB0aGUgU1NSIGJ1bmRsZSBjb250YWlucyBiYXJlIHNwZWNpZmllciBpbXBvcnRzIHRoYXQgY2Fubm90XG4gICAgLy8gYmUgcmVzb2x2ZWQgaW4gbm9uLXdvcmtzcGFjZSBlbnZpcm9ubWVudHMgKGUuZy4gQ0YgUGFnZXMpLCBjYXVzaW5nXG4gICAgLy8gaW1wb3J0KGVudHJ5LmpzKSB0byBmYWlsIGFuZCB0aGUgZW50aXJlIFNTRyBwaXBlbGluZSB0byBwcm9kdWNlIGVtcHR5IEhUTUwuXG4gICAgY29uc3QgZGVmYXVsdE5vRXh0ZXJuYWwgPSBbXG4gICAgICAvXkBvcGVuZWxlbWVudFxcLy8sXG4gICAgXTtcbiAgICAvLyBBRFItMDA0NzogRXh0ZXJuYWwgcGFja2FnZXMgYXJlIGV4dGVybmFsaXplZCwgbm90IGJ1bmRsZWQuXG4gICAgLy8gQURSLTAwNTQ6IEFTVC1iYXNlZCBleHBvcnRzIHJlc29sdXRpb24gY292ZXJzIEFMTCBzdWJwYXRoIGV4cG9ydHNcbiAgICAvLyBzbyBSb2xsZG93biBleHRlcm5hbGl6ZXMgdGhlbSBjb3JyZWN0bHkgdmlhIG1hbmlmZXN0LnNwZWNpZmllcnMuXG4gICAgLy8gQ29uc3VtZXIgdGVtcGxhdGUgZGVuby5qc29uIGRlY2xhcmVzIHRoZXNlIHBhY2thZ2VzIHNvIERlbm8gY2FuXG4gICAgLy8gcmVzb2x2ZSB0aGVtIGF0IHJ1bnRpbWUgd2hlbiBidWlsZFNTRygpIGV4ZWN1dGVzIGltcG9ydChlbnRyeS5qcykuXG4gICAgLy8gSG9ubyBzdGF5cyBleHRlcm5hbCB1bmxlc3MgdGhlIHVzZXIgZXhwbGljaXRseSByZXF1ZXN0cyBhZGFwdGVyLXNwZWNpZmljXG4gICAgLy8gYnVuZGxpbmcgdGhyb3VnaCBvcHRpb25zLnNzci5ub0V4dGVybmFsLlxuICAgIGNvbnN0IHNzckV4dGVybmFsRGVmYXVsdHMgPSBbXG4gICAgICAnaG9ubycsXG4gICAgXTtcblxuICAgIC8vIFN0ZXAgMDogRGVubyBwcmUtcmVzb2x1dGlvbiArIEFTVCBzdWJwYXRoIGRpc2NvdmVyeSAoQURSLTAwNDcgKyBBRFItMDA1NClcbiAgICBjb25zdCBtYW5pZmVzdCA9IGF3YWl0IHJlc29sdmVFeHRlcm5hbE1hbmlmZXN0KFxuICAgICAgc3NyRXh0ZXJuYWxEZWZhdWx0cyxcbiAgICAgIHJvb3QsXG4gICAgICBvcHRpb25zLnNraXBQcmVSZXNvbHV0aW9uIHx8IGN0eC5waGFzZTM/LnNraXBQcmVSZXNvbHV0aW9uLFxuICAgICk7XG5cbiAgICBjb25zdCB1c2VyTm9FeHRlcm5hbCA9IG9wdGlvbnMuc3NyPy5ub0V4dGVybmFsIHx8IFtdO1xuICAgIGNvbnN0IGFsbE5vRXh0ZXJuYWwgPSBbLi4uZGVmYXVsdE5vRXh0ZXJuYWwsIC4uLnVzZXJOb0V4dGVybmFsXTtcblxuICAgIC8vIEhhbmRsZSBhbGlhcyAtIHByZWZlciBDTEkgb3B0aW9ucywgdGhlbiBjdHggZnJvbSBQaGFzZSAxXG4gICAgY29uc3QgYWxpYXMgPSBtZXRhZGF0YVJlc29sdmVBbGlhcztcbiAgICBjb25zdCB2aXRlUmVzb2x2ZUFsaWFzID0gbm9ybWFsaXplVml0ZUFsaWFzZXMoYWxpYXMsIHJvb3QpO1xuICAgIGlmIChhbGlhcykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWxpYXMpKSB7XG4gICAgICAgIGZvciAoY29uc3QgYSBvZiBhbGlhcykge1xuICAgICAgICAgIGlmIChhLmZpbmQgPT09ICdAb3BlbmVsZW1lbnQvdWknKSB7XG4gICAgICAgICAgICAvLyB2MC4xNC42OiBDaGVjayBpZiByZXBsYWNlbWVudCBpcyBhbHJlYWR5IGNvdmVyZWQgYnkgZGVmYXVsdE5vRXh0ZXJuYWxcbiAgICAgICAgICAgIGNvbnN0IGlzQWxyZWFkeUNvdmVyZWQgPSBkZWZhdWx0Tm9FeHRlcm5hbC5zb21lKFxuICAgICAgICAgICAgICAocGF0dGVybjogc3RyaW5nIHwgUmVnRXhwKSA9PlxuICAgICAgICAgICAgICAgIHBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHAgJiYgcGF0dGVybi50ZXN0KGEucmVwbGFjZW1lbnQpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghaXNBbHJlYWR5Q292ZXJlZCkge1xuICAgICAgICAgICAgICBhbGxOb0V4dGVybmFsLnB1c2goYS5yZXBsYWNlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCdAb3BlbmVsZW1lbnQvdWknIGluIGFsaWFzKSB7XG4gICAgICAgIGNvbnN0IGlzQWxyZWFkeUNvdmVyZWQgPSBkZWZhdWx0Tm9FeHRlcm5hbC5zb21lKFxuICAgICAgICAgIChwYXR0ZXJuOiBzdHJpbmcgfCBSZWdFeHApID0+XG4gICAgICAgICAgICBwYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwICYmIHBhdHRlcm4udGVzdChhbGlhc1snQG9wZW5lbGVtZW50L3VpJ10pLFxuICAgICAgICApO1xuICAgICAgICBpZiAoIWlzQWxyZWFkeUNvdmVyZWQpIHtcbiAgICAgICAgICBhbGxOb0V4dGVybmFsLnB1c2goYWxpYXNbJ0BvcGVuZWxlbWVudC91aSddKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJ1aWxkIHRoZSBzZWxmLWNvbnRhaW5lZCBTU1IgYnVuZGxlIChBRFIgMDAwOCBQaGFzZSBDKVxuICAgIC8vIFJlcGxhY2VzIGNyZWF0ZVNlcnZlcigpICsgc3NyTG9hZE1vZHVsZSgpIHdpdGggdml0ZUJ1aWxkICsgaW1wb3J0KCkuXG4gICAgLy8gbm9FeHRlcm5hbCBlbnN1cmVzIGFsbCBkZXBlbmRlbmNpZXMgYXJlIGlubGluZWQgaW50byBhIHNpbmdsZSBidW5kbGUsXG4gICAgLy8gc28gbW9kdWxlLWxldmVsIHZhcmlhYmxlcyAoUGhhc2UgQikgYXJlIHNoYXJlZCBhY3Jvc3MgdGhlIGVudGlyZSBncmFwaC5cbiAgICBjb25zdCBzc3JPdXREaXIgPSBqb2luKHJvb3QsIG91dERpciwgJ3NlcnZlcicpO1xuICAgIGxvZy5pbmZvKGBCdWlsZGluZyBTU1IgYnVuZGxlIC0+ICR7c3NyT3V0RGlyfWApO1xuICAgIGNvbnN0IGNsaWVudE9ubHlJc2xhbmRJZHMgPSBuZXcgU2V0KFxuICAgICAgT2JqZWN0LmVudHJpZXMoc3NnSXNsYW5kTWV0YSlcbiAgICAgICAgLmZpbHRlcigoWywgbWV0YV0pID0+IG1ldGEuc3NyID09PSBmYWxzZSlcbiAgICAgICAgLm1hcCgoW3RhZ10pID0+IHtcbiAgICAgICAgICBjb25zdCBmaWxlID0gc3NnSXNsYW5kRmlsZXNbc3NnSXNsYW5kVGFnTmFtZXMuaW5kZXhPZih0YWcpXTtcbiAgICAgICAgICByZXR1cm4gZmlsZSA/IG5vcm1hbGl6ZVBhdGgocmVzb2x2ZShyb290LCBpc2xhbmRzRGlyLCBmaWxlKSkgOiAnJztcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKSxcbiAgICApO1xuICAgIC8vIHYwLjIxOiBCdWlsZCBmaWxlUGF0aCAtPiB0YWdOYW1lIG1hcCBmb3IgY2xpZW50LW9ubHkgcGxhY2Vob2xkZXIgZ2VuZXJhdGlvbi5cbiAgICBjb25zdCBjbGllbnRPbmx5VGFnTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBmb3IgKGNvbnN0IFt0YWcsIG1ldGFdIG9mIE9iamVjdC5lbnRyaWVzKHNzZ0lzbGFuZE1ldGEpKSB7XG4gICAgICBpZiAobWV0YS5zc3IgIT09IGZhbHNlKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IGZpbGUgPSBzc2dJc2xhbmRGaWxlc1tzc2dJc2xhbmRUYWdOYW1lcy5pbmRleE9mKHRhZyldO1xuICAgICAgaWYgKGZpbGUpIGNsaWVudE9ubHlUYWdNYXAuc2V0KG5vcm1hbGl6ZVBhdGgocmVzb2x2ZShyb290LCBpc2xhbmRzRGlyLCBmaWxlKSksIHRhZyk7XG4gICAgfVxuXG4gICAgLy8gdjAuMjEgU09QLTAwNDogQ29uZmxpY3QgZGV0ZWN0aW9uOiBzYW1lIHRhZyBtdXN0IG5vdCBiZSBib3RoIFNTUiBhbmQgY2xpZW50Om9ubHkuXG4gICAgY29uc3Qgc3NyVGFncyA9IG5ldyBTZXQoXG4gICAgICBPYmplY3QuZW50cmllcyhzc2dJc2xhbmRNZXRhKVxuICAgICAgICAuZmlsdGVyKChbLCBtZXRhXSkgPT4gbWV0YS5zc3IgIT09IGZhbHNlKVxuICAgICAgICAubWFwKChbdGFnXSkgPT4gdGFnKSxcbiAgICApO1xuICAgIGNvbnN0IGNvbmZsaWN0VGFncyA9IFsuLi5jbGllbnRPbmx5VGFnTWFwLnZhbHVlcygpXS5maWx0ZXIoKHQpID0+IHNzclRhZ3MuaGFzKHQpKTtcbiAgICBpZiAoY29uZmxpY3RUYWdzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFtvcGVuRWxlbWVudF0gU1NSK2NsaWVudDpvbmx5IGNvbmZsaWN0IGRldGVjdGVkIGZvciB0YWdzOiAke2NvbmZsaWN0VGFncy5qb2luKCcsICcpfS4gYCArXG4gICAgICAgICAgJ0EgdGFnIGNhbm5vdCBiZSBib3RoIFNTUi1jYXBhYmxlIGFuZCBjbGllbnQ6b25seSBvbiB0aGUgc2FtZSBwYWdlLicsXG4gICAgICApO1xuICAgIH1cblxuICAgIGF3YWl0IHZpdGVCdWlsZCh7XG4gICAgICBjb25maWdGaWxlOiBmYWxzZSxcbiAgICAgIHJvb3QsXG4gICAgICBsb2dMZXZlbDogJ2Vycm9yJyxcbiAgICAgIGJ1aWxkOiB7XG4gICAgICAgIHNzcjogdHJ1ZSxcbiAgICAgICAgb3V0RGlyOiBzc3JPdXREaXIsXG4gICAgICAgIGNodW5rU2l6ZVdhcm5pbmdMaW1pdDogU1NSX0NIVU5LX1NJWkVfV0FSTklOR19MSU1JVF9LQixcbiAgICAgICAgcm9sbHVwT3B0aW9uczoge1xuICAgICAgICAgIGlucHV0OiB7IGVudHJ5OiBWSVJUVUFMX1NTR19FTlRSWV9JRCB9LFxuICAgICAgICAgIC8vIHYwLjIxOiBTdXBwcmVzcyBJTVBPUlRfSVNfVU5ERUZJTkVEIGZvciByZXZhbGlkYXRlOyB0aGUgZ2VuZXJhdGVkXG4gICAgICAgICAgLy8gY29kZSB1c2VzIHR5cGVvZiBjaGVjayB3aGljaCBjb3JyZWN0bHkgaGFuZGxlcyB1bmRlZmluZWQgZXhwb3J0cy5cbiAgICAgICAgICBvbndhcm4od2FybmluZywgd2Fybikge1xuICAgICAgICAgICAgaWYgKHdhcm5pbmcuY29kZSA9PT0gJ0lNUE9SVF9JU19VTkRFRklORUQnKSByZXR1cm47XG4gICAgICAgICAgICB3YXJuKHdhcm5pbmcpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb3V0cHV0OiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICdlc20nLFxuICAgICAgICAgICAgLy8gV29ya3NwYWNlIHNvdXJjZXMgbWF5IHVzZSBleHBsaWNpdCBucG06IHNwZWNpZmllcnMgdGhhdCBSb2xsZG93blxuICAgICAgICAgICAgLy8gcmV3cml0ZXMgdG8gYmFyZSBpbXBvcnRzIHdoaWxlIGJ1bmRsaW5nLiBSZS1lbWl0IGtub3duIGV4dGVybmFsc1xuICAgICAgICAgICAgLy8gYXMgRGVuby1yZXNvbHZhYmxlIG5wbTogaW1wb3J0cyBmb3IgZnJlc2ggSlNSIGNvbnN1bWVycy5cbiAgICAgICAgICAgIHBhdGhzOiBTU1JfRVhURVJOQUxfUEFUSFMsXG4gICAgICAgICAgICAvLyBBRFItMDA0NDogY3VzdG9tRWxlbWVudHMgcG9seWZpbGwgbXVzdCBydW4gYmVmb3JlIEVTTSBpbXBvcnRzLlxuICAgICAgICAgICAgLy8gVXNlcyBNYXAtYmFja2VkIGRlZmluZSgpL2dldCgpOyByZW5kZXJEc2RCeU5hbWUoKSBsb29rcyB1cFxuICAgICAgICAgICAgLy8gY29tcG9uZW50cyB2aWEgY3VzdG9tRWxlbWVudHMuZ2V0KHRhZ05hbWUpIGR1cmluZyBTU0cgcmVuZGVyaW5nLlxuICAgICAgICAgICAgLy8gU09QLTAxNjogSFRNTEVsZW1lbnQgc3R1YiBpcyBzZWxmLWNvbnRhaW5lZCBpbiBAb3BlbmVsZW1lbnQvY29yZS9kc2QtZWxlbWVudC50cy5cbiAgICAgICAgICAgIGJhbm5lcjogYFxcXG5pZiAodHlwZW9mIGdsb2JhbFRoaXMuY3VzdG9tRWxlbWVudHMgPT09ICd1bmRlZmluZWQnKSB7XG4gIGNvbnN0IF9fb3BlbkNlUmVnaXN0cnkgPSBuZXcgTWFwKCk7XG4gIGdsb2JhbFRoaXMuY3VzdG9tRWxlbWVudHMgPSB7XG4gICAgZGVmaW5lKG5hbWUsIGN0b3IsIF9vcHRzKSB7IF9fb3BlbkNlUmVnaXN0cnkuc2V0KG5hbWUsIGN0b3IpOyB9LFxuICAgIGdldChuYW1lKSB7IHJldHVybiBfX29wZW5DZVJlZ2lzdHJ5LmdldChuYW1lKTsgfSxcbiAgICB3aGVuRGVmaW5lZChuYW1lKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoX19vcGVuQ2VSZWdpc3RyeS5nZXQobmFtZSkpOyB9LFxuICAgIHVwZ3JhZGUoX3Jvb3QpIHt9LFxuICB9O1xufVxuYCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNzcjogeyBub0V4dGVybmFsOiBhbGxOb0V4dGVybmFsLCBleHRlcm5hbDogbWFuaWZlc3Quc3BlY2lmaWVycyB9LFxuICAgICAgLy8gQURSIDAwMDggUGhhc2UgQTogSW5qZWN0IGhlYWRFeHRyYXMgdmlhIGRlZmluZSBpbnN0ZWFkIG9mIC5vcGVuRWxlbWVudC9oZWFkLWV4dHJhcy5odG1sXG4gICAgICAvLyBUaGUgZ2VuZXJhdGVkIGVudHJ5IGNvZGUgdXNlcyBfX0hFQURfRVhUUkFTX18gd2hpY2ggZ2V0cyByZXBsYWNlZFxuICAgICAgLy8gYXQgYnVpbGQgdGltZS4gVGhpcyBhdm9pZHMgdGhlIFZpdGUgU1NSIEFzeW5jRnVuY3Rpb24gc3ludGF4IGVycm9yc1xuICAgICAgLy8gdGhhdCBsYXJnZSBpbmxpbmUgc3RyaW5ncyAod2l0aCBiYWNrdGlja3MvJHt9KSBjYXVzZS5cbiAgICAgIGRlZmluZTogb3B0aW9ucy5oZWFkRXh0cmFzXG4gICAgICAgID8geyBfX0hFQURfRVhUUkFTX186IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMuaGVhZEV4dHJhcykgfVxuICAgICAgICA6IHsgX19IRUFEX0VYVFJBU19fOiAnXCJcIicgfSxcbiAgICAgIGVzYnVpbGQ6IHtcbiAgICAgICAgLy8gQURSLTAwNTc6IEpTWCBhdXRvbWF0aWMgcnVudGltZSwgc2FtZSByZWFzb24gYXMgYnVpbGQtY2xpZW50LnRzLlxuICAgICAgICAvLyBTU0cgYnVpbGQgYWxzbyBwcm9jZXNzZXMgLnRzeCBpc2xhbmQgZmlsZXMgZm9yIFNTUiByZW5kZXJpbmcuXG4gICAgICAgIGpzeDogJ2F1dG9tYXRpYycsXG4gICAgICAgIGpzeEltcG9ydFNvdXJjZTogJ0BvcGVuZWxlbWVudC9jb3JlJyxcbiAgICAgICAgdHNjb25maWdSYXc6IHtcbiAgICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAgIHVzZURlZmluZUZvckNsYXNzRmllbGRzOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgLy8gQURSIDAwMTA6IFZpcnR1YWwgU1NHIGVudHJ5IG1vZHVsZVxuICAgICAgICAvLyBSZXBsYWNlcyAub3BlbkVsZW1lbnQvLm9wZW5FbGVtZW50LXNzZy1lbnRyeS50cyBmaWxlIHdyaXRlXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnb3Blbjp2aXJ0dWFsLXNzZy1lbnRyeScsXG4gICAgICAgICAgcmVzb2x2ZUlkKGlkKSB7XG4gICAgICAgICAgICBpZiAoaWQgPT09IFZJUlRVQUxfU1NHX0VOVFJZX0lEKSByZXR1cm4gUkVTT0xWRURfU1NHX0VOVFJZX0lEO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgbG9hZChpZCkge1xuICAgICAgICAgICAgaWYgKGlkID09PSBSRVNPTFZFRF9TU0dfRU5UUllfSUQpIHJldHVybiBzc2dFbnRyeUNvZGU7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gQURSIDAwMDggUGhhc2UgQzogUHJvdmlkZSBzdHVicyBmb3IgcmV0YWluZWQgb3B0aW9uYWwgcGFja2FnZXMuXG4gICAgICAgIC8vIFRoZSBnZW5lcmF0ZWQgZW50cnkgY29kZSBjYW4gaW1wb3J0IEBvcGVuZWxlbWVudC9jb250ZW50IGFuZFxuICAgICAgICAvLyBAb3BlbmVsZW1lbnQvaTE4biwgYnV0IHRoZXNlIG1heSBub3QgYmUgaW5zdGFsbGVkLlxuICAgICAgICAvLyBUaGlzIHBsdWdpbiByZXNvbHZlcyB0aGVtIHRvIGVtcHR5IHN0dWJzIHdoZW4gbWlzc2luZywgc28gdGhlXG4gICAgICAgIC8vIHZpdGVCdWlsZCgpIHN1Y2NlZWRzIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggcGFja2FnZXMgYXJlIGF2YWlsYWJsZS5cbiAgICAgICAgb3B0aW9uYWxQYWNrYWdlU3R1YnNQbHVnaW4oKSxcbiAgICAgICAgY3JlYXRlR2VuZXJhdGVkRGF0YVJlc29sdmVyUGx1Z2luKHtcbiAgICAgICAgICByb290LFxuICAgICAgICAgIG5hbWU6ICdvcGVuOnNzZy1nZW5lcmF0ZWQtZGF0YScsXG4gICAgICAgIH0pLFxuICAgICAgICBjcmVhdGVPcGVuSnNyUGFja2FnZVJlc29sdmVyUGx1Z2luKHtcbiAgICAgICAgICB3b3Jrc3BhY2VSb290LFxuICAgICAgICAgIHZlcnNpb246IGdldEpzclBhY2thZ2VWZXJzaW9uKGltcG9ydC5tZXRhLnVybCksXG4gICAgICAgICAgbG9jYWxQYWNrYWdlUm9vdDogZ2V0TG9jYWxPcGVuRWxlbWVudFBhY2thZ2VSb290KGltcG9ydC5tZXRhLnVybCksXG4gICAgICAgICAgdXNlckFsaWFzZXM6IG1ldGFkYXRhUmVzb2x2ZUFsaWFzLFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdvcGVuOnNzZy1jbGllbnQtb25seS1pc2xhbmQtc3R1YnMnLFxuICAgICAgICAgIGVuZm9yY2U6ICdwcmUnLFxuICAgICAgICAgIGxvYWQoaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVQYXRoKGlkLnNwbGl0KCc/JylbMF0pO1xuICAgICAgICAgICAgaWYgKCFjbGllbnRPbmx5SXNsYW5kSWRzLmhhcyhub3JtYWxpemVkKSkgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgdGFnTmFtZSA9IGNsaWVudE9ubHlUYWdNYXAuZ2V0KG5vcm1hbGl6ZWQpIHx8ICdvcGVuLWNsaWVudC1vbmx5LXN0dWInO1xuICAgICAgICAgICAgLy8gQ2xpZW50LW9ubHkgc3R1YiBtYXJrZXIgdXNlcyBhbiB1bmJyYW5kZWQgYXR0cmlidXRlLlxuICAgICAgICAgICAgLy8gU1NSIG91dHB1dHMgPHRhZy1uYW1lIGRhdGEtY2xpZW50LW9ubHk9XCJ0cnVlXCI+PC90YWctbmFtZT5cbiAgICAgICAgICAgIC8vIENsaWVudCBydW50aW1lIGltcG9ydHMgdGhlIHJlYWwgbW9kdWxlIGFuZCB1cGdyYWRlcyB0aGUgZWxlbWVudC5cbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgIGBpbXBvcnQgeyBkZWZpbmVJc2xhbmRDb25maWcgfSBmcm9tICdAb3BlbmVsZW1lbnQvYXBwJztgLFxuICAgICAgICAgICAgICBgZXhwb3J0IGNvbnN0IHRhZ05hbWUgPSAke0pTT04uc3RyaW5naWZ5KHRhZ05hbWUpfTtgLFxuICAgICAgICAgICAgICAnZXhwb3J0IGNvbnN0IG9wZW5FbGVtZW50ID0gZGVmaW5lSXNsYW5kQ29uZmlnKHsgc3NyOiBmYWxzZSB9KTsnLFxuICAgICAgICAgICAgICBgZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3BlbkNsaWVudE9ubHlTdHViIGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICBjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICBpZiAoIXRoaXMuaGFzQXR0cmlidXRlKCdkYXRhLWNsaWVudC1vbmx5JykpIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkYXRhLWNsaWVudC1vbmx5JywgJ3RydWUnKTtcbiAgICB9XG4gIH1cbn1gLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHJlc29sdmU6IHtcbiAgICAgICAgcHJlc2VydmVTeW1saW5rczogdHJ1ZSxcbiAgICAgICAgZXh0ZW5zaW9uczogWycudHMnLCAnLnRzeCcsICcuanMnLCAnLmpzeCcsICcuanNvbiddLFxuICAgICAgICAuLi4odml0ZVJlc29sdmVBbGlhcyA/IHsgYWxpYXM6IHZpdGVSZXNvbHZlQWxpYXMgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgbG9nLmluZm8oJ1NTUiBidW5kbGUgYnVpbHQgc3VjY2Vzc2Z1bGx5Jyk7XG5cbiAgICAvLyBMb2FkIHRoZSBTU1IgYnVuZGxlIGFuZCBydW4gU1NHIHJlbmRlcmluZyBwaXBlbGluZVxuICAgIGNvbnN0IHNzckJ1bmRsZVBhdGggPSByZXNvbHZlKHNzck91dERpciwgJ2VudHJ5LmpzJyk7XG4gICAgLy8gTS0xOCBmaXg6IFVzZSBwcm9jZXNzLnBsYXRmb3JtIGluc3RlYWQgb2YgRGVuby5idWlsZC5vcyBmb3IgTm9kZS5qcyBjb21wYXRcbiAgICBjb25zdCBpc1dpbmRvd3MgPSB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJztcbiAgICBjb25zdCBzc3JCdW5kbGVVcmwgPSBpc1dpbmRvd3NcbiAgICAgID8gJ2ZpbGU6Ly8vJyArIHNzckJ1bmRsZVBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpXG4gICAgICA6ICdmaWxlOi8vJyArIHNzckJ1bmRsZVBhdGg7XG4gICAgY29uc3QgbW9kdWxlID0gYXdhaXQgaW1wb3J0KHNzckJ1bmRsZVVybCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICBpZiAoIW1vZHVsZS5kZWZhdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgU3NyUmVuZGVyRXJyb3IoJ3ZpcnR1YWw6b3Blbi1zc2ctZW50cnknLCBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBsb2FkIEhvbm8gYXBwJykpO1xuICAgIH1cblxuICAgIC8vIERlbGVnYXRlIHRvIHNoYXJlZCBzc2dSZW5kZXIoKSAtIHplcm8gVml0ZSBkZXBlbmRlbmN5IGZyb20gdGhpcyBwb2ludFxuICAgIGF3YWl0IHNzZ1JlbmRlcihcbiAgICAgIG1vZHVsZSBhcyBQYXJhbWV0ZXJzPHR5cGVvZiBzc2dSZW5kZXI+WzBdLFxuICAgICAge1xuICAgICAgICByb290LFxuICAgICAgICBvdXREaXIsXG4gICAgICAgIGJhc2U6IG9wdGlvbnMuYmFzZSB8fCAnLycsXG4gICAgICAgIGhlYWRFeHRyYXM6IG9wdGlvbnMuaGVhZEV4dHJhcyxcbiAgICAgICAgaHRtbDogb3B0aW9ucy5odG1sLFxuICAgICAgICBtaWRkbGV3YXJlOiBvcHRpb25zLm1pZGRsZXdhcmUsXG4gICAgICAgIGlzbGFuZFRhZ05hbWVzOiBzc2dJc2xhbmRUYWdOYW1lcyxcbiAgICAgICAgdmlld1RyYW5zaXRpb246IG9wdGlvbnMudmlld1RyYW5zaXRpb24sXG4gICAgICAgIHNwZWN1bGF0aW9uOiBvcHRpb25zLnNwZWN1bGF0aW9uIGFzIGJvb2xlYW4gfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBjcmVhdGVTc2dSZW5kZXJFdmlkZW5jZShjdHgpLFxuICAgICk7XG5cbiAgICBsb2cuaW5mbygnU3RhdGljIHNpdGUgZ2VuZXJhdGVkIC0+ICcgKyBqb2luKHJvb3QsIG91dERpcikpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zdCBjYXVzZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyIDogbmV3IEVycm9yKFN0cmluZyhlcnIpKTtcbiAgICB0aHJvdyBuZXcgU3NyUmVuZGVyRXJyb3IoJ1NTRyBwaXBlbGluZScsIGNhdXNlKTtcbiAgfVxufVxuXG5leHBvcnQgeyBidWlsZFNTRyB9O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztDQWNDLEdBRUQsU0FBUyxJQUFJLEVBQUUsT0FBTyxRQUFRLFlBQVk7QUFDMUMsU0FBUyxhQUFhLFFBQVEsV0FBVztBQUN6QyxTQUFTLGFBQWEsUUFBUSxPQUFPO0FBQ3JDLE9BQU8sYUFBYSxlQUFlO0FBQ25DLFNBQVMsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxRQUFRLFVBQVU7QUFJN0UsU0FBUyxTQUFTLFFBQVEsbUJBQW1CO0FBQzdDLFNBQVMsY0FBYyxRQUFRLDJCQUEyQjtBQUMxRCxTQUFTLFlBQVksUUFBUSwyQkFBMkI7QUFDeEQsU0FBUyx1QkFBdUIsUUFBUSxrQkFBa0I7QUFDMUQsU0FBUyxpQ0FBaUMsUUFBUSxnQ0FBZ0M7QUFDbEYsU0FBUyxrQ0FBa0MsUUFBUSw2QkFBNkI7QUFDaEYsU0FBUyx5QkFBeUIsRUFBRSx1QkFBdUIsUUFBUSxtQkFBbUI7QUFDdEYsU0FBUywwQkFBMEIsUUFBUSxlQUFlO0FBQzFELFNBQVMsb0JBQW9CLFFBQVEsb0JBQW9CO0FBRXpELDhFQUE4RSxHQUM5RSxNQUFNLG1DQUFtQztBQUV6Qyw0REFBNEQsR0FDNUQsTUFBTSxrQ0FBa0M7QUFF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
|
package/src/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Runtime code (renderDsd, defineIsland, escapeHtml, etc.) lives in @openelement/core.
|
|
12
12
|
* This package only contains Vite-specific build orchestration.
|
|
13
13
|
*
|
|
14
|
-
* For the unified openElement() entry, use @openelement/
|
|
14
|
+
* For the unified openElement() entry, use @openelement/adapter-vite.
|
|
15
15
|
*
|
|
16
16
|
* v0.22 (SOP-004): Decomposed into focused modules:
|
|
17
17
|
* head-injection.ts - HTML fragment validation & serialization
|
|
@@ -41,6 +41,7 @@ export interface OpenPipelineConfig {
|
|
|
41
41
|
headExtras?: string;
|
|
42
42
|
}
|
|
43
43
|
export declare function openPipeline(config?: OpenPipelineConfig): Plugin[];
|
|
44
|
+
export { openElement, type OpenElementOptions } from "./app-vite.js";
|
|
44
45
|
export type { FrameworkOptions };
|
|
45
46
|
export { OpenElementBuildContext } from "./build-context.js";
|
|
46
47
|
export type { ArtifactInfo, BuildManifest } from "./build-manifest.js";
|
package/src/index.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Runtime code (renderDsd, defineIsland, escapeHtml, etc.) lives in @openelement/core.
|
|
12
12
|
* This package only contains Vite-specific build orchestration.
|
|
13
13
|
*
|
|
14
|
-
* For the unified openElement() entry, use @openelement/
|
|
14
|
+
* For the unified openElement() entry, use @openelement/adapter-vite.
|
|
15
15
|
*
|
|
16
16
|
* v0.22 (SOP-004): Decomposed into focused modules:
|
|
17
17
|
* head-injection.ts - HTML fragment validation & serialization
|
|
@@ -34,6 +34,7 @@ export function openPipeline(config = {}) {
|
|
|
34
34
|
};
|
|
35
35
|
return createOpenPlugin(options);
|
|
36
36
|
}
|
|
37
|
+
export { openElement } from './app-vite.js';
|
|
37
38
|
// Build context
|
|
38
39
|
export { OpenElementBuildContext } from './build-context.js';
|
|
39
40
|
export { printBuildManifest, scanClientBuild, scanSSGOutput } from './build-manifest.js';
|
|
@@ -49,4 +50,4 @@ export { mdxPlugin, openMdx } from './plugin-mdx.js';
|
|
|
49
50
|
export { createOpenElementNitroHandler } from './nitro-mount.js';
|
|
50
51
|
// Default export
|
|
51
52
|
export { openPipeline as default };
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9hZGFwdGVyLXZpdGUvc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG9wZW5lbGVtZW50L2FkYXB0ZXItdml0ZSAtIFZpdGUgYnVpbGQgb3JjaGVzdHJhdGlvbiBhZGFwdGVyLlxuICpcbiAqIFByb3ZpZGVzIHRoZSBgb3BlblBpcGVsaW5lKClgIFZpdGUgcGx1Z2luIHRoYXQgaGFuZGxlczpcbiAqIC0gUm91dGUgc2Nhbm5pbmcgYW5kIHZpcnR1YWwgSG9ubyBlbnRyeSBnZW5lcmF0aW9uXG4gKiAtIERldiBzZXJ2ZXIgaW50ZWdyYXRpb24gdmlhIEBob25vL3ZpdGUtZGV2LXNlcnZlclxuICogLSBJc2xhbmQgbWFya2luZyB0cmFuc2Zvcm1cbiAqIC0gU1NHIGJ1aWxkIHBpcGVsaW5lIChQaGFzZSAxLzIvMylcbiAqIC0gQ29yZSBzdWJwYXRoIHJlc29sdXRpb24gKEFEUiAwMDE2KVxuICpcbiAqIFJ1bnRpbWUgY29kZSAocmVuZGVyRHNkLCBkZWZpbmVJc2xhbmQsIGVzY2FwZUh0bWwsIGV0Yy4pIGxpdmVzIGluIEBvcGVuZWxlbWVudC9jb3JlLlxuICogVGhpcyBwYWNrYWdlIG9ubHkgY29udGFpbnMgVml0ZS1zcGVjaWZpYyBidWlsZCBvcmNoZXN0cmF0aW9uLlxuICpcbiAqIEZvciB0aGUgdW5pZmllZCBvcGVuRWxlbWVudCgpIGVudHJ5LCB1c2UgQG9wZW5lbGVtZW50L2FkYXB0ZXItdml0ZS5cbiAqXG4gKiB2MC4yMiAoU09QLTAwNCk6IERlY29tcG9zZWQgaW50byBmb2N1c2VkIG1vZHVsZXM6XG4gKiAgIGhlYWQtaW5qZWN0aW9uLnRzICAgICAgLSBIVE1MIGZyYWdtZW50IHZhbGlkYXRpb24gJiBzZXJpYWxpemF0aW9uXG4gKiAgIHBsdWdpbi50cyAgICAgICAgICAgICAgLSBJbnRlcm5hbCBwbHVnaW4gZmFjdG9yeSAodXNlZCBieSBvcGVuUGlwZWxpbmUpXG4gKiAgIHN1YnBhdGgtcmVzb2x2ZXIudHMgICAgLSBKU1IgcmVtb3RlIHJlc29sdXRpb24gKEFEUiAwMDE2KVxuICogICBnZW5lcmF0ZWQtZGF0YS1yZXNvbHZlci50cyAtIEdlbmVyYXRlZCBhcHAgZGF0YSBuYW1lc3BhY2UgcmVzb2x2ZXJcbiAqXG4gKiBUaGlzIGZpbGUgaXMgbm93IGEgcHVyZSByZS1leHBvcnQgaHViICh+NjAgbGluZXMpLlxuICovXG5cbi8vIFByaW1hcnkgcHVibGljIEFQSVxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICd2aXRlJztcbmltcG9ydCB0eXBlIHsgRnJhbWV3b3JrT3B0aW9ucyB9IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9mcmFtZXdvcmsnO1xuaW1wb3J0IHsgY3JlYXRlT3BlblBsdWdpbiB9IGZyb20gJy4vcGx1Z2luLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBPcGVuUGlwZWxpbmVDb25maWcge1xuICByb3V0ZXM/OiB7IGRpcj86IHN0cmluZyB9O1xuICBpMThuPzogeyBsb2NhbGVzOiBzdHJpbmdbXTsgZGVmYXVsdExvY2FsZT86IHN0cmluZyB9O1xuICBvdXRwdXQ/OiB7IG91dERpcj86IHN0cmluZyB9O1xuICBpc2xhbmQ/OiB7IGRpcj86IHN0cmluZzsgdXBncmFkZVN0cmF0ZWd5Pzogc3RyaW5nIH07XG4gIHZpZXdUcmFuc2l0aW9uPzogYm9vbGVhbjtcbiAgaGVhZEV4dHJhcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5QaXBlbGluZShjb25maWc6IE9wZW5QaXBlbGluZUNvbmZpZyA9IHt9KTogUGx1Z2luW10ge1xuICBjb25zdCBvcHRpb25zOiBGcmFtZXdvcmtPcHRpb25zID0ge1xuICAgIHJvdXRlc0RpcjogY29uZmlnLnJvdXRlcz8uZGlyIHx8ICdhcHAvcm91dGVzJyxcbiAgICBpc2xhbmRzRGlyOiBjb25maWcuaXNsYW5kPy5kaXIgfHwgJ2FwcC9pc2xhbmRzJyxcbiAgICBjb21wb25lbnRzRGlyOiAnYXBwL2NvbXBvbmVudHMnLFxuICAgIHZpZXdUcmFuc2l0aW9uOiBjb25maWcudmlld1RyYW5zaXRpb24gPz8gdHJ1ZSxcbiAgICBoZWFkRXh0cmFzOiBjb25maWcuaGVhZEV4dHJhcyxcbiAgICBpc2xhbmQ6IGNvbmZpZy5pc2xhbmQgYXMgRnJhbWV3b3JrT3B0aW9uc1snaXNsYW5kJ10sXG4gICAgYnVpbGQ6IGNvbmZpZy5vdXRwdXQgYXMgRnJhbWV3b3JrT3B0aW9uc1snYnVpbGQnXSxcbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZU9wZW5QbHVnaW4ob3B0aW9ucyk7XG59XG5cbmV4cG9ydCB7IG9wZW5FbGVtZW50LCB0eXBlIE9wZW5FbGVtZW50T3B0aW9ucyB9IGZyb20gJy4vYXBwLXZpdGUuanMnO1xuXG5leHBvcnQgdHlwZSB7IEZyYW1ld29ya09wdGlvbnMgfTtcblxuLy8gQnVpbGQgY29udGV4dFxuZXhwb3J0IHsgT3BlbkVsZW1lbnRCdWlsZENvbnRleHQgfSBmcm9tICcuL2J1aWxkLWNvbnRleHQuanMnO1xuXG4vLyBCdWlsZCBtYW5pZmVzdFxuZXhwb3J0IHR5cGUgeyBBcnRpZmFjdEluZm8sIEJ1aWxkTWFuaWZlc3QgfSBmcm9tICcuL2J1aWxkLW1hbmlmZXN0LmpzJztcbmV4cG9ydCB7IHByaW50QnVpbGRNYW5pZmVzdCwgc2NhbkNsaWVudEJ1aWxkLCBzY2FuU1NHT3V0cHV0IH0gZnJvbSAnLi9idWlsZC1tYW5pZmVzdC5qcyc7XG5cbi8vIFNTRyBwb3N0LXByb2Nlc3NpbmcgJiBpc2xhbmQgbWFuaWZlc3RzIChhZGFwdGVyLXZpdGUgaW50ZXJuYWwgYnVpbGQgaGVscGVycylcbmV4cG9ydCB7XG4gIGJ1aWxkSXNsYW5kQ2h1bmtNYXAsXG4gIGJ1aWxkU3BlY3VsYXRpb25SdWxlc0pzb24sXG4gIGV4dHJhY3RDdXN0b21FbGVtZW50VGFncyxcbiAgZ2VuZXJhdGVJc2xhbmRNYW5pZmVzdHMsXG4gIGluamVjdENsaWVudFNjcmlwdCxcbiAgaW5qZWN0Q3NwTWV0YSxcbiAgaW5qZWN0RHNkUG9seWZpbGwsXG4gIGluamVjdFNwZWN1bGF0aW9uUnVsZXMsXG4gIGluamVjdFZpZXdUcmFuc2l0aW9uTWV0YSxcbiAgaW5zZXJ0QWZ0ZXJIZWFkLFxuICB0eXBlIElzbGFuZExheWVyTWFwLFxuICB0eXBlIElzbGFuZE1hbmlmZXN0RW50cnksXG4gIHR5cGUgSXNsYW5kU3RyYXRlZ3lNYXAsXG4gIHR5cGUgUGFnZUlzbGFuZE1hbmlmZXN0LFxuICB3cml0ZUlzbGFuZE1hbmlmZXN0cyxcbn0gZnJvbSAnQG9wZW5lbGVtZW50L3NzZyc7XG5cbi8vIFByb3RvY29sIHR5cGUgcmUtZXhwb3J0c1xuZXhwb3J0IHR5cGUgeyBTcGVjdWxhdGlvblJ1bGVzT3B0aW9ucyB9IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9zc2cnO1xuXG4vLyBFeHRlcm5hbCByZXNvbHZlciB0eXBlcyB1c2VkIGJ5IHRoZSBhZGFwdGVyLXZpdGUgYnVpbGQgcGlwZWxpbmVcbmV4cG9ydCB0eXBlIHsgRXh0ZXJuYWxNYW5pZmVzdCB9IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9zc2cnO1xuXG4vLyBTdWJwYXRoIHJlc29sdmVyIChwdWJsaWMgY29uc3RhbnRzKVxuZXhwb3J0IHsgQ09SRV9TVUJQQVRIUywgVklSVFVBTF9DT1JFX1BSRUZJWCB9IGZyb20gJy4vc3VicGF0aC1yZXNvbHZlci5qcyc7XG5cbi8vIEhlYWQgaW5qZWN0aW9uIChwdWJsaWMgaGVscGVycylcbmV4cG9ydCB7IGFzc2VydE5vU2NyaXB0VGFncywgYnVpbGRIZWFkRXh0cmFzLCB2YWxpZGF0ZVNhZmVVcmwgfSBmcm9tICcuL2hlYWQtaW5qZWN0aW9uLmpzJztcbmV4cG9ydCB0eXBlIHsgSGVhZEV4dHJhc1Jlc3VsdCB9IGZyb20gJy4vaGVhZC1pbmplY3Rpb24uanMnO1xuXG4vLyBNRFggaW50ZWdyYXRpb25cbmV4cG9ydCB7IG1keFBsdWdpbiwgb3Blbk1keCB9IGZyb20gJy4vcGx1Z2luLW1keC5qcyc7XG5leHBvcnQgdHlwZSB7IE9wZW5NZHhQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi9wbHVnaW4tbWR4LmpzJztcblxuLy8gTml0cm8gcnVudGltZSBwcm9vZiBib3VuZGFyeVxuZXhwb3J0IHsgY3JlYXRlT3BlbkVsZW1lbnROaXRyb0hhbmRsZXIgfSBmcm9tICcuL25pdHJvLW1vdW50LmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgTml0cm9MaWtlUmVxdWVzdEV2ZW50LFxuICBOaXRyb0xpa2VSZXNwb25zZSxcbiAgT3BlbkVsZW1lbnROaXRyb01vdW50T3B0aW9ucyxcbn0gZnJvbSAnLi9uaXRyby1tb3VudC5qcyc7XG5cbi8vIERlZmF1bHQgZXhwb3J0XG5leHBvcnQgeyBvcGVuUGlwZWxpbmUgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0JDLEdBRUQscUJBQXFCO0FBR3JCLFNBQVMsZ0JBQWdCLFFBQVEsY0FBYztBQVcvQyxPQUFPLFNBQVMsYUFBYSxTQUE2QixDQUFDLENBQUM7RUFDMUQsTUFBTSxVQUE0QjtJQUNoQyxXQUFXLE9BQU8sTUFBTSxFQUFFLE9BQU87SUFDakMsWUFBWSxPQUFPLE1BQU0sRUFBRSxPQUFPO0lBQ2xDLGVBQWU7SUFDZixnQkFBZ0IsT0FBTyxjQUFjLElBQUk7SUFDekMsWUFBWSxPQUFPLFVBQVU7SUFDN0IsUUFBUSxPQUFPLE1BQU07SUFDckIsT0FBTyxPQUFPLE1BQU07RUFDdEI7RUFDQSxPQUFPLGlCQUFpQjtBQUMxQjtBQUVBLFNBQVMsV0FBVyxRQUFpQyxnQkFBZ0I7QUFJckUsZ0JBQWdCO0FBQ2hCLFNBQVMsdUJBQXVCLFFBQVEscUJBQXFCO0FBSTdELFNBQVMsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLGFBQWEsUUFBUSxzQkFBc0I7QUFFekYsK0VBQStFO0FBQy9FLFNBQ0UsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6Qix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0Qix3QkFBd0IsRUFDeEIsZUFBZSxFQUtmLG9CQUFvQixRQUNmLG1CQUFtQjtBQVExQixzQ0FBc0M7QUFDdEMsU0FBUyxhQUFhLEVBQUUsbUJBQW1CLFFBQVEsd0JBQXdCO0FBRTNFLGtDQUFrQztBQUNsQyxTQUFTLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxlQUFlLFFBQVEsc0JBQXNCO0FBRzNGLGtCQUFrQjtBQUNsQixTQUFTLFNBQVMsRUFBRSxPQUFPLFFBQVEsa0JBQWtCO0FBR3JELCtCQUErQjtBQUMvQixTQUFTLDZCQUE2QixRQUFRLG1CQUFtQjtBQU9qRSxpQkFBaUI7QUFDakIsU0FBUyxnQkFBZ0IsT0FBTyxHQUFHIn0=
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Deno } from "@deno/shim-deno";
|
|
2
1
|
import { readFile } from 'node:fs/promises';
|
|
3
2
|
import { formatError } from '@openelement/core/errors';
|
|
4
3
|
const VIRTUAL_OPENELEMENT_PACKAGE_PREFIX = '\0openelement:ssg-pkg/';
|
|
@@ -253,4 +252,4 @@ function rewriteNpmSpecifiers(source) {
|
|
|
253
252
|
return `${prefix}${quote}${pkg}${subpath ?? ''}${quote}`;
|
|
254
253
|
});
|
|
255
254
|
}
|
|
256
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9hZGFwdGVyLXZpdGUvc3JjL3NzZy1wYWNrYWdlLXJlc29sdmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlbm8gfSBmcm9tIFwiQGRlbm8vc2hpbS1kZW5vXCI7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHR5cGUgeyBBbGlhcywgUGx1Z2luIH0gZnJvbSAndml0ZSc7XG5pbXBvcnQgeyBmb3JtYXRFcnJvciB9IGZyb20gJ0BvcGVuZWxlbWVudC9jb3JlL2Vycm9ycyc7XG5cbmNvbnN0IFZJUlRVQUxfT1BFTkVMRU1FTlRfUEFDS0FHRV9QUkVGSVggPSAnXFwwb3BlbmVsZW1lbnQ6c3NnLXBrZy8nO1xuLy8gUGFja2FnZXMgcmVzb2x2ZWQgYnkgdGhpcyBwbHVnaW4gZm9yIEpTUiBjb25zdW1lciBTU0cgYnVpbGRzLlxuLy8gUmV0YWluZWQgb3B0aW9uYWwgcGFja2FnZXMgKGNvbnRlbnQsIGkxOG4pIGFyZSBoYW5kbGVkIGJ5IG9wdGlvbmFsUGFja2FnZVN0dWJzUGx1Z2luXG4vLyBpbiBidWlsZC1zc2cudHMgaW5zdGVhZC4gVGhlIHJlc29sdmVyIG11c3QgTk9UIGludGVyY2VwdCB0aGVtLCBiZWNhdXNlIGl0IHJ1bnNcbi8vIGVuZm9yY2U6ICdwcmUnIGFuZCB3b3VsZCBwcmV2ZW50IHRoZSBzdHVicyBwbHVnaW4gZnJvbSBwcm92aWRpbmcgZW1wdHkgc3R1YnNcbi8vIHdoZW4gcGFja2FnZXMgYXJlIGFic2VudC5cbmNvbnN0IERFRkFVTFRfT1BFTkVMRU1FTlRfUEFDS0FHRVMgPSBuZXcgU2V0KFtcbiAgJ2FkYXB0ZXItdml0ZScsXG4gICdhcHAnLFxuICAnY29yZScsXG4gICdjcmVhdGUnLFxuICAnZWxlbWVudCcsXG4gICdyb3V0ZXInLFxuICAnc2lnbmFsJyxcbiAgJ3VpJyxcbl0pO1xuXG5jb25zdCBPUEVORUxFTUVOVF9FWFBPUlRfRklMRVM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICAnYWRhcHRlci12aXRlJzoge1xuICAgICcuJzogJ3NyYy9pbmRleC50cycsXG4gICAgJ2J1aWxkLWNvbnRleHQnOiAnc3JjL2J1aWxkLWNvbnRleHQudHMnLFxuICAgICdoZWFkLWluamVjdGlvbic6ICdzcmMvaGVhZC1pbmplY3Rpb24udHMnLFxuICAgICduaXRyby1tb3VudCc6ICdzcmMvbml0cm8tbW91bnQudHMnLFxuICAgIHBsdWdpbjogJ3NyYy9wbHVnaW4udHMnLFxuICAgICdzdWJwYXRoLXJlc29sdmVyJzogJ3NyYy9zdWJwYXRoLXJlc29sdmVyLnRzJyxcbiAgICAnZ2VuZXJhdGVkLWRhdGEtcmVzb2x2ZXInOiAnc3JjL2dlbmVyYXRlZC1kYXRhLXJlc29sdmVyLnRzJyxcbiAgICAncGx1Z2luLW1keCc6ICdzcmMvcGx1Z2luLW1keC50cycsXG4gICAgJ2NsaS9idWlsZCc6ICdzcmMvY2xpL2J1aWxkLnRzJyxcbiAgICAnY2xpL2J1aWxkLWNsaWVudCc6ICdzcmMvY2xpL2J1aWxkLWNsaWVudC50cycsXG4gICAgJ2NsaS9idWlsZC1zc2cnOiAnc3JjL2NsaS9idWlsZC1zc2cudHMnLFxuICB9LFxuICBhcHA6IHtcbiAgICAnLic6ICdzcmMvaW5kZXgudHMnLFxuICAgIGkxOG46ICdzcmMvaTE4bi50cycsXG4gICAgJ2kxOG4tcGx1Z2luJzogJ3NyYy9pMThuLXBsdWdpbi50cycsXG4gICAgcHJlYWN0OiAnc3JjL3ByZWFjdC50cycsXG4gICAgdml0ZTogJ3NyYy92aXRlLnRzJyxcbiAgfSxcbiAgY29udGVudDoge1xuICAgICcuJzogJ3NyYy9pbmRleC50cycsXG4gICAgJ2Jsb2ctZGF0YSc6ICdzcmMvYmxvZy9ibG9nLWRhdGEudHMnLFxuICAgIG1keDogJ3NyYy9tZHgvY29tcGlsZS50cycsXG4gICAgbmF2OiAnc3JjL25hdi9zY2FubmVyLnRzJyxcbiAgICAnbmF2LWRhdGEnOiAnc3JjL25hdi93cml0ZXIudHMnLFxuICAgIHNpdGVtYXA6ICdzcmMvc2l0ZW1hcC9nZW5lcmF0b3IudHMnLFxuICB9LFxuICBjb3JlOiB7XG4gICAgJy4nOiAnc3JjL2luZGV4LnRzJyxcbiAgICBjb250ZXh0OiAnc3JjL2NvbnRleHQudHMnLFxuICAgIGRhdGE6ICdzcmMvZGF0YS50cycsXG4gICAgJ2RzZC1oeWRyYXRpb24nOiAnc3JjL2RzZC1oeWRyYXRpb24udHMnLFxuICAgIGVycm9yczogJ3NyYy9lcnJvcnMudHMnLFxuICAgICdodG1sLWVzY2FwZSc6ICdzcmMvaHRtbC1lc2NhcGUudHMnLFxuICAgICdpc2xhbmQtdHJhbnNmb3JtJzogJ3NyYy9pc2xhbmQtdHJhbnNmb3JtLnRzJyxcbiAgICBpc3I6ICdzcmMvaXNyLnRzJyxcbiAgICAnaXNyLXJ1bnRpbWUnOiAnc3JjL2lzci1ydW50aW1lLnRzJyxcbiAgICAnanN4LXJ1bnRpbWUnOiAnc3JjL2pzeC1ydW50aW1lLnRzJyxcbiAgICAnanN4LWRldi1ydW50aW1lJzogJ3NyYy9qc3gtcnVudGltZS50cycsXG4gICAgbG9nZ2VyOiAnc3JjL2xvZ2dlci50cycsXG4gICAgcHJvcDogJ3NyYy9wcm9wLnRzJyxcbiAgICAncmVuZGVyLWRzZC1zdHJlYW0nOiAnc3JjL3JlbmRlci1kc2Qtc3RyZWFtLnRzJyxcbiAgICBydW50aW1lOiAnc3JjL3J1bnRpbWUudHMnLFxuICAgICdzaWduYWwtY29udGV4dCc6ICdzcmMvc2lnbmFsLWNvbnRleHQudHMnLFxuICAgICdzdHlsZS1zaGVldCc6ICdzcmMvc3R5bGUtc2hlZXQudHMnLFxuICAgICd0YWctdXRpbHMnOiAnc3JjL3RhZy11dGlscy50cycsXG4gIH0sXG4gIGNyZWF0ZTogeyAnLic6ICdjbGkudHMnIH0sXG4gIGVsZW1lbnQ6IHtcbiAgICAnLic6ICdzcmMvaW5kZXgudHMnLFxuICB9LFxuICByb3V0ZXI6IHtcbiAgICAnLic6ICdzcmMvZGF0YS1jb250ZXh0LnRzJyxcbiAgICAnZGF0YS1jb250ZXh0JzogJ3NyYy9kYXRhLWNvbnRleHQudHMnLFxuICAgIGkxOG46ICdzcmMvaTE4bi50cycsXG4gIH0sXG4gIHNpZ25hbDoge1xuICAgICcuJzogJ3NyYy9pbmRleC50cycsXG4gICAgZnJhbWV3b3JrOiAnc3JjL2ZyYW1ld29yay50cycsXG4gICAgJ3ByZWFjdC1lbmdpbmUnOiAnc3JjL3ByZWFjdC1lbmdpbmUudHMnLFxuICB9LFxuICBzc2c6IHtcbiAgICAnLic6ICdzcmMvaW5kZXgudHMnLFxuICB9LFxuICB1aToge1xuICAgICcuJzogJ3NyYy9pbmRleC50cycsXG4gICAgJ29wZW4tYnV0dG9uJzogJ3NyYy9vcGVuLWJ1dHRvbi50c3gnLFxuICAgICdvcGVuLWNhbGxvdXQnOiAnc3JjL29wZW4tY2FsbG91dC50c3gnLFxuICAgICdvcGVuLWNhcmQnOiAnc3JjL29wZW4tY2FyZC50c3gnLFxuICAgICdvcGVuLWNvZGUtYmxvY2snOiAnc3JjL29wZW4tY29kZS1ibG9jay50c3gnLFxuICAgICdvcGVuLWRpYWxvZyc6ICdzcmMvb3Blbi1kaWFsb2cudHN4JyxcbiAgICAnb3Blbi1kcm9wZG93bic6ICdzcmMvb3Blbi1kcm9wZG93bi50c3gnLFxuICAgICdvcGVuLWhlcm8tcGluZyc6ICdzcmMvb3Blbi1oZXJvLXBpbmcudHN4JyxcbiAgICAnb3Blbi1pbnB1dCc6ICdzcmMvb3Blbi1pbnB1dC50c3gnLFxuICAgICdvcGVuLWxheW91dCc6ICdzcmMvb3Blbi1sYXlvdXQudHN4JyxcbiAgICAnb3Blbi1tb2RhbCc6ICdzcmMvb3Blbi1tb2RhbC50c3gnLFxuICAgICdvcGVuLXByb3BzLXRva2Vucyc6ICdzcmMvb3Blbi1wcm9wcy10b2tlbnMudHMnLFxuICAgICdvcGVuLXByb3BzLXRva2Vucy5qcyc6ICdzcmMvb3Blbi1wcm9wcy10b2tlbnMudHMnLFxuICAgICdvcGVuLXN0ZXAtY2FyZCc6ICdzcmMvb3Blbi1zdGVwLWNhcmQudHN4JyxcbiAgICAnb3Blbi10YWJzJzogJ3NyYy9vcGVuLXRhYnMudHN4JyxcbiAgICAnb3Blbi10aGVtZS10b2dnbGUnOiAnc3JjL29wZW4tdGhlbWUtdG9nZ2xlLnRzeCcsXG4gICAgJ29wZW4tYmFkZ2UnOiAnc3JjL29wZW4tYmFkZ2UudHN4JyxcbiAgICAnb3Blbi1icmFuZC1tYXJrJzogJ3NyYy9vcGVuLWJyYW5kLW1hcmsudHN4JyxcbiAgICAnb3Blbi1sYWItcGFuZWwnOiAnc3JjL29wZW4tbGFiLXBhbmVsLnRzeCcsXG4gICAgJ29wZW4tbGFiLXN0YWdlJzogJ3NyYy9vcGVuLWxhYi1zdGFnZS50c3gnLFxuICAgICdvcGVuLXN0YW5kYXJkcy12aXN1YWwnOiAnc3JjL29wZW4tc3RhbmRhcmRzLXZpc3VhbC50c3gnLFxuICAgICdkYWlzeS1jbGFzc2VzJzogJ3NyYy9kYWlzeS1jbGFzc2VzLnRzJyxcbiAgICAnZGFpc3ktY2xhc3Nlcy5qcyc6ICdzcmMvZGFpc3ktY2xhc3Nlcy50cycsXG4gIH0sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5Kc3JQYWNrYWdlU3BlY2lmaWVyIHtcbiAgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgc3VicGF0aDogc3RyaW5nO1xuICByYW5nZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVuSnNyUGFja2FnZVJlc29sdmVyT3B0aW9ucyB7XG4gIHdvcmtzcGFjZVJvb3Q6IHN0cmluZyB8IG51bGw7XG4gIHZlcnNpb246IHN0cmluZztcbiAgbG9jYWxQYWNrYWdlUm9vdD86IHN0cmluZyB8IG51bGw7XG4gIHVzZXJBbGlhc2VzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IEFsaWFzW10gfCBudWxsO1xuICBmZXRjaFNvdXJjZT86ICh1cmw6IHN0cmluZykgPT4gUHJvbWlzZTxSZXNwb25zZT47XG4gIHJlYWRMb2NhbFNvdXJjZT86IChwYXRoOiBzdHJpbmcpID0+IHN0cmluZztcbiAgLyoqIFJlZ2lzdHJ5IG1vZGUuICducG0nIGxldHMgVml0ZSByZXNvbHZlIEBvcGVuZWxlbWVudC8qIGZyb20gbm9kZV9tb2R1bGVzLlxuICAgKiAnanNyJyBrZWVwcyB0aGUgbGVnYWN5IHZpcnR1YWwtbW9kdWxlIHNvdXJjZSBmZXRjaCBmb3IgSlNSIGNvbnN1bWVycy4gKi9cbiAgcmVnaXN0cnk/OiAnbnBtJyB8ICdqc3InO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VPcGVuUGFja2FnZVNwZWNpZmllcihpZDogc3RyaW5nKTogT3BlbkpzclBhY2thZ2VTcGVjaWZpZXIgfCBudWxsIHtcbiAgY29uc3QgYmFyZSA9IGlkLm1hdGNoKC9eQG9wZW5lbGVtZW50XFwvKFteL0BdKykoPzpcXC8oLispKT8kLyk7XG4gIGlmIChiYXJlKSByZXR1cm4geyBwYWNrYWdlTmFtZTogYmFyZVsxXSwgc3VicGF0aDogYmFyZVsyXSA/PyAnLicgfTtcblxuICBjb25zdCBqc3IgPSBpZC5tYXRjaCgvXmpzcjpAb3BlbmVsZW1lbnRcXC8oW14vQF0rKSg/OkAoW14vXSspKT8oPzpcXC8oLispKT8kLyk7XG4gIGlmIChqc3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFja2FnZU5hbWU6IGpzclsxXSxcbiAgICAgIHJhbmdlOiBqc3JbMl0sXG4gICAgICBzdWJwYXRoOiBqc3JbM10gPz8gJy4nLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVPcGVuUGFja2FnZUV4cG9ydChwYWNrYWdlTmFtZTogc3RyaW5nLCBzdWJwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBleHBvcnRzID0gT1BFTkVMRU1FTlRfRVhQT1JUX0ZJTEVTW3BhY2thZ2VOYW1lXTtcbiAgaWYgKCFleHBvcnRzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBbb3BlbkVsZW1lbnQvU1NHXSBVbmtub3duIG9wZW5FbGVtZW50IHBhY2thZ2U6IEBvcGVuZWxlbWVudC8ke3BhY2thZ2VOYW1lfWApO1xuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVN1YnBhdGgoc3VicGF0aCk7XG4gIGNvbnN0IGZpbGUgPSBleHBvcnRzW25vcm1hbGl6ZWRdID8/XG4gICAgKG5vcm1hbGl6ZWQuZW5kc1dpdGgoJy5qcycpID8gZXhwb3J0c1tub3JtYWxpemVkLnJlcGxhY2UoL1xcLmpzJC8sICcnKV0gOiB1bmRlZmluZWQpO1xuICBpZiAoZmlsZSkgcmV0dXJuIGZpbGU7XG5cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBbb3BlbkVsZW1lbnQvU1NHXSBVbmtub3duIEBvcGVuZWxlbWVudC8ke3BhY2thZ2VOYW1lfSBleHBvcnQgc3VicGF0aDogJHtzdWJwYXRofWAsXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1ZpcnR1YWxPcGVuUGFja2FnZUlkKHBhY2thZ2VOYW1lOiBzdHJpbmcsIHNvdXJjZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtWSVJUVUFMX09QRU5FTEVNRU5UX1BBQ0tBR0VfUFJFRklYfSR7cGFja2FnZU5hbWV9LyR7c291cmNlUGF0aH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVZpcnR1YWxPcGVuUGFja2FnZVJlbGF0aXZlKGlkOiBzdHJpbmcsIGltcG9ydGVyOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKCFpbXBvcnRlci5zdGFydHNXaXRoKFZJUlRVQUxfT1BFTkVMRU1FTlRfUEFDS0FHRV9QUkVGSVgpKSByZXR1cm4gbnVsbDtcbiAgaWYgKCFpZC5zdGFydHNXaXRoKCcuLycpICYmICFpZC5zdGFydHNXaXRoKCcuLi8nKSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgaW1wb3J0ZXJQYXRoID0gaW1wb3J0ZXIuc2xpY2UoVklSVFVBTF9PUEVORUxFTUVOVF9QQUNLQUdFX1BSRUZJWC5sZW5ndGgpO1xuICBjb25zdCBbcGFja2FnZU5hbWUsIC4uLnBhdGhQYXJ0c10gPSBpbXBvcnRlclBhdGguc3BsaXQoJy8nKTtcbiAgY29uc3QgYmFzZSA9IHBhdGhQYXJ0cy5zbGljZSgwLCAtMSk7XG4gIGNvbnN0IHBhcnRzID0gWy4uLmJhc2UsIC4uLmlkLnNwbGl0KCcvJyldO1xuICBjb25zdCByZXNvbHZlZDogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICBpZiAoIXBhcnQgfHwgcGFydCA9PT0gJy4nKSBjb250aW51ZTtcbiAgICBpZiAocGFydCA9PT0gJy4uJykgcmVzb2x2ZWQucG9wKCk7XG4gICAgZWxzZSByZXNvbHZlZC5wdXNoKHBhcnQpO1xuICB9XG5cbiAgcmV0dXJuIHRvVmlydHVhbE9wZW5QYWNrYWdlSWQoXG4gICAgcGFja2FnZU5hbWUsXG4gICAgcmVzb2x2ZVNvdXJjZVBhdGhFeHRlbnNpb24ocGFja2FnZU5hbWUsIHJlc29sdmVkLmpvaW4oJy8nKSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVPcGVuSnNyUGFja2FnZVJlc29sdmVyUGx1Z2luKFxuICBvcHRpb25zOiBPcGVuSnNyUGFja2FnZVJlc29sdmVyT3B0aW9ucyxcbik6IFBsdWdpbiB7XG4gIGNvbnN0IGZldGNoU291cmNlID0gb3B0aW9ucy5mZXRjaFNvdXJjZSA/PyBmZXRjaDtcbiAgY29uc3QgcmVnaXN0cnkgPSBvcHRpb25zLnJlZ2lzdHJ5ID8/XG4gICAgKHR5cGVvZiBpbXBvcnQubWV0YS51cmwgPT09ICdzdHJpbmcnICYmIGltcG9ydC5tZXRhLnVybC5zdGFydHNXaXRoKCdodHRwczovLycpID8gJ2pzcicgOiAnbnBtJyk7XG4gIGNvbnN0IGlzTnBtTW9kZSA9IHJlZ2lzdHJ5ID09PSAnbnBtJztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdvcGVuOnNzZy1wYWNrYWdlLXJlc29sdmUnLFxuICAgIGVuZm9yY2U6ICdwcmUnLFxuICAgIHRyYW5zZm9ybShjb2RlKSB7XG4gICAgICBpZiAoIWNvZGUuaW5jbHVkZXMoJ25wbTonKSkgcmV0dXJuIG51bGw7XG4gICAgICBjb25zdCByZXdyaXR0ZW4gPSByZXdyaXRlTnBtU3BlY2lmaWVycyhjb2RlKTtcbiAgICAgIGlmIChyZXdyaXR0ZW4gPT09IGNvZGUpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIHsgY29kZTogcmV3cml0dGVuLCBtYXA6IG51bGwgfTtcbiAgICB9LFxuICAgIHJlc29sdmVJZChpZCwgaW1wb3J0ZXIpIHtcbiAgICAgIGlmIChvcHRpb25zLndvcmtzcGFjZVJvb3QpIHJldHVybiBudWxsO1xuICAgICAgaWYgKGlzTnBtTW9kZSkgcmV0dXJuIG51bGw7XG4gICAgICBpZiAoaGFzRXhhY3RVc2VyQWxpYXMoaWQsIG9wdGlvbnMudXNlckFsaWFzZXMpKSByZXR1cm4gbnVsbDtcblxuICAgICAgY29uc3Qgc3BlYyA9IHBhcnNlT3BlblBhY2thZ2VTcGVjaWZpZXIoaWQpO1xuICAgICAgaWYgKHNwZWMpIHtcbiAgICAgICAgaWYgKCFERUZBVUxUX09QRU5FTEVNRU5UX1BBQ0tBR0VTLmhhcyhzcGVjLnBhY2thZ2VOYW1lKSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB0b1ZpcnR1YWxPcGVuUGFja2FnZUlkKFxuICAgICAgICAgIHNwZWMucGFja2FnZU5hbWUsXG4gICAgICAgICAgcmVzb2x2ZU9wZW5QYWNrYWdlRXhwb3J0KHNwZWMucGFja2FnZU5hbWUsIHNwZWMuc3VicGF0aCksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlVmlydHVhbE9wZW5QYWNrYWdlUmVsYXRpdmUoaWQsIGltcG9ydGVyID8/ICcnKTtcbiAgICB9LFxuICAgIGFzeW5jIGxvYWQoaWQpIHtcbiAgICAgIGlmIChvcHRpb25zLndvcmtzcGFjZVJvb3QpIHJldHVybiBudWxsO1xuICAgICAgaWYgKGlzTnBtTW9kZSkgcmV0dXJuIG51bGw7XG4gICAgICBpZiAoIWlkLnN0YXJ0c1dpdGgoVklSVFVBTF9PUEVORUxFTUVOVF9QQUNLQUdFX1BSRUZJWCkpIHJldHVybiBudWxsO1xuXG4gICAgICBjb25zdCBbcGFja2FnZU5hbWUsIC4uLnBhdGhQYXJ0c10gPSBpZC5zbGljZShWSVJUVUFMX09QRU5FTEVNRU5UX1BBQ0tBR0VfUFJFRklYLmxlbmd0aCkuc3BsaXQoXG4gICAgICAgICcvJyxcbiAgICAgICk7XG4gICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGhQYXJ0cy5qb2luKCcvJyk7XG4gICAgICBpZiAob3B0aW9ucy5sb2NhbFBhY2thZ2VSb290KSB7XG4gICAgICAgIGNvbnN0IGxvY2FsUGF0aCA9IGAke29wdGlvbnMubG9jYWxQYWNrYWdlUm9vdH0vcGFja2FnZXMvJHtwYWNrYWdlTmFtZX0vJHtmaWxlUGF0aH1gO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLnJlYWRMb2NhbFNvdXJjZVxuICAgICAgICAgICAgPyBvcHRpb25zLnJlYWRMb2NhbFNvdXJjZShsb2NhbFBhdGgpXG4gICAgICAgICAgICA6IHR5cGVvZiBEZW5vICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgPyBhd2FpdCBEZW5vLnJlYWRUZXh0RmlsZShsb2NhbFBhdGgpXG4gICAgICAgICAgICA6IGF3YWl0IHJlYWRGaWxlKGxvY2FsUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFtvcGVuRWxlbWVudC9TU0ddIEZhaWxlZCB0byByZWFkIGxvY2FsIEBvcGVuZWxlbWVudC8ke3BhY2thZ2VOYW1lfS8ke2ZpbGVQYXRofSBgICtcbiAgICAgICAgICAgICAgYGZyb20gJHtsb2NhbFBhdGh9OiAke2Zvcm1hdEVycm9yKGVycm9yKX1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdXJsID0gYGh0dHBzOi8vanNyLmlvL0BvcGVuZWxlbWVudC8ke3BhY2thZ2VOYW1lfS8ke29wdGlvbnMudmVyc2lvbn0vJHtmaWxlUGF0aH1gO1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGZldGNoU291cmNlKHVybCk7XG4gICAgICBpZiAoIXJlc3Aub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbb3BlbkVsZW1lbnQvU1NHXSBGYWlsZWQgdG8gZmV0Y2ggQG9wZW5lbGVtZW50LyR7cGFja2FnZU5hbWV9LyR7ZmlsZVBhdGh9IGAgK1xuICAgICAgICAgICAgYGZyb20gJHt1cmx9OiBIVFRQICR7cmVzcC5zdGF0dXN9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNvdXJjZSA9IGF3YWl0IHJlc3AudGV4dCgpO1xuICAgICAgLy8gSlNSIHJld3JpdGVzIGJhcmUgbnBtIHNwZWNpZmllcnMgKGUuZy4gJ21hcmtlZCcpIHRvICducG06bWFya2VkQHgueS56Jy5cbiAgICAgIC8vIFZpdGUvUm9sbGRvd24gZG9lcyBub3QgdW5kZXJzdGFuZCBEZW5vJ3MgJ25wbTonIHNjaGVtZSwgc28gd2UgbXVzdFxuICAgICAgLy8gY29udmVydCB0aGVtIGJhY2sgdG8gYmFyZSBzcGVjaWZpZXJzIHRoYXQgdGhlIGJ1bmRsZXIgY2FuIHJlc29sdmUuXG4gICAgICByZXR1cm4gcmV3cml0ZU5wbVNwZWNpZmllcnMoc291cmNlKTtcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzRXhhY3RVc2VyQWxpYXMoXG4gIGlkOiBzdHJpbmcsXG4gIGFsaWFzZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBBbGlhc1tdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IGJvb2xlYW4ge1xuICBpZiAoIWFsaWFzZXMpIHJldHVybiBmYWxzZTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYWxpYXNlcykpIHtcbiAgICByZXR1cm4gYWxpYXNlcy5zb21lKChhbGlhcykgPT4gdHlwZW9mIGFsaWFzLmZpbmQgPT09ICdzdHJpbmcnICYmIGFsaWFzLmZpbmQgPT09IGlkKTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFsaWFzZXMsIGlkKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplU3VicGF0aChzdWJwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoc3VicGF0aCA9PT0gJycgfHwgc3VicGF0aCA9PT0gJy4nKSByZXR1cm4gJy4nO1xuICByZXR1cm4gc3VicGF0aC5yZXBsYWNlKC9eXFwuXFwvLywgJycpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlU291cmNlUGF0aEV4dGVuc2lvbihwYWNrYWdlTmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBub3JtYWxpemVkID0gcGF0aC5yZXBsYWNlKC9cXC5qcyQvLCAnJyk7XG4gIGNvbnN0IGV4cG9ydHMgPSBPUEVORUxFTUVOVF9FWFBPUlRfRklMRVNbcGFja2FnZU5hbWVdO1xuICBpZiAoZXhwb3J0cykge1xuICAgIGNvbnN0IG1hdGNoZWQgPSBPYmplY3QudmFsdWVzKGV4cG9ydHMpLmZpbmQoKGZpbGUpID0+XG4gICAgICBmaWxlLnJlcGxhY2UoL1xcLih0c3h8dHMpJC8sICcnKSA9PT0gbm9ybWFsaXplZFxuICAgICk7XG4gICAgaWYgKG1hdGNoZWQpIHJldHVybiBtYXRjaGVkO1xuICB9XG4gIHJldHVybiBlbnN1cmVUc0V4dGVuc2lvbihwYXRoKTtcbn1cblxuZnVuY3Rpb24gZW5zdXJlVHNFeHRlbnNpb24ocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgd2l0aG91dEpzID0gcGF0aC5yZXBsYWNlKC9cXC5qcyQvLCAnJyk7XG4gIGlmICh3aXRob3V0SnMuZW5kc1dpdGgoJy50c3gnKSB8fCB3aXRob3V0SnMuZW5kc1dpdGgoJy50cycpKSByZXR1cm4gd2l0aG91dEpzO1xuICByZXR1cm4gYCR7d2l0aG91dEpzfS50c2A7XG59XG5cbi8qKlxuICogUmV3cml0ZSBEZW5vL0pTUiBgbnBtOmAgaW1wb3J0L2V4cG9ydCBzcGVjaWZpZXJzIHRvIGJhcmUgc3BlY2lmaWVycyB0aGF0XG4gKiBWaXRlL1JvbGxkb3duIGNhbiByZXNvbHZlLiBKU1IgcmV3cml0ZXMgYmFyZSBucG0gaW1wb3J0cyBsaWtlXG4gKiBgaW1wb3J0IGZyb20gJ21hcmtlZCdgIHRvIGBpbXBvcnQgZnJvbSAnbnBtOm1hcmtlZEAxMi4wLjAnYC4gUHVibGlzaGVkIG9wZW5FbGVtZW50XG4gKiBzb3VyY2UgY2FuIGFsc28gdXNlIGV4cGxpY2l0IGBucG06YCBzcGVjaWZpZXJzIHNvIGZyZXNoIERlbm8gY29uc3VtZXJzIGRvIG5vdFxuICogbmVlZCByb290IGltcG9ydC1tYXAgYWxpYXNlcy4gVml0ZSBkb2Vzbid0IHVuZGVyc3RhbmQgYG5wbTpgIHNvIHdlIHN0cmlwIHRoZVxuICogcHJlZml4IGFuZCB2ZXJzaW9uLCBsZWF2aW5nIGEgYmFyZSBzcGVjaWZpZXIgbGlrZSBgbWFya2VkYCBvclxuICogYEBwcmVhY3Qvc2lnbmFscy1jb3JlYC5cbiAqXG4gKiBIYW5kbGVzOlxuICovXG5jb25zdCBOUE1fU1BFQ0lGSUVSX1JFID1cbiAgLyhcXGJmcm9tXFxzKnxcXGJpbXBvcnRcXHMqXFwoXFxzKnxcXGJpbXBvcnRcXHMrKShbJ1wiXSlucG06KEA/W2EtejAtOV8tXSsoPzpcXC9bYS16MC05Xy1dKyk/KUBbXidcIi9dKyhcXC9bXidcIl0qKT9cXDIvZztcblxuZnVuY3Rpb24gcmV3cml0ZU5wbVNwZWNpZmllcnMoc291cmNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc291cmNlLnJlcGxhY2UoXG4gICAgTlBNX1NQRUNJRklFUl9SRSxcbiAgICAoX21hdGNoLCBwcmVmaXg6IHN0cmluZywgcXVvdGU6IHN0cmluZywgcGtnOiBzdHJpbmcsIHN1YnBhdGg/OiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtxdW90ZX0ke3BrZ30ke3N1YnBhdGggPz8gJyd9JHtxdW90ZX1gO1xuICAgIH0sXG4gICk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxJQUFJLFFBQVEsa0JBQWtCO0FBQ3ZD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
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9hZGFwdGVyLXZpdGUvc3JjL3NzZy1wYWNrYWdlLXJlc29sdmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgdHlwZSB7IEFsaWFzLCBQbHVnaW4gfSBmcm9tICd2aXRlJztcbmltcG9ydCB7IGZvcm1hdEVycm9yIH0gZnJvbSAnQG9wZW5lbGVtZW50L2NvcmUvZXJyb3JzJztcblxuY29uc3QgVklSVFVBTF9PUEVORUxFTUVOVF9QQUNLQUdFX1BSRUZJWCA9ICdcXDBvcGVuZWxlbWVudDpzc2ctcGtnLyc7XG4vLyBQYWNrYWdlcyByZXNvbHZlZCBieSB0aGlzIHBsdWdpbiBmb3IgSlNSIGNvbnN1bWVyIFNTRyBidWlsZHMuXG4vLyBSZXRhaW5lZCBvcHRpb25hbCBwYWNrYWdlcyAoY29udGVudCwgaTE4bikgYXJlIGhhbmRsZWQgYnkgb3B0aW9uYWxQYWNrYWdlU3R1YnNQbHVnaW5cbi8vIGluIGJ1aWxkLXNzZy50cyBpbnN0ZWFkLiBUaGUgcmVzb2x2ZXIgbXVzdCBOT1QgaW50ZXJjZXB0IHRoZW0sIGJlY2F1c2UgaXQgcnVuc1xuLy8gZW5mb3JjZTogJ3ByZScgYW5kIHdvdWxkIHByZXZlbnQgdGhlIHN0dWJzIHBsdWdpbiBmcm9tIHByb3ZpZGluZyBlbXB0eSBzdHVic1xuLy8gd2hlbiBwYWNrYWdlcyBhcmUgYWJzZW50LlxuY29uc3QgREVGQVVMVF9PUEVORUxFTUVOVF9QQUNLQUdFUyA9IG5ldyBTZXQoW1xuICAnYWRhcHRlci12aXRlJyxcbiAgJ2FwcCcsXG4gICdjb3JlJyxcbiAgJ2NyZWF0ZScsXG4gICdlbGVtZW50JyxcbiAgJ3JvdXRlcicsXG4gICdzaWduYWwnLFxuICAndWknLFxuXSk7XG5cbmNvbnN0IE9QRU5FTEVNRU5UX0VYUE9SVF9GSUxFUzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gICdhZGFwdGVyLXZpdGUnOiB7XG4gICAgJy4nOiAnc3JjL2luZGV4LnRzJyxcbiAgICAnYnVpbGQtY29udGV4dCc6ICdzcmMvYnVpbGQtY29udGV4dC50cycsXG4gICAgJ2hlYWQtaW5qZWN0aW9uJzogJ3NyYy9oZWFkLWluamVjdGlvbi50cycsXG4gICAgJ25pdHJvLW1vdW50JzogJ3NyYy9uaXRyby1tb3VudC50cycsXG4gICAgcGx1Z2luOiAnc3JjL3BsdWdpbi50cycsXG4gICAgJ3N1YnBhdGgtcmVzb2x2ZXInOiAnc3JjL3N1YnBhdGgtcmVzb2x2ZXIudHMnLFxuICAgICdnZW5lcmF0ZWQtZGF0YS1yZXNvbHZlcic6ICdzcmMvZ2VuZXJhdGVkLWRhdGEtcmVzb2x2ZXIudHMnLFxuICAgICdwbHVnaW4tbWR4JzogJ3NyYy9wbHVnaW4tbWR4LnRzJyxcbiAgICAnY2xpL2J1aWxkJzogJ3NyYy9jbGkvYnVpbGQudHMnLFxuICAgICdjbGkvYnVpbGQtY2xpZW50JzogJ3NyYy9jbGkvYnVpbGQtY2xpZW50LnRzJyxcbiAgICAnY2xpL2J1aWxkLXNzZyc6ICdzcmMvY2xpL2J1aWxkLXNzZy50cycsXG4gIH0sXG4gIGFwcDoge1xuICAgICcuJzogJ3NyYy9pbmRleC50cycsXG4gICAgaTE4bjogJ3NyYy9pMThuLnRzJyxcbiAgICAnaTE4bi1wbHVnaW4nOiAnc3JjL2kxOG4tcGx1Z2luLnRzJyxcbiAgICBwcmVhY3Q6ICdzcmMvcHJlYWN0LnRzJyxcbiAgICB2aXRlOiAnc3JjL3ZpdGUudHMnLFxuICB9LFxuICBjb250ZW50OiB7XG4gICAgJy4nOiAnc3JjL2luZGV4LnRzJyxcbiAgICAnYmxvZy1kYXRhJzogJ3NyYy9ibG9nL2Jsb2ctZGF0YS50cycsXG4gICAgbWR4OiAnc3JjL21keC9jb21waWxlLnRzJyxcbiAgICBuYXY6ICdzcmMvbmF2L3NjYW5uZXIudHMnLFxuICAgICduYXYtZGF0YSc6ICdzcmMvbmF2L3dyaXRlci50cycsXG4gICAgc2l0ZW1hcDogJ3NyYy9zaXRlbWFwL2dlbmVyYXRvci50cycsXG4gIH0sXG4gIGNvcmU6IHtcbiAgICAnLic6ICdzcmMvaW5kZXgudHMnLFxuICAgIGNvbnRleHQ6ICdzcmMvY29udGV4dC50cycsXG4gICAgZGF0YTogJ3NyYy9kYXRhLnRzJyxcbiAgICAnZHNkLWh5ZHJhdGlvbic6ICdzcmMvZHNkLWh5ZHJhdGlvbi50cycsXG4gICAgZXJyb3JzOiAnc3JjL2Vycm9ycy50cycsXG4gICAgJ2h0bWwtZXNjYXBlJzogJ3NyYy9odG1sLWVzY2FwZS50cycsXG4gICAgJ2lzbGFuZC10cmFuc2Zvcm0nOiAnc3JjL2lzbGFuZC10cmFuc2Zvcm0udHMnLFxuICAgIGlzcjogJ3NyYy9pc3IudHMnLFxuICAgICdpc3ItcnVudGltZSc6ICdzcmMvaXNyLXJ1bnRpbWUudHMnLFxuICAgICdqc3gtcnVudGltZSc6ICdzcmMvanN4LXJ1bnRpbWUudHMnLFxuICAgICdqc3gtZGV2LXJ1bnRpbWUnOiAnc3JjL2pzeC1ydW50aW1lLnRzJyxcbiAgICBsb2dnZXI6ICdzcmMvbG9nZ2VyLnRzJyxcbiAgICBwcm9wOiAnc3JjL3Byb3AudHMnLFxuICAgICdyZW5kZXItZHNkLXN0cmVhbSc6ICdzcmMvcmVuZGVyLWRzZC1zdHJlYW0udHMnLFxuICAgIHJ1bnRpbWU6ICdzcmMvcnVudGltZS50cycsXG4gICAgJ3NpZ25hbC1jb250ZXh0JzogJ3NyYy9zaWduYWwtY29udGV4dC50cycsXG4gICAgJ3N0eWxlLXNoZWV0JzogJ3NyYy9zdHlsZS1zaGVldC50cycsXG4gICAgJ3RhZy11dGlscyc6ICdzcmMvdGFnLXV0aWxzLnRzJyxcbiAgfSxcbiAgY3JlYXRlOiB7ICcuJzogJ2NsaS50cycgfSxcbiAgZWxlbWVudDoge1xuICAgICcuJzogJ3NyYy9pbmRleC50cycsXG4gIH0sXG4gIHJvdXRlcjoge1xuICAgICcuJzogJ3NyYy9kYXRhLWNvbnRleHQudHMnLFxuICAgICdkYXRhLWNvbnRleHQnOiAnc3JjL2RhdGEtY29udGV4dC50cycsXG4gICAgaTE4bjogJ3NyYy9pMThuLnRzJyxcbiAgfSxcbiAgc2lnbmFsOiB7XG4gICAgJy4nOiAnc3JjL2luZGV4LnRzJyxcbiAgICBmcmFtZXdvcms6ICdzcmMvZnJhbWV3b3JrLnRzJyxcbiAgICAncHJlYWN0LWVuZ2luZSc6ICdzcmMvcHJlYWN0LWVuZ2luZS50cycsXG4gIH0sXG4gIHNzZzoge1xuICAgICcuJzogJ3NyYy9pbmRleC50cycsXG4gIH0sXG4gIHVpOiB7XG4gICAgJy4nOiAnc3JjL2luZGV4LnRzJyxcbiAgICAnb3Blbi1idXR0b24nOiAnc3JjL29wZW4tYnV0dG9uLnRzeCcsXG4gICAgJ29wZW4tY2FsbG91dCc6ICdzcmMvb3Blbi1jYWxsb3V0LnRzeCcsXG4gICAgJ29wZW4tY2FyZCc6ICdzcmMvb3Blbi1jYXJkLnRzeCcsXG4gICAgJ29wZW4tY29kZS1ibG9jayc6ICdzcmMvb3Blbi1jb2RlLWJsb2NrLnRzeCcsXG4gICAgJ29wZW4tZGlhbG9nJzogJ3NyYy9vcGVuLWRpYWxvZy50c3gnLFxuICAgICdvcGVuLWRyb3Bkb3duJzogJ3NyYy9vcGVuLWRyb3Bkb3duLnRzeCcsXG4gICAgJ29wZW4taGVyby1waW5nJzogJ3NyYy9vcGVuLWhlcm8tcGluZy50c3gnLFxuICAgICdvcGVuLWlucHV0JzogJ3NyYy9vcGVuLWlucHV0LnRzeCcsXG4gICAgJ29wZW4tbGF5b3V0JzogJ3NyYy9vcGVuLWxheW91dC50c3gnLFxuICAgICdvcGVuLW1vZGFsJzogJ3NyYy9vcGVuLW1vZGFsLnRzeCcsXG4gICAgJ29wZW4tcHJvcHMtdG9rZW5zJzogJ3NyYy9vcGVuLXByb3BzLXRva2Vucy50cycsXG4gICAgJ29wZW4tcHJvcHMtdG9rZW5zLmpzJzogJ3NyYy9vcGVuLXByb3BzLXRva2Vucy50cycsXG4gICAgJ29wZW4tc3RlcC1jYXJkJzogJ3NyYy9vcGVuLXN0ZXAtY2FyZC50c3gnLFxuICAgICdvcGVuLXRhYnMnOiAnc3JjL29wZW4tdGFicy50c3gnLFxuICAgICdvcGVuLXRoZW1lLXRvZ2dsZSc6ICdzcmMvb3Blbi10aGVtZS10b2dnbGUudHN4JyxcbiAgICAnb3Blbi1iYWRnZSc6ICdzcmMvb3Blbi1iYWRnZS50c3gnLFxuICAgICdvcGVuLWJyYW5kLW1hcmsnOiAnc3JjL29wZW4tYnJhbmQtbWFyay50c3gnLFxuICAgICdvcGVuLWxhYi1wYW5lbCc6ICdzcmMvb3Blbi1sYWItcGFuZWwudHN4JyxcbiAgICAnb3Blbi1sYWItc3RhZ2UnOiAnc3JjL29wZW4tbGFiLXN0YWdlLnRzeCcsXG4gICAgJ29wZW4tc3RhbmRhcmRzLXZpc3VhbCc6ICdzcmMvb3Blbi1zdGFuZGFyZHMtdmlzdWFsLnRzeCcsXG4gICAgJ2RhaXN5LWNsYXNzZXMnOiAnc3JjL2RhaXN5LWNsYXNzZXMudHMnLFxuICAgICdkYWlzeS1jbGFzc2VzLmpzJzogJ3NyYy9kYWlzeS1jbGFzc2VzLnRzJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkpzclBhY2thZ2VTcGVjaWZpZXIge1xuICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICBzdWJwYXRoOiBzdHJpbmc7XG4gIHJhbmdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5Kc3JQYWNrYWdlUmVzb2x2ZXJPcHRpb25zIHtcbiAgd29ya3NwYWNlUm9vdDogc3RyaW5nIHwgbnVsbDtcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBsb2NhbFBhY2thZ2VSb290Pzogc3RyaW5nIHwgbnVsbDtcbiAgdXNlckFsaWFzZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgQWxpYXNbXSB8IG51bGw7XG4gIGZldGNoU291cmNlPzogKHVybDogc3RyaW5nKSA9PiBQcm9taXNlPFJlc3BvbnNlPjtcbiAgcmVhZExvY2FsU291cmNlPzogKHBhdGg6IHN0cmluZykgPT4gc3RyaW5nO1xuICAvKiogUmVnaXN0cnkgbW9kZS4gJ25wbScgbGV0cyBWaXRlIHJlc29sdmUgQG9wZW5lbGVtZW50LyogZnJvbSBub2RlX21vZHVsZXMuXG4gICAqICdqc3InIGtlZXBzIHRoZSBsZWdhY3kgdmlydHVhbC1tb2R1bGUgc291cmNlIGZldGNoIGZvciBKU1IgY29uc3VtZXJzLiAqL1xuICByZWdpc3RyeT86ICducG0nIHwgJ2pzcic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU9wZW5QYWNrYWdlU3BlY2lmaWVyKGlkOiBzdHJpbmcpOiBPcGVuSnNyUGFja2FnZVNwZWNpZmllciB8IG51bGwge1xuICBjb25zdCBiYXJlID0gaWQubWF0Y2goL15Ab3BlbmVsZW1lbnRcXC8oW14vQF0rKSg/OlxcLyguKykpPyQvKTtcbiAgaWYgKGJhcmUpIHJldHVybiB7IHBhY2thZ2VOYW1lOiBiYXJlWzFdLCBzdWJwYXRoOiBiYXJlWzJdID8/ICcuJyB9O1xuXG4gIGNvbnN0IGpzciA9IGlkLm1hdGNoKC9eanNyOkBvcGVuZWxlbWVudFxcLyhbXi9AXSspKD86QChbXi9dKykpPyg/OlxcLyguKykpPyQvKTtcbiAgaWYgKGpzcikge1xuICAgIHJldHVybiB7XG4gICAgICBwYWNrYWdlTmFtZToganNyWzFdLFxuICAgICAgcmFuZ2U6IGpzclsyXSxcbiAgICAgIHN1YnBhdGg6IGpzclszXSA/PyAnLicsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU9wZW5QYWNrYWdlRXhwb3J0KHBhY2thZ2VOYW1lOiBzdHJpbmcsIHN1YnBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGV4cG9ydHMgPSBPUEVORUxFTUVOVF9FWFBPUlRfRklMRVNbcGFja2FnZU5hbWVdO1xuICBpZiAoIWV4cG9ydHMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFtvcGVuRWxlbWVudC9TU0ddIFVua25vd24gb3BlbkVsZW1lbnQgcGFja2FnZTogQG9wZW5lbGVtZW50LyR7cGFja2FnZU5hbWV9YCk7XG4gIH1cblxuICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplU3VicGF0aChzdWJwYXRoKTtcbiAgY29uc3QgZmlsZSA9IGV4cG9ydHNbbm9ybWFsaXplZF0gPz9cbiAgICAobm9ybWFsaXplZC5lbmRzV2l0aCgnLmpzJykgPyBleHBvcnRzW25vcm1hbGl6ZWQucmVwbGFjZSgvXFwuanMkLywgJycpXSA6IHVuZGVmaW5lZCk7XG4gIGlmIChmaWxlKSByZXR1cm4gZmlsZTtcblxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYFtvcGVuRWxlbWVudC9TU0ddIFVua25vd24gQG9wZW5lbGVtZW50LyR7cGFja2FnZU5hbWV9IGV4cG9ydCBzdWJwYXRoOiAke3N1YnBhdGh9YCxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvVmlydHVhbE9wZW5QYWNrYWdlSWQocGFja2FnZU5hbWU6IHN0cmluZywgc291cmNlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke1ZJUlRVQUxfT1BFTkVMRU1FTlRfUEFDS0FHRV9QUkVGSVh9JHtwYWNrYWdlTmFtZX0vJHtzb3VyY2VQYXRofWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVmlydHVhbE9wZW5QYWNrYWdlUmVsYXRpdmUoaWQ6IHN0cmluZywgaW1wb3J0ZXI6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBpZiAoIWltcG9ydGVyLnN0YXJ0c1dpdGgoVklSVFVBTF9PUEVORUxFTUVOVF9QQUNLQUdFX1BSRUZJWCkpIHJldHVybiBudWxsO1xuICBpZiAoIWlkLnN0YXJ0c1dpdGgoJy4vJykgJiYgIWlkLnN0YXJ0c1dpdGgoJy4uLycpKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBpbXBvcnRlclBhdGggPSBpbXBvcnRlci5zbGljZShWSVJUVUFMX09QRU5FTEVNRU5UX1BBQ0tBR0VfUFJFRklYLmxlbmd0aCk7XG4gIGNvbnN0IFtwYWNrYWdlTmFtZSwgLi4ucGF0aFBhcnRzXSA9IGltcG9ydGVyUGF0aC5zcGxpdCgnLycpO1xuICBjb25zdCBiYXNlID0gcGF0aFBhcnRzLnNsaWNlKDAsIC0xKTtcbiAgY29uc3QgcGFydHMgPSBbLi4uYmFzZSwgLi4uaWQuc3BsaXQoJy8nKV07XG4gIGNvbnN0IHJlc29sdmVkOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmICghcGFydCB8fCBwYXJ0ID09PSAnLicpIGNvbnRpbnVlO1xuICAgIGlmIChwYXJ0ID09PSAnLi4nKSByZXNvbHZlZC5wb3AoKTtcbiAgICBlbHNlIHJlc29sdmVkLnB1c2gocGFydCk7XG4gIH1cblxuICByZXR1cm4gdG9WaXJ0dWFsT3BlblBhY2thZ2VJZChcbiAgICBwYWNrYWdlTmFtZSxcbiAgICByZXNvbHZlU291cmNlUGF0aEV4dGVuc2lvbihwYWNrYWdlTmFtZSwgcmVzb2x2ZWQuam9pbignLycpKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU9wZW5Kc3JQYWNrYWdlUmVzb2x2ZXJQbHVnaW4oXG4gIG9wdGlvbnM6IE9wZW5Kc3JQYWNrYWdlUmVzb2x2ZXJPcHRpb25zLFxuKTogUGx1Z2luIHtcbiAgY29uc3QgZmV0Y2hTb3VyY2UgPSBvcHRpb25zLmZldGNoU291cmNlID8/IGZldGNoO1xuICBjb25zdCByZWdpc3RyeSA9IG9wdGlvbnMucmVnaXN0cnkgPz9cbiAgICAodHlwZW9mIGltcG9ydC5tZXRhLnVybCA9PT0gJ3N0cmluZycgJiYgaW1wb3J0Lm1ldGEudXJsLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vJykgPyAnanNyJyA6ICducG0nKTtcbiAgY29uc3QgaXNOcG1Nb2RlID0gcmVnaXN0cnkgPT09ICducG0nO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ29wZW46c3NnLXBhY2thZ2UtcmVzb2x2ZScsXG4gICAgZW5mb3JjZTogJ3ByZScsXG4gICAgdHJhbnNmb3JtKGNvZGUpIHtcbiAgICAgIGlmICghY29kZS5pbmNsdWRlcygnbnBtOicpKSByZXR1cm4gbnVsbDtcbiAgICAgIGNvbnN0IHJld3JpdHRlbiA9IHJld3JpdGVOcG1TcGVjaWZpZXJzKGNvZGUpO1xuICAgICAgaWYgKHJld3JpdHRlbiA9PT0gY29kZSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4geyBjb2RlOiByZXdyaXR0ZW4sIG1hcDogbnVsbCB9O1xuICAgIH0sXG4gICAgcmVzb2x2ZUlkKGlkLCBpbXBvcnRlcikge1xuICAgICAgaWYgKG9wdGlvbnMud29ya3NwYWNlUm9vdCkgcmV0dXJuIG51bGw7XG4gICAgICBpZiAoaXNOcG1Nb2RlKSByZXR1cm4gbnVsbDtcbiAgICAgIGlmIChoYXNFeGFjdFVzZXJBbGlhcyhpZCwgb3B0aW9ucy51c2VyQWxpYXNlcykpIHJldHVybiBudWxsO1xuXG4gICAgICBjb25zdCBzcGVjID0gcGFyc2VPcGVuUGFja2FnZVNwZWNpZmllcihpZCk7XG4gICAgICBpZiAoc3BlYykge1xuICAgICAgICBpZiAoIURFRkFVTFRfT1BFTkVMRU1FTlRfUEFDS0FHRVMuaGFzKHNwZWMucGFja2FnZU5hbWUpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRvVmlydHVhbE9wZW5QYWNrYWdlSWQoXG4gICAgICAgICAgc3BlYy5wYWNrYWdlTmFtZSxcbiAgICAgICAgICByZXNvbHZlT3BlblBhY2thZ2VFeHBvcnQoc3BlYy5wYWNrYWdlTmFtZSwgc3BlYy5zdWJwYXRoKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmVWaXJ0dWFsT3BlblBhY2thZ2VSZWxhdGl2ZShpZCwgaW1wb3J0ZXIgPz8gJycpO1xuICAgIH0sXG4gICAgYXN5bmMgbG9hZChpZCkge1xuICAgICAgaWYgKG9wdGlvbnMud29ya3NwYWNlUm9vdCkgcmV0dXJuIG51bGw7XG4gICAgICBpZiAoaXNOcG1Nb2RlKSByZXR1cm4gbnVsbDtcbiAgICAgIGlmICghaWQuc3RhcnRzV2l0aChWSVJUVUFMX09QRU5FTEVNRU5UX1BBQ0tBR0VfUFJFRklYKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgIGNvbnN0IFtwYWNrYWdlTmFtZSwgLi4ucGF0aFBhcnRzXSA9IGlkLnNsaWNlKFZJUlRVQUxfT1BFTkVMRU1FTlRfUEFDS0FHRV9QUkVGSVgubGVuZ3RoKS5zcGxpdChcbiAgICAgICAgJy8nLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aFBhcnRzLmpvaW4oJy8nKTtcbiAgICAgIGlmIChvcHRpb25zLmxvY2FsUGFja2FnZVJvb3QpIHtcbiAgICAgICAgY29uc3QgbG9jYWxQYXRoID0gYCR7b3B0aW9ucy5sb2NhbFBhY2thZ2VSb290fS9wYWNrYWdlcy8ke3BhY2thZ2VOYW1lfS8ke2ZpbGVQYXRofWA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMucmVhZExvY2FsU291cmNlXG4gICAgICAgICAgICA/IG9wdGlvbnMucmVhZExvY2FsU291cmNlKGxvY2FsUGF0aClcbiAgICAgICAgICAgIDogdHlwZW9mIERlbm8gIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICA/IGF3YWl0IERlbm8ucmVhZFRleHRGaWxlKGxvY2FsUGF0aClcbiAgICAgICAgICAgIDogYXdhaXQgcmVhZEZpbGUobG9jYWxQYXRoLCAndXRmLTgnKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgW29wZW5FbGVtZW50L1NTR10gRmFpbGVkIHRvIHJlYWQgbG9jYWwgQG9wZW5lbGVtZW50LyR7cGFja2FnZU5hbWV9LyR7ZmlsZVBhdGh9IGAgK1xuICAgICAgICAgICAgICBgZnJvbSAke2xvY2FsUGF0aH06ICR7Zm9ybWF0RXJyb3IoZXJyb3IpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9qc3IuaW8vQG9wZW5lbGVtZW50LyR7cGFja2FnZU5hbWV9LyR7b3B0aW9ucy52ZXJzaW9ufS8ke2ZpbGVQYXRofWA7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgZmV0Y2hTb3VyY2UodXJsKTtcbiAgICAgIGlmICghcmVzcC5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFtvcGVuRWxlbWVudC9TU0ddIEZhaWxlZCB0byBmZXRjaCBAb3BlbmVsZW1lbnQvJHtwYWNrYWdlTmFtZX0vJHtmaWxlUGF0aH0gYCArXG4gICAgICAgICAgICBgZnJvbSAke3VybH06IEhUVFAgJHtyZXNwLnN0YXR1c31gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgcmVzcC50ZXh0KCk7XG4gICAgICAvLyBKU1IgcmV3cml0ZXMgYmFyZSBucG0gc3BlY2lmaWVycyAoZS5nLiAnbWFya2VkJykgdG8gJ25wbTptYXJrZWRAeC55LnonLlxuICAgICAgLy8gVml0ZS9Sb2xsZG93biBkb2VzIG5vdCB1bmRlcnN0YW5kIERlbm8ncyAnbnBtOicgc2NoZW1lLCBzbyB3ZSBtdXN0XG4gICAgICAvLyBjb252ZXJ0IHRoZW0gYmFjayB0byBiYXJlIHNwZWNpZmllcnMgdGhhdCB0aGUgYnVuZGxlciBjYW4gcmVzb2x2ZS5cbiAgICAgIHJldHVybiByZXdyaXRlTnBtU3BlY2lmaWVycyhzb3VyY2UpO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNFeGFjdFVzZXJBbGlhcyhcbiAgaWQ6IHN0cmluZyxcbiAgYWxpYXNlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IEFsaWFzW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogYm9vbGVhbiB7XG4gIGlmICghYWxpYXNlcykgcmV0dXJuIGZhbHNlO1xuICBpZiAoQXJyYXkuaXNBcnJheShhbGlhc2VzKSkge1xuICAgIHJldHVybiBhbGlhc2VzLnNvbWUoKGFsaWFzKSA9PiB0eXBlb2YgYWxpYXMuZmluZCA9PT0gJ3N0cmluZycgJiYgYWxpYXMuZmluZCA9PT0gaWQpO1xuICB9XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYWxpYXNlcywgaWQpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTdWJwYXRoKHN1YnBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzdWJwYXRoID09PSAnJyB8fCBzdWJwYXRoID09PSAnLicpIHJldHVybiAnLic7XG4gIHJldHVybiBzdWJwYXRoLnJlcGxhY2UoL15cXC5cXC8vLCAnJyk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVTb3VyY2VQYXRoRXh0ZW5zaW9uKHBhY2thZ2VOYW1lOiBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBwYXRoLnJlcGxhY2UoL1xcLmpzJC8sICcnKTtcbiAgY29uc3QgZXhwb3J0cyA9IE9QRU5FTEVNRU5UX0VYUE9SVF9GSUxFU1twYWNrYWdlTmFtZV07XG4gIGlmIChleHBvcnRzKSB7XG4gICAgY29uc3QgbWF0Y2hlZCA9IE9iamVjdC52YWx1ZXMoZXhwb3J0cykuZmluZCgoZmlsZSkgPT5cbiAgICAgIGZpbGUucmVwbGFjZSgvXFwuKHRzeHx0cykkLywgJycpID09PSBub3JtYWxpemVkXG4gICAgKTtcbiAgICBpZiAobWF0Y2hlZCkgcmV0dXJuIG1hdGNoZWQ7XG4gIH1cbiAgcmV0dXJuIGVuc3VyZVRzRXh0ZW5zaW9uKHBhdGgpO1xufVxuXG5mdW5jdGlvbiBlbnN1cmVUc0V4dGVuc2lvbihwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB3aXRob3V0SnMgPSBwYXRoLnJlcGxhY2UoL1xcLmpzJC8sICcnKTtcbiAgaWYgKHdpdGhvdXRKcy5lbmRzV2l0aCgnLnRzeCcpIHx8IHdpdGhvdXRKcy5lbmRzV2l0aCgnLnRzJykpIHJldHVybiB3aXRob3V0SnM7XG4gIHJldHVybiBgJHt3aXRob3V0SnN9LnRzYDtcbn1cblxuLyoqXG4gKiBSZXdyaXRlIERlbm8vSlNSIGBucG06YCBpbXBvcnQvZXhwb3J0IHNwZWNpZmllcnMgdG8gYmFyZSBzcGVjaWZpZXJzIHRoYXRcbiAqIFZpdGUvUm9sbGRvd24gY2FuIHJlc29sdmUuIEpTUiByZXdyaXRlcyBiYXJlIG5wbSBpbXBvcnRzIGxpa2VcbiAqIGBpbXBvcnQgZnJvbSAnbWFya2VkJ2AgdG8gYGltcG9ydCBmcm9tICducG06bWFya2VkQDEyLjAuMCdgLiBQdWJsaXNoZWQgb3BlbkVsZW1lbnRcbiAqIHNvdXJjZSBjYW4gYWxzbyB1c2UgZXhwbGljaXQgYG5wbTpgIHNwZWNpZmllcnMgc28gZnJlc2ggRGVubyBjb25zdW1lcnMgZG8gbm90XG4gKiBuZWVkIHJvb3QgaW1wb3J0LW1hcCBhbGlhc2VzLiBWaXRlIGRvZXNuJ3QgdW5kZXJzdGFuZCBgbnBtOmAgc28gd2Ugc3RyaXAgdGhlXG4gKiBwcmVmaXggYW5kIHZlcnNpb24sIGxlYXZpbmcgYSBiYXJlIHNwZWNpZmllciBsaWtlIGBtYXJrZWRgIG9yXG4gKiBgQHByZWFjdC9zaWduYWxzLWNvcmVgLlxuICpcbiAqIEhhbmRsZXM6XG4gKi9cbmNvbnN0IE5QTV9TUEVDSUZJRVJfUkUgPVxuICAvKFxcYmZyb21cXHMqfFxcYmltcG9ydFxccypcXChcXHMqfFxcYmltcG9ydFxccyspKFsnXCJdKW5wbTooQD9bYS16MC05Xy1dKyg/OlxcL1thLXowLTlfLV0rKT8pQFteJ1wiL10rKFxcL1teJ1wiXSopP1xcMi9nO1xuXG5mdW5jdGlvbiByZXdyaXRlTnBtU3BlY2lmaWVycyhzb3VyY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzb3VyY2UucmVwbGFjZShcbiAgICBOUE1fU1BFQ0lGSUVSX1JFLFxuICAgIChfbWF0Y2gsIHByZWZpeDogc3RyaW5nLCBxdW90ZTogc3RyaW5nLCBwa2c6IHN0cmluZywgc3VicGF0aD86IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGAke3ByZWZpeH0ke3F1b3RlfSR7cGtnfSR7c3VicGF0aCA/PyAnJ30ke3F1b3RlfWA7XG4gICAgfSxcbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLFFBQVEsUUFBUSxtQkFBbUI7QUFFNUMsU0FBUyxXQUFXLFFBQVEsMkJBQTJCO0FBRXZELE1BQU0scUNBQXFDO0FB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
|
package/src/workspace-alias.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Deno } from "@deno/shim-deno";
|
|
2
1
|
/**
|
|
3
2
|
* @openelement/adapter-vite - Workspace alias auto-generation
|
|
4
3
|
*
|
|
@@ -110,4 +109,4 @@ function tryReadJson(path) {
|
|
|
110
109
|
}
|
|
111
110
|
return aliases;
|
|
112
111
|
}
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9hZGFwdGVyLXZpdGUvc3JjL3dvcmtzcGFjZS1hbGlhcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBvcGVuZWxlbWVudC9hZGFwdGVyLXZpdGUgLSBXb3Jrc3BhY2UgYWxpYXMgYXV0by1nZW5lcmF0aW9uXG4gKlxuICogUmVhZHMgRGVubyB3b3Jrc3BhY2UgZGVuby5qc29uIGV4cG9ydHMgYW5kIGdlbmVyYXRlc1xuICogVml0ZSByZXNvbHZlLmFsaWFzIGVudHJpZXMuIFVzZXMgc3luYyBEZW5vIEFQSXMgc28gaXRcbiAqIGNhbiBydW4gaW4gc3luY2hyb25vdXMgcGx1Z2luIGhvb2tzIChjb25maWcsIGNvbmZpZ1Jlc29sdmVkKS5cbiAqL1xuXG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJztcblxuZXhwb3J0IGludGVyZmFjZSBBbGlhc0VudHJ5IHtcbiAgZmluZDogc3RyaW5nO1xuICByZXBsYWNlbWVudDogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiB0cnlSZWFkSnNvbihwYXRoOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwge1xuICB0cnkge1xuICAgIC8vIEgtMTIgZml4OiBVc2UgcGxhdGZvcm0tYXBwcm9wcmlhdGUgZmlsZSByZWFkaW5nIEFQSVxuICAgIC8vIERlbm8ucmVhZFRleHRGaWxlU3luYyBpbiBEZW5vIGVudmlyb25tZW50cywgbm9kZTpmcyBpbiBOb2RlLmpzIChWaXRlKVxuICAgIGNvbnN0IGNvbnRlbnQgPSB0eXBlb2YgRGVubyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgID8gRGVuby5yZWFkVGV4dEZpbGVTeW5jKHBhdGgpXG4gICAgICA6IHJlcXVpcmUoJ25vZGU6ZnMnKS5yZWFkRmlsZVN5bmMocGF0aCwgJ3V0Zi04Jyk7XG4gICAgLy8gZGVuby5qc29uIGZpbGVzIG1heSBjb250YWluIGNvbW1lbnRzIC0gc3RyaXAgdGhlbSBiZWZvcmUgSlNPTi5wYXJzZS5cbiAgICAvLyBOYWl2ZSByZWdleCBicmVha3MgVVJMcyAoaHR0cHM6Ly8gLT4gaHR0cHM6KSwgc28gd2Ugd2FsayBjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyLFxuICAgIC8vIHRyYWNraW5nIHdoZXRoZXIgd2UncmUgaW5zaWRlIGEgc3RyaW5nIGxpdGVyYWwuXG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgIGxldCBpblN0cmluZyA9IGZhbHNlO1xuICAgIGxldCBlc2NhcGUgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRlbnQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoID0gY29udGVudFtpXTtcbiAgICAgIGlmIChlc2NhcGUpIHtcbiAgICAgICAgcmVzdWx0ICs9IGNoO1xuICAgICAgICBlc2NhcGUgPSBmYWxzZTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoY2ggPT09ICdcXFxcJykge1xuICAgICAgICByZXN1bHQgKz0gY2g7XG4gICAgICAgIGVzY2FwZSA9IHRydWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKGNoID09PSAnXCInKSB7XG4gICAgICAgIGluU3RyaW5nID0gIWluU3RyaW5nO1xuICAgICAgICByZXN1bHQgKz0gY2g7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFpblN0cmluZyAmJiBjaCA9PT0gJy8nICYmIGNvbnRlbnRbaSArIDFdID09PSAnLycpIHtcbiAgICAgICAgLy8gU2tpcCB1bnRpbCBlbmQgb2YgbGluZVxuICAgICAgICB3aGlsZSAoaSA8IGNvbnRlbnQubGVuZ3RoICYmIGNvbnRlbnRbaV0gIT09ICdcXG4nKSBpKys7XG4gICAgICAgIHJlc3VsdCArPSAnXFxuJztcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIWluU3RyaW5nICYmIGNoID09PSAnLycgJiYgY29udGVudFtpICsgMV0gPT09ICcqJykge1xuICAgICAgICAvLyBTa2lwIHVudGlsICovXG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgd2hpbGUgKGkgPCBjb250ZW50Lmxlbmd0aCAmJiAhKGNvbnRlbnRbaV0gPT09ICcqJyAmJiBjb250ZW50W2kgKyAxXSA9PT0gJy8nKSkgaSsrO1xuICAgICAgICBpKys7IC8vIHNraXAgcGFzdCAqL1xuICAgICAgICByZXN1bHQgKz0gJyAnO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCArPSBjaDtcbiAgICB9XG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVzdWx0KTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBXYWxrIHVwIGZyb20gc3RhcnREaXIgdG8gZmluZCBhIGRlbm8uanNvbiB3aXRoIGEgXCJ3b3Jrc3BhY2VcIiBmaWVsZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRXb3Jrc3BhY2VSb290KHN0YXJ0RGlyOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgbGV0IGRpciA9IHJlc29sdmUoc3RhcnREaXIpO1xuICBjb25zdCBmc1Jvb3QgPSByZXNvbHZlKCcvJyk7XG4gIHdoaWxlIChkaXIgIT09IGZzUm9vdCAmJiBkaXIgIT09IHJlc29sdmUoZGlyLCAnLi4nKSkge1xuICAgIGNvbnN0IGNmZyA9IHRyeVJlYWRKc29uKHJlc29sdmUoZGlyLCAnZGVuby5qc29uJykpO1xuICAgIGlmIChjZmc/LndvcmtzcGFjZSAmJiBBcnJheS5pc0FycmF5KGNmZy53b3Jrc3BhY2UpKSByZXR1cm4gZGlyO1xuICAgIGRpciA9IHJlc29sdmUoZGlyLCAnLi4nKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBWaXRlIHJlc29sdmUuYWxpYXMgZnJvbSB3b3Jrc3BhY2UgcGFja2FnZXMnIGRlbm8uanNvbiBleHBvcnRzLlxuICogU3VicGF0aCBhbGlhc2VzIGNvbWUgYmVmb3JlIHBhcmVudCAoVml0ZSBwcmVmaXggbWF0Y2hpbmcgcnVsZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVdvcmtzcGFjZUFsaWFzZXMod29ya3NwYWNlUm9vdDogc3RyaW5nKTogQWxpYXNFbnRyeVtdIHtcbiAgY29uc3Qgcm9vdENmZyA9IHRyeVJlYWRKc29uKHJlc29sdmUod29ya3NwYWNlUm9vdCwgJ2Rlbm8uanNvbicpKTtcbiAgaWYgKCFyb290Q2ZnKSByZXR1cm4gW107XG5cbiAgY29uc3QgbWVtYmVyczogc3RyaW5nW10gPSAocm9vdENmZy53b3Jrc3BhY2UgYXMgc3RyaW5nW10pIHx8IFtdO1xuICBjb25zdCBhbGlhc2VzOiBBbGlhc0VudHJ5W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IG1lbWJlciBvZiBtZW1iZXJzKSB7XG4gICAgY29uc3QgbWVtYmVyRGlyID0gcmVzb2x2ZSh3b3Jrc3BhY2VSb290LCBtZW1iZXIpO1xuICAgIGNvbnN0IG1lbWJlckNmZyA9IHRyeVJlYWRKc29uKHJlc29sdmUobWVtYmVyRGlyLCAnZGVuby5qc29uJykpO1xuICAgIGlmICghbWVtYmVyQ2ZnKSBjb250aW51ZTtcblxuICAgIGNvbnN0IG5hbWUgPSBtZW1iZXJDZmcubmFtZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgZXhwb3J0cyA9IG1lbWJlckNmZy5leHBvcnRzIGFzXG4gICAgICB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgICAgIHwgc3RyaW5nXG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIW5hbWUgfHwgIWV4cG9ydHMpIGNvbnRpbnVlO1xuXG4gICAgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnc3RyaW5nJykge1xuICAgICAgYWxpYXNlcy5wdXNoKHsgZmluZDogbmFtZSwgcmVwbGFjZW1lbnQ6IHJlc29sdmUobWVtYmVyRGlyLCBleHBvcnRzKSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIFN1YnBhdGggYWxpYXNlcyBmaXJzdCAoVml0ZSBwcmVmaXggbWF0Y2hpbmcpXG4gICAgZm9yIChjb25zdCBbZXhwb3J0UGF0aCwgc291cmNlUGF0aF0gb2YgT2JqZWN0LmVudHJpZXMoZXhwb3J0cykpIHtcbiAgICAgIGlmIChleHBvcnRQYXRoID09PSAnLicpIGNvbnRpbnVlO1xuICAgICAgY29uc3Qgc3VicGF0aCA9IGV4cG9ydFBhdGgucmVwbGFjZSgvXlxcLlxcLy8sICcvJyk7XG4gICAgICBhbGlhc2VzLnB1c2goe1xuICAgICAgICBmaW5kOiBgJHtuYW1lfSR7c3VicGF0aH1gLFxuICAgICAgICByZXBsYWNlbWVudDogcmVzb2x2ZShtZW1iZXJEaXIsIHNvdXJjZVBhdGggYXMgc3RyaW5nKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBQYXJlbnQgYWxpYXMgbGFzdC4gU3VicGF0aCBhbGlhc2VzIGFib3ZlIGFscmVhZHkgaGFuZGxlIGV2ZXJ5IGV4cG9ydGVkXG4gICAgLy8gc3VicGF0aCwgc28gYSBkaXJlY3QgaW1wb3J0IG9mIHRoZSBwYWNrYWdlIG5hbWUgcmVzb2x2ZXMgdG8gdGhlIFwiLi9cIlxuICAgIC8vIGV4cG9ydCBlbnRyeSB3aXRob3V0IGZhbGxpbmcgdGhyb3VnaCB0byBkaXJlY3RvcnktaW5kZXggaGV1cmlzdGljcy5cbiAgICBpZiAoZXhwb3J0c1snLiddKSB7XG4gICAgICBhbGlhc2VzLnB1c2goe1xuICAgICAgICBmaW5kOiBuYW1lLFxuICAgICAgICByZXBsYWNlbWVudDogcmVzb2x2ZShtZW1iZXJEaXIsIGV4cG9ydHNbJy4nXSBhcyBzdHJpbmcpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhbGlhc2VzO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Q0FNQyxHQUVELFNBQVMsT0FBTyxRQUFRLFlBQVk7QUFPcEMsU0FBUyxZQUFZLElBQVk7RUFDL0IsSUFBSTtJQUNGLHNEQUFzRDtJQUN0RCx3RUFB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
|