@pie-players/pie-players-shared 0.3.30 → 0.3.31
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/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/loaders/ElementLoader.d.ts +6 -34
- package/dist/loaders/ElementLoader.d.ts.map +1 -1
- package/dist/loaders/ElementLoader.js +21 -9
- package/dist/loaders/ElementLoader.js.map +1 -1
- package/dist/loaders/element-loader-types.d.ts +91 -0
- package/dist/loaders/element-loader-types.d.ts.map +1 -0
- package/dist/loaders/element-loader-types.js +26 -0
- package/dist/loaders/element-loader-types.js.map +1 -0
- package/dist/loaders/element-loader.d.ts +92 -0
- package/dist/loaders/element-loader.d.ts.map +1 -0
- package/dist/loaders/element-loader.js +391 -0
- package/dist/loaders/element-loader.js.map +1 -0
- package/dist/loaders/esm-adapter.d.ts +40 -0
- package/dist/loaders/esm-adapter.d.ts.map +1 -0
- package/dist/loaders/esm-adapter.js +274 -0
- package/dist/loaders/esm-adapter.js.map +1 -0
- package/dist/loaders/iife-adapter.d.ts +86 -0
- package/dist/loaders/iife-adapter.d.ts.map +1 -0
- package/dist/loaders/iife-adapter.js +365 -0
- package/dist/loaders/iife-adapter.js.map +1 -0
- package/dist/loaders/index.d.ts +30 -17
- package/dist/loaders/index.d.ts.map +1 -1
- package/dist/loaders/index.js +26 -14
- package/dist/loaders/index.js.map +1 -1
- package/dist/pie/index.d.ts +4 -4
- package/dist/pie/index.d.ts.map +1 -1
- package/dist/pie/index.js +7 -2
- package/dist/pie/index.js.map +1 -1
- package/dist/pie/initialization.d.ts +26 -1
- package/dist/pie/initialization.d.ts.map +1 -1
- package/dist/pie/initialization.js +72 -15
- package/dist/pie/initialization.js.map +1 -1
- package/dist/pie/instrumentation-event-map.d.ts.map +1 -1
- package/dist/pie/instrumentation-event-map.js +27 -16
- package/dist/pie/instrumentation-event-map.js.map +1 -1
- package/dist/pie/stage-tracker.d.ts +51 -0
- package/dist/pie/stage-tracker.d.ts.map +1 -0
- package/dist/pie/stage-tracker.js +106 -0
- package/dist/pie/stage-tracker.js.map +1 -0
- package/dist/pie/stages.d.ts +75 -0
- package/dist/pie/stages.d.ts.map +1 -0
- package/dist/pie/stages.js +58 -0
- package/dist/pie/stages.js.map +1 -0
- package/dist/pie/use-resource-monitor.svelte.d.ts.map +1 -1
- package/dist/pie/use-resource-monitor.svelte.js +88 -75
- package/dist/pie/use-resource-monitor.svelte.js.map +1 -1
- package/dist/ui/use-promise.svelte.ts +109 -0
- package/package.json +6 -1
- package/dist/loaders/EsmElementLoader.d.ts +0 -69
- package/dist/loaders/EsmElementLoader.d.ts.map +0 -1
- package/dist/loaders/EsmElementLoader.js +0 -72
- package/dist/loaders/EsmElementLoader.js.map +0 -1
- package/dist/loaders/IifeElementLoader.d.ts +0 -61
- package/dist/loaders/IifeElementLoader.d.ts.map +0 -1
- package/dist/loaders/IifeElementLoader.js +0 -63
- package/dist/loaders/IifeElementLoader.js.map +0 -1
- package/dist/pie/esm-loader.d.ts +0 -104
- package/dist/pie/esm-loader.d.ts.map +0 -1
- package/dist/pie/esm-loader.js +0 -358
- package/dist/pie/esm-loader.js.map +0 -1
- package/dist/pie/iife-loader.d.ts +0 -116
- package/dist/pie/iife-loader.d.ts.map +0 -1
- package/dist/pie/iife-loader.js +0 -561
- package/dist/pie/iife-loader.js.map +0 -1
package/dist/pie/iife-loader.js
DELETED
|
@@ -1,561 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IIFE PIE Loader
|
|
3
|
-
*
|
|
4
|
-
* Dynamically loads PIE elements from IIFE bundles served by the PIE build service.
|
|
5
|
-
* Matches the behavior of the original pie-player from @pie-players/pie-player-components.
|
|
6
|
-
*
|
|
7
|
-
* Integrates with the existing PIE registry system to enable shared
|
|
8
|
-
* initialization code to work with IIFE-loaded elements.
|
|
9
|
-
*/
|
|
10
|
-
import { createPieLogger } from "./logger.js";
|
|
11
|
-
import { pieRegistry } from "./registry.js";
|
|
12
|
-
import { defineCustomElementSafely } from "./custom-element-define.js";
|
|
13
|
-
import { validateCustomElementTag } from "./tag-names.js";
|
|
14
|
-
import { BundleType, isCustomElementConstructor, Status } from "./types.js";
|
|
15
|
-
import { getPackageWithoutVersion } from "./utils.js";
|
|
16
|
-
import { DEFAULT_IIFE_BUNDLE_RETRY_CONFIG, } from "../loader-config.js";
|
|
17
|
-
import { isInstrumentationProvider } from "../instrumentation/provider-guards.js";
|
|
18
|
-
// Logger factory - will be initialized when loader is created
|
|
19
|
-
let logger;
|
|
20
|
-
// Default PIE bundle service URL.
|
|
21
|
-
// Use the public proxy endpoint (stable + cached) rather than the builder origin directly.
|
|
22
|
-
export const DEFAULT_BUNDLE_HOST = "https://proxy.pie-api.com/bundles/";
|
|
23
|
-
// Initialize pieHelpers on window if not already present
|
|
24
|
-
if (typeof window !== "undefined" && !window.pieHelpers) {
|
|
25
|
-
window.pieHelpers = {
|
|
26
|
-
loadingScripts: {},
|
|
27
|
-
loadingPromises: {},
|
|
28
|
-
globalLoadQueue: Promise.resolve(),
|
|
29
|
-
activeBundleUrl: null,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
export class IifePieLoader {
|
|
33
|
-
config;
|
|
34
|
-
constructor(config) {
|
|
35
|
-
this.config = config;
|
|
36
|
-
// Initialize logger with debug function
|
|
37
|
-
logger = createPieLogger("iife-loader", config.debugEnabled || (() => false));
|
|
38
|
-
}
|
|
39
|
-
ensurePieHelpers() {
|
|
40
|
-
if (!window.pieHelpers) {
|
|
41
|
-
window.pieHelpers = {
|
|
42
|
-
loadingScripts: {},
|
|
43
|
-
loadingPromises: {},
|
|
44
|
-
globalLoadQueue: Promise.resolve(),
|
|
45
|
-
activeBundleUrl: null,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
return window.pieHelpers;
|
|
49
|
-
}
|
|
50
|
-
getRequestedPackageNames(elements) {
|
|
51
|
-
return Array.from(new Set(Object.values(elements)
|
|
52
|
-
.map((packageVersion) => getPackageWithoutVersion(packageVersion))
|
|
53
|
-
.filter((name) => typeof name === "string" && name.length > 0))).sort();
|
|
54
|
-
}
|
|
55
|
-
isReusableActiveBundle(doc, bundleUrl, requestedPackageNames) {
|
|
56
|
-
const pieModule = window.pie?.default;
|
|
57
|
-
if (!pieModule || typeof pieModule !== "object") {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
const helpers = this.ensurePieHelpers();
|
|
61
|
-
const hasMatchingScript = !!doc.querySelector(`script[src="${bundleUrl}"]`);
|
|
62
|
-
const activeBundleMatches = helpers.activeBundleUrl === bundleUrl;
|
|
63
|
-
if (!hasMatchingScript || !activeBundleMatches) {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
return requestedPackageNames.every((packageName) => !!pieModule[packageName]);
|
|
67
|
-
}
|
|
68
|
-
clearActiveBundleState() {
|
|
69
|
-
const helpers = this.ensurePieHelpers();
|
|
70
|
-
helpers.activeBundleUrl = null;
|
|
71
|
-
if (window.pie) {
|
|
72
|
-
delete window.pie;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
removePieBundleScripts(doc) {
|
|
76
|
-
const scripts = Array.from(doc.querySelectorAll('script[data-pie-bundle="true"]'));
|
|
77
|
-
for (const script of scripts) {
|
|
78
|
-
script.remove();
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
getActivePieBundleScriptUrls(doc) {
|
|
82
|
-
const scripts = Array.from(doc.querySelectorAll('script[data-pie-bundle="true"]'));
|
|
83
|
-
return scripts
|
|
84
|
-
.map((script) => {
|
|
85
|
-
const fromAttr = script.getAttribute("src");
|
|
86
|
-
if (typeof fromAttr === "string" && fromAttr.length > 0)
|
|
87
|
-
return fromAttr;
|
|
88
|
-
const maybeSrc = script.src;
|
|
89
|
-
return typeof maybeSrc === "string" ? maybeSrc : "";
|
|
90
|
-
})
|
|
91
|
-
.filter((src) => src.length > 0);
|
|
92
|
-
}
|
|
93
|
-
buildLoadDiagnostics(doc, context) {
|
|
94
|
-
const helpers = this.ensurePieHelpers();
|
|
95
|
-
const pieModule = window.pie?.default;
|
|
96
|
-
const availablePackageNames = pieModule && typeof pieModule === "object" ? Object.keys(pieModule) : [];
|
|
97
|
-
return {
|
|
98
|
-
requestedBundleUrl: context.bundleUrl,
|
|
99
|
-
requestedPackageNames: context.requestedPackageNames,
|
|
100
|
-
bundleType: context.bundleType,
|
|
101
|
-
needsControllers: context.needsControllers,
|
|
102
|
-
loadPath: context.path,
|
|
103
|
-
activeBundleUrl: helpers.activeBundleUrl,
|
|
104
|
-
hasWindowPie: !!window.pie,
|
|
105
|
-
hasWindowPieDefault: !!pieModule && typeof pieModule === "object" && !Array.isArray(pieModule),
|
|
106
|
-
availablePackageNames,
|
|
107
|
-
activePieBundleScriptUrls: this.getActivePieBundleScriptUrls(doc),
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
isRecoverableRegistrationError(err) {
|
|
111
|
-
const message = err instanceof Error ? err.message : typeof err === "string" ? err : "";
|
|
112
|
-
return (message.includes("window.pie not found") ||
|
|
113
|
-
message.includes("not found in IIFE bundle"));
|
|
114
|
-
}
|
|
115
|
-
async registerWithReloadRecovery(args) {
|
|
116
|
-
const initialDiagnostics = this.buildLoadDiagnostics(args.doc, {
|
|
117
|
-
bundleUrl: args.bundleUrl,
|
|
118
|
-
requestedPackageNames: args.requestedPackageNames,
|
|
119
|
-
bundleType: args.bundleType,
|
|
120
|
-
needsControllers: args.needsControllers,
|
|
121
|
-
path: args.initialPath,
|
|
122
|
-
});
|
|
123
|
-
try {
|
|
124
|
-
await this.registerElementsFromBundle(args.elements, args.needsControllers, args.bundleType, initialDiagnostics);
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
catch (err) {
|
|
128
|
-
if (!this.isRecoverableRegistrationError(err)) {
|
|
129
|
-
throw err;
|
|
130
|
-
}
|
|
131
|
-
logger.warn("Recoverable registration mismatch detected; forcing bundle reload and retry", err, initialDiagnostics);
|
|
132
|
-
}
|
|
133
|
-
this.removePieBundleScripts(args.doc);
|
|
134
|
-
this.clearActiveBundleState();
|
|
135
|
-
await this.loadBundleScriptWithRetry(args.bundleUrl, args.doc);
|
|
136
|
-
this.ensurePieHelpers().activeBundleUrl = args.bundleUrl;
|
|
137
|
-
const retryDiagnostics = this.buildLoadDiagnostics(args.doc, {
|
|
138
|
-
bundleUrl: args.bundleUrl,
|
|
139
|
-
requestedPackageNames: args.requestedPackageNames,
|
|
140
|
-
bundleType: args.bundleType,
|
|
141
|
-
needsControllers: args.needsControllers,
|
|
142
|
-
path: "retry-after-reload",
|
|
143
|
-
});
|
|
144
|
-
await this.registerElementsFromBundle(args.elements, args.needsControllers, args.bundleType, retryDiagnostics);
|
|
145
|
-
}
|
|
146
|
-
withGlobalLoadQueue(operation) {
|
|
147
|
-
const helpers = this.ensurePieHelpers();
|
|
148
|
-
const previous = helpers.globalLoadQueue || Promise.resolve();
|
|
149
|
-
const run = previous.then(operation, operation);
|
|
150
|
-
helpers.globalLoadQueue = run.then(() => undefined, () => undefined);
|
|
151
|
-
return run;
|
|
152
|
-
}
|
|
153
|
-
toErrorMessage(error) {
|
|
154
|
-
if (error instanceof Error)
|
|
155
|
-
return error.message;
|
|
156
|
-
return typeof error === "string" ? error : String(error);
|
|
157
|
-
}
|
|
158
|
-
getBundleRetryConfig() {
|
|
159
|
-
const configured = this.config.bundleRetry || {};
|
|
160
|
-
const retryDelayMs = typeof configured.retryDelayMs === "number" && configured.retryDelayMs > 0
|
|
161
|
-
? configured.retryDelayMs
|
|
162
|
-
: DEFAULT_IIFE_BUNDLE_RETRY_CONFIG.retryDelayMs;
|
|
163
|
-
const timeoutMs = typeof configured.timeoutMs === "number" && configured.timeoutMs > 0
|
|
164
|
-
? configured.timeoutMs
|
|
165
|
-
: DEFAULT_IIFE_BUNDLE_RETRY_CONFIG.timeoutMs;
|
|
166
|
-
return { retryDelayMs, timeoutMs };
|
|
167
|
-
}
|
|
168
|
-
emitBundleRetryStatus(status) {
|
|
169
|
-
try {
|
|
170
|
-
this.config.onBundleRetryStatus?.(status);
|
|
171
|
-
}
|
|
172
|
-
catch (error) {
|
|
173
|
-
logger.warn("Failed to emit IIFE bundle retry status callback", error);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
getInstrumentationProvider() {
|
|
177
|
-
const provider = this.config.instrumentationProvider;
|
|
178
|
-
if (!this.config.trackPageActions)
|
|
179
|
-
return undefined;
|
|
180
|
-
if (!isInstrumentationProvider(provider))
|
|
181
|
-
return undefined;
|
|
182
|
-
if (!provider.isReady())
|
|
183
|
-
return undefined;
|
|
184
|
-
return provider;
|
|
185
|
-
}
|
|
186
|
-
trackRetryEvent(eventName, attributes) {
|
|
187
|
-
const provider = this.getInstrumentationProvider();
|
|
188
|
-
if (!provider)
|
|
189
|
-
return;
|
|
190
|
-
provider.trackEvent(eventName, attributes);
|
|
191
|
-
}
|
|
192
|
-
trackRetryError(error, attributes) {
|
|
193
|
-
const provider = this.getInstrumentationProvider();
|
|
194
|
-
if (!provider)
|
|
195
|
-
return;
|
|
196
|
-
provider.trackError(error, {
|
|
197
|
-
...attributes,
|
|
198
|
-
component: "iife-loader",
|
|
199
|
-
errorType: "IifeBundleRetryError",
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
wait(ms) {
|
|
203
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Get the bundle URL based on config elements
|
|
207
|
-
*/
|
|
208
|
-
getBundleUrl(elements, bundleType, bundleInfo) {
|
|
209
|
-
const elementTags = Object.keys(elements || {}).sort().join(",");
|
|
210
|
-
// 1. If explicit bundle URL provided in config, use that
|
|
211
|
-
if (bundleInfo?.url) {
|
|
212
|
-
const separator = bundleInfo.url.includes("?") ? "&" : "?";
|
|
213
|
-
const taggedUrl = elementTags
|
|
214
|
-
? `${bundleInfo.url}${separator}elements=${encodeURIComponent(elementTags)}`
|
|
215
|
-
: bundleInfo.url;
|
|
216
|
-
logger.debug("Using explicit bundle URL from config:", taggedUrl);
|
|
217
|
-
return taggedUrl;
|
|
218
|
-
}
|
|
219
|
-
// 2. Build URL from element versions using bundle host
|
|
220
|
-
const packageVersions = Object.values(elements).join("+");
|
|
221
|
-
// Normalize bundleHost to ensure proper URL construction
|
|
222
|
-
// - Remove trailing slash if present (we'll add it back)
|
|
223
|
-
// - Handle empty string (use default)
|
|
224
|
-
let bundleHost = this.config.bundleHost || DEFAULT_BUNDLE_HOST;
|
|
225
|
-
bundleHost = bundleHost.trim();
|
|
226
|
-
// Remove trailing slash and re-add to ensure exactly one
|
|
227
|
-
bundleHost = bundleHost.replace(/\/+$/, "") + "/";
|
|
228
|
-
const baseUrl = `${bundleHost}${encodeURI(packageVersions)}/${bundleType}`;
|
|
229
|
-
const url = elementTags
|
|
230
|
-
? `${baseUrl}?elements=${encodeURIComponent(elementTags)}`
|
|
231
|
-
: baseUrl;
|
|
232
|
-
logger.debug("Using bundle host URL:", url);
|
|
233
|
-
return url;
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Load an IIFE bundle from the specified URL
|
|
237
|
-
*/
|
|
238
|
-
async loadBundleScript(url, doc) {
|
|
239
|
-
return new Promise((resolve, reject) => {
|
|
240
|
-
const script = doc.createElement("script");
|
|
241
|
-
script.src = url;
|
|
242
|
-
script.defer = true;
|
|
243
|
-
script.setAttribute("data-pie-bundle", "true"); // Mark as PIE bundle for cleanup
|
|
244
|
-
script.onload = () => {
|
|
245
|
-
logger.debug("Bundle loaded successfully from:", url);
|
|
246
|
-
resolve();
|
|
247
|
-
};
|
|
248
|
-
script.onerror = () => {
|
|
249
|
-
const error = `Failed to load IIFE bundle from: ${url}`;
|
|
250
|
-
logger.error(error);
|
|
251
|
-
reject(new Error(error));
|
|
252
|
-
};
|
|
253
|
-
doc.head.appendChild(script);
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
async loadBundleScriptWithRetry(url, doc) {
|
|
257
|
-
const retryConfig = this.getBundleRetryConfig();
|
|
258
|
-
const startedAt = Date.now();
|
|
259
|
-
let attempt = 0;
|
|
260
|
-
while (true) {
|
|
261
|
-
attempt += 1;
|
|
262
|
-
try {
|
|
263
|
-
await this.loadBundleScript(url, doc);
|
|
264
|
-
const elapsedMs = Date.now() - startedAt;
|
|
265
|
-
if (attempt > 1) {
|
|
266
|
-
logger.info(`✅ IIFE bundle load recovered after ${attempt} attempts (${elapsedMs}ms): ${url}`);
|
|
267
|
-
this.trackRetryEvent("pie-iife-bundle-retry-success", {
|
|
268
|
-
url,
|
|
269
|
-
attempt,
|
|
270
|
-
elapsedMs,
|
|
271
|
-
timeoutMs: retryConfig.timeoutMs,
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
this.emitBundleRetryStatus({
|
|
275
|
-
state: "completed",
|
|
276
|
-
url,
|
|
277
|
-
attempt,
|
|
278
|
-
elapsedMs,
|
|
279
|
-
timeoutMs: retryConfig.timeoutMs,
|
|
280
|
-
});
|
|
281
|
-
return;
|
|
282
|
-
}
|
|
283
|
-
catch (error) {
|
|
284
|
-
const elapsedMs = Date.now() - startedAt;
|
|
285
|
-
const remainingMs = retryConfig.timeoutMs - elapsedMs;
|
|
286
|
-
const errorMessage = this.toErrorMessage(error);
|
|
287
|
-
if (remainingMs <= 0) {
|
|
288
|
-
const timeoutError = new Error(`IIFE bundle load timed out after ${retryConfig.timeoutMs}ms: ${url}`);
|
|
289
|
-
logger.error(`${timeoutError.message}. Last error: ${errorMessage}`);
|
|
290
|
-
this.trackRetryEvent("pie-iife-bundle-retry-timeout", {
|
|
291
|
-
url,
|
|
292
|
-
attempt,
|
|
293
|
-
elapsedMs,
|
|
294
|
-
timeoutMs: retryConfig.timeoutMs,
|
|
295
|
-
lastError: errorMessage,
|
|
296
|
-
});
|
|
297
|
-
this.trackRetryError(timeoutError, {
|
|
298
|
-
component: "iife-loader",
|
|
299
|
-
url,
|
|
300
|
-
attempt,
|
|
301
|
-
elapsedMs,
|
|
302
|
-
timeoutMs: retryConfig.timeoutMs,
|
|
303
|
-
lastError: errorMessage,
|
|
304
|
-
});
|
|
305
|
-
this.emitBundleRetryStatus({
|
|
306
|
-
state: "timeout",
|
|
307
|
-
url,
|
|
308
|
-
attempt,
|
|
309
|
-
elapsedMs,
|
|
310
|
-
timeoutMs: retryConfig.timeoutMs,
|
|
311
|
-
reason: errorMessage,
|
|
312
|
-
});
|
|
313
|
-
throw timeoutError;
|
|
314
|
-
}
|
|
315
|
-
const retryDelayMs = Math.min(retryConfig.retryDelayMs, remainingMs);
|
|
316
|
-
logger.warn(`⚠️ IIFE bundle load failed (attempt ${attempt}); bundle may still be building. Retrying in ${retryDelayMs}ms: ${url}`);
|
|
317
|
-
this.trackRetryEvent("pie-iife-bundle-retry", {
|
|
318
|
-
url,
|
|
319
|
-
attempt,
|
|
320
|
-
elapsedMs,
|
|
321
|
-
retryDelayMs,
|
|
322
|
-
timeoutMs: retryConfig.timeoutMs,
|
|
323
|
-
lastError: errorMessage,
|
|
324
|
-
});
|
|
325
|
-
this.emitBundleRetryStatus({
|
|
326
|
-
state: "retrying",
|
|
327
|
-
url,
|
|
328
|
-
attempt,
|
|
329
|
-
elapsedMs,
|
|
330
|
-
retryDelayMs,
|
|
331
|
-
timeoutMs: retryConfig.timeoutMs,
|
|
332
|
-
reason: errorMessage,
|
|
333
|
-
});
|
|
334
|
-
await this.wait(retryDelayMs);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
whenDefinedWithTimeout(tagName) {
|
|
339
|
-
const ms = this.config.whenDefinedTimeoutMs ?? 5000;
|
|
340
|
-
return Promise.race([
|
|
341
|
-
customElements.whenDefined(tagName).then(() => undefined),
|
|
342
|
-
new Promise((_, reject) => setTimeout(() => reject(new Error(`Timeout waiting for ${tagName}`)), ms)),
|
|
343
|
-
]);
|
|
344
|
-
}
|
|
345
|
-
createEmptyConfigure() {
|
|
346
|
-
// Minimal configure element to avoid hard failures when a package lacks Configure export.
|
|
347
|
-
// Intentionally does not emit model updates.
|
|
348
|
-
return class EmptyConfigureElement extends HTMLElement {
|
|
349
|
-
_model;
|
|
350
|
-
_configuration;
|
|
351
|
-
set model(m) {
|
|
352
|
-
this._model = m;
|
|
353
|
-
}
|
|
354
|
-
get model() {
|
|
355
|
-
return this._model;
|
|
356
|
-
}
|
|
357
|
-
set configuration(c) {
|
|
358
|
-
this._configuration = c;
|
|
359
|
-
}
|
|
360
|
-
get configuration() {
|
|
361
|
-
return this._configuration;
|
|
362
|
-
}
|
|
363
|
-
};
|
|
364
|
-
}
|
|
365
|
-
/**
|
|
366
|
-
* Register elements from the loaded IIFE bundle into the PIE registry
|
|
367
|
-
*/
|
|
368
|
-
async registerElementsFromBundle(elements, needsControllers, bundleType, diagnostics) {
|
|
369
|
-
const registry = pieRegistry();
|
|
370
|
-
if (!window.pie || !window.pie.default) {
|
|
371
|
-
logger.error("IIFE bundle registration failed: window.pie missing", {
|
|
372
|
-
...(diagnostics || {}),
|
|
373
|
-
elementTags: Object.keys(elements),
|
|
374
|
-
});
|
|
375
|
-
throw new Error("window.pie not found - IIFE bundle did not load correctly. Check IIFE bundle request/response and runtime bundle diagnostics.");
|
|
376
|
-
}
|
|
377
|
-
const pieModule = window.pie.default;
|
|
378
|
-
logger.debug("Found window.pie.default with packages:", Object.keys(pieModule));
|
|
379
|
-
logger.debug("Elements to register:", elements);
|
|
380
|
-
logger.debug("Bundle type:", bundleType);
|
|
381
|
-
const promises = [];
|
|
382
|
-
const isEditorBundle = bundleType === BundleType.editor;
|
|
383
|
-
for (const [tagName, packageVersion] of Object.entries(elements)) {
|
|
384
|
-
try {
|
|
385
|
-
const packageName = getPackageWithoutVersion(packageVersion);
|
|
386
|
-
logger.debug(`Registering element ${tagName} from package ${packageName} (full: ${packageVersion})`);
|
|
387
|
-
const elementData = pieModule[packageName];
|
|
388
|
-
if (!elementData) {
|
|
389
|
-
logger.error("IIFE bundle registration failed: requested package missing", {
|
|
390
|
-
...(diagnostics || {}),
|
|
391
|
-
missingPackageName: packageName,
|
|
392
|
-
elementTag: tagName,
|
|
393
|
-
availablePackageNames: Object.keys(pieModule),
|
|
394
|
-
});
|
|
395
|
-
throw new Error(`Package "${packageName}" not found in IIFE bundle. Available: ${Object.keys(pieModule).join(", ")}`);
|
|
396
|
-
}
|
|
397
|
-
// For editor bundles, look for Configure class; otherwise use Element class.
|
|
398
|
-
// If Configure is missing, fall back to an empty configure element.
|
|
399
|
-
const ElementClass = isEditorBundle
|
|
400
|
-
? elementData.Configure || this.createEmptyConfigure()
|
|
401
|
-
: elementData.Element;
|
|
402
|
-
const controller = needsControllers ? elementData.controller : null;
|
|
403
|
-
// For editor bundles, append -config suffix to tag name
|
|
404
|
-
const actualTagName = validateCustomElementTag(isEditorBundle ? `${tagName}-config` : tagName, `element tag for ${packageName}`);
|
|
405
|
-
if (!ElementClass) {
|
|
406
|
-
const classType = isEditorBundle ? "Configure" : "Element";
|
|
407
|
-
throw new Error(`No ${classType} class found in package ${packageName}`);
|
|
408
|
-
}
|
|
409
|
-
// Register in the global PIE registry (used by shared initialization code)
|
|
410
|
-
registry[actualTagName] = {
|
|
411
|
-
package: packageVersion,
|
|
412
|
-
status: Status.loading,
|
|
413
|
-
tagName: actualTagName,
|
|
414
|
-
element: ElementClass,
|
|
415
|
-
controller: controller,
|
|
416
|
-
config: elementData.config || null,
|
|
417
|
-
bundleType: bundleType || "iife", // Mark bundle type
|
|
418
|
-
};
|
|
419
|
-
// Register custom element if not already defined
|
|
420
|
-
if (isCustomElementConstructor(ElementClass)) {
|
|
421
|
-
const defineResult = defineCustomElementSafely(actualTagName, class extends ElementClass {
|
|
422
|
-
}, `element tag for ${packageName}`);
|
|
423
|
-
if (defineResult.status === "defined") {
|
|
424
|
-
logger.debug(`Registered custom element: ${actualTagName}`);
|
|
425
|
-
}
|
|
426
|
-
else {
|
|
427
|
-
logger.debug(`Element ${actualTagName} already registered`);
|
|
428
|
-
}
|
|
429
|
-
// Wait for element to be defined, then update status
|
|
430
|
-
const promise = this.whenDefinedWithTimeout(actualTagName)
|
|
431
|
-
.then(() => {
|
|
432
|
-
registry[actualTagName] = {
|
|
433
|
-
...registry[actualTagName],
|
|
434
|
-
status: Status.loaded,
|
|
435
|
-
};
|
|
436
|
-
logger.debug(`Element ${actualTagName} fully loaded`);
|
|
437
|
-
})
|
|
438
|
-
.catch((err) => {
|
|
439
|
-
logger.error(`Failed to define element ${actualTagName}:`, err);
|
|
440
|
-
});
|
|
441
|
-
promises.push(promise);
|
|
442
|
-
}
|
|
443
|
-
else {
|
|
444
|
-
logger.warn(`Element class for ${packageName} is not a valid custom element constructor`);
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
catch (err) {
|
|
448
|
-
logger.error(`Failed to register element ${tagName}:`, err);
|
|
449
|
-
throw err;
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
// Wait for all elements to be defined
|
|
453
|
-
await Promise.all(promises);
|
|
454
|
-
logger.debug("All elements registered and defined");
|
|
455
|
-
}
|
|
456
|
-
/**
|
|
457
|
-
* Load PIE elements from IIFE bundle
|
|
458
|
-
*
|
|
459
|
-
* @param contentConfig - Item config with elements
|
|
460
|
-
* @param doc - Document to inject script into
|
|
461
|
-
* @param bundleType - Type of bundle (BundleType.player, BundleType.clientPlayer, or BundleType.editor)
|
|
462
|
-
* @param needsControllers - Whether controllers are needed
|
|
463
|
-
*/
|
|
464
|
-
async load(contentConfig, doc, bundleType, needsControllers) {
|
|
465
|
-
logger.debug("load() called");
|
|
466
|
-
logger.debug("Bundle type:", bundleType);
|
|
467
|
-
logger.debug("Needs controllers:", needsControllers);
|
|
468
|
-
logger.debug("Content config:", contentConfig);
|
|
469
|
-
if (!contentConfig?.elements) {
|
|
470
|
-
logger.warn("No elements in config");
|
|
471
|
-
return;
|
|
472
|
-
}
|
|
473
|
-
const elements = Object.fromEntries(Object.entries(contentConfig.elements).filter(([tagName, packageVersion]) => typeof tagName === "string" &&
|
|
474
|
-
tagName.trim().length > 0 &&
|
|
475
|
-
typeof packageVersion === "string" &&
|
|
476
|
-
packageVersion.trim().length > 0));
|
|
477
|
-
if (Object.keys(elements).length === 0) {
|
|
478
|
-
logger.debug("No valid element package versions found; skipping bundle load");
|
|
479
|
-
return;
|
|
480
|
-
}
|
|
481
|
-
const helpers = this.ensurePieHelpers();
|
|
482
|
-
// 0. Determine bundle URL
|
|
483
|
-
const bundleUrl = this.getBundleUrl(elements, bundleType, contentConfig.bundle);
|
|
484
|
-
const requestedPackageNames = this.getRequestedPackageNames(elements);
|
|
485
|
-
logger.debug("Requested package names:", requestedPackageNames);
|
|
486
|
-
if (helpers.loadingPromises[bundleUrl]) {
|
|
487
|
-
logger.debug("Waiting for in-flight bundle load:", bundleUrl);
|
|
488
|
-
await helpers.loadingPromises[bundleUrl];
|
|
489
|
-
return;
|
|
490
|
-
}
|
|
491
|
-
const loadPromise = this.withGlobalLoadQueue(async () => {
|
|
492
|
-
if (this.isReusableActiveBundle(doc, bundleUrl, requestedPackageNames) &&
|
|
493
|
-
window.pie?.default) {
|
|
494
|
-
logger.debug("Reusing active IIFE bundle:", bundleUrl);
|
|
495
|
-
await this.registerWithReloadRecovery({
|
|
496
|
-
doc,
|
|
497
|
-
elements,
|
|
498
|
-
needsControllers,
|
|
499
|
-
bundleType,
|
|
500
|
-
bundleUrl,
|
|
501
|
-
requestedPackageNames,
|
|
502
|
-
initialPath: "reuse-active-bundle",
|
|
503
|
-
});
|
|
504
|
-
return;
|
|
505
|
-
}
|
|
506
|
-
logger.debug("Loading fresh IIFE bundle:", bundleUrl);
|
|
507
|
-
this.removePieBundleScripts(doc);
|
|
508
|
-
this.clearActiveBundleState();
|
|
509
|
-
await this.loadBundleScriptWithRetry(bundleUrl, doc);
|
|
510
|
-
this.ensurePieHelpers().activeBundleUrl = bundleUrl;
|
|
511
|
-
await this.registerWithReloadRecovery({
|
|
512
|
-
doc,
|
|
513
|
-
elements,
|
|
514
|
-
needsControllers,
|
|
515
|
-
bundleType,
|
|
516
|
-
bundleUrl,
|
|
517
|
-
requestedPackageNames,
|
|
518
|
-
initialPath: "load-fresh-bundle",
|
|
519
|
-
});
|
|
520
|
-
logger.debug("✅ IIFE bundle loaded and elements registered");
|
|
521
|
-
}).catch((err) => {
|
|
522
|
-
logger.error("Failed to load IIFE bundle:", err, this.buildLoadDiagnostics(doc, {
|
|
523
|
-
bundleUrl,
|
|
524
|
-
requestedPackageNames,
|
|
525
|
-
bundleType,
|
|
526
|
-
needsControllers,
|
|
527
|
-
path: "load-fresh-bundle",
|
|
528
|
-
}));
|
|
529
|
-
this.clearActiveBundleState();
|
|
530
|
-
throw err;
|
|
531
|
-
});
|
|
532
|
-
helpers.loadingPromises[bundleUrl] = loadPromise;
|
|
533
|
-
try {
|
|
534
|
-
await loadPromise;
|
|
535
|
-
}
|
|
536
|
-
finally {
|
|
537
|
-
if (helpers.loadingPromises[bundleUrl] === loadPromise) {
|
|
538
|
-
delete helpers.loadingPromises[bundleUrl];
|
|
539
|
-
}
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
/**
|
|
543
|
-
* Get controller for a specific element tag
|
|
544
|
-
*/
|
|
545
|
-
getController(tag) {
|
|
546
|
-
const registry = pieRegistry();
|
|
547
|
-
return registry[tag]?.controller || null;
|
|
548
|
-
}
|
|
549
|
-
/**
|
|
550
|
-
* Wait for elements to be fully loaded
|
|
551
|
-
*/
|
|
552
|
-
async elementsHaveLoaded(elements) {
|
|
553
|
-
const promises = elements.map((el) => {
|
|
554
|
-
logger.debug(`Waiting for ${el.tag} to be defined`);
|
|
555
|
-
return this.whenDefinedWithTimeout(el.tag);
|
|
556
|
-
});
|
|
557
|
-
await Promise.all(promises);
|
|
558
|
-
return { elements, val: true };
|
|
559
|
-
}
|
|
560
|
-
}
|
|
561
|
-
//# sourceMappingURL=iife-loader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"iife-loader.js","sourceRoot":"","sources":["../../src/pie/iife-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EACN,gCAAgC,GAEhC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAElF,8DAA8D;AAC9D,IAAI,MAA0C,CAAC;AAqD/C,kCAAkC;AAClC,2FAA2F;AAC3F,MAAM,CAAC,MAAM,mBAAmB,GAAG,oCAAoC,CAAC;AAExE,yDAAyD;AACzD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACzD,MAAM,CAAC,UAAU,GAAG;QACnB,cAAc,EAAE,EAAE;QAClB,eAAe,EAAE,EAAE;QACnB,eAAe,EAAE,OAAO,CAAC,OAAO,EAAE;QAClC,eAAe,EAAE,IAAI;KACrB,CAAC;AACH,CAAC;AAED,MAAM,OAAO,aAAa;IACjB,MAAM,CAAmB;IAEjC,YAAY,MAAwB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,wCAAwC;QACxC,MAAM,GAAG,eAAe,CACvB,aAAa,EACb,MAAM,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CACpC,CAAC;IACH,CAAC;IAEO,gBAAgB;QACvB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,CAAC,UAAU,GAAG;gBACnB,cAAc,EAAE,EAAE;gBAClB,eAAe,EAAE,EAAE;gBACnB,eAAe,EAAE,OAAO,CAAC,OAAO,EAAE;gBAClC,eAAe,EAAE,IAAI;aACrB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC,UAAU,CAAC;IAC1B,CAAC;IAEO,wBAAwB,CAAC,QAAgC;QAChE,OAAO,KAAK,CAAC,IAAI,CAChB,IAAI,GAAG,CACN,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;aACrB,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;aACjE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAC/D,CACD,CAAC,IAAI,EAAE,CAAC;IACV,CAAC;IAEO,sBAAsB,CAC7B,GAAa,EACb,SAAiB,EACjB,qBAA+B;QAE/B,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;QACtC,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,iBAAiB,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,eAAe,SAAS,IAAI,CAAC,CAAC;QAC5E,MAAM,mBAAmB,GAAG,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC;QAClE,IAAI,CAAC,iBAAiB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACd,CAAC;QACD,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/E,CAAC;IAEO,sBAAsB;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;QAC/B,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,GAAG,CAAC;QACnB,CAAC;IACF,CAAC;IAEO,sBAAsB,CAAC,GAAa;QAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CACzB,GAAG,CAAC,gBAAgB,CAAC,gCAAgC,CAAC,CACtD,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,EAAE,CAAC;QACjB,CAAC;IACF,CAAC;IAEO,4BAA4B,CAAC,GAAa;QACjD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CACzB,GAAG,CAAC,gBAAgB,CAAC,gCAAgC,CAAC,CACtD,CAAC;QACF,OAAO,OAAO;aACZ,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,QAAQ,CAAC;YACzE,MAAM,QAAQ,GAAI,MAAuC,CAAC,GAAG,CAAC;YAC9D,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAEO,oBAAoB,CAC3B,GAAa,EACb,OASC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;QACtC,MAAM,qBAAqB,GAC1B,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,OAAO;YACN,kBAAkB,EAAE,OAAO,CAAC,SAAS;YACrC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;YACpD,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,QAAQ,EAAE,OAAO,CAAC,IAAI;YACtB,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG;YAC1B,mBAAmB,EAClB,CAAC,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YAC1E,qBAAqB;YACrB,yBAAyB,EAAE,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC;SACjE,CAAC;IACH,CAAC;IAEO,8BAA8B,CAAC,GAAY;QAClD,MAAM,OAAO,GACZ,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,OAAO,CACN,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACxC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAC5C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,IAQxC;QACA,MAAM,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE;YAC9D,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,IAAI,EAAE,IAAI,CAAC,WAAW;SACtB,CAAC,CAAC;QACH,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,0BAA0B,CACpC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,UAAU,EACf,kBAAkB,CAClB,CAAC;YACF,OAAO;QACR,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,MAAM,GAAG,CAAC;YACX,CAAC;YACD,MAAM,CAAC,IAAI,CACV,6EAA6E,EAC7E,GAAG,EACH,kBAAkB,CAClB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAI,CAAC,gBAAgB,EAAE,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;QAEzD,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5D,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,IAAI,EAAE,oBAAoB;SAC1B,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,0BAA0B,CACpC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,UAAU,EACf,gBAAgB,CAChB,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,SAA8B;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC9D,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChD,OAAO,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,CACjC,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CACf,CAAC;QACF,OAAO,GAAG,CAAC;IACZ,CAAC;IAEO,cAAc,CAAC,KAAc;QACpC,IAAI,KAAK,YAAY,KAAK;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC;QACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAEO,oBAAoB;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QACjD,MAAM,YAAY,GACjB,OAAO,UAAU,CAAC,YAAY,KAAK,QAAQ,IAAI,UAAU,CAAC,YAAY,GAAG,CAAC;YACzE,CAAC,CAAC,UAAU,CAAC,YAAY;YACzB,CAAC,CAAC,gCAAgC,CAAC,YAAY,CAAC;QAClD,MAAM,SAAS,GACd,OAAO,UAAU,CAAC,SAAS,KAAK,QAAQ,IAAI,UAAU,CAAC,SAAS,GAAG,CAAC;YACnE,CAAC,CAAC,UAAU,CAAC,SAAS;YACtB,CAAC,CAAC,gCAAgC,CAAC,SAAS,CAAC;QAC/C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IACpC,CAAC;IAEO,qBAAqB,CAAC,MAA6B;QAC1D,IAAI,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;IACF,CAAC;IAEO,0BAA0B;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAAE,OAAO,SAAS,CAAC;QACpD,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC;YAAE,OAAO,SAAS,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;YAAE,OAAO,SAAS,CAAC;QAC1C,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEO,eAAe,CACtB,SAAiB,EACjB,UAAmC;QAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACnD,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IAEO,eAAe,CACtB,KAAY,EACZ,UAAmC;QAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACnD,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE;YAC1B,GAAG,UAAU;YACb,SAAS,EAAE,aAAa;YACxB,SAAS,EAAE,sBAAsB;SACjC,CAAC,CAAC;IACJ,CAAC;IAEO,IAAI,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACK,YAAY,CACnB,QAAgC,EAChC,UAAkB,EAClB,UAA6B;QAE7B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEjE,yDAAyD;QACzD,IAAI,UAAU,EAAE,GAAG,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC3D,MAAM,SAAS,GAAG,WAAW;gBAC5B,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,GAAG,SAAS,YAAY,kBAAkB,CAAC,WAAW,CAAC,EAAE;gBAC5E,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,SAAS,CAAC,CAAC;YAClE,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,uDAAuD;QACvD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1D,yDAAyD;QACzD,yDAAyD;QACzD,sCAAsC;QACtC,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,mBAAmB,CAAC;QAC/D,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;QAC/B,yDAAyD;QACzD,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;QAClD,MAAM,OAAO,GAAG,GAAG,UAAU,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3E,MAAM,GAAG,GAAG,WAAW;YACtB,CAAC,CAAC,GAAG,OAAO,aAAa,kBAAkB,CAAC,WAAW,CAAC,EAAE;YAC1D,CAAC,CAAC,OAAO,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC5C,OAAO,GAAG,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,GAAa;QACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;YACjB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC,iCAAiC;YAEjF,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;gBACpB,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;gBACtD,OAAO,EAAE,CAAC;YACX,CAAC,CAAC;YAEF,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;gBACrB,MAAM,KAAK,GAAG,oCAAoC,GAAG,EAAE,CAAC;gBACxD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,CAAC,CAAC;YAEF,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,yBAAyB,CACtC,GAAW,EACX,GAAa;QAEb,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,IAAI,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,CAAC;YACb,IAAI,CAAC;gBACJ,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBACzC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBACjB,MAAM,CAAC,IAAI,CACV,sCAAsC,OAAO,cAAc,SAAS,QAAQ,GAAG,EAAE,CACjF,CAAC;oBACF,IAAI,CAAC,eAAe,CAAC,+BAA+B,EAAE;wBACrD,GAAG;wBACH,OAAO;wBACP,SAAS;wBACT,SAAS,EAAE,WAAW,CAAC,SAAS;qBAChC,CAAC,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,qBAAqB,CAAC;oBAC1B,KAAK,EAAE,WAAW;oBAClB,GAAG;oBACH,OAAO;oBACP,SAAS;oBACT,SAAS,EAAE,WAAW,CAAC,SAAS;iBAChC,CAAC,CAAC;gBACH,OAAO;YACR,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBACzC,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;gBACtD,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAChD,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,YAAY,GAAG,IAAI,KAAK,CAC7B,oCAAoC,WAAW,CAAC,SAAS,OAAO,GAAG,EAAE,CACrE,CAAC;oBACF,MAAM,CAAC,KAAK,CACX,GAAG,YAAY,CAAC,OAAO,iBAAiB,YAAY,EAAE,CACtD,CAAC;oBACF,IAAI,CAAC,eAAe,CAAC,+BAA+B,EAAE;wBACrD,GAAG;wBACH,OAAO;wBACP,SAAS;wBACT,SAAS,EAAE,WAAW,CAAC,SAAS;wBAChC,SAAS,EAAE,YAAY;qBACvB,CAAC,CAAC;oBACH,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;wBAClC,SAAS,EAAE,aAAa;wBACxB,GAAG;wBACH,OAAO;wBACP,SAAS;wBACT,SAAS,EAAE,WAAW,CAAC,SAAS;wBAChC,SAAS,EAAE,YAAY;qBACvB,CAAC,CAAC;oBACH,IAAI,CAAC,qBAAqB,CAAC;wBAC1B,KAAK,EAAE,SAAS;wBAChB,GAAG;wBACH,OAAO;wBACP,SAAS;wBACT,SAAS,EAAE,WAAW,CAAC,SAAS;wBAChC,MAAM,EAAE,YAAY;qBACpB,CAAC,CAAC;oBACH,MAAM,YAAY,CAAC;gBACpB,CAAC;gBAED,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;gBACrE,MAAM,CAAC,IAAI,CACV,uCAAuC,OAAO,gDAAgD,YAAY,OAAO,GAAG,EAAE,CACtH,CAAC;gBACF,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE;oBAC7C,GAAG;oBACH,OAAO;oBACP,SAAS;oBACT,YAAY;oBACZ,SAAS,EAAE,WAAW,CAAC,SAAS;oBAChC,SAAS,EAAE,YAAY;iBACvB,CAAC,CAAC;gBACH,IAAI,CAAC,qBAAqB,CAAC;oBAC1B,KAAK,EAAE,UAAU;oBACjB,GAAG;oBACH,OAAO;oBACP,SAAS;oBACT,YAAY;oBACZ,SAAS,EAAE,WAAW,CAAC,SAAS;oBAChC,MAAM,EAAE,YAAY;iBACpB,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;IACF,CAAC;IAEO,sBAAsB,CAAC,OAAe;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,IAAI,CAAC;QACpD,OAAO,OAAO,CAAC,IAAI,CAAC;YACnB,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;YACzD,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CACT,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC,EACzD,EAAE,CACF,CACD;SACD,CAAC,CAAC;IACJ,CAAC;IAEO,oBAAoB;QAC3B,0FAA0F;QAC1F,6CAA6C;QAC7C,OAAO,MAAM,qBAAsB,SAAQ,WAAW;YAC7C,MAAM,CAAM;YACZ,cAAc,CAAM;YAE5B,IAAI,KAAK,CAAC,CAAM;gBACf,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACjB,CAAC;YACD,IAAI,KAAK;gBACR,OAAO,IAAI,CAAC,MAAM,CAAC;YACpB,CAAC;YAED,IAAI,aAAa,CAAC,CAAM;gBACvB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,aAAa;gBAChB,OAAO,IAAI,CAAC,cAAc,CAAC;YAC5B,CAAC;SACD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,0BAA0B,CACvC,QAAgC,EAChC,gBAAyB,EACzB,UAAuB,EACvB,WAAqC;QAErC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAE/B,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,qDAAqD,EAAE;gBACnE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;gBACtB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;YACH,MAAM,IAAI,KAAK,CACd,+HAA+H,CAC/H,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QACrC,MAAM,CAAC,KAAK,CACX,yCAAyC,EACzC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CACtB,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAEzC,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,UAAU,KAAK,UAAU,CAAC,MAAM,CAAC;QAExD,KAAK,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC;gBACJ,MAAM,WAAW,GAAG,wBAAwB,CAAC,cAAc,CAAC,CAAC;gBAC7D,MAAM,CAAC,KAAK,CACX,uBAAuB,OAAO,iBAAiB,WAAW,WAAW,cAAc,GAAG,CACtF,CAAC;gBAEF,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;oBAClB,MAAM,CAAC,KAAK,CAAC,4DAA4D,EAAE;wBAC1E,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;wBACtB,kBAAkB,EAAE,WAAW;wBAC/B,UAAU,EAAE,OAAO;wBACnB,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;qBAC7C,CAAC,CAAC;oBACH,MAAM,IAAI,KAAK,CACd,YAAY,WAAW,0CAA0C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpG,CAAC;gBACH,CAAC;gBAED,6EAA6E;gBAC7E,oEAAoE;gBACpE,MAAM,YAAY,GAAG,cAAc;oBAClC,CAAC,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,oBAAoB,EAAE;oBACtD,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC;gBACvB,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;gBAEpE,wDAAwD;gBACxD,MAAM,aAAa,GAAG,wBAAwB,CAC7C,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,EAC9C,mBAAmB,WAAW,EAAE,CAChC,CAAC;gBAEF,IAAI,CAAC,YAAY,EAAE,CAAC;oBACnB,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC3D,MAAM,IAAI,KAAK,CACd,MAAM,SAAS,2BAA2B,WAAW,EAAE,CACvD,CAAC;gBACH,CAAC;gBAED,2EAA2E;gBAC3E,QAAQ,CAAC,aAAa,CAAC,GAAG;oBACzB,OAAO,EAAE,cAAc;oBACvB,MAAM,EAAE,MAAM,CAAC,OAAO;oBACtB,OAAO,EAAE,aAAa;oBACtB,OAAO,EAAE,YAAY;oBACrB,UAAU,EAAE,UAAU;oBACtB,MAAM,EAAE,WAAW,CAAC,MAAM,IAAI,IAAI;oBAClC,UAAU,EAAE,UAAU,IAAK,MAAc,EAAE,mBAAmB;iBAC9D,CAAC;gBAEF,iDAAiD;gBACjD,IAAI,0BAA0B,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC9C,MAAM,YAAY,GAAG,yBAAyB,CAC7C,aAAa,EACb,KAAM,SAAQ,YAAY;qBAAG,EAC7B,mBAAmB,WAAW,EAAE,CAChC,CAAC;oBACF,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBACvC,MAAM,CAAC,KAAK,CAAC,8BAA8B,aAAa,EAAE,CAAC,CAAC;oBAC7D,CAAC;yBAAM,CAAC;wBACP,MAAM,CAAC,KAAK,CAAC,WAAW,aAAa,qBAAqB,CAAC,CAAC;oBAC7D,CAAC;oBAED,qDAAqD;oBACrD,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;yBACxD,IAAI,CAAC,GAAG,EAAE;wBACV,QAAQ,CAAC,aAAa,CAAC,GAAG;4BACzB,GAAG,QAAQ,CAAC,aAAa,CAAC;4BAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;yBACrB,CAAC;wBACF,MAAM,CAAC,KAAK,CAAC,WAAW,aAAa,eAAe,CAAC,CAAC;oBACvD,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;wBACd,MAAM,CAAC,KAAK,CAAC,4BAA4B,aAAa,GAAG,EAAE,GAAG,CAAC,CAAC;oBACjE,CAAC,CAAC,CAAC;oBAEJ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,IAAI,CACV,qBAAqB,WAAW,4CAA4C,CAC5E,CAAC;gBACH,CAAC;YACF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,MAAM,CAAC,KAAK,CAAC,8BAA8B,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC5D,MAAM,GAAG,CAAC;YACX,CAAC;QACF,CAAC;QAED,sCAAsC;QACtC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,IAAI,CAChB,aAAkB,EAClB,GAAa,EACb,UAAsB,EACtB,gBAAyB;QAEzB,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAE/C,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO;QACR,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAClC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,QAAmC,CAAC,CAAC,MAAM,CACvE,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,EAAE,CAC7B,OAAO,OAAO,KAAK,QAAQ;YAC3B,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YACzB,OAAO,cAAc,KAAK,QAAQ;YAClC,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CACjC,CACyB,CAAC;QAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAC9E,OAAO;QACR,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExC,0BAA0B;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAClC,QAAQ,EACR,UAAU,EACV,aAAa,CAAC,MAAM,CACpB,CAAC;QACF,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACtE,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,CAAC;QAEhE,IAAI,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,SAAS,CAAC,CAAC;YAC9D,MAAM,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACzC,OAAO;QACR,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,IAAI,EAAE;YACvD,IACC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,qBAAqB,CAAC;gBAClE,MAAM,CAAC,GAAG,EAAE,OAAO,EAClB,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,SAAS,CAAC,CAAC;gBACvD,MAAM,IAAI,CAAC,0BAA0B,CAAC;oBACrC,GAAG;oBACH,QAAQ;oBACR,gBAAgB;oBAChB,UAAU;oBACV,SAAS;oBACT,qBAAqB;oBACrB,WAAW,EAAE,qBAAqB;iBAClC,CAAC,CAAC;gBACH,OAAO;YACR,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAE9B,MAAM,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACrD,IAAI,CAAC,gBAAgB,EAAE,CAAC,eAAe,GAAG,SAAS,CAAC;YAEpD,MAAM,IAAI,CAAC,0BAA0B,CAAC;gBACrC,GAAG;gBACH,QAAQ;gBACR,gBAAgB;gBAChB,UAAU;gBACV,SAAS;gBACT,qBAAqB;gBACrB,WAAW,EAAE,mBAAmB;aAChC,CAAC,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAChB,MAAM,CAAC,KAAK,CACX,6BAA6B,EAC7B,GAAG,EACH,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE;gBAC9B,SAAS;gBACT,qBAAqB;gBACrB,UAAU;gBACV,gBAAgB;gBAChB,IAAI,EAAE,mBAAmB;aACzB,CAAC,CACF,CAAC;YACF,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,MAAM,GAAG,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;QACjD,IAAI,CAAC;YACJ,MAAM,WAAW,CAAC;QACnB,CAAC;gBAAS,CAAC;YACV,IAAI,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,WAAW,EAAE,CAAC;gBACxD,OAAO,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC;QACF,CAAC;IACF,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,GAAW;QAC/B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,IAAI,IAAI,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,kBAAkB,CAC9B,QAA8C;QAE9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACpC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAChC,CAAC;CACD"}
|