@homeflare/alchemy 0.55.0 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1457,7 +1457,9 @@ var canRead = (file, uid, groups) => {
1457
1457
  return;
1458
1458
  return groups.includes(file.gid) ? groupRead : otherRead;
1459
1459
  };
1460
- var assertReadableBack = async (base, path, options, groups) => {
1460
+ var assertReadableBack = async (base, path, options, groups, readAsRoot = false) => {
1461
+ if (readAsRoot)
1462
+ return;
1461
1463
  const operator = base.effectiveUid();
1462
1464
  const parent = path.slice(0, path.lastIndexOf("/")) || "/";
1463
1465
  const gid = options.gid ?? (await base.stat(parent))?.gid ?? 0;
@@ -1707,5 +1709,5 @@ export {
1707
1709
  sudoRunner
1708
1710
  };
1709
1711
 
1710
- //# debugId=E276C6F9F945B90864756E2164756E21
1712
+ //# debugId=ADCD8FCE0424605B64756E2164756E21
1711
1713
  //# sourceMappingURL=index.js.map
@@ -27,13 +27,13 @@
27
27
  "/**\n * Both launchd-subpath providers with one HostRunner, as a single layer for a host stack.\n *\n * Layer.mergeAll(launchdProviders(), …the stack's other providers)\n *\n * ★ ONE RUNNER FOR BOTH, so a daemon's config file (HostFile) and the daemon (LaunchdJob) are\n * written by the same identity on the same host — a stack cannot write the file as one user and\n * bootstrap the job as another by accident.\n * ⚠️ The default is localRunner(): this process, never elevated. A system-domain job therefore\n * needs the deploy itself started as root, or a runner passed here with `privileged: true` —\n * `launchdProviders(sudoRunner({ prefixes }))` is the kit's own (sudo-runner.ts).\n */\nimport * as Layer from 'effect/Layer';\nimport { HostFileProvider } from './host-file.ts';\nimport { LaunchdJobProvider } from './job.ts';\nimport { localRunner } from './local-runner.ts';\nimport { type HostRunner, hostRunnerLayer } from './runner.ts';\n\nexport const launchdProviders = (runner: HostRunner = localRunner()) =>\n Layer.mergeAll(LaunchdJobProvider(), HostFileProvider()).pipe(\n Layer.provide(hostRunnerLayer(runner)),\n );\n",
28
28
  "/**\n * Everything sudo-runner.ts may run as root, as exact argv shapes, plus the rule for which calls\n * need root at all. Pure: no I/O, so every shape is tested without sudo (sudo-allowlist.test.ts).\n *\n * ⛔ AN ALLOWLIST OF SHAPES, NOT OF PROGRAMS. Allowing \"launchctl\" would allow `bootout system` with\n * no service, which removes the whole system domain, and `bootstrap system <directory>`, which\n * loads every plist in that directory (launchctl(1), read on macOS 27.2 on 2026-09-21). Each shape\n * below fixes the subcommand, the domain, the flags and the number of operands, so neither of\n * those can be written.\n * ⛔ PATHS ARE CHECKED LEXICALLY HERE: absolute, normalised (the same rule a HostFile path obeys,\n * host-file-form.ts) and STRICTLY under a prefix the stack declared. sudo-guard.ts then checks\n * the host with lstat: the prefix a root-only directory, no symlinks, and only regular files.\n * ⛔ `install` COPIES ONLY THE FILE THIS RUNNER STAGED. Any other source would let the runner copy\n * a file only root can read (/etc/master.passwd, say) to a path the deploying user can read.\n */\nimport { pathProblems } from './host-file-form.ts';\nimport { plistPathFor } from './job-form.ts';\nimport { LABEL, RESERVED_LABEL_PREFIXES } from './job-validate.ts';\nimport { LAUNCHCTL } from './launchctl.ts';\n\n/**\n * A privileged call that was refused before it ran: by the allowlist, by a host check\n * (sudo-guard.ts), or by sudo itself. ★ Here, beside the allowlist, so the guard and the runner\n * throw the same class and a caller can tell \"nothing ran as root\" from \"it ran and failed\".\n */\nexport class SudoRefusedError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'SudoRefusedError';\n }\n}\n\n/** ★ Absolute program paths, so neither sudo nor the command is looked up on the caller's PATH. */\nexport const SUDO = '/usr/bin/sudo';\nexport const INSTALL = '/usr/bin/install';\nexport const RM = '/bin/rm';\n\n/** The launchctl subcommands that change a domain. Everything else launchctl does is a read. */\nconst WRITES: ReadonlySet<string> = new Set(['bootstrap', 'bootout', 'kickstart']);\n\n/** A mode as `install -m` takes it: four octal digits, so `0644` and `4755` are both exact. */\nexport const octalMode = (mode: number): string | undefined =>\n Number.isSafeInteger(mode) && mode >= 0 && mode <= 0o7777\n ? mode.toString(8).padStart(4, '0')\n : undefined;\n\n/** Validate the stack's prefixes once, when the runner is built. */\nexport const checkPrefixes = (prefixes: readonly string[]): readonly string[] => {\n if (prefixes.length === 0) {\n throw new Error(\n 'sudoRunner: no prefixes. Name the directories root may write, e.g. /Library/LaunchDaemons.',\n );\n }\n for (const prefix of prefixes) {\n const found = prefix === '/' ? ['\"/\" would allow every path'] : pathProblems(prefix);\n if (found.length > 0) {\n throw new Error(`sudoRunner: prefix ${JSON.stringify(prefix)}: ${found.join('; ')}`);\n }\n }\n return [...prefixes];\n};\n\n/**\n * The declared prefix `path` is strictly under, or `undefined`.\n * ⚠️ `${prefix}/`, never a bare startsWith: `/opt/example` must not admit `/opt/example-other`.\n */\nexport const prefixOf = (path: string, prefixes: readonly string[]): string | undefined =>\n pathProblems(path).length > 0\n ? undefined\n : prefixes.find((prefix) => path.startsWith(`${prefix}/`));\n\nconst labelOk = (label: string): boolean =>\n LABEL.test(label) && !RESERVED_LABEL_PREFIXES.some((prefix) => label.startsWith(prefix));\n\n/** The label of `system/<label>`, when it is one LaunchdJob itself would accept. */\nconst systemLabel = (target: string | undefined): string | undefined => {\n const label = target?.startsWith('system/') === true ? target.slice('system/'.length) : undefined;\n return label !== undefined && labelOk(label) ? label : undefined;\n};\n\n/**\n * A label's daemon plist, when that path is under a declared prefix.\n * ★ ONLY `/Library/LaunchDaemons/<label>.plist`, derived by the same plistPathFor LaunchdJob uses:\n * it is the one directory launchd loads daemons from at boot, so a plist anywhere else under a\n * prefix would be a root daemon that silently vanishes at the next restart. Root never loads one.\n */\nconst daemonPlist = (label: string, prefixes: readonly string[]): string | undefined => {\n const path = plistPathFor(label, { kind: 'system' }, undefined);\n return prefixOf(path, prefixes) === undefined ? undefined : path;\n};\n\nconst NO_DAEMON_PREFIX =\n 'needs /Library/LaunchDaemons among the prefixes, where the job’s plist is written and removed';\n\nconst launchctlProblem = (\n args: readonly string[],\n prefixes: readonly string[],\n): string | undefined => {\n const [sub, ...rest] = args;\n if (sub === 'bootstrap') {\n const given = rest[1] ?? '';\n const name = given.slice(given.lastIndexOf('/') + 1);\n const label = name.endsWith('.plist') ? name.slice(0, -'.plist'.length) : '';\n const shaped = rest.length === 2 && rest[0] === 'system' && labelOk(label);\n if (!shaped) return 'bootstrap takes exactly `system /Library/LaunchDaemons/<label>.plist`';\n const plist = daemonPlist(label, prefixes);\n if (plist === undefined) return `bootstrap ${NO_DAEMON_PREFIX}`;\n return given === plist ? undefined : `bootstrap loads only ${plist}, never another path`;\n }\n if (sub === 'bootout') {\n const label = rest.length === 1 ? systemLabel(rest[0]) : undefined;\n if (label === undefined) return 'bootout takes exactly `system/<label>`, never a bare domain';\n /**\n * ⚠️ WITHOUT THE PREFIX, A DELETE STOPS HALFWAY. deleteJob boots the job out, then removes its\n * plist; with /Library/LaunchDaemons undeclared the removal is refused AFTER the bootout, the\n * plist stays, and launchd loads the job again at the next boot. Refused here, nothing moves.\n */\n return daemonPlist(label, prefixes) === undefined ? `bootout ${NO_DAEMON_PREFIX}` : undefined;\n }\n if (sub === 'kickstart') {\n const flags = rest.slice(0, -1);\n const flagsOk =\n flags.every((flag) => flag === '-k' || flag === '-p') && new Set(flags).size === flags.length;\n return flagsOk && systemLabel(rest[rest.length - 1]) !== undefined\n ? undefined\n : 'kickstart takes only -k / -p, then `system/<label>`';\n }\n return `launchctl ${String(sub)} is never run as root`;\n};\n\nconst ID = /^\\d+$/;\n\n/** `install`'s optional owner flags: none, `-o N`, `-g N`, or `-o N -g N`. Numeric ids only. */\nconst idsOk = (ids: readonly string[]): boolean => {\n const [flag, id, second, secondId] = ids;\n if (ids.length === 0) return true;\n if (ids.length === 2) return (flag === '-o' || flag === '-g') && ID.test(id ?? '');\n return (\n ids.length === 4 &&\n flag === '-o' &&\n ID.test(id ?? '') &&\n second === '-g' &&\n ID.test(secondId ?? '')\n );\n};\n\n/** The one source `install` may copy and the prefixes, for the call being checked. */\nexport type AllowContext = { readonly prefixes: readonly string[]; readonly staged?: string };\n\n/** `undefined` when `argv` is exactly an allowed privileged shape, else the reason it is not. */\nexport const privilegedProblem = (\n argv: readonly string[],\n context: AllowContext,\n): string | undefined => {\n const [program, ...args] = argv;\n const under = (path: string | undefined) =>\n path !== undefined && prefixOf(path, context.prefixes) !== undefined;\n if (program === LAUNCHCTL) return launchctlProblem(args, context.prefixes);\n if (program === INSTALL) {\n // -S -m MODE [-o UID] [-g GID] STAGED DEST: nothing else, in this order.\n const [safe, m, mode, ...rest] = args;\n if (safe !== '-S' || m !== '-m' || mode === undefined || !/^[0-7]{4}$/.test(mode)) {\n return 'install takes exactly `-S -m <4 octal digits> [-o <uid>] [-g <gid>] <staged> <dest>`';\n }\n if (rest.length < 2 || !idsOk(rest.slice(0, -2))) return 'install takes only -o <uid> -g <gid>';\n const [source, dest] = rest.slice(-2);\n if (source === undefined || source !== context.staged) {\n return 'install copies only the file this runner staged';\n }\n return under(dest) ? undefined : 'install destination is not under a declared prefix';\n }\n if (program === RM) {\n const [force, end, path, ...extra] = args;\n return force === '-f' && end === '--' && extra.length === 0 && under(path)\n ? undefined\n : 'rm takes exactly `-f -- <path under a declared prefix>`';\n }\n return `${String(program)} is not on the sudo allowlist`;\n};\n\n/** Where one exec goes: run as the deploying user, run as root through the allowlist, or refused. */\nexport type Route =\n | { readonly as: 'operator' }\n | { readonly as: 'root' }\n | { readonly refuse: string };\n\n/**\n * ★ WHY THIS REFUSES AS WELL AS ROUTES. sudoRunner reports `privileged: true`, which switches off\n * the providers' own \"another user's gui domain needs root\" refusal (job-preflight.ts). This\n * runner elevates only the system domain, so it gives that refusal back itself. (A write into\n * another user's LaunchAgents is refused by the writer first: outside every prefix, a foreign\n * owner needs root. This covers the delete, which reaches launchctl before any file.)\n * ⚠️ Reads (`print`, `print-disabled`) always run as the deploying user: launchctl(1) says anyone\n * may read or query the system domain, and launchctl.ts measured it on 2026-09-21.\n */\nexport const routeExec = (argv: readonly string[], operatorUid: number): Route => {\n const [program, sub] = argv;\n if (program === 'sudo' || program?.endsWith('/sudo') === true) {\n return {\n refuse: 'sudoRunner never passes a sudo argv through; it elevates only its allowlist',\n };\n }\n if (program !== LAUNCHCTL || sub === undefined || !WRITES.has(sub)) return { as: 'operator' };\n const target = sub === 'kickstart' ? argv[argv.length - 1] : argv[2];\n if (target === 'system' || target?.startsWith('system/') === true) return { as: 'root' };\n const owner = /^(?:gui|user)\\/(\\d+)(?:\\/|$)/.exec(target ?? '')?.[1];\n if (owner === undefined || Number(owner) === operatorUid) return { as: 'operator' };\n return {\n refuse:\n `launchctl ${sub} ${String(target)}: that domain belongs to uid ${owner}, and sudoRunner ` +\n 'elevates only the system domain. Deploy as that user, or as root.',\n };\n};\n",
29
29
  "/**\n * The ACL half of sudo-guard.ts: mode bits say a directory is root's alone, and an ACL can say\n * otherwise. On macOS an `allow add_file,add_subdirectory,delete_child` entry lets its holder swap\n * what lies under a root-owned `0755` directory — a symlink where the file was — between the\n * guard's lstat checks and the privileged call, exactly as group write would. An inheritable\n * `allow write` hands every file root installs there to its holder.\n *\n * ★ READ WITH `ls -lden`, AS THE OPERATOR — no sudo, and the same read at plan time and before the\n * write. MEASURED 2026-09-21 on macOS 27.2: each entry prints on its own line after the path's,\n * as ` 0: <qualifier> [inherited ]allow|deny <perms>`; `-n` makes the qualifier a UUID, never a\n * name with a space in it. The `+` flag after the mode is NOT reliable — `@` (extended\n * attributes) replaces it in the listing — so the entries are what is read.\n * ⚠️ A DENY ENTRY GRANTS NOTHING (macOS puts `everyone deny delete` on home folders), and an allow\n * of read-only rights (`list`, `search`, `readattr` …) swaps nothing, so neither refuses.\n */\nimport type { HostRunner } from './runner.ts';\nimport { SudoRefusedError } from './sudo-allowlist.ts';\n\nexport const LS = '/bin/ls';\n\n/** Rights that let the holder add, remove, rename or re-permission what a directory holds. */\nconst WRITE_RIGHTS: ReadonlySet<string> = new Set([\n 'add_file',\n 'add_subdirectory',\n 'append',\n 'chown',\n 'delete',\n 'delete_child',\n 'write',\n 'writesecurity',\n]);\n\nconst ENTRY = /^\\s*\\d+:\\s+\\S+\\s+(?:inherited\\s+)?allow\\s+(\\S+)/;\n\n/** The allow entries in `ls -lden` output that grant a write right, as printed. */\nexport const aclGrants = (listing: string): string[] =>\n listing\n .split('\\n')\n .filter((line) => {\n const rights = ENTRY.exec(line)?.[1];\n return rights !== undefined && rights.split(',').some((right) => WRITE_RIGHTS.has(right));\n })\n .map((line) => line.trim());\n\n/**\n * ⛔ Refuse when any directory in `chain` carries an ACL entry that lets someone write it, or when\n * the ACLs cannot be read at all (fail closed). `path` names the file in the refusal.\n */\nexport const assertNoAclGrants = async (\n base: HostRunner,\n path: string,\n chain: readonly string[],\n): Promise<void> => {\n const listed = await base.exec([LS, '-lden', '--', ...chain]);\n if (listed.exitCode !== 0) {\n throw new SudoRefusedError(\n `sudoRunner ${path}: could not read the ACLs of the directories from / down to it ` +\n `(${LS} -lden exit ${String(listed.exitCode)}). Nothing ran as root.`,\n );\n }\n const grants = aclGrants(listed.stdout);\n if (grants.length === 0) return;\n throw new SudoRefusedError(\n `sudoRunner ${path}: a directory from / down to it carries an ACL that lets someone other ` +\n `than root change what it holds (${grants.join('; ')}). Remove the entry (chmod -a), or ` +\n 'declare a prefix without one. Nothing ran as root.',\n );\n};\n",
30
- "/**\n * The mode/owner and read-back half of sudo-guard.ts, split out to keep that file under the\n * house's 250-line cap. `assertPlainPath` (path chain) stays there; this is \"is the mode/owner\n * safe, and can the deploying user read the result back\" — re-exported from sudo-guard.ts so\n * nothing importing from there has to know this file exists.\n */\nimport type { HostRunner, WriteOptions } from './runner.ts';\nimport { SudoRefusedError } from './sudo-allowlist.ts';\n\nconst refuse = (path: string, message: string): Error =>\n new SudoRefusedError(`sudoRunner ${path}: ${message}`);\n\n/**\n * ⛔ A ROOT-OWNED FILE UNDER A PREFIX IS ROOT'S TO CHANGE, AND ONLY ROOT'S (decided 2026-09-21).\n * Group- or world-writable, anyone in that class rewrites a file root installed — a daemon's\n * config, a script a LaunchDaemon runs as root — which is root by another name. Setuid or setgid,\n * it runs as root (or its group) for whoever executes it. install(1) would apply either, as root.\n * ★ Root-owned is an omitted owner (the runner installs as root under a prefix) or uid 0. A file\n * handed to another user is that user's to change; the sticky bit changes nothing on a file.\n * 🔴 MEASURED (adversarial review, 2026-09-23, round 1): \"handed to another user\" checked only\n * `uid`, never `gid`. `{ uid: 501, gid: 0, mode: 0o2775 }` — a setgid file owned by an\n * unprivileged uid but GROUPED to root — passed untouched, because a non-zero uid alone skipped\n * every check below. Fixed by also treating `gid: 0` as root-adjacent.\n * 🔴 MEASURED (adversarial review, round 2, same day): the round-1 fix still missed an OMITTED\n * `gid`. `remote-file-plan.ts`'s `identity()` returns no `gid` key at all when a `RemoteFile`\n * declares no `group`, so `{ uid: 501, mode: 0o2775 }` reaches this check with `gid: undefined`\n * — neither `0` nor genuinely someone else's. `sudo-write.ts` then omits `-g` from `install`\n * entirely, and GNU `install`, run as root via `sudo -n`, defaults an omitted `-g` to the\n * INVOKING PROCESS's group — root's own — whenever the destination directory is not itself\n * setgid (which none of this runner's declared prefixes are, measured in linux-host-measured.md).\n * The file lands exactly as `{ uid: 501, gid: 0, mode: 0o2775 }` — the identical escalation the\n * round-1 fix closed, reached by OMISSION instead of an explicit `group: 0`. So \"root-adjacent\"\n * now also means an omitted `gid`: only a file with a genuinely non-root, EXPLICITLY GIVEN owner\n * AND group is someone else's alone to make setuid/setgid or writable — an omission is never\n * read as a safe default on either side, uid or gid.\n */\nexport const modeProblem = (options: WriteOptions): string | undefined => {\n const rootAdjacent =\n options.uid === undefined ||\n options.uid === 0 ||\n options.gid === undefined ||\n options.gid === 0;\n if (!rootAdjacent) return undefined;\n const found: string[] = [];\n if ((options.mode & 0o6000) !== 0) found.push('setuid/setgid');\n if ((options.mode & 0o022) !== 0) found.push('writable by group or other');\n if (found.length === 0) return undefined;\n return `mode ${options.mode.toString(8).padStart(4, '0')} is ${found.join(' and ')} on a root-owned file`;\n};\n\n/**\n * POSIX read permission for one uid: owner class, else group class, else other. `undefined` when\n * only group membership could decide and the groups are unknown.\n * ⚠️ EXACTLY ONE CLASS APPLIES. A group member gets the group bits even when the other bits are\n * wider (`0604` hides a file from its group), so \"other can read\" is not enough on its own.\n */\nexport const canRead = (\n file: { readonly uid: number; readonly gid: number; readonly mode: number },\n uid: number,\n groups: readonly number[] | undefined,\n): boolean | undefined => {\n if (uid === 0) return true;\n if (file.uid === uid) return (file.mode & 0o400) !== 0;\n const groupRead = (file.mode & 0o040) !== 0;\n const otherRead = (file.mode & 0o004) !== 0;\n // Membership cannot change the answer when both classes agree.\n if (groupRead === otherRead) return groupRead;\n if (groups === undefined) return undefined;\n return groups.includes(file.gid) ? groupRead : otherRead;\n};\n\n/**\n * ⛔ REFUSE A FILE THE DEPLOYING USER COULD NOT READ BACK, before writing it. Both providers read\n * every write back to verify it (host-file-lifecycle.ts, job-lifecycle.ts) and read it again at\n * every plan, as the deploying user; this runner elevates writes, never reads. A root-only\n * `0600` would be installed, then fail the read-back with EACCES and stay on disk with no state,\n * so every later plan would fail too.\n * ★ An omitted owner is root (under a prefix the runner writes as root). An omitted group is the\n * parent directory's, which is the group a new file gets on macOS.\n * ⚠️ Unknown groups never refuse: the read-back after the write stays the final judge.\n */\nexport const assertReadableBack = async (\n base: HostRunner,\n path: string,\n options: WriteOptions,\n groups: readonly number[] | undefined,\n): Promise<void> => {\n const operator = base.effectiveUid();\n const parent = path.slice(0, path.lastIndexOf('/')) || '/';\n const gid = options.gid ?? (await base.stat(parent))?.gid ?? 0;\n const file = { gid, mode: options.mode, uid: options.uid ?? 0 };\n if (canRead(file, operator, groups) !== false) return;\n throw refuse(\n path,\n `owner ${String(file.uid)}, group ${String(gid)}, mode ${file.mode.toString(8)} would hide it ` +\n `from the deploying user (uid ${String(operator)}), who reads every file back. Declare a ` +\n 'mode that user can read, or deploy as root. Nothing was written.',\n );\n};\n\n/**\n * The deploying user's groups, from `id -G`; `undefined` when that fails.\n * ⚠️ NOT process.getgroups(). MEASURED 2026-09-21 on macOS 27.2: getgroups() returned 16 groups\n * where `id -G` returned 18, because macOS caps a process's own list at 16. A group past the\n * 16th would read as \"not a member\" and refuse a file the user can in fact read.\n */\nexport const operatorGroups = async (base: HostRunner): Promise<readonly number[] | undefined> => {\n const result = await base.exec(['/usr/bin/id', '-G']);\n const ids = result.stdout.trim().split(/\\s+/);\n return result.exitCode === 0 && ids.every((id) => /^\\d+$/.test(id)) ? ids.map(Number) : undefined;\n};\n",
30
+ "/**\n * The mode/owner and read-back half of sudo-guard.ts, split out to keep that file under the\n * house's 250-line cap. `assertPlainPath` (path chain) stays there; this is \"is the mode/owner\n * safe, and can the deploying user read the result back\" — re-exported from sudo-guard.ts so\n * nothing importing from there has to know this file exists.\n */\nimport type { HostRunner, WriteOptions } from './runner.ts';\nimport { SudoRefusedError } from './sudo-allowlist.ts';\n\nconst refuse = (path: string, message: string): Error =>\n new SudoRefusedError(`sudoRunner ${path}: ${message}`);\n\n/**\n * ⛔ A ROOT-OWNED FILE UNDER A PREFIX IS ROOT'S TO CHANGE, AND ONLY ROOT'S (decided 2026-09-21).\n * Group- or world-writable, anyone in that class rewrites a file root installed — a daemon's\n * config, a script a LaunchDaemon runs as root — which is root by another name. Setuid or setgid,\n * it runs as root (or its group) for whoever executes it. install(1) would apply either, as root.\n * ★ Root-owned is an omitted owner (the runner installs as root under a prefix) or uid 0. A file\n * handed to another user is that user's to change; the sticky bit changes nothing on a file.\n * 🔴 MEASURED (adversarial review, 2026-09-23, round 1): \"handed to another user\" checked only\n * `uid`, never `gid`. `{ uid: 501, gid: 0, mode: 0o2775 }` — a setgid file owned by an\n * unprivileged uid but GROUPED to root — passed untouched, because a non-zero uid alone skipped\n * every check below. Fixed by also treating `gid: 0` as root-adjacent.\n * 🔴 MEASURED (adversarial review, round 2, same day): the round-1 fix still missed an OMITTED\n * `gid`. `remote-file-plan.ts`'s `identity()` returns no `gid` key at all when a `RemoteFile`\n * declares no `group`, so `{ uid: 501, mode: 0o2775 }` reaches this check with `gid: undefined`\n * — neither `0` nor genuinely someone else's. `sudo-write.ts` then omits `-g` from `install`\n * entirely, and GNU `install`, run as root via `sudo -n`, defaults an omitted `-g` to the\n * INVOKING PROCESS's group — root's own — whenever the destination directory is not itself\n * setgid (which none of this runner's declared prefixes are, measured in linux-host-measured.md).\n * The file lands exactly as `{ uid: 501, gid: 0, mode: 0o2775 }` — the identical escalation the\n * round-1 fix closed, reached by OMISSION instead of an explicit `group: 0`. So \"root-adjacent\"\n * now also means an omitted `gid`: only a file with a genuinely non-root, EXPLICITLY GIVEN owner\n * AND group is someone else's alone to make setuid/setgid or writable — an omission is never\n * read as a safe default on either side, uid or gid.\n */\nexport const modeProblem = (options: WriteOptions): string | undefined => {\n const rootAdjacent =\n options.uid === undefined ||\n options.uid === 0 ||\n options.gid === undefined ||\n options.gid === 0;\n if (!rootAdjacent) return undefined;\n const found: string[] = [];\n if ((options.mode & 0o6000) !== 0) found.push('setuid/setgid');\n if ((options.mode & 0o022) !== 0) found.push('writable by group or other');\n if (found.length === 0) return undefined;\n return `mode ${options.mode.toString(8).padStart(4, '0')} is ${found.join(' and ')} on a root-owned file`;\n};\n\n/**\n * POSIX read permission for one uid: owner class, else group class, else other. `undefined` when\n * only group membership could decide and the groups are unknown.\n * ⚠️ EXACTLY ONE CLASS APPLIES. A group member gets the group bits even when the other bits are\n * wider (`0604` hides a file from its group), so \"other can read\" is not enough on its own.\n */\nexport const canRead = (\n file: { readonly uid: number; readonly gid: number; readonly mode: number },\n uid: number,\n groups: readonly number[] | undefined,\n): boolean | undefined => {\n if (uid === 0) return true;\n if (file.uid === uid) return (file.mode & 0o400) !== 0;\n const groupRead = (file.mode & 0o040) !== 0;\n const otherRead = (file.mode & 0o004) !== 0;\n // Membership cannot change the answer when both classes agree.\n if (groupRead === otherRead) return groupRead;\n if (groups === undefined) return undefined;\n return groups.includes(file.gid) ? groupRead : otherRead;\n};\n\n/**\n * ⛔ REFUSE A FILE THE DEPLOYING USER COULD NOT READ BACK, before writing it. Both providers read\n * every write back to verify it (host-file-lifecycle.ts, job-lifecycle.ts) and read it again at\n * every plan, as the deploying user; a runner that elevates writes but no reads strands a\n * root-only `0600` on disk — installed, failing the read-back with EACCES, with no state, so\n * every later plan would fail too.\n * ★ `readAsRoot` IS THE ONE EXCEPTION, and it is not this guard's to grant: the caller passes it\n * only when the RUNNER reads this exact path back through a privileged read (the linux\n * sshSudoRunner's `privilegedReads` list names the file, so its readFile goes through\n * `sudo -n base64`). The read-back then cannot fail with EACCES whatever the mode is, and the\n * refusal would be false; every other check — setuid/setgid, group-writable, the path chain —\n * still applies to that file exactly as before.\n * ★ An omitted owner is root (under a prefix the runner writes as root). An omitted group is the\n * parent directory's, which is the group a new file gets on macOS.\n * ⚠️ Unknown groups never refuse: the read-back after the write stays the final judge.\n */\nexport const assertReadableBack = async (\n base: HostRunner,\n path: string,\n options: WriteOptions,\n groups: readonly number[] | undefined,\n readAsRoot = false,\n): Promise<void> => {\n if (readAsRoot) return;\n const operator = base.effectiveUid();\n const parent = path.slice(0, path.lastIndexOf('/')) || '/';\n const gid = options.gid ?? (await base.stat(parent))?.gid ?? 0;\n const file = { gid, mode: options.mode, uid: options.uid ?? 0 };\n if (canRead(file, operator, groups) !== false) return;\n throw refuse(\n path,\n `owner ${String(file.uid)}, group ${String(gid)}, mode ${file.mode.toString(8)} would hide it ` +\n `from the deploying user (uid ${String(operator)}), who reads every file back. Declare a ` +\n 'mode that user can read, or deploy as root. Nothing was written.',\n );\n};\n\n/**\n * The deploying user's groups, from `id -G`; `undefined` when that fails.\n * ⚠️ NOT process.getgroups(). MEASURED 2026-09-21 on macOS 27.2: getgroups() returned 16 groups\n * where `id -G` returned 18, because macOS caps a process's own list at 16. A group past the\n * 16th would read as \"not a member\" and refuse a file the user can in fact read.\n */\nexport const operatorGroups = async (base: HostRunner): Promise<readonly number[] | undefined> => {\n const result = await base.exec(['/usr/bin/id', '-G']);\n const ids = result.stdout.trim().split(/\\s+/);\n return result.exitCode === 0 && ids.every((id) => /^\\d+$/.test(id)) ? ids.map(Number) : undefined;\n};\n",
31
31
  "/**\n * The checks sudo-runner.ts makes against the host, as the deploying user, before it runs anything\n * as root. sudo-allowlist.ts checks the argv; this checks what the paths in it actually are.\n *\n * ⛔ WHAT IS LOGGED IS WHAT IS WRITTEN. A symlinked directory under a prefix would make\n * `install` or `rm`, running as root, act on a path the log never named. So every directory\n * between the prefix and the file must be a real directory.\n * ⛔ EVERY DIRECTORY FROM THE PREFIX DOWN IS ROOT'S ALONE (decided 2026-09-21). A directory below\n * the prefix that another user owns, or that group or other may write, lets that user swap what\n * lies under it — a symlink where the file was — between these checks and the privileged call.\n * So each one must be owned by root and not group/other-writable (rootOnlyProblem), exactly as\n * the prefix itself must.\n * ⛔ AND EVERY DIRECTORY ABOVE THE PREFIX (red team, 2026-09-21). Whoever may write the prefix's\n * parent may rename the prefix away and put a symlink in its place between these checks and the\n * privileged call — the same swap one level up. So `/` down to the prefix's parent must be\n * root-only too (a root-owned symlink among them, `/etc` -> `private/etc`, is root's own and is\n * followed; its target is root's choice, and not walked).\n * ⛔ AND NO ACL THAT SAYS OTHERWISE (sudo-acl.ts): mode bits are not the whole answer on macOS.\n * ⚠️ These checks run before the privileged call, as the deploying user. They guard against a\n * mistaken declaration and against every user but root; root itself could still change a path\n * in that window.\n */\nimport type { FileStat, HostRunner, WriteOptions } from './runner.ts';\nimport { assertNoAclGrants } from './sudo-acl.ts';\nimport { SudoRefusedError } from './sudo-allowlist.ts';\nimport { assertReadableBack, modeProblem } from './sudo-guard-mode.ts';\n\nexport { assertReadableBack, canRead, modeProblem, operatorGroups } from './sudo-guard-mode.ts';\n\nconst refuse = (path: string, message: string): Error =>\n new SudoRefusedError(`sudoRunner ${path}: ${message}`);\n\n/** The directories strictly between `prefix` and the file at `path`. */\nexport const betweenDirs = (prefix: string, path: string): string[] => {\n const parts = path\n .slice(prefix.length + 1)\n .split('/')\n .slice(0, -1);\n return parts.map((_, index) => `${prefix}/${parts.slice(0, index + 1).join('/')}`);\n};\n\n/** The directories strictly above `prefix`: `/`, then each one down to the prefix's parent. */\nexport const aboveDirs = (prefix: string): string[] => {\n const parts = prefix.split('/').slice(1, -1);\n return ['/', ...parts.map((_, index) => `/${parts.slice(0, index + 1).join('/')}`)];\n};\n\n/**\n * What must be at `path` itself: a regular file, or (for a write or a remove) nothing yet.\n * ⚠️ A DIRECTORY AT THE DESTINATION IS THE TRAP: `install src dir` copies INTO the directory\n * (install(1)), and install decides that with stat, so a symlink to a directory does the same.\n */\nexport type Expect = 'file' | 'file-or-absent';\n\n/**\n * ⛔ THE PREFIX, AND EVERY DIRECTORY BELOW IT ON THE WAY TO THE FILE, MUST BE A DIRECTORY ONLY ROOT\n * CAN CHANGE, checked at every call rather than trusted from the declaration. A symlinked prefix makes root write wherever it points, which the\n * log never names (`/opt/example` -> `/etc` turns a HostFile at `/opt/example/sudoers` into\n * `/etc/sudoers`). A prefix another user owns or may write lets that user swap a directory below\n * it for a symlink between this check and the privileged call.\n * ⚠️ lstat of the prefix itself: a symlink ABOVE it (`/etc` -> `/private/etc` on macOS) is the\n * system's and is followed, as every path lookup does — when root owns it (aboveDirs).\n * ★ MEASURED 2026-09-21 on macOS 27.2 (`ls -ldn`): /Library/LaunchDaemons, /private/etc, /opt and\n * /usr/local are uid 0, mode 0755, so the prefixes a host stack declares pass as they are.\n */\nconst rootOnlyProblem = (stat: FileStat | undefined): string | undefined => {\n if (stat === undefined) return 'is missing';\n if (stat.kind !== 'directory') return `is a ${stat.kind}, not a directory`;\n if (stat.uid !== 0) return `is owned by uid ${String(stat.uid)}, not root`;\n if ((stat.mode & 0o022) !== 0) {\n return `is writable by group or other (mode ${stat.mode.toString(8).padStart(4, '0')})`;\n }\n return undefined;\n};\n\n/**\n * Refuse a prefix that is not a root-only directory, a symlink or a non-directory between the\n * prefix and `path`, and anything but a file at it.\n */\nexport const assertPlainPath = async (\n base: HostRunner,\n prefix: string,\n path: string,\n expect: Expect,\n): Promise<'file' | 'absent'> => {\n const above = aboveDirs(prefix);\n for (const [index, stat] of (await Promise.all(above.map((dir) => base.stat(dir)))).entries()) {\n const up = stat?.kind === 'symlink' && stat.uid === 0 ? undefined : rootOnlyProblem(stat);\n if (up !== undefined) {\n throw refuse(\n path,\n `${String(above[index])}, above the declared prefix ${prefix}, ${up}. Whoever may change it ` +\n 'may swap the prefix itself; every directory from / down must be root-only. Nothing ran as root.',\n );\n }\n }\n const dirs = betweenDirs(prefix, path);\n const [prefixStat, ...stats] = await Promise.all([prefix, ...dirs].map((dir) => base.stat(dir)));\n const bad = rootOnlyProblem(prefixStat);\n if (bad !== undefined) {\n throw refuse(\n path,\n `the declared prefix ${prefix} ${bad}. Declare only a real directory that root owns and ` +\n 'only root may write. Nothing ran as root.',\n );\n }\n for (const [index, stat] of stats.entries()) {\n const dir = String(dirs[index]);\n if (stat?.kind !== 'directory') {\n throw refuse(\n path,\n `${dir} is ${stat === undefined ? 'missing' : `a ${stat.kind}`}; root ` +\n 'writes only through real directories under a declared prefix.',\n );\n }\n const below = rootOnlyProblem(stat);\n if (below !== undefined) {\n throw refuse(\n path,\n `${dir} ${below}. Every directory from the prefix ${prefix} down to the file must be one ` +\n 'that root owns and only root may write. Nothing ran as root.',\n );\n }\n }\n await assertNoAclGrants(base, path, [...above, prefix, ...dirs]);\n const target = await base.stat(path);\n if (target === undefined && expect === 'file-or-absent') return 'absent';\n if (target?.kind === 'file') return 'file';\n throw refuse(path, `is ${target === undefined ? 'missing' : `a ${target.kind}`}, not a file`);\n};\n\n/**\n * Every check a write under `prefix` meets before anything is staged or run as root: the mode, the\n * path (assertPlainPath) and the read-back (assertReadableBack). ★ Reads only, as the deploying\n * user — so sudoRunner's `checkWrite` runs it at PLAN time too, and a plan still never calls sudo.\n */\nexport const assertInstallable = async (\n base: HostRunner,\n prefix: string,\n path: string,\n options: WriteOptions,\n groups: readonly number[] | undefined,\n): Promise<void> => {\n const mode = modeProblem(options);\n if (mode !== undefined) {\n throw refuse(\n path,\n `${mode}. Declare a mode without those bits (0644, 0640, 0755), or give the file to its ` +\n 'real owner. Nothing ran as root.',\n );\n }\n await assertPlainPath(base, prefix, path, 'file-or-absent');\n await assertReadableBack(base, path, options, groups);\n};\n",
32
32
  "/**\n * What sudo's own failure means, for sudo-runner.ts: which exit-1 answers are sudo refusing to run\n * the command (so NOTHING ran as root), and what an EACCES outside every prefix most likely means.\n * Split out of sudo-runner.ts, which keeps only the runner.\n *\n * ⚠️ REASONED, NOT MEASURED: sudo's failure text. The kit never runs sudo. The strings below follow\n * sudoers(5) for sudo 1.9.17p2 on macOS 27.2 (\"a password is required\": -n was given but a\n * password was needed) and sudo(8) (sudo exits 1 when it fails itself).\n */\nimport { errnoCode } from './local-runner.ts';\nimport type { ExecResult } from './runner.ts';\nimport { SudoRefusedError } from './sudo-allowlist.ts';\n\n/**\n * ⚠️ ANCHORED TO sudo'S OWN MESSAGE FORMS (`sudo: …` lines, `Sorry, user …`), so a launchctl or\n * install error that happens to say \"not allowed\" is never reported as \"the command did not run\".\n * The refusals are the three a sudoers denial prints: the command not allowed, the user not in\n * sudoers, and the user not allowed on this host (`<user> is not allowed to run sudo on <host>.`).\n * REASONED from sudo 1.9's sudoers plugin, like the rest (header).\n */\nconst PASSWORD =\n /^sudo: (?:a password is required|a terminal is required|sorry, you must have a tty)/m;\nconst NOT_ALLOWED =\n /^(?:Sorry, user \\S+ (?:is not allowed to execute|may not run sudo)|\\S+ is not (?:in the sudoers file|allowed to run sudo on ))/m;\n\n/** ★ An EACCES outside every prefix is almost always a directory the stack forgot to declare. */\nexport const undeclared =\n (path: string, prefixes: readonly string[]) =>\n (cause: unknown): never => {\n const code = errnoCode(cause);\n if (code !== 'EACCES' && code !== 'EPERM') throw cause;\n throw new Error(\n `sudoRunner ${path}: ${code} as the deploying user, and the path is under no declared prefix ` +\n `(${prefixes.join(', ')}). If root owns its directory, declare that directory as a prefix.`,\n { cause },\n );\n };\n\n/**\n * The refusal sudo itself answered for `shown` (the argv as JSON), or `undefined` when the command\n * ran — whatever its own exit code. ★ `SudoRefusedError` always means nothing ran as root.\n */\nexport const sudoRefusal = (shown: string, result: ExecResult): SudoRefusedError | undefined => {\n if (result.exitCode !== 1) return undefined;\n if (PASSWORD.test(result.stderr)) {\n return new SudoRefusedError(\n `sudo -n ${shown}: a password is required, and this runner never prompts. Run \\`sudo -v\\` ` +\n 'in the deploying terminal just before the deploy, or grant exactly these commands ' +\n 'NOPASSWD (docs/launchd-sudo.md). The command did not run.',\n );\n }\n if (NOT_ALLOWED.test(result.stderr)) {\n return new SudoRefusedError(\n `sudo -n ${shown}: sudoers does not let the deploying user run this. The command did not run.`,\n );\n }\n return undefined;\n};\n",
33
33
  "/**\n * Where sudo-runner.ts puts a file's bytes before `install` copies them into place as root.\n *\n * ★ WHY STAGE AT ALL. The deploying user cannot write inside a root-owned directory, and the bytes\n * must not travel through argv (they would reach the log and `ps`). So they are written, as the\n * deploying user, to a private file, and `install` copies that one file.\n * ⛔ A 0700 DIRECTORY, A 0600 FILE, O_EXCL: between the write and the install, nobody but the\n * deploying user and root can read the bytes or swap the file.\n */\nimport { mkdtemp, rm, writeFile } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { join } from 'node:path';\n\n/** A file staged for `install`, and how to remove it again. */\nexport type Staged = { readonly path: string; readonly dispose: () => Promise<void> };\n\nexport const stageFile = async (bytes: Uint8Array): Promise<Staged> => {\n const dir = await mkdtemp(join(tmpdir(), 'hf-sudo-'));\n const dispose = () => rm(dir, { force: true, recursive: true });\n try {\n const path = join(dir, 'staged');\n await writeFile(path, bytes, { flag: 'wx', mode: 0o600 });\n return { dispose, path };\n } catch (cause) {\n await dispose();\n throw cause;\n }\n};\n",
34
34
  "/**\n * sudoRunner(): the kit's one elevating HostRunner. The deploy runs as the operator, and only the\n * calls that need root go through `sudo -n`, in the exact shapes sudo-allowlist.ts names:\n *\n * - `launchctl bootstrap | bootout | kickstart` in the system domain;\n * - a file under a prefix the stack declared: staged in a private temp file as the operator, then\n * `sudo -n install -S -m <mode> [-o <uid>] [-g <gid>] <staged> <path>`; removed with\n * `sudo -n rm -f -- <path>`.\n *\n * Everything else (reads, lookups, the operator's own files and gui domain) goes to localRunner().\n *\n * ★ DECIDED 2026-09-21. A host stack deploys as the operator rather than as root, so a provider bug\n * or a wrong declaration can do no more than this list. It is an explicit opt-in,\n * `launchdProviders(sudoRunner({ prefixes }))`, and nothing ever falls back to it: localRunner()\n * stays the default and never elevates.\n * ⛔ `sudo -n`, NEVER A PROMPT. A deploy that stops mid-apply to ask for a password is the failure\n * \"no silent sudo\" exists to prevent. With -n, sudo fails at once, and that failure becomes an\n * error saying what to do.\n * ⛔ EVERY PRIVILEGED ARGV IS LOGGED BEFORE IT RUNS, and it is only ever an argv: a file's bytes\n * travel through the staged file, never through argv, so a log line cannot carry content.\n * ★ `install -S`: install(1) on macOS 27.2 (read 2026-09-21) always writes a temp file in the\n * target directory and renames it, so the file is never torn, and -S adds the fsync that\n * localRunner's `handle.sync()` does.\n * ⚠️ BUT IT CHMODS AFTER THE RENAME. MEASURED 2026-09-22 (an lstat poller racing\n * `/usr/bin/install -S -m 0755`, 300 MB, six runs, target absent and present): the new inode\n * is visible at the path as 0600, then 0755 0.2–0.4 ms later. Only ever narrower than declared.\n * ⚠️ REASONED NOT MEASURED: a launchd start inside that window gets EACCES and retries after its\n * throttle, and an install killed inside it leaves a root-owned 0600 file the operator cannot\n * read back. Closing it needs a second privileged step (install to a temp name, then rename),\n * which is a change to this allowlist and wants its own red team.\n * ⚠️ AND IT COPIES XATTRS, com.apple.quarantine included (MEASURED 2026-09-22: a quarantined\n * source installed as a quarantined target). The staged file is written by this process, and\n * node:fs writes here carried only com.apple.provenance (measured the same day) — so nothing\n * is quarantined today, but a quarantined staging file would be installed quarantined.\n * ⚠️ REASONED, NOT MEASURED: sudo's failure text (sudo-said.ts has the strings and their sources).\n * ⛔ EVERY CHECK BEFORE SUDO ALSO RUNS AT PLAN TIME (`checkWrite`, 2026-09-21): the mode, the\n * directories from the prefix down, the read-back. Reads only, as the operator — never sudo.\n */\nimport { type LocalRunnerOptions, localRunner } from './local-runner.ts';\nimport type { ExecResult, HostRunner, WriteOptions } from './runner.ts';\nimport {\n INSTALL,\n RM,\n SUDO,\n SudoRefusedError,\n checkPrefixes,\n octalMode,\n prefixOf,\n privilegedProblem,\n routeExec,\n} from './sudo-allowlist.ts';\nimport { assertInstallable, assertPlainPath, operatorGroups } from './sudo-guard.ts';\nimport { sudoRefusal, undeclared } from './sudo-said.ts';\nimport { type Staged, stageFile } from './sudo-stage.ts';\n\nexport { SudoRefusedError };\n\nexport type SudoRunnerOptions = LocalRunnerOptions & {\n /**\n * The directories root may install into and remove from: `/Library/LaunchDaemons` for system\n * jobs (bootstrap and bootout are refused without it), plus wherever the stack's root-owned\n * HostFiles live. ⛔ Required: absolute, normalised, never `/`; and at every privileged call a\n * real directory that root owns and only root may write (sudo-guard.ts). Outside every prefix a\n * file is written as the deploying user, or refused when that needs root.\n */\n readonly prefixes: readonly string[];\n /** Receives one line per privileged argv, before it runs. @default a line on stderr */\n readonly log?: (line: string) => void;\n};\n\n/** What a sudo runner is built from. ★ Split out so the tests swap the host, never the logic. */\nexport type SudoDeps = {\n /** Runs everything, including `sudo` itself. localRunner() for the real one. */\n readonly base: HostRunner;\n readonly stage: (bytes: Uint8Array) => Promise<Staged>;\n /** The deploying user's groups, for the read-back check; `undefined` when unknown. */\n readonly groups: () => Promise<readonly number[] | undefined>;\n readonly log: (line: string) => void;\n};\n\nexport const makeSudoRunner = (prefixList: readonly string[], deps: SudoDeps): HostRunner => {\n const prefixes = checkPrefixes(prefixList);\n const { base } = deps;\n\n /**\n * ⛔ THE ONE PLACE `sudo` IS SPAWNED: allowlist, then any host check (`before`), then the log\n * line, then `sudo -n -- argv`.\n */\n const elevate = async (\n argv: readonly string[],\n { before, staged }: { before?: () => Promise<unknown>; staged?: string } = {},\n ): Promise<ExecResult> => {\n const shown = JSON.stringify(argv);\n const problem = privilegedProblem(argv, {\n prefixes,\n ...(staged === undefined ? {} : { staged }),\n });\n if (problem !== undefined)\n throw new SudoRefusedError(`sudoRunner refused ${shown}: ${problem}`);\n await before?.();\n deps.log(`homeflare/launchd sudo -n ${shown}`);\n const result = await base.exec([SUDO, '-n', '--', ...argv]);\n const refused = sudoRefusal(shown, result);\n if (refused !== undefined) throw refused;\n return result;\n };\n\n /**\n * Every refusal a write can meet before sudo is asked — as the deploying user, reading only — so\n * the same checks run at plan time (`checkWrite`) and at the write. `undefined` outside every\n * prefix, where the operator writes; else the prefix and the mode as `install -m` takes it.\n */\n const vetWrite = async (path: string, options: WriteOptions) => {\n const prefix = prefixOf(path, prefixes);\n const operator = base.effectiveUid();\n if (prefix === undefined) {\n if (options.uid !== undefined && options.uid !== operator && operator !== 0) {\n throw new SudoRefusedError(\n `sudoRunner ${path}: owner ${String(options.uid)} needs root, and the path is under no ` +\n `declared prefix (${prefixes.join(', ')}). Declare its directory, or deploy as root. ` +\n 'Nothing was written.',\n );\n }\n return undefined;\n }\n const mode = octalMode(options.mode);\n if (mode === undefined) throw new SudoRefusedError(`sudoRunner ${path}: mode must be 0–0o7777`);\n await assertInstallable(base, prefix, path, options, await deps.groups());\n return { mode, prefix };\n };\n\n /** A privileged file operation: anything but exit 0 is an error. ⚠️ stderr names paths only. */\n const mustSucceed = async (argv: readonly string[], staged?: string): Promise<void> => {\n const result = await elevate(argv, staged === undefined ? {} : { staged });\n if (result.exitCode !== 0) {\n const stderr = result.stderr.trim().slice(0, 300);\n throw new Error(`sudo -n ${JSON.stringify(argv)} -> ${String(result.exitCode)}: ${stderr}`);\n }\n };\n\n return {\n // ★ The plan-time half of vetWrite: the providers' diffs call it, and it never elevates.\n checkWrite: async (path, options) => {\n await vetWrite(path, options);\n },\n effectiveUid: () => base.effectiveUid(),\n exec: async (argv) => {\n const route = routeExec(argv, base.effectiveUid());\n if ('refuse' in route) throw new SudoRefusedError(`sudoRunner: ${route.refuse}`);\n if (route.as === 'operator') return base.exec(argv);\n // ⛔ bootstrap makes root read the plist: it must be a plain file exactly where argv says.\n // The allowlist has already put it under a prefix by the time `before` runs.\n const plist = argv[1] === 'bootstrap' ? argv[3] : undefined;\n const prefix = plist === undefined ? undefined : prefixOf(plist, prefixes);\n return elevate(argv, {\n before: async () => {\n if (plist !== undefined && prefix !== undefined) {\n await assertPlainPath(base, prefix, plist, 'file');\n }\n },\n });\n },\n lookupGroup: (nameOrId) => base.lookupGroup(nameOrId),\n lookupUser: (nameOrId) => base.lookupUser(nameOrId),\n // ★ Forwarded, never hardcoded: this runner elevates on the SAME target `base` already\n // declared (localRunner's own machine), so it carries no opinion of its own.\n platform: base.platform,\n // ★ True, so the providers let a system-domain job through to this runner (canActAsRoot).\n privileged: true,\n readFile: (path) => base.readFile(path),\n removeFile: async (path) => {\n const prefix = prefixOf(path, prefixes);\n if (prefix === undefined) return base.removeFile(path).catch(undeclared(path, prefixes));\n /**\n * ★ Nothing there is success without a privileged call, so an idempotent delete logs nothing.\n * ⚠️ lstat the path FIRST: a directory on the way that is already gone means nothing is there\n * (HostRunner.removeFile is idempotent, and localRunner treats ENOENT/ENOTDIR so), where the\n * guard alone would refuse it as a missing directory.\n */\n if ((await base.stat(path)) === undefined) return;\n await assertPlainPath(base, prefix, path, 'file');\n await mustSucceed([RM, '-f', '--', path]);\n },\n sleep: (ms) => base.sleep(ms),\n stat: (path) => base.stat(path),\n writeFileAtomic: async (path, bytes, options) => {\n const vetted = await vetWrite(path, options);\n if (vetted === undefined) {\n return base.writeFileAtomic(path, bytes, options).catch(undeclared(path, prefixes));\n }\n const { mode } = vetted;\n const staged = await deps.stage(bytes);\n try {\n await mustSucceed(\n [\n INSTALL,\n '-S',\n '-m',\n mode,\n ...(options.uid === undefined ? [] : ['-o', String(options.uid)]),\n ...(options.gid === undefined ? [] : ['-g', String(options.gid)]),\n staged.path,\n path,\n ],\n staged.path,\n );\n } finally {\n await staged.dispose();\n }\n },\n };\n};\n\n/**\n * The real sudo runner: localRunner() for everything, `/usr/bin/sudo -n` for the allowlist.\n * Pass it explicitly: `launchdProviders(sudoRunner({ prefixes: ['/Library/LaunchDaemons'] }))`.\n */\nexport const sudoRunner = (options: SudoRunnerOptions): HostRunner => {\n const base = localRunner(options);\n return makeSudoRunner(options.prefixes, {\n base,\n groups: () => operatorGroups(base),\n log:\n options.log ??\n ((line) => {\n process.stderr.write(`${line}\\n`);\n }),\n stage: stageFile,\n });\n};\n"
35
35
  ],
36
- "mappings": ";AAgBA;AACA,oBAAS;AACT;AACA;AACA;;;ACXA;AACA;AACA,kBAAS;AACT;AACA;;;ACiBA;AACA;AACA;AACA;AAEA,IAAM,SAAS;AACf,IAAM,aAAa;AAEnB,IAAM,OAAO,CAAC,KAAa,eAClB,WAAI,UAAU,GAAG;AAAA,EACtB,MAAM,MAAM,OAAc,qBAAc,SAAS;AAAA,EACjD,IAAW,cAAO,GAAG;AAAA,IAAG,OAAO,IAAI,MAAM,IAAI,KAAK,UAAU;AAAA,CAC7D;AAEH,IAAM,QAAQ,CAAC,KAAa,eACnB,WAAI,UAAU,GAAG;AAAA,EACtB,MAAM,MAAM,OAAc,qBAAc,SAAS;AAAA,EACjD,IAAW,cAAO,GAAG;AAAA,IAAG,OAAO;AAAA,EAC/B,QAAQ,OAAO,IAAI,MAAM,IAAY,GAAG,OAAO;AAAA,CAChD;AAOI,IAAM,iBAAiB,CAAC,eACtB,UAAG,KAAK,YAAY,UAAU,GAAG,SAAS;AAQ5C,IAAM,aAAa,CACxB,YACA,cAEO,WAAI,UAAU,GAAG;AAAA,EACtB,OAAO,eAAe,UAAU;AAAA,EAChC,MAAM,WAAW,MAAa,eAAQ,SAAS;AAAA,EAC/C,MAAM,QAAQ,OAAO,UAAU,KAAY,aAAM,QAAQ,GAAU,mBAAY,QAAQ,CAAC;AAAA,EACxF,IAAI,UAAU,aAAa,UAAU,QAAQ,QAAQ,GAAG,KAAK;AAAA,IAAG;AAAA,EAChE,OAAO,KAAK,QAAQ,UAAU;AAAA,CAC/B;AAGI,IAAM,UAAU,CAAC,eAA+C,MAAM,QAAQ,UAAU;AAGxF,IAAM,aAAa,CAAC,eACzB,MAAM,YAAY,UAAU;AAuBvB,IAAM,iBAAiB,CAAsB,YAAkB;AAAA,EACpE,QAAQ,MAAM,SAAS;AAAA,EACvB,IAAI,SAAS,aAAa,SAAS;AAAA,IAAW,OAAO;AAAA,EACrD,MAAM,UAA6B,CAAC,UAC3B,WAAI,UAAU,GAAG;AAAA,IACtB,IAAI,MAAM,WAAW,WAAW;AAAA,MAC9B,OAAO,WAAW,MAAM,YAAY,KAAK,KAAK,OAAO,QAAQ,UAAU,CAAC,CAAC;AAAA,IAC3E;AAAA,IACA,OAAO,OAAO,KAAK,KAAK;AAAA,GACzB;AAAA,EAEH,OAAO,KAAK,SAAS,MAAM,QAAQ;AAAA;;;ACxGrC,kBAAS;AACT;AACA;AACA;;;ACIA;AACA;AACA;AAEA,IAAM,SAAS,CAAC,UAA4B,UAAU,aAAa,UAAU;AAE7E,IAAM,gBAAgB,CAAC,UAAqD;AAAA,EAC1E,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO;AAAA,EAChF,MAAM,QAAiB,OAAO,eAAe,KAAK;AAAA,EAClD,OAAO,UAAU,OAAO,aAAa,UAAU;AAAA;AAO1C,IAAM,UAAU,CAAC,UAAmB,aAA+B;AAAA,EACxE,IAAI,OAAO,QAAQ;AAAA,IAAG,OAAO;AAAA,EAC7B,IAAI,OAAO,QAAQ;AAAA,IAAG,OAAO;AAAA,EAC7B,IAAI,MAAM,QAAQ,QAAQ,GAAG;AAAA,IAC3B,IAAI,CAAC,MAAM,QAAQ,QAAQ;AAAA,MAAG,OAAO;AAAA,IACrC,OAAO,SAAS,MAAM,CAAC,MAAM,UAAU,QAAQ,MAAM,SAAS,MAAM,CAAC;AAAA,EACvE;AAAA,EACA,IAAI,cAAc,QAAQ,GAAG;AAAA,IAC3B,IAAI,CAAC,cAAc,QAAQ;AAAA,MAAG,OAAO;AAAA,IACrC,OAAO,OAAO,QAAQ,QAAQ,EAAE,MAAM,EAAE,KAAK,UAAU,QAAQ,MAAM,SAAS,IAAI,CAAC;AAAA,EACrF;AAAA,EACA,OAAO;AAAA;AASF,IAAM,mBAAmB,CAAC,KAAa,UACrC,YAAW,sBAAc,KAAK,GAAG,CAAC,UAAU;AAAA,EACjD,MAAM,WAAkB,eAAO,KAAK,IAAI,MAAM,MAAM,UAAU,OAAO;AAAA,EACrE,OAAO,aAAa,aAAa,QAAQ,SAAS,OAAO,KAAK;AAAA,CAC/D;;;ADtCH,IAAM,UAAiB,YAAI,UAAU,GAAG;AAAA,EACtC,MAAM,QAAQ,OAAc,sBAAc,MAAK;AAAA,EAC/C,MAAM,QAAQ,OAAc,sBAAc,KAAK;AAAA,EAC/C,IAAW,eAAO,KAAK,KAAY,eAAO,KAAK;AAAA,IAAG;AAAA,EAClD,MAAM,QAAsB,OAAO,MAAM;AAAA,EACzC,MAAM,QAAe,EAAE,OAAO,MAAM,MAAM,MAAM,OAAO,MAAM,MAAM,MAAM;AAAA,EACzE,OAAO,EAAE,WAAW,MAAM,MAAM,WAAW,OAAO,MAAM;AAAA,CACzD;AAED,IAAM,QAAQ,CAAC,OAAqB,OAAc,QAChD,MAAM,IAAI,KAAK,OAAO,IAAI,CAAC,EAAE,KAAY,sBAAc,MAAG;AAAA,EAAG;AAAA,CAAS,CAAC;AAczE,IAAM,eAAe,CAAC,KAAc,eAA+C;AAAA,EACjF,IAAI,KAAK;AAAA,EACT,OAAO,OAAO,OAAO,YAAY,OAAO,QAAQ,CAAC,cAAc,EAAW,GAAG;AAAA,IAC3E,MAAM,aAAa;AAAA,IACnB,IAAI,WAAW,eAAe;AAAA,MAAY,OAAO;AAAA,IACjD,KAAK,WAAW;AAAA,EAClB;AAAA,EACA;AAAA;AAIK,IAAM,qBAAqB,CAChC,KACA,eAEO,YAAI,UAAU,GAAG;AAAA,EACtB,MAAM,QAAQ,OAAO;AAAA,EACrB,IAAI,UAAU;AAAA,IAAW;AAAA,EACzB,WAAW,MAAM,CAAC,KAAK,GAAI,MAAM,UAAU,MAAM,cAAc,CAAC,CAAE,GAAG;AAAA,IACnE,MAAM,aAAa,aAAa,OAAO,MAAM,MAAM,OAAO,MAAM,OAAO,EAAE,GAAG,UAAU;AAAA,IACtF,IAAI,eAAe;AAAA,MAAW,OAAO;AAAA,EACvC;AAAA,EACA;AAAA,CACD;AAcI,IAAM,mBAAmB,CAAC,KAAa,eACrC,YAAI,UAAU,GAAG;AAAA,EACtB,MAAM,aAAa,OAAO,mBAAmB,KAAK,UAAU;AAAA,EAC5D,IAAI,eAAe;AAAA,IAAW,OAAO;AAAA,EACrC,QAAQ,OAAO,iBAAiB,KAAK,WAAW,KAAK,KAAK,UAAU;AAAA,CACrE;AAQI,IAAM,WAAW,CAAC,KAAa,eAC7B,YACL,mBAAmB,KAAK,UAAU,GAClC,CAAC,eAAe,YAAY,WAAW,UACzC;AAEF,IAAM,OAAO,CAAC,SAAsC;AAAA,EAClD,IAAI,OAAO,SAAS,YAAY,SAAS;AAAA,IAAM;AAAA,EAC/C,MAAM,KAAM,KAAmC;AAAA,EAC/C,OAAO,OAAO,OAAO,YAAY,OAAO,KAAK,KAAK;AAAA;AAa7C,IAAM,qBAAqB,CAChC,KACA,eAEO,YAAI,UAAU,GAAG;AAAA,EACtB,MAAM,QAAQ,OAAO;AAAA,EACrB,IAAI,UAAU;AAAA,IAAW,OAAO,CAAC;AAAA,EACjC,MAAM,MAAgB,CAAC;AAAA,EACvB,WAAW,MAAM,CAAC,KAAK,GAAI,MAAM,UAAU,MAAM,cAAc,CAAC,CAAE,GAAG;AAAA,IACnE,aAAa,OAAO,MAAM,MAAM,OAAO,MAAM,OAAO,EAAE,GAAG,YAAY,GAAG;AAAA,EAC1E;AAAA,EACA,OAAO;AAAA,CACR;AAOH,IAAM,eAAe,CAAC,KAAc,YAAoB,QAAwB;AAAA,EAC9E,IAAI,KAAK;AAAA,EACT,IAAI,OAAO;AAAA,EACX,OAAO,OAAO,OAAO,YAAY,OAAO,QAAQ,CAAC,cAAc,EAAW,GAAG;AAAA,IAC3E,MAAM,aAAa;AAAA,IACnB,IAAI,CAAC,MAAM;AAAA,MACT,OAAO,WAAW,eAAe;AAAA,MACjC,KAAK,WAAW;AAAA,MAChB;AAAA,IACF;AAAA,IACA,IAAI,WAAW,eAAe,YAAY;AAAA,MACxC,MAAM,KAAK,KAAK,WAAW,IAAI;AAAA,MAC/B,IAAI,OAAO;AAAA,QAAW,IAAI,KAAK,EAAE;AAAA,IACnC;AAAA,IACA,KAAK,WAAW;AAAA,EAClB;AAAA;AAcK,IAAM,sBAAsB,CAAC,KAAa,eACxC,YAAI,UAAU,GAAG;AAAA,EACtB,MAAM,QAAQ,OAAO;AAAA,EACrB,IAAI,UAAU;AAAA,IAAW;AAAA,EACzB,MAAM,MAAM,OAAO,MAAM,MAAM,OAAO,MAAM,OAAO,GAAG;AAAA,EACtD,MAAM,OAAO;AAAA,EACb,IAAI,MAAM,WAAW,cAAc,KAAK,eAAe,cAAc,KAAK,SAAS,WAAW;AAAA,IAC5F;AAAA,EACF;AAAA,EACA,OAAO,MAAM,MAAM,OAAO,KAAK,MAAM,OAAO,IAAI,CAAC,EAAE,KAAY,cAAM;AAAA,CACtE;;;AF7II,IAAM,eAAe,CAAC,QACpB,YAAI,UAAU,GAAG;AAAA,EACtB,MAAM,QAAQ,OAAc,sBAAc,MAAK;AAAA,EAC/C,MAAM,SAAgB,eAAO,KAAK,IAAI,MAAM,MAAM,UAAU,MAAM,QAAQ;AAAA,EAC1E,IAAI,WAAW;AAAA,IAAW,OAAO;AAAA,EACjC,MAAM,SAAS,OAAc,sBAAc,WAAW;AAAA,EACtD,IAAW,eAAO,MAAM;AAAA,IAAG,OAAO,OAAO;AAAA,EACzC,MAAM,UAAU,OAAc,sBAAc,cAAc;AAAA,EAC1D,OAAc,eAAO,OAAO,IAAI,QAAQ,MAAM,QAAQ;AAAA,CACvD;AAqBH,IAAM,YAAY,CAAC,UACV,YAAI,UAAU,GAAG;AAAA,EACtB,IAAI,OAAO,SAAS,MAAM,KAAK,MAAM,UAAU;AAAA,IAAG,OAAO;AAAA,EACzD,OAAO,OAAO,WAAW,MAAM,UAAU;AAAA,CAC1C;AAGI,IAAM,gBAAgB,CAAC,UACrB,YAAI,UAAU,GAAG;AAAA,EACtB,IAAI,EAAE,OAAO,aAAa,MAAM,GAAG;AAAA,IAAI,OAAO;AAAA,EAC9C,OAAO,OAAO,UAAU,KAAK;AAAA,CAC9B;AAuBI,IAAM,iBAAiB,CAAC,OAAc,SACpC,YAAI,UAAU,GAAG;AAAA,EACtB,IAAI,MAAM,WAAW;AAAA,IAAW;AAAA,EAChC,IAAI,OAAO,QAAQ,MAAM,UAAU;AAAA,IAAG;AAAA,EACtC,MAAM,MAAM,OAAO,UAAU,KAAK;AAAA,EAClC,IAAI,QAAQ,OAAO,aAAa,MAAM,GAAG;AAAA,IAAI;AAAA,EAC7C,OAAO,oBAAoB,MAAM,KAAK,MAAM,UAAU;AAAA,EACtD,MAAM,SAAS,MACX,mGACA;AAAA,EACJ,OAAO,OAAc,YACnB,IAAI,MACF,GAAG,yFACD,0FACA,+BAA+B,QACnC,CACF;AAAA,CACD;AAGI,IAAM,WACX,CAAC,UACD,CAAC,SACC,eAAe,OAAO,IAAI;;;AIlGvB,IAAM,YAAY,CACvB,GACA,MACwB;AAAA,EACxB,IAAI,MAAM,aAAa,MAAM;AAAA,IAAW,OAAO;AAAA,EAC/C,IAAI,EAAE,QAAQ,aAAa,EAAE,QAAQ,aAAa,EAAE,QAAQ,aAAa,EAAE,QAAQ,WAAW;AAAA,IAC5F;AAAA,EACF;AAAA,EACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;AAAA;AAIjC,IAAM,UAAU,OACrB,QACA,GACA,MACiC;AAAA,EACjC,IAAI,MAAM;AAAA,IAAG,OAAO;AAAA,EACpB,OAAO,MAAM,SAAS,MAAM,QAAQ,IAAI,CAAC,OAAO,KAAK,CAAC,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC;AAAA,EACxE,OAAO,UAAU,MAAM,KAAK;AAAA;AAQvB,IAAM,eAAe,OAC1B,QACA,SACA,MACA,QACA,WACkB;AAAA,EAClB,MAAM,OAAO,MAAM,QAAQ,QAAQ,SAAS,IAAI;AAAA,EAChD,IAAI,SAAS;AAAA,IAAM;AAAA,EACnB,MAAM,OAAO;AAAA,EACb,IAAI,SAAS,aAAc,MAAM,OAAO,KAAK,IAAI,MAAO,WAAW;AAAA,IACjE,MAAM,OACJ,MACA,yBAAyB,gEACvB,2FACA,sCACJ;AAAA,EACF;AAAA;;;AC1DF;AAEO,IAAM,OAAO,CAAI,SACf,mBAAW;AAAA,EAChB,OAAO,CAAC,UAAW,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,EAC3E,KAAK;AACP,CAAC;AAQI,IAAM,iBAAiB,CAAC,MAAe,QAAoC;AAAA,EAChF,IAAI,OAAO,SAAS,YAAY,SAAS;AAAA,IAAM;AAAA,EAC/C,MAAM,QAAS,KAAiC;AAAA,EAChD,OAAO,OAAO,UAAU,WAAW,QAAQ;AAAA;;;AChB7C;;;ACqBO,MAAM,mBAAmB,MAAM;AAAA,EAEzB;AAAA,EADX,WAAW,CACA,MACT,QACA;AAAA,IACA,MAAM,SAAS,SAAS,KAAK,WAAW,SAAS,QAAQ;AAAA,IAHhD;AAAA,IAIT,KAAK,OAAO;AAAA;AAEhB;AAEA,IAAM,SACJ;AAAA,IACA,0DACA;AAAA,IACA;AAAA;AAGF,IAAM,YAAY;AASlB,IAAM,YAAY;AAQX,IAAM,aAAa,CAAC,MAAc,SAAyB;AAAA,EAChE,MAAM,MAAM,UAAU,KAAK,IAAI;AAAA,EAC/B,IAAI,QAAQ,MAAM;AAAA,IAChB,MAAM,OAAO,IAAI,GAAG,YAAY,CAAC,KAAK;AAAA,IACtC,MAAM,IAAI,WACR,MACA,KAAK,KAAK,SAAS,EAAE,EAAE,YAAY,EAAE,SAAS,GAAG,GAAG,4BACtD;AAAA,EACF;AAAA,EACA,OAAO,KACJ,WAAW,KAAK,OAAO,EACvB,WAAW,KAAK,MAAM,EACtB,WAAW,KAAK,MAAM,EACtB,WAAW,MAAM,OAAO;AAAA;AAG7B,IAAM,iBAAgB,CAAC,UAA2B;AAAA,EAChD,MAAM,QAAQ,OAAO,eAAe,KAAK;AAAA,EACzC,OAAO,UAAU,OAAO,aAAa,UAAU;AAAA;AAGjD,IAAM,cAAc,CAAC,OAAgB,MAAc,OAAe,QAAwB;AAAA,EACxF,MAAM,MAAM,KAAK,OAAO,KAAK;AAAA,EAC7B,IAAI,QAAQ;AAAA,IAAW,MAAM,IAAI,WAAW,MAAM,sBAAsB,OAAO,SAAS,GAAG;AAAA,EAC3F,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7B,IAAI,KAAK,GAAG,cAAc,WAAW,OAAO,IAAI,YAAY;AAAA,IAC5D;AAAA,EACF;AAAA,EACA,IAAI,OAAO,UAAU,WAAW;AAAA,IAC9B,IAAI,KAAK,GAAG,OAAO,QAAQ,SAAS,WAAW;AAAA,IAC/C;AAAA,EACF;AAAA,EACA,IAAI,OAAO,UAAU,UAAU;AAAA,IAE7B,IAAI,CAAC,OAAO,cAAc,KAAK,GAAG;AAAA,MAChC,MAAM,IAAI,WAAW,MAAM,GAAG,OAAO,KAAK,6CAA6C;AAAA,IACzF;AAAA,IACA,IAAI,KAAK,GAAG,eAAe,OAAO,UAAU,IAAI,IAAI,KAAK,aAAa;AAAA,IACtE;AAAA,EACF;AAAA,EACA,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IACxB,IAAI,MAAM,WAAW,GAAG;AAAA,MACtB,IAAI,KAAK,GAAG,aAAa;AAAA,MACzB;AAAA,IACF;AAAA,IACA,IAAI,KAAK,GAAG,YAAY;AAAA,IACxB,YAAY,OAAO,SAAU,MAA6B,QAAQ,GAAG;AAAA,MACnE,YAAY,MAAM,GAAG,QAAQ,OAAO,KAAK,MAAM,QAAQ,GAAG,GAAG;AAAA,IAC/D;AAAA,IACA,IAAI,KAAK,GAAG,aAAa;AAAA,IACzB;AAAA,EACF;AAAA,EACA,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,eAAc,KAAK,GAAG;AAAA,IACvE,WAAW,OAAkC,MAAM,OAAO,GAAG;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,MAAM,OAAO,UAAU,OAAO,SAAS,OAAO;AAAA,EAC9C,MAAM,IAAI,WAAW,MAAM,GAAG,+CAA+C;AAAA;AAG/E,IAAM,aAAa,CACjB,MACA,MACA,OACA,QACS;AAAA,EACT,MAAM,MAAM,KAAK,OAAO,KAAK;AAAA,EAE7B,MAAM,OAAO,OAAO,KAAK,IAAI,EAAE,KAAK;AAAA,EACpC,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,IAAI,KAAK,GAAG,YAAY;AAAA,IACxB;AAAA,EACF;AAAA,EACA,IAAI,KAAK,GAAG,WAAW;AAAA,EACvB,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,QAAQ,SAAS,KAAK,MAAM,GAAG,QAAQ;AAAA,IAC7C,IAAI,KAAK,GAAG,YAAa,WAAW,KAAK,KAAK,SAAS;AAAA,IACvD,YAAY,KAAK,MAAM,OAAO,QAAQ,GAAG,GAAG;AAAA,EAC9C;AAAA,EACA,IAAI,KAAK,GAAG,YAAY;AAAA;AAInB,IAAM,cAAc,CAAC,SAA4B;AAAA,EACtD,IAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,MAAM,QAAQ,IAAI,KAAK,CAAC,eAAc,IAAI,GAAG;AAAA,IAC5F,MAAM,IAAI,WAAW,IAAI,iDAAiD;AAAA,EAC5E;AAAA,EACA,MAAM,MAAgB,CAAC;AAAA,EACvB,WAAW,MAAiC,IAAI,GAAG,GAAG;AAAA,EACtD,OAAO,GAAG,SAAS,IAAI,KAAK;AAAA,CAAI;AAAA;AAAA;AAAA;;;ADxE3B,IAAM,cAAc,CAAC,WAA6C;AAAA,EACvE,IAAI,WAAW;AAAA,IAAU,OAAO,EAAE,MAAM,SAAS;AAAA,EACjD,MAAM,QAAQ,eAAe,KAAK,MAAM;AAAA,EACxC,OAAO,QAAQ,OAAO,YAAY,YAAY,EAAE,MAAM,OAAO,KAAK,OAAO,MAAM,EAAE,EAAE;AAAA;AAG9E,IAAM,gBAAgB,CAAC,OAAe,WAAkC,GAAG,UAAU;AAOrF,IAAM,eAAe,CAC1B,OACA,QACA,SACW;AAAA,EACX,IAAI,OAAO,SAAS;AAAA,IAAU,OAAO,0BAA0B;AAAA,EAE/D,IAAI,SAAS,aAAa,CAAC,KAAK,WAAW,GAAG,GAAG;AAAA,IAC/C,MAAM,IAAI,MAAM,OAAO,OAAO,OAAO,GAAG,gDAAgD;AAAA,EAC1F;AAAA,EACA,OAAO,GAAG,6BAA6B;AAAA;AAIlC,IAAM,aAAgC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,eAAe,CAAC,UAAuC;AAAA,EAC3D,MAAM,OAAmC,CAAC;AAAA,EAC1C,IAAI,MAAM,WAAW;AAAA,IAAW,KAAK,YAAY,MAAM;AAAA,EACvD,IAAI,MAAM,SAAS;AAAA,IAAW,KAAK,UAAU,MAAM;AAAA,EACnD,IAAI,MAAM,QAAQ;AAAA,IAAW,KAAK,SAAS,MAAM;AAAA,EACjD,IAAI,MAAM,YAAY;AAAA,IAAW,KAAK,aAAa,MAAM;AAAA,EACzD,IAAI,MAAM,UAAU;AAAA,IAAW,KAAK,WAAW,MAAM;AAAA,EACrD,OAAO;AAAA;AAGT,IAAM,iBAAiB,CAAC,cAAqC;AAAA,EAC3D,IAAI,OAAO,cAAc;AAAA,IAAW,OAAO;AAAA,EAC3C,MAAM,OAAmC,CAAC;AAAA,EAC1C,IAAI,UAAU,mBAAmB;AAAA,IAAW,KAAK,oBAAoB,UAAU;AAAA,EAC/E,IAAI,UAAU,YAAY;AAAA,IAAW,KAAK,aAAa,UAAU;AAAA,EACjE,OAAO;AAAA;AAIF,IAAM,eAAe,CAAC,UAAsC;AAAA,EACjE,MAAM,OAAmC,KAAK,MAAM,UAAU;AAAA,EAC9D,KAAK,WAAW,MAAM;AAAA,EACtB,KAAK,sBAAsB,CAAC,GAAG,MAAM,gBAAgB;AAAA,EACrD,MAAM,MAAM,MAAM,eAAe,CAAC;AAAA,EAClC,IAAI,OAAO,KAAK,GAAG,EAAE,SAAS;AAAA,IAAG,KAAK,0BAA0B,KAAK,IAAI;AAAA,EACzE,IAAI,MAAM,cAAc;AAAA,IAAW,KAAK,eAAe,MAAM;AAAA,EAC7D,IAAI,MAAM,cAAc;AAAA,IAAW,KAAK,eAAe,eAAe,MAAM,SAAS;AAAA,EACrF,IAAI,MAAM,kBAAkB;AAAA,IAAW,KAAK,mBAAmB,MAAM;AAAA,EACrE,MAAM,WAAW,MAAM;AAAA,EACvB,IAAI,aAAa,WAAW;AAAA,IAC1B,KAAK,2BAA2B,MAAM,QAAQ,QAAQ,IACjD,SAAyC,IAAI,YAAY,IAC1D,aAAa,QAA4B;AAAA,EAC/C;AAAA,EACA,IAAI,MAAM,qBAAqB;AAAA,IAAW,KAAK,sBAAsB,MAAM;AAAA,EAC3E,IAAI,MAAM,oBAAoB;AAAA,IAAW,KAAK,qBAAqB,MAAM;AAAA,EACzE,IAAI,MAAM,sBAAsB;AAAA,IAAW,KAAK,uBAAuB,MAAM;AAAA,EAC7E,IAAI,MAAM,qBAAqB;AAAA,IAAW,KAAK,sBAAsB,MAAM;AAAA,EAC3E,IAAI,MAAM,aAAa;AAAA,IAAW,KAAK,cAAc,MAAM;AAAA,EAC3D,IAAI,MAAM,cAAc;AAAA,IAAW,KAAK,eAAe,MAAM;AAAA,EAC7D,OAAO;AAAA;AAGF,IAAM,YAAY,CAAC,UACxB,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAG1C,IAAM,YAAY,CACvB,UACwD;AAAA,EACxD,MAAM,OAAO,YAAY,aAAa,KAAK,CAAC;AAAA,EAC5C,MAAM,QAAQ,IAAI,YAAY,EAAE,OAAO,IAAI;AAAA,EAC3C,OAAO,EAAE,OAAO,QAAQ,UAAU,KAAK,GAAG,KAAK;AAAA;;;AEpKjD;AACA;AAAA;AAmHO,MAAM,0BAAkC,gBAAuC,EACpF,8BACF,EAAE;AAAC;AAGI,IAAM,kBAAkB,CAAC,WACxB,cAAQ,mBAAmB,MAAM;AAGlC,IAAM,eAAe,CAAC,WAC3B,OAAO,cAAc,OAAO,aAAa,MAAM;;;ACzGjD,IAAM,YAAY,CAAC,UACjB,OAAO,UAAU,WAAW,QAAQ,QAAQ,KAAK,KAAK,IAAI,OAAO,KAAK,IAAI;AAGrE,IAAM,aAAa,OACxB,QACA,UACA,MACA,WAC4C;AAAA,EAC5C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI,SAAS,UAAU,WAAW;AAAA,IAChC,MAAM,UAAU,SAAS,KAAK,MAAM,MAAM,OAAO,WAAW,OAAO,SAAS,KAAK,CAAC,IAAI;AAAA,IACtF,IAAI,QAAQ;AAAA,MAAW,MAAM,OAAO,MAAM,WAAW,OAAO,SAAS,KAAK,gBAAgB;AAAA,EAC5F;AAAA,EACA,IAAI,SAAS,UAAU,WAAW;AAAA,IAChC,MAAM,UAAU,SAAS,KAAK,KAAM,MAAM,OAAO,YAAY,OAAO,SAAS,KAAK,CAAC;AAAA,IACnF,IAAI,QAAQ;AAAA,MAAW,MAAM,OAAO,MAAM,YAAY,OAAO,SAAS,KAAK,gBAAgB;AAAA,EAC7F;AAAA,EACA,OAAO,KAAM,QAAQ,YAAY,CAAC,IAAI,EAAE,IAAI,MAAQ,QAAQ,YAAY,CAAC,IAAI,EAAE,IAAI,EAAG;AAAA;AAIjF,IAAM,qBAAqB,OAChC,QACA,SAC4C;AAAA,EAC5C,MAAM,OAAO,MAAM,OAAO,KAAK,IAAI;AAAA,EACnC,IAAI,SAAS;AAAA,IAAW;AAAA,EACxB,MAAM,QAAQ,KAAK,SAAS,SAAS,MAAM,OAAO,SAAS,IAAI,IAAI;AAAA,EACnE,OAAO;AAAA,IACL,KAAK,KAAK;AAAA,IACV,MAAM,KAAK;AAAA,IACX;AAAA,IACA,QAAQ,UAAU,YAAY,KAAK,UAAU,KAAK;AAAA,IAClD,MAAM,KAAK;AAAA,IACX,KAAK,KAAK;AAAA,EACZ;AAAA;AAGK,IAAM,iBAAiB,CAAC,UAAoC;AAAA,EACjE,MAAM,KAAK;AAAA,KACP,KAAK,QAAQ,YAAY,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI;AAAA,KAC9C,KAAK,QAAQ,YAAY,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI;AACpD;AAEO,IAAM,cAAc,CAAC,MAA0B,SACpD,KAAK,WAAW,KAAK,UACrB,KAAK,SAAS,KAAK,SAClB,KAAK,QAAQ,aAAa,KAAK,QAAQ,KAAK,SAC5C,KAAK,QAAQ,aAAa,KAAK,QAAQ,KAAK;AAOxC,IAAM,aAAa,OACxB,QACA,MACA,WACkB;AAAA,EAClB,MAAM,SAAS,OAAO,SAA8B;AAAA,IAClD,MAAM,OAAO,aAAa,KAAK,MAAM,eAAe,IAAI,CAAC;AAAA,IACzD,OAAO;AAAA;AAAA,EAMT,IAAI,KAAK,SAAS,OAAO,MAAM;AAAA,IAC7B,MAAM,OAAO,MAAM,QAAQ,QAAQ,KAAK,MAAM,OAAO,IAAI;AAAA,IACzD,OAAO,OAAO,EAAE,QAAQ,SAAS,OAAO,WAAW,UAAU,CAAC;AAAA,EAChE;AAAA,EACA,IAAI,KAAK,WAAW,OAAO;AAAA,IAAQ,OAAO,OAAO,EAAE,QAAQ,SAAS,CAAC;AAAA,EACrE,MAAM,OAAO,MAAM,mBAAmB,QAAQ,KAAK,IAAI;AAAA,EACvD,OAAO,SAAS,aAAa,YAAY,MAAM,IAAI,IAC/C,EAAE,QAAQ,OAAO,IACjB,OAAO,EAAE,QAAQ,SAAS,CAAC;AAAA;AAsB1B,IAAM,eAAe,OAC1B,QACA,MACA,QACA,QAAQ,UACwB;AAAA,EAChC,QAAQ,MAAM,WAAW;AAAA,EACzB,MAAM,OAAO,KAAK;AAAA,EAElB,IAAI,KAAK,QAAQ,aAAa,KAAK,QAAQ,OAAO,aAAa,KAAK,CAAC,aAAa,MAAM,GAAG;AAAA,IACzF,MAAM,OACJ,MACA,SAAS,OAAO,KAAK,KAAK,sEACxB,2FACA,mCACJ;AAAA,EACF;AAAA,EACA,MAAM,OAAO,MAAM,OAAO,KAAK,IAAI;AAAA,EACnC,IAAI,SAAS,aAAa,KAAK,SAAS,QAAQ;AAAA,IAC9C,MAAM,OACJ,MACA,QAAQ,KAAK,gEACf;AAAA,EACF;AAAA,EACA,MAAM,SAAS,SAAS,YAAY,YAAY,MAAM,mBAAmB,QAAQ,IAAI;AAAA,EAKrF,MAAM,QAAQ,WAAW,aAAa,OAAO,SAAS;AAAA,EACtD,MAAM,QAAQ,QAAQ,YAAY;AAAA,EASlC,MAAM,WAAW,SAAS,WAAW;AAAA,EACrC,IAAI,UAAU,aAAa,WAAW,aAAa,CAAC,YAAY,QAAQ,IAAI,KAAK,CAAC,UAAU;AAAA,IAC1F,MAAM,OACJ,MACA,6FACE,sBACJ;AAAA,EACF;AAAA,EACA,IAAI,WAAW,aAAa,CAAC,YAAY,QAAQ,IAAI,GAAG;AAAA,IACtD,MAAM,QAAQ,MAAM,KAAK,SAAS,MAAM;AAAA,IAGxC,IAAI,UAAU,KAAK,MAAM,KAAK,QAAQ;AAAA,MACpC,MAAM,OAAO,MAAM,qCAAqC,KAAK,8BAA8B;AAAA,IAC7F;AAAA,IACA,MAAM,OAAO,gBAAgB,MAAM,OAAO,eAAe,IAAI,CAAC;AAAA,EAChE;AAAA,EAOA,MAAM,WAAW,YAAY;AAAA,IAC3B,IAAI,WAAW;AAAA,MAAW,MAAM,OAAO,WAAW,IAAI,EAAE,MAAM,MAAG;AAAA,QAAG;AAAA,OAAS;AAAA;AAAA,EAE/E,MAAM,QAAQ,MAAM,mBAAmB,QAAQ,IAAI,EAAE,MAAM,OAAO,UAAmB;AAAA,IACnF,MAAM,SAAS;AAAA,IACf,MAAM,OAAO,MAAM,kDAAkD,OAAO,KAAK,GAAG;AAAA,GACrF;AAAA,EACD,IAAI,UAAU,aAAa,CAAC,YAAY,OAAO,IAAI,GAAG;AAAA,IACpD,MAAM,SAAS;AAAA,IACf,MAAM,OAAO,MAAM,wEAAwE;AAAA,EAC7F;AAAA,EAGA,IAAI;AAAA,IACF,MAAM,aACJ,QACA,OAAO,MACP,MACA,MAAM,gBAAgB,QAAQ,QAAQ,MAAM,GAC5C,MACF;AAAA,EACF,OAAO;AAAA;AAIF,IAAM,kBAAkB,OAC7B,QACA,QACA,WACkB;AAAA,EAClB,MAAM,OAAO,MAAM,OAAO,KAAK,OAAO,IAAI;AAAA,EAC1C,IAAI,SAAS;AAAA,IAAW;AAAA,EACxB,IAAI,KAAK,SAAS;AAAA,IAAQ,MAAM,OAAO,OAAO,MAAM,YAAY,KAAK,uBAAuB;AAAA,EAC5F,MAAM,OAAO,WAAW,OAAO,IAAI;AAAA;;;ACvNrC,IAAM,cACJ,gGACA;AAGF,IAAM,cACJ;AAGF,IAAM,cAAc;AAGpB,IAAM,YAAY;AAEX,IAAM,cAAc;AAG3B,IAAM,YAAY,CAAC,OAAmB,SAA2B;AAAA,EAC/D,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO,YAAY,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AAAA,EAC1E,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IACxB,OAAQ,MAAgC,QAAQ,CAAC,MAAM,UACrD,UAAU,MAAM,GAAG,QAAQ,OAAO,KAAK,IAAI,CAC7C;AAAA,EACF;AAAA,EACA,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAAA,IAC/C,OAAO,OAAO,QAAQ,KAAK,EAAE,QAAQ,EAAE,KAAK,UAAU,UAAU,MAAM,GAAG,QAAQ,KAAK,CAAC;AAAA,EACzF;AAAA,EACA,OAAO,CAAC;AAAA;AAOH,IAAM,oBAAoB,CAC/B,aACA,MACA,cACa;AAAA,EACb,MAAM,QAAkB,CAAC;AAAA,EACzB,YAAY,MAAM,UAAU,OAAO,QAAQ,eAAe,CAAC,CAAC,GAAG;AAAA,IAC7D,IAAI,YAAY,KAAK,IAAI;AAAA,MACvB,MAAM,KAAK,eAAe,6BAA6B,aAAa;AAAA,IACjE,SAAI,YAAY,KAAK,KAAK;AAAA,MAC7B,MAAM,KAAK,eAAe,6BAA6B,aAAa;AAAA,EACxE;AAAA,EACA,YAAY,OAAO,QAAQ,KAAK,QAAQ,GAAG;AAAA,IAEzC,IAAI,YAAY,KAAK,GAAG,GAAG;AAAA,MACzB,MAAM,KAAK,oBAAoB,OAAO,KAAK,8BAA8B,aAAa;AAAA,IACxF,EAAO,SAAI,UAAU,KAAK,GAAG,KAAK,QAAQ,IAAI,KAAK,QAAQ;AAAA,MACzD,MAAM,KAAK,oBAAoB,OAAO,QAAQ,CAAC,6BAA6B,aAAa;AAAA,IAC3F,EAAO,SAAI,YAAY,KAAK,GAAG,GAAG;AAAA,MAChC,MAAM,KAAK,oBAAoB,OAAO,KAAK,2BAA2B,aAAa;AAAA,IACrF;AAAA,EACF;AAAA,EACA,WAAW,QAAQ,UAAU,aAAa,CAAC,GAAG,WAAW,GAAG;AAAA,IAC1D,MAAM,KAAK,GAAG,6BAA6B,aAAa;AAAA,EAC1D;AAAA,EACA,OAAO;AAAA;AAIF,IAAM,qBAAqB,CAAC,YACjC,YAAY,KAAK,OAAO,IAAI,CAAC,gCAAgC,aAAa,IAAI,CAAC;;;AC9C1E,IAAM,eAAe;AAGrB,IAAM,mBAAmB,CAAC,MAAc,UAAiD;AAAA,EAC9F,IAAI,UAAU;AAAA,IAAW,OAAO,CAAC;AAAA,EACjC,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7B,OAAO,OAAO,cAAc,KAAK,KAAK,SAAS,IAC3C,CAAC,IACD,CAAC,GAAG,wCAAwC;AAAA,EAClD;AAAA,EACA,OAAO,6BAA6B,KAAK,KAAK,KAAK,QAAQ,KAAK,KAAK,IACjE,CAAC,IACD,CAAC,GAAG,QAAQ,KAAK,UAAU,KAAK,qCAAqC;AAAA;AAOpE,IAAM,eAAe,CAAC,SAA2B;AAAA,EACtD,MAAM,QAAkB,CAAC;AAAA,EACzB,IAAI,CAAC,KAAK,WAAW,GAAG;AAAA,IAAG,MAAM,KAAK,uBAAuB;AAAA,EAG7D,IACE,KAAK,SAAS,GAAG,KACjB,KACG,MAAM,GAAG,EACT,MAAM,CAAC,EACP,KAAK,CAAC,SAAS,SAAS,MAAM,SAAS,OAAO,SAAS,IAAI,GAC9D;AAAA,IACA,MAAM,KAAK,6EAA6E;AAAA,EAC1F;AAAA,EACA,IAAI,KAAK,SAAS,MAAM;AAAA,IAAG,MAAM,KAAK,mBAAmB;AAAA,EACzD,OAAO;AAAA;AAGF,IAAM,eAAe,CAAC,UAAmC;AAAA,EAC9D,MAAM,QAAQ,aAAa,MAAM,IAAI;AAAA,EACrC,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC3B,IAAI,CAAC,OAAO,cAAc,IAAI,KAAK,OAAO,KAAK,OAAO;AAAA,IAAQ,MAAM,KAAK,uBAAuB;AAAA,EAChG,MAAM,KAAK,GAAG,iBAAiB,SAAS,MAAM,KAAK,CAAC;AAAA,EACpD,MAAM,KAAK,GAAG,iBAAiB,SAAS,MAAM,KAAK,CAAC;AAAA,EACpD,MAAM,KAAK,GAAG,mBAAmB,MAAM,OAAO,CAAC;AAAA,EAC/C,OAAO;AAAA;;;AChDT,IAAM,SAAS,CAAC,MAAc,YAA2B,IAAI,MAAM,aAAa,SAAS,SAAS;AAG3F,IAAM,cAAc,OAAO,QAAoB,UAA2C;AAAA,EAC/F,MAAM,QAAQ,aAAa,KAAK;AAAA,EAChC,IAAI,MAAM,SAAS;AAAA,IAAG,MAAM,OAAO,MAAM,MAAM,MAAM,KAAK,IAAI,CAAC;AAAA,EAC/D,MAAM,QAAQ,IAAI,YAAY,EAAE,OAAO,MAAM,OAAO;AAAA,EACpD,OAAO;AAAA,IACL;AAAA,IACA,MAAM,MAAM,QAAQ;AAAA,IACpB,MAAM,MAAM;AAAA,IACZ,QAAQ,UAAU,KAAK;AAAA,OACnB,MAAM,WAAW,QAAQ,OAAO,MAAM,MAAM,MAAM;AAAA,EACxD;AAAA;AAIK,IAAM,WAAW,OACtB,QACA,MACA,WACkB,WAAW,QAAQ,MAAM,YAAY,QAAQ,IAAI,GAAG,MAAM;AAMvE,IAAM,gBAAgB,OAC3B,QACA,OACA,QACA,QAAQ,UACwB;AAAA,EAChC,MAAM,OAAO,MAAM,YAAY,QAAQ,KAAK;AAAA,EAC5C,MAAM,OAAO,EAAE,UAAU,YAAY,KAAK,OAAO,OAAO,MAAM,OAAO,QAAQ,KAAK;AAAA,EAClF,OAAO,aAAa,QAAQ,MAAM,QAAQ,KAAK;AAAA;AAI1C,IAAM,aAAa,CAAC,QAAoB,WAC7C,gBAAgB,QAAQ,QAAQ,MAAM;;;AbrCjC,IAAM,WAAW,SAAmB,WAAW;AAE/C,IAAM,mBAAmB,MACrB,gBACP,UACO,YAAI,UAAU,GAAG;AAAA,EACtB,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,SAAS,SAAS,GAAG;AAAA,IAC1B,MAAM,MAAa,gBAAQ,CAAC,CAAC;AAAA,IAE7B,MAAM,GAAG,MAAM,aACb,KAAK,YAAY;AAAA,MACf,MAAM,QAAQ,MAAM,mBAAmB,QAAQ,KAAK,IAAI;AAAA,MACxD,IAAI,UAAU;AAAA,QAAW;AAAA,MACzB,OAAO,WAAW,YAAY,SAAQ,KAAK,IAAI;AAAA,KAChD;AAAA,IAEH,MAAM,GAAG,YAAY,MAAM,aAAa;AAAA,MAEtC,IAAI,WAAW;AAAA,QAAW,OAAO,eAAe,UAAU;AAAA,MAC1D,IAAI,WAAW,IAAI;AAAA,QAAG,OAAO,KAAK,MAAM,SAAS,QAAQ,MAAM,MAAM,CAAC;AAAA,MAMtE,MAAM,OAAO,eAAe,MAAM,MAAM;AAAA,MACxC,IAAI,SAAS,aAAa,SAAS,OAAO;AAAA,QAAM,OAAc,gBAAQ,SAAS;AAAA,MAC/E,OAAO,KAAK,YACT,MAAM,QAAQ,QAAQ,MAAM,OAAO,IAAI,MAAO,OAC3C,YACA,EAAE,QAAQ,UAAmB,CACnC;AAAA;AAAA,IAKF,WAAW,GAAG,KAAK,YAAY,MAAM,aAC5B,gBAAQ,cAAc,EAAE,KAAK,YAAY,OAAO,CAAC,GAAG,CAAC,UAC1D,KAAK,MAAM,cAAc,QAAQ,MAAM,QAAQ,KAAK,CAAC,CACvD;AAAA,IAEF,QAAQ,GAAG,aAAa,KAAK,MAAM,WAAW,QAAQ,MAAM,CAAC;AAAA,EAC/D,CAAC;AAAA,CACF,CACH;;AcrDF,qBAAS;AACT,oBAAS;AACT,uBAAS;AACT;AACA;;;ACZO,IAAM,QAAQ;AAQd,IAAM,0BAA6C;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,WAAW;AAEjB,IAAM,SAA2E;AAAA,EAC/E,CAAC,UAAU,GAAG,EAAE;AAAA,EAChB,CAAC,QAAQ,GAAG,EAAE;AAAA,EACd,CAAC,OAAO,GAAG,EAAE;AAAA,EACb,CAAC,WAAW,GAAG,CAAC;AAAA,EAChB,CAAC,SAAS,GAAG,EAAE;AACjB;AAEA,IAAM,QAAQ,CAAC,OAAe,KAAa,MAAM,OAAO,qBACtD,OAAO,cAAc,KAAK,KAAK,SAAS,OAAO,SAAS;AAE1D,IAAM,mBAAmB,CAAC,YAAmD;AAAA,EAC3E,IAAI,QAAQ,WAAW;AAAA,IAAG,OAAO,CAAC,yDAAyD;AAAA,EAC3F,MAAM,QAAkB,CAAC;AAAA,EACzB,YAAY,OAAO,UAAU,QAAQ,QAAQ,GAAG;AAAA,IAC9C,YAAY,OAAO,KAAK,QAAQ,QAAQ;AAAA,MACtC,MAAM,QAAQ,MAAM;AAAA,MACpB,IAAI,UAAU,aAAa,CAAC,MAAM,OAAO,KAAK,GAAG,GAAG;AAAA,QAClD,MAAM,KACJ,yBAAyB,OAAO,KAAK,MAAM,iBAAiB,OAAO,GAAG,KAAK,OAAO,GAAG,GACvF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,WAAW,CAAC,MAAc,UAC9B,UAAU,aAAa,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,+BAA+B;AAQlF,IAAM,oBAAmB,CAAC,OAAe,eAAiC;AAAA,EAC/E,MAAM,QAAkB,CAAC;AAAA,EACzB,IAAI,CAAC,MAAM,KAAK,KAAK,GAAG;AAAA,IACtB,MAAM,KAAK,wEAAwE;AAAA,EACrF;AAAA,EACA,MAAM,WAAW,wBAAwB,KAAK,CAAC,WAAW,MAAM,WAAW,MAAM,CAAC;AAAA,EAClF,IAAI,aAAa,WAAW;AAAA,IAC1B,MAAM,KAAK,SAAS,kBAAkB,wDAAwD;AAAA,EAChG;AAAA,EACA,IAAI,YAAY,UAAU,MAAM;AAAA,IAC9B,MAAM,KAAK,+CAA+C,YAAY;AAAA,EACxE,OAAO;AAAA;AAGF,IAAM,cAAc,CAAC,UAAqC;AAAA,EAC/D,MAAM,QAAQ,kBAAiB,MAAM,OAAO,MAAM,MAAM;AAAA,EACxD,MAAM,SAAS,YAAY,MAAM,MAAM;AAAA,EAEvC,OAAO,WAAW,MAAM;AAAA,EAExB,IAAI,YAAY;AAAA,IAAW,MAAM,KAAK,sCAAsC;AAAA,EACvE,SAAI,CAAC,QAAQ,WAAW,GAAG;AAAA,IAAG,MAAM,KAAK,8CAA8C;AAAA,EAE5F,WAAW,QAAQ,OAAO,KAAK,MAAM,eAAe,CAAC,CAAC,GAAG;AAAA,IACvD,IAAI,CAAC,SAAS,KAAK,IAAI;AAAA,MACrB,MAAM,KAAK,oBAAoB,KAAK,UAAU,IAAI,gCAAgC;AAAA,EACtF;AAAA,EACA,MAAM,KAAK,GAAG,kBAAkB,MAAM,aAAa,MAAM,kBAAkB,MAAM,SAAS,CAAC;AAAA,EAE3F,IAAI,MAAM,kBAAkB,aAAa,CAAC,MAAM,MAAM,eAAe,CAAC,GAAG;AAAA,IACvE,MAAM,KAAK,0DAA0D;AAAA,EACvE;AAAA,EACA,IAAI,MAAM,qBAAqB,aAAa,CAAC,MAAM,MAAM,kBAAkB,CAAC,GAAG;AAAA,IAC7E,MAAM,KAAK,iEAAiE;AAAA,EAC9E;AAAA,EACA,MAAM,WAAW,MAAM;AAAA,EACvB,IAAI,aAAa,WAAW;AAAA,IAC1B,MAAM,KACJ,GAAG,iBAAiB,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAA4B,CAAC,CACzF;AAAA,EACF;AAAA,EACA,MAAM,YAAY,MAAM;AAAA,EACxB,IACE,OAAO,cAAc,YACrB,UAAU,mBAAmB,aAC7B,UAAU,YAAY,WACtB;AAAA,IACA,MAAM,KAAK,kEAAkE;AAAA,EAC/E;AAAA,EAEA,MAAM,KAAK,GAAG,SAAS,mBAAmB,MAAM,eAAe,CAAC;AAAA,EAChE,MAAM,KAAK,GAAG,SAAS,qBAAqB,MAAM,iBAAiB,CAAC;AAAA,EACpE,MAAM,KAAK,GAAG,SAAS,oBAAoB,MAAM,gBAAgB,CAAC;AAAA,EAElE,IAAI,QAAQ,SAAS,UAAU,MAAM,aAAa,aAAa,MAAM,cAAc,YAAY;AAAA,IAC7F,MAAM,KACJ,qFACF;AAAA,EACF;AAAA,EACA,WAAW,OAAO,OAAO,KAAK,MAAM,aAAa,CAAC,CAAC,GAAG;AAAA,IACpD,IAAI,WAAW,SAAS,GAAG;AAAA,MACzB,MAAM,KAAK,aAAa,gDAAgD;AAAA,EAC5E;AAAA,EACA,OAAO;AAAA;;;AC5GF,IAAM,YAAY;AAElB,IAAM,YAAY;AAElB,IAAM,YAAY;AACzB,IAAM,iBAAiB;AAAA;AAEhB,MAAM,uBAAuB,MAAM;AAAA,EACxC,WAAW,CAAC,SAAiB,UAAkB,QAAgB;AAAA,IAC7D,MAAM,aAAa,cAAc,OAAO,QAAQ,MAAM,OAAO,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG;AAAA,IACnF,KAAK,OAAO;AAAA;AAEhB;AAiBO,IAAM,cAAc,CAAC,WAAwC;AAAA,EAClE,MAAM,SAAS,IAAI;AAAA,EACnB,MAAM,UAAoB,CAAC;AAAA,EAC3B,WAAW,QAAQ,OAAO,MAAM;AAAA,CAAI,GAAG;AAAA,IACrC,IAAI,QAAQ,WAAW,GAAG;AAAA,MACxB,IAAI,OAAO,SAAS,KAAK,KAAK,SAAS,MAAM;AAAA,QAAG,QAAQ,KAAK,GAAG;AAAA,MAChE;AAAA,IACF;AAAA,IACA,IAAI,SAAS,QAAQ,QAAQ,SAAS,IAAI;AAAA,MACxC,QAAQ,IAAI;AAAA,MACZ;AAAA,IACF;AAAA,IACA,MAAM,SAAS,mBAAmB,KAAK,IAAI;AAAA,IAC3C,IAAI,SAAS,OAAO,aAAa,OAAO,GAAG,WAAW,QAAQ,QAAQ;AAAA,MACpE,QAAQ,KAAK,GAAG,OAAO,KAAK;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,QAAQ,WAAW,IAAI,iCAAiC,KAAK,IAAI,IAAI;AAAA,IACnF,IAAI,QAAQ,OAAO,aAAa,MAAM,OAAO,aAAa,CAAC,OAAO,IAAI,MAAM,EAAE,GAAG;AAAA,MAC/E,OAAO,IAAI,MAAM,IAAI,MAAM,EAAE;AAAA,IAC/B;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,aAAa,CAAC,SAAiD;AAAA,EACnE,MAAM,QAAQ,SAAS,YAAY,OAAO,WAAW,KAAK,IAAI;AAAA,EAC9D,OAAO,QAAQ,OAAO,YAAY,YAAY,OAAO,MAAM,EAAE;AAAA;AAGxD,IAAM,aAAa,CAAC,WAAkC;AAAA,EAC3D,MAAM,SAAS,YAAY,MAAM;AAAA,EACjC,MAAM,QAAQ,OAAO,IAAI,OAAO;AAAA,EAChC,MAAM,MAAM,WAAW,OAAO,IAAI,KAAK,CAAC;AAAA,EAExC,MAAM,eAAe,WAAW,OAAO,IAAI,gBAAgB,CAAC;AAAA,EAC5D,OAAO;AAAA,IACL,QAAQ;AAAA,OACJ,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,OACnC,QAAQ,YAAY,CAAC,IAAI,EAAE,IAAI;AAAA,OAC/B,iBAAiB,YAAY,CAAC,IAAI,EAAE,aAAa;AAAA,EACvD;AAAA;AAIK,IAAM,gBAAgB,CAAC,WAAgC;AAAA,EAC5D,MAAM,WAAW,IAAI;AAAA,EACrB,WAAW,SAAS,OAAO,SAAS,8BAA8B,GAAG;AAAA,IACnE,IAAI,MAAM,OAAO,cAAc,MAAM,OAAO,cAAc,MAAM,OAAO,SAAS;AAAA,MAC9E,SAAS,IAAI,MAAM,EAAE;AAAA,IACvB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGF,IAAM,eAAe,OAAO,QAAoB,WAA2C;AAAA,EAChG,MAAM,SAAS,MAAM,OAAO,KAAK,CAAC,WAAW,SAAS,MAAM,CAAC;AAAA,EAC7D,IAAI,OAAO,aAAa;AAAA,IAAW,OAAO,EAAE,QAAQ,MAAM;AAAA,EAG1D,IAAI,OAAO,aAAa,aAAa,OAAO,OAAO,SAAS,cAAc,GAAG;AAAA,IAC3E,OAAO,EAAE,eAAe,MAAM,QAAQ,MAAM;AAAA,EAC9C;AAAA,EACA,IAAI,OAAO,aAAa;AAAA,IACtB,MAAM,IAAI,eAAe,SAAS,UAAU,OAAO,UAAU,OAAO,MAAM;AAAA,EAC5E,OAAO,WAAW,OAAO,MAAM;AAAA;AAG1B,IAAM,aAAa,OACxB,QACA,QACA,UACqB;AAAA,EACrB,MAAM,SAAS,MAAM,OAAO,KAAK,CAAC,WAAW,kBAAkB,MAAM,CAAC;AAAA,EACtE,IAAI,OAAO,aAAa,GAAG;AAAA,IACzB,MAAM,IAAI,eAAe,kBAAkB,UAAU,OAAO,UAAU,OAAO,MAAM;AAAA,EACrF;AAAA,EACA,OAAO,cAAc,OAAO,MAAM,EAAE,IAAI,KAAK;AAAA;AAGxC,IAAM,YAAY,OACvB,QACA,QACA,cACkB;AAAA,EAClB,MAAM,SAAS,MAAM,OAAO,KAAK,CAAC,WAAW,aAAa,QAAQ,SAAS,CAAC;AAAA,EAC5E,IAAI,OAAO,aAAa,GAAG;AAAA,IACzB,MAAM,IAAI,eAAe,aAAa,UAAU,aAAa,OAAO,UAAU,OAAO,MAAM;AAAA,EAC7F;AAAA;AASK,IAAM,eAAe,OAC1B,QACA,QACA,WAAW,KACX,aAAa,QACK;AAAA,EAClB,SAAS,UAAU,EAAG,UAAU,UAAU,WAAW,GAAG;AAAA,IACtD,IAAI,EAAE,MAAM,aAAa,QAAQ,MAAM,GAAG;AAAA,MAAQ;AAAA,IAClD,MAAM,OAAO,MAAM,UAAU;AAAA,EAC/B;AAAA,EACA,MAAM,IAAI,MACR,GAAG,0BAA0B,OAAQ,WAAW,aAAc,IAAI,kBACpE;AAAA;AAIK,IAAM,kBAAkB,OAAO,QAAoB,WAAkC;AAAA,EAC1F,IAAI,EAAE,MAAM,aAAa,QAAQ,MAAM,GAAG;AAAA,IAAQ;AAAA,EAClD,MAAM,SAAS,MAAM,OAAO,KAAK,CAAC,WAAW,WAAW,MAAM,CAAC;AAAA,EAS/D,IAAI;AAAA,IACF,MAAM,aAAa,QAAQ,MAAM;AAAA,IACjC,OAAO,OAAO;AAAA,IACd,IAAI,OAAO,aAAa;AAAA,MAAG,MAAM;AAAA,IACjC,MAAM,IAAI,eACR,WAAW,UACX,OAAO,UACP,GAAG,OAAO,OAAO,KAAK,oCACxB;AAAA;AAAA;;;AClJG,IAAM,oBAAoB,CAAC,WAChC,OAAO,SAAS,WAAW,EAAE,KAAK,GAAG,MAAM,KAAO,KAAK,EAAE,IAAI,EAAE,MAAM,KAAO,KAAK,OAAO,IAAI;AAMvF,IAAM,kBAAkB,OAAO,QAAoB,aACxD,OAAO,aAAa,SAAS,WAAW,kBAAkB,SAAS,MAAM,CAAC;AAErE,IAAM,UAAS,CAAC,OAAe,YACpC,IAAI,MAAM,eAAe,UAAU,SAAS;AAGvC,IAAM,cAAc,CAAC,UAAiC;AAAA,EAC3D,MAAM,QAAQ,YAAY,KAAK;AAAA,EAC/B,IAAI,MAAM,SAAS;AAAA,IAAG,MAAM,QAAO,MAAM,OAAO,MAAM,KAAK,IAAI,CAAC;AAAA;AAG3D,IAAM,SAAS,OAAO,QAAoB,UAAuC;AAAA,EACtF,MAAM,SAAS,YAAY,MAAM,MAAM;AAAA,EACvC,IAAI,WAAW;AAAA,IAAW,MAAM,QAAO,MAAM,OAAO,kBAAkB,MAAM,QAAQ;AAAA,EACpF,MAAM,OACJ,OAAO,SAAS,SAAS,MAAM,OAAO,WAAW,OAAO,OAAO,GAAG,CAAC,IAAI,OAAO;AAAA,EAChF,OAAO;AAAA,IACL;AAAA,IACA,WAAW,aAAa,MAAM,OAAO,QAAQ,IAAI;AAAA,IACjD,QAAQ,cAAc,MAAM,OAAO,MAAM,MAAM;AAAA,EACjD;AAAA;AAOK,IAAM,iBAAiB,CAAC,QAAoB,OAAe,WAA+B;AAAA,EAC/F,IAAI,aAAa,MAAM;AAAA,IAAG;AAAA,EAC1B,IAAI,OAAO,SAAS,UAAU;AAAA,IAC5B,MAAM,QACJ,OACA,6FACE,yFACA,oBACJ;AAAA,EACF;AAAA,EACA,IAAI,OAAO,QAAQ,OAAO,aAAa,GAAG;AAAA,IACxC,MAAM,QACJ,OACA,OAAO,OAAO,OAAO,GAAG,wDACtB,mEACJ;AAAA,EACF;AAAA;AAIK,IAAM,YAAY,OACvB,QACA,UAC2D;AAAA,EAC3D,MAAM,WAAW,MAAM,OAAO,QAAQ,KAAK;AAAA,EAC3C,eAAe,QAAQ,MAAM,OAAO,SAAS,MAAM;AAAA,EACnD,MAAM,SAAS,MAAM,aAAa,QAAQ,SAAS,MAAM;AAAA,EACzD,IAAI,OAAO,kBAAkB,MAAM;AAAA,IACjC,MAAM,QACJ,MAAM,OACN,GAAG,MAAM,sFACP,2FACA,qCACJ;AAAA,EACF;AAAA,EAKA,IAAI,MAAM,WAAW,QAAQ,MAAM,QAAQ,MAAM,KAAK,GAAG;AAAA,IACvD,MAAM,QACJ,MAAM,OACN,GAAG,SAAS,gDAAgD,MAAM,cAChE,4CAA4C,SAAS,uCACzD;AAAA,EACF;AAAA,EACA,OAAO,EAAE,UAAU,OAAO;AAAA;AAUrB,IAAM,kBAAkB,OAC7B,QACA,OACA,UACA,QACA,mBACkB;AAAA,EAClB,MAAM,QAAQ,MAAM,OAAO,SAAS,SAAS,SAAS;AAAA,EACtD,MAAM,cAAc,UAAU,aAAa,UAAU,KAAK,MAAM;AAAA,EAChE,IAAI,eAAgB,UAAU,aAAa,OAAO,QAAS;AAAA,IACzD,MAAM,QACJ,OACA,GAAG,SAAS,mCAAmC,cAAc,SAAS,YAAY,cAChF,2FACA,UACJ;AAAA,EACF;AAAA;AAQK,IAAM,oBAAoB,OAC/B,QACA,MACA,MACA,KACA,mBACkB;AAAA,EAClB,MAAM,QAAQ,SAAS,YAAY,kBAAiB,KAAK,OAAO,KAAK,MAAM,IAAI,YAAY,IAAI;AAAA,EAC/F,IAAI,MAAM,SAAS;AAAA,IAAG,MAAM,QAAO,KAAK,OAAO,MAAM,KAAK,IAAI,CAAC;AAAA,EAC/D,MAAM,YAAY,YAAY,IAAI,MAAM;AAAA,EACxC,IAAI,cAAc;AAAA,IAAW,MAAM,QAAO,IAAI,OAAO,kBAAkB,IAAI,QAAQ;AAAA,EACnF,eAAe,QAAQ,IAAI,OAAO,SAAS;AAAA,EAC3C,QAAQ,UAAU,WAAW,MAAM,UAAU,QAAQ,IAAI;AAAA,EACzD,MAAM,gBAAgB,QAAQ,KAAK,OAAO,UAAU,QAAQ,cAAc;AAAA,EAC1E,MAAM,gBAAgB,QAAQ,QAAQ;AAAA;;;ACjIxC,IAAM,eAAe,CACnB,OACA,UACA,aACA,YAC0B;AAAA,EAC1B,QAAQ,MAAM;AAAA,EACd,OAAO,MAAM;AAAA,EACb,QAAQ,OAAO;AAAA,EACf,WAAW,SAAS;AAAA,EACpB;AAAA,EACA,eAAe,SAAS;AAAA,KACpB,OAAO,UAAU,YAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,KACxD,OAAO,QAAQ,YAAY,CAAC,IAAI,EAAE,KAAK,OAAO,IAAI;AAAA,KAClD,OAAO,iBAAiB,YAAY,CAAC,IAAI,EAAE,cAAc,OAAO,aAAa;AACnF;AAGO,IAAM,UAAU,OACrB,QACA,UAC8C;AAAA,EAC9C,MAAM,WAAW,MAAM,OAAO,QAAQ,KAAK;AAAA,EAC3C,MAAM,QAAQ,MAAM,OAAO,SAAS,SAAS,SAAS;AAAA,EACtD,MAAM,SAAS,MAAM,aAAa,QAAQ,SAAS,MAAM;AAAA,EACzD,IAAI,UAAU,aAAa,CAAC,OAAO;AAAA,IAAQ;AAAA,EAC3C,OAAO,aAAa,OAAO,UAAU,UAAU,YAAY,KAAK,UAAU,KAAK,GAAG,MAAM;AAAA;AAUnF,IAAM,cAAc,OACzB,QACA,MACA,MACA,WACkB;AAAA,EAElB,IAAI,SAAS;AAAA,IAAW,YAAY,IAAI;AAAA,EACxC,MAAM,WAAW,SAAS,YAAY,YAAY,UAAU,IAAI,EAAE;AAAA,EAClE,MAAM,kBAAkB,QAAQ,MAAM,MAAM,QAAQ,QAAQ;AAAA,EAC5D,OAAO,EAAE,QAAQ,WAAW,aAAa,KAAK;AAAA;AAGzC,IAAM,UAAU,OACrB,QACA,MACA,WACkB;AAAA,EAClB,IAAI,KAAK,UAAU,OAAO,SAAS,KAAK,WAAW,OAAO,QAAQ;AAAA,IAChE,OAAO,YAAY,QAAQ,MAAM,MAAM,MAAM;AAAA,EAC/C;AAAA,EACA,YAAY,IAAI;AAAA,EAChB,MAAM,UAAU,UAAU,IAAI,EAAE;AAAA,EAEhC,MAAM,SAAS,YAA2B;AAAA,IACxC,MAAM,gBAAgB,QAAQ,MAAM,OAAO,QAAQ,IAAI,CAAC;AAAA,IACxD,OAAO,EAAE,QAAQ,SAAS;AAAA;AAAA,EAI5B,IAAI,YAAY,OAAO;AAAA,IAAa,OAAO,OAAO;AAAA,EAClD,MAAM,OAAO,MAAM,QAAQ,QAAQ,IAAI;AAAA,EACvC,IAAI,SAAS,aAAa,CAAC,KAAK,UAAU,KAAK,gBAAgB;AAAA,IAAS,OAAO,OAAO;AAAA,EACtF,OAAO,EAAE,QAAQ,OAAO;AAAA;AAUnB,IAAM,eAAe,OAC1B,QACA,OACA,QACA,QAAQ,UAC0B;AAAA,EAClC,YAAY,KAAK;AAAA,EACjB,QAAQ,UAAU,WAAW,MAAM,UAAU,QAAQ,KAAK;AAAA,EAC1D,MAAM,WAAW,UAAU,KAAK;AAAA,EAQhC,MAAM,UACJ,WAAW,cAAc,OAAO,UAAU,MAAM,SAAS,OAAO,WAAW,MAAM;AAAA,EACnF,MAAM,QAAQ,UAAU,YAAY;AAAA,EAGpC,IAAI,UAAU,aAAa,EAAE,SAAS,WAAW,YAAY;AAAA,IAC3D,MAAM,gBAAgB,QAAQ,MAAM,OAAO,UAAU,QAAQ,SAAS,MAAM;AAAA,EAC9E;AAAA,EACA,IAAI;AAAA,IAAS,MAAM,UAAU,QAAQ,MAAM;AAAA,EAC3C,MAAM,SAAS,MAAM,OAAO,SAAS,SAAS,SAAS;AAAA,EAIvD,IACE,OAAO,UACP,WAAW,aACX,UAAU,MAAM,MAAM,SAAS,UAC/B,OAAO,gBAAgB,SAAS,QAChC;AAAA,IACA,OAAO,aAAa,OAAO,UAAU,SAAS,QAAQ,MAAM;AAAA,EAC9D;AAAA,EAEA,MAAM,OAAO,gBACX,SAAS,WACT,SAAS,OACT,kBAAkB,SAAS,MAAM,CACnC;AAAA,EACA,MAAM,gBAAgB,QAAQ,SAAS,MAAM;AAAA,EAC7C,MAAM,SAAS,OAAO,WAAmC;AAAA,IAEvD,MAAM,UACJ,WAAW,aACV,MAAM,OAAO,WAAW,SAAS,SAAS,EAAE,KAC3C,MAAM,MACN,MAAM,KACR;AAAA,IACF,MAAM,QACJ,MAAM,OACN,UACI,0FACE,2CAA2C,WAC7C,oEAAoE,SAAS,eAC3E,gCAAgC,QACxC;AAAA;AAAA,EAEF,IAAI;AAAA,IACF,MAAM,UAAU,QAAQ,MAAM,QAAQ,SAAS,SAAS;AAAA,IACxD,OAAO,OAAO;AAAA,IACd,OAAO,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA;AAAA,EAEtE,MAAM,QAAQ,MAAM,aAAa,QAAQ,SAAS,MAAM;AAAA,EACxD,IAAI,CAAC,MAAM;AAAA,IAAQ,OAAO,OAAO,4DAA4D;AAAA,EAC7F,OAAO,aAAa,OAAO,UAAU,SAAS,QAAQ,KAAK;AAAA;AAItD,IAAM,YAAY,OACvB,QACA,WACkB;AAAA,EAClB,MAAM,SAAS,YAAY,OAAO,MAAM;AAAA,EACxC,IAAI,WAAW;AAAA,IAAW,MAAM,QAAO,OAAO,OAAO,kBAAkB,OAAO,QAAQ;AAAA,EACtF,eAAe,QAAQ,OAAO,OAAO,MAAM;AAAA,EAG3C,MAAM,gBAAgB,QAAQ,OAAO,aAAa;AAAA,EAClD,MAAM,OAAO,WAAW,OAAO,SAAS;AAAA;;;AJrJnC,IAAM,aAAa,UAAqB,aAAa;AAErD,IAAM,qBAAqB,MACvB,iBACP,YACO,YAAI,UAAU,GAAG;AAAA,EACtB,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,WAAW,SAAS,GAAG;AAAA,IAK5B,MAAM,MAAa,gBAAQ,CAAC,CAAC;AAAA,IAE7B,MAAM,GAAG,MAAM,aACb,KAAK,YAAY;AAAA,MACf,MAAM,QAAQ,MAAM,QAAQ,QAAQ,IAAI;AAAA,MACxC,IAAI,UAAU;AAAA,QAAW;AAAA,MACzB,OAAO,WAAW,YAAY,SAAQ,KAAK,IAAI;AAAA,KAChD;AAAA,IAEH,MAAM,GAAG,YAAY,MAAM,aAAa;AAAA,MAEtC,IAAI,WAAW;AAAA,QAAW,OAAO,eAAe,UAAU;AAAA,MAC1D,IAAI,YAAW,IAAI;AAAA,QAAG,OAAO,KAAK,MAAM,QAAQ,QAAQ,MAAM,MAAM,CAAC;AAAA,MAUrE,MAAM,QAAQ,eAAe,MAAM,OAAO;AAAA,MAC1C,MAAM,SAAS,eAAe,MAAM,QAAQ;AAAA,MAC5C,OAAO,UAAU,aACf,WAAW,cACV,UAAU,OAAO,SAAS,WAAW,OAAO,UAC3C,KAAK,MAAM,YAAY,QAAQ,EAAE,QAAQ,MAAM,GAAG,WAAW,MAAM,CAAC,IAC7D,gBAAQ,SAAS;AAAA;AAAA,IAK9B,WAAW,GAAG,KAAK,YAAY,MAAM,aAC5B,gBAAQ,cAAc,EAAE,KAAK,YAAY,OAAO,CAAC,GAAG,CAAC,UAC1D,KAAK,MAAM,aAAa,QAAQ,MAAM,QAAQ,KAAK,CAAC,CACtD;AAAA,IAEF,QAAQ,GAAG,aAAa,KAAK,MAAM,UAAU,QAAQ,MAAM,CAAC;AAAA,EAC9D,CAAC;AAAA,CACF,CACH;;AK5FF;AACA;AACA;AACA;;;ACMA,IAAM,UAAU;AAGT,IAAM,YAAY,CAAC,UAAkB,aAC1C,aAAa,WACT;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ,KAAK,QAAQ,IAAI,QAAQ;AAAA,EACjC;AACF,IACA,CAAC,UAAU,UAAU,QAAQ;AAG5B,IAAM,aAAa,CAAC,UAAkB,aAC3C,aAAa,WACT;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ,KAAK,QAAQ,IAAI,QAAQ;AAAA,EACjC;AACF,IACA,CAAC,UAAU,SAAS,QAAQ;AAGlC,IAAM,cAAc,CAAC,WAAwC;AAAA,EAC3D,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,QAAQ,OAAO,MAAM;AAAA,CAAI,GAAG;AAAA,IACrC,IAAI,KAAK,KAAK,MAAM,IAAI;AAAA,MACtB,IAAI,OAAO,OAAO;AAAA,QAAG;AAAA,MACrB;AAAA,IACF;AAAA,IACA,MAAM,KAAK,KAAK,QAAQ,IAAI;AAAA,IAC5B,IAAI,MAAM;AAAA,MAAG;AAAA,IACb,MAAM,MAAM,KAAK,MAAM,GAAG,EAAE;AAAA,IAC5B,IAAI,QAAQ;AAAA,MAAY;AAAA,IACxB,OAAO,IAAI,KAAK,KAAK,MAAM,KAAK,CAAC,EAAE,KAAK,CAAC;AAAA,EAC3C;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,OAAO,CAAC,SACZ,SAAS,aAAa,QAAQ,KAAK,IAAI,IAAI,OAAO,IAAI,IAAI;AAErD,IAAM,YAAY,CAAC,UAAkB,WAAyC;AAAA,EACnF,IAAI,aAAa,UAAU;AAAA,IACzB,MAAM,SAAS,YAAY,MAAM;AAAA,IACjC,MAAM,OAAM,KAAK,OAAO,IAAI,KAAK,CAAC;AAAA,IAClC,MAAM,OAAM,KAAK,OAAO,IAAI,KAAK,CAAC;AAAA,IAClC,MAAM,QAAO,OAAO,IAAI,KAAK;AAAA,IAC7B,OAAO,SAAQ,aAAa,SAAQ,aAAa,UAAS,YACtD,YACA,EAAE,WAAK,aAAM,UAAI;AAAA,EACvB;AAAA,EAEA,MAAM,UAAU,OAAO,MAAM;AAAA,CAAI,EAAE,MAAM,IAAI,MAAM,GAAG;AAAA,EACtD,MAAM,MAAM,KAAK,OAAO,EAAE;AAAA,EAC1B,MAAM,MAAM,KAAK,OAAO,EAAE;AAAA,EAC1B,MAAM,OAAO,OAAO;AAAA,EACpB,OAAO,QAAQ,aAAa,QAAQ,aAAa,SAAS,aAAa,SAAS,KAC5E,YACA,EAAE,KAAK,MAAM,IAAI;AAAA;AAGhB,IAAM,aAAa,CAAC,UAAkB,WAAuC;AAAA,EAClF,IAAI,aAAa;AAAA,IAAU,OAAO,KAAK,YAAY,MAAM,EAAE,IAAI,KAAK,CAAC;AAAA,EAErE,OAAO,MAAM,OAAO,MAAM;AAAA,CAAI,EAAE,MAAM,IAAI,MAAM,GAAG,EAAE,EAAE;AAAA;;;ADnElD,IAAM,YAAY,CAAC,UACxB,OAAO,UAAU,YAAY,UAAU,SAAQ,UAAU,SACrD,OAAQ,MAA4B,IAAI,IACxC;AAGN,IAAM,UAAS,CAAC,UACd,UAAU,KAAK,MAAM,YAAY,UAAU,KAAK,MAAM;AAExD,IAAM,MAAM,CAAC,MAAyB,cACpC,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,EAC/B,OAAO,YAAY,QAAQ;AAAA,EAC3B,IAAI,YAAY,WAAW;AAAA,IACzB,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAAA,IACpC;AAAA,EACF;AAAA,EACA,MAAM,QAAQ,MAAM,SAAS,MAAM;AAAA,IACjC,OAAO;AAAA,IACP,OAAO,CAAC,UAAU,QAAQ,MAAM;AAAA,IAChC,SAAS;AAAA,EACX,CAAC;AAAA,EACD,MAAM,MAAgB,CAAC;AAAA,EACvB,MAAM,MAAgB,CAAC;AAAA,EACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAkB,IAAI,KAAK,KAAK,CAAC;AAAA,EAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAkB,IAAI,KAAK,KAAK,CAAC;AAAA,EAC1D,MAAM,GAAG,SAAS,CAAC,UAAU;AAAA,IAC3B,OAAO,IAAI,MAAM,QAAQ,YAAY,MAAM,SAAS,CAAC;AAAA,GACtD;AAAA,EACD,MAAM,GAAG,SAAS,CAAC,UAAU,WAAW;AAAA,IACtC,MAAM,SAAS,OAAO,OAAO,GAAG,EAAE,SAAS,MAAM;AAAA,IACjD,QAAQ;AAAA,MAEN,UAAU,YAAY;AAAA,MACtB,QAAQ,WAAW,OAAO,SAAS,GAAG;AAAA,aAAsB,UAAU,KAAK;AAAA,MAC3E,QAAQ,OAAO,OAAO,GAAG,EAAE,SAAS,MAAM;AAAA,IAC5C,CAAC;AAAA,GACF;AAAA,CACF;AAEH,IAAM,SAAS,CAAC,UAA+D;AAAA,EAC7E,IAAI,MAAM,eAAe;AAAA,IAAG,OAAO;AAAA,EACnC,IAAI,MAAM,OAAO;AAAA,IAAG,OAAO;AAAA,EAC3B,IAAI,MAAM,YAAY;AAAA,IAAG,OAAO;AAAA,EAChC,OAAO;AAAA;AAGT,IAAM,cAAc,OAAO,MAAc,OAAmB,YAA0B;AAAA,EAEpF,MAAM,OAAO,KAAK,QAAQ,IAAI,GAAG,IAAI,SAAS,IAAI,KAAK,YAAY,CAAC,EAAE,SAAS,KAAK,OAAO;AAAA,EAG3F,MAAM,SAAS,MAAM,KAAK,MAAM,MAAM,GAAK;AAAA,EAC3C,IAAI;AAAA,IACF,IAAI;AAAA,MACF,MAAM,OAAO,UAAU,KAAK;AAAA,MAG5B,IAAI,QAAQ,QAAQ,aAAa,QAAQ,QAAQ,WAAW;AAAA,QAC1D,MAAM,OAAO,MAAM,QAAQ,OAAO,IAAI,QAAQ,OAAO,EAAE;AAAA,MACzD;AAAA,MACA,MAAM,OAAO,MAAM,QAAQ,IAAI;AAAA,MAC/B,MAAM,OAAO,KAAK;AAAA,cAClB;AAAA,MACA,MAAM,OAAO,MAAM;AAAA;AAAA,IAErB,MAAM,OAAO,MAAM,IAAI;AAAA,IACvB,OAAO,OAAO;AAAA,IACd,MAAM,OAAO,IAAI,EAAE,MAAM,MAAG;AAAA,MAAG;AAAA,KAAS;AAAA,IACxC,MAAM;AAAA;AAAA;AAIH,IAAM,cAAc,CAAC,UAA8B,CAAC,MAAkB;AAAA,EAC3E,MAAM,YAAY,QAAQ,iBAAiB;AAAA,EAC3C,MAAM,WAAW,QAAQ;AAAA,EASzB,IAAI,aAAa,YAAY,aAAa,SAAS;AAAA,IACjD,MAAM,IAAI,MACR,+CAA+C,KAAK,UAAU,QAAQ,+CACxE;AAAA,EACF;AAAA,EACA,MAAM,eAA6B;AAAA,EACnC,OAAO;AAAA,IACL,cAAc,MAAM,QAAQ,UAAU,KAAK;AAAA,IAC3C,MAAM,CAAC,SAAS,IAAI,MAAM,SAAS;AAAA,IACnC,aAAa,OAAO,aAAa;AAAA,MAC/B,MAAM,SAAS,MAAM,IAAI,WAAW,UAAU,QAAQ,GAAG,SAAS;AAAA,MAClE,OAAO,OAAO,aAAa,IAAI,WAAW,UAAU,OAAO,MAAM,IAAI;AAAA;AAAA,IAEvE,YAAY,OAAO,aAAa;AAAA,MAC9B,MAAM,SAAS,MAAM,IAAI,UAAU,UAAU,QAAQ,GAAG,SAAS;AAAA,MACjE,OAAO,OAAO,aAAa,IAAI,UAAU,UAAU,OAAO,MAAM,IAAI;AAAA;AAAA,IAEtE,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,UAAU,OAAO,SAAS;AAAA,MACxB,IAAI;AAAA,QACF,OAAO,IAAI,WAAW,MAAM,SAAS,IAAI,CAAC;AAAA,QAC1C,OAAO,OAAO;AAAA,QACd,IAAI,QAAO,KAAK;AAAA,UAAG;AAAA,QACnB,MAAM;AAAA;AAAA;AAAA,IAGV,YAAY,OAAO,SAAS;AAAA,MAC1B,IAAI;AAAA,QACF,MAAM,OAAO,IAAI;AAAA,QACjB,OAAO,OAAO;AAAA,QACd,IAAI,CAAC,QAAO,KAAK;AAAA,UAAG,MAAM;AAAA;AAAA;AAAA,IAG9B,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA,IAC/D,MAAM,OAAO,SAAS;AAAA,MACpB,IAAI;AAAA,QACF,MAAM,QAAQ,MAAM,MAAM,IAAI;AAAA,QAC9B,OAAO;AAAA,UACL,KAAK,MAAM;AAAA,UACX,KAAK,MAAM;AAAA,UACX,KAAK,MAAM;AAAA,UACX,MAAM,OAAO,KAAK;AAAA,UAClB,MAAM,MAAM,OAAO;AAAA,UACnB,MAAM,MAAM;AAAA,UACZ,KAAK,MAAM;AAAA,QACb;AAAA,QACA,OAAO,OAAO;AAAA,QACd,IAAI,QAAO,KAAK;AAAA,UAAG;AAAA,QACnB,MAAM;AAAA;AAAA;AAAA,IAGV,iBAAiB;AAAA,EACnB;AAAA;;AE1IF;AAWA,IAAM,kBAAkB,CAAC,YAAwC,WAAW;AAE5E,IAAM,gBAAgB,CAAC,UAA2B,UAAU,KAAK,kBAAkB;AAM5E,IAAM,oBAAoB,CAAC,WAA2C;AAAA,EAC3E,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,SAAS,QAAQ;AAAA,IAC1B,IAAI,CAAC,OAAO,cAAc,MAAM,IAAI,KAAK,MAAM,OAAO,KAAK,MAAM,OAAO,OAAO;AAAA,MAC7E,MAAM,KACJ,GAAG,cAAc,MAAM,KAAK,mDAAmD,OAAO,MAAM,IAAI,GAClG;AAAA,IACF;AAAA,IACA,IAAI,MAAM,UAAU,IAAI;AAAA,MACtB,MAAM,KAAK,mBAAmB,OAAO,MAAM,IAAI,sBAAsB;AAAA,IACvE;AAAA,IACA,MAAM,OAAO,OAAO,IAAI,MAAM,IAAI,KAAK,CAAC;AAAA,IACxC,KAAK,KAAK,KAAK;AAAA,IACf,OAAO,IAAI,MAAM,MAAM,IAAI;AAAA,EAC7B;AAAA,EACA,YAAY,MAAM,SAAS,QAAQ;AAAA,IACjC,IAAI,KAAK,SAAS;AAAA,MAAG;AAAA,IAErB,MAAM,OAAO,IAAI;AAAA,IACjB,WAAW,SAAS,MAAM;AAAA,MACxB,IAAI,MAAM,UAAU;AAAA,QAAI;AAAA,MACxB,IAAI,KAAK,IAAI,MAAM,KAAK,GAAG;AAAA,QACzB,MAAM,KAAK,GAAG,MAAM,qBAAqB,OAAO,IAAI,kBAAkB;AAAA,MACxE;AAAA,MACA,KAAK,IAAI,MAAM,KAAK;AAAA,IACtB;AAAA,IAEA,MAAM,iBAAiB,CAAC,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,MAAM,KAAK,EAAE,OAAO,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC;AAAA,IAC5F,IAAI,eAAe,SAAS,GAAG;AAAA,MAC7B,MAAM,YAAY,KACf,IAAI,CAAC,UAAU,GAAG,cAAc,MAAM,KAAK,MAAM,gBAAgB,MAAM,OAAO,IAAI,EAClF,KAAK,OAAO;AAAA,MACf,MAAM,KAAK,QAAQ,OAAO,IAAI,wCAAwC,WAAW;AAAA,IACnF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAAA;AAIF,MAAM,oBAAyB,iBAAY,aAAa,EAE5D;AAAC;AASG,IAAM,aAAa,CAAC,WAAuC;AAAA,EAChE,MAAM,WAAW,kBAAkB,MAAM;AAAA,EACzC,IAAI,SAAS,SAAS,GAAG;AAAA,IACvB,MAAM,IAAI,YAAY;AAAA,MACpB,SAAS,kBAAkB,SAAS,KAAK,IAAI;AAAA,IAC/C,CAAC;AAAA,EACH;AAAA;;ACvFF;AAMO,IAAM,mBAAmB,CAAC,SAAqB,YAAY,MAC1D,gBAAS,mBAAmB,GAAG,iBAAiB,CAAC,EAAE,KACjD,eAAQ,gBAAgB,MAAM,CAAC,CACvC;;ACIK,MAAM,yBAAyB,MAAM;AAAA,EAC1C,WAAW,CAAC,SAAiB;AAAA,IAC3B,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA;AAEhB;AAGO,IAAM,OAAO;AACb,IAAM,UAAU;AAChB,IAAM,KAAK;AAGlB,IAAM,SAA8B,IAAI,IAAI,CAAC,aAAa,WAAW,WAAW,CAAC;AAG1E,IAAM,YAAY,CAAC,SACxB,OAAO,cAAc,IAAI,KAAK,QAAQ,KAAK,QAAQ,OAC/C,KAAK,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG,IAChC;AAGC,IAAM,gBAAgB,CAAC,aAAmD;AAAA,EAC/E,IAAI,SAAS,WAAW,GAAG;AAAA,IACzB,MAAM,IAAI,MACR,4FACF;AAAA,EACF;AAAA,EACA,WAAW,UAAU,UAAU;AAAA,IAC7B,MAAM,QAAQ,WAAW,MAAM,CAAC,4BAA4B,IAAI,aAAa,MAAM;AAAA,IACnF,IAAI,MAAM,SAAS,GAAG;AAAA,MACpB,MAAM,IAAI,MAAM,sBAAsB,KAAK,UAAU,MAAM,MAAM,MAAM,KAAK,IAAI,GAAG;AAAA,IACrF;AAAA,EACF;AAAA,EACA,OAAO,CAAC,GAAG,QAAQ;AAAA;AAOd,IAAM,WAAW,CAAC,MAAc,aACrC,aAAa,IAAI,EAAE,SAAS,IACxB,YACA,SAAS,KAAK,CAAC,WAAW,KAAK,WAAW,GAAG,SAAS,CAAC;AAE7D,IAAM,UAAU,CAAC,UACf,MAAM,KAAK,KAAK,KAAK,CAAC,wBAAwB,KAAK,CAAC,WAAW,MAAM,WAAW,MAAM,CAAC;AAGzF,IAAM,cAAc,CAAC,WAAmD;AAAA,EACtE,MAAM,QAAQ,QAAQ,WAAW,SAAS,MAAM,OAAO,OAAO,MAAM,UAAU,MAAM,IAAI;AAAA,EACxF,OAAO,UAAU,aAAa,QAAQ,KAAK,IAAI,QAAQ;AAAA;AASzD,IAAM,cAAc,CAAC,OAAe,aAAoD;AAAA,EACtF,MAAM,OAAO,aAAa,OAAO,EAAE,MAAM,SAAS,GAAG,SAAS;AAAA,EAC9D,OAAO,SAAS,MAAM,QAAQ,MAAM,YAAY,YAAY;AAAA;AAG9D,IAAM,mBACJ;AAEF,IAAM,mBAAmB,CACvB,MACA,aACuB;AAAA,EACvB,OAAO,QAAQ,QAAQ;AAAA,EACvB,IAAI,QAAQ,aAAa;AAAA,IACvB,MAAM,QAAQ,KAAK,MAAM;AAAA,IACzB,MAAM,OAAO,MAAM,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC;AAAA,IACnD,MAAM,QAAQ,KAAK,SAAS,QAAQ,IAAI,KAAK,MAAM,GAAG,CAAC,SAAS,MAAM,IAAI;AAAA,IAC1E,MAAM,SAAS,KAAK,WAAW,KAAK,KAAK,OAAO,YAAY,QAAQ,KAAK;AAAA,IACzE,IAAI,CAAC;AAAA,MAAQ,OAAO;AAAA,IACpB,MAAM,QAAQ,YAAY,OAAO,QAAQ;AAAA,IACzC,IAAI,UAAU;AAAA,MAAW,OAAO,aAAa;AAAA,IAC7C,OAAO,UAAU,QAAQ,YAAY,wBAAwB;AAAA,EAC/D;AAAA,EACA,IAAI,QAAQ,WAAW;AAAA,IACrB,MAAM,QAAQ,KAAK,WAAW,IAAI,YAAY,KAAK,EAAE,IAAI;AAAA,IACzD,IAAI,UAAU;AAAA,MAAW,OAAO;AAAA,IAMhC,OAAO,YAAY,OAAO,QAAQ,MAAM,YAAY,WAAW,qBAAqB;AAAA,EACtF;AAAA,EACA,IAAI,QAAQ,aAAa;AAAA,IACvB,MAAM,QAAQ,KAAK,MAAM,GAAG,EAAE;AAAA,IAC9B,MAAM,UACJ,MAAM,MAAM,CAAC,SAAS,SAAS,QAAQ,SAAS,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,SAAS,MAAM;AAAA,IACzF,OAAO,WAAW,YAAY,KAAK,KAAK,SAAS,EAAE,MAAM,YACrD,YACA;AAAA,EACN;AAAA,EACA,OAAO,aAAa,OAAO,GAAG;AAAA;AAGhC,IAAM,KAAK;AAGX,IAAM,QAAQ,CAAC,QAAoC;AAAA,EACjD,OAAO,MAAM,IAAI,QAAQ,YAAY;AAAA,EACrC,IAAI,IAAI,WAAW;AAAA,IAAG,OAAO;AAAA,EAC7B,IAAI,IAAI,WAAW;AAAA,IAAG,QAAQ,SAAS,QAAQ,SAAS,SAAS,GAAG,KAAK,MAAM,EAAE;AAAA,EACjF,OACE,IAAI,WAAW,KACf,SAAS,QACT,GAAG,KAAK,MAAM,EAAE,KAChB,WAAW,QACX,GAAG,KAAK,YAAY,EAAE;AAAA;AAQnB,IAAM,oBAAoB,CAC/B,MACA,YACuB;AAAA,EACvB,OAAO,YAAY,QAAQ;AAAA,EAC3B,MAAM,QAAQ,CAAC,SACb,SAAS,aAAa,SAAS,MAAM,QAAQ,QAAQ,MAAM;AAAA,EAC7D,IAAI,YAAY;AAAA,IAAW,OAAO,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,EACzE,IAAI,YAAY,SAAS;AAAA,IAEvB,OAAO,MAAM,GAAG,SAAS,QAAQ;AAAA,IACjC,IAAI,SAAS,QAAQ,MAAM,QAAQ,SAAS,aAAa,CAAC,aAAa,KAAK,IAAI,GAAG;AAAA,MACjF,OAAO;AAAA,IACT;AAAA,IACA,IAAI,KAAK,SAAS,KAAK,CAAC,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC;AAAA,MAAG,OAAO;AAAA,IACzD,OAAO,QAAQ,QAAQ,KAAK,MAAM,EAAE;AAAA,IACpC,IAAI,WAAW,aAAa,WAAW,QAAQ,QAAQ;AAAA,MACrD,OAAO;AAAA,IACT;AAAA,IACA,OAAO,MAAM,IAAI,IAAI,YAAY;AAAA,EACnC;AAAA,EACA,IAAI,YAAY,IAAI;AAAA,IAClB,OAAO,OAAO,KAAK,SAAS,SAAS;AAAA,IACrC,OAAO,UAAU,QAAQ,QAAQ,QAAQ,MAAM,WAAW,KAAK,MAAM,IAAI,IACrE,YACA;AAAA,EACN;AAAA,EACA,OAAO,GAAG,OAAO,OAAO;AAAA;AAkBnB,IAAM,YAAY,CAAC,MAAyB,gBAA+B;AAAA,EAChF,OAAO,SAAS,OAAO;AAAA,EACvB,IAAI,YAAY,UAAU,SAAS,SAAS,OAAO,MAAM,MAAM;AAAA,IAC7D,OAAO;AAAA,MACL,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,IAAI,YAAY,aAAa,QAAQ,aAAa,CAAC,OAAO,IAAI,GAAG;AAAA,IAAG,OAAO,EAAE,IAAI,WAAW;AAAA,EAC5F,MAAM,SAAS,QAAQ,cAAc,KAAK,KAAK,SAAS,KAAK,KAAK;AAAA,EAClE,IAAI,WAAW,YAAY,QAAQ,WAAW,SAAS,MAAM;AAAA,IAAM,OAAO,EAAE,IAAI,OAAO;AAAA,EACvF,MAAM,QAAQ,+BAA+B,KAAK,UAAU,EAAE,IAAI;AAAA,EAClE,IAAI,UAAU,aAAa,OAAO,KAAK,MAAM;AAAA,IAAa,OAAO,EAAE,IAAI,WAAW;AAAA,EAClF,OAAO;AAAA,IACL,QACE,aAAa,OAAO,OAAO,MAAM,iCAAiC,2BAClE;AAAA,EACJ;AAAA;;;ACjMK,IAAM,KAAK;AAGlB,IAAM,eAAoC,IAAI,IAAI;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAM,QAAQ;AAGP,IAAM,YAAY,CAAC,YACxB,QACG,MAAM;AAAA,CAAI,EACV,OAAO,CAAC,SAAS;AAAA,EAChB,MAAM,SAAS,MAAM,KAAK,IAAI,IAAI;AAAA,EAClC,OAAO,WAAW,aAAa,OAAO,MAAM,GAAG,EAAE,KAAK,CAAC,UAAU,aAAa,IAAI,KAAK,CAAC;AAAA,CACzF,EACA,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AAMvB,IAAM,oBAAoB,OAC/B,MACA,MACA,UACkB;AAAA,EAClB,MAAM,SAAS,MAAM,KAAK,KAAK,CAAC,IAAI,SAAS,MAAM,GAAG,KAAK,CAAC;AAAA,EAC5D,IAAI,OAAO,aAAa,GAAG;AAAA,IACzB,MAAM,IAAI,iBACR,cAAc,wEACZ,IAAI,iBAAiB,OAAO,OAAO,QAAQ,0BAC/C;AAAA,EACF;AAAA,EACA,MAAM,SAAS,UAAU,OAAO,MAAM;AAAA,EACtC,IAAI,OAAO,WAAW;AAAA,IAAG;AAAA,EACzB,MAAM,IAAI,iBACR,cAAc,gFACZ,mCAAmC,OAAO,KAAK,IAAI,yCACnD,oDACJ;AAAA;;;ACzDF,IAAM,UAAS,CAAC,MAAc,YAC5B,IAAI,iBAAiB,cAAc,SAAS,SAAS;AA0BhD,IAAM,cAAc,CAAC,YAA8C;AAAA,EACxE,MAAM,eACJ,QAAQ,QAAQ,aAChB,QAAQ,QAAQ,KAChB,QAAQ,QAAQ,aAChB,QAAQ,QAAQ;AAAA,EAClB,IAAI,CAAC;AAAA,IAAc;AAAA,EACnB,MAAM,QAAkB,CAAC;AAAA,EACzB,KAAK,QAAQ,OAAO,UAAY;AAAA,IAAG,MAAM,KAAK,eAAe;AAAA,EAC7D,KAAK,QAAQ,OAAO,QAAW;AAAA,IAAG,MAAM,KAAK,4BAA4B;AAAA,EACzE,IAAI,MAAM,WAAW;AAAA,IAAG;AAAA,EACxB,OAAO,QAAQ,QAAQ,KAAK,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG,QAAQ,MAAM,KAAK,OAAO;AAAA;AAS5E,IAAM,UAAU,CACrB,MACA,KACA,WACwB;AAAA,EACxB,IAAI,QAAQ;AAAA,IAAG,OAAO;AAAA,EACtB,IAAI,KAAK,QAAQ;AAAA,IAAK,QAAQ,KAAK,OAAO,SAAW;AAAA,EACrD,MAAM,aAAa,KAAK,OAAO,QAAW;AAAA,EAC1C,MAAM,aAAa,KAAK,OAAO,OAAW;AAAA,EAE1C,IAAI,cAAc;AAAA,IAAW,OAAO;AAAA,EACpC,IAAI,WAAW;AAAA,IAAW;AAAA,EAC1B,OAAO,OAAO,SAAS,KAAK,GAAG,IAAI,YAAY;AAAA;AAa1C,IAAM,qBAAqB,OAChC,MACA,MACA,SACA,WACkB;AAAA,EAClB,MAAM,WAAW,KAAK,aAAa;AAAA,EACnC,MAAM,SAAS,KAAK,MAAM,GAAG,KAAK,YAAY,GAAG,CAAC,KAAK;AAAA,EACvD,MAAM,MAAM,QAAQ,QAAQ,MAAM,KAAK,KAAK,MAAM,IAAI,OAAO;AAAA,EAC7D,MAAM,OAAO,EAAE,KAAK,MAAM,QAAQ,MAAM,KAAK,QAAQ,OAAO,EAAE;AAAA,EAC9D,IAAI,QAAQ,MAAM,UAAU,MAAM,MAAM;AAAA,IAAO;AAAA,EAC/C,MAAM,QACJ,MACA,SAAS,OAAO,KAAK,GAAG,YAAY,OAAO,GAAG,WAAW,KAAK,KAAK,SAAS,CAAC,qBAC3E,gCAAgC,OAAO,QAAQ,8CAC/C,kEACJ;AAAA;AASK,IAAM,iBAAiB,OAAO,SAA6D;AAAA,EAChG,MAAM,SAAS,MAAM,KAAK,KAAK,CAAC,eAAe,IAAI,CAAC;AAAA,EACpD,MAAM,MAAM,OAAO,OAAO,KAAK,EAAE,MAAM,KAAK;AAAA,EAC5C,OAAO,OAAO,aAAa,KAAK,IAAI,MAAM,CAAC,OAAO,QAAQ,KAAK,EAAE,CAAC,IAAI,IAAI,IAAI,MAAM,IAAI;AAAA;;;AChF1F,IAAM,UAAS,CAAC,MAAc,YAC5B,IAAI,iBAAiB,cAAc,SAAS,SAAS;AAGhD,IAAM,cAAc,CAAC,QAAgB,SAA2B;AAAA,EACrE,MAAM,QAAQ,KACX,MAAM,OAAO,SAAS,CAAC,EACvB,MAAM,GAAG,EACT,MAAM,GAAG,EAAE;AAAA,EACd,OAAO,MAAM,IAAI,CAAC,GAAG,UAAU,GAAG,UAAU,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,KAAK,GAAG,GAAG;AAAA;AAI5E,IAAM,YAAY,CAAC,WAA6B;AAAA,EACrD,MAAM,QAAQ,OAAO,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE;AAAA,EAC3C,OAAO,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,UAAU,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC;AAAA;AAqBpF,IAAM,kBAAkB,CAAC,SAAmD;AAAA,EAC1E,IAAI,SAAS;AAAA,IAAW,OAAO;AAAA,EAC/B,IAAI,KAAK,SAAS;AAAA,IAAa,OAAO,QAAQ,KAAK;AAAA,EACnD,IAAI,KAAK,QAAQ;AAAA,IAAG,OAAO,mBAAmB,OAAO,KAAK,GAAG;AAAA,EAC7D,KAAK,KAAK,OAAO,QAAW,GAAG;AAAA,IAC7B,OAAO,uCAAuC,KAAK,KAAK,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG;AAAA,EACrF;AAAA,EACA;AAAA;AAOK,IAAM,kBAAkB,OAC7B,MACA,QACA,MACA,WAC+B;AAAA,EAC/B,MAAM,QAAQ,UAAU,MAAM;AAAA,EAC9B,YAAY,OAAO,UAAU,MAAM,QAAQ,IAAI,MAAM,IAAI,CAAC,QAAQ,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG;AAAA,IAC7F,MAAM,KAAK,MAAM,SAAS,aAAa,KAAK,QAAQ,IAAI,YAAY,gBAAgB,IAAI;AAAA,IACxF,IAAI,OAAO,WAAW;AAAA,MACpB,MAAM,QACJ,MACA,GAAG,OAAO,MAAM,MAAM,gCAAgC,WAAW,+BAC/D,iGACJ;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM,OAAO,YAAY,QAAQ,IAAI;AAAA,EACrC,OAAO,eAAe,SAAS,MAAM,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,IAAI,CAAC,QAAQ,KAAK,KAAK,GAAG,CAAC,CAAC;AAAA,EAC/F,MAAM,MAAM,gBAAgB,UAAU;AAAA,EACtC,IAAI,QAAQ,WAAW;AAAA,IACrB,MAAM,QACJ,MACA,uBAAuB,UAAU,2DAC/B,2CACJ;AAAA,EACF;AAAA,EACA,YAAY,OAAO,SAAS,MAAM,QAAQ,GAAG;AAAA,IAC3C,MAAM,MAAM,OAAO,KAAK,MAAM;AAAA,IAC9B,IAAI,MAAM,SAAS,aAAa;AAAA,MAC9B,MAAM,QACJ,MACA,GAAG,UAAU,SAAS,YAAY,YAAY,KAAK,KAAK,kBACtD,+DACJ;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,gBAAgB,IAAI;AAAA,IAClC,IAAI,UAAU,WAAW;AAAA,MACvB,MAAM,QACJ,MACA,GAAG,OAAO,0CAA0C,yCAClD,8DACJ;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM,kBAAkB,MAAM,MAAM,CAAC,GAAG,OAAO,QAAQ,GAAG,IAAI,CAAC;AAAA,EAC/D,MAAM,SAAS,MAAM,KAAK,KAAK,IAAI;AAAA,EACnC,IAAI,WAAW,aAAa,WAAW;AAAA,IAAkB,OAAO;AAAA,EAChE,IAAI,QAAQ,SAAS;AAAA,IAAQ,OAAO;AAAA,EACpC,MAAM,QAAO,MAAM,MAAM,WAAW,YAAY,YAAY,KAAK,OAAO,oBAAoB;AAAA;AAQvF,IAAM,oBAAoB,OAC/B,MACA,QACA,MACA,SACA,WACkB;AAAA,EAClB,MAAM,OAAO,YAAY,OAAO;AAAA,EAChC,IAAI,SAAS,WAAW;AAAA,IACtB,MAAM,QACJ,MACA,GAAG,yFACD,kCACJ;AAAA,EACF;AAAA,EACA,MAAM,gBAAgB,MAAM,QAAQ,MAAM,gBAAgB;AAAA,EAC1D,MAAM,mBAAmB,MAAM,MAAM,SAAS,MAAM;AAAA;;;ACpItD,IAAM,WACJ;AACF,IAAM,cACJ;AAGK,IAAM,aACX,CAAC,MAAc,aACf,CAAC,UAA0B;AAAA,EACzB,MAAM,OAAO,UAAU,KAAK;AAAA,EAC5B,IAAI,SAAS,YAAY,SAAS;AAAA,IAAS,MAAM;AAAA,EACjD,MAAM,IAAI,MACR,cAAc,SAAS,0EACrB,IAAI,SAAS,KAAK,IAAI,uEACxB,EAAE,MAAM,CACV;AAAA;AAOG,IAAM,cAAc,CAAC,OAAe,WAAqD;AAAA,EAC9F,IAAI,OAAO,aAAa;AAAA,IAAG;AAAA,EAC3B,IAAI,SAAS,KAAK,OAAO,MAAM,GAAG;AAAA,IAChC,OAAO,IAAI,iBACT,WAAW,mFACT,uFACA,2DACJ;AAAA,EACF;AAAA,EACA,IAAI,YAAY,KAAK,OAAO,MAAM,GAAG;AAAA,IACnC,OAAO,IAAI,iBACT,WAAW,mFACb;AAAA,EACF;AAAA,EACA;AAAA;;;AC/CF;AACA;AACA,iBAAS;AAKF,IAAM,YAAY,OAAO,UAAuC;AAAA,EACrE,MAAM,MAAM,MAAM,QAAQ,MAAK,OAAO,GAAG,UAAU,CAAC;AAAA,EACpD,MAAM,UAAU,MAAM,GAAG,KAAK,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,EAC9D,IAAI;AAAA,IACF,MAAM,OAAO,MAAK,KAAK,QAAQ;AAAA,IAC/B,MAAM,UAAU,MAAM,OAAO,EAAE,MAAM,MAAM,MAAM,IAAM,CAAC;AAAA,IACxD,OAAO,EAAE,SAAS,KAAK;AAAA,IACvB,OAAO,OAAO;AAAA,IACd,MAAM,QAAQ;AAAA,IACd,MAAM;AAAA;AAAA;;;ACuDH,IAAM,iBAAiB,CAAC,YAA+B,SAA+B;AAAA,EAC3F,MAAM,WAAW,cAAc,UAAU;AAAA,EACzC,QAAQ,SAAS;AAAA,EAMjB,MAAM,UAAU,OACd,QACE,QAAQ,WAAiE,CAAC,MACpD;AAAA,IACxB,MAAM,QAAQ,KAAK,UAAU,IAAI;AAAA,IACjC,MAAM,UAAU,kBAAkB,MAAM;AAAA,MACtC;AAAA,SACI,WAAW,YAAY,CAAC,IAAI,EAAE,OAAO;AAAA,IAC3C,CAAC;AAAA,IACD,IAAI,YAAY;AAAA,MACd,MAAM,IAAI,iBAAiB,sBAAsB,UAAU,SAAS;AAAA,IACtE,MAAM,SAAS;AAAA,IACf,KAAK,IAAI,6BAA6B,OAAO;AAAA,IAC7C,MAAM,SAAS,MAAM,KAAK,KAAK,CAAC,MAAM,MAAM,MAAM,GAAG,IAAI,CAAC;AAAA,IAC1D,MAAM,UAAU,YAAY,OAAO,MAAM;AAAA,IACzC,IAAI,YAAY;AAAA,MAAW,MAAM;AAAA,IACjC,OAAO;AAAA;AAAA,EAQT,MAAM,WAAW,OAAO,MAAc,YAA0B;AAAA,IAC9D,MAAM,SAAS,SAAS,MAAM,QAAQ;AAAA,IACtC,MAAM,WAAW,KAAK,aAAa;AAAA,IACnC,IAAI,WAAW,WAAW;AAAA,MACxB,IAAI,QAAQ,QAAQ,aAAa,QAAQ,QAAQ,YAAY,aAAa,GAAG;AAAA,QAC3E,MAAM,IAAI,iBACR,cAAc,eAAe,OAAO,QAAQ,GAAG,4CAC7C,oBAAoB,SAAS,KAAK,IAAI,mDACtC,sBACJ;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,OAAO,UAAU,QAAQ,IAAI;AAAA,IACnC,IAAI,SAAS;AAAA,MAAW,MAAM,IAAI,iBAAiB,cAAc,6BAA6B;AAAA,IAC9F,MAAM,kBAAkB,MAAM,QAAQ,MAAM,SAAS,MAAM,KAAK,OAAO,CAAC;AAAA,IACxE,OAAO,EAAE,MAAM,OAAO;AAAA;AAAA,EAIxB,MAAM,cAAc,OAAO,MAAyB,WAAmC;AAAA,IACrF,MAAM,SAAS,MAAM,QAAQ,MAAM,WAAW,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;AAAA,IACzE,IAAI,OAAO,aAAa,GAAG;AAAA,MACzB,MAAM,SAAS,OAAO,OAAO,KAAK,EAAE,MAAM,GAAG,GAAG;AAAA,MAChD,MAAM,IAAI,MAAM,WAAW,KAAK,UAAU,IAAI,QAAQ,OAAO,OAAO,QAAQ,MAAM,QAAQ;AAAA,IAC5F;AAAA;AAAA,EAGF,OAAO;AAAA,IAEL,YAAY,OAAO,MAAM,YAAY;AAAA,MACnC,MAAM,SAAS,MAAM,OAAO;AAAA;AAAA,IAE9B,cAAc,MAAM,KAAK,aAAa;AAAA,IACtC,MAAM,OAAO,SAAS;AAAA,MACpB,MAAM,QAAQ,UAAU,MAAM,KAAK,aAAa,CAAC;AAAA,MACjD,IAAI,YAAY;AAAA,QAAO,MAAM,IAAI,iBAAiB,eAAe,MAAM,QAAQ;AAAA,MAC/E,IAAI,MAAM,OAAO;AAAA,QAAY,OAAO,KAAK,KAAK,IAAI;AAAA,MAGlD,MAAM,QAAQ,KAAK,OAAO,cAAc,KAAK,KAAK;AAAA,MAClD,MAAM,SAAS,UAAU,YAAY,YAAY,SAAS,OAAO,QAAQ;AAAA,MACzE,OAAO,QAAQ,MAAM;AAAA,QACnB,QAAQ,YAAY;AAAA,UAClB,IAAI,UAAU,aAAa,WAAW,WAAW;AAAA,YAC/C,MAAM,gBAAgB,MAAM,QAAQ,OAAO,MAAM;AAAA,UACnD;AAAA;AAAA,MAEJ,CAAC;AAAA;AAAA,IAEH,aAAa,CAAC,aAAa,KAAK,YAAY,QAAQ;AAAA,IACpD,YAAY,CAAC,aAAa,KAAK,WAAW,QAAQ;AAAA,IAGlD,UAAU,KAAK;AAAA,IAEf,YAAY;AAAA,IACZ,UAAU,CAAC,SAAS,KAAK,SAAS,IAAI;AAAA,IACtC,YAAY,OAAO,SAAS;AAAA,MAC1B,MAAM,SAAS,SAAS,MAAM,QAAQ;AAAA,MACtC,IAAI,WAAW;AAAA,QAAW,OAAO,KAAK,WAAW,IAAI,EAAE,MAAM,WAAW,MAAM,QAAQ,CAAC;AAAA,MAOvF,IAAK,MAAM,KAAK,KAAK,IAAI,MAAO;AAAA,QAAW;AAAA,MAC3C,MAAM,gBAAgB,MAAM,QAAQ,MAAM,MAAM;AAAA,MAChD,MAAM,YAAY,CAAC,IAAI,MAAM,MAAM,IAAI,CAAC;AAAA;AAAA,IAE1C,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE;AAAA,IAC5B,MAAM,CAAC,SAAS,KAAK,KAAK,IAAI;AAAA,IAC9B,iBAAiB,OAAO,MAAM,OAAO,YAAY;AAAA,MAC/C,MAAM,SAAS,MAAM,SAAS,MAAM,OAAO;AAAA,MAC3C,IAAI,WAAW,WAAW;AAAA,QACxB,OAAO,KAAK,gBAAgB,MAAM,OAAO,OAAO,EAAE,MAAM,WAAW,MAAM,QAAQ,CAAC;AAAA,MACpF;AAAA,MACA,QAAQ,SAAS;AAAA,MACjB,MAAM,SAAS,MAAM,KAAK,MAAM,KAAK;AAAA,MACrC,IAAI;AAAA,QACF,MAAM,YACJ;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,GAAI,QAAQ,QAAQ,YAAY,CAAC,IAAI,CAAC,MAAM,OAAO,QAAQ,GAAG,CAAC;AAAA,UAC/D,GAAI,QAAQ,QAAQ,YAAY,CAAC,IAAI,CAAC,MAAM,OAAO,QAAQ,GAAG,CAAC;AAAA,UAC/D,OAAO;AAAA,UACP;AAAA,QACF,GACA,OAAO,IACT;AAAA,gBACA;AAAA,QACA,MAAM,OAAO,QAAQ;AAAA;AAAA;AAAA,EAG3B;AAAA;AAOK,IAAM,aAAa,CAAC,YAA2C;AAAA,EACpE,MAAM,OAAO,YAAY,OAAO;AAAA,EAChC,OAAO,eAAe,QAAQ,UAAU;AAAA,IACtC;AAAA,IACA,QAAQ,MAAM,eAAe,IAAI;AAAA,IACjC,KACE,QAAQ,QACP,CAAC,SAAS;AAAA,MACT,QAAQ,OAAO,MAAM,GAAG;AAAA,CAAQ;AAAA;AAAA,IAEpC,OAAO;AAAA,EACT,CAAC;AAAA;",
37
- "debugId": "E276C6F9F945B90864756E2164756E21",
36
+ "mappings": "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",
37
+ "debugId": "ADCD8FCE0424605B64756E2164756E21",
38
38
  "names": []
39
39
  }
@@ -44,14 +44,20 @@ export declare const canRead: (file: {
44
44
  /**
45
45
  * ⛔ REFUSE A FILE THE DEPLOYING USER COULD NOT READ BACK, before writing it. Both providers read
46
46
  * every write back to verify it (host-file-lifecycle.ts, job-lifecycle.ts) and read it again at
47
- * every plan, as the deploying user; this runner elevates writes, never reads. A root-only
48
- * `0600` would be installed, then fail the read-back with EACCES and stay on disk with no state,
49
- * so every later plan would fail too.
47
+ * every plan, as the deploying user; a runner that elevates writes but no reads strands a
48
+ * root-only `0600` on disk — installed, failing the read-back with EACCES, with no state, so
49
+ * every later plan would fail too.
50
+ * ★ `readAsRoot` IS THE ONE EXCEPTION, and it is not this guard's to grant: the caller passes it
51
+ * only when the RUNNER reads this exact path back through a privileged read (the linux
52
+ * sshSudoRunner's `privilegedReads` list names the file, so its readFile goes through
53
+ * `sudo -n base64`). The read-back then cannot fail with EACCES whatever the mode is, and the
54
+ * refusal would be false; every other check — setuid/setgid, group-writable, the path chain —
55
+ * still applies to that file exactly as before.
50
56
  * ★ An omitted owner is root (under a prefix the runner writes as root). An omitted group is the
51
57
  * parent directory's, which is the group a new file gets on macOS.
52
58
  * ⚠️ Unknown groups never refuse: the read-back after the write stays the final judge.
53
59
  */
54
- export declare const assertReadableBack: (base: HostRunner, path: string, options: WriteOptions, groups: readonly number[] | undefined) => Promise<void>;
60
+ export declare const assertReadableBack: (base: HostRunner, path: string, options: WriteOptions, groups: readonly number[] | undefined, readAsRoot?: boolean) => Promise<void>;
55
61
  /**
56
62
  * The deploying user's groups, from `id -G`; `undefined` when that fails.
57
63
  * ⚠️ NOT process.getgroups(). MEASURED 2026-09-21 on macOS 27.2: getgroups() returned 16 groups
@@ -1 +1 @@
1
- {"version":3,"file":"sudo-guard-mode.d.ts","sourceRoot":"","sources":["../../src/launchd/sudo-guard-mode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM5D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,WAAW,YAAa,YAAY,KAAG,MAAM,GAAG,SAY5D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,OAAO,SACZ;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,OACtE,MAAM,UACH,SAAS,MAAM,EAAE,GAAG,SAAS,KACpC,OAAO,GAAG,SASZ,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,SACvB,UAAU,QACV,MAAM,WACH,YAAY,UACb,SAAS,MAAM,EAAE,GAAG,SAAS,KACpC,OAAO,CAAC,IAAI,CAYd,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,SAAgB,UAAU,KAAG,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,CAI5F,CAAC"}
1
+ {"version":3,"file":"sudo-guard-mode.d.ts","sourceRoot":"","sources":["../../src/launchd/sudo-guard-mode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM5D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,WAAW,YAAa,YAAY,KAAG,MAAM,GAAG,SAY5D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,OAAO,SACZ;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,OACtE,MAAM,UACH,SAAS,MAAM,EAAE,GAAG,SAAS,KACpC,OAAO,GAAG,SASZ,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,kBAAkB,SACvB,UAAU,QACV,MAAM,WACH,YAAY,UACb,SAAS,MAAM,EAAE,GAAG,SAAS,2BAEpC,OAAO,CAAC,IAAI,CAad,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,SAAgB,UAAU,KAAG,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,CAI5F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fake-sudo-root.d.ts","sourceRoot":"","sources":["../../src/linux/fake-sudo-root.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,sBAAsB,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AAE7C,gGAAgG;AAChG,MAAM,MAAM,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,UAAU,CAAC;IAAC,SAAS,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAyH3E,+FAA+F;AAC/F,eAAO,MAAM,MAAM,SACX,IAAI,QACJ,SAAS,MAAM,EAAE,UAChB,SAAS,KACf,OAAO,CAAC,UAAU,CASpB,CAAC"}
1
+ {"version":3,"file":"fake-sudo-root.d.ts","sourceRoot":"","sources":["../../src/linux/fake-sudo-root.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,sBAAsB,CAAC;AAGjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AAE7C,gGAAgG;AAChG,MAAM,MAAM,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,UAAU,CAAC;IAAC,SAAS,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAuI3E,+FAA+F;AAC/F,eAAO,MAAM,MAAM,SACX,IAAI,QACJ,SAAS,MAAM,EAAE,UAChB,SAAS,KACf,OAAO,CAAC,UAAU,CASpB,CAAC"}
@@ -30,13 +30,21 @@ export type FakeSudoHostOptions = {
30
30
  readonly hostFactory?: (options: FakeLinuxOptions) => ReturnType<typeof fakeLinuxHost>;
31
31
  /** The runner's own declared prefixes. @default PREFIXES */
32
32
  readonly prefixes?: readonly string[];
33
+ /** The runner's exact-path elevated reads (`sshSudoRunner`'s `privilegedReads`). */
34
+ readonly privilegedReads?: readonly string[];
35
+ /**
36
+ * What `/usr/bin/id -G` answers (sudo-guard-mode.ts's `operatorGroups`). Unset, the fake has
37
+ * no `id` and `operatorGroups` reads `undefined` — "unknown groups never refuse" — which is
38
+ * what every pre-existing test relied on; set it to make the read-back refusal decidable.
39
+ */
40
+ readonly operatorGroups?: readonly number[];
33
41
  };
34
42
  /**
35
43
  * `extraDirs` adds more directories to the fake filesystem (a pre-existing tree outside every
36
44
  * prefix, say); it never changes the runner's OWN prefixes, which default to `PREFIXES`.
37
45
  * `acl` is the set of directory paths a test wants to carry the `+` (POSIX ACL) flag.
38
46
  */
39
- export declare const fakeSudoHost: (extraDirs?: Record<string, number>, acl?: ReadonlySet<string>, { hostFactory, prefixes }?: FakeSudoHostOptions) => {
47
+ export declare const fakeSudoHost: (extraDirs?: Record<string, number>, acl?: ReadonlySet<string>, { hostFactory, prefixes, privilegedReads, operatorGroups: idGroups, }?: FakeSudoHostOptions) => {
40
48
  base: HostRunner;
41
49
  fake: {
42
50
  calls: string[][];
@@ -1 +1 @@
1
- {"version":3,"file":"fake-sudo.d.ts","sourceRoot":"","sources":["../../src/linux/fake-sudo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAc,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,KAAK,gBAAgB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,qBAAqB,CAAC;AAK7D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,QAAQ,UAA4C,CAAC;AAyBlE,MAAM,MAAM,mBAAmB,GAAG;IAChC,gGAAgG;IAChG,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;IACvF,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,eACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAC5B,WAAW,CAAC,MAAM,CAAC,8BAC8B,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;cAaxC,IAAI,GAAG,MAAM,OAAO,SAAS;;CAyE/D,CAAC"}
1
+ {"version":3,"file":"fake-sudo.d.ts","sourceRoot":"","sources":["../../src/linux/fake-sudo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAc,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,KAAK,gBAAgB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,qBAAqB,CAAC;AAK7D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,QAAQ,UAA4C,CAAC;AAyBlE,MAAM,MAAM,mBAAmB,GAAG;IAChC,gGAAgG;IAChG,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;IACvF,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,oFAAoF;IACpF,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,eACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAC5B,WAAW,CAAC,MAAM,CAAC,0EAMrB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;cAaW,IAAI,GAAG,MAAM,OAAO,SAAS;;CA+E/D,CAAC"}
@@ -2784,7 +2784,9 @@ var canRead = (file, uid, groups) => {
2784
2784
  return;
2785
2785
  return groups.includes(file.gid) ? groupRead : otherRead;
2786
2786
  };
2787
- var assertReadableBack = async (base, path, options, groups) => {
2787
+ var assertReadableBack = async (base, path, options, groups, readAsRoot = false) => {
2788
+ if (readAsRoot)
2789
+ return;
2788
2790
  const operator = base.effectiveUid();
2789
2791
  const parent = path.slice(0, path.lastIndexOf("/")) || "/";
2790
2792
  const gid = options.gid ?? (await base.stat(parent))?.gid ?? 0;
@@ -2979,13 +2981,18 @@ var assertGuardedChain = async (base, prefix, path, expect) => {
2979
2981
  throw refuse7(path, `${problem}. Nothing ran as root.`);
2980
2982
  return target;
2981
2983
  };
2982
- var assertInstallable2 = async (base, prefix, path, options, groups) => {
2984
+ var assertInstallable2 = async (base, prefix, path, options, groups, privilegedReads) => {
2983
2985
  const mode = modeProblem(options);
2984
2986
  if (mode !== undefined) {
2985
2987
  throw refuse7(path, `${mode}. Declare a mode without those bits (0644, 0640, 0755), or give the file to its ` + "real owner. Nothing ran as root.");
2986
2988
  }
2989
+ const listed = privilegedReads?.has(path) === true;
2990
+ const uid = options.uid ?? 0;
2991
+ if (listed && uid !== 0) {
2992
+ throw refuse7(path, `is on the runner's privilegedReads list, so its read back is the elevated one — which ` + `refuses anything but a root-owned regular file. Handing it to uid ${String(uid)} would ` + "land and then fail every read. Keep it root-owned, or take it off the list. Nothing " + "ran as root.");
2993
+ }
2987
2994
  await assertGuardedChain(base, prefix, path, "file-or-absent");
2988
- await assertReadableBack(base, path, options, groups);
2995
+ await assertReadableBack(base, path, options, groups, listed && uid === 0);
2989
2996
  };
2990
2997
 
2991
2998
  // src/linux/sudo-exec.ts
@@ -3102,7 +3109,7 @@ var describeCleanupFailure = (cleaned) => {
3102
3109
  }
3103
3110
  return cleaned instanceof Error ? cleaned.message : String(cleaned);
3104
3111
  };
3105
- var vetWrite = async (base, prefixes, path, options) => {
3112
+ var vetWrite = async (base, prefixes, path, options, privilegedReads) => {
3106
3113
  const prefix = prefixOf(path, prefixes);
3107
3114
  if (prefix === undefined)
3108
3115
  return;
@@ -3110,7 +3117,7 @@ var vetWrite = async (base, prefixes, path, options) => {
3110
3117
  if (mode === undefined)
3111
3118
  throw new SudoRefusedError(`sshSudoRunner ${path}: mode must be 0–0o7777`);
3112
3119
  const groups = await operatorGroups(base);
3113
- await assertInstallable2(base, prefix, path, options, groups);
3120
+ await assertInstallable2(base, prefix, path, options, groups, privilegedReads);
3114
3121
  return { mode, prefix };
3115
3122
  };
3116
3123
  var safeOwnerSpec = (uid, gid) => `${uid === undefined ? "" : `+${uid}`}${gid === undefined ? "" : `:+${gid}`}`;
@@ -3189,7 +3196,7 @@ var makeSshSudoRunner = (prefixList, deps) => {
3189
3196
  };
3190
3197
  return {
3191
3198
  checkWrite: async (path, options) => {
3192
- await vetWrite(base, prefixes, path, options);
3199
+ await vetWrite(base, prefixes, path, options, readable);
3193
3200
  },
3194
3201
  effectiveUid: () => base.effectiveUid(),
3195
3202
  exec: async (argv) => {
@@ -3239,7 +3246,7 @@ var makeSshSudoRunner = (prefixList, deps) => {
3239
3246
  sleep: (ms) => base.sleep(ms),
3240
3247
  stat: (path) => base.stat(path),
3241
3248
  writeFileAtomic: async (path, bytes, options) => {
3242
- const vetted = await vetWrite(base, prefixes, path, options);
3249
+ const vetted = await vetWrite(base, prefixes, path, options, readable);
3243
3250
  if (vetted === undefined) {
3244
3251
  return base.writeFileAtomic(path, bytes, options).catch(outsidePrefixHint(path, prefixes));
3245
3252
  }
@@ -3293,5 +3300,5 @@ export {
3293
3300
  sshSudoRunner
3294
3301
  };
3295
3302
 
3296
- //# debugId=2A7002C2A0EA54DD64756E2164756E21
3303
+ //# debugId=F10BF0C264F0A3AB64756E2164756E21
3297
3304
  //# sourceMappingURL=index.js.map