sonamu 0.9.4 → 0.9.6
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/dist/ai/providers/rtzr/utils.js +2 -2
- package/dist/api/config.d.ts +13 -2
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +1 -1
- package/dist/api/context.d.ts +17 -7
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +1 -1
- package/dist/api/decorators.d.ts +18 -0
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +54 -3
- package/dist/api/index.js +8 -3
- package/dist/api/sonamu.d.ts +24 -9
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +365 -79
- package/dist/api/websocket-helpers.d.ts +24 -0
- package/dist/api/websocket-helpers.d.ts.map +1 -0
- package/dist/api/websocket-helpers.js +77 -0
- package/dist/bin/cli.js +12 -4
- package/dist/database/upsert-builder.js +4 -4
- package/dist/dict/sonamu-dictionary.js +6 -6
- package/dist/entity/entity-manager.js +1 -1
- package/dist/entity/entity.js +3 -3
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -4
- package/dist/migration/code-generation.d.ts.map +1 -1
- package/dist/migration/code-generation.js +8 -9
- package/dist/stream/index.d.ts +6 -0
- package/dist/stream/index.d.ts.map +1 -1
- package/dist/stream/index.js +13 -2
- package/dist/stream/ws-audience-resolver.d.ts +15 -0
- package/dist/stream/ws-audience-resolver.d.ts.map +1 -0
- package/dist/stream/ws-audience-resolver.js +31 -0
- package/dist/stream/ws-audience.d.ts +28 -0
- package/dist/stream/ws-audience.d.ts.map +1 -0
- package/dist/stream/ws-audience.js +46 -0
- package/dist/stream/ws-cluster-bus.d.ts +23 -0
- package/dist/stream/ws-cluster-bus.d.ts.map +1 -0
- package/dist/stream/ws-cluster-bus.js +18 -0
- package/dist/stream/ws-core.d.ts +15 -0
- package/dist/stream/ws-core.d.ts.map +1 -0
- package/dist/stream/ws-core.js +1 -0
- package/dist/stream/ws-delivery.d.ts +24 -0
- package/dist/stream/ws-delivery.d.ts.map +1 -0
- package/dist/stream/ws-delivery.js +103 -0
- package/dist/stream/ws-local-connection-store.d.ts +10 -0
- package/dist/stream/ws-local-connection-store.d.ts.map +1 -0
- package/dist/stream/ws-local-connection-store.js +44 -0
- package/dist/stream/ws-presence-store.d.ts +61 -0
- package/dist/stream/ws-presence-store.d.ts.map +1 -0
- package/dist/stream/ws-presence-store.js +236 -0
- package/dist/stream/ws-registry.d.ts +42 -0
- package/dist/stream/ws-registry.d.ts.map +1 -0
- package/dist/stream/ws-registry.js +108 -0
- package/dist/stream/ws.d.ts +52 -0
- package/dist/stream/ws.d.ts.map +1 -0
- package/dist/stream/ws.js +397 -0
- package/dist/syncer/api-parser.d.ts.map +1 -1
- package/dist/syncer/api-parser.js +72 -2
- package/dist/syncer/checksum.d.ts.map +1 -1
- package/dist/syncer/checksum.js +13 -12
- package/dist/syncer/code-generator.d.ts.map +1 -1
- package/dist/syncer/code-generator.js +7 -4
- package/dist/syncer/event-batcher.d.ts +27 -0
- package/dist/syncer/event-batcher.d.ts.map +1 -0
- package/dist/syncer/event-batcher.js +69 -0
- package/dist/syncer/file-patterns.d.ts +48 -26
- package/dist/syncer/file-patterns.d.ts.map +1 -1
- package/dist/syncer/file-patterns.js +71 -23
- package/dist/syncer/file-tracking.d.ts +13 -0
- package/dist/syncer/file-tracking.d.ts.map +1 -0
- package/dist/syncer/file-tracking.js +33 -0
- package/dist/syncer/index.js +2 -2
- package/dist/syncer/module-loader.d.ts +2 -11
- package/dist/syncer/module-loader.d.ts.map +1 -1
- package/dist/syncer/module-loader.js +3 -3
- package/dist/syncer/syncer-actions.d.ts +39 -6
- package/dist/syncer/syncer-actions.d.ts.map +1 -1
- package/dist/syncer/syncer-actions.js +125 -10
- package/dist/syncer/syncer.d.ts +33 -19
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +168 -168
- package/dist/syncer/watcher.d.ts +8 -0
- package/dist/syncer/watcher.d.ts.map +1 -0
- package/dist/syncer/watcher.js +105 -0
- package/dist/tasks/workflow-manager.d.ts.map +1 -1
- package/dist/tasks/workflow-manager.js +2 -1
- package/dist/template/implementations/services.template.d.ts.map +1 -1
- package/dist/template/implementations/services.template.js +36 -1
- package/dist/testing/bootstrap.d.ts.map +1 -1
- package/dist/testing/bootstrap.js +8 -1
- package/dist/testing/data-explorer.d.ts.map +1 -1
- package/dist/testing/data-explorer.js +5 -3
- package/dist/testing/fixture-manager.js +1 -1
- package/dist/types/types.d.ts +2 -1
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +2 -2
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +4 -3
- package/dist/ui/cdd-service.js +1 -1
- package/dist/ui-web/assets/{index-C5KUjXm0.js → index-BmThfg-s.js} +39 -39
- package/dist/ui-web/assets/index-D4rYm-Xz.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/dist/utils/async-utils.d.ts +27 -3
- package/dist/utils/async-utils.d.ts.map +1 -1
- package/dist/utils/async-utils.js +56 -6
- package/dist/utils/formatter.d.ts +7 -1
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js +95 -60
- package/dist/utils/fs-utils.d.ts +2 -0
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +10 -2
- package/dist/utils/process-utils.d.ts +6 -0
- package/dist/utils/process-utils.d.ts.map +1 -1
- package/dist/utils/process-utils.js +16 -3
- package/dist/utils/utils.d.ts +1 -0
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +2 -2
- package/package.json +7 -5
- package/src/ai/providers/rtzr/utils.ts +1 -1
- package/src/api/__tests__/sonamu.websocket.test.ts +64 -0
- package/src/api/__tests__/websocket-context.types.test.ts +58 -0
- package/src/api/config.ts +28 -2
- package/src/api/context.ts +21 -7
- package/src/api/decorators.ts +101 -1
- package/src/api/sonamu.ts +529 -127
- package/src/api/websocket-helpers.ts +122 -0
- package/src/bin/cli.ts +10 -2
- package/src/database/upsert-builder.ts +3 -3
- package/src/dict/sonamu-dictionary.ts +3 -3
- package/src/entity/entity.ts +1 -1
- package/src/index.ts +6 -0
- package/src/migration/code-generation.ts +6 -11
- package/src/shared/app.shared.ts.txt +312 -4
- package/src/shared/web.shared.ts.txt +340 -4
- package/src/stream/__tests__/ws-contracts.test.ts +381 -0
- package/src/stream/__tests__/ws.test.ts +449 -0
- package/src/stream/index.ts +6 -0
- package/src/stream/ws-audience-resolver.ts +35 -0
- package/src/stream/ws-audience.ts +62 -0
- package/src/stream/ws-cluster-bus.ts +32 -0
- package/src/stream/ws-core.ts +16 -0
- package/src/stream/ws-delivery.ts +138 -0
- package/src/stream/ws-local-connection-store.ts +44 -0
- package/src/stream/ws-presence-store.ts +326 -0
- package/src/stream/ws-registry.ts +138 -0
- package/src/stream/ws.ts +591 -0
- package/src/syncer/__tests__/api-parser.websocket-type-ref.test.ts +78 -0
- package/src/syncer/api-parser.ts +112 -1
- package/src/syncer/checksum.ts +23 -29
- package/src/syncer/code-generator.ts +4 -1
- package/src/syncer/event-batcher.ts +72 -0
- package/src/syncer/file-patterns.ts +98 -30
- package/src/syncer/file-tracking.ts +27 -0
- package/src/syncer/module-loader.ts +5 -12
- package/src/syncer/syncer-actions.ts +179 -17
- package/src/syncer/syncer.ts +250 -287
- package/src/syncer/watcher.ts +128 -0
- package/src/tasks/workflow-manager.ts +1 -0
- package/src/template/__tests__/services.template.websocket.test.ts +79 -0
- package/src/template/implementations/services.template.ts +69 -0
- package/src/testing/bootstrap.ts +8 -1
- package/src/testing/data-explorer.ts +3 -2
- package/src/types/types.ts +20 -2
- package/src/ui/api.ts +10 -1
- package/src/utils/async-utils.ts +71 -4
- package/src/utils/formatter.ts +114 -75
- package/src/utils/fs-utils.ts +9 -0
- package/src/utils/process-utils.ts +17 -0
- package/src/utils/utils.ts +1 -1
- package/dist/ui-web/assets/index-Dr8pRJC_.css +0 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type FSWatcher } from "chokidar";
|
|
2
|
+
import { type AbsolutePath } from "../utils/path-utils";
|
|
3
|
+
/**
|
|
4
|
+
* Watcher를 설정합니다.
|
|
5
|
+
* 이 친구는 진짜로 syncer가 받아야 할 변경 이벤트들만 추려서 batch로 전달해줍니다.
|
|
6
|
+
*/
|
|
7
|
+
export declare function setupWatcher(onFileEvents: (fileEvents: Map<AbsolutePath, "change" | "add">) => Promise<void>): Promise<FSWatcher>;
|
|
8
|
+
//# sourceMappingURL=watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/syncer/watcher.ts"],"names":[],"mappings":"AAKA,OAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAIpD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,YAAY,EAAE,QAAQ,GAAG,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAC/E,OAAO,CAAC,SAAS,CAAC,CAyDpB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { __esmMin } from "../_virtual/rolldown_runtime.js";
|
|
2
|
+
import { Sonamu } from "../api/sonamu.js";
|
|
3
|
+
import { init_api } from "../api/index.js";
|
|
4
|
+
import { getChecksumPatternGroupInAbsolutePath, init_file_patterns } from "./file-patterns.js";
|
|
5
|
+
import { init_file_tracking, isLastChangedByMe } from "./file-tracking.js";
|
|
6
|
+
import { createFileEventBatcher, init_event_batcher } from "./event-batcher.js";
|
|
7
|
+
import { strict } from "assert";
|
|
8
|
+
import path from "path";
|
|
9
|
+
import chalk from "chalk";
|
|
10
|
+
import { minimatch } from "minimatch";
|
|
11
|
+
import chokidar from "chokidar";
|
|
12
|
+
|
|
13
|
+
//#region src/syncer/watcher.ts
|
|
14
|
+
/**
|
|
15
|
+
* Watcher를 설정합니다.
|
|
16
|
+
* 이 친구는 진짜로 syncer가 받아야 할 변경 이벤트들만 추려서 batch로 전달해줍니다.
|
|
17
|
+
*/
|
|
18
|
+
async function setupWatcher(onFileEvents) {
|
|
19
|
+
const watcher = chokidar.watch(apiAndTargetsSrcPaths(), {
|
|
20
|
+
ignored: ignoreIfExtensionIsNotOneOf(".ts", ".json", ".http"),
|
|
21
|
+
persistent: true,
|
|
22
|
+
ignoreInitial: true
|
|
23
|
+
});
|
|
24
|
+
const pushFileEvent = createFileEventBatcher({
|
|
25
|
+
delayMs: 100,
|
|
26
|
+
onFlush: async (fileEvents) => {
|
|
27
|
+
const realChanges = new Map();
|
|
28
|
+
for (const [p, e] of fileEvents) {
|
|
29
|
+
if (!await isLastChangedByMe(p)) {
|
|
30
|
+
realChanges.set(p, e);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (realChanges.size > 0) {
|
|
34
|
+
await onFileEvents(realChanges);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
watcher.on("all", (event, filePath) => {
|
|
39
|
+
const absolutePath = filePath;
|
|
40
|
+
strict(absolutePath.startsWith(Sonamu.appRootPath), "File path is not within the app root path");
|
|
41
|
+
if (!isWantedEvent(event)) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (isConfigChange(absolutePath)) {
|
|
45
|
+
triggerSelfRestart(event, filePath);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (isOutOfScope(absolutePath)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
pushFileEvent(absolutePath, event);
|
|
52
|
+
});
|
|
53
|
+
return watcher;
|
|
54
|
+
}
|
|
55
|
+
function apiAndTargetsSrcPaths() {
|
|
56
|
+
return [path.join(Sonamu.apiRootPath, "src"), ...Sonamu.config.sync.targets.map((t) => path.join(Sonamu.appRootPath, t, "src"))];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* chokidar의 `ignored` 옵션에 박는 헬퍼.
|
|
60
|
+
* 주어진 확장자가 *아닌* 파일은 무시합니다 — 즉 주어진 확장자만 watch 대상.
|
|
61
|
+
*
|
|
62
|
+
* chokidar `ignored`는 `true`를 반환하면 해당 경로를 무시합니다.
|
|
63
|
+
* 따라서 "이 확장자만 허용"을 표현하려면 *다른 확장자에 대해 true*를 반환해야 합니다.
|
|
64
|
+
*/
|
|
65
|
+
function ignoreIfExtensionIsNotOneOf(...allowedExtensions) {
|
|
66
|
+
const isAllowed = (ext) => allowedExtensions.includes(ext);
|
|
67
|
+
return (p, stats) => !!stats?.isFile() && !isAllowed(path.extname(p));
|
|
68
|
+
}
|
|
69
|
+
function isWantedEvent(event) {
|
|
70
|
+
return event === "change" || event === "add";
|
|
71
|
+
}
|
|
72
|
+
function isConfigChange(filePath) {
|
|
73
|
+
return filePath === path.join(Sonamu.apiRootPath, "src", "sonamu.config.ts");
|
|
74
|
+
}
|
|
75
|
+
function triggerSelfRestart(event, filePath) {
|
|
76
|
+
const relativePath = filePath.replace(Sonamu.apiRootPath, "api");
|
|
77
|
+
console.log(chalk.bold(`Detected(${event}): ${chalk.blue(relativePath)} - Restarting...`));
|
|
78
|
+
process.kill(process.pid, "SIGUSR2");
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 스코프 정의:
|
|
82
|
+
* - api/src 안의 모든 변경은 스코프 안 (HMR 대상이 될 수 있으므로)
|
|
83
|
+
* - api/src 밖이라면 checksumPatternGroup 패턴에 매칭되는 경로만 스코프 안
|
|
84
|
+
*
|
|
85
|
+
* 그 외(예: web/src/App.tsx 같은 target의 비추적 파일)는 스코프 밖이라 무시합니다.
|
|
86
|
+
*/
|
|
87
|
+
function isOutOfScope(filePath) {
|
|
88
|
+
const apiSrc = path.join(Sonamu.apiRootPath, "src");
|
|
89
|
+
if (filePath.startsWith(apiSrc)) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
const checkPatternGroup = getChecksumPatternGroupInAbsolutePath();
|
|
93
|
+
return !Object.values(checkPatternGroup).some((pattern) => minimatch(filePath, pattern));
|
|
94
|
+
}
|
|
95
|
+
var init_watcher = __esmMin((() => {
|
|
96
|
+
init_api();
|
|
97
|
+
init_event_batcher();
|
|
98
|
+
init_file_patterns();
|
|
99
|
+
init_file_tracking();
|
|
100
|
+
}));
|
|
101
|
+
|
|
102
|
+
//#endregion
|
|
103
|
+
init_watcher();
|
|
104
|
+
export { setupWatcher };
|
|
105
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL3dhdGNoZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3RyaWN0IGFzIGFzc2VydCB9IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7IHR5cGUgU3RhdHMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IGNob2tpZGFyLCB7IHR5cGUgRlNXYXRjaGVyIH0gZnJvbSBcImNob2tpZGFyXCI7XG5pbXBvcnQgeyBtaW5pbWF0Y2ggfSBmcm9tIFwibWluaW1hdGNoXCI7XG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGlcIjtcbmltcG9ydCB7IHR5cGUgQWJzb2x1dGVQYXRoIH0gZnJvbSBcIi4uL3V0aWxzL3BhdGgtdXRpbHNcIjtcbmltcG9ydCB7IGNyZWF0ZUZpbGVFdmVudEJhdGNoZXIgfSBmcm9tIFwiLi9ldmVudC1iYXRjaGVyXCI7XG5pbXBvcnQgeyBnZXRDaGVja3N1bVBhdHRlcm5Hcm91cEluQWJzb2x1dGVQYXRoIH0gZnJvbSBcIi4vZmlsZS1wYXR0ZXJuc1wiO1xuaW1wb3J0IHsgaXNMYXN0Q2hhbmdlZEJ5TWUgfSBmcm9tIFwiLi9maWxlLXRyYWNraW5nXCI7XG5cbi8qKlxuICogV2F0Y2hlcuulvCDshKTsoJXtlanri4jri6QuXG4gKiDsnbQg7Lmc6rWs64qUIOynhOynnOuhnCBzeW5jZXLqsIAg67Cb7JWE7JW8IO2VoCDrs4Dqsr0g7J2067Kk7Yq465Ok66eMIOy2lOugpOyEnCBiYXRjaOuhnCDsoITri6ztlbTspI3ri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXR1cFdhdGNoZXIoXG4gIG9uRmlsZUV2ZW50czogKGZpbGVFdmVudHM6IE1hcDxBYnNvbHV0ZVBhdGgsIFwiY2hhbmdlXCIgfCBcImFkZFwiPikgPT4gUHJvbWlzZTx2b2lkPixcbik6IFByb21pc2U8RlNXYXRjaGVyPiB7XG4gIC8vIGFwaSDrs7jsnbjrv5Ag7JWE64uI6528IHN5bmMgdGFyZ2V065Ok7J2YIHNyY+uPhCDrtIXri4jri6QuXG4gIC8vIHRhcmdldCDsgrDstpzrrLwoc29uYW11LmdlbmVyYXRlZCwgc2VydmljZXMuZ2VuZXJhdGVkLCBpMThuIGNvcHkg65OxKeydtCDsmbjrtoDsl5DshJxcbiAgLy8g67OA6rK965CY64qUIOqyveyasOulvCBkcmlmdOuhnCDsnqHslYQg7JuM64ud7J2EIOudhOyasOq4sCDsnITtlajsnoXri4jri6QuXG4gIGNvbnN0IHdhdGNoZXIgPSBjaG9raWRhci53YXRjaChhcGlBbmRUYXJnZXRzU3JjUGF0aHMoKSwge1xuICAgIGlnbm9yZWQ6IGlnbm9yZUlmRXh0ZW5zaW9uSXNOb3RPbmVPZihcIi50c1wiLCBcIi5qc29uXCIsIFwiLmh0dHBcIiksXG4gICAgcGVyc2lzdGVudDogdHJ1ZSxcbiAgICBpZ25vcmVJbml0aWFsOiB0cnVlLFxuICB9KTtcblxuICAvLyAxMDBtcyDslYjsl5Ag65Ok7Ja07JioIOuzgOqyveuTpOydhCDtlZwgYmF0Y2jroZwg66qo7JWEIO2VnCDsgqzsnbTtgbTroZwg7LKY66as7ZWp64uI64ukLlxuICBjb25zdCBwdXNoRmlsZUV2ZW50ID0gY3JlYXRlRmlsZUV2ZW50QmF0Y2hlcjxcImNoYW5nZVwiIHwgXCJhZGRcIj4oe1xuICAgIGRlbGF5TXM6IDEwMCxcbiAgICBvbkZsdXNoOiBhc3luYyAoZmlsZUV2ZW50cykgPT4ge1xuICAgICAgY29uc3QgcmVhbENoYW5nZXMgPSBuZXcgTWFwPEFic29sdXRlUGF0aCwgXCJjaGFuZ2VcIiB8IFwiYWRkXCI+KCk7XG4gICAgICBmb3IgKGNvbnN0IFtwLCBlXSBvZiBmaWxlRXZlbnRzKSB7XG4gICAgICAgIC8vIHNlbGYtd3JpdGUgZWNob+uKlCBmbHVzaCDsi5zsoJDsl5Ag6rGw66aF64uI64ukLlxuICAgICAgICAvLyB3YXRjaGVyLm9u7JeQ7IScIOymieyLnCDqsbDrpbTrqbQg64SI66y0IOydtOumheuLiOuLpC5cbiAgICAgICAgLy8g7Jes6riw7JeQ7ISc64qUIO2MjOydvOydtCDrlJTsiqTtgazsl5Ag7JOw7J206rOgIOuCmOyEnCDslb3qsITsnZgg65Sc66CI7J206rCAIOyeiOq4sCDrlYzrrLjsl5BcbiAgICAgICAgLy8gXCLrlJTsiqTtgazsl5Ag7I287KeA66eMIOyVhOyngSB0cmFja1dyaXR0ZW7snbQg7JmE66OM65CY6riwIOyghCDsg4Htg5xcIiDqsJnsnYAg66y47KCc6rCAIOyCrOudvOynkeuLiOuLpC5cbiAgICAgICAgaWYgKCEoYXdhaXQgaXNMYXN0Q2hhbmdlZEJ5TWUocCkpKSB7XG4gICAgICAgICAgcmVhbENoYW5nZXMuc2V0KHAsIGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmVhbENoYW5nZXMuc2l6ZSA+IDApIHtcbiAgICAgICAgYXdhaXQgb25GaWxlRXZlbnRzKHJlYWxDaGFuZ2VzKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICB3YXRjaGVyLm9uKFwiYWxsXCIsIChldmVudDogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gZmlsZVBhdGggYXMgQWJzb2x1dGVQYXRoO1xuICAgIGFzc2VydChcbiAgICAgIGFic29sdXRlUGF0aC5zdGFydHNXaXRoKFNvbmFtdS5hcHBSb290UGF0aCksXG4gICAgICBcIkZpbGUgcGF0aCBpcyBub3Qgd2l0aGluIHRoZSBhcHAgcm9vdCBwYXRoXCIsXG4gICAgKTtcblxuICAgIGlmICghaXNXYW50ZWRFdmVudChldmVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNDb25maWdDaGFuZ2UoYWJzb2x1dGVQYXRoKSkge1xuICAgICAgdHJpZ2dlclNlbGZSZXN0YXJ0KGV2ZW50LCBmaWxlUGF0aCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzT3V0T2ZTY29wZShhYnNvbHV0ZVBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8g7Jes6riw6rmM7KeAIOyZlOuLpOuptCBzeW5jZXLqsIAg7KeE7Kec66GcIOyymOumrO2VtOyVvCDtlaAg67OA6rK97IKs7ZWt7J2065286rOgIOuztOuptCDrkKnri4jri6QuXG4gICAgLy8g7J20IO2YuOy2nOydgCDsnbTrsqTtirjrpbwgYmF0Y2hlcuyXkCDsjJPsirXri4jri6QuXG4gICAgLy8g7J207ZuEIOuVjOqwgCDrkJjrqbQg7J2066CH6rKMIOyMk+yduCDsnbTrsqTtirjrpbwg65Ok6rOgIG9uRmlsZUV2ZW50cyDsvZzrsLHsnbQg7Zi47Lac65Cp64uI64ukLlxuICAgIHB1c2hGaWxlRXZlbnQoYWJzb2x1dGVQYXRoLCBldmVudCk7XG4gIH0pO1xuXG4gIHJldHVybiB3YXRjaGVyO1xufVxuXG5mdW5jdGlvbiBhcGlBbmRUYXJnZXRzU3JjUGF0aHMoKSB7XG4gIHJldHVybiBbXG4gICAgcGF0aC5qb2luKFNvbmFtdS5hcGlSb290UGF0aCwgXCJzcmNcIiksXG4gICAgLi4uU29uYW11LmNvbmZpZy5zeW5jLnRhcmdldHMubWFwKCh0KSA9PiBwYXRoLmpvaW4oU29uYW11LmFwcFJvb3RQYXRoLCB0LCBcInNyY1wiKSksXG4gIF07XG59XG5cbi8qKlxuICogY2hva2lkYXLsnZggYGlnbm9yZWRgIOyYteyFmOyXkCDrsJXripQg7Zes7Y28LlxuICog7KO87Ja07KeEIO2ZleyepeyekOqwgCAq7JWE64uMKiDtjIzsnbzsnYAg66y07Iuc7ZWp64uI64ukIOKAlCDspokg7KO87Ja07KeEIO2ZleyepeyekOunjCB3YXRjaCDrjIDsg4EuXG4gKlxuICogY2hva2lkYXIgYGlnbm9yZWRg64qUIGB0cnVlYOulvCDrsJjtmZjtlZjrqbQg7ZW064u5IOqyveuhnOulvCDrrLTsi5ztlanri4jri6QuXG4gKiDrlLDrnbzshJwgXCLsnbQg7ZmV7J6l7J6Q66eMIO2XiOyaqVwi7J2EIO2RnO2YhO2VmOugpOuptCAq64uk66W4IO2ZleyepeyekOyXkCDrjIDtlbQgdHJ1ZSrrpbwg67CY7ZmY7ZW07JW8IO2VqeuLiOuLpC5cbiAqL1xuZnVuY3Rpb24gaWdub3JlSWZFeHRlbnNpb25Jc05vdE9uZU9mKC4uLmFsbG93ZWRFeHRlbnNpb25zOiBgLiR7c3RyaW5nfWBbXSkge1xuICBjb25zdCBpc0FsbG93ZWQgPSAoZXh0OiBzdHJpbmcpID0+IChhbGxvd2VkRXh0ZW5zaW9ucyBhcyBzdHJpbmdbXSkuaW5jbHVkZXMoZXh0KTtcblxuICByZXR1cm4gKHA6IHN0cmluZywgc3RhdHM/OiBTdGF0cykgPT4gISFzdGF0cz8uaXNGaWxlKCkgJiYgIWlzQWxsb3dlZChwYXRoLmV4dG5hbWUocCkpO1xufVxuXG5mdW5jdGlvbiBpc1dhbnRlZEV2ZW50KGV2ZW50OiBzdHJpbmcpOiBldmVudCBpcyBcImNoYW5nZVwiIHwgXCJhZGRcIiB7XG4gIHJldHVybiBldmVudCA9PT0gXCJjaGFuZ2VcIiB8fCBldmVudCA9PT0gXCJhZGRcIjtcbn1cblxuZnVuY3Rpb24gaXNDb25maWdDaGFuZ2UoZmlsZVBhdGg6IEFic29sdXRlUGF0aCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmlsZVBhdGggPT09IHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIFwic3JjXCIsIFwic29uYW11LmNvbmZpZy50c1wiKTtcbn1cblxuZnVuY3Rpb24gdHJpZ2dlclNlbGZSZXN0YXJ0KGV2ZW50OiBzdHJpbmcsIGZpbGVQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgcmVsYXRpdmVQYXRoID0gZmlsZVBhdGgucmVwbGFjZShTb25hbXUuYXBpUm9vdFBhdGgsIFwiYXBpXCIpO1xuICBjb25zb2xlLmxvZyhjaGFsay5ib2xkKGBEZXRlY3RlZCgke2V2ZW50fSk6ICR7Y2hhbGsuYmx1ZShyZWxhdGl2ZVBhdGgpfSAtIFJlc3RhcnRpbmcuLi5gKSk7XG4gIHByb2Nlc3Mua2lsbChwcm9jZXNzLnBpZCwgXCJTSUdVU1IyXCIpO1xufVxuXG4vKipcbiAqIOyKpOy9lO2UhCDsoJXsnZg6XG4gKiAtIGFwaS9zcmMg7JWI7J2YIOuqqOuToCDrs4Dqsr3snYAg7Iqk7L2U7ZSEIOyViCAoSE1SIOuMgOyDgeydtCDrkKAg7IiYIOyeiOycvOuvgOuhnClcbiAqIC0gYXBpL3NyYyDrsJbsnbTrnbzrqbQgY2hlY2tzdW1QYXR0ZXJuR3JvdXAg7Yyo7YS07JeQIOunpOy5reuQmOuKlCDqsr3roZzrp4wg7Iqk7L2U7ZSEIOyViFxuICpcbiAqIOq3uCDsmbgo7JiIOiB3ZWIvc3JjL0FwcC50c3gg6rCZ7J2AIHRhcmdldOydmCDruYTstpTsoIEg7YyM7J28KeuKlCDsiqTsvZTtlIQg67CW7J206528IOustOyLnO2VqeuLiOuLpC5cbiAqL1xuZnVuY3Rpb24gaXNPdXRPZlNjb3BlKGZpbGVQYXRoOiBBYnNvbHV0ZVBhdGgpOiBib29sZWFuIHtcbiAgY29uc3QgYXBpU3JjID0gcGF0aC5qb2luKFNvbmFtdS5hcGlSb290UGF0aCwgXCJzcmNcIik7XG4gIGlmIChmaWxlUGF0aC5zdGFydHNXaXRoKGFwaVNyYykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgY2hlY2tQYXR0ZXJuR3JvdXAgPSBnZXRDaGVja3N1bVBhdHRlcm5Hcm91cEluQWJzb2x1dGVQYXRoKCk7XG4gIHJldHVybiAhT2JqZWN0LnZhbHVlcyhjaGVja1BhdHRlcm5Hcm91cCkuc29tZSgocGF0dGVybikgPT4gbWluaW1hdGNoKGZpbGVQYXRoLCBwYXR0ZXJuKSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLGVBQXNCLGFBQ3BCLGNBQ29CO0NBSXBCLE1BQU0sVUFBVSxTQUFTLE1BQU0sdUJBQXVCLEVBQUU7RUFDdEQsU0FBUyw0QkFBNEIsT0FBTyxTQUFTLFFBQVE7RUFDN0QsWUFBWTtFQUNaLGVBQWU7RUFDaEIsQ0FBQztDQUdGLE1BQU0sZ0JBQWdCLHVCQUF5QztFQUM3RCxTQUFTO0VBQ1QsU0FBUyxPQUFPLGVBQWU7R0FDN0IsTUFBTSxjQUFjLElBQUksS0FBcUM7QUFDN0QsUUFBSyxNQUFNLENBQUMsR0FBRyxNQUFNLFlBQVk7QUFLL0IsUUFBSSxDQUFFLE1BQU0sa0JBQWtCLEVBQUUsRUFBRztBQUNqQyxpQkFBWSxJQUFJLEdBQUcsRUFBRTs7O0FBR3pCLE9BQUksWUFBWSxPQUFPLEdBQUc7QUFDeEIsVUFBTSxhQUFhLFlBQVk7OztFQUdwQyxDQUFDO0FBRUYsU0FBUSxHQUFHLFFBQVEsT0FBZSxhQUFxQjtFQUNyRCxNQUFNLGVBQWU7QUFDckIsU0FDRSxhQUFhLFdBQVcsT0FBTyxZQUFZLEVBQzNDLDRDQUNEO0FBRUQsTUFBSSxDQUFDLGNBQWMsTUFBTSxFQUFFO0FBQ3pCOztBQUdGLE1BQUksZUFBZSxhQUFhLEVBQUU7QUFDaEMsc0JBQW1CLE9BQU8sU0FBUztBQUNuQzs7QUFHRixNQUFJLGFBQWEsYUFBYSxFQUFFO0FBQzlCOztBQU1GLGdCQUFjLGNBQWMsTUFBTTtHQUNsQztBQUVGLFFBQU87O0FBR1QsU0FBUyx3QkFBd0I7QUFDL0IsUUFBTyxDQUNMLEtBQUssS0FBSyxPQUFPLGFBQWEsTUFBTSxFQUNwQyxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsS0FBSyxNQUFNLEtBQUssS0FBSyxPQUFPLGFBQWEsR0FBRyxNQUFNLENBQUMsQ0FDbEY7Ozs7Ozs7OztBQVVILFNBQVMsNEJBQTRCLEdBQUcsbUJBQW1DO0NBQ3pFLE1BQU0sYUFBYSxRQUFpQixrQkFBK0IsU0FBUyxJQUFJO0FBRWhGLFNBQVEsR0FBVyxVQUFrQixDQUFDLENBQUMsT0FBTyxRQUFRLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7O0FBR3ZGLFNBQVMsY0FBYyxPQUEwQztBQUMvRCxRQUFPLFVBQVUsWUFBWSxVQUFVOztBQUd6QyxTQUFTLGVBQWUsVUFBaUM7QUFDdkQsUUFBTyxhQUFhLEtBQUssS0FBSyxPQUFPLGFBQWEsT0FBTyxtQkFBbUI7O0FBRzlFLFNBQVMsbUJBQW1CLE9BQWUsVUFBd0I7Q0FDakUsTUFBTSxlQUFlLFNBQVMsUUFBUSxPQUFPLGFBQWEsTUFBTTtBQUNoRSxTQUFRLElBQUksTUFBTSxLQUFLLFlBQVksTUFBTSxLQUFLLE1BQU0sS0FBSyxhQUFhLENBQUMsa0JBQWtCLENBQUM7QUFDMUYsU0FBUSxLQUFLLFFBQVEsS0FBSyxVQUFVOzs7Ozs7Ozs7QUFVdEMsU0FBUyxhQUFhLFVBQWlDO0NBQ3JELE1BQU0sU0FBUyxLQUFLLEtBQUssT0FBTyxhQUFhLE1BQU07QUFDbkQsS0FBSSxTQUFTLFdBQVcsT0FBTyxFQUFFO0FBQy9CLFNBQU87O0NBRVQsTUFBTSxvQkFBb0IsdUNBQXVDO0FBQ2pFLFFBQU8sQ0FBQyxPQUFPLE9BQU8sa0JBQWtCLENBQUMsTUFBTSxZQUFZLFVBQVUsVUFBVSxRQUFRLENBQUM7OztXQXRIMUQ7cUJBRXlCO3FCQUNlO3FCQUNwQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-manager.d.ts","sourceRoot":"","sources":["../../src/tasks/workflow-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAgB,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAErB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAWjC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,WAAW,eAAe;IAE9B,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,SAAS,CAAC,EAAE,OAAO,CAAC;IAGpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,MAAM,gBAAgB,CAAC,KAAK,EAAE,MAAM,IAAI,CAC5C,MAAM,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC,KACC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAG9B,MAAM,MAAM,qBAAqB,CAC/B,KAAK,EACL,MAAM,EACN,OAAO,SAAS,gBAAgB,GAAG,SAAS,GAAG,SAAS,IACtD,IAAI,CACN,YAAY,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAC/E,SAAS,CACV,GAAG;IACF,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;CAClE,CAAC;AAEF,qBAAa,eAAe;;gBAwBd,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,GAAE,OAAc;IAY9D,IAAI,OAAO,IAAI,eAAe,CAE7B;IAED,IAAI,mBAAmB;;;;;;;;;QAatB;IAED;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAuF9D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,SAAS,gBAAgB,GAAG,SAAS,GAAG,SAAS,EACzE,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC,EAC1F,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,GACjC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAW/B,YAAY,CAChB,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,EAC3D,QAAQ,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;IAmC3C,cAAc,CAAC,IAAI,EAAE,MAAM;IAkBjC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,SAAS,gBAAgB,GAAG,SAAS,GAAG,SAAS,EACtF,OAAO,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,GACrD,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-manager.d.ts","sourceRoot":"","sources":["../../src/tasks/workflow-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -131,6 +131,7 @@ var init_workflow_manager = __esmMin((() => {
|
|
|
131
131
|
registerWorkflow(options) {
|
|
132
132
|
const fn = async (params) => {
|
|
133
133
|
const baseContext = {
|
|
134
|
+
transport: "http",
|
|
134
135
|
request: null,
|
|
135
136
|
reply: null,
|
|
136
137
|
headers: {},
|
|
@@ -193,4 +194,4 @@ var init_workflow_manager = __esmMin((() => {
|
|
|
193
194
|
//#endregion
|
|
194
195
|
init_workflow_manager();
|
|
195
196
|
export { WorkflowManager };
|
|
196
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctbWFuYWdlci5qcyIsIm5hbWVzIjpbIiNiYWNrZW5kIiwiI293IiwiI3dvcmtlciIsIiN3b3JrZmxvd3NNYXAiLCIjc2NoZWR1bGVkVGFza3MiLCJzY2hlZHVsZSIsImNyb25TY2hlZHVsZSIsImNvbnRleHQ6IENvbnRleHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFza3Mvd29ya2Zsb3ctbWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcblxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IHR5cGUgTG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IEJhY2tlbmRQb3N0Z3JlcywgT3BlbldvcmtmbG93IH0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzXCI7XG5pbXBvcnQgeyB0eXBlIFdvcmtlciB9IGZyb20gXCJAc29uYW11LWtpdC90YXNrc1wiO1xuaW1wb3J0IHsgc2VyaWFsaXplUmV0cnlQb2xpY3kgfSBmcm9tIFwiQHNvbmFtdS1raXQvdGFza3MvaW50ZXJuYWxcIjtcbmltcG9ydCB7XG4gIHR5cGUgUnVubmFibGVXb3JrZmxvdyxcbiAgdHlwZSBTY2hlbWFJbnB1dCxcbiAgdHlwZSBTY2hlbWFPdXRwdXQsXG4gIHR5cGUgU3RhbmRhcmRTY2hlbWFWMSxcbiAgdHlwZSBTdGVwQXBpLFxuICB0eXBlIFdvcmtmbG93UnVuSGFuZGxlLFxuICB0eXBlIFdvcmtmbG93U3BlYyxcbn0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzL2ludGVybmFsXCI7XG5pbXBvcnQgeyB0eXBlIEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHsgc2NoZWR1bGUgYXMgY3JvblNjaGVkdWxlIH0gZnJvbSBcIm5vZGUtY3JvblwiO1xuaW1wb3J0IHsgdHlwZSBTY2hlZHVsZWRUYXNrIH0gZnJvbSBcIm5vZGUtY3JvblwiO1xuaW1wb3J0IHsgdHlwZSBab2RPYmplY3QgfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IHR5cGUgQ29udGV4dCB9IGZyb20gXCIuLi9hcGkvY29udGV4dFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IGNvbnZlcnREb21haW5Ub0NhdGVnb3J5IH0gZnJvbSBcIi4uL2xvZ2dlci9jYXRlZ29yeVwiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IGNyZWF0ZU1vY2tTU0VGYWN0b3J5IH0gZnJvbSBcIi4uL3N0cmVhbS9zc2VcIjtcbmltcG9ydCB7IHR5cGUgRXhlY3V0YWJsZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBXb3JrZmxvd01ldGFkYXRhIH0gZnJvbSBcIi4vZGVjb3JhdG9yXCI7XG5pbXBvcnQgeyBTdGVwV3JhcHBlciB9IGZyb20gXCIuL3N0ZXAtd3JhcHBlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93T3B0aW9ucyB7XG4gIC8vIHdvcmtlcuyXkOyEnCDrj5nsi5wg7Iuk7ZaJ7ZWgIO2DnOyKpO2BrCDsiJgsIOq4sOuzuOydgCAxXG4gIGNvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8vIHdvcmtlcuyXkOyEnCDsgqzsmqntlaAgcHViL3N1YiDsl6zrtoAsIOq4sOuzuOydgCB0cnVlXG4gIHVzZVB1YlN1Yj86IGJvb2xlYW47XG5cbiAgLy8gcHViL3N1YuycvOuhnCDtg5zsiqTtgazrpbwg7IiY7Iug7ZaI7J2EIOuVjCDsm4ztgaztlIzroZzsmrAg7Iuk7ZaJ6rmM7KeAIOyngOyXsCDsi5zqsIQsIOq4sOuzuOydgCA1MDBtc1xuICBsaXN0ZW5EZWxheT86IG51bWJlcjtcbn1cblxuLy8gV29ya2Zsb3cg7ZWo7IiY7J2YIO2DgOyehSwgQHNvbmFtdS1raXQvdGFza3PsmYAg64uk66W4IOygkOydgCBzdGVw7J2EIO2VnOuyiCDqsJDsi7wg7ZiV7YOcLlxuZXhwb3J0IHR5cGUgV29ya2Zsb3dGdW5jdGlvbjxJbnB1dCwgT3V0cHV0PiA9IChcbiAgcGFyYW1zOiBSZWFkb25seTx7XG4gICAgbG9nZ2VyOiBMb2dnZXI7XG4gICAgaW5wdXQ6IElucHV0O1xuICAgIHN0ZXA6IFN0ZXBXcmFwcGVyO1xuICAgIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIH0+LFxuKSA9PiBQcm9taXNlPE91dHB1dD4gfCBPdXRwdXQ7XG5cbi8vIFdvcmtmbG9366W8IOuTseuhne2VoCDrlYzrpbwg7JyE7ZWcIO2DgOyehVxuZXhwb3J0IHR5cGUgV29ya2Zsb3dDcmVhdGVPcHRpb25zPFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUU2NoZW1hIGV4dGVuZHMgU3RhbmRhcmRTY2hlbWFWMSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbj4gPSBPbWl0PFxuICBXb3JrZmxvd1NwZWM8U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0LCBTY2hlbWFJbnB1dDxUU2NoZW1hLCBJbnB1dD4+LFxuICBcInZlcnNpb25cIlxuPiAmIHtcbiAgaWQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgZnVuY3Rpb246IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0Pjtcbn07XG5cbmV4cG9ydCBjbGFzcyBXb3JrZmxvd01hbmFnZXIge1xuICAvLyBiYWNrZW5kIOyduOyKpO2EtOyKpFxuICByZWFkb25seSAjYmFja2VuZDogQmFja2VuZFBvc3RncmVzO1xuXG4gIC8vIE9wZW5Xb3JrZmxvdyDsnbjsiqTthLTsiqRcbiAgcmVhZG9ubHkgI293OiBPcGVuV29ya2Zsb3c7XG5cbiAgLy8gV29ya2VyIOyduOyKpO2EtOyKpCAo7JeG7J2EIOyImCDsnojsnLzrqbAsIOydtCDrlYzripQg67aE7IKw65CcIOyEnOuyhCDtmZjqsr3sl5DshJwgRELsl5AgcHVibGlzaOunjCDtlZzri6Tqs6Ag6rCA7KCV7ZWoKVxuICAjd29ya2VyOiBXb3JrZXIgfCBudWxsO1xuXG4gIC8vIO2MjOydvCDqsr3roZwgLT4g7YyM7J287JeQIOygleydmOuQnCDsm4ztgaztlIzroZzsmrAg66mU7YOA642w7J207YSwIOuqqeuhnVxuICAjd29ya2Zsb3dzTWFwOiBNYXA8c3RyaW5nLCBXb3JrZmxvd01ldGFkYXRhW10+O1xuXG4gIC8vIFRhc2sg7J2066aEIC0+IFRhc2sg7KCV67O0IOuwjyBJbnB1dCDqsJIsIFdvcmtmbG93IElEXG4gICNzY2hlZHVsZWRUYXNrczogTWFwPFxuICAgIHN0cmluZyxcbiAgICB7XG4gICAgICB0YXNrOiBTY2hlZHVsZWRUYXNrO1xuICAgICAgaW5wdXRGbjogRXhlY3V0YWJsZTxTY2hlbWFJbnB1dDx1bmtub3duLCB1bmtub3duPj47XG4gICAgICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gICAgfVxuICA+O1xuXG4gIC8vIEJhY2tlbmRQb3N0Z3Jlc+yXkOyEnCDsspjrpqztlZjripQg6rKD65Ok7J20IOyeiOyWtOyEnCBLbmV4IOy7pOuEpeyFmOydtCDslYTri4jrnbwg7ISk7KCV6rCS7J2EIOuEo+yWtOykmOyVvO2VqC5cbiAgY29uc3RydWN0b3IoZGJDb25mOiBLbmV4LkNvbmZpZywgcnVuTWlncmF0aW9uczogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCBiYWNrZW5kID0gbmV3IEJhY2tlbmRQb3N0Z3JlcyhkYkNvbmYsIHsgcnVuTWlncmF0aW9ucyB9KTtcblxuICAgIHRoaXMuI2JhY2tlbmQgPSBiYWNrZW5kO1xuICAgIHRoaXMuI293ID0gbmV3IE9wZW5Xb3JrZmxvdyh7IGJhY2tlbmQgfSk7XG4gICAgdGhpcy4jd29ya2VyID0gbnVsbDtcblxuICAgIHRoaXMuI3dvcmtmbG93c01hcCA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcyA9IG5ldyBNYXAoKTtcbiAgfVxuXG4gIC8vIFNvbmFtdSBVSSBBUEnsl5DshJwg7JuM7YGs7ZSM66Gc7JqwIOyLpO2WiSDrqqnroZ0g7KGw7ZqMLCDst6jshowg65Ox7JeQIOyCrOyaqe2VqeuLiOuLpC5cbiAgZ2V0IGJhY2tlbmQoKTogQmFja2VuZFBvc3RncmVzIHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZDtcbiAgfVxuXG4gIGdldCB3b3JrZmxvd0RlZmluaXRpb25zKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuI3dvcmtmbG93c01hcC52YWx1ZXMoKSlcbiAgICAgIC5mbGF0KClcbiAgICAgIC5tYXAoKHdmKSA9PiAoe1xuICAgICAgICBpZDogd2YuaWQsXG4gICAgICAgIG5hbWU6IHdmLm5hbWUsXG4gICAgICAgIHZlcnNpb246IHdmLnZlcnNpb24sXG4gICAgICAgIHNjaGVkdWxlczogd2Yuc2NoZWR1bGVzLm1hcCgocykgPT4gKHtcbiAgICAgICAgICBuYW1lOiBzLm5hbWUsXG4gICAgICAgICAgZXhwcmVzc2lvbjogcy5leHByZXNzaW9uLFxuICAgICAgICB9KSksXG4gICAgICAgIHJldHJ5UG9saWN5OiB3Zi5yZXRyeVBvbGljeSA/IHNlcmlhbGl6ZVJldHJ5UG9saWN5KHdmLnJldHJ5UG9saWN5KSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDsoJXsnZjrkJwg7JuM7YGs7ZSM66Gc7JqwIOuwjyDsm4ztgaztlIzroZzsmrDsl5Ag64yA7ZWcIHNjaGVkdWxlZCB0YXNrc+ulvCDrj5nquLDtmZTtlanri4jri6QuXG4gICAqL1xuICBhc3luYyBzeW5jaHJvbml6ZSh3b3JrZmxvd01hcDogTWFwPHN0cmluZywgV29ya2Zsb3dNZXRhZGF0YVtdPikge1xuICAgIC8vIDEuIOyCreygnOuQnCDtjIzsnbzsnYAg7J286rSEIOyCreygnFxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20odGhpcy4jd29ya2Zsb3dzTWFwLmVudHJpZXMoKSlcbiAgICAgICAgLmZpbHRlcigoW2tleV0pID0+ICF3b3JrZmxvd01hcC5oYXMoa2V5KSlcbiAgICAgICAgLmZsYXRNYXAoKFtfLCB3b3JrZmxvd3NdKSA9PlxuICAgICAgICAgIHdvcmtmbG93cy5tYXAoKHdvcmtmbG93KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFtcbiAgICAgICAgICAgICAgLi4ud29ya2Zsb3cuc2NoZWR1bGVzLm1hcCgoc2NoZWR1bGUpID0+IHRoaXMudW5zY2hlZHVsZVRhc2soc2NoZWR1bGUubmFtZSkpLFxuICAgICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJXb3JrZmxvdyh3b3JrZmxvdyksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgLy8gMi4g7IOI66GcIOy2lOqwgOuQnCDtjIzsnbzsnYAg7J286rSEIOuTseuhnVxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20od29ya2Zsb3dNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIXRoaXMuI3dvcmtmbG93c01hcC5oYXMoa2V5KSlcbiAgICAgICAgLmZsYXRNYXAoKFtfLCB3b3JrZmxvd3NdKSA9PlxuICAgICAgICAgIHdvcmtmbG93cy5tYXAoKHdvcmtmbG93KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyV29ya2Zsb3coe1xuICAgICAgICAgICAgICBpZDogd29ya2Zsb3cuaWQsXG4gICAgICAgICAgICAgIG5hbWU6IHdvcmtmbG93Lm5hbWUsXG4gICAgICAgICAgICAgIHZlcnNpb246IHdvcmtmbG93LnZlcnNpb24gPz8gbnVsbCxcbiAgICAgICAgICAgICAgc2NoZW1hOiB3b3JrZmxvdy5zY2hlbWEsXG4gICAgICAgICAgICAgIGZ1bmN0aW9uOiB3b3JrZmxvdy5mbixcbiAgICAgICAgICAgICAgcmV0cnlQb2xpY3k6IHdvcmtmbG93LnJldHJ5UG9saWN5LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICAgIHdvcmtmbG93LnNjaGVkdWxlcy5tYXAoKHNjaGVkdWxlKSA9PiB0aGlzLnNjaGVkdWxlVGFzayh3b3JrZmxvdywgc2NoZWR1bGUpKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIC8vIDMuIOq4sOyhtOqzvCDri6Trpbgg6rKD7J2EIGRpZmbsuZwg64uk7J2MLCDsgq3soJwg7ZuEIOyerOuTseuhnVxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20od29ya2Zsb3dNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gdGhpcy4jd29ya2Zsb3dzTWFwLmhhcyhrZXkpKVxuICAgICAgICAubWFwPFtzdHJpbmcsIFtXb3JrZmxvd01ldGFkYXRhW10sIFdvcmtmbG93TWV0YWRhdGFbXV1dPigoW2tleSwgbmV3V29ya2Zsb3dzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzV29ya2Zsb3dzID0gdGhpcy4jd29ya2Zsb3dzTWFwLmdldChrZXkpO1xuICAgICAgICAgIGFzc2VydChwcmV2aW91c1dvcmtmbG93cywgXCJwcmV2aW91cyB3b3JrZmxvd3Mgbm90IGZvdW5kXCIpO1xuICAgICAgICAgIHJldHVybiBba2V5LCBbcHJldmlvdXNXb3JrZmxvd3MsIG5ld1dvcmtmbG93c11dO1xuICAgICAgICB9KVxuICAgICAgICAubWFwKGFzeW5jIChbXywgW3ByZXZpb3VzV29ya2Zsb3dzLCBuZXdXb3JrZmxvd3NdXSkgPT4ge1xuICAgICAgICAgIC8vIOq4sOyhtCDqsoPrk6TsnYQg7IKt7KCc67aA7YSwIO2VtOyVvO2VqC5cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBwcmV2aW91c1dvcmtmbG93c1xuICAgICAgICAgICAgICAuZmlsdGVyKChwcmV2SXRlbSkgPT4gIW5ld1dvcmtmbG93cy5zb21lKChuZXdJdGVtKSA9PiBuZXdJdGVtLmlkID09PSBwcmV2SXRlbS5pZCkpXG4gICAgICAgICAgICAgIC5tYXAoKHByZXZJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChbXG4gICAgICAgICAgICAgICAgICAuLi5wcmV2SXRlbS5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy51bnNjaGVkdWxlVGFzayhzY2hlZHVsZS5uYW1lKSksXG4gICAgICAgICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJXb3JrZmxvdyhwcmV2SXRlbSksXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyDsg4jroZwg7LaU6rCA65CcIOqyg+uTpOydhCDrk7HroZ1cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBuZXdXb3JrZmxvd3NcbiAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobmV3SXRlbSkgPT4gIXByZXZpb3VzV29ya2Zsb3dzLnNvbWUoKHByZXZJdGVtKSA9PiBwcmV2SXRlbS5pZCA9PT0gbmV3SXRlbS5pZCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLm1hcChhc3luYyAobmV3SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJXb3JrZmxvdyh7XG4gICAgICAgICAgICAgICAgICBpZDogbmV3SXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgIG5hbWU6IG5ld0l0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgIHZlcnNpb246IG5ld0l0ZW0udmVyc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgc2NoZW1hOiBuZXdJdGVtLnNjaGVtYSxcbiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uOiBuZXdJdGVtLmZuLFxuICAgICAgICAgICAgICAgICAgcmV0cnlQb2xpY3k6IG5ld0l0ZW0ucmV0cnlQb2xpY3ksXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgICAgICAgICAgICAgbmV3SXRlbS5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy5zY2hlZHVsZVRhc2sobmV3SXRlbSwgc2NoZWR1bGUpKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy4jd29ya2Zsb3dzTWFwID0gd29ya2Zsb3dNYXA7XG4gIH1cblxuICAvLyDsm4ztgaztlIzroZzsmrDrpbwg7Iuk7ZaJXG4gIHJ1bjxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hIGV4dGVuZHMgU3RhbmRhcmRTY2hlbWFWMSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4oXG4gICAgb3B0aW9uczogT21pdDxXb3JrZmxvd0NyZWF0ZU9wdGlvbnM8SW5wdXQsIE91dHB1dCwgVFNjaGVtYT4sIFwiZnVuY3Rpb25cIiB8IFwic2NoZW1hXCIgfCBcImlkXCI+LFxuICAgIGlucHV0OiBTY2hlbWFJbnB1dDxUU2NoZW1hLCBJbnB1dD4sXG4gICk6IFByb21pc2U8V29ya2Zsb3dSdW5IYW5kbGU8T3V0cHV0Pj4ge1xuICAgIHJldHVybiB0aGlzLiNvdy5ydW5Xb3JrZmxvdyhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGlucHV0LFxuICAgICk7XG4gIH1cblxuICAvLyBjcm9uIHRhc2vrpbwg65Ox66GdXG4gIGFzeW5jIHNjaGVkdWxlVGFzayhcbiAgICB3b3JrZmxvdzogUGljazxXb3JrZmxvd01ldGFkYXRhLCBcImlkXCIgfCBcIm5hbWVcIiB8IFwidmVyc2lvblwiPixcbiAgICBzY2hlZHVsZTogV29ya2Zsb3dNZXRhZGF0YVtcInNjaGVkdWxlc1wiXVtudW1iZXJdLFxuICApIHtcbiAgICAvLyBXb3JrZXLqsIAg7Zmc7ISx7ZmU65CcIOuFuOuTnOyXkOyEnOunjCDsspjrpqxcbiAgICBpZiAoIXRoaXMuI3dvcmtlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhc2sgPSBjcm9uU2NoZWR1bGUoXG4gICAgICBzY2hlZHVsZS5leHByZXNzaW9uLFxuICAgICAgKGFzeW5jIChcbiAgICAgICAgeyBuYW1lLCB2ZXJzaW9uIH06IFBpY2s8V29ya2Zsb3dNZXRhZGF0YSwgXCJuYW1lXCIgfCBcInZlcnNpb25cIj4sXG4gICAgICAgIHsgaW5wdXQgfTogV29ya2Zsb3dNZXRhZGF0YVtcInNjaGVkdWxlc1wiXVtudW1iZXJdLFxuICAgICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0RGF0YSA9IGF3YWl0ICh0eXBlb2YgaW5wdXQgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKGlucHV0KCkpXG4gICAgICAgICAgOiBQcm9taXNlLnJlc29sdmUoaW5wdXQpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5ydW4oeyBuYW1lLCB2ZXJzaW9uOiB2ZXJzaW9uID8/IG51bGwgfSwgaW5wdXREYXRhKTtcbiAgICAgIH0pLmJpbmQodGhpcywgd29ya2Zsb3csIHNjaGVkdWxlKSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogc2NoZWR1bGUubmFtZSxcbiAgICAgICAgdGltZXpvbmU6IFNvbmFtdS5jb25maWcuYXBpLnRpbWV6b25lLFxuICAgICAgICBub092ZXJsYXA6IGZhbHNlLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy4jc2NoZWR1bGVkVGFza3Muc2V0KHNjaGVkdWxlLm5hbWUsIHtcbiAgICAgIHRhc2ssXG4gICAgICBpbnB1dEZuOiBzY2hlZHVsZS5pbnB1dCxcbiAgICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93LmlkLFxuICAgIH0pO1xuICAgIGF3YWl0IHRhc2suc3RhcnQoKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+ulvCDspJHsp4BcbiAgYXN5bmMgdW5zY2hlZHVsZVRhc2sobmFtZTogc3RyaW5nKSB7XG4gICAgLy8gV29ya2Vy6rCAIO2ZnOyEse2ZlOuQnCDrhbjrk5zsl5DshJzrp4wg7LKY66asXG4gICAgaWYgKCF0aGlzLiN3b3JrZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0YXNrSXRlbSA9IHRoaXMuI3NjaGVkdWxlZFRhc2tzLmdldChuYW1lKTtcbiAgICBpZiAoIXRhc2tJdGVtKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwic2NoZWR1bGVkIHRhc2sgbm90IGZvdW5kXCIsIG5hbWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI3NjaGVkdWxlZFRhc2tzLmRlbGV0ZShuYW1lKTtcbiAgICBhd2FpdCB0YXNrSXRlbS50YXNrLnN0b3AoKTtcbiAgICBhd2FpdCB0YXNrSXRlbS50YXNrLmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDrk7HroZ0sIOq0gOugqOuQnCDsiqTsvIDspITsnYAg67OE64+E66GcIOuTseuhne2VtOyVvCDtlaguXG4gIHJlZ2lzdGVyV29ya2Zsb3c8SW5wdXQsIE91dHB1dCwgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICAgIG9wdGlvbnM6IFdvcmtmbG93Q3JlYXRlT3B0aW9uczxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hPixcbiAgKTogUnVubmFibGVXb3JrZmxvdzxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQsIFNjaGVtYUlucHV0PFRTY2hlbWEsIElucHV0Pj4ge1xuICAgIGNvbnN0IGZuID0gYXN5bmMgKFxuICAgICAgcGFyYW1zOiBSZWFkb25seTx7XG4gICAgICAgIGlucHV0OiBTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+O1xuICAgICAgICBzdGVwOiBTdGVwQXBpO1xuICAgICAgICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgICAgfT4sXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBiYXNlQ29udGV4dCA9IHtcbiAgICAgICAgcmVxdWVzdDogbnVsbCxcbiAgICAgICAgcmVwbHk6IG51bGwsXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICBjcmVhdGVTU0U6IChzY2hlbWE6IFpvZE9iamVjdCkgPT4gY3JlYXRlTW9ja1NTRUZhY3Rvcnkoc2NoZW1hKSxcbiAgICAgICAgbmFpdGVTdG9yZTogTmFpdGUuY3JlYXRlU3RvcmUoKSxcbiAgICAgICAgbG9jYWxlOiBcIlwiLFxuICAgICAgICB1c2VyOiBudWxsLFxuICAgICAgICBzZXNzaW9uOiBudWxsLFxuICAgICAgfSBhcyB1bmtub3duIGFzIENvbnRleHQ7XG5cbiAgICAgIGNvbnN0IGNvbnRleHRQcm92aWRlciA9IFNvbmFtdS5jb25maWcudGFza3M/LmNvbnRleHRQcm92aWRlcjtcbiAgICAgIGNvbnN0IGNvbnRleHQ6IENvbnRleHQgPSBjb250ZXh0UHJvdmlkZXJcbiAgICAgICAgPyBhd2FpdCBQcm9taXNlLnJlc29sdmUoY29udGV4dFByb3ZpZGVyKGJhc2VDb250ZXh0KSlcbiAgICAgICAgOiBiYXNlQ29udGV4dDtcblxuICAgICAgY29uc3Qgc3RlcCA9IG5ldyBTdGVwV3JhcHBlcihwYXJhbXMuc3RlcCk7XG4gICAgICByZXR1cm4gU29uYW11LmFzeW5jTG9jYWxTdG9yYWdlLnJ1bih7IGNvbnRleHQgfSwgKCkgPT5cbiAgICAgICAgb3B0aW9ucy5mdW5jdGlvbih7XG4gICAgICAgICAgaW5wdXQ6IHBhcmFtcy5pbnB1dCxcbiAgICAgICAgICBzdGVwLFxuICAgICAgICAgIHZlcnNpb246IHBhcmFtcy52ZXJzaW9uLFxuICAgICAgICAgIGxvZ2dlcjogZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KG9wdGlvbnMubmFtZSwgXCJ3b3JrZmxvd1wiKSksXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLiNvdy5kZWZpbmVXb3JrZmxvdyhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IG9wdGlvbnMuc2NoZW1hLFxuICAgICAgICByZXRyeVBvbGljeTogb3B0aW9ucy5yZXRyeVBvbGljeSxcbiAgICAgIH0sXG4gICAgICBmbixcbiAgICApO1xuICAgIHJldHVybiB3b3JrZmxvdztcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDrk7HroZ0g7ZW07KCcLCDqtIDroKjrkJwg7Iqk7LyA7KSE7J2AIOuzhOuPhOuhnCDtlbTsoJztlbTslbwg7ZWoLlxuICBhc3luYyB1bnJlZ2lzdGVyV29ya2Zsb3cod29ya2Zsb3c6IFBpY2s8V29ya2Zsb3dNZXRhZGF0YSwgXCJuYW1lXCIgfCBcInZlcnNpb25cIiB8IFwiaWRcIj4pIHtcbiAgICB0aGlzLiNvdy51bnJlZ2lzdGVyV29ya2Zsb3cod29ya2Zsb3cubmFtZSwgd29ya2Zsb3cudmVyc2lvbiA/PyBudWxsKTtcbiAgfVxuXG4gIC8vIFdvcmtlcuulvCDshKTsoJUg7ZuEIOyLnOyekVxuICBzZXR1cFdvcmtlcihvcHRpb25zOiBXb3JrZmxvd09wdGlvbnMpIHtcbiAgICB0aGlzLiN3b3JrZXIgPSB0aGlzLiNvdy5uZXdXb3JrZXIob3B0aW9ucyk7XG4gIH1cblxuICAvLyBXb3JrZXLqsIAg7J6I7Jy866m0IFdvcmtlcuq5jOyngCDstIjquLDtmZQsIOyVhOuLiOuptCDrsLHsl5Trk5zrp4wg7LSI6riw7ZmUXG4gIGFzeW5jIHN0YXJ0V29ya2VyKCkge1xuICAgIGF3YWl0IHRoaXMuI2JhY2tlbmQuaW5pdGlhbGl6ZSgpO1xuICAgIGF3YWl0IHRoaXMuI3dvcmtlcj8uc3RhcnQoKTtcbiAgfVxuXG4gIC8vIFdvcmtlcuulvCDspJHsp4BcbiAgYXN5bmMgc3RvcFdvcmtlcigpIHtcbiAgICBhd2FpdCB0aGlzLiN3b3JrZXI/LnN0b3AoKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+uTpOydhCDrqqjrkZAg7KSR7KeAXG4gIGFzeW5jIHN0b3BTY2hlZHVsZXMoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiNzY2hlZHVsZWRUYXNrcy52YWx1ZXMoKSkubWFwKCh7IHRhc2sgfSkgPT4gUHJvbWlzZS5yZXNvbHZlKHRhc2suc3RvcCgpKSksXG4gICAgKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+uTpOydhCDrqqjrkZAg7KCV66asXG4gIGFzeW5jIGRlc3Ryb3lTY2hlZHVsZXMoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiNzY2hlZHVsZWRUYXNrcy52YWx1ZXMoKSkubWFwKCh7IHRhc2sgfSkgPT4gUHJvbWlzZS5yZXNvbHZlKHRhc2suZGVzdHJveSgpKSksXG4gICAgKTtcbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcy5jbGVhcigpO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveSgpIHtcbiAgICBhd2FpdCB0aGlzLnN0b3BTY2hlZHVsZXMoKTtcbiAgICBhd2FpdCB0aGlzLnN0b3BXb3JrZXIoKTtcbiAgICBhd2FpdCB0aGlzLmRlc3Ryb3lTY2hlZHVsZXMoKTtcbiAgICBhd2FpdCB0aGlzLiNiYWNrZW5kLnN0b3AoKTtcbiAgfVxuXG4gIFtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpIHtcbiAgICByZXR1cm4gdGhpcy5kZXN0cm95KCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O2NBc0J1QztnQkFDc0I7YUFDdEI7V0FDYztvQkFHUjtDQXFDaEMsa0JBQWIsTUFBNkI7RUFFM0IsQ0FBU0E7RUFHVCxDQUFTQztF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
|
|
197
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctbWFuYWdlci5qcyIsIm5hbWVzIjpbIiNiYWNrZW5kIiwiI293IiwiI3dvcmtlciIsIiN3b3JrZmxvd3NNYXAiLCIjc2NoZWR1bGVkVGFza3MiLCJzY2hlZHVsZSIsImNyb25TY2hlZHVsZSIsImNvbnRleHQ6IENvbnRleHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFza3Mvd29ya2Zsb3ctbWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcblxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IHR5cGUgTG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IEJhY2tlbmRQb3N0Z3JlcywgT3BlbldvcmtmbG93IH0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzXCI7XG5pbXBvcnQgeyB0eXBlIFdvcmtlciB9IGZyb20gXCJAc29uYW11LWtpdC90YXNrc1wiO1xuaW1wb3J0IHsgc2VyaWFsaXplUmV0cnlQb2xpY3kgfSBmcm9tIFwiQHNvbmFtdS1raXQvdGFza3MvaW50ZXJuYWxcIjtcbmltcG9ydCB7XG4gIHR5cGUgUnVubmFibGVXb3JrZmxvdyxcbiAgdHlwZSBTY2hlbWFJbnB1dCxcbiAgdHlwZSBTY2hlbWFPdXRwdXQsXG4gIHR5cGUgU3RhbmRhcmRTY2hlbWFWMSxcbiAgdHlwZSBTdGVwQXBpLFxuICB0eXBlIFdvcmtmbG93UnVuSGFuZGxlLFxuICB0eXBlIFdvcmtmbG93U3BlYyxcbn0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzL2ludGVybmFsXCI7XG5pbXBvcnQgeyB0eXBlIEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHsgc2NoZWR1bGUgYXMgY3JvblNjaGVkdWxlIH0gZnJvbSBcIm5vZGUtY3JvblwiO1xuaW1wb3J0IHsgdHlwZSBTY2hlZHVsZWRUYXNrIH0gZnJvbSBcIm5vZGUtY3JvblwiO1xuaW1wb3J0IHsgdHlwZSBab2RPYmplY3QgfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IHR5cGUgQ29udGV4dCB9IGZyb20gXCIuLi9hcGkvY29udGV4dFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IGNvbnZlcnREb21haW5Ub0NhdGVnb3J5IH0gZnJvbSBcIi4uL2xvZ2dlci9jYXRlZ29yeVwiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IGNyZWF0ZU1vY2tTU0VGYWN0b3J5IH0gZnJvbSBcIi4uL3N0cmVhbS9zc2VcIjtcbmltcG9ydCB7IHR5cGUgRXhlY3V0YWJsZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBXb3JrZmxvd01ldGFkYXRhIH0gZnJvbSBcIi4vZGVjb3JhdG9yXCI7XG5pbXBvcnQgeyBTdGVwV3JhcHBlciB9IGZyb20gXCIuL3N0ZXAtd3JhcHBlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93T3B0aW9ucyB7XG4gIC8vIHdvcmtlcuyXkOyEnCDrj5nsi5wg7Iuk7ZaJ7ZWgIO2DnOyKpO2BrCDsiJgsIOq4sOuzuOydgCAxXG4gIGNvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8vIHdvcmtlcuyXkOyEnCDsgqzsmqntlaAgcHViL3N1YiDsl6zrtoAsIOq4sOuzuOydgCB0cnVlXG4gIHVzZVB1YlN1Yj86IGJvb2xlYW47XG5cbiAgLy8gcHViL3N1YuycvOuhnCDtg5zsiqTtgazrpbwg7IiY7Iug7ZaI7J2EIOuVjCDsm4ztgaztlIzroZzsmrAg7Iuk7ZaJ6rmM7KeAIOyngOyXsCDsi5zqsIQsIOq4sOuzuOydgCA1MDBtc1xuICBsaXN0ZW5EZWxheT86IG51bWJlcjtcbn1cblxuLy8gV29ya2Zsb3cg7ZWo7IiY7J2YIO2DgOyehSwgQHNvbmFtdS1raXQvdGFza3PsmYAg64uk66W4IOygkOydgCBzdGVw7J2EIO2VnOuyiCDqsJDsi7wg7ZiV7YOcLlxuZXhwb3J0IHR5cGUgV29ya2Zsb3dGdW5jdGlvbjxJbnB1dCwgT3V0cHV0PiA9IChcbiAgcGFyYW1zOiBSZWFkb25seTx7XG4gICAgbG9nZ2VyOiBMb2dnZXI7XG4gICAgaW5wdXQ6IElucHV0O1xuICAgIHN0ZXA6IFN0ZXBXcmFwcGVyO1xuICAgIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIH0+LFxuKSA9PiBQcm9taXNlPE91dHB1dD4gfCBPdXRwdXQ7XG5cbi8vIFdvcmtmbG9366W8IOuTseuhne2VoCDrlYzrpbwg7JyE7ZWcIO2DgOyehVxuZXhwb3J0IHR5cGUgV29ya2Zsb3dDcmVhdGVPcHRpb25zPFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUU2NoZW1hIGV4dGVuZHMgU3RhbmRhcmRTY2hlbWFWMSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbj4gPSBPbWl0PFxuICBXb3JrZmxvd1NwZWM8U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0LCBTY2hlbWFJbnB1dDxUU2NoZW1hLCBJbnB1dD4+LFxuICBcInZlcnNpb25cIlxuPiAmIHtcbiAgaWQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgZnVuY3Rpb246IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0Pjtcbn07XG5cbmV4cG9ydCBjbGFzcyBXb3JrZmxvd01hbmFnZXIge1xuICAvLyBiYWNrZW5kIOyduOyKpO2EtOyKpFxuICByZWFkb25seSAjYmFja2VuZDogQmFja2VuZFBvc3RncmVzO1xuXG4gIC8vIE9wZW5Xb3JrZmxvdyDsnbjsiqTthLTsiqRcbiAgcmVhZG9ubHkgI293OiBPcGVuV29ya2Zsb3c7XG5cbiAgLy8gV29ya2VyIOyduOyKpO2EtOyKpCAo7JeG7J2EIOyImCDsnojsnLzrqbAsIOydtCDrlYzripQg67aE7IKw65CcIOyEnOuyhCDtmZjqsr3sl5DshJwgRELsl5AgcHVibGlzaOunjCDtlZzri6Tqs6Ag6rCA7KCV7ZWoKVxuICAjd29ya2VyOiBXb3JrZXIgfCBudWxsO1xuXG4gIC8vIO2MjOydvCDqsr3roZwgLT4g7YyM7J287JeQIOygleydmOuQnCDsm4ztgaztlIzroZzsmrAg66mU7YOA642w7J207YSwIOuqqeuhnVxuICAjd29ya2Zsb3dzTWFwOiBNYXA8c3RyaW5nLCBXb3JrZmxvd01ldGFkYXRhW10+O1xuXG4gIC8vIFRhc2sg7J2066aEIC0+IFRhc2sg7KCV67O0IOuwjyBJbnB1dCDqsJIsIFdvcmtmbG93IElEXG4gICNzY2hlZHVsZWRUYXNrczogTWFwPFxuICAgIHN0cmluZyxcbiAgICB7XG4gICAgICB0YXNrOiBTY2hlZHVsZWRUYXNrO1xuICAgICAgaW5wdXRGbjogRXhlY3V0YWJsZTxTY2hlbWFJbnB1dDx1bmtub3duLCB1bmtub3duPj47XG4gICAgICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gICAgfVxuICA+O1xuXG4gIC8vIEJhY2tlbmRQb3N0Z3Jlc+yXkOyEnCDsspjrpqztlZjripQg6rKD65Ok7J20IOyeiOyWtOyEnCBLbmV4IOy7pOuEpeyFmOydtCDslYTri4jrnbwg7ISk7KCV6rCS7J2EIOuEo+yWtOykmOyVvO2VqC5cbiAgY29uc3RydWN0b3IoZGJDb25mOiBLbmV4LkNvbmZpZywgcnVuTWlncmF0aW9uczogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCBiYWNrZW5kID0gbmV3IEJhY2tlbmRQb3N0Z3JlcyhkYkNvbmYsIHsgcnVuTWlncmF0aW9ucyB9KTtcblxuICAgIHRoaXMuI2JhY2tlbmQgPSBiYWNrZW5kO1xuICAgIHRoaXMuI293ID0gbmV3IE9wZW5Xb3JrZmxvdyh7IGJhY2tlbmQgfSk7XG4gICAgdGhpcy4jd29ya2VyID0gbnVsbDtcblxuICAgIHRoaXMuI3dvcmtmbG93c01hcCA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcyA9IG5ldyBNYXAoKTtcbiAgfVxuXG4gIC8vIFNvbmFtdSBVSSBBUEnsl5DshJwg7JuM7YGs7ZSM66Gc7JqwIOyLpO2WiSDrqqnroZ0g7KGw7ZqMLCDst6jshowg65Ox7JeQIOyCrOyaqe2VqeuLiOuLpC5cbiAgZ2V0IGJhY2tlbmQoKTogQmFja2VuZFBvc3RncmVzIHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZDtcbiAgfVxuXG4gIGdldCB3b3JrZmxvd0RlZmluaXRpb25zKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuI3dvcmtmbG93c01hcC52YWx1ZXMoKSlcbiAgICAgIC5mbGF0KClcbiAgICAgIC5tYXAoKHdmKSA9PiAoe1xuICAgICAgICBpZDogd2YuaWQsXG4gICAgICAgIG5hbWU6IHdmLm5hbWUsXG4gICAgICAgIHZlcnNpb246IHdmLnZlcnNpb24sXG4gICAgICAgIHNjaGVkdWxlczogd2Yuc2NoZWR1bGVzLm1hcCgocykgPT4gKHtcbiAgICAgICAgICBuYW1lOiBzLm5hbWUsXG4gICAgICAgICAgZXhwcmVzc2lvbjogcy5leHByZXNzaW9uLFxuICAgICAgICB9KSksXG4gICAgICAgIHJldHJ5UG9saWN5OiB3Zi5yZXRyeVBvbGljeSA/IHNlcmlhbGl6ZVJldHJ5UG9saWN5KHdmLnJldHJ5UG9saWN5KSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDsoJXsnZjrkJwg7JuM7YGs7ZSM66Gc7JqwIOuwjyDsm4ztgaztlIzroZzsmrDsl5Ag64yA7ZWcIHNjaGVkdWxlZCB0YXNrc+ulvCDrj5nquLDtmZTtlanri4jri6QuXG4gICAqL1xuICBhc3luYyBzeW5jaHJvbml6ZSh3b3JrZmxvd01hcDogTWFwPHN0cmluZywgV29ya2Zsb3dNZXRhZGF0YVtdPikge1xuICAgIC8vIDEuIOyCreygnOuQnCDtjIzsnbzsnYAg7J286rSEIOyCreygnFxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20odGhpcy4jd29ya2Zsb3dzTWFwLmVudHJpZXMoKSlcbiAgICAgICAgLmZpbHRlcigoW2tleV0pID0+ICF3b3JrZmxvd01hcC5oYXMoa2V5KSlcbiAgICAgICAgLmZsYXRNYXAoKFtfLCB3b3JrZmxvd3NdKSA9PlxuICAgICAgICAgIHdvcmtmbG93cy5tYXAoKHdvcmtmbG93KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFtcbiAgICAgICAgICAgICAgLi4ud29ya2Zsb3cuc2NoZWR1bGVzLm1hcCgoc2NoZWR1bGUpID0+IHRoaXMudW5zY2hlZHVsZVRhc2soc2NoZWR1bGUubmFtZSkpLFxuICAgICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJXb3JrZmxvdyh3b3JrZmxvdyksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgLy8gMi4g7IOI66GcIOy2lOqwgOuQnCDtjIzsnbzsnYAg7J286rSEIOuTseuhnVxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20od29ya2Zsb3dNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIXRoaXMuI3dvcmtmbG93c01hcC5oYXMoa2V5KSlcbiAgICAgICAgLmZsYXRNYXAoKFtfLCB3b3JrZmxvd3NdKSA9PlxuICAgICAgICAgIHdvcmtmbG93cy5tYXAoKHdvcmtmbG93KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyV29ya2Zsb3coe1xuICAgICAgICAgICAgICBpZDogd29ya2Zsb3cuaWQsXG4gICAgICAgICAgICAgIG5hbWU6IHdvcmtmbG93Lm5hbWUsXG4gICAgICAgICAgICAgIHZlcnNpb246IHdvcmtmbG93LnZlcnNpb24gPz8gbnVsbCxcbiAgICAgICAgICAgICAgc2NoZW1hOiB3b3JrZmxvdy5zY2hlbWEsXG4gICAgICAgICAgICAgIGZ1bmN0aW9uOiB3b3JrZmxvdy5mbixcbiAgICAgICAgICAgICAgcmV0cnlQb2xpY3k6IHdvcmtmbG93LnJldHJ5UG9saWN5LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICAgIHdvcmtmbG93LnNjaGVkdWxlcy5tYXAoKHNjaGVkdWxlKSA9PiB0aGlzLnNjaGVkdWxlVGFzayh3b3JrZmxvdywgc2NoZWR1bGUpKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIC8vIDMuIOq4sOyhtOqzvCDri6Trpbgg6rKD7J2EIGRpZmbsuZwg64uk7J2MLCDsgq3soJwg7ZuEIOyerOuTseuhnVxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20od29ya2Zsb3dNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gdGhpcy4jd29ya2Zsb3dzTWFwLmhhcyhrZXkpKVxuICAgICAgICAubWFwPFtzdHJpbmcsIFtXb3JrZmxvd01ldGFkYXRhW10sIFdvcmtmbG93TWV0YWRhdGFbXV1dPigoW2tleSwgbmV3V29ya2Zsb3dzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzV29ya2Zsb3dzID0gdGhpcy4jd29ya2Zsb3dzTWFwLmdldChrZXkpO1xuICAgICAgICAgIGFzc2VydChwcmV2aW91c1dvcmtmbG93cywgXCJwcmV2aW91cyB3b3JrZmxvd3Mgbm90IGZvdW5kXCIpO1xuICAgICAgICAgIHJldHVybiBba2V5LCBbcHJldmlvdXNXb3JrZmxvd3MsIG5ld1dvcmtmbG93c11dO1xuICAgICAgICB9KVxuICAgICAgICAubWFwKGFzeW5jIChbXywgW3ByZXZpb3VzV29ya2Zsb3dzLCBuZXdXb3JrZmxvd3NdXSkgPT4ge1xuICAgICAgICAgIC8vIOq4sOyhtCDqsoPrk6TsnYQg7IKt7KCc67aA7YSwIO2VtOyVvO2VqC5cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBwcmV2aW91c1dvcmtmbG93c1xuICAgICAgICAgICAgICAuZmlsdGVyKChwcmV2SXRlbSkgPT4gIW5ld1dvcmtmbG93cy5zb21lKChuZXdJdGVtKSA9PiBuZXdJdGVtLmlkID09PSBwcmV2SXRlbS5pZCkpXG4gICAgICAgICAgICAgIC5tYXAoKHByZXZJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChbXG4gICAgICAgICAgICAgICAgICAuLi5wcmV2SXRlbS5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy51bnNjaGVkdWxlVGFzayhzY2hlZHVsZS5uYW1lKSksXG4gICAgICAgICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJXb3JrZmxvdyhwcmV2SXRlbSksXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyDsg4jroZwg7LaU6rCA65CcIOqyg+uTpOydhCDrk7HroZ1cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBuZXdXb3JrZmxvd3NcbiAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobmV3SXRlbSkgPT4gIXByZXZpb3VzV29ya2Zsb3dzLnNvbWUoKHByZXZJdGVtKSA9PiBwcmV2SXRlbS5pZCA9PT0gbmV3SXRlbS5pZCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLm1hcChhc3luYyAobmV3SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJXb3JrZmxvdyh7XG4gICAgICAgICAgICAgICAgICBpZDogbmV3SXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgIG5hbWU6IG5ld0l0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgIHZlcnNpb246IG5ld0l0ZW0udmVyc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgc2NoZW1hOiBuZXdJdGVtLnNjaGVtYSxcbiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uOiBuZXdJdGVtLmZuLFxuICAgICAgICAgICAgICAgICAgcmV0cnlQb2xpY3k6IG5ld0l0ZW0ucmV0cnlQb2xpY3ksXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgICAgICAgICAgICAgbmV3SXRlbS5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy5zY2hlZHVsZVRhc2sobmV3SXRlbSwgc2NoZWR1bGUpKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy4jd29ya2Zsb3dzTWFwID0gd29ya2Zsb3dNYXA7XG4gIH1cblxuICAvLyDsm4ztgaztlIzroZzsmrDrpbwg7Iuk7ZaJXG4gIHJ1bjxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hIGV4dGVuZHMgU3RhbmRhcmRTY2hlbWFWMSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4oXG4gICAgb3B0aW9uczogT21pdDxXb3JrZmxvd0NyZWF0ZU9wdGlvbnM8SW5wdXQsIE91dHB1dCwgVFNjaGVtYT4sIFwiZnVuY3Rpb25cIiB8IFwic2NoZW1hXCIgfCBcImlkXCI+LFxuICAgIGlucHV0OiBTY2hlbWFJbnB1dDxUU2NoZW1hLCBJbnB1dD4sXG4gICk6IFByb21pc2U8V29ya2Zsb3dSdW5IYW5kbGU8T3V0cHV0Pj4ge1xuICAgIHJldHVybiB0aGlzLiNvdy5ydW5Xb3JrZmxvdyhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGlucHV0LFxuICAgICk7XG4gIH1cblxuICAvLyBjcm9uIHRhc2vrpbwg65Ox66GdXG4gIGFzeW5jIHNjaGVkdWxlVGFzayhcbiAgICB3b3JrZmxvdzogUGljazxXb3JrZmxvd01ldGFkYXRhLCBcImlkXCIgfCBcIm5hbWVcIiB8IFwidmVyc2lvblwiPixcbiAgICBzY2hlZHVsZTogV29ya2Zsb3dNZXRhZGF0YVtcInNjaGVkdWxlc1wiXVtudW1iZXJdLFxuICApIHtcbiAgICAvLyBXb3JrZXLqsIAg7Zmc7ISx7ZmU65CcIOuFuOuTnOyXkOyEnOunjCDsspjrpqxcbiAgICBpZiAoIXRoaXMuI3dvcmtlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhc2sgPSBjcm9uU2NoZWR1bGUoXG4gICAgICBzY2hlZHVsZS5leHByZXNzaW9uLFxuICAgICAgKGFzeW5jIChcbiAgICAgICAgeyBuYW1lLCB2ZXJzaW9uIH06IFBpY2s8V29ya2Zsb3dNZXRhZGF0YSwgXCJuYW1lXCIgfCBcInZlcnNpb25cIj4sXG4gICAgICAgIHsgaW5wdXQgfTogV29ya2Zsb3dNZXRhZGF0YVtcInNjaGVkdWxlc1wiXVtudW1iZXJdLFxuICAgICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0RGF0YSA9IGF3YWl0ICh0eXBlb2YgaW5wdXQgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKGlucHV0KCkpXG4gICAgICAgICAgOiBQcm9taXNlLnJlc29sdmUoaW5wdXQpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5ydW4oeyBuYW1lLCB2ZXJzaW9uOiB2ZXJzaW9uID8/IG51bGwgfSwgaW5wdXREYXRhKTtcbiAgICAgIH0pLmJpbmQodGhpcywgd29ya2Zsb3csIHNjaGVkdWxlKSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogc2NoZWR1bGUubmFtZSxcbiAgICAgICAgdGltZXpvbmU6IFNvbmFtdS5jb25maWcuYXBpLnRpbWV6b25lLFxuICAgICAgICBub092ZXJsYXA6IGZhbHNlLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy4jc2NoZWR1bGVkVGFza3Muc2V0KHNjaGVkdWxlLm5hbWUsIHtcbiAgICAgIHRhc2ssXG4gICAgICBpbnB1dEZuOiBzY2hlZHVsZS5pbnB1dCxcbiAgICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93LmlkLFxuICAgIH0pO1xuICAgIGF3YWl0IHRhc2suc3RhcnQoKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+ulvCDspJHsp4BcbiAgYXN5bmMgdW5zY2hlZHVsZVRhc2sobmFtZTogc3RyaW5nKSB7XG4gICAgLy8gV29ya2Vy6rCAIO2ZnOyEse2ZlOuQnCDrhbjrk5zsl5DshJzrp4wg7LKY66asXG4gICAgaWYgKCF0aGlzLiN3b3JrZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0YXNrSXRlbSA9IHRoaXMuI3NjaGVkdWxlZFRhc2tzLmdldChuYW1lKTtcbiAgICBpZiAoIXRhc2tJdGVtKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwic2NoZWR1bGVkIHRhc2sgbm90IGZvdW5kXCIsIG5hbWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI3NjaGVkdWxlZFRhc2tzLmRlbGV0ZShuYW1lKTtcbiAgICBhd2FpdCB0YXNrSXRlbS50YXNrLnN0b3AoKTtcbiAgICBhd2FpdCB0YXNrSXRlbS50YXNrLmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDrk7HroZ0sIOq0gOugqOuQnCDsiqTsvIDspITsnYAg67OE64+E66GcIOuTseuhne2VtOyVvCDtlaguXG4gIHJlZ2lzdGVyV29ya2Zsb3c8SW5wdXQsIE91dHB1dCwgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICAgIG9wdGlvbnM6IFdvcmtmbG93Q3JlYXRlT3B0aW9uczxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hPixcbiAgKTogUnVubmFibGVXb3JrZmxvdzxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQsIFNjaGVtYUlucHV0PFRTY2hlbWEsIElucHV0Pj4ge1xuICAgIGNvbnN0IGZuID0gYXN5bmMgKFxuICAgICAgcGFyYW1zOiBSZWFkb25seTx7XG4gICAgICAgIGlucHV0OiBTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+O1xuICAgICAgICBzdGVwOiBTdGVwQXBpO1xuICAgICAgICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgICAgfT4sXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBiYXNlQ29udGV4dCA9IHtcbiAgICAgICAgdHJhbnNwb3J0OiBcImh0dHBcIiBhcyBjb25zdCxcbiAgICAgICAgcmVxdWVzdDogbnVsbCxcbiAgICAgICAgcmVwbHk6IG51bGwsXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICBjcmVhdGVTU0U6IChzY2hlbWE6IFpvZE9iamVjdCkgPT4gY3JlYXRlTW9ja1NTRUZhY3Rvcnkoc2NoZW1hKSxcbiAgICAgICAgbmFpdGVTdG9yZTogTmFpdGUuY3JlYXRlU3RvcmUoKSxcbiAgICAgICAgbG9jYWxlOiBcIlwiLFxuICAgICAgICB1c2VyOiBudWxsLFxuICAgICAgICBzZXNzaW9uOiBudWxsLFxuICAgICAgfSBhcyB1bmtub3duIGFzIENvbnRleHQ7XG5cbiAgICAgIGNvbnN0IGNvbnRleHRQcm92aWRlciA9IFNvbmFtdS5jb25maWcudGFza3M/LmNvbnRleHRQcm92aWRlcjtcbiAgICAgIGNvbnN0IGNvbnRleHQ6IENvbnRleHQgPSBjb250ZXh0UHJvdmlkZXJcbiAgICAgICAgPyBhd2FpdCBQcm9taXNlLnJlc29sdmUoY29udGV4dFByb3ZpZGVyKGJhc2VDb250ZXh0KSlcbiAgICAgICAgOiBiYXNlQ29udGV4dDtcblxuICAgICAgY29uc3Qgc3RlcCA9IG5ldyBTdGVwV3JhcHBlcihwYXJhbXMuc3RlcCk7XG4gICAgICByZXR1cm4gU29uYW11LmFzeW5jTG9jYWxTdG9yYWdlLnJ1bih7IGNvbnRleHQgfSwgKCkgPT5cbiAgICAgICAgb3B0aW9ucy5mdW5jdGlvbih7XG4gICAgICAgICAgaW5wdXQ6IHBhcmFtcy5pbnB1dCxcbiAgICAgICAgICBzdGVwLFxuICAgICAgICAgIHZlcnNpb246IHBhcmFtcy52ZXJzaW9uLFxuICAgICAgICAgIGxvZ2dlcjogZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KG9wdGlvbnMubmFtZSwgXCJ3b3JrZmxvd1wiKSksXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLiNvdy5kZWZpbmVXb3JrZmxvdyhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IG9wdGlvbnMuc2NoZW1hLFxuICAgICAgICByZXRyeVBvbGljeTogb3B0aW9ucy5yZXRyeVBvbGljeSxcbiAgICAgIH0sXG4gICAgICBmbixcbiAgICApO1xuICAgIHJldHVybiB3b3JrZmxvdztcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDrk7HroZ0g7ZW07KCcLCDqtIDroKjrkJwg7Iqk7LyA7KSE7J2AIOuzhOuPhOuhnCDtlbTsoJztlbTslbwg7ZWoLlxuICBhc3luYyB1bnJlZ2lzdGVyV29ya2Zsb3cod29ya2Zsb3c6IFBpY2s8V29ya2Zsb3dNZXRhZGF0YSwgXCJuYW1lXCIgfCBcInZlcnNpb25cIiB8IFwiaWRcIj4pIHtcbiAgICB0aGlzLiNvdy51bnJlZ2lzdGVyV29ya2Zsb3cod29ya2Zsb3cubmFtZSwgd29ya2Zsb3cudmVyc2lvbiA/PyBudWxsKTtcbiAgfVxuXG4gIC8vIFdvcmtlcuulvCDshKTsoJUg7ZuEIOyLnOyekVxuICBzZXR1cFdvcmtlcihvcHRpb25zOiBXb3JrZmxvd09wdGlvbnMpIHtcbiAgICB0aGlzLiN3b3JrZXIgPSB0aGlzLiNvdy5uZXdXb3JrZXIob3B0aW9ucyk7XG4gIH1cblxuICAvLyBXb3JrZXLqsIAg7J6I7Jy866m0IFdvcmtlcuq5jOyngCDstIjquLDtmZQsIOyVhOuLiOuptCDrsLHsl5Trk5zrp4wg7LSI6riw7ZmUXG4gIGFzeW5jIHN0YXJ0V29ya2VyKCkge1xuICAgIGF3YWl0IHRoaXMuI2JhY2tlbmQuaW5pdGlhbGl6ZSgpO1xuICAgIGF3YWl0IHRoaXMuI3dvcmtlcj8uc3RhcnQoKTtcbiAgfVxuXG4gIC8vIFdvcmtlcuulvCDspJHsp4BcbiAgYXN5bmMgc3RvcFdvcmtlcigpIHtcbiAgICBhd2FpdCB0aGlzLiN3b3JrZXI/LnN0b3AoKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+uTpOydhCDrqqjrkZAg7KSR7KeAXG4gIGFzeW5jIHN0b3BTY2hlZHVsZXMoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiNzY2hlZHVsZWRUYXNrcy52YWx1ZXMoKSkubWFwKCh7IHRhc2sgfSkgPT4gUHJvbWlzZS5yZXNvbHZlKHRhc2suc3RvcCgpKSksXG4gICAgKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+uTpOydhCDrqqjrkZAg7KCV66asXG4gIGFzeW5jIGRlc3Ryb3lTY2hlZHVsZXMoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiNzY2hlZHVsZWRUYXNrcy52YWx1ZXMoKSkubWFwKCh7IHRhc2sgfSkgPT4gUHJvbWlzZS5yZXNvbHZlKHRhc2suZGVzdHJveSgpKSksXG4gICAgKTtcbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcy5jbGVhcigpO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveSgpIHtcbiAgICBhd2FpdCB0aGlzLnN0b3BTY2hlZHVsZXMoKTtcbiAgICBhd2FpdCB0aGlzLnN0b3BXb3JrZXIoKTtcbiAgICBhd2FpdCB0aGlzLmRlc3Ryb3lTY2hlZHVsZXMoKTtcbiAgICBhd2FpdCB0aGlzLiNiYWNrZW5kLnN0b3AoKTtcbiAgfVxuXG4gIFtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpIHtcbiAgICByZXR1cm4gdGhpcy5kZXN0cm95KCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O2NBc0J1QztnQkFDc0I7YUFDdEI7V0FDYztvQkFHUjtDQXFD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/services.template.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,qBAAa,kBAAmB,SAAQ,QAAQ;;IAK9C,gBAAgB;;;;IAOhB,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC;;;;;;;
|
|
1
|
+
{"version":3,"file":"services.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/services.template.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,qBAAa,kBAAmB,SAAQ,QAAQ;;IAK9C,gBAAgB;;;;IAOhB,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC;;;;;;;CAwdvC"}
|
|
@@ -39,6 +39,20 @@ var Template__services = class extends Template {
|
|
|
39
39
|
const importKeys = [];
|
|
40
40
|
const namespaces = [];
|
|
41
41
|
let typeParamNames = [];
|
|
42
|
+
const resolveWebSocketEventTypeDef = (typeRef, schema) => {
|
|
43
|
+
if (typeRef) {
|
|
44
|
+
const candidateImportKeys = [];
|
|
45
|
+
const candidateTypeDef = apiParamTypeToTsType(typeRef, candidateImportKeys);
|
|
46
|
+
try {
|
|
47
|
+
for (const key of unique(candidateImportKeys)) {
|
|
48
|
+
EntityManager.getModulePath(key);
|
|
49
|
+
}
|
|
50
|
+
importKeys.push(...candidateImportKeys);
|
|
51
|
+
return candidateTypeDef;
|
|
52
|
+
} catch {}
|
|
53
|
+
}
|
|
54
|
+
return zodTypeToTsTypeDef(schema);
|
|
55
|
+
};
|
|
42
56
|
for (const [modelName, modelApis] of apisByModel) {
|
|
43
57
|
const functions = [];
|
|
44
58
|
for (const api of modelApis) {
|
|
@@ -56,6 +70,25 @@ export function ${methodNameStreamCamelized}(
|
|
|
56
70
|
options: SSEStreamOptions
|
|
57
71
|
) {
|
|
58
72
|
return useSSEStream<${eventsTypeDef}>(\`${apiBaseUrl$1}\`, params, handlers, options);
|
|
73
|
+
}
|
|
74
|
+
`.trim());
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (api.websocketOptions) {
|
|
78
|
+
const paramsWithoutContext$1 = api.parameters.filter((param) => !ApiParamType.isContext(param.type) && !ApiParamType.isRefKnex(param.type) && !(param.optional && param.name.startsWith("_")));
|
|
79
|
+
const apiBaseUrl$1 = `${Sonamu.config.api.route.prefix}${api.path}`;
|
|
80
|
+
const methodNameWebSocket = api.options.resourceName ? `use${inflection.camelize(api.options.resourceName)}` : `use${inflection.camelize(api.methodName)}`;
|
|
81
|
+
const methodNameWebSocketCamelized = inflection.camelize(methodNameWebSocket, true);
|
|
82
|
+
const outEventsTypeDef = resolveWebSocketEventTypeDef(api.websocketOptions.outEventsTypeRef, api.websocketOptions.outEvents);
|
|
83
|
+
const inEventsTypeDef = resolveWebSocketEventTypeDef(api.websocketOptions.inEventsTypeRef, api.websocketOptions.inEvents);
|
|
84
|
+
const paramsDefAsObject = paramsWithoutContext$1.length > 0 ? `{ ${paramsWithoutContext$1.map((p) => `${p.name}: ${apiParamTypeToTsType(p.type, importKeys)}`).join(", ")} }` : "{}";
|
|
85
|
+
functions.push(`
|
|
86
|
+
export function ${methodNameWebSocketCamelized}(
|
|
87
|
+
params: ${paramsDefAsObject},
|
|
88
|
+
handlers: EventHandlers<${outEventsTypeDef}>,
|
|
89
|
+
options: WebSocketChannelOptions = {}
|
|
90
|
+
) {
|
|
91
|
+
return useWebSocketChannel<${outEventsTypeDef}, ${inEventsTypeDef}>(\`${apiBaseUrl$1}\`, params, handlers, options);
|
|
59
92
|
}
|
|
60
93
|
`.trim());
|
|
61
94
|
continue;
|
|
@@ -243,7 +276,9 @@ export const ${names.capital}AsyncIdConfig: AsyncIdConfig<${names.capital}Subset
|
|
|
243
276
|
"fetch",
|
|
244
277
|
"type EventHandlers",
|
|
245
278
|
"type SSEStreamOptions",
|
|
279
|
+
"type WebSocketChannelOptions",
|
|
246
280
|
"useSSEStream",
|
|
281
|
+
"useWebSocketChannel",
|
|
247
282
|
"toFormData",
|
|
248
283
|
...needsDedupeAndFlatten ? ["dedupeAndFlatten"] : [],
|
|
249
284
|
...needsUseRefreshable ? ["useRefreshable"] : []
|
|
@@ -277,4 +312,4 @@ export const ${names.capital}AsyncIdConfig: AsyncIdConfig<${names.capital}Subset
|
|
|
277
312
|
|
|
278
313
|
//#endregion
|
|
279
314
|
export { Template__services };
|
|
280
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXMudGVtcGxhdGUuanMiLCJuYW1lcyI6WyJpbXBvcnRLZXlzOiBzdHJpbmdbXSIsIm5hbWVzcGFjZXM6IHN0cmluZ1tdIiwidHlwZVBhcmFtTmFtZXM6IHN0cmluZ1tdIiwiZnVuY3Rpb25zOiBzdHJpbmdbXSIsInBhcmFtc1dpdGhvdXRDb250ZXh0IiwiYXBpQmFzZVVybCIsImFzeW5jSWRDb25maWdzOiBzdHJpbmdbXSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvc2VydmljZXMudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcbmltcG9ydCB7IGRpZmYsIHVuaXF1ZSB9IGZyb20gXCJyYWRhc2hpXCI7XG5cbmltcG9ydCB7XG4gIGFwaVBhcmFtVG9Uc0NvZGUsXG4gIGFwaVBhcmFtVHlwZVRvVHNUeXBlLFxuICB1bndyYXBQcm9taXNlT25jZSxcbn0gZnJvbSBcIi4uLy4uL2FwaS9jb2RlLWNvbnZlcnRlcnNcIjtcbmltcG9ydCB7IHR5cGUgRXh0ZW5kZWRBcGkgfSBmcm9tIFwiLi4vLi4vYXBpL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgdHlwZSBUZW1wbGF0ZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IEFwaVBhcmFtVHlwZSB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcbmltcG9ydCB7IEJVSUxUX0lOX1RZUEVTLCB6b2RUeXBlVG9Uc1R5cGVEZWYgfSBmcm9tIFwiLi4vem9kLWNvbnZlcnRlclwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX3NlcnZpY2VzIGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcInNlcnZpY2VzXCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBcIjp0YXJnZXQvc3JjL3NlcnZpY2VzXCIsXG4gICAgICBwYXRoOiBgc2VydmljZXMuZ2VuZXJhdGVkLnRzYCxcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyKHt9OiBUZW1wbGF0ZU9wdGlvbnNbXCJzZXJ2aWNlc1wiXSkge1xuICAgIGNvbnN0IHsgYXBpcyB9ID0gU29uYW11LnN5bmNlcjtcblxuICAgIC8vIOuqqOuNuOuzhOuhnCDqt7jro7ntmZRcbiAgICBjb25zdCBhcGlzQnlNb2RlbCA9IG5ldyBNYXA8c3RyaW5nLCBFeHRlbmRlZEFwaVtdPigpO1xuICAgIGZvciAoY29uc3QgYXBpIG9mIGFwaXMpIHtcbiAgICAgIGNvbnN0IG1vZGVsTmFtZSA9IGFwaS5tb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIik7XG4gICAgICBpZiAoIWFwaXNCeU1vZGVsLmhhcyhtb2RlbE5hbWUpKSB7XG4gICAgICAgIGFwaXNCeU1vZGVsLnNldChtb2RlbE5hbWUsIFtdKTtcbiAgICAgIH1cbiAgICAgIGFwaXNCeU1vZGVsLmdldChtb2RlbE5hbWUpPy5wdXNoKGFwaSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1wb3J0S2V5czogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBuYW1lc3BhY2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCB0eXBlUGFyYW1OYW1lczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW21vZGVsTmFtZSwgbW9kZWxBcGlzXSBvZiBhcGlzQnlNb2RlbCkge1xuICAgICAgY29uc3QgZnVuY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGFwaSBvZiBtb2RlbEFwaXMpIHtcbiAgICAgICAgLy8gQHN0cmVhbSDrjbDsvZTroIjsnbTthLDqsIAg7J6I7Jy866m0IFNTRSDsiqTtirjrprwg7ZWo7IiYIOyDneyEsVxuICAgICAgICBpZiAoYXBpLnN0cmVhbU9wdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBwYXJhbXNXaXRob3V0Q29udGV4dCA9IGFwaS5wYXJhbWV0ZXJzLmZpbHRlcihcbiAgICAgICAgICAgIChwYXJhbSkgPT5cbiAgICAgICAgICAgICAgIUFwaVBhcmFtVHlwZS5pc0NvbnRleHQocGFyYW0udHlwZSkgJiZcbiAgICAgICAgICAgICAgIUFwaVBhcmFtVHlwZS5pc1JlZktuZXgocGFyYW0udHlwZSkgJiZcbiAgICAgICAgICAgICAgIShwYXJhbS5vcHRpb25hbCAmJiBwYXJhbS5uYW1lLnN0YXJ0c1dpdGgoXCJfXCIpKSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgYXBpQmFzZVVybCA9IGAke1NvbmFtdS5jb25maWcuYXBpLnJvdXRlLnByZWZpeH0ke2FwaS5wYXRofWA7XG5cbiAgICAgICAgICBjb25zdCBtZXRob2ROYW1lU3RyZWFtID0gYXBpLm9wdGlvbnMucmVzb3VyY2VOYW1lXG4gICAgICAgICAgICA/IGB1c2Uke2luZmxlY3Rpb24uY2FtZWxpemUoYXBpLm9wdGlvbnMucmVzb3VyY2VOYW1lKX1gXG4gICAgICAgICAgICA6IGB1c2Uke2luZmxlY3Rpb24uY2FtZWxpemUoYXBpLm1ldGhvZE5hbWUpfWA7XG4gICAgICAgICAgY29uc3QgbWV0aG9kTmFtZVN0cmVhbUNhbWVsaXplZCA9IGluZmxlY3Rpb24uY2FtZWxpemUobWV0aG9kTmFtZVN0cmVhbSwgdHJ1ZSk7XG5cbiAgICAgICAgICBjb25zdCBldmVudHNUeXBlRGVmID0gem9kVHlwZVRvVHNUeXBlRGVmKGFwaS5zdHJlYW1PcHRpb25zLmV2ZW50cyk7XG5cbiAgICAgICAgICAvLyDtjIzrnbzrr7jthLDrpbwg6rCd7LK0IO2Yle2DnOuhnCDsoJXsnZggKO2DgOyeheqzvCDsi6TsoJwg6rCSIOuqqOuRkOyXkCDsgqzsmqkpXG4gICAgICAgICAgY29uc3QgcGFyYW1zRGVmQXNPYmplY3QgPVxuICAgICAgICAgICAgcGFyYW1zV2l0aG91dENvbnRleHQubGVuZ3RoID4gMFxuICAgICAgICAgICAgICA/IGB7ICR7cGFyYW1zV2l0aG91dENvbnRleHQubWFwKChwKSA9PiBgJHtwLm5hbWV9OiAke2FwaVBhcmFtVHlwZVRvVHNUeXBlKHAudHlwZSwgaW1wb3J0S2V5cyl9YCkuam9pbihcIiwgXCIpfSB9YFxuICAgICAgICAgICAgICA6IFwie31cIjtcblxuICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgYFxuZXhwb3J0IGZ1bmN0aW9uICR7bWV0aG9kTmFtZVN0cmVhbUNhbWVsaXplZH0oXG4gIHBhcmFtczogJHtwYXJhbXNEZWZBc09iamVjdH0sXG4gIGhhbmRsZXJzOiBFdmVudEhhbmRsZXJzPCR7ZXZlbnRzVHlwZURlZn0gJiB7IGVuZD86ICgpID0+IHZvaWQgfT4sXG4gIG9wdGlvbnM6IFNTRVN0cmVhbU9wdGlvbnNcbikge1xuICByZXR1cm4gdXNlU1NFU3RyZWFtPCR7ZXZlbnRzVHlwZURlZn0+KFxcYCR7YXBpQmFzZVVybH1cXGAsIHBhcmFtcywgaGFuZGxlcnMsIG9wdGlvbnMpO1xufVxuICAgICAgICAgICAgYC50cmltKCksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbnRleHQg7KCc7Jm47ZWcIO2MjOudvOuvuO2EsFxuICAgICAgICBjb25zdCBwYXJhbXNXaXRob3V0Q29udGV4dCA9IGFwaS5wYXJhbWV0ZXJzLmZpbHRlcihcbiAgICAgICAgICAocGFyYW0pID0+XG4gICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzQ29udGV4dChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgIUFwaVBhcmFtVHlwZS5pc1JlZktuZXgocGFyYW0udHlwZSkgJiZcbiAgICAgICAgICAgICEocGFyYW0ub3B0aW9uYWwgJiYgcGFyYW0ubmFtZS5zdGFydHNXaXRoKFwiX1wiKSksXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8g7YOA7J6FIO2MjOudvOuvuO2EsCDsoJXsnZhcbiAgICAgICAgY29uc3QgdHlwZVBhcmFtZXRlcnNBc1RzVHlwZSA9IGFwaS50eXBlUGFyYW1ldGVyc1xuICAgICAgICAgIC5tYXAoKHR5cGVQYXJhbSkgPT4gYXBpUGFyYW1UeXBlVG9Uc1R5cGUodHlwZVBhcmFtLCBpbXBvcnRLZXlzKSlcbiAgICAgICAgICAuam9pbihcIiwgXCIpO1xuICAgICAgICBjb25zdCB0eXBlUGFyYW1zRGVmID0gdHlwZVBhcmFtZXRlcnNBc1RzVHlwZSA/IGA8JHt0eXBlUGFyYW1ldGVyc0FzVHNUeXBlfT5gIDogXCJcIjtcbiAgICAgICAgdHlwZVBhcmFtTmFtZXMgPSB0eXBlUGFyYW1OYW1lcy5jb25jYXQoYXBpLnR5cGVQYXJhbWV0ZXJzLm1hcCgodHApID0+IHRwLmlkKSk7XG5cbiAgICAgICAgLy8g7YyM652866+47YSwIOygleydmFxuICAgICAgICBjb25zdCBwYXJhbXNEZWYgPSBhcGlQYXJhbVRvVHNDb2RlKHBhcmFtc1dpdGhvdXRDb250ZXh0LCBpbXBvcnRLZXlzKTtcbiAgICAgICAgY29uc3QgcGFyYW1OYW1lcyA9IHBhcmFtc1dpdGhvdXRDb250ZXh0Lm1hcCgocCkgPT4gcC5uYW1lKS5qb2luKFwiLCBcIik7XG5cbiAgICAgICAgLy8g66as7YS0IO2DgOyehSDsoJXsnZhcbiAgICAgICAgY29uc3QgcmV0dXJuVHlwZURlZiA9IGFwaVBhcmFtVHlwZVRvVHNUeXBlKFxuICAgICAgICAgIGFzc2VydERlZmluZWQodW53cmFwUHJvbWlzZU9uY2UoYXBpLnJldHVyblR5cGUpKSxcbiAgICAgICAgICBpbXBvcnRLZXlzLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIOq4sOuzuCBVUkxcbiAgICAgICAgY29uc3QgYXBpQmFzZVVybCA9IGAke1NvbmFtdS5jb25maWcuYXBpLnJvdXRlLnByZWZpeH0ke2FwaS5wYXRofWA7XG5cbiAgICAgICAgY29uc3QgY2xpZW50cyA9IGFwaS5vcHRpb25zLmNsaWVudHMgfHwgW107XG5cbiAgICAgICAgLy8gMS4gYXhpb3Mg7ZWo7IiYIOyDneyEsVxuICAgICAgICAvLyByZXNvdXJjZU5hbWXsnbQg7J6I7Jy866m0IGdldCArIHJlc291cmNlTmFtZSDtmJXtg5zroZwg7ZWo7IiY66qFIOyDneyEsVxuICAgICAgICBjb25zdCBtZXRob2ROYW1lID0gYXBpLm9wdGlvbnMucmVzb3VyY2VOYW1lXG4gICAgICAgICAgPyBgZ2V0JHtpbmZsZWN0aW9uLmNhbWVsaXplKGFwaS5vcHRpb25zLnJlc291cmNlTmFtZSl9YFxuICAgICAgICAgIDogYXBpLm1ldGhvZE5hbWU7XG5cbiAgICAgICAgLy8gYXhpb3MtbXVsdGlwYXJ0IOyymOumrCAo7YyM7J28IOyXheuhnOuTnClcbiAgICAgICAgaWYgKGNsaWVudHMuaW5jbHVkZXMoXCJheGlvcy1tdWx0aXBhcnRcIikpIHtcbiAgICAgICAgICBjb25zdCBmb3JtRGF0YUFwcGVuZCA9IGBmaWxlcy5mb3JFYWNoKGYgPT4geyBmb3JtRGF0YS5hcHBlbmQoXCJmaWxlc1wiLCBmKTsgfSk7YDtcblxuICAgICAgICAgIGNvbnN0IG90aGVyUGFyYW1zQXBwZW5kID0gcGFyYW1zV2l0aG91dENvbnRleHRcbiAgICAgICAgICAgIC5tYXAoKHBhcmFtKSA9PiB7XG4gICAgICAgICAgICAgIC8vIHByaW1pdGl2ZSDtg4DsnoXsnbjsp4Ag7LK07YGsXG4gICAgICAgICAgICAgIGNvbnN0IGlzUHJpbWl0aXZlID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgcGFyYW0udHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIFtcInN0cmluZ1wiLCBcIm51bWJlclwiLCBcImJvb2xlYW5cIl0uaW5jbHVkZXMocGFyYW0udHlwZSk7XG5cbiAgICAgICAgICAgICAgaWYgKGlzUHJpbWl0aXZlKSB7XG4gICAgICAgICAgICAgICAgLy8gcHJpbWl0aXZlOiDsp4HsoJEgZm9ybURhdGEuYXBwZW5kXG4gICAgICAgICAgICAgICAgcmV0dXJuIGBmb3JtRGF0YS5hcHBlbmQoJyR7cGFyYW0ubmFtZX0nLCBTdHJpbmcoJHtwYXJhbS5uYW1lfSkpO2A7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gb2JqZWN0OiB0b0Zvcm1EYXRhIOyCrOyaqVxuICAgICAgICAgICAgICAgIHJldHVybiBgdG9Gb3JtRGF0YSgke3BhcmFtLm5hbWV9LCBmb3JtRGF0YSwgJyR7cGFyYW0ubmFtZX0nKTtgO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oXCJcXG4gICAgXCIpO1xuXG4gICAgICAgICAgY29uc3QgcGFyYW1zRGVmQ29tbWEgPSBwYXJhbXNEZWYgIT09IFwiXCIgPyBcIiwgXCIgOiBcIlwiO1xuICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgYFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uICR7bWV0aG9kTmFtZX0ke3R5cGVQYXJhbXNEZWZ9KFxuICAke3BhcmFtc0RlZn0ke3BhcmFtc0RlZkNvbW1hfVxuICBmaWxlczogRmlsZVtdLFxuICBvblVwbG9hZFByb2dyZXNzPzogKHBlOiBBeGlvc1Byb2dyZXNzRXZlbnQpID0+IHZvaWRcbik6IFByb21pc2U8JHtyZXR1cm5UeXBlRGVmfT4ge1xuICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAke2Zvcm1EYXRhQXBwZW5kfVxuICAke290aGVyUGFyYW1zQXBwZW5kfVxuICByZXR1cm4gZmV0Y2goe1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIHVybDogXFxgJHthcGlCYXNlVXJsfVxcYCxcbiAgICBvblVwbG9hZFByb2dyZXNzLFxuICAgIGRhdGE6IGZvcm1EYXRhLFxuICAgICR7YXBpLm9wdGlvbnMudGltZW91dCA/IGBzaWduYWw6IEFib3J0U2lnbmFsLnRpbWVvdXQoJHthcGkub3B0aW9ucy50aW1lb3V0fSksYCA6IFwiXCJ9XG4gIH0pO1xufVxuICAgICAgICAgIGAudHJpbSgpLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXBpLm9wdGlvbnMuaHR0cE1ldGhvZCA9PT0gXCJHRVRcIikge1xuICAgICAgICAgIGNvbnN0IGhhc1BhcmFtcyA9IHBhcmFtc1dpdGhvdXRDb250ZXh0Lmxlbmd0aCA+IDA7XG4gICAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgICBgXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gJHttZXRob2ROYW1lfSR7dHlwZVBhcmFtc0RlZn0oJHtwYXJhbXNEZWZ9KTogUHJvbWlzZTwke3JldHVyblR5cGVEZWZ9PiB7XG4gIHJldHVybiBmZXRjaCh7XG4gICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgIHVybDogXFxgJHthcGlCYXNlVXJsfSR7aGFzUGFyYW1zID8gYD9cXCR7cXMuc3RyaW5naWZ5KHsgJHtwYXJhbU5hbWVzfSB9KX1gIDogXCJcIn1cXGAsXG4gICAgJHthcGkub3B0aW9ucy50aW1lb3V0ID8gYHNpZ25hbDogQWJvcnRTaWduYWwudGltZW91dCgke2FwaS5vcHRpb25zLnRpbWVvdXR9KSxgIDogXCJcIn1cbiAgfSk7XG59XG4gICAgICAgICAgYC50cmltKCksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBoYXNQYXJhbXMgPSBwYXJhbXNXaXRob3V0Q29udGV4dC5sZW5ndGggPiAwO1xuICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgYFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uICR7bWV0aG9kTmFtZX0ke3R5cGVQYXJhbXNEZWZ9KCR7cGFyYW1zRGVmfSk6IFByb21pc2U8JHtyZXR1cm5UeXBlRGVmfT4ge1xuICByZXR1cm4gZmV0Y2goe1xuICAgIG1ldGhvZDogXCIke2FwaS5vcHRpb25zLmh0dHBNZXRob2R9XCIsXG4gICAgdXJsOiBcXGAke2FwaUJhc2VVcmx9XFxgLFxuICAgICR7aGFzUGFyYW1zID8gYGRhdGE6IHsgJHtwYXJhbU5hbWVzfSB9LGAgOiBcIlwifVxuICAgICR7YXBpLm9wdGlvbnMudGltZW91dCA/IGBzaWduYWw6IEFib3J0U2lnbmFsLnRpbWVvdXQoJHthcGkub3B0aW9ucy50aW1lb3V0fSksYCA6IFwiXCJ9XG4gIH0pO1xufVxuICAgICAgICAgIGAudHJpbSgpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBxdWVyeU9wdGlvbnMgKyB1c2VRdWVyeSAodGFuc3RhY2stcXVlcnkpXG4gICAgICAgIGlmIChjbGllbnRzLmluY2x1ZGVzKFwidGFuc3RhY2stcXVlcnlcIikpIHtcbiAgICAgICAgICBjb25zdCBob29rTmFtZSA9IGFwaS5vcHRpb25zLnJlc291cmNlTmFtZVxuICAgICAgICAgICAgPyBpbmZsZWN0aW9uLmNhbWVsaXplKGFwaS5vcHRpb25zLnJlc291cmNlTmFtZSwgdHJ1ZSlcbiAgICAgICAgICAgIDogaW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkubWV0aG9kTmFtZSwgdHJ1ZSk7XG5cbiAgICAgICAgICAvLyBxdWVyeU9wdGlvbnNcbiAgICAgICAgICBmdW5jdGlvbnMucHVzaChcbiAgICAgICAgICAgIGBcbmV4cG9ydCBjb25zdCAke21ldGhvZE5hbWV9UXVlcnlPcHRpb25zID0gJHt0eXBlUGFyYW1zRGVmfSgke3BhcmFtc0RlZn0pID0+IHF1ZXJ5T3B0aW9ucyh7XG4gIHF1ZXJ5S2V5OiBbJyR7bW9kZWxOYW1lfScsICcke21ldGhvZE5hbWV9JyR7cGFyYW1OYW1lcyA/IGAsICR7cGFyYW1OYW1lc31gIDogXCJcIn1dLFxuICBxdWVyeUZuOiAoKSA9PiAke21ldGhvZE5hbWV9KCR7cGFyYW1OYW1lc30pXG59KTtcbiAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gdXNlUXVlcnkgaG9vayAodXNlUmVmcmVzaGFibGXroZwg656Y7ZWR7ZW0IHJlZnJlc2gvaXNSZWZyZXNoaW5n7J2EIOq4sOuzuCDsoJzqs7UpXG4gICAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgICBgXG5leHBvcnQgY29uc3QgdXNlJHtpbmZsZWN0aW9uLmNhbWVsaXplKGhvb2tOYW1lKX0gPSAke3R5cGVQYXJhbXNEZWZ9KCR7cGFyYW1zRGVmfSR7XG4gICAgICAgICAgICAgIHBhcmFtc0RlZiA/IFwiLCBcIiA6IFwiXCJcbiAgICAgICAgICAgIH1vcHRpb25zPzogeyBlbmFibGVkPzogYm9vbGVhbiB9KSA9PlxuICB1c2VSZWZyZXNoYWJsZSh1c2VRdWVyeSh7XG4gICAgLi4uJHttZXRob2ROYW1lfVF1ZXJ5T3B0aW9ucygke3BhcmFtTmFtZXN9KSxcbiAgICAuLi5vcHRpb25zXG4gIH0pKTtcbiAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gaW5maW5pdGVRdWVyeU9wdGlvbnMgKyB1c2VJbmZpbml0ZVF1ZXJ5IChBc3luY0lkQ29uZmlnLnVzZUxpc3RJbmZpbml0ZSDrjIDsg4Eg7KGw6rG0KVxuICAgICAgICAgIC8vIOyhsOqxtDogcmVzb3VyY2VOYW1l7J20IOuzteyImO2YleydtOqzoCBtZXRob2ROYW1lID09PSBcImZpbmRNYW55XCJcbiAgICAgICAgICBjb25zdCByZXNvdXJjZU5hbWUgPSBhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWU7XG4gICAgICAgICAgY29uc3QgaXNJbmZpbml0ZVRhcmdldCA9XG4gICAgICAgICAgICAhIXJlc291cmNlTmFtZSAmJlxuICAgICAgICAgICAgaW5mbGVjdGlvbi5wbHVyYWxpemUocmVzb3VyY2VOYW1lKSA9PT0gcmVzb3VyY2VOYW1lICYmXG4gICAgICAgICAgICBhcGkubWV0aG9kTmFtZSA9PT0gXCJmaW5kTWFueVwiO1xuXG4gICAgICAgICAgaWYgKGlzSW5maW5pdGVUYXJnZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZmluaXRlTWV0aG9kTmFtZSA9IGAke21ldGhvZE5hbWV9SW5maW5pdGVgO1xuICAgICAgICAgICAgY29uc3QgaW5maW5pdGVIb29rTmFtZSA9IGB1c2Uke2luZmxlY3Rpb24uY2FtZWxpemUoaG9va05hbWUpfUluZmluaXRlYDtcblxuICAgICAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgICAgIGBcbmV4cG9ydCBjb25zdCAke2luZmluaXRlTWV0aG9kTmFtZX1RdWVyeU9wdGlvbnMgPSAke3R5cGVQYXJhbXNEZWZ9KCR7cGFyYW1zRGVmfSkgPT4gaW5maW5pdGVRdWVyeU9wdGlvbnMoe1xuICBxdWVyeUtleTogWycke21vZGVsTmFtZX0nLCAnJHttZXRob2ROYW1lfScsICdpbmZpbml0ZScke3BhcmFtTmFtZXMgPyBgLCAke3BhcmFtTmFtZXN9YCA6IFwiXCJ9XSxcbiAgcXVlcnlGbjogKHsgcGFnZVBhcmFtIH0pID0+ICR7bWV0aG9kTmFtZX0oJHtcbiAgICBwYXJhbU5hbWVzID8gcGFyYW1OYW1lcy5yZXBsYWNlKC9cXGJyYXdQYXJhbXNcXGIvLCBcInsgLi4ucmF3UGFyYW1zLCBwYWdlOiBwYWdlUGFyYW0gfVwiKSA6IFwiXCJcbiAgfSksXG4gIGluaXRpYWxQYWdlUGFyYW06IDEgYXMgbnVtYmVyLFxuICBnZXROZXh0UGFnZVBhcmFtOiAobGFzdFBhZ2UsIGFsbFBhZ2VzKSA9PiB7XG4gICAgY29uc3QgdG90YWwgPSAobGFzdFBhZ2UgYXMgeyB0b3RhbD86IG51bWJlciB9KT8udG90YWwgPz8gMDtcbiAgICBjb25zdCBsb2FkZWQgPSBhbGxQYWdlcy5yZWR1Y2UoXG4gICAgICAoc3VtLCBwKSA9PiBzdW0gKyAoKHAgYXMgeyByb3dzPzogdW5rbm93bltdIH0pPy5yb3dzPy5sZW5ndGggPz8gMCksXG4gICAgICAwLFxuICAgICk7XG4gICAgcmV0dXJuIGxvYWRlZCA8IHRvdGFsID8gYWxsUGFnZXMubGVuZ3RoICsgMSA6IHVuZGVmaW5lZDtcbiAgfSxcbiAgc2VsZWN0OiBkZWR1cGVBbmRGbGF0dGVuLFxufSk7XG4gICAgICAgICAgYC50cmltKCksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmdW5jdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgYFxuZXhwb3J0IGNvbnN0ICR7aW5maW5pdGVIb29rTmFtZX0gPSAke3R5cGVQYXJhbXNEZWZ9KCR7cGFyYW1zRGVmfSR7XG4gICAgICAgICAgICAgICAgcGFyYW1zRGVmID8gXCIsIFwiIDogXCJcIlxuICAgICAgICAgICAgICB9b3B0aW9ucz86IHsgZW5hYmxlZD86IGJvb2xlYW4gfSkgPT5cbiAgdXNlUmVmcmVzaGFibGUodXNlSW5maW5pdGVRdWVyeSh7XG4gICAgLi4uJHtpbmZpbml0ZU1ldGhvZE5hbWV9UXVlcnlPcHRpb25zKCR7cGFyYW1OYW1lc30pLFxuICAgIC4uLm9wdGlvbnNcbiAgfSkpO1xuICAgICAgICAgIGAudHJpbSgpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyAzLiB1c2VNdXRhdGlvbiAodGFuc3RhY2stbXV0YXRpb24pXG4gICAgICAgIGlmIChjbGllbnRzLmluY2x1ZGVzKFwidGFuc3RhY2stbXV0YXRpb25cIikpIHtcbiAgICAgICAgICBjb25zdCBob29rTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoYXBpLm1ldGhvZE5hbWUpO1xuICAgICAgICAgIGNvbnN0IG11dGF0aW9uUGFyYW1UeXBlID1cbiAgICAgICAgICAgIHBhcmFtc1dpdGhvdXRDb250ZXh0Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgPyBgeyAke3BhcmFtc1dpdGhvdXRDb250ZXh0XG4gICAgICAgICAgICAgICAgICAubWFwKChwKSA9PiBgJHtwLm5hbWV9OiAke2FwaVBhcmFtVHlwZVRvVHNUeXBlKHAudHlwZSwgW10pfWApXG4gICAgICAgICAgICAgICAgICAuam9pbihcIiwgXCIpfSB9YFxuICAgICAgICAgICAgICA6IFwidm9pZFwiO1xuICAgICAgICAgIGNvbnN0IG11dGF0aW9uUGFyYW1OYW1lcyA9XG4gICAgICAgICAgICBwYXJhbXNXaXRob3V0Q29udGV4dC5sZW5ndGggPiAwXG4gICAgICAgICAgICAgID8gcGFyYW1zV2l0aG91dENvbnRleHQubWFwKChwKSA9PiBgcGFyYW1zLiR7cC5uYW1lfWApLmpvaW4oXCIsIFwiKVxuICAgICAgICAgICAgICA6IFwiXCI7XG5cbiAgICAgICAgICBmdW5jdGlvbnMucHVzaChcbiAgICAgICAgICAgIGBcbmV4cG9ydCBjb25zdCB1c2Uke2hvb2tOYW1lfU11dGF0aW9uID0gJHt0eXBlUGFyYW1zRGVmfSgpID0+IHVzZU11dGF0aW9uKHtcbiAgbXV0YXRpb25GbjogKHBhcmFtczogJHttdXRhdGlvblBhcmFtVHlwZX0pID0+ICR7bWV0aG9kTmFtZX0oJHttdXRhdGlvblBhcmFtTmFtZXN9KVxufSk7XG4gICAgICAgICAgYC50cmltKCksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDQuIHVzZU11dGF0aW9uIHdpdGggbXVsdGlwYXJ0ICh0YW5zdGFjay1tdXRhdGlvbi1tdWx0aXBhcnQpXG4gICAgICAgIGlmIChjbGllbnRzLmluY2x1ZGVzKFwidGFuc3RhY2stbXV0YXRpb24tbXVsdGlwYXJ0XCIpKSB7XG4gICAgICAgICAgY29uc3QgaG9va05hbWUgPSBpbmZsZWN0aW9uLmNhbWVsaXplKGFwaS5tZXRob2ROYW1lKTtcblxuICAgICAgICAgIC8vIO2MjOudvOuvuO2EsCDtg4DsnoUg7KCV7J2YOiBwYXJhbXNEZWbsl5DshJwg7YOA7J6F66eMIOy2lOy2nFxuICAgICAgICAgIC8vIHBhcmFtc0RlZiDsmIg6IFwicGFyYW1zOiB7IGNhdGVnb3J5OiBzdHJpbmcgfVwiIOKGkiBcInsgY2F0ZWdvcnk6IHN0cmluZyB9XCJcbiAgICAgICAgICBjb25zdCBwYXJhbXNUeXBlRGVmID1cbiAgICAgICAgICAgIHBhcmFtc1dpdGhvdXRDb250ZXh0Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgPyBwYXJhbXNEZWYuc3BsaXQoXCI6XCIpLnNsaWNlKDEpLmpvaW4oXCI6XCIpLnRyaW0oKSAvLyBcInBhcmFtczogeyBjYXRlZ29yeTogc3RyaW5nIH1cIiDihpIgXCJ7IGNhdGVnb3J5OiBzdHJpbmcgfVwiXG4gICAgICAgICAgICAgIDogXCJcIjtcblxuICAgICAgICAgIGNvbnN0IG11dGF0aW9uUGFyYW1UeXBlID1cbiAgICAgICAgICAgIHBhcmFtc1dpdGhvdXRDb250ZXh0Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgPyBgeyBwYXJhbXM6ICR7cGFyYW1zVHlwZURlZn0sIGZpbGVzOiBGaWxlW10gfWBcbiAgICAgICAgICAgICAgOiBgeyBmaWxlczogRmlsZVtdIH1gO1xuXG4gICAgICAgICAgLy8gbXV0YXRpb25GbiDtmLjstpwg7YyM652866+47YSwXG4gICAgICAgICAgY29uc3QgbXV0YXRpb25GbkNhbGwgPVxuICAgICAgICAgICAgcGFyYW1zV2l0aG91dENvbnRleHQubGVuZ3RoID4gMFxuICAgICAgICAgICAgICA/IGAke21ldGhvZE5hbWV9KHBhcmFtcy5wYXJhbXMsIHBhcmFtcy5maWxlcylgXG4gICAgICAgICAgICAgIDogYCR7bWV0aG9kTmFtZX0ocGFyYW1zLmZpbGVzKWA7XG5cbiAgICAgICAgICBmdW5jdGlvbnMucHVzaChcbiAgICAgICAgICAgIGBcbmV4cG9ydCBjb25zdCB1c2Uke2hvb2tOYW1lfU11dGF0aW9uID0gJHt0eXBlUGFyYW1zRGVmfShcbiAgb3B0aW9ucz86IFVzZU11dGF0aW9uT3B0aW9uczwke3JldHVyblR5cGVEZWZ9LCBFcnJvciwgJHttdXRhdGlvblBhcmFtVHlwZX0+ICYge1xuICAgIG9uVXBsb2FkUHJvZ3Jlc3M/OiAoZTogQXhpb3NQcm9ncmVzc0V2ZW50KSA9PiB2b2lkO1xuICB9XG4pID0+IHVzZU11dGF0aW9uKHtcbiAgbXV0YXRpb25GbjogKHBhcmFtczogJHttdXRhdGlvblBhcmFtVHlwZX0pID0+ICR7bXV0YXRpb25GbkNhbGx9LFxuICByZXRyeTogZmFsc2UsXG4gIC4uLm9wdGlvbnMsXG59KTtcbiAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5hbWVzcGFjZXMucHVzaChcbiAgICAgICAgYFxuZXhwb3J0IG5hbWVzcGFjZSAke21vZGVsTmFtZX1TZXJ2aWNlIHtcbiR7ZnVuY3Rpb25zLmpvaW4oXCJcXG5cXG5cIil9XG59XG4gICAgICBgLnRyaW0oKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQXN5bmNJZENvbmZpZyDsg53shLEgKEVudGl0eeuzhOuhnClcbiAgICBjb25zdCBlbnRpdHlJZHMgPSBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpO1xuICAgIGNvbnN0IGFzeW5jSWRDb25maWdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBlbnRpdHlJZCBvZiBlbnRpdHlJZHMpIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCk7XG5cbiAgICAgIC8vIEFzeW5jSWRDb25maWfsmqkg66as7Iqk7Yq4IOyhsO2ajCBBUEkg7LC+6riwXG4gICAgICBjb25zdCBsaXN0QXBpID0gYXBpc0J5TW9kZWwuZ2V0KG5hbWVzLmNhcGl0YWwpPy5maW5kKChhcGkpID0+IHtcbiAgICAgICAgLy8gcmVzb3VyY2VOYW1l7J20IOyXhuqxsOuCmCB0YW5zdGFjay1xdWVyeeulvCDsgqzsmqntlZjsp4Ag7JWK64qUIEFQSeuKlCDsoJzsmbhcbiAgICAgICAgaWYgKCFhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWUgfHwgIWFwaS5vcHRpb25zLmNsaWVudHM/LmluY2x1ZGVzKFwidGFuc3RhY2stcXVlcnlcIikpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVzb3VyY2VOYW1l7J20IOuzteyImO2YleydtOqzoCDrqZTshJzrk5zrqoXsnbQgZmluZE1hbnnsnbggQVBJXG4gICAgICAgIGNvbnN0IHJlc291cmNlTmFtZSA9IGFwaS5vcHRpb25zLnJlc291cmNlTmFtZTtcbiAgICAgICAgcmV0dXJuIGluZmxlY3Rpb24ucGx1cmFsaXplKHJlc291cmNlTmFtZSkgPT09IHJlc291cmNlTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gXCJmaW5kTWFueVwiO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChsaXN0QXBpKSB7XG4gICAgICAgIC8vIHJlc291cmNlTmFtZeyXkOyEnCBob29rIOydtOumhCDsg53shLEgKOq4sOyhtCDroZzsp4Hqs7wg64+Z7J28KVxuICAgICAgICBjb25zdCBob29rTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoYXNzZXJ0RGVmaW5lZChsaXN0QXBpLm9wdGlvbnMucmVzb3VyY2VOYW1lKSwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IHVzZUhvb2tOYW1lID0gYHVzZSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShob29rTmFtZSl9YDtcbiAgICAgICAgY29uc3QgdXNlSG9va0luZmluaXRlTmFtZSA9IGAke3VzZUhvb2tOYW1lfUluZmluaXRlYDtcblxuICAgICAgICAvLyBMaXN0UGFyYW1zIO2DgOyeheuqhSDqtazshLFcbiAgICAgICAgY29uc3QgbGlzdFBhcmFtc1R5cGUgPSBgJHtuYW1lcy5jYXBpdGFsfUxpc3RQYXJhbXNgO1xuXG4gICAgICAgIGFzeW5jSWRDb25maWdzLnB1c2goXG4gICAgICAgICAgYFxuLy8gQXN5bmNJZENvbmZpZzogJHtuYW1lcy5jYXBpdGFsfVxuZXhwb3J0IGNvbnN0ICR7bmFtZXMuY2FwaXRhbH1Bc3luY0lkQ29uZmlnOiBBc3luY0lkQ29uZmlnPCR7bmFtZXMuY2FwaXRhbH1TdWJzZXRLZXksICR7bmFtZXMuY2FwaXRhbH1TdWJzZXRNYXBwaW5nLCAke2xpc3RQYXJhbXNUeXBlfT4gPSB7XG4gIHBsYWNlaG9sZGVyS2V5OiBcImVudGl0eS4ke25hbWVzLmNhcGl0YWx9XCIsXG4gIHVzZUxpc3Q6ICR7bmFtZXMuY2FwaXRhbH1TZXJ2aWNlLiR7dXNlSG9va05hbWV9LFxuICB1c2VMaXN0SW5maW5pdGU6ICR7bmFtZXMuY2FwaXRhbH1TZXJ2aWNlLiR7dXNlSG9va0luZmluaXRlTmFtZX0sXG59O1xuICAgICAgICAgIGAudHJpbSgpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJVSUxUX0lOX1RZUEVT7JeQ7IScIOyCrOyaqeuQmOuKlCDtg4DsnoXrk6TsnYQg7ZmV7J247ZWY7JesIOuPmeyggeycvOuhnCBpbXBvcnQg6rWs7ISxXG4gICAgY29uc3QgYnVpbHRJblR5cGVJbXBvcnRzID0gT2JqZWN0LmtleXMoQlVJTFRfSU5fVFlQRVMpXG4gICAgICAuZmlsdGVyKCh0eXBlS2V5KSA9PiBpbXBvcnRLZXlzLmluY2x1ZGVzKHR5cGVLZXkpKVxuICAgICAgLm1hcCgodHlwZUtleSkgPT4gYHR5cGUgJHt0eXBlS2V5fWApO1xuXG4gICAgLy8gc29uYW11LnNoYXJlZOyXkOyEnCBpbXBvcnTtlaAg7ZWt66qp65Ok7J2EIOuPmeyggeycvOuhnCDqtazshLFcbiAgICAvLyBib2R5IOusuOyekOyXtOydhCDquLDspIDsnLzroZwgaW5maW5pdGUg7ZuFIOyDneyEsSDsl6zrtoAg7YyQ64uoIChmaW5kTWFueSDrs7XsiJjtmJUg67aE6riw7JeQ7ISc66eMIOywuOyhsOuQqClcbiAgICBjb25zdCBib2R5Rm9ySW1wb3J0Q2hlY2sgPSBuYW1lc3BhY2VzLmpvaW4oXCJcXG5cXG5cIik7XG4gICAgY29uc3QgbmVlZHNEZWR1cGVBbmRGbGF0dGVuID0gYm9keUZvckltcG9ydENoZWNrLmluY2x1ZGVzKFwiZGVkdXBlQW5kRmxhdHRlblwiKTtcbiAgICBjb25zdCBuZWVkc1VzZVJlZnJlc2hhYmxlID0gYm9keUZvckltcG9ydENoZWNrLmluY2x1ZGVzKFwidXNlUmVmcmVzaGFibGVcIik7XG5cbiAgICBjb25zdCBzb25hbXVTaGFyZWRJbXBvcnRzID0gW1xuICAgICAgXCJ0eXBlIExpc3RSZXN1bHRcIixcbiAgICAgIFwidHlwZSBGaWx0ZXJRdWVyeVwiLFxuICAgICAgLi4uYnVpbHRJblR5cGVJbXBvcnRzLFxuICAgICAgXCJmZXRjaFwiLFxuICAgICAgXCJ0eXBlIEV2ZW50SGFuZGxlcnNcIixcbiAgICAgIFwidHlwZSBTU0VTdHJlYW1PcHRpb25zXCIsXG4gICAgICBcInVzZVNTRVN0cmVhbVwiLFxuICAgICAgXCJ0b0Zvcm1EYXRhXCIsXG4gICAgICAuLi4obmVlZHNEZWR1cGVBbmRGbGF0dGVuID8gW1wiZGVkdXBlQW5kRmxhdHRlblwiXSA6IFtdKSxcbiAgICAgIC4uLihuZWVkc1VzZVJlZnJlc2hhYmxlID8gW1widXNlUmVmcmVzaGFibGVcIl0gOiBbXSksXG4gICAgXS5qb2luKFwiLCBcIik7XG5cbiAgICAvLyBib2R5IOq1rOyEsTogbmFtZXNwYWNlcyArIGFzeW5jSWRDb25maWdzXG4gICAgY29uc3QgYm9keVBhcnRzID0gWy4uLm5hbWVzcGFjZXMsIC4uLmFzeW5jSWRDb25maWdzXTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmdldFRhcmdldEFuZFBhdGgoKSxcbiAgICAgIGJvZHk6IGJvZHlQYXJ0cy5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgaW1wb3J0S2V5czogZGlmZih1bmlxdWUoaW1wb3J0S2V5cyksIFtcbiAgICAgICAgLi4udHlwZVBhcmFtTmFtZXMsXG4gICAgICAgIFwiTGlzdFJlc3VsdFwiLFxuICAgICAgICAuLi5PYmplY3Qua2V5cyhCVUlMVF9JTl9UWVBFUyksXG4gICAgICBdKSxcbiAgICAgIGN1c3RvbUhlYWRlcnM6IFtcbiAgICAgICAgXCIvKipcIixcbiAgICAgICAgXCIgKiBAZ2VuZXJhdGVkXCIsXG4gICAgICAgIFwiICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXCIsXG4gICAgICAgIFwiICovXCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgIFwiLyogb3hsaW50LWRpc2FibGUgKi9cIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgYGltcG9ydCB7IHF1ZXJ5T3B0aW9ucywgdXNlUXVlcnksIHVzZUluZmluaXRlUXVlcnksIGluZmluaXRlUXVlcnlPcHRpb25zLCB1c2VNdXRhdGlvbiwgdHlwZSBVc2VNdXRhdGlvbk9wdGlvbnMgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO2AsXG4gICAgICAgIGBpbXBvcnQgeyB0eXBlIEF4aW9zUHJvZ3Jlc3NFdmVudCB9IGZyb20gJ2F4aW9zJztgLFxuICAgICAgICBgaW1wb3J0IHFzIGZyb20gJ3FzJztgLFxuICAgICAgICBgaW1wb3J0IHsgJHtzb25hbXVTaGFyZWRJbXBvcnRzfSB9IGZyb20gJy4vc29uYW11LnNoYXJlZCc7YCxcbiAgICAgICAgYGltcG9ydCB7IHR5cGUgQXN5bmNJZENvbmZpZyB9IGZyb20gJ0Bzb25hbXUta2l0L3JlYWN0LWNvbXBvbmVudHMvY29tcG9uZW50cyc7YCxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztzQkFPbUM7YUFFTztxQkFDa0I7WUFFWDtZQUNDO2VBQ1g7b0JBQytCO0FBRXRFLElBQWEscUJBQWIsY0FBd0MsU0FBUztDQUMvQyxjQUFjO0FBQ1osUUFBTSxXQUFXOztDQUduQixtQkFBbUI7QUFDakIsU0FBTztHQUNMLFFBQVE7R0FDUixNQUFNO0dBQ1A7O0NBR0gsT0FBTyxJQUFpQztFQUN0QyxNQUFNLEVBQUUsU0FBUyxPQUFPO0VBR3hCLE1BQU0sY0FBYyxJQUFJLEtBQTRCO0FBQ3BELE9BQUssTUFBTSxPQUFPLE1BQU07R0FDdEIsTUFBTSxZQUFZLElBQUksVUFBVSxRQUFRLFVBQVUsR0FBRyxDQUFDLFFBQVEsVUFBVSxHQUFHO0FBQzNFLE9BQUksQ0FBQyxZQUFZLElBQUksVUFBVSxFQUFFO0FBQy9CLGdCQUFZLElBQUksV0FBVyxFQUFFLENBQUM7O0FBRWhDLGVBQVks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
|
|
315
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXMudGVtcGxhdGUuanMiLCJuYW1lcyI6WyJpbXBvcnRLZXlzOiBzdHJpbmdbXSIsIm5hbWVzcGFjZXM6IHN0cmluZ1tdIiwidHlwZVBhcmFtTmFtZXM6IHN0cmluZ1tdIiwiY2FuZGlkYXRlSW1wb3J0S2V5czogc3RyaW5nW10iLCJmdW5jdGlvbnM6IHN0cmluZ1tdIiwicGFyYW1zV2l0aG91dENvbnRleHQiLCJhcGlCYXNlVXJsIiwiYXN5bmNJZENvbmZpZ3M6IHN0cmluZ1tdIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RlbXBsYXRlL2ltcGxlbWVudGF0aW9ucy9zZXJ2aWNlcy50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuaW1wb3J0IHsgZGlmZiwgdW5pcXVlIH0gZnJvbSBcInJhZGFzaGlcIjtcblxuaW1wb3J0IHtcbiAgYXBpUGFyYW1Ub1RzQ29kZSxcbiAgYXBpUGFyYW1UeXBlVG9Uc1R5cGUsXG4gIHVud3JhcFByb21pc2VPbmNlLFxufSBmcm9tIFwiLi4vLi4vYXBpL2NvZGUtY29udmVydGVyc1wiO1xuaW1wb3J0IHsgdHlwZSBFeHRlbmRlZEFwaSB9IGZyb20gXCIuLi8uLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyB0eXBlIFRlbXBsYXRlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBhc3NlcnREZWZpbmVkIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWxzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuaW1wb3J0IHsgQlVJTFRfSU5fVFlQRVMsIHpvZFR5cGVUb1RzVHlwZURlZiB9IGZyb20gXCIuLi96b2QtY29udmVydGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fc2VydmljZXMgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwic2VydmljZXNcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IFwiOnRhcmdldC9zcmMvc2VydmljZXNcIixcbiAgICAgIHBhdGg6IGBzZXJ2aWNlcy5nZW5lcmF0ZWQudHNgLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIoe306IFRlbXBsYXRlT3B0aW9uc1tcInNlcnZpY2VzXCJdKSB7XG4gICAgY29uc3QgeyBhcGlzIH0gPSBTb25hbXUuc3luY2VyO1xuXG4gICAgLy8g66qo642467OE66GcIOq3uOujue2ZlFxuICAgIGNvbnN0IGFwaXNCeU1vZGVsID0gbmV3IE1hcDxzdHJpbmcsIEV4dGVuZGVkQXBpW10+KCk7XG4gICAgZm9yIChjb25zdCBhcGkgb2YgYXBpcykge1xuICAgICAgY29uc3QgbW9kZWxOYW1lID0gYXBpLm1vZGVsTmFtZS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKTtcbiAgICAgIGlmICghYXBpc0J5TW9kZWwuaGFzKG1vZGVsTmFtZSkpIHtcbiAgICAgICAgYXBpc0J5TW9kZWwuc2V0KG1vZGVsTmFtZSwgW10pO1xuICAgICAgfVxuICAgICAgYXBpc0J5TW9kZWwuZ2V0KG1vZGVsTmFtZSk/LnB1c2goYXBpKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IG5hbWVzcGFjZXM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IHR5cGVQYXJhbU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHJlc29sdmVXZWJTb2NrZXRFdmVudFR5cGVEZWYgPSAoXG4gICAgICB0eXBlUmVmOiBBcGlQYXJhbVR5cGUuUmVmIHwgdW5kZWZpbmVkLFxuICAgICAgc2NoZW1hOiBQYXJhbWV0ZXJzPHR5cGVvZiB6b2RUeXBlVG9Uc1R5cGVEZWY+WzBdLFxuICAgICk6IHN0cmluZyA9PiB7XG4gICAgICBpZiAodHlwZVJlZikge1xuICAgICAgICBjb25zdCBjYW5kaWRhdGVJbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBjb25zdCBjYW5kaWRhdGVUeXBlRGVmID0gYXBpUGFyYW1UeXBlVG9Uc1R5cGUodHlwZVJlZiwgY2FuZGlkYXRlSW1wb3J0S2V5cyk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB1bmlxdWUoY2FuZGlkYXRlSW1wb3J0S2V5cykpIHtcbiAgICAgICAgICAgIEVudGl0eU1hbmFnZXIuZ2V0TW9kdWxlUGF0aChrZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpbXBvcnRLZXlzLnB1c2goLi4uY2FuZGlkYXRlSW1wb3J0S2V5cyk7XG4gICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVR5cGVEZWY7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIOuhnOy7rCBjb25zdCDrk7EgaW1wb3J0IOqwgOuKpe2VnCDsi6zrs7zsnbQg7JWE64uI66m0IOq4sOyhtCBpbmxpbmUg7IOd7ISx7Jy866GcIO2bhO2HtFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB6b2RUeXBlVG9Uc1R5cGVEZWYoc2NoZW1hKTtcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBbbW9kZWxOYW1lLCBtb2RlbEFwaXNdIG9mIGFwaXNCeU1vZGVsKSB7XG4gICAgICBjb25zdCBmdW5jdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgYXBpIG9mIG1vZGVsQXBpcykge1xuICAgICAgICAvLyBAc3RyZWFtIOuNsOy9lOugiOydtO2EsOqwgCDsnojsnLzrqbQgU1NFIOyKpO2KuOumvCDtlajsiJgg7IOd7ISxXG4gICAgICAgIGlmIChhcGkuc3RyZWFtT3B0aW9ucykge1xuICAgICAgICAgIGNvbnN0IHBhcmFtc1dpdGhvdXRDb250ZXh0ID0gYXBpLnBhcmFtZXRlcnMuZmlsdGVyKFxuICAgICAgICAgICAgKHBhcmFtKSA9PlxuICAgICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzQ29udGV4dChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzUmVmS25leChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgICAhKHBhcmFtLm9wdGlvbmFsICYmIHBhcmFtLm5hbWUuc3RhcnRzV2l0aChcIl9cIikpLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBhcGlCYXNlVXJsID0gYCR7U29uYW11LmNvbmZpZy5hcGkucm91dGUucHJlZml4fSR7YXBpLnBhdGh9YDtcblxuICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWVTdHJlYW0gPSBhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWVcbiAgICAgICAgICAgID8gYHVzZSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWUpfWBcbiAgICAgICAgICAgIDogYHVzZSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkubWV0aG9kTmFtZSl9YDtcbiAgICAgICAgICBjb25zdCBtZXRob2ROYW1lU3RyZWFtQ2FtZWxpemVkID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShtZXRob2ROYW1lU3RyZWFtLCB0cnVlKTtcblxuICAgICAgICAgIGNvbnN0IGV2ZW50c1R5cGVEZWYgPSB6b2RUeXBlVG9Uc1R5cGVEZWYoYXBpLnN0cmVhbU9wdGlvbnMuZXZlbnRzKTtcblxuICAgICAgICAgIC8vIO2MjOudvOuvuO2EsOulvCDqsJ3ssrQg7ZiV7YOc66GcIOygleydmCAo7YOA7J6F6rO8IOyLpOygnCDqsJIg66qo65GQ7JeQIOyCrOyaqSlcbiAgICAgICAgICBjb25zdCBwYXJhbXNEZWZBc09iamVjdCA9XG4gICAgICAgICAgICBwYXJhbXNXaXRob3V0Q29udGV4dC5sZW5ndGggPiAwXG4gICAgICAgICAgICAgID8gYHsgJHtwYXJhbXNXaXRob3V0Q29udGV4dC5tYXAoKHApID0+IGAke3AubmFtZX06ICR7YXBpUGFyYW1UeXBlVG9Uc1R5cGUocC50eXBlLCBpbXBvcnRLZXlzKX1gKS5qb2luKFwiLCBcIil9IH1gXG4gICAgICAgICAgICAgIDogXCJ7fVwiO1xuXG4gICAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgICBgXG5leHBvcnQgZnVuY3Rpb24gJHttZXRob2ROYW1lU3RyZWFtQ2FtZWxpemVkfShcbiAgcGFyYW1zOiAke3BhcmFtc0RlZkFzT2JqZWN0fSxcbiAgaGFuZGxlcnM6IEV2ZW50SGFuZGxlcnM8JHtldmVudHNUeXBlRGVmfSAmIHsgZW5kPzogKCkgPT4gdm9pZCB9PixcbiAgb3B0aW9uczogU1NFU3RyZWFtT3B0aW9uc1xuKSB7XG4gIHJldHVybiB1c2VTU0VTdHJlYW08JHtldmVudHNUeXBlRGVmfT4oXFxgJHthcGlCYXNlVXJsfVxcYCwgcGFyYW1zLCBoYW5kbGVycywgb3B0aW9ucyk7XG59XG4gICAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFwaS53ZWJzb2NrZXRPcHRpb25zKSB7XG4gICAgICAgICAgLy8gd2Vic29ja2V0IHN1cmZhY2XripQgZmV0Y2gg7ZWo7IiYIOuMgOyLoCB0eXBlZCBob29r7J2EIOyDneyEse2VqFxuICAgICAgICAgIGNvbnN0IHBhcmFtc1dpdGhvdXRDb250ZXh0ID0gYXBpLnBhcmFtZXRlcnMuZmlsdGVyKFxuICAgICAgICAgICAgKHBhcmFtKSA9PlxuICAgICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzQ29udGV4dChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzUmVmS25leChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgICAhKHBhcmFtLm9wdGlvbmFsICYmIHBhcmFtLm5hbWUuc3RhcnRzV2l0aChcIl9cIikpLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBhcGlCYXNlVXJsID0gYCR7U29uYW11LmNvbmZpZy5hcGkucm91dGUucHJlZml4fSR7YXBpLnBhdGh9YDtcblxuICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWVXZWJTb2NrZXQgPSBhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWVcbiAgICAgICAgICAgID8gYHVzZSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWUpfWBcbiAgICAgICAgICAgIDogYHVzZSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkubWV0aG9kTmFtZSl9YDtcbiAgICAgICAgICBjb25zdCBtZXRob2ROYW1lV2ViU29ja2V0Q2FtZWxpemVkID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShtZXRob2ROYW1lV2ViU29ja2V0LCB0cnVlKTtcblxuICAgICAgICAgIC8vIG91dEV2ZW50c+uKlCDsiJjsi6Ag7YOA7J6FLCBpbkV2ZW50c+uKlCBzZW5kKCkg7J6F66ClIO2DgOyeheycvOuhnCDsgqzsmqntlahcbiAgICAgICAgICBjb25zdCBvdXRFdmVudHNUeXBlRGVmID0gcmVzb2x2ZVdlYlNvY2tldEV2ZW50VHlwZURlZihcbiAgICAgICAgICAgIGFwaS53ZWJzb2NrZXRPcHRpb25zLm91dEV2ZW50c1R5cGVSZWYsXG4gICAgICAgICAgICBhcGkud2Vic29ja2V0T3B0aW9ucy5vdXRFdmVudHMsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBpbkV2ZW50c1R5cGVEZWYgPSByZXNvbHZlV2ViU29ja2V0RXZlbnRUeXBlRGVmKFxuICAgICAgICAgICAgYXBpLndlYnNvY2tldE9wdGlvbnMuaW5FdmVudHNUeXBlUmVmLFxuICAgICAgICAgICAgYXBpLndlYnNvY2tldE9wdGlvbnMuaW5FdmVudHMsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIGNvbnRleHQvcmVmS25leC9pbnRlcm5hbCBvcHRpb25hbCDtjIzrnbzrr7jthLDripQg7YG065287J207Ja47Yq4IOyeheugpeyXkOyEnCDsoJzsmbjtlahcbiAgICAgICAgICBjb25zdCBwYXJhbXNEZWZBc09iamVjdCA9XG4gICAgICAgICAgICBwYXJhbXNXaXRob3V0Q29udGV4dC5sZW5ndGggPiAwXG4gICAgICAgICAgICAgID8gYHsgJHtwYXJhbXNXaXRob3V0Q29udGV4dC5tYXAoKHApID0+IGAke3AubmFtZX06ICR7YXBpUGFyYW1UeXBlVG9Uc1R5cGUocC50eXBlLCBpbXBvcnRLZXlzKX1gKS5qb2luKFwiLCBcIil9IH1gXG4gICAgICAgICAgICAgIDogXCJ7fVwiO1xuXG4gICAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgICBgXG5leHBvcnQgZnVuY3Rpb24gJHttZXRob2ROYW1lV2ViU29ja2V0Q2FtZWxpemVkfShcbiAgcGFyYW1zOiAke3BhcmFtc0RlZkFzT2JqZWN0fSxcbiAgaGFuZGxlcnM6IEV2ZW50SGFuZGxlcnM8JHtvdXRFdmVudHNUeXBlRGVmfT4sXG4gIG9wdGlvbnM6IFdlYlNvY2tldENoYW5uZWxPcHRpb25zID0ge31cbikge1xuICByZXR1cm4gdXNlV2ViU29ja2V0Q2hhbm5lbDwke291dEV2ZW50c1R5cGVEZWZ9LCAke2luRXZlbnRzVHlwZURlZn0+KFxcYCR7YXBpQmFzZVVybH1cXGAsIHBhcmFtcywgaGFuZGxlcnMsIG9wdGlvbnMpO1xufVxuICAgICAgICAgICAgYC50cmltKCksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbnRleHQg7KCc7Jm47ZWcIO2MjOudvOuvuO2EsFxuICAgICAgICBjb25zdCBwYXJhbXNXaXRob3V0Q29udGV4dCA9IGFwaS5wYXJhbWV0ZXJzLmZpbHRlcihcbiAgICAgICAgICAocGFyYW0pID0+XG4gICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzQ29udGV4dChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgIUFwaVBhcmFtVHlwZS5pc1JlZktuZXgocGFyYW0udHlwZSkgJiZcbiAgICAgICAgICAgICEocGFyYW0ub3B0aW9uYWwgJiYgcGFyYW0ubmFtZS5zdGFydHNXaXRoKFwiX1wiKSksXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8g7YOA7J6FIO2MjOudvOuvuO2EsCDsoJXsnZhcbiAgICAgICAgY29uc3QgdHlwZVBhcmFtZXRlcnNBc1RzVHlwZSA9IGFwaS50eXBlUGFyYW1ldGVyc1xuICAgICAgICAgIC5tYXAoKHR5cGVQYXJhbSkgPT4gYXBpUGFyYW1UeXBlVG9Uc1R5cGUodHlwZVBhcmFtLCBpbXBvcnRLZXlzKSlcbiAgICAgICAgICAuam9pbihcIiwgXCIpO1xuICAgICAgICBjb25zdCB0eXBlUGFyYW1zRGVmID0gdHlwZVBhcmFtZXRlcnNBc1RzVHlwZSA/IGA8JHt0eXBlUGFyYW1ldGVyc0FzVHNUeXBlfT5gIDogXCJcIjtcbiAgICAgICAgdHlwZVBhcmFtTmFtZXMgPSB0eXBlUGFyYW1OYW1lcy5jb25jYXQoYXBpLnR5cGVQYXJhbWV0ZXJzLm1hcCgodHApID0+IHRwLmlkKSk7XG5cbiAgICAgICAgLy8g7YyM652866+47YSwIOygleydmFxuICAgICAgICBjb25zdCBwYXJhbXNEZWYgPSBhcGlQYXJhbVRvVHNDb2RlKHBhcmFtc1dpdGhvdXRDb250ZXh0LCBpbXBvcnRLZXlzKTtcbiAgICAgICAgY29uc3QgcGFyYW1OYW1lcyA9IHBhcmFtc1dpdGhvdXRDb250ZXh0Lm1hcCgocCkgPT4gcC5uYW1lKS5qb2luKFwiLCBcIik7XG5cbiAgICAgICAgLy8g66as7YS0IO2DgOyehSDsoJXsnZhcbiAgICAgICAgY29uc3QgcmV0dXJuVHlwZURlZiA9IGFwaVBhcmFtVHlwZVRvVHNUeXBlKFxuICAgICAgICAgIGFzc2VydERlZmluZWQodW53cmFwUHJvbWlzZU9uY2UoYXBpLnJldHVyblR5cGUpKSxcbiAgICAgICAgICBpbXBvcnRLZXlzLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIOq4sOuzuCBVUkxcbiAgICAgICAgY29uc3QgYXBpQmFzZVVybCA9IGAke1NvbmFtdS5jb25maWcuYXBpLnJvdXRlLnByZWZpeH0ke2FwaS5wYXRofWA7XG5cbiAgICAgICAgY29uc3QgY2xpZW50cyA9IGFwaS5vcHRpb25zLmNsaWVudHMgfHwgW107XG5cbiAgICAgICAgLy8gMS4gYXhpb3Mg7ZWo7IiYIOyDneyEsVxuICAgICAgICAvLyByZXNvdXJjZU5hbWXsnbQg7J6I7Jy866m0IGdldCArIHJlc291cmNlTmFtZSDtmJXtg5zroZwg7ZWo7IiY66qFIOyDneyEsVxuICAgICAgICBjb25zdCBtZXRob2ROYW1lID0gYXBpLm9wdGlvbnMucmVzb3VyY2VOYW1lXG4gICAgICAgICAgPyBgZ2V0JHtpbmZsZWN0aW9uLmNhbWVsaXplKGFwaS5vcHRpb25zLnJlc291cmNlTmFtZSl9YFxuICAgICAgICAgIDogYXBpLm1ldGhvZE5hbWU7XG5cbiAgICAgICAgLy8gYXhpb3MtbXVsdGlwYXJ0IOyymOumrCAo7YyM7J28IOyXheuhnOuTnClcbiAgICAgICAgaWYgKGNsaWVudHMuaW5jbHVkZXMoXCJheGlvcy1tdWx0aXBhcnRcIikpIHtcbiAgICAgICAgICBjb25zdCBmb3JtRGF0YUFwcGVuZCA9IGBmaWxlcy5mb3JFYWNoKGYgPT4geyBmb3JtRGF0YS5hcHBlbmQoXCJmaWxlc1wiLCBmKTsgfSk7YDtcblxuICAgICAgICAgIGNvbnN0IG90aGVyUGFyYW1zQXBwZW5kID0gcGFyYW1zV2l0aG91dENvbnRleHRcbiAgICAgICAgICAgIC5tYXAoKHBhcmFtKSA9PiB7XG4gICAgICAgICAgICAgIC8vIHByaW1pdGl2ZSDtg4DsnoXsnbjsp4Ag7LK07YGsXG4gICAgICAgICAgICAgIGNvbnN0IGlzUHJpbWl0aXZlID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgcGFyYW0udHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIFtcInN0cmluZ1wiLCBcIm51bWJlclwiLCBcImJvb2xlYW5cIl0uaW5jbHVkZXMocGFyYW0udHlwZSk7XG5cbiAgICAgICAgICAgICAgaWYgKGlzUHJpbWl0aXZlKSB7XG4gICAgICAgICAgICAgICAgLy8gcHJpbWl0aXZlOiDsp4HsoJEgZm9ybURhdGEuYXBwZW5kXG4gICAgICAgICAgICAgICAgcmV0dXJuIGBmb3JtRGF0YS5hcHBlbmQoJyR7cGFyYW0ubmFtZX0nLCBTdHJpbmcoJHtwYXJhbS5uYW1lfSkpO2A7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gb2JqZWN0OiB0b0Zvcm1EYXRhIOyCrOyaqVxuICAgICAgICAgICAgICAgIHJldHVybiBgdG9Gb3JtRGF0YSgke3BhcmFtLm5hbWV9LCBmb3JtRGF0YSwgJyR7cGFyYW0ubmFtZX0nKTtgO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oXCJcXG4gICAgXCIpO1xuXG4gICAgICAgICAgY29uc3QgcGFyYW1zRGVmQ29tbWEgPSBwYXJhbXNEZWYgIT09IFwiXCIgPyBcIiwgXCIgOiBcIlwiO1xuICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgYFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uICR7bWV0aG9kTmFtZX0ke3R5cGVQYXJhbXNEZWZ9KFxuICAke3BhcmFtc0RlZn0ke3BhcmFtc0RlZkNvbW1hfVxuICBmaWxlczogRmlsZVtdLFxuICBvblVwbG9hZFByb2dyZXNzPzogKHBlOiBBeGlvc1Byb2dyZXNzRXZlbnQpID0+IHZvaWRcbik6IFByb21pc2U8JHtyZXR1cm5UeXBlRGVmfT4ge1xuICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAke2Zvcm1EYXRhQXBwZW5kfVxuICAke290aGVyUGFyYW1zQXBwZW5kfVxuICByZXR1cm4gZmV0Y2goe1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIHVybDogXFxgJHthcGlCYXNlVXJsfVxcYCxcbiAgICBvblVwbG9hZFByb2dyZXNzLFxuICAgIGRhdGE6IGZvcm1EYXRhLFxuICAgICR7YXBpLm9wdGlvbnMudGltZW91dCA/IGBzaWduYWw6IEFib3J0U2lnbmFsLnRpbWVvdXQoJHthcGkub3B0aW9ucy50aW1lb3V0fSksYCA6IFwiXCJ9XG4gIH0pO1xufVxuICAgICAgICAgIGAudHJpbSgpLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXBpLm9wdGlvbnMuaHR0cE1ldGhvZCA9PT0gXCJHRVRcIikge1xuICAgICAgICAgIGNvbnN0IGhhc1BhcmFtcyA9IHBhcmFtc1dpdGhvdXRDb250ZXh0Lmxlbmd0aCA+IDA7XG4gICAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgICBgXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gJHttZXRob2ROYW1lfSR7dHlwZVBhcmFtc0RlZn0oJHtwYXJhbXNEZWZ9KTogUHJvbWlzZTwke3JldHVyblR5cGVEZWZ9PiB7XG4gIHJldHVybiBmZXRjaCh7XG4gICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgIHVybDogXFxgJHthcGlCYXNlVXJsfSR7aGFzUGFyYW1zID8gYD9cXCR7cXMuc3RyaW5naWZ5KHsgJHtwYXJhbU5hbWVzfSB9KX1gIDogXCJcIn1cXGAsXG4gICAgJHthcGkub3B0aW9ucy50aW1lb3V0ID8gYHNpZ25hbDogQWJvcnRTaWduYWwudGltZW91dCgke2FwaS5vcHRpb25zLnRpbWVvdXR9KSxgIDogXCJcIn1cbiAgfSk7XG59XG4gICAgICAgICAgYC50cmltKCksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBoYXNQYXJhbXMgPSBwYXJhbXNXaXRob3V0Q29udGV4dC5sZW5ndGggPiAwO1xuICAgICAgICAgIGZ1bmN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgYFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uICR7bWV0aG9kTmFtZX0ke3R5cGVQYXJhbXNEZWZ9KCR7cGFyYW1zRGVmfSk6IFByb21pc2U8JHtyZXR1cm5UeXBlRGVmfT4ge1xuICByZXR1cm4gZmV0Y2goe1xuICAgIG1ldGhvZDogXCIke2FwaS5vcHRpb25zLmh0dHBNZXRob2R9XCIsXG4gICAgdXJsOiBcXGAke2FwaUJhc2VVcmx9XFxgLFxuICAgICR7aGFzUGFyYW1zID8gYGRhdGE6IHsgJHtwYXJhbU5hbWVzfSB9LGAgOiBcIlwifVxuICAgICR7YXBpLm9wdGlvbnMudGltZW91dCA/IGBzaWduYWw6IEFib3J0U2lnbmFsLnRpbWVvdXQoJHthcGkub3B0aW9ucy50aW1lb3V0fSksYCA6IFwiXCJ9XG4gIH0pO1xufVxuICAgICAgICAgIGAudHJpbSgpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBxdWVyeU9wdGlvbnMgKyB1c2VRdWVyeSAodGFuc3RhY2stcXVlcnkpXG4gICAgICAgIGlmIChjbGllbnRzLmluY2x1ZGVzKFwidGFuc3RhY2stcXVlcnlcIikpIHtcbiAgICAgICAgICBjb25zdCBob29rTmFtZSA9IGFwaS5vcHRpb25zLnJlc291cmNlTmFtZVxuICAgICAgICAgICAgPyBpbmZsZWN0aW9uLmNhbWVsaXplKGFwaS5vcHRpb25zLnJlc291cmNlTmFtZSwgdHJ1ZSlcbiAgICAgICAgICAgIDogaW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkubWV0aG9kTmFtZSwgdHJ1ZSk7XG5cbiAgICAgICAgICAvLyBxdWVyeU9wdGlvbnNcbiAgICAgICAgICBmdW5jdGlvbnMucHVzaChcbiAgICAgICAgICAgIGBcbmV4cG9ydCBjb25zdCAke21ldGhvZE5hbWV9UXVlcnlPcHRpb25zID0gJHt0eXBlUGFyYW1zRGVmfSgke3BhcmFtc0RlZn0pID0+IHF1ZXJ5T3B0aW9ucyh7XG4gIHF1ZXJ5S2V5OiBbJyR7bW9kZWxOYW1lfScsICcke21ldGhvZE5hbWV9JyR7cGFyYW1OYW1lcyA/IGAsICR7cGFyYW1OYW1lc31gIDogXCJcIn1dLFxuICBxdWVyeUZuOiAoKSA9PiAke21ldGhvZE5hbWV9KCR7cGFyYW1OYW1lc30pXG59KTtcbiAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gdXNlUXVlcnkgaG9vayAodXNlUmVmcmVzaGFibGXroZwg656Y7ZWR7ZW0IHJlZnJlc2gvaXNSZWZyZXNoaW5n7J2EIOq4sOuzuCDsoJzqs7UpXG4gICAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgICBgXG5leHBvcnQgY29uc3QgdXNlJHtpbmZsZWN0aW9uLmNhbWVsaXplKGhvb2tOYW1lKX0gPSAke3R5cGVQYXJhbXNEZWZ9KCR7cGFyYW1zRGVmfSR7XG4gICAgICAgICAgICAgIHBhcmFtc0RlZiA/IFwiLCBcIiA6IFwiXCJcbiAgICAgICAgICAgIH1vcHRpb25zPzogeyBlbmFibGVkPzogYm9vbGVhbiB9KSA9PlxuICB1c2VSZWZyZXNoYWJsZSh1c2VRdWVyeSh7XG4gICAgLi4uJHttZXRob2ROYW1lfVF1ZXJ5T3B0aW9ucygke3BhcmFtTmFtZXN9KSxcbiAgICAuLi5vcHRpb25zXG4gIH0pKTtcbiAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gaW5maW5pdGVRdWVyeU9wdGlvbnMgKyB1c2VJbmZpbml0ZVF1ZXJ5IChBc3luY0lkQ29uZmlnLnVzZUxpc3RJbmZpbml0ZSDrjIDsg4Eg7KGw6rG0KVxuICAgICAgICAgIC8vIOyhsOqxtDogcmVzb3VyY2VOYW1l7J20IOuzteyImO2YleydtOqzoCBtZXRob2ROYW1lID09PSBcImZpbmRNYW55XCJcbiAgICAgICAgICBjb25zdCByZXNvdXJjZU5hbWUgPSBhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWU7XG4gICAgICAgICAgY29uc3QgaXNJbmZpbml0ZVRhcmdldCA9XG4gICAgICAgICAgICAhIXJlc291cmNlTmFtZSAmJlxuICAgICAgICAgICAgaW5mbGVjdGlvbi5wbHVyYWxpemUocmVzb3VyY2VOYW1lKSA9PT0gcmVzb3VyY2VOYW1lICYmXG4gICAgICAgICAgICBhcGkubWV0aG9kTmFtZSA9PT0gXCJmaW5kTWFueVwiO1xuXG4gICAgICAgICAgaWYgKGlzSW5maW5pdGVUYXJnZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZmluaXRlTWV0aG9kTmFtZSA9IGAke21ldGhvZE5hbWV9SW5maW5pdGVgO1xuICAgICAgICAgICAgY29uc3QgaW5maW5pdGVIb29rTmFtZSA9IGB1c2Uke2luZmxlY3Rpb24uY2FtZWxpemUoaG9va05hbWUpfUluZmluaXRlYDtcblxuICAgICAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgICAgIGBcbmV4cG9ydCBjb25zdCAke2luZmluaXRlTWV0aG9kTmFtZX1RdWVyeU9wdGlvbnMgPSAke3R5cGVQYXJhbXNEZWZ9KCR7cGFyYW1zRGVmfSkgPT4gaW5maW5pdGVRdWVyeU9wdGlvbnMoe1xuICBxdWVyeUtleTogWycke21vZGVsTmFtZX0nLCAnJHttZXRob2ROYW1lfScsICdpbmZpbml0ZScke3BhcmFtTmFtZXMgPyBgLCAke3BhcmFtTmFtZXN9YCA6IFwiXCJ9XSxcbiAgcXVlcnlGbjogKHsgcGFnZVBhcmFtIH0pID0+ICR7bWV0aG9kTmFtZX0oJHtcbiAgICBwYXJhbU5hbWVzID8gcGFyYW1OYW1lcy5yZXBsYWNlKC9cXGJyYXdQYXJhbXNcXGIvLCBcInsgLi4ucmF3UGFyYW1zLCBwYWdlOiBwYWdlUGFyYW0gfVwiKSA6IFwiXCJcbiAgfSksXG4gIGluaXRpYWxQYWdlUGFyYW06IDEgYXMgbnVtYmVyLFxuICBnZXROZXh0UGFnZVBhcmFtOiAobGFzdFBhZ2UsIGFsbFBhZ2VzKSA9PiB7XG4gICAgY29uc3QgdG90YWwgPSAobGFzdFBhZ2UgYXMgeyB0b3RhbD86IG51bWJlciB9KT8udG90YWwgPz8gMDtcbiAgICBjb25zdCBsb2FkZWQgPSBhbGxQYWdlcy5yZWR1Y2UoXG4gICAgICAoc3VtLCBwKSA9PiBzdW0gKyAoKHAgYXMgeyByb3dzPzogdW5rbm93bltdIH0pPy5yb3dzPy5sZW5ndGggPz8gMCksXG4gICAgICAwLFxuICAgICk7XG4gICAgcmV0dXJuIGxvYWRlZCA8IHRvdGFsID8gYWxsUGFnZXMubGVuZ3RoICsgMSA6IHVuZGVmaW5lZDtcbiAgfSxcbiAgc2VsZWN0OiBkZWR1cGVBbmRGbGF0dGVuLFxufSk7XG4gICAgICAgICAgYC50cmltKCksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmdW5jdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgYFxuZXhwb3J0IGNvbnN0ICR7aW5maW5pdGVIb29rTmFtZX0gPSAke3R5cGVQYXJhbXNEZWZ9KCR7cGFyYW1zRGVmfSR7XG4gICAgICAgICAgICAgICAgcGFyYW1zRGVmID8gXCIsIFwiIDogXCJcIlxuICAgICAgICAgICAgICB9b3B0aW9ucz86IHsgZW5hYmxlZD86IGJvb2xlYW4gfSkgPT5cbiAgdXNlUmVmcmVzaGFibGUodXNlSW5maW5pdGVRdWVyeSh7XG4gICAgLi4uJHtpbmZpbml0ZU1ldGhvZE5hbWV9UXVlcnlPcHRpb25zKCR7cGFyYW1OYW1lc30pLFxuICAgIC4uLm9wdGlvbnNcbiAgfSkpO1xuICAgICAgICAgIGAudHJpbSgpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyAzLiB1c2VNdXRhdGlvbiAodGFuc3RhY2stbXV0YXRpb24pXG4gICAgICAgIGlmIChjbGllbnRzLmluY2x1ZGVzKFwidGFuc3RhY2stbXV0YXRpb25cIikpIHtcbiAgICAgICAgICBjb25zdCBob29rTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoYXBpLm1ldGhvZE5hbWUpO1xuICAgICAgICAgIGNvbnN0IG11dGF0aW9uUGFyYW1UeXBlID1cbiAgICAgICAgICAgIHBhcmFtc1dpdGhvdXRDb250ZXh0Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgPyBgeyAke3BhcmFtc1dpdGhvdXRDb250ZXh0XG4gICAgICAgICAgICAgICAgICAubWFwKChwKSA9PiBgJHtwLm5hbWV9OiAke2FwaVBhcmFtVHlwZVRvVHNUeXBlKHAudHlwZSwgW10pfWApXG4gICAgICAgICAgICAgICAgICAuam9pbihcIiwgXCIpfSB9YFxuICAgICAgICAgICAgICA6IFwidm9pZFwiO1xuICAgICAgICAgIGNvbnN0IG11dGF0aW9uUGFyYW1OYW1lcyA9XG4gICAgICAgICAgICBwYXJhbXNXaXRob3V0Q29udGV4dC5sZW5ndGggPiAwXG4gICAgICAgICAgICAgID8gcGFyYW1zV2l0aG91dENvbnRleHQubWFwKChwKSA9PiBgcGFyYW1zLiR7cC5uYW1lfWApLmpvaW4oXCIsIFwiKVxuICAgICAgICAgICAgICA6IFwiXCI7XG5cbiAgICAgICAgICBmdW5jdGlvbnMucHVzaChcbiAgICAgICAgICAgIGBcbmV4cG9ydCBjb25zdCB1c2Uke2hvb2tOYW1lfU11dGF0aW9uID0gJHt0eXBlUGFyYW1zRGVmfSgpID0+IHVzZU11dGF0aW9uKHtcbiAgbXV0YXRpb25GbjogKHBhcmFtczogJHttdXRhdGlvblBhcmFtVHlwZX0pID0+ICR7bWV0aG9kTmFtZX0oJHttdXRhdGlvblBhcmFtTmFtZXN9KVxufSk7XG4gICAgICAgICAgYC50cmltKCksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDQuIHVzZU11dGF0aW9uIHdpdGggbXVsdGlwYXJ0ICh0YW5zdGFjay1tdXRhdGlvbi1tdWx0aXBhcnQpXG4gICAgICAgIGlmIChjbGllbnRzLmluY2x1ZGVzKFwidGFuc3RhY2stbXV0YXRpb24tbXVsdGlwYXJ0XCIpKSB7XG4gICAgICAgICAgY29uc3QgaG9va05hbWUgPSBpbmZsZWN0aW9uLmNhbWVsaXplKGFwaS5tZXRob2ROYW1lKTtcblxuICAgICAgICAgIC8vIO2MjOudvOuvuO2EsCDtg4DsnoUg7KCV7J2YOiBwYXJhbXNEZWbsl5DshJwg7YOA7J6F66eMIOy2lOy2nFxuICAgICAgICAgIC8vIHBhcmFtc0RlZiDsmIg6IFwicGFyYW1zOiB7IGNhdGVnb3J5OiBzdHJpbmcgfVwiIOKGkiBcInsgY2F0ZWdvcnk6IHN0cmluZyB9XCJcbiAgICAgICAgICBjb25zdCBwYXJhbXNUeXBlRGVmID1cbiAgICAgICAgICAgIHBhcmFtc1dpdGhvdXRDb250ZXh0Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgPyBwYXJhbXNEZWYuc3BsaXQoXCI6XCIpLnNsaWNlKDEpLmpvaW4oXCI6XCIpLnRyaW0oKSAvLyBcInBhcmFtczogeyBjYXRlZ29yeTogc3RyaW5nIH1cIiDihpIgXCJ7IGNhdGVnb3J5OiBzdHJpbmcgfVwiXG4gICAgICAgICAgICAgIDogXCJcIjtcblxuICAgICAgICAgIGNvbnN0IG11dGF0aW9uUGFyYW1UeXBlID1cbiAgICAgICAgICAgIHBhcmFtc1dpdGhvdXRDb250ZXh0Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgPyBgeyBwYXJhbXM6ICR7cGFyYW1zVHlwZURlZn0sIGZpbGVzOiBGaWxlW10gfWBcbiAgICAgICAgICAgICAgOiBgeyBmaWxlczogRmlsZVtdIH1gO1xuXG4gICAgICAgICAgLy8gbXV0YXRpb25GbiDtmLjstpwg7YyM652866+47YSwXG4gICAgICAgICAgY29uc3QgbXV0YXRpb25GbkNhbGwgPVxuICAgICAgICAgICAgcGFyYW1zV2l0aG91dENvbnRleHQubGVuZ3RoID4gMFxuICAgICAgICAgICAgICA/IGAke21ldGhvZE5hbWV9KHBhcmFtcy5wYXJhbXMsIHBhcmFtcy5maWxlcylgXG4gICAgICAgICAgICAgIDogYCR7bWV0aG9kTmFtZX0ocGFyYW1zLmZpbGVzKWA7XG5cbiAgICAgICAgICBmdW5jdGlvbnMucHVzaChcbiAgICAgICAgICAgIGBcbmV4cG9ydCBjb25zdCB1c2Uke2hvb2tOYW1lfU11dGF0aW9uID0gJHt0eXBlUGFyYW1zRGVmfShcbiAgb3B0aW9ucz86IFVzZU11dGF0aW9uT3B0aW9uczwke3JldHVyblR5cGVEZWZ9LCBFcnJvciwgJHttdXRhdGlvblBhcmFtVHlwZX0+ICYge1xuICAgIG9uVXBsb2FkUHJvZ3Jlc3M/OiAoZTogQXhpb3NQcm9ncmVzc0V2ZW50KSA9PiB2b2lkO1xuICB9XG4pID0+IHVzZU11dGF0aW9uKHtcbiAgbXV0YXRpb25GbjogKHBhcmFtczogJHttdXRhdGlvblBhcmFtVHlwZX0pID0+ICR7bXV0YXRpb25GbkNhbGx9LFxuICByZXRyeTogZmFsc2UsXG4gIC4uLm9wdGlvbnMsXG59KTtcbiAgICAgICAgICBgLnRyaW0oKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5hbWVzcGFjZXMucHVzaChcbiAgICAgICAgYFxuZXhwb3J0IG5hbWVzcGFjZSAke21vZGVsTmFtZX1TZXJ2aWNlIHtcbiR7ZnVuY3Rpb25zLmpvaW4oXCJcXG5cXG5cIil9XG59XG4gICAgICBgLnRyaW0oKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQXN5bmNJZENvbmZpZyDsg53shLEgKEVudGl0eeuzhOuhnClcbiAgICBjb25zdCBlbnRpdHlJZHMgPSBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpO1xuICAgIGNvbnN0IGFzeW5jSWRDb25maWdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBlbnRpdHlJZCBvZiBlbnRpdHlJZHMpIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCk7XG5cbiAgICAgIC8vIEFzeW5jSWRDb25maWfsmqkg66as7Iqk7Yq4IOyhsO2ajCBBUEkg7LC+6riwXG4gICAgICBjb25zdCBsaXN0QXBpID0gYXBpc0J5TW9kZWwuZ2V0KG5hbWVzLmNhcGl0YWwpPy5maW5kKChhcGkpID0+IHtcbiAgICAgICAgLy8gcmVzb3VyY2VOYW1l7J20IOyXhuqxsOuCmCB0YW5zdGFjay1xdWVyeeulvCDsgqzsmqntlZjsp4Ag7JWK64qUIEFQSeuKlCDsoJzsmbhcbiAgICAgICAgaWYgKCFhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWUgfHwgIWFwaS5vcHRpb25zLmNsaWVudHM/LmluY2x1ZGVzKFwidGFuc3RhY2stcXVlcnlcIikpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVzb3VyY2VOYW1l7J20IOuzteyImO2YleydtOqzoCDrqZTshJzrk5zrqoXsnbQgZmluZE1hbnnsnbggQVBJXG4gICAgICAgIGNvbnN0IHJlc291cmNlTmFtZSA9IGFwaS5vcHRpb25zLnJlc291cmNlTmFtZTtcbiAgICAgICAgcmV0dXJuIGluZmxlY3Rpb24ucGx1cmFsaXplKHJlc291cmNlTmFtZSkgPT09IHJlc291cmNlTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gXCJmaW5kTWFueVwiO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChsaXN0QXBpKSB7XG4gICAgICAgIC8vIHJlc291cmNlTmFtZeyXkOyEnCBob29rIOydtOumhCDsg53shLEgKOq4sOyhtCDroZzsp4Hqs7wg64+Z7J28KVxuICAgICAgICBjb25zdCBob29rTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoYXNzZXJ0RGVmaW5lZChsaXN0QXBpLm9wdGlvbnMucmVzb3VyY2VOYW1lKSwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IHVzZUhvb2tOYW1lID0gYHVzZSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShob29rTmFtZSl9YDtcbiAgICAgICAgY29uc3QgdXNlSG9va0luZmluaXRlTmFtZSA9IGAke3VzZUhvb2tOYW1lfUluZmluaXRlYDtcblxuICAgICAgICAvLyBMaXN0UGFyYW1zIO2DgOyeheuqhSDqtazshLFcbiAgICAgICAgY29uc3QgbGlzdFBhcmFtc1R5cGUgPSBgJHtuYW1lcy5jYXBpdGFsfUxpc3RQYXJhbXNgO1xuXG4gICAgICAgIGFzeW5jSWRDb25maWdzLnB1c2goXG4gICAgICAgICAgYFxuLy8gQXN5bmNJZENvbmZpZzogJHtuYW1lcy5jYXBpdGFsfVxuZXhwb3J0IGNvbnN0ICR7bmFtZXMuY2FwaXRhbH1Bc3luY0lkQ29uZmlnOiBBc3luY0lkQ29uZmlnPCR7bmFtZXMuY2FwaXRhbH1TdWJzZXRLZXksICR7bmFtZXMuY2FwaXRhbH1TdWJzZXRNYXBwaW5nLCAke2xpc3RQYXJhbXNUeXBlfT4gPSB7XG4gIHBsYWNlaG9sZGVyS2V5OiBcImVudGl0eS4ke25hbWVzLmNhcGl0YWx9XCIsXG4gIHVzZUxpc3Q6ICR7bmFtZXMuY2FwaXRhbH1TZXJ2aWNlLiR7dXNlSG9va05hbWV9LFxuICB1c2VMaXN0SW5maW5pdGU6ICR7bmFtZXMuY2FwaXRhbH1TZXJ2aWNlLiR7dXNlSG9va0luZmluaXRlTmFtZX0sXG59O1xuICAgICAgICAgIGAudHJpbSgpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJVSUxUX0lOX1RZUEVT7JeQ7IScIOyCrOyaqeuQmOuKlCDtg4DsnoXrk6TsnYQg7ZmV7J247ZWY7JesIOuPmeyggeycvOuhnCBpbXBvcnQg6rWs7ISxXG4gICAgY29uc3QgYnVpbHRJblR5cGVJbXBvcnRzID0gT2JqZWN0LmtleXMoQlVJTFRfSU5fVFlQRVMpXG4gICAgICAuZmlsdGVyKCh0eXBlS2V5KSA9PiBpbXBvcnRLZXlzLmluY2x1ZGVzKHR5cGVLZXkpKVxuICAgICAgLm1hcCgodHlwZUtleSkgPT4gYHR5cGUgJHt0eXBlS2V5fWApO1xuXG4gICAgLy8gc29uYW11LnNoYXJlZOyXkOyEnCBpbXBvcnTtlaAg7ZWt66qp65Ok7J2EIOuPmeyggeycvOuhnCDqtazshLFcbiAgICAvLyBib2R5IOusuOyekOyXtOydhCDquLDspIDsnLzroZwgaW5maW5pdGUg7ZuFIOyDneyEsSDsl6zrtoAg7YyQ64uoIChmaW5kTWFueSDrs7XsiJjtmJUg67aE6riw7JeQ7ISc66eMIOywuOyhsOuQqClcbiAgICBjb25zdCBib2R5Rm9ySW1wb3J0Q2hlY2sgPSBuYW1lc3BhY2VzLmpvaW4oXCJcXG5cXG5cIik7XG4gICAgY29uc3QgbmVlZHNEZWR1cGVBbmRGbGF0dGVuID0gYm9keUZvckltcG9ydENoZWNrLmluY2x1ZGVzKFwiZGVkdXBlQW5kRmxhdHRlblwiKTtcbiAgICBjb25zdCBuZWVkc1VzZVJlZnJlc2hhYmxlID0gYm9keUZvckltcG9ydENoZWNrLmluY2x1ZGVzKFwidXNlUmVmcmVzaGFibGVcIik7XG5cbiAgICBjb25zdCBzb25hbXVTaGFyZWRJbXBvcnRzID0gW1xuICAgICAgXCJ0eXBlIExpc3RSZXN1bHRcIixcbiAgICAgIFwidHlwZSBGaWx0ZXJRdWVyeVwiLFxuICAgICAgLi4uYnVpbHRJblR5cGVJbXBvcnRzLFxuICAgICAgXCJmZXRjaFwiLFxuICAgICAgXCJ0eXBlIEV2ZW50SGFuZGxlcnNcIixcbiAgICAgIFwidHlwZSBTU0VTdHJlYW1PcHRpb25zXCIsXG4gICAgICBcInR5cGUgV2ViU29ja2V0Q2hhbm5lbE9wdGlvbnNcIixcbiAgICAgIFwidXNlU1NFU3RyZWFtXCIsXG4gICAgICBcInVzZVdlYlNvY2tldENoYW5uZWxcIixcbiAgICAgIFwidG9Gb3JtRGF0YVwiLFxuICAgICAgLi4uKG5lZWRzRGVkdXBlQW5kRmxhdHRlbiA/IFtcImRlZHVwZUFuZEZsYXR0ZW5cIl0gOiBbXSksXG4gICAgICAuLi4obmVlZHNVc2VSZWZyZXNoYWJsZSA/IFtcInVzZVJlZnJlc2hhYmxlXCJdIDogW10pLFxuICAgIF0uam9pbihcIiwgXCIpO1xuXG4gICAgLy8gYm9keSDqtazshLE6IG5hbWVzcGFjZXMgKyBhc3luY0lkQ29uZmlnc1xuICAgIGNvbnN0IGJvZHlQYXJ0cyA9IFsuLi5uYW1lc3BhY2VzLCAuLi5hc3luY0lkQ29uZmlnc107XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKCksXG4gICAgICBib2R5OiBib2R5UGFydHMuam9pbihcIlxcblxcblwiKSxcbiAgICAgIGltcG9ydEtleXM6IGRpZmYodW5pcXVlKGltcG9ydEtleXMpLCBbXG4gICAgICAgIC4uLnR5cGVQYXJhbU5hbWVzLFxuICAgICAgICBcIkxpc3RSZXN1bHRcIixcbiAgICAgICAgLi4uT2JqZWN0LmtleXMoQlVJTFRfSU5fVFlQRVMpLFxuICAgICAgXSksXG4gICAgICBjdXN0b21IZWFkZXJzOiBbXG4gICAgICAgIFwiLyoqXCIsXG4gICAgICAgIFwiICogQGdlbmVyYXRlZFwiLFxuICAgICAgICBcIiAqIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlwiLFxuICAgICAgICBcIiAqL1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBcIi8qIG94bGludC1kaXNhYmxlICovXCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgIGBpbXBvcnQgeyBxdWVyeU9wdGlvbnMsIHVzZVF1ZXJ5LCB1c2VJbmZpbml0ZVF1ZXJ5LCBpbmZpbml0ZVF1ZXJ5T3B0aW9ucywgdXNlTXV0YXRpb24sIHR5cGUgVXNlTXV0YXRpb25PcHRpb25zIH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztgLFxuICAgICAgICBgaW1wb3J0IHsgdHlwZSBBeGlvc1Byb2dyZXNzRXZlbnQgfSBmcm9tICdheGlvcyc7YCxcbiAgICAgICAgYGltcG9ydCBxcyBmcm9tICdxcyc7YCxcbiAgICAgICAgYGltcG9ydCB7ICR7c29uYW11U2hhcmVkSW1wb3J0c30gfSBmcm9tICcuL3NvbmFtdS5zaGFyZWQnO2AsXG4gICAgICAgIGBpbXBvcnQgeyB0eXBlIEFzeW5jSWRDb25maWcgfSBmcm9tICdAc29uYW11LWtpdC9yZWFjdC1jb21wb25lbnRzL2NvbXBvbmVudHMnO2AsXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7c0JBT21DO2FBRU87cUJBQ2tCO1lBRVg7WUFDQztlQUNYO29CQUMrQjtBQUV0RSxJQUFhLHFCQUFiLGNBQXdDLFNBQVM7Q0FDL0MsY0FBYztBQUNaLFFBQU0sV0FBVzs7Q0FHbkIsbUJBQW1CO0FBQ2pCLFNBQU87R0FDTCxRQUFRO0dBQ1IsTUFBTTtHQUNQOztDQUdILE9BQU8sSUFBaUM7RUFDdEMsTUFBTSxFQUFFLFNBQVMsT0FBTztFQUd4QixNQUFNLGNBQWMsSUFBSSxLQUE0QjtBQUNwRCxPQUFLLE1BQU0sT0FBTyxNQUFNO0dBQ3RCLE1BQU0sWUFBWSxJQUFJLFVBQVUsUUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/testing/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,IAAI,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AACxF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE/E,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI9C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,gBAAgB,QAmCpE;
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/testing/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,IAAI,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AACxF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE/E,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI9C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,gBAAgB,QAmCpE;AAkBD,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,iBAGpF;AAED,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,iBAE/D;AAED,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;AACzD,KAAK,kBAAkB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/C,KAAK,QAAQ,GAAG,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EAC/C,KAAK,EAAE,SAAS,KAAK,EAAE,KACpB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,kBAAkB,KAAK,IAAI,CAAC;AAEzE,KAAK,WAAW,GAAG;IACjB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;IACrE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,UAAU,CAAC;IAC7E,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,UAAU,CAAC;IAC7E,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,CAAC,IAAI,SAAS,OAAO,CAAC,MAAM,CAAC,EAC3B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,YAAY,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,UAAU,CAAC;IACd,IAAI,EAAE,CAAC,IAAI,SAAS,OAAO,CAAC,MAAM,CAAC,EACjC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,YAAY,EAChB,OAAO,CAAC,EAAE,WAAW,KAClB,UAAU,CAAC;IAChB,IAAI,EAAE,CAAC,IAAI,SAAS,OAAO,CAAC,MAAM,CAAC,EACjC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,YAAY,EAChB,OAAO,CAAC,EAAE,WAAW,KAClB,UAAU,CAAC;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,CAAC;AAIF,OAAO,QAAQ,QAAQ,CAAC;IACtB,UAAU,QAAQ;QAChB,MAAM,EAAE,eAAe,EAAE,CAAC;KAC3B;CACF;AAED,eAAO,MAAM,IAAI,EAAE,WAiClB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,aA0DpB,CAAC"}
|
|
@@ -41,6 +41,13 @@ function bootstrap(vi, options) {
|
|
|
41
41
|
}
|
|
42
42
|
function getMockContext() {
|
|
43
43
|
return {
|
|
44
|
+
transport: "http",
|
|
45
|
+
request: null,
|
|
46
|
+
reply: null,
|
|
47
|
+
headers: {},
|
|
48
|
+
createSSE: (() => {
|
|
49
|
+
throw new Error("createSSE is not available in mock context");
|
|
50
|
+
}),
|
|
44
51
|
session: null,
|
|
45
52
|
user: null,
|
|
46
53
|
naiteStore: Naite.createStore(),
|
|
@@ -122,4 +129,4 @@ const testAs = Object.assign(async (user, title, fn, options) => {
|
|
|
122
129
|
|
|
123
130
|
//#endregion
|
|
124
131
|
export { bootstrap, runWithContext, runWithMockContext, test, testAs };
|
|
125
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwibmFtZXMiOlsiZWFjaDogVGVzdEVhY2giLCJ2aXRlc3RUZXN0IiwidGVzdDogVGVzdFdyYXBwZXIiLCJlOiB1bmtub3duIiwidGVzdEFzOiBUZXN0QXNXcmFwcGVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3RpbmcvYm9vdHN0cmFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFmdGVyQWxsLCBhZnRlckVhY2gsIGJlZm9yZUFsbCwgYmVmb3JlRWFjaCwgdGVzdCBhcyB2aXRlc3RUZXN0IH0gZnJvbSBcInZpdGVzdFwiO1xuaW1wb3J0IHsgdHlwZSBUZXN0RnVuY3Rpb24sIHR5cGUgVGVzdE9wdGlvbnMsIHR5cGUgVml0ZXN0VXRpbHMgfSBmcm9tIFwidml0ZXN0XCI7XG5cbmltcG9ydCB7IHR5cGUgQ29udGV4dCB9IGZyb20gXCIuLi9hcGkvY29udGV4dFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHsgdHlwZSBTZXJpYWxpemVkVHJhY2UgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IE5haXRlUmVwb3J0ZXIgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGUtcmVwb3J0ZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNvbmFtdSDstIjquLDtmZQg66qo65Oc66W8IOyngOygle2VqeuLiOuLpC5cbiAgICogLSB0cnVlICjquLDrs7jqsJIpOiDthYzsiqTtjIUg66qo65Oc66GcIOy0iOq4sO2ZlCAo67mg66aELCBTeW5jZXIvVGFzayDsg53rnrUpXG4gICAqIC0gZmFsc2U6IOyghOyytCDstIjquLDtmZQgKFN5bmNlciwgVGFzaywgRW50aXR5TWFuYWdlciDrk7Eg66qo65GQIOuhnOuTnClcbiAgICpcbiAgICogbWlncmF0b3IsIHN5bmNlciwgdGVtcGxhdGUg65Ox7J2YIO2FjOyKpO2KuOyXkOyEnOuKlCBmYWxzZeulvCDsgqzsmqntlanri4jri6QuXG4gICAqL1xuICBmb3JUZXN0aW5nPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvb3RzdHJhcCh2aTogVml0ZXN0VXRpbHMsIG9wdGlvbnM/OiBCb290c3RyYXBPcHRpb25zKSB7XG4gIGNvbnN0IGZvclRlc3RpbmcgPSBvcHRpb25zPy5mb3JUZXN0aW5nID8/IHRydWU7XG5cbiAgYmVmb3JlQWxsKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZvclRlc3RpbmcpIHtcbiAgICAgIC8vIGZvclRlc3Rpbmc6IGZhbHNl7J24IOqyveyasCDsnqzstIjquLDtmZTqsIAg7ZWE7JqU7ZWY66+A66GcIO2UjOuemOq3uCDtlbTsoJxcbiAgICAgIFNvbmFtdS5pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgfVxuICAgIGF3YWl0IFNvbmFtdS5pbml0KHRydWUsIGZhbHNlLCB1bmRlZmluZWQsIGZvclRlc3RpbmcpO1xuICB9KTtcbiAgYmVmb3JlRWFjaChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgREIuY3JlYXRlVGVzdFRyYW5zYWN0aW9uKCk7XG4gIH0pO1xuICBhZnRlckVhY2goYXN5bmMgKHsgdGFzayB9KSA9PiB7XG4gICAgdmkudXNlUmVhbFRpbWVycygpO1xuICAgIGF3YWl0IERCLmNsZWFyVGVzdFRyYW5zYWN0aW9uKCk7XG5cbiAgICBhd2FpdCBOYWl0ZVJlcG9ydGVyLnJlcG9ydFRlc3RSZXN1bHQoe1xuICAgICAgc3VpdGVOYW1lOiB0YXNrLnN1aXRlPy5uYW1lID8/IFwiKG5vIHN1aXRlKVwiLFxuICAgICAgc3VpdGVGaWxlUGF0aDogdGFzay5maWxlPy5maWxlcGF0aCxcbiAgICAgIHRlc3ROYW1lOiB0YXNrLm5hbWUsXG4gICAgICB0ZXN0RmlsZVBhdGg6IHRhc2suZmlsZT8uZmlsZXBhdGggPz8gXCJcIixcbiAgICAgIHRlc3RMaW5lOiB0YXNrLmxvY2F0aW9uPy5saW5lID8/IDAsXG4gICAgICBzdGF0dXM6IHRhc2sucmVzdWx0Py5zdGF0ZSA/PyBcInBhc3NcIixcbiAgICAgIGR1cmF0aW9uOiB0YXNrLnJlc3VsdD8uZHVyYXRpb24gPz8gMCxcbiAgICAgIGVycm9yOiB0YXNrLnJlc3VsdD8uZXJyb3JzPy5bMF1cbiAgICAgICAgPyB7XG4gICAgICAgICAgICBtZXNzYWdlOiB0YXNrLnJlc3VsdC5lcnJvcnNbMF0ubWVzc2FnZSxcbiAgICAgICAgICAgIHN0YWNrOiB0YXNrLnJlc3VsdC5lcnJvcnNbMF0uc3RhY2ssXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHRyYWNlczogdGFzay5tZXRhPy50cmFjZXMgPz8gW10sXG4gICAgfSk7XG4gIH0pO1xuICBhZnRlckFsbCgoKSA9PiB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldE1vY2tDb250ZXh0KCk6IENvbnRleHQge1xuICByZXR1cm4ge1xuICAgIHNlc3Npb246IG51bGwsXG4gICAgdXNlcjogbnVsbCxcbiAgICBuYWl0ZVN0b3JlOiBOYWl0ZS5jcmVhdGVTdG9yZSgpLFxuICAgIGxvY2FsZTogXCJcIixcbiAgfSBhcyB1bmtub3duIGFzIENvbnRleHQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5XaXRoQ29udGV4dChjb250ZXh0OiBDb250ZXh0IHwgbnVsbCwgZm46ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgLy8gU29uYW11LmFzeW5jTG9jYWxTdG9yYWdlLnJ1buycvOuhnCBjb250ZXh0IOyEpOyglVxuICBhd2FpdCBTb25hbXUuYXN5bmNMb2NhbFN0b3JhZ2UucnVuKHsgY29udGV4dDogY29udGV4dCA/PyBnZXRNb2NrQ29udGV4dCgpIH0sIGZuKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhNb2NrQ29udGV4dChmbjogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICBhd2FpdCBydW5XaXRoQ29udGV4dChnZXRNb2NrQ29udGV4dCgpLCBmbik7XG59XG5cbnR5cGUgVGVzdFJlc3VsdCA9IFByb21pc2U8UmV0dXJuVHlwZTx0eXBlb2Ygdml0ZXN0VGVzdD4+O1xudHlwZSBUZXN0Q2FsbGJhY2tSZXN1bHQgPSB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbnR5cGUgVGVzdEVhY2ggPSA8VEFyZ3MgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+KFxuICBjYXNlczogcmVhZG9ubHkgVEFyZ3NbXSxcbikgPT4gKHRpdGxlOiBzdHJpbmcsIGZuOiAoLi4uYXJnczogVEFyZ3MpID0+IFRlc3RDYWxsYmFja1Jlc3VsdCkgPT4gdm9pZDtcblxudHlwZSBUZXN0V3JhcHBlciA9IHtcbiAgKHRpdGxlOiBzdHJpbmcsIGZuOiBUZXN0RnVuY3Rpb24sIG9wdGlvbnM/OiBUZXN0T3B0aW9ucyk6IFRlc3RSZXN1bHQ7XG4gIHNraXA6ICh0aXRsZTogc3RyaW5nLCBmbjogVGVzdEZ1bmN0aW9uLCBvcHRpb25zPzogVGVzdE9wdGlvbnMpID0+IFRlc3RSZXN1bHQ7XG4gIG9ubHk6ICh0aXRsZTogc3RyaW5nLCBmbjogVGVzdEZ1bmN0aW9uLCBvcHRpb25zPzogVGVzdE9wdGlvbnMpID0+IFRlc3RSZXN1bHQ7XG4gIHRvZG86ICh0aXRsZTogc3RyaW5nKSA9PiB2b2lkO1xuICBlYWNoOiBUZXN0RWFjaDtcbn07XG5cbnR5cGUgVGVzdEFzV3JhcHBlciA9IHtcbiAgPFVzZXIgZXh0ZW5kcyBDb250ZXh0W1widXNlclwiXT4oXG4gICAgdXNlcjogVXNlcixcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGZuOiBUZXN0RnVuY3Rpb24sXG4gICAgb3B0aW9ucz86IFRlc3RPcHRpb25zLFxuICApOiBUZXN0UmVzdWx0O1xuICBza2lwOiA8VXNlciBleHRlbmRzIENvbnRleHRbXCJ1c2VyXCJdPihcbiAgICB1c2VyOiBVc2VyLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZm46IFRlc3RGdW5jdGlvbixcbiAgICBvcHRpb25zPzogVGVzdE9wdGlvbnMsXG4gICkgPT4gVGVzdFJlc3VsdDtcbiAgb25seTogPFVzZXIgZXh0ZW5kcyBDb250ZXh0W1widXNlclwiXT4oXG4gICAgdXNlcjogVXNlcixcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGZuOiBUZXN0RnVuY3Rpb24sXG4gICAgb3B0aW9ucz86IFRlc3RPcHRpb25zLFxuICApID0+IFRlc3RSZXN1bHQ7XG4gIHRvZG86ICh0aXRsZTogc3RyaW5nKSA9PiB2b2lkO1xufTtcblxuY29uc3QgZWFjaDogVGVzdEVhY2ggPSB2aXRlc3RUZXN0LmVhY2guYmluZCh2aXRlc3RUZXN0KTtcblxuZGVjbGFyZSBtb2R1bGUgXCJ2aXRlc3RcIiB7XG4gIGludGVyZmFjZSBUYXNrTWV0YSB7XG4gICAgdHJhY2VzOiBTZXJpYWxpemVkVHJhY2VbXTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdGVzdDogVGVzdFdyYXBwZXIgPSBPYmplY3QuYXNzaWduKFxuICBhc3luYyAodGl0bGU6IHN0cmluZywgZm46IFRlc3RGdW5jdGlvbiwgb3B0aW9ucz86IFRlc3RPcHRpb25zKSA9PiB7XG4gICAgcmV0dXJuIHZpdGVzdFRlc3QodGl0bGUsIG9wdGlvbnMsIGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICBhd2FpdCBydW5XaXRoTW9ja0NvbnRleHQoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGZuKGNvbnRleHQpO1xuICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgY29udGV4dC50YXNrLm1ldGEudHJhY2VzID0gTmFpdGUuZ2V0QWxsVHJhY2VzKCk7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG4gIHtcbiAgICBza2lwOiBhc3luYyAodGl0bGU6IHN0cmluZywgZm46IFRlc3RGdW5jdGlvbiwgb3B0aW9ucz86IFRlc3RPcHRpb25zKSA9PlxuICAgICAgdml0ZXN0VGVzdC5za2lwKHRpdGxlLCBvcHRpb25zLCBmbiksXG4gICAgb25seTogYXN5bmMgKHRpdGxlOiBzdHJpbmcsIGZuOiBUZXN0RnVuY3Rpb24sIG9wdGlvbnM/OiBUZXN0T3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIHZpdGVzdFRlc3Qub25seSh0aXRsZSwgb3B0aW9ucywgYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgYXdhaXQgcnVuV2l0aE1vY2tDb250ZXh0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgZm4oY29udGV4dCk7XG4gICAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdG9kbzogKHRpdGxlOiBzdHJpbmcpID0+IHZpdGVzdFRlc3QudG9kbyh0aXRsZSksXG4gICAgZWFjaCxcbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCB0ZXN0QXM6IFRlc3RBc1dyYXBwZXIgPSBPYmplY3QuYXNzaWduKFxuICBhc3luYyA8VXNlciBleHRlbmRzIENvbnRleHRbXCJ1c2VyXCJdPihcbiAgICB1c2VyOiBVc2VyLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZm46IFRlc3RGdW5jdGlvbixcbiAgICBvcHRpb25zPzogVGVzdE9wdGlvbnMsXG4gICkgPT4ge1xuICAgIHJldHVybiB2aXRlc3RUZXN0KHRpdGxlLCBvcHRpb25zLCBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgYXdhaXQgcnVuV2l0aENvbnRleHQoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5nZXRNb2NrQ29udGV4dCgpLFxuICAgICAgICAgIHVzZXIsXG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgZm4oY29udGV4dCk7XG4gICAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSxcbiAge1xuICAgIHNraXA6IGFzeW5jIDxVc2VyIGV4dGVuZHMgQ29udGV4dFtcInVzZXJcIl0+KFxuICAgICAgX3VzZXI6IFVzZXIsXG4gICAgICB0aXRsZTogc3RyaW5nLFxuICAgICAgZm46IFRlc3RGdW5jdGlvbixcbiAgICAgIG9wdGlvbnM/OiBUZXN0T3B0aW9ucyxcbiAgICApID0+IHZpdGVzdFRlc3Quc2tpcCh0aXRsZSwgb3B0aW9ucywgZm4pLFxuICAgIG9ubHk6IGFzeW5jIDxVc2VyIGV4dGVuZHMgQ29udGV4dFtcInVzZXJcIl0+KFxuICAgICAgdXNlcjogVXNlcixcbiAgICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgICBmbjogVGVzdEZ1bmN0aW9uLFxuICAgICAgb3B0aW9ucz86IFRlc3RPcHRpb25zLFxuICAgICkgPT4ge1xuICAgICAgcmV0dXJuIHZpdGVzdFRlc3Qub25seSh0aXRsZSwgb3B0aW9ucywgYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgYXdhaXQgcnVuV2l0aENvbnRleHQoXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uZ2V0TW9ja0NvbnRleHQoKSxcbiAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBhd2FpdCBmbihjb250ZXh0KTtcbiAgICAgICAgICAgICAgY29udGV4dC50YXNrLm1ldGEudHJhY2VzID0gTmFpdGUuZ2V0QWxsVHJhY2VzKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHRvZG86ICh0aXRsZTogc3RyaW5nKSA9PiB2aXRlc3RUZXN0LnRvZG8odGl0bGUpLFxuICB9LFxuKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OzthQUl1QztTQUNIO1lBQ0c7QUFldkMsU0FBZ0IsVUFBVSxJQUFpQixTQUE0QjtDQUNyRSxNQUFNLGFBQWEsU0FBUyxjQUFjO0FBRTFDLFdBQVUsWUFBWTtBQUNwQixNQUFJLENBQUMsWUFBWTtBQUVmLFVBQU8sZ0JBQWdCOztBQUV6QixRQUFNLE9BQU8sS0FBSyxNQUFNLE9BQU8sV0FBVyxXQUFXO0dBQ3JEO0FBQ0YsWUFBVyxZQUFZO0FBQ3JCLFFBQU0sR0FBRyx1QkFBdUI7R0FDaEM7QUFDRixXQUFVLE9BQU8sRUFBRSxXQUFXO0FBQzVCLEtBQUcsZUFBZTtBQUNsQixRQUFNLEdBQUcsc0JBQXNCO0FBRS9CLFFBQU0sY0FBYyxpQkFBaUI7R0FDbkMsV0FBVyxLQUFLLE9BQU8sUUFBUTtHQUMvQixlQUFlLEtBQUssTUFBTTtHQUMxQixVQUFVLEtBQUs7R0FDZixjQUFjLEtBQUssTUFBTSxZQUFZO0dBQ3JDLFVBQVUsS0FBSyxVQUFVLFFBQVE7R0FDakMsUUFBUSxL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
|
|
132
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwibmFtZXMiOlsiZWFjaDogVGVzdEVhY2giLCJ2aXRlc3RUZXN0IiwidGVzdDogVGVzdFdyYXBwZXIiLCJlOiB1bmtub3duIiwidGVzdEFzOiBUZXN0QXNXcmFwcGVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3RpbmcvYm9vdHN0cmFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFmdGVyQWxsLCBhZnRlckVhY2gsIGJlZm9yZUFsbCwgYmVmb3JlRWFjaCwgdGVzdCBhcyB2aXRlc3RUZXN0IH0gZnJvbSBcInZpdGVzdFwiO1xuaW1wb3J0IHsgdHlwZSBUZXN0RnVuY3Rpb24sIHR5cGUgVGVzdE9wdGlvbnMsIHR5cGUgVml0ZXN0VXRpbHMgfSBmcm9tIFwidml0ZXN0XCI7XG5cbmltcG9ydCB7IHR5cGUgQ29udGV4dCB9IGZyb20gXCIuLi9hcGkvY29udGV4dFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHsgdHlwZSBTZXJpYWxpemVkVHJhY2UgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IE5haXRlUmVwb3J0ZXIgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGUtcmVwb3J0ZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNvbmFtdSDstIjquLDtmZQg66qo65Oc66W8IOyngOygle2VqeuLiOuLpC5cbiAgICogLSB0cnVlICjquLDrs7jqsJIpOiDthYzsiqTtjIUg66qo65Oc66GcIOy0iOq4sO2ZlCAo67mg66aELCBTeW5jZXIvVGFzayDsg53rnrUpXG4gICAqIC0gZmFsc2U6IOyghOyytCDstIjquLDtmZQgKFN5bmNlciwgVGFzaywgRW50aXR5TWFuYWdlciDrk7Eg66qo65GQIOuhnOuTnClcbiAgICpcbiAgICogbWlncmF0b3IsIHN5bmNlciwgdGVtcGxhdGUg65Ox7J2YIO2FjOyKpO2KuOyXkOyEnOuKlCBmYWxzZeulvCDsgqzsmqntlanri4jri6QuXG4gICAqL1xuICBmb3JUZXN0aW5nPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvb3RzdHJhcCh2aTogVml0ZXN0VXRpbHMsIG9wdGlvbnM/OiBCb290c3RyYXBPcHRpb25zKSB7XG4gIGNvbnN0IGZvclRlc3RpbmcgPSBvcHRpb25zPy5mb3JUZXN0aW5nID8/IHRydWU7XG5cbiAgYmVmb3JlQWxsKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZvclRlc3RpbmcpIHtcbiAgICAgIC8vIGZvclRlc3Rpbmc6IGZhbHNl7J24IOqyveyasCDsnqzstIjquLDtmZTqsIAg7ZWE7JqU7ZWY66+A66GcIO2UjOuemOq3uCDtlbTsoJxcbiAgICAgIFNvbmFtdS5pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgfVxuICAgIGF3YWl0IFNvbmFtdS5pbml0KHRydWUsIGZhbHNlLCB1bmRlZmluZWQsIGZvclRlc3RpbmcpO1xuICB9KTtcbiAgYmVmb3JlRWFjaChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgREIuY3JlYXRlVGVzdFRyYW5zYWN0aW9uKCk7XG4gIH0pO1xuICBhZnRlckVhY2goYXN5bmMgKHsgdGFzayB9KSA9PiB7XG4gICAgdmkudXNlUmVhbFRpbWVycygpO1xuICAgIGF3YWl0IERCLmNsZWFyVGVzdFRyYW5zYWN0aW9uKCk7XG5cbiAgICBhd2FpdCBOYWl0ZVJlcG9ydGVyLnJlcG9ydFRlc3RSZXN1bHQoe1xuICAgICAgc3VpdGVOYW1lOiB0YXNrLnN1aXRlPy5uYW1lID8/IFwiKG5vIHN1aXRlKVwiLFxuICAgICAgc3VpdGVGaWxlUGF0aDogdGFzay5maWxlPy5maWxlcGF0aCxcbiAgICAgIHRlc3ROYW1lOiB0YXNrLm5hbWUsXG4gICAgICB0ZXN0RmlsZVBhdGg6IHRhc2suZmlsZT8uZmlsZXBhdGggPz8gXCJcIixcbiAgICAgIHRlc3RMaW5lOiB0YXNrLmxvY2F0aW9uPy5saW5lID8/IDAsXG4gICAgICBzdGF0dXM6IHRhc2sucmVzdWx0Py5zdGF0ZSA/PyBcInBhc3NcIixcbiAgICAgIGR1cmF0aW9uOiB0YXNrLnJlc3VsdD8uZHVyYXRpb24gPz8gMCxcbiAgICAgIGVycm9yOiB0YXNrLnJlc3VsdD8uZXJyb3JzPy5bMF1cbiAgICAgICAgPyB7XG4gICAgICAgICAgICBtZXNzYWdlOiB0YXNrLnJlc3VsdC5lcnJvcnNbMF0ubWVzc2FnZSxcbiAgICAgICAgICAgIHN0YWNrOiB0YXNrLnJlc3VsdC5lcnJvcnNbMF0uc3RhY2ssXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHRyYWNlczogdGFzay5tZXRhPy50cmFjZXMgPz8gW10sXG4gICAgfSk7XG4gIH0pO1xuICBhZnRlckFsbCgoKSA9PiB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldE1vY2tDb250ZXh0KCk6IENvbnRleHQge1xuICByZXR1cm4ge1xuICAgIHRyYW5zcG9ydDogXCJodHRwXCIsXG4gICAgcmVxdWVzdDogbnVsbCBhcyB1bmtub3duIGFzIENvbnRleHRbXCJyZXF1ZXN0XCJdLFxuICAgIHJlcGx5OiBudWxsIGFzIHVua25vd24gYXMgQ29udGV4dFtcInJlcGx5XCJdLFxuICAgIGhlYWRlcnM6IHt9LFxuICAgIGNyZWF0ZVNTRTogKCgpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImNyZWF0ZVNTRSBpcyBub3QgYXZhaWxhYmxlIGluIG1vY2sgY29udGV4dFwiKTtcbiAgICB9KSBhcyBDb250ZXh0W1wiY3JlYXRlU1NFXCJdLFxuICAgIHNlc3Npb246IG51bGwsXG4gICAgdXNlcjogbnVsbCxcbiAgICBuYWl0ZVN0b3JlOiBOYWl0ZS5jcmVhdGVTdG9yZSgpLFxuICAgIGxvY2FsZTogXCJcIixcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhDb250ZXh0KGNvbnRleHQ6IENvbnRleHQgfCBudWxsLCBmbjogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAvLyBTb25hbXUuYXN5bmNMb2NhbFN0b3JhZ2UucnVu7Jy866GcIGNvbnRleHQg7ISk7KCVXG4gIGF3YWl0IFNvbmFtdS5hc3luY0xvY2FsU3RvcmFnZS5ydW4oeyBjb250ZXh0OiBjb250ZXh0ID8/IGdldE1vY2tDb250ZXh0KCkgfSwgZm4pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2l0aE1vY2tDb250ZXh0KGZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gIGF3YWl0IHJ1bldpdGhDb250ZXh0KGdldE1vY2tDb250ZXh0KCksIGZuKTtcbn1cblxudHlwZSBUZXN0UmVzdWx0ID0gUHJvbWlzZTxSZXR1cm5UeXBlPHR5cGVvZiB2aXRlc3RUZXN0Pj47XG50eXBlIFRlc3RDYWxsYmFja1Jlc3VsdCA9IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xudHlwZSBUZXN0RWFjaCA9IDxUQXJncyBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXT4oXG4gIGNhc2VzOiByZWFkb25seSBUQXJnc1tdLFxuKSA9PiAodGl0bGU6IHN0cmluZywgZm46ICguLi5hcmdzOiBUQXJncykgPT4gVGVzdENhbGxiYWNrUmVzdWx0KSA9PiB2b2lkO1xuXG50eXBlIFRlc3RXcmFwcGVyID0ge1xuICAodGl0bGU6IHN0cmluZywgZm46IFRlc3RGdW5jdGlvbiwgb3B0aW9ucz86IFRlc3RPcHRpb25zKTogVGVzdFJlc3VsdDtcbiAgc2tpcDogKHRpdGxlOiBzdHJpbmcsIGZuOiBUZXN0RnVuY3Rpb24sIG9wdGlvbnM/OiBUZXN0T3B0aW9ucykgPT4gVGVzdFJlc3VsdDtcbiAgb25seTogKHRpdGxlOiBzdHJpbmcsIGZuOiBUZXN0RnVuY3Rpb24sIG9wdGlvbnM/OiBUZXN0T3B0aW9ucykgPT4gVGVzdFJlc3VsdDtcbiAgdG9kbzogKHRpdGxlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGVhY2g6IFRlc3RFYWNoO1xufTtcblxudHlwZSBUZXN0QXNXcmFwcGVyID0ge1xuICA8VXNlciBleHRlbmRzIENvbnRleHRbXCJ1c2VyXCJdPihcbiAgICB1c2VyOiBVc2VyLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZm46IFRlc3RGdW5jdGlvbixcbiAgICBvcHRpb25zPzogVGVzdE9wdGlvbnMsXG4gICk6IFRlc3RSZXN1bHQ7XG4gIHNraXA6IDxVc2VyIGV4dGVuZHMgQ29udGV4dFtcInVzZXJcIl0+KFxuICAgIHVzZXI6IFVzZXIsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBmbjogVGVzdEZ1bmN0aW9uLFxuICAgIG9wdGlvbnM/OiBUZXN0T3B0aW9ucyxcbiAgKSA9PiBUZXN0UmVzdWx0O1xuICBvbmx5OiA8VXNlciBleHRlbmRzIENvbnRleHRbXCJ1c2VyXCJdPihcbiAgICB1c2VyOiBVc2VyLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZm46IFRlc3RGdW5jdGlvbixcbiAgICBvcHRpb25zPzogVGVzdE9wdGlvbnMsXG4gICkgPT4gVGVzdFJlc3VsdDtcbiAgdG9kbzogKHRpdGxlOiBzdHJpbmcpID0+IHZvaWQ7XG59O1xuXG5jb25zdCBlYWNoOiBUZXN0RWFjaCA9IHZpdGVzdFRlc3QuZWFjaC5iaW5kKHZpdGVzdFRlc3QpO1xuXG5kZWNsYXJlIG1vZHVsZSBcInZpdGVzdFwiIHtcbiAgaW50ZXJmYWNlIFRhc2tNZXRhIHtcbiAgICB0cmFjZXM6IFNlcmlhbGl6ZWRUcmFjZVtdO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB0ZXN0OiBUZXN0V3JhcHBlciA9IE9iamVjdC5hc3NpZ24oXG4gIGFzeW5jICh0aXRsZTogc3RyaW5nLCBmbjogVGVzdEZ1bmN0aW9uLCBvcHRpb25zPzogVGVzdE9wdGlvbnMpID0+IHtcbiAgICByZXR1cm4gdml0ZXN0VGVzdCh0aXRsZSwgb3B0aW9ucywgYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgIGF3YWl0IHJ1bldpdGhNb2NrQ29udGV4dChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgZm4oY29udGV4dCk7XG4gICAgICAgICAgY29udGV4dC50YXNrLm1ldGEudHJhY2VzID0gTmFpdGUuZ2V0QWxsVHJhY2VzKCk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcbiAge1xuICAgIHNraXA6IGFzeW5jICh0aXRsZTogc3RyaW5nLCBmbjogVGVzdEZ1bmN0aW9uLCBvcHRpb25zPzogVGVzdE9wdGlvbnMpID0+XG4gICAgICB2aXRlc3RUZXN0LnNraXAodGl0bGUsIG9wdGlvbnMsIGZuKSxcbiAgICBvbmx5OiBhc3luYyAodGl0bGU6IHN0cmluZywgZm46IFRlc3RGdW5jdGlvbiwgb3B0aW9ucz86IFRlc3RPcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gdml0ZXN0VGVzdC5vbmx5KHRpdGxlLCBvcHRpb25zLCBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICBhd2FpdCBydW5XaXRoTW9ja0NvbnRleHQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBmbihjb250ZXh0KTtcbiAgICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICB0b2RvOiAodGl0bGU6IHN0cmluZykgPT4gdml0ZXN0VGVzdC50b2RvKHRpdGxlKSxcbiAgICBlYWNoLFxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHRlc3RBczogVGVzdEFzV3JhcHBlciA9IE9iamVjdC5hc3NpZ24oXG4gIGFzeW5jIDxVc2VyIGV4dGVuZHMgQ29udGV4dFtcInVzZXJcIl0+KFxuICAgIHVzZXI6IFVzZXIsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBmbjogVGVzdEZ1bmN0aW9uLFxuICAgIG9wdGlvbnM/OiBUZXN0T3B0aW9ucyxcbiAgKSA9PiB7XG4gICAgcmV0dXJuIHZpdGVzdFRlc3QodGl0bGUsIG9wdGlvbnMsIGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICBhd2FpdCBydW5XaXRoQ29udGV4dChcbiAgICAgICAge1xuICAgICAgICAgIC4uLmdldE1vY2tDb250ZXh0KCksXG4gICAgICAgICAgdXNlcixcbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBmbihjb250ZXh0KTtcbiAgICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0pO1xuICB9LFxuICB7XG4gICAgc2tpcDogYXN5bmMgPFVzZXIgZXh0ZW5kcyBDb250ZXh0W1widXNlclwiXT4oXG4gICAgICBfdXNlcjogVXNlcixcbiAgICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgICBmbjogVGVzdEZ1bmN0aW9uLFxuICAgICAgb3B0aW9ucz86IFRlc3RPcHRpb25zLFxuICAgICkgPT4gdml0ZXN0VGVzdC5za2lwKHRpdGxlLCBvcHRpb25zLCBmbiksXG4gICAgb25seTogYXN5bmMgPFVzZXIgZXh0ZW5kcyBDb250ZXh0W1widXNlclwiXT4oXG4gICAgICB1c2VyOiBVc2VyLFxuICAgICAgdGl0bGU6IHN0cmluZyxcbiAgICAgIGZuOiBUZXN0RnVuY3Rpb24sXG4gICAgICBvcHRpb25zPzogVGVzdE9wdGlvbnMsXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gdml0ZXN0VGVzdC5vbmx5KHRpdGxlLCBvcHRpb25zLCBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICBhd2FpdCBydW5XaXRoQ29udGV4dChcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5nZXRNb2NrQ29udGV4dCgpLFxuICAgICAgICAgICAgdXNlcixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGF3YWl0IGZuKGNvbnRleHQpO1xuICAgICAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgY29udGV4dC50YXNrLm1ldGEudHJhY2VzID0gTmFpdGUuZ2V0QWxsVHJhY2VzKCk7XG4gICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdG9kbzogKHRpdGxlOiBzdHJpbmcpID0+IHZpdGVzdFRlc3QudG9kbyh0aXRsZSksXG4gIH0sXG4pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O2FBSXVDO1NBQ0g7WUFDRztBQWV2QyxTQUFnQixVQUFVLElBQWlCLFNBQTRCO0NBQ3JFLE1BQU0sYUFBYSxTQUFTLGNBQWM7QUFFMUMsV0FBVSxZQUFZO0FBQ3BCLE1BQUksQ0FBQyxZQUFZO0FBRWYsVUFBTyxnQkFBZ0I7O0FBRXpCLFFBQU0sT0FBTyxLQUFLLE1BQU0sT0FBTyxXQUFXLFdBQVc7R0FD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-explorer.d.ts","sourceRoot":"","sources":["../../src/testing/data-explorer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"data-explorer.d.ts","sourceRoot":"","sources":["../../src/testing/data-explorer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAI9D,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7F,+CAA+C;AAC/C,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;AAEnG,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,mBAAmB,GAAG;IAC9D,+BAA+B;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,oBAAoB;IACpB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;KACpC,CAAC;IACF,0CAA0C;IAC1C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;CACjD,CAAC;AAGF,qBAAa,YAAY;IAIrB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,aAAa;IAJvB,OAAO,CAAC,KAAK,CAAC,CAAe;gBAGnB,EAAE,EAAE,IAAI,EACR,aAAa,EAAE,OAAO,aAAa,EAC3C,YAAY,CAAC,EAAE,YAAY;IAKvB,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YAmBvB,eAAe;YAsDf,UAAU;YAqCV,YAAY;IAO1B,OAAO,CAAC,mBAAmB;YAKb,YAAY;IA8BpB,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACrC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAuBrC;;OAEG;IACG,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACrC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAWrD,OAAO,CAAC,gBAAgB;IAoBxB;;;OAGG;IACG,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC;IA6BtC;;OAEG;YACW,kBAAkB;CAkHjC"}
|