@mcpc-tech/core 0.3.33 → 0.3.35
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/index.cjs +77 -2
- package/index.mjs +77 -4
- package/package.json +1 -1
- package/plugins/large-result.cjs +0 -1
- package/plugins/large-result.mjs +0 -4
- package/plugins/search.cjs +0 -1
- package/plugins/search.mjs +0 -4
- package/plugins/skills.cjs +0 -1
- package/plugins/skills.mjs +0 -4
- package/plugins.cjs +0 -1
- package/plugins.mjs +0 -4
- package/types/src/compose.d.ts +23 -1
- package/types/src/compose.d.ts.map +1 -1
package/index.cjs
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
1
|
var __create = Object.create;
|
|
3
2
|
var __defProp = Object.defineProperty;
|
|
4
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -13109,6 +13108,9 @@ var Protocol = class {
|
|
|
13109
13108
|
* The Protocol object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward.
|
|
13110
13109
|
*/
|
|
13111
13110
|
async connect(transport) {
|
|
13111
|
+
if (this._transport) {
|
|
13112
|
+
throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");
|
|
13113
|
+
}
|
|
13112
13114
|
this._transport = transport;
|
|
13113
13115
|
const _onclose = this.transport?.onclose;
|
|
13114
13116
|
this._transport.onclose = () => {
|
|
@@ -13141,6 +13143,10 @@ var Protocol = class {
|
|
|
13141
13143
|
this._progressHandlers.clear();
|
|
13142
13144
|
this._taskProgressTokens.clear();
|
|
13143
13145
|
this._pendingDebouncedNotifications.clear();
|
|
13146
|
+
for (const controller of this._requestHandlerAbortControllers.values()) {
|
|
13147
|
+
controller.abort();
|
|
13148
|
+
}
|
|
13149
|
+
this._requestHandlerAbortControllers.clear();
|
|
13144
13150
|
const error2 = McpError.fromError(ErrorCode.ConnectionClosed, "Connection closed");
|
|
13145
13151
|
this._transport = void 0;
|
|
13146
13152
|
this.onclose?.();
|
|
@@ -13191,6 +13197,8 @@ var Protocol = class {
|
|
|
13191
13197
|
sessionId: capturedTransport?.sessionId,
|
|
13192
13198
|
_meta: request.params?._meta,
|
|
13193
13199
|
sendNotification: async (notification) => {
|
|
13200
|
+
if (abortController.signal.aborted)
|
|
13201
|
+
return;
|
|
13194
13202
|
const notificationOptions = { relatedRequestId: request.id };
|
|
13195
13203
|
if (relatedTaskId) {
|
|
13196
13204
|
notificationOptions.relatedTask = { taskId: relatedTaskId };
|
|
@@ -13198,6 +13206,9 @@ var Protocol = class {
|
|
|
13198
13206
|
await this.notification(notification, notificationOptions);
|
|
13199
13207
|
},
|
|
13200
13208
|
sendRequest: async (r, resultSchema, options) => {
|
|
13209
|
+
if (abortController.signal.aborted) {
|
|
13210
|
+
throw new McpError(ErrorCode.ConnectionClosed, "Request was cancelled");
|
|
13211
|
+
}
|
|
13201
13212
|
const requestOptions = { ...options, relatedRequestId: request.id };
|
|
13202
13213
|
if (relatedTaskId && !requestOptions.relatedTask) {
|
|
13203
13214
|
requestOptions.relatedTask = { taskId: relatedTaskId };
|
|
@@ -18033,7 +18044,8 @@ var ajv = new import_ajv2.Ajv({
|
|
|
18033
18044
|
import_ajv_formats2.default.default(ajv);
|
|
18034
18045
|
import_ajv_errors.default.default(ajv);
|
|
18035
18046
|
function validateSchema(data, schema) {
|
|
18036
|
-
const
|
|
18047
|
+
const cleanedSchema = cleanToolSchema(schema);
|
|
18048
|
+
const validate = ajv.compile(cleanedSchema);
|
|
18037
18049
|
if (!validate(data)) {
|
|
18038
18050
|
const errors = validate.errors;
|
|
18039
18051
|
const customErrors = errors.filter((err) => err.keyword === "errorMessage");
|
|
@@ -20084,6 +20096,25 @@ var ToolManager = class {
|
|
|
20084
20096
|
execute: tool2.callback
|
|
20085
20097
|
};
|
|
20086
20098
|
}
|
|
20099
|
+
/**
|
|
20100
|
+
* Get all tools as ComposedTool objects with execute callback
|
|
20101
|
+
* Includes both public and internal tools
|
|
20102
|
+
*/
|
|
20103
|
+
getAllComposedTools() {
|
|
20104
|
+
const composedTools = [];
|
|
20105
|
+
for (const [name, tool2] of this.toolRegistry.entries()) {
|
|
20106
|
+
composedTools.push({
|
|
20107
|
+
name,
|
|
20108
|
+
description: tool2.description,
|
|
20109
|
+
inputSchema: tool2.schema ?? {
|
|
20110
|
+
type: "object",
|
|
20111
|
+
properties: {}
|
|
20112
|
+
},
|
|
20113
|
+
execute: tool2.callback
|
|
20114
|
+
});
|
|
20115
|
+
}
|
|
20116
|
+
return composedTools;
|
|
20117
|
+
}
|
|
20087
20118
|
};
|
|
20088
20119
|
|
|
20089
20120
|
// __mcpc__core_latest/node_modules/@mcpc/core/src/utils/common/schema.js
|
|
@@ -20564,6 +20595,50 @@ var ComposableMCPServer = class extends Server {
|
|
|
20564
20595
|
const publicToolNames = this.getPublicToolNames();
|
|
20565
20596
|
return allToolNames.filter((name) => !publicToolNames.includes(name));
|
|
20566
20597
|
}
|
|
20598
|
+
/**
|
|
20599
|
+
* Get all internal tools with their full metadata (description, schema)
|
|
20600
|
+
* Internal tools are not exposed to MCP clients but available within the agent
|
|
20601
|
+
*/
|
|
20602
|
+
getInternalTools() {
|
|
20603
|
+
const internalNames = this.getInternalToolNames();
|
|
20604
|
+
const registry2 = this.toolManager.getToolRegistry();
|
|
20605
|
+
return internalNames.map((name) => {
|
|
20606
|
+
const tool2 = registry2.get(name);
|
|
20607
|
+
return {
|
|
20608
|
+
name,
|
|
20609
|
+
description: tool2?.description || "",
|
|
20610
|
+
inputSchema: tool2?.schema || {
|
|
20611
|
+
type: "object"
|
|
20612
|
+
}
|
|
20613
|
+
};
|
|
20614
|
+
});
|
|
20615
|
+
}
|
|
20616
|
+
/**
|
|
20617
|
+
* Get a single tool with full details including execute callback
|
|
20618
|
+
* Works for both public and internal tools
|
|
20619
|
+
*/
|
|
20620
|
+
getComposedTool(name) {
|
|
20621
|
+
return this.toolManager.getComposedTool(name);
|
|
20622
|
+
}
|
|
20623
|
+
/**
|
|
20624
|
+
* Get all tools (public and internal) as composed tools with execute callback
|
|
20625
|
+
*/
|
|
20626
|
+
getAllComposedTools() {
|
|
20627
|
+
return this.toolManager.getAllComposedTools();
|
|
20628
|
+
}
|
|
20629
|
+
/**
|
|
20630
|
+
* Get all tools (public and internal) with full details
|
|
20631
|
+
*/
|
|
20632
|
+
getAllTools() {
|
|
20633
|
+
const registry2 = this.toolManager.getToolRegistry();
|
|
20634
|
+
return Array.from(registry2.entries()).map(([name, tool2]) => ({
|
|
20635
|
+
name,
|
|
20636
|
+
description: tool2?.description || "",
|
|
20637
|
+
inputSchema: tool2?.schema || {
|
|
20638
|
+
type: "object"
|
|
20639
|
+
}
|
|
20640
|
+
}));
|
|
20641
|
+
}
|
|
20567
20642
|
/**
|
|
20568
20643
|
* Get hidden tool schema by name (for internal access)
|
|
20569
20644
|
*/
|
package/index.mjs
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { createRequire } from 'node:module';
|
|
3
|
-
const require = createRequire(import.meta.url);
|
|
4
1
|
var __create = Object.create;
|
|
5
2
|
var __defProp = Object.defineProperty;
|
|
6
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -13097,6 +13094,9 @@ var Protocol = class {
|
|
|
13097
13094
|
* The Protocol object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward.
|
|
13098
13095
|
*/
|
|
13099
13096
|
async connect(transport) {
|
|
13097
|
+
if (this._transport) {
|
|
13098
|
+
throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");
|
|
13099
|
+
}
|
|
13100
13100
|
this._transport = transport;
|
|
13101
13101
|
const _onclose = this.transport?.onclose;
|
|
13102
13102
|
this._transport.onclose = () => {
|
|
@@ -13129,6 +13129,10 @@ var Protocol = class {
|
|
|
13129
13129
|
this._progressHandlers.clear();
|
|
13130
13130
|
this._taskProgressTokens.clear();
|
|
13131
13131
|
this._pendingDebouncedNotifications.clear();
|
|
13132
|
+
for (const controller of this._requestHandlerAbortControllers.values()) {
|
|
13133
|
+
controller.abort();
|
|
13134
|
+
}
|
|
13135
|
+
this._requestHandlerAbortControllers.clear();
|
|
13132
13136
|
const error2 = McpError.fromError(ErrorCode.ConnectionClosed, "Connection closed");
|
|
13133
13137
|
this._transport = void 0;
|
|
13134
13138
|
this.onclose?.();
|
|
@@ -13179,6 +13183,8 @@ var Protocol = class {
|
|
|
13179
13183
|
sessionId: capturedTransport?.sessionId,
|
|
13180
13184
|
_meta: request.params?._meta,
|
|
13181
13185
|
sendNotification: async (notification) => {
|
|
13186
|
+
if (abortController.signal.aborted)
|
|
13187
|
+
return;
|
|
13182
13188
|
const notificationOptions = { relatedRequestId: request.id };
|
|
13183
13189
|
if (relatedTaskId) {
|
|
13184
13190
|
notificationOptions.relatedTask = { taskId: relatedTaskId };
|
|
@@ -13186,6 +13192,9 @@ var Protocol = class {
|
|
|
13186
13192
|
await this.notification(notification, notificationOptions);
|
|
13187
13193
|
},
|
|
13188
13194
|
sendRequest: async (r, resultSchema, options) => {
|
|
13195
|
+
if (abortController.signal.aborted) {
|
|
13196
|
+
throw new McpError(ErrorCode.ConnectionClosed, "Request was cancelled");
|
|
13197
|
+
}
|
|
13189
13198
|
const requestOptions = { ...options, relatedRequestId: request.id };
|
|
13190
13199
|
if (relatedTaskId && !requestOptions.relatedTask) {
|
|
13191
13200
|
requestOptions.relatedTask = { taskId: relatedTaskId };
|
|
@@ -18021,7 +18030,8 @@ var ajv = new Ajv2({
|
|
|
18021
18030
|
addFormats.default(ajv);
|
|
18022
18031
|
ajvErrors.default(ajv);
|
|
18023
18032
|
function validateSchema(data, schema) {
|
|
18024
|
-
const
|
|
18033
|
+
const cleanedSchema = cleanToolSchema(schema);
|
|
18034
|
+
const validate = ajv.compile(cleanedSchema);
|
|
18025
18035
|
if (!validate(data)) {
|
|
18026
18036
|
const errors = validate.errors;
|
|
18027
18037
|
const customErrors = errors.filter((err) => err.keyword === "errorMessage");
|
|
@@ -20071,6 +20081,25 @@ var ToolManager = class {
|
|
|
20071
20081
|
execute: tool2.callback
|
|
20072
20082
|
};
|
|
20073
20083
|
}
|
|
20084
|
+
/**
|
|
20085
|
+
* Get all tools as ComposedTool objects with execute callback
|
|
20086
|
+
* Includes both public and internal tools
|
|
20087
|
+
*/
|
|
20088
|
+
getAllComposedTools() {
|
|
20089
|
+
const composedTools = [];
|
|
20090
|
+
for (const [name, tool2] of this.toolRegistry.entries()) {
|
|
20091
|
+
composedTools.push({
|
|
20092
|
+
name,
|
|
20093
|
+
description: tool2.description,
|
|
20094
|
+
inputSchema: tool2.schema ?? {
|
|
20095
|
+
type: "object",
|
|
20096
|
+
properties: {}
|
|
20097
|
+
},
|
|
20098
|
+
execute: tool2.callback
|
|
20099
|
+
});
|
|
20100
|
+
}
|
|
20101
|
+
return composedTools;
|
|
20102
|
+
}
|
|
20074
20103
|
};
|
|
20075
20104
|
|
|
20076
20105
|
// __mcpc__core_latest/node_modules/@mcpc/core/src/utils/common/schema.js
|
|
@@ -20551,6 +20580,50 @@ var ComposableMCPServer = class extends Server {
|
|
|
20551
20580
|
const publicToolNames = this.getPublicToolNames();
|
|
20552
20581
|
return allToolNames.filter((name) => !publicToolNames.includes(name));
|
|
20553
20582
|
}
|
|
20583
|
+
/**
|
|
20584
|
+
* Get all internal tools with their full metadata (description, schema)
|
|
20585
|
+
* Internal tools are not exposed to MCP clients but available within the agent
|
|
20586
|
+
*/
|
|
20587
|
+
getInternalTools() {
|
|
20588
|
+
const internalNames = this.getInternalToolNames();
|
|
20589
|
+
const registry2 = this.toolManager.getToolRegistry();
|
|
20590
|
+
return internalNames.map((name) => {
|
|
20591
|
+
const tool2 = registry2.get(name);
|
|
20592
|
+
return {
|
|
20593
|
+
name,
|
|
20594
|
+
description: tool2?.description || "",
|
|
20595
|
+
inputSchema: tool2?.schema || {
|
|
20596
|
+
type: "object"
|
|
20597
|
+
}
|
|
20598
|
+
};
|
|
20599
|
+
});
|
|
20600
|
+
}
|
|
20601
|
+
/**
|
|
20602
|
+
* Get a single tool with full details including execute callback
|
|
20603
|
+
* Works for both public and internal tools
|
|
20604
|
+
*/
|
|
20605
|
+
getComposedTool(name) {
|
|
20606
|
+
return this.toolManager.getComposedTool(name);
|
|
20607
|
+
}
|
|
20608
|
+
/**
|
|
20609
|
+
* Get all tools (public and internal) as composed tools with execute callback
|
|
20610
|
+
*/
|
|
20611
|
+
getAllComposedTools() {
|
|
20612
|
+
return this.toolManager.getAllComposedTools();
|
|
20613
|
+
}
|
|
20614
|
+
/**
|
|
20615
|
+
* Get all tools (public and internal) with full details
|
|
20616
|
+
*/
|
|
20617
|
+
getAllTools() {
|
|
20618
|
+
const registry2 = this.toolManager.getToolRegistry();
|
|
20619
|
+
return Array.from(registry2.entries()).map(([name, tool2]) => ({
|
|
20620
|
+
name,
|
|
20621
|
+
description: tool2?.description || "",
|
|
20622
|
+
inputSchema: tool2?.schema || {
|
|
20623
|
+
type: "object"
|
|
20624
|
+
}
|
|
20625
|
+
}));
|
|
20626
|
+
}
|
|
20554
20627
|
/**
|
|
20555
20628
|
* Get hidden tool schema by name (for internal access)
|
|
20556
20629
|
*/
|
package/package.json
CHANGED
package/plugins/large-result.cjs
CHANGED
package/plugins/large-result.mjs
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { createRequire } from 'node:module';
|
|
3
|
-
const require = createRequire(import.meta.url);
|
|
4
|
-
|
|
5
1
|
// __mcpc__core_latest/node_modules/@mcpc/core/src/plugins/large-result.ts
|
|
6
2
|
import { mkdtemp, writeFile } from "node:fs/promises";
|
|
7
3
|
import { join } from "node:path";
|
package/plugins/search.cjs
CHANGED
package/plugins/search.mjs
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { createRequire } from 'node:module';
|
|
3
|
-
const require = createRequire(import.meta.url);
|
|
4
|
-
|
|
5
1
|
// __mcpc__core_latest/node_modules/@mcpc/core/src/plugins/search-tool.ts
|
|
6
2
|
import rg from "@mcpc-tech/ripgrep-napi";
|
|
7
3
|
import { tmpdir } from "node:os";
|
package/plugins/skills.cjs
CHANGED
package/plugins/skills.mjs
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { createRequire } from 'node:module';
|
|
3
|
-
const require = createRequire(import.meta.url);
|
|
4
|
-
|
|
5
1
|
// __mcpc__core_latest/node_modules/@mcpc/core/src/plugins/skills.ts
|
|
6
2
|
import { readdir, readFile } from "node:fs/promises";
|
|
7
3
|
import { join, relative, resolve } from "node:path";
|
package/plugins.cjs
CHANGED
package/plugins.mjs
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { createRequire } from 'node:module';
|
|
3
|
-
const require = createRequire(import.meta.url);
|
|
4
|
-
|
|
5
1
|
// __mcpc__core_latest/node_modules/@mcpc/core/src/plugins/search-tool.js
|
|
6
2
|
import rg from "@mcpc-tech/ripgrep-napi";
|
|
7
3
|
import { tmpdir } from "node:os";
|
package/types/src/compose.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { MCPSetting } from "./service/tools.js";
|
|
|
4
4
|
import { Server, type ServerOptions } from "@modelcontextprotocol/sdk/server/index.js";
|
|
5
5
|
import type { ComposeDefinition, FileLoader } from "./set-up-mcp-compose.js";
|
|
6
6
|
import type { JSONSchema, ToolCallback } from "./types.js";
|
|
7
|
-
import type { ToolConfig, ToolPlugin } from "./plugin-types.js";
|
|
7
|
+
import type { ComposedTool, ToolConfig, ToolPlugin } from "./plugin-types.js";
|
|
8
8
|
export declare class ComposableMCPServer extends Server {
|
|
9
9
|
private pluginManager: any;
|
|
10
10
|
private toolManager: any;
|
|
@@ -76,6 +76,28 @@ export declare class ComposableMCPServer extends Server {
|
|
|
76
76
|
/**
|
|
77
77
|
* Get all internal tool names (tools that are not public)
|
|
78
78
|
*/ getInternalToolNames(): string[];
|
|
79
|
+
/**
|
|
80
|
+
* Get all internal tools with their full metadata (description, schema)
|
|
81
|
+
* Internal tools are not exposed to MCP clients but available within the agent
|
|
82
|
+
*/ getInternalTools(): Array<{
|
|
83
|
+
name: string;
|
|
84
|
+
description: string;
|
|
85
|
+
inputSchema: JSONSchema;
|
|
86
|
+
}>;
|
|
87
|
+
/**
|
|
88
|
+
* Get a single tool with full details including execute callback
|
|
89
|
+
* Works for both public and internal tools
|
|
90
|
+
*/ getComposedTool(name: string): ComposedTool | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Get all tools (public and internal) as composed tools with execute callback
|
|
93
|
+
*/ getAllComposedTools(): ComposedTool[];
|
|
94
|
+
/**
|
|
95
|
+
* Get all tools (public and internal) with full details
|
|
96
|
+
*/ getAllTools(): Array<{
|
|
97
|
+
name: string;
|
|
98
|
+
description: string;
|
|
99
|
+
inputSchema: JSONSchema;
|
|
100
|
+
}>;
|
|
79
101
|
/**
|
|
80
102
|
* Get hidden tool schema by name (for internal access)
|
|
81
103
|
*/ getHiddenToolSchema(name: string): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.d.ts","sources":["../../src/compose.ts"],"names":[],"mappings":"AAAA,SAGE,KAAK,cAAc,EAGnB,KAAK,IAAI,6CAC8C;AACzD,SAAwC,KAAK,MAAM,4BAA4B;AAC/E,cAAc,UAAU,6BAA6B;AACrD,SACE,MAAM,EACN,KAAK,aAAa,oDAC4C;AAGhE,cAAc,iBAAiB,EAAE,UAAU,kCAAkC;AAC7E,cAAc,UAAU,EAAE,YAAY,qBAAqB;AAM3D,
|
|
1
|
+
{"version":3,"file":"compose.d.ts","sources":["../../src/compose.ts"],"names":[],"mappings":"AAAA,SAGE,KAAK,cAAc,EAGnB,KAAK,IAAI,6CAC8C;AACzD,SAAwC,KAAK,MAAM,4BAA4B;AAC/E,cAAc,UAAU,6BAA6B;AACrD,SACE,MAAM,EACN,KAAK,aAAa,oDAC4C;AAGhE,cAAc,iBAAiB,EAAE,UAAU,kCAAkC;AAC7E,cAAc,UAAU,EAAE,YAAY,qBAAqB;AAM3D,cAAc,YAAY,EAAE,UAAU,EAAE,UAAU,4BAA4B;AAe9E,OAAO,cAAM,4BAA4B;EACvC,QAAQ,mBAA6B;EACrC,QAAQ,iBAAyB;EACjC,QAAQ,YAAsC;EAC9C,QAAQ,iBAA4C;EAGpD,IAAI,mBAAmB,IAAI,MAAM,EAAE,MAAM;EAIzC,YAAY,aAAa,cAAc,EAAE,SAAS,aAAa;EAiB/D;;;;;;;;;;;;;;;GAeC,GACD,mBAAmB,WAAW,MAAM,EAAE,QAAQ,UAAU,GAAG,IAAI;EAI/D;;GAEC,GACD,cAAc,WAAW,MAAM,GAAG,aAAa,SAAS;EAIxD;;GAEC,GACD,cAAc,WAAW,MAAM,GAAG,OAAO;EAIzC;;GAEC,GACD,2BAA2B,MAAM;EAIjC;;;GAGC,GACD,AAAM,gBAAgB,UAAU,MAAM,GAAG,QAAQ;EAqBjD;;GAEC,GACD,AAAM,sBAAsB,QAAQ,IAAI;UAqB1B;UAsDN;EAIR,KAAK,GACH,MAAM,MAAM,EACZ,aAAa,MAAM,EACnB,cAAc,OAAO,KAAK,UAAU,EACpC,KAAK,MAAM,GAAG,QAAQ,OAAO,KAAK,OAAO,EACzC;IAAW,WAAW,OAAO;IAAE,SAAS,OAAO;IAAE,UAAU;GACvD;EA+JN;;GAEC,GACD,gBAAgB,MAAM,MAAM,GAAG,eAAe,SAAS;EAIvD;;GAEC,GACD,eAAe,QAAQ,MAAM,GAAG,aAAa,SAAS;EAItD;;;GAGC,GACD,AAAM,SACJ,MAAM,MAAM,EACZ,MAAM,OAAO,EACb;IAAW,YAAY,MAAM;IAAE,iBAAiB,MAAM;GAAS,GAC9D,QAAQ,OAAO;EA4JlB;;GAEC,GACD,sBAAsB,MAAM;EAI5B;;GAEC,GACD,kBAAkB;EAIlB;;GAEC,GACD,sBAAsB,MAAM;EAI5B;;GAEC,GACD,wBAAwB,MAAM;EAM9B;;;GAGC,GACD,oBAAoB;IAClB,MAAM,MAAM;IACZ,aAAa,MAAM;IACnB,aAAa;;EAef;;;GAGC,GACD,gBAAgB,MAAM,MAAM,GAAG,eAAe,SAAS;EAIvD;;GAEC,GACD,uBAAuB;EAIvB;;GAEC,GACD,eAAe;IACb,MAAM,MAAM;IACZ,aAAa,MAAM;IACnB,aAAa;;EAWf;;GAEC,GACD,oBACE,MAAM,MAAM;IACT,aAAa,MAAM;IAAE,QAAQ;MAAe,SAAS;EAI1D;;GAEC,GACD,aAAa,MAAM,MAAM,GAAG,OAAO;EAInC;;GAEC,GACD,WAAW,UAAU,MAAM,EAAE,QAAQ,UAAU,GAAG,IAAI;EAItD;;GAEC,GACD,cAAc,UAAU,MAAM,GAAG,aAAa,SAAS;EAIvD;;GAEC,GACD,iBAAiB,UAAU,MAAM,GAAG,OAAO;EAI3C;;GAEC,GACD,AAAM,UAAU,QAAQ,UAAU,GAAG,QAAQ,IAAI;EAIjD;;GAEC,GACD,AAAM,mBACJ,YAAY,MAAM,EAClB;IAAW,QAAQ,OAAO;GAAoB,GAC7C,QAAQ,IAAI;UAOD;EAOd;;GAEC,GACD,AAAM,kBAAkB,QAAQ,IAAI;EAIpC;;GAEC,GACD,SAAe,SAAS,QAAQ,IAAI;EAK9B,QACJ,MAAM,MAAM,GAAG,IAAI,EACnB,aAAa,MAAM,EACnB,aAAY,UAA+B,EAC3C,UAAS,kBAAkB,UAAgC,EAC3D,SAAS,MAAM;AAoRnB"}
|