@getverbal/cli 0.1.0 → 0.4.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.
Files changed (79) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +34 -18
  3. package/dist/cli.js +19246 -56
  4. package/package.json +15 -8
  5. package/dist/auth/browser-auth.d.ts +0 -6
  6. package/dist/auth/browser-auth.d.ts.map +0 -1
  7. package/dist/auth/browser-auth.js +0 -202
  8. package/dist/auth/browser-auth.js.map +0 -1
  9. package/dist/auth/credentials.d.ts +0 -6
  10. package/dist/auth/credentials.d.ts.map +0 -1
  11. package/dist/auth/credentials.js +0 -78
  12. package/dist/auth/credentials.js.map +0 -1
  13. package/dist/cli.d.ts +0 -3
  14. package/dist/cli.d.ts.map +0 -1
  15. package/dist/cli.js.map +0 -1
  16. package/dist/commands/init.d.ts +0 -2
  17. package/dist/commands/init.d.ts.map +0 -1
  18. package/dist/commands/init.js +0 -188
  19. package/dist/commands/init.js.map +0 -1
  20. package/dist/commands/logout.d.ts +0 -2
  21. package/dist/commands/logout.d.ts.map +0 -1
  22. package/dist/commands/logout.js +0 -17
  23. package/dist/commands/logout.js.map +0 -1
  24. package/dist/commands/status.d.ts +0 -2
  25. package/dist/commands/status.d.ts.map +0 -1
  26. package/dist/commands/status.js +0 -43
  27. package/dist/commands/status.js.map +0 -1
  28. package/dist/commands/uninstall.d.ts +0 -2
  29. package/dist/commands/uninstall.d.ts.map +0 -1
  30. package/dist/commands/uninstall.js +0 -43
  31. package/dist/commands/uninstall.js.map +0 -1
  32. package/dist/configure/claude-code.d.ts +0 -7
  33. package/dist/configure/claude-code.d.ts.map +0 -1
  34. package/dist/configure/claude-code.js +0 -11
  35. package/dist/configure/claude-code.js.map +0 -1
  36. package/dist/configure/claude-desktop.d.ts +0 -8
  37. package/dist/configure/claude-desktop.d.ts.map +0 -1
  38. package/dist/configure/claude-desktop.js +0 -28
  39. package/dist/configure/claude-desktop.js.map +0 -1
  40. package/dist/configure/codex.d.ts +0 -7
  41. package/dist/configure/codex.d.ts.map +0 -1
  42. package/dist/configure/codex.js +0 -12
  43. package/dist/configure/codex.js.map +0 -1
  44. package/dist/configure/cursor.d.ts +0 -7
  45. package/dist/configure/cursor.d.ts.map +0 -1
  46. package/dist/configure/cursor.js +0 -12
  47. package/dist/configure/cursor.js.map +0 -1
  48. package/dist/configure/index.d.ts +0 -30
  49. package/dist/configure/index.d.ts.map +0 -1
  50. package/dist/configure/index.js +0 -149
  51. package/dist/configure/index.js.map +0 -1
  52. package/dist/detect/claude-code.d.ts +0 -3
  53. package/dist/detect/claude-code.d.ts.map +0 -1
  54. package/dist/detect/claude-code.js +0 -82
  55. package/dist/detect/claude-code.js.map +0 -1
  56. package/dist/detect/claude-desktop.d.ts +0 -3
  57. package/dist/detect/claude-desktop.d.ts.map +0 -1
  58. package/dist/detect/claude-desktop.js +0 -89
  59. package/dist/detect/claude-desktop.js.map +0 -1
  60. package/dist/detect/codex.d.ts +0 -3
  61. package/dist/detect/codex.d.ts.map +0 -1
  62. package/dist/detect/codex.js +0 -64
  63. package/dist/detect/codex.js.map +0 -1
  64. package/dist/detect/cursor.d.ts +0 -3
  65. package/dist/detect/cursor.d.ts.map +0 -1
  66. package/dist/detect/cursor.js +0 -81
  67. package/dist/detect/cursor.js.map +0 -1
  68. package/dist/detect/index.d.ts +0 -3
  69. package/dist/detect/index.d.ts.map +0 -1
  70. package/dist/detect/index.js +0 -28
  71. package/dist/detect/index.js.map +0 -1
  72. package/dist/types.d.ts +0 -18
  73. package/dist/types.d.ts.map +0 -1
  74. package/dist/types.js +0 -2
  75. package/dist/types.js.map +0 -1
  76. package/dist/verify.d.ts +0 -7
  77. package/dist/verify.d.ts.map +0 -1
  78. package/dist/verify.js +0 -40
  79. package/dist/verify.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-desktop.js","sourceRoot":"","sources":["../../src/detect/claude-desktop.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { DetectionResult } from '../types.js';
2
- export declare function detectCodex(): Promise<DetectionResult>;
3
- //# sourceMappingURL=codex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/detect/codex.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAsB,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,CA+D5D"}
@@ -1,64 +0,0 @@
1
- import { existsSync, readFileSync } from 'node:fs';
2
- import { homedir } from 'node:os';
3
- import { join } from 'node:path';
4
- import { execSync } from 'node:child_process';
5
- export async function detectCodex() {
6
- const configPath = join(homedir(), '.codex', 'config.json');
7
- try {
8
- // Check for codex binary in PATH
9
- let binaryPath;
10
- try {
11
- binaryPath = execSync('which codex', { encoding: 'utf-8', timeout: 5000 }).trim();
12
- }
13
- catch {
14
- // Binary not in PATH
15
- }
16
- // Check for ~/.codex/ directory
17
- const codexDir = join(homedir(), '.codex');
18
- const hasCodexDir = existsSync(codexDir);
19
- const detected = binaryPath !== undefined || hasCodexDir;
20
- if (!detected) {
21
- return {
22
- tool: 'codex',
23
- detected: false,
24
- configPath,
25
- existingConfig: false,
26
- details: 'Codex CLI not found',
27
- };
28
- }
29
- // Check if ~/.codex/config.json already has mcpServers.verbal
30
- let existingConfig = false;
31
- if (existsSync(configPath)) {
32
- try {
33
- const raw = readFileSync(configPath, 'utf-8');
34
- const parsed = JSON.parse(raw);
35
- const mcpServers = parsed['mcpServers'];
36
- if (mcpServers !== null && typeof mcpServers === 'object') {
37
- existingConfig = 'verbal' in mcpServers;
38
- }
39
- }
40
- catch {
41
- // Malformed JSON — treat as no existing config
42
- }
43
- }
44
- const location = binaryPath ?? codexDir;
45
- const details = `Codex CLI at ${location}`;
46
- return {
47
- tool: 'codex',
48
- detected: true,
49
- configPath,
50
- existingConfig,
51
- details,
52
- };
53
- }
54
- catch {
55
- return {
56
- tool: 'codex',
57
- detected: false,
58
- configPath,
59
- existingConfig: false,
60
- details: 'Codex CLI detection failed',
61
- };
62
- }
63
- }
64
- //# sourceMappingURL=codex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/detect/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAE5D,IAAI,CAAC;QACH,iCAAiC;QACjC,IAAI,UAA8B,CAAC;QAEnC,IAAI,CAAC;YACH,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpF,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;QAED,gCAAgC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEzC,MAAM,QAAQ,GAAG,UAAU,KAAK,SAAS,IAAI,WAAW,CAAC;QAEzD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,KAAK;gBACf,UAAU;gBACV,cAAc,EAAE,KAAK;gBACrB,OAAO,EAAE,qBAAqB;aAC/B,CAAC;QACJ,CAAC;QAED,8DAA8D;QAC9D,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;gBAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;gBACxC,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;oBAC1D,cAAc,GAAG,QAAQ,IAAK,UAAsC,CAAC;gBACvE,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,+CAA+C;YACjD,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,UAAU,IAAI,QAAQ,CAAC;QACxC,MAAM,OAAO,GAAG,gBAAgB,QAAQ,EAAE,CAAC;QAE3C,OAAO;YACL,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI;YACd,UAAU;YACV,cAAc;YACd,OAAO;SACR,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,KAAK;YACf,UAAU;YACV,cAAc,EAAE,KAAK;YACrB,OAAO,EAAE,4BAA4B;SACtC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { DetectionResult } from '../types.js';
2
- export declare function detectCursor(): Promise<DetectionResult>;
3
- //# sourceMappingURL=cursor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/detect/cursor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAgF7D"}
@@ -1,81 +0,0 @@
1
- import { existsSync, readFileSync } from 'node:fs';
2
- import { homedir } from 'node:os';
3
- import { join } from 'node:path';
4
- import { execSync } from 'node:child_process';
5
- export async function detectCursor() {
6
- const configPath = join(homedir(), '.cursor', 'mcp.json');
7
- try {
8
- // Check for cursor binary in PATH
9
- let binaryPath;
10
- let version;
11
- try {
12
- binaryPath = execSync('which cursor', { encoding: 'utf-8', timeout: 5000 }).trim();
13
- }
14
- catch {
15
- // Binary not in PATH
16
- }
17
- // Check for ~/.cursor/ directory
18
- const cursorDir = join(homedir(), '.cursor');
19
- const hasCursorDir = existsSync(cursorDir);
20
- const detected = binaryPath !== undefined || hasCursorDir;
21
- if (!detected) {
22
- return {
23
- tool: 'cursor',
24
- detected: false,
25
- configPath,
26
- existingConfig: false,
27
- details: 'Cursor not found',
28
- };
29
- }
30
- // Try to get version
31
- if (binaryPath) {
32
- try {
33
- const versionOutput = execSync('cursor --version', { encoding: 'utf-8', timeout: 5000 }).trim();
34
- const match = versionOutput.match(/(\d+\.\d+\.\d+)/);
35
- if (match) {
36
- version = match[1];
37
- }
38
- }
39
- catch {
40
- // Version check failed — non-fatal
41
- }
42
- }
43
- // Check if ~/.cursor/mcp.json already has mcpServers.verbal
44
- let existingConfig = false;
45
- if (existsSync(configPath)) {
46
- try {
47
- const raw = readFileSync(configPath, 'utf-8');
48
- const parsed = JSON.parse(raw);
49
- const mcpServers = parsed['mcpServers'];
50
- if (mcpServers !== null && typeof mcpServers === 'object') {
51
- existingConfig = 'verbal' in mcpServers;
52
- }
53
- }
54
- catch {
55
- // Malformed JSON — treat as no existing config
56
- }
57
- }
58
- const location = binaryPath ?? cursorDir;
59
- const details = version
60
- ? `Cursor v${version} at ${location}`
61
- : `Cursor at ${location}`;
62
- return {
63
- tool: 'cursor',
64
- detected: true,
65
- version,
66
- configPath,
67
- existingConfig,
68
- details,
69
- };
70
- }
71
- catch {
72
- return {
73
- tool: 'cursor',
74
- detected: false,
75
- configPath,
76
- existingConfig: false,
77
- details: 'Cursor detection failed',
78
- };
79
- }
80
- }
81
- //# sourceMappingURL=cursor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/detect/cursor.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { DetectionResult } from '../types.js';
2
- export declare function detectAll(): Promise<DetectionResult[]>;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMnD,wBAAsB,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAuB5D"}
@@ -1,28 +0,0 @@
1
- import { detectClaudeCode } from './claude-code.js';
2
- import { detectClaudeDesktop } from './claude-desktop.js';
3
- import { detectCursor } from './cursor.js';
4
- import { detectCodex } from './codex.js';
5
- export async function detectAll() {
6
- const results = await Promise.allSettled([
7
- detectClaudeCode(),
8
- detectClaudeDesktop(),
9
- detectCursor(),
10
- detectCodex(),
11
- ]);
12
- return results.map((result, index) => {
13
- if (result.status === 'fulfilled') {
14
- return result.value;
15
- }
16
- // A detector itself threw — return a safe fallback per tool
17
- const tools = ['claude-code', 'claude-desktop', 'cursor', 'codex'];
18
- const tool = tools[index];
19
- return {
20
- tool,
21
- detected: false,
22
- configPath: '',
23
- existingConfig: false,
24
- details: `${tool} detection error: ${result.reason instanceof Error ? result.reason.message : String(result.reason)}`,
25
- };
26
- });
27
- }
28
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;QACvC,gBAAgB,EAAE;QAClB,mBAAmB,EAAE;QACrB,YAAY,EAAE;QACd,WAAW,EAAE;KACd,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACnC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,4DAA4D;QAC5D,MAAM,KAAK,GAA8B,CAAC,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9F,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAE,CAAC;QAC3B,OAAO;YACL,IAAI;YACJ,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,EAAE;YACd,cAAc,EAAE,KAAK;YACrB,OAAO,EAAE,GAAG,IAAI,qBAAqB,MAAM,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;SACtH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/types.d.ts DELETED
@@ -1,18 +0,0 @@
1
- export interface Credentials {
2
- api_key: string;
3
- org_id: string;
4
- user_email: string;
5
- api_url: string;
6
- ingest_url: string;
7
- created_at: string;
8
- }
9
- export interface DetectionResult {
10
- tool: 'claude-code' | 'claude-desktop' | 'cursor' | 'codex';
11
- detected: boolean;
12
- version?: string;
13
- configPath: string;
14
- existingConfig: boolean;
15
- details: string;
16
- }
17
- export type ToolName = DetectionResult['tool'];
18
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,aAAa,GAAG,gBAAgB,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5D,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC"}
package/dist/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/dist/verify.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import type { Credentials } from './types.js';
2
- /**
3
- * Sends a test event to the Verbal ingest API to verify connectivity and auth.
4
- * Throws a user-friendly error on failure.
5
- */
6
- export declare function verifyConnection(credentials: Credentials): Promise<void>;
7
- //# sourceMappingURL=verify.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC9E"}
package/dist/verify.js DELETED
@@ -1,40 +0,0 @@
1
- /**
2
- * Sends a test event to the Verbal ingest API to verify connectivity and auth.
3
- * Throws a user-friendly error on failure.
4
- */
5
- export async function verifyConnection(credentials) {
6
- const url = credentials.ingest_url;
7
- let response;
8
- try {
9
- response = await fetch(url, {
10
- method: 'POST',
11
- headers: {
12
- 'Content-Type': 'application/json',
13
- Authorization: `Bearer ${credentials.api_key}`,
14
- },
15
- body: JSON.stringify({
16
- events: [
17
- {
18
- provider: 'verbal',
19
- model: 'cli-verify',
20
- prompt_tokens: 0,
21
- completion_tokens: 0,
22
- estimated_cost: 0,
23
- metadata: { source: 'getverbal-cli', type: 'cli_verify' },
24
- },
25
- ],
26
- }),
27
- });
28
- }
29
- catch {
30
- throw new Error(`Could not reach Verbal API at ${url}`);
31
- }
32
- if (response.ok) {
33
- return;
34
- }
35
- if (response.status === 401 || response.status === 403) {
36
- throw new Error('Authentication failed — your API key may be invalid');
37
- }
38
- throw new Error(`Verification failed: HTTP ${response.status}`);
39
- }
40
- //# sourceMappingURL=verify.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAAwB;IAC7D,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC;IAEnC,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC1B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,WAAW,CAAC,OAAO,EAAE;aAC/C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,MAAM,EAAE;oBACN;wBACE,QAAQ,EAAE,QAAQ;wBAClB,KAAK,EAAE,YAAY;wBACnB,aAAa,EAAE,CAAC;wBAChB,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,CAAC;wBACjB,QAAQ,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE;qBAC1D;iBACF;aACF,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAClE,CAAC"}