diff --git a/AGENTS.md b/AGENTS.md index a57bd3a..c7137b0 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -281,7 +281,29 @@ If a required command fails or emits a warning from project code, fix it in the - A Windows diagnostic PowerShell run with `-File ` can exit 1 in milliseconds with no stdout (execution policy set by GPO, or temp-file access), and a stdout-only runner then logs a bare exit code. Run scripts with `-EncodedCommand` (UTF-16LE Base64), force UTF-8 output, and keep the first stderr line in the error (ADR 0110). -- On Windows, top-level `ipv6: false` makes Mihomo drop the TUN inet6 address. sing-tun `strict-route` then installs an unconditional WFP "block ipv6" connect filter that only exempts Mihomo, so `localhost` -> `::1` fails instantly while connected. A route exclusion cannot fix a WFP block. Keep top-level `ipv6: true` on Windows and restrict AAAA through `dns.ipv6: false` instead (ADR 0112). +- On Windows, top-level `ipv6: false` makes Mihomo drop the TUN inet6 address. sing-tun `strict-route` then installs an unconditional WFP "block ipv6" connect filter that only exempts Mihomo, so `localhost` -> `::1` fails instantly while connected. A route exclusion cannot fix a WFP block. Keep top-level `ipv6: true` on Windows and restrict AAAA through `dns.ipv6: false` instead (ADR 0112). Mihomo v1.19.29 does **not** apply `inet6-address` to the Wintun adapter even when it is in the config (`GET /configs` reports `inet4-address` but no `inet6-address`, adapter only gets link-local `fe80::`), so `strict-route: true` still installs the block filter and `::1` stays refused. Windows must use `strict-route: false` until a Mihomo build that actually sets the inet6 address is available; `dns.ipv6: false` keeps the IPv6 leak surface minimal (ADR 0112). +- `spawn_mihomo` uses `kill_on_drop(false)` so connectivity survives a helper crash, but when the helper restarts (reboot, reinstall, new session) `self.child` is empty and the previous Mihomo is an orphan still holding the controller port and TUN adapter. The new Mihomo cannot bind `127.0.0.1:19090`, the desktop silently talks to the stale process, and a new config (e.g. `inet6-address`) is never applied. The helper must `kill_orphaned_mihomo` (`taskkill /F /IM mihomo.exe` / `pkill -x mihomo`) before every spawn to reclaim the port and adapter (ADR 0112). +- Sniffer `override-destination: true` with fake-ip DNS breaks IP-based TLS connections that carry an SNI. kubectl connecting to a cluster API IP (78.109.203.123:443) with a `tls-server-name` SNI has its destination overridden to the SNI's fake-ip (198.18.x.x), so even a `PROCESS-NAME,kubectl.exe,DIRECT` rule connects to the fake-ip and the TLS handshake fails with EOF. Generate `override-destination: false` so the connection keeps its original IP; domain-based rules still use the sniffed SNI (ADR 0112). +- `ipv6: true` alone is not enough on Mihomo v1.19.29: `GET /configs` + reported `inet4-address` but no `inet6-address`, so the TUN had no inet6 + address, strict-route still installed the WFP "block ipv6" filter, and + `loopback_ipv6_blocked` (with `client_ipv4_only_but_localhost_prefers_ipv6`) + persisted on 6.2.51. Emit `tun.inet6-address: fdfe:dcba:9876::1/126` + explicitly so the TUN keeps its inet6 address and the block filter is + never installed. The user must Disconnect/Connect once to recreate the + TUN with the new address (ADR 0112). +- Node 26 ships an experimental `localStorage` global that stays + `undefined` unless `--localstorage-file` is passed, and jsdom 26 defers + to it instead of providing its own, so `window.localStorage` is also + absent under vitest. `i18n/config.ts` read the saved language at + module-load time, so every frontend test failed with "Cannot read + properties of undefined (reading 'getItem')". Install a minimal + in-memory `Storage` shim from a `setupFiles` entry that runs _before_ + `src/test/setup.ts` (ES module imports are hoisted, so the shim must + live in its own file listed first), and guard the i18n read with + `typeof localStorage !== "undefined"`. Keep the shim returning + `string | undefined` (not `false` from `&&`) so the `lng` option stays + typed `string | undefined`. - Older Pillow has no `Image.Resampling`; generate icons with `Image.LANCZOS` / `Image.BICUBIC`. - Inner `#![allow(...)]` attributes must be the first item in a Rust module, before `use`. diff --git a/Cargo.lock b/Cargo.lock index ad47f78..9c64d20 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2066,7 +2066,7 @@ dependencies = [ [[package]] name = "iran-split-cli" -version = "6.2.52" +version = "6.2.56" dependencies = [ "async-trait", "chrono", @@ -2084,7 +2084,7 @@ dependencies = [ [[package]] name = "iran-split-clients" -version = "6.2.52" +version = "6.2.56" dependencies = [ "async-trait", "ipnet", @@ -2100,7 +2100,7 @@ dependencies = [ [[package]] name = "iran-split-config" -version = "6.2.52" +version = "6.2.56" dependencies = [ "hex", "rand 0.9.5", @@ -2113,7 +2113,7 @@ dependencies = [ [[package]] name = "iran-split-core" -version = "6.2.52" +version = "6.2.56" dependencies = [ "async-trait", "chrono", @@ -2130,7 +2130,7 @@ dependencies = [ [[package]] name = "iran-split-desktop" -version = "6.2.52" +version = "6.2.56" dependencies = [ "chrono", "dirs 6.0.0", @@ -2169,7 +2169,7 @@ dependencies = [ [[package]] name = "iran-split-helper" -version = "6.2.52" +version = "6.2.56" dependencies = [ "clap", "hex", @@ -2193,7 +2193,7 @@ dependencies = [ [[package]] name = "iran-split-helper-winacl" -version = "6.2.52" +version = "6.2.56" dependencies = [ "tokio", "windows", @@ -2201,7 +2201,7 @@ dependencies = [ [[package]] name = "iran-split-ipc" -version = "6.2.52" +version = "6.2.56" dependencies = [ "bytes", "chrono", @@ -2214,7 +2214,7 @@ dependencies = [ [[package]] name = "iran-split-mihomo" -version = "6.2.52" +version = "6.2.56" dependencies = [ "chrono", "futures-util", @@ -2237,7 +2237,7 @@ dependencies = [ [[package]] name = "iran-split-platform-linux" -version = "6.2.52" +version = "6.2.56" dependencies = [ "async-trait", "chrono", @@ -2261,7 +2261,7 @@ dependencies = [ [[package]] name = "iran-split-platform-win" -version = "6.2.52" +version = "6.2.56" dependencies = [ "async-trait", "chrono", @@ -2284,7 +2284,7 @@ dependencies = [ [[package]] name = "iran-split-rules" -version = "6.2.52" +version = "6.2.56" dependencies = [ "async-trait", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 53f5b87..117037f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ members = [ ] [workspace.package] -version = "6.2.52" +version = "6.2.56" edition = "2021" license = "MIT OR Apache-2.0" rust-version = "1.88" diff --git a/apps/desktop/package.json b/apps/desktop/package.json index ebbf5ba..c903ac9 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,6 +1,6 @@ { "name": "@iran-split/desktop", - "version": "6.2.52", + "version": "6.2.56", "private": true, "type": "module", "scripts": { diff --git a/apps/desktop/src/i18n/config.ts b/apps/desktop/src/i18n/config.ts index eb4ad00..4e630a4 100644 --- a/apps/desktop/src/i18n/config.ts +++ b/apps/desktop/src/i18n/config.ts @@ -813,12 +813,15 @@ const resources = { }, } as const; +const savedLanguage = + typeof localStorage !== "undefined" + ? (localStorage.getItem("biflow-language") ?? + localStorage.getItem("iran-split-language")) + : undefined; + void i18n.use(initReactI18next).init({ resources, - lng: - localStorage.getItem("biflow-language") ?? - localStorage.getItem("iran-split-language") ?? - "en", + lng: savedLanguage ?? "en", fallbackLng: "en", interpolation: { escapeValue: false }, }); diff --git a/apps/desktop/src/test/localStorage-shim.ts b/apps/desktop/src/test/localStorage-shim.ts new file mode 100644 index 0000000..8f115ad --- /dev/null +++ b/apps/desktop/src/test/localStorage-shim.ts @@ -0,0 +1,50 @@ +// vitest runs `setupFiles` in order; this file is listed before setup.ts so +// the shim is installed before any setup import (notably `i18n/config`, +// which reads the saved language at module-load time) runs. +// +// Node 26 ships an experimental `localStorage` global that stays +// `undefined` unless `--localstorage-file` is passed, and jsdom 26 defers +// to it instead of providing its own, so `window.localStorage` is also +// absent. Tests and the i18n bootstrap both need a working Storage, so +// install a minimal in-memory implementation on the shared global. + +interface StorageEntry { + value: string; +} + +const store = new Map(); + +const storage: Storage = { + get length(): number { + return store.size; + }, + clear(): void { + store.clear(); + }, + getItem(key: string): string | null { + return store.has(key) ? (store.get(key) as StorageEntry).value : null; + }, + key(index: number): string | null { + return Array.from(store.keys())[index] ?? null; + }, + removeItem(key: string): void { + store.delete(key); + }, + setItem(key: string, value: string): void { + store.set(key, { value: String(value) }); + }, +}; + +Object.defineProperty(globalThis, "localStorage", { + value: storage, + writable: true, + configurable: true, +}); + +if (typeof window !== "undefined" && window.localStorage === undefined) { + Object.defineProperty(window, "localStorage", { + value: storage, + writable: true, + configurable: true, + }); +} diff --git a/apps/desktop/tsconfig.app.tsbuildinfo b/apps/desktop/tsconfig.app.tsbuildinfo index 6cb0e9d..63b108b 100644 --- a/apps/desktop/tsconfig.app.tsbuildinfo +++ b/apps/desktop/tsconfig.app.tsbuildinfo @@ -1 +1 @@ -{"root":["./src/App.test.tsx","./src/App.tsx","./src/installContextMenuGuard.ts","./src/main.tsx","./src/palette.test.ts","./src/shell.test.ts","./src/version.test.ts","./src/version.ts","./src/vite-env.d.ts","./src/api/desktop.native.test.ts","./src/api/desktop.ts","./src/api/mock.test.ts","./src/api/mock.ts","./src/api/models.ts","./src/components/About.test.tsx","./src/components/About.tsx","./src/components/AddSiteBar.tsx","./src/components/AppButton.test.tsx","./src/components/AppButton.tsx","./src/components/AppStatusBar.test.tsx","./src/components/AppStatusBar.tsx","./src/components/BasicDashboard.test.tsx","./src/components/BasicDashboard.tsx","./src/components/BottomNav.test.tsx","./src/components/BottomNav.tsx","./src/components/ClientRegistry.test.tsx","./src/components/ClientRegistry.tsx","./src/components/ConnectionActionButton.test.tsx","./src/components/ConnectionActionButton.tsx","./src/components/Dashboard.test.tsx","./src/components/Dashboard.tsx","./src/components/DefaultRouteSelect.tsx","./src/components/Diagnostics.test.tsx","./src/components/Diagnostics.tsx","./src/components/DirectRules.test.tsx","./src/components/DirectRules.tsx","./src/components/InputContextMenu.test.tsx","./src/components/InputContextMenu.tsx","./src/components/LifecycleCancelButton.tsx","./src/components/MihomoConfigDialog.tsx","./src/components/PageSkeleton.tsx","./src/components/RecentSites.test.tsx","./src/components/RecentSites.tsx","./src/components/Settings.test.tsx","./src/components/Settings.tsx","./src/components/SettingsApplyBanner.test.tsx","./src/components/SettingsApplyBanner.tsx","./src/components/SortHeader.tsx","./src/components/StatusPill.tsx","./src/components/TrafficFlow.tsx","./src/components/UiModeSwitch.test.tsx","./src/components/UiModeSwitch.tsx","./src/components/country.ts","./src/components/ui/InfoTip.tsx","./src/components/ui/PageHeader.tsx","./src/components/ui/Tabs.tsx","./src/components/ui/Toast.tsx","./src/components/ui/usePageTab.ts","./src/dev/local-deps.test.ts","./src/i18n/config.ts","./src/lib/clients.test.ts","./src/lib/clients.ts","./src/lib/clipboard.ts","./src/lib/connectComponentProgress.test.ts","./src/lib/connectRequirements.test.ts","./src/lib/connectRequirements.ts","./src/lib/connectionGroups.test.ts","./src/lib/connectionGroups.ts","./src/lib/connectionProgress.test.ts","./src/lib/connectionProgress.ts","./src/lib/directDns.test.ts","./src/lib/directDns.ts","./src/lib/editableTarget.test.ts","./src/lib/editableTarget.ts","./src/lib/failureReason.test.ts","./src/lib/failureReason.ts","./src/lib/formatTraffic.test.ts","./src/lib/formatTraffic.ts","./src/lib/hiddenHosts.test.ts","./src/lib/hiddenHosts.ts","./src/lib/host.test.ts","./src/lib/host.ts","./src/lib/lifecycle.test.ts","./src/lib/lifecycle.ts","./src/lib/navigation.ts","./src/lib/outbound.ts","./src/lib/presets.test.ts","./src/lib/presets.ts","./src/lib/settingsApply.test.ts","./src/lib/settingsApply.ts","./src/lib/sideTunnelConnect.test.ts","./src/lib/sideTunnelConnect.ts","./src/lib/tableSort.test.ts","./src/lib/tableSort.ts","./src/lib/uiMode.ts","./src/lib/viewport.test.ts","./src/lib/viewport.ts","./src/lib/yamlHighlight.test.ts","./src/lib/yamlHighlight.ts","./src/store/app.test.ts","./src/store/app.ts","./src/test/fixtures.ts","./src/test/setup.ts"],"version":"5.8.3"} \ No newline at end of file +{"root":["./src/app.test.tsx","./src/app.tsx","./src/installcontextmenuguard.ts","./src/main.tsx","./src/palette.test.ts","./src/shell.test.ts","./src/version.test.ts","./src/version.ts","./src/vite-env.d.ts","./src/api/desktop.native.test.ts","./src/api/desktop.ts","./src/api/mock.test.ts","./src/api/mock.ts","./src/api/models.ts","./src/components/about.test.tsx","./src/components/about.tsx","./src/components/addsitebar.tsx","./src/components/appbutton.test.tsx","./src/components/appbutton.tsx","./src/components/appstatusbar.test.tsx","./src/components/appstatusbar.tsx","./src/components/basicdashboard.test.tsx","./src/components/basicdashboard.tsx","./src/components/bottomnav.test.tsx","./src/components/bottomnav.tsx","./src/components/clientregistry.test.tsx","./src/components/clientregistry.tsx","./src/components/connectionactionbutton.test.tsx","./src/components/connectionactionbutton.tsx","./src/components/dashboard.test.tsx","./src/components/dashboard.tsx","./src/components/defaultrouteselect.tsx","./src/components/diagnostics.test.tsx","./src/components/diagnostics.tsx","./src/components/directrules.test.tsx","./src/components/directrules.tsx","./src/components/inputcontextmenu.test.tsx","./src/components/inputcontextmenu.tsx","./src/components/lifecyclecancelbutton.tsx","./src/components/mihomoconfigdialog.tsx","./src/components/pageskeleton.tsx","./src/components/recentsites.test.tsx","./src/components/recentsites.tsx","./src/components/settings.test.tsx","./src/components/settings.tsx","./src/components/settingsapplybanner.test.tsx","./src/components/settingsapplybanner.tsx","./src/components/sortheader.tsx","./src/components/statuspill.tsx","./src/components/trafficflow.tsx","./src/components/uimodeswitch.test.tsx","./src/components/uimodeswitch.tsx","./src/components/country.ts","./src/components/ui/infotip.tsx","./src/components/ui/pageheader.tsx","./src/components/ui/tabs.tsx","./src/components/ui/toast.tsx","./src/components/ui/usepagetab.ts","./src/dev/local-deps.test.ts","./src/i18n/config.ts","./src/lib/clients.test.ts","./src/lib/clients.ts","./src/lib/clipboard.ts","./src/lib/connectcomponentprogress.test.ts","./src/lib/connectrequirements.test.ts","./src/lib/connectrequirements.ts","./src/lib/connectiongroups.test.ts","./src/lib/connectiongroups.ts","./src/lib/connectionprogress.test.ts","./src/lib/connectionprogress.ts","./src/lib/directdns.test.ts","./src/lib/directdns.ts","./src/lib/editabletarget.test.ts","./src/lib/editabletarget.ts","./src/lib/failurereason.test.ts","./src/lib/failurereason.ts","./src/lib/formattraffic.test.ts","./src/lib/formattraffic.ts","./src/lib/hiddenhosts.test.ts","./src/lib/hiddenhosts.ts","./src/lib/host.test.ts","./src/lib/host.ts","./src/lib/lifecycle.test.ts","./src/lib/lifecycle.ts","./src/lib/navigation.ts","./src/lib/outbound.ts","./src/lib/presets.test.ts","./src/lib/presets.ts","./src/lib/settingsapply.test.ts","./src/lib/settingsapply.ts","./src/lib/sidetunnelconnect.test.ts","./src/lib/sidetunnelconnect.ts","./src/lib/tablesort.test.ts","./src/lib/tablesort.ts","./src/lib/uimode.ts","./src/lib/viewport.test.ts","./src/lib/viewport.ts","./src/lib/yamlhighlight.test.ts","./src/lib/yamlhighlight.ts","./src/store/app.test.ts","./src/store/app.ts","./src/test/fixtures.ts","./src/test/localstorage-shim.ts","./src/test/setup.ts"],"version":"5.8.3"} \ No newline at end of file diff --git a/apps/desktop/tsconfig.node.tsbuildinfo b/apps/desktop/tsconfig.node.tsbuildinfo index 2d748dd..fbeb7ed 100644 --- a/apps/desktop/tsconfig.node.tsbuildinfo +++ b/apps/desktop/tsconfig.node.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/.pnpm/@babel+types@7.29.8/node_modules/@babel/types/lib/index.d.ts","../../node_modules/.pnpm/@types+babel__generator@7.27.0/node_modules/@types/babel__generator/index.d.ts","../../node_modules/.pnpm/@babel+parser@7.29.8/node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/.pnpm/@types+babel__template@7.4.4/node_modules/@types/babel__template/index.d.ts","../../node_modules/.pnpm/@types+babel__traverse@7.28.0/node_modules/@types/babel__traverse/index.d.ts","../../node_modules/.pnpm/@types+babel__core@7.20.5/node_modules/@types/babel__core/index.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/compatibility/disposable.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/compatibility/index.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/buffer.buffer.d.ts","../../../../../node_modules/buffer/index.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/globals.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/assert.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/assert/strict.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/async_hooks.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/buffer.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/child_process.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/cluster.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/console.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/constants.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/crypto.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/dgram.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/dns.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/dns/promises.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/domain.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/dom-events.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/events.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/fs.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/fs/promises.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/http.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/http2.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/https.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/inspector.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/module.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/net.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/os.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/path.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/perf_hooks.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/process.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/punycode.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/querystring.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/readline.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/readline/promises.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/repl.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/sea.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/sqlite.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/stream.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/stream/promises.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/stream/consumers.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/stream/web.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/string_decoder.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/test.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/timers.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/timers/promises.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/tls.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/trace_events.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/tty.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/url.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/util.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/v8.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/vm.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/wasi.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/worker_threads.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/zlib.d.ts","../../node_modules/.pnpm/@types+node@22.15.2/node_modules/@types/node/index.d.ts","../../node_modules/.pnpm/@types+estree@1.0.9/node_modules/@types/estree/index.d.ts","../../node_modules/.pnpm/rollup@4.62.4/node_modules/rollup/dist/rollup.d.ts","../../node_modules/.pnpm/rollup@4.62.4/node_modules/rollup/dist/parseAst.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0/node_modules/vite/types/hmrPayload.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0/node_modules/vite/types/customEvent.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0/node_modules/vite/types/hot.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0/node_modules/vite/dist/node/moduleRunnerTransport.d-DJ_mE5sf.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0/node_modules/vite/dist/node/module-runner.d.ts","../../node_modules/.pnpm/esbuild@0.25.12/node_modules/esbuild/lib/main.d.ts","../../node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/source-map.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/previous-map.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/input.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/css-syntax-error.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/declaration.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/root.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/warning.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/lazy-result.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/no-work-result.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/processor.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/result.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/document.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/rule.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/node.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/comment.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/container.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/at-rule.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/list.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/postcss.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/postcss.d.mts","../../node_modules/.pnpm/vite@6.3.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0/node_modules/vite/types/internal/lightningcssOptions.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0/node_modules/vite/types/internal/cssPreprocessorOptions.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0/node_modules/vite/types/importGlob.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0/node_modules/vite/types/metadata.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0/node_modules/vite/dist/node/index.d.ts","../../node_modules/.pnpm/@vitejs+plugin-react@4.4.1_vite@6.3.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0_/node_modules/@vitejs/plugin-react/dist/index.d.mts","../../node_modules/.pnpm/@vitest+expect@3.1.2/node_modules/@vitest/expect/dist/chai.d.cts","../../node_modules/.pnpm/@vitest+spy@3.1.2/node_modules/@vitest/spy/dist/index.d.ts","../../node_modules/.pnpm/@vitest+pretty-format@3.1.2/node_modules/@vitest/pretty-format/dist/index.d.ts","../../node_modules/.pnpm/@vitest+utils@3.1.2/node_modules/@vitest/utils/dist/types.d.ts","../../node_modules/.pnpm/@vitest+utils@3.1.2/node_modules/@vitest/utils/dist/helpers.d.ts","../../node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/index-8b61d5bc.d.ts","../../node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.d.ts","../../node_modules/.pnpm/@vitest+utils@3.1.2/node_modules/@vitest/utils/dist/index.d.ts","../../node_modules/.pnpm/@vitest+utils@3.1.2/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../../node_modules/.pnpm/@vitest+utils@3.1.2/node_modules/@vitest/utils/dist/diff.d.ts","../../node_modules/.pnpm/@vitest+expect@3.1.2/node_modules/@vitest/expect/dist/index.d.ts","../../node_modules/.pnpm/@vitest+expect@3.1.2/node_modules/@vitest/expect/index.d.ts","../../node_modules/.pnpm/@vitest+runner@3.1.2/node_modules/@vitest/runner/dist/tasks.d-hsdzc98-.d.ts","../../node_modules/.pnpm/@vitest+runner@3.1.2/node_modules/@vitest/runner/dist/types.d.ts","../../node_modules/.pnpm/@vitest+utils@3.1.2/node_modules/@vitest/utils/dist/error.d.ts","../../node_modules/.pnpm/@vitest+runner@3.1.2/node_modules/@vitest/runner/dist/index.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@22.15.2_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/optional-types.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@22.15.2_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/chunks/environment.d.Dmw5ulng.d.ts","../../node_modules/.pnpm/@vitest+mocker@3.1.2_vite@6.3.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0_/node_modules/@vitest/mocker/dist/registry.d-D765pazg.d.ts","../../node_modules/.pnpm/@vitest+mocker@3.1.2_vite@6.3.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0_/node_modules/@vitest/mocker/dist/types.d-D_aRZRdy.d.ts","../../node_modules/.pnpm/@vitest+mocker@3.1.2_vite@6.3.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0_/node_modules/@vitest/mocker/dist/index.d.ts","../../node_modules/.pnpm/@vitest+utils@3.1.2/node_modules/@vitest/utils/dist/source-map.d.ts","../../node_modules/.pnpm/vite-node@3.1.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0/node_modules/vite-node/dist/trace-mapping.d-DLVdEqOp.d.ts","../../node_modules/.pnpm/vite-node@3.1.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0/node_modules/vite-node/dist/index.d-CWZbpOcv.d.ts","../../node_modules/.pnpm/vite-node@3.1.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0/node_modules/vite-node/dist/index.d.ts","../../node_modules/.pnpm/@vitest+pretty-format@3.2.7/node_modules/@vitest/pretty-format/dist/index.d.ts","../../node_modules/.pnpm/@vitest+snapshot@3.1.2/node_modules/@vitest/snapshot/dist/environment.d-DHdQ1Csl.d.ts","../../node_modules/.pnpm/@vitest+snapshot@3.1.2/node_modules/@vitest/snapshot/dist/rawSnapshot.d-lFsMJFUd.d.ts","../../node_modules/.pnpm/@vitest+snapshot@3.1.2/node_modules/@vitest/snapshot/dist/index.d.ts","../../node_modules/.pnpm/@vitest+snapshot@3.1.2/node_modules/@vitest/snapshot/dist/environment.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@22.15.2_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/chunks/config.d.UqE-KR0o.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@22.15.2_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/chunks/worker.d.CHGSOG0s.d.ts","../../node_modules/.pnpm/@vitest+runner@3.1.2/node_modules/@vitest/runner/dist/utils.d.ts","../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@22.15.2_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/chunks/benchmark.d.BwvBVTda.d.ts","../../node_modules/.pnpm/vite-node@3.1.2_@types+node@22.15.2_jiti@1.21.7_yaml@2.9.0/node_modules/vite-node/dist/client.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@22.15.2_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/chunks/coverage.d.S9RMNXIe.d.ts","../../node_modules/.pnpm/@vitest+snapshot@3.1.2/node_modules/@vitest/snapshot/dist/manager.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@22.15.2_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/chunks/reporters.d.79o4mouw.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@22.15.2_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/chunks/vite.d.BVr6Nvdj.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@22.15.2_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/config.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@22.15.2_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/config.d.ts","./local-deps.ts","./vite.config.ts","../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/types/generated/corePluginList.d.ts","../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/types/generated/colors.d.ts","../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/types/config.d.ts","../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/types/index.d.ts","../../node_modules/.pnpm/@tailwindcss+forms@0.5.10_tailwindcss@3.4.17/node_modules/@tailwindcss/forms/src/index.d.ts","./tailwind.config.ts"],"fileIdsList":[[61,104,117,125,126],[61,104,237,238],[61,104,117,126,147,189,231,232],[50,61,104],[61,104],[50,51,52,53,54,61,104],[50,52,61,104],[61,101,104],[61,103,104],[104],[61,104,109,139],[61,104,105,110,116,117,124,136,147],[61,104,105,106,116,124],[56,57,58,61,104],[61,104,107,148],[61,104,108,109,117,125],[61,104,109,136,144],[61,104,110,112,116,124],[61,103,104,111],[61,104,112,113],[61,104,116],[61,104,114,116],[61,103,104,116],[61,104,116,117,118,136,147],[61,104,116,117,118,131,136,139],[61,99,104,152],[61,99,104,112,116,119,124,136,147],[61,104,116,117,119,120,124,136,144,147],[61,104,119,121,136,144,147],[59,60,61,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],[61,104,116,122],[61,104,123,147],[61,104,112,116,124,136],[61,104,125],[61,104,126],[61,103,104,127],[61,101,102,103,104,105,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],[61,104,129],[61,104,130],[61,104,116,131,132],[61,104,131,133,148,150],[61,104,116,136,137,139],[61,104,138,139],[61,104,136,137],[61,104,139],[61,104,140],[61,101,104,136],[61,104,116,142,143],[61,104,142,143],[61,104,109,124,136,144],[61,104,145],[61,104,124,146],[61,104,119,130,147],[61,104,109,148],[61,104,136,149],[61,104,123,150],[61,104,151],[61,104,109,116,118,127,136,147,150,152],[61,104,136,153],[55,61,104,188,229],[61,104,191,196,197,199],[61,104,200],[61,104,208,209],[61,104,197,199,202,203,204],[61,104,197],[61,104,197,199,202],[61,104,197,202],[61,104,216],[61,104,192,216,217],[61,104,192,216],[61,104,192,198],[61,104,193],[61,104,192,193,194,196],[61,104,192],[61,104,179],[61,104,177,179],[61,104,168,176,177,178,180],[61,104,166],[61,104,169,174,179,182],[61,104,165,182],[61,104,169,170,173,174,175,182],[61,104,169,170,171,173,174,182],[61,104,166,167,168,169,170,174,175,176,178,179,180,182],[61,104,182],[61,104,164,166,167,168,169,170,171,173,174,175,176,177,178,179,180,181],[61,104,164,182],[61,104,169,171,172,174,175,182],[61,104,173,182],[61,104,174,175,179,182],[61,104,167,177],[61,104,156,187,188],[61,104,155,156],[61,104,234,235],[61,104,183,236],[61,104,195],[61,71,75,104,147],[61,71,104,136,147],[61,66,104],[61,68,71,104,144,147],[61,104,124,144],[61,104,154],[61,66,104,154],[61,68,71,104,124,147],[61,63,64,67,70,104,116,136,147],[61,71,78,104],[61,63,69,104],[61,71,92,93,104],[61,67,71,104,139,147,154],[61,92,104,154],[61,65,66,104,154],[61,71,104],[61,65,66,67,68,69,70,71,72,73,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,97,98,104],[61,71,86,104],[61,71,78,79,104],[61,69,71,79,80,104],[61,70,104],[61,63,66,71,104],[61,71,75,79,80,104],[61,75,104],[61,69,71,74,104,147],[61,63,68,71,78,104],[61,104,136],[61,66,71,92,104,152,154],[61,104,212,213],[61,104,212],[61,104,116,117,119,120,121,124,136,144,147,153,154,156,157,158,159,161,162,163,183,184,185,186,187,188],[61,104,158,159,160,161],[61,104,158],[61,104,159],[61,104,156,188],[61,104,201,230],[61,104,205,222,223],[61,104,199,205,215,218,219],[61,104,225],[61,104,206],[61,104,107,117,136,188,190,197,199,205,207,210,211,214,215,218,220,221,224,226,227,229],[61,104,188,228,229],[61,104,205,207,214,218,220],[61,104,107,117,136,188,190,197,199,205,206,207,210,211,214,215,218,219,220,221,222,223,224,225,226,227,228,229]],"fileInfos":[{"version":"a7297ff837fcdf174a9524925966429eb8e5feecc2cc55cc06574e6b092c1eaa","impliedFormat":1},{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"69d4b61c408556b97b796782a1110f7e01a03ed80f31741f2c59b722185830ed","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"e6ca59368dce5a594dcde9bbb6ae640d668fa6c28c31639dd2a75b731bb036a2","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c928f02e5e827c24b3c61b69d5d8ffd1a54759eb9a9fe7594f6d7fc7270a5de","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"d2bc987ae352271d0d615a420dcf98cc886aa16b87fb2b569358c1fe0ca0773d","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"7e6ffd24de25a608b1b8e372c515a72a90bd9df03980272edec67071daec6d65","impliedFormat":1},{"version":"f9677e434b7a3b14f0a9367f9dfa1227dfe3ee661792d0085523c3191ae6a1a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f478f6f5902dc144c0d6d7bdc919c5177cac4d17a8ca8653c2daf6d7dc94317f","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0476e6b51a47a8eaf5ee6ecab0d686f066f3081de9a572f1dde3b2a8a7fb055","impliedFormat":1},{"version":"0ae4a428bf11b21b0014285626078010cc7a2b683046d61dc29aabb08948eec0","impliedFormat":1},{"version":"f96a023e442f02cf551b4cfe435805ccb0a7e13c81619d4da61ec835d03fe512","impliedFormat":1},{"version":"3f3edb8e44e3b9df3b7ca3219ab539710b6a7f4fe16bd884d441af207e03cd57","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"d71535813e39c23baa113bc4a29a0e187b87d1105ccc8c5a6ebaca38d9a9bff2","impliedFormat":1},{"version":"8cf7e92bdb2862c2d28ba4535c43dc599cfbc0025db5ed9973d9b708dcbe3d98","affectsGlobalScope":true,"impliedFormat":1},{"version":"23459c1915878a7c1e86e8bdb9c187cddd3aea105b8b1dfce512f093c969bc7e","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"1dc73f8854e5c4506131c4d95b3a6c24d0c80336d3758e95110f4c7b5cb16397","affectsGlobalScope":true,"impliedFormat":1},{"version":"636302a00dfd1f9fe6e8e91e4e9350c6518dcc8d51a474e4fc3a9ba07135100b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"e1ce1d622f1e561f6cdf246372ead3bbc07ce0342024d0e9c7caf3136f712698","impliedFormat":1},{"version":"c878f74b6d10b267f6075c51ac1d8becd15b4aa6a58f79c0cfe3b24908357f60","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"fbf68fc8057932b1c30107ebc37420f8d8dc4bef1253c4c2f9e141886c0df5ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"8c2ad42d5d1a2e8e6112625767f8794d9537f1247907378543106f7ba6c7df90","affectsGlobalScope":true,"impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"bdc622389a858f02df5b29663471c4968d6823cb58084505eecf3b7b2cf190ad","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f706a8f7a08b4df9b12708e3c230e5e2a1e4cfe404f986871fb3618fe70015c","affectsGlobalScope":true,"impliedFormat":1},{"version":"74736930d108365d7bbe740c7154706ccfb1b2a3855a897963ab3e5c07ecbf19","impliedFormat":1},{"version":"b02784111b3fc9c38590cd4339ff8718f9329a6f4d3fd66e9744a1dcd1d7e191","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"63b05afa6121657f25e99e1519596b0826cda026f09372c9100dfe21417f4bd6","affectsGlobalScope":true,"impliedFormat":1},{"version":"3797dd6f4ea3dc15f356f8cdd3128bfa18122213b38a80d6c1f05d8e13cbdad8","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"751764bb94219b4ce8f5475dc35d3de2e432fea01a0c9610cd7f69ad05e398c6","impliedFormat":1},{"version":"21944c138a48dc23382cb6558b1d4498908faad2104ba7ff390ba8b27c06f3c0","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"035d0934d304483f07148427a5bd5b98ac265dae914a6b49749fe23fbd893ec7","impliedFormat":99},{"version":"e2ed5b81cbed3a511b21a18ab2539e79ac1f4bc1d1d28f8d35d8104caa3b429f","impliedFormat":99},{"version":"161c8e0690c46021506e32fda85956d785b70f309ae97011fd27374c065cac9b","affectsGlobalScope":true,"impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","impliedFormat":1},{"version":"33f3718dababfc26dfd9832c150149ea4e934f255130f8c118a59ae69e5ed441","impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","impliedFormat":1},{"version":"1bb61aa2f08ab4506d41dbe16c5f3f5010f014bbf46fa3d715c0cbe3b00f4e1c","impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","impliedFormat":1},{"version":"e42820cd611b15910c204cd133f692dcd602532b39317d4f2a19389b27e6f03d","impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","impliedFormat":99},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":1},{"version":"7870becb94cbc11d2d01b77c4422589adcba4d8e59f726246d40cd0d129784d8","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"f70b8328a15ca1d10b1436b691e134a49bc30dcf3183a69bfaa7ba77e1b78ecd","impliedFormat":1},{"version":"499c700e4c4dc8dcf4bc25d107a473b6fdeb9e3c7953b2bab8c79d3fb309ebb7","impliedFormat":99},{"version":"50d0f9f7c895c02124a84433b94fde0298450138c893f620f66c9e832ccdf26a","impliedFormat":99},{"version":"3c1291fa957007538097ce38f7f0d65bf4c6ba6c2fad80ab806b71264fd296f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3b8d3c5051687a7454c8f54746ba62b86b91c1e77bce27fea8f86ffc2d0a1325","impliedFormat":99},{"version":"5c54a34e3d91727f7ae840bfe4d5d1c9a2f93c54cb7b6063d06ee4a6c3322656","impliedFormat":99},{"version":"07c0547e91d0c35c3d1bff1d2b7ffac3334b315e9eb5744a8440940e819ab13a","impliedFormat":99},{"version":"a6f223e9ef29edb1dc1ffa1a8507b9247589077081be99883ec5ac84d74e61d6","impliedFormat":99},{"version":"f9b028d3c3891dd817e24d53102132b8f696269309605e6ed4f0db2c113bbd82","impliedFormat":99},{"version":"fb7c8d90e52e2884509166f96f3d591020c7b7977ab473b746954b0c8d100960","impliedFormat":99},{"version":"373e16d44e57937558478c586396210e4eeac6c895787863381a6588185528e4","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"daf54402364627db51d8ccdcf98620ca7bd88dbd0036053bff51b87714a299b4","impliedFormat":99},{"version":"171c0308da0fc6251ea4184989d62c33dff3f277695ab1d556c421c0af59ddd3","affectsGlobalScope":true,"impliedFormat":99},{"version":"fe2d63fcfdde197391b6b70daf7be8c02a60afa90754a5f4a04bdc367f62793d","impliedFormat":99},{"version":"7c45fbd736e81fd9899cf4d75b242326ccda37eafdd9555e5b64a0ed59e8f6e9","impliedFormat":99},{"version":"9c2fe4e4ddf257e9b40d4d9fca28f86a8653a98492239a5ba27790019570cb71","impliedFormat":99},{"version":"f8433f2a07ccab79429b2fd66d12731a13f18061d4e7f8dc8559796086b22bc4","impliedFormat":99},{"version":"e64b03ee2d4d53929ea13a1e2b52aaba0685c86185b0f6f3346fc548b75a2245","impliedFormat":99},{"version":"8124828a11be7db984fcdab052fd4ff756b18edcfa8d71118b55388176210923","impliedFormat":99},{"version":"d06f9f2ba52c62a1d6cc63f4a015bc7ccd155f3bac2c07fbb979aec6013d966f","impliedFormat":99},{"version":"b34b5f6b506abb206b1ea73c6a332b9ee9c8c98be0f6d17cdbda9430ecc1efab","impliedFormat":99},{"version":"75d4c746c3d16af0df61e7b0afe9606475a23335d9f34fcc525d388c21e9058b","impliedFormat":99},{"version":"fa959bf357232201c32566f45d97e70538c75a093c940af594865d12f31d4912","impliedFormat":99},{"version":"7d0eecfbb8fd85a40b3f1218d7b53f193d4194543a4053d0b007fcc869bd2594","impliedFormat":99},{"version":"e6233e1c976265e85aa8ad76c3881febe6264cb06ae3136f0257e1eab4a6cc5a","impliedFormat":99},{"version":"cc99b45397f724c65ab5b16dd2b9add8e2f49513621ccba4e3a564b939bfe706","impliedFormat":99},{"version":"4734f2650122fed32bf168723cbc2e7b64f0c281fec9fc7c37a23d68ee4d4033","impliedFormat":99},{"version":"5c54a34e3d91727f7ae840bfe4d5d1c9a2f93c54cb7b6063d06ee4a6c3322656","impliedFormat":99},{"version":"324ac98294dab54fbd580c7d0e707d94506d7b2c3d5efe981a8495f02cf9ad96","impliedFormat":99},{"version":"9ec72eb493ff209b470467e24264116b6a8616484bca438091433a545dfba17e","impliedFormat":99},{"version":"dd1e40affaae1edc4beefe3d9832e86a683dcfc66fdf8c93c851a47298b04276","impliedFormat":99},{"version":"49747416f08b3ba50500a215e7a55d75268b84e31e896a40313c8053e8dec908","impliedFormat":99},{"version":"bb14e4b17394d59bd9f08459ce36d460dca08bd885c1347cf4fa7166c5af80a3","impliedFormat":99},{"version":"b07c8a8ea750da9dea2d813f9d4f65d14c0090bb00c6dde9372ec1d38b74992e","impliedFormat":99},{"version":"77217723774e80cf137592086cb40cd7607e106155a4c4071773574057863635","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"971a2c327ff166c770c5fb35699575ba2d13bba1f6d2757309c9be4b30036c8e","impliedFormat":99},{"version":"3dc60aac181aa635ad323906cdb76d723376299f0f7a4264f2f3e2ae9b8ecc1b","impliedFormat":99},{"version":"7bd51996fb7717941cbe094b05adc0d80b9503b350a77b789bbb0fc786f28053","impliedFormat":99},{"version":"b62006bbc815fe8190c7aee262aad6bff993e3f9ade70d7057dfceab6de79d2f","impliedFormat":99},{"version":"3c1b7a726da6885550f1ded3bda6f995c9ae1ca3b5da0c7d282dd6cbe2ed1d1e","impliedFormat":99},{"version":"4b2f44e6a64352caffcf08f209cea4ed872be36a859d281cc04df369f88a62c9","impliedFormat":99},{"version":"a3c3374093c5b26d7f8ea7385aab32cc5ba736d33bbc04794b1f41189cb458a4","impliedFormat":99},{"version":"7bbff6783e96c691a41a7cf12dd5486b8166a01b0c57d071dbcfca55c9525ec4","impliedFormat":99},{"version":"f953e7ebe33918779fec73d555a325e9c9b953daa4b5ed468f118e3c490d3cd3","signature":"f92b3d6204f3de085d31266f492b44b4e8077b7eb5a6c2502f675d42c31cdb12"},{"version":"6cf931501c12bc83167d78d9dadb51f67eff9d80547b072ec4d3f1af032dd6dd","signature":"4b96dd19fd2949d28ce80e913412b0026dc421e5bf6c31d87c7b5eb11b5753b4"},{"version":"b558c9a18ea4e6e4157124465c3ef1063e64640da139e67be5edb22f534f2f08","impliedFormat":1},{"version":"01374379f82be05d25c08d2f30779fa4a4c41895a18b93b33f14aeef51768692","impliedFormat":1},{"version":"b0dee183d4e65cf938242efaf3d833c6b645afb35039d058496965014f158141","impliedFormat":1},{"version":"c0bbbf84d3fbd85dd60d040c81e8964cc00e38124a52e9c5dcdedf45fea3f213","impliedFormat":1},{"version":"0d6959a728ca966b55c7c8a3519058903673eb5a8cfecbc7493ad2db4cac51ea","impliedFormat":1},{"version":"0bdb6e9e123c8ef83cf4aa5237a52655c04108d80b268eb7d33c2919f5d4f145","signature":"60db2c87641eecdb17c756de0b691d6cc00f9d79e9b0af439014a49636fc3ebf"}],"root":[232,233,239],"options":{"allowImportingTsExtensions":true,"composite":true,"module":99,"skipLibCheck":true},"referencedMap":[[232,1],[239,2],[233,3],[52,4],[50,5],[238,5],[55,6],[51,4],[53,7],[54,4],[155,5],[101,8],[102,8],[103,9],[61,10],[104,11],[105,12],[106,13],[56,5],[59,14],[57,5],[58,5],[107,15],[108,16],[109,17],[110,18],[111,19],[112,20],[113,20],[115,21],[114,22],[116,23],[117,24],[118,25],[100,26],[60,5],[119,27],[120,28],[121,29],[154,30],[122,31],[123,32],[124,33],[125,34],[126,35],[127,36],[128,37],[129,38],[130,39],[131,40],[132,40],[133,41],[134,5],[135,5],[136,42],[138,43],[137,44],[139,45],[140,46],[141,47],[142,48],[143,49],[144,50],[145,51],[146,52],[147,53],[148,54],[149,55],[150,56],[151,57],[152,58],[153,59],[189,60],[190,5],[200,61],[201,62],[210,63],[208,5],[209,5],[192,5],[215,5],[205,64],[202,65],[203,66],[222,67],[216,5],[219,68],[218,69],[227,69],[217,70],[191,5],[199,71],[204,71],[194,72],[197,73],[211,72],[198,74],[193,5],[163,5],[180,75],[178,76],[179,77],[167,78],[168,76],[175,79],[166,80],[171,81],[181,5],[172,82],[177,83],[183,84],[182,85],[165,86],[173,87],[174,88],[169,89],[176,75],[170,90],[157,91],[156,92],[164,5],[236,93],[235,5],[234,5],[237,94],[223,5],[195,5],[196,95],[1,5],[48,5],[49,5],[9,5],[13,5],[12,5],[3,5],[14,5],[15,5],[16,5],[17,5],[18,5],[19,5],[20,5],[21,5],[4,5],[22,5],[23,5],[5,5],[24,5],[28,5],[25,5],[26,5],[27,5],[29,5],[30,5],[31,5],[6,5],[32,5],[33,5],[34,5],[35,5],[7,5],[39,5],[36,5],[37,5],[38,5],[40,5],[8,5],[41,5],[46,5],[47,5],[42,5],[43,5],[44,5],[45,5],[2,5],[11,5],[10,5],[78,96],[88,97],[77,96],[98,98],[69,99],[68,100],[97,101],[91,102],[96,103],[71,104],[85,105],[70,106],[94,107],[66,108],[65,101],[95,109],[67,110],[72,111],[73,5],[76,111],[63,5],[99,112],[89,113],[80,114],[81,115],[83,116],[79,117],[82,118],[92,101],[74,119],[75,120],[84,121],[64,122],[87,113],[86,111],[90,5],[93,123],[225,124],[213,125],[214,124],[212,5],[188,126],[162,127],[161,128],[159,128],[158,5],[160,129],[186,5],[185,5],[184,5],[187,130],[231,131],[224,132],[220,133],[226,134],[207,135],[228,136],[229,137],[221,138],[230,139],[206,5],[62,5]],"affectedFilesPendingEmit":[[232,17],[239,17],[233,17]],"emitSignatures":[232,233,239],"version":"5.8.3"} +{"fileNames":["../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/.pnpm/@babel+types@7.29.8/node_modules/@babel/types/lib/index.d.ts","../../node_modules/.pnpm/@types+babel__generator@7.27.0/node_modules/@types/babel__generator/index.d.ts","../../node_modules/.pnpm/@babel+parser@7.29.8/node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/.pnpm/@types+babel__template@7.4.4/node_modules/@types/babel__template/index.d.ts","../../node_modules/.pnpm/@types+babel__traverse@7.28.0/node_modules/@types/babel__traverse/index.d.ts","../../node_modules/.pnpm/@types+babel__core@7.20.5/node_modules/@types/babel__core/index.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/globals.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/web-globals/crypto.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/web-globals/domexception.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/web-globals/events.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/utility.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/header.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/readable.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/fetch.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/formdata.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/connector.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client-stats.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/errors.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/dispatcher.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-origin.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool-stats.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/handlers.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/balanced-pool.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/h2c-client.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/agent.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-call-history.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-agent.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-client.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-pool.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/snapshot-agent.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-errors.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-handler.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-agent.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/api.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache-interceptor.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/interceptors.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/util.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cookies.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/patch.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/websocket.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/eventsource.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/content-type.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache.d.ts","../../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/index.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/web-globals/fetch.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/web-globals/navigator.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/web-globals/storage.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/web-globals/streams.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/assert.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/assert/strict.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/async_hooks.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/buffer.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/child_process.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/cluster.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/console.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/constants.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/crypto.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/dgram.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/dns.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/dns/promises.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/domain.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/events.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/fs.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/fs/promises.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/http.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/http2.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/https.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/inspector.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/inspector.generated.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/module.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/net.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/os.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/path.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/perf_hooks.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/process.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/punycode.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/querystring.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/readline.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/readline/promises.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/repl.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/sea.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/sqlite.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/stream.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/stream/promises.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/stream/consumers.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/stream/web.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/string_decoder.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/test.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/timers.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/timers/promises.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/tls.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/trace_events.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/tty.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/url.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/util.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/v8.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/vm.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/wasi.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/worker_threads.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/zlib.d.ts","../../node_modules/.pnpm/@types+node@24.10.1/node_modules/@types/node/index.d.ts","../../node_modules/.pnpm/@types+estree@1.0.9/node_modules/@types/estree/index.d.ts","../../node_modules/.pnpm/rollup@4.62.4/node_modules/rollup/dist/rollup.d.ts","../../node_modules/.pnpm/rollup@4.62.4/node_modules/rollup/dist/parseast.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0/node_modules/vite/types/hmrpayload.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0/node_modules/vite/types/customevent.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0/node_modules/vite/types/hot.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0/node_modules/vite/dist/node/modulerunnertransport.d-dj_me5sf.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0/node_modules/vite/dist/node/module-runner.d.ts","../../node_modules/.pnpm/esbuild@0.25.12/node_modules/esbuild/lib/main.d.ts","../../node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/source-map.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/previous-map.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/input.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/css-syntax-error.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/declaration.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/root.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/warning.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/lazy-result.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/no-work-result.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/processor.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/result.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/document.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/rule.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/node.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/comment.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/container.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/at-rule.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/list.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/postcss.d.ts","../../node_modules/.pnpm/postcss@8.5.3/node_modules/postcss/lib/postcss.d.mts","../../node_modules/.pnpm/vite@6.3.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0/node_modules/vite/types/internal/lightningcssoptions.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0/node_modules/vite/types/internal/csspreprocessoroptions.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0/node_modules/vite/types/importglob.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0/node_modules/vite/types/metadata.d.ts","../../node_modules/.pnpm/vite@6.3.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0/node_modules/vite/dist/node/index.d.ts","../../node_modules/.pnpm/@vitejs+plugin-react@4.4.1_vite@6.3.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0_/node_modules/@vitejs/plugin-react/dist/index.d.mts","../../node_modules/.pnpm/@vitest+expect@3.1.2/node_modules/@vitest/expect/dist/chai.d.cts","../../node_modules/.pnpm/@vitest+spy@3.1.2/node_modules/@vitest/spy/dist/index.d.ts","../../node_modules/.pnpm/@vitest+pretty-format@3.1.2/node_modules/@vitest/pretty-format/dist/index.d.ts","../../node_modules/.pnpm/@vitest+utils@3.1.2/node_modules/@vitest/utils/dist/types.d.ts","../../node_modules/.pnpm/@vitest+utils@3.1.2/node_modules/@vitest/utils/dist/helpers.d.ts","../../node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/index-8b61d5bc.d.ts","../../node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.d.ts","../../node_modules/.pnpm/@vitest+utils@3.1.2/node_modules/@vitest/utils/dist/index.d.ts","../../node_modules/.pnpm/@vitest+utils@3.1.2/node_modules/@vitest/utils/dist/types.d-bcelap-c.d.ts","../../node_modules/.pnpm/@vitest+utils@3.1.2/node_modules/@vitest/utils/dist/diff.d.ts","../../node_modules/.pnpm/@vitest+expect@3.1.2/node_modules/@vitest/expect/dist/index.d.ts","../../node_modules/.pnpm/@vitest+expect@3.1.2/node_modules/@vitest/expect/index.d.ts","../../node_modules/.pnpm/@vitest+runner@3.1.2/node_modules/@vitest/runner/dist/tasks.d-hsdzc98-.d.ts","../../node_modules/.pnpm/@vitest+runner@3.1.2/node_modules/@vitest/runner/dist/types.d.ts","../../node_modules/.pnpm/@vitest+utils@3.1.2/node_modules/@vitest/utils/dist/error.d.ts","../../node_modules/.pnpm/@vitest+runner@3.1.2/node_modules/@vitest/runner/dist/index.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@24.10.1_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/optional-types.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@24.10.1_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/chunks/environment.d.dmw5ulng.d.ts","../../node_modules/.pnpm/@vitest+mocker@3.1.2_vite@6.3.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0_/node_modules/@vitest/mocker/dist/registry.d-d765pazg.d.ts","../../node_modules/.pnpm/@vitest+mocker@3.1.2_vite@6.3.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0_/node_modules/@vitest/mocker/dist/types.d-d_arzrdy.d.ts","../../node_modules/.pnpm/@vitest+mocker@3.1.2_vite@6.3.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0_/node_modules/@vitest/mocker/dist/index.d.ts","../../node_modules/.pnpm/@vitest+utils@3.1.2/node_modules/@vitest/utils/dist/source-map.d.ts","../../node_modules/.pnpm/vite-node@3.1.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0/node_modules/vite-node/dist/trace-mapping.d-dlvdeqop.d.ts","../../node_modules/.pnpm/vite-node@3.1.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0/node_modules/vite-node/dist/index.d-cwzbpocv.d.ts","../../node_modules/.pnpm/vite-node@3.1.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0/node_modules/vite-node/dist/index.d.ts","../../node_modules/.pnpm/@vitest+pretty-format@3.2.7/node_modules/@vitest/pretty-format/dist/index.d.ts","../../node_modules/.pnpm/@vitest+snapshot@3.1.2/node_modules/@vitest/snapshot/dist/environment.d-dhdq1csl.d.ts","../../node_modules/.pnpm/@vitest+snapshot@3.1.2/node_modules/@vitest/snapshot/dist/rawsnapshot.d-lfsmjfud.d.ts","../../node_modules/.pnpm/@vitest+snapshot@3.1.2/node_modules/@vitest/snapshot/dist/index.d.ts","../../node_modules/.pnpm/@vitest+snapshot@3.1.2/node_modules/@vitest/snapshot/dist/environment.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@24.10.1_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/chunks/config.d.uqe-kr0o.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@24.10.1_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/chunks/worker.d.chgsog0s.d.ts","../../node_modules/.pnpm/@vitest+runner@3.1.2/node_modules/@vitest/runner/dist/utils.d.ts","../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@24.10.1_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/chunks/benchmark.d.bwvbvtda.d.ts","../../node_modules/.pnpm/vite-node@3.1.2_@types+node@24.10.1_jiti@1.21.7_yaml@2.9.0/node_modules/vite-node/dist/client.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@24.10.1_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/chunks/coverage.d.s9rmnxie.d.ts","../../node_modules/.pnpm/@vitest+snapshot@3.1.2/node_modules/@vitest/snapshot/dist/manager.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@24.10.1_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/chunks/reporters.d.79o4mouw.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@24.10.1_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/chunks/vite.d.bvr6nvdj.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@24.10.1_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/dist/config.d.ts","../../node_modules/.pnpm/vitest@3.1.2_@types+node@24.10.1_jiti@1.21.7_jsdom@26.1.0_yaml@2.9.0/node_modules/vitest/config.d.ts","./local-deps.ts","./vite.config.ts","../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/types/generated/corepluginlist.d.ts","../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/types/generated/colors.d.ts","../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/types/config.d.ts","../../node_modules/.pnpm/tailwindcss@3.4.17/node_modules/tailwindcss/types/index.d.ts","../../node_modules/.pnpm/@tailwindcss+forms@0.5.10_tailwindcss@3.4.17/node_modules/@tailwindcss/forms/src/index.d.ts","./tailwind.config.ts"],"fileIdsList":[[60,114,126,131,132,135,136],[60,114,131,132,247,248],[60,114,126,131,132,136,157,199,241,242],[52,60,114,131,132],[60,114,131,132],[52,53,54,55,56,60,114,131,132],[52,54,60,114,131,132],[60,111,112,114,131,132],[60,113,114,131,132],[114,131,132],[60,114,119,131,132,149],[60,114,115,120,125,131,132,134,146,157],[60,114,115,116,125,131,132,134],[60,114,117,131,132,158],[60,114,118,119,126,131,132,135],[60,114,119,131,132,146,154],[60,114,120,122,125,131,132,134],[60,113,114,121,131,132],[60,114,122,123,131,132],[60,114,124,125,131,132],[60,113,114,125,131,132],[60,114,125,126,127,131,132,146,157],[60,114,125,126,127,131,132,141,146,149],[60,106,114,122,125,128,131,132,134,146,157],[60,114,125,126,128,129,131,132,134,146,154,157],[60,114,128,130,131,132,146,154,157],[58,59,60,61,62,63,64,65,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],[60,114,125,131,132],[60,114,131,132,133,157],[60,114,122,125,131,132,134,146],[60,114,131,132,135],[60,114,131,132,136],[60,113,114,131,132,137],[60,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],[60,114,131,132,139],[60,114,131,132,140],[60,114,125,131,132,141,142],[60,114,131,132,141,143,158,160],[60,114,126,131,132],[60,114,125,131,132,146,147,149],[60,114,131,132,148,149],[60,114,131,132,146,147],[60,114,131,132,149],[60,114,131,132,150],[60,111,114,131,132,146,151],[60,114,125,131,132,152,153],[60,114,131,132,152,153],[60,114,119,131,132,134,146,154],[60,114,131,132,155],[60,114,131,132,134,156],[60,114,128,131,132,140,157],[60,114,119,131,132,158],[60,114,131,132,146,159],[60,114,131,132,133,160],[60,114,131,132,161],[60,114,119,131,132],[60,106,114,131,132],[60,114,131,132,162],[60,106,114,125,127,131,132,137,146,149,157,159,160,162],[60,114,131,132,146,163],[57,60,114,131,132,198,239],[60,114,131,132,201,206,207,209],[60,114,131,132,210],[60,114,131,132,218,219],[60,114,131,132,207,209,212,213,214],[60,114,131,132,207],[60,114,131,132,207,209,212],[60,114,131,132,207,212],[60,114,131,132,226],[60,114,131,132,202,226,227],[60,114,131,132,202,226],[60,114,131,132,202,208],[60,114,131,132,203],[60,114,131,132,202,203,204,206],[60,114,131,132,202],[60,114,131,132,189],[60,114,131,132,187,189],[60,114,131,132,178,186,187,188,190],[60,114,131,132,176],[60,114,131,132,179,184,189,192],[60,114,131,132,175,192],[60,114,131,132,179,180,183,184,185,192],[60,114,131,132,179,180,181,183,184,192],[60,114,131,132,176,177,178,179,180,184,185,186,188,189,190,192],[60,114,131,132,192],[60,114,131,132,174,176,177,178,179,180,181,183,184,185,186,187,188,189,190,191],[60,114,131,132,174,192],[60,114,131,132,179,181,182,184,185,192],[60,114,131,132,183,192],[60,114,131,132,184,185,189,192],[60,114,131,132,177,187],[60,114,131,132,166,197,198],[60,114,131,132,165,166],[60,114,131,132,244,245],[60,114,131,132,193,246],[60,114,131,132,205],[60,72,75,78,79,114,131,132,157],[60,75,114,131,132,146,157],[60,75,79,114,131,132,157],[60,114,131,132,146],[60,69,114,131,132],[60,73,114,131,132],[60,71,72,75,114,131,132,157],[60,114,131,132,134,154],[60,114,131,132,164],[60,69,114,131,132,164],[60,71,75,114,131,132,134,157],[60,66,67,68,70,74,114,125,131,132,146,157],[60,75,83,91,114,131,132],[60,67,73,114,131,132],[60,75,100,101,114,131,132],[60,67,70,75,114,131,132,149,157,164],[60,75,114,131,132],[60,71,75,114,131,132,157],[60,66,114,131,132],[60,69,70,71,73,74,75,76,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,101,102,103,104,105,114,131,132],[60,75,93,96,114,122,131,132],[60,75,83,84,85,114,131,132],[60,73,75,84,86,114,131,132],[60,74,114,131,132],[60,67,69,75,114,131,132],[60,75,79,84,86,114,131,132],[60,79,114,131,132],[60,73,75,78,114,131,132,157],[60,67,71,75,83,114,131,132],[60,75,93,114,131,132],[60,86,114,131,132],[60,69,75,100,114,131,132,149,162,164],[60,114,131,132,222,223],[60,114,131,132,222],[60,114,125,126,128,129,130,131,132,134,146,154,157,163,164,166,167,168,169,171,172,173,193,194,195,196,197,198],[60,114,131,132,168,169,170,171],[60,114,131,132,168],[60,114,131,132,169],[60,114,131,132,166,198],[60,114,131,132,211,240],[60,114,131,132,215,232,233],[60,114,131,132,209,215,225,228,229],[60,114,131,132,235],[60,114,131,132,216],[60,114,117,126,131,132,146,198,200,207,209,215,217,220,221,224,225,228,230,231,234,236,237,239],[60,114,131,132,198,238,239],[60,114,131,132,215,217,224,228,230],[60,114,117,126,131,132,146,198,200,207,209,215,216,217,220,221,224,225,228,229,230,231,232,233,234,235,236,237,238,239]],"fileInfos":[{"version":"a7297ff837fcdf174a9524925966429eb8e5feecc2cc55cc06574e6b092c1eaa","impliedFormat":1},{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"69d4b61c408556b97b796782a1110f7e01a03ed80f31741f2c59b722185830ed","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"e6ca59368dce5a594dcde9bbb6ae640d668fa6c28c31639dd2a75b731bb036a2","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"830171b27c5fdf9bcbe4cf7d428fcf3ae2c67780fb7fbdccdf70d1623d938bc4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b21e13ed07d0df176ae31d6b7f01f7b17d66dbeb489c0d31d00de2ca14883da","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f929f0b6b3421a2d34344b0f421f45aeb2c84ad365ebf29d04312023b3accc58","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"d8cf132379078d0974a59df26069689a2d33c7dc826b5be56231841cb2f32e58","impliedFormat":1},{"version":"fbf413fc617837453c878a9174a1f1b383616857a3f8366bc41cf30df4aea7d5","impliedFormat":1},{"version":"148c73ec11318850f571172ceae3e55ce479d850fe18ec8eae0abd99d9f6c319","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"e8aabbee5e7b9101b03bb4222607d57f38859b8115a8050a4eb91b4ee43a3a73","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"c0bb1b65757c72bbf8ddf7eaa532223bacf58041ff16c883e76f45506596e925","impliedFormat":1},{"version":"c8b85f7aed29f8f52b813f800611406b0bfe5cf3224d20a4bdda7c7f73ce368e","affectsGlobalScope":true,"impliedFormat":1},{"version":"145dcf25fd4967c610c53d93d7bc4dce8fbb1b6dd7935362472d4ae49363c7ba","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"76957a6d92b94b9e2852cf527fea32ad2dc0ef50f67fe2b14bd027c9ceef2d86","impliedFormat":1},{"version":"9043daec15206650fa119bad6b8d70136021ea7d52673a71f79a87a42ee38d44","affectsGlobalScope":true,"impliedFormat":1},{"version":"4e2de7ab2f74e36d7078bccdf831585b10dc6330bab56054921531b03f9beaf3","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"65faec1b4bd63564aeec33eab9cacfaefd84ce2400f03903a71a1841fbce195f","impliedFormat":1},{"version":"b33b74b97952d9bf4fbd2951dcfbb5136656ddb310ce1c84518aaa77dbca9992","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"6b306cd4282bbb54d4a6bb23cfb7a271160983dfc38c67b5a132504cfcc34896","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"450172a56b944c2d83f45cc11c9a388ea967cd301a21202aa0a23c34c7506a18","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"72f8936aebf0c4a1adab767b97d34ba7d3a308afcf76de4417b9c16fb92ed548","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"69e0a41d620fb678a899c65e073413b452f4db321b858fe422ad93fd686cd49a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3585d6891e9ea18e07d0755a6d90d71331558ba5dc5561933553209f886db106","affectsGlobalScope":true,"impliedFormat":1},{"version":"86be71cbb0593468644932a6eb96d527cfa600cecfc0b698af5f52e51804451d","impliedFormat":1},{"version":"84dd6b0fd2505135692935599d6606f50a421389e8d4535194bcded307ee5cf2","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"db19ea066fdc5f97df3f769e582ae3000380ab7942e266654bdb1a4650d19eaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"2a034894bf28c220a331c7a0229d33564803abe2ac1b9a5feee91b6b9b6e88ea","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"751764bb94219b4ce8f5475dc35d3de2e432fea01a0c9610cd7f69ad05e398c6","impliedFormat":1},{"version":"21944c138a48dc23382cb6558b1d4498908faad2104ba7ff390ba8b27c06f3c0","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"035d0934d304483f07148427a5bd5b98ac265dae914a6b49749fe23fbd893ec7","impliedFormat":99},{"version":"e2ed5b81cbed3a511b21a18ab2539e79ac1f4bc1d1d28f8d35d8104caa3b429f","impliedFormat":99},{"version":"161c8e0690c46021506e32fda85956d785b70f309ae97011fd27374c065cac9b","affectsGlobalScope":true,"impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","impliedFormat":1},{"version":"33f3718dababfc26dfd9832c150149ea4e934f255130f8c118a59ae69e5ed441","impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","impliedFormat":1},{"version":"1bb61aa2f08ab4506d41dbe16c5f3f5010f014bbf46fa3d715c0cbe3b00f4e1c","impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","impliedFormat":1},{"version":"e42820cd611b15910c204cd133f692dcd602532b39317d4f2a19389b27e6f03d","impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","impliedFormat":99},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":1},{"version":"7870becb94cbc11d2d01b77c4422589adcba4d8e59f726246d40cd0d129784d8","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"f70b8328a15ca1d10b1436b691e134a49bc30dcf3183a69bfaa7ba77e1b78ecd","impliedFormat":1},{"version":"499c700e4c4dc8dcf4bc25d107a473b6fdeb9e3c7953b2bab8c79d3fb309ebb7","impliedFormat":99},{"version":"50d0f9f7c895c02124a84433b94fde0298450138c893f620f66c9e832ccdf26a","impliedFormat":99},{"version":"3c1291fa957007538097ce38f7f0d65bf4c6ba6c2fad80ab806b71264fd296f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3b8d3c5051687a7454c8f54746ba62b86b91c1e77bce27fea8f86ffc2d0a1325","impliedFormat":99},{"version":"5c54a34e3d91727f7ae840bfe4d5d1c9a2f93c54cb7b6063d06ee4a6c3322656","impliedFormat":99},{"version":"07c0547e91d0c35c3d1bff1d2b7ffac3334b315e9eb5744a8440940e819ab13a","impliedFormat":99},{"version":"a6f223e9ef29edb1dc1ffa1a8507b9247589077081be99883ec5ac84d74e61d6","impliedFormat":99},{"version":"f9b028d3c3891dd817e24d53102132b8f696269309605e6ed4f0db2c113bbd82","impliedFormat":99},{"version":"fb7c8d90e52e2884509166f96f3d591020c7b7977ab473b746954b0c8d100960","impliedFormat":99},{"version":"373e16d44e57937558478c586396210e4eeac6c895787863381a6588185528e4","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"daf54402364627db51d8ccdcf98620ca7bd88dbd0036053bff51b87714a299b4","impliedFormat":99},{"version":"171c0308da0fc6251ea4184989d62c33dff3f277695ab1d556c421c0af59ddd3","affectsGlobalScope":true,"impliedFormat":99},{"version":"fe2d63fcfdde197391b6b70daf7be8c02a60afa90754a5f4a04bdc367f62793d","impliedFormat":99},{"version":"7c45fbd736e81fd9899cf4d75b242326ccda37eafdd9555e5b64a0ed59e8f6e9","impliedFormat":99},{"version":"9c2fe4e4ddf257e9b40d4d9fca28f86a8653a98492239a5ba27790019570cb71","impliedFormat":99},{"version":"f8433f2a07ccab79429b2fd66d12731a13f18061d4e7f8dc8559796086b22bc4","impliedFormat":99},{"version":"e64b03ee2d4d53929ea13a1e2b52aaba0685c86185b0f6f3346fc548b75a2245","impliedFormat":99},{"version":"8124828a11be7db984fcdab052fd4ff756b18edcfa8d71118b55388176210923","impliedFormat":99},{"version":"d06f9f2ba52c62a1d6cc63f4a015bc7ccd155f3bac2c07fbb979aec6013d966f","impliedFormat":99},{"version":"b34b5f6b506abb206b1ea73c6a332b9ee9c8c98be0f6d17cdbda9430ecc1efab","impliedFormat":99},{"version":"75d4c746c3d16af0df61e7b0afe9606475a23335d9f34fcc525d388c21e9058b","impliedFormat":99},{"version":"fa959bf357232201c32566f45d97e70538c75a093c940af594865d12f31d4912","impliedFormat":99},{"version":"7d0eecfbb8fd85a40b3f1218d7b53f193d4194543a4053d0b007fcc869bd2594","impliedFormat":99},{"version":"e6233e1c976265e85aa8ad76c3881febe6264cb06ae3136f0257e1eab4a6cc5a","impliedFormat":99},{"version":"cc99b45397f724c65ab5b16dd2b9add8e2f49513621ccba4e3a564b939bfe706","impliedFormat":99},{"version":"4734f2650122fed32bf168723cbc2e7b64f0c281fec9fc7c37a23d68ee4d4033","impliedFormat":99},{"version":"5c54a34e3d91727f7ae840bfe4d5d1c9a2f93c54cb7b6063d06ee4a6c3322656","impliedFormat":99},{"version":"324ac98294dab54fbd580c7d0e707d94506d7b2c3d5efe981a8495f02cf9ad96","impliedFormat":99},{"version":"9ec72eb493ff209b470467e24264116b6a8616484bca438091433a545dfba17e","impliedFormat":99},{"version":"dd1e40affaae1edc4beefe3d9832e86a683dcfc66fdf8c93c851a47298b04276","impliedFormat":99},{"version":"49747416f08b3ba50500a215e7a55d75268b84e31e896a40313c8053e8dec908","impliedFormat":99},{"version":"bb14e4b17394d59bd9f08459ce36d460dca08bd885c1347cf4fa7166c5af80a3","impliedFormat":99},{"version":"b07c8a8ea750da9dea2d813f9d4f65d14c0090bb00c6dde9372ec1d38b74992e","impliedFormat":99},{"version":"77217723774e80cf137592086cb40cd7607e106155a4c4071773574057863635","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"971a2c327ff166c770c5fb35699575ba2d13bba1f6d2757309c9be4b30036c8e","impliedFormat":99},{"version":"3dc60aac181aa635ad323906cdb76d723376299f0f7a4264f2f3e2ae9b8ecc1b","impliedFormat":99},{"version":"7bd51996fb7717941cbe094b05adc0d80b9503b350a77b789bbb0fc786f28053","impliedFormat":99},{"version":"b62006bbc815fe8190c7aee262aad6bff993e3f9ade70d7057dfceab6de79d2f","impliedFormat":99},{"version":"3c1b7a726da6885550f1ded3bda6f995c9ae1ca3b5da0c7d282dd6cbe2ed1d1e","impliedFormat":99},{"version":"4b2f44e6a64352caffcf08f209cea4ed872be36a859d281cc04df369f88a62c9","impliedFormat":99},{"version":"a3c3374093c5b26d7f8ea7385aab32cc5ba736d33bbc04794b1f41189cb458a4","impliedFormat":99},{"version":"7bbff6783e96c691a41a7cf12dd5486b8166a01b0c57d071dbcfca55c9525ec4","impliedFormat":99},{"version":"e1f44495c2711bbdfcb429a7284f2f2e36cd1a30fac59930a1606007c373a059","signature":"f92b3d6204f3de085d31266f492b44b4e8077b7eb5a6c2502f675d42c31cdb12"},{"version":"e29d697fa5355889d676e230e2595c80e5211f45e9cfe149e3c27a6f8b195fa7","signature":"4b96dd19fd2949d28ce80e913412b0026dc421e5bf6c31d87c7b5eb11b5753b4"},{"version":"b558c9a18ea4e6e4157124465c3ef1063e64640da139e67be5edb22f534f2f08","impliedFormat":1},{"version":"01374379f82be05d25c08d2f30779fa4a4c41895a18b93b33f14aeef51768692","impliedFormat":1},{"version":"b0dee183d4e65cf938242efaf3d833c6b645afb35039d058496965014f158141","impliedFormat":1},{"version":"c0bbbf84d3fbd85dd60d040c81e8964cc00e38124a52e9c5dcdedf45fea3f213","impliedFormat":1},{"version":"0d6959a728ca966b55c7c8a3519058903673eb5a8cfecbc7493ad2db4cac51ea","impliedFormat":1},{"version":"eb5532d2902c99ede4ea8ea3ba01bc848f053f942643e56bd1360cafa5f2375e","signature":"60db2c87641eecdb17c756de0b691d6cc00f9d79e9b0af439014a49636fc3ebf"}],"root":[242,243,249],"options":{"allowImportingTsExtensions":true,"composite":true,"module":99,"skipLibCheck":true},"referencedMap":[[242,1],[249,2],[243,3],[54,4],[52,5],[248,5],[57,6],[53,4],[55,7],[56,4],[165,5],[111,8],[112,8],[113,9],[60,10],[114,11],[115,12],[116,13],[58,5],[117,14],[118,15],[119,16],[120,17],[121,18],[122,19],[123,19],[124,20],[125,21],[126,22],[127,23],[61,5],[59,5],[128,24],[129,25],[130,26],[164,27],[131,28],[132,5],[133,29],[134,30],[135,31],[136,32],[137,33],[138,34],[139,35],[140,36],[141,37],[142,37],[143,38],[144,5],[145,39],[146,40],[148,41],[147,42],[149,43],[150,44],[151,45],[152,46],[153,47],[154,48],[155,49],[156,50],[157,51],[158,52],[159,53],[160,54],[161,55],[62,5],[63,56],[64,5],[65,5],[107,57],[108,58],[109,5],[110,43],[162,59],[163,60],[199,61],[200,5],[210,62],[211,63],[220,64],[218,5],[219,5],[202,5],[225,5],[215,65],[212,66],[213,67],[232,68],[226,5],[229,69],[228,70],[237,70],[227,71],[201,5],[209,72],[214,72],[204,73],[207,74],[221,73],[208,75],[203,5],[173,5],[190,76],[188,77],[189,78],[177,79],[178,77],[185,80],[176,81],[181,82],[191,5],[182,83],[187,84],[193,85],[192,86],[175,87],[183,88],[184,89],[179,90],[186,76],[180,91],[167,92],[166,93],[174,5],[246,94],[245,5],[244,5],[247,95],[233,5],[205,5],[206,96],[1,5],[50,5],[51,5],[9,5],[13,5],[12,5],[3,5],[14,5],[15,5],[16,5],[17,5],[18,5],[19,5],[20,5],[21,5],[4,5],[22,5],[23,5],[5,5],[24,5],[28,5],[25,5],[26,5],[27,5],[29,5],[30,5],[31,5],[6,5],[32,5],[33,5],[34,5],[35,5],[7,5],[39,5],[36,5],[37,5],[38,5],[40,5],[8,5],[41,5],[46,5],[47,5],[42,5],[43,5],[44,5],[45,5],[2,5],[48,5],[49,5],[11,5],[10,5],[83,97],[95,98],[81,99],[96,100],[105,101],[72,102],[73,103],[71,104],[104,105],[99,106],[103,107],[75,108],[92,109],[74,110],[102,111],[69,112],[70,106],[76,113],[77,5],[82,114],[80,113],[67,115],[106,116],[97,117],[86,118],[85,113],[87,119],[90,120],[84,121],[88,122],[100,105],[78,123],[79,124],[91,125],[68,100],[94,126],[93,113],[89,127],[98,5],[66,5],[101,128],[235,129],[223,130],[224,129],[222,5],[198,131],[172,132],[171,133],[169,133],[168,5],[170,134],[196,5],[195,5],[194,5],[197,135],[241,136],[234,137],[230,138],[236,139],[217,140],[238,141],[239,142],[231,143],[240,144],[216,5]],"affectedFilesPendingEmit":[[242,17],[249,17],[243,17]],"emitSignatures":[242,243,249],"version":"5.8.3"} \ No newline at end of file diff --git a/apps/desktop/vite.config.ts b/apps/desktop/vite.config.ts index 765dfc8..564bf09 100644 --- a/apps/desktop/vite.config.ts +++ b/apps/desktop/vite.config.ts @@ -40,7 +40,16 @@ export default defineConfig({ }, test: { environment: "jsdom", - setupFiles: "./src/test/setup.ts", + environmentOptions: { + jsdom: { + // jsdom only exposes `localStorage` for a real origin; the default + // `about:blank` is opaque, so `window.localStorage` is undefined and + // every test that reads the language or the mock-deps flag fails + // (Node 26 also warns `localStorage is not available`). + url: "http://localhost/", + }, + }, + setupFiles: ["./src/test/localStorage-shim.ts", "./src/test/setup.ts"], isolate: true, css: true, exclude: ["**/node_modules/**", "**/e2e/**", "**/dist/**"], diff --git a/crates/iran-split-helper/src/lib.rs b/crates/iran-split-helper/src/lib.rs index def87fe..8c8e601 100644 --- a/crates/iran-split-helper/src/lib.rs +++ b/crates/iran-split-helper/src/lib.rs @@ -515,11 +515,40 @@ impl Supervisor { } } +/// Kills any Mihomo process the helper is not tracking. +/// +/// `spawn_mihomo` uses `kill_on_drop(false)` so connectivity survives a helper +/// crash. When the helper restarts (machine reboot, reinstall, or a new +/// desktop session), `self.child` is empty and the previous Mihomo is now an +/// orphan holding the controller port and the TUN adapter. The new Mihomo +/// then fails to bind and the desktop silently talks to the stale process. +/// This runs before every spawn to reclaim the port and the adapter. +fn kill_orphaned_mihomo(binary: &Path) { + let Some(name) = binary.file_name().and_then(|n| n.to_str()) else { + return; + }; + let mut command = if cfg!(windows) { + let mut c = std::process::Command::new("taskkill"); + c.args(["/F", "/IM", name]); + c + } else { + let mut c = std::process::Command::new("pkill"); + c.args(["-x", name]); + c + }; + command + .stdin(Stdio::null()) + .stdout(Stdio::null()) + .stderr(Stdio::null()); + let _ = command.status(); +} + fn spawn_mihomo( settings: &HelperSettings, generation_root: &Path, config_path: &Path, ) -> Result { + kill_orphaned_mihomo(&settings.mihomo_binary); let mut command = Command::new(&settings.mihomo_binary); command .arg("-d") @@ -1048,6 +1077,20 @@ tun_name = "clash-iran" delete_owned_interface("unused"); } + /// `kill_orphaned_mihomo` must not panic when no matching process exists. + /// It swallows the non-zero exit from `taskkill`/`pkill` and returns, so a + /// fresh helper can reclaim the controller port even when no orphan is + /// running. + #[test] + fn kill_orphaned_mihomo_swallows_missing_process() { + let name = if cfg!(windows) { + "biflow-test-no-such-process-9f3a.exe" + } else { + "biflow-test-no-such-process-9f3a" + }; + kill_orphaned_mihomo(Path::new(name)); + } + #[cfg(windows)] #[test] fn windows_production_staging_is_beside_runtime_not_inside_it() { diff --git a/crates/iran-split-mihomo/src/lib.rs b/crates/iran-split-mihomo/src/lib.rs index 92f3728..06437a7 100644 --- a/crates/iran-split-mihomo/src/lib.rs +++ b/crates/iran-split-mihomo/src/lib.rs @@ -105,6 +105,16 @@ struct TunConfig { auto_redirect: bool, auto_detect_interface: bool, strict_route: bool, + /// Explicit IPv6 address for the TUN. Mihomo v1.19 does not always + /// apply the `fdfe:dcba:9876::1/126` default when only top-level `ipv6` + /// is true, so the TUN ends up with no inet6 address. With `strict-route` + /// on Windows that absence installs an unconditional WFP "block ipv6" + /// connect filter that exempts only Mihomo, breaking `localhost` -> `::1` + /// while connected (ADR 0112). Emitting the address explicitly keeps it. + /// Mihomo parses `inet6-address` as `[]netip.Prefix`, so it must be a + /// sequence, mirroring `inet4-address`. + #[serde(skip_serializing_if = "Vec::is_empty")] + inet6_address: Vec, #[serde(skip_serializing_if = "Vec::is_empty")] route_exclude_address: Vec, dns_hijack: Vec, @@ -323,7 +333,19 @@ pub fn generate_config_with_handles( auto_route: true, auto_redirect: false, auto_detect_interface: true, - strict_route: platform == Platform::Windows, + // Mihomo v1.19.29 does not apply `inet6-address` to the Wintun + // adapter on Windows (GET /configs reports inet4-address but no + // inet6-address, and the adapter only gets a link-local fe80:: + // address). With `strict-route: true` and no inet6 address, + // sing-tun installs an unconditional WFP "block ipv6" connect + // filter that only exempts Mihomo itself, so `localhost` -> + // `::1` is refused while connected. Until a Mihomo build that + // actually sets the inet6 address is available, Windows must run + // with `strict-route: false` so loopback IPv6 works. `dns.ipv6: + // false` already keeps AAAA out of fake-ip, so the IPv6 leak + // surface is minimal (ADR 0112). + strict_route: false, + inet6_address: vec!["fdfe:dcba:9876::1/126".into()], route_exclude_address: if platform == Platform::Windows { vec!["127.0.0.0/8".into(), "::1/128".into()] } else { @@ -356,7 +378,18 @@ pub fn generate_config_with_handles( enable: true, force_dns_mapping: true, parse_pure_ip: true, - override_destination: true, + // `override-destination: true` makes the sniffer replace the + // destination IP with the resolved IP of the TLS SNI hostname. + // With fake-ip DNS that resolved IP is a 198.18.x.x fake-ip, so + // a process that connects to a real IP (e.g. kubectl to a cluster + // API at 78.109.203.123:443 with a `tls-server-name` SNI) has its + // destination overridden to the fake-ip. Even a PROCESS-NAME,DIRECT + // rule then connects to the fake-ip, which is not a real server, + // and the TLS handshake fails with EOF. Disable + // `override-destination` so the connection keeps its original + // destination IP; domain-based rules still use the sniffed SNI + // (ADR 0112). + override_destination: false, sniff: BTreeMap::from([ ( "HTTP".into(), @@ -1609,7 +1642,7 @@ mod tests { } #[test] - fn windows_enables_strict_route_and_hiddify_bypass() { + fn windows_disables_strict_route_to_keep_loopback_ipv6() { let generated = generate_config( &AppConfig::default(), Platform::Windows, @@ -1617,18 +1650,34 @@ mod tests { &RoutePinsDocument::default(), ) .expect("config"); - assert!(generated.yaml.contains("strict-route: true")); + // Mihomo v1.19.29 does not apply inet6-address to the Wintun adapter, + // so strict-route would install a WFP "block ipv6" filter that drops + // ::1 loopback. Windows must use strict-route: false until a build + // that sets the inet6 address is available (ADR 0112). + assert!(generated.yaml.contains("strict-route: false")); assert!(generated.yaml.contains("route-exclude-address:")); assert!(generated.yaml.contains("- 127.0.0.0/8")); assert!(generated.yaml.contains("- ::1/128")); + assert!(generated.yaml.contains("inet6-address:")); + assert!(generated.yaml.contains("- fdfe:dcba:9876::1/126")); assert!(generated.yaml.contains("find-process-mode: always")); assert!(generated.yaml.contains("auto-redirect: false")); + // override-destination must be false so the sniffer does not redirect + // IP-based connections (e.g. kubectl to a cluster API) to a fake-ip + // based on the TLS SNI (ADR 0112). + assert!(generated.yaml.contains("override-destination: false")); let document: serde_yaml::Value = serde_yaml::from_str(&generated.yaml).expect("generated YAML parses"); // Top-level IPv6 keeps the TUN inet6 address, so strict-route does // not block `::1`; the fake-ip DNS still answers IPv4 only. assert_eq!(document["ipv6"], serde_yaml::Value::Bool(true)); assert_eq!(document["dns"]["ipv6"], serde_yaml::Value::Bool(false)); + assert_eq!( + document["tun"]["inet6-address"], + serde_yaml::Value::Sequence(vec![serde_yaml::Value::String( + "fdfe:dcba:9876::1/126".into() + )]) + ); assert!(generated.yaml.contains("dns-query#client-")); assert!(generated.yaml.contains("PROCESS-NAME,Hiddify.exe,DIRECT")); assert!(generated diff --git a/docs/adr/0112-windows-tun-keeps-ipv6.md b/docs/adr/0112-windows-tun-keeps-ipv6.md index 4c9260a..c01ab00 100644 --- a/docs/adr/0112-windows-tun-keeps-ipv6.md +++ b/docs/adr/0112-windows-tun-keeps-ipv6.md @@ -27,11 +27,23 @@ application ID, so every other process loses all IPv6, loopback included. ## Decision -- Generate top-level `ipv6: true` on Windows, as Linux already does. The - TUN keeps `fdfe:dcba:9876::1/126`, so the block filter is not installed. +- Generate top-level `ipv6: true` on Windows, as Linux already does. +- Emit `tun.inet6-address: fdfe:dcba:9876::1/126` explicitly so a future + Mihomo build that applies it will keep the inet6 address on the TUN. - Keep `dns.ipv6: false` on Windows. Fake-ip answers stay IPv4-only, so domain routing is unchanged. -- Keep `strict-route` and the loopback route exclusions. +- **Set `strict-route: false` on Windows.** Mihomo v1.19.29 does not apply + `inet6-address` to the Wintun adapter — `GET /configs` reports + `inet4-address` with no `inet6-address`, and the adapter only gets a + link-local `fe80::` address. With `strict-route: true` and no inet6 + address, sing-tun installs the unconditional WFP "block ipv6" connect + filter that only exempts Mihomo, so `localhost` -> `::1` is refused while + connected. Until a Mihomo build that actually sets the inet6 address is + available, Windows must run with `strict-route: false` so loopback IPv6 + works. `dns.ipv6: false` already keeps AAAA out of fake-ip, so the IPv6 + leak surface is minimal. +- Keep the loopback route exclusions (`127.0.0.0/8`, `::1/128`) for when + `strict-route` can be re-enabled. - IPv6 literal traffic (for example a browser's own DoH AAAA answers) now enters TUN and follows the rules instead of being dropped. @@ -48,3 +60,39 @@ regression shows up as `loopback_ipv6_blocked` in the snapshot. Findings no longer flag BiFlow's own split-default routes, one IPv4 plus one IPv6 default route, or a SYSTEM helper task that a standard user cannot list while the helper is reachable. + +### Orphaned Mihomo reclamation (6.2.54) + +A second root cause kept the fix from taking effect on an upgraded +machine. `spawn_mihomo` uses `kill_on_drop(false)` so connectivity +survives a helper crash, but when the helper itself restarts (machine +reboot, helper reinstall, or a new desktop session), `self.child` is +empty and the previous Mihomo is an orphan still holding the controller +port and the TUN adapter. The new Mihomo then fails to bind +`127.0.0.1:19090`, the desktop silently talks to the stale process, and +the new `inet6-address` config is never applied — `GET /configs` keeps +reporting the old `inet4`-only TUN. + +The helper now calls `kill_orphaned_mihomo` before every spawn. It runs +`taskkill /F /IM mihomo.exe` (Windows) or `pkill -x mihomo` (Linux) and +swallows the non-zero exit when no orphan exists. This reclaims the +port and the adapter so the fresh Mihomo binds cleanly. + +### Sniffer override-destination and kubectl EOF (6.2.56) + +A third root cause kept `kubectl` from reaching a cluster API while +connected. The cluster server `78.109.203.123:443` is in +`iran-networks` (78.109.192.0/20) and `kubectl.exe` is in the process +bypass list (`PROCESS-NAME,kubectl.exe,DIRECT`), so the connection +should have gone DIRECT. But the sniffer had `override-destination: +true`: when kubectl connected to the IP and sent a TLS SNI +(`tls-server-name` from kubeconfig), the sniffer resolved the SNI +hostname through fake-ip DNS and overrode the destination to the +resulting 198.18.x.x fake-ip. The DIRECT outbound then connected to +the fake-ip, which is not a real server, and the TLS handshake failed +with EOF in 3 ms. The connection never appeared in the live +connections list because the override happened before rule evaluation. + +Setting `override-destination: false` keeps the original destination +IP while still allowing domain-based rules to use the sniffed SNI. The +PROCESS-NAME,DIRECT rule then connects to the real cluster IP. diff --git a/package.json b/package.json index 434bb34..3032fbd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "iran-split-desktop-workspace", - "version": "6.2.52", + "version": "6.2.56", "private": true, "packageManager": "pnpm@9.0.1", "engines": { diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 2f8ce9f..d26b691 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "BiFlow", - "version": "6.2.52", + "version": "6.2.56", "identifier": "app.biflow.desktop", "build": { "beforeDevCommand": "pnpm bundle:check && pnpm --dir apps/desktop dev", diff --git a/version b/version index e8b440f..561de1d 100644 --- a/version +++ b/version @@ -1 +1 @@ -6.2.52 +6.2.56