vectorjson 0.3.0 → 0.3.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.
- package/README.md +90 -40
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -59,6 +59,24 @@ parser.destroy();
|
|
|
59
59
|
|
|
60
60
|
`getValue()` returns a **live JS object** that grows incrementally on each `feed()`. No re-parsing — each byte is scanned exactly once.
|
|
61
61
|
|
|
62
|
+
**Schema-driven streaming** — pass a schema, get only what it defines. An LLM streams a 50KB tool call with `name`, `age`, `bio`, `metadata` — but your schema only needs `name` and `age`. Everything else is skipped at the byte level, never allocated in JS:
|
|
63
|
+
|
|
64
|
+
```js
|
|
65
|
+
import { z } from "zod";
|
|
66
|
+
import { createParser } from "vectorjson";
|
|
67
|
+
|
|
68
|
+
const User = z.object({ name: z.string(), age: z.number() });
|
|
69
|
+
|
|
70
|
+
for await (const partial of createParser({ schema: User, source: response.body })) {
|
|
71
|
+
console.log(partial);
|
|
72
|
+
// { name: "Ali" } ← partial, render immediately
|
|
73
|
+
// { name: "Alice" }
|
|
74
|
+
// { name: "Alice", age: 30 } ← validated on complete
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
The schema defines what to parse. Fields outside the schema are ignored during scanning — no objects created, no strings decoded, no memory wasted.
|
|
79
|
+
|
|
62
80
|
**Or skip intermediate access entirely** — if you only need the final value:
|
|
63
81
|
|
|
64
82
|
```js
|
|
@@ -308,56 +326,42 @@ parser.onText((text) => thinkingPanel.append(text)); // opt-in
|
|
|
308
326
|
parser.feed(llmOutput);
|
|
309
327
|
```
|
|
310
328
|
|
|
311
|
-
###
|
|
329
|
+
### Schema-driven streaming — parse only what the schema defines
|
|
312
330
|
|
|
313
|
-
|
|
331
|
+
Pass a schema and VectorJSON extracts only the fields it defines. Everything else is skipped at the byte level — no objects created, no strings decoded. Arrays are transparent: `{ users: z.array(z.object({ name })) }` picks through arrays automatically.
|
|
314
332
|
|
|
315
333
|
```js
|
|
334
|
+
import { z } from "zod";
|
|
316
335
|
import { createParser } from "vectorjson";
|
|
317
336
|
|
|
318
|
-
const
|
|
319
|
-
parser.feed('{"name":"Alice","age":30,"bio":"...10KB of text...","metadata":{}}');
|
|
320
|
-
parser.getValue(); // { name: "Alice", age: 30 } — bio and metadata never materialized
|
|
321
|
-
parser.destroy();
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
Nested paths work with dot notation:
|
|
337
|
+
const User = z.object({ name: z.string(), age: z.number() });
|
|
325
338
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
339
|
+
for await (const partial of createParser({ schema: User, source: response.body })) {
|
|
340
|
+
console.log(partial);
|
|
341
|
+
// { name: "Ali" } ← partial, render immediately
|
|
342
|
+
// { name: "Alice", age: 30 } ← validated on complete
|
|
343
|
+
}
|
|
331
344
|
```
|
|
332
345
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
Pass a `source` (ReadableStream or AsyncIterable) and iterate with `for await`. Each iteration yields the growing partial value:
|
|
346
|
+
Works on dirty LLM output — think tags, code fences, and leading prose are stripped automatically when a schema is provided:
|
|
336
347
|
|
|
337
348
|
```js
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
for await (const partial of parser) {
|
|
343
|
-
console.log(partial);
|
|
344
|
-
// { name: "Ali" }
|
|
345
|
-
// { name: "Alice" }
|
|
346
|
-
// { name: "Alice", age: 30 }
|
|
347
|
-
}
|
|
348
|
-
// Parser auto-destroys when the source ends or you break out of the loop
|
|
349
|
+
// All of these work with createParser(schema):
|
|
350
|
+
// <think>reasoning</think>{"name":"Alice","age":30}
|
|
351
|
+
// ```json\n{"name":"Alice","age":30}\n```
|
|
352
|
+
// Here's the result: {"name":"Alice","age":30}
|
|
349
353
|
```
|
|
350
354
|
|
|
351
|
-
|
|
355
|
+
Both `createParser` and `createEventParser` support `source` + `for await`:
|
|
352
356
|
|
|
353
357
|
```js
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
+
import { createEventParser } from "vectorjson";
|
|
359
|
+
|
|
360
|
+
const parser = createEventParser({ source: response.body });
|
|
361
|
+
parser.on('tool', (e) => showToolUI(e.value));
|
|
358
362
|
|
|
359
363
|
for await (const partial of parser) {
|
|
360
|
-
updateUI(partial); //
|
|
364
|
+
updateUI(partial); // growing partial value
|
|
361
365
|
}
|
|
362
366
|
```
|
|
363
367
|
|
|
@@ -522,25 +526,31 @@ Each `feed()` processes only new bytes — O(n) total. Three overloads:
|
|
|
522
526
|
|
|
523
527
|
```ts
|
|
524
528
|
createParser(); // no validation
|
|
525
|
-
createParser(schema); // schema validation
|
|
526
|
-
createParser({
|
|
529
|
+
createParser(schema); // schema validation + auto-pick + dirty input handling
|
|
530
|
+
createParser({ schema, source }); // options object
|
|
527
531
|
```
|
|
528
532
|
|
|
529
533
|
**Options object:**
|
|
530
534
|
|
|
531
535
|
```ts
|
|
532
536
|
interface CreateParserOptions<T = unknown> {
|
|
533
|
-
|
|
534
|
-
schema?: ZodLike<T>; // validate on complete
|
|
537
|
+
schema?: ZodLike<T>; // validate on complete, auto-pick from shape, skip dirty input
|
|
535
538
|
source?: ReadableStream<Uint8Array> | AsyncIterable<Uint8Array | string>;
|
|
539
|
+
pick?: string[]; // advanced: explicit field paths (overrides schema auto-pick)
|
|
536
540
|
}
|
|
537
541
|
```
|
|
538
542
|
|
|
543
|
+
When a `schema` is provided:
|
|
544
|
+
- Fields are auto-picked from the schema's `.shape` — only matching fields are parsed
|
|
545
|
+
- Arrays are transparent — `{ users: z.array(z.object({ name })) }` picks `users.name` through arrays
|
|
546
|
+
- Dirty input (think tags, code fences, leading prose) is stripped before parsing
|
|
547
|
+
- On complete, `safeParse()` validates the final value
|
|
548
|
+
|
|
539
549
|
When `source` is provided, the parser becomes async-iterable — use `for await` to consume partial values:
|
|
540
550
|
|
|
541
551
|
```ts
|
|
542
|
-
for await (const partial of createParser({
|
|
543
|
-
console.log(partial); // growing object with only
|
|
552
|
+
for await (const partial of createParser({ schema: User, source: stream })) {
|
|
553
|
+
console.log(partial); // growing object with only schema fields
|
|
544
554
|
}
|
|
545
555
|
```
|
|
546
556
|
|
|
@@ -594,6 +604,33 @@ type DeepPartial<T> = T extends object
|
|
|
594
604
|
|
|
595
605
|
Event-driven streaming parser. Events fire synchronously during `feed()`.
|
|
596
606
|
|
|
607
|
+
```ts
|
|
608
|
+
createEventParser(); // basic
|
|
609
|
+
createEventParser({ source: stream }); // for-await iteration
|
|
610
|
+
createEventParser({ multiRoot: true, onRoot }); // NDJSON
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
**Options:**
|
|
614
|
+
|
|
615
|
+
```ts
|
|
616
|
+
{
|
|
617
|
+
multiRoot?: boolean; // auto-reset between JSON values (NDJSON)
|
|
618
|
+
onRoot?: (event: RootEvent) => void;
|
|
619
|
+
source?: ReadableStream<Uint8Array> | AsyncIterable<Uint8Array | string>;
|
|
620
|
+
}
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
When `source` is provided, the parser becomes async-iterable — `for await` yields growing partial values, just like `createParser`:
|
|
624
|
+
|
|
625
|
+
```ts
|
|
626
|
+
const parser = createEventParser({ source: stream });
|
|
627
|
+
parser.on('tool', (e) => showToolUI(e.value));
|
|
628
|
+
|
|
629
|
+
for await (const partial of parser) {
|
|
630
|
+
updateUI(partial);
|
|
631
|
+
}
|
|
632
|
+
```
|
|
633
|
+
|
|
597
634
|
```ts
|
|
598
635
|
interface EventParser {
|
|
599
636
|
on(path: string, callback: (event: PathEvent) => void): EventParser;
|
|
@@ -608,6 +645,7 @@ interface EventParser {
|
|
|
608
645
|
getRawBuffer(): ArrayBuffer | null; // transferable buffer for Worker postMessage
|
|
609
646
|
getStatus(): FeedStatus;
|
|
610
647
|
destroy(): void;
|
|
648
|
+
[Symbol.asyncIterator](): AsyncIterableIterator<unknown | undefined>; // requires source
|
|
611
649
|
}
|
|
612
650
|
```
|
|
613
651
|
|
|
@@ -648,6 +686,18 @@ interface RootEvent {
|
|
|
648
686
|
}
|
|
649
687
|
```
|
|
650
688
|
|
|
689
|
+
### Parser comparison
|
|
690
|
+
|
|
691
|
+
| | `createParser` | `createEventParser` |
|
|
692
|
+
|---|---|---|
|
|
693
|
+
| **Use case** | Get a growing partial object | React to individual fields as they arrive |
|
|
694
|
+
| **Schema auto-pick** | Yes — schema `.shape` drives field selection | No — use `skip()` and `on()` for filtering |
|
|
695
|
+
| **Dirty input handling** | Yes (when schema provided) | Yes (always) |
|
|
696
|
+
| **`for await` with source** | Yes | Yes |
|
|
697
|
+
| **Field subscriptions** | No | `on()`, `onDelta()`, `skip()` |
|
|
698
|
+
| **Multi-root / NDJSON** | No | Yes (`multiRoot: true`) |
|
|
699
|
+
| **Text callbacks** | No | `onText()` for non-JSON text |
|
|
700
|
+
|
|
651
701
|
### `deepCompare(a, b, options?): boolean`
|
|
652
702
|
|
|
653
703
|
Compare two values for deep equality without materializing JS objects. When both values are VJ proxies, comparison runs entirely in WASM memory — zero allocations, zero Proxy traps.
|
package/dist/index.d.ts
CHANGED
|
@@ -117,6 +117,8 @@ export interface EventParser {
|
|
|
117
117
|
/** Copy the accumulated stream buffer into a new ArrayBuffer (for Worker postMessage transfer). */
|
|
118
118
|
getRawBuffer(): ArrayBuffer | null;
|
|
119
119
|
destroy(): void;
|
|
120
|
+
/** Async iteration over partial values when a source was provided. */
|
|
121
|
+
[Symbol.asyncIterator](): AsyncIterableIterator<unknown | undefined>;
|
|
120
122
|
}
|
|
121
123
|
export interface VectorJSON {
|
|
122
124
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/js/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/js/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAeH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,gBAAgB,GAAG,YAAY,GAAG,SAAS,CAAC;AACnF,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC;AAE3E,oEAAoE;AACpE,MAAM,MAAM,gBAAgB,GACxB,kBAAkB,GAClB,gBAAgB,GAChB,cAAc,CAAC;AAEnB,yEAAyE;AACzE,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,OAAO,IACrC;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,GACvC;IAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,GACjD;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,CAAC;AAEhD,sFAAsF;AACtF,MAAM,MAAM,WAAW,CAAC,CAAC,IACvB,CAAC,SAAS,MAAM,GACZ,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACtB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GACrB;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACxC,CAAC,CAAC;AAER,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,uFAAuF;IACvF,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;IAC7C,qIAAqI;IACrI,QAAQ,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1B,+DAA+D;IAC/D,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC;IAClC,mDAAmD;IACnD,SAAS,IAAI,UAAU,CAAC;IACxB,mGAAmG;IACnG,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC;IACnC,iDAAiD;IACjD,OAAO,IAAI,IAAI,CAAC;IAChB,sEAAsE;IACtE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CAChE;AAED,qDAAqD;AACrD,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IAAE,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAA;KAAE,CAAA;CAAE,CAAC;AAEvF,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC9C,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,gDAAgD;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,qEAAqE;IACrE,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uGAAuG;IACvG,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IACpC,uFAAuF;IACvF,MAAM,IAAI,OAAO,CAAC;CACnB;AAID,0EAA0E;AAC1E,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,WAAW,CAAC;IACpE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SAAE,CAAA;KAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG;QAAE,KAAK,EAAE,CAAC,CAAA;KAAE,KAAK,IAAI,GAAG,WAAW,CAAC;IAC7J,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,WAAW,CAAC;IAC1E,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW,CAAC;IACtD,IAAI,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;IACtC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IACpD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;IAC7C,QAAQ,IAAI,OAAO,GAAG,SAAS,CAAC;IAChC,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC;IAClC,SAAS,IAAI,UAAU,CAAC;IACxB,mGAAmG;IACnG,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC;IACnC,OAAO,IAAI,IAAI,CAAC;IAChB,sEAAsE;IACtE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;IAC/C;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,IAAI,eAAe,CAAC;IAChC;;;;;;;;;;OAUG;IACH,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IACxD;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAC/E;;;;;;;;OAQG;IACH,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;IACrF;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IACrC;;;;;;;;;;;;OAYG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACnD;;;;;;;;;;;;;;;OAeG;IACH,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SAAE,CAAA;KAAE,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7I;;;OAGG;IACH,iBAAiB,CAAC,OAAO,CAAC,EAAE;QAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;KACrC,GAAG,WAAW,CAAC;CACjB;AAgED;;;GAGG;AACH,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,YAAY,CAAC;CAC1C,GAAG,OAAO,CAAC,UAAU,CAAC,CAq3DtB;AAKD,uEAAuE;AACvE,eAAO,MAAM,KAAK,UAtiEH,MAAM,GAAG,UAAU,KAAG,WAsiEP,CAAC;AAE/B,uFAAuF;AACvF,eAAO,MAAM,gBAAgB;YA99DH,MAAM,GAAG,iBAAiB;KAiBjC,CAAC,SAAS,MAAM,UAAU;QAAE,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SAAE,CAAA;KAAE,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CA68D1F,CAAC;AAErD,wFAAwF;AACxF,eAAO,MAAM,WAAW,MAp/DP,OAAO,KAAK,OAAO,YAAY;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,OAo/DrC,CAAC;AAE3C,8DAA8D;AAC9D,eAAO,MAAM,YAAY;QA5hEP,eAAe;KAYlB,CAAC,UAAU,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;KAe1C,CAAC,qBAAqB,mBAAmB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;CAigEpC,CAAC;AAE7C,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,aAj9DA;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACrC,KAAG,WA88DgD,CAAC;AAEvD,8DAA8D;AAC9D,eAAO,MAAM,WAAW,UAx/DH,OAAO,KAAG,OAw/DW,CAAC"}
|