@eldrforge/kodrdriv 1.2.29 → 1.2.123

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/application.js +16 -13
  2. package/dist/application.js.map +1 -1
  3. package/dist/arguments.js +5 -5
  4. package/dist/arguments.js.map +1 -1
  5. package/dist/commands/audio-review.js +2 -5
  6. package/dist/commands/audio-review.js.map +1 -1
  7. package/dist/commands/clean.js +2 -4
  8. package/dist/commands/clean.js.map +1 -1
  9. package/dist/commands/commit.js +3 -6
  10. package/dist/commands/commit.js.map +1 -1
  11. package/dist/commands/development.js +7 -7
  12. package/dist/commands/development.js.map +1 -1
  13. package/dist/commands/link.js +3 -7
  14. package/dist/commands/link.js.map +1 -1
  15. package/dist/commands/precommit.js +99 -0
  16. package/dist/commands/precommit.js.map +1 -0
  17. package/dist/commands/publish.js +47 -32
  18. package/dist/commands/publish.js.map +1 -1
  19. package/dist/commands/release.js +3 -7
  20. package/dist/commands/release.js.map +1 -1
  21. package/dist/commands/review.js +4 -6
  22. package/dist/commands/review.js.map +1 -1
  23. package/dist/commands/tree.js +213 -84
  24. package/dist/commands/tree.js.map +1 -1
  25. package/dist/commands/unlink.js +3 -7
  26. package/dist/commands/unlink.js.map +1 -1
  27. package/dist/commands/updates.js +2 -4
  28. package/dist/commands/updates.js.map +1 -1
  29. package/dist/commands/versions.js +3 -7
  30. package/dist/commands/versions.js.map +1 -1
  31. package/dist/constants.js +4 -2
  32. package/dist/constants.js.map +1 -1
  33. package/dist/content/files.js +2 -4
  34. package/dist/content/files.js.map +1 -1
  35. package/dist/execution/CommandValidator.js +33 -1
  36. package/dist/execution/CommandValidator.js.map +1 -1
  37. package/dist/execution/ResourceMonitor.js +26 -1
  38. package/dist/execution/ResourceMonitor.js.map +1 -1
  39. package/dist/execution/TreeExecutionAdapter.js +2 -2
  40. package/dist/execution/TreeExecutionAdapter.js.map +1 -1
  41. package/dist/util/checkpointManager.js +2 -4
  42. package/dist/util/checkpointManager.js.map +1 -1
  43. package/dist/util/dependencyGraph.js +2 -4
  44. package/dist/util/dependencyGraph.js.map +1 -1
  45. package/dist/util/general.js +7 -107
  46. package/dist/util/general.js.map +1 -1
  47. package/dist/util/gitMutex.js +63 -18
  48. package/dist/util/gitMutex.js.map +1 -1
  49. package/dist/util/precommitOptimizations.js +310 -0
  50. package/dist/util/precommitOptimizations.js.map +1 -0
  51. package/dist/util/storageAdapter.js +2 -6
  52. package/dist/util/storageAdapter.js.map +1 -1
  53. package/dist/utils/branchState.js +178 -45
  54. package/dist/utils/branchState.js.map +1 -1
  55. package/package.json +6 -5
  56. package/AI-FRIENDLY-LOGGING-GUIDE.md +0 -237
  57. package/AI-LOGGING-MIGRATION-COMPLETE.md +0 -371
  58. package/ALREADY-PUBLISHED-PACKAGES-FIX.md +0 -264
  59. package/AUDIT-BRANCHES-PROGRESS-FIX.md +0 -90
  60. package/AUDIT-EXAMPLE-OUTPUT.md +0 -113
  61. package/CHECKPOINT-RECOVERY-FIX.md +0 -450
  62. package/LOGGING-MIGRATION-STATUS.md +0 -186
  63. package/MONOREPO-PUBLISH-IMPROVEMENTS.md +0 -281
  64. package/PARALLEL-EXECUTION-FIXES.md +0 -132
  65. package/PARALLEL-PUBLISH-DEBUGGING-GUIDE.md +0 -441
  66. package/PARALLEL-PUBLISH-FIXES-IMPLEMENTED.md +0 -405
  67. package/PARALLEL-PUBLISH-IMPROVEMENTS-IMPLEMENTED.md +0 -439
  68. package/PARALLEL-PUBLISH-LOGGING-FIXES.md +0 -274
  69. package/PARALLEL-PUBLISH-QUICK-REFERENCE.md +0 -375
  70. package/PARALLEL_EXECUTION_FIX.md +0 -146
  71. package/PUBLISH_IMPROVEMENTS_IMPLEMENTED.md +0 -294
  72. package/RECOVERY-FIXES.md +0 -72
  73. package/SUBMODULE-LOCK-FIX.md +0 -132
  74. package/VERSION-AUDIT-FIX.md +0 -333
  75. package/WORKFLOW-PRECHECK-IMPLEMENTATION.md +0 -239
  76. package/WORKFLOW-SKIP-SUMMARY.md +0 -121
  77. package/dist/util/safety.js +0 -166
  78. package/dist/util/safety.js.map +0 -1
  79. package/dist/util/stdin.js +0 -133
  80. package/dist/util/stdin.js.map +0 -1
  81. package/dist/util/storage.js +0 -187
  82. package/dist/util/storage.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"branchState.js","sources":["../../src/utils/branchState.ts"],"sourcesContent":["import { run } from '@eldrforge/git-tools';\nimport { getLogger } from '../logging';\n\nexport interface BranchStatus {\n name: string;\n isOnExpectedBranch: boolean;\n expectedBranch?: string;\n ahead: number;\n behind: number;\n hasUnpushedCommits: boolean;\n needsSync: boolean;\n remoteExists: boolean;\n hasMergeConflicts?: boolean;\n conflictsWith?: string;\n hasOpenPR?: boolean;\n prUrl?: string;\n prNumber?: number;\n}\n\nexport interface VersionStatus {\n version: string;\n isValid: boolean;\n issue?: string;\n fix?: string;\n}\n\nexport interface TargetBranchSyncStatus {\n targetBranch: string;\n localExists: boolean;\n remoteExists: boolean;\n localSha?: string;\n remoteSha?: string;\n exactMatch: boolean;\n canFastForward: boolean;\n needsReset: boolean;\n error?: string;\n}\n\nexport interface PackageBranchAudit {\n packageName: string;\n path: string;\n status: BranchStatus;\n versionStatus?: VersionStatus;\n targetBranchSync?: TargetBranchSyncStatus;\n issues: string[];\n fixes: string[];\n}\n\nexport interface BranchAuditResult {\n totalPackages: number;\n goodPackages: number;\n issuesFound: number;\n versionIssues: number;\n targetBranchSyncIssues: number;\n audits: PackageBranchAudit[];\n}\n\n/**\n * Check the branch status for a package\n */\nexport async function checkBranchStatus(\n packagePath: string,\n expectedBranch?: string,\n targetBranch: string = 'main',\n checkPR: boolean = false\n): Promise<BranchStatus> {\n const logger = getLogger();\n const originalCwd = process.cwd();\n\n try {\n process.chdir(packagePath);\n\n // Get current branch\n const { stdout: currentBranch } = await run('git rev-parse --abbrev-ref HEAD');\n const branch = currentBranch.trim();\n\n // Check if remote exists\n let remoteExists = false;\n try {\n await run(`git ls-remote --exit-code --heads origin ${branch}`);\n remoteExists = true;\n } catch {\n remoteExists = false;\n }\n\n // Get ahead/behind counts if remote exists\n let ahead = 0;\n let behind = 0;\n\n if (remoteExists) {\n try {\n const { stdout: revList } = await run(`git rev-list --left-right --count origin/${branch}...HEAD`);\n const [behindStr, aheadStr] = revList.trim().split('\\t');\n behind = parseInt(behindStr, 10) || 0;\n ahead = parseInt(aheadStr, 10) || 0;\n } catch (error) {\n logger.verbose(`Could not get ahead/behind counts for ${packagePath}: ${error}`);\n }\n }\n\n // Check for merge conflicts with target branch\n let hasMergeConflicts = false;\n let conflictsWith: string | undefined;\n\n if (branch !== targetBranch) {\n try {\n // Fetch latest to ensure we're checking against current target\n logger.verbose(` Fetching latest from origin for ${packagePath}...`);\n await run('git fetch origin --quiet');\n\n logger.verbose(` Checking for merge conflicts with ${targetBranch}...`);\n // Use git merge-tree to test for conflicts without actually merging\n const { stdout: mergeTree } = await run(`git merge-tree $(git merge-base ${branch} origin/${targetBranch}) ${branch} origin/${targetBranch}`);\n\n // If merge-tree output contains conflict markers, there are conflicts\n if (mergeTree.includes('<<<<<<<') || mergeTree.includes('=======') || mergeTree.includes('>>>>>>>')) {\n hasMergeConflicts = true;\n conflictsWith = targetBranch;\n logger.verbose(` ⚠️ Merge conflicts detected with ${targetBranch}`);\n }\n } catch (error: any) {\n // If merge-tree fails, might be due to git version or other issues\n logger.verbose(`Could not check merge conflicts for ${packagePath}: ${error.message}`);\n }\n }\n\n // Check for existing PR if requested\n let hasOpenPR = false;\n let prUrl: string | undefined;\n let prNumber: number | undefined;\n\n if (checkPR) {\n try {\n logger.verbose(` Checking GitHub for existing PRs...`);\n const { findOpenPullRequestByHeadRef } = await import('@eldrforge/github-tools');\n const pr = await findOpenPullRequestByHeadRef(branch);\n if (pr) {\n hasOpenPR = true;\n prUrl = pr.html_url;\n prNumber = pr.number;\n logger.verbose(` Found existing PR #${prNumber}: ${prUrl}`);\n }\n } catch (error: any) {\n logger.verbose(`Could not check for PR for ${packagePath}: ${error.message}`);\n }\n }\n\n const isOnExpectedBranch = !expectedBranch || branch === expectedBranch;\n const hasUnpushedCommits = ahead > 0;\n const needsSync = behind > 0;\n\n return {\n name: branch,\n isOnExpectedBranch,\n expectedBranch,\n ahead,\n behind,\n hasUnpushedCommits,\n needsSync,\n remoteExists,\n hasMergeConflicts,\n conflictsWith,\n hasOpenPR,\n prUrl,\n prNumber,\n };\n } finally {\n process.chdir(originalCwd);\n }\n}\n\n/**\n * Check if target branch (e.g., main) is exactly in sync with remote\n */\nexport async function checkTargetBranchSync(\n packagePath: string,\n targetBranch: string = 'main'\n): Promise<TargetBranchSyncStatus> {\n const logger = getLogger();\n const originalCwd = process.cwd();\n\n try {\n process.chdir(packagePath);\n\n // Fetch latest from origin to ensure we have current info\n try {\n await run('git fetch origin --quiet');\n } catch (error: any) {\n logger.verbose(`Could not fetch from origin in ${packagePath}: ${error.message}`);\n }\n\n // Check if local target branch exists\n let localExists = false;\n let localSha: string | undefined;\n try {\n const { stdout } = await run(`git rev-parse --verify ${targetBranch}`);\n localSha = stdout.trim();\n localExists = true;\n } catch {\n localExists = false;\n }\n\n // Check if remote target branch exists\n let remoteExists = false;\n let remoteSha: string | undefined;\n try {\n const { stdout } = await run(`git ls-remote origin ${targetBranch}`);\n if (stdout.trim()) {\n remoteSha = stdout.split(/\\s+/)[0];\n remoteExists = true;\n }\n } catch {\n remoteExists = false;\n }\n\n // Determine sync status\n const exactMatch = localExists && remoteExists && localSha === remoteSha;\n let canFastForward = false;\n let needsReset = false;\n\n if (localExists && remoteExists && !exactMatch) {\n // Check if local is ancestor of remote (can fast-forward)\n try {\n await run(`git merge-base --is-ancestor ${targetBranch} origin/${targetBranch}`);\n canFastForward = true;\n needsReset = false;\n } catch {\n // Local is not ancestor of remote, need reset\n canFastForward = false;\n needsReset = true;\n }\n }\n\n return {\n targetBranch,\n localExists,\n remoteExists,\n localSha,\n remoteSha,\n exactMatch,\n canFastForward,\n needsReset,\n };\n } catch (error: any) {\n return {\n targetBranch,\n localExists: false,\n remoteExists: false,\n exactMatch: false,\n canFastForward: false,\n needsReset: false,\n error: error.message,\n };\n } finally {\n process.chdir(originalCwd);\n }\n}\n\n/**\n * Audit branch state across multiple packages\n */\nexport async function auditBranchState(\n packages: Array<{ name: string; path: string }>,\n expectedBranch?: string,\n options: {\n targetBranch?: string;\n checkPR?: boolean;\n checkConflicts?: boolean;\n checkVersions?: boolean;\n } = {}\n): Promise<BranchAuditResult> {\n const logger = getLogger();\n const audits: PackageBranchAudit[] = [];\n const targetBranch = options.targetBranch || 'main';\n const checkPR = options.checkPR !== false; // Default true\n const checkConflicts = options.checkConflicts !== false; // Default true\n const checkVersions = options.checkVersions !== false; // Default true\n\n logger.info(`BRANCH_STATE_AUDIT: Auditing branch state for packages | Package Count: ${packages.length} | Purpose: Verify synchronization`);\n\n // If no expected branch specified, find the most common branch\n let actualExpectedBranch = expectedBranch;\n if (!expectedBranch) {\n const branchCounts = new Map<string, number>();\n\n logger.info('📋 Phase 1/2: Detecting most common branch across packages...');\n\n // First pass: collect all branch names\n for (let i = 0; i < packages.length; i++) {\n const pkg = packages[i];\n logger.info(` [${i + 1}/${packages.length}] Checking branch: ${pkg.name}`);\n const status = await checkBranchStatus(pkg.path);\n branchCounts.set(status.name, (branchCounts.get(status.name) || 0) + 1);\n }\n\n // Find most common branch\n let maxCount = 0;\n for (const [branch, count] of branchCounts.entries()) {\n if (count > maxCount) {\n maxCount = count;\n actualExpectedBranch = branch;\n }\n }\n\n logger.info(`✓ Most common branch: ${actualExpectedBranch} (${maxCount}/${packages.length} packages)`);\n }\n\n logger.info(`\\n📋 Phase 2/2: Auditing package state (checking git status, conflicts, PRs, versions)...`);\n for (let i = 0; i < packages.length; i++) {\n const pkg = packages[i];\n logger.info(` [${i + 1}/${packages.length}] Auditing: ${pkg.name}`);\n\n const status = await checkBranchStatus(\n pkg.path,\n actualExpectedBranch,\n targetBranch,\n checkPR\n );\n const issues: string[] = [];\n const fixes: string[] = [];\n let versionStatus: VersionStatus | undefined;\n\n // Check for issues\n if (!status.isOnExpectedBranch && actualExpectedBranch) {\n issues.push(`On branch '${status.name}' (most packages are on '${actualExpectedBranch}')`);\n fixes.push(`cd ${pkg.path} && git checkout ${actualExpectedBranch}`);\n }\n\n if (checkConflicts && status.hasMergeConflicts && status.conflictsWith) {\n issues.push(`⚠️ MERGE CONFLICTS with '${status.conflictsWith}'`);\n fixes.push(`cd ${pkg.path} && git merge origin/${status.conflictsWith} # Resolve conflicts manually`);\n }\n\n if (checkPR && status.hasOpenPR) {\n issues.push(`Has existing PR #${status.prNumber}: ${status.prUrl}`);\n fixes.push(`# Review PR: ${status.prUrl}`);\n }\n\n if (status.hasUnpushedCommits) {\n issues.push(`Ahead of remote by ${status.ahead} commit(s)`);\n fixes.push(`cd ${pkg.path} && git push origin ${status.name}`);\n }\n\n if (status.needsSync) {\n issues.push(`Behind remote by ${status.behind} commit(s)`);\n fixes.push(`cd ${pkg.path} && git pull origin ${status.name}`);\n }\n\n if (!status.remoteExists) {\n issues.push(`Remote branch does not exist`);\n fixes.push(`cd ${pkg.path} && git push -u origin ${status.name}`);\n }\n\n // Check version consistency if enabled\n if (checkVersions) {\n try {\n const { validateVersionForBranch } = await import('../util/general');\n const fs = await import('fs/promises');\n const pathModule = await import('path');\n\n const packageJsonPath = pathModule.join(pkg.path, 'package.json');\n const packageJsonContent = await fs.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent);\n const version = packageJson.version;\n\n const validation = validateVersionForBranch(version, status.name);\n\n versionStatus = {\n version,\n isValid: validation.valid,\n issue: validation.issue,\n fix: validation.fix\n };\n\n if (!validation.valid) {\n issues.push(`Version: ${version} - ${validation.issue}`);\n fixes.push(`cd ${pkg.path} && kodrdriv development # ${validation.fix}`);\n }\n } catch (error: any) {\n logger.verbose(`Could not check version for ${pkg.name}: ${error.message}`);\n }\n }\n\n // Check target branch sync (e.g., is local main exactly in sync with remote main?)\n const targetBranchSync = await checkTargetBranchSync(pkg.path, targetBranch);\n\n if (targetBranchSync.localExists && targetBranchSync.remoteExists && !targetBranchSync.exactMatch) {\n if (targetBranchSync.needsReset) {\n issues.push(`Target branch '${targetBranch}' is NOT in sync with remote (local has diverged)`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git reset --hard origin/${targetBranch} && git checkout ${status.name}`);\n } else if (targetBranchSync.canFastForward) {\n issues.push(`Target branch '${targetBranch}' is behind remote (can fast-forward)`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git pull origin ${targetBranch} && git checkout ${status.name}`);\n } else {\n issues.push(`Target branch '${targetBranch}' is NOT in exact sync with remote`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git pull origin ${targetBranch} && git checkout ${status.name}`);\n }\n } else if (!targetBranchSync.localExists && targetBranchSync.remoteExists) {\n // Local target branch doesn't exist (this is OK - will be created during publish)\n logger.verbose(`Local ${targetBranch} doesn't exist in ${pkg.name} - will be created when needed`);\n } else if (targetBranchSync.error) {\n logger.verbose(`Could not check target branch sync for ${pkg.name}: ${targetBranchSync.error}`);\n }\n\n audits.push({\n packageName: pkg.name,\n path: pkg.path,\n status,\n versionStatus,\n targetBranchSync,\n issues,\n fixes,\n });\n }\n\n const issuesFound = audits.filter(a => a.issues.length > 0).length;\n const versionIssues = audits.filter(a => a.versionStatus && !a.versionStatus.isValid).length;\n const targetBranchSyncIssues = audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists).length;\n const goodPackages = audits.filter(a => a.issues.length === 0).length;\n\n logger.info(`✓ Audit complete: ${goodPackages}/${packages.length} packages have no issues`);\n if (issuesFound > 0) {\n logger.info(` Issues found in ${issuesFound} package(s)`);\n }\n\n return {\n totalPackages: packages.length,\n goodPackages,\n issuesFound,\n versionIssues,\n targetBranchSyncIssues,\n audits,\n };\n}\n\n/**\n * Format audit results for display with detailed fix instructions\n */\nexport function formatAuditResults(result: BranchAuditResult): string {\n const lines: string[] = [];\n\n // Determine the common branch if any\n const branchCounts = new Map<string, number>();\n for (const audit of result.audits) {\n const branch = audit.status.name;\n branchCounts.set(branch, (branchCounts.get(branch) || 0) + 1);\n }\n\n let commonBranch: string | undefined;\n let maxCount = 0;\n for (const [branch, count] of branchCounts.entries()) {\n if (count > maxCount) {\n maxCount = count;\n commonBranch = branch;\n }\n }\n\n lines.push('╔══════════════════════════════════════════════════════════════╗');\n lines.push(`║ Branch State Audit (${result.totalPackages} packages)`.padEnd(63) + '║');\n if (commonBranch && maxCount === result.totalPackages) {\n lines.push(`║ All packages on: ${commonBranch}`.padEnd(63) + '║');\n } else if (commonBranch) {\n lines.push(`║ Most packages on: ${commonBranch} (${maxCount}/${result.totalPackages})`.padEnd(63) + '║');\n }\n lines.push('╠══════════════════════════════════════════════════════════════╣');\n lines.push('');\n\n if (result.goodPackages > 0) {\n lines.push(`✅ Good State (${result.goodPackages} package${result.goodPackages === 1 ? '' : 's'}):`);\n\n const goodAudits = result.audits.filter(a => a.issues.length === 0);\n const displayCount = Math.min(goodAudits.length, 5);\n goodAudits.slice(0, displayCount).forEach(audit => {\n const versionInfo = audit.versionStatus ? ` (v${audit.versionStatus.version})` : '';\n lines.push(` ${audit.packageName}${versionInfo}`);\n });\n\n if (goodAudits.length > displayCount) {\n lines.push(` ... and ${goodAudits.length - displayCount} more`);\n }\n lines.push('');\n }\n\n // Show version issues prominently if any\n if (result.versionIssues > 0) {\n lines.push(`⚠️ Version Issues (${result.versionIssues} package${result.versionIssues === 1 ? '' : 's'}):`);\n\n const versionIssueAudits = result.audits.filter(a => a.versionStatus && !a.versionStatus.isValid);\n versionIssueAudits.forEach(audit => {\n lines.push(` ${audit.packageName}`);\n lines.push(` - Branch: ${audit.status.name}`);\n lines.push(` - Version: ${audit.versionStatus!.version}`);\n lines.push(` - Issue: ${audit.versionStatus!.issue}`);\n lines.push(` - Fix: ${audit.versionStatus!.fix}`);\n lines.push('');\n });\n }\n\n // Show target branch sync issues prominently if any\n if (result.targetBranchSyncIssues > 0) {\n lines.push(`🚨 Target Branch Sync Issues (${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'}):`);\n lines.push(` ⚠️ ${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'} with target branch NOT in sync with remote`);\n lines.push(` This will cause \"branch out of sync\" errors during parallel publish!`);\n lines.push('');\n\n const targetSyncIssueAudits = result.audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists);\n targetSyncIssueAudits.forEach(audit => {\n const sync = audit.targetBranchSync!;\n lines.push(` ${audit.packageName}`);\n lines.push(` - Target Branch: ${sync.targetBranch}`);\n lines.push(` - Local SHA: ${sync.localSha?.substring(0, 8)}...`);\n lines.push(` - Remote SHA: ${sync.remoteSha?.substring(0, 8)}...`);\n if (sync.needsReset) {\n lines.push(` - Action: RESET REQUIRED (local has diverged)`);\n } else if (sync.canFastForward) {\n lines.push(` - Action: Pull to fast-forward`);\n }\n lines.push('');\n });\n }\n\n if (result.issuesFound > 0) {\n // Count critical issues (merge conflicts, existing PRs, target branch sync)\n const conflictCount = result.audits.filter(a => a.status.hasMergeConflicts).length;\n const prCount = result.audits.filter(a => a.status.hasOpenPR).length;\n const branchInconsistentCount = result.audits.filter(a => !a.status.isOnExpectedBranch).length;\n const unpushedCount = result.audits.filter(a => a.status.hasUnpushedCommits).length;\n const behindCount = result.audits.filter(a => a.status.needsSync).length;\n const noRemoteCount = result.audits.filter(a => !a.status.remoteExists).length;\n\n if (conflictCount > 0 || prCount > 0 || result.targetBranchSyncIssues > 0) {\n lines.push(`🚨 CRITICAL ISSUES:`);\n if (result.targetBranchSyncIssues > 0) {\n lines.push(` 🔄 ${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'} with target branch sync issues`);\n }\n if (conflictCount > 0) {\n lines.push(` ⚠️ ${conflictCount} package${conflictCount === 1 ? '' : 's'} with merge conflicts`);\n }\n if (prCount > 0) {\n lines.push(` 📋 ${prCount} package${prCount === 1 ? '' : 's'} with existing PRs`);\n }\n lines.push('');\n }\n\n lines.push(`⚠️ Issues Summary:`);\n if (result.targetBranchSyncIssues > 0) lines.push(` • ${result.targetBranchSyncIssues} target branch sync issue${result.targetBranchSyncIssues === 1 ? '' : 's'}`);\n if (conflictCount > 0) lines.push(` • ${conflictCount} merge conflict${conflictCount === 1 ? '' : 's'}`);\n if (prCount > 0) lines.push(` • ${prCount} existing PR${prCount === 1 ? '' : 's'}`);\n if (branchInconsistentCount > 0) lines.push(` • ${branchInconsistentCount} branch inconsistenc${branchInconsistentCount === 1 ? 'y' : 'ies'}`);\n if (unpushedCount > 0) lines.push(` • ${unpushedCount} package${unpushedCount === 1 ? '' : 's'} with unpushed commits`);\n if (behindCount > 0) lines.push(` • ${behindCount} package${behindCount === 1 ? '' : 's'} behind remote`);\n if (noRemoteCount > 0) lines.push(` • ${noRemoteCount} package${noRemoteCount === 1 ? '' : 's'} with no remote branch`);\n lines.push('');\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('📋 DETAILED ISSUES AND FIXES:');\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n\n // Sort issues by severity: conflicts first, then PRs, then others\n const auditsWithIssues = result.audits.filter(a => a.issues.length > 0);\n const sortedAudits = auditsWithIssues.sort((a, b) => {\n const aScore = (a.status.hasMergeConflicts ? 1000 : 0) + (a.status.hasOpenPR ? 100 : 0);\n const bScore = (b.status.hasMergeConflicts ? 1000 : 0) + (b.status.hasOpenPR ? 100 : 0);\n return bScore - aScore;\n });\n\n sortedAudits.forEach((audit, index) => {\n // Highlight critical issues\n const hasCritical = audit.status.hasMergeConflicts || audit.status.hasOpenPR;\n const prefix = hasCritical ? '🚨 CRITICAL' : '⚠️ WARNING';\n\n lines.push(`${prefix} [${index + 1}/${sortedAudits.length}] ${audit.packageName}`);\n lines.push(`Location: ${audit.path}`);\n lines.push(`Branch: ${audit.status.name}`);\n\n if (audit.status.remoteExists) {\n const syncStatus = [];\n if (audit.status.ahead > 0) syncStatus.push(`ahead ${audit.status.ahead}`);\n if (audit.status.behind > 0) syncStatus.push(`behind ${audit.status.behind}`);\n if (syncStatus.length > 0) {\n lines.push(`Sync: ${syncStatus.join(', ')}`);\n }\n } else {\n lines.push(`Remote: Does not exist`);\n }\n\n lines.push('');\n lines.push('Issues:');\n audit.issues.forEach(issue => {\n const icon = issue.includes('MERGE CONFLICTS') ? '⚠️ ' : issue.includes('PR') ? '📋 ' : '❌ ';\n lines.push(` ${icon} ${issue}`);\n });\n\n lines.push('');\n lines.push('Fix Commands (execute in order):');\n audit.fixes.forEach((fix, fixIndex) => {\n lines.push(` ${fixIndex + 1}. ${fix}`);\n });\n\n // Add context-specific guidance\n if (audit.status.hasMergeConflicts) {\n lines.push('');\n lines.push(' ⚠️ Merge Conflict Resolution:');\n lines.push(' After running the merge command above, you will need to:');\n lines.push(' a) Manually edit conflicting files to resolve conflicts');\n lines.push(' b) Stage resolved files: git add <file>');\n lines.push(' c) Complete the merge: git commit');\n lines.push(' d) Push the resolved merge: git push origin ' + audit.status.name);\n lines.push(' e) Re-run audit to verify: kodrdriv tree publish --audit-branches');\n }\n\n if (audit.status.hasOpenPR) {\n lines.push('');\n lines.push(' 📋 Existing PR Handling:');\n lines.push(' You have options:');\n lines.push(' a) Continue with existing PR (kodrdriv publish will detect and use it)');\n lines.push(' b) Close the PR if no longer needed');\n lines.push(' c) Merge the PR if ready, then create new one');\n }\n\n lines.push('');\n lines.push('─────────────────────────────────────────────────────────────');\n lines.push('');\n });\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('📝 RECOMMENDED WORKFLOW:');\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n\n let stepNumber = 1;\n\n // Target branch sync is FIRST and most critical\n if (result.targetBranchSyncIssues > 0) {\n lines.push(`${stepNumber}️⃣ SYNC TARGET BRANCHES (CRITICAL - Do this FIRST):`);\n stepNumber++;\n const targetSyncIssueAudits = result.audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists);\n targetSyncIssueAudits.forEach(audit => {\n const sync = audit.targetBranchSync!;\n if (sync.needsReset) {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${sync.targetBranch} && git reset --hard origin/${sync.targetBranch} && git checkout ${audit.status.name}`);\n } else {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${sync.targetBranch} && git pull origin ${sync.targetBranch} && git checkout ${audit.status.name}`);\n }\n });\n lines.push('');\n }\n\n if (conflictCount > 0) {\n lines.push(`${stepNumber}️⃣ RESOLVE MERGE CONFLICTS FIRST (blocking):`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git merge origin/${audit.status.conflictsWith}`);\n });\n lines.push(' Then resolve conflicts, commit, and push.');\n lines.push('');\n }\n\n if (result.versionIssues > 0) {\n lines.push(`${stepNumber}️⃣ FIX VERSION ISSUES (recommended before publish):`);\n stepNumber++;\n sortedAudits.filter(a => a.versionStatus && !a.versionStatus.isValid).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && kodrdriv development`);\n });\n lines.push('');\n }\n\n if (prCount > 0) {\n lines.push(`${stepNumber}️⃣ HANDLE EXISTING PRS:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasOpenPR).forEach(audit => {\n lines.push(` • ${audit.packageName}: Review ${audit.status.prUrl}`);\n lines.push(` Option: Continue (publish will reuse PR) or close/merge it first`);\n });\n lines.push('');\n }\n\n if (branchInconsistentCount > 0) {\n lines.push(`${stepNumber}️⃣ ALIGN BRANCHES (if needed):`);\n stepNumber++;\n sortedAudits.filter(a => !a.status.isOnExpectedBranch).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${audit.status.expectedBranch}`);\n });\n lines.push('');\n }\n\n if (behindCount > 0) {\n lines.push(`${stepNumber}️⃣ SYNC WITH REMOTE:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.needsSync && !a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git pull origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n if (unpushedCount > 0) {\n lines.push(`${stepNumber}️⃣ PUSH LOCAL COMMITS:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasUnpushedCommits && !a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git push origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n if (noRemoteCount > 0) {\n lines.push(`${stepNumber}️⃣ CREATE REMOTE BRANCHES:`);\n stepNumber++;\n sortedAudits.filter(a => !a.status.remoteExists).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git push -u origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n lines.push('🔄 After fixing issues, re-run audit to verify:');\n lines.push(' kodrdriv tree publish --audit-branches');\n lines.push('');\n lines.push('✅ Once all clear, proceed with publish:');\n lines.push(' kodrdriv tree publish --parallel --model \"gpt-5-mini\"');\n }\n\n lines.push('╚══════════════════════════════════════════════════════════════╝');\n\n return lines.join('\\n');\n}\n\n/**\n * Auto-sync a package's branch with remote\n */\nexport async function autoSyncBranch(\n packagePath: string,\n options: {\n push?: boolean;\n pull?: boolean;\n checkout?: string;\n } = {}\n): Promise<{ success: boolean; actions: string[]; error?: string }> {\n const logger = getLogger();\n const originalCwd = process.cwd();\n const actions: string[] = [];\n\n try {\n process.chdir(packagePath);\n\n // Checkout if requested\n if (options.checkout) {\n logger.verbose(`Checking out ${options.checkout}...`);\n await run(`git checkout ${options.checkout}`);\n actions.push(`Checked out ${options.checkout}`);\n }\n\n // Pull if requested\n if (options.pull) {\n logger.verbose(`Pulling from remote...`);\n try {\n await run('git pull --ff-only');\n actions.push('Pulled from remote');\n } catch (error: any) {\n if (error.message.includes('not possible to fast-forward')) {\n logger.warn(`BRANCH_STATE_NO_FAST_FORWARD: Cannot fast-forward merge | Reason: Divergent history | Resolution: May need manual merge`);\n return { success: false, actions, error: 'Fast-forward not possible' };\n }\n throw error;\n }\n }\n\n // Push if requested\n if (options.push) {\n logger.verbose(`Pushing to remote...`);\n await run('git push');\n actions.push('Pushed to remote');\n }\n\n return { success: true, actions };\n } catch (error: any) {\n logger.error(`BRANCH_STATE_AUTO_SYNC_FAILED: Failed to auto-sync package | Path: ${packagePath} | Error: ${error.message}`);\n return { success: false, actions, error: error.message };\n } finally {\n process.chdir(originalCwd);\n }\n}\n\n"],"names":["checkBranchStatus","packagePath","expectedBranch","targetBranch","checkPR","logger","getLogger","originalCwd","process","cwd","chdir","stdout","currentBranch","run","branch","trim","remoteExists","ahead","behind","revList","behindStr","aheadStr","split","parseInt","error","verbose","hasMergeConflicts","conflictsWith","mergeTree","includes","message","hasOpenPR","prUrl","prNumber","findOpenPullRequestByHeadRef","pr","html_url","number","isOnExpectedBranch","hasUnpushedCommits","needsSync","name","checkTargetBranchSync","localExists","localSha","remoteSha","exactMatch","canFastForward","needsReset","auditBranchState","packages","options","audits","checkConflicts","checkVersions","info","length","actualExpectedBranch","branchCounts","Map","i","pkg","status","path","set","get","maxCount","count","entries","issues","fixes","versionStatus","push","validateVersionForBranch","fs","pathModule","packageJsonPath","join","packageJsonContent","readFile","packageJson","JSON","parse","version","validation","isValid","valid","issue","fix","targetBranchSync","packageName","issuesFound","filter","a","versionIssues","targetBranchSyncIssues","goodPackages","totalPackages","formatAuditResults","result","lines","audit","commonBranch","padEnd","goodAudits","displayCount","Math","min","slice","forEach","versionInfo","versionIssueAudits","targetSyncIssueAudits","sync","substring","conflictCount","prCount","branchInconsistentCount","unpushedCount","behindCount","noRemoteCount","auditsWithIssues","sortedAudits","sort","b","aScore","bScore","index","hasCritical","prefix","syncStatus","icon","fixIndex","stepNumber"],"mappings":"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"}
1
+ {"version":3,"file":"branchState.js","sources":["../../src/utils/branchState.ts"],"sourcesContent":["import { run } from '@eldrforge/git-tools';\nimport { getLogger } from '../logging';\nimport { getGitRepositoryRoot, isInGitRepository } from '../util/gitMutex';\n\nexport interface BranchStatus {\n name: string;\n isOnExpectedBranch: boolean;\n expectedBranch?: string;\n ahead: number;\n behind: number;\n hasUnpushedCommits: boolean;\n needsSync: boolean;\n remoteExists: boolean;\n hasMergeConflicts?: boolean;\n conflictsWith?: string;\n hasOpenPR?: boolean;\n prUrl?: string;\n prNumber?: number;\n}\n\nexport interface VersionStatus {\n version: string;\n isValid: boolean;\n issue?: string;\n fix?: string;\n}\n\nexport interface TargetBranchSyncStatus {\n targetBranch: string;\n localExists: boolean;\n remoteExists: boolean;\n localSha?: string;\n remoteSha?: string;\n exactMatch: boolean;\n canFastForward: boolean;\n needsReset: boolean;\n error?: string;\n}\n\nexport interface PackageBranchAudit {\n packageName: string;\n path: string;\n status: BranchStatus;\n versionStatus?: VersionStatus;\n targetBranchSync?: TargetBranchSyncStatus;\n issues: string[];\n fixes: string[];\n}\n\nexport interface BranchAuditResult {\n totalPackages: number;\n goodPackages: number;\n issuesFound: number;\n versionIssues: number;\n targetBranchSyncIssues: number;\n audits: PackageBranchAudit[];\n}\n\n/**\n * Check the branch status for a package\n */\nexport async function checkBranchStatus(\n packagePath: string,\n expectedBranch?: string,\n targetBranch: string = 'main',\n checkPR: boolean = false,\n options: { skipFetch?: boolean } = {}\n): Promise<BranchStatus> {\n const logger = getLogger();\n\n // Check if path is in a git repository\n if (!isInGitRepository(packagePath)) {\n logger.debug(`Path is not in a git repository: ${packagePath}. Skipping branch status check.`);\n return {\n name: 'non-git',\n isOnExpectedBranch: true,\n ahead: 0,\n behind: 0,\n hasUnpushedCommits: false,\n needsSync: false,\n remoteExists: false,\n };\n }\n\n try {\n // Get current branch\n const { stdout: currentBranch } = await run('git rev-parse --abbrev-ref HEAD', { cwd: packagePath, suppressErrorLogging: true });\n const branch = currentBranch.trim();\n\n // Check if remote exists\n let remoteExists = false;\n try {\n await run(`git ls-remote --exit-code --heads origin ${branch}`, { cwd: packagePath, suppressErrorLogging: true });\n remoteExists = true;\n } catch {\n remoteExists = false;\n }\n\n // Get ahead/behind counts if remote exists\n let ahead = 0;\n let behind = 0;\n\n if (remoteExists) {\n try {\n const { stdout: revList } = await run(`git rev-list --left-right --count origin/${branch}...HEAD`, { cwd: packagePath, suppressErrorLogging: true });\n const [behindStr, aheadStr] = revList.trim().split('\\t');\n behind = parseInt(behindStr, 10) || 0;\n ahead = parseInt(aheadStr, 10) || 0;\n } catch (error) {\n logger.verbose(`Could not get ahead/behind counts for ${packagePath}: ${error}`);\n }\n }\n\n // Check for merge conflicts with target branch\n let hasMergeConflicts = false;\n let conflictsWith: string | undefined;\n\n if (branch !== targetBranch) {\n try {\n // Fetch latest to ensure we're checking against current target\n if (!options.skipFetch) {\n logger.verbose(` Fetching latest from origin for ${packagePath}...`);\n await run('git fetch origin --quiet', { cwd: packagePath, suppressErrorLogging: true });\n }\n\n logger.verbose(` Checking for merge conflicts with ${targetBranch}...`);\n // Use git merge-tree to test for conflicts without actually merging\n const { stdout: mergeTree } = await run(`git merge-tree $(git merge-base ${branch} origin/${targetBranch}) ${branch} origin/${targetBranch}`, { cwd: packagePath, suppressErrorLogging: true });\n\n // If merge-tree output contains conflict markers, there are conflicts\n if (mergeTree.includes('<<<<<<<') || mergeTree.includes('=======') || mergeTree.includes('>>>>>>>')) {\n hasMergeConflicts = true;\n conflictsWith = targetBranch;\n logger.verbose(` ⚠️ Merge conflicts detected with ${targetBranch}`);\n }\n } catch (error: any) {\n // If merge-tree fails, might be due to git version or other issues\n logger.verbose(`Could not check merge conflicts for ${packagePath}: ${error.message}`);\n }\n }\n\n // Check for existing PR if requested\n let hasOpenPR = false;\n let prUrl: string | undefined;\n let prNumber: number | undefined;\n\n if (checkPR) {\n try {\n logger.verbose(` Checking GitHub for existing PRs...`);\n const { findOpenPullRequestByHeadRef } = await import('@eldrforge/github-tools');\n const pr = await (findOpenPullRequestByHeadRef as any)(branch, packagePath);\n if (pr) {\n hasOpenPR = true;\n prUrl = pr.html_url;\n prNumber = pr.number;\n logger.verbose(` Found existing PR #${prNumber}: ${prUrl}`);\n }\n } catch (error: any) {\n logger.verbose(`Could not check for PR for ${packagePath}: ${error.message}`);\n }\n }\n\n const isOnExpectedBranch = !expectedBranch || branch === expectedBranch;\n const hasUnpushedCommits = ahead > 0;\n const needsSync = behind > 0;\n\n return {\n name: branch,\n isOnExpectedBranch,\n expectedBranch,\n ahead,\n behind,\n hasUnpushedCommits,\n needsSync,\n remoteExists,\n hasMergeConflicts,\n conflictsWith,\n hasOpenPR,\n prUrl,\n prNumber,\n };\n } catch (error: any) {\n logger.error(`Error checking branch status for ${packagePath}: ${error.message}`);\n return {\n name: 'unknown',\n isOnExpectedBranch: false,\n ahead: 0,\n behind: 0,\n hasUnpushedCommits: false,\n needsSync: false,\n remoteExists: false,\n };\n }\n}\n\n/**\n * Check if target branch (e.g., main) is exactly in sync with remote\n */\nexport async function checkTargetBranchSync(\n packagePath: string,\n targetBranch: string = 'main',\n options: { skipFetch?: boolean } = {}\n): Promise<TargetBranchSyncStatus> {\n const logger = getLogger();\n\n // Check if path is in a git repository\n if (!isInGitRepository(packagePath)) {\n return {\n targetBranch,\n localExists: false,\n remoteExists: false,\n exactMatch: true, // Treat as match if not in git\n canFastForward: false,\n needsReset: false,\n };\n }\n\n try {\n // Fetch latest from origin to ensure we have current info\n if (!options.skipFetch) {\n try {\n await run('git fetch origin --quiet', { cwd: packagePath, suppressErrorLogging: true });\n } catch (error: any) {\n logger.verbose(`Could not fetch from origin in ${packagePath}: ${error.message}`);\n }\n }\n\n // Check if local target branch exists\n let localExists = false;\n let localSha: string | undefined;\n try {\n const { stdout } = await run(`git rev-parse --verify ${targetBranch}`, { cwd: packagePath, suppressErrorLogging: true });\n localSha = stdout.trim();\n localExists = true;\n } catch {\n localExists = false;\n }\n\n // Check if remote target branch exists\n let remoteExists = false;\n let remoteSha: string | undefined;\n try {\n const { stdout } = await run(`git ls-remote origin ${targetBranch}`, { cwd: packagePath, suppressErrorLogging: true });\n if (stdout.trim()) {\n remoteSha = stdout.split(/\\s+/)[0];\n remoteExists = true;\n }\n } catch {\n remoteExists = false;\n }\n\n // Determine sync status\n const exactMatch = localExists && remoteExists && localSha === remoteSha;\n let canFastForward = false;\n let needsReset = false;\n\n if (localExists && remoteExists && !exactMatch) {\n // Check if local is ancestor of remote (can fast-forward)\n try {\n await run(`git merge-base --is-ancestor ${targetBranch} origin/${targetBranch}`, { cwd: packagePath, suppressErrorLogging: true });\n canFastForward = true;\n needsReset = false;\n } catch {\n // Local is not ancestor of remote, need reset\n canFastForward = false;\n needsReset = true;\n }\n }\n\n return {\n targetBranch,\n localExists,\n remoteExists,\n localSha,\n remoteSha,\n exactMatch,\n canFastForward,\n needsReset,\n };\n } catch (error: any) {\n return {\n targetBranch,\n localExists: false,\n remoteExists: false,\n exactMatch: false,\n canFastForward: false,\n needsReset: false,\n error: error.message,\n };\n }\n}\n\n/**\n * Audit branch state across multiple packages\n */\nexport async function auditBranchState(\n packages: Array<{ name: string; path: string }>,\n expectedBranch?: string,\n options: {\n targetBranch?: string;\n checkPR?: boolean;\n checkConflicts?: boolean;\n checkVersions?: boolean;\n concurrency?: number;\n } = {}\n): Promise<BranchAuditResult> {\n const logger = getLogger();\n const targetBranch = options.targetBranch || 'main';\n const checkPR = options.checkPR !== false; // Default true\n const checkConflicts = options.checkConflicts !== false; // Default true\n const checkVersions = options.checkVersions !== false; // Default true\n const concurrency = options.concurrency || 5;\n\n logger.info(`BRANCH_STATE_AUDIT: Auditing branch state for packages | Package Count: ${packages.length} | Concurrency: ${concurrency} | Purpose: Verify synchronization`);\n\n // Helper for concurrency-limited parallel map\n const parallelMap = async <T, R>(items: T[], fn: (item: T, index: number) => Promise<R>): Promise<R[]> => {\n const results: R[] = new Array(items.length);\n const queue = items.map((item, index) => ({ item, index }));\n let nextIndex = 0;\n\n const workers = Array(Math.min(concurrency, items.length)).fill(null).map(async () => {\n while (nextIndex < queue.length) {\n const task = queue[nextIndex++];\n results[task.index] = await fn(task.item, task.index);\n }\n });\n\n await Promise.all(workers);\n return results;\n };\n\n // If no expected branch specified, find the most common branch\n let actualExpectedBranch = expectedBranch;\n if (!expectedBranch) {\n logger.info('📋 Phase 1/3: Detecting most common branch across packages (optimized)...');\n\n const branchNames = await parallelMap(packages, async (pkg) => {\n if (!isInGitRepository(pkg.path)) {\n return 'non-git';\n }\n try {\n const { stdout } = await run('git rev-parse --abbrev-ref HEAD', { cwd: pkg.path, suppressErrorLogging: true });\n return stdout.trim();\n } catch {\n return 'unknown';\n }\n });\n\n const branchCounts = new Map<string, number>();\n for (const name of branchNames) {\n branchCounts.set(name, (branchCounts.get(name) || 0) + 1);\n }\n\n // Find most common branch\n let maxCount = 0;\n for (const [branch, count] of branchCounts.entries()) {\n if (count > maxCount && branch !== 'unknown' && branch !== 'non-git') {\n maxCount = count;\n actualExpectedBranch = branch;\n }\n }\n\n if (!actualExpectedBranch) actualExpectedBranch = 'main';\n logger.info(`✓ Most common branch: ${actualExpectedBranch} (${maxCount}/${packages.length} packages)`);\n }\n\n // Phase 2: Identify unique repos and fetch once per repo\n logger.info(`\\n📋 Phase 2/3: Fetching latest from remotes (one fetch per repository)...`);\n const repoRoots = new Set<string>();\n for (const pkg of packages) {\n const root = getGitRepositoryRoot(pkg.path);\n if (root) repoRoots.add(root);\n }\n\n const repoList = Array.from(repoRoots);\n await parallelMap(repoList, async (repo, i) => {\n try {\n logger.verbose(` [${i + 1}/${repoList.length}] Fetching in: ${repo}`);\n await run('git fetch origin --quiet', { cwd: repo, suppressErrorLogging: true });\n } catch (error: any) {\n logger.debug(`Could not fetch in ${repo}: ${error.message}`);\n }\n });\n logger.info(`✓ Fetched latest information for ${repoList.length} unique repositories`);\n\n // Phase 3: Full audit in parallel\n logger.info(`\\n📋 Phase 3/3: Auditing package state (git status, conflicts, PRs, versions)...`);\n let completedCount = 0;\n const audits = await parallelMap(packages, async (pkg) => {\n // Check target branch sync (e.g., is local main exactly in sync with remote main?)\n const targetBranchSync = await checkTargetBranchSync(pkg.path, targetBranch, { skipFetch: true });\n\n const status = await checkBranchStatus(\n pkg.path,\n actualExpectedBranch,\n targetBranch,\n checkPR,\n { skipFetch: true }\n );\n\n const issues: string[] = [];\n const fixes: string[] = [];\n let versionStatus: VersionStatus | undefined;\n\n // Skip issues for non-git repositories\n if (status.name === 'non-git') {\n completedCount++;\n if (completedCount % 5 === 0 || completedCount === packages.length) {\n logger.info(` Progress: ${completedCount}/${packages.length} packages audited`);\n }\n return {\n packageName: pkg.name,\n path: pkg.path,\n status,\n versionStatus,\n targetBranchSync,\n issues,\n fixes,\n };\n }\n\n // Check for issues\n if (!status.isOnExpectedBranch && actualExpectedBranch) {\n issues.push(`On branch '${status.name}' (most packages are on '${actualExpectedBranch}')`);\n fixes.push(`cd ${pkg.path} && git checkout ${actualExpectedBranch}`);\n }\n\n if (checkConflicts && status.hasMergeConflicts && status.conflictsWith) {\n issues.push(`⚠️ MERGE CONFLICTS with '${status.conflictsWith}'`);\n fixes.push(`cd ${pkg.path} && git merge origin/${status.conflictsWith} # Resolve conflicts manually`);\n }\n\n if (checkPR && status.hasOpenPR) {\n issues.push(`Has existing PR #${status.prNumber}: ${status.prUrl}`);\n fixes.push(`# Review PR: ${status.prUrl}`);\n }\n\n if (status.hasUnpushedCommits) {\n issues.push(`Ahead of remote by ${status.ahead} commit(s)`);\n fixes.push(`cd ${pkg.path} && git push origin ${status.name}`);\n }\n\n if (status.needsSync) {\n issues.push(`Behind remote by ${status.behind} commit(s)`);\n fixes.push(`cd ${pkg.path} && git pull origin ${status.name}`);\n }\n\n if (!status.remoteExists) {\n issues.push(`Remote branch does not exist`);\n fixes.push(`cd ${pkg.path} && git push -u origin ${status.name}`);\n }\n\n // Check version consistency if enabled\n if (checkVersions) {\n try {\n const { validateVersionForBranch } = await import('../util/general');\n const fs = await import('fs/promises');\n const pathModule = await import('path');\n\n const packageJsonPath = pathModule.join(pkg.path, 'package.json');\n const packageJsonContent = await fs.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent);\n const version = packageJson.version;\n\n const validation = validateVersionForBranch(version, status.name);\n\n versionStatus = {\n version,\n isValid: validation.valid,\n issue: validation.issue,\n fix: validation.fix\n };\n\n if (!validation.valid) {\n issues.push(`Version: ${version} - ${validation.issue}`);\n fixes.push(`cd ${pkg.path} && kodrdriv development # ${validation.fix}`);\n }\n } catch (error: any) {\n logger.verbose(`Could not check version for ${pkg.name}: ${error.message}`);\n }\n }\n\n // Check target branch sync (e.g., is local main exactly in sync with remote main?)\n if (targetBranchSync.localExists && targetBranchSync.remoteExists && !targetBranchSync.exactMatch) {\n if (targetBranchSync.needsReset) {\n issues.push(`Target branch '${targetBranch}' is NOT in sync with remote (local has diverged)`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git reset --hard origin/${targetBranch} && git checkout ${status.name}`);\n } else if (targetBranchSync.canFastForward) {\n issues.push(`Target branch '${targetBranch}' is behind remote (can fast-forward)`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git pull origin ${targetBranch} && git checkout ${status.name}`);\n } else {\n issues.push(`Target branch '${targetBranch}' is NOT in exact sync with remote`);\n fixes.push(`cd ${pkg.path} && git checkout ${targetBranch} && git pull origin ${targetBranch} && git checkout ${status.name}`);\n }\n } else if (!targetBranchSync.localExists && targetBranchSync.remoteExists) {\n // Local target branch doesn't exist but exists on remote\n issues.push(`Target branch '${targetBranch}' does not exist locally (exists on remote)`);\n fixes.push(`cd ${pkg.path} && git branch ${targetBranch} origin/${targetBranch}`);\n } else if (targetBranchSync.error) {\n logger.verbose(`Could not check target branch sync for ${pkg.name}: ${targetBranchSync.error}`);\n }\n\n completedCount++;\n if (completedCount % 5 === 0 || completedCount === packages.length) {\n logger.info(` Progress: ${completedCount}/${packages.length} packages audited`);\n }\n\n return {\n packageName: pkg.name,\n path: pkg.path,\n status,\n versionStatus,\n targetBranchSync,\n issues,\n fixes,\n };\n });\n\n const issuesFound = audits.filter(a => a.issues.length > 0).length;\n const versionIssues = audits.filter(a => a.versionStatus && !a.versionStatus.isValid).length;\n const targetBranchSyncIssues = audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists).length;\n const goodPackages = audits.filter(a => a.issues.length === 0).length;\n\n logger.info(`✓ Audit complete: ${goodPackages}/${packages.length} packages have no issues`);\n if (issuesFound > 0) {\n logger.info(` Issues found in ${issuesFound} package(s)`);\n }\n\n return {\n totalPackages: packages.length,\n goodPackages,\n issuesFound,\n versionIssues,\n targetBranchSyncIssues,\n audits,\n };\n}\n\n/**\n * Format audit results for display with detailed fix instructions\n */\nexport function formatAuditResults(result: BranchAuditResult): string {\n const lines: string[] = [];\n\n // Determine the common branch if any\n const branchCounts = new Map<string, number>();\n for (const audit of result.audits) {\n const branch = audit.status.name;\n branchCounts.set(branch, (branchCounts.get(branch) || 0) + 1);\n }\n\n let commonBranch: string | undefined;\n let maxCount = 0;\n for (const [branch, count] of branchCounts.entries()) {\n if (count > maxCount) {\n maxCount = count;\n commonBranch = branch;\n }\n }\n\n lines.push('╔══════════════════════════════════════════════════════════════╗');\n lines.push(`║ Branch State Audit (${result.totalPackages} packages)`.padEnd(63) + '║');\n if (commonBranch && maxCount === result.totalPackages) {\n lines.push(`║ All packages on: ${commonBranch}`.padEnd(63) + '║');\n } else if (commonBranch) {\n lines.push(`║ Most packages on: ${commonBranch} (${maxCount}/${result.totalPackages})`.padEnd(63) + '║');\n }\n lines.push('╠══════════════════════════════════════════════════════════════╣');\n lines.push('');\n\n if (result.goodPackages > 0) {\n lines.push(`✅ Good State (${result.goodPackages} package${result.goodPackages === 1 ? '' : 's'}):`);\n\n const goodAudits = result.audits.filter(a => a.issues.length === 0);\n const displayCount = Math.min(goodAudits.length, 5);\n goodAudits.slice(0, displayCount).forEach(audit => {\n const versionInfo = audit.versionStatus ? ` (v${audit.versionStatus.version})` : '';\n lines.push(` ${audit.packageName}${versionInfo}`);\n });\n\n if (goodAudits.length > displayCount) {\n lines.push(` ... and ${goodAudits.length - displayCount} more`);\n }\n lines.push('');\n }\n\n // Show version issues prominently if any\n if (result.versionIssues > 0) {\n lines.push(`⚠️ Version Issues (${result.versionIssues} package${result.versionIssues === 1 ? '' : 's'}):`);\n\n const versionIssueAudits = result.audits.filter(a => a.versionStatus && !a.versionStatus.isValid);\n versionIssueAudits.forEach(audit => {\n lines.push(` ${audit.packageName}`);\n lines.push(` - Branch: ${audit.status.name}`);\n lines.push(` - Version: ${audit.versionStatus!.version}`);\n lines.push(` - Issue: ${audit.versionStatus!.issue}`);\n lines.push(` - Fix: ${audit.versionStatus!.fix}`);\n lines.push('');\n });\n }\n\n // Show target branch sync issues prominently if any\n if (result.targetBranchSyncIssues > 0) {\n lines.push(`🚨 Target Branch Sync Issues (${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'}):`);\n lines.push(` ⚠️ ${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'} with target branch NOT in sync with remote`);\n lines.push(` This will cause \"branch out of sync\" errors during parallel publish!`);\n lines.push('');\n\n const targetSyncIssueAudits = result.audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists);\n targetSyncIssueAudits.forEach(audit => {\n const sync = audit.targetBranchSync!;\n lines.push(` ${audit.packageName}`);\n lines.push(` - Target Branch: ${sync.targetBranch}`);\n lines.push(` - Local SHA: ${sync.localSha?.substring(0, 8)}...`);\n lines.push(` - Remote SHA: ${sync.remoteSha?.substring(0, 8)}...`);\n if (sync.needsReset) {\n lines.push(` - Action: RESET REQUIRED (local has diverged)`);\n } else if (sync.canFastForward) {\n lines.push(` - Action: Pull to fast-forward`);\n }\n lines.push('');\n });\n }\n\n if (result.issuesFound > 0) {\n // Count critical issues (merge conflicts, existing PRs, target branch sync)\n const conflictCount = result.audits.filter(a => a.status.hasMergeConflicts).length;\n const prCount = result.audits.filter(a => a.status.hasOpenPR).length;\n const branchInconsistentCount = result.audits.filter(a => !a.status.isOnExpectedBranch).length;\n const unpushedCount = result.audits.filter(a => a.status.hasUnpushedCommits).length;\n const behindCount = result.audits.filter(a => a.status.needsSync).length;\n const noRemoteCount = result.audits.filter(a => !a.status.remoteExists).length;\n\n if (conflictCount > 0 || prCount > 0 || result.targetBranchSyncIssues > 0) {\n lines.push(`🚨 CRITICAL ISSUES:`);\n if (result.targetBranchSyncIssues > 0) {\n lines.push(` 🔄 ${result.targetBranchSyncIssues} package${result.targetBranchSyncIssues === 1 ? '' : 's'} with target branch sync issues`);\n }\n if (conflictCount > 0) {\n lines.push(` ⚠️ ${conflictCount} package${conflictCount === 1 ? '' : 's'} with merge conflicts`);\n }\n if (prCount > 0) {\n lines.push(` 📋 ${prCount} package${prCount === 1 ? '' : 's'} with existing PRs`);\n }\n lines.push('');\n }\n\n lines.push(`⚠️ Issues Summary:`);\n if (result.targetBranchSyncIssues > 0) lines.push(` • ${result.targetBranchSyncIssues} target branch sync issue${result.targetBranchSyncIssues === 1 ? '' : 's'}`);\n if (conflictCount > 0) lines.push(` • ${conflictCount} merge conflict${conflictCount === 1 ? '' : 's'}`);\n if (prCount > 0) lines.push(` • ${prCount} existing PR${prCount === 1 ? '' : 's'}`);\n if (branchInconsistentCount > 0) lines.push(` • ${branchInconsistentCount} branch inconsistenc${branchInconsistentCount === 1 ? 'y' : 'ies'}`);\n if (unpushedCount > 0) lines.push(` • ${unpushedCount} package${unpushedCount === 1 ? '' : 's'} with unpushed commits`);\n if (behindCount > 0) lines.push(` • ${behindCount} package${behindCount === 1 ? '' : 's'} behind remote`);\n if (noRemoteCount > 0) lines.push(` • ${noRemoteCount} package${noRemoteCount === 1 ? '' : 's'} with no remote branch`);\n lines.push('');\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('📋 DETAILED ISSUES AND FIXES:');\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n\n // Sort issues by severity: conflicts first, then PRs, then others\n const auditsWithIssues = result.audits.filter(a => a.issues.length > 0);\n const sortedAudits = auditsWithIssues.sort((a, b) => {\n const aScore = (a.status.hasMergeConflicts ? 1000 : 0) + (a.status.hasOpenPR ? 100 : 0);\n const bScore = (b.status.hasMergeConflicts ? 1000 : 0) + (b.status.hasOpenPR ? 100 : 0);\n return bScore - aScore;\n });\n\n sortedAudits.forEach((audit, index) => {\n // Highlight critical issues\n const hasCritical = audit.status.hasMergeConflicts || audit.status.hasOpenPR;\n const prefix = hasCritical ? '🚨 CRITICAL' : '⚠️ WARNING';\n\n lines.push(`${prefix} [${index + 1}/${sortedAudits.length}] ${audit.packageName}`);\n lines.push(`Location: ${audit.path}`);\n lines.push(`Branch: ${audit.status.name}`);\n\n if (audit.status.remoteExists) {\n const syncStatus = [];\n if (audit.status.ahead > 0) syncStatus.push(`ahead ${audit.status.ahead}`);\n if (audit.status.behind > 0) syncStatus.push(`behind ${audit.status.behind}`);\n if (syncStatus.length > 0) {\n lines.push(`Sync: ${syncStatus.join(', ')}`);\n }\n } else {\n lines.push(`Remote: Does not exist`);\n }\n\n lines.push('');\n lines.push('Issues:');\n audit.issues.forEach(issue => {\n const icon = issue.includes('MERGE CONFLICTS') ? '⚠️ ' : issue.includes('PR') ? '📋 ' : '❌ ';\n lines.push(` ${icon} ${issue}`);\n });\n\n lines.push('');\n lines.push('Fix Commands (execute in order):');\n audit.fixes.forEach((fix, fixIndex) => {\n lines.push(` ${fixIndex + 1}. ${fix}`);\n });\n\n // Add context-specific guidance\n if (audit.status.hasMergeConflicts) {\n lines.push('');\n lines.push(' ⚠️ Merge Conflict Resolution:');\n lines.push(' After running the merge command above, you will need to:');\n lines.push(' a) Manually edit conflicting files to resolve conflicts');\n lines.push(' b) Stage resolved files: git add <file>');\n lines.push(' c) Complete the merge: git commit');\n lines.push(' d) Push the resolved merge: git push origin ' + audit.status.name);\n lines.push(' e) Re-run audit to verify: kodrdriv tree publish --audit-branches');\n }\n\n if (audit.status.hasOpenPR) {\n lines.push('');\n lines.push(' 📋 Existing PR Handling:');\n lines.push(' You have options:');\n lines.push(' a) Continue with existing PR (kodrdriv publish will detect and use it)');\n lines.push(' b) Close the PR if no longer needed');\n lines.push(' c) Merge the PR if ready, then create new one');\n }\n\n lines.push('');\n lines.push('─────────────────────────────────────────────────────────────');\n lines.push('');\n });\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('📝 RECOMMENDED WORKFLOW:');\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n\n let stepNumber = 1;\n\n // Target branch sync is FIRST and most critical\n if (result.targetBranchSyncIssues > 0) {\n lines.push(`${stepNumber}️⃣ SYNC TARGET BRANCHES (CRITICAL - Do this FIRST):`);\n stepNumber++;\n const targetSyncIssueAudits = result.audits.filter(a => a.targetBranchSync && !a.targetBranchSync.exactMatch && a.targetBranchSync.localExists && a.targetBranchSync.remoteExists);\n targetSyncIssueAudits.forEach(audit => {\n const sync = audit.targetBranchSync!;\n if (sync.needsReset) {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${sync.targetBranch} && git reset --hard origin/${sync.targetBranch} && git checkout ${audit.status.name}`);\n } else {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${sync.targetBranch} && git pull origin ${sync.targetBranch} && git checkout ${audit.status.name}`);\n }\n });\n lines.push('');\n }\n\n if (conflictCount > 0) {\n lines.push(`${stepNumber}️⃣ RESOLVE MERGE CONFLICTS FIRST (blocking):`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git merge origin/${audit.status.conflictsWith}`);\n });\n lines.push(' Then resolve conflicts, commit, and push.');\n lines.push('');\n }\n\n if (result.versionIssues > 0) {\n lines.push(`${stepNumber}️⃣ FIX VERSION ISSUES (recommended before publish):`);\n stepNumber++;\n sortedAudits.filter(a => a.versionStatus && !a.versionStatus.isValid).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && kodrdriv development`);\n });\n lines.push('');\n }\n\n if (prCount > 0) {\n lines.push(`${stepNumber}️⃣ HANDLE EXISTING PRS:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasOpenPR).forEach(audit => {\n lines.push(` • ${audit.packageName}: Review ${audit.status.prUrl}`);\n lines.push(` Option: Continue (publish will reuse PR) or close/merge it first`);\n });\n lines.push('');\n }\n\n if (branchInconsistentCount > 0) {\n lines.push(`${stepNumber}️⃣ ALIGN BRANCHES (if needed):`);\n stepNumber++;\n sortedAudits.filter(a => !a.status.isOnExpectedBranch).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git checkout ${audit.status.expectedBranch}`);\n });\n lines.push('');\n }\n\n if (behindCount > 0) {\n lines.push(`${stepNumber}️⃣ SYNC WITH REMOTE:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.needsSync && !a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git pull origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n if (unpushedCount > 0) {\n lines.push(`${stepNumber}️⃣ PUSH LOCAL COMMITS:`);\n stepNumber++;\n sortedAudits.filter(a => a.status.hasUnpushedCommits && !a.status.hasMergeConflicts).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git push origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n if (noRemoteCount > 0) {\n lines.push(`${stepNumber}️⃣ CREATE REMOTE BRANCHES:`);\n stepNumber++;\n sortedAudits.filter(a => !a.status.remoteExists).forEach(audit => {\n lines.push(` • ${audit.packageName}: cd ${audit.path} && git push -u origin ${audit.status.name}`);\n });\n lines.push('');\n }\n\n lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n lines.push('');\n lines.push('🔄 After fixing issues, re-run audit to verify:');\n lines.push(' kodrdriv tree publish --audit-branches');\n lines.push('');\n lines.push('✅ Once all clear, proceed with publish:');\n lines.push(' kodrdriv tree publish --parallel --model \"gpt-5-mini\"');\n }\n\n lines.push('╚══════════════════════════════════════════════════════════════╝');\n\n return lines.join('\\n');\n}\n\n/**\n * Auto-sync a package's branch with remote\n */\nexport async function autoSyncBranch(\n packagePath: string,\n options: {\n push?: boolean;\n pull?: boolean;\n checkout?: string;\n } = {}\n): Promise<{ success: boolean; actions: string[]; error?: string }> {\n const logger = getLogger();\n const actions: string[] = [];\n\n try {\n // Checkout if requested\n if (options.checkout) {\n logger.verbose(`Checking out ${options.checkout}...`);\n await run(`git checkout ${options.checkout}`, { cwd: packagePath });\n actions.push(`Checked out ${options.checkout}`);\n }\n\n // Pull if requested\n if (options.pull) {\n logger.verbose(`Pulling from remote...`);\n try {\n await run('git pull --ff-only', { cwd: packagePath });\n actions.push('Pulled from remote');\n } catch (error: any) {\n if (error.message.includes('not possible to fast-forward')) {\n logger.warn(`BRANCH_STATE_NO_FAST_FORWARD: Cannot fast-forward merge | Reason: Divergent history | Resolution: May need manual merge`);\n return { success: false, actions, error: 'Fast-forward not possible' };\n }\n throw error;\n }\n }\n\n // Push if requested\n if (options.push) {\n logger.verbose(`Pushing to remote...`);\n await run('git push', { cwd: packagePath });\n actions.push('Pushed to remote');\n }\n\n return { success: true, actions };\n } catch (error: any) {\n logger.error(`BRANCH_STATE_AUTO_SYNC_FAILED: Failed to auto-sync package | Path: ${packagePath} | Error: ${error.message}`);\n return { success: false, actions, error: error.message };\n }\n}\n\n"],"names":["checkBranchStatus","packagePath","expectedBranch","targetBranch","checkPR","options","logger","getLogger","isInGitRepository","debug","name","isOnExpectedBranch","ahead","behind","hasUnpushedCommits","needsSync","remoteExists","stdout","currentBranch","run","cwd","suppressErrorLogging","branch","trim","revList","behindStr","aheadStr","split","parseInt","error","verbose","hasMergeConflicts","conflictsWith","skipFetch","mergeTree","includes","message","hasOpenPR","prUrl","prNumber","findOpenPullRequestByHeadRef","pr","html_url","number","checkTargetBranchSync","localExists","exactMatch","canFastForward","needsReset","localSha","remoteSha","auditBranchState","packages","checkConflicts","checkVersions","concurrency","info","length","parallelMap","items","fn","results","Array","queue","map","item","index","nextIndex","workers","Math","min","fill","task","Promise","all","actualExpectedBranch","branchNames","pkg","path","branchCounts","Map","set","get","maxCount","count","entries","repoRoots","Set","root","getGitRepositoryRoot","add","repoList","from","repo","i","completedCount","audits","targetBranchSync","status","issues","fixes","versionStatus","packageName","push","validateVersionForBranch","fs","pathModule","packageJsonPath","join","packageJsonContent","readFile","packageJson","JSON","parse","version","validation","isValid","valid","issue","fix","issuesFound","filter","a","versionIssues","targetBranchSyncIssues","goodPackages","totalPackages","formatAuditResults","result","lines","audit","commonBranch","padEnd","goodAudits","displayCount","slice","forEach","versionInfo","versionIssueAudits","targetSyncIssueAudits","sync","substring","conflictCount","prCount","branchInconsistentCount","unpushedCount","behindCount","noRemoteCount","auditsWithIssues","sortedAudits","sort","b","aScore","bScore","hasCritical","prefix","syncStatus","icon","fixIndex","stepNumber"],"mappings":";;;;AA0DA;;AAEC,IACM,eAAeA,iBAAAA,CAClBC,WAAmB,EACnBC,cAAuB,EACvBC,YAAAA,GAAuB,MAAM,EAC7BC,OAAAA,GAAmB,KAAK,EACxBC,OAAAA,GAAmC,EAAE,EAAA;AAErC,IAAA,MAAMC,MAAAA,GAASC,SAAAA,EAAAA;;IAGf,IAAI,CAACC,kBAAkBP,WAAAA,CAAAA,EAAc;AACjCK,QAAAA,MAAAA,CAAOG,KAAK,CAAC,CAAC,iCAAiC,EAAER,WAAAA,CAAY,+BAA+B,CAAC,CAAA;QAC7F,OAAO;YACHS,IAAAA,EAAM,SAAA;YACNC,kBAAAA,EAAoB,IAAA;YACpBC,KAAAA,EAAO,CAAA;YACPC,MAAAA,EAAQ,CAAA;YACRC,kBAAAA,EAAoB,KAAA;YACpBC,SAAAA,EAAW,KAAA;YACXC,YAAAA,EAAc;AAClB,SAAA;AACJ,IAAA;IAEA,IAAI;;AAEA,QAAA,MAAM,EAAEC,MAAAA,EAAQC,aAAa,EAAE,GAAG,MAAMC,IAAI,iCAAA,EAAmC;YAAEC,GAAAA,EAAKnB,WAAAA;YAAaoB,oBAAAA,EAAsB;AAAK,SAAA,CAAA;QAC9H,MAAMC,MAAAA,GAASJ,cAAcK,IAAI,EAAA;;AAGjC,QAAA,IAAIP,YAAAA,GAAe,KAAA;QACnB,IAAI;AACA,YAAA,MAAMG,GAAAA,CAAI,CAAC,yCAAyC,EAAEG,QAAQ,EAAE;gBAAEF,GAAAA,EAAKnB,WAAAA;gBAAaoB,oBAAAA,EAAsB;AAAK,aAAA,CAAA;YAC/GL,YAAAA,GAAe,IAAA;AACnB,QAAA,CAAA,CAAE,OAAM;YACJA,YAAAA,GAAe,KAAA;AACnB,QAAA;;AAGA,QAAA,IAAIJ,KAAAA,GAAQ,CAAA;AACZ,QAAA,IAAIC,MAAAA,GAAS,CAAA;AAEb,QAAA,IAAIG,YAAAA,EAAc;YACd,IAAI;AACA,gBAAA,MAAM,EAAEC,MAAAA,EAAQO,OAAO,EAAE,GAAG,MAAML,GAAAA,CAAI,CAAC,yCAAyC,EAAEG,MAAAA,CAAO,OAAO,CAAC,EAAE;oBAAEF,GAAAA,EAAKnB,WAAAA;oBAAaoB,oBAAAA,EAAsB;AAAK,iBAAA,CAAA;gBAClJ,MAAM,CAACI,WAAWC,QAAAA,CAAS,GAAGF,QAAQD,IAAI,EAAA,CAAGI,KAAK,CAAC,IAAA,CAAA;gBACnDd,MAAAA,GAASe,QAAAA,CAASH,WAAW,EAAA,CAAA,IAAO,CAAA;gBACpCb,KAAAA,GAAQgB,QAAAA,CAASF,UAAU,EAAA,CAAA,IAAO,CAAA;AACtC,YAAA,CAAA,CAAE,OAAOG,KAAAA,EAAO;gBACZvB,MAAAA,CAAOwB,OAAO,CAAC,CAAC,sCAAsC,EAAE7B,WAAAA,CAAY,EAAE,EAAE4B,KAAAA,CAAAA,CAAO,CAAA;AACnF,YAAA;AACJ,QAAA;;AAGA,QAAA,IAAIE,iBAAAA,GAAoB,KAAA;QACxB,IAAIC,aAAAA;AAEJ,QAAA,IAAIV,WAAWnB,YAAAA,EAAc;YACzB,IAAI;;gBAEA,IAAI,CAACE,OAAAA,CAAQ4B,SAAS,EAAE;AACpB3B,oBAAAA,MAAAA,CAAOwB,OAAO,CAAC,CAAC,oCAAoC,EAAE7B,WAAAA,CAAY,GAAG,CAAC,CAAA;AACtE,oBAAA,MAAMkB,IAAI,0BAAA,EAA4B;wBAAEC,GAAAA,EAAKnB,WAAAA;wBAAaoB,oBAAAA,EAAsB;AAAK,qBAAA,CAAA;AACzF,gBAAA;AAEAf,gBAAAA,MAAAA,CAAOwB,OAAO,CAAC,CAAC,sCAAsC,EAAE3B,YAAAA,CAAa,GAAG,CAAC,CAAA;;gBAEzE,MAAM,EAAEc,QAAQiB,SAAS,EAAE,GAAG,MAAMf,GAAAA,CAAI,CAAC,gCAAgC,EAAEG,OAAO,QAAQ,EAAEnB,aAAa,EAAE,EAAEmB,OAAO,QAAQ,EAAEnB,cAAc,EAAE;oBAAEiB,GAAAA,EAAKnB,WAAAA;oBAAaoB,oBAAAA,EAAsB;AAAK,iBAAA,CAAA;;gBAG7L,IAAIa,SAAAA,CAAUC,QAAQ,CAAC,SAAA,CAAA,IAAcD,SAAAA,CAAUC,QAAQ,CAAC,SAAA,CAAA,IAAcD,SAAAA,CAAUC,QAAQ,CAAC,SAAA,CAAA,EAAY;oBACjGJ,iBAAAA,GAAoB,IAAA;oBACpBC,aAAAA,GAAgB7B,YAAAA;AAChBG,oBAAAA,MAAAA,CAAOwB,OAAO,CAAC,CAAC,sCAAsC,EAAE3B,YAAAA,CAAAA,CAAc,CAAA;AAC1E,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAO0B,KAAAA,EAAY;;gBAEjBvB,MAAAA,CAAOwB,OAAO,CAAC,CAAC,oCAAoC,EAAE7B,YAAY,EAAE,EAAE4B,KAAAA,CAAMO,OAAO,CAAA,CAAE,CAAA;AACzF,YAAA;AACJ,QAAA;;AAGA,QAAA,IAAIC,SAAAA,GAAY,KAAA;QAChB,IAAIC,KAAAA;QACJ,IAAIC,QAAAA;AAEJ,QAAA,IAAInC,OAAAA,EAAS;YACT,IAAI;AACAE,gBAAAA,MAAAA,CAAOwB,OAAO,CAAC,CAAC,uCAAuC,CAAC,CAAA;AACxD,gBAAA,MAAM,EAAEU,4BAA4B,EAAE,GAAG,MAAM,OAAO,yBAAA,CAAA;AACtD,gBAAA,MAAMC,EAAAA,GAAK,MAAM,4BAACD,CAAqClB,MAAAA,EAAQrB,WAAAA,CAAAA;AAC/D,gBAAA,IAAIwC,EAAAA,EAAI;oBACJJ,SAAAA,GAAY,IAAA;AACZC,oBAAAA,KAAAA,GAAQG,GAAGC,QAAQ;AACnBH,oBAAAA,QAAAA,GAAWE,GAAGE,MAAM;oBACpBrC,MAAAA,CAAOwB,OAAO,CAAC,CAAC,uBAAuB,EAAES,QAAAA,CAAS,EAAE,EAAED,KAAAA,CAAAA,CAAO,CAAA;AACjE,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAOT,KAAAA,EAAY;gBACjBvB,MAAAA,CAAOwB,OAAO,CAAC,CAAC,2BAA2B,EAAE7B,YAAY,EAAE,EAAE4B,KAAAA,CAAMO,OAAO,CAAA,CAAE,CAAA;AAChF,YAAA;AACJ,QAAA;QAEA,MAAMzB,kBAAAA,GAAqB,CAACT,cAAAA,IAAkBoB,MAAAA,KAAWpB,cAAAA;AACzD,QAAA,MAAMY,qBAAqBF,KAAAA,GAAQ,CAAA;AACnC,QAAA,MAAMG,YAAYF,MAAAA,GAAS,CAAA;QAE3B,OAAO;YACHH,IAAAA,EAAMY,MAAAA;AACNX,YAAAA,kBAAAA;AACAT,YAAAA,cAAAA;AACAU,YAAAA,KAAAA;AACAC,YAAAA,MAAAA;AACAC,YAAAA,kBAAAA;AACAC,YAAAA,SAAAA;AACAC,YAAAA,YAAAA;AACAe,YAAAA,iBAAAA;AACAC,YAAAA,aAAAA;AACAK,YAAAA,SAAAA;AACAC,YAAAA,KAAAA;AACAC,YAAAA;AACJ,SAAA;AACJ,IAAA,CAAA,CAAE,OAAOV,KAAAA,EAAY;QACjBvB,MAAAA,CAAOuB,KAAK,CAAC,CAAC,iCAAiC,EAAE5B,YAAY,EAAE,EAAE4B,KAAAA,CAAMO,OAAO,CAAA,CAAE,CAAA;QAChF,OAAO;YACH1B,IAAAA,EAAM,SAAA;YACNC,kBAAAA,EAAoB,KAAA;YACpBC,KAAAA,EAAO,CAAA;YACPC,MAAAA,EAAQ,CAAA;YACRC,kBAAAA,EAAoB,KAAA;YACpBC,SAAAA,EAAW,KAAA;YACXC,YAAAA,EAAc;AAClB,SAAA;AACJ,IAAA;AACJ;AAEA;;IAGO,eAAe4B,qBAAAA,CAClB3C,WAAmB,EACnBE,eAAuB,MAAM,EAC7BE,OAAAA,GAAmC,EAAE,EAAA;AAErC,IAAA,MAAMC,MAAAA,GAASC,SAAAA,EAAAA;;IAGf,IAAI,CAACC,kBAAkBP,WAAAA,CAAAA,EAAc;QACjC,OAAO;AACHE,YAAAA,YAAAA;YACA0C,WAAAA,EAAa,KAAA;YACb7B,YAAAA,EAAc,KAAA;YACd8B,UAAAA,EAAY,IAAA;YACZC,cAAAA,EAAgB,KAAA;YAChBC,UAAAA,EAAY;AAChB,SAAA;AACJ,IAAA;IAEA,IAAI;;QAEA,IAAI,CAAC3C,OAAAA,CAAQ4B,SAAS,EAAE;YACpB,IAAI;AACA,gBAAA,MAAMd,IAAI,0BAAA,EAA4B;oBAAEC,GAAAA,EAAKnB,WAAAA;oBAAaoB,oBAAAA,EAAsB;AAAK,iBAAA,CAAA;AACzF,YAAA,CAAA,CAAE,OAAOQ,KAAAA,EAAY;gBACjBvB,MAAAA,CAAOwB,OAAO,CAAC,CAAC,+BAA+B,EAAE7B,YAAY,EAAE,EAAE4B,KAAAA,CAAMO,OAAO,CAAA,CAAE,CAAA;AACpF,YAAA;AACJ,QAAA;;AAGA,QAAA,IAAIS,WAAAA,GAAc,KAAA;QAClB,IAAII,QAAAA;QACJ,IAAI;YACA,MAAM,EAAEhC,MAAM,EAAE,GAAG,MAAME,IAAI,CAAC,uBAAuB,EAAEhB,YAAAA,CAAAA,CAAc,EAAE;gBAAEiB,GAAAA,EAAKnB,WAAAA;gBAAaoB,oBAAAA,EAAsB;AAAK,aAAA,CAAA;AACtH4B,YAAAA,QAAAA,GAAWhC,OAAOM,IAAI,EAAA;YACtBsB,WAAAA,GAAc,IAAA;AAClB,QAAA,CAAA,CAAE,OAAM;YACJA,WAAAA,GAAc,KAAA;AAClB,QAAA;;AAGA,QAAA,IAAI7B,YAAAA,GAAe,KAAA;QACnB,IAAIkC,SAAAA;QACJ,IAAI;YACA,MAAM,EAAEjC,MAAM,EAAE,GAAG,MAAME,IAAI,CAAC,qBAAqB,EAAEhB,YAAAA,CAAAA,CAAc,EAAE;gBAAEiB,GAAAA,EAAKnB,WAAAA;gBAAaoB,oBAAAA,EAAsB;AAAK,aAAA,CAAA;YACpH,IAAIJ,MAAAA,CAAOM,IAAI,EAAA,EAAI;AACf2B,gBAAAA,SAAAA,GAAYjC,MAAAA,CAAOU,KAAK,CAAC,KAAA,CAAM,CAAC,CAAA,CAAE;gBAClCX,YAAAA,GAAe,IAAA;AACnB,YAAA;AACJ,QAAA,CAAA,CAAE,OAAM;YACJA,YAAAA,GAAe,KAAA;AACnB,QAAA;;QAGA,MAAM8B,UAAAA,GAAaD,WAAAA,IAAe7B,YAAAA,IAAgBiC,QAAAA,KAAaC,SAAAA;AAC/D,QAAA,IAAIH,cAAAA,GAAiB,KAAA;AACrB,QAAA,IAAIC,UAAAA,GAAa,KAAA;QAEjB,IAAIH,WAAAA,IAAe7B,YAAAA,IAAgB,CAAC8B,UAAAA,EAAY;;YAE5C,IAAI;gBACA,MAAM3B,GAAAA,CAAI,CAAC,6BAA6B,EAAEhB,aAAa,QAAQ,EAAEA,cAAc,EAAE;oBAAEiB,GAAAA,EAAKnB,WAAAA;oBAAaoB,oBAAAA,EAAsB;AAAK,iBAAA,CAAA;gBAChI0B,cAAAA,GAAiB,IAAA;gBACjBC,UAAAA,GAAa,KAAA;AACjB,YAAA,CAAA,CAAE,OAAM;;gBAEJD,cAAAA,GAAiB,KAAA;gBACjBC,UAAAA,GAAa,IAAA;AACjB,YAAA;AACJ,QAAA;QAEA,OAAO;AACH7C,YAAAA,YAAAA;AACA0C,YAAAA,WAAAA;AACA7B,YAAAA,YAAAA;AACAiC,YAAAA,QAAAA;AACAC,YAAAA,SAAAA;AACAJ,YAAAA,UAAAA;AACAC,YAAAA,cAAAA;AACAC,YAAAA;AACJ,SAAA;AACJ,IAAA,CAAA,CAAE,OAAOnB,KAAAA,EAAY;QACjB,OAAO;AACH1B,YAAAA,YAAAA;YACA0C,WAAAA,EAAa,KAAA;YACb7B,YAAAA,EAAc,KAAA;YACd8B,UAAAA,EAAY,KAAA;YACZC,cAAAA,EAAgB,KAAA;YAChBC,UAAAA,EAAY,KAAA;AACZnB,YAAAA,KAAAA,EAAOA,MAAMO;AACjB,SAAA;AACJ,IAAA;AACJ;AAEA;;IAGO,eAAee,gBAAAA,CAClBC,QAA+C,EAC/ClD,cAAuB,EACvBG,OAAAA,GAMI,EAAE,EAAA;AAEN,IAAA,MAAMC,MAAAA,GAASC,SAAAA,EAAAA;IACf,MAAMJ,YAAAA,GAAeE,OAAAA,CAAQF,YAAY,IAAI,MAAA;AAC7C,IAAA,MAAMC,OAAAA,GAAUC,OAAAA,CAAQD,OAAO,KAAK;AACpC,IAAA,MAAMiD,cAAAA,GAAiBhD,OAAAA,CAAQgD,cAAc,KAAK;AAClD,IAAA,MAAMC,aAAAA,GAAgBjD,OAAAA,CAAQiD,aAAa,KAAK;IAChD,MAAMC,WAAAA,GAAclD,OAAAA,CAAQkD,WAAW,IAAI,CAAA;AAE3CjD,IAAAA,MAAAA,CAAOkD,IAAI,CAAC,CAAC,wEAAwE,EAAEJ,QAAAA,CAASK,MAAM,CAAC,gBAAgB,EAAEF,WAAAA,CAAY,kCAAkC,CAAC,CAAA;;IAGxK,MAAMG,WAAAA,GAAc,OAAaC,KAAAA,EAAYC,EAAAA,GAAAA;AACzC,QAAA,MAAMC,OAAAA,GAAe,IAAIC,KAAAA,CAAMH,KAAAA,CAAMF,MAAM,CAAA;AAC3C,QAAA,MAAMM,QAAQJ,KAAAA,CAAMK,GAAG,CAAC,CAACC,IAAAA,EAAMC,SAAW;AAAED,gBAAAA,IAAAA;AAAMC,gBAAAA;aAAM,CAAA,CAAA;AACxD,QAAA,IAAIC,SAAAA,GAAY,CAAA;AAEhB,QAAA,MAAMC,OAAAA,GAAUN,KAAAA,CAAMO,IAAAA,CAAKC,GAAG,CAACf,WAAAA,EAAaI,KAAAA,CAAMF,MAAM,CAAA,CAAA,CAAGc,IAAI,CAAC,IAAA,CAAA,CAAMP,GAAG,CAAC,UAAA;YACtE,MAAOG,SAAAA,GAAYJ,KAAAA,CAAMN,MAAM,CAAE;gBAC7B,MAAMe,IAAAA,GAAOT,KAAK,CAACI,SAAAA,EAAAA,CAAY;gBAC/BN,OAAO,CAACW,IAAAA,CAAKN,KAAK,CAAC,GAAG,MAAMN,EAAAA,CAAGY,IAAAA,CAAKP,IAAI,EAAEO,IAAAA,CAAKN,KAAK,CAAA;AACxD,YAAA;AACJ,QAAA,CAAA,CAAA;QAEA,MAAMO,OAAAA,CAAQC,GAAG,CAACN,OAAAA,CAAAA;QAClB,OAAOP,OAAAA;AACX,IAAA,CAAA;;AAGA,IAAA,IAAIc,oBAAAA,GAAuBzE,cAAAA;AAC3B,IAAA,IAAI,CAACA,cAAAA,EAAgB;AACjBI,QAAAA,MAAAA,CAAOkD,IAAI,CAAC,2EAAA,CAAA;AAEZ,QAAA,MAAMoB,WAAAA,GAAc,MAAMlB,WAAAA,CAAYN,QAAAA,EAAU,OAAOyB,GAAAA,GAAAA;AACnD,YAAA,IAAI,CAACrE,iBAAAA,CAAkBqE,GAAAA,CAAIC,IAAI,CAAA,EAAG;gBAC9B,OAAO,SAAA;AACX,YAAA;YACA,IAAI;AACA,gBAAA,MAAM,EAAE7D,MAAM,EAAE,GAAG,MAAME,IAAI,iCAAA,EAAmC;AAAEC,oBAAAA,GAAAA,EAAKyD,IAAIC,IAAI;oBAAEzD,oBAAAA,EAAsB;AAAK,iBAAA,CAAA;AAC5G,gBAAA,OAAOJ,OAAOM,IAAI,EAAA;AACtB,YAAA,CAAA,CAAE,OAAM;gBACJ,OAAO,SAAA;AACX,YAAA;AACJ,QAAA,CAAA,CAAA;AAEA,QAAA,MAAMwD,eAAe,IAAIC,GAAAA,EAAAA;QACzB,KAAK,MAAMtE,QAAQkE,WAAAA,CAAa;YAC5BG,YAAAA,CAAaE,GAAG,CAACvE,IAAAA,EAAM,CAACqE,aAAaG,GAAG,CAACxE,IAAAA,CAAAA,IAAS,CAAA,IAAK,CAAA,CAAA;AAC3D,QAAA;;AAGA,QAAA,IAAIyE,QAAAA,GAAW,CAAA;AACf,QAAA,KAAK,MAAM,CAAC7D,MAAAA,EAAQ8D,MAAM,IAAIL,YAAAA,CAAaM,OAAO,EAAA,CAAI;AAClD,YAAA,IAAID,KAAAA,GAAQD,QAAAA,IAAY7D,MAAAA,KAAW,SAAA,IAAaA,WAAW,SAAA,EAAW;gBAClE6D,QAAAA,GAAWC,KAAAA;gBACXT,oBAAAA,GAAuBrD,MAAAA;AAC3B,YAAA;AACJ,QAAA;QAEA,IAAI,CAACqD,sBAAsBA,oBAAAA,GAAuB,MAAA;AAClDrE,QAAAA,MAAAA,CAAOkD,IAAI,CAAC,CAAC,sBAAsB,EAAEmB,oBAAAA,CAAqB,EAAE,EAAEQ,QAAAA,CAAS,CAAC,EAAE/B,QAAAA,CAASK,MAAM,CAAC,UAAU,CAAC,CAAA;AACzG,IAAA;;AAGAnD,IAAAA,MAAAA,CAAOkD,IAAI,CAAC,CAAC,0EAA0E,CAAC,CAAA;AACxF,IAAA,MAAM8B,YAAY,IAAIC,GAAAA,EAAAA;IACtB,KAAK,MAAMV,OAAOzB,QAAAA,CAAU;QACxB,MAAMoC,IAAAA,GAAOC,oBAAAA,CAAqBZ,GAAAA,CAAIC,IAAI,CAAA;QAC1C,IAAIU,IAAAA,EAAMF,SAAAA,CAAUI,GAAG,CAACF,IAAAA,CAAAA;AAC5B,IAAA;IAEA,MAAMG,QAAAA,GAAW7B,KAAAA,CAAM8B,IAAI,CAACN,SAAAA,CAAAA;IAC5B,MAAM5B,WAAAA,CAAYiC,QAAAA,EAAU,OAAOE,IAAAA,EAAMC,CAAAA,GAAAA;QACrC,IAAI;AACAxF,YAAAA,MAAAA,CAAOwB,OAAO,CAAC,CAAC,GAAG,EAAEgE,CAAAA,GAAI,CAAA,CAAE,CAAC,EAAEH,QAAAA,CAASlC,MAAM,CAAC,eAAe,EAAEoC,IAAAA,CAAAA,CAAM,CAAA;AACrE,YAAA,MAAM1E,IAAI,0BAAA,EAA4B;gBAAEC,GAAAA,EAAKyE,IAAAA;gBAAMxE,oBAAAA,EAAsB;AAAK,aAAA,CAAA;AAClF,QAAA,CAAA,CAAE,OAAOQ,KAAAA,EAAY;YACjBvB,MAAAA,CAAOG,KAAK,CAAC,CAAC,mBAAmB,EAAEoF,KAAK,EAAE,EAAEhE,KAAAA,CAAMO,OAAO,CAAA,CAAE,CAAA;AAC/D,QAAA;AACJ,IAAA,CAAA,CAAA;IACA9B,MAAAA,CAAOkD,IAAI,CAAC,CAAC,iCAAiC,EAAEmC,QAAAA,CAASlC,MAAM,CAAC,oBAAoB,CAAC,CAAA;;AAGrFnD,IAAAA,MAAAA,CAAOkD,IAAI,CAAC,CAAC,gFAAgF,CAAC,CAAA;AAC9F,IAAA,IAAIuC,cAAAA,GAAiB,CAAA;AACrB,IAAA,MAAMC,MAAAA,GAAS,MAAMtC,WAAAA,CAAYN,QAAAA,EAAU,OAAOyB,GAAAA,GAAAA;;AAE9C,QAAA,MAAMoB,mBAAmB,MAAMrD,qBAAAA,CAAsBiC,GAAAA,CAAIC,IAAI,EAAE3E,YAAAA,EAAc;YAAE8B,SAAAA,EAAW;AAAK,SAAA,CAAA;QAE/F,MAAMiE,MAAAA,GAAS,MAAMlG,iBAAAA,CACjB6E,GAAAA,CAAIC,IAAI,EACRH,oBAAAA,EACAxE,cACAC,OAAAA,EACA;YAAE6B,SAAAA,EAAW;AAAK,SAAA,CAAA;AAGtB,QAAA,MAAMkE,SAAmB,EAAE;AAC3B,QAAA,MAAMC,QAAkB,EAAE;QAC1B,IAAIC,aAAAA;;QAGJ,IAAIH,MAAAA,CAAOxF,IAAI,KAAK,SAAA,EAAW;AAC3BqF,YAAAA,cAAAA,EAAAA;AACA,YAAA,IAAIA,iBAAiB,CAAA,KAAM,CAAA,IAAKA,cAAAA,KAAmB3C,QAAAA,CAASK,MAAM,EAAE;AAChEnD,gBAAAA,MAAAA,CAAOkD,IAAI,CAAC,CAAC,YAAY,EAAEuC,cAAAA,CAAe,CAAC,EAAE3C,QAAAA,CAASK,MAAM,CAAC,iBAAiB,CAAC,CAAA;AACnF,YAAA;YACA,OAAO;AACH6C,gBAAAA,WAAAA,EAAazB,IAAInE,IAAI;AACrBoE,gBAAAA,IAAAA,EAAMD,IAAIC,IAAI;AACdoB,gBAAAA,MAAAA;AACAG,gBAAAA,aAAAA;AACAJ,gBAAAA,gBAAAA;AACAE,gBAAAA,MAAAA;AACAC,gBAAAA;AACJ,aAAA;AACJ,QAAA;;AAGA,QAAA,IAAI,CAACF,MAAAA,CAAOvF,kBAAkB,IAAIgE,oBAAAA,EAAsB;AACpDwB,YAAAA,MAAAA,CAAOI,IAAI,CAAC,CAAC,WAAW,EAAEL,MAAAA,CAAOxF,IAAI,CAAC,yBAAyB,EAAEiE,oBAAAA,CAAqB,EAAE,CAAC,CAAA;YACzFyB,KAAAA,CAAMG,IAAI,CAAC,CAAC,GAAG,EAAE1B,IAAIC,IAAI,CAAC,iBAAiB,EAAEH,oBAAAA,CAAAA,CAAsB,CAAA;AACvE,QAAA;AAEA,QAAA,IAAItB,kBAAkB6C,MAAAA,CAAOnE,iBAAiB,IAAImE,MAAAA,CAAOlE,aAAa,EAAE;YACpEmE,MAAAA,CAAOI,IAAI,CAAC,CAAC,0BAA0B,EAAEL,MAAAA,CAAOlE,aAAa,CAAC,CAAC,CAAC,CAAA;AAChEoE,YAAAA,KAAAA,CAAMG,IAAI,CAAC,CAAC,GAAG,EAAE1B,GAAAA,CAAIC,IAAI,CAAC,qBAAqB,EAAEoB,MAAAA,CAAOlE,aAAa,CAAC,8BAA8B,CAAC,CAAA;AACzG,QAAA;QAEA,IAAI5B,OAAAA,IAAW8F,MAAAA,CAAO7D,SAAS,EAAE;AAC7B8D,YAAAA,MAAAA,CAAOI,IAAI,CAAC,CAAC,iBAAiB,EAAEL,MAAAA,CAAO3D,QAAQ,CAAC,EAAE,EAAE2D,MAAAA,CAAO5D,KAAK,CAAA,CAAE,CAAA;AAClE8D,YAAAA,KAAAA,CAAMG,IAAI,CAAC,CAAC,aAAa,EAAEL,MAAAA,CAAO5D,KAAK,CAAA,CAAE,CAAA;AAC7C,QAAA;QAEA,IAAI4D,MAAAA,CAAOpF,kBAAkB,EAAE;YAC3BqF,MAAAA,CAAOI,IAAI,CAAC,CAAC,mBAAmB,EAAEL,MAAAA,CAAOtF,KAAK,CAAC,UAAU,CAAC,CAAA;AAC1DwF,YAAAA,KAAAA,CAAMG,IAAI,CAAC,CAAC,GAAG,EAAE1B,GAAAA,CAAIC,IAAI,CAAC,oBAAoB,EAAEoB,MAAAA,CAAOxF,IAAI,CAAA,CAAE,CAAA;AACjE,QAAA;QAEA,IAAIwF,MAAAA,CAAOnF,SAAS,EAAE;YAClBoF,MAAAA,CAAOI,IAAI,CAAC,CAAC,iBAAiB,EAAEL,MAAAA,CAAOrF,MAAM,CAAC,UAAU,CAAC,CAAA;AACzDuF,YAAAA,KAAAA,CAAMG,IAAI,CAAC,CAAC,GAAG,EAAE1B,GAAAA,CAAIC,IAAI,CAAC,oBAAoB,EAAEoB,MAAAA,CAAOxF,IAAI,CAAA,CAAE,CAAA;AACjE,QAAA;QAEA,IAAI,CAACwF,MAAAA,CAAOlF,YAAY,EAAE;AACtBmF,YAAAA,MAAAA,CAAOI,IAAI,CAAC,CAAC,4BAA4B,CAAC,CAAA;AAC1CH,YAAAA,KAAAA,CAAMG,IAAI,CAAC,CAAC,GAAG,EAAE1B,GAAAA,CAAIC,IAAI,CAAC,uBAAuB,EAAEoB,MAAAA,CAAOxF,IAAI,CAAA,CAAE,CAAA;AACpE,QAAA;;AAGA,QAAA,IAAI4C,aAAAA,EAAe;YACf,IAAI;AACA,gBAAA,MAAM,EAAEkD,wBAAwB,EAAE,GAAG,MAAM,OAAO,oBAAA,CAAA;gBAClD,MAAMC,EAAAA,GAAK,MAAM,OAAO,aAAA,CAAA;gBACxB,MAAMC,UAAAA,GAAa,MAAM,OAAO,MAAA,CAAA;AAEhC,gBAAA,MAAMC,kBAAkBD,UAAAA,CAAWE,IAAI,CAAC/B,GAAAA,CAAIC,IAAI,EAAE,cAAA,CAAA;AAClD,gBAAA,MAAM+B,kBAAAA,GAAqB,MAAMJ,EAAAA,CAAGK,QAAQ,CAACH,eAAAA,EAAiB,OAAA,CAAA;gBAC9D,MAAMI,WAAAA,GAAcC,IAAAA,CAAKC,KAAK,CAACJ,kBAAAA,CAAAA;gBAC/B,MAAMK,OAAAA,GAAUH,YAAYG,OAAO;AAEnC,gBAAA,MAAMC,UAAAA,GAAaX,wBAAAA,CAAyBU,OAAAA,EAAShB,MAAAA,CAAOxF,IAAI,CAAA;gBAEhE2F,aAAAA,GAAgB;AACZa,oBAAAA,OAAAA;AACAE,oBAAAA,OAAAA,EAASD,WAAWE,KAAK;AACzBC,oBAAAA,KAAAA,EAAOH,WAAWG,KAAK;AACvBC,oBAAAA,GAAAA,EAAKJ,WAAWI;AACpB,iBAAA;gBAEA,IAAI,CAACJ,UAAAA,CAAWE,KAAK,EAAE;oBACnBlB,MAAAA,CAAOI,IAAI,CAAC,CAAC,SAAS,EAAEW,QAAQ,GAAG,EAAEC,UAAAA,CAAWG,KAAK,CAAA,CAAE,CAAA;AACvDlB,oBAAAA,KAAAA,CAAMG,IAAI,CAAC,CAAC,GAAG,EAAE1B,GAAAA,CAAIC,IAAI,CAAC,4BAA4B,EAAEqC,UAAAA,CAAWI,GAAG,CAAA,CAAE,CAAA;AAC5E,gBAAA;AACJ,YAAA,CAAA,CAAE,OAAO1F,KAAAA,EAAY;AACjBvB,gBAAAA,MAAAA,CAAOwB,OAAO,CAAC,CAAC,4BAA4B,EAAE+C,GAAAA,CAAInE,IAAI,CAAC,EAAE,EAAEmB,KAAAA,CAAMO,OAAO,CAAA,CAAE,CAAA;AAC9E,YAAA;AACJ,QAAA;;QAGA,IAAI6D,gBAAAA,CAAiBpD,WAAW,IAAIoD,gBAAAA,CAAiBjF,YAAY,IAAI,CAACiF,gBAAAA,CAAiBnD,UAAU,EAAE;YAC/F,IAAImD,gBAAAA,CAAiBjD,UAAU,EAAE;AAC7BmD,gBAAAA,MAAAA,CAAOI,IAAI,CAAC,CAAC,eAAe,EAAEpG,YAAAA,CAAa,iDAAiD,CAAC,CAAA;AAC7FiG,gBAAAA,KAAAA,CAAMG,IAAI,CAAC,CAAC,GAAG,EAAE1B,GAAAA,CAAIC,IAAI,CAAC,iBAAiB,EAAE3E,YAAAA,CAAa,4BAA4B,EAAEA,YAAAA,CAAa,iBAAiB,EAAE+F,MAAAA,CAAOxF,IAAI,CAAA,CAAE,CAAA;YACzI,CAAA,MAAO,IAAIuF,gBAAAA,CAAiBlD,cAAc,EAAE;AACxCoD,gBAAAA,MAAAA,CAAOI,IAAI,CAAC,CAAC,eAAe,EAAEpG,YAAAA,CAAa,qCAAqC,CAAC,CAAA;AACjFiG,gBAAAA,KAAAA,CAAMG,IAAI,CAAC,CAAC,GAAG,EAAE1B,GAAAA,CAAIC,IAAI,CAAC,iBAAiB,EAAE3E,YAAAA,CAAa,oBAAoB,EAAEA,YAAAA,CAAa,iBAAiB,EAAE+F,MAAAA,CAAOxF,IAAI,CAAA,CAAE,CAAA;YACjI,CAAA,MAAO;AACHyF,gBAAAA,MAAAA,CAAOI,IAAI,CAAC,CAAC,eAAe,EAAEpG,YAAAA,CAAa,kCAAkC,CAAC,CAAA;AAC9EiG,gBAAAA,KAAAA,CAAMG,IAAI,CAAC,CAAC,GAAG,EAAE1B,GAAAA,CAAIC,IAAI,CAAC,iBAAiB,EAAE3E,YAAAA,CAAa,oBAAoB,EAAEA,YAAAA,CAAa,iBAAiB,EAAE+F,MAAAA,CAAOxF,IAAI,CAAA,CAAE,CAAA;AACjI,YAAA;AACJ,QAAA,CAAA,MAAO,IAAI,CAACuF,gBAAAA,CAAiBpD,WAAW,IAAIoD,gBAAAA,CAAiBjF,YAAY,EAAE;;AAEvEmF,YAAAA,MAAAA,CAAOI,IAAI,CAAC,CAAC,eAAe,EAAEpG,YAAAA,CAAa,2CAA2C,CAAC,CAAA;AACvFiG,YAAAA,KAAAA,CAAMG,IAAI,CAAC,CAAC,GAAG,EAAE1B,GAAAA,CAAIC,IAAI,CAAC,eAAe,EAAE3E,YAAAA,CAAa,QAAQ,EAAEA,YAAAA,CAAAA,CAAc,CAAA;QACpF,CAAA,MAAO,IAAI8F,gBAAAA,CAAiBpE,KAAK,EAAE;AAC/BvB,YAAAA,MAAAA,CAAOwB,OAAO,CAAC,CAAC,uCAAuC,EAAE+C,GAAAA,CAAInE,IAAI,CAAC,EAAE,EAAEuF,gBAAAA,CAAiBpE,KAAK,CAAA,CAAE,CAAA;AAClG,QAAA;AAEAkE,QAAAA,cAAAA,EAAAA;AACA,QAAA,IAAIA,iBAAiB,CAAA,KAAM,CAAA,IAAKA,cAAAA,KAAmB3C,QAAAA,CAASK,MAAM,EAAE;AAChEnD,YAAAA,MAAAA,CAAOkD,IAAI,CAAC,CAAC,YAAY,EAAEuC,cAAAA,CAAe,CAAC,EAAE3C,QAAAA,CAASK,MAAM,CAAC,iBAAiB,CAAC,CAAA;AACnF,QAAA;QAEA,OAAO;AACH6C,YAAAA,WAAAA,EAAazB,IAAInE,IAAI;AACrBoE,YAAAA,IAAAA,EAAMD,IAAIC,IAAI;AACdoB,YAAAA,MAAAA;AACAG,YAAAA,aAAAA;AACAJ,YAAAA,gBAAAA;AACAE,YAAAA,MAAAA;AACAC,YAAAA;AACJ,SAAA;AACJ,IAAA,CAAA,CAAA;AAEA,IAAA,MAAMoB,WAAAA,GAAcxB,MAAAA,CAAOyB,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAEvB,MAAM,CAAC1C,MAAM,GAAG,CAAA,CAAA,CAAGA,MAAM;AAClE,IAAA,MAAMkE,aAAAA,GAAgB3B,MAAAA,CAAOyB,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAErB,aAAa,IAAI,CAACqB,CAAAA,CAAErB,aAAa,CAACe,OAAO,EAAE3D,MAAM;IAC5F,MAAMmE,sBAAAA,GAAyB5B,MAAAA,CAAOyB,MAAM,CAACC,CAAAA,IAAKA,CAAAA,CAAEzB,gBAAgB,IAAI,CAACyB,CAAAA,CAAEzB,gBAAgB,CAACnD,UAAU,IAAI4E,CAAAA,CAAEzB,gBAAgB,CAACpD,WAAW,IAAI6E,CAAAA,CAAEzB,gBAAgB,CAACjF,YAAY,CAAA,CAAEyC,MAAM;AACnL,IAAA,MAAMoE,YAAAA,GAAe7B,MAAAA,CAAOyB,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAEvB,MAAM,CAAC1C,MAAM,KAAK,CAAA,CAAA,CAAGA,MAAM;AAErEnD,IAAAA,MAAAA,CAAOkD,IAAI,CAAC,CAAC,kBAAkB,EAAEqE,YAAAA,CAAa,CAAC,EAAEzE,QAAAA,CAASK,MAAM,CAAC,wBAAwB,CAAC,CAAA;AAC1F,IAAA,IAAI+D,cAAc,CAAA,EAAG;AACjBlH,QAAAA,MAAAA,CAAOkD,IAAI,CAAC,CAAC,kBAAkB,EAAEgE,WAAAA,CAAY,WAAW,CAAC,CAAA;AAC7D,IAAA;IAEA,OAAO;AACHM,QAAAA,aAAAA,EAAe1E,SAASK,MAAM;AAC9BoE,QAAAA,YAAAA;AACAL,QAAAA,WAAAA;AACAG,QAAAA,aAAAA;AACAC,QAAAA,sBAAAA;AACA5B,QAAAA;AACJ,KAAA;AACJ;AAEA;;IAGO,SAAS+B,kBAAAA,CAAmBC,MAAyB,EAAA;AACxD,IAAA,MAAMC,QAAkB,EAAE;;AAG1B,IAAA,MAAMlD,eAAe,IAAIC,GAAAA,EAAAA;AACzB,IAAA,KAAK,MAAMkD,KAAAA,IAASF,MAAAA,CAAOhC,MAAM,CAAE;AAC/B,QAAA,MAAM1E,MAAAA,GAAS4G,KAAAA,CAAMhC,MAAM,CAACxF,IAAI;QAChCqE,YAAAA,CAAaE,GAAG,CAAC3D,MAAAA,EAAQ,CAACyD,aAAaG,GAAG,CAAC5D,MAAAA,CAAAA,IAAW,CAAA,IAAK,CAAA,CAAA;AAC/D,IAAA;IAEA,IAAI6G,YAAAA;AACJ,IAAA,IAAIhD,QAAAA,GAAW,CAAA;AACf,IAAA,KAAK,MAAM,CAAC7D,MAAAA,EAAQ8D,MAAM,IAAIL,YAAAA,CAAaM,OAAO,EAAA,CAAI;AAClD,QAAA,IAAID,QAAQD,QAAAA,EAAU;YAClBA,QAAAA,GAAWC,KAAAA;YACX+C,YAAAA,GAAe7G,MAAAA;AACnB,QAAA;AACJ,IAAA;AAEA2G,IAAAA,KAAAA,CAAM1B,IAAI,CAAC,kEAAA,CAAA;AACX0B,IAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,uBAAuB,EAAEyB,MAAAA,CAAOF,aAAa,CAAC,UAAU,CAAC,CAACM,MAAM,CAAC,EAAA,CAAA,GAAM,GAAA,CAAA;AACnF,IAAA,IAAID,YAAAA,IAAgBhD,QAAAA,KAAa6C,MAAAA,CAAOF,aAAa,EAAE;QACnDG,KAAAA,CAAM1B,IAAI,CAAC,CAAC,oBAAoB,EAAE4B,YAAAA,CAAAA,CAAc,CAACC,MAAM,CAAC,EAAA,CAAA,GAAM,GAAA,CAAA;AAClE,IAAA,CAAA,MAAO,IAAID,YAAAA,EAAc;AACrBF,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,qBAAqB,EAAE4B,YAAAA,CAAa,EAAE,EAAEhD,QAAAA,CAAS,CAAC,EAAE6C,MAAAA,CAAOF,aAAa,CAAC,CAAC,CAAC,CAACM,MAAM,CAAC,EAAA,CAAA,GAAM,GAAA,CAAA;AACzG,IAAA;AACAH,IAAAA,KAAAA,CAAM1B,IAAI,CAAC,kEAAA,CAAA;AACX0B,IAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;IAEX,IAAIyB,MAAAA,CAAOH,YAAY,GAAG,CAAA,EAAG;AACzBI,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,cAAc,EAAEyB,OAAOH,YAAY,CAAC,QAAQ,EAAEG,OAAOH,YAAY,KAAK,IAAI,EAAA,GAAK,GAAA,CAAI,EAAE,CAAC,CAAA;AAElG,QAAA,MAAMQ,UAAAA,GAAaL,MAAAA,CAAOhC,MAAM,CAACyB,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAEvB,MAAM,CAAC1C,MAAM,KAAK,CAAA,CAAA;AACjE,QAAA,MAAM6E,eAAejE,IAAAA,CAAKC,GAAG,CAAC+D,UAAAA,CAAW5E,MAAM,EAAE,CAAA,CAAA;AACjD4E,QAAAA,UAAAA,CAAWE,KAAK,CAAC,CAAA,EAAGD,YAAAA,CAAAA,CAAcE,OAAO,CAACN,CAAAA,KAAAA,GAAAA;AACtC,YAAA,MAAMO,WAAAA,GAAcP,KAAAA,CAAM7B,aAAa,GAAG,CAAC,GAAG,EAAE6B,KAAAA,CAAM7B,aAAa,CAACa,OAAO,CAAC,CAAC,CAAC,GAAG,EAAA;YACjFe,KAAAA,CAAM1B,IAAI,CAAC,CAAC,GAAG,EAAE2B,KAAAA,CAAM5B,WAAW,GAAGmC,WAAAA,CAAAA,CAAa,CAAA;AACtD,QAAA,CAAA,CAAA;QAEA,IAAIJ,UAAAA,CAAW5E,MAAM,GAAG6E,YAAAA,EAAc;YAClCL,KAAAA,CAAM1B,IAAI,CAAC,CAAC,WAAW,EAAE8B,WAAW5E,MAAM,GAAG6E,YAAAA,CAAa,KAAK,CAAC,CAAA;AACpE,QAAA;AACAL,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACf,IAAA;;IAGA,IAAIyB,MAAAA,CAAOL,aAAa,GAAG,CAAA,EAAG;AAC1BM,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,oBAAoB,EAAEyB,OAAOL,aAAa,CAAC,QAAQ,EAAEK,OAAOL,aAAa,KAAK,IAAI,EAAA,GAAK,GAAA,CAAI,EAAE,CAAC,CAAA;AAE1G,QAAA,MAAMe,kBAAAA,GAAqBV,MAAAA,CAAOhC,MAAM,CAACyB,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAErB,aAAa,IAAI,CAACqB,CAAAA,CAAErB,aAAa,CAACe,OAAO,CAAA;QAChGsB,kBAAAA,CAAmBF,OAAO,CAACN,CAAAA,KAAAA,GAAAA;AACvBD,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,GAAG,EAAE2B,KAAAA,CAAM5B,WAAW,CAAA,CAAE,CAAA;YACpC2B,KAAAA,CAAM1B,IAAI,CAAC,CAAC,aAAa,EAAE2B,KAAAA,CAAMhC,MAAM,CAACxF,IAAI,CAAA,CAAE,CAAA;YAC9CuH,KAAAA,CAAM1B,IAAI,CAAC,CAAC,cAAc,EAAE2B,KAAAA,CAAM7B,aAAa,CAAEa,OAAO,CAAA,CAAE,CAAA;YAC1De,KAAAA,CAAM1B,IAAI,CAAC,CAAC,YAAY,EAAE2B,KAAAA,CAAM7B,aAAa,CAAEiB,KAAK,CAAA,CAAE,CAAA;YACtDW,KAAAA,CAAM1B,IAAI,CAAC,CAAC,UAAU,EAAE2B,KAAAA,CAAM7B,aAAa,CAAEkB,GAAG,CAAA,CAAE,CAAA;AAClDU,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA,CAAA,CAAA;AACJ,IAAA;;IAGA,IAAIyB,MAAAA,CAAOJ,sBAAsB,GAAG,CAAA,EAAG;AACnCK,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,8BAA8B,EAAEyB,OAAOJ,sBAAsB,CAAC,QAAQ,EAAEI,OAAOJ,sBAAsB,KAAK,IAAI,EAAA,GAAK,GAAA,CAAI,EAAE,CAAC,CAAA;AACtIK,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,OAAO,EAAEyB,OAAOJ,sBAAsB,CAAC,QAAQ,EAAEI,OAAOJ,sBAAsB,KAAK,IAAI,EAAA,GAAK,GAAA,CAAI,2CAA2C,CAAC,CAAA;AACxJK,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,uEAAuE,CAAC,CAAA;AACpF0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;QAEX,MAAMoC,qBAAAA,GAAwBX,MAAAA,CAAOhC,MAAM,CAACyB,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAEzB,gBAAgB,IAAI,CAACyB,EAAEzB,gBAAgB,CAACnD,UAAU,IAAI4E,CAAAA,CAAEzB,gBAAgB,CAACpD,WAAW,IAAI6E,CAAAA,CAAEzB,gBAAgB,CAACjF,YAAY,CAAA;QACjL2H,qBAAAA,CAAsBH,OAAO,CAACN,CAAAA,KAAAA,GAAAA;gBAIKU,cAAAA,EACAA,eAAAA;YAJ/B,MAAMA,IAAAA,GAAOV,MAAMjC,gBAAgB;AACnCgC,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,GAAG,EAAE2B,KAAAA,CAAM5B,WAAW,CAAA,CAAE,CAAA;AACpC2B,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,oBAAoB,EAAEqC,IAAAA,CAAKzI,YAAY,CAAA,CAAE,CAAA;AACrD8H,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,iBAAiB,EAAA,CAAEqC,iBAAAA,IAAAA,CAAK3F,QAAQ,MAAA,IAAA,IAAb2F,cAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,eAAeC,SAAS,CAAC,CAAA,EAAG,CAAA,CAAA,CAAG,GAAG,CAAC,CAAA;AAClEZ,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,iBAAiB,EAAA,CAAEqC,kBAAAA,IAAAA,CAAK1F,SAAS,MAAA,IAAA,IAAd0F,eAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,gBAAgBC,SAAS,CAAC,CAAA,EAAG,CAAA,CAAA,CAAG,GAAG,CAAC,CAAA;YACnE,IAAID,IAAAA,CAAK5F,UAAU,EAAE;AACjBiF,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,gDAAgD,CAAC,CAAA;YACjE,CAAA,MAAO,IAAIqC,IAAAA,CAAK7F,cAAc,EAAE;AAC5BkF,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,iCAAiC,CAAC,CAAA;AAClD,YAAA;AACA0B,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA,CAAA,CAAA;AACJ,IAAA;IAEA,IAAIyB,MAAAA,CAAOR,WAAW,GAAG,CAAA,EAAG;;AAExB,QAAA,MAAMsB,aAAAA,GAAgBd,MAAAA,CAAOhC,MAAM,CAACyB,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAExB,MAAM,CAACnE,iBAAiB,EAAE0B,MAAM;AAClF,QAAA,MAAMsF,OAAAA,GAAUf,MAAAA,CAAOhC,MAAM,CAACyB,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAExB,MAAM,CAAC7D,SAAS,EAAEoB,MAAM;AACpE,QAAA,MAAMuF,uBAAAA,GAA0BhB,MAAAA,CAAOhC,MAAM,CAACyB,MAAM,CAACC,CAAAA,CAAAA,GAAK,CAACA,CAAAA,CAAExB,MAAM,CAACvF,kBAAkB,EAAE8C,MAAM;AAC9F,QAAA,MAAMwF,aAAAA,GAAgBjB,MAAAA,CAAOhC,MAAM,CAACyB,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAExB,MAAM,CAACpF,kBAAkB,EAAE2C,MAAM;AACnF,QAAA,MAAMyF,WAAAA,GAAclB,MAAAA,CAAOhC,MAAM,CAACyB,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAExB,MAAM,CAACnF,SAAS,EAAE0C,MAAM;AACxE,QAAA,MAAM0F,aAAAA,GAAgBnB,MAAAA,CAAOhC,MAAM,CAACyB,MAAM,CAACC,CAAAA,CAAAA,GAAK,CAACA,CAAAA,CAAExB,MAAM,CAAClF,YAAY,EAAEyC,MAAM;AAE9E,QAAA,IAAIqF,gBAAgB,CAAA,IAAKC,OAAAA,GAAU,KAAKf,MAAAA,CAAOJ,sBAAsB,GAAG,CAAA,EAAG;AACvEK,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAA;YAChC,IAAIyB,MAAAA,CAAOJ,sBAAsB,GAAG,CAAA,EAAG;AACnCK,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,MAAM,EAAEyB,OAAOJ,sBAAsB,CAAC,QAAQ,EAAEI,OAAOJ,sBAAsB,KAAK,IAAI,EAAA,GAAK,GAAA,CAAI,+BAA+B,CAAC,CAAA;AAC/I,YAAA;AACA,YAAA,IAAIkB,gBAAgB,CAAA,EAAG;AACnBb,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,OAAO,EAAEuC,aAAAA,CAAc,QAAQ,EAAEA,aAAAA,KAAkB,CAAA,GAAI,EAAA,GAAK,GAAA,CAAI,qBAAqB,CAAC,CAAA;AACtG,YAAA;AACA,YAAA,IAAIC,UAAU,CAAA,EAAG;AACbd,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,MAAM,EAAEwC,OAAAA,CAAQ,QAAQ,EAAEA,OAAAA,KAAY,CAAA,GAAI,EAAA,GAAK,GAAA,CAAI,kBAAkB,CAAC,CAAA;AACtF,YAAA;AACAd,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAA;QAChC,IAAIyB,MAAAA,CAAOJ,sBAAsB,GAAG,CAAA,EAAGK,MAAM1B,IAAI,CAAC,CAAC,KAAK,EAAEyB,OAAOJ,sBAAsB,CAAC,yBAAyB,EAAEI,MAAAA,CAAOJ,sBAAsB,KAAK,CAAA,GAAI,KAAK,GAAA,CAAA,CAAK,CAAA;AACnK,QAAA,IAAIkB,aAAAA,GAAgB,CAAA,EAAGb,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAEuC,aAAAA,CAAc,eAAe,EAAEA,aAAAA,KAAkB,CAAA,GAAI,KAAK,GAAA,CAAA,CAAK,CAAA;AACzG,QAAA,IAAIC,OAAAA,GAAU,CAAA,EAAGd,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAEwC,OAAAA,CAAQ,YAAY,EAAEA,OAAAA,KAAY,CAAA,GAAI,KAAK,GAAA,CAAA,CAAK,CAAA;AACpF,QAAA,IAAIC,uBAAAA,GAA0B,CAAA,EAAGf,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAEyC,uBAAAA,CAAwB,oBAAoB,EAAEA,uBAAAA,KAA4B,CAAA,GAAI,MAAM,KAAA,CAAA,CAAO,CAAA;AAC/I,QAAA,IAAIC,gBAAgB,CAAA,EAAGhB,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAE0C,aAAAA,CAAc,QAAQ,EAAEA,aAAAA,KAAkB,CAAA,GAAI,EAAA,GAAK,GAAA,CAAI,sBAAsB,CAAC,CAAA;AACxH,QAAA,IAAIC,cAAc,CAAA,EAAGjB,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAE2C,WAAAA,CAAY,QAAQ,EAAEA,WAAAA,KAAgB,CAAA,GAAI,EAAA,GAAK,GAAA,CAAI,cAAc,CAAC,CAAA;AAC1G,QAAA,IAAIC,gBAAgB,CAAA,EAAGlB,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAE4C,aAAAA,CAAc,QAAQ,EAAEA,aAAAA,KAAkB,CAAA,GAAI,EAAA,GAAK,GAAA,CAAI,sBAAsB,CAAC,CAAA;AACxHlB,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AAEX0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,+DAAA,CAAA;AACX0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,+BAAA,CAAA;AACX0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,+DAAA,CAAA;AACX0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;;AAGX,QAAA,MAAM6C,gBAAAA,GAAmBpB,MAAAA,CAAOhC,MAAM,CAACyB,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAEvB,MAAM,CAAC1C,MAAM,GAAG,CAAA,CAAA;AACrE,QAAA,MAAM4F,YAAAA,GAAeD,gBAAAA,CAAiBE,IAAI,CAAC,CAAC5B,CAAAA,EAAG6B,CAAAA,GAAAA;AAC3C,YAAA,MAAMC,SAAS,CAAC9B,EAAExB,MAAM,CAACnE,iBAAiB,GAAG,IAAA,GAAO,CAAA,KAAM2F,CAAAA,CAAExB,MAAM,CAAC7D,SAAS,GAAG,MAAM,CAAA,CAAA;AACrF,YAAA,MAAMoH,SAAS,CAACF,EAAErD,MAAM,CAACnE,iBAAiB,GAAG,IAAA,GAAO,CAAA,KAAMwH,CAAAA,CAAErD,MAAM,CAAC7D,SAAS,GAAG,MAAM,CAAA,CAAA;AACrF,YAAA,OAAOoH,MAAAA,GAASD,MAAAA;AACpB,QAAA,CAAA,CAAA;QAEAH,YAAAA,CAAab,OAAO,CAAC,CAACN,KAAAA,EAAOhE,KAAAA,GAAAA;;YAEzB,MAAMwF,WAAAA,GAAcxB,MAAMhC,MAAM,CAACnE,iBAAiB,IAAImG,KAAAA,CAAMhC,MAAM,CAAC7D,SAAS;YAC5E,MAAMsH,MAAAA,GAASD,cAAc,aAAA,GAAgB,aAAA;AAE7CzB,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAA,EAAGoD,MAAAA,CAAO,EAAE,EAAEzF,KAAAA,GAAQ,CAAA,CAAE,CAAC,EAAEmF,aAAa5F,MAAM,CAAC,EAAE,EAAEyE,KAAAA,CAAM5B,WAAW,CAAA,CAAE,CAAA;AACjF2B,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,UAAU,EAAE2B,KAAAA,CAAMpD,IAAI,CAAA,CAAE,CAAA;YACpCmD,KAAAA,CAAM1B,IAAI,CAAC,CAAC,QAAQ,EAAE2B,KAAAA,CAAMhC,MAAM,CAACxF,IAAI,CAAA,CAAE,CAAA;AAEzC,YAAA,IAAIwH,KAAAA,CAAMhC,MAAM,CAAClF,YAAY,EAAE;AAC3B,gBAAA,MAAM4I,aAAa,EAAE;AACrB,gBAAA,IAAI1B,MAAMhC,MAAM,CAACtF,KAAK,GAAG,GAAGgJ,UAAAA,CAAWrD,IAAI,CAAC,CAAC,MAAM,EAAE2B,KAAAA,CAAMhC,MAAM,CAACtF,KAAK,CAAA,CAAE,CAAA;AACzE,gBAAA,IAAIsH,MAAMhC,MAAM,CAACrF,MAAM,GAAG,GAAG+I,UAAAA,CAAWrD,IAAI,CAAC,CAAC,OAAO,EAAE2B,KAAAA,CAAMhC,MAAM,CAACrF,MAAM,CAAA,CAAE,CAAA;gBAC5E,IAAI+I,UAAAA,CAAWnG,MAAM,GAAG,CAAA,EAAG;oBACvBwE,KAAAA,CAAM1B,IAAI,CAAC,CAAC,MAAM,EAAEqD,UAAAA,CAAWhD,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;AAC/C,gBAAA;YACJ,CAAA,MAAO;AACHqB,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,sBAAsB,CAAC,CAAA;AACvC,YAAA;AAEA0B,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACX0B,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,SAAA,CAAA;AACX2B,YAAAA,KAAAA,CAAM/B,MAAM,CAACqC,OAAO,CAAClB,CAAAA,KAAAA,GAAAA;gBACjB,MAAMuC,IAAAA,GAAOvC,KAAAA,CAAMnF,QAAQ,CAAC,iBAAA,CAAA,GAAqB,QAAQmF,KAAAA,CAAMnF,QAAQ,CAAC,IAAA,CAAA,GAAQ,KAAA,GAAQ,IAAA;gBACxF8F,KAAAA,CAAM1B,IAAI,CAAC,CAAC,EAAE,EAAEsD,IAAAA,CAAK,CAAC,EAAEvC,KAAAA,CAAAA,CAAO,CAAA;AACnC,YAAA,CAAA,CAAA;AAEAW,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACX0B,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,kCAAA,CAAA;AACX2B,YAAAA,KAAAA,CAAM9B,KAAK,CAACoC,OAAO,CAAC,CAACjB,GAAAA,EAAKuC,QAAAA,GAAAA;gBACtB7B,KAAAA,CAAM1B,IAAI,CAAC,CAAC,EAAE,EAAEuD,QAAAA,GAAW,CAAA,CAAE,EAAE,EAAEvC,GAAAA,CAAAA,CAAK,CAAA;AAC1C,YAAA,CAAA,CAAA;;AAGA,YAAA,IAAIW,KAAAA,CAAMhC,MAAM,CAACnE,iBAAiB,EAAE;AAChCkG,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACX0B,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,kCAAA,CAAA;AACX0B,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,+DAAA,CAAA;AACX0B,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,8DAAA,CAAA;AACX0B,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,8CAAA,CAAA;AACX0B,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,wCAAA,CAAA;AACX0B,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,mDAAA,GAAsD2B,KAAAA,CAAMhC,MAAM,CAACxF,IAAI,CAAA;AAClFuH,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,wEAAA,CAAA;AACf,YAAA;AAEA,YAAA,IAAI2B,KAAAA,CAAMhC,MAAM,CAAC7D,SAAS,EAAE;AACxB4F,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACX0B,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,4BAAA,CAAA;AACX0B,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,wBAAA,CAAA;AACX0B,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,6EAAA,CAAA;AACX0B,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,0CAAA,CAAA;AACX0B,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,oDAAA,CAAA;AACf,YAAA;AAEA0B,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACX0B,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,+DAAA,CAAA;AACX0B,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA,CAAA,CAAA;AAEA0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,+DAAA,CAAA;AACX0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,0BAAA,CAAA;AACX0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,+DAAA,CAAA;AACX0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AAEX,QAAA,IAAIwD,UAAAA,GAAa,CAAA;;QAGjB,IAAI/B,MAAAA,CAAOJ,sBAAsB,GAAG,CAAA,EAAG;AACnCK,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAA,EAAGwD,UAAAA,CAAW,oDAAoD,CAAC,CAAA;AAC9EA,YAAAA,UAAAA,EAAAA;YACA,MAAMpB,qBAAAA,GAAwBX,MAAAA,CAAOhC,MAAM,CAACyB,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAEzB,gBAAgB,IAAI,CAACyB,EAAEzB,gBAAgB,CAACnD,UAAU,IAAI4E,CAAAA,CAAEzB,gBAAgB,CAACpD,WAAW,IAAI6E,CAAAA,CAAEzB,gBAAgB,CAACjF,YAAY,CAAA;YACjL2H,qBAAAA,CAAsBH,OAAO,CAACN,CAAAA,KAAAA,GAAAA;gBAC1B,MAAMU,IAAAA,GAAOV,MAAMjC,gBAAgB;gBACnC,IAAI2C,IAAAA,CAAK5F,UAAU,EAAE;AACjBiF,oBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAE2B,KAAAA,CAAM5B,WAAW,CAAC,KAAK,EAAE4B,KAAAA,CAAMpD,IAAI,CAAC,iBAAiB,EAAE8D,IAAAA,CAAKzI,YAAY,CAAC,4BAA4B,EAAEyI,IAAAA,CAAKzI,YAAY,CAAC,iBAAiB,EAAE+H,KAAAA,CAAMhC,MAAM,CAACxF,IAAI,CAAA,CAAE,CAAA;gBACtL,CAAA,MAAO;AACHuH,oBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAE2B,KAAAA,CAAM5B,WAAW,CAAC,KAAK,EAAE4B,KAAAA,CAAMpD,IAAI,CAAC,iBAAiB,EAAE8D,IAAAA,CAAKzI,YAAY,CAAC,oBAAoB,EAAEyI,IAAAA,CAAKzI,YAAY,CAAC,iBAAiB,EAAE+H,KAAAA,CAAMhC,MAAM,CAACxF,IAAI,CAAA,CAAE,CAAA;AAC9K,gBAAA;AACJ,YAAA,CAAA,CAAA;AACAuH,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA,QAAA,IAAIuC,gBAAgB,CAAA,EAAG;AACnBb,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAA,EAAGwD,UAAAA,CAAW,6CAA6C,CAAC,CAAA;AACvEA,YAAAA,UAAAA,EAAAA;YACAV,YAAAA,CAAa5B,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAExB,MAAM,CAACnE,iBAAiB,CAAA,CAAEyG,OAAO,CAACN,CAAAA,KAAAA,GAAAA;AACzDD,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAE2B,KAAAA,CAAM5B,WAAW,CAAC,KAAK,EAAE4B,KAAAA,CAAMpD,IAAI,CAAC,qBAAqB,EAAEoD,MAAMhC,MAAM,CAAClE,aAAa,CAAA,CAAE,CAAA;AAC9G,YAAA,CAAA,CAAA;AACAiG,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,8CAAA,CAAA;AACX0B,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;QAEA,IAAIyB,MAAAA,CAAOL,aAAa,GAAG,CAAA,EAAG;AAC1BM,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAA,EAAGwD,UAAAA,CAAW,oDAAoD,CAAC,CAAA;AAC9EA,YAAAA,UAAAA,EAAAA;AACAV,YAAAA,YAAAA,CAAa5B,MAAM,CAACC,CAAAA,CAAAA,GAAKA,EAAErB,aAAa,IAAI,CAACqB,CAAAA,CAAErB,aAAa,CAACe,OAAO,CAAA,CAAEoB,OAAO,CAACN,CAAAA,KAAAA,GAAAA;AAC1ED,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAE2B,KAAAA,CAAM5B,WAAW,CAAC,KAAK,EAAE4B,KAAAA,CAAMpD,IAAI,CAAC,wBAAwB,CAAC,CAAA;AACpF,YAAA,CAAA,CAAA;AACAmD,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA,QAAA,IAAIwC,UAAU,CAAA,EAAG;AACbd,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAA,EAAGwD,UAAAA,CAAW,wBAAwB,CAAC,CAAA;AAClDA,YAAAA,UAAAA,EAAAA;YACAV,YAAAA,CAAa5B,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAExB,MAAM,CAAC7D,SAAS,CAAA,CAAEmG,OAAO,CAACN,CAAAA,KAAAA,GAAAA;AACjDD,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAE2B,KAAAA,CAAM5B,WAAW,CAAC,SAAS,EAAE4B,KAAAA,CAAMhC,MAAM,CAAC5D,KAAK,CAAA,CAAE,CAAA;AACpE2F,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,qEAAqE,CAAC,CAAA;AACtF,YAAA,CAAA,CAAA;AACA0B,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA,QAAA,IAAIyC,0BAA0B,CAAA,EAAG;AAC7Bf,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAA,EAAGwD,UAAAA,CAAW,+BAA+B,CAAC,CAAA;AACzDA,YAAAA,UAAAA,EAAAA;AACAV,YAAAA,YAAAA,CAAa5B,MAAM,CAACC,CAAAA,CAAAA,GAAK,CAACA,CAAAA,CAAExB,MAAM,CAACvF,kBAAkB,CAAA,CAAE6H,OAAO,CAACN,CAAAA,KAAAA,GAAAA;AAC3DD,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAE2B,KAAAA,CAAM5B,WAAW,CAAC,KAAK,EAAE4B,KAAAA,CAAMpD,IAAI,CAAC,iBAAiB,EAAEoD,MAAMhC,MAAM,CAAChG,cAAc,CAAA,CAAE,CAAA;AAC3G,YAAA,CAAA,CAAA;AACA+H,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA,QAAA,IAAI2C,cAAc,CAAA,EAAG;AACjBjB,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAA,EAAGwD,UAAAA,CAAW,qBAAqB,CAAC,CAAA;AAC/CA,YAAAA,UAAAA,EAAAA;AACAV,YAAAA,YAAAA,CAAa5B,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAExB,MAAM,CAACnF,SAAS,IAAI,CAAC2G,EAAExB,MAAM,CAACnE,iBAAiB,CAAA,CAAEyG,OAAO,CAACN,CAAAA,KAAAA,GAAAA;AAChFD,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAE2B,KAAAA,CAAM5B,WAAW,CAAC,KAAK,EAAE4B,KAAAA,CAAMpD,IAAI,CAAC,oBAAoB,EAAEoD,MAAMhC,MAAM,CAACxF,IAAI,CAAA,CAAE,CAAA;AACpG,YAAA,CAAA,CAAA;AACAuH,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA,QAAA,IAAI0C,gBAAgB,CAAA,EAAG;AACnBhB,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAA,EAAGwD,UAAAA,CAAW,uBAAuB,CAAC,CAAA;AACjDA,YAAAA,UAAAA,EAAAA;AACAV,YAAAA,YAAAA,CAAa5B,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAAA,CAAExB,MAAM,CAACpF,kBAAkB,IAAI,CAAC4G,EAAExB,MAAM,CAACnE,iBAAiB,CAAA,CAAEyG,OAAO,CAACN,CAAAA,KAAAA,GAAAA;AACzFD,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAE2B,KAAAA,CAAM5B,WAAW,CAAC,KAAK,EAAE4B,KAAAA,CAAMpD,IAAI,CAAC,oBAAoB,EAAEoD,MAAMhC,MAAM,CAACxF,IAAI,CAAA,CAAE,CAAA;AACpG,YAAA,CAAA,CAAA;AACAuH,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA,QAAA,IAAI4C,gBAAgB,CAAA,EAAG;AACnBlB,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAA,EAAGwD,UAAAA,CAAW,2BAA2B,CAAC,CAAA;AACrDA,YAAAA,UAAAA,EAAAA;AACAV,YAAAA,YAAAA,CAAa5B,MAAM,CAACC,CAAAA,CAAAA,GAAK,CAACA,CAAAA,CAAExB,MAAM,CAAClF,YAAY,CAAA,CAAEwH,OAAO,CAACN,CAAAA,KAAAA,GAAAA;AACrDD,gBAAAA,KAAAA,CAAM1B,IAAI,CAAC,CAAC,KAAK,EAAE2B,KAAAA,CAAM5B,WAAW,CAAC,KAAK,EAAE4B,KAAAA,CAAMpD,IAAI,CAAC,uBAAuB,EAAEoD,MAAMhC,MAAM,CAACxF,IAAI,CAAA,CAAE,CAAA;AACvG,YAAA,CAAA,CAAA;AACAuH,YAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACf,QAAA;AAEA0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,+DAAA,CAAA;AACX0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACX0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,iDAAA,CAAA;AACX0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,2CAAA,CAAA;AACX0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,EAAA,CAAA;AACX0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,yCAAA,CAAA;AACX0B,QAAAA,KAAAA,CAAM1B,IAAI,CAAC,0DAAA,CAAA;AACf,IAAA;AAEA0B,IAAAA,KAAAA,CAAM1B,IAAI,CAAC,kEAAA,CAAA;IAEX,OAAO0B,KAAAA,CAAMrB,IAAI,CAAC,IAAA,CAAA;AACtB;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eldrforge/kodrdriv",
3
- "version": "1.2.29",
3
+ "version": "1.2.123",
4
4
  "description": "Create Intelligent Release Notes or Change Logs from Git",
5
5
  "main": "dist/main.js",
6
6
  "type": "module",
@@ -16,7 +16,7 @@
16
16
  "start": "dist/main.js",
17
17
  "dev": "vite",
18
18
  "watch": "vite build --watch",
19
- "test": "NODE_OPTIONS='--max-old-space-size=8192' vitest run --coverage",
19
+ "test": "NODE_OPTIONS='--max-old-space-size=4096' vitest run --coverage",
20
20
  "lint": "eslint . --ext .ts",
21
21
  "lint:fix": "eslint . --ext .ts --fix",
22
22
  "clean": "rm -rf dist",
@@ -38,9 +38,10 @@
38
38
  "author": "Calen Varek <calenvarek@gmail.com>",
39
39
  "license": "Apache-2.0",
40
40
  "dependencies": {
41
- "@eldrforge/ai-service": "^0.1.6",
42
- "@eldrforge/git-tools": "^0.1.9",
43
- "@eldrforge/github-tools": "^0.1.12",
41
+ "@eldrforge/ai-service": "^0.1.8",
42
+ "@eldrforge/git-tools": "^0.1.11",
43
+ "@eldrforge/github-tools": "^0.1.14",
44
+ "@eldrforge/shared": "^0.1.1",
44
45
  "@octokit/rest": "^22.0.0",
45
46
  "@riotprompt/riotprompt": "^0.0.8",
46
47
  "@theunwalked/cardigantime": "^0.0.16",
@@ -1,237 +0,0 @@
1
- # AI-Friendly Logging Guide for KodrDriv
2
-
3
- ## Overview
4
-
5
- All log messages in KodrDriv follow a structured pattern to be easily understood by AI agents, MCP-driven tools, and automated systems. This guide documents the standard patterns and provides examples.
6
-
7
- ## Message Format
8
-
9
- ```
10
- OPERATION_STATE: Human-readable description | Key: value | Key2: value2 | Purpose: explanation
11
- ```
12
-
13
- ### Components:
14
-
15
- 1. **Structured Prefix** (`OPERATION_STATE`): Machine-readable operation identifier
16
- 2. **Description**: Human-readable explanation of what's happening
17
- 3. **Key-Value Pairs**: Contextual information separated by pipes (`|`)
18
- 4. **Purpose/Impact/Action**: Why this is happening or what to do next
19
-
20
- ## Naming Conventions
21
-
22
- ###Snake_Case Prefixes
23
-
24
- All operation prefixes use `SNAKE_CASE` with underscores:
25
- - ✅ `PACKAGE_STARTED`
26
- - ✅ `GIT_FETCH_SUCCESS`
27
- - ❌ `PackageStarted`
28
- - ❌ `package-started`
29
-
30
- ### Common Suffixes
31
-
32
- Use consistent suffixes to indicate operation state:
33
- - `_STARTING` / `_STARTED`: Operation beginning
34
- - `_COMPLETE` / `_COMPLETED`: Operation finished successfully
35
- - `_SUCCESS`: Successful completion
36
- - `_FAILED`: Operation failed
37
- - `_ERROR`: Error occurred
38
- - `_WARNING`: Warning condition
39
- - `_SKIPPED`: Operation bypassed
40
- - `_ABORTED`: Operation cancelled
41
- - `_RETRYING` / `_ATTEMPTING`: Retry in progress
42
-
43
- ### Domain Prefixes
44
-
45
- Group related operations with consistent prefixes:
46
- - **Git Operations**: `GIT_FETCH`, `GIT_ADD`, `GIT_COMMIT`, `GIT_PUSH`
47
- - **Branch Operations**: `BRANCH_SYNC`, `BRANCH_CREATE`, `BRANCH_SWITCH`
48
- - **NPM Operations**: `NPM_INSTALL`, `NPM_LINK`, `NPM_LOCK`
49
- - **Package Operations**: `PACKAGE_STARTED`, `PACKAGE_COMPLETED`, `PACKAGE_FAILED`
50
- - **Merge Operations**: `MERGE_STARTING`, `MERGE_CONFLICTS`, `MERGE_SUCCESS`
51
- - **Precheck Operations**: `PRECHECK_STARTING`, `PRECHECK_GIT_STATUS`, `PRECHECK_COMPLETE`
52
-
53
- ## Standard Keys
54
-
55
- Use these standardized keys in key-value pairs:
56
-
57
- | Key | Usage | Example |
58
- |-----|-------|---------|
59
- | `Package` | Package name | `Package: @scope/name` |
60
- | `Status` | Current state | `Status: success` |
61
- | `Error` | Error message | `Error: Connection timeout` |
62
- | `Purpose` | Why operation exists | `Purpose: Validate dependencies` |
63
- | `Action` | What to do next | `Action: Retry operation` |
64
- | `Path` | File/directory path | `Path: /path/to/file` |
65
- | `Command` | Command being run | `Command: npm install` |
66
- | `Branch` | Git branch name | `Branch: main` |
67
- | `Remote` | Git remote name | `Remote: origin` |
68
- | `Count` | Number of items | `Count: 10` |
69
- | `Progress` | Current progress | `Progress: [5/10]` |
70
- | `Duration` | Time taken | `Duration: 1500ms` |
71
- | `Mode` | Operation mode | `Mode: dry-run` |
72
- | `Type` | Item type | `Type: relative_file_dependency` |
73
- | `Reason` | Why something happened | `Reason: No changes detected` |
74
- | `Impact` | Effect of operation | `Impact: Recovery may be affected` |
75
-
76
- ## Examples by Category
77
-
78
- ### Package Execution
79
-
80
- ```typescript
81
- // Starting
82
- logger.info('PACKAGE_STARTED: Package execution initiated | Package: @scope/name | Status: running');
83
-
84
- // Progress
85
- logger.info('PACKAGE_EXECUTING: Running command | Package: test | Progress: [3/10] | Command: npm test');
86
-
87
- // Success
88
- logger.info('PACKAGE_COMPLETED: Package finished successfully | Package: test | Duration: 1500ms | Status: success');
89
-
90
- // Failure
91
- logger.error('PACKAGE_FAILED: Package execution failed | Package: test | Error: Test timeout | Status: failed');
92
-
93
- // Skip
94
- logger.info('PACKAGE_SKIPPED_NO_CHANGES: Package skipped | Package: test | Reason: no-code-changes');
95
- ```
96
-
97
- ### Git Operations
98
-
99
- ```typescript
100
- // Fetch
101
- logger.info('GIT_FETCH_STARTING: Fetching remote information | Remote: origin | Purpose: Avoid conflicts');
102
- logger.info('GIT_FETCH_SUCCESS: Fetched remote successfully | Remote: origin | Status: up-to-date');
103
- logger.warn('GIT_FETCH_FAILED: Unable to fetch remote | Remote: origin | Error: Connection timeout');
104
-
105
- // Branch Sync
106
- logger.info('BRANCH_SYNC_ATTEMPTING: Initiating branch sync | Branch: main | Remote: origin | Operation: fetch + merge');
107
- logger.info('BRANCH_SYNC_SUCCESS: Branch synchronized | Branch: main | Remote: origin | Status: in-sync');
108
- logger.error('BRANCH_SYNC_FAILED: Sync operation failed | Branch: main | Error: Conflicts detected | Impact: Cannot proceed');
109
- ```
110
-
111
- ### NPM Operations
112
-
113
- ```typescript
114
- logger.info('NPM_LINK_DETECTED: Found npm link references | File: package-lock.json | Type: relative_file_dependency');
115
- logger.info('NPM_LINK_CLEANUP_REQUIRED: Npm links must be cleaned | Impact: Must clean before publish');
116
- logger.info('NPM_LOCK_REGENERATED: Successfully regenerated package-lock.json | Path: ./package-lock.json | Status: clean');
117
- ```
118
-
119
- ### Merge Operations
120
-
121
- ```typescript
122
- logger.info('MERGE_STARTING: Initiating merge operation | Target: main | Source: feature-branch');
123
- logger.warn('MERGE_CONFLICTS_DETECTED: Conflicts found | Files: package.json, package-lock.json | Strategy: auto-resolve');
124
- logger.info('MERGE_AUTO_RESOLVING: Automatically resolving conflicts | Strategy: Keep current branch | Files: 2');
125
- logger.info('MERGE_SUCCESS: Merge completed successfully | Target: main | Conflicts Resolved: 2');
126
- ```
127
-
128
- ### Error Handling
129
-
130
- ```typescript
131
- // Recoverable
132
- logger.error('ERROR_RECOVERABLE: This error is recoverable | Action: Retry operation | Status: can-retry');
133
-
134
- // Unexpected
135
- logger.error('ERROR_UNEXPECTED: Unexpected error occurred | Command: publish | Error: message | Type: unexpected');
136
-
137
- // Resolution Steps
138
- logger.error('CONFLICT_RESOLUTION_REQUIRED: Manual intervention needed');
139
- logger.error(' Step 1: Resolve conflicts in files');
140
- logger.error(' Step 2: Stage resolved files | Command: git add <files>');
141
- logger.error(' Step 3: Complete merge | Command: git commit');
142
- ```
143
-
144
- ### Dry Run Mode
145
-
146
- ```typescript
147
- // Always indicate dry-run clearly
148
- logger.info('GIT_ADD_DRY_RUN: Would stage all changes | Mode: dry-run | Command: git add -A');
149
- logger.info('PUSH_DRY_RUN: Would push to remote | Mode: dry-run | Remote: origin | Command: git push');
150
- logger.info('PRECHECK_GIT_REPO: Would verify git repository | Mode: dry-run | Command: git rev-parse --git-dir');
151
- ```
152
-
153
- ### Progress and Metrics
154
-
155
- ```typescript
156
- logger.info('PARALLEL_EXECUTION_STARTING: Initiating parallel execution | Package Count: 10 | Mode: parallel');
157
- logger.info('PROGRESS: [5/10] Package completed: @scope/package');
158
- logger.info('PARALLEL_EXECUTION_COMPLETED: Execution finished | Duration: 45s | Status: completed');
159
-
160
- logger.info('EXECUTION_METRICS: Performance statistics:');
161
- logger.info(' METRIC_TOTAL_PACKAGES: 10');
162
- logger.info(' METRIC_COMPLETED: 8 packages successfully completed');
163
- logger.info(' METRIC_FAILED: 2 packages failed');
164
- logger.info(' METRIC_PEAK_CONCURRENCY: 4 packages running simultaneously');
165
- ```
166
-
167
- ### User Interaction
168
-
169
- ```typescript
170
- logger.info('SENDIT_MODE_ACTIVE: SendIt mode enabled | Action: Commit will execute automatically | Staged Changes: Available');
171
- logger.info('USER_CANCELLATION: Operation cancelled by user | Reason: User aborted | Status: cancelled');
172
- logger.info('COMMIT_NO_ACTION: No commit will be performed | Status: aborted | Next: User can retry');
173
- ```
174
-
175
- ## Migration Checklist
176
-
177
- When updating log messages:
178
-
179
- - [ ] Add structured prefix with SNAKE_CASE
180
- - [ ] Include human-readable description
181
- - [ ] Add relevant key-value pairs with pipe separators
182
- - [ ] Include Purpose, Action, Impact, or Reason when applicable
183
- - [ ] Use consistent key names from standard list
184
- - [ ] Indicate dry-run mode explicitly
185
- - [ ] Provide resolution steps for errors
186
- - [ ] Include progress for iterative operations
187
- - [ ] Add status indicators
188
- - [ ] Remove emojis from structured prefixes (can keep in description)
189
-
190
- ## Bad vs Good Examples
191
-
192
- ### ❌ Bad
193
- ```typescript
194
- logger.info('✅ Completed: test');
195
- logger.warn('⚠️ Could not fetch from remote: timeout');
196
- logger.info('Running command...');
197
- ```
198
-
199
- ### ✅ Good
200
- ```typescript
201
- logger.info('PACKAGE_COMPLETED: Package execution finished | Package: test | Status: success');
202
- logger.warn('GIT_FETCH_FAILED: Unable to fetch from remote | Remote: origin | Error: timeout | Impact: May cause conflicts');
203
- logger.info('PACKAGE_EXECUTING: Running command for package | Package: test | Command: npm test');
204
- ```
205
-
206
- ## Testing
207
-
208
- Run the logging pattern tests:
209
- ```bash
210
- npm test -- tests/logging/aiFriendlyLogging.test.ts
211
- ```
212
-
213
- All 27 tests should pass, validating:
214
- - Message format
215
- - Prefix naming
216
- - Key-value pairs
217
- - Semantic operations
218
- - Context inclusion
219
- - Error recovery info
220
- - Machine-readable markers
221
-
222
- ## Benefits for AI Agents
223
-
224
- 1. **Easy Parsing**: Structured format enables regex-based extraction
225
- 2. **State Tracking**: Operation prefixes indicate current workflow state
226
- 3. **Context Understanding**: Key-value pairs provide necessary details
227
- 4. **Decision Making**: Action/Impact fields guide next steps
228
- 5. **Error Recovery**: Explicit resolution steps and alternatives
229
- 6. **Progress Monitoring**: Standardized progress indicators
230
-
231
- ## References
232
-
233
- - Test Suite: `tests/logging/aiFriendlyLogging.test.ts`
234
- - Implementation Examples: All `src/commands/*.ts` files
235
- - Execution Logging: `src/execution/TreeExecutionAdapter.ts`
236
- - Error Handling: `src/util/errorHandler.ts`
237
-