@lightningjs/renderer 0.9.2 → 0.9.3
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.
- package/dist/src/core/CoreNode.js +40 -0
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +35 -0
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/TextureList.d.ts +1 -0
- package/dist/src/core/TextureList.js +34 -0
- package/dist/src/core/TextureList.js.map +1 -0
- package/dist/src/core/lib/ImageWorker.d.ts +0 -1
- package/dist/src/core/lib/ImageWorker.js +1 -6
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +1 -0
- package/dist/src/core/lib/utils.js +20 -0
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +25 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/newShader/effectsMock.d.ts +1 -0
- package/dist/src/core/renderers/webgl/newShader/effectsMock.js +36 -0
- package/dist/src/core/renderers/webgl/newShader/effectsMock.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +2 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.js +7 -4
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +33 -16
- package/dist/src/main-api/Renderer.js +36 -19
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/main-api/utils.d.ts +1 -1
- package/dist/src/render-drivers/utils.js +6 -1
- package/dist/src/render-drivers/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/core/CoreNode.ts +45 -0
- package/src/core/CoreTextureManager.ts +39 -0
- package/src/core/lib/ImageWorker.ts +1 -7
- package/src/core/lib/utils.ts +25 -0
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +27 -0
- package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +2 -1
- package/src/core/textures/ImageTexture.ts +8 -4
- package/src/render-drivers/utils.ts +6 -1
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { Texture } from './Texture.js';
|
|
20
20
|
import { isCompressedTextureContainer, loadCompressedTexture, } from '../lib/textureCompression.js';
|
|
21
|
+
import { convertUrlToAbsolute } from '../lib/utils.js';
|
|
21
22
|
/**
|
|
22
23
|
* Texture consisting of an image loaded from a URL
|
|
23
24
|
*
|
|
@@ -64,11 +65,13 @@ export class ImageTexture extends Texture {
|
|
|
64
65
|
if (isCompressedTextureContainer(src)) {
|
|
65
66
|
return loadCompressedTexture(src);
|
|
66
67
|
}
|
|
68
|
+
// Convert relative URL to absolute URL
|
|
69
|
+
const absoluteSrc = convertUrlToAbsolute(src);
|
|
67
70
|
if (this.txManager.imageWorkerManager) {
|
|
68
|
-
return await this.txManager.imageWorkerManager.getImage(
|
|
71
|
+
return await this.txManager.imageWorkerManager.getImage(absoluteSrc, premultiplyAlpha);
|
|
69
72
|
}
|
|
70
73
|
else if (this.txManager.hasCreateImageBitmap) {
|
|
71
|
-
const response = await fetch(
|
|
74
|
+
const response = await fetch(absoluteSrc);
|
|
72
75
|
const blob = await response.blob();
|
|
73
76
|
const hasAlphaChannel = premultiplyAlpha ?? this.hasAlphaChannel(blob.type);
|
|
74
77
|
return {
|
|
@@ -85,7 +88,7 @@ export class ImageTexture extends Texture {
|
|
|
85
88
|
if (!(src.substr(0, 5) === 'data:')) {
|
|
86
89
|
img.crossOrigin = 'Anonymous';
|
|
87
90
|
}
|
|
88
|
-
img.src =
|
|
91
|
+
img.src = absoluteSrc;
|
|
89
92
|
await new Promise((resolve, reject) => {
|
|
90
93
|
img.onload = () => resolve();
|
|
91
94
|
img.onerror = () => reject(new Error(`Failed to load image`));
|
|
@@ -111,7 +114,7 @@ export class ImageTexture extends Texture {
|
|
|
111
114
|
return {
|
|
112
115
|
src: props.src ?? '',
|
|
113
116
|
premultiplyAlpha: props.premultiplyAlpha ?? true,
|
|
114
|
-
key: props.key ?? null
|
|
117
|
+
key: props.key ?? null,
|
|
115
118
|
};
|
|
116
119
|
}
|
|
117
120
|
static z$__type__Props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/ImageTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,OAAO,EAAoB,MAAM,cAAc,CAAC;AACzD,OAAO,EACL,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"ImageTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/ImageTexture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { ShaderMap } from '../core/CoreShaderManager.js';
|
|
2
2
|
import type { ExtractProps, TextureTypeMap, TextureMap } from '../core/CoreTextureManager.js';
|
|
3
|
-
import type { INodeWritableProps, ITextNodeWritableProps } from './INode.js';
|
|
4
3
|
import { EventEmitter } from '../common/EventEmitter.js';
|
|
5
4
|
import { Stage } from '../core/Stage.js';
|
|
6
|
-
import { CoreNode } from '../core/CoreNode.js';
|
|
7
|
-
import { CoreTextNode } from '../core/CoreTextNode.js';
|
|
5
|
+
import { CoreNode, type CoreNodeWritableProps } from '../core/CoreNode.js';
|
|
6
|
+
import { CoreTextNode, type CoreTextNodeWritableProps } from '../core/CoreTextNode.js';
|
|
7
|
+
import type { TextureMemoryManagerSettings } from '../core/TextureMemoryManager.js';
|
|
8
8
|
/**
|
|
9
9
|
* An immutable reference to a specific Shader type
|
|
10
10
|
*
|
|
@@ -51,16 +51,9 @@ export interface RendererMainSettings {
|
|
|
51
51
|
*/
|
|
52
52
|
appHeight?: number;
|
|
53
53
|
/**
|
|
54
|
-
* Texture Memory
|
|
55
|
-
*
|
|
56
|
-
* @remarks
|
|
57
|
-
* When the amount of GPU VRAM used by textures exceeds this threshold,
|
|
58
|
-
* the Renderer will free up all the textures that are current not visible
|
|
59
|
-
* within the configured `boundsMargin`.
|
|
60
|
-
*
|
|
61
|
-
* When set to `0`, the threshold-based texture memory manager is disabled.
|
|
54
|
+
* Texture Memory Manager Settings
|
|
62
55
|
*/
|
|
63
|
-
|
|
56
|
+
textureMemory?: Partial<TextureMemoryManagerSettings>;
|
|
64
57
|
/**
|
|
65
58
|
* Bounds margin to extend the boundary in which a CoreNode is added as Quad.
|
|
66
59
|
*/
|
|
@@ -176,6 +169,30 @@ export interface RendererMainSettings {
|
|
|
176
169
|
* new MainCoreDriver(),
|
|
177
170
|
* );
|
|
178
171
|
* ```
|
|
172
|
+
*
|
|
173
|
+
* ## Events
|
|
174
|
+
* - `fpsUpdate`
|
|
175
|
+
* - Emitted every `fpsUpdateInterval` milliseconds with the current FPS
|
|
176
|
+
* - `frameTick`
|
|
177
|
+
* - Emitted every frame tick
|
|
178
|
+
* - `idle`
|
|
179
|
+
* - Emitted when the renderer is idle (no changes to the scene
|
|
180
|
+
* graph/animations running)
|
|
181
|
+
* - `criticalCleanup`
|
|
182
|
+
* - Emitted when the Texture Memory Manager Cleanup process is triggered
|
|
183
|
+
* - Payload: { memUsed: number, criticalThreshold: number }
|
|
184
|
+
* - `memUsed` - The amount of memory (in bytes) used by textures before the
|
|
185
|
+
* cleanup process
|
|
186
|
+
* - `criticalThreshold` - The critical threshold (in bytes)
|
|
187
|
+
* - `criticalCleanupFailed`
|
|
188
|
+
* - Emitted when the Texture Memory Manager Cleanup process is unable to free
|
|
189
|
+
* up enough texture memory to reach below the critical threshold.
|
|
190
|
+
* This can happen when there is not enough non-renderable textures to
|
|
191
|
+
* free up.
|
|
192
|
+
* - Payload (object with keys):
|
|
193
|
+
* - `memUsed` - The amount of memory (in bytes) used by textures after
|
|
194
|
+
* the cleanup process
|
|
195
|
+
* - `criticalThreshold` - The critical threshold (in bytes)
|
|
179
196
|
*/
|
|
180
197
|
export declare class RendererMain extends EventEmitter {
|
|
181
198
|
readonly root: CoreNode;
|
|
@@ -201,12 +218,12 @@ export declare class RendererMain extends EventEmitter {
|
|
|
201
218
|
*
|
|
202
219
|
* To create a text node, see {@link createTextNode}.
|
|
203
220
|
*
|
|
204
|
-
* See {@link
|
|
221
|
+
* See {@link CoreNode} for more details.
|
|
205
222
|
*
|
|
206
223
|
* @param props
|
|
207
224
|
* @returns
|
|
208
225
|
*/
|
|
209
|
-
createNode(props: Partial<
|
|
226
|
+
createNode(props: Partial<CoreNodeWritableProps>): CoreNode;
|
|
210
227
|
/**
|
|
211
228
|
* Create a new scene graph text node
|
|
212
229
|
*
|
|
@@ -221,7 +238,7 @@ export declare class RendererMain extends EventEmitter {
|
|
|
221
238
|
* @param props
|
|
222
239
|
* @returns
|
|
223
240
|
*/
|
|
224
|
-
createTextNode(props: Partial<
|
|
241
|
+
createTextNode(props: Partial<CoreTextNodeWritableProps>): CoreTextNode;
|
|
225
242
|
/**
|
|
226
243
|
* Resolves the default property values for a Node
|
|
227
244
|
*
|
|
@@ -233,7 +250,7 @@ export declare class RendererMain extends EventEmitter {
|
|
|
233
250
|
* @param props
|
|
234
251
|
* @returns
|
|
235
252
|
*/
|
|
236
|
-
resolveNodeDefaults(props: Partial<
|
|
253
|
+
resolveNodeDefaults(props: Partial<CoreNodeWritableProps>): CoreNodeWritableProps;
|
|
237
254
|
/**
|
|
238
255
|
* Destroy a node
|
|
239
256
|
*
|
|
@@ -23,7 +23,7 @@ import { assertTruthy, isProductionEnvironment } from '../utils.js';
|
|
|
23
23
|
import { Stage, } from '../core/Stage.js';
|
|
24
24
|
import { getNewId } from '../utils.js';
|
|
25
25
|
import { CoreNode } from '../core/CoreNode.js';
|
|
26
|
-
import { CoreTextNode } from '../core/CoreTextNode.js';
|
|
26
|
+
import { CoreTextNode, } from '../core/CoreTextNode.js';
|
|
27
27
|
/**
|
|
28
28
|
* The Renderer Main API
|
|
29
29
|
*
|
|
@@ -47,6 +47,30 @@ import { CoreTextNode } from '../core/CoreTextNode.js';
|
|
|
47
47
|
* new MainCoreDriver(),
|
|
48
48
|
* );
|
|
49
49
|
* ```
|
|
50
|
+
*
|
|
51
|
+
* ## Events
|
|
52
|
+
* - `fpsUpdate`
|
|
53
|
+
* - Emitted every `fpsUpdateInterval` milliseconds with the current FPS
|
|
54
|
+
* - `frameTick`
|
|
55
|
+
* - Emitted every frame tick
|
|
56
|
+
* - `idle`
|
|
57
|
+
* - Emitted when the renderer is idle (no changes to the scene
|
|
58
|
+
* graph/animations running)
|
|
59
|
+
* - `criticalCleanup`
|
|
60
|
+
* - Emitted when the Texture Memory Manager Cleanup process is triggered
|
|
61
|
+
* - Payload: { memUsed: number, criticalThreshold: number }
|
|
62
|
+
* - `memUsed` - The amount of memory (in bytes) used by textures before the
|
|
63
|
+
* cleanup process
|
|
64
|
+
* - `criticalThreshold` - The critical threshold (in bytes)
|
|
65
|
+
* - `criticalCleanupFailed`
|
|
66
|
+
* - Emitted when the Texture Memory Manager Cleanup process is unable to free
|
|
67
|
+
* up enough texture memory to reach below the critical threshold.
|
|
68
|
+
* This can happen when there is not enough non-renderable textures to
|
|
69
|
+
* free up.
|
|
70
|
+
* - Payload (object with keys):
|
|
71
|
+
* - `memUsed` - The amount of memory (in bytes) used by textures after
|
|
72
|
+
* the cleanup process
|
|
73
|
+
* - `criticalThreshold` - The critical threshold (in bytes)
|
|
50
74
|
*/
|
|
51
75
|
export class RendererMain extends EventEmitter {
|
|
52
76
|
root;
|
|
@@ -63,10 +87,16 @@ export class RendererMain extends EventEmitter {
|
|
|
63
87
|
*/
|
|
64
88
|
constructor(settings, target) {
|
|
65
89
|
super();
|
|
90
|
+
const resolvedTxSettings = {
|
|
91
|
+
criticalThreshold: settings.textureMemory?.criticalThreshold || 124e6,
|
|
92
|
+
targetThresholdLevel: settings.textureMemory?.targetThresholdLevel || 0.5,
|
|
93
|
+
cleanupInterval: settings.textureMemory?.cleanupInterval || 30000,
|
|
94
|
+
debugLogging: settings.textureMemory?.debugLogging || false,
|
|
95
|
+
};
|
|
66
96
|
const resolvedSettings = {
|
|
67
97
|
appWidth: settings.appWidth || 1920,
|
|
68
98
|
appHeight: settings.appHeight || 1080,
|
|
69
|
-
|
|
99
|
+
textureMemory: resolvedTxSettings,
|
|
70
100
|
boundsMargin: settings.boundsMargin || 0,
|
|
71
101
|
deviceLogicalPixelRatio: settings.deviceLogicalPixelRatio || 1,
|
|
72
102
|
devicePhysicalPixelRatio: settings.devicePhysicalPixelRatio || window.devicePixelRatio,
|
|
@@ -89,32 +119,19 @@ export class RendererMain extends EventEmitter {
|
|
|
89
119
|
canvas.style.height = `${deviceLogicalHeight}px`;
|
|
90
120
|
// Initialize the stage
|
|
91
121
|
this.stage = new Stage({
|
|
92
|
-
rootId: getNewId(),
|
|
93
122
|
appWidth: this.settings.appWidth,
|
|
94
123
|
appHeight: this.settings.appHeight,
|
|
95
124
|
boundsMargin: this.settings.boundsMargin,
|
|
96
125
|
clearColor: this.settings.clearColor,
|
|
97
126
|
canvas: this.canvas,
|
|
98
|
-
debug: {
|
|
99
|
-
monitorTextureCache: false,
|
|
100
|
-
},
|
|
101
127
|
deviceLogicalPixelRatio: this.settings.deviceLogicalPixelRatio,
|
|
102
128
|
devicePhysicalPixelRatio: this.settings.devicePhysicalPixelRatio,
|
|
103
129
|
enableContextSpy: this.settings.enableContextSpy,
|
|
104
130
|
fpsUpdateInterval: this.settings.fpsUpdateInterval,
|
|
105
131
|
numImageWorkers: this.settings.numImageWorkers,
|
|
106
132
|
renderMode: this.settings.renderMode,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
// Forward fpsUpdate events from the stage to RendererMain
|
|
110
|
-
this.stage.on('fpsUpdate', ((stage, fpsData) => {
|
|
111
|
-
this.emit('fpsUpdate', fpsData);
|
|
112
|
-
}));
|
|
113
|
-
this.stage.on('frameTick', ((stage, frameTickData) => {
|
|
114
|
-
this.emit('frameTick', frameTickData);
|
|
115
|
-
}));
|
|
116
|
-
this.stage.on('idle', () => {
|
|
117
|
-
this.emit('idle');
|
|
133
|
+
textureMemory: resolvedTxSettings,
|
|
134
|
+
eventBus: this,
|
|
118
135
|
});
|
|
119
136
|
// Extract the root node
|
|
120
137
|
this.root = this.stage.root;
|
|
@@ -145,7 +162,7 @@ export class RendererMain extends EventEmitter {
|
|
|
145
162
|
*
|
|
146
163
|
* To create a text node, see {@link createTextNode}.
|
|
147
164
|
*
|
|
148
|
-
* See {@link
|
|
165
|
+
* See {@link CoreNode} for more details.
|
|
149
166
|
*
|
|
150
167
|
* @param props
|
|
151
168
|
* @returns
|
|
@@ -155,7 +172,6 @@ export class RendererMain extends EventEmitter {
|
|
|
155
172
|
const resolvedProps = this.resolveNodeDefaults(props);
|
|
156
173
|
const node = new CoreNode(this.stage, {
|
|
157
174
|
...resolvedProps,
|
|
158
|
-
id: getNewId(),
|
|
159
175
|
shaderProps: null,
|
|
160
176
|
});
|
|
161
177
|
if (this.inspector) {
|
|
@@ -253,6 +269,7 @@ export class RendererMain extends EventEmitter {
|
|
|
253
269
|
texture: props.texture ?? null,
|
|
254
270
|
textureOptions: props.textureOptions ?? {},
|
|
255
271
|
shader: props.shader ?? null,
|
|
272
|
+
shaderProps: props.shaderProps ?? null,
|
|
256
273
|
// Since setting the `src` will trigger a texture load, we need to set it after
|
|
257
274
|
// we set the texture. Otherwise, problems happen.
|
|
258
275
|
src: props.src ?? '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.js","sourceRoot":"","sources":["../../../src/main-api/Renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"Renderer.js","sourceRoot":"","sources":["../../../src/main-api/Renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { CustomDataMap } from '../
|
|
1
|
+
import type { CustomDataMap } from '../core/CoreNode.js';
|
|
2
2
|
export declare function santizeCustomDataMap(d: CustomDataMap): CustomDataMap;
|
|
@@ -39,7 +39,12 @@ export async function loadCoreExtension(coreExtensionModule, stage) {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
export function santizeCustomDataMap(d) {
|
|
42
|
-
const validTypes = {
|
|
42
|
+
const validTypes = {
|
|
43
|
+
boolean: true,
|
|
44
|
+
string: true,
|
|
45
|
+
number: true,
|
|
46
|
+
undefined: true,
|
|
47
|
+
};
|
|
43
48
|
const keys = Object.keys(d);
|
|
44
49
|
for (let i = 0; i < keys.length; i++) {
|
|
45
50
|
const key = keys[i];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/render-drivers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI1D;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAc;IAEd,OAAQ,KAA8B,CAAC,SAAS,YAAY,aAAa,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,mBAA2B,EAC3B,KAAY;IAEZ,IAAI,MAEH,CAAC;IACF,IAAI;QACF,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC;QAC3D,MAAM,GAAG,CAAC,MAAM,MAAM,CACpB,mBAAmB,CAAC,kBAAkB,CACvC,CAAkB,CAAC;KACrB;IAAC,OAAO,CAAU,EAAE;QACnB,OAAO,CAAC,KAAK,CACX,iCAAiC,mBAAmB,wBAAwB,CAC7E,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO;KACR;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;QACnB,OAAO,CAAC,KAAK,CACX,iCAAiC,mBAAmB,mCAAmC,CACxF,CAAC;QACF,OAAO;KACR;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC;IACtC,IAAI,yBAAyB,CAAC,cAAc,CAAC,EAAE;QAC7C,MAAM,aAAa,GAAG,IAAI,cAAc,EAAE,CAAC;QAC3C,IAAI;YACF,MAAM,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAChC;QAAC,OAAO,CAAU,EAAE;YACnB,OAAO,CAAC,KAAK,CACX,0BAA0B,mBAAmB,mBAAmB,CACjE,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClB;KACF;SAAM;QACL,OAAO,CAAC,KAAK,CACX,0BAA0B,mBAAmB,kCAAkC,CAChF,CAAC;KACH;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAgB;IACnD,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/render-drivers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI1D;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAc;IAEd,OAAQ,KAA8B,CAAC,SAAS,YAAY,aAAa,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,mBAA2B,EAC3B,KAAY;IAEZ,IAAI,MAEH,CAAC;IACF,IAAI;QACF,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC;QAC3D,MAAM,GAAG,CAAC,MAAM,MAAM,CACpB,mBAAmB,CAAC,kBAAkB,CACvC,CAAkB,CAAC;KACrB;IAAC,OAAO,CAAU,EAAE;QACnB,OAAO,CAAC,KAAK,CACX,iCAAiC,mBAAmB,wBAAwB,CAC7E,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO;KACR;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;QACnB,OAAO,CAAC,KAAK,CACX,iCAAiC,mBAAmB,mCAAmC,CACxF,CAAC;QACF,OAAO;KACR;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC;IACtC,IAAI,yBAAyB,CAAC,cAAc,CAAC,EAAE;QAC7C,MAAM,aAAa,GAAG,IAAI,cAAc,EAAE,CAAC;QAC3C,IAAI;YACF,MAAM,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAChC;QAAC,OAAO,CAAU,EAAE;YACnB,OAAO,CAAC,KAAK,CACX,0BAA0B,mBAAmB,mBAAmB,CACjE,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClB;KACF;SAAM;QACL,OAAO,CAAC,KAAK,CACX,0BAA0B,mBAAmB,kCAAkC,CAChF,CAAC;KACH;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAgB;IACnD,MAAM,UAAU,GAAG;QACjB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI;KAChB,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,EAAE;YACR,SAAS;SACV;QAED,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC;QAE/B,oEAAoE;QACpE,6DAA6D;QAC7D,uBAAuB;QACvB,IAAI,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,EAAE;YACjD,OAAO,CAAC,IAAI,CACV,yBAAyB,GAAG,uDAAuD,CACpF,CAAC;YAEF,wEAAwE;YACxE,6DAA6D;YAC7D,uBAAuB;YACvB,sGAAsG;YACtG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SACnC;QAED,IAAI,CAAC,UAAU,CAAC,SAAoC,CAAC,EAAE;YACrD,OAAO,CAAC,IAAI,CACV,yBAAyB,GAAG,0DAA0D,CACvF,CAAC;YACF,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;SACf;KACF;IAED,OAAO,CAAC,CAAC;AACX,CAAC"}
|