@miragari/ai-media-router-client 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,525 @@
1
+ import { MediaRouterException, createMediaRouterError, normalizeMediaRouterError, normalizeUnknownError, resolveDimensions, resolveModelDefinition, validateGenerationRequest, } from "@miragari/ai-media-router-core";
2
+ import { cancelBatchJob, createSplitImageJob, shouldSplitImages, statusBatchJob, } from "./batch.js";
3
+ import { isNormalizedImageRequest, normalizeAudioRequest, normalizeGenerationRequest, normalizeImageRequest, normalizeMediaRouterDefaults, normalizeModel3DRequest, normalizeVideoRequest, resolveMediaRouterProfile, } from "./normalize.js";
4
+ import { normalizeProviderCreateOutput, normalizeProviderJob, } from "./provider-output.js";
5
+ import { ProviderRegistry, } from "./registry.js";
6
+ import { normalizeTerminalJob } from "./terminal.js";
7
+ import { waitForJob } from "./wait.js";
8
+ const generationMediaTypes = ["image", "video", "audio", "model3d"];
9
+ export class MediaRouter {
10
+ registry;
11
+ defaults;
12
+ constructor(options) {
13
+ this.registry = new ProviderRegistry(options);
14
+ const explicitDefaults = normalizeMediaRouterDefaults(options.defaults);
15
+ this.defaults = mergeMediaRouterDefaults(inferRegistryDefaults(this.registry, explicitDefaults), explicitDefaults);
16
+ }
17
+ profile(profile) {
18
+ const normalizedProfile = typeof profile === "string" ? profile.trim() : "";
19
+ if (!normalizedProfile) {
20
+ throw new MediaRouterException(createMediaRouterError("BAD_REQUEST", "Profile name must be a non-empty string", {
21
+ provider: "router",
22
+ }));
23
+ }
24
+ const profileConfig = this.resolveProfileBinding(normalizedProfile);
25
+ return new ProfiledMediaRouter(this, normalizedProfile, this.profileStringField(profileConfig));
26
+ }
27
+ async create(input, options) {
28
+ return this.createMedia(input, undefined, options);
29
+ }
30
+ async createMedia(input, mediaType, options) {
31
+ return this.createNormalized(this.normalizeInput(input, mediaType, options), options);
32
+ }
33
+ async createNormalized(request, options) {
34
+ this.validateRunOptions(request, options);
35
+ const prepared = this.prepare(request, options);
36
+ if (isNormalizedImageRequest(prepared.request) &&
37
+ shouldSplitImages(prepared.request, prepared.model)) {
38
+ return this.createSplitImageJob(prepared.request, options);
39
+ }
40
+ return this.executePrepared(prepared);
41
+ }
42
+ async executePrepared(prepared) {
43
+ try {
44
+ const output = await prepared.runtime.plugin.driver.create({
45
+ ...prepared.runtime,
46
+ request: prepared.request,
47
+ model: prepared.model,
48
+ });
49
+ return normalizeProviderCreateOutput(output, {
50
+ provider: prepared.request.provider,
51
+ providerId: prepared.runtime.providerId,
52
+ model: prepared.request.model,
53
+ type: prepared.request.type,
54
+ });
55
+ }
56
+ catch (error) {
57
+ throw new MediaRouterException(this.normalizeError(error, prepared.runtime, prepared.request));
58
+ }
59
+ }
60
+ async createImage(input, options) {
61
+ return this.createMedia(input, "image", options);
62
+ }
63
+ async createVideo(input, options) {
64
+ return this.createMedia(input, "video", options);
65
+ }
66
+ async createAudio(input, options) {
67
+ return this.createMedia(input, "audio", options);
68
+ }
69
+ async createModel3D(input, options) {
70
+ return this.createMedia(input, "model3d", options);
71
+ }
72
+ async status(job) {
73
+ if (job.children?.length)
74
+ return this.statusBatchJob(job);
75
+ const { runtime } = this.registry.get(job.provider);
76
+ if (!runtime.plugin.driver.poll) {
77
+ throw new MediaRouterException(createMediaRouterError("BAD_REQUEST", "Provider does not support status polling", {
78
+ provider: job.provider,
79
+ model: job.model,
80
+ }));
81
+ }
82
+ try {
83
+ const polled = await runtime.plugin.driver.poll({ ...runtime, job });
84
+ return this.normalizeStatusJob(normalizeProviderJob(polled, {
85
+ provider: job.provider,
86
+ providerId: job.providerId,
87
+ model: job.model,
88
+ type: job.type,
89
+ }));
90
+ }
91
+ catch (error) {
92
+ throw new MediaRouterException(this.normalizeError(error, runtime, undefined, job));
93
+ }
94
+ }
95
+ async cancel(job) {
96
+ if (job.children?.length)
97
+ return this.cancelBatchJob(job);
98
+ const { runtime } = this.registry.get(job.provider);
99
+ if (!runtime.plugin.driver.cancel) {
100
+ throw new MediaRouterException(createMediaRouterError("BAD_REQUEST", "Provider does not support cancellation", {
101
+ provider: job.provider,
102
+ model: job.model,
103
+ }));
104
+ }
105
+ try {
106
+ await runtime.plugin.driver.cancel({ ...runtime, job });
107
+ }
108
+ catch (error) {
109
+ throw new MediaRouterException(this.normalizeError(error, runtime, undefined, job));
110
+ }
111
+ }
112
+ async wait(job, options) {
113
+ if (job.children?.length) {
114
+ return waitForJob({
115
+ job,
116
+ resolveProvider: (provider) => this.registry.get(provider).runtime,
117
+ options,
118
+ });
119
+ }
120
+ const { runtime } = this.registry.get(job.provider);
121
+ return waitForJob({
122
+ job,
123
+ runtime,
124
+ resolveProvider: (provider) => this.registry.get(provider).runtime,
125
+ options,
126
+ });
127
+ }
128
+ async generate(input, options) {
129
+ return this.generateMedia(input, undefined, options);
130
+ }
131
+ async generateMedia(input, mediaType, options) {
132
+ const job = await this.createMedia(input, mediaType, options);
133
+ return this.wait(job, options);
134
+ }
135
+ async generateImage(input, options) {
136
+ return this.generateMedia(input, "image", options);
137
+ }
138
+ async generateVideo(input, options) {
139
+ return this.generateMedia(input, "video", options);
140
+ }
141
+ async generateAudio(input, options) {
142
+ return this.generateMedia(input, "audio", options);
143
+ }
144
+ async generateModel3D(input, options) {
145
+ return this.generateMedia(input, "model3d", options);
146
+ }
147
+ async createSplitImageJob(request, options) {
148
+ return createSplitImageJob({
149
+ request,
150
+ options,
151
+ resolveProvider: (provider) => this.resolveBatchProvider(provider),
152
+ createChild: (childRequest, childOptions) => this.createNormalized(childRequest, childOptions),
153
+ normalizeError: (error, runtime, childRequest, job) => this.normalizeError(error, runtime, childRequest, job),
154
+ });
155
+ }
156
+ normalizeStatusJob(job) {
157
+ return normalizeTerminalJob(job);
158
+ }
159
+ async cancelBatchJob(job) {
160
+ return cancelBatchJob({
161
+ job,
162
+ resolveProvider: (provider) => this.resolveBatchProvider(provider),
163
+ normalizeError: (error, runtime, request, childJob) => this.normalizeError(error, runtime, request, childJob),
164
+ });
165
+ }
166
+ async statusBatchJob(job) {
167
+ return statusBatchJob({
168
+ job,
169
+ statusChild: (child) => this.status(child),
170
+ normalizeStatusJob: (child) => this.normalizeStatusJob(child),
171
+ normalizeError: (error, runtime, request, childJob) => this.normalizeError(error, runtime, request, childJob),
172
+ });
173
+ }
174
+ resolveBatchProvider(provider) {
175
+ const { plugin, runtime } = this.registry.get(provider);
176
+ return { providerId: plugin.id, runtime };
177
+ }
178
+ normalizeInput(input, mediaType, options) {
179
+ const defaults = this.defaultsFor(options);
180
+ this.validateResolvedDefaultProvider(defaults, mediaType);
181
+ const profiledInput = this.applyRunProfile(input, defaults, mediaType, options);
182
+ if (mediaType === "image") {
183
+ return normalizeImageRequest(profiledInput, defaults);
184
+ }
185
+ if (mediaType === "video") {
186
+ return normalizeVideoRequest(profiledInput, defaults);
187
+ }
188
+ if (mediaType === "audio") {
189
+ return normalizeAudioRequest(profiledInput, defaults);
190
+ }
191
+ if (mediaType === "model3d") {
192
+ return normalizeModel3DRequest(profiledInput, defaults);
193
+ }
194
+ return normalizeGenerationRequest(profiledInput, defaults);
195
+ }
196
+ validateResolvedDefaultProvider(defaults, mediaType) {
197
+ const provider = mediaType
198
+ ? defaults?.providers?.[mediaType] ?? defaults?.provider
199
+ : defaults?.provider;
200
+ if (provider)
201
+ this.registry.get(provider);
202
+ }
203
+ defaultsFor(options) {
204
+ return mergeMediaRouterDefaults(this.defaults, runOptionDefaults(options));
205
+ }
206
+ applyRunProfile(input, defaults, mediaType, options) {
207
+ if (!options?.profile)
208
+ return input;
209
+ const profile = resolveMediaRouterProfile(defaults, options.profile);
210
+ const stringField = mediaType === "audio" || profile?.type === "audio" ? "text" : "prompt";
211
+ return withProfile(options.profile, input, stringField);
212
+ }
213
+ prepare(request, options) {
214
+ const { plugin, config, runtime } = this.registry.get(request.provider);
215
+ const model = resolveModelDefinition(plugin, config, request.model);
216
+ validateGenerationRequest({ request, model });
217
+ const resolvedModel = model;
218
+ const withDefaults = this.applyDefaults(request, resolvedModel);
219
+ validateGenerationRequest({ request: withDefaults, model: resolvedModel });
220
+ const dimensionOptions = withDefaults.options;
221
+ const resolvedDimensions = resolveDimensions({
222
+ width: dimensionOptions?.width,
223
+ height: dimensionOptions?.height,
224
+ mediaType: withDefaults.type,
225
+ capabilities: resolvedModel.capabilities?.dimensions,
226
+ mode: options?.dimensionMode,
227
+ provider: withDefaults.provider,
228
+ model: withDefaults.model,
229
+ });
230
+ return {
231
+ request: withDefaults,
232
+ model: resolvedModel,
233
+ runtime: {
234
+ ...runtime,
235
+ resolved: {
236
+ dimensions: resolvedDimensions,
237
+ },
238
+ },
239
+ };
240
+ }
241
+ applyDefaults(request, model) {
242
+ if (!model.defaults)
243
+ return request;
244
+ return {
245
+ ...request,
246
+ options: {
247
+ ...model.defaults.options,
248
+ ...request.options,
249
+ },
250
+ providerOptions: {
251
+ ...model.defaults.providerOptions,
252
+ ...request.providerOptions,
253
+ },
254
+ };
255
+ }
256
+ normalizeError(error, runtime, request, job) {
257
+ const fallback = {
258
+ provider: request?.provider ?? job?.provider ?? runtime.provider,
259
+ model: request?.model ?? job?.model ?? "unknown",
260
+ };
261
+ const normalized = normalizeMediaRouterError(error, fallback);
262
+ if (normalized)
263
+ return normalized;
264
+ const custom = runtime.plugin.driver.normalizeError?.(error, { request, job, runtime });
265
+ const normalizedCustom = normalizeMediaRouterError(custom, fallback);
266
+ if (normalizedCustom)
267
+ return normalizedCustom;
268
+ if (custom)
269
+ return normalizeUnknownError(custom, fallback);
270
+ return normalizeUnknownError(error, fallback);
271
+ }
272
+ validateRunOptions(request, options) {
273
+ const maxConcurrency = options?.batch?.maxConcurrency ?? options?.maxConcurrency;
274
+ if (maxConcurrency != null && (!Number.isInteger(maxConcurrency) || maxConcurrency < 1)) {
275
+ throw new MediaRouterException(createMediaRouterError("BAD_REQUEST", "maxConcurrency must be a positive integer", {
276
+ provider: request.provider,
277
+ model: request.model,
278
+ }));
279
+ }
280
+ }
281
+ resolveProfileBinding(profile) {
282
+ return resolveMediaRouterProfile(this.defaults, profile);
283
+ }
284
+ profileStringField(profile) {
285
+ return profile.type === "audio" ? "text" : "prompt";
286
+ }
287
+ }
288
+ export class ProfiledMediaRouter {
289
+ router;
290
+ profile;
291
+ stringField;
292
+ constructor(router, profile, stringField) {
293
+ this.router = router;
294
+ this.profile = profile;
295
+ this.stringField = stringField;
296
+ }
297
+ async create(input, options) {
298
+ return this.createMedia(input, undefined, options);
299
+ }
300
+ async createImage(input, options) {
301
+ return this.createMedia(input, "image", options);
302
+ }
303
+ async createVideo(input, options) {
304
+ return this.createMedia(input, "video", options);
305
+ }
306
+ async createAudio(input, options) {
307
+ return this.createMedia(input, "audio", options);
308
+ }
309
+ async createModel3D(input, options) {
310
+ return this.createMedia(input, "model3d", options);
311
+ }
312
+ async generate(input, options) {
313
+ return this.generateMedia(input, undefined, options);
314
+ }
315
+ async generateImage(input, options) {
316
+ return this.generateMedia(input, "image", options);
317
+ }
318
+ async generateVideo(input, options) {
319
+ return this.generateMedia(input, "video", options);
320
+ }
321
+ async generateAudio(input, options) {
322
+ return this.generateMedia(input, "audio", options);
323
+ }
324
+ async generateModel3D(input, options) {
325
+ return this.generateMedia(input, "model3d", options);
326
+ }
327
+ async status(job) {
328
+ return this.router.status(job);
329
+ }
330
+ async wait(job, options) {
331
+ return this.router.wait(job, options);
332
+ }
333
+ async cancel(job) {
334
+ return this.router.cancel(job);
335
+ }
336
+ createMedia(input, mediaType, options) {
337
+ const profiled = withProfile(this.profile, input, this.stringFieldFor(mediaType));
338
+ if (mediaType === "image") {
339
+ return this.router.createImage(profiled, options);
340
+ }
341
+ if (mediaType === "video") {
342
+ return this.router.createVideo(profiled, options);
343
+ }
344
+ if (mediaType === "audio") {
345
+ return this.router.createAudio(profiled, options);
346
+ }
347
+ if (mediaType === "model3d") {
348
+ return this.router.createModel3D(profiled, options);
349
+ }
350
+ return this.router.create(profiled, options);
351
+ }
352
+ generateMedia(input, mediaType, options) {
353
+ const profiled = withProfile(this.profile, input, this.stringFieldFor(mediaType));
354
+ if (mediaType === "image") {
355
+ return this.router.generateImage(profiled, options);
356
+ }
357
+ if (mediaType === "video") {
358
+ return this.router.generateVideo(profiled, options);
359
+ }
360
+ if (mediaType === "audio") {
361
+ return this.router.generateAudio(profiled, options);
362
+ }
363
+ if (mediaType === "model3d") {
364
+ return this.router.generateModel3D(profiled, options);
365
+ }
366
+ return this.router.generate(profiled, options);
367
+ }
368
+ stringFieldFor(mediaType) {
369
+ return mediaType === "audio" ? "text" : this.stringField;
370
+ }
371
+ }
372
+ function withProfile(profile, input, stringField = "prompt") {
373
+ if (typeof input === "string") {
374
+ return { profile, [stringField]: input };
375
+ }
376
+ const existing = input.profile;
377
+ if (existing != null && existing !== profile) {
378
+ throw new MediaRouterException(createMediaRouterError("BAD_REQUEST", `Profile binding ${profile} cannot be used with input profile ${String(existing)}`, { provider: "router" }));
379
+ }
380
+ return { ...input, profile };
381
+ }
382
+ function mergeMediaRouterDefaults(base, override) {
383
+ if (!base)
384
+ return override;
385
+ if (!override)
386
+ return base;
387
+ return compactDefaults({
388
+ ...base,
389
+ ...override,
390
+ providers: mergeRecord(base.providers, override.providers),
391
+ models: mergeRecord(base.models, override.models),
392
+ options: mergeMediaRecordMap(base.options, override.options),
393
+ providerOptions: mergeMediaRecordMap(base.providerOptions, override.providerOptions),
394
+ profiles: mergeProfiles(base.profiles, override.profiles),
395
+ });
396
+ }
397
+ function runOptionDefaults(options) {
398
+ if (!options)
399
+ return undefined;
400
+ const shortcuts = runOptionDefaultShortcuts(options);
401
+ if (!shortcuts)
402
+ return normalizeMediaRouterDefaults(options.defaults);
403
+ return mergeMediaRouterDefaults(normalizeMediaRouterDefaults(shortcuts), normalizeMediaRouterDefaults(options.defaults));
404
+ }
405
+ function runOptionDefaultShortcuts(options) {
406
+ if (!options.provider &&
407
+ !options.model &&
408
+ !options.profiles &&
409
+ options.image === undefined &&
410
+ options.video === undefined &&
411
+ options.audio === undefined &&
412
+ options.model3d === undefined) {
413
+ return undefined;
414
+ }
415
+ return {
416
+ provider: options.provider,
417
+ model: options.model,
418
+ profiles: options.profiles,
419
+ image: options.image,
420
+ video: options.video,
421
+ audio: options.audio,
422
+ model3d: options.model3d,
423
+ };
424
+ }
425
+ function inferRegistryDefaults(registry, explicit) {
426
+ const entries = registry.entries();
427
+ const defaults = {};
428
+ for (const mediaType of generationMediaTypes) {
429
+ const entry = inferredProviderEntry(entries, explicit, mediaType);
430
+ if (!entry)
431
+ continue;
432
+ const model = firstModelForMediaType(entry.plugin, mediaType);
433
+ if (!model)
434
+ continue;
435
+ if (!resolvedDefaultProvider(explicit, mediaType)) {
436
+ defaults.providers = {
437
+ ...defaults.providers,
438
+ [mediaType]: entry.provider,
439
+ };
440
+ }
441
+ if (!resolvedDefaultModel(explicit, mediaType)) {
442
+ defaults.models = {
443
+ ...defaults.models,
444
+ [mediaType]: model,
445
+ };
446
+ }
447
+ }
448
+ return compactDefaults(defaults);
449
+ }
450
+ function inferredProviderEntry(entries, explicit, mediaType) {
451
+ const provider = resolvedDefaultProvider(explicit, mediaType);
452
+ if (provider) {
453
+ const entry = entries.find((item) => item.provider === provider);
454
+ return entry && firstModelForMediaType(entry.plugin, mediaType) ? entry : undefined;
455
+ }
456
+ return entries.find((entry) => firstModelForMediaType(entry.plugin, mediaType));
457
+ }
458
+ function firstModelForMediaType(plugin, mediaType) {
459
+ const defaultModel = plugin.defaultModels?.[mediaType];
460
+ if (defaultModel && plugin.models[defaultModel]?.type === mediaType)
461
+ return defaultModel;
462
+ return Object.values(plugin.models).find((model) => model.type === mediaType)?.id;
463
+ }
464
+ function resolvedDefaultProvider(defaults, mediaType) {
465
+ return defaults?.providers?.[mediaType] ?? defaults?.provider;
466
+ }
467
+ function resolvedDefaultModel(defaults, mediaType) {
468
+ return defaults?.models?.[mediaType] ?? defaults?.model;
469
+ }
470
+ function mergeRecord(base, override) {
471
+ if (!base)
472
+ return override;
473
+ if (!override)
474
+ return base;
475
+ return compactRecord({ ...base, ...override });
476
+ }
477
+ function mergeMediaRecordMap(base, override) {
478
+ if (!base)
479
+ return override;
480
+ if (!override)
481
+ return base;
482
+ const result = { ...base };
483
+ for (const mediaType of ["image", "video", "audio", "model3d"]) {
484
+ result[mediaType] = compactRecord({
485
+ ...base[mediaType],
486
+ ...override[mediaType],
487
+ });
488
+ }
489
+ return compactRecord(result);
490
+ }
491
+ function mergeProfiles(base, override) {
492
+ if (!base)
493
+ return override;
494
+ if (!override)
495
+ return base;
496
+ const result = { ...base };
497
+ for (const [name, profile] of Object.entries(override)) {
498
+ result[name] = mergeProfile(result[name], profile);
499
+ }
500
+ return compactRecord(result);
501
+ }
502
+ function mergeProfile(base, override) {
503
+ if (!base)
504
+ return override;
505
+ return compactRecord({
506
+ ...base,
507
+ ...override,
508
+ options: compactRecord({
509
+ ...base.options,
510
+ ...override.options,
511
+ }),
512
+ providerOptions: compactRecord({
513
+ ...base.providerOptions,
514
+ ...override.providerOptions,
515
+ }),
516
+ });
517
+ }
518
+ function compactDefaults(defaults) {
519
+ return compactRecord(defaults);
520
+ }
521
+ function compactRecord(record) {
522
+ const entries = Object.entries(record).filter(([, value]) => value !== undefined);
523
+ return entries.length ? Object.fromEntries(entries) : undefined;
524
+ }
525
+ //# sourceMappingURL=media-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-router.js","sourceRoot":"","sources":["../src/media-router.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,GAS1B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GACf,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,GAa1B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,gBAAgB,GAGjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,UAAU,EAAoB,MAAM,WAAW,CAAA;AAkCxD,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAU,CAAA;AAE5E,MAAM,OAAO,WAAW;IACL,QAAQ,CAAkB;IAC1B,QAAQ,CAA2C;IAEpE,YAAY,OAA2B;QACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAC7C,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACvE,IAAI,CAAC,QAAQ,GAAG,wBAAwB,CACtC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EACtD,gBAAgB,CACjB,CAAA;IACH,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,MAAM,iBAAiB,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC3E,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,IAAI,oBAAoB,CAC5B,sBAAsB,CAAC,aAAa,EAAE,yCAAyC,EAAE;gBAC/E,QAAQ,EAAE,QAAQ;aACnB,CAAC,CACH,CAAA;QACH,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAA;QACnE,OAAO,IAAI,mBAAmB,CAC5B,IAAI,EACJ,iBAAiB,EACjB,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CACvC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAsB,EAAE,OAAoB;QACvD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,KAAsB,EACtB,SAA0C,EAC1C,OAAoB;QAEpB,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;IACvF,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,OAAU,EACV,OAAoB;QAEpB,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC/C,IACE,wBAAwB,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC1C,iBAAiB,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EACnD,CAAC;YACD,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;IACvC,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,QAA4B;QAE5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;gBACzD,GAAG,QAAQ,CAAC,OAAO;gBACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAC,CAAA;YACF,OAAO,6BAA6B,CAAC,MAAM,EAAE;gBAC3C,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ;gBACnC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU;gBACvC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK;gBAC7B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI;aAC5B,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,oBAAoB,CAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAC/D,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CACf,KAA2B,EAC3B,OAAoB;QAEpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,WAAW,CACf,KAA2B,EAC3B,OAAoB;QAEpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,WAAW,CACf,KAA2B,EAC3B,OAAoB;QAEpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAA6B,EAC7B,OAAoB;QAEpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAkB;QAC7B,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QACzD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACnD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,IAAI,oBAAoB,CAC5B,sBAAsB,CAAC,aAAa,EAAE,0CAA0C,EAAE;gBAChF,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CAAC,CACH,CAAA;QACH,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,CAAC,CAAA;YACpE,OAAO,IAAI,CAAC,kBAAkB,CAC5B,oBAAoB,CAAC,MAAM,EAAE;gBAC3B,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC,CACH,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAA;QACrF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAkB;QAC7B,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QACzD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACnD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,IAAI,oBAAoB,CAC5B,sBAAsB,CAAC,aAAa,EAAE,wCAAwC,EAAE;gBAC9E,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CAAC,CACH,CAAA;QACH,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,CAAC,CAAA;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAA;QACrF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAkB,EAAE,OAAqB;QAClD,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YACzB,OAAO,UAAU,CAAC;gBAChB,GAAG;gBACH,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO;gBAClE,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACnD,OAAO,UAAU,CAAC;YAChB,GAAG;YACH,OAAO;YACP,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO;YAClE,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAsB,EAAE,OAAoB;QACzD,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,KAAsB,EACtB,SAA0C,EAC1C,OAAoB;QAEpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAA2B,EAC3B,OAAoB;QAEpB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAA2B,EAC3B,OAAoB;QAEpB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAA2B,EAC3B,OAAoB;QAEpB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAA6B,EAC7B,OAAoB;QAEpB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,OAAyC,EACzC,OAAoB;QAEpB,OAAO,mBAAmB,CAAC;YACzB,OAAO;YACP,OAAO;YACP,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YAClE,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,EAAE,CAC1C,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC;YACnD,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,CACpD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC;SACzD,CAAC,CAAA;IACJ,CAAC;IAEO,kBAAkB,CAAC,GAAkB;QAC3C,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAA;IAClC,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,GAAkB;QAC7C,OAAO,cAAc,CAAC;YACpB,GAAG;YACH,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YAClE,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CACpD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;SACzD,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,GAAkB;QAC7C,OAAO,cAAc,CAAC;YACpB,GAAG;YACH,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAC1C,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;YAC7D,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CACpD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;SACzD,CAAC,CAAA;IACJ,CAAC;IAEO,oBAAoB,CAAC,QAAgB;QAI3C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACvD,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,CAAA;IAC3C,CAAC;IAEO,cAAc,CACpB,KAAsB,EACtB,SAA0C,EAC1C,OAAoB;QAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAC1C,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QACzD,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAC/E,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,qBAAqB,CAAC,aAAqC,EAAE,QAAQ,CAAC,CAAA;QAC/E,CAAC;QACD,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,qBAAqB,CAAC,aAAqC,EAAE,QAAQ,CAAC,CAAA;QAC/E,CAAC;QACD,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,qBAAqB,CAAC,aAAqC,EAAE,QAAQ,CAAC,CAAA;QAC/E,CAAC;QACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,uBAAuB,CAAC,aAAuC,EAAE,QAAQ,CAAC,CAAA;QACnF,CAAC;QACD,OAAO,0BAA0B,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;IAC5D,CAAC;IAEO,+BAA+B,CACrC,QAAmD,EACnD,SAA0C;QAE1C,MAAM,QAAQ,GAAG,SAAS;YACxB,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,QAAQ,EAAE,QAAQ;YACxD,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAA;QACtB,IAAI,QAAQ;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC3C,CAAC;IAEO,WAAW,CAAC,OAA+B;QACjD,OAAO,wBAAwB,CAC7B,IAAI,CAAC,QAAQ,EACb,iBAAiB,CAAC,OAAO,CAAC,CAC3B,CAAA;IACH,CAAC;IAEO,eAAe,CACrB,KAAsB,EACtB,QAAmD,EACnD,SAA0C,EAC1C,OAA+B;QAE/B,IAAI,CAAC,OAAO,EAAE,OAAO;YAAE,OAAO,KAAK,CAAA;QACnC,MAAM,OAAO,GAAG,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QACpE,MAAM,WAAW,GAAG,SAAS,KAAK,OAAO,IAAI,OAAO,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;QAC1F,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IACzD,CAAC;IAEO,OAAO,CACb,OAAU,EACV,OAAoB;QAEpB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACvE,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACnE,yBAAyB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QAC7C,MAAM,aAAa,GAAG,KAAwB,CAAA;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;QAC/D,yBAAyB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAA;QAC1E,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAEzB,CAAA;QACb,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;YAC3C,KAAK,EAAE,gBAAgB,EAAE,KAAK;YAC9B,MAAM,EAAE,gBAAgB,EAAE,MAAM;YAChC,SAAS,EAAE,YAAY,CAAC,IAAI;YAC5B,YAAY,EAAE,aAAa,CAAC,YAAY,EAAE,UAAU;YACpD,IAAI,EAAE,OAAO,EAAE,aAAa;YAC5B,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,KAAK,EAAE,YAAY,CAAC,KAAK;SAC1B,CAAC,CAAA;QAEF,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE;gBACP,GAAG,OAAO;gBACV,QAAQ,EAAE;oBACR,UAAU,EAAE,kBAAkB;iBAC/B;aACF;SACF,CAAA;IACH,CAAC;IAEO,aAAa,CACnB,OAAU,EACV,KAAsB;QAEtB,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,OAAO,CAAA;QACnC,OAAO;YACL,GAAG,OAAO;YACV,OAAO,EAAE;gBACP,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO;gBACzB,GAAG,OAAO,CAAC,OAAO;aACnB;YACD,eAAe,EAAE;gBACf,GAAG,KAAK,CAAC,QAAQ,CAAC,eAAe;gBACjC,GAAG,OAAO,CAAC,eAAe;aAC3B;SACG,CAAA;IACR,CAAC;IAEO,cAAc,CACpB,KAAc,EACd,OAA+B,EAC/B,OAA2B,EAC3B,GAAmB;QAEnB,MAAM,QAAQ,GAAG;YACf,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ;YAChE,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,SAAS;SACjD,CAAA;QACD,MAAM,UAAU,GAAG,yBAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC7D,IAAI,UAAU;YAAE,OAAO,UAAU,CAAA;QACjC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;QACvF,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACpE,IAAI,gBAAgB;YAAE,OAAO,gBAAgB,CAAA;QAC7C,IAAI,MAAM;YAAE,OAAO,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC1D,OAAO,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAEO,kBAAkB,CAAC,OAA0B,EAAE,OAA+B;QACpF,MAAM,cAAc,GAAG,OAAO,EAAE,KAAK,EAAE,cAAc,IAAI,OAAO,EAAE,cAAc,CAAA;QAChF,IAAI,cAAc,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC;YACxF,MAAM,IAAI,oBAAoB,CAC5B,sBAAsB,CAAC,aAAa,EAAE,2CAA2C,EAAE;gBACjF,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CACH,CAAA;QACH,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,OAAe;QAC3C,OAAO,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAuB,CAAA;IAChF,CAAC;IAEO,kBAAkB,CAAC,OAA2B;QACpD,OAAO,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;IACrD,CAAC;CACF;AAED,MAAM,OAAO,mBAAmB;IAEX;IACR;IACQ;IAHnB,YACmB,MAAmB,EAC3B,OAAe,EACP,WAA8B;QAF9B,WAAM,GAAN,MAAM,CAAa;QAC3B,YAAO,GAAP,OAAO,CAAQ;QACP,gBAAW,GAAX,WAAW,CAAmB;IAC9C,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,KAAsB,EAAE,OAAoB;QACvD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,WAAW,CACf,KAA2B,EAC3B,OAAoB;QAEpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,WAAW,CACf,KAA2B,EAC3B,OAAoB;QAEpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,WAAW,CACf,KAA2B,EAC3B,OAAoB;QAEpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAA6B,EAC7B,OAAoB;QAEpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,KAAsB,EACtB,OAAoB;QAEpB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAA2B,EAC3B,OAAoB;QAEpB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAA2B,EAC3B,OAAoB;QAEpB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAA2B,EAC3B,OAAoB;QAEpB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAA6B,EAC7B,OAAoB;QAEpB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAkB;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAkB,EAAE,OAAqB;QAClD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAkB;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;IAEO,WAAW,CACjB,KAAsB,EACtB,SAA0C,EAC1C,OAAoB;QAEpB,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAA;QACjF,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAgC,EAAE,OAAO,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAgC,EAAE,OAAO,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAgC,EAAE,OAAO,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAkC,EAAE,OAAO,CAAC,CAAA;QAC/E,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC;IAEO,aAAa,CACnB,KAAsB,EACtB,SAA0C,EAC1C,OAAoB;QAEpB,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAA;QACjF,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAgC,EAAE,OAAO,CAAC,CAAA;QAC7E,CAAC;QACD,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAgC,EAAE,OAAO,CAAC,CAAA;QAC7E,CAAC;QACD,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAgC,EAAE,OAAO,CAAC,CAAA;QAC7E,CAAC;QACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAkC,EAAE,OAAO,CAAC,CAAA;QACjF,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAChD,CAAC;IAEO,cAAc,CAAC,SAA0C;QAC/D,OAAO,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAA;IAC1D,CAAC;CACF;AAED,SAAS,WAAW,CAClB,OAAe,EACf,KAAQ,EACR,cAAiC,QAAQ;IAEzC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAA;IAC1C,CAAC;IACD,MAAM,QAAQ,GAAI,KAA+B,CAAC,OAAO,CAAA;IACzD,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC7C,MAAM,IAAI,oBAAoB,CAC5B,sBAAsB,CACpB,aAAa,EACb,mBAAmB,OAAO,sCAAsC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAClF,EAAE,QAAQ,EAAE,QAAQ,EAAE,CACvB,CACF,CAAA;IACH,CAAC;IACD,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAqB,CAAA;AACjD,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAA+C,EAC/C,QAAmD;IAEnD,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAA;IAC1B,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,OAAO,eAAe,CAAC;QACrB,GAAG,IAAI;QACP,GAAG,QAAQ;QACX,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;QAC1D,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;QACjD,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;QAC5D,eAAe,EAAE,mBAAmB,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC;QACpF,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;KAC1D,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,OAA+B;IAE/B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAC9B,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAA;IACpD,IAAI,CAAC,SAAS;QAAE,OAAO,4BAA4B,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACrE,OAAO,wBAAwB,CAC7B,4BAA4B,CAAC,SAAS,CAAC,EACvC,4BAA4B,CAAC,OAAO,CAAC,QAAQ,CAAC,CAC/C,CAAA;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAmB;IACpD,IACE,CAAC,OAAO,CAAC,QAAQ;QACjB,CAAC,OAAO,CAAC,KAAK;QACd,CAAC,OAAO,CAAC,QAAQ;QACjB,OAAO,CAAC,KAAK,KAAK,SAAS;QAC3B,OAAO,CAAC,KAAK,KAAK,SAAS;QAC3B,OAAO,CAAC,KAAK,KAAK,SAAS;QAC3B,OAAO,CAAC,OAAO,KAAK,SAAS,EAC7B,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAA;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,QAA0B,EAC1B,QAAmD;IAEnD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAA;IAClC,MAAM,QAAQ,GAAkC,EAAE,CAAA;IAClD,KAAK,MAAM,SAAS,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;QACjE,IAAI,CAAC,KAAK;YAAE,SAAQ;QACpB,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAC7D,IAAI,CAAC,KAAK;YAAE,SAAQ;QACpB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;YAClD,QAAQ,CAAC,SAAS,GAAG;gBACnB,GAAG,QAAQ,CAAC,SAAS;gBACrB,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,QAAQ;aAC5B,CAAA;QACH,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;YAC/C,QAAQ,CAAC,MAAM,GAAG;gBAChB,GAAG,QAAQ,CAAC,MAAM;gBAClB,CAAC,SAAS,CAAC,EAAE,KAAK;aACnB,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAgC,EAChC,QAAmD,EACnD,SAA8B;IAE9B,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAC7D,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;QAChE,OAAO,KAAK,IAAI,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;IACrF,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;AACjF,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAsB,EACtB,SAA8B;IAE9B,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAA;IACtD,IAAI,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,KAAK,SAAS;QAAE,OAAO,YAAY,CAAA;IACxF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,EAAE,CAAA;AACnF,CAAC;AAED,SAAS,uBAAuB,CAC9B,QAAmD,EACnD,SAA8B;IAE9B,OAAO,QAAQ,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,QAAQ,EAAE,QAAQ,CAAA;AAC/D,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAmD,EACnD,SAA8B;IAE9B,OAAO,QAAQ,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,QAAQ,EAAE,KAAK,CAAA;AACzD,CAAC;AAED,SAAS,WAAW,CAClB,IAAyD,EACzD,QAA6D;IAE7D,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAA;IAC1B,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,OAAO,aAAa,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAA;AAChD,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAA+E,EAC/E,QAAmF;IAEnF,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAA;IAC1B,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,MAAM,MAAM,GAAkE,EAAE,GAAG,IAAI,EAAE,CAAA;IACzF,KAAK,MAAM,SAAS,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAU,EAAE,CAAC;QACxE,MAAM,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC;YAChC,GAAG,IAAI,CAAC,SAAS,CAAC;YAClB,GAAG,QAAQ,CAAC,SAAS,CAAC;SACvB,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,aAAa,CACpB,IAAoD,EACpD,QAAwD;IAExD,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAA;IAC1B,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,MAAM,MAAM,GAAuC,EAAE,GAAG,IAAI,EAAE,CAAA;IAC9D,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,YAAY,CACnB,IAAoC,EACpC,QAA4B;IAE5B,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAA;IAC1B,OAAO,aAAa,CAAC;QACnB,GAAG,IAAI;QACP,GAAG,QAAQ;QACX,OAAO,EAAE,aAAa,CAAC;YACrB,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,QAAQ,CAAC,OAAO;SACpB,CAAC;QACF,eAAe,EAAE,aAAa,CAAC;YAC7B,GAAG,IAAI,CAAC,eAAe;YACvB,GAAG,QAAQ,CAAC,eAAe;SAC5B,CAAC;KACH,CAAuB,CAAA;AAC1B,CAAC;AAED,SAAS,eAAe,CACtB,QAAuC;IAEvC,OAAO,aAAa,CAAC,QAAQ,CAAkC,CAAA;AACjE,CAAC;AAED,SAAS,aAAa,CAAmB,MAAS;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;IACjF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACtE,CAAC"}