@elaraai/east-node-cli 1.0.78 → 1.0.80

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.
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAc9E,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,kEAAkE;AAClE;;;;;;;;GAQG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAI9B;AAED,MAAM,WAAW,iBAAiB;IAC9B,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;qCAGiC;IACjC,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IAChC;;;yEAGqE;IACrE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;iBAIa;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;wBAIoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAKD;;;;gEAIgE;AAChE,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAQhE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,gBAAgB,EAAE,EAC/B,QAAQ,EAAE,MAAM,EAAE,EAClB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,iBAAiB,GAAG,OAAY,GAC1C,OAAO,CAAC,OAAO,CAAC,CAqJlB;AAoBD,sDAAsD;AACtD,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAEpF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAejK;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAI7G"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EASH,KAAK,UAAU,EAClB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAa9E,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;;;;GAQG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAI9B;AAKD;;;;yCAIyC;AACzC,wBAAgB,aAAa,IAAI,MAAM,CAOtC;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,gBAAgB,EAAE,EAC/B,QAAQ,EAAE,MAAM,EAAE,EAClB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,UAAQ,GAChB,OAAO,CAAC,OAAO,CAAC,CA+GlB;AAED,sDAAsD;AACtD,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAEpF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAejK;AAqBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAUpD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAQlC"}
package/dist/runner.js CHANGED
@@ -2,12 +2,11 @@
2
2
  * Copyright (c) 2025 Elara AI Pty Ltd
3
3
  * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
4
  */
5
- import { statSync, writeFileSync } from 'fs';
5
+ import { readFileSync, statSync, writeFileSync } from 'fs';
6
6
  import { extname } from 'path';
7
- import { EastIR, compareFor, encodeBeast2For, encodeBeast2PagedFor, encodeEastFor, encodeJSONFor, isTypeValueEqual, printFor, variant, } from '@elaraai/east';
7
+ import { EastIR, encodeBeast2For, encodeBeast2PagedFor, encodeEastFor, encodeJSONFor, isTypeValueEqual, printFor, variant, } from '@elaraai/east';
8
8
  import { printTypeValue } from '@elaraai/east/internal';
9
- import { EmitFileWriter } from './emit-writer.js';
10
- import { lazyInputBytesRead, loadEastIR, loadInput, loadInputLazy } from './loader.js';
9
+ import { inputBytes, lazyInputBytesRead, loadEastIR, loadInput, loadInputLazy } from './loader.js';
11
10
  function now() { return process.hrtime.bigint(); }
12
11
  function elapsed(start, end) { return Number(end - start) / 1e6; }
13
12
  function formatSize(bytes) {
@@ -26,10 +25,9 @@ export function formatFileSize(path) {
26
25
  return '?';
27
26
  }
28
27
  }
29
- /** Streaming-execution options accepted by {@link runProgram}. */
30
28
  /**
31
- * A refusal of the command line itself — a flag combination, an output
32
- * destination, a function shape the flags do not fit.
29
+ * A refusal of the command line itself — a function the inputs given do not
30
+ * fit.
33
31
  *
34
32
  * These are the user's errors, not the program's, and east-c and east-py
35
33
  * answer them with one sentence on stderr. Marking them lets the CLI do the
@@ -44,14 +42,12 @@ export class UsageError extends Error {
44
42
  }
45
43
  /** Default size threshold above which collection inputs open lazily. */
46
44
  const LAZY_INPUT_BYTES_DEFAULT = 64 * 1024 * 1024;
47
- /** Resolves the lazy-open threshold: explicit option, else environment, else
48
- * the default. An unset or empty `EAST_LAZY_INPUT_BYTES` falls through to
49
- * the 64 MiB default (`Number('')` is `0`, which would silently DISABLE
50
- * lazy opening); invalid or negative values fall through too, matching
51
- * east-c and east-py. Exported for the spec only. @internal */
52
- export function lazyThreshold(options) {
53
- if (options.lazyInputBytes !== undefined)
54
- return options.lazyInputBytes;
45
+ /** Resolves the lazy-open threshold: the environment, else the default. An
46
+ * unset or empty `EAST_LAZY_INPUT_BYTES` falls through to the 64 MiB default
47
+ * (`Number('')` is `0`, which would silently DISABLE lazy opening); invalid
48
+ * or negative values fall through too, matching east-c and east-py. Exported
49
+ * for `exec` and the spec. @internal */
50
+ export function lazyThreshold() {
55
51
  const raw = process.env.EAST_LAZY_INPUT_BYTES;
56
52
  if (raw !== undefined && raw !== '') {
57
53
  const env = Number(raw);
@@ -63,17 +59,8 @@ export function lazyThreshold(options) {
63
59
  /**
64
60
  * Runs an East IR program.
65
61
  */
66
- export async function runProgram(irPath, platformFns, packages, inputPaths, outputPath, options = {}) {
67
- // Callers predating streaming execution pass `verbose` as a boolean.
68
- const opts = typeof options === 'boolean' ? { verbose: options } : options;
69
- const verbose = opts.verbose ?? false;
62
+ export async function runProgram(irPath, platformFns, packages, inputPaths, outputPath, verbose = false) {
70
63
  const t0 = now();
71
- if (opts.merge !== undefined && opts.emit !== 'dict') {
72
- throw new UsageError('--merge applies to --emit dict only');
73
- }
74
- if (opts.union && opts.emit !== 'set') {
75
- throw new UsageError('--union applies to --emit set only');
76
- }
77
64
  // Load as an EastIR bundle so source_map travels with the IR and error
78
65
  // frames resolve end-to-end.
79
66
  const eastIR = loadEastIR(irPath);
@@ -82,39 +69,13 @@ export async function runProgram(irPath, platformFns, packages, inputPaths, outp
82
69
  // Get the function's input/output types from the IR.
83
70
  const inputTypes = ir?.value?.type?.value?.inputs ?? [];
84
71
  const outputType = (ir?.value?.type?.value?.output ?? null);
85
- // With emit, the function takes one trailing runner-provided parameter
86
- // beyond the input files: the emit capability. A zero-parameter function
87
- // has no trailing parameter to be it — the shaped emit error, not a
88
- // negative arity count.
89
- if (opts.emit !== undefined && inputTypes.length === 0) {
90
- throw new UsageError(`--emit requires the function's trailing parameter to be the emit capability (a function type)`);
91
- }
92
- const fileParamCount = opts.emit !== undefined ? inputTypes.length - 1 : inputTypes.length;
93
- if (inputPaths.length !== fileParamCount) {
72
+ if (inputPaths.length !== inputTypes.length) {
94
73
  // east-c / east-py parity, down to the signature line: one sentence
95
74
  // for one condition, whichever runner the task declares.
96
75
  const signature = `(${inputTypes.map((t) => printTypeValue(t)).join(', ')}) -> ` +
97
76
  `${outputType !== null ? printTypeValue(outputType) : '?'}`;
98
- throw new UsageError(`Function expects ${fileParamCount} inputs, got ${inputPaths.length}\nSignature: ${signature}`);
99
- }
100
- if (opts.emit !== undefined && (outputPath === undefined || extname(outputPath).toLowerCase() !== '.beast2')) {
101
- // east-c / east-py parity: the emitted blob is a beast2 stream, so
102
- // any other output extension is refused up front.
103
- throw new UsageError(`--emit requires a .beast2 output file (-o)`);
104
- }
105
- const streamInputs = opts.streamInputs ?? [];
106
- for (const index of streamInputs) {
107
- if (index < 0 || index >= inputPaths.length) {
108
- throw new UsageError(`--stream index ${index} out of range (${inputPaths.length} inputs)`);
109
- }
77
+ throw new UsageError(`Function expects ${inputTypes.length} inputs, got ${inputPaths.length}\nSignature: ${signature}`);
110
78
  }
111
- const emitSink = opts.emit !== undefined
112
- ? createEmitSink(opts.emit, inputTypes[inputTypes.length - 1], outputPath, {
113
- ...(opts.merge !== undefined && { mergePath: opts.merge }),
114
- union: opts.union ?? false,
115
- platformFns,
116
- })
117
- : null;
118
79
  // Verbose header
119
80
  if (verbose) {
120
81
  console.error(`Running: ${irPath} (${formatFileSize(irPath)})`);
@@ -124,31 +85,28 @@ export async function runProgram(irPath, platformFns, packages, inputPaths, outp
124
85
  console.error(` - ${p}`);
125
86
  }
126
87
  console.error(`Function: ${inputTypes.length} inputs, ${isAsync ? 'async' : 'sync'}`);
127
- for (let i = 0; i < fileParamCount; i++) {
88
+ for (let i = 0; i < inputPaths.length; i++) {
128
89
  const t = printTypeValue(inputTypes[i]);
129
90
  console.error(` input ${i}: ${inputPaths[i]} (${formatFileSize(inputPaths[i])})`);
130
91
  console.error(` ${t}`);
131
92
  }
132
- if (emitSink)
133
- console.error(` emit: ${opts.emit} sink -> ${outputPath}`);
134
93
  if (outputType) {
135
94
  console.error(` return:`);
136
95
  console.error(` ${printTypeValue(outputType)}`);
137
96
  }
138
97
  }
139
98
  // Load inputs — always frozen (task inputs are immutable; mutating one
140
- // throws the uniform copy-first error). Streamed inputs always open
141
- // lazily; other beast2 collection inputs open lazily at or above the
142
- // size threshold, so a sparse read into a huge indexed input stops
143
- // paying a whole decode — and because frozen collapses the shape gate,
144
- // nested-container element shapes open lazily too.
145
- const threshold = lazyThreshold(opts);
99
+ // throws the uniform copy-first error). Beast2 collection inputs open
100
+ // lazily at or above the size threshold, so a sparse read into a huge
101
+ // indexed input stops paying a whole decode — and because frozen collapses
102
+ // the shape gate, nested-container element shapes open lazily too. The
103
+ // size is the value's: an input staged as a manifest is a small file
104
+ // naming large ones.
105
+ const threshold = lazyThreshold();
146
106
  const inputs = [];
147
107
  const lazyInputs = [];
148
108
  for (let i = 0; i < inputPaths.length; i++) {
149
- const wantLazy = streamInputs.includes(i) ||
150
- (threshold > 0 && statSync(inputPaths[i]).size >= threshold);
151
- const lazy = wantLazy ? loadInputLazy(inputPaths[i]) : undefined;
109
+ const lazy = threshold > 0 && inputBytes(inputPaths[i]) >= threshold ? loadInputLazy(inputPaths[i]) : undefined;
152
110
  if (lazy !== undefined) {
153
111
  lazyInputs.push(i);
154
112
  if (verbose)
@@ -157,16 +115,14 @@ export async function runProgram(irPath, platformFns, packages, inputPaths, outp
157
115
  inputs.push(lazy !== undefined ? lazy : loadInput(inputPaths[i], inputTypes[i]));
158
116
  }
159
117
  /** The verbose summary's account of each lazy input: what paging came
160
- * to, against the file's size. */
118
+ * to, against the size of the value. */
161
119
  const reportLazyReads = () => {
162
120
  for (const i of lazyInputs) {
163
121
  const read = lazyInputBytesRead(inputs[i]);
164
122
  if (read !== undefined)
165
- console.error(` input ${i}: ${formatSize(read)} read of ${formatFileSize(inputPaths[i])}`);
123
+ console.error(` input ${i}: ${formatSize(read)} read of ${formatSize(inputBytes(inputPaths[i]))}`);
166
124
  }
167
125
  };
168
- if (emitSink)
169
- inputs.push(emitSink.emit);
170
126
  const t1 = now();
171
127
  let result;
172
128
  if (!isAsync) {
@@ -174,12 +130,13 @@ export async function runProgram(irPath, platformFns, packages, inputPaths, outp
174
130
  const t2 = now();
175
131
  result = compiled(...inputs);
176
132
  const t3 = now();
177
- const t4 = emitSink
178
- ? finishEmit(emitSink, outputPath, verbose)
179
- : maybeWriteOutput(outputPath, result, outputType, verbose);
180
- const t5 = now();
133
+ const t4 = maybeWriteOutput(outputPath, result, outputType, verbose);
181
134
  if (verbose) {
182
- printTimingAndMemory(t0, t1, t2, t3, t4, t5);
135
+ printResult({
136
+ outcome: variant('ok', null),
137
+ peakBytes: peakBytes(),
138
+ timings: { load: elapsed(t0, t1), compile: elapsed(t1, t2), execute: elapsed(t2, t3), output: elapsed(t3, t4) },
139
+ });
183
140
  reportLazyReads();
184
141
  }
185
142
  }
@@ -188,26 +145,27 @@ export async function runProgram(irPath, platformFns, packages, inputPaths, outp
188
145
  const t2 = now();
189
146
  result = await compiled(...inputs);
190
147
  const t3 = now();
191
- const t4 = emitSink
192
- ? finishEmit(emitSink, outputPath, verbose)
193
- : maybeWriteOutput(outputPath, result, outputType, verbose);
194
- const t5 = now();
148
+ const t4 = maybeWriteOutput(outputPath, result, outputType, verbose);
195
149
  if (verbose) {
196
- printTimingAndMemory(t0, t1, t2, t3, t4, t5);
150
+ printResult({
151
+ outcome: variant('ok', null),
152
+ peakBytes: peakBytes(),
153
+ timings: { load: elapsed(t0, t1), compile: elapsed(t1, t2), execute: elapsed(t2, t3), output: elapsed(t3, t4) },
154
+ });
197
155
  reportLazyReads();
198
156
  }
199
157
  }
200
158
  return outputPath ? undefined : result;
201
159
  }
202
160
  /**
203
- * Loads a `--merge` function: an IR file holding a `(K, V, V) -> V` East
204
- * function over the given key and value types, compiled with the run's
205
- * platforms. Shared by the emit sink and the blob merge.
161
+ * Loads a merge function: an IR file holding a `(K, V, V) -> V` East function
162
+ * over the given key and value types, compiled with the unit's platforms.
163
+ * Shared by `exec`'s dict output and the blob merge.
206
164
  *
207
165
  * @param path - the IR file (any format the IR positional accepts)
208
166
  * @param keyType - the key type
209
167
  * @param valueType - the value type
210
- * @param platformFns - the run's platforms
168
+ * @param platformFns - the unit's platforms
211
169
  * @param subject - what the function must match, for the message: `the emit
212
170
  * parameter` or `the inputs`
213
171
  * @returns the compiled merge function
@@ -223,129 +181,11 @@ export function loadMergeFunction(path, keyType, valueType, platformFns, subject
223
181
  !isTypeValueEqual(shape.inputs[1], valueType) ||
224
182
  !isTypeValueEqual(shape.inputs[2], valueType) ||
225
183
  !isTypeValueEqual(shape.output, valueType)) {
226
- throw new Error(`--merge: expected a function (K, V, V) -> V matching ${subject} ` +
184
+ throw new Error(`merge function: expected a function (K, V, V) -> V matching ${subject} ` +
227
185
  `(K = ${printTypeValue(keyType)}, V = ${printTypeValue(valueType)}), got ${printTypeValue(fnType)}`);
228
186
  }
229
187
  return bundle.compile(platformFns);
230
188
  }
231
- /**
232
- * The canonical duplicate-key error, identical across runners: the emit
233
- * sink's, and the blob merge's when a key is shared without a fold.
234
- *
235
- * @param kind - the collection kind
236
- * @param printKey - the key type's printer
237
- * @param key - the repeated key
238
- * @returns the message
239
- */
240
- export function duplicateMessage(kind, printKey, key) {
241
- const noun = kind === 'dict' ? 'Dict' : 'Set';
242
- const part = kind === 'dict' ? 'key' : 'element';
243
- return `beast2 v5: duplicate ${noun} ${part} emitted: ${printKey(key)} — ${noun} ${part}s must be unique`;
244
- }
245
- /**
246
- * The canonical out-of-order error, identical across runners: a Set/Dict
247
- * emission below the previous one.
248
- *
249
- * @param kind - the collection kind
250
- * @param printKey - the key type's printer
251
- * @param key - the offending key
252
- * @param previous - the key emitted before it
253
- * @returns the message
254
- */
255
- function disorderMessage(kind, printKey, key, previous) {
256
- const noun = kind === 'dict' ? 'Dict' : 'Set';
257
- const part = kind === 'dict' ? 'key' : 'element';
258
- return `beast2 v5: ${noun} ${part} emitted out of order: ${printKey(key)} after ${printKey(previous)} — Set/Dict emissions must ascend in East order`;
259
- }
260
- /**
261
- * Builds the emit capability: a host function value that re-batches elements
262
- * byte-adaptively and appends segments to the output file through a
263
- * streaming writer ({@link EmitFileWriter}) — one pass, with one open batch
264
- * in memory whatever the output's size.
265
- *
266
- * Set/Dict emissions must ascend in East (key) order (issue #770): a key
267
- * below the previous one is an error naming both, in the same words on every
268
- * runner, and so is an equal key unless the sink folds it. With a merge
269
- * function an adjacent equal dict key folds into the batch's last entry,
270
- * `acc = merge(key, acc, value)`; with union an adjacent equal set element
271
- * collapses into the previous one. The output is then byte-identical to what
272
- * the non-folding sink writes for the already-folded sequence.
273
- */
274
- function createEmitSink(kind, emitParamType, outputPath, fold) {
275
- if (emitParamType.type !== 'Function') {
276
- throw new UsageError(`--emit requires the function's trailing parameter to be the emit capability (a function type)`);
277
- }
278
- const emitInputs = emitParamType.value.inputs;
279
- const expectedArity = kind === 'dict' ? 2 : 1;
280
- if (emitInputs.length !== expectedArity) {
281
- throw new UsageError(`--emit ${kind} expects an emit parameter taking ${expectedArity} argument(s), got ${emitInputs.length}`);
282
- }
283
- if (fold.mergePath !== undefined && kind !== 'dict') {
284
- throw new UsageError('--merge applies to --emit dict only');
285
- }
286
- if (fold.union && kind !== 'set') {
287
- throw new UsageError('--union applies to --emit set only');
288
- }
289
- const merge = fold.mergePath !== undefined
290
- ? loadMergeFunction(fold.mergePath, emitInputs[0], emitInputs[1], fold.platformFns, 'the emit parameter')
291
- : null;
292
- // The output collection's wire type is reconstructed from the emit
293
- // parameter's argument types.
294
- const outTypeValue = kind === 'dict' ? variant('Dict', { key: emitInputs[0], value: emitInputs[1] }) :
295
- kind === 'set' ? variant('Set', emitInputs[0]) :
296
- variant('Array', emitInputs[0]);
297
- // Canonical-order tracking per element, ahead of the writer's own
298
- // batch-level check, so an adjacent duplicate or an out-of-order key
299
- // names the offending emit call and can never collapse silently inside a
300
- // batch container.
301
- const orderCmp = kind === 'array' ? null : compareFor(emitInputs[0]);
302
- const printKey = kind === 'array' ? null : printFor(emitInputs[0]);
303
- const out = new EmitFileWriter(kind, outTypeValue, outputPath);
304
- let hasLast = false;
305
- let lastKey;
306
- const emit = (...args) => {
307
- const key = args[0];
308
- if (orderCmp !== null && hasLast) {
309
- const order = orderCmp(lastKey, key);
310
- if (order === 0 && fold.union) {
311
- // The first element stands.
312
- return null;
313
- }
314
- if (order === 0 && merge !== null) {
315
- // The flush rule keeps the last entry in the open batch, so
316
- // the fold lands in place.
317
- out.foldLast((last) => {
318
- const [k, acc] = last;
319
- return [k, merge(key, acc, args[1])];
320
- });
321
- return null;
322
- }
323
- if (order === 0)
324
- throw new Error(duplicateMessage(kind, printKey, key));
325
- if (order > 0)
326
- throw new Error(disorderMessage(kind, printKey, key, lastKey));
327
- }
328
- out.push(kind === 'dict' ? [key, args[1]] : key);
329
- if (orderCmp !== null) {
330
- lastKey = key;
331
- hasLast = true;
332
- }
333
- return null;
334
- };
335
- return {
336
- emit,
337
- finish: () => out.finishClose(),
338
- };
339
- }
340
- /** Finalizes the emit sink and reports the output like the return-value path. */
341
- function finishEmit(sink, outputPath, verbose) {
342
- sink.finish();
343
- const t = now();
344
- if (verbose) {
345
- console.error(`Output: ${outputPath} (${formatFileSize(outputPath)})`);
346
- }
347
- return t;
348
- }
349
189
  function maybeWriteOutput(outputPath, result, outputType, verbose) {
350
190
  if (!outputPath) {
351
191
  // Print to stdout as .east format (matches east-c / east-py)
@@ -365,17 +205,39 @@ function maybeWriteOutput(outputPath, result, outputType, verbose) {
365
205
  }
366
206
  return t;
367
207
  }
368
- function printTimingAndMemory(t0, t1, t2, t3, t4, t5) {
208
+ /**
209
+ * Prints a unit's result as `-v` shows it: where the time went, and the
210
+ * process's peak memory.
211
+ *
212
+ * @param result - the result
213
+ */
214
+ export function printResult(result) {
215
+ const { load, compile, execute, output } = result.timings;
369
216
  console.error('\nTiming:');
370
- console.error(` Load: ${elapsed(t0, t1).toFixed(1).padStart(8)} ms`);
371
- console.error(` Compile: ${elapsed(t1, t2).toFixed(1).padStart(8)} ms`);
372
- console.error(` Execute: ${elapsed(t2, t3).toFixed(1).padStart(8)} ms`);
373
- console.error(` Output: ${elapsed(t3, t4).toFixed(1).padStart(8)} ms`);
374
- console.error(` Total: ${elapsed(t0, t5).toFixed(1).padStart(8)} ms`);
375
- const rssBytes = process.memoryUsage().rss;
376
- const rssMB = rssBytes / (1024 * 1024);
217
+ console.error(` Load: ${load.toFixed(1).padStart(8)} ms`);
218
+ console.error(` Compile: ${compile.toFixed(1).padStart(8)} ms`);
219
+ console.error(` Execute: ${execute.toFixed(1).padStart(8)} ms`);
220
+ console.error(` Output: ${output.toFixed(1).padStart(8)} ms`);
221
+ console.error(` Total: ${(load + compile + execute + output).toFixed(1).padStart(8)} ms`);
377
222
  console.error('\nMemory:');
378
- console.error(` Peak RSS: ${rssMB.toFixed(1).padStart(8)} MB`);
223
+ console.error(` Peak RSS: ${(Number(result.peakBytes) / (1024 * 1024)).toFixed(1).padStart(8)} MB`);
224
+ }
225
+ /**
226
+ * The process's peak resident memory in bytes: VmHWM on Linux, where
227
+ * `ru_maxrss` carries a parent's peak across exec, and `ru_maxrss` elsewhere.
228
+ *
229
+ * @returns the peak
230
+ */
231
+ export function peakBytes() {
232
+ try {
233
+ const hwm = /^VmHWM:\s+(\d+) kB$/m.exec(readFileSync('/proc/self/status', 'utf8'));
234
+ if (hwm !== null)
235
+ return BigInt(hwm[1]) * 1024n;
236
+ }
237
+ catch {
238
+ // No /proc: not Linux.
239
+ }
240
+ return BigInt(process.resourceUsage().maxRSS) * 1024n;
379
241
  }
380
242
  /** Whether an output root type is a collection (Array/Set/Dict). */
381
243
  function isCollectionRoot(type) {
@@ -386,9 +248,9 @@ function writeOutput(filePath, value, type) {
386
248
  switch (ext) {
387
249
  case '.beast2':
388
250
  case '.beast': {
389
- // Collection-rooted outputs are ALWAYS segmented + indexed
390
- // (byte-adaptive segments) so e3's paged dataset reads can seek —
391
- // one uniform encoding per logical value, at every size.
251
+ // Collection-rooted outputs are ALWAYS segmented + indexed, cut by
252
+ // the content-defined rule, so e3's paged dataset reads can seek —
253
+ // one encoding per logical value, at every size.
392
254
  const encoder = isCollectionRoot(type)
393
255
  ? encodeBeast2PagedFor(type)
394
256
  : encodeBeast2For(type);
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EACH,MAAM,EACN,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,OAAO,GAEV,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEnG,SAAS,GAAG,KAAa,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC1D,SAAS,OAAO,CAAC,KAAa,EAAE,GAAW,IAAY,OAAO,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAE1F,SAAS,UAAU,CAAC,KAAa;IAC7B,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACtD,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,cAAc,CAAC,IAAY;IACvC,IAAI,CAAC;QAAC,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,GAAG,CAAC;IAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACjC,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC7B,CAAC;CACJ;AAED,wEAAwE;AACxE,MAAM,wBAAwB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAElD;;;;yCAIyC;AACzC,MAAM,UAAU,aAAa;IACzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC9C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC;IACrD,CAAC;IACD,OAAO,wBAAwB,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC5B,MAAc,EACd,WAA+B,EAC/B,QAAkB,EAClB,UAAoB,EACpB,UAAmB,EACnB,OAAO,GAAG,KAAK;IAEf,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;IAEjB,uEAAuE;IACvE,6BAA6B;IAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,MAAM,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAExD,qDAAqD;IACrD,MAAM,UAAU,GAAI,EAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC;IACjE,MAAM,UAAU,GAAG,CAAE,EAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI,CAAyB,CAAC;IAE7F,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QAC1C,oEAAoE;QACpE,yDAAyD;QACzD,MAAM,SAAS,GAAG,IAAK,UAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;YACjG,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAChE,MAAM,IAAI,UAAU,CAChB,oBAAoB,UAAU,CAAC,MAAM,gBAAgB,UAAU,CAAC,MAAM,gBAAgB,SAAS,EAAE,CACpG,CAAC;IACN,CAAC;IAED,iBAAiB;IACjB,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,YAAY,MAAM,MAAM,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEjE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,aAAa,QAAQ,CAAC,MAAM,gBAAgB,WAAW,CAAC,MAAM,cAAc,CAAC,CAAC;YAC5F,KAAK,MAAM,CAAC,IAAI,QAAQ;gBAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,aAAa,UAAU,CAAC,MAAM,YAAY,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC;YACrF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,sEAAsE;IACtE,sEAAsE;IACtE,2EAA2E;IAC3E,uEAAuE;IACvE,qEAAqE;IACrE,qBAAqB;IACrB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClH,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,OAAO;gBAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAE,EAAE,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;IACvF,CAAC;IACD;6CACyC;IACzC,MAAM,eAAe,GAAG,GAAS,EAAE;QAC/B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,YAAY,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACjI,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;IAEjB,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,QAAQ,GAAI,MAA2B,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACnE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;QAEjB,MAAM,GAAG,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;QAEjB,MAAM,EAAE,GAAG,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAErE,IAAI,OAAO,EAAE,CAAC;YACV,WAAW,CAAC;gBACR,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC5B,SAAS,EAAE,SAAS,EAAE;gBACtB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;aAClH,CAAC,CAAC;YACH,eAAe,EAAE,CAAC;QACtB,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,MAAM,QAAQ,GAAI,MAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;QAEjB,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;QAEjB,MAAM,EAAE,GAAG,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAErE,IAAI,OAAO,EAAE,CAAC;YACV,WAAW,CAAC;gBACR,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC5B,SAAS,EAAE,SAAS,EAAE;gBACtB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;aAClH,CAAC,CAAC;YACH,eAAe,EAAE,CAAC;QACtB,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3C,CAAC;AAKD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,OAAsB,EAAE,SAAwB,EAAE,WAA+B,EAAE,OAAe;IAC9I,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,MAAM,GAAI,MAAM,CAAC,EAAU,CAAC,KAAK,CAAC,IAAqB,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAA2D,CAAC,CAAC,CAAC,IAAI,CAAC;IACrH,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAC3C,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,OAAO,CAAC;QAC5C,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,SAAS,CAAC;QAC9C,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,SAAS,CAAC;QAC9C,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACX,+DAA+D,OAAO,GAAG;YACzE,QAAQ,cAAc,CAAC,OAAO,CAAC,SAAS,cAAc,CAAC,SAAS,CAAC,UAAU,cAAc,CAAC,MAAM,CAAC,EAAE,CACtG,CAAC;IACN,CAAC;IACD,OAAQ,MAA2B,CAAC,OAAO,CAAC,WAAW,CAAkB,CAAC;AAC9E,CAAC;AAED,SAAS,gBAAgB,CAAC,UAA8B,EAAE,MAAe,EAAE,UAAgC,EAAE,OAAgB;IACzH,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,6DAA6D;QAC7D,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAiB,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,GAAG,EAAE,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,UAAU;QAAE,OAAO,GAAG,EAAE,CAAC;IAC9B,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,WAAW,UAAU,MAAM,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,CAAC,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAkB;IAC1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;IAC1D,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,CAAC,KAAK,CAAC,eAAe,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAClE,OAAO,CAAC,KAAK,CAAC,eAAe,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAClE,OAAO,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9F,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACzG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS;IACrB,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC;QACnF,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,GAAG,KAAK,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACL,uBAAuB;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AAC1D,CAAC;AAED,oEAAoE;AACpE,SAAS,gBAAgB,CAAC,IAAmB;IACzC,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAChF,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,KAAc,EAAE,IAAa;IAChE,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,QAAQ,GAAG,EAAE,CAAC;QACV,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,mEAAmE;YACnE,mEAAmE;YACnE,iDAAiD;YACjD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAqB,CAAC;gBACnD,CAAC,CAAC,oBAAoB,CAAC,IAAW,CAAC;gBACnC,CAAC,CAAC,eAAe,CAAC,IAAW,CAAC,CAAC;YACnC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACxC,MAAM;QACV,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,MAAM,OAAO,GAAG,aAAa,CAAC,IAAW,CAAC,CAAC;YAC3C,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACxC,MAAM;QACV,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,MAAM,OAAO,GAAG,aAAa,CAAC,IAAW,CAAC,CAAC;YAC3C,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACxC,MAAM;QACV,CAAC;QACD;YACI,MAAM,IAAI,KAAK,CACX,sCAAsC,GAAG,KAAK;gBAC9C,qDAAqD,CACxD,CAAC;IACV,CAAC;AACL,CAAC"}