@eddym06/custom-chrome-mcp 1.0.4 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chrome-connector.d.ts +21 -4
- package/dist/chrome-connector.d.ts.map +1 -1
- package/dist/chrome-connector.js +358 -53
- package/dist/chrome-connector.js.map +1 -1
- package/dist/index.js +47 -11
- package/dist/index.js.map +1 -1
- package/dist/tools/anti-detection.d.ts.map +1 -1
- package/dist/tools/anti-detection.js +8 -3
- package/dist/tools/anti-detection.js.map +1 -1
- package/dist/tools/capture.d.ts +8 -8
- package/dist/tools/capture.d.ts.map +1 -1
- package/dist/tools/capture.js +13 -8
- package/dist/tools/capture.js.map +1 -1
- package/dist/tools/interaction.d.ts +4 -4
- package/dist/tools/interaction.d.ts.map +1 -1
- package/dist/tools/interaction.js +16 -8
- package/dist/tools/interaction.js.map +1 -1
- package/dist/tools/navigation.d.ts.map +1 -1
- package/dist/tools/navigation.js +36 -14
- package/dist/tools/navigation.js.map +1 -1
- package/dist/tools/playwright-launcher.d.ts +1 -1
- package/dist/tools/playwright-launcher.js +2 -2
- package/dist/tools/playwright-launcher.js.map +1 -1
- package/dist/tools/service-worker.d.ts +2 -2
- package/dist/tools/service-worker.d.ts.map +1 -1
- package/dist/tools/service-worker.js +12 -2
- package/dist/tools/service-worker.js.map +1 -1
- package/dist/tools/session.d.ts.map +1 -1
- package/dist/tools/session.js +14 -5
- package/dist/tools/session.js.map +1 -1
- package/dist/tools/system.d.ts +2 -2
- package/dist/tools/system.d.ts.map +1 -1
- package/dist/tools/system.js +6 -2
- package/dist/tools/system.js.map +1 -1
- package/package.json +2 -2
- package/.npmrc.example +0 -2
- package/test-playwright.js +0 -57
|
@@ -44,6 +44,10 @@ export declare class ChromeConnector {
|
|
|
44
44
|
* This is more robust for persistent profiles than Playwright's launcher
|
|
45
45
|
*/
|
|
46
46
|
launchWithProfile(options?: LaunchOptions): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Handle Chrome process death - cleanup internal state
|
|
49
|
+
*/
|
|
50
|
+
private handleProcessDeath;
|
|
47
51
|
/**
|
|
48
52
|
* Disconnect from Chrome and close Playwright browser
|
|
49
53
|
*/
|
|
@@ -68,6 +72,15 @@ export declare class ChromeConnector {
|
|
|
68
72
|
* Check if connected
|
|
69
73
|
*/
|
|
70
74
|
isConnected(): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Get the CDP port number
|
|
77
|
+
*/
|
|
78
|
+
getPort(): number;
|
|
79
|
+
/**
|
|
80
|
+
* Verify Chrome is alive and connected to port 9222
|
|
81
|
+
* Throws error if connection is dead
|
|
82
|
+
*/
|
|
83
|
+
verifyConnection(): Promise<void>;
|
|
71
84
|
/**
|
|
72
85
|
* List all open tabs and targets (including service workers)
|
|
73
86
|
*/
|
|
@@ -100,10 +113,6 @@ export declare class ChromeConnector {
|
|
|
100
113
|
* Get Chrome version info
|
|
101
114
|
*/
|
|
102
115
|
getVersion(): Promise<any>;
|
|
103
|
-
/**
|
|
104
|
-
* Get current port
|
|
105
|
-
*/
|
|
106
|
-
getPort(): number;
|
|
107
116
|
/**
|
|
108
117
|
* Set current tab
|
|
109
118
|
*/
|
|
@@ -112,5 +121,13 @@ export declare class ChromeConnector {
|
|
|
112
121
|
* Get current tab ID
|
|
113
122
|
*/
|
|
114
123
|
getCurrentTabId(): string | null;
|
|
124
|
+
/**
|
|
125
|
+
* Helper to inject a visual connection status toast into the page
|
|
126
|
+
*/
|
|
127
|
+
injectConnectionStatus(targetId: string): Promise<void>;
|
|
128
|
+
/**
|
|
129
|
+
* Helper to ensure a specific target's window is visible and restored
|
|
130
|
+
*/
|
|
131
|
+
ensureWindowVisible(targetId: string): Promise<void>;
|
|
115
132
|
}
|
|
116
133
|
//# sourceMappingURL=chrome-connector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome-connector.d.ts","sourceRoot":"","sources":["../src/chrome-connector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AASzE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,aAAa,CAA6B;gBAEtC,IAAI,GAAE,MAAa;IAI/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"chrome-connector.d.ts","sourceRoot":"","sources":["../src/chrome-connector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AASzE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,aAAa,CAA6B;gBAEtC,IAAI,GAAE,MAAa;IAI/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqCxB;;;;OAIG;YACW,mBAAmB;IAuEjC;;;OAGG;IACG,iBAAiB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4RnE;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6B1B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBjC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB9B;;OAEG;IACH,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAI1C;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;OAEG;IACH,aAAa,IAAI,gBAAgB;IAOjC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBvC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAoBpC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAK7C;;OAEG;IACG,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAe/C;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5C;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/C;;OAEG;IACG,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IA+BhD;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAWhF;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC;IAShC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,eAAe,IAAI,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B7D;;OAEG;IACG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA+E3D"}
|
package/dist/chrome-connector.js
CHANGED
|
@@ -27,8 +27,18 @@ export class ChromeConnector {
|
|
|
27
27
|
const platform = os.platform();
|
|
28
28
|
switch (platform) {
|
|
29
29
|
case 'win32':
|
|
30
|
+
const commonPaths = [
|
|
31
|
+
'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
|
|
32
|
+
'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
|
|
33
|
+
`${process.env.LOCALAPPDATA}\\Google\\Chrome\\Application\\chrome.exe`
|
|
34
|
+
];
|
|
35
|
+
let executable = commonPaths.find(p => fs.existsSync(p));
|
|
36
|
+
if (!executable) {
|
|
37
|
+
executable = commonPaths[0];
|
|
38
|
+
console.error('⚠️ Could not find Chrome in common locations. Using default:', executable);
|
|
39
|
+
}
|
|
30
40
|
return {
|
|
31
|
-
executable
|
|
41
|
+
executable,
|
|
32
42
|
userDataDir: `${process.env.LOCALAPPDATA}\\Google\\Chrome\\User Data`
|
|
33
43
|
};
|
|
34
44
|
case 'darwin':
|
|
@@ -130,6 +140,38 @@ export class ChromeConnector {
|
|
|
130
140
|
// Check if port is open
|
|
131
141
|
await this.connect();
|
|
132
142
|
console.error(`✅ Detected and connected to existing Chrome on port ${this.port}`);
|
|
143
|
+
// CHECK: If connected but no pages are open, it might be a background process or invisible.
|
|
144
|
+
// We should try to ensure a window is visible.
|
|
145
|
+
const tabs = await this.listTabs();
|
|
146
|
+
const hasPages = tabs.some(t => t.type === 'page');
|
|
147
|
+
if (!hasPages) {
|
|
148
|
+
console.error('⚠️ Connection active but no open pages found (possible background process). Opening new tab to ensure visibility...');
|
|
149
|
+
try {
|
|
150
|
+
await this.connection?.client.Target.createTarget({ url: 'about:blank' });
|
|
151
|
+
}
|
|
152
|
+
catch (createErr) {
|
|
153
|
+
console.error('❌ Failed to create new target in existing instance:', createErr);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Force activation of the first page to ensure window is visible/foreground
|
|
157
|
+
try {
|
|
158
|
+
const currentTabs = await this.listTabs();
|
|
159
|
+
const page = currentTabs.find(t => t.type === 'page');
|
|
160
|
+
if (page) {
|
|
161
|
+
await this.ensureWindowVisible(page.id); // NEW HELPER
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch (activateErr) {
|
|
165
|
+
console.error('⚠️ Could not activate window:', activateErr);
|
|
166
|
+
}
|
|
167
|
+
// Verify network connectivity (as requested by user) even for existing instances
|
|
168
|
+
try {
|
|
169
|
+
const { stdout: pingOutput } = await execAsync('ping -n 1 google.com');
|
|
170
|
+
if (pingOutput.includes('TTL=') || pingOutput.includes('tiempo=')) {
|
|
171
|
+
console.error('✅ Network connectivity verified');
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (e) { /* ignore ping failure */ }
|
|
133
175
|
return;
|
|
134
176
|
}
|
|
135
177
|
catch (e) {
|
|
@@ -170,74 +212,173 @@ export class ChromeConnector {
|
|
|
170
212
|
'--password-store=basic'
|
|
171
213
|
];
|
|
172
214
|
console.error(` Args: ${JSON.stringify(args)}`);
|
|
173
|
-
//
|
|
174
|
-
|
|
215
|
+
// Use standard spawn with file logging for detachment + debug
|
|
216
|
+
const logFile = path.join(os.tmpdir(), 'chrome-mcp-debug.log');
|
|
217
|
+
// Ensure we can write to log file
|
|
218
|
+
try {
|
|
219
|
+
fs.writeFileSync(logFile, '');
|
|
220
|
+
}
|
|
221
|
+
catch (e) { }
|
|
222
|
+
console.error(` Logging to: ${logFile}`);
|
|
223
|
+
// Keep Chrome as a child process - it will survive as long as the MCP server is running
|
|
224
|
+
const out = fs.openSync(logFile, 'a');
|
|
225
|
+
const err = fs.openSync(logFile, 'a');
|
|
175
226
|
this.chromeProcess = spawn(executablePath, args, {
|
|
176
|
-
detached:
|
|
177
|
-
stdio: ['ignore',
|
|
227
|
+
detached: false, // Keep as child
|
|
228
|
+
stdio: ['ignore', out, err],
|
|
178
229
|
windowsHide: false
|
|
179
230
|
});
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
this.chromeProcess
|
|
183
|
-
|
|
184
|
-
console.error(`Chrome Err: ${data.toString()}`);
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
const processExited = new Promise((_, reject) => {
|
|
188
|
-
this.chromeProcess?.on('exit', (code) => {
|
|
189
|
-
if (code !== 0) {
|
|
190
|
-
reject(new Error(`Chrome process exited immediately with code ${code}. Logs: ${startupLogs}`));
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
this.chromeProcess?.on('error', (err) => {
|
|
194
|
-
reject(new Error(`Failed to spawn Chrome process: ${err.message}`));
|
|
195
|
-
});
|
|
231
|
+
// Setup process death detection
|
|
232
|
+
this.chromeProcess.on('exit', (code, signal) => {
|
|
233
|
+
console.error(`⚠️ Chrome process died (PID: ${this.chromeProcess?.pid}, code: ${code}, signal: ${signal})`);
|
|
234
|
+
this.handleProcessDeath();
|
|
196
235
|
});
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
236
|
+
this.chromeProcess.on('error', (err) => {
|
|
237
|
+
console.error(`⚠️ Chrome process error:`, err);
|
|
238
|
+
this.handleProcessDeath();
|
|
239
|
+
});
|
|
240
|
+
// Don't call unref() - keep the process attached to the MCP server
|
|
241
|
+
console.error(`✅ Chrome process spawned (PID: ${this.chromeProcess.pid})`);
|
|
242
|
+
// Close file descriptors after Chrome has started
|
|
243
|
+
setTimeout(() => {
|
|
244
|
+
try {
|
|
245
|
+
fs.closeSync(out);
|
|
246
|
+
fs.closeSync(err);
|
|
247
|
+
}
|
|
248
|
+
catch (e) { }
|
|
249
|
+
}, 5000);
|
|
250
|
+
// ENHANCED VERIFICATION SYSTEM
|
|
251
|
+
// Wait 3 seconds before starting verification
|
|
252
|
+
console.error('⏳ Waiting 3 seconds for Chrome to fully initialize...');
|
|
253
|
+
await new Promise(r => setTimeout(r, 3000));
|
|
254
|
+
// Step 1: Verify process is still running via system command
|
|
255
|
+
console.error('🔍 Step 1: Verifying Chrome process is running...');
|
|
256
|
+
// Wait for Chrome to initialize
|
|
257
|
+
const waitTime = 3000;
|
|
258
|
+
console.error(`⏳ Waiting ${waitTime}ms for process to settle...`);
|
|
259
|
+
await new Promise(r => setTimeout(r, waitTime));
|
|
260
|
+
// Verify process is still running
|
|
261
|
+
if (this.chromeProcess && this.chromeProcess.pid) {
|
|
262
|
+
try {
|
|
263
|
+
const platform = os.platform();
|
|
264
|
+
let processCheckCmd;
|
|
265
|
+
if (platform === 'win32') {
|
|
266
|
+
processCheckCmd = `powershell -Command "Get-Process -Id ${this.chromeProcess.pid} -ErrorAction SilentlyContinue | Where-Object { $_.MainWindowHandle -ne 0 } | Select-Object -ExpandProperty ProcessName"`;
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
processCheckCmd = `ps -p ${this.chromeProcess.pid} -o comm=`;
|
|
270
|
+
}
|
|
271
|
+
const { stdout } = await execAsync(processCheckCmd);
|
|
272
|
+
const processName = stdout.trim();
|
|
273
|
+
if (processName) {
|
|
274
|
+
console.error(`✅ Process verified: ${processName} (PID: ${this.chromeProcess.pid})`);
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
throw new Error('Process not found in system');
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
catch (procErr) {
|
|
281
|
+
throw new Error(`Chrome process verification failed: ${procErr.message}`);
|
|
282
|
+
}
|
|
203
283
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
284
|
+
// Step 2: Verify port is listening
|
|
285
|
+
console.error(`🔍 Step 2: Verifying CDP port ${this.port} is listening...`);
|
|
286
|
+
try {
|
|
287
|
+
const platform = os.platform();
|
|
288
|
+
let portCheckCmd;
|
|
289
|
+
if (platform === 'win32') {
|
|
290
|
+
portCheckCmd = `powershell -Command "netstat -ano | Select-String ':${this.port}' | Select-String 'LISTENING'"`;
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
portCheckCmd = `lsof -i :${this.port} | grep LISTEN || netstat -an | grep ${this.port}`;
|
|
294
|
+
}
|
|
295
|
+
const { stdout: portOutput } = await execAsync(portCheckCmd);
|
|
296
|
+
if (portOutput.trim()) {
|
|
297
|
+
console.error(`✅ Port ${this.port} is listening`);
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
throw new Error('Port not listening');
|
|
301
|
+
}
|
|
207
302
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
if (this.chromeProcess.stderr) {
|
|
211
|
-
this.chromeProcess.stderr.destroy();
|
|
303
|
+
catch (portErr) {
|
|
304
|
+
console.error(`⚠️ Port check inconclusive, proceeding with CDP connection test...`);
|
|
212
305
|
}
|
|
213
|
-
|
|
214
|
-
|
|
306
|
+
// Step 3: Connect to CDP with retries
|
|
307
|
+
console.error('🔍 Step 3: Connecting to CDP...');
|
|
215
308
|
let connected = false;
|
|
216
|
-
for (let i = 0; i <
|
|
309
|
+
for (let i = 0; i < 8; i++) {
|
|
217
310
|
try {
|
|
218
311
|
await this.connect();
|
|
219
312
|
connected = true;
|
|
313
|
+
console.error(`✅ CDP connection established (attempt ${i + 1})`);
|
|
220
314
|
break;
|
|
221
315
|
}
|
|
222
316
|
catch (e) {
|
|
223
|
-
console.error(`
|
|
317
|
+
console.error(` Attempt ${i + 1}/8 failed. Retrying in 1s...`);
|
|
224
318
|
await new Promise(r => setTimeout(r, 1000));
|
|
225
319
|
}
|
|
226
320
|
}
|
|
227
321
|
if (!connected) {
|
|
228
|
-
|
|
322
|
+
let logs = 'Check log file';
|
|
323
|
+
try {
|
|
324
|
+
logs = fs.readFileSync(logFile, 'utf8');
|
|
325
|
+
}
|
|
326
|
+
catch (e) { }
|
|
327
|
+
throw new Error(`Chrome process is running (PID ${this.chromeProcess.pid}) but CDP port ${this.port} is not accessible after 15s. Logs: ${logs}`);
|
|
229
328
|
}
|
|
230
|
-
//
|
|
329
|
+
// Step 4: Verify browser is responsive (can list targets)
|
|
330
|
+
console.error('🔍 Step 4: Verifying browser responsiveness...');
|
|
231
331
|
try {
|
|
232
|
-
|
|
233
|
-
console.error(`✅
|
|
332
|
+
let targets = await this.listTabs();
|
|
333
|
+
console.error(`✅ Browser responsive: Found ${targets.length} targets`);
|
|
234
334
|
if (targets.length === 0) {
|
|
235
|
-
console.error('⚠️ Warning: Browser running but no targets found.');
|
|
335
|
+
console.error('⚠️ Warning: Browser running but no targets found. Creating initial tab...');
|
|
336
|
+
try {
|
|
337
|
+
await this.connection?.client.Target.createTarget({ url: 'about:blank' });
|
|
338
|
+
console.error('✅ Initial tab created');
|
|
339
|
+
targets = await this.listTabs(); // Refresh targets
|
|
340
|
+
}
|
|
341
|
+
catch (createErr) {
|
|
342
|
+
console.error('⚠️ Could not create initial tab:', createErr);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// Force activation of the first page to ensure window is visible/foreground
|
|
346
|
+
const page = targets.find(t => t.type === 'page');
|
|
347
|
+
if (page) {
|
|
348
|
+
try {
|
|
349
|
+
await this.ensureWindowVisible(page.id); // NEW HELPER
|
|
350
|
+
// Inject visual feedback (UX)
|
|
351
|
+
await this.injectConnectionStatus(page.id);
|
|
352
|
+
}
|
|
353
|
+
catch (activateErr) {
|
|
354
|
+
console.error('⚠️ Could not activate window:', activateErr);
|
|
355
|
+
}
|
|
236
356
|
}
|
|
237
357
|
}
|
|
238
358
|
catch (verErr) {
|
|
239
359
|
console.error('⚠️ Warning: Could not verify targets listing:', verErr);
|
|
240
360
|
}
|
|
361
|
+
// Step 5: Verify network connectivity and Chrome window visibility
|
|
362
|
+
console.error('🔍 Step 5: Verifying network connectivity and browser visibility...');
|
|
363
|
+
try {
|
|
364
|
+
// Test network connectivity with ping
|
|
365
|
+
const { stdout: pingOutput } = await execAsync('ping -n 2 google.com');
|
|
366
|
+
if (pingOutput.includes('TTL=') || pingOutput.includes('tiempo=')) {
|
|
367
|
+
console.error('✅ Network connectivity verified (google.com reachable)');
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
console.error('⚠️ Network connectivity test inconclusive');
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
catch (pingErr) {
|
|
374
|
+
console.error('⚠️ Network test failed (this may be normal if offline):', pingErr.message);
|
|
375
|
+
}
|
|
376
|
+
console.error('');
|
|
377
|
+
console.error('🎉 Chrome launch verification complete!');
|
|
378
|
+
console.error(` Process: Running (PID ${this.chromeProcess.pid})`);
|
|
379
|
+
console.error(` Port: ${this.port}`);
|
|
380
|
+
console.error(` CDP: Connected`);
|
|
381
|
+
console.error(` Status: Ready`);
|
|
241
382
|
// Optional: Try to attach Playwright over CDP for advanced features if needed
|
|
242
383
|
try {
|
|
243
384
|
const browser = await chromium.connectOverCDP(`http://localhost:${this.port}`);
|
|
@@ -249,6 +390,35 @@ export class ChromeConnector {
|
|
|
249
390
|
console.error('⚠️ Could not attach Playwright wrapper (CDP still works):', pwError.message);
|
|
250
391
|
}
|
|
251
392
|
}
|
|
393
|
+
/**
|
|
394
|
+
* Handle Chrome process death - cleanup internal state
|
|
395
|
+
*/
|
|
396
|
+
handleProcessDeath() {
|
|
397
|
+
console.error('🧹 Cleaning up internal state due to Chrome process death...');
|
|
398
|
+
// Clear connection
|
|
399
|
+
if (this.connection) {
|
|
400
|
+
try {
|
|
401
|
+
this.connection.client.close().catch(() => { });
|
|
402
|
+
}
|
|
403
|
+
catch (e) { }
|
|
404
|
+
this.connection = null;
|
|
405
|
+
}
|
|
406
|
+
// Clear browser context
|
|
407
|
+
if (this.browserContext) {
|
|
408
|
+
try {
|
|
409
|
+
const browser = this.browserContext.browser();
|
|
410
|
+
if (browser) {
|
|
411
|
+
browser.close().catch(() => { });
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
catch (e) { }
|
|
415
|
+
this.browserContext = null;
|
|
416
|
+
}
|
|
417
|
+
// Clear process reference
|
|
418
|
+
this.chromeProcess = null;
|
|
419
|
+
this.currentTabId = null;
|
|
420
|
+
console.error('✅ Internal state cleared. Ready for new launch.');
|
|
421
|
+
}
|
|
252
422
|
/**
|
|
253
423
|
* Disconnect from Chrome and close Playwright browser
|
|
254
424
|
*/
|
|
@@ -316,6 +486,38 @@ export class ChromeConnector {
|
|
|
316
486
|
isConnected() {
|
|
317
487
|
return this.connection?.connected ?? false;
|
|
318
488
|
}
|
|
489
|
+
/**
|
|
490
|
+
* Get the CDP port number
|
|
491
|
+
*/
|
|
492
|
+
getPort() {
|
|
493
|
+
return this.port;
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Verify Chrome is alive and connected to port 9222
|
|
497
|
+
* Throws error if connection is dead
|
|
498
|
+
*/
|
|
499
|
+
async verifyConnection() {
|
|
500
|
+
// Check if we think we're connected
|
|
501
|
+
if (!this.connection?.connected) {
|
|
502
|
+
throw new Error('Not connected to Chrome. Launch Chrome first using launch_chrome_with_profile.');
|
|
503
|
+
}
|
|
504
|
+
// Verify port is actually accessible
|
|
505
|
+
try {
|
|
506
|
+
const targets = await CDP.List({ port: this.port });
|
|
507
|
+
if (!targets || targets.length === 0) {
|
|
508
|
+
throw new Error('Chrome CDP is accessible but no targets found');
|
|
509
|
+
}
|
|
510
|
+
console.error(`✅ Connection verified: ${targets.length} targets on port ${this.port}`);
|
|
511
|
+
}
|
|
512
|
+
catch (error) {
|
|
513
|
+
const err = error;
|
|
514
|
+
// Connection is dead - clean up
|
|
515
|
+
this.handleProcessDeath();
|
|
516
|
+
throw new Error(`Chrome connection is dead (port ${this.port} not responding). ` +
|
|
517
|
+
`Chrome may have been killed externally. Please launch Chrome again. ` +
|
|
518
|
+
`Error: ${err.message}`);
|
|
519
|
+
}
|
|
520
|
+
}
|
|
319
521
|
/**
|
|
320
522
|
* List all open tabs and targets (including service workers)
|
|
321
523
|
*/
|
|
@@ -393,16 +595,17 @@ export class ChromeConnector {
|
|
|
393
595
|
const target = tabId || this.currentTabId;
|
|
394
596
|
if (!target) {
|
|
395
597
|
// Get the first available tab
|
|
396
|
-
// If this fails, it means Chrome is definitely not
|
|
598
|
+
// If this fails, it means Chrome is definitely not connected
|
|
397
599
|
let tabs;
|
|
398
600
|
try {
|
|
399
601
|
tabs = await this.listTabs();
|
|
400
602
|
}
|
|
401
603
|
catch (e) {
|
|
402
|
-
|
|
604
|
+
console.error(`Debug: listTabs failed on port ${this.port}. Error: ${e.message}`);
|
|
605
|
+
throw new Error(`Connection failed on port ${this.port}. Is Chrome running? Original Error: ${e.message}`);
|
|
403
606
|
}
|
|
404
607
|
if (tabs.length === 0) {
|
|
405
|
-
throw new Error(
|
|
608
|
+
throw new Error(`Chrome is accessible on port ${this.port} but has no open tabs/pages.`);
|
|
406
609
|
}
|
|
407
610
|
return await CDP({ port: this.port, target: tabs[0].id });
|
|
408
611
|
}
|
|
@@ -411,7 +614,7 @@ export class ChromeConnector {
|
|
|
411
614
|
catch (error) {
|
|
412
615
|
const err = error;
|
|
413
616
|
if (err.message && (err.message.includes('ECONNREFUSED') || err.message.includes('connect'))) {
|
|
414
|
-
throw new Error(
|
|
617
|
+
throw new Error(`Chrome connection refused on port ${this.port}. The browser might have closed or blocked the connection. Error: ${err.message}`);
|
|
415
618
|
}
|
|
416
619
|
throw new Error(`Failed to get tab client: ${err.message}`);
|
|
417
620
|
}
|
|
@@ -441,12 +644,6 @@ export class ChromeConnector {
|
|
|
441
644
|
throw new Error(`Failed to get Chrome version: ${error.message}`);
|
|
442
645
|
}
|
|
443
646
|
}
|
|
444
|
-
/**
|
|
445
|
-
* Get current port
|
|
446
|
-
*/
|
|
447
|
-
getPort() {
|
|
448
|
-
return this.port;
|
|
449
|
-
}
|
|
450
647
|
/**
|
|
451
648
|
* Set current tab
|
|
452
649
|
*/
|
|
@@ -459,5 +656,113 @@ export class ChromeConnector {
|
|
|
459
656
|
getCurrentTabId() {
|
|
460
657
|
return this.currentTabId;
|
|
461
658
|
}
|
|
659
|
+
/**
|
|
660
|
+
* Helper to inject a visual connection status toast into the page
|
|
661
|
+
*/
|
|
662
|
+
async injectConnectionStatus(targetId) {
|
|
663
|
+
try {
|
|
664
|
+
const client = await this.getTabClient(targetId);
|
|
665
|
+
await client.Runtime.evaluate({
|
|
666
|
+
expression: `
|
|
667
|
+
(function() {
|
|
668
|
+
try {
|
|
669
|
+
const id = 'mcp-status-toast';
|
|
670
|
+
const existing = document.getElementById(id);
|
|
671
|
+
if(existing) existing.remove();
|
|
672
|
+
const div = document.createElement('div');
|
|
673
|
+
div.id = id;
|
|
674
|
+
div.innerHTML = "🤖 MCP Agent Conectado";
|
|
675
|
+
div.style = "position:fixed;bottom:20px;right:20px;background:#22c55e;color:white;padding:12px 24px;z-index:2147483647;border-radius:8px;font-family:system-ui,sans-serif;font-weight:bold;box-shadow:0 4px 12px rgba(0,0,0,0.15);transition:opacity 0.5s ease;pointer-events:none;";
|
|
676
|
+
document.body.appendChild(div);
|
|
677
|
+
setTimeout(() => {
|
|
678
|
+
div.style.opacity = '0';
|
|
679
|
+
setTimeout(() => div.remove(), 500);
|
|
680
|
+
}, 5000);
|
|
681
|
+
} catch(e){}
|
|
682
|
+
})()
|
|
683
|
+
`
|
|
684
|
+
});
|
|
685
|
+
}
|
|
686
|
+
catch (e) { /* ignore injection errors */ }
|
|
687
|
+
}
|
|
688
|
+
/**
|
|
689
|
+
* Helper to ensure a specific target's window is visible and restored
|
|
690
|
+
*/
|
|
691
|
+
async ensureWindowVisible(targetId) {
|
|
692
|
+
try {
|
|
693
|
+
const client = this.getConnection().client;
|
|
694
|
+
// 1. Activate using Target domain
|
|
695
|
+
await client.Target.activateTarget({ targetId });
|
|
696
|
+
console.error('✅ Target activated');
|
|
697
|
+
// 2. Try to get window state using Browser domain (if supported)
|
|
698
|
+
try {
|
|
699
|
+
// Get window for target
|
|
700
|
+
const { windowId, bounds } = await client.Browser.getWindowForTarget({ targetId });
|
|
701
|
+
// Check for negative/impossible coordinates (common multi-monitor issue)
|
|
702
|
+
const isOffScreen = (bounds.left !== undefined && bounds.left < 0) ||
|
|
703
|
+
(bounds.top !== undefined && bounds.top < 0);
|
|
704
|
+
if (isOffScreen) {
|
|
705
|
+
console.error('⚠️ Window detected off-screen. Recentering...');
|
|
706
|
+
await client.Browser.setWindowBounds({
|
|
707
|
+
windowId,
|
|
708
|
+
bounds: { left: 100, top: 100, width: 1280, height: 720, windowState: 'normal' }
|
|
709
|
+
});
|
|
710
|
+
console.error('✅ Window recentered');
|
|
711
|
+
}
|
|
712
|
+
else if (bounds.windowState === 'minimized' || bounds.windowState === 'hidden') {
|
|
713
|
+
console.error(`⚠️ Window is ${bounds.windowState}, restoring...`);
|
|
714
|
+
await client.Browser.setWindowBounds({
|
|
715
|
+
windowId,
|
|
716
|
+
bounds: { windowState: 'normal' }
|
|
717
|
+
});
|
|
718
|
+
console.error('✅ Window restored to normal state');
|
|
719
|
+
}
|
|
720
|
+
else {
|
|
721
|
+
// If it's already normal/maximized/fullscreen, still good to ensure focus
|
|
722
|
+
console.error(`Status: Window state is '${bounds.windowState}'`);
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
catch (browserErr) {
|
|
726
|
+
// Browser domain might not be fully supported in all versions or contexts
|
|
727
|
+
console.error('⚠️ Could not check window state via Browser domain (optional):', browserErr.message);
|
|
728
|
+
}
|
|
729
|
+
// 3. Fallback: Windows specific PowerShell to force window to front
|
|
730
|
+
if (os.platform() === 'win32') {
|
|
731
|
+
let pid = this.chromeProcess?.pid;
|
|
732
|
+
// If we don't have PID (we connected to existing instance), try to get it via CDP SystemInfo
|
|
733
|
+
if (!pid) {
|
|
734
|
+
try {
|
|
735
|
+
const sysInfo = await client.SystemInfo.getProcessInfo();
|
|
736
|
+
// find browser process
|
|
737
|
+
const browserProc = sysInfo.processInfo.find((p) => p.type === 'browser');
|
|
738
|
+
if (browserProc) {
|
|
739
|
+
pid = browserProc.id;
|
|
740
|
+
console.error(`Status: Identified Chrome PID ${pid} via CDP`);
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
catch (e) {
|
|
744
|
+
// SystemInfo might not be available
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
if (pid) {
|
|
748
|
+
const psCmd = `
|
|
749
|
+
Add-Type -AssemblyName Microsoft.VisualBasic
|
|
750
|
+
[Microsoft.VisualBasic.Interaction]::AppActivate(${pid})
|
|
751
|
+
`;
|
|
752
|
+
try {
|
|
753
|
+
// We use execAsync to run the powershell command
|
|
754
|
+
await execAsync(`powershell -Command "${psCmd}"`);
|
|
755
|
+
console.error('✅ Windows API Activate executed (Foreground Forced)');
|
|
756
|
+
}
|
|
757
|
+
catch (psErr) {
|
|
758
|
+
console.error('⚠️ Windows API Activate failed:', psErr.message);
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
catch (e) {
|
|
764
|
+
console.error('⚠️ Ensure Window Visible failed:', e.message);
|
|
765
|
+
}
|
|
766
|
+
}
|
|
462
767
|
}
|
|
463
768
|
//# sourceMappingURL=chrome-connector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome-connector.js","sourceRoot":"","sources":["../src/chrome-connector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chrome-connector.js","sourceRoot":"","sources":["../src/chrome-connector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,GAAG,MAAM,yBAAyB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAqC,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,KAAK,EAAqB,IAAI,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAuBlC,MAAM,OAAO,eAAe;IAClB,UAAU,GAA4B,IAAI,CAAC;IAC3C,IAAI,CAAS;IACb,YAAY,GAAkB,IAAI,CAAC;IACnC,cAAc,GAA0B,IAAI,CAAC;IAC7C,aAAa,GAAwB,IAAI,CAAC;IAElD,YAAY,OAAe,IAAI;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAE/B,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,OAAO;gBACV,MAAM,WAAW,GAAG;oBAChB,4DAA4D;oBAC5D,kEAAkE;oBAClE,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,2CAA2C;iBACzE,CAAC;gBAEF,IAAI,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEzD,IAAI,CAAC,UAAU,EAAE,CAAC;oBACd,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC5B,OAAO,CAAC,KAAK,CAAC,8DAA8D,EAAE,UAAU,CAAC,CAAC;gBAC9F,CAAC;gBAED,OAAO;oBACL,UAAU;oBACV,WAAW,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,6BAA6B;iBACtE,CAAC;YACJ,KAAK,QAAQ;gBACX,OAAO;oBACL,UAAU,EAAE,8DAA8D;oBAC1E,WAAW,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,4CAA4C;iBAC7E,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO;oBACL,UAAU,EAAE,wBAAwB;oBACpC,WAAW,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,wBAAwB;iBACzD,CAAC;YACJ;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,mBAAmB,CAAC,cAAsB,EAAE,WAAmB;QAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAE/B,2BAA2B;QAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,4CAA4C,OAAO,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,KAAK,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,cAAc,cAAc,EAAE,CAAC,CAAC;QAE9C,qEAAqE;QACrE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACzD,IAAI,CAAC;YACD,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC/B,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YACnD,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC;QAAC,CAAC;QAExE,iDAAiD;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAEpD,kDAAkD;QAClD,MAAM,WAAW,GAAG;YAChB,OAAO;YACP,YAAY;YACZ,UAAU;YACV,WAAW;YACX,aAAa;YACb,eAAe;YACf,aAAa;YACb,6BAA6B;YAC7B,4BAA4B;SAC/B,CAAC;QAEF,IAAI,GAAW,CAAC;QAEhB,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,wBAAwB;YACxB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1D,oGAAoG;YACpG,GAAG,GAAG,aAAa,UAAU,MAAM,WAAW,cAAc,QAAQ,uBAAuB,CAAC;YAE5F,IAAI,CAAC;gBACD,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBACd,8DAA8D;gBAC9D,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;gBACnE,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,8BAA8B;YAC9B,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzE,GAAG,GAAG,sBAAsB,aAAa,KAAK,UAAU,OAAO,WAAW,IAAI,CAAC;YAE/E,IAAI,CAAC;gBACD,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,UAAyB,EAAE;QACjD,uBAAuB;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,uDAAuD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAElF,4FAA4F;YAC5F,+CAA+C;YAC/C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAEnD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,qHAAqH,CAAC,CAAC;gBACrI,IAAI,CAAC;oBACD,MAAM,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC9E,CAAC;gBAAC,OAAO,SAAS,EAAE,CAAC;oBACjB,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAE,SAAS,CAAC,CAAC;gBACpF,CAAC;YACN,CAAC;YAED,4EAA4E;YAC5E,IAAI,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;gBACtD,IAAI,IAAI,EAAE,CAAC;oBACP,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;gBAC1D,CAAC;YACL,CAAC;YAAC,OAAO,WAAW,EAAE,CAAC;gBACnB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,WAAW,CAAC,CAAC;YAChE,CAAC;YAED,iFAAiF;YACjF,IAAI,CAAC;gBACD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,sBAAsB,CAAC,CAAC;gBACvE,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAClE,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACnD,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAC,yBAAyB,CAAC,CAAC;YAEzC,OAAO;QACT,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,qBAAqB;QACvB,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9C,IAAI,EACF,WAAW,EACX,gBAAgB,GAAG,SAAS,EAC5B,cAAc,GAAG,aAAa,CAAC,UAAU,EAC1C,GAAG,OAAO,CAAC;QAEZ,MAAM,mBAAmB,GAAG,WAAW,IAAI,aAAa,CAAC,WAAW,CAAC;QAErE,0CAA0C;QAC1C,IAAI,gBAAgB,GAAG,mBAAmB,CAAC;QAE3C,iCAAiC;QACjC,0EAA0E;QAC1E,kGAAkG;QAClG,IAAI,gBAAgB,KAAK,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;YAClD,IAAI,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;gBAC3F,gBAAgB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;YAC7F,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,sEAAsE,EAAE,GAAG,CAAC,CAAC;gBAC3F,gBAAgB,GAAG,mBAAmB,CAAC;YAC3C,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,iBAAiB,gBAAgB,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,eAAe,gBAAgB,EAAE,CAAC,CAAC;QAEjD,MAAM,IAAI,GAAG;YACX,2BAA2B,IAAI,CAAC,IAAI,EAAE;YACtC,mBAAmB,gBAAgB,EAAE;YACrC,uBAAuB,gBAAgB,EAAE;YACzC,0BAA0B;YAC1B,gBAAgB;YAChB,4BAA4B;YAC5B,+CAA+C;YAC/C,oBAAoB;YACpB,sCAAsC;YACtC,qBAAqB;YACrB,wBAAwB;SACzB,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAElD,8DAA8D;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAE/D,kCAAkC;QAClC,IAAI,CAAC;YAAC,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,OAAM,CAAC,EAAC,CAAC,CAAA,CAAC;QAEjD,OAAO,CAAC,KAAK,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC;QAE3C,wFAAwF;QACxF,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAEtC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE;YAC/C,QAAQ,EAAE,KAAK,EAAG,gBAAgB;YAClC,KAAK,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC;YAC3B,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QAEH,gCAAgC;QAChC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAC7C,OAAO,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,aAAa,EAAE,GAAG,WAAW,IAAI,aAAa,MAAM,GAAG,CAAC,CAAC;YAC5G,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACrC,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,mEAAmE;QAEnE,OAAO,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC;QAE3E,kDAAkD;QAClD,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC;gBACH,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAClB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;YAAC,OAAM,CAAC,EAAE,CAAC,CAAA,CAAC;QACf,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,+BAA+B;QAC/B,8CAA8C;QAC9C,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAE5C,6DAA6D;QAC7D,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAEnE,gCAAgC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,aAAa,QAAQ,6BAA6B,CAAC,CAAC;QAClE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEhD,kCAAkC;QAClC,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAC/B,IAAI,eAAuB,CAAC;gBAE5B,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACzB,eAAe,GAAG,wCAAwC,IAAI,CAAC,aAAa,CAAC,GAAG,0HAA0H,CAAC;gBAC7M,CAAC;qBAAM,CAAC;oBACN,eAAe,GAAG,SAAS,IAAI,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC;gBAC/D,CAAC;gBAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;gBACpD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAElC,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,uBAAuB,WAAW,UAAU,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC;gBACvF,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,uCAAwC,OAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,OAAO,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAC;QAC5E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC/B,IAAI,YAAoB,CAAC;YAEzB,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACzB,YAAY,GAAG,uDAAuD,IAAI,CAAC,IAAI,gCAAgC,CAAC;YAClH,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,YAAY,IAAI,CAAC,IAAI,wCAAwC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1F,CAAC;YAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;YAE7D,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,eAAe,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAAC,OAAO,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACtF,CAAC;QAED,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjD,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzB,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrB,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,GAAC,CAAC,GAAG,CAAC,CAAC;gBAC/D,MAAM;YACV,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,GAAC,CAAC,8BAA8B,CAAC,CAAC;gBAC/D,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACZ,IAAI,IAAI,GAAG,gBAAgB,CAAC;YAC5B,IAAI,CAAC;gBAAC,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAAC,CAAC;YAAC,OAAM,CAAC,EAAC,CAAC,CAAA,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,aAAc,CAAC,GAAG,kBAAkB,IAAI,CAAC,IAAI,uCAAuC,IAAI,EAAE,CAAC,CAAC;QACxJ,CAAC;QAED,0DAA0D;QAC1D,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,+BAA+B,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;YAEvE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;gBAC3F,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;oBAC1E,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBACvC,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,kBAAkB;gBACrD,CAAC;gBAAC,OAAO,SAAS,EAAE,CAAC;oBACnB,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,SAAS,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;YAED,4EAA4E;YAC5E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAClD,IAAI,IAAI,EAAE,CAAC;gBACP,IAAI,CAAC;oBACD,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;oBACtD,8BAA8B;oBAC9B,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBAAC,OAAO,WAAW,EAAE,CAAC;oBACnB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,WAAW,CAAC,CAAC;gBAChE,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,MAAM,CAAC,CAAC;QAC1E,CAAC;QAED,mEAAmE;QACnE,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACrF,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,sBAAsB,CAAC,CAAC;YAEvE,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClE,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAAC,OAAO,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,yDAAyD,EAAG,OAAiB,CAAC,OAAO,CAAC,CAAC;QACvG,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,aAAc,CAAC,GAAG,GAAG,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAElC,8EAA8E;QAC9E,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,oBAAoB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/E,yFAAyF;YACzF,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,2DAA2D,EAAG,OAAiB,CAAC,OAAO,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAE9E,mBAAmB;QACnB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;YACd,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC9C,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;YACd,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,qDAAqD;YACrD,8BAA8B;YAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAE9C,IAAI,CAAC,UAAU,GAAG;gBAChB,MAAM;gBACN,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC;YAEF,OAAO,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,uCAAuC,IAAI,CAAC,IAAI,IAAI;gBACpD,4DAA4D,IAAI,CAAC,IAAI,IAAI;gBACzE,UAAU,GAAG,CAAC,OAAO,EAAE,CACxB,CAAC;QACJ,CAAC;IACH,CAAC;IAID;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,EAAE,SAAS,IAAI,KAAK,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB;QACpB,oCAAoC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;QACpG,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,CAAC,MAAM,oBAAoB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,gCAAgC;YAChC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,mCAAmC,IAAI,CAAC,IAAI,oBAAoB;gBAChE,sEAAsE;gBACtE,UAAU,GAAG,CAAC,OAAO,EAAE,CACxB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAEpD,kEAAkE;YAClE,6EAA6E;YAC7E,OAAO,OAAO;iBACX,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;iBAC1H,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAChB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,EAAE,uCAAuC;gBAC9E,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC,CAAC,CAAC;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wBAAyB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,GAAY;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAEvD,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;gBACzB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,aAAa;aACxC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yBAA0B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,KAAa;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wBAAyB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2BAA4B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,KAAc;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;YAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,8BAA8B;gBAC9B,6DAA6D;gBAC7D,IAAI,IAAI,CAAC;gBACT,IAAI,CAAC;oBACD,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,OAAO,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,IAAI,YAAa,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC7F,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,IAAI,wCAAyC,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1H,CAAC;gBAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,IAAI,8BAA8B,CAAC,CAAC;gBAC3F,CAAC;gBACD,OAAO,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,OAAO,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;gBAC3F,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,IAAI,qEAAqE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACtJ,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,MAAc,EAAE,MAAY;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;QAE3C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;YAChE,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,IAAI,MAAM,MAAO,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACvD,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iCAAkC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAa;QACzB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB,CAAC,QAAgB;QAC3C,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAC1B,UAAU,EAAE;;;;;;;;;;;;;;;;;aAiBX;aACJ,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAC,6BAA6B,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,QAAgB;QACxC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;YAE3C,kCAAkC;YAClC,MAAM,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAEpC,iEAAiE;YACjE,IAAI,CAAC;gBACD,wBAAwB;gBACxB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAEnF,yEAAyE;gBACzE,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;oBAC9C,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBAEjE,IAAI,WAAW,EAAE,CAAC;oBACd,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;oBAC/D,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;wBACjC,QAAQ;wBACR,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE;qBACnF,CAAC,CAAC;oBACH,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACzC,CAAC;qBAAM,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW,IAAI,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;oBAC/E,OAAO,CAAC,KAAK,CAAC,gBAAgB,MAAM,CAAC,WAAW,gBAAgB,CAAC,CAAC;oBAClE,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;wBACjC,QAAQ;wBACR,MAAM,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE;qBACpC,CAAC,CAAC;oBACH,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACJ,0EAA0E;oBAC1E,OAAO,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;gBACrE,CAAC;YACL,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBAClB,0EAA0E;gBAC1E,OAAO,CAAC,KAAK,CAAC,gEAAgE,EAAG,UAAoB,CAAC,OAAO,CAAC,CAAC;YACnH,CAAC;YAED,oEAAoE;YACpE,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE,CAAC;gBAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC;gBAElC,6FAA6F;gBAC7F,IAAI,CAAC,GAAG,EAAE,CAAC;oBACP,IAAI,CAAC;wBACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;wBACzD,uBAAuB;wBACvB,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;wBAC/E,IAAI,WAAW,EAAE,CAAC;4BACd,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC;4BACrB,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,UAAU,CAAC,CAAC;wBAClE,CAAC;oBACL,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACT,oCAAoC;oBACxC,CAAC;gBACL,CAAC;gBAED,IAAI,GAAG,EAAE,CAAC;oBACN,MAAM,KAAK,GAAG;;uEAEwC,GAAG;kBACxD,CAAC;oBAEF,IAAI,CAAC;wBACD,iDAAiD;wBACjD,MAAM,SAAS,CAAC,wBAAwB,KAAK,GAAG,CAAC,CAAC;wBAClD,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;oBACzE,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;oBAC/E,CAAC;gBACL,CAAC;YACN,CAAC;QAEL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;CACF"}
|