@hypersoniclabs/helix-cli 0.1.25-helix3.525 → 0.1.25-helix3.526

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 (33) hide show
  1. package/dist/itemLod/artifact.d.ts +40 -0
  2. package/dist/itemLod/artifact.js +106 -22
  3. package/dist/itemLod/artifact.js.map +1 -1
  4. package/dist/itemLod/cardTruth.d.ts +93 -0
  5. package/dist/itemLod/cardTruth.js +203 -0
  6. package/dist/itemLod/cardTruth.js.map +1 -0
  7. package/dist/itemLod/command.d.ts +2 -0
  8. package/dist/itemLod/command.js +10 -2
  9. package/dist/itemLod/command.js.map +1 -1
  10. package/dist/itemLod/glbFixtures.d.ts +5 -0
  11. package/dist/itemLod/glbFixtures.js +3 -1
  12. package/dist/itemLod/glbFixtures.js.map +1 -1
  13. package/dist/itemLod/index.d.ts +3 -1
  14. package/dist/itemLod/index.js +8 -1
  15. package/dist/itemLod/index.js.map +1 -1
  16. package/dist/tsconfig.build.tsbuildinfo +1 -1
  17. package/docs/item-lod.md +31 -0
  18. package/package.json +1 -1
  19. package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
  20. package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
  21. package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
  22. package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
  23. package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
  24. package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
  25. package/plugins/beamng-vehicle/bin/__pycache__/beamng_stock_events.cpython-312.pyc +0 -0
  26. package/plugins/beamng-vehicle/bin/__pycache__/fmod_studio.cpython-312.pyc +0 -0
  27. package/plugins/beamng-vehicle/bin/__pycache__/fsb5.cpython-312.pyc +0 -0
  28. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio.cpython-312.pyc +0 -0
  29. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_ac.cpython-312.pyc +0 -0
  30. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_beamng.cpython-312.pyc +0 -0
  31. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_fixtures.cpython-312.pyc +0 -0
  32. package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
  33. package/plugins/beamng-vehicle/bin/__pycache__/test_sim_audio.cpython-312.pyc +0 -0
@@ -1,5 +1,6 @@
1
1
  import { type ImpostorFraming, type ImpostorShading } from './impostor';
2
2
  import { type GBufferPasses } from './gbuffer';
3
+ import { type CardCensus, type CardVerdict } from './cardTruth';
3
4
  import { type LevelTextureSpec, type WrittenLevel, type WrittenTexture } from './levelGlb';
4
5
  import { type ItemModel } from './model';
5
6
  import { type ItemLodProfile, type SimplifiedLevel } from './simplify';
@@ -23,6 +24,23 @@ export declare const ITEM_LOD_COMPILER = "item-lod/3";
23
24
  */
24
25
  export declare const ITEM_LOD_COMPILER_FOR_SHADING: Readonly<Record<ImpostorShading, string>>;
25
26
  export declare const ITEM_LOD_GBUFFER_COMPILER = "item-lod/5";
27
+ /**
28
+ * `item-lod/6`: `item-lod/5` (shading `gbuffer/1`) with card truth applied (`cardTruth: 'apply'`, see `cardTruth.ts`). An item whose card cannot be truthful (see-through
29
+ * glass or water, a mirror, thin emissive parts) is compiled WITHOUT its impostor and with a mesh that is guaranteed to draw; every other item compiles to the same bytes as `/5`.
30
+ * The backend queues it only for the items the `/5` compile reports as `cardTruth.suppress`, and serves it to the same clients as `/5`, ahead of it.
31
+ */
32
+ export declare const ITEM_LOD_CARD_TRUTH_COMPILER = "item-lod/6";
33
+ /** True in a CLI that implements `cardTruth` (a worker checks this before it compiles `item-lod/6`, so an older CLI never writes a card under a contract that forbids it). */
34
+ export declare const ITEM_LOD_CARD_TRUTH = true;
35
+ /** The runtime skips a level whose measured error is over this share of the bounds diagonal (`itemLod.ts` in the engine); a document with no level that passes it needs a model of at most this many triangles to draw. */
36
+ export declare const ITEM_LOD_LEVEL_ERROR_RATIO = 0.1;
37
+ /**
38
+ * Card truth prefers the item itself over an approximation: a level whose measured error is within this share of the bounds diagonal is faithful enough to stand in for it, and a source of at most
39
+ * `ITEM_LOD_OWN_MODEL_MAX_TRIANGLES` triangles whose levels are not that close is drawn as itself (the Black Frame Glass Wall's 66 triangle LOD1 is 20 cm off a 30 cm wall: 2.4 percent of an 8.4 m diagonal, inside
40
+ * the runtime's 10 percent rule, but not the wall).
41
+ */
42
+ export declare const ITEM_LOD_FAITHFUL_ERROR_RATIO = 0.02;
43
+ export declare const ITEM_LOD_OWN_MODEL_MAX_TRIANGLES = 4000;
26
44
  /** Caps the artifact must hold (SCENE-PIPELINE-DESIGN section 4.5). */
27
45
  export declare const ITEM_LOD_CAPS: {
28
46
  readonly lod1TriangleRatio: number;
@@ -193,6 +211,16 @@ export interface ItemLodReport {
193
211
  emissive: number | null;
194
212
  };
195
213
  };
214
+ /** The card-truth verdict (gbuffer/1 compiles with `cardTruth` set): `suppress` is the rule's answer, `suppressed` is whether this artifact actually has no card. */
215
+ cardTruth?: {
216
+ mode: 'apply' | 'observe';
217
+ suppress: boolean;
218
+ suppressed: boolean;
219
+ reasons: string[];
220
+ mesh: 'level' | 'own-model' | 'none';
221
+ census: CardCensus;
222
+ thinEmissive: CardVerdict['thinEmissive'];
223
+ };
196
224
  caps: CapCheck;
197
225
  warnings: string[];
198
226
  millis: {
@@ -240,6 +268,11 @@ export interface CompileItemLodOptions {
240
268
  * as bright, so the backend keeps an albedo rendition next to the lit one and serves each to the clients that can draw it.
241
269
  */
242
270
  shading?: ImpostorShading;
271
+ /**
272
+ * Card truth (`gbuffer/1` only). `'apply'` leaves the impostor out (`impostor: null`, the reason in `warnings`) of an item whose card cannot be truthful (see `cardTruth.ts`) when a mesh is
273
+ * guaranteed; `'observe'` changes nothing in the artifact and only records the verdict in `report.cardTruth` (what the backend reads to decide who gets an `item-lod/6` row).
274
+ */
275
+ cardTruth?: 'apply' | 'observe';
243
276
  /** `gbuffer/1` capture: the four G-buffer passes; defaults to the headless placements capture host. Injected by tests. */
244
277
  captureGBuffer?: (captureGlb: Uint8Array, framing: ImpostorFraming, size?: number) => Promise<GBufferPasses>;
245
278
  /** Atlas capture; defaults to the headless placements capture host. Injected by tests. */
@@ -257,6 +290,13 @@ export declare function writeSmallerLevel(model: ItemModel, simplified: Simplifi
257
290
  }>;
258
291
  /** Compile a static GLB into an item-lod/1 artifact and its objects. Deterministic: the same bytes give the same CIDs. */
259
292
  export declare function compileItemLods(glb: Uint8Array, options: CompileItemLodOptions): Promise<ItemLodBuild>;
293
+ /**
294
+ * Which mesh the runtime draws at range when the item has no card, from the measured error of the emitted levels: `'level'` when a level is faithful (error at most 2 percent of the bounds
295
+ * diagonal), else `'own-model'` when the source is small enough (at most 4000 triangles) for the runtime to draw the item itself from a document with no levels, else `'level'` when a level
296
+ * at least passes the runtime's rule (at most 10 percent of the diagonal), else `'none'` (the card must stay). Older engines draw exactly this: with levels they draw a level that passes the
297
+ * 10 percent rule (else the least-wrong one), with no levels and no impostor they draw the source model when it is at most 4000 triangles.
298
+ */
299
+ export declare function meshGuarantee(levelErrors: readonly number[], diagonal: number, sourceTriangles: number): 'level' | 'own-model' | 'none';
260
300
  export declare const itemLodObjectPath: (object: ItemLodObject) => string;
261
301
  /** `artifact.json` (the canonical bytes whose CID is `artifactCid`), `objects/<sha256>.<ext>`, `report.json` and previews. */
262
302
  export declare function writeItemLodOutput(directory: string, build: ItemLodBuild): Promise<{
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.itemLodObjectPath = exports.ITEM_LOD_CAPS = exports.ITEM_LOD_GBUFFER_COMPILER = exports.ITEM_LOD_COMPILER_FOR_SHADING = exports.ITEM_LOD_COMPILER = exports.ITEM_LOD_SCHEMA = void 0;
3
+ exports.itemLodObjectPath = exports.ITEM_LOD_CAPS = exports.ITEM_LOD_OWN_MODEL_MAX_TRIANGLES = exports.ITEM_LOD_FAITHFUL_ERROR_RATIO = exports.ITEM_LOD_LEVEL_ERROR_RATIO = exports.ITEM_LOD_CARD_TRUTH = exports.ITEM_LOD_CARD_TRUTH_COMPILER = exports.ITEM_LOD_GBUFFER_COMPILER = exports.ITEM_LOD_COMPILER_FOR_SHADING = exports.ITEM_LOD_COMPILER = exports.ITEM_LOD_SCHEMA = void 0;
4
4
  exports.checkItemLodCaps = checkItemLodCaps;
5
5
  exports.validateItemLodArtifact = validateItemLodArtifact;
6
6
  exports.writeSmallerLevel = writeSmallerLevel;
7
7
  exports.compileItemLods = compileItemLods;
8
+ exports.meshGuarantee = meshGuarantee;
8
9
  exports.writeItemLodOutput = writeItemLodOutput;
9
10
  const promises_1 = require("node:fs/promises");
10
11
  const node_path_1 = require("node:path");
@@ -12,6 +13,7 @@ const helix_manifest_1 = require("@hypersoniclabs/helix-manifest");
12
13
  const impostor_1 = require("./impostor");
13
14
  const gbuffer_1 = require("./gbuffer");
14
15
  const atlas_1 = require("./atlas");
16
+ const cardTruth_1 = require("./cardTruth");
15
17
  const flat_1 = require("./flat");
16
18
  const levelGlb_1 = require("./levelGlb");
17
19
  const model_1 = require("./model");
@@ -37,6 +39,23 @@ exports.ITEM_LOD_COMPILER = 'item-lod/3';
37
39
  */
38
40
  exports.ITEM_LOD_COMPILER_FOR_SHADING = { albedo: 'item-lod/3', 'lit/1': 'item-lod/4', 'gbuffer/1': 'item-lod/5' };
39
41
  exports.ITEM_LOD_GBUFFER_COMPILER = 'item-lod/5';
42
+ /**
43
+ * `item-lod/6`: `item-lod/5` (shading `gbuffer/1`) with card truth applied (`cardTruth: 'apply'`, see `cardTruth.ts`). An item whose card cannot be truthful (see-through
44
+ * glass or water, a mirror, thin emissive parts) is compiled WITHOUT its impostor and with a mesh that is guaranteed to draw; every other item compiles to the same bytes as `/5`.
45
+ * The backend queues it only for the items the `/5` compile reports as `cardTruth.suppress`, and serves it to the same clients as `/5`, ahead of it.
46
+ */
47
+ exports.ITEM_LOD_CARD_TRUTH_COMPILER = 'item-lod/6';
48
+ /** True in a CLI that implements `cardTruth` (a worker checks this before it compiles `item-lod/6`, so an older CLI never writes a card under a contract that forbids it). */
49
+ exports.ITEM_LOD_CARD_TRUTH = true;
50
+ /** The runtime skips a level whose measured error is over this share of the bounds diagonal (`itemLod.ts` in the engine); a document with no level that passes it needs a model of at most this many triangles to draw. */
51
+ exports.ITEM_LOD_LEVEL_ERROR_RATIO = 0.1;
52
+ /**
53
+ * Card truth prefers the item itself over an approximation: a level whose measured error is within this share of the bounds diagonal is faithful enough to stand in for it, and a source of at most
54
+ * `ITEM_LOD_OWN_MODEL_MAX_TRIANGLES` triangles whose levels are not that close is drawn as itself (the Black Frame Glass Wall's 66 triangle LOD1 is 20 cm off a 30 cm wall: 2.4 percent of an 8.4 m diagonal, inside
55
+ * the runtime's 10 percent rule, but not the wall).
56
+ */
57
+ exports.ITEM_LOD_FAITHFUL_ERROR_RATIO = 0.02;
58
+ exports.ITEM_LOD_OWN_MODEL_MAX_TRIANGLES = 4000;
40
59
  /** Caps the artifact must hold (SCENE-PIPELINE-DESIGN section 4.5). */
41
60
  exports.ITEM_LOD_CAPS = {
42
61
  lod1TriangleRatio: simplify_1.ITEM_LOD1.maxRatio,
@@ -307,41 +326,92 @@ async function compileItemLods(glb, options) {
307
326
  aboveBytes = attempt.written.bytes.length;
308
327
  }
309
328
  const framing = (0, impostor_1.impostorFraming)(model.bounds);
310
- const captureGlb = await (0, levelGlb_1.writeLevelGlb)(model, model.groups, cache, { mode: 'capture', textures: levelGlb_1.LOD1_TEXTURES });
311
329
  const shading = options.shading ?? impostor_1.IMPOSTOR_SHADING;
312
- progress('capturing impostor (64 views)');
330
+ // Card truth (gbuffer/1 only): glass, a mirror or thin emissive parts have no truthful card. The material half is decided before the capture (no browser needed, and the capture is
331
+ // skipped when the card is dropped); the thin-emissive half needs the capture. A card is dropped only when a mesh is guaranteed to draw instead (`meshGuarantee`).
332
+ const cardMode = shading === gbuffer_1.GBUFFER_SHADING ? options.cardTruth : undefined;
333
+ const diagonal = Math.hypot(...[0, 1, 2].map(axis => model.bounds.max[axis] - model.bounds.min[axis]));
334
+ let census = null, verdict = null, cardSuppressed = false, meshKind = 'none';
335
+ const cardNotes = [];
336
+ const guarantee = meshGuarantee(emitted.map(level => level.simplified.maxErrorM), diagonal, model.triangles);
337
+ if (cardMode) {
338
+ census = await (0, cardTruth_1.cardCensus)(model, cache);
339
+ verdict = (0, cardTruth_1.materialVerdict)(census);
340
+ meshKind = guarantee;
341
+ }
342
+ /** Drops the card for `reasons`, and the levels that cannot draw when the item's own model is the guaranteed mesh. */
343
+ const dropCard = (reasons) => {
344
+ cardSuppressed = true;
345
+ cardNotes.push(...reasons.map(reason => `no card: ${reason}`));
346
+ if (meshKind === 'own-model') {
347
+ for (const level of emitted.splice(0, emitted.length)) {
348
+ const reason = `LOD${level.lod} dropped: its measured error is over ${percent(exports.ITEM_LOD_FAITHFUL_ERROR_RATIO)} of the bounds diagonal, so the ${model.triangles} triangle model itself draws instead`;
349
+ omitted.push({ lod: level.lod, reason, triangles: level.simplified.triangles, bytes: level.written.bytes.length });
350
+ progress(reason);
351
+ }
352
+ }
353
+ };
354
+ if (cardMode === 'apply' && verdict?.suppress) {
355
+ if (meshKind !== 'none')
356
+ dropCard(verdict.reasons);
357
+ else
358
+ cardNotes.push(`card kept: ${verdict.reasons.join('; ')}, but no level passes the runtime's ${percent(exports.ITEM_LOD_LEVEL_ERROR_RATIO)} error rule and the model has ${model.triangles} triangles (over ${exports.ITEM_LOD_OWN_MODEL_MAX_TRIANGLES}), so no mesh can draw instead`);
359
+ }
360
+ const captureGlb = await (0, levelGlb_1.writeLevelGlb)(model, model.groups, cache, { mode: 'capture', textures: levelGlb_1.LOD1_TEXTURES });
313
361
  // One impostor, as one or three KTX2 maps: the colour (or albedo) map is the artifact's `impostor.object`; a gbuffer/1 impostor adds its surface map and,
314
362
  // when the item glows or has a clear coat, an emissive map. Every map is an `ItemLodObject` with its own role.
315
- let atlas, impostorBytes, maps = null, preview;
316
- if (shading === gbuffer_1.GBUFFER_SHADING) {
317
- const passes = await (options.captureGBuffer ?? gbuffer_1.captureGBufferPasses)(captureGlb.bytes, framing, impostor_1.IMPOSTOR_SIZE);
318
- const packed = (0, gbuffer_1.packGBuffer)(passes, impostor_1.IMPOSTOR_SIZE), encoded = await (0, gbuffer_1.encodeGBufferAtlases)(packed, impostor_1.IMPOSTOR_SIZE);
319
- atlas = packed.albedo;
320
- impostorBytes = encoded.albedo;
321
- maps = { surface: encoded.surface, emissive: encoded.emissive, clearcoat: packed.clearcoat };
322
- const images = await (0, gbuffer_1.gbufferPreviewPng)(packed, impostor_1.IMPOSTOR_SIZE);
323
- preview = [{ name: 'impostor.png', bytes: images.albedo }, { name: 'impostor-surface.png', bytes: images.surface }];
324
- }
325
- else {
326
- atlas = await (options.captureAtlas ?? impostor_1.captureImpostorAtlas)(captureGlb.bytes, framing, impostor_1.IMPOSTOR_SIZE, shading);
327
- impostorBytes = await (0, impostor_1.encodeImpostorAtlas)(atlas);
328
- preview = [{ name: 'impostor.png', bytes: await (0, impostor_1.impostorPreviewPng)(atlas) }];
363
+ let atlas = null, impostorBytes = new Uint8Array(0), maps = null, preview = [];
364
+ if (!cardSuppressed) {
365
+ progress('capturing impostor (64 views)');
366
+ if (shading === gbuffer_1.GBUFFER_SHADING) {
367
+ const passes = await (options.captureGBuffer ?? gbuffer_1.captureGBufferPasses)(captureGlb.bytes, framing, impostor_1.IMPOSTOR_SIZE);
368
+ if (cardMode && verdict) {
369
+ verdict = (0, cardTruth_1.withThinEmissive)(verdict, (0, cardTruth_1.thinEmissiveTexels)(passes));
370
+ if (cardMode === 'apply' && verdict.suppress && meshKind !== 'none') {
371
+ const thinOnly = verdict.reasons.filter(reason => reason.startsWith('thin emissive'));
372
+ dropCard(thinOnly);
373
+ }
374
+ else if (cardMode === 'apply' && verdict.suppress && !cardNotes.length) {
375
+ cardNotes.push(`card kept: ${verdict.reasons.join('; ')}, but no mesh is guaranteed to draw instead`);
376
+ }
377
+ }
378
+ const packed = (0, gbuffer_1.packGBuffer)(passes, impostor_1.IMPOSTOR_SIZE), encoded = await (0, gbuffer_1.encodeGBufferAtlases)(packed, impostor_1.IMPOSTOR_SIZE);
379
+ atlas = packed.albedo;
380
+ impostorBytes = encoded.albedo;
381
+ maps = { surface: encoded.surface, emissive: encoded.emissive, clearcoat: packed.clearcoat };
382
+ const images = await (0, gbuffer_1.gbufferPreviewPng)(packed, impostor_1.IMPOSTOR_SIZE);
383
+ preview = [{ name: 'impostor.png', bytes: images.albedo }, { name: 'impostor-surface.png', bytes: images.surface }];
384
+ }
385
+ else {
386
+ atlas = await (options.captureAtlas ?? impostor_1.captureImpostorAtlas)(captureGlb.bytes, framing, impostor_1.IMPOSTOR_SIZE, shading);
387
+ impostorBytes = await (0, impostor_1.encodeImpostorAtlas)(atlas);
388
+ preview = [{ name: 'impostor.png', bytes: await (0, impostor_1.impostorPreviewPng)(atlas) }];
389
+ }
329
390
  }
330
391
  const mapBytes = (maps?.surface.length ?? 0) + (maps?.emissive?.length ?? 0), totalImpostorBytes = impostorBytes.length + mapBytes;
331
- progress(`impostor encoded (${totalImpostorBytes} bytes${maps ? ` in ${maps.emissive ? 3 : 2} maps` : ''})`);
392
+ if (atlas)
393
+ progress(`impostor encoded (${totalImpostorBytes} bytes${maps ? ` in ${maps.emissive ? 3 : 2} maps` : ''})`);
332
394
  // An impostor that is not smaller than the model it stands in for costs more to fetch than the model: leave it out. A gbuffer/1 impostor weighs three maps
333
395
  // and a tiny item's own model is cheaper to draw than a billboard is to fetch, so it is left out only for an item that is both tiny and at least
334
396
  // GBUFFER_BYTES_SLACK times its source in bytes; anything over GBUFFER_MIN_TRIANGLES keeps it whatever it weighs (its far placements are two triangles each).
335
- const impostorOmitted = shading === gbuffer_1.GBUFFER_SHADING
397
+ const impostorOmitted = cardSuppressed || (shading === gbuffer_1.GBUFFER_SHADING
336
398
  ? model.triangles <= gbuffer_1.GBUFFER_MIN_TRIANGLES && totalImpostorBytes >= gbuffer_1.GBUFFER_BYTES_SLACK * glb.length
337
- : impostorBytes.length >= glb.length;
338
- if (impostorOmitted) {
399
+ : impostorBytes.length >= glb.length);
400
+ if (cardSuppressed) {
401
+ progress(cardNotes.join('; '));
402
+ impostorNotes.push(...cardNotes);
403
+ }
404
+ else if (impostorOmitted) {
339
405
  const reason = shading === gbuffer_1.GBUFFER_SHADING
340
406
  ? `impostor omitted: ${model.triangles} triangles is at most ${gbuffer_1.GBUFFER_MIN_TRIANGLES} and its maps are ${totalImpostorBytes} bytes, at least ${gbuffer_1.GBUFFER_BYTES_SLACK} times the source model (${glb.length} bytes)`
341
407
  : `impostor omitted: its atlas is ${impostorBytes.length} bytes, not smaller than the source model (${glb.length} bytes)`;
342
408
  progress(reason);
343
409
  impostorNotes.push(reason);
410
+ if (cardNotes.length)
411
+ impostorNotes.push(...cardNotes);
344
412
  }
413
+ else if (cardNotes.length)
414
+ impostorNotes.push(...cardNotes);
345
415
  const impostorObjects = impostorOmitted ? [] : [
346
416
  { cid: (0, helix_manifest_1.cidFromBytes)(impostorBytes), bytes: impostorBytes, mediaType: 'image/ktx2', role: 'impostor' },
347
417
  ...(maps ? [{ cid: (0, helix_manifest_1.cidFromBytes)(maps.surface), bytes: maps.surface, mediaType: 'image/ktx2', role: 'impostor-surface' }] : []),
@@ -396,11 +466,25 @@ async function compileItemLods(glb, options) {
396
466
  report: {
397
467
  sourceTriangles: model.triangles, sourceBytes: glb.length, materials: model.materials.length, images: model.images.length,
398
468
  extensionsUsed: model.extensionsUsed, profile, lod1: reported(1), lod2: reported(2), omitted,
399
- impostor: { bytes: totalImpostorBytes, coverage: Math.round((0, impostor_1.impostorCoverage)(atlas) * 1e4) / 1e4, shading, ...(maps ? { maps: { surface: maps.surface.length, emissive: maps.emissive?.length ?? null } } : {}), ...(impostorOmitted ? { omitted: true } : {}) }, caps, warnings,
469
+ impostor: { bytes: totalImpostorBytes, coverage: atlas ? Math.round((0, impostor_1.impostorCoverage)(atlas) * 1e4) / 1e4 : 0, shading, ...(maps ? { maps: { surface: maps.surface.length, emissive: maps.emissive?.length ?? null } } : {}), ...(impostorOmitted ? { omitted: true } : {}) }, caps, warnings,
470
+ ...(cardMode && census && verdict ? { cardTruth: { mode: cardMode, suppress: verdict.suppress, suppressed: cardSuppressed, reasons: verdict.reasons, mesh: meshKind, census, thinEmissive: verdict.thinEmissive } } : {}),
400
471
  millis: { total: Date.now() - started },
401
472
  },
402
473
  };
403
474
  }
475
+ /**
476
+ * Which mesh the runtime draws at range when the item has no card, from the measured error of the emitted levels: `'level'` when a level is faithful (error at most 2 percent of the bounds
477
+ * diagonal), else `'own-model'` when the source is small enough (at most 4000 triangles) for the runtime to draw the item itself from a document with no levels, else `'level'` when a level
478
+ * at least passes the runtime's rule (at most 10 percent of the diagonal), else `'none'` (the card must stay). Older engines draw exactly this: with levels they draw a level that passes the
479
+ * 10 percent rule (else the least-wrong one), with no levels and no impostor they draw the source model when it is at most 4000 triangles.
480
+ */
481
+ function meshGuarantee(levelErrors, diagonal, sourceTriangles) {
482
+ if (levelErrors.some(error => error <= exports.ITEM_LOD_FAITHFUL_ERROR_RATIO * diagonal))
483
+ return 'level';
484
+ if (sourceTriangles <= exports.ITEM_LOD_OWN_MODEL_MAX_TRIANGLES)
485
+ return 'own-model';
486
+ return levelErrors.some(error => error <= exports.ITEM_LOD_LEVEL_ERROR_RATIO * diagonal) ? 'level' : 'none';
487
+ }
404
488
  const extensionOf = (object) => (object.mediaType === 'model/gltf-binary' ? 'glb' : 'ktx2');
405
489
  const itemLodObjectPath = (object) => `objects/${object.cid.slice('cid:sha256:'.length)}.${extensionOf(object)}`;
406
490
  exports.itemLodObjectPath = itemLodObjectPath;
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/itemLod/artifact.ts"],"names":[],"mappings":";;;AAoNA,4CA0BC;AAOD,0DA6EC;AAqCD,8CAUC;AAGD,0CA4JC;AAMD,gDAaC;AAniBD,+CAAoD;AACpD,yCAA0C;AAC1C,mEAAkF;AAClF,yCAAgP;AAChP,uCAAgO;AAChO,mCAA6C;AAC7C,iCAAwC;AACxC,yCAAgM;AAChM,mCAAwD;AACxD,yCAA+N;AAC/N,qCAAkD;AAClD,yCAAgE;AAEhE,8GAA8G;AAEjG,QAAA,eAAe,GAAG,kBAAkB,CAAC;AAClD;;;;;;;GAOG;AACU,QAAA,iBAAiB,GAAG,YAAY,CAAC;AAC9C;;;;;GAKG;AACU,QAAA,6BAA6B,GAA8C,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AACtJ,QAAA,yBAAyB,GAAG,YAAY,CAAC;AACtD,uEAAuE;AAC1D,QAAA,aAAa,GAAG;IAC3B,iBAAiB,EAAE,oBAAS,CAAC,QAAS;IACtC,eAAe,EAAE,wBAAa,CAAC,OAAO;IACtC,aAAa,EAAE,oBAAS,CAAC,YAAa;IACtC,eAAe,EAAE,wBAAa,CAAC,OAAO;IACtC,kJAAkJ;IAClJ,uBAAuB,EAAE,qCAA0B;IACnD,wBAAwB,EAAE,6BAAkB;IAC5C,wGAAwG;IACxG,YAAY,EAAE,iCAAsB;CAC5B,CAAC;AAEX,MAAM,GAAG,GAAG,2BAA2B,CAAC;AAqKxC,uFAAuF;AACvF,SAAgB,gBAAgB,CAAC,QAAyB;IACxD,MAAM,QAAQ,GAAa,EAAE,EAAE,OAAO,GAAa,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC;IAC/C,wHAAwH;IACxH,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAa,CAAC,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,qBAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,qBAAa,CAAC,iBAAiB,CAAC,CAAC;IACvL,IAAI,KAAK,GAAG,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,SAAS,GAAG,OAAO,EAAE,CAAC;gBAC9B,IAAI,KAAK,CAAC,MAAM;oBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;;oBACtD,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,KAAK,CAAC,SAAS,+BAA+B,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,YAAY,iBAAiB,CAAC,CAAC;YAChK,CAAC;YACD,IAAI,KAAK,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,0BAA0B,KAAK,CAAC,GAAG,oBAAoB,OAAO,EAAE,CAAC,CAAC;YACjI,IAAI,KAAK,CAAC,cAAc,GAAG,qBAAa,CAAC,eAAe;gBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,mBAAmB,KAAK,CAAC,cAAc,YAAY,qBAAa,CAAC,eAAe,EAAE,CAAC,CAAC;QACrK,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,CAAC,SAAS,GAAG,qBAAa,CAAC,aAAa;gBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,KAAK,CAAC,SAAS,oBAAoB,qBAAa,CAAC,aAAa,EAAE,CAAC,CAAC;YAClJ,IAAI,KAAK,CAAC,cAAc,GAAG,qBAAa,CAAC,eAAe;gBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,mBAAmB,KAAK,CAAC,cAAc,YAAY,qBAAa,CAAC,eAAe,EAAE,CAAC,CAAC;QACrK,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,qBAAa,CAAC,YAAY,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,SAAS,gBAAgB,qBAAa,CAAC,YAAY,GAAG,GAAG,uCAAuC,KAAK,GAAG,CAAC,CAAC;QAClO,IAAI,KAAK,CAAC,KAAK,IAAI,UAAU;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,KAAK,CAAC,KAAK,gDAAgD,UAAU,GAAG,CAAC,CAAC;QACrI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;QAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;IACpD,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,wBAAa,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,KAAK,yBAAc,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACtK,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,KAAc,EAAW,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxF,MAAM,OAAO,GAAG,CAAC,KAAc,EAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAK,KAAgB,IAAI,CAAC,CAAC;AACnG,MAAM,MAAM,GAAG,CAAC,KAAc,EAAW,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAExJ,sGAAsG;AACtG,SAAgB,uBAAuB,CAAC,KAAc;IACpD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,KAAwC,CAAC;IACnD,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,4BAA4B,CAAC,EAAE,CAAC;IACjG,IAAI,CAAC,CAAC,MAAM,KAAK,uBAAe;QAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,uBAAe,EAAE,CAAC,CAAC;IACnF,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;QAAE,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACnI,MAAM,CAAC,GAAG,CAAC,CAAC,MAA4C,CAAC;IACzD,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SAC9D,CAAC;QACJ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAChF,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAU;YAAE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAAE,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,2BAA2B,CAAC,CAAC;QAC9J,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC7G,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACvG,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAC/L,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAC3K,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IAC5G,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,UAAU,GAAG,CAAC,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACxN,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,CAAC,CAAC,MAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACjC,MAAM,IAAI,GAAG,UAAU,KAAK,GAAG,CAAC;YAChC,qHAAqH;YACrH,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpE,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,qBAAqB,CAAC,CAAC;iBACjE,CAAC;gBACJ,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,iCAAiC,CAAC,CAAC;gBACtI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,uBAAuB,CAAC,CAAC;YACtE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,mCAAmC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACnJ,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,0CAA0C,CAAC,CAAC;YACpK,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,CAAU;gBAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,kBAAkB,CAAC,CAAC;YACvI,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,kDAAkD,CAAC,CAAC;QAClK,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,CAAC,QAAuD,CAAC;IACpE,qGAAqG;IACrG,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;SAC/C,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;SAC7E,CAAC;QACJ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACnE,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY;YAAE,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACrK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACjI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACrE,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW;YAAE,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC/J,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QAC/K,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QACrH,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,wBAAc;YAAE,MAAM,CAAC,IAAI,CAAC,4BAA4B,wBAAc,gBAAgB,CAAC,CAAC;QACnI,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,CAAC,MAAM,KAAK,wBAAc;gBAAE,MAAM,CAAC,IAAI,CAAC,kCAAkC,wBAAc,SAAS,CAAC,CAAC;YACxG,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;iBAClG,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;gBACpJ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC3B,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,gCAAsB,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,2DAA2D,gCAAsB,uBAAuB,CAAC,CAAC;YAC1R,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YAC5F,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;IAC3B,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;SACtE,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;SACnL,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QAClB,kEAAkE;QAClE,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAU,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAClH,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YACzC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,GAAG,oCAAoC,IAAI,aAAa,CAAC,CAAC;QAChL,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC7H,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAoB,EAAE,CAAC;AACpG,CAAC;AAsBD,MAAM,WAAW,GAAG,CAAC,KAAsB,EAAE,OAAqB,EAAE,IAAY,EAAsB,EAAE,CAAC,CAAC;IACxG,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY;IACpJ,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,YAAY,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa;IACzI,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,QAAQ;IAC9I,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CACnF,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAU,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC;AAI5F;;;GAGG;AACI,KAAK,UAAU,iBAAiB,CAAC,KAAgB,EAAE,UAA2B,EAAE,KAAmB,EAAE,MAAmC,EAAE,UAAkB;IACjK,IAAI,IAAI,GAAmD,IAAI,CAAC;IAChE,gGAAgG;IAChG,MAAM,IAAI,GAAG,MAAM,IAAA,uBAAY,EAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAa,EAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACtH,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC/E,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;YAAE,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1F,CAAC;IACD,OAAO,EAAE,GAAG,IAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACtC,CAAC;AAED,0HAA0H;AACnH,KAAK,UAAU,eAAe,CAAC,GAAe,EAAE,OAA8B;IACnF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,OAAO,GAAmB,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;IAC1D,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAc,MAAM,IAAA,qBAAa,EAAC,GAAG,CAAC,CAAC;IAClD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,IAAA,+BAAsB,EAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,GAAG,KAAK,CAAC,SAAS,eAAe,KAAK,CAAC,MAAM,CAAC,MAAM,eAAe,KAAK,CAAC,MAAM,CAAC,MAAM,YAAY,OAAO,GAAG,CAAC,CAAC;IACvH,MAAM,KAAK,GAAG,IAAI,uBAAY,EAAE,CAAC;IAEjC,wHAAwH;IACxH,uHAAuH;IACvH,4CAA4C;IAC5C,MAAM,OAAO,GAAmB,EAAE,EAAE,OAAO,GAAsB,EAAE,EAAE,aAAa,GAAa,EAAE,CAAC;IAClG,IAAI,cAAc,GAAG,KAAK,CAAC,SAAS,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;IAC9D,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAU,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,uBAAY,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,uBAAY,EAAC,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACvH,MAAM,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC,SAAS,GAAG,cAAc,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnG,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,SAAS,IAAI,UAAU,CAAC,SAAS,GAAG,MAAM,GAAG,uCAA4B,EAAE,CAAC;YACvG,MAAM,MAAM,GAAG,0BAA0B,UAAU,CAAC,SAAS,sCAAsC,OAAO,CAAC,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,sDAAsD,OAAO,CAAC,uCAA4B,CAAC,+CAA+C,CAAC;YACpR,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,UAAU,CAAC,SAAS,GAAG,cAAc,GAAG,CAAC,CAAC,GAAG,qBAAa,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7E,MAAM,MAAM,GAAG,MAAM,GAAG,+BAA+B,OAAO,CAAC,GAAG,CAAC,4CAA4C,cAAc,OAAO,UAAU,CAAC,SAAS,eAAe,OAAO,CAAC,qBAAa,CAAC,YAAY,CAAC,cAAc,CAAC;YACzN,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC7C,6HAA6H;YAC7H,wFAAwF;YACxF,MAAM,MAAM,GAAG,MAAM,GAAG,0CAA0C,UAAU,CAAC,SAAS,+BAA+B,UAAU,CAAC,GAAG,2BAA2B,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,6BAA6B,CAAC;YAC5N,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,OAAsD,CAAC;QAC3D,IAAI,CAAC;YACH,IAAI,UAAU,GAAG,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC;YACrD,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,MAAM,IAAA,qBAAc,EAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxF,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;gBAAC,eAAe,GAAG,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,oDAAoD,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAE,CAAC;YAChQ,CAAC;YACD,OAAO,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,8BAAmB,CAAC,CAAC,CAAC,8BAAmB,EAAE,UAAU,CAAC,CAAC;YACzI,IAAI,eAAe,KAAK,UAAU;gBAAE,UAAU,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;QAC/E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,0BAAkB,CAAC;gBAAE,MAAM,KAAK,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,GAAG,aAAa,KAAK,CAAC,OAAO,EAAE,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,GAAG,kCAAkC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,gDAAgD,UAAU,SAAS,CAAC;YAC1J,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACpG,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAChF,QAAQ,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,eAAe,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,wBAAwB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9H,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC;QAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;IACnF,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,0BAAe,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,IAAA,wBAAa,EAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,wBAAa,EAAE,CAAC,CAAC;IACjH,MAAM,OAAO,GAAoB,OAAO,CAAC,OAAO,IAAI,2BAAgB,CAAC;IACrE,QAAQ,CAAC,+BAA+B,CAAC,CAAC;IAC1C,0JAA0J;IAC1J,+GAA+G;IAC/G,IAAI,KAAiB,EAAE,aAAyB,EAAE,IAAI,GAAoF,IAAI,EAAE,OAAmD,CAAC;IACpM,IAAI,OAAO,KAAK,yBAAe,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,8BAAoB,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,wBAAa,CAAC,CAAC;QAChH,MAAM,MAAM,GAAG,IAAA,qBAAW,EAAC,MAAM,EAAE,wBAAa,CAAC,EAAE,OAAO,GAAG,MAAM,IAAA,8BAAoB,EAAC,MAAM,EAAE,wBAAa,CAAC,CAAC;QAC/G,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;QAAC,IAAI,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QACpJ,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAiB,EAAC,MAAM,EAAE,wBAAa,CAAC,CAAC;QAC9D,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACtH,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,+BAAoB,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,wBAAa,EAAE,OAAO,CAAC,CAAC;QAChH,aAAa,GAAG,MAAM,IAAA,8BAAmB,EAAC,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,IAAA,6BAAkB,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,kBAAkB,GAAG,aAAa,CAAC,MAAM,GAAG,QAAQ,CAAC;IACnI,QAAQ,CAAC,qBAAqB,kBAAkB,SAAS,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7G,2JAA2J;IAC3J,iJAAiJ;IACjJ,8JAA8J;IAC9J,MAAM,eAAe,GAAG,OAAO,KAAK,yBAAe;QACjD,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,+BAAqB,IAAI,kBAAkB,IAAI,6BAAmB,GAAG,GAAG,CAAC,MAAM;QACpG,CAAC,CAAC,aAAa,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;IACvC,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,OAAO,KAAK,yBAAe;YACxC,CAAC,CAAC,qBAAqB,KAAK,CAAC,SAAS,yBAAyB,+BAAqB,qBAAqB,kBAAkB,oBAAoB,6BAAmB,4BAA4B,GAAG,CAAC,MAAM,SAAS;YACjN,CAAC,CAAC,kCAAkC,aAAa,CAAC,MAAM,8CAA8C,GAAG,CAAC,MAAM,SAAS,CAAC;QAC5H,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,eAAe,GAAoB,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,EAAE,GAAG,EAAE,IAAA,6BAAY,EAAC,aAAa,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE;QACrG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAA,6BAAY,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,EAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/I,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAA,6BAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7J,CAAC;IACF,MAAM,OAAO,GAAoB;QAC/B,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAA,6BAAY,EAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3L,GAAG,eAAe;KACnB,CAAC;IACF,MAAM,MAAM,GAAmB,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5D,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,GAAG;QAChJ,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;QAC/I,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxE,CAAC,CAAC,CAAC;IACJ,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC;IAC9D,MAAM,cAAc,GAAsC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAA,+BAAoB,EAAC,wBAAa,EAAE,wBAAa,CAAC,GAAG,QAAQ,EAAE,CAAC;IAC7J,KAAK,MAAM,KAAK,IAAI,OAAO;QAAE,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;IAC7G,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,UAAW,CAAC,CAAC;IACvI,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC;IAC9G,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,kBAAkB,CAAC,EAAE,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC;IAC/K,MAAM,QAAQ,GAAoB;QAChC,MAAM,EAAE,uBAAe;QACvB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO;QACP,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;QACxD,SAAS,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACjF,MAAM;QACN,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,yBAAc,EAAE,IAAI,EAAE,wBAAa,EAAE,MAAM,EAAE,YAAY;YACvJ,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM;YACnG,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,8BAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,GAAG,CAAC,OAAO,KAAK,yBAAe,IAAI,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC;gBACzD,OAAO,EAAE,MAAM,EAAE,wBAAc;gBAC/B,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE;oBAC/E,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,gCAAsB,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;aAC3L,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QACX,cAAc;QACd,QAAQ;KACT,CAAC;IACF,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1G,MAAM,aAAa,GAAG,IAAA,mCAAkB,EAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAC,GAAU,EAA6B,EAAE;QACzD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjF,CAAC,CAAC;IACF,OAAO;QACL,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,IAAA,6BAAY,EAAC,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ;QACpF,MAAM,EAAE;YACN,eAAe,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;YACzH,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO;YAC5F,QAAQ,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAA,2BAAgB,EAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ;YAChR,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE;SACxC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,MAAqB,EAAU,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5G,MAAM,iBAAiB,GAAG,CAAC,MAAqB,EAAU,EAAE,CAAC,WAAW,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;AAAlI,QAAA,iBAAiB,qBAAiH;AAE/I,8HAA8H;AACvH,KAAK,UAAU,kBAAkB,CAAC,SAAiB,EAAE,KAAmB;IAC7E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,KAAK,EAAE,QAAgB,EAAE,KAA0B,EAAE,EAAE;QACjE,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACvC,MAAM,IAAA,gBAAK,EAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,IAAA,oBAAS,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO;QAAE,MAAM,GAAG,CAAC,IAAA,yBAAiB,EAAC,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACvF,MAAM,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAChD,MAAM,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9G,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ;QAAE,MAAM,GAAG,CAAC,YAAY,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3F,OAAO,EAAE,YAAY,EAAE,IAAA,gBAAI,EAAC,SAAS,EAAE,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/itemLod/artifact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import type { GBufferPasses } from './gbuffer';
2
+ import type { ItemModel } from './model';
3
+ import { TextureCache } from './textures';
4
+ /**
5
+ * Where a card (the `gbuffer/1` octahedral impostor) tells the truth, and where it cannot.
6
+ *
7
+ * A card stores one albedo, normal, roughness and metalness per 3.6 cm-ish texel and the scene lights it. Three kinds of item
8
+ * have no truthful card, whatever the engine does with it:
9
+ *
10
+ * - see-through glass or water (alpha BLEND, or transmission, which the reader turns into BLEND): a card is a cutout, so a pane is
11
+ * either solid or stippled, never see-through;
12
+ * - a mirror (an opaque material that is metallic and smooth: `MI_Glass_Opaque_01F` of the Black Frame Glass Wall is metallic 0.949,
13
+ * roughness 0): it looks like the sky it reflects, and a card re-lights a few degrees of normal error into a flat grey panel;
14
+ * - thin emissive parts (a neon tube 1.5 cm wide in a texel 3.6 cm wide): the card holds a coverage of 0.2 to 0.4 and never a solid
15
+ * line, so the glowing area is a third too small and dim.
16
+ *
17
+ * For those items the far representation is a mesh. `compileItemLods({ cardTruth: true })` leaves the impostor out (`impostor: null`)
18
+ * with the reason in `warnings`, but only when a mesh is guaranteed (see `meshGuarantee` in artifact.ts): the document format does
19
+ * not change, so every engine that reads an item-lod document already draws a document with no impostor.
20
+ *
21
+ * The census is by SURFACE AREA: the sum of triangle areas of the material over the sum of every triangle (double-sided counts once).
22
+ * It is sampled, never exhaustive: at most `MAX_SAMPLES_PER_MATERIAL` triangles per material, spread evenly, each standing for the
23
+ * triangles around it. Texture-driven values (alpha, metallic-roughness, emissive) are read from the triangle's centroid UV.
24
+ *
25
+ * The thresholds come from the census of the 1,091 distinct models behind the 1,167 public item-lod versions on helix3 (2026-10-13,
26
+ * `scripts/item-lod-card-census.mjs`, `item-lod-thin-emissive.mjs`): each sits in a gap of the real distribution, not on a guess.
27
+ * - glass: 15 items at 0.21 to 1.00 of area; the next is 0.12 (a Lamborghini and a McLaren, whose windows are not what makes their card wrong), then 0.09.
28
+ * - mirror: 3 items at 0.33 to 0.88 (a chrome coffee machine, the glass wall, a chrome statue); the next are 0.25 and 0.21, glossy car paint and chrome trim on cars.
29
+ * - thin emissive: 3 items at 0.78 to 0.98 of their glowing texels thin (the neon figure sign and two glass lamps); the next is 0.32, a table lamp.
30
+ */
31
+ export declare const CARD_TRUTH: {
32
+ /** A BLEND or transmission material that is really translucent (0.03 < alpha < 0.9) covering at least this share of the area. */
33
+ readonly glassShare: 0.15;
34
+ /** An opaque material that is a mirror covering at least this share of the area. */
35
+ readonly mirrorShare: 0.3;
36
+ readonly mirrorMetallic: 0.9;
37
+ readonly mirrorRoughness: 0.1;
38
+ /** An alpha under this is invisible (not glass), at or over `glassAlphaMax` it is a solid with a BLEND flag (not glass either). */
39
+ readonly glassAlphaMin: 0.03;
40
+ readonly glassAlphaMax: 0.9;
41
+ /**
42
+ * Thin emissive (read from the capture, so it needs a capture): of the covered texels that glow, the ones with a coverage under
43
+ * `thinCoverage` outnumber the ones at or over it, AND the glowing texels are at least `emissiveShare` of every covered texel
44
+ * (a lamp post with one glowing lens is not a neon sign).
45
+ */
46
+ readonly thinCoverage: 0.5;
47
+ readonly emissiveShare: 0.01;
48
+ };
49
+ export interface CardCensus {
50
+ /** Total surface area in square metres. */
51
+ area: number;
52
+ /** Share of the area that is translucent BLEND / transmission material, 0..1. */
53
+ glass: number;
54
+ /** Share of the area that is a mirror, 0..1. */
55
+ mirror: number;
56
+ /** Share of the area whose material glows (reported for the census; the thin-emissive rule itself reads the capture). */
57
+ emissive: number;
58
+ /** The materials that carry the glass and mirror shares, largest first, for the warning text. */
59
+ glassMaterials: string[];
60
+ mirrorMaterials: string[];
61
+ }
62
+ /** The area-weighted material census of a model (see the file comment). Deterministic: no randomness, fixed stride. */
63
+ export declare function cardCensus(model: ItemModel, cache?: TextureCache): Promise<CardCensus>;
64
+ export interface ThinEmissive {
65
+ /** Covered texels (coverage > 0) over every view. */
66
+ covered: number;
67
+ /** Covered texels that glow. */
68
+ glowing: number;
69
+ /** Glowing texels whose coverage is under `thinCoverage`: a tube narrower than a texel. */
70
+ thin: number;
71
+ }
72
+ /**
73
+ * Thin emissive parts from the capture. A texel glows when its emissive radiance reaches the same floor the emissive map uses (6 of 765);
74
+ * the capture's alpha is the texel's coverage (the supersampled share the item fills), so a 1.5 cm tube in a 3.6 cm texel reads 0.2 to 0.4.
75
+ */
76
+ export declare function thinEmissiveTexels(passes: GBufferPasses): ThinEmissive;
77
+ export interface CardVerdict {
78
+ /** True when the item should have no card. */
79
+ suppress: boolean;
80
+ /** One entry per rule that fired, in warning wording ("mirror 0.71 of area (MI_Glass_Opaque_01F)"). */
81
+ reasons: string[];
82
+ glass: number;
83
+ mirror: number;
84
+ thinEmissive: {
85
+ covered: number;
86
+ glowing: number;
87
+ thin: number;
88
+ } | null;
89
+ }
90
+ /** The geometry-and-material half of the verdict: glass and mirror. No capture needed. */
91
+ export declare function materialVerdict(census: CardCensus): CardVerdict;
92
+ /** Adds the thin-emissive rule once a capture exists. */
93
+ export declare function withThinEmissive(verdict: CardVerdict, thin: ThinEmissive): CardVerdict;