claudeup 0.4.2 → 0.6.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 (72) hide show
  1. package/package.json +30 -18
  2. package/dist/data/cli-tools.d.ts +0 -13
  3. package/dist/data/cli-tools.d.ts.map +0 -1
  4. package/dist/data/cli-tools.js +0 -113
  5. package/dist/data/cli-tools.js.map +0 -1
  6. package/dist/data/marketplaces.d.ts +0 -4
  7. package/dist/data/marketplaces.d.ts.map +0 -1
  8. package/dist/data/marketplaces.js +0 -26
  9. package/dist/data/marketplaces.js.map +0 -1
  10. package/dist/data/mcp-servers.d.ts +0 -8
  11. package/dist/data/mcp-servers.d.ts.map +0 -1
  12. package/dist/data/mcp-servers.js +0 -421
  13. package/dist/data/mcp-servers.js.map +0 -1
  14. package/dist/data/statuslines.d.ts +0 -10
  15. package/dist/data/statuslines.d.ts.map +0 -1
  16. package/dist/data/statuslines.js +0 -160
  17. package/dist/data/statuslines.js.map +0 -1
  18. package/dist/index.d.ts +0 -3
  19. package/dist/index.d.ts.map +0 -1
  20. package/dist/index.js.map +0 -1
  21. package/dist/services/claude-settings.d.ts +0 -49
  22. package/dist/services/claude-settings.d.ts.map +0 -1
  23. package/dist/services/claude-settings.js +0 -299
  24. package/dist/services/claude-settings.js.map +0 -1
  25. package/dist/services/mcp-registry.d.ts +0 -10
  26. package/dist/services/mcp-registry.d.ts.map +0 -1
  27. package/dist/services/mcp-registry.js +0 -88
  28. package/dist/services/mcp-registry.js.map +0 -1
  29. package/dist/services/plugin-manager.d.ts +0 -23
  30. package/dist/services/plugin-manager.d.ts.map +0 -1
  31. package/dist/services/plugin-manager.js +0 -151
  32. package/dist/services/plugin-manager.js.map +0 -1
  33. package/dist/types/index.d.ts +0 -86
  34. package/dist/types/index.d.ts.map +0 -1
  35. package/dist/types/index.js +0 -2
  36. package/dist/types/index.js.map +0 -1
  37. package/dist/ui/app.d.ts +0 -38
  38. package/dist/ui/app.d.ts.map +0 -1
  39. package/dist/ui/app.js +0 -565
  40. package/dist/ui/app.js.map +0 -1
  41. package/dist/ui/screens/cli-tools.d.ts +0 -4
  42. package/dist/ui/screens/cli-tools.d.ts.map +0 -1
  43. package/dist/ui/screens/cli-tools.js +0 -331
  44. package/dist/ui/screens/cli-tools.js.map +0 -1
  45. package/dist/ui/screens/env-vars.d.ts +0 -3
  46. package/dist/ui/screens/env-vars.d.ts.map +0 -1
  47. package/dist/ui/screens/env-vars.js +0 -119
  48. package/dist/ui/screens/env-vars.js.map +0 -1
  49. package/dist/ui/screens/main-menu.d.ts +0 -3
  50. package/dist/ui/screens/main-menu.d.ts.map +0 -1
  51. package/dist/ui/screens/main-menu.js +0 -110
  52. package/dist/ui/screens/main-menu.js.map +0 -1
  53. package/dist/ui/screens/marketplace.d.ts +0 -3
  54. package/dist/ui/screens/marketplace.d.ts.map +0 -1
  55. package/dist/ui/screens/marketplace.js +0 -132
  56. package/dist/ui/screens/marketplace.js.map +0 -1
  57. package/dist/ui/screens/mcp-registry.d.ts +0 -10
  58. package/dist/ui/screens/mcp-registry.d.ts.map +0 -1
  59. package/dist/ui/screens/mcp-registry.js +0 -310
  60. package/dist/ui/screens/mcp-registry.js.map +0 -1
  61. package/dist/ui/screens/mcp-setup.d.ts +0 -4
  62. package/dist/ui/screens/mcp-setup.d.ts.map +0 -1
  63. package/dist/ui/screens/mcp-setup.js +0 -492
  64. package/dist/ui/screens/mcp-setup.js.map +0 -1
  65. package/dist/ui/screens/plugins.d.ts +0 -3
  66. package/dist/ui/screens/plugins.d.ts.map +0 -1
  67. package/dist/ui/screens/plugins.js +0 -449
  68. package/dist/ui/screens/plugins.js.map +0 -1
  69. package/dist/ui/screens/statusline.d.ts +0 -5
  70. package/dist/ui/screens/statusline.d.ts.map +0 -1
  71. package/dist/ui/screens/statusline.js +0 -235
  72. package/dist/ui/screens/statusline.js.map +0 -1
@@ -1,492 +0,0 @@
1
- import blessed from 'neo-blessed';
2
- import { createHeader, createFooter, showMessage, showConfirm, showInput, } from '../app.js';
3
- import { getMcpServersByCategory, getCategoryDisplayName, categoryOrder, getAllMcpServers, } from '../../data/mcp-servers.js';
4
- import { searchMcpServers } from '../../services/mcp-registry.js';
5
- import { addMcpServer, removeMcpServer, getInstalledMcpServers, getEnabledMcpServers, getMcpEnvVars, } from '../../services/claude-settings.js';
6
- // Search results screen
7
- export async function createMcpSearchScreen(state, query) {
8
- createHeader(state, 'MCP Servers');
9
- const installedServers = await getInstalledMcpServers(state.projectPath);
10
- const enabledServers = await getEnabledMcpServers(state.projectPath);
11
- const allServers = getAllMcpServers();
12
- // Search both local and remote sources
13
- const q = query.toLowerCase();
14
- // Search local curated servers
15
- const localFilteredServers = allServers.filter(s => s.name.toLowerCase().includes(q) ||
16
- s.description.toLowerCase().includes(q) ||
17
- (s.category && s.category.toLowerCase().includes(q)));
18
- // Search remote MCP registry
19
- let remoteServers = [];
20
- let remoteError = null;
21
- try {
22
- const response = await searchMcpServers({ query, limit: 50 });
23
- remoteServers = response.servers || [];
24
- }
25
- catch (err) {
26
- // Remote search failed, will show local results only
27
- remoteError = err;
28
- remoteServers = [];
29
- }
30
- // Combine and deduplicate results (prioritize local/curated)
31
- const allResults = new Map();
32
- // Add local results first (they have more metadata)
33
- for (const server of localFilteredServers) {
34
- allResults.set(server.name, { server, source: 'local' });
35
- }
36
- // Add remote results, converting McpRegistryServer to McpServer format
37
- for (const remote of remoteServers) {
38
- if (!allResults.has(remote.name)) {
39
- // Convert remote server to our format
40
- const convertedServer = {
41
- name: remote.name,
42
- description: remote.short_description || 'No description',
43
- type: 'http',
44
- url: remote.url,
45
- category: 'productivity', // Default category for remote servers
46
- requiresConfig: false,
47
- };
48
- allResults.set(remote.name, { server: convertedServer, source: 'remote' });
49
- }
50
- }
51
- const combinedResults = Array.from(allResults.values());
52
- const localCount = localFilteredServers.length;
53
- let searchInfo = `${combinedResults.length} found`;
54
- if (localCount > 0) {
55
- searchInfo += ` ({cyan-fg}${localCount} local{/cyan-fg})`;
56
- }
57
- if (remoteError) {
58
- searchInfo += ` | {red-fg}Remote search failed{/red-fg}`;
59
- }
60
- // Search header
61
- blessed.box({
62
- parent: state.screen,
63
- top: 3,
64
- left: 2,
65
- width: '50%-3',
66
- height: 3,
67
- tags: true,
68
- border: { type: 'line' },
69
- style: { border: { fg: 'green' } },
70
- label: ' Search Results ',
71
- content: `{white-fg}${query}{/white-fg} {gray-fg}(${searchInfo}){/gray-fg}`,
72
- });
73
- // Build list items
74
- const listItems = combinedResults.map(({ server, source }) => {
75
- const isInstalled = installedServers[server.name] !== undefined;
76
- const isEnabled = enabledServers[server.name] === true;
77
- let status = '{gray-fg}○{/gray-fg}';
78
- if (isInstalled && isEnabled) {
79
- status = '{green-fg}●{/green-fg}';
80
- }
81
- else if (isInstalled) {
82
- status = '{yellow-fg}●{/yellow-fg}';
83
- }
84
- return {
85
- label: `${status} {bold}${server.name}{/bold}`,
86
- server,
87
- source,
88
- };
89
- });
90
- if (listItems.length === 0) {
91
- listItems.push({
92
- label: '{gray-fg}No servers match your search{/gray-fg}',
93
- server: undefined,
94
- source: 'local',
95
- });
96
- }
97
- const listLabels = listItems.map((item) => item.label);
98
- const list = blessed.list({
99
- parent: state.screen,
100
- top: 6,
101
- left: 2,
102
- width: '50%-3',
103
- height: '100%-9',
104
- items: listLabels,
105
- keys: true,
106
- mouse: true,
107
- tags: true,
108
- scrollable: true,
109
- border: { type: 'line' },
110
- style: {
111
- selected: { bg: 'green', fg: 'white' },
112
- border: { fg: 'gray' },
113
- },
114
- });
115
- // Detail panel
116
- const detailBox = blessed.box({
117
- parent: state.screen,
118
- top: 3,
119
- left: '50%',
120
- width: '50%-2',
121
- height: '100%-5',
122
- tags: true,
123
- border: { type: 'line' },
124
- style: { border: { fg: 'gray' } },
125
- label: ' Details ',
126
- });
127
- const updateDetail = () => {
128
- const selected = list.selected;
129
- const item = listItems[selected];
130
- if (!item?.server) {
131
- detailBox.setContent('{gray-fg}No server selected{/gray-fg}');
132
- state.screen.render();
133
- return;
134
- }
135
- const server = item.server;
136
- const isInstalled = installedServers[server.name] !== undefined;
137
- const sourceTag = item.source === 'remote' ? '\n{bold}Source:{/bold} {cyan-fg}MCP Registry{/cyan-fg}' : '';
138
- detailBox.setContent(`
139
- {bold}{cyan-fg}${server.name}{/cyan-fg}{/bold}
140
-
141
- ${server.description}
142
- ${sourceTag}
143
-
144
- ${isInstalled
145
- ? '{red-fg}Press Enter to remove{/red-fg}'
146
- : '{green-fg}Press Enter to install{/green-fg}'}
147
- `.trim());
148
- state.screen.render();
149
- };
150
- list.on('select item', updateDetail);
151
- setTimeout(updateDetail, 0);
152
- // Handle selection
153
- list.on('select', async (_item, index) => {
154
- const item = listItems[index];
155
- if (!item?.server)
156
- return;
157
- const server = item.server;
158
- const isInstalled = installedServers[server.name] !== undefined;
159
- if (isInstalled) {
160
- const remove = await showConfirm(state, `Remove ${server.name}?`, 'Remove MCP server?');
161
- if (remove) {
162
- await removeMcpServer(server.name, state.projectPath);
163
- await showMessage(state, 'Removed', `${server.name} removed.`, 'success');
164
- createMcpSearchScreen(state, query);
165
- }
166
- }
167
- else {
168
- await installMcpServer(state, server);
169
- createMcpSearchScreen(state, query);
170
- }
171
- });
172
- // Back to main MCP screen
173
- list.key(['escape', 'q'], () => {
174
- createMcpScreen(state);
175
- });
176
- // New search
177
- list.key(['/'], async () => {
178
- const newQuery = await showInput(state, 'Search', 'Search MCP servers:', query);
179
- if (newQuery !== null && newQuery.trim()) {
180
- createMcpSearchScreen(state, newQuery);
181
- }
182
- });
183
- createFooter(state, '↑↓ Navigate │ Enter Install/Remove │ / New Search │ Esc Back');
184
- list.focus();
185
- state.screen.render();
186
- }
187
- // Main MCP screen (no search filtering)
188
- export async function createMcpScreen(state) {
189
- createHeader(state, 'MCP Servers');
190
- const installedServers = await getInstalledMcpServers(state.projectPath);
191
- const enabledServers = await getEnabledMcpServers(state.projectPath);
192
- const serversByCategory = getMcpServersByCategory();
193
- const envVars = await getMcpEnvVars(state.projectPath);
194
- // Search box - just shows hint
195
- blessed.box({
196
- parent: state.screen,
197
- top: 3,
198
- left: 2,
199
- width: '50%-3',
200
- height: 3,
201
- tags: true,
202
- border: { type: 'line' },
203
- style: { border: { fg: 'cyan' } },
204
- label: ' Search ',
205
- content: '{gray-fg}Press / to search...{/gray-fg}',
206
- });
207
- const listItems = [];
208
- for (const category of categoryOrder) {
209
- const servers = serversByCategory[category];
210
- if (!servers || servers.length === 0)
211
- continue;
212
- listItems.push({
213
- label: `{bold}{cyan-fg}${getCategoryDisplayName(category)}{/cyan-fg}{/bold}`,
214
- isCategory: true,
215
- });
216
- for (const server of servers) {
217
- const isInstalled = installedServers[server.name] !== undefined;
218
- const isEnabled = enabledServers[server.name] === true;
219
- let status = '{gray-fg}○{/gray-fg}';
220
- if (isInstalled && isEnabled) {
221
- status = '{green-fg}●{/green-fg}';
222
- }
223
- else if (isInstalled) {
224
- status = '{yellow-fg}●{/yellow-fg}';
225
- }
226
- const configTag = server.requiresConfig ? ' {yellow-fg}*{/yellow-fg}' : '';
227
- listItems.push({
228
- label: ` ${status} {bold}${server.name}{/bold}${configTag}`,
229
- server,
230
- });
231
- }
232
- }
233
- const list = blessed.list({
234
- parent: state.screen,
235
- top: 6,
236
- left: 2,
237
- width: '50%-3',
238
- height: '100%-9',
239
- items: listItems.map((item) => item.label),
240
- keys: true,
241
- mouse: true,
242
- tags: true,
243
- scrollable: true,
244
- border: { type: 'line' },
245
- style: {
246
- selected: { bg: 'blue', fg: 'white' },
247
- border: { fg: 'gray' },
248
- },
249
- scrollbar: { ch: '|', style: { bg: 'gray' } },
250
- });
251
- // Detail panel on the right
252
- const detailBox = blessed.box({
253
- parent: state.screen,
254
- top: 3,
255
- left: '50%',
256
- width: '50%-2',
257
- height: '100%-5',
258
- content: '',
259
- tags: true,
260
- border: {
261
- type: 'line',
262
- },
263
- style: {
264
- border: {
265
- fg: 'gray',
266
- },
267
- },
268
- label: ' Details ',
269
- });
270
- // Update detail panel on selection change
271
- const updateDetail = () => {
272
- const selected = list.selected;
273
- const item = listItems[selected];
274
- if (!item || item.isCategory || !item.server) {
275
- detailBox.setContent('{gray-fg}Select a server to see details{/gray-fg}');
276
- state.screen.render();
277
- return;
278
- }
279
- const server = item.server;
280
- const isInstalled = installedServers[server.name] !== undefined;
281
- const isEnabled = enabledServers[server.name] === true;
282
- let statusText = '{gray-fg}Not installed{/gray-fg}';
283
- if (isInstalled && isEnabled) {
284
- statusText = '{green-fg}● Installed & Enabled{/green-fg}';
285
- }
286
- else if (isInstalled) {
287
- statusText = '{yellow-fg}● Installed (disabled){/yellow-fg}';
288
- }
289
- let typeInfo = '';
290
- if (server.type === 'http') {
291
- typeInfo = `{bold}URL:{/bold} {cyan-fg}${server.url}{/cyan-fg}`;
292
- }
293
- else {
294
- typeInfo = `{bold}Command:{/bold} {cyan-fg}${server.command} ${(server.args || []).join(' ')}{/cyan-fg}`;
295
- }
296
- let configInfo = '';
297
- if (server.requiresConfig && server.configFields) {
298
- // Show required env vars and their status
299
- configInfo = `\n\n{bold}Required Environment Variables:{/bold}\n`;
300
- for (const field of server.configFields) {
301
- const envVarName = field.envVar || field.name;
302
- // Check in settings.local.json env first, then process.env
303
- const configuredValue = envVars[envVarName];
304
- const shellValue = process.env[envVarName];
305
- const req = field.required ? '{red-fg}*{/red-fg}' : '';
306
- let status;
307
- if (configuredValue) {
308
- const masked = configuredValue.length > 8 ? configuredValue.slice(0, 8) + '...' : configuredValue;
309
- status = `{green-fg}[CONFIGURED]{/green-fg} ${masked}`;
310
- }
311
- else if (shellValue) {
312
- status = '{cyan-fg}[IN SHELL]{/cyan-fg}';
313
- }
314
- else {
315
- status = '{yellow-fg}[NOT SET]{/yellow-fg}';
316
- }
317
- configInfo += ` ${req} ${envVarName} ${status}\n`;
318
- }
319
- }
320
- const actionHint = isInstalled
321
- ? '{gray-fg}Enter: Remove{/gray-fg}'
322
- : '{green-fg}Press Enter to install{/green-fg}';
323
- const content = `
324
- {bold}{cyan-fg}${server.name}{/cyan-fg}{/bold}
325
-
326
- ${server.description}
327
-
328
- {bold}Status:{/bold} ${statusText}
329
-
330
- ${typeInfo}${configInfo}
331
-
332
- ${actionHint}
333
- `.trim();
334
- detailBox.setContent(content);
335
- state.screen.render();
336
- };
337
- list.on('select item', updateDetail);
338
- // Initial update
339
- setTimeout(updateDetail, 0);
340
- // Handle selection
341
- list.on('select', async (_item, index) => {
342
- const selected = listItems[index];
343
- if (!selected || selected.isCategory || !selected.server) {
344
- return;
345
- }
346
- const server = selected.server;
347
- const isInstalled = installedServers[server.name] !== undefined;
348
- if (isInstalled) {
349
- const remove = await showConfirm(state, `Remove ${server.name}?`, 'This will remove the MCP server configuration.');
350
- if (remove) {
351
- await removeMcpServer(server.name, state.projectPath);
352
- await showMessage(state, 'Removed', `${server.name} has been removed.`, 'success');
353
- createMcpScreen(state);
354
- }
355
- }
356
- else {
357
- await installMcpServer(state, server);
358
- }
359
- });
360
- // Manual j/k navigation (since vi mode is disabled)
361
- list.key(['j'], () => {
362
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
363
- list.down();
364
- state.screen.render();
365
- });
366
- list.key(['k'], () => {
367
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
368
- list.up();
369
- state.screen.render();
370
- });
371
- // Search with / key - opens search screen
372
- list.key(['/'], async () => {
373
- const query = await showInput(state, 'Search', 'Search MCP servers:');
374
- if (query !== null && query.trim()) {
375
- createMcpSearchScreen(state, query);
376
- }
377
- });
378
- // Switch to registry search with r
379
- list.key(['r'], async () => {
380
- const { navigateTo } = await import('../app.js');
381
- navigateTo(state, 'mcp-registry');
382
- });
383
- createFooter(state, '↑↓ Navigate │ Enter Install/Remove │ / Search │ r Registry │ q Back');
384
- list.focus();
385
- state.screen.render();
386
- }
387
- async function installMcpServer(state, server) {
388
- let config;
389
- if (server.type === 'http') {
390
- // HTTP-based MCP server
391
- config = {
392
- type: 'http',
393
- url: server.url,
394
- };
395
- }
396
- else {
397
- // Command-based MCP server
398
- config = {
399
- command: server.command,
400
- args: server.args ? [...server.args] : undefined,
401
- env: server.env ? { ...server.env } : undefined,
402
- };
403
- }
404
- // Collect configuration if required
405
- if (server.requiresConfig && server.configFields) {
406
- // Check which env vars are already set
407
- const envStatus = [];
408
- for (const field of server.configFields) {
409
- const envVarName = field.envVar || field.name;
410
- const existingValue = process.env[envVarName];
411
- envStatus.push({ field, existingValue });
412
- }
413
- // Check if all required env vars are set
414
- const missingRequired = envStatus.filter((e) => e.field.required && (!e.existingValue || e.existingValue === ''));
415
- const hasExistingVars = envStatus.some((e) => e.existingValue !== undefined && e.existingValue !== '');
416
- // If some env vars exist, ask user if they want to use them
417
- if (hasExistingVars && missingRequired.length === 0) {
418
- const useExisting = await showConfirm(state, 'Use Environment Variables?', 'All required environment variables are already set.\nUse values from your environment?');
419
- if (useExisting) {
420
- // Use existing env vars - reference them with ${VAR} syntax
421
- config.env = config.env || {};
422
- for (const { field } of envStatus) {
423
- const envVarName = field.envVar || field.name;
424
- config.env[envVarName] = `\${${envVarName}}`;
425
- }
426
- }
427
- else {
428
- // User wants to enter new values
429
- for (const { field, existingValue } of envStatus) {
430
- const envVarName = field.envVar || field.name;
431
- const hint = existingValue ? ` (current: ${existingValue.slice(0, 8)}...)` : '';
432
- const value = await showInput(state, `Configure ${server.name}`, `${field.label}${field.required ? ' (required)' : ''}${hint}:`, field.default);
433
- if (value === null) {
434
- return; // User cancelled
435
- }
436
- if (field.required && !value) {
437
- await showMessage(state, 'Required Field', `${field.label} is required.`, 'error');
438
- return;
439
- }
440
- if (value) {
441
- config.env = config.env || {};
442
- config.env[envVarName] = value;
443
- }
444
- }
445
- }
446
- }
447
- else {
448
- // Some required vars are missing - prompt for each
449
- if (missingRequired.length > 0) {
450
- const missingNames = missingRequired.map((e) => e.field.envVar || e.field.name).join(', ');
451
- await showMessage(state, 'Missing Environment Variables', `The following required variables are not set:\n${missingNames}\n\nYou can set them in your shell or enter values now.`, 'info');
452
- }
453
- for (const { field, existingValue } of envStatus) {
454
- const envVarName = field.envVar || field.name;
455
- const isSet = existingValue !== undefined && existingValue !== '';
456
- let defaultValue = field.default;
457
- let prompt = `${field.label}${field.required ? ' (required)' : ''}:`;
458
- if (isSet) {
459
- // Env var is set, offer to use it
460
- const useIt = await showConfirm(state, `Use ${envVarName}?`, `${envVarName} is set in your environment.\nUse the existing value?`);
461
- if (useIt) {
462
- config.env = config.env || {};
463
- config.env[envVarName] = `\${${envVarName}}`;
464
- continue;
465
- }
466
- prompt = `${field.label} (override existing):`;
467
- }
468
- const value = await showInput(state, `Configure ${server.name}`, prompt, defaultValue);
469
- if (value === null) {
470
- return; // User cancelled
471
- }
472
- if (field.required && !value) {
473
- await showMessage(state, 'Required Field', `${field.label} is required.`, 'error');
474
- return;
475
- }
476
- if (value) {
477
- // Replace placeholder in args
478
- if (config.args) {
479
- config.args = config.args.map((arg) => arg.replace(`\${${field.name}}`, value));
480
- }
481
- config.env = config.env || {};
482
- config.env[envVarName] = value;
483
- }
484
- }
485
- }
486
- }
487
- // Add server to .mcp.json
488
- await addMcpServer(server.name, config, state.projectPath);
489
- await showMessage(state, 'Installed', `${server.name} has been configured.\n\nRestart Claude Code to activate.`, 'success');
490
- createMcpScreen(state);
491
- }
492
- //# sourceMappingURL=mcp-setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-setup.js","sourceRoot":"","sources":["../../../src/ui/screens/mcp-setup.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { AppState } from '../app.js';
2
- export declare function createPluginsScreen(state: AppState): Promise<void>;
3
- //# sourceMappingURL=plugins.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../../src/ui/screens/plugins.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAqC1C,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAsexE"}