@swf2es/render 0.1.18 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,9 @@
1
- import { COLOR_AT, DRAW_AT, POSITION_AT, TEXEL_AT } from "./programs.js";
2
- /** Atlas attributes followed by the packed row: transforms and snapping stay in the shader. */
1
+ import { COLOR_AT, DRAW_AT, MERGED_LINE, MERGED_UNIT, POSITION_AT, TEXEL_AT } from "./programs.js";
2
+ /**
3
+ * Atlas attributes followed by where the draw's packed row is in the rows'
4
+ * texture: transforms and snapping stay in the shader, and a row that
5
+ * changes changes no vertex.
6
+ */
3
7
  const WORDS = 6;
4
8
  /** Bound the extra CPU and GPU storage, falling back to the atlas after it fills. */
5
9
  const VERTICES_MOST = 2 << 20;
@@ -10,11 +14,14 @@ const INDICES_LEAST = 3 << 14;
10
14
  /** Frames over which the most used is watched; room four times that is let go of after them. */
11
15
  const SHRINK_FRAMES = 240;
12
16
  /**
13
- * Small stable geometries merged in painter's order; unchanged streams reuse
14
- * their GPU buffers. Only what changed since the last frame, from the first
15
- * draw that differs to the stream's end, is staged on the CPU and uploaded
16
- * where it lies: the stream before it stays on the GPU alone, and a buffer
17
- * grown keeps it by a copy there.
17
+ * Small geometries merged run by run in painter's order, each run's copy a
18
+ * segment of one stream that any later run of the same geometries draws
19
+ * again, wherever it comes in the frame: its rows are in a texture of its
20
+ * own, written each frame, not in its vertices. Only the segments a frame adds are staged on the
21
+ * CPU, after the stream's top, and uploaded there at once; what is below
22
+ * stays on the GPU alone, and a buffer grown keeps it by a copy there.
23
+ * Segments no run used in a frame are let go of, and their room once the
24
+ * stream is twice what the last frame used, the stream then made anew.
18
25
  */
19
26
  export class FillBatches {
20
27
  gl;
@@ -30,14 +37,36 @@ export class FillBatches {
30
37
  indexCapacity = 0;
31
38
  vertexTop = 0;
32
39
  indexTop = 0;
33
- /** Where this frame's staging starts in the stream: the first draw that differs from the last frame's. */
40
+ /** Where this frame's staging starts in the stream: its top as the frame began. */
34
41
  fromVertex = 0;
35
42
  fromIndex = 0;
36
- previous = [];
37
- previousRows = [];
38
- cursor = 0;
39
- /** Stays dirty if preparation aborts before upload, as an overflowing run table can do. */
40
- changed = false;
43
+ /**
44
+ * The segments' rows, slot by slot (Segment.slot), as their texture holds
45
+ * them, the slots taken, and the range of them this frame changed.
46
+ */
47
+ rowsTexture = null;
48
+ rows = new Int32Array(0);
49
+ rowsLines = 0;
50
+ slotTop = 0;
51
+ slotsMost = 0;
52
+ changedFrom = 0;
53
+ changedTo = 0;
54
+ /** The segments by their first geometry. */
55
+ segments = new Map();
56
+ frame = 0;
57
+ /** What the frame's runs used of the stream, each segment once. */
58
+ liveVertices = 0;
59
+ liveIndices = 0;
60
+ /**
61
+ * The keys of the runs this frame and the last asked for (add's
62
+ * `settled`), so that a run is copied only once it is drawn again.
63
+ */
64
+ seen = new Set();
65
+ seenBefore = new Set();
66
+ /** A frame prepared but not uploaded, as an overflowing run table leaves one: its staging lost. */
67
+ pending = false;
68
+ /** Whether a run found no room this frame, so that the next makes the stream anew. */
69
+ full = false;
41
70
  /** The frames of the current watch, and the most of the stream and of the staging they used. */
42
71
  frames = 0;
43
72
  mostVertices = 0;
@@ -48,8 +77,13 @@ export class FillBatches {
48
77
  this.gl = gl;
49
78
  this.state = state;
50
79
  }
51
- setUp() {
80
+ /** The buffers and the rows' texture made, `textureMost` lines at most, as the context comes. */
81
+ setUp(textureMost) {
52
82
  const gl = this.gl;
83
+ this.rowsTexture = null;
84
+ this.rowsLines = 0;
85
+ this.rows = new Int32Array(0);
86
+ this.slotsMost = MERGED_LINE * textureMost;
53
87
  this.vertexArray = gl.createVertexArray();
54
88
  this.vertexBuffer = gl.createBuffer();
55
89
  this.indexBuffer = gl.createBuffer();
@@ -68,59 +102,115 @@ export class FillBatches {
68
102
  gl.vertexAttribI4i(DRAW_AT, -1, 0, 0, 0);
69
103
  this.vertexCapacity = 0;
70
104
  this.indexCapacity = 0;
71
- this.previous.length = 0;
72
- this.previousRows.length = 0;
73
- this.changed = false;
74
- this.reset();
105
+ this.clear();
75
106
  }
76
- reset() {
107
+ /** No segment kept: the stream made anew from its start. */
108
+ clear() {
109
+ this.segments.clear();
77
110
  this.vertexTop = 0;
78
111
  this.indexTop = 0;
79
- this.cursor = 0;
80
- // A preparation that aborted left the whole stream to stage again.
81
- this.fromVertex = 0;
82
- this.fromIndex = 0;
112
+ this.slotTop = 0;
113
+ this.pending = false;
114
+ this.full = false;
83
115
  }
84
- /** Append the whole run, or leave it to multi-draw if copying would cost too much. */
85
- add(places, rows, count, frame) {
86
- if (count < 32) {
87
- return;
116
+ /** A frame's preparation begun: staging from the stream's top, or from its start once it is mostly dead. */
117
+ reset() {
118
+ if (this.pending) {
119
+ // Rows written and not uploaded: the texture made again, so that the CPU's copy is its own.
120
+ this.rowsLines = 0;
121
+ }
122
+ if (this.pending ||
123
+ // Room let go of where a run found none, unless the last frame used all of the stream.
124
+ (this.full && (this.vertexTop > this.liveVertices || this.indexTop > this.liveIndices)) ||
125
+ (this.vertexTop > VERTICES_LEAST && this.vertexTop > this.liveVertices * 2) ||
126
+ (this.indexTop > INDICES_LEAST && this.indexTop > this.liveIndices * 2)) {
127
+ this.clear();
128
+ }
129
+ this.full = false;
130
+ const seen = this.seenBefore;
131
+ this.seenBefore = this.seen;
132
+ this.seen = seen;
133
+ seen.clear();
134
+ this.frame++;
135
+ this.fromVertex = this.vertexTop;
136
+ this.fromIndex = this.indexTop;
137
+ this.liveVertices = 0;
138
+ this.liveIndices = 0;
139
+ this.changedFrom = this.slotTop;
140
+ this.changedTo = 0;
141
+ this.pending = true;
142
+ }
143
+ /**
144
+ * The segment that draws the run, of at least `least` draws: one kept, or
145
+ * one staged now; null leaves it to the atlas, where copying would cost
146
+ * too much: a run short or of geometry added this `frame` is cheaper
147
+ * drawn from it, and with `settled` a run not drawn the frame before
148
+ * too, as a run that changes from frame to frame, as an animation's do,
149
+ * would be copied again each frame. Its vertices carry each draw's slot
150
+ * in the rows' texture, where `rows` are written.
151
+ */
152
+ add(places, rows, count, frame, least, settled) {
153
+ if (count < least) {
154
+ return null;
88
155
  }
89
- let vertices = this.vertexTop;
90
- let indices = this.indexTop;
156
+ let vertices = 0;
157
+ let indices = 0;
158
+ // The run's geometries by where they lie in the atlas, which no two live geometries share.
159
+ let key = count;
91
160
  for (let i = 0; i < count; i++) {
92
161
  const place = places[i];
93
162
  if (!place.batch || place.batch.frame === frame) {
94
- return;
163
+ return null;
95
164
  }
96
165
  vertices += place.vertices;
97
166
  indices += place.indices;
167
+ key = Math.imul(key ^ place.indexStart, 0x9e3779b1) ^ place.indices;
98
168
  }
99
- if (vertices > VERTICES_MOST || indices > INDICES_MOST) {
100
- return;
169
+ const first = places[0].batch;
170
+ let list = this.segments.get(first);
171
+ if (list) {
172
+ for (const segment of list) {
173
+ // A copy a run drew this frame already serves another only with the same rows.
174
+ if (segment.batches.length === count &&
175
+ this.holds(segment, places) &&
176
+ (segment.frame !== this.frame || this.rowsAre(segment.slot, rows, count))) {
177
+ this.use(segment);
178
+ this.writeRows(segment.slot, rows, count);
179
+ return segment;
180
+ }
181
+ }
182
+ }
183
+ // A key alike by chance merges a run a frame early, which costs a copy and draws the same.
184
+ this.seen.add(key);
185
+ if (settled && !this.seenBefore.has(key)) {
186
+ return null;
187
+ }
188
+ if (this.vertexTop + vertices > VERTICES_MOST ||
189
+ this.indexTop + indices > INDICES_MOST ||
190
+ this.slotTop + count > this.slotsMost) {
191
+ this.full = true;
192
+ return null;
101
193
  }
194
+ const segment = {
195
+ batches: new Array(count),
196
+ vertexStart: this.vertexTop,
197
+ vertices,
198
+ indexStart: this.indexTop,
199
+ indices,
200
+ slot: this.slotTop,
201
+ frame: -1,
202
+ };
203
+ this.slotTop += count;
204
+ this.stageRoom(this.vertexTop + vertices - this.fromVertex, this.indexTop + indices - this.fromIndex);
205
+ const floats = this.floats;
206
+ const words = this.words;
207
+ const staged = this.indices;
102
208
  for (let i = 0; i < count; i++) {
103
209
  const place = places[i];
104
210
  const batch = place.batch;
105
- // An unchanged prefix has the same offsets. After a mismatch, stage the rest in order.
106
- if (!this.changed &&
107
- (this.previous[this.cursor] !== batch || this.previousRows[this.cursor] !== rows[i])) {
108
- this.changed = true;
109
- this.fromVertex = this.vertexTop;
110
- this.fromIndex = this.indexTop;
111
- }
112
- this.previous[this.cursor] = batch;
113
- this.previousRows[this.cursor++] = rows[i];
114
- if (!this.changed) {
115
- this.vertexTop += place.vertices;
116
- this.indexTop += place.indices;
117
- continue;
118
- }
119
- this.stageRoom(vertices - this.fromVertex, indices - this.fromIndex);
211
+ segment.batches[i] = batch;
120
212
  const data = batch.data;
121
213
  const base = this.vertexTop;
122
- const floats = this.floats;
123
- const words = this.words;
124
214
  for (let j = 0; j < place.vertices; j++) {
125
215
  const at = (base - this.fromVertex + j) * WORDS;
126
216
  floats[at] = data.positions[j * 2];
@@ -128,9 +218,8 @@ export class FillBatches {
128
218
  floats[at + 2] = data.texels ? data.texels[j * 2] : 0;
129
219
  floats[at + 3] = data.texels ? data.texels[j * 2 + 1] : 0;
130
220
  words[at + 4] = data.colors[j];
131
- words[at + 5] = rows[i];
221
+ words[at + 5] = segment.slot + i;
132
222
  }
133
- const staged = this.indices;
134
223
  let at = this.indexTop - this.fromIndex;
135
224
  for (let j = 0; j < place.indices; j++) {
136
225
  staged[at++] = base + data.indices[j];
@@ -138,20 +227,118 @@ export class FillBatches {
138
227
  this.vertexTop += place.vertices;
139
228
  this.indexTop += place.indices;
140
229
  }
230
+ if (!list) {
231
+ list = [];
232
+ this.segments.set(first, list);
233
+ }
234
+ list.push(segment);
235
+ this.use(segment);
236
+ this.writeRows(segment.slot, rows, count);
237
+ return segment;
238
+ }
239
+ /** Whether the `count` rows from `slot` are `rows`. */
240
+ rowsAre(slot, rows, count) {
241
+ for (let i = 0; i < count; i++) {
242
+ if (this.rows[slot + i] !== rows[i]) {
243
+ return false;
244
+ }
245
+ }
246
+ return true;
247
+ }
248
+ /** `rows` written from `slot` on, what changes counted for the upload. */
249
+ writeRows(slot, rows, count) {
250
+ if (slot + count > this.rows.length) {
251
+ const lines = Math.ceil(Math.max(slot + count, this.rows.length * 2) / MERGED_LINE);
252
+ const grown = new Int32Array(lines * MERGED_LINE);
253
+ grown.set(this.rows);
254
+ this.rows = grown;
255
+ }
256
+ const held = this.rows;
257
+ for (let i = 0; i < count; i++) {
258
+ if (held[slot + i] !== rows[i]) {
259
+ held[slot + i] = rows[i];
260
+ this.changedFrom = Math.min(this.changedFrom, slot + i);
261
+ this.changedTo = Math.max(this.changedTo, slot + i + 1);
262
+ }
263
+ }
264
+ }
265
+ /** The rows' texture made tall enough for the slots taken, and the lines this frame changed uploaded. */
266
+ uploadRows() {
267
+ const gl = this.gl;
268
+ const lines = Math.ceil(this.slotTop / MERGED_LINE);
269
+ if (lines > this.rowsLines) {
270
+ if (this.rowsTexture) {
271
+ this.state.dropTexture(this.rowsTexture);
272
+ gl.deleteTexture(this.rowsTexture);
273
+ }
274
+ // A new texture holds zeros: the rows taken uploaded again, the CPU's past them zeros too.
275
+ this.rows.fill(0, this.slotTop);
276
+ this.rowsLines = Math.min(this.slotsMost / MERGED_LINE, Math.max(lines, this.rowsLines * 2));
277
+ this.rowsTexture = gl.createTexture();
278
+ this.state.bindTexture(MERGED_UNIT, this.rowsTexture);
279
+ this.state.activeTexture(MERGED_UNIT);
280
+ gl.texStorage2D(gl.TEXTURE_2D, 1, gl.R32I, MERGED_LINE, this.rowsLines);
281
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
282
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
283
+ this.changedFrom = 0;
284
+ this.changedTo = this.slotTop;
285
+ }
286
+ if (this.changedTo <= this.changedFrom) {
287
+ return;
288
+ }
289
+ const from = Math.floor(this.changedFrom / MERGED_LINE);
290
+ const to = Math.ceil(this.changedTo / MERGED_LINE);
291
+ this.state.bindTexture(MERGED_UNIT, this.rowsTexture);
292
+ this.state.activeTexture(MERGED_UNIT);
293
+ gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, from, MERGED_LINE, to - from, gl.RED_INTEGER, gl.INT, this.rows, from * MERGED_LINE);
294
+ }
295
+ /** Whether `segment` is of the geometries of `places`, in their order. */
296
+ holds(segment, places) {
297
+ const batches = segment.batches;
298
+ for (let i = 0; i < batches.length; i++) {
299
+ if (batches[i] !== places[i].batch) {
300
+ return false;
301
+ }
302
+ }
303
+ return true;
304
+ }
305
+ /** `segment` used this frame, counted once among what the frame used. */
306
+ use(segment) {
307
+ if (segment.frame !== this.frame) {
308
+ segment.frame = this.frame;
309
+ this.liveVertices += segment.vertices;
310
+ this.liveIndices += segment.indices;
311
+ }
141
312
  }
142
313
  /**
143
- * The staged part of the stream uploaded where it lies, the buffers grown
144
- * to fit it first, keeping what is before it; and, once a watch of
145
- * SHRINK_FRAMES has used a quarter of the room or less, the buffers and
146
- * the staging made smaller.
314
+ * The staged segments uploaded where they lie, the buffers grown to fit
315
+ * them first, keeping what is below; the segments no run used let go of;
316
+ * and, once a watch of SHRINK_FRAMES has used a quarter of the room or
317
+ * less, the buffers and the staging made smaller.
147
318
  */
148
319
  upload() {
149
- this.previous.length = this.cursor;
150
- this.previousRows.length = this.cursor;
151
- const staging = this.changed && this.indexTop > 0;
320
+ const staging = this.vertexTop > this.fromVertex;
152
321
  if (staging) {
153
322
  this.uploadStaged();
154
323
  }
324
+ if (this.slotTop > 0) {
325
+ this.uploadRows();
326
+ }
327
+ for (const [first, list] of this.segments) {
328
+ let kept = 0;
329
+ for (const segment of list) {
330
+ if (segment.frame === this.frame) {
331
+ list[kept++] = segment;
332
+ }
333
+ }
334
+ if (kept === 0) {
335
+ this.segments.delete(first);
336
+ }
337
+ else {
338
+ list.length = kept;
339
+ }
340
+ }
341
+ this.pending = false;
155
342
  this.watch(staging);
156
343
  }
157
344
  /** What add staged uploaded where it lies, the buffers grown first to fit the stream. */
@@ -169,9 +356,13 @@ export class FillBatches {
169
356
  }
170
357
  gl.bufferSubData(gl.ARRAY_BUFFER, this.fromVertex * WORDS * 4, this.words, 0, (this.vertexTop - this.fromVertex) * WORDS);
171
358
  gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER, this.fromIndex * 4, this.indices, 0, this.indexTop - this.fromIndex);
172
- this.changed = false;
173
359
  }
174
360
  destroy() {
361
+ if (this.rowsTexture) {
362
+ this.state.dropTexture(this.rowsTexture);
363
+ this.gl.deleteTexture(this.rowsTexture);
364
+ this.rowsTexture = null;
365
+ }
175
366
  this.gl.deleteVertexArray(this.vertexArray);
176
367
  this.gl.deleteBuffer(this.vertexBuffer);
177
368
  this.gl.deleteBuffer(this.indexBuffer);
@@ -210,10 +401,8 @@ export class FillBatches {
210
401
  return;
211
402
  }
212
403
  const gl = this.gl;
213
- // With nothing uploaded for a change, as for a stream of no draws, nothing on the GPU is kept.
214
- const kept = !this.changed;
215
- const keepVertices = kept ? this.vertexTop : 0;
216
- const keepIndices = kept ? this.indexTop : 0;
404
+ const keepVertices = this.vertexTop;
405
+ const keepIndices = this.indexTop;
217
406
  const vertices = Math.max(VERTICES_LEAST, this.mostVertices * 2);
218
407
  if (this.mostVertices * 4 <= this.vertexCapacity && vertices < this.vertexCapacity) {
219
408
  this.state.bindVertexArray(this.vertexArray);
@@ -1 +1 @@
1
- {"version":3,"file":"batches.js","sourceRoot":"","sources":["../../src/webgl/batches.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batches.js","sourceRoot":"","sources":["../../src/webgl/batches.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEnG;;;;GAIG;AACH,MAAM,KAAK,GAAG,CAAC,CAAC;AAChB,qFAAqF;AACrF,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,CAAC;AAC9B,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC;AAC7B,qFAAqF;AACrF,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,CAAC;AAC/B,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,CAAC;AAC9B,gGAAgG;AAChG,MAAM,aAAa,GAAG,GAAG,CAAC;AAiB1B;;;;;;;;;GASG;AACH,MAAM,OAAO,WAAW;IAkDH,EAAE;IACF,KAAK;IAlDxB,WAAW,CAA0B;IAC7B,YAAY,CAAe;IAC3B,WAAW,CAAe;IAClC,yGAAyG;IACjG,KAAK,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,cAAc,GAAG,CAAC,CAAC;IACnB,aAAa,GAAG,CAAC,CAAC;IAClB,SAAS,GAAG,CAAC,CAAC;IACtB,QAAQ,GAAG,CAAC,CAAC;IACb,mFAAmF;IAC3E,UAAU,GAAG,CAAC,CAAC;IACf,SAAS,GAAG,CAAC,CAAC;IACtB;;;OAGG;IACH,WAAW,GAAwB,IAAI,CAAC;IAChC,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IACzB,SAAS,GAAG,CAAC,CAAC;IACd,OAAO,GAAG,CAAC,CAAC;IACZ,SAAS,GAAG,CAAC,CAAC;IACd,WAAW,GAAG,CAAC,CAAC;IAChB,SAAS,GAAG,CAAC,CAAC;IACtB,4CAA4C;IAC3B,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAChD,KAAK,GAAG,CAAC,CAAC;IAClB,mEAAmE;IAC3D,YAAY,GAAG,CAAC,CAAC;IACjB,WAAW,GAAG,CAAC,CAAC;IACxB;;;OAGG;IACK,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IACzB,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,mGAAmG;IAC3F,OAAO,GAAG,KAAK,CAAC;IACxB,sFAAsF;IAC9E,IAAI,GAAG,KAAK,CAAC;IACrB,gGAAgG;IACxF,MAAM,GAAG,CAAC,CAAC;IACX,YAAY,GAAG,CAAC,CAAC;IACjB,WAAW,GAAG,CAAC,CAAC;IAChB,UAAU,GAAG,CAAC,CAAC;IACf,iBAAiB,GAAG,CAAC,CAAC;IAE9B,YACmB,EAA0B,EAC1B,KAAc;kBADd,EAAE;qBACF,KAAK;IACrB,CAAC;IAEJ,iGAAiG;IACjG,KAAK,CAAC,WAAmB;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,iBAAiB,EAA4B,CAAC;QACpE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,EAAiB,CAAC;QACrD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,YAAY,EAAiB,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACzD,EAAE,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACxC,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACtE,EAAE,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACrC,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,EAAE,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACrC,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3E,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACpC,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,uFAAuF;QACvF,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,4DAA4D;IACpD,KAAK;QACX,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,4GAA4G;IAC5G,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,4FAA4F;YAC5F,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,IACE,IAAI,CAAC,OAAO;YACZ,uFAAuF;YACvF,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;YACvF,CAAC,IAAI,CAAC,SAAS,GAAG,cAAc,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YAC3E,CAAC,IAAI,CAAC,QAAQ,GAAG,aAAa,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EACvE,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;;;;;;;OAQG;IACH,GAAG,CACD,MAAe,EACf,IAAgB,EAChB,KAAa,EACb,KAAa,EACb,KAAa,EACb,OAAgB;QAEhB,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,2FAA2F;QAC3F,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBAChD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;YAC3B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;YACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;QACtE,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAc,CAAC;QACvC,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;gBAC3B,+EAA+E;gBAC/E,IACE,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK;oBAChC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;oBAC3B,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EACzE,CAAC;oBACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC1C,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAED,2FAA2F;QAC3F,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IACE,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,aAAa;YACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,GAAG,YAAY;YACtC,IAAI,CAAC,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,EACrC,CAAC;YACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAY;YACvB,OAAO,EAAE,IAAI,KAAK,CAAQ,KAAK,CAAC;YAChC,WAAW,EAAE,IAAI,CAAC,SAAS;YAC3B,QAAQ;YACR,UAAU,EAAE,IAAI,CAAC,QAAQ;YACzB,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC;SACV,CAAC;QACF,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;QACtB,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,EAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,SAAS,CACzC,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAc,CAAC;YACnC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;gBAChD,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACnC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3C,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1D,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/B,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;YACnC,CAAC;YAED,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,EAAE,CAAC;YACV,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,uDAAuD;IAC/C,OAAO,CAAC,IAAY,EAAE,IAAgB,EAAE,KAAa;QAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAClE,SAAS,CAAC,IAAY,EAAE,IAAgB,EAAE,KAAa;QAC7D,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;YACpF,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC;YAClD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QACpB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;gBACxD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;IAED,yGAAyG;IACjG,UAAU;QAChB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC;QACpD,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACzC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrC,CAAC;YAED,2FAA2F;YAC3F,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7F,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACtC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACxE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;YACnE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;YACnE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;QAChC,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACtC,EAAE,CAAC,aAAa,CACd,EAAE,CAAC,UAAU,EACb,CAAC,EACD,CAAC,EACD,IAAI,EACJ,WAAW,EACX,EAAE,GAAG,IAAI,EACT,EAAE,CAAC,WAAW,EACd,EAAE,CAAC,GAAG,EACN,IAAI,CAAC,IAAI,EACT,IAAI,GAAG,WAAW,CACnB,CAAC;IACJ,CAAC;IAED,0EAA0E;IAClE,KAAK,CAAC,OAAgB,EAAE,MAAe;QAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBACnC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yEAAyE;IACjE,GAAG,CAAC,OAAgB;QAC1B,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC;YACtC,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,MAAM;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QACjD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;gBAC3B,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;oBACjC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAED,yFAAyF;IACjF,YAAY;QAClB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAC5B,aAAa,EACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAClD,CAAC;YACF,IAAI,CAAC,MAAM,CACT,EAAE,CAAC,YAAY,EACf,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,CAAC,EAC/B,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,CAAC,CAC5B,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7F,IAAI,CAAC,MAAM,CACT,EAAE,CAAC,oBAAoB,EACvB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,GAAG,CAAC,EACtB,IAAI,CAAC,SAAS,GAAG,CAAC,CACnB,CAAC;QACJ,CAAC;QAED,EAAE,CAAC,aAAa,CACd,EAAE,CAAC,YAAY,EACf,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,CAAC,EAC3B,IAAI,CAAC,KAAK,EACV,CAAC,EACD,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAC3C,CAAC;QACF,EAAE,CAAC,aAAa,CACd,EAAE,CAAC,oBAAoB,EACvB,IAAI,CAAC,SAAS,GAAG,CAAC,EAClB,IAAI,CAAC,OAAO,EACZ,CAAC,EACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAC/B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,yFAAyF;IACjF,SAAS,CAAC,QAAgB,EAAE,OAAe;QACjD,IAAI,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,WAAW,CAC3B,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CACnF,CAAC;YACF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,WAAW,CAC3B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CACnE,CAAC;YACF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,OAAgB;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9E,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5F,CAAC;QAED,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACnF,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7C,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAClD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;YAC/B,IAAI,CAAC,MAAM,CACT,EAAE,CAAC,YAAY,EACf,IAAI,CAAC,YAAY,EACjB,QAAQ,GAAG,KAAK,GAAG,CAAC,EACpB,YAAY,GAAG,KAAK,GAAG,CAAC,CACzB,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/E,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACrE,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACnF,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC7F,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,MAAc,EAAE,MAAmB,EAAE,KAAa,EAAE,IAAY;QAC7E,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,EAAiB,CAAC;QAC9C,IAAI,MAAM,KAAK,EAAE,CAAC,oBAAoB,EAAE,CAAC;YACvC,uFAAuF;YACvF,gEAAgE;YAChE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACjC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;YAC7C,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC;QAED,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAC1C,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;QAC1D,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC3C,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5E,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;QAC9C,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QACzC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC9D,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QACzC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAC1C,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;CACF"}
@@ -18,9 +18,10 @@ export interface Masks {
18
18
  /**
19
19
  * The draws of a scene list's entries into the target bound: fills in runs,
20
20
  * one multi-draw of the atlas's index ranges a run where WEBGL_multi_draw
21
- * is, meshes and advanced text's glyphs each by a program of its own, and
22
- * the masks' coverage into the stencil; and the view of the target drawn
23
- * into, which each program is told.
21
+ * is, else one draw of the run copied into the merged stream where its
22
+ * geometries are small; meshes and advanced text's glyphs each by a program
23
+ * of its own, and the masks' coverage into the stencil; and the view of the
24
+ * target drawn into, which each program is told.
24
25
  */
25
26
  export declare class Draws {
26
27
  /** Where shader fills find the frame's filters, whose chains their draws name (SHADED). */
@@ -53,9 +54,16 @@ export declare class Draws {
53
54
  private blendBackLocation;
54
55
  /** WEBGL_multi_draw, which draws a run of fills alike a call (drawEntries), where there is. */
55
56
  private multi;
57
+ /**
58
+ * Whether, without WEBGL_multi_draw, runs are merged; false draws a call a
59
+ * fill, as a reference the merged draws are tested against (multi-draw.ts).
60
+ */
61
+ merging: boolean;
56
62
  /** Avoid the dynamically indexed uniform table used in the Intel GPU hang reproducer. */
57
63
  private runTable;
58
64
  private runBaseLocation;
65
+ /** The table start the fill program was told last (uRunBase), -1 for none. */
66
+ private runBase;
59
67
  private runTableHeight;
60
68
  private runTableMost;
61
69
  private tableRows;
@@ -129,7 +137,11 @@ export declare class Draws {
129
137
  kernels: KernelPrograms);
130
138
  /** The fill, mesh and glyph programs made, as the context comes or comes back. */
131
139
  setUp(textureMost: number): void;
132
- /** Upload before any draws, so that updating a run cannot stall earlier draws reading it. */
140
+ /**
141
+ * Upload before any draws, so that updating a run cannot stall earlier
142
+ * draws reading it: the run table, with WEBGL_multi_draw, and the merged
143
+ * stream and its rows.
144
+ */
133
145
  prepare(commands: Commands, scene: SceneList): void;
134
146
  private sizeRunTable;
135
147
  /**
@@ -174,12 +186,18 @@ export declare class Draws {
174
186
  maskBy(masks: Masks): void;
175
187
  /** The draws at `scene`'s entries from `first` up to `end`; for the stencil alone, untextured. */
176
188
  drawEntries(scene: SceneList, first: number, end: number, stencil: boolean, command: number): void;
189
+ /** The fill program told where its run starts in the run table, if it was told another. */
190
+ private tellRunBase;
177
191
  /**
178
192
  * The fills from entry `i` on that one call draws, as many as fit its
179
- * textures (FILL_TEXTURES, each with its sampling) and, without
180
- * WEBGL_multi_draw, one: their runCounts, runOffsets and runRows (FILL_SLOT),
181
- * and the units their textures take in runUnits. The last entry gathered,
182
- * past those whose texture is gone, which draw nothing.
193
+ * textures (FILL_TEXTURES, each with its sampling), RUN_MOST at most:
194
+ * their runCounts, runOffsets and runRows (FILL_SLOT), and the units their
195
+ * textures take in runUnits. Without WEBGL_multi_draw, a run is of
196
+ * geometries too large to merge (Place.batch), of geometries added this
197
+ * frame, or of stable ones alone, so that a stable run's merged copy is
198
+ * drawn again while a part of it changes from frame to frame; and without
199
+ * merging each fill is a run. The last entry gathered, past those whose
200
+ * texture is gone, which draw nothing.
183
201
  */
184
202
  private gatherRun;
185
203
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"draws.d.ts","sourceRoot":"","sources":["../../src/webgl/draws.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draws.d.ts","sourceRoot":"","sources":["../../src/webgl/draws.ts"],"names":[],"mappings":"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"}