@aardworx/wombat.rendering 0.8.0 → 0.9.0

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 (136) hide show
  1. package/dist/core/command.d.ts +7 -9
  2. package/dist/core/command.d.ts.map +1 -1
  3. package/dist/core/renderTask.d.ts +64 -1
  4. package/dist/core/renderTask.d.ts.map +1 -1
  5. package/dist/core/renderTask.js +3 -1
  6. package/dist/core/renderTask.js.map +1 -1
  7. package/dist/resources/preparedRenderObject.js +3 -3
  8. package/dist/resources/preparedRenderObject.js.map +1 -1
  9. package/dist/resources/uniformBuffer.d.ts.map +1 -1
  10. package/dist/resources/uniformBuffer.js +17 -0
  11. package/dist/resources/uniformBuffer.js.map +1 -1
  12. package/dist/runtime/derivedUniforms/dispatch.d.ts +105 -0
  13. package/dist/runtime/derivedUniforms/dispatch.d.ts.map +1 -0
  14. package/dist/runtime/derivedUniforms/dispatch.js +355 -0
  15. package/dist/runtime/derivedUniforms/dispatch.js.map +1 -0
  16. package/dist/runtime/derivedUniforms/index.d.ts +6 -0
  17. package/dist/runtime/derivedUniforms/index.d.ts.map +1 -0
  18. package/dist/runtime/derivedUniforms/index.js +26 -0
  19. package/dist/runtime/derivedUniforms/index.js.map +1 -0
  20. package/dist/runtime/derivedUniforms/recipes.d.ts +42 -0
  21. package/dist/runtime/derivedUniforms/recipes.d.ts.map +1 -0
  22. package/dist/runtime/derivedUniforms/recipes.js +134 -0
  23. package/dist/runtime/derivedUniforms/recipes.js.map +1 -0
  24. package/dist/runtime/derivedUniforms/sceneIntegration.d.ts +56 -0
  25. package/dist/runtime/derivedUniforms/sceneIntegration.d.ts.map +1 -0
  26. package/dist/runtime/derivedUniforms/sceneIntegration.js +171 -0
  27. package/dist/runtime/derivedUniforms/sceneIntegration.js.map +1 -0
  28. package/dist/runtime/derivedUniforms/slotId.d.ts +15 -0
  29. package/dist/runtime/derivedUniforms/slotId.d.ts.map +1 -0
  30. package/dist/runtime/derivedUniforms/slotId.js +30 -0
  31. package/dist/runtime/derivedUniforms/slotId.js.map +1 -0
  32. package/dist/runtime/derivedUniforms/slots.d.ts +49 -0
  33. package/dist/runtime/derivedUniforms/slots.d.ts.map +1 -0
  34. package/dist/runtime/derivedUniforms/slots.js +123 -0
  35. package/dist/runtime/derivedUniforms/slots.js.map +1 -0
  36. package/dist/runtime/derivedUniforms/uberKernel.wgsl.d.ts +13 -0
  37. package/dist/runtime/derivedUniforms/uberKernel.wgsl.d.ts.map +1 -0
  38. package/dist/runtime/derivedUniforms/uberKernel.wgsl.js +218 -0
  39. package/dist/runtime/derivedUniforms/uberKernel.wgsl.js.map +1 -0
  40. package/dist/runtime/flattenTree.d.ts +5 -0
  41. package/dist/runtime/flattenTree.d.ts.map +1 -0
  42. package/dist/runtime/flattenTree.js +45 -0
  43. package/dist/runtime/flattenTree.js.map +1 -0
  44. package/dist/runtime/heapAdapter.d.ts +16 -0
  45. package/dist/runtime/heapAdapter.d.ts.map +1 -0
  46. package/dist/runtime/heapAdapter.js +263 -0
  47. package/dist/runtime/heapAdapter.js.map +1 -0
  48. package/dist/runtime/heapEffect.d.ts +235 -0
  49. package/dist/runtime/heapEffect.d.ts.map +1 -0
  50. package/dist/runtime/heapEffect.js +518 -0
  51. package/dist/runtime/heapEffect.js.map +1 -0
  52. package/dist/runtime/heapEffectIR.d.ts +34 -0
  53. package/dist/runtime/heapEffectIR.d.ts.map +1 -0
  54. package/dist/runtime/heapEffectIR.js +1161 -0
  55. package/dist/runtime/heapEffectIR.js.map +1 -0
  56. package/dist/runtime/heapEligibility.d.ts +9 -0
  57. package/dist/runtime/heapEligibility.d.ts.map +1 -0
  58. package/dist/runtime/heapEligibility.js +195 -0
  59. package/dist/runtime/heapEligibility.js.map +1 -0
  60. package/dist/runtime/heapScene.d.ts +240 -31
  61. package/dist/runtime/heapScene.d.ts.map +1 -1
  62. package/dist/runtime/heapScene.js +3334 -265
  63. package/dist/runtime/heapScene.js.map +1 -1
  64. package/dist/runtime/heapShaderFamily.d.ts +132 -0
  65. package/dist/runtime/heapShaderFamily.d.ts.map +1 -0
  66. package/dist/runtime/heapShaderFamily.js +866 -0
  67. package/dist/runtime/heapShaderFamily.js.map +1 -0
  68. package/dist/runtime/hybridScene.d.ts +133 -0
  69. package/dist/runtime/hybridScene.d.ts.map +1 -0
  70. package/dist/runtime/hybridScene.js +159 -0
  71. package/dist/runtime/hybridScene.js.map +1 -0
  72. package/dist/runtime/index.d.ts +8 -0
  73. package/dist/runtime/index.d.ts.map +1 -1
  74. package/dist/runtime/index.js +9 -0
  75. package/dist/runtime/index.js.map +1 -1
  76. package/dist/runtime/renderTask.d.ts +21 -4
  77. package/dist/runtime/renderTask.d.ts.map +1 -1
  78. package/dist/runtime/renderTask.js +127 -32
  79. package/dist/runtime/renderTask.js.map +1 -1
  80. package/dist/runtime/runtime.d.ts +33 -3
  81. package/dist/runtime/runtime.d.ts.map +1 -1
  82. package/dist/runtime/runtime.js +12 -3
  83. package/dist/runtime/runtime.js.map +1 -1
  84. package/dist/runtime/scenePass.d.ts +28 -3
  85. package/dist/runtime/scenePass.d.ts.map +1 -1
  86. package/dist/runtime/scenePass.js +37 -4
  87. package/dist/runtime/scenePass.js.map +1 -1
  88. package/dist/runtime/textureAtlas/atlasMipGutterKernel.d.ts +35 -0
  89. package/dist/runtime/textureAtlas/atlasMipGutterKernel.d.ts.map +1 -0
  90. package/dist/runtime/textureAtlas/atlasMipGutterKernel.js +247 -0
  91. package/dist/runtime/textureAtlas/atlasMipGutterKernel.js.map +1 -0
  92. package/dist/runtime/textureAtlas/atlasPool.d.ts +240 -0
  93. package/dist/runtime/textureAtlas/atlasPool.d.ts.map +1 -0
  94. package/dist/runtime/textureAtlas/atlasPool.js +798 -0
  95. package/dist/runtime/textureAtlas/atlasPool.js.map +1 -0
  96. package/dist/runtime/textureAtlas/bvhTree2d.d.ts +33 -0
  97. package/dist/runtime/textureAtlas/bvhTree2d.d.ts.map +1 -0
  98. package/dist/runtime/textureAtlas/bvhTree2d.js +501 -0
  99. package/dist/runtime/textureAtlas/bvhTree2d.js.map +1 -0
  100. package/dist/runtime/textureAtlas/packer.d.ts +50 -0
  101. package/dist/runtime/textureAtlas/packer.d.ts.map +1 -0
  102. package/dist/runtime/textureAtlas/packer.js +390 -0
  103. package/dist/runtime/textureAtlas/packer.js.map +1 -0
  104. package/dist/window/loop.d.ts +14 -0
  105. package/dist/window/loop.d.ts.map +1 -1
  106. package/dist/window/loop.js +18 -5
  107. package/dist/window/loop.js.map +1 -1
  108. package/package.json +5 -4
  109. package/src/core/command.ts +9 -9
  110. package/src/core/renderTask.ts +55 -2
  111. package/src/resources/preparedRenderObject.ts +3 -3
  112. package/src/resources/uniformBuffer.ts +15 -0
  113. package/src/runtime/derivedUniforms/dispatch.ts +407 -0
  114. package/src/runtime/derivedUniforms/index.ts +52 -0
  115. package/src/runtime/derivedUniforms/recipes.ts +159 -0
  116. package/src/runtime/derivedUniforms/sceneIntegration.ts +239 -0
  117. package/src/runtime/derivedUniforms/slotId.ts +35 -0
  118. package/src/runtime/derivedUniforms/slots.ts +155 -0
  119. package/src/runtime/derivedUniforms/uberKernel.wgsl.ts +220 -0
  120. package/src/runtime/flattenTree.ts +46 -0
  121. package/src/runtime/heapAdapter.ts +314 -0
  122. package/src/runtime/heapEffect.ts +719 -0
  123. package/src/runtime/heapEffectIR.ts +1211 -0
  124. package/src/runtime/heapEligibility.ts +189 -0
  125. package/src/runtime/heapScene.ts +3981 -349
  126. package/src/runtime/heapShaderFamily.ts +1102 -0
  127. package/src/runtime/hybridScene.ts +310 -0
  128. package/src/runtime/index.ts +46 -0
  129. package/src/runtime/renderTask.ts +167 -32
  130. package/src/runtime/runtime.ts +37 -4
  131. package/src/runtime/scenePass.ts +39 -4
  132. package/src/runtime/textureAtlas/atlasMipGutterKernel.ts +291 -0
  133. package/src/runtime/textureAtlas/atlasPool.ts +991 -0
  134. package/src/runtime/textureAtlas/bvhTree2d.ts +530 -0
  135. package/src/runtime/textureAtlas/packer.ts +429 -0
  136. package/src/window/loop.ts +32 -6
@@ -0,0 +1,235 @@
1
+ import type { Effect } from "@aardworx/wombat.shader";
2
+ export interface HeapEffectInput {
3
+ readonly name: string;
4
+ readonly wgslType: string;
5
+ readonly byteSize: number;
6
+ readonly location?: number;
7
+ }
8
+ /**
9
+ * One field of the VS-output / FS-input inter-stage struct ("VsOut"
10
+ * conventionally). Drives the per-effect VsOut struct generated into
11
+ * the prelude — no hardcoded clipPos/worldPos/etc. The runtime stays
12
+ * agnostic to varying names, just like uniforms.
13
+ */
14
+ export interface HeapVarying {
15
+ readonly name: string;
16
+ readonly wgslType: string;
17
+ readonly location?: number;
18
+ readonly builtin?: string;
19
+ readonly interpolation?: "smooth" | "flat" | "centroid" | "sample" | "no-perspective";
20
+ }
21
+ /** One texture binding the effect declares (post link + DCE). */
22
+ export interface HeapTextureBinding {
23
+ readonly name: string;
24
+ /** WGSL type expression, e.g. "texture_2d<f32>", "texture_cube<f32>". */
25
+ readonly wgslType: string;
26
+ }
27
+ /** One sampler binding the effect declares (post link + DCE). */
28
+ export interface HeapSamplerBinding {
29
+ readonly name: string;
30
+ /** WGSL type — "sampler" or "sampler_comparison". */
31
+ readonly wgslType: string;
32
+ }
33
+ export interface HeapEffectSchema {
34
+ readonly attributes: readonly HeapEffectInput[];
35
+ readonly uniforms: readonly HeapEffectInput[];
36
+ readonly varyings: readonly HeapVarying[];
37
+ readonly fragmentOutputs: readonly {
38
+ readonly name: string;
39
+ readonly location: number;
40
+ readonly wgslType: string;
41
+ }[];
42
+ readonly textures: readonly HeapTextureBinding[];
43
+ readonly samplers: readonly HeapSamplerBinding[];
44
+ }
45
+ export interface CompiledHeapEffect {
46
+ readonly rawVs: string;
47
+ readonly rawFs: string;
48
+ readonly schema: HeapEffectSchema;
49
+ }
50
+ /**
51
+ * Maps fragment-output names to framebuffer locations. Outputs not
52
+ * in the map are pruned by `linkFragmentOutputs`, which cascades
53
+ * through `pruneCrossStage` / `reduceUniforms` — uniforms that only
54
+ * fed the dropped outputs vanish from the schema entirely.
55
+ */
56
+ export interface FragmentOutputLayout {
57
+ readonly locations: ReadonlyMap<string, number>;
58
+ }
59
+ export declare function compileHeapEffect(effect: Effect, fragmentOutputLayout?: FragmentOutputLayout): CompiledHeapEffect;
60
+ export interface DrawHeaderField {
61
+ readonly name: string;
62
+ readonly wgslName: string;
63
+ readonly wgslType: string;
64
+ readonly byteOffset: number;
65
+ readonly byteSize: number;
66
+ readonly kind: "uniform-ref" | "attribute-ref" | "texture-ref";
67
+ /**
68
+ * For `uniform-ref`: the uniform's underlying WGSL type. The
69
+ * rewriter uses this to pick the right inline read expression
70
+ * (mat4x4 → 4 vec4 reads, vec3 → 3 f32 reads, etc.).
71
+ */
72
+ readonly uniformWgslType?: string;
73
+ /**
74
+ * For `attribute-ref`: the attribute's declared WGSL type. Drives
75
+ * the inline `attributeLoadExpr` when generating preamble lets.
76
+ */
77
+ readonly attributeWgslType?: string;
78
+ /**
79
+ * For `texture-ref`: which sub-entry this is. Atlas-variant texture
80
+ * bindings expand into four contiguous drawHeader entries —
81
+ * `pageRef` (u32 slot index), `formatBits` (u32 packed sampler
82
+ * state + mip + format), `origin` (vec2<f32>, mip-0 top-left in
83
+ * normalized atlas coords), `size` (vec2<f32>, mip-0 size). The
84
+ * runtime packs these as inline values (not pool refs); the
85
+ * shader pass that consumes them lands in a follow-up PR.
86
+ */
87
+ readonly textureSub?: "pageRef" | "formatBits" | "origin" | "size";
88
+ /** For `texture-ref`: the schema's logical texture binding name (shared by all four sub-entries). */
89
+ readonly textureBindingName?: string;
90
+ }
91
+ export interface BucketLayout {
92
+ readonly drawHeaderFields: readonly DrawHeaderField[];
93
+ readonly drawHeaderBytes: number;
94
+ /** Generated WGSL prelude — bindings + per-effect VsOut struct. No helper fns, no DrawHeader struct. */
95
+ readonly preludeWgsl: string;
96
+ /** DrawHeader stride in u32 elements (drawHeaderBytes / 4). */
97
+ readonly strideU32: number;
98
+ /**
99
+ * Names (schema-side) of uniforms that vary per instance. Populated
100
+ * from `spec.instances.values` at addDraw time; the rewriter pulls
101
+ * these via `instanceLoadExpr` instead of `uniformLoadExpr`.
102
+ */
103
+ readonly perInstanceUniforms: ReadonlySet<string>;
104
+ /**
105
+ * Names (schema-side) of attributes that vary per instance. Populated
106
+ * from `spec.instanceAttributes` at addDraw time. The rewriter
107
+ * indexes per-instance attribute reads by `iidx` (= `instance_index`
108
+ * the megacall path) instead of `vid`.
109
+ */
110
+ readonly perInstanceAttributes: ReadonlySet<string>;
111
+ /**
112
+ * Texture bindings: name + WGSL type + bind-group binding number
113
+ * (allocated starting at TEX_BINDING_START, after the four heap-
114
+ * data bindings 0–3 and the three megacall bindings 4–6).
115
+ */
116
+ readonly textureBindings: readonly {
117
+ readonly name: string;
118
+ readonly wgslType: string;
119
+ readonly binding: number;
120
+ }[];
121
+ /** Sampler bindings, allocated after textures. */
122
+ readonly samplerBindings: readonly {
123
+ readonly name: string;
124
+ readonly wgslType: string;
125
+ readonly binding: number;
126
+ }[];
127
+ /**
128
+ * Atlas-routed texture binding names, exposed for the FS rewriter so
129
+ * it can substitute `textureSample(name, smp, uv)` with the heap
130
+ * `atlasSample(...)` helper for these names only.
131
+ */
132
+ readonly atlasTextureBindings: ReadonlySet<string>;
133
+ }
134
+ /**
135
+ * First texture binding number; samplers come after the textures.
136
+ * Bindings 0–3 are the four heap arena views, 4–6 are megacall
137
+ * (drawTable, indexStorage, firstDrawInTile).
138
+ */
139
+ export declare const HEAP_TEX_BINDING_START = 7;
140
+ /**
141
+ * Number of independent pages per format. Drives both the BGL slot
142
+ * count (N consecutive linear bindings + N consecutive srgb bindings
143
+ * + 1 sampler) and the shader's `switch pageRef` ladder. Must match
144
+ * `ATLAS_MAX_PAGES_PER_FORMAT` in `textureAtlas/atlasPool.ts`.
145
+ */
146
+ export declare const ATLAS_ARRAY_SIZE = 8;
147
+ /** First atlas binding (linear texture for page 0). */
148
+ export declare const ATLAS_LINEAR_BINDING_BASE = 11;
149
+ /** First srgb atlas binding (= linear base + N). */
150
+ export declare const ATLAS_SRGB_BINDING_BASE: number;
151
+ /** Atlas sampler binding (= linear base + 2N). */
152
+ export declare const ATLAS_SAMPLER_BINDING: number;
153
+ export declare function buildBucketLayout(schema: HeapEffectSchema, _hasTextures: boolean, opts?: {
154
+ perInstanceUniforms?: ReadonlySet<string>;
155
+ perInstanceAttributes?: ReadonlySet<string>;
156
+ /**
157
+ * Names of schema texture bindings routed via the atlas binding-array
158
+ * path. Each such binding is dropped from `textureBindings` /
159
+ * `samplerBindings` and replaced with four `texture-ref` drawHeader
160
+ * fields (pageRef / formatBits / origin / size). Pass an empty set
161
+ * (default) for the standalone texture path.
162
+ */
163
+ atlasTextureBindings?: ReadonlySet<string>;
164
+ }): BucketLayout;
165
+ /**
166
+ * Atlas prelude: declares N independent `texture_2d<f32>` bindings
167
+ * per format (linear + srgb), plus a shared atlas sampler. The N-way
168
+ * `switch pageRef` ladder picks the matching texture pair for each
169
+ * draw. Each atlas page is its own `GPUTexture` — adding pages to a
170
+ * format is just a fresh allocation slotted into the next BGL entry,
171
+ * no GPU-side `copyTextureToTexture` required.
172
+ *
173
+ * `binding_array<texture_2d<f32>, N>` would collapse the switch into
174
+ * a runtime index but requires Chrome's experimental bindless
175
+ * feature; the N-consecutive-bindings + switch pattern is native
176
+ * WebGPU 1.0.
177
+ *
178
+ * Mip filtering is software (the GPU's mip walk would walk the
179
+ * texture's mip chain, not our embedded Iliffe pyramid). LOD is
180
+ * computed from screen-space derivatives of `uv * size_px` in mip-0
181
+ * texels-per-screen-pixel.
182
+ *
183
+ * Sample math (verified by `tests-browser/atlas-sampling-conformance.test.ts`
184
+ * to match native hardware bilinear within 1 LSB across clamp/repeat/
185
+ * mirror at any uv):
186
+ * - Clamp: atlas_p = origin_px + clamp(uv, 0, 1) * size_px
187
+ * - Mirror: atlas_p = origin_px + mirrorUv(uv) * size_px
188
+ * - Repeat: atlas_p = origin_px + fract(uv) * size_px, then shift ∓1
189
+ * if within 0.5 atlas-pixel of the sub-rect edge, so
190
+ * hardware bilinear straddles the outer wrap-gutter ring.
191
+ * `origin_px` / `size_px` are atlas-pixel coordinates of mip-0, NOT
192
+ * normalized. Mip-k rect is computed by walking the integer floor-
193
+ * halving sequence that matches the CPU packer's pyramid layout.
194
+ * Each sub-rect (incl. every mip slot) carries a 2-px gutter (inner
195
+ * ring = clamp-replicate edge, outer ring = wrap = opposite edge)
196
+ * filled by the upload kernel; without it bilinear at the edges
197
+ * bleeds across sub-rect boundaries.
198
+ */
199
+ export declare function generateAtlasPrelude(): string;
200
+ /**
201
+ * Emit `2 * ATLAS_ARRAY_SIZE + 1` binding declarations: N linear
202
+ * `texture_2d<f32>`, N srgb `texture_2d<f32>`, then the shared
203
+ * atlas sampler.
204
+ */
205
+ export declare function generateAtlasBindings(): string;
206
+ /**
207
+ * Emit the `switch pageRef` ladder body for `atlasSampleAtMip`. Each
208
+ * case picks the matching `atlasLinear<i>` / `atlasSrgb<i>` decl and
209
+ * blends on `format == 1u`. The fallback (page out of range) is the
210
+ * function-level `vec4<f32>(0.0)` after the switch.
211
+ */
212
+ export declare function generateAtlasSwitch(): string;
213
+ /** Atlas-texture varying names used by the VS→FS threading + FS preamble. */
214
+ export declare function atlasVaryingNames(name: string): {
215
+ pageRef: string;
216
+ formatBits: string;
217
+ origin: string;
218
+ size: string;
219
+ };
220
+ /**
221
+ * Megacall VS prelude: binary-search `drawTable` (one record per slot,
222
+ * 5 u32s: firstEmit, drawIdx, indexStart, indexCount, instanceCount)
223
+ * for the slot owning the given `emitIdx`, then split the in-record
224
+ * offset into `(instId, vid)` so per-RO instancing collapses to one
225
+ * record + one drawIndirect. Defines:
226
+ * - `heap_drawIdx` — per-RO selector for header reads.
227
+ * - `instId` — instance index in [0, instanceCount-1].
228
+ * - `vid` — vertex index pulled from indexStorage.
229
+ *
230
+ * Layout: each record emits `indexCount * instanceCount` vertices.
231
+ * `local = emitIdx - firstEmit`, `instId = local / indexCount`,
232
+ * `vid = indices[indexStart + local % indexCount]`.
233
+ */
234
+ export declare function megacallSearchPrelude(): string;
235
+ //# sourceMappingURL=heapEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heapEffect.d.ts","sourceRoot":"","sources":["../../src/runtime/heapEffect.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAItD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,gBAAgB,CAAC;CACvF;AAED,iEAAiE;AACjE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,iEAAiE;AACjE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrH,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAClD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,kBAAkB,CAajH;AAwGD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,eAAe,GAAG,aAAa,CAAC;IAC/D;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnE,qGAAqG;IACrG,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,eAAe,EAAE,CAAC;IACtD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,wGAAwG;IACxG,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD;;;;;OAKG;IACH,QAAQ,CAAC,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpD;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpH,kDAAkD;IAClD,QAAQ,CAAC,eAAe,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpH;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACpD;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,uDAAuD;AACvD,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,oDAAoD;AACpD,eAAO,MAAM,uBAAuB,QAA+C,CAAC;AACpF,kDAAkD;AAClD,eAAO,MAAM,qBAAqB,QAAmD,CAAC;AAEtF,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,OAAO,EACrB,IAAI,GAAE;IACJ,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,qBAAqB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACvC,GACL,YAAY,CAmHd;AA6ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAmG7C;AAOD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAU9C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAY5C;AAYD,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAC/C,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CACnE,CAOA;AAGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C"}