@capaxle/adapter-cli 0.1.0-alpha.1

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.
@@ -0,0 +1,204 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { jcs } from "@capaxle/ir";
3
+ const SCHEMA_MAP_KEYWORDS = new Set([
4
+ "$defs",
5
+ "dependentSchemas",
6
+ "patternProperties",
7
+ "properties",
8
+ ]);
9
+ const SCHEMA_ARRAY_KEYWORDS = new Set([
10
+ "allOf",
11
+ "anyOf",
12
+ "oneOf",
13
+ "prefixItems",
14
+ ]);
15
+ const SCHEMA_KEYWORDS = new Set([
16
+ "additionalProperties",
17
+ "contains",
18
+ "contentSchema",
19
+ "else",
20
+ "if",
21
+ "items",
22
+ "not",
23
+ "propertyNames",
24
+ "then",
25
+ "unevaluatedItems",
26
+ "unevaluatedProperties",
27
+ ]);
28
+ const LITERAL_KEYWORDS = new Set(["const", "default", "enum", "examples"]);
29
+ const object = (value) => value !== null && typeof value === "object" && !Array.isArray(value)
30
+ ? value
31
+ : null;
32
+ const clone = (value) => JSON.parse(JSON.stringify(value));
33
+ const pointerToken = (reference, prefix) => {
34
+ if (typeof reference !== "string" || !reference.startsWith(prefix))
35
+ return null;
36
+ const token = reference.slice(prefix.length);
37
+ if (token.length === 0 || token.includes("/"))
38
+ return null;
39
+ return token.replaceAll("~1", "/").replaceAll("~0", "~");
40
+ };
41
+ const encoded = (value) => Buffer.from(value).toString("base64url");
42
+ const sharedKey = (name) => `CapabilitySharedEncoded.${encoded(name)}`;
43
+ const localKey = (owner, name) => `CapabilityLocal.${encoded(owner)}.${encoded(name)}`;
44
+ function define(target, key, value) {
45
+ Object.defineProperty(target, key, {
46
+ value,
47
+ enumerable: true,
48
+ configurable: true,
49
+ writable: true,
50
+ });
51
+ }
52
+ function compareCodePoint(left, right) {
53
+ const a = Array.from(left);
54
+ const b = Array.from(right);
55
+ const length = Math.min(a.length, b.length);
56
+ for (let index = 0; index < length; index += 1) {
57
+ const difference = a[index].codePointAt(0) - b[index].codePointAt(0);
58
+ if (difference !== 0)
59
+ return difference;
60
+ }
61
+ return a.length - b.length;
62
+ }
63
+ function sortValue(value) {
64
+ if (Array.isArray(value))
65
+ return value.map(sortValue);
66
+ const source = object(value);
67
+ if (!source)
68
+ return value;
69
+ const result = {};
70
+ for (const key of Object.keys(source).sort(compareCodePoint))
71
+ define(result, key, sortValue(source[key]));
72
+ return result;
73
+ }
74
+ /** Hoists every reachable shared/owner-local definition into one standalone schema. */
75
+ export function projectStandaloneSchema(schema, sharedSchemas, ownerKey, options = {}) {
76
+ const definitions = new Map();
77
+ const signatures = new Map();
78
+ const states = new Map();
79
+ let failed = false;
80
+ const fail = () => {
81
+ failed = true;
82
+ return null;
83
+ };
84
+ const sharedOwner = (name) => {
85
+ const root = object(sharedSchemas[name]);
86
+ return Object.hasOwn(sharedSchemas, name) && root
87
+ ? { key: `shared\u0000${name}`, root }
88
+ : fail();
89
+ };
90
+ const ensureDefinition = (key, source, owner) => {
91
+ const signature = jcs(source);
92
+ if (signatures.has(key) && signatures.get(key) !== signature) {
93
+ fail();
94
+ return false;
95
+ }
96
+ if (states.has(key))
97
+ return true;
98
+ signatures.set(key, signature);
99
+ states.set(key, "processing");
100
+ const rewritten = rewriteSchema(source, owner, source === owner.root);
101
+ if (!rewritten)
102
+ return false;
103
+ definitions.set(key, rewritten);
104
+ states.set(key, "done");
105
+ return true;
106
+ };
107
+ const rewriteReference = (reference, owner) => {
108
+ const sharedName = pointerToken(reference, "#/schemas/");
109
+ if (sharedName !== null) {
110
+ const target = sharedOwner(sharedName);
111
+ if (!target)
112
+ return null;
113
+ const key = sharedKey(sharedName);
114
+ return ensureDefinition(key, target.root, target)
115
+ ? `#/$defs/${key}`
116
+ : null;
117
+ }
118
+ const localName = pointerToken(reference, "#/$defs/");
119
+ if (localName !== null) {
120
+ const localDefinitions = object(owner.root.$defs);
121
+ const source = object(localDefinitions?.[localName]);
122
+ if (!localDefinitions ||
123
+ !Object.hasOwn(localDefinitions, localName) ||
124
+ !source)
125
+ return fail();
126
+ const key = localKey(owner.key, localName);
127
+ return ensureDefinition(key, source, owner) ? `#/$defs/${key}` : null;
128
+ }
129
+ return fail();
130
+ };
131
+ function rewriteSchema(value, owner, omitOwnerDefinitions = false) {
132
+ const source = object(value);
133
+ if (!source)
134
+ return fail();
135
+ const result = {};
136
+ for (const key of Object.keys(source).sort(compareCodePoint)) {
137
+ const item = source[key];
138
+ if (omitOwnerDefinitions && key === "$defs")
139
+ continue;
140
+ if (LITERAL_KEYWORDS.has(key)) {
141
+ define(result, key, clone(item));
142
+ }
143
+ else if (key === "$ref") {
144
+ const rewritten = rewriteReference(item, owner);
145
+ if (!rewritten)
146
+ return null;
147
+ define(result, key, rewritten);
148
+ }
149
+ else if (SCHEMA_MAP_KEYWORDS.has(key)) {
150
+ const entries = object(item);
151
+ if (!entries)
152
+ return fail();
153
+ const mapped = {};
154
+ for (const name of Object.keys(entries).sort(compareCodePoint)) {
155
+ const rewritten = rewriteSchema(entries[name], owner);
156
+ if (!rewritten)
157
+ return null;
158
+ define(mapped, name, rewritten);
159
+ }
160
+ define(result, key, mapped);
161
+ }
162
+ else if (SCHEMA_ARRAY_KEYWORDS.has(key)) {
163
+ if (!Array.isArray(item))
164
+ return fail();
165
+ const mapped = [];
166
+ for (const entry of item) {
167
+ const rewritten = rewriteSchema(entry, owner);
168
+ if (!rewritten)
169
+ return null;
170
+ mapped.push(rewritten);
171
+ }
172
+ define(result, key, mapped);
173
+ }
174
+ else if (SCHEMA_KEYWORDS.has(key) && typeof item !== "boolean") {
175
+ const rewritten = rewriteSchema(item, owner);
176
+ if (!rewritten)
177
+ return null;
178
+ define(result, key, rewritten);
179
+ }
180
+ else {
181
+ define(result, key, clone(item));
182
+ }
183
+ }
184
+ return result;
185
+ }
186
+ const rootObject = object(schema);
187
+ if (!rootObject)
188
+ return null;
189
+ const owner = { key: ownerKey, root: rootObject };
190
+ const root = rewriteSchema(rootObject, owner, true);
191
+ if (!root || failed)
192
+ return null;
193
+ define(root, "$schema", "https://json-schema.org/draft/2020-12/schema");
194
+ if (options.requireObject)
195
+ define(root, "type", "object");
196
+ if (definitions.size > 0) {
197
+ const emitted = {};
198
+ for (const key of [...definitions.keys()].sort(compareCodePoint))
199
+ define(emitted, key, definitions.get(key));
200
+ define(root, "$defs", emitted);
201
+ }
202
+ return sortValue(root);
203
+ }
204
+ //# sourceMappingURL=export-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-schema.js","sourceRoot":"","sources":["../src/export-schema.ts"],"names":[],"mappings":"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"}
package/dist/host.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ import type { CliAdapter } from "./adapter.js";
2
+ export interface CliProcessHostOptions {
3
+ readonly argv?: readonly string[];
4
+ readonly credentials?: unknown;
5
+ readonly signal?: AbortSignal;
6
+ readonly stdin?: NodeJS.ReadableStream;
7
+ readonly stdout?: NodeJS.WritableStream;
8
+ readonly stderr?: NodeJS.WritableStream;
9
+ }
10
+ /** Application-owned process entry; generated binaries call this after composing the runtime. */
11
+ export declare function runCliProcess(adapter: CliAdapter, options?: CliProcessHostOptions): Promise<number>;
12
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CACzC;AAsCD,iGAAiG;AACjG,wBAAsB,aAAa,CACjC,OAAO,EAAE,UAAU,EACnB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
package/dist/host.js ADDED
@@ -0,0 +1,63 @@
1
+ import { readFile } from "node:fs/promises";
2
+ async function readStream(stream, signal) {
3
+ if (signal.aborted)
4
+ throw new Error("cancelled");
5
+ return new Promise((resolve, reject) => {
6
+ const chunks = [];
7
+ const cleanup = () => {
8
+ stream.removeListener("data", data);
9
+ stream.removeListener("end", end);
10
+ stream.removeListener("error", error);
11
+ signal.removeEventListener("abort", abort);
12
+ };
13
+ const data = (chunk) => chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));
14
+ const end = () => {
15
+ cleanup();
16
+ resolve(Buffer.concat(chunks).toString("utf8"));
17
+ };
18
+ const error = (cause) => {
19
+ cleanup();
20
+ reject(cause);
21
+ };
22
+ const abort = () => {
23
+ cleanup();
24
+ stream.pause();
25
+ reject(new Error("cancelled"));
26
+ };
27
+ stream.on("data", data);
28
+ stream.once("end", end);
29
+ stream.once("error", error);
30
+ signal.addEventListener("abort", abort, { once: true });
31
+ if (signal.aborted)
32
+ abort();
33
+ });
34
+ }
35
+ /** Application-owned process entry; generated binaries call this after composing the runtime. */
36
+ export async function runCliProcess(adapter, options = {}) {
37
+ const controller = new AbortController();
38
+ const external = options.signal;
39
+ const cancel = () => controller.abort();
40
+ external?.addEventListener("abort", cancel, { once: true });
41
+ if (external?.aborted)
42
+ cancel();
43
+ process.once("SIGINT", cancel);
44
+ try {
45
+ const result = await adapter.run({
46
+ argv: options.argv ?? process.argv.slice(2),
47
+ ...(options.credentials !== undefined
48
+ ? { credentials: options.credentials }
49
+ : {}),
50
+ signal: controller.signal,
51
+ readFile: (path) => readFile(path, { encoding: "utf8", signal: controller.signal }),
52
+ readStdin: () => readStream(options.stdin ?? process.stdin, controller.signal),
53
+ });
54
+ (options.stdout ?? process.stdout).write(result.stdout);
55
+ (options.stderr ?? process.stderr).write(result.stderr);
56
+ return result.exitCode;
57
+ }
58
+ finally {
59
+ process.removeListener("SIGINT", cancel);
60
+ external?.removeEventListener("abort", cancel);
61
+ }
62
+ }
63
+ //# sourceMappingURL=host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { createCliAdapter, CLI_EXIT_CODES } from "./adapter.js";
2
+ export type { CliAdapter, CliAdapterOptions, CliRunRequest, CliRunResult, } from "./adapter.js";
3
+ export { runCliProcess } from "./host.js";
4
+ export type { CliProcessHostOptions } from "./host.js";
5
+ export { OPENCLI_DIALECT, OPENCLI_VERSION, OPENCLI_SELECTOR, OPENCLI_EXTENSION_VERSION, OPENCLI_TARGET, RESERVED_CLI_OPTIONS, OPENCLI_EXIT_CODES, exportOpenCli, createOpenCliArtifactProducer, } from "./opencli.js";
6
+ export type { OpenCliBuildContext, OpenCliExportOptions, OpenCliDiagnostic, OpenCliExportResult, } from "./opencli.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { createCliAdapter, CLI_EXIT_CODES } from "./adapter.js";
2
+ export { runCliProcess } from "./host.js";
3
+ export { OPENCLI_DIALECT, OPENCLI_VERSION, OPENCLI_SELECTOR, OPENCLI_EXTENSION_VERSION, OPENCLI_TARGET, RESERVED_CLI_OPTIONS, OPENCLI_EXIT_CODES, exportOpenCli, createOpenCliArtifactProducer, } from "./opencli.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAOhE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,6BAA6B,GAC9B,MAAM,cAAc,CAAC"}
@@ -0,0 +1,115 @@
1
+ import { Buffer } from "node:buffer";
2
+ import type { JsonValue } from "@capaxle/ir";
3
+ import type { RuntimeDocument } from "@capaxle/runtime";
4
+ export declare const OPENCLI_DIALECT = "bcdxn";
5
+ export declare const OPENCLI_VERSION = "1.0.0-alpha.13";
6
+ export declare const OPENCLI_SELECTOR: "opencli:bcdxn@1.0.0-alpha.13";
7
+ export declare const OPENCLI_EXTENSION_VERSION = "0.2";
8
+ export declare const OPENCLI_TARGET: "opencli:bcdxn@1.0.0-alpha.13+capaxle-cli@0.2";
9
+ export declare const RESERVED_CLI_OPTIONS: readonly ["--confirm", "--correlation-id", "--help", "--idempotency-key", "--input", "--input-file", "--json", "--no-input", "--timeout", "--version"];
10
+ export declare const OPENCLI_EXIT_CODES: readonly [{
11
+ readonly code: 0;
12
+ readonly status: "OK";
13
+ readonly summary: "Invocation succeeded.";
14
+ }, {
15
+ readonly code: 2;
16
+ readonly status: "BAD_USER_INPUT_ERROR";
17
+ readonly summary: "CLI syntax or canonical input was invalid.";
18
+ }, {
19
+ readonly code: 3;
20
+ readonly status: "UNAUTHORIZED_ERROR";
21
+ readonly summary: "Authentication or authorization denied the invocation.";
22
+ }, {
23
+ readonly code: 4;
24
+ readonly status: "INTERNAL_CLI_ERROR";
25
+ readonly summary: "Confirmation or another precondition is required; inspect the canonical error.";
26
+ }, {
27
+ readonly code: 5;
28
+ readonly status: "INTERNAL_CLI_ERROR";
29
+ readonly summary: "A declared domain failure occurred; inspect the canonical error.";
30
+ }, {
31
+ readonly code: 6;
32
+ readonly status: "INTERNAL_CLI_ERROR";
33
+ readonly summary: "The invocation was limited, unavailable, or exceeded its deadline; inspect the canonical error.";
34
+ }, {
35
+ readonly code: 7;
36
+ readonly status: "INTERNAL_CLI_ERROR";
37
+ readonly summary: "The framework or application failed internally.";
38
+ }, {
39
+ readonly code: 130;
40
+ readonly status: "CANCELED_ERROR";
41
+ readonly summary: "The invocation was cancelled by an interrupt.";
42
+ }];
43
+ export interface OpenCliBuildContext {
44
+ readonly irHash: string;
45
+ readonly cliBinary?: string;
46
+ }
47
+ export interface OpenCliExportOptions {
48
+ readonly target?: string;
49
+ readonly extensions?: boolean;
50
+ readonly extensionVersion?: string;
51
+ readonly rootExtensions?: Readonly<Record<string, JsonValue>>;
52
+ readonly buildContext?: OpenCliBuildContext;
53
+ }
54
+ export interface OpenCliDiagnostic {
55
+ readonly code: "CAP_BUILD_CONTEXT_INVALID" | "CAP_OPENCLI_DIALECT_UNSUPPORTED" | "CAP_OPENCLI_VERSION_UNSUPPORTED" | "CAP_OPENCLI_LOSSY_PROJECTION" | "CAP_OPENCLI_BINDING_UNREPRESENTABLE" | "CAP_OPENCLI_SCHEMA_UNREPRESENTABLE" | "CAP_OPENCLI_EXTENSION_COLLISION";
56
+ readonly severity: "warning" | "error";
57
+ readonly message: string;
58
+ readonly target: string;
59
+ readonly capabilityId?: string;
60
+ readonly path?: string;
61
+ readonly details?: JsonValue;
62
+ }
63
+ export interface OpenCliExportResult {
64
+ readonly artifact: JsonValue | null;
65
+ readonly diagnostics: readonly OpenCliDiagnostic[];
66
+ }
67
+ export declare function exportOpenCli(document: RuntimeDocument, options?: OpenCliExportOptions): OpenCliExportResult;
68
+ /** Structural compiler plugin; the adapter never imports the compiler. */
69
+ export declare function createOpenCliArtifactProducer(options?: Omit<OpenCliExportOptions, "buildContext">): {
70
+ id: string;
71
+ version: string;
72
+ staticInputs: Readonly<Record<string, JsonValue>>;
73
+ diagnosticCodes: ({
74
+ code: "CAP_BUILD_CONTEXT_INVALID";
75
+ severities: "error"[];
76
+ } | {
77
+ code: "CAP_OPENCLI_BINDING_UNREPRESENTABLE";
78
+ severities: "error"[];
79
+ } | {
80
+ code: "CAP_OPENCLI_DIALECT_UNSUPPORTED";
81
+ severities: "error"[];
82
+ } | {
83
+ code: "CAP_OPENCLI_EXTENSION_COLLISION";
84
+ severities: "error"[];
85
+ } | {
86
+ code: "CAP_OPENCLI_LOSSY_PROJECTION";
87
+ severities: ("error" | "warning")[];
88
+ } | {
89
+ code: "CAP_OPENCLI_SCHEMA_UNREPRESENTABLE";
90
+ severities: "error"[];
91
+ } | {
92
+ code: "CAP_OPENCLI_VERSION_UNSUPPORTED";
93
+ severities: "error"[];
94
+ })[];
95
+ artifacts: {
96
+ id: string;
97
+ path: string;
98
+ mediaType: string;
99
+ target: "opencli:bcdxn@1.0.0-alpha.13+capaxle-cli@0.2";
100
+ dependencies: "document:capability-ir"[];
101
+ produce(context: {
102
+ readonly buildContext?: OpenCliBuildContext;
103
+ readonly dependencyBytes: ReadonlyMap<string, Uint8Array>;
104
+ }): {
105
+ ok: false;
106
+ diagnostics: readonly OpenCliDiagnostic[];
107
+ bytes?: never;
108
+ } | {
109
+ ok: true;
110
+ bytes: Buffer<ArrayBuffer>;
111
+ diagnostics: readonly OpenCliDiagnostic[];
112
+ };
113
+ }[];
114
+ };
115
+ //# sourceMappingURL=opencli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencli.d.ts","sourceRoot":"","sources":["../src/opencli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAChD,eAAO,MAAM,gBAAgB,gCAC6B,CAAC;AAC3D,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAC/C,eAAO,MAAM,cAAc,gDAC8C,CAAC;AAE1E,eAAO,MAAM,oBAAoB,wJAWtB,CAAC;AAEZ,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCpB,CAAC;AASZ,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9D,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EACT,2BAA2B,GAC3B,iCAAiC,GACjC,iCAAiC,GACjC,8BAA8B,GAC9B,qCAAqC,GACrC,oCAAoC,GACpC,iCAAiC,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACpD;AAoeD,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,eAAe,EACzB,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CA+LrB;AAwBD,0EAA0E;AAC1E,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,cAAc,CAAM;;;kBAY5B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAsCxC;YACf,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;YAC5C,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;SAC3D;;;;;;;;;;EAkDR"}