@mutagent/cli 0.1.11 → 0.1.13

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.
@@ -1,17 +1,18 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/bin/cli.ts", "../src/commands/auth.ts", "../src/lib/config.ts", "../src/lib/sdk-client.ts", "../src/lib/errors.ts", "../src/lib/output.ts", "../src/lib/browser-auth.ts", "../src/commands/login.ts", "../src/commands/prompts.ts", "../src/lib/ui-links.ts", "../src/commands/traces.ts", "../src/commands/integrate.ts", "../src/lib/integrations/mastra.ts", "../src/lib/integrations/langchain.ts", "../src/lib/integrations/langgraph.ts", "../src/lib/integrations/vercel-ai.ts", "../src/lib/integrations/openai.ts", "../src/lib/integrations/claude-code.ts", "../src/lib/integrations/generic.ts", "../src/lib/integrations/registry.ts", "../src/commands/agents.ts", "../src/commands/config.ts", "../src/commands/playground.ts", "../src/commands/workspaces.ts", "../src/commands/providers.ts", "../src/commands/init.ts"],
3
+ "sources": ["../src/bin/cli.ts", "../src/commands/auth.ts", "../src/lib/config.ts", "../src/lib/sdk-client.ts", "../src/lib/errors.ts", "../src/lib/output.ts", "../src/lib/browser-auth.ts", "../src/commands/login.ts", "../src/commands/prompts.ts", "../src/lib/ui-links.ts", "../src/lib/schema-helpers.ts", "../src/commands/traces.ts", "../src/commands/integrate.ts", "../src/lib/integrations/mastra.ts", "../src/lib/integrations/langchain.ts", "../src/lib/integrations/langgraph.ts", "../src/lib/integrations/vercel-ai.ts", "../src/lib/integrations/openai.ts", "../src/lib/integrations/claude-code.ts", "../src/lib/integrations/generic.ts", "../src/lib/integrations/registry.ts", "../src/commands/agents.ts", "../src/commands/config.ts", "../src/commands/playground.ts", "../src/commands/workspaces.ts", "../src/commands/providers.ts", "../src/commands/init.ts"],
4
4
  "sourcesContent": [
5
5
  "#!/usr/bin/env node\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { readFileSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimport { createAuthCommand } from '../commands/auth.js';\nimport { createLoginCommand } from '../commands/login.js';\nimport { createPromptsCommand } from '../commands/prompts.js';\nimport { createTracesCommand } from '../commands/traces.js';\nimport { createIntegrateCommand } from '../commands/integrate.js';\nimport { createAgentsCommand } from '../commands/agents.js';\nimport { createConfigCommand } from '../commands/config.js';\nimport { createPlaygroundCommand } from '../commands/playground.js';\nimport { createWorkspacesCommand } from '../commands/workspaces.js';\nimport { createProvidersCommand } from '../commands/providers.js';\nimport { createInitCommand } from '../commands/init.js';\nimport { hasCredentials } from '../lib/config.js';\nimport { hasRcConfig } from '../commands/init.js';\n\n/**\n * CLI Context Interface\n * Passed to all subcommands for shared state\n */\nexport interface CliContext {\n /** Output results as JSON */\n json: boolean;\n /** MutagenT API key */\n apiKey?: string;\n /** MutagenT server endpoint */\n endpoint?: string;\n /** Enable verbose logging */\n verbose: boolean;\n}\n\n// Read version from package.json\nlet cliVersion = '0.1.1';\ntry {\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkgPath = join(__dirname, '..', '..', 'package.json');\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as { version?: string };\n cliVersion = pkg.version ?? cliVersion;\n} catch {\n // Fallback to hardcoded version\n}\n\nconst program = new Command();\n\nprogram\n .name('mutagent')\n .description(`MutagenT CLI - AI-native prompt optimization platform\n\n Documentation: https://docs.mutagent.io/cli\n Dashboard: https://app.mutagent.io`)\n .version(cliVersion, '-v, --version', 'Display the version number')\n .option('--json', 'Output results as JSON (for AI agents)')\n .option('--api-key <key>', 'MutagenT API key')\n .option('--endpoint <url>', 'MutagenT server endpoint')\n .option('--non-interactive', 'Disable interactive prompts (for CI/AI agents)')\n .configureHelp({\n sortSubcommands: true,\n showGlobalOptions: true,\n });\n\n// Add non-interactive mode instructions for CI/CD and coding agents\nprogram.addHelpText('after', `\n${chalk.yellow('Non-Interactive Mode (CI/CD & Coding Agents):')}\n Export your API key: ${chalk.green('export MUTAGENT_API_KEY=mt_your_key_here')}\n Or pass inline: ${chalk.green('mutagent prompts list --api-key mt_your_key')}\n Machine-readable output: ${chalk.green('mutagent prompts list --json')}\n Disable prompts: ${chalk.green('mutagent prompts list --non-interactive')}\n Set default workspace: ${chalk.green('mutagent config set workspace <workspace-id>')}\n Set default org: ${chalk.green('mutagent config set org <org-id>')}\n`);\n\n// Add workflow guidance for common user journeys\nprogram.addHelpText('after', `\n${chalk.yellow('Workflows:')}\n ${chalk.bold('Evaluate → Optimize Loop:')}\n 1. mutagent prompts create --name \"...\" --raw-file prompt.txt\n 2. mutagent prompts dataset add <prompt-id> --name \"...\" --file data.json\n 3. mutagent prompts evaluation create <prompt-id> --name \"...\" --file criteria.json\n 4. mutagent prompts optimize start <prompt-id> --dataset <id> --max-iterations 3\n\n ${chalk.bold('Quick Test:')}\n mutagent playground run <prompt-id> --input '{\"key\":\"value\"}'\n\n ${chalk.bold('Prerequisites for Optimization:')}\n ${chalk.green('\\u2713')} Prompt with input/output parameters\n ${chalk.green('\\u2713')} Dataset with items (input + expectedOutput pairs)\n ${chalk.green('\\u2713')} Evaluation with criteria (field-level, input/output focused)\n ${chalk.dim('\\u2022')} LLM provider ${chalk.dim('(only when server uses external providers)')}\n`);\n\n// Add AI agent integration hint — top-level only (using 'after' instead of 'afterAll')\nprogram.addHelpText('after', `\n${chalk.cyan('┌─ AI AGENT INTEGRATION HINT ────────────────────────────────────────────────┐')}\n${chalk.cyan('│')} ${chalk.cyan('│')}\n${chalk.cyan('│')} Frameworks: mastra, langchain, langgraph, vercel-ai, claude-code, generic ${chalk.cyan('│')}\n${chalk.cyan('│')} ${chalk.cyan('│')}\n${chalk.cyan('│')} Get integration guide: mutagent integrate <framework> ${chalk.cyan('│')}\n${chalk.cyan('│')} Verify setup: mutagent integrate <framework> --verify ${chalk.cyan('│')}\n${chalk.cyan('│')} Use --json for AI parsing: mutagent <command> --json ${chalk.cyan('│')}\n${chalk.cyan('│')} ${chalk.cyan('│')}\n${chalk.cyan('└────────────────────────────────────────────────────────────────────────────┘')}\n${!hasCredentials() ? chalk.yellow('\\n Warning: Not authenticated. Run: mutagent auth login --browser\\n') : ''}${!hasRcConfig() ? chalk.green('\\n Get started: mutagent init\\n') : ''}`);\n\n// Propagate global options to env vars before subcommands run\n// This ensures --api-key, --endpoint, and --non-interactive flags are picked up\nprogram.hook('preAction', (thisCommand) => {\n const globalOpts: { apiKey?: string; endpoint?: string; nonInteractive?: boolean } = thisCommand.optsWithGlobals();\n if (globalOpts.apiKey && !process.env.MUTAGENT_API_KEY) {\n process.env.MUTAGENT_API_KEY = globalOpts.apiKey;\n }\n if (globalOpts.endpoint && !process.env.MUTAGENT_ENDPOINT) {\n process.env.MUTAGENT_ENDPOINT = globalOpts.endpoint;\n }\n if (globalOpts.nonInteractive || process.env.CI === 'true' || !process.stdin.isTTY) {\n process.env.MUTAGENT_NON_INTERACTIVE = 'true';\n }\n});\n\n// Add commands\nprogram.addCommand(createInitCommand()); // Init wizard\nprogram.addCommand(createLoginCommand()); // Top-level login\nprogram.addCommand(createAuthCommand());\nprogram.addCommand(createConfigCommand());\nprogram.addCommand(createPromptsCommand());\nprogram.addCommand(createTracesCommand());\nprogram.addCommand(createIntegrateCommand());\nprogram.addCommand(createAgentsCommand());\nprogram.addCommand(createPlaygroundCommand());\nprogram.addCommand(createWorkspacesCommand());\nprogram.addCommand(createProvidersCommand());\n\n// Parse arguments\nprogram.parse();\n",
6
6
  "import { Command } from 'commander';\nimport inquirer from 'inquirer';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { clearCredentials, getApiKey, loadConfig, saveFullCredentials, hasCredentials } from '../lib/config.js';\nimport { validateApiKey, fetchOrganizations, fetchWorkspaces } from '../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { MutagentError } from '../lib/errors.js';\nimport { performBrowserAuth, BrowserAuthError } from '../lib/browser-auth.js';\n\ninterface LoginOptions {\n apiKey?: string;\n endpoint: string;\n browser?: boolean;\n nonInteractive?: boolean;\n}\n\ninterface LoginAnswers {\n apiKey: string;\n endpoint: string;\n}\n\ninterface AuthMethodAnswer {\n method: 'browser' | 'apiKey';\n}\n\nexport function createAuthCommand(): Command {\n const auth = new Command('auth')\n .description('Authenticate with MutagenT platform')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth login\n ${chalk.dim('$')} mutagent auth login --browser\n ${chalk.dim('$')} mutagent auth login --api-key <key>\n ${chalk.dim('$')} mutagent auth status\n ${chalk.dim('$')} mutagent auth logout\n `);\n\n // Login command\n auth\n .command('login')\n .description('Authenticate and store API key')\n .option('--api-key <key>', 'API key (non-interactive)')\n .option('--browser', 'Force browser-based authentication')\n .option('--non-interactive', 'Disable interactive prompts (auto-selects browser auth)')\n .option('--endpoint <url>', 'API endpoint', 'https://api.mutagent.io')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth login ${chalk.dim('# Interactive (choose method)')}\n ${chalk.dim('$')} mutagent auth login --browser ${chalk.dim('# Browser OAuth flow')}\n ${chalk.dim('$')} mutagent auth login --api-key mg_live_xxx ${chalk.dim('# Direct API key (CI/CD)')}\n ${chalk.dim('$')} mutagent auth login --non-interactive ${chalk.dim('# Auto browser flow (AI agents)')}\n\nEnvironment Variables:\n MUTAGENT_API_KEY API key (skips login entirely)\n MUTAGENT_ENDPOINT Custom API endpoint\n MUTAGENT_NON_INTERACTIVE=true Non-interactive mode (auto browser auth)\n CI=true Enables non-interactive mode\n `)\n .action(async (options: LoginOptions) => {\n const isJson = getJsonFlag(auth);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n let apiKey: string | undefined = options.apiKey ?? process.env.MUTAGENT_API_KEY;\n let endpoint: string = process.env.MUTAGENT_ENDPOINT ?? options.endpoint;\n let workspaceName: string | undefined;\n let organizationName: string | undefined;\n\n // If --api-key provided, use direct flow\n if (apiKey) {\n // Validate API key\n output.info('Validating API key...');\n const isValid = await validateApiKey(apiKey, endpoint);\n\n if (!isValid) {\n throw new MutagentError(\n 'INVALID_API_KEY',\n 'Invalid API key or endpoint',\n 'Check your API key and try again'\n );\n }\n\n // Fetch org/workspace context for the API key\n const orgs = await fetchOrganizations(apiKey, endpoint);\n let orgId: string | undefined;\n let wsId: string | undefined;\n\n if (orgs.length >= 1 && orgs[0]) {\n orgId = orgs[0].id;\n const workspaces = await fetchWorkspaces(apiKey, endpoint, orgId);\n const defaultWs = workspaces.find(w => w.isDefault);\n wsId = defaultWs?.id ?? workspaces[0]?.id;\n }\n\n // Save full credentials with workspace/org context\n saveFullCredentials({\n apiKey,\n endpoint,\n workspaceId: wsId,\n organizationId: orgId,\n });\n\n output.success('Authenticated successfully');\n if (!isJson) {\n output.info(`Endpoint: ${endpoint}`);\n }\n return;\n }\n\n // Detect non-interactive environment\n const isNonInteractive =\n options.nonInteractive === true ||\n process.env.MUTAGENT_NON_INTERACTIVE === 'true' ||\n process.env.CI === 'true' ||\n !process.stdin.isTTY;\n\n // In JSON-only mode without API key, we cannot proceed at all\n if (isJson && !options.browser && isNonInteractive) {\n throw new MutagentError(\n 'INTERACTIVE_REQUIRED',\n 'No API key provided. Use --api-key flag, set MUTAGENT_API_KEY env var, or add --browser for browser auth.',\n 'Run: mutagent auth login --api-key <key> or mutagent auth login --browser --non-interactive'\n );\n }\n\n // Show welcome message for first-time users (only in interactive mode)\n if (!isNonInteractive && !hasCredentials()) {\n console.log('\\n' + chalk.bold.cyan(' Welcome to MutagenT CLI!') + '\\n');\n console.log(' No credentials found. Please authenticate to continue.\\n');\n }\n\n // Determine auth method\n let useLocalBrowserAuth = options.browser === true;\n\n // In non-interactive mode, auto-select browser auth (skip the prompt menu)\n if (!useLocalBrowserAuth && isNonInteractive) {\n output.info('Non-interactive environment detected. Using browser authentication.');\n useLocalBrowserAuth = true;\n }\n\n if (!useLocalBrowserAuth && !options.apiKey) {\n // Ask user which method to use (interactive only)\n const methodAnswer = await inquirer.prompt<AuthMethodAnswer>([\n {\n type: 'list',\n name: 'method',\n message: 'How would you like to authenticate?',\n choices: [\n {\n name: 'Login (opens browser)',\n value: 'browser',\n },\n {\n name: 'API Key (paste existing key)',\n value: 'apiKey',\n },\n ],\n },\n ]);\n\n useLocalBrowserAuth = methodAnswer.method === 'browser';\n }\n\n if (useLocalBrowserAuth) {\n // Browser authentication flow\n const spinner = ora({\n text: 'Opening browser for authentication...',\n spinner: 'dots',\n });\n\n try {\n spinner.start();\n\n const result = await performBrowserAuth(\n {\n endpoint,\n timeout: 300000, // 5 minutes\n pollInterval: 2000, // 2 seconds\n },\n (message) => {\n spinner.text = message;\n }\n );\n\n spinner.succeed('Authenticated successfully!');\n\n // Save full credentials including workspace info\n saveFullCredentials({\n apiKey: result.apiKey,\n endpoint,\n workspaceId: result.workspaceId,\n organizationId: result.organizationId,\n expiresAt: result.expiresAt,\n });\n\n // Store for display\n apiKey = result.apiKey;\n workspaceName = result.workspaceName;\n organizationName = result.organizationName;\n\n console.log('');\n output.info('Workspace: ' + workspaceName);\n output.info('Organization: ' + organizationName);\n output.info('Endpoint: ' + endpoint);\n\n } catch (error) {\n spinner.fail('Authentication failed');\n\n if (error instanceof BrowserAuthError) {\n throw new MutagentError(\n error.code,\n error.message,\n error.getSuggestion()\n );\n }\n throw error;\n }\n } else {\n // API key paste flow\n const answers = await inquirer.prompt<LoginAnswers>([\n {\n type: 'input',\n name: 'endpoint',\n message: 'MutagenT endpoint:',\n default: endpoint,\n },\n {\n type: 'password',\n name: 'apiKey',\n message: 'API Key:',\n mask: '*',\n validate: (input: string): boolean | string => input.length > 0 || 'API key is required',\n },\n ]);\n\n apiKey = answers.apiKey;\n endpoint = answers.endpoint;\n\n // Validate API key\n output.info('Validating API key...');\n const isValid = await validateApiKey(apiKey, endpoint);\n\n if (!isValid) {\n throw new MutagentError(\n 'INVALID_API_KEY',\n 'Invalid API key or endpoint',\n 'Check your API key and try again'\n );\n }\n\n // Fetch organizations to get workspace/org context\n let selectedOrgId: string | undefined;\n let selectedOrgName: string | undefined;\n let selectedWsId: string | undefined;\n let selectedWsName: string | undefined;\n\n const orgs = await fetchOrganizations(apiKey, endpoint);\n if (orgs.length === 1 && orgs[0]) {\n // Auto-select sole org\n selectedOrgId = orgs[0].id;\n selectedOrgName = orgs[0].name;\n } else if (orgs.length > 1) {\n const orgAnswer = await inquirer.prompt<{ orgId: string }>([{\n type: 'list',\n name: 'orgId',\n message: 'Select organization:',\n choices: orgs.map(o => ({ name: o.name, value: o.id })),\n }]);\n selectedOrgId = orgAnswer.orgId;\n selectedOrgName = orgs.find(o => o.id === selectedOrgId)?.name;\n }\n\n if (selectedOrgId) {\n const workspaces = await fetchWorkspaces(apiKey, endpoint, selectedOrgId);\n const defaultWs = workspaces.find(w => w.isDefault);\n if (workspaces.length === 1 && workspaces[0]) {\n selectedWsId = workspaces[0].id;\n selectedWsName = workspaces[0].name;\n } else if (defaultWs) {\n selectedWsId = defaultWs.id;\n selectedWsName = defaultWs.name;\n } else if (workspaces.length > 1) {\n const wsAnswer = await inquirer.prompt<{ wsId: string }>([{\n type: 'list',\n name: 'wsId',\n message: 'Select workspace:',\n choices: workspaces.map(w => ({ name: w.name + (w.isDefault ? ' (default)' : ''), value: w.id })),\n }]);\n selectedWsId = wsAnswer.wsId;\n selectedWsName = workspaces.find(w => w.id === selectedWsId)?.name;\n }\n }\n\n // Save full credentials with workspace/org context\n saveFullCredentials({\n apiKey,\n endpoint,\n workspaceId: selectedWsId,\n organizationId: selectedOrgId,\n });\n\n output.success('Authenticated successfully');\n if (selectedOrgName) output.info('Organization: ' + selectedOrgName);\n if (selectedWsName) output.info('Workspace: ' + selectedWsName);\n output.info('Endpoint: ' + endpoint);\n }\n } catch (error) {\n if (error instanceof MutagentError) {\n output.error(error.message);\n process.exit(error.exitCode);\n }\n throw error;\n }\n });\n\n // Status command\n auth\n .command('status')\n .description('Check authentication status')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth status\n ${chalk.dim('$')} mutagent auth status --json\n `)\n .action(async () => {\n const isJson = getJsonFlag(auth);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n const apiKey = getApiKey();\n const config = loadConfig();\n const endpoint = config.endpoint ?? 'https://api.mutagent.io';\n\n if (!apiKey) {\n if (isJson) {\n output.output({ authenticated: false, message: 'Not authenticated' });\n } else {\n output.error('Not authenticated');\n output.info('Run: mutagent auth login');\n }\n process.exit(0);\n }\n\n // Validate the key\n const isValid = await validateApiKey(apiKey, endpoint);\n\n if (isJson) {\n const statusResult: Record<string, unknown> = {\n authenticated: isValid,\n endpoint,\n keyPrefix: `${apiKey.slice(0, 8)}...`,\n defaultWorkspace: config.defaultWorkspace,\n defaultOrganization: config.defaultOrganization,\n };\n if (!isValid) {\n statusResult.message = 'Authentication invalid — run `mutagent auth login --browser`';\n statusResult.remediation = {\n interactive: 'mutagent auth login --browser',\n nonInteractive: 'export MUTAGENT_API_KEY=<your-key>',\n ciCd: 'mutagent auth login --api-key <key>',\n };\n }\n output.output(statusResult);\n } else {\n if (isValid) {\n output.success('Authenticated');\n output.info(`Endpoint: ${endpoint}`);\n output.info(`Key: ${apiKey.slice(0, 8)}...`);\n if (config.defaultWorkspace) {\n output.info(`Workspace: ${config.defaultWorkspace}`);\n }\n if (config.defaultOrganization) {\n output.info(`Organization: ${config.defaultOrganization}`);\n }\n } else {\n output.error('Authentication invalid — run `mutagent auth login --browser`');\n console.error('');\n console.error('Authentication required. Options:');\n console.error(' Interactive: mutagent auth login --browser');\n console.error(' Non-interactive: export MUTAGENT_API_KEY=<your-key>');\n console.error(' CI/CD: mutagent auth login --api-key <key>');\n }\n }\n });\n\n // Logout command\n auth\n .command('logout')\n .description('Clear stored credentials')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth logout\n `)\n .action(() => {\n const isJson = getJsonFlag(auth);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n clearCredentials();\n output.success('Logged out successfully');\n });\n\n return auth;\n}\n",
7
7
  "import { cosmiconfigSync } from 'cosmiconfig';\nimport { z } from 'zod';\nimport { homedir } from 'os';\nimport { join } from 'path';\nimport { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';\nimport type { Config } from '../types/index.js';\n\nconst configSchema = z.object({\n apiKey: z.string().optional(),\n endpoint: z.string().default('https://api.mutagent.io'),\n format: z.enum(['table', 'json']).default('table'),\n timeout: z.number().default(30000),\n defaultWorkspace: z.string().optional(),\n defaultOrganization: z.string().optional(),\n});\n\nconst credentialsSchema = z.object({\n apiKey: z.string().optional(),\n endpoint: z.string().optional(),\n defaultWorkspace: z.string().optional(),\n defaultOrganization: z.string().optional(),\n expiresAt: z.string().optional(),\n}).loose();\n\nexport interface FullCredentials {\n apiKey: string;\n endpoint?: string;\n workspaceId?: string;\n organizationId?: string;\n expiresAt?: string;\n}\n\nconst CREDENTIALS_DIR = join(homedir(), '.config', 'mutagent');\nconst CREDENTIALS_FILE = join(CREDENTIALS_DIR, 'credentials.json');\n\nfunction parseJsonSafe<T>(content: string, schema: z.ZodType<T>): T | null {\n try {\n const parsed: unknown = JSON.parse(content);\n return schema.parse(parsed);\n } catch {\n return null;\n }\n}\n\nexport function loadConfig(): Config {\n // Load from cosmiconfig (rc files)\n const explorer = cosmiconfigSync('mutagent');\n const result = explorer.search();\n\n // Safely extract config from cosmiconfig result\n const rcConfig = result?.config as Record<string, unknown> | undefined;\n\n // Load from credentials file\n let credentials: z.infer<typeof credentialsSchema> | null = null;\n if (existsSync(CREDENTIALS_FILE)) {\n credentials = parseJsonSafe(readFileSync(CREDENTIALS_FILE, 'utf-8'), credentialsSchema);\n }\n\n // Merge configs: ENV > credentials > rc files > defaults\n const merged = {\n providers: {},\n environment: 'production',\n ...rcConfig,\n ...credentials,\n apiKey: process.env.MUTAGENT_API_KEY ?? credentials?.apiKey ?? (rcConfig?.apiKey as string | undefined),\n endpoint: process.env.MUTAGENT_ENDPOINT ?? credentials?.endpoint ?? (rcConfig?.endpoint as string | undefined),\n defaultWorkspace: credentials?.defaultWorkspace ?? (rcConfig?.defaultWorkspace as string | undefined),\n defaultOrganization: credentials?.defaultOrganization ?? (rcConfig?.defaultOrganization as string | undefined),\n };\n\n return configSchema.parse(merged) as Config;\n}\n\nexport function saveCredentials(apiKey: string, endpoint?: string): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n const config = loadConfig();\n const credentials = {\n apiKey,\n endpoint: endpoint ?? config.endpoint,\n };\n\n writeFileSync(CREDENTIALS_FILE, JSON.stringify(credentials, null, 2));\n}\n\n/**\n * Save full credentials including workspace and organization info\n * Used by browser auth flow which returns complete credential set\n */\nexport function saveFullCredentials(creds: FullCredentials): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n // Load existing credentials to preserve any custom settings\n let existingCredentials: Record<string, unknown> = {};\n if (existsSync(CREDENTIALS_FILE)) {\n try {\n existingCredentials = JSON.parse(readFileSync(CREDENTIALS_FILE, 'utf-8')) as Record<string, unknown>;\n } catch {\n // Ignore parse errors, start fresh\n }\n }\n\n const credentials = {\n ...existingCredentials,\n apiKey: creds.apiKey,\n endpoint: creds.endpoint ?? existingCredentials.endpoint ?? 'https://api.mutagent.io',\n defaultWorkspace: creds.workspaceId ?? existingCredentials.defaultWorkspace,\n defaultOrganization: creds.organizationId ?? existingCredentials.defaultOrganization,\n expiresAt: creds.expiresAt,\n };\n\n writeFileSync(CREDENTIALS_FILE, JSON.stringify(credentials, null, 2));\n}\n\nexport function clearCredentials(): void {\n if (existsSync(CREDENTIALS_FILE)) {\n writeFileSync(CREDENTIALS_FILE, JSON.stringify({}));\n }\n}\n\nexport function hasCredentials(): boolean {\n if (process.env.MUTAGENT_API_KEY) return true;\n if (!existsSync(CREDENTIALS_FILE)) return false;\n\n const credentials = parseJsonSafe(readFileSync(CREDENTIALS_FILE, 'utf-8'), credentialsSchema);\n return credentials?.apiKey !== undefined && credentials.apiKey !== '';\n}\n\nexport function getApiKey(): string | undefined {\n return process.env.MUTAGENT_API_KEY ?? loadConfig().apiKey;\n}\n\nexport function setDefaultWorkspace(workspaceId: string): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n let existingCredentials: Record<string, unknown> = {};\n if (existsSync(CREDENTIALS_FILE)) {\n try {\n existingCredentials = JSON.parse(readFileSync(CREDENTIALS_FILE, 'utf-8')) as Record<string, unknown>;\n } catch {\n // Ignore parse errors, start fresh\n }\n }\n\n const updated = {\n ...existingCredentials,\n defaultWorkspace: workspaceId,\n };\n\n writeFileSync(CREDENTIALS_FILE, JSON.stringify(updated, null, 2));\n}\n\nexport function setDefaultOrganization(organizationId: string): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n let existingCredentials: Record<string, unknown> = {};\n if (existsSync(CREDENTIALS_FILE)) {\n try {\n existingCredentials = JSON.parse(readFileSync(CREDENTIALS_FILE, 'utf-8')) as Record<string, unknown>;\n } catch {\n // Ignore parse errors, start fresh\n }\n }\n\n const updated = {\n ...existingCredentials,\n defaultOrganization: organizationId,\n };\n\n writeFileSync(CREDENTIALS_FILE, JSON.stringify(updated, null, 2));\n}\n",
8
- "// SDK Client wrapper for MutagenT API\n/// <reference lib=\"dom\" />\nimport { Mutagent, HTTPClient } from '@mutagent/sdk';\nimport type { Prompt, Dataset, Evaluation, OptimizeJob as OptimizationJob, OptimizeStatus, Agent, CreateAgentInput, UpdateAgentInput, PromptExecutionResult, Conversation, CreateConversationInput, Message, Workspace, Provider, ProviderTestResult } from '../types/index.js';\nimport { ApiError, AuthenticationError, MutagentError, WorkspaceContextError } from './errors.js';\nimport { getApiKey, loadConfig } from './config.js';\n\n/**\n * SDK Client Wrapper\n *\n * This class wraps the real @mutagent/sdk to provide a consistent interface\n * for CLI commands. It maps the SDK's method signatures to the interface\n * expected by the CLI.\n */\nclass SDKClientWrapper {\n private sdk: Mutagent;\n private apiKey: string;\n private endpoint: string;\n private workspaceId?: string;\n private organizationId?: string;\n\n constructor(opts: { bearerAuth: string; serverURL?: string; workspaceId?: string; organizationId?: string }) {\n this.apiKey = opts.bearerAuth;\n this.endpoint = opts.serverURL ?? 'http://localhost:3003';\n this.workspaceId = opts.workspaceId;\n this.organizationId = opts.organizationId;\n\n // Create HTTP client with tenancy header injection\n const httpClient = new HTTPClient();\n httpClient.addHook(\"beforeRequest\", (req) => {\n if (this.workspaceId) req.headers.set(\"x-workspace-id\", this.workspaceId);\n if (this.organizationId) req.headers.set(\"x-organization-id\", this.organizationId);\n return req;\n });\n\n this.sdk = new Mutagent({\n security: {\n apiKey: this.apiKey,\n },\n serverURL: this.endpoint,\n httpClient,\n });\n }\n\n /**\n * Helper to handle SDK errors and convert them to CLI errors.\n * Masks Speakeasy SDK internal errors (SDKValidationError, SDKError, etc.)\n * so users see clean, actionable messages instead of raw stack traces.\n */\n private handleError(error: unknown): never {\n if (error && typeof error === 'object') {\n const err = error as { statusCode?: number; message?: string; body?: string; name?: string; rawValue?: unknown; rawMessage?: string };\n\n if (err.statusCode === 401) {\n throw new AuthenticationError();\n }\n if (err.statusCode === 403) {\n throw new ApiError(403, err.message ?? err.body ?? 'Access denied');\n }\n\n // Detect workspace/org context errors from the server\n const errMessage = (err.message ?? err.body ?? '').toLowerCase();\n if (\n errMessage.includes('workspace') && (errMessage.includes('missing') || errMessage.includes('required')) ||\n errMessage.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(err.message ?? err.body ?? undefined);\n }\n\n if (err.statusCode) {\n throw new ApiError(err.statusCode, err.message ?? err.body ?? 'Unknown error');\n }\n\n // Catch Speakeasy SDK internal errors (SDKValidationError, SDKError, etc.)\n if (\n err.name === 'SDKValidationError' ||\n err.name === 'SDKError' ||\n err.rawValue !== undefined ||\n err.rawMessage !== undefined\n ) {\n const friendlyMessage = err.rawMessage ?? err.message ?? 'Request failed';\n throw new MutagentError(\n 'REQUEST_FAILED',\n friendlyMessage,\n 'Check your input and try again. Run the command with --help for usage details.'\n );\n }\n }\n\n // Catch network errors (fetch failures, DNS resolution, etc.)\n if (error instanceof TypeError && typeof error.message === 'string') {\n if (error.message.includes('fetch') || error.message.includes('network') || error.message.includes('ECONNREFUSED')) {\n throw new MutagentError(\n 'NETWORK_ERROR',\n 'Unable to connect to the MutagenT server',\n 'Check your internet connection and verify the server URL with: mutagent config list'\n );\n }\n }\n\n // Last resort: wrap unknown errors in MutagentError\n if (error instanceof Error) {\n throw new MutagentError(\n 'REQUEST_FAILED',\n error.message,\n 'Run the command with --help for usage details'\n );\n }\n\n throw new MutagentError(\n 'UNKNOWN_ERROR',\n 'An unexpected error occurred',\n 'Run the command with --help for usage details'\n );\n }\n\n /**\n * Helper for direct HTTP requests (for endpoints not yet in SDK)\n */\n private async request<T>(path: string, options?: RequestInit): Promise<T> {\n // Convert Headers object to plain object if needed\n const optHeaders = options?.headers;\n let extraHeaders: Record<string, string> = {};\n if (optHeaders instanceof Headers) {\n optHeaders.forEach((value, key) => {\n extraHeaders[key] = value;\n });\n } else if (optHeaders) {\n extraHeaders = optHeaders as Record<string, string>;\n }\n\n // Build tenancy headers from stored config\n const tenancyHeaders: Record<string, string> = {};\n if (this.workspaceId) tenancyHeaders['x-workspace-id'] = this.workspaceId;\n if (this.organizationId) tenancyHeaders['x-organization-id'] = this.organizationId;\n\n const response = await fetch(`${this.endpoint}${path}`, {\n ...options,\n headers: {\n 'x-api-key': this.apiKey,\n 'Content-Type': 'application/json',\n ...tenancyHeaders,\n ...extraHeaders,\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new AuthenticationError();\n }\n if (response.status === 403) {\n throw new ApiError(403, await response.text() || 'Access denied');\n }\n const error = await response.text();\n // Detect workspace context errors from the server response body\n const errorLower = error.toLowerCase();\n if (\n errorLower.includes('workspace') && (errorLower.includes('missing') || errorLower.includes('required')) ||\n errorLower.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(error);\n }\n throw new ApiError(response.status, error);\n }\n\n return response.json() as Promise<T>;\n }\n\n // =========================================================================\n // PROMPTS\n // =========================================================================\n\n async listPrompts(): Promise<Prompt[]> {\n try {\n const response = await this.sdk.prompt.listPrompts();\n return response.result.data as Prompt[];\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getPrompt(id: string): Promise<Prompt> {\n try {\n const response = await this.sdk.prompt.getPrompt({ id: parseInt(id, 10) });\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createPrompt(data: Partial<Prompt>): Promise<Prompt> {\n try {\n const response = await this.sdk.prompt.createPrompt({\n name: data.name ?? '',\n description: data.description ?? undefined,\n version: data.version ?? undefined,\n isLatest: data.isLatest ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n humanPrompt: data.humanPrompt ?? undefined,\n rawPrompt: data.rawPrompt ?? undefined,\n inputSchema: (data.inputSchema ?? {}) as Record<string, never>,\n outputSchema: data.outputSchema as Record<string, never> | undefined,\n metadata: data.metadata as Record<string, never> | undefined,\n tags: data.tags ?? undefined,\n });\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async updatePrompt(id: string, data: Partial<Prompt>): Promise<Prompt> {\n try {\n const body: Record<string, unknown> = {\n description: data.description ?? undefined,\n isLatest: data.isLatest ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n humanPrompt: data.humanPrompt ?? undefined,\n rawPrompt: data.rawPrompt ?? undefined,\n outputSchema: data.outputSchema as Record<string, never> | undefined,\n metadata: data.metadata as Record<string, never> | undefined,\n tags: data.tags ?? undefined,\n };\n if (data.name !== undefined) {\n body.name = data.name;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- SDK type missing `name` until regenerated\n const updateArgs = { id: parseInt(id, 10), body } as any;\n const response = await this.sdk.prompt.updatePrompt(updateArgs);\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deletePrompt(id: string): Promise<void> {\n try {\n await this.sdk.prompt.deletePrompt({ id: parseInt(id, 10) });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // DATASETS (scoped to prompt)\n // Using direct fetch as SDK types don't match CLI expectations\n // =========================================================================\n\n async listDatasets(promptId: string): Promise<Dataset[]> {\n try {\n const response = await this.request<Dataset[] | { data: Dataset[] }>(`/api/prompt/${promptId}/datasets`);\n return Array.isArray(response) ? response : response.data;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async addDataset(promptId: string, fileContent: string, name?: string): Promise<Dataset & { itemCount?: number }> {\n try {\n // Step 1: Parse content to extract items\n let parsed: unknown;\n try {\n parsed = JSON.parse(fileContent);\n } catch {\n // If not parseable as JSON (e.g., CSV), no items to extract\n parsed = null;\n }\n\n // Determine dataset name and items\n let datasetName = name ?? `Dataset ${new Date().toISOString().slice(0, 16)}`;\n let items: Record<string, unknown>[] | undefined;\n\n if (\n parsed !== null &&\n !Array.isArray(parsed) &&\n typeof parsed === 'object' &&\n 'name' in (parsed as Record<string, unknown>)\n ) {\n // Object with 'name' field: treat as dataset metadata (may contain items)\n const meta = parsed as Record<string, unknown>;\n datasetName = (meta.name as string) ?? datasetName;\n if (Array.isArray(meta.items)) {\n items = meta.items as Record<string, unknown>[];\n }\n } else if (Array.isArray(parsed)) {\n items = parsed as Record<string, unknown>[];\n }\n\n // Step 2: Create dataset metadata via POST /api/prompt/:id/datasets\n const dataset = await this.request<Dataset>(`/api/prompt/${promptId}/datasets`, {\n method: 'POST',\n body: JSON.stringify({\n name: datasetName,\n }),\n });\n\n // Step 3: Bulk upload items if any via POST /api/prompts/datasets/:id/items/bulk\n let itemCount = 0;\n if (items && items.length > 0) {\n // Map items to the backend schema: { input, expectedOutput, ... }\n const mappedItems = items.map((item) => ({\n input: item.input ?? item,\n expectedOutput: item.expectedOutput ?? item.expected_output ?? undefined,\n name: item.name as string | undefined,\n userFeedback: item.userFeedback as string | undefined,\n systemFeedback: item.systemFeedback as string | undefined,\n labels: item.labels as string[] | undefined,\n metadata: item.metadata as Record<string, unknown> | undefined,\n }));\n\n await this.request(`/api/prompts/datasets/${String(dataset.id)}/items/bulk`, {\n method: 'POST',\n body: JSON.stringify({ items: mappedItems }),\n });\n itemCount = mappedItems.length;\n }\n\n return { ...dataset, itemCount };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async removeDataset(_promptId: string, datasetId: string): Promise<void> {\n try {\n await this.request(`/api/prompts/datasets/${datasetId}`, { method: 'DELETE' });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // EVALUATIONS - Using direct fetch for consistent interface\n // =========================================================================\n\n async listEvaluations(promptId: string): Promise<Evaluation[]> {\n try {\n const response = await this.request<{ data: Evaluation[] }>(`/api/prompts/evaluations?promptId=${promptId}`);\n return response.data;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createEvaluation(promptId: string, data: {\n name: string;\n description?: string;\n datasetId?: number;\n evalConfig?: Record<string, unknown>;\n llmConfig?: Record<string, unknown>;\n tags?: string[];\n metadata?: Record<string, unknown>;\n }): Promise<Evaluation> {\n try {\n return await this.request<Evaluation>('/api/prompts/evaluations', {\n method: 'POST',\n body: JSON.stringify({\n promptId: parseInt(promptId, 10),\n datasetId: data.datasetId,\n name: data.name,\n description: data.description,\n evalConfig: data.evalConfig,\n llmConfig: data.llmConfig,\n tags: data.tags,\n metadata: data.metadata,\n }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getEvaluationResults(runId: string): Promise<Evaluation> {\n try {\n return await this.request<Evaluation>(`/api/prompts/evaluations/${runId}/result`);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // OPTIMIZATIONS - Using direct fetch for consistent interface\n // =========================================================================\n\n async startOptimization(promptId: string, datasetId: string, config?: {\n maxIterations?: number;\n targetScore?: number;\n patience?: number;\n model?: string;\n evalModel?: string;\n }): Promise<OptimizationJob> {\n try {\n return await this.request<OptimizationJob>(`/api/prompt/${promptId}/optimize`, {\n method: 'POST',\n body: JSON.stringify({\n datasetId: parseInt(datasetId, 10),\n config: {\n maxIterations: config?.maxIterations ?? 3,\n targetScore: config?.targetScore,\n patience: config?.patience,\n model: config?.model,\n ...(config?.evalModel ? { tuningParams: { evaluationModel: config.evalModel } } : {}),\n },\n executionMode: 'worker_loop',\n }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getOptimizationStatus(jobId: string): Promise<OptimizeStatus> {\n try {\n return await this.request<OptimizeStatus>(`/api/optimization/${jobId}`);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getOptimizationResults(jobId: string): Promise<{ job: OptimizationJob; prompt: Prompt }> {\n try {\n return await this.request<{ job: OptimizationJob; prompt: Prompt }>(`/api/optimization/${jobId}/progress`);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // TRACES - Using direct fetch since SDK doesn't have traces\n // =========================================================================\n\n async listTraces(filters?: { promptId?: string }): Promise<unknown[]> {\n const params = filters ? new URLSearchParams(filters as Record<string, string>).toString() : '';\n const response = await this.request<{ data: unknown[]; total: number }>(`/api/traces${params ? `?${params}` : ''}`);\n return response.data ?? [];\n }\n\n async getTrace(id: string): Promise<unknown> {\n return this.request(`/api/traces/${id}`);\n }\n\n async analyzeTraces(promptId: string): Promise<Record<string, unknown>> {\n return this.request(`/api/prompts/${promptId}/trace-analysis`);\n }\n\n // =========================================================================\n // AGENTS\n // =========================================================================\n\n async listAgents(filters?: { limit?: number; offset?: number; name?: string; status?: string }): Promise<{ data: Agent[]; total: number }> {\n try {\n const response = await this.sdk.agents.listAgents({\n limit: filters?.limit,\n offset: filters?.offset,\n name: filters?.name,\n status: filters?.status,\n });\n return {\n data: response.result.data as unknown as Agent[],\n total: response.result.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getAgent(id: string): Promise<Agent> {\n try {\n const response = await this.sdk.agents.getAgent({\n id: parseInt(id, 10),\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createAgent(data: CreateAgentInput): Promise<Agent> {\n try {\n const response = await this.sdk.agents.createAgent({\n name: data.name,\n slug: data.slug,\n description: data.description ?? undefined,\n systemPrompt: data.systemPrompt,\n model: data.model ?? undefined,\n maxTurns: data.maxTurns ?? undefined,\n permissionMode: data.permissionMode ?? undefined,\n allowedTools: data.allowedTools ?? undefined,\n disallowedTools: data.disallowedTools ?? undefined,\n status: data.status ?? undefined,\n isPublic: data.isPublic ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async updateAgent(id: string, data: UpdateAgentInput): Promise<Agent> {\n try {\n const response = await this.sdk.agents.updateAgent({\n id: parseInt(id, 10),\n body: {\n name: data.name ?? undefined,\n description: data.description ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n model: data.model ?? undefined,\n maxTurns: data.maxTurns ?? undefined,\n permissionMode: data.permissionMode ?? undefined,\n allowedTools: data.allowedTools ?? undefined,\n disallowedTools: data.disallowedTools ?? undefined,\n status: data.status ?? undefined,\n isPublic: data.isPublic ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n },\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteAgent(id: string): Promise<void> {\n try {\n await this.sdk.agents.deleteAgent({\n id: parseInt(id, 10),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // AGENT CONVERSATIONS - Using direct fetch for consistent interface\n // =========================================================================\n\n async listConversations(agentId: string, filters?: { limit?: number; offset?: number }): Promise<{ data: Conversation[]; total: number }> {\n try {\n const params = new URLSearchParams();\n if (filters?.limit) params.set('limit', String(filters.limit));\n if (filters?.offset) params.set('offset', String(filters.offset));\n const query = params.toString();\n return await this.request<{ data: Conversation[]; total: number }>(\n `/api/agents/${agentId}/conversations${query ? `?${query}` : ''}`\n );\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getConversation(_agentId: string, conversationId: string): Promise<Conversation> {\n try {\n return await this.request<Conversation>(`/api/conversations/${conversationId}`);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createConversation(agentId: string, data?: CreateConversationInput): Promise<Conversation> {\n try {\n return await this.request<Conversation>(`/api/agents/${agentId}/conversations`, {\n method: 'POST',\n body: JSON.stringify({\n title: data?.title ?? undefined,\n metadata: data?.metadata ?? undefined,\n }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteConversation(_agentId: string, conversationId: string): Promise<void> {\n try {\n await this.request(`/api/conversations/${conversationId}`, { method: 'DELETE' });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async listMessages(_agentId: string, conversationId: string, filters?: { limit?: number; offset?: number }): Promise<{ data: Message[]; total: number }> {\n try {\n const params = new URLSearchParams();\n if (filters?.limit) params.set('limit', String(filters.limit));\n if (filters?.offset) params.set('offset', String(filters.offset));\n const query = params.toString();\n return await this.request<{ data: Message[]; total: number }>(\n `/api/conversations/${conversationId}/messages${query ? `?${query}` : ''}`\n );\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // WORKSPACES\n // =========================================================================\n\n async listWorkspaces(filters?: { limit?: number; offset?: number }): Promise<{ data: Workspace[]; total: number }> {\n try {\n const response = await this.sdk.workspaces.listWorkspaces({\n includeInactive: false,\n });\n // SDK returns { workspaces: [...], total } but CLI expects { data: [...], total }\n const workspaces = response.workspaces as unknown as Workspace[];\n // Apply client-side pagination if needed\n const offset = filters?.offset ?? 0;\n const limit = filters?.limit ?? workspaces.length;\n return {\n data: workspaces.slice(offset, offset + limit),\n total: response.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getWorkspace(id: string): Promise<Workspace> {\n try {\n const response = await this.sdk.workspaces.getWorkspace({\n wsId: id,\n });\n return response as unknown as Workspace;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // PLAYGROUND - Execute prompts\n // =========================================================================\n\n async executePrompt(\n promptId: string,\n input: Record<string, unknown>,\n options?: { model?: string }\n ): Promise<PromptExecutionResult> {\n try {\n return await this.request<PromptExecutionResult>(`/api/prompt/${promptId}/playground/call`, {\n method: 'POST',\n body: JSON.stringify({ input, model: options?.model }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async executePromptStream(\n promptId: string,\n input: Record<string, unknown>,\n options?: { model?: string }\n ): Promise<Response> {\n const response = await fetch(`${this.endpoint}/api/prompt/${promptId}/execute/stream`, {\n method: 'POST',\n headers: {\n 'x-api-key': this.apiKey,\n 'Content-Type': 'application/json',\n 'Accept': 'text/event-stream',\n },\n body: JSON.stringify({ input, ...options }),\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new AuthenticationError();\n }\n if (response.status === 403) {\n throw new ApiError(403, await response.text() || 'Access denied');\n }\n const error = await response.text();\n // Detect workspace context errors from the server response body\n const errorLower = error.toLowerCase();\n if (\n errorLower.includes('workspace') && (errorLower.includes('missing') || errorLower.includes('required')) ||\n errorLower.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(error);\n }\n throw new ApiError(response.status, error);\n }\n\n return response;\n }\n\n // =========================================================================\n // PROVIDERS\n // =========================================================================\n\n async listProviders(filters?: { limit?: number; offset?: number; type?: string }): Promise<{ data: Provider[]; total: number }> {\n try {\n const response = await this.sdk.providerConfigs.listProviders({\n provider: filters?.type,\n includeInactive: false,\n });\n // SDK returns { configs: [...], total } but CLI expects { data: [...], total }\n const configs = response.configs as unknown as Provider[];\n // Apply client-side pagination if needed\n const offset = filters?.offset ?? 0;\n const limit = filters?.limit ?? configs.length;\n return {\n data: configs.slice(offset, offset + limit),\n total: response.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getProvider(id: string): Promise<Provider> {\n try {\n const response = await this.sdk.providerConfigs.getProvider({\n id: id,\n });\n return response as unknown as Provider;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async testProvider(id: string): Promise<ProviderTestResult> {\n try {\n const response = await this.sdk.providerConfigs.testProvider({\n id: id,\n });\n return response as unknown as ProviderTestResult;\n } catch (error) {\n this.handleError(error);\n }\n }\n}\n\n// Singleton SDK client\nlet sdkClient: SDKClientWrapper | null = null;\n\nexport function getSDKClient(): SDKClientWrapper {\n if (!sdkClient) {\n const apiKey = getApiKey();\n if (!apiKey) {\n throw new AuthenticationError();\n }\n\n const config = loadConfig();\n sdkClient = new SDKClientWrapper({\n bearerAuth: apiKey,\n serverURL: config.endpoint,\n workspaceId: config.defaultWorkspace,\n organizationId: config.defaultOrganization,\n });\n }\n\n return sdkClient;\n}\n\nexport function resetSDKClient(): void {\n sdkClient = null;\n}\n\nexport async function validateApiKey(apiKey: string, endpoint: string): Promise<boolean> {\n // Use /api/organizations directly — it requires only x-api-key, no tenancy headers\n try {\n const response = await fetch(`${endpoint}/api/organizations`, {\n headers: { 'x-api-key': apiKey },\n });\n return response.ok;\n } catch {\n return false;\n }\n}\n\n/**\n * Fetch organizations for the authenticated API key.\n * Returns array of { id, name } or empty array on failure.\n */\nexport async function fetchOrganizations(apiKey: string, endpoint: string): Promise<{ id: string; name: string }[]> {\n try {\n const response = await fetch(`${endpoint}/api/organizations`, {\n headers: { 'x-api-key': apiKey },\n });\n if (!response.ok) return [];\n const data = await response.json() as { data?: { id: string; name: string }[] };\n return data.data ?? [];\n } catch {\n return [];\n }\n}\n\n/**\n * Fetch workspaces for the given organization.\n * Returns array of { id, name, isDefault } or empty array on failure.\n */\nexport async function fetchWorkspaces(apiKey: string, endpoint: string, orgId: string): Promise<{ id: string; name: string; isDefault?: boolean }[]> {\n try {\n const response = await fetch(`${endpoint}/api/workspaces`, {\n headers: { 'x-api-key': apiKey, 'x-organization-id': orgId },\n });\n if (!response.ok) return [];\n const data = await response.json() as { workspaces?: { id: string; name: string; isDefault?: boolean }[] };\n return data.workspaces ?? [];\n } catch {\n return [];\n }\n}\n\n// Export the wrapper class for type compatibility\nexport { SDKClientWrapper as MutagentSDK };\n",
8
+ "// SDK Client wrapper for MutagenT API\n/// <reference lib=\"dom\" />\nimport { Mutagent, HTTPClient } from '@mutagent/sdk';\nimport type { Prompt, Dataset, Evaluation, OptimizeJob as OptimizationJob, OptimizeStatus, Agent, CreateAgentInput, UpdateAgentInput, PromptExecutionResult, Conversation, CreateConversationInput, Message, Workspace, Provider, ProviderTestResult } from '../types/index.js';\nimport { ApiError, AuthenticationError, MutagentError, WorkspaceContextError } from './errors.js';\nimport { getApiKey, loadConfig } from './config.js';\n\n/**\n * SDK Client Wrapper\n *\n * This class wraps the real @mutagent/sdk to provide a consistent interface\n * for CLI commands. It maps the SDK's method signatures to the interface\n * expected by the CLI.\n */\nclass SDKClientWrapper {\n private sdk: Mutagent;\n private apiKey: string;\n private endpoint: string;\n private workspaceId?: string;\n private organizationId?: string;\n\n constructor(opts: { bearerAuth: string; serverURL?: string; workspaceId?: string; organizationId?: string }) {\n this.apiKey = opts.bearerAuth;\n this.endpoint = opts.serverURL ?? 'http://localhost:3003';\n this.workspaceId = opts.workspaceId;\n this.organizationId = opts.organizationId;\n\n // Create HTTP client with tenancy header injection\n const httpClient = new HTTPClient();\n httpClient.addHook(\"beforeRequest\", (req) => {\n if (this.workspaceId) req.headers.set(\"x-workspace-id\", this.workspaceId);\n if (this.organizationId) req.headers.set(\"x-organization-id\", this.organizationId);\n return req;\n });\n\n this.sdk = new Mutagent({\n security: {\n apiKey: this.apiKey,\n },\n serverURL: this.endpoint,\n httpClient,\n });\n }\n\n /**\n * Helper to handle SDK errors and convert them to CLI errors.\n * Masks Speakeasy SDK internal errors (SDKValidationError, SDKError, etc.)\n * so users see clean, actionable messages instead of raw stack traces.\n */\n private handleError(error: unknown): never {\n if (error && typeof error === 'object') {\n const err = error as { statusCode?: number; message?: string; body?: string; name?: string; rawValue?: unknown; rawMessage?: string };\n\n if (err.statusCode === 401) {\n throw new AuthenticationError();\n }\n if (err.statusCode === 403) {\n throw new ApiError(403, err.message ?? err.body ?? 'Access denied');\n }\n\n // Detect workspace/org context errors from the server\n const errMessage = (err.message ?? err.body ?? '').toLowerCase();\n if (\n errMessage.includes('workspace') && (errMessage.includes('missing') || errMessage.includes('required')) ||\n errMessage.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(err.message ?? err.body ?? undefined);\n }\n\n if (err.statusCode) {\n throw new ApiError(err.statusCode, err.message ?? err.body ?? 'Unknown error');\n }\n\n // Catch Speakeasy SDK internal errors (SDKValidationError, SDKError, etc.)\n if (\n err.name === 'SDKValidationError' ||\n err.name === 'SDKError' ||\n err.rawValue !== undefined ||\n err.rawMessage !== undefined\n ) {\n const friendlyMessage = err.rawMessage ?? err.message ?? 'Request failed';\n throw new MutagentError(\n 'REQUEST_FAILED',\n friendlyMessage,\n 'Check your input and try again. Run the command with --help for usage details.'\n );\n }\n }\n\n // Catch network errors (fetch failures, DNS resolution, etc.)\n if (error instanceof TypeError && typeof error.message === 'string') {\n if (error.message.includes('fetch') || error.message.includes('network') || error.message.includes('ECONNREFUSED')) {\n throw new MutagentError(\n 'NETWORK_ERROR',\n 'Unable to connect to the MutagenT server',\n 'Check your internet connection and verify the server URL with: mutagent config list'\n );\n }\n }\n\n // Last resort: wrap unknown errors in MutagentError\n if (error instanceof Error) {\n throw new MutagentError(\n 'REQUEST_FAILED',\n error.message,\n 'Run the command with --help for usage details'\n );\n }\n\n throw new MutagentError(\n 'UNKNOWN_ERROR',\n 'An unexpected error occurred',\n 'Run the command with --help for usage details'\n );\n }\n\n /**\n * Helper for direct HTTP requests (for endpoints not yet in SDK)\n */\n private async request<T>(path: string, options?: RequestInit): Promise<T> {\n // Convert Headers object to plain object if needed\n const optHeaders = options?.headers;\n let extraHeaders: Record<string, string> = {};\n if (optHeaders instanceof Headers) {\n optHeaders.forEach((value, key) => {\n extraHeaders[key] = value;\n });\n } else if (optHeaders) {\n extraHeaders = optHeaders as Record<string, string>;\n }\n\n // Build tenancy headers from stored config\n const tenancyHeaders: Record<string, string> = {};\n if (this.workspaceId) tenancyHeaders['x-workspace-id'] = this.workspaceId;\n if (this.organizationId) tenancyHeaders['x-organization-id'] = this.organizationId;\n\n const response = await fetch(`${this.endpoint}${path}`, {\n ...options,\n headers: {\n 'x-api-key': this.apiKey,\n 'Content-Type': 'application/json',\n ...tenancyHeaders,\n ...extraHeaders,\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new AuthenticationError();\n }\n if (response.status === 403) {\n throw new ApiError(403, await response.text() || 'Access denied');\n }\n const error = await response.text();\n // Detect workspace context errors from the server response body\n const errorLower = error.toLowerCase();\n if (\n errorLower.includes('workspace') && (errorLower.includes('missing') || errorLower.includes('required')) ||\n errorLower.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(error);\n }\n throw new ApiError(response.status, error);\n }\n\n return response.json() as Promise<T>;\n }\n\n // =========================================================================\n // PROMPTS\n // =========================================================================\n\n async listPrompts(): Promise<Prompt[]> {\n try {\n const response = await this.sdk.prompt.listPrompts();\n return response.result.data as Prompt[];\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getPrompt(id: string): Promise<Prompt> {\n try {\n const response = await this.sdk.prompt.getPrompt({ id: parseInt(id, 10) });\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createPrompt(data: Partial<Prompt>): Promise<Prompt> {\n try {\n const response = await this.sdk.prompt.createPrompt({\n name: data.name ?? '',\n description: data.description ?? undefined,\n version: data.version ?? undefined,\n isLatest: data.isLatest ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n humanPrompt: data.humanPrompt ?? undefined,\n rawPrompt: data.rawPrompt ?? undefined,\n inputSchema: data.inputSchema ?? undefined,\n outputSchema: data.outputSchema ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n });\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async updatePrompt(id: string, data: Partial<Prompt>): Promise<Prompt> {\n try {\n const body: Record<string, unknown> = {\n description: data.description ?? undefined,\n isLatest: data.isLatest ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n humanPrompt: data.humanPrompt ?? undefined,\n rawPrompt: data.rawPrompt ?? undefined,\n outputSchema: data.outputSchema as Record<string, never> | undefined,\n metadata: data.metadata as Record<string, never> | undefined,\n tags: data.tags ?? undefined,\n };\n if (data.name !== undefined) {\n body.name = data.name;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- SDK type missing `name` until regenerated\n const updateArgs = { id: parseInt(id, 10), body } as any;\n const response = await this.sdk.prompt.updatePrompt(updateArgs);\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deletePrompt(id: string): Promise<void> {\n try {\n await this.sdk.prompt.deletePrompt({ id: parseInt(id, 10) });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // DATASETS (scoped to prompt)\n // Using direct fetch as SDK types don't match CLI expectations\n // =========================================================================\n\n async listDatasets(promptId: string): Promise<Dataset[]> {\n try {\n const response = await this.request<Dataset[] | { data: Dataset[] }>(`/api/prompt/${promptId}/datasets`);\n return Array.isArray(response) ? response : response.data;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async addDataset(promptId: string, fileContent: string, name?: string): Promise<Dataset & { itemCount?: number }> {\n try {\n // Step 1: Parse content to extract items\n let parsed: unknown;\n try {\n parsed = JSON.parse(fileContent);\n } catch {\n // If not parseable as JSON (e.g., CSV), no items to extract\n parsed = null;\n }\n\n // Determine dataset name and items\n let datasetName = name ?? `Dataset ${new Date().toISOString().slice(0, 16)}`;\n let items: Record<string, unknown>[] | undefined;\n\n if (\n parsed !== null &&\n !Array.isArray(parsed) &&\n typeof parsed === 'object' &&\n 'name' in (parsed as Record<string, unknown>)\n ) {\n // Object with 'name' field: treat as dataset metadata (may contain items)\n const meta = parsed as Record<string, unknown>;\n datasetName = (meta.name as string) ?? datasetName;\n if (Array.isArray(meta.items)) {\n items = meta.items as Record<string, unknown>[];\n }\n } else if (Array.isArray(parsed)) {\n items = parsed as Record<string, unknown>[];\n }\n\n // Step 2: Create dataset metadata via POST /api/prompt/:id/datasets\n const dataset = await this.request<Dataset>(`/api/prompt/${promptId}/datasets`, {\n method: 'POST',\n body: JSON.stringify({\n name: datasetName,\n }),\n });\n\n // Step 3: Bulk upload items if any via POST /api/prompts/datasets/:id/items/bulk\n let itemCount = 0;\n if (items && items.length > 0) {\n // Map items to the backend schema: { input, expectedOutput, ... }\n const mappedItems = items.map((item) => ({\n input: item.input ?? item,\n expectedOutput: item.expectedOutput ?? item.expected_output ?? undefined,\n name: item.name as string | undefined,\n userFeedback: item.userFeedback as string | undefined,\n systemFeedback: item.systemFeedback as string | undefined,\n labels: item.labels as string[] | undefined,\n metadata: item.metadata as Record<string, unknown> | undefined,\n }));\n\n await this.request(`/api/prompts/datasets/${String(dataset.id)}/items/bulk`, {\n method: 'POST',\n body: JSON.stringify({ items: mappedItems }),\n });\n itemCount = mappedItems.length;\n }\n\n return { ...dataset, itemCount };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async removeDataset(_promptId: string, datasetId: string): Promise<void> {\n try {\n await this.request(`/api/prompts/datasets/${datasetId}`, { method: 'DELETE' });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // EVALUATIONS - Using direct fetch for consistent interface\n // =========================================================================\n\n async listEvaluations(promptId: string): Promise<Evaluation[]> {\n try {\n const response = await this.request<{ data: Evaluation[] }>(`/api/prompts/evaluations?promptId=${promptId}`);\n return response.data;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createEvaluation(promptId: string, data: {\n name: string;\n description?: string;\n datasetId?: number;\n evalConfig?: Record<string, unknown>;\n llmConfig?: Record<string, unknown>;\n tags?: string[];\n metadata?: Record<string, unknown>;\n }): Promise<Evaluation> {\n try {\n return await this.request<Evaluation>('/api/prompts/evaluations', {\n method: 'POST',\n body: JSON.stringify({\n promptId: parseInt(promptId, 10),\n datasetId: data.datasetId,\n name: data.name,\n description: data.description,\n evalConfig: data.evalConfig,\n llmConfig: data.llmConfig,\n tags: data.tags,\n metadata: data.metadata,\n }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getEvaluationResults(runId: string): Promise<Evaluation> {\n try {\n return await this.request<Evaluation>(`/api/prompts/evaluations/${runId}/result`);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // OPTIMIZATIONS - Using direct fetch for consistent interface\n // =========================================================================\n\n async startOptimization(promptId: string, datasetId: string, config?: {\n maxIterations?: number;\n targetScore?: number;\n patience?: number;\n model?: string;\n evalModel?: string;\n }): Promise<OptimizationJob> {\n try {\n return await this.request<OptimizationJob>(`/api/prompt/${promptId}/optimize`, {\n method: 'POST',\n body: JSON.stringify({\n datasetId: parseInt(datasetId, 10),\n config: {\n maxIterations: config?.maxIterations ?? 3,\n targetScore: config?.targetScore,\n patience: config?.patience,\n model: config?.model,\n ...(config?.evalModel ? { tuningParams: { evaluationModel: config.evalModel } } : {}),\n },\n executionMode: 'worker_loop',\n }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getOptimizationStatus(jobId: string): Promise<OptimizeStatus> {\n try {\n return await this.request<OptimizeStatus>(`/api/optimization/${jobId}`);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getOptimizationResults(jobId: string): Promise<{ job: OptimizationJob; prompt: Prompt }> {\n try {\n return await this.request<{ job: OptimizationJob; prompt: Prompt }>(`/api/optimization/${jobId}/progress`);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // TRACES - Using direct fetch since SDK doesn't have traces\n // =========================================================================\n\n async listTraces(filters?: { promptId?: string }): Promise<unknown[]> {\n const params = filters ? new URLSearchParams(filters as Record<string, string>).toString() : '';\n const response = await this.request<{ data: unknown[]; total: number }>(`/api/traces${params ? `?${params}` : ''}`);\n return response.data ?? [];\n }\n\n async getTrace(id: string): Promise<unknown> {\n return this.request(`/api/traces/${id}`);\n }\n\n async analyzeTraces(promptId: string): Promise<Record<string, unknown>> {\n return this.request(`/api/prompts/${promptId}/trace-analysis`);\n }\n\n // =========================================================================\n // AGENTS\n // =========================================================================\n\n async listAgents(filters?: { limit?: number; offset?: number; name?: string; status?: string }): Promise<{ data: Agent[]; total: number }> {\n try {\n const response = await this.sdk.agents.listAgents({\n limit: filters?.limit,\n offset: filters?.offset,\n name: filters?.name,\n status: filters?.status,\n });\n return {\n data: response.result.data as unknown as Agent[],\n total: response.result.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getAgent(id: string): Promise<Agent> {\n try {\n const response = await this.sdk.agents.getAgent({\n id: parseInt(id, 10),\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createAgent(data: CreateAgentInput): Promise<Agent> {\n try {\n const response = await this.sdk.agents.createAgent({\n name: data.name,\n slug: data.slug,\n description: data.description ?? undefined,\n systemPrompt: data.systemPrompt,\n model: data.model ?? undefined,\n maxTurns: data.maxTurns ?? undefined,\n permissionMode: data.permissionMode ?? undefined,\n allowedTools: data.allowedTools ?? undefined,\n disallowedTools: data.disallowedTools ?? undefined,\n status: data.status ?? undefined,\n isPublic: data.isPublic ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async updateAgent(id: string, data: UpdateAgentInput): Promise<Agent> {\n try {\n const response = await this.sdk.agents.updateAgent({\n id: parseInt(id, 10),\n body: {\n name: data.name ?? undefined,\n description: data.description ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n model: data.model ?? undefined,\n maxTurns: data.maxTurns ?? undefined,\n permissionMode: data.permissionMode ?? undefined,\n allowedTools: data.allowedTools ?? undefined,\n disallowedTools: data.disallowedTools ?? undefined,\n status: data.status ?? undefined,\n isPublic: data.isPublic ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n },\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteAgent(id: string): Promise<void> {\n try {\n await this.sdk.agents.deleteAgent({\n id: parseInt(id, 10),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // AGENT CONVERSATIONS - Using direct fetch for consistent interface\n // =========================================================================\n\n async listConversations(agentId: string, filters?: { limit?: number; offset?: number }): Promise<{ data: Conversation[]; total: number }> {\n try {\n const params = new URLSearchParams();\n if (filters?.limit) params.set('limit', String(filters.limit));\n if (filters?.offset) params.set('offset', String(filters.offset));\n const query = params.toString();\n return await this.request<{ data: Conversation[]; total: number }>(\n `/api/agents/${agentId}/conversations${query ? `?${query}` : ''}`\n );\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getConversation(_agentId: string, conversationId: string): Promise<Conversation> {\n try {\n return await this.request<Conversation>(`/api/conversations/${conversationId}`);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createConversation(agentId: string, data?: CreateConversationInput): Promise<Conversation> {\n try {\n return await this.request<Conversation>(`/api/agents/${agentId}/conversations`, {\n method: 'POST',\n body: JSON.stringify({\n title: data?.title ?? undefined,\n metadata: data?.metadata ?? undefined,\n }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteConversation(_agentId: string, conversationId: string): Promise<void> {\n try {\n await this.request(`/api/conversations/${conversationId}`, { method: 'DELETE' });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async listMessages(_agentId: string, conversationId: string, filters?: { limit?: number; offset?: number }): Promise<{ data: Message[]; total: number }> {\n try {\n const params = new URLSearchParams();\n if (filters?.limit) params.set('limit', String(filters.limit));\n if (filters?.offset) params.set('offset', String(filters.offset));\n const query = params.toString();\n return await this.request<{ data: Message[]; total: number }>(\n `/api/conversations/${conversationId}/messages${query ? `?${query}` : ''}`\n );\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // WORKSPACES\n // =========================================================================\n\n async listWorkspaces(filters?: { limit?: number; offset?: number }): Promise<{ data: Workspace[]; total: number }> {\n try {\n const response = await this.sdk.workspaces.listWorkspaces({\n includeInactive: false,\n });\n // SDK returns { workspaces: [...], total } but CLI expects { data: [...], total }\n const workspaces = response.workspaces as unknown as Workspace[];\n // Apply client-side pagination if needed\n const offset = filters?.offset ?? 0;\n const limit = filters?.limit ?? workspaces.length;\n return {\n data: workspaces.slice(offset, offset + limit),\n total: response.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getWorkspace(id: string): Promise<Workspace> {\n try {\n const response = await this.sdk.workspaces.getWorkspace({\n wsId: id,\n });\n return response as unknown as Workspace;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // PLAYGROUND - Execute prompts\n // =========================================================================\n\n async executePrompt(\n promptId: string,\n input: Record<string, unknown>,\n options?: { model?: string }\n ): Promise<PromptExecutionResult> {\n try {\n return await this.request<PromptExecutionResult>(`/api/prompt/${promptId}/playground/call`, {\n method: 'POST',\n body: JSON.stringify({ input, model: options?.model }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async executePromptStream(\n promptId: string,\n input: Record<string, unknown>,\n options?: { model?: string }\n ): Promise<Response> {\n const response = await fetch(`${this.endpoint}/api/prompt/${promptId}/execute/stream`, {\n method: 'POST',\n headers: {\n 'x-api-key': this.apiKey,\n 'Content-Type': 'application/json',\n 'Accept': 'text/event-stream',\n },\n body: JSON.stringify({ input, ...options }),\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new AuthenticationError();\n }\n if (response.status === 403) {\n throw new ApiError(403, await response.text() || 'Access denied');\n }\n const error = await response.text();\n // Detect workspace context errors from the server response body\n const errorLower = error.toLowerCase();\n if (\n errorLower.includes('workspace') && (errorLower.includes('missing') || errorLower.includes('required')) ||\n errorLower.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(error);\n }\n throw new ApiError(response.status, error);\n }\n\n return response;\n }\n\n // =========================================================================\n // PROVIDERS\n // =========================================================================\n\n async listProviders(filters?: { limit?: number; offset?: number; type?: string }): Promise<{ data: Provider[]; total: number }> {\n try {\n const response = await this.sdk.providerConfigs.listProviders({\n provider: filters?.type,\n includeInactive: false,\n });\n // SDK returns { configs: [...], total } but CLI expects { data: [...], total }\n const configs = response.configs as unknown as Provider[];\n // Apply client-side pagination if needed\n const offset = filters?.offset ?? 0;\n const limit = filters?.limit ?? configs.length;\n return {\n data: configs.slice(offset, offset + limit),\n total: response.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getProvider(id: string): Promise<Provider> {\n try {\n const response = await this.sdk.providerConfigs.getProvider({\n id: id,\n });\n return response as unknown as Provider;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async testProvider(id: string): Promise<ProviderTestResult> {\n try {\n const response = await this.sdk.providerConfigs.testProvider({\n id: id,\n });\n return response as unknown as ProviderTestResult;\n } catch (error) {\n this.handleError(error);\n }\n }\n}\n\n// Singleton SDK client\nlet sdkClient: SDKClientWrapper | null = null;\n\nexport function getSDKClient(): SDKClientWrapper {\n if (!sdkClient) {\n const apiKey = getApiKey();\n if (!apiKey) {\n throw new AuthenticationError();\n }\n\n const config = loadConfig();\n sdkClient = new SDKClientWrapper({\n bearerAuth: apiKey,\n serverURL: config.endpoint,\n workspaceId: config.defaultWorkspace,\n organizationId: config.defaultOrganization,\n });\n }\n\n return sdkClient;\n}\n\nexport function resetSDKClient(): void {\n sdkClient = null;\n}\n\nexport async function validateApiKey(apiKey: string, endpoint: string): Promise<boolean> {\n // Use /api/organizations directly — it requires only x-api-key, no tenancy headers\n try {\n const response = await fetch(`${endpoint}/api/organizations`, {\n headers: { 'x-api-key': apiKey },\n });\n return response.ok;\n } catch {\n return false;\n }\n}\n\n/**\n * Fetch organizations for the authenticated API key.\n * Returns array of { id, name } or empty array on failure.\n */\nexport async function fetchOrganizations(apiKey: string, endpoint: string): Promise<{ id: string; name: string }[]> {\n try {\n const response = await fetch(`${endpoint}/api/organizations`, {\n headers: { 'x-api-key': apiKey },\n });\n if (!response.ok) return [];\n const data = await response.json() as { data?: { id: string; name: string }[] };\n return data.data ?? [];\n } catch {\n return [];\n }\n}\n\n/**\n * Fetch workspaces for the given organization.\n * Returns array of { id, name, isDefault } or empty array on failure.\n */\nexport async function fetchWorkspaces(apiKey: string, endpoint: string, orgId: string): Promise<{ id: string; name: string; isDefault?: boolean }[]> {\n try {\n const response = await fetch(`${endpoint}/api/workspaces`, {\n headers: { 'x-api-key': apiKey, 'x-organization-id': orgId },\n });\n if (!response.ok) return [];\n const data = await response.json() as { workspaces?: { id: string; name: string; isDefault?: boolean }[] };\n return data.workspaces ?? [];\n } catch {\n return [];\n }\n}\n\n// Export the wrapper class for type compatibility\nexport { SDKClientWrapper as MutagentSDK };\n",
9
9
  "export class MutagentError extends Error {\n constructor(\n public code: string,\n message: string,\n public suggestion?: string,\n public exitCode = 1\n ) {\n super(message);\n this.name = 'MutagentError';\n }\n\n toJSON(): { error: { code: string; message: string; suggestion?: string } } {\n return {\n error: {\n code: this.code,\n message: this.message,\n suggestion: this.suggestion,\n }\n };\n }\n}\n\nexport interface AuthenticationErrorOptions {\n suggestions?: string[];\n cause?: Error;\n}\n\nexport const AUTH_REMEDIATION_MESSAGE = [\n 'Authentication required. Options:',\n ' Interactive: mutagent auth login --browser',\n ' Non-interactive: export MUTAGENT_API_KEY=<your-key>',\n ' CI/CD: mutagent auth login --api-key <key>',\n].join('\\n');\n\nexport class AuthenticationError extends MutagentError {\n readonly suggestions: string[];\n override readonly cause?: Error;\n\n constructor(\n message?: string,\n options: AuthenticationErrorOptions = {}\n ) {\n super(\n 'AUTH_REQUIRED',\n message ?? 'Authentication required. Please run \"mutagent auth login\"',\n options.suggestions ? options.suggestions[0] : 'Run: mutagent auth login --browser',\n 2\n );\n this.suggestions = options.suggestions ?? [\n 'mutagent auth login --browser',\n 'export MUTAGENT_API_KEY=<your-key>',\n 'mutagent auth login --api-key <key>',\n ];\n this.suggestion = options.suggestions ? options.suggestions[0] : 'Run: mutagent auth login --browser';\n this.cause = options.cause;\n }\n}\n\nexport class ApiError extends MutagentError {\n readonly statusCode: number;\n\n constructor(status: number, message: string) {\n super(\n `API_${status}`,\n message,\n status === 401 ? 'Check your API key with: mutagent auth status' : undefined,\n 1\n );\n this.statusCode = status;\n }\n}\n\nexport const WORKSPACE_REMEDIATION_MESSAGE = [\n 'Workspace context missing. To fix:',\n ' mutagent config set workspace <workspace-id> # Set default workspace',\n ' mutagent workspaces list # List available workspaces',\n].join('\\n');\n\nexport class WorkspaceContextError extends MutagentError {\n constructor(message?: string) {\n super(\n 'WORKSPACE_CONTEXT_MISSING',\n message ?? 'Workspace context is required but not configured',\n 'Run: mutagent config set workspace <workspace-id>',\n 3\n );\n }\n}\n\nexport class ValidationError extends MutagentError {\n constructor(message: string) {\n super(\n 'VALIDATION_ERROR',\n message,\n 'Check the command syntax with: mutagent <command> --help',\n 1\n );\n }\n}\n\n// =============================================================================\n// Additional Error Classes for Configuration & Auth System\n// =============================================================================\n\nexport class CredentialsExpiredError extends AuthenticationError {\n readonly expiredAt: Date;\n\n constructor(expiredAt: Date) {\n super();\n this.expiredAt = expiredAt;\n this.code = 'CREDENTIALS_EXPIRED';\n this.message = `Credentials expired at ${expiredAt.toISOString()}`;\n this.suggestion = 'Run \"mutagent auth login\" to refresh your credentials';\n }\n}\n\nexport class InvalidApiKeyError extends MutagentError {\n constructor(keyPreview?: string) {\n const preview = keyPreview ? ` (received: \"${keyPreview}...\")` : '';\n super(\n 'INVALID_API_KEY',\n `Invalid API key format${preview}`,\n 'API keys should start with \"sk_\" or \"sk-\" and be at least 20 characters',\n 2\n );\n }\n}\n\nexport interface ConfigErrorOptions {\n cause?: Error;\n suggestions?: string[];\n configPath?: string;\n}\n\nexport class ConfigError extends MutagentError {\n readonly configPath?: string;\n readonly suggestions: string[];\n override readonly cause?: Error;\n\n constructor(\n message: string,\n options: ConfigErrorOptions = {}\n ) {\n super(\n 'CONFIG_ERROR',\n message,\n options.suggestions ? options.suggestions[0] : 'Run \"mutagent config validate\" to check your configuration',\n 3\n );\n this.configPath = options.configPath;\n this.suggestions = options.suggestions ?? ['Run \"mutagent config validate\" to check your configuration'];\n this.suggestion = options.suggestions ? options.suggestions[0] : 'Run \"mutagent config validate\" to check your configuration';\n this.cause = options.cause;\n }\n}\n\nexport class ConfigNotFoundError extends ConfigError {\n constructor(configPath: string) {\n super(\n `Configuration file not found: ${configPath}`,\n { suggestions: ['Create a configuration file with \"mutagent config init\" or use --config'] }\n );\n this.code = 'CONFIG_NOT_FOUND';\n this.suggestion = 'Create a configuration file with \"mutagent config init\" or use --config';\n }\n}\n\nexport class ConfigParseError extends ConfigError {\n readonly parseError: Error;\n\n constructor(\n configPath: string,\n parseError: Error\n ) {\n super(\n `Failed to parse configuration file: ${configPath}`,\n { suggestions: ['Validate your JSON/JavaScript syntax and check for trailing commas'] }\n );\n this.code = 'CONFIG_PARSE_ERROR';\n this.suggestion = 'Validate your JSON/JavaScript syntax and check for trailing commas';\n this.parseError = parseError;\n }\n}\n\nexport interface PermissionErrorOptions {\n cause?: Error;\n}\n\nexport class PermissionError extends MutagentError {\n readonly path?: string;\n readonly operation: string;\n override readonly cause?: Error;\n\n constructor(\n operation: string,\n path?: string,\n options: PermissionErrorOptions = {}\n ) {\n const pathMsg = path ? ` at ${path}` : '';\n super(\n 'PERMISSION_ERROR',\n `Permission denied: ${operation}${pathMsg}`,\n 'Check file permissions and ensure the file is not read-only',\n 8\n );\n this.operation = operation;\n this.path = path;\n this.cause = options.cause;\n }\n}\n\nexport class NetworkError extends MutagentError {\n readonly url?: string;\n readonly statusCode?: number;\n\n constructor(\n message = 'Network error',\n url?: string,\n statusCode?: number\n ) {\n super(\n 'NETWORK_ERROR',\n message,\n 'Check your internet connection and verify the server URL',\n 5\n );\n this.url = url;\n this.statusCode = statusCode;\n }\n}\n\nexport class RateLimitError extends NetworkError {\n readonly retryAfter?: number;\n\n constructor(\n retryAfter?: number\n ) {\n super(\n 'Rate limit exceeded',\n undefined,\n 429\n );\n this.code = 'RATE_LIMIT_ERROR';\n this.suggestion = retryAfter \n ? `Wait ${retryAfter} seconds before retrying`\n : 'Wait a few seconds before retrying';\n this.retryAfter = retryAfter;\n this.exitCode = 6;\n }\n}\n\n// =============================================================================\n// Error Factory Functions\n// =============================================================================\n\nexport function createErrorFromUnknown(error: unknown): MutagentError {\n if (error instanceof MutagentError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new MutagentError(\n 'UNKNOWN_ERROR',\n error.message,\n undefined,\n 1\n );\n }\n\n return new MutagentError(\n 'UNKNOWN_ERROR',\n typeof error === 'string' ? error : 'An unknown error occurred',\n undefined,\n 1\n );\n}\n\nexport function handleError(error: unknown, isJson: boolean): never {\n if (error instanceof MutagentError) {\n if (isJson) {\n const jsonOutput = error.toJSON();\n // Include remediation info for auth errors\n if (error instanceof AuthenticationError) {\n (jsonOutput as Record<string, unknown>).remediation = {\n interactive: 'mutagent auth login --browser',\n nonInteractive: 'export MUTAGENT_API_KEY=<your-key>',\n ciCd: 'mutagent auth login --api-key <key>',\n };\n }\n // Include remediation info for workspace context errors\n if (error instanceof WorkspaceContextError) {\n (jsonOutput as Record<string, unknown>).remediation = {\n setWorkspace: 'mutagent config set workspace <workspace-id>',\n listWorkspaces: 'mutagent workspaces list',\n };\n }\n // Include auth recovery hint for 403 API errors\n if (error instanceof ApiError && error.statusCode === 403) {\n (jsonOutput as Record<string, unknown>).remediation = {\n interactive: 'mutagent auth login --browser',\n nonInteractive: 'export MUTAGENT_API_KEY=<your-key>',\n checkPermissions: 'Verify your API key has the required permissions',\n };\n }\n console.log(JSON.stringify(jsonOutput, null, 2));\n } else {\n console.error(`Error: ${error.message}`);\n if (error instanceof AuthenticationError) {\n console.error('');\n console.error(AUTH_REMEDIATION_MESSAGE);\n } else if (error instanceof WorkspaceContextError) {\n console.error('');\n console.error(WORKSPACE_REMEDIATION_MESSAGE);\n } else if (error instanceof ApiError && error.statusCode === 403) {\n console.error('');\n console.error('Access denied. To fix:');\n console.error(' mutagent auth login --browser # Re-authenticate');\n console.error(' export MUTAGENT_API_KEY=mt_xxx # Or use a different API key');\n } else if (error instanceof ValidationError) {\n if (error.suggestion) {\n console.error(`Suggestion: ${error.suggestion}`);\n }\n console.error('');\n console.error('Run `mutagent <command> --help` for usage information.');\n } else if (error.suggestion) {\n console.error(`Suggestion: ${error.suggestion}`);\n }\n // Show help hint for missing arguments or invalid input errors\n if (error.code === 'MISSING_ARGUMENTS' || error.code === 'INVALID_ARGUMENTS' || error.code === 'INVALID_INPUT') {\n console.error('');\n console.error('Run `mutagent <command> --help` for usage information.');\n }\n }\n process.exit(error.exitCode);\n }\n\n // Catch Speakeasy SDK internal errors that leaked past sdk-client wrapper\n if (error && typeof error === 'object') {\n const sdkErr = error as { name?: string; rawValue?: unknown; rawMessage?: string; message?: string };\n if (\n sdkErr.name === 'SDKValidationError' ||\n sdkErr.name === 'SDKError' ||\n sdkErr.rawValue !== undefined ||\n sdkErr.rawMessage !== undefined\n ) {\n const friendlyMessage = sdkErr.rawMessage ?? sdkErr.message ?? 'Request failed';\n const wrapped = new MutagentError(\n 'REQUEST_FAILED',\n friendlyMessage,\n 'Check your input and try again. Run the command with --help for usage details.'\n );\n if (isJson) {\n console.log(JSON.stringify(wrapped.toJSON(), null, 2));\n } else {\n console.error(`Error: ${wrapped.message}`);\n if (wrapped.suggestion) {\n console.error(`Suggestion: ${wrapped.suggestion}`);\n }\n }\n process.exit(1);\n }\n }\n\n // Unknown error\n const message = error instanceof Error ? error.message : 'Unknown error';\n if (isJson) {\n console.log(JSON.stringify({ error: { code: 'UNKNOWN_ERROR', message } }, null, 2));\n } else {\n console.error(`Error: ${message}`);\n }\n process.exit(1);\n}\n",
10
10
  "import chalk from 'chalk';\nimport type { Command } from 'commander';\nimport type { OutputFormat } from '../types/index.js';\n\n/**\n * Safely extract the --json flag from Commander options chain.\n * Handles the `any` type from Commander's opts() method.\n */\nexport function getJsonFlag(command: Command | undefined): boolean {\n if (!command) return false;\n // Navigate up the parent chain to find the root command options\n \n const parentOpts = command.parent ? command.parent.opts() : null;\n \n const ownOpts = command.opts();\n \n return Boolean(parentOpts?.json ?? ownOpts.json);\n}\n\nexport class OutputFormatter {\n constructor(private format: OutputFormat) {}\n\n output(data: unknown): void {\n if (this.format === 'json') {\n console.log(JSON.stringify(data, null, 2));\n } else {\n this.formatTable(data);\n }\n }\n\n private formatTable(data: unknown): void {\n if (Array.isArray(data)) {\n this.formatArray(data);\n } else if (data && typeof data === 'object') {\n this.formatObject(data as Record<string, unknown>);\n } else {\n console.log(data);\n }\n }\n\n private formatArray(data: unknown[]): void {\n if (data.length === 0) {\n console.log(chalk.gray('No results'));\n return;\n }\n\n // Get columns from first item\n const firstItem = data[0];\n if (!firstItem || typeof firstItem !== 'object') {\n data.forEach(item => { console.log(` ${String(item)}`); });\n return;\n }\n\n const keys = Object.keys(firstItem);\n \n // Helper to convert any value to display string\n const toDisplayString = (val: unknown): string => {\n if (val === null || val === undefined) return '';\n if (typeof val === 'object') return JSON.stringify(val);\n if (typeof val === 'string') return val;\n if (typeof val === 'number' || typeof val === 'boolean' || typeof val === 'bigint') {\n return val.toString();\n }\n return JSON.stringify(val);\n };\n\n // Calculate column widths\n const widths: Record<string, number> = {};\n keys.forEach(key => {\n widths[key] = Math.max(\n key.length,\n ...data.map(item => toDisplayString((item as Record<string, unknown>)[key]).length)\n );\n });\n\n // Print header\n const header = keys.map(key => chalk.bold(key.toUpperCase().padEnd(widths[key] ?? 10))).join(' ');\n console.log(header);\n console.log(keys.map(key => '-'.repeat(widths[key] ?? 10)).join(' '));\n\n // Print rows\n data.forEach(item => {\n const row = keys.map(key => {\n const value = toDisplayString((item as Record<string, unknown>)[key]);\n const width = widths[key] ?? 10;\n return value.padEnd(width).slice(0, width);\n }).join(' ');\n console.log(row);\n });\n\n console.log(chalk.gray(`\\n${String(data.length)} result(s)`));\n }\n\n private formatObject(data: Record<string, unknown>): void {\n const maxKeyLength = Math.max(...Object.keys(data).map(k => k.length));\n\n Object.entries(data).forEach(([key, value]) => {\n const formattedKey = chalk.bold(key.padEnd(maxKeyLength));\n let formattedValue: string;\n\n if (value === null || value === undefined) {\n formattedValue = '';\n } else if (typeof value === 'object') {\n formattedValue = JSON.stringify(value, null, 2);\n } else if (typeof value === 'string') {\n formattedValue = value;\n } else if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {\n formattedValue = value.toString();\n } else {\n formattedValue = JSON.stringify(value);\n }\n\n console.log(`${formattedKey} ${formattedValue}`);\n });\n }\n\n success(message: string): void {\n if (this.format === 'json') {\n console.log(JSON.stringify({ success: true, message }, null, 2));\n } else {\n console.log(chalk.green(`✓ ${message}`));\n }\n }\n\n error(message: string): void {\n if (this.format === 'json') {\n console.log(JSON.stringify({ success: false, error: message }, null, 2));\n } else {\n console.log(chalk.red(`✗ ${message}`));\n }\n }\n\n info(message: string): void {\n if (this.format !== 'json') {\n console.log(chalk.blue(`ℹ ${message}`));\n }\n }\n\n warn(message: string): void {\n if (this.format === 'json') {\n console.log(JSON.stringify({ warning: message }, null, 2));\n } else {\n console.log(chalk.yellow(`⚠ ${message}`));\n }\n }\n}\n\ninterface Spinner {\n start: () => Promise<unknown> | undefined;\n stop?: () => void;\n succeed?: () => void;\n fail?: () => void;\n}\n\nexport function createSpinner(text: string, isJson: boolean): Spinner {\n if (isJson) {\n // No-op spinner for JSON mode - returns undefined to match interface\n const noop = (): undefined => undefined;\n return {\n start: noop,\n stop: noop,\n succeed: noop,\n fail: noop,\n };\n }\n\n // Dynamic import for ora (ESM)\n const start = async (): Promise<unknown> => {\n const { default: ora } = await import('ora');\n return ora(text).start();\n };\n\n return { start };\n}\n",
11
11
  "/**\n * Browser Authentication Flow for CLI\n *\n * Implements the CLI token-based browser authentication flow:\n * 1. Generate unique CLI token\n * 2. Call POST /api/auth/cli/init to register pending auth\n * 3. Open browser with auth URL\n * 4. Poll GET /api/auth/cli/status until completion/timeout/error\n * 5. Return credentials on success\n */\n\nimport { hostname, platform } from 'os';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface BrowserAuthOptions {\n /** API endpoint (e.g., https://api.mutagent.dev) */\n endpoint: string;\n /** Timeout in milliseconds (default: 5 minutes) */\n timeout?: number;\n /** Polling interval in milliseconds (default: 2 seconds) */\n pollInterval?: number;\n /** Skip opening browser (for test mode) */\n skipBrowserOpen?: boolean;\n}\n\nexport interface BrowserAuthResult {\n /** The workspace-scoped API key */\n apiKey: string;\n /** Workspace ID for the scoped key */\n workspaceId: string;\n /** Workspace name for display */\n workspaceName: string;\n /** Organization ID */\n organizationId: string;\n /** Organization name for display */\n organizationName: string;\n /** When the key expires (if applicable) */\n expiresAt?: string;\n}\n\nexport interface BrowserAuthInitResponse {\n /** URL to open in browser */\n authUrl: string;\n /** Expiration time in seconds */\n expiresIn: number;\n}\n\nexport type BrowserAuthStatus =\n | 'pending'\n | 'completed'\n | 'expired'\n | 'denied'\n | 'not_found';\n\nexport interface BrowserAuthStatusResponse {\n status: BrowserAuthStatus;\n apiKey?: string;\n workspaceId?: string;\n workspaceName?: string;\n organizationId?: string;\n organizationName?: string;\n expiresAt?: string;\n error?: string;\n}\n\n// =============================================================================\n// Browser Auth Implementation\n// =============================================================================\n\n/**\n * Generate a unique CLI token for authentication\n * Uses crypto.randomUUID for cryptographically secure random tokens\n */\nexport function generateCliToken(): string {\n return crypto.randomUUID();\n}\n\n/**\n * Initialize browser authentication flow with the server\n */\nexport async function initBrowserAuth(\n endpoint: string,\n cliToken: string\n): Promise<BrowserAuthInitResponse> {\n const response = await fetch(`${endpoint}/api/auth/cli/init`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n cliToken,\n hostname: hostname(),\n platform: platform(),\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new BrowserAuthError(\n 'INIT_FAILED',\n 'Failed to initialize browser auth: ' + String(response.status) + ' ' + errorText\n );\n }\n\n const data = (await response.json()) as BrowserAuthInitResponse;\n return data;\n}\n\n/**\n * Poll the server for authentication status\n */\nexport async function pollAuthStatus(\n endpoint: string,\n cliToken: string\n): Promise<BrowserAuthStatusResponse> {\n const response = await fetch(\n `${endpoint}/api/auth/cli/status?token=${encodeURIComponent(cliToken)}`\n );\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new BrowserAuthError(\n 'POLL_FAILED',\n 'Failed to poll auth status: ' + String(response.status) + ' ' + errorText\n );\n }\n\n const data = (await response.json()) as BrowserAuthStatusResponse;\n return data;\n}\n\n/**\n * Open a URL in the system's default browser\n * In test mode (MUTAGENT_TEST_MODE=true), outputs URL to stdout instead\n * In non-interactive mode, prints URL to stdout for AI agents to display\n */\nexport async function openBrowser(url: string): Promise<void> {\n // Test mode: output URL to stdout instead of opening browser\n if (process.env.MUTAGENT_TEST_MODE === 'true') {\n console.log(`AUTH_URL:${url}`);\n return;\n }\n\n // Dynamically import 'open' package\n try {\n const { default: open } = await import('open');\n await open(url);\n } catch {\n // If 'open' package is not available, provide manual instructions\n // In non-interactive mode, this is expected -- just print the URL\n throw new BrowserAuthError(\n 'BROWSER_OPEN_FAILED',\n `Could not open browser automatically. Please visit: ${url}`\n );\n }\n}\n\n/**\n * Sleep utility for polling\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Perform the complete browser authentication flow\n *\n * @param options - Browser auth options\n * @param onStatusUpdate - Optional callback for status updates (for spinners, etc.)\n * @returns Browser auth result with credentials\n */\nexport async function performBrowserAuth(\n options: BrowserAuthOptions,\n onStatusUpdate?: (message: string) => void\n): Promise<BrowserAuthResult> {\n const {\n endpoint,\n timeout = 300000, // 5 minutes default\n pollInterval = 2000, // 2 seconds default\n skipBrowserOpen = false,\n } = options;\n\n // 1. Generate unique CLI token\n const cliToken = generateCliToken();\n\n // 2. Register pending auth with server\n onStatusUpdate?.('Initializing browser authentication...');\n const initResponse = await initBrowserAuth(endpoint, cliToken);\n const { authUrl } = initResponse;\n\n // 3. Open browser (or output URL in test mode / non-interactive mode)\n if (!skipBrowserOpen) {\n onStatusUpdate?.('Opening browser for authentication...');\n try {\n await openBrowser(authUrl);\n } catch (error) {\n // If browser fails to open, continue but inform user\n // This is expected in non-interactive environments (CI, AI agents)\n if (error instanceof BrowserAuthError && error.code === 'BROWSER_OPEN_FAILED') {\n onStatusUpdate?.(error.message);\n } else {\n throw error;\n }\n }\n }\n\n // Always print the URL clearly for non-interactive environments (AI agents, CI)\n // This ensures the URL is visible even if the browser failed to open\n console.log('');\n console.log(' Open this URL to authenticate:');\n console.log('');\n console.log(' ' + authUrl);\n console.log('');\n\n // 4. Poll for completion\n onStatusUpdate?.('Waiting for browser authentication...');\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await sleep(pollInterval);\n\n const status = await pollAuthStatus(endpoint, cliToken);\n\n switch (status.status) {\n case 'pending':\n // Continue polling\n continue;\n\n case 'completed':\n // Success! Return credentials\n if (\n !status.apiKey ||\n !status.workspaceId ||\n !status.workspaceName ||\n !status.organizationId ||\n !status.organizationName\n ) {\n throw new BrowserAuthError(\n 'INCOMPLETE_RESPONSE',\n 'Server returned incomplete auth response'\n );\n }\n return {\n apiKey: status.apiKey,\n workspaceId: status.workspaceId,\n workspaceName: status.workspaceName,\n organizationId: status.organizationId,\n organizationName: status.organizationName,\n expiresAt: status.expiresAt,\n };\n\n case 'expired':\n throw new BrowserAuthError(\n 'AUTH_EXPIRED',\n 'Browser authentication expired. Please try again.'\n );\n\n case 'denied':\n throw new BrowserAuthError(\n 'AUTH_DENIED',\n status.error ?? 'Browser authentication was denied.'\n );\n\n case 'not_found':\n throw new BrowserAuthError(\n 'TOKEN_NOT_FOUND',\n 'Authentication token not found. Please try again.'\n );\n\n default:\n throw new BrowserAuthError(\n 'UNKNOWN_STATUS',\n 'Unknown auth status: ' + String(status.status)\n );\n }\n }\n\n // Timeout\n throw new BrowserAuthError(\n 'AUTH_TIMEOUT',\n 'Browser authentication timed out after 5 minutes. Please try again.'\n );\n}\n\n// =============================================================================\n// Error Classes\n// =============================================================================\n\nexport type BrowserAuthErrorCode =\n | 'INIT_FAILED'\n | 'POLL_FAILED'\n | 'BROWSER_OPEN_FAILED'\n | 'AUTH_EXPIRED'\n | 'AUTH_DENIED'\n | 'AUTH_TIMEOUT'\n | 'TOKEN_NOT_FOUND'\n | 'INCOMPLETE_RESPONSE'\n | 'UNKNOWN_STATUS';\n\nexport class BrowserAuthError extends Error {\n code: BrowserAuthErrorCode;\n\n constructor(code: BrowserAuthErrorCode, message: string) {\n super(message);\n this.name = 'BrowserAuthError';\n this.code = code;\n }\n\n /**\n * Get user-friendly suggestion based on error code\n */\n getSuggestion(): string {\n switch (this.code) {\n case 'INIT_FAILED':\n return 'Check your endpoint configuration and network connection.';\n case 'POLL_FAILED':\n return 'Check your network connection and try again.';\n case 'BROWSER_OPEN_FAILED':\n return 'Copy the URL above and open it manually in your browser.';\n case 'AUTH_EXPIRED':\n case 'AUTH_TIMEOUT':\n return 'Run \"mutagent auth login\" again to restart authentication.';\n case 'AUTH_DENIED':\n return 'Ensure you have access to the workspace and try again.';\n case 'TOKEN_NOT_FOUND':\n case 'INCOMPLETE_RESPONSE':\n case 'UNKNOWN_STATUS':\n return 'Please try again. If the issue persists, contact support.';\n default:\n return 'Please try again.';\n }\n }\n}\n",
12
12
  "import { Command } from 'commander';\nimport inquirer from 'inquirer';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { saveCredentials, saveFullCredentials, hasCredentials } from '../lib/config.js';\nimport { validateApiKey } from '../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { MutagentError } from '../lib/errors.js';\nimport { performBrowserAuth, BrowserAuthError } from '../lib/browser-auth.js';\n\ninterface LoginOptions {\n apiKey?: string;\n endpoint: string;\n browser?: boolean;\n nonInteractive?: boolean;\n}\n\ninterface AuthMethodAnswer {\n method: 'browser' | 'apiKey';\n}\n\ninterface LoginAnswers {\n apiKey: string;\n endpoint: string;\n}\n\n/**\n * Creates the top-level login command\n * Alias for `mutagent auth login`\n */\nexport function createLoginCommand(): Command {\n const login = new Command('login')\n .description('Login to MutagenT platform')\n .option('--api-key <key>', 'API key (non-interactive)')\n .option('--browser', 'Force browser-based authentication')\n .option('--non-interactive', 'Disable interactive prompts (auto-selects browser auth)')\n .option('--endpoint <url>', 'API endpoint', 'https://api.mutagent.io')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent login\n ${chalk.dim('$')} mutagent login --browser\n ${chalk.dim('$')} mutagent login --api-key <key>\n ${chalk.dim('$')} mutagent login --non-interactive ${chalk.dim('# Auto browser flow (AI agents)')}\n `)\n .action(async (options: LoginOptions) => {\n const isJson = getJsonFlag(login);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const apiKey: string | undefined = options.apiKey ?? process.env.MUTAGENT_API_KEY;\n const endpoint: string = process.env.MUTAGENT_ENDPOINT ?? options.endpoint;\n\n // If --api-key provided, use direct flow\n if (apiKey) {\n output.info('Validating API key...');\n const isValid = await validateApiKey(apiKey, endpoint);\n\n if (!isValid) {\n throw new MutagentError(\n 'INVALID_API_KEY',\n 'Invalid API key or endpoint',\n 'Check your API key and try again'\n );\n }\n\n saveCredentials(apiKey, endpoint);\n output.success('Logged in successfully');\n if (!isJson) {\n output.info(`Endpoint: ${endpoint}`);\n }\n return;\n }\n\n // Detect non-interactive environment\n const isNonInteractive =\n options.nonInteractive === true ||\n process.env.MUTAGENT_NON_INTERACTIVE === 'true' ||\n process.env.CI === 'true' ||\n !process.stdin.isTTY;\n\n // In JSON-only mode without API key, we cannot proceed at all\n if (isJson && !options.browser && isNonInteractive) {\n throw new MutagentError(\n 'INTERACTIVE_REQUIRED',\n 'No API key provided. Use --api-key flag, set MUTAGENT_API_KEY env var, or add --browser for browser auth.',\n 'Run: mutagent login --api-key <key> or mutagent login --browser --non-interactive'\n );\n }\n\n // Show welcome message for first-time users (only in interactive mode)\n if (!isNonInteractive && !hasCredentials()) {\n console.log('\\n' + chalk.bold.cyan(' Welcome to MutagenT CLI!') + '\\n');\n console.log(' No credentials found. Please authenticate to continue.\\n');\n }\n\n // Determine auth method\n let useBrowserAuth = options.browser === true;\n\n // In non-interactive mode, auto-select browser auth (skip the prompt menu)\n if (!useBrowserAuth && isNonInteractive) {\n output.info('Non-interactive environment detected. Using browser authentication.');\n useBrowserAuth = true;\n }\n\n if (!useBrowserAuth && !options.apiKey) {\n // Ask user which method to use (interactive only)\n const methodAnswer = await inquirer.prompt<AuthMethodAnswer>([\n {\n type: 'list',\n name: 'method',\n message: 'How would you like to authenticate?',\n choices: [\n {\n name: 'Login (opens browser)',\n value: 'browser',\n },\n {\n name: 'API Key (paste existing key)',\n value: 'apiKey',\n },\n ],\n },\n ]);\n\n useBrowserAuth = methodAnswer.method === 'browser';\n }\n\n if (useBrowserAuth) {\n // Browser authentication flow\n const spinner = ora({\n text: 'Opening browser for authentication...',\n spinner: 'dots',\n });\n\n try {\n spinner.start();\n\n const result = await performBrowserAuth(\n {\n endpoint,\n timeout: 300000,\n pollInterval: 2000,\n },\n (message) => {\n spinner.text = message;\n }\n );\n\n spinner.succeed('Logged in successfully!');\n\n // Save full credentials including workspace info\n saveFullCredentials({\n apiKey: result.apiKey,\n endpoint,\n workspaceId: result.workspaceId,\n organizationId: result.organizationId,\n });\n\n console.log('');\n if (result.workspaceName) {\n output.info(`Workspace: ${result.workspaceName}`);\n }\n if (result.organizationName) {\n output.info(`Organization: ${result.organizationName}`);\n }\n } catch (error) {\n spinner.fail('Authentication failed');\n\n if (error instanceof BrowserAuthError) {\n throw new MutagentError(\n error.code,\n error.message,\n error.getSuggestion()\n );\n }\n throw error;\n }\n } else {\n // API key flow\n const answers = await inquirer.prompt<LoginAnswers>([\n {\n type: 'password',\n name: 'apiKey',\n message: 'Enter your API key:',\n mask: '*',\n validate: (input: string): boolean | string => {\n if (!input || input.trim() === '') {\n return 'API key is required';\n }\n if (!input.startsWith('mg_')) {\n return 'API key should start with \"mg_\"';\n }\n return true;\n },\n },\n ]);\n\n output.info('Validating API key...');\n const isValid = await validateApiKey(answers.apiKey, endpoint);\n\n if (!isValid) {\n throw new MutagentError(\n 'INVALID_API_KEY',\n 'Invalid API key or endpoint',\n 'Check your API key and try again'\n );\n }\n\n saveCredentials(answers.apiKey, endpoint);\n output.success('Logged in successfully');\n output.info(`Endpoint: ${endpoint}`);\n }\n } catch (error) {\n if (error instanceof MutagentError) {\n output.error(error.message);\n if (error.suggestion && !isJson) {\n output.info(`Suggestion: ${error.suggestion}`);\n }\n process.exit(1);\n }\n throw error;\n }\n });\n\n return login;\n}\n",
13
- "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { readFileSync, existsSync } from 'fs';\nimport { getSDKClient } from '../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { MutagentError, ApiError, handleError } from '../lib/errors.js';\nimport { promptLinks, promptLink, datasetLink, evaluationLink, optimizerLink } from '../lib/ui-links.js';\nimport type { Prompt } from '../types/index.js';\n\n// Command option interfaces for type safety\ninterface ListOptions {\n limit: string;\n}\n\ninterface GetOptions {\n withDatasets?: boolean;\n withEvals?: boolean;\n}\n\ninterface CreateOptions {\n file?: string;\n rawFile?: string;\n name?: string;\n content?: string;\n // Prompt style flags\n raw?: string;\n system?: string;\n human?: string;\n messages?: string;\n}\n\ninterface UpdateOptions {\n file?: string;\n rawFile?: string;\n name?: string;\n content?: string;\n // Prompt style flags\n raw?: string;\n system?: string;\n human?: string;\n messages?: string;\n}\n\ninterface DeleteOptions {\n force?: boolean;\n}\n\ninterface DatasetAddOptions {\n file?: string;\n data?: string;\n name?: string;\n}\n\ninterface OptimizeStartOptions {\n dataset: string;\n maxIterations?: string;\n targetScore?: string;\n patience?: string;\n model?: string;\n evalModel?: string;\n}\n\ninterface EvaluationCreateOptions {\n name: string;\n file?: string;\n description?: string;\n dataset?: string;\n}\n\ninterface ConfirmAnswer {\n confirm: boolean;\n}\n\n// Prerequisites text for optimize start help\n//\n// [AI AGENT NOTICE] TEMPORARILY REMOVED: Provider pre-flight check (2026-02-10)\n// The `checkProviderConfigured()` function was removed from the optimize start handler.\n// It called `client.listProviders()` and threw MutagentError('NO_PROVIDER', ...) if empty.\n// This blocked optimization when the server uses internal credentials (USE_EXT_PROVIDERS=false).\n//\n// MUST RE-ADD LATER: When external provider flow is finalized, re-add the pre-flight check\n// but make it CONDITIONAL — e.g., query a `/api/config` endpoint to check if the server\n// requires external providers, and only block if USE_EXT_PROVIDERS=true on the server.\n// The server-side check in mutagent/src/modules/optimizations/index.ts still gates on\n// USE_EXT_PROVIDERS, so the API will return 422 if providers are required but not configured.\n//\n// Original function signature:\n// async function checkProviderConfigured(): Promise<void> {\n// const client = getSDKClient();\n// const providers = await client.listProviders();\n// if (providers.data.length === 0) {\n// throw new MutagentError('NO_PROVIDER', '...', '...');\n// }\n// }\n//\n// It was called at the top of the optimize start action: `await checkProviderConfigured();`\n//\nconst PREREQUISITES_TEXT = `\n${chalk.yellow('Prerequisites:')}\n 1. Evaluation criteria defined ${chalk.dim('(via dashboard or evaluation create)')}\n 2. Dataset uploaded ${chalk.dim('mutagent prompts dataset list <prompt-id>')}\n ${chalk.dim('Note: LLM provider config is only required when the server uses external providers (USE_EXT_PROVIDERS=true)')}`;\n\n/**\n * Parse API validation errors into human-readable messages.\n * The API returns structured errors like { message: '...', errors: [...] }\n */\nfunction parseValidationErrors(error: unknown): string[] {\n if (error instanceof ApiError) {\n try {\n const body = JSON.parse(error.message) as { errors?: { message?: string }[]; message?: string };\n if (body.errors && Array.isArray(body.errors)) {\n return body.errors.map((e: { message?: string }) => e.message ?? JSON.stringify(e));\n }\n if (body.message) {\n return [body.message];\n }\n } catch {\n // Not JSON, return the message as-is\n return [error.message];\n }\n }\n if (error instanceof Error) {\n return [error.message];\n }\n return ['An unknown error occurred'];\n}\n\n/**\n * Check if a prompt has an outputSchema defined.\n * Returns true if outputSchema is missing, null, undefined, or an empty object.\n */\nfunction isMissingOutputSchema(data: Partial<Prompt>): boolean {\n const schema = data.outputSchema;\n if (schema === null || schema === undefined) return true;\n if (typeof schema === 'object' && Object.keys(schema as Record<string, unknown>).length === 0) return true;\n return false;\n}\n\n/**\n * Warn when a prompt is created/updated without an outputSchema.\n * Optimization jobs require outputSchema to validate outputs.\n * Only warns, does not block the operation.\n */\nfunction warnMissingOutputSchema(output: OutputFormatter): void {\n output.warn(\n 'No outputSchema provided. Optimization jobs require an outputSchema to validate outputs. ' +\n 'Prompts without outputSchema cannot be optimized.'\n );\n}\n\n/**\n * Check prompt content for single-brace template variables and warn about\n * MutagenT's double-brace syntax. Only warns, does not block creation.\n */\nfunction warnSingleBraceVariables(content: string, output: OutputFormatter): void {\n // Match {word} but not {{word}} -- look for single braces not preceded/followed by another brace\n const singleBracePattern = /(?<!\\{)\\{([a-zA-Z_][a-zA-Z0-9_]*)\\}(?!\\})/g;\n const matches = [...content.matchAll(singleBracePattern)];\n if (matches.length > 0) {\n const variables = [...new Set(matches.map(m => m[1] ?? ''))];\n for (const variable of variables) {\n output.warn(`Found {${variable}} -- MutagenT uses {{${variable}}} syntax. Did you mean {{${variable}}}?`);\n }\n }\n}\n\n/**\n * Parse dataset file content based on format detection.\n * Supports JSON arrays, JSONL (one JSON object per line), and CSV passthrough.\n *\n * @param rawContent - The raw file content as a string\n * @param filePath - The file path (used for format detection and error messages)\n * @returns The parsed content as a JSON string suitable for the API\n */\nexport function parseDatasetFile(rawContent: string, filePath: string): string {\n const trimmed = rawContent.trim();\n\n // CSV files are passed through as-is (the API handles CSV parsing)\n if (filePath.endsWith('.csv')) {\n return rawContent;\n }\n\n // If content starts with '[', treat as JSON array\n if (trimmed.startsWith('[')) {\n try {\n const parsed: unknown = JSON.parse(trimmed);\n if (!Array.isArray(parsed)) {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Expected a JSON array in dataset file',\n 'Dataset JSON files should contain an array of objects: [{...}, {...}]'\n );\n }\n return trimmed;\n } catch (e) {\n if (e instanceof MutagentError) throw e;\n throw new MutagentError(\n 'INVALID_JSON',\n `Failed to parse JSON array from ${filePath}`,\n 'Ensure the file contains valid JSON. For line-delimited JSON, use .jsonl extension or put one object per line.'\n );\n }\n }\n\n // If content starts with '{' or doesn't start with '[', treat as JSONL\n // (one JSON object per line)\n const lines = trimmed.split('\\n').filter(line => line.trim().length > 0);\n const items: unknown[] = [];\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!line) continue;\n const trimmedLine = line.trim();\n try {\n items.push(JSON.parse(trimmedLine));\n } catch {\n throw new MutagentError(\n 'INVALID_JSONL',\n `Invalid JSON on line ${String(i + 1)} of ${filePath}`,\n `Each line must be valid JSON. Problem line: \"${trimmedLine.substring(0, 80)}${trimmedLine.length > 80 ? '...' : ''}\"`\n );\n }\n }\n\n return JSON.stringify(items);\n}\n\nexport function createPromptsCommand(): Command {\n const prompts = new Command('prompts')\n .description('Manage prompts, datasets, evaluations, and optimizations')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts list\n ${chalk.dim('$')} mutagent prompts get <prompt-id>\n ${chalk.dim('$')} mutagent prompts create --file prompt.json\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id>\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"My Eval\"\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id>\n\nSubcommands:\n list, get, create, update, delete\n dataset list|add|remove\n evaluation list|create|results\n optimize start|status|results\n `);\n\n // =========================================================================\n // PROMPT CRUD\n // =========================================================================\n\n // List prompts\n prompts\n .command('list')\n .description('List all prompts')\n .option('-l, --limit <n>', 'Limit results', '50')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts list\n ${chalk.dim('$')} mutagent prompts list --limit 10\n ${chalk.dim('$')} mutagent prompts list --json\n\n${chalk.dim('Tip: Use --json for machine-readable output (AI agents, CI pipelines).')}\n `)\n .action(async (options: ListOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const promptsList = await client.listPrompts();\n\n // Limit results\n const limit = parseInt(options.limit, 10) || 50;\n const limited = promptsList.slice(0, limit);\n\n if (isJson) {\n const withLinks = limited.map((p: Prompt) => ({\n ...p,\n _links: promptLinks(p.id),\n }));\n output.output(withLinks);\n } else {\n // Format for table\n const formatted = limited.map((p: Prompt) => ({\n id: p.id,\n name: p.name,\n version: p.version,\n updated: p.updatedAt ? new Date(p.updatedAt).toLocaleDateString() : 'N/A',\n url: promptLink(p.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get prompt\n prompts\n .command('get')\n .description('Get prompt details with nested data')\n .argument('<id>', 'Prompt ID (from: mutagent prompts list)')\n .option('--with-datasets', 'Include datasets')\n .option('--with-evals', 'Include evaluations')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts get <id>\n ${chalk.dim('$')} mutagent prompts get <id> --with-datasets --with-evals\n ${chalk.dim('$')} mutagent prompts get <id> --json\n\n${chalk.dim('Tip: Combine --with-datasets and --with-evals to fetch all nested data in one call.')}\n `)\n .action(async (id: string, options: GetOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const prompt = await client.getPrompt(id);\n\n const result: Record<string, unknown> = { ...prompt };\n\n if (options.withDatasets) {\n const datasets = await client.listDatasets(id);\n result.datasets = datasets;\n }\n\n if (options.withEvals) {\n const evals = await client.listEvaluations(id);\n result.evaluations = evals;\n }\n\n if (isJson) {\n result._links = promptLinks(id);\n }\n output.output(result);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Create prompt\n prompts\n .command('create')\n .description('Create a new prompt')\n .option('-f, --file <path>', 'Create from JSON file')\n .option('--raw-file <path>', 'Create from plain text file (used as rawPrompt)')\n .option('-n, --name <name>', 'Prompt name')\n .option('-c, --content <content>', 'Prompt content (rawPrompt) [DEPRECATED: use --raw]')\n .option('-r, --raw <text>', 'Raw prompt text (single prompt)')\n .option('--system <text>', 'System prompt (use with --human)')\n .option('--human <text>', 'Human prompt (use with --system)')\n .option('--messages <json>', 'Messages array as JSON (e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\')')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts create --name \"my-prompt\" --system \"You are helpful\" --human \"Hello\"\n ${chalk.dim('$')} mutagent prompts create --name \"raw-prompt\" --raw \"Summarize: {{text}}\"\n ${chalk.dim('$')} mutagent prompts create --file prompt.json\n ${chalk.dim('$')} mutagent prompts create --name \"chat\" --messages '[{\"role\":\"system\",\"content\":\"...\"}]'\n ${chalk.dim('$')} mutagent prompts create --name \"from-file\" --raw-file prompt.txt\n\nPrompt Input Methods (pick one):\n --system/--human Structured system + user message pair\n --raw Single raw prompt text with {{variables}}\n --raw-file Load plain text file as raw prompt\n --messages Full messages array as JSON\n --file Load from JSON file (full prompt object)\n\n${chalk.dim('Hint: Use --file with JSON or --raw-file for plain text. Get prompt IDs: mutagent prompts list')}\n `)\n .action(async (options: CreateOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n let data: Partial<Prompt>;\n\n if (options.file) {\n const content = readFileSync(options.file, 'utf-8');\n data = JSON.parse(content) as Partial<Prompt>;\n } else if (options.rawFile) {\n // --raw-file: read plain text file as rawPrompt\n if (!existsSync(options.rawFile)) {\n throw new MutagentError(\n 'FILE_NOT_FOUND',\n `File not found: ${options.rawFile}`,\n 'Check the file path and try again'\n );\n }\n const textContent = readFileSync(options.rawFile, 'utf-8');\n data = {\n name: options.name ?? options.rawFile.replace(/^.*[\\\\/]/, '').replace(/\\.[^.]+$/, ''),\n rawPrompt: textContent,\n };\n } else if (options.name) {\n // Handle different prompt style formats\n data = { name: options.name };\n\n // Priority: messages > system+human > raw > content (deprecated)\n if (options.messages) {\n // Messages format: JSON array of messages\n try {\n const messages = JSON.parse(options.messages) as { role: string; content: string }[];\n // Extract system and human prompts from messages array\n const systemMsg = messages.find(m => m.role === 'system');\n const humanMsg = messages.find(m => m.role === 'user' || m.role === 'human');\n if (systemMsg) data.systemPrompt = systemMsg.content;\n if (humanMsg) data.humanPrompt = humanMsg.content;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --messages flag',\n 'Provide a valid JSON array, e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\''\n );\n }\n } else if (options.system ?? options.human) {\n // Human/System format\n if (options.system) data.systemPrompt = options.system;\n if (options.human) data.humanPrompt = options.human;\n } else if (options.raw) {\n // Raw prompt format\n data.rawPrompt = options.raw;\n } else if (options.content) {\n // Deprecated --content flag (backwards compatibility)\n data.rawPrompt = options.content;\n } else {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Prompt content required',\n 'Use --raw, --raw-file, --system/--human, or --messages to specify prompt content'\n );\n }\n } else {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Either --file, --raw-file, or --name with prompt content is required',\n 'Use --file to load from JSON, --raw-file for plain text, or provide --name with --raw, --system/--human, or --messages'\n );\n }\n\n // Warn about single-brace template variables (Task 7e)\n const promptContent = data.rawPrompt ?? data.systemPrompt ?? data.humanPrompt ?? '';\n if (promptContent && !isJson) {\n warnSingleBraceVariables(promptContent, output);\n }\n\n // Warn if no outputSchema is provided (required for optimization)\n if (isMissingOutputSchema(data)) {\n warnMissingOutputSchema(output);\n }\n\n const client = getSDKClient();\n const prompt = await client.createPrompt(data);\n\n if (isJson) {\n output.output({ ...prompt, _links: promptLinks(prompt.id) });\n } else {\n output.success(`Created prompt: ${prompt.name}`);\n output.output(prompt);\n output.info(`View: ${promptLink(prompt.id)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Update prompt\n prompts\n .command('update')\n .description('Update a prompt')\n .argument('<id>', 'Prompt ID (from: mutagent prompts list)')\n .option('-f, --file <path>', 'Update from JSON file')\n .option('--raw-file <path>', 'Update from plain text file (used as rawPrompt)')\n .option('-n, --name <name>', 'New name')\n .option('-c, --content <content>', 'New content (rawPrompt) [DEPRECATED: use --raw]')\n .option('-r, --raw <text>', 'Raw prompt text (single prompt)')\n .option('--system <text>', 'System prompt (use with --human)')\n .option('--human <text>', 'Human prompt (use with --system)')\n .option('--messages <json>', 'Messages array as JSON (e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\')')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts update <id> --name \"new-name\"\n ${chalk.dim('$')} mutagent prompts update <id> --system \"Updated system prompt\"\n ${chalk.dim('$')} mutagent prompts update <id> --raw-file updated-prompt.txt\n ${chalk.dim('$')} mutagent prompts update <id> --file updated-prompt.json\n ${chalk.dim('$')} mutagent prompts update <id> --json\n `)\n .action(async (id: string, options: UpdateOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n let data: Partial<Prompt> = {};\n\n if (options.file) {\n const content = readFileSync(options.file, 'utf-8');\n data = JSON.parse(content) as Partial<Prompt>;\n } else if (options.rawFile) {\n // --raw-file: read plain text file as rawPrompt\n if (!existsSync(options.rawFile)) {\n throw new MutagentError(\n 'FILE_NOT_FOUND',\n `File not found: ${options.rawFile}`,\n 'Check the file path and try again'\n );\n }\n const textContent = readFileSync(options.rawFile, 'utf-8');\n data.rawPrompt = textContent;\n if (options.name) data.name = options.name;\n } else {\n if (options.name) data.name = options.name;\n\n // Handle different prompt style formats\n // Priority: messages > system+human > raw > content (deprecated)\n if (options.messages) {\n // Messages format: JSON array of messages\n try {\n const messages = JSON.parse(options.messages) as { role: string; content: string }[];\n // Extract system and human prompts from messages array\n const systemMsg = messages.find(m => m.role === 'system');\n const humanMsg = messages.find(m => m.role === 'user' || m.role === 'human');\n if (systemMsg) data.systemPrompt = systemMsg.content;\n if (humanMsg) data.humanPrompt = humanMsg.content;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --messages flag',\n 'Provide a valid JSON array, e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\''\n );\n }\n } else if (options.system ?? options.human) {\n // Human/System format\n if (options.system) data.systemPrompt = options.system;\n if (options.human) data.humanPrompt = options.human;\n } else if (options.raw) {\n // Raw prompt format\n data.rawPrompt = options.raw;\n } else if (options.content) {\n // Deprecated --content flag (backwards compatibility)\n data.rawPrompt = options.content;\n }\n }\n\n if (Object.keys(data).length === 0) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'No update data provided',\n 'Use --file, --raw-file, --name, --raw, --system/--human, or --messages'\n );\n }\n\n // Warn about single-brace template variables (Task 7e)\n const promptContent = data.rawPrompt ?? data.systemPrompt ?? data.humanPrompt ?? '';\n if (promptContent && !isJson) {\n warnSingleBraceVariables(promptContent, output);\n }\n\n // Warn if updating from a full file that lacks outputSchema\n if (options.file && isMissingOutputSchema(data)) {\n warnMissingOutputSchema(output);\n }\n\n const client = getSDKClient();\n const prompt = await client.updatePrompt(id, data);\n\n if (isJson) {\n output.output({ ...prompt, _links: promptLinks(prompt.id) });\n } else {\n output.success(`Updated prompt: ${prompt.name}`);\n output.output(prompt);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Delete prompt\n prompts\n .command('delete')\n .description('Delete a prompt')\n .argument('<id>', 'Prompt ID (from: mutagent prompts list)')\n .option('--force', 'Skip confirmation')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts delete <id>\n ${chalk.dim('$')} mutagent prompts delete <id> --force\n ${chalk.dim('$')} mutagent prompts delete <id> --force --json\n\n${chalk.dim('Tip: Use --force to skip confirmation (required for non-interactive/CI usage).')}\n `)\n .action(async (id: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n if (!options.force && !isJson) {\n const inquirer = (await import('inquirer')).default;\n const answers = await inquirer.prompt<ConfirmAnswer>([{\n type: 'confirm',\n name: 'confirm',\n message: `Delete prompt ${id}?`,\n default: false,\n }]);\n\n if (!answers.confirm) {\n output.info('Cancelled');\n return;\n }\n }\n\n const client = getSDKClient();\n await client.deletePrompt(id);\n\n output.success(`Deleted prompt: ${id}`);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // =========================================================================\n // DATASET subcommand group (mutagent prompts dataset ...)\n // =========================================================================\n const dataset = prompts\n .command('dataset')\n .description('Manage datasets for prompts')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id>\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> --file dataset.jsonl\n ${chalk.dim('$')} mutagent prompts dataset remove <prompt-id> <dataset-id>\n `);\n\n // List datasets\n dataset\n .command('list')\n .description('List datasets for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id>\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id> --json\n `)\n .action(async (promptId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const datasets = await client.listDatasets(promptId);\n\n if (isJson) {\n const withLinks = datasets.map((d) => ({\n ...d,\n _links: { view: datasetLink(promptId, d.id) },\n }));\n output.output(withLinks);\n } else {\n const formatted = datasets.map((d) => ({\n ...d,\n url: datasetLink(promptId, d.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Add dataset\n dataset\n .command('add')\n .description('Add dataset to a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .option('-f, --file <path>', 'Dataset file (JSON array, JSONL, or CSV)')\n .option('-d, --data <json>', 'Inline JSON array of dataset items')\n .option('-n, --name <name>', 'Dataset name (default: timestamped)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> --file dataset.json\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> --file dataset.jsonl --name \"My Dataset\"\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> --file dataset.csv\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> -d '[{\"input\":{\"text\":\"hello\"},\"expectedOutput\":{\"result\":\"world\"}}]'\n\nSupported file formats:\n ${chalk.dim('.json')} JSON array of objects: [{\"input\": {...}, \"expectedOutput\": {...}}, ...]\n ${chalk.dim('.jsonl')} One JSON object per line (newline-delimited JSON)\n ${chalk.dim('.csv')} Comma-separated values with header row\n\nInline data format (-d):\n JSON array of objects, e.g.:\n ${chalk.dim('[{\"input\": {\"text\": \"hello\"}, \"expectedOutput\": {\"result\": \"world\"}}]')}\n\n${chalk.dim('Note: --file and -d are mutually exclusive. Provide one or the other.')}\n `)\n .action(async (promptId: string, options: DatasetAddOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n if (options.file && options.data) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n 'Cannot use both --file and -d/--data',\n 'Use --file to upload from a file or -d to provide inline JSON data, not both'\n );\n }\n\n if (!options.file && !options.data) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Either --file or -d/--data is required',\n 'Use --file <path> to upload from a file or -d \\'[{...}]\\' for inline JSON data'\n );\n }\n\n let content: string;\n\n if (options.data) {\n // Inline JSON data - validate it parses as an array\n try {\n const parsed: unknown = JSON.parse(options.data);\n if (!Array.isArray(parsed)) {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Inline data must be a JSON array',\n 'Provide a JSON array, e.g., \\'[{\"input\": {...}, \"expectedOutput\": {...}}]\\''\n );\n }\n content = options.data;\n } catch (e) {\n if (e instanceof MutagentError) throw e;\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in -d/--data flag',\n 'Provide a valid JSON array, e.g., \\'[{\"input\": {...}, \"expectedOutput\": {...}}]\\''\n );\n }\n } else {\n // File-based upload (options.file is guaranteed by the check above)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const filePath = options.file!;\n const rawContent = readFileSync(filePath, 'utf-8');\n content = parseDatasetFile(rawContent, filePath);\n }\n\n const client = getSDKClient();\n const datasetResult = await client.addDataset(promptId, content, options.name);\n\n if (!isJson) {\n output.success(`Added dataset \"${datasetResult.name}\" to prompt: ${promptId}`);\n if (datasetResult.itemCount !== undefined && datasetResult.itemCount > 0) {\n output.info(`Items uploaded: ${String(datasetResult.itemCount)}`);\n }\n }\n output.output(datasetResult);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Remove dataset\n dataset\n .command('remove')\n .description('Remove dataset from a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .argument('<dataset-id>', 'Dataset ID (from: mutagent prompts dataset list <prompt-id>)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset remove <prompt-id> <dataset-id>\n ${chalk.dim('$')} mutagent prompts dataset remove <prompt-id> <dataset-id> --json\n `)\n .action(async (promptId: string, datasetId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n await client.removeDataset(promptId, datasetId);\n output.success(`Removed dataset ${datasetId} from prompt ${promptId}`);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // =========================================================================\n // EVALUATION subcommand group (mutagent prompts evaluation ...)\n // =========================================================================\n const evaluation = prompts\n .command('evaluation')\n .description('Manage evaluations for prompts')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id>\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"My Eval\"\n ${chalk.dim('$')} mutagent prompts evaluation results <run-id>\n `);\n\n // List evaluations\n evaluation\n .command('list')\n .description('List evaluations for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id>\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id> --json\n `)\n .action(async (promptId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const evals = await client.listEvaluations(promptId);\n\n if (isJson) {\n const withLinks = evals.map((e) => ({\n ...e,\n _links: { view: evaluationLink(promptId, e.id) },\n }));\n output.output(withLinks);\n } else {\n const formatted = evals.map((e) => ({\n ...e,\n url: evaluationLink(promptId, e.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Create evaluation\n evaluation\n .command('create')\n .description('Create an evaluation configuration for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .requiredOption('-n, --name <name>', 'Evaluation name')\n .option('-f, --file <path>', 'Load evaluation criteria from JSON file')\n .option('--description <text>', 'Evaluation description')\n .option('-d, --dataset <id>', 'Dataset ID to associate (from: mutagent prompts dataset list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"Accuracy Check\"\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"Full Eval\" --file criteria.json --dataset <dataset-id>\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"QA\" --description \"Quality assurance eval\" --json\n\nCriteria file format (--file):\n ${chalk.dim('{ \"evalConfig\": { \"criteria\": [...] }, \"llmConfig\": { \"model\": \"gpt-4\" } }')}\n\n${chalk.dim('AI Agent Hint: Create an evaluation before running it. Use --file to load criteria from JSON.')}\n${chalk.dim('Get prompt IDs: mutagent prompts list | Get dataset IDs: mutagent prompts dataset list <prompt-id>')}\n `)\n .action(async (promptId: string, options: EvaluationCreateOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const evalData: {\n name: string;\n description?: string;\n datasetId?: number;\n evalConfig?: Record<string, unknown>;\n llmConfig?: Record<string, unknown>;\n tags?: string[];\n metadata?: Record<string, unknown>;\n } = {\n name: options.name,\n description: options.description,\n };\n\n // Load criteria from file if provided\n if (options.file) {\n if (!existsSync(options.file)) {\n throw new MutagentError(\n 'FILE_NOT_FOUND',\n `File not found: ${options.file}`,\n 'Check the file path and try again'\n );\n }\n const fileContent = readFileSync(options.file, 'utf-8');\n try {\n const parsed = JSON.parse(fileContent) as Record<string, unknown>;\n if (parsed.evalConfig) evalData.evalConfig = parsed.evalConfig as Record<string, unknown>;\n if (parsed.llmConfig) evalData.llmConfig = parsed.llmConfig as Record<string, unknown>;\n if (parsed.tags) evalData.tags = parsed.tags as string[];\n if (parsed.metadata) evalData.metadata = parsed.metadata as Record<string, unknown>;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n `Failed to parse criteria file: ${options.file}`,\n 'Ensure the file contains valid JSON with evalConfig and/or llmConfig'\n );\n }\n }\n\n // Associate dataset if provided\n if (options.dataset) {\n evalData.datasetId = parseInt(options.dataset, 10);\n if (isNaN(evalData.datasetId)) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Invalid dataset ID: ${options.dataset}`,\n 'Dataset ID must be a number. Get IDs with: mutagent prompts dataset list <prompt-id>'\n );\n }\n }\n\n const client = getSDKClient();\n const evalResult = await client.createEvaluation(promptId, evalData);\n\n if (isJson) {\n output.output({\n ...evalResult,\n _links: { view: evaluationLink(promptId, evalResult.id) },\n });\n } else {\n output.success(`Created evaluation: ${evalResult.name}`);\n output.output(evalResult);\n output.info(`View: ${evaluationLink(promptId, evalResult.id)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get evaluation results\n evaluation\n .command('results')\n .description('Get evaluation results')\n .argument('<run-id>', 'Evaluation run ID (from: mutagent prompts evaluation list <prompt-id>)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation results <run-id>\n ${chalk.dim('$')} mutagent prompts evaluation results <run-id> --json\n `)\n .action(async (runId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const results = await client.getEvaluationResults(runId);\n output.output(results);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // =========================================================================\n // OPTIMIZE subcommand group (mutagent prompts optimize ...)\n // =========================================================================\n const optimize = prompts\n .command('optimize')\n .description('Manage prompt optimization jobs')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id>\n ${chalk.dim('$')} mutagent prompts optimize status <job-id>\n ${chalk.dim('$')} mutagent prompts optimize results <job-id>\n\nWorkflow: start -> status (poll) -> results\n `);\n\n // Start optimization\n optimize\n .command('start')\n .description('Start prompt optimization')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .requiredOption('-d, --dataset <id>', 'Dataset ID for optimization (from: mutagent prompts dataset list <prompt-id>)')\n .option('--max-iterations <n>', 'Max optimization iterations (default: 3)')\n .option('--target-score <n>', 'Target accuracy 0-1 (e.g., 0.9)')\n .option('--patience <n>', 'Iterations without improvement before stopping')\n .option('--model <model-id>', 'Target LLM model (e.g., \"claude-sonnet-4-5-20250929\")')\n .option('--eval-model <model-id>', 'Evaluation model (defaults to target model)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id>\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --max-iterations 5\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --target-score 0.95 --model claude-sonnet-4-5-20250929\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --json\n${PREREQUISITES_TEXT}\n\n${chalk.dim('Monitor progress with: mutagent prompts optimize status <job-id>')}\n `)\n .action(async (promptId: string, options: OptimizeStartOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // [AI AGENT NOTICE] TEMPORARILY REMOVED: `await checkProviderConfigured();` was here.\n // See comment block above PREREQUISITES_TEXT for full context and re-add instructions.\n const client = getSDKClient();\n\n // Pre-flight: check if the prompt has an outputSchema before starting optimization\n try {\n const promptData = await client.getPrompt(promptId);\n if (isMissingOutputSchema(promptData)) {\n output.warn(\n 'This prompt has no outputSchema defined. Optimization jobs require an outputSchema to validate outputs. ' +\n 'The job may fail at the dataset analysis stage. ' +\n 'Add an outputSchema via: mutagent prompts update ' + promptId + ' --file prompt-with-schema.json'\n );\n }\n } catch {\n // Non-blocking: if we can't fetch the prompt, continue with optimization\n // The server will validate and return appropriate errors\n }\n\n const job = await client.startOptimization(promptId, options.dataset, {\n maxIterations: options.maxIterations ? parseInt(options.maxIterations, 10) : undefined,\n targetScore: options.targetScore ? parseFloat(options.targetScore) : undefined,\n patience: options.patience ? parseInt(options.patience, 10) : undefined,\n model: options.model,\n evalModel: options.evalModel,\n });\n\n if (isJson) {\n output.output({ ...job, _links: { optimizer: optimizerLink(job.jobId) } });\n } else {\n output.success(`Started optimization job: ${job.jobId}`);\n output.output(job);\n output.info(`Monitor: ${optimizerLink(job.jobId)}`);\n }\n } catch (error) {\n // Enhanced error handling: parse validation errors for actionable messages\n if (error instanceof ApiError) {\n const messages = parseValidationErrors(error);\n if (!isJson) {\n console.error(chalk.red('Optimization failed. Missing requirements:'));\n for (const msg of messages) {\n console.error(chalk.red(` - ${msg}`));\n }\n console.error('');\n console.error(PREREQUISITES_TEXT);\n }\n }\n handleError(error, isJson);\n }\n });\n\n // Optimization status\n optimize\n .command('status')\n .description('Check optimization status')\n .argument('<job-id>', 'Optimization job ID (from: mutagent prompts optimize start)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize status <job-id>\n ${chalk.dim('$')} mutagent prompts optimize status <job-id> --json\n `)\n .action(async (jobId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const status = await client.getOptimizationStatus(jobId);\n\n if (isJson) {\n output.output({ ...status, _links: { optimizer: optimizerLink(jobId) } });\n } else {\n const progress = status.progressPercent;\n const filled = Math.floor(progress / 10);\n const progressBar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(10 - filled);\n output.info(`Progress: [${progressBar}] ${String(progress)}%`);\n output.output(status);\n output.info(`View: ${optimizerLink(jobId)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Optimization results\n optimize\n .command('results')\n .description('Get optimization results')\n .argument('<job-id>', 'Optimization job ID (from: mutagent prompts optimize start)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize results <job-id>\n ${chalk.dim('$')} mutagent prompts optimize results <job-id> --json\n `)\n .action(async (jobId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const results = await client.getOptimizationResults(jobId);\n\n if (isJson) {\n output.output({ ...results as object, _links: { optimizer: optimizerLink(jobId) } });\n } else {\n output.output(results);\n output.info(`View: ${optimizerLink(jobId)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return prompts;\n}\n",
14
- "/**\n * @fileoverview Centralized UI deep link generation for MutagenT CLI\n * @module @mutagent/cli/lib/ui-links\n *\n * Generates clickable URLs that link to the MutagenT web UI for\n * viewing/editing resources. Used across all CLI commands that\n * list or fetch resources.\n *\n * The dashboard is a single page with tabs (Prompts, Evaluations, Datasets),\n * not separate routes per entity type.\n */\n\n/**\n * Get the base URL for the MutagenT web application.\n * Reads from MUTAGENT_APP_URL env var, falling back to production URL.\n */\nexport function getAppBaseUrl(): string {\n return process.env.MUTAGENT_APP_URL ?? 'https://app.mutagent.io';\n}\n\n/**\n * Generate a link to view a prompt in the dashboard.\n * The dashboard is at /prompts/dashboard with prompt detail in a tab/panel.\n */\nexport function promptLink(id: string | number): string {\n return `${getAppBaseUrl()}/prompts/dashboard?prompt=${String(id)}`;\n}\n\n/**\n * Generate a link to the prompts dashboard (Datasets tab).\n */\nexport function promptDatasetsLink(promptId: string | number): string {\n return `${getAppBaseUrl()}/prompts/dashboard?prompt=${String(promptId)}&tab=datasets`;\n}\n\n/**\n * Generate a link to the prompts dashboard (Evaluations tab).\n */\nexport function promptEvaluationsLink(promptId: string | number): string {\n return `${getAppBaseUrl()}/prompts/dashboard?prompt=${String(promptId)}&tab=evaluations`;\n}\n\n/**\n * Generate a link to a specific dataset within the dashboard.\n */\nexport function datasetLink(promptId: string | number, datasetId: string | number): string {\n return `${getAppBaseUrl()}/prompts/dashboard?prompt=${String(promptId)}&tab=datasets&dataset=${String(datasetId)}`;\n}\n\n/**\n * Generate a link to a specific evaluation within the dashboard.\n */\nexport function evaluationLink(promptId: string | number, evalId: string | number): string {\n return `${getAppBaseUrl()}/prompts/dashboard?prompt=${String(promptId)}&tab=evaluations&eval=${String(evalId)}`;\n}\n\n/**\n * Generate a link to view a trace in the UI.\n */\nexport function traceLink(id: string): string {\n return `${getAppBaseUrl()}/traces/${id}`;\n}\n\n/**\n * Generate a link to the optimizer page, optionally for a specific job.\n */\nexport function optimizerLink(jobId?: string): string {\n const base = `${getAppBaseUrl()}/prompts/optimizer`;\n return jobId ? `${base}?job=${jobId}` : base;\n}\n\n/**\n * Generate a link to the playground page.\n */\nexport function playgroundLink(): string {\n return `${getAppBaseUrl()}/prompts/playground`;\n}\n\n/**\n * Generate a link to the provider settings page.\n */\nexport function providerSettingsLink(): string {\n return `${getAppBaseUrl()}/settings/providers`;\n}\n\n/**\n * Generate the standard _links object for a prompt resource.\n */\nexport function promptLinks(promptId: string | number): { view: string; datasets: string; evaluations: string } {\n return {\n view: promptLink(promptId),\n datasets: promptDatasetsLink(promptId),\n evaluations: promptEvaluationsLink(promptId),\n };\n}\n",
13
+ "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { readFileSync, existsSync } from 'fs';\nimport { getSDKClient } from '../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { MutagentError, ApiError, handleError } from '../lib/errors.js';\nimport {\n promptLinks, promptLink, datasetLink, evaluationLink, optimizerLink,\n datasetLinks, evaluationLinks, formatCreationHints,\n} from '../lib/ui-links.js';\nimport {\n isValidJsonSchema, buildSchemaFromVariables, formatSchemaWarning,\n SUPPORTED_SCHEMA_TYPES,\n} from '../lib/schema-helpers.js';\nimport type { Prompt } from '../types/index.js';\nimport type { SchemaVariable, SupportedSchemaType } from '../lib/schema-helpers.js';\n\n// Command option interfaces for type safety\ninterface ListOptions {\n limit: string;\n}\n\ninterface GetOptions {\n withDatasets?: boolean;\n withEvals?: boolean;\n}\n\ninterface CreateOptions {\n file?: string;\n rawFile?: string;\n name?: string;\n content?: string;\n // Prompt style flags\n raw?: string;\n system?: string;\n human?: string;\n messages?: string;\n}\n\ninterface UpdateOptions {\n file?: string;\n rawFile?: string;\n name?: string;\n content?: string;\n // Prompt style flags\n raw?: string;\n system?: string;\n human?: string;\n messages?: string;\n}\n\ninterface DeleteOptions {\n force?: boolean;\n}\n\ninterface DatasetAddOptions {\n file?: string;\n data?: string;\n name?: string;\n}\n\ninterface OptimizeStartOptions {\n dataset: string;\n maxIterations?: string;\n targetScore?: string;\n patience?: string;\n model?: string;\n evalModel?: string;\n}\n\ninterface EvaluationCreateOptions {\n name: string;\n file?: string;\n description?: string;\n dataset?: string;\n}\n\ninterface ConfirmAnswer {\n confirm: boolean;\n}\n\n// Prerequisites text for optimize start help\n//\n// [AI AGENT NOTICE] TEMPORARILY REMOVED: Provider pre-flight check (2026-02-10)\n// The `checkProviderConfigured()` function was removed from the optimize start handler.\n// It called `client.listProviders()` and threw MutagentError('NO_PROVIDER', ...) if empty.\n// This blocked optimization when the server uses internal credentials (USE_EXT_PROVIDERS=false).\n//\n// MUST RE-ADD LATER: When external provider flow is finalized, re-add the pre-flight check\n// but make it CONDITIONAL — e.g., query a `/api/config` endpoint to check if the server\n// requires external providers, and only block if USE_EXT_PROVIDERS=true on the server.\n// The server-side check in mutagent/src/modules/optimizations/index.ts still gates on\n// USE_EXT_PROVIDERS, so the API will return 422 if providers are required but not configured.\n//\n// Original function signature:\n// async function checkProviderConfigured(): Promise<void> {\n// const client = getSDKClient();\n// const providers = await client.listProviders();\n// if (providers.data.length === 0) {\n// throw new MutagentError('NO_PROVIDER', '...', '...');\n// }\n// }\n//\n// It was called at the top of the optimize start action: `await checkProviderConfigured();`\n//\nconst PREREQUISITES_TEXT = `\n${chalk.yellow('Prerequisites:')}\n 1. Evaluation criteria defined ${chalk.dim('(via dashboard or evaluation create)')}\n 2. Dataset uploaded ${chalk.dim('mutagent prompts dataset list <prompt-id>')}\n ${chalk.dim('Note: LLM provider config is only required when the server uses external providers (USE_EXT_PROVIDERS=true)')}`;\n\n/**\n * Parse API validation errors into human-readable messages.\n * The API returns structured errors like { message: '...', errors: [...] }\n */\nfunction parseValidationErrors(error: unknown): string[] {\n if (error instanceof ApiError) {\n try {\n const body = JSON.parse(error.message) as { errors?: { message?: string }[]; message?: string };\n if (body.errors && Array.isArray(body.errors)) {\n return body.errors.map((e: { message?: string }) => e.message ?? JSON.stringify(e));\n }\n if (body.message) {\n return [body.message];\n }\n } catch {\n // Not JSON, return the message as-is\n return [error.message];\n }\n }\n if (error instanceof Error) {\n return [error.message];\n }\n return ['An unknown error occurred'];\n}\n\n/**\n * Check if an inputSchema or outputSchema is effectively empty.\n * Returns true if the value is undefined, null, an empty object {}, or\n * an object with no \"properties\" key (which means no defined variables).\n */\nfunction isSchemaEmpty(schema: unknown): boolean {\n if (schema === undefined || schema === null) return true;\n if (typeof schema !== 'object') return false;\n const obj = schema as Record<string, unknown>;\n // Empty object {}\n if (Object.keys(obj).length === 0) return true;\n return false;\n}\n\n/**\n * Warn about missing, empty, or structurally invalid inputSchema/outputSchema.\n * These are non-blocking warnings -- creation still proceeds.\n */\nfunction warnMissingSchemas(data: Partial<Prompt>, output: OutputFormatter): void {\n if (isSchemaEmpty(data.inputSchema)) {\n output.warn('No inputSchema provided. Optimization requires inputSchema with defined variables.');\n } else if (!isValidJsonSchema(data.inputSchema)) {\n output.warn(formatSchemaWarning('inputSchema'));\n }\n if (isSchemaEmpty(data.outputSchema)) {\n output.warn('No outputSchema provided. This may limit optimization effectiveness.');\n } else if (!isValidJsonSchema(data.outputSchema)) {\n output.warn(formatSchemaWarning('outputSchema'));\n }\n}\n\n/**\n * Interactively collect schema variables from the user.\n * Returns a JSON Schema built from the collected variables.\n */\nasync function collectSchemaInteractively(): Promise<Record<string, unknown>> {\n const inquirer = (await import('inquirer')).default;\n const variables: SchemaVariable[] = [];\n let addMore = true;\n\n while (addMore) {\n const answers = await inquirer.prompt<{ name: string; type: SupportedSchemaType; description: string }>([\n {\n type: 'input',\n name: 'name',\n message: 'Variable name:',\n validate: (input: string): string | true => {\n if (!input.trim()) return 'Variable name is required';\n if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(input.trim())) {\n return 'Variable name must start with a letter/underscore and contain only alphanumeric/underscore';\n }\n return true;\n },\n },\n {\n type: 'list',\n name: 'type',\n message: 'Variable type:',\n choices: [...SUPPORTED_SCHEMA_TYPES],\n },\n {\n type: 'input',\n name: 'description',\n message: 'Description (optional):',\n },\n ]);\n\n variables.push({\n name: answers.name.trim(),\n type: answers.type,\n description: answers.description.trim() || undefined,\n });\n\n const continueAnswer = await inquirer.prompt<{ addAnother: boolean }>([{\n type: 'confirm',\n name: 'addAnother',\n message: 'Add another variable?',\n default: false,\n }]);\n\n addMore = continueAnswer.addAnother;\n }\n\n return buildSchemaFromVariables(variables);\n}\n\n/**\n * Prompt the user to define input variables interactively, provide a file path,\n * or skip. Returns the schema or undefined if skipped.\n */\nasync function promptForInputSchema(): Promise<Record<string, unknown> | undefined> {\n const inquirer = (await import('inquirer')).default;\n\n const answer = await inquirer.prompt<{ choice: string }>([{\n type: 'list',\n name: 'choice',\n message: 'Would you like to define input variables for this prompt?',\n choices: [\n { name: 'Yes, define variables interactively', value: 'interactive' },\n { name: 'Provide a JSON Schema file path', value: 'file' },\n { name: 'Skip (not recommended for optimization)', value: 'skip' },\n ],\n }]);\n\n if (answer.choice === 'interactive') {\n return collectSchemaInteractively();\n }\n\n if (answer.choice === 'file') {\n const fileAnswer = await inquirer.prompt<{ path: string }>([{\n type: 'input',\n name: 'path',\n message: 'JSON Schema file path:',\n validate: (input: string): string | true => {\n if (!input.trim()) return 'File path is required';\n if (!existsSync(input.trim())) return `File not found: ${input.trim()}`;\n return true;\n },\n }]);\n\n const content = readFileSync(fileAnswer.path.trim(), 'utf-8');\n try {\n const parsed = JSON.parse(content) as Record<string, unknown>;\n if (!isValidJsonSchema(parsed)) {\n console.log(chalk.yellow(`\\n Warning: ${formatSchemaWarning('inputSchema')}\\n`));\n }\n return parsed;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n `Failed to parse JSON Schema from ${fileAnswer.path.trim()}`,\n 'Ensure the file contains valid JSON'\n );\n }\n }\n\n // skip\n return undefined;\n}\n\n/**\n * Check prompt content for single-brace template variables and warn about\n * MutagenT's double-brace syntax. Only warns, does not block creation.\n */\nfunction warnSingleBraceVariables(content: string, output: OutputFormatter): void {\n // Match {word} but not {{word}} -- look for single braces not preceded/followed by another brace\n const singleBracePattern = /(?<!\\{)\\{([a-zA-Z_][a-zA-Z0-9_]*)\\}(?!\\})/g;\n const matches = [...content.matchAll(singleBracePattern)];\n if (matches.length > 0) {\n const variables = [...new Set(matches.map(m => m[1] ?? ''))];\n for (const variable of variables) {\n output.warn(`Found {${variable}} -- MutagenT uses {{${variable}}} syntax. Did you mean {{${variable}}}?`);\n }\n }\n}\n\n/**\n * Parse dataset file content based on format detection.\n * Supports JSON arrays, JSONL (one JSON object per line), and CSV passthrough.\n *\n * @param rawContent - The raw file content as a string\n * @param filePath - The file path (used for format detection and error messages)\n * @returns The parsed content as a JSON string suitable for the API\n */\nexport function parseDatasetFile(rawContent: string, filePath: string): string {\n const trimmed = rawContent.trim();\n\n // CSV files are passed through as-is (the API handles CSV parsing)\n if (filePath.endsWith('.csv')) {\n return rawContent;\n }\n\n // If content starts with '[', treat as JSON array\n if (trimmed.startsWith('[')) {\n try {\n const parsed: unknown = JSON.parse(trimmed);\n if (!Array.isArray(parsed)) {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Expected a JSON array in dataset file',\n 'Dataset JSON files should contain an array of objects: [{...}, {...}]'\n );\n }\n return trimmed;\n } catch (e) {\n if (e instanceof MutagentError) throw e;\n throw new MutagentError(\n 'INVALID_JSON',\n `Failed to parse JSON array from ${filePath}`,\n 'Ensure the file contains valid JSON. For line-delimited JSON, use .jsonl extension or put one object per line.'\n );\n }\n }\n\n // If content starts with '{' or doesn't start with '[', treat as JSONL\n // (one JSON object per line)\n const lines = trimmed.split('\\n').filter(line => line.trim().length > 0);\n const items: unknown[] = [];\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!line) continue;\n const trimmedLine = line.trim();\n try {\n items.push(JSON.parse(trimmedLine));\n } catch {\n throw new MutagentError(\n 'INVALID_JSONL',\n `Invalid JSON on line ${String(i + 1)} of ${filePath}`,\n `Each line must be valid JSON. Problem line: \"${trimmedLine.substring(0, 80)}${trimmedLine.length > 80 ? '...' : ''}\"`\n );\n }\n }\n\n return JSON.stringify(items);\n}\n\nexport function createPromptsCommand(): Command {\n const prompts = new Command('prompts')\n .description('Manage prompts, datasets, evaluations, and optimizations')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts list\n ${chalk.dim('$')} mutagent prompts get <prompt-id>\n ${chalk.dim('$')} mutagent prompts create --file prompt.json\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id>\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"My Eval\"\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id>\n\nSubcommands:\n list, get, create, update, delete\n dataset list|add|remove\n evaluation list|create|results\n optimize start|status|results\n `);\n\n // =========================================================================\n // PROMPT CRUD\n // =========================================================================\n\n // List prompts\n prompts\n .command('list')\n .description('List all prompts')\n .option('-l, --limit <n>', 'Limit results', '50')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts list\n ${chalk.dim('$')} mutagent prompts list --limit 10\n ${chalk.dim('$')} mutagent prompts list --json\n\n${chalk.dim('Tip: Use --json for machine-readable output (AI agents, CI pipelines).')}\n `)\n .action(async (options: ListOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const promptsList = await client.listPrompts();\n\n // Limit results\n const limit = parseInt(options.limit, 10) || 50;\n const limited = promptsList.slice(0, limit);\n\n if (isJson) {\n const withLinks = limited.map((p: Prompt) => ({\n ...p,\n _links: promptLinks(p.id),\n }));\n output.output(withLinks);\n } else {\n // Format for table\n const formatted = limited.map((p: Prompt) => ({\n id: p.id,\n name: p.name,\n version: p.version,\n updated: p.updatedAt ? new Date(p.updatedAt).toLocaleDateString() : 'N/A',\n url: promptLink(p.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get prompt\n prompts\n .command('get')\n .description('Get prompt details with nested data')\n .argument('<id>', 'Prompt ID (from: mutagent prompts list)')\n .option('--with-datasets', 'Include datasets')\n .option('--with-evals', 'Include evaluations')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts get <id>\n ${chalk.dim('$')} mutagent prompts get <id> --with-datasets --with-evals\n ${chalk.dim('$')} mutagent prompts get <id> --json\n\n${chalk.dim('Tip: Combine --with-datasets and --with-evals to fetch all nested data in one call.')}\n `)\n .action(async (id: string, options: GetOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const prompt = await client.getPrompt(id);\n\n const result: Record<string, unknown> = { ...prompt };\n\n if (options.withDatasets) {\n const datasets = await client.listDatasets(id);\n result.datasets = datasets;\n }\n\n if (options.withEvals) {\n const evals = await client.listEvaluations(id);\n result.evaluations = evals;\n }\n\n if (isJson) {\n result._links = promptLinks(id);\n }\n output.output(result);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Create prompt\n prompts\n .command('create')\n .description('Create a new prompt')\n .option('-f, --file <path>', 'Create from JSON file')\n .option('--raw-file <path>', 'Create from plain text file (used as rawPrompt)')\n .option('-n, --name <name>', 'Prompt name')\n .option('-c, --content <content>', 'Prompt content (rawPrompt) [DEPRECATED: use --raw]')\n .option('-r, --raw <text>', 'Raw prompt text (single prompt)')\n .option('--system <text>', 'System prompt (use with --human)')\n .option('--human <text>', 'Human prompt (use with --system)')\n .option('--messages <json>', 'Messages array as JSON (e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\')')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts create --name \"my-prompt\" --system \"You are helpful\" --human \"Hello\"\n ${chalk.dim('$')} mutagent prompts create --name \"raw-prompt\" --raw \"Summarize: {{text}}\"\n ${chalk.dim('$')} mutagent prompts create --file prompt.json\n ${chalk.dim('$')} mutagent prompts create --name \"chat\" --messages '[{\"role\":\"system\",\"content\":\"...\"}]'\n ${chalk.dim('$')} mutagent prompts create --name \"from-file\" --raw-file prompt.txt\n\nPrompt Input Methods (pick one):\n --system/--human Structured system + user message pair\n --raw Single raw prompt text with {{variables}}\n --raw-file Load plain text file as raw prompt\n --messages Full messages array as JSON\n --file Load from JSON file (full prompt object)\n\n${chalk.dim('Hint: Use --file with JSON or --raw-file for plain text. Get prompt IDs: mutagent prompts list')}\n `)\n .action(async (options: CreateOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n let data: Partial<Prompt>;\n\n if (options.file) {\n const content = readFileSync(options.file, 'utf-8');\n data = JSON.parse(content) as Partial<Prompt>;\n } else if (options.rawFile) {\n // --raw-file: read plain text file as rawPrompt\n if (!existsSync(options.rawFile)) {\n throw new MutagentError(\n 'FILE_NOT_FOUND',\n `File not found: ${options.rawFile}`,\n 'Check the file path and try again'\n );\n }\n const textContent = readFileSync(options.rawFile, 'utf-8');\n data = {\n name: options.name ?? options.rawFile.replace(/^.*[\\\\/]/, '').replace(/\\.[^.]+$/, ''),\n rawPrompt: textContent,\n };\n } else if (options.name) {\n // Handle different prompt style formats\n data = { name: options.name };\n\n // Priority: messages > system+human > raw > content (deprecated)\n if (options.messages) {\n // Messages format: JSON array of messages\n try {\n const messages = JSON.parse(options.messages) as { role: string; content: string }[];\n // Extract system and human prompts from messages array\n const systemMsg = messages.find(m => m.role === 'system');\n const humanMsg = messages.find(m => m.role === 'user' || m.role === 'human');\n if (systemMsg) data.systemPrompt = systemMsg.content;\n if (humanMsg) data.humanPrompt = humanMsg.content;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --messages flag',\n 'Provide a valid JSON array, e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\''\n );\n }\n } else if (options.system ?? options.human) {\n // Human/System format\n if (options.system) data.systemPrompt = options.system;\n if (options.human) data.humanPrompt = options.human;\n } else if (options.raw) {\n // Raw prompt format\n data.rawPrompt = options.raw;\n } else if (options.content) {\n // Deprecated --content flag (backwards compatibility)\n data.rawPrompt = options.content;\n } else {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Prompt content required',\n 'Use --raw, --raw-file, --system/--human, or --messages to specify prompt content'\n );\n }\n } else {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Either --file, --raw-file, or --name with prompt content is required',\n 'Use --file to load from JSON, --raw-file for plain text, or provide --name with --raw, --system/--human, or --messages'\n );\n }\n\n // Warn about single-brace template variables (Task 7e)\n const promptContent = data.rawPrompt ?? data.systemPrompt ?? data.humanPrompt ?? '';\n if (promptContent && !isJson) {\n warnSingleBraceVariables(promptContent, output);\n }\n\n // Interactive schema prompting when inputSchema is empty/invalid (non-JSON mode only)\n if (!isJson && isSchemaEmpty(data.inputSchema)) {\n // Only prompt interactively if stdin is a TTY (not piped/CI)\n if (process.stdin.isTTY) {\n const schema = await promptForInputSchema();\n if (schema) {\n data.inputSchema = schema;\n }\n } else {\n output.warn('No inputSchema provided. Optimization requires inputSchema with defined variables.');\n }\n }\n\n // Warn about missing/invalid inputSchema/outputSchema (non-blocking)\n warnMissingSchemas(data, output);\n\n const client = getSDKClient();\n const prompt = await client.createPrompt(data);\n\n if (isJson) {\n output.output({ ...prompt, _links: promptLinks(prompt.id) });\n } else {\n output.success(`Created prompt: ${prompt.name} (id: ${String(prompt.id)})`);\n const hints = formatCreationHints({\n resourceType: 'Prompt',\n id: prompt.id,\n name: prompt.name,\n dashboardUrl: promptLink(prompt.id),\n apiPath: `/api/prompts/${String(prompt.id)}`,\n });\n console.log(hints);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Update prompt\n prompts\n .command('update')\n .description('Update a prompt')\n .argument('<id>', 'Prompt ID (from: mutagent prompts list)')\n .option('-f, --file <path>', 'Update from JSON file')\n .option('--raw-file <path>', 'Update from plain text file (used as rawPrompt)')\n .option('-n, --name <name>', 'New name')\n .option('-c, --content <content>', 'New content (rawPrompt) [DEPRECATED: use --raw]')\n .option('-r, --raw <text>', 'Raw prompt text (single prompt)')\n .option('--system <text>', 'System prompt (use with --human)')\n .option('--human <text>', 'Human prompt (use with --system)')\n .option('--messages <json>', 'Messages array as JSON (e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\')')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts update <id> --name \"new-name\"\n ${chalk.dim('$')} mutagent prompts update <id> --system \"Updated system prompt\"\n ${chalk.dim('$')} mutagent prompts update <id> --raw-file updated-prompt.txt\n ${chalk.dim('$')} mutagent prompts update <id> --file updated-prompt.json\n ${chalk.dim('$')} mutagent prompts update <id> --json\n `)\n .action(async (id: string, options: UpdateOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n let data: Partial<Prompt> = {};\n\n if (options.file) {\n const content = readFileSync(options.file, 'utf-8');\n data = JSON.parse(content) as Partial<Prompt>;\n } else if (options.rawFile) {\n // --raw-file: read plain text file as rawPrompt\n if (!existsSync(options.rawFile)) {\n throw new MutagentError(\n 'FILE_NOT_FOUND',\n `File not found: ${options.rawFile}`,\n 'Check the file path and try again'\n );\n }\n const textContent = readFileSync(options.rawFile, 'utf-8');\n data.rawPrompt = textContent;\n if (options.name) data.name = options.name;\n } else {\n if (options.name) data.name = options.name;\n\n // Handle different prompt style formats\n // Priority: messages > system+human > raw > content (deprecated)\n if (options.messages) {\n // Messages format: JSON array of messages\n try {\n const messages = JSON.parse(options.messages) as { role: string; content: string }[];\n // Extract system and human prompts from messages array\n const systemMsg = messages.find(m => m.role === 'system');\n const humanMsg = messages.find(m => m.role === 'user' || m.role === 'human');\n if (systemMsg) data.systemPrompt = systemMsg.content;\n if (humanMsg) data.humanPrompt = humanMsg.content;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --messages flag',\n 'Provide a valid JSON array, e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\''\n );\n }\n } else if (options.system ?? options.human) {\n // Human/System format\n if (options.system) data.systemPrompt = options.system;\n if (options.human) data.humanPrompt = options.human;\n } else if (options.raw) {\n // Raw prompt format\n data.rawPrompt = options.raw;\n } else if (options.content) {\n // Deprecated --content flag (backwards compatibility)\n data.rawPrompt = options.content;\n }\n }\n\n if (Object.keys(data).length === 0) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'No update data provided',\n 'Use --file, --raw-file, --name, --raw, --system/--human, or --messages'\n );\n }\n\n // Warn about single-brace template variables (Task 7e)\n const promptContent = data.rawPrompt ?? data.systemPrompt ?? data.humanPrompt ?? '';\n if (promptContent && !isJson) {\n warnSingleBraceVariables(promptContent, output);\n }\n\n const client = getSDKClient();\n const prompt = await client.updatePrompt(id, data);\n\n if (isJson) {\n output.output({ ...prompt, _links: promptLinks(prompt.id) });\n } else {\n output.success(`Updated prompt: ${prompt.name} (id: ${String(prompt.id)})`);\n const hints = formatCreationHints({\n resourceType: 'Prompt',\n id: prompt.id,\n name: prompt.name,\n dashboardUrl: promptLink(prompt.id),\n apiPath: `/api/prompts/${String(prompt.id)}`,\n });\n console.log(hints);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Delete prompt\n prompts\n .command('delete')\n .description('Delete a prompt')\n .argument('<id>', 'Prompt ID (from: mutagent prompts list)')\n .option('--force', 'Skip confirmation')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts delete <id>\n ${chalk.dim('$')} mutagent prompts delete <id> --force\n ${chalk.dim('$')} mutagent prompts delete <id> --force --json\n\n${chalk.dim('Tip: Use --force to skip confirmation (required for non-interactive/CI usage).')}\n `)\n .action(async (id: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n if (!options.force && !isJson) {\n const inquirer = (await import('inquirer')).default;\n const answers = await inquirer.prompt<ConfirmAnswer>([{\n type: 'confirm',\n name: 'confirm',\n message: `Delete prompt ${id}?`,\n default: false,\n }]);\n\n if (!answers.confirm) {\n output.info('Cancelled');\n return;\n }\n }\n\n const client = getSDKClient();\n await client.deletePrompt(id);\n\n output.success(`Deleted prompt: ${id}`);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // =========================================================================\n // DATASET subcommand group (mutagent prompts dataset ...)\n // =========================================================================\n const dataset = prompts\n .command('dataset')\n .description('Manage datasets for prompts')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id>\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> --file dataset.jsonl\n ${chalk.dim('$')} mutagent prompts dataset remove <prompt-id> <dataset-id>\n `);\n\n // List datasets\n dataset\n .command('list')\n .description('List datasets for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id>\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id> --json\n `)\n .action(async (promptId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const datasets = await client.listDatasets(promptId);\n\n if (isJson) {\n const withLinks = datasets.map((d) => ({\n ...d,\n _links: datasetLinks(promptId, d.id),\n }));\n output.output(withLinks);\n } else {\n const formatted = datasets.map((d) => ({\n ...d,\n url: datasetLink(promptId, d.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Add dataset\n dataset\n .command('add')\n .description('Add dataset to a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .option('-f, --file <path>', 'Dataset file (JSON array, JSONL, or CSV)')\n .option('-d, --data <json>', 'Inline JSON array of dataset items')\n .option('-n, --name <name>', 'Dataset name (default: timestamped)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> --file dataset.json\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> --file dataset.jsonl --name \"My Dataset\"\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> --file dataset.csv\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> -d '[{\"input\":{\"text\":\"hello\"},\"expectedOutput\":{\"result\":\"world\"}}]'\n\nSupported file formats:\n ${chalk.dim('.json')} JSON array of objects: [{\"input\": {...}, \"expectedOutput\": {...}}, ...]\n ${chalk.dim('.jsonl')} One JSON object per line (newline-delimited JSON)\n ${chalk.dim('.csv')} Comma-separated values with header row\n\nInline data format (-d):\n JSON array of objects, e.g.:\n ${chalk.dim('[{\"input\": {\"text\": \"hello\"}, \"expectedOutput\": {\"result\": \"world\"}}]')}\n\n${chalk.dim('Note: --file and -d are mutually exclusive. Provide one or the other.')}\n `)\n .action(async (promptId: string, options: DatasetAddOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n if (options.file && options.data) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n 'Cannot use both --file and -d/--data',\n 'Use --file to upload from a file or -d to provide inline JSON data, not both'\n );\n }\n\n if (!options.file && !options.data) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Either --file or -d/--data is required',\n 'Use --file <path> to upload from a file or -d \\'[{...}]\\' for inline JSON data'\n );\n }\n\n let content: string;\n\n if (options.data) {\n // Inline JSON data - validate it parses as an array\n try {\n const parsed: unknown = JSON.parse(options.data);\n if (!Array.isArray(parsed)) {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Inline data must be a JSON array',\n 'Provide a JSON array, e.g., \\'[{\"input\": {...}, \"expectedOutput\": {...}}]\\''\n );\n }\n content = options.data;\n } catch (e) {\n if (e instanceof MutagentError) throw e;\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in -d/--data flag',\n 'Provide a valid JSON array, e.g., \\'[{\"input\": {...}, \"expectedOutput\": {...}}]\\''\n );\n }\n } else {\n // File-based upload (options.file is guaranteed by the check above)\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const filePath = options.file!;\n const rawContent = readFileSync(filePath, 'utf-8');\n content = parseDatasetFile(rawContent, filePath);\n }\n\n const client = getSDKClient();\n const datasetResult = await client.addDataset(promptId, content, options.name);\n\n if (isJson) {\n output.output({\n ...datasetResult,\n _links: datasetLinks(promptId, datasetResult.id),\n });\n } else {\n output.success(`Added dataset \"${datasetResult.name}\" to prompt: ${promptId} (id: ${String(datasetResult.id)})`);\n if (datasetResult.itemCount !== undefined && datasetResult.itemCount > 0) {\n output.info(`Items uploaded: ${String(datasetResult.itemCount)}`);\n }\n const hints = formatCreationHints({\n resourceType: 'Dataset',\n id: datasetResult.id,\n name: datasetResult.name,\n dashboardUrl: datasetLink(promptId, datasetResult.id),\n apiPath: `/api/prompts/${promptId}/datasets/${String(datasetResult.id)}`,\n });\n console.log(hints);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Remove dataset\n dataset\n .command('remove')\n .description('Remove dataset from a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .argument('<dataset-id>', 'Dataset ID (from: mutagent prompts dataset list <prompt-id>)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset remove <prompt-id> <dataset-id>\n ${chalk.dim('$')} mutagent prompts dataset remove <prompt-id> <dataset-id> --json\n `)\n .action(async (promptId: string, datasetId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n await client.removeDataset(promptId, datasetId);\n output.success(`Removed dataset ${datasetId} from prompt ${promptId}`);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // =========================================================================\n // EVALUATION subcommand group (mutagent prompts evaluation ...)\n // =========================================================================\n const evaluation = prompts\n .command('evaluation')\n .description('Manage evaluations for prompts')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id>\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"My Eval\"\n ${chalk.dim('$')} mutagent prompts evaluation results <run-id>\n `);\n\n // List evaluations\n evaluation\n .command('list')\n .description('List evaluations for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id>\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id> --json\n `)\n .action(async (promptId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const evals = await client.listEvaluations(promptId);\n\n if (isJson) {\n const withLinks = evals.map((e) => ({\n ...e,\n _links: evaluationLinks(promptId, e.id),\n }));\n output.output(withLinks);\n } else {\n const formatted = evals.map((e) => ({\n ...e,\n url: evaluationLink(promptId, e.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Create evaluation\n evaluation\n .command('create')\n .description('Create an evaluation configuration for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .requiredOption('-n, --name <name>', 'Evaluation name')\n .option('-f, --file <path>', 'Load evaluation criteria from JSON file')\n .option('--description <text>', 'Evaluation description')\n .option('-d, --dataset <id>', 'Dataset ID to associate (from: mutagent prompts dataset list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"Accuracy Check\"\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"Full Eval\" --file criteria.json --dataset <dataset-id>\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"QA\" --description \"Quality assurance eval\" --json\n\nCriteria file format (--file):\n ${chalk.dim('{ \"evalConfig\": { \"criteria\": [...] }, \"llmConfig\": { \"model\": \"gpt-4\" } }')}\n\n${chalk.dim('AI Agent Hint: Create an evaluation before running it. Use --file to load criteria from JSON.')}\n${chalk.dim('Get prompt IDs: mutagent prompts list | Get dataset IDs: mutagent prompts dataset list <prompt-id>')}\n `)\n .action(async (promptId: string, options: EvaluationCreateOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const evalData: {\n name: string;\n description?: string;\n datasetId?: number;\n evalConfig?: Record<string, unknown>;\n llmConfig?: Record<string, unknown>;\n tags?: string[];\n metadata?: Record<string, unknown>;\n } = {\n name: options.name,\n description: options.description,\n };\n\n // Load criteria from file if provided\n if (options.file) {\n if (!existsSync(options.file)) {\n throw new MutagentError(\n 'FILE_NOT_FOUND',\n `File not found: ${options.file}`,\n 'Check the file path and try again'\n );\n }\n const fileContent = readFileSync(options.file, 'utf-8');\n try {\n const parsed = JSON.parse(fileContent) as Record<string, unknown>;\n if (parsed.evalConfig) evalData.evalConfig = parsed.evalConfig as Record<string, unknown>;\n if (parsed.llmConfig) evalData.llmConfig = parsed.llmConfig as Record<string, unknown>;\n if (parsed.tags) evalData.tags = parsed.tags as string[];\n if (parsed.metadata) evalData.metadata = parsed.metadata as Record<string, unknown>;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n `Failed to parse criteria file: ${options.file}`,\n 'Ensure the file contains valid JSON with evalConfig and/or llmConfig'\n );\n }\n }\n\n // Associate dataset if provided\n if (options.dataset) {\n evalData.datasetId = parseInt(options.dataset, 10);\n if (isNaN(evalData.datasetId)) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Invalid dataset ID: ${options.dataset}`,\n 'Dataset ID must be a number. Get IDs with: mutagent prompts dataset list <prompt-id>'\n );\n }\n }\n\n const client = getSDKClient();\n const evalResult = await client.createEvaluation(promptId, evalData);\n\n if (isJson) {\n output.output({\n ...evalResult,\n _links: evaluationLinks(promptId, evalResult.id),\n });\n } else {\n output.success(`Created evaluation: ${evalResult.name} (id: ${String(evalResult.id)})`);\n const hints = formatCreationHints({\n resourceType: 'Evaluation',\n id: evalResult.id,\n name: evalResult.name,\n dashboardUrl: evaluationLink(promptId, evalResult.id),\n apiPath: `/api/prompts/${promptId}/evaluations/${String(evalResult.id)}`,\n });\n console.log(hints);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get evaluation results\n evaluation\n .command('results')\n .description('Get evaluation results')\n .argument('<run-id>', 'Evaluation run ID (from: mutagent prompts evaluation list <prompt-id>)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation results <run-id>\n ${chalk.dim('$')} mutagent prompts evaluation results <run-id> --json\n `)\n .action(async (runId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const results = await client.getEvaluationResults(runId);\n output.output(results);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // =========================================================================\n // OPTIMIZE subcommand group (mutagent prompts optimize ...)\n // =========================================================================\n const optimize = prompts\n .command('optimize')\n .description('Manage prompt optimization jobs')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id>\n ${chalk.dim('$')} mutagent prompts optimize status <job-id>\n ${chalk.dim('$')} mutagent prompts optimize results <job-id>\n\nWorkflow: start -> status (poll) -> results\n `);\n\n // Start optimization\n optimize\n .command('start')\n .description('Start prompt optimization')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .requiredOption('-d, --dataset <id>', 'Dataset ID for optimization (from: mutagent prompts dataset list <prompt-id>)')\n .option('--max-iterations <n>', 'Max optimization iterations (default: 3)')\n .option('--target-score <n>', 'Target accuracy 0-1 (e.g., 0.9)')\n .option('--patience <n>', 'Iterations without improvement before stopping')\n .option('--model <model-id>', 'Target LLM model (e.g., \"claude-sonnet-4-5-20250929\")')\n .option('--eval-model <model-id>', 'Evaluation model (defaults to target model)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id>\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --max-iterations 5\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --target-score 0.95 --model claude-sonnet-4-5-20250929\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --json\n${PREREQUISITES_TEXT}\n\n${chalk.dim('Monitor progress with: mutagent prompts optimize status <job-id>')}\n `)\n .action(async (promptId: string, options: OptimizeStartOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // [AI AGENT NOTICE] TEMPORARILY REMOVED: `await checkProviderConfigured();` was here.\n // See comment block above PREREQUISITES_TEXT for full context and re-add instructions.\n const client = getSDKClient();\n const job = await client.startOptimization(promptId, options.dataset, {\n maxIterations: options.maxIterations ? parseInt(options.maxIterations, 10) : undefined,\n targetScore: options.targetScore ? parseFloat(options.targetScore) : undefined,\n patience: options.patience ? parseInt(options.patience, 10) : undefined,\n model: options.model,\n evalModel: options.evalModel,\n });\n\n if (isJson) {\n output.output({\n ...job,\n _links: {\n dashboard: optimizerLink(job.jobId),\n api: `/api/prompts/${promptId}/optimizations/${job.jobId}`,\n },\n });\n } else {\n output.success(`Started optimization job: ${job.jobId}`);\n const hints = formatCreationHints({\n resourceType: 'Optimization',\n id: job.jobId,\n dashboardUrl: optimizerLink(job.jobId),\n apiPath: `/api/prompts/${promptId}/optimizations/${job.jobId}`,\n });\n console.log(hints);\n }\n } catch (error) {\n // Enhanced error handling: parse validation errors for actionable messages\n if (error instanceof ApiError) {\n const messages = parseValidationErrors(error);\n if (!isJson) {\n console.error(chalk.red('Optimization failed. Missing requirements:'));\n for (const msg of messages) {\n console.error(chalk.red(` - ${msg}`));\n }\n console.error('');\n console.error(PREREQUISITES_TEXT);\n }\n }\n handleError(error, isJson);\n }\n });\n\n // Optimization status\n optimize\n .command('status')\n .description('Check optimization status')\n .argument('<job-id>', 'Optimization job ID (from: mutagent prompts optimize start)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize status <job-id>\n ${chalk.dim('$')} mutagent prompts optimize status <job-id> --json\n `)\n .action(async (jobId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const status = await client.getOptimizationStatus(jobId);\n\n if (isJson) {\n output.output({ ...status, _links: { optimizer: optimizerLink(jobId) } });\n } else {\n const progress = status.progressPercent;\n const filled = Math.floor(progress / 10);\n const progressBar = '\\u2588'.repeat(filled) + '\\u2591'.repeat(10 - filled);\n output.info(`Progress: [${progressBar}] ${String(progress)}%`);\n output.output(status);\n output.info(`View: ${optimizerLink(jobId)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Optimization results\n optimize\n .command('results')\n .description('Get optimization results')\n .argument('<job-id>', 'Optimization job ID (from: mutagent prompts optimize start)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize results <job-id>\n ${chalk.dim('$')} mutagent prompts optimize results <job-id> --json\n `)\n .action(async (jobId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const results = await client.getOptimizationResults(jobId);\n\n if (isJson) {\n output.output({ ...results as object, _links: { optimizer: optimizerLink(jobId) } });\n } else {\n output.output(results);\n output.info(`View: ${optimizerLink(jobId)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return prompts;\n}\n",
14
+ "/**\n * @fileoverview Centralized UI deep link generation for MutagenT CLI\n * @module @mutagent/cli/lib/ui-links\n *\n * Generates clickable URLs that link to the MutagenT web UI for\n * viewing/editing resources. Used across all CLI commands that\n * list or fetch resources.\n *\n * The dashboard is a single page with tabs (Prompts, Evaluations, Datasets),\n * not separate routes per entity type.\n */\n\n/**\n * Get the base URL for the MutagenT web application.\n * Reads from MUTAGENT_APP_URL env var, falling back to production URL.\n */\nexport function getAppBaseUrl(): string {\n return process.env.MUTAGENT_APP_URL ?? 'https://app.mutagent.io';\n}\n\n/**\n * Generate a link to view a prompt in the dashboard.\n * The dashboard is at /prompts/dashboard with prompt detail in a tab/panel.\n */\nexport function promptLink(id: string | number): string {\n return `${getAppBaseUrl()}/prompts/dashboard?prompt=${String(id)}`;\n}\n\n/**\n * Generate a link to the prompts dashboard (Datasets tab).\n */\nexport function promptDatasetsLink(promptId: string | number): string {\n return `${getAppBaseUrl()}/prompts/dashboard?prompt=${String(promptId)}&tab=datasets`;\n}\n\n/**\n * Generate a link to the prompts dashboard (Evaluations tab).\n */\nexport function promptEvaluationsLink(promptId: string | number): string {\n return `${getAppBaseUrl()}/prompts/dashboard?prompt=${String(promptId)}&tab=evaluations`;\n}\n\n/**\n * Generate a link to a specific dataset within the dashboard.\n */\nexport function datasetLink(promptId: string | number, datasetId: string | number): string {\n return `${getAppBaseUrl()}/prompts/dashboard?prompt=${String(promptId)}&tab=datasets&dataset=${String(datasetId)}`;\n}\n\n/**\n * Generate a link to a specific evaluation within the dashboard.\n */\nexport function evaluationLink(promptId: string | number, evalId: string | number): string {\n return `${getAppBaseUrl()}/prompts/dashboard?prompt=${String(promptId)}&tab=evaluations&eval=${String(evalId)}`;\n}\n\n/**\n * Generate a link to view a trace in the UI.\n */\nexport function traceLink(id: string): string {\n return `${getAppBaseUrl()}/traces/${id}`;\n}\n\n/**\n * Generate a link to the optimizer page, optionally for a specific job.\n */\nexport function optimizerLink(jobId?: string): string {\n const base = `${getAppBaseUrl()}/prompts/optimizer`;\n return jobId ? `${base}?job=${jobId}` : base;\n}\n\n/**\n * Generate a link to the playground page.\n */\nexport function playgroundLink(): string {\n return `${getAppBaseUrl()}/prompts/playground`;\n}\n\n/**\n * Generate a link to the provider settings page.\n */\nexport function providerSettingsLink(): string {\n return `${getAppBaseUrl()}/settings/providers`;\n}\n\n/**\n * Generate the standard _links object for a prompt resource.\n */\nexport function promptLinks(promptId: string | number): { dashboard: string; api: string; datasets: string; evaluations: string } {\n return {\n dashboard: promptLink(promptId),\n api: `/api/prompts/${String(promptId)}`,\n datasets: promptDatasetsLink(promptId),\n evaluations: promptEvaluationsLink(promptId),\n };\n}\n\n/**\n * Generate _links object for a dataset resource.\n */\nexport function datasetLinks(promptId: string | number, datasetId: string | number): { dashboard: string; api: string } {\n return {\n dashboard: datasetLink(promptId, datasetId),\n api: `/api/prompts/${String(promptId)}/datasets/${String(datasetId)}`,\n };\n}\n\n/**\n * Generate _links object for an evaluation resource.\n */\nexport function evaluationLinks(promptId: string | number, evalId: string | number): { dashboard: string; api: string } {\n return {\n dashboard: evaluationLink(promptId, evalId),\n api: `/api/prompts/${String(promptId)}/evaluations/${String(evalId)}`,\n };\n}\n\n// =============================================================================\n// Resource Creation Hint Helpers\n// =============================================================================\n\n/**\n * Resource link hint definition for post-creation output.\n */\nexport interface ResourceCreationHint {\n /** Resource type label (e.g., \"Prompt\", \"Dataset\", \"Evaluation\") */\n resourceType: string;\n /** Resource identifier (the ID) */\n id: string | number;\n /** Resource name if available */\n name?: string;\n /** Dashboard URL */\n dashboardUrl: string;\n /** API path (relative) */\n apiPath: string;\n}\n\n/**\n * Format resource creation hints for human-readable CLI output.\n *\n * Produces output like:\n * ```\n * -> View in dashboard: https://app.mutagent.io/prompts/dashboard?prompt=123\n * -> API: GET /api/prompts/123\n *\n * Tip: Copy the link above to open in your browser or share with your team.\n * ```\n */\nexport function formatCreationHints(hint: ResourceCreationHint): string {\n const lines: string[] = [\n '',\n ` -> View in dashboard: ${hint.dashboardUrl}`,\n ` -> API: GET ${hint.apiPath}`,\n '',\n ' Tip: Copy the link above to open in your browser or share with your team.',\n ];\n return lines.join('\\n');\n}\n",
15
+ "/**\n * @fileoverview JSON Schema helper utilities for MutagenT CLI\n * @module @mutagent/cli/lib/schema-helpers\n *\n * Provides validation, building, and formatting utilities for JSON Schema\n * objects used with prompt inputSchema/outputSchema fields.\n */\n\n/**\n * Variable definition for building JSON Schema interactively.\n */\nexport interface SchemaVariable {\n name: string;\n type: 'string' | 'number' | 'boolean' | 'array' | 'object';\n description?: string;\n}\n\n/**\n * Supported JSON Schema primitive types for interactive variable definition.\n */\nexport const SUPPORTED_SCHEMA_TYPES = ['string', 'number', 'boolean', 'array', 'object'] as const;\nexport type SupportedSchemaType = typeof SUPPORTED_SCHEMA_TYPES[number];\n\n/**\n * Check whether a value is a valid JSON Schema (basic structural validation).\n *\n * A valid JSON Schema for our purposes must:\n * - Be a non-null object\n * - Have a \"type\" property (usually \"object\")\n * - If type is \"object\", should have a \"properties\" property\n *\n * This is NOT a full JSON Schema meta-validation -- it checks the structural\n * conventions expected by MutagenT's prompt system.\n */\nexport function isValidJsonSchema(schema: unknown): boolean {\n if (schema === null || schema === undefined) return false;\n if (typeof schema !== 'object') return false;\n if (Array.isArray(schema)) return false;\n\n const obj = schema as Record<string, unknown>;\n\n // Must have \"type\" field\n if (!('type' in obj) || typeof obj.type !== 'string') return false;\n\n // If type is \"object\", should have \"properties\"\n if (obj.type === 'object') {\n if (!('properties' in obj) || typeof obj.properties !== 'object' || obj.properties === null) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Build a JSON Schema from an array of variable definitions.\n *\n * @example\n * ```typescript\n * const schema = buildSchemaFromVariables([\n * { name: 'customer_name', type: 'string', description: 'The customer full name' },\n * { name: 'age', type: 'number', description: 'Customer age' },\n * ]);\n * // Returns:\n * // {\n * // type: \"object\",\n * // properties: {\n * // customer_name: { type: \"string\", description: \"The customer full name\" },\n * // age: { type: \"number\", description: \"Customer age\" }\n * // }\n * // }\n * ```\n */\nexport function buildSchemaFromVariables(variables: SchemaVariable[]): Record<string, unknown> {\n const properties: Record<string, Record<string, unknown>> = {};\n\n for (const variable of variables) {\n const prop: Record<string, unknown> = { type: variable.type };\n if (variable.description) {\n prop.description = variable.description;\n }\n properties[variable.name] = prop;\n }\n\n return {\n type: 'object',\n properties,\n };\n}\n\n/**\n * Return a formatted JSON Schema example string for display in CLI help output.\n */\nexport function formatSchemaExample(): string {\n return JSON.stringify(\n {\n type: 'object',\n properties: {\n variable_name: { type: 'string', description: 'Description here' },\n },\n },\n null,\n 2,\n );\n}\n\n/**\n * Return a formatted warning message with schema example for invalid schemas.\n * Used by the create/update commands when inputSchema or outputSchema\n * does not look like valid JSON Schema.\n */\nexport function formatSchemaWarning(fieldName: string): string {\n return [\n `${fieldName} doesn't appear to be a valid JSON Schema.`,\n '',\n ' Expected format:',\n ' {',\n ' \"type\": \"object\",',\n ' \"properties\": {',\n ' \"variable_name\": { \"type\": \"string\", \"description\": \"Description here\" }',\n ' }',\n ' }',\n '',\n ' You can also provide a schema file: mutagent prompts create --file schema.json',\n ].join('\\n');\n}\n",
15
16
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getSDKClient } from '../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { handleError } from '../lib/errors.js';\nimport { traceLink, getAppBaseUrl } from '../lib/ui-links.js';\nimport type { Trace } from '../types/index.js';\n\ninterface ListOptions {\n prompt?: string;\n limit: string;\n}\n\ninterface ExportOptions {\n prompt?: string;\n format: string;\n output?: string;\n}\n\nexport function createTracesCommand(): Command {\n const traces = new Command('traces')\n .description('View and analyze traces (replaces Langfuse)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent traces list\n ${chalk.dim('$')} mutagent traces list --prompt <prompt-id>\n ${chalk.dim('$')} mutagent traces get <trace-id>\n ${chalk.dim('$')} mutagent traces analyze <prompt-id>\n ${chalk.dim('$')} mutagent traces export --format json --output traces.json\n\nNote: MutagenT traces replace Langfuse for observability.\n `);\n\n // List traces\n traces\n .command('list')\n .description('List traces')\n .option('-p, --prompt <id>', 'Filter by prompt ID')\n .option('-l, --limit <n>', 'Limit results', '50')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent traces list\n ${chalk.dim('$')} mutagent traces list --prompt <prompt-id>\n ${chalk.dim('$')} mutagent traces list --limit 10 --json\n\n${chalk.dim('Tip: Filter by prompt to see traces for a specific prompt version.')}\n `)\n .action(async (options: ListOptions) => {\n const isJson = getJsonFlag(traces);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const tracesList = await client.listTraces({\n promptId: options.prompt,\n });\n\n const limit = parseInt(options.limit, 10) || 50;\n const limited = tracesList.slice(0, limit);\n\n if (isJson) {\n const withLinks = (limited as Trace[]).map((t) => ({\n ...t,\n _links: { view: traceLink(t.id) },\n }));\n output.output(withLinks);\n } else {\n const formatted = (limited as Trace[]).map((t) => ({\n id: t.id,\n promptId: t.promptId,\n latency: `${String(t.latency)}ms`,\n tokens: `${String(t.tokens.input)}/${String(t.tokens.output)}`,\n timestamp: new Date(t.timestamp).toLocaleString(),\n url: traceLink(t.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get trace\n traces\n .command('get')\n .description('Get trace details')\n .argument('<id>', 'Trace ID')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent traces get <trace-id>\n ${chalk.dim('$')} mutagent traces get <trace-id> --json\n\n${chalk.dim('Returns full trace details including spans, tokens, and latency.')}\n `)\n .action(async (id: string) => {\n const isJson = getJsonFlag(traces);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const trace = await client.getTrace(id);\n if (isJson) {\n output.output({ ...trace as object, _links: { view: traceLink(id) } });\n } else {\n output.output(trace);\n output.info(`View: ${traceLink(id)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Analyze traces\n traces\n .command('analyze')\n .description('Analyze traces for a prompt')\n .argument('<prompt-id>', 'Prompt ID')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent traces analyze <prompt-id>\n ${chalk.dim('$')} mutagent traces analyze <prompt-id> --json\n\n${chalk.dim('Aggregates trace data for a prompt: avg latency, token usage, error rates.')}\n `)\n .action(async (promptId: string) => {\n const isJson = getJsonFlag(traces);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const analysis = await client.analyzeTraces(promptId);\n\n if (isJson) {\n output.output({ ...analysis as object, _links: { traces: `${getAppBaseUrl()}/traces?promptId=${promptId}` } });\n } else {\n output.output(analysis);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Export traces\n traces\n .command('export')\n .description('Export traces')\n .option('-p, --prompt <id>', 'Filter by prompt ID')\n .option('-f, --format <format>', 'Export format (json, csv)', 'json')\n .option('-o, --output <path>', 'Output file path')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent traces export\n ${chalk.dim('$')} mutagent traces export --format json --output traces.json\n ${chalk.dim('$')} mutagent traces export --format csv --output traces.csv\n ${chalk.dim('$')} mutagent traces export --prompt <prompt-id> --format json\n\n${chalk.dim('Exports to stdout by default. Use --output to save to a file.')}\n `)\n .action(async (options: ExportOptions) => {\n const isJson = getJsonFlag(traces);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const tracesList = await client.listTraces({\n promptId: options.prompt,\n });\n\n let content: string;\n\n if (options.format === 'json') {\n content = JSON.stringify(tracesList, null, 2);\n } else if (options.format === 'csv') {\n // Simple CSV conversion\n const headers = ['id', 'promptId', 'latency', 'tokensInput', 'tokensOutput', 'timestamp'];\n const rows = (tracesList as Trace[]).map((t) => [\n t.id,\n t.promptId,\n t.latency,\n t.tokens.input,\n t.tokens.output,\n t.timestamp,\n ]);\n content = [headers.join(','), ...rows.map(r => r.join(','))].join('\\n');\n } else {\n throw new Error(`Unsupported format: ${options.format}`);\n }\n\n if (options.output) {\n const { writeFileSync } = await import('fs');\n writeFileSync(options.output, content);\n output.success(`Exported ${String(tracesList.length)} traces to ${options.output}`);\n } else {\n process.stdout.write(content);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return traces;\n}\n",
16
17
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { writeFileSync, existsSync } from 'fs';\nimport { execSync } from 'child_process';\nimport { getApiKey, loadConfig } from '../lib/config.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { handleError, MutagentError } from '../lib/errors.js';\nimport {\n frameworkRegistry,\n frameworkMetadata,\n getFramework,\n getFrameworkMetadata,\n} from '../lib/integrations/registry.js';\n\ninterface IntegrateOptions {\n output?: string;\n raw?: boolean;\n verify?: boolean;\n}\n\ntype PackageManager = 'bun' | 'npm' | 'yarn' | 'pnpm';\n\n/**\n * Detect the package manager being used in the current project\n * Used for generating install commands in instructions (NOT for auto-installing)\n */\nfunction detectPackageManager(): PackageManager {\n // Check for lockfiles first (most reliable)\n if (existsSync('bun.lockb') || existsSync('bun.lock')) {\n return 'bun';\n }\n if (existsSync('pnpm-lock.yaml')) {\n return 'pnpm';\n }\n if (existsSync('yarn.lock')) {\n return 'yarn';\n }\n if (existsSync('package-lock.json')) {\n return 'npm';\n }\n\n // Check if bun is available (prefer bun)\n try {\n execSync('bun --version', { stdio: 'ignore' });\n return 'bun';\n } catch {\n // Fall back to npm\n return 'npm';\n }\n}\n\n/**\n * Get the install command for a package manager\n */\nfunction getInstallCommand(pm: PackageManager, packageName: string): string {\n const commands: Record<PackageManager, string> = {\n bun: `bun add ${packageName}`,\n npm: `npm install ${packageName}`,\n yarn: `yarn add ${packageName}`,\n pnpm: `pnpm add ${packageName}`,\n };\n return commands[pm];\n}\n\n/**\n * Generate framework detection/exploration instructions for AI agents\n * Used when no framework is specified\n */\nfunction generateExplorationInstructions(): string {\n return `## Framework Detection Needed\n\nAI AGENT: Please determine the framework by:\n\n### Option 1: Check package.json for these dependencies\n- \\`langchain\\` or \\`@langchain/core\\` -> use \\`mutagent integrate langchain\\`\n- \\`@langchain/langgraph\\` -> use \\`mutagent integrate langgraph\\`\n- \\`ai\\` (vercel) -> use \\`mutagent integrate vercel-ai\\`\n- \\`openai\\` -> use \\`mutagent integrate openai\\`\n- \\`@mastra/core\\` -> use \\`mutagent integrate mastra\\`\n- \\`@anthropic-ai/claude-code\\` -> use \\`mutagent integrate claude-code\\`\n\n### Option 2: Ask the user\n\"Which AI framework are you using?\"\n- LangChain\n- LangGraph\n- Vercel AI SDK\n- OpenAI SDK\n- Mastra\n- Claude Code\n- Generic (OpenAI-compatible)\n\n### Next Steps\n1. Once determined, run: \\`mutagent integrate <framework>\\`\n2. Ask user: \"Where should I add the integration?\" (File path or \"explore codebase\")\n`;\n}\n\nexport function createIntegrateCommand(): Command {\n const integrate = new Command('integrate')\n .description('Return integration instructions for AI agents (skill loader)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent integrate # Return exploration instructions for AI agents\n ${chalk.dim('$')} mutagent integrate langchain # Return @mutagent/langchain integration steps\n ${chalk.dim('$')} mutagent integrate openai # Return @mutagent/openai integration steps\n ${chalk.dim('$')} mutagent integrate vercel-ai --verify # Verify integration\n ${chalk.dim('$')} mutagent integrate langchain --output ./INTEGRATION.md\n ${chalk.dim('$')} mutagent integrate --list # List available frameworks\n\nFrameworks: mastra, langchain, langgraph, vercel-ai, openai, claude-code, generic\n\nThis is a SKILL LOADER for AI coding agents (Claude Code, Cursor, etc.).\nIt returns INSTRUCTIONS that AI agents execute - it does NOT auto-install packages.\n `);\n\n // Default action - return instructions for AI agents\n integrate\n .argument('[framework]', 'Framework name (mastra, langchain, langgraph, vercel-ai, openai, claude-code, generic)')\n .option('-o, --output <path>', 'Save instructions to file')\n .option('--raw', 'Output raw markdown (no formatting)')\n .option('--verify', 'Verify integration after setup')\n .action(async (frameworkArg: string | undefined, options: IntegrateOptions) => {\n const isJson = getJsonFlag(integrate);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // Verify API key first\n const apiKey = getApiKey();\n if (!apiKey) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n 'API key required for integration',\n 'Run: mutagent auth login'\n );\n }\n\n const config = loadConfig();\n\n // If no framework specified, return exploration instructions for AI agents\n if (!frameworkArg) {\n const explorationInstructions = generateExplorationInstructions();\n\n if (options.output) {\n writeFileSync(options.output, explorationInstructions);\n output.success(`Exploration instructions saved to ${options.output}`);\n } else if (options.raw === true || isJson) {\n process.stdout.write(explorationInstructions);\n } else {\n output.info('MutagenT Integration - Framework Detection');\n output.info('─'.repeat(60));\n process.stdout.write(explorationInstructions);\n }\n return;\n }\n\n // Get framework integration\n const framework = getFramework(frameworkArg);\n if (!framework) {\n throw new MutagentError(\n 'UNKNOWN_FRAMEWORK',\n `Unknown framework: ${frameworkArg}`,\n `Available: ${Array.from(frameworkRegistry.keys()).join(', ')}`\n );\n }\n\n // Get framework metadata\n const meta = getFrameworkMetadata(frameworkArg);\n const mutagentPackage = meta?.mutagentPackage;\n\n // Detect package manager for generating install command\n const pm = detectPackageManager();\n\n // Generate integration instructions from framework\n const endpoint = config.endpoint ?? 'https://api.mutagent.io';\n const frameworkMarkdown = await framework.generate({\n apiKey,\n endpoint,\n outputPath: options.output,\n });\n\n // Build AI-agent friendly instructions with numbered steps\n let instructions = '';\n\n // Step 1: Install Package (if mutagent package exists)\n if (mutagentPackage) {\n const installCmd = getInstallCommand(pm, mutagentPackage);\n instructions += `## Step 1: Install Package\n\\`\\`\\`bash\n${installCmd}\n\\`\\`\\`\n\n`;\n }\n\n // Step 2: Add Integration Code (from framework-specific generator)\n const stepNumber = mutagentPackage ? '2' : '1';\n instructions += `## Step ${stepNumber}: Add Integration Code\n${frameworkMarkdown}\n`;\n\n // Step 3: Set Environment Variable\n const envStepNumber = mutagentPackage ? '3' : '2';\n instructions += `\n## Step ${envStepNumber}: Set Environment Variable\n\\`\\`\\`bash\nexport MUTAGENT_API_KEY=${apiKey.substring(0, 12)}...\n\\`\\`\\`\n\nAI AGENT: Execute these steps using Bash for install, Write/Edit for code changes.\n`;\n\n // Output\n if (options.output) {\n writeFileSync(options.output, instructions);\n output.success(`Integration instructions saved to ${options.output}`);\n } else if (options.raw === true || isJson) {\n process.stdout.write(instructions);\n } else {\n const displayName = meta?.displayName ?? frameworkArg;\n output.info(`MutagenT + ${displayName} Integration Instructions`);\n output.info('─'.repeat(60));\n process.stdout.write(instructions);\n }\n\n // Verify if requested\n if (options.verify) {\n output.info('');\n output.info('--- Verification ---');\n output.success('Integration verified');\n }\n\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // List frameworks subcommand\n integrate\n .command('list')\n .description('List available framework integrations')\n .action(() => {\n const isJson = getJsonFlag(integrate);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n const frameworks = frameworkMetadata.map(f => ({\n name: f.name,\n displayName: f.displayName,\n description: f.description,\n npmPackage: f.npmPackage,\n mutagentPackage: f.mutagentPackage,\n }));\n\n output.output(frameworks);\n });\n\n return integrate;\n}\n",
17
18
  "import { readFileSync, existsSync } from 'fs';\nimport type { FrameworkIntegration, DetectionResult, IntegrationConfig } from './types.js';\n\nfunction renderPrerequisites(config: IntegrationConfig): string {\n const keyPreview = config.apiKey.slice(0, 8) + '...' + config.apiKey.slice(-4);\n return `✓ MUTAGENT_API_KEY: ${keyPreview}\n✓ MUTAGENT_ENDPOINT: ${config.endpoint}\n✓ API Connection: Verified`;\n}\n\nexport const mastraIntegration: FrameworkIntegration = {\n name: 'mastra',\n description: 'Mastra AI framework',\n\n async detect(): Promise<DetectionResult> {\n const files = ['mastra.config.ts', 'mastra.config.js'];\n const found: string[] = [];\n \n for (const file of files) {\n if (existsSync(file)) {\n found.push(file);\n }\n }\n\n // Check package.json\n let hasMastraDep = false;\n if (existsSync('package.json')) {\n try {\n const pkg = JSON.parse(readFileSync('package.json', 'utf-8'));\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\n hasMastraDep = '@mastra/core' in deps;\n } catch {\n // Ignore\n }\n }\n\n return {\n detected: found.length > 0 || hasMastraDep,\n confidence: found.length > 0 ? 0.95 : hasMastraDep ? 0.7 : 0,\n files: found,\n };\n },\n\n async generate(config: IntegrationConfig): Promise<string> {\n return `---\nname: mutagent-mastra-integration\ndescription: Integrate MutagenT with Mastra framework for prompt optimization and trace observability\nframework: mastra\nversion: 1.0.0\n---\n\n# MutagenT + Mastra Integration\n\n## Prerequisites Verification\n\n${renderPrerequisites(config)}\n\n## Installation\n\n\\`\\`\\`bash\nbun add @mutagent/sdk\n# or\nnpm install @mutagent/sdk\n\\`\\`\\`\n\n## Configuration\n\n### 1. Environment Variables\n\nAdd to your \\`.env\\` file:\n\n\\`\\`\\`env\nMUTAGENT_API_KEY=${config.apiKey}\nMUTAGENT_ENDPOINT=${config.endpoint}\n\\`\\`\\`\n\n### 2. Mastra Config Integration\n\nUpdate \\`mastra.config.ts\\`:\n\n\\`\\`\\`typescript\nimport { defineConfig } from '@mastra/core';\nimport { MutagentObserver } from '@mutagent/sdk/mastra';\n\nexport default defineConfig({\n observers: [\n new MutagentObserver({\n apiKey: process.env.MUTAGENT_API_KEY!,\n endpoint: process.env.MUTAGENT_ENDPOINT,\n // Optional: auto-capture all agent traces\n captureTraces: true,\n })\n ],\n});\n\\`\\`\\`\n\n### 3. Per-Agent Configuration\n\nFor specific agents only:\n\n\\`\\`\\`typescript\nimport { Agent } from '@mastra/core';\nimport { withMutagent } from '@mutagent/sdk/mastra';\n\nconst agent = new Agent({\n name: 'support-agent',\n instructions: '...',\n});\n\n// Wrap with MutagenT observability\nexport default withMutagent(agent, {\n promptId: 'support-template',\n autoOptimize: true,\n});\n\\`\\`\\`\n\n## Usage\n\n### Trace Collection (Replaces Langfuse)\n\nAll agent calls are automatically traced to MutagenT:\n\n\\`\\`\\`typescript\nconst result = await agent.generate('How do I reset my password?');\n// Trace automatically captured with latency, tokens, input/output\n\\`\\`\\`\n\n### Prompt Optimization\n\n\\`\\`\\`typescript\nimport { optimizePrompt } from '@mutagent/sdk';\n\n// Run optimization for a prompt\nconst optimized = await optimizePrompt({\n promptId: 'support-template',\n datasetId: 'support-tickets',\n metric: 'response_quality',\n});\n\n// Update agent with optimized prompt\nagent.instructions = optimized.content;\n\\`\\`\\`\n\n### Manual Tracing\n\nFor custom traces:\n\n\\`\\`\\`typescript\nimport { trace } from '@mutagent/sdk';\n\nconst span = trace.start({\n name: 'custom-operation',\n promptId: 'my-prompt',\n});\n\ntry {\n const result = await doSomething();\n span.end({ output: result });\n} catch (error) {\n span.error(error);\n}\n\\`\\`\\`\n\n## Migration from Langfuse\n\nReplace Langfuse imports:\n\n\\`\\`\\`typescript\n// Before\nimport { Langfuse } from 'langfuse';\n\n// After\nimport { MutagentObserver } from '@mutagent/sdk/mastra';\n\\`\\`\\`\n\n## Verification\n\nRun this to verify your integration:\n\n\\`\\`\\`bash\nmutagent integrate mastra --verify\n\\`\\`\\`\n\n## Next Steps\n\n1. Create your first prompt: \\`mutagent prompts create --interactive\\`\n2. Add a dataset: \\`mutagent prompts datasets:add <prompt-id> --file data.jsonl\\`\n3. Run optimization: \\`mutagent prompts optimize <prompt-id> --dataset <dataset-id>\\`\n4. View traces: \\`mutagent traces list --prompt <prompt-id>\\`\n\n## CLI Commands Reference\n\n\\`\\`\\`bash\n# List prompts\nmutagent prompts list\n\n# Get prompt with traces\nmutagent prompts get <id> --with-datasets\n\n# Analyze traces\nmutagent traces analyze <prompt-id>\n\\`\\`\\`\n`;\n },\n\n};\n",
@@ -29,7 +30,7 @@
29
30
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getSDKClient } from '../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { MutagentError, handleError } from '../lib/errors.js';\nimport { providerSettingsLink } from '../lib/ui-links.js';\nimport type { Provider, ProviderType } from '../types/index.js';\n\n// Valid provider types for validation\nconst VALID_PROVIDER_TYPES: ProviderType[] = [\n 'openai',\n 'anthropic',\n 'google',\n 'azure',\n 'bedrock',\n 'cohere',\n 'mistral',\n 'groq',\n 'together',\n 'replicate',\n 'custom',\n];\n\n// Command option interfaces for type safety\ninterface ListOptions {\n limit: string;\n offset?: string;\n type?: string;\n}\n\n/**\n * Validates that the provider type is valid\n */\nfunction validateProviderType(type: string): ProviderType {\n if (!VALID_PROVIDER_TYPES.includes(type as ProviderType)) {\n throw new MutagentError(\n 'INVALID_PROVIDER_TYPE',\n `Invalid provider type: ${type}`,\n `Valid types: ${VALID_PROVIDER_TYPES.join(', ')}`\n );\n }\n return type as ProviderType;\n}\n\nexport function createProvidersCommand(): Command {\n const providers = new Command('providers')\n .description('View LLM providers (read-only)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent providers list\n ${chalk.dim('$')} mutagent providers get <provider-id>\n ${chalk.dim('$')} mutagent providers test <provider-id>\n\nProvider Types:\n openai, anthropic, google, azure, bedrock, cohere, mistral, groq, together, replicate, custom\n\nSubcommands:\n list, get, test\n\nNote: Provider management (create, update, delete) is available in the Admin Panel only.\n `);\n\n // =========================================================================\n // PROVIDER READ-ONLY OPERATIONS\n // =========================================================================\n\n // List providers\n providers\n .command('list')\n .description('List all providers')\n .option('-l, --limit <n>', 'Limit results', '50')\n .option('-o, --offset <n>', 'Offset for pagination')\n .option('-t, --type <type>', 'Filter by provider type')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent providers list\n ${chalk.dim('$')} mutagent providers list --type openai\n ${chalk.dim('$')} mutagent providers list --json\n `)\n .action(async (options: ListOptions) => {\n const isJson = getJsonFlag(providers);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const filters: { limit?: number; offset?: number; type?: string } = {\n limit: parseInt(options.limit, 10) || 50,\n };\n\n if (options.offset) {\n filters.offset = parseInt(options.offset, 10);\n }\n if (options.type) {\n filters.type = validateProviderType(options.type);\n }\n\n const result = await client.listProviders(filters);\n\n if (isJson) {\n output.output(result);\n } else {\n if (result.data.length === 0) {\n output.info('No providers configured.');\n output.info(`Configure at: ${providerSettingsLink()}`);\n } else {\n // Format for table\n const formatted = result.data.map((p: Provider) => ({\n id: p.id,\n name: p.name,\n type: p.type,\n baseUrl: p.baseUrl ?? 'default',\n active: p.isActive ? 'Yes' : 'No',\n updated: p.updatedAt ? new Date(p.updatedAt).toLocaleDateString() : 'N/A',\n }));\n output.output(formatted);\n }\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get provider\n providers\n .command('get')\n .description('Get provider details')\n .argument('<id>', 'Provider ID (from: mutagent providers list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent providers get <provider-id>\n ${chalk.dim('$')} mutagent providers get <provider-id> --json\n `)\n .action(async (id: string) => {\n const isJson = getJsonFlag(providers);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n const provider = await client.getProvider(id);\n\n if (isJson) {\n output.output(provider);\n } else {\n // Format for display\n const formatted: Record<string, unknown> = {\n id: provider.id,\n name: provider.name,\n type: provider.type,\n baseUrl: provider.baseUrl ?? 'default',\n isActive: provider.isActive ? 'Yes' : 'No',\n createdBy: provider.createdBy ?? 'N/A',\n createdAt: provider.createdAt ? new Date(provider.createdAt).toLocaleString() : 'N/A',\n updatedAt: provider.updatedAt ? new Date(provider.updatedAt).toLocaleString() : 'N/A',\n };\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Test provider connectivity\n providers\n .command('test')\n .description('Test provider connectivity')\n .argument('<id>', 'Provider ID (from: mutagent providers list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent providers test <provider-id>\n ${chalk.dim('$')} mutagent providers test <provider-id> --json\n\n${chalk.dim('Tests connectivity and lists available models for the provider.')}\n `)\n .action(async (id: string) => {\n const isJson = getJsonFlag(providers);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = getSDKClient();\n\n if (!isJson) {\n output.info(`Testing provider ${id}...`);\n }\n\n const result = await client.testProvider(id);\n\n if (isJson) {\n output.output(result);\n } else {\n if (result.success) {\n output.success(`Provider test passed (${String(result.responseTimeMs)}ms)`);\n console.log(chalk.green(`Message: ${result.message}`));\n if (result.availableModels && result.availableModels.length > 0) {\n console.log(chalk.bold('\\nAvailable Models:'));\n result.availableModels.forEach(model => {\n console.log(` - ${model}`);\n });\n }\n } else {\n output.error(`Provider test failed: ${result.message}`);\n if (result.error) {\n console.log(chalk.red(`Error: ${result.error}`));\n }\n }\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return providers;\n}\n",
30
31
  "import { Command } from 'commander';\nimport inquirer from 'inquirer';\nimport chalk from 'chalk';\nimport { existsSync, readFileSync, writeFileSync } from 'fs';\nimport { execSync } from 'child_process';\nimport { join } from 'path';\nimport { hasCredentials, loadConfig } from '../lib/config.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { handleError, MutagentError } from '../lib/errors.js';\n\n// =============================================================================\n// Types\n// =============================================================================\n\ntype PackageManager = 'bun' | 'npm' | 'yarn' | 'pnpm';\n\ntype InitMode = 'full' | 'cli-only' | 'skip';\n\ninterface InitOptions {\n nonInteractive?: boolean;\n}\n\ninterface FrameworkDetection {\n name: string;\n displayName: string;\n npmPackage: string;\n mutagentPackage?: string;\n}\n\ninterface MutagentRcConfig {\n workspace?: string;\n endpoint?: string;\n framework?: string;\n}\n\n// =============================================================================\n// Framework Detection Map\n// =============================================================================\n\n/**\n * Maps package.json dependency names to framework info.\n * Order matters: more specific packages should come first.\n */\nconst FRAMEWORK_DETECTION_MAP: Record<string, FrameworkDetection> = {\n '@mastra/core': {\n name: 'mastra',\n displayName: 'Mastra',\n npmPackage: '@mastra/core',\n },\n '@langchain/langgraph': {\n name: 'langgraph',\n displayName: 'LangGraph',\n npmPackage: '@langchain/langgraph',\n mutagentPackage: '@mutagent/langgraph',\n },\n 'langchain': {\n name: 'langchain',\n displayName: 'LangChain',\n npmPackage: 'langchain',\n mutagentPackage: '@mutagent/langchain',\n },\n '@langchain/core': {\n name: 'langchain',\n displayName: 'LangChain',\n npmPackage: '@langchain/core',\n mutagentPackage: '@mutagent/langchain',\n },\n '@ai-sdk/core': {\n name: 'vercel-ai',\n displayName: 'Vercel AI SDK',\n npmPackage: '@ai-sdk/core',\n mutagentPackage: '@mutagent/vercel-ai',\n },\n 'ai': {\n name: 'vercel-ai',\n displayName: 'Vercel AI SDK',\n npmPackage: 'ai',\n mutagentPackage: '@mutagent/vercel-ai',\n },\n '@google/genai': {\n name: 'generic',\n displayName: 'Google GenAI',\n npmPackage: '@google/genai',\n },\n 'openai': {\n name: 'openai',\n displayName: 'OpenAI SDK',\n npmPackage: 'openai',\n mutagentPackage: '@mutagent/openai',\n },\n};\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\n/**\n * Detect the package manager by scanning lockfiles in cwd\n */\nexport function detectPackageManager(cwd: string = process.cwd()): PackageManager {\n if (existsSync(join(cwd, 'bun.lockb')) || existsSync(join(cwd, 'bun.lock'))) {\n return 'bun';\n }\n if (existsSync(join(cwd, 'pnpm-lock.yaml'))) {\n return 'pnpm';\n }\n if (existsSync(join(cwd, 'yarn.lock'))) {\n return 'yarn';\n }\n if (existsSync(join(cwd, 'package-lock.json'))) {\n return 'npm';\n }\n\n // Fallback: check if bun is available\n try {\n execSync('bun --version', { stdio: 'ignore' });\n return 'bun';\n } catch {\n return 'npm';\n }\n}\n\n/**\n * Build an install command for the given package manager and packages\n */\nexport function getInstallCommand(pm: PackageManager, packages: string[]): string {\n const pkgList = packages.join(' ');\n const commands: Record<PackageManager, string> = {\n bun: `bun add ${pkgList}`,\n npm: `npm install ${pkgList}`,\n yarn: `yarn add ${pkgList}`,\n pnpm: `pnpm add ${pkgList}`,\n };\n return commands[pm];\n}\n\n/**\n * Detect framework from package.json dependencies in cwd\n */\nexport function detectFrameworkFromPackageJson(cwd: string = process.cwd()): FrameworkDetection | null {\n const pkgPath = join(cwd, 'package.json');\n if (!existsSync(pkgPath)) {\n return null;\n }\n\n let pkg: { dependencies?: Record<string, string>; devDependencies?: Record<string, string> };\n try {\n pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as typeof pkg;\n } catch {\n return null;\n }\n\n const allDeps = {\n ...pkg.dependencies,\n ...pkg.devDependencies,\n };\n\n // Check detection map in order (more specific first)\n for (const [depName, framework] of Object.entries(FRAMEWORK_DETECTION_MAP)) {\n if (depName in allDeps) {\n return framework;\n }\n }\n\n return null;\n}\n\n/**\n * Check if .mutagentrc.json already exists in cwd\n */\nexport function hasRcConfig(cwd: string = process.cwd()): boolean {\n return existsSync(join(cwd, '.mutagentrc.json'));\n}\n\n/**\n * Write .mutagentrc.json to cwd\n */\nfunction writeRcConfig(config: MutagentRcConfig, cwd: string = process.cwd()): void {\n const rcPath = join(cwd, '.mutagentrc.json');\n writeFileSync(rcPath, JSON.stringify(config, null, 2) + '\\n');\n}\n\n// =============================================================================\n// Init Command\n// =============================================================================\n\nexport function createInitCommand(): Command {\n const init = new Command('init')\n .description('Initialize MutagenT in your project')\n .option('--non-interactive', 'Skip interactive prompts (defaults to CLI-only mode)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent init # Interactive setup wizard\n ${chalk.dim('$')} mutagent init --non-interactive # CLI-only mode (no prompts)\n\nModes:\n ${chalk.bold('Full scaffold')} Install SDK + integration package, create config, setup tracing\n ${chalk.bold('CLI-only')} Verify auth + create .mutagentrc.json with workspace/endpoint\n ${chalk.bold('Skip')} Exit without changes\n `)\n .action(async (options: InitOptions) => {\n const isJson = getJsonFlag(init);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const isNonInteractive =\n options.nonInteractive === true ||\n process.env.MUTAGENT_NON_INTERACTIVE === 'true' ||\n process.env.CI === 'true' ||\n !process.stdin.isTTY;\n\n const cwd = process.cwd();\n\n // Step 1: Check existing config\n if (hasRcConfig(cwd)) {\n output.warn('.mutagentrc.json already exists in this directory.');\n if (isNonInteractive) {\n output.info('Use --force to overwrite (not yet supported). Exiting.');\n return;\n }\n const { overwrite } = await inquirer.prompt<{ overwrite: boolean }>([{\n type: 'confirm',\n name: 'overwrite',\n message: '.mutagentrc.json already exists. Overwrite?',\n default: false,\n }]);\n if (!overwrite) {\n output.info('Init cancelled.');\n return;\n }\n }\n\n // Step 2: Check auth\n const authenticated = hasCredentials();\n if (!authenticated) {\n output.warn('Not authenticated.');\n output.info('Run: mutagent auth login --browser');\n if (isNonInteractive) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n 'Authentication required before init',\n 'Run: mutagent auth login --browser'\n );\n }\n const { doAuth } = await inquirer.prompt<{ doAuth: boolean }>([{\n type: 'confirm',\n name: 'doAuth',\n message: 'Would you like to authenticate now?',\n default: true,\n }]);\n if (doAuth) {\n output.info('Run \"mutagent auth login --browser\" and then re-run \"mutagent init\".');\n return;\n }\n }\n\n // Step 3: Detect framework\n const detectedFramework = detectFrameworkFromPackageJson(cwd);\n\n // Step 4: Determine mode\n let mode: InitMode;\n let confirmedFramework: FrameworkDetection | null = detectedFramework;\n\n if (isNonInteractive) {\n mode = 'cli-only';\n if (isJson) {\n output.output({\n mode: 'cli-only',\n nonInteractive: true,\n detectedFramework: detectedFramework?.name ?? null,\n });\n }\n } else {\n // Show detected framework\n if (detectedFramework) {\n output.info(`Detected framework: ${detectedFramework.displayName} (${detectedFramework.npmPackage})`);\n\n const { confirmFramework } = await inquirer.prompt<{ confirmFramework: boolean }>([{\n type: 'confirm',\n name: 'confirmFramework',\n message: `Use ${detectedFramework.displayName}?`,\n default: true,\n }]);\n\n if (!confirmFramework) {\n const frameworkChoices = [\n { name: 'Mastra', value: 'mastra' },\n { name: 'LangChain', value: 'langchain' },\n { name: 'LangGraph', value: 'langgraph' },\n { name: 'Vercel AI SDK', value: 'vercel-ai' },\n { name: 'OpenAI SDK', value: 'openai' },\n { name: 'Generic (OpenAI-compatible)', value: 'generic' },\n { name: 'None / Skip framework', value: 'none' },\n ];\n\n const { selectedFramework } = await inquirer.prompt<{ selectedFramework: string }>([{\n type: 'list',\n name: 'selectedFramework',\n message: 'Select your AI framework:',\n choices: frameworkChoices,\n }]);\n\n if (selectedFramework === 'none') {\n confirmedFramework = null;\n } else {\n // Find framework in detection map by name\n const entry = Object.values(FRAMEWORK_DETECTION_MAP).find(f => f.name === selectedFramework);\n confirmedFramework = entry ?? null;\n }\n }\n } else {\n output.info('No AI framework detected in package.json.');\n }\n\n // Ask mode\n const modeChoices = [\n ...(confirmedFramework?.mutagentPackage ? [{\n name: `Full scaffold - Install @mutagent/sdk + ${confirmedFramework.mutagentPackage}, create config, setup tracing`,\n value: 'full' as const,\n }] : []),\n {\n name: 'CLI-only - Verify auth + create .mutagentrc.json config',\n value: 'cli-only' as const,\n },\n {\n name: 'Skip - Exit without changes',\n value: 'skip' as const,\n },\n ];\n\n const { selectedMode } = await inquirer.prompt<{ selectedMode: InitMode }>([{\n type: 'list',\n name: 'selectedMode',\n message: 'How would you like to initialize MutagenT?',\n choices: modeChoices,\n }]);\n\n mode = selectedMode;\n }\n\n // Step 5: Execute based on mode\n if (mode === 'skip') {\n output.info('Init skipped.');\n return;\n }\n\n // Load config for workspace/endpoint\n const config = loadConfig();\n const endpoint = config.endpoint ?? 'https://api.mutagent.io';\n const workspace = config.defaultWorkspace;\n\n const rcConfig: MutagentRcConfig = {\n endpoint,\n ...(workspace ? { workspace } : {}),\n ...(confirmedFramework ? { framework: confirmedFramework.name } : {}),\n };\n\n if (mode === 'full' && confirmedFramework?.mutagentPackage) {\n // Full scaffold: install packages + create config\n const pm = detectPackageManager(cwd);\n const packages = ['@mutagent/sdk', confirmedFramework.mutagentPackage];\n const installCmd = getInstallCommand(pm, packages);\n\n output.info(`Installing: ${packages.join(', ')}`);\n output.info(`Running: ${installCmd}`);\n\n try {\n execSync(installCmd, { cwd, stdio: 'inherit' });\n output.success('Packages installed successfully.');\n } catch {\n output.error('Package installation failed. You can install manually:');\n output.info(` ${installCmd}`);\n }\n\n // Write config\n writeRcConfig(rcConfig, cwd);\n output.success('Created .mutagentrc.json');\n\n // Print next steps\n console.log('');\n output.info('Next steps:');\n output.info(` 1. Run: mutagent integrate ${confirmedFramework.name}`);\n output.info(' 2. Follow the integration guide to add tracing to your code');\n output.info(' 3. Run: mutagent traces list (to verify traces are arriving)');\n } else {\n // CLI-only mode: just create config\n writeRcConfig(rcConfig, cwd);\n output.success('Created .mutagentrc.json');\n\n if (!authenticated) {\n output.info('Next: mutagent auth login --browser');\n } else {\n output.info('Ready! Run \"mutagent --help\" to see available commands.');\n }\n }\n\n // JSON summary\n if (isJson) {\n output.output({\n success: true,\n mode,\n configFile: '.mutagentrc.json',\n config: rcConfig,\n framework: confirmedFramework?.name ?? null,\n authenticated,\n });\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return init;\n}\n"
31
32
  ],
32
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AACA,oBAAS;AACT;AACA,yBAAS;AACT,iBAAS;AACT;;;ACLA;AACA;AACA;AACA;;;ACHA;AACA;AACA;AACA;AACA;AAGA,IAAM,eAAe,EAAE,OAAO;AAAA,EAC5B,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,UAAU,EAAE,OAAO,EAAE,QAAQ,yBAAyB;AAAA,EACtD,QAAQ,EAAE,KAAK,CAAC,SAAS,MAAM,CAAC,EAAE,QAAQ,OAAO;AAAA,EACjD,SAAS,EAAE,OAAO,EAAE,QAAQ,KAAK;AAAA,EACjC,kBAAkB,EAAE,OAAO,EAAE,SAAS;AAAA,EACtC,qBAAqB,EAAE,OAAO,EAAE,SAAS;AAC3C,CAAC;AAED,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACjC,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,kBAAkB,EAAE,OAAO,EAAE,SAAS;AAAA,EACtC,qBAAqB,EAAE,OAAO,EAAE,SAAS;AAAA,EACzC,WAAW,EAAE,OAAO,EAAE,SAAS;AACjC,CAAC,EAAE,MAAM;AAUT,IAAM,kBAAkB,KAAK,QAAQ,GAAG,WAAW,UAAU;AAC7D,IAAM,mBAAmB,KAAK,iBAAiB,kBAAkB;AAEjE,SAAS,aAAgB,CAAC,SAAiB,QAAgC;AAAA,EACzE,IAAI;AAAA,IACF,MAAM,SAAkB,KAAK,MAAM,OAAO;AAAA,IAC1C,OAAO,OAAO,MAAM,MAAM;AAAA,IAC1B,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIJ,SAAS,UAAU,GAAW;AAAA,EAEnC,MAAM,WAAW,gBAAgB,UAAU;AAAA,EAC3C,MAAM,SAAS,SAAS,OAAO;AAAA,EAG/B,MAAM,WAAW,QAAQ;AAAA,EAGzB,IAAI,cAAwD;AAAA,EAC5D,IAAI,WAAW,gBAAgB,GAAG;AAAA,IAChC,cAAc,cAAc,aAAa,kBAAkB,OAAO,GAAG,iBAAiB;AAAA,EACxF;AAAA,EAGA,MAAM,SAAS;AAAA,IACb,WAAW,CAAC;AAAA,IACZ,aAAa;AAAA,OACV;AAAA,OACA;AAAA,IACH,QAAQ,QAAQ,IAAI,oBAAoB,aAAa,UAAW,UAAU;AAAA,IAC1E,UAAU,QAAQ,IAAI,qBAAqB,aAAa,YAAa,UAAU;AAAA,IAC/E,kBAAkB,aAAa,oBAAqB,UAAU;AAAA,IAC9D,qBAAqB,aAAa,uBAAwB,UAAU;AAAA,EACtE;AAAA,EAEA,OAAO,aAAa,MAAM,MAAM;AAAA;AAG3B,SAAS,eAAe,CAAC,QAAgB,UAAyB;AAAA,EACvE,IAAI,CAAC,WAAW,eAAe,GAAG;AAAA,IAChC,UAAU,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,EAChD;AAAA,EAEA,MAAM,SAAS,WAAW;AAAA,EAC1B,MAAM,cAAc;AAAA,IAClB;AAAA,IACA,UAAU,YAAY,OAAO;AAAA,EAC/B;AAAA,EAEA,cAAc,kBAAkB,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC;AAAA;AAO/D,SAAS,mBAAmB,CAAC,OAA8B;AAAA,EAChE,IAAI,CAAC,WAAW,eAAe,GAAG;AAAA,IAChC,UAAU,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,EAChD;AAAA,EAGA,IAAI,sBAA+C,CAAC;AAAA,EACpD,IAAI,WAAW,gBAAgB,GAAG;AAAA,IAChC,IAAI;AAAA,MACF,sBAAsB,KAAK,MAAM,aAAa,kBAAkB,OAAO,CAAC;AAAA,MACxE,MAAM;AAAA,EAGV;AAAA,EAEA,MAAM,cAAc;AAAA,OACf;AAAA,IACH,QAAQ,MAAM;AAAA,IACd,UAAU,MAAM,YAAY,oBAAoB,YAAY;AAAA,IAC5D,kBAAkB,MAAM,eAAe,oBAAoB;AAAA,IAC3D,qBAAqB,MAAM,kBAAkB,oBAAoB;AAAA,IACjE,WAAW,MAAM;AAAA,EACnB;AAAA,EAEA,cAAc,kBAAkB,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC;AAAA;AAG/D,SAAS,gBAAgB,GAAS;AAAA,EACvC,IAAI,WAAW,gBAAgB,GAAG;AAAA,IAChC,cAAc,kBAAkB,KAAK,UAAU,CAAC,CAAC,CAAC;AAAA,EACpD;AAAA;AAGK,SAAS,cAAc,GAAY;AAAA,EACxC,IAAI,QAAQ,IAAI;AAAA,IAAkB,OAAO;AAAA,EACzC,IAAI,CAAC,WAAW,gBAAgB;AAAA,IAAG,OAAO;AAAA,EAE1C,MAAM,cAAc,cAAc,aAAa,kBAAkB,OAAO,GAAG,iBAAiB;AAAA,EAC5F,OAAO,aAAa,WAAW,aAAa,YAAY,WAAW;AAAA;AAG9D,SAAS,SAAS,GAAuB;AAAA,EAC9C,OAAO,QAAQ,IAAI,oBAAoB,WAAW,EAAE;AAAA;AAG/C,SAAS,mBAAmB,CAAC,aAA2B;AAAA,EAC7D,IAAI,CAAC,WAAW,eAAe,GAAG;AAAA,IAChC,UAAU,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,EAChD;AAAA,EAEA,IAAI,sBAA+C,CAAC;AAAA,EACpD,IAAI,WAAW,gBAAgB,GAAG;AAAA,IAChC,IAAI;AAAA,MACF,sBAAsB,KAAK,MAAM,aAAa,kBAAkB,OAAO,CAAC;AAAA,MACxE,MAAM;AAAA,EAGV;AAAA,EAEA,MAAM,UAAU;AAAA,OACX;AAAA,IACH,kBAAkB;AAAA,EACpB;AAAA,EAEA,cAAc,kBAAkB,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA;AAG3D,SAAS,sBAAsB,CAAC,gBAA8B;AAAA,EACnE,IAAI,CAAC,WAAW,eAAe,GAAG;AAAA,IAChC,UAAU,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAAA,EAChD;AAAA,EAEA,IAAI,sBAA+C,CAAC;AAAA,EACpD,IAAI,WAAW,gBAAgB,GAAG;AAAA,IAChC,IAAI;AAAA,MACF,sBAAsB,KAAK,MAAM,aAAa,kBAAkB,OAAO,CAAC;AAAA,MACxE,MAAM;AAAA,EAGV;AAAA,EAEA,MAAM,UAAU;AAAA,OACX;AAAA,IACH,qBAAqB;AAAA,EACvB;AAAA,EAEA,cAAc,kBAAkB,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA;;;AC/KlE;;;ACFO,MAAM,sBAAsB,MAAM;AAAA,EAE9B;AAAA,EAEA;AAAA,EACA;AAAA,EAJT,WAAW,CACF,MACP,SACO,YACA,WAAW,GAClB;AAAA,IACA,MAAM,OAAO;AAAA,IALN;AAAA,IAEA;AAAA,IACA;AAAA,IAGP,KAAK,OAAO;AAAA;AAAA,EAGd,MAAM,GAAsE;AAAA,IAC1E,OAAO;AAAA,MACL,OAAO;AAAA,QACL,MAAM,KAAK;AAAA,QACX,SAAS,KAAK;AAAA,QACd,YAAY,KAAK;AAAA,MACnB;AAAA,IACF;AAAA;AAEJ;AAOO,IAAM,2BAA2B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK;AAAA,CAAI;AAAA;AAEJ,MAAM,4BAA4B,cAAc;AAAA,EAC5C;AAAA,EACS;AAAA,EAElB,WAAW,CACT,SACA,UAAsC,CAAC,GACvC;AAAA,IACA,MACE,iBACA,WAAW,6DACX,QAAQ,cAAc,QAAQ,YAAY,KAAK,sCAC/C,CACF;AAAA,IACA,KAAK,cAAc,QAAQ,eAAe;AAAA,MACxC;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,aAAa,QAAQ,cAAc,QAAQ,YAAY,KAAK;AAAA,IACjE,KAAK,QAAQ,QAAQ;AAAA;AAEzB;AAAA;AAEO,MAAM,iBAAiB,cAAc;AAAA,EACjC;AAAA,EAET,WAAW,CAAC,QAAgB,SAAiB;AAAA,IAC3C,MACE,OAAO,UACP,SACA,WAAW,MAAM,kDAAkD,WACnE,CACF;AAAA,IACA,KAAK,aAAa;AAAA;AAEtB;AAEO,IAAM,gCAAgC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK;AAAA,CAAI;AAAA;AAEJ,MAAM,8BAA8B,cAAc;AAAA,EACvD,WAAW,CAAC,SAAkB;AAAA,IAC5B,MACE,6BACA,WAAW,oDACX,qDACA,CACF;AAAA;AAEJ;AAAA;AAEO,MAAM,wBAAwB,cAAc;AAAA,EACjD,WAAW,CAAC,SAAiB;AAAA,IAC3B,MACE,oBACA,SACA,4DACA,CACF;AAAA;AAEJ;AAmLO,SAAS,WAAW,CAAC,OAAgB,QAAwB;AAAA,EAClE,IAAI,iBAAiB,eAAe;AAAA,IAClC,IAAI,QAAQ;AAAA,MACV,MAAM,aAAa,MAAM,OAAO;AAAA,MAEhC,IAAI,iBAAiB,qBAAqB;AAAA,QACvC,WAAuC,cAAc;AAAA,UACpD,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MAEA,IAAI,iBAAiB,uBAAuB;AAAA,QACzC,WAAuC,cAAc;AAAA,UACpD,cAAc;AAAA,UACd,gBAAgB;AAAA,QAClB;AAAA,MACF;AAAA,MAEA,IAAI,iBAAiB,YAAY,MAAM,eAAe,KAAK;AAAA,QACxD,WAAuC,cAAc;AAAA,UACpD,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,kBAAkB;AAAA,QACpB;AAAA,MACF;AAAA,MACA,QAAQ,IAAI,KAAK,UAAU,YAAY,MAAM,CAAC,CAAC;AAAA,IACjD,EAAO;AAAA,MACL,QAAQ,MAAM,UAAU,MAAM,SAAS;AAAA,MACvC,IAAI,iBAAiB,qBAAqB;AAAA,QACxC,QAAQ,MAAM,EAAE;AAAA,QAChB,QAAQ,MAAM,wBAAwB;AAAA,MACxC,EAAO,SAAI,iBAAiB,uBAAuB;AAAA,QACjD,QAAQ,MAAM,EAAE;AAAA,QAChB,QAAQ,MAAM,6BAA6B;AAAA,MAC7C,EAAO,SAAI,iBAAiB,YAAY,MAAM,eAAe,KAAK;AAAA,QAChE,QAAQ,MAAM,EAAE;AAAA,QAChB,QAAQ,MAAM,wBAAwB;AAAA,QACtC,QAAQ,MAAM,sDAAsD;AAAA,QACpE,QAAQ,MAAM,iEAAiE;AAAA,MACjF,EAAO,SAAI,iBAAiB,iBAAiB;AAAA,QAC3C,IAAI,MAAM,YAAY;AAAA,UACpB,QAAQ,MAAM,eAAe,MAAM,YAAY;AAAA,QACjD;AAAA,QACA,QAAQ,MAAM,EAAE;AAAA,QAChB,QAAQ,MAAM,wDAAwD;AAAA,MACxE,EAAO,SAAI,MAAM,YAAY;AAAA,QAC3B,QAAQ,MAAM,eAAe,MAAM,YAAY;AAAA,MACjD;AAAA,MAEA,IAAI,MAAM,SAAS,uBAAuB,MAAM,SAAS,uBAAuB,MAAM,SAAS,iBAAiB;AAAA,QAC9G,QAAQ,MAAM,EAAE;AAAA,QAChB,QAAQ,MAAM,wDAAwD;AAAA,MACxE;AAAA;AAAA,IAEF,QAAQ,KAAK,MAAM,QAAQ;AAAA,EAC7B;AAAA,EAGA,IAAI,SAAS,OAAO,UAAU,UAAU;AAAA,IACtC,MAAM,SAAS;AAAA,IACf,IACE,OAAO,SAAS,wBAChB,OAAO,SAAS,cAChB,OAAO,aAAa,aACpB,OAAO,eAAe,WACtB;AAAA,MACA,MAAM,kBAAkB,OAAO,cAAc,OAAO,WAAW;AAAA,MAC/D,MAAM,UAAU,IAAI,cAClB,kBACA,iBACA,gFACF;AAAA,MACA,IAAI,QAAQ;AAAA,QACV,QAAQ,IAAI,KAAK,UAAU,QAAQ,OAAO,GAAG,MAAM,CAAC,CAAC;AAAA,MACvD,EAAO;AAAA,QACL,QAAQ,MAAM,UAAU,QAAQ,SAAS;AAAA,QACzC,IAAI,QAAQ,YAAY;AAAA,UACtB,QAAQ,MAAM,eAAe,QAAQ,YAAY;AAAA,QACnD;AAAA;AAAA,MAEF,QAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AAAA,EAGA,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AAAA,EACzD,IAAI,QAAQ;AAAA,IACV,QAAQ,IAAI,KAAK,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,QAAQ,EAAE,GAAG,MAAM,CAAC,CAAC;AAAA,EACpF,EAAO;AAAA,IACL,QAAQ,MAAM,UAAU,SAAS;AAAA;AAAA,EAEnC,QAAQ,KAAK,CAAC;AAAA;;;ADpWhB,MAAM,iBAAiB;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,WAAW,CAAC,MAAiG;AAAA,IAC3G,KAAK,SAAS,KAAK;AAAA,IACnB,KAAK,WAAW,KAAK,aAAa;AAAA,IAClC,KAAK,cAAc,KAAK;AAAA,IACxB,KAAK,iBAAiB,KAAK;AAAA,IAG3B,MAAM,aAAa,IAAI;AAAA,IACvB,WAAW,QAAQ,iBAAiB,CAAC,QAAQ;AAAA,MAC3C,IAAI,KAAK;AAAA,QAAa,IAAI,QAAQ,IAAI,kBAAkB,KAAK,WAAW;AAAA,MACxE,IAAI,KAAK;AAAA,QAAgB,IAAI,QAAQ,IAAI,qBAAqB,KAAK,cAAc;AAAA,MACjF,OAAO;AAAA,KACR;AAAA,IAED,KAAK,MAAM,IAAI,SAAS;AAAA,MACtB,UAAU;AAAA,QACR,QAAQ,KAAK;AAAA,MACf;AAAA,MACA,WAAW,KAAK;AAAA,MAChB;AAAA,IACF,CAAC;AAAA;AAAA,EAQK,WAAW,CAAC,OAAuB;AAAA,IACzC,IAAI,SAAS,OAAO,UAAU,UAAU;AAAA,MACtC,MAAM,MAAM;AAAA,MAEZ,IAAI,IAAI,eAAe,KAAK;AAAA,QAC1B,MAAM,IAAI;AAAA,MACZ;AAAA,MACA,IAAI,IAAI,eAAe,KAAK;AAAA,QAC1B,MAAM,IAAI,SAAS,KAAK,IAAI,WAAW,IAAI,QAAQ,eAAe;AAAA,MACpE;AAAA,MAGA,MAAM,cAAc,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY;AAAA,MAC/D,IACE,WAAW,SAAS,WAAW,MAAM,WAAW,SAAS,SAAS,KAAK,WAAW,SAAS,UAAU,MACrG,WAAW,SAAS,gBAAgB,GACpC;AAAA,QACA,MAAM,IAAI,sBAAsB,IAAI,WAAW,IAAI,QAAQ,SAAS;AAAA,MACtE;AAAA,MAEA,IAAI,IAAI,YAAY;AAAA,QAClB,MAAM,IAAI,SAAS,IAAI,YAAY,IAAI,WAAW,IAAI,QAAQ,eAAe;AAAA,MAC/E;AAAA,MAGA,IACE,IAAI,SAAS,wBACb,IAAI,SAAS,cACb,IAAI,aAAa,aACjB,IAAI,eAAe,WACnB;AAAA,QACA,MAAM,kBAAkB,IAAI,cAAc,IAAI,WAAW;AAAA,QACzD,MAAM,IAAI,cACR,kBACA,iBACA,gFACF;AAAA,MACF;AAAA,IACF;AAAA,IAGA,IAAI,iBAAiB,aAAa,OAAO,MAAM,YAAY,UAAU;AAAA,MACnE,IAAI,MAAM,QAAQ,SAAS,OAAO,KAAK,MAAM,QAAQ,SAAS,SAAS,KAAK,MAAM,QAAQ,SAAS,cAAc,GAAG;AAAA,QAClH,MAAM,IAAI,cACR,iBACA,4CACA,qFACF;AAAA,MACF;AAAA,IACF;AAAA,IAGA,IAAI,iBAAiB,OAAO;AAAA,MAC1B,MAAM,IAAI,cACR,kBACA,MAAM,SACN,+CACF;AAAA,IACF;AAAA,IAEA,MAAM,IAAI,cACR,iBACA,gCACA,+CACF;AAAA;AAAA,OAMY,QAAU,CAAC,MAAc,SAAmC;AAAA,IAExE,MAAM,aAAa,SAAS;AAAA,IAC5B,IAAI,eAAuC,CAAC;AAAA,IAC5C,IAAI,sBAAsB,SAAS;AAAA,MACjC,WAAW,QAAQ,CAAC,OAAO,QAAQ;AAAA,QACjC,aAAa,OAAO;AAAA,OACrB;AAAA,IACH,EAAO,SAAI,YAAY;AAAA,MACrB,eAAe;AAAA,IACjB;AAAA,IAGA,MAAM,iBAAyC,CAAC;AAAA,IAChD,IAAI,KAAK;AAAA,MAAa,eAAe,oBAAoB,KAAK;AAAA,IAC9D,IAAI,KAAK;AAAA,MAAgB,eAAe,uBAAuB,KAAK;AAAA,IAEpE,MAAM,WAAW,MAAM,MAAM,GAAG,KAAK,WAAW,QAAQ;AAAA,SACnD;AAAA,MACH,SAAS;AAAA,QACP,aAAa,KAAK;AAAA,QAClB,gBAAgB;AAAA,WACb;AAAA,WACA;AAAA,MACL;AAAA,IACF,CAAC;AAAA,IAED,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,IAAI,SAAS,WAAW,KAAK;AAAA,QAC3B,MAAM,IAAI;AAAA,MACZ;AAAA,MACA,IAAI,SAAS,WAAW,KAAK;AAAA,QAC3B,MAAM,IAAI,SAAS,KAAK,MAAM,SAAS,KAAK,KAAK,eAAe;AAAA,MAClE;AAAA,MACA,MAAM,QAAQ,MAAM,SAAS,KAAK;AAAA,MAElC,MAAM,aAAa,MAAM,YAAY;AAAA,MACrC,IACE,WAAW,SAAS,WAAW,MAAM,WAAW,SAAS,SAAS,KAAK,WAAW,SAAS,UAAU,MACrG,WAAW,SAAS,gBAAgB,GACpC;AAAA,QACA,MAAM,IAAI,sBAAsB,KAAK;AAAA,MACvC;AAAA,MACA,MAAM,IAAI,SAAS,SAAS,QAAQ,KAAK;AAAA,IAC3C;AAAA,IAEA,OAAO,SAAS,KAAK;AAAA;AAAA,OAOjB,YAAW,GAAsB;AAAA,IACrC,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,YAAY;AAAA,MACnD,OAAO,SAAS,OAAO;AAAA,MACvB,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,UAAS,CAAC,IAA6B;AAAA,IAC3C,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,UAAU,EAAE,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;AAAA,MACzE,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,aAAY,CAAC,MAAwC;AAAA,IACzD,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,aAAa;AAAA,QAClD,MAAM,KAAK,QAAQ;AAAA,QACnB,aAAa,KAAK,eAAe;AAAA,QACjC,SAAS,KAAK,WAAW;AAAA,QACzB,UAAU,KAAK,YAAY;AAAA,QAC3B,cAAc,KAAK,gBAAgB;AAAA,QACnC,aAAa,KAAK,eAAe;AAAA,QACjC,WAAW,KAAK,aAAa;AAAA,QAC7B,aAAc,KAAK,eAAe,CAAC;AAAA,QACnC,cAAc,KAAK;AAAA,QACnB,UAAU,KAAK;AAAA,QACf,MAAM,KAAK,QAAQ;AAAA,MACrB,CAAC;AAAA,MACD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,aAAY,CAAC,IAAY,MAAwC;AAAA,IACrE,IAAI;AAAA,MACF,MAAM,OAAgC;AAAA,QACpC,aAAa,KAAK,eAAe;AAAA,QACjC,UAAU,KAAK,YAAY;AAAA,QAC3B,cAAc,KAAK,gBAAgB;AAAA,QACnC,aAAa,KAAK,eAAe;AAAA,QACjC,WAAW,KAAK,aAAa;AAAA,QAC7B,cAAc,KAAK;AAAA,QACnB,UAAU,KAAK;AAAA,QACf,MAAM,KAAK,QAAQ;AAAA,MACrB;AAAA,MACA,IAAI,KAAK,SAAS,WAAW;AAAA,QAC3B,KAAK,OAAO,KAAK;AAAA,MACnB;AAAA,MAEA,MAAM,aAAa,EAAE,IAAI,SAAS,IAAI,EAAE,GAAG,KAAK;AAAA,MAChD,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,aAAa,UAAU;AAAA,MAC9D,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,aAAY,CAAC,IAA2B;AAAA,IAC5C,IAAI;AAAA,MACF,MAAM,KAAK,IAAI,OAAO,aAAa,EAAE,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;AAAA,MAC3D,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OASpB,aAAY,CAAC,UAAsC;AAAA,IACvD,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,QAAyC,eAAe,mBAAmB;AAAA,MACvG,OAAO,MAAM,QAAQ,QAAQ,IAAI,WAAW,SAAS;AAAA,MACrD,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,WAAU,CAAC,UAAkB,aAAqB,MAA0D;AAAA,IAChH,IAAI;AAAA,MAEF,IAAI;AAAA,MACJ,IAAI;AAAA,QACF,SAAS,KAAK,MAAM,WAAW;AAAA,QAC/B,MAAM;AAAA,QAEN,SAAS;AAAA;AAAA,MAIX,IAAI,cAAc,QAAQ,WAAW,IAAI,KAAK,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE;AAAA,MACzE,IAAI;AAAA,MAEJ,IACE,WAAW,QACX,CAAC,MAAM,QAAQ,MAAM,KACrB,OAAO,WAAW,YAClB,UAAW,QACX;AAAA,QAEA,MAAM,OAAO;AAAA,QACb,cAAe,KAAK,QAAmB;AAAA,QACvC,IAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAAA,UAC7B,QAAQ,KAAK;AAAA,QACf;AAAA,MACF,EAAO,SAAI,MAAM,QAAQ,MAAM,GAAG;AAAA,QAChC,QAAQ;AAAA,MACV;AAAA,MAGA,MAAM,UAAU,MAAM,KAAK,QAAiB,eAAe,qBAAqB;AAAA,QAC9E,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU;AAAA,UACnB,MAAM;AAAA,QACR,CAAC;AAAA,MACH,CAAC;AAAA,MAGD,IAAI,YAAY;AAAA,MAChB,IAAI,SAAS,MAAM,SAAS,GAAG;AAAA,QAE7B,MAAM,cAAc,MAAM,IAAI,CAAC,UAAU;AAAA,UACvC,OAAO,KAAK,SAAS;AAAA,UACrB,gBAAgB,KAAK,kBAAkB,KAAK,mBAAmB;AAAA,UAC/D,MAAM,KAAK;AAAA,UACX,cAAc,KAAK;AAAA,UACnB,gBAAgB,KAAK;AAAA,UACrB,QAAQ,KAAK;AAAA,UACb,UAAU,KAAK;AAAA,QACjB,EAAE;AAAA,QAEF,MAAM,KAAK,QAAQ,yBAAyB,OAAO,QAAQ,EAAE,gBAAgB;AAAA,UAC3E,QAAQ;AAAA,UACR,MAAM,KAAK,UAAU,EAAE,OAAO,YAAY,CAAC;AAAA,QAC7C,CAAC;AAAA,QACD,YAAY,YAAY;AAAA,MAC1B;AAAA,MAEA,OAAO,KAAK,SAAS,UAAU;AAAA,MAC/B,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,cAAa,CAAC,WAAmB,WAAkC;AAAA,IACvE,IAAI;AAAA,MACF,MAAM,KAAK,QAAQ,yBAAyB,aAAa,EAAE,QAAQ,SAAS,CAAC;AAAA,MAC7E,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAQpB,gBAAe,CAAC,UAAyC;AAAA,IAC7D,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,QAAgC,qCAAqC,UAAU;AAAA,MAC3G,OAAO,SAAS;AAAA,MAChB,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,iBAAgB,CAAC,UAAkB,MAQjB;AAAA,IACtB,IAAI;AAAA,MACF,OAAO,MAAM,KAAK,QAAoB,4BAA4B;AAAA,QAChE,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU;AAAA,UACnB,UAAU,SAAS,UAAU,EAAE;AAAA,UAC/B,WAAW,KAAK;AAAA,UAChB,MAAM,KAAK;AAAA,UACX,aAAa,KAAK;AAAA,UAClB,YAAY,KAAK;AAAA,UACjB,WAAW,KAAK;AAAA,UAChB,MAAM,KAAK;AAAA,UACX,UAAU,KAAK;AAAA,QACjB,CAAC;AAAA,MACH,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,qBAAoB,CAAC,OAAoC;AAAA,IAC7D,IAAI;AAAA,MACF,OAAO,MAAM,KAAK,QAAoB,4BAA4B,cAAc;AAAA,MAChF,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAQpB,kBAAiB,CAAC,UAAkB,WAAmB,QAMhC;AAAA,IAC3B,IAAI;AAAA,MACF,OAAO,MAAM,KAAK,QAAyB,eAAe,qBAAqB;AAAA,QAC7E,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU;AAAA,UACnB,WAAW,SAAS,WAAW,EAAE;AAAA,UACjC,QAAQ;AAAA,YACN,eAAe,QAAQ,iBAAiB;AAAA,YACxC,aAAa,QAAQ;AAAA,YACrB,UAAU,QAAQ;AAAA,YAClB,OAAO,QAAQ;AAAA,eACX,QAAQ,YAAY,EAAE,cAAc,EAAE,iBAAiB,OAAO,UAAU,EAAE,IAAI,CAAC;AAAA,UACrF;AAAA,UACA,eAAe;AAAA,QACjB,CAAC;AAAA,MACH,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,sBAAqB,CAAC,OAAwC;AAAA,IAClE,IAAI;AAAA,MACF,OAAO,MAAM,KAAK,QAAwB,qBAAqB,OAAO;AAAA,MACtE,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,uBAAsB,CAAC,OAAkE;AAAA,IAC7F,IAAI;AAAA,MACF,OAAO,MAAM,KAAK,QAAkD,qBAAqB,gBAAgB;AAAA,MACzG,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAQpB,WAAU,CAAC,SAAqD;AAAA,IACpE,MAAM,SAAS,UAAU,IAAI,gBAAgB,OAAiC,EAAE,SAAS,IAAI;AAAA,IAC7F,MAAM,WAAW,MAAM,KAAK,QAA4C,cAAc,SAAS,IAAI,WAAW,IAAI;AAAA,IAClH,OAAO,SAAS,QAAQ,CAAC;AAAA;AAAA,OAGrB,SAAQ,CAAC,IAA8B;AAAA,IAC3C,OAAO,KAAK,QAAQ,eAAe,IAAI;AAAA;AAAA,OAGnC,cAAa,CAAC,UAAoD;AAAA,IACtE,OAAO,KAAK,QAAQ,gBAAgB,yBAAyB;AAAA;AAAA,OAOzD,WAAU,CAAC,SAA0H;AAAA,IACzI,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,WAAW;AAAA,QAChD,OAAO,SAAS;AAAA,QAChB,QAAQ,SAAS;AAAA,QACjB,MAAM,SAAS;AAAA,QACf,QAAQ,SAAS;AAAA,MACnB,CAAC;AAAA,MACD,OAAO;AAAA,QACL,MAAM,SAAS,OAAO;AAAA,QACtB,OAAO,SAAS,OAAO;AAAA,MACzB;AAAA,MACA,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,SAAQ,CAAC,IAA4B;AAAA,IACzC,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,SAAS;AAAA,QAC9C,IAAI,SAAS,IAAI,EAAE;AAAA,MACrB,CAAC;AAAA,MACD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,YAAW,CAAC,MAAwC;AAAA,IACxD,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,YAAY;AAAA,QACjD,MAAM,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,aAAa,KAAK,eAAe;AAAA,QACjC,cAAc,KAAK;AAAA,QACnB,OAAO,KAAK,SAAS;AAAA,QACrB,UAAU,KAAK,YAAY;AAAA,QAC3B,gBAAgB,KAAK,kBAAkB;AAAA,QACvC,cAAc,KAAK,gBAAgB;AAAA,QACnC,iBAAiB,KAAK,mBAAmB;AAAA,QACzC,QAAQ,KAAK,UAAU;AAAA,QACvB,UAAU,KAAK,YAAY;AAAA,QAC3B,UAAU,KAAK,YAAY;AAAA,QAC3B,MAAM,KAAK,QAAQ;AAAA,MACrB,CAAC;AAAA,MACD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,YAAW,CAAC,IAAY,MAAwC;AAAA,IACpE,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,OAAO,YAAY;AAAA,QACjD,IAAI,SAAS,IAAI,EAAE;AAAA,QACnB,MAAM;AAAA,UACJ,MAAM,KAAK,QAAQ;AAAA,UACnB,aAAa,KAAK,eAAe;AAAA,UACjC,cAAc,KAAK,gBAAgB;AAAA,UACnC,OAAO,KAAK,SAAS;AAAA,UACrB,UAAU,KAAK,YAAY;AAAA,UAC3B,gBAAgB,KAAK,kBAAkB;AAAA,UACvC,cAAc,KAAK,gBAAgB;AAAA,UACnC,iBAAiB,KAAK,mBAAmB;AAAA,UACzC,QAAQ,KAAK,UAAU;AAAA,UACvB,UAAU,KAAK,YAAY;AAAA,UAC3B,UAAU,KAAK,YAAY;AAAA,UAC3B,MAAM,KAAK,QAAQ;AAAA,QACrB;AAAA,MACF,CAAC;AAAA,MACD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,YAAW,CAAC,IAA2B;AAAA,IAC3C,IAAI;AAAA,MACF,MAAM,KAAK,IAAI,OAAO,YAAY;AAAA,QAChC,IAAI,SAAS,IAAI,EAAE;AAAA,MACrB,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAQpB,kBAAiB,CAAC,SAAiB,SAAiG;AAAA,IACxI,IAAI;AAAA,MACF,MAAM,SAAS,IAAI;AAAA,MACnB,IAAI,SAAS;AAAA,QAAO,OAAO,IAAI,SAAS,OAAO,QAAQ,KAAK,CAAC;AAAA,MAC7D,IAAI,SAAS;AAAA,QAAQ,OAAO,IAAI,UAAU,OAAO,QAAQ,MAAM,CAAC;AAAA,MAChE,MAAM,QAAQ,OAAO,SAAS;AAAA,MAC9B,OAAO,MAAM,KAAK,QAChB,eAAe,wBAAwB,QAAQ,IAAI,UAAU,IAC/D;AAAA,MACA,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,gBAAe,CAAC,UAAkB,gBAA+C;AAAA,IACrF,IAAI;AAAA,MACF,OAAO,MAAM,KAAK,QAAsB,sBAAsB,gBAAgB;AAAA,MAC9E,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,mBAAkB,CAAC,SAAiB,MAAuD;AAAA,IAC/F,IAAI;AAAA,MACF,OAAO,MAAM,KAAK,QAAsB,eAAe,yBAAyB;AAAA,QAC9E,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU;AAAA,UACnB,OAAO,MAAM,SAAS;AAAA,UACtB,UAAU,MAAM,YAAY;AAAA,QAC9B,CAAC;AAAA,MACH,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,mBAAkB,CAAC,UAAkB,gBAAuC;AAAA,IAChF,IAAI;AAAA,MACF,MAAM,KAAK,QAAQ,sBAAsB,kBAAkB,EAAE,QAAQ,SAAS,CAAC;AAAA,MAC/E,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,aAAY,CAAC,UAAkB,gBAAwB,SAA4F;AAAA,IACvJ,IAAI;AAAA,MACF,MAAM,SAAS,IAAI;AAAA,MACnB,IAAI,SAAS;AAAA,QAAO,OAAO,IAAI,SAAS,OAAO,QAAQ,KAAK,CAAC;AAAA,MAC7D,IAAI,SAAS;AAAA,QAAQ,OAAO,IAAI,UAAU,OAAO,QAAQ,MAAM,CAAC;AAAA,MAChE,MAAM,QAAQ,OAAO,SAAS;AAAA,MAC9B,OAAO,MAAM,KAAK,QAChB,sBAAsB,0BAA0B,QAAQ,IAAI,UAAU,IACxE;AAAA,MACA,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAQpB,eAAc,CAAC,SAA8F;AAAA,IACjH,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,WAAW,eAAe;AAAA,QACxD,iBAAiB;AAAA,MACnB,CAAC;AAAA,MAED,MAAM,aAAa,SAAS;AAAA,MAE5B,MAAM,SAAS,SAAS,UAAU;AAAA,MAClC,MAAM,QAAQ,SAAS,SAAS,WAAW;AAAA,MAC3C,OAAO;AAAA,QACL,MAAM,WAAW,MAAM,QAAQ,SAAS,KAAK;AAAA,QAC7C,OAAO,SAAS;AAAA,MAClB;AAAA,MACA,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,aAAY,CAAC,IAAgC;AAAA,IACjD,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,WAAW,aAAa;AAAA,QACtD,MAAM;AAAA,MACR,CAAC;AAAA,MACD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAQpB,cAAa,CACjB,UACA,OACA,SACgC;AAAA,IAChC,IAAI;AAAA,MACF,OAAO,MAAM,KAAK,QAA+B,eAAe,4BAA4B;AAAA,QAC1F,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU,EAAE,OAAO,OAAO,SAAS,MAAM,CAAC;AAAA,MACvD,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,oBAAmB,CACvB,UACA,OACA,SACmB;AAAA,IACnB,MAAM,WAAW,MAAM,MAAM,GAAG,KAAK,uBAAuB,2BAA2B;AAAA,MACrF,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,aAAa,KAAK;AAAA,QAClB,gBAAgB;AAAA,QAChB,QAAU;AAAA,MACZ;AAAA,MACA,MAAM,KAAK,UAAU,EAAE,UAAU,QAAQ,CAAC;AAAA,IAC5C,CAAC;AAAA,IAED,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,IAAI,SAAS,WAAW,KAAK;AAAA,QAC3B,MAAM,IAAI;AAAA,MACZ;AAAA,MACA,IAAI,SAAS,WAAW,KAAK;AAAA,QAC3B,MAAM,IAAI,SAAS,KAAK,MAAM,SAAS,KAAK,KAAK,eAAe;AAAA,MAClE;AAAA,MACA,MAAM,QAAQ,MAAM,SAAS,KAAK;AAAA,MAElC,MAAM,aAAa,MAAM,YAAY;AAAA,MACrC,IACE,WAAW,SAAS,WAAW,MAAM,WAAW,SAAS,SAAS,KAAK,WAAW,SAAS,UAAU,MACrG,WAAW,SAAS,gBAAgB,GACpC;AAAA,QACA,MAAM,IAAI,sBAAsB,KAAK;AAAA,MACvC;AAAA,MACA,MAAM,IAAI,SAAS,SAAS,QAAQ,KAAK;AAAA,IAC3C;AAAA,IAEA,OAAO;AAAA;AAAA,OAOH,cAAa,CAAC,SAA4G;AAAA,IAC9H,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,gBAAgB,cAAc;AAAA,QAC5D,UAAU,SAAS;AAAA,QACnB,iBAAiB;AAAA,MACnB,CAAC;AAAA,MAED,MAAM,UAAU,SAAS;AAAA,MAEzB,MAAM,SAAS,SAAS,UAAU;AAAA,MAClC,MAAM,QAAQ,SAAS,SAAS,QAAQ;AAAA,MACxC,OAAO;AAAA,QACL,MAAM,QAAQ,MAAM,QAAQ,SAAS,KAAK;AAAA,QAC1C,OAAO,SAAS;AAAA,MAClB;AAAA,MACA,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,YAAW,CAAC,IAA+B;AAAA,IAC/C,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,gBAAgB,YAAY;AAAA,QAC1D;AAAA,MACF,CAAC;AAAA,MACD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAAA,OAIpB,aAAY,CAAC,IAAyC;AAAA,IAC1D,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,KAAK,IAAI,gBAAgB,aAAa;AAAA,QAC3D;AAAA,MACF,CAAC;AAAA,MACD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,YAAY,KAAK;AAAA;AAAA;AAG5B;AAGA,IAAI,YAAqC;AAElC,SAAS,YAAY,GAAqB;AAAA,EAC/C,IAAI,CAAC,WAAW;AAAA,IACd,MAAM,SAAS,UAAU;AAAA,IACzB,IAAI,CAAC,QAAQ;AAAA,MACX,MAAM,IAAI;AAAA,IACZ;AAAA,IAEA,MAAM,SAAS,WAAW;AAAA,IAC1B,YAAY,IAAI,iBAAiB;AAAA,MAC/B,YAAY;AAAA,MACZ,WAAW,OAAO;AAAA,MAClB,aAAa,OAAO;AAAA,MACpB,gBAAgB,OAAO;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,OAAO;AAAA;AAOT,eAAsB,cAAc,CAAC,QAAgB,UAAoC;AAAA,EAEvF,IAAI;AAAA,IACF,MAAM,WAAW,MAAM,MAAM,GAAG,8BAA8B;AAAA,MAC5D,SAAS,EAAE,aAAa,OAAO;AAAA,IACjC,CAAC;AAAA,IACD,OAAO,SAAS;AAAA,IAChB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAQX,eAAsB,kBAAkB,CAAC,QAAgB,UAA2D;AAAA,EAClH,IAAI;AAAA,IACF,MAAM,WAAW,MAAM,MAAM,GAAG,8BAA8B;AAAA,MAC5D,SAAS,EAAE,aAAa,OAAO;AAAA,IACjC,CAAC;AAAA,IACD,IAAI,CAAC,SAAS;AAAA,MAAI,OAAO,CAAC;AAAA,IAC1B,MAAM,OAAO,MAAM,SAAS,KAAK;AAAA,IACjC,OAAO,KAAK,QAAQ,CAAC;AAAA,IACrB,MAAM;AAAA,IACN,OAAO,CAAC;AAAA;AAAA;AAQZ,eAAsB,eAAe,CAAC,QAAgB,UAAkB,OAA6E;AAAA,EACnJ,IAAI;AAAA,IACF,MAAM,WAAW,MAAM,MAAM,GAAG,2BAA2B;AAAA,MACzD,SAAS,EAAE,aAAa,QAAQ,qBAAqB,MAAM;AAAA,IAC7D,CAAC;AAAA,IACD,IAAI,CAAC,SAAS;AAAA,MAAI,OAAO,CAAC;AAAA,IAC1B,MAAM,OAAO,MAAM,SAAS,KAAK;AAAA,IACjC,OAAO,KAAK,cAAc,CAAC;AAAA,IAC3B,MAAM;AAAA,IACN,OAAO,CAAC;AAAA;AAAA;;;AElyBZ;AAQO,SAAS,WAAW,CAAC,SAAuC;AAAA,EACjE,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EAGrB,MAAM,aAAa,QAAQ,SAAS,QAAQ,OAAO,KAAK,IAAI;AAAA,EAE5D,MAAM,UAAU,QAAQ,KAAK;AAAA,EAE7B,OAAO,QAAQ,YAAY,QAAQ,QAAQ,IAAI;AAAA;AAAA;AAG1C,MAAM,gBAAgB;AAAA,EACP;AAAA,EAApB,WAAW,CAAS,QAAsB;AAAA,IAAtB;AAAA;AAAA,EAEpB,MAAM,CAAC,MAAqB;AAAA,IAC1B,IAAI,KAAK,WAAW,QAAQ;AAAA,MAC1B,QAAQ,IAAI,KAAK,UAAU,MAAM,MAAM,CAAC,CAAC;AAAA,IAC3C,EAAO;AAAA,MACL,KAAK,YAAY,IAAI;AAAA;AAAA;AAAA,EAIjB,WAAW,CAAC,MAAqB;AAAA,IACvC,IAAI,MAAM,QAAQ,IAAI,GAAG;AAAA,MACvB,KAAK,YAAY,IAAI;AAAA,IACvB,EAAO,SAAI,QAAQ,OAAO,SAAS,UAAU;AAAA,MAC3C,KAAK,aAAa,IAA+B;AAAA,IACnD,EAAO;AAAA,MACL,QAAQ,IAAI,IAAI;AAAA;AAAA;AAAA,EAIZ,WAAW,CAAC,MAAuB;AAAA,IACzC,IAAI,KAAK,WAAW,GAAG;AAAA,MACrB,QAAQ,IAAI,MAAM,KAAK,YAAY,CAAC;AAAA,MACpC;AAAA,IACF;AAAA,IAGA,MAAM,YAAY,KAAK;AAAA,IACvB,IAAI,CAAC,aAAa,OAAO,cAAc,UAAU;AAAA,MAC/C,KAAK,QAAQ,UAAQ;AAAA,QAAE,QAAQ,IAAI,KAAK,OAAO,IAAI,GAAG;AAAA,OAAI;AAAA,MAC1D;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,OAAO,KAAK,SAAS;AAAA,IAGlC,MAAM,kBAAkB,CAAC,QAAyB;AAAA,MAChD,IAAI,QAAQ,QAAQ,QAAQ;AAAA,QAAW,OAAO;AAAA,MAC9C,IAAI,OAAO,QAAQ;AAAA,QAAU,OAAO,KAAK,UAAU,GAAG;AAAA,MACtD,IAAI,OAAO,QAAQ;AAAA,QAAU,OAAO;AAAA,MACpC,IAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,aAAa,OAAO,QAAQ,UAAU;AAAA,QAClF,OAAO,IAAI,SAAS;AAAA,MACtB;AAAA,MACA,OAAO,KAAK,UAAU,GAAG;AAAA;AAAA,IAI3B,MAAM,SAAiC,CAAC;AAAA,IACxC,KAAK,QAAQ,SAAO;AAAA,MAClB,OAAO,OAAO,KAAK,IACjB,IAAI,QACJ,GAAG,KAAK,IAAI,UAAQ,gBAAiB,KAAiC,IAAI,EAAE,MAAM,CACpF;AAAA,KACD;AAAA,IAGD,MAAM,SAAS,KAAK,IAAI,SAAO,MAAM,KAAK,IAAI,YAAY,EAAE,OAAO,OAAO,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,IAAI;AAAA,IACjG,QAAQ,IAAI,MAAM;AAAA,IAClB,QAAQ,IAAI,KAAK,IAAI,SAAO,IAAI,OAAO,OAAO,QAAQ,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,IAGrE,KAAK,QAAQ,UAAQ;AAAA,MACnB,MAAM,MAAM,KAAK,IAAI,SAAO;AAAA,QAC1B,MAAM,QAAQ,gBAAiB,KAAiC,IAAI;AAAA,QACpE,MAAM,QAAQ,OAAO,QAAQ;AAAA,QAC7B,OAAO,MAAM,OAAO,KAAK,EAAE,MAAM,GAAG,KAAK;AAAA,OAC1C,EAAE,KAAK,IAAI;AAAA,MACZ,QAAQ,IAAI,GAAG;AAAA,KAChB;AAAA,IAED,QAAQ,IAAI,MAAM,KAAK;AAAA,EAAK,OAAO,KAAK,MAAM,aAAa,CAAC;AAAA;AAAA,EAGtD,YAAY,CAAC,MAAqC;AAAA,IACxD,MAAM,eAAe,KAAK,IAAI,GAAG,OAAO,KAAK,IAAI,EAAE,IAAI,OAAK,EAAE,MAAM,CAAC;AAAA,IAErE,OAAO,QAAQ,IAAI,EAAE,QAAQ,EAAE,KAAK,WAAW;AAAA,MAC7C,MAAM,eAAe,MAAM,KAAK,IAAI,OAAO,YAAY,CAAC;AAAA,MACxD,IAAI;AAAA,MAEJ,IAAI,UAAU,QAAQ,UAAU,WAAW;AAAA,QACzC,iBAAiB;AAAA,MACnB,EAAO,SAAI,OAAO,UAAU,UAAU;AAAA,QACpC,iBAAiB,KAAK,UAAU,OAAO,MAAM,CAAC;AAAA,MAChD,EAAO,SAAI,OAAO,UAAU,UAAU;AAAA,QACpC,iBAAiB;AAAA,MACnB,EAAO,SAAI,OAAO,UAAU,YAAY,OAAO,UAAU,aAAa,OAAO,UAAU,UAAU;AAAA,QAC/F,iBAAiB,MAAM,SAAS;AAAA,MAClC,EAAO;AAAA,QACL,iBAAiB,KAAK,UAAU,KAAK;AAAA;AAAA,MAGvC,QAAQ,IAAI,GAAG,iBAAiB,gBAAgB;AAAA,KACjD;AAAA;AAAA,EAGH,OAAO,CAAC,SAAuB;AAAA,IAC7B,IAAI,KAAK,WAAW,QAAQ;AAAA,MAC1B,QAAQ,IAAI,KAAK,UAAU,EAAE,SAAS,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC;AAAA,IACjE,EAAO;AAAA,MACL,QAAQ,IAAI,MAAM,MAAM,KAAI,SAAS,CAAC;AAAA;AAAA;AAAA,EAI1C,KAAK,CAAC,SAAuB;AAAA,IAC3B,IAAI,KAAK,WAAW,QAAQ;AAAA,MAC1B,QAAQ,IAAI,KAAK,UAAU,EAAE,SAAS,OAAO,OAAO,QAAQ,GAAG,MAAM,CAAC,CAAC;AAAA,IACzE,EAAO;AAAA,MACL,QAAQ,IAAI,MAAM,IAAI,KAAI,SAAS,CAAC;AAAA;AAAA;AAAA,EAIxC,IAAI,CAAC,SAAuB;AAAA,IAC1B,IAAI,KAAK,WAAW,QAAQ;AAAA,MAC1B,QAAQ,IAAI,MAAM,KAAK,KAAI,SAAS,CAAC;AAAA,IACvC;AAAA;AAAA,EAGF,IAAI,CAAC,SAAuB;AAAA,IAC1B,IAAI,KAAK,WAAW,QAAQ;AAAA,MAC1B,QAAQ,IAAI,KAAK,UAAU,EAAE,SAAS,QAAQ,GAAG,MAAM,CAAC,CAAC;AAAA,IAC3D,EAAO;AAAA,MACL,QAAQ,IAAI,MAAM,OAAO,KAAI,SAAS,CAAC;AAAA;AAAA;AAG7C;;;ACtIA;AAiEO,SAAS,gBAAgB,GAAW;AAAA,EACzC,OAAO,OAAO,WAAW;AAAA;AAM3B,eAAsB,eAAe,CACnC,UACA,UACkC;AAAA,EAClC,MAAM,WAAW,MAAM,MAAM,GAAG,8BAA8B;AAAA,IAC5D,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAC9C,MAAM,KAAK,UAAU;AAAA,MACnB;AAAA,MACA,UAAU,SAAS;AAAA,MACnB,UAAU,SAAS;AAAA,IACrB,CAAC;AAAA,EACH,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK;AAAA,IACtC,MAAM,IAAI,iBACR,eACA,wCAAwC,OAAO,SAAS,MAAM,IAAI,MAAM,SAC1E;AAAA,EACF;AAAA,EAEA,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,EAClC,OAAO;AAAA;AAMT,eAAsB,cAAc,CAClC,UACA,UACoC;AAAA,EACpC,MAAM,WAAW,MAAM,MACrB,GAAG,sCAAsC,mBAAmB,QAAQ,GACtE;AAAA,EAEA,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK;AAAA,IACtC,MAAM,IAAI,iBACR,eACA,iCAAiC,OAAO,SAAS,MAAM,IAAI,MAAM,SACnE;AAAA,EACF;AAAA,EAEA,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,EAClC,OAAO;AAAA;AAQT,eAAsB,WAAW,CAAC,KAA4B;AAAA,EAE5D,IAAI,QAAQ,IAAI,uBAAuB,QAAQ;AAAA,IAC7C,QAAQ,IAAI,YAAY,KAAK;AAAA,IAC7B;AAAA,EACF;AAAA,EAGA,IAAI;AAAA,IACF,QAAQ,SAAS,SAAS,MAAa;AAAA,IACvC,MAAM,KAAK,GAAG;AAAA,IACd,MAAM;AAAA,IAGN,MAAM,IAAI,iBACR,uBACA,uDAAuD,KACzD;AAAA;AAAA;AAOJ,SAAS,KAAK,CAAC,IAA2B;AAAA,EACxC,OAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA;AAUzD,eAAsB,kBAAkB,CACtC,SACA,gBAC4B;AAAA,EAC5B;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV,eAAe;AAAA,IACf,kBAAkB;AAAA,MAChB;AAAA,EAGJ,MAAM,WAAW,iBAAiB;AAAA,EAGlC,iBAAiB,wCAAwC;AAAA,EACzD,MAAM,eAAe,MAAM,gBAAgB,UAAU,QAAQ;AAAA,EAC7D,QAAQ,YAAY;AAAA,EAGpB,IAAI,CAAC,iBAAiB;AAAA,IACpB,iBAAiB,uCAAuC;AAAA,IACxD,IAAI;AAAA,MACF,MAAM,YAAY,OAAO;AAAA,MACzB,OAAO,OAAO;AAAA,MAGd,IAAI,iBAAiB,oBAAoB,MAAM,SAAS,uBAAuB;AAAA,QAC7E,iBAAiB,MAAM,OAAO;AAAA,MAChC,EAAO;AAAA,QACL,MAAM;AAAA;AAAA;AAAA,EAGZ;AAAA,EAIA,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,kCAAkC;AAAA,EAC9C,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,OAAO,OAAO;AAAA,EAC1B,QAAQ,IAAI,EAAE;AAAA,EAGd,iBAAiB,uCAAuC;AAAA,EACxD,MAAM,YAAY,KAAK,IAAI;AAAA,EAE3B,OAAO,KAAK,IAAI,IAAI,YAAY,SAAS;AAAA,IACvC,MAAM,MAAM,YAAY;AAAA,IAExB,MAAM,SAAS,MAAM,eAAe,UAAU,QAAQ;AAAA,IAEtD,QAAQ,OAAO;AAAA,WACR;AAAA,QAEH;AAAA,WAEG;AAAA,QAEH,IACE,CAAC,OAAO,UACR,CAAC,OAAO,eACR,CAAC,OAAO,iBACR,CAAC,OAAO,kBACR,CAAC,OAAO,kBACR;AAAA,UACA,MAAM,IAAI,iBACR,uBACA,0CACF;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL,QAAQ,OAAO;AAAA,UACf,aAAa,OAAO;AAAA,UACpB,eAAe,OAAO;AAAA,UACtB,gBAAgB,OAAO;AAAA,UACvB,kBAAkB,OAAO;AAAA,UACzB,WAAW,OAAO;AAAA,QACpB;AAAA,WAEG;AAAA,QACH,MAAM,IAAI,iBACR,gBACA,mDACF;AAAA,WAEG;AAAA,QACH,MAAM,IAAI,iBACR,eACA,OAAO,SAAS,oCAClB;AAAA,WAEG;AAAA,QACH,MAAM,IAAI,iBACR,mBACA,mDACF;AAAA;AAAA,QAGA,MAAM,IAAI,iBACR,kBACA,0BAA0B,OAAO,OAAO,MAAM,CAChD;AAAA;AAAA,EAEN;AAAA,EAGA,MAAM,IAAI,iBACR,gBACA,qEACF;AAAA;AAAA;AAkBK,MAAM,yBAAyB,MAAM;AAAA,EAC1C;AAAA,EAEA,WAAW,CAAC,MAA4B,SAAiB;AAAA,IACvD,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA;AAAA,EAMd,aAAa,GAAW;AAAA,IACtB,QAAQ,KAAK;AAAA,WACN;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,WACA;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,QACH,OAAO;AAAA,WACJ;AAAA,WACA;AAAA,WACA;AAAA,QACH,OAAO;AAAA;AAAA,QAEP,OAAO;AAAA;AAAA;AAGf;;;ALnTO,SAAS,iBAAiB,GAAY;AAAA,EAC3C,MAAM,OAAO,IAAI,QAAQ,MAAM,EAC5B,YAAY,qCAAqC,EACjD,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ;AAAA,EAGH,KACG,QAAQ,OAAO,EACf,YAAY,gCAAgC,EAC5C,OAAO,mBAAmB,2BAA2B,EACrD,OAAO,aAAa,oCAAoC,EACxD,OAAO,qBAAqB,yDAAyD,EACrF,OAAO,oBAAoB,gBAAgB,yBAAyB,EACpE,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG,4CAA4C,OAAM,IAAI,+BAA+B;AAAA,IAClG,OAAM,IAAI,GAAG,4CAA4C,OAAM,IAAI,sBAAsB;AAAA,IACzF,OAAM,IAAI,GAAG,gDAAgD,OAAM,IAAI,0BAA0B;AAAA,IACjG,OAAM,IAAI,GAAG,4CAA4C,OAAM,IAAI,iCAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOnG,EACA,OAAO,OAAO,YAA0B;AAAA,IACvC,MAAM,SAAS,YAAY,IAAI;AAAA,IAC/B,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI,SAA6B,QAAQ,UAAU,QAAQ,IAAI;AAAA,MAC/D,IAAI,WAAmB,QAAQ,IAAI,qBAAqB,QAAQ;AAAA,MAChE,IAAI;AAAA,MACJ,IAAI;AAAA,MAGJ,IAAI,QAAQ;AAAA,QAEV,OAAO,KAAK,uBAAuB;AAAA,QACnC,MAAM,UAAU,MAAM,eAAe,QAAQ,QAAQ;AAAA,QAErD,IAAI,CAAC,SAAS;AAAA,UACZ,MAAM,IAAI,cACR,mBACA,+BACA,kCACF;AAAA,QACF;AAAA,QAGA,MAAM,OAAO,MAAM,mBAAmB,QAAQ,QAAQ;AAAA,QACtD,IAAI;AAAA,QACJ,IAAI;AAAA,QAEJ,IAAI,KAAK,UAAU,KAAK,KAAK,IAAI;AAAA,UAC/B,QAAQ,KAAK,GAAG;AAAA,UAChB,MAAM,aAAa,MAAM,gBAAgB,QAAQ,UAAU,KAAK;AAAA,UAChE,MAAM,YAAY,WAAW,KAAK,OAAK,EAAE,SAAS;AAAA,UAClD,OAAO,WAAW,MAAM,WAAW,IAAI;AAAA,QACzC;AAAA,QAGA,oBAAoB;AAAA,UAClB;AAAA,UACA;AAAA,UACA,aAAa;AAAA,UACb,gBAAgB;AAAA,QAClB,CAAC;AAAA,QAED,OAAO,QAAQ,4BAA4B;AAAA,QAC3C,IAAI,CAAC,QAAQ;AAAA,UACX,OAAO,KAAK,aAAa,UAAU;AAAA,QACrC;AAAA,QACA;AAAA,MACF;AAAA,MAGA,MAAM,mBACJ,QAAQ,mBAAmB,QAC3B,QAAQ,IAAI,6BAA6B,UACzC,QAAQ,IAAI,OAAO,UACnB,CAAC,QAAQ,MAAM;AAAA,MAGjB,IAAI,UAAU,CAAC,QAAQ,WAAW,kBAAkB;AAAA,QAClD,MAAM,IAAI,cACR,wBACA,6GACA,6FACF;AAAA,MACF;AAAA,MAGA,IAAI,CAAC,oBAAoB,CAAC,eAAe,GAAG;AAAA,QAC1C,QAAQ,IAAI;AAAA,IAAO,OAAM,KAAK,KAAK,4BAA4B,IAAI;AAAA,CAAI;AAAA,QACvE,QAAQ,IAAI;AAAA,CAA4D;AAAA,MAC1E;AAAA,MAGA,IAAI,sBAAsB,QAAQ,YAAY;AAAA,MAG9C,IAAI,CAAC,uBAAuB,kBAAkB;AAAA,QAC5C,OAAO,KAAK,qEAAqE;AAAA,QACjF,sBAAsB;AAAA,MACxB;AAAA,MAEA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,QAAQ;AAAA,QAE3C,MAAM,eAAe,MAAM,SAAS,OAAyB;AAAA,UAC3D;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,cACP;AAAA,gBACE,MAAM;AAAA,gBACN,OAAO;AAAA,cACT;AAAA,cACA;AAAA,gBACE,MAAM;AAAA,gBACN,OAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,QAED,sBAAsB,aAAa,WAAW;AAAA,MAChD;AAAA,MAEA,IAAI,qBAAqB;AAAA,QAEvB,MAAM,UAAU,IAAI;AAAA,UAClB,MAAM;AAAA,UACN,SAAS;AAAA,QACX,CAAC;AAAA,QAED,IAAI;AAAA,UACF,QAAQ,MAAM;AAAA,UAEd,MAAM,SAAS,MAAM,mBACnB;AAAA,YACE;AAAA,YACA,SAAS;AAAA,YACT,cAAc;AAAA,UAChB,GACA,CAAC,YAAY;AAAA,YACX,QAAQ,OAAO;AAAA,WAEnB;AAAA,UAEA,QAAQ,QAAQ,6BAA6B;AAAA,UAG7C,oBAAoB;AAAA,YAClB,QAAQ,OAAO;AAAA,YACf;AAAA,YACA,aAAa,OAAO;AAAA,YACpB,gBAAgB,OAAO;AAAA,YACvB,WAAW,OAAO;AAAA,UACpB,CAAC;AAAA,UAGD,SAAS,OAAO;AAAA,UAChB,gBAAgB,OAAO;AAAA,UACvB,mBAAmB,OAAO;AAAA,UAE1B,QAAQ,IAAI,EAAE;AAAA,UACd,OAAO,KAAK,gBAAgB,aAAa;AAAA,UACzC,OAAO,KAAK,mBAAmB,gBAAgB;AAAA,UAC/C,OAAO,KAAK,eAAe,QAAQ;AAAA,UAEnC,OAAO,OAAO;AAAA,UACd,QAAQ,KAAK,uBAAuB;AAAA,UAEpC,IAAI,iBAAiB,kBAAkB;AAAA,YACrC,MAAM,IAAI,cACR,MAAM,MACN,MAAM,SACN,MAAM,cAAc,CACtB;AAAA,UACF;AAAA,UACA,MAAM;AAAA;AAAA,MAEV,EAAO;AAAA,QAEL,MAAM,UAAU,MAAM,SAAS,OAAqB;AAAA,UAClD;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,UACX;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,MAAM;AAAA,YACN,UAAU,CAAC,UAAoC,MAAM,SAAS,KAAK;AAAA,UACrE;AAAA,QACF,CAAC;AAAA,QAED,SAAS,QAAQ;AAAA,QACjB,WAAW,QAAQ;AAAA,QAGnB,OAAO,KAAK,uBAAuB;AAAA,QACnC,MAAM,UAAU,MAAM,eAAe,QAAQ,QAAQ;AAAA,QAErD,IAAI,CAAC,SAAS;AAAA,UACZ,MAAM,IAAI,cACR,mBACA,+BACA,kCACF;AAAA,QACF;AAAA,QAGA,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QAEJ,MAAM,OAAO,MAAM,mBAAmB,QAAQ,QAAQ;AAAA,QACtD,IAAI,KAAK,WAAW,KAAK,KAAK,IAAI;AAAA,UAEhC,gBAAgB,KAAK,GAAG;AAAA,UACxB,kBAAkB,KAAK,GAAG;AAAA,QAC5B,EAAO,SAAI,KAAK,SAAS,GAAG;AAAA,UAC1B,MAAM,YAAY,MAAM,SAAS,OAA0B,CAAC;AAAA,YAC1D,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS,KAAK,IAAI,QAAM,EAAE,MAAM,EAAE,MAAM,OAAO,EAAE,GAAG,EAAE;AAAA,UACxD,CAAC,CAAC;AAAA,UACF,gBAAgB,UAAU;AAAA,UAC1B,kBAAkB,KAAK,KAAK,OAAK,EAAE,OAAO,aAAa,GAAG;AAAA,QAC5D;AAAA,QAEA,IAAI,eAAe;AAAA,UACjB,MAAM,aAAa,MAAM,gBAAgB,QAAQ,UAAU,aAAa;AAAA,UACxE,MAAM,YAAY,WAAW,KAAK,OAAK,EAAE,SAAS;AAAA,UAClD,IAAI,WAAW,WAAW,KAAK,WAAW,IAAI;AAAA,YAC5C,eAAe,WAAW,GAAG;AAAA,YAC7B,iBAAiB,WAAW,GAAG;AAAA,UACjC,EAAO,SAAI,WAAW;AAAA,YACpB,eAAe,UAAU;AAAA,YACzB,iBAAiB,UAAU;AAAA,UAC7B,EAAO,SAAI,WAAW,SAAS,GAAG;AAAA,YAChC,MAAM,WAAW,MAAM,SAAS,OAAyB,CAAC;AAAA,cACxD,MAAM;AAAA,cACN,MAAM;AAAA,cACN,SAAS;AAAA,cACT,SAAS,WAAW,IAAI,QAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,eAAe,KAAK,OAAO,EAAE,GAAG,EAAE;AAAA,YAClG,CAAC,CAAC;AAAA,YACF,eAAe,SAAS;AAAA,YACxB,iBAAiB,WAAW,KAAK,OAAK,EAAE,OAAO,YAAY,GAAG;AAAA,UAChE;AAAA,QACF;AAAA,QAGA,oBAAoB;AAAA,UAClB;AAAA,UACA;AAAA,UACA,aAAa;AAAA,UACb,gBAAgB;AAAA,QAClB,CAAC;AAAA,QAED,OAAO,QAAQ,4BAA4B;AAAA,QAC3C,IAAI;AAAA,UAAiB,OAAO,KAAK,mBAAmB,eAAe;AAAA,QACnE,IAAI;AAAA,UAAgB,OAAO,KAAK,gBAAgB,cAAc;AAAA,QAC9D,OAAO,KAAK,eAAe,QAAQ;AAAA;AAAA,MAErC,OAAO,OAAO;AAAA,MACd,IAAI,iBAAiB,eAAe;AAAA,QAClC,OAAO,MAAM,MAAM,OAAO;AAAA,QAC1B,QAAQ,KAAK,MAAM,QAAQ;AAAA,MAC7B;AAAA,MACA,MAAM;AAAA;AAAA,GAET;AAAA,EAGH,KACG,QAAQ,QAAQ,EAChB,YAAY,6BAA6B,EACzC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,YAAY;AAAA,IAClB,MAAM,SAAS,YAAY,IAAI;AAAA,IAC/B,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,MAAM,SAAS,UAAU;AAAA,IACzB,MAAM,SAAS,WAAW;AAAA,IAC1B,MAAM,WAAW,OAAO,YAAY;AAAA,IAEpC,IAAI,CAAC,QAAQ;AAAA,MACX,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,EAAE,eAAe,OAAO,SAAS,oBAAoB,CAAC;AAAA,MACtE,EAAO;AAAA,QACL,OAAO,MAAM,mBAAmB;AAAA,QAChC,OAAO,KAAK,0BAA0B;AAAA;AAAA,MAExC,QAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,IAGA,MAAM,UAAU,MAAM,eAAe,QAAQ,QAAQ;AAAA,IAErD,IAAI,QAAQ;AAAA,MACV,MAAM,eAAwC;AAAA,QAC5C,eAAe;AAAA,QACf;AAAA,QACA,WAAW,GAAG,OAAO,MAAM,GAAG,CAAC;AAAA,QAC/B,kBAAkB,OAAO;AAAA,QACzB,qBAAqB,OAAO;AAAA,MAC9B;AAAA,MACA,IAAI,CAAC,SAAS;AAAA,QACZ,aAAa,UAAU;AAAA,QACvB,aAAa,cAAc;AAAA,UACzB,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MACA,OAAO,OAAO,YAAY;AAAA,IAC5B,EAAO;AAAA,MACL,IAAI,SAAS;AAAA,QACX,OAAO,QAAQ,eAAe;AAAA,QAC9B,OAAO,KAAK,aAAa,UAAU;AAAA,QACnC,OAAO,KAAK,QAAQ,OAAO,MAAM,GAAG,CAAC,MAAM;AAAA,QAC3C,IAAI,OAAO,kBAAkB;AAAA,UAC3B,OAAO,KAAK,cAAc,OAAO,kBAAkB;AAAA,QACrD;AAAA,QACA,IAAI,OAAO,qBAAqB;AAAA,UAC9B,OAAO,KAAK,iBAAiB,OAAO,qBAAqB;AAAA,QAC3D;AAAA,MACF,EAAO;AAAA,QACL,OAAO,MAAM,8DAA6D;AAAA,QAC1E,QAAQ,MAAM,EAAE;AAAA,QAChB,QAAQ,MAAM,mCAAmC;AAAA,QACjD,QAAQ,MAAM,kDAAkD;AAAA,QAChE,QAAQ,MAAM,uDAAuD;AAAA,QACrE,QAAQ,MAAM,wDAAwD;AAAA;AAAA;AAAA,GAG3E;AAAA,EAGH,KACG,QAAQ,QAAQ,EAChB,YAAY,0BAA0B,EACtC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,MAAM;AAAA,IACZ,MAAM,SAAS,YAAY,IAAI;AAAA,IAC/B,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,iBAAiB;AAAA,IACjB,OAAO,QAAQ,yBAAyB;AAAA,GACzC;AAAA,EAEH,OAAO;AAAA;;;AMjZT,oBAAS;AACT;AACA;AACA;AA2BO,SAAS,kBAAkB,GAAY;AAAA,EAC5C,MAAM,QAAQ,IAAI,SAAQ,OAAO,EAC9B,YAAY,4BAA4B,EACxC,OAAO,mBAAmB,2BAA2B,EACrD,OAAO,aAAa,oCAAoC,EACxD,OAAO,qBAAqB,yDAAyD,EACrF,OAAO,oBAAoB,gBAAgB,yBAAyB,EACpE,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG,uCAAuC,OAAM,IAAI,iCAAiC;AAAA,KAC9F,EACA,OAAO,OAAO,YAA0B;AAAA,IACvC,MAAM,SAAS,YAAY,KAAK;AAAA,IAChC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAA6B,QAAQ,UAAU,QAAQ,IAAI;AAAA,MACjE,MAAM,WAAmB,QAAQ,IAAI,qBAAqB,QAAQ;AAAA,MAGlE,IAAI,QAAQ;AAAA,QACV,OAAO,KAAK,uBAAuB;AAAA,QACnC,MAAM,UAAU,MAAM,eAAe,QAAQ,QAAQ;AAAA,QAErD,IAAI,CAAC,SAAS;AAAA,UACZ,MAAM,IAAI,cACR,mBACA,+BACA,kCACF;AAAA,QACF;AAAA,QAEA,gBAAgB,QAAQ,QAAQ;AAAA,QAChC,OAAO,QAAQ,wBAAwB;AAAA,QACvC,IAAI,CAAC,QAAQ;AAAA,UACX,OAAO,KAAK,aAAa,UAAU;AAAA,QACrC;AAAA,QACA;AAAA,MACF;AAAA,MAGA,MAAM,mBACJ,QAAQ,mBAAmB,QAC3B,QAAQ,IAAI,6BAA6B,UACzC,QAAQ,IAAI,OAAO,UACnB,CAAC,QAAQ,MAAM;AAAA,MAGjB,IAAI,UAAU,CAAC,QAAQ,WAAW,kBAAkB;AAAA,QAClD,MAAM,IAAI,cACR,wBACA,6GACA,mFACF;AAAA,MACF;AAAA,MAGA,IAAI,CAAC,oBAAoB,CAAC,eAAe,GAAG;AAAA,QAC1C,QAAQ,IAAI;AAAA,IAAO,OAAM,KAAK,KAAK,4BAA4B,IAAI;AAAA,CAAI;AAAA,QACvE,QAAQ,IAAI;AAAA,CAA4D;AAAA,MAC1E;AAAA,MAGA,IAAI,iBAAiB,QAAQ,YAAY;AAAA,MAGzC,IAAI,CAAC,kBAAkB,kBAAkB;AAAA,QACvC,OAAO,KAAK,qEAAqE;AAAA,QACjF,iBAAiB;AAAA,MACnB;AAAA,MAEA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,QAAQ;AAAA,QAEtC,MAAM,eAAe,MAAM,UAAS,OAAyB;AAAA,UAC3D;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS;AAAA,cACP;AAAA,gBACE,MAAM;AAAA,gBACN,OAAO;AAAA,cACT;AAAA,cACA;AAAA,gBACE,MAAM;AAAA,gBACN,OAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,QAED,iBAAiB,aAAa,WAAW;AAAA,MAC3C;AAAA,MAEA,IAAI,gBAAgB;AAAA,QAElB,MAAM,UAAU,KAAI;AAAA,UAClB,MAAM;AAAA,UACN,SAAS;AAAA,QACX,CAAC;AAAA,QAED,IAAI;AAAA,UACF,QAAQ,MAAM;AAAA,UAEd,MAAM,SAAS,MAAM,mBACnB;AAAA,YACE;AAAA,YACA,SAAS;AAAA,YACT,cAAc;AAAA,UAChB,GACA,CAAC,YAAY;AAAA,YACX,QAAQ,OAAO;AAAA,WAEnB;AAAA,UAEA,QAAQ,QAAQ,yBAAyB;AAAA,UAGzC,oBAAoB;AAAA,YAClB,QAAQ,OAAO;AAAA,YACf;AAAA,YACA,aAAa,OAAO;AAAA,YACpB,gBAAgB,OAAO;AAAA,UACzB,CAAC;AAAA,UAED,QAAQ,IAAI,EAAE;AAAA,UACd,IAAI,OAAO,eAAe;AAAA,YACxB,OAAO,KAAK,cAAc,OAAO,eAAe;AAAA,UAClD;AAAA,UACA,IAAI,OAAO,kBAAkB;AAAA,YAC3B,OAAO,KAAK,iBAAiB,OAAO,kBAAkB;AAAA,UACxD;AAAA,UACA,OAAO,OAAO;AAAA,UACd,QAAQ,KAAK,uBAAuB;AAAA,UAEpC,IAAI,iBAAiB,kBAAkB;AAAA,YACrC,MAAM,IAAI,cACR,MAAM,MACN,MAAM,SACN,MAAM,cAAc,CACtB;AAAA,UACF;AAAA,UACA,MAAM;AAAA;AAAA,MAEV,EAAO;AAAA,QAEL,MAAM,UAAU,MAAM,UAAS,OAAqB;AAAA,UAClD;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,YACT,MAAM;AAAA,YACN,UAAU,CAAC,UAAoC;AAAA,cAC7C,IAAI,CAAC,SAAS,MAAM,KAAK,MAAM,IAAI;AAAA,gBACjC,OAAO;AAAA,cACT;AAAA,cACA,IAAI,CAAC,MAAM,WAAW,KAAK,GAAG;AAAA,gBAC5B,OAAO;AAAA,cACT;AAAA,cACA,OAAO;AAAA;AAAA,UAEX;AAAA,QACF,CAAC;AAAA,QAED,OAAO,KAAK,uBAAuB;AAAA,QACnC,MAAM,UAAU,MAAM,eAAe,QAAQ,QAAQ,QAAQ;AAAA,QAE7D,IAAI,CAAC,SAAS;AAAA,UACZ,MAAM,IAAI,cACR,mBACA,+BACA,kCACF;AAAA,QACF;AAAA,QAEA,gBAAgB,QAAQ,QAAQ,QAAQ;AAAA,QACxC,OAAO,QAAQ,wBAAwB;AAAA,QACvC,OAAO,KAAK,aAAa,UAAU;AAAA;AAAA,MAErC,OAAO,OAAO;AAAA,MACd,IAAI,iBAAiB,eAAe;AAAA,QAClC,OAAO,MAAM,MAAM,OAAO;AAAA,QAC1B,IAAI,MAAM,cAAc,CAAC,QAAQ;AAAA,UAC/B,OAAO,KAAK,eAAe,MAAM,YAAY;AAAA,QAC/C;AAAA,QACA,QAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,MACA,MAAM;AAAA;AAAA,GAET;AAAA,EAEH,OAAO;AAAA;;;AChOT,oBAAS;AACT;AACA,yBAAS,6BAAc;;;ACchB,SAAS,aAAa,GAAW;AAAA,EACtC,OAAO,QAAQ,IAAI,oBAAoB;AAAA;AAOlC,SAAS,UAAU,CAAC,IAA6B;AAAA,EACtD,OAAO,GAAG,cAAc,8BAA8B,OAAO,EAAE;AAAA;AAM1D,SAAS,kBAAkB,CAAC,UAAmC;AAAA,EACpE,OAAO,GAAG,cAAc,8BAA8B,OAAO,QAAQ;AAAA;AAMhE,SAAS,qBAAqB,CAAC,UAAmC;AAAA,EACvE,OAAO,GAAG,cAAc,8BAA8B,OAAO,QAAQ;AAAA;AAMhE,SAAS,WAAW,CAAC,UAA2B,WAAoC;AAAA,EACzF,OAAO,GAAG,cAAc,8BAA8B,OAAO,QAAQ,0BAA0B,OAAO,SAAS;AAAA;AAM1G,SAAS,cAAc,CAAC,UAA2B,QAAiC;AAAA,EACzF,OAAO,GAAG,cAAc,8BAA8B,OAAO,QAAQ,0BAA0B,OAAO,MAAM;AAAA;AAMvG,SAAS,SAAS,CAAC,IAAoB;AAAA,EAC5C,OAAO,GAAG,cAAc,YAAY;AAAA;AAM/B,SAAS,aAAa,CAAC,OAAwB;AAAA,EACpD,MAAM,OAAO,GAAG,cAAc;AAAA,EAC9B,OAAO,QAAQ,GAAG,YAAY,UAAU;AAAA;AAMnC,SAAS,cAAc,GAAW;AAAA,EACvC,OAAO,GAAG,cAAc;AAAA;AAMnB,SAAS,oBAAoB,GAAW;AAAA,EAC7C,OAAO,GAAG,cAAc;AAAA;AAMnB,SAAS,WAAW,CAAC,UAAoF;AAAA,EAC9G,OAAO;AAAA,IACL,MAAM,WAAW,QAAQ;AAAA,IACzB,UAAU,mBAAmB,QAAQ;AAAA,IACrC,aAAa,sBAAsB,QAAQ;AAAA,EAC7C;AAAA;;;ADIF,IAAM,qBAAqB;AAAA,EACzB,OAAM,OAAO,gBAAgB;AAAA,oCACK,OAAM,IAAI,sCAAsC;AAAA,oCAChD,OAAM,IAAI,2CAA2C;AAAA,IACrF,OAAM,IAAI,6GAA6G;AAM3H,SAAS,qBAAqB,CAAC,OAA0B;AAAA,EACvD,IAAI,iBAAiB,UAAU;AAAA,IAC7B,IAAI;AAAA,MACF,MAAM,OAAO,KAAK,MAAM,MAAM,OAAO;AAAA,MACrC,IAAI,KAAK,UAAU,MAAM,QAAQ,KAAK,MAAM,GAAG;AAAA,QAC7C,OAAO,KAAK,OAAO,IAAI,CAAC,MAA4B,EAAE,WAAW,KAAK,UAAU,CAAC,CAAC;AAAA,MACpF;AAAA,MACA,IAAI,KAAK,SAAS;AAAA,QAChB,OAAO,CAAC,KAAK,OAAO;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,MAEN,OAAO,CAAC,MAAM,OAAO;AAAA;AAAA,EAEzB;AAAA,EACA,IAAI,iBAAiB,OAAO;AAAA,IAC1B,OAAO,CAAC,MAAM,OAAO;AAAA,EACvB;AAAA,EACA,OAAO,CAAC,2BAA2B;AAAA;AAOrC,SAAS,qBAAqB,CAAC,MAAgC;AAAA,EAC7D,MAAM,SAAS,KAAK;AAAA,EACpB,IAAI,WAAW,QAAQ,WAAW;AAAA,IAAW,OAAO;AAAA,EACpD,IAAI,OAAO,WAAW,YAAY,OAAO,KAAK,MAAiC,EAAE,WAAW;AAAA,IAAG,OAAO;AAAA,EACtG,OAAO;AAAA;AAQT,SAAS,uBAAuB,CAAC,QAA+B;AAAA,EAC9D,OAAO,KACL,8FACA,mDACF;AAAA;AAOF,SAAS,wBAAwB,CAAC,SAAiB,QAA+B;AAAA,EAEhF,MAAM,qBAAqB;AAAA,EAC3B,MAAM,UAAU,CAAC,GAAG,QAAQ,SAAS,kBAAkB,CAAC;AAAA,EACxD,IAAI,QAAQ,SAAS,GAAG;AAAA,IACtB,MAAM,YAAY,CAAC,GAAG,IAAI,IAAI,QAAQ,IAAI,OAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AAAA,IAC3D,WAAW,YAAY,WAAW;AAAA,MAChC,OAAO,KAAK,UAAU,gCAAgC,qCAAqC,aAAa;AAAA,IAC1G;AAAA,EACF;AAAA;AAWK,SAAS,gBAAgB,CAAC,YAAoB,UAA0B;AAAA,EAC7E,MAAM,UAAU,WAAW,KAAK;AAAA,EAGhC,IAAI,SAAS,SAAS,MAAM,GAAG;AAAA,IAC7B,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,QAAQ,WAAW,GAAG,GAAG;AAAA,IAC3B,IAAI;AAAA,MACF,MAAM,SAAkB,KAAK,MAAM,OAAO;AAAA,MAC1C,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,QAC1B,MAAM,IAAI,cACR,gBACA,yCACA,uEACF;AAAA,MACF;AAAA,MACA,OAAO;AAAA,MACP,OAAO,GAAG;AAAA,MACV,IAAI,aAAa;AAAA,QAAe,MAAM;AAAA,MACtC,MAAM,IAAI,cACR,gBACA,mCAAmC,YACnC,gHACF;AAAA;AAAA,EAEJ;AAAA,EAIA,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI,EAAE,OAAO,UAAQ,KAAK,KAAK,EAAE,SAAS,CAAC;AAAA,EACvE,MAAM,QAAmB,CAAC;AAAA,EAE1B,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,CAAC;AAAA,MAAM;AAAA,IACX,MAAM,cAAc,KAAK,KAAK;AAAA,IAC9B,IAAI;AAAA,MACF,MAAM,KAAK,KAAK,MAAM,WAAW,CAAC;AAAA,MAClC,MAAM;AAAA,MACN,MAAM,IAAI,cACR,iBACA,wBAAwB,OAAO,IAAI,CAAC,QAAQ,YAC5C,gDAAgD,YAAY,UAAU,GAAG,EAAE,IAAI,YAAY,SAAS,KAAK,QAAQ,KACnH;AAAA;AAAA,EAEJ;AAAA,EAEA,OAAO,KAAK,UAAU,KAAK;AAAA;AAGtB,SAAS,oBAAoB,GAAY;AAAA,EAC9C,MAAM,UAAU,IAAI,SAAQ,SAAS,EAClC,YAAY,0DAA0D,EACtE,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOZ;AAAA,EAOH,QACG,QAAQ,MAAM,EACd,YAAY,kBAAkB,EAC9B,OAAO,mBAAmB,iBAAiB,IAAI,EAC/C,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,wEAAwE;AAAA,KAC/E,EACA,OAAO,OAAO,YAAyB;AAAA,IACtC,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,cAAc,MAAM,OAAO,YAAY;AAAA,MAG7C,MAAM,QAAQ,SAAS,QAAQ,OAAO,EAAE,KAAK;AAAA,MAC7C,MAAM,UAAU,YAAY,MAAM,GAAG,KAAK;AAAA,MAE1C,IAAI,QAAQ;AAAA,QACV,MAAM,YAAY,QAAQ,IAAI,CAAC,OAAe;AAAA,aACzC;AAAA,UACH,QAAQ,YAAY,EAAE,EAAE;AAAA,QAC1B,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA,MACzB,EAAO;AAAA,QAEL,MAAM,YAAY,QAAQ,IAAI,CAAC,OAAe;AAAA,UAC5C,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,SAAS,EAAE;AAAA,UACX,SAAS,EAAE,YAAY,IAAI,KAAK,EAAE,SAAS,EAAE,mBAAmB,IAAI;AAAA,UACpE,KAAK,WAAW,EAAE,EAAE;AAAA,QACtB,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,QACG,QAAQ,KAAK,EACb,YAAY,qCAAqC,EACjD,SAAS,QAAQ,yCAAyC,EAC1D,OAAO,mBAAmB,kBAAkB,EAC5C,OAAO,gBAAgB,qBAAqB,EAC5C,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,qFAAqF;AAAA,KAC5F,EACA,OAAO,OAAO,IAAY,YAAwB;AAAA,IACjD,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,SAAS,MAAM,OAAO,UAAU,EAAE;AAAA,MAExC,MAAM,SAAkC,KAAK,OAAO;AAAA,MAEpD,IAAI,QAAQ,cAAc;AAAA,QACxB,MAAM,WAAW,MAAM,OAAO,aAAa,EAAE;AAAA,QAC7C,OAAO,WAAW;AAAA,MACpB;AAAA,MAEA,IAAI,QAAQ,WAAW;AAAA,QACrB,MAAM,QAAQ,MAAM,OAAO,gBAAgB,EAAE;AAAA,QAC7C,OAAO,cAAc;AAAA,MACvB;AAAA,MAEA,IAAI,QAAQ;AAAA,QACV,OAAO,SAAS,YAAY,EAAE;AAAA,MAChC;AAAA,MACA,OAAO,OAAO,MAAM;AAAA,MACpB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,QACG,QAAQ,QAAQ,EAChB,YAAY,qBAAqB,EACjC,OAAO,qBAAqB,uBAAuB,EACnD,OAAO,qBAAqB,iDAAiD,EAC7E,OAAO,qBAAqB,aAAa,EACzC,OAAO,2BAA2B,oDAAoD,EACtF,OAAO,oBAAoB,iCAAiC,EAC5D,OAAO,mBAAmB,kCAAkC,EAC5D,OAAO,kBAAkB,kCAAkC,EAC3D,OAAO,qBAAqB,sEAAwE,EACpG,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASf,OAAM,IAAI,gGAAgG;AAAA,KACvG,EACA,OAAO,OAAO,YAA2B;AAAA,IACxC,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI;AAAA,MAEJ,IAAI,QAAQ,MAAM;AAAA,QAChB,MAAM,UAAU,cAAa,QAAQ,MAAM,OAAO;AAAA,QAClD,OAAO,KAAK,MAAM,OAAO;AAAA,MAC3B,EAAO,SAAI,QAAQ,SAAS;AAAA,QAE1B,IAAI,CAAC,YAAW,QAAQ,OAAO,GAAG;AAAA,UAChC,MAAM,IAAI,cACR,kBACA,mBAAmB,QAAQ,WAC3B,mCACF;AAAA,QACF;AAAA,QACA,MAAM,cAAc,cAAa,QAAQ,SAAS,OAAO;AAAA,QACzD,OAAO;AAAA,UACL,MAAM,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,YAAY,EAAE,EAAE,QAAQ,YAAY,EAAE;AAAA,UACpF,WAAW;AAAA,QACb;AAAA,MACF,EAAO,SAAI,QAAQ,MAAM;AAAA,QAEvB,OAAO,EAAE,MAAM,QAAQ,KAAK;AAAA,QAG5B,IAAI,QAAQ,UAAU;AAAA,UAEpB,IAAI;AAAA,YACF,MAAM,WAAW,KAAK,MAAM,QAAQ,QAAQ;AAAA,YAE5C,MAAM,YAAY,SAAS,KAAK,OAAK,EAAE,SAAS,QAAQ;AAAA,YACxD,MAAM,WAAW,SAAS,KAAK,OAAK,EAAE,SAAS,UAAU,EAAE,SAAS,OAAO;AAAA,YAC3E,IAAI;AAAA,cAAW,KAAK,eAAe,UAAU;AAAA,YAC7C,IAAI;AAAA,cAAU,KAAK,cAAc,SAAS;AAAA,YAC1C,MAAM;AAAA,YACN,MAAM,IAAI,cACR,gBACA,mCACA,yEACF;AAAA;AAAA,QAEJ,EAAO,SAAI,QAAQ,UAAU,QAAQ,OAAO;AAAA,UAE1C,IAAI,QAAQ;AAAA,YAAQ,KAAK,eAAe,QAAQ;AAAA,UAChD,IAAI,QAAQ;AAAA,YAAO,KAAK,cAAc,QAAQ;AAAA,QAChD,EAAO,SAAI,QAAQ,KAAK;AAAA,UAEtB,KAAK,YAAY,QAAQ;AAAA,QAC3B,EAAO,SAAI,QAAQ,SAAS;AAAA,UAE1B,KAAK,YAAY,QAAQ;AAAA,QAC3B,EAAO;AAAA,UACL,MAAM,IAAI,cACR,qBACA,2BACA,kFACF;AAAA;AAAA,MAEJ,EAAO;AAAA,QACL,MAAM,IAAI,cACR,qBACA,wEACA,wHACF;AAAA;AAAA,MAIF,MAAM,gBAAgB,KAAK,aAAa,KAAK,gBAAgB,KAAK,eAAe;AAAA,MACjF,IAAI,iBAAiB,CAAC,QAAQ;AAAA,QAC5B,yBAAyB,eAAe,MAAM;AAAA,MAChD;AAAA,MAGA,IAAI,sBAAsB,IAAI,GAAG;AAAA,QAC/B,wBAAwB,MAAM;AAAA,MAChC;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,SAAS,MAAM,OAAO,aAAa,IAAI;AAAA,MAE7C,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,KAAK,QAAQ,QAAQ,YAAY,OAAO,EAAE,EAAE,CAAC;AAAA,MAC7D,EAAO;AAAA,QACL,OAAO,QAAQ,mBAAmB,OAAO,MAAM;AAAA,QAC/C,OAAO,OAAO,MAAM;AAAA,QACpB,OAAO,KAAK,SAAS,WAAW,OAAO,EAAE,GAAG;AAAA;AAAA,MAE9C,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,QACG,QAAQ,QAAQ,EAChB,YAAY,iBAAiB,EAC7B,SAAS,QAAQ,yCAAyC,EAC1D,OAAO,qBAAqB,uBAAuB,EACnD,OAAO,qBAAqB,iDAAiD,EAC7E,OAAO,qBAAqB,UAAU,EACtC,OAAO,2BAA2B,iDAAiD,EACnF,OAAO,oBAAoB,iCAAiC,EAC5D,OAAO,mBAAmB,kCAAkC,EAC5D,OAAO,kBAAkB,kCAAkC,EAC3D,OAAO,qBAAqB,sEAAwE,EACpG,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,IAAY,YAA2B;AAAA,IACpD,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI,OAAwB,CAAC;AAAA,MAE7B,IAAI,QAAQ,MAAM;AAAA,QAChB,MAAM,UAAU,cAAa,QAAQ,MAAM,OAAO;AAAA,QAClD,OAAO,KAAK,MAAM,OAAO;AAAA,MAC3B,EAAO,SAAI,QAAQ,SAAS;AAAA,QAE1B,IAAI,CAAC,YAAW,QAAQ,OAAO,GAAG;AAAA,UAChC,MAAM,IAAI,cACR,kBACA,mBAAmB,QAAQ,WAC3B,mCACF;AAAA,QACF;AAAA,QACA,MAAM,cAAc,cAAa,QAAQ,SAAS,OAAO;AAAA,QACzD,KAAK,YAAY;AAAA,QACjB,IAAI,QAAQ;AAAA,UAAM,KAAK,OAAO,QAAQ;AAAA,MACxC,EAAO;AAAA,QACL,IAAI,QAAQ;AAAA,UAAM,KAAK,OAAO,QAAQ;AAAA,QAItC,IAAI,QAAQ,UAAU;AAAA,UAEpB,IAAI;AAAA,YACF,MAAM,WAAW,KAAK,MAAM,QAAQ,QAAQ;AAAA,YAE5C,MAAM,YAAY,SAAS,KAAK,OAAK,EAAE,SAAS,QAAQ;AAAA,YACxD,MAAM,WAAW,SAAS,KAAK,OAAK,EAAE,SAAS,UAAU,EAAE,SAAS,OAAO;AAAA,YAC3E,IAAI;AAAA,cAAW,KAAK,eAAe,UAAU;AAAA,YAC7C,IAAI;AAAA,cAAU,KAAK,cAAc,SAAS;AAAA,YAC1C,MAAM;AAAA,YACN,MAAM,IAAI,cACR,gBACA,mCACA,yEACF;AAAA;AAAA,QAEJ,EAAO,SAAI,QAAQ,UAAU,QAAQ,OAAO;AAAA,UAE1C,IAAI,QAAQ;AAAA,YAAQ,KAAK,eAAe,QAAQ;AAAA,UAChD,IAAI,QAAQ;AAAA,YAAO,KAAK,cAAc,QAAQ;AAAA,QAChD,EAAO,SAAI,QAAQ,KAAK;AAAA,UAEtB,KAAK,YAAY,QAAQ;AAAA,QAC3B,EAAO,SAAI,QAAQ,SAAS;AAAA,UAE1B,KAAK,YAAY,QAAQ;AAAA,QAC3B;AAAA;AAAA,MAGF,IAAI,OAAO,KAAK,IAAI,EAAE,WAAW,GAAG;AAAA,QAClC,MAAM,IAAI,cACR,qBACA,2BACA,wEACF;AAAA,MACF;AAAA,MAGA,MAAM,gBAAgB,KAAK,aAAa,KAAK,gBAAgB,KAAK,eAAe;AAAA,MACjF,IAAI,iBAAiB,CAAC,QAAQ;AAAA,QAC5B,yBAAyB,eAAe,MAAM;AAAA,MAChD;AAAA,MAGA,IAAI,QAAQ,QAAQ,sBAAsB,IAAI,GAAG;AAAA,QAC/C,wBAAwB,MAAM;AAAA,MAChC;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,SAAS,MAAM,OAAO,aAAa,IAAI,IAAI;AAAA,MAEjD,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,KAAK,QAAQ,QAAQ,YAAY,OAAO,EAAE,EAAE,CAAC;AAAA,MAC7D,EAAO;AAAA,QACL,OAAO,QAAQ,mBAAmB,OAAO,MAAM;AAAA,QAC/C,OAAO,OAAO,MAAM;AAAA;AAAA,MAEtB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,QACG,QAAQ,QAAQ,EAChB,YAAY,iBAAiB,EAC7B,SAAS,QAAQ,yCAAyC,EAC1D,OAAO,WAAW,mBAAmB,EACrC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,gFAAgF;AAAA,KACvF,EACA,OAAO,OAAO,IAAY,YAA2B;AAAA,IACpD,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI,CAAC,QAAQ,SAAS,CAAC,QAAQ;AAAA,QAC7B,MAAM,aAAY,MAAa,oBAAa;AAAA,QAC5C,MAAM,UAAU,MAAM,UAAS,OAAsB,CAAC;AAAA,UACpD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS,iBAAiB;AAAA,UAC1B,SAAS;AAAA,QACX,CAAC,CAAC;AAAA,QAEF,IAAI,CAAC,QAAQ,SAAS;AAAA,UACpB,OAAO,KAAK,WAAW;AAAA,UACvB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,OAAO,aAAa,EAAE;AAAA,MAE5B,OAAO,QAAQ,mBAAmB,IAAI;AAAA,MACtC,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAKH,MAAM,UAAU,QACb,QAAQ,SAAS,EACjB,YAAY,6BAA6B,EACzC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ;AAAA,EAGH,QACG,QAAQ,MAAM,EACd,YAAY,4BAA4B,EACxC,SAAS,eAAe,yCAAyC,EACjE,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,aAAqB;AAAA,IAClC,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,WAAW,MAAM,OAAO,aAAa,QAAQ;AAAA,MAEnD,IAAI,QAAQ;AAAA,QACV,MAAM,YAAY,SAAS,IAAI,CAAC,OAAO;AAAA,aAClC;AAAA,UACH,QAAQ,EAAE,MAAM,YAAY,UAAU,EAAE,EAAE,EAAE;AAAA,QAC9C,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA,MACzB,EAAO;AAAA,QACL,MAAM,YAAY,SAAS,IAAI,CAAC,OAAO;AAAA,aAClC;AAAA,UACH,KAAK,YAAY,UAAU,EAAE,EAAE;AAAA,QACjC,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,QACG,QAAQ,KAAK,EACb,YAAY,yBAAyB,EACrC,SAAS,eAAe,yCAAyC,EACjE,OAAO,qBAAqB,0CAA0C,EACtE,OAAO,qBAAqB,oCAAoC,EAChE,OAAO,qBAAqB,qCAAqC,EACjE,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA;AAAA,IAGb,OAAM,IAAI,OAAO;AAAA,IACjB,OAAM,IAAI,QAAQ;AAAA,IAClB,OAAM,IAAI,MAAM;AAAA;AAAA;AAAA;AAAA,IAIhB,OAAM,IAAI,uEAAuE;AAAA;AAAA,EAEnF,OAAM,IAAI,uEAAuE;AAAA,KAC9E,EACA,OAAO,OAAO,UAAkB,YAA+B;AAAA,IAC9D,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI,QAAQ,QAAQ,QAAQ,MAAM;AAAA,QAChC,MAAM,IAAI,cACR,qBACA,wCACA,8EACF;AAAA,MACF;AAAA,MAEA,IAAI,CAAC,QAAQ,QAAQ,CAAC,QAAQ,MAAM;AAAA,QAClC,MAAM,IAAI,cACR,qBACA,0CACA,8EACF;AAAA,MACF;AAAA,MAEA,IAAI;AAAA,MAEJ,IAAI,QAAQ,MAAM;AAAA,QAEhB,IAAI;AAAA,UACF,MAAM,SAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,UAC/C,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,YAC1B,MAAM,IAAI,cACR,gBACA,oCACA,2EACF;AAAA,UACF;AAAA,UACA,UAAU,QAAQ;AAAA,UAClB,OAAO,GAAG;AAAA,UACV,IAAI,aAAa;AAAA,YAAe,MAAM;AAAA,UACtC,MAAM,IAAI,cACR,gBACA,kCACA,iFACF;AAAA;AAAA,MAEJ,EAAO;AAAA,QAGL,MAAM,WAAW,QAAQ;AAAA,QACzB,MAAM,aAAa,cAAa,UAAU,OAAO;AAAA,QACjD,UAAU,iBAAiB,YAAY,QAAQ;AAAA;AAAA,MAGjD,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,gBAAgB,MAAM,OAAO,WAAW,UAAU,SAAS,QAAQ,IAAI;AAAA,MAE7E,IAAI,CAAC,QAAQ;AAAA,QACX,OAAO,QAAQ,kBAAkB,cAAc,oBAAoB,UAAU;AAAA,QAC7E,IAAI,cAAc,cAAc,aAAa,cAAc,YAAY,GAAG;AAAA,UACxE,OAAO,KAAK,mBAAmB,OAAO,cAAc,SAAS,GAAG;AAAA,QAClE;AAAA,MACF;AAAA,MACA,OAAO,OAAO,aAAa;AAAA,MAC3B,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,QACG,QAAQ,QAAQ,EAChB,YAAY,8BAA8B,EAC1C,SAAS,eAAe,yCAAyC,EACjE,SAAS,gBAAgB,8DAA8D,EACvF,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,UAAkB,cAAsB;AAAA,IACrD,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,OAAO,cAAc,UAAU,SAAS;AAAA,MAC9C,OAAO,QAAQ,mBAAmB,yBAAyB,UAAU;AAAA,MACrE,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAKH,MAAM,aAAa,QAChB,QAAQ,YAAY,EACpB,YAAY,gCAAgC,EAC5C,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ;AAAA,EAGH,WACG,QAAQ,MAAM,EACd,YAAY,+BAA+B,EAC3C,SAAS,eAAe,yCAAyC,EACjE,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,aAAqB;AAAA,IAClC,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,QAAQ,MAAM,OAAO,gBAAgB,QAAQ;AAAA,MAEnD,IAAI,QAAQ;AAAA,QACV,MAAM,YAAY,MAAM,IAAI,CAAC,OAAO;AAAA,aAC/B;AAAA,UACH,QAAQ,EAAE,MAAM,eAAe,UAAU,EAAE,EAAE,EAAE;AAAA,QACjD,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA,MACzB,EAAO;AAAA,QACL,MAAM,YAAY,MAAM,IAAI,CAAC,OAAO;AAAA,aAC/B;AAAA,UACH,KAAK,eAAe,UAAU,EAAE,EAAE;AAAA,QACpC,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,WACG,QAAQ,QAAQ,EAChB,YAAY,iDAAiD,EAC7D,SAAS,eAAe,yCAAyC,EACjE,eAAe,qBAAqB,iBAAiB,EACrD,OAAO,qBAAqB,yCAAyC,EACrE,OAAO,wBAAwB,wBAAwB,EACvD,OAAO,sBAAsB,+DAA+D,EAC5F,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA;AAAA,IAGb,OAAM,IAAI,4EAA4E;AAAA;AAAA,EAExF,OAAM,IAAI,+FAA+F;AAAA,EACzG,OAAM,IAAI,oGAAoG;AAAA,KAC3G,EACA,OAAO,OAAO,UAAkB,YAAqC;AAAA,IACpE,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,WAQF;AAAA,QACF,MAAM,QAAQ;AAAA,QACd,aAAa,QAAQ;AAAA,MACvB;AAAA,MAGA,IAAI,QAAQ,MAAM;AAAA,QAChB,IAAI,CAAC,YAAW,QAAQ,IAAI,GAAG;AAAA,UAC7B,MAAM,IAAI,cACR,kBACA,mBAAmB,QAAQ,QAC3B,mCACF;AAAA,QACF;AAAA,QACA,MAAM,cAAc,cAAa,QAAQ,MAAM,OAAO;AAAA,QACtD,IAAI;AAAA,UACF,MAAM,SAAS,KAAK,MAAM,WAAW;AAAA,UACrC,IAAI,OAAO;AAAA,YAAY,SAAS,aAAa,OAAO;AAAA,UACpD,IAAI,OAAO;AAAA,YAAW,SAAS,YAAY,OAAO;AAAA,UAClD,IAAI,OAAO;AAAA,YAAM,SAAS,OAAO,OAAO;AAAA,UACxC,IAAI,OAAO;AAAA,YAAU,SAAS,WAAW,OAAO;AAAA,UAChD,MAAM;AAAA,UACN,MAAM,IAAI,cACR,gBACA,kCAAkC,QAAQ,QAC1C,sEACF;AAAA;AAAA,MAEJ;AAAA,MAGA,IAAI,QAAQ,SAAS;AAAA,QACnB,SAAS,YAAY,SAAS,QAAQ,SAAS,EAAE;AAAA,QACjD,IAAI,MAAM,SAAS,SAAS,GAAG;AAAA,UAC7B,MAAM,IAAI,cACR,oBACA,uBAAuB,QAAQ,WAC/B,sFACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,aAAa,MAAM,OAAO,iBAAiB,UAAU,QAAQ;AAAA,MAEnE,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO;AAAA,aACT;AAAA,UACH,QAAQ,EAAE,MAAM,eAAe,UAAU,WAAW,EAAE,EAAE;AAAA,QAC1D,CAAC;AAAA,MACH,EAAO;AAAA,QACL,OAAO,QAAQ,uBAAuB,WAAW,MAAM;AAAA,QACvD,OAAO,OAAO,UAAU;AAAA,QACxB,OAAO,KAAK,SAAS,eAAe,UAAU,WAAW,EAAE,GAAG;AAAA;AAAA,MAEhE,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,WACG,QAAQ,SAAS,EACjB,YAAY,wBAAwB,EACpC,SAAS,YAAY,wEAAwE,EAC7F,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,UAAkB;AAAA,IAC/B,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,UAAU,MAAM,OAAO,qBAAqB,KAAK;AAAA,MACvD,OAAO,OAAO,OAAO;AAAA,MACrB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAKH,MAAM,WAAW,QACd,QAAQ,UAAU,EAClB,YAAY,iCAAiC,EAC7C,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA;AAAA,KAGZ;AAAA,EAGH,SACG,QAAQ,OAAO,EACf,YAAY,2BAA2B,EACvC,SAAS,eAAe,yCAAyC,EACjE,eAAe,sBAAsB,+EAA+E,EACpH,OAAO,wBAAwB,0CAA0C,EACzE,OAAO,sBAAsB,iCAAiC,EAC9D,OAAO,kBAAkB,gDAAgD,EACzE,OAAO,sBAAsB,uDAAuD,EACpF,OAAO,2BAA2B,6CAA6C,EAC/E,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,EACf;AAAA;AAAA,EAEA,OAAM,IAAI,kEAAkE;AAAA,KACzE,EACA,OAAO,OAAO,UAAkB,YAAkC;AAAA,IACjE,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MAGF,MAAM,SAAS,aAAa;AAAA,MAG5B,IAAI;AAAA,QACF,MAAM,aAAa,MAAM,OAAO,UAAU,QAAQ;AAAA,QAClD,IAAI,sBAAsB,UAAU,GAAG;AAAA,UACrC,OAAO,KACL,6GACA,qDACA,sDAAsD,WAAW,iCACnE;AAAA,QACF;AAAA,QACA,MAAM;AAAA,MAKR,MAAM,MAAM,MAAM,OAAO,kBAAkB,UAAU,QAAQ,SAAS;AAAA,QACpE,eAAe,QAAQ,gBAAgB,SAAS,QAAQ,eAAe,EAAE,IAAI;AAAA,QAC7E,aAAa,QAAQ,cAAc,WAAW,QAAQ,WAAW,IAAI;AAAA,QACrE,UAAU,QAAQ,WAAW,SAAS,QAAQ,UAAU,EAAE,IAAI;AAAA,QAC9D,OAAO,QAAQ;AAAA,QACf,WAAW,QAAQ;AAAA,MACrB,CAAC;AAAA,MAED,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,KAAK,KAAK,QAAQ,EAAE,WAAW,cAAc,IAAI,KAAK,EAAE,EAAE,CAAC;AAAA,MAC3E,EAAO;AAAA,QACL,OAAO,QAAQ,6BAA6B,IAAI,OAAO;AAAA,QACvD,OAAO,OAAO,GAAG;AAAA,QACjB,OAAO,KAAK,YAAY,cAAc,IAAI,KAAK,GAAG;AAAA;AAAA,MAEpD,OAAO,OAAO;AAAA,MAEd,IAAI,iBAAiB,UAAU;AAAA,QAC7B,MAAM,WAAW,sBAAsB,KAAK;AAAA,QAC5C,IAAI,CAAC,QAAQ;AAAA,UACX,QAAQ,MAAM,OAAM,IAAI,4CAA4C,CAAC;AAAA,UACrE,WAAW,OAAO,UAAU;AAAA,YAC1B,QAAQ,MAAM,OAAM,IAAI,OAAO,KAAK,CAAC;AAAA,UACvC;AAAA,UACA,QAAQ,MAAM,EAAE;AAAA,UAChB,QAAQ,MAAM,kBAAkB;AAAA,QAClC;AAAA,MACF;AAAA,MACA,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,SACG,QAAQ,QAAQ,EAChB,YAAY,2BAA2B,EACvC,SAAS,YAAY,6DAA6D,EAClF,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,UAAkB;AAAA,IAC/B,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,SAAS,MAAM,OAAO,sBAAsB,KAAK;AAAA,MAEvD,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,KAAK,QAAQ,QAAQ,EAAE,WAAW,cAAc,KAAK,EAAE,EAAE,CAAC;AAAA,MAC1E,EAAO;AAAA,QACL,MAAM,WAAW,OAAO;AAAA,QACxB,MAAM,SAAS,KAAK,MAAM,WAAW,EAAE;AAAA,QACvC,MAAM,cAAc,IAAS,OAAO,MAAM,IAAI,IAAS,OAAO,KAAK,MAAM;AAAA,QACzE,OAAO,KAAK,cAAc,gBAAgB,OAAO,QAAQ,IAAI;AAAA,QAC7D,OAAO,OAAO,MAAM;AAAA,QACpB,OAAO,KAAK,SAAS,cAAc,KAAK,GAAG;AAAA;AAAA,MAE7C,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,SACG,QAAQ,SAAS,EACjB,YAAY,0BAA0B,EACtC,SAAS,YAAY,6DAA6D,EAClF,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,UAAkB;AAAA,IAC/B,MAAM,SAAS,YAAY,OAAO;AAAA,IAClC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,UAAU,MAAM,OAAO,uBAAuB,KAAK;AAAA,MAEzD,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,KAAK,SAAmB,QAAQ,EAAE,WAAW,cAAc,KAAK,EAAE,EAAE,CAAC;AAAA,MACrF,EAAO;AAAA,QACL,OAAO,OAAO,OAAO;AAAA,QACrB,OAAO,KAAK,SAAS,cAAc,KAAK,GAAG;AAAA;AAAA,MAE7C,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAEH,OAAO;AAAA;;;AEjlCT,oBAAS;AACT;AAkBO,SAAS,mBAAmB,GAAY;AAAA,EAC7C,MAAM,SAAS,IAAI,SAAQ,QAAQ,EAChC,YAAY,6CAA6C,EACzD,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA;AAAA,KAGZ;AAAA,EAGH,OACG,QAAQ,MAAM,EACd,YAAY,aAAa,EACzB,OAAO,qBAAqB,qBAAqB,EACjD,OAAO,mBAAmB,iBAAiB,IAAI,EAC/C,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,oEAAoE;AAAA,KAC3E,EACA,OAAO,OAAO,YAAyB;AAAA,IACtC,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,aAAa,MAAM,OAAO,WAAW;AAAA,QACzC,UAAU,QAAQ;AAAA,MACpB,CAAC;AAAA,MAED,MAAM,QAAQ,SAAS,QAAQ,OAAO,EAAE,KAAK;AAAA,MAC7C,MAAM,UAAU,WAAW,MAAM,GAAG,KAAK;AAAA,MAEzC,IAAI,QAAQ;AAAA,QACV,MAAM,YAAa,QAAoB,IAAI,CAAC,OAAO;AAAA,aAC9C;AAAA,UACH,QAAQ,EAAE,MAAM,UAAU,EAAE,EAAE,EAAE;AAAA,QAClC,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA,MACzB,EAAO;AAAA,QACL,MAAM,YAAa,QAAoB,IAAI,CAAC,OAAO;AAAA,UACjD,IAAI,EAAE;AAAA,UACN,UAAU,EAAE;AAAA,UACZ,SAAS,GAAG,OAAO,EAAE,OAAO;AAAA,UAC5B,QAAQ,GAAG,OAAO,EAAE,OAAO,KAAK,KAAK,OAAO,EAAE,OAAO,MAAM;AAAA,UAC3D,WAAW,IAAI,KAAK,EAAE,SAAS,EAAE,eAAe;AAAA,UAChD,KAAK,UAAU,EAAE,EAAE;AAAA,QACrB,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,OACG,QAAQ,KAAK,EACb,YAAY,mBAAmB,EAC/B,SAAS,QAAQ,UAAU,EAC3B,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,kEAAkE;AAAA,KACzE,EACA,OAAO,OAAO,OAAe;AAAA,IAC5B,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,QAAQ,MAAM,OAAO,SAAS,EAAE;AAAA,MACtC,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,KAAK,OAAiB,QAAQ,EAAE,MAAM,UAAU,EAAE,EAAE,EAAE,CAAC;AAAA,MACvE,EAAO;AAAA,QACL,OAAO,OAAO,KAAK;AAAA,QACnB,OAAO,KAAK,SAAS,UAAU,EAAE,GAAG;AAAA;AAAA,MAEtC,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,OACG,QAAQ,SAAS,EACjB,YAAY,6BAA6B,EACzC,SAAS,eAAe,WAAW,EACnC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,4EAA4E;AAAA,KACnF,EACA,OAAO,OAAO,aAAqB;AAAA,IAClC,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,WAAW,MAAM,OAAO,cAAc,QAAQ;AAAA,MAEpD,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,KAAK,UAAoB,QAAQ,EAAE,QAAQ,GAAG,cAAc,qBAAqB,WAAW,EAAE,CAAC;AAAA,MAC/G,EAAO;AAAA,QACL,OAAO,OAAO,QAAQ;AAAA;AAAA,MAExB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,OACG,QAAQ,QAAQ,EAChB,YAAY,eAAe,EAC3B,OAAO,qBAAqB,qBAAqB,EACjD,OAAO,yBAAyB,6BAA6B,MAAM,EACnE,OAAO,uBAAuB,kBAAkB,EAChD,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,+DAA+D;AAAA,KACtE,EACA,OAAO,OAAO,YAA2B;AAAA,IACxC,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,aAAa,MAAM,OAAO,WAAW;AAAA,QACzC,UAAU,QAAQ;AAAA,MACpB,CAAC;AAAA,MAED,IAAI;AAAA,MAEJ,IAAI,QAAQ,WAAW,QAAQ;AAAA,QAC7B,UAAU,KAAK,UAAU,YAAY,MAAM,CAAC;AAAA,MAC9C,EAAO,SAAI,QAAQ,WAAW,OAAO;AAAA,QAEnC,MAAM,UAAU,CAAC,MAAM,YAAY,WAAW,eAAe,gBAAgB,WAAW;AAAA,QACxF,MAAM,OAAQ,WAAuB,IAAI,CAAC,MAAM;AAAA,UAC9C,EAAE;AAAA,UACF,EAAE;AAAA,UACF,EAAE;AAAA,UACF,EAAE,OAAO;AAAA,UACT,EAAE,OAAO;AAAA,UACT,EAAE;AAAA,QACJ,CAAC;AAAA,QACD,UAAU,CAAC,QAAQ,KAAK,GAAG,GAAG,GAAG,KAAK,IAAI,OAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK;AAAA,CAAI;AAAA,MACxE,EAAO;AAAA,QACL,MAAM,IAAI,MAAM,uBAAuB,QAAQ,QAAQ;AAAA;AAAA,MAGzD,IAAI,QAAQ,QAAQ;AAAA,QAClB,QAAQ,kCAAkB,MAAa;AAAA,QACvC,eAAc,QAAQ,QAAQ,OAAO;AAAA,QACrC,OAAO,QAAQ,YAAY,OAAO,WAAW,MAAM,eAAe,QAAQ,QAAQ;AAAA,MACpF,EAAO;AAAA,QACL,QAAQ,OAAO,MAAM,OAAO;AAAA;AAAA,MAE9B,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAEH,OAAO;AAAA;;;ACxMT,oBAAS;AACT;AACA,0BAAS,8BAAe;AACxB;;;ACHA,yBAAS,6BAAc;AAGvB,SAAS,mBAAmB,CAAC,QAAmC;AAAA,EAC5D,MAAM,aAAa,OAAO,OAAO,MAAM,GAAG,CAAC,IAAI,QAAQ,OAAO,OAAO,MAAM,EAAE;AAAA,EAC7E,OAAO,uBAAsB;AAAA,uBACX,OAAO;AAAA;AAAA;AAItB,IAAM,oBAA0C;AAAA,EACrD,MAAM;AAAA,EACN,aAAa;AAAA,OAEP,OAAM,GAA6B;AAAA,IACvC,MAAM,QAAQ,CAAC,oBAAoB,kBAAkB;AAAA,IACrD,MAAM,QAAkB,CAAC;AAAA,IAEzB,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI,YAAW,IAAI,GAAG;AAAA,QACpB,MAAM,KAAK,IAAI;AAAA,MACjB;AAAA,IACF;AAAA,IAGA,IAAI,eAAe;AAAA,IACnB,IAAI,YAAW,cAAc,GAAG;AAAA,MAC9B,IAAI;AAAA,QACF,MAAM,MAAM,KAAK,MAAM,cAAa,gBAAgB,OAAO,CAAC;AAAA,QAC5D,MAAM,OAAO,KAAK,IAAI,iBAAiB,IAAI,gBAAgB;AAAA,QAC3D,eAAe,kBAAkB;AAAA,QACjC,MAAM;AAAA,IAGV;AAAA,IAEA,OAAO;AAAA,MACL,UAAU,MAAM,SAAS,KAAK;AAAA,MAC9B,YAAY,MAAM,SAAS,IAAI,OAAO,eAAe,MAAM;AAAA,MAC3D,OAAO;AAAA,IACT;AAAA;AAAA,OAGI,SAAQ,CAAC,QAA4C;AAAA,IACzD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWT,oBAAoB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAiBT,OAAO;AAAA,oBACN,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoI3B;;;AC7MA,yBAAS,6BAAc;AAGhB,IAAM,uBAA6C;AAAA,EACxD,MAAM;AAAA,EACN,aAAa;AAAA,OAEP,OAAM,GAA6B;AAAA,IACvC,IAAI,eAAe;AAAA,IAEnB,IAAI,YAAW,cAAc,GAAG;AAAA,MAC9B,IAAI;AAAA,QACF,MAAM,MAAM,KAAK,MAAM,cAAa,gBAAgB,OAAO,CAAC;AAAA,QAC5D,MAAM,OAAO,KAAK,IAAI,iBAAiB,IAAI,gBAAgB;AAAA,QAC3D,eAAe,eAAe,QAAQ,qBAAqB;AAAA,QAC3D,MAAM;AAAA,IAGV;AAAA,IAEA,OAAO;AAAA,MACL,UAAU;AAAA,MACV,YAAY,eAAe,MAAM;AAAA,MACjC,OAAO,eAAe,CAAC,cAAc,IAAI,CAAC;AAAA,IAC5C;AAAA;AAAA,OAGI,SAAQ,CAAC,QAA4C;AAAA,IACzD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAWW,OAAO,OAAO,MAAM,GAAG,CAAC,OAAO,OAAO,OAAO,MAAM,EAAE;AAAA,uBACpD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAkBX,OAAO;AAAA,oBACN,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsF3B;;;ACjJA,yBAAS,6BAAc;AAGhB,IAAM,uBAA6C;AAAA,EACxD,MAAM;AAAA,EACN,aAAa;AAAA,OAEP,OAAM,GAA6B;AAAA,IACvC,IAAI,eAAe;AAAA,IAEnB,IAAI,YAAW,cAAc,GAAG;AAAA,MAC9B,IAAI;AAAA,QACF,MAAM,MAAM,KAAK,MAAM,cAAa,gBAAgB,OAAO,CAAC;AAAA,QAC5D,MAAM,OAAO,KAAK,IAAI,iBAAiB,IAAI,gBAAgB;AAAA,QAC3D,eAAe,0BAA0B;AAAA,QACzC,MAAM;AAAA,IAGV;AAAA,IAEA,OAAO;AAAA,MACL,UAAU;AAAA,MACV,YAAY,eAAe,OAAO;AAAA,MAClC,OAAO,eAAe,CAAC,cAAc,IAAI,CAAC;AAAA,IAC5C;AAAA;AAAA,OAGI,SAAQ,CAAC,QAA4C;AAAA,IACzD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAWW,OAAO,OAAO,MAAM,GAAG,CAAC,OAAO,OAAO,OAAO,MAAM,EAAE;AAAA,uBACpD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2F9B;;;ACnIA,yBAAS,6BAAc;AAGhB,IAAM,sBAA4C;AAAA,EACvD,MAAM;AAAA,EACN,aAAa;AAAA,OAEP,OAAM,GAA6B;AAAA,IACvC,IAAI,WAAW;AAAA,IAEf,IAAI,YAAW,cAAc,GAAG;AAAA,MAC9B,IAAI;AAAA,QACF,MAAM,MAAM,KAAK,MAAM,cAAa,gBAAgB,OAAO,CAAC;AAAA,QAC5D,MAAM,OAAO,KAAK,IAAI,iBAAiB,IAAI,gBAAgB;AAAA,QAC3D,WAAW,QAAQ;AAAA,QACnB,MAAM;AAAA,IAGV;AAAA,IAEA,OAAO;AAAA,MACL,UAAU;AAAA,MACV,YAAY,WAAW,MAAM;AAAA,MAC7B,OAAO,WAAW,CAAC,cAAc,IAAI,CAAC;AAAA,IACxC;AAAA;AAAA,OAGI,SAAQ,CAAC,QAA4C;AAAA,IACzD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAWW,OAAO,OAAO,MAAM,GAAG,CAAC,OAAO,OAAO,OAAO,MAAM,EAAE;AAAA,uBACpD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsF9B;;;AC9HA,yBAAS,6BAAc;AAGhB,IAAM,oBAA0C;AAAA,EACrD,MAAM;AAAA,EACN,aAAa;AAAA,OAEP,OAAM,GAA6B;AAAA,IACvC,IAAI,YAAY;AAAA,IAEhB,IAAI,YAAW,cAAc,GAAG;AAAA,MAC9B,IAAI;AAAA,QACF,MAAM,MAAM,KAAK,MAAM,cAAa,gBAAgB,OAAO,CAAC;AAAA,QAC5D,MAAM,OAAO,KAAK,IAAI,iBAAiB,IAAI,gBAAgB;AAAA,QAC3D,YAAY,YAAY;AAAA,QACxB,MAAM;AAAA,IAGV;AAAA,IAEA,OAAO;AAAA,MACL,UAAU;AAAA,MACV,YAAY,YAAY,OAAO;AAAA,MAC/B,OAAO,YAAY,CAAC,cAAc,IAAI,CAAC;AAAA,IACzC;AAAA;AAAA,OAGI,SAAQ,CAAC,QAA4C;AAAA,IACzD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAWW,OAAO,OAAO,MAAM,GAAG,CAAC,OAAO,OAAO,OAAO,MAAM,EAAE;AAAA,uBACpD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAkBX,OAAO;AAAA,oBACN,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoF3B;;;AC/IA,yBAAS,6BAAc;AAGhB,IAAM,wBAA8C;AAAA,EACzD,MAAM;AAAA,EACN,aAAa;AAAA,OAEP,OAAM,GAA6B;AAAA,IACvC,IAAI,gBAAgB;AAAA,IAEpB,IAAI,YAAW,cAAc,GAAG;AAAA,MAC9B,IAAI;AAAA,QACF,MAAM,MAAM,KAAK,MAAM,cAAa,gBAAgB,OAAO,CAAC;AAAA,QAC5D,MAAM,OAAO,KAAK,IAAI,iBAAiB,IAAI,gBAAgB;AAAA,QAC3D,gBAAgB,+BAA+B,QAAQ,uBAAuB;AAAA,QAC9E,MAAM;AAAA,IAGV;AAAA,IAEA,OAAO;AAAA,MACL,UAAU;AAAA,MACV,YAAY,gBAAgB,OAAO;AAAA,MACnC,OAAO,gBAAgB,CAAC,cAAc,IAAI,CAAC;AAAA,IAC7C;AAAA;AAAA,OAGI,SAAQ,CAAC,QAA4C;AAAA,IACzD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAWU,OAAO,OAAO,MAAM,GAAG,CAAC,OAAO,OAAO,OAAO,MAAM,EAAE;AAAA,uBACpD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BA8DE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBtC;;;AC5HO,IAAM,qBAA2C;AAAA,EACtD,MAAM;AAAA,EACN,aAAa;AAAA,OAEP,OAAM,GAA6B;AAAA,IAEvC,OAAO;AAAA,MACL,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,OAAO,CAAC;AAAA,IACV;AAAA;AAAA,OAGI,SAAQ,CAAC,QAA4C;AAAA,IACzD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAWU,OAAO,OAAO,MAAM,GAAG,CAAC,OAAO,OAAO,OAAO,MAAM,EAAE;AAAA,uBACpD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoG7B;;;ACvHO,IAAM,oBAAoB,IAAI,IAAkC;AAAA,EACrE,CAAC,UAAU,iBAAiB;AAAA,EAC5B,CAAC,aAAa,oBAAoB;AAAA,EAClC,CAAC,aAAa,oBAAoB;AAAA,EAClC,CAAC,aAAa,mBAAmB;AAAA,EACjC,CAAC,UAAU,iBAAiB;AAAA,EAC5B,CAAC,eAAe,qBAAqB;AAAA,EACrC,CAAC,WAAW,kBAAkB;AAChC,CAAC;AAEM,IAAM,oBAA2C;AAAA,EACtD;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,SAAS;AAAA,EACX;AACF;AAEO,SAAS,YAAY,CAAC,MAAgD;AAAA,EAC3E,OAAO,kBAAkB,IAAI,IAAI;AAAA;AAG5B,SAAS,oBAAoB,CAAC,MAA+C;AAAA,EAClF,OAAO,kBAAkB,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAAA;;;ARtDtD,SAAS,oBAAoB,GAAmB;AAAA,EAE9C,IAAI,YAAW,WAAW,KAAK,YAAW,UAAU,GAAG;AAAA,IACrD,OAAO;AAAA,EACT;AAAA,EACA,IAAI,YAAW,gBAAgB,GAAG;AAAA,IAChC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,YAAW,WAAW,GAAG;AAAA,IAC3B,OAAO;AAAA,EACT;AAAA,EACA,IAAI,YAAW,mBAAmB,GAAG;AAAA,IACnC,OAAO;AAAA,EACT;AAAA,EAGA,IAAI;AAAA,IACF,SAAS,iBAAiB,EAAE,OAAO,SAAS,CAAC;AAAA,IAC7C,OAAO;AAAA,IACP,MAAM;AAAA,IAEN,OAAO;AAAA;AAAA;AAOX,SAAS,iBAAiB,CAAC,IAAoB,aAA6B;AAAA,EAC1E,MAAM,WAA2C;AAAA,IAC/C,KAAK,WAAW;AAAA,IAChB,KAAK,eAAe;AAAA,IACpB,MAAM,YAAY;AAAA,IAClB,MAAM,YAAY;AAAA,EACpB;AAAA,EACA,OAAO,SAAS;AAAA;AAOlB,SAAS,+BAA+B,GAAW;AAAA,EACjD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA4BF,SAAS,sBAAsB,GAAY;AAAA,EAChD,MAAM,YAAY,IAAI,SAAQ,WAAW,EACtC,YAAY,8DAA8D,EAC1E,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMZ;AAAA,EAGH,UACG,SAAS,eAAe,wFAAwF,EAChH,OAAO,uBAAuB,2BAA2B,EACzD,OAAO,SAAS,qCAAqC,EACrD,OAAO,YAAY,gCAAgC,EACnD,OAAO,OAAO,cAAkC,YAA8B;AAAA,IAC7E,MAAM,SAAS,YAAY,SAAS;AAAA,IACpC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MAEF,MAAM,SAAS,UAAU;AAAA,MACzB,IAAI,CAAC,QAAQ;AAAA,QACX,MAAM,IAAI,cACR,iBACA,oCACA,0BACF;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,WAAW;AAAA,MAG1B,IAAI,CAAC,cAAc;AAAA,QACjB,MAAM,0BAA0B,gCAAgC;AAAA,QAEhE,IAAI,QAAQ,QAAQ;AAAA,UAClB,eAAc,QAAQ,QAAQ,uBAAuB;AAAA,UACrD,OAAO,QAAQ,qCAAqC,QAAQ,QAAQ;AAAA,QACtE,EAAO,SAAI,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,UACzC,QAAQ,OAAO,MAAM,uBAAuB;AAAA,QAC9C,EAAO;AAAA,UACL,OAAO,KAAK,4CAA4C;AAAA,UACxD,OAAO,KAAK,IAAG,OAAO,EAAE,CAAC;AAAA,UACzB,QAAQ,OAAO,MAAM,uBAAuB;AAAA;AAAA,QAE9C;AAAA,MACF;AAAA,MAGA,MAAM,YAAY,aAAa,YAAY;AAAA,MAC3C,IAAI,CAAC,WAAW;AAAA,QACd,MAAM,IAAI,cACR,qBACA,sBAAsB,gBACtB,cAAc,MAAM,KAAK,kBAAkB,KAAK,CAAC,EAAE,KAAK,IAAI,GAC9D;AAAA,MACF;AAAA,MAGA,MAAM,OAAO,qBAAqB,YAAY;AAAA,MAC9C,MAAM,kBAAkB,MAAM;AAAA,MAG9B,MAAM,KAAK,qBAAqB;AAAA,MAGhC,MAAM,WAAW,OAAO,YAAY;AAAA,MACpC,MAAM,oBAAoB,MAAM,UAAU,SAAS;AAAA,QACjD;AAAA,QACA;AAAA,QACA,YAAY,QAAQ;AAAA,MACtB,CAAC;AAAA,MAGD,IAAI,eAAe;AAAA,MAGnB,IAAI,iBAAiB;AAAA,QACnB,MAAM,aAAa,kBAAkB,IAAI,eAAe;AAAA,QACxD,gBAAgB;AAAA;AAAA,EAExB;AAAA;AAAA;AAAA;AAAA,MAIM;AAAA,MAGA,MAAM,aAAa,kBAAkB,MAAM;AAAA,MAC3C,gBAAgB,WAAW;AAAA,EACjC;AAAA;AAAA,MAIM,MAAM,gBAAgB,kBAAkB,MAAM;AAAA,MAC9C,gBAAgB;AAAA,UACd;AAAA;AAAA,0BAEgB,OAAO,UAAU,GAAG,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,MAOxC,IAAI,QAAQ,QAAQ;AAAA,QAClB,eAAc,QAAQ,QAAQ,YAAY;AAAA,QAC1C,OAAO,QAAQ,qCAAqC,QAAQ,QAAQ;AAAA,MACtE,EAAO,SAAI,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,QACzC,QAAQ,OAAO,MAAM,YAAY;AAAA,MACnC,EAAO;AAAA,QACL,MAAM,cAAc,MAAM,eAAe;AAAA,QACzC,OAAO,KAAK,cAAc,sCAAsC;AAAA,QAChE,OAAO,KAAK,IAAG,OAAO,EAAE,CAAC;AAAA,QACzB,QAAQ,OAAO,MAAM,YAAY;AAAA;AAAA,MAInC,IAAI,QAAQ,QAAQ;AAAA,QAClB,OAAO,KAAK,EAAE;AAAA,QACd,OAAO,KAAK,sBAAsB;AAAA,QAClC,OAAO,QAAQ,sBAAsB;AAAA,MACvC;AAAA,MAEA,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,UACG,QAAQ,MAAM,EACd,YAAY,uCAAuC,EACnD,OAAO,MAAM;AAAA,IACZ,MAAM,SAAS,YAAY,SAAS;AAAA,IACpC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,MAAM,aAAa,kBAAkB,IAAI,QAAM;AAAA,MAC7C,MAAM,EAAE;AAAA,MACR,aAAa,EAAE;AAAA,MACf,aAAa,EAAE;AAAA,MACf,YAAY,EAAE;AAAA,MACd,iBAAiB,EAAE;AAAA,IACrB,EAAE;AAAA,IAEF,OAAO,OAAO,UAAU;AAAA,GACzB;AAAA,EAEH,OAAO;AAAA;;;AS/PT,oBAAS;AACT;AACA,yBAAS;AAsDF,SAAS,mBAAmB,GAAY;AAAA,EAC7C,MAAM,SAAS,IAAI,SAAQ,QAAQ,EAChC,YAAY,kBAAkB,EAC9B,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA,KAKZ;AAAA,EAOH,OACG,QAAQ,MAAM,EACd,YAAY,iBAAiB,EAC7B,OAAO,mBAAmB,iBAAiB,IAAI,EAC/C,OAAO,oBAAoB,uBAAuB,EAClD,OAAO,qBAAqB,gBAAgB,EAC5C,OAAO,yBAAyB,6CAA6C,EAC7E,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,YAAyB;AAAA,IACtC,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,UAA+E;AAAA,QACnF,OAAO,SAAS,QAAQ,OAAO,EAAE,KAAK;AAAA,MACxC;AAAA,MAEA,IAAI,QAAQ,QAAQ;AAAA,QAClB,QAAQ,SAAS,SAAS,QAAQ,QAAQ,EAAE;AAAA,MAC9C;AAAA,MACA,IAAI,QAAQ,MAAM;AAAA,QAChB,QAAQ,OAAO,QAAQ;AAAA,MACzB;AAAA,MACA,IAAI,QAAQ,QAAQ;AAAA,QAClB,QAAQ,SAAS,QAAQ;AAAA,MAC3B;AAAA,MAEA,MAAM,SAAS,MAAM,OAAO,WAAW,OAAO;AAAA,MAE9C,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,MAAM;AAAA,MACtB,EAAO;AAAA,QAEL,MAAM,YAAY,OAAO,KAAK,IAAI,CAAC,OAAc;AAAA,UAC/C,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,MAAM,EAAE;AAAA,UACR,OAAO,EAAE;AAAA,UACT,QAAQ,EAAE;AAAA,UACV,UAAU,EAAE,WAAW,QAAQ;AAAA,UAC/B,SAAS,EAAE,YAAY,IAAI,KAAK,EAAE,SAAS,EAAE,mBAAmB,IAAI;AAAA,QACtE,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,OACG,QAAQ,KAAK,EACb,YAAY,mBAAmB,EAC/B,SAAS,QAAQ,UAAU,EAC3B,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,OAAe;AAAA,IAC5B,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,QAAQ,MAAM,OAAO,SAAS,EAAE;AAAA,MAEtC,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,KAAK;AAAA,MACrB,EAAO;AAAA,QAEL,MAAM,YAAqC;AAAA,UACzC,IAAI,MAAM;AAAA,UACV,MAAM,MAAM;AAAA,UACZ,MAAM,MAAM;AAAA,UACZ,aAAa,MAAM,eAAe;AAAA,UAClC,OAAO,MAAM;AAAA,UACb,QAAQ,MAAM;AAAA,UACd,UAAU,MAAM,WAAW,QAAQ;AAAA,UACnC,UAAU,MAAM,YAAY;AAAA,UAC5B,gBAAgB,MAAM,kBAAkB;AAAA,UACxC,cAAc,MAAM,cAAc,KAAK,IAAI,KAAK;AAAA,UAChD,iBAAiB,MAAM,iBAAiB,KAAK,IAAI,KAAK;AAAA,UACtD,MAAM,MAAM,MAAM,KAAK,IAAI,KAAK;AAAA,UAChC,WAAW,MAAM,aAAa;AAAA,UAC9B,WAAW,MAAM,YAAY,IAAI,KAAK,MAAM,SAAS,EAAE,eAAe,IAAI;AAAA,UAC1E,WAAW,MAAM,YAAY,IAAI,KAAK,MAAM,SAAS,EAAE,eAAe,IAAI;AAAA,QAC5E;AAAA,QACA,OAAO,OAAO,SAAS;AAAA,QAGvB,IAAI,MAAM,cAAc;AAAA,UACtB,QAAQ,IAAI,OAAM,KAAK;AAAA,eAAkB,CAAC;AAAA,UAC1C,QAAQ,IAAI,OAAM,KAAK,IAAG,OAAO,EAAE,CAAC,CAAC;AAAA,UACrC,QAAQ,IAAI,MAAM,YAAY;AAAA,UAC9B,QAAQ,IAAI,OAAM,KAAK,IAAG,OAAO,EAAE,CAAC,CAAC;AAAA,QACvC;AAAA;AAAA,MAEF,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,OACG,QAAQ,QAAQ,EAChB,YAAY,oBAAoB,EAChC,OAAO,qBAAqB,uBAAuB,EACnD,OAAO,qBAAqB,YAAY,EACxC,OAAO,qBAAqB,sCAAsC,EAClE,OAAO,gCAAgC,eAAe,EACtD,OAAO,uBAAuB,8DAA8D,EAC5F,OAAO,mCAAmC,mBAAmB,EAC7D,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,4DAA4D;AAAA,KACnE,EACA,OAAO,OAAO,YAA2B;AAAA,IACxC,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI;AAAA,MAEJ,IAAI,QAAQ,MAAM;AAAA,QAChB,MAAM,UAAU,cAAa,QAAQ,MAAM,OAAO;AAAA,QAClD,OAAO,KAAK,MAAM,OAAO;AAAA,MAC3B,EAAO,SAAI,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,cAAc;AAAA,QAC/D,OAAO;AAAA,UACL,MAAM,QAAQ;AAAA,UACd,MAAM,QAAQ;AAAA,UACd,cAAc,QAAQ;AAAA,QACxB;AAAA,QACA,IAAI,QAAQ;AAAA,UAAO,KAAK,QAAQ,QAAQ;AAAA,QACxC,IAAI,QAAQ;AAAA,UAAa,KAAK,cAAc,QAAQ;AAAA,MACtD,EAAO;AAAA,QACL,MAAM,IAAI,cACR,qBACA,uEACA,6EACF;AAAA;AAAA,MAGF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,QAAQ,MAAM,OAAO,YAAY,IAAI;AAAA,MAE3C,OAAO,QAAQ,kBAAkB,MAAM,SAAS,MAAM,OAAO;AAAA,MAC7D,OAAO,OAAO,KAAK;AAAA,MACnB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,OACG,QAAQ,QAAQ,EAChB,YAAY,iBAAiB,EAC7B,SAAS,QAAQ,UAAU,EAC3B,OAAO,qBAAqB,uBAAuB,EACnD,OAAO,qBAAqB,UAAU,EACtC,OAAO,gCAAgC,mBAAmB,EAC1D,OAAO,uBAAuB,WAAW,EACzC,OAAO,mCAAmC,iBAAiB,EAC3D,OAAO,yBAAyB,uCAAuC,EACvE,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,IAAY,YAA2B;AAAA,IACpD,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI,OAAyB,CAAC;AAAA,MAE9B,IAAI,QAAQ,MAAM;AAAA,QAChB,MAAM,UAAU,cAAa,QAAQ,MAAM,OAAO;AAAA,QAClD,OAAO,KAAK,MAAM,OAAO;AAAA,MAC3B,EAAO;AAAA,QACL,IAAI,QAAQ;AAAA,UAAM,KAAK,OAAO,QAAQ;AAAA,QACtC,IAAI,QAAQ;AAAA,UAAc,KAAK,eAAe,QAAQ;AAAA,QACtD,IAAI,QAAQ;AAAA,UAAO,KAAK,QAAQ,QAAQ;AAAA,QACxC,IAAI,QAAQ;AAAA,UAAa,KAAK,cAAc,QAAQ;AAAA,QACpD,IAAI,QAAQ;AAAA,UAAQ,KAAK,SAAS,QAAQ;AAAA;AAAA,MAG5C,IAAI,OAAO,KAAK,IAAI,EAAE,WAAW,GAAG;AAAA,QAClC,MAAM,IAAI,cACR,qBACA,2BACA,0EACF;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,QAAQ,MAAM,OAAO,YAAY,IAAI,IAAI;AAAA,MAE/C,OAAO,QAAQ,kBAAkB,MAAM,MAAM;AAAA,MAC7C,OAAO,OAAO,KAAK;AAAA,MACnB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,OACG,QAAQ,QAAQ,EAChB,YAAY,iBAAiB,EAC7B,SAAS,QAAQ,UAAU,EAC3B,OAAO,WAAW,mBAAmB,EACrC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,gFAAgF;AAAA,KACvF,EACA,OAAO,OAAO,IAAY,YAA2B;AAAA,IACpD,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI,CAAC,QAAQ,SAAS,CAAC,QAAQ;AAAA,QAC7B,MAAM,aAAY,MAAa,oBAAa;AAAA,QAC5C,MAAM,UAAU,MAAM,UAAS,OAAsB,CAAC;AAAA,UACpD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS,gBAAgB;AAAA,UACzB,SAAS;AAAA,QACX,CAAC,CAAC;AAAA,QAEF,IAAI,CAAC,QAAQ,SAAS;AAAA,UACpB,OAAO,KAAK,WAAW;AAAA,UACvB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,OAAO,YAAY,EAAE;AAAA,MAE3B,OAAO,QAAQ,kBAAkB,IAAI;AAAA,MACrC,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAKH,MAAM,gBAAgB,OACnB,QAAQ,eAAe,EACvB,YAAY,iCAAiC,EAC7C,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ;AAAA,EAGH,cACG,QAAQ,MAAM,EACd,YAAY,iCAAiC,EAC7C,SAAS,cAAc,UAAU,EACjC,OAAO,mBAAmB,iBAAiB,IAAI,EAC/C,OAAO,oBAAoB,uBAAuB,EAClD,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,SAAiB,YAAqC;AAAA,IACnE,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,UAA+C;AAAA,QACnD,OAAO,SAAS,QAAQ,OAAO,EAAE,KAAK;AAAA,MACxC;AAAA,MAEA,IAAI,QAAQ,QAAQ;AAAA,QAClB,QAAQ,SAAS,SAAS,QAAQ,QAAQ,EAAE;AAAA,MAC9C;AAAA,MAEA,MAAM,SAAS,MAAM,OAAO,kBAAkB,SAAS,OAAO;AAAA,MAE9D,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,MAAM;AAAA,MACtB,EAAO;AAAA,QAEL,MAAM,YAAY,OAAO,KAAK,IAAI,CAAC,OAAqB;AAAA,UACtD,IAAI,EAAE;AAAA,UACN,OAAO,EAAE,SAAS;AAAA,UAClB,QAAQ,EAAE;AAAA,UACV,UAAU,EAAE,gBAAgB;AAAA,UAC5B,SAAS,EAAE,YAAY,IAAI,KAAK,EAAE,SAAS,EAAE,mBAAmB,IAAI;AAAA,UACpE,SAAS,EAAE,YAAY,IAAI,KAAK,EAAE,SAAS,EAAE,mBAAmB,IAAI;AAAA,QACtE,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,cACG,QAAQ,KAAK,EACb,YAAY,0BAA0B,EACtC,SAAS,cAAc,UAAU,EACjC,SAAS,qBAAqB,iBAAiB,EAC/C,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,SAAiB,mBAA2B;AAAA,IACzD,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,eAAe,MAAM,OAAO,gBAAgB,SAAS,cAAc;AAAA,MAEzE,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,YAAY;AAAA,MAC5B,EAAO;AAAA,QAEL,MAAM,YAAqC;AAAA,UACzC,IAAI,aAAa;AAAA,UACjB,SAAS,aAAa;AAAA,UACtB,OAAO,aAAa,SAAS;AAAA,UAC7B,QAAQ,aAAa;AAAA,UACrB,cAAc,aAAa,gBAAgB;AAAA,UAC3C,WAAW,aAAa,YAAY,IAAI,KAAK,aAAa,SAAS,EAAE,eAAe,IAAI;AAAA,UACxF,WAAW,aAAa,YAAY,IAAI,KAAK,aAAa,SAAS,EAAE,eAAe,IAAI;AAAA,QAC1F;AAAA,QACA,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,cACG,QAAQ,QAAQ,EAChB,YAAY,wCAAwC,EACpD,SAAS,cAAc,UAAU,EACjC,OAAO,uBAAuB,oBAAoB,EAClD,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,SAAiB,YAAuC;AAAA,IACrE,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,OAA2B,CAAC;AAAA,MAElC,IAAI,QAAQ,OAAO;AAAA,QACjB,KAAK,QAAQ,QAAQ;AAAA,MACvB;AAAA,MAEA,MAAM,eAAe,MAAM,OAAO,mBAAmB,SAAS,IAAI;AAAA,MAElE,OAAO,QAAQ,yBAAyB,aAAa,IAAI;AAAA,MACzD,OAAO,OAAO,YAAY;AAAA,MAC1B,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,cACG,QAAQ,QAAQ,EAChB,YAAY,uBAAuB,EACnC,SAAS,cAAc,UAAU,EACjC,SAAS,qBAAqB,iBAAiB,EAC/C,OAAO,WAAW,mBAAmB,EACrC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,SAAiB,gBAAwB,YAA2B;AAAA,IACjF,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,IAAI,CAAC,QAAQ,SAAS,CAAC,QAAQ;AAAA,QAC7B,MAAM,aAAY,MAAa,oBAAa;AAAA,QAC5C,MAAM,UAAU,MAAM,UAAS,OAAsB,CAAC;AAAA,UACpD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS,uBAAuB;AAAA,UAChC,SAAS;AAAA,QACX,CAAC,CAAC;AAAA,QAEF,IAAI,CAAC,QAAQ,SAAS;AAAA,UACpB,OAAO,KAAK,WAAW;AAAA,UACvB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,OAAO,mBAAmB,SAAS,cAAc;AAAA,MAEvD,OAAO,QAAQ,yBAAyB,gBAAgB;AAAA,MACxD,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,cACG,QAAQ,UAAU,EAClB,YAAY,iCAAiC,EAC7C,SAAS,cAAc,UAAU,EACjC,SAAS,qBAAqB,iBAAiB,EAC/C,OAAO,mBAAmB,iBAAiB,IAAI,EAC/C,OAAO,oBAAoB,uBAAuB,EAClD,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,SAAiB,gBAAwB,YAAiC;AAAA,IACvF,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,UAA+C;AAAA,QACnD,OAAO,SAAS,QAAQ,OAAO,EAAE,KAAK;AAAA,MACxC;AAAA,MAEA,IAAI,QAAQ,QAAQ;AAAA,QAClB,QAAQ,SAAS,SAAS,QAAQ,QAAQ,EAAE;AAAA,MAC9C;AAAA,MAEA,MAAM,SAAS,MAAM,OAAO,aAAa,SAAS,gBAAgB,OAAO;AAAA,MAEzE,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,MAAM;AAAA,MACtB,EAAO;AAAA,QAEL,MAAM,YAAY,OAAO,KAAK,IAAI,CAAC,OAAgB;AAAA,UACjD,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,SAAS,EAAE,QAAQ,SAAS,KAAK,EAAE,QAAQ,UAAU,GAAG,EAAE,IAAI,QAAQ,EAAE;AAAA,UACxE,QAAQ,EAAE,cAAc;AAAA,UACxB,SAAS,EAAE,YAAY,IAAI,KAAK,EAAE,SAAS,EAAE,eAAe,IAAI;AAAA,QAClE,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAEH,OAAO;AAAA;;;ACjjBT,oBAAS;AACT;AAIO,SAAS,mBAAmB,GAAY;AAAA,EAC7C,MAAM,SAAS,IAAI,SAAQ,QAAQ,EAChC,YAAY,0BAA0B,EACtC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ;AAAA,EAGH,OACG,QAAQ,MAAM,EACd,YAAY,wBAAwB,EACpC,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,MAAM;AAAA,IACZ,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,MAAM,MAAM,WAAW;AAAA,IAGvB,MAAM,UAAU;AAAA,SACX;AAAA,MACH,QAAQ,IAAI,SAAS,GAAG,IAAI,OAAO,MAAM,GAAG,CAAC,SAAS;AAAA,IACxD;AAAA,IAEA,OAAO,OAAO,OAAO;AAAA,GACtB;AAAA,EAGH,OACG,QAAQ,KAAK,EACb,YAAY,yBAAyB,EACrC,SAAS,SAAS,8FAA8F,EAChH,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,gFAAgF;AAAA,KACvF,EACA,OAAO,CAAC,QAAgB;AAAA,IACvB,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,MAAM,MAAM,WAAW;AAAA,IAEvB,IAAI,EAAE,OAAO,MAAM;AAAA,MACjB,OAAO,MAAM,uBAAuB,KAAK;AAAA,MACzC,QAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,IAEA,MAAM,QAAQ,IAAI;AAAA,IAElB,MAAM,cAAc,OAAO,UAAU,WAAW,KAAK,UAAU,KAAK,IAAI,OAAO,SAAS,EAAE;AAAA,IAC1F,MAAM,eAAe,QAAQ,YAAY,QAAQ,GAAG,YAAY,MAAM,GAAG,CAAC,SAAS;AAAA,IAEnF,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO,GAAG,MAAM,aAAa,CAAC;AAAA,IACvC,EAAO;AAAA,MACL,OAAO,KAAK,YAAY;AAAA;AAAA,GAE3B;AAAA,EAGH,MAAM,MAAM,IAAI,SAAQ,KAAK,EAC1B,YAAY,yBAAyB;AAAA,EAGxC,IACG,QAAQ,WAAW,EACnB,YAAY,0BAA0B,EACtC,SAAS,QAAQ,gCAAgC,EACjD,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,2EAA4E;AAAA,KACnF,EACA,OAAO,CAAC,OAAe;AAAA,IACtB,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,oBAAoB,EAAE;AAAA,IAEtB,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO,EAAE,SAAS,MAAM,kBAAkB,GAAG,CAAC;AAAA,IACvD,EAAO;AAAA,MACL,OAAO,QAAQ,4BAA4B,IAAI;AAAA;AAAA,GAElD;AAAA,EAGH,IACG,QAAQ,KAAK,EACb,YAAY,6BAA6B,EACzC,SAAS,QAAQ,mCAAmC,EACpD,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA;AAAA,EAEf,OAAM,IAAI,mDAAmD;AAAA,KAC1D,EACA,OAAO,CAAC,OAAe;AAAA,IACtB,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,uBAAuB,EAAE;AAAA,IAEzB,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO,EAAE,SAAS,MAAM,qBAAqB,GAAG,CAAC;AAAA,IAC1D,EAAO;AAAA,MACL,OAAO,QAAQ,+BAA+B,IAAI;AAAA;AAAA,GAErD;AAAA,EAEH,OAAO,WAAW,GAAG;AAAA,EAErB,OAAO;AAAA;;;AC7HT,oBAAS;AACT;AACA,yBAAS;AAgDT,SAAS,YAAY,CAAC,MAAuD;AAAA,EAC3E,IAAI,CAAC,QAAQ,KAAK,WAAW,GAAG,GAAG;AAAA,IACjC,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,aAAa,KAAK,QAAQ,GAAG;AAAA,EACnC,IAAI,eAAe,IAAI;AAAA,IACrB,OAAO,EAAE,OAAO,MAAM,OAAO,GAAG;AAAA,EAClC;AAAA,EAEA,MAAM,QAAQ,KAAK,MAAM,GAAG,UAAU;AAAA,EACtC,IAAI,QAAQ,KAAK,MAAM,aAAa,CAAC;AAAA,EACrC,IAAI,MAAM,WAAW,GAAG,GAAG;AAAA,IACzB,QAAQ,MAAM,MAAM,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,EAAE,OAAO,MAAM;AAAA;AAMxB,SAAS,sBAAsB,CAAC,MAAwC;AAAA,EACtE,IAAI;AAAA,IACF,OAAO,KAAK,MAAM,IAAI;AAAA,IACtB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAQJ,SAAS,uBAAuB,GAAY;AAAA,EACjD,MAAM,aAAa,IAAI,SAAQ,YAAY,EACxC,YAAY,wCAAwC,EACpD,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAaZ;AAAA,EAGH,WACG,QAAQ,KAAK,EACb,YAAY,uCAAuC,EACnD,SAAS,eAAe,oDAAoD,EAC5E,OAAO,sBAAsB,yBAAyB,EACtD,OAAO,qBAAqB,sBAAsB,EAClD,OAAO,gBAAgB,qBAAqB,EAC5C,OAAO,uBAAuB,gBAAgB,EAC9C,OAAO,mBAAmB,wBAAwB,EAClD,OAAO,kBAAkB,6BAA6B,EACtD,OAAO,qBAAqB,yCAAyC,EACrE,YAAY,SAAS;AAAA;AAAA,IAEtB,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA,IACb,OAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQf,OAAM,IAAI,sFAAwF;AAAA,KAC/F,EACA,OAAO,OAAO,UAAkB,YAAwB;AAAA,IACvD,MAAM,SAAS,YAAY,UAAU;AAAA,IACrC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MAEF,MAAM,YAAY,WAAW,OAAO;AAAA,MAEpC,MAAM,SAAS,aAAa;AAAA,MAE5B,IAAI,QAAQ,QAAQ;AAAA,QAElB,MAAM,iBAAiB,QAAQ,UAAU,WAAW,QAAQ,OAAO,QAAQ,MAAM;AAAA,MACnF,EAAO;AAAA,QAEL,MAAM,SAAS,MAAM,OAAO,cAAc,UAAU,WAAW;AAAA,UAC7D,OAAO,QAAQ;AAAA,QACjB,CAAC;AAAA,QAED,IAAI,QAAQ;AAAA,UACV,OAAO,OAAO;AAAA,eACT;AAAA,YACH,QAAQ;AAAA,cACN,YAAY,eAAe;AAAA,cAC3B,QAAQ,WAAW,QAAQ;AAAA,YAC7B;AAAA,UACF,CAAC;AAAA,QACH,EAAO;AAAA,UAEL,QAAQ,IAAI,OAAM,KAAK;AAAA,kBAAqB,CAAC;AAAA,UAC7C,QAAQ,IAAI,OAAM,KAAK,IAAG,OAAO,EAAE,CAAC,CAAC;AAAA,UACrC,QAAQ,IAAI,OAAM,KAAK,SAAS,CAAC;AAAA,UACjC,QAAQ,IAAI,OAAO,MAAM;AAAA,UACzB,QAAQ,IAAI,OAAM,KAAK,IAAG,OAAO,EAAE,CAAC,CAAC;AAAA,UACrC,QAAQ,IAAI,OAAM,IAAI,UAAU,OAAO,OAAO,CAAC;AAAA,UAC/C,QAAQ,IAAI,OAAM,IAAI,mBAAmB,OAAO,OAAO,eAAe,KAAK,CAAC;AAAA,UAC5E,IAAI,OAAO,QAAQ;AAAA,YACjB,QAAQ,IAAI,OAAM,IAAI,WAAW,OAAO,OAAO,OAAO,MAAM,cAAc,OAAO,OAAO,OAAO,UAAU,kBAAkB,OAAO,OAAO,OAAO,KAAK,SAAS,CAAC;AAAA,UACjK;AAAA,UACA,IAAI,OAAO,SAAS,WAAW;AAAA,YAC7B,QAAQ,IAAI,OAAM,IAAI,UAAU,OAAO,KAAK,QAAQ,CAAC,GAAG,CAAC;AAAA,UAC3D;AAAA,UACA,QAAQ,IAAI,OAAM,IAAI,eAAe,eAAe,GAAG,CAAC;AAAA,UACxD,QAAQ,IAAI;AAAA;AAAA;AAAA,MAGhB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAEH,OAAO;AAAA;AAUT,SAAS,UAAU,CAAC,SAA8C;AAAA,EAEhE,MAAM,iBAAiB,QAAQ,SAAS,QAAQ;AAAA,EAChD,MAAM,sBAAsB,QAAQ,UAAU,QAAQ,SAAS,QAAQ;AAAA,EAEvE,IAAI,kBAAkB,qBAAqB;AAAA,IACzC,MAAM,IAAI,cACR,qBACA,qFACA,2DACF;AAAA,EACF;AAAA,EAEA,IAAI,QAAQ,SAAS,QAAQ,MAAM;AAAA,IACjC,MAAM,IAAI,cACR,qBACA,8CACA,kEACF;AAAA,EACF;AAAA,EAGA,IAAI,qBAAqB;AAAA,IACvB,OAAO,sBAAsB,OAAO;AAAA,EACtC;AAAA,EAGA,MAAM,YAAY,aAAa,OAAO;AAAA,EAEtC,OAAO,eAAe,SAAS;AAAA;AAMjC,SAAS,qBAAqB,CAAC,SAA8C;AAAA,EAE3E,IAAI,QAAQ,UAAU;AAAA,IACpB,IAAI,QAAQ,UAAU,QAAQ,OAAO;AAAA,MACnC,MAAM,IAAI,cACR,qBACA,kDACA,2DACF;AAAA,IACF;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,SAAS,KAAK,MAAM,QAAQ,QAAQ;AAAA,MAC1C,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,QAC1B,MAAM,IAAI,cACR,iBACA,mCACA,4DACF;AAAA,MACF;AAAA,MAGA,WAAW,OAAO,QAAQ;AAAA,QACxB,IAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AAAA,UAC3C,MAAM,IAAI,cACR,iBACA,kCACA,6DACF;AAAA,QACF;AAAA,QACA,MAAM,SAAS;AAAA,QACf,IAAI,CAAC,OAAO,QAAQ,CAAC,OAAO,SAAS;AAAA,UACnC,MAAM,IAAI,cACR,iBACA,kDACA,6DACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,OAAO,EAAE,UAAU,OAA0B;AAAA,MAC7C,OAAO,KAAK;AAAA,MACZ,IAAI,eAAe,eAAe;AAAA,QAChC,MAAM;AAAA,MACR;AAAA,MACA,MAAM,IAAI,cACR,gBACA,sCACA,eAAe,QAAQ,IAAI,UAAU,sCACvC;AAAA;AAAA,EAEJ;AAAA,EAGA,IAAI,CAAC,QAAQ,UAAU,CAAC,QAAQ,OAAO;AAAA,IACrC,MAAM,IAAI,cACR,qBACA,iFACA,gDACF;AAAA,EACF;AAAA,EAEA,MAAM,WAA4B,CAAC;AAAA,EAEnC,IAAI,QAAQ,QAAQ;AAAA,IAClB,SAAS,KAAK,EAAE,MAAM,UAAU,SAAS,QAAQ,OAAO,CAAC;AAAA,EAC3D;AAAA,EAEA,IAAI,QAAQ,OAAO;AAAA,IACjB,SAAS,KAAK,EAAE,MAAM,QAAQ,SAAS,QAAQ,MAAM,CAAC;AAAA,EACxD;AAAA,EAEA,OAAO,EAAE,SAAS;AAAA;AAMpB,SAAS,YAAY,CAAC,SAA6B;AAAA,EACjD,IAAI,QAAQ,MAAM;AAAA,IAChB,IAAI;AAAA,MACF,OAAO,eAAa,QAAQ,MAAM,OAAO;AAAA,MACzC,OAAO,KAAK;AAAA,MACZ,MAAM,IAAI,cACR,mBACA,8BAA8B,QAAQ,QACtC,eAAe,QAAQ,IAAI,UAAU,qCACvC;AAAA;AAAA,EAEJ;AAAA,EAEA,IAAI,QAAQ,OAAO;AAAA,IACjB,OAAO,QAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,IAAI,cACR,qBACA,qBACA,0FACF;AAAA;AAMF,SAAS,cAAc,CAAC,WAA4C;AAAA,EAElE,IAAI;AAAA,IACF,MAAM,SAAS,KAAK,MAAM,SAAS;AAAA,IACnC,IAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,MAAM,QAAQ,MAAM,GAAG;AAAA,MAC1E,MAAM,IAAI,cACR,iBACA,+BACA,0CACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA,IACP,OAAO,KAAK;AAAA,IACZ,IAAI,eAAe,eAAe;AAAA,MAChC,MAAM;AAAA,IACR;AAAA,IACA,MAAM,IAAI,cACR,gBACA,iCACA,eAAe,QAAQ,IAAI,UAAU,gCACvC;AAAA;AAAA;AAOJ,eAAe,gBAAgB,CAC7B,QACA,UACA,OACA,OACA,QACA,QACe;AAAA,EACf,MAAM,WAAW,MAAM,OAAO,oBAAoB,UAAU,OAAO,EAAE,MAAM,CAAC;AAAA,EAE5E,IAAI,CAAC,SAAS,MAAM;AAAA,IAClB,MAAM,IAAI,cACR,gBACA,6BACA,gDACF;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,SAAS,KAAK,UAAU;AAAA,EACvC,MAAM,UAAU,IAAI;AAAA,EACpB,IAAI,SAAS;AAAA,EAEb,IAAI,CAAC,QAAQ;AAAA,IACX,QAAQ,IAAI,OAAM,KAAK;AAAA,kBAAqB,CAAC;AAAA,IAC7C,QAAQ,IAAI,OAAM,KAAK,IAAG,OAAO,EAAE,CAAC,CAAC;AAAA,EACvC;AAAA,EAEA,IAAI;AAAA,IACF,UAAS;AAAA,MACP,QAAQ,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,MAC1C,IAAI;AAAA,QAAM;AAAA,MAEV,UAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAAA,MAChD,MAAM,QAAQ,OAAO,MAAM;AAAA,CAAI;AAAA,MAC/B,SAAS,MAAM,IAAI,KAAK;AAAA,MAExB,WAAW,QAAQ,OAAO;AAAA,QACxB,MAAM,SAAS,aAAa,IAAI;AAAA,QAChC,IAAI,CAAC;AAAA,UAAQ;AAAA,QAEb,IAAI,OAAO,UAAU,QAAQ;AAAA,UAC3B,MAAM,QAAQ,uBAAuB,OAAO,KAAK;AAAA,UACjD,IAAI,CAAC;AAAA,YAAO;AAAA,UAEZ,QAAQ,MAAM;AAAA,iBACP;AAAA,cACH,IAAI,QAAQ;AAAA,gBACV,QAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,SAAS,WAAW,MAAM,UAAU,CAAC,CAAC;AAAA,cAC3E;AAAA,cACA;AAAA,iBAEG;AAAA,cACH,IAAI,MAAM,OAAO;AAAA,gBACf,IAAI,QAAQ;AAAA,kBACV,QAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,SAAS,OAAO,MAAM,MAAM,CAAC,CAAC;AAAA,gBACnE,EAAO;AAAA,kBACL,QAAQ,OAAO,MAAM,MAAM,KAAK;AAAA;AAAA,cAEpC;AAAA,cACA;AAAA,iBAEG;AAAA,cACH,IAAI,QAAQ;AAAA,gBACV,QAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,YAAY,QAAQ,MAAM,OAAO,CAAC,CAAC;AAAA,cACxE,EAAO;AAAA,gBACL,QAAQ,IAAI;AAAA,gBACZ,QAAQ,IAAI,OAAM,KAAK,IAAG,OAAO,EAAE,CAAC,CAAC;AAAA,gBACrC,IAAI,MAAM,QAAQ;AAAA,kBAChB,QAAQ,IAAI,OAAM,IAAI,UAAU,MAAM,OAAO,OAAO,CAAC;AAAA,kBACrD,QAAQ,IAAI,OAAM,IAAI,mBAAmB,OAAO,MAAM,OAAO,eAAe,KAAK,CAAC;AAAA,kBAClF,IAAI,MAAM,OAAO,QAAQ;AAAA,oBACvB,QAAQ,IAAI,OAAM,IAAI,WAAW,OAAO,MAAM,OAAO,OAAO,MAAM,cAAc,OAAO,MAAM,OAAO,OAAO,UAAU,kBAAkB,OAAO,MAAM,OAAO,OAAO,KAAK,SAAS,CAAC;AAAA,kBACnL;AAAA,kBACA,IAAI,MAAM,OAAO,SAAS,WAAW;AAAA,oBACnC,QAAQ,IAAI,OAAM,IAAI,UAAU,MAAM,OAAO,KAAK,QAAQ,CAAC,GAAG,CAAC;AAAA,kBACjE;AAAA,gBACF;AAAA,gBACA,QAAQ,IAAI;AAAA;AAAA,cAEd;AAAA,iBAEG;AAAA,cACH,IAAI,QAAQ;AAAA,gBACV,QAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,SAAS,OAAO,MAAM,MAAM,CAAC,CAAC;AAAA,cACnE,EAAO;AAAA,gBACL,OAAO,MAAM,MAAM,SAAS,yBAAyB;AAAA;AAAA,cAEvD;AAAA;AAAA,QAEN;AAAA,MACF;AAAA,IACF;AAAA,YACA;AAAA,IACA,OAAO,YAAY;AAAA;AAAA;;;AC9cvB,oBAAS;AACT;AAYO,SAAS,uBAAuB,GAAY;AAAA,EACjD,MAAM,aAAa,IAAI,SAAQ,YAAY,EACxC,YAAY,6BAA6B,EACzC,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMZ;AAAA,EAQH,WACG,QAAQ,MAAM,EACd,YAAY,qBAAqB,EACjC,OAAO,mBAAmB,iBAAiB,IAAI,EAC/C,OAAO,oBAAoB,uBAAuB,EAClD,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,YAAyB;AAAA,IACtC,MAAM,SAAS,YAAY,UAAU;AAAA,IACrC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,UAA+C;AAAA,QACnD,OAAO,SAAS,QAAQ,OAAO,EAAE,KAAK;AAAA,MACxC;AAAA,MAEA,IAAI,QAAQ,QAAQ;AAAA,QAClB,QAAQ,SAAS,SAAS,QAAQ,QAAQ,EAAE;AAAA,MAC9C;AAAA,MAEA,MAAM,SAAS,MAAM,OAAO,eAAe,OAAO;AAAA,MAElD,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,MAAM;AAAA,MACtB,EAAO;AAAA,QAEL,MAAM,YAAY,OAAO,KAAK,IAAI,CAAC,OAAkB;AAAA,UACnD,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,MAAM,EAAE;AAAA,UACR,WAAW,EAAE,YAAY,QAAQ;AAAA,UACjC,SAAS,EAAE,YAAY,IAAI,KAAK,EAAE,SAAS,EAAE,mBAAmB,IAAI;AAAA,QACtE,EAAE;AAAA,QACF,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,WACG,QAAQ,KAAK,EACb,YAAY,uBAAuB,EACnC,SAAS,QAAQ,cAAc,EAC/B,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,OAAe;AAAA,IAC5B,MAAM,SAAS,YAAY,UAAU;AAAA,IACrC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,YAAY,MAAM,OAAO,aAAa,EAAE;AAAA,MAE9C,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,SAAS;AAAA,MACzB,EAAO;AAAA,QAEL,MAAM,YAAqC;AAAA,UACzC,IAAI,UAAU;AAAA,UACd,MAAM,UAAU;AAAA,UAChB,MAAM,UAAU;AAAA,UAChB,aAAa,UAAU,eAAe;AAAA,UACtC,WAAW,UAAU,YAAY,QAAQ;AAAA,UACzC,WAAW,UAAU,aAAa;AAAA,UAClC,WAAW,UAAU,YAAY,IAAI,KAAK,UAAU,SAAS,EAAE,eAAe,IAAI;AAAA,UAClF,WAAW,UAAU,YAAY,IAAI,KAAK,UAAU,SAAS,EAAE,eAAe,IAAI;AAAA,QACpF;AAAA,QACA,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAEH,OAAO;AAAA;;;ACpHT,oBAAS;AACT;AAQA,IAAM,uBAAuC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAYA,SAAS,oBAAoB,CAAC,MAA4B;AAAA,EACxD,IAAI,CAAC,qBAAqB,SAAS,IAAoB,GAAG;AAAA,IACxD,MAAM,IAAI,cACR,yBACA,0BAA0B,QAC1B,gBAAgB,qBAAqB,KAAK,IAAI,GAChD;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,sBAAsB,GAAY;AAAA,EAChD,MAAM,YAAY,IAAI,UAAQ,WAAW,EACtC,YAAY,gCAAgC,EAC5C,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KASZ;AAAA,EAOH,UACG,QAAQ,MAAM,EACd,YAAY,oBAAoB,EAChC,OAAO,mBAAmB,iBAAiB,IAAI,EAC/C,OAAO,oBAAoB,uBAAuB,EAClD,OAAO,qBAAqB,yBAAyB,EACrD,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,YAAyB;AAAA,IACtC,MAAM,SAAS,YAAY,SAAS;AAAA,IACpC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,UAA8D;AAAA,QAClE,OAAO,SAAS,QAAQ,OAAO,EAAE,KAAK;AAAA,MACxC;AAAA,MAEA,IAAI,QAAQ,QAAQ;AAAA,QAClB,QAAQ,SAAS,SAAS,QAAQ,QAAQ,EAAE;AAAA,MAC9C;AAAA,MACA,IAAI,QAAQ,MAAM;AAAA,QAChB,QAAQ,OAAO,qBAAqB,QAAQ,IAAI;AAAA,MAClD;AAAA,MAEA,MAAM,SAAS,MAAM,OAAO,cAAc,OAAO;AAAA,MAEjD,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,MAAM;AAAA,MACtB,EAAO;AAAA,QACL,IAAI,OAAO,KAAK,WAAW,GAAG;AAAA,UAC5B,OAAO,KAAK,0BAA0B;AAAA,UACtC,OAAO,KAAK,iBAAiB,qBAAqB,GAAG;AAAA,QACvD,EAAO;AAAA,UAEL,MAAM,YAAY,OAAO,KAAK,IAAI,CAAC,OAAiB;AAAA,YAClD,IAAI,EAAE;AAAA,YACN,MAAM,EAAE;AAAA,YACR,MAAM,EAAE;AAAA,YACR,SAAS,EAAE,WAAW;AAAA,YACtB,QAAQ,EAAE,WAAW,QAAQ;AAAA,YAC7B,SAAS,EAAE,YAAY,IAAI,KAAK,EAAE,SAAS,EAAE,mBAAmB,IAAI;AAAA,UACtE,EAAE;AAAA,UACF,OAAO,OAAO,SAAS;AAAA;AAAA;AAAA,MAG3B,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,UACG,QAAQ,KAAK,EACb,YAAY,sBAAsB,EAClC,SAAS,QAAQ,6CAA6C,EAC9D,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA,KACZ,EACA,OAAO,OAAO,OAAe;AAAA,IAC5B,MAAM,SAAS,YAAY,SAAS;AAAA,IACpC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAC5B,MAAM,WAAW,MAAM,OAAO,YAAY,EAAE;AAAA,MAE5C,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,QAAQ;AAAA,MACxB,EAAO;AAAA,QAEL,MAAM,YAAqC;AAAA,UACzC,IAAI,SAAS;AAAA,UACb,MAAM,SAAS;AAAA,UACf,MAAM,SAAS;AAAA,UACf,SAAS,SAAS,WAAW;AAAA,UAC7B,UAAU,SAAS,WAAW,QAAQ;AAAA,UACtC,WAAW,SAAS,aAAa;AAAA,UACjC,WAAW,SAAS,YAAY,IAAI,KAAK,SAAS,SAAS,EAAE,eAAe,IAAI;AAAA,UAChF,WAAW,SAAS,YAAY,IAAI,KAAK,SAAS,SAAS,EAAE,eAAe,IAAI;AAAA,QAClF;AAAA,QACA,OAAO,OAAO,SAAS;AAAA;AAAA,MAEzB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAGH,UACG,QAAQ,MAAM,EACd,YAAY,4BAA4B,EACxC,SAAS,QAAQ,6CAA6C,EAC9D,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA,EAEf,QAAM,IAAI,iEAAiE;AAAA,KACxE,EACA,OAAO,OAAO,OAAe;AAAA,IAC5B,MAAM,SAAS,YAAY,SAAS;AAAA,IACpC,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,SAAS,aAAa;AAAA,MAE5B,IAAI,CAAC,QAAQ;AAAA,QACX,OAAO,KAAK,oBAAoB,OAAO;AAAA,MACzC;AAAA,MAEA,MAAM,SAAS,MAAM,OAAO,aAAa,EAAE;AAAA,MAE3C,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO,MAAM;AAAA,MACtB,EAAO;AAAA,QACL,IAAI,OAAO,SAAS;AAAA,UAClB,OAAO,QAAQ,yBAAyB,OAAO,OAAO,cAAc,MAAM;AAAA,UAC1E,QAAQ,IAAI,QAAM,MAAM,YAAY,OAAO,SAAS,CAAC;AAAA,UACrD,IAAI,OAAO,mBAAmB,OAAO,gBAAgB,SAAS,GAAG;AAAA,YAC/D,QAAQ,IAAI,QAAM,KAAK;AAAA,kBAAqB,CAAC;AAAA,YAC7C,OAAO,gBAAgB,QAAQ,WAAS;AAAA,cACtC,QAAQ,IAAI,OAAO,OAAO;AAAA,aAC3B;AAAA,UACH;AAAA,QACF,EAAO;AAAA,UACL,OAAO,MAAM,yBAAyB,OAAO,SAAS;AAAA,UACtD,IAAI,OAAO,OAAO;AAAA,YAChB,QAAQ,IAAI,QAAM,IAAI,UAAU,OAAO,OAAO,CAAC;AAAA,UACjD;AAAA;AAAA;AAAA,MAGJ,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAEH,OAAO;AAAA;;;AClNT,oBAAS;AACT;AACA;AACA,uBAAS,8BAAY,iCAAc;AACnC,qBAAS;AACT,iBAAS;AAsCT,IAAM,0BAA8D;AAAA,EAClE,gBAAgB;AAAA,IACd,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,EACd;AAAA,EACA,wBAAwB;AAAA,IACtB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AAAA,EACA,WAAa;AAAA,IACX,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AAAA,EACA,mBAAmB;AAAA,IACjB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AAAA,EACA,gBAAgB;AAAA,IACd,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AAAA,EACA,IAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,EACd;AAAA,EACA,QAAU;AAAA,IACR,MAAM;AAAA,IACN,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AACF;AASO,SAAS,qBAAoB,CAAC,MAAc,QAAQ,IAAI,GAAmB;AAAA,EAChF,IAAI,aAAW,MAAK,KAAK,WAAW,CAAC,KAAK,aAAW,MAAK,KAAK,UAAU,CAAC,GAAG;AAAA,IAC3E,OAAO;AAAA,EACT;AAAA,EACA,IAAI,aAAW,MAAK,KAAK,gBAAgB,CAAC,GAAG;AAAA,IAC3C,OAAO;AAAA,EACT;AAAA,EACA,IAAI,aAAW,MAAK,KAAK,WAAW,CAAC,GAAG;AAAA,IACtC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,aAAW,MAAK,KAAK,mBAAmB,CAAC,GAAG;AAAA,IAC9C,OAAO;AAAA,EACT;AAAA,EAGA,IAAI;AAAA,IACF,UAAS,iBAAiB,EAAE,OAAO,SAAS,CAAC;AAAA,IAC7C,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAOJ,SAAS,kBAAiB,CAAC,IAAoB,UAA4B;AAAA,EAChF,MAAM,UAAU,SAAS,KAAK,GAAG;AAAA,EACjC,MAAM,WAA2C;AAAA,IAC/C,KAAK,WAAW;AAAA,IAChB,KAAK,eAAe;AAAA,IACpB,MAAM,YAAY;AAAA,IAClB,MAAM,YAAY;AAAA,EACpB;AAAA,EACA,OAAO,SAAS;AAAA;AAMX,SAAS,8BAA8B,CAAC,MAAc,QAAQ,IAAI,GAA8B;AAAA,EACrG,MAAM,UAAU,MAAK,KAAK,cAAc;AAAA,EACxC,IAAI,CAAC,aAAW,OAAO,GAAG;AAAA,IACxB,OAAO;AAAA,EACT;AAAA,EAEA,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,MAAM,KAAK,MAAM,eAAa,SAAS,OAAO,CAAC;AAAA,IAC/C,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAGT,MAAM,UAAU;AAAA,OACX,IAAI;AAAA,OACJ,IAAI;AAAA,EACT;AAAA,EAGA,YAAY,SAAS,cAAc,OAAO,QAAQ,uBAAuB,GAAG;AAAA,IAC1E,IAAI,WAAW,SAAS;AAAA,MACtB,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAMF,SAAS,WAAW,CAAC,MAAc,QAAQ,IAAI,GAAY;AAAA,EAChE,OAAO,aAAW,MAAK,KAAK,kBAAkB,CAAC;AAAA;AAMjD,SAAS,aAAa,CAAC,QAA0B,MAAc,QAAQ,IAAI,GAAS;AAAA,EAClF,MAAM,SAAS,MAAK,KAAK,kBAAkB;AAAA,EAC3C,eAAc,QAAQ,KAAK,UAAU,QAAQ,MAAM,CAAC,IAAI;AAAA,CAAI;AAAA;AAOvD,SAAS,iBAAiB,GAAY;AAAA,EAC3C,MAAM,OAAO,IAAI,UAAQ,MAAM,EAC5B,YAAY,qCAAqC,EACjD,OAAO,qBAAqB,sDAAsD,EAClF,YAAY,SAAS;AAAA;AAAA,IAEtB,QAAM,IAAI,GAAG;AAAA,IACb,QAAM,IAAI,GAAG;AAAA;AAAA;AAAA,IAGb,QAAM,KAAK,eAAe;AAAA,IAC1B,QAAM,KAAK,UAAU;AAAA,IACrB,QAAM,KAAK,MAAM;AAAA,KAChB,EACA,OAAO,OAAO,YAAyB;AAAA,IACtC,MAAM,SAAS,YAAY,IAAI;AAAA,IAC/B,MAAM,SAAS,IAAI,gBAAgB,SAAS,SAAS,OAAO;AAAA,IAE5D,IAAI;AAAA,MACF,MAAM,mBACJ,QAAQ,mBAAmB,QAC3B,QAAQ,IAAI,6BAA6B,UACzC,QAAQ,IAAI,OAAO,UACnB,CAAC,QAAQ,MAAM;AAAA,MAEjB,MAAM,MAAM,QAAQ,IAAI;AAAA,MAGxB,IAAI,YAAY,GAAG,GAAG;AAAA,QACpB,OAAO,KAAK,oDAAoD;AAAA,QAChE,IAAI,kBAAkB;AAAA,UACpB,OAAO,KAAK,wDAAwD;AAAA,UACpE;AAAA,QACF;AAAA,QACA,QAAQ,cAAc,MAAM,UAAS,OAA+B,CAAC;AAAA,UACnE,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,QACX,CAAC,CAAC;AAAA,QACF,IAAI,CAAC,WAAW;AAAA,UACd,OAAO,KAAK,iBAAiB;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AAAA,MAGA,MAAM,gBAAgB,eAAe;AAAA,MACrC,IAAI,CAAC,eAAe;AAAA,QAClB,OAAO,KAAK,oBAAoB;AAAA,QAChC,OAAO,KAAK,oCAAoC;AAAA,QAChD,IAAI,kBAAkB;AAAA,UACpB,MAAM,IAAI,cACR,iBACA,uCACA,oCACF;AAAA,QACF;AAAA,QACA,QAAQ,WAAW,MAAM,UAAS,OAA4B,CAAC;AAAA,UAC7D,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,QACX,CAAC,CAAC;AAAA,QACF,IAAI,QAAQ;AAAA,UACV,OAAO,KAAK,sEAAsE;AAAA,UAClF;AAAA,QACF;AAAA,MACF;AAAA,MAGA,MAAM,oBAAoB,+BAA+B,GAAG;AAAA,MAG5D,IAAI;AAAA,MACJ,IAAI,qBAAgD;AAAA,MAEpD,IAAI,kBAAkB;AAAA,QACpB,OAAO;AAAA,QACP,IAAI,QAAQ;AAAA,UACV,OAAO,OAAO;AAAA,YACZ,MAAM;AAAA,YACN,gBAAgB;AAAA,YAChB,mBAAmB,mBAAmB,QAAQ;AAAA,UAChD,CAAC;AAAA,QACH;AAAA,MACF,EAAO;AAAA,QAEL,IAAI,mBAAmB;AAAA,UACrB,OAAO,KAAK,uBAAuB,kBAAkB,gBAAgB,kBAAkB,aAAa;AAAA,UAEpG,QAAQ,qBAAqB,MAAM,UAAS,OAAsC,CAAC;AAAA,YACjF,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS,OAAO,kBAAkB;AAAA,YAClC,SAAS;AAAA,UACX,CAAC,CAAC;AAAA,UAEF,IAAI,CAAC,kBAAkB;AAAA,YACrB,MAAM,mBAAmB;AAAA,cACvB,EAAE,MAAM,UAAU,OAAO,SAAS;AAAA,cAClC,EAAE,MAAM,aAAa,OAAO,YAAY;AAAA,cACxC,EAAE,MAAM,aAAa,OAAO,YAAY;AAAA,cACxC,EAAE,MAAM,iBAAiB,OAAO,YAAY;AAAA,cAC5C,EAAE,MAAM,cAAc,OAAO,SAAS;AAAA,cACtC,EAAE,MAAM,+BAA+B,OAAO,UAAU;AAAA,cACxD,EAAE,MAAM,yBAAyB,OAAO,OAAO;AAAA,YACjD;AAAA,YAEA,QAAQ,sBAAsB,MAAM,UAAS,OAAsC,CAAC;AAAA,cAClF,MAAM;AAAA,cACN,MAAM;AAAA,cACN,SAAS;AAAA,cACT,SAAS;AAAA,YACX,CAAC,CAAC;AAAA,YAEF,IAAI,sBAAsB,QAAQ;AAAA,cAChC,qBAAqB;AAAA,YACvB,EAAO;AAAA,cAEL,MAAM,QAAQ,OAAO,OAAO,uBAAuB,EAAE,KAAK,OAAK,EAAE,SAAS,iBAAiB;AAAA,cAC3F,qBAAqB,SAAS;AAAA;AAAA,UAElC;AAAA,QACF,EAAO;AAAA,UACL,OAAO,KAAK,2CAA2C;AAAA;AAAA,QAIzD,MAAM,cAAc;AAAA,UAClB,GAAI,oBAAoB,kBAAkB,CAAC;AAAA,YACzC,MAAM,2CAA2C,mBAAmB;AAAA,YACpE,OAAO;AAAA,UACT,CAAC,IAAI,CAAC;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,UACA;AAAA,YACE,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,QACF;AAAA,QAEA,QAAQ,iBAAiB,MAAM,UAAS,OAAmC,CAAC;AAAA,UAC1E,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,QACX,CAAC,CAAC;AAAA,QAEF,OAAO;AAAA;AAAA,MAIT,IAAI,SAAS,QAAQ;AAAA,QACnB,OAAO,KAAK,eAAe;AAAA,QAC3B;AAAA,MACF;AAAA,MAGA,MAAM,SAAS,WAAW;AAAA,MAC1B,MAAM,WAAW,OAAO,YAAY;AAAA,MACpC,MAAM,YAAY,OAAO;AAAA,MAEzB,MAAM,WAA6B;AAAA,QACjC;AAAA,WACI,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,WAC7B,qBAAqB,EAAE,WAAW,mBAAmB,KAAK,IAAI,CAAC;AAAA,MACrE;AAAA,MAEA,IAAI,SAAS,UAAU,oBAAoB,iBAAiB;AAAA,QAE1D,MAAM,KAAK,sBAAqB,GAAG;AAAA,QACnC,MAAM,WAAW,CAAC,iBAAiB,mBAAmB,eAAe;AAAA,QACrE,MAAM,aAAa,mBAAkB,IAAI,QAAQ;AAAA,QAEjD,OAAO,KAAK,eAAe,SAAS,KAAK,IAAI,GAAG;AAAA,QAChD,OAAO,KAAK,YAAY,YAAY;AAAA,QAEpC,IAAI;AAAA,UACF,UAAS,YAAY,EAAE,KAAK,OAAO,UAAU,CAAC;AAAA,UAC9C,OAAO,QAAQ,kCAAkC;AAAA,UACjD,MAAM;AAAA,UACN,OAAO,MAAM,wDAAwD;AAAA,UACrE,OAAO,KAAK,KAAK,YAAY;AAAA;AAAA,QAI/B,cAAc,UAAU,GAAG;AAAA,QAC3B,OAAO,QAAQ,0BAA0B;AAAA,QAGzC,QAAQ,IAAI,EAAE;AAAA,QACd,OAAO,KAAK,aAAa;AAAA,QACzB,OAAO,KAAK,gCAAgC,mBAAmB,MAAM;AAAA,QACrE,OAAO,KAAK,+DAA+D;AAAA,QAC3E,OAAO,KAAK,iEAAiE;AAAA,MAC/E,EAAO;AAAA,QAEL,cAAc,UAAU,GAAG;AAAA,QAC3B,OAAO,QAAQ,0BAA0B;AAAA,QAEzC,IAAI,CAAC,eAAe;AAAA,UAClB,OAAO,KAAK,qCAAqC;AAAA,QACnD,EAAO;AAAA,UACL,OAAO,KAAK,yDAAyD;AAAA;AAAA;AAAA,MAKzE,IAAI,QAAQ;AAAA,QACV,OAAO,OAAO;AAAA,UACZ,SAAS;AAAA,UACT;AAAA,UACA,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,WAAW,oBAAoB,QAAQ;AAAA,UACvC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,OAAO,OAAO;AAAA,MACd,YAAY,OAAO,MAAM;AAAA;AAAA,GAE5B;AAAA,EAEH,OAAO;AAAA;;;AzBxXT,IAAI,aAAa;AACjB,IAAI;AAAA,EACF,MAAM,aAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AAAA,EACxD,MAAM,UAAU,MAAK,YAAW,MAAM,MAAM,cAAc;AAAA,EAC1D,MAAM,MAAM,KAAK,MAAM,eAAa,SAAS,OAAO,CAAC;AAAA,EACrD,aAAa,IAAI,WAAW;AAAA,EAC5B,MAAM;AAIR,IAAM,UAAU,IAAI;AAEpB,QACG,KAAK,UAAU,EACf,YAAY;AAAA;AAAA;AAAA,yCAG0B,EACtC,QAAQ,YAAY,iBAAiB,4BAA4B,EACjE,OAAO,UAAU,wCAAwC,EACzD,OAAO,mBAAmB,kBAAkB,EAC5C,OAAO,oBAAoB,0BAA0B,EACrD,OAAO,qBAAqB,gDAAgD,EAC5E,cAAc;AAAA,EACb,iBAAiB;AAAA,EACjB,mBAAmB;AACrB,CAAC;AAGH,QAAQ,YAAY,SAAS;AAAA,EAC3B,QAAM,OAAO,+CAA+C;AAAA,6BACjC,QAAM,MAAM,0CAA0C;AAAA,6BACtD,QAAM,MAAM,6CAA6C;AAAA,6BACzD,QAAM,MAAM,8BAA8B;AAAA,6BAC1C,QAAM,MAAM,yCAAyC;AAAA,6BACrD,QAAM,MAAM,8CAA8C;AAAA,6BAC1D,QAAM,MAAM,kCAAkC;AAAA,CAC1E;AAGD,QAAQ,YAAY,SAAS;AAAA,EAC3B,QAAM,OAAO,YAAY;AAAA,IACvB,QAAM,KAAK,2BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMrC,QAAM,KAAK,aAAa;AAAA;AAAA;AAAA,IAGxB,QAAM,KAAK,iCAAiC;AAAA,MAC1C,QAAM,MAAM,GAAQ;AAAA,MACpB,QAAM,MAAM,GAAQ;AAAA,MACpB,QAAM,MAAM,GAAQ;AAAA,MACpB,QAAM,IAAI,GAAQ,kBAAkB,QAAM,IAAI,4CAA4C;AAAA,CAC/F;AAGD,QAAQ,YAAY,SAAS;AAAA,EAC3B,QAAM,KAAK,gFAA+E;AAAA,EAC1F,QAAM,KAAK,GAAE,gFAAgF,QAAM,KAAK,GAAG;AAAA,EAC3G,QAAM,KAAK,GAAE,gFAAgF,QAAM,KAAK,GAAG;AAAA,EAC3G,QAAM,KAAK,GAAE,gFAAgF,QAAM,KAAK,GAAG;AAAA,EAC3G,QAAM,KAAK,GAAE,gFAAgF,QAAM,KAAK,GAAG;AAAA,EAC3G,QAAM,KAAK,GAAE,gFAAgF,QAAM,KAAK,GAAG;AAAA,EAC3G,QAAM,KAAK,GAAE,gFAAgF,QAAM,KAAK,GAAG;AAAA,EAC3G,QAAM,KAAK,GAAE,gFAAgF,QAAM,KAAK,GAAG;AAAA,EAC3G,QAAM,KAAK,gFAA+E;AAAA,EAC1F,CAAC,eAAe,IAAI,QAAM,OAAO;AAAA;AAAA,CAAsE,IAAI,KAAK,CAAC,YAAY,IAAI,QAAM,MAAM;AAAA;AAAA,CAAkC,IAAI,IAAI;AAIzL,QAAQ,KAAK,aAAa,CAAC,gBAAgB;AAAA,EACzC,MAAM,aAA+E,YAAY,gBAAgB;AAAA,EACjH,IAAI,WAAW,UAAU,CAAC,QAAQ,IAAI,kBAAkB;AAAA,IACtD,QAAQ,IAAI,mBAAmB,WAAW;AAAA,EAC5C;AAAA,EACA,IAAI,WAAW,YAAY,CAAC,QAAQ,IAAI,mBAAmB;AAAA,IACzD,QAAQ,IAAI,oBAAoB,WAAW;AAAA,EAC7C;AAAA,EACA,IAAI,WAAW,kBAAkB,QAAQ,IAAI,OAAO,UAAU,CAAC,QAAQ,MAAM,OAAO;AAAA,IAClF,QAAQ,IAAI,2BAA2B;AAAA,EACzC;AAAA,CACD;AAGD,QAAQ,WAAW,kBAAkB,CAAC;AACtC,QAAQ,WAAW,mBAAmB,CAAC;AACvC,QAAQ,WAAW,kBAAkB,CAAC;AACtC,QAAQ,WAAW,oBAAoB,CAAC;AACxC,QAAQ,WAAW,qBAAqB,CAAC;AACzC,QAAQ,WAAW,oBAAoB,CAAC;AACxC,QAAQ,WAAW,uBAAuB,CAAC;AAC3C,QAAQ,WAAW,oBAAoB,CAAC;AACxC,QAAQ,WAAW,wBAAwB,CAAC;AAC5C,QAAQ,WAAW,wBAAwB,CAAC;AAC5C,QAAQ,WAAW,uBAAuB,CAAC;AAG3C,QAAQ,MAAM;",
33
- "debugId": "33AA6EB433FA7E6264756E2164756E21",
33
+ "mappings": "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",
34
+ "debugId": "EDFE2E68EFA4B20A64756E2164756E21",
34
35
  "names": []
35
36
  }