@dbx-tools/appkit-model-gateway 0.9.58 → 0.9.61
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/README.md +1 -1
- package/index.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -2
- package/lib/src/gateway.js +4 -5
- package/lib/src/models.d.ts +5 -3
- package/lib/src/models.js +12 -7
- package/lib/src/protocols/decode.js +4 -6
- package/lib/src/registry.d.ts +5 -0
- package/lib/src/registry.js +24 -13
- package/lib/src/router.js +15 -18
- package/lib/src/transport.d.ts +2 -0
- package/lib/src/transport.js +14 -2
- package/package.json +6 -6
- package/src/gateway.ts +3 -4
- package/src/models.ts +17 -5
- package/src/protocols/decode.ts +3 -6
- package/src/registry.ts +42 -13
- package/src/router.ts +17 -19
- package/src/transport.ts +16 -1
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ await createApp({
|
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
AppKit mounts the plugin routes under `/api/model-gateway/v1/*`. The
|
|
20
|
-
`@dbx-tools/cli
|
|
20
|
+
`@dbx-tools/cli/model-gateway` package owns foreground server construction and
|
|
21
21
|
standard root compatibility paths.
|
|
22
22
|
|
|
23
23
|
## Connect A Client
|
package/index.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/appkit-model-gateway";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.61";
|
|
7
7
|
export * as gateway from "./src/gateway.ts";
|
|
8
8
|
export * as models from "./src/models.ts";
|
|
9
9
|
export * as plugin from "./src/plugin.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/appkit-model-gateway";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.61";
|
|
3
3
|
export * as gateway from "./src/gateway.ts";
|
|
4
4
|
export * as models from "./src/models.ts";
|
|
5
5
|
export * as plugin from "./src/plugin.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/appkit-model-gateway";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.61";
|
|
6
6
|
export * as gateway from "./src/gateway.js";
|
|
7
7
|
export * as models from "./src/models.js";
|
|
8
8
|
export * as plugin from "./src/plugin.js";
|
|
@@ -18,4 +18,4 @@ export { ModelGatewayError, ModelGateway } from "./src/gateway.js";
|
|
|
18
18
|
export { ModelGatewayPlugin, modelGateway } from "./src/plugin.js";
|
|
19
19
|
export { DatabricksModelRegistry } from "./src/registry.js";
|
|
20
20
|
export { UnsupportedGatewayFeatureError } from "./src/router.js";
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxpQ0FBaUMsQ0FBQztBQUNwRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxlQUFlLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxLQUFLLGVBQWUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEtBQUssY0FBYyxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxXQUFXLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBS25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9hcHBraXQtbW9kZWwtZ2F0ZXdheVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjYxXCI7XG5leHBvcnQgKiBhcyBnYXRld2F5IGZyb20gXCIuL3NyYy9nYXRld2F5LnRzXCI7XG5leHBvcnQgKiBhcyBtb2RlbHMgZnJvbSBcIi4vc3JjL21vZGVscy50c1wiO1xuZXhwb3J0ICogYXMgcGx1Z2luIGZyb20gXCIuL3NyYy9wbHVnaW4udHNcIjtcbmV4cG9ydCAqIGFzIHByb3RvY29sc0RlY29kZSBmcm9tIFwiLi9zcmMvcHJvdG9jb2xzL2RlY29kZS50c1wiO1xuZXhwb3J0ICogYXMgcHJvdG9jb2xzRW5jb2RlIGZyb20gXCIuL3NyYy9wcm90b2NvbHMvZW5jb2RlLnRzXCI7XG5leHBvcnQgKiBhcyByZWFzb25pbmdBZGFwdCBmcm9tIFwiLi9zcmMvcmVhc29uaW5nLWFkYXB0LnRzXCI7XG5leHBvcnQgKiBhcyByZWdpc3RyeSBmcm9tIFwiLi9zcmMvcmVnaXN0cnkudHNcIjtcbmV4cG9ydCAqIGFzIHJvdXRlciBmcm9tIFwiLi9zcmMvcm91dGVyLnRzXCI7XG5leHBvcnQgKiBhcyByb3V0ZXMgZnJvbSBcIi4vc3JjL3JvdXRlcy50c1wiO1xuZXhwb3J0ICogYXMgdHJhbnNsYXRpb24gZnJvbSBcIi4vc3JjL3RyYW5zbGF0aW9uLnRzXCI7XG5leHBvcnQgKiBhcyB0cmFuc3BvcnQgZnJvbSBcIi4vc3JjL3RyYW5zcG9ydC50c1wiO1xuZXhwb3J0IHsgTW9kZWxHYXRld2F5RXJyb3IsIE1vZGVsR2F0ZXdheSB9IGZyb20gXCIuL3NyYy9nYXRld2F5LnRzXCI7XG5leHBvcnQgdHlwZSB7IE1vZGVsR2F0ZXdheU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvZ2F0ZXdheS50c1wiO1xuZXhwb3J0IHsgTW9kZWxHYXRld2F5UGx1Z2luLCBtb2RlbEdhdGV3YXkgfSBmcm9tIFwiLi9zcmMvcGx1Z2luLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1vZGVsR2F0ZXdheVBsdWdpbkNvbmZpZyB9IGZyb20gXCIuL3NyYy9wbHVnaW4udHNcIjtcbmV4cG9ydCB0eXBlIHsgRGVjb2RlZEdhdGV3YXlSZXF1ZXN0IH0gZnJvbSBcIi4vc3JjL3Byb3RvY29scy9kZWNvZGUudHNcIjtcbmV4cG9ydCB0eXBlIHsgQ29tcGxldGVkR2VuZXJhdGlvbiB9IGZyb20gXCIuL3NyYy9wcm90b2NvbHMvZW5jb2RlLnRzXCI7XG5leHBvcnQgdHlwZSB7IEFkYXB0ZWRJbmZlcmVuY2VCb2R5IH0gZnJvbSBcIi4vc3JjL3JlYXNvbmluZy1hZGFwdC50c1wiO1xuZXhwb3J0IHsgRGF0YWJyaWNrc01vZGVsUmVnaXN0cnkgfSBmcm9tIFwiLi9zcmMvcmVnaXN0cnkudHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9kZWxSZWdpc3RyeVJlc29sdmVPcHRpb25zLCBNb2RlbFJlZ2lzdHJ5LCBNb2RlbFJlZ2lzdHJ5T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9yZWdpc3RyeS50c1wiO1xuZXhwb3J0IHsgVW5zdXBwb3J0ZWRHYXRld2F5RmVhdHVyZUVycm9yIH0gZnJvbSBcIi4vc3JjL3JvdXRlci50c1wiO1xuZXhwb3J0IHR5cGUgeyBEYXRhYnJpY2tzVHJhbnNwb3J0UmVxdWVzdCB9IGZyb20gXCIuL3NyYy90cmFuc3BvcnQudHNcIjtcbiJdfQ==
|
package/lib/src/gateway.js
CHANGED
|
@@ -35,11 +35,10 @@ export class ModelGateway {
|
|
|
35
35
|
async models(originator, search) {
|
|
36
36
|
const codex = isCodexOriginator(originator);
|
|
37
37
|
logger.debug("listing models", { codex, search });
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
: await this.registry.list();
|
|
38
|
+
const query = search?.trim();
|
|
39
|
+
const targets = query ? await this.registry.search(query) : await this.registry.list();
|
|
41
40
|
logger.debug("listed models", { codex, count: targets.length });
|
|
42
|
-
return listModelsPayload(targets, codex);
|
|
41
|
+
return listModelsPayload(targets, codex, query !== undefined && query.length > 0);
|
|
43
42
|
}
|
|
44
43
|
/** Resolve and execute one inference request. */
|
|
45
44
|
async inference(protocol, body, headers, signal) {
|
|
@@ -133,4 +132,4 @@ function logResponse(upstreamProtocol, model, response) {
|
|
|
133
132
|
else
|
|
134
133
|
logger.warn("upstream request failed", details);
|
|
135
134
|
}
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nYXRld2F5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RixPQUFPLEVBQ0wsdUJBQXVCLEdBR3hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQVFsRCwrREFBK0Q7QUFDL0QsTUFBTSxPQUFPLGlCQUFrQixTQUFRLEtBQUs7SUFFL0I7SUFEWCxZQUNXLE1BQWMsRUFDdkIsT0FBZTtRQUVmLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUhOLFdBQU0sR0FBTixNQUFNLENBQVE7UUFJdkIsSUFBSSxDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFFRCx3RkFBd0Y7QUFDeEYsTUFBTSxPQUFPLFlBQVk7SUFDTixRQUFRLENBQWdCO0lBRXpDLFlBQVksVUFBK0IsRUFBRSxFQUFFLFFBQXdCO1FBQ3JFLE1BQU0sZUFBZSxHQUF5QjtZQUM1QyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsS0FBSyxT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QU0sSUFBSSxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsNkNBQTZDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDdEIsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLGdCQUF3QixFQUFFLEtBQWEsRUFBRSxRQUFrQjtJQUM5RSxNQUFNLE9BQU8sR0FBRztRQUNkLFdBQVcsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7UUFDakQsS0FBSztRQUNMLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtRQUN2QixnQkFBZ0I7S0FDakIsQ0FBQztJQUNGLElBQUksUUFBUSxDQUFDLEVBQUU7UUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDOztRQUN2RCxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb3RvY29sLWluZGVwZW5kZW50IGdhdGV3YXkgc2VydmljZSB1c2VkIGJ5IHBsdWdpbiBhbmQgc3RhbmRhbG9uZSByb3V0ZXMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBNb2RlbENsYXNzIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7XG4gIENsaWVudFByb3RvY29sLFxuICBHYXRld2F5Um91dGUsXG4gIE1vZGVsQ2FwYWJpbGl0eU92ZXJyaWRlLFxuICBNb2RlbExpc3RSZXNwb25zZSxcbn0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1vZGVsLWdhdGV3YXlcIjtcblxuaW1wb3J0IHsgbGlzdE1vZGVsc1BheWxvYWQgfSBmcm9tIFwiLi9tb2RlbHMudHNcIjtcbmltcG9ydCB7IGFkYXB0SW5mZXJlbmNlUmVhc29uaW5nLCBsZWFybkFuZEFkYXB0UmVhc29uaW5nUmV0cnkgfSBmcm9tIFwiLi9yZWFzb25pbmctYWRhcHQudHNcIjtcbmltcG9ydCB7XG4gIERhdGFicmlja3NNb2RlbFJlZ2lzdHJ5LFxuICB0eXBlIE1vZGVsUmVnaXN0cnksXG4gIHR5cGUgTW9kZWxSZWdpc3RyeU9wdGlvbnMsXG59IGZyb20gXCIuL3JlZ2lzdHJ5LnRzXCI7XG5pbXBvcnQgeyBpc0NvZGV4T3JpZ2luYXRvciwgcmVxdWVzdGVkRmVhdHVyZXMsIHJlc29sdmVSb3V0ZSB9IGZyb20gXCIuL3JvdXRlci50c1wiO1xuaW1wb3J0IHsgdHJhbnNsYXRlR2F0ZXdheVJlcXVlc3QgfSBmcm9tIFwiLi90cmFuc2xhdGlvbi50c1wiO1xuaW1wb3J0IHsgZmV0Y2hEYXRhYnJpY2tzLCBnYXRld2F5UmVzcG9uc2VIZWFkZXJzIH0gZnJvbSBcIi4vdHJhbnNwb3J0LnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJhcHBraXQvbW9kZWwtZ2F0ZXdheVwiKTtcblxuLyoqIE1vZGVsIGdhdGV3YXkgcnVudGltZSBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RlbEdhdGV3YXlPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2FjaGVUdGxNcz86IG51bWJlcjtcbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogcmVhZG9ubHkgTW9kZWxDYXBhYmlsaXR5T3ZlcnJpZGVbXTtcbn1cblxuLyoqIEVycm9yIGNhcnJ5aW5nIGFuIEhUVFAgc3RhdHVzIGFuZCBwcm90b2NvbC1zYWZlIG1lc3NhZ2UuICovXG5leHBvcnQgY2xhc3MgTW9kZWxHYXRld2F5RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IHN0YXR1czogbnVtYmVyLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gXCJNb2RlbEdhdGV3YXlFcnJvclwiO1xuICB9XG59XG5cbi8qKiBBcHBLaXQtc2NvcGVkIG1vZGVsIGdhdGV3YXkgd2l0aCBkeW5hbWljIG1vZGVsIGRpc2NvdmVyeSBhbmQgc3RyZWFtaW5nIGluZmVyZW5jZS4gKi9cbmV4cG9ydCBjbGFzcyBNb2RlbEdhdGV3YXkge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5OiBNb2RlbFJlZ2lzdHJ5O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE1vZGVsR2F0ZXdheU9wdGlvbnMgPSB7fSwgcmVnaXN0cnk/OiBNb2RlbFJlZ2lzdHJ5KSB7XG4gICAgY29uc3QgcmVnaXN0cnlPcHRpb25zOiBNb2RlbFJlZ2lzdHJ5T3B0aW9ucyA9IHtcbiAgICAgIC4uLihvcHRpb25zLmNhY2hlVHRsTXMgIT09IHVuZGVmaW5lZCA/IHsgdHRsTXM6IG9wdGlvbnMuY2FjaGVUdGxNcyB9IDoge30pLFxuICAgICAgLi4uKG9wdGlvbnMub3ZlcnJpZGVzID8geyBvdmVycmlkZXM6IG9wdGlvbnMub3ZlcnJpZGVzIH0gOiB7fSksXG4gICAgfTtcbiAgICB0aGlzLnJlZ2lzdHJ5ID0gcmVnaXN0cnkgPz8gbmV3IERhdGFicmlja3NNb2RlbFJlZ2lzdHJ5KHJlZ2lzdHJ5T3B0aW9ucyk7XG4gIH1cblxuICAvKiogUmV0dXJuIHRoZSBsaXZlIE9wZW5BSSBtb2RlbCBsaXN0LCBpbmNsdWRpbmcgQ29kZXggbWV0YWRhdGEgd2hlbiByZXF1ZXN0ZWQuICovXG4gIGFzeW5jIG1vZGVscyhvcmlnaW5hdG9yPzogc3RyaW5nLCBzZWFyY2g/OiBzdHJpbmcpOiBQcm9taXNlPE1vZGVsTGlzdFJlc3BvbnNlPiB7XG4gICAgY29uc3QgY29kZXggPSBpc0NvZGV4T3JpZ2luYXRvcihvcmlnaW5hdG9yKTtcbiAgICBsb2dnZXIuZGVidWcoXCJsaXN0aW5nIG1vZGVsc1wiLCB7IGNvZGV4LCBzZWFyY2ggfSk7XG4gICAgY29uc3QgdGFyZ2V0cyA9IHNlYXJjaD8udHJpbSgpXG4gICAgICA/IGF3YWl0IHRoaXMucmVnaXN0cnkuc2VhcmNoKHNlYXJjaC50cmltKCkpXG4gICAgICA6IGF3YWl0IHRoaXMucmVnaXN0cnkubGlzdCgpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcImxpc3RlZCBtb2RlbHNcIiwgeyBjb2RleCwgY291bnQ6IHRhcmdldHMubGVuZ3RoIH0pO1xuICAgIHJldHVybiBsaXN0TW9kZWxzUGF5bG9hZCh0YXJnZXRzLCBjb2RleCk7XG4gIH1cblxuICAvKiogUmVzb2x2ZSBhbmQgZXhlY3V0ZSBvbmUgaW5mZXJlbmNlIHJlcXVlc3QuICovXG4gIGFzeW5jIGluZmVyZW5jZShcbiAgICBwcm90b2NvbDogQ2xpZW50UHJvdG9jb2wsXG4gICAgYm9keTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LFxuICAgIGhlYWRlcnM6IEhlYWRlcnMsXG4gICAgc2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGNvbnN0IHNhbml0aXplZEJvZHkgPSBzYW5pdGl6ZUluZmVyZW5jZUJvZHkoYm9keSk7XG4gICAgY29uc3QgcmVxdWVzdGVkTW9kZWwgPSByZXF1aXJlZE1vZGVsKHNhbml0aXplZEJvZHkubW9kZWwpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcInJlc29sdmluZyByZXF1ZXN0XCIsIHtcbiAgICAgIGNsaWVudFByb3RvY29sOiBwcm90b2NvbCxcbiAgICAgIG1vZGVsOiByZXF1ZXN0ZWRNb2RlbCxcbiAgICAgIG9yaWdpbmF0b3I6IGhlYWRlcnMuZ2V0KFwib3JpZ2luYXRvclwiKSA/PyB1bmRlZmluZWQsXG4gICAgICBzdHJlYW06IHNhbml0aXplZEJvZHkuc3RyZWFtID09PSB0cnVlLFxuICAgIH0pO1xuICAgIGNvbnN0IGZlYXR1cmVzID0gcmVxdWVzdGVkRmVhdHVyZXMoc2FuaXRpemVkQm9keSk7XG4gICAgY29uc3QgdGFyZ2V0ID0gYXdhaXQgdGhpcy5yZWdpc3RyeS5yZXNvbHZlKHJlcXVlc3RlZE1vZGVsLCB7XG4gICAgICAuLi4ocHJvdG9jb2wgPT09IFwib3BlbmFpLWVtYmVkZGluZ3NcIiA/IHsgbW9kZWxDbGFzczogTW9kZWxDbGFzcy5FbWJlZGRpbmcgfSA6IHt9KSxcbiAgICAgIC4uLihmZWF0dXJlcy50b29scyA/IHsgcmVxdWlyZXNUb29sczogdHJ1ZSB9IDoge30pLFxuICAgIH0pO1xuICAgIGlmICghdGFyZ2V0KSB0aHJvdyBuZXcgTW9kZWxHYXRld2F5RXJyb3IoNDA0LCBgTW9kZWwgbm90IGZvdW5kOiAke3JlcXVlc3RlZE1vZGVsfWApO1xuICAgIGNvbnN0IHJvdXRlID0gcmVzb2x2ZVJvdXRlKHtcbiAgICAgIGNsaWVudFByb3RvY29sOiBwcm90b2NvbCxcbiAgICAgIHJlcXVlc3RlZE1vZGVsLFxuICAgICAgb3JpZ2luYXRvcjogaGVhZGVycy5nZXQoXCJvcmlnaW5hdG9yXCIpID8/IHVuZGVmaW5lZCxcbiAgICAgIGZlYXR1cmVzLFxuICAgICAgdGFyZ2V0LFxuICAgIH0pO1xuICAgIGxvZ2dlci5kZWJ1ZyhcInJvdXRlZFwiLCB7XG4gICAgICBjbGllbnRQcm90b2NvbDogcHJvdG9jb2wsXG4gICAgICBtb2RlbDogdGFyZ2V0LmlkLFxuICAgICAgdXBzdHJlYW1Qcm90b2NvbDogcm91dGUudXBzdHJlYW1Qcm90b2NvbCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGFkYXB0ZWQgPSBhZGFwdEluZmVyZW5jZVJlYXNvbmluZyh0YXJnZXQuaWQsIHNhbml0aXplZEJvZHkpO1xuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZm9yd2FyZChyb3V0ZSwgYWRhcHRlZC5ib2R5LCBoZWFkZXJzLCBzaWduYWwpO1xuICAgIGNvbnN0IHJldHJ5Qm9keSA9IGF3YWl0IGxlYXJuQW5kQWRhcHRSZWFzb25pbmdSZXRyeSh7XG4gICAgICBtb2RlbDogdGFyZ2V0LmlkLFxuICAgICAgYm9keTogc2FuaXRpemVkQm9keSxcbiAgICAgIHJlc3BvbnNlLFxuICAgICAgcHJldmlvdXNXaXJlRWZmb3J0OiBhZGFwdGVkLndpcmVFZmZvcnQsXG4gICAgfSk7XG4gICAgaWYgKHJldHJ5Qm9keSkge1xuICAgICAgYXdhaXQgcmVzcG9uc2UuYm9keT8uY2FuY2VsKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5mb3J3YXJkKHJvdXRlLCByZXRyeUJvZHksIGhlYWRlcnMsIHNpZ25hbCk7XG4gICAgfVxuXG4gICAgbG9nUmVzcG9uc2Uocm91dGUudXBzdHJlYW1Qcm90b2NvbCwgdGFyZ2V0LmlkLCByZXNwb25zZSk7XG4gICAgaWYgKHJvdXRlLnVwc3RyZWFtUHJvdG9jb2wgPT09IFwiYWktc2RrXCIpIHtcbiAgICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwieC1kYngtdG9vbHMtdXBzdHJlYW1cIiwgcm91dGUudXBzdHJlYW1Qcm90b2NvbCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICAgIGNvbnN0IGZvcndhcmRlZCA9IGdhdGV3YXlSZXNwb25zZUhlYWRlcnMocmVzcG9uc2UuaGVhZGVycyk7XG4gICAgZm9yd2FyZGVkLnNldChcIngtZGJ4LXRvb2xzLXVwc3RyZWFtXCIsIHJvdXRlLnVwc3RyZWFtUHJvdG9jb2wpO1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UocmVzcG9uc2UuYm9keSwge1xuICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0LFxuICAgICAgaGVhZGVyczogZm9yd2FyZGVkLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIFJlZnJlc2ggdGhlIGFjdGl2ZSBwcmluY2lwYWwncyBtb2RlbCBjYXRhbG9ndWUuICovXG4gIHJlZnJlc2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmRlYnVnKFwicmVmcmVzaGluZyBtb2RlbCBjYXRhbG9ndWVcIik7XG4gICAgcmV0dXJuIHRoaXMucmVnaXN0cnkucmVmcmVzaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmb3J3YXJkKFxuICAgIHJvdXRlOiBHYXRld2F5Um91dGUsXG4gICAgYm9keTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LFxuICAgIGhlYWRlcnM6IEhlYWRlcnMsXG4gICAgc2lnbmFsOiBBYm9ydFNpZ25hbCxcbiAgKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGlmIChyb3V0ZS51cHN0cmVhbVByb3RvY29sID09PSBcImFpLXNka1wiKSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlR2F0ZXdheVJlcXVlc3Qocm91dGUsIGJvZHksIHNpZ25hbCk7XG4gICAgfVxuICAgIHJldHVybiBmZXRjaERhdGFicmlja3MoeyByb3V0ZSwgYm9keSwgaGVhZGVycywgc2lnbmFsIH0pO1xuICB9XG59XG5cbi8qKiBSZW1vdmUgYW4gZXhwbGljaXQgbnVsbCB0ZW1wZXJhdHVyZSB3aGlsZSBwcmVzZXJ2aW5nIG9taXR0ZWQgYW5kIG51bWVyaWMgdmFsdWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplSW5mZXJlbmNlQm9keShcbiAgYm9keTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LFxuKTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgaWYgKGJvZHkudGVtcGVyYXR1cmUgIT09IG51bGwpIHJldHVybiBib2R5O1xuICBjb25zdCBzYW5pdGl6ZWQgPSB7IC4uLmJvZHkgfTtcbiAgZGVsZXRlIHNhbml0aXplZC50ZW1wZXJhdHVyZTtcbiAgcmV0dXJuIHNhbml0aXplZDtcbn1cblxuZnVuY3Rpb24gcmVxdWlyZWRNb2RlbCh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIgfHwgIXZhbHVlLnRyaW0oKSkge1xuICAgIHRocm93IG5ldyBNb2RlbEdhdGV3YXlFcnJvcig0MDAsIFwiUmVxdWVzdCBib2R5IG11c3QgaW5jbHVkZSBhIG5vbi1lbXB0eSBtb2RlbFwiKTtcbiAgfVxuICByZXR1cm4gdmFsdWUudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBsb2dSZXNwb25zZSh1cHN0cmVhbVByb3RvY29sOiBzdHJpbmcsIG1vZGVsOiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSk6IHZvaWQge1xuICBjb25zdCBkZXRhaWxzID0ge1xuICAgIGNvbnRlbnRUeXBlOiByZXNwb25zZS5oZWFkZXJzLmdldChcImNvbnRlbnQtdHlwZVwiKSxcbiAgICBtb2RlbCxcbiAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICB1cHN0cmVhbVByb3RvY29sLFxuICB9O1xuICBpZiAocmVzcG9uc2Uub2spIGxvZ2dlci5kZWJ1ZyhcInVwc3RyZWFtIHJlc3BvbnNlXCIsIGRldGFpbHMpO1xuICBlbHNlIGxvZ2dlci53YXJuKFwidXBzdHJlYW0gcmVxdWVzdCBmYWlsZWRcIiwgZGV0YWlscyk7XG59XG4iXX0=
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nYXRld2F5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RixPQUFPLEVBQ0wsdUJBQXVCLEdBR3hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQVFsRCwrREFBK0Q7QUFDL0QsTUFBTSxPQUFPLGlCQUFrQixTQUFRLEtBQUs7SUFFL0I7SUFEWCxZQUNXLE1BQWMsRUFDdkIsT0FBZTtRQUVmLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUhOLFdBQU0sR0FBTixNQUFNLENBQVE7UUFJdkIsSUFBSSxDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFFRCx3RkFBd0Y7QUFDeEYsTUFBTSxPQUFPLFlBQVk7SUFDTixRQUFRLENBQWdCO0lBRXpDLFlBQVksVUFBK0IsRUFBRSxFQUFFLFFBQXdCO1FBQ3JFLE1BQU0sZUFBZSxHQUF5QjtZQUM1QyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsS0FBSyxT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LEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUksaUJBQWlCLENBQUMsR0FBRyxFQUFFLDZDQUE2QyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3RCLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxnQkFBd0IsRUFBRSxLQUFhLEVBQUUsUUFBa0I7SUFDOUUsTUFBTSxPQUFPLEdBQUc7UUFDZCxXQUFXLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO1FBQ2pELEtBQUs7UUFDTCxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07UUFDdkIsZ0JBQWdCO0tBQ2pCLENBQUM7SUFDRixJQUFJLFFBQVEsQ0FBQyxFQUFFO1FBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQzs7UUFDdkQsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm90b2NvbC1pbmRlcGVuZGVudCBnYXRld2F5IHNlcnZpY2UgdXNlZCBieSBwbHVnaW4gYW5kIHN0YW5kYWxvbmUgcm91dGVzLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgTW9kZWxDbGFzcyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbFwiO1xuaW1wb3J0IHR5cGUge1xuICBDbGllbnRQcm90b2NvbCxcbiAgR2F0ZXdheVJvdXRlLFxuICBNb2RlbENhcGFiaWxpdHlPdmVycmlkZSxcbiAgTW9kZWxMaXN0UmVzcG9uc2UsXG59IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbC1nYXRld2F5XCI7XG5cbmltcG9ydCB7IGxpc3RNb2RlbHNQYXlsb2FkIH0gZnJvbSBcIi4vbW9kZWxzLnRzXCI7XG5pbXBvcnQgeyBhZGFwdEluZmVyZW5jZVJlYXNvbmluZywgbGVhcm5BbmRBZGFwdFJlYXNvbmluZ1JldHJ5IH0gZnJvbSBcIi4vcmVhc29uaW5nLWFkYXB0LnRzXCI7XG5pbXBvcnQge1xuICBEYXRhYnJpY2tzTW9kZWxSZWdpc3RyeSxcbiAgdHlwZSBNb2RlbFJlZ2lzdHJ5LFxuICB0eXBlIE1vZGVsUmVnaXN0cnlPcHRpb25zLFxufSBmcm9tIFwiLi9yZWdpc3RyeS50c1wiO1xuaW1wb3J0IHsgaXNDb2RleE9yaWdpbmF0b3IsIHJlcXVlc3RlZEZlYXR1cmVzLCByZXNvbHZlUm91dGUgfSBmcm9tIFwiLi9yb3V0ZXIudHNcIjtcbmltcG9ydCB7IHRyYW5zbGF0ZUdhdGV3YXlSZXF1ZXN0IH0gZnJvbSBcIi4vdHJhbnNsYXRpb24udHNcIjtcbmltcG9ydCB7IGZldGNoRGF0YWJyaWNrcywgZ2F0ZXdheVJlc3BvbnNlSGVhZGVycyB9IGZyb20gXCIuL3RyYW5zcG9ydC50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiYXBwa2l0L21vZGVsLWdhdGV3YXlcIik7XG5cbi8qKiBNb2RlbCBnYXRld2F5IHJ1bnRpbWUgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxHYXRld2F5T3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNhY2hlVHRsTXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IG92ZXJyaWRlcz86IHJlYWRvbmx5IE1vZGVsQ2FwYWJpbGl0eU92ZXJyaWRlW107XG59XG5cbi8qKiBFcnJvciBjYXJyeWluZyBhbiBIVFRQIHN0YXR1cyBhbmQgcHJvdG9jb2wtc2FmZSBtZXNzYWdlLiAqL1xuZXhwb3J0IGNsYXNzIE1vZGVsR2F0ZXdheUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBzdGF0dXM6IG51bWJlcixcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiTW9kZWxHYXRld2F5RXJyb3JcIjtcbiAgfVxufVxuXG4vKiogQXBwS2l0LXNjb3BlZCBtb2RlbCBnYXRld2F5IHdpdGggZHluYW1pYyBtb2RlbCBkaXNjb3ZlcnkgYW5kIHN0cmVhbWluZyBpbmZlcmVuY2UuICovXG5leHBvcnQgY2xhc3MgTW9kZWxHYXRld2F5IHtcbiAgcHJpdmF0ZSByZWFkb25seSByZWdpc3RyeTogTW9kZWxSZWdpc3RyeTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBNb2RlbEdhdGV3YXlPcHRpb25zID0ge30sIHJlZ2lzdHJ5PzogTW9kZWxSZWdpc3RyeSkge1xuICAgIGNvbnN0IHJlZ2lzdHJ5T3B0aW9uczogTW9kZWxSZWdpc3RyeU9wdGlvbnMgPSB7XG4gICAgICAuLi4ob3B0aW9ucy5jYWNoZVR0bE1zICE9PSB1bmRlZmluZWQgPyB7IHR0bE1zOiBvcHRpb25zLmNhY2hlVHRsTXMgfSA6IHt9KSxcbiAgICAgIC4uLihvcHRpb25zLm92ZXJyaWRlcyA/IHsgb3ZlcnJpZGVzOiBvcHRpb25zLm92ZXJyaWRlcyB9IDoge30pLFxuICAgIH07XG4gICAgdGhpcy5yZWdpc3RyeSA9IHJlZ2lzdHJ5ID8/IG5ldyBEYXRhYnJpY2tzTW9kZWxSZWdpc3RyeShyZWdpc3RyeU9wdGlvbnMpO1xuICB9XG5cbiAgLyoqIFJldHVybiB0aGUgbGl2ZSBPcGVuQUkgbW9kZWwgbGlzdCwgaW5jbHVkaW5nIENvZGV4IG1ldGFkYXRhIHdoZW4gcmVxdWVzdGVkLiAqL1xuICBhc3luYyBtb2RlbHMob3JpZ2luYXRvcj86IHN0cmluZywgc2VhcmNoPzogc3RyaW5nKTogUHJvbWlzZTxNb2RlbExpc3RSZXNwb25zZT4ge1xuICAgIGNvbnN0IGNvZGV4ID0gaXNDb2RleE9yaWdpbmF0b3Iob3JpZ2luYXRvcik7XG4gICAgbG9nZ2VyLmRlYnVnKFwibGlzdGluZyBtb2RlbHNcIiwgeyBjb2RleCwgc2VhcmNoIH0pO1xuICAgIGNvbnN0IHF1ZXJ5ID0gc2VhcmNoPy50cmltKCk7XG4gICAgY29uc3QgdGFyZ2V0cyA9IHF1ZXJ5ID8gYXdhaXQgdGhpcy5yZWdpc3RyeS5zZWFyY2gocXVlcnkpIDogYXdhaXQgdGhpcy5yZWdpc3RyeS5saXN0KCk7XG4gICAgbG9nZ2VyLmRlYnVnKFwibGlzdGVkIG1vZGVsc1wiLCB7IGNvZGV4LCBjb3VudDogdGFyZ2V0cy5sZW5ndGggfSk7XG4gICAgcmV0dXJuIGxpc3RNb2RlbHNQYXlsb2FkKHRhcmdldHMsIGNvZGV4LCBxdWVyeSAhPT0gdW5kZWZpbmVkICYmIHF1ZXJ5Lmxlbmd0aCA+IDApO1xuICB9XG5cbiAgLyoqIFJlc29sdmUgYW5kIGV4ZWN1dGUgb25lIGluZmVyZW5jZSByZXF1ZXN0LiAqL1xuICBhc3luYyBpbmZlcmVuY2UoXG4gICAgcHJvdG9jb2w6IENsaWVudFByb3RvY29sLFxuICAgIGJvZHk6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PixcbiAgICBoZWFkZXJzOiBIZWFkZXJzLFxuICAgIHNpZ25hbDogQWJvcnRTaWduYWwsXG4gICk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBjb25zdCBzYW5pdGl6ZWRCb2R5ID0gc2FuaXRpemVJbmZlcmVuY2VCb2R5KGJvZHkpO1xuICAgIGNvbnN0IHJlcXVlc3RlZE1vZGVsID0gcmVxdWlyZWRNb2RlbChzYW5pdGl6ZWRCb2R5Lm1vZGVsKTtcbiAgICBsb2dnZXIuZGVidWcoXCJyZXNvbHZpbmcgcmVxdWVzdFwiLCB7XG4gICAgICBjbGllbnRQcm90b2NvbDogcHJvdG9jb2wsXG4gICAgICBtb2RlbDogcmVxdWVzdGVkTW9kZWwsXG4gICAgICBvcmlnaW5hdG9yOiBoZWFkZXJzLmdldChcIm9yaWdpbmF0b3JcIikgPz8gdW5kZWZpbmVkLFxuICAgICAgc3RyZWFtOiBzYW5pdGl6ZWRCb2R5LnN0cmVhbSA9PT0gdHJ1ZSxcbiAgICB9KTtcbiAgICBjb25zdCBmZWF0dXJlcyA9IHJlcXVlc3RlZEZlYXR1cmVzKHNhbml0aXplZEJvZHkpO1xuICAgIGNvbnN0IHRhcmdldCA9IGF3YWl0IHRoaXMucmVnaXN0cnkucmVzb2x2ZShyZXF1ZXN0ZWRNb2RlbCwge1xuICAgICAgLi4uKHByb3RvY29sID09PSBcIm9wZW5haS1lbWJlZGRpbmdzXCIgPyB7IG1vZGVsQ2xhc3M6IE1vZGVsQ2xhc3MuRW1iZWRkaW5nIH0gOiB7fSksXG4gICAgICAuLi4oZmVhdHVyZXMudG9vbHMgPyB7IHJlcXVpcmVzVG9vbHM6IHRydWUgfSA6IHt9KSxcbiAgICB9KTtcbiAgICBpZiAoIXRhcmdldCkgdGhyb3cgbmV3IE1vZGVsR2F0ZXdheUVycm9yKDQwNCwgYE1vZGVsIG5vdCBmb3VuZDogJHtyZXF1ZXN0ZWRNb2RlbH1gKTtcbiAgICBjb25zdCByb3V0ZSA9IHJlc29sdmVSb3V0ZSh7XG4gICAgICBjbGllbnRQcm90b2NvbDogcHJvdG9jb2wsXG4gICAgICByZXF1ZXN0ZWRNb2RlbCxcbiAgICAgIG9yaWdpbmF0b3I6IGhlYWRlcnMuZ2V0KFwib3JpZ2luYXRvclwiKSA/PyB1bmRlZmluZWQsXG4gICAgICBmZWF0dXJlcyxcbiAgICAgIHRhcmdldCxcbiAgICB9KTtcbiAgICBsb2dnZXIuZGVidWcoXCJyb3V0ZWRcIiwge1xuICAgICAgY2xpZW50UHJvdG9jb2w6IHByb3RvY29sLFxuICAgICAgbW9kZWw6IHRhcmdldC5pZCxcbiAgICAgIHVwc3RyZWFtUHJvdG9jb2w6IHJvdXRlLnVwc3RyZWFtUHJvdG9jb2wsXG4gICAgfSk7XG5cbiAgICBjb25zdCBhZGFwdGVkID0gYWRhcHRJbmZlcmVuY2VSZWFzb25pbmcodGFyZ2V0LmlkLCBzYW5pdGl6ZWRCb2R5KTtcbiAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZvcndhcmQocm91dGUsIGFkYXB0ZWQuYm9keSwgaGVhZGVycywgc2lnbmFsKTtcbiAgICBjb25zdCByZXRyeUJvZHkgPSBhd2FpdCBsZWFybkFuZEFkYXB0UmVhc29uaW5nUmV0cnkoe1xuICAgICAgbW9kZWw6IHRhcmdldC5pZCxcbiAgICAgIGJvZHk6IHNhbml0aXplZEJvZHksXG4gICAgICByZXNwb25zZSxcbiAgICAgIHByZXZpb3VzV2lyZUVmZm9ydDogYWRhcHRlZC53aXJlRWZmb3J0LFxuICAgIH0pO1xuICAgIGlmIChyZXRyeUJvZHkpIHtcbiAgICAgIGF3YWl0IHJlc3BvbnNlLmJvZHk/LmNhbmNlbCgpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuZm9yd2FyZChyb3V0ZSwgcmV0cnlCb2R5LCBoZWFkZXJzLCBzaWduYWwpO1xuICAgIH1cblxuICAgIGxvZ1Jlc3BvbnNlKHJvdXRlLnVwc3RyZWFtUHJvdG9jb2wsIHRhcmdldC5pZCwgcmVzcG9uc2UpO1xuICAgIGlmIChyb3V0ZS51cHN0cmVhbVByb3RvY29sID09PSBcImFpLXNka1wiKSB7XG4gICAgICByZXNwb25zZS5oZWFkZXJzLnNldChcIngtZGJ4LXRvb2xzLXVwc3RyZWFtXCIsIHJvdXRlLnVwc3RyZWFtUHJvdG9jb2wpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgICBjb25zdCBmb3J3YXJkZWQgPSBnYXRld2F5UmVzcG9uc2VIZWFkZXJzKHJlc3BvbnNlLmhlYWRlcnMpO1xuICAgIGZvcndhcmRlZC5zZXQoXCJ4LWRieC10b29scy11cHN0cmVhbVwiLCByb3V0ZS51cHN0cmVhbVByb3RvY29sKTtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHJlc3BvbnNlLmJvZHksIHtcbiAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcbiAgICAgIGhlYWRlcnM6IGZvcndhcmRlZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBSZWZyZXNoIHRoZSBhY3RpdmUgcHJpbmNpcGFsJ3MgbW9kZWwgY2F0YWxvZ3VlLiAqL1xuICByZWZyZXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhcInJlZnJlc2hpbmcgbW9kZWwgY2F0YWxvZ3VlXCIpO1xuICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LnJlZnJlc2goKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZm9yd2FyZChcbiAgICByb3V0ZTogR2F0ZXdheVJvdXRlLFxuICAgIGJvZHk6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PixcbiAgICBoZWFkZXJzOiBIZWFkZXJzLFxuICAgIHNpZ25hbDogQWJvcnRTaWduYWwsXG4gICk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBpZiAocm91dGUudXBzdHJlYW1Qcm90b2NvbCA9PT0gXCJhaS1zZGtcIikge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0ZUdhdGV3YXlSZXF1ZXN0KHJvdXRlLCBib2R5LCBzaWduYWwpO1xuICAgIH1cbiAgICByZXR1cm4gZmV0Y2hEYXRhYnJpY2tzKHsgcm91dGUsIGJvZHksIGhlYWRlcnMsIHNpZ25hbCB9KTtcbiAgfVxufVxuXG4vKiogUmVtb3ZlIGFuIGV4cGxpY2l0IG51bGwgdGVtcGVyYXR1cmUgd2hpbGUgcHJlc2VydmluZyBvbWl0dGVkIGFuZCBudW1lcmljIHZhbHVlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZUluZmVyZW5jZUJvZHkoXG4gIGJvZHk6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pixcbik6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIGlmIChib2R5LnRlbXBlcmF0dXJlICE9PSBudWxsKSByZXR1cm4gYm9keTtcbiAgY29uc3Qgc2FuaXRpemVkID0geyAuLi5ib2R5IH07XG4gIGRlbGV0ZSBzYW5pdGl6ZWQudGVtcGVyYXR1cmU7XG4gIHJldHVybiBzYW5pdGl6ZWQ7XG59XG5cbmZ1bmN0aW9uIHJlcXVpcmVkTW9kZWwodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiIHx8ICF2YWx1ZS50cmltKCkpIHtcbiAgICB0aHJvdyBuZXcgTW9kZWxHYXRld2F5RXJyb3IoNDAwLCBcIlJlcXVlc3QgYm9keSBtdXN0IGluY2x1ZGUgYSBub24tZW1wdHkgbW9kZWxcIik7XG4gIH1cbiAgcmV0dXJuIHZhbHVlLnRyaW0oKTtcbn1cblxuZnVuY3Rpb24gbG9nUmVzcG9uc2UodXBzdHJlYW1Qcm90b2NvbDogc3RyaW5nLCBtb2RlbDogc3RyaW5nLCByZXNwb25zZTogUmVzcG9uc2UpOiB2b2lkIHtcbiAgY29uc3QgZGV0YWlscyA9IHtcbiAgICBjb250ZW50VHlwZTogcmVzcG9uc2UuaGVhZGVycy5nZXQoXCJjb250ZW50LXR5cGVcIiksXG4gICAgbW9kZWwsXG4gICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgdXBzdHJlYW1Qcm90b2NvbCxcbiAgfTtcbiAgaWYgKHJlc3BvbnNlLm9rKSBsb2dnZXIuZGVidWcoXCJ1cHN0cmVhbSByZXNwb25zZVwiLCBkZXRhaWxzKTtcbiAgZWxzZSBsb2dnZXIud2FybihcInVwc3RyZWFtIHJlcXVlc3QgZmFpbGVkXCIsIGRldGFpbHMpO1xufVxuIl19
|
package/lib/src/models.d.ts
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { CodexModelListResponse, ModelListResponse, ModelTarget, OpenAIModelListResponse } from "@dbx-tools/shared-model-gateway";
|
|
7
7
|
/** Build the combined OpenAI and optional Codex model catalogue. */
|
|
8
|
-
export declare function listModelsPayload(targets: readonly ModelTarget[], includeCodex: true): CodexModelListResponse;
|
|
9
|
-
export declare function listModelsPayload(targets: readonly ModelTarget[], includeCodex: false): OpenAIModelListResponse;
|
|
10
|
-
export declare function listModelsPayload(targets: readonly ModelTarget[], includeCodex: boolean): ModelListResponse;
|
|
8
|
+
export declare function listModelsPayload(targets: readonly ModelTarget[], includeCodex: true, preserveOrder?: boolean): CodexModelListResponse;
|
|
9
|
+
export declare function listModelsPayload(targets: readonly ModelTarget[], includeCodex: false, preserveOrder?: boolean): OpenAIModelListResponse;
|
|
10
|
+
export declare function listModelsPayload(targets: readonly ModelTarget[], includeCodex: boolean, preserveOrder?: boolean): ModelListResponse;
|
|
11
|
+
/** Codex `/v1/models` slug for a resolved gateway target. */
|
|
12
|
+
export declare function codexModelSlug(target: ModelTarget): string;
|
package/lib/src/models.js
CHANGED
|
@@ -15,12 +15,13 @@ const REASONING_DESCRIPTIONS = {
|
|
|
15
15
|
xhigh: "Use an extra-high reasoning budget",
|
|
16
16
|
max: "Use the largest available reasoning budget",
|
|
17
17
|
};
|
|
18
|
-
export function listModelsPayload(targets, includeCodex) {
|
|
18
|
+
export function listModelsPayload(targets, includeCodex, preserveOrder = false) {
|
|
19
19
|
const available = targets
|
|
20
20
|
.filter((target) => target.endpoint?.status?.deprecated !== true)
|
|
21
|
-
.filter((target) => !includeCodex || hasChatClass(target))
|
|
22
|
-
|
|
23
|
-
.sort((left, right) => compareCatalogueTargets(left, right, (target) => target.displayName));
|
|
21
|
+
.filter((target) => !includeCodex || hasChatClass(target));
|
|
22
|
+
if (!preserveOrder) {
|
|
23
|
+
available.sort((left, right) => compareCatalogueTargets(left, right, (target) => target.displayName));
|
|
24
|
+
}
|
|
24
25
|
if (includeCodex) {
|
|
25
26
|
return {
|
|
26
27
|
models: available.map((target, index) => codexModel(target, index + 1)),
|
|
@@ -53,13 +54,17 @@ function openAiModel(target) {
|
|
|
53
54
|
},
|
|
54
55
|
};
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
+
/** Codex `/v1/models` slug for a resolved gateway target. */
|
|
58
|
+
export function codexModelSlug(target) {
|
|
57
59
|
const model = target.capabilities.aiGatewayCodex && target.modelServiceName
|
|
58
60
|
? target.modelServiceName
|
|
59
61
|
: target.id;
|
|
62
|
+
return `databricks/${model}`;
|
|
63
|
+
}
|
|
64
|
+
function codexModel(target, priority) {
|
|
60
65
|
const efforts = target.reasoningEfforts;
|
|
61
66
|
return {
|
|
62
|
-
slug:
|
|
67
|
+
slug: codexModelSlug(target),
|
|
63
68
|
display_name: target.displayName,
|
|
64
69
|
description: target.endpoint?.description ?? "Databricks model service",
|
|
65
70
|
base_instructions: CODEX_BASE_INSTRUCTIONS,
|
|
@@ -155,4 +160,4 @@ function hasChatClass(target) {
|
|
|
155
160
|
const modelClass = target.endpoint?.class;
|
|
156
161
|
return modelClass !== undefined && isChatClass(modelClass);
|
|
157
162
|
}
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFVdkUsTUFBTSx1QkFBdUIsR0FDM0IsdUhBQXVILENBQUM7QUFFMUgsTUFBTSxzQkFBc0IsR0FBcUM7SUFDL0QsSUFBSSxFQUFFLDRCQUE0QjtJQUNsQyxPQUFPLEVBQUUsNkNBQTZDO0lBQ3RELEdBQUcsRUFBRSw0QkFBNEI7SUFDakMsTUFBTSxFQUFFLCtCQUErQjtJQUN2QyxJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLEtBQUssRUFBRSxvQ0FBb0M7SUFDM0MsR0FBRyxFQUFFLDRDQUE0QztDQUNsRCxDQUFDO0FBZUYsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixPQUErQixFQUMvQixZQUFxQjtJQUVyQixNQUFNLFNBQVMsR0FBRyxPQUFPO1NBQ3RCLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxLQUFLLElBQUksQ0FBQztTQUNoRSxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6RCxLQUFLLEVBQUU7U0FDUCxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMvRixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pCLE9BQU87WUFDTCxNQUFNLEVBQUUsU0FBUyxD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LEtBQUssS0FBSyxLQUFLO1FBQUUsT0FBTyxRQUFRLENBQUM7SUFDckMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sTUFBTSxJQUFJLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3pELENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLE1BQW1CO0lBQzVDLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxLQUFLLG1CQUFtQixDQUFDO0FBQ2xHLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUFDLElBQVksRUFBRSxLQUFhO0lBQ3hELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUN0RixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsTUFBbUI7SUFDdkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7SUFDMUMsT0FBTyxVQUFVLEtBQUssU0FBUyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBPcGVuQUkgYW5kIENvZGV4IG1vZGVsLWxpc3QgcGF5bG9hZHMgZGVyaXZlZCBmcm9tIHRoZSBsaXZlIHJlZ2lzdHJ5LlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBpc0NoYXRDbGFzcyB9IGZyb20gXCJAZGJ4LXRvb2xzL21vZGVsL2NsYXNzZXNcIjtcbmltcG9ydCB7IG1vZGVsRmFtaWx5LCBtb2RlbEZhbWlseVJhbmsgfSBmcm9tIFwiQGRieC10b29scy9tb2RlbC9wb2xpY3lcIjtcbmltcG9ydCB0eXBlIHtcbiAgQ29kZXhNb2RlbCxcbiAgQ29kZXhNb2RlbExpc3RSZXNwb25zZSxcbiAgTW9kZWxMaXN0UmVzcG9uc2UsXG4gIE1vZGVsVGFyZ2V0LFxuICBPcGVuQUlNb2RlbCxcbiAgT3BlbkFJTW9kZWxMaXN0UmVzcG9uc2UsXG59IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbC1nYXRld2F5XCI7XG5cbmNvbnN0IENPREVYX0JBU0VfSU5TVFJVQ1RJT05TID1cbiAgXCJZb3UgYXJlIGEgY29kaW5nIGFnZW50LiBGb2xsb3cgdGhlIHVzZXIncyBpbnN0cnVjdGlvbnMgYW5kIHVzZSB0aGUgYXZhaWxhYmxlIHRvb2xzIHRvIHdvcmsgaW4gdGhlIGN1cnJlbnQgcmVwb3NpdG9yeS5cIjtcblxuY29uc3QgUkVBU09OSU5HX0RFU0NSSVBUSU9OUzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gIG5vbmU6IFwiRGlzYWJsZSBleHBsaWNpdCByZWFzb25pbmdcIixcbiAgbWluaW1hbDogXCJVc2UgdGhlIHNtYWxsZXN0IGF2YWlsYWJsZSByZWFzb25pbmcgYnVkZ2V0XCIsXG4gIGxvdzogXCJVc2UgYSBsb3cgcmVhc29uaW5nIGJ1ZGdldFwiLFxuICBtZWRpdW06IFwiVXNlIGEgbWVkaXVtIHJlYXNvbmluZyBidWRnZXRcIixcbiAgaGlnaDogXCJVc2UgYSBoaWdoIHJlYXNvbmluZyBidWRnZXRcIixcbiAgeGhpZ2g6IFwiVXNlIGFuIGV4dHJhLWhpZ2ggcmVhc29uaW5nIGJ1ZGdldFwiLFxuICBtYXg6IFwiVXNlIHRoZSBsYXJnZXN0IGF2YWlsYWJsZSByZWFzb25pbmcgYnVkZ2V0XCIsXG59O1xuXG4vKiogQnVpbGQgdGhlIGNvbWJpbmVkIE9wZW5BSSBhbmQgb3B0aW9uYWwgQ29kZXggbW9kZWwgY2F0YWxvZ3VlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RNb2RlbHNQYXlsb2FkKFxuICB0YXJnZXRzOiByZWFkb25seSBNb2RlbFRhcmdldFtdLFxuICBpbmNsdWRlQ29kZXg6IHRydWUsXG4pOiBDb2RleE1vZGVsTGlzdFJlc3BvbnNlO1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RNb2RlbHNQYXlsb2FkKFxuICB0YXJnZXRzOiByZWFkb25seSBNb2RlbFRhcmdldFtdLFxuICBpbmNsdWRlQ29kZXg6IGZhbHNlLFxuKTogT3BlbkFJTW9kZWxMaXN0UmVzcG9uc2U7XG5leHBvcnQgZnVuY3Rpb24gbGlzdE1vZGVsc1BheWxvYWQoXG4gIHRhcmdldHM6IHJlYWRvbmx5IE1vZGVsVGFyZ2V0W10sXG4gIGluY2x1ZGVDb2RleDogYm9vbGVhbixcbik6IE1vZGVsTGlzdFJlc3BvbnNlO1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RNb2RlbHNQYXlsb2FkKFxuICB0YXJnZXRzOiByZWFkb25seSBNb2RlbFRhcmdldFtdLFxuICBpbmNsdWRlQ29kZXg6IGJvb2xlYW4sXG4pOiBNb2RlbExpc3RSZXNwb25zZSB7XG4gIGNvbnN0IGF2YWlsYWJsZSA9IHRhcmdldHNcbiAgICAuZmlsdGVyKCh0YXJnZXQpID0+IHRhcmdldC5lbmRwb2ludD8uc3RhdHVzPy5kZXByZWNhdGVkICE9PSB0cnVlKVxuICAgIC5maWx0ZXIoKHRhcmdldCkgPT4gIWluY2x1ZGVDb2RleCB8fCBoYXNDaGF0Q2xhc3ModGFyZ2V0KSlcbiAgICAuc2xpY2UoKVxuICAgIC5zb3J0KChsZWZ0LCByaWdodCkgPT4gY29tcGFyZUNhdGFsb2d1ZVRhcmdldHMobGVmdCwgcmlnaHQsICh0YXJnZXQpID0+IHRhcmdldC5kaXNwbGF5TmFtZSkpO1xuICBpZiAoaW5jbHVkZUNvZGV4KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGVsczogYXZhaWxhYmxlLm1hcCgodGFyZ2V0LCBpbmRleCkgPT4gY29kZXhNb2RlbCh0YXJnZXQsIGluZGV4ICsgMSkpLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBvYmplY3Q6IFwibGlzdFwiLFxuICAgIGRhdGE6IGF2YWlsYWJsZS5tYXAob3BlbkFpTW9kZWwpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBvcGVuQWlNb2RlbCh0YXJnZXQ6IE1vZGVsVGFyZ2V0KTogT3BlbkFJTW9kZWwge1xuICByZXR1cm4ge1xuICAgIGlkOiB0YXJnZXQuaWQsXG4gICAgb2JqZWN0OiBcIm1vZGVsXCIsXG4gICAgY3JlYXRlZDogMCxcbiAgICBvd25lZF9ieTogXCJkYXRhYnJpY2tzXCIsXG4gICAgbmFtZTogdGFyZ2V0LmRpc3BsYXlOYW1lLFxuICAgIHRhc2s6IHRhcmdldC5lbmRwb2ludD8udGFzayxcbiAgICBzdGF0dXM6IHRhcmdldC5lbmRwb2ludD8uc3RhdHVzID8/IHsgZGVwcmVjYXRlZDogZmFsc2UgfSxcbiAgICBjYXBhYmlsaXRpZXM6IHtcbiAgICAgIHRvb2xzOiB0YXJnZXQuY2FwYWJpbGl0aWVzLnRvb2xzLFxuICAgICAgcmVhc29uaW5nOiB0YXJnZXQucmVhc29uaW5nRWZmb3J0cyxcbiAgICAgIHJlc3BvbnNlczogdGFyZ2V0LmNhcGFiaWxpdGllcy5yZXNwb25zZXMsXG4gICAgICBvcGVuX3Jlc3BvbnNlczogdGFyZ2V0LmNhcGFiaWxpdGllcy5vcGVuUmVzcG9uc2VzLFxuICAgICAgYW50aHJvcGljOiB0YXJnZXQuY2FwYWJpbGl0aWVzLmFudGhyb3BpYyxcbiAgICAgIGVtYmVkZGluZ3M6IHRhcmdldC5jYXBhYmlsaXRpZXMuZW1iZWRkaW5ncyxcbiAgICAgIGFpX2dhdGV3YXlfY29kZXg6IHRhcmdldC5jYXBhYmlsaXRpZXMuYWlHYXRld2F5Q29kZXgsXG4gICAgICBzdHJlYW1pbmc6IHRhcmdldC5jYXBhYmlsaXRpZXMuc3RyZWFtaW5nLFxuICAgICAgd2ViX3NlYXJjaDogdGFyZ2V0LmNhcGFiaWxpdGllcy53ZWJTZWFyY2gsXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29kZXhNb2RlbCh0YXJnZXQ6IE1vZGVsVGFyZ2V0LCBwcmlvcml0eTogbnVtYmVyKTogQ29kZXhNb2RlbCB7XG4gIGNvbnN0IG1vZGVsID1cbiAgICB0YXJnZXQuY2FwYWJpbGl0aWVzLmFpR2F0ZXdheUNvZGV4ICYmIHRhcmdldC5tb2RlbFNlcnZpY2VOYW1lXG4gICAgICA/IHRhcmdldC5tb2RlbFNlcnZpY2VOYW1lXG4gICAgICA6IHRhcmdldC5pZDtcbiAgY29uc3QgZWZmb3J0cyA9IHRhcmdldC5yZWFzb25pbmdFZmZvcnRzO1xuICByZXR1cm4ge1xuICAgIHNsdWc6IGBkYXRhYnJpY2tzLyR7bW9kZWx9YCxcbiAgICBkaXNwbGF5X25hbWU6IHRhcmdldC5kaXNwbGF5TmFtZSxcbiAgICBkZXNjcmlwdGlvbjogdGFyZ2V0LmVuZHBvaW50Py5kZXNjcmlwdGlvbiA/PyBcIkRhdGFicmlja3MgbW9kZWwgc2VydmljZVwiLFxuICAgIGJhc2VfaW5zdHJ1Y3Rpb25zOiBDT0RFWF9CQVNFX0lOU1RSVUNUSU9OUyxcbiAgICBzdGF0dXM6IHRhcmdldC5lbmRwb2ludD8uc3RhdHVzID8/IHsgZGVwcmVjYXRlZDogZmFsc2UgfSxcbiAgICBzdXBwb3J0ZWRfcmVhc29uaW5nX2xldmVsczogZWZmb3J0cy5tYXAoKGVmZm9ydCkgPT4gKHtcbiAgICAgIGVmZm9ydCxcbiAgICAgIGRlc2NyaXB0aW9uOiBSRUFTT05JTkdfREVTQ1JJUFRJT05TW2VmZm9ydF0gPz8gYFVzZSB0aGUgJHtlZmZvcnR9IHJlYXNvbmluZyBidWRnZXRgLFxuICAgIH0pKSxcbiAgICAuLi4oZWZmb3J0cy5sZW5ndGggPiAwXG4gICAgICA/IHsgZGVmYXVsdF9yZWFzb25pbmdfbGV2ZWw6IGVmZm9ydHMuaW5jbHVkZXMoXCJtZWRpdW1cIikgPyBcIm1lZGl1bVwiIDogZWZmb3J0c1swXSB9XG4gICAgICA6IHt9KSxcbiAgICBzaGVsbF90eXBlOiBcInVuaWZpZWRfZXhlY1wiLFxuICAgIHZpc2liaWxpdHk6IFwibGlzdFwiLFxuICAgIHN1cHBvcnRlZF9pbl9hcGk6IHRydWUsXG4gICAgcHJpb3JpdHksXG4gICAgYXZhaWxhYmlsaXR5X251eDogbnVsbCxcbiAgICB1cGdyYWRlOiBudWxsLFxuICAgIHN1cHBvcnRfdmVyYm9zaXR5OiBmYWxzZSxcbiAgICBkZWZhdWx0X3ZlcmJvc2l0eTogbnVsbCxcbiAgICBhcHBseV9wYXRjaF90b29sX3R5cGU6IHRhcmdldC5jYXBhYmlsaXRpZXMuY3VzdG9tVG9vbHMgPyBcImZyZWVmb3JtXCIgOiBudWxsLFxuICAgIHRydW5jYXRpb25fcG9saWN5OiB7IG1vZGU6IFwidG9rZW5zXCIsIGxpbWl0OiAxMjhfMDAwIH0sXG4gICAgY29udGV4dF93aW5kb3c6IG51bGwsXG4gICAgZXhwZXJpbWVudGFsX3N1cHBvcnRlZF90b29sczogW10sXG4gICAgaW5wdXRfbW9kYWxpdGllczogW1widGV4dFwiXSxcbiAgICB3ZWJfc2VhcmNoX3Rvb2xfdHlwZTogXCJ0ZXh0XCIsXG4gICAgc3VwcG9ydHNfc2VhcmNoX3Rvb2w6IHRhcmdldC5jYXBhYmlsaXRpZXMud2ViU2VhcmNoLFxuICAgIHN1cHBvcnRzX2ltYWdlX2RldGFpbF9vcmlnaW5hbDogZmFsc2UsXG4gIH07XG59XG5cbi8qKlxuICogT3JkZXIgbGlzdGVkIG1vZGVscyBpbiB0aHJlZSBncm91cHM6IG1ham9yLXByb3ZpZGVyIGNoYXQgZmFtaWxpZXMsIHRoZVxuICogcmVtYWluaW5nIGNoYXQgbW9kZWxzLCB0aGVuIGVtYmVkZGluZ3MuIEZhbWlsaWVzIGtlZXAgYSBmaXhlZCBwcm92aWRlclxuICogb3JkZXI7IGVhY2ggZmFtaWx5IGFuZCB0aGUgbGF0ZXIgZ3JvdXBzIHNvcnQgYnkgdGhlIHB1Ymxpc2hlZCBsYWJlbFxuICogKGBkaXNwbGF5X25hbWVgIGZvciBDb2RleCwgYG5hbWVgIG90aGVyd2lzZSkuIE51bWVyaWMgc2VnbWVudHMgc29ydFxuICogbmF0dXJhbGx5IHNvIFwiVmVvIDMuMVwiIHByZWNlZGVzIFwiVmVvIDMuMTBcIi5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUNhdGFsb2d1ZVRhcmdldHMoXG4gIGxlZnQ6IE1vZGVsVGFyZ2V0LFxuICByaWdodDogTW9kZWxUYXJnZXQsXG4gIGxhYmVsOiAodGFyZ2V0OiBNb2RlbFRhcmdldCkgPT4gc3RyaW5nLFxuKTogbnVtYmVyIHtcbiAgY29uc3QgZ3JvdXAgPSBjYXRhbG9ndWVHcm91cChsZWZ0KSAtIGNhdGFsb2d1ZUdyb3VwKHJpZ2h0KTtcbiAgaWYgKGdyb3VwICE9PSAwKSByZXR1cm4gZ3JvdXA7XG4gIGNvbnN0IGxlZnRGYW1pbHkgPSBjYXRhbG9ndWVGYW1pbHkobGVmdCk7XG4gIGNvbnN0IHJpZ2h0RmFtaWx5ID0gY2F0YWxvZ3VlRmFtaWx5KHJpZ2h0KTtcbiAgaWYgKGxlZnRGYW1pbHkgJiYgcmlnaHRGYW1pbHkpIHtcbiAgICBjb25zdCBmYW1pbHlPcmRlciA9IG1vZGVsRmFtaWx5UmFuayhsZWZ0RmFtaWx5KSAtIG1vZGVsRmFtaWx5UmFuayhyaWdodEZhbWlseSk7XG4gICAgaWYgKGZhbWlseU9yZGVyICE9PSAwKSByZXR1cm4gZmFtaWx5T3JkZXI7XG4gIH1cbiAgcmV0dXJuIGNvbXBhcmVDYXRhbG9ndWVMYWJlbChsYWJlbChsZWZ0KSwgbGFiZWwocmlnaHQpKTtcbn1cblxuZnVuY3Rpb24gY2F0YWxvZ3VlR3JvdXAodGFyZ2V0OiBNb2RlbFRhcmdldCk6IG51bWJlciB7XG4gIGlmIChpc0VtYmVkZGluZ1RhcmdldCh0YXJnZXQpKSByZXR1cm4gMjtcbiAgcmV0dXJuIGNhdGFsb2d1ZUZhbWlseSh0YXJnZXQpID8gMCA6IDE7XG59XG5cbmNvbnN0IElERU5USVRZX1BSRUZJWEVTID0gbmV3IFNldChbXG4gIFwiZGF0YWJyaWNrc1wiLFxuICBcInN5c3RlbVwiLFxuICBcImFpXCIsXG4gIFwibWV0YVwiLFxuICBcImdvb2dsZVwiLFxuICBcIm9wZW5haVwiLFxuICBcImFudGhyb3BpY1wiLFxuXSk7XG5cbmZ1bmN0aW9uIGNhdGFsb2d1ZUZhbWlseSh0YXJnZXQ6IE1vZGVsVGFyZ2V0KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGlzRW1iZWRkaW5nVGFyZ2V0KHRhcmdldCkpIHJldHVybiB1bmRlZmluZWQ7XG4gIGZvciAoY29uc3QgaWRlbnRpdHkgb2YgW3RhcmdldC5kaXNwbGF5TmFtZSwgdGFyZ2V0LmlkLCB0YXJnZXQuZW5kcG9pbnQ/Lm5hbWVdKSB7XG4gICAgaWYgKCFpZGVudGl0eSkgY29udGludWU7XG4gICAgY29uc3QgZmFtaWx5ID0gY2F0YWxvZ3VlRmFtaWx5RnJvbUlkZW50aXR5KGlkZW50aXR5KTtcbiAgICBpZiAoZmFtaWx5KSByZXR1cm4gZmFtaWx5O1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNhdGFsb2d1ZUZhbWlseUZyb21JZGVudGl0eShpZGVudGl0eTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdG9rZW5zID0gaWRlbnRpdHkudG9Mb3dlckNhc2UoKS5tYXRjaCgvW2EtejAtOV0rL2cpID8/IFtdO1xuICBjb25zdCBzdGFydCA9IHRva2Vucy5maW5kKCh0b2tlbikgPT4gIUlERU5USVRZX1BSRUZJWEVTLmhhcyh0b2tlbikpO1xuICBpZiAoIXN0YXJ0KSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoc3RhcnQgPT09IFwidmVvXCIpIHJldHVybiBcImdlbWluaVwiO1xuICBjb25zdCBmYW1pbHkgPSBtb2RlbEZhbWlseShpZGVudGl0eSk7XG4gIHJldHVybiBmYW1pbHkgJiYgc3RhcnQgPT09IGZhbWlseSA/IGZhbWlseSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaXNFbWJlZGRpbmdUYXJnZXQodGFyZ2V0OiBNb2RlbFRhcmdldCk6IGJvb2xlYW4ge1xuICByZXR1cm4gdGFyZ2V0LmNhcGFiaWxpdGllcy5lbWJlZGRpbmdzID09PSB0cnVlIHx8IHRhcmdldC5lbmRwb2ludD8udGFzayA9PT0gXCJsbG0vdjEvZW1iZWRkaW5nc1wiO1xufVxuXG5mdW5jdGlvbiBjb21wYXJlQ2F0YWxvZ3VlTGFiZWwobGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nKTogbnVtYmVyIHtcbiAgcmV0dXJuIGxlZnQubG9jYWxlQ29tcGFyZShyaWdodCwgdW5kZWZpbmVkLCB7IG51bWVyaWM6IHRydWUsIHNlbnNpdGl2aXR5OiBcImJhc2VcIiB9KTtcbn1cblxuZnVuY3Rpb24gaGFzQ2hhdENsYXNzKHRhcmdldDogTW9kZWxUYXJnZXQpOiBib29sZWFuIHtcbiAgY29uc3QgbW9kZWxDbGFzcyA9IHRhcmdldC5lbmRwb2ludD8uY2xhc3M7XG4gIHJldHVybiBtb2RlbENsYXNzICE9PSB1bmRlZmluZWQgJiYgaXNDaGF0Q2xhc3MobW9kZWxDbGFzcyk7XG59XG4iXX0=
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFVdkUsTUFBTSx1QkFBdUIsR0FDM0IsdUhBQXVILENBQUM7QUFFMUgsTUFBTSxzQkFBc0IsR0FBcUM7SUFDL0QsSUFBSSxFQUFFLDRCQUE0QjtJQUNsQyxPQUFPLEVBQUUsNkNBQTZDO0lBQ3RELEdBQUcsRUFBRSw0QkFBNEI7SUFDakMsTUFBTSxFQUFFLCtCQUErQjtJQUN2QyxJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLEtBQUssRUFBRSxvQ0FBb0M7SUFDM0MsR0FBRyxFQUFFLDRDQUE0QztDQUNsRCxDQUFDO0FBa0JGLE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsT0FBK0IsRUFDL0IsWUFBcUIsRUFDckIsYUFBYSxHQUFHLEtBQUs7SUFFckIsTUFBTSxTQUFTLEdBQUcsT0FBTztTQUN0QixNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsS0FBSyxJQUFJLENBQUM7U0FDaEUsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3RCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUM3Qix1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQ3JFLENBQUM7SUFD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TSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRSxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzdCLElBQUksS0FBSyxLQUFLLEtBQUs7UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUNyQyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsT0FBTyxNQUFNLElBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDekQsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsTUFBbUI7SUFDNUMsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLEtBQUssbUJBQW1CLENBQUM7QUFDbEcsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsSUFBWSxFQUFFLEtBQWE7SUFDeEQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3RGLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxNQUFtQjtJQUN2QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQztJQUMxQyxPQUFPLFVBQVUsS0FBSyxTQUFTLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE9wZW5BSSBhbmQgQ29kZXggbW9kZWwtbGlzdCBwYXlsb2FkcyBkZXJpdmVkIGZyb20gdGhlIGxpdmUgcmVnaXN0cnkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGlzQ2hhdENsYXNzIH0gZnJvbSBcIkBkYngtdG9vbHMvbW9kZWwvY2xhc3Nlc1wiO1xuaW1wb3J0IHsgbW9kZWxGYW1pbHksIG1vZGVsRmFtaWx5UmFuayB9IGZyb20gXCJAZGJ4LXRvb2xzL21vZGVsL3BvbGljeVwiO1xuaW1wb3J0IHR5cGUge1xuICBDb2RleE1vZGVsLFxuICBDb2RleE1vZGVsTGlzdFJlc3BvbnNlLFxuICBNb2RlbExpc3RSZXNwb25zZSxcbiAgTW9kZWxUYXJnZXQsXG4gIE9wZW5BSU1vZGVsLFxuICBPcGVuQUlNb2RlbExpc3RSZXNwb25zZSxcbn0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1vZGVsLWdhdGV3YXlcIjtcblxuY29uc3QgQ09ERVhfQkFTRV9JTlNUUlVDVElPTlMgPVxuICBcIllvdSBhcmUgYSBjb2RpbmcgYWdlbnQuIEZvbGxvdyB0aGUgdXNlcidzIGluc3RydWN0aW9ucyBhbmQgdXNlIHRoZSBhdmFpbGFibGUgdG9vbHMgdG8gd29yayBpbiB0aGUgY3VycmVudCByZXBvc2l0b3J5LlwiO1xuXG5jb25zdCBSRUFTT05JTkdfREVTQ1JJUFRJT05TOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IHtcbiAgbm9uZTogXCJEaXNhYmxlIGV4cGxpY2l0IHJlYXNvbmluZ1wiLFxuICBtaW5pbWFsOiBcIlVzZSB0aGUgc21hbGxlc3QgYXZhaWxhYmxlIHJlYXNvbmluZyBidWRnZXRcIixcbiAgbG93OiBcIlVzZSBhIGxvdyByZWFzb25pbmcgYnVkZ2V0XCIsXG4gIG1lZGl1bTogXCJVc2UgYSBtZWRpdW0gcmVhc29uaW5nIGJ1ZGdldFwiLFxuICBoaWdoOiBcIlVzZSBhIGhpZ2ggcmVhc29uaW5nIGJ1ZGdldFwiLFxuICB4aGlnaDogXCJVc2UgYW4gZXh0cmEtaGlnaCByZWFzb25pbmcgYnVkZ2V0XCIsXG4gIG1heDogXCJVc2UgdGhlIGxhcmdlc3QgYXZhaWxhYmxlIHJlYXNvbmluZyBidWRnZXRcIixcbn07XG5cbi8qKiBCdWlsZCB0aGUgY29tYmluZWQgT3BlbkFJIGFuZCBvcHRpb25hbCBDb2RleCBtb2RlbCBjYXRhbG9ndWUuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdE1vZGVsc1BheWxvYWQoXG4gIHRhcmdldHM6IHJlYWRvbmx5IE1vZGVsVGFyZ2V0W10sXG4gIGluY2x1ZGVDb2RleDogdHJ1ZSxcbiAgcHJlc2VydmVPcmRlcj86IGJvb2xlYW4sXG4pOiBDb2RleE1vZGVsTGlzdFJlc3BvbnNlO1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RNb2RlbHNQYXlsb2FkKFxuICB0YXJnZXRzOiByZWFkb25seSBNb2RlbFRhcmdldFtdLFxuICBpbmNsdWRlQ29kZXg6IGZhbHNlLFxuICBwcmVzZXJ2ZU9yZGVyPzogYm9vbGVhbixcbik6IE9wZW5BSU1vZGVsTGlzdFJlc3BvbnNlO1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RNb2RlbHNQYXlsb2FkKFxuICB0YXJnZXRzOiByZWFkb25seSBNb2RlbFRhcmdldFtdLFxuICBpbmNsdWRlQ29kZXg6IGJvb2xlYW4sXG4gIHByZXNlcnZlT3JkZXI/OiBib29sZWFuLFxuKTogTW9kZWxMaXN0UmVzcG9uc2U7XG5leHBvcnQgZnVuY3Rpb24gbGlzdE1vZGVsc1BheWxvYWQoXG4gIHRhcmdldHM6IHJlYWRvbmx5IE1vZGVsVGFyZ2V0W10sXG4gIGluY2x1ZGVDb2RleDogYm9vbGVhbixcbiAgcHJlc2VydmVPcmRlciA9IGZhbHNlLFxuKTogTW9kZWxMaXN0UmVzcG9uc2Uge1xuICBjb25zdCBhdmFpbGFibGUgPSB0YXJnZXRzXG4gICAgLmZpbHRlcigodGFyZ2V0KSA9PiB0YXJnZXQuZW5kcG9pbnQ/LnN0YXR1cz8uZGVwcmVjYXRlZCAhPT0gdHJ1ZSlcbiAgICAuZmlsdGVyKCh0YXJnZXQpID0+ICFpbmNsdWRlQ29kZXggfHwgaGFzQ2hhdENsYXNzKHRhcmdldCkpO1xuICBpZiAoIXByZXNlcnZlT3JkZXIpIHtcbiAgICBhdmFpbGFibGUuc29ydCgobGVmdCwgcmlnaHQpID0+XG4gICAgICBjb21wYXJlQ2F0YWxvZ3VlVGFyZ2V0cyhsZWZ0LCByaWdodCwgKHRhcmdldCkgPT4gdGFyZ2V0LmRpc3BsYXlOYW1lKSxcbiAgICApO1xuICB9XG4gIGlmIChpbmNsdWRlQ29kZXgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kZWxzOiBhdmFpbGFibGUubWFwKCh0YXJnZXQsIGluZGV4KSA9PiBjb2RleE1vZGVsKHRhcmdldCwgaW5kZXggKyAxKSksXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9iamVjdDogXCJsaXN0XCIsXG4gICAgZGF0YTogYXZhaWxhYmxlLm1hcChvcGVuQWlNb2RlbCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIG9wZW5BaU1vZGVsKHRhcmdldDogTW9kZWxUYXJnZXQpOiBPcGVuQUlNb2RlbCB7XG4gIHJldHVybiB7XG4gICAgaWQ6IHRhcmdldC5pZCxcbiAgICBvYmplY3Q6IFwibW9kZWxcIixcbiAgICBjcmVhdGVkOiAwLFxuICAgIG93bmVkX2J5OiBcImRhdGFicmlja3NcIixcbiAgICBuYW1lOiB0YXJnZXQuZGlzcGxheU5hbWUsXG4gICAgdGFzazogdGFyZ2V0LmVuZHBvaW50Py50YXNrLFxuICAgIHN0YXR1czogdGFyZ2V0LmVuZHBvaW50Py5zdGF0dXMgPz8geyBkZXByZWNhdGVkOiBmYWxzZSB9LFxuICAgIGNhcGFiaWxpdGllczoge1xuICAgICAgdG9vbHM6IHRhcmdldC5jYXBhYmlsaXRpZXMudG9vbHMsXG4gICAgICByZWFzb25pbmc6IHRhcmdldC5yZWFzb25pbmdFZmZvcnRzLFxuICAgICAgcmVzcG9uc2VzOiB0YXJnZXQuY2FwYWJpbGl0aWVzLnJlc3BvbnNlcyxcbiAgICAgIG9wZW5fcmVzcG9uc2VzOiB0YXJnZXQuY2FwYWJpbGl0aWVzLm9wZW5SZXNwb25zZXMsXG4gICAgICBhbnRocm9waWM6IHRhcmdldC5jYXBhYmlsaXRpZXMuYW50aHJvcGljLFxuICAgICAgZW1iZWRkaW5nczogdGFyZ2V0LmNhcGFiaWxpdGllcy5lbWJlZGRpbmdzLFxuICAgICAgYWlfZ2F0ZXdheV9jb2RleDogdGFyZ2V0LmNhcGFiaWxpdGllcy5haUdhdGV3YXlDb2RleCxcbiAgICAgIHN0cmVhbWluZzogdGFyZ2V0LmNhcGFiaWxpdGllcy5zdHJlYW1pbmcsXG4gICAgICB3ZWJfc2VhcmNoOiB0YXJnZXQuY2FwYWJpbGl0aWVzLndlYlNlYXJjaCxcbiAgICB9LFxuICB9O1xufVxuXG4vKiogQ29kZXggYC92MS9tb2RlbHNgIHNsdWcgZm9yIGEgcmVzb2x2ZWQgZ2F0ZXdheSB0YXJnZXQuICovXG5leHBvcnQgZnVuY3Rpb24gY29kZXhNb2RlbFNsdWcodGFyZ2V0OiBNb2RlbFRhcmdldCk6IHN0cmluZyB7XG4gIGNvbnN0IG1vZGVsID1cbiAgICB0YXJnZXQuY2FwYWJpbGl0aWVzLmFpR2F0ZXdheUNvZGV4ICYmIHRhcmdldC5tb2RlbFNlcnZpY2VOYW1lXG4gICAgICA/IHRhcmdldC5tb2RlbFNlcnZpY2VOYW1lXG4gICAgICA6IHRhcmdldC5pZDtcbiAgcmV0dXJuIGBkYXRhYnJpY2tzLyR7bW9kZWx9YDtcbn1cblxuZnVuY3Rpb24gY29kZXhNb2RlbCh0YXJnZXQ6IE1vZGVsVGFyZ2V0LCBwcmlvcml0eTogbnVtYmVyKTogQ29kZXhNb2RlbCB7XG4gIGNvbnN0IGVmZm9ydHMgPSB0YXJnZXQucmVhc29uaW5nRWZmb3J0cztcbiAgcmV0dXJuIHtcbiAgICBzbHVnOiBjb2RleE1vZGVsU2x1Zyh0YXJnZXQpLFxuICAgIGRpc3BsYXlfbmFtZTogdGFyZ2V0LmRpc3BsYXlOYW1lLFxuICAgIGRlc2NyaXB0aW9uOiB0YXJnZXQuZW5kcG9pbnQ/LmRlc2NyaXB0aW9uID8/IFwiRGF0YWJyaWNrcyBtb2RlbCBzZXJ2aWNlXCIsXG4gICAgYmFzZV9pbnN0cnVjdGlvbnM6IENPREVYX0JBU0VfSU5TVFJVQ1RJT05TLFxuICAgIHN0YXR1czogdGFyZ2V0LmVuZHBvaW50Py5zdGF0dXMgPz8geyBkZXByZWNhdGVkOiBmYWxzZSB9LFxuICAgIHN1cHBvcnRlZF9yZWFzb25pbmdfbGV2ZWxzOiBlZmZvcnRzLm1hcCgoZWZmb3J0KSA9PiAoe1xuICAgICAgZWZmb3J0LFxuICAgICAgZGVzY3JpcHRpb246IFJFQVNPTklOR19ERVNDUklQVElPTlNbZWZmb3J0XSA/PyBgVXNlIHRoZSAke2VmZm9ydH0gcmVhc29uaW5nIGJ1ZGdldGAsXG4gICAgfSkpLFxuICAgIC4uLihlZmZvcnRzLmxlbmd0aCA+IDBcbiAgICAgID8geyBkZWZhdWx0X3JlYXNvbmluZ19sZXZlbDogZWZmb3J0cy5pbmNsdWRlcyhcIm1lZGl1bVwiKSA/IFwibWVkaXVtXCIgOiBlZmZvcnRzWzBdIH1cbiAgICAgIDoge30pLFxuICAgIHNoZWxsX3R5cGU6IFwidW5pZmllZF9leGVjXCIsXG4gICAgdmlzaWJpbGl0eTogXCJsaXN0XCIsXG4gICAgc3VwcG9ydGVkX2luX2FwaTogdHJ1ZSxcbiAgICBwcmlvcml0eSxcbiAgICBhdmFpbGFiaWxpdHlfbnV4OiBudWxsLFxuICAgIHVwZ3JhZGU6IG51bGwsXG4gICAgc3VwcG9ydF92ZXJib3NpdHk6IGZhbHNlLFxuICAgIGRlZmF1bHRfdmVyYm9zaXR5OiBudWxsLFxuICAgIGFwcGx5X3BhdGNoX3Rvb2xfdHlwZTogdGFyZ2V0LmNhcGFiaWxpdGllcy5jdXN0b21Ub29scyA/IFwiZnJlZWZvcm1cIiA6IG51bGwsXG4gICAgdHJ1bmNhdGlvbl9wb2xpY3k6IHsgbW9kZTogXCJ0b2tlbnNcIiwgbGltaXQ6IDEyOF8wMDAgfSxcbiAgICBjb250ZXh0X3dpbmRvdzogbnVsbCxcbiAgICBleHBlcmltZW50YWxfc3VwcG9ydGVkX3Rvb2xzOiBbXSxcbiAgICBpbnB1dF9tb2RhbGl0aWVzOiBbXCJ0ZXh0XCJdLFxuICAgIHdlYl9zZWFyY2hfdG9vbF90eXBlOiBcInRleHRcIixcbiAgICBzdXBwb3J0c19zZWFyY2hfdG9vbDogdGFyZ2V0LmNhcGFiaWxpdGllcy53ZWJTZWFyY2gsXG4gICAgc3VwcG9ydHNfaW1hZ2VfZGV0YWlsX29yaWdpbmFsOiBmYWxzZSxcbiAgfTtcbn1cblxuLyoqXG4gKiBPcmRlciBsaXN0ZWQgbW9kZWxzIGluIHRocmVlIGdyb3VwczogbWFqb3ItcHJvdmlkZXIgY2hhdCBmYW1pbGllcywgdGhlXG4gKiByZW1haW5pbmcgY2hhdCBtb2RlbHMsIHRoZW4gZW1iZWRkaW5ncy4gRmFtaWxpZXMga2VlcCBhIGZpeGVkIHByb3ZpZGVyXG4gKiBvcmRlcjsgZWFjaCBmYW1pbHkgYW5kIHRoZSBsYXRlciBncm91cHMgc29ydCBieSB0aGUgcHVibGlzaGVkIGxhYmVsXG4gKiAoYGRpc3BsYXlfbmFtZWAgZm9yIENvZGV4LCBgbmFtZWAgb3RoZXJ3aXNlKS4gTnVtZXJpYyBzZWdtZW50cyBzb3J0XG4gKiBuYXR1cmFsbHkgc28gXCJWZW8gMy4xXCIgcHJlY2VkZXMgXCJWZW8gMy4xMFwiLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQ2F0YWxvZ3VlVGFyZ2V0cyhcbiAgbGVmdDogTW9kZWxUYXJnZXQsXG4gIHJpZ2h0OiBNb2RlbFRhcmdldCxcbiAgbGFiZWw6ICh0YXJnZXQ6IE1vZGVsVGFyZ2V0KSA9PiBzdHJpbmcsXG4pOiBudW1iZXIge1xuICBjb25zdCBncm91cCA9IGNhdGFsb2d1ZUdyb3VwKGxlZnQpIC0gY2F0YWxvZ3VlR3JvdXAocmlnaHQpO1xuICBpZiAoZ3JvdXAgIT09IDApIHJldHVybiBncm91cDtcbiAgY29uc3QgbGVmdEZhbWlseSA9IGNhdGFsb2d1ZUZhbWlseShsZWZ0KTtcbiAgY29uc3QgcmlnaHRGYW1pbHkgPSBjYXRhbG9ndWVGYW1pbHkocmlnaHQpO1xuICBpZiAobGVmdEZhbWlseSAmJiByaWdodEZhbWlseSkge1xuICAgIGNvbnN0IGZhbWlseU9yZGVyID0gbW9kZWxGYW1pbHlSYW5rKGxlZnRGYW1pbHkpIC0gbW9kZWxGYW1pbHlSYW5rKHJpZ2h0RmFtaWx5KTtcbiAgICBpZiAoZmFtaWx5T3JkZXIgIT09IDApIHJldHVybiBmYW1pbHlPcmRlcjtcbiAgfVxuICByZXR1cm4gY29tcGFyZUNhdGFsb2d1ZUxhYmVsKGxhYmVsKGxlZnQpLCBsYWJlbChyaWdodCkpO1xufVxuXG5mdW5jdGlvbiBjYXRhbG9ndWVHcm91cCh0YXJnZXQ6IE1vZGVsVGFyZ2V0KTogbnVtYmVyIHtcbiAgaWYgKGlzRW1iZWRkaW5nVGFyZ2V0KHRhcmdldCkpIHJldHVybiAyO1xuICByZXR1cm4gY2F0YWxvZ3VlRmFtaWx5KHRhcmdldCkgPyAwIDogMTtcbn1cblxuY29uc3QgSURFTlRJVFlfUFJFRklYRVMgPSBuZXcgU2V0KFtcbiAgXCJkYXRhYnJpY2tzXCIsXG4gIFwic3lzdGVtXCIsXG4gIFwiYWlcIixcbiAgXCJtZXRhXCIsXG4gIFwiZ29vZ2xlXCIsXG4gIFwib3BlbmFpXCIsXG4gIFwiYW50aHJvcGljXCIsXG5dKTtcblxuZnVuY3Rpb24gY2F0YWxvZ3VlRmFtaWx5KHRhcmdldDogTW9kZWxUYXJnZXQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoaXNFbWJlZGRpbmdUYXJnZXQodGFyZ2V0KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCBpZGVudGl0eSBvZiBbdGFyZ2V0LmRpc3BsYXlOYW1lLCB0YXJnZXQuaWQsIHRhcmdldC5lbmRwb2ludD8ubmFtZV0pIHtcbiAgICBpZiAoIWlkZW50aXR5KSBjb250aW51ZTtcbiAgICBjb25zdCBmYW1pbHkgPSBjYXRhbG9ndWVGYW1pbHlGcm9tSWRlbnRpdHkoaWRlbnRpdHkpO1xuICAgIGlmIChmYW1pbHkpIHJldHVybiBmYW1pbHk7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gY2F0YWxvZ3VlRmFtaWx5RnJvbUlkZW50aXR5KGlkZW50aXR5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCB0b2tlbnMgPSBpZGVudGl0eS50b0xvd2VyQ2FzZSgpLm1hdGNoKC9bYS16MC05XSsvZykgPz8gW107XG4gIGNvbnN0IHN0YXJ0ID0gdG9rZW5zLmZpbmQoKHRva2VuKSA9PiAhSURFTlRJVFlfUFJFRklYRVMuaGFzKHRva2VuKSk7XG4gIGlmICghc3RhcnQpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmIChzdGFydCA9PT0gXCJ2ZW9cIikgcmV0dXJuIFwiZ2VtaW5pXCI7XG4gIGNvbnN0IGZhbWlseSA9IG1vZGVsRmFtaWx5KGlkZW50aXR5KTtcbiAgcmV0dXJuIGZhbWlseSAmJiBzdGFydCA9PT0gZmFtaWx5ID8gZmFtaWx5IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc0VtYmVkZGluZ1RhcmdldCh0YXJnZXQ6IE1vZGVsVGFyZ2V0KTogYm9vbGVhbiB7XG4gIHJldHVybiB0YXJnZXQuY2FwYWJpbGl0aWVzLmVtYmVkZGluZ3MgPT09IHRydWUgfHwgdGFyZ2V0LmVuZHBvaW50Py50YXNrID09PSBcImxsbS92MS9lbWJlZGRpbmdzXCI7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVDYXRhbG9ndWVMYWJlbChsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpOiBudW1iZXIge1xuICByZXR1cm4gbGVmdC5sb2NhbGVDb21wYXJlKHJpZ2h0LCB1bmRlZmluZWQsIHsgbnVtZXJpYzogdHJ1ZSwgc2Vuc2l0aXZpdHk6IFwiYmFzZVwiIH0pO1xufVxuXG5mdW5jdGlvbiBoYXNDaGF0Q2xhc3ModGFyZ2V0OiBNb2RlbFRhcmdldCk6IGJvb2xlYW4ge1xuICBjb25zdCBtb2RlbENsYXNzID0gdGFyZ2V0LmVuZHBvaW50Py5jbGFzcztcbiAgcmV0dXJuIG1vZGVsQ2xhc3MgIT09IHVuZGVmaW5lZCAmJiBpc0NoYXRDbGFzcyhtb2RlbENsYXNzKTtcbn1cbiJdfQ==
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
+
import { object } from "@dbx-tools/shared-core";
|
|
6
7
|
import { dynamicTool, jsonSchema } from "ai";
|
|
7
8
|
/** Decode one supported external protocol into AI SDK model messages and tools. */
|
|
8
9
|
export function decodeGatewayRequest(protocol, body) {
|
|
@@ -233,14 +234,11 @@ function messageRole(value) {
|
|
|
233
234
|
}
|
|
234
235
|
function arrayRecords(value) {
|
|
235
236
|
return Array.isArray(value)
|
|
236
|
-
? value.filter((item) => isRecord(item))
|
|
237
|
+
? value.filter((item) => object.isRecord(item))
|
|
237
238
|
: [];
|
|
238
239
|
}
|
|
239
240
|
function record(value) {
|
|
240
|
-
return isRecord(value) ? value : {};
|
|
241
|
-
}
|
|
242
|
-
function isRecord(value) {
|
|
243
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
241
|
+
return object.isRecord(value) ? value : {};
|
|
244
242
|
}
|
|
245
243
|
function stringValue(value) {
|
|
246
244
|
return typeof value === "string" ? value : undefined;
|
|
@@ -259,4 +257,4 @@ function consolidateSystemMessages(messages) {
|
|
|
259
257
|
...messages.filter((message) => message.role !== "system"),
|
|
260
258
|
];
|
|
261
259
|
}
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3RvY29scy9kZWNvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUdILE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFtQyxNQUFNLElBQUksQ0FBQztBQVc5RSxtRkFBbUY7QUFDbkYsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxRQUF3QixFQUN4QixJQUF1QztJQUV2QyxNQUFNLFFBQVEsR0FDWixRQUFRLEtBQUssa0JBQWtCO1FBQzdCLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUM7UUFDL0IsQ0FBQyxDQUFDLFFBQVEsS0FBSyxvQkFBb0I7WUFDakMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQztZQUMvQixDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsT0FBTztRQUNMLFFBQVEsRUFBRSx5QkFBeUIsQ0FBQyxRQUFRLENBQUM7UUFDN0MsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzlCLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsc0JBQXNCLENBQUM7UUFDakYsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssU0FBUztZQUM5QyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNqRCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUN0RixDQUFDO0FBQ0os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Q0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzVFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7S0FDM0QsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEV4dGVybmFsIE9wZW5BSSBhbmQgQW50aHJvcGljIHJlcXVlc3QgZGVjb2RlcnMgZm9yIEFJIFNESyBmYWxsYmFjayByb3V0ZXMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB0eXBlIHsgQ2xpZW50UHJvdG9jb2wgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtbW9kZWwtZ2F0ZXdheVwiO1xuaW1wb3J0IHsgZHluYW1pY1Rvb2wsIGpzb25TY2hlbWEsIHR5cGUgTW9kZWxNZXNzYWdlLCB0eXBlIFRvb2xTZXQgfSBmcm9tIFwiYWlcIjtcblxuLyoqIEFJIFNESyBjYWxsIHNldHRpbmdzIGRlY29kZWQgZnJvbSBhIGdhdGV3YXkgcmVxdWVzdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVjb2RlZEdhdGV3YXlSZXF1ZXN0IHtcbiAgcmVhZG9ubHkgbWVzc2FnZXM6IE1vZGVsTWVzc2FnZVtdO1xuICByZWFkb25seSB0b29sczogVG9vbFNldDtcbiAgcmVhZG9ubHkgbWF4T3V0cHV0VG9rZW5zPzogbnVtYmVyO1xuICByZWFkb25seSB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbiAgcmVhZG9ubHkgdG9wUD86IG51bWJlcjtcbn1cblxuLyoqIERlY29kZSBvbmUgc3VwcG9ydGVkIGV4dGVybmFsIHByb3RvY29sIGludG8gQUkgU0RLIG1vZGVsIG1lc3NhZ2VzIGFuZCB0b29scy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVHYXRld2F5UmVxdWVzdChcbiAgcHJvdG9jb2w6IENsaWVudFByb3RvY29sLFxuICBib2R5OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sXG4pOiBEZWNvZGVkR2F0ZXdheVJlcXVlc3Qge1xuICBjb25zdCBtZXNzYWdlcyA9XG4gICAgcHJvdG9jb2wgPT09IFwib3BlbmFpLXJlc3BvbnNlc1wiXG4gICAgICA/IGRlY29kZVJlc3BvbnNlc01lc3NhZ2VzKGJvZHkpXG4gICAgICA6IHByb3RvY29sID09PSBcImFudGhyb3BpYy1tZXNzYWdlc1wiXG4gICAgICAgID8gZGVjb2RlQW50aHJvcGljTWVzc2FnZXMoYm9keSlcbiAgICAgICAgOiBkZWNvZGVDaGF0TWVzc2FnZXMoYm9keSk7XG4gIHJldHVybiB7XG4gICAgbWVzc2FnZXM6IGNvbnNvbGlkYXRlU3lzdGVtTWVzc2FnZXMobWVzc2FnZXMpLFxuICAgIHRvb2xzOiBkZWNvZGVUb29scyhib2R5LnRvb2xzKSxcbiAgICAuLi5udW1iZXJTZXR0aW5nKGJvZHksIFwibWF4X291dHB1dF90b2tlbnNcIiwgXCJtYXhfdG9rZW5zXCIsIFwibWF4X3Rva2Vuc190b19zYW1wbGVcIiksXG4gICAgLi4uKGZpbml0ZU51bWJlcihib2R5LnRlbXBlcmF0dXJlKSAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgdGVtcGVyYXR1cmU6IGZpbml0ZU51bWJlcihib2R5LnRlbXBlcmF0dXJlKSB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4oZmluaXRlTnVtYmVyKGJvZHkudG9wX3ApICE9PSB1bmRlZmluZWQgPyB7IHRvcFA6IGZpbml0ZU51bWJlcihib2R5LnRvcF9wKSB9IDoge30pLFxuICB9O1xufVxuXG5mdW5jdGlvbiBkZWNvZGVSZXNwb25zZXNNZXNzYWdlcyhib2R5OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pOiBNb2RlbE1lc3NhZ2VbXSB7XG4gIGNvbnN0IG1lc3NhZ2VzOiBNb2RlbE1lc3NhZ2VbXSA9IFtdO1xuICBpZiAodHlwZW9mIGJvZHkuaW5zdHJ1Y3Rpb25zID09PSBcInN0cmluZ1wiICYmIGJvZHkuaW5zdHJ1Y3Rpb25zLnRyaW0oKSkge1xuICAgIG1lc3NhZ2VzLnB1c2goeyByb2xlOiBcInN5c3RlbVwiLCBjb250ZW50OiBib2R5Lmluc3RydWN0aW9ucyB9KTtcbiAgfVxuICBpZiAodHlwZW9mIGJvZHkuaW5wdXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICBtZXNzYWdlcy5wdXNoKHsgcm9sZTogXCJ1c2VyXCIsIGNvbnRlbnQ6IGJvZHkuaW5wdXQgfSk7XG4gICAgcmV0dXJuIG1lc3NhZ2VzO1xuICB9XG4gIGNvbnN0IHRvb2xOYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgaXRlbSBvZiBhcnJheVJlY29yZHMoYm9keS5pbnB1dCkpIHtcbiAgICBjb25zdCB0eXBlID0gaXRlbS50eXBlO1xuICAgIGlmICh0eXBlID09PSBcImZ1bmN0aW9uX2NhbGxcIiB8fCB0eXBlID09PSBcImN1c3RvbV90b29sX2NhbGxcIikge1xuICAgICAgY29uc3QgY2FsbElkID0gc3RyaW5nVmFsdWUoaXRlbS5jYWxsX2lkKSA/PyBzdHJpbmdWYWx1ZShpdGVtLmlkKSA/PyBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICAgICAgY29uc3QgdG9vbE5hbWUgPSBzdHJpbmdWYWx1ZShpdGVtLm5hbWUpID8/IFwidG9vbFwiO1xuICAgICAgdG9vbE5hbWVzLnNldChjYWxsSWQsIHRvb2xOYW1lKTtcbiAgICAgIG1lc3NhZ2VzLnB1c2goe1xuICAgICAgICByb2xlOiBcImFzc2lzdGFudFwiLFxuICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJ0b29sLWNhbGxcIixcbiAgICAgICAgICAgIHRvb2xDYWxsSWQ6IGNhbGxJZCxcbiAgICAgICAgICAgIHRvb2xOYW1lLFxuICAgICAgICAgICAgaW5wdXQ6IHBhcnNlVG9vbElucHV0KGl0ZW0uYXJndW1lbnRzID8/IGl0ZW0uaW5wdXQpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9IGFzIE1vZGVsTWVzc2FnZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09IFwiZnVuY3Rpb25fY2FsbF9vdXRwdXRcIiB8fCB0eXBlID09PSBcImN1c3RvbV90b29sX2NhbGxfb3V0cHV0XCIpIHtcbiAgICAgIGNvbnN0IGNhbGxJZCA9IHN0cmluZ1ZhbHVlKGl0ZW0uY2FsbF9pZCkgPz8gc3RyaW5nVmFsdWUoaXRlbS5pZCkgPz8gY3J5cHRvLnJhbmRvbVVVSUQoKTtcbiAgICAgIG1lc3NhZ2VzLnB1c2godG9vbFJlc3VsdE1lc3NhZ2UoY2FsbElkLCB0b29sTmFtZXMuZ2V0KGNhbGxJZCkgPz8gXCJ0b29sXCIsIGl0ZW0ub3V0cHV0KSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3Qgcm9sZSA9IG1lc3NhZ2VSb2xlKGl0ZW0ucm9sZSk7XG4gICAgaWYgKHJvbGUpIG1lc3NhZ2VzLnB1c2goeyByb2xlLCBjb250ZW50OiBjb250ZW50VGV4dChpdGVtLmNvbnRlbnQpIH0gYXMgTW9kZWxNZXNzYWdlKTtcbiAgfVxuICByZXR1cm4gbWVzc2FnZXM7XG59XG5cbmZ1bmN0aW9uIGRlY29kZUNoYXRNZXNzYWdlcyhib2R5OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pOiBNb2RlbE1lc3NhZ2VbXSB7XG4gIGNvbnN0IG1lc3NhZ2VzOiBNb2RlbE1lc3NhZ2VbXSA9IFtdO1xuICBjb25zdCB0b29sTmFtZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgYXJyYXlSZWNvcmRzKGJvZHkubWVzc2FnZXMpKSB7XG4gICAgY29uc3Qgcm9sZSA9IHN0cmluZ1ZhbHVlKG1lc3NhZ2Uucm9sZSk7XG4gICAgaWYgKHJvbGUgPT09IFwidG9vbFwiKSB7XG4gICAgICBjb25zdCBjYWxsSWQgPSBzdHJpbmdWYWx1ZShtZXNzYWdlLnRvb2xfY2FsbF9pZCkgPz8gY3J5cHRvLnJhbmRvbVVVSUQoKTtcbiAgICAgIG1lc3NhZ2VzLnB1c2godG9vbFJlc3VsdE1lc3NhZ2UoY2FsbElkLCB0b29sTmFtZXMuZ2V0KGNhbGxJZCkgPz8gXCJ0b29sXCIsIG1lc3NhZ2UuY29udGVudCkpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChyb2xlID09PSBcImFzc2lzdGFudFwiICYmIEFycmF5LmlzQXJyYXkobWVzc2FnZS50b29sX2NhbGxzKSkge1xuICAgICAgY29uc3QgY29udGVudDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdO1xuICAgICAgY29uc3QgdGV4dCA9IGNvbnRlbnRUZXh0KG1lc3NhZ2UuY29udGVudCk7XG4gICAgICBpZiAodGV4dCkgY29udGVudC5wdXNoKHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQgfSk7XG4gICAgICBmb3IgKGNvbnN0IHRvb2xDYWxsIG9mIGFycmF5UmVjb3JkcyhtZXNzYWdlLnRvb2xfY2FsbHMpKSB7XG4gICAgICAgIGNvbnN0IGZuID0gcmVjb3JkKHRvb2xDYWxsLmZ1bmN0aW9uKTtcbiAgICAgICAgY29uc3QgY2FsbElkID0gc3RyaW5nVmFsdWUodG9vbENhbGwuaWQpID8/IGNyeXB0by5yYW5kb21VVUlEKCk7XG4gICAgICAgIGNvbnN0IHRvb2xOYW1lID0gc3RyaW5nVmFsdWUoZm4ubmFtZSkgPz8gXCJ0b29sXCI7XG4gICAgICAgIHRvb2xOYW1lcy5zZXQoY2FsbElkLCB0b29sTmFtZSk7XG4gICAgICAgIGNvbnRlbnQucHVzaCh7XG4gICAgICAgICAgdHlwZTogXCJ0b29sLWNhbGxcIixcbiAgICAgICAgICB0b29sQ2FsbElkOiBjYWxsSWQsXG4gICAgICAgICAgdG9vbE5hbWUsXG4gICAgICAgICAgaW5wdXQ6IHBhcnNlVG9vbElucHV0KGZuLmFyZ3VtZW50cyksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgbWVzc2FnZXMucHVzaCh7IHJvbGU6IFwiYXNzaXN0YW50XCIsIGNvbnRlbnQgfSBhcyBNb2RlbE1lc3NhZ2UpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBtZXNzYWdlUm9sZShyb2xlKTtcbiAgICBpZiAobm9ybWFsaXplZCkgbWVzc2FnZXMucHVzaCh7IHJvbGU6IG5vcm1hbGl6ZWQsIGNvbnRlbnQ6IGNvbnRlbnRUZXh0KG1lc3NhZ2UuY29udGVudCkgfSk7XG4gIH1cbiAgcmV0dXJuIG1lc3NhZ2VzO1xufVxuXG5mdW5jdGlvbiBkZWNvZGVBbnRocm9waWNNZXNzYWdlcyhib2R5OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pOiBNb2RlbE1lc3NhZ2VbXSB7XG4gIGNvbnN0IG1lc3NhZ2VzOiBNb2RlbE1lc3NhZ2VbXSA9IFtdO1xuICBpZiAoYm9keS5zeXN0ZW0gIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHN5c3RlbSA9IGNvbnRlbnRUZXh0KGJvZHkuc3lzdGVtKTtcbiAgICBpZiAoc3lzdGVtKSBtZXNzYWdlcy5wdXNoKHsgcm9sZTogXCJzeXN0ZW1cIiwgY29udGVudDogc3lzdGVtIH0pO1xuICB9XG4gIGNvbnN0IHRvb2xOYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgbWVzc2FnZSBvZiBhcnJheVJlY29yZHMoYm9keS5tZXNzYWdlcykpIHtcbiAgICBjb25zdCByb2xlID0gc3RyaW5nVmFsdWUobWVzc2FnZS5yb2xlKTtcbiAgICBjb25zdCBwYXJ0cyA9IEFycmF5LmlzQXJyYXkobWVzc2FnZS5jb250ZW50KSA/IG1lc3NhZ2UuY29udGVudCA6IFtdO1xuICAgIGlmIChyb2xlID09PSBcImFzc2lzdGFudFwiKSB7XG4gICAgICBjb25zdCBjb250ZW50OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdID0gW107XG4gICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICAgICAgaWYgKCFyZWNvcmQocGFydCkudHlwZSB8fCByZWNvcmQocGFydCkudHlwZSA9PT0gXCJ0ZXh0XCIpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gY29udGVudFRleHQocGFydCk7XG4gICAgICAgICAgaWYgKHRleHQpIGNvbnRlbnQucHVzaCh7IHR5cGU6IFwidGV4dFwiLCB0ZXh0IH0pO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcmVjb3JkKHBhcnQpO1xuICAgICAgICBpZiAodmFsdWUudHlwZSAhPT0gXCJ0b29sX3VzZVwiKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgY2FsbElkID0gc3RyaW5nVmFsdWUodmFsdWUuaWQpID8/IGNyeXB0by5yYW5kb21VVUlEKCk7XG4gICAgICAgIGNvbnN0IHRvb2xOYW1lID0gc3RyaW5nVmFsdWUodmFsdWUubmFtZSkgPz8gXCJ0b29sXCI7XG4gICAgICAgIHRvb2xOYW1lcy5zZXQoY2FsbElkLCB0b29sTmFtZSk7XG4gICAgICAgIGNvbnRlbnQucHVzaCh7XG4gICAgICAgICAgdHlwZTogXCJ0b29sLWNhbGxcIixcbiAgICAgICAgICB0b29sQ2FsbElkOiBjYWxsSWQsXG4gICAgICAgICAgdG9vbE5hbWUsXG4gICAgICAgICAgaW5wdXQ6IHZhbHVlLmlucHV0ID8/IHt9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG1lc3NhZ2VzLnB1c2goeyByb2xlOiBcImFzc2lzdGFudFwiLCBjb250ZW50IH0gYXMgTW9kZWxNZXNzYWdlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0UGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHJlY29yZChwYXJ0KTtcbiAgICAgIGlmICh2YWx1ZS50eXBlID09PSBcInRvb2xfcmVzdWx0XCIpIHtcbiAgICAgICAgY29uc3QgY2FsbElkID0gc3RyaW5nVmFsdWUodmFsdWUudG9vbF91c2VfaWQpID8/IGNyeXB0by5yYW5kb21VVUlEKCk7XG4gICAgICAgIG1lc3NhZ2VzLnB1c2godG9vbFJlc3VsdE1lc3NhZ2UoY2FsbElkLCB0b29sTmFtZXMuZ2V0KGNhbGxJZCkgPz8gXCJ0b29sXCIsIHZhbHVlLmNvbnRlbnQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBjb250ZW50VGV4dChwYXJ0KTtcbiAgICAgICAgaWYgKHRleHQpIHRleHRQYXJ0cy5wdXNoKHRleHQpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGV4dFBhcnRzLmxlbmd0aCA+IDApIG1lc3NhZ2VzLnB1c2goeyByb2xlOiBcInVzZXJcIiwgY29udGVudDogdGV4dFBhcnRzLmpvaW4oXCJcXG5cIikgfSk7XG4gIH1cbiAgcmV0dXJuIG1lc3NhZ2VzO1xufVxuXG5mdW5jdGlvbiBkZWNvZGVUb29scyh2YWx1ZTogdW5rbm93bik6IFRvb2xTZXQge1xuICBjb25zdCB0b29sczogVG9vbFNldCA9IHt9O1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGFycmF5UmVjb3Jkcyh2YWx1ZSkpIHtcbiAgICBjb25zdCBmbiA9IHJlY29yZChlbnRyeS5mdW5jdGlvbik7XG4gICAgY29uc3QgbmFtZSA9IHN0cmluZ1ZhbHVlKGZuLm5hbWUpID8/IHN0cmluZ1ZhbHVlKGVudHJ5Lm5hbWUpO1xuICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgY29uc3QgZGVjbGFyZWRTY2hlbWEgPSByZWNvcmQoZm4ucGFyYW1ldGVycyA/PyBlbnRyeS5pbnB1dF9zY2hlbWEpO1xuICAgIGNvbnN0IHNjaGVtYSA9XG4gICAgICBPYmplY3Qua2V5cyhkZWNsYXJlZFNjaGVtYSkubGVuZ3RoID4gMFxuICAgICAgICA/IGRlY2xhcmVkU2NoZW1hXG4gICAgICAgIDogZW50cnkudHlwZSA9PT0gXCJjdXN0b21cIlxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7IGlucHV0OiB7IHR5cGU6IFwic3RyaW5nXCIgfSB9LFxuICAgICAgICAgICAgICByZXF1aXJlZDogW1wiaW5wdXRcIl0sXG4gICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHsgdHlwZTogXCJvYmplY3RcIiwgcHJvcGVydGllczoge30sIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSB9O1xuICAgIHRvb2xzW25hbWVdID0gZHluYW1pY1Rvb2woe1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZ1ZhbHVlKGZuLmRlc2NyaXB0aW9uKSA/PyBzdHJpbmdWYWx1ZShlbnRyeS5kZXNjcmlwdGlvbiksXG4gICAgICBpbnB1dFNjaGVtYToganNvblNjaGVtYShzY2hlbWEpLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiB0b29scztcbn1cblxuZnVuY3Rpb24gdG9vbFJlc3VsdE1lc3NhZ2UoY2FsbElkOiBzdHJpbmcsIHRvb2xOYW1lOiBzdHJpbmcsIG91dHB1dDogdW5rbm93bik6IE1vZGVsTWVzc2FnZSB7XG4gIHJldHVybiB7XG4gICAgcm9sZTogXCJ0b29sXCIsXG4gICAgY29udGVudDogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcInRvb2wtcmVzdWx0XCIsXG4gICAgICAgIHRvb2xDYWxsSWQ6IGNhbGxJZCxcbiAgICAgICAgdG9vbE5hbWUsXG4gICAgICAgIG91dHB1dDogeyB0eXBlOiBcInRleHRcIiwgdmFsdWU6IGNvbnRlbnRUZXh0KG91dHB1dCkgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSBhcyBNb2RlbE1lc3NhZ2U7XG59XG5cbmZ1bmN0aW9uIG51bWJlclNldHRpbmcoXG4gIGJvZHk6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PixcbiAgLi4ubmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdXG4pOiBQaWNrPERlY29kZWRHYXRld2F5UmVxdWVzdCwgXCJtYXhPdXRwdXRUb2tlbnNcIj4ge1xuICBmb3IgKGNvbnN0IG5hbWUgb2YgbmFtZXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGZpbml0ZU51bWJlcihib2R5W25hbWVdKTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgbWF4T3V0cHV0VG9rZW5zOiBNYXRoLmZsb29yKHZhbHVlKSB9O1xuICB9XG4gIHJldHVybiB7fTtcbn1cblxuZnVuY3Rpb24gcGFyc2VUb29sSW5wdXQodmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIHZhbHVlID8/IHt9O1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHsgaW5wdXQ6IHZhbHVlIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gY29udGVudFRleHQodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSByZXR1cm4gdmFsdWU7XG4gIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBjb25zdCB0ZXh0ID0gc3RyaW5nVmFsdWUocmVjb3JkKHZhbHVlKS50ZXh0KTtcbiAgICByZXR1cm4gdGV4dCA/PyAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCA/IFwiXCIgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICB9XG4gIHJldHVybiB2YWx1ZVxuICAgIC5tYXAoKHBhcnQpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcGFydCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHBhcnQ7XG4gICAgICBjb25zdCBpdGVtID0gcmVjb3JkKHBhcnQpO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgc3RyaW5nVmFsdWUoaXRlbS50ZXh0KSA/PyBzdHJpbmdWYWx1ZShpdGVtLm91dHB1dF90ZXh0KSA/PyBzdHJpbmdWYWx1ZShpdGVtLmlucHV0X3RleHQpXG4gICAgICApO1xuICAgIH0pXG4gICAgLmZpbHRlcigodGV4dCk6IHRleHQgaXMgc3RyaW5nID0+IHRleHQgIT09IHVuZGVmaW5lZClcbiAgICAuam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gbWVzc2FnZVJvbGUodmFsdWU6IHVua25vd24pOiBcInN5c3RlbVwiIHwgXCJ1c2VyXCIgfCBcImFzc2lzdGFudFwiIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZhbHVlID09PSBcInN5c3RlbVwiIHx8IHZhbHVlID09PSBcImRldmVsb3BlclwiKSByZXR1cm4gXCJzeXN0ZW1cIjtcbiAgaWYgKHZhbHVlID09PSBcInVzZXJcIiB8fCB2YWx1ZSA9PT0gXCJhc3Npc3RhbnRcIikgcmV0dXJuIHZhbHVlO1xuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBhcnJheVJlY29yZHModmFsdWU6IHVua25vd24pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgPyB2YWx1ZS5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IGlzUmVjb3JkKGl0ZW0pKVxuICAgIDogW107XG59XG5cbmZ1bmN0aW9uIHJlY29yZCh2YWx1ZTogdW5rbm93bik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIGlzUmVjb3JkKHZhbHVlKSA/IHZhbHVlIDoge307XG59XG5cbmZ1bmN0aW9uIGlzUmVjb3JkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gc3RyaW5nVmFsdWUodmFsdWU6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGZpbml0ZU51bWJlcih2YWx1ZTogdW5rbm93bik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBjb25zb2xpZGF0ZVN5c3RlbU1lc3NhZ2VzKG1lc3NhZ2VzOiByZWFkb25seSBNb2RlbE1lc3NhZ2VbXSk6IE1vZGVsTWVzc2FnZVtdIHtcbiAgY29uc3Qgc3lzdGVtID0gbWVzc2FnZXNcbiAgICAuZmlsdGVyKChtZXNzYWdlKSA9PiBtZXNzYWdlLnJvbGUgPT09IFwic3lzdGVtXCIpXG4gICAgLm1hcCgobWVzc2FnZSkgPT4gKHR5cGVvZiBtZXNzYWdlLmNvbnRlbnQgPT09IFwic3RyaW5nXCIgPyBtZXNzYWdlLmNvbnRlbnQgOiBcIlwiKSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLmpvaW4oXCJcXG5cXG5cIik7XG4gIHJldHVybiBbXG4gICAgLi4uKHN5c3RlbSA/IChbeyByb2xlOiBcInN5c3RlbVwiLCBjb250ZW50OiBzeXN0ZW0gfV0gYXMgTW9kZWxNZXNzYWdlW10pIDogW10pLFxuICAgIC4uLm1lc3NhZ2VzLmZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZS5yb2xlICE9PSBcInN5c3RlbVwiKSxcbiAgXTtcbn1cbiJdfQ==
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3RvY29scy9kZWNvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBbUMsTUFBTSxJQUFJLENBQUM7QUFXOUUsbUZBQW1GO0FBQ25GLE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsUUFBd0IsRUFDeEIsSUFBdUM7SUFFdkMsTUFBTSxRQUFRLEdBQ1osUUFBUSxLQUFLLGtCQUFrQjtRQUM3QixDQUFDLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxRQUFRLEtBQUssb0JBQW9CO1lBQ2pDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUM7WUFDL0IsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLE9BQU87UUFDTCxRQUFRLEVBQUUseUJBQXlCLENBQUMsUUFBUSxDQUFDO1FBQzdDLEtBQUssRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM5QixHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixDQUFDO1FBQ2pGLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLFNBQVM7WUFDOUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDakQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNQLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFB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LEVBQUUsQ0FBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzVFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7S0FDM0QsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEV4dGVybmFsIE9wZW5BSSBhbmQgQW50aHJvcGljIHJlcXVlc3QgZGVjb2RlcnMgZm9yIEFJIFNESyBmYWxsYmFjayByb3V0ZXMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IG9iamVjdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IENsaWVudFByb3RvY29sIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1vZGVsLWdhdGV3YXlcIjtcbmltcG9ydCB7IGR5bmFtaWNUb29sLCBqc29uU2NoZW1hLCB0eXBlIE1vZGVsTWVzc2FnZSwgdHlwZSBUb29sU2V0IH0gZnJvbSBcImFpXCI7XG5cbi8qKiBBSSBTREsgY2FsbCBzZXR0aW5ncyBkZWNvZGVkIGZyb20gYSBnYXRld2F5IHJlcXVlc3QuICovXG5leHBvcnQgaW50ZXJmYWNlIERlY29kZWRHYXRld2F5UmVxdWVzdCB7XG4gIHJlYWRvbmx5IG1lc3NhZ2VzOiBNb2RlbE1lc3NhZ2VbXTtcbiAgcmVhZG9ubHkgdG9vbHM6IFRvb2xTZXQ7XG4gIHJlYWRvbmx5IG1heE91dHB1dFRva2Vucz86IG51bWJlcjtcbiAgcmVhZG9ubHkgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHRvcFA/OiBudW1iZXI7XG59XG5cbi8qKiBEZWNvZGUgb25lIHN1cHBvcnRlZCBleHRlcm5hbCBwcm90b2NvbCBpbnRvIEFJIFNESyBtb2RlbCBtZXNzYWdlcyBhbmQgdG9vbHMuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlR2F0ZXdheVJlcXVlc3QoXG4gIHByb3RvY29sOiBDbGllbnRQcm90b2NvbCxcbiAgYm9keTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LFxuKTogRGVjb2RlZEdhdGV3YXlSZXF1ZXN0IHtcbiAgY29uc3QgbWVzc2FnZXMgPVxuICAgIHByb3RvY29sID09PSBcIm9wZW5haS1yZXNwb25zZXNcIlxuICAgICAgPyBkZWNvZGVSZXNwb25zZXNNZXNzYWdlcyhib2R5KVxuICAgICAgOiBwcm90b2NvbCA9PT0gXCJhbnRocm9waWMtbWVzc2FnZXNcIlxuICAgICAgICA/IGRlY29kZUFudGhyb3BpY01lc3NhZ2VzKGJvZHkpXG4gICAgICAgIDogZGVjb2RlQ2hhdE1lc3NhZ2VzKGJvZHkpO1xuICByZXR1cm4ge1xuICAgIG1lc3NhZ2VzOiBjb25zb2xpZGF0ZVN5c3RlbU1lc3NhZ2VzKG1lc3NhZ2VzKSxcbiAgICB0b29sczogZGVjb2RlVG9vbHMoYm9keS50b29scyksXG4gICAgLi4ubnVtYmVyU2V0dGluZyhib2R5LCBcIm1heF9vdXRwdXRfdG9rZW5zXCIsIFwibWF4X3Rva2Vuc1wiLCBcIm1heF90b2tlbnNfdG9fc2FtcGxlXCIpLFxuICAgIC4uLihmaW5pdGVOdW1iZXIoYm9keS50ZW1wZXJhdHVyZSkgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IHRlbXBlcmF0dXJlOiBmaW5pdGVOdW1iZXIoYm9keS50ZW1wZXJhdHVyZSkgfVxuICAgICAgOiB7fSksXG4gICAgLi4uKGZpbml0ZU51bWJlcihib2R5LnRvcF9wKSAhPT0gdW5kZWZpbmVkID8geyB0b3BQOiBmaW5pdGVOdW1iZXIoYm9keS50b3BfcCkgfSA6IHt9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGVjb2RlUmVzcG9uc2VzTWVzc2FnZXMoYm9keTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KTogTW9kZWxNZXNzYWdlW10ge1xuICBjb25zdCBtZXNzYWdlczogTW9kZWxNZXNzYWdlW10gPSBbXTtcbiAgaWYgKHR5cGVvZiBib2R5Lmluc3RydWN0aW9ucyA9PT0gXCJzdHJpbmdcIiAmJiBib2R5Lmluc3RydWN0aW9ucy50cmltKCkpIHtcbiAgICBtZXNzYWdlcy5wdXNoKHsgcm9sZTogXCJzeXN0ZW1cIiwgY29udGVudDogYm9keS5pbnN0cnVjdGlvbnMgfSk7XG4gIH1cbiAgaWYgKHR5cGVvZiBib2R5LmlucHV0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgbWVzc2FnZXMucHVzaCh7IHJvbGU6IFwidXNlclwiLCBjb250ZW50OiBib2R5LmlucHV0IH0pO1xuICAgIHJldHVybiBtZXNzYWdlcztcbiAgfVxuICBjb25zdCB0b29sTmFtZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXJyYXlSZWNvcmRzKGJvZHkuaW5wdXQpKSB7XG4gICAgY29uc3QgdHlwZSA9IGl0ZW0udHlwZTtcbiAgICBpZiAodHlwZSA9PT0gXCJmdW5jdGlvbl9jYWxsXCIgfHwgdHlwZSA9PT0gXCJjdXN0b21fdG9vbF9jYWxsXCIpIHtcbiAgICAgIGNvbnN0IGNhbGxJZCA9IHN0cmluZ1ZhbHVlKGl0ZW0uY2FsbF9pZCkgPz8gc3RyaW5nVmFsdWUoaXRlbS5pZCkgPz8gY3J5cHRvLnJhbmRvbVVVSUQoKTtcbiAgICAgIGNvbnN0IHRvb2xOYW1lID0gc3RyaW5nVmFsdWUoaXRlbS5uYW1lKSA/PyBcInRvb2xcIjtcbiAgICAgIHRvb2xOYW1lcy5zZXQoY2FsbElkLCB0b29sTmFtZSk7XG4gICAgICBtZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgcm9sZTogXCJhc3Npc3RhbnRcIixcbiAgICAgICAgY29udGVudDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwidG9vbC1jYWxsXCIsXG4gICAgICAgICAgICB0b29sQ2FsbElkOiBjYWxsSWQsXG4gICAgICAgICAgICB0b29sTmFtZSxcbiAgICAgICAgICAgIGlucHV0OiBwYXJzZVRvb2xJbnB1dChpdGVtLmFyZ3VtZW50cyA/PyBpdGVtLmlucHV0KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSBhcyBNb2RlbE1lc3NhZ2UpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSBcImZ1bmN0aW9uX2NhbGxfb3V0cHV0XCIgfHwgdHlwZSA9PT0gXCJjdXN0b21fdG9vbF9jYWxsX291dHB1dFwiKSB7XG4gICAgICBjb25zdCBjYWxsSWQgPSBzdHJpbmdWYWx1ZShpdGVtLmNhbGxfaWQpID8/IHN0cmluZ1ZhbHVlKGl0ZW0uaWQpID8/IGNyeXB0by5yYW5kb21VVUlEKCk7XG4gICAgICBtZXNzYWdlcy5wdXNoKHRvb2xSZXN1bHRNZXNzYWdlKGNhbGxJZCwgdG9vbE5hbWVzLmdldChjYWxsSWQpID8/IFwidG9vbFwiLCBpdGVtLm91dHB1dCkpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHJvbGUgPSBtZXNzYWdlUm9sZShpdGVtLnJvbGUpO1xuICAgIGlmIChyb2xlKSBtZXNzYWdlcy5wdXNoKHsgcm9sZSwgY29udGVudDogY29udGVudFRleHQoaXRlbS5jb250ZW50KSB9IGFzIE1vZGVsTWVzc2FnZSk7XG4gIH1cbiAgcmV0dXJuIG1lc3NhZ2VzO1xufVxuXG5mdW5jdGlvbiBkZWNvZGVDaGF0TWVzc2FnZXMoYm9keTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KTogTW9kZWxNZXNzYWdlW10ge1xuICBjb25zdCBtZXNzYWdlczogTW9kZWxNZXNzYWdlW10gPSBbXTtcbiAgY29uc3QgdG9vbE5hbWVzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCBtZXNzYWdlIG9mIGFycmF5UmVjb3Jkcyhib2R5Lm1lc3NhZ2VzKSkge1xuICAgIGNvbnN0IHJvbGUgPSBzdHJpbmdWYWx1ZShtZXNzYWdlLnJvbGUpO1xuICAgIGlmIChyb2xlID09PSBcInRvb2xcIikge1xuICAgICAgY29uc3QgY2FsbElkID0gc3RyaW5nVmFsdWUobWVzc2FnZS50b29sX2NhbGxfaWQpID8/IGNyeXB0by5yYW5kb21VVUlEKCk7XG4gICAgICBtZXNzYWdlcy5wdXNoKHRvb2xSZXN1bHRNZXNzYWdlKGNhbGxJZCwgdG9vbE5hbWVzLmdldChjYWxsSWQpID8/IFwidG9vbFwiLCBtZXNzYWdlLmNvbnRlbnQpKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAocm9sZSA9PT0gXCJhc3Npc3RhbnRcIiAmJiBBcnJheS5pc0FycmF5KG1lc3NhZ2UudG9vbF9jYWxscykpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gPSBbXTtcbiAgICAgIGNvbnN0IHRleHQgPSBjb250ZW50VGV4dChtZXNzYWdlLmNvbnRlbnQpO1xuICAgICAgaWYgKHRleHQpIGNvbnRlbnQucHVzaCh7IHR5cGU6IFwidGV4dFwiLCB0ZXh0IH0pO1xuICAgICAgZm9yIChjb25zdCB0b29sQ2FsbCBvZiBhcnJheVJlY29yZHMobWVzc2FnZS50b29sX2NhbGxzKSkge1xuICAgICAgICBjb25zdCBmbiA9IHJlY29yZCh0b29sQ2FsbC5mdW5jdGlvbik7XG4gICAgICAgIGNvbnN0IGNhbGxJZCA9IHN0cmluZ1ZhbHVlKHRvb2xDYWxsLmlkKSA/PyBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICAgICAgICBjb25zdCB0b29sTmFtZSA9IHN0cmluZ1ZhbHVlKGZuLm5hbWUpID8/IFwidG9vbFwiO1xuICAgICAgICB0b29sTmFtZXMuc2V0KGNhbGxJZCwgdG9vbE5hbWUpO1xuICAgICAgICBjb250ZW50LnB1c2goe1xuICAgICAgICAgIHR5cGU6IFwidG9vbC1jYWxsXCIsXG4gICAgICAgICAgdG9vbENhbGxJZDogY2FsbElkLFxuICAgICAgICAgIHRvb2xOYW1lLFxuICAgICAgICAgIGlucHV0OiBwYXJzZVRvb2xJbnB1dChmbi5hcmd1bWVudHMpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG1lc3NhZ2VzLnB1c2goeyByb2xlOiBcImFzc2lzdGFudFwiLCBjb250ZW50IH0gYXMgTW9kZWxNZXNzYWdlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBub3JtYWxpemVkID0gbWVzc2FnZVJvbGUocm9sZSk7XG4gICAgaWYgKG5vcm1hbGl6ZWQpIG1lc3NhZ2VzLnB1c2goeyByb2xlOiBub3JtYWxpemVkLCBjb250ZW50OiBjb250ZW50VGV4dChtZXNzYWdlLmNvbnRlbnQpIH0pO1xuICB9XG4gIHJldHVybiBtZXNzYWdlcztcbn1cblxuZnVuY3Rpb24gZGVjb2RlQW50aHJvcGljTWVzc2FnZXMoYm9keTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KTogTW9kZWxNZXNzYWdlW10ge1xuICBjb25zdCBtZXNzYWdlczogTW9kZWxNZXNzYWdlW10gPSBbXTtcbiAgaWYgKGJvZHkuc3lzdGVtICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBzeXN0ZW0gPSBjb250ZW50VGV4dChib2R5LnN5c3RlbSk7XG4gICAgaWYgKHN5c3RlbSkgbWVzc2FnZXMucHVzaCh7IHJvbGU6IFwic3lzdGVtXCIsIGNvbnRlbnQ6IHN5c3RlbSB9KTtcbiAgfVxuICBjb25zdCB0b29sTmFtZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgYXJyYXlSZWNvcmRzKGJvZHkubWVzc2FnZXMpKSB7XG4gICAgY29uc3Qgcm9sZSA9IHN0cmluZ1ZhbHVlKG1lc3NhZ2Uucm9sZSk7XG4gICAgY29uc3QgcGFydHMgPSBBcnJheS5pc0FycmF5KG1lc3NhZ2UuY29udGVudCkgPyBtZXNzYWdlLmNvbnRlbnQgOiBbXTtcbiAgICBpZiAocm9sZSA9PT0gXCJhc3Npc3RhbnRcIikge1xuICAgICAgY29uc3QgY29udGVudDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgICAgIGlmICghcmVjb3JkKHBhcnQpLnR5cGUgfHwgcmVjb3JkKHBhcnQpLnR5cGUgPT09IFwidGV4dFwiKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGNvbnRlbnRUZXh0KHBhcnQpO1xuICAgICAgICAgIGlmICh0ZXh0KSBjb250ZW50LnB1c2goeyB0eXBlOiBcInRleHRcIiwgdGV4dCB9KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IHJlY29yZChwYXJ0KTtcbiAgICAgICAgaWYgKHZhbHVlLnR5cGUgIT09IFwidG9vbF91c2VcIikgY29udGludWU7XG4gICAgICAgIGNvbnN0IGNhbGxJZCA9IHN0cmluZ1ZhbHVlKHZhbHVlLmlkKSA/PyBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICAgICAgICBjb25zdCB0b29sTmFtZSA9IHN0cmluZ1ZhbHVlKHZhbHVlLm5hbWUpID8/IFwidG9vbFwiO1xuICAgICAgICB0b29sTmFtZXMuc2V0KGNhbGxJZCwgdG9vbE5hbWUpO1xuICAgICAgICBjb250ZW50LnB1c2goe1xuICAgICAgICAgIHR5cGU6IFwidG9vbC1jYWxsXCIsXG4gICAgICAgICAgdG9vbENhbGxJZDogY2FsbElkLFxuICAgICAgICAgIHRvb2xOYW1lLFxuICAgICAgICAgIGlucHV0OiB2YWx1ZS5pbnB1dCA/PyB7fSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBtZXNzYWdlcy5wdXNoKHsgcm9sZTogXCJhc3Npc3RhbnRcIiwgY29udGVudCB9IGFzIE1vZGVsTWVzc2FnZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgdGV4dFBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgICAgY29uc3QgdmFsdWUgPSByZWNvcmQocGFydCk7XG4gICAgICBpZiAodmFsdWUudHlwZSA9PT0gXCJ0b29sX3Jlc3VsdFwiKSB7XG4gICAgICAgIGNvbnN0IGNhbGxJZCA9IHN0cmluZ1ZhbHVlKHZhbHVlLnRvb2xfdXNlX2lkKSA/PyBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICAgICAgICBtZXNzYWdlcy5wdXNoKHRvb2xSZXN1bHRNZXNzYWdlKGNhbGxJZCwgdG9vbE5hbWVzLmdldChjYWxsSWQpID8/IFwidG9vbFwiLCB2YWx1ZS5jb250ZW50KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0ZXh0ID0gY29udGVudFRleHQocGFydCk7XG4gICAgICAgIGlmICh0ZXh0KSB0ZXh0UGFydHMucHVzaCh0ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRleHRQYXJ0cy5sZW5ndGggPiAwKSBtZXNzYWdlcy5wdXNoKHsgcm9sZTogXCJ1c2VyXCIsIGNvbnRlbnQ6IHRleHRQYXJ0cy5qb2luKFwiXFxuXCIpIH0pO1xuICB9XG4gIHJldHVybiBtZXNzYWdlcztcbn1cblxuZnVuY3Rpb24gZGVjb2RlVG9vbHModmFsdWU6IHVua25vd24pOiBUb29sU2V0IHtcbiAgY29uc3QgdG9vbHM6IFRvb2xTZXQgPSB7fTtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBhcnJheVJlY29yZHModmFsdWUpKSB7XG4gICAgY29uc3QgZm4gPSByZWNvcmQoZW50cnkuZnVuY3Rpb24pO1xuICAgIGNvbnN0IG5hbWUgPSBzdHJpbmdWYWx1ZShmbi5uYW1lKSA/PyBzdHJpbmdWYWx1ZShlbnRyeS5uYW1lKTtcbiAgICBpZiAoIW5hbWUpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGRlY2xhcmVkU2NoZW1hID0gcmVjb3JkKGZuLnBhcmFtZXRlcnMgPz8gZW50cnkuaW5wdXRfc2NoZW1hKTtcbiAgICBjb25zdCBzY2hlbWEgPVxuICAgICAgT2JqZWN0LmtleXMoZGVjbGFyZWRTY2hlbWEpLmxlbmd0aCA+IDBcbiAgICAgICAgPyBkZWNsYXJlZFNjaGVtYVxuICAgICAgICA6IGVudHJ5LnR5cGUgPT09IFwiY3VzdG9tXCJcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgcHJvcGVydGllczogeyBpbnB1dDogeyB0eXBlOiBcInN0cmluZ1wiIH0gfSxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFtcImlucHV0XCJdLFxuICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7IHR5cGU6IFwib2JqZWN0XCIsIHByb3BlcnRpZXM6IHt9LCBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UgfTtcbiAgICB0b29sc1tuYW1lXSA9IGR5bmFtaWNUb29sKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmdWYWx1ZShmbi5kZXNjcmlwdGlvbikgPz8gc3RyaW5nVmFsdWUoZW50cnkuZGVzY3JpcHRpb24pLFxuICAgICAgaW5wdXRTY2hlbWE6IGpzb25TY2hlbWEoc2NoZW1hKSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gdG9vbHM7XG59XG5cbmZ1bmN0aW9uIHRvb2xSZXN1bHRNZXNzYWdlKGNhbGxJZDogc3RyaW5nLCB0b29sTmFtZTogc3RyaW5nLCBvdXRwdXQ6IHVua25vd24pOiBNb2RlbE1lc3NhZ2Uge1xuICByZXR1cm4ge1xuICAgIHJvbGU6IFwidG9vbFwiLFxuICAgIGNvbnRlbnQ6IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJ0b29sLXJlc3VsdFwiLFxuICAgICAgICB0b29sQ2FsbElkOiBjYWxsSWQsXG4gICAgICAgIHRvb2xOYW1lLFxuICAgICAgICBvdXRwdXQ6IHsgdHlwZTogXCJ0ZXh0XCIsIHZhbHVlOiBjb250ZW50VGV4dChvdXRwdXQpIH0sXG4gICAgICB9LFxuICAgIF0sXG4gIH0gYXMgTW9kZWxNZXNzYWdlO1xufVxuXG5mdW5jdGlvbiBudW1iZXJTZXR0aW5nKFxuICBib2R5OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sXG4gIC4uLm5hbWVzOiByZWFkb25seSBzdHJpbmdbXVxuKTogUGljazxEZWNvZGVkR2F0ZXdheVJlcXVlc3QsIFwibWF4T3V0cHV0VG9rZW5zXCI+IHtcbiAgZm9yIChjb25zdCBuYW1lIG9mIG5hbWVzKSB7XG4gICAgY29uc3QgdmFsdWUgPSBmaW5pdGVOdW1iZXIoYm9keVtuYW1lXSk7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHJldHVybiB7IG1heE91dHB1dFRva2VuczogTWF0aC5mbG9vcih2YWx1ZSkgfTtcbiAgfVxuICByZXR1cm4ge307XG59XG5cbmZ1bmN0aW9uIHBhcnNlVG9vbElucHV0KHZhbHVlOiB1bmtub3duKTogdW5rbm93biB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHJldHVybiB2YWx1ZSA/PyB7fTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IGlucHV0OiB2YWx1ZSB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbnRlbnRUZXh0KHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgY29uc3QgdGV4dCA9IHN0cmluZ1ZhbHVlKHJlY29yZCh2YWx1ZSkudGV4dCk7XG4gICAgcmV0dXJuIHRleHQgPz8gKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgPyBcIlwiIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgfVxuICByZXR1cm4gdmFsdWVcbiAgICAubWFwKChwYXJ0KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHBhcnQgPT09IFwic3RyaW5nXCIpIHJldHVybiBwYXJ0O1xuICAgICAgY29uc3QgaXRlbSA9IHJlY29yZChwYXJ0KTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHN0cmluZ1ZhbHVlKGl0ZW0udGV4dCkgPz8gc3RyaW5nVmFsdWUoaXRlbS5vdXRwdXRfdGV4dCkgPz8gc3RyaW5nVmFsdWUoaXRlbS5pbnB1dF90ZXh0KVxuICAgICAgKTtcbiAgICB9KVxuICAgIC5maWx0ZXIoKHRleHQpOiB0ZXh0IGlzIHN0cmluZyA9PiB0ZXh0ICE9PSB1bmRlZmluZWQpXG4gICAgLmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIG1lc3NhZ2VSb2xlKHZhbHVlOiB1bmtub3duKTogXCJzeXN0ZW1cIiB8IFwidXNlclwiIHwgXCJhc3Npc3RhbnRcIiB8IHVuZGVmaW5lZCB7XG4gIGlmICh2YWx1ZSA9PT0gXCJzeXN0ZW1cIiB8fCB2YWx1ZSA9PT0gXCJkZXZlbG9wZXJcIikgcmV0dXJuIFwic3lzdGVtXCI7XG4gIGlmICh2YWx1ZSA9PT0gXCJ1c2VyXCIgfHwgdmFsdWUgPT09IFwiYXNzaXN0YW50XCIpIHJldHVybiB2YWx1ZTtcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gYXJyYXlSZWNvcmRzKHZhbHVlOiB1bmtub3duKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgID8gdmFsdWUuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiBvYmplY3QuaXNSZWNvcmQoaXRlbSkpXG4gICAgOiBbXTtcbn1cblxuZnVuY3Rpb24gcmVjb3JkKHZhbHVlOiB1bmtub3duKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gb2JqZWN0LmlzUmVjb3JkKHZhbHVlKSA/IHZhbHVlIDoge307XG59XG5cbmZ1bmN0aW9uIHN0cmluZ1ZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBmaW5pdGVOdW1iZXIodmFsdWU6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gY29uc29saWRhdGVTeXN0ZW1NZXNzYWdlcyhtZXNzYWdlczogcmVhZG9ubHkgTW9kZWxNZXNzYWdlW10pOiBNb2RlbE1lc3NhZ2VbXSB7XG4gIGNvbnN0IHN5c3RlbSA9IG1lc3NhZ2VzXG4gICAgLmZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZS5yb2xlID09PSBcInN5c3RlbVwiKVxuICAgIC5tYXAoKG1lc3NhZ2UpID0+ICh0eXBlb2YgbWVzc2FnZS5jb250ZW50ID09PSBcInN0cmluZ1wiID8gbWVzc2FnZS5jb250ZW50IDogXCJcIikpXG4gICAgLmZpbHRlcihCb29sZWFuKVxuICAgIC5qb2luKFwiXFxuXFxuXCIpO1xuICByZXR1cm4gW1xuICAgIC4uLihzeXN0ZW0gPyAoW3sgcm9sZTogXCJzeXN0ZW1cIiwgY29udGVudDogc3lzdGVtIH1dIGFzIE1vZGVsTWVzc2FnZVtdKSA6IFtdKSxcbiAgICAuLi5tZXNzYWdlcy5maWx0ZXIoKG1lc3NhZ2UpID0+IG1lc3NhZ2Uucm9sZSAhPT0gXCJzeXN0ZW1cIiksXG4gIF07XG59XG4iXX0=
|
package/lib/src/registry.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
+
import { type WorkspaceClient } from "@databricks/appkit";
|
|
6
7
|
import { type ResolveModelInput } from "@dbx-tools/shared-model/contracts";
|
|
7
8
|
import type { ModelCapabilityOverride, ModelTarget } from "@dbx-tools/shared-model-gateway";
|
|
8
9
|
/** Resolution controls passed through to the model policy owner. */
|
|
@@ -18,15 +19,19 @@ export interface ModelRegistry {
|
|
|
18
19
|
export interface ModelRegistryOptions {
|
|
19
20
|
readonly ttlMs?: number;
|
|
20
21
|
readonly overrides?: readonly ModelCapabilityOverride[];
|
|
22
|
+
/** Discover models with this client instead of the AppKit execution context. */
|
|
23
|
+
readonly client?: WorkspaceClient;
|
|
21
24
|
}
|
|
22
25
|
/** Model registry backed by the active AppKit execution context. */
|
|
23
26
|
export declare class DatabricksModelRegistry implements ModelRegistry {
|
|
24
27
|
private readonly ttlMs;
|
|
25
28
|
private readonly overrides;
|
|
29
|
+
private readonly client;
|
|
26
30
|
constructor(options?: ModelRegistryOptions);
|
|
27
31
|
list(): Promise<ModelTarget[]>;
|
|
28
32
|
resolve(model: string, options?: ModelRegistryResolveOptions): Promise<ModelTarget | undefined>;
|
|
29
33
|
search(query: string): Promise<ModelTarget[]>;
|
|
30
34
|
refresh(): Promise<void>;
|
|
31
35
|
private target;
|
|
36
|
+
private context;
|
|
32
37
|
}
|