@copado/agentia-cli 0.54.0-alpha.0 → 0.57.0-alpha.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,118 @@
1
+ export declare const WORK_COMMIT_ACTIONS: readonly ["Add", "Delete", "RetrieveOnly", "SelectiveCommit", "Full"];
2
+ export declare const WORK_COMMIT_DEFAULT_TIMEOUT_SECONDS = 300;
3
+ export declare const WORK_COMMIT_PLATFORM_EXPERIENCES: readonly ["sfdx", "salesforce"];
4
+ export type WorkCommitAction = (typeof WORK_COMMIT_ACTIONS)[number];
5
+ export type WorkCommitPlatformExperience = (typeof WORK_COMMIT_PLATFORM_EXPERIENCES)[number];
6
+ export type WorkCommitChange = {
7
+ a: WorkCommitAction;
8
+ c?: string;
9
+ j?: unknown;
10
+ m?: string;
11
+ n: string;
12
+ selections?: string[];
13
+ t: string;
14
+ };
15
+ export type WorkCommitRequest = {
16
+ baseBranch?: null | string;
17
+ changes: WorkCommitChange[];
18
+ commitId?: string;
19
+ dataTemplateSyncConfig?: unknown[];
20
+ executeCommit: boolean;
21
+ message: string;
22
+ recreateFeatureBranch: boolean;
23
+ userStoryId: string;
24
+ };
25
+ export type WorkCommitPreflight = {
26
+ [key: string]: unknown;
27
+ platformExperience?: null | string;
28
+ };
29
+ export type WorkCommitRecordAttributes = {
30
+ link?: null | string;
31
+ type?: null | string;
32
+ };
33
+ export type WorkCommitRecord = {
34
+ attributes?: null | WorkCommitRecordAttributes;
35
+ id?: null | string;
36
+ name?: null | string;
37
+ status?: null | string;
38
+ };
39
+ export type WorkCommitResponse = {
40
+ [key: string]: unknown;
41
+ commitType?: null | string;
42
+ jobExecution?: null | WorkCommitRecord;
43
+ userStoryCommit?: null | WorkCommitRecord;
44
+ };
45
+ export type WorkCommitJobMonitor = {
46
+ [key: string]: unknown;
47
+ executionSteps?: unknown[];
48
+ jobExecutionErrorMessage?: null | string;
49
+ jobExecutionId?: null | string;
50
+ jobExecutionStatus?: null | string;
51
+ };
52
+ export type WorkCommitResult = {
53
+ commit: WorkCommitResponse;
54
+ jobMonitor?: WorkCommitJobMonitor;
55
+ platformExperience: WorkCommitPlatformExperience;
56
+ preflight: WorkCommitPreflight;
57
+ request: WorkCommitRequest;
58
+ resultId?: null | string;
59
+ resultName?: null | string;
60
+ resultSource?: 'jobExecution' | 'userStoryCommit';
61
+ wait: boolean;
62
+ };
63
+ export type WorkCommitHooks = {
64
+ log: (message?: string) => void;
65
+ withSpinner: <T>(message: string, action: () => Promise<T>) => Promise<T>;
66
+ };
67
+ export type WorkCommitInput = {
68
+ baseBranch?: null | string;
69
+ changes: unknown[];
70
+ commitId?: string;
71
+ dataTemplateSyncConfig?: unknown[];
72
+ executeCommit?: boolean;
73
+ message?: string;
74
+ recreateFeatureBranch?: boolean;
75
+ userStoryId?: string;
76
+ };
77
+ export type WorkCommitOptions = {
78
+ initialPlatformExperience?: string;
79
+ request: WorkCommitRequest;
80
+ timeoutSeconds: number;
81
+ wait: boolean;
82
+ };
83
+ export declare class WorkCommitValidationError extends Error {
84
+ constructor(message: string);
85
+ }
86
+ export declare class WorkCommitJobFailedError extends Error {
87
+ readonly jobMonitor: WorkCommitJobMonitor;
88
+ readonly result?: WorkCommitResult;
89
+ constructor(jobMonitor: WorkCommitJobMonitor, result?: WorkCommitResult);
90
+ }
91
+ export declare class WorkCommitTimeoutError extends Error {
92
+ readonly jobMonitor?: WorkCommitJobMonitor;
93
+ readonly result?: WorkCommitResult;
94
+ constructor(timeoutSeconds: number, jobMonitor?: WorkCommitJobMonitor, result?: WorkCommitResult);
95
+ }
96
+ export type SleepFn = (ms: number) => Promise<void>;
97
+ export declare function setWorkCommitSleepForTests(nextSleep: SleepFn): void;
98
+ export declare function resetWorkCommitSleepForTests(): void;
99
+ export declare function normalizeWorkCommitChange(value: unknown): WorkCommitChange;
100
+ export declare function normalizeWorkCommitInput(value: unknown): WorkCommitInput;
101
+ export declare function buildWorkCommitRequest(input: WorkCommitInput, defaults: {
102
+ message?: string;
103
+ userStoryId: string;
104
+ }): WorkCommitRequest;
105
+ export declare function workCommitPreflightEndpoint(userStoryId: string): string;
106
+ export declare function workCommitEndpoint(): string;
107
+ export declare function workCommitJobMonitorEndpoint(jobExecutionId: string): string;
108
+ export declare function normalizeWorkCommitPlatformExperience(value?: null | string): WorkCommitPlatformExperience;
109
+ export declare function waitForWorkCommitJob(options: {
110
+ hooks: Pick<WorkCommitHooks, 'log'>;
111
+ jobExecutionId: string;
112
+ platformExperience: WorkCommitPlatformExperience;
113
+ timeoutSeconds: number;
114
+ }): Promise<WorkCommitJobMonitor>;
115
+ export declare function performWorkCommit(options: WorkCommitOptions & {
116
+ hooks: WorkCommitHooks;
117
+ }): Promise<WorkCommitResult>;
118
+ export declare function formatWorkCommitResult(result: WorkCommitResult): string;
@@ -0,0 +1,348 @@
1
+ import { CicdGateway } from './cicd-gateway.js';
2
+ import { cellValue } from './format.js';
3
+ import { normalizeSalesforceId } from './salesforce-id.js';
4
+ export const WORK_COMMIT_ACTIONS = ['Add', 'Delete', 'RetrieveOnly', 'SelectiveCommit', 'Full'];
5
+ export const WORK_COMMIT_DEFAULT_TIMEOUT_SECONDS = 300;
6
+ export const WORK_COMMIT_PLATFORM_EXPERIENCES = ['sfdx', 'salesforce'];
7
+ const SELECTIVE_BUNDLE_TYPES = new Set([
8
+ 'AuraDefinitionBundle',
9
+ 'DataPackageKitDefinition',
10
+ 'DigitalExperience',
11
+ 'ExperienceBundle',
12
+ 'GenAiFunction',
13
+ 'GenAiPlannerBundle',
14
+ 'LightningComponentBundle',
15
+ 'WaveTemplateBundle',
16
+ ]);
17
+ const SUCCESSFUL_JOB_STATUSES = new Set(['Success', 'Successful']);
18
+ const FAILED_JOB_STATUSES = new Set(['Canceled', 'Error', 'Failed', 'Skipped']);
19
+ const POLL_BACKOFF_SECONDS = [2, 3, 5, 10];
20
+ export class WorkCommitValidationError extends Error {
21
+ constructor(message) {
22
+ super(message);
23
+ this.name = 'WorkCommitValidationError';
24
+ }
25
+ }
26
+ export class WorkCommitJobFailedError extends Error {
27
+ jobMonitor;
28
+ result;
29
+ constructor(jobMonitor, result) {
30
+ const status = jobMonitor.jobExecutionStatus ?? 'unknown';
31
+ const jobId = jobMonitor.jobExecutionId?.trim();
32
+ const prefix = jobId && jobId.length > 0 ? `Commit job ${jobId}` : 'Commit job';
33
+ const detail = jobMonitor.jobExecutionErrorMessage?.trim();
34
+ super(detail && detail.length > 0 ? `${prefix} finished with status ${status}: ${detail}` : `${prefix} finished with status ${status}.`);
35
+ this.name = 'WorkCommitJobFailedError';
36
+ this.jobMonitor = jobMonitor;
37
+ this.result = result;
38
+ }
39
+ }
40
+ export class WorkCommitTimeoutError extends Error {
41
+ jobMonitor;
42
+ result;
43
+ constructor(timeoutSeconds, jobMonitor, result) {
44
+ const jobId = jobMonitor?.jobExecutionId?.trim();
45
+ const suffix = jobId && jobId.length > 0 ? ` Last job execution Id: ${jobId}.` : '';
46
+ super(`Commit job did not finish within ${timeoutSeconds}s.${suffix}`);
47
+ this.name = 'WorkCommitTimeoutError';
48
+ this.jobMonitor = jobMonitor;
49
+ this.result = result;
50
+ }
51
+ }
52
+ const defaultSleep = async (ms) => new Promise((resolve) => {
53
+ setTimeout(resolve, ms);
54
+ });
55
+ let sleepFn = defaultSleep;
56
+ // Test-only hook
57
+ export function setWorkCommitSleepForTests(nextSleep) {
58
+ sleepFn = nextSleep;
59
+ }
60
+ // Test-only hook
61
+ export function resetWorkCommitSleepForTests() {
62
+ sleepFn = defaultSleep;
63
+ }
64
+ function isRecord(value) {
65
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
66
+ }
67
+ function normalizeKnownTopLevelKeys(value) {
68
+ return {
69
+ ...value,
70
+ ...(value.base_branch === undefined ? {} : { baseBranch: value.base_branch }),
71
+ ...(value.commit_id === undefined ? {} : { commitId: value.commit_id }),
72
+ ...(value.data_template_sync_config === undefined ? {} : { dataTemplateSyncConfig: value.data_template_sync_config }),
73
+ ...(value.execute_commit === undefined ? {} : { executeCommit: value.execute_commit }),
74
+ ...(value.recreate_feature_branch === undefined ? {} : { recreateFeatureBranch: value.recreate_feature_branch }),
75
+ ...(value.user_story_id === undefined ? {} : { userStoryId: value.user_story_id }),
76
+ };
77
+ }
78
+ function optionalString(value, label) {
79
+ if (value === undefined || value === null) {
80
+ return undefined;
81
+ }
82
+ if (typeof value !== 'string') {
83
+ throw new WorkCommitValidationError(`${label} must be a string.`);
84
+ }
85
+ const trimmed = value.trim();
86
+ return trimmed.length > 0 ? trimmed : undefined;
87
+ }
88
+ function requiredString(value, label) {
89
+ const stringValue = optionalString(value, label);
90
+ if (stringValue === undefined) {
91
+ throw new WorkCommitValidationError(`${label} is required.`);
92
+ }
93
+ return stringValue;
94
+ }
95
+ function optionalBoolean(value, label) {
96
+ if (value === undefined || value === null) {
97
+ return undefined;
98
+ }
99
+ if (typeof value !== 'boolean') {
100
+ throw new WorkCommitValidationError(`${label} must be a boolean.`);
101
+ }
102
+ return value;
103
+ }
104
+ function normalizeAction(value) {
105
+ const action = optionalString(value, 'change action') ?? 'Add';
106
+ if (!WORK_COMMIT_ACTIONS.includes(action)) {
107
+ throw new WorkCommitValidationError(`Unsupported change action '${action}'. Use one of: ${WORK_COMMIT_ACTIONS.join(', ')}.`);
108
+ }
109
+ return action;
110
+ }
111
+ function normalizeSelections(value) {
112
+ if (value === undefined || value === null) {
113
+ return undefined;
114
+ }
115
+ if (!Array.isArray(value)) {
116
+ throw new WorkCommitValidationError('change selections must be an array of strings.');
117
+ }
118
+ const selections = value.map((item) => requiredString(item, 'change selection'));
119
+ return selections.length > 0 ? selections : undefined;
120
+ }
121
+ export function normalizeWorkCommitChange(value) {
122
+ if (!isRecord(value)) {
123
+ throw new WorkCommitValidationError('Each change must be a JSON object.');
124
+ }
125
+ const action = normalizeAction(value.a ?? value.action);
126
+ const name = requiredString(value.n ?? value.name, 'change name');
127
+ const type = requiredString(value.t ?? value.type, 'change type');
128
+ const category = optionalString(value.c ?? value.category, 'change category');
129
+ const message = optionalString(value.m ?? value.message, 'change message');
130
+ const rawJson = value.j ?? value.rawJson ?? value.raw_json;
131
+ const selections = normalizeSelections(value.selections);
132
+ if (action === 'SelectiveCommit' && SELECTIVE_BUNDLE_TYPES.has(type) && (selections === undefined || selections.length === 0)) {
133
+ throw new WorkCommitValidationError(`SelectiveCommit for ${type} requires one or more selections.`);
134
+ }
135
+ return {
136
+ a: action,
137
+ ...(category === undefined ? {} : { c: category }),
138
+ ...(rawJson === undefined ? {} : { j: rawJson }),
139
+ ...(message === undefined ? {} : { m: message }),
140
+ n: name,
141
+ ...(selections === undefined ? {} : { selections }),
142
+ t: type,
143
+ };
144
+ }
145
+ export function normalizeWorkCommitInput(value) {
146
+ if (!isRecord(value)) {
147
+ throw new WorkCommitValidationError('Commit request must be a JSON object.');
148
+ }
149
+ const normalized = normalizeKnownTopLevelKeys(value);
150
+ const { changes } = normalized;
151
+ if (!Array.isArray(changes)) {
152
+ throw new WorkCommitValidationError('Commit request requires changes.');
153
+ }
154
+ return {
155
+ baseBranch: optionalString(normalized.baseBranch, 'baseBranch') ?? null,
156
+ changes,
157
+ commitId: optionalString(normalized.commitId, 'commitId'),
158
+ dataTemplateSyncConfig: Array.isArray(normalized.dataTemplateSyncConfig)
159
+ ? normalized.dataTemplateSyncConfig
160
+ : undefined,
161
+ executeCommit: optionalBoolean(normalized.executeCommit, 'executeCommit'),
162
+ message: optionalString(normalized.message, 'message'),
163
+ recreateFeatureBranch: optionalBoolean(normalized.recreateFeatureBranch, 'recreateFeatureBranch'),
164
+ userStoryId: optionalString(normalized.userStoryId, 'userStoryId'),
165
+ };
166
+ }
167
+ export function buildWorkCommitRequest(input, defaults) {
168
+ const userStoryId = normalizeSalesforceId(input.userStoryId ?? defaults.userStoryId);
169
+ const message = requiredString(input.message ?? defaults.message, 'message');
170
+ const changes = input.changes.map((change) => normalizeWorkCommitChange(change));
171
+ if (changes.length === 0) {
172
+ throw new WorkCommitValidationError('Commit request requires at least one change.');
173
+ }
174
+ const executeCommit = input.executeCommit ?? true;
175
+ if (!executeCommit && input.commitId === undefined) {
176
+ throw new WorkCommitValidationError('commitId is required when executeCommit is false.');
177
+ }
178
+ return {
179
+ ...(input.baseBranch === undefined ? {} : { baseBranch: input.baseBranch }),
180
+ changes,
181
+ ...(input.commitId === undefined ? {} : { commitId: input.commitId }),
182
+ ...(input.dataTemplateSyncConfig === undefined ? {} : { dataTemplateSyncConfig: input.dataTemplateSyncConfig }),
183
+ executeCommit,
184
+ message,
185
+ recreateFeatureBranch: input.recreateFeatureBranch ?? false,
186
+ userStoryId,
187
+ };
188
+ }
189
+ export function workCommitPreflightEndpoint(userStoryId) {
190
+ return `/release/commit/user-story/${normalizeSalesforceId(userStoryId)}`;
191
+ }
192
+ export function workCommitEndpoint() {
193
+ return '/release/commit';
194
+ }
195
+ export function workCommitJobMonitorEndpoint(jobExecutionId) {
196
+ return `/release/job-monitor/execution/${normalizeSalesforceId(jobExecutionId)}`;
197
+ }
198
+ export function normalizeWorkCommitPlatformExperience(value) {
199
+ const normalized = (value ?? 'sfdx').trim().toLowerCase();
200
+ if (!WORK_COMMIT_PLATFORM_EXPERIENCES.includes(normalized)) {
201
+ throw new WorkCommitValidationError(`Unsupported platform experience '${value}'. Use one of: ${WORK_COMMIT_PLATFORM_EXPERIENCES.join(', ')}.`);
202
+ }
203
+ return normalized;
204
+ }
205
+ function isTerminalJobStatus(status) {
206
+ return status !== undefined && status !== null && (SUCCESSFUL_JOB_STATUSES.has(status) || FAILED_JOB_STATUSES.has(status));
207
+ }
208
+ function isFailedJobStatus(status) {
209
+ return status !== undefined && status !== null && FAILED_JOB_STATUSES.has(status);
210
+ }
211
+ function resolveWorkCommitResultRecord(commit) {
212
+ if (commit.userStoryCommit?.id !== undefined && commit.userStoryCommit.id !== null) {
213
+ return {
214
+ resultId: commit.userStoryCommit.id,
215
+ resultName: commit.userStoryCommit.name,
216
+ resultSource: 'userStoryCommit',
217
+ };
218
+ }
219
+ if (commit.jobExecution?.id !== undefined && commit.jobExecution.id !== null) {
220
+ return {
221
+ resultId: commit.jobExecution.id,
222
+ resultName: commit.jobExecution.name,
223
+ resultSource: 'jobExecution',
224
+ };
225
+ }
226
+ return {};
227
+ }
228
+ export async function waitForWorkCommitJob(options) {
229
+ const { hooks, jobExecutionId, platformExperience, timeoutSeconds } = options;
230
+ const deadline = Date.now() + timeoutSeconds * 1000;
231
+ let lastResult;
232
+ let pollCount = 0;
233
+ for (;;) {
234
+ // eslint-disable-next-line no-await-in-loop -- job polling must be sequential
235
+ const result = await CicdGateway.call({
236
+ endpoint: workCommitJobMonitorEndpoint(jobExecutionId),
237
+ headers: { 'platform-experience': platformExperience },
238
+ method: 'GET',
239
+ });
240
+ lastResult = result;
241
+ const status = result.jobExecutionStatus;
242
+ hooks.log(`Commit job ${jobExecutionId}: ${status ?? 'unknown'}`);
243
+ if (isTerminalJobStatus(status)) {
244
+ if (isFailedJobStatus(status)) {
245
+ throw new WorkCommitJobFailedError(result);
246
+ }
247
+ return result;
248
+ }
249
+ const delaySeconds = POLL_BACKOFF_SECONDS[Math.min(pollCount, POLL_BACKOFF_SECONDS.length - 1)];
250
+ const remainingMs = deadline - Date.now();
251
+ if (remainingMs <= 0) {
252
+ throw new WorkCommitTimeoutError(timeoutSeconds, lastResult);
253
+ }
254
+ // eslint-disable-next-line no-await-in-loop -- bounded polling backoff
255
+ await sleepFn(Math.min(delaySeconds * 1000, remainingMs));
256
+ pollCount += 1;
257
+ }
258
+ }
259
+ export async function performWorkCommit(options) {
260
+ const { hooks, initialPlatformExperience, request, timeoutSeconds, wait } = options;
261
+ const initialPlatform = normalizeWorkCommitPlatformExperience(initialPlatformExperience);
262
+ const preflight = await hooks.withSpinner('Checking user story commit readiness', () => CicdGateway.call({
263
+ endpoint: workCommitPreflightEndpoint(request.userStoryId),
264
+ headers: { 'platform-experience': initialPlatform },
265
+ method: 'GET',
266
+ }));
267
+ const platformExperience = normalizeWorkCommitPlatformExperience(preflight.platformExperience ?? initialPlatform);
268
+ const commit = await hooks.withSpinner('Starting cloud commit', () => CicdGateway.call({
269
+ body: request,
270
+ endpoint: workCommitEndpoint(),
271
+ headers: {
272
+ 'Content-Type': 'application/json',
273
+ 'platform-experience': platformExperience,
274
+ },
275
+ method: 'POST',
276
+ }));
277
+ const resultRecord = resolveWorkCommitResultRecord(commit);
278
+ const jobExecutionId = commit.jobExecution?.id ?? undefined;
279
+ let jobMonitor;
280
+ try {
281
+ jobMonitor =
282
+ wait && jobExecutionId !== undefined && jobExecutionId !== null && jobExecutionId.trim().length > 0
283
+ ? await hooks.withSpinner('Waiting for commit job', () => waitForWorkCommitJob({ hooks, jobExecutionId, platformExperience, timeoutSeconds }))
284
+ : undefined;
285
+ }
286
+ catch (error) {
287
+ if (error instanceof WorkCommitJobFailedError || error instanceof WorkCommitTimeoutError) {
288
+ const failedMonitor = error.jobMonitor;
289
+ const partialResult = {
290
+ commit,
291
+ ...(failedMonitor === undefined ? {} : { jobMonitor: failedMonitor }),
292
+ platformExperience,
293
+ preflight,
294
+ request,
295
+ ...resultRecord,
296
+ wait,
297
+ };
298
+ if (error instanceof WorkCommitJobFailedError) {
299
+ throw new WorkCommitJobFailedError(error.jobMonitor, partialResult);
300
+ }
301
+ throw new WorkCommitTimeoutError(timeoutSeconds, failedMonitor, partialResult);
302
+ }
303
+ throw error;
304
+ }
305
+ return {
306
+ commit,
307
+ ...(jobMonitor === undefined ? {} : { jobMonitor }),
308
+ platformExperience,
309
+ preflight,
310
+ request,
311
+ ...resultRecord,
312
+ wait,
313
+ };
314
+ }
315
+ function formatRecord(label, record) {
316
+ if (record === undefined || record === null) {
317
+ return [];
318
+ }
319
+ const lines = [
320
+ `${label}: ${cellValue(record.name ?? record.id)}`,
321
+ ` ID: ${cellValue(record.id)}`,
322
+ ` Status: ${cellValue(record.status)}`,
323
+ ];
324
+ const link = record.attributes?.link;
325
+ if (link !== undefined && link !== null && link.trim().length > 0) {
326
+ lines.push(` Link: ${link}`);
327
+ }
328
+ return lines;
329
+ }
330
+ export function formatWorkCommitResult(result) {
331
+ const lines = [
332
+ `User Story: ${result.request.userStoryId}`,
333
+ `Result ID: ${cellValue(result.resultId)}`,
334
+ `Result Source: ${cellValue(result.resultSource)}`,
335
+ `Platform Experience: ${result.platformExperience}`,
336
+ `Commit Type: ${cellValue(result.commit.commitType)}`,
337
+ ...formatRecord('User Story Commit', result.commit.userStoryCommit),
338
+ ...formatRecord('Job Execution', result.commit.jobExecution),
339
+ ];
340
+ if (result.jobMonitor !== undefined) {
341
+ lines.push(`Final Job Status: ${cellValue(result.jobMonitor.jobExecutionStatus)}`);
342
+ if (result.jobMonitor.jobExecutionErrorMessage) {
343
+ lines.push(`Final Job Error: ${result.jobMonitor.jobExecutionErrorMessage}`);
344
+ }
345
+ }
346
+ return lines.join('\n');
347
+ }
348
+ //# sourceMappingURL=work-commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-commit.js","sourceRoot":"","sources":["../../src/lib/work-commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AACrC,OAAO,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAA;AAExD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,CAAU,CAAA;AACxG,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAG,CAAA;AACtD,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAU,CAAA;AAE/E,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,sBAAsB;IACtB,0BAA0B;IAC1B,mBAAmB;IACnB,kBAAkB;IAClB,eAAe;IACf,oBAAoB;IACpB,0BAA0B;IAC1B,oBAAoB;CACrB,CAAC,CAAA;AAEF,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;AAClE,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;AAC/E,MAAM,oBAAoB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAU,CAAA;AA6FnD,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAA;IACzC,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjC,UAAU,CAAsB;IAChC,MAAM,CAAmB;IAEzC,YAAmB,UAAgC,EAAE,MAAyB;QAC5E,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,IAAI,SAAS,CAAA;QACzD,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,EAAE,IAAI,EAAE,CAAA;QAC/C,MAAM,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY,CAAA;QAC/E,MAAM,MAAM,GAAG,UAAU,CAAC,wBAAwB,EAAE,IAAI,EAAE,CAAA;QAC1D,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,yBAAyB,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,yBAAyB,MAAM,GAAG,CAAC,CAAA;QACxI,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAA;QACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/B,UAAU,CAAuB;IACjC,MAAM,CAAmB;IAEzC,YAAmB,cAAsB,EAAE,UAAiC,EAAE,MAAyB;QACrG,MAAM,KAAK,GAAG,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,CAAA;QAChD,MAAM,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,2BAA2B,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACnF,KAAK,CAAC,oCAAoC,cAAc,KAAK,MAAM,EAAE,CAAC,CAAA;QACtE,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AAID,MAAM,YAAY,GAAY,KAAK,EAAE,EAAE,EAAE,EAAE,CACzC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IACtB,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AACzB,CAAC,CAAC,CAAA;AAEJ,IAAI,OAAO,GAAY,YAAY,CAAA;AAEnC,iBAAiB;AACjB,MAAM,UAAU,0BAA0B,CAAC,SAAkB;IAC3D,OAAO,GAAG,SAAS,CAAA;AACrB,CAAC;AAED,iBAAiB;AACjB,MAAM,UAAU,4BAA4B;IAC1C,OAAO,GAAG,YAAY,CAAA;AACxB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS,0BAA0B,CAAC,KAA8B;IAChE,OAAO;QACL,GAAG,KAAK;QACR,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,UAAU,EAAE,KAAK,CAAC,WAAW,EAAC,CAAC;QAC3E,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAC,CAAC;QACrE,GAAG,CAAC,KAAK,CAAC,yBAAyB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,sBAAsB,EAAE,KAAK,CAAC,yBAAyB,EAAC,CAAC;QACnH,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,aAAa,EAAE,KAAK,CAAC,cAAc,EAAC,CAAC;QACpF,GAAG,CAAC,KAAK,CAAC,uBAAuB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,qBAAqB,EAAE,KAAK,CAAC,uBAAuB,EAAC,CAAC;QAC9G,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,WAAW,EAAE,KAAK,CAAC,aAAa,EAAC,CAAC;KACjF,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,KAAa;IACnD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,yBAAyB,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;AACjD,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,KAAa;IACnD,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAChD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,yBAAyB,CAAC,GAAG,KAAK,eAAe,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,KAAa;IACpD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,yBAAyB,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAA;IACpE,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,KAAK,CAAA;IAC9D,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAA0B,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,yBAAyB,CACjC,8BAA8B,MAAM,kBAAkB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACxF,CAAA;IACH,CAAC;IAED,OAAO,MAA0B,CAAA;AACnC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,yBAAyB,CAAC,gDAAgD,CAAC,CAAA;IACvF,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAA;IAChF,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,yBAAyB,CAAC,oCAAoC,CAAC,CAAA;IAC3E,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA;IACvD,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;IACjE,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;IACjE,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAA;IAC7E,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;IAC1E,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAA;IAC1D,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAExD,IAAI,MAAM,KAAK,iBAAiB,IAAI,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC9H,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,IAAI,mCAAmC,CAAC,CAAA;IACrG,CAAC;IAED,OAAO;QACL,CAAC,EAAE,MAAM;QACT,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,QAAQ,EAAC,CAAC;QAChD,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,OAAO,EAAC,CAAC;QAC9C,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,OAAO,EAAC,CAAC;QAC9C,CAAC,EAAE,IAAI;QACP,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,UAAU,EAAC,CAAC;QACjD,CAAC,EAAE,IAAI;KACR,CAAA;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,yBAAyB,CAAC,uCAAuC,CAAC,CAAA;IAC9E,CAAC;IAED,MAAM,UAAU,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAA;IACpD,MAAM,EAAC,OAAO,EAAC,GAAG,UAAU,CAAA;IAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,yBAAyB,CAAC,kCAAkC,CAAC,CAAA;IACzE,CAAC;IAED,OAAO;QACL,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,IAAI;QACvE,OAAO;QACP,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC;QACzD,sBAAsB,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC;YACtE,CAAC,CAAC,UAAU,CAAC,sBAAsB;YACnC,CAAC,CAAC,SAAS;QACb,aAAa,EAAE,eAAe,CAAC,UAAU,CAAC,aAAa,EAAE,eAAe,CAAC;QACzE,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC;QACtD,qBAAqB,EAAE,eAAe,CAAC,UAAU,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;QACjG,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,WAAW,EAAE,aAAa,CAAC;KACnE,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAsB,EAAE,QAAiD;IAC9G,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAA;IACpF,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAC5E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAA;IAEhF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,yBAAyB,CAAC,8CAA8C,CAAC,CAAA;IACrF,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,IAAI,CAAA;IACjD,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnD,MAAM,IAAI,yBAAyB,CAAC,mDAAmD,CAAC,CAAA;IAC1F,CAAC;IAED,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAC,CAAC;QACzE,OAAO;QACP,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAC,CAAC;QACnE,GAAG,CAAC,KAAK,CAAC,sBAAsB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,EAAC,CAAC;QAC7G,aAAa;QACb,OAAO;QACP,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,IAAI,KAAK;QAC3D,WAAW;KACZ,CAAA;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,WAAmB;IAC7D,OAAO,8BAA8B,qBAAqB,CAAC,WAAW,CAAC,EAAE,CAAA;AAC3E,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,iBAAiB,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,cAAsB;IACjE,OAAO,kCAAkC,qBAAqB,CAAC,cAAc,CAAC,EAAE,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,qCAAqC,CAAC,KAAqB;IACzE,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACzD,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,UAA0C,CAAC,EAAE,CAAC;QAC3F,MAAM,IAAI,yBAAyB,CACjC,oCAAoC,KAAK,kBAAkB,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC1G,CAAA;IACH,CAAC;IAED,OAAO,UAA0C,CAAA;AACnD,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAsB;IACjD,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;AAC5H,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAsB;IAC/C,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACnF,CAAC;AAED,SAAS,6BAA6B,CAAC,MAA0B;IAK/D,IAAI,MAAM,CAAC,eAAe,EAAE,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,eAAe,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACnF,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE;YACnC,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI;YACvC,YAAY,EAAE,iBAAiB;SAChC,CAAA;IACH,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QAC7E,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE;YAChC,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI;YACpC,YAAY,EAAE,cAAc;SAC7B,CAAA;IACH,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAK1C;IACC,MAAM,EAAC,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAC,GAAG,OAAO,CAAA;IAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,IAAI,CAAA;IACnD,IAAI,UAA4C,CAAA;IAChD,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,SAAS,CAAC;QACR,8EAA8E;QAC9E,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,CAAuB;YAC1D,QAAQ,EAAE,4BAA4B,CAAC,cAAc,CAAC;YACtD,OAAO,EAAE,EAAC,qBAAqB,EAAE,kBAAkB,EAAC;YACpD,MAAM,EAAE,KAAK;SACd,CAAC,CAAA;QACF,UAAU,GAAG,MAAM,CAAA;QACnB,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAA;QACxC,KAAK,CAAC,GAAG,CAAC,cAAc,cAAc,KAAK,MAAM,IAAI,SAAS,EAAE,CAAC,CAAA;QAEjE,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAA;YAC5C,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC;QAED,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;QAC/F,MAAM,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACzC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,sBAAsB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;QAC9D,CAAC;QAED,uEAAuE;QACvE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;QACzD,SAAS,IAAI,CAAC,CAAA;IAChB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAqD;IAC3F,MAAM,EAAC,KAAK,EAAE,yBAAyB,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAC,GAAG,OAAO,CAAA;IACjF,MAAM,eAAe,GAAG,qCAAqC,CAAC,yBAAyB,CAAC,CAAA;IACxF,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,sCAAsC,EAAE,GAAG,EAAE,CACrF,WAAW,CAAC,IAAI,CAAsB;QACpC,QAAQ,EAAE,2BAA2B,CAAC,OAAO,CAAC,WAAW,CAAC;QAC1D,OAAO,EAAE,EAAC,qBAAqB,EAAE,eAAe,EAAC;QACjD,MAAM,EAAE,KAAK;KACd,CAAC,CACH,CAAA;IACD,MAAM,kBAAkB,GAAG,qCAAqC,CAAC,SAAS,CAAC,kBAAkB,IAAI,eAAe,CAAC,CAAA;IACjH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,uBAAuB,EAAE,GAAG,EAAE,CACnE,WAAW,CAAC,IAAI,CAAqB;QACnC,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,kBAAkB,EAAE;QAC9B,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,qBAAqB,EAAE,kBAAkB;SAC1C;QACD,MAAM,EAAE,MAAM;KACf,CAAC,CACH,CAAA;IACD,MAAM,YAAY,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAA;IAC1D,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,IAAI,SAAS,CAAA;IAC3D,IAAI,UAA4C,CAAA;IAChD,IAAI,CAAC;QACH,UAAU;YACR,IAAI,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;gBACjG,CAAC,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,wBAAwB,EAAE,GAAG,EAAE,CACrD,oBAAoB,CAAC,EAAC,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAC,CAAC,CAClF;gBACH,CAAC,CAAC,SAAS,CAAA;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,wBAAwB,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;YACzF,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAA;YACtC,MAAM,aAAa,GAAqB;gBACtC,MAAM;gBACN,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,UAAU,EAAE,aAAa,EAAC,CAAC;gBACnE,kBAAkB;gBAClB,SAAS;gBACT,OAAO;gBACP,GAAG,YAAY;gBACf,IAAI;aACL,CAAA;YAED,IAAI,KAAK,YAAY,wBAAwB,EAAE,CAAC;gBAC9C,MAAM,IAAI,wBAAwB,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;YACrE,CAAC;YAED,MAAM,IAAI,sBAAsB,CAAC,cAAc,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;QAChF,CAAC;QAED,MAAM,KAAK,CAAA;IACb,CAAC;IAED,OAAO;QACL,MAAM;QACN,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,UAAU,EAAC,CAAC;QACjD,kBAAkB;QAClB,SAAS;QACT,OAAO;QACP,GAAG,YAAY;QACf,IAAI;KACL,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,MAAgC;IACnE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,GAAG,KAAK,KAAK,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;QAClD,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QAC/B,aAAa,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;KACxC,CAAA;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,IAAI,CAAA;IACpC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC7D,MAAM,KAAK,GAAG;QACZ,eAAe,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;QAC3C,cAAc,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QAC1C,kBAAkB,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;QAClD,wBAAwB,MAAM,CAAC,kBAAkB,EAAE;QACnD,gBAAgB,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;QACrD,GAAG,YAAY,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QACnE,GAAG,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;KAC7D,CAAA;IAED,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,qBAAqB,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAClF,IAAI,MAAM,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAA;QAC9E,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}