From df89990b47689191cf2fd4d078141cd44e7eb387 Mon Sep 17 00:00:00 2001 From: wj-xiao Date: Thu, 3 Apr 2025 14:05:47 +0800 Subject: [PATCH] release the desktop version code --- desktop/.editorconfig | 9 + desktop/.gitignore | 9 + desktop/.npmrc | 3 + desktop/.prettierignore | 6 + desktop/.prettierrc.yaml | 26 + desktop/build/entitlements.mac.plist | 18 + desktop/build/icon.icns | Bin 0 -> 98164 bytes desktop/build/icon.ico | Bin 0 -> 18844 bytes desktop/build/icon.png | Bin 0 -> 16383 bytes desktop/build/icons/512x512.png | Bin 0 -> 16383 bytes desktop/dev-app-update.yml | 4 + desktop/electron-builder.yml | 52 + desktop/electron.vite.config.ts | 22 + desktop/eslint.config.mjs | 31 + desktop/notarize.js | 18 + desktop/package.json | 71 + desktop/pnpm-lock.yaml | 7878 +++++++++++++++++ desktop/resources/icon.png | Bin 0 -> 16383 bytes desktop/src/common/ipc-events.ts | 21 + desktop/src/main/device/index.ts | 58 + desktop/src/main/device/proto.ts | 134 + desktop/src/main/device/serial-port.ts | 81 + desktop/src/main/device/utils.ts | 18 + desktop/src/main/events/app.ts | 42 + desktop/src/main/events/index.ts | 3 + desktop/src/main/events/serial-port.ts | 89 + desktop/src/main/events/updater.ts | 50 + desktop/src/main/index.ts | 66 + desktop/src/preload/index.d.ts | 8 + desktop/src/preload/index.ts | 22 + desktop/src/renderer/index.html | 16 + desktop/src/renderer/src/App.tsx | 128 + .../src/renderer/src/assets/images/icon.png | Bin 0 -> 16383 bytes .../src/renderer/src/assets/styles/base.css | 5 + .../renderer/src/assets/styles/keyboard.css | 105 + .../src/renderer/src/assets/styles/main.css | 9 + .../src/components/device-modal/index.tsx | 26 + .../components/device-modal/serial-port.tsx | 88 + .../src/components/device-modal/video.tsx | 90 + .../src/components/keyboard/index.tsx | 82 + .../renderer/src/components/menu/index.tsx | 63 + .../src/components/menu/keyboard/index.tsx | 32 + .../src/components/menu/keyboard/paste.tsx | 51 + .../menu/keyboard/virtual-keyboard.tsx | 21 + .../src/components/menu/language/index.tsx | 44 + .../src/components/menu/mouse/direction.tsx | 58 + .../src/components/menu/mouse/index.tsx | 59 + .../src/components/menu/mouse/mode.tsx | 56 + .../src/components/menu/mouse/style.tsx | 57 + .../src/components/menu/serial-port/index.tsx | 72 + .../src/components/menu/settings/about.tsx | 79 + .../components/menu/settings/appearance.tsx | 70 + .../src/components/menu/settings/index.tsx | 108 + .../src/components/menu/settings/update.tsx | 136 + .../src/components/menu/video/device.tsx | 71 + .../src/components/menu/video/index.tsx | 23 + .../src/components/menu/video/resolution.tsx | 195 + .../src/components/mouse/absolute.tsx | 127 + .../renderer/src/components/mouse/index.tsx | 13 + .../src/components/mouse/relative.tsx | 148 + .../src/components/virtual-keyboard/index.tsx | 158 + .../src/components/virtual-keyboard/keys.ts | 199 + desktop/src/renderer/src/env.d.ts | 1 + desktop/src/renderer/src/i18n/index.ts | 53 + desktop/src/renderer/src/i18n/languages.ts | 8 + desktop/src/renderer/src/i18n/locales/en.ts | 79 + desktop/src/renderer/src/i18n/locales/zh.ts | 77 + desktop/src/renderer/src/jotai/device.ts | 17 + desktop/src/renderer/src/jotai/keyboard.ts | 5 + desktop/src/renderer/src/jotai/mouse.ts | 10 + desktop/src/renderer/src/libs/camera/index.ts | 52 + .../renderer/src/libs/keyboard/charCodes.ts | 107 + .../src/renderer/src/libs/keyboard/index.ts | 2 + .../src/libs/keyboard/keyboardCodes.ts | 121 + .../src/renderer/src/libs/storage/expiry.ts | 31 + .../src/renderer/src/libs/storage/index.ts | 117 + desktop/src/renderer/src/main.tsx | 18 + desktop/src/renderer/src/types.ts | 10 + desktop/tsconfig.json | 4 + desktop/tsconfig.node.json | 17 + desktop/tsconfig.web.json | 23 + 81 files changed, 11880 insertions(+) create mode 100644 desktop/.editorconfig create mode 100644 desktop/.gitignore create mode 100644 desktop/.npmrc create mode 100644 desktop/.prettierignore create mode 100644 desktop/.prettierrc.yaml create mode 100644 desktop/build/entitlements.mac.plist create mode 100644 desktop/build/icon.icns create mode 100644 desktop/build/icon.ico create mode 100644 desktop/build/icon.png create mode 100644 desktop/build/icons/512x512.png create mode 100644 desktop/dev-app-update.yml create mode 100644 desktop/electron-builder.yml create mode 100644 desktop/electron.vite.config.ts create mode 100644 desktop/eslint.config.mjs create mode 100644 desktop/notarize.js create mode 100644 desktop/package.json create mode 100644 desktop/pnpm-lock.yaml create mode 100644 desktop/resources/icon.png create mode 100644 desktop/src/common/ipc-events.ts create mode 100644 desktop/src/main/device/index.ts create mode 100644 desktop/src/main/device/proto.ts create mode 100644 desktop/src/main/device/serial-port.ts create mode 100644 desktop/src/main/device/utils.ts create mode 100644 desktop/src/main/events/app.ts create mode 100644 desktop/src/main/events/index.ts create mode 100644 desktop/src/main/events/serial-port.ts create mode 100644 desktop/src/main/events/updater.ts create mode 100644 desktop/src/main/index.ts create mode 100644 desktop/src/preload/index.d.ts create mode 100644 desktop/src/preload/index.ts create mode 100644 desktop/src/renderer/index.html create mode 100644 desktop/src/renderer/src/App.tsx create mode 100644 desktop/src/renderer/src/assets/images/icon.png create mode 100644 desktop/src/renderer/src/assets/styles/base.css create mode 100644 desktop/src/renderer/src/assets/styles/keyboard.css create mode 100644 desktop/src/renderer/src/assets/styles/main.css create mode 100644 desktop/src/renderer/src/components/device-modal/index.tsx create mode 100644 desktop/src/renderer/src/components/device-modal/serial-port.tsx create mode 100644 desktop/src/renderer/src/components/device-modal/video.tsx create mode 100644 desktop/src/renderer/src/components/keyboard/index.tsx create mode 100644 desktop/src/renderer/src/components/menu/index.tsx create mode 100644 desktop/src/renderer/src/components/menu/keyboard/index.tsx create mode 100644 desktop/src/renderer/src/components/menu/keyboard/paste.tsx create mode 100644 desktop/src/renderer/src/components/menu/keyboard/virtual-keyboard.tsx create mode 100644 desktop/src/renderer/src/components/menu/language/index.tsx create mode 100644 desktop/src/renderer/src/components/menu/mouse/direction.tsx create mode 100644 desktop/src/renderer/src/components/menu/mouse/index.tsx create mode 100644 desktop/src/renderer/src/components/menu/mouse/mode.tsx create mode 100644 desktop/src/renderer/src/components/menu/mouse/style.tsx create mode 100644 desktop/src/renderer/src/components/menu/serial-port/index.tsx create mode 100644 desktop/src/renderer/src/components/menu/settings/about.tsx create mode 100644 desktop/src/renderer/src/components/menu/settings/appearance.tsx create mode 100644 desktop/src/renderer/src/components/menu/settings/index.tsx create mode 100644 desktop/src/renderer/src/components/menu/settings/update.tsx create mode 100644 desktop/src/renderer/src/components/menu/video/device.tsx create mode 100644 desktop/src/renderer/src/components/menu/video/index.tsx create mode 100644 desktop/src/renderer/src/components/menu/video/resolution.tsx create mode 100644 desktop/src/renderer/src/components/mouse/absolute.tsx create mode 100644 desktop/src/renderer/src/components/mouse/index.tsx create mode 100644 desktop/src/renderer/src/components/mouse/relative.tsx create mode 100644 desktop/src/renderer/src/components/virtual-keyboard/index.tsx create mode 100644 desktop/src/renderer/src/components/virtual-keyboard/keys.ts create mode 100644 desktop/src/renderer/src/env.d.ts create mode 100644 desktop/src/renderer/src/i18n/index.ts create mode 100644 desktop/src/renderer/src/i18n/languages.ts create mode 100644 desktop/src/renderer/src/i18n/locales/en.ts create mode 100644 desktop/src/renderer/src/i18n/locales/zh.ts create mode 100644 desktop/src/renderer/src/jotai/device.ts create mode 100644 desktop/src/renderer/src/jotai/keyboard.ts create mode 100644 desktop/src/renderer/src/jotai/mouse.ts create mode 100644 desktop/src/renderer/src/libs/camera/index.ts create mode 100644 desktop/src/renderer/src/libs/keyboard/charCodes.ts create mode 100644 desktop/src/renderer/src/libs/keyboard/index.ts create mode 100644 desktop/src/renderer/src/libs/keyboard/keyboardCodes.ts create mode 100644 desktop/src/renderer/src/libs/storage/expiry.ts create mode 100644 desktop/src/renderer/src/libs/storage/index.ts create mode 100644 desktop/src/renderer/src/main.tsx create mode 100644 desktop/src/renderer/src/types.ts create mode 100644 desktop/tsconfig.json create mode 100644 desktop/tsconfig.node.json create mode 100644 desktop/tsconfig.web.json diff --git a/desktop/.editorconfig b/desktop/.editorconfig new file mode 100644 index 0000000..3dce414 --- /dev/null +++ b/desktop/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true \ No newline at end of file diff --git a/desktop/.gitignore b/desktop/.gitignore new file mode 100644 index 0000000..15ee65b --- /dev/null +++ b/desktop/.gitignore @@ -0,0 +1,9 @@ +node_modules +dist +out +.DS_Store +.eslintcache +*.log* + +.idea +.vscode diff --git a/desktop/.npmrc b/desktop/.npmrc new file mode 100644 index 0000000..2ced952 --- /dev/null +++ b/desktop/.npmrc @@ -0,0 +1,3 @@ +electron_mirror=https://npmmirror.com/mirrors/electron/ +electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/ +shamefully-hoist=true diff --git a/desktop/.prettierignore b/desktop/.prettierignore new file mode 100644 index 0000000..9c6b791 --- /dev/null +++ b/desktop/.prettierignore @@ -0,0 +1,6 @@ +out +dist +pnpm-lock.yaml +LICENSE.md +tsconfig.json +tsconfig.*.json diff --git a/desktop/.prettierrc.yaml b/desktop/.prettierrc.yaml new file mode 100644 index 0000000..f4fee7a --- /dev/null +++ b/desktop/.prettierrc.yaml @@ -0,0 +1,26 @@ +singleQuote: true +semi: false +printWidth: 100 +trailingComma: none +importOrder: + - ^(react/(.*)$)|^(react$) + - ^(next/(.*)$)|^(next$) + - + - '' + - ^@common/(.*)$ + - ^@renderer/(.*)$ + - '' + - '^[./]' +importOrderSeparation: false +importOrderSortSpecifiers: true +importOrderBuiltinModulesToTop: true +importOrderParserPlugins: + - typescript + - jsx + - tsx + - decorators-legacy +importOrderMergeDuplicateImports: true +importOrderCombineTypeAndValueImports: true +plugins: + - '@ianvs/prettier-plugin-sort-imports' + - prettier-plugin-tailwindcss diff --git a/desktop/build/entitlements.mac.plist b/desktop/build/entitlements.mac.plist new file mode 100644 index 0000000..c51d5e9 --- /dev/null +++ b/desktop/build/entitlements.mac.plist @@ -0,0 +1,18 @@ + + + + + com.apple.security.cs.allow-jit + + com.apple.security.cs.allow-unsigned-executable-memory + + com.apple.security.cs.allow-dyld-environment-variables + + com.apple.security.device.camera + + com.apple.security.device.microphone + + com.apple.security.device.audio-input + + + diff --git a/desktop/build/icon.icns b/desktop/build/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..b58568680232c623324773a223bd9a696668c939 GIT binary patch literal 98164 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

}iZn$mF9>_6mQ;NiwgZxk1x;tOQ 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%0Aq#(|lo@hyTgL6 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%0A3rlc;s1cFy@2nB4$yfTWimw{@bf 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 literal 0 HcmV?d00001 diff --git a/desktop/build/icon.png b/desktop/build/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..30f348c30a1411d847234e24b25de0399f2df8ae GIT binary patch literal 16383 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 aTf9DRx^X165#ELeyLQ@BU+!?f^#1{3a(^rU literal 0 HcmV?d00001 diff --git a/desktop/build/icons/512x512.png b/desktop/build/icons/512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..30f348c30a1411d847234e24b25de0399f2df8ae GIT binary patch literal 16383 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 aTf9DRx^X165#ELeyLQ@BU+!?f^#1{3a(^rU literal 0 HcmV?d00001 diff --git a/desktop/dev-app-update.yml b/desktop/dev-app-update.yml new file mode 100644 index 0000000..ff2d516 --- /dev/null +++ b/desktop/dev-app-update.yml @@ -0,0 +1,4 @@ +provider: github +owner: sipeed +repo: NanoKVM-USB +updaterCacheDirName: nanokvm-usb-updater diff --git a/desktop/electron-builder.yml b/desktop/electron-builder.yml new file mode 100644 index 0000000..4695ba3 --- /dev/null +++ b/desktop/electron-builder.yml @@ -0,0 +1,52 @@ +appId: com.sipeed.usbkvm +productName: NanoKVM-USB +directories: + buildResources: build +files: + - '!**/.vscode/*' + - '!src/*' + - '!electron.vite.config.{js,ts,mjs,cjs}' + - '!{.eslintignore,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}' + - '!{.env,.env.*,.npmrc,pnpm-lock.yaml}' + - '!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}' +asarUnpack: + - resources/** +win: + executableName: NanoKVM-USB +nsis: + onClick: false + allowToChangeInstallationDirectory: true + artifactName: ${productName}-${version}-setup.${ext} + shortcutName: ${productName} + uninstallDisplayName: ${productName} + createDesktopShortcut: always +mac: + entitlementsInherit: build/entitlements.mac.plist + extendInfo: + - NSCameraUsageDescription: Application requests access to the device's camera. + - NSMicrophoneUsageDescription: Application requests access to the device's microphone. + - NSDocumentsFolderUsageDescription: Application requests access to the user's Documents folder. + - NSDownloadsFolderUsageDescription: Application requests access to the user's Downloads folder. + hardenedRuntime: true + gatekeeperAssess: false + notarize: false +dmg: + artifactName: ${productName}-${version}.${ext} + sign: true +linux: + target: + - AppImage + - snap + - deb + maintainer: sipeed.com + category: Utility +appImage: + artifactName: ${productName}-${version}.${ext} +npmRebuild: false +afterSign: "./notarize.js" +publish: + provider: github + owner: sipeed + repo: NanoKVM-USB +electronDownload: + mirror: https://npmmirror.com/mirrors/electron/ diff --git a/desktop/electron.vite.config.ts b/desktop/electron.vite.config.ts new file mode 100644 index 0000000..62dca91 --- /dev/null +++ b/desktop/electron.vite.config.ts @@ -0,0 +1,22 @@ +import { resolve } from 'path' +import tailwindcss from '@tailwindcss/vite' +import react from '@vitejs/plugin-react' +import { defineConfig, externalizeDepsPlugin } from 'electron-vite' + +export default defineConfig({ + main: { + plugins: [externalizeDepsPlugin()] + }, + preload: { + plugins: [externalizeDepsPlugin()] + }, + renderer: { + resolve: { + alias: { + '@common': resolve('src/common'), + '@renderer': resolve('src/renderer/src') + } + }, + plugins: [react(), tailwindcss()] + } +}) diff --git a/desktop/eslint.config.mjs b/desktop/eslint.config.mjs new file mode 100644 index 0000000..e4776d2 --- /dev/null +++ b/desktop/eslint.config.mjs @@ -0,0 +1,31 @@ +import tseslint from '@electron-toolkit/eslint-config-ts' +import eslintConfigPrettier from '@electron-toolkit/eslint-config-prettier' +import eslintPluginReact from 'eslint-plugin-react' +import eslintPluginReactHooks from 'eslint-plugin-react-hooks' +import eslintPluginReactRefresh from 'eslint-plugin-react-refresh' + +export default tseslint.config( + { ignores: ['**/node_modules', '**/dist', '**/out'] }, + tseslint.configs.recommended, + eslintPluginReact.configs.flat.recommended, + eslintPluginReact.configs.flat['jsx-runtime'], + { + settings: { + react: { + version: 'detect' + } + } + }, + { + files: ['**/*.{ts,tsx}'], + plugins: { + 'react-hooks': eslintPluginReactHooks, + 'react-refresh': eslintPluginReactRefresh + }, + rules: { + ...eslintPluginReactHooks.configs.recommended.rules, + ...eslintPluginReactRefresh.configs.vite.rules + } + }, + eslintConfigPrettier +) diff --git a/desktop/notarize.js b/desktop/notarize.js new file mode 100644 index 0000000..30fbe0c --- /dev/null +++ b/desktop/notarize.js @@ -0,0 +1,18 @@ +const { notarize } = require('@electron/notarize') + +exports.default = async function notarizing(context) { + const { electronPlatformName, appOutDir } = context + if (electronPlatformName !== 'darwin') { + return + } + + const appName = context.packager.appInfo.productFilename + + return await notarize({ + appBundleId: 'com.sipeed.usbkvm', + appPath: `${appOutDir}/${appName}.app`, + teamId: process.env.APPLE_TEAM_ID, + appleId: process.env.APPLE_ID, + appleIdPassword: process.env.APPLE_APP_SPECIFIC_PASSWORD + }) +} diff --git a/desktop/package.json b/desktop/package.json new file mode 100644 index 0000000..aad8b5e --- /dev/null +++ b/desktop/package.json @@ -0,0 +1,71 @@ +{ + "name": "nanokvm-usb", + "version": "1.0.0", + "description": "NanoKVM-USB Desktop", + "main": "./out/main/index.js", + "author": "sipeed.com", + "homepage": "https://github.com/sipeed/NanoKVM-USB", + "scripts": { + "format": "prettier --write .", + "lint": "eslint --cache .", + "typecheck:node": "tsc --noEmit -p tsconfig.node.json --composite false", + "typecheck:web": "tsc --noEmit -p tsconfig.web.json --composite false", + "typecheck": "npm run typecheck:node && npm run typecheck:web", + "start": "electron-vite preview", + "dev": "electron-vite dev", + "build": "npm run typecheck && electron-vite build", + "postinstall": "electron-builder install-app-deps", + "build:unpack": "npm run build && electron-builder --dir", + "build:win": "npm run build && electron-builder --win", + "build:mac": "electron-vite build && electron-builder --mac", + "build:linux": "electron-vite build && electron-builder --linux" + }, + "dependencies": { + "@ant-design/icons": "^5.6.1", + "@electron-toolkit/preload": "^3.0.1", + "@electron-toolkit/utils": "^4.0.0", + "@tailwindcss/vite": "^4.0.6", + "antd": "^5.24.1", + "clsx": "^2.1.1", + "electron-log": "^5.3.1", + "electron-updater": "^6.3.9", + "i18next": "^24.2.2", + "jotai": "^2.12.1", + "lucide-react": "^0.476.0", + "react-i18next": "^15.4.1", + "react-responsive": "^10.0.0", + "react-simple-keyboard": "^3.8.49", + "serialport": "^13.0.0", + "tailwindcss": "^4.0.6", + "vaul": "^1.1.2" + }, + "devDependencies": { + "@electron-toolkit/eslint-config-prettier": "^3.0.0", + "@electron-toolkit/eslint-config-ts": "^3.0.0", + "@electron-toolkit/tsconfig": "^1.0.1", + "@electron/notarize": "^2.5.0", + "@ianvs/prettier-plugin-sort-imports": "^4.4.1", + "@types/node": "^22.13.4", + "@types/react": "^18.3.18", + "@types/react-dom": "^18.3.5", + "@vitejs/plugin-react": "^4.3.4", + "electron": "^34.2.0", + "electron-builder": "^25.1.8", + "electron-vite": "^3.0.0", + "eslint": "^9.20.1", + "eslint-plugin-react": "^7.37.4", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-react-refresh": "^0.4.19", + "prettier": "^3.5.1", + "prettier-plugin-tailwindcss": "^0.6.11", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "typescript": "^5.7.3", + "vite": "^6.1.0" + }, + "pnpm": { + "onlyBuiltDependencies": [ + "electron" + ] + } +} diff --git a/desktop/pnpm-lock.yaml b/desktop/pnpm-lock.yaml new file mode 100644 index 0000000..0952b12 --- /dev/null +++ b/desktop/pnpm-lock.yaml @@ -0,0 +1,7878 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@ant-design/icons': + specifier: ^5.6.1 + version: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@electron-toolkit/preload': + specifier: ^3.0.1 + version: 3.0.1(electron@34.2.0) + '@electron-toolkit/utils': + specifier: ^4.0.0 + version: 4.0.0(electron@34.2.0) + '@tailwindcss/vite': + specifier: ^4.0.6 + version: 4.0.6(vite@6.1.0(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1)) + antd: + specifier: ^5.24.1 + version: 5.24.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + clsx: + specifier: ^2.1.1 + version: 2.1.1 + electron-log: + specifier: ^5.3.1 + version: 5.3.1 + electron-updater: + specifier: ^6.3.9 + version: 6.3.9 + i18next: + specifier: ^24.2.2 + version: 24.2.2(typescript@5.7.3) + jotai: + specifier: ^2.12.1 + version: 2.12.1(@types/react@18.3.18)(react@18.3.1) + lucide-react: + specifier: ^0.476.0 + version: 0.476.0(react@18.3.1) + react-i18next: + specifier: ^15.4.1 + version: 15.4.1(i18next@24.2.2(typescript@5.7.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-responsive: + specifier: ^10.0.0 + version: 10.0.0(react@18.3.1) + react-simple-keyboard: + specifier: ^3.8.49 + version: 3.8.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + serialport: + specifier: ^13.0.0 + version: 13.0.0 + tailwindcss: + specifier: ^4.0.6 + version: 4.0.6 + vaul: + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + devDependencies: + '@electron-toolkit/eslint-config-prettier': + specifier: ^3.0.0 + version: 3.0.0(eslint@9.20.1(jiti@2.4.2))(prettier@3.5.1) + '@electron-toolkit/eslint-config-ts': + specifier: ^3.0.0 + version: 3.0.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@electron-toolkit/tsconfig': + specifier: ^1.0.1 + version: 1.0.1(@types/node@22.13.4) + '@electron/notarize': + specifier: ^2.5.0 + version: 2.5.0 + '@ianvs/prettier-plugin-sort-imports': + specifier: ^4.4.1 + version: 4.4.1(prettier@3.5.1) + '@types/node': + specifier: ^22.13.4 + version: 22.13.4 + '@types/react': + specifier: ^18.3.18 + version: 18.3.18 + '@types/react-dom': + specifier: ^18.3.5 + version: 18.3.5(@types/react@18.3.18) + '@vitejs/plugin-react': + specifier: ^4.3.4 + version: 4.3.4(vite@6.1.0(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1)) + electron: + specifier: ^34.2.0 + version: 34.2.0 + electron-builder: + specifier: ^25.1.8 + version: 25.1.8(electron-builder-squirrel-windows@25.1.8) + electron-vite: + specifier: ^3.0.0 + version: 3.0.0(vite@6.1.0(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1)) + eslint: + specifier: ^9.20.1 + version: 9.20.1(jiti@2.4.2) + eslint-plugin-react: + specifier: ^7.37.4 + version: 7.37.4(eslint@9.20.1(jiti@2.4.2)) + eslint-plugin-react-hooks: + specifier: ^5.1.0 + version: 5.1.0(eslint@9.20.1(jiti@2.4.2)) + eslint-plugin-react-refresh: + specifier: ^0.4.19 + version: 0.4.19(eslint@9.20.1(jiti@2.4.2)) + prettier: + specifier: ^3.5.1 + version: 3.5.1 + prettier-plugin-tailwindcss: + specifier: ^0.6.11 + version: 0.6.11(@ianvs/prettier-plugin-sort-imports@4.4.1(prettier@3.5.1))(prettier@3.5.1) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + typescript: + specifier: ^5.7.3 + version: 5.7.3 + vite: + specifier: ^6.1.0 + version: 6.1.0(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1) + +packages: + + 7zip-bin@5.2.0: + resolution: {integrity: sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@ant-design/colors@7.2.0': + resolution: {integrity: sha512-bjTObSnZ9C/O8MB/B4OUtd/q9COomuJAR2SYfhxLyHvCKn4EKwCN3e+fWGMo7H5InAyV0wL17jdE9ALrdOW/6A==} + + '@ant-design/cssinjs-utils@1.1.3': + resolution: {integrity: sha512-nOoQMLW1l+xR1Co8NFVYiP8pZp3VjIIzqV6D6ShYF2ljtdwWJn5WSsH+7kvCktXL/yhEtWURKOfH5Xz/gzlwsg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@ant-design/cssinjs@1.23.0': + resolution: {integrity: sha512-7GAg9bD/iC9ikWatU9ym+P9ugJhi/WbsTWzcKN6T4gU0aehsprtke1UAaaSxxkjjmkJb3llet/rbUSLPgwlY4w==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + '@ant-design/fast-color@2.0.6': + resolution: {integrity: sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA==} + engines: {node: '>=8.x'} + + '@ant-design/icons-svg@4.4.2': + resolution: {integrity: sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==} + + '@ant-design/icons@5.6.1': + resolution: {integrity: sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + '@ant-design/react-slick@1.1.2': + resolution: {integrity: sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==} + peerDependencies: + react: '>=16.9.0' + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.8': + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.9': + resolution: {integrity: sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.26.9': + resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.26.5': + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.26.9': + resolution: {integrity: sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.26.9': + resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.25.9': + resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.25.9': + resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.26.9': + resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.26.9': + resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.26.9': + resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.9': + resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} + engines: {node: '>=6.9.0'} + + '@develar/schema-utils@2.6.5': + resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==} + engines: {node: '>= 8.9.0'} + + '@electron-toolkit/eslint-config-prettier@3.0.0': + resolution: {integrity: sha512-YapmIOVkbYdHLuTa+ad1SAVtcqYL9A/SJsc7cxQokmhcwAwonGevNom37jBf9slXegcZ/Slh01I/JARG1yhNFw==} + peerDependencies: + eslint: '>= 9.0.0' + prettier: '>= 3.0.0' + + '@electron-toolkit/eslint-config-ts@3.0.0': + resolution: {integrity: sha512-mMXTAuAegXTpxOxqHIJnY7H2pGb9rElbPYJmCWtGisHuLXrfnXvKvDUOkrvWGFCIeLLHcXUvkyPjOXZ/n4/IXQ==} + peerDependencies: + eslint: '>=9.0.0' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@electron-toolkit/preload@3.0.1': + resolution: {integrity: sha512-EzoQmpK8jqqU8YnM5jRe0GJjGVJPke2KtANqz8QtN2JPT96ViOvProBdK5C6riCm0j1T8jjAGVQCZLQy9OVoIA==} + peerDependencies: + electron: '>=13.0.0' + + '@electron-toolkit/tsconfig@1.0.1': + resolution: {integrity: sha512-M0Mol3odspvtCuheyujLNAW7bXq7KFNYVMRtpjFa4ZfES4MuklXBC7Nli/omvc+PRKlrklgAGx3l4VakjNo8jg==} + peerDependencies: + '@types/node': '*' + + '@electron-toolkit/utils@4.0.0': + resolution: {integrity: sha512-qXSntwEzluSzKl4z5yFNBknmPGjPa3zFhE4mp9+h0cgokY5ornAeP+CJQDBhKsL1S58aOQfcwkD3NwLZCl+64g==} + peerDependencies: + electron: '>=13.0.0' + + '@electron/asar@3.3.1': + resolution: {integrity: sha512-WtpC/+34p0skWZiarRjLAyqaAX78DofhDxnREy/V5XHfu1XEXbFCSSMcDQ6hNCPJFaPy8/NnUgYuf9uiCkvKPg==} + engines: {node: '>=10.12.0'} + hasBin: true + + '@electron/get@2.0.3': + resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} + engines: {node: '>=12'} + + '@electron/notarize@2.5.0': + resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==} + engines: {node: '>= 10.0.0'} + + '@electron/osx-sign@1.3.1': + resolution: {integrity: sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==} + engines: {node: '>=12.0.0'} + hasBin: true + + '@electron/rebuild@3.6.1': + resolution: {integrity: sha512-f6596ZHpEq/YskUd8emYvOUne89ij8mQgjYFA5ru25QwbrRO+t1SImofdDv7kKOuWCmVOuU5tvfkbgGxIl3E/w==} + engines: {node: '>=12.13.0'} + hasBin: true + + '@electron/universal@2.0.1': + resolution: {integrity: sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==} + engines: {node: '>=16.4'} + + '@emotion/hash@0.8.0': + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + + '@emotion/unitless@0.7.5': + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + + '@esbuild/aix-ppc64@0.24.2': + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.24.2': + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.24.2': + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.24.2': + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.24.2': + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.24.2': + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.24.2': + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.24.2': + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.24.2': + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.24.2': + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.24.2': + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.24.2': + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.24.2': + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.24.2': + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.24.2': + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.24.2': + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.24.2': + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.24.2': + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.24.2': + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.24.2': + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.24.2': + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.24.2': + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.24.2': + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.24.2': + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.24.2': + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.19.2': + resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.10.0': + resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.11.0': + resolution: {integrity: sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.2.0': + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.20.0': + resolution: {integrity: sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.5': + resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@gar/promisify@1.1.3': + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.1': + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} + + '@ianvs/prettier-plugin-sort-imports@4.4.1': + resolution: {integrity: sha512-F0/Hrcfpy8WuxlQyAWJTEren/uxKhYonOGY4OyWmwRdeTvkh9mMSCxowZLjNkhwi/2ipqCgtXwwOk7tW0mWXkA==} + peerDependencies: + '@vue/compiler-sfc': 2.7.x || 3.x + prettier: 2 || 3 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@malept/cross-spawn-promise@2.0.0': + resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==} + engines: {node: '>= 12.13.0'} + + '@malept/flatpak-bundler@0.4.0': + resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==} + engines: {node: '>= 10.0.0'} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@npmcli/fs@2.1.2': + resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + '@npmcli/move-file@2.0.1': + resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This functionality has been moved to @npmcli/fs + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@radix-ui/primitive@1.1.1': + resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} + + '@radix-ui/react-compose-refs@1.1.1': + resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.1': + resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.6': + resolution: {integrity: sha512-/IVhJV5AceX620DUJ4uYVMymzsipdKBzo3edo+omeskCKGm9FRHM0ebIdbPnlQVJqyuHbuBltQUOG2mOTq2IYw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.5': + resolution: {integrity: sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.1': + resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.2': + resolution: {integrity: sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-portal@1.1.4': + resolution: {integrity: sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.2': + resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.2': + resolution: {integrity: sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.1.2': + resolution: {integrity: sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@rc-component/async-validator@5.0.4': + resolution: {integrity: sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==} + engines: {node: '>=14.x'} + + '@rc-component/color-picker@2.0.1': + resolution: {integrity: sha512-WcZYwAThV/b2GISQ8F+7650r5ZZJ043E57aVBFkQ+kSY4C6wdofXgB0hBx+GPGpIU0Z81eETNoDUJMr7oy/P8Q==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/context@1.4.0': + resolution: {integrity: sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/mini-decimal@1.1.0': + resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==} + engines: {node: '>=8.x'} + + '@rc-component/mutate-observer@1.1.0': + resolution: {integrity: sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/portal@1.1.2': + resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/qrcode@1.0.0': + resolution: {integrity: sha512-L+rZ4HXP2sJ1gHMGHjsg9jlYBX/SLN2D6OxP9Zn3qgtpMWtO2vUfxVFwiogHpAIqs54FnALxraUy/BCO1yRIgg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/tour@1.15.1': + resolution: {integrity: sha512-Tr2t7J1DKZUpfJuDZWHxyxWpfmj8EZrqSgyMZ+BCdvKZ6r1UDsfU46M/iWAAFBy961Ssfom2kv5f3UcjIL2CmQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/trigger@2.2.6': + resolution: {integrity: sha512-/9zuTnWwhQ3S3WT1T8BubuFTT46kvnXgaERR9f4BTKyn61/wpf/BvbImzYBubzJibU707FxwbKszLlHjcLiv1Q==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rollup/rollup-android-arm-eabi@4.34.8': + resolution: {integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.34.8': + resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.34.8': + resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.34.8': + resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.34.8': + resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.34.8': + resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.34.8': + resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.34.8': + resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.34.8': + resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.34.8': + resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.34.8': + resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': + resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.34.8': + resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.34.8': + resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.34.8': + resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.34.8': + resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.34.8': + resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.34.8': + resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.34.8': + resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==} + cpu: [x64] + os: [win32] + + '@serialport/binding-mock@10.2.2': + resolution: {integrity: sha512-HAFzGhk9OuFMpuor7aT5G1ChPgn5qSsklTFOTUX72Rl6p0xwcSVsRtG/xaGp6bxpN7fI9D/S8THLBWbBgS6ldw==} + engines: {node: '>=12.0.0'} + + '@serialport/bindings-cpp@13.0.0': + resolution: {integrity: sha512-r25o4Bk/vaO1LyUfY/ulR6hCg/aWiN6Wo2ljVlb4Pj5bqWGcSRC4Vse4a9AcapuAu/FeBzHCbKMvRQeCuKjzIQ==} + engines: {node: '>=18.0.0'} + + '@serialport/bindings-interface@1.2.2': + resolution: {integrity: sha512-CJaUd5bLvtM9c5dmO9rPBHPXTa9R2UwpkJ0wdh9JCYcbrPWsKz+ErvR0hBLeo7NPeiFdjFO4sonRljiw4d2XiA==} + engines: {node: ^12.22 || ^14.13 || >=16} + + '@serialport/parser-byte-length@13.0.0': + resolution: {integrity: sha512-32yvqeTAqJzAEtX5zCrN1Mej56GJ5h/cVFsCDPbF9S1ZSC9FWjOqNAgtByseHfFTSTs/4ZBQZZcZBpolt8sUng==} + engines: {node: '>=20.0.0'} + + '@serialport/parser-cctalk@13.0.0': + resolution: {integrity: sha512-RErAe57g9gvnlieVYGIn1xymb1bzNXb2QtUQd14FpmbQQYlcrmuRnJwKa1BgTCujoCkhtaTtgHlbBWOxm8U2uA==} + engines: {node: '>=20.0.0'} + + '@serialport/parser-delimiter@12.0.0': + resolution: {integrity: sha512-gu26tVt5lQoybhorLTPsH2j2LnX3AOP2x/34+DUSTNaUTzu2fBXw+isVjQJpUBFWu6aeQRZw5bJol5X9Gxjblw==} + engines: {node: '>=12.0.0'} + + '@serialport/parser-delimiter@13.0.0': + resolution: {integrity: sha512-Qqyb0FX1avs3XabQqNaZSivyVbl/yl0jywImp7ePvfZKLwx7jBZjvL+Hawt9wIG6tfq6zbFM24vzCCK7REMUig==} + engines: {node: '>=20.0.0'} + + '@serialport/parser-inter-byte-timeout@13.0.0': + resolution: {integrity: sha512-a0w0WecTW7bD2YHWrpTz1uyiWA2fDNym0kjmPeNSwZ2XCP+JbirZt31l43m2ey6qXItTYVuQBthm75sPVeHnGA==} + engines: {node: '>=20.0.0'} + + '@serialport/parser-packet-length@13.0.0': + resolution: {integrity: sha512-60ZDDIqYRi0Xs2SPZUo4Jr5LLIjtb+rvzPKMJCohrO6tAqSDponcNpcB1O4W21mKTxYjqInSz+eMrtk0LLfZIg==} + engines: {node: '>=8.6.0'} + + '@serialport/parser-readline@12.0.0': + resolution: {integrity: sha512-O7cywCWC8PiOMvo/gglEBfAkLjp/SENEML46BXDykfKP5mTPM46XMaX1L0waWU6DXJpBgjaL7+yX6VriVPbN4w==} + engines: {node: '>=12.0.0'} + + '@serialport/parser-readline@13.0.0': + resolution: {integrity: sha512-dov3zYoyf0dt1Sudd1q42VVYQ4WlliF0MYvAMA3MOyiU1IeG4hl0J6buBA2w4gl3DOCC05tGgLDN/3yIL81gsA==} + engines: {node: '>=20.0.0'} + + '@serialport/parser-ready@13.0.0': + resolution: {integrity: sha512-JNUQA+y2Rfs4bU+cGYNqOPnNMAcayhhW+XJZihSLQXOHcZsFnOa2F9YtMg9VXRWIcnHldHYtisp62Etjlw24bw==} + engines: {node: '>=20.0.0'} + + '@serialport/parser-regex@13.0.0': + resolution: {integrity: sha512-m7HpIf56G5XcuDdA3DB34Z0pJiwxNRakThEHjSa4mG05OnWYv0IG8l2oUyYfuGMowQWaVnQ+8r+brlPxGVH+eA==} + engines: {node: '>=20.0.0'} + + '@serialport/parser-slip-encoder@13.0.0': + resolution: {integrity: sha512-fUHZEExm6izJ7rg0A1yjXwu4sOzeBkPAjDZPfb+XQoqgtKAk+s+HfICiYn7N2QU9gyaeCO8VKgWwi+b/DowYOg==} + engines: {node: '>=20.0.0'} + + '@serialport/parser-spacepacket@13.0.0': + resolution: {integrity: sha512-DoXJ3mFYmyD8X/8931agJvrBPxqTaYDsPoly9/cwQSeh/q4EjQND9ySXBxpWz5WcpyCU4jOuusqCSAPsbB30Eg==} + engines: {node: '>=20.0.0'} + + '@serialport/stream@13.0.0': + resolution: {integrity: sha512-F7xLJKsjGo2WuEWMSEO1SimRcOA+WtWICsY13r0ahx8s2SecPQH06338g28OT7cW7uRXI7oEQAk62qh5gHJW3g==} + engines: {node: '>=20.0.0'} + + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + + '@tailwindcss/node@4.0.6': + resolution: {integrity: sha512-jb6E0WeSq7OQbVYcIJ6LxnZTeC4HjMvbzFBMCrQff4R50HBlo/obmYNk6V2GCUXDeqiXtvtrQgcIbT+/boB03Q==} + + '@tailwindcss/oxide-android-arm64@4.0.6': + resolution: {integrity: sha512-xDbym6bDPW3D2XqQqX3PjqW3CKGe1KXH7Fdkc60sX5ZLVUbzPkFeunQaoP+BuYlLc2cC1FoClrIRYnRzof9Sow==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.0.6': + resolution: {integrity: sha512-1f71/ju/tvyGl5c2bDkchZHy8p8EK/tDHCxlpYJ1hGNvsYihZNurxVpZ0DefpN7cNc9RTT8DjrRoV8xXZKKRjg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.0.6': + resolution: {integrity: sha512-s/hg/ZPgxFIrGMb0kqyeaqZt505P891buUkSezmrDY6lxv2ixIELAlOcUVTkVh245SeaeEiUVUPiUN37cwoL2g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.0.6': + resolution: {integrity: sha512-Z3Wo8FWZnmio8+xlcbb7JUo/hqRMSmhQw8IGIRoRJ7GmLR0C+25Wq+bEX/135xe/yEle2lFkhu9JBHd4wZYiig==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.6': + resolution: {integrity: sha512-SNSwkkim1myAgmnbHs4EjXsPL7rQbVGtjcok5EaIzkHkCAVK9QBQsWeP2Jm2/JJhq4wdx8tZB9Y7psMzHYWCkA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.0.6': + resolution: {integrity: sha512-tJ+mevtSDMQhKlwCCuhsFEFg058kBiSy4TkoeBG921EfrHKmexOaCyFKYhVXy4JtkaeeOcjJnCLasEeqml4i+Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.0.6': + resolution: {integrity: sha512-IoArz1vfuTR4rALXMUXI/GWWfx2EaO4gFNtBNkDNOYhlTD4NVEwE45nbBoojYiTulajI4c2XH8UmVEVJTOJKxA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.0.6': + resolution: {integrity: sha512-QtsUfLkEAeWAC3Owx9Kg+7JdzE+k9drPhwTAXbXugYB9RZUnEWWx5x3q/au6TvUYcL+n0RBqDEO2gucZRvRFgQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.0.6': + resolution: {integrity: sha512-QthvJqIji2KlGNwLcK/PPYo7w1Wsi/8NK0wAtRGbv4eOPdZHkQ9KUk+oCoP20oPO7i2a6X1aBAFQEL7i08nNMA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-win32-arm64-msvc@4.0.6': + resolution: {integrity: sha512-+oka+dYX8jy9iP00DJ9Y100XsqvbqR5s0yfMZJuPR1H/lDVtDfsZiSix1UFBQ3X1HWxoEEl6iXNJHWd56TocVw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.0.6': + resolution: {integrity: sha512-+o+juAkik4p8Ue/0LiflQXPmVatl6Av3LEZXpBTfg4qkMIbZdhCGWFzHdt2NjoMiLOJCFDddoV6GYaimvK1Olw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.0.6': + resolution: {integrity: sha512-lVyKV2y58UE9CeKVcYykULe9QaE1dtKdxDEdrTPIdbzRgBk6bdxHNAoDqvcqXbIGXubn3VOl1O/CFF77v/EqSA==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.0.6': + resolution: {integrity: sha512-O25vZ/URWbZ2JHdk2o8wH7jOKqEGCsYmX3GwGmYS5DjE4X3mpf93a72Rn7VRnefldNauBzr5z2hfZptmBNtTUQ==} + peerDependencies: + vite: ^5.2.0 || ^6 + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/fs-extra@9.0.13': + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@20.17.19': + resolution: {integrity: sha512-LEwC7o1ifqg/6r2gn9Dns0f1rhK+fPFDoMiceTJ6kWmVk6bgXBI/9IOWfVan4WiAavK9pIVWdX0/e3J+eEUh5A==} + + '@types/node@22.13.4': + resolution: {integrity: sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==} + + '@types/plist@3.0.5': + resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} + + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/react-dom@18.3.5': + resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} + peerDependencies: + '@types/react': ^18.0.0 + + '@types/react@18.3.18': + resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} + + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + + '@types/verror@1.10.10': + resolution: {integrity: sha512-l4MM0Jppn18hb9xmM6wwD1uTdShpf9Pn80aXTStnK1C94gtPvJcV2FrDmbOQUAQfJ1cKZHktkQUDwEqaAKXMMg==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + + '@typescript-eslint/eslint-plugin@8.24.1': + resolution: {integrity: sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/parser@8.24.1': + resolution: {integrity: sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/scope-manager@8.24.1': + resolution: {integrity: sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.24.1': + resolution: {integrity: sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/types@8.24.1': + resolution: {integrity: sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.24.1': + resolution: {integrity: sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/utils@8.24.1': + resolution: {integrity: sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/visitor-keys@8.24.1': + resolution: {integrity: sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitejs/plugin-react@4.3.4': + resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + + '@xmldom/xmldom@0.8.10': + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + + agentkeepalive@4.6.0: + resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} + engines: {node: '>= 8.0.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + antd@5.24.1: + resolution: {integrity: sha512-RGwpXpSr2RtoUnrpJl3V6ZaTExwSXkFVxV24VUowwC04n6oA1sGyJrofQOKNqD623sVxL5UJBmf0a+BFBImP3Q==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + app-builder-bin@5.0.0-alpha.10: + resolution: {integrity: sha512-Ev4jj3D7Bo+O0GPD2NMvJl+PGiBAfS7pUGawntBNpCbxtpncfUixqFj9z9Jme7V7s3LBGqsWZZP54fxBX3JKJw==} + + app-builder-lib@25.1.8: + resolution: {integrity: sha512-pCqe7dfsQFBABC1jeKZXQWhGcCPF3rPCXDdfqVKjIeWBcXzyC1iOWZdfFhGl+S9MyE/k//DFmC6FzuGAUudNDg==} + engines: {node: '>=14.0.0'} + peerDependencies: + dmg-builder: 25.1.8 + electron-builder-squirrel-windows: 25.1.8 + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + archiver-utils@2.1.0: + resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} + engines: {node: '>= 6'} + + archiver-utils@3.0.4: + resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} + engines: {node: '>= 10'} + + archiver@5.3.2: + resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} + engines: {node: '>= 10'} + + are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-exit-hook@2.0.1: + resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} + engines: {node: '>=0.12.0'} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bluebird-lst@1.0.9: + resolution: {integrity: sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + boolean@3.2.0: + resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + builder-util-runtime@9.2.10: + resolution: {integrity: sha512-6p/gfG1RJSQeIbz8TK5aPNkoztgY1q5TgmGFMAXcY8itsGW6Y2ld1ALsZ5UJn8rog7hKF3zHx5iQbNQ8uLcRlw==} + engines: {node: '>=12.0.0'} + + builder-util@25.1.7: + resolution: {integrity: sha512-7jPjzBwEGRbwNcep0gGNpLXG9P94VA3CPAZQCzxkFXiV2GMQKlziMbY//rXPI7WKfhsvGgFXjTcXdBEwgXw9ww==} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cacache@16.1.3: + resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001700: + resolution: {integrity: sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chromium-pickle-js@0.2.0: + resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + + compare-version@0.1.2: + resolution: {integrity: sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==} + engines: {node: '>=0.10.0'} + + compress-commons@4.1.2: + resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} + engines: {node: '>= 10'} + + compute-scroll-into-view@3.1.1: + resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + config-file-ts@0.2.8-rc1: + resolution: {integrity: sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + crc32-stream@4.0.3: + resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} + engines: {node: '>= 10'} + + crc@3.8.0: + resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-mediaquery@0.1.2: + resolution: {integrity: sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + dir-compare@4.2.0: + resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==} + + dmg-builder@25.1.8: + resolution: {integrity: sha512-NoXo6Liy2heSklTI5OIZbCgXC1RzrDQsZkeEwXhdOro3FT1VBOvbubvscdPnjVuQ4AMwwv61oaH96AbiYg9EnQ==} + + dmg-license@1.0.11: + resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==} + engines: {node: '>=8'} + os: [darwin] + hasBin: true + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} + + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-builder-squirrel-windows@25.1.8: + resolution: {integrity: sha512-2ntkJ+9+0GFP6nAISiMabKt6eqBB0kX1QqHNWFWAXgi0VULKGisM46luRFpIBiU3u/TDmhZMM8tzvo2Abn3ayg==} + + electron-builder@25.1.8: + resolution: {integrity: sha512-poRgAtUHHOnlzZnc9PK4nzG53xh74wj2Jy7jkTrqZ0MWPoHGh1M2+C//hGeYdA+4K8w4yiVCNYoLXF7ySj2Wig==} + engines: {node: '>=14.0.0'} + hasBin: true + + electron-log@5.3.1: + resolution: {integrity: sha512-STiavmnpomuGdmOy5ctskK8ftHqrZRICFiX+VzzXwhI8gt4ZY0zJSGy9sRZpRHn4Mshh/O8UNXw05D0WaDRxRQ==} + engines: {node: '>= 14'} + + electron-publish@25.1.7: + resolution: {integrity: sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg==} + + electron-to-chromium@1.5.102: + resolution: {integrity: sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==} + + electron-updater@6.3.9: + resolution: {integrity: sha512-2PJNONi+iBidkoC5D1nzT9XqsE8Q1X28Fn6xRQhO3YX8qRRyJ3mkV4F1aQsuRnYPqq6Hw+E51y27W75WgDoofw==} + + electron-vite@3.0.0: + resolution: {integrity: sha512-Uf8NpF4OB2Juo1Vq8pobkLVp9BZTO70VwkW7fKXSCkod0SRkc7Dkw7ddR6b1fbsgT7lcZ0HD29WRxsCcbkHXUw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@swc/core': ^1.0.0 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + '@swc/core': + optional: true + + electron@34.2.0: + resolution: {integrity: sha512-SYwBJNeXBTm1q/ErybQMUBZAYqEreBUqBwTrNkw1rV4YatDZk5Aittpcus3PPeC4UoI/tqmJ946uG8AKHTd6CA==} + engines: {node: '>= 12.20.55'} + hasBin: true + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + + esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-prettier@10.0.1: + resolution: {integrity: sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-prettier@5.2.3: + resolution: {integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-react-hooks@5.1.0: + resolution: {integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react-refresh@0.4.19: + resolution: {integrity: sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ==} + peerDependencies: + eslint: '>=8.40' + + eslint-plugin-react@7.37.4: + resolution: {integrity: sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.20.1: + resolution: {integrity: sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + exponential-backoff@3.1.2: + resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} + + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + extsprintf@1.4.1: + resolution: {integrity: sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==} + engines: {'0': node >=0.6.0} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.19.0: + resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + engines: {node: '>=14.14'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.7: + resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + global-agent@3.0.0: + resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} + engines: {node: '>=10.0'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + hyphenate-style-name@1.1.0: + resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} + + i18next@24.2.2: + resolution: {integrity: sha512-NE6i86lBCKRYZa5TaUDkU5S4HFgLIEJRLr3Whf2psgaxBleQ2LC1YW1Vc+SCgkAW7VEzndT6al6+CzegSUHcTQ==} + peerDependencies: + typescript: ^5 + peerDependenciesMeta: + typescript: + optional: true + + iconv-corefoundation@1.1.7: + resolution: {integrity: sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==} + engines: {node: ^8.11.2 || >=10} + os: [darwin] + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + + isbinaryfile@5.0.4: + resolution: {integrity: sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==} + engines: {node: '>= 18.0.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + jotai@2.12.1: + resolution: {integrity: sha512-VUW0nMPYIru5g89tdxwr9ftiVdc/nGV9jvHISN8Ucx+m1vI9dBeHemfqYzEuw5XSkmYjD/MEyApN9k6yrATsZQ==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=17.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json2mq@0.2.0: + resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + lazy-val@1.0.5: + resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} + + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-darwin-arm64@1.29.1: + resolution: {integrity: sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.29.1: + resolution: {integrity: sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.29.1: + resolution: {integrity: sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.29.1: + resolution: {integrity: sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.29.1: + resolution: {integrity: sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.29.1: + resolution: {integrity: sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.29.1: + resolution: {integrity: sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.29.1: + resolution: {integrity: sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.29.1: + resolution: {integrity: sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.29.1: + resolution: {integrity: sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.29.1: + resolution: {integrity: sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==} + engines: {node: '>= 12.0.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + + lodash.difference@4.5.0: + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + + lodash.escaperegexp@4.1.2: + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} + + lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.union@4.6.0: + resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + lucide-react@0.476.0: + resolution: {integrity: sha512-x6cLTk8gahdUPje0hSgLN1/MgiJH+Xl90Xoxy9bkPAsMPOUiyRSKR4JCDPGVCEpyqnZXH3exFWNItcvra9WzUQ==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + make-fetch-happen@10.2.1: + resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + matcher@3.0.0: + resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} + engines: {node: '>=10'} + + matchmediaquery@0.4.2: + resolution: {integrity: sha512-wrZpoT50ehYOudhDjt/YvUJc6eUzcdFPdmbizfgvswCKNHD1/OBOHYJpHie+HXpu6bSkEGieFMYk6VuutaiRfA==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + + minipass-fetch@2.1.2: + resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + + minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + node-abi@3.74.0: + resolution: {integrity: sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==} + engines: {node: '>=10'} + + node-addon-api@1.7.2: + resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==} + + node-addon-api@8.3.0: + resolution: {integrity: sha512-8VOpLHFrOQlAH+qA0ZzuGRlALRA6/LVh8QJldbrC4DY0hXoMP0l4Acq8TzFC018HztWiRqyCEj2aTWY2UvnJUg==} + engines: {node: ^18 || ^20 || >= 21} + + node-api-version@0.2.0: + resolution: {integrity: sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==} + + node-gyp-build@4.8.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} + hasBin: true + + node-gyp@9.4.1: + resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} + engines: {node: ^12.13 || ^14.13 || >=16} + hasBin: true + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + nopt@6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + pe-library@0.4.1: + resolution: {integrity: sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==} + engines: {node: '>=12', npm: '>=6'} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + plist@3.1.0: + resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} + engines: {node: '>=10.4.0'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss@8.5.2: + resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier-plugin-tailwindcss@0.6.11: + resolution: {integrity: sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-multiline-arrays: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-multiline-arrays: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + + prettier@3.5.1: + resolution: {integrity: sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==} + engines: {node: '>=14'} + hasBin: true + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + rc-cascader@3.33.0: + resolution: {integrity: sha512-JvZrMbKBXIbEDmpIORxqvedY/bck6hGbs3hxdWT8eS9wSQ1P7//lGxbyKjOSyQiVBbgzNWriSe6HoMcZO/+0rQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-checkbox@3.5.0: + resolution: {integrity: sha512-aOAQc3E98HteIIsSqm6Xk2FPKIER6+5vyEFMZfo73TqM+VVAIqOkHoPjgKLqSNtVLWScoaM7vY2ZrGEheI79yg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-collapse@3.9.0: + resolution: {integrity: sha512-swDdz4QZ4dFTo4RAUMLL50qP0EY62N2kvmk2We5xYdRwcRn8WcYtuetCJpwpaCbUfUt5+huLpVxhvmnK+PHrkA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-dialog@9.6.0: + resolution: {integrity: sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-drawer@7.2.0: + resolution: {integrity: sha512-9lOQ7kBekEJRdEpScHvtmEtXnAsy+NGDXiRWc2ZVC7QXAazNVbeT4EraQKYwCME8BJLa8Bxqxvs5swwyOepRwg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-dropdown@4.2.1: + resolution: {integrity: sha512-YDAlXsPv3I1n42dv1JpdM7wJ+gSUBfeyPK59ZpBD9jQhK9jVuxpjj3NmWQHOBceA1zEPVX84T2wbdb2SD0UjmA==} + peerDependencies: + react: '>=16.11.0' + react-dom: '>=16.11.0' + + rc-field-form@2.7.0: + resolution: {integrity: sha512-hgKsCay2taxzVnBPZl+1n4ZondsV78G++XVsMIJCAoioMjlMQR9YwAp7JZDIECzIu2Z66R+f4SFIRrO2DjDNAA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-image@7.11.0: + resolution: {integrity: sha512-aZkTEZXqeqfPZtnSdNUnKQA0N/3MbgR7nUnZ+/4MfSFWPFHZau4p5r5ShaI0KPEMnNjv4kijSCFq/9wtJpwykw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-input-number@9.4.0: + resolution: {integrity: sha512-Tiy4DcXcFXAf9wDhN8aUAyMeCLHJUHA/VA/t7Hj8ZEx5ETvxG7MArDOSE6psbiSCo+vJPm4E3fGN710ITVn6GA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-input@1.7.2: + resolution: {integrity: sha512-g3nYONnl4edWj2FfVoxsU3Ec4XTE+Hb39Kfh2MFxMZjp/0gGyPUgy/v7ZhS27ZxUFNkuIDYXm9PJsLyJbtg86A==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + rc-mentions@2.19.1: + resolution: {integrity: sha512-KK3bAc/bPFI993J3necmaMXD2reZTzytZdlTvkeBbp50IGH1BDPDvxLdHDUrpQx2b2TGaVJsn+86BvYa03kGqA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-menu@9.16.1: + resolution: {integrity: sha512-ghHx6/6Dvp+fw8CJhDUHFHDJ84hJE3BXNCzSgLdmNiFErWSOaZNsihDAsKq9ByTALo/xkNIwtDFGIl6r+RPXBg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-motion@2.9.5: + resolution: {integrity: sha512-w+XTUrfh7ArbYEd2582uDrEhmBHwK1ZENJiSJVb7uRxdE7qJSYjbO2eksRXmndqyKqKoYPc9ClpPh5242mV1vA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-notification@5.6.3: + resolution: {integrity: sha512-42szwnn8VYQoT6GnjO00i1iwqV9D1TTMvxObWsuLwgl0TsOokzhkYiufdtQBsJMFjJravS1hfDKVMHLKLcPE4g==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-overflow@1.4.1: + resolution: {integrity: sha512-3MoPQQPV1uKyOMVNd6SZfONi+f3st0r8PksexIdBTeIYbMX0Jr+k7pHEDvsXtR4BpCv90/Pv2MovVNhktKrwvw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-pagination@5.1.0: + resolution: {integrity: sha512-8416Yip/+eclTFdHXLKTxZvn70duYVGTvUUWbckCCZoIl3jagqke3GLsFrMs0bsQBikiYpZLD9206Ej4SOdOXQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-picker@4.11.2: + resolution: {integrity: sha512-Cwa3frWpefhESBF20HBJtvWx3q1hCrMxSUrzuuWMTGoZVPhQllGEp2IUfzo9jC5LKm4kJx7IrH8q/W/y9wClAw==} + engines: {node: '>=8.x'} + peerDependencies: + date-fns: '>= 2.x' + dayjs: '>= 1.x' + luxon: '>= 3.x' + moment: '>= 2.x' + react: '>=16.9.0' + react-dom: '>=16.9.0' + peerDependenciesMeta: + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + + rc-progress@4.0.0: + resolution: {integrity: sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-rate@2.13.1: + resolution: {integrity: sha512-QUhQ9ivQ8Gy7mtMZPAjLbxBt5y9GRp65VcUyGUMF3N3fhiftivPHdpuDIaWIMOTEprAjZPC08bls1dQB+I1F2Q==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-resize-observer@1.4.3: + resolution: {integrity: sha512-YZLjUbyIWox8E9i9C3Tm7ia+W7euPItNWSPX5sCcQTYbnwDb5uNpnLHQCG1f22oZWUhLw4Mv2tFmeWe68CDQRQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-segmented@2.7.0: + resolution: {integrity: sha512-liijAjXz+KnTRVnxxXG2sYDGd6iLL7VpGGdR8gwoxAXy2KglviKCxLWZdjKYJzYzGSUwKDSTdYk8brj54Bn5BA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + rc-select@14.16.6: + resolution: {integrity: sha512-YPMtRPqfZWOm2XGTbx5/YVr1HT0vn//8QS77At0Gjb3Lv+Lbut0IORJPKLWu1hQ3u4GsA0SrDzs7nI8JG7Zmyg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + + rc-slider@11.1.8: + resolution: {integrity: sha512-2gg/72YFSpKP+Ja5AjC5DPL1YnV8DEITDQrcc1eASrUYjl0esptaBVJBh5nLTXCCp15eD8EuGjwezVGSHhs9tQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-steps@6.0.1: + resolution: {integrity: sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-switch@4.1.0: + resolution: {integrity: sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-table@7.50.3: + resolution: {integrity: sha512-Z4/zNCzjv7f/XzPRecb+vJU0DJKdsYt4YRkDzNl4G05m7JmxrKGYC2KqN1Ew6jw2zJq7cxVv3z39qyZOHMuf7A==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-tabs@15.5.1: + resolution: {integrity: sha512-yiWivLAjEo5d1v2xlseB2dQocsOhkoVSfo1krS8v8r+02K+TBUjSjXIf7dgyVSxp6wRIPv5pMi5hanNUlQMgUA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-textarea@1.9.0: + resolution: {integrity: sha512-dQW/Bc/MriPBTugj2Kx9PMS5eXCCGn2cxoIaichjbNvOiARlaHdI99j4DTxLl/V8+PIfW06uFy7kjfUIDDKyxQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-tooltip@6.4.0: + resolution: {integrity: sha512-kqyivim5cp8I5RkHmpsp1Nn/Wk+1oeloMv9c7LXNgDxUpGm+RbXJGL+OPvDlcRnx9DBeOe4wyOIl4OKUERyH1g==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-tree-select@5.27.0: + resolution: {integrity: sha512-2qTBTzwIT7LRI1o7zLyrCzmo5tQanmyGbSaGTIf7sYimCklAToVVfpMC6OAldSKolcnjorBYPNSKQqJmN3TCww==} + peerDependencies: + react: '*' + react-dom: '*' + + rc-tree@5.13.0: + resolution: {integrity: sha512-2+lFvoVRnvHQ1trlpXMOWtF8BUgF+3TiipG72uOfhpL5CUdXCk931kvDdUkTL/IZVtNEDQKwEEmJbAYJSA5NnA==} + engines: {node: '>=10.x'} + peerDependencies: + react: '*' + react-dom: '*' + + rc-upload@4.8.1: + resolution: {integrity: sha512-toEAhwl4hjLAI1u8/CgKWt30BR06ulPa4iGQSMvSXoHzO88gPCslxqV/mnn4gJU7PDoltGIC9Eh+wkeudqgHyw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-util@5.44.4: + resolution: {integrity: sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-virtual-list@3.18.2: + resolution: {integrity: sha512-SkPabqstOQgJ2Q2Ob3eDPIHsNrDzQZFl8mzHiXuNablyYwddVU33Ws6oxoA7Fi/6pZeEYonrLEUiJGr/6aBVaw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-i18next@15.4.1: + resolution: {integrity: sha512-ahGab+IaSgZmNPYXdV1n+OYky95TGpFwnKRflX/16dY04DsYYKHtVLjeny7sBSCREEcoMbAgSkFiGLF5g5Oofw==} + peerDependencies: + i18next: '>= 23.2.3' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.3: + resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-responsive@10.0.0: + resolution: {integrity: sha512-N6/UiRLGQyGUqrarhBZmrSmHi2FXSD++N5VbSKsBBvWfG0ZV7asvUBluSv5lSzdMyEVjzZ6Y8DL4OHABiztDOg==} + engines: {node: '>=14'} + peerDependencies: + react: '>=16.8.0' + + react-simple-keyboard@3.8.49: + resolution: {integrity: sha512-BY/ymNQsa+3f+VrI+4/Z4vZH+uzxsUQj8O+3BBpbhL9OuRpNZw5BN0wSD37/tX/kXk+JkKx05iEPMVVlYq9A5A==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + read-binary-file-arch@1.0.6: + resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==} + hasBin: true + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + resedit@1.7.2: + resolution: {integrity: sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==} + engines: {node: '>=12', npm: '>=6'} + + resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + roarr@2.15.4: + resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} + engines: {node: '>=8.0'} + + rollup@4.34.8: + resolution: {integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sanitize-filename@1.6.3: + resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + scroll-into-view-if-needed@3.1.0: + resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} + + semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + serialize-error@7.0.1: + resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} + engines: {node: '>=10'} + + serialport@13.0.0: + resolution: {integrity: sha512-PHpnTd8isMGPfFTZNCzOZp9m4mAJSNWle9Jxu6BPTcWq7YXl5qN7tp8Sgn0h+WIGcD6JFz5QDgixC2s4VW7vzg==} + engines: {node: '>=20.0.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + shallow-equal@3.1.0: + resolution: {integrity: sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + + slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks-proxy-agent@7.0.0: + resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} + engines: {node: '>= 10'} + + socks@2.8.4: + resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + ssri@9.0.1: + resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + stat-mode@1.0.0: + resolution: {integrity: sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==} + engines: {node: '>= 6'} + + string-convert@0.2.1: + resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + stylis@4.3.6: + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + + sumchecker@3.0.1: + resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} + engines: {node: '>= 8.0'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + engines: {node: ^14.18.0 || >=16.0.0} + + tailwindcss@4.0.6: + resolution: {integrity: sha512-mysewHYJKaXgNOW6pp5xon/emCsfAMnO8WMaGKZZ35fomnR/T5gYnRg2/yRTTrtXiEl1tiVkeRt0eMO6HxEZqw==} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + temp-file@3.4.0: + resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==} + + throttle-debounce@5.0.2: + resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} + engines: {node: '>=12.22'} + + tiny-typed-emitter@2.1.0: + resolution: {integrity: sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==} + + tmp-promise@3.0.3: + resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} + + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + + truncate-utf8-bytes@1.0.2: + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + + ts-api-utils@2.0.1: + resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript-eslint@8.24.1: + resolution: {integrity: sha512-cw3rEdzDqBs70TIcb0Gdzbt6h11BSs2pS0yaq7hDWDBtCCSei1pPSUXE9qUdQ/Wm9NgFg8mKtMt1b8fTHIl1jA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + + unique-filename@2.0.1: + resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + unique-slug@3.0.0: + resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + update-browserslist-db@1.1.2: + resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + utf8-byte-length@1.0.5: + resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + vaul@1.1.2: + resolution: {integrity: sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + + verror@1.10.1: + resolution: {integrity: sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==} + engines: {node: '>=0.6.0'} + + vite@6.1.0: + resolution: {integrity: sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zip-stream@4.1.1: + resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} + engines: {node: '>= 10'} + +snapshots: + + 7zip-bin@5.2.0: {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@ant-design/colors@7.2.0': + dependencies: + '@ant-design/fast-color': 2.0.6 + + '@ant-design/cssinjs-utils@1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/cssinjs': 1.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/runtime': 7.26.9 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@ant-design/cssinjs@1.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.9 + '@emotion/hash': 0.8.0 + '@emotion/unitless': 0.7.5 + classnames: 2.5.1 + csstype: 3.1.3 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + stylis: 4.3.6 + + '@ant-design/fast-color@2.0.6': + dependencies: + '@babel/runtime': 7.26.9 + + '@ant-design/icons-svg@4.4.2': {} + + '@ant-design/icons@5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/colors': 7.2.0 + '@ant-design/icons-svg': 4.4.2 + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@ant-design/react-slick@1.1.2(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + json2mq: 0.2.0 + react: 18.3.1 + resize-observer-polyfill: 1.5.1 + throttle-debounce: 5.0.2 + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.8': {} + + '@babel/core@7.26.9': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.9 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) + '@babel/helpers': 7.26.9 + '@babel/parser': 7.26.9 + '@babel/template': 7.26.9 + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.26.9': + dependencies: + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.26.5': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.26.5': {} + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helpers@7.26.9': + dependencies: + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 + + '@babel/parser@7.26.9': + dependencies: + '@babel/types': 7.26.9 + + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.9)': + dependencies: + '@babel/core': 7.26.9 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/runtime@7.26.9': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.26.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 + + '@babel/traverse@7.26.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.9 + '@babel/parser': 7.26.9 + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.26.9': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@develar/schema-utils@2.6.5': + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + '@electron-toolkit/eslint-config-prettier@3.0.0(eslint@9.20.1(jiti@2.4.2))(prettier@3.5.1)': + dependencies: + eslint: 9.20.1(jiti@2.4.2) + eslint-config-prettier: 10.0.1(eslint@9.20.1(jiti@2.4.2)) + eslint-plugin-prettier: 5.2.3(eslint-config-prettier@10.0.1(eslint@9.20.1(jiti@2.4.2)))(eslint@9.20.1(jiti@2.4.2))(prettier@3.5.1) + prettier: 3.5.1 + transitivePeerDependencies: + - '@types/eslint' + + '@electron-toolkit/eslint-config-ts@3.0.0(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@eslint/js': 9.20.0 + eslint: 9.20.1(jiti@2.4.2) + globals: 15.15.0 + typescript-eslint: 8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + optionalDependencies: + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@electron-toolkit/preload@3.0.1(electron@34.2.0)': + dependencies: + electron: 34.2.0 + + '@electron-toolkit/tsconfig@1.0.1(@types/node@22.13.4)': + dependencies: + '@types/node': 22.13.4 + + '@electron-toolkit/utils@4.0.0(electron@34.2.0)': + dependencies: + electron: 34.2.0 + + '@electron/asar@3.3.1': + dependencies: + commander: 5.1.0 + glob: 7.2.3 + minimatch: 3.1.2 + + '@electron/get@2.0.3': + dependencies: + debug: 4.4.0 + env-paths: 2.2.1 + fs-extra: 8.1.0 + got: 11.8.6 + progress: 2.0.3 + semver: 6.3.1 + sumchecker: 3.0.1 + optionalDependencies: + global-agent: 3.0.0 + transitivePeerDependencies: + - supports-color + + '@electron/notarize@2.5.0': + dependencies: + debug: 4.4.0 + fs-extra: 9.1.0 + promise-retry: 2.0.1 + transitivePeerDependencies: + - supports-color + + '@electron/osx-sign@1.3.1': + dependencies: + compare-version: 0.1.2 + debug: 4.4.0 + fs-extra: 10.1.0 + isbinaryfile: 4.0.10 + minimist: 1.2.8 + plist: 3.1.0 + transitivePeerDependencies: + - supports-color + + '@electron/rebuild@3.6.1': + dependencies: + '@malept/cross-spawn-promise': 2.0.0 + chalk: 4.1.2 + debug: 4.4.0 + detect-libc: 2.0.3 + fs-extra: 10.1.0 + got: 11.8.6 + node-abi: 3.74.0 + node-api-version: 0.2.0 + node-gyp: 9.4.1 + ora: 5.4.1 + read-binary-file-arch: 1.0.6 + semver: 7.7.1 + tar: 6.2.1 + yargs: 17.7.2 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron/universal@2.0.1': + dependencies: + '@electron/asar': 3.3.1 + '@malept/cross-spawn-promise': 2.0.0 + debug: 4.4.0 + dir-compare: 4.2.0 + fs-extra: 11.3.0 + minimatch: 9.0.5 + plist: 3.1.0 + transitivePeerDependencies: + - supports-color + + '@emotion/hash@0.8.0': {} + + '@emotion/unitless@0.7.5': {} + + '@esbuild/aix-ppc64@0.24.2': + optional: true + + '@esbuild/android-arm64@0.24.2': + optional: true + + '@esbuild/android-arm@0.24.2': + optional: true + + '@esbuild/android-x64@0.24.2': + optional: true + + '@esbuild/darwin-arm64@0.24.2': + optional: true + + '@esbuild/darwin-x64@0.24.2': + optional: true + + '@esbuild/freebsd-arm64@0.24.2': + optional: true + + '@esbuild/freebsd-x64@0.24.2': + optional: true + + '@esbuild/linux-arm64@0.24.2': + optional: true + + '@esbuild/linux-arm@0.24.2': + optional: true + + '@esbuild/linux-ia32@0.24.2': + optional: true + + '@esbuild/linux-loong64@0.24.2': + optional: true + + '@esbuild/linux-mips64el@0.24.2': + optional: true + + '@esbuild/linux-ppc64@0.24.2': + optional: true + + '@esbuild/linux-riscv64@0.24.2': + optional: true + + '@esbuild/linux-s390x@0.24.2': + optional: true + + '@esbuild/linux-x64@0.24.2': + optional: true + + '@esbuild/netbsd-arm64@0.24.2': + optional: true + + '@esbuild/netbsd-x64@0.24.2': + optional: true + + '@esbuild/openbsd-arm64@0.24.2': + optional: true + + '@esbuild/openbsd-x64@0.24.2': + optional: true + + '@esbuild/sunos-x64@0.24.2': + optional: true + + '@esbuild/win32-arm64@0.24.2': + optional: true + + '@esbuild/win32-ia32@0.24.2': + optional: true + + '@esbuild/win32-x64@0.24.2': + optional: true + + '@eslint-community/eslint-utils@4.4.1(eslint@9.20.1(jiti@2.4.2))': + dependencies: + eslint: 9.20.1(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.19.2': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.10.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.11.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.2.0': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.20.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.5': + dependencies: + '@eslint/core': 0.10.0 + levn: 0.4.1 + + '@gar/promisify@1.1.3': {} + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.1': {} + + '@ianvs/prettier-plugin-sort-imports@4.4.1(prettier@3.5.1)': + dependencies: + '@babel/generator': 7.26.9 + '@babel/parser': 7.26.9 + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + prettier: 3.5.1 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@malept/cross-spawn-promise@2.0.0': + dependencies: + cross-spawn: 7.0.6 + + '@malept/flatpak-bundler@0.4.0': + dependencies: + debug: 4.4.0 + fs-extra: 9.1.0 + lodash: 4.17.21 + tmp-promise: 3.0.3 + transitivePeerDependencies: + - supports-color + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.0 + + '@npmcli/fs@2.1.2': + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.7.1 + + '@npmcli/move-file@2.0.1': + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@radix-ui/primitive@1.1.1': {} + + '@radix-ui/react-compose-refs@1.1.1(@types/react@18.3.18)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.18 + + '@radix-ui/react-context@1.1.1(@types/react@18.3.18)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.18 + + '@radix-ui/react-dialog@1.1.6(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.18)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.18)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.18)(react@18.3.1) + '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.2(@types/react@18.3.18)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.18)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.3(@types/react@18.3.18)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.18 + '@types/react-dom': 18.3.5(@types/react@18.3.18) + + '@radix-ui/react-dismissable-layer@1.1.5(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.18)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.18)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.18 + '@types/react-dom': 18.3.5(@types/react@18.3.18) + + '@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.18)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.18 + + '@radix-ui/react-focus-scope@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.18)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.18 + '@types/react-dom': 18.3.5(@types/react@18.3.18) + + '@radix-ui/react-id@1.1.0(@types/react@18.3.18)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.18)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.18 + + '@radix-ui/react-portal@1.1.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.18)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.18 + '@types/react-dom': 18.3.5(@types/react@18.3.18) + + '@radix-ui/react-presence@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.18)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.18 + '@types/react-dom': 18.3.5(@types/react@18.3.18) + + '@radix-ui/react-primitive@2.0.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.1.2(@types/react@18.3.18)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.18 + '@types/react-dom': 18.3.5(@types/react@18.3.18) + + '@radix-ui/react-slot@1.1.2(@types/react@18.3.18)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.18 + + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.18)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.18 + + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.18)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.18)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.18 + + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.18)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.18)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.18 + + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.18)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.18 + + '@rc-component/async-validator@5.0.4': + dependencies: + '@babel/runtime': 7.26.9 + + '@rc-component/color-picker@2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@ant-design/fast-color': 2.0.6 + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/context@1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.9 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/mini-decimal@1.1.0': + dependencies: + '@babel/runtime': 7.26.9 + + '@rc-component/mutate-observer@1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/portal@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/qrcode@1.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/tour@1.15.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.9 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rc-component/trigger@2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.26.9 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@rollup/rollup-android-arm-eabi@4.34.8': + optional: true + + '@rollup/rollup-android-arm64@4.34.8': + optional: true + + '@rollup/rollup-darwin-arm64@4.34.8': + optional: true + + '@rollup/rollup-darwin-x64@4.34.8': + optional: true + + '@rollup/rollup-freebsd-arm64@4.34.8': + optional: true + + '@rollup/rollup-freebsd-x64@4.34.8': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.34.8': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.34.8': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.34.8': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.34.8': + optional: true + + '@rollup/rollup-linux-x64-musl@4.34.8': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.34.8': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.34.8': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.34.8': + optional: true + + '@serialport/binding-mock@10.2.2': + dependencies: + '@serialport/bindings-interface': 1.2.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + '@serialport/bindings-cpp@13.0.0': + dependencies: + '@serialport/bindings-interface': 1.2.2 + '@serialport/parser-readline': 12.0.0 + debug: 4.4.0 + node-addon-api: 8.3.0 + node-gyp-build: 4.8.4 + transitivePeerDependencies: + - supports-color + + '@serialport/bindings-interface@1.2.2': {} + + '@serialport/parser-byte-length@13.0.0': {} + + '@serialport/parser-cctalk@13.0.0': {} + + '@serialport/parser-delimiter@12.0.0': {} + + '@serialport/parser-delimiter@13.0.0': {} + + '@serialport/parser-inter-byte-timeout@13.0.0': {} + + '@serialport/parser-packet-length@13.0.0': {} + + '@serialport/parser-readline@12.0.0': + dependencies: + '@serialport/parser-delimiter': 12.0.0 + + '@serialport/parser-readline@13.0.0': + dependencies: + '@serialport/parser-delimiter': 13.0.0 + + '@serialport/parser-ready@13.0.0': {} + + '@serialport/parser-regex@13.0.0': {} + + '@serialport/parser-slip-encoder@13.0.0': {} + + '@serialport/parser-spacepacket@13.0.0': {} + + '@serialport/stream@13.0.0': + dependencies: + '@serialport/bindings-interface': 1.2.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + '@sindresorhus/is@4.6.0': {} + + '@szmarczak/http-timer@4.0.6': + dependencies: + defer-to-connect: 2.0.1 + + '@tailwindcss/node@4.0.6': + dependencies: + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + tailwindcss: 4.0.6 + + '@tailwindcss/oxide-android-arm64@4.0.6': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.0.6': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.0.6': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.0.6': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.6': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.0.6': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.0.6': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.0.6': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.0.6': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.0.6': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.0.6': + optional: true + + '@tailwindcss/oxide@4.0.6': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.0.6 + '@tailwindcss/oxide-darwin-arm64': 4.0.6 + '@tailwindcss/oxide-darwin-x64': 4.0.6 + '@tailwindcss/oxide-freebsd-x64': 4.0.6 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.6 + '@tailwindcss/oxide-linux-arm64-gnu': 4.0.6 + '@tailwindcss/oxide-linux-arm64-musl': 4.0.6 + '@tailwindcss/oxide-linux-x64-gnu': 4.0.6 + '@tailwindcss/oxide-linux-x64-musl': 4.0.6 + '@tailwindcss/oxide-win32-arm64-msvc': 4.0.6 + '@tailwindcss/oxide-win32-x64-msvc': 4.0.6 + + '@tailwindcss/vite@4.0.6(vite@6.1.0(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1))': + dependencies: + '@tailwindcss/node': 4.0.6 + '@tailwindcss/oxide': 4.0.6 + lightningcss: 1.29.1 + tailwindcss: 4.0.6 + vite: 6.1.0(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1) + + '@tootallnate/once@2.0.0': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.26.9 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.26.9 + + '@types/cacheable-request@6.0.3': + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 22.13.4 + '@types/responselike': 1.0.3 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree@1.0.6': {} + + '@types/fs-extra@9.0.13': + dependencies: + '@types/node': 22.13.4 + + '@types/http-cache-semantics@4.0.4': {} + + '@types/json-schema@7.0.15': {} + + '@types/keyv@3.1.4': + dependencies: + '@types/node': 22.13.4 + + '@types/ms@2.1.0': {} + + '@types/node@20.17.19': + dependencies: + undici-types: 6.19.8 + + '@types/node@22.13.4': + dependencies: + undici-types: 6.20.0 + + '@types/plist@3.0.5': + dependencies: + '@types/node': 22.13.4 + xmlbuilder: 15.1.1 + optional: true + + '@types/prop-types@15.7.14': {} + + '@types/react-dom@18.3.5(@types/react@18.3.18)': + dependencies: + '@types/react': 18.3.18 + + '@types/react@18.3.18': + dependencies: + '@types/prop-types': 15.7.14 + csstype: 3.1.3 + + '@types/responselike@1.0.3': + dependencies: + '@types/node': 22.13.4 + + '@types/verror@1.10.10': + optional: true + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 22.13.4 + optional: true + + '@typescript-eslint/eslint-plugin@8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.24.1 + '@typescript-eslint/type-utils': 8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.24.1 + eslint: 9.20.1(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.24.1 + '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.24.1 + debug: 4.4.0 + eslint: 9.20.1(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.24.1': + dependencies: + '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/visitor-keys': 8.24.1 + + '@typescript-eslint/type-utils@8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) + '@typescript-eslint/utils': 8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + debug: 4.4.0 + eslint: 9.20.1(jiti@2.4.2) + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.24.1': {} + + '@typescript-eslint/typescript-estree@8.24.1(typescript@5.7.3)': + dependencies: + '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/visitor-keys': 8.24.1 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.24.1 + '@typescript-eslint/types': 8.24.1 + '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.24.1': + dependencies: + '@typescript-eslint/types': 8.24.1 + eslint-visitor-keys: 4.2.0 + + '@vitejs/plugin-react@4.3.4(vite@6.1.0(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1))': + dependencies: + '@babel/core': 7.26.9 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.9) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 6.1.0(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1) + transitivePeerDependencies: + - supports-color + + '@xmldom/xmldom@0.8.10': {} + + abbrev@1.1.1: {} + + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + + acorn@8.14.0: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + agent-base@7.1.3: {} + + agentkeepalive@4.6.0: + dependencies: + humanize-ms: 1.2.1 + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + antd@5.24.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@ant-design/colors': 7.2.0 + '@ant-design/cssinjs': 1.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/cssinjs-utils': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/fast-color': 2.0.6 + '@ant-design/icons': 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/react-slick': 1.1.2(react@18.3.1) + '@babel/runtime': 7.26.9 + '@rc-component/color-picker': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/mutate-observer': 1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/qrcode': 1.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/tour': 1.15.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + copy-to-clipboard: 3.3.3 + dayjs: 1.11.13 + rc-cascader: 3.33.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-checkbox: 3.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-collapse: 3.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-dialog: 9.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-drawer: 7.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-dropdown: 4.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-field-form: 2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-image: 7.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-input: 1.7.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-input-number: 9.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-mentions: 2.19.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-menu: 9.16.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-notification: 5.6.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-pagination: 5.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-picker: 4.11.2(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-progress: 4.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-rate: 2.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-segmented: 2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-select: 14.16.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-slider: 11.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-steps: 6.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-switch: 4.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-table: 7.50.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tabs: 15.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-textarea: 1.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tooltip: 6.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tree: 5.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tree-select: 5.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-upload: 4.8.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + scroll-into-view-if-needed: 3.1.0 + throttle-debounce: 5.0.2 + transitivePeerDependencies: + - date-fns + - luxon + - moment + + app-builder-bin@5.0.0-alpha.10: {} + + app-builder-lib@25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8): + dependencies: + '@develar/schema-utils': 2.6.5 + '@electron/notarize': 2.5.0 + '@electron/osx-sign': 1.3.1 + '@electron/rebuild': 3.6.1 + '@electron/universal': 2.0.1 + '@malept/flatpak-bundler': 0.4.0 + '@types/fs-extra': 9.0.13 + async-exit-hook: 2.0.1 + bluebird-lst: 1.0.9 + builder-util: 25.1.7 + builder-util-runtime: 9.2.10 + chromium-pickle-js: 0.2.0 + config-file-ts: 0.2.8-rc1 + debug: 4.4.0 + dmg-builder: 25.1.8(electron-builder-squirrel-windows@25.1.8) + dotenv: 16.4.7 + dotenv-expand: 11.0.7 + ejs: 3.1.10 + electron-builder-squirrel-windows: 25.1.8(dmg-builder@25.1.8) + electron-publish: 25.1.7 + form-data: 4.0.2 + fs-extra: 10.1.0 + hosted-git-info: 4.1.0 + is-ci: 3.0.1 + isbinaryfile: 5.0.4 + js-yaml: 4.1.0 + json5: 2.2.3 + lazy-val: 1.0.5 + minimatch: 10.0.1 + resedit: 1.7.2 + sanitize-filename: 1.6.3 + semver: 7.7.1 + tar: 6.2.1 + temp-file: 3.4.0 + transitivePeerDependencies: + - bluebird + - supports-color + + aproba@2.0.0: {} + + archiver-utils@2.1.0: + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 2.3.8 + + archiver-utils@3.0.4: + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + + archiver@5.3.2: + dependencies: + archiver-utils: 2.1.0 + async: 3.2.6 + buffer-crc32: 0.2.13 + readable-stream: 3.6.2 + readdir-glob: 1.1.3 + tar-stream: 2.2.0 + zip-stream: 4.1.1 + + are-we-there-yet@3.0.1: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.3 + is-array-buffer: 3.0.5 + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + get-intrinsic: 1.2.7 + is-string: 1.1.1 + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + is-array-buffer: 3.0.5 + + assert-plus@1.0.0: + optional: true + + astral-regex@2.0.0: + optional: true + + async-exit-hook@2.0.1: {} + + async-function@1.0.0: {} + + async@3.2.6: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bluebird-lst@1.0.9: + dependencies: + bluebird: 3.7.2 + + bluebird@3.7.2: {} + + boolean@3.2.0: + optional: true + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001700 + electron-to-chromium: 1.5.102 + node-releases: 2.0.19 + update-browserslist-db: 1.1.2(browserslist@4.24.4) + + buffer-crc32@0.2.13: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builder-util-runtime@9.2.10: + dependencies: + debug: 4.4.0 + sax: 1.4.1 + transitivePeerDependencies: + - supports-color + + builder-util@25.1.7: + dependencies: + 7zip-bin: 5.2.0 + '@types/debug': 4.1.12 + app-builder-bin: 5.0.0-alpha.10 + bluebird-lst: 1.0.9 + builder-util-runtime: 9.2.10 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + fs-extra: 10.1.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-ci: 3.0.1 + js-yaml: 4.1.0 + source-map-support: 0.5.21 + stat-mode: 1.0.0 + temp-file: 3.4.0 + transitivePeerDependencies: + - supports-color + + cac@6.7.14: {} + + cacache@16.1.3: + dependencies: + '@npmcli/fs': 2.1.2 + '@npmcli/move-file': 2.0.1 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 8.1.0 + infer-owner: 1.0.4 + lru-cache: 7.18.3 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 3.0.2 + ssri: 9.0.1 + tar: 6.2.1 + unique-filename: 2.0.1 + transitivePeerDependencies: + - bluebird + + cacheable-lookup@5.0.4: {} + + cacheable-request@7.0.4: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.2.7 + set-function-length: 1.2.2 + + call-bound@1.0.3: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.2.7 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001700: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chownr@2.0.0: {} + + chromium-pickle-js@0.2.0: {} + + ci-info@3.9.0: {} + + classnames@2.5.1: {} + + clean-stack@2.2.0: {} + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-spinners@2.9.2: {} + + cli-truncate@2.1.0: + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + optional: true + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + + clone@1.0.4: {} + + clsx@2.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-support@1.1.3: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@5.1.0: {} + + compare-version@0.1.2: {} + + compress-commons@4.1.2: + dependencies: + buffer-crc32: 0.2.13 + crc32-stream: 4.0.3 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + + compute-scroll-into-view@3.1.1: {} + + concat-map@0.0.1: {} + + config-file-ts@0.2.8-rc1: + dependencies: + glob: 10.4.5 + typescript: 5.7.3 + + console-control-strings@1.1.0: {} + + convert-source-map@2.0.0: {} + + copy-to-clipboard@3.3.3: + dependencies: + toggle-selection: 1.0.6 + + core-util-is@1.0.2: + optional: true + + core-util-is@1.0.3: {} + + crc-32@1.2.2: {} + + crc32-stream@4.0.3: + dependencies: + crc-32: 1.2.2 + readable-stream: 3.6.2 + + crc@3.8.0: + dependencies: + buffer: 5.7.1 + optional: true + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-mediaquery@0.1.2: {} + + csstype@3.1.3: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + dayjs@1.11.13: {} + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + deep-is@0.1.4: {} + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + defer-to-connect@2.0.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delayed-stream@1.0.0: {} + + delegates@1.0.0: {} + + detect-libc@1.0.3: {} + + detect-libc@2.0.3: {} + + detect-node-es@1.1.0: {} + + detect-node@2.1.0: + optional: true + + dir-compare@4.2.0: + dependencies: + minimatch: 3.1.2 + p-limit: 3.1.0 + + dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8): + dependencies: + app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8) + builder-util: 25.1.7 + builder-util-runtime: 9.2.10 + fs-extra: 10.1.0 + iconv-lite: 0.6.3 + js-yaml: 4.1.0 + optionalDependencies: + dmg-license: 1.0.11 + transitivePeerDependencies: + - bluebird + - electron-builder-squirrel-windows + - supports-color + + dmg-license@1.0.11: + dependencies: + '@types/plist': 3.0.5 + '@types/verror': 1.10.10 + ajv: 6.12.6 + crc: 3.8.0 + iconv-corefoundation: 1.1.7 + plist: 3.1.0 + smart-buffer: 4.2.0 + verror: 1.10.1 + optional: true + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dotenv-expand@11.0.7: + dependencies: + dotenv: 16.4.7 + + dotenv@16.4.7: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + eastasianwidth@0.2.0: {} + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8): + dependencies: + app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8) + archiver: 5.3.2 + builder-util: 25.1.7 + fs-extra: 10.1.0 + transitivePeerDependencies: + - bluebird + - dmg-builder + - supports-color + + electron-builder@25.1.8(electron-builder-squirrel-windows@25.1.8): + dependencies: + app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8) + builder-util: 25.1.7 + builder-util-runtime: 9.2.10 + chalk: 4.1.2 + dmg-builder: 25.1.8(electron-builder-squirrel-windows@25.1.8) + fs-extra: 10.1.0 + is-ci: 3.0.1 + lazy-val: 1.0.5 + simple-update-notifier: 2.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - bluebird + - electron-builder-squirrel-windows + - supports-color + + electron-log@5.3.1: {} + + electron-publish@25.1.7: + dependencies: + '@types/fs-extra': 9.0.13 + builder-util: 25.1.7 + builder-util-runtime: 9.2.10 + chalk: 4.1.2 + fs-extra: 10.1.0 + lazy-val: 1.0.5 + mime: 2.6.0 + transitivePeerDependencies: + - supports-color + + electron-to-chromium@1.5.102: {} + + electron-updater@6.3.9: + dependencies: + builder-util-runtime: 9.2.10 + fs-extra: 10.1.0 + js-yaml: 4.1.0 + lazy-val: 1.0.5 + lodash.escaperegexp: 4.1.2 + lodash.isequal: 4.5.0 + semver: 7.7.1 + tiny-typed-emitter: 2.1.0 + transitivePeerDependencies: + - supports-color + + electron-vite@3.0.0(vite@6.1.0(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1)): + dependencies: + '@babel/core': 7.26.9 + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.9) + cac: 6.7.14 + esbuild: 0.24.2 + magic-string: 0.30.17 + picocolors: 1.1.1 + vite: 6.1.0(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1) + transitivePeerDependencies: + - supports-color + + electron@34.2.0: + dependencies: + '@electron/get': 2.0.3 + '@types/node': 20.17.19 + extract-zip: 2.0.1 + transitivePeerDependencies: + - supports-color + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + optional: true + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + env-paths@2.2.1: {} + + err-code@2.0.3: {} + + es-abstract@1.23.9: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.2.7 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.18 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.7 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + safe-array-concat: 1.1.3 + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + es6-error@4.1.1: + optional: true + + esbuild@0.24.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.2 + '@esbuild/android-arm': 0.24.2 + '@esbuild/android-arm64': 0.24.2 + '@esbuild/android-x64': 0.24.2 + '@esbuild/darwin-arm64': 0.24.2 + '@esbuild/darwin-x64': 0.24.2 + '@esbuild/freebsd-arm64': 0.24.2 + '@esbuild/freebsd-x64': 0.24.2 + '@esbuild/linux-arm': 0.24.2 + '@esbuild/linux-arm64': 0.24.2 + '@esbuild/linux-ia32': 0.24.2 + '@esbuild/linux-loong64': 0.24.2 + '@esbuild/linux-mips64el': 0.24.2 + '@esbuild/linux-ppc64': 0.24.2 + '@esbuild/linux-riscv64': 0.24.2 + '@esbuild/linux-s390x': 0.24.2 + '@esbuild/linux-x64': 0.24.2 + '@esbuild/netbsd-arm64': 0.24.2 + '@esbuild/netbsd-x64': 0.24.2 + '@esbuild/openbsd-arm64': 0.24.2 + '@esbuild/openbsd-x64': 0.24.2 + '@esbuild/sunos-x64': 0.24.2 + '@esbuild/win32-arm64': 0.24.2 + '@esbuild/win32-ia32': 0.24.2 + '@esbuild/win32-x64': 0.24.2 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-prettier@10.0.1(eslint@9.20.1(jiti@2.4.2)): + dependencies: + eslint: 9.20.1(jiti@2.4.2) + + eslint-plugin-prettier@5.2.3(eslint-config-prettier@10.0.1(eslint@9.20.1(jiti@2.4.2)))(eslint@9.20.1(jiti@2.4.2))(prettier@3.5.1): + dependencies: + eslint: 9.20.1(jiti@2.4.2) + prettier: 3.5.1 + prettier-linter-helpers: 1.0.0 + synckit: 0.9.2 + optionalDependencies: + eslint-config-prettier: 10.0.1(eslint@9.20.1(jiti@2.4.2)) + + eslint-plugin-react-hooks@5.1.0(eslint@9.20.1(jiti@2.4.2)): + dependencies: + eslint: 9.20.1(jiti@2.4.2) + + eslint-plugin-react-refresh@0.4.19(eslint@9.20.1(jiti@2.4.2)): + dependencies: + eslint: 9.20.1(jiti@2.4.2) + + eslint-plugin-react@7.37.4(eslint@9.20.1(jiti@2.4.2)): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 9.20.1(jiti@2.4.2) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-scope@8.2.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.20.1(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.1(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.2 + '@eslint/core': 0.11.0 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.20.0 + '@eslint/plugin-kit': 0.2.5 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + exponential-backoff@3.1.2: {} + + extract-zip@2.0.1: + dependencies: + debug: 4.4.0 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + extsprintf@1.4.1: + optional: true + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.19.0: + dependencies: + reusify: 1.0.4 + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + + flatted@3.3.2: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + fs-constants@1.0.0: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.3.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + gauge@4.0.4: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.2.7: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-nonce@1.0.1: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@5.2.0: + dependencies: + pump: 3.0.2 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + global-agent@3.0.0: + dependencies: + boolean: 3.2.0 + es6-error: 4.1.1 + matcher: 3.0.0 + roarr: 2.15.4 + semver: 7.7.1 + serialize-error: 7.0.1 + optional: true + + globals@11.12.0: {} + + globals@14.0.0: {} + + globals@15.15.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + gopd@1.2.0: {} + + got@11.8.6: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + has-unicode@2.0.1: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + html-parse-stringify@3.0.1: + dependencies: + void-elements: 3.1.0 + + http-cache-semantics@4.1.1: {} + + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + http2-wrapper@1.0.3: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + hyphenate-style-name@1.1.0: {} + + i18next@24.2.2(typescript@5.7.3): + dependencies: + '@babel/runtime': 7.26.9 + optionalDependencies: + typescript: 5.7.3 + + iconv-corefoundation@1.1.7: + dependencies: + cli-truncate: 2.1.0 + node-addon-api: 1.7.2 + optional: true + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + infer-owner@1.0.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + get-intrinsic: 1.2.7 + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.3 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-ci@3.0.1: + dependencies: + ci-info: 3.9.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.3 + get-intrinsic: 1.2.7 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.3 + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.3 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-interactive@1.0.0: {} + + is-lambda@1.0.1: {} + + is-map@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.3 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.3 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.3 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.18 + + is-unicode-supported@0.1.0: {} + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.3 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.3 + get-intrinsic: 1.2.7 + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isbinaryfile@4.0.10: {} + + isbinaryfile@5.0.4: {} + + isexe@2.0.0: {} + + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.2.7 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jiti@2.4.2: {} + + jotai@2.12.1(@types/react@18.3.18)(react@18.3.1): + optionalDependencies: + '@types/react': 18.3.18 + react: 18.3.1 + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsbn@1.1.0: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-safe@5.0.1: + optional: true + + json2mq@0.2.0: + dependencies: + string-convert: 0.2.1 + + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + lazy-val@1.0.5: {} + + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-darwin-arm64@1.29.1: + optional: true + + lightningcss-darwin-x64@1.29.1: + optional: true + + lightningcss-freebsd-x64@1.29.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.29.1: + optional: true + + lightningcss-linux-arm64-gnu@1.29.1: + optional: true + + lightningcss-linux-arm64-musl@1.29.1: + optional: true + + lightningcss-linux-x64-gnu@1.29.1: + optional: true + + lightningcss-linux-x64-musl@1.29.1: + optional: true + + lightningcss-win32-arm64-msvc@1.29.1: + optional: true + + lightningcss-win32-x64-msvc@1.29.1: + optional: true + + lightningcss@1.29.1: + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.29.1 + lightningcss-darwin-x64: 1.29.1 + lightningcss-freebsd-x64: 1.29.1 + lightningcss-linux-arm-gnueabihf: 1.29.1 + lightningcss-linux-arm64-gnu: 1.29.1 + lightningcss-linux-arm64-musl: 1.29.1 + lightningcss-linux-x64-gnu: 1.29.1 + lightningcss-linux-x64-musl: 1.29.1 + lightningcss-win32-arm64-msvc: 1.29.1 + lightningcss-win32-x64-msvc: 1.29.1 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.defaults@4.2.0: {} + + lodash.difference@4.5.0: {} + + lodash.escaperegexp@4.1.2: {} + + lodash.flatten@4.4.0: {} + + lodash.isequal@4.5.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.merge@4.6.2: {} + + lodash.union@4.6.0: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lowercase-keys@2.0.0: {} + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lru-cache@7.18.3: {} + + lucide-react@0.476.0(react@18.3.1): + dependencies: + react: 18.3.1 + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-fetch-happen@10.2.1: + dependencies: + agentkeepalive: 4.6.0 + cacache: 16.1.3 + http-cache-semantics: 4.1.1 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 7.18.3 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-fetch: 2.1.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.4 + promise-retry: 2.0.1 + socks-proxy-agent: 7.0.0 + ssri: 9.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + + matcher@3.0.0: + dependencies: + escape-string-regexp: 4.0.0 + optional: true + + matchmediaquery@0.4.2: + dependencies: + css-mediaquery: 0.1.2 + + math-intrinsics@1.1.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@2.6.0: {} + + mimic-fn@2.1.0: {} + + mimic-response@1.0.1: {} + + mimic-response@3.1.0: {} + + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass-collect@1.0.2: + dependencies: + minipass: 3.3.6 + + minipass-fetch@2.1.2: + dependencies: + minipass: 3.3.6 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + + minipass-flush@1.0.5: + dependencies: + minipass: 3.3.6 + + minipass-pipeline@1.2.4: + dependencies: + minipass: 3.3.6 + + minipass-sized@1.0.3: + dependencies: + minipass: 3.3.6 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mkdirp@1.0.4: {} + + ms@2.1.3: {} + + nanoid@3.3.8: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.4: {} + + node-abi@3.74.0: + dependencies: + semver: 7.7.1 + + node-addon-api@1.7.2: + optional: true + + node-addon-api@8.3.0: {} + + node-api-version@0.2.0: + dependencies: + semver: 7.7.1 + + node-gyp-build@4.8.4: {} + + node-gyp@9.4.1: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + make-fetch-happen: 10.2.1 + nopt: 6.0.0 + npmlog: 6.0.2 + rimraf: 3.0.2 + semver: 7.7.1 + tar: 6.2.1 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + + node-releases@2.0.19: {} + + nopt@6.0.0: + dependencies: + abbrev: 1.1.1 + + normalize-path@3.0.0: {} + + normalize-url@6.1.0: {} + + npmlog@6.0.2: + dependencies: + are-we-there-yet: 3.0.1 + console-control-strings: 1.1.0 + gauge: 4.0.4 + set-blocking: 2.0.0 + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.2.7 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-cancelable@2.1.1: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + package-json-from-dist@1.0.1: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + pe-library@0.4.1: {} + + pend@1.2.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + plist@3.1.0: + dependencies: + '@xmldom/xmldom': 0.8.10 + base64-js: 1.5.1 + xmlbuilder: 15.1.1 + + possible-typed-array-names@1.1.0: {} + + postcss@8.5.2: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier-plugin-tailwindcss@0.6.11(@ianvs/prettier-plugin-sort-imports@4.4.1(prettier@3.5.1))(prettier@3.5.1): + dependencies: + prettier: 3.5.1 + optionalDependencies: + '@ianvs/prettier-plugin-sort-imports': 4.4.1(prettier@3.5.1) + + prettier@3.5.1: {} + + process-nextick-args@2.0.1: {} + + progress@2.0.3: {} + + promise-inflight@1.0.1: {} + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + quick-lru@5.1.1: {} + + rc-cascader@3.33.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-select: 14.16.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tree: 5.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-checkbox@3.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-collapse@3.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-dialog@9.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-drawer@7.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-dropdown@4.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + '@rc-component/trigger': 2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-field-form@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + '@rc-component/async-validator': 5.0.4 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-image@7.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-dialog: 9.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-input-number@9.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + '@rc-component/mini-decimal': 1.1.0 + classnames: 2.5.1 + rc-input: 1.7.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-input@1.7.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-mentions@2.19.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + '@rc-component/trigger': 2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-input: 1.7.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-menu: 9.16.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-textarea: 1.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-menu@9.16.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + '@rc-component/trigger': 2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-overflow: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-motion@2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-notification@5.6.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-overflow@1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-pagination@5.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-picker@4.11.2(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + '@rc-component/trigger': 2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-overflow: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + dayjs: 1.11.13 + + rc-progress@4.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-rate@2.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-resize-observer@1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + resize-observer-polyfill: 1.5.1 + + rc-segmented@2.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-select@14.16.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + '@rc-component/trigger': 2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-overflow: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-virtual-list: 3.18.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-slider@11.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-steps@6.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-switch@4.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-table@7.50.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + '@rc-component/context': 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-virtual-list: 3.18.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-tabs@15.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-dropdown: 4.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-menu: 9.16.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-textarea@1.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-input: 1.7.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-tooltip@6.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + '@rc-component/trigger': 2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-tree-select@5.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-select: 14.16.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-tree: 5.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-tree@5.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-virtual-list: 3.18.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-upload@4.8.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + rc-util@5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-is: 18.3.1 + + rc-virtual-list@3.18.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + classnames: 2.5.1 + rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-i18next@15.4.1(i18next@24.2.2(typescript@5.7.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.26.9 + html-parse-stringify: 3.0.1 + i18next: 24.2.2(typescript@5.7.3) + react: 18.3.1 + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + + react-is@16.13.1: {} + + react-is@18.3.1: {} + + react-refresh@0.14.2: {} + + react-remove-scroll-bar@2.3.8(@types/react@18.3.18)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.3(@types/react@18.3.18)(react@18.3.1) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.18 + + react-remove-scroll@2.6.3(@types/react@18.3.18)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.8(@types/react@18.3.18)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.18)(react@18.3.1) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@18.3.18)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.18)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.18 + + react-responsive@10.0.0(react@18.3.1): + dependencies: + hyphenate-style-name: 1.1.0 + matchmediaquery: 0.4.2 + prop-types: 15.8.1 + react: 18.3.1 + shallow-equal: 3.1.0 + + react-simple-keyboard@3.8.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react-style-singleton@2.2.3(@types/react@18.3.18)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.18 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + read-binary-file-arch@1.0.6: + dependencies: + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdir-glob@1.1.3: + dependencies: + minimatch: 5.1.6 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.2.7 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regenerator-runtime@0.14.1: {} + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + require-directory@2.1.1: {} + + resedit@1.7.2: + dependencies: + pe-library: 0.4.1 + + resize-observer-polyfill@1.5.1: {} + + resolve-alpn@1.2.1: {} + + resolve-from@4.0.0: {} + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + responselike@2.0.1: + dependencies: + lowercase-keys: 2.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + retry@0.12.0: {} + + reusify@1.0.4: {} + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + roarr@2.15.4: + dependencies: + boolean: 3.2.0 + detect-node: 2.1.0 + globalthis: 1.0.4 + json-stringify-safe: 5.0.1 + semver-compare: 1.0.0 + sprintf-js: 1.1.3 + optional: true + + rollup@4.34.8: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.34.8 + '@rollup/rollup-android-arm64': 4.34.8 + '@rollup/rollup-darwin-arm64': 4.34.8 + '@rollup/rollup-darwin-x64': 4.34.8 + '@rollup/rollup-freebsd-arm64': 4.34.8 + '@rollup/rollup-freebsd-x64': 4.34.8 + '@rollup/rollup-linux-arm-gnueabihf': 4.34.8 + '@rollup/rollup-linux-arm-musleabihf': 4.34.8 + '@rollup/rollup-linux-arm64-gnu': 4.34.8 + '@rollup/rollup-linux-arm64-musl': 4.34.8 + '@rollup/rollup-linux-loongarch64-gnu': 4.34.8 + '@rollup/rollup-linux-powerpc64le-gnu': 4.34.8 + '@rollup/rollup-linux-riscv64-gnu': 4.34.8 + '@rollup/rollup-linux-s390x-gnu': 4.34.8 + '@rollup/rollup-linux-x64-gnu': 4.34.8 + '@rollup/rollup-linux-x64-musl': 4.34.8 + '@rollup/rollup-win32-arm64-msvc': 4.34.8 + '@rollup/rollup-win32-ia32-msvc': 4.34.8 + '@rollup/rollup-win32-x64-msvc': 4.34.8 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + get-intrinsic: 1.2.7 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safer-buffer@2.1.2: {} + + sanitize-filename@1.6.3: + dependencies: + truncate-utf8-bytes: 1.0.2 + + sax@1.4.1: {} + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + scroll-into-view-if-needed@3.1.0: + dependencies: + compute-scroll-into-view: 3.1.1 + + semver-compare@1.0.0: + optional: true + + semver@6.3.1: {} + + semver@7.7.1: {} + + serialize-error@7.0.1: + dependencies: + type-fest: 0.13.1 + optional: true + + serialport@13.0.0: + dependencies: + '@serialport/binding-mock': 10.2.2 + '@serialport/bindings-cpp': 13.0.0 + '@serialport/parser-byte-length': 13.0.0 + '@serialport/parser-cctalk': 13.0.0 + '@serialport/parser-delimiter': 13.0.0 + '@serialport/parser-inter-byte-timeout': 13.0.0 + '@serialport/parser-packet-length': 13.0.0 + '@serialport/parser-readline': 13.0.0 + '@serialport/parser-ready': 13.0.0 + '@serialport/parser-regex': 13.0.0 + '@serialport/parser-slip-encoder': 13.0.0 + '@serialport/parser-spacepacket': 13.0.0 + '@serialport/stream': 13.0.0 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + set-blocking@2.0.0: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.7 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + shallow-equal@3.1.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-update-notifier@2.0.0: + dependencies: + semver: 7.7.1 + + slice-ansi@3.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + optional: true + + smart-buffer@4.2.0: {} + + socks-proxy-agent@7.0.0: + dependencies: + agent-base: 6.0.2 + debug: 4.4.0 + socks: 2.8.4 + transitivePeerDependencies: + - supports-color + + socks@2.8.4: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + sprintf-js@1.1.3: {} + + ssri@9.0.1: + dependencies: + minipass: 3.3.6 + + stat-mode@1.0.0: {} + + string-convert@0.2.1: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.2.7 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.9 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-json-comments@3.1.1: {} + + stylis@4.3.6: {} + + sumchecker@3.0.1: + dependencies: + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + synckit@0.9.2: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.8.1 + + tailwindcss@4.0.6: {} + + tapable@2.2.1: {} + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + temp-file@3.4.0: + dependencies: + async-exit-hook: 2.0.1 + fs-extra: 10.1.0 + + throttle-debounce@5.0.2: {} + + tiny-typed-emitter@2.1.0: {} + + tmp-promise@3.0.3: + dependencies: + tmp: 0.2.3 + + tmp@0.2.3: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toggle-selection@1.0.6: {} + + truncate-utf8-bytes@1.0.2: + dependencies: + utf8-byte-length: 1.0.5 + + ts-api-utils@2.0.1(typescript@5.7.3): + dependencies: + typescript: 5.7.3 + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.13.1: + optional: true + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript-eslint@8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.24.1(eslint@9.20.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.20.1(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + typescript@5.7.3: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.3 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@6.19.8: {} + + undici-types@6.20.0: {} + + unique-filename@2.0.1: + dependencies: + unique-slug: 3.0.0 + + unique-slug@3.0.0: + dependencies: + imurmurhash: 0.1.4 + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + update-browserslist-db@1.1.2(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-callback-ref@1.3.3(@types/react@18.3.18)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.18 + + use-sidecar@1.1.3(@types/react@18.3.18)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.18 + + utf8-byte-length@1.0.5: {} + + util-deprecate@1.0.2: {} + + vaul@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@radix-ui/react-dialog': 1.1.6(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + verror@1.10.1: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.4.1 + optional: true + + vite@6.1.0(@types/node@22.13.4)(jiti@2.4.2)(lightningcss@1.29.1): + dependencies: + esbuild: 0.24.2 + postcss: 8.5.2 + rollup: 4.34.8 + optionalDependencies: + '@types/node': 22.13.4 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.1 + + void-elements@3.1.0: {} + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.3 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.18 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.18: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + for-each: 0.3.5 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + word-wrap@1.2.5: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + xmlbuilder@15.1.1: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yocto-queue@0.1.0: {} + + zip-stream@4.1.1: + dependencies: + archiver-utils: 3.0.4 + compress-commons: 4.1.2 + readable-stream: 3.6.2 diff --git a/desktop/resources/icon.png b/desktop/resources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..30f348c30a1411d847234e24b25de0399f2df8ae GIT binary patch literal 16383 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 aTf9DRx^X165#ELeyLQ@BU+!?f^#1{3a(^rU literal 0 HcmV?d00001 diff --git a/desktop/src/common/ipc-events.ts b/desktop/src/common/ipc-events.ts new file mode 100644 index 0000000..1192eaa --- /dev/null +++ b/desktop/src/common/ipc-events.ts @@ -0,0 +1,21 @@ +export enum IpcEvents { + GET_APP_VERSION = 'get-app-version', + OPEN_EXTERNAL_RUL = 'open-external-url', + REQUEST_MEDIA_PERMISSIONS = 'request-media-permissions', + + GET_SERIAL_PORTS = 'get-serial-ports', + OPEN_SERIAL_PORT = 'open-serial-port', + OPEN_SERIAL_PORT_RSP = 'open-serial-port-rsp', + CLOSE_SERIAL_PORT = 'close-serial-port', + SEND_KEYBOARD = 'send-keyboard', + SEND_MOUSE_RELATIVE = 'send-mouse-relative', + SEND_MOUSE_ABSOLUTE = 'send-mouse-absolute', + + UPDATE_AVAILABLE = 'update-available', + UPDATE_NOT_AVAILABLE = 'update-not-available', + UPDATE_ERROR = 'update-error', + DOWNLOAD_PROGRESS = 'download-progress', + UPDATE_DOWNLOADED = 'update-downloaded', + CHECK_FOR_UPDATES = 'check-for-updates', + DOWNLOAD_UPDATE = 'download-update' +} diff --git a/desktop/src/main/device/index.ts b/desktop/src/main/device/index.ts new file mode 100644 index 0000000..27a9dbe --- /dev/null +++ b/desktop/src/main/device/index.ts @@ -0,0 +1,58 @@ +import { CmdEvent, CmdPacket, InfoPacket } from './proto' +import { SerialPort } from './serial-port' +import { intToByte, intToLittleEndianList } from './utils' + +export class Device { + addr: number + serialPort: SerialPort + + constructor() { + this.addr = 0x00 + this.serialPort = new SerialPort() + } + + async getInfo(): Promise { + const data = new CmdPacket(this.addr, CmdEvent.GET_INFO).encode() + await this.serialPort.write(data) + + const rsp = await this.serialPort.read(14) + const rspPacket = new CmdPacket(-1, -1, rsp) + return new InfoPacket(rspPacket.DATA) + } + + async sendKeyboardData(modifier: number, key: number): Promise { + const data = [modifier, 0x00, 0x00, 0x00, key, 0x00, 0x00, 0x00] + const cmdData = new CmdPacket(this.addr, CmdEvent.SEND_KB_GENERAL_DATA, data).encode() + await this.serialPort.write(cmdData) + } + + async sendMouseRelativeData(key: number, x: number, y: number, scroll: number): Promise { + const xByte = intToByte(x) + const yByte = intToByte(y) + + const data = [0x01, key, xByte, yByte, scroll] + const cmdData = new CmdPacket(this.addr, CmdEvent.SEND_MS_REL_DATA, data).encode() + await this.serialPort.write(cmdData) + } + + async sendMouseAbsoluteData( + key: number, + width: number, + height: number, + x: number, + y: number, + scroll: number + ): Promise { + const xAbs = width === 0 ? 0 : Math.floor((x * 4096) / width) + const xLittle = intToLittleEndianList(xAbs) + + const yAbs = width === 0 ? 0 : Math.floor((y * 4096) / height) + const yLittle = intToLittleEndianList(yAbs) + + const data = [0x02, key, ...xLittle, ...yLittle, scroll] + const cmdData = new CmdPacket(this.addr, CmdEvent.SEND_MS_ABS_DATA, data).encode() + await this.serialPort.write(cmdData) + } +} + +export const device = new Device() diff --git a/desktop/src/main/device/proto.ts b/desktop/src/main/device/proto.ts new file mode 100644 index 0000000..8dc1884 --- /dev/null +++ b/desktop/src/main/device/proto.ts @@ -0,0 +1,134 @@ +import { getBit } from './utils' + +export enum CmdEvent { + GET_INFO = 0x01, + SEND_KB_GENERAL_DATA = 0x02, + SEND_KB_MEDIA_DATA = 0x03, + SEND_MS_ABS_DATA = 0x04, + SEND_MS_REL_DATA = 0x05, + SEND_MY_HID_DATA = 0x06, + READ_MY_HID_DATA = 0x87, + GET_PARA_CFG = 0x08, + SET_PARA_CFG = 0x09, + GET_USB_STRING = 0x0a, + SET_USB_STRING = 0x0b, + SET_DEFAULT_CFG = 0x0c, + RESET = 0x0f +} + +export class CmdPacket { + readonly HEAD1: number = 0x57 + readonly HEAD2: number = 0xab + + ADDR: number = 0x00 + CMD: number = 0x00 + LEN: number = 0x00 + DATA: number[] = [] + SUM: number = 0x00 + + constructor(addr: number = 0x00, cmd: number = 0x00, data: number[] = []) { + if (addr < 0 || cmd < 0) { + this.decode(data) + return + } + this.save(addr, cmd, data) + } + + encode(): number[] { + return [this.HEAD1, this.HEAD2, this.ADDR, this.CMD, this.LEN, ...this.DATA, this.SUM] + } + + public decode(data: number[]): number { + const headerIndex = this.findHead(data) + if (headerIndex < 0) { + console.log('cannot find HEAD') + return -1 + } + + if (data.length - headerIndex < 6) { + console.log('len error1') + return -1 + } + + const addr = data[headerIndex + 2] + const cmd = data[headerIndex + 3] + const dataLen = data[headerIndex + 4] + + if (data.length < headerIndex + 3 + dataLen + 1) { + console.log('len error2') + return -1 + } + + let sum: number + try { + sum = data[headerIndex + 5 + dataLen] + } catch { + console.log('len error3') + return -1 + } + + let s = 0 + for (let i = headerIndex; i < headerIndex + 4 + dataLen; i++) { + s += data[i] + } + + if ((s & 0xff) !== sum) { + // console.log(`sum error, sum${sum}, s${s & 0xff}`); + return -1 + } + + this.ADDR = addr + this.CMD = cmd + this.LEN = dataLen + this.DATA = data.slice(headerIndex + 5, headerIndex + 5 + this.LEN) + this.SUM = sum + return 0 + } + + private findHead(lst: number[]): number { + const subsequence = [this.HEAD1, this.HEAD2] + const subseqLen = subsequence.length + for (let i = 0; i <= lst.length - subseqLen; i++) { + if (lst.slice(i, i + subseqLen).every((val, index) => val === subsequence[index])) { + return i + } + } + return -1 + } + + private save(addr: number, cmd: number, data: number[]): void { + this.ADDR = addr + this.CMD = cmd + this.DATA = data + this.LEN = data.length + this.SUM = this.HEAD1 + this.HEAD2 + this.ADDR + this.CMD + this.LEN + for (const i of this.DATA) { + this.SUM += i + } + this.SUM &= 0xff + } +} + +export class InfoPacket { + CHIP_VERSION: string = 'V0.0' + IS_CONNECTED: boolean = false + NUM_LOCK: boolean = false + CAPS_LOCK: boolean = false + SCROLL_LOCK: boolean = false + + constructor(data: number[]) { + if (data[0] < 0x30) { + throw new Error('version error') + } + + const versionE = data[0] - 0x30 + const version = 1.0 + versionE / 10 + this.CHIP_VERSION = `V${version.toFixed(1)}` + + this.IS_CONNECTED = data[1] !== 0 + + this.NUM_LOCK = getBit(data[2], 0) === 1 + this.CAPS_LOCK = getBit(data[2], 1) === 1 + this.SCROLL_LOCK = getBit(data[2], 2) === 1 + } +} diff --git a/desktop/src/main/device/serial-port.ts b/desktop/src/main/device/serial-port.ts new file mode 100644 index 0000000..248a783 --- /dev/null +++ b/desktop/src/main/device/serial-port.ts @@ -0,0 +1,81 @@ +import { SerialPort as SP } from 'serialport' + +export class SerialPort { + port: SP | null + readonly TIMEOUT = 500 // 500ms + + constructor() { + this.port = null + } + + async init( + path: string, + baudRate: number = 57600, + onOpen: (err: Error | null) => void + ): Promise { + try { + if (this.port?.isOpen) { + await this.close() + } + + this.port = new SP({ path, baudRate }, (err) => { + if (err) { + console.error('Error opening port: ', err.message) + } + onOpen(err) + }) + } catch (err) { + console.error('Error opening serial port:', err) + throw err + } + } + + async write(data: number[]): Promise { + if (!this.port?.isOpen) { + // throw new Error('Serial port not initialized') + return + } + + const uint8Array = new Uint8Array(data) + this.port.write(uint8Array) + } + + async read(minSize: number, sleep: number = 0): Promise { + if (!this.port?.isOpen) { + throw new Error('Serial port not initialized') + } + + const result: number[] = [] + const startTime = Date.now() + + while (result.length < minSize) { + if (Date.now() - startTime > this.TIMEOUT) { + return [] + } + + const { value, done } = await this.port.read() + if (done) { + break + } + + const data = Array.from(value) as number[] + result.push(...data) + } + + if (sleep > 0) { + await new Promise((resolve) => setTimeout(resolve, sleep)) + } + + return result + } + + async close(): Promise { + if (this.port?.isOpen) { + try { + this.port.close() + } catch (error) { + console.error('close-serial-port error', error) + } + } + } +} diff --git a/desktop/src/main/device/utils.ts b/desktop/src/main/device/utils.ts new file mode 100644 index 0000000..67d5e08 --- /dev/null +++ b/desktop/src/main/device/utils.ts @@ -0,0 +1,18 @@ +export function getBit(number: number, bitPosition: number): number { + return (number >> bitPosition) & 1 +} + +export function intToByte(value: number): number { + if (value < -128 || value > 127) { + throw new Error('value must be in range -128 to 127 for a signed byte') + } + return (value + 256) % 256 +} + +export function intToLittleEndianList(number: number): number[] { + const byteList: number[] = [] + for (let i = 0; i < 2; i++) { + byteList.push((number >> (i * 8)) & 0xff) + } + return byteList +} diff --git a/desktop/src/main/events/app.ts b/desktop/src/main/events/app.ts new file mode 100644 index 0000000..2659abf --- /dev/null +++ b/desktop/src/main/events/app.ts @@ -0,0 +1,42 @@ +import { app, ipcMain, shell, systemPreferences } from 'electron' +import type { IpcMainEvent, OpenExternalOptions } from 'electron' + +import { IpcEvents } from '../../common/ipc-events' + +export function registerApp(): void { + ipcMain.handle(IpcEvents.GET_APP_VERSION, getAppVersion) + ipcMain.on(IpcEvents.OPEN_EXTERNAL_RUL, openExternalUrl) + ipcMain.handle(IpcEvents.REQUEST_MEDIA_PERMISSIONS, requestMediaPermissions) +} + +function getAppVersion(): string { + return app.getVersion() +} + +function openExternalUrl(_: IpcMainEvent, url: string, options?: OpenExternalOptions): void { + shell.openExternal(url, options).catch(console.error) +} + +async function requestMediaPermissions(): Promise<{ + camera: boolean + microphone: boolean +}> { + const camera = await grant('camera') + const microphone = await grant('microphone') + + return { camera, microphone } +} + +async function grant(media: 'camera' | 'microphone'): Promise { + try { + const status = systemPreferences.getMediaAccessStatus(media) + if (status === 'granted') { + return true + } + + return await systemPreferences.askForMediaAccess(media) + } catch (error) { + console.error('Error request permission:', error) + return false + } +} diff --git a/desktop/src/main/events/index.ts b/desktop/src/main/events/index.ts new file mode 100644 index 0000000..2ad88c1 --- /dev/null +++ b/desktop/src/main/events/index.ts @@ -0,0 +1,3 @@ +export * from './app' +export * from './serial-port' +export * from './updater' diff --git a/desktop/src/main/events/serial-port.ts b/desktop/src/main/events/serial-port.ts new file mode 100644 index 0000000..fbc005b --- /dev/null +++ b/desktop/src/main/events/serial-port.ts @@ -0,0 +1,89 @@ +import { ipcMain, IpcMainInvokeEvent } from 'electron' +import { SerialPort } from 'serialport' + +import { IpcEvents } from '../../common/ipc-events' +import { device } from '../device' + +export function registerSerialPort(): void { + ipcMain.handle(IpcEvents.GET_SERIAL_PORTS, getSerialPorts) + ipcMain.handle(IpcEvents.OPEN_SERIAL_PORT, openSerialPort) + ipcMain.handle(IpcEvents.CLOSE_SERIAL_PORT, closeSerialPort) + ipcMain.handle(IpcEvents.SEND_KEYBOARD, sendKeyboard) + ipcMain.handle(IpcEvents.SEND_MOUSE_ABSOLUTE, sendMouseAbsolute) + ipcMain.handle(IpcEvents.SEND_MOUSE_RELATIVE, sendMouseRelative) +} + +async function getSerialPorts(): Promise { + try { + const ports = await SerialPort.list() + return ports.map((port) => port.path) + } catch (error) { + console.error('Error listing serial ports:', error) + return [] + } +} + +async function openSerialPort( + e: IpcMainInvokeEvent, + path: string, + baudRate = 57600 +): Promise { + try { + await device.serialPort.init(path, baudRate, (err) => { + const msg = err ? err.message : '' + e.sender.send(IpcEvents.OPEN_SERIAL_PORT_RSP, msg) + }) + return true + } catch (error) { + console.error('Error opening serial port:', error) + return false + } +} + +async function closeSerialPort(): Promise { + try { + await device.serialPort.close() + return true + } catch (error) { + console.error('Error closing serial port:', error) + return false + } +} + +async function sendKeyboard(_: IpcMainInvokeEvent, modifier: number, key: number): Promise { + try { + await device.sendKeyboardData(modifier, key) + } catch (error) { + console.error('Error sending keyboard data:', error) + } +} + +async function sendMouseRelative( + _: IpcMainInvokeEvent, + key: number, + x: number, + y: number, + scroll: number +): Promise { + try { + await device.sendMouseRelativeData(key, x, y, scroll) + } catch (error) { + console.error('Error sending mouse relative data:', error) + } +} + +async function sendMouseAbsolute( + _: IpcMainInvokeEvent, + key: number, + width: number, + height: number, + x: number, + y: number, + scroll: number +): Promise { + try { + await device.sendMouseAbsoluteData(key, width, height, x, y, scroll) + } catch (error) { + console.error('Error sending mouse absolute data:', error) + } +} diff --git a/desktop/src/main/events/updater.ts b/desktop/src/main/events/updater.ts new file mode 100644 index 0000000..e4ab431 --- /dev/null +++ b/desktop/src/main/events/updater.ts @@ -0,0 +1,50 @@ +import { BrowserWindow, ipcMain } from 'electron' +import { autoUpdater, UpdateInfo } from 'electron-updater' + +import { IpcEvents } from '../../common/ipc-events' + +autoUpdater.autoDownload = false +autoUpdater.forceDevUpdateConfig = true + +export function registerUpdater(win: BrowserWindow): void { + autoUpdater.on('update-available', (info) => { + win.webContents.send(IpcEvents.UPDATE_AVAILABLE, info) + }) + + autoUpdater.on('update-not-available', () => { + win.webContents.send(IpcEvents.UPDATE_NOT_AVAILABLE) + }) + + autoUpdater.on('error', (err) => { + console.error(err) + win.webContents.send(IpcEvents.UPDATE_ERROR) + }) + + autoUpdater.on('download-progress', (progressObj) => { + const percent = Math.ceil(progressObj.percent) + win.webContents.send(IpcEvents.DOWNLOAD_PROGRESS, percent) + }) + + autoUpdater.on('update-downloaded', () => { + win.webContents.send(IpcEvents.UPDATE_DOWNLOADED) + setImmediate(() => autoUpdater.quitAndInstall()) + }) + + ipcMain.handle(IpcEvents.CHECK_FOR_UPDATES, async (): Promise => { + try { + const result = await autoUpdater.checkForUpdates() + return result?.updateInfo + } catch (e) { + console.error(e) + return + } + }) + + ipcMain.on(IpcEvents.DOWNLOAD_UPDATE, () => { + try { + autoUpdater.downloadUpdate() + } catch (e) { + console.error(e) + } + }) +} diff --git a/desktop/src/main/index.ts b/desktop/src/main/index.ts new file mode 100644 index 0000000..f0bc571 --- /dev/null +++ b/desktop/src/main/index.ts @@ -0,0 +1,66 @@ +import { join } from 'path' +import { electronApp, is, optimizer } from '@electron-toolkit/utils' +import { app, BrowserWindow, shell } from 'electron' +import log from 'electron-log/main' + +import icon from '../../resources/icon.png?asset' +import * as events from './events' + +console.error = log.error + +let mainWindow: BrowserWindow + +function createWindow(): void { + mainWindow = new BrowserWindow({ + width: 800, + height: 600, + show: false, + autoHideMenuBar: true, + ...(process.platform === 'linux' ? { icon } : {}), + webPreferences: { + preload: join(__dirname, '../preload/index.js'), + sandbox: false + } + }) + + mainWindow.on('ready-to-show', () => { + mainWindow.show() + mainWindow.maximize() + }) + + mainWindow.webContents.setWindowOpenHandler((details) => { + shell.openExternal(details.url) + return { action: 'deny' } + }) + + if (is.dev && process.env['ELECTRON_RENDERER_URL']) { + mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL']) + } else { + mainWindow.loadFile(join(__dirname, '../renderer/index.html')) + } +} + +app.whenReady().then(() => { + electronApp.setAppUserModelId('com.sipeed.usbkvm') + + app.on('browser-window-created', (_, window) => { + optimizer.watchWindowShortcuts(window) + }) + + events.registerApp() + events.registerSerialPort() + + createWindow() + + events.registerUpdater(mainWindow) + + app.on('activate', function () { + if (BrowserWindow.getAllWindows().length === 0) createWindow() + }) +}) + +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit() + } +}) diff --git a/desktop/src/preload/index.d.ts b/desktop/src/preload/index.d.ts new file mode 100644 index 0000000..a153669 --- /dev/null +++ b/desktop/src/preload/index.d.ts @@ -0,0 +1,8 @@ +import { ElectronAPI } from '@electron-toolkit/preload' + +declare global { + interface Window { + electron: ElectronAPI + api: unknown + } +} diff --git a/desktop/src/preload/index.ts b/desktop/src/preload/index.ts new file mode 100644 index 0000000..2d18524 --- /dev/null +++ b/desktop/src/preload/index.ts @@ -0,0 +1,22 @@ +import { contextBridge } from 'electron' +import { electronAPI } from '@electron-toolkit/preload' + +// Custom APIs for renderer +const api = {} + +// Use `contextBridge` APIs to expose Electron APIs to +// renderer only if context isolation is enabled, otherwise +// just add to the DOM global. +if (process.contextIsolated) { + try { + contextBridge.exposeInMainWorld('electron', electronAPI) + contextBridge.exposeInMainWorld('api', api) + } catch (error) { + console.error(error) + } +} else { + // @ts-ignore (define in dts) + window.electron = electronAPI + // @ts-ignore (define in dts) + window.api = api +} diff --git a/desktop/src/renderer/index.html b/desktop/src/renderer/index.html new file mode 100644 index 0000000..a538144 --- /dev/null +++ b/desktop/src/renderer/index.html @@ -0,0 +1,16 @@ + + + + + NanoKVM-USB + + + + +

+ + + diff --git a/desktop/src/renderer/src/App.tsx b/desktop/src/renderer/src/App.tsx new file mode 100644 index 0000000..c769542 --- /dev/null +++ b/desktop/src/renderer/src/App.tsx @@ -0,0 +1,128 @@ +import { ReactElement, useEffect, useState } from 'react' +import { Result, Spin } from 'antd' +import clsx from 'clsx' +import { useAtomValue, useSetAtom } from 'jotai' +import { useTranslation } from 'react-i18next' +import { useMediaQuery } from 'react-responsive' + +import { IpcEvents } from '@common/ipc-events' +import { DeviceModal } from '@renderer/components/device-modal' +import { Keyboard } from '@renderer/components/keyboard' +import { Menu } from '@renderer/components/menu' +import { Mouse } from '@renderer/components/mouse' +import { VirtualKeyboard } from '@renderer/components/virtual-keyboard' +import { resolutionAtom, serialPortStateAtom, videoStateAtom } from '@renderer/jotai/device' +import { isKeyboardEnableAtom } from '@renderer/jotai/keyboard' +import { mouseStyleAtom } from '@renderer/jotai/mouse' +import { camera } from '@renderer/libs/camera' +import { getVideoResolution } from '@renderer/libs/storage' +import type { Resolution } from '@renderer/types' + +type State = 'loading' | 'success' | 'failed' + +const App = (): ReactElement => { + const { t } = useTranslation() + const isBigScreen = useMediaQuery({ minWidth: 850 }) + + const videoState = useAtomValue(videoStateAtom) + const serialPortState = useAtomValue(serialPortStateAtom) + const mouseStyle = useAtomValue(mouseStyleAtom) + const isKeyboardEnable = useAtomValue(isKeyboardEnableAtom) + const setResolution = useSetAtom(resolutionAtom) + + const [state, setState] = useState('loading') + const [isConnected, setIsConnected] = useState(false) + + useEffect(() => { + const resolution = getVideoResolution() + if (resolution) { + setResolution(resolution) + } + + requestMediaPermissions(resolution) + + return (): void => { + camera.close() + window.electron.ipcRenderer.invoke(IpcEvents.CLOSE_SERIAL_PORT) + } + }, []) + + useEffect(() => { + setIsConnected(videoState === 'connected' && serialPortState === 'connected') + }, [videoState, serialPortState]) + + async function requestMediaPermissions(resolution?: Resolution): Promise { + try { + if (window.electron.process.platform === 'darwin') { + const res = await window.electron.ipcRenderer.invoke(IpcEvents.REQUEST_MEDIA_PERMISSIONS) + + if (!res.camera) { + setState('failed') + return + } + } else { + const stream = await navigator.mediaDevices.getUserMedia({ + video: { + width: { ideal: resolution?.width || 1920 }, + height: { ideal: resolution?.height || 1080 } + }, + audio: true + }) + stream.getTracks().forEach((track) => track.stop()) + } + + setState('success') + } catch (err) { + console.log('failed to request media permissions: ', err) + if (err instanceof Error && ['NotAllowedError', 'PermissionDeniedError'].includes(err.name)) { + setState('failed') + } else { + setState('success') + } + } + } + + if (state === 'loading') { + return + } + + if (state === 'failed') { + return ( + + {t('camera.authorize')} + + ]} + /> + ) + } + + return ( + <> + {isConnected ? ( + <> + + + {isKeyboardEnable && } + + ) : ( + + )} + +