@ifc-lite/cli 0.28.0 → 0.29.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.
Files changed (57) hide show
  1. package/dist/commands/analyze.d.ts.map +1 -1
  2. package/dist/commands/analyze.js +9 -2
  3. package/dist/commands/analyze.js.map +1 -1
  4. package/dist/commands/bcf.js +1 -1
  5. package/dist/commands/bcf.js.map +1 -1
  6. package/dist/commands/diff-test-helpers.d.ts +7 -4
  7. package/dist/commands/diff-test-helpers.d.ts.map +1 -1
  8. package/dist/commands/diff-test-helpers.js +7 -4
  9. package/dist/commands/diff-test-helpers.js.map +1 -1
  10. package/dist/commands/export-rust-formats.d.ts +11 -0
  11. package/dist/commands/export-rust-formats.d.ts.map +1 -0
  12. package/dist/commands/export-rust-formats.js +185 -0
  13. package/dist/commands/export-rust-formats.js.map +1 -0
  14. package/dist/commands/export.d.ts +9 -0
  15. package/dist/commands/export.d.ts.map +1 -1
  16. package/dist/commands/export.js +36 -148
  17. package/dist/commands/export.js.map +1 -1
  18. package/dist/commands/extract-entities.d.ts +23 -18
  19. package/dist/commands/extract-entities.d.ts.map +1 -1
  20. package/dist/commands/extract-entities.js +86 -133
  21. package/dist/commands/extract-entities.js.map +1 -1
  22. package/dist/commands/info.d.ts.map +1 -1
  23. package/dist/commands/info.js +56 -0
  24. package/dist/commands/info.js.map +1 -1
  25. package/dist/commands/mutate-step-record.d.ts +33 -0
  26. package/dist/commands/mutate-step-record.d.ts.map +1 -0
  27. package/dist/commands/mutate-step-record.js +267 -0
  28. package/dist/commands/mutate-step-record.js.map +1 -0
  29. package/dist/commands/mutate.d.ts +2 -13
  30. package/dist/commands/mutate.d.ts.map +1 -1
  31. package/dist/commands/mutate.js +4 -105
  32. package/dist/commands/mutate.js.map +1 -1
  33. package/dist/commands/query-output.d.ts.map +1 -1
  34. package/dist/commands/query-output.js +33 -6
  35. package/dist/commands/query-output.js.map +1 -1
  36. package/dist/commands/spatial-ancestors.d.ts +26 -0
  37. package/dist/commands/spatial-ancestors.d.ts.map +1 -0
  38. package/dist/commands/spatial-ancestors.js +102 -0
  39. package/dist/commands/spatial-ancestors.js.map +1 -0
  40. package/dist/commands/step-args.d.ts +140 -0
  41. package/dist/commands/step-args.d.ts.map +1 -0
  42. package/dist/commands/step-args.js +333 -0
  43. package/dist/commands/step-args.js.map +1 -0
  44. package/dist/commands/storey-selection.d.ts +6 -0
  45. package/dist/commands/storey-selection.d.ts.map +1 -0
  46. package/dist/commands/storey-selection.js +90 -0
  47. package/dist/commands/storey-selection.js.map +1 -0
  48. package/dist/commands/subset-relations.d.ts +201 -0
  49. package/dist/commands/subset-relations.d.ts.map +1 -0
  50. package/dist/commands/subset-relations.js +277 -0
  51. package/dist/commands/subset-relations.js.map +1 -0
  52. package/dist/commands/where-filter.d.ts +1 -0
  53. package/dist/commands/where-filter.d.ts.map +1 -1
  54. package/dist/commands/where-filter.js +7 -3
  55. package/dist/commands/where-filter.js.map +1 -1
  56. package/dist/index.js +1 -1
  57. package/package.json +19 -19
@@ -8,31 +8,31 @@
8
8
  * Supports type filtering, storey filtering, column selection (including quantities),
9
9
  * and schema conversion on export.
10
10
  */
11
- import { writeFile, readFile } from 'node:fs/promises';
11
+ import { writeFile } from 'node:fs/promises';
12
12
  import { basename } from 'node:path';
13
- import { GeometryProcessor, isNoRenderGeometryError } from '@ifc-lite/geometry';
14
- import { countGlbMeshes, escapeCsvCell } from '@ifc-lite/export';
13
+ import { escapeCsvCell } from '@ifc-lite/export';
15
14
  import { findPropertyInSets, findQuantityInSets } from '@ifc-lite/query';
16
15
  import { createHeadlessContext } from '../loader.js';
17
- import { getFlag, hasFlag, fatal, writeOutput, validateLimit } from '../output.js';
18
- import { logger } from '../logger.js';
19
- import { formatGeometryReport, NO_DIAGNOSTICS_LINE } from '../geometry-report.js';
16
+ import { getFlag, fatal, writeOutput, validateLimit } from '../output.js';
17
+ import { exportRustFormat } from './export-rust-formats.js';
20
18
  /**
21
19
  * Parse a --where filter string into psetName, propName, operator, value.
22
20
  */
23
- function parseWhereFilter(filter) {
21
+ export function parseWhereFilter(filter) {
24
22
  const dotIdx = filter.indexOf('.');
25
23
  if (dotIdx <= 0) {
26
24
  fatal(`Invalid --where syntax: "${filter}". Expected: PsetName.PropName[=Value]`);
27
25
  }
28
26
  const psetName = filter.slice(0, dotIdx);
29
27
  const rest = filter.slice(dotIdx + 1);
30
- for (const op of ['!=', '>=', '<=', '>', '<', '=', '~']) {
28
+ // `~=` MUST be checked before `=` and `~` -- see the same note in
29
+ // `where-filter.ts`, whose token list this mirrors.
30
+ for (const op of ['!=', '>=', '<=', '~=', '>', '<', '=', '~']) {
31
31
  const opIdx = rest.indexOf(op);
32
32
  if (opIdx > 0) {
33
33
  const propName = rest.slice(0, opIdx);
34
34
  const value = rest.slice(opIdx + op.length);
35
- const mappedOp = op === '~' ? 'contains' : op;
35
+ const mappedOp = op === '~' ? 'contains' : op === '~=' ? 'matches' : op;
36
36
  return { psetName, propName, operator: mappedOp, value };
37
37
  }
38
38
  }
@@ -113,29 +113,6 @@ export function columnValueToCsv(value) {
113
113
  return '';
114
114
  return String(value);
115
115
  }
116
- /**
117
- * Resolve the raw IFC bytes (parsed store source, or re-read from disk) plus a
118
- * one-shot wasm GeometryProcessor for the Rust-backed exporters (OBJ / glTF / JSON-LD).
119
- *
120
- * Every Rust exporter below takes the WHOLE file, so the source is genuinely
121
- * materialised here (#2183). It is handed back rather than scoped through a
122
- * callback because the caller is one `switch` arm of a single CLI invocation
123
- * that also runs the optional diagnostics pass over the same bytes; the buffer
124
- * dies with the command.
125
- */
126
- async function rustExportContext(store, filePath) {
127
- let bytes;
128
- if (store.source.byteLength > 0) {
129
- bytes = store.source.materialize();
130
- }
131
- else {
132
- const buf = await readFile(filePath);
133
- bytes = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
134
- }
135
- const gp = new GeometryProcessor();
136
- await gp.init();
137
- return { bytes, gp };
138
- }
139
116
  /**
140
117
  * RFC 4180 quoting + the CWE-1236 formula-injection guard, delegated to
141
118
  * `@ifc-lite/export`'s single escaper. The copy that used to live here tested
@@ -263,16 +240,40 @@ export async function exportCommand(args) {
263
240
  }
264
241
  case 'ifc': {
265
242
  const schema = getFlag(args, '--schema');
266
- const content = bim.export.ifc(refs, { schema });
243
+ // bim.export.ifc() isolates to the given refs (plus their reference closure)
244
+ // whenever the array is non-empty, and treats an EMPTY array as "export the
245
+ // whole model" — the same convention already used by the MCP export_ifc
246
+ // tool, headless-test-helpers, and the mutate/playground call sites (#4044).
247
+ // `refs` here is always non-empty for an unfiltered export (it's every
248
+ // queryable entity), so passing it unconditionally used to isolate the
249
+ // export to that set — narrowing out entities the query layer doesn't
250
+ // surface directly (e.g. solids owned by non-product entities) even
251
+ // though nothing was ever filtered.
252
+ if (filterRequested && refs.length === 0) {
253
+ fatal('Filter matched 0 entities — nothing to export. Check --type/--storey/--where/--limit.');
254
+ }
255
+ const exportRefs = filterRequested ? refs : [];
256
+ const content = bim.export.ifc(exportRefs, { schema });
267
257
  if (!outPath)
268
258
  fatal('--out is required for IFC export');
269
259
  await writeFile(outPath, content, 'utf-8');
270
- process.stderr.write(`Written to ${outPath}\n`);
260
+ if (filterRequested) {
261
+ // A genuinely filtered export still narrows — report the delta so the
262
+ // narrowing stays visible rather than silent (the same defect shape as
263
+ // #4044, just for the case where narrowing is actually intended).
264
+ const exportedCount = (content.match(/^#\d+=/gm) ?? []).length;
265
+ process.stderr.write(`Exported ${exportedCount} of ${store.entityCount} entities (filtered) to ${outPath}\n`);
266
+ }
267
+ else {
268
+ process.stderr.write(`Written to ${outPath}\n`);
269
+ }
271
270
  break;
272
271
  }
273
272
  // Rust-backed exporters (ifc-lite-export via wasm). OBJ/glTF mesh the model;
274
273
  // when a --type/--storey/--where/--limit filter is active the matched express
275
274
  // ids become the isolation set so the export contains only those elements.
275
+ // See export-rust-formats.ts (#4047) for the shared wasm bootstrap and
276
+ // per-format isolation/diagnostics handling.
276
277
  case 'obj':
277
278
  case 'gltf':
278
279
  case 'glb':
@@ -280,120 +281,7 @@ export async function exportCommand(args) {
280
281
  case 'ifcx':
281
282
  case 'usd':
282
283
  case 'step': {
283
- // Whole-model formats (ifcx/usd) never isolate, so filters were skipped above and
284
- // must not gate the export here — only the isolating formats treat a filter as active.
285
- const filterActive = !wholeModelFormat && filterRequested;
286
- const isolated = filterActive
287
- ? new Uint32Array(refs.map((r) => r.expressId))
288
- : new Uint32Array();
289
- // An empty isolation set means "export everything" to the Rust exporters, so a
290
- // filter that matched nothing would silently dump the whole model. Fail loudly
291
- // instead — the user asked for a subset and got zero matches.
292
- if (filterActive && isolated.length === 0) {
293
- fatal('Filter matched 0 entities — nothing to export. Check --type/--storey/--where/--limit.');
294
- }
295
- // --profile: attribute wall-time between the per-invocation wasm
296
- // bootstrap (GeometryProcessor init) and the export itself - the
297
- // fixed-overhead split the throughput plan needs for tiny inputs.
298
- const profileFlag = hasFlag(args, '--profile');
299
- const tInit = performance.now();
300
- const { bytes, gp } = await rustExportContext(store, filePath);
301
- if (profileFlag) {
302
- process.stderr.write(`profile: wasm init ${(performance.now() - tInit).toFixed(0)}ms\n`);
303
- }
304
- const tWork = performance.now();
305
- try {
306
- if (format === 'ifcx') {
307
- const out = gp.exportIfcx(bytes);
308
- if (out == null)
309
- fatal('IFCX export failed (geometry pipeline not initialized)');
310
- await writeOutput(out, outPath);
311
- }
312
- else if (format === 'usd') {
313
- // OpenUSD (.usda ASCII) — whole-model Z-up USD stage (geometry-backed).
314
- const out = gp.exportUsd(bytes);
315
- if (out == null)
316
- fatal('USD export failed (geometry pipeline not initialized)');
317
- await writeOutput(out, outPath);
318
- }
319
- else if (format === 'step') {
320
- // Rust faithful re-serialization (+ reference-closed subset when filtered).
321
- const schema = getFlag(args, '--schema') ?? '';
322
- const out = gp.exportStep(bytes, schema, isolated);
323
- if (out == null)
324
- fatal('STEP export failed (geometry pipeline not initialized)');
325
- await writeOutput(out, outPath);
326
- }
327
- else if (format === 'jsonld') {
328
- const out = gp.exportJsonld(bytes, '', true, false, false, isolated);
329
- if (out == null)
330
- fatal('JSON-LD export failed (geometry pipeline not initialized)');
331
- await writeOutput(out, outPath);
332
- }
333
- else if (format === 'obj') {
334
- const out = gp.exportObj(bytes, true, new Uint32Array(), isolated);
335
- if (out == null)
336
- fatal('OBJ export failed (geometry pipeline not initialized)');
337
- await writeOutput(out, outPath);
338
- }
339
- else {
340
- // gltf | glb → binary GLB
341
- if (!outPath)
342
- fatal('--out is required for GLB/glTF export (binary output)');
343
- let out;
344
- try {
345
- out = gp.exportGlb(bytes, false, new Uint32Array(), isolated, '');
346
- }
347
- catch (err) {
348
- // The Rust boundary fails closed on an empty visible mesh set; map
349
- // the typed error to the tailored operator hint.
350
- if (isNoRenderGeometryError(err)) {
351
- fatal(filterActive
352
- ? 'GLB export produced 0 meshes — the matched entities have no exportable render geometry. Check --type/--storey/--where/--limit.'
353
- : 'GLB export produced 0 meshes — the model has no exportable render geometry (or geometry production failed).');
354
- }
355
- throw err;
356
- }
357
- if (out == null)
358
- fatal('GLB export failed (geometry pipeline not initialized)');
359
- // Defense-in-depth behind the Rust fail-closed guard: a zero-mesh GLB
360
- // must never be written to disk and reported as success.
361
- if (countGlbMeshes(out) === 0) {
362
- fatal(filterActive
363
- ? 'GLB export produced 0 meshes — the matched entities have no exportable render geometry. Check --type/--storey/--where/--limit.'
364
- : 'GLB export produced 0 meshes — the model has no exportable render geometry (or geometry production failed).');
365
- }
366
- logger.debug(`GLB meshes: ${countGlbMeshes(out)}`);
367
- await writeFile(outPath, out);
368
- logger.info(`Written to ${outPath}`);
369
- }
370
- if (profileFlag) {
371
- process.stderr.write(`profile: ${format} export ${(performance.now() - tWork).toFixed(0)}ms\n`);
372
- }
373
- // Opt-in geometry summary (--diagnostics, or implied by --verbose):
374
- // reuses the gp/bytes already in scope. This is a second geometry pass
375
- // (the export bindings do not return diagnostics yet), so it only runs
376
- // when asked for; the renderer is shared with diagnose-geometry.
377
- if (hasFlag(args, '--diagnostics') || logger.level() === 'debug') {
378
- if (format === 'ifcx') {
379
- logger.info('No geometry diagnostics for ifcx export (no mesh pass).');
380
- }
381
- else {
382
- // Best-effort: the export already succeeded; a diagnostics failure
383
- // must not turn it into a command failure.
384
- try {
385
- const diag = gp.diagnoseGeometry(bytes);
386
- logger.info(diag ? formatGeometryReport(diag) : NO_DIAGNOSTICS_LINE);
387
- }
388
- catch (err) {
389
- logger.warn(`Geometry diagnostics failed: ${err instanceof Error ? err.message : String(err)}`);
390
- }
391
- }
392
- }
393
- }
394
- finally {
395
- gp.dispose();
396
- }
284
+ await exportRustFormat(format, args, store, filePath, refs, filterRequested, wholeModelFormat);
397
285
  break;
398
286
  }
399
287
  case 'hbjson': {
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,7 @@
1
- /** One parsed STEP instance: `#id = TYPE(<body>);`. */
2
- interface Instance {
3
- id: number;
4
- type: string;
5
- /** Argument text between the outermost parentheses (references + literals). */
6
- body: string;
7
- /** The verbatim `#id= TYPE(...);` text, re-emitted unchanged into the subset. */
8
- full: string;
9
- }
10
- interface ParsedStep {
1
+ import { type StepRecord, type Subset } from './subset-relations.js';
2
+ export interface ParsedStep {
11
3
  header: string;
12
- instances: Map<number, Instance>;
4
+ instances: Map<number, StepRecord>;
13
5
  /** 22-char GlobalId → expressId, for rooted entities. */
14
6
  guidToId: Map<string, number>;
15
7
  }
@@ -25,16 +17,29 @@ export declare function parseStep(text: string): ParsedStep;
25
17
  * An `#id` / bare id is validated against the model too, so a typo'd or stale
26
18
  * id fails loudly instead of silently selecting nothing. */
27
19
  export declare function resolveToId(token: string, parsed: ParsedStep): number;
28
- /** Forward reference closure: every instance transitively referenced by `seeds`. */
20
+ /**
21
+ * Forward reference closure: every instance transitively referenced by
22
+ * `seeds`.
23
+ *
24
+ * Uses `refsOutsideStrings`, not a raw `/#(\d+)/g` scan, because a record's
25
+ * Name/Description is free TEXT and Revit writes `#`-shaped substrings into
26
+ * it (`'Chair pairs with #71'`). A raw regex reads that as a reference to
27
+ * entity 71 and pulls it — and its own closure — into the extraction even
28
+ * though it was never selected. See #4148.
29
+ *
30
+ * An id NAMED but never DEFINED is not added, or a rewritten SET would emit
31
+ * it as a dangling `#id` (#4128).
32
+ */
29
33
  export declare function forwardClosure(seeds: Iterable<number>, parsed: ParsedStep, into: Set<number>): void;
30
34
  /**
31
- * Assemble the kept-id set: the closure of `seedProducts` + context roots
32
- * (project/units/contexts + spatial skeleton) + spatial-containment relations
33
- * whose every member is kept (so no dangling references).
35
+ * Assemble the subset: the closure of `seedProducts` + context roots
36
+ * (project/units/contexts + the backward closure of spatial ancestors, not
37
+ * the whole skeleton) + spatial-structure relations, each rewritten down to
38
+ * its kept members (so no dangling references).
34
39
  */
35
- export declare function buildSubset(seedProducts: Set<number>, parsed: ParsedStep): Set<number>;
36
- /** Serialize the kept ids back into a valid STEP file (sorted, header preserved). */
37
- export declare function serializeSubset(keep: Set<number>, parsed: ParsedStep): string;
40
+ export declare function buildSubset(seedProducts: Set<number>, parsed: ParsedStep): Subset;
41
+ /** Serialize the subset back into a valid STEP file (sorted, header preserved). */
42
+ export declare function serializeSubset({ keep, rewritten }: Subset, parsed: ParsedStep): string;
38
43
  interface TriageRow {
39
44
  expressId: number;
40
45
  ifcType: string;
@@ -1 +1 @@
1
- {"version":3,"file":"extract-entities.d.ts","sourceRoot":"","sources":["../../src/commands/extract-entities.ts"],"names":[],"mappings":"AAgCA,uDAAuD;AACvD,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,yDAAyD;IACzD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CA2ElD;AAED;;4DAE4D;AAC5D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAUrE;AAID,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAenG;AA2ED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAmEtF;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAI7E;AAID,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAIlD;AA2DD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4G1E"}
1
+ {"version":3,"file":"extract-entities.d.ts","sourceRoot":"","sources":["../../src/commands/extract-entities.ts"],"names":[],"mappings":"AAmCA,OAAO,EAA4C,KAAK,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAI/G,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,yDAAyD;IACzD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CA2ElD;AAED;;4DAE4D;AAC5D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAUrE;AAQD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAYnG;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAqEjF;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAIvF;AAID,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAIlD;AA2DD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4G1E"}