@vectorlingo/cli 0.1.0
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/LICENSE +21 -0
- package/README.md +23 -0
- package/dist/cli-bin.d.ts +3 -0
- package/dist/cli-bin.d.ts.map +1 -0
- package/dist/cli-bin.js +4 -0
- package/dist/cli-bin.js.map +1 -0
- package/dist/cli.d.ts +16 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +405 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +28 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +103 -0
- package/dist/client.js.map +1 -0
- package/dist/contracts.d.ts +127 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +105 -0
- package/dist/contracts.js.map +1 -0
- package/dist/credential-store.d.ts +112 -0
- package/dist/credential-store.d.ts.map +1 -0
- package/dist/credential-store.js +528 -0
- package/dist/credential-store.js.map +1 -0
- package/dist/http.d.ts +7 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +92 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +27 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +180 -0
- package/dist/mcp.js.map +1 -0
- package/dist/oauth.d.ts +43 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +369 -0
- package/dist/oauth.js.map +1 -0
- package/dist/safe-files.d.ts +26 -0
- package/dist/safe-files.d.ts.map +1 -0
- package/dist/safe-files.js +203 -0
- package/dist/safe-files.js.map +1 -0
- package/package.json +54 -0
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA"}
|
package/dist/mcp.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type McpHandlerRequestOptions, type McpRequestContext } from '@modelcontextprotocol/server';
|
|
2
|
+
import { type CapabilityManifest, type OperationEnvelope, type OperationResult } from './contracts.ts';
|
|
3
|
+
export interface VectorLingoMcpOptions<TContext> {
|
|
4
|
+
manifest: CapabilityManifest | ((context: TContext, request: McpRequestContext) => CapabilityManifest | Promise<CapabilityManifest>);
|
|
5
|
+
execute: (envelope: OperationEnvelope, context: TContext, request: McpRequestContext) => OperationResult | Promise<OperationResult>;
|
|
6
|
+
listTenants?: (context: TContext, request: McpRequestContext) => Promise<unknown>;
|
|
7
|
+
getOperation?: (input: {
|
|
8
|
+
tenant_id: string;
|
|
9
|
+
operation_id: string;
|
|
10
|
+
}, context: TContext, request: McpRequestContext) => Promise<OperationResult>;
|
|
11
|
+
responseMode?: 'auto' | 'sse' | 'json';
|
|
12
|
+
onerror?: (error: Error) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface VectorLingoMcpRequestOptions<TContext> extends McpHandlerRequestOptions {
|
|
15
|
+
context: TContext;
|
|
16
|
+
}
|
|
17
|
+
export interface VectorLingoMcpHandler<TContext> {
|
|
18
|
+
fetch(request: Request, options: VectorLingoMcpRequestOptions<TContext>): Promise<Response>;
|
|
19
|
+
close(): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Builds a stateless, fetch-native MCP handler. The host authenticates each
|
|
23
|
+
* request and supplies its own application context; this package neither
|
|
24
|
+
* verifies tokens nor depends on a particular auth implementation.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createVectorLingoMcpHandler<TContext>(options: VectorLingoMcpOptions<TContext>): VectorLingoMcpHandler<TContext>;
|
|
27
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,wBAAwB,EAE7B,KAAK,iBAAiB,EAEvB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAGL,KAAK,kBAAkB,EAGvB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAA;AAEvB,MAAM,WAAW,qBAAqB,CAAC,QAAQ;IAC7C,QAAQ,EACJ,kBAAkB,GAClB,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,KAAK,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAA;IACzG,OAAO,EAAE,CACP,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,iBAAiB,KACvB,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAC/C,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACjF,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IAC9I,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,4BAA4B,CAAC,QAAQ,CAAE,SAAQ,wBAAwB;IACtF,OAAO,EAAE,QAAQ,CAAA;CAClB;AAED,MAAM,WAAW,qBAAqB,CAAC,QAAQ;IAC7C,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,4BAA4B,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC3F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAClD,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GACvC,qBAAqB,CAAC,QAAQ,CAAC,CAgCjC"}
|
package/dist/mcp.js
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { McpServer, createMcpHandler, fromJsonSchema, } from '@modelcontextprotocol/server';
|
|
2
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
3
|
+
import { AgentError, isWriteOperation, } from "./contracts.js";
|
|
4
|
+
/**
|
|
5
|
+
* Builds a stateless, fetch-native MCP handler. The host authenticates each
|
|
6
|
+
* request and supplies its own application context; this package neither
|
|
7
|
+
* verifies tokens nor depends on a particular auth implementation.
|
|
8
|
+
*/
|
|
9
|
+
export function createVectorLingoMcpHandler(options) {
|
|
10
|
+
const contexts = new AsyncLocalStorage();
|
|
11
|
+
const handler = createMcpHandler(async (requestContext) => {
|
|
12
|
+
const context = contexts.getStore();
|
|
13
|
+
if (context === undefined) {
|
|
14
|
+
throw new AgentError('authentication_required', 'The MCP host did not provide request context', {
|
|
15
|
+
httpStatus: 401,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
const manifest = typeof options.manifest === 'function'
|
|
19
|
+
? await options.manifest(context, requestContext)
|
|
20
|
+
: options.manifest;
|
|
21
|
+
return createServer(manifest, context, requestContext, options);
|
|
22
|
+
}, {
|
|
23
|
+
legacy: 'stateless',
|
|
24
|
+
responseMode: options.responseMode ?? 'auto',
|
|
25
|
+
...(options.onerror === undefined ? {} : { onerror: options.onerror }),
|
|
26
|
+
});
|
|
27
|
+
return {
|
|
28
|
+
async fetch(request, requestOptions) {
|
|
29
|
+
const forwarded = {
|
|
30
|
+
...(requestOptions.parsedBody === undefined ? {} : { parsedBody: requestOptions.parsedBody }),
|
|
31
|
+
};
|
|
32
|
+
return contexts.run(requestOptions.context, () => handler.fetch(request, forwarded));
|
|
33
|
+
},
|
|
34
|
+
close: handler.close,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function createServer(manifest, context, requestContext, options) {
|
|
38
|
+
const server = new McpServer({ name: 'vectorlingo', version: '0.1.0' });
|
|
39
|
+
server.registerTool('agent.capabilities', {
|
|
40
|
+
description: 'Discover destination schemas, supported effects, limits and unsupported historical states before preparing records. Completion is per operation; linked imports are not atomic.',
|
|
41
|
+
inputSchema: fromJsonSchema({ type: 'object', properties: {}, additionalProperties: false }),
|
|
42
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
43
|
+
}, async () => operationResultToToolResult({ status: 'completed', result: manifest }));
|
|
44
|
+
if (options.listTenants) {
|
|
45
|
+
server.registerTool('agent.tenants', {
|
|
46
|
+
description: 'List workspaces currently available to this connection. Select an explicit tenant_id before any business operation.',
|
|
47
|
+
inputSchema: fromJsonSchema({ type: 'object', properties: {}, additionalProperties: false }),
|
|
48
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
49
|
+
}, async () => {
|
|
50
|
+
try {
|
|
51
|
+
return operationResultToToolResult({ status: 'completed', result: await options.listTenants(context, requestContext) });
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
return errorToToolResult(error);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
if (options.getOperation) {
|
|
59
|
+
server.registerTool('agent.operation', {
|
|
60
|
+
description: 'Retrieve the durable outcome of your operation in the selected workspace after a lost response. This does not retry writes.',
|
|
61
|
+
inputSchema: fromJsonSchema({
|
|
62
|
+
type: 'object', additionalProperties: false,
|
|
63
|
+
properties: { tenant_id: { type: 'string', format: 'uuid' }, operation_id: { type: 'string', format: 'uuid' } },
|
|
64
|
+
required: ['tenant_id', 'operation_id'],
|
|
65
|
+
}),
|
|
66
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
67
|
+
}, async (input) => {
|
|
68
|
+
try {
|
|
69
|
+
return operationResultToToolResult(await options.getOperation(input, context, requestContext));
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return errorToToolResult(error);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
for (const descriptor of manifest.operations) {
|
|
77
|
+
if (['agent.capabilities', 'agent.tenants', 'agent.operation'].includes(descriptor.name))
|
|
78
|
+
throw new Error(`Reserved MCP operation name: ${descriptor.name}`);
|
|
79
|
+
server.registerTool(descriptor.name, {
|
|
80
|
+
description: descriptor.description,
|
|
81
|
+
inputSchema: fromJsonSchema(operationToolSchema(descriptor)),
|
|
82
|
+
annotations: toolAnnotations(descriptor),
|
|
83
|
+
_meta: {
|
|
84
|
+
'io.vectorlingo/schema-version': descriptor.schemaVersion,
|
|
85
|
+
'io.vectorlingo/required-role': descriptor.requiredRole,
|
|
86
|
+
'io.vectorlingo/effects': descriptor.effects,
|
|
87
|
+
'io.vectorlingo/limits': descriptor.limits,
|
|
88
|
+
},
|
|
89
|
+
}, async (rawInput) => {
|
|
90
|
+
try {
|
|
91
|
+
const envelope = rawInput;
|
|
92
|
+
const result = await options.execute({ ...envelope, operation: descriptor.name }, context, requestContext);
|
|
93
|
+
return operationResultToToolResult(result);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
return errorToToolResult(error);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return server;
|
|
101
|
+
}
|
|
102
|
+
function errorToToolResult(error) {
|
|
103
|
+
const payload = error instanceof AgentError
|
|
104
|
+
? error.toJSON()
|
|
105
|
+
: { code: 'internal_error', message: 'The operation failed unexpectedly' };
|
|
106
|
+
const structuredContent = { error: payload };
|
|
107
|
+
return {
|
|
108
|
+
content: [{ type: 'text', text: JSON.stringify(structuredContent) }],
|
|
109
|
+
structuredContent,
|
|
110
|
+
isError: true,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function operationToolSchema(descriptor) {
|
|
114
|
+
const supportsSourceReference = descriptor.supportsSourceReference === true;
|
|
115
|
+
return {
|
|
116
|
+
type: 'object',
|
|
117
|
+
additionalProperties: false,
|
|
118
|
+
properties: {
|
|
119
|
+
tenant_id: { type: 'string', format: 'uuid' },
|
|
120
|
+
request_id: { type: 'string', format: 'uuid' },
|
|
121
|
+
...(supportsSourceReference ? {
|
|
122
|
+
source_reference: {
|
|
123
|
+
type: 'object',
|
|
124
|
+
additionalProperties: false,
|
|
125
|
+
properties: {
|
|
126
|
+
namespace: { type: 'string', minLength: 1, maxLength: 100 },
|
|
127
|
+
id: { type: 'string', minLength: 1, maxLength: 200 },
|
|
128
|
+
},
|
|
129
|
+
required: ['namespace', 'id'],
|
|
130
|
+
},
|
|
131
|
+
} : {}),
|
|
132
|
+
input: descriptor.inputSchema,
|
|
133
|
+
},
|
|
134
|
+
required: isWriteOperation(descriptor) ? ['tenant_id', 'request_id', 'input'] : ['tenant_id', 'input'],
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function toolAnnotations(descriptor) {
|
|
138
|
+
const readOnly = !isWriteOperation(descriptor);
|
|
139
|
+
return {
|
|
140
|
+
readOnlyHint: readOnly,
|
|
141
|
+
destructiveHint: descriptor.effects.some((effect) => effect === 'delete' || effect === 'destructive'),
|
|
142
|
+
idempotentHint: descriptor.idempotent,
|
|
143
|
+
openWorldHint: false,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
function operationResultToToolResult(result) {
|
|
147
|
+
const structuredContent = toStructuredContent(result);
|
|
148
|
+
return {
|
|
149
|
+
content: [
|
|
150
|
+
{ type: 'text', text: JSON.stringify(structuredContent) },
|
|
151
|
+
...resourceLinks(result.result),
|
|
152
|
+
],
|
|
153
|
+
structuredContent,
|
|
154
|
+
isError: result.status === 'failed' || result.status === 'reconciliation_required',
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
function toStructuredContent(result) {
|
|
158
|
+
return {
|
|
159
|
+
status: result.status,
|
|
160
|
+
...(result.operation_id === undefined ? {} : { operation_id: result.operation_id }),
|
|
161
|
+
...(result.result === undefined ? {} : { result: result.result }),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function resourceLinks(value) {
|
|
165
|
+
if (!isRecord(value) || typeof value.download_url !== 'string')
|
|
166
|
+
return [];
|
|
167
|
+
return [
|
|
168
|
+
{
|
|
169
|
+
type: 'resource_link',
|
|
170
|
+
uri: value.download_url,
|
|
171
|
+
name: typeof value.file_name === 'string' ? value.file_name : 'VectorLingo artifact',
|
|
172
|
+
...(typeof value.mime_type === 'string' ? { mimeType: value.mime_type } : {}),
|
|
173
|
+
...(typeof value.size === 'number' ? { size: value.size } : {}),
|
|
174
|
+
},
|
|
175
|
+
];
|
|
176
|
+
}
|
|
177
|
+
function isRecord(value) {
|
|
178
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=mcp.js.map
|
package/dist/mcp.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/oauth.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type CredentialProfile, type CredentialStore, type OAuthTokens } from './credential-store.js';
|
|
2
|
+
import { type FetchLike } from './http.js';
|
|
3
|
+
import type { TokenProvider } from './client.js';
|
|
4
|
+
export interface OAuthMetadata {
|
|
5
|
+
issuer: string;
|
|
6
|
+
authorization_endpoint: string;
|
|
7
|
+
token_endpoint: string;
|
|
8
|
+
registration_endpoint?: string;
|
|
9
|
+
revocation_endpoint?: string;
|
|
10
|
+
code_challenge_methods_supported?: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface OAuthClientOptions {
|
|
13
|
+
issuer: string;
|
|
14
|
+
resource: string;
|
|
15
|
+
clientId?: string;
|
|
16
|
+
scopes: string[];
|
|
17
|
+
fetch?: FetchLike;
|
|
18
|
+
openBrowser?: (url: URL) => Promise<void>;
|
|
19
|
+
callbackTimeoutMs?: number;
|
|
20
|
+
}
|
|
21
|
+
export declare class OAuthClient {
|
|
22
|
+
readonly issuer: URL;
|
|
23
|
+
readonly resource: URL;
|
|
24
|
+
private readonly configuredClientId;
|
|
25
|
+
private readonly scopes;
|
|
26
|
+
private readonly fetch;
|
|
27
|
+
private readonly browser;
|
|
28
|
+
private readonly callbackTimeoutMs;
|
|
29
|
+
constructor(options: OAuthClientOptions);
|
|
30
|
+
discover(): Promise<OAuthMetadata>;
|
|
31
|
+
login(baseUrl: string): Promise<CredentialProfile>;
|
|
32
|
+
refresh(profile: CredentialProfile): Promise<OAuthTokens>;
|
|
33
|
+
/**
|
|
34
|
+
* Revoke the refresh token only. The access token is a short-lived JWT: the broker answers
|
|
35
|
+
* `unsupported_token_type` for it, which made logout fail until the token expired.
|
|
36
|
+
*/
|
|
37
|
+
revoke(profile: CredentialProfile): Promise<void>;
|
|
38
|
+
private registerClient;
|
|
39
|
+
private exchangeCode;
|
|
40
|
+
}
|
|
41
|
+
export declare function createStoredTokenProvider(store: CredentialStore, oauth: OAuthClient): TokenProvider;
|
|
42
|
+
export declare function openSystemBrowser(url: URL): Promise<void>;
|
|
43
|
+
//# sourceMappingURL=oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,KAAK,SAAS,EAAgD,MAAM,WAAW,CAAA;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,sBAAsB,EAAE,MAAM,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gCAAgC,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5C;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAA;IACtB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;gBAE9B,OAAO,EAAE,kBAAkB;IAajC,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAyClC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmClD,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAwB/D;;;OAGG;IACG,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YA0BzC,cAAc;YAkDd,YAAY;CAyB3B;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,GAAG,aAAa,CAyBnG;AAuJD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAWzD"}
|