common-qa-mcp 0.2.0 → 0.3.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.
- package/README.md +6 -0
- package/dist/adapters/factory.d.ts +17 -7
- package/dist/adapters/factory.d.ts.map +1 -1
- package/dist/adapters/factory.js +61 -7
- package/dist/adapters/factory.js.map +1 -1
- package/dist/adapters/http.d.ts +50 -0
- package/dist/adapters/http.d.ts.map +1 -0
- package/dist/adapters/http.js +109 -0
- package/dist/adapters/http.js.map +1 -0
- package/dist/adapters/remoteMcp/adapter.d.ts +10 -1
- package/dist/adapters/remoteMcp/adapter.d.ts.map +1 -1
- package/dist/adapters/remoteMcp/adapter.js +26 -3
- package/dist/adapters/remoteMcp/adapter.js.map +1 -1
- package/dist/adapters/simplifyqa/adapter.d.ts +154 -0
- package/dist/adapters/simplifyqa/adapter.d.ts.map +1 -0
- package/dist/adapters/simplifyqa/adapter.js +1150 -0
- package/dist/adapters/simplifyqa/adapter.js.map +1 -0
- package/dist/adapters/simplifyqa/mapper.d.ts +63 -0
- package/dist/adapters/simplifyqa/mapper.d.ts.map +1 -0
- package/dist/adapters/simplifyqa/mapper.js +409 -0
- package/dist/adapters/simplifyqa/mapper.js.map +1 -0
- package/dist/adapters/types.d.ts +48 -1
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/walnut/adapter.d.ts +231 -0
- package/dist/adapters/walnut/adapter.d.ts.map +1 -0
- package/dist/adapters/walnut/adapter.js +1083 -0
- package/dist/adapters/walnut/adapter.js.map +1 -0
- package/dist/adapters/walnut/mapper.d.ts +29 -9
- package/dist/adapters/walnut/mapper.d.ts.map +1 -1
- package/dist/adapters/walnut/mapper.js +136 -24
- package/dist/adapters/walnut/mapper.js.map +1 -1
- package/dist/config.d.ts +28 -14
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +37 -19
- package/dist/config.js.map +1 -1
- package/dist/connection.d.ts +3 -2
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +36 -15
- package/dist/connection.js.map +1 -1
- package/dist/domain/types.d.ts +195 -1
- package/dist/domain/types.d.ts.map +1 -1
- package/dist/drafts/store.d.ts +4 -1
- package/dist/drafts/store.d.ts.map +1 -1
- package/dist/drafts/store.js +7 -2
- package/dist/drafts/store.js.map +1 -1
- package/dist/initAgents.d.ts.map +1 -1
- package/dist/initAgents.js +29 -12
- package/dist/initAgents.js.map +1 -1
- package/dist/requestConnection.d.ts +5 -3
- package/dist/requestConnection.d.ts.map +1 -1
- package/dist/requestConnection.js +11 -5
- package/dist/requestConnection.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +25 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/connection.tools.js +5 -5
- package/dist/tools/connection.tools.js.map +1 -1
- package/dist/tools/discovery.tools.d.ts.map +1 -1
- package/dist/tools/discovery.tools.js +93 -1
- package/dist/tools/discovery.tools.js.map +1 -1
- package/dist/tools/formulas.tools.d.ts +7 -0
- package/dist/tools/formulas.tools.d.ts.map +1 -0
- package/dist/tools/formulas.tools.js +56 -0
- package/dist/tools/formulas.tools.js.map +1 -0
- package/dist/tools/heal.tools.d.ts +17 -0
- package/dist/tools/heal.tools.d.ts.map +1 -0
- package/dist/tools/heal.tools.js +76 -0
- package/dist/tools/heal.tools.js.map +1 -0
- package/dist/tools/recording.tools.d.ts.map +1 -1
- package/dist/tools/recording.tools.js +28 -7
- package/dist/tools/recording.tools.js.map +1 -1
- package/dist/tools/run.tools.d.ts.map +1 -1
- package/dist/tools/run.tools.js +378 -37
- package/dist/tools/run.tools.js.map +1 -1
- package/dist/tools/storySync.tools.d.ts +66 -0
- package/dist/tools/storySync.tools.d.ts.map +1 -0
- package/dist/tools/storySync.tools.js +213 -0
- package/dist/tools/storySync.tools.js.map +1 -0
- package/dist/tools/testcase.tools.d.ts.map +1 -1
- package/dist/tools/testcase.tools.js +17 -2
- package/dist/tools/testcase.tools.js.map +1 -1
- package/dist/tools/testdata.tools.d.ts +7 -0
- package/dist/tools/testdata.tools.d.ts.map +1 -0
- package/dist/tools/testdata.tools.js +161 -0
- package/dist/tools/testdata.tools.js.map +1 -0
- package/package.json +1 -1
package/dist/tools/run.tools.js
CHANGED
|
@@ -5,7 +5,63 @@ function describeError(e) {
|
|
|
5
5
|
return e instanceof Error ? e.message : String(e);
|
|
6
6
|
}
|
|
7
7
|
function runnerLine(r) {
|
|
8
|
-
|
|
8
|
+
const host = r.os ? ` · ${r.os}` : '';
|
|
9
|
+
return `- ${r.online ? '🟢' : '⚪'} ${r.name}${host} \`${r.id}\`${r.status ? ` (${r.status})` : ''}`;
|
|
10
|
+
}
|
|
11
|
+
function localAgentLine(a) {
|
|
12
|
+
// Show the machine hostname next to the owner (like the product UI) so the user can tell apart
|
|
13
|
+
// several agents owned by the same person; the credential_id in backticks is for the tool call.
|
|
14
|
+
const host = a.host && a.host !== a.name ? ` · ${a.host}` : '';
|
|
15
|
+
return `- ${a.online ? '🟢' : '⚪'} ${a.name ?? a.id}${host} \`${a.id}\`${a.status ? ` (${a.status})` : ''}`;
|
|
16
|
+
}
|
|
17
|
+
/** One line per schedule for management listings — what it runs, cadence, where + pinned agent,
|
|
18
|
+
* browser, next run, status; the credential-free id in backticks is what the management tools take. */
|
|
19
|
+
function scheduleLine(s) {
|
|
20
|
+
const where = s.executionTarget === 'cloud_runner' ? 'cloud' : 'local';
|
|
21
|
+
const agent = s.agent ? ` → ${s.agent}` : '';
|
|
22
|
+
const br = s.browser ? ` · ${s.browser}` : '';
|
|
23
|
+
const next = s.nextRunAt ? ` · next ${s.nextRunAt}` : s.scheduledFor ? ` · at ${s.scheduledFor}` : '';
|
|
24
|
+
const paused = s.active === false ? ' [paused]' : '';
|
|
25
|
+
return `- ${s.target} — ${s.scheduleType}, ${where}${agent}${br}${next} · **${s.status}**${paused} \`${s.id}\``;
|
|
26
|
+
}
|
|
27
|
+
/** A schedule fires detached from any live session, so a LOCAL schedule must target a specific
|
|
28
|
+
* agent — there is no "your online agent" at fire time. Build the "pick an agent" message, offering
|
|
29
|
+
* ALL agents (online AND offline): a scheduled run can target an agent that is offline right now,
|
|
30
|
+
* because it runs when it fires — this mirrors the product's scheduler picker. */
|
|
31
|
+
async function localScheduleNeedsAgent(adapter) {
|
|
32
|
+
let list = '';
|
|
33
|
+
if (adapter.listLocalAgents) {
|
|
34
|
+
try {
|
|
35
|
+
const agents = await adapter.listLocalAgents();
|
|
36
|
+
list = agents.length
|
|
37
|
+
? '\n\nAgents (a scheduled run can target an offline one — it runs when it fires):\n' +
|
|
38
|
+
agents.map(localAgentLine).join('\n')
|
|
39
|
+
: '\n\nNo local agents are registered to this project.';
|
|
40
|
+
}
|
|
41
|
+
catch { /* best-effort listing — the core message still stands */ }
|
|
42
|
+
}
|
|
43
|
+
return ('A LOCAL schedule runs detached from any live session, so it must target a specific agent. ' +
|
|
44
|
+
'Call again with `agentId` set to a credential_id from local_agents.' + list);
|
|
45
|
+
}
|
|
46
|
+
/** A run-NOW to a specific LOCAL agent cannot target an offline one (mirrors the product UI, which
|
|
47
|
+
* offers only ONLINE agents for an immediate run). Returns an error message when the picked agent is
|
|
48
|
+
* known-offline, else null. Roster errors are swallowed — the backend still validates at reserve. */
|
|
49
|
+
async function localAgentOfflineForNow(adapter, agentId) {
|
|
50
|
+
if (!adapter.listLocalAgents)
|
|
51
|
+
return null;
|
|
52
|
+
try {
|
|
53
|
+
const agents = await adapter.listLocalAgents();
|
|
54
|
+
const picked = agents.find((a) => a.id === agentId);
|
|
55
|
+
if (picked && !picked.online) {
|
|
56
|
+
const online = agents.filter((a) => a.online);
|
|
57
|
+
return (`Agent \`${agentId}\`${picked.name ? ` (${picked.name})` : ''} is offline — a run-now needs an ONLINE agent. ` +
|
|
58
|
+
(online.length
|
|
59
|
+
? 'Online now:\n' + online.map(localAgentLine).join('\n')
|
|
60
|
+
: 'No local agents are online right now — schedule it instead, or bring an agent online.'));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch { /* roster unavailable — let the backend validate at reserve */ }
|
|
64
|
+
return null;
|
|
9
65
|
}
|
|
10
66
|
/** Human summary of a run's status. For a SUITE run `children` carries the per-test-case rollup and
|
|
11
67
|
* `progress` counts TEST CASES; a single test-case run has neither (progress counts steps). */
|
|
@@ -45,32 +101,81 @@ export function registerRunTools(server, deps) {
|
|
|
45
101
|
return err(describeError(e));
|
|
46
102
|
}
|
|
47
103
|
});
|
|
104
|
+
server.registerTool('local_agents', {
|
|
105
|
+
title: 'List local agents (and which are online)',
|
|
106
|
+
description: 'List the LOCAL agents registered to the connected project and which are online. Use this ' +
|
|
107
|
+
'to show the user their local run options, or to pick a specific agent id (its credential_id) to ' +
|
|
108
|
+
'pass as `agentId` to a LOCAL tc_run / suite_run. Requires a live connection.',
|
|
109
|
+
inputSchema: {},
|
|
110
|
+
annotations: { readOnlyHint: true },
|
|
111
|
+
}, async () => {
|
|
112
|
+
const adapter = deps.getAdapter();
|
|
113
|
+
if (!adapter)
|
|
114
|
+
return err(NOT_CONNECTED);
|
|
115
|
+
if (!adapter.listLocalAgents)
|
|
116
|
+
return err('This product has no local agents to list.');
|
|
117
|
+
try {
|
|
118
|
+
const agents = await adapter.listLocalAgents();
|
|
119
|
+
const online = agents.filter((a) => a.online);
|
|
120
|
+
if (!agents.length)
|
|
121
|
+
return ok('No local agents are registered to this project.', { agents: [] });
|
|
122
|
+
const text = `${agents.length} local agent${agents.length === 1 ? '' : 's'} · ${online.length} online:\n\n` +
|
|
123
|
+
agents.map(localAgentLine).join('\n');
|
|
124
|
+
return ok(text, { agents, online: online.length });
|
|
125
|
+
}
|
|
126
|
+
catch (e) {
|
|
127
|
+
return err(describeError(e));
|
|
128
|
+
}
|
|
129
|
+
});
|
|
48
130
|
server.registerTool('tc_run', {
|
|
49
|
-
title: 'Run a test case (local or cloud)',
|
|
50
|
-
description: 'Execute ONE existing test case in the connected product.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
'
|
|
55
|
-
|
|
131
|
+
title: 'Run a test case (local or cloud; now or scheduled)',
|
|
132
|
+
description: 'Execute ONE existing test case in the connected product. ASK the user — never assume — and in ORDER ' +
|
|
133
|
+
'(this mirrors the product UI): (1) `mode` local/cloud, (2) `when` immediate/schedule, (3) for a ' +
|
|
134
|
+
'schedule the start time + recurrence + timezone, (4) THEN offer the eligible agent/runner and pass ' +
|
|
135
|
+
"the pick. `mode` decides WHERE it runs:\n" +
|
|
136
|
+
" • 'local' — a local agent's own browser. Pass `agentId` from local_agents. For when:'immediate' only " +
|
|
137
|
+
"ONLINE agents are eligible (a run-now can't target an offline agent; omit to auto-pick your own online " +
|
|
138
|
+
"agent). For when:'schedule' ANY agent (online OR offline) is eligible and `agentId` is REQUIRED.\n" +
|
|
139
|
+
" • 'cloud' — an online cloud runner VM (ONLINE-only whether now or scheduled). Pass `cloudRunnerId` " +
|
|
140
|
+
'from cloud_runners; for a schedule omit it to let the backend auto-pick a live VM at fire time.\n' +
|
|
141
|
+
'IF THE USER HAS NOT SAID local or cloud, ASK — this tool refuses when `mode` is omitted. For cloud, if ' +
|
|
142
|
+
'no runner is online it reports that there are no active cloud runners (nothing is run).\n' +
|
|
143
|
+
'`when` decides WHEN it runs (this tool REFUSES when `when` is omitted — ASK the user):\n' +
|
|
144
|
+
" • 'immediate' — dispatch now; returns the run id — poll run_status for the result.\n" +
|
|
145
|
+
" • 'schedule' — create a schedule instead (requires `scheduledFor`); ASK the start time, recurrence, " +
|
|
146
|
+
'end date and timezone BEFORE offering an agent. Returns the schedule id.\n' +
|
|
147
|
+
'NOTE: MANUAL test cases cannot be run or scheduled by an agent — the backend rejects them.',
|
|
56
148
|
inputSchema: {
|
|
57
149
|
tcId: z.string().describe('The test case id (or business key) to run.'),
|
|
58
|
-
mode: z.enum(['local', 'cloud']).optional().describe("Where to run. REQUIRED
|
|
150
|
+
mode: z.enum(['local', 'cloud']).optional().describe("Where to run. REQUIRED — ASK the user if unstated (the tool refuses when omitted)."),
|
|
151
|
+
agentId: z.string().optional().describe("For local: a specific agent credential_id (from local_agents). when:'immediate' → must be an ONLINE agent (or omit to auto-pick your own online agent); when:'schedule' → REQUIRED, and may be an offline agent (it runs when it fires)."),
|
|
59
152
|
environment: z.string().optional().describe('Environment id (Mongo id); a name is ignored and the project default is used.'),
|
|
60
|
-
browser: z.string().optional().describe("Browser, default 'chromium' (bundled + isolated). Others: 'chrome'/'msedge' (installed channel), 'firefox', 'webkit'."),
|
|
61
|
-
headless: z.boolean().optional().describe('Headless. Defaults: cloud=true, local=false.'),
|
|
62
|
-
cloudRunnerId: z.string().optional().describe(
|
|
153
|
+
browser: z.string().optional().describe("Browser, default 'chromium' (bundled + isolated). Others: 'chrome'/'msedge' (installed channel), 'firefox', 'webkit'. NOTE: a schedule accepts only chromium/msedge/firefox/webkit."),
|
|
154
|
+
headless: z.boolean().optional().describe('Headless. Defaults: cloud=true, local=false. (Immediate runs only.)'),
|
|
155
|
+
cloudRunnerId: z.string().optional().describe("For cloud: a specific ONLINE runner id (from cloud_runners). For when:'schedule' omit to auto-pick a live VM at fire time."),
|
|
156
|
+
deviceId: z.string().optional().describe("REQUIRED for ANDROID/IOS test cases — the target device id. LOCAL: adb serial or emulator name. CLOUD: the marketplace device name. Enumerate with android_list_devices."),
|
|
157
|
+
when: z.enum(['immediate', 'schedule']).optional().describe("When to run — REQUIRED, ASK the user if unstated (the tool refuses when omitted). 'immediate' dispatches now; 'schedule' creates a schedule (needs scheduledFor)."),
|
|
158
|
+
scheduledFor: z.string().optional().describe("REQUIRED for when:'schedule' — ISO datetime of the first/only run (e.g. '2026-08-20T09:00:00Z')."),
|
|
159
|
+
scheduleType: z.enum(['once', 'hourly', 'daily', 'weekdays', 'weekly', 'monthly']).optional().describe("Recurrence for a schedule. Default 'once'. hourly/daily/weekdays require an endDate."),
|
|
160
|
+
endDate: z.string().optional().describe('For a recurring schedule — ISO end date (required for hourly/daily/weekdays).'),
|
|
161
|
+
timezone: z.string().optional().describe("IANA timezone for a schedule (e.g. 'Asia/Kolkata'). Default 'UTC'."),
|
|
63
162
|
},
|
|
64
163
|
annotations: { readOnlyHint: false },
|
|
65
|
-
}, async ({ tcId, mode, environment, browser, headless, cloudRunnerId }) => {
|
|
164
|
+
}, async ({ tcId, mode, agentId, environment, browser, headless, cloudRunnerId, deviceId, when, scheduledFor, scheduleType, endDate, timezone }) => {
|
|
66
165
|
const adapter = deps.getAdapter();
|
|
67
166
|
if (!adapter)
|
|
68
167
|
return err(NOT_CONNECTED);
|
|
69
168
|
if (!mode) {
|
|
70
169
|
return err("Specify where to run: call tc_run again with mode: 'local' or 'cloud'. " +
|
|
71
|
-
'If the user has not said which, ask them first — local runs on
|
|
170
|
+
'If the user has not said which, ask them first — local runs on a local agent, ' +
|
|
72
171
|
'cloud runs on an online cloud runner VM.');
|
|
73
172
|
}
|
|
173
|
+
// Never assume now-vs-scheduled — it decides which agents are eligible (online-only for now,
|
|
174
|
+
// online+offline for a local schedule) and, for a schedule, the start time asked next.
|
|
175
|
+
if (!when) {
|
|
176
|
+
return err("Specify WHEN to run: call tc_run again with when: 'immediate' (run now) or when: 'schedule' " +
|
|
177
|
+
'(create a schedule). If the user has not said, ask them first — never assume.');
|
|
178
|
+
}
|
|
74
179
|
let resolvedRunner;
|
|
75
180
|
if (mode === 'cloud') {
|
|
76
181
|
if (!adapter.listCloudRunners)
|
|
@@ -82,6 +187,7 @@ export function registerRunTools(server, deps) {
|
|
|
82
187
|
catch (e) {
|
|
83
188
|
return err(describeError(e));
|
|
84
189
|
}
|
|
190
|
+
// Cloud is ONLINE-only whether now or scheduled (a schedule pin to an offline VM is rejected).
|
|
85
191
|
const online = runners.filter((r) => r.online);
|
|
86
192
|
if (!online.length) {
|
|
87
193
|
return err('Currently there are no active cloud runners in your project.');
|
|
@@ -92,22 +198,69 @@ export function registerRunTools(server, deps) {
|
|
|
92
198
|
return err(`Cloud runner "${cloudRunnerId}" is not online. Online now:\n` + online.map(runnerLine).join('\n'));
|
|
93
199
|
}
|
|
94
200
|
}
|
|
95
|
-
else {
|
|
96
|
-
resolvedRunner = online[0]; // auto-pick the first online runner
|
|
201
|
+
else if (when === 'immediate') {
|
|
202
|
+
resolvedRunner = online[0]; // run-now with no pick → auto-pick the first online runner
|
|
203
|
+
}
|
|
204
|
+
// when:'schedule' with no cloudRunnerId → leave unpinned; the backend auto-picks a live VM at fire time.
|
|
205
|
+
}
|
|
206
|
+
// LOCAL run-NOW to a specific agent must be online (can't dispatch to an offline agent). A local
|
|
207
|
+
// SCHEDULE may target an offline agent — that path is handled in the schedule branch below.
|
|
208
|
+
if (mode === 'local' && when === 'immediate' && agentId) {
|
|
209
|
+
const offlineMsg = await localAgentOfflineForNow(adapter, agentId);
|
|
210
|
+
if (offlineMsg)
|
|
211
|
+
return err(offlineMsg);
|
|
212
|
+
}
|
|
213
|
+
if (when === 'schedule') {
|
|
214
|
+
if (!adapter.createSchedule)
|
|
215
|
+
return err('This product does not support scheduling runs.');
|
|
216
|
+
if (!scheduledFor) {
|
|
217
|
+
return err("Scheduling needs a start time: call tc_run again with when: 'schedule' and scheduledFor as an " +
|
|
218
|
+
"ISO datetime (e.g. '2026-08-20T09:00:00Z'). Ask the user when the run should start (and the " +
|
|
219
|
+
'recurrence, end date and timezone if any).');
|
|
220
|
+
}
|
|
221
|
+
// A schedule fires detached from any live session — a LOCAL schedule must pin a specific agent.
|
|
222
|
+
if (mode === 'local' && !agentId)
|
|
223
|
+
return err(await localScheduleNeedsAgent(adapter));
|
|
224
|
+
// Cloud: pin the runner's CREDENTIAL only when the user explicitly picked one; otherwise leave
|
|
225
|
+
// it unpinned so the backend auto-picks a live VM at fire time (don't freeze today's online[0]).
|
|
226
|
+
const pinnedRunner = mode === 'cloud' && cloudRunnerId ? resolvedRunner : undefined;
|
|
227
|
+
const schedOpts = {
|
|
228
|
+
mode,
|
|
229
|
+
scheduledFor,
|
|
230
|
+
...(mode === 'local' && agentId ? { agentId } : {}),
|
|
231
|
+
...(pinnedRunner?.credentialId ? { cloudRunnerCredentialId: pinnedRunner.credentialId } : {}),
|
|
232
|
+
...(browser !== undefined ? { browser } : {}),
|
|
233
|
+
...(environment !== undefined ? { environmentId: environment } : {}),
|
|
234
|
+
...(scheduleType !== undefined ? { scheduleType } : {}),
|
|
235
|
+
...(endDate !== undefined ? { endDate } : {}),
|
|
236
|
+
...(timezone !== undefined ? { timezone } : {}),
|
|
237
|
+
};
|
|
238
|
+
try {
|
|
239
|
+
const sched = await adapter.createSchedule({ tcId }, schedOpts);
|
|
240
|
+
const next = sched.nextRunAt ? ` · first run ${sched.nextRunAt}` : '';
|
|
241
|
+
const where = mode === 'cloud'
|
|
242
|
+
? (pinnedRunner ? `cloud runner **${pinnedRunner.name}**` : 'cloud (auto-pick a live VM at run time)')
|
|
243
|
+
: `agent \`${agentId}\``;
|
|
244
|
+
return ok(`Scheduled ${tcId} (${scheduleType ?? 'once'}, ${mode}) for ${scheduledFor}${next} → ${where}. Schedule id \`${sched.id}\`.`, { schedule: sched, mode, when: 'schedule', ...(pinnedRunner ? { runner: pinnedRunner } : {}) });
|
|
245
|
+
}
|
|
246
|
+
catch (e) {
|
|
247
|
+
return err(describeError(e));
|
|
97
248
|
}
|
|
98
249
|
}
|
|
99
250
|
const opts = {
|
|
100
251
|
mode,
|
|
252
|
+
...(mode === 'local' && agentId ? { agentId } : {}),
|
|
101
253
|
...(environment !== undefined ? { environment } : {}),
|
|
102
254
|
...(browser !== undefined ? { browser } : {}),
|
|
103
255
|
...(headless !== undefined ? { headless } : {}),
|
|
104
256
|
...(resolvedRunner ? { cloudRunnerId: resolvedRunner.id } : {}),
|
|
257
|
+
...(deviceId !== undefined ? { deviceId } : {}),
|
|
105
258
|
};
|
|
106
259
|
try {
|
|
107
260
|
const run = await adapter.startRun({ tcId }, opts);
|
|
108
261
|
const where = mode === 'cloud'
|
|
109
262
|
? `on cloud runner ${resolvedRunner ? `**${resolvedRunner.name}**` : ''}`
|
|
110
|
-
:
|
|
263
|
+
: `locally${agentId ? ` on agent \`${agentId}\`` : ' on your online agent'}`;
|
|
111
264
|
return ok(`Started ${tcId} ${where}. Run id \`${run.runId}\` — poll run_status({ runId: "${run.runId}" }) for progress.`, { run, mode, ...(resolvedRunner ? { runner: resolvedRunner } : {}) });
|
|
112
265
|
}
|
|
113
266
|
catch (e) {
|
|
@@ -115,36 +268,57 @@ export function registerRunTools(server, deps) {
|
|
|
115
268
|
}
|
|
116
269
|
});
|
|
117
270
|
server.registerTool('suite_run', {
|
|
118
|
-
title: 'Run a test suite (local or cloud)',
|
|
271
|
+
title: 'Run a test suite (local or cloud; now or scheduled)',
|
|
119
272
|
description: 'Execute an existing test SUITE — all its member test cases, in order — in the connected product. ' +
|
|
120
|
-
'`mode`
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
'
|
|
124
|
-
'
|
|
125
|
-
'
|
|
126
|
-
'
|
|
273
|
+
'ASK the user — never assume — and in ORDER (mirrors the product UI): (1) `mode` local/cloud, (2) `when` ' +
|
|
274
|
+
'immediate/schedule, (3) for a schedule the start time + recurrence + timezone, (4) THEN offer the ' +
|
|
275
|
+
'eligible agent/runner. `mode` decides WHERE it runs:\n' +
|
|
276
|
+
" • 'local' — a local agent's own browser, always serial. Pass `agentId` from local_agents. For " +
|
|
277
|
+
"when:'immediate' only ONLINE agents are eligible (omit to auto-pick your own online agent); for " +
|
|
278
|
+
"when:'schedule' ANY agent (online OR offline) is eligible and `agentId` is REQUIRED.\n" +
|
|
279
|
+
" • 'cloud' — online cloud runner VM(s) (ONLINE-only whether now or scheduled). Pass `cloudRunnerId` " +
|
|
280
|
+
'from cloud_runners; for a schedule omit it to auto-pick a live VM at fire time.\n' +
|
|
281
|
+
'IF THE USER HAS NOT SAID local or cloud, ASK — this tool refuses when mode is omitted. For cloud, if no ' +
|
|
282
|
+
'runner is online it reports that there are no active cloud runners (nothing is run).\n' +
|
|
283
|
+
'`when` decides WHEN it runs (this tool REFUSES when `when` is omitted — ASK the user):\n' +
|
|
284
|
+
" • 'immediate' — dispatch now; returns the suite-run id — poll run_status for progress " +
|
|
285
|
+
'(per-test-case results under `children`) and run_stop to cancel.\n' +
|
|
286
|
+
" • 'schedule' — create a schedule instead (requires `scheduledFor`); ASK the start time, recurrence, " +
|
|
287
|
+
'end date and timezone BEFORE offering an agent. Returns the schedule id.\n' +
|
|
288
|
+
'NOTE: a suite of only MANUAL test cases cannot be run or scheduled by an agent — the backend rejects it.',
|
|
127
289
|
inputSchema: {
|
|
128
290
|
suiteId: z.string().describe('The suite id to run (from suite_list / suite_get).'),
|
|
129
|
-
mode: z.enum(['local', 'cloud']).optional().describe('Where to run. REQUIRED
|
|
291
|
+
mode: z.enum(['local', 'cloud']).optional().describe('Where to run. REQUIRED — ASK the user if unstated (the tool refuses when omitted).'),
|
|
292
|
+
agentId: z.string().optional().describe("For local: a specific agent credential_id (from local_agents). when:'immediate' → must be ONLINE (or omit to auto-pick your own online agent); when:'schedule' → REQUIRED, may be offline."),
|
|
130
293
|
environment: z.string().optional().describe('Environment id (Mongo id); a name is ignored and the project default is used.'),
|
|
131
|
-
browser: z.string().optional().describe("Browser, default 'chromium'. Others: 'chrome'/'msedge', 'firefox', 'webkit'."),
|
|
132
|
-
headless: z.boolean().optional().describe('Headless. Defaults: cloud=true, local=false.'),
|
|
133
|
-
cloudRunnerId: z.string().optional().describe(
|
|
134
|
-
strategy: z.enum(['serial', 'batch', 'dynamic']).optional().describe('Cloud dispatch order across the suite. Default serial; local is always serial.'),
|
|
135
|
-
maxConcurrent: z.number().int().positive().optional().describe('Cloud batch/dynamic only — max test cases running at once.'),
|
|
136
|
-
terminateOnFailure: z.boolean().optional().describe('Stop dispatching remaining test cases after the first failure.'),
|
|
294
|
+
browser: z.string().optional().describe("Browser, default 'chromium'. Others: 'chrome'/'msedge', 'firefox', 'webkit'. NOTE: a schedule accepts only chromium/msedge/firefox/webkit."),
|
|
295
|
+
headless: z.boolean().optional().describe('Headless. Defaults: cloud=true, local=false. (Immediate runs only.)'),
|
|
296
|
+
cloudRunnerId: z.string().optional().describe("For cloud: a specific ONLINE runner id (from cloud_runners). For when:'schedule' omit to auto-pick a live VM at fire time."),
|
|
297
|
+
strategy: z.enum(['serial', 'batch', 'dynamic']).optional().describe('Cloud dispatch order across the suite (immediate runs). Default serial; local is always serial.'),
|
|
298
|
+
maxConcurrent: z.number().int().positive().optional().describe('Cloud batch/dynamic only — max test cases running at once (immediate runs).'),
|
|
299
|
+
terminateOnFailure: z.boolean().optional().describe('Stop dispatching remaining test cases after the first failure (immediate runs).'),
|
|
300
|
+
when: z.enum(['immediate', 'schedule']).optional().describe("When to run — REQUIRED, ASK the user if unstated (the tool refuses when omitted). 'immediate' dispatches now; 'schedule' creates a schedule (needs scheduledFor)."),
|
|
301
|
+
scheduledFor: z.string().optional().describe("REQUIRED for when:'schedule' — ISO datetime of the first/only run (e.g. '2026-08-20T09:00:00Z')."),
|
|
302
|
+
scheduleType: z.enum(['once', 'hourly', 'daily', 'weekdays', 'weekly', 'monthly']).optional().describe("Recurrence for a schedule. Default 'once'. hourly/daily/weekdays require an endDate."),
|
|
303
|
+
endDate: z.string().optional().describe('For a recurring schedule — ISO end date (required for hourly/daily/weekdays).'),
|
|
304
|
+
timezone: z.string().optional().describe("IANA timezone for a schedule (e.g. 'Asia/Kolkata'). Default 'UTC'."),
|
|
137
305
|
},
|
|
138
306
|
annotations: { readOnlyHint: false },
|
|
139
|
-
}, async ({ suiteId, mode, environment, browser, headless, cloudRunnerId, strategy, maxConcurrent, terminateOnFailure }) => {
|
|
307
|
+
}, async ({ suiteId, mode, agentId, environment, browser, headless, cloudRunnerId, strategy, maxConcurrent, terminateOnFailure, when, scheduledFor, scheduleType, endDate, timezone }) => {
|
|
140
308
|
const adapter = deps.getAdapter();
|
|
141
309
|
if (!adapter)
|
|
142
310
|
return err(NOT_CONNECTED);
|
|
143
311
|
if (!mode) {
|
|
144
312
|
return err("Specify where to run: call suite_run again with mode: 'local' or 'cloud'. " +
|
|
145
|
-
'If the user has not said which, ask them first — local runs on
|
|
313
|
+
'If the user has not said which, ask them first — local runs on a local agent, ' +
|
|
146
314
|
'cloud runs on online cloud runner VM(s).');
|
|
147
315
|
}
|
|
316
|
+
// Never assume now-vs-scheduled — it decides which agents are eligible (online-only for now,
|
|
317
|
+
// online+offline for a local schedule) and, for a schedule, the start time asked next.
|
|
318
|
+
if (!when) {
|
|
319
|
+
return err("Specify WHEN to run: call suite_run again with when: 'immediate' (run now) or when: 'schedule' " +
|
|
320
|
+
'(create a schedule). If the user has not said, ask them first — never assume.');
|
|
321
|
+
}
|
|
148
322
|
let resolvedRunner;
|
|
149
323
|
if (mode === 'cloud') {
|
|
150
324
|
if (!adapter.listCloudRunners)
|
|
@@ -156,6 +330,7 @@ export function registerRunTools(server, deps) {
|
|
|
156
330
|
catch (e) {
|
|
157
331
|
return err(describeError(e));
|
|
158
332
|
}
|
|
333
|
+
// Cloud is ONLINE-only whether now or scheduled (a schedule pin to an offline VM is rejected).
|
|
159
334
|
const online = runners.filter((r) => r.online);
|
|
160
335
|
if (!online.length) {
|
|
161
336
|
return err('Currently there are no active cloud runners in your project.');
|
|
@@ -166,12 +341,59 @@ export function registerRunTools(server, deps) {
|
|
|
166
341
|
return err(`Cloud runner "${cloudRunnerId}" is not online. Online now:\n` + online.map(runnerLine).join('\n'));
|
|
167
342
|
}
|
|
168
343
|
}
|
|
169
|
-
else {
|
|
170
|
-
resolvedRunner = online[0]; // auto-pick the first online runner
|
|
344
|
+
else if (when === 'immediate') {
|
|
345
|
+
resolvedRunner = online[0]; // run-now with no pick → auto-pick the first online runner
|
|
346
|
+
}
|
|
347
|
+
// when:'schedule' with no cloudRunnerId → leave unpinned; the backend auto-picks a live VM at fire time.
|
|
348
|
+
}
|
|
349
|
+
// LOCAL run-NOW to a specific agent must be online (can't dispatch to an offline agent). A local
|
|
350
|
+
// SCHEDULE may target an offline agent — that path is handled in the schedule branch below.
|
|
351
|
+
if (mode === 'local' && when === 'immediate' && agentId) {
|
|
352
|
+
const offlineMsg = await localAgentOfflineForNow(adapter, agentId);
|
|
353
|
+
if (offlineMsg)
|
|
354
|
+
return err(offlineMsg);
|
|
355
|
+
}
|
|
356
|
+
if (when === 'schedule') {
|
|
357
|
+
if (!adapter.createSchedule)
|
|
358
|
+
return err('This product does not support scheduling runs.');
|
|
359
|
+
if (!scheduledFor) {
|
|
360
|
+
return err("Scheduling needs a start time: call suite_run again with when: 'schedule' and scheduledFor as an " +
|
|
361
|
+
"ISO datetime (e.g. '2026-08-20T09:00:00Z'). Ask the user when the run should start (and the " +
|
|
362
|
+
'recurrence, end date and timezone if any). NOTE: strategy/maxConcurrent/terminateOnFailure are ' +
|
|
363
|
+
"immediate-run only — a schedule uses the suite's own settings.");
|
|
364
|
+
}
|
|
365
|
+
// A schedule fires detached from any live session — a LOCAL schedule must pin a specific agent.
|
|
366
|
+
if (mode === 'local' && !agentId)
|
|
367
|
+
return err(await localScheduleNeedsAgent(adapter));
|
|
368
|
+
// Cloud: pin the runner's CREDENTIAL only when the user explicitly picked one; otherwise leave
|
|
369
|
+
// it unpinned so the backend auto-picks a live VM at fire time (don't freeze today's online[0]).
|
|
370
|
+
const pinnedRunner = mode === 'cloud' && cloudRunnerId ? resolvedRunner : undefined;
|
|
371
|
+
const schedOpts = {
|
|
372
|
+
mode,
|
|
373
|
+
scheduledFor,
|
|
374
|
+
...(mode === 'local' && agentId ? { agentId } : {}),
|
|
375
|
+
...(pinnedRunner?.credentialId ? { cloudRunnerCredentialId: pinnedRunner.credentialId } : {}),
|
|
376
|
+
...(browser !== undefined ? { browser } : {}),
|
|
377
|
+
...(environment !== undefined ? { environmentId: environment } : {}),
|
|
378
|
+
...(scheduleType !== undefined ? { scheduleType } : {}),
|
|
379
|
+
...(endDate !== undefined ? { endDate } : {}),
|
|
380
|
+
...(timezone !== undefined ? { timezone } : {}),
|
|
381
|
+
};
|
|
382
|
+
try {
|
|
383
|
+
const sched = await adapter.createSchedule({ suiteId }, schedOpts);
|
|
384
|
+
const next = sched.nextRunAt ? ` · first run ${sched.nextRunAt}` : '';
|
|
385
|
+
const where = mode === 'cloud'
|
|
386
|
+
? (pinnedRunner ? `cloud runner **${pinnedRunner.name}**` : 'cloud (auto-pick a live VM at run time)')
|
|
387
|
+
: `agent \`${agentId}\``;
|
|
388
|
+
return ok(`Scheduled suite ${suiteId} (${scheduleType ?? 'once'}, ${mode}) for ${scheduledFor}${next} → ${where}. Schedule id \`${sched.id}\`.`, { schedule: sched, mode, when: 'schedule', ...(pinnedRunner ? { runner: pinnedRunner } : {}) });
|
|
389
|
+
}
|
|
390
|
+
catch (e) {
|
|
391
|
+
return err(describeError(e));
|
|
171
392
|
}
|
|
172
393
|
}
|
|
173
394
|
const opts = {
|
|
174
395
|
mode,
|
|
396
|
+
...(mode === 'local' && agentId ? { agentId } : {}),
|
|
175
397
|
...(environment !== undefined ? { environment } : {}),
|
|
176
398
|
...(browser !== undefined ? { browser } : {}),
|
|
177
399
|
...(headless !== undefined ? { headless } : {}),
|
|
@@ -184,7 +406,7 @@ export function registerRunTools(server, deps) {
|
|
|
184
406
|
const run = await adapter.startRun({ suiteId }, opts);
|
|
185
407
|
const where = mode === 'cloud'
|
|
186
408
|
? `on cloud runner ${resolvedRunner ? `**${resolvedRunner.name}**` : ''}`
|
|
187
|
-
:
|
|
409
|
+
: `locally${agentId ? ` on agent \`${agentId}\`` : ' on your online agent'}`;
|
|
188
410
|
return ok(`Started suite ${suiteId} ${where}. Run id \`${run.runId}\` — poll run_status({ runId: "${run.runId}" }) for progress.`, { run, mode, ...(resolvedRunner ? { runner: resolvedRunner } : {}) });
|
|
189
411
|
}
|
|
190
412
|
catch (e) {
|
|
@@ -226,5 +448,124 @@ export function registerRunTools(server, deps) {
|
|
|
226
448
|
return err(describeError(e));
|
|
227
449
|
}
|
|
228
450
|
});
|
|
451
|
+
server.registerTool('schedule_list', {
|
|
452
|
+
title: 'List schedules',
|
|
453
|
+
description: 'List the scheduled runs in the connected project — each with WHAT it runs (test case / suite), ' +
|
|
454
|
+
'its cadence, next run time, status (scheduled / running / paused / cancelled), where it runs + the ' +
|
|
455
|
+
'pinned agent, and its browser. Use this to find a schedule to edit, pause/resume, cancel, or delete. ' +
|
|
456
|
+
'Requires a live connection.',
|
|
457
|
+
inputSchema: {},
|
|
458
|
+
annotations: { readOnlyHint: true },
|
|
459
|
+
}, async () => {
|
|
460
|
+
const adapter = deps.getAdapter();
|
|
461
|
+
if (!adapter)
|
|
462
|
+
return err(NOT_CONNECTED);
|
|
463
|
+
if (!adapter.listSchedules)
|
|
464
|
+
return err('This product does not support listing schedules.');
|
|
465
|
+
try {
|
|
466
|
+
const schedules = await adapter.listSchedules();
|
|
467
|
+
if (!schedules.length)
|
|
468
|
+
return ok('No schedules in this project.', { schedules: [] });
|
|
469
|
+
const text = `${schedules.length} schedule${schedules.length === 1 ? '' : 's'}:\n\n` +
|
|
470
|
+
schedules.map(scheduleLine).join('\n');
|
|
471
|
+
return ok(text, { schedules });
|
|
472
|
+
}
|
|
473
|
+
catch (e) {
|
|
474
|
+
return err(describeError(e));
|
|
475
|
+
}
|
|
476
|
+
});
|
|
477
|
+
server.registerTool('schedule_update', {
|
|
478
|
+
title: 'Edit a schedule',
|
|
479
|
+
description: "Change a schedule's time / recurrence / end date / timezone / browser / environment, or RE-PIN its " +
|
|
480
|
+
'agent. Pass `scheduleId` (from schedule_list) and ONLY the fields to change. To re-pin: ' +
|
|
481
|
+
"mode:'local' + `agentId` (from local_agents), or mode:'cloud' + a runner's `cloudRunnerCredentialId` " +
|
|
482
|
+
'(the `credentialId` from cloud_runners). Requires a live connection.',
|
|
483
|
+
inputSchema: {
|
|
484
|
+
scheduleId: z.string().describe('The schedule id (from schedule_list).'),
|
|
485
|
+
scheduledFor: z.string().optional().describe('New start / next-run ISO datetime.'),
|
|
486
|
+
scheduleType: z.enum(['once', 'hourly', 'daily', 'weekdays', 'weekly', 'monthly']).optional().describe('New recurrence.'),
|
|
487
|
+
endDate: z.string().optional().describe('New ISO end date (for recurring schedules).'),
|
|
488
|
+
timezone: z.string().optional().describe("New IANA timezone (e.g. 'Asia/Kolkata')."),
|
|
489
|
+
browser: z.enum(['chromium', 'msedge', 'firefox', 'webkit']).optional().describe('New browser (schedules accept chromium/msedge/firefox/webkit, not chrome).'),
|
|
490
|
+
environment: z.string().optional().describe('New environment id (Mongo id).'),
|
|
491
|
+
mode: z.enum(['local', 'cloud']).optional().describe('Re-pin target: pair with agentId (local) or cloudRunnerCredentialId (cloud).'),
|
|
492
|
+
agentId: z.string().optional().describe('Local re-pin: an agent credential_id from local_agents.'),
|
|
493
|
+
cloudRunnerCredentialId: z.string().optional().describe("Cloud re-pin: a runner's credentialId from cloud_runners."),
|
|
494
|
+
},
|
|
495
|
+
annotations: { readOnlyHint: false },
|
|
496
|
+
}, async ({ scheduleId, scheduledFor, scheduleType, endDate, timezone, browser, environment, mode, agentId, cloudRunnerCredentialId }) => {
|
|
497
|
+
const adapter = deps.getAdapter();
|
|
498
|
+
if (!adapter)
|
|
499
|
+
return err(NOT_CONNECTED);
|
|
500
|
+
if (!adapter.updateSchedule)
|
|
501
|
+
return err('This product does not support editing schedules.');
|
|
502
|
+
const changes = {
|
|
503
|
+
...(scheduledFor !== undefined ? { scheduledFor } : {}),
|
|
504
|
+
...(scheduleType !== undefined ? { scheduleType } : {}),
|
|
505
|
+
...(endDate !== undefined ? { endDate } : {}),
|
|
506
|
+
...(timezone !== undefined ? { timezone } : {}),
|
|
507
|
+
...(browser !== undefined ? { browser } : {}),
|
|
508
|
+
...(environment !== undefined ? { environmentId: environment } : {}),
|
|
509
|
+
...(mode !== undefined ? { mode } : {}),
|
|
510
|
+
...(agentId !== undefined ? { agentId } : {}),
|
|
511
|
+
...(cloudRunnerCredentialId !== undefined ? { cloudRunnerCredentialId } : {}),
|
|
512
|
+
};
|
|
513
|
+
if (Object.keys(changes).length === 0) {
|
|
514
|
+
return err('Nothing to change — pass at least one field to edit (e.g. scheduledFor, scheduleType, browser, or a re-pin via mode + agentId/cloudRunnerCredentialId).');
|
|
515
|
+
}
|
|
516
|
+
try {
|
|
517
|
+
const ref = await adapter.updateSchedule(scheduleId, changes);
|
|
518
|
+
return ok(`Updated schedule \`${ref.id}\`${ref.nextRunAt ? ` · next run ${ref.nextRunAt}` : ''}.`, { schedule: ref });
|
|
519
|
+
}
|
|
520
|
+
catch (e) {
|
|
521
|
+
return err(describeError(e));
|
|
522
|
+
}
|
|
523
|
+
});
|
|
524
|
+
server.registerTool('schedule_control', {
|
|
525
|
+
title: 'Pause / resume / cancel a schedule',
|
|
526
|
+
description: "Change a schedule's state: `pause` (stop it firing but keep it — reversible with `resume`), " +
|
|
527
|
+
'`resume` (re-enable a paused schedule), or `cancel` (stop its pending / live run). To remove a ' +
|
|
528
|
+
'schedule entirely, use schedule_delete instead. Requires a live connection.',
|
|
529
|
+
inputSchema: {
|
|
530
|
+
scheduleId: z.string().describe('The schedule id (from schedule_list).'),
|
|
531
|
+
action: z.enum(['pause', 'resume', 'cancel']).describe('pause / resume / cancel.'),
|
|
532
|
+
},
|
|
533
|
+
annotations: { readOnlyHint: false },
|
|
534
|
+
}, async ({ scheduleId, action }) => {
|
|
535
|
+
const adapter = deps.getAdapter();
|
|
536
|
+
if (!adapter)
|
|
537
|
+
return err(NOT_CONNECTED);
|
|
538
|
+
if (!adapter.controlSchedule)
|
|
539
|
+
return err('This product does not support pausing / resuming / cancelling schedules.');
|
|
540
|
+
try {
|
|
541
|
+
const ref = await adapter.controlSchedule(scheduleId, action);
|
|
542
|
+
const verb = action === 'pause' ? 'Paused' : action === 'resume' ? 'Resumed' : 'Cancelled';
|
|
543
|
+
return ok(`${verb} schedule \`${ref.id}\`${ref.status ? ` · status ${ref.status}` : ''}.`, { schedule: ref });
|
|
544
|
+
}
|
|
545
|
+
catch (e) {
|
|
546
|
+
return err(describeError(e));
|
|
547
|
+
}
|
|
548
|
+
});
|
|
549
|
+
server.registerTool('schedule_delete', {
|
|
550
|
+
title: 'Delete a schedule',
|
|
551
|
+
description: 'Permanently DELETE a schedule (and tear down any run it currently owns). This cannot be undone — ' +
|
|
552
|
+
'to only stop it temporarily use schedule_control (pause / cancel). CONFIRM with the user before ' +
|
|
553
|
+
'deleting. Requires a live connection.',
|
|
554
|
+
inputSchema: { scheduleId: z.string().describe('The schedule id (from schedule_list).') },
|
|
555
|
+
annotations: { readOnlyHint: false, destructiveHint: true },
|
|
556
|
+
}, async ({ scheduleId }) => {
|
|
557
|
+
const adapter = deps.getAdapter();
|
|
558
|
+
if (!adapter)
|
|
559
|
+
return err(NOT_CONNECTED);
|
|
560
|
+
if (!adapter.deleteSchedule)
|
|
561
|
+
return err('This product does not support deleting schedules.');
|
|
562
|
+
try {
|
|
563
|
+
await adapter.deleteSchedule(scheduleId);
|
|
564
|
+
return ok(`Deleted schedule \`${scheduleId}\`.`);
|
|
565
|
+
}
|
|
566
|
+
catch (e) {
|
|
567
|
+
return err(describeError(e));
|
|
568
|
+
}
|
|
569
|
+
});
|
|
229
570
|
}
|
|
230
571
|
//# sourceMappingURL=run.tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.tools.js","sourceRoot":"","sources":["../../src/tools/run.tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.tools.js","sourceRoot":"","sources":["../../src/tools/run.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAc1C,MAAM,aAAa,GACjB,+HAA+H,CAAC;AAElI,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,UAAU,CAAC,CAAc;IAChC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACtG,CAAC;AAED,SAAS,cAAc,CAAC,CAAa;IACnC,+FAA+F;IAC/F,gGAAgG;IAChG,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9G,CAAC;AAED;wGACwG;AACxG,SAAS,YAAY,CAAC,CAAe;IACnC,MAAM,KAAK,GAAG,CAAC,CAAC,eAAe,KAAK,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACvE,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtG,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,OAAO,KAAK,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,YAAY,KAAK,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC;AAClH,CAAC;AAED;;;mFAGmF;AACnF,KAAK,UAAU,uBAAuB,CAAC,OAAwB;IAC7D,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;YAC/C,IAAI,GAAG,MAAM,CAAC,MAAM;gBAClB,CAAC,CAAC,mFAAmF;oBACnF,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACvC,CAAC,CAAC,qDAAqD,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC,CAAC,yDAAyD,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,CACL,4FAA4F;QAC5F,qEAAqE,GAAG,IAAI,CAC7E,CAAC;AACJ,CAAC;AAED;;sGAEsG;AACtG,KAAK,UAAU,uBAAuB,CAAC,OAAwB,EAAE,OAAe;IAC9E,IAAI,CAAC,OAAO,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QACpD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC9C,OAAO,CACL,WAAW,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,iDAAiD;gBAC9G,CAAC,MAAM,CAAC,MAAM;oBACZ,CAAC,CAAC,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBACzD,CAAC,CAAC,uFAAuF,CAAC,CAC7F,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,8DAA8D,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;gGACgG;AAChG,SAAS,UAAU,CAAC,CAAY;IAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;IACjD,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,MAAM,IAAI,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChI,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM;QAC7B,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACvH,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,OAAO,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,IAAkB;IACpE,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,2CAA2C;QAClD,WAAW,EACT,+FAA+F;YAC/F,6GAA6G;QAC/G,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAAE,OAAO,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAChF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC,kDAAkD,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACpG,MAAM,IAAI,GACR,GAAG,OAAO,CAAC,MAAM,gBAAgB,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,MAAM,CAAC,MAAM,cAAc;gBACjG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,0CAA0C;QACjD,WAAW,EACT,2FAA2F;YAC3F,kGAAkG;YAClG,8EAA8E;QAChF,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,eAAe;YAAE,OAAO,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACtF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC,iDAAiD,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YACjG,MAAM,IAAI,GACR,GAAG,MAAM,CAAC,MAAM,eAAe,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,MAAM,CAAC,MAAM,cAAc;gBAC9F,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,KAAK,EAAE,oDAAoD;QAC3D,WAAW,EACT,sGAAsG;YACtG,kGAAkG;YAClG,qGAAqG;YACrG,2CAA2C;YAC3C,yGAAyG;YACzG,yGAAyG;YACzG,oGAAoG;YACpG,uGAAuG;YACvG,mGAAmG;YACnG,yGAAyG;YACzG,2FAA2F;YAC3F,0FAA0F;YAC1F,wFAAwF;YACxF,wGAAwG;YACxG,4EAA4E;YAC5E,4FAA4F;QAC9F,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YACvE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC;YAC1I,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0OAA0O,CAAC;YACnR,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;YAC5H,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qLAAqL,CAAC;YAC9N,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;YAChH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4HAA4H,CAAC;YAC3K,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0KAA0K,CAAC;YACpN,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mKAAmK,CAAC;YAChO,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kGAAkG,CAAC;YAChJ,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sFAAsF,CAAC;YAC9L,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;YACxH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;SAC/G;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;KACrC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9I,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC;QAExC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,GAAG,CACR,yEAAyE;gBACvE,gFAAgF;gBAChF,0CAA0C,CAC7C,CAAC;QACJ,CAAC;QACD,6FAA6F;QAC7F,uFAAuF;QACvF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,GAAG,CACR,8FAA8F;gBAC5F,+EAA+E,CAClF,CAAC;QACJ,CAAC;QAED,IAAI,cAAuC,CAAC;QAC5C,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,gBAAgB;gBAAE,OAAO,GAAG,CAAC,4DAA4D,CAAC,CAAC;YACxG,IAAI,OAAsB,CAAC;YAC3B,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;YACD,+FAA+F;YAC/F,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,GAAG,CAAC,8DAA8D,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,aAAa,EAAE,CAAC;gBAClB,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;gBAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,OAAO,GAAG,CACR,iBAAiB,aAAa,gCAAgC,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACnG,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBAChC,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,2DAA2D;YACzF,CAAC;YACD,yGAAyG;QAC3G,CAAC;QAED,iGAAiG;QACjG,4FAA4F;QAC5F,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,IAAI,OAAO,EAAE,CAAC;YACxD,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACnE,IAAI,UAAU;gBAAE,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,cAAc;gBAAE,OAAO,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC1F,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO,GAAG,CACR,gGAAgG;oBAC9F,8FAA8F;oBAC9F,4CAA4C,CAC/C,CAAC;YACJ,CAAC;YACD,gGAAgG;YAChG,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO;gBAAE,OAAO,GAAG,CAAC,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;YACrF,+FAA+F;YAC/F,iGAAiG;YACjG,MAAM,YAAY,GAAG,IAAI,KAAK,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;YACpF,MAAM,SAAS,GAAoB;gBACjC,IAAI;gBACJ,YAAY;gBACZ,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7F,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChD,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;gBAChE,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,MAAM,KAAK,GAAG,IAAI,KAAK,OAAO;oBAC5B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,yCAAyC,CAAC;oBACtG,CAAC,CAAC,WAAW,OAAO,IAAI,CAAC;gBAC3B,OAAO,EAAE,CACP,aAAa,IAAI,KAAK,YAAY,IAAI,MAAM,KAAK,IAAI,SAAS,YAAY,GAAG,IAAI,MAAM,KAAK,mBAAmB,KAAK,CAAC,EAAE,KAAK,EAC5H,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAC/F,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAe;YACvB,IAAI;YACJ,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD,CAAC;QACF,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;YACnD,MAAM,KAAK,GACT,IAAI,KAAK,OAAO;gBACd,CAAC,CAAC,mBAAmB,cAAc,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzE,CAAC,CAAC,UAAU,OAAO,CAAC,CAAC,CAAC,eAAe,OAAO,IAAI,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC;YACjF,OAAO,EAAE,CACP,WAAW,IAAI,IAAI,KAAK,cAAc,GAAG,CAAC,KAAK,kCAAkC,GAAG,CAAC,KAAK,oBAAoB,EAC9G,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CACrE,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,qDAAqD;QAC5D,WAAW,EACT,mGAAmG;YACnG,0GAA0G;YAC1G,oGAAoG;YACpG,wDAAwD;YACxD,kGAAkG;YAClG,kGAAkG;YAClG,wFAAwF;YACxF,uGAAuG;YACvG,mFAAmF;YACnF,0GAA0G;YAC1G,wFAAwF;YACxF,0FAA0F;YAC1F,0FAA0F;YAC1F,oEAAoE;YACpE,wGAAwG;YACxG,4EAA4E;YAC5E,0GAA0G;QAC5G,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YAClF,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC;YAC1I,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4LAA4L,CAAC;YACrO,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;YAC5H,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4IAA4I,CAAC;YACrL,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;YAChH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4HAA4H,CAAC;YAC3K,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iGAAiG,CAAC;YACvK,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;YAC7I,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iFAAiF,CAAC;YACtI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mKAAmK,CAAC;YAChO,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kGAAkG,CAAC;YAChJ,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sFAAsF,CAAC;YAC9L,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;YACxH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;SAC/G;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;KACrC,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QACpL,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC;QAExC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,GAAG,CACR,4EAA4E;gBAC1E,gFAAgF;gBAChF,0CAA0C,CAC7C,CAAC;QACJ,CAAC;QACD,6FAA6F;QAC7F,uFAAuF;QACvF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,GAAG,CACR,iGAAiG;gBAC/F,+EAA+E,CAClF,CAAC;QACJ,CAAC;QAED,IAAI,cAAuC,CAAC;QAC5C,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,gBAAgB;gBAAE,OAAO,GAAG,CAAC,4DAA4D,CAAC,CAAC;YACxG,IAAI,OAAsB,CAAC;YAC3B,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;YACD,+FAA+F;YAC/F,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,GAAG,CAAC,8DAA8D,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,aAAa,EAAE,CAAC;gBAClB,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;gBAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,OAAO,GAAG,CAAC,iBAAiB,aAAa,gCAAgC,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjH,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBAChC,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,2DAA2D;YACzF,CAAC;YACD,yGAAyG;QAC3G,CAAC;QAED,iGAAiG;QACjG,4FAA4F;QAC5F,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,IAAI,OAAO,EAAE,CAAC;YACxD,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACnE,IAAI,UAAU;gBAAE,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,cAAc;gBAAE,OAAO,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC1F,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO,GAAG,CACR,mGAAmG;oBACjG,8FAA8F;oBAC9F,iGAAiG;oBACjG,gEAAgE,CACnE,CAAC;YACJ,CAAC;YACD,gGAAgG;YAChG,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO;gBAAE,OAAO,GAAG,CAAC,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;YACrF,+FAA+F;YAC/F,iGAAiG;YACjG,MAAM,YAAY,GAAG,IAAI,KAAK,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;YACpF,MAAM,SAAS,GAAoB;gBACjC,IAAI;gBACJ,YAAY;gBACZ,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7F,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChD,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;gBACnE,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,MAAM,KAAK,GAAG,IAAI,KAAK,OAAO;oBAC5B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,yCAAyC,CAAC;oBACtG,CAAC,CAAC,WAAW,OAAO,IAAI,CAAC;gBAC3B,OAAO,EAAE,CACP,mBAAmB,OAAO,KAAK,YAAY,IAAI,MAAM,KAAK,IAAI,SAAS,YAAY,GAAG,IAAI,MAAM,KAAK,mBAAmB,KAAK,CAAC,EAAE,KAAK,EACrI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAC/F,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAe;YACvB,IAAI;YACJ,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpE,CAAC;QACF,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;YACtD,MAAM,KAAK,GACT,IAAI,KAAK,OAAO;gBACd,CAAC,CAAC,mBAAmB,cAAc,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzE,CAAC,CAAC,UAAU,OAAO,CAAC,CAAC,CAAC,eAAe,OAAO,IAAI,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC;YACjF,OAAO,EAAE,CACP,iBAAiB,OAAO,IAAI,KAAK,cAAc,GAAG,CAAC,KAAK,kCAAkC,GAAG,CAAC,KAAK,oBAAoB,EACvH,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CACrE,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,mGAAmG;YACnG,wDAAwD;QAC1D,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC,EAAE;QAC7E,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3C,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,iEAAiE;QAC9E,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;QAClE,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;KACrC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,EAAE,CAAC,0BAA0B,KAAK,GAAG,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,iGAAiG;YACjG,qGAAqG;YACrG,uGAAuG;YACvG,6BAA6B;QAC/B,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,aAAa;YAAE,OAAO,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAC3F,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;YAChD,IAAI,CAAC,SAAS,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC,+BAA+B,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YACrF,MAAM,IAAI,GACR,GAAG,SAAS,CAAC,MAAM,YAAY,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO;gBACvE,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,qGAAqG;YACrG,0FAA0F;YAC1F,uGAAuG;YACvG,sEAAsE;QACxE,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YACxE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAClF,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACzH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACtF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACpF,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4EAA4E,CAAC;YAC9J,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAC7E,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;YACpI,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;YAClG,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;SACrH;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;KACrC,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,EAAE;QACpI,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,cAAc;YAAE,OAAO,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAC5F,MAAM,OAAO,GAAmB;YAC9B,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,uBAAuB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9E,CAAC;QACF,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,GAAG,CAAC,yJAAyJ,CAAC,CAAC;QACxK,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC9D,OAAO,EAAE,CAAC,sBAAsB,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACxH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,oCAAoC;QAC3C,WAAW,EACT,8FAA8F;YAC9F,iGAAiG;YACjG,6EAA6E;QAC/E,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YACxE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;SACnF;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;KACrC,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,eAAe;YAAE,OAAO,GAAG,CAAC,0EAA0E,CAAC,CAAC;QACrH,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;YAC3F,OAAO,EAAE,CAAC,GAAG,IAAI,eAAe,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QAChH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,mGAAmG;YACnG,kGAAkG;YAClG,uCAAuC;QACzC,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC,EAAE;QACzF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,cAAc;YAAE,OAAO,GAAG,CAAC,mDAAmD,CAAC,CAAC;QAC7F,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACzC,OAAO,EAAE,CAAC,sBAAsB,UAAU,KAAK,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|