From 7417a820dd8b781a145c18c31e4266704a42edfb Mon Sep 17 00:00:00 2001 From: Tyler Biscoe Date: Mon, 9 Feb 2026 08:36:24 -0500 Subject: [PATCH 1/7] tauri frontend --- OPUS-tauri-app/.gitignore | 5 + OPUS-tauri-app/index.html | 12 + OPUS-tauri-app/package-lock.json | 2162 +++++++ OPUS-tauri-app/package.json | 35 + OPUS-tauri-app/src-tauri/Cargo.lock | 5402 +++++++++++++++++ OPUS-tauri-app/src-tauri/Cargo.toml | 24 + OPUS-tauri-app/src-tauri/build.rs | 3 + .../src-tauri/capabilities/default.json | 14 + .../src-tauri/gen/schemas/acl-manifests.json | 1 + .../src-tauri/gen/schemas/capabilities.json | 1 + .../src-tauri/gen/schemas/desktop-schema.json | 2477 ++++++++ .../src-tauri/gen/schemas/macOS-schema.json | 2477 ++++++++ OPUS-tauri-app/src-tauri/icons/128x128.png | Bin 0 -> 359 bytes OPUS-tauri-app/src-tauri/icons/128x128@2x.png | Bin 0 -> 856 bytes OPUS-tauri-app/src-tauri/icons/32x32.png | Bin 0 -> 103 bytes OPUS-tauri-app/src-tauri/src/cli/env.rs | 50 + OPUS-tauri-app/src-tauri/src/cli/mod.rs | 3 + OPUS-tauri-app/src-tauri/src/cli/paths.rs | 46 + OPUS-tauri-app/src-tauri/src/cli/runner.rs | 34 + .../src-tauri/src/commands/context.rs | 51 + .../src-tauri/src/commands/diagnostics.rs | 118 + OPUS-tauri-app/src-tauri/src/commands/diff.rs | 70 + .../src-tauri/src/commands/github.rs | 212 + .../src-tauri/src/commands/migrations.rs | 74 + OPUS-tauri-app/src-tauri/src/commands/mod.rs | 9 + OPUS-tauri-app/src-tauri/src/commands/pty.rs | 332 + .../src-tauri/src/commands/repos.rs | 75 + .../src-tauri/src/commands/worksets.rs | 69 + .../src-tauri/src/commands/workspaces.rs | 131 + .../src-tauri/src/diff_engine/mod.rs | 3 + .../src-tauri/src/diff_engine/patch.rs | 75 + .../src-tauri/src/diff_engine/summary.rs | 201 + .../src-tauri/src/diff_engine/watcher.rs | 74 + .../src-tauri/src/jobs/migration.rs | 159 + OPUS-tauri-app/src-tauri/src/jobs/mod.rs | 1 + OPUS-tauri-app/src-tauri/src/lib.rs | 66 + OPUS-tauri-app/src-tauri/src/main.rs | 5 + .../src-tauri/src/sessiond/client.rs | 220 + .../src-tauri/src/sessiond/lifecycle.rs | 31 + OPUS-tauri-app/src-tauri/src/sessiond/mod.rs | 3 + .../src-tauri/src/sessiond/protocol.rs | 163 + OPUS-tauri-app/src-tauri/src/state.rs | 37 + OPUS-tauri-app/src-tauri/src/store/layout.rs | 67 + .../src-tauri/src/store/migrations.rs | 25 + OPUS-tauri-app/src-tauri/src/store/mod.rs | 4 + .../src-tauri/src/store/ui_context.rs | 77 + .../src-tauri/src/store/workset_profiles.rs | 172 + OPUS-tauri-app/src-tauri/src/types/context.rs | 9 + .../src-tauri/src/types/diagnostics.rs | 31 + OPUS-tauri-app/src-tauri/src/types/diff.rs | 30 + OPUS-tauri-app/src-tauri/src/types/error.rs | 56 + OPUS-tauri-app/src-tauri/src/types/job.rs | 22 + OPUS-tauri-app/src-tauri/src/types/layout.rs | 37 + OPUS-tauri-app/src-tauri/src/types/mod.rs | 10 + OPUS-tauri-app/src-tauri/src/types/pty.rs | 30 + OPUS-tauri-app/src-tauri/src/types/repo.rs | 29 + OPUS-tauri-app/src-tauri/src/types/workset.rs | 25 + .../src-tauri/src/types/workspace.rs | 46 + OPUS-tauri-app/src-tauri/tauri.conf.json | 39 + OPUS-tauri-app/src/App.tsx | 53 + OPUS-tauri-app/src/api/context.ts | 14 + OPUS-tauri-app/src/api/diagnostics.ts | 22 + OPUS-tauri-app/src/api/diff.ts | 31 + OPUS-tauri-app/src/api/events.ts | 5 + OPUS-tauri-app/src/api/github.ts | 18 + OPUS-tauri-app/src/api/invoke.ts | 5 + OPUS-tauri-app/src/api/migrations.ts | 26 + OPUS-tauri-app/src/api/pty.ts | 52 + OPUS-tauri-app/src/api/repos.ts | 6 + OPUS-tauri-app/src/api/worksets.ts | 26 + OPUS-tauri-app/src/api/workspaces.ts | 18 + .../src/components/diff/DiffFileRow.css | 59 + .../src/components/diff/DiffFileRow.tsx | 35 + .../src/components/diff/DiffNavigator.css | 39 + .../src/components/diff/DiffNavigator.tsx | 123 + .../src/components/diff/DiffRenderer.css | 71 + .../src/components/diff/DiffRenderer.tsx | 49 + .../src/components/diff/DiffRepoGroup.css | 58 + .../src/components/diff/DiffRepoGroup.tsx | 45 + .../src/components/diff/DiffTabView.tsx | 74 + .../src/components/layout/AppShell.css | 50 + .../src/components/layout/AppShell.tsx | 26 + .../src/components/layout/IconRail.css | 41 + .../src/components/layout/IconRail.tsx | 30 + .../src/components/layout/RightPanel.css | 29 + .../src/components/layout/RightPanel.tsx | 26 + .../components/layout/SecondarySidebar.css | 73 + .../components/layout/SecondarySidebar.tsx | 73 + .../src/components/layout/TopChrome.css | 168 + .../src/components/layout/TopChrome.tsx | 117 + .../modals/MigrationStatusModal.css | 80 + .../modals/MigrationStatusModal.tsx | 154 + .../src/components/modals/Modal.css | 138 + .../modals/RepoRemoveConfirmModal.tsx | 87 + .../components/modals/WorksetCreateModal.tsx | 387 ++ .../pages/CommandCenter/CommandCenterPage.css | 444 ++ .../pages/CommandCenter/CommandCenterPage.tsx | 598 ++ .../pages/Settings/SettingsPage.css | 118 + .../pages/Settings/SettingsPage.tsx | 208 + .../pages/Spaces/CreateTabModal.css | 43 + .../pages/Spaces/CreateTabModal.tsx | 59 + .../pages/Spaces/CreateWorkspaceModal.tsx | 96 + .../components/pages/Spaces/SpacesPage.css | 14 + .../components/pages/Spaces/SpacesPage.tsx | 182 + .../components/pages/Spaces/TabContent.css | 15 + .../components/pages/Spaces/TabContent.tsx | 50 + .../src/components/pages/Spaces/TabStrip.css | 100 + .../src/components/pages/Spaces/TabStrip.tsx | 89 + .../pages/Spaces/TerminalLayoutNode.css | 26 + .../pages/Spaces/TerminalLayoutNode.tsx | 57 + .../pages/Spaces/TerminalSurface.css | 24 + .../pages/Spaces/TerminalSurface.tsx | 261 + .../components/pages/Spaces/WorkspaceItem.css | 104 + .../components/pages/Spaces/WorkspaceItem.tsx | 80 + .../components/pages/Spaces/WorkspaceList.css | 12 + .../components/pages/Spaces/WorkspaceList.tsx | 49 + OPUS-tauri-app/src/components/ui/Button.css | 60 + OPUS-tauri-app/src/components/ui/Button.tsx | 16 + .../src/components/ui/EmptyState.css | 31 + .../src/components/ui/EmptyState.tsx | 20 + OPUS-tauri-app/src/components/ui/Input.css | 25 + OPUS-tauri-app/src/components/ui/Input.tsx | 8 + .../src/components/ui/StatusRow.css | 34 + .../src/components/ui/StatusRow.tsx | 27 + OPUS-tauri-app/src/hooks/useTauriEvent.ts | 19 + OPUS-tauri-app/src/main.tsx | 10 + OPUS-tauri-app/src/state/slices/diffSlice.ts | 62 + .../src/state/slices/layoutSlice.ts | 144 + OPUS-tauri-app/src/state/slices/ptySlice.ts | 115 + OPUS-tauri-app/src/state/slices/uiSlice.ts | 39 + .../src/state/slices/worksetSlice.ts | 90 + .../src/state/slices/workspaceSlice.ts | 42 + OPUS-tauri-app/src/state/store.ts | 18 + OPUS-tauri-app/src/styles/fonts.css | 2 + OPUS-tauri-app/src/styles/global.css | 73 + OPUS-tauri-app/src/styles/tokens.css | 57 + OPUS-tauri-app/src/types/context.ts | 4 + OPUS-tauri-app/src/types/diagnostics.ts | 25 + OPUS-tauri-app/src/types/diff.ts | 22 + OPUS-tauri-app/src/types/errors.ts | 10 + OPUS-tauri-app/src/types/github.ts | 16 + OPUS-tauri-app/src/types/index.ts | 11 + OPUS-tauri-app/src/types/jobs.ts | 15 + OPUS-tauri-app/src/types/layout.ts | 35 + OPUS-tauri-app/src/types/pty.ts | 15 + OPUS-tauri-app/src/types/repo.ts | 8 + OPUS-tauri-app/src/types/workset.ts | 15 + OPUS-tauri-app/src/types/workspace.ts | 29 + OPUS-tauri-app/src/vite-env.d.ts | 1 + OPUS-tauri-app/tsconfig.json | 23 + OPUS-tauri-app/vite.config.ts | 22 + docs/tauri-product-spec.md | 954 +++ internal/git/cli.go | 23 +- internal/git/cli_test.go | 26 + pkg/worksetapi/env_bootstrap.go | 31 +- pkg/worksetapi/env_bootstrap_test.go | 32 + 156 files changed, 22776 insertions(+), 4 deletions(-) create mode 100644 OPUS-tauri-app/.gitignore create mode 100644 OPUS-tauri-app/index.html create mode 100644 OPUS-tauri-app/package-lock.json create mode 100644 OPUS-tauri-app/package.json create mode 100644 OPUS-tauri-app/src-tauri/Cargo.lock create mode 100644 OPUS-tauri-app/src-tauri/Cargo.toml create mode 100644 OPUS-tauri-app/src-tauri/build.rs create mode 100644 OPUS-tauri-app/src-tauri/capabilities/default.json create mode 100644 OPUS-tauri-app/src-tauri/gen/schemas/acl-manifests.json create mode 100644 OPUS-tauri-app/src-tauri/gen/schemas/capabilities.json create mode 100644 OPUS-tauri-app/src-tauri/gen/schemas/desktop-schema.json create mode 100644 OPUS-tauri-app/src-tauri/gen/schemas/macOS-schema.json create mode 100644 OPUS-tauri-app/src-tauri/icons/128x128.png create mode 100644 OPUS-tauri-app/src-tauri/icons/128x128@2x.png create mode 100644 OPUS-tauri-app/src-tauri/icons/32x32.png create mode 100644 OPUS-tauri-app/src-tauri/src/cli/env.rs create mode 100644 OPUS-tauri-app/src-tauri/src/cli/mod.rs create mode 100644 OPUS-tauri-app/src-tauri/src/cli/paths.rs create mode 100644 OPUS-tauri-app/src-tauri/src/cli/runner.rs create mode 100644 OPUS-tauri-app/src-tauri/src/commands/context.rs create mode 100644 OPUS-tauri-app/src-tauri/src/commands/diagnostics.rs create mode 100644 OPUS-tauri-app/src-tauri/src/commands/diff.rs create mode 100644 OPUS-tauri-app/src-tauri/src/commands/github.rs create mode 100644 OPUS-tauri-app/src-tauri/src/commands/migrations.rs create mode 100644 OPUS-tauri-app/src-tauri/src/commands/mod.rs create mode 100644 OPUS-tauri-app/src-tauri/src/commands/pty.rs create mode 100644 OPUS-tauri-app/src-tauri/src/commands/repos.rs create mode 100644 OPUS-tauri-app/src-tauri/src/commands/worksets.rs create mode 100644 OPUS-tauri-app/src-tauri/src/commands/workspaces.rs create mode 100644 OPUS-tauri-app/src-tauri/src/diff_engine/mod.rs create mode 100644 OPUS-tauri-app/src-tauri/src/diff_engine/patch.rs create mode 100644 OPUS-tauri-app/src-tauri/src/diff_engine/summary.rs create mode 100644 OPUS-tauri-app/src-tauri/src/diff_engine/watcher.rs create mode 100644 OPUS-tauri-app/src-tauri/src/jobs/migration.rs create mode 100644 OPUS-tauri-app/src-tauri/src/jobs/mod.rs create mode 100644 OPUS-tauri-app/src-tauri/src/lib.rs create mode 100644 OPUS-tauri-app/src-tauri/src/main.rs create mode 100644 OPUS-tauri-app/src-tauri/src/sessiond/client.rs create mode 100644 OPUS-tauri-app/src-tauri/src/sessiond/lifecycle.rs create mode 100644 OPUS-tauri-app/src-tauri/src/sessiond/mod.rs create mode 100644 OPUS-tauri-app/src-tauri/src/sessiond/protocol.rs create mode 100644 OPUS-tauri-app/src-tauri/src/state.rs create mode 100644 OPUS-tauri-app/src-tauri/src/store/layout.rs create mode 100644 OPUS-tauri-app/src-tauri/src/store/migrations.rs create mode 100644 OPUS-tauri-app/src-tauri/src/store/mod.rs create mode 100644 OPUS-tauri-app/src-tauri/src/store/ui_context.rs create mode 100644 OPUS-tauri-app/src-tauri/src/store/workset_profiles.rs create mode 100644 OPUS-tauri-app/src-tauri/src/types/context.rs create mode 100644 OPUS-tauri-app/src-tauri/src/types/diagnostics.rs create mode 100644 OPUS-tauri-app/src-tauri/src/types/diff.rs create mode 100644 OPUS-tauri-app/src-tauri/src/types/error.rs create mode 100644 OPUS-tauri-app/src-tauri/src/types/job.rs create mode 100644 OPUS-tauri-app/src-tauri/src/types/layout.rs create mode 100644 OPUS-tauri-app/src-tauri/src/types/mod.rs create mode 100644 OPUS-tauri-app/src-tauri/src/types/pty.rs create mode 100644 OPUS-tauri-app/src-tauri/src/types/repo.rs create mode 100644 OPUS-tauri-app/src-tauri/src/types/workset.rs create mode 100644 OPUS-tauri-app/src-tauri/src/types/workspace.rs create mode 100644 OPUS-tauri-app/src-tauri/tauri.conf.json create mode 100644 OPUS-tauri-app/src/App.tsx create mode 100644 OPUS-tauri-app/src/api/context.ts create mode 100644 OPUS-tauri-app/src/api/diagnostics.ts create mode 100644 OPUS-tauri-app/src/api/diff.ts create mode 100644 OPUS-tauri-app/src/api/events.ts create mode 100644 OPUS-tauri-app/src/api/github.ts create mode 100644 OPUS-tauri-app/src/api/invoke.ts create mode 100644 OPUS-tauri-app/src/api/migrations.ts create mode 100644 OPUS-tauri-app/src/api/pty.ts create mode 100644 OPUS-tauri-app/src/api/repos.ts create mode 100644 OPUS-tauri-app/src/api/worksets.ts create mode 100644 OPUS-tauri-app/src/api/workspaces.ts create mode 100644 OPUS-tauri-app/src/components/diff/DiffFileRow.css create mode 100644 OPUS-tauri-app/src/components/diff/DiffFileRow.tsx create mode 100644 OPUS-tauri-app/src/components/diff/DiffNavigator.css create mode 100644 OPUS-tauri-app/src/components/diff/DiffNavigator.tsx create mode 100644 OPUS-tauri-app/src/components/diff/DiffRenderer.css create mode 100644 OPUS-tauri-app/src/components/diff/DiffRenderer.tsx create mode 100644 OPUS-tauri-app/src/components/diff/DiffRepoGroup.css create mode 100644 OPUS-tauri-app/src/components/diff/DiffRepoGroup.tsx create mode 100644 OPUS-tauri-app/src/components/diff/DiffTabView.tsx create mode 100644 OPUS-tauri-app/src/components/layout/AppShell.css create mode 100644 OPUS-tauri-app/src/components/layout/AppShell.tsx create mode 100644 OPUS-tauri-app/src/components/layout/IconRail.css create mode 100644 OPUS-tauri-app/src/components/layout/IconRail.tsx create mode 100644 OPUS-tauri-app/src/components/layout/RightPanel.css create mode 100644 OPUS-tauri-app/src/components/layout/RightPanel.tsx create mode 100644 OPUS-tauri-app/src/components/layout/SecondarySidebar.css create mode 100644 OPUS-tauri-app/src/components/layout/SecondarySidebar.tsx create mode 100644 OPUS-tauri-app/src/components/layout/TopChrome.css create mode 100644 OPUS-tauri-app/src/components/layout/TopChrome.tsx create mode 100644 OPUS-tauri-app/src/components/modals/MigrationStatusModal.css create mode 100644 OPUS-tauri-app/src/components/modals/MigrationStatusModal.tsx create mode 100644 OPUS-tauri-app/src/components/modals/Modal.css create mode 100644 OPUS-tauri-app/src/components/modals/RepoRemoveConfirmModal.tsx create mode 100644 OPUS-tauri-app/src/components/modals/WorksetCreateModal.tsx create mode 100644 OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.css create mode 100644 OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.tsx create mode 100644 OPUS-tauri-app/src/components/pages/Settings/SettingsPage.css create mode 100644 OPUS-tauri-app/src/components/pages/Settings/SettingsPage.tsx create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/CreateTabModal.css create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/CreateTabModal.tsx create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/CreateWorkspaceModal.tsx create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/SpacesPage.css create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/SpacesPage.tsx create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/TabContent.css create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/TabContent.tsx create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/TabStrip.css create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/TabStrip.tsx create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.css create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.tsx create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.css create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.tsx create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/WorkspaceItem.css create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/WorkspaceItem.tsx create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/WorkspaceList.css create mode 100644 OPUS-tauri-app/src/components/pages/Spaces/WorkspaceList.tsx create mode 100644 OPUS-tauri-app/src/components/ui/Button.css create mode 100644 OPUS-tauri-app/src/components/ui/Button.tsx create mode 100644 OPUS-tauri-app/src/components/ui/EmptyState.css create mode 100644 OPUS-tauri-app/src/components/ui/EmptyState.tsx create mode 100644 OPUS-tauri-app/src/components/ui/Input.css create mode 100644 OPUS-tauri-app/src/components/ui/Input.tsx create mode 100644 OPUS-tauri-app/src/components/ui/StatusRow.css create mode 100644 OPUS-tauri-app/src/components/ui/StatusRow.tsx create mode 100644 OPUS-tauri-app/src/hooks/useTauriEvent.ts create mode 100644 OPUS-tauri-app/src/main.tsx create mode 100644 OPUS-tauri-app/src/state/slices/diffSlice.ts create mode 100644 OPUS-tauri-app/src/state/slices/layoutSlice.ts create mode 100644 OPUS-tauri-app/src/state/slices/ptySlice.ts create mode 100644 OPUS-tauri-app/src/state/slices/uiSlice.ts create mode 100644 OPUS-tauri-app/src/state/slices/worksetSlice.ts create mode 100644 OPUS-tauri-app/src/state/slices/workspaceSlice.ts create mode 100644 OPUS-tauri-app/src/state/store.ts create mode 100644 OPUS-tauri-app/src/styles/fonts.css create mode 100644 OPUS-tauri-app/src/styles/global.css create mode 100644 OPUS-tauri-app/src/styles/tokens.css create mode 100644 OPUS-tauri-app/src/types/context.ts create mode 100644 OPUS-tauri-app/src/types/diagnostics.ts create mode 100644 OPUS-tauri-app/src/types/diff.ts create mode 100644 OPUS-tauri-app/src/types/errors.ts create mode 100644 OPUS-tauri-app/src/types/github.ts create mode 100644 OPUS-tauri-app/src/types/index.ts create mode 100644 OPUS-tauri-app/src/types/jobs.ts create mode 100644 OPUS-tauri-app/src/types/layout.ts create mode 100644 OPUS-tauri-app/src/types/pty.ts create mode 100644 OPUS-tauri-app/src/types/repo.ts create mode 100644 OPUS-tauri-app/src/types/workset.ts create mode 100644 OPUS-tauri-app/src/types/workspace.ts create mode 100644 OPUS-tauri-app/src/vite-env.d.ts create mode 100644 OPUS-tauri-app/tsconfig.json create mode 100644 OPUS-tauri-app/vite.config.ts create mode 100644 docs/tauri-product-spec.md diff --git a/OPUS-tauri-app/.gitignore b/OPUS-tauri-app/.gitignore new file mode 100644 index 00000000..66149586 --- /dev/null +++ b/OPUS-tauri-app/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +dist/ +src-tauri/target/ +.env +*.log diff --git a/OPUS-tauri-app/index.html b/OPUS-tauri-app/index.html new file mode 100644 index 00000000..affba87d --- /dev/null +++ b/OPUS-tauri-app/index.html @@ -0,0 +1,12 @@ + + + + + + Workset Desktop + + +
+ + + diff --git a/OPUS-tauri-app/package-lock.json b/OPUS-tauri-app/package-lock.json new file mode 100644 index 00000000..f92c51ab --- /dev/null +++ b/OPUS-tauri-app/package-lock.json @@ -0,0 +1,2162 @@ +{ + "name": "workset-desktop", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "workset-desktop", + "version": "0.1.0", + "dependencies": { + "@tauri-apps/api": "^2", + "@tauri-apps/plugin-opener": "^2", + "@xterm/addon-clipboard": "^0.1.0", + "@xterm/addon-fit": "^0.10.0", + "@xterm/addon-unicode11": "^0.8.0", + "@xterm/addon-web-links": "^0.11.0", + "@xterm/addon-webgl": "^0.18.0", + "@xterm/xterm": "^5.5.0", + "lucide-react": "^0.460.0", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "zustand": "^5.0.0" + }, + "devDependencies": { + "@tauri-apps/cli": "^2", + "@types/react": "^19.2.5", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "typescript": "~5.9.3", + "vite": "^7.2.4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.2.tgz", + "integrity": "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", + "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", + "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", + "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", + "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", + "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", + "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", + "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", + "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", + "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", + "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", + "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", + "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", + "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", + "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", + "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", + "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", + "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", + "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", + "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", + "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", + "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", + "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", + "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", + "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tauri-apps/api": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.10.1.tgz", + "integrity": "sha512-hKL/jWf293UDSUN09rR69hrToyIXBb8CjGaWC7gfinvnQrBVvnLr08FeFi38gxtugAVyVcTa5/FD/Xnkb1siBw==", + "license": "Apache-2.0 OR MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + } + }, + "node_modules/@tauri-apps/cli": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.10.0.tgz", + "integrity": "sha512-ZwT0T+7bw4+DPCSWzmviwq5XbXlM0cNoleDKOYPFYqcZqeKY31KlpoMW/MOON/tOFBPgi31a2v3w9gliqwL2+Q==", + "dev": true, + "license": "Apache-2.0 OR MIT", + "bin": { + "tauri": "tauri.js" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + }, + "optionalDependencies": { + "@tauri-apps/cli-darwin-arm64": "2.10.0", + "@tauri-apps/cli-darwin-x64": "2.10.0", + "@tauri-apps/cli-linux-arm-gnueabihf": "2.10.0", + "@tauri-apps/cli-linux-arm64-gnu": "2.10.0", + "@tauri-apps/cli-linux-arm64-musl": "2.10.0", + "@tauri-apps/cli-linux-riscv64-gnu": "2.10.0", + "@tauri-apps/cli-linux-x64-gnu": "2.10.0", + "@tauri-apps/cli-linux-x64-musl": "2.10.0", + "@tauri-apps/cli-win32-arm64-msvc": "2.10.0", + "@tauri-apps/cli-win32-ia32-msvc": "2.10.0", + "@tauri-apps/cli-win32-x64-msvc": "2.10.0" + } + }, + "node_modules/@tauri-apps/cli-darwin-arm64": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.10.0.tgz", + "integrity": "sha512-avqHD4HRjrMamE/7R/kzJPcAJnZs0IIS+1nkDP5b+TNBn3py7N2aIo9LIpy+VQq0AkN8G5dDpZtOOBkmWt/zjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-darwin-x64": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.10.0.tgz", + "integrity": "sha512-keDmlvJRStzVFjZTd0xYkBONLtgBC9eMTpmXnBXzsHuawV2q9PvDo2x6D5mhuoMVrJ9QWjgaPKBBCFks4dK71Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.10.0.tgz", + "integrity": "sha512-e5u0VfLZsMAC9iHaOEANumgl6lfnJx0Dtjkd8IJpysZ8jp0tJ6wrIkto2OzQgzcYyRCKgX72aKE0PFgZputA8g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-gnu": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.10.0.tgz", + "integrity": "sha512-YrYYk2dfmBs5m+OIMCrb+JH/oo+4FtlpcrTCgiFYc7vcs6m3QDd1TTyWu0u01ewsCtK2kOdluhr/zKku+KP7HA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-musl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.10.0.tgz", + "integrity": "sha512-GUoPdVJmrJRIXFfW3Rkt+eGK9ygOdyISACZfC/bCSfOnGt8kNdQIQr5WRH9QUaTVFIwxMlQyV3m+yXYP+xhSVA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-riscv64-gnu": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-riscv64-gnu/-/cli-linux-riscv64-gnu-2.10.0.tgz", + "integrity": "sha512-JO7s3TlSxshwsoKNCDkyvsx5gw2QAs/Y2GbR5UE2d5kkU138ATKoPOtxn8G1fFT1aDW4LH0rYAAfBpGkDyJJnw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-gnu": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.10.0.tgz", + "integrity": "sha512-Uvh4SUUp4A6DVRSMWjelww0GnZI3PlVy7VS+DRF5napKuIehVjGl9XD0uKoCoxwAQBLctvipyEK+pDXpJeoHng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-musl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.10.0.tgz", + "integrity": "sha512-AP0KRK6bJuTpQ8kMNWvhIpKUkQJfcPFeba7QshOQZjJ8wOS6emwTN4K5g/d3AbCMo0RRdnZWwu67MlmtJyxC1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-arm64-msvc": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.10.0.tgz", + "integrity": "sha512-97DXVU3dJystrq7W41IX+82JEorLNY+3+ECYxvXWqkq7DBN6FsA08x/EFGE8N/b0LTOui9X2dvpGGoeZKKV08g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-ia32-msvc": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.10.0.tgz", + "integrity": "sha512-EHyQ1iwrWy1CwMalEm9z2a6L5isQ121pe7FcA2xe4VWMJp+GHSDDGvbTv/OPdkt2Lyr7DAZBpZHM6nvlHXEc4A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-x64-msvc": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.10.0.tgz", + "integrity": "sha512-NTpyQxkpzGmU6ceWBTY2xRIEaS0ZLbVx1HE1zTA3TY/pV3+cPoPPOs+7YScr4IMzXMtOw7tLw5LEXo5oIG3qaQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/plugin-opener": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-opener/-/plugin-opener-2.5.3.tgz", + "integrity": "sha512-CCcUltXMOfUEArbf3db3kCE7Ggy1ExBEBl51Ko2ODJ6GDYHRp1nSNlQm5uNCFY5k7/ufaK5Ib3Du/Zir19IYQQ==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.8.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.13", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", + "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.3.tgz", + "integrity": "sha512-NVUnA6gQCl8jfoYqKqQU5Clv0aPw14KkZYCsX6T9Lfu9slI0LOU10OTwFHS/WmptsMMpshNd/1tuWsHQ2Uk+cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.29.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-rc.2", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/@xterm/addon-clipboard": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-clipboard/-/addon-clipboard-0.1.0.tgz", + "integrity": "sha512-zdoM7p53T5sv/HbRTyp4hY0kKmEQ3MZvAvEtiXqNIHc/JdpqwByCtsTaQF5DX2n4hYdXRPO4P/eOS0QEhX1nPw==", + "license": "MIT", + "dependencies": { + "js-base64": "^3.7.5" + }, + "peerDependencies": { + "@xterm/xterm": "^5.4.0" + } + }, + "node_modules/@xterm/addon-fit": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.10.0.tgz", + "integrity": "sha512-UFYkDm4HUahf2lnEyHvio51TNGiLK66mqP2JoATy7hRZeXaGMRDr00JiSF7m63vR5WKATF605yEggJKsw0JpMQ==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/addon-unicode11": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-unicode11/-/addon-unicode11-0.8.0.tgz", + "integrity": "sha512-LxinXu8SC4OmVa6FhgwsVCBZbr8WoSGzBl2+vqe8WcQ6hb1r6Gj9P99qTNdPiFPh4Ceiu2pC8xukZ6+2nnh49Q==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/addon-web-links": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-web-links/-/addon-web-links-0.11.0.tgz", + "integrity": "sha512-nIHQ38pQI+a5kXnRaTgwqSHnX7KE6+4SVoceompgHL26unAxdfP6IPqUTSYPQgSwM56hsElfoNrrW5V7BUED/Q==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/addon-webgl": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-webgl/-/addon-webgl-0.18.0.tgz", + "integrity": "sha512-xCnfMBTI+/HKPdRnSOHaJDRqEpq2Ugy8LEj9GiY4J3zJObo3joylIFaMvzBwbYRg8zLtkO0KQaStCeSfoaI2/w==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/xterm": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz", + "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==", + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", + "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "dev": true, + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/js-base64": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.8.tgz", + "integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==", + "license": "BSD-3-Clause" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "0.460.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.460.0.tgz", + "integrity": "sha512-BVtq/DykVeIvRTJvRAgCsOwaGL8Un3Bxh8MbDxMhEWlZay3T4IpEKDEpwt5KZ0KJMHzgm6jrltxlT5eXOWXDHg==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", + "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.57.1", + "@rollup/rollup-android-arm64": "4.57.1", + "@rollup/rollup-darwin-arm64": "4.57.1", + "@rollup/rollup-darwin-x64": "4.57.1", + "@rollup/rollup-freebsd-arm64": "4.57.1", + "@rollup/rollup-freebsd-x64": "4.57.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", + "@rollup/rollup-linux-arm-musleabihf": "4.57.1", + "@rollup/rollup-linux-arm64-gnu": "4.57.1", + "@rollup/rollup-linux-arm64-musl": "4.57.1", + "@rollup/rollup-linux-loong64-gnu": "4.57.1", + "@rollup/rollup-linux-loong64-musl": "4.57.1", + "@rollup/rollup-linux-ppc64-gnu": "4.57.1", + "@rollup/rollup-linux-ppc64-musl": "4.57.1", + "@rollup/rollup-linux-riscv64-gnu": "4.57.1", + "@rollup/rollup-linux-riscv64-musl": "4.57.1", + "@rollup/rollup-linux-s390x-gnu": "4.57.1", + "@rollup/rollup-linux-x64-gnu": "4.57.1", + "@rollup/rollup-linux-x64-musl": "4.57.1", + "@rollup/rollup-openbsd-x64": "4.57.1", + "@rollup/rollup-openharmony-arm64": "4.57.1", + "@rollup/rollup-win32-arm64-msvc": "4.57.1", + "@rollup/rollup-win32-ia32-msvc": "4.57.1", + "@rollup/rollup-win32-x64-gnu": "4.57.1", + "@rollup/rollup-win32-x64-msvc": "4.57.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "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 + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/zustand": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.11.tgz", + "integrity": "sha512-fdZY+dk7zn/vbWNCYmzZULHRrss0jx5pPFiOuMZ/5HJN6Yv3u+1Wswy/4MpZEkEGhtNH+pwxZB8OKgUBPzYAGg==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + } + } +} diff --git a/OPUS-tauri-app/package.json b/OPUS-tauri-app/package.json new file mode 100644 index 00000000..599c2049 --- /dev/null +++ b/OPUS-tauri-app/package.json @@ -0,0 +1,35 @@ +{ + "name": "workset-desktop", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "preview": "vite preview", + "check": "tsc --noEmit", + "tauri": "tauri" + }, + "dependencies": { + "react": "^19.2.0", + "react-dom": "^19.2.0", + "@tauri-apps/api": "^2", + "@tauri-apps/plugin-opener": "^2", + "zustand": "^5.0.0", + "@xterm/xterm": "^5.5.0", + "@xterm/addon-fit": "^0.10.0", + "@xterm/addon-webgl": "^0.18.0", + "@xterm/addon-web-links": "^0.11.0", + "@xterm/addon-clipboard": "^0.1.0", + "@xterm/addon-unicode11": "^0.8.0", + "lucide-react": "^0.460.0" + }, + "devDependencies": { + "@types/react": "^19.2.5", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "typescript": "~5.9.3", + "vite": "^7.2.4", + "@tauri-apps/cli": "^2" + } +} diff --git a/OPUS-tauri-app/src-tauri/Cargo.lock b/OPUS-tauri-app/src-tauri/Cargo.lock new file mode 100644 index 00000000..9d4effbd --- /dev/null +++ b/OPUS-tauri-app/src-tauri/Cargo.lock @@ -0,0 +1,5402 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + +[[package]] +name = "anyhow" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea" + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-lock" +version = "3.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "async-signal" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "atk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +dependencies = [ + "serde_core", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", +] + +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" + +[[package]] +name = "bytemuck" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +dependencies = [ + "serde", +] + +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.10.0", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror 1.0.69", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" +dependencies = [ + "serde_core", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "cargo_toml" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" +dependencies = [ + "serde", + "toml 0.9.11+spec-1.1.0", +] + +[[package]] +name = "cc" +version = "1.2.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "chrono" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link 0.2.1", +] + +[[package]] +name = "colorchoice" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags 2.10.0", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.10.0", + "core-foundation", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.29.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "matches", + "phf 0.10.1", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.114", +] + +[[package]] +name = "ctor" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" +dependencies = [ + "quote", + "syn 2.0.114", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.114", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.114", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.61.2", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dispatch2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags 2.10.0", + "objc2", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "dlopen2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +dependencies = [ + "serde", +] + +[[package]] +name = "dtoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "embed-resource" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e" +dependencies = [ + "cc", + "memchr", + "rustc_version", + "toml 0.9.11+spec-1.1.0", + "vswhom", + "winreg", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "endi" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" + +[[package]] +name = "enumflags2" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "env_filter" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "jiff", + "log", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" +dependencies = [ + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "filetime" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" +dependencies = [ + "cfg-if", + "libc", + "libredox", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", +] + +[[package]] +name = "gdkx11-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps", + "x11", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.10.0", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.2", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "html5ever" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c" +dependencies = [ + "log", + "mac", + "markup5ever", + "match_token", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.62.2", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ico" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371" +dependencies = [ + "byteorder", + "png", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "infer" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +dependencies = [ + "cfb", +] + +[[package]] +name = "inotify" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc" +dependencies = [ + "bitflags 1.3.2", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "javascriptcore-rs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +dependencies = [ + "bitflags 1.3.2", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "jiff" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89a5b5e10d5a9ad6e5d1f4bd58225f655d6fe9767575a5e8ac5a6fe64e04495" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", +] + +[[package]] +name = "jiff-static" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff7a39c8862fc1369215ccf0a8f12dd4598c7f6484704359f0351bd617034dbf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "js-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" +dependencies = [ + "jsonptr", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "jsonptr" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.10.0", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "kqueue" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + +[[package]] +name = "kuchikiki" +version = "0.8.8-speedreader" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2" +dependencies = [ + "cssparser", + "html5ever", + "indexmap 2.13.0", + "selectors", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + +[[package]] +name = "libc" +version = "0.2.180" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +dependencies = [ + "bitflags 2.10.0", + "libc", + "redox_syscall 0.7.0", +] + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "markup5ever" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18" +dependencies = [ + "log", + "phf 0.11.3", + "phf_codegen 0.11.3", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "match_token" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +dependencies = [ + "libc", + "log", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.61.2", +] + +[[package]] +name = "muda" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c1738382f66ed56b3b9c8119e794a2e23148ac8ea214eda86622d4cb9d415a" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "once_cell", + "png", + "serde", + "thiserror 2.0.18", + "windows-sys 0.60.2", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.10.0", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "notify" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c533b4c39709f9ba5005d8002048266593c1cfaf3c5f0739d5b8ab0c6c504009" +dependencies = [ + "bitflags 2.10.0", + "filetime", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "log", + "mio", + "notify-types", + "walkdir", + "windows-sys 0.52.0", +] + +[[package]] +name = "notify-types" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585d3cb5e12e01aed9e8a1f70d5c6b5e86fe2a6e48fc8cd0b3e0b8df6f6eb174" +dependencies = [ + "instant", +] + +[[package]] +name = "num-conv" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "objc2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +dependencies = [ + "objc2-encode", + "objc2-exception-helper", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +dependencies = [ + "bitflags 2.10.0", + "block2", + "libc", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image", + "objc2-core-text", + "objc2-core-video", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" +dependencies = [ + "bitflags 2.10.0", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" +dependencies = [ + "bitflags 2.10.0", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.10.0", + "dispatch2", + "objc2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.10.0", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-text" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" +dependencies = [ + "bitflags 2.10.0", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", +] + +[[package]] +name = "objc2-core-video" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" +dependencies = [ + "bitflags 2.10.0", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-io-surface", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-exception-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" +dependencies = [ + "cc", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.10.0", + "block2", + "libc", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.10.0", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-javascript-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a1e6550c4caed348956ce3370c9ffeca70bb1dbed4fa96112e7c6170e074586" +dependencies = [ + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.10.0", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-security" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe137109bd1e8b5a99390f77a7d8b2961dafc1a1c5db8f2e60329ad6d895a" +dependencies = [ + "bitflags 2.10.0", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" +dependencies = [ + "bitflags 2.10.0", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-web-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "objc2-javascript-core", + "objc2-security", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "open" +version = "5.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43bb73a7fa3799b198970490a51174027ba0d4ec504b03cd08caf513d40024bc" +dependencies = [ + "dunce", + "is-wsl", + "libc", + "pathdiff", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.18", + "smallvec", + "windows-link 0.2.1", +] + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_shared 0.8.0", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_macros 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros 0.11.3", + "phf_shared 0.11.3", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared 0.11.3", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher 0.3.11", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher 0.3.11", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher 1.0.2", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "plist" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07" +dependencies = [ + "base64 0.22.1", + "indexmap 2.13.0", + "quick-xml", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "portable-atomic-util" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit 0.23.10+spec-1.0.0", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "redox_syscall" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 2.0.18", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" + +[[package]] +name = "reqwest" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "sync_wrapper", + "tokio", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", + "uuid", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.114", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "selectors" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416" +dependencies = [ + "bitflags 1.3.2", + "cssparser", + "derive_more", + "fxhash", + "log", + "phf 0.8.0", + "phf_codegen 0.8.0", + "precomputed-hash", + "servo_arc", + "smallvec", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-untagged" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" +dependencies = [ + "erased-serde", + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_spanned" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_with" +version = "3.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.13.0", + "schemars 0.9.0", + "schemars 1.2.1", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "servo_arc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "siphasher" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "softbuffer" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" +dependencies = [ + "bytemuck", + "js-sys", + "ndk", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle", + "redox_syscall 0.5.18", + "tracing", + "wasm-bindgen", + "web-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared 0.11.3", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml 0.8.2", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.34.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a753bdc39c07b192151523a3f77cd0394aa75413802c883a0f6f6a0e5ee2e7" +dependencies = [ + "bitflags 2.10.0", + "block2", + "core-foundation", + "core-graphics", + "crossbeam-channel", + "dispatch", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "jni", + "lazy_static", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "parking_lot", + "raw-window-handle", + "scopeguard", + "tao-macros", + "unicode-segmentation", + "url", + "windows", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "2.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "463ae8677aa6d0f063a900b9c41ecd4ac2b7ca82f0b058cc4491540e55b20129" +dependencies = [ + "anyhow", + "bytes", + "cookie", + "dirs", + "dunce", + "embed_plist", + "getrandom 0.3.4", + "glob", + "gtk", + "heck 0.5.0", + "http", + "jni", + "libc", + "log", + "mime", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "percent-encoding", + "plist", + "raw-window-handle", + "reqwest", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror 2.0.18", + "tokio", + "tray-icon", + "url", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows", +] + +[[package]] +name = "tauri-build" +version = "2.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca7bd893329425df750813e95bd2b643d5369d929438da96d5bbb7cc2c918f74" +dependencies = [ + "anyhow", + "cargo_toml", + "dirs", + "glob", + "heck 0.5.0", + "json-patch", + "schemars 0.8.22", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "toml 0.9.11+spec-1.1.0", + "walkdir", +] + +[[package]] +name = "tauri-codegen" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac423e5859d9f9ccdd32e3cf6a5866a15bedbf25aa6630bcb2acde9468f6ae3" +dependencies = [ + "base64 0.22.1", + "brotli", + "ico", + "json-patch", + "plist", + "png", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "sha2", + "syn 2.0.114", + "tauri-utils", + "thiserror 2.0.18", + "time", + "url", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b6a1bd2861ff0c8766b1d38b32a6a410f6dc6532d4ef534c47cfb2236092f59" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.114", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-plugin" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "692a77abd8b8773e107a42ec0e05b767b8d2b7ece76ab36c6c3947e34df9f53f" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri-utils", + "toml 0.9.11+spec-1.1.0", + "walkdir", +] + +[[package]] +name = "tauri-plugin-opener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc624469b06f59f5a29f874bbc61a2ed737c0f9c23ef09855a292c389c42e83f" +dependencies = [ + "dunce", + "glob", + "objc2-app-kit", + "objc2-foundation", + "open", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.18", + "url", + "windows", + "zbus", +] + +[[package]] +name = "tauri-runtime" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b885ffeac82b00f1f6fd292b6e5aabfa7435d537cef57d11e38a489956535651" +dependencies = [ + "cookie", + "dpi", + "gtk", + "http", + "jni", + "objc2", + "objc2-ui-kit", + "objc2-web-kit", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror 2.0.18", + "url", + "webkit2gtk", + "webview2-com", + "windows", +] + +[[package]] +name = "tauri-runtime-wry" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5204682391625e867d16584fedc83fc292fb998814c9f7918605c789cd876314" +dependencies = [ + "gtk", + "http", + "jni", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "percent-encoding", + "raw-window-handle", + "softbuffer", + "tao", + "tauri-runtime", + "tauri-utils", + "url", + "webkit2gtk", + "webview2-com", + "windows", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcd169fccdff05eff2c1033210b9b94acd07a47e6fa9a3431cf09cfd4f01c87e" +dependencies = [ + "anyhow", + "brotli", + "cargo_metadata", + "ctor", + "dunce", + "glob", + "html5ever", + "http", + "infer", + "json-patch", + "kuchikiki", + "log", + "memchr", + "phf 0.11.3", + "proc-macro2", + "quote", + "regex", + "schemars 0.8.22", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror 2.0.18", + "toml 0.9.11+spec-1.1.0", + "url", + "urlpattern", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-winres" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1087b111fe2b005e42dbdc1990fc18593234238d47453b0c99b7de1c9ab2c1e0" +dependencies = [ + "dunce", + "embed-resource", + "toml 0.9.11+spec-1.1.0", +] + +[[package]] +name = "tempfile" +version = "3.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" +dependencies = [ + "fastrand", + "getrandom 0.3.4", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "time" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.49.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "toml" +version = "0.9.11+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" +dependencies = [ + "indexmap 2.13.0", + "serde_core", + "serde_spanned 1.0.4", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 0.7.14", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.13.0", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.13.0", + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.23.10+spec-1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +dependencies = [ + "indexmap 2.13.0", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "winnow 0.7.14", +] + +[[package]] +name = "toml_parser" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +dependencies = [ + "winnow 0.7.14", +] + +[[package]] +name = "toml_writer" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "bitflags 2.10.0", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tray-icon" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e85aa143ceb072062fc4d6356c1b520a51d636e7bc8e77ec94be3608e5e80c" +dependencies = [ + "crossbeam-channel", + "dirs", + "libappindicator", + "muda", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "once_cell", + "png", + "serde", + "thiserror 2.0.18", + "windows-sys 0.60.2", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-ident" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537dd038a89878be9b64dd4bd1b260315c1bb94f4d784956b81e27a088d9a09e" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + "serde_derive", +] + +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" +dependencies = [ + "getrandom 0.3.4", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "version-compare" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +dependencies = [ + "cfg-if", + "futures-util", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.114", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-streams" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webkit2gtk" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1027150013530fb2eaf806408df88461ae4815a45c541c8975e61d6f2fc4793" +dependencies = [ + "bitflags 1.3.2", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup3", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "916a5f65c2ef0dfe12fff695960a2ec3d4565359fdbb2e9943c974e06c734ea5" +dependencies = [ + "bitflags 1.3.2", + "cairo-sys-rs", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pkg-config", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webview2-com" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows", + "windows-core 0.61.2", + "windows-implement", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "webview2-com-sys" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" +dependencies = [ + "thiserror 2.0.18", + "windows", + "windows-core 0.61.2", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "window-vibrancy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" +dependencies = [ + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", +] + +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-version" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +dependencies = [ + "cfg-if", + "windows-sys 0.59.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" + +[[package]] +name = "workset-desktop" +version = "0.1.0" +dependencies = [ + "chrono", + "dirs", + "env_logger", + "log", + "notify", + "serde", + "serde_json", + "tauri", + "tauri-build", + "tauri-plugin-opener", + "tokio", + "uuid", +] + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "wry" +version = "0.54.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ed1a195b0375491dd15a7066a10251be217ce743cf4bbbbdcf5391d6473bee0" +dependencies = [ + "base64 0.22.1", + "block2", + "cookie", + "crossbeam-channel", + "dirs", + "dpi", + "dunce", + "gdkx11", + "gtk", + "html5ever", + "http", + "javascriptcore-rs", + "jni", + "kuchikiki", + "libc", + "ndk", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "sha2", + "soup3", + "tao-macros", + "thiserror 2.0.18", + "url", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", + "synstructure", +] + +[[package]] +name = "zbus" +version = "5.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfeff997a0aaa3eb20c4652baf788d2dfa6d2839a0ead0b3ff69ce2f9c4bdd1" +dependencies = [ + "async-broadcast", + "async-executor", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-lite", + "hex", + "libc", + "ordered-stream", + "rustix", + "serde", + "serde_repr", + "tracing", + "uds_windows", + "uuid", + "windows-sys 0.61.2", + "winnow 0.7.14", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "5.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bbd5a90dbe8feee5b13def448427ae314ccd26a49cac47905cafefb9ff846f1" +dependencies = [ + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.114", + "zbus_names", + "zvariant", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" +dependencies = [ + "serde", + "winnow 0.7.14", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.8.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "zmij" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4de98dfa5d5b7fef4ee834d0073d560c9ca7b6c46a71d058c48db7960f8cfaf7" + +[[package]] +name = "zvariant" +version = "5.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b64ef4f40c7951337ddc7023dd03528a57a3ce3408ee9da5e948bd29b232c4" +dependencies = [ + "endi", + "enumflags2", + "serde", + "winnow 0.7.14", + "zvariant_derive", + "zvariant_utils", +] + +[[package]] +name = "zvariant_derive" +version = "5.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "484d5d975eb7afb52cc6b929c13d3719a20ad650fea4120e6310de3fc55e415c" +dependencies = [ + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.114", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "syn 2.0.114", + "winnow 0.7.14", +] diff --git a/OPUS-tauri-app/src-tauri/Cargo.toml b/OPUS-tauri-app/src-tauri/Cargo.toml new file mode 100644 index 00000000..9687ca57 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "workset-desktop" +version = "0.1.0" +edition = "2021" + +[lib] +name = "workset_desktop_lib" +crate-type = ["staticlib", "cdylib", "rlib"] + +[build-dependencies] +tauri-build = { version = "2", features = [] } + +[dependencies] +tauri = { version = "2", features = [] } +tauri-plugin-opener = "2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +tokio = { version = "1", features = ["full"] } +uuid = { version = "1", features = ["v4"] } +chrono = { version = "0.4", features = ["serde"] } +notify = "7" +dirs = "6" +log = "0.4" +env_logger = "0.11" diff --git a/OPUS-tauri-app/src-tauri/build.rs b/OPUS-tauri-app/src-tauri/build.rs new file mode 100644 index 00000000..d860e1e6 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/OPUS-tauri-app/src-tauri/capabilities/default.json b/OPUS-tauri-app/src-tauri/capabilities/default.json new file mode 100644 index 00000000..1164e3c6 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/capabilities/default.json @@ -0,0 +1,14 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Default capabilities for the main window", + "windows": ["main"], + "permissions": [ + "core:default", + "opener:default", + "core:event:default", + "core:event:allow-listen", + "core:event:allow-emit", + "core:window:allow-start-dragging" + ] +} diff --git a/OPUS-tauri-app/src-tauri/gen/schemas/acl-manifests.json b/OPUS-tauri-app/src-tauri/gen/schemas/acl-manifests.json new file mode 100644 index 00000000..931df681 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/gen/schemas/acl-manifests.json @@ -0,0 +1 @@ +{"core":{"default_permission":{"identifier":"default","description":"Default core plugins set.","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version","allow-identifier","allow-bundle-type","allow-register-listener","allow-remove-listener"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-bundle-type":{"identifier":"allow-bundle-type","description":"Enables the bundle_type command without any pre-configured scope.","commands":{"allow":["bundle_type"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-fetch-data-store-identifiers":{"identifier":"allow-fetch-data-store-identifiers","description":"Enables the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":["fetch_data_store_identifiers"],"deny":[]}},"allow-identifier":{"identifier":"allow-identifier","description":"Enables the identifier command without any pre-configured scope.","commands":{"allow":["identifier"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-register-listener":{"identifier":"allow-register-listener","description":"Enables the register_listener command without any pre-configured scope.","commands":{"allow":["register_listener"],"deny":[]}},"allow-remove-data-store":{"identifier":"allow-remove-data-store","description":"Enables the remove_data_store command without any pre-configured scope.","commands":{"allow":["remove_data_store"],"deny":[]}},"allow-remove-listener":{"identifier":"allow-remove-listener","description":"Enables the remove_listener command without any pre-configured scope.","commands":{"allow":["remove_listener"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-set-dock-visibility":{"identifier":"allow-set-dock-visibility","description":"Enables the set_dock_visibility command without any pre-configured scope.","commands":{"allow":["set_dock_visibility"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-bundle-type":{"identifier":"deny-bundle-type","description":"Denies the bundle_type command without any pre-configured scope.","commands":{"allow":[],"deny":["bundle_type"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-fetch-data-store-identifiers":{"identifier":"deny-fetch-data-store-identifiers","description":"Denies the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_data_store_identifiers"]}},"deny-identifier":{"identifier":"deny-identifier","description":"Denies the identifier command without any pre-configured scope.","commands":{"allow":[],"deny":["identifier"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-register-listener":{"identifier":"deny-register-listener","description":"Denies the register_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["register_listener"]}},"deny-remove-data-store":{"identifier":"deny-remove-data-store","description":"Denies the remove_data_store command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_data_store"]}},"deny-remove-listener":{"identifier":"deny-remove-listener","description":"Denies the remove_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_listener"]}},"deny-set-app-theme":{"identifier":"deny-set-app-theme","description":"Denies the set_app_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_app_theme"]}},"deny-set-dock-visibility":{"identifier":"deny-set-dock-visibility","description":"Denies the set_dock_visibility command without any pre-configured scope.","commands":{"allow":[],"deny":["set_dock_visibility"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-clear-all-browsing-data":{"identifier":"allow-clear-all-browsing-data","description":"Enables the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":["clear_all_browsing_data"],"deny":[]}},"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-auto-resize":{"identifier":"allow-set-webview-auto-resize","description":"Enables the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":["set_webview_auto_resize"],"deny":[]}},"allow-set-webview-background-color":{"identifier":"allow-set-webview-background-color","description":"Enables the set_webview_background_color command without any pre-configured scope.","commands":{"allow":["set_webview_background_color"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-hide":{"identifier":"allow-webview-hide","description":"Enables the webview_hide command without any pre-configured scope.","commands":{"allow":["webview_hide"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-show":{"identifier":"allow-webview-show","description":"Enables the webview_show command without any pre-configured scope.","commands":{"allow":["webview_show"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-clear-all-browsing-data":{"identifier":"deny-clear-all-browsing-data","description":"Denies the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":[],"deny":["clear_all_browsing_data"]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-auto-resize":{"identifier":"deny-set-webview-auto-resize","description":"Denies the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_auto_resize"]}},"deny-set-webview-background-color":{"identifier":"deny-set-webview-background-color","description":"Denies the set_webview_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_background_color"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-hide":{"identifier":"deny-webview-hide","description":"Denies the webview_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_hide"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-show":{"identifier":"deny-webview-show","description":"Denies the webview_show command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_show"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-is-enabled","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-is-always-on-top","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-always-on-top":{"identifier":"allow-is-always-on-top","description":"Enables the is_always_on_top command without any pre-configured scope.","commands":{"allow":["is_always_on_top"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-background-color":{"identifier":"allow-set-background-color","description":"Enables the set_background_color command without any pre-configured scope.","commands":{"allow":["set_background_color"],"deny":[]}},"allow-set-badge-count":{"identifier":"allow-set-badge-count","description":"Enables the set_badge_count command without any pre-configured scope.","commands":{"allow":["set_badge_count"],"deny":[]}},"allow-set-badge-label":{"identifier":"allow-set-badge-label","description":"Enables the set_badge_label command without any pre-configured scope.","commands":{"allow":["set_badge_label"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-focusable":{"identifier":"allow-set-focusable","description":"Enables the set_focusable command without any pre-configured scope.","commands":{"allow":["set_focusable"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-overlay-icon":{"identifier":"allow-set-overlay-icon","description":"Enables the set_overlay_icon command without any pre-configured scope.","commands":{"allow":["set_overlay_icon"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-simple-fullscreen":{"identifier":"allow-set-simple-fullscreen","description":"Enables the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":["set_simple_fullscreen"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-theme":{"identifier":"allow-set-theme","description":"Enables the set_theme command without any pre-configured scope.","commands":{"allow":["set_theme"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-always-on-top":{"identifier":"deny-is-always-on-top","description":"Denies the is_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["is_always_on_top"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-background-color":{"identifier":"deny-set-background-color","description":"Denies the set_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_background_color"]}},"deny-set-badge-count":{"identifier":"deny-set-badge-count","description":"Denies the set_badge_count command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_count"]}},"deny-set-badge-label":{"identifier":"deny-set-badge-label","description":"Denies the set_badge_label command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_label"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-focusable":{"identifier":"deny-set-focusable","description":"Denies the set_focusable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focusable"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-overlay-icon":{"identifier":"deny-set-overlay-icon","description":"Denies the set_overlay_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_overlay_icon"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-simple-fullscreen":{"identifier":"deny-set-simple-fullscreen","description":"Denies the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_simple_fullscreen"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-theme":{"identifier":"deny-set-theme","description":"Denies the set_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_theme"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"opener":{"default_permission":{"identifier":"default","description":"This permission set allows opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application\nas well as reveal file in directories using default file explorer","permissions":["allow-open-url","allow-reveal-item-in-dir","allow-default-urls"]},"permissions":{"allow-default-urls":{"identifier":"allow-default-urls","description":"This enables opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application.","commands":{"allow":[],"deny":[]},"scope":{"allow":[{"url":"mailto:*"},{"url":"tel:*"},{"url":"http://*"},{"url":"https://*"}]}},"allow-open-path":{"identifier":"allow-open-path","description":"Enables the open_path command without any pre-configured scope.","commands":{"allow":["open_path"],"deny":[]}},"allow-open-url":{"identifier":"allow-open-url","description":"Enables the open_url command without any pre-configured scope.","commands":{"allow":["open_url"],"deny":[]}},"allow-reveal-item-in-dir":{"identifier":"allow-reveal-item-in-dir","description":"Enables the reveal_item_in_dir command without any pre-configured scope.","commands":{"allow":["reveal_item_in_dir"],"deny":[]}},"deny-open-path":{"identifier":"deny-open-path","description":"Denies the open_path command without any pre-configured scope.","commands":{"allow":[],"deny":["open_path"]}},"deny-open-url":{"identifier":"deny-open-url","description":"Denies the open_url command without any pre-configured scope.","commands":{"allow":[],"deny":["open_url"]}},"deny-reveal-item-in-dir":{"identifier":"deny-reveal-item-in-dir","description":"Denies the reveal_item_in_dir command without any pre-configured scope.","commands":{"allow":[],"deny":["reveal_item_in_dir"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"properties":{"app":{"allOf":[{"$ref":"#/definitions/Application"}],"description":"An application to open this url with, for example: firefox."},"url":{"description":"A URL that can be opened by the webview when using the Opener APIs.\n\nWildcards can be used following the UNIX glob pattern.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"","type":"string"}},"required":["url"],"type":"object"},{"properties":{"app":{"allOf":[{"$ref":"#/definitions/Application"}],"description":"An application to open this path with, for example: xdg-open."},"path":{"description":"A path that can be opened by the webview when using the Opener APIs.\n\nThe pattern can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.","type":"string"}},"required":["path"],"type":"object"}],"definitions":{"Application":{"anyOf":[{"description":"Open in default application.","type":"null"},{"description":"If true, allow open with any application.","type":"boolean"},{"description":"Allow specific application to open with.","type":"string"}],"description":"Opener scope application."}},"description":"Opener scope entry.","title":"OpenerScopeEntry"}}} \ No newline at end of file diff --git a/OPUS-tauri-app/src-tauri/gen/schemas/capabilities.json b/OPUS-tauri-app/src-tauri/gen/schemas/capabilities.json new file mode 100644 index 00000000..26f48a97 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/gen/schemas/capabilities.json @@ -0,0 +1 @@ +{"default":{"identifier":"default","description":"Default capabilities for the main window","local":true,"windows":["main"],"permissions":["core:default","opener:default","core:event:default","core:event:allow-listen","core:event:allow-emit","core:window:allow-start-dragging"]}} \ No newline at end of file diff --git a/OPUS-tauri-app/src-tauri/gen/schemas/desktop-schema.json b/OPUS-tauri-app/src-tauri/gen/schemas/desktop-schema.json new file mode 100644 index 00000000..49176251 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/gen/schemas/desktop-schema.json @@ -0,0 +1,2477 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nIf a window label matches any of the patterns in this list, the capability will be enabled on all the webviews of that window, regardless of the value of [`Self::webviews`].\n\nOn multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThe capability will be enabled on all the webviews whose label matches any of the patterns in this list, regardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "allOf": [ + { + "if": { + "properties": { + "identifier": { + "anyOf": [ + { + "description": "This permission set allows opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application\nas well as reveal file in directories using default file explorer\n#### This default permission set includes:\n\n- `allow-open-url`\n- `allow-reveal-item-in-dir`\n- `allow-default-urls`", + "type": "string", + "const": "opener:default", + "markdownDescription": "This permission set allows opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application\nas well as reveal file in directories using default file explorer\n#### This default permission set includes:\n\n- `allow-open-url`\n- `allow-reveal-item-in-dir`\n- `allow-default-urls`" + }, + { + "description": "This enables opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application.", + "type": "string", + "const": "opener:allow-default-urls", + "markdownDescription": "This enables opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application." + }, + { + "description": "Enables the open_path command without any pre-configured scope.", + "type": "string", + "const": "opener:allow-open-path", + "markdownDescription": "Enables the open_path command without any pre-configured scope." + }, + { + "description": "Enables the open_url command without any pre-configured scope.", + "type": "string", + "const": "opener:allow-open-url", + "markdownDescription": "Enables the open_url command without any pre-configured scope." + }, + { + "description": "Enables the reveal_item_in_dir command without any pre-configured scope.", + "type": "string", + "const": "opener:allow-reveal-item-in-dir", + "markdownDescription": "Enables the reveal_item_in_dir command without any pre-configured scope." + }, + { + "description": "Denies the open_path command without any pre-configured scope.", + "type": "string", + "const": "opener:deny-open-path", + "markdownDescription": "Denies the open_path command without any pre-configured scope." + }, + { + "description": "Denies the open_url command without any pre-configured scope.", + "type": "string", + "const": "opener:deny-open-url", + "markdownDescription": "Denies the open_url command without any pre-configured scope." + }, + { + "description": "Denies the reveal_item_in_dir command without any pre-configured scope.", + "type": "string", + "const": "opener:deny-reveal-item-in-dir", + "markdownDescription": "Denies the reveal_item_in_dir command without any pre-configured scope." + } + ] + } + } + }, + "then": { + "properties": { + "allow": { + "items": { + "title": "OpenerScopeEntry", + "description": "Opener scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "url" + ], + "properties": { + "app": { + "description": "An application to open this url with, for example: firefox.", + "allOf": [ + { + "$ref": "#/definitions/Application" + } + ] + }, + "url": { + "description": "A URL that can be opened by the webview when using the Opener APIs.\n\nWildcards can be used following the UNIX glob pattern.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"", + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "app": { + "description": "An application to open this path with, for example: xdg-open.", + "allOf": [ + { + "$ref": "#/definitions/Application" + } + ] + }, + "path": { + "description": "A path that can be opened by the webview when using the Opener APIs.\n\nThe pattern can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + } + } + } + ] + } + }, + "deny": { + "items": { + "title": "OpenerScopeEntry", + "description": "Opener scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "url" + ], + "properties": { + "app": { + "description": "An application to open this url with, for example: firefox.", + "allOf": [ + { + "$ref": "#/definitions/Application" + } + ] + }, + "url": { + "description": "A URL that can be opened by the webview when using the Opener APIs.\n\nWildcards can be used following the UNIX glob pattern.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"", + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "app": { + "description": "An application to open this path with, for example: xdg-open.", + "allOf": [ + { + "$ref": "#/definitions/Application" + } + ] + }, + "path": { + "description": "A path that can be opened by the webview when using the Opener APIs.\n\nThe pattern can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + } + } + } + ] + } + } + } + }, + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + } + } + }, + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`", + "type": "string", + "const": "core:default", + "markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`" + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`", + "type": "string", + "const": "core:app:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide", + "markdownDescription": "Enables the app_hide command without any pre-configured scope." + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show", + "markdownDescription": "Enables the app_show command without any pre-configured scope." + }, + { + "description": "Enables the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-bundle-type", + "markdownDescription": "Enables the bundle_type command without any pre-configured scope." + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon", + "markdownDescription": "Enables the default_window_icon command without any pre-configured scope." + }, + { + "description": "Enables the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-fetch-data-store-identifiers", + "markdownDescription": "Enables the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Enables the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-identifier", + "markdownDescription": "Enables the identifier command without any pre-configured scope." + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name", + "markdownDescription": "Enables the name command without any pre-configured scope." + }, + { + "description": "Enables the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-register-listener", + "markdownDescription": "Enables the register_listener command without any pre-configured scope." + }, + { + "description": "Enables the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-data-store", + "markdownDescription": "Enables the remove_data_store command without any pre-configured scope." + }, + { + "description": "Enables the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-listener", + "markdownDescription": "Enables the remove_listener command without any pre-configured scope." + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme", + "markdownDescription": "Enables the set_app_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-dock-visibility", + "markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version", + "markdownDescription": "Enables the tauri_version command without any pre-configured scope." + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version", + "markdownDescription": "Enables the version command without any pre-configured scope." + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide", + "markdownDescription": "Denies the app_hide command without any pre-configured scope." + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show", + "markdownDescription": "Denies the app_show command without any pre-configured scope." + }, + { + "description": "Denies the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-bundle-type", + "markdownDescription": "Denies the bundle_type command without any pre-configured scope." + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon", + "markdownDescription": "Denies the default_window_icon command without any pre-configured scope." + }, + { + "description": "Denies the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-fetch-data-store-identifiers", + "markdownDescription": "Denies the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Denies the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-identifier", + "markdownDescription": "Denies the identifier command without any pre-configured scope." + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name", + "markdownDescription": "Denies the name command without any pre-configured scope." + }, + { + "description": "Denies the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-register-listener", + "markdownDescription": "Denies the register_listener command without any pre-configured scope." + }, + { + "description": "Denies the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-data-store", + "markdownDescription": "Denies the remove_data_store command without any pre-configured scope." + }, + { + "description": "Denies the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-listener", + "markdownDescription": "Denies the remove_listener command without any pre-configured scope." + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme", + "markdownDescription": "Denies the set_app_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-dock-visibility", + "markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version", + "markdownDescription": "Denies the tauri_version command without any pre-configured scope." + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version", + "markdownDescription": "Denies the version command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`", + "type": "string", + "const": "core:event:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit", + "markdownDescription": "Enables the emit command without any pre-configured scope." + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to", + "markdownDescription": "Enables the emit_to command without any pre-configured scope." + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen", + "markdownDescription": "Enables the listen command without any pre-configured scope." + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten", + "markdownDescription": "Enables the unlisten command without any pre-configured scope." + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit", + "markdownDescription": "Denies the emit command without any pre-configured scope." + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to", + "markdownDescription": "Denies the emit_to command without any pre-configured scope." + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen", + "markdownDescription": "Denies the listen command without any pre-configured scope." + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten", + "markdownDescription": "Denies the unlisten command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`", + "type": "string", + "const": "core:image:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes", + "markdownDescription": "Enables the from_bytes command without any pre-configured scope." + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path", + "markdownDescription": "Enables the from_path command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba", + "markdownDescription": "Enables the rgba command without any pre-configured scope." + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size", + "markdownDescription": "Enables the size command without any pre-configured scope." + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes", + "markdownDescription": "Denies the from_bytes command without any pre-configured scope." + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path", + "markdownDescription": "Denies the from_path command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba", + "markdownDescription": "Denies the rgba command without any pre-configured scope." + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size", + "markdownDescription": "Denies the size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`", + "type": "string", + "const": "core:menu:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append", + "markdownDescription": "Enables the append command without any pre-configured scope." + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default", + "markdownDescription": "Enables the create_default command without any pre-configured scope." + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get", + "markdownDescription": "Enables the get command without any pre-configured scope." + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert", + "markdownDescription": "Enables the insert command without any pre-configured scope." + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked", + "markdownDescription": "Enables the is_checked command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items", + "markdownDescription": "Enables the items command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup", + "markdownDescription": "Enables the popup command without any pre-configured scope." + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend", + "markdownDescription": "Enables the prepend command without any pre-configured scope." + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove", + "markdownDescription": "Enables the remove command without any pre-configured scope." + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at", + "markdownDescription": "Enables the remove_at command without any pre-configured scope." + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator", + "markdownDescription": "Enables the set_accelerator command without any pre-configured scope." + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu", + "markdownDescription": "Enables the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp", + "markdownDescription": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu", + "markdownDescription": "Enables the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp", + "markdownDescription": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked", + "markdownDescription": "Enables the set_checked command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text", + "markdownDescription": "Enables the set_text command without any pre-configured scope." + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text", + "markdownDescription": "Enables the text command without any pre-configured scope." + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append", + "markdownDescription": "Denies the append command without any pre-configured scope." + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default", + "markdownDescription": "Denies the create_default command without any pre-configured scope." + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get", + "markdownDescription": "Denies the get command without any pre-configured scope." + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert", + "markdownDescription": "Denies the insert command without any pre-configured scope." + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked", + "markdownDescription": "Denies the is_checked command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items", + "markdownDescription": "Denies the items command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup", + "markdownDescription": "Denies the popup command without any pre-configured scope." + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend", + "markdownDescription": "Denies the prepend command without any pre-configured scope." + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove", + "markdownDescription": "Denies the remove command without any pre-configured scope." + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at", + "markdownDescription": "Denies the remove_at command without any pre-configured scope." + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator", + "markdownDescription": "Denies the set_accelerator command without any pre-configured scope." + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu", + "markdownDescription": "Denies the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp", + "markdownDescription": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu", + "markdownDescription": "Denies the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp", + "markdownDescription": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked", + "markdownDescription": "Denies the set_checked command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text", + "markdownDescription": "Denies the set_text command without any pre-configured scope." + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text", + "markdownDescription": "Denies the text command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`", + "type": "string", + "const": "core:path:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename", + "markdownDescription": "Enables the basename command without any pre-configured scope." + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname", + "markdownDescription": "Enables the dirname command without any pre-configured scope." + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname", + "markdownDescription": "Enables the extname command without any pre-configured scope." + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute", + "markdownDescription": "Enables the is_absolute command without any pre-configured scope." + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join", + "markdownDescription": "Enables the join command without any pre-configured scope." + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize", + "markdownDescription": "Enables the normalize command without any pre-configured scope." + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve", + "markdownDescription": "Enables the resolve command without any pre-configured scope." + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory", + "markdownDescription": "Enables the resolve_directory command without any pre-configured scope." + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename", + "markdownDescription": "Denies the basename command without any pre-configured scope." + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname", + "markdownDescription": "Denies the dirname command without any pre-configured scope." + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname", + "markdownDescription": "Denies the extname command without any pre-configured scope." + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute", + "markdownDescription": "Denies the is_absolute command without any pre-configured scope." + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join", + "markdownDescription": "Denies the join command without any pre-configured scope." + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize", + "markdownDescription": "Denies the normalize command without any pre-configured scope." + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve", + "markdownDescription": "Denies the resolve command without any pre-configured scope." + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory", + "markdownDescription": "Denies the resolve_directory command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`", + "type": "string", + "const": "core:resources:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-show-menu-on-left-click`", + "type": "string", + "const": "core:tray:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-show-menu-on-left-click`" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id", + "markdownDescription": "Enables the get_by_id command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id", + "markdownDescription": "Enables the remove_by_id command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template", + "markdownDescription": "Enables the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu", + "markdownDescription": "Enables the set_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click", + "markdownDescription": "Enables the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path", + "markdownDescription": "Enables the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip", + "markdownDescription": "Enables the set_tooltip command without any pre-configured scope." + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible", + "markdownDescription": "Enables the set_visible command without any pre-configured scope." + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id", + "markdownDescription": "Denies the get_by_id command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id", + "markdownDescription": "Denies the remove_by_id command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template", + "markdownDescription": "Denies the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu", + "markdownDescription": "Denies the set_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click", + "markdownDescription": "Denies the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path", + "markdownDescription": "Denies the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip", + "markdownDescription": "Denies the set_tooltip command without any pre-configured scope." + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible", + "markdownDescription": "Denies the set_visible command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`", + "type": "string", + "const": "core:webview:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data", + "markdownDescription": "Enables the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview", + "markdownDescription": "Enables the create_webview command without any pre-configured scope." + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window", + "markdownDescription": "Enables the create_webview_window command without any pre-configured scope." + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews", + "markdownDescription": "Enables the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools", + "markdownDescription": "Enables the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print", + "markdownDescription": "Enables the print command without any pre-configured scope." + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent", + "markdownDescription": "Enables the reparent command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-auto-resize", + "markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-background-color", + "markdownDescription": "Enables the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus", + "markdownDescription": "Enables the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position", + "markdownDescription": "Enables the set_webview_position command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size", + "markdownDescription": "Enables the set_webview_size command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom", + "markdownDescription": "Enables the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close", + "markdownDescription": "Enables the webview_close command without any pre-configured scope." + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide", + "markdownDescription": "Enables the webview_hide command without any pre-configured scope." + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position", + "markdownDescription": "Enables the webview_position command without any pre-configured scope." + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show", + "markdownDescription": "Enables the webview_show command without any pre-configured scope." + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size", + "markdownDescription": "Enables the webview_size command without any pre-configured scope." + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data", + "markdownDescription": "Denies the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview", + "markdownDescription": "Denies the create_webview command without any pre-configured scope." + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window", + "markdownDescription": "Denies the create_webview_window command without any pre-configured scope." + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews", + "markdownDescription": "Denies the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools", + "markdownDescription": "Denies the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print", + "markdownDescription": "Denies the print command without any pre-configured scope." + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent", + "markdownDescription": "Denies the reparent command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-auto-resize", + "markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-background-color", + "markdownDescription": "Denies the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus", + "markdownDescription": "Denies the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position", + "markdownDescription": "Denies the set_webview_position command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size", + "markdownDescription": "Denies the set_webview_size command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom", + "markdownDescription": "Denies the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close", + "markdownDescription": "Denies the webview_close command without any pre-configured scope." + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide", + "markdownDescription": "Denies the webview_hide command without any pre-configured scope." + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position", + "markdownDescription": "Denies the webview_position command without any pre-configured scope." + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show", + "markdownDescription": "Denies the webview_show command without any pre-configured scope." + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size", + "markdownDescription": "Denies the webview_size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-internal-toggle-maximize`", + "type": "string", + "const": "core:window:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-internal-toggle-maximize`" + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors", + "markdownDescription": "Enables the available_monitors command without any pre-configured scope." + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center", + "markdownDescription": "Enables the center command without any pre-configured scope." + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create", + "markdownDescription": "Enables the create command without any pre-configured scope." + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor", + "markdownDescription": "Enables the current_monitor command without any pre-configured scope." + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position", + "markdownDescription": "Enables the cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy", + "markdownDescription": "Enables the destroy command without any pre-configured scope." + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows", + "markdownDescription": "Enables the get_all_windows command without any pre-configured scope." + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide", + "markdownDescription": "Enables the hide command without any pre-configured scope." + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position", + "markdownDescription": "Enables the inner_position command without any pre-configured scope." + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size", + "markdownDescription": "Enables the inner_size command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize", + "markdownDescription": "Enables the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-always-on-top", + "markdownDescription": "Enables the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable", + "markdownDescription": "Enables the is_closable command without any pre-configured scope." + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated", + "markdownDescription": "Enables the is_decorated command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused", + "markdownDescription": "Enables the is_focused command without any pre-configured scope." + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen", + "markdownDescription": "Enables the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable", + "markdownDescription": "Enables the is_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized", + "markdownDescription": "Enables the is_maximized command without any pre-configured scope." + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable", + "markdownDescription": "Enables the is_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized", + "markdownDescription": "Enables the is_minimized command without any pre-configured scope." + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable", + "markdownDescription": "Enables the is_resizable command without any pre-configured scope." + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible", + "markdownDescription": "Enables the is_visible command without any pre-configured scope." + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize", + "markdownDescription": "Enables the maximize command without any pre-configured scope." + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize", + "markdownDescription": "Enables the minimize command without any pre-configured scope." + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point", + "markdownDescription": "Enables the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position", + "markdownDescription": "Enables the outer_position command without any pre-configured scope." + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size", + "markdownDescription": "Enables the outer_size command without any pre-configured scope." + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor", + "markdownDescription": "Enables the primary_monitor command without any pre-configured scope." + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention", + "markdownDescription": "Enables the request_user_attention command without any pre-configured scope." + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor", + "markdownDescription": "Enables the scale_factor command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom", + "markdownDescription": "Enables the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top", + "markdownDescription": "Enables the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-background-color", + "markdownDescription": "Enables the set_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-count", + "markdownDescription": "Enables the set_badge_count command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-label", + "markdownDescription": "Enables the set_badge_label command without any pre-configured scope." + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable", + "markdownDescription": "Enables the set_closable command without any pre-configured scope." + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected", + "markdownDescription": "Enables the set_content_protected command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab", + "markdownDescription": "Enables the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon", + "markdownDescription": "Enables the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position", + "markdownDescription": "Enables the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible", + "markdownDescription": "Enables the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations", + "markdownDescription": "Enables the set_decorations command without any pre-configured scope." + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects", + "markdownDescription": "Enables the set_effects command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus", + "markdownDescription": "Enables the set_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focusable", + "markdownDescription": "Enables the set_focusable command without any pre-configured scope." + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen", + "markdownDescription": "Enables the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events", + "markdownDescription": "Enables the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size", + "markdownDescription": "Enables the set_max_size command without any pre-configured scope." + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable", + "markdownDescription": "Enables the set_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size", + "markdownDescription": "Enables the set_min_size command without any pre-configured scope." + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable", + "markdownDescription": "Enables the set_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-overlay-icon", + "markdownDescription": "Enables the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position", + "markdownDescription": "Enables the set_position command without any pre-configured scope." + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar", + "markdownDescription": "Enables the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable", + "markdownDescription": "Enables the set_resizable command without any pre-configured scope." + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow", + "markdownDescription": "Enables the set_shadow command without any pre-configured scope." + }, + { + "description": "Enables the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-simple-fullscreen", + "markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size", + "markdownDescription": "Enables the set_size command without any pre-configured scope." + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints", + "markdownDescription": "Enables the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar", + "markdownDescription": "Enables the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme", + "markdownDescription": "Enables the set_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style", + "markdownDescription": "Enables the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces", + "markdownDescription": "Enables the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show", + "markdownDescription": "Enables the show command without any pre-configured scope." + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging", + "markdownDescription": "Enables the start_dragging command without any pre-configured scope." + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging", + "markdownDescription": "Enables the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme", + "markdownDescription": "Enables the theme command without any pre-configured scope." + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title", + "markdownDescription": "Enables the title command without any pre-configured scope." + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize", + "markdownDescription": "Enables the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize", + "markdownDescription": "Enables the unmaximize command without any pre-configured scope." + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize", + "markdownDescription": "Enables the unminimize command without any pre-configured scope." + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors", + "markdownDescription": "Denies the available_monitors command without any pre-configured scope." + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center", + "markdownDescription": "Denies the center command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create", + "markdownDescription": "Denies the create command without any pre-configured scope." + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor", + "markdownDescription": "Denies the current_monitor command without any pre-configured scope." + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position", + "markdownDescription": "Denies the cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy", + "markdownDescription": "Denies the destroy command without any pre-configured scope." + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows", + "markdownDescription": "Denies the get_all_windows command without any pre-configured scope." + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide", + "markdownDescription": "Denies the hide command without any pre-configured scope." + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position", + "markdownDescription": "Denies the inner_position command without any pre-configured scope." + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size", + "markdownDescription": "Denies the inner_size command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize", + "markdownDescription": "Denies the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-always-on-top", + "markdownDescription": "Denies the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable", + "markdownDescription": "Denies the is_closable command without any pre-configured scope." + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated", + "markdownDescription": "Denies the is_decorated command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused", + "markdownDescription": "Denies the is_focused command without any pre-configured scope." + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen", + "markdownDescription": "Denies the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable", + "markdownDescription": "Denies the is_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized", + "markdownDescription": "Denies the is_maximized command without any pre-configured scope." + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable", + "markdownDescription": "Denies the is_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized", + "markdownDescription": "Denies the is_minimized command without any pre-configured scope." + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable", + "markdownDescription": "Denies the is_resizable command without any pre-configured scope." + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible", + "markdownDescription": "Denies the is_visible command without any pre-configured scope." + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize", + "markdownDescription": "Denies the maximize command without any pre-configured scope." + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize", + "markdownDescription": "Denies the minimize command without any pre-configured scope." + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point", + "markdownDescription": "Denies the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position", + "markdownDescription": "Denies the outer_position command without any pre-configured scope." + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size", + "markdownDescription": "Denies the outer_size command without any pre-configured scope." + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor", + "markdownDescription": "Denies the primary_monitor command without any pre-configured scope." + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention", + "markdownDescription": "Denies the request_user_attention command without any pre-configured scope." + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor", + "markdownDescription": "Denies the scale_factor command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom", + "markdownDescription": "Denies the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top", + "markdownDescription": "Denies the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-background-color", + "markdownDescription": "Denies the set_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-count", + "markdownDescription": "Denies the set_badge_count command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-label", + "markdownDescription": "Denies the set_badge_label command without any pre-configured scope." + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable", + "markdownDescription": "Denies the set_closable command without any pre-configured scope." + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected", + "markdownDescription": "Denies the set_content_protected command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab", + "markdownDescription": "Denies the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon", + "markdownDescription": "Denies the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position", + "markdownDescription": "Denies the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible", + "markdownDescription": "Denies the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations", + "markdownDescription": "Denies the set_decorations command without any pre-configured scope." + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects", + "markdownDescription": "Denies the set_effects command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus", + "markdownDescription": "Denies the set_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focusable", + "markdownDescription": "Denies the set_focusable command without any pre-configured scope." + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen", + "markdownDescription": "Denies the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events", + "markdownDescription": "Denies the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size", + "markdownDescription": "Denies the set_max_size command without any pre-configured scope." + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable", + "markdownDescription": "Denies the set_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size", + "markdownDescription": "Denies the set_min_size command without any pre-configured scope." + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable", + "markdownDescription": "Denies the set_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-overlay-icon", + "markdownDescription": "Denies the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position", + "markdownDescription": "Denies the set_position command without any pre-configured scope." + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar", + "markdownDescription": "Denies the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable", + "markdownDescription": "Denies the set_resizable command without any pre-configured scope." + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow", + "markdownDescription": "Denies the set_shadow command without any pre-configured scope." + }, + { + "description": "Denies the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-simple-fullscreen", + "markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size", + "markdownDescription": "Denies the set_size command without any pre-configured scope." + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints", + "markdownDescription": "Denies the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar", + "markdownDescription": "Denies the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme", + "markdownDescription": "Denies the set_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style", + "markdownDescription": "Denies the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces", + "markdownDescription": "Denies the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show", + "markdownDescription": "Denies the show command without any pre-configured scope." + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging", + "markdownDescription": "Denies the start_dragging command without any pre-configured scope." + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging", + "markdownDescription": "Denies the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme", + "markdownDescription": "Denies the theme command without any pre-configured scope." + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title", + "markdownDescription": "Denies the title command without any pre-configured scope." + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize", + "markdownDescription": "Denies the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize", + "markdownDescription": "Denies the unmaximize command without any pre-configured scope." + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize", + "markdownDescription": "Denies the unminimize command without any pre-configured scope." + }, + { + "description": "This permission set allows opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application\nas well as reveal file in directories using default file explorer\n#### This default permission set includes:\n\n- `allow-open-url`\n- `allow-reveal-item-in-dir`\n- `allow-default-urls`", + "type": "string", + "const": "opener:default", + "markdownDescription": "This permission set allows opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application\nas well as reveal file in directories using default file explorer\n#### This default permission set includes:\n\n- `allow-open-url`\n- `allow-reveal-item-in-dir`\n- `allow-default-urls`" + }, + { + "description": "This enables opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application.", + "type": "string", + "const": "opener:allow-default-urls", + "markdownDescription": "This enables opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application." + }, + { + "description": "Enables the open_path command without any pre-configured scope.", + "type": "string", + "const": "opener:allow-open-path", + "markdownDescription": "Enables the open_path command without any pre-configured scope." + }, + { + "description": "Enables the open_url command without any pre-configured scope.", + "type": "string", + "const": "opener:allow-open-url", + "markdownDescription": "Enables the open_url command without any pre-configured scope." + }, + { + "description": "Enables the reveal_item_in_dir command without any pre-configured scope.", + "type": "string", + "const": "opener:allow-reveal-item-in-dir", + "markdownDescription": "Enables the reveal_item_in_dir command without any pre-configured scope." + }, + { + "description": "Denies the open_path command without any pre-configured scope.", + "type": "string", + "const": "opener:deny-open-path", + "markdownDescription": "Denies the open_path command without any pre-configured scope." + }, + { + "description": "Denies the open_url command without any pre-configured scope.", + "type": "string", + "const": "opener:deny-open-url", + "markdownDescription": "Denies the open_url command without any pre-configured scope." + }, + { + "description": "Denies the reveal_item_in_dir command without any pre-configured scope.", + "type": "string", + "const": "opener:deny-reveal-item-in-dir", + "markdownDescription": "Denies the reveal_item_in_dir command without any pre-configured scope." + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + }, + "Application": { + "description": "Opener scope application.", + "anyOf": [ + { + "description": "Open in default application.", + "type": "null" + }, + { + "description": "If true, allow open with any application.", + "type": "boolean" + }, + { + "description": "Allow specific application to open with.", + "type": "string" + } + ] + } + } +} \ No newline at end of file diff --git a/OPUS-tauri-app/src-tauri/gen/schemas/macOS-schema.json b/OPUS-tauri-app/src-tauri/gen/schemas/macOS-schema.json new file mode 100644 index 00000000..49176251 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/gen/schemas/macOS-schema.json @@ -0,0 +1,2477 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nIf a window label matches any of the patterns in this list, the capability will be enabled on all the webviews of that window, regardless of the value of [`Self::webviews`].\n\nOn multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThe capability will be enabled on all the webviews whose label matches any of the patterns in this list, regardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "allOf": [ + { + "if": { + "properties": { + "identifier": { + "anyOf": [ + { + "description": "This permission set allows opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application\nas well as reveal file in directories using default file explorer\n#### This default permission set includes:\n\n- `allow-open-url`\n- `allow-reveal-item-in-dir`\n- `allow-default-urls`", + "type": "string", + "const": "opener:default", + "markdownDescription": "This permission set allows opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application\nas well as reveal file in directories using default file explorer\n#### This default permission set includes:\n\n- `allow-open-url`\n- `allow-reveal-item-in-dir`\n- `allow-default-urls`" + }, + { + "description": "This enables opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application.", + "type": "string", + "const": "opener:allow-default-urls", + "markdownDescription": "This enables opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application." + }, + { + "description": "Enables the open_path command without any pre-configured scope.", + "type": "string", + "const": "opener:allow-open-path", + "markdownDescription": "Enables the open_path command without any pre-configured scope." + }, + { + "description": "Enables the open_url command without any pre-configured scope.", + "type": "string", + "const": "opener:allow-open-url", + "markdownDescription": "Enables the open_url command without any pre-configured scope." + }, + { + "description": "Enables the reveal_item_in_dir command without any pre-configured scope.", + "type": "string", + "const": "opener:allow-reveal-item-in-dir", + "markdownDescription": "Enables the reveal_item_in_dir command without any pre-configured scope." + }, + { + "description": "Denies the open_path command without any pre-configured scope.", + "type": "string", + "const": "opener:deny-open-path", + "markdownDescription": "Denies the open_path command without any pre-configured scope." + }, + { + "description": "Denies the open_url command without any pre-configured scope.", + "type": "string", + "const": "opener:deny-open-url", + "markdownDescription": "Denies the open_url command without any pre-configured scope." + }, + { + "description": "Denies the reveal_item_in_dir command without any pre-configured scope.", + "type": "string", + "const": "opener:deny-reveal-item-in-dir", + "markdownDescription": "Denies the reveal_item_in_dir command without any pre-configured scope." + } + ] + } + } + }, + "then": { + "properties": { + "allow": { + "items": { + "title": "OpenerScopeEntry", + "description": "Opener scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "url" + ], + "properties": { + "app": { + "description": "An application to open this url with, for example: firefox.", + "allOf": [ + { + "$ref": "#/definitions/Application" + } + ] + }, + "url": { + "description": "A URL that can be opened by the webview when using the Opener APIs.\n\nWildcards can be used following the UNIX glob pattern.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"", + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "app": { + "description": "An application to open this path with, for example: xdg-open.", + "allOf": [ + { + "$ref": "#/definitions/Application" + } + ] + }, + "path": { + "description": "A path that can be opened by the webview when using the Opener APIs.\n\nThe pattern can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + } + } + } + ] + } + }, + "deny": { + "items": { + "title": "OpenerScopeEntry", + "description": "Opener scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "url" + ], + "properties": { + "app": { + "description": "An application to open this url with, for example: firefox.", + "allOf": [ + { + "$ref": "#/definitions/Application" + } + ] + }, + "url": { + "description": "A URL that can be opened by the webview when using the Opener APIs.\n\nWildcards can be used following the UNIX glob pattern.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"", + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "path" + ], + "properties": { + "app": { + "description": "An application to open this path with, for example: xdg-open.", + "allOf": [ + { + "$ref": "#/definitions/Application" + } + ] + }, + "path": { + "description": "A path that can be opened by the webview when using the Opener APIs.\n\nThe pattern can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + } + } + } + ] + } + } + } + }, + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + } + } + }, + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`", + "type": "string", + "const": "core:default", + "markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`" + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`", + "type": "string", + "const": "core:app:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide", + "markdownDescription": "Enables the app_hide command without any pre-configured scope." + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show", + "markdownDescription": "Enables the app_show command without any pre-configured scope." + }, + { + "description": "Enables the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-bundle-type", + "markdownDescription": "Enables the bundle_type command without any pre-configured scope." + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon", + "markdownDescription": "Enables the default_window_icon command without any pre-configured scope." + }, + { + "description": "Enables the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-fetch-data-store-identifiers", + "markdownDescription": "Enables the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Enables the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-identifier", + "markdownDescription": "Enables the identifier command without any pre-configured scope." + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name", + "markdownDescription": "Enables the name command without any pre-configured scope." + }, + { + "description": "Enables the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-register-listener", + "markdownDescription": "Enables the register_listener command without any pre-configured scope." + }, + { + "description": "Enables the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-data-store", + "markdownDescription": "Enables the remove_data_store command without any pre-configured scope." + }, + { + "description": "Enables the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-remove-listener", + "markdownDescription": "Enables the remove_listener command without any pre-configured scope." + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme", + "markdownDescription": "Enables the set_app_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-dock-visibility", + "markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version", + "markdownDescription": "Enables the tauri_version command without any pre-configured scope." + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version", + "markdownDescription": "Enables the version command without any pre-configured scope." + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide", + "markdownDescription": "Denies the app_hide command without any pre-configured scope." + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show", + "markdownDescription": "Denies the app_show command without any pre-configured scope." + }, + { + "description": "Denies the bundle_type command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-bundle-type", + "markdownDescription": "Denies the bundle_type command without any pre-configured scope." + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon", + "markdownDescription": "Denies the default_window_icon command without any pre-configured scope." + }, + { + "description": "Denies the fetch_data_store_identifiers command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-fetch-data-store-identifiers", + "markdownDescription": "Denies the fetch_data_store_identifiers command without any pre-configured scope." + }, + { + "description": "Denies the identifier command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-identifier", + "markdownDescription": "Denies the identifier command without any pre-configured scope." + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name", + "markdownDescription": "Denies the name command without any pre-configured scope." + }, + { + "description": "Denies the register_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-register-listener", + "markdownDescription": "Denies the register_listener command without any pre-configured scope." + }, + { + "description": "Denies the remove_data_store command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-data-store", + "markdownDescription": "Denies the remove_data_store command without any pre-configured scope." + }, + { + "description": "Denies the remove_listener command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-remove-listener", + "markdownDescription": "Denies the remove_listener command without any pre-configured scope." + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme", + "markdownDescription": "Denies the set_app_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_dock_visibility command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-dock-visibility", + "markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope." + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version", + "markdownDescription": "Denies the tauri_version command without any pre-configured scope." + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version", + "markdownDescription": "Denies the version command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`", + "type": "string", + "const": "core:event:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit", + "markdownDescription": "Enables the emit command without any pre-configured scope." + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to", + "markdownDescription": "Enables the emit_to command without any pre-configured scope." + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen", + "markdownDescription": "Enables the listen command without any pre-configured scope." + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten", + "markdownDescription": "Enables the unlisten command without any pre-configured scope." + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit", + "markdownDescription": "Denies the emit command without any pre-configured scope." + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to", + "markdownDescription": "Denies the emit_to command without any pre-configured scope." + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen", + "markdownDescription": "Denies the listen command without any pre-configured scope." + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten", + "markdownDescription": "Denies the unlisten command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`", + "type": "string", + "const": "core:image:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes", + "markdownDescription": "Enables the from_bytes command without any pre-configured scope." + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path", + "markdownDescription": "Enables the from_path command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba", + "markdownDescription": "Enables the rgba command without any pre-configured scope." + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size", + "markdownDescription": "Enables the size command without any pre-configured scope." + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes", + "markdownDescription": "Denies the from_bytes command without any pre-configured scope." + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path", + "markdownDescription": "Denies the from_path command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba", + "markdownDescription": "Denies the rgba command without any pre-configured scope." + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size", + "markdownDescription": "Denies the size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`", + "type": "string", + "const": "core:menu:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append", + "markdownDescription": "Enables the append command without any pre-configured scope." + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default", + "markdownDescription": "Enables the create_default command without any pre-configured scope." + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get", + "markdownDescription": "Enables the get command without any pre-configured scope." + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert", + "markdownDescription": "Enables the insert command without any pre-configured scope." + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked", + "markdownDescription": "Enables the is_checked command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items", + "markdownDescription": "Enables the items command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup", + "markdownDescription": "Enables the popup command without any pre-configured scope." + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend", + "markdownDescription": "Enables the prepend command without any pre-configured scope." + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove", + "markdownDescription": "Enables the remove command without any pre-configured scope." + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at", + "markdownDescription": "Enables the remove_at command without any pre-configured scope." + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator", + "markdownDescription": "Enables the set_accelerator command without any pre-configured scope." + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu", + "markdownDescription": "Enables the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp", + "markdownDescription": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu", + "markdownDescription": "Enables the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp", + "markdownDescription": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked", + "markdownDescription": "Enables the set_checked command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text", + "markdownDescription": "Enables the set_text command without any pre-configured scope." + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text", + "markdownDescription": "Enables the text command without any pre-configured scope." + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append", + "markdownDescription": "Denies the append command without any pre-configured scope." + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default", + "markdownDescription": "Denies the create_default command without any pre-configured scope." + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get", + "markdownDescription": "Denies the get command without any pre-configured scope." + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert", + "markdownDescription": "Denies the insert command without any pre-configured scope." + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked", + "markdownDescription": "Denies the is_checked command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items", + "markdownDescription": "Denies the items command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup", + "markdownDescription": "Denies the popup command without any pre-configured scope." + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend", + "markdownDescription": "Denies the prepend command without any pre-configured scope." + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove", + "markdownDescription": "Denies the remove command without any pre-configured scope." + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at", + "markdownDescription": "Denies the remove_at command without any pre-configured scope." + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator", + "markdownDescription": "Denies the set_accelerator command without any pre-configured scope." + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu", + "markdownDescription": "Denies the set_as_app_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp", + "markdownDescription": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu", + "markdownDescription": "Denies the set_as_window_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp", + "markdownDescription": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope." + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked", + "markdownDescription": "Denies the set_checked command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text", + "markdownDescription": "Denies the set_text command without any pre-configured scope." + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text", + "markdownDescription": "Denies the text command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`", + "type": "string", + "const": "core:path:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename", + "markdownDescription": "Enables the basename command without any pre-configured scope." + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname", + "markdownDescription": "Enables the dirname command without any pre-configured scope." + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname", + "markdownDescription": "Enables the extname command without any pre-configured scope." + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute", + "markdownDescription": "Enables the is_absolute command without any pre-configured scope." + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join", + "markdownDescription": "Enables the join command without any pre-configured scope." + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize", + "markdownDescription": "Enables the normalize command without any pre-configured scope." + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve", + "markdownDescription": "Enables the resolve command without any pre-configured scope." + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory", + "markdownDescription": "Enables the resolve_directory command without any pre-configured scope." + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename", + "markdownDescription": "Denies the basename command without any pre-configured scope." + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname", + "markdownDescription": "Denies the dirname command without any pre-configured scope." + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname", + "markdownDescription": "Denies the extname command without any pre-configured scope." + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute", + "markdownDescription": "Denies the is_absolute command without any pre-configured scope." + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join", + "markdownDescription": "Denies the join command without any pre-configured scope." + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize", + "markdownDescription": "Denies the normalize command without any pre-configured scope." + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve", + "markdownDescription": "Denies the resolve command without any pre-configured scope." + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory", + "markdownDescription": "Denies the resolve_directory command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`", + "type": "string", + "const": "core:resources:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-show-menu-on-left-click`", + "type": "string", + "const": "core:tray:default", + "markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-show-menu-on-left-click`" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id", + "markdownDescription": "Enables the get_by_id command without any pre-configured scope." + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new", + "markdownDescription": "Enables the new command without any pre-configured scope." + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id", + "markdownDescription": "Enables the remove_by_id command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template", + "markdownDescription": "Enables the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu", + "markdownDescription": "Enables the set_menu command without any pre-configured scope." + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click", + "markdownDescription": "Enables the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path", + "markdownDescription": "Enables the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip", + "markdownDescription": "Enables the set_tooltip command without any pre-configured scope." + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible", + "markdownDescription": "Enables the set_visible command without any pre-configured scope." + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id", + "markdownDescription": "Denies the get_by_id command without any pre-configured scope." + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new", + "markdownDescription": "Denies the new command without any pre-configured scope." + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id", + "markdownDescription": "Denies the remove_by_id command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template", + "markdownDescription": "Denies the set_icon_as_template command without any pre-configured scope." + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu", + "markdownDescription": "Denies the set_menu command without any pre-configured scope." + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click", + "markdownDescription": "Denies the set_show_menu_on_left_click command without any pre-configured scope." + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path", + "markdownDescription": "Denies the set_temp_dir_path command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip", + "markdownDescription": "Denies the set_tooltip command without any pre-configured scope." + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible", + "markdownDescription": "Denies the set_visible command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`", + "type": "string", + "const": "core:webview:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data", + "markdownDescription": "Enables the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview", + "markdownDescription": "Enables the create_webview command without any pre-configured scope." + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window", + "markdownDescription": "Enables the create_webview_window command without any pre-configured scope." + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews", + "markdownDescription": "Enables the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools", + "markdownDescription": "Enables the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print", + "markdownDescription": "Enables the print command without any pre-configured scope." + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent", + "markdownDescription": "Enables the reparent command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-auto-resize", + "markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-background-color", + "markdownDescription": "Enables the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus", + "markdownDescription": "Enables the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position", + "markdownDescription": "Enables the set_webview_position command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size", + "markdownDescription": "Enables the set_webview_size command without any pre-configured scope." + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom", + "markdownDescription": "Enables the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close", + "markdownDescription": "Enables the webview_close command without any pre-configured scope." + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide", + "markdownDescription": "Enables the webview_hide command without any pre-configured scope." + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position", + "markdownDescription": "Enables the webview_position command without any pre-configured scope." + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show", + "markdownDescription": "Enables the webview_show command without any pre-configured scope." + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size", + "markdownDescription": "Enables the webview_size command without any pre-configured scope." + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data", + "markdownDescription": "Denies the clear_all_browsing_data command without any pre-configured scope." + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview", + "markdownDescription": "Denies the create_webview command without any pre-configured scope." + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window", + "markdownDescription": "Denies the create_webview_window command without any pre-configured scope." + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews", + "markdownDescription": "Denies the get_all_webviews command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools", + "markdownDescription": "Denies the internal_toggle_devtools command without any pre-configured scope." + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print", + "markdownDescription": "Denies the print command without any pre-configured scope." + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent", + "markdownDescription": "Denies the reparent command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_auto_resize command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-auto-resize", + "markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-background-color", + "markdownDescription": "Denies the set_webview_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus", + "markdownDescription": "Denies the set_webview_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position", + "markdownDescription": "Denies the set_webview_position command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size", + "markdownDescription": "Denies the set_webview_size command without any pre-configured scope." + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom", + "markdownDescription": "Denies the set_webview_zoom command without any pre-configured scope." + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close", + "markdownDescription": "Denies the webview_close command without any pre-configured scope." + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide", + "markdownDescription": "Denies the webview_hide command without any pre-configured scope." + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position", + "markdownDescription": "Denies the webview_position command without any pre-configured scope." + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show", + "markdownDescription": "Denies the webview_show command without any pre-configured scope." + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size", + "markdownDescription": "Denies the webview_size command without any pre-configured scope." + }, + { + "description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-internal-toggle-maximize`", + "type": "string", + "const": "core:window:default", + "markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-internal-toggle-maximize`" + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors", + "markdownDescription": "Enables the available_monitors command without any pre-configured scope." + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center", + "markdownDescription": "Enables the center command without any pre-configured scope." + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close", + "markdownDescription": "Enables the close command without any pre-configured scope." + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create", + "markdownDescription": "Enables the create command without any pre-configured scope." + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor", + "markdownDescription": "Enables the current_monitor command without any pre-configured scope." + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position", + "markdownDescription": "Enables the cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy", + "markdownDescription": "Enables the destroy command without any pre-configured scope." + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows", + "markdownDescription": "Enables the get_all_windows command without any pre-configured scope." + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide", + "markdownDescription": "Enables the hide command without any pre-configured scope." + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position", + "markdownDescription": "Enables the inner_position command without any pre-configured scope." + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size", + "markdownDescription": "Enables the inner_size command without any pre-configured scope." + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize", + "markdownDescription": "Enables the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-always-on-top", + "markdownDescription": "Enables the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable", + "markdownDescription": "Enables the is_closable command without any pre-configured scope." + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated", + "markdownDescription": "Enables the is_decorated command without any pre-configured scope." + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled", + "markdownDescription": "Enables the is_enabled command without any pre-configured scope." + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused", + "markdownDescription": "Enables the is_focused command without any pre-configured scope." + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen", + "markdownDescription": "Enables the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable", + "markdownDescription": "Enables the is_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized", + "markdownDescription": "Enables the is_maximized command without any pre-configured scope." + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable", + "markdownDescription": "Enables the is_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized", + "markdownDescription": "Enables the is_minimized command without any pre-configured scope." + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable", + "markdownDescription": "Enables the is_resizable command without any pre-configured scope." + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible", + "markdownDescription": "Enables the is_visible command without any pre-configured scope." + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize", + "markdownDescription": "Enables the maximize command without any pre-configured scope." + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize", + "markdownDescription": "Enables the minimize command without any pre-configured scope." + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point", + "markdownDescription": "Enables the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position", + "markdownDescription": "Enables the outer_position command without any pre-configured scope." + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size", + "markdownDescription": "Enables the outer_size command without any pre-configured scope." + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor", + "markdownDescription": "Enables the primary_monitor command without any pre-configured scope." + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention", + "markdownDescription": "Enables the request_user_attention command without any pre-configured scope." + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor", + "markdownDescription": "Enables the scale_factor command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom", + "markdownDescription": "Enables the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top", + "markdownDescription": "Enables the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Enables the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-background-color", + "markdownDescription": "Enables the set_background_color command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-count", + "markdownDescription": "Enables the set_badge_count command without any pre-configured scope." + }, + { + "description": "Enables the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-badge-label", + "markdownDescription": "Enables the set_badge_label command without any pre-configured scope." + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable", + "markdownDescription": "Enables the set_closable command without any pre-configured scope." + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected", + "markdownDescription": "Enables the set_content_protected command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab", + "markdownDescription": "Enables the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon", + "markdownDescription": "Enables the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position", + "markdownDescription": "Enables the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible", + "markdownDescription": "Enables the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations", + "markdownDescription": "Enables the set_decorations command without any pre-configured scope." + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects", + "markdownDescription": "Enables the set_effects command without any pre-configured scope." + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled", + "markdownDescription": "Enables the set_enabled command without any pre-configured scope." + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus", + "markdownDescription": "Enables the set_focus command without any pre-configured scope." + }, + { + "description": "Enables the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focusable", + "markdownDescription": "Enables the set_focusable command without any pre-configured scope." + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen", + "markdownDescription": "Enables the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon", + "markdownDescription": "Enables the set_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events", + "markdownDescription": "Enables the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size", + "markdownDescription": "Enables the set_max_size command without any pre-configured scope." + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable", + "markdownDescription": "Enables the set_maximizable command without any pre-configured scope." + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size", + "markdownDescription": "Enables the set_min_size command without any pre-configured scope." + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable", + "markdownDescription": "Enables the set_minimizable command without any pre-configured scope." + }, + { + "description": "Enables the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-overlay-icon", + "markdownDescription": "Enables the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position", + "markdownDescription": "Enables the set_position command without any pre-configured scope." + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar", + "markdownDescription": "Enables the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable", + "markdownDescription": "Enables the set_resizable command without any pre-configured scope." + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow", + "markdownDescription": "Enables the set_shadow command without any pre-configured scope." + }, + { + "description": "Enables the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-simple-fullscreen", + "markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size", + "markdownDescription": "Enables the set_size command without any pre-configured scope." + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints", + "markdownDescription": "Enables the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar", + "markdownDescription": "Enables the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme", + "markdownDescription": "Enables the set_theme command without any pre-configured scope." + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title", + "markdownDescription": "Enables the set_title command without any pre-configured scope." + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style", + "markdownDescription": "Enables the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces", + "markdownDescription": "Enables the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show", + "markdownDescription": "Enables the show command without any pre-configured scope." + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging", + "markdownDescription": "Enables the start_dragging command without any pre-configured scope." + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging", + "markdownDescription": "Enables the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme", + "markdownDescription": "Enables the theme command without any pre-configured scope." + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title", + "markdownDescription": "Enables the title command without any pre-configured scope." + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize", + "markdownDescription": "Enables the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize", + "markdownDescription": "Enables the unmaximize command without any pre-configured scope." + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize", + "markdownDescription": "Enables the unminimize command without any pre-configured scope." + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors", + "markdownDescription": "Denies the available_monitors command without any pre-configured scope." + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center", + "markdownDescription": "Denies the center command without any pre-configured scope." + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close", + "markdownDescription": "Denies the close command without any pre-configured scope." + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create", + "markdownDescription": "Denies the create command without any pre-configured scope." + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor", + "markdownDescription": "Denies the current_monitor command without any pre-configured scope." + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position", + "markdownDescription": "Denies the cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy", + "markdownDescription": "Denies the destroy command without any pre-configured scope." + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows", + "markdownDescription": "Denies the get_all_windows command without any pre-configured scope." + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide", + "markdownDescription": "Denies the hide command without any pre-configured scope." + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position", + "markdownDescription": "Denies the inner_position command without any pre-configured scope." + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size", + "markdownDescription": "Denies the inner_size command without any pre-configured scope." + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize", + "markdownDescription": "Denies the internal_toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the is_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-always-on-top", + "markdownDescription": "Denies the is_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable", + "markdownDescription": "Denies the is_closable command without any pre-configured scope." + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated", + "markdownDescription": "Denies the is_decorated command without any pre-configured scope." + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled", + "markdownDescription": "Denies the is_enabled command without any pre-configured scope." + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused", + "markdownDescription": "Denies the is_focused command without any pre-configured scope." + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen", + "markdownDescription": "Denies the is_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable", + "markdownDescription": "Denies the is_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized", + "markdownDescription": "Denies the is_maximized command without any pre-configured scope." + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable", + "markdownDescription": "Denies the is_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized", + "markdownDescription": "Denies the is_minimized command without any pre-configured scope." + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable", + "markdownDescription": "Denies the is_resizable command without any pre-configured scope." + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible", + "markdownDescription": "Denies the is_visible command without any pre-configured scope." + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize", + "markdownDescription": "Denies the maximize command without any pre-configured scope." + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize", + "markdownDescription": "Denies the minimize command without any pre-configured scope." + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point", + "markdownDescription": "Denies the monitor_from_point command without any pre-configured scope." + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position", + "markdownDescription": "Denies the outer_position command without any pre-configured scope." + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size", + "markdownDescription": "Denies the outer_size command without any pre-configured scope." + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor", + "markdownDescription": "Denies the primary_monitor command without any pre-configured scope." + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention", + "markdownDescription": "Denies the request_user_attention command without any pre-configured scope." + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor", + "markdownDescription": "Denies the scale_factor command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom", + "markdownDescription": "Denies the set_always_on_bottom command without any pre-configured scope." + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top", + "markdownDescription": "Denies the set_always_on_top command without any pre-configured scope." + }, + { + "description": "Denies the set_background_color command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-background-color", + "markdownDescription": "Denies the set_background_color command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_count command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-count", + "markdownDescription": "Denies the set_badge_count command without any pre-configured scope." + }, + { + "description": "Denies the set_badge_label command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-badge-label", + "markdownDescription": "Denies the set_badge_label command without any pre-configured scope." + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable", + "markdownDescription": "Denies the set_closable command without any pre-configured scope." + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected", + "markdownDescription": "Denies the set_content_protected command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab", + "markdownDescription": "Denies the set_cursor_grab command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon", + "markdownDescription": "Denies the set_cursor_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position", + "markdownDescription": "Denies the set_cursor_position command without any pre-configured scope." + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible", + "markdownDescription": "Denies the set_cursor_visible command without any pre-configured scope." + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations", + "markdownDescription": "Denies the set_decorations command without any pre-configured scope." + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects", + "markdownDescription": "Denies the set_effects command without any pre-configured scope." + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled", + "markdownDescription": "Denies the set_enabled command without any pre-configured scope." + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus", + "markdownDescription": "Denies the set_focus command without any pre-configured scope." + }, + { + "description": "Denies the set_focusable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focusable", + "markdownDescription": "Denies the set_focusable command without any pre-configured scope." + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen", + "markdownDescription": "Denies the set_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon", + "markdownDescription": "Denies the set_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events", + "markdownDescription": "Denies the set_ignore_cursor_events command without any pre-configured scope." + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size", + "markdownDescription": "Denies the set_max_size command without any pre-configured scope." + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable", + "markdownDescription": "Denies the set_maximizable command without any pre-configured scope." + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size", + "markdownDescription": "Denies the set_min_size command without any pre-configured scope." + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable", + "markdownDescription": "Denies the set_minimizable command without any pre-configured scope." + }, + { + "description": "Denies the set_overlay_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-overlay-icon", + "markdownDescription": "Denies the set_overlay_icon command without any pre-configured scope." + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position", + "markdownDescription": "Denies the set_position command without any pre-configured scope." + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar", + "markdownDescription": "Denies the set_progress_bar command without any pre-configured scope." + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable", + "markdownDescription": "Denies the set_resizable command without any pre-configured scope." + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow", + "markdownDescription": "Denies the set_shadow command without any pre-configured scope." + }, + { + "description": "Denies the set_simple_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-simple-fullscreen", + "markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope." + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size", + "markdownDescription": "Denies the set_size command without any pre-configured scope." + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints", + "markdownDescription": "Denies the set_size_constraints command without any pre-configured scope." + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar", + "markdownDescription": "Denies the set_skip_taskbar command without any pre-configured scope." + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme", + "markdownDescription": "Denies the set_theme command without any pre-configured scope." + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title", + "markdownDescription": "Denies the set_title command without any pre-configured scope." + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style", + "markdownDescription": "Denies the set_title_bar_style command without any pre-configured scope." + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces", + "markdownDescription": "Denies the set_visible_on_all_workspaces command without any pre-configured scope." + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show", + "markdownDescription": "Denies the show command without any pre-configured scope." + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging", + "markdownDescription": "Denies the start_dragging command without any pre-configured scope." + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging", + "markdownDescription": "Denies the start_resize_dragging command without any pre-configured scope." + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme", + "markdownDescription": "Denies the theme command without any pre-configured scope." + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title", + "markdownDescription": "Denies the title command without any pre-configured scope." + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize", + "markdownDescription": "Denies the toggle_maximize command without any pre-configured scope." + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize", + "markdownDescription": "Denies the unmaximize command without any pre-configured scope." + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize", + "markdownDescription": "Denies the unminimize command without any pre-configured scope." + }, + { + "description": "This permission set allows opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application\nas well as reveal file in directories using default file explorer\n#### This default permission set includes:\n\n- `allow-open-url`\n- `allow-reveal-item-in-dir`\n- `allow-default-urls`", + "type": "string", + "const": "opener:default", + "markdownDescription": "This permission set allows opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application\nas well as reveal file in directories using default file explorer\n#### This default permission set includes:\n\n- `allow-open-url`\n- `allow-reveal-item-in-dir`\n- `allow-default-urls`" + }, + { + "description": "This enables opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application.", + "type": "string", + "const": "opener:allow-default-urls", + "markdownDescription": "This enables opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application." + }, + { + "description": "Enables the open_path command without any pre-configured scope.", + "type": "string", + "const": "opener:allow-open-path", + "markdownDescription": "Enables the open_path command without any pre-configured scope." + }, + { + "description": "Enables the open_url command without any pre-configured scope.", + "type": "string", + "const": "opener:allow-open-url", + "markdownDescription": "Enables the open_url command without any pre-configured scope." + }, + { + "description": "Enables the reveal_item_in_dir command without any pre-configured scope.", + "type": "string", + "const": "opener:allow-reveal-item-in-dir", + "markdownDescription": "Enables the reveal_item_in_dir command without any pre-configured scope." + }, + { + "description": "Denies the open_path command without any pre-configured scope.", + "type": "string", + "const": "opener:deny-open-path", + "markdownDescription": "Denies the open_path command without any pre-configured scope." + }, + { + "description": "Denies the open_url command without any pre-configured scope.", + "type": "string", + "const": "opener:deny-open-url", + "markdownDescription": "Denies the open_url command without any pre-configured scope." + }, + { + "description": "Denies the reveal_item_in_dir command without any pre-configured scope.", + "type": "string", + "const": "opener:deny-reveal-item-in-dir", + "markdownDescription": "Denies the reveal_item_in_dir command without any pre-configured scope." + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + }, + "Application": { + "description": "Opener scope application.", + "anyOf": [ + { + "description": "Open in default application.", + "type": "null" + }, + { + "description": "If true, allow open with any application.", + "type": "boolean" + }, + { + "description": "Allow specific application to open with.", + "type": "string" + } + ] + } + } +} \ No newline at end of file diff --git a/OPUS-tauri-app/src-tauri/icons/128x128.png b/OPUS-tauri-app/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..3912b7c76b808061f976710f47b5e97411d6f25d GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrVAS(;aSW-L^Y+q0Mg|3*0~_}C zJx`FC)0p8>@bJ%5syIn bP!!^Sx`{g=_?EH|0}yz+`njxgN@xNAId5fN literal 0 HcmV?d00001 diff --git a/OPUS-tauri-app/src-tauri/icons/128x128@2x.png b/OPUS-tauri-app/src-tauri/icons/128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6e60ab54298248afe67f2d0dcd96dbb56e68247b GIT binary patch literal 856 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJD{c~2L|kcv5PuPkI_P~bVR zVQ=5_1erOF87?)U>2Hf0m;IDw_>;^akT!}&Ltx~Ez&D2bb98N=JDzw6%rOj}u6{1- HoD!M<4TF;) literal 0 HcmV?d00001 diff --git a/OPUS-tauri-app/src-tauri/icons/32x32.png b/OPUS-tauri-app/src-tauri/icons/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..08919484336920447c2e580a19030c5abb31f692 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzJx>?Mkcv5P&n;wRVBla@h~Hkl p!S{TG;)Rv-_AU_;Kmi`?a^L<5Y%Pp;cLeHW@O1TaS?83{1OUS&8Y2Jz literal 0 HcmV?d00001 diff --git a/OPUS-tauri-app/src-tauri/src/cli/env.rs b/OPUS-tauri-app/src-tauri/src/cli/env.rs new file mode 100644 index 00000000..5586f947 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/cli/env.rs @@ -0,0 +1,50 @@ +use crate::types::diagnostics::EnvSnapshot; +use crate::types::error::ErrorEnvelope; +use std::collections::HashMap; +use std::process::Command; + +pub fn capture_env_snapshot() -> EnvSnapshot { + EnvSnapshot { + path: std::env::var("PATH").unwrap_or_default(), + shell: std::env::var("SHELL").unwrap_or_else(|_| "/bin/zsh".into()), + home: std::env::var("HOME").unwrap_or_default(), + ssh_auth_sock: std::env::var("SSH_AUTH_SOCK").ok(), + git_ssh_command: std::env::var("GIT_SSH_COMMAND").ok(), + git_askpass: std::env::var("GIT_ASKPASS").ok(), + gh_config_dir: std::env::var("GH_CONFIG_DIR").ok(), + gh_auth_summary: None, + } +} + +pub fn reload_login_env() -> Result, ErrorEnvelope> { + let shell = std::env::var("SHELL").unwrap_or_else(|_| "/bin/zsh".into()); + let output = Command::new(&shell) + .args(["-l", "-c", "env"]) + .output() + .map_err(|e| { + ErrorEnvelope::runtime("reload_login_env", format!("Failed to run login shell: {e}")) + })?; + + if !output.status.success() { + return Err(ErrorEnvelope::runtime( + "reload_login_env", + "Login shell exited with non-zero status", + )); + } + + let stdout = String::from_utf8_lossy(&output.stdout); + let mut env_map = HashMap::new(); + for line in stdout.lines() { + if let Some((key, value)) = line.split_once('=') { + match key { + "PATH" | "SSH_AUTH_SOCK" | "GIT_SSH_COMMAND" | "GIT_ASKPASS" + | "GH_CONFIG_DIR" | "HOME" => { + std::env::set_var(key, value); + env_map.insert(key.to_string(), value.to_string()); + } + _ => {} + } + } + } + Ok(env_map) +} diff --git a/OPUS-tauri-app/src-tauri/src/cli/mod.rs b/OPUS-tauri-app/src-tauri/src/cli/mod.rs new file mode 100644 index 00000000..e1f92bf5 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/cli/mod.rs @@ -0,0 +1,3 @@ +pub mod env; +pub mod paths; +pub mod runner; diff --git a/OPUS-tauri-app/src-tauri/src/cli/paths.rs b/OPUS-tauri-app/src-tauri/src/cli/paths.rs new file mode 100644 index 00000000..d2fc0446 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/cli/paths.rs @@ -0,0 +1,46 @@ +use std::path::PathBuf; + +pub fn resolve_workset_cli(override_path: Option<&str>) -> Option { + if let Some(p) = override_path { + let path = PathBuf::from(p); + if path.exists() { + return Some(path); + } + } + if let Some(found) = which("workset") { + return Some(found); + } + // macOS GUI apps inherit a minimal PATH; check common install locations + for dir in &["go/bin", ".local/bin", "bin"] { + if let Some(home) = std::env::var_os("HOME") { + let candidate = PathBuf::from(home).join(dir).join("workset"); + if candidate.is_file() { + return Some(candidate); + } + } + } + None +} + +pub fn resolve_sessiond(override_path: Option<&str>) -> Option { + if let Some(p) = override_path { + let path = PathBuf::from(p); + if path.exists() { + return Some(path); + } + } + which("workset-sessiond") +} + +fn which(binary: &str) -> Option { + std::env::var_os("PATH").and_then(|paths| { + std::env::split_paths(&paths).find_map(|dir| { + let full = dir.join(binary); + if full.is_file() { + Some(full) + } else { + None + } + }) + }) +} diff --git a/OPUS-tauri-app/src-tauri/src/cli/runner.rs b/OPUS-tauri-app/src-tauri/src/cli/runner.rs new file mode 100644 index 00000000..8222fb10 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/cli/runner.rs @@ -0,0 +1,34 @@ +use crate::types::error::ErrorEnvelope; +use std::process::Command; + +pub fn run_workset_command(cli_path: &str, args: &[&str]) -> Result { + let output = Command::new(cli_path) + .args(args) + .output() + .map_err(|e| { + ErrorEnvelope::runtime("cli.run", format!("Failed to execute workset CLI: {e}")) + .with_details(format!("Path: {cli_path}, Args: {args:?}")) + })?; + + if !output.status.success() { + let stderr = String::from_utf8_lossy(&output.stderr).to_string(); + return Err( + ErrorEnvelope::new("git", "cli.run", format!("CLI command failed: {stderr}")) + .with_details(format!("Exit code: {:?}", output.status.code())) + .retryable(), + ); + } + + Ok(String::from_utf8_lossy(&output.stdout).to_string()) +} + +pub fn run_workset_json( + cli_path: &str, + args: &[&str], +) -> Result { + let stdout = run_workset_command(cli_path, args)?; + serde_json::from_str(&stdout).map_err(|e| { + ErrorEnvelope::runtime("cli.parse", format!("Failed to parse CLI output: {e}")) + .with_details(format!("Raw output: {}", &stdout[..stdout.len().min(500)])) + }) +} diff --git a/OPUS-tauri-app/src-tauri/src/commands/context.rs b/OPUS-tauri-app/src-tauri/src/commands/context.rs new file mode 100644 index 00000000..e66e6ff3 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/commands/context.rs @@ -0,0 +1,51 @@ +use tauri::State; +use crate::state::AppState; +use crate::types::context::ActiveContext; +use crate::types::error::ErrorEnvelope; + +#[tauri::command] +pub fn context_get(state: State<'_, AppState>) -> Result { + let ctx = state.ui_context.lock().map_err(|e| { + ErrorEnvelope::runtime("context.get", format!("Lock error: {e}")) + })?; + let active_workset_id = ctx.active_workset_id().map(|s| s.to_string()); + let active_workspace = active_workset_id + .as_deref() + .and_then(|wid| ctx.last_workspace_for(wid)) + .map(|s| s.to_string()); + Ok(ActiveContext { + active_workset_id, + active_workspace, + }) +} + +#[tauri::command] +pub fn context_set_active_workset( + state: State<'_, AppState>, + workset_id: String, +) -> Result<(), ErrorEnvelope> { + let mut ctx = state.ui_context.lock().map_err(|e| { + ErrorEnvelope::runtime("context.set_active_workset", format!("Lock error: {e}")) + })?; + ctx.set_active_workset(&workset_id) +} + +#[tauri::command] +pub fn context_set_active_workspace( + state: State<'_, AppState>, + workspace_name: String, +) -> Result<(), ErrorEnvelope> { + let ctx_lock = state.ui_context.lock().map_err(|e| { + ErrorEnvelope::runtime("context.set_active_workspace", format!("Lock error: {e}")) + })?; + let workset_id = ctx_lock + .active_workset_id() + .ok_or_else(|| ErrorEnvelope::config("context.set_active_workspace", "No active workset"))? + .to_string(); + drop(ctx_lock); + + let mut ctx = state.ui_context.lock().map_err(|e| { + ErrorEnvelope::runtime("context.set_active_workspace", format!("Lock error: {e}")) + })?; + ctx.set_active_workspace(&workset_id, &workspace_name) +} diff --git a/OPUS-tauri-app/src-tauri/src/commands/diagnostics.rs b/OPUS-tauri-app/src-tauri/src/commands/diagnostics.rs new file mode 100644 index 00000000..144bf18e --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/commands/diagnostics.rs @@ -0,0 +1,118 @@ +use std::process::Command; + +use tauri::State; + +use crate::cli::env::{capture_env_snapshot, reload_login_env}; +use crate::cli::paths::{resolve_sessiond, resolve_workset_cli}; +use crate::sessiond::client::SessiondClient; +use crate::sessiond::lifecycle::is_sessiond_running; +use crate::state::AppState; +use crate::types::diagnostics::{EnvSnapshot, SessiondStatus}; +use crate::types::error::ErrorEnvelope; + +#[tauri::command] +pub fn diagnostics_env_snapshot( + _state: State<'_, AppState>, +) -> Result { + Ok(capture_env_snapshot()) +} + +#[tauri::command] +pub fn diagnostics_reload_login_env( + state: State<'_, AppState>, +) -> Result { + // reload_login_env updates env vars and returns a HashMap + let _env_map = reload_login_env()?; + + // Update CLI path if it changed + if let Some(cli) = resolve_workset_cli(None) { + let mut cli_path = state.cli_path.lock().unwrap(); + *cli_path = Some(cli.to_string_lossy().to_string()); + } + + if let Some(sessiond) = resolve_sessiond(None) { + let mut sessiond_path = state.sessiond_path.lock().unwrap(); + *sessiond_path = Some(sessiond.to_string_lossy().to_string()); + } + + // Re-capture snapshot after reload + Ok(capture_env_snapshot()) +} + +#[tauri::command] +pub fn diagnostics_sessiond_status( + _state: State<'_, AppState>, +) -> Result { + let socket_path = SessiondClient::default_socket_path(); + let running = is_sessiond_running(&socket_path); + + Ok(SessiondStatus { + running, + version: None, + socket_path: Some(socket_path), + last_error: None, + last_restart: None, + }) +} + +#[tauri::command] +pub fn diagnostics_sessiond_restart( + state: State<'_, AppState>, +) -> Result { + let sessiond_path = { + state + .sessiond_path + .lock() + .unwrap() + .clone() + }; + + if let Some(path) = sessiond_path { + crate::sessiond::lifecycle::start_sessiond(&path).map_err(|e| { + ErrorEnvelope::new("diagnostics", "sessiond_restart", &e) + })?; + } + + let socket_path = SessiondClient::default_socket_path(); + let running = is_sessiond_running(&socket_path); + + Ok(SessiondStatus { + running, + version: None, + socket_path: Some(socket_path), + last_error: None, + last_restart: Some(chrono::Utc::now().to_rfc3339()), + }) +} + +#[tauri::command] +pub fn diagnostics_cli_status( + state: State<'_, AppState>, +) -> Result { + match resolve_workset_cli(None) { + Some(path) => { + let path_str = path.to_string_lossy().to_string(); + + // Get version + let version = Command::new(&path) + .arg("version") + .output() + .ok() + .and_then(|out| String::from_utf8(out.stdout).ok()) + .map(|s| s.trim().to_string()); + + let mut cli_path = state.cli_path.lock().unwrap(); + *cli_path = Some(path_str.clone()); + + Ok(serde_json::json!({ + "available": true, + "path": path_str, + "version": version, + })) + } + None => Ok(serde_json::json!({ + "available": false, + "error": "workset CLI not found in PATH", + })), + } +} diff --git a/OPUS-tauri-app/src-tauri/src/commands/diff.rs b/OPUS-tauri-app/src-tauri/src/commands/diff.rs new file mode 100644 index 00000000..a6706a41 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/commands/diff.rs @@ -0,0 +1,70 @@ +use tauri::{AppHandle, State}; + +use crate::diff_engine::patch::compute_file_patch; +use crate::diff_engine::summary::compute_diff_summary; +use crate::diff_engine::watcher::start_watcher; +use crate::state::AppState; +use crate::types::diff::{DiffSummary, FilePatch}; +use crate::types::error::ErrorEnvelope; + +#[tauri::command] +pub fn diff_summary( + _state: State<'_, AppState>, + _workspace_name: String, + _repo: String, + repo_path: String, +) -> Result { + compute_diff_summary(&repo_path).map_err(|e| { + ErrorEnvelope::new("diff", "diff.summary", &e) + }) +} + +#[tauri::command] +pub fn diff_file_patch( + _state: State<'_, AppState>, + repo_path: String, + path: String, + prev_path: Option, + status: String, +) -> Result { + compute_file_patch(&repo_path, &path, prev_path.as_deref(), &status).map_err(|e| { + ErrorEnvelope::new("diff", "diff.file_patch", &e) + }) +} + +#[tauri::command] +pub fn diff_watch_start( + app: AppHandle, + state: State<'_, AppState>, + workspace_name: String, + repo: String, + repo_path: String, +) -> Result<(), ErrorEnvelope> { + let key = format!("{}:{}", workspace_name, repo); + + let mut watchers = state.diff_watchers.lock().unwrap(); + if watchers.contains_key(&key) { + return Ok(()); // Already watching + } + + let handle = start_watcher(app, workspace_name, repo, repo_path); + watchers.insert(key, handle); + Ok(()) +} + +#[tauri::command] +pub fn diff_watch_stop( + state: State<'_, AppState>, + workspace_name: String, + repo: String, +) -> Result<(), ErrorEnvelope> { + let key = format!("{}:{}", workspace_name, repo); + + let mut watchers = state.diff_watchers.lock().unwrap(); + if let Some(handle) = watchers.remove(&key) { + handle + .cancel + .store(true, std::sync::atomic::Ordering::Relaxed); + } + Ok(()) +} diff --git a/OPUS-tauri-app/src-tauri/src/commands/github.rs b/OPUS-tauri-app/src-tauri/src/commands/github.rs new file mode 100644 index 00000000..f0381939 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/commands/github.rs @@ -0,0 +1,212 @@ +use std::process::Command; + +use crate::types::error::ErrorEnvelope; + +#[derive(serde::Serialize)] +pub struct GitHubRepo { + pub full_name: String, + pub description: Option, + pub private: bool, +} + +/// Fetch all repos the authenticated user has access to (personal, org member, +/// collaborator) sorted by most recently pushed. Results are cached and +/// filtered client-side for instant autocomplete. +#[tauri::command] +pub async fn github_list_repos() -> Result, ErrorEnvelope> { + tokio::task::spawn_blocking(|| { + let output = Command::new("gh") + .args([ + "api", + "--method", + "GET", + "/user/repos", + "--paginate", + "--jq", + ".[] | {full_name, description, private}", + "-f", + "per_page=100", + "-f", + "sort=pushed", + "-f", + "type=all", + ]) + .output() + .map_err(|e| { + ErrorEnvelope::new( + "auth", + "github.list_repos", + format!("gh CLI not found: {e}"), + ) + })?; + + if !output.status.success() { + let stderr = String::from_utf8_lossy(&output.stderr); + if stderr.contains("not logged") || stderr.contains("auth login") { + return Err(ErrorEnvelope::new( + "auth", + "github.list_repos", + "Not authenticated with GitHub. Run `gh auth login` in a terminal.", + )); + } + return Err(ErrorEnvelope::runtime( + "github.list_repos", + format!("gh api failed: {stderr}"), + )); + } + + let stdout = String::from_utf8_lossy(&output.stdout); + + let mut repos = Vec::new(); + for line in stdout.lines() { + let line = line.trim(); + if line.is_empty() { + continue; + } + #[derive(serde::Deserialize)] + struct Row { + full_name: String, + description: Option, + private: bool, + } + if let Ok(row) = serde_json::from_str::(line) { + repos.push(GitHubRepo { + full_name: row.full_name, + description: row.description, + private: row.private, + }); + } + } + + Ok(repos) + }) + .await + .map_err(|e| ErrorEnvelope::runtime("github.list_repos", format!("Task failed: {e}")))? +} + +#[tauri::command] +pub async fn github_auth_status() -> Result { + tokio::task::spawn_blocking(|| { + let output = Command::new("gh") + .args(["auth", "status", "--hostname", "github.com"]) + .output(); + + match output { + Ok(out) => { + let authenticated = out.status.success(); + let message = if authenticated { + String::from_utf8_lossy(&out.stdout).trim().to_string() + } else { + String::from_utf8_lossy(&out.stderr).trim().to_string() + }; + + Ok(serde_json::json!({ + "available": true, + "authenticated": authenticated, + "message": message, + })) + } + Err(_) => Ok(serde_json::json!({ + "available": false, + "authenticated": false, + "message": "gh CLI not installed", + })), + } + }) + .await + .map_err(|e| ErrorEnvelope::runtime("github.auth_status", format!("Task failed: {e}")))? +} + +#[derive(serde::Serialize)] +pub struct GitHubAccount { + pub login: String, + pub active: bool, +} + +#[tauri::command] +pub async fn github_list_accounts() -> Result, ErrorEnvelope> { + tokio::task::spawn_blocking(|| { + let output = Command::new("gh") + .args(["auth", "status", "--json", "hosts"]) + .output() + .map_err(|e| { + ErrorEnvelope::new( + "auth", + "github.list_accounts", + format!("gh CLI not found: {e}"), + ) + })?; + + if !output.status.success() { + return Ok(Vec::new()); + } + + let stdout = String::from_utf8_lossy(&output.stdout); + + #[derive(serde::Deserialize)] + struct AccountEntry { + login: String, + active: bool, + } + + #[derive(serde::Deserialize)] + struct AuthStatus { + hosts: std::collections::HashMap>, + } + + let status: AuthStatus = serde_json::from_str(&stdout).map_err(|e| { + ErrorEnvelope::runtime( + "github.list_accounts", + format!("Failed to parse gh output: {e}"), + ) + })?; + + let mut accounts = Vec::new(); + for (_host, entries) in status.hosts { + for entry in entries { + accounts.push(GitHubAccount { + login: entry.login, + active: entry.active, + }); + } + } + + accounts.sort_by(|a, b| b.active.cmp(&a.active)); + + Ok(accounts) + }) + .await + .map_err(|e| { + ErrorEnvelope::runtime("github.list_accounts", format!("Task failed: {e}")) + })? +} + +#[tauri::command] +pub async fn github_switch_account(user: String) -> Result<(), ErrorEnvelope> { + tokio::task::spawn_blocking(move || { + let output = Command::new("gh") + .args(["auth", "switch", "--user", &user]) + .output() + .map_err(|e| { + ErrorEnvelope::new( + "auth", + "github.switch_account", + format!("gh CLI not found: {e}"), + ) + })?; + + if !output.status.success() { + let stderr = String::from_utf8_lossy(&output.stderr); + return Err(ErrorEnvelope::runtime( + "github.switch_account", + format!("Failed to switch account: {stderr}"), + )); + } + + Ok(()) + }) + .await + .map_err(|e| { + ErrorEnvelope::runtime("github.switch_account", format!("Task failed: {e}")) + })? +} diff --git a/OPUS-tauri-app/src-tauri/src/commands/migrations.rs b/OPUS-tauri-app/src-tauri/src/commands/migrations.rs new file mode 100644 index 00000000..8a9d3aab --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/commands/migrations.rs @@ -0,0 +1,74 @@ +use tauri::{AppHandle, State}; + +use crate::jobs::migration::{run_migration, RemoveOptions}; +use crate::state::AppState; +use crate::types::error::ErrorEnvelope; +use crate::types::job::MigrationJobRef; + +#[tauri::command] +pub fn migration_start( + app: AppHandle, + state: State<'_, AppState>, + workset_id: String, + repo_url: String, + action: String, + workspace_names: Vec, + delete_worktrees: Option, + delete_local: Option, +) -> Result { + let cli_path = resolve_cli(&state).map_err(|e| { + ErrorEnvelope::new("cli", "migration.start", &e) + })?; + + let remove_opts = if action == "remove" { + Some(RemoveOptions { + delete_worktrees: delete_worktrees.unwrap_or(true), + delete_local: delete_local.unwrap_or(false), + }) + } else { + None + }; + + let job_id = uuid::Uuid::new_v4().to_string(); + + let handle = run_migration( + app, + cli_path, + job_id.clone(), + workset_id, + repo_url, + action, + workspace_names, + remove_opts, + ); + + let mut migrations = state.migration_store.lock().unwrap(); + migrations.active_jobs.insert(job_id.clone(), handle); + + Ok(MigrationJobRef { job_id }) +} + +#[tauri::command] +pub fn migration_cancel( + state: State<'_, AppState>, + job_id: String, +) -> Result<(), ErrorEnvelope> { + let mut migrations = state.migration_store.lock().unwrap(); + if let Some(handle) = migrations.active_jobs.remove(&job_id) { + handle + .cancel + .store(true, std::sync::atomic::Ordering::Relaxed); + } + Ok(()) +} + +fn resolve_cli(state: &AppState) -> Result { + let cli = state.cli_path.lock().unwrap(); + if let Some(ref path) = *cli { + return Ok(path.clone()); + } + if let Some(found) = crate::cli::paths::resolve_workset_cli(None) { + return Ok(found.to_string_lossy().to_string()); + } + Err("workset CLI not found".to_string()) +} diff --git a/OPUS-tauri-app/src-tauri/src/commands/mod.rs b/OPUS-tauri-app/src-tauri/src/commands/mod.rs new file mode 100644 index 00000000..b2ee29d3 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/commands/mod.rs @@ -0,0 +1,9 @@ +pub mod context; +pub mod diagnostics; +pub mod diff; +pub mod github; +pub mod migrations; +pub mod pty; +pub mod repos; +pub mod worksets; +pub mod workspaces; diff --git a/OPUS-tauri-app/src-tauri/src/commands/pty.rs b/OPUS-tauri-app/src-tauri/src/commands/pty.rs new file mode 100644 index 00000000..ee0db972 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/commands/pty.rs @@ -0,0 +1,332 @@ +use tauri::{AppHandle, Emitter, State}; + +use crate::sessiond::client::{read_stream_message, SessiondClient}; +use crate::state::AppState; +use crate::types::error::ErrorEnvelope; +use crate::types::layout::TerminalLayout; +use crate::types::pty::{BootstrapPayload, PtyCreateResult}; + +/// Active PTY session handle +pub struct PtySession { + pub session_id: String, + pub workspace_name: String, + pub terminal_id: String, + pub stream_id: String, + pub cancel: std::sync::Arc, +} + +fn make_session_id(workspace_name: &str, terminal_id: &str) -> String { + format!("{}:{}", workspace_name, terminal_id) +} + +fn get_socket_path(state: &AppState) -> String { + state + .sessiond_path + .lock() + .ok() + .and_then(|p| p.clone()) + .unwrap_or_else(SessiondClient::default_socket_path) +} + +#[tauri::command] +pub fn pty_create( + _state: State<'_, AppState>, +) -> Result { + let terminal_id = uuid::Uuid::new_v4().to_string(); + Ok(PtyCreateResult { terminal_id }) +} + +#[tauri::command] +pub fn pty_start( + app: AppHandle, + state: State<'_, AppState>, + workspace_name: String, + terminal_id: String, + _kind: String, + cwd: String, +) -> Result<(), ErrorEnvelope> { + let session_id = make_session_id(&workspace_name, &terminal_id); + let socket_path = get_socket_path(&state); + let client = SessiondClient::new(&socket_path); + + // Create session + let _resp = client.create(&session_id, &cwd).map_err(|e| { + ErrorEnvelope::new("sessiond", "pty.start", &e) + })?; + + let stream_id = uuid::Uuid::new_v4().to_string(); + let cancel = std::sync::Arc::new(std::sync::atomic::AtomicBool::new(false)); + let cancel_clone = cancel.clone(); + + // Store session, cancelling any existing streaming thread first + { + let mut sessions = state.pty_sessions.lock().unwrap(); + if let Some(old) = sessions.remove(&session_id) { + old.cancel + .store(true, std::sync::atomic::Ordering::Relaxed); + } + sessions.insert( + session_id.clone(), + PtySession { + session_id: session_id.clone(), + workspace_name: workspace_name.clone(), + terminal_id: terminal_id.clone(), + stream_id: stream_id.clone(), + cancel, + }, + ); + } + + // Spawn streaming thread + let ws_name = workspace_name.clone(); + let term_id = terminal_id.clone(); + let sid = session_id.clone(); + let strid = stream_id.clone(); + + std::thread::spawn(move || { + let client = SessiondClient::new(&socket_path); + let attach_result = client.attach(&sid, &strid, 0, false); + + let (mut reader, first) = match attach_result { + Ok(r) => r, + Err(e) => { + app.emit("pty:lifecycle", serde_json::json!({ + "workspace_name": ws_name, + "terminal_id": term_id, + "status": "error", + "message": e, + })).ok(); + return; + } + }; + + // Handle first bootstrap message + emit_stream_message(&app, &ws_name, &term_id, &first); + + // Emit lifecycle started + app.emit("pty:lifecycle", serde_json::json!({ + "workspace_name": ws_name, + "terminal_id": term_id, + "status": "started", + })).ok(); + + // Stream loop + loop { + if cancel_clone.load(std::sync::atomic::Ordering::Relaxed) { + break; + } + match read_stream_message(&mut reader) { + Ok(msg) => { + // Re-check cancel after blocking read to avoid emitting + // stale data from cancelled threads that were blocked on read + if cancel_clone.load(std::sync::atomic::Ordering::Relaxed) { + break; + } + emit_stream_message(&app, &ws_name, &term_id, &msg); + } + Err(_) => { + break; + } + } + } + + // Emit lifecycle closed + app.emit("pty:lifecycle", serde_json::json!({ + "workspace_name": ws_name, + "terminal_id": term_id, + "status": "closed", + })).ok(); + }); + + Ok(()) +} + +fn emit_stream_message( + app: &AppHandle, + workspace_name: &str, + terminal_id: &str, + msg: &crate::sessiond::protocol::StreamMessage, +) { + match msg.msg_type.as_str() { + "bootstrap" => { + app.emit("pty:bootstrap", serde_json::json!({ + "workspace_name": workspace_name, + "terminal_id": terminal_id, + "snapshot": msg.data, + "alt_screen": msg.alt_screen, + "mouse": msg.mouse, + "mouse_sgr": msg.mouse_sgr, + "safe_to_replay": msg.safe_to_replay, + "initial_credit": msg.initial_credit, + "next_offset": msg.next_offset, + })).ok(); + } + "data" => { + let bytes = msg.data.as_ref().map(|d| d.len() as i64).unwrap_or(0); + app.emit("pty:data", serde_json::json!({ + "workspace_name": workspace_name, + "terminal_id": terminal_id, + "data": msg.data, + "bytes": bytes, + })).ok(); + } + "modes" => { + app.emit("pty:modes", serde_json::json!({ + "workspace_name": workspace_name, + "terminal_id": terminal_id, + "alt_screen": msg.alt_screen, + "mouse": msg.mouse, + "mouse_sgr": msg.mouse_sgr, + "mouse_encoding": msg.mouse_encoding, + })).ok(); + } + "error" => { + app.emit("pty:lifecycle", serde_json::json!({ + "workspace_name": workspace_name, + "terminal_id": terminal_id, + "status": "error", + "message": msg.error, + })).ok(); + } + _ => {} + } +} + +#[tauri::command] +pub fn pty_write( + state: State<'_, AppState>, + workspace_name: String, + terminal_id: String, + data: String, +) -> Result<(), ErrorEnvelope> { + let session_id = make_session_id(&workspace_name, &terminal_id); + let socket_path = get_socket_path(&state); + let client = SessiondClient::new(&socket_path); + + client.send_input(&session_id, &data).map_err(|e| { + ErrorEnvelope::new("sessiond", "pty.write", &e) + }) +} + +#[tauri::command] +pub fn pty_resize( + state: State<'_, AppState>, + workspace_name: String, + terminal_id: String, + cols: u32, + rows: u32, +) -> Result<(), ErrorEnvelope> { + let session_id = make_session_id(&workspace_name, &terminal_id); + let socket_path = get_socket_path(&state); + let client = SessiondClient::new(&socket_path); + + client.resize(&session_id, cols, rows).map_err(|e| { + ErrorEnvelope::new("sessiond", "pty.resize", &e) + }) +} + +#[tauri::command] +pub fn pty_ack( + state: State<'_, AppState>, + workspace_name: String, + terminal_id: String, + bytes: i64, +) -> Result<(), ErrorEnvelope> { + let session_id = make_session_id(&workspace_name, &terminal_id); + let socket_path = get_socket_path(&state); + + // Look up stream_id from active sessions + let stream_id = { + let sessions = state.pty_sessions.lock().unwrap(); + sessions + .get(&session_id) + .map(|s| s.stream_id.clone()) + .unwrap_or_default() + }; + + if stream_id.is_empty() { + return Err(ErrorEnvelope::new("sessiond", "pty.ack", "No active session")); + } + + let client = SessiondClient::new(&socket_path); + client.ack(&session_id, &stream_id, bytes).map_err(|e| { + ErrorEnvelope::new("sessiond", "pty.ack", &e) + }) +} + +#[tauri::command] +pub fn pty_bootstrap( + state: State<'_, AppState>, + workspace_name: String, + terminal_id: String, +) -> Result { + let session_id = make_session_id(&workspace_name, &terminal_id); + let socket_path = get_socket_path(&state); + let client = SessiondClient::new(&socket_path); + + let resp = client.bootstrap(&session_id).map_err(|e| { + ErrorEnvelope::new("sessiond", "pty.bootstrap", &e) + })?; + + Ok(BootstrapPayload { + workspace_name, + terminal_id, + snapshot: resp.snapshot, + backlog: resp.backlog, + backlog_truncated: Some(resp.backlog_truncated), + next_offset: resp.next_offset.map(|n| n as u64), + alt_screen: Some(resp.alt_screen), + mouse: Some(resp.mouse), + mouse_sgr: Some(resp.mouse_sgr), + safe_to_replay: Some(resp.safe_to_replay), + initial_credit: resp.initial_credit.map(|n| n as u64), + }) +} + +#[tauri::command] +pub fn pty_stop( + state: State<'_, AppState>, + workspace_name: String, + terminal_id: String, +) -> Result<(), ErrorEnvelope> { + let session_id = make_session_id(&workspace_name, &terminal_id); + + // Cancel the streaming thread + { + let mut sessions = state.pty_sessions.lock().unwrap(); + if let Some(session) = sessions.remove(&session_id) { + session + .cancel + .store(true, std::sync::atomic::Ordering::Relaxed); + } + } + + let socket_path = get_socket_path(&state); + let client = SessiondClient::new(&socket_path); + client.stop(&session_id).map_err(|e| { + ErrorEnvelope::new("sessiond", "pty.stop", &e) + }) +} + +// ---------- Layout persistence commands ---------- + +#[tauri::command] +pub fn layout_get( + state: State<'_, AppState>, + workspace_name: String, +) -> Result, ErrorEnvelope> { + let mut store = state.layout_store.lock().unwrap(); + Ok(store.get(&workspace_name)) +} + +#[tauri::command] +pub fn layout_save( + state: State<'_, AppState>, + workspace_name: String, + layout: TerminalLayout, +) -> Result<(), ErrorEnvelope> { + let mut store = state.layout_store.lock().unwrap(); + store.save(&workspace_name, &layout).map_err(|e| { + ErrorEnvelope::new("persistence", "layout.save", &e) + }) +} diff --git a/OPUS-tauri-app/src-tauri/src/commands/repos.rs b/OPUS-tauri-app/src-tauri/src/commands/repos.rs new file mode 100644 index 00000000..f824fe5d --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/commands/repos.rs @@ -0,0 +1,75 @@ +use tauri::State; +use crate::cli::{paths, runner}; +use crate::state::AppState; +use crate::types::error::ErrorEnvelope; +use crate::types::repo::{RepoInstance, RepoListEntry}; +use crate::types::workspace::WorkspaceSummary; + +#[tauri::command] +pub fn workspace_repos_list( + state: State<'_, AppState>, + workspace_name: String, +) -> Result, ErrorEnvelope> { + let cli_path = resolve_cli(&state)?; + + // Get workspace path from `workset ls --json` + let all_ws: Vec = runner::run_workset_json( + &cli_path, + &["ls", "--json"], + ) + .unwrap_or_default(); + let ws_path = all_ws + .iter() + .find(|w| w.name == workspace_name) + .map(|w| w.path.clone()) + .unwrap_or_default(); + + // Get repo list from `workset repo ls -w --json` + let entries: Vec = runner::run_workset_json( + &cli_path, + &["repo", "ls", "-w", &workspace_name, "--json"], + ) + .unwrap_or_default(); + + // Convert to RepoInstance with computed worktree paths + let repos = entries + .into_iter() + .map(|e| { + let worktree_path = if ws_path.is_empty() { + e.local_path.clone() + } else { + format!("{}/{}", ws_path, e.repo_dir) + }; + let missing = !std::path::Path::new(&worktree_path).exists(); + RepoInstance { + name: e.name, + worktree_path, + repo_dir: e.repo_dir, + missing, + default_branch: e.default_branch, + default_remote: e.remote, + } + }) + .collect(); + + Ok(repos) +} + +fn resolve_cli(state: &State<'_, AppState>) -> Result { + let cli = state.cli_path.lock().map_err(|e| { + ErrorEnvelope::runtime("resolve_cli", format!("Lock error: {e}")) + })?; + + if let Some(ref path) = *cli { + return Ok(path.clone()); + } + + if let Some(found) = paths::resolve_workset_cli(None) { + return Ok(found.to_string_lossy().to_string()); + } + + Err(ErrorEnvelope::config( + "resolve_cli", + "workset CLI not found. Install it with: go install ./cmd/workset", + )) +} diff --git a/OPUS-tauri-app/src-tauri/src/commands/worksets.rs b/OPUS-tauri-app/src-tauri/src/commands/worksets.rs new file mode 100644 index 00000000..36313982 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/commands/worksets.rs @@ -0,0 +1,69 @@ +use tauri::State; +use crate::state::AppState; +use crate::types::error::ErrorEnvelope; +use crate::types::workset::{WorksetDefaults, WorksetProfile}; + +#[tauri::command] +pub fn worksets_list(state: State<'_, AppState>) -> Result, ErrorEnvelope> { + let store = state.profiles.lock().map_err(|e| { + ErrorEnvelope::runtime("worksets.list", format!("Lock error: {e}")) + })?; + Ok(store.list()) +} + +#[tauri::command] +pub fn worksets_create( + state: State<'_, AppState>, + name: String, + defaults: Option, +) -> Result { + let mut store = state.profiles.lock().map_err(|e| { + ErrorEnvelope::runtime("worksets.create", format!("Lock error: {e}")) + })?; + store.create(&name, defaults) +} + +#[tauri::command] +pub fn worksets_update( + state: State<'_, AppState>, + id: String, + name: Option, + defaults: Option, +) -> Result { + let mut store = state.profiles.lock().map_err(|e| { + ErrorEnvelope::runtime("worksets.update", format!("Lock error: {e}")) + })?; + store.update(&id, name.as_deref(), defaults) +} + +#[tauri::command] +pub fn worksets_delete(state: State<'_, AppState>, id: String) -> Result<(), ErrorEnvelope> { + let mut store = state.profiles.lock().map_err(|e| { + ErrorEnvelope::runtime("worksets.delete", format!("Lock error: {e}")) + })?; + store.delete(&id) +} + +#[tauri::command] +pub fn worksets_repos_add( + state: State<'_, AppState>, + workset_id: String, + source: String, +) -> Result { + let mut store = state.profiles.lock().map_err(|e| { + ErrorEnvelope::runtime("worksets.repos.add", format!("Lock error: {e}")) + })?; + store.add_repo(&workset_id, &source) +} + +#[tauri::command] +pub fn worksets_repos_remove( + state: State<'_, AppState>, + workset_id: String, + source: String, +) -> Result { + let mut store = state.profiles.lock().map_err(|e| { + ErrorEnvelope::runtime("worksets.repos.remove", format!("Lock error: {e}")) + })?; + store.remove_repo(&workset_id, &source) +} diff --git a/OPUS-tauri-app/src-tauri/src/commands/workspaces.rs b/OPUS-tauri-app/src-tauri/src/commands/workspaces.rs new file mode 100644 index 00000000..aa43ae67 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/commands/workspaces.rs @@ -0,0 +1,131 @@ +use tauri::State; +use crate::cli::paths; +use crate::cli::runner; +use crate::state::AppState; +use crate::types::error::ErrorEnvelope; +use crate::types::workspace::{WorkspaceCreateJobRef, WorkspaceCreateProgress, WorkspaceSummary}; + +#[tauri::command] +pub fn workspaces_list( + state: State<'_, AppState>, + workset_id: String, +) -> Result, ErrorEnvelope> { + let cli_path = resolve_cli(&state)?; + + let all: Vec = runner::run_workset_json(&cli_path, &["ls", "--json"]) + .unwrap_or_default(); + + // Filter to workspaces belonging to this workset + let profiles = state.profiles.lock().map_err(|e| { + ErrorEnvelope::runtime("workspaces.list", format!("Lock error: {e}")) + })?; + let workset = profiles.list().into_iter().find(|w| w.id == workset_id); + let workspace_ids: Vec = workset + .map(|w| w.workspace_ids) + .unwrap_or_default(); + + let filtered: Vec = all + .into_iter() + .filter(|ws| workspace_ids.contains(&ws.name)) + .collect(); + Ok(filtered) +} + +#[tauri::command] +pub fn workspaces_create( + state: State<'_, AppState>, + workset_id: String, + name: String, + _path: Option, +) -> Result { + let cli_path = resolve_cli(&state)?; + + // Get repos from the workset profile + let profiles = state.profiles.lock().map_err(|e| { + ErrorEnvelope::runtime("workspaces.create", format!("Lock error: {e}")) + })?; + let workset = profiles + .list() + .into_iter() + .find(|w| w.id == workset_id) + .ok_or_else(|| { + ErrorEnvelope::config("workspaces.create", format!("Workset '{workset_id}' not found")) + })?; + let repos = workset.repos.clone(); + drop(profiles); + + // Build CLI args: workset new --repo ... + let mut args: Vec = vec!["new".into(), name.clone()]; + for repo in &repos { + args.push("--repo".into()); + args.push(repo.clone()); + } + let arg_refs: Vec<&str> = args.iter().map(|s| s.as_str()).collect(); + + runner::run_workset_command(&cli_path, &arg_refs)?; + + // Register the workspace in the workset profile + let mut profiles = state.profiles.lock().map_err(|e| { + ErrorEnvelope::runtime("workspaces.create", format!("Lock error: {e}")) + })?; + profiles.add_workspace(&workset_id, &name)?; + + let job_id = uuid::Uuid::new_v4().to_string(); + Ok(WorkspaceCreateJobRef { job_id }) +} + +#[tauri::command] +pub fn workspaces_create_status( + _state: State<'_, AppState>, + job_id: String, +) -> Result { + Ok(WorkspaceCreateProgress { + job_id, + state: "succeeded".into(), + repos: Vec::new(), + workspace_name: None, + workspace_path: None, + }) +} + +#[tauri::command] +pub fn workspaces_delete( + state: State<'_, AppState>, + workset_id: String, + workspace_name: String, + delete: Option, +) -> Result<(), ErrorEnvelope> { + let cli_path = resolve_cli(&state)?; + let mut args = vec!["rm", &workspace_name]; + if delete.unwrap_or(false) { + args.push("--delete"); + } + runner::run_workset_command(&cli_path, &args)?; + + // Remove the workspace from the workset profile + let mut profiles = state.profiles.lock().map_err(|e| { + ErrorEnvelope::runtime("workspaces.delete", format!("Lock error: {e}")) + })?; + profiles.remove_workspace(&workset_id, &workspace_name)?; + + Ok(()) +} + +fn resolve_cli(state: &State<'_, AppState>) -> Result { + let cli = state.cli_path.lock().map_err(|e| { + ErrorEnvelope::runtime("resolve_cli", format!("Lock error: {e}")) + })?; + + if let Some(ref path) = *cli { + return Ok(path.clone()); + } + + if let Some(found) = paths::resolve_workset_cli(None) { + return Ok(found.to_string_lossy().to_string()); + } + + Err(ErrorEnvelope::config( + "resolve_cli", + "workset CLI not found. Install it with: go install ./cmd/workset", + )) +} diff --git a/OPUS-tauri-app/src-tauri/src/diff_engine/mod.rs b/OPUS-tauri-app/src-tauri/src/diff_engine/mod.rs new file mode 100644 index 00000000..1d7b7d58 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/diff_engine/mod.rs @@ -0,0 +1,3 @@ +pub mod patch; +pub mod summary; +pub mod watcher; diff --git a/OPUS-tauri-app/src-tauri/src/diff_engine/patch.rs b/OPUS-tauri-app/src-tauri/src/diff_engine/patch.rs new file mode 100644 index 00000000..fe9877d0 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/diff_engine/patch.rs @@ -0,0 +1,75 @@ +use std::process::Command; + +use crate::types::diff::FilePatch; + +const MAX_PATCH_BYTES: u64 = 2 * 1024 * 1024; // 2MB +const MAX_PATCH_LINES: u32 = 20_000; + +/// Extract a unified diff patch for a single file. +pub fn compute_file_patch( + repo_path: &str, + path: &str, + _prev_path: Option<&str>, + status: &str, +) -> Result { + let mut patch = String::new(); + + if status == "A" || status == "untracked" { + // Untracked file: use no-index diff + let output = Command::new("git") + .current_dir(repo_path) + .args(["diff", "--no-index", "--unified=3", "--", "/dev/null", path]) + .output() + .map_err(|e| format!("git diff --no-index failed: {}", e))?; + // git diff --no-index returns exit code 1 for differences, which is expected + patch = String::from_utf8_lossy(&output.stdout).to_string(); + } else { + // Staged changes + let staged = Command::new("git") + .current_dir(repo_path) + .args(["diff", "--cached", "--unified=3", "--", path]) + .output() + .map_err(|e| format!("git diff --cached failed: {}", e))?; + let staged_out = String::from_utf8_lossy(&staged.stdout); + + // Unstaged changes + let unstaged = Command::new("git") + .current_dir(repo_path) + .args(["diff", "--unified=3", "--", path]) + .output() + .map_err(|e| format!("git diff failed: {}", e))?; + let unstaged_out = String::from_utf8_lossy(&unstaged.stdout); + + if !staged_out.is_empty() { + patch.push_str(&staged_out); + } + if !unstaged_out.is_empty() { + if !patch.is_empty() { + patch.push('\n'); + } + patch.push_str(&unstaged_out); + } + } + + let total_bytes = patch.len() as u64; + let total_lines = patch.lines().count() as u32; + + // Check for binary + let is_binary = patch.contains("Binary files") || patch.contains("GIT binary patch"); + + let truncated = total_bytes > MAX_PATCH_BYTES || total_lines > MAX_PATCH_LINES; + let final_patch = if truncated { + let limit = MAX_PATCH_BYTES.min(total_bytes) as usize; + patch[..limit].to_string() + } else { + patch + }; + + Ok(FilePatch { + patch: final_patch, + truncated, + total_bytes, + total_lines, + binary: if is_binary { Some(true) } else { None }, + }) +} diff --git a/OPUS-tauri-app/src-tauri/src/diff_engine/summary.rs b/OPUS-tauri-app/src-tauri/src/diff_engine/summary.rs new file mode 100644 index 00000000..6203ba80 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/diff_engine/summary.rs @@ -0,0 +1,201 @@ +use std::collections::HashMap; +use std::process::Command; + +use crate::types::diff::{DiffFileSummary, DiffSummary}; + +/// Compute a diff summary for a repo worktree, combining staged + unstaged + untracked. +pub fn compute_diff_summary(repo_path: &str) -> Result { + let mut file_map: HashMap = HashMap::new(); + + // 1. Staged name-status + parse_name_status(repo_path, true, &mut file_map)?; + // 2. Unstaged name-status + parse_name_status(repo_path, false, &mut file_map)?; + // 3. Staged numstat + parse_numstat(repo_path, true, &mut file_map)?; + // 4. Unstaged numstat + parse_numstat(repo_path, false, &mut file_map)?; + // 5. Untracked files + add_untracked(repo_path, &mut file_map)?; + + let mut files: Vec = file_map.into_values().collect(); + files.sort_by(|a, b| a.path.cmp(&b.path)); + + let total_added: u32 = files.iter().map(|f| f.added).sum(); + let total_removed: u32 = files.iter().map(|f| f.removed).sum(); + + Ok(DiffSummary { + files, + total_added, + total_removed, + }) +} + +fn parse_name_status( + repo_path: &str, + cached: bool, + map: &mut HashMap, +) -> Result<(), String> { + let mut cmd = Command::new("git"); + cmd.current_dir(repo_path) + .args(["diff", "--name-status", "--find-renames", "-z"]); + if cached { + cmd.arg("--cached"); + } + + let output = cmd.output().map_err(|e| format!("git diff failed: {}", e))?; + let stdout = String::from_utf8_lossy(&output.stdout); + + let parts: Vec<&str> = stdout.split('\0').collect(); + let mut i = 0; + while i < parts.len() { + let status_str = parts[i].trim(); + if status_str.is_empty() { + i += 1; + continue; + } + let status_char = status_str.chars().next().unwrap_or('M'); + let status = match status_char { + 'A' => "A", + 'D' => "D", + 'R' | 'C' => "R", + _ => "M", + }; + + if status_char == 'R' || status_char == 'C' { + // Rename/copy: next two entries are old_path and new_path + if i + 2 < parts.len() { + let prev_path = parts[i + 1].to_string(); + let path = parts[i + 2].to_string(); + map.entry(path.clone()).or_insert(DiffFileSummary { + path, + prev_path: Some(prev_path), + added: 0, + removed: 0, + status: status.to_string(), + binary: None, + }); + i += 3; + } else { + break; + } + } else { + if i + 1 < parts.len() { + let path = parts[i + 1].to_string(); + map.entry(path.clone()).or_insert(DiffFileSummary { + path, + prev_path: None, + added: 0, + removed: 0, + status: status.to_string(), + binary: None, + }); + i += 2; + } else { + break; + } + } + } + Ok(()) +} + +fn parse_numstat( + repo_path: &str, + cached: bool, + map: &mut HashMap, +) -> Result<(), String> { + let mut cmd = Command::new("git"); + cmd.current_dir(repo_path) + .args(["diff", "--numstat", "--find-renames", "-z"]); + if cached { + cmd.arg("--cached"); + } + + let output = cmd.output().map_err(|e| format!("git numstat failed: {}", e))?; + let stdout = String::from_utf8_lossy(&output.stdout); + + for line in stdout.lines() { + let parts: Vec<&str> = line.split('\t').collect(); + if parts.len() >= 3 { + let added: u32 = parts[0].parse().unwrap_or(0); + let removed: u32 = parts[1].parse().unwrap_or(0); + let path = parts[2].trim_matches('\0').to_string(); + + if parts[0] == "-" && parts[1] == "-" { + // Binary file + if let Some(entry) = map.get_mut(&path) { + entry.binary = Some(true); + } + } else if let Some(entry) = map.get_mut(&path) { + entry.added += added; + entry.removed += removed; + } + } + } + Ok(()) +} + +fn add_untracked( + repo_path: &str, + map: &mut HashMap, +) -> Result<(), String> { + let output = Command::new("git") + .current_dir(repo_path) + .args(["ls-files", "--others", "--exclude-standard", "-z"]) + .output() + .map_err(|e| format!("git ls-files failed: {}", e))?; + + let stdout = String::from_utf8_lossy(&output.stdout); + let untracked: Vec<&str> = stdout.split('\0').filter(|s| !s.is_empty()).collect(); + + // Batch numstat for untracked files + if !untracked.is_empty() { + for chunk in untracked.chunks(200) { + let mut cmd = Command::new("git"); + cmd.current_dir(repo_path) + .args(["diff", "--no-index", "--numstat", "-z", "--"]); + for path in chunk { + cmd.arg("/dev/null").arg(path); + } + let result = cmd.output(); + match result { + Ok(out) => { + let s = String::from_utf8_lossy(&out.stdout); + for line in s.lines() { + let parts: Vec<&str> = line.split('\t').collect(); + if parts.len() >= 3 { + let added: u32 = parts[0].parse().unwrap_or(0); + let path = parts[2] + .trim_matches('\0') + .trim_start_matches("./") + .to_string(); + map.entry(path.clone()).or_insert(DiffFileSummary { + path, + prev_path: None, + added, + removed: 0, + status: "A".to_string(), + binary: None, + }); + } + } + } + Err(_) => { + // Fallback: just list them without stats + for path in chunk { + let p = path.to_string(); + map.entry(p.clone()).or_insert(DiffFileSummary { + path: p, + prev_path: None, + added: 0, + removed: 0, + status: "A".to_string(), + binary: None, + }); + } + } + } + } + } + Ok(()) +} diff --git a/OPUS-tauri-app/src-tauri/src/diff_engine/watcher.rs b/OPUS-tauri-app/src-tauri/src/diff_engine/watcher.rs new file mode 100644 index 00000000..3c214c12 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/diff_engine/watcher.rs @@ -0,0 +1,74 @@ +use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::Arc; +use std::time::Duration; + +use tauri::{AppHandle, Emitter}; + +use crate::diff_engine::summary::compute_diff_summary; + +const POLL_INTERVAL_SECS: u64 = 5; + +/// Handle for a running diff watcher. +pub struct DiffWatcherHandle { + pub cancel: Arc, +} + +/// Start a background diff watcher for a repo worktree. Emits `diff:summary` events. +pub fn start_watcher( + app: AppHandle, + workspace_name: String, + repo_name: String, + repo_path: String, +) -> DiffWatcherHandle { + let cancel = Arc::new(AtomicBool::new(false)); + let cancel_clone = cancel.clone(); + + std::thread::spawn(move || { + let mut last_hash: Option = None; + + loop { + if cancel_clone.load(Ordering::Relaxed) { + break; + } + + match compute_diff_summary(&repo_path) { + Ok(summary) => { + // Simple hash to deduplicate + let hash = { + use std::hash::{Hash, Hasher}; + let mut hasher = std::collections::hash_map::DefaultHasher::new(); + format!("{:?}", summary.files).hash(&mut hasher); + hasher.finish() + }; + + if last_hash != Some(hash) { + last_hash = Some(hash); + app.emit("diff:summary", serde_json::json!({ + "workspace_name": workspace_name, + "repo": repo_name, + "summary": summary, + })).ok(); + } + } + Err(e) => { + app.emit("diff:status", serde_json::json!({ + "workspace_name": workspace_name, + "repo": repo_name, + "status": "error", + "message": e, + })).ok(); + } + } + + // Sleep with cancellation check + for _ in 0..(POLL_INTERVAL_SECS * 1000 / 500) { + if cancel_clone.load(Ordering::Relaxed) { + return; + } + std::thread::sleep(Duration::from_millis(500)); + } + } + }); + + DiffWatcherHandle { cancel } +} diff --git a/OPUS-tauri-app/src-tauri/src/jobs/migration.rs b/OPUS-tauri-app/src-tauri/src/jobs/migration.rs new file mode 100644 index 00000000..11f39889 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/jobs/migration.rs @@ -0,0 +1,159 @@ +use std::process::Command; +use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::Arc; + +use tauri::{AppHandle, Emitter}; + +use crate::types::job::{MigrationProgress, WorkspaceMigrationStatus}; + +#[derive(Debug, Clone, Default)] +pub struct RemoveOptions { + pub delete_worktrees: bool, + pub delete_local: bool, +} + +pub struct MigrationJobHandle { + pub job_id: String, + pub cancel: Arc, +} + +/// Run a migration job: add or remove a repo from the given workspaces. +pub fn run_migration( + app: AppHandle, + cli_path: String, + job_id: String, + _workset_id: String, + repo_url: String, + action: String, // "add" or "remove" + workspace_names: Vec, + remove_opts: Option, +) -> MigrationJobHandle { + let cancel = Arc::new(AtomicBool::new(false)); + let cancel_clone = cancel.clone(); + + let handle = MigrationJobHandle { + job_id: job_id.clone(), + cancel: cancel.clone(), + }; + + std::thread::spawn(move || { + let mut statuses: Vec = workspace_names + .iter() + .map(|name| WorkspaceMigrationStatus { + workspace_name: name.clone(), + state: "pending".to_string(), + error: None, + }) + .collect(); + + emit_progress(&app, &job_id, "running", &statuses); + + for (i, ws_name) in workspace_names.iter().enumerate() { + if cancel_clone.load(Ordering::Relaxed) { + for status in statuses.iter_mut().skip(i) { + status.state = "failed".to_string(); + } + emit_progress(&app, &job_id, "canceled", &statuses); + return; + } + + statuses[i].state = "running".to_string(); + emit_progress(&app, &job_id, "running", &statuses); + + let result = if action == "add" { + run_add_repo(&cli_path, ws_name, &repo_url) + } else { + run_remove_repo(&cli_path, ws_name, &repo_url, remove_opts.as_ref()) + }; + + match result { + Ok(_) => { + statuses[i].state = "success".to_string(); + } + Err(e) => { + statuses[i].state = "failed".to_string(); + statuses[i].error = Some( + crate::types::error::ErrorEnvelope::new("migration", &action, &e), + ); + } + } + emit_progress(&app, &job_id, "running", &statuses); + } + + let has_failures = statuses.iter().any(|s| s.state == "failed"); + let final_state = if has_failures { "failed" } else { "done" }; + emit_progress(&app, &job_id, final_state, &statuses); + }); + + handle +} + +fn run_add_repo(cli_path: &str, workspace_name: &str, repo_url: &str) -> Result<(), String> { + let output = Command::new(cli_path) + .args(["repo", "add", "-w", workspace_name, repo_url]) + .output() + .map_err(|e| format!("Failed to run workset repo add: {}", e))?; + + if !output.status.success() { + let stderr = String::from_utf8_lossy(&output.stderr); + return Err(format!("repo add failed: {}", stderr)); + } + Ok(()) +} + +fn run_remove_repo( + cli_path: &str, + workspace_name: &str, + repo_url: &str, + opts: Option<&RemoveOptions>, +) -> Result<(), String> { + let repo_name = derive_repo_name(repo_url); + let mut args = vec!["repo", "remove", "-w", workspace_name, &repo_name, "--yes"]; + if let Some(o) = opts { + if o.delete_worktrees { + args.push("--delete-worktrees"); + } + if o.delete_local { + args.push("--delete-local"); + } + } + + let output = Command::new(cli_path) + .args(&args) + .output() + .map_err(|e| format!("Failed to run workset repo remove: {}", e))?; + + if !output.status.success() { + let stderr = String::from_utf8_lossy(&output.stderr); + return Err(format!("repo remove failed: {}", stderr)); + } + Ok(()) +} + +/// Derive the repo name from a URL/source string. +/// Mirrors Go's DeriveRepoNameFromURL: strips .git suffix, trailing slashes, +/// then returns the last path segment. +fn derive_repo_name(url: &str) -> String { + let trimmed = url.trim_end_matches(".git").trim_end_matches('/'); + if let Some(idx) = trimmed.rfind('/') { + return trimmed[idx + 1..].to_string(); + } + if let Some(idx) = trimmed.rfind(':') { + return trimmed[idx + 1..].to_string(); + } + trimmed.to_string() +} + +fn emit_progress( + app: &AppHandle, + job_id: &str, + state: &str, + workspaces: &[WorkspaceMigrationStatus], +) { + let progress = MigrationProgress { + job_id: job_id.to_string(), + state: state.to_string(), + workspaces: workspaces.to_vec(), + }; + app.emit("migration:progress", &progress).ok(); +} diff --git a/OPUS-tauri-app/src-tauri/src/jobs/mod.rs b/OPUS-tauri-app/src-tauri/src/jobs/mod.rs new file mode 100644 index 00000000..a571eaa2 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/jobs/mod.rs @@ -0,0 +1 @@ +pub mod migration; diff --git a/OPUS-tauri-app/src-tauri/src/lib.rs b/OPUS-tauri-app/src-tauri/src/lib.rs new file mode 100644 index 00000000..32178b49 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/lib.rs @@ -0,0 +1,66 @@ +mod cli; +mod commands; +mod diff_engine; +mod jobs; +mod sessiond; +mod state; +mod store; +mod types; + +pub fn run() { + tauri::Builder::default() + .plugin(tauri_plugin_opener::init()) + .manage(state::AppState::new()) + .invoke_handler(tauri::generate_handler![ + // Group 1: Worksets + commands::worksets::worksets_list, + commands::worksets::worksets_create, + commands::worksets::worksets_update, + commands::worksets::worksets_delete, + commands::worksets::worksets_repos_add, + commands::worksets::worksets_repos_remove, + // Group 2: Context + commands::context::context_get, + commands::context::context_set_active_workset, + commands::context::context_set_active_workspace, + // Group 3: Workspaces + commands::workspaces::workspaces_list, + commands::workspaces::workspaces_create, + commands::workspaces::workspaces_create_status, + commands::workspaces::workspaces_delete, + // Group 5: Repos + commands::repos::workspace_repos_list, + // Group 8: PTY + commands::pty::pty_create, + commands::pty::pty_start, + commands::pty::pty_write, + commands::pty::pty_resize, + commands::pty::pty_ack, + commands::pty::pty_bootstrap, + commands::pty::pty_stop, + // Layout persistence + commands::pty::layout_get, + commands::pty::layout_save, + // Group 6-7: Diff + commands::diff::diff_summary, + commands::diff::diff_file_patch, + commands::diff::diff_watch_start, + commands::diff::diff_watch_stop, + // Group 4: Migrations + commands::migrations::migration_start, + commands::migrations::migration_cancel, + // Group 9: Diagnostics + commands::diagnostics::diagnostics_env_snapshot, + commands::diagnostics::diagnostics_reload_login_env, + commands::diagnostics::diagnostics_sessiond_status, + commands::diagnostics::diagnostics_sessiond_restart, + commands::diagnostics::diagnostics_cli_status, + // Group 10: GitHub + commands::github::github_list_repos, + commands::github::github_auth_status, + commands::github::github_list_accounts, + commands::github::github_switch_account, + ]) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} diff --git a/OPUS-tauri-app/src-tauri/src/main.rs b/OPUS-tauri-app/src-tauri/src/main.rs new file mode 100644 index 00000000..b1febf22 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/main.rs @@ -0,0 +1,5 @@ +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + workset_desktop_lib::run() +} diff --git a/OPUS-tauri-app/src-tauri/src/sessiond/client.rs b/OPUS-tauri-app/src-tauri/src/sessiond/client.rs new file mode 100644 index 00000000..2f17c01a --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/sessiond/client.rs @@ -0,0 +1,220 @@ +use std::io::{BufRead, BufReader, Write}; +use std::os::unix::net::UnixStream; +use std::path::Path; +use std::time::Duration; + +use crate::sessiond::protocol::*; + +pub struct SessiondClient { + socket_path: String, +} + +impl SessiondClient { + pub fn new(socket_path: &str) -> Self { + Self { + socket_path: socket_path.to_string(), + } + } + + pub fn default_socket_path() -> String { + let home = dirs::home_dir().unwrap_or_default(); + let base = home.join(".workset"); + // Prefer dev socket if it exists (used during development) + let dev = base.join("sessiond-dev.sock"); + if dev.exists() { + return dev.to_string_lossy().to_string(); + } + base.join("sessiond.sock") + .to_string_lossy() + .to_string() + } + + fn connect(&self) -> Result { + let path = Path::new(&self.socket_path); + if !path.exists() { + return Err(format!("sessiond socket not found at {}", self.socket_path)); + } + let stream = UnixStream::connect(path) + .map_err(|e| format!("Failed to connect to sessiond: {}", e))?; + stream + .set_read_timeout(Some(Duration::from_secs(10))) + .ok(); + stream + .set_write_timeout(Some(Duration::from_secs(5))) + .ok(); + Ok(stream) + } + + fn control_call( + &self, + method: &str, + params: Option, + ) -> Result { + let mut stream = self.connect()?; + + let req = ControlRequest { + protocol_version: PROTOCOL_VERSION, + method: method.to_string(), + params, + }; + let mut payload = serde_json::to_string(&req) + .map_err(|e| format!("Failed to serialize request: {}", e))?; + payload.push('\n'); + + stream + .write_all(payload.as_bytes()) + .map_err(|e| format!("Failed to send request: {}", e))?; + stream + .flush() + .map_err(|e| format!("Failed to flush: {}", e))?; + + let mut reader = BufReader::new(stream); + let mut line = String::new(); + reader + .read_line(&mut line) + .map_err(|e| format!("Failed to read response: {}", e))?; + + let resp: ControlResponse = serde_json::from_str(line.trim()) + .map_err(|e| format!("Failed to parse response: {}", e))?; + + if !resp.ok { + return Err(resp.error.unwrap_or_else(|| "Unknown error".to_string())); + } + Ok(resp.result) + } + + pub fn create(&self, session_id: &str, cwd: &str) -> Result { + let params = serde_json::to_value(CreateRequest { + session_id: session_id.to_string(), + cwd: cwd.to_string(), + }) + .map_err(|e| e.to_string())?; + + let result = self.control_call("create", Some(params))?; + serde_json::from_value(result).map_err(|e| format!("Failed to parse create response: {}", e)) + } + + pub fn send_input(&self, session_id: &str, data: &str) -> Result<(), String> { + let params = serde_json::to_value(SendRequest { + session_id: session_id.to_string(), + data: data.to_string(), + }) + .map_err(|e| e.to_string())?; + + self.control_call("send", Some(params))?; + Ok(()) + } + + pub fn resize(&self, session_id: &str, cols: u32, rows: u32) -> Result<(), String> { + let params = serde_json::to_value(ResizeRequest { + session_id: session_id.to_string(), + cols, + rows, + }) + .map_err(|e| e.to_string())?; + + self.control_call("resize", Some(params))?; + Ok(()) + } + + pub fn ack( + &self, + session_id: &str, + stream_id: &str, + bytes: i64, + ) -> Result<(), String> { + let params = serde_json::to_value(AckRequest { + session_id: session_id.to_string(), + stream_id: stream_id.to_string(), + bytes, + }) + .map_err(|e| e.to_string())?; + + self.control_call("ack", Some(params))?; + Ok(()) + } + + pub fn bootstrap(&self, session_id: &str) -> Result { + let params = serde_json::to_value(BootstrapRequest { + session_id: session_id.to_string(), + }) + .map_err(|e| e.to_string())?; + + let result = self.control_call("bootstrap", Some(params))?; + serde_json::from_value(result) + .map_err(|e| format!("Failed to parse bootstrap response: {}", e)) + } + + pub fn stop(&self, session_id: &str) -> Result<(), String> { + let params = serde_json::to_value(StopRequest { + session_id: session_id.to_string(), + }) + .map_err(|e| e.to_string())?; + + self.control_call("stop", Some(params))?; + Ok(()) + } + + /// Opens a long-lived attach stream. Returns the stream and the first bootstrap message. + /// The caller should spawn a task to read from the stream in a loop. + pub fn attach( + &self, + session_id: &str, + stream_id: &str, + since: i64, + with_buffer: bool, + ) -> Result<(BufReader, StreamMessage), String> { + let mut stream = self.connect()?; + + // Attach uses a longer read timeout since it's a long-lived stream + stream + .set_read_timeout(Some(Duration::from_secs(300))) + .ok(); + + let req = AttachRequest { + protocol_version: PROTOCOL_VERSION, + msg_type: "attach".to_string(), + session_id: session_id.to_string(), + stream_id: Some(stream_id.to_string()), + since, + with_buffer, + }; + + let mut payload = serde_json::to_string(&req) + .map_err(|e| format!("Failed to serialize attach request: {}", e))?; + payload.push('\n'); + + stream + .write_all(payload.as_bytes()) + .map_err(|e| format!("Failed to send attach request: {}", e))?; + stream + .flush() + .map_err(|e| format!("Failed to flush: {}", e))?; + + let mut reader = BufReader::new(stream); + let mut line = String::new(); + reader + .read_line(&mut line) + .map_err(|e| format!("Failed to read initial message: {}", e))?; + + let first: StreamMessage = serde_json::from_str(line.trim()) + .map_err(|e| format!("Failed to parse initial stream message: {}", e))?; + + Ok((reader, first)) + } +} + +/// Read the next stream message from an attached stream. +pub fn read_stream_message( + reader: &mut BufReader, +) -> Result { + let mut line = String::new(); + reader + .read_line(&mut line) + .map_err(|e| format!("Stream read error: {}", e))?; + if line.is_empty() { + return Err("Stream closed".to_string()); + } + serde_json::from_str(line.trim()) + .map_err(|e| format!("Failed to parse stream message: {}", e)) +} diff --git a/OPUS-tauri-app/src-tauri/src/sessiond/lifecycle.rs b/OPUS-tauri-app/src-tauri/src/sessiond/lifecycle.rs new file mode 100644 index 00000000..6f9f13c2 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/sessiond/lifecycle.rs @@ -0,0 +1,31 @@ +use std::path::Path; +use std::process::Command; + +use crate::sessiond::client::SessiondClient; + +/// Check if sessiond is running by attempting a connection. +pub fn is_sessiond_running(socket_path: &str) -> bool { + Path::new(socket_path).exists() +} + +/// Attempt to start the sessiond binary. +pub fn start_sessiond(binary_path: &str) -> Result<(), String> { + Command::new(binary_path) + .arg("start") + .spawn() + .map_err(|e| format!("Failed to start sessiond: {}", e))?; + + // Give it a moment to start + std::thread::sleep(std::time::Duration::from_millis(500)); + Ok(()) +} + +/// Check sessiond health by connecting and verifying the socket is responsive. +pub fn check_health(socket_path: &str) -> Result { + if !is_sessiond_running(socket_path) { + return Ok(false); + } + // Try creating a client and doing a minimal operation + let _client = SessiondClient::new(socket_path); + Ok(true) +} diff --git a/OPUS-tauri-app/src-tauri/src/sessiond/mod.rs b/OPUS-tauri-app/src-tauri/src/sessiond/mod.rs new file mode 100644 index 00000000..edcaa6f4 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/sessiond/mod.rs @@ -0,0 +1,3 @@ +pub mod client; +pub mod lifecycle; +pub mod protocol; diff --git a/OPUS-tauri-app/src-tauri/src/sessiond/protocol.rs b/OPUS-tauri-app/src-tauri/src/sessiond/protocol.rs new file mode 100644 index 00000000..a420f447 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/sessiond/protocol.rs @@ -0,0 +1,163 @@ +use serde::{Deserialize, Serialize}; + +pub const PROTOCOL_VERSION: u32 = 2; + +// ---------- Control request/response ---------- + +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct ControlRequest { + pub protocol_version: u32, + pub method: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub params: Option, +} + +#[derive(Debug, Deserialize)] +pub struct ControlResponse { + pub ok: bool, + #[serde(default)] + pub result: serde_json::Value, + #[serde(default)] + pub error: Option, +} + +// ---------- Create ---------- + +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct CreateRequest { + pub session_id: String, + pub cwd: String, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct CreateResponse { + pub session_id: String, + #[serde(default)] + pub existing: bool, +} + +// ---------- Attach ---------- + +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct AttachRequest { + pub protocol_version: u32, + #[serde(rename = "type")] + pub msg_type: String, + pub session_id: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub stream_id: Option, + pub since: i64, + pub with_buffer: bool, +} + +// ---------- Stream message (received from sessiond) ---------- + +#[derive(Debug, Clone, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct StreamMessage { + #[serde(rename = "type")] + pub msg_type: String, + #[serde(default)] + pub session_id: String, + #[serde(default)] + pub stream_id: String, + #[serde(default)] + pub data: Option, + #[serde(default)] + pub len: Option, + #[serde(default)] + pub next_offset: Option, + #[serde(default)] + pub truncated: bool, + #[serde(default)] + pub source: Option, + #[serde(default)] + pub snapshot_source: Option, + #[serde(default)] + pub backlog_source: Option, + #[serde(default)] + pub backlog_truncated: bool, + #[serde(default)] + pub alt_screen: bool, + #[serde(default)] + pub mouse_mask: u8, + #[serde(default)] + pub mouse: bool, + #[serde(default)] + pub mouse_sgr: bool, + #[serde(default)] + pub mouse_encoding: Option, + #[serde(default)] + pub safe_to_replay: bool, + #[serde(default)] + pub initial_credit: Option, + #[serde(default)] + pub error: Option, +} + +// ---------- Send / Resize / Stop / ACK ---------- + +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct SendRequest { + pub session_id: String, + pub data: String, +} + +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct ResizeRequest { + pub session_id: String, + pub cols: u32, + pub rows: u32, +} + +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct StopRequest { + pub session_id: String, +} + +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct AckRequest { + pub session_id: String, + pub stream_id: String, + pub bytes: i64, +} + +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct BootstrapRequest { + pub session_id: String, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct BootstrapResponse { + pub session_id: String, + #[serde(default)] + pub snapshot: Option, + #[serde(default)] + pub backlog: Option, + #[serde(default)] + pub next_offset: Option, + #[serde(default)] + pub backlog_truncated: bool, + #[serde(default)] + pub alt_screen: bool, + #[serde(default)] + pub mouse: bool, + #[serde(default)] + pub mouse_sgr: bool, + #[serde(default)] + pub mouse_encoding: Option, + #[serde(default)] + pub safe_to_replay: bool, + #[serde(default)] + pub initial_credit: Option, +} diff --git a/OPUS-tauri-app/src-tauri/src/state.rs b/OPUS-tauri-app/src-tauri/src/state.rs new file mode 100644 index 00000000..b082aa61 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/state.rs @@ -0,0 +1,37 @@ +use std::collections::HashMap; +use std::sync::Mutex; + +use crate::commands::pty::PtySession; +use crate::diff_engine::watcher::DiffWatcherHandle; +use crate::store::layout::LayoutStore; +use crate::store::migrations::MigrationStore; +use crate::store::ui_context::UiContextStore; +use crate::store::workset_profiles::WorksetProfileStore; + +pub struct AppState { + pub profiles: Mutex, + pub ui_context: Mutex, + pub layout_store: Mutex, + pub migration_store: Mutex, + pub pty_sessions: Mutex>, + pub diff_watchers: Mutex>, + pub cli_path: Mutex>, + pub sessiond_path: Mutex>, +} + +impl AppState { + pub fn new() -> Self { + let profiles = WorksetProfileStore::load().unwrap_or_default(); + let ui_context = UiContextStore::load().unwrap_or_default(); + Self { + profiles: Mutex::new(profiles), + ui_context: Mutex::new(ui_context), + layout_store: Mutex::new(LayoutStore::new()), + migration_store: Mutex::new(MigrationStore::new()), + pty_sessions: Mutex::new(HashMap::new()), + diff_watchers: Mutex::new(HashMap::new()), + cli_path: Mutex::new(None), + sessiond_path: Mutex::new(None), + } + } +} diff --git a/OPUS-tauri-app/src-tauri/src/store/layout.rs b/OPUS-tauri-app/src-tauri/src/store/layout.rs new file mode 100644 index 00000000..99556107 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/store/layout.rs @@ -0,0 +1,67 @@ +use std::collections::HashMap; +use std::fs; +use std::path::PathBuf; + +use crate::types::layout::TerminalLayout; + +/// Persists terminal layout per workspace path. +pub struct LayoutStore { + dir: PathBuf, + cache: HashMap, +} + +impl LayoutStore { + pub fn new() -> Self { + let dir = dirs::home_dir() + .unwrap_or_default() + .join(".workset") + .join("layouts"); + fs::create_dir_all(&dir).ok(); + Self { + dir, + cache: HashMap::new(), + } + } + + fn path_for(&self, workspace_name: &str) -> PathBuf { + let safe_name = workspace_name.replace('/', "__"); + self.dir.join(format!("{}.json", safe_name)) + } + + pub fn get(&mut self, workspace_name: &str) -> Option { + if let Some(layout) = self.cache.get(workspace_name) { + return Some(layout.clone()); + } + let path = self.path_for(workspace_name); + if path.exists() { + if let Ok(data) = fs::read_to_string(&path) { + if let Ok(layout) = serde_json::from_str::(&data) { + self.cache.insert(workspace_name.to_string(), layout.clone()); + return Some(layout); + } + } + } + None + } + + pub fn save(&mut self, workspace_name: &str, layout: &TerminalLayout) -> Result<(), String> { + let path = self.path_for(workspace_name); + let data = serde_json::to_string_pretty(layout) + .map_err(|e| format!("Failed to serialize layout: {}", e))?; + fs::write(&path, data).map_err(|e| format!("Failed to write layout: {}", e))?; + self.cache.insert(workspace_name.to_string(), layout.clone()); + Ok(()) + } + + pub fn delete(&mut self, workspace_name: &str) { + let path = self.path_for(workspace_name); + fs::remove_file(path).ok(); + self.cache.remove(workspace_name); + } +} + +impl Default for LayoutStore { + fn default() -> Self { + Self::new() + } +} diff --git a/OPUS-tauri-app/src-tauri/src/store/migrations.rs b/OPUS-tauri-app/src-tauri/src/store/migrations.rs new file mode 100644 index 00000000..bd65ad63 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/store/migrations.rs @@ -0,0 +1,25 @@ +use std::collections::HashMap; + +use crate::jobs::migration::MigrationJobHandle; +use crate::types::job::MigrationProgress; + +/// Tracks active and completed migration jobs. +pub struct MigrationStore { + pub active_jobs: HashMap, + pub history: Vec, +} + +impl MigrationStore { + pub fn new() -> Self { + Self { + active_jobs: HashMap::new(), + history: Vec::new(), + } + } +} + +impl Default for MigrationStore { + fn default() -> Self { + Self::new() + } +} diff --git a/OPUS-tauri-app/src-tauri/src/store/mod.rs b/OPUS-tauri-app/src-tauri/src/store/mod.rs new file mode 100644 index 00000000..20501ff7 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/store/mod.rs @@ -0,0 +1,4 @@ +pub mod layout; +pub mod migrations; +pub mod ui_context; +pub mod workset_profiles; diff --git a/OPUS-tauri-app/src-tauri/src/store/ui_context.rs b/OPUS-tauri-app/src-tauri/src/store/ui_context.rs new file mode 100644 index 00000000..c5fea3de --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/store/ui_context.rs @@ -0,0 +1,77 @@ +use crate::types::error::ErrorEnvelope; +use std::collections::HashMap; +use std::path::PathBuf; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +struct UiContextData { + #[serde(skip_serializing_if = "Option::is_none")] + active_workset_id: Option, + #[serde(default)] + last_workspace_per_workset: HashMap, +} + +#[derive(Debug, Default)] +pub struct UiContextStore { + data: UiContextData, + path: PathBuf, +} + +impl UiContextStore { + pub fn load() -> Result { + let path = Self::store_path(); + let data = if path.exists() { + let raw = std::fs::read_to_string(&path).map_err(|e| { + ErrorEnvelope::config("ui_context.load", format!("Failed to read: {e}")) + })?; + serde_json::from_str(&raw).unwrap_or_default() + } else { + UiContextData::default() + }; + Ok(Self { data, path }) + } + + fn store_path() -> PathBuf { + let base = dirs::home_dir().unwrap_or_else(|| PathBuf::from(".")); + base.join(".workset").join("ui_context.json") + } + + fn save(&self) -> Result<(), ErrorEnvelope> { + if let Some(parent) = self.path.parent() { + std::fs::create_dir_all(parent).map_err(|e| { + ErrorEnvelope::config("ui_context.save", format!("Failed to create dir: {e}")) + })?; + } + let raw = serde_json::to_string_pretty(&self.data).map_err(|e| { + ErrorEnvelope::config("ui_context.save", format!("Failed to serialize: {e}")) + })?; + std::fs::write(&self.path, raw).map_err(|e| { + ErrorEnvelope::config("ui_context.save", format!("Failed to write: {e}")) + })?; + Ok(()) + } + + pub fn active_workset_id(&self) -> Option<&str> { + self.data.active_workset_id.as_deref() + } + + pub fn last_workspace_for(&self, workset_id: &str) -> Option<&str> { + self.data.last_workspace_per_workset.get(workset_id).map(|s| s.as_str()) + } + + pub fn set_active_workset(&mut self, workset_id: &str) -> Result<(), ErrorEnvelope> { + self.data.active_workset_id = Some(workset_id.to_string()); + self.save() + } + + pub fn set_active_workspace( + &mut self, + workset_id: &str, + workspace_name: &str, + ) -> Result<(), ErrorEnvelope> { + self.data + .last_workspace_per_workset + .insert(workset_id.to_string(), workspace_name.to_string()); + self.save() + } +} diff --git a/OPUS-tauri-app/src-tauri/src/store/workset_profiles.rs b/OPUS-tauri-app/src-tauri/src/store/workset_profiles.rs new file mode 100644 index 00000000..b7e0c609 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/store/workset_profiles.rs @@ -0,0 +1,172 @@ +use crate::types::error::ErrorEnvelope; +use crate::types::workset::{WorksetDefaults, WorksetProfile}; +use std::path::PathBuf; + +#[derive(Debug, Default)] +pub struct WorksetProfileStore { + profiles: Vec, + path: PathBuf, +} + +impl WorksetProfileStore { + pub fn load() -> Result { + let path = Self::store_path(); + let profiles = if path.exists() { + let data = std::fs::read_to_string(&path).map_err(|e| { + ErrorEnvelope::config("workset_profiles.load", format!("Failed to read store: {e}")) + })?; + serde_json::from_str(&data).unwrap_or_default() + } else { + Vec::new() + }; + Ok(Self { profiles, path }) + } + + fn store_path() -> PathBuf { + let base = dirs::home_dir().unwrap_or_else(|| PathBuf::from(".")); + base.join(".workset").join("ui_worksets.json") + } + + fn save(&self) -> Result<(), ErrorEnvelope> { + if let Some(parent) = self.path.parent() { + std::fs::create_dir_all(parent).map_err(|e| { + ErrorEnvelope::config("workset_profiles.save", format!("Failed to create dir: {e}")) + })?; + } + let data = serde_json::to_string_pretty(&self.profiles).map_err(|e| { + ErrorEnvelope::config("workset_profiles.save", format!("Failed to serialize: {e}")) + })?; + std::fs::write(&self.path, data).map_err(|e| { + ErrorEnvelope::config("workset_profiles.save", format!("Failed to write: {e}")) + })?; + Ok(()) + } + + pub fn list(&self) -> Vec { + self.profiles.clone() + } + + pub fn create( + &mut self, + name: &str, + defaults: Option, + ) -> Result { + let id = self.slugify_unique(name); + let now = chrono::Utc::now().to_rfc3339(); + let profile = WorksetProfile { + id, + name: name.to_string(), + repos: Vec::new(), + workspace_ids: Vec::new(), + defaults, + created_at: now.clone(), + updated_at: now, + }; + self.profiles.push(profile.clone()); + self.save()?; + Ok(profile) + } + + pub fn update( + &mut self, + id: &str, + name: Option<&str>, + defaults: Option, + ) -> Result { + let profile = self.profiles.iter_mut().find(|p| p.id == id).ok_or_else(|| { + ErrorEnvelope::config("workset_profiles.update", format!("Workset '{id}' not found")) + })?; + if let Some(n) = name { + profile.name = n.to_string(); + } + if let Some(d) = defaults { + profile.defaults = Some(d); + } + profile.updated_at = chrono::Utc::now().to_rfc3339(); + let result = profile.clone(); + self.save()?; + Ok(result) + } + + pub fn delete(&mut self, id: &str) -> Result<(), ErrorEnvelope> { + let before = self.profiles.len(); + self.profiles.retain(|p| p.id != id); + if self.profiles.len() == before { + return Err(ErrorEnvelope::config( + "workset_profiles.delete", + format!("Workset '{id}' not found"), + )); + } + self.save()?; + Ok(()) + } + + pub fn add_repo(&mut self, workset_id: &str, source: &str) -> Result { + let profile = self.profiles.iter_mut().find(|p| p.id == workset_id).ok_or_else(|| { + ErrorEnvelope::config("workset_profiles.add_repo", format!("Workset '{workset_id}' not found")) + })?; + if !profile.repos.contains(&source.to_string()) { + profile.repos.push(source.to_string()); + profile.updated_at = chrono::Utc::now().to_rfc3339(); + } + let result = profile.clone(); + self.save()?; + Ok(result) + } + + pub fn remove_repo(&mut self, workset_id: &str, source: &str) -> Result { + let profile = self.profiles.iter_mut().find(|p| p.id == workset_id).ok_or_else(|| { + ErrorEnvelope::config("workset_profiles.remove_repo", format!("Workset '{workset_id}' not found")) + })?; + profile.repos.retain(|r| r != source); + profile.updated_at = chrono::Utc::now().to_rfc3339(); + let result = profile.clone(); + self.save()?; + Ok(result) + } + + pub fn add_workspace(&mut self, workset_id: &str, workspace_name: &str) -> Result<(), ErrorEnvelope> { + let profile = self.profiles.iter_mut().find(|p| p.id == workset_id).ok_or_else(|| { + ErrorEnvelope::config("workset_profiles.add_workspace", format!("Workset '{workset_id}' not found")) + })?; + if !profile.workspace_ids.contains(&workspace_name.to_string()) { + profile.workspace_ids.push(workspace_name.to_string()); + profile.updated_at = chrono::Utc::now().to_rfc3339(); + } + self.save() + } + + pub fn remove_workspace(&mut self, workset_id: &str, workspace_name: &str) -> Result<(), ErrorEnvelope> { + let profile = self.profiles.iter_mut().find(|p| p.id == workset_id).ok_or_else(|| { + ErrorEnvelope::config("workset_profiles.remove_workspace", format!("Workset '{workset_id}' not found")) + })?; + profile.workspace_ids.retain(|w| w != workspace_name); + profile.updated_at = chrono::Utc::now().to_rfc3339(); + self.save() + } + + fn slugify_unique(&self, name: &str) -> String { + let base: String = name + .to_lowercase() + .chars() + .map(|c| if c.is_alphanumeric() { c } else { '-' }) + .collect::() + .trim_matches('-') + .to_string(); + let base = if base.is_empty() { + "workset".to_string() + } else { + base + }; + if !self.profiles.iter().any(|p| p.id == base) { + return base; + } + for i in 2.. { + let candidate = format!("{base}-{i}"); + if !self.profiles.iter().any(|p| p.id == candidate) { + return candidate; + } + } + unreachable!() + } +} diff --git a/OPUS-tauri-app/src-tauri/src/types/context.rs b/OPUS-tauri-app/src-tauri/src/types/context.rs new file mode 100644 index 00000000..c60a39f4 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/types/context.rs @@ -0,0 +1,9 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +pub struct ActiveContext { + #[serde(skip_serializing_if = "Option::is_none")] + pub active_workset_id: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub active_workspace: Option, +} diff --git a/OPUS-tauri-app/src-tauri/src/types/diagnostics.rs b/OPUS-tauri-app/src-tauri/src/types/diagnostics.rs new file mode 100644 index 00000000..68debce5 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/types/diagnostics.rs @@ -0,0 +1,31 @@ +use serde::Serialize; + +#[derive(Debug, Clone, Serialize)] +pub struct EnvSnapshot { + pub path: String, + pub shell: String, + pub home: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub ssh_auth_sock: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub git_ssh_command: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub git_askpass: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub gh_config_dir: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub gh_auth_summary: Option, +} + +#[derive(Debug, Clone, Serialize)] +pub struct SessiondStatus { + pub running: bool, + #[serde(skip_serializing_if = "Option::is_none")] + pub version: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub socket_path: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub last_error: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub last_restart: Option, +} diff --git a/OPUS-tauri-app/src-tauri/src/types/diff.rs b/OPUS-tauri-app/src-tauri/src/types/diff.rs new file mode 100644 index 00000000..384e1c8d --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/types/diff.rs @@ -0,0 +1,30 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct DiffSummary { + pub files: Vec, + pub total_added: u32, + pub total_removed: u32, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct DiffFileSummary { + pub path: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub prev_path: Option, + pub added: u32, + pub removed: u32, + pub status: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub binary: Option, +} + +#[derive(Debug, Clone, Serialize)] +pub struct FilePatch { + pub patch: String, + pub truncated: bool, + pub total_bytes: u64, + pub total_lines: u32, + #[serde(skip_serializing_if = "Option::is_none")] + pub binary: Option, +} diff --git a/OPUS-tauri-app/src-tauri/src/types/error.rs b/OPUS-tauri-app/src-tauri/src/types/error.rs new file mode 100644 index 00000000..543d8921 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/types/error.rs @@ -0,0 +1,56 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct ErrorEnvelope { + pub category: String, + pub operation: String, + pub message: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub details: Option, + pub retryable: bool, + #[serde(default)] + pub suggested_actions: Vec, +} + +impl ErrorEnvelope { + pub fn new(category: &str, operation: &str, message: impl Into) -> Self { + Self { + category: category.to_string(), + operation: operation.to_string(), + message: message.into(), + details: None, + retryable: false, + suggested_actions: Vec::new(), + } + } + + pub fn with_details(mut self, details: impl Into) -> Self { + self.details = Some(details.into()); + self + } + + pub fn retryable(mut self) -> Self { + self.retryable = true; + self + } + + pub fn config(operation: &str, message: impl Into) -> Self { + Self::new("config", operation, message) + } + + pub fn runtime(operation: &str, message: impl Into) -> Self { + Self::new("runtime", operation, message) + } + + pub fn unknown(operation: &str, message: impl Into) -> Self { + Self::new("unknown", operation, message) + } +} + +impl std::fmt::Display for ErrorEnvelope { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "[{}] {}: {}", self.category, self.operation, self.message) + } +} + +impl std::error::Error for ErrorEnvelope {} diff --git a/OPUS-tauri-app/src-tauri/src/types/job.rs b/OPUS-tauri-app/src-tauri/src/types/job.rs new file mode 100644 index 00000000..7d5a612e --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/types/job.rs @@ -0,0 +1,22 @@ +use serde::Serialize; +use super::error::ErrorEnvelope; + +#[derive(Debug, Clone, Serialize)] +pub struct MigrationJobRef { + pub job_id: String, +} + +#[derive(Debug, Clone, Serialize)] +pub struct MigrationProgress { + pub job_id: String, + pub state: String, + pub workspaces: Vec, +} + +#[derive(Debug, Clone, Serialize)] +pub struct WorkspaceMigrationStatus { + pub workspace_name: String, + pub state: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub error: Option, +} diff --git a/OPUS-tauri-app/src-tauri/src/types/layout.rs b/OPUS-tauri-app/src-tauri/src/types/layout.rs new file mode 100644 index 00000000..675072c7 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/types/layout.rs @@ -0,0 +1,37 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct TerminalLayout { + pub version: u32, + pub root: LayoutNode, + #[serde(skip_serializing_if = "Option::is_none")] + pub focused_pane_id: Option, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(tag = "kind")] +pub enum LayoutNode { + #[serde(rename = "pane")] + Pane { + id: String, + tabs: Vec, + #[serde(skip_serializing_if = "Option::is_none")] + active_tab_id: Option, + }, + #[serde(rename = "split")] + Split { + id: String, + direction: String, + ratio: f64, + first: Box, + second: Box, + }, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct LayoutTab { + pub id: String, + pub terminal_id: String, + pub title: String, + pub kind: String, +} diff --git a/OPUS-tauri-app/src-tauri/src/types/mod.rs b/OPUS-tauri-app/src-tauri/src/types/mod.rs new file mode 100644 index 00000000..27509b49 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/types/mod.rs @@ -0,0 +1,10 @@ +pub mod context; +pub mod diagnostics; +pub mod diff; +pub mod error; +pub mod job; +pub mod layout; +pub mod pty; +pub mod repo; +pub mod workset; +pub mod workspace; diff --git a/OPUS-tauri-app/src-tauri/src/types/pty.rs b/OPUS-tauri-app/src-tauri/src/types/pty.rs new file mode 100644 index 00000000..586a9a1d --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/types/pty.rs @@ -0,0 +1,30 @@ +use serde::Serialize; + +#[derive(Debug, Clone, Serialize)] +pub struct PtyCreateResult { + pub terminal_id: String, +} + +#[derive(Debug, Clone, Serialize)] +pub struct BootstrapPayload { + pub workspace_name: String, + pub terminal_id: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub snapshot: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub backlog: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub backlog_truncated: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub next_offset: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub alt_screen: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub mouse: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub mouse_sgr: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub safe_to_replay: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub initial_credit: Option, +} diff --git a/OPUS-tauri-app/src-tauri/src/types/repo.rs b/OPUS-tauri-app/src-tauri/src/types/repo.rs new file mode 100644 index 00000000..369d1d9c --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/types/repo.rs @@ -0,0 +1,29 @@ +use serde::{Deserialize, Serialize}; + +/// Raw JSON from `workset repo ls --json` +#[derive(Debug, Clone, Deserialize)] +pub struct RepoListEntry { + pub name: String, + pub local_path: String, + #[serde(default)] + pub managed: bool, + pub repo_dir: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub remote: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub default_branch: Option, +} + +/// Enriched repo info sent to the frontend +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct RepoInstance { + pub name: String, + pub worktree_path: String, + pub repo_dir: String, + #[serde(default)] + pub missing: bool, + #[serde(skip_serializing_if = "Option::is_none")] + pub default_branch: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub default_remote: Option, +} diff --git a/OPUS-tauri-app/src-tauri/src/types/workset.rs b/OPUS-tauri-app/src-tauri/src/types/workset.rs new file mode 100644 index 00000000..da210f46 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/types/workset.rs @@ -0,0 +1,25 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct WorksetProfile { + pub id: String, + pub name: String, + #[serde(default)] + pub repos: Vec, + #[serde(default)] + pub workspace_ids: Vec, + #[serde(skip_serializing_if = "Option::is_none")] + pub defaults: Option, + pub created_at: String, + pub updated_at: String, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct WorksetDefaults { + #[serde(skip_serializing_if = "Option::is_none")] + pub base_branch: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub default_remote: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub workspace_root: Option, +} diff --git a/OPUS-tauri-app/src-tauri/src/types/workspace.rs b/OPUS-tauri-app/src-tauri/src/types/workspace.rs new file mode 100644 index 00000000..80071143 --- /dev/null +++ b/OPUS-tauri-app/src-tauri/src/types/workspace.rs @@ -0,0 +1,46 @@ +use serde::{Deserialize, Serialize}; +use super::error::ErrorEnvelope; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct WorkspaceSummary { + pub name: String, + pub path: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub created_at: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub last_used: Option, + #[serde(default)] + pub archived: bool, + #[serde(default)] + pub pinned: bool, + #[serde(default)] + pub pin_order: i32, + #[serde(default)] + pub expanded: bool, +} + +#[derive(Debug, Clone, Serialize)] +pub struct WorkspaceCreateJobRef { + pub job_id: String, +} + +#[derive(Debug, Clone, Serialize)] +pub struct WorkspaceCreateProgress { + pub job_id: String, + pub state: String, + pub repos: Vec, + #[serde(skip_serializing_if = "Option::is_none")] + pub workspace_name: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub workspace_path: Option, +} + +#[derive(Debug, Clone, Serialize)] +pub struct RepoProvisionStatus { + pub name: String, + pub state: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub step: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub error: Option, +} diff --git a/OPUS-tauri-app/src-tauri/tauri.conf.json b/OPUS-tauri-app/src-tauri/tauri.conf.json new file mode 100644 index 00000000..4d1cebcf --- /dev/null +++ b/OPUS-tauri-app/src-tauri/tauri.conf.json @@ -0,0 +1,39 @@ +{ + "$schema": "https://schema.tauri.app/config/2", + "productName": "Workset Desktop", + "version": "0.1.0", + "identifier": "com.workset.desktop", + "build": { + "beforeDevCommand": "npm run dev", + "devUrl": "http://localhost:1420", + "beforeBuildCommand": "npm run build", + "frontendDist": "../dist" + }, + "app": { + "windows": [ + { + "title": "Workset Desktop", + "width": 1440, + "height": 900, + "minWidth": 1024, + "minHeight": 640, + "decorations": true, + "transparent": false, + "titleBarStyle": "Overlay", + "hiddenTitle": true + } + ], + "security": { + "csp": null + } + }, + "bundle": { + "active": true, + "targets": "all", + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png" + ] + } +} diff --git a/OPUS-tauri-app/src/App.tsx b/OPUS-tauri-app/src/App.tsx new file mode 100644 index 00000000..a96314ec --- /dev/null +++ b/OPUS-tauri-app/src/App.tsx @@ -0,0 +1,53 @@ +import { useEffect } from 'react'; +import { useAppStore } from '@/state/store'; +import { AppShell } from '@/components/layout/AppShell'; +import { TopChrome } from '@/components/layout/TopChrome'; +import { IconRail } from '@/components/layout/IconRail'; +import { SecondarySidebar } from '@/components/layout/SecondarySidebar'; +import { RightPanel } from '@/components/layout/RightPanel'; +import { CommandCenterPage } from '@/components/pages/CommandCenter/CommandCenterPage'; +import { SpacesPage } from '@/components/pages/Spaces/SpacesPage'; +import { SettingsPage } from '@/components/pages/Settings/SettingsPage'; +import { WorksetCreateModal } from '@/components/modals/WorksetCreateModal'; +import { CreateWorkspaceModal } from '@/components/pages/Spaces/CreateWorkspaceModal'; +import { MigrationStatusModal } from '@/components/modals/MigrationStatusModal'; +import { RepoRemoveConfirmModal } from '@/components/modals/RepoRemoveConfirmModal'; + +function MainContent() { + const activePage = useAppStore((s) => s.activePage); + + switch (activePage) { + case 'command-center': + return ; + case 'spaces': + return ; + case 'settings': + return ; + } +} + +export default function App() { + const loadWorksets = useAppStore((s) => s.loadWorksets); + const activeModal = useAppStore((s) => s.activeModal); + const activePage = useAppStore((s) => s.activePage); + + useEffect(() => { + loadWorksets(); + }, [loadWorksets]); + + return ( + <> + } + rail={} + sidebar={} + main={} + rightPanel={activePage === 'spaces' ? : undefined} + /> + {activeModal?.type === 'create-workset' && } + {activeModal?.type === 'create-workspace' && } + {activeModal?.type === 'migration-status' && } + {activeModal?.type === 'repo-remove-confirm' && } + + ); +} diff --git a/OPUS-tauri-app/src/api/context.ts b/OPUS-tauri-app/src/api/context.ts new file mode 100644 index 00000000..7bd21540 --- /dev/null +++ b/OPUS-tauri-app/src/api/context.ts @@ -0,0 +1,14 @@ +import { invoke } from './invoke'; +import type { ActiveContext } from '@/types/context'; + +export function getContext(): Promise { + return invoke('context_get'); +} + +export function setActiveWorkset(worksetId: string): Promise { + return invoke('context_set_active_workset', { worksetId }); +} + +export function setActiveWorkspace(workspaceName: string): Promise { + return invoke('context_set_active_workspace', { workspaceName }); +} diff --git a/OPUS-tauri-app/src/api/diagnostics.ts b/OPUS-tauri-app/src/api/diagnostics.ts new file mode 100644 index 00000000..76a89f41 --- /dev/null +++ b/OPUS-tauri-app/src/api/diagnostics.ts @@ -0,0 +1,22 @@ +import { invoke } from './invoke'; +import type { EnvSnapshot, SessiondStatus, CliStatus } from '@/types/diagnostics'; + +export function envSnapshot(): Promise { + return invoke('diagnostics_env_snapshot', {}); +} + +export function reloadLoginEnv(): Promise { + return invoke('diagnostics_reload_login_env', {}); +} + +export function sessiondStatus(): Promise { + return invoke('diagnostics_sessiond_status', {}); +} + +export function sessiondRestart(): Promise { + return invoke('diagnostics_sessiond_restart', {}); +} + +export function cliStatus(): Promise { + return invoke('diagnostics_cli_status', {}); +} diff --git a/OPUS-tauri-app/src/api/diff.ts b/OPUS-tauri-app/src/api/diff.ts new file mode 100644 index 00000000..0d723c16 --- /dev/null +++ b/OPUS-tauri-app/src/api/diff.ts @@ -0,0 +1,31 @@ +import { invoke } from './invoke'; +import type { DiffSummary, FilePatch } from '@/types/diff'; + +export function diffSummary( + workspaceName: string, + repo: string, + repoPath: string, +): Promise { + return invoke('diff_summary', { workspaceName, repo, repoPath }); +} + +export function diffFilePatch( + repoPath: string, + path: string, + prevPath: string | undefined, + status: string, +): Promise { + return invoke('diff_file_patch', { repoPath, path, prevPath, status }); +} + +export function diffWatchStart( + workspaceName: string, + repo: string, + repoPath: string, +): Promise { + return invoke('diff_watch_start', { workspaceName, repo, repoPath }); +} + +export function diffWatchStop(workspaceName: string, repo: string): Promise { + return invoke('diff_watch_stop', { workspaceName, repo }); +} diff --git a/OPUS-tauri-app/src/api/events.ts b/OPUS-tauri-app/src/api/events.ts new file mode 100644 index 00000000..8d427e82 --- /dev/null +++ b/OPUS-tauri-app/src/api/events.ts @@ -0,0 +1,5 @@ +import { listen, type UnlistenFn } from '@tauri-apps/api/event'; + +export function onEvent(event: string, handler: (payload: T) => void): Promise { + return listen(event, (e) => handler(e.payload)); +} diff --git a/OPUS-tauri-app/src/api/github.ts b/OPUS-tauri-app/src/api/github.ts new file mode 100644 index 00000000..94ef7fee --- /dev/null +++ b/OPUS-tauri-app/src/api/github.ts @@ -0,0 +1,18 @@ +import { invoke } from './invoke'; +import type { GitHubRepo, GitHubAuthStatus, GitHubAccount } from '@/types/github'; + +export function listGitHubRepos(): Promise { + return invoke('github_list_repos'); +} + +export function githubAuthStatus(): Promise { + return invoke('github_auth_status'); +} + +export function listGitHubAccounts(): Promise { + return invoke('github_list_accounts'); +} + +export function switchGitHubAccount(user: string): Promise { + return invoke('github_switch_account', { user }); +} diff --git a/OPUS-tauri-app/src/api/invoke.ts b/OPUS-tauri-app/src/api/invoke.ts new file mode 100644 index 00000000..0124f8ff --- /dev/null +++ b/OPUS-tauri-app/src/api/invoke.ts @@ -0,0 +1,5 @@ +import { invoke as tauriInvoke } from '@tauri-apps/api/core'; + +export async function invoke(cmd: string, args?: Record): Promise { + return tauriInvoke(cmd, args); +} diff --git a/OPUS-tauri-app/src/api/migrations.ts b/OPUS-tauri-app/src/api/migrations.ts new file mode 100644 index 00000000..e4519177 --- /dev/null +++ b/OPUS-tauri-app/src/api/migrations.ts @@ -0,0 +1,26 @@ +import { invoke } from './invoke'; +import type { MigrationJobRef } from '@/types/jobs'; + +export type MigrationStartOptions = { + worksetId: string; + repoUrl: string; + action: 'add' | 'remove'; + workspaceNames: string[]; + deleteWorktrees?: boolean; + deleteLocal?: boolean; +}; + +export function migrationStart(opts: MigrationStartOptions): Promise { + return invoke('migration_start', { + worksetId: opts.worksetId, + repoUrl: opts.repoUrl, + action: opts.action, + workspaceNames: opts.workspaceNames, + deleteWorktrees: opts.deleteWorktrees, + deleteLocal: opts.deleteLocal, + }); +} + +export function migrationCancel(jobId: string): Promise { + return invoke('migration_cancel', { jobId }); +} diff --git a/OPUS-tauri-app/src/api/pty.ts b/OPUS-tauri-app/src/api/pty.ts new file mode 100644 index 00000000..6c4f4204 --- /dev/null +++ b/OPUS-tauri-app/src/api/pty.ts @@ -0,0 +1,52 @@ +import { invoke } from './invoke'; +import type { PtyCreateResult, BootstrapPayload } from '@/types/pty'; +import type { TerminalLayout } from '@/types/layout'; + +export function ptyCreate(): Promise { + return invoke('pty_create', {}); +} + +export function ptyStart( + workspaceName: string, + terminalId: string, + kind: 'terminal' | 'agent', + cwd: string, +): Promise { + return invoke('pty_start', { workspaceName, terminalId, kind, cwd }); +} + +export function ptyWrite(workspaceName: string, terminalId: string, data: string): Promise { + return invoke('pty_write', { workspaceName, terminalId, data }); +} + +export function ptyResize( + workspaceName: string, + terminalId: string, + cols: number, + rows: number, +): Promise { + return invoke('pty_resize', { workspaceName, terminalId, cols, rows }); +} + +export function ptyAck(workspaceName: string, terminalId: string, bytes: number): Promise { + return invoke('pty_ack', { workspaceName, terminalId, bytes }); +} + +export function ptyBootstrap( + workspaceName: string, + terminalId: string, +): Promise { + return invoke('pty_bootstrap', { workspaceName, terminalId }); +} + +export function ptyStop(workspaceName: string, terminalId: string): Promise { + return invoke('pty_stop', { workspaceName, terminalId }); +} + +export function layoutGet(workspaceName: string): Promise { + return invoke('layout_get', { workspaceName }); +} + +export function layoutSave(workspaceName: string, layout: TerminalLayout): Promise { + return invoke('layout_save', { workspaceName, layout }); +} diff --git a/OPUS-tauri-app/src/api/repos.ts b/OPUS-tauri-app/src/api/repos.ts new file mode 100644 index 00000000..60c3ad6e --- /dev/null +++ b/OPUS-tauri-app/src/api/repos.ts @@ -0,0 +1,6 @@ +import { invoke } from './invoke'; +import type { RepoInstance } from '@/types/repo'; + +export function listWorkspaceRepos(workspaceName: string): Promise { + return invoke('workspace_repos_list', { workspaceName }); +} diff --git a/OPUS-tauri-app/src/api/worksets.ts b/OPUS-tauri-app/src/api/worksets.ts new file mode 100644 index 00000000..e7889b50 --- /dev/null +++ b/OPUS-tauri-app/src/api/worksets.ts @@ -0,0 +1,26 @@ +import { invoke } from './invoke'; +import type { WorksetProfile, WorksetDefaults } from '@/types/workset'; + +export function listWorksets(): Promise { + return invoke('worksets_list'); +} + +export function createWorkset(name: string, defaults?: WorksetDefaults): Promise { + return invoke('worksets_create', { name, defaults }); +} + +export function updateWorkset(id: string, name?: string, defaults?: WorksetDefaults): Promise { + return invoke('worksets_update', { id, name, defaults }); +} + +export function deleteWorkset(id: string): Promise { + return invoke('worksets_delete', { id }); +} + +export function addWorksetRepo(worksetId: string, source: string): Promise { + return invoke('worksets_repos_add', { worksetId, source }); +} + +export function removeWorksetRepo(worksetId: string, source: string): Promise { + return invoke('worksets_repos_remove', { worksetId, source }); +} diff --git a/OPUS-tauri-app/src/api/workspaces.ts b/OPUS-tauri-app/src/api/workspaces.ts new file mode 100644 index 00000000..13e9a8e5 --- /dev/null +++ b/OPUS-tauri-app/src/api/workspaces.ts @@ -0,0 +1,18 @@ +import { invoke } from './invoke'; +import type { WorkspaceSummary, WorkspaceCreateJobRef, WorkspaceCreateProgress } from '@/types/workspace'; + +export function listWorkspaces(worksetId: string): Promise { + return invoke('workspaces_list', { worksetId }); +} + +export function createWorkspace(worksetId: string, name: string, path?: string): Promise { + return invoke('workspaces_create', { worksetId, name, path }); +} + +export function getCreateStatus(jobId: string): Promise { + return invoke('workspaces_create_status', { jobId }); +} + +export function deleteWorkspace(worksetId: string, workspaceName: string, del?: boolean): Promise { + return invoke('workspaces_delete', { worksetId, workspaceName, delete: del }); +} diff --git a/OPUS-tauri-app/src/components/diff/DiffFileRow.css b/OPUS-tauri-app/src/components/diff/DiffFileRow.css new file mode 100644 index 00000000..9e57b89f --- /dev/null +++ b/OPUS-tauri-app/src/components/diff/DiffFileRow.css @@ -0,0 +1,59 @@ +.diff-file-row { + display: flex; + align-items: center; + gap: 6px; + width: 100%; + padding: 4px 12px 4px 24px; + font-size: 12px; + color: var(--text); + text-align: left; + transition: background var(--transition-fast); +} + +.diff-file-row:hover { + background: var(--surface); +} + +.diff-file-row__icon { + flex-shrink: 0; + opacity: 0.7; +} + +.diff-file-row__icon--m { color: var(--warning); } +.diff-file-row__icon--a { color: var(--success); } +.diff-file-row__icon--d { color: var(--danger); } +.diff-file-row__icon--r { color: var(--accent); } + +.diff-file-row__path { + flex: 1; + overflow: hidden; + display: flex; + flex-direction: column; + min-width: 0; +} + +.diff-file-row__name { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-weight: 500; +} + +.diff-file-row__dir { + font-size: 10px; + color: var(--muted); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.diff-file-row__stats { + display: flex; + gap: 4px; + flex-shrink: 0; + font-family: var(--font-mono); + font-size: 11px; +} + +.diff-file-row__added { color: var(--success); } +.diff-file-row__removed { color: var(--danger); } diff --git a/OPUS-tauri-app/src/components/diff/DiffFileRow.tsx b/OPUS-tauri-app/src/components/diff/DiffFileRow.tsx new file mode 100644 index 00000000..13d020fd --- /dev/null +++ b/OPUS-tauri-app/src/components/diff/DiffFileRow.tsx @@ -0,0 +1,35 @@ +import type { DiffFileSummary } from '@/types/diff'; +import { FileText, FilePlus, FileMinus, FileEdit, ArrowRightLeft } from 'lucide-react'; +import './DiffFileRow.css'; + +type Props = { + file: DiffFileSummary; + onClick: () => void; +}; + +const statusIcons: Record = { + M: FileEdit, + A: FilePlus, + D: FileMinus, + R: ArrowRightLeft, +}; + +export function DiffFileRow({ file, onClick }: Props) { + const Icon = statusIcons[file.status] ?? FileText; + const filename = file.path.split('/').pop() ?? file.path; + const dir = file.path.includes('/') ? file.path.slice(0, file.path.lastIndexOf('/')) : ''; + + return ( + + ); +} diff --git a/OPUS-tauri-app/src/components/diff/DiffNavigator.css b/OPUS-tauri-app/src/components/diff/DiffNavigator.css new file mode 100644 index 00000000..cf7a8ce4 --- /dev/null +++ b/OPUS-tauri-app/src/components/diff/DiffNavigator.css @@ -0,0 +1,39 @@ +.diff-navigator { + display: flex; + flex-direction: column; + height: 100%; + overflow: hidden; +} + +.diff-navigator__header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 12px; + font-size: 12px; + font-weight: 600; + color: var(--text); + border-bottom: 1px solid var(--border); + flex-shrink: 0; +} + +.diff-navigator__totals { + font-size: 11px; + font-weight: 400; + color: var(--muted); +} + +.diff-navigator__added { color: var(--success); } +.diff-navigator__removed { color: var(--danger); } + +.diff-navigator__body { + flex: 1; + overflow-y: auto; +} + +.diff-navigator__empty { + padding: 24px; + text-align: center; + font-size: 12px; + color: var(--muted); +} diff --git a/OPUS-tauri-app/src/components/diff/DiffNavigator.tsx b/OPUS-tauri-app/src/components/diff/DiffNavigator.tsx new file mode 100644 index 00000000..ef1ac2a9 --- /dev/null +++ b/OPUS-tauri-app/src/components/diff/DiffNavigator.tsx @@ -0,0 +1,123 @@ +import { useCallback, useEffect, useRef } from 'react'; +import type { DiffFileSummary } from '@/types/diff'; +import { useAppStore } from '@/state/store'; +import { DiffRepoGroup } from './DiffRepoGroup'; +import { useTauriEvent } from '@/hooks/useTauriEvent'; +import { listWorkspaceRepos } from '@/api/repos'; +import { diffWatchStart, diffWatchStop } from '@/api/diff'; +import './DiffNavigator.css'; + +type DiffSummaryEvent = { + workspace_name: string; + repo: string; + summary: { files: DiffFileSummary[]; total_added: number; total_removed: number }; +}; + +export function DiffNavigator() { + const repoDiffs = useAppStore((s) => s.repoDiffs); + const updateDiffSummary = useAppStore((s) => s.updateDiffSummary); + const loadDiffSummary = useAppStore((s) => s.loadDiffSummary); + const activeWorkspaceName = useAppStore((s) => s.activeWorkspaceName); + const focusedPaneId = useAppStore((s) => s.focusedPaneId); + const addTab = useAppStore((s) => s.addTab); + const watchedReposRef = useRef<{ workspace: string; repo: string }[]>([]); + + // Listen for watcher events + const handleSummaryEvent = useCallback( + (payload: DiffSummaryEvent) => { + updateDiffSummary(payload.repo, payload.summary); + }, + [updateDiffSummary], + ); + useTauriEvent('diff:summary', handleSummaryEvent); + + // Fetch repos, load initial diffs, start watchers when workspace changes + useEffect(() => { + if (!activeWorkspaceName) return; + let cancelled = false; + const wsName = activeWorkspaceName; + + (async () => { + try { + const repos = await listWorkspaceRepos(wsName); + if (cancelled) return; + + for (const repo of repos) { + if (repo.missing) continue; + // Load initial diff summary + loadDiffSummary(wsName, repo.name, repo.worktree_path); + // Start background watcher + diffWatchStart(wsName, repo.name, repo.worktree_path).catch(() => {}); + watchedReposRef.current.push({ workspace: wsName, repo: repo.name }); + } + } catch (err) { + console.error('Failed to load workspace repos for diff:', err); + } + })(); + + return () => { + cancelled = true; + // Stop watchers on cleanup + for (const { workspace, repo } of watchedReposRef.current) { + diffWatchStop(workspace, repo).catch(() => {}); + } + watchedReposRef.current = []; + }; + }, [activeWorkspaceName, loadDiffSummary]); + + const repos = Object.values(repoDiffs).filter( + (rd) => rd.summary && rd.summary.files.length > 0, + ); + + function handleFileClick(repo: string, repoPath: string, file: DiffFileSummary) { + const paneId = focusedPaneId ?? 'main'; + const tabId = `diff-${repo}-${file.path}`; + addTab(paneId, { + id: tabId, + terminal_id: '', + title: file.path, + kind: 'diff', + diff_repo: repo, + diff_repo_path: repoPath, + diff_file_path: file.path, + diff_prev_path: file.prev_path, + diff_status: file.status, + }); + } + + if (repos.length === 0) { + return ( +
+
Diff
+
No changes detected
+
+ ); + } + + const totalFiles = repos.reduce((sum, r) => sum + (r.summary?.files.length ?? 0), 0); + const totalAdded = repos.reduce((sum, r) => sum + (r.summary?.total_added ?? 0), 0); + const totalRemoved = repos.reduce((sum, r) => sum + (r.summary?.total_removed ?? 0), 0); + + return ( +
+
+ Diff + + {totalFiles} file{totalFiles !== 1 ? 's' : ''} + {totalAdded > 0 && +{totalAdded}} + {totalRemoved > 0 && -{totalRemoved}} + +
+
+ {repos.map((rd) => ( + handleFileClick(rd.repo, rd.repoPath, file)} + /> + ))} +
+
+ ); +} diff --git a/OPUS-tauri-app/src/components/diff/DiffRenderer.css b/OPUS-tauri-app/src/components/diff/DiffRenderer.css new file mode 100644 index 00000000..e9de5d8b --- /dev/null +++ b/OPUS-tauri-app/src/components/diff/DiffRenderer.css @@ -0,0 +1,71 @@ +.diff-renderer { + position: absolute; + inset: 0; + overflow-y: auto; + overflow-x: hidden; + font-family: var(--font-mono); + font-size: 12px; + line-height: 1.6; +} + +.diff-renderer--binary { + display: flex; + align-items: center; + justify-content: center; + color: var(--muted); + font-family: var(--font-body); +} + +.diff-renderer__truncated { + padding: 8px 12px; + background: rgba(251, 191, 36, 0.1); + border-bottom: 1px solid var(--border); + color: var(--warning); + font-family: var(--font-body); + font-size: 12px; +} + +.diff-renderer__content { + margin: 0; + padding: 0; +} + +.diff-line { + display: flex; + padding: 0 12px; + min-height: 20px; +} + +.diff-line--added { + background: rgba(52, 211, 153, 0.08); +} + +.diff-line--removed { + background: rgba(248, 113, 113, 0.08); +} + +.diff-line--hunk { + background: rgba(129, 140, 248, 0.06); + color: var(--accent); +} + +.diff-line--meta { + color: var(--muted); +} + +.diff-line__number { + width: 48px; + text-align: right; + padding-right: 12px; + color: var(--muted); + opacity: 0.5; + flex-shrink: 0; + user-select: none; +} + +.diff-line__text { + flex: 1; + white-space: pre-wrap; + word-break: break-all; + min-width: 0; +} diff --git a/OPUS-tauri-app/src/components/diff/DiffRenderer.tsx b/OPUS-tauri-app/src/components/diff/DiffRenderer.tsx new file mode 100644 index 00000000..1eecf668 --- /dev/null +++ b/OPUS-tauri-app/src/components/diff/DiffRenderer.tsx @@ -0,0 +1,49 @@ +import './DiffRenderer.css'; + +type Props = { + patch: string; + truncated: boolean; + binary?: boolean; +}; + +export function DiffRenderer({ patch, truncated, binary }: Props) { + if (binary) { + return ( +
+ Binary file — cannot display diff +
+ ); + } + + const lines = patch.split('\n'); + + return ( +
+ {truncated && ( +
+ Diff truncated — file is too large to display in full +
+ )} +
+        {lines.map((line, i) => {
+          let cls = 'diff-line';
+          if (line.startsWith('+') && !line.startsWith('+++')) {
+            cls += ' diff-line--added';
+          } else if (line.startsWith('-') && !line.startsWith('---')) {
+            cls += ' diff-line--removed';
+          } else if (line.startsWith('@@')) {
+            cls += ' diff-line--hunk';
+          } else if (line.startsWith('diff ') || line.startsWith('index ')) {
+            cls += ' diff-line--meta';
+          }
+          return (
+            
+ {i + 1} + {line} +
+ ); + })} +
+
+ ); +} diff --git a/OPUS-tauri-app/src/components/diff/DiffRepoGroup.css b/OPUS-tauri-app/src/components/diff/DiffRepoGroup.css new file mode 100644 index 00000000..81f72040 --- /dev/null +++ b/OPUS-tauri-app/src/components/diff/DiffRepoGroup.css @@ -0,0 +1,58 @@ +.diff-repo-group { + border-bottom: 1px solid var(--border); +} + +.diff-repo-group__header { + display: flex; + align-items: center; + gap: 6px; + width: 100%; + padding: 8px 8px; + font-size: 12px; + font-weight: 600; + color: var(--text); + text-align: left; + transition: background var(--transition-fast); +} + +.diff-repo-group__header:hover { + background: var(--surface); +} + +.diff-repo-group__icon { + color: var(--muted); + flex-shrink: 0; +} + +.diff-repo-group__name { + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.diff-repo-group__count { + font-size: 10px; + font-weight: 400; + color: var(--muted); + background: var(--surface); + padding: 1px 5px; + border-radius: 8px; + flex-shrink: 0; +} + +.diff-repo-group__stats { + display: flex; + gap: 4px; + flex-shrink: 0; + font-family: var(--font-mono); + font-size: 11px; + font-weight: 400; +} + +.diff-repo-group__added { color: var(--success); } +.diff-repo-group__removed { color: var(--danger); } + +.diff-repo-group__files { + padding-bottom: 4px; +} diff --git a/OPUS-tauri-app/src/components/diff/DiffRepoGroup.tsx b/OPUS-tauri-app/src/components/diff/DiffRepoGroup.tsx new file mode 100644 index 00000000..d686ac24 --- /dev/null +++ b/OPUS-tauri-app/src/components/diff/DiffRepoGroup.tsx @@ -0,0 +1,45 @@ +import { useState } from 'react'; +import type { DiffSummary, DiffFileSummary } from '@/types/diff'; +import { DiffFileRow } from './DiffFileRow'; +import { ChevronDown, ChevronRight, GitBranch } from 'lucide-react'; +import './DiffRepoGroup.css'; + +type Props = { + repo: string; + summary: DiffSummary; + onFileClick: (file: DiffFileSummary) => void; +}; + +export function DiffRepoGroup({ repo, summary, onFileClick }: Props) { + const [expanded, setExpanded] = useState(true); + + return ( +
+ + {expanded && ( +
+ {summary.files.map((file) => ( + onFileClick(file)} + /> + ))} +
+ )} +
+ ); +} diff --git a/OPUS-tauri-app/src/components/diff/DiffTabView.tsx b/OPUS-tauri-app/src/components/diff/DiffTabView.tsx new file mode 100644 index 00000000..cbcbf404 --- /dev/null +++ b/OPUS-tauri-app/src/components/diff/DiffTabView.tsx @@ -0,0 +1,74 @@ +import { useEffect, useState } from 'react'; +import { useAppStore } from '@/state/store'; +import { DiffRenderer } from './DiffRenderer'; +import type { FilePatch } from '@/types/diff'; + +type Props = { + repoPath: string; + filePath: string; + prevPath?: string; + status: string; +}; + +export function DiffTabView({ repoPath, filePath, prevPath, status }: Props) { + const fetchFilePatch = useAppStore((s) => s.fetchFilePatch); + const [patch, setPatch] = useState(null); + const [error, setError] = useState(null); + const [loading, setLoading] = useState(true); + + useEffect(() => { + let cancelled = false; + setLoading(true); + setError(null); + + fetchFilePatch(repoPath, filePath, prevPath, status) + .then((result) => { + if (!cancelled) setPatch(result); + }) + .catch((err) => { + if (!cancelled) { + const msg = typeof err === 'object' && err !== null && 'message' in err + ? String(err.message) + : 'Failed to load diff'; + setError(msg); + } + }) + .finally(() => { + if (!cancelled) setLoading(false); + }); + + return () => { cancelled = true; }; + }, [repoPath, filePath, prevPath, status, fetchFilePatch]); + + if (loading) { + return ( +
+ Loading diff... +
+ ); + } + + if (error) { + return ( +
+ {error} +
+ ); + } + + if (!patch || !patch.patch) { + return ( +
+ No changes +
+ ); + } + + return ( + + ); +} diff --git a/OPUS-tauri-app/src/components/layout/AppShell.css b/OPUS-tauri-app/src/components/layout/AppShell.css new file mode 100644 index 00000000..ff514989 --- /dev/null +++ b/OPUS-tauri-app/src/components/layout/AppShell.css @@ -0,0 +1,50 @@ +.app-shell { + display: grid; + grid-template-columns: var(--rail-width) var(--sidebar-width) 1fr var(--right-panel-width); + grid-template-rows: var(--chrome-height) 1fr; + height: 100%; + overflow: hidden; +} + +.app-shell--no-right { + grid-template-columns: var(--rail-width) var(--sidebar-width) 1fr; +} + +.app-shell__chrome { + grid-column: 1 / -1; + grid-row: 1; + background: var(--panel); + border-bottom: 1px solid var(--border); + z-index: 10; +} + +.app-shell__rail { + grid-column: 1; + grid-row: 2; + background: var(--panel-soft); + border-right: 1px solid var(--border); +} + +.app-shell__sidebar { + grid-column: 2; + grid-row: 2; + background: var(--panel); + border-right: 1px solid var(--border); + overflow-y: auto; +} + +.app-shell__main { + grid-column: 3; + grid-row: 2; + display: flex; + background: var(--bg); + overflow: hidden; +} + +.app-shell__right-panel { + grid-column: 4; + grid-row: 2; + background: var(--panel); + border-left: 1px solid var(--border); + overflow-y: auto; +} diff --git a/OPUS-tauri-app/src/components/layout/AppShell.tsx b/OPUS-tauri-app/src/components/layout/AppShell.tsx new file mode 100644 index 00000000..50237671 --- /dev/null +++ b/OPUS-tauri-app/src/components/layout/AppShell.tsx @@ -0,0 +1,26 @@ +import { type ReactNode } from 'react'; +import { useAppStore } from '@/state/store'; +import './AppShell.css'; + +type Props = { + chrome: ReactNode; + rail: ReactNode; + sidebar: ReactNode; + main: ReactNode; + rightPanel?: ReactNode; +}; + +export function AppShell({ chrome, rail, sidebar, main, rightPanel }: Props) { + const rightPanelCollapsed = useAppStore((s) => s.rightPanelCollapsed); + const showRight = rightPanel && !rightPanelCollapsed; + + return ( +
+
{chrome}
+
{rail}
+
{sidebar}
+
{main}
+ {showRight &&
{rightPanel}
} +
+ ); +} diff --git a/OPUS-tauri-app/src/components/layout/IconRail.css b/OPUS-tauri-app/src/components/layout/IconRail.css new file mode 100644 index 00000000..3618b01d --- /dev/null +++ b/OPUS-tauri-app/src/components/layout/IconRail.css @@ -0,0 +1,41 @@ +.icon-rail { + display: flex; + flex-direction: column; + align-items: center; + padding-top: var(--space-3); + gap: var(--space-1); +} + +.icon-rail__btn { + display: flex; + align-items: center; + justify-content: center; + width: 36px; + height: 36px; + border-radius: var(--radius-md); + color: var(--muted); + transition: all var(--transition-fast); + position: relative; +} + +.icon-rail__btn:hover { + color: var(--text); + background: var(--surface); +} + +.icon-rail__btn.active { + color: var(--accent); + background: var(--accent-soft); +} + +.icon-rail__btn.active::before { + content: ''; + position: absolute; + left: -8px; + top: 50%; + transform: translateY(-50%); + width: 3px; + height: 16px; + background: var(--accent); + border-radius: 0 2px 2px 0; +} diff --git a/OPUS-tauri-app/src/components/layout/IconRail.tsx b/OPUS-tauri-app/src/components/layout/IconRail.tsx new file mode 100644 index 00000000..1b1c0850 --- /dev/null +++ b/OPUS-tauri-app/src/components/layout/IconRail.tsx @@ -0,0 +1,30 @@ +import { useAppStore } from '@/state/store'; +import type { NavPage } from '@/state/slices/uiSlice'; +import { LayoutGrid, Layers, Settings } from 'lucide-react'; +import './IconRail.css'; + +const navItems: { page: NavPage; icon: typeof LayoutGrid; label: string }[] = [ + { page: 'command-center', icon: LayoutGrid, label: 'Command Center' }, + { page: 'spaces', icon: Layers, label: 'Spaces' }, + { page: 'settings', icon: Settings, label: 'Settings' }, +]; + +export function IconRail() { + const activePage = useAppStore((s) => s.activePage); + const setActivePage = useAppStore((s) => s.setActivePage); + + return ( + + ); +} diff --git a/OPUS-tauri-app/src/components/layout/RightPanel.css b/OPUS-tauri-app/src/components/layout/RightPanel.css new file mode 100644 index 00000000..19433270 --- /dev/null +++ b/OPUS-tauri-app/src/components/layout/RightPanel.css @@ -0,0 +1,29 @@ +.right-panel { + display: flex; + flex-direction: column; + height: 100%; +} + +.right-panel__header { + display: flex; + align-items: center; + padding: var(--space-4); + border-bottom: 1px solid var(--border); +} + +.right-panel__title { + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.04em; + color: var(--muted); +} + +.right-panel__empty { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + font-size: 12px; + color: var(--muted); +} diff --git a/OPUS-tauri-app/src/components/layout/RightPanel.tsx b/OPUS-tauri-app/src/components/layout/RightPanel.tsx new file mode 100644 index 00000000..3f287acb --- /dev/null +++ b/OPUS-tauri-app/src/components/layout/RightPanel.tsx @@ -0,0 +1,26 @@ +import { useAppStore } from '@/state/store'; +import { DiffNavigator } from '@/components/diff/DiffNavigator'; +import './RightPanel.css'; + +export function RightPanel() { + const activeWorkspaceName = useAppStore((s) => s.activeWorkspaceName); + + if (!activeWorkspaceName) { + return ( +
+
+ Diff +
+
+ No workspace selected +
+
+ ); + } + + return ( +
+ +
+ ); +} diff --git a/OPUS-tauri-app/src/components/layout/SecondarySidebar.css b/OPUS-tauri-app/src/components/layout/SecondarySidebar.css new file mode 100644 index 00000000..fa9d14b5 --- /dev/null +++ b/OPUS-tauri-app/src/components/layout/SecondarySidebar.css @@ -0,0 +1,73 @@ +.secondary-sidebar { + display: flex; + flex-direction: column; + height: 100%; +} + +.secondary-sidebar__header { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--space-4); + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.04em; + color: var(--muted); +} + +.secondary-sidebar__action-btn { + display: flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + border-radius: var(--radius-md); + color: var(--muted); + transition: all var(--transition-fast); +} + +.secondary-sidebar__action-btn:hover { + color: var(--text); + background: var(--surface); +} + +.secondary-sidebar__nav { + display: flex; + flex-direction: column; + padding: 0 var(--space-2); +} + +.secondary-sidebar__nav-item { + display: block; + width: 100%; + padding: 6px var(--space-3); + font-size: 13px; + text-align: left; + color: var(--muted); + border-radius: var(--radius-md); + transition: all var(--transition-fast); +} + +.secondary-sidebar__nav-item:hover { + color: var(--text); + background: var(--surface); +} + +.secondary-sidebar__nav-item.active { + color: var(--text); + background: var(--accent-soft); +} + +.secondary-sidebar__placeholder { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + padding: var(--space-4); +} + +.secondary-sidebar__hint { + font-size: 12px; + color: var(--muted); +} diff --git a/OPUS-tauri-app/src/components/layout/SecondarySidebar.tsx b/OPUS-tauri-app/src/components/layout/SecondarySidebar.tsx new file mode 100644 index 00000000..c394cac1 --- /dev/null +++ b/OPUS-tauri-app/src/components/layout/SecondarySidebar.tsx @@ -0,0 +1,73 @@ +import { useAppStore } from '@/state/store'; +import { WorkspaceList } from '@/components/pages/Spaces/WorkspaceList'; +import { Plus } from 'lucide-react'; +import './SecondarySidebar.css'; + +export function SecondarySidebar() { + const activePage = useAppStore((s) => s.activePage); + const openModal = useAppStore((s) => s.openModal); + const ccSection = useAppStore((s) => s.commandCenterSection); + const setCcSection = useAppStore((s) => s.setCommandCenterSection); + const settingsSection = useAppStore((s) => s.settingsSection); + const setSettingsSection = useAppStore((s) => s.setSettingsSection); + + if (activePage === 'command-center') { + return ( +
+
Command Center
+ +
+ ); + } + + if (activePage === 'spaces') { + return ( +
+
+ Workspaces + +
+ +
+ ); + } + + return ( +
+
Settings
+ +
+ ); +} diff --git a/OPUS-tauri-app/src/components/layout/TopChrome.css b/OPUS-tauri-app/src/components/layout/TopChrome.css new file mode 100644 index 00000000..1f836d00 --- /dev/null +++ b/OPUS-tauri-app/src/components/layout/TopChrome.css @@ -0,0 +1,168 @@ +.top-chrome { + display: flex; + align-items: center; + height: 100%; + padding: 0 var(--space-3); + padding-left: 80px; + gap: var(--space-3); +} + +.top-chrome__selector { + position: relative; + width: clamp(240px, 40%, 420px); +} + +.top-chrome__selector-btn { + display: flex; + align-items: center; + justify-content: center; + gap: 6px; + width: 100%; + padding: 5px 16px; + background: var(--surface); + border: 1px solid var(--border); + border-radius: 10px; + color: var(--text); + font-size: 12px; + font-weight: 500; + transition: border-color var(--transition-fast), background var(--transition-fast), color var(--transition-fast); +} + +.top-chrome__selector-btn:hover { + border-color: var(--border-active); + background: var(--surface-hover); + color: var(--text); +} + +.top-chrome__selector-label { + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.top-chrome__selector-chevron { + flex-shrink: 0; + opacity: 0.5; + margin-left: auto; +} + +.top-chrome__dropdown { + position: absolute; + top: calc(100% + 6px); + left: 0; + right: 0; + background: var(--panel-strong); + border: 1px solid var(--border-active); + border-radius: 10px; + padding: var(--space-1) 0; + z-index: 100; +} + +.top-chrome__dropdown-row { + position: relative; +} + +.top-chrome__dropdown-item { + display: block; + width: 100%; + padding: 6px 12px; + font-size: 13px; + text-align: left; + color: var(--text); + transition: background var(--transition-fast); +} + +.top-chrome__dropdown-item:hover { + background: var(--surface-hover); +} + +.top-chrome__dropdown-item.active { + background: var(--accent-soft); + color: var(--accent); +} + +.top-chrome__dropdown-action { + color: var(--muted); +} + +.top-chrome__more-anchor { + position: absolute; + right: 4px; + top: 50%; + transform: translateY(-50%); +} + +.top-chrome__more { + display: flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + border: none; + background: none; + color: var(--muted); + cursor: pointer; + border-radius: 3px; + font-size: 16px; + line-height: 1; + opacity: 0; + transition: opacity var(--transition-fast), background var(--transition-fast); +} + +.top-chrome__dropdown-row:hover .top-chrome__more { + opacity: 1; +} + +.top-chrome__more:hover { + background: var(--border); + color: var(--text); +} + +.top-chrome__submenu { + position: absolute; + top: 0; + left: calc(100% + 4px); + min-width: 140px; + background: var(--panel-strong); + border: 1px solid var(--border-active); + border-radius: 3px; + padding: 4px 0; + z-index: 200; +} + +.top-chrome__submenu-item { + display: block; + width: 100%; + padding: 6px 12px; + font-size: 13px; + text-align: left; + color: var(--text); + border: none; + background: none; + cursor: pointer; + transition: background var(--transition-fast); +} + +.top-chrome__submenu-item:hover { + background: var(--surface-hover); +} + +.top-chrome__submenu-item--danger { + color: var(--danger, #ef4444); +} + +.top-chrome__submenu-item--confirm { + background: rgba(239, 68, 68, 0.1); +} + +.top-chrome__dropdown-divider { + height: 1px; + background: var(--border); + margin: var(--space-1) 0; +} + +.top-chrome__spacer { + flex: 1; + align-self: stretch; +} diff --git a/OPUS-tauri-app/src/components/layout/TopChrome.tsx b/OPUS-tauri-app/src/components/layout/TopChrome.tsx new file mode 100644 index 00000000..f09d88af --- /dev/null +++ b/OPUS-tauri-app/src/components/layout/TopChrome.tsx @@ -0,0 +1,117 @@ +import { useState, useRef, useEffect } from 'react'; +import { useAppStore } from '@/state/store'; +import { ChevronDown } from 'lucide-react'; +import './TopChrome.css'; + +export function TopChrome() { + const worksets = useAppStore((s) => s.worksets); + const activeWorksetId = useAppStore((s) => s.activeWorksetId); + const setActiveWorkset = useAppStore((s) => s.setActiveWorkset); + const deleteWorkset = useAppStore((s) => s.deleteWorkset); + const openModal = useAppStore((s) => s.openModal); + const [dropdownOpen, setDropdownOpen] = useState(false); + const [menuOpenId, setMenuOpenId] = useState(null); + const [confirmDeleteId, setConfirmDeleteId] = useState(null); + const dropdownRef = useRef(null); + + const activeWorkset = worksets.find((w) => w.id === activeWorksetId); + + useEffect(() => { + function handleClick(e: MouseEvent) { + if (dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) { + setDropdownOpen(false); + setMenuOpenId(null); + setConfirmDeleteId(null); + } + } + document.addEventListener('mousedown', handleClick); + return () => document.removeEventListener('mousedown', handleClick); + }, []); + + function handleMoreClick(e: React.MouseEvent, id: string) { + e.stopPropagation(); + if (menuOpenId === id) { + setMenuOpenId(null); + setConfirmDeleteId(null); + } else { + setMenuOpenId(id); + setConfirmDeleteId(null); + } + } + + function handleDelete(e: React.MouseEvent, id: string) { + e.stopPropagation(); + if (confirmDeleteId !== id) { + setConfirmDeleteId(id); + return; + } + deleteWorkset(id); + setMenuOpenId(null); + setConfirmDeleteId(null); + setDropdownOpen(false); + } + + return ( +
+
+
+ + {dropdownOpen && ( +
+ {worksets.map((w) => ( +
+ +
+ + {menuOpenId === w.id && ( +
+ +
+ )} +
+
+ ))} + {worksets.length > 0 &&
} + +
+ )} +
+
+
+ ); +} diff --git a/OPUS-tauri-app/src/components/modals/MigrationStatusModal.css b/OPUS-tauri-app/src/components/modals/MigrationStatusModal.css new file mode 100644 index 00000000..5d208922 --- /dev/null +++ b/OPUS-tauri-app/src/components/modals/MigrationStatusModal.css @@ -0,0 +1,80 @@ +.modal-card--wide { + max-width: 480px; +} + +.migration-loading { + padding: 16px; + text-align: center; + color: var(--muted); + font-size: 13px; +} + +.migration-list { + display: flex; + flex-direction: column; + gap: 4px; +} + +.migration-item { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 8px; + padding: 6px 8px; + border-radius: 3px; + font-size: 13px; +} + +.migration-item--failed { + background: rgba(239, 68, 68, 0.06); +} + +.migration-item__name { + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-family: var(--font-mono); + font-size: 12px; +} + +.migration-item__state { + font-size: 11px; + color: var(--muted); + text-transform: capitalize; +} + +.migration-item__retry { + display: flex; + align-items: center; + justify-content: center; + width: 22px; + height: 22px; + border: none; + background: none; + color: var(--accent); + cursor: pointer; + border-radius: 3px; + transition: background var(--transition-fast); +} + +.migration-item__retry:hover { + background: var(--surface); +} + +.migration-item__error { + width: 100%; + font-size: 11px; + color: var(--danger, #ef4444); + padding-left: 22px; +} + +.migration-icon--success { color: var(--success); } +.migration-icon--failed { color: var(--danger, #ef4444); } +.migration-icon--running { color: var(--accent); animation: spin 1s linear infinite; } +.migration-icon--pending { color: var(--muted); } + +@keyframes spin { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} diff --git a/OPUS-tauri-app/src/components/modals/MigrationStatusModal.tsx b/OPUS-tauri-app/src/components/modals/MigrationStatusModal.tsx new file mode 100644 index 00000000..26758288 --- /dev/null +++ b/OPUS-tauri-app/src/components/modals/MigrationStatusModal.tsx @@ -0,0 +1,154 @@ +import { useState, useCallback } from 'react'; +import type { MigrationProgress } from '@/types/jobs'; +import { useAppStore } from '@/state/store'; +import { useTauriEvent } from '@/hooks/useTauriEvent'; +import { migrationCancel, migrationStart } from '@/api/migrations'; +import { Button } from '@/components/ui/Button'; +import { CheckCircle, XCircle, Loader, Circle, RotateCcw } from 'lucide-react'; +import './Modal.css'; +import './MigrationStatusModal.css'; + +export function MigrationStatusModal() { + const activeModal = useAppStore((s) => s.activeModal); + const closeModal = useAppStore((s) => s.closeModal); + const openModal = useAppStore((s) => s.openModal); + + const jobId = (activeModal?.props?.jobId as string) ?? ''; + const worksetId = (activeModal?.props?.worksetId as string) ?? ''; + const repoUrl = (activeModal?.props?.repoUrl as string) ?? ''; + const action = (activeModal?.props?.action as 'add' | 'remove') ?? 'add'; + const deleteWorktrees = activeModal?.props?.deleteWorktrees as boolean | undefined; + const deleteLocal = activeModal?.props?.deleteLocal as boolean | undefined; + + const [progress, setProgress] = useState(null); + const [retrying, setRetrying] = useState(false); + + const handleProgress = useCallback( + (payload: MigrationProgress) => { + if (payload.job_id === jobId) { + setProgress(payload); + } + }, + [jobId], + ); + useTauriEvent('migration:progress', handleProgress); + + const isDone = progress?.state === 'done' || progress?.state === 'failed' || progress?.state === 'canceled'; + const hasFailures = progress?.workspaces.some((ws) => ws.state === 'failed') ?? false; + + async function handleRetryFailed() { + if (!progress || !worksetId || !repoUrl) return; + const failedNames = progress.workspaces + .filter((ws) => ws.state === 'failed') + .map((ws) => ws.workspace_name); + if (failedNames.length === 0) return; + + setRetrying(true); + try { + const { job_id } = await migrationStart({ + worksetId, + repoUrl, + action, + workspaceNames: failedNames, + deleteWorktrees, + deleteLocal, + }); + // Reopen modal with the new job + openModal('migration-status', { + jobId: job_id, + worksetId, + repoUrl, + action, + deleteWorktrees, + deleteLocal, + }); + } finally { + setRetrying(false); + } + } + + async function handleRetryWorkspace(wsName: string) { + if (!worksetId || !repoUrl) return; + setRetrying(true); + try { + const { job_id } = await migrationStart({ + worksetId, + repoUrl, + action, + workspaceNames: [wsName], + deleteWorktrees, + deleteLocal, + }); + openModal('migration-status', { + jobId: job_id, + worksetId, + repoUrl, + action, + deleteWorktrees, + deleteLocal, + }); + } finally { + setRetrying(false); + } + } + + function statusIcon(state: string) { + switch (state) { + case 'success': return ; + case 'failed': return ; + case 'running': return ; + default: return ; + } + } + + return ( +
+
e.stopPropagation()}> +
Migration Progress
+
+ {!progress ? ( +
Waiting for progress...
+ ) : ( +
+ {progress.workspaces.map((ws) => ( +
+ {statusIcon(ws.state)} + {ws.workspace_name} + {ws.state} + {ws.state === 'failed' && isDone && ( + + )} + {ws.error && ( +
{ws.error.message}
+ )} +
+ ))} +
+ )} +
+
+ {!isDone && ( + + )} + {isDone && hasFailures && ( + + )} + +
+
+
+ ); +} diff --git a/OPUS-tauri-app/src/components/modals/Modal.css b/OPUS-tauri-app/src/components/modals/Modal.css new file mode 100644 index 00000000..5b28b8af --- /dev/null +++ b/OPUS-tauri-app/src/components/modals/Modal.css @@ -0,0 +1,138 @@ +.modal-overlay { + position: fixed; + inset: 0; + background: rgba(0, 0, 0, 0.6); + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; +} + +.modal-card { + background: var(--panel); + border: 1px solid var(--border-active); + border-radius: var(--radius-md); + width: 100%; + max-width: 400px; + overflow: hidden; +} + +.modal-repos-card { + background: var(--panel); + border: 1px solid var(--border-active); + border-radius: var(--radius-md); + width: 100%; + max-width: 600px; + overflow: visible; +} + +.modal-repos-card .modal-body { + overflow: visible; +} + +.modal-repos-card .repo-search { + margin-bottom: 0; +} + +.repo-search__spinner { + animation: spin 1s linear infinite; +} + +@keyframes spin { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} + +.modal-header { + padding: var(--space-4); + font-size: 14px; + font-weight: 600; + border-bottom: 1px solid var(--border); +} + +.modal-body { + padding: var(--space-4); + display: flex; + flex-direction: column; + gap: var(--space-2); +} + +.modal-label { + font-size: 12px; + font-weight: 500; + color: var(--muted); +} + +.modal-footer { + display: flex; + justify-content: flex-end; + gap: var(--space-2); + padding: var(--space-3) var(--space-4); + border-top: 1px solid var(--border); +} + +.modal-repo-list { + list-style: none; + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + gap: 2px; +} + +.modal-repo-item { + display: flex; + align-items: center; + justify-content: space-between; + padding: 6px 8px; + background: var(--surface); + border-radius: 3px; + font-size: 12px; + font-family: var(--font-mono); +} + +.modal-repo-name { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + min-width: 0; +} + +.modal-repo-remove { + display: flex; + align-items: center; + justify-content: center; + width: 18px; + height: 18px; + border: none; + background: none; + color: var(--muted); + cursor: pointer; + flex-shrink: 0; + border-radius: 3px; +} + +.modal-repo-remove:hover { + background: var(--border); + color: var(--text); +} + +.remove-confirm__description { + font-size: 13px; + color: var(--text); + margin: 0; + line-height: 1.5; +} + +.remove-confirm__checkbox { + display: flex; + align-items: center; + gap: 8px; + font-size: 13px; + color: var(--text); + cursor: pointer; +} + +.remove-confirm__checkbox input[type="checkbox"] { + accent-color: var(--accent); +} diff --git a/OPUS-tauri-app/src/components/modals/RepoRemoveConfirmModal.tsx b/OPUS-tauri-app/src/components/modals/RepoRemoveConfirmModal.tsx new file mode 100644 index 00000000..a0a1a5b5 --- /dev/null +++ b/OPUS-tauri-app/src/components/modals/RepoRemoveConfirmModal.tsx @@ -0,0 +1,87 @@ +import { useState } from 'react'; +import { useAppStore } from '@/state/store'; +import { migrationStart } from '@/api/migrations'; +import { listWorkspaces } from '@/api/workspaces'; +import { Button } from '@/components/ui/Button'; +import './Modal.css'; + +export function RepoRemoveConfirmModal() { + const activeModal = useAppStore((s) => s.activeModal); + const closeModal = useAppStore((s) => s.closeModal); + const openModal = useAppStore((s) => s.openModal); + const removeWorksetRepo = useAppStore((s) => s.removeWorksetRepo); + + const worksetId = (activeModal?.props?.worksetId as string) ?? ''; + const repoUrl = (activeModal?.props?.repoUrl as string) ?? ''; + + const [deleteWorktrees, setDeleteWorktrees] = useState(true); + const [deleteLocal, setDeleteLocal] = useState(false); + const [removing, setRemoving] = useState(false); + + async function handleConfirm() { + if (!worksetId || !repoUrl) return; + setRemoving(true); + try { + await removeWorksetRepo(repoUrl); + const freshWorkspaces = await listWorkspaces(worksetId); + const wsNames = freshWorkspaces.map((ws) => ws.name); + if (wsNames.length > 0) { + const { job_id } = await migrationStart({ + worksetId, + repoUrl, + action: 'remove', + workspaceNames: wsNames, + deleteWorktrees, + deleteLocal, + }); + openModal('migration-status', { + jobId: job_id, + worksetId, + repoUrl, + action: 'remove', + deleteWorktrees, + deleteLocal, + }); + } else { + closeModal(); + } + } finally { + setRemoving(false); + } + } + + return ( +
+
e.stopPropagation()}> +
Remove Repository
+
+

+ Remove {repoUrl} from all workspaces? +

+ + +
+
+ + +
+
+
+ ); +} diff --git a/OPUS-tauri-app/src/components/modals/WorksetCreateModal.tsx b/OPUS-tauri-app/src/components/modals/WorksetCreateModal.tsx new file mode 100644 index 00000000..28386100 --- /dev/null +++ b/OPUS-tauri-app/src/components/modals/WorksetCreateModal.tsx @@ -0,0 +1,387 @@ +import { useState, useEffect, useRef, useMemo } from 'react'; +import { useAppStore } from '@/state/store'; +import { Button } from '@/components/ui/Button'; +import { Input } from '@/components/ui/Input'; +import { listGitHubRepos, githubAuthStatus, listGitHubAccounts, switchGitHubAccount } from '@/api/github'; +import type { GitHubRepo, GitHubAccount } from '@/types/github'; +import { X, FolderGit2, Lock, Search, ChevronDown, Check, Loader2 } from 'lucide-react'; +import './Modal.css'; +import '../pages/CommandCenter/CommandCenterPage.css'; + +type Step = 'name' | 'repos'; + +function parseRepoName(repoUrl: string): { org: string; repo: string } { + const match = repoUrl.match(/(?:github\.com\/)?([^/]+)\/([^/]+?)(?:\.git)?$/); + if (match) return { org: match[1], repo: match[2] }; + return { org: '', repo: repoUrl }; +} + +export function WorksetCreateModal() { + const createWorkset = useAppStore((s) => s.createWorkset); + const setActiveWorkset = useAppStore((s) => s.setActiveWorkset); + const addWorksetRepo = useAppStore((s) => s.addWorksetRepo); + const closeModal = useAppStore((s) => s.closeModal); + + const [step, setStep] = useState('name'); + const [name, setName] = useState(''); + const [loading, setLoading] = useState(false); + + // Repos step + const [repoInput, setRepoInput] = useState(''); + const [repos, setRepos] = useState([]); + const [addingRepo, setAddingRepo] = useState(false); + const [repoError, setRepoError] = useState(null); + + // GitHub autocomplete state + const [allRepos, setAllRepos] = useState([]); + const [ghAvailable, setGhAvailable] = useState(null); + const [reposLoading, setReposLoading] = useState(false); + const [accounts, setAccounts] = useState([]); + const [activeAccount, setActiveAccount] = useState(null); + const [switching, setSwitching] = useState(false); + const [showSuggestions, setShowSuggestions] = useState(false); + const [selectedIndex, setSelectedIndex] = useState(-1); + const [accountDropdownOpen, setAccountDropdownOpen] = useState(false); + const searchRef = useRef(null); + const accountDropdownRef = useRef(null); + + function loadRepos() { + setReposLoading(true); + listGitHubRepos() + .then(setAllRepos) + .catch(() => {}) + .finally(() => setReposLoading(false)); + } + + // Pre-fetch GitHub data on mount so it's ready when user reaches the repos step + useEffect(() => { + setReposLoading(true); + githubAuthStatus() + .then((s) => { + setGhAvailable(s.authenticated); + if (s.authenticated) { + loadRepos(); + listGitHubAccounts() + .then((accts) => { + setAccounts(accts); + const active = accts.find((a) => a.active); + if (active) setActiveAccount(active.login); + }) + .catch(() => {}); + } else { + setReposLoading(false); + } + }) + .catch(() => { + setGhAvailable(false); + setReposLoading(false); + }); + }, []); + + async function handleSwitchAccount(login: string) { + if (login === activeAccount || switching) return; + setSwitching(true); + try { + await switchGitHubAccount(login); + setActiveAccount(login); + setAccounts((prev) => + prev.map((a) => ({ ...a, active: a.login === login })), + ); + setAllRepos([]); + setRepoInput(''); + loadRepos(); + } finally { + setSwitching(false); + } + } + + // Close dropdowns on outside click + useEffect(() => { + function handleClick(e: MouseEvent) { + if (searchRef.current && !searchRef.current.contains(e.target as Node)) { + setShowSuggestions(false); + } + if (accountDropdownRef.current && !accountDropdownRef.current.contains(e.target as Node)) { + setAccountDropdownOpen(false); + } + } + document.addEventListener('mousedown', handleClick); + return () => document.removeEventListener('mousedown', handleClick); + }, []); + + // Filter repos client-side — exclude already-added repos + const filtered = useMemo(() => { + const q = repoInput.trim().toLowerCase(); + if (!ghAvailable || q.length < 1 || allRepos.length === 0) return []; + const added = new Set(repos.map((r) => { + const { org, repo } = parseRepoName(r); + return org ? `${org}/${repo}`.toLowerCase() : r.toLowerCase(); + })); + return allRepos + .filter((r) => { + if (added.has(r.full_name.toLowerCase())) return false; + return r.full_name.toLowerCase().includes(q); + }) + .slice(0, 10); + }, [repoInput, allRepos, ghAvailable, repos]); + + // Keep showSuggestions in sync with filtered results + useEffect(() => { + if (repoInput.trim().length >= 1 && filtered.length > 0) { + setShowSuggestions(true); + } else { + setShowSuggestions(false); + } + }, [filtered, repoInput]); + + // Build description lookup + const repoDescriptions = useMemo(() => { + const map = new Map(); + for (const r of allRepos) { + if (r.description) map.set(r.full_name.toLowerCase(), r.description); + } + return map; + }, [allRepos]); + + function handleInputChange(value: string) { + setRepoInput(value); + setSelectedIndex(-1); + setRepoError(null); + } + + async function handleCreateName() { + if (!name.trim()) return; + setLoading(true); + try { + const profile = await createWorkset(name.trim()); + // Don't await — let it run in background so the step transition is instant + setActiveWorkset(profile.id); + setStep('repos'); + } finally { + setLoading(false); + } + } + + async function handleAddRepo(repoUrl?: string) { + let source = repoUrl || repoInput.trim(); + if (!source) return; + // Normalize short "org/repo" to full GitHub URL + if (!source.includes('://') && !source.includes('@') && !source.startsWith('/') && !source.startsWith('~') && !source.startsWith('.') && source.includes('/')) { + source = `https://github.com/${source}`; + } + setAddingRepo(true); + setRepoError(null); + setShowSuggestions(false); + try { + await addWorksetRepo(source); + setRepos((prev) => [...prev, source]); + setRepoInput(''); + } catch (err) { + const msg = + typeof err === 'object' && err !== null && 'message' in err + ? String((err as { message: string }).message) + : 'Failed to add repo'; + setRepoError(msg); + } finally { + setAddingRepo(false); + } + } + + function handleKeyDown(e: React.KeyboardEvent) { + if (!showSuggestions || filtered.length === 0) { + if (e.key === 'Enter') { + e.preventDefault(); + handleAddRepo(); + } + return; + } + + if (e.key === 'ArrowDown') { + e.preventDefault(); + setSelectedIndex((i) => Math.min(i + 1, filtered.length - 1)); + } else if (e.key === 'ArrowUp') { + e.preventDefault(); + setSelectedIndex((i) => Math.max(i - 1, 0)); + } else if (e.key === 'Enter') { + e.preventDefault(); + if (selectedIndex >= 0 && selectedIndex < filtered.length) { + handleAddRepo(filtered[selectedIndex].full_name); + } else { + handleAddRepo(); + } + } else if (e.key === 'Escape') { + setShowSuggestions(false); + } + } + + function handleDone() { + closeModal(); + } + + if (step === 'name') { + return ( +
+
e.stopPropagation()}> +
Create Workset
+
+ + setName(e.target.value)} + placeholder="e.g. search-ranking" + autoFocus + onKeyDown={(e) => e.key === 'Enter' && handleCreateName()} + /> +
+
+ + +
+
+
+ ); + } + + return ( +
+
e.stopPropagation()}> +
Add Repositories
+
+
+ {accounts.length > 0 && ( +
+ + {accountDropdownOpen && accounts.length > 1 && ( +
+ {accounts.map((acct) => ( + + ))} +
+ )} +
+ )} + {accounts.length > 0 &&
} + {reposLoading ? ( + + ) : ( + + )} + handleInputChange(e.target.value)} + onFocus={() => repoInput.trim().length >= 1 && filtered.length > 0 && setShowSuggestions(true)} + onKeyDown={handleKeyDown} + spellCheck={false} + autoCorrect="off" + autoCapitalize="off" + autoFocus + disabled={addingRepo} + placeholder={ + reposLoading + ? 'Loading your repositories...' + : ghAvailable + ? 'Search your repos or paste a GitHub URL...' + : 'Paste org/repo or a full GitHub URL and press Enter' + } + /> + {addingRepo && Adding...} + {showSuggestions && filtered.length > 0 && ( +
+ {filtered.map((repo, i) => { + const { org, repo: repoName } = parseRepoName(repo.full_name); + return ( + + ); + })} +
+ )} +
+ + {repoError && ( + {repoError} + )} + + {repos.length > 0 && ( +
+ {repos.map((r) => { + const { org, repo } = parseRepoName(r); + const descKey = org ? `${org}/${repo}`.toLowerCase() : r.toLowerCase(); + const desc = repoDescriptions.get(descKey); + return ( +
+ +
+
+ {org && {org}/} + {repo} +
+ {desc &&
{desc}
} +
+ +
+ ); + })} +
+ )} +
+
+ +
+
+
+ ); +} diff --git a/OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.css b/OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.css new file mode 100644 index 00000000..8084dbd9 --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.css @@ -0,0 +1,444 @@ +.command-center { + padding: var(--space-5) var(--space-6); + overflow-y: auto; + width: 100%; + height: 100%; +} + +.command-center__header h2 { + font-size: 16px; + font-weight: 600; + margin: 0 0 var(--space-5); +} + +.command-center__stats { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); + gap: var(--space-3); + margin-bottom: var(--space-5); +} + +.stat-card { + background: var(--surface); + border: 1px solid var(--border); + border-radius: var(--radius-md); + padding: var(--space-4); +} + +.stat-card__icon { + color: var(--muted); + margin-bottom: var(--space-2); +} + +.stat-card__value { + font-size: 24px; + font-weight: 600; + font-family: var(--font-mono); +} + +.stat-card__label { + font-size: 12px; + color: var(--muted); + margin-top: var(--space-1); +} + +.command-center__section { + margin-bottom: var(--space-5); +} + +.command-center__section-title { + font-size: 13px; + font-weight: 600; + margin: 0 0 var(--space-3); +} + +/* ─── Composite Search Bar ────────────────────────────────────── */ + +.repo-search { + position: relative; + display: flex; + align-items: center; + background: var(--surface); + border: 1px solid var(--border); + border-radius: var(--radius-md); + margin-bottom: var(--space-5); + transition: border-color var(--transition-fast), box-shadow var(--transition-fast); +} + +.repo-search:focus-within { + border-color: var(--accent); + box-shadow: 0 0 0 2px rgba(129, 140, 248, 0.15); +} + +.repo-search *:focus, +.repo-search *:focus-visible { + outline: none; + box-shadow: none; +} + +/* ── Account selector (left portion) ── */ + +.repo-search__account { + position: relative; + flex-shrink: 0; +} + +.repo-search__account-btn { + display: flex; + align-items: center; + gap: 4px; + padding: 12px 12px 12px 16px; + background: none; + border: none; + outline: none; + color: var(--text); + font-size: 13px; + font-family: var(--font-mono); + font-weight: 500; + cursor: pointer; + white-space: nowrap; + transition: color var(--transition-fast); +} + +.repo-search__account-btn:hover { + color: var(--accent); +} + +.repo-search__account-btn:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.repo-search__account-chevron { + color: var(--muted); + flex-shrink: 0; +} + +.repo-search__account-name { + max-width: 120px; + overflow: hidden; + text-overflow: ellipsis; +} + +.repo-search__account-dropdown { + position: absolute; + top: calc(100% + 6px); + left: 0; + min-width: 160px; + background: var(--surface); + border: 1px solid var(--border); + border-radius: var(--radius-md); + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2); + z-index: 60; + padding: 4px; +} + +.repo-search__account-option { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + width: 100%; + padding: 8px 10px; + background: none; + border: none; + outline: none; + border-radius: var(--radius-sm); + color: var(--text); + font-size: 13px; + font-family: var(--font-mono); + cursor: pointer; + transition: background var(--transition-fast); +} + +.repo-search__account-option:hover { + background: var(--surface-hover); +} + +.repo-search__account-option svg { + color: var(--accent); +} + +/* ── Divider ── */ + +.repo-search__divider { + width: 1px; + align-self: stretch; + margin: 8px 0; + background: var(--border); + flex-shrink: 0; +} + +/* ── Search input (right portion) ── */ + +.repo-search__icon { + flex-shrink: 0; + margin-left: 12px; + color: var(--muted); + pointer-events: none; + opacity: 0.5; + transition: color var(--transition-fast), opacity var(--transition-fast); +} + +.repo-search:focus-within .repo-search__icon { + color: var(--accent); + opacity: 1; +} + +.repo-search__input { + flex: 1; + padding: 14px 16px 14px 8px; + background: none; + border: none; + color: var(--text); + font-size: 15px; + font-family: var(--font-body); + outline: none; + min-width: 0; +} + +.repo-search__input::placeholder { + color: var(--muted); +} + +.repo-search__input:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.repo-search__loading { + flex-shrink: 0; + padding-right: 14px; + font-size: 12px; + color: var(--accent); + font-weight: 500; +} + +/* ─── Autocomplete Suggestions ────────────────────────────────── */ + +.repo-suggestions { + position: absolute; + top: calc(100% + 4px); + left: 0; + right: 0; + background: var(--surface); + border: 1px solid var(--border); + border-radius: var(--radius-md); + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2); + z-index: 50; + max-height: 300px; + overflow-y: auto; + padding: 4px; +} + +.repo-suggestions__item { + display: flex; + align-items: flex-start; + gap: 10px; + width: 100%; + padding: 10px 12px; + border-radius: var(--radius-sm); + cursor: pointer; + text-align: left; + background: none; + border: none; + color: var(--text); + font-family: inherit; + transition: background var(--transition-fast); +} + +.repo-suggestions__item:hover, +.repo-suggestions__item--selected { + background: var(--surface-hover); +} + +.repo-suggestions__icon { + color: var(--muted); + flex-shrink: 0; + margin-top: 2px; +} + +.repo-suggestions__info { + flex: 1; + min-width: 0; +} + +.repo-suggestions__name { + font-size: 13px; + font-family: var(--font-mono); + font-weight: 500; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.repo-suggestions__org { + color: var(--muted); + font-weight: 400; +} + +.repo-suggestions__desc { + font-size: 11px; + color: var(--muted); + margin-top: 2px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.repo-suggestions__private { + color: var(--muted); + flex-shrink: 0; + margin-top: 3px; + opacity: 0.6; +} + +/* ─── Repository List ──────────────────────────────────────────── */ + +.repo-list { + display: flex; + flex-direction: column; + border: 1px solid var(--border); + border-radius: var(--radius-md); + background: var(--surface); + overflow: hidden; +} + +.repo-row { + display: flex; + align-items: flex-start; + gap: 14px; + padding: 14px 16px; + transition: background var(--transition-fast); +} + +.repo-row + .repo-row { + border-top: 1px solid var(--border); +} + +.repo-row:hover { + background: var(--surface-hover); +} + +.repo-row__icon { + color: var(--muted); + flex-shrink: 0; + margin-top: 2px; + transition: color var(--transition-fast); +} + +.repo-row:hover .repo-row__icon { + color: var(--accent); +} + +.repo-row__info { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; + gap: 3px; +} + +.repo-row__name-line { + font-size: 14px; + font-family: var(--font-mono); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.repo-row__org { + color: var(--muted); + font-weight: 400; +} + +.repo-row__name { + font-weight: 600; + color: var(--text); +} + +.repo-row__desc { + font-size: 12px; + color: var(--muted); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.repo-row__remove { + flex-shrink: 0; + display: flex; + align-items: center; + justify-content: center; + width: 28px; + height: 28px; + border-radius: var(--radius-sm); + border: none; + background: none; + color: var(--muted); + cursor: pointer; + opacity: 0; + margin-top: -2px; + transition: all var(--transition-fast); +} + +.repo-row:hover .repo-row__remove { + opacity: 1; +} + +.repo-row__remove:hover { + background: var(--danger-soft); + color: var(--danger); +} + +.command-center__actions { + display: flex; + gap: var(--space-3); +} + +/* Diagnostics */ +.command-center__diagnostics { + display: flex; + flex-direction: column; + gap: var(--space-2); +} + +.command-center__env-details { + margin-top: var(--space-3); + border: 1px solid var(--border); + border-radius: var(--radius-md); + overflow: hidden; +} + +.command-center__env-row { + display: flex; + align-items: baseline; + gap: var(--space-3); + padding: 8px 12px; + font-size: 12px; +} + +.command-center__env-row + .command-center__env-row { + border-top: 1px solid var(--border); +} + +.command-center__env-label { + min-width: 120px; + font-weight: 500; + color: var(--muted); + flex-shrink: 0; +} + +.command-center__env-value { + font-family: var(--font-mono); + font-size: 11px; + color: var(--text); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.command-center__env-value--wrap { + white-space: normal; + word-break: break-all; +} diff --git a/OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.tsx b/OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.tsx new file mode 100644 index 00000000..e262f712 --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.tsx @@ -0,0 +1,598 @@ +import { useState, useEffect, useRef, useMemo } from 'react'; +import { useAppStore } from '@/state/store'; +import { EmptyState } from '@/components/ui/EmptyState'; +import { Button } from '@/components/ui/Button'; +import { StatusRow } from '@/components/ui/StatusRow'; +import { migrationStart } from '@/api/migrations'; +import { listWorkspaces } from '@/api/workspaces'; +import { listWorkspaceRepos } from '@/api/repos'; +import { listGitHubRepos, githubAuthStatus, listGitHubAccounts, switchGitHubAccount } from '@/api/github'; +import { + envSnapshot, + reloadLoginEnv, + sessiondStatus, + sessiondRestart, + cliStatus, +} from '@/api/diagnostics'; +import type { EnvSnapshot, SessiondStatus, CliStatus } from '@/types/diagnostics'; +import type { GitHubRepo, GitHubAccount } from '@/types/github'; +import type { RepoInstance } from '@/types/repo'; +import { LayoutGrid, Layers, FolderGit2, Plus, Trash2, Lock, Search, ChevronDown, Check } from 'lucide-react'; +import './CommandCenterPage.css'; + +export function CommandCenterPage() { + const worksets = useAppStore((s) => s.worksets); + const activeWorksetId = useAppStore((s) => s.activeWorksetId); + const activeWorkspaceName = useAppStore((s) => s.activeWorkspaceName); + const addWorksetRepo = useAppStore((s) => s.addWorksetRepo); + const setActivePage = useAppStore((s) => s.setActivePage); + const setCommandCenterSection = useAppStore((s) => s.setCommandCenterSection); + const openModal = useAppStore((s) => s.openModal); + const section = useAppStore((s) => s.commandCenterSection); + + const activeWorkset = worksets.find((w) => w.id === activeWorksetId); + + if (!activeWorkset) { + return ( + } + title="No workset selected" + description="Select or create a workset to view its command center." + /> + ); + } + + return ( +
+
+

{activeWorkset.name}

+
+ {section === 'overview' && ( + + )} + {section === 'repositories' && ( + + )} + {section === 'diagnostics' && ( + + )} +
+ ); +} + +// --------------------------------------------------------------------------- +// Overview +// --------------------------------------------------------------------------- +function OverviewSection({ + activeWorkset, + setActivePage, + setCommandCenterSection, +}: { + activeWorkset: { name: string; repos: string[]; workspace_ids: string[] }; + setActivePage: (page: 'spaces') => void; + setCommandCenterSection: (section: 'repositories') => void; +}) { + return ( + <> +
+
+ +
{activeWorkset.repos.length}
+
Repositories
+
+
+ +
{activeWorkset.workspace_ids.length}
+
Workspaces
+
+
+ + {activeWorkset.repos.length > 0 && ( +
+

Repositories

+
+ {activeWorkset.repos.map((repo) => ( +
+ + {repo} +
+ ))} +
+
+ )} + +
+ {activeWorkset.repos.length === 0 && ( + + )} + +
+ + ); +} + +// --------------------------------------------------------------------------- +// Repositories +// --------------------------------------------------------------------------- +function parseRepoName(repoUrl: string): { org: string; repo: string } { + const match = repoUrl.match(/(?:github\.com\/)?([^/]+)\/([^/]+?)(?:\.git)?$/); + if (match) return { org: match[1], repo: match[2] }; + return { org: '', repo: repoUrl }; +} + +function RepositoriesSection({ + activeWorkset, + activeWorksetId, + addWorksetRepo, + openModal, +}: { + activeWorkset: { repos: string[] }; + activeWorksetId: string; + addWorksetRepo: (source: string) => Promise; + openModal: (type: string, props?: Record) => void; +}) { + const [newRepoUrl, setNewRepoUrl] = useState(''); + const [repoLoading, setRepoLoading] = useState(false); + const [allRepos, setAllRepos] = useState([]); + const [ghAvailable, setGhAvailable] = useState(null); + const [accounts, setAccounts] = useState([]); + const [activeAccount, setActiveAccount] = useState(null); + const [switching, setSwitching] = useState(false); + const [showSuggestions, setShowSuggestions] = useState(false); + const [selectedIndex, setSelectedIndex] = useState(-1); + const [accountDropdownOpen, setAccountDropdownOpen] = useState(false); + const containerRef = useRef(null); + const accountDropdownRef = useRef(null); + + function loadRepos() { + listGitHubRepos() + .then(setAllRepos) + .catch(() => {}); + } + + // Check gh auth, load accounts and repos on mount + useEffect(() => { + githubAuthStatus() + .then((s) => { + setGhAvailable(s.authenticated); + if (s.authenticated) { + loadRepos(); + listGitHubAccounts() + .then((accts) => { + setAccounts(accts); + const active = accts.find((a) => a.active); + if (active) setActiveAccount(active.login); + }) + .catch(() => {}); + } + }) + .catch(() => setGhAvailable(false)); + }, []); + + async function handleSwitchAccount(login: string) { + if (login === activeAccount || switching) return; + setSwitching(true); + try { + await switchGitHubAccount(login); + setActiveAccount(login); + setAccounts((prev) => + prev.map((a) => ({ ...a, active: a.login === login })), + ); + setAllRepos([]); + setNewRepoUrl(''); + loadRepos(); + } finally { + setSwitching(false); + } + } + + // Close dropdowns on outside click + useEffect(() => { + function handleClick(e: MouseEvent) { + if (containerRef.current && !containerRef.current.contains(e.target as Node)) { + setShowSuggestions(false); + } + if (accountDropdownRef.current && !accountDropdownRef.current.contains(e.target as Node)) { + setAccountDropdownOpen(false); + } + } + document.addEventListener('mousedown', handleClick); + return () => document.removeEventListener('mousedown', handleClick); + }, []); + + // Filter repos client-side — exclude already-added repos + const filtered = useMemo(() => { + const q = newRepoUrl.trim().toLowerCase(); + if (!ghAvailable || q.length < 1 || allRepos.length === 0) return []; + // Normalize stored URLs to short "org/repo" for comparison against full_name + const added = new Set(activeWorkset.repos.map((r) => { + const { org, repo } = parseRepoName(r); + return org ? `${org}/${repo}`.toLowerCase() : r.toLowerCase(); + })); + return allRepos + .filter((r) => { + if (added.has(r.full_name.toLowerCase())) return false; + return r.full_name.toLowerCase().includes(q); + }) + .slice(0, 15); + }, [newRepoUrl, allRepos, ghAvailable, activeWorkset.repos]); + + function handleInputChange(value: string) { + setNewRepoUrl(value); + setSelectedIndex(-1); + setShowSuggestions(value.trim().length >= 1 && filtered.length > 0); + } + + // Keep showSuggestions in sync with filtered results + useEffect(() => { + if (newRepoUrl.trim().length >= 1 && filtered.length > 0) { + setShowSuggestions(true); + } else { + setShowSuggestions(false); + } + }, [filtered, newRepoUrl]); + + // Build a lookup for descriptions from the fetched repo data + // Keys are normalized "org/repo" so they match regardless of stored URL format + const repoDescriptions = useMemo(() => { + const map = new Map(); + for (const r of allRepos) { + if (r.description) map.set(r.full_name.toLowerCase(), r.description); + } + return map; + }, [allRepos]); + + function selectSuggestion(fullName: string) { + handleAddRepo(fullName); + } + + async function handleAddRepo(repoUrl?: string) { + let url = repoUrl || newRepoUrl.trim(); + if (!url || !activeWorksetId) return; + // Normalize short "org/repo" to full GitHub URL so the Go backend recognizes it + if (!url.includes('://') && !url.includes('@') && !url.startsWith('/') && !url.startsWith('~') && !url.startsWith('.') && url.includes('/')) { + url = `https://github.com/${url}`; + } + setRepoLoading(true); + setShowSuggestions(false); + try { + await addWorksetRepo(url); + const freshWorkspaces = await listWorkspaces(activeWorksetId); + const wsNames = freshWorkspaces.map((ws) => ws.name); + if (wsNames.length > 0) { + const { job_id } = await migrationStart({ + worksetId: activeWorksetId, + repoUrl: url, + action: 'add', + workspaceNames: wsNames, + }); + openModal('migration-status', { + jobId: job_id, + worksetId: activeWorksetId, + repoUrl: url, + action: 'add', + }); + } + setNewRepoUrl(''); + } finally { + setRepoLoading(false); + } + } + + function handleKeyDown(e: React.KeyboardEvent) { + if (!showSuggestions || filtered.length === 0) { + if (e.key === 'Enter') { + e.preventDefault(); + handleAddRepo(); + } + return; + } + + if (e.key === 'ArrowDown') { + e.preventDefault(); + setSelectedIndex((i) => Math.min(i + 1, filtered.length - 1)); + } else if (e.key === 'ArrowUp') { + e.preventDefault(); + setSelectedIndex((i) => Math.max(i - 1, 0)); + } else if (e.key === 'Enter') { + e.preventDefault(); + if (selectedIndex >= 0 && selectedIndex < filtered.length) { + selectSuggestion(filtered[selectedIndex].full_name); + } else { + handleAddRepo(); + } + } else if (e.key === 'Escape') { + setShowSuggestions(false); + } + } + + function handleRemoveRepo(repo: string) { + openModal('repo-remove-confirm', { + worksetId: activeWorksetId, + repoUrl: repo, + }); + } + + return ( +
+

Repositories

+ +
+ {accounts.length > 0 && ( +
+ + {accountDropdownOpen && accounts.length > 1 && ( +
+ {accounts.map((acct) => ( + + ))} +
+ )} +
+ )} + {accounts.length > 0 &&
} + + handleInputChange(e.target.value)} + onFocus={() => newRepoUrl.trim().length >= 1 && filtered.length > 0 && setShowSuggestions(true)} + onKeyDown={handleKeyDown} + spellCheck={false} + autoCorrect="off" + autoCapitalize="off" + disabled={repoLoading} + placeholder={ + ghAvailable + ? 'Search your repos or paste a GitHub URL...' + : 'Paste org/repo or a full GitHub URL and press Enter' + } + /> + {repoLoading && Adding...} + {showSuggestions && filtered.length > 0 && ( +
+ {filtered.map((repo, i) => { + const { org, repo: name } = parseRepoName(repo.full_name); + return ( + + ); + })} +
+ )} +
+ + {activeWorkset.repos.length > 0 ? ( +
+ {activeWorkset.repos.map((repoUrl) => { + const { org, repo } = parseRepoName(repoUrl); + const descKey = org ? `${org}/${repo}`.toLowerCase() : repoUrl.toLowerCase(); + const desc = repoDescriptions.get(descKey); + return ( +
+ +
+
+ {org && {org}/} + {repo} +
+ {desc &&
{desc}
} +
+ +
+ ); + })} +
+ ) : ( + } + title="No repositories yet" + description="Search for a repo above or paste a GitHub URL and press Enter." + /> + )} +
+ ); +} + +// --------------------------------------------------------------------------- +// Diagnostics +// --------------------------------------------------------------------------- +function DiagnosticsSection({ activeWorkspaceName }: { activeWorkspaceName: string | null }) { + const [env, setEnv] = useState(null); + const [sessiond, setSessiond] = useState(null); + const [cli, setCli] = useState(null); + const [repoInstances, setRepoInstances] = useState([]); + const [reloading, setReloading] = useState(false); + const [restarting, setRestarting] = useState(false); + + useEffect(() => { + envSnapshot().then(setEnv).catch(() => {}); + sessiondStatus().then(setSessiond).catch(() => {}); + cliStatus().then(setCli).catch(() => {}); + }, []); + + useEffect(() => { + if (activeWorkspaceName) { + listWorkspaceRepos(activeWorkspaceName) + .then(setRepoInstances) + .catch(() => setRepoInstances([])); + } else { + setRepoInstances([]); + } + }, [activeWorkspaceName]); + + async function handleReloadEnv() { + setReloading(true); + try { + const snap = await reloadLoginEnv(); + setEnv(snap); + } finally { + setReloading(false); + } + } + + async function handleRestartSessiond() { + setRestarting(true); + try { + const status = await sessiondRestart(); + setSessiond(status); + } finally { + setRestarting(false); + } + } + + return ( + <> +
+

Runtime

+
+ + + {restarting ? 'Restarting...' : 'Restart'} + + } + /> +
+
+ +
+

Authentication

+
+ + +
+
+ +
+

Environment

+
+ + {reloading ? 'Reloading...' : 'Reload'} + + } + /> +
+ {env && ( +
+
+ HOME + {env.home} +
+
+ PATH + {env.path} +
+ {env.git_ssh_command && ( +
+ GIT_SSH_COMMAND + {env.git_ssh_command} +
+ )} +
+ )} +
+ + {activeWorkspaceName && repoInstances.length > 0 && ( +
+

Workspace Repos

+
+ {repoInstances.map((repo) => ( + + ))} +
+
+ )} + + ); +} diff --git a/OPUS-tauri-app/src/components/pages/Settings/SettingsPage.css b/OPUS-tauri-app/src/components/pages/Settings/SettingsPage.css new file mode 100644 index 00000000..31c5e416 --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Settings/SettingsPage.css @@ -0,0 +1,118 @@ +.settings-page { + padding: var(--space-5) var(--space-6); + max-width: 640px; + overflow-y: auto; +} + +.settings-page__title { + font-size: 16px; + font-weight: 600; + margin: 0 0 var(--space-5); +} + +.settings-section { + margin-bottom: var(--space-5); +} + +.settings-section__title { + font-size: 12px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.04em; + color: var(--muted); + margin: 0 0 var(--space-3); +} + +.settings-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: var(--space-3); +} + +.settings-field { + display: flex; + flex-direction: column; + gap: var(--space-1); +} + +.settings-field__label { + font-size: 12px; + font-weight: 500; + color: var(--muted); +} + +.settings-field__hint { + font-size: 12px; + color: var(--muted); +} + +.settings-repo-list { + list-style: none; + padding: 0; + margin: 0; + display: flex; + flex-direction: column; + gap: var(--space-1); +} + +.settings-repo-list__item { + font-size: 12px; + padding: 4px 8px; + background: var(--surface); + border: 1px solid var(--border); + border-radius: var(--radius-sm); +} + +.settings-repo-list__item code { + font-family: var(--font-mono); + font-size: 11px; +} + +.settings-diagnostics { + display: flex; + flex-direction: column; + gap: 6px; +} + +.settings-env-details { + display: flex; + flex-direction: column; + gap: 4px; + background: var(--surface); + border: 1px solid var(--border); + border-radius: 3px; + padding: 8px 12px; +} + +.settings-env-row { + display: flex; + gap: 12px; + font-size: 12px; + padding: 4px 0; + border-bottom: 1px solid var(--border); +} + +.settings-env-row:last-child { + border-bottom: none; +} + +.settings-env-label { + font-weight: 600; + color: var(--muted); + flex-shrink: 0; + min-width: 140px; +} + +.settings-env-value { + font-family: var(--font-mono); + font-size: 11px; + color: var(--text); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.settings-env-value--wrap { + white-space: normal; + word-break: break-all; +} diff --git a/OPUS-tauri-app/src/components/pages/Settings/SettingsPage.tsx b/OPUS-tauri-app/src/components/pages/Settings/SettingsPage.tsx new file mode 100644 index 00000000..b6035e99 --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Settings/SettingsPage.tsx @@ -0,0 +1,208 @@ +import { useState, useEffect } from 'react'; +import { useAppStore } from '@/state/store'; +import { Input } from '@/components/ui/Input'; +import { Button } from '@/components/ui/Button'; +import { StatusRow } from '@/components/ui/StatusRow'; +import { + envSnapshot, + reloadLoginEnv, + sessiondStatus, + sessiondRestart, + cliStatus, +} from '@/api/diagnostics'; +import type { EnvSnapshot, SessiondStatus, CliStatus } from '@/types/diagnostics'; +import './SettingsPage.css'; + +export function SettingsPage() { + const section = useAppStore((s) => s.settingsSection); + + return ( +
+

Settings

+ {section === 'app' && } + {section === 'workset' && } + {section === 'diagnostics' && } +
+ ); +} + +// --------------------------------------------------------------------------- +// App Settings +// --------------------------------------------------------------------------- +function AppSettingsSection() { + const [env, setEnv] = useState(null); + + useEffect(() => { + envSnapshot().then(setEnv).catch(() => {}); + }, []); + + return ( +
+

App Settings

+
+
+ + +
+
+ + +
+
+
+ ); +} + +// --------------------------------------------------------------------------- +// Workset Settings +// --------------------------------------------------------------------------- +function WorksetSettingsSection() { + const worksets = useAppStore((s) => s.worksets); + const activeWorksetId = useAppStore((s) => s.activeWorksetId); + const activeWorkset = worksets.find((w) => w.id === activeWorksetId); + + if (!activeWorkset) { + return ( +
+

Workset Settings

+

No workset selected

+
+ ); + } + + return ( +
+

Workset: {activeWorkset.name}

+
+
+ + {activeWorkset.repos.length === 0 ? ( + No repositories added + ) : ( +
    + {activeWorkset.repos.map((r) => ( +
  • + {r} +
  • + ))} +
+ )} +
+
+
+ ); +} + +// --------------------------------------------------------------------------- +// Diagnostics +// --------------------------------------------------------------------------- +function DiagnosticsSection() { + const [env, setEnv] = useState(null); + const [sessiond, setSessiond] = useState(null); + const [cli, setCli] = useState(null); + const [reloading, setReloading] = useState(false); + const [restarting, setRestarting] = useState(false); + + useEffect(() => { + envSnapshot().then(setEnv).catch(() => {}); + sessiondStatus().then(setSessiond).catch(() => {}); + cliStatus().then(setCli).catch(() => {}); + }, []); + + async function handleReloadEnv() { + setReloading(true); + try { + const snap = await reloadLoginEnv(); + setEnv(snap); + } finally { + setReloading(false); + } + } + + async function handleRestartSessiond() { + setRestarting(true); + try { + const status = await sessiondRestart(); + setSessiond(status); + } finally { + setRestarting(false); + } + } + + return ( + <> +
+

Diagnostics

+
+ + + {restarting ? 'Restarting...' : 'Restart'} + + } + /> + + + + {reloading ? 'Reloading...' : 'Reload'} + + } + /> +
+
+ +
+

Environment Details

+ {env && ( +
+
+ HOME + {env.home} +
+
+ PATH + {env.path} +
+ {env.git_ssh_command && ( +
+ GIT_SSH_COMMAND + {env.git_ssh_command} +
+ )} +
+ )} +
+ + ); +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/CreateTabModal.css b/OPUS-tauri-app/src/components/pages/Spaces/CreateTabModal.css new file mode 100644 index 00000000..e59ce78d --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/CreateTabModal.css @@ -0,0 +1,43 @@ +.modal-card--narrow { + max-width: 360px; +} + +.create-tab-options { + display: flex; + flex-direction: column; + gap: 8px; +} + +.create-tab-option { + display: flex; + align-items: center; + gap: 12px; + padding: 12px; + border-radius: 3px; + background: var(--surface); + border: 1px solid var(--border); + color: var(--text); + text-align: left; + transition: background var(--transition-fast), border-color var(--transition-fast); +} + +.create-tab-option:hover { + background: var(--bg); + border-color: var(--accent); +} + +.create-tab-option__text { + display: flex; + flex-direction: column; + gap: 2px; +} + +.create-tab-option__title { + font-size: 13px; + font-weight: 500; +} + +.create-tab-option__desc { + font-size: 11px; + color: var(--muted); +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/CreateTabModal.tsx b/OPUS-tauri-app/src/components/pages/Spaces/CreateTabModal.tsx new file mode 100644 index 00000000..a796df24 --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/CreateTabModal.tsx @@ -0,0 +1,59 @@ +import { useAppStore } from '@/state/store'; +import { Button } from '@/components/ui/Button'; +import { Terminal, Bot } from 'lucide-react'; +import '@/components/modals/Modal.css'; +import './CreateTabModal.css'; + +export function CreateTabModal() { + const activeModal = useAppStore((s) => s.activeModal); + const closeModal = useAppStore((s) => s.closeModal); + const createPtySession = useAppStore((s) => s.createPtySession); + const addTab = useAppStore((s) => s.addTab); + + const paneId = (activeModal?.props?.paneId as string) ?? 'main'; + const workspaceName = (activeModal?.props?.workspaceName as string) ?? ''; + + async function handleCreate(kind: 'terminal' | 'agent') { + if (!workspaceName) return; + // TODO: resolve actual workspace cwd from repos + const cwd = process.env.HOME ?? '/'; + const terminalId = await createPtySession(workspaceName, kind, cwd); + const tabId = `tab-${Date.now()}`; + addTab(paneId, { + id: tabId, + terminal_id: terminalId, + title: kind === 'agent' ? 'Agent' : 'Terminal', + kind, + }); + closeModal(); + } + + return ( +
+
e.stopPropagation()}> +
New Tab
+
+
+ + +
+
+
+ +
+
+
+ ); +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/CreateWorkspaceModal.tsx b/OPUS-tauri-app/src/components/pages/Spaces/CreateWorkspaceModal.tsx new file mode 100644 index 00000000..4ffd3906 --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/CreateWorkspaceModal.tsx @@ -0,0 +1,96 @@ +import { useState } from 'react'; +import { useAppStore } from '@/state/store'; +import { Button } from '@/components/ui/Button'; +import { Input } from '@/components/ui/Input'; +import '@/components/modals/Modal.css'; + +export function CreateWorkspaceModal() { + const activeWorksetId = useAppStore((s) => s.activeWorksetId); + const worksets = useAppStore((s) => s.worksets); + const createWorkspace = useAppStore((s) => s.createWorkspace); + const setActiveWorkspace = useAppStore((s) => s.setActiveWorkspace); + const loadLayout = useAppStore((s) => s.loadLayout); + const allocatePtySession = useAppStore((s) => s.allocatePtySession); + const addTab = useAppStore((s) => s.addTab); + const closeModal = useAppStore((s) => s.closeModal); + const [name, setName] = useState(''); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + + const activeWorkset = worksets.find((w) => w.id === activeWorksetId); + + async function handleCreate() { + if (!name.trim() || !activeWorksetId) return; + setLoading(true); + setError(null); + try { + const wsName = name.trim(); + await createWorkspace(activeWorksetId, wsName); + await setActiveWorkspace(wsName); + await loadLayout(wsName); + + // Open an initial terminal tab + try { + const terminalId = await allocatePtySession(wsName, 'terminal'); + addTab('main', { + id: `tab-${Date.now()}`, + terminal_id: terminalId, + title: 'Terminal', + kind: 'terminal', + }); + } catch { + // Non-fatal — workspace is created even if terminal setup fails + } + + closeModal(); + } catch (err: unknown) { + const msg = err instanceof Error ? err.message + : typeof err === 'object' && err !== null && 'message' in err ? String((err as { message: string }).message) + : 'Failed to create workspace'; + setError(msg); + } finally { + setLoading(false); + } + } + + return ( +
+
e.stopPropagation()}> +
Create Workspace
+
+ + setName(e.target.value)} + placeholder="e.g. feature/search-ranking" + autoFocus + onKeyDown={(e) => e.key === 'Enter' && handleCreate()} + /> + {activeWorkset && activeWorkset.repos.length > 0 && ( +
+ +
+ {activeWorkset.repos.map((r) => ( +
+ {r} +
+ ))} +
+
+ )} +
+ {error && ( +
+ {error} +
+ )} +
+ + +
+
+
+ ); +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/SpacesPage.css b/OPUS-tauri-app/src/components/pages/Spaces/SpacesPage.css new file mode 100644 index 00000000..51d99fa4 --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/SpacesPage.css @@ -0,0 +1,14 @@ +.spaces-page { + display: flex; + flex: 1; + overflow: hidden; + min-width: 0; + min-height: 0; +} + +.spaces-page--loading { + align-items: center; + justify-content: center; + color: var(--muted); + font-size: 13px; +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/SpacesPage.tsx b/OPUS-tauri-app/src/components/pages/Spaces/SpacesPage.tsx new file mode 100644 index 00000000..e346d4a9 --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/SpacesPage.tsx @@ -0,0 +1,182 @@ +import { useEffect, useCallback } from 'react'; +import { useAppStore } from '@/state/store'; +import type { LayoutNode, PaneNode } from '@/types/layout'; +import { EmptyState } from '@/components/ui/EmptyState'; +import { Button } from '@/components/ui/Button'; +import { TerminalLayoutNodeView } from './TerminalLayoutNode'; +import { Layers } from 'lucide-react'; +import './SpacesPage.css'; + +function findPane(node: LayoutNode, paneId: string): PaneNode | null { + if (node.kind === 'pane') return node.id === paneId ? node : null; + return findPane(node.first, paneId) ?? findPane(node.second, paneId); +} + +export function SpacesPage() { + const activeWorksetId = useAppStore((s) => s.activeWorksetId); + const activeWorkspaceName = useAppStore((s) => s.activeWorkspaceName); + const workspaces = useAppStore((s) => s.workspaces); + const layout = useAppStore((s) => s.layout); + const loadLayout = useAppStore((s) => s.loadLayout); + const saveLayout = useAppStore((s) => s.saveLayout); + const openModal = useAppStore((s) => s.openModal); + const worksets = useAppStore((s) => s.worksets); + const setActiveTab = useAppStore((s) => s.setActiveTab); + const focusedPaneId = useAppStore((s) => s.focusedPaneId); + const addTab = useAppStore((s) => s.addTab); + const removeTab = useAppStore((s) => s.removeTab); + const allocatePtySession = useAppStore((s) => s.allocatePtySession); + const closePtySession = useAppStore((s) => s.closePtySession); + const setActiveWorkspace = useAppStore((s) => s.setActiveWorkspace); + + // Load layout when workspace changes + useEffect(() => { + if (activeWorkspaceName) { + loadLayout(activeWorkspaceName); + } + }, [activeWorkspaceName, loadLayout]); + + // Auto-save layout on changes + useEffect(() => { + if (activeWorkspaceName && layout) { + const timer = setTimeout(() => { + saveLayout(activeWorkspaceName); + }, 1000); + return () => clearTimeout(timer); + } + }, [activeWorkspaceName, layout, saveLayout]); + + const handleKeyDown = useCallback( + (e: KeyboardEvent) => { + if (!e.metaKey || !activeWorkspaceName) return; + + // Cmd+Up / Cmd+Down — switch workspaces + if (e.key === 'ArrowUp' || e.key === 'ArrowDown') { + if (workspaces.length < 2) return; + e.preventDefault(); + const idx = workspaces.findIndex((ws) => ws.name === activeWorkspaceName); + const next = + e.key === 'ArrowUp' + ? (idx - 1 + workspaces.length) % workspaces.length + : (idx + 1) % workspaces.length; + setActiveWorkspace(workspaces[next].name); + return; + } + + if (!layout) return; + const paneId = focusedPaneId ?? 'main'; + const pane = findPane(layout.root, paneId); + if (!pane || pane.tabs.length === 0) return; + + // Cmd+Left / Cmd+Right — switch tabs + if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') { + e.preventDefault(); + const idx = pane.tabs.findIndex((t) => t.id === pane.active_tab_id); + const next = + e.key === 'ArrowLeft' + ? (idx - 1 + pane.tabs.length) % pane.tabs.length + : (idx + 1) % pane.tabs.length; + setActiveTab(paneId, pane.tabs[next].id); + return; + } + + // Cmd+T — new terminal + if (e.key === 't') { + e.preventDefault(); + allocatePtySession(activeWorkspaceName, 'terminal') + .then((terminalId) => { + addTab(paneId, { + id: `tab-${Date.now()}`, + terminal_id: terminalId, + title: 'Terminal', + kind: 'terminal', + }); + }) + .catch(() => {}); + return; + } + + // Cmd+W — close active tab + if (e.key === 'w') { + e.preventDefault(); + const tab = pane.tabs.find((t) => t.id === pane.active_tab_id); + if (!tab) return; + removeTab(paneId, tab.id); + if (tab.kind !== 'diff') { + closePtySession(activeWorkspaceName, tab.terminal_id); + } + } + }, + [layout, activeWorkspaceName, workspaces, focusedPaneId, setActiveTab, + setActiveWorkspace, allocatePtySession, addTab, removeTab, closePtySession], + ); + + useEffect(() => { + window.addEventListener('keydown', handleKeyDown); + return () => window.removeEventListener('keydown', handleKeyDown); + }, [handleKeyDown]); + + if (worksets.length === 0) { + return ( + } + title="Create your first workset" + description="A workset groups repos together. Create one to get started." + action={ + + } + /> + ); + } + + if (!activeWorksetId) { + return ( + } + title="Select a workset to get started" + description="Use the workset selector in the top bar to choose or create a workset." + /> + ); + } + + if (workspaces.length === 0) { + return ( + } + title="Create your first workspace" + description="A workspace is a named work thread across all repos in this workset." + action={ + + } + /> + ); + } + + if (!activeWorkspaceName) { + return ( + } + title="Select a workspace" + description="Choose a workspace from the sidebar to begin." + /> + ); + } + + if (!layout) { + return ( +
+ Loading layout... +
+ ); + } + + return ( +
+ +
+ ); +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/TabContent.css b/OPUS-tauri-app/src/components/pages/Spaces/TabContent.css new file mode 100644 index 00000000..47aeb8a2 --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/TabContent.css @@ -0,0 +1,15 @@ +.tab-content { + flex: 1; + min-height: 0; + overflow: hidden; + position: relative; +} + +.tab-content--empty, +.tab-content--diff { + display: flex; + align-items: center; + justify-content: center; + color: var(--muted); + font-size: 13px; +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/TabContent.tsx b/OPUS-tauri-app/src/components/pages/Spaces/TabContent.tsx new file mode 100644 index 00000000..53154552 --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/TabContent.tsx @@ -0,0 +1,50 @@ +import type { LayoutTab } from '@/types/layout'; +import { TerminalSurface } from './TerminalSurface'; +import { DiffTabView } from '@/components/diff/DiffTabView'; +import './TabContent.css'; + +type Props = { + tab: LayoutTab | undefined; + workspaceName: string; +}; + +export function TabContent({ tab, workspaceName }: Props) { + if (!tab) { + return ( +
+ No tabs open +
+ ); + } + + if (tab.kind === 'diff') { + if (!tab.diff_repo_path || !tab.diff_file_path || !tab.diff_status) { + return ( +
+ Missing diff metadata +
+ ); + } + return ( +
+ +
+ ); + } + + // Both 'terminal' and 'agent' kinds use the terminal surface + return ( +
+ +
+ ); +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/TabStrip.css b/OPUS-tauri-app/src/components/pages/Spaces/TabStrip.css new file mode 100644 index 00000000..7da7157b --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/TabStrip.css @@ -0,0 +1,100 @@ +.tab-strip { + display: flex; + align-items: center; + height: 36px; + padding: 0 4px; + background: var(--panel); + border-bottom: 1px solid var(--border); + gap: 2px; + flex-shrink: 0; +} + +.tab-strip__tabs { + display: flex; + align-items: center; + gap: 2px; + overflow-x: auto; + flex: 1; + min-width: 0; +} + +.tab-strip__tabs::-webkit-scrollbar { + display: none; +} + +.tab-strip__tab { + display: flex; + align-items: center; + gap: 6px; + height: 28px; + padding: 0 8px; + border-radius: 3px; + font-size: 12px; + color: var(--muted); + white-space: nowrap; + cursor: pointer; + transition: background var(--transition-fast), color var(--transition-fast); + flex-shrink: 0; +} + +.tab-strip__tab:hover { + background: var(--surface); + color: var(--text); +} + +.tab-strip__tab.active { + background: var(--surface); + color: var(--text); +} + +.tab-strip__icon { + flex-shrink: 0; + opacity: 0.7; +} + +.tab-strip__label { + overflow: hidden; + text-overflow: ellipsis; + max-width: 120px; +} + +.tab-strip__close { + display: flex; + align-items: center; + justify-content: center; + width: 20px; + height: 20px; + border-radius: 3px; + font-size: 16px; + line-height: 1; + color: var(--muted); + opacity: 0; + transition: opacity var(--transition-fast), background var(--transition-fast); +} + +.tab-strip__tab:hover .tab-strip__close { + opacity: 1; +} + +.tab-strip__close:hover { + background: var(--border-hover); + color: var(--text); +} + +.tab-strip__add { + display: flex; + align-items: center; + justify-content: center; + width: 28px; + height: 28px; + border-radius: 3px; + color: var(--muted); + cursor: pointer; + flex-shrink: 0; + transition: background var(--transition-fast), color var(--transition-fast); +} + +.tab-strip__add:hover { + background: var(--surface); + color: var(--text); +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/TabStrip.tsx b/OPUS-tauri-app/src/components/pages/Spaces/TabStrip.tsx new file mode 100644 index 00000000..136c231e --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/TabStrip.tsx @@ -0,0 +1,89 @@ +import type { LayoutTab } from '@/types/layout'; +import { useAppStore } from '@/state/store'; +import { Terminal, Bot, GitCompare, Plus } from 'lucide-react'; +import './TabStrip.css'; + +type Props = { + paneId: string; + tabs: LayoutTab[]; + activeTabId?: string; + workspaceName: string; +}; + +const tabIcons: Record = { + terminal: Terminal, + agent: Bot, + diff: GitCompare, +}; + +export function TabStrip({ paneId, tabs, activeTabId, workspaceName }: Props) { + const setActiveTab = useAppStore((s) => s.setActiveTab); + const removeTab = useAppStore((s) => s.removeTab); + const closePtySession = useAppStore((s) => s.closePtySession); + const allocatePtySession = useAppStore((s) => s.allocatePtySession); + const addTab = useAppStore((s) => s.addTab); + + function handleClose(e: React.MouseEvent, tab: LayoutTab) { + e.stopPropagation(); + removeTab(paneId, tab.id); + if (tab.kind !== 'diff') { + closePtySession(workspaceName, tab.terminal_id); + } + } + + async function handleAddTerminal() { + if (!workspaceName) return; + try { + const terminalId = await allocatePtySession(workspaceName, 'terminal'); + const tabId = `tab-${Date.now()}`; + addTab(paneId, { + id: tabId, + terminal_id: terminalId, + title: 'Terminal', + kind: 'terminal', + }); + // TerminalSurface handles starting the PTY session after it mounts + } catch (err: unknown) { + const msg = typeof err === 'object' && err !== null && 'message' in err + ? String((err as { message: string }).message) + : 'Failed to create terminal session'; + console.error('Terminal creation failed:', msg); + } + } + + return ( +
+
+ {tabs.map((tab) => { + const Icon = tabIcons[tab.kind] ?? Terminal; + const isActive = tab.id === activeTabId; + return ( +
setActiveTab(paneId, tab.id)} + > + + {tab.title} + +
+ ); + })} +
+ +
+ ); +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.css b/OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.css new file mode 100644 index 00000000..b5a81dad --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.css @@ -0,0 +1,26 @@ +.layout-pane { + display: flex; + flex-direction: column; + flex: 1; + min-width: 0; + min-height: 0; + overflow: hidden; +} + +.layout-pane.focused { + outline: 1px solid var(--accent-soft); + outline-offset: -1px; +} + +.layout-split { + display: flex; + flex: 1; + min-width: 0; + min-height: 0; + overflow: hidden; +} + +.layout-split__divider { + background: var(--border); + flex-shrink: 0; +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.tsx b/OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.tsx new file mode 100644 index 00000000..26fc41b7 --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.tsx @@ -0,0 +1,57 @@ +import type { LayoutNode } from '@/types/layout'; +import { TabStrip } from './TabStrip'; +import { TabContent } from './TabContent'; +import { useAppStore } from '@/state/store'; +import './TerminalLayoutNode.css'; + +type Props = { + node: LayoutNode; + workspaceName: string; +}; + +export function TerminalLayoutNodeView({ node, workspaceName }: Props) { + const focusedPaneId = useAppStore((s) => s.focusedPaneId); + const setFocusedPane = useAppStore((s) => s.setFocusedPane); + + if (node.kind === 'pane') { + const activeTab = node.tabs.find((t) => t.id === node.active_tab_id) ?? node.tabs[0]; + const isFocused = node.id === focusedPaneId; + + return ( +
setFocusedPane(node.id)} + > + + +
+ ); + } + + // Split node + const isRow = node.direction === 'row'; + const firstSize = `${(node.ratio * 100).toFixed(1)}%`; + const secondSize = `${((1 - node.ratio) * 100).toFixed(1)}%`; + + return ( +
+
+ +
+
+
+ +
+
+ ); +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.css b/OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.css new file mode 100644 index 00000000..428b63ef --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.css @@ -0,0 +1,24 @@ +.terminal-surface { + position: absolute; + inset: 0; + overflow: hidden; + background: var(--bg); +} + +.terminal-surface .xterm { + height: 100%; + padding: 4px 8px; +} + +.terminal-surface .xterm-viewport { + overflow-y: auto; +} + +.terminal-surface .xterm-viewport::-webkit-scrollbar { + width: 6px; +} + +.terminal-surface .xterm-viewport::-webkit-scrollbar-thumb { + background: var(--border); + border-radius: 3px; +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.tsx b/OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.tsx new file mode 100644 index 00000000..fb902e4e --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.tsx @@ -0,0 +1,261 @@ +import { useEffect, useRef, useCallback } from 'react'; +import { Terminal } from '@xterm/xterm'; +import { FitAddon } from '@xterm/addon-fit'; +import { WebglAddon } from '@xterm/addon-webgl'; +import { WebLinksAddon } from '@xterm/addon-web-links'; +import { ClipboardAddon } from '@xterm/addon-clipboard'; +import { Unicode11Addon } from '@xterm/addon-unicode11'; +import { useAppStore } from '@/state/store'; +import { ptyBootstrap } from '@/api/pty'; +import { onEvent } from '@/api/events'; +import '@xterm/xterm/css/xterm.css'; +import './TerminalSurface.css'; + +const ACK_BATCH_BYTES = 32 * 1024; +const ACK_FLUSH_DELAY_MS = 25; + +type Props = { + workspaceName: string; + terminalId: string; +}; + +export function TerminalSurface({ workspaceName, terminalId }: Props) { + const containerRef = useRef(null); + const terminalRef = useRef(null); + const fitAddonRef = useRef(null); + const openedRef = useRef(false); + const startedRef = useRef(false); + const bootstrappedRef = useRef(false); + const pendingAckRef = useRef(0); + const ackTimerRef = useRef | null>(null); + const outputQueueRef = useRef([]); + const flushScheduledRef = useRef(false); + + const writePty = useAppStore((s) => s.writePty); + const resizePty = useAppStore((s) => s.resizePty); + const ackPty = useAppStore((s) => s.ackPty); + const startPtySession = useAppStore((s) => s.startPtySession); + const updatePtyStatus = useAppStore((s) => s.updatePtyStatus); + const updatePtyModes = useAppStore((s) => s.updatePtyModes); + const updateTabTitle = useAppStore((s) => s.updateTabTitle); + const workspaces = useAppStore((s) => s.workspaces); + + const flushAck = useCallback(() => { + if (pendingAckRef.current > 0) { + const bytes = pendingAckRef.current; + pendingAckRef.current = 0; + ackPty(workspaceName, terminalId, bytes); + } + }, [workspaceName, terminalId, ackPty]); + + // Queue output and flush via requestAnimationFrame (like the Wails app) + const enqueueOutput = useCallback((data: string, bytes: number) => { + outputQueueRef.current.push(data); + pendingAckRef.current += bytes; + if (pendingAckRef.current >= ACK_BATCH_BYTES) { + flushAck(); + } + if (!flushScheduledRef.current) { + flushScheduledRef.current = true; + requestAnimationFrame(() => { + flushScheduledRef.current = false; + const term = terminalRef.current; + if (!term || !openedRef.current) return; + const chunks = outputQueueRef.current.splice(0); + if (chunks.length > 0) { + term.write(chunks.join('')); + } + }); + } + }, [flushAck]); + + // Main initialization effect — sets up xterm, event listeners, starts PTY + useEffect(() => { + if (!containerRef.current) return; + const container = containerRef.current; + const unlisteners: (() => void)[] = []; + let disposed = false; + + const term = new Terminal({ + fontSize: 13, + fontFamily: "'JetBrains Mono', monospace", + cursorBlink: true, + scrollback: 10000, + allowProposedApi: true, + theme: { + background: '#0a0a0c', + foreground: '#ececee', + cursor: '#818cf8', + selectionBackground: 'rgba(129, 140, 248, 0.3)', + black: '#19191b', + brightBlack: '#737380', + red: '#f87171', + brightRed: '#fca5a5', + green: '#34d399', + brightGreen: '#6ee7b7', + yellow: '#fbbf24', + brightYellow: '#fde68a', + blue: '#818cf8', + brightBlue: '#a5b4fc', + magenta: '#c084fc', + brightMagenta: '#d8b4fe', + cyan: '#67e8f9', + brightCyan: '#a5f3fc', + white: '#ececee', + brightWhite: '#ffffff', + }, + }); + + const fitAddon = new FitAddon(); + term.loadAddon(fitAddon); + term.loadAddon(new WebLinksAddon()); + term.loadAddon(new ClipboardAddon()); + term.loadAddon(new Unicode11Addon()); + + terminalRef.current = term; + fitAddonRef.current = fitAddon; + openedRef.current = false; + startedRef.current = false; + outputQueueRef.current = []; + + // Step 1: Register event listeners FIRST (before starting PTY) + const tid = terminalId; + + onEvent<{ terminal_id: string; data: string; bytes: number }>('pty:data', (payload) => { + if (disposed || payload.terminal_id !== tid) return; + enqueueOutput(payload.data, payload.bytes); + }).then((fn) => unlisteners.push(fn)); + + onEvent<{ terminal_id: string; snapshot?: string }>('pty:bootstrap', (payload) => { + if (disposed || payload.terminal_id !== tid) return; + if (payload.snapshot && !bootstrappedRef.current) { + bootstrappedRef.current = true; + enqueueOutput(payload.snapshot, payload.snapshot.length); + } + updatePtyStatus(tid, 'connected'); + }).then((fn) => unlisteners.push(fn)); + + onEvent<{ terminal_id: string; alt_screen: boolean; mouse: boolean }>('pty:modes', (payload) => { + if (disposed || payload.terminal_id !== tid) return; + updatePtyModes(tid, payload.alt_screen, payload.mouse); + }).then((fn) => unlisteners.push(fn)); + + onEvent<{ terminal_id: string; status: string }>('pty:lifecycle', (payload) => { + if (disposed || payload.terminal_id !== tid) return; + if (payload.status === 'started') updatePtyStatus(tid, 'connected'); + else if (payload.status === 'closed') updatePtyStatus(tid, 'disconnected'); + else if (payload.status === 'error') updatePtyStatus(tid, 'error'); + }).then((fn) => unlisteners.push(fn)); + + // Step 2: Open xterm when container has dimensions + const tryOpen = () => { + if (disposed || openedRef.current) return; + if (container.clientWidth <= 0 || container.clientHeight <= 0) { + console.debug('[TerminalSurface] container has no dimensions yet:', container.clientWidth, container.clientHeight); + return; + } + + console.debug('[TerminalSurface] opening xterm in', container.clientWidth, 'x', container.clientHeight); + term.open(container); + term.unicode.activeVersion = '11'; + + // Load WebGL renderer after open (like the Wails app) + try { + term.loadAddon(new WebglAddon()); + } catch (e) { + console.warn('WebGL renderer unavailable, using canvas fallback:', e); + } + + openedRef.current = true; + + // Fit after fonts are ready, then auto-focus + const safeFit = () => { + try { fitAddon.fit(); } catch (_) { /* renderer not ready */ } + }; + const focusAfterSettle = () => { + requestAnimationFrame(() => { + if (!disposed && openedRef.current) term.focus(); + }); + }; + if (document.fonts?.ready) { + document.fonts.ready.then(() => { + if (!disposed && openedRef.current) safeFit(); + focusAfterSettle(); + }); + } else { + safeFit(); + focusAfterSettle(); + } + + term.onData((data) => { + writePty(workspaceName, tid, data); + }); + term.onResize(({ cols, rows }) => { + resizePty(workspaceName, tid, cols, rows); + }); + term.onTitleChange((title) => { + updateTabTitle(tid, title); + }); + + // Step 3: Start PTY session AFTER xterm is open and listeners are registered + if (!startedRef.current) { + startedRef.current = true; + const ws = useAppStore.getState().workspaces.find((w) => w.name === workspaceName); + const cwd = ws?.path ?? '/'; + console.debug('[TerminalSurface] starting PTY session', tid, 'cwd:', cwd); + + startPtySession(workspaceName, tid, 'terminal', cwd) + .then(() => { + console.debug('[TerminalSurface] PTY session started, fetching bootstrap in 200ms'); + // Give the streaming thread a moment, then fetch bootstrap as fallback + setTimeout(() => { + if (disposed || bootstrappedRef.current) return; + ptyBootstrap(workspaceName, tid) + .then((payload) => { + if (disposed || bootstrappedRef.current) return; + bootstrappedRef.current = true; + if (payload.snapshot) { + enqueueOutput(payload.snapshot, payload.snapshot.length); + } + updatePtyStatus(tid, 'connected'); + }) + .catch(() => {}); + }, 200); + }) + .catch((err) => { + console.error('PTY start failed:', err); + updatePtyStatus(tid, 'error'); + }); + } + }; + + const observer = new ResizeObserver(() => { + if (!openedRef.current) { + tryOpen(); + } else if (!disposed) { + try { fitAddon.fit(); } catch (_) { /* renderer not ready */ } + } + }); + observer.observe(container); + requestAnimationFrame(tryOpen); + + // ACK flush timer + ackTimerRef.current = setInterval(flushAck, ACK_FLUSH_DELAY_MS); + + return () => { + disposed = true; + observer.disconnect(); + if (ackTimerRef.current) clearInterval(ackTimerRef.current); + for (const fn of unlisteners) fn(); + term.dispose(); + terminalRef.current = null; + fitAddonRef.current = null; + openedRef.current = false; + startedRef.current = false; + bootstrappedRef.current = false; + }; + }, [workspaceName, terminalId, writePty, resizePty, startPtySession, + updatePtyStatus, updatePtyModes, updateTabTitle, enqueueOutput, flushAck]); + + return
; +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/WorkspaceItem.css b/OPUS-tauri-app/src/components/pages/Spaces/WorkspaceItem.css new file mode 100644 index 00000000..f896bee7 --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/WorkspaceItem.css @@ -0,0 +1,104 @@ +.workspace-item { + display: flex; + align-items: center; + gap: var(--space-2); + width: 100%; + padding: 8px var(--space-3); + border-radius: var(--radius-md); + text-align: left; + font-size: 13px; + color: var(--text); + cursor: pointer; + transition: background var(--transition-fast); +} + +.workspace-item:hover { + background: var(--surface); +} + +.workspace-item.active { + background: var(--accent-soft); +} + +.workspace-item__dot { + width: 6px; + height: 6px; + border-radius: 50%; + flex-shrink: 0; +} + +.workspace-item__name { + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-weight: 500; +} + +.workspace-item__menu-anchor { + position: relative; + flex-shrink: 0; +} + +.workspace-item__more { + display: flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + border: none; + background: none; + color: var(--muted); + cursor: pointer; + border-radius: 3px; + font-size: 16px; + line-height: 1; + opacity: 0; + transition: opacity var(--transition-fast), background var(--transition-fast); +} + +.workspace-item:hover .workspace-item__more { + opacity: 1; +} + +.workspace-item__more:hover { + background: var(--border); + color: var(--text); +} + +.workspace-item__menu { + position: absolute; + top: 100%; + right: 0; + min-width: 140px; + background: var(--panel-strong); + border: 1px solid var(--border-active); + border-radius: 3px; + padding: 4px 0; + z-index: 200; +} + +.workspace-item__menu-item { + display: block; + width: 100%; + padding: 6px 12px; + font-size: 13px; + text-align: left; + color: var(--text); + border: none; + background: none; + cursor: pointer; + transition: background var(--transition-fast); +} + +.workspace-item__menu-item:hover { + background: var(--surface-hover); +} + +.workspace-item__menu-item--danger { + color: var(--danger, #ef4444); +} + +.workspace-item__menu-item--confirm { + background: rgba(239, 68, 68, 0.1); +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/WorkspaceItem.tsx b/OPUS-tauri-app/src/components/pages/Spaces/WorkspaceItem.tsx new file mode 100644 index 00000000..ba7907d7 --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/WorkspaceItem.tsx @@ -0,0 +1,80 @@ +import { useState, useRef, useEffect } from 'react'; +import type { WorkspaceSummary } from '@/types/workspace'; +import './WorkspaceItem.css'; + +type Props = { + workspace: WorkspaceSummary; + active: boolean; + onClick: () => void; + onDelete: () => Promise; +}; + +export function WorkspaceItem({ workspace, active, onClick, onDelete }: Props) { + const [menuOpen, setMenuOpen] = useState(false); + const [confirming, setConfirming] = useState(false); + const [deleting, setDeleting] = useState(false); + const menuRef = useRef(null); + + useEffect(() => { + if (!menuOpen) return; + function handleClick(e: MouseEvent) { + if (menuRef.current && !menuRef.current.contains(e.target as Node)) { + setMenuOpen(false); + setConfirming(false); + } + } + document.addEventListener('mousedown', handleClick); + return () => document.removeEventListener('mousedown', handleClick); + }, [menuOpen]); + + function handleMenuToggle(e: React.MouseEvent) { + e.stopPropagation(); + setMenuOpen(!menuOpen); + setConfirming(false); + } + + function handleDelete(e: React.MouseEvent) { + e.stopPropagation(); + if (!confirming) { + setConfirming(true); + return; + } + setDeleting(true); + onDelete().catch(() => { + setDeleting(false); + setMenuOpen(false); + }); + } + + return ( +
+ + {workspace.name} +
+ + {menuOpen && ( +
+ +
+ )} +
+
+ ); +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/WorkspaceList.css b/OPUS-tauri-app/src/components/pages/Spaces/WorkspaceList.css new file mode 100644 index 00000000..6c46fd93 --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/WorkspaceList.css @@ -0,0 +1,12 @@ +.workspace-list { + display: flex; + flex-direction: column; + padding: 0 var(--space-2); +} + +.workspace-list__empty { + padding: var(--space-4); + text-align: center; + font-size: 12px; + color: var(--muted); +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/WorkspaceList.tsx b/OPUS-tauri-app/src/components/pages/Spaces/WorkspaceList.tsx new file mode 100644 index 00000000..0924347f --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Spaces/WorkspaceList.tsx @@ -0,0 +1,49 @@ +import { useEffect } from 'react'; +import { useAppStore } from '@/state/store'; +import { WorkspaceItem } from './WorkspaceItem'; +import './WorkspaceList.css'; + +export function WorkspaceList() { + const workspaces = useAppStore((s) => s.workspaces); + const activeWorksetId = useAppStore((s) => s.activeWorksetId); + const activeWorkspaceName = useAppStore((s) => s.activeWorkspaceName); + const loadWorkspaces = useAppStore((s) => s.loadWorkspaces); + const setActiveWorkspace = useAppStore((s) => s.setActiveWorkspace); + const deleteWorkspace = useAppStore((s) => s.deleteWorkspace); + + useEffect(() => { + if (activeWorksetId) { + loadWorkspaces(activeWorksetId); + } + }, [activeWorksetId, loadWorkspaces]); + + if (!activeWorksetId) return null; + + async function handleDelete(name: string) { + await deleteWorkspace(activeWorksetId!, name); + if (activeWorkspaceName === name) { + // Clear active workspace since it was deleted + const remaining = useAppStore.getState().workspaces; + if (remaining.length > 0) { + setActiveWorkspace(remaining[0].name); + } + } + } + + return ( +
+ {workspaces.map((ws) => ( + setActiveWorkspace(ws.name)} + onDelete={() => handleDelete(ws.name)} + /> + ))} + {workspaces.length === 0 && ( +
No workspaces
+ )} +
+ ); +} diff --git a/OPUS-tauri-app/src/components/ui/Button.css b/OPUS-tauri-app/src/components/ui/Button.css new file mode 100644 index 00000000..4ba32a53 --- /dev/null +++ b/OPUS-tauri-app/src/components/ui/Button.css @@ -0,0 +1,60 @@ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: var(--space-2); + border-radius: var(--radius-md); + font-size: 13px; + font-weight: 500; + transition: all var(--transition-fast); + white-space: nowrap; +} + +.btn--md { + padding: 6px 14px; +} + +.btn--sm { + padding: 4px 10px; + font-size: 12px; +} + +.btn--primary { + background: var(--accent); + color: #fff; +} +.btn--primary:hover { + opacity: 0.9; +} + +.btn--secondary { + background: var(--surface); + border: 1px solid var(--border); + color: var(--text); +} +.btn--secondary:hover { + border-color: var(--border-active); + background: var(--surface-hover); +} + +.btn--ghost { + background: transparent; + color: var(--muted); +} +.btn--ghost:hover { + background: var(--surface); + color: var(--text); +} + +.btn--danger { + background: var(--danger); + color: #fff; +} +.btn--danger:hover { + opacity: 0.9; +} + +.btn:disabled { + opacity: 0.4; + cursor: not-allowed; +} diff --git a/OPUS-tauri-app/src/components/ui/Button.tsx b/OPUS-tauri-app/src/components/ui/Button.tsx new file mode 100644 index 00000000..d813b05f --- /dev/null +++ b/OPUS-tauri-app/src/components/ui/Button.tsx @@ -0,0 +1,16 @@ +import type { ButtonHTMLAttributes, ReactNode } from 'react'; +import './Button.css'; + +type Props = ButtonHTMLAttributes & { + variant?: 'primary' | 'secondary' | 'ghost' | 'danger'; + size?: 'sm' | 'md'; + children: ReactNode; +}; + +export function Button({ variant = 'secondary', size = 'md', className = '', children, ...rest }: Props) { + return ( + + ); +} diff --git a/OPUS-tauri-app/src/components/ui/EmptyState.css b/OPUS-tauri-app/src/components/ui/EmptyState.css new file mode 100644 index 00000000..62807b58 --- /dev/null +++ b/OPUS-tauri-app/src/components/ui/EmptyState.css @@ -0,0 +1,31 @@ +.empty-state { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: var(--space-3); + padding: var(--space-6); + text-align: center; + flex: 1; + min-height: 200px; +} + +.empty-state__icon { + color: var(--muted); +} + +.empty-state__title { + font-size: 14px; + font-weight: 600; + color: var(--text); +} + +.empty-state__desc { + font-size: 13px; + color: var(--muted); + max-width: 300px; +} + +.empty-state__action { + margin-top: var(--space-2); +} diff --git a/OPUS-tauri-app/src/components/ui/EmptyState.tsx b/OPUS-tauri-app/src/components/ui/EmptyState.tsx new file mode 100644 index 00000000..82b9d558 --- /dev/null +++ b/OPUS-tauri-app/src/components/ui/EmptyState.tsx @@ -0,0 +1,20 @@ +import type { ReactNode } from 'react'; +import './EmptyState.css'; + +type Props = { + icon?: ReactNode; + title: string; + description?: string; + action?: ReactNode; +}; + +export function EmptyState({ icon, title, description, action }: Props) { + return ( +
+ {icon &&
{icon}
} +
{title}
+ {description &&
{description}
} + {action &&
{action}
} +
+ ); +} diff --git a/OPUS-tauri-app/src/components/ui/Input.css b/OPUS-tauri-app/src/components/ui/Input.css new file mode 100644 index 00000000..6bfd5200 --- /dev/null +++ b/OPUS-tauri-app/src/components/ui/Input.css @@ -0,0 +1,25 @@ +.input { + width: 100%; + padding: 6px 10px; + background: var(--surface); + border: 1px solid var(--border); + border-radius: var(--radius-md); + color: var(--text); + font-size: 13px; + font-family: var(--font-body); + transition: border-color var(--transition-fast); +} + +.input::placeholder { + color: var(--muted); +} + +.input:focus { + border-color: var(--accent); + outline: none; +} + +.input:disabled { + opacity: 0.5; + cursor: not-allowed; +} diff --git a/OPUS-tauri-app/src/components/ui/Input.tsx b/OPUS-tauri-app/src/components/ui/Input.tsx new file mode 100644 index 00000000..b92f19d6 --- /dev/null +++ b/OPUS-tauri-app/src/components/ui/Input.tsx @@ -0,0 +1,8 @@ +import type { InputHTMLAttributes } from 'react'; +import './Input.css'; + +type Props = InputHTMLAttributes; + +export function Input({ className = '', ...rest }: Props) { + return ; +} diff --git a/OPUS-tauri-app/src/components/ui/StatusRow.css b/OPUS-tauri-app/src/components/ui/StatusRow.css new file mode 100644 index 00000000..72aedd47 --- /dev/null +++ b/OPUS-tauri-app/src/components/ui/StatusRow.css @@ -0,0 +1,34 @@ +.status-row { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 12px; + border-radius: 3px; + font-size: 13px; + border: 1px solid var(--border); + background: var(--surface); +} + +.status-row__icon--ok { color: var(--success); } +.status-row__icon--warning { color: var(--warning); } +.status-row__icon--error { color: var(--danger); } +.status-row__icon--unknown { color: var(--muted); } + +.status-row__label { + font-weight: 500; +} + +.status-row__value { + flex: 1; + text-align: right; + font-family: var(--font-mono); + font-size: 12px; + color: var(--muted); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.status-row__action { + flex-shrink: 0; +} diff --git a/OPUS-tauri-app/src/components/ui/StatusRow.tsx b/OPUS-tauri-app/src/components/ui/StatusRow.tsx new file mode 100644 index 00000000..146514fc --- /dev/null +++ b/OPUS-tauri-app/src/components/ui/StatusRow.tsx @@ -0,0 +1,27 @@ +import { CheckCircle, XCircle, AlertCircle } from 'lucide-react'; +import './StatusRow.css'; + +type Props = { + label: string; + status: 'ok' | 'warning' | 'error' | 'unknown'; + value?: string; + action?: React.ReactNode; +}; + +const statusIcons = { + ok: , + warning: , + error: , + unknown: , +}; + +export function StatusRow({ label, status, value, action }: Props) { + return ( +
+ {statusIcons[status]} + {label} + {value && {value}} + {action &&
{action}
} +
+ ); +} diff --git a/OPUS-tauri-app/src/hooks/useTauriEvent.ts b/OPUS-tauri-app/src/hooks/useTauriEvent.ts new file mode 100644 index 00000000..a55e01a0 --- /dev/null +++ b/OPUS-tauri-app/src/hooks/useTauriEvent.ts @@ -0,0 +1,19 @@ +import { useEffect } from 'react'; +import { onEvent } from '@/api/events'; + +/** + * Subscribe to a Tauri event, auto-unsubscribing on unmount. + */ +export function useTauriEvent(event: string, handler: (payload: T) => void) { + useEffect(() => { + let unlisten: (() => void) | undefined; + + onEvent(event, handler).then((fn) => { + unlisten = fn; + }); + + return () => { + unlisten?.(); + }; + }, [event, handler]); +} diff --git a/OPUS-tauri-app/src/main.tsx b/OPUS-tauri-app/src/main.tsx new file mode 100644 index 00000000..dc3f4b53 --- /dev/null +++ b/OPUS-tauri-app/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App'; +import './styles/global.css'; + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + +); diff --git a/OPUS-tauri-app/src/state/slices/diffSlice.ts b/OPUS-tauri-app/src/state/slices/diffSlice.ts new file mode 100644 index 00000000..8ed64984 --- /dev/null +++ b/OPUS-tauri-app/src/state/slices/diffSlice.ts @@ -0,0 +1,62 @@ +import type { StateCreator } from 'zustand'; +import type { DiffSummary, FilePatch } from '@/types/diff'; +import { diffSummary, diffFilePatch } from '@/api/diff'; + +export type RepoDiffState = { + repo: string; + repoPath: string; + summary: DiffSummary | null; + loading: boolean; +}; + +export type DiffSlice = { + repoDiffs: Record; + loadDiffSummary: (workspaceName: string, repo: string, repoPath: string) => Promise; + updateDiffSummary: (repo: string, summary: DiffSummary) => void; + fetchFilePatch: (repoPath: string, path: string, prevPath: string | undefined, status: string) => Promise; +}; + +export const createDiffSlice: StateCreator = (set, get) => ({ + repoDiffs: {}, + + loadDiffSummary: async (workspaceName, repo, repoPath) => { + set((state) => ({ + repoDiffs: { + ...state.repoDiffs, + [repo]: { repo, repoPath, summary: state.repoDiffs[repo]?.summary ?? null, loading: true }, + }, + })); + try { + const summary = await diffSummary(workspaceName, repo, repoPath); + set((state) => ({ + repoDiffs: { + ...state.repoDiffs, + [repo]: { repo, repoPath, summary, loading: false }, + }, + })); + } catch { + set((state) => ({ + repoDiffs: { + ...state.repoDiffs, + [repo]: { ...state.repoDiffs[repo], loading: false }, + }, + })); + } + }, + + updateDiffSummary: (repo, summary) => { + set((state) => { + const existing = state.repoDiffs[repo]; + return { + repoDiffs: { + ...state.repoDiffs, + [repo]: { repo, repoPath: existing?.repoPath ?? '', summary, loading: false }, + }, + }; + }); + }, + + fetchFilePatch: async (repoPath, path, prevPath, status) => { + return diffFilePatch(repoPath, path, prevPath, status); + }, +}); diff --git a/OPUS-tauri-app/src/state/slices/layoutSlice.ts b/OPUS-tauri-app/src/state/slices/layoutSlice.ts new file mode 100644 index 00000000..1e7fcdf3 --- /dev/null +++ b/OPUS-tauri-app/src/state/slices/layoutSlice.ts @@ -0,0 +1,144 @@ +import type { StateCreator } from 'zustand'; +import type { TerminalLayout, LayoutNode, LayoutTab, PaneNode } from '@/types/layout'; +import { layoutGet, layoutSave } from '@/api/pty'; + +export type LayoutSlice = { + layout: TerminalLayout | null; + focusedPaneId: string | null; + loadLayout: (workspaceName: string) => Promise; + saveLayout: (workspaceName: string) => Promise; + setLayout: (layout: TerminalLayout) => void; + addTab: (paneId: string, tab: LayoutTab) => void; + removeTab: (paneId: string, tabId: string) => void; + setActiveTab: (paneId: string, tabId: string) => void; + setFocusedPane: (paneId: string) => void; + updateTabTitle: (terminalId: string, title: string) => void; +}; + +function findAndUpdatePane( + node: LayoutNode, + paneId: string, + updater: (pane: PaneNode) => PaneNode, +): LayoutNode { + if (node.kind === 'pane') { + if (node.id === paneId) { + return updater(node); + } + return node; + } + return { + ...node, + first: findAndUpdatePane(node.first, paneId, updater), + second: findAndUpdatePane(node.second, paneId, updater), + }; +} + +function updateTabInNode( + node: LayoutNode, + terminalId: string, + updater: (tab: LayoutTab) => LayoutTab, +): LayoutNode { + if (node.kind === 'pane') { + const updated = node.tabs.map((t) => + t.terminal_id === terminalId ? updater(t) : t, + ); + if (updated === node.tabs) return node; + return { ...node, tabs: updated }; + } + return { + ...node, + first: updateTabInNode(node.first, terminalId, updater), + second: updateTabInNode(node.second, terminalId, updater), + }; +} + +function defaultLayout(): TerminalLayout { + return { + version: 1, + root: { + kind: 'pane', + id: 'main', + tabs: [], + active_tab_id: undefined, + }, + focused_pane_id: 'main', + }; +} + +export const createLayoutSlice: StateCreator = (set, get) => ({ + layout: null, + focusedPaneId: null, + + loadLayout: async (workspaceName) => { + try { + const saved = await layoutGet(workspaceName); + const layout = saved ?? defaultLayout(); + set({ layout, focusedPaneId: layout.focused_pane_id ?? 'main' }); + } catch { + set({ layout: defaultLayout(), focusedPaneId: 'main' }); + } + }, + + saveLayout: async (workspaceName) => { + const { layout } = get(); + if (layout) { + await layoutSave(workspaceName, layout).catch(() => {}); + } + }, + + setLayout: (layout) => set({ layout }), + + addTab: (paneId, tab) => { + const { layout } = get(); + if (!layout) return; + const newRoot = findAndUpdatePane(layout.root, paneId, (pane) => ({ + ...pane, + tabs: [...pane.tabs, tab], + active_tab_id: tab.id, + })); + set({ layout: { ...layout, root: newRoot } }); + }, + + removeTab: (paneId, tabId) => { + const { layout } = get(); + if (!layout) return; + const newRoot = findAndUpdatePane(layout.root, paneId, (pane) => { + const tabs = pane.tabs.filter((t) => t.id !== tabId); + const activeId = + pane.active_tab_id === tabId + ? tabs[tabs.length - 1]?.id + : pane.active_tab_id; + return { ...pane, tabs, active_tab_id: activeId }; + }); + set({ layout: { ...layout, root: newRoot } }); + }, + + setActiveTab: (paneId, tabId) => { + const { layout } = get(); + if (!layout) return; + const newRoot = findAndUpdatePane(layout.root, paneId, (pane) => ({ + ...pane, + active_tab_id: tabId, + })); + set({ layout: { ...layout, root: newRoot } }); + }, + + setFocusedPane: (paneId) => { + const { layout } = get(); + if (!layout) return; + set({ + layout: { ...layout, focused_pane_id: paneId }, + focusedPaneId: paneId, + }); + }, + + updateTabTitle: (terminalId, title) => { + const { layout } = get(); + if (!layout) return; + const newRoot = updateTabInNode(layout.root, terminalId, (tab) => ({ + ...tab, + title, + })); + set({ layout: { ...layout, root: newRoot } }); + }, +}); diff --git a/OPUS-tauri-app/src/state/slices/ptySlice.ts b/OPUS-tauri-app/src/state/slices/ptySlice.ts new file mode 100644 index 00000000..4632b1b8 --- /dev/null +++ b/OPUS-tauri-app/src/state/slices/ptySlice.ts @@ -0,0 +1,115 @@ +import type { StateCreator } from 'zustand'; +import { ptyCreate, ptyStart, ptyWrite, ptyResize, ptyAck, ptyStop } from '@/api/pty'; + +export type PtySessionState = { + terminalId: string; + workspaceName: string; + kind: 'terminal' | 'agent'; + status: 'starting' | 'connected' | 'disconnected' | 'error'; + altScreen: boolean; + mouse: boolean; +}; + +export type PtySlice = { + ptySessions: Record; + allocatePtySession: (workspaceName: string, kind: 'terminal' | 'agent') => Promise; + startPtySession: (workspaceName: string, terminalId: string, kind: 'terminal' | 'agent', cwd: string) => Promise; + createPtySession: (workspaceName: string, kind: 'terminal' | 'agent', cwd: string) => Promise; + closePtySession: (workspaceName: string, terminalId: string) => Promise; + writePty: (workspaceName: string, terminalId: string, data: string) => Promise; + resizePty: (workspaceName: string, terminalId: string, cols: number, rows: number) => Promise; + ackPty: (workspaceName: string, terminalId: string, bytes: number) => Promise; + updatePtyStatus: (terminalId: string, status: PtySessionState['status']) => void; + updatePtyModes: (terminalId: string, altScreen: boolean, mouse: boolean) => void; +}; + +export const createPtySlice: StateCreator = (set, get) => ({ + ptySessions: {}, + + allocatePtySession: async (workspaceName, kind) => { + const { terminal_id } = await ptyCreate(); + set((state) => ({ + ptySessions: { + ...state.ptySessions, + [terminal_id]: { + terminalId: terminal_id, + workspaceName, + kind, + status: 'starting', + altScreen: false, + mouse: false, + }, + }, + })); + return terminal_id; + }, + + startPtySession: async (workspaceName, terminalId, kind, cwd) => { + await ptyStart(workspaceName, terminalId, kind, cwd); + }, + + createPtySession: async (workspaceName, kind, cwd) => { + const { terminal_id } = await ptyCreate(); + set((state) => ({ + ptySessions: { + ...state.ptySessions, + [terminal_id]: { + terminalId: terminal_id, + workspaceName, + kind, + status: 'starting', + altScreen: false, + mouse: false, + }, + }, + })); + await ptyStart(workspaceName, terminal_id, kind, cwd); + return terminal_id; + }, + + closePtySession: async (workspaceName, terminalId) => { + await ptyStop(workspaceName, terminalId).catch(() => {}); + set((state) => { + const { [terminalId]: _, ...rest } = state.ptySessions; + return { ptySessions: rest }; + }); + }, + + writePty: async (workspaceName, terminalId, data) => { + await ptyWrite(workspaceName, terminalId, data); + }, + + resizePty: async (workspaceName, terminalId, cols, rows) => { + await ptyResize(workspaceName, terminalId, cols, rows); + }, + + ackPty: async (workspaceName, terminalId, bytes) => { + await ptyAck(workspaceName, terminalId, bytes); + }, + + updatePtyStatus: (terminalId, status) => { + set((state) => { + const session = state.ptySessions[terminalId]; + if (!session) return state; + return { + ptySessions: { + ...state.ptySessions, + [terminalId]: { ...session, status }, + }, + }; + }); + }, + + updatePtyModes: (terminalId, altScreen, mouse) => { + set((state) => { + const session = state.ptySessions[terminalId]; + if (!session) return state; + return { + ptySessions: { + ...state.ptySessions, + [terminalId]: { ...session, altScreen, mouse }, + }, + }; + }); + }, +}); diff --git a/OPUS-tauri-app/src/state/slices/uiSlice.ts b/OPUS-tauri-app/src/state/slices/uiSlice.ts new file mode 100644 index 00000000..c421a804 --- /dev/null +++ b/OPUS-tauri-app/src/state/slices/uiSlice.ts @@ -0,0 +1,39 @@ +import type { StateCreator } from 'zustand'; + +export type NavPage = 'command-center' | 'spaces' | 'settings'; +export type CommandCenterSection = 'overview' | 'repositories' | 'diagnostics'; +export type SettingsSection = 'app' | 'workset' | 'diagnostics'; + +export type ModalState = { + type: string; + props?: Record; +} | null; + +export type UiSlice = { + activePage: NavPage; + commandCenterSection: CommandCenterSection; + settingsSection: SettingsSection; + rightPanelCollapsed: boolean; + activeModal: ModalState; + setActivePage: (page: NavPage) => void; + setCommandCenterSection: (section: CommandCenterSection) => void; + setSettingsSection: (section: SettingsSection) => void; + toggleRightPanel: () => void; + openModal: (type: string, props?: Record) => void; + closeModal: () => void; +}; + +export const createUiSlice: StateCreator = (set) => ({ + activePage: 'spaces', + commandCenterSection: 'overview', + settingsSection: 'app', + rightPanelCollapsed: false, + activeModal: null, + + setActivePage: (page) => set({ activePage: page }), + setCommandCenterSection: (section) => set({ commandCenterSection: section }), + setSettingsSection: (section) => set({ settingsSection: section }), + toggleRightPanel: () => set((s) => ({ rightPanelCollapsed: !s.rightPanelCollapsed })), + openModal: (type, props) => set({ activeModal: { type, props } }), + closeModal: () => set({ activeModal: null }), +}); diff --git a/OPUS-tauri-app/src/state/slices/worksetSlice.ts b/OPUS-tauri-app/src/state/slices/worksetSlice.ts new file mode 100644 index 00000000..9a3393e5 --- /dev/null +++ b/OPUS-tauri-app/src/state/slices/worksetSlice.ts @@ -0,0 +1,90 @@ +import type { StateCreator } from 'zustand'; +import type { WorksetProfile, WorksetDefaults } from '@/types/workset'; +import * as api from '@/api/worksets'; +import * as contextApi from '@/api/context'; + +export type WorksetSlice = { + worksets: WorksetProfile[]; + activeWorksetId: string | null; + activeWorkspaceName: string | null; + worksetsLoading: boolean; + loadWorksets: () => Promise; + createWorkset: (name: string, defaults?: WorksetDefaults) => Promise; + updateWorkset: (id: string, name?: string, defaults?: WorksetDefaults) => Promise; + deleteWorkset: (id: string) => Promise; + setActiveWorkset: (id: string) => Promise; + setActiveWorkspace: (name: string) => Promise; + addWorksetRepo: (source: string) => Promise; + removeWorksetRepo: (source: string) => Promise; +}; + +export const createWorksetSlice: StateCreator = (set, get) => ({ + worksets: [], + activeWorksetId: null, + activeWorkspaceName: null, + worksetsLoading: false, + + loadWorksets: async () => { + set({ worksetsLoading: true }); + try { + const [worksets, context] = await Promise.all([ + api.listWorksets(), + contextApi.getContext(), + ]); + const validWorksetId = worksets.some((w) => w.id === context.active_workset_id) + ? context.active_workset_id + : null; + set({ + worksets, + activeWorksetId: validWorksetId, + activeWorkspaceName: validWorksetId ? (context.active_workspace || null) : null, + worksetsLoading: false, + }); + } catch { + set({ worksetsLoading: false }); + } + }, + + createWorkset: async (name, defaults) => { + const profile = await api.createWorkset(name, defaults); + set((s) => ({ worksets: [...s.worksets, profile] })); + return profile; + }, + + updateWorkset: async (id, name, defaults) => { + const updated = await api.updateWorkset(id, name, defaults); + set((s) => ({ worksets: s.worksets.map((w) => (w.id === id ? updated : w)) })); + }, + + deleteWorkset: async (id) => { + await api.deleteWorkset(id); + set((s) => ({ + worksets: s.worksets.filter((w) => w.id !== id), + activeWorksetId: s.activeWorksetId === id ? null : s.activeWorksetId, + })); + }, + + setActiveWorkset: async (id) => { + await contextApi.setActiveWorkset(id); + set({ activeWorksetId: id, activeWorkspaceName: null }); + }, + + setActiveWorkspace: async (name) => { + await contextApi.setActiveWorkspace(name); + set({ activeWorkspaceName: name }); + }, + + addWorksetRepo: async (source) => { + const { activeWorksetId } = get(); + if (!activeWorksetId) return; + const updated = await api.addWorksetRepo(activeWorksetId, source); + set((s) => ({ worksets: s.worksets.map((w) => (w.id === activeWorksetId ? updated : w)) })); + }, + + removeWorksetRepo: async (source) => { + const { activeWorksetId } = get(); + if (!activeWorksetId) return; + const updated = await api.removeWorksetRepo(activeWorksetId, source); + set((s) => ({ worksets: s.worksets.map((w) => (w.id === activeWorksetId ? updated : w)) })); + }, +}); diff --git a/OPUS-tauri-app/src/state/slices/workspaceSlice.ts b/OPUS-tauri-app/src/state/slices/workspaceSlice.ts new file mode 100644 index 00000000..cfdf983f --- /dev/null +++ b/OPUS-tauri-app/src/state/slices/workspaceSlice.ts @@ -0,0 +1,42 @@ +import type { StateCreator } from 'zustand'; +import type { WorkspaceSummary } from '@/types/workspace'; +import * as api from '@/api/workspaces'; + +export type WorkspaceSlice = { + workspaces: WorkspaceSummary[]; + workspacesLoading: boolean; + loadWorkspaces: (worksetId: string) => Promise; + createWorkspace: (worksetId: string, name: string) => Promise; + deleteWorkspace: (worksetId: string, name: string) => Promise; +}; + +export const createWorkspaceSlice: StateCreator = (set) => ({ + workspaces: [], + workspacesLoading: false, + + loadWorkspaces: async (worksetId) => { + set({ workspacesLoading: true }); + try { + const workspaces = await api.listWorkspaces(worksetId); + set({ workspaces, workspacesLoading: false }); + } catch { + set({ workspacesLoading: false }); + } + }, + + createWorkspace: async (worksetId, name) => { + await api.createWorkspace(worksetId, name); + try { + const workspaces = await api.listWorkspaces(worksetId); + set({ workspaces }); + } catch {} + }, + + deleteWorkspace: async (worksetId, name) => { + await api.deleteWorkspace(worksetId, name, true); + try { + const workspaces = await api.listWorkspaces(worksetId); + set({ workspaces }); + } catch {} + }, +}); diff --git a/OPUS-tauri-app/src/state/store.ts b/OPUS-tauri-app/src/state/store.ts new file mode 100644 index 00000000..d86818f0 --- /dev/null +++ b/OPUS-tauri-app/src/state/store.ts @@ -0,0 +1,18 @@ +import { create } from 'zustand'; +import { createWorksetSlice, type WorksetSlice } from './slices/worksetSlice'; +import { createWorkspaceSlice, type WorkspaceSlice } from './slices/workspaceSlice'; +import { createLayoutSlice, type LayoutSlice } from './slices/layoutSlice'; +import { createPtySlice, type PtySlice } from './slices/ptySlice'; +import { createDiffSlice, type DiffSlice } from './slices/diffSlice'; +import { createUiSlice, type UiSlice } from './slices/uiSlice'; + +export type AppStore = WorksetSlice & WorkspaceSlice & LayoutSlice & PtySlice & DiffSlice & UiSlice; + +export const useAppStore = create()((...args) => ({ + ...createWorksetSlice(...args), + ...createWorkspaceSlice(...args), + ...createLayoutSlice(...args), + ...createPtySlice(...args), + ...createDiffSlice(...args), + ...createUiSlice(...args), +})); diff --git a/OPUS-tauri-app/src/styles/fonts.css b/OPUS-tauri-app/src/styles/fonts.css new file mode 100644 index 00000000..19ba28d0 --- /dev/null +++ b/OPUS-tauri-app/src/styles/fonts.css @@ -0,0 +1,2 @@ +@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap'); diff --git a/OPUS-tauri-app/src/styles/global.css b/OPUS-tauri-app/src/styles/global.css new file mode 100644 index 00000000..d241e79f --- /dev/null +++ b/OPUS-tauri-app/src/styles/global.css @@ -0,0 +1,73 @@ +@import './fonts.css'; +@import './tokens.css'; + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html, +body { + margin: 0; + padding: 0; + height: 100%; + background: var(--bg); + color: var(--text); +} + +body { + font-size: 13px; + font-family: var(--font-body); + line-height: 1.5; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +button { + font-family: inherit; + cursor: pointer; + color: inherit; +} + +button, +input, +select, +textarea { + border: none; + outline: none; + background: transparent; +} + +#root { + height: 100%; +} + +::selection { + background: rgba(129, 140, 248, 0.3); + color: #fff; +} + +:focus-visible { + outline: 2px solid var(--accent); + outline-offset: -1px; +} + +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +::-webkit-scrollbar-track { + background: transparent; +} + +::-webkit-scrollbar-thumb { + background: var(--surface-hover); + border-radius: 3px; +} + +* { + scrollbar-width: thin; + scrollbar-color: var(--surface-hover) transparent; +} diff --git a/OPUS-tauri-app/src/styles/tokens.css b/OPUS-tauri-app/src/styles/tokens.css new file mode 100644 index 00000000..bfc063a2 --- /dev/null +++ b/OPUS-tauri-app/src/styles/tokens.css @@ -0,0 +1,57 @@ +:root { + color-scheme: dark; + + --font-body: 'Inter', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; + --font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', monospace; + + --bg: #0a0a0c; + --panel: #111113; + --panel-strong: #19191b; + --panel-soft: #0f0f11; + --surface: #19191b; + --surface-hover: #202023; + --text: #ececee; + --muted: #737380; + + --border: rgba(255, 255, 255, 0.07); + --border-active: rgba(255, 255, 255, 0.12); + + --accent: #818cf8; + --accent-soft: rgba(129, 140, 248, 0.08); + --accent-border: rgba(129, 140, 248, 0.2); + + --success: #34d399; + --success-soft: rgba(52, 211, 153, 0.08); + --success-border: rgba(52, 211, 153, 0.18); + + --warning: #fbbf24; + --warning-soft: rgba(251, 191, 36, 0.08); + --warning-border: rgba(251, 191, 36, 0.18); + + --danger: #f87171; + --danger-soft: rgba(248, 113, 113, 0.08); + --danger-border: rgba(248, 113, 113, 0.18); + + --radius-sm: 2px; + --radius-md: 3px; + --radius-lg: 0px; + + --transition-fast: 120ms ease; + --transition-normal: 160ms ease; + + --space-1: 4px; + --space-2: 8px; + --space-3: 12px; + --space-4: 16px; + --space-5: 20px; + --space-6: 24px; + + --shadow-sm: none; + --shadow-md: none; + --shadow-lg: none; + + --rail-width: 52px; + --sidebar-width: 250px; + --right-panel-width: 320px; + --chrome-height: 38px; +} diff --git a/OPUS-tauri-app/src/types/context.ts b/OPUS-tauri-app/src/types/context.ts new file mode 100644 index 00000000..d326808e --- /dev/null +++ b/OPUS-tauri-app/src/types/context.ts @@ -0,0 +1,4 @@ +export type ActiveContext = { + active_workset_id?: string; + active_workspace?: string; +}; diff --git a/OPUS-tauri-app/src/types/diagnostics.ts b/OPUS-tauri-app/src/types/diagnostics.ts new file mode 100644 index 00000000..cda39823 --- /dev/null +++ b/OPUS-tauri-app/src/types/diagnostics.ts @@ -0,0 +1,25 @@ +export type EnvSnapshot = { + path: string; + shell: string; + home: string; + ssh_auth_sock?: string; + git_ssh_command?: string; + git_askpass?: string; + gh_config_dir?: string; + gh_auth_summary?: string; +}; + +export type SessiondStatus = { + running: boolean; + version?: string; + socket_path?: string; + last_error?: string; + last_restart?: string; +}; + +export type CliStatus = { + available: boolean; + path?: string; + version?: string; + error?: string; +}; diff --git a/OPUS-tauri-app/src/types/diff.ts b/OPUS-tauri-app/src/types/diff.ts new file mode 100644 index 00000000..e7b1efba --- /dev/null +++ b/OPUS-tauri-app/src/types/diff.ts @@ -0,0 +1,22 @@ +export type DiffSummary = { + files: DiffFileSummary[]; + total_added: number; + total_removed: number; +}; + +export type DiffFileSummary = { + path: string; + prev_path?: string; + added: number; + removed: number; + status: 'M' | 'A' | 'D' | 'R'; + binary?: boolean; +}; + +export type FilePatch = { + patch: string; + truncated: boolean; + total_bytes: number; + total_lines: number; + binary?: boolean; +}; diff --git a/OPUS-tauri-app/src/types/errors.ts b/OPUS-tauri-app/src/types/errors.ts new file mode 100644 index 00000000..b76e4987 --- /dev/null +++ b/OPUS-tauri-app/src/types/errors.ts @@ -0,0 +1,10 @@ +export type ErrorCategory = 'auth' | 'network' | 'git' | 'config' | 'runtime' | 'unknown'; + +export type ErrorEnvelope = { + category: ErrorCategory; + operation: string; + message: string; + details?: string; + retryable: boolean; + suggested_actions: string[]; +}; diff --git a/OPUS-tauri-app/src/types/github.ts b/OPUS-tauri-app/src/types/github.ts new file mode 100644 index 00000000..b0462a8f --- /dev/null +++ b/OPUS-tauri-app/src/types/github.ts @@ -0,0 +1,16 @@ +export type GitHubRepo = { + full_name: string; + description: string | null; + private: boolean; +}; + +export type GitHubAuthStatus = { + available: boolean; + authenticated: boolean; + message: string; +}; + +export type GitHubAccount = { + login: string; + active: boolean; +}; diff --git a/OPUS-tauri-app/src/types/index.ts b/OPUS-tauri-app/src/types/index.ts new file mode 100644 index 00000000..8faf3dc9 --- /dev/null +++ b/OPUS-tauri-app/src/types/index.ts @@ -0,0 +1,11 @@ +export * from './errors'; +export * from './context'; +export * from './workset'; +export * from './workspace'; +export * from './diff'; +export * from './pty'; +export * from './jobs'; +export * from './layout'; +export * from './diagnostics'; +export * from './github'; +export * from './repo'; diff --git a/OPUS-tauri-app/src/types/jobs.ts b/OPUS-tauri-app/src/types/jobs.ts new file mode 100644 index 00000000..bc240c6b --- /dev/null +++ b/OPUS-tauri-app/src/types/jobs.ts @@ -0,0 +1,15 @@ +import type { ErrorEnvelope } from './errors'; + +export type MigrationJobRef = { job_id: string }; + +export type MigrationProgress = { + job_id: string; + state: 'queued' | 'running' | 'done' | 'failed' | 'canceled'; + workspaces: WorkspaceMigrationStatus[]; +}; + +export type WorkspaceMigrationStatus = { + workspace_name: string; + state: 'pending' | 'running' | 'success' | 'failed'; + error?: ErrorEnvelope; +}; diff --git a/OPUS-tauri-app/src/types/layout.ts b/OPUS-tauri-app/src/types/layout.ts new file mode 100644 index 00000000..46d5738f --- /dev/null +++ b/OPUS-tauri-app/src/types/layout.ts @@ -0,0 +1,35 @@ +export type TerminalLayout = { + version: number; + root: LayoutNode; + focused_pane_id?: string; +}; + +export type LayoutNode = PaneNode | SplitNode; + +export type PaneNode = { + kind: 'pane'; + id: string; + tabs: LayoutTab[]; + active_tab_id?: string; +}; + +export type SplitNode = { + kind: 'split'; + id: string; + direction: 'row' | 'column'; + ratio: number; + first: LayoutNode; + second: LayoutNode; +}; + +export type LayoutTab = { + id: string; + terminal_id: string; + title: string; + kind: 'agent' | 'terminal' | 'diff'; + diff_repo?: string; + diff_repo_path?: string; + diff_file_path?: string; + diff_prev_path?: string; + diff_status?: string; +}; diff --git a/OPUS-tauri-app/src/types/pty.ts b/OPUS-tauri-app/src/types/pty.ts new file mode 100644 index 00000000..3ab6aff4 --- /dev/null +++ b/OPUS-tauri-app/src/types/pty.ts @@ -0,0 +1,15 @@ +export type PtyCreateResult = { terminal_id: string }; + +export type BootstrapPayload = { + workspace_name: string; + terminal_id: string; + snapshot?: string; + backlog?: string; + backlog_truncated?: boolean; + next_offset?: number; + alt_screen?: boolean; + mouse?: boolean; + mouse_sgr?: boolean; + safe_to_replay?: boolean; + initial_credit?: number; +}; diff --git a/OPUS-tauri-app/src/types/repo.ts b/OPUS-tauri-app/src/types/repo.ts new file mode 100644 index 00000000..d049c746 --- /dev/null +++ b/OPUS-tauri-app/src/types/repo.ts @@ -0,0 +1,8 @@ +export type RepoInstance = { + name: string; + worktree_path: string; + repo_dir: string; + missing: boolean; + default_branch?: string; + default_remote?: string; +}; diff --git a/OPUS-tauri-app/src/types/workset.ts b/OPUS-tauri-app/src/types/workset.ts new file mode 100644 index 00000000..675516c0 --- /dev/null +++ b/OPUS-tauri-app/src/types/workset.ts @@ -0,0 +1,15 @@ +export type WorksetProfile = { + id: string; + name: string; + repos: string[]; + workspace_ids: string[]; + defaults?: WorksetDefaults; + created_at: string; + updated_at: string; +}; + +export type WorksetDefaults = { + base_branch?: string; + default_remote?: string; + workspace_root?: string; +}; diff --git a/OPUS-tauri-app/src/types/workspace.ts b/OPUS-tauri-app/src/types/workspace.ts new file mode 100644 index 00000000..79dc6354 --- /dev/null +++ b/OPUS-tauri-app/src/types/workspace.ts @@ -0,0 +1,29 @@ +import type { ErrorEnvelope } from './errors'; + +export type WorkspaceSummary = { + name: string; + path: string; + created_at?: string; + last_used?: string; + archived: boolean; + pinned: boolean; + pin_order: number; + expanded: boolean; +}; + +export type WorkspaceCreateJobRef = { job_id: string }; + +export type WorkspaceCreateProgress = { + job_id: string; + state: 'queued' | 'running' | 'succeeded' | 'partial' | 'failed'; + repos: RepoProvisionStatus[]; + workspace_name?: string; + workspace_path?: string; +}; + +export type RepoProvisionStatus = { + name: string; + state: 'pending' | 'running' | 'succeeded' | 'failed'; + step?: 'preflight' | 'fetch/clone' | 'worktree/checkout' | 'verify'; + error?: ErrorEnvelope; +}; diff --git a/OPUS-tauri-app/src/vite-env.d.ts b/OPUS-tauri-app/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/OPUS-tauri-app/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/OPUS-tauri-app/tsconfig.json b/OPUS-tauri-app/tsconfig.json new file mode 100644 index 00000000..5b7e0848 --- /dev/null +++ b/OPUS-tauri-app/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2021", + "useDefineForClassFields": true, + "lib": ["ES2021", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["src"] +} diff --git a/OPUS-tauri-app/vite.config.ts b/OPUS-tauri-app/vite.config.ts new file mode 100644 index 00000000..86c99cd3 --- /dev/null +++ b/OPUS-tauri-app/vite.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import path from 'path'; + +const host = process.env.TAURI_DEV_HOST; + +export default defineConfig({ + plugins: [react()], + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + }, + }, + clearScreen: false, + server: { + port: 1420, + strictPort: true, + host: host || false, + hmr: host ? { protocol: 'ws', host, port: 1421 } : undefined, + watch: { ignored: ['**/src-tauri/**'] }, + }, +}); diff --git a/docs/tauri-product-spec.md b/docs/tauri-product-spec.md new file mode 100644 index 00000000..abfc7093 --- /dev/null +++ b/docs/tauri-product-spec.md @@ -0,0 +1,954 @@ +# Workset Desktop (Tauri) Product Specification (Working) + +This is a working product specification. We are drafting it one section at a time. + +--- + +## Section 1: Product Mental Model (What This App Is) + +### The problem we’re solving +Workset is a desktop app for doing one piece of work across many repositories without losing track of what belongs together. The core pain is that a “feature” or “thread” of work almost never lives in one repo, but git and most UIs force you to think repo-by-repo. + +This product treats a multi-repo feature as a first-class thing you can create, switch, and review as a single unit. + +### The three key concepts (and only these are “real”) + +#### 1) Workset (app concept, not a CLI capability) +A **Workset** is a saved configuration: “these are the repos that belong together for this product/project.” + +- It is durable and user-named. +- It contains a curated list of repos (and optional defaults). +- It is not a work thread by itself. +- Creating a Workset is an app responsibility (UI + persistence). The CLI does not “create worksets”. + +You can think of Workset as: a profile / recipe / config bundle. + +#### 2) Workspace (CLI-backed concept: the work thread) +A **Workspace** is a named work thread inside a Workset: “feature/search-ranking”, “bugfix/login-timeout”, etc. + +- A Workspace is what you create when you want to start a new multi-repo thread. +- A Workspace is always scoped to exactly one Workset (because it uses that Workset’s repo set). +- A Workspace has one name, and that name is used to coordinate work across repos. + +You can think of Workspace as: a feature branch identity applied to the whole repo set. + +#### 3) Branch (git concept, per repo) +A **branch** is still a per-repository git branch. The product goal is to make the user not have to manage these manually per repo. + +### The key semantic: what “Create Workspace” actually does +When the user creates a Workspace named `X` under the active Workset, the system provisions the Workset’s repositories so that: + +- Each repo ends up on a branch named `X` (or whatever exact naming/mapping the CLI defines). +- The user now has a coherent cross-repo “thread” they can switch to later by selecting Workspace `X`. +- The “unit of switching” in the UI is Workspace, not repository. + +If one repo fails to provision, the Workspace creation is not “done”; it is a partial failure state with a repair path. + +### Global selection rules (the invariants) +- There is exactly one active Workset at a time (selected in the top chrome). +- Everything the user sees is scoped to that Workset (repos, workspaces, diffs, agents). +- There is exactly one active Workspace at a time within that Workset. +- Workspace selection is not a second top-chrome selector; it is controlled within the Workset-scoped UI. + +### What the UI must never do +- Show Workspaces from multiple Worksets at the same time. +- Treat “branch” and “workspace” as separate user-facing primary concepts. Branches are an implementation detail unless the user explicitly drills into repo details. +- Implicitly change the active Workset as a side effect of creating/selecting a Workspace. + +### Role of the CLI (what the app delegates) +- The CLI defines and performs the actual multi-repo git operations for Workspace lifecycle (create/switch/provision/status). +- The app wraps those operations with: + - UX (progress, per-repo status, retries) + - persistence of Workset config + - safe error reporting and recovery + - higher-level views like “what changed in this Workspace across repos” + +--- + +## Section 2 (Revised): Information Architecture (Native Agent Tabs + No Review Page) + +This section removes the “Review” page and replaces it with an in-Space diff + diff-as-tab model, and clarifies that Spaces main content is primarily the terminal/agent surface. + +### 2.1 Global chrome (top bar) +Top chrome is reserved for global context only. + +Top chrome contains: +- **Workset selector** (the only persistent selector) + - pick/switch Workset + - “Create Workset…” (app-level) + - “Manage Worksets…” (rename/delete/export/import) +- Lightweight global items (optional): + - search/command palette + - app settings shortcut + - connection/health indicator + +Top chrome explicitly does **not** contain: +- a Workspace selector +- repo selection controls +- branch controls +- diff controls + +### 2.2 Primary navigation (left sidebar) +Primary nav is stable and Workset-scoped. + +Primary nav items: +1. **Command Center** +2. **Spaces** +3. **Settings** + +Removed: +- **Review** (no separate page) + +Rationale: review/diff is an always-available right panel capability of the active Space, and detailed diffs become tabs in the main terminal area. + +### 2.3 Page layout model +All pages share: + +`[Primary Sidebar] [Secondary Sidebar] [Main Content] [Right Panel]` + +For **Spaces** specifically: +- **Main Content** = the tabbed terminal/agent environment (like iTerm) +- **Right Panel** = lightweight diff summary + file list (not a full review app) + +### 2.4 Command Center (Workset config + health) +Command Center is for Workset configuration and diagnostics, not daily work. + +Secondary sidebar: +- Overview +- Repositories (add/remove repos in this Workset config) +- Diagnostics (CLI/env/auth checks, logs, debug bundle) + +Main content: +- Workset overview cards (repo count, workspace count, warnings) +- Primary CTAs: “Add repositories”, “Go to Spaces”, “Create workspace” + +Right panel (optional): +- Recent operations / failures / retry shortcuts + +### 2.5 Spaces (the daily driver) +Spaces is where you create/select the active Workspace and then live inside it (agents + terminals + diffs). + +#### 2.5.1 Secondary Sidebar (Spaces): Workspace list + lifecycle +- Header: “Workspaces” +- Action: “New Workspace” +- List: Workspaces (scoped to active Workset) + - each shows: name, status (Ready / Partial / Error), last used + - selecting sets active workspace + +This is the canonical place to switch work threads. + +#### 2.5.2 Main Content (Spaces): Tabbed “iTerm-like” surface +Main content is a tab strip plus active tab content. + +Tab types (minimum): +- **Agent tab**: a native coding agent session attached to this Workspace context +- **Terminal tab**: plain shell terminal (tests/builds/manual git, etc.) +- **Diff tab**: full diff viewer for a selected file (opened from right panel) + +Tab strip behavior: +- Create tab buttons: “New Agent”, “New Terminal” +- Tabs are per-workspace (when you switch workspace, you see that workspace’s tabs) +- Tabs can be renamed (“agent-1”, “tests”, “diff: server/api.go”, etc.) +- Tabs can be closed; closing should stop/cleanup that underlying session (with confirm if running) + +#### 2.5.3 Right Panel (Spaces): Lightweight diff summary +Right panel is always visible while in Spaces (unless user collapses it). + +It shows a compact, scannable summary: +- Grouped by repo: + - repo name + - changed files under it + - each file shows `+adds/-deletes` (green/red) and status (M/A/D) +- Optional top summary: total files changed, total `+/-` + +Interaction: +- Clicking a file opens a Diff tab in main content (does not navigate away) + +Constraints: +- This right panel is not a PR tool. +- It is meant to keep you oriented (“what changed in this workspace?”) and to open diffs quickly as tabs. + +### 2.6 Empty states + failure states (updated) +1) No Worksets: +- onboarding: create first Workset (top chrome flow) + +2) Workset has no repos: +- Command Center pushes “Add repositories” + +3) Workset has repos but no workspaces: +- Spaces shows “Create your first workspace” CTA + +4) Workspace exists but provisioning is partial: +- Workspace list marks it “Needs repair” +- Right panel shows only available diff data (or a clear “diff unavailable until provisioned” message) +- Main content shows repair CTA and per-repo failure details (in a “Workspace status” tab or a panel) + +--- + +## Section 3: Runtime Model (Tabs, Processes, and State Ownership) + +This section is grounded in what the existing Wails app already proves works well: a dedicated PTY daemon (`workset-sessiond`), per-workspace persisted terminal layout (tabs + splits), and a background diff watcher that keeps a repo-grouped `+/-` file list fresh in the right panel. + +### 3.1 The core runtime principle +In **Spaces**, the main content is a terminal surface that can host: +- interactive agent sessions (Claude Code running in a terminal) +- plain terminals (tests/builds/manual commands) +- full file diffs (opened as tabs) + +Runtime is “many terminal-like sessions + lightweight diff data,” all scoped to the active Workspace. + +### 3.2 Reuse the proven PTY architecture (sessiond) +Do not implement PTYs ad-hoc in the UI layer. The Wails app uses a daemon (`workset-sessiond`) that provides: +- attach/stream semantics (session stays alive even if UI detaches) +- backlog + snapshot (so the UI can recover after refresh/restart) +- backpressure/credit accounting (UI ACKs bytes to prevent runaway memory) +- terminal mode signals (alt-screen, mouse tracking) +- optional Kitty graphics event stream + +Spec requirements (Tauri): +- The Tauri backend must manage terminal/agent sessions via `workset-sessiond` (or an equivalent daemon with the same features). +- A “Terminal tab” and an “Agent tab” are the same underlying thing: a PTY session with a different startup command. + +### 3.3 What a “tab” is (concrete definition) +A tab is a view over a single underlying runtime session or a diff artifact. + +Tab types: +1. **Agent tab** + - Backed by a sessiond PTY + - Starts by launching the agent command (Claude Code) inside the workspace root +2. **Terminal tab** + - Backed by a sessiond PTY + - Starts a shell (or configured command) inside the workspace root +3. **Diff tab** + - Not a PTY + - Displays a patch for one file (or optionally a repo-level patch) + - Opened from the right-panel diff navigator + +Non-negotiable UX behavior: +- Tabs are per-workspace. Switching workspace swaps the whole tab set. +- Closing a PTY-backed tab stops that underlying session (with confirmation if needed). +- Diff tabs are disposable and should restore quickly from cached patch data (or refetch). + +### 3.4 Terminal layout model (tabs + splits) and persistence +The Wails app uses a layout tree with: +- panes containing tabs +- split nodes (row/column) with ratios +- active tab per pane +- focused pane + +Spec requirements (Tauri): +- Persist a layout per workspace context (keyed by workspace path, not just a name). +- On app launch: + - load the saved layouts + - opportunistically restore PTY sessions referenced by the layout (start/attach) + - show tabs as “reconnected” vs “fresh” if that concept exists + +### 3.5 Workspace root and repo worktrees (no guessing) +The Wails app resolves: +- workspace root path from the underlying service (workspace list includes `Path`) +- repo worktree paths as `workspacePath + repo.RepoDir` (with fallback to a local path) + +Spec requirements (Tauri): +- The backend must obtain the workspace root path and repo worktree paths from the same source of truth the CLI uses (service/CLI output). +- Terminals and agents must start with `cwd = workspace root path`. +- Repo diffs must be computed against the repo worktree path. + +### 3.6 Right-panel diffs: simple, always-on, event-updated +The right panel is a compact diff navigator: +- grouped by repo +- list of files with `+added/-removed` +- clicking a file opens a Diff tab + +Spec requirements (Tauri): +- Maintain a background “diff watcher” per (workspace, repo) while that workspace is active. +- The watcher emits updates that drive the right panel (so it’s “live” without manual refresh). +- The right panel is not a PR tool; it’s navigation and awareness. + +### 3.7 Diff tabs: file-level patch as the primitive +The existing backend provides: +- repo diff summary (files + totals) +- file diff patch (tracked + untracked) + +Spec requirements (Tauri): +- Clicking a file opens a Diff tab for that exact file entry (path + status + prevPath if rename). +- The Diff tab fetches a patch using the same approach: + - tracked: `git diff` staged + unstaged for that file + - untracked: `--no-index` diff against empty baseline +- Optional: “next/prev changed file” navigation driven by the current right-panel list. + +### 3.8 Auth/runtime environment is a first-class dependency +Spec requirements (Tauri): +- Provide an explicit “Reload login environment” capability. +- All spawned PTY sessions must inherit: + - PATH resolution consistent with login shell + - SSH agent socket (for git SSH) + - `gh` auth context (if used) + - git credential helper behavior + +### 3.9 Failure handling: make it boring and recoverable +Minimum recovery requirements: +- If sessiond is down: show clear status + “restart sessiond”; terminals show “disconnected” not “loading forever”. +- If a repo is missing/unavailable: right panel shows “diff unavailable” with reason. +- If workspace provisioning is partial: Spaces shows “needs repair” and per-repo remediation. + +--- + +## Section 4: Backend Contract + Persistence (Tauri Commands, Events, and Local Storage) + +This section defines the interface between the Tauri frontend and backend, plus what is persisted locally vs derived from Workset (CLI/service) state. The goal is to make Sections 1–3 implementable without ambiguity. + +### 4.1 Design goals for the contract +- Deterministic UI state transitions (no infinite loading). +- Long-running operations report progress (workspace create, repo membership changes). +- Streaming IO for PTY sessions (agent/terminal tabs) with backpressure and replay. +- Background diff updates for the right panel (watcher/event model). +- Structured errors with remediation hints. + +The frontend must not parse raw CLI output strings; it calls typed backend commands and consumes typed payloads/events. + +### 4.2 Sources of truth +There are four “engines” in the product: + +1) App-local Workset profile store (app-owned) +- Workset profiles (name + repo sources + defaults). +- Active selection state. +- UI layout/tab persistence keyed by workspace path. + +2) Workset workspace state (CLI-owned) +- A workspace is a directory with `/workset.yaml` and `/.workset/`. +- Repo membership in a workspace is modified by `workset repo add/rm`. +- Worktrees live under `/` by default. + +3) `workset-sessiond` (PTY daemon, runtime-owned) +- Terminal/agent sessions: attach/stream/bootstrap/ack, snapshot/backlog, modes. + +4) Derived git data (computed against repo worktrees) +- Diff summaries and file patches are computed against repo worktree paths for the active workspace. + +### 4.3 Local persistence (what the app stores) +The app persists: + +1) Workset profiles (app concept) +- `id` (uuid) +- `name` +- `repos[]` (repo sources as entered, plus display metadata) +- optional defaults (remote/base branch, workspace root, etc.) +- timestamps + +2) UI context +- active workset id +- last active workspace per workset +- panel collapsed state, etc. + +3) Workspace-scoped layout state (keyed by workspace path) +- split/pane layout tree + tab list + active tab id + focused pane id +- tab titles + +4) Workset membership migration history (recommended) +- records of “repo added/removed” events and per-workspace results (success/failure + error envelope) + +### 4.4 Non-negotiable behavior: Workset membership converges all workspaces +You decided: +- Adding a repo to a Workset profile applies to all existing workspaces under that workset immediately. +- Removing a repo from a Workset profile applies to all existing workspaces under that workset immediately. + +This means repo membership changes are not passive config edits; they start a long-running “migration job”: + +- Add repo: run `workset repo add -w ...` for each workspace. +- Remove repo: run `workset repo rm -w ...` for each workspace. + +There is no stable “Not provisioned” state. Instead, per workspace: +- `updating` (pending/running) +- `up_to_date` (succeeded) +- `update_failed` (failed; repairable with retry) + +### 4.5 Tauri backend command surface (proposed) +The contract is grouped by capability. Command names are placeholders; the important part is payload shape and event semantics. + +#### Group 1: Workset profiles (app-owned) +- `worksets.list() -> WorksetProfile[]` +- `worksets.create({ name, defaults? }) -> WorksetProfile` +- `worksets.update({ id, name?, defaults? }) -> WorksetProfile` +- `worksets.delete({ id }) -> void` + +Repo membership changes: +- `worksets.repos.add({ workset_id, source, display_name? }) -> { workset: WorksetProfile, job: MigrationJobRef }` +- `worksets.repos.remove({ workset_id, repo_id, remove_options }) -> { workset: WorksetProfile, job: MigrationJobRef }` + +`remove_options` must include: +- `delete_worktrees: boolean` (default true) +- `delete_local: boolean` (default false; only if the repo is managed) + +#### Group 2: Active context +- `context.get() -> { active_workset_id?: string, active_workspace?: string }` +- `context.set_active_workset({ workset_id }) -> void` +- `context.set_active_workspace({ workspace_name }) -> void` + +#### Group 3: Workspaces (CLI-backed) +- `workspaces.list({ workset_id }) -> WorkspaceSummary[]` +- `workspaces.create({ workset_id, name, path? }) -> WorkspaceCreateJobRef` +- `workspaces.create.status({ job_id }) -> WorkspaceCreateProgress` +- `workspaces.delete({ workset_id, workspace_name, delete?: boolean }) -> void` (optional) + +Workspace creation should internally use `workset new` and then converge workspace repos to the workset profile. + +#### Group 4: Migration jobs (repo membership apply-to-all) +- `migration.status({ job_id }) -> MigrationProgress` +- `migration.cancel({ job_id }) -> void` +- `migration.retry_failed({ job_id }) -> MigrationJobRef` +- `migration.retry_workspace({ job_id, workspace_name }) -> MigrationJobRef` + +Migration progress must include: +- job state: `queued|running|done|failed|canceled` +- per-workspace state: `pending|running|success|failed` + error envelope + +#### Group 5: Workspace repo resolution (CLI/service-backed) +- `workspace.repos.list({ workspace_name }) -> RepoInstance[]` + +RepoInstance must include: +- repo identity (name or stable id) +- `worktree_path` +- `repo_dir` +- missing/statusKnown flags +- default branch/remote if available + +#### Group 6: Diff summary + file patch +- `diff.summary({ workspace_name, repo }) -> DiffSummary` +- `diff.file_patch({ workspace_name, repo, path, prev_path?, status }) -> FilePatch` + +#### Group 7: Diff watcher (background) +- `diff.watch.start({ workspace_name, repo }) -> void` +- `diff.watch.stop({ workspace_name, repo }) -> void` + +Events: +- `diff:summary` `{ workspace_name, repo, summary }` +- `diff:status` `{ workspace_name, repo, statusKnown, missing, dirty }` + +#### Group 8: PTY sessions (sessiond-backed) +- `pty.create({ workspace_name }) -> { terminal_id }` +- `pty.start({ workspace_name, terminal_id, kind, command? }) -> void` where `kind` is `terminal|agent` +- `pty.write({ workspace_name, terminal_id, data }) -> void` +- `pty.resize({ workspace_name, terminal_id, cols, rows }) -> void` +- `pty.ack({ workspace_name, terminal_id, bytes }) -> void` +- `pty.bootstrap({ workspace_name, terminal_id }) -> BootstrapPayload` +- `pty.stop({ workspace_name, terminal_id }) -> void` + +Events: +- `pty:data` +- `pty:bootstrap` +- `pty:bootstrap_done` +- `pty:modes` +- `pty:lifecycle` +- `pty:kitty` (optional) + +#### Group 9: Diagnostics +- `diagnostics.env_snapshot() -> EnvSnapshot` +- `diagnostics.reload_login_env() -> EnvSnapshot` +- `diagnostics.sessiond.status() -> SessiondStatus` +- `diagnostics.sessiond.restart({ reason }) -> SessiondStatus` + +### 4.6 Error envelope (required) +Every failed operation must include: +- `category`: `auth | network | git | config | runtime | unknown` +- `operation` +- `message` +- `details` +- `retryable` +- `suggested_actions[]` (optional) + +--- + +## Section 5: Workspace Provisioning UX + Progress Model (Create, Partial Failure, Repair) + +This section defines how “Create Workspace” works in Spaces, and how we handle partial failures. It also defines the repo membership migration model (apply-to-all) for add/remove of repos in a Workset profile. + +### 5.1 User intent +When a user creates a workspace named `X` under the active workset, they expect: +- a coherent multi-repo thread named `X` +- all repos in the workset profile are present in that workspace directory and usable +- they can immediately open agent/terminal tabs and start work + +### 5.2 Where it lives +Spaces is the canonical home for: +- create workspace +- list/select workspace +- see provisioning/migration status +- repair failures (retry) + +### 5.3 Create Workspace modal +Inputs: +- workspace name (required) +- optional base branch override (only if supported) + +Preview: +- list of repos in the workset profile that will be included + +Primary action: +- Create + +### 5.4 Workspace creation is a job +Workspace creation must be non-blocking and progress-reporting. + +Job states: +- `queued -> running -> succeeded | partial | failed` + +Per-repo states: +- `pending | running | succeeded | failed` + +Per-repo step labels (UI-facing): +- `preflight` +- `fetch/clone` +- `worktree/checkout` +- `verify` + +### 5.5 When the new workspace appears +Immediately after job start: +- it appears in the workspace list as `Provisioning` +- it can be selected (UI shows provisioning state) + +### 5.6 Tabs availability during provisioning +Default rule: +- allow agent/terminal tabs once the workspace path exists and at least one repo worktree is available +- otherwise show disabled state with a clear reason + +### 5.7 Completion semantics +Outcomes: +- `Ready`: all repos succeeded +- `Needs repair`: at least one repo failed (workspace is partial) +- `Failed`: provisioning did not establish a usable workspace context + +### 5.8 Repair model +Repair is a first-class action: +- Retry failed repos (bulk) +- Retry a specific repo +- View details (error envelope + logs) +- Open diagnostics (auth/runtime) + +Repair must not require deleting/recreating a workspace. + +### 5.9 Workset repo membership changes are immediate migrations (apply-to-all) +When a repo is added/removed from the active workset profile, the app must converge all existing workspaces under that workset. + +Add repo: +- start a migration job that runs `workset repo add -w ...` for each workspace + +Remove repo: +- start a migration job that runs `workset repo rm -w [--delete-worktrees] [--delete-local]` for each workspace +- UI must require a confirmation and expose the destructive options: + - delete worktrees (default true) + - delete local clones (default false; only for managed repos) + +Per-workspace migration states (no stable “Not provisioned”): +- `updating` (pending/running) +- `up_to_date` (succeeded) +- `update_failed` (failed; retryable per workspace) + +### 5.10 Error categories and remediation +Errors must map cleanly to actions: +- `auth`: show steps (ssh agent, gh auth, credential helper) +- `network`: retry + offline hints +- `git`: conflicts, dirty state, worktree conflicts +- `config`: invalid repo source, repo missing +- `runtime`: CLI/sessiond unavailable, PATH issues + +### 5.11 Success UX +On success: +- auto-select the new workspace (recommended) +- open default tabs (1 agent, 1 terminal) +- start diff watchers for all repos so the right panel populates quickly + +--- + +## Section 6: Diff UX + Diff Tab Rendering (Right Panel + File Diffs as Tabs) + +This section defines the diff experience inside Spaces: +- the right panel is a compact “diff navigator” +- clicking a file opens a full diff as a tab in the main terminal area + +There is no separate Review page. + +### 6.1 Scope: what we are diffing (v1) +In v1, diffs represent local workspace changes in each repo worktree: +- unstaged changes +- staged changes +- untracked files (rendered via no-index diff against an empty baseline) + +We are not building PR creation/review tooling in this diff surface. + +### 6.2 Right panel: information density and hierarchy +The right panel is always visible in Spaces (collapsible). + +Structure: +- Panel header: `Diff` + totals (files changed, total `+/-`) +- Repo groups (one per repo in the active workspace): + - repo name + - repo total `+/-` + - optional repo status badges: `missing`, `dirty`, `status unknown` + - file list (changed files only) + +File row fields: +- path (display relative to repo root) +- status: `M/A/D/R` (icon or short label) +- `+added/-removed` (green/red) + +### 6.3 Right panel: interactions +Required behaviors: +- Clicking a repo header expands/collapses its file list. +- Clicking a file row opens a Diff tab for that file (see 6.5). +- If a Diff tab for that file is already open, focus it instead of opening a duplicate. + +Optional behaviors (nice to have): +- Search filter in the diff panel (substring match on path). +- Toggle: “Only changed repos” (default on). + +### 6.4 Right panel: ordering rules (v1 defaults) +Repo group order: +- repos with changes first +- then alphabetical by display name + +File order within a repo: +- directories first, then files (path sort) OR plain path sort +- stable ordering is more important than clever ordering + +### 6.5 Diff tabs: what opens when a file is clicked +A Diff tab is created with: +- repo identity +- file identity: `path`, `prev_path` (if rename), `status` +- a snapshot of the file’s `+/-` stats at open time + +Tab title: +- default: `diff: ` (truncate middle if long) +- tab subtitle/tooltip shows `` + +The tab content shows: +- repo + path header with status badge +- `+/-` summary +- unified diff view (v1) + +### 6.6 Diff rendering component (frontend) +Use a dedicated diff renderer component that can: +- render unified diff with syntax highlighting +- handle renames (show old/new path) +- handle deletes (no new content) +- handle binary (no textual diff) +- display “truncated” state when backend truncates patch + +Implementation note: +- The existing Wails app already uses `@pierre/diffs` for rendering; a Tauri rewrite can reuse the same renderer strategy. + +### 6.7 Patch source of truth (backend) +The backend must provide two primitives per (workspace, repo): + +1) Summary: +- changed file list + totals (for right panel) + +2) File patch: +- patch for a single file (for diff tabs) + +Rules: +- Summary is produced by a background watcher while workspace is active. +- File patches are fetched on-demand when a diff tab is opened (and on refresh). + +### 6.8 Keeping an open diff tab consistent with watcher updates +When watcher updates arrive for a repo: +- update the right panel immediately +- do not forcibly re-render any open Diff tab content (avoid scroll jumps) + +If the currently open file’s stats changed since the tab opened: +- show a small “Out of date” indicator in the tab header +- provide a `Refresh diff` action to refetch and rerender the patch + +### 6.9 Large diffs and truncation policy +Backends often need to truncate large patches. The UI must make this obvious and recoverable. + +If the backend reports `truncated: true`: +- show “Diff truncated” warning +- provide actions: + - `Open file in editor` + - `Open repo in Finder` + - optional: `Copy patch` + +The right panel should also cap file lists to a reasonable limit: +- show first N files and display “+ N more” (to avoid UI stalls). + +### 6.10 Binary files +If the backend reports `binary: true`: +- do not attempt to render a textual diff +- show a “Binary file” state and provide actions: + - `Open file` + - `Reveal in Finder` + +### 6.11 Missing repos and unknown status +If a repo worktree path is missing/unavailable: +- right panel shows the repo with a `missing` badge +- file list is empty with a clear message (“Repo path unavailable in this workspace”) +- clicking the repo shows actions: `Open diagnostics`, `Retry migration/provisioning` (if applicable) + +### 6.12 Staged vs unstaged (v1 presentation) +In v1, file patches may combine staged + unstaged into a single unified patch (simpler). + +If we later want more detail: +- add a toggle in Diff tab: `All | Staged | Unstaged` +- but keep the right panel summary aggregated (still one line per file). + +--- + +## Section 7: Settings + Diagnostics (Make Runtime + Auth Boring) + +This section exists because the app’s “real work” depends on the user’s local environment being correct: +- git authentication (SSH keys, credential helpers, `gh` auth) +- CLI availability and versioning +- `workset-sessiond` health for PTYs +- file system access for workspaces, repo worktrees, and diff watchers + +The UI must make these dependencies visible and fixable without guesswork. + +### 7.1 Settings scope and IA +Settings is a first-class page (primary nav), but it should be intentionally small. + +Settings is split into two categories: +1) **App Settings** (global) +2) **Workset Settings** (per workset profile, app-owned config) + +Diagnostics is accessible in two places: +- Settings (global diagnostics and tools) +- Command Center → Diagnostics (workset-scoped diagnostics and quick fixes) + +### 7.2 App Settings (global) +Minimum global settings: +- Default shell / command for “New Terminal” tabs +- Default agent command for “New Agent” tabs (e.g. `claude`) +- Workspace root location (where workspace directories are created, if the app chooses the path) +- Diff defaults: + - max patch bytes (soft cap, UI-friendly) + - file list cap per repo in diff navigator +- Telemetry (if any) with explicit opt-in/out + +Important: These settings should not contain “workset repo list” or workspace lifecycle. Those belong to Workset config and Spaces. + +### 7.3 Workset Settings (per-workset profile) +Minimum per-workset settings: +- Workset name (rename) +- Repo list (add/remove; also available via Command Center) +- Defaults that affect workspace creation/provisioning: + - optional “base branch” preference (if supported by CLI semantics) + - optional “default remote” preference + +Hard rule: Workset creation/editing is app-owned and must not pretend to be a CLI feature. + +### 7.4 Diagnostics: what we must show (always) +Diagnostics must have a single “Status” view that answers: +- Can the backend run `workset` successfully? +- Can the backend reach `workset-sessiond` and create/attach PTYs? +- Does the process environment look like a login environment (PATH, HOME, SHELL)? +- Can git authenticate to a private GitHub repo using the user’s normal setup? + +Displayed as: +- Green/Yellow/Red rows with a one-line explanation and “Fix” action(s). + +### 7.5 Diagnostics: environment snapshot + reload +The app must support: +- `View environment snapshot` +- `Reload login environment` + +This is not a “nice-to-have”: it is the primary escape hatch when the app is launched in an environment that doesn’t match the user’s shell (common on macOS). + +Environment snapshot should show (read-only): +- `PATH` +- `SHELL` +- `HOME` +- `SSH_AUTH_SOCK` (presence and value) +- `GIT_SSH_COMMAND` (if set) +- `GIT_ASKPASS` (if set) +- `GH_CONFIG_DIR` (if set) and `gh auth status` summary (redacted) + +Reload should: +- rehydrate env from the login shell (backend responsibility) +- restart any newly created PTY sessions with the updated env +- not silently mutate running tabs; show a banner: “New sessions use updated environment.” + +### 7.6 Git/GitHub auth checks (opinionated, actionable) +Diagnostics should include explicit checks and fixes for: +- SSH: + - key present (do not display private key paths) + - agent socket present (`SSH_AUTH_SOCK`) + - quick test: `ssh -T git@github.com` (run as an explicit diagnostic action, not on every launch) +- `gh`: + - `gh auth status` (for github.com) + - `gh` present in PATH +- Git credential helper: + - show configured helper (`git config --global credential.helper` and/or system helper on macOS) + +When operations fail with auth errors, surface remediation suggestions that match the error category: +- “Repo URL uses HTTPS; switch to SSH URL” (if the repo source is HTTPS and user expects SSH) +- “Reload login environment” (if PATH/SSH_AUTH_SOCK mismatch) +- “Open GitHub auth” (if gh is missing auth) + +### 7.7 workset CLI health + versioning +Diagnostics should show: +- `workset` binary path and version +- ability to run `workset ls` (or equivalent non-destructive command) +- ability to run workspace-scoped commands against the selected workspace + +If the CLI is missing or outdated: +- show clear action: “Install/Update Workset CLI” with a link/instructions (do not auto-install) + +### 7.8 sessiond health + recovery +Because PTY tabs depend on `workset-sessiond`, diagnostics must provide: +- status: running/not running, version (if available), socket path (if applicable) +- `Restart sessiond` action +- last error and last restart time (if tracked) + +If sessiond is down: +- terminal/agent tabs show a disconnected state with a “Reconnect” and “Restart sessiond” CTA +- never show “loading forever” + +### 7.9 Workspace-scoped diagnostics (in Command Center) +When a specific workset/workspace is selected, Command Center diagnostics should add: +- workspace path exists + is writable +- repo worktree paths exist for each repo +- migration status (if a repo add/rm migration is running or failed) +- diff watcher status per repo + +Provide “Fix” actions: +- Retry failed migration for a workspace +- Restart diff watchers +- Reveal workspace folder + +### 7.10 Debug bundle (supportability) +Add “Export debug bundle” that produces a zip containing: +- redacted diagnostics snapshot (no tokens, no private keys) +- recent backend logs +- recent sessiond logs (if accessible) +- migration job history (app-local) and last error envelopes +- UI layout state (for reproduction) + +This bundle is for humans and future agents to debug issues quickly. + +--- + +## Section 8: Scope Boundaries + Phased Delivery Plan (Build the Core First) + +This section prevents scope creep and defines an implementation sequence that de-risks the two hardest parts early: +- durable terminals/agents (PTY + sessiond) +- workspace/repo provisioning and migrations (CLI-backed, long-running jobs) + +### 8.1 Non-negotiable outcomes (what “v1 works” means) +The product is “real” when a user can: +1) Create a Workset (app-owned config) and add a few repos. +2) Create a Workspace (CLI-backed) for that Workset, see progress, recover from partial failure. +3) Open multiple terminal/agent tabs within that Workspace and have them survive detach/reattach. +4) See a per-repo diff navigator and open file diffs as tabs. +5) Add/remove repos on the Workset and have that apply to all existing Workspaces via migration jobs. + +### 8.2 Explicit non-goals (out of scope for v1) +To avoid turning this into “GitHub Desktop + an IDE + a PR tool”, v1 does not include: +- PR creation, PR review, inline comments, approvals, or GitHub API integration. +- “Branch management UI” beyond Workspace semantics; user is not managing per-repo branches directly. +- Merge/conflict resolution UI. (If `workset`/git reports conflicts, we surface the error and provide a terminal.) +- Repo browsing, file tree editing, or a built-in code editor. +- LSP features, symbol search, or deep IDE-like navigation. +- Multi-user collaboration, sharing worksets, or remote sync of app-owned configs. +- Secrets storage: no storing SSH keys, GitHub tokens, or credential helper secrets inside the app. + +If a feature is proposed that overlaps these, it must be justified against the v1 outcomes above. + +### 8.3 Source-of-truth boundaries (what owns what) +This is a boundary contract, not a suggestion: +- Workset profiles (workset name + repo sources) are **app-owned** and persisted by the app. +- Workspace lifecycle and repo membership inside a workspace are **CLI-owned** operations. +- Terminals/agents are **sessiond-owned** runtime sessions that the app attaches to. +- Diffs are **derived** from repo worktrees and updated via watcher events. + +If UI behavior and CLI behavior appear to conflict, treat it as a design issue: +- surface the mismatch explicitly +- decide whether we change UI semantics or add a new CLI affordance +- do not “paper over” with silent heuristics + +### 8.4 App structure (Tauri shape, at a product level) +The Tauri app is split into three cooperating systems: +1) **Frontend** (web UI): Workset selector, Spaces, tabs, diff navigator, settings/diagnostics. +2) **Backend** (Tauri Rust): typed command/event API, job engine, file watchers, orchestrates CLI + sessiond. +3) **External tools**: + - `workset` CLI for workspace/repo operations + - `workset-sessiond` for PTYs (terminals/agents) + - `git` for diff computation (or backend wrappers over git) + +The backend is responsible for ensuring the UI never “hangs loading forever”. + +### 8.5 Phased delivery plan (recommended) +The goal is to get a working vertical slice quickly, then harden and expand. + +#### Phase 0: Skeleton + persistence +Deliverables: +- Workset selector in top chrome (list/create/rename/delete). +- Local persistence for workset profiles and active workset selection. +- Empty states for “no worksets”, “no repos”, “no workspaces”. + +Acceptance criteria: +- App can restart and preserve active workset selection and workset list. + +#### Phase 1: Workspace list + create job (CLI-backed) +Deliverables: +- Spaces: workspace list for active workset. +- “New Workspace” flow triggers a create job with progress and per-repo status. +- Partial failure state + retry. + +Acceptance criteria: +- A workspace can be created successfully with multiple repos. +- If one repo fails, the UI shows a repair path and does not lose the workspace. + +#### Phase 2: sessiond integration (PTY tabs) +Deliverables: +- Tab strip in Spaces with “New Terminal” and “New Agent”. +- PTY session lifecycle and streaming via sessiond attach/bootstrap/ack. +- Layout persistence keyed by workspace path (tabs at minimum; splits optional in v1). + +Acceptance criteria: +- Open 2+ agent/terminal tabs; switch away and back; tabs reconnect without losing output. +- No more “WebSocket HMR” dependency (native app runtime must be stable). + +#### Phase 3: Diff navigator + diff tabs (derived state) +Deliverables: +- Right panel diff navigator: repo-grouped file list with `+/-`. +- Background diff watchers for active workspace repos. +- Clicking a file opens a diff tab; diff tabs support refresh and large/binary states. + +Acceptance criteria: +- Editing a file updates the right panel shortly after. +- Clicking a file shows a readable diff and does not freeze the UI for large repos. + +#### Phase 4: Workset repo membership migrations (apply-to-all) +Deliverables: +- Add repo to workset profile triggers migration job across all workspaces. +- Remove repo triggers migration job across all workspaces (with confirmation + options). +- Per-workspace migration status and retry tooling. + +Acceptance criteria: +- Add a repo and observe it appear in every existing workspace (or show per-workspace failure + retry). +- Remove a repo and observe it removed from every existing workspace (or show per-workspace failure + retry). + +#### Phase 5: Diagnostics + debug bundle (operational polish) +Deliverables: +- Settings + Diagnostics views per Section 7. +- “Reload login environment”, sessiond status/restart, CLI status/version, auth checks. +- Export debug bundle (redacted). + +Acceptance criteria: +- Common auth/env failures produce actionable diagnostics rather than vague errors. + +### 8.6 Performance + safety constraints (must be enforced) +Constraints: +- Do not compute full diffs for all repos on every UI render; use watchers and caching. +- Cap patch size and file list sizes to avoid UI stalls; show truncation explicitly. +- Never store secrets; redact tokens from logs and debug bundles. +- All destructive operations (repo removal with deletions) require explicit confirmation and defaults must be conservative. + +### 8.7 Migration strategy (from the existing Wails app) +This rewrite is a product restart, but it should still reuse what we already know: +- session durability semantics from `workset-sessiond` +- layout persistence keyed by workspace path +- diff watcher event model +- error envelopes and “loading never” avoidance + +The goal is not to reproduce the old UI; it is to preserve the proven runtime behaviors while implementing the new product IA. diff --git a/internal/git/cli.go b/internal/git/cli.go index 43645711..e9546048 100644 --- a/internal/git/cli.go +++ b/internal/git/cli.go @@ -43,7 +43,7 @@ func (c CLIClient) run(ctx context.Context, repoPath string, args ...string) (gi } cmdArgs = append(cmdArgs, args...) cmd := exec.CommandContext(ctx, c.gitPath, cmdArgs...) - cmd.Env = os.Environ() + cmd.Env = withGitCommandEnv(os.Environ()) var stdout bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &stdout @@ -75,6 +75,27 @@ func (c CLIClient) run(ctx context.Context, repoPath string, args ...string) (gi return result, err } +func withGitCommandEnv(base []string) []string { + env := make([]string, 0, len(base)+1) + hasPrompt := false + + for _, item := range base { + switch { + case strings.HasPrefix(item, "GIT_TERMINAL_PROMPT="): + env = append(env, "GIT_TERMINAL_PROMPT=0") + hasPrompt = true + default: + env = append(env, item) + } + } + + if !hasPrompt { + env = append(env, "GIT_TERMINAL_PROMPT=0") + } + + return env +} + func (c CLIClient) Clone(ctx context.Context, url, path, remoteName string) error { if remoteName == "" { remoteName = "origin" diff --git a/internal/git/cli_test.go b/internal/git/cli_test.go index 31da5dcf..6d26a111 100644 --- a/internal/git/cli_test.go +++ b/internal/git/cli_test.go @@ -258,3 +258,29 @@ func gitRevParse(t *testing.T, dir, ref string) string { } return string(bytes.TrimSpace(stdout.Bytes())) } + +func TestRunForcesNonInteractiveGitEnv(t *testing.T) { + dir := t.TempDir() + scriptPath := filepath.Join(dir, "fake-git.sh") + script := `#!/bin/sh +if [ "$GIT_TERMINAL_PROMPT" != "0" ]; then + echo "GIT_TERMINAL_PROMPT=$GIT_TERMINAL_PROMPT" >&2 + exit 41 +fi +if [ "$GCM_INTERACTIVE" != "Always" ]; then + echo "GCM_INTERACTIVE=$GCM_INTERACTIVE" >&2 + exit 42 +fi +exit 0 +` + if err := os.WriteFile(scriptPath, []byte(script), 0o755); err != nil { + t.Fatalf("write fake git: %v", err) + } + t.Setenv("GIT_TERMINAL_PROMPT", "1") + t.Setenv("GCM_INTERACTIVE", "Always") + + client := CLIClient{gitPath: scriptPath} + if _, err := client.run(context.Background(), "", "version"); err != nil { + t.Fatalf("run: %v", err) + } +} diff --git a/pkg/worksetapi/env_bootstrap.go b/pkg/worksetapi/env_bootstrap.go index 62f0662c..8070bbce 100644 --- a/pkg/worksetapi/env_bootstrap.go +++ b/pkg/worksetapi/env_bootstrap.go @@ -22,6 +22,8 @@ var ( errLoginEnvLast error ) +const loginEnvCommandTimeout = 5 * time.Second + // EnsureLoginEnv loads the login-shell environment once per process. func EnsureLoginEnv(ctx context.Context) (EnvSnapshotResultJSON, error) { return loadLoginEnv(ctx, false) @@ -92,11 +94,34 @@ func envMap(env []string) map[string]string { return out } -var clearableEnvKeys = []string{"SSH_AUTH_SOCK", "SSH_AGENT_PID", "SSH_ASKPASS", "GIT_SSH_COMMAND"} +var clearableEnvKeys = []string{ + "SSH_AUTH_SOCK", + "SSH_AGENT_PID", + "SSH_ASKPASS", + "GIT_ASKPASS", + "GIT_SSH_COMMAND", + "XDG_CONFIG_HOME", + "XDG_STATE_HOME", + "XDG_CACHE_HOME", +} func shouldOverrideEnvKey(key string) bool { switch key { - case "PATH", "SSH_AUTH_SOCK", "SSH_AGENT_PID", "SSH_ASKPASS", "GIT_SSH_COMMAND", "LANG", "LC_ALL", "LC_CTYPE": + case "PATH", + "HOME", + "USER", + "LOGNAME", + "SSH_AUTH_SOCK", + "SSH_AGENT_PID", + "SSH_ASKPASS", + "GIT_ASKPASS", + "GIT_SSH_COMMAND", + "XDG_CONFIG_HOME", + "XDG_STATE_HOME", + "XDG_CACHE_HOME", + "LANG", + "LC_ALL", + "LC_CTYPE": return true default: return strings.HasPrefix(key, "LC_") @@ -153,7 +178,7 @@ func loadLoginEnv(ctx context.Context, force bool) (EnvSnapshotResultJSON, error shellBase := strings.ToLower(filepath.Base(shell)) command := "env" args := shellArgsForMode(shellBase, command, agentShellModeLogin) - ctx, cancel := context.WithTimeout(ctx, 2*time.Second) + ctx, cancel := context.WithTimeout(ctx, loginEnvCommandTimeout) defer cancel() cmd := exec.CommandContext(ctx, shell, args...) cmd.Env = os.Environ() diff --git a/pkg/worksetapi/env_bootstrap_test.go b/pkg/worksetapi/env_bootstrap_test.go index d7fa6f91..445cd153 100644 --- a/pkg/worksetapi/env_bootstrap_test.go +++ b/pkg/worksetapi/env_bootstrap_test.go @@ -65,6 +65,38 @@ func TestApplyEnvSnapshotKeepsExistingNonOverride(t *testing.T) { } } +func TestApplyEnvSnapshotOverridesHomeAndXDG(t *testing.T) { + t.Setenv("HOME", "/tmp/old-home") + t.Setenv("XDG_CONFIG_HOME", "/tmp/old-xdg-config") + t.Setenv("XDG_STATE_HOME", "/tmp/old-xdg-state") + t.Setenv("XDG_CACHE_HOME", "/tmp/old-xdg-cache") + + changed := applyEnvSnapshot(map[string]string{ + "HOME": "/Users/tester", + "XDG_CONFIG_HOME": "/Users/tester/.config", + "XDG_STATE_HOME": "/Users/tester/.local/state", + "XDG_CACHE_HOME": "/Users/tester/.cache", + }) + + if got := os.Getenv("HOME"); got != "/Users/tester" { + t.Fatalf("expected HOME override, got %q", got) + } + if got := os.Getenv("XDG_CONFIG_HOME"); got != "/Users/tester/.config" { + t.Fatalf("expected XDG_CONFIG_HOME override, got %q", got) + } + if got := os.Getenv("XDG_STATE_HOME"); got != "/Users/tester/.local/state" { + t.Fatalf("expected XDG_STATE_HOME override, got %q", got) + } + if got := os.Getenv("XDG_CACHE_HOME"); got != "/Users/tester/.cache" { + t.Fatalf("expected XDG_CACHE_HOME override, got %q", got) + } + for _, key := range []string{"HOME", "XDG_CONFIG_HOME", "XDG_STATE_HOME", "XDG_CACHE_HOME"} { + if !containsKey(changed, key) { + t.Fatalf("expected %s in changed keys, got %v", key, changed) + } + } +} + func TestEnvSnapshotDisabledParsing(t *testing.T) { t.Setenv("WORKSET_ENV_SNAPSHOT", "0") if !envSnapshotDisabled() { From 1a17a5d0e2011a9c308336decd27c296a8cb6c2b Mon Sep 17 00:00:00 2001 From: Tyler Biscoe Date: Mon, 9 Feb 2026 08:54:48 -0500 Subject: [PATCH 2/7] ssh fix --- OPUS-tauri-app/src/components/modals/WorksetCreateModal.tsx | 4 ++-- .../src/components/pages/CommandCenter/CommandCenterPage.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/OPUS-tauri-app/src/components/modals/WorksetCreateModal.tsx b/OPUS-tauri-app/src/components/modals/WorksetCreateModal.tsx index 28386100..78184acc 100644 --- a/OPUS-tauri-app/src/components/modals/WorksetCreateModal.tsx +++ b/OPUS-tauri-app/src/components/modals/WorksetCreateModal.tsx @@ -165,9 +165,9 @@ export function WorksetCreateModal() { async function handleAddRepo(repoUrl?: string) { let source = repoUrl || repoInput.trim(); if (!source) return; - // Normalize short "org/repo" to full GitHub URL + // Normalize short "org/repo" to SSH URL if (!source.includes('://') && !source.includes('@') && !source.startsWith('/') && !source.startsWith('~') && !source.startsWith('.') && source.includes('/')) { - source = `https://github.com/${source}`; + source = `git@github.com:${source}.git`; } setAddingRepo(true); setRepoError(null); diff --git a/OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.tsx b/OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.tsx index e262f712..ca9d110f 100644 --- a/OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.tsx +++ b/OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.tsx @@ -262,9 +262,9 @@ function RepositoriesSection({ async function handleAddRepo(repoUrl?: string) { let url = repoUrl || newRepoUrl.trim(); if (!url || !activeWorksetId) return; - // Normalize short "org/repo" to full GitHub URL so the Go backend recognizes it + // Normalize short "org/repo" to SSH URL so the Go backend recognizes it if (!url.includes('://') && !url.includes('@') && !url.startsWith('/') && !url.startsWith('~') && !url.startsWith('.') && url.includes('/')) { - url = `https://github.com/${url}`; + url = `git@github.com:${url}.git`; } setRepoLoading(true); setShowSuggestions(false); From 7c00d2ea35b805818c86b57dcf17d663c5b3ba0e Mon Sep 17 00:00:00 2001 From: Tyler Biscoe Date: Mon, 9 Feb 2026 09:26:37 -0500 Subject: [PATCH 3/7] command pallet --- .../src-tauri/src/commands/github.rs | 4 + OPUS-tauri-app/src/App.tsx | 6 ++ .../components/modals/WorksetCreateModal.tsx | 2 +- .../components/pages/Spaces/SpacesPage.tsx | 85 +------------------ 4 files changed, 12 insertions(+), 85 deletions(-) diff --git a/OPUS-tauri-app/src-tauri/src/commands/github.rs b/OPUS-tauri-app/src-tauri/src/commands/github.rs index f0381939..fd9201a6 100644 --- a/OPUS-tauri-app/src-tauri/src/commands/github.rs +++ b/OPUS-tauri-app/src-tauri/src/commands/github.rs @@ -95,6 +95,10 @@ pub async fn github_auth_status() -> Result { Ok(out) => { let authenticated = out.status.success(); let message = if authenticated { + // Configure git to use gh as HTTPS credential helper (idempotent) + let _ = Command::new("gh") + .args(["auth", "setup-git"]) + .output(); String::from_utf8_lossy(&out.stdout).trim().to_string() } else { String::from_utf8_lossy(&out.stderr).trim().to_string() diff --git a/OPUS-tauri-app/src/App.tsx b/OPUS-tauri-app/src/App.tsx index a96314ec..7708750c 100644 --- a/OPUS-tauri-app/src/App.tsx +++ b/OPUS-tauri-app/src/App.tsx @@ -12,6 +12,9 @@ import { WorksetCreateModal } from '@/components/modals/WorksetCreateModal'; import { CreateWorkspaceModal } from '@/components/pages/Spaces/CreateWorkspaceModal'; import { MigrationStatusModal } from '@/components/modals/MigrationStatusModal'; import { RepoRemoveConfirmModal } from '@/components/modals/RepoRemoveConfirmModal'; +import { CommandPalette } from '@/components/modals/CommandPalette'; +import { useGlobalShortcuts } from '@/hooks/useGlobalShortcuts'; +import '@/commands/appCommands'; function MainContent() { const activePage = useAppStore((s) => s.activePage); @@ -31,6 +34,8 @@ export default function App() { const activeModal = useAppStore((s) => s.activeModal); const activePage = useAppStore((s) => s.activePage); + useGlobalShortcuts(); + useEffect(() => { loadWorksets(); }, [loadWorksets]); @@ -44,6 +49,7 @@ export default function App() { main={} rightPanel={activePage === 'spaces' ? : undefined} /> + {activeModal?.type === 'command-palette' && } {activeModal?.type === 'create-workset' && } {activeModal?.type === 'create-workspace' && } {activeModal?.type === 'migration-status' && } diff --git a/OPUS-tauri-app/src/components/modals/WorksetCreateModal.tsx b/OPUS-tauri-app/src/components/modals/WorksetCreateModal.tsx index 78184acc..ebca61ef 100644 --- a/OPUS-tauri-app/src/components/modals/WorksetCreateModal.tsx +++ b/OPUS-tauri-app/src/components/modals/WorksetCreateModal.tsx @@ -228,7 +228,7 @@ export function WorksetCreateModal() { setName(e.target.value)} - placeholder="e.g. search-ranking" + placeholder="e.g. payments-platform" autoFocus onKeyDown={(e) => e.key === 'Enter' && handleCreateName()} /> diff --git a/OPUS-tauri-app/src/components/pages/Spaces/SpacesPage.tsx b/OPUS-tauri-app/src/components/pages/Spaces/SpacesPage.tsx index e346d4a9..4b6ee422 100644 --- a/OPUS-tauri-app/src/components/pages/Spaces/SpacesPage.tsx +++ b/OPUS-tauri-app/src/components/pages/Spaces/SpacesPage.tsx @@ -1,17 +1,11 @@ -import { useEffect, useCallback } from 'react'; +import { useEffect } from 'react'; import { useAppStore } from '@/state/store'; -import type { LayoutNode, PaneNode } from '@/types/layout'; import { EmptyState } from '@/components/ui/EmptyState'; import { Button } from '@/components/ui/Button'; import { TerminalLayoutNodeView } from './TerminalLayoutNode'; import { Layers } from 'lucide-react'; import './SpacesPage.css'; -function findPane(node: LayoutNode, paneId: string): PaneNode | null { - if (node.kind === 'pane') return node.id === paneId ? node : null; - return findPane(node.first, paneId) ?? findPane(node.second, paneId); -} - export function SpacesPage() { const activeWorksetId = useAppStore((s) => s.activeWorksetId); const activeWorkspaceName = useAppStore((s) => s.activeWorkspaceName); @@ -21,13 +15,6 @@ export function SpacesPage() { const saveLayout = useAppStore((s) => s.saveLayout); const openModal = useAppStore((s) => s.openModal); const worksets = useAppStore((s) => s.worksets); - const setActiveTab = useAppStore((s) => s.setActiveTab); - const focusedPaneId = useAppStore((s) => s.focusedPaneId); - const addTab = useAppStore((s) => s.addTab); - const removeTab = useAppStore((s) => s.removeTab); - const allocatePtySession = useAppStore((s) => s.allocatePtySession); - const closePtySession = useAppStore((s) => s.closePtySession); - const setActiveWorkspace = useAppStore((s) => s.setActiveWorkspace); // Load layout when workspace changes useEffect(() => { @@ -46,76 +33,6 @@ export function SpacesPage() { } }, [activeWorkspaceName, layout, saveLayout]); - const handleKeyDown = useCallback( - (e: KeyboardEvent) => { - if (!e.metaKey || !activeWorkspaceName) return; - - // Cmd+Up / Cmd+Down — switch workspaces - if (e.key === 'ArrowUp' || e.key === 'ArrowDown') { - if (workspaces.length < 2) return; - e.preventDefault(); - const idx = workspaces.findIndex((ws) => ws.name === activeWorkspaceName); - const next = - e.key === 'ArrowUp' - ? (idx - 1 + workspaces.length) % workspaces.length - : (idx + 1) % workspaces.length; - setActiveWorkspace(workspaces[next].name); - return; - } - - if (!layout) return; - const paneId = focusedPaneId ?? 'main'; - const pane = findPane(layout.root, paneId); - if (!pane || pane.tabs.length === 0) return; - - // Cmd+Left / Cmd+Right — switch tabs - if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') { - e.preventDefault(); - const idx = pane.tabs.findIndex((t) => t.id === pane.active_tab_id); - const next = - e.key === 'ArrowLeft' - ? (idx - 1 + pane.tabs.length) % pane.tabs.length - : (idx + 1) % pane.tabs.length; - setActiveTab(paneId, pane.tabs[next].id); - return; - } - - // Cmd+T — new terminal - if (e.key === 't') { - e.preventDefault(); - allocatePtySession(activeWorkspaceName, 'terminal') - .then((terminalId) => { - addTab(paneId, { - id: `tab-${Date.now()}`, - terminal_id: terminalId, - title: 'Terminal', - kind: 'terminal', - }); - }) - .catch(() => {}); - return; - } - - // Cmd+W — close active tab - if (e.key === 'w') { - e.preventDefault(); - const tab = pane.tabs.find((t) => t.id === pane.active_tab_id); - if (!tab) return; - removeTab(paneId, tab.id); - if (tab.kind !== 'diff') { - closePtySession(activeWorkspaceName, tab.terminal_id); - } - } - }, - [layout, activeWorkspaceName, workspaces, focusedPaneId, setActiveTab, - setActiveWorkspace, allocatePtySession, addTab, removeTab, closePtySession], - ); - - useEffect(() => { - window.addEventListener('keydown', handleKeyDown); - return () => window.removeEventListener('keydown', handleKeyDown); - }, [handleKeyDown]); - if (worksets.length === 0) { return ( Date: Mon, 9 Feb 2026 09:34:49 -0500 Subject: [PATCH 4/7] fixed up palette --- OPUS-tauri-app/src/commands/appCommands.ts | 221 ++++++++++++++++++ OPUS-tauri-app/src/commands/fuzzyMatch.ts | 67 ++++++ OPUS-tauri-app/src/commands/layoutUtils.ts | 6 + OPUS-tauri-app/src/commands/registry.ts | 50 ++++ .../src/components/modals/CommandPalette.css | 133 +++++++++++ .../src/components/modals/CommandPalette.tsx | 179 ++++++++++++++ .../src/hooks/useGlobalShortcuts.ts | 49 ++++ 7 files changed, 705 insertions(+) create mode 100644 OPUS-tauri-app/src/commands/appCommands.ts create mode 100644 OPUS-tauri-app/src/commands/fuzzyMatch.ts create mode 100644 OPUS-tauri-app/src/commands/layoutUtils.ts create mode 100644 OPUS-tauri-app/src/commands/registry.ts create mode 100644 OPUS-tauri-app/src/components/modals/CommandPalette.css create mode 100644 OPUS-tauri-app/src/components/modals/CommandPalette.tsx create mode 100644 OPUS-tauri-app/src/hooks/useGlobalShortcuts.ts diff --git a/OPUS-tauri-app/src/commands/appCommands.ts b/OPUS-tauri-app/src/commands/appCommands.ts new file mode 100644 index 00000000..45c5c1c6 --- /dev/null +++ b/OPUS-tauri-app/src/commands/appCommands.ts @@ -0,0 +1,221 @@ +import { + LayoutGrid, + Layers, + Settings, + Plus, + Terminal, + PanelRightClose, + Command, + ArrowUp, + ArrowDown, + ArrowLeft, + ArrowRight, + X, +} from 'lucide-react'; +import { registerCommands } from './registry'; +import { findPane } from './layoutUtils'; +import { useAppStore } from '@/state/store'; + +const store = () => useAppStore.getState(); + +registerCommands([ + // ── Navigation ────────────────────────────────────────────── + { + id: 'nav.command-center', + label: 'Go to Command Center', + category: 'navigation', + icon: LayoutGrid, + shortcut: { modifiers: ['meta'], key: '1' }, + execute: () => store().setActivePage('command-center'), + }, + { + id: 'nav.spaces', + label: 'Go to Spaces', + category: 'navigation', + icon: Layers, + shortcut: { modifiers: ['meta'], key: '2' }, + execute: () => store().setActivePage('spaces'), + }, + { + id: 'nav.settings', + label: 'Go to Settings', + category: 'navigation', + icon: Settings, + shortcut: { modifiers: ['meta'], key: '3' }, + execute: () => store().setActivePage('settings'), + }, + + // ── Workset ───────────────────────────────────────────────── + { + id: 'workset.create', + label: 'Create New Workset', + category: 'workset', + icon: Plus, + execute: () => store().openModal('create-workset'), + }, + + // ── Workspace ─────────────────────────────────────────────── + { + id: 'workspace.create', + label: 'Create New Workspace', + category: 'workspace', + icon: Plus, + when: () => store().activeWorksetId !== null, + execute: () => store().openModal('create-workspace'), + }, + { + id: 'workspace.prev', + label: 'Previous Workspace', + category: 'workspace', + icon: ArrowUp, + shortcut: { modifiers: ['meta'], key: 'arrowup' }, + when: () => + store().activePage === 'spaces' && + store().activeWorkspaceName !== null && + store().workspaces.length > 1, + execute: () => { + const s = store(); + const idx = s.workspaces.findIndex((ws) => ws.name === s.activeWorkspaceName); + const next = (idx - 1 + s.workspaces.length) % s.workspaces.length; + s.setActiveWorkspace(s.workspaces[next].name); + }, + }, + { + id: 'workspace.next', + label: 'Next Workspace', + category: 'workspace', + icon: ArrowDown, + shortcut: { modifiers: ['meta'], key: 'arrowdown' }, + when: () => + store().activePage === 'spaces' && + store().activeWorkspaceName !== null && + store().workspaces.length > 1, + execute: () => { + const s = store(); + const idx = s.workspaces.findIndex((ws) => ws.name === s.activeWorkspaceName); + const next = (idx + 1) % s.workspaces.length; + s.setActiveWorkspace(s.workspaces[next].name); + }, + }, + + // ── Terminal ──────────────────────────────────────────────── + { + id: 'terminal.new', + label: 'New Terminal Tab', + category: 'terminal', + icon: Terminal, + shortcut: { modifiers: ['meta'], key: 't' }, + when: () => + store().activePage === 'spaces' && store().activeWorkspaceName !== null, + execute: async () => { + const s = store(); + if (!s.activeWorkspaceName) return; + const paneId = s.focusedPaneId ?? 'main'; + const terminalId = await s.allocatePtySession(s.activeWorkspaceName, 'terminal'); + s.addTab(paneId, { + id: `tab-${Date.now()}`, + terminal_id: terminalId, + title: 'Terminal', + kind: 'terminal', + }); + }, + }, + { + id: 'terminal.close-tab', + label: 'Close Active Tab', + category: 'terminal', + icon: X, + shortcut: { modifiers: ['meta'], key: 'w' }, + when: () => + store().activePage === 'spaces' && + store().activeWorkspaceName !== null && + store().layout !== null, + execute: () => { + const s = store(); + if (!s.layout || !s.activeWorkspaceName) return; + const paneId = s.focusedPaneId ?? 'main'; + const pane = findPane(s.layout.root, paneId); + if (!pane || pane.tabs.length === 0) return; + const tab = pane.tabs.find((t) => t.id === pane.active_tab_id); + if (!tab) return; + s.removeTab(paneId, tab.id); + if (tab.kind !== 'diff') { + s.closePtySession(s.activeWorkspaceName, tab.terminal_id); + } + }, + }, + { + id: 'terminal.prev-tab', + label: 'Previous Tab', + category: 'terminal', + icon: ArrowLeft, + shortcut: { modifiers: ['meta'], key: 'arrowleft' }, + when: () => { + const s = store(); + if (s.activePage !== 'spaces' || !s.layout) return false; + const paneId = s.focusedPaneId ?? 'main'; + const pane = findPane(s.layout.root, paneId); + return pane !== null && pane.tabs.length > 1; + }, + execute: () => { + const s = store(); + if (!s.layout) return; + const paneId = s.focusedPaneId ?? 'main'; + const pane = findPane(s.layout.root, paneId); + if (!pane || pane.tabs.length === 0) return; + const idx = pane.tabs.findIndex((t) => t.id === pane.active_tab_id); + const next = (idx - 1 + pane.tabs.length) % pane.tabs.length; + s.setActiveTab(paneId, pane.tabs[next].id); + }, + }, + { + id: 'terminal.next-tab', + label: 'Next Tab', + category: 'terminal', + icon: ArrowRight, + shortcut: { modifiers: ['meta'], key: 'arrowright' }, + when: () => { + const s = store(); + if (s.activePage !== 'spaces' || !s.layout) return false; + const paneId = s.focusedPaneId ?? 'main'; + const pane = findPane(s.layout.root, paneId); + return pane !== null && pane.tabs.length > 1; + }, + execute: () => { + const s = store(); + if (!s.layout) return; + const paneId = s.focusedPaneId ?? 'main'; + const pane = findPane(s.layout.root, paneId); + if (!pane || pane.tabs.length === 0) return; + const idx = pane.tabs.findIndex((t) => t.id === pane.active_tab_id); + const next = (idx + 1) % pane.tabs.length; + s.setActiveTab(paneId, pane.tabs[next].id); + }, + }, + + // ── App ───────────────────────────────────────────────────── + { + id: 'app.toggle-right-panel', + label: 'Toggle Right Panel', + category: 'app', + icon: PanelRightClose, + shortcut: { modifiers: ['meta'], key: 'b' }, + when: () => store().activePage === 'spaces', + execute: () => store().toggleRightPanel(), + }, + { + id: 'app.command-palette', + label: 'Command Palette', + category: 'app', + icon: Command, + shortcut: { modifiers: ['meta'], key: 'k' }, + execute: () => { + const s = store(); + if (s.activeModal?.type === 'command-palette') { + s.closeModal(); + } else { + s.openModal('command-palette'); + } + }, + }, +]); diff --git a/OPUS-tauri-app/src/commands/fuzzyMatch.ts b/OPUS-tauri-app/src/commands/fuzzyMatch.ts new file mode 100644 index 00000000..6f8505ad --- /dev/null +++ b/OPUS-tauri-app/src/commands/fuzzyMatch.ts @@ -0,0 +1,67 @@ +export type FuzzyResult = { + item: T; + score: number; + matches: number[]; +}; + +export function fuzzyMatch( + query: string, + label: string, +): { score: number; matches: number[] } | null { + const q = query.toLowerCase(); + const l = label.toLowerCase(); + + if (q.length === 0) return { score: 1, matches: [] }; + if (q.length > l.length) return null; + + const matches: number[] = []; + let qi = 0; + let score = 0; + let prevMatchIndex = -2; + + for (let li = 0; li < l.length && qi < q.length; li++) { + if (l[li] === q[qi]) { + matches.push(li); + + // Consecutive match bonus + if (li === prevMatchIndex + 1) { + score += 3; + } + + // Word boundary bonus + if (li === 0 || /[\s\-/]/.test(l[li - 1])) { + score += 2; + } + + // Earlier match bonus (diminishing) + score += Math.max(0, 10 - li); + + prevMatchIndex = li; + qi++; + } + } + + if (qi < q.length) return null; + + return { score, matches }; +} + +export function fuzzyFilter( + items: T[], + query: string, + getLabel: (item: T) => string, +): FuzzyResult[] { + if (query.trim() === '') { + return items.map((item) => ({ item, score: 0, matches: [] })); + } + + const results: FuzzyResult[] = []; + for (const item of items) { + const match = fuzzyMatch(query, getLabel(item)); + if (match) { + results.push({ item, score: match.score, matches: match.matches }); + } + } + + return results.sort((a, b) => b.score - a.score); +} diff --git a/OPUS-tauri-app/src/commands/layoutUtils.ts b/OPUS-tauri-app/src/commands/layoutUtils.ts new file mode 100644 index 00000000..c301d2fd --- /dev/null +++ b/OPUS-tauri-app/src/commands/layoutUtils.ts @@ -0,0 +1,6 @@ +import type { LayoutNode, PaneNode } from '@/types/layout'; + +export function findPane(node: LayoutNode, paneId: string): PaneNode | null { + if (node.kind === 'pane') return node.id === paneId ? node : null; + return findPane(node.first, paneId) ?? findPane(node.second, paneId); +} diff --git a/OPUS-tauri-app/src/commands/registry.ts b/OPUS-tauri-app/src/commands/registry.ts new file mode 100644 index 00000000..5f689fb3 --- /dev/null +++ b/OPUS-tauri-app/src/commands/registry.ts @@ -0,0 +1,50 @@ +import type { LucideIcon } from 'lucide-react'; + +export type CommandCategory = + | 'navigation' + | 'workspace' + | 'terminal' + | 'workset' + | 'app'; + +export type KeyboardShortcut = { + modifiers: ('meta' | 'shift' | 'alt' | 'ctrl')[]; + key: string; +}; + +export type CommandDefinition = { + id: string; + label: string; + category: CommandCategory; + icon?: LucideIcon; + shortcut?: KeyboardShortcut; + /** Return false to hide from palette in current context */ + when?: () => boolean; + execute: () => void | Promise; +}; + +const commands = new Map(); + +export function registerCommand(cmd: CommandDefinition): () => void { + commands.set(cmd.id, cmd); + return () => { + commands.delete(cmd.id); + }; +} + +export function registerCommands(cmds: CommandDefinition[]): () => void { + cmds.forEach((cmd) => commands.set(cmd.id, cmd)); + return () => { + cmds.forEach((cmd) => commands.delete(cmd.id)); + }; +} + +export function getCommands(): CommandDefinition[] { + return Array.from(commands.values()); +} + +export function getVisibleCommands(): CommandDefinition[] { + return Array.from(commands.values()).filter( + (cmd) => !cmd.when || cmd.when(), + ); +} diff --git a/OPUS-tauri-app/src/components/modals/CommandPalette.css b/OPUS-tauri-app/src/components/modals/CommandPalette.css new file mode 100644 index 00000000..7e9e27a7 --- /dev/null +++ b/OPUS-tauri-app/src/components/modals/CommandPalette.css @@ -0,0 +1,133 @@ +.command-palette__overlay { + position: fixed; + inset: 0; + background: rgba(0, 0, 0, 0.6); + display: flex; + justify-content: center; + padding-top: 20vh; + z-index: 1100; +} + +.command-palette { + width: 100%; + max-width: 540px; + max-height: 400px; + background: var(--panel); + border: 1px solid var(--border-active); + border-radius: var(--radius-md); + display: flex; + flex-direction: column; + overflow: hidden; + align-self: flex-start; +} + +.command-palette__input-row { + display: flex; + align-items: center; + gap: var(--space-2); + padding: var(--space-3) var(--space-4); + border-bottom: 1px solid var(--border); +} + +.command-palette__search-icon { + color: var(--muted); + flex-shrink: 0; +} + +.command-palette__input { + flex: 1; + background: none; + border: none; + outline: none; + color: var(--text); + font-size: 14px; + font-family: var(--font-body); +} + +.command-palette__input::placeholder { + color: var(--muted); +} + +.command-palette__input:focus-visible { + outline: none; +} + +.command-palette__list { + overflow-y: auto; + padding: var(--space-1) 0; +} + +.command-palette__empty { + padding: var(--space-6) var(--space-4); + text-align: center; + color: var(--muted); + font-size: 13px; +} + +.command-palette__group { + padding: var(--space-1) 0; +} + +.command-palette__group-label { + padding: var(--space-1) var(--space-4); + font-size: 11px; + font-weight: 600; + color: var(--muted); + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.command-palette__item { + display: flex; + align-items: center; + gap: var(--space-2); + width: 100%; + padding: 6px var(--space-4); + text-align: left; + font-size: 13px; + color: var(--text); + background: none; + border: none; + border-left: 2px solid transparent; + cursor: pointer; + transition: background var(--transition-fast); +} + +.command-palette__item:hover, +.command-palette__item--selected { + background: var(--accent-soft); + border-left-color: var(--accent); +} + +.command-palette__item-icon { + color: var(--muted); + flex-shrink: 0; +} + +.command-palette__item--selected .command-palette__item-icon { + color: var(--accent); +} + +.command-palette__item-label { + flex: 1; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.command-palette__match { + color: var(--accent); + font-weight: 600; +} + +.command-palette__kbd { + font-family: var(--font-mono); + font-size: 11px; + color: var(--muted); + background: var(--surface); + padding: 2px 6px; + border-radius: var(--radius-sm); + border: 1px solid var(--border); + flex-shrink: 0; +} diff --git a/OPUS-tauri-app/src/components/modals/CommandPalette.tsx b/OPUS-tauri-app/src/components/modals/CommandPalette.tsx new file mode 100644 index 00000000..70185dbd --- /dev/null +++ b/OPUS-tauri-app/src/components/modals/CommandPalette.tsx @@ -0,0 +1,179 @@ +import { useState, useRef, useEffect, useMemo, useCallback } from 'react'; +import { useAppStore } from '@/state/store'; +import { getVisibleCommands } from '@/commands/registry'; +import { fuzzyFilter } from '@/commands/fuzzyMatch'; +import type { CommandDefinition, KeyboardShortcut } from '@/commands/registry'; +import type { FuzzyResult } from '@/commands/fuzzyMatch'; +import { Search } from 'lucide-react'; +import './CommandPalette.css'; + +const KEY_SYMBOLS: Record = { + arrowup: '\u2191', + arrowdown: '\u2193', + arrowleft: '\u2190', + arrowright: '\u2192', + enter: '\u21A9', + escape: 'Esc', + backspace: '\u232B', +}; + +function formatShortcut(shortcut: KeyboardShortcut): string { + const parts: string[] = []; + if (shortcut.modifiers.includes('meta')) parts.push('\u2318'); + if (shortcut.modifiers.includes('ctrl')) parts.push('\u2303'); + if (shortcut.modifiers.includes('alt')) parts.push('\u2325'); + if (shortcut.modifiers.includes('shift')) parts.push('\u21E7'); + parts.push(KEY_SYMBOLS[shortcut.key] ?? shortcut.key.toUpperCase()); + return parts.join(''); +} + +function HighlightedLabel({ label, matches }: { label: string; matches: number[] }) { + if (matches.length === 0) return <>{label}; + const matchSet = new Set(matches); + return ( + <> + {label.split('').map((char, i) => + matchSet.has(i) ? ( + {char} + ) : ( + {char} + ), + )} + + ); +} + +const CATEGORY_LABELS: Record = { + navigation: 'Navigation', + workspace: 'Workspace', + terminal: 'Terminal', + workset: 'Workset', + app: 'App', +}; + +export function CommandPalette() { + const closeModal = useAppStore((s) => s.closeModal); + const [query, setQuery] = useState(''); + const [selectedIndex, setSelectedIndex] = useState(0); + const inputRef = useRef(null); + const listRef = useRef(null); + + const visibleCommands = useMemo(() => getVisibleCommands(), []); + const results: FuzzyResult[] = useMemo( + () => fuzzyFilter(visibleCommands, query, (cmd) => cmd.label), + [visibleCommands, query], + ); + + // Group by category, preserving a flat index for keyboard navigation + const grouped = useMemo(() => { + const flat = results.map((r, i) => ({ ...r, flatIndex: i })); + const groups = new Map(); + for (const r of flat) { + const cat = r.item.category; + if (!groups.has(cat)) groups.set(cat, []); + groups.get(cat)!.push(r); + } + return groups; + }, [results]); + + useEffect(() => { + setSelectedIndex(0); + }, [query]); + + useEffect(() => { + inputRef.current?.focus(); + }, []); + + useEffect(() => { + const el = listRef.current?.querySelector('[data-selected="true"]'); + el?.scrollIntoView({ block: 'nearest' }); + }, [selectedIndex]); + + const executeSelected = useCallback(() => { + const result = results[selectedIndex]; + if (result) { + closeModal(); + requestAnimationFrame(() => result.item.execute()); + } + }, [results, selectedIndex, closeModal]); + + function handleKeyDown(e: React.KeyboardEvent) { + switch (e.key) { + case 'ArrowDown': + e.preventDefault(); + setSelectedIndex((i) => Math.min(i + 1, results.length - 1)); + break; + case 'ArrowUp': + e.preventDefault(); + setSelectedIndex((i) => Math.max(i - 1, 0)); + break; + case 'Enter': + e.preventDefault(); + executeSelected(); + break; + case 'Escape': + e.preventDefault(); + closeModal(); + break; + } + } + + return ( +
+
e.stopPropagation()}> +
+ + setQuery(e.target.value)} + onKeyDown={handleKeyDown} + placeholder="Type a command..." + spellCheck={false} + autoComplete="off" + /> +
+
+ {results.length === 0 && ( +
No matching commands
+ )} + {Array.from(grouped.entries()).map(([category, items]) => ( +
+
+ {CATEGORY_LABELS[category] ?? category} +
+ {items.map((r) => { + const Icon = r.item.icon; + return ( + + ); + })} +
+ ))} +
+
+
+ ); +} diff --git a/OPUS-tauri-app/src/hooks/useGlobalShortcuts.ts b/OPUS-tauri-app/src/hooks/useGlobalShortcuts.ts new file mode 100644 index 00000000..a7b4e278 --- /dev/null +++ b/OPUS-tauri-app/src/hooks/useGlobalShortcuts.ts @@ -0,0 +1,49 @@ +import { useEffect } from 'react'; +import { getCommands } from '@/commands/registry'; +import type { KeyboardShortcut } from '@/commands/registry'; + +function matchesShortcut(e: KeyboardEvent, shortcut: KeyboardShortcut): boolean { + const wantMeta = shortcut.modifiers.includes('meta'); + const wantShift = shortcut.modifiers.includes('shift'); + const wantAlt = shortcut.modifiers.includes('alt'); + const wantCtrl = shortcut.modifiers.includes('ctrl'); + + if (e.metaKey !== wantMeta) return false; + if (e.shiftKey !== wantShift) return false; + if (e.altKey !== wantAlt) return false; + if (e.ctrlKey !== wantCtrl) return false; + + return e.key.toLowerCase() === shortcut.key; +} + +export function useGlobalShortcuts() { + useEffect(() => { + function handleKeyDown(e: KeyboardEvent) { + // When focused on a text input, only intercept modifier-based + // shortcuts (Cmd+...) and Escape — never plain keystrokes. + if (!e.metaKey && e.key !== 'Escape') { + const target = e.target as HTMLElement; + if ( + target.tagName === 'INPUT' || + target.tagName === 'TEXTAREA' || + target.isContentEditable + ) { + return; + } + } + + const commands = getCommands(); + for (const cmd of commands) { + if (!cmd.shortcut) continue; + if (!matchesShortcut(e, cmd.shortcut)) continue; + if (cmd.when && !cmd.when()) continue; + e.preventDefault(); + cmd.execute(); + return; + } + } + + window.addEventListener('keydown', handleKeyDown); + return () => window.removeEventListener('keydown', handleKeyDown); + }, []); +} From 130e02ba7b2fde5a6bdf2547ef9f2e945ec8cc86 Mon Sep 17 00:00:00 2001 From: Tyler Biscoe Date: Mon, 9 Feb 2026 10:51:11 -0500 Subject: [PATCH 5/7] theme --- OPUS-tauri-app/src/App.tsx | 2 + OPUS-tauri-app/src/commands/appCommands.ts | 57 +++ .../components/layout/SecondarySidebar.tsx | 8 +- .../pages/CommandCenter/CommandCenterPage.css | 36 -- .../pages/CommandCenter/CommandCenterPage.tsx | 66 +--- .../pages/Settings/AppearanceSection.css | 82 +++++ .../pages/Settings/AppearanceSection.tsx | 72 ++++ .../pages/Settings/SettingsPage.tsx | 2 + .../pages/Spaces/TerminalSurface.tsx | 33 +- OPUS-tauri-app/src/state/slices/uiSlice.ts | 10 +- OPUS-tauri-app/src/styles/ThemeProvider.tsx | 28 ++ OPUS-tauri-app/src/styles/themes.ts | 335 ++++++++++++++++++ 12 files changed, 601 insertions(+), 130 deletions(-) create mode 100644 OPUS-tauri-app/src/components/pages/Settings/AppearanceSection.css create mode 100644 OPUS-tauri-app/src/components/pages/Settings/AppearanceSection.tsx create mode 100644 OPUS-tauri-app/src/styles/ThemeProvider.tsx create mode 100644 OPUS-tauri-app/src/styles/themes.ts diff --git a/OPUS-tauri-app/src/App.tsx b/OPUS-tauri-app/src/App.tsx index 7708750c..1996b6ac 100644 --- a/OPUS-tauri-app/src/App.tsx +++ b/OPUS-tauri-app/src/App.tsx @@ -13,6 +13,7 @@ import { CreateWorkspaceModal } from '@/components/pages/Spaces/CreateWorkspaceM import { MigrationStatusModal } from '@/components/modals/MigrationStatusModal'; import { RepoRemoveConfirmModal } from '@/components/modals/RepoRemoveConfirmModal'; import { CommandPalette } from '@/components/modals/CommandPalette'; +import { ThemeProvider } from '@/styles/ThemeProvider'; import { useGlobalShortcuts } from '@/hooks/useGlobalShortcuts'; import '@/commands/appCommands'; @@ -42,6 +43,7 @@ export default function App() { return ( <> + } rail={} diff --git a/OPUS-tauri-app/src/commands/appCommands.ts b/OPUS-tauri-app/src/commands/appCommands.ts index 45c5c1c6..2b238995 100644 --- a/OPUS-tauri-app/src/commands/appCommands.ts +++ b/OPUS-tauri-app/src/commands/appCommands.ts @@ -11,10 +11,15 @@ import { ArrowLeft, ArrowRight, X, + GitBranch, + Sun, + Moon, + Palette, } from 'lucide-react'; import { registerCommands } from './registry'; import { findPane } from './layoutUtils'; import { useAppStore } from '@/state/store'; +import { themes, getThemeById } from '@/styles/themes'; const store = () => useAppStore.getState(); @@ -54,6 +59,19 @@ registerCommands([ execute: () => store().openModal('create-workset'), }, + { + id: 'workset.add-repo', + label: 'Add Repository', + category: 'workset', + icon: GitBranch, + when: () => store().activeWorksetId !== null, + execute: () => { + const s = store(); + s.setActivePage('command-center'); + s.setCommandCenterSection('repositories'); + }, + }, + // ── Workspace ─────────────────────────────────────────────── { id: 'workspace.create', @@ -218,4 +236,43 @@ registerCommands([ } }, }, + { + id: 'app.toggle-theme', + label: 'Toggle Light/Dark Theme', + category: 'app', + icon: Sun, + execute: () => { + const s = store(); + const current = getThemeById(s.activeThemeId); + if (!current) return; + if (current.group === 'dark') { + const firstLight = themes.find((t) => t.group === 'light'); + if (firstLight) s.setTheme(firstLight.id); + } else { + const firstDark = themes.find((t) => t.group === 'dark'); + if (firstDark) s.setTheme(firstDark.id); + } + }, + }, + { + id: 'app.appearance-settings', + label: 'Open Appearance Settings', + category: 'app', + icon: Palette, + execute: () => { + const s = store(); + s.setActivePage('settings'); + s.setSettingsSection('appearance'); + }, + }, + + // ── Individual themes ─────────────────────────────────────── + ...themes.map((t) => ({ + id: `theme.${t.id}`, + label: `Theme: ${t.name}`, + category: 'app' as const, + icon: t.group === 'dark' ? Moon : Sun, + when: () => store().activeThemeId !== t.id, + execute: () => store().setTheme(t.id), + })), ]); diff --git a/OPUS-tauri-app/src/components/layout/SecondarySidebar.tsx b/OPUS-tauri-app/src/components/layout/SecondarySidebar.tsx index c394cac1..4ceabd31 100644 --- a/OPUS-tauri-app/src/components/layout/SecondarySidebar.tsx +++ b/OPUS-tauri-app/src/components/layout/SecondarySidebar.tsx @@ -16,10 +16,6 @@ export function SecondarySidebar() {
Command Center
- - ); -} - // --------------------------------------------------------------------------- // Repositories // --------------------------------------------------------------------------- diff --git a/OPUS-tauri-app/src/components/pages/Settings/AppearanceSection.css b/OPUS-tauri-app/src/components/pages/Settings/AppearanceSection.css new file mode 100644 index 00000000..11ae2aef --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Settings/AppearanceSection.css @@ -0,0 +1,82 @@ +.appearance-group { + margin-bottom: var(--space-4); +} + +.appearance-group__label { + font-size: 12px; + font-weight: 500; + color: var(--muted); + margin-bottom: var(--space-2); +} + +.appearance-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: var(--space-3); +} + +.theme-card { + display: flex; + flex-direction: column; + gap: var(--space-2); + padding: 0; + background: none; + border: 2px solid var(--border); + border-radius: var(--radius-md); + cursor: pointer; + overflow: hidden; + transition: border-color var(--transition-fast); +} + +.theme-card:hover { + border-color: var(--border-active); +} + +.theme-card--active { + border-color: var(--accent); +} + +.theme-card__preview { + height: 64px; + padding: 8px; + display: flex; + flex-direction: column; + gap: 4px; + position: relative; +} + +.theme-card__preview-panel { + flex: 1; + border-radius: 2px; + padding: 6px 8px; + display: flex; + flex-direction: column; + gap: 3px; +} + +.theme-card__preview-line { + height: 3px; + width: 70%; + border-radius: 1px; +} + +.theme-card__preview-line--short { + width: 45%; +} + +.theme-card__preview-accent { + position: absolute; + bottom: 8px; + right: 8px; + width: 8px; + height: 8px; + border-radius: 50%; +} + +.theme-card__label { + padding: 0 var(--space-2) var(--space-2); + font-size: 12px; + font-weight: 500; + color: var(--text); + text-align: center; +} diff --git a/OPUS-tauri-app/src/components/pages/Settings/AppearanceSection.tsx b/OPUS-tauri-app/src/components/pages/Settings/AppearanceSection.tsx new file mode 100644 index 00000000..9e71292c --- /dev/null +++ b/OPUS-tauri-app/src/components/pages/Settings/AppearanceSection.tsx @@ -0,0 +1,72 @@ +import { useAppStore } from '@/state/store'; +import { themes } from '@/styles/themes'; +import type { ThemeDefinition } from '@/styles/themes'; +import './AppearanceSection.css'; + +function ThemeCard({ theme, active, onSelect }: { + theme: ThemeDefinition; + active: boolean; + onSelect: () => void; +}) { + const t = theme.tokens; + return ( + + ); +} + +export function AppearanceSection() { + const activeThemeId = useAppStore((s) => s.activeThemeId); + const setTheme = useAppStore((s) => s.setTheme); + + const darkThemes = themes.filter((t) => t.group === 'dark'); + const lightThemes = themes.filter((t) => t.group === 'light'); + + return ( +
+

Appearance

+ +
+
Dark
+
+ {darkThemes.map((t) => ( + setTheme(t.id)} + /> + ))} +
+
+ +
+
Light
+
+ {lightThemes.map((t) => ( + setTheme(t.id)} + /> + ))} +
+
+
+ ); +} diff --git a/OPUS-tauri-app/src/components/pages/Settings/SettingsPage.tsx b/OPUS-tauri-app/src/components/pages/Settings/SettingsPage.tsx index b6035e99..1ce7a6d6 100644 --- a/OPUS-tauri-app/src/components/pages/Settings/SettingsPage.tsx +++ b/OPUS-tauri-app/src/components/pages/Settings/SettingsPage.tsx @@ -11,6 +11,7 @@ import { cliStatus, } from '@/api/diagnostics'; import type { EnvSnapshot, SessiondStatus, CliStatus } from '@/types/diagnostics'; +import { AppearanceSection } from './AppearanceSection'; import './SettingsPage.css'; export function SettingsPage() { @@ -20,6 +21,7 @@ export function SettingsPage() {

Settings

{section === 'app' && } + {section === 'appearance' && } {section === 'workset' && } {section === 'diagnostics' && }
diff --git a/OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.tsx b/OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.tsx index fb902e4e..25649900 100644 --- a/OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.tsx +++ b/OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.tsx @@ -6,6 +6,7 @@ import { WebLinksAddon } from '@xterm/addon-web-links'; import { ClipboardAddon } from '@xterm/addon-clipboard'; import { Unicode11Addon } from '@xterm/addon-unicode11'; import { useAppStore } from '@/state/store'; +import { useTerminalTheme } from '@/styles/ThemeProvider'; import { ptyBootstrap } from '@/api/pty'; import { onEvent } from '@/api/events'; import '@xterm/xterm/css/xterm.css'; @@ -20,6 +21,7 @@ type Props = { }; export function TerminalSurface({ workspaceName, terminalId }: Props) { + const termTheme = useTerminalTheme(); const containerRef = useRef(null); const terminalRef = useRef(null); const fitAddonRef = useRef(null); @@ -82,28 +84,7 @@ export function TerminalSurface({ workspaceName, terminalId }: Props) { cursorBlink: true, scrollback: 10000, allowProposedApi: true, - theme: { - background: '#0a0a0c', - foreground: '#ececee', - cursor: '#818cf8', - selectionBackground: 'rgba(129, 140, 248, 0.3)', - black: '#19191b', - brightBlack: '#737380', - red: '#f87171', - brightRed: '#fca5a5', - green: '#34d399', - brightGreen: '#6ee7b7', - yellow: '#fbbf24', - brightYellow: '#fde68a', - blue: '#818cf8', - brightBlue: '#a5b4fc', - magenta: '#c084fc', - brightMagenta: '#d8b4fe', - cyan: '#67e8f9', - brightCyan: '#a5f3fc', - white: '#ececee', - brightWhite: '#ffffff', - }, + theme: termTheme, }); const fitAddon = new FitAddon(); @@ -257,5 +238,13 @@ export function TerminalSurface({ workspaceName, terminalId }: Props) { }, [workspaceName, terminalId, writePty, resizePty, startPtySession, updatePtyStatus, updatePtyModes, updateTabTitle, enqueueOutput, flushAck]); + // Live-update terminal theme without recreating the PTY session + useEffect(() => { + const term = terminalRef.current; + if (term && openedRef.current) { + term.options.theme = termTheme; + } + }, [termTheme]); + return
; } diff --git a/OPUS-tauri-app/src/state/slices/uiSlice.ts b/OPUS-tauri-app/src/state/slices/uiSlice.ts index c421a804..cc182206 100644 --- a/OPUS-tauri-app/src/state/slices/uiSlice.ts +++ b/OPUS-tauri-app/src/state/slices/uiSlice.ts @@ -1,8 +1,8 @@ import type { StateCreator } from 'zustand'; export type NavPage = 'command-center' | 'spaces' | 'settings'; -export type CommandCenterSection = 'overview' | 'repositories' | 'diagnostics'; -export type SettingsSection = 'app' | 'workset' | 'diagnostics'; +export type CommandCenterSection = 'repositories' | 'diagnostics'; +export type SettingsSection = 'app' | 'appearance' | 'workset' | 'diagnostics'; export type ModalState = { type: string; @@ -15,20 +15,23 @@ export type UiSlice = { settingsSection: SettingsSection; rightPanelCollapsed: boolean; activeModal: ModalState; + activeThemeId: string; setActivePage: (page: NavPage) => void; setCommandCenterSection: (section: CommandCenterSection) => void; setSettingsSection: (section: SettingsSection) => void; toggleRightPanel: () => void; openModal: (type: string, props?: Record) => void; closeModal: () => void; + setTheme: (id: string) => void; }; export const createUiSlice: StateCreator = (set) => ({ activePage: 'spaces', - commandCenterSection: 'overview', + commandCenterSection: 'repositories', settingsSection: 'app', rightPanelCollapsed: false, activeModal: null, + activeThemeId: 'dark', setActivePage: (page) => set({ activePage: page }), setCommandCenterSection: (section) => set({ commandCenterSection: section }), @@ -36,4 +39,5 @@ export const createUiSlice: StateCreator = (set) => ({ toggleRightPanel: () => set((s) => ({ rightPanelCollapsed: !s.rightPanelCollapsed })), openModal: (type, props) => set({ activeModal: { type, props } }), closeModal: () => set({ activeModal: null }), + setTheme: (id) => set({ activeThemeId: id }), }); diff --git a/OPUS-tauri-app/src/styles/ThemeProvider.tsx b/OPUS-tauri-app/src/styles/ThemeProvider.tsx new file mode 100644 index 00000000..8e9a4ba5 --- /dev/null +++ b/OPUS-tauri-app/src/styles/ThemeProvider.tsx @@ -0,0 +1,28 @@ +import { useEffect } from 'react'; +import { useAppStore } from '@/state/store'; +import { getThemeById, DEFAULT_THEME_ID } from './themes'; +import type { ITheme } from '@xterm/xterm'; + +export function ThemeProvider() { + const activeThemeId = useAppStore((s) => s.activeThemeId); + + useEffect(() => { + const theme = getThemeById(activeThemeId) ?? getThemeById(DEFAULT_THEME_ID)!; + const root = document.documentElement; + + root.dataset.theme = theme.id; + root.style.setProperty('color-scheme', theme.group); + + for (const [prop, value] of Object.entries(theme.tokens)) { + root.style.setProperty(prop, value); + } + }, [activeThemeId]); + + return null; +} + +export function useTerminalTheme(): ITheme { + const activeThemeId = useAppStore((s) => s.activeThemeId); + const theme = getThemeById(activeThemeId) ?? getThemeById(DEFAULT_THEME_ID)!; + return theme.terminal; +} diff --git a/OPUS-tauri-app/src/styles/themes.ts b/OPUS-tauri-app/src/styles/themes.ts new file mode 100644 index 00000000..a9e947e9 --- /dev/null +++ b/OPUS-tauri-app/src/styles/themes.ts @@ -0,0 +1,335 @@ +import type { ITheme } from '@xterm/xterm'; + +export type ThemeDefinition = { + id: string; + name: string; + group: 'dark' | 'light'; + tokens: Record; + terminal: ITheme; +}; + +// ── Dark: Default ───────────────────────────────────────────── +const dark: ThemeDefinition = { + id: 'dark', + name: 'Dark', + group: 'dark', + tokens: { + '--bg': '#0a0a0c', + '--panel': '#111113', + '--panel-strong': '#19191b', + '--panel-soft': '#0f0f11', + '--surface': '#19191b', + '--surface-hover': '#202023', + '--text': '#ececee', + '--muted': '#737380', + '--border': 'rgba(255, 255, 255, 0.07)', + '--border-active': 'rgba(255, 255, 255, 0.12)', + '--accent': '#818cf8', + '--accent-soft': 'rgba(129, 140, 248, 0.08)', + '--accent-border': 'rgba(129, 140, 248, 0.2)', + '--success': '#34d399', + '--success-soft': 'rgba(52, 211, 153, 0.08)', + '--success-border': 'rgba(52, 211, 153, 0.18)', + '--warning': '#fbbf24', + '--warning-soft': 'rgba(251, 191, 36, 0.08)', + '--warning-border': 'rgba(251, 191, 36, 0.18)', + '--danger': '#f87171', + '--danger-soft': 'rgba(248, 113, 113, 0.08)', + '--danger-border': 'rgba(248, 113, 113, 0.18)', + }, + terminal: { + background: '#0a0a0c', + foreground: '#ececee', + cursor: '#818cf8', + selectionBackground: 'rgba(129, 140, 248, 0.3)', + black: '#19191b', + brightBlack: '#737380', + red: '#f87171', + brightRed: '#fca5a5', + green: '#34d399', + brightGreen: '#6ee7b7', + yellow: '#fbbf24', + brightYellow: '#fde68a', + blue: '#818cf8', + brightBlue: '#a5b4fc', + magenta: '#c084fc', + brightMagenta: '#d8b4fe', + cyan: '#67e8f9', + brightCyan: '#a5f3fc', + white: '#ececee', + brightWhite: '#ffffff', + }, +}; + +// ── Dark: Midnight ──────────────────────────────────────────── +const midnight: ThemeDefinition = { + id: 'midnight', + name: 'Midnight', + group: 'dark', + tokens: { + '--bg': '#080b14', + '--panel': '#0d1120', + '--panel-strong': '#141929', + '--panel-soft': '#0a0e18', + '--surface': '#141929', + '--surface-hover': '#1a2035', + '--text': '#e2e8f0', + '--muted': '#64748b', + '--border': 'rgba(148, 163, 184, 0.08)', + '--border-active': 'rgba(148, 163, 184, 0.14)', + '--accent': '#60a5fa', + '--accent-soft': 'rgba(96, 165, 250, 0.08)', + '--accent-border': 'rgba(96, 165, 250, 0.2)', + '--success': '#34d399', + '--success-soft': 'rgba(52, 211, 153, 0.08)', + '--success-border': 'rgba(52, 211, 153, 0.18)', + '--warning': '#fbbf24', + '--warning-soft': 'rgba(251, 191, 36, 0.08)', + '--warning-border': 'rgba(251, 191, 36, 0.18)', + '--danger': '#f87171', + '--danger-soft': 'rgba(248, 113, 113, 0.08)', + '--danger-border': 'rgba(248, 113, 113, 0.18)', + }, + terminal: { + background: '#080b14', + foreground: '#e2e8f0', + cursor: '#60a5fa', + selectionBackground: 'rgba(96, 165, 250, 0.3)', + black: '#141929', + brightBlack: '#64748b', + red: '#f87171', + brightRed: '#fca5a5', + green: '#34d399', + brightGreen: '#6ee7b7', + yellow: '#fbbf24', + brightYellow: '#fde68a', + blue: '#60a5fa', + brightBlue: '#93c5fd', + magenta: '#c084fc', + brightMagenta: '#d8b4fe', + cyan: '#67e8f9', + brightCyan: '#a5f3fc', + white: '#e2e8f0', + brightWhite: '#ffffff', + }, +}; + +// ── Dark: Ember ─────────────────────────────────────────────── +const ember: ThemeDefinition = { + id: 'ember', + name: 'Ember', + group: 'dark', + tokens: { + '--bg': '#0e0b09', + '--panel': '#161210', + '--panel-strong': '#1e1916', + '--panel-soft': '#12100e', + '--surface': '#1e1916', + '--surface-hover': '#27211d', + '--text': '#f0ebe6', + '--muted': '#8a7e74', + '--border': 'rgba(255, 235, 210, 0.07)', + '--border-active': 'rgba(255, 235, 210, 0.12)', + '--accent': '#f59e0b', + '--accent-soft': 'rgba(245, 158, 11, 0.08)', + '--accent-border': 'rgba(245, 158, 11, 0.2)', + '--success': '#34d399', + '--success-soft': 'rgba(52, 211, 153, 0.08)', + '--success-border': 'rgba(52, 211, 153, 0.18)', + '--warning': '#fbbf24', + '--warning-soft': 'rgba(251, 191, 36, 0.08)', + '--warning-border': 'rgba(251, 191, 36, 0.18)', + '--danger': '#f87171', + '--danger-soft': 'rgba(248, 113, 113, 0.08)', + '--danger-border': 'rgba(248, 113, 113, 0.18)', + }, + terminal: { + background: '#0e0b09', + foreground: '#f0ebe6', + cursor: '#f59e0b', + selectionBackground: 'rgba(245, 158, 11, 0.3)', + black: '#1e1916', + brightBlack: '#8a7e74', + red: '#f87171', + brightRed: '#fca5a5', + green: '#34d399', + brightGreen: '#6ee7b7', + yellow: '#f59e0b', + brightYellow: '#fde68a', + blue: '#60a5fa', + brightBlue: '#93c5fd', + magenta: '#c084fc', + brightMagenta: '#d8b4fe', + cyan: '#67e8f9', + brightCyan: '#a5f3fc', + white: '#f0ebe6', + brightWhite: '#ffffff', + }, +}; + +// ── Light: Default ──────────────────────────────────────────── +const light: ThemeDefinition = { + id: 'light', + name: 'Light', + group: 'light', + tokens: { + '--bg': '#f8f8fa', + '--panel': '#ffffff', + '--panel-strong': '#f0f0f2', + '--panel-soft': '#fafafa', + '--surface': '#f0f0f2', + '--surface-hover': '#e8e8ec', + '--text': '#1a1a1e', + '--muted': '#6e6e7a', + '--border': 'rgba(0, 0, 0, 0.08)', + '--border-active': 'rgba(0, 0, 0, 0.15)', + '--accent': '#6366f1', + '--accent-soft': 'rgba(99, 102, 241, 0.08)', + '--accent-border': 'rgba(99, 102, 241, 0.2)', + '--success': '#059669', + '--success-soft': 'rgba(5, 150, 105, 0.06)', + '--success-border': 'rgba(5, 150, 105, 0.18)', + '--warning': '#d97706', + '--warning-soft': 'rgba(217, 119, 6, 0.06)', + '--warning-border': 'rgba(217, 119, 6, 0.18)', + '--danger': '#dc2626', + '--danger-soft': 'rgba(220, 38, 38, 0.06)', + '--danger-border': 'rgba(220, 38, 38, 0.18)', + }, + terminal: { + background: '#f8f8fa', + foreground: '#1a1a1e', + cursor: '#6366f1', + selectionBackground: 'rgba(99, 102, 241, 0.2)', + black: '#1a1a1e', + brightBlack: '#6e6e7a', + red: '#dc2626', + brightRed: '#ef4444', + green: '#059669', + brightGreen: '#10b981', + yellow: '#d97706', + brightYellow: '#f59e0b', + blue: '#6366f1', + brightBlue: '#818cf8', + magenta: '#9333ea', + brightMagenta: '#a855f7', + cyan: '#0891b2', + brightCyan: '#06b6d4', + white: '#e8e8ec', + brightWhite: '#ffffff', + }, +}; + +// ── Light: Dawn ─────────────────────────────────────────────── +const dawn: ThemeDefinition = { + id: 'dawn', + name: 'Dawn', + group: 'light', + tokens: { + '--bg': '#faf8f5', + '--panel': '#fffefa', + '--panel-strong': '#f2efe9', + '--panel-soft': '#fdfbf8', + '--surface': '#f2efe9', + '--surface-hover': '#e9e5de', + '--text': '#1c1917', + '--muted': '#78716c', + '--border': 'rgba(0, 0, 0, 0.07)', + '--border-active': 'rgba(0, 0, 0, 0.13)', + '--accent': '#7c3aed', + '--accent-soft': 'rgba(124, 58, 237, 0.06)', + '--accent-border': 'rgba(124, 58, 237, 0.18)', + '--success': '#059669', + '--success-soft': 'rgba(5, 150, 105, 0.06)', + '--success-border': 'rgba(5, 150, 105, 0.18)', + '--warning': '#d97706', + '--warning-soft': 'rgba(217, 119, 6, 0.06)', + '--warning-border': 'rgba(217, 119, 6, 0.18)', + '--danger': '#dc2626', + '--danger-soft': 'rgba(220, 38, 38, 0.06)', + '--danger-border': 'rgba(220, 38, 38, 0.18)', + }, + terminal: { + background: '#faf8f5', + foreground: '#1c1917', + cursor: '#7c3aed', + selectionBackground: 'rgba(124, 58, 237, 0.2)', + black: '#1c1917', + brightBlack: '#78716c', + red: '#dc2626', + brightRed: '#ef4444', + green: '#059669', + brightGreen: '#10b981', + yellow: '#d97706', + brightYellow: '#f59e0b', + blue: '#7c3aed', + brightBlue: '#8b5cf6', + magenta: '#c026d3', + brightMagenta: '#d946ef', + cyan: '#0891b2', + brightCyan: '#06b6d4', + white: '#e9e5de', + brightWhite: '#ffffff', + }, +}; + +// ── Light: Paper ────────────────────────────────────────────── +const paper: ThemeDefinition = { + id: 'paper', + name: 'Paper', + group: 'light', + tokens: { + '--bg': '#f5f5f5', + '--panel': '#fafafa', + '--panel-strong': '#ebebeb', + '--panel-soft': '#f7f7f7', + '--surface': '#ebebeb', + '--surface-hover': '#e0e0e0', + '--text': '#171717', + '--muted': '#636363', + '--border': 'rgba(0, 0, 0, 0.09)', + '--border-active': 'rgba(0, 0, 0, 0.16)', + '--accent': '#0d9488', + '--accent-soft': 'rgba(13, 148, 136, 0.06)', + '--accent-border': 'rgba(13, 148, 136, 0.18)', + '--success': '#059669', + '--success-soft': 'rgba(5, 150, 105, 0.06)', + '--success-border': 'rgba(5, 150, 105, 0.18)', + '--warning': '#d97706', + '--warning-soft': 'rgba(217, 119, 6, 0.06)', + '--warning-border': 'rgba(217, 119, 6, 0.18)', + '--danger': '#dc2626', + '--danger-soft': 'rgba(220, 38, 38, 0.06)', + '--danger-border': 'rgba(220, 38, 38, 0.18)', + }, + terminal: { + background: '#f5f5f5', + foreground: '#171717', + cursor: '#0d9488', + selectionBackground: 'rgba(13, 148, 136, 0.2)', + black: '#171717', + brightBlack: '#636363', + red: '#dc2626', + brightRed: '#ef4444', + green: '#059669', + brightGreen: '#10b981', + yellow: '#d97706', + brightYellow: '#f59e0b', + blue: '#2563eb', + brightBlue: '#3b82f6', + magenta: '#9333ea', + brightMagenta: '#a855f7', + cyan: '#0d9488', + brightCyan: '#14b8a6', + white: '#e0e0e0', + brightWhite: '#ffffff', + }, +}; + +export const themes: ThemeDefinition[] = [dark, midnight, ember, light, dawn, paper]; + +export const DEFAULT_THEME_ID = 'dark'; + +export function getThemeById(id: string): ThemeDefinition | undefined { + return themes.find((t) => t.id === id); +} From cf6498af163ddd1564d78677ede1396c3d96e895 Mon Sep 17 00:00:00 2001 From: Tyler Biscoe Date: Mon, 9 Feb 2026 11:25:18 -0500 Subject: [PATCH 6/7] icons --- OPUS-tauri-app/src-tauri/icons/128x128.png | Bin 359 -> 15888 bytes OPUS-tauri-app/src-tauri/icons/128x128@2x.png | Bin 856 -> 52552 bytes OPUS-tauri-app/src-tauri/icons/32x32.png | Bin 103 -> 2698 bytes OPUS-tauri-app/src-tauri/icons/icon.icns | Bin 0 -> 1259702 bytes OPUS-tauri-app/src-tauri/tauri.conf.json | 3 ++- .../pages/CommandCenter/CommandCenterPage.tsx | 6 +++--- .../pages/Settings/SettingsPage.tsx | 4 ++-- .../pages/Spaces/CreateTabModal.tsx | 2 +- .../pages/Spaces/TerminalSurface.tsx | 1 - OPUS-tauri-app/src/state/slices/diffSlice.ts | 2 +- OPUS-tauri-app/src/state/slices/ptySlice.ts | 2 +- OPUS-tauri-app/tsconfig.tsbuildinfo | 1 + 12 files changed, 11 insertions(+), 10 deletions(-) create mode 100644 OPUS-tauri-app/src-tauri/icons/icon.icns create mode 100644 OPUS-tauri-app/tsconfig.tsbuildinfo diff --git a/OPUS-tauri-app/src-tauri/icons/128x128.png b/OPUS-tauri-app/src-tauri/icons/128x128.png index 3912b7c76b808061f976710f47b5e97411d6f25d..16016d0f7505a2dc3ad38a44648b3eedf55a891f 100644 GIT binary patch literal 15888 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 literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrVAS(;aSW-L^Y+q0Mg|3*0~_}C zJx`FC)0p8>@bJ%5syIn bP!!^Sx`{g=_?EH|0}yz+`njxgN@xNAId5fN diff --git a/OPUS-tauri-app/src-tauri/icons/128x128@2x.png b/OPUS-tauri-app/src-tauri/icons/128x128@2x.png index 6e60ab54298248afe67f2d0dcd96dbb56e68247b..5b9fa9a9aea32cee1cc7972cbfe7b53f7b4598c1 100644 GIT binary patch literal 52552 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 HoD!M<4TF;) diff --git a/OPUS-tauri-app/src-tauri/icons/32x32.png b/OPUS-tauri-app/src-tauri/icons/32x32.png index 08919484336920447c2e580a19030c5abb31f692..89b5df54cea565f91c6fed4ac3b603d0b0275037 100644 GIT binary patch literal 2698 zcmZ`*c|4SR7k{jSELkH}%Po7uhb+MQ)am zYz-oVT)L=~^-83Xgf`nds<(ST@8^A=&*wbnJm2&Ep7T5B_s^4NZ-*4%JIV(DfPj^y znFGs%4~&PK^(IF|Y_c4u-!Hbm06;_5p&cyOLDJjO!4?1_lmQ?%5dglhpx9*q2vrAw z6;A-r%LjlX#G*D7f|W4CVXS;@ZGn@lm!2_JEh>c}OSq1s-`g~8NV3^j6iFa=9f3nnXkEApQ@W;n7p2~VWp3Blll zx>zqlD8)ct{-Dv1=i51PH2mM4g2~^d+sxSyIFSs%J_FB#_P$vEDdC z4a8UCKcT<7d}G_=X}Ca)89oRXOlFbvT{Q~y)y{Qsr@NPU+gpa%p0V*%f` z`xRxa*N_hZ{c%->eBG=1)c^ouTABTV#_%>fMH10YQv1{7W7~{`;ovaS0yC56JiK5p zJSaU0%-3wGcGvDPs-`$jz3(-@=E|{5+2Rljzp6}_oecZkvyazN)>37f*8NYw=+cg( zS5=ejO)PnAwO$r8-$s9lrc%d-U!iu&kCQ)6O>Gyiecryfz+W0ZkGmSnQv1NE{u+>``}8xnTCV#wHG$r&kM!jzVio%B0uLB~#Z5=Z3* zw4vH?xDsjDYEp<1yHpu@v2mBK_E>hhCE^0I{~=Dxr$9nvfK%p0i5RtL;Cx%i@<_4r zvB5j+K27@dKIWOX3ho$Hso^__SbC1|qtw#!a)o-owM+Dv?MJQs44pujvLdgDTVrOC zlcGV5%8B?JDx>Hvf8za*uc?Iv$(Uzu-8n|>+sKqmdbrn6R~I1mVb5DiF!4rD4Zfc* z*AX!pwww)Vl$}5H7O^)X+HSPGx+|H{sFXJ7k7}(jm$caw>k(Lc=#0(RYhl> zgHZMBC)%_=-2`4g=XpLVVa z2gckNSt{fXdB3GUD$3b45Lj_XUYBR6My__-VUx72SInb0K|&juT$oE+84wpkiFNl_lP91yC>#0s?qGFTT?v29ooqtZO-*- z$Bogbh*ZEbXg>4O|{c|#v?AS#HxPqa@dF%FOL69pq)Q2 zLtLck#3`%CU~~rBmu}N)4d=X>ZEUs3?lFcFbIe|V@jUP;`V5QIF|&5TXrvC2Q{MQW zYa`9R7$0)z^I~*6c%AN7i>&*B1qmrwmT6 zXmLh&`N`#HE!1gUNlX|H7z}xzQ7Czw-{(RRN^`@;nxSB;0HPraL$W!h_C=PmR!XEo zzO*2~*o#ZNmuJuMOtMcjKqwN`I<#4}%Nd(KnNH8o-mGQVkVF zpUUp@n^O60E<31S4ay(9jT{5VL@b&bwUU};wZsj%6ki2!q{|I9jifWL|GCG?caJ!tgN}cZI z7@x*pCU(TL-&TPp^ng;CoJ4jd7>`0`gSK>zzmb4KJup(&fRX~V?sGN?@l>UE#k4sW zl;;rJUUcVFWpJFAjaqAz5IlqV^Z-hji=fEJ{c3{Cx7%ofSISscU;i>>$0!hba$8GL z-v#BW_RgX`!=G-fe#Xi#V5J~ea==w{03}_y_dF}Aj^8NG>o*Jd*8Gp}@wioUy$v}7R<^J}eryFXRL#c-N-fQ|Ok!+VqUZjHw;c&A01Xb<0a#kKBhrpRCq1!4o3dDYbP~d zk|mmVTctVVtPrL~>5-{s?01l1;07#v{?euxwd98 zRlS(SJ(IsTo3p34Lv(iGI`bBFdGH7X^6>plIFi0I{;E>D)=mG9p0nAc{ayWWw$9r# zqrkH~5~9P`t2m-rglb0w}^K_7McJ6 diff --git a/OPUS-tauri-app/src-tauri/icons/icon.icns b/OPUS-tauri-app/src-tauri/icons/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..f0ab7744600de4f5ffa4d271f5d27d1ae3680c38 GIT binary patch literal 1259702 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͸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

q7Ro~M6nF{n{(#NfSGCvw+NJH*7i?{R z_5QdlzyYzJ7LZ2kt|QZl0WNQ(BW6{~eptm5djVgp7;DN?o_3U^`2p855VVLbt$F9G_lf93Hs08ao!c}7nH@E9P@ z4}*vjzep|(ixCm0#8B%V3;bXYV>W2gV0xexdu*S$k)kDo?2`Bpo$&vR@lx!&$Fu#9 z7v5bzG$K8BLziJ6uZCC*;7O`CP%uvr6+X8-p6=Jt=(<~8*tWgtcQx(*5^cP7?70v( zq1uKs9po;$SPM`XqD$ImH$cP!9LQFTJ*f;E^Ck=^0M102M*D6v;&jz9nhF9p$ zt+m%Zv#rxh;TL8OwAlyl_PYhR$ky9og9!_dqaq({4WHFefNqJx7g%}hbdW2BOXG3C`fX_t4;~$BkO_~Alwf^4t@<)0_qrJh3R>3V% ztWrMFdV04UyufFR$2e^|@8Z?%=I3o`+b&$)9@WzV2l8owDL-Kn`oqsOHgdXR?1s`f zrS1;}$;OSVfRs9OTnxctjdOFf2%4-FA+#kU=}0ktJZ{u)&KKEyqVQ_?IoUrWyqfI* zjoN=Ucy9nRe#^!a`$a$XgKz%Vc8Tq1J|S>q$N87N=aEP5JyKmaF$1t~=Gf)B1aR3g zU5kxt|2!uhcmMMg!122N4~Cd20LRKy`<6f65R`0m7UGR_p55Jmt@BjRx zHha$l>76LJH7Q{6)8~a%(SVJJx^>aeX=< zflxi<=t?~`emkKHqb*X+Aa&m$mmjtpmc#Qh7SRmR@GZ541&NjaZp+wLI^3_}~=m5^}u|1rRG`wOoR zex5E1T>s21?QSu^|XLmrxhkPi}IC~$N%BC#}PXK`8Du=@D14Z!hp6YSIJ@%G?M@z{~-xMZfn zPZ-~a^>W+4$p2H}C)YN$n?#cdGBMWJV0)l@C@$6KEiV&yk7cx&H~^SGK6U=|im8pf z-=7^k8@o6V(DbctMxo3%hPfQz4dFyoiMDZgSEW;vcgC#GRJfk_tJt?NV7!t_6{; z9WA8cvyfH z5Hxm3?kiPmKvB0(DHj!qSHB9=vDT1_p-^s4r6i3>nH;?EP1M8X$&k zYEku+kCj2l_zy7@P2hzC>V=kepvF~18TI_YvExaRa0=xxq02twjJx}Ja~~h=d8zL1 zzvPNFz68JlK_r~Wl1O&PRqRDXSk}R!)r((!9#TJfJaIU7WWfhHzxb|;H6x(=13vIb z`|elv`!Q@@V@z_3)JXeXP0x;YcSvRh@l)=dK*<2ERD#JvcAUnLA&MaZ59>bcvK}v@ z{|LU6Io?`U8cGHyM^qT@FoUAJ2tR>EVZwT0DZIy3AWy)Dib2tn5}$q7eN|zUddpOZ zaZC@!`r@I$B4ZFkgZlKw**16nNX_H{faG`Z_N)b6@9fY1Yp2f}0OO|v0`L6Q`O<19 zuuBryBaV%RQp6Oa)RSkraAE=*@W_Q&$S;L2y(4^K&{pNLFLk!t?VkmH?4%onUnBcz zBJ6~@?tk%YR*D`Myp-eP$=ZKf{|CQ@9?3YB+A={sQ}1f(wjT^OIqVquD&NLu{jA>P z_a?p3Z--`%^cKH)W>1yenn{@=b#Cvq$vq06plP%7B8mcfwkgmXqdH zw_e(61gIQRgCa^foCZAzf+^?WSSV>OV>epZMG=E$r6`FcvQ+`Iw-i$4(EmxZP60+f zTMJ4^0*qN<3dL9^r63v1j1S*%;P;fLuG4k?3)=O!ZT5k{F+E$)!AtB8J39JHbW&&> z+KXb^SSBhTWbICQ@)N~#lEvzB`8Dg?JO8&U+PA;B-}eVRaQ9)~8=#Xkb#1h;J50<( z;^lAL0Oo_c=sd@x+UdTeM@gO2+fR}ua{O3n znzN+J!}uF4o-@R5eySTb znwSC5u({DYdQJ6n0N|g?;#6G+2fQ4JL7J|~L0O?na*jbPSDixCYutul4j$t}-_rQh zg{9Pw#$mu=e-S?Ig}%oLUpAKVzj*fdB=$?@Cx&+v38cdmmokEe$BQ>ILF>}SRlhFi z^U(Co+Na&tHog4KZOzp;hTb_o*pvM%1=&lYsjLbcW%NcrQD^Wf*UtxAW)1ipcEdPG z9Vk#S)x_Y>R-xU=JAl%gIXe-{0amgvUQk)I*%KY#;>=V96e=+rc6?#BtHEAGDb}zF|He8A36wKqD4upNWMCH`@$HG1{AL!xZMc4QvL%Z7Fd~~Po515O`28p-3Mho_snm&t@EBThe z=sN;LEvtfCKu$`c$5XV)%UlE{qE@nw0E|rTap7zHB39w!`##40l@KgUEk4bqc$&Z`)oiR0BB8! z>3?*@0F4z_)`no^DYT9V(iUrH<*0>{Df`1TDRq-%H2iWa zRVIEVuiRy6C?%?wPFQi!Ux2bpK6sMaQWv%G$tW3TC%a15yq}{_^}ghnF3_iXSNm-E zm_9#Fq6bK!(M8kBYEdTZK^>z`iI*QfX45!&W~jshthzjWua$`XExw?Teo3Fd&L_sY&SiJw+TMlzW(_=K1iC@TLwKQ z3?6(UOg<)%#_H2Lt1dg_Wzl_PLHf~*KFc!EfAB_w5MCtZ!kaDQ2pn8nqSQ!AK zKQ3d&_$!R+5;JO8gv?`!$H#NAKgMS>qs`0o|4i_s*!K8M;D-@KED2NW^l4%6oNFI1 zZch^j06NV-f7szmoP&Ve@pHz{eE>xpwx;Nc4v&7OSLx*FL8dZQvWyEjN2=VFGsUM3 zV_BR6pN&s5VHZd7v8Qvz4{F^xk zJt(MCQG#0osMgcYO#8-2XhDzgO>f-VHu^gM&+A?K=jjrF9_!=!xMV{-txB_imG_-2S6i|3sLW%Oa%`0?<2plJEtygGcef+4tS@Gi^wYf*`Z}amk;3OFQ%kn+I4p`chQTl1g6@CdhQKW^`1!Ws zrswJ2fIn>q{`wYivnw7A=2tdXm9I{WffRA7qC+|t^ zlALFDYytfMm7H0LE7*5RHdSIYk;(?(^egyCDVD;~EUPhqV6Ozoc>&vEvw zj9qm3+V+-zc6qy19~t`O2Oe%e`pzNWdy3zVx*FnE$_=-Py2^OPGIC2~*^I!zHxAH% zs~vO-DGM#3cvl4Df`~{I~lhaKb9@bn3nc)pJdL2 z{ju!n@Bo*vZ+&8o@}>Ph9X|P3>AFHww0~)Q+4cU`?kT2<8=>RAs^A+taSuTEk&gf! zo_pl;M~=?kvU|^-wtxSDw*P>B`wzB#2llsp`wp}NqV3&Jd7mB&jHz9zUX;>7sHL4z zRY{!?8zm7&F*;;Z92jZX zf<%|;ntofkrmegAg>AFW`d99_iaWJrLTB572)Dx=3iQjJoQhEk!7f78mE4d8I}Zv< zsx}m|qH#1et@raQHb)=6yUl#(%WdZCpKG%Z-reR89S~WKlh}%N8yfHR-=x7Yg$+#I`L(z%VTq;pn*kOQkIbd)(dW zAPp6>JEbDN65_-}3kHFqG%}BZ1Q<_MKVIgu{i4;8+M+}Zy6qmQ;-ItW;)7xql?1wZY4xgUYY@~(L5 z`gZ#-T-a{@nQgkMnlBDAVup0a_6Mj-r^Mr{ju7$dh`uNArBCl_pZ)O8w(DViLDRDV zF@hW}DH>nb&n(Hkc!70KL?RO+3;vG<}We}GcKjXD<=p9Tg z_!qubDpa9xa+8%N%wv%tiUy<}PD3;!wECJ`+UA$Ov8{RPtw_YwHwDSoG$U2&z5lb0 z>d-k5YNuE95+V1sMD&zT_`^H-wG%&b&-dH@&wZpF{`ME!-2Oct^vvD*NLgaw9rt|g z@WyAoq-}rAyW8rEF853YJT_c)$26*`SG@42{Dc zH{0HizNa1j{@21cwWU;694uevR*YG3$i4DpCO&+c<(ecOw-wcCI3ymr1m+sn;w;~O9WqKRenRxE=y z_=NqFrPJZrnKHZijlbL5KB-Ul-goCgZ%o-t+LB-zLbbg^%iOf?O7;^#(a_b|{QmW1qC3pT=V= zd@Wgd<#A z3Qi(}*HZ|d(EjD%84Jt;)sDaK^x3{?H0Y;q{D?pG(A2`3=YQ{Oe{nZv`z3(cg}L)( z=RDr`ANK*M^EB9*mSftVn*;l0fb`majkYXqRuHAyg;D#m(W9-~lLt>Ia%Er2e`xM4 zWlQ=GJ6EJ7@E$YEz&luDymWGOcSd+z0Yq|!Usfs)l)E@=o;?O3XZHlq)F>jaF~Hj) zd0+pg7yXJ}A#?jg}dl5XpX$!y^d39?gzl zY3BQ1)nj)bYKOn~_dc6uE68;J;$$`Wqi+r{mJj~j$GrpI_Ud=EEzf^dJI=v^ZeGmr zlxK>Ukbsq{XdjCfEQ{cM_@6|B@H;kx_8%HgLdchOPrIe9z3TdQ=&OIz_I~`mZT8+f zbmz8KQ27#?B-<6b1+K@2S_}sVg@c&IyCE16FAL>j%m!(UTHu2gH8Pqess&TpnK+fB zi*juQDdzg$@z#WpLCP~_m3H`@BC>h4run(9ebo*60F?N1M>*>cO%Yf5B|3e8K6|P9 zCHq@m==c`obPv^5iqZI>mMyv$>((w&+8S|B9>EJCUQq z1B0Js3)V!i&Li-c%&|&v9_~<=)F=eyBb`~fH ztTuQ2_<6^t=D7@Tw|=d^3Ggj%d-u~+|Hp@B4!5Iz^WUuB1b9?a{k##7Jj%Mxsxk)! zaZN&+F@^ybWriaTv^!BZW7LS?ctsA-sqtt-AuSlC#||I*PwM|^?F%p8mcmE)Pv`$* zgO8xs#y!F%&2nv6Qp{lzRAL(JA$N>}$o1^0^_$wp7yVM(_RIgYt-UtS`nl`hx&vki z6#Z8>6~C(sAuW-U7Z%Xa^_Hebsw=EvGo^R#PwD7&_QyYLyZ-b)w%s57uWe4(`cdGW zxD}xsg_EgMB*P7Y3o{4Xp>KY^9ligDZOz4(x0Ty26abGS5XiGK6|So`J=-Q`@uRKC zt27qw5BV7%U_J!_uw)VASSFV?G(x3$@a?rrl2_Gv9;y%{OTrVW)f5mFB&D|A6c zyFZFy7f8Qsyf8!i%70omPzTjkD-NS7Twz)Dut&X9yfI6s3=R$8*%LYoGYw!|enA;Xa-9&v=K) zG-^O28k1u)Vgw#LysnqhL-!nRU;Esiws+TDyYSLAZSyt`IO%J%QD^yVqH2+#n^pu# zEyw>7FMQeBe$kqC%k#Ik^LMQE&5H;2=&~HgGO;iW3>zw+Wr~9X@wP$rj|Q9hX`uAS z;@`z>=sPbA*!+Q@#j zcEW#LtZf|5;~=RV?RZGRTnZnoW#CcaGks~xG0Y5+Psmgcnhsv4b;vt){D16v@UFXY zryl^k>Fw{lRRi{|Glyq%05BT|0X`7Wj-On=!>%7OKUP?b%5DDfkwtHgi@A^h9akyD zvJaPmkF8sw!xlOOU6%dCTO63Mb_ar$B<*DWpA#M*u~Vz|nc80_-eNXnbG@x9ROlmQ z<0XEP5F#rdx!%c*Y%BHp-rL*u*Zodgf7{FTf*U>8o_F_$rP2*9hH=?KD>C(Sq3R+! zqzJ(fs4g9VhewW1UcEcNcW2x47w>7iKJa_(s6NEw4Ha{r$XZ7%#^n*&MR@-CBR(tq z3g3fY{j7{=8v62UG^4TBmlaAOt%+z5mS`J_x(yYoT)8Pj#df_|MDvV{W>lsW&vn;5 zqiwk5xz;uJz`b#Q0Ix|d%qSKU_9bBd2$cJ;0D`J0m?gres9EQtV(A>AEe4$wEzga2 zkWzQp2$`~{ycA)_2||3dXU*Cb`T)-M_WFNvX}k93_+lTkiUmO&d%d28&=8f*vu?L; zkY5I#>3&dO|Jyz7kN?fR?W=#YTbHmH>XVwO4KWNmwZyb{QqHxH)qwy{2HgFy{d~%i|{c3(e8iY*4SLo@wwy1hD=Ev&I{>2|3q8`%X=!-hL+yZfr1~IDEJnKAqCOnRYP!cQ!1lxhHFXC=V@e{{VGqjF(fdw3Q3*OFi>?jP2&O^_PCLZMyySZH3NKd6^G8 zOJjv}t_6KWjXKt=j5;4ADu>4}7Li#J84-~+e-Pmm%?BF?zVw&vkw5%@+RV59E_Tpd zGq==U*a66xBSsH70FM;w@$aMXx-F zqZ-8}95PvUj%y}mS|3H)aP#xp+UuXu<~2hx_u#$0*TPQ=q$+3f#XEg%0dcE(qj+OO z2@6NvXi*?0V^qv`1S8^uSP2gFA@0Ggr4@{{5I&={VbesRudiRL=h)xy8#~%_U$I@+ z{o@tBg`-Vn4_u9-XrWtdYIqXM!jdls&yJC^{s;9koe%z}``cf=??JzBpSSB}7x!+e z?kY>v1$Qc1R(nQld}H3>h4%fg?QcK$`oXqVkM3P`**epQ1Dz8!EcPFz(GL-q@MqN9 z66g`GUt`M12{AGIy7 zdUsoS(G}ha`!ptXp^qP_);a7AXUXzR0`8&2gmg8(G-Mv&+z3d9=_>8~XYc(%d-T2k zvhDli``W^hLw>8?umdWMWmqZ}*&L1NOEDess8< zuXb;{V2wn1%j#GM8cB=&531?r68Ta42PabSL_9I(Kw#^6tNf9ni!~#$^TDIOOkvM^ z+tC{hrN2oW>_8#es_7v!n1*8kErLfCVhyvbhMbqBqjEH;WnEEh$%cciK`$Jpv`NKx zg+&cm$q=XFSGy27BYc>Vrjy$rIHf(}X#1zZ!+xys1inxC6DR$AAznG-jvc>`{kRcu zYT>&(AH4hHc-{{H-t@M2{o4Go`5O=E0Dvif&hk0)_e_8f0P-?`z5+Nqr)x_SX&fps zXkoPyIUIsO)|>7M1f@y5H$1S35~<^hILLXlnz>SipJ}E*KgK!{@3}epS%3&D`o?#XB@(A#cX#c{<+|c zN*J<*MIgK51&Ts8s#@xwOAHH#54OF3`A2Qn`~S73>3`&d0nM?dUT~2DH!c$ksKN2F z`n_nbmw!k~3YzqDCVoUS0W;tHf^4pAYj#|r8w=Npt}g%*tx#x#6kR1(0gaK8sw_$@ z)1HchT=B(5L>n;km=0Hc^<`J<{(zUX>8;y!f51I$VSn5oU}5Be=ogx!#)b!K`NL&~ z7&nu4k)A-OzEWnrMN>|(s)pubNxB7fm%OIKSL%g1KlAc!?RCGtqdoPOjdp@F(8bCU zGNNa^M#h%1U+h!ixkk^O{NMlT{`SZJ`rh`XPwvtUh}<0KO=GE;$jg@VtVC8E#2Gme z-wB?A@A!-8JF>OWedxX;dTGyI&o*3i+1j>oi|#|=dRL~dwHMB!{pdOgzHD(x;ud{! zc)dQLgim~A$nOs5ICRMWKB#)ZtsMqdI8FrURBxXUr5>b_FDW~yGQr|Tgz;K3hF$hT zQu4?8RX3;TOBf35B0O?n9tV7F7o&ygpA6YWFS5}mu|LL#WC)%u-X4t3{y7NpY=8=N zU_d-M5Kw-$i?!SA=*`deS(9WHOqs|`U|j-^3Xwn!c7B~mLP zBDRpQg!ByAV6l`WXSljI<*=sXcmC18Xa~RiiTK2>Z@0Ec0j$IKnhb~ew#5on(Foho zMgX=F2IZ#;{F7&*ff6SItm_qeX3hTIwfqjzo zX&K|cD9NCDLSn^)h<>$02VT>f1zD>n1~%OCJkfPF{op-*(GfR8hQU;lK80nwXg+mj zWh$LeDqb-vcVhwtX;d|_#9SFORpt(Qo|V7iY3th?esf2Afxg(cc0G^Bg}xY6(aO?8 zjw?ewVvK66SHy!KRA__ziFjhk0m#mWkG2p0w;#7Zf6oJL&!apipJ)A2Q_Z&-Eynta z2Gw*4hmYh@HX}P28Pfsg9;@Uy5a20Po)-Al7x(%lLl^6^0QW<9NP!*sgGKZ$-F_Re z#Ms~E;OQ4;Lax!Hi#I-JOPke4haSFPpLEwOjSmD+ohjN(MI{_jhF7&ckC!)fR*6J! z)rKQ=!5s93&T$)~wIysT){{p2cF0QX3u}nD6G{hMa#P31Hu8@no)%brU)sT;?WeF` zF$njxRG`P(5-T|k-U!Afe;%yl+ODeXnG<-FxeRdp_(MA%y8FN5b3Xuh<6GbH>-q}d zQ@96Uma~7Z{d*>0xCzjg0S+J43e9U?<&iqu27BZ2l3yg3hQ)|Tu*7(b@Pj>!*`P^- z>48@4v3&whqAjPzTXNF>GseqIyx1h-cS?NPt88dfP==O;_od5R4jv`|!DR=dt#w5YDVR81J~TNyAadul&(bc!4aRVokaRg#=Hd}1X#g+sPi66dkQ zS^t6EZP!QtOWXZt|H;$d%mmaW1?x{>=oHGYwhB(P8i6c%pm$65xBG1JfUxtZ85!}x zi0+u0d-Q=e!)1XzkNVTUzAR9uQ=`@yuEn^$#E+h>nFF?ovGJ5(+Jc5(RLMOa6+c%> zNd2^8!)6}@@c7{T!M*L+gZC-SnwgQ0=&Zh~!=HlERCHGysaJwNk;VZUF?*55kvbu& z)Q+{4-J%U*Y3d+o1Y;=AGf%G@|^a(qxw(I2a%yp(EWDD9sq+m>ys+l4#0ETCgcHEu$6Voz*8av?bpKaoz0mjJQkhR5}rR{9{|il=VSC4r-Q zi4gbqNJkunc4aYcWf5Z-;8*1s&?CFWlo&;ExR-`F_LRlQSXOI>GU`c&+1AK@u#%U` zEF6on>-~x<>=a}Bg~9|=q>TTST$Fs~XNOO{7*fDu{G5sXkzZ$p$N%`@LZ9+aTJd}n z;EMLZt_Sb_FErl=0Du1Hf4=7E-0|Pij{TCuc@tng2~bY})WHC=0P`HuqPU_;n;p#T zzKEnK?!jVOqAwh$KsjL6aCUgEZH6!Z@bJ|#;udZ6v7Vzv^x&JPrjN(8iDqPsDeF2j zclWQl@F{KcE8pEV|J=LU$_w>U93JV*om;HeUUjU(Hm#!fw&|E1X-?V2J|rduC*-x0 zpVBxw_|?B|kN)w$&{_BAV*vAD_9%fVTut1f)qXP0#sVeS@kI!ssDW0gk6+cy2pL0R zbEd7B9R1OE^w^+oKvY`IWq~#8V>Y11w&;cQXtyqln-jK>aj6&vm1vCGtfjK3Y3Z%D z?hiQs;EFKfph`LPd7aym~sH3}v=f6x^hZ~8O*!~wWf_xM7{c;$vB-m;SD z>vMpuQ$=KXfeybLe`a%g<3GJrkD=*{ebBX|!3Hv=jodWoPSl7?XM|49T_mWQdKQ^MW+n@G_9#W~CMn21tAw`L0`k&jMf|T4Ch&~@& zDmc6K*1m7*r9-vS-ncR=VsX&f7LxDE~Z)vGY1(Ui`W}{N|LbSq> zb-*MdWj)dZFxG!t5-|pO2y1D>IFYQ1O}T+cZ0ANo_R5|=E_l0s4*o9(Pn>E;-^(0* zY9@efXI%bD+)WZG%UC@O7V&ue$gtI-_Hw&ATv$ z9x>F;cJ1MP>dfF|;4(|mf_Ym;%=CjsvR@paNe|yO*zl~|eW_;l{=3`p!@5DzTWw1T zBc%VWu`B5=h?$(wZ6ig)DnGK2LThd3&9Z!maMsTk`+nh_JK8JWe4(Fz=k0!je!MB& zqASkjM_5T)mI|F|)~0a&ba*tZT0QNZ*I&N(q4vT5e4n0yKa$h^=qwwlKeD8DwKs6)~f~0%vL~BqP>yh zEA>j0qW6Y;#11h*#`xM!lof1+p45ymgv@#&*I)BuA-z&=dguU_EZgpOVLSo&FzV$p z?U!HS|8nqgc|WH8eMwV;+kYGYsKK;3@B5fpm_GELJrCb^$Oiy#dds_a=+GMW0b-{g2L*9c;87jj$0&7Bt4$81DiPU;DLm>Pl_BUs2a1|X+DTz| z?vZ=i9!>Y}`pAE7bGpIJ2L#*$Q2N74)=iW@C=UZQr57~#Ah~Rj8W3|i>J-_QIhm&t zEbD_B#M=0TDGP`LPmRJq`OjVXhraeV^84Pl>Vh3@)%FWeAoFUUM7^V=4&14Bexthd zMMM_)1t#O4P^$@5rBDJKbgb4h<~Kg8t-s;6wxI7G%sz0BusY?|iayz$5sC7rOhmiV zr&2wxsxh(C7ZacQ_*ca|UWa>JJB`ilO}}+nyYALa+Hq+IKRW9Vb)meLjuGngv)U{p z3k@^S%iofWR%j`q!jZ=_{jGiVv%B?7|2^#+y4jAzUHD6-vYXbr8QU(Va>hc$Q8qb# zgeHZyO~F4FB<1|O8nj_-CObsZcUmKYHqK0TF-!5?uk3F>{LVoiKwWU@T5qhmED(lb zyii`;eyoMX$j>x>g{3do>0XT+ZriN4Gj41%`}NqMo*3W~j-Qk$!Lmnus;nHxEK-9H zno|J#l7fJ)vj|3rQk_r=Iqh_S;3`|Lqfi;^pP5MyRoRbY#bvW{$v-*qxt*ZB%kiIf zD>&@TYup<+Xh|d zpWe7dGXb3O*J*~dA)X1%-uU%;sB{%M3x^+_Bf7^|V(bc{)XmdEp9kjp^}bL3N!$5> zf7_1S`3>9QEP8Q|8YGD0>0kbOUF(1MC2fcSd24^U$)2|gjVU2gPhlG zKYw+*<#}7|!_J3hCmtL0*ieJ}yXqIYMl3wbgFii1={K=)2WRWY{2?G-7c7?ERcxc( zcpjyohwd)Z{TZDQSfm(b2<1hKXjpS6og9w_i#BU4hT4kW&Fm`tT-#D zrjP&r&Ij*$&<6mod(+#lQK$a;kv#ja>-|Uc!5=>k=*s{(3!pOB{HpyCjMzODEkcx` z3W4aUz7#Komxr&Ymja;%V=AA*{s>Y<`}btRvz2k8`)a5|pdP$Q`XCfhru~FOQaVHA zbG*~rFKU~AR`0xjo+)3Y_Xk{&Zxf7zD>q{drL2ac ziuRJTthSGBm=)|!PNXs6rz|j!EQvK&T*L2V%fo|Py-H7u z=*2dl`qM|+`~Tg2?H)bT&*OeRQ(a^&{10p80lwP3kz*9Y<={EKBH|-E{o}gnG! zzX65G-1@ZOKY!8BMN@7&Rd-c3LZ@#zQ4sIfD~Z4Hce*4dv5PO)OpiX6loPH3r2SqB z9nniRorJJOWhhZQJ)Zs~?YL^4-yg7kEk6X1p#yxS<-}DL%w}n4=^ufFD^#QnwEqwJ1X#oRKc*mXs621(>~=&Me_;_#<=1tPhem|ni~bVe}Qic z@Yvw0?HB7sN|(e+$YlZGT9oc670p~ELT+40ma{N8mKruPUuDeCk{v*+JS&b=U zVvdu^^u^!~?2GmG)WOWrBlGQhe}AC; z@Y@I5rtK@+MY=5D_)8zyiW%*ya?#Hv{^%+^2Lh}0Dq-H>`1EIQ)=aP-8`O=0$CNW; zVNVOy;Rfut{0Bji{P7!AMcd=K@lY2j);hh;BTg1a zjBL<^%vs@kB;9%An~^4TyRwx1<=_ifxs-MPPl9J!wTshTqbk019+ga@p)JBsBvtoQ z8BH7iXSXe{{jIiM2LRK$PHcMNz)%)&P&+D%m_0K>l${`j-NFo7Oh>iOI=N}?s6N!Q z`_KMe+w<}F=#6#{`r3coRWzsu9U9OV8r&xQE7g@7HnIzyjc3xy%oV|dUpc%O^cFIq z%VU6_Hcm{{hN9w@9V<;-`2;WJoC(hkRzDsaJoNXUY4du6A8!+!-m+cWMcTzLQnoVN zSN1}}`{E##c;smZDT=l3SeN%?LA4pp2=Ly5jnCFchPIv8j%qf50~EgL;3sAJo==K; zkkg#wVeJ`@q?4sz-phjd1G<@M|RhC5~hCsRZyA%<4}mY!_IB&^pa@tn}`{Q6E! zjsKaR>HpY!ew@$rORkJ`Y(J)nSc#8}#j4QjqAMQ3lLGNALJpPxqz&qmmwaL#{e~8H z=U9sj;17v2~L0Pzk09{~710PXZS5XhbX ztY{Nof~tlpCyp5F@BGJ35JQSipsUHDFG?l)(}$;B)qdp+BnNv$M4;L)p3nSM2N`Jc zC!B`ZFW!wGYnN}+Yg2U-lyGBL=F zN*O1VID{%VR!Og&KH3At5@G)j3+hF)10|EhVp^|grH>-vG${j`^{C0N=WyrS5q)Fh z&^JEkS(jBiu52sT^4MU^zyNo0A!?~D{m$;{f@Ap+R7J06=~RfbR3CC#KnG&$uDz+P zyXiS?;o$!Gaw6l#cLNEFQIa5W%{IzKGh;+DorUB%kT^DbyzSq8tlg|T$FqC8$WjIO zmV<|iir63-{ttCZ&{pZiJ=~H0JgWV{002M$Nkl$S#@ zK5(S*wZXWo92!cGZ`7So5bdt!ap*v@ycXoN%|nA)(vYbHyOP^e73BpD8RDMXUt}O! zITa-jei3WTkoOcCPQZ^HdMxk^3=-Md*k6QCZB|KJqfaJx{B>Ud`+jBsbb;_AdL8h$ zy>))mTi@{#9m)TKzXYi3{&Ob39ksFhE@>0 zR)nwagC_+ZfABfeV*gDR7l9@H7u}c>@ioo@4Btw|){>Sn8@vc*As%IxvZFmpThNDW zczy4t+uztWz2?{3n#-@##zH$9{h}qZEZK;0z(G2>5Q>8aB1_gkcuT3o12L#zqcW|> z_ZH@~G5FHQ+pa&+^Zfp3k2VbcT3_f)tIEO-)ZnO|O4IC!BN-7bXFy=BLu1A@_@M~l zE^FEVG~K$2*7X@?_e{!CFQfo&P2U!Hp+0hSu@1=Y z^e2bwkwFPM_4uV{LDVvJ)|p#3L7cVy<_56~^y%A6b*;FrQP<7|9aXk_(P+H2-oa+J z%|-_dZ_i`rcgMF5v_H`o`#!G&0Nz~3jejR#BRIC$ZQ4@q1V*+g+J~gM7W*Ouf9P@%7F$+=B${`C9;1*-CiD*gqs29Zr4!UF2&}UHd0K!2q3`Kwfjf0s zV2dsbT&SI~ulL$!L3%F<7Ui>vKiZbU^EN>)#a!{U4SsBJrDkRxx>q-e>q&+h^fmj=OnoeUP71d|<1cbBtVmr(cKT!j~bia14>u zOE?jQ^U<|CJ`^&PVjQ42LCGJ)7|2!>+Ng9wlv!Uq=q2HP5WkD5K=kal^|%DVR2RB% zk}?ZjVIPqMSs&Z{G^QL@>Q!9W(a!IA#E%WmK6sB`;Im41?Z>)8tq3 z>!Q7GX=5y7I&Dn*K%p@kpu(D~uJb2{=XqrC{vX)~HV%XS&^IEK$;_op0S@!Aq#e6- z5OC9Tx9VE4Y`aN=9(xi&PZx6pCmh8TN0E@LQ*E_g;k!#O%K7N;|G0hh4<7K;|FmD> zyU05My-~BG(vW_Y8<7cAtqKm6~jh_I3h3+i;blpZnglHoG7amjtpwJgo z(GeJrBWPxf3L)tGT`Vt_^>v-p8Bg+GTWelv%u9rJ={3jPB)DnoD!oY%C8YGDN@**+ zJbnC6hsQ5e^4Q>7-JE#ct(*0ohfRLN;iEs+YlYb~X{Dg8B(i9?N=fT<_{1v-5tocx zAQ8|n8xfL=^n`p6htY4f#-d^r1iXh1DSAjbK1AHglKl$ul6b2e;VbGBcuYvpzF-4= zB#IOEAq8_Oe6W^-7h1+*%q@{iQ9K2}V}W`NbvyngT>|)w4*=f$)_1%?@9}=e>V(bH76QN-2xE_m6bwl`S|L@K%cq&#M@ozu&?P> zIFU4u+$H=!SG)pL=FrZn7*_BoBZL5{+B)H^DxBTxtZwy{H@3~M`Hi;m1;4D9(rne4 zUVN9qA=M((3`^U}*jpy73`=8%70;q+yIim^U=g^^&jHBXgLk#vANh~E&j0(q&d(kH z-l+_lRSJt;JGK<#9)BbdA%$oRV5-QPoQ0x|0f`aI0NWAYu`TB_FIdkF$_08zl8qC& z=p8!{oLq{YHaT%bHOcVOp*%%=V204_{Xf+G0iTWjyX=}a<;w!hqh+$v)TVOjD?MYe zF%3k>s^!`VfQj%u7)_Bu& z<%E3cEp5?e8RI`~c7TY`ifq2?L4t8Z&qWZSYVPrI4;t)W>Ie zj*^93QeUKwGT_e5K27aNau5LPJ}wLJ5+R+DUvfDw5#obZ;YF#yiC)gqP{+5ipG(wF zf#;Zm0|9?+P?v&sT)n>S)xpUwJ_MHrm5ZkXh z2q3mz!<82e{tE8Znwt8i9s~SX900uKop0B70B))80C3jNBY<4*k4FLH=0E81Dd2FZ zJEDSvm%iFzE$lEfdQFuRuB}+!0*UWUw2F?$knxTKwG#?q|J3*xJlTz5Hhi;n5o(~> z`pEyZf2Me=NoQ@<3TvotQEX9yA0df8`@|WFk>6iy=?FZ(s+pz$6ZQ_r?0q7IwWv2NdHuPzhex z414gRFX5FexoTs1>qxrdb6m4(GvE2L-zK<_L&v7* zxnD|%d`Wv0(ASfTS}+@+wD#&7+S==HZO0zEPcLP9Kz%13U@5hzWWsFF!m^=JgsGn) z5_wo}j^i$IZWLpufDS|=xn)@|{beO2e0RT;vBT#TzD)NsrR=kQT+my@6Qx&>j$DPKoc*<4^`M&Blfy z?X#Vhq55&49%bwm&x7zz%>aDB2LNw;^V|QIg@uLd_!3~;^*_1uk9z^)AYjg)0wx5c zY+Q}*p{>ECZqbm(kw_=Q7eAydK7of`N=LHY{)mQTiG~yDZV^Yaj|aZ1&kcMHO8F0~ zyhx{LSR}PKpu%Zd-*54I#>?B5U;1ZytnXRTrhI)b0NRNA9z&@DT5LQBUT7;>hjUDY z?U9b3Deb^jMKrGS&+0n=mvx>0z5lPSZ-3tR8~AyCwrH8kQsp>DxvNv5@1%{HoEJ%wkfv!JDePbINS|VXdxFAB_ic7CrK2ieC)eM$bAhd`$dDC2IwgKz5 z3ERLD$vZ`qvGVDTxnsL^S>P+5X>)rXZmTc7MrY>RBs8zsho9g;vb!#q&=cAykFFv$XOgX;AM|y6w4&%BjJJ+Z6k1YFT0%x=Up0P2InIXI z76!$&VTNuW#`4x8hG?B&dw16%PT;y*H==~e~F^1zA<%Ut;A0U~*k2GeasQlA* z{D-!5Dv++w@X?;juWws^@weKB=e|~VlaC+kV^v0%qEUscTd(a9DVQlo9#zwdUWx`k zhY0(*eQ7!Ty)U+%AN*JC;O9Tu7JQwb>HbvKb>dU}S(oXmk77R@Duhogxkd-d<-}*z zSZ{cP-Tf9LM65gUrlmc}TOxfJtVL-;U0?Ze0hGZGg4Ji$1}!pK59?(<|Ng#q_jeEZfPfqS@W0j*8?x7_0lQLC z+N*y;4pVR}#8TCvY>tT`WejZn+zxoESi}pfLrVye;eYZ<#B3HyV_FbINgqxS7z>xo zNVy}gI_u9MN_p6RI8I{vy1U|DPYW>kF46q~YjjzFPc#pBdoi)-yk2lLCNP~ffs9J$ zsQ{821=nv}*`EHK&Fv|CZE&Z)HppXx;@4#XkZzUNz0hL;sHvy!i9&z0Ale>|8EqhZ zQpr_4h^l3$g*~Xzz9F}yZ6IU37b!;>HL>V;ub&}p1%W&}{1EYT#mi3usGoQ7j2(>y z4tzY0@*vbt0USSmpFRov`#u18!<*l(1Av7qeF>m;_Hv-o5f4mBKu7BLS0yz$) zXbzqhDo(7(&<(LbRUEttO=3F?r^N#eUFV7)G=<7#*|+IxOL>xb8a_(a=lU>|=_khn zdX{Mi9}l0>t8+KL;B{^DtAAZn#aF~kfX)fy%yifQS{{rN`i3~9Kix?9LzPnf49tZ^ z#W7D)*6}?558Lh!|6besSAVFl&pm9K7U74tP=f|=VP86|EL)vUmCe|og-nbON(o)jC#9a; z>r)b}9i6UE_8;g0Z>#oUF`ic#)0PYMl*rA`)4eBpT{M@9>asxik1iRB|7Z&o>N0N2 z_5nG>h6?MY6E2XzM9F!0R-V!pp%E}6*Chi66x3*Kped8O7==^dku4;sGr?EeLcNyR zesnI!e&G?OuRYV@Hb>e0pLNglF$1uo-K(bn{##uF_%(gu?+QKz9MAvjj6Y`qs$O3O z)JKExD;lVt$9Rv8OLo~Z-FeeZ$`(Dg_|%-9oVk4hPl}eD1|Omm?Oz)2?(8iunXnUs z1!l#_d`-o!+VNDq%;&e;`rBTivm$QniFhL!D#`=;(kiFb!gDEr~l5K(rTrF&GcPf<@-}3(r(PJA`k2X@C2`f4IN>?O*Kl&R|-1{9ElJ-Hv~{8-7?>QlbIq4*g}N?~|?5 zT#J_6NQavzI(&ziLe?o2PC4jGQPMI8NbnGXLoFm&PkWOnmx9bE?E(!6GDTC>>OZSZ ze9BPc-y*UI$iK{VV8Uw5r-pfn5FhnnN4(`cJ)J`*#74x;#vQcUUn=8dGtqD1S1@}U zM_!!_&&Q#-iSsJW4n19;i{>UzW{dcC1eXQaF>@ zWw9vZoO1XWRKqe3hMP<*scC_JRT%d^cu3bQiv)5f;FEr?csqJ__H7!!`6<5m>2lG? z`SZc+)P1`iyz9SAAOAm(ulVMLKlqLLW5+II2Efz(KKrlff6W5aC4s~0yqW<(ITlGS zQy@}GSav$GQb6E9@g$(1XE}AKR}SXOS~7_+ZcBgYCcwG1sAZtj%CAe3_9IXY_E+CtQ=I55C0S;nkL6a$UucI{AN!KG;D zhc4QP#;m10;!Y-OVg0c|iDi;TVp%MYte1+TZ+y5=%fUd6$Iv;Pjbj{XJMsUM_pZUZ zciC0f^PczC*CgEu4FnYmEfEA1gN2}2Sc-H?tZ)9+j0EHm}9N=?6c1~`&{0)JMiE8`LDI+ z9AnJ6=34*%^XzBe^rnh#gL)!-AG>73VPkZdkSB zHDFsnEs_Ug&^K`Jz4{*g$H-rxZ}I5&y1(zQ38pBn-`-)CTRgO)&Gp9?=E>&g=nuub z@@n2icu{Zl^QVLP13v%z@A>HEPyR0-^Y^R$`~2LXtfh8zPU-Z8@J8)uF=pRpI)*q` z;aCrp4Mn@$ny}SBcrfO>bMV6%300&$wFfl!EexrZXEu41A?ISdXNT~PtDWbZ&RPh7 z4;)=XP0}#-)@|Sahysll0jj;8@PFuU^GAd}tzYAQ>+-ewBSP*oOY8vyz?Kp*;T0aw{KAukRk zX|*)N7O%Ee%wq;%j+>Z^;#0T}<-={9cZp9fSH~UV8z0`KJTH^=Lv|nh zCEsxQihu3j*NvF(_3MYS^g)eFamV9W@FP__-310R2VFljmt5xi5`%y5W&M4Az4-Xt zU-|aSC;qU$ !yZ`!Y{+@KEzs0I$MVm82HkhY1^|CH;H3rsuIBqP~F~1mFymf-W z9-rtrJRUE7S$S}BtMj%gAKPP#0B2|EVL0l#W3UxG1(UD2!3T!`W8WA|&`8qf`~YPB z=zxyj9r}8ZO*8w3AOfQ`wEkxVU$o7wT~CWfjPUsZfYe}iOb?gU+ zc*U_M{FcQR^(~t3{mY;AZ(6*n_4&xxzN){spuY#NEtMk-?<-DddV_T|GGEceCunz@S6VPpMU+2Cw;yRaQ)=Z zzY2bn?@>=CM?Oi;3lVGgq%T6h!eR!UYcQKXlYbvqF?5#g}%xKBQ29XtNh@F^Z5 z7Pem2Dq1;XZhV7{%ZV}Ep!v?rzXgSFC#?tVOkQK; zhZ6a1fuH$xU*VGct?&M@;coCb>`ENlN(k-9~Wn z2|7oVd;NFTau(87rgw%vGgO?u)8o_{x9yGi?1}Sd0JtXoP~!G+8S*W@%l%J(;0yPE z?~A|c8^7Vh`oWQ3_r~jQe&rYR_8KW(Z{N|OmI7iMTeSxi%^|tE^@A-g!%Kz72 zUe#aoyRSd(%e>4J$-JrV(7k}I7q?*0^J%=RlHI;yd8t>Wgy(Lozb*Ru5C84Ur~cUQ zzI^IWe2e~b+zn>Gsy`#aa^5-IAZVh zBR7u4TbSJ2x0IsIfLNy(Dia?48nWL21w<&>snfl(_j`9tOk5cD#j2;CLd{{=`-t&lTS~r zh~URHgUIyB>!vQt)FTmMNFQ#r-E*Fx=O#Wx5M)ID)B#FtYUyY+O_w737nhF^_-z63 zAJdDnzw+lkb@`$1*9!stfZkVsL@xyNq^#%WfzSLkLb>KR88vH1)p*y-nAUHQH~GAi z!12?52EQfny7G9#hg;hrIJHz`f7Eb?+6u0QiP){K%WHzwztz)&Bdx_yt}7 z%%1}8SO5L~|NJ(<+j;@uV+xRfc`_OkQS>>b3Luw^A}!T&|C2F2ETCSFW!;1H6u)^ zb4?LtLa3WOa`sJ7Z}-3TsgLOo`TT*)C%^S~UB2*l^*i7s#~&LvFQlko@b+1GXEZr1 zP{+wVIu;8b++fLpK25a8Wxx1-)exI8%zrrOo`)$lM9{>M8sU5|%rS*^U59h>7e~I+ z?nE)9glQD(#CM;^decWRq4Rl&V;Jl}*3T=%h1HmQdZ&hO34P)FzUT7Uzx?NIe)VgA zs{hH*3;ioBK<#1gP0tM{Y_hsWzDkUA-eW7f@9ucQqP|yuFzAgR{=v)ZAN_#`UIa{- zXsxqI`s9ZK*Y|fdHkQ_1FwFgW{>E_1r(3@elHtDIa`DY;_)a@ARn-1RFB?d%iP@Xp z90sxtH#-X0$?e^-~DGldHJZ?4}av<%ZI+^Rj0;V^-bi6B4hRs zwqqwbuC*tuMW+8yz6kn`*X5`GtPftkU;p3WlONX~JJY`D-!5=`=a0~+ORO)nuqKbT zQ@hhRnXzuC*=o|}=(W-OgAJj)UMszu>2zF}Sba-~X|{^nd90`G32Abb*&S^QslOc1J zk>a84BU%oj@fvMIto|oMpS`^HSO4PW^Zb*c59n|3f9*dZO#O%dh0YBk4oLp(tBhmcX`-Re)S zQ={x1;ijlC%)-P6wXMzL>`vC-4#y6L?m9*!Tn`Ssy5djBbRZru*MWHch$|t-#$FNL zlp}W=R&K%$2HY~QBx7V>MQC!E+#tj2!(&6S;(#5TPiOE^p4G6`SYLh&v1N1 zzsbS>7wDfAu0|3|tTRXY97uDwa3?3**U6-7KHK&^?|)G*K3=(ekA6_`E&WQU*D_+G zIog`%x@?%U^-#~GIIp7v(osLd8X33msu)lU8tu0&Ap3AciJz**?J>4zD_No#y4vgOJ zW1D1bx1fx&F~x`T<>R=?Pl8X$m)OZ)S7kz7=YL!L$MZ>-Bb&>Yf-in-^|`OF=HBx& z|K-d3{>5LGCx4s+fK~ov0Yyiw*sA5Wytd}=((=3fxIX_q-*Neo-}4_{KCa*CfAcf{ zz<<)0FR6SHAukX(^of*>hJ!xsK8o`V>G0Ry=%JOb5uc;wxVoB&#R1oTH?ghU@MDs} zFO|x@HJX-#dC}zD10q>r_R|J$jj$E92>laCbmFxmm5(8J^NvKhS(Q77hiN zCh9T;KiPOZ+A=j)EZ`XD`>SM(ffid@#wg{%83-Q^9fvEEs@6}-k!$3d583h-X)Fd> zbp?*P5d)OVb_xM=u$y{?&!KC#9uCQlM@Irv@L_Tl?aJ?a~?inK-OI-@V?wf{)$k{ZeBl^70EW-FxNUy|>?l3lP)a&3X>6+)wxZq{jK@R5Zo39LCe0=Y#8bd1V07s7(A#(~zvuFn-U0a7@B6Kn zkNtPwba_MnsEL2r#C#XeU`Fso#K&*|OVbY7?Z7%9#Whr??mJNHup~|_M%vYzaN@4$ z@(Gv)aX$O!J}h8v&{O{uDDsWKt5VlPGcpZLo1$+wIc?2UkMa4?P)F`{=?9lSXU0+K z`Y~dj(P@aFYNyqM=HQ=dcsQ(`0M`c9XdA&+6^}~P)v2J?A^QU9*qQ+HeP=`P{u{L<3%UmdJaOp*m1mJFk z*f(aS5*P$Sf@Am){_OEv`IUg`{w?u`e@-oZ5pLs;&aPI{JoolV+S!4Wj*<$?vQHB$Ce`=pQTaF_AD!B-mQ@iPw-l+ z&wkhcdHIoV{!N!p|C#?uf7B(v&(B>V`om7*3WK^ff*S8P2b=Kr?3)nKy15bfLk8cb z4?TCW58f3S|KhvQ0r&}i`9Y&haL(#a{cKb}8vE>RI@WqytF$8k1+b~%N0Ywdu0T^G z;QGiB{IHD2?i4-I=IPl=EpsrQlYZC%Y~OC~yJO|MwH_dF;`5*y@bv^uVRG5L|`hbZi8SW!od%Dtnw!T7{(>7YSNN(`3B7id)#!&cgOR=ri>^S6%&B{ z*Lpfz^QosgPIGhwdWpXips&pT??3vn%kTV;zwh#$-~I^+=!Y@q2MC?^gx~$9l{eHhNqD zT;;9dSX3j~{Gb`DL!=+m*fk-4XgHSenZJP7{6xRzJNkq1hi?Zo$A1)m?NEcfuN)}5 zGW#(6B&u4ysAqq@WvCxBrjT*EWz5G+Do_4Hc4F$25FCOGJ`iCd&B7TI+ z-uH~V#vlGq$I?TJ@^`p?sUV*81D_g242K{A9Mj+=?I zryFlE(bU2z05N#-_pf*8tNt(k$oF4<^bh=JmyiF?|Al|8kN@D8s~>hY0URDXxlv~R zb`&r;-!0@AA80nav18*a2;PP81v9f5*Vtf0*L-Q_$rfXzH$HjVnqUF-ynr~TcD7|4 zOE>(42ROW{uesVM?kYGs2j4`mXD{o4%zcgeETd*5Uc0}F4~sF zY|LnjzrTtvX?&-Ds;b2V-Y2TD8-j*ptt_jh{#OCBNb$`b(11=AHz=LOzX5>Sq@x z&#g9FlRJS{B4^yQ{-eueSB;3N@wirt89`j0gidZ5KZK7)b=rMm{seg}Kk0z(gV@<6 zWF8%#b@CS&`kwGhFWtZY-Zv>WAD(#H6hGPHZjNT_y(DKJ3nz&tS96<7bWE!;FeFG&gs$dAK*_#EaR*ZnG$Sc4EieVRsB0(*R?1F zi9J|+hr+IDikEaJ061>)Z@;de?*9va(U&Ik`Oc!~?={vwwpb}CH0wTSMG}zd}@x{MkPQ~@eU1H`e#w>hNnak4gY9UP4 zg-w#E8XLo@Q5y`4`gTbVvtIPQ{e{;qfB*MGD@O;x%x~if>s&?W=dAF$< zy7GW?PTe1=1H`zS?;+G$Ss5K^aI#j0uACFb9L>C-F*x^)5QiFjO)1KjjtV(OYeErt z0*a3W51i|W0aNyLnMW&#w+ZTo%QtIl8EhP9F=NTuB>W0*t!kejQnR?z1L5In6J+rx z{=P4V@B6EWwpXP2A(;tiJ~Hwt3|&JVOIcvU5{O&=MKiw@@SXbSO+WBAK70B4fA4EA z|H3c+kbieSKe<2G0vcBb%Go2FCF!vPW-#613(h}`;#~&b5g?P^Kl(jvtXGE&woShA zV~oKy8^VOtX!p|97$W8f41;E{vQPPDKMcg2!92hpJJ5rF72|pH6Y6RzN9AXl3aWhW zzwq{Z@9AedKIp#y?O07O?p2V412@^E&dI4Zitl^aP%USt z;s+#wc8)pdm#go;_PNXF{`z-{FOAs*$Z$k1XKTuqZ%I(i8;2&+^|_w0Mv{naw_%?; zQf%On_K*VErBgmVR|+@xZQHN15zhNw1f~scC(M8&!7}oS#Z)(tvp?0qbo*RzWS7;C zz>*+bLaIYwsH-uyJj#cico3G-ihpfov=7iH-%2V*Rp=3}_T`}Cy%Mh#F|7}iTwi=q zjA|L|gIDyG|EE6j=H(Cm*FSjqAOEW#)Zg@f-T&IzD=r`m@cWQu+3`+(kzTO!F~IM; zTOMQ3!>hnrSg+Lt5lwnG53qYZ5)`@3NPdYb2kVEw`E9c7&e9>s51dcaNppiAlsP9K z`FE0!IQn}(kU}PvHD@Tq+xI^BlKxr8SLI1Q$*;bPfz7E(ar_!*gCIJGu0{tO=){^? z3PVNf3$g%%KzzT5tDqj|=EJii+w}!+f1h4Y{K-CA*Mf|) zepv|COKRTfS8EFTqT&_HT!oiWWdKMB`v+gAA`&Xf6l{t6HOv}^VnG5OQMIhwsjnb53rY7mUT6rNA^ z2wZ4$L?LG!%-rjAK&|HeH6%2A9S%=~{E0sW!G0UR^Dxf3nPbj2cplxi=rm&5oQv=7 z3rf@#pPG%;^_S1>u}_6Co>l>^tP^X$^k*&j<30RL%m4fBpS=9w-}>C;SNsS6*yZQ^ zg0J-N@Dq|q*%689Ehg*A!3c0US}JfbCQR0vJd=%@<~#FFGyXIVFG^hCr=~J^RwLeu zteV+Rj+t-$&U!fAgHdW-#;Ne>Jsm&!O5`cypL|qEhMC(=Vor_`huS0y=BxBS1MYv= zfAm3if3-lN2gibXQ4ia2BLq$d_}JAuc5D}Q0Sv4HgB&;cM#%VRe%TMkKl$DQ4dAx% zH=o|JD*wCj&rJ|E@*HlLAcp&w7r)}emwT`1AN{Of*fZ2%N_N8Woa5?p;okqk=PsZ4 zBfs<0l-hIVbf;l2O@ z$XCi>0rD`y{frz~<7TA}rovMA@EvP#@-u(Chikp5^;`&3V?0?yba&kdlH)$#-_@U% z&bv*sK45tm!Zm(g=WsV4Nai^DbuE5We3lI*`Ykp5b(kZs0nsy0-&>+}U#+(j|t~V3maNAIalUnhJnK3cXN^|`7s z`XS}3vI#jhOKRD9F@kBN46>pO{<)1e^}i+h4#0%Gng&9XEjn|lul!eEF8k5;FYUSSCtsS`vQ}e)33uo$`^owXo+AZKDZ7K8fZtyrw~a z;gp=U)jCh!h@=l6ADgDcX{~Fpg+@Pod@sGEy`g{g`zQX;kLZU4e?Y%3_=bOw&v6`C zx-&R!sC5?ZJ086pgfw2{^?qq>nQ);7M*D_{5%L^naM`(KjMGi#WdiFb8x>o7zY&oH z|G@f>oq*56NB3Fy&C~f$nwhv}L*hDUh;#4$*XU;e?te9JDZ4b>F!`W$Usl(Ou_41w z;|-#&=S(ZE9}~xYPsq-ktf#Ip{ff#Hw)g4y`=?yr1^$`}vuBHFA{0lTYuaFJA|DR@ zV9WdU_J48SJOGAau1~IDIF_I^3x?&*&wN~Rybm|kmp{m|_Q)=qg>|UJGjql@b5BiQ zXLlgxLSXD=B*oK>ojkDV@xU?0$yDxue4e~{F@gE;SO$0A!ixvv(!puY__$yIxOyb% zfm$(c?!Urr<9Cza zrITkqG-Gsf-S`%O=X0G)rZ@z}ah^J1$q$h+u+=`|^zinz>)>n5J);MG>Jr7AGa62* z(}M6U0tyeg887pgaP^1S)SWOpzHM`=%(f+HeswH)XXlh}^@>Vcxt%o(9irpzc@ICu zy`4WC=W>(3>YZ#{5!UuB{#JE`twSQ@G~wy&6wg%%+7@Ar;)3TGf*YMOOeeBpc}QDL za)T@-y>NK>)qDD%0-w74=|A$L`NgBqla_H{cd9F0A?UOIwCRJ?As%_U{&M);X_<}T zq{A;LiKV(@@>#V^Ut`yAz~CY2K)3nZJ8PWl1&f0dU~7+g1Qy?8M?@IV?fjbGdH!V3 zd}%qT6RpO*C+a8DzWUz1`!9UBPx$r=kSBi%$$(FNv`B!Y`|H1s3 zTaFdAhU&?Ydw=rAZ3x5ZvrnvD16+fWlBdl4`80;O>hR0dep^p?#UY30!Ole&I7f0H z9$Gx&kZ7MN2qC0hQR192Mvd$nE)$!s(ds7-q(T+bm;n-#qy7rS-zI>166JN)zeC&vgvhKI(g)r8!?c8d&1O7Z% ztD7$%Pyz?XJYjQvdL&yt8Lu}5unWpi zrg&^UpKk`i2Pcs{y821|b*xAO<-iJF}C88gkgoU^~anydRm{l^biPxA1+2r9I-bmEhV@~MY) z)jCnz8RVcQER;d`mR)^5$7QYuV_dj9@JT?lh~41ZH9;O0|8ab@!QAA_#9ysuQ*(5l z8Oh4rHDDZ@p15Cq?~+0CZ9J~oV4RDUHc2?lTSy~TaI|r8BnH_SJ!d@0rC-Ht?2wQ% zDyPNIRSi6Qo3XEy=wsyOk`KeyDbSsZ9SveSk81t6N8Z_Hg$5Q(^r%IBkaNy zADNmnL672?wR~=Tt5UgEFJY1x)|9SRm!kEkaU}~l_?0nZRB}O;@j(5NBm-Jb_x;yY zdWT#zcY;0ewh|+_bMNL!#HvAoF>Ydo;+WVo<6_2H`sjnp{)s>4UBB~5$v*hrJGws9 z_Y%^M?rKMW%obn#RHjo@JNXNc>(`x0_-GL8^$&zGtsahJ+6>e@aNL=%jBfHf?u17? zndb~7^H;CkX=*yf`$`-Q!o!>PBapwV@ef}qwkY+?>Y zuC=aCX6&94P7aDbhxZS5Z`RoJZh>@*$E}B-%!k(|(dFHe>ThCSJMY3&tP0awVnm)R ze>6#{8w1l$F$rA7mq}woh91y@y3_Sl`=NXK6~N=S0JL0sS(Tbbp)U$NlJbLJxuPkD zCr`^*<<;0*lyS*eR*`Is%Y1kbl zP3+60p})wtF9E}$j~)|?(@dWt7r$Yi%lf*JY0V?>xv|)2mcsiMETPmOHx1%2f3?T@ zg%;dIQv-%ZC%cB%@ze4VL+>tpk|Cbzv+`H(%%46MBwY(meGmiw80^<5hnTo?s`1(< z-ukKq+?)EJ0R6!pkVsFHF6XJc+gSxsSvyZfcIOXq@D^A zoP2^k&tT*9bRA4Knfk89S`KJ)G(Fm3%X8NMv|`_fb6xevUY@%e7A>T&(`Z%U?tJC| z_l|ram-fNQ{yH_3uX3bbz~V{Hx!?zGrE#c{!>Tdd9FTb_t8QUCxz07*na zRDFS}X4|R}ic`PQK(7ya)dzWXNXT=TSe=Op0y+N*q51u1m*1B z0Ee%K`{aMbU4QGuqIGES$n~qD-dwNPyUJHEr%F(D9J@JTNkuT*_rm2Xxh6kA!Scxb zD6v0`1gwrR71MZX;zpGQn~o0;^B_hwu+dyAJfs z{HQVS^RctSIwKn5xsF(wf4t<~?@8JNjl)zUX9!^F|o!7J(Xc3lKq{0f#VJ^RKk zbN52|%_EV8qc*^O9Q@{w)Bb>-h;KP~4^-QhR$+o0xB87wKqS0w$pOqVZ?~=3L)AJ9 z&P|_RJ5AGVxcpugogR#_K z2eBM`MzLLU&$UVnxaFI8BhT?AsYkAVkODfvXtk!^D*|NCq-Hnw&olAYEFKjqWe)uJ@kZiybwQwt^I{Y{*Z z8Bg?G*U`tfmIAI4Ja2q1#j1zChX>wzNYRUp(FC?_QS2Dkm8WqP&k0AZ=V(-dW?ku+Yx#To6Oj+zOxV8dMFb|BxzC#{89VYlA$-GNWN(X$Na&T#9dm#-Dp+?HGT zBTU&&VYD5&9`01cmf_E*6sTnPs$J%l;hs=IB& zE4?_4-#xw}DPCqcNje`+Gv7(x=E)Ic#_-iMb?zE=zzshXFkl(!P;0LYzV&!KHtjQf z{*XUeO>SY2O#_=FO1JX#JNDcNj1~Ynygz9*ym;hq4xyG1lO!Qk3OasMYBU2^+4b5k1*db2d+=A}fw{5HU6| z?#tJbc)h@zFE3C|#=41IBo^QD@N~3<6UOtKOA)cfpNWSQ=GId@AJ!z9dC2Im>?f8n z#Y!-90%Xt3{mJ-Onokk`JHdj&AmnykQX*WAxV?Em&UL0X;3>lOzvklYDG@T>Pvp zDVfSiIp@QPN+qq8r`s^g<4J1dy@I!UFs~i`tr`R%%wmK)3T@y|pM(;-X9Pwf*?Qbu z+S;g7$LxoDY#G@)&Z{BS;T4)Htj6D;xH1-|C%QZZMi z<;UdAKvvDtHFBvq>36b?)oG9b*HIg-x%Gh80}0>U{W3gGY&Q?MUbDl=mTF186!K-8 zxnpggaPp}Kr#(By$s5-mWMpi+@d`c$#_D#oG?}PlsKskQP>)>yxk#^z_af-`ZhV3LeD;>^j&i~s z`r`AWfxv55*8|4b_g@Xf%sUja4w&_0J#%b@_45b9^8e7CgFyjvPH%H?uTdvyPO&pk zvqIXWj25vz42hEcBMd{E)oBZ{c5BTE`y@^NKEQDx^gQ`!P6)a_?i620=g*3eT=Ghq zPEa;>5}sJq^})y?)v;&bT_>hk4lZ_T%Ak=6qoY1PKEq8PL!K)V$FUkyzCJPK`oEGy z%7@>n8QtU%yJxgEx}zru*x_~_i>FR}bn;*fj(IvJCmGX#QBTcU|IuFA0(4P=8)8tm zt>44=6X$vHNy~{(5tyfKI=RJg9Kp-*!u?nDTW9xQy!OvXMWfe80-&qh=b)H!C?`|?;hIOX3jy6dB!+<45ri#9DZ;yb9S%fi7eZ*@~fOc6O`PhOXL0fkoYp&GkmYh%s&U_0%BP)7Obv z>&ub<;QV(5>2;I|tZ6O#_S0jsvG^=;f6;;YU^pf|o3pQ)N0IApLJei4!e*%ci2!n| zW)MseL$o6&uZ6qvogxeg!eM&{*RbVwMy#zOWfG!o&fa5StlCL5K#cfq?jJntu}SDw zesee9gfsdTe>uQ97qsE%IQgdy$0~?$i^6;Zq{jMqQSY{3$yW>3*U2pb^xojiZ`-gB zz*?THY*L}Sv%=7E{N=U1Gantao7j`ae=J|(q)QA3p@X603|D+7gRf|nQdrYt_BrF! zkl(Ig>|2enPKgkX0e5vq;ig)+FX)c|)f2seTa!h-ao8Zc+P=bWrr5aT7$<-D&djzd zfgtb65HtpB8ZDvhH`p5&yb;@KAd2DVVu@brZx`N)5fz5S^ih*-I%OiWeuKG{Kg65- z!9EaQQh6anM~^Pnv+&W8m>VS3%NoRf)~}c>9^eG-54XjybL&snGSc*K^9^#@BA*jj?nM{qrT{W&mxF(FCvYX^JBzV_T2xzSbkV32=J$j?UU;$dCT2 z3z~k=7+}cNgx2H`%>M2A=S2@1Psk?~9gpM_&M8e^4m$D8emXw6I^j8wxR!hepXM(9zL#M>f&+)d0@xA18oK zHa>BCAHt0p9`ozoAm7HcUxSW~HC&#D?H_>>W6;v`hlW>tq6>Jv|B}!(Uobu%!k=J( zatL=jzjbE<`Q&X<$=ntx(v=D zh#g0ANOpJOJMqnD&plE6;WvvbKFfB@`_}w#@>eQL(bqvob$je!>hUcAH7tuw0`;EB zbjl59MgR_<*?IwRVz1T&&oYQO!smK;TWCJL=Dih!Bd2VOd>@dw(0OozXO2P;pMLY8 z*EyAA3|uQ@J91`RYy?2UXWvC}%3Z43*mD*d84epb-IX8W;#WlakB)DkqC96lbM_?G z%%(y!HNvhrsymBDoyerDt|4XWy7EJSQ?|)^mC>D(kJ8qXo47hTioWH<*f#7sifxbh z)Rg73Zvd&YcYJtFZi$7!FiRgIdWCqu&N$x0s-MhqlO0aQCI=@rg{W%t+Cc>NS}2hR z_}CgbQ6I|3{W!j)-Vr{PPkOG_bY)6!kCmg-lm+87&^ul>fMW;hE*&2bW#I=-ua2&m zjMYB;i!R$4(hwQgBH1Q*39%Vjzr9!eA_k0+Y0Y9Y$(X*Jy3C@f-StmV>swx(Bsh-SvFy4W(K}=Do;H;mY zPAut=Uc2ELzfR$62rg>r1p%kLv=6Pn^2z=w9t9mqK&|ZRKgb^=jrZT(_|ZlG(R|#V z1MNWFvHdylE#I84+clc?aeVOVi>3I`y#^kRIyyI$*?ugE{+= zp&Zxyp^8xuXo#$TQjLLg_07>~pc9_}v7DM%JEp%$>aJQ?JwA1#ztl}zCz}HbUFb7F zX|Bm)?T$%bLcR;|1n~vUlyYX!C$3zhOl^EK%d;HE#NAyrhoxEs8zpqR##`}JOTXu` z&-!m4;WXMpjz8Ab5BC}rjitV^>Lq{SkzTaspREwH&dYyFjPc;-zAzZvzCYc@$N3=t zoWI?Vv~*I^jBTS$ho2~eaj;C~bp2XsnUk>v7qz=!gA$1#mQRem z0X6Pj2G`;@J#6#1;xpiYpT_MS`5{eG&&X%HU6<5}O;YJQEyZy}z9*{=wx&x8Yn}%a zyf;-kjB>DQdI4Z_ZL3u_T~*n@FeFC4vL2QlJc-N`iN_Tg%!;6K1PYkenS1`{nqu9% zMx)AEB;LaqZOko*aW_JFi0UnT0+?S8gWHa4{z_{VsGMv5!a4emzwFP-pZsUpoW!nQ zrpDRvc2Jiq)5bUtHO<~ozu>F|>FH0CZ%D}s@5Ym#6^+x$$yw3)5$|d=dX*;*{+d_k zoTQA)Uoo|{#iTPG-)*_tV!etFp(L^s)^Pe9^{d?xkNoQo`pc6)^LVQKso5%sizzkc z&%_zipSsqKb-OhR%AM)^-Y2}7TGzH$Yhi*s(!!tho5&_qaeRZr+WQ#&rb2&-$=V+{ ztTIVEFQF1oEo3XCby%H}1vU9z`~auSwb z!5rT?G;(=u|Ka1O{xkohrnP6+!)6C(emZ9H@s=aM_a8|XaLsPA` z@a(qc_Itf8A}>Kt0;FS3jO;cn>rWp3qQ~MOIA$&*2ZuQOkcGV_HGEM;NL@FrMf@EZ z8i>zN!*?zgdb;>0pS+Vlg1sKP)>A7cZV-R#Mb+Xy5z?HGm1O>hVhV!oFv2np+uRW7 zMuyG++y?pVd~(Q9d28N??}aMhDt_5%o7K(yAK(if?3{30CEF3I*uw@@taD&HY@e9xr$lc)`;_pSLqgg?u2M?Qh38j9Dwg4G8b zO~>AE8i1o2nn$uFuJWZ1NoVSr8T6)rzg~l)Wi;a@8YlK;f*ZA*2O>G=Gi=m7kKxg; zL|d5W4uV5kVCnmyqltTb5;31_b0#nMLpSkD#V6lq$^QxXsoBhbroI-$wMzX{Z-i4! z#_5$b9vQKF-Q6jp_PIOF!VCn)1A4X1DmoB&9-P;U5JuADv5%r~sz344%2upex_!6@ zRffD6SE~>2FGt3iu{y@}Dp{JtzkUDVOuTlUgg@0wsEPB`d?#?@#KQ5}2kw~kAA$L6 z3O%Tp4*Ax+7t$Uac=4-XvpO5E9{%dk2EJ@2KW9Fg3HfyK;ohCkgt%0~AU4Mub-sbk zjZfbB3oKb!on`Wqo4AHD9-XwDbL6H?U$*`XzzP_iS9cYAbF=nq>g?bV^jR5)K14~*<-o3YlnX=Sk)pDqa)h;yyHZtMs-#fIUV^y ztytLysG#in0nm}y(;BK%pyRi3;V`MTqs)3U$AVt>+I>(}78)i-V}EI=Gz zW_;!JO!=RDrl%t-XUB{@@l`kct5kG&2*MNPvSWhA{!=GUqT64Z5RQkRqx|H+II->9 zU1PJ3!`g$z@a{seJhdJ&)}!Xew$daD_hv5mIT8v1WoI2>5i0?Z`o=x5f1VQ`-Dixy zN+zjQ7jjo+Tz}?7Pe5PY9?vXY9wpFY_iCAzJoVwjeR`nv7_hyC#93q;w@Q9V1UkSu3SJ^v=DY#!gzzRUcDvT z7XT?;wZd)P*#KcD$7P>-pX-+V*DM_GJar1#!Xsx{6{KTtSd*MMz#L8ltjS|kleCAA zukoKhKR+C}L%a8|_`YMvdE~$L=qd3o@x4Ek4Bkh^^;X+ppmWn#}SVN9woW8~@GjD#Qe9BwI@_LUb0ut3RU53g|Ysk#SCh+jRCKG>cpWE~KJQFz$V{J}ojRSE zCwZJihUocP2&@h&J{uw2iDLJmSH3yx^cX(4#+mqwI&mHu|0(#{K`U%Jxn=Sf%##gc zZg$dN_{o!yIy`e1OAs%KjINVB;z8~EFf)@S1>d%j6~Wo+tnbFjVJg zUdUd*q#Pa0&aZ?aGaQNq;duS=+c91oo|j-N>U6C+!q1!EJH%b%E2XRaAID$Qnf!0^ zTOH!lKj#XUOHhy^MhC$qyXydAJF&{A#cZ{3E7u zPgZz~P)|ZT55=>KQ%FYBo&65DahgDOn{>H>au1 zG_939t{Q6&gz-Ky${n=~VUm=w?k-K?{RuJ^V%H)o_}Naq|PM=q#DKRYr|A2m&osX6H@j7uV=-4##Reun^52_elf{Kf= zg1Zxk&VJh;w;mS3&BFzwGl!hMr~x^H*l*_}rU#-u?!reKij%qK+l=#3@gK)WJW%uPb#GFq&#_|6?`20V+6EA07QQ~W#CHNlt&=zZ z8l_X76SfxQ#OMw&MyIU5oERQbfBPJJDN79UbLJyBx}B0Ea=I;kQ^r}~v+&paCm#BG z__&I%0daIZSU-$sJIEY;HJ7@Im~!Z);p{b2;V)e`*HI+mcofOVh`(;zxg-{~_ado)65Q z39Aeb95?2F@{Kj8D<1)#^4c@T8tSRV&XA*KTN%iCb)T@QmaO;Y$Nr$!)+dJNIUw&) z$B>=PQ!=0ghvK7AJEoo6<8l2+QB-8|f}(=?j;*PHFng-E{kq!2CIg!T<&^+#j9eYiDIo9fcyK#XlPW82in(p3m> z&gHee$%o5PK7wFuv_1XJPxKkDm`}=2n6-15j~`Tu;Jr`=M@5}eH@DiAqc9vZ&R2ls zb7jt8&NrzJt)Bt#g)o?Alyt-(1wAtV3W1VM`Q>e879K3%!Pp;uEN34*fXoZ6gJkgN zEWHC~TH>P;>K*wM=ZW}(Z=TP}C-}3(&qXDT&OfE|6PD}N6Lry}`8NNy@=^buPq`?J zBI^qlDIC2q(q)WsrWC!-@7z%XHbF5hl=LEyoq*gv#CQH!N}z8MI+_~&_*SoOa&BLk z%tlyjevGDk(OF=mb%51liOl}HBcHmyJN(w+I{&-J*Hn)+_0&E4yXLRB593nb}|9kbt-bL#+$W&#(|QJz;c8b|$==L=8o z9YMNP!v&F?%4NKM*%}Z8ACPUBahkn;HGir2%FU^gW4kg;{=JrsF+@KDK#7^K7u}OH zcTQ)?PkRGR5EXay7LSW@+giYCz>m#mW7S(Q`X^t!OBr~3aYNg_xz`T(LIc-A3npW-oR#+6$pL%%}IboZ=y(V z&P_?JK9Y?z9pDG_#62=o*#|G-+c4XbAsxy27$^Vt9_hmRO@cW z&ztWp&`>Krsnn=epSvc>JZqZ%Ovd?_2HS7Z3u2T{`w6?3x1-$f4a57xE@}DDJ5K1c zZ@kLt^wQ(*(0w-GNlR7-@hP>OZgCc5KvMF7XTFYMP&G6l_~NTWf5yhE?|3>juJs1< zI6hiG9{5=oCCj{KZp{C#`QM4}RbVZ$9uvlE?pU&Oq+Vd6>KyL#WevyPa~X5qifHb= zovEzcHbK2aZ;Z6pHtWiiA4uPE!J-+oS`88-0d~LYvV$=p`zU=xQvN}@nL%> z`H|Q8QStZu!I6LNHK}&<=eo@`tQRWh+k^qENJx0nSJ&T^p^eZwkko+yU>~tXe{2Sg zyRZX$cfQDX<)6UDzquP8mH!PsVIBHN!LpoiNc-H}zQ373m2e-#Lz`Ey(GeT`aA<9p z$%j_XE>3b3MnCH%%lK%Qf9MtiTgPaq$sv1v-Cse;v3GA!Aj-9_F^xbQzcCIjz$}z^DnoNll@YON^JiyU)5?PRXi;uR zkXYEta$$#~X4{7N}tsyI!gW{6v#Qv6KHXb81bbUbpE(IZGK4d>rvgWb2GT z{00;V%#$7ifn=j>59g0?GT(f-59Lp6hq;YE-11q_ftg9H9=+LI#XtBZA|Z2R@JoOJ z?J9yyn!in$bXtIKGuAA1Vl1R_R#OUAySh}Zxx^q<2I5KoVyXlNG zq{m(7|42SsbEr#-EnCgD6-GM%-y<}}bh^9m;IAn&IF8ua1?p)LEn5+A(|2qQ{WAbS zmtr{VJq}Xpp2|frj=0SVmaLt*W32r%xWug}MrStps6WGy6LC_Ff(K8+&pe!9!!bDH zbc|7-DL;MoKfoMBJ%+irFlit-wD0__VBk&>CEFts8({Ztj%xX8k9fvCmY-ObbpD4p-RH<>!?8r(V8rrNWI5(UH zQ5g2(J2JnQJt+LfD>w|FhYHq4Kt8U=-ZX>7?JmiTEs8T#!ZtHW`V1z2OXD>lqerga zBl!{eQuELK?s9$VmY>tCcBby{hDuG?Od-;Fre3XONoK1{x#z^Nzj={_@sH2^- zx5XBiFvnqR1lRv_FOK>@gpb+B!}vI#Hy_Oj{8aHNfajy80#B0vWB5xl<($PMX%2RW zJ_K6j#cXU=5q>q&3P0CC5Z96ogN$`#@E(Nhd8r-2{6K8XU>hfekl_$p-4+S=K=5_% z2B(M^B)ImEFgb!qZcZwJfj5EM>R)=3LZ-ONJO_TVlh8~k&D_DOPc8y_?RwTzi9Sz+ zK+H%F7AnHY8GephhslIakB4Bky?(c?dJ$h1{N(DH-Io8=R5G`ecNh7D(CzA@rP^J36fZ@hn4K_0t~vhX|9byFM*U z$fo)v@A7SUo>2Ot-n+K5^4YFaa1=H!ZQV&b6b{+a6Klg}B*kZ$mQCfuMT) zK>ckOW(syIzY@}G-e*pZ--6dc>pt29(V_9;pEi6RYfhb@;RONU;D-P$8g+N$QLVa! ziE{dq$ONZYqnot?i9rvOhDjn7IZT;sfd%cb+dPbgS zC+&);2FE7EwcNF#X2JYE?{UBdZx zj+KT$pdeEyPa^wAdng|9)(uXU!j~6j=DpXStfG~seaL!f*!A;Qn=^sC^1Zz$kEiC7 zqK-%MiQ&|*^FJ@IFFD^SCcm6nFJ`7gZA#m<9HW7mTsd8nQd!fbW3jcOGurw!c%L9( zksY()&R7E)D%f~2WIqWpCK}gVogi&7_mTA%EE?c-XhQz5PE6*zP*QHdU4$Eavew5# z_yY!%*@?uVEE}fm6lJ34a#^w?wg+t+FA{OxFpvQwtgmaF@iUF%KQH-v8 z+a+|wN8$1O#92X~8$UB!@g0Ua-^~AJ{ESnDBmZ}Uf7G9FT?a}+<$aTzJ+l6Z7Y>eo zyJ*J24@d4jP9I93I;Vq(t*IOcT*I7o>3WlfY2}*a9T;M=m1OS~0UEZ5OFbMfR&dw# z7pqB;2bwTAtwiYCfJeE7ko8wTLvtU_5A#lZ^mtswzrk0k4~_pE`LiXM^g2BMyTsQd zR%tS!HLayr0P3y1o#8sHFom5hzCN(mXDP-!VOap_(+i@&XDEZljlD#-{>}A&G=HhC{BGw@I!$Zh!?uDun!(hn zE9`Fp^e={HnkvWS?+%4ICb6e+rJRLwq^S4|&w+J9^IRMN#v3sFt3U~L#kXqf{=|I0 z5Kc}pPsJxc z^hs0g%?Umv{z{OI{Rn>cee}=#-!=XUlr>?B>!9xh&zo8RJ-@&Yj1I}`E4;sAmu*&c zwIQYE_uTCk;gxZFjy zYwQqbBKU^ToMyNhxL-;>2|h*qPRkQyplKs>m-@|}CnX>}IUM}l54KV(nzo}ItM;{1 z56Jc<+*$_59h;im|CoRn0@2GsZag%ydwcrFf>!>e43y!%8=aa1baGoS^&4LsyLBRm z4IM9rZG1X@14(I19Y(rxOnld=wUGImk`Xhd$2mU)xSm~P)lDK!&mMIhXL01^#^Z-v z4t8QqNMwX?fpw`d(AD@>{`kSreSkl4PA;aE|D*ZjV9{sfC$(HANm8Vb+ zsfHVIc#|UwX1kk}nr)pt^FkxWba?@A>;!j5(m3JQupQ>>qXr~u8@z{;{kYsL7#$wc zXt(X5l{h!g1s;4LH7`Df+YV~Iz`G{RWligD{1uMkL3s#&nH_z{f7ke)4l|#aQI9iw8 zbvA2G^2ioH=j@}atzd3&tesJuY|oitZkGhm$a_Wob*vy3V1MxBKQasDxX_n{PIOY= zoOgaZ#`%|9xv$&9$&Xnb_Mc3T<2%2Ge$M>(3u;d%_eNH!3$qIr#5m_w#jib)6& z&9_EWw)&ya^%ub?pZ?M1dwp32)#0pPD%QHS&4Oh#^>YBVq#JwgQ8z*`l)DnQuZ_lh%WL&&zQesPQ+S-m>0^{{Vks!%z)pUh9u4XPSyh z*tM}435#tV9<0dmnG^&I#rmxg5_$&!`)1WY?GXS>E`&iJzOuHG)_7jb05gMlC&!M_ znr7>?C(yxJ7b5s4;wQje`MXYy{}g;vHs9$|6FM9=%#{-P*mZXNhw!JYPsv{)-0^y8 zQ>}gF^sx3CO};POdr5dD)cncKiSTDinTT!xG;^%!#5Go4NXD~!iL}0*M=nBJUhSfv z2K;iIIdk1KV+T9NOG6#=3>a}gDIr*6+MDwyUv&Oa=_GT?agN%JoX{BZ@AlHHN{8M`)LTKVVq-ihhNz+$6KRX zbUmyM9s0NKzwj4SohRWZhse)Fo|^Ba*pod(Wz45TFb|x%Zzb(@lVXlDS6p}*H_2Yb zp5PQ4t*FphgDf6ojsVj4ki{ISB`TJyi@#? zWA8V|Tyua| z?|r%H(NaQ}kyG~{T|GE#p4K?^Szq=MM{Q+vx7b$^BXv5*SrmI*f+bXt4C*ekqmD#_ zi=FGn9cyv&{#zrBE7|=63mf9J(>KnJArJ3?{qr<@@9WvWPs^WFow$x;?tEdVUcvyUKR*u`B|7vn78)F6a4n98kj+*TovRm7|9kU|@DH$FF+9YUNnct*ZA zI*B@&b?Wk9Ze&9zG*Nw+7yi0IYR>rQ)|P??V#?wgW0UdpSV-4gi`vo|PjGz_j>kha zvO|rcYwYBctU`vL$8}|8&VdvD3e+m#mJwkN$D2U4VK1M)k9UrrdNs}pm;9G`;(I>V z`Ja3IfM4@f2v6@h^Ya$|TA5Yv>r#?o;yb*P)cB>B{p9b9U$(vwaP7t51&i;G-AHlN zJt}J0YhZ2ZDOG76jX=MJ=@pH4yrX_DDn+2U|9GRvIWIfT&G?|1S z86p>g1OICRA6F7oQcr{Ue|FL*+=Oz#Z8 zPh!qrCt~JwdwhAX@_!uvkfY0S#c%Chrd#4eICHuaKg$8NN7F=#P`nF~TXfFGwcdIG zz&DVb5)NIgzFr4ZPnql={Kl`gk*d-*K^7j?>>oUy?Cd`jyT#J!O&8SY&BVAthcA{o zjfSH8%bBtHI9eEkbTV$h)kfsU6Tgdf*Zi6LIsZHGO@KoT^C^%z8lUxV+1d)U58&|S zw8ZiRjg21rZ10zX@ZwLqx6F*?^V7)@xcjv)Y&UY^Prar=fe=17jtyh2*CD!5ov=#W>>Mji0Q*?jHRa)u@*1A9;T}kju`);{t4O2lgr1`|Tlh z*J5J!V2mYb<$O64bgir`^q&_W?T5tAjO2V&{KxUpzQOPG&}W9Yor7EA*HTComf(+Z^B* zUomdsJMz22zdirE$7e2jFjYP1y6=hKW&YQE=+}HJ+B^>TYjt^jvN!QT2;keElJa#g z)4;r$kBU8}>|V5@Gh7A&bUU#Bz=O129KM!rmLzioda z{94}f6NbZVcCN9CS-W6z?d9QyHz?|~&tIr=Y zNojG6ksLLg(P{~wR}px65P3vp${q=~W}^p!KV4b1#x939T=do+!!6TRo;rkJa9-qW z1V+~ZObcX-#=!hQm4p3TV=QA8?%m*%;W>f!|ufAa5KFUmTh@rtb z_L|DswcoSe>SedZqh*W`=qh6uIwvC5tmp?qT!r#Zew_A{?y9(9Ccgyr4x_(%mdS&viq|#>%w6M zz1+H2hZZ~%h_1f_0G=b~bQ2p}ydArufeH?z-xJ>KV9SX8dgK@_WL>Cvt(HL+^>5fP zU1=^je0<9=eA&)TcPD-{5`Xg@_v8Z$luGRQE1sP82lTx8-g*zjpM1T@WTg+~Qy6=~ zd2qt$O=61%gD+a&jD6v~@4H;|gMjvo$Vi7OThyb`+xb#d$NhUR`o;isK#RY6|LwON zCns*U7O?(yOdwnJcL@iQy_g(%0yJu%^`WumID*|1zOj#{C%*V&3wL$Z*od8UKm4yEAvDq#I z_-_7n4M9E+Ktkrm3rP>eI;k0!pI3Y2GC>U;5RDVV*!bx<7so>RmM!RHN zX$f=%gZ5DVY|txyl?j;RY56N`JIGz-zb}y1Z$i2$ZN-0w_^mgUBPMG^n)IDl6KQ;p zW6U}D`)|E*dGP~Zb-DNA%bw?PTY#Cv^G^{@1#eiH{ch6RZ(r_x@T)E#`FDTg<;4$v z_;UZv*B5!;4+s$*TIZSJ&L6$SJn2Ln@x~Q3G zj6V+fd;e)7PmzD_2~7X-e3xqNKaB{^Cvjc#X=L{kZwLhd@?p4p01RsC%Rf_*UA^8E zjSkyuyoI86jQwIjV_KFvkziqDye*8c54=GD=C`m<5;sE09Js&5;X>JvOStl zz`(Ega39JKCA{1C!!5tNq%?Bv(ZXSC{_KRt$H;+C=8W*imOG#kKJAMxka`+sZ8AGr zcf_voHgHls9aF?`gN?s7jmA9LX2={kXmH%X%w*OSS|--Zer?<)uYw1=2LBO z7+3x1%6KdP!TgQ;hm61OQm)vPX8KoUnZcBD5NcXKJEpc2N>A7qJxRa%)Bc&u`@imA zyWH0pi0eIAHz=WPXBy5%YkzS^V3*&me9|A2~l9N&SS zBcBY(>uKXdEZ;3BJsvjyoB2P6FR?k$CC%=Mn&*kO`P-cRQt2?0=DEhDv>iofNS_^Z zkEy7?*WV7@3+FF{rVNeZ*dv^!j!<^p&4^;z#BR@yC+ONgj;0fdG^+8=Z0ymGoBr(Y za%rEKKi5ptEuZ!w@%LP3|Cj6ds(vQgWRenR6?pyOAQu6m9tft(Ikt2%ABvP@PV1Ps zfvkXo^CZ+C;-mS}d18L@aJHV;( zmch6^ni@Jqs;+TF%&}Q<+;UC_!C=XNZv%|o7sPVl#fpt&=EcD>|O%9LeN92L^e?tCT*^>;-B=^|-i#sOgZtZFxIsf7w&38Hr zGPRx6CEMJP=pD!4`@^2VCz{vd?Ki%7dEq_pyL`pJ@hdMM`3>K6dG)9NEWH?b(-?5j zuhx9Umsfp;{^2XzV~bUS1G0bBab4WX z##{f9m*1U?$k^A66B-144laU$(bR0892w)GuhG?H$`5M&KX-=K1h2=ezr~JNj^X&X z@NvR>Ui@>CP0ulukS}I_Mq`poI@j^dCm-@sGtks8glFaF`csu9mpf5{aCVA1HO0fj zEPNPu^ik;-LcOyk(}2#t=Olx5IVlix{Qs$Y6KLJDv#fL9q2@{@sZ^0Urji&SAps-| zGDw01h;6{7X+@=-x@}!O*sG;mZJb!3OKoje)3EGGM4?@3YlC1rPoOrPMr>(asE9}~ zfrM02m86oYx^?e8r=Q>Ryzl<+?>oai=iXaM*ynuzz4!aR&+`s@|Nq~3zSDX3{^R>*A$^|HRS@c^7vwoIyC{nuBvF06@<@@V*5*|C}c6;!Sj=0Ky zbz5GHY?Oeglczf2^>tx=l1f>HiB=O?waCvRjNh2hc|ppfH4zrsW@{)1Y)kyfgD0>m z%5m`{n~mVJ+4|@W8nLZRL0y^Y;I+xj`aaZ_wZ<3UmX6-MZ{-yQ{*i4h=V3{ChOd|VFWmE-asM0NJf8CmlCz7{8ebt5+5--f`D>!P|fRxbL&SczpP8{e|(-AN~RPk$?Tk;ZAeW*$=uA z109D*JfE9P4(!AFocLCBlWkO0HhSpvG@+o zczCK-U}^a8!nNP-@qZeA+SS0h1OoL8zXo~$P=wYxr#eVJ$w2l*;~JX7!A6$2QP$m= z?Kp5Es>FpmH(tcIig)HW>)$n6>fse|R!M~tiktj>&UA^&9~~ENwr}eJL;}w&sYc6K zz}C?lL(!*D1IU+oPj?hvm?8#Jyx_2>HuEz95?H1qw9Uh_g1(5CK{nIE?O_Ow#EzUD zAaRFy_K33C<7UGHk9|%sjc*ISVyQT$f80rS#6MB=!rK4s#m6m0=#h6w&8a{Iio~_b zoICi#>(|Gn=RP>@`HU|d_kF=vj5}ZUn&5PY+^s`r&YuG^ccM<5amh3Eu|0Zs`ocsF zK(R*-#=+HR#@#P{WZd-|ey86Wc>Hht`SH|`|9=kef|DdhHsO;WM(fD8_%4RV?Wyjni`_e#3!EyT?d3LI(Cxv`tRbwVL)GllkjDB zDn7;BNLT-#Gg<{Z77mG1anLDkMj3lc%zYu5 z7Dnu~1R58iR{|FrxZW*jG9kcq>;0ESE?>d`tHqu6r>>v;!`fNGXD`LYc;Yo_U4iTn z*@nkPk`wSUweH6FWC*u?a_otESHq%~>jQwQ^JND@6@4pbMAJmAv!o6Xck`JeIJ_L> zb^U;lqYwv0fz{CS;uHSF+t+#g7qb2D;L-7WTKxNX%}D{iZcbf-b$i4}w#WqtD!48| z_wZns0&O-HwcJi>!^t#D?m-*?pCn<%XUm#KW{!RO*7_uWStwBC*rsKMwDGZReJnSb zEZH+_tC-G?U%&>l6N$Kjo$4-p_vXxc773JT5)-V%Pidx?b*Y41{XQNk`(<5Br5bZ{ofFR3dhE zgE7s4EPuunsm12g{D8L>v`_AR-RF*bUh@XM67cuO2mk8-Hm*JTGk%r86tYX5a2{mi zi*n|c$Yi!t__8u6b!nE3r$@bi@r7gLY99OGNoT#qC9x@D@0uLJ7njJ+gvalW|2@2> zr~1E5c)W7WNh}OVHGBKU{!=BKJLYf4fCd|wcVBhPB3^C2>rMIx=jJGNY-^S<_ ztmDOKr!}*L+BbNnv4@Dj%>io6uWoq~78S>hH{M+{D=HdjnuB36=YeK;3B2F3%>7?u zOvFJABJdgEcRIfzKG?J2D^HAR;s(u)&sBId>GULB@ZWP^f9c1Ll5k5SRO5QIyxBd#CqIZyS-~7szkNu zIJvYY)Ti@rTU#MS$K(jOgao6ugO4b}o5ojAb>TUy|B6;|-vIBpliwQuZNs|;>uy~3 zlM71GbmK#J`taT5hhIAG|B|pdzR_hRo!nDDLwJB5V)^?lm(AVql zGd6PE-S*Ta0p~LS71fN*K{1OYY2;{Dvynx~ShQJnw`Y!k{r;{wp%0GQHtfnwofT__oM`EAwpFq3r4z4 zZ%f&5eC5ixy6WY7SgpPz(y#d}Nf7d}ri&XRu@#D(jF>)Pu_L|9Qu zTi2vZo2iav(AD>}#DW$_V&ZfJmpia6W9(4$USIdCbvW^bRPM0D375O_9hdAH?3RV~67Z6_sdd=iQrpnEzTX&6T+bT5>fq3mnrk|*b(&G*ew#uM0Mf8c zdX%D&i!LjPAeN;{r>a`oFg(!aTmr_Pb7%vM)NTsD@SK9T6-8md%?JD+hc8)&r>P}- z_-tl0(5NrE?QM=!kj=KWvM)hLU=Oy7vHi(r+q^|m@Zd@&yLign$5OE(jTx>E4+qQnecRd>7Er;rc_~N5;U29*7$T95WyTEh(KRNOKRx!n% z2WliiMbtabT85fzBCVM2{4c%WMdSHj^IOJUum3zft_tg{+pe=8YWZXrjT2hy=AC9dU8M}TUM8JR};ywHNTf$RVUx%3Q| zeTE5?%l`8n5`KP;;0e`l!)ZMTx#Lf%kvPHX$u+65I%v`)1kXN@093agZ?@8u5Sj1X z%Gj}JymB;7!>k*FX|Om)n6{}kIy1h}EB#Tt6W<&x{x>|M&T8NP5xgv8TSvO$XX7(z zcl6xcY~CBBh3aLn|ERh_6C1PGil?ZG#50d=zksY^*Lr6+3HbZ~ayAVtEM2hbONOmm zZ=TI<#HCJc@~@p;yO-}09X&g|d#PTD!wDcHZ`}Pl-TCWT{{=k&NLAQlGUTFUNkBd#&eSfkzo0)G z<$nYC)A|U+bMW-X{4D+YM?W$SpL$YnG3bE>A0TX7{+9rMZt51VxZK{SFBQJppBx`v zd3xOa$m_<7{*!MWcYo?#l1Zc^FTQ`P&5UL&yn%|y~f9B3WfYxn;&AzWcO&eq(TBsftPg`bhI4t>e zf+CY?dQN=rUgM#<1$m;`2f*ah@FiRx5Jp+7yka&={}Yly$JYW!4BafxQ)S zF$CYAzITo73VYq8^MW>^bTo3wWgF6NwU*_N=)=AFV?7$N-zS5TmOmb}K;jcn!&(1! zNgrY0;AktJIPg007--V%9C-c}X^^}43bPqc^nV=QFX@TS>j*8e<40rXzr=q!zLM@J zT>MNz+m~Nv;?|x09WQSXPdq-Z z{N#_0EARP-N5J{qYaz!+d&B!EW(4ujqe+-~ZfkmmYN7sZaUe@xqslyI%g9 zart=<+2-(o&l&nX2?{fYp2tFHdSsza1LBONm_1}#r|H%)Gp$8N*LZJOLQIvkh zzG*c|b3WOqPSWS8RqJlu##t8(I?m#*De?CD`9v|74wh>tRzLSOc}nQ@$M#n6U}=hF z`ibOh{y&cRTyr|O^j$)ib{1ro#HV^A+Lm+Mr?6sgSrE)SA&oVhGsZ4Zu`%Aj^IYsz zcdWAMtqBuchLrQ3r|wcBa94v&Yh6%?-J5M$|27qIcv@g0JDl=QFuv>Q2o=<}T&Yd+ zmsY>}D*!bWD(R$m;G#Ix@|0bDYcaCuwpHm1cBAZ5${xHK3j;y zbR>S_BDf{~eW)2uivL7BimgWdQaIcP3WRUt@&!x+{;vP>3tv7S{JP(%m;ZI=Uw_u; zQiew1W#@G)td}{&bwU3D@S;9|_srvuj;H>`4~?h()&D!Lyz5_%>mPZ{A0*^I1oDc2 zbHtxG&8GfPn5Td0$5a=^s+aCBJ@DYT?=wDs+^@g;=UM$l{eOW2J)?KrDjw&r_lh|b z4SaMM@K*_U-8~-ub^q0PRO2Uq0Z-FTnOF3%fBE?KQVfL;o zF6P-o!BFYA#y>K;_&48P{ZoRrt)9*#NAbOnvB2cn!Han2ml(W%ornA)V$8t5yaGTO z2*`2e$izUV$2Eaj1V8J6wCxzf>^X-XBd<9_iH&Cn#;Y0mhS|qU-|Z8MXFE7(Wt5(< zI)zz_j&=63zvnwsu^dr}o`Xx*F+B z)}1LgYhy}`2D`6=6hC*@FFBk${uE+XVF&MhAe9TIgKatV*b2=zk~X=h`g@G2{><;v zeGiQ1|BC<2pZMpMfKZ3W+d#(oGroiZGmV$)FI>8;XZG(OAO7LLJ3ji(zd5ez&+>eM z)&qhI7j(Nz{~TzBpn-n%c)&J(wO?~MtkC${hdwYq`~%-Rp7_DPKJI+QYsZ6c`!(Yp z{plb7Way&q)VKZQ5De=~9T#s|=z+vTzy5cOpMCQ8jw}EApLuRWdzm}j7ja*l0iAB-F1>ICx6^a!$bp%==oHJP1HiWn8$C`VPi`*aWQc>VTquqVT>RoY8-!;A=(4 ze*-*qnmHRUAo;5EG{clbH88EKu^g~*jnFay$vE?#d4;5_OI#74#j<)qdJU0BDn0U= z%$4@W-qySQ;hzv1+Y{z_)e`1z8{W}!Ed=aIjU7?hBd->I9Zg(4z}tqGBl}B?c6&qr ziK=r>a3!k{nGvGnR=@o-AP1k53GL>qM%}qcBGDY47&6h#i-J&1E9Og^ofR0#?Zm@v z>ZAVqqL4&S@P8vbu)X+6jpmDtkDgeT`~lQdor}E)QeoMsRy^~bkD4o%cFDz+aYs(s z@`{NAk|ur(LkHLDr#7PNEnTcPKJfK6tZ*Q8Q%pM?=92{HHQrr6v07C&%lg|RIvg+f z>=V0^>UQH3CC5|!qbKAe{%;a*G7*yRY{|_Pb^b1dO&Fyx4FO2R`VieO{Y~SpSHICO z`{$+5Sev?BK$jJ*^OQSneO>QI{?7kC-upj%{doMZe8;%Rz_$U9FVozlf52+QOvpVpD?)4Qa9sSQD!gZg0c22^P2tfhZ66?} zyj{(pV2hC2W|Td(;d%$#g>7u7L-swEr3-;wTdIT6lG8`cdIwYH1y0vdK+?-u_fX{< z(hZphHNqllK&W<)js?HB8xN=2x%|t%U~_}al;)uF&3fpS!ywXO#FD987B^c3Lbnu2 z)AA>r<@6<0@1=pbbx0;Y+&MO`docTWcpDEYHb{}jZ}(a5UH`F*|FhzSnemq&e92iZ zy>$VONMW?j5!q($9qSV2c2bC{II%FN#SQk7%r(=@V+R+*SeJin5yX!t`}I2yo)-X* z^55#`z+6v8UJ;7TL^a{N_3!=cFV*cWdYN6{>pyv#tJlN|uODl4L0`{%^?mb46=tevU6{N)* z3?l7IOEr?dbS<&WMjU8-FH5zZ^^Xqy+P3<)^mgDoNcrl3O^@%B{7Y^adJP;qLyh_M z$?c(;I8>e?bm@HZm(SJlj?Z>fWJijQw_XU1k2LU+`)FG*ZOC{JKXqkOc+XD5H|cG| zS0T)|6lL;f5RJyfM(5X9w-mdye$*=C$;3cP^xJ8)=(|Lid8}hx8rN#mv|c?XUfO`> zo~mhJE0raaIQsS2Dx&E6m)>ztSsAL^@wJ0THw77E?;@3)`HB7;AKUof@W!op%wnnm z@fW@q1%dS(>OyCm3LxT|9L3|Gm+7~h5;+onXg=0~m;Nt)%FD-d-ui39+2D(CNT1bcAs1} zcGk#yJ&R^SP?Jv+V~*^dg=qqgU;kK&v4e2j0%@N5x5H-v-@b5mqJP$nhK)u#Et78Q zmh{l6Qrz@&@t{sXFXXbAJq)2)>rj#%g-f4R#Iajs^CfO%OWi+ z8~I-ig#%`&4o%Ut7AXFfLroq1taT6R3A-Uv})y#?mDSIjHD5$WIV{+kXnAl0HxT{S45B zxB=d&R{iV)=lr@R)_U$clRoJw-daG_$>y#nnBdB_rHr?^MsnaU+(9UfbspP%9?Vo> zc>lJ&WF=NFp?*^%j?x_AiaZ$hR=EH-$I+&K2%87br7PQ8$G6ix|8jE{|H)S&vL?D! zw2s-4CR``UlKP>$Pb!PLJ_({j=^hitF8D&URjmx#P&Nq~V#j}ztzBlZ|^g#WM@U`HMO|*#?eqot3z9^kP^7UB~X6V5)5GEVRm9c`QYpSLW zsywROHmKPWLK(Ntyn)C*b}@{99TT<(r7wH@GbE~9bjwdGz|acDu>H2o7cGQcf6PzB z%Tsf8PXIp`@#MLzYTXq{TFrUsOZ4<=_?J8~#-Dk`caLBEf$ts%`rzEP3wgPn5@5zg z$kMSV@@)I@zw#%?hyV6p$oaMGt+jsHP0i8;-TWs$dvK%;PAC5o%-v4_1iO>A!<2mD0#$(u{J9Z4(gx44_pYiY)t2HvFdBtbpzWkDwiwv3VHBlOfIEi4BSd!D;xM zYwa>=osQ48EdPsh^4mRgQO3Zhs_LDq$;wZ7H7C%JbT)wpyvdr>Fe!a7I;5&d5{huArW~QiYR!#!Kv!rwM48AF_1@EKUmV;VrGu5$*UTRzT z88`yebU1YJ9DyW}H`^vfj;&4Vush$@IBN28Lesjzte4s1n=vW^nr)AJfBiZTfT!Z) z^VIb_1HR7eMCUle>%gCNeBYgEHD(=Dv#ytVN28uKxLcp!`^|3};|+Jccl@D)ZySH$ zgWot_@v(n7^i2SYAIrWx0pw5k#`w_pefxOg`@h?F!2b0ATnBx!UHYzH@71hrjJ$Tm z%-CBB6|PpL1WegesAzs5fJ_Si(CbhAKK4((e|+H2eG8#Vo=Xao1C8}1!Q&+#`LXd0 zKl9DwTc7x*@uu-(y~pW<0w)$bdhFM6FP#!uMDS7B3kxs ztp~++e)Lk7@x*T#3_>+!#M|yFK`semBKk*&ox#F)qK_1Sv*a(T%HPP^j zzCHIXj~t9I`gsTA$!nK%;kaXb|vrO^8Bx&*6y8d<1=E*c(|qqYUlgMg3zKY!Q% z45(k}I=FCoTz=-M@hji=r^lcA(C-+({K5~8%X+2anZrBAC4qnW>kr1Ade^`g^m#8P z@;N3tuVNiCZ&~~AJE+covubeXD};?28B6<@V&WOpx*>Ept(>~e%enEhus7*{#Vej$ z@_#CxI*@ScwN}k#kbKi7m%Iv-dPgg?jACEAac}>@i#{!*_$sN_VvAzi)4{bL@b)vw zmNk{mQAr0L%Fbu&VOo7=JhvlLiyD#nk@`y<2dChhLMFa1-aLce!FNdR+y9Ap8NdmJ ziI#!oXaerz_Jy3vG@z8U>fZLI3uq&C@Jls=fu$UoFsyzVC&L-t5xl(|gO})5@viiV z{*zhM$M`2Mf^GaPV%1D4Uw9W2o3=gJdYQJ_O}5x;h?Ds7m_xQZnBMsFnY%HFEW3$m=2qVjk5%Da*xQ9K z$NT=v*A{>Ix7)>dEn0fB_ehJ-v{QBlYmpo? zv&4e7j2ymVHFu9K)jCEStCU0%y&dqOzw;OM;N<(pwL9(|_kHxeq3Flsx(4i#%q{YTkKhy3_hqv1Aad6`vJw=E8|J z4l;(R^7r;GlDrJ93BM&XuA_2r72%49PwiAZe4q4qLQH;J{hV4#sA5skE)7LuoOvTP z69wgo+|#)Simkl#OgtEKC=gLF%-)gDgk>CNbN@+B6a_P3KjC7Ms0hfa;A@&pPy~JI z`pGOYG*P^I|Aad04;Q~3Q1?ghnCVCIV%)*Q;nw|$crt9G1)~5QgH^HU2mOfrML>9V zfgJ=!9+<@it_z=}X{(=#+zV|Il9`sWm$Bv)6{(@;#XGePZ(kKkSMF5*<+=Uu;49a2 z;T_MmV1xo5Di)K0E8w9<$o<}JYc<~u0*W+hr4e`Z=FpKj%*?%b8ndXa_rR-+8B!2I zxi493q}*-2Ui5+yWwD#U-Zg@@urs?>iu!aONZ_CL#?v@cK=t7e=uJ0 z;h!FV^y1f#fAyY^`Psk8Y|DR;gsh;Jg=jZ^DXhb9a_jir<63~+k!r%6gLv^}uEL|R z&iYKKsPWcZ7?1wt?-*~o=c(}rU;O>!7mR;1p1z<*Ip%84yzKwHyT^FjYY)did*6j| zhn|Ma2exo`kv33%u7BI& zWWf`_X?U5Y{?9I+h+K{ohNx7NtmlpWrwm}I3Dw*wMHDm5tV5^W2!o9)bFYbc5L9DM zBi_WUH<7r=F;RzL$`#%9M-o&qNiT^~r%@RXZ z-0N`G>wm}V562yP8GL&mJVxHq8a{P+*ZBOq-!*>!`+x6v<}ZJXzFn7Z2GrHD z4T^a3lgmmnVd&Y*JoEo$`eT3>+^hW2`9g~)0W^;v6cM$I-NSWb}1Iq<1pF{tZ(;ac^b?NTpSWR_(P;}fQMm+-&`3;IBr6^n;;Xy!#$KHGT3Pb+ik zKs^@z=n-u4o5P0!zO&#RGRCy&dJZCQg$VP6az)J(QQM#&*@SBYW8+(kR)Url2$ebe zGE?(o@f55YLvAPHONV*I82|#cWAIbazRiv8+2U_}sQWU*tTpTQ-YrJ}L zS!A-g-_e#Lvi8Xxb?&U&C!7n8p>A7L(mLN|gPUwa*%liHg@>IXEnLg2ZMxqQ2;j)E z4U4U*T0HTs*e4*?)+w4E5*gzJsKHe15$xipJI<)vh>!P{2dXS>|Na~jOXxNb8Z>d`i>Z-BtJ9S^ts+_e7% zpS*7zzbrbVs&5juRCjdAf7{oVM>%m}(6MS2>)dU#{@oZ_=Nz?Cx<|UmUzk{4M`$cc z74ToQwljwhnzjtwWm{T!%0hzYP~H{zTSduIr}e;9IQ@>o3uopIIba@f~8Y zaNIsT{w6=vc7n8;f=hXmjUNCIbgJc1n}SB6pPk2Bk^$~=U{d;qw`$JIzW8nrzR6Gb zZ!52eV%YJ29KK{r{Kw(9t$^>s#L#t_@JieHDh5nir{Qeb+)Se_#!c^$yl#e5$7(lc z_YsIig7}ngcEz*|e0uYMLojm#7k*kpks>ZV!(M+IY;M3qd!+u7O`a8xv6{QY(s-Y~ z`~J(_=Km9mC&s$W%sdEjCv45G>ovr;zWQ*y;2z!KmBCy^rO@@~)q#Khvlqty^p7v; zBLMvo(Djs_>~T`*_cEt;2?g0sY@65)t&`*QwFCk6WG4~3GH0uW6rPLA2cH__AHPR0 z?eo;97uKl9v+KbNYGyL;mAYE=Hz03r3SI$_<2b!^i<)MB+A z;u5)}E$_Zz5Vsw&OMFU{X8+}Pf)r7yvrgFQhF2gIV=X?VwD9$VcSUSvCboD;-QZQJRIDQ^Kd)~Fb!P(ftV zEF2KJ88kb0xTF`u$j00nehRf6`z-~2%!Dn1m2Jh@31)m7<4-!e(s)Q*1Z4-`Ubbg z+{xXi&-C%^{~8+xy>$LGvHj~%GJS8(_!j*Wy~m%*9jnzCvmfZNs~cf4%puFf+JfmG zwO>I(+IcV*5IgrCv^o>BF!Zh1R=gCQKPK0e*FXG8z0AM&-iG&*DdX^&YZu0wUp25#dreZJY6|$>GcN|i`9#;1kjXCL61H7LTz~ICg6PddH=D8cdpQO zJHh{PcpiLA{F=ux@%ul^$;V!rJLwPtcaD!d|8TtS;d%gou$+K3UMCcPBKN~TePR5~ zAHOi}%0KOPy{MWWEP%;xwyc1Jm^=9JFpm^gX6k!r6_*2mI_jx=pU1}OfS+*020e|> zD2Ar-%)*i`ugTmP6@(&9eMEK~9v|F(4&di`t#G>$ zHn+s@kyTYXkFA!fwcZ^yX<3SZjgiK!rNr(c4**)-n@)3dEjAuA1UgK94cf*VrZCo{ zn1whzNpC_pfS)JQ|rIV0|g%~qSkBrRI>+Ou) z;!&Y?8ZN+`KD&)%O;Td4(quU&plsO6xd6tuBe72ip629icruuf+llw)*o$A8;H^qH zJ=?TGCu+AXDCGn~b>vQ^7ui>|&D6LFrsn0P6rP z9FOz`ouO`UGc_K**<_RTYsqSbvg8;ssjjUdHhvK_#PRp!HsGn?jHmsbSK{i94_Vex!Zu(*YVtildSN`t=l)ER-4HVbsd=PZ zibOGOjFV~Az`IE@#JR~<i|NQ-WAfvxC z!gS|Og#c?a@}BRTA2}TBe<~&>>XJMl&lrzs8hIlBGU|+Dzo8g4CVh_m;9>Jn7RHbxR%3Ht#%^Gy}IIUVn8G(*o za{@xH-VaVSvKb=F)3vOkwSA)P6$DUk0kCPPJ`M`lczWk9Rqwg>L*M-5z^v!i1Y8Vg z$gwQkMP>u)F9%4Hr=_OJd0V(M;M>Fuf;~HU5ij}StEcWc=+xH6kP|#6y0+UHJ)>cXcA*;u?HN~=uX7jA_v(S#>@i_HGbCd)P+X9W)xY_ z3d8FCgOW`}dc$F?+k)Ym$kcT)zSg9!hRFQ@qVLIV!$F)y#U;zFFR&X~Z8~vSSBmL> z67;pXnam&3I+m#!z-Kon_?`NrTW$r1*f8dw2z-!#u4n%`@ywa@b);@;9C-`$-5(y~Z~XZ1D*>DD_L5+7{vpG^u)Pk&qpqT2v@Mf` z@?oUidJ>}rVO2}ZWR=;c)t?12 zH;?VwH~};;Dg?q6ueeJ9EfP`w);ryh&g!s#CR9Qx&^0RgVqL}*|s9!^A^Br z2QD1oo39vTXnY&kVqvd%%r|3;9=7bO+Fdh$=^2|7n~Hn-s5u&x@Y)Ci4czHq`{1Rh zxkom)?TPrdKMx+VG|oj+cg~(~`U<%J46tJJrrC@rY?Vf=&PKT=vALKQ>tK0o9D*Y7 zQbFg!B9-KJ;^98QKe6A?|Bdi)@5N6Rw5|>6#6aHwgb}CyU|PL#}G`?O|*$E@(X?~u*PQCGV;ZQ5}_`i z@c2~#%cIOQ>lo-Wi{qVo0Py71L{lY5C-dM_r-$wv<5M5vEfJ*L=)zMoO*PlVbN9s? z>pDuoI?@=@>p)-9rQhPpbwUIz)f+-M;4P)ZL z20zw+sWAnz;zM*Uyp8Qv2jeT|P2tfh?HoZ&c@NBGh|D6~>{M@wwt4T>*kkPyXmClN z3av_8=~opB3qCP`Sokz`nPm{os>H6O=uLuMyr5y+d(OPe9p?m~*l)nV-gf*9atnCh zH}f6;nMX`P^jkMiq+rgWOU~>a0Sr^7Ln<3S}%q4JCk|JkZIwTX1 zlQOp*Gwe&Meit8o@EGZ4+sHHC@bSnTJ7%#vA6}R}yknHJ)TSx~J+ZjD+r~!Q{`jwp z!Kx$A0Ma>+aB{t;>3VFdj@&}*#KX@j_qaIRNnn|K9V&k>x{0JG9*nk5bE6zt2=KGv z0dzh^(`?BDe8n-D_Uq?ZY_w1mZXfR}f^3)d%lITbw$N66ZWRyNnc}Z=sIM%9-~x0! znn(xL19x2*uheG%vL76(} ze?y1aaQiqr9$zL6SjY4E2li~@6IOO}D(KuI-l;v;0U}8Yf--?3#`In9HR_E$*yR|P zeCg%niFPN7oDK`j>}2d4tox`mk8w*HY} zbL;r>xpV!2|1|&7?T6}+6rtp;q9QDdf z(yIVV0Cg(F0f-M@8RJLZtFP(wAME0+)=zz%X%JK^AIud0Tz_CRXc?PEL3Dtcw{3Eb zaZW37f3n$paO>+qs5){z}AK909MD^ahDs!L6)F93C*lE z+-x$gjpCg8erJm+Rq;Hb+k^Ly9YHLGx>z#b(B?*m?AgSdz8oCqpO72`g9=f0Hl2Gt z_3S4BX!U1+kfw3LoiigzSwB;VT}^gmRcK_3Gg}*6#%tgoFMP*KFzuiIto~O+;eZ*c zLsK-Z1&aSGJR3>YE1copp(h|nb(=922Vyq> z1F# z7qXmM5w_Xxslcb+$9TRT0Py$kd2l0pCj~B8?ks=&gBQlne)NLx7&pddO)%?>apto2 zoo(4@3Z6K8hbv!pCu7?OBz>X}s>p;X_3T@Z+_@D=o&9#^`r$`5Pd#&C{Me()gO{@; zNo~U#i^!?V3!k%nD`G70fnK*>6f2OeVuU4|ePqsCs`!#jzd1YM6wIQsg;UKgGfa*a zVxv}_$DaVa*RBJ(3IFqzm=xmF{GFXR$t#GU$KptHDO5NgwZrhzu4(?~Alz<%4c!-?acxeZJu-o z*M;G%%(J9Q_W z3ze)?Q_AXEYs!1)KlzyMJoOG2w)UB zdc@o~qGJqQWXP+5vjZ}zpd^}hj1|aFK7L_bi`a;3u)ihp!V1 zB{a%3}xBp}C6_v?j#?kcdy&jF1q|1P)9}EN$H|)_iYTNEZIMtr=ML>;@ zew(o;CRPL1Yei>{tT5`bk0uJGTeeR2uWe*I*MAx@D6Bhpaf}?mrgr@!MVV&1^WZD@ zg2d11__{1BmSz0~>?(5o@3Hxa$#L=h9ZJR*AbS5uX~tw0ax|LfH%0FND^EI$ui0o4^DU5r6(EqJN2GEpGBReTfNtp5ei_M@17wS;sOo+TZlXM{clwi(y1yPr}g z3l?-(=t#X(>6eMiQu<)pHmn@m9RG}wrJNesEEaQ#rKd&JHZ?Cf7jo-4Fs9!e#mWX6 zsvTLspoNvusrZoGD!vk~VCX8iGx|R-zM|gz#IxOQx_rR%F1_E)OWl@psIljoqI>-5 zd^&zBvWm@b*;9I#UvqlI(bZ`#0WvomZgZakXd5Ua_6PR!BH^(Pdss=zj**(3EGXAE zDwI5t`w2amdHTA~n2I^11+_7s{d+(UjIb}46<*KE8K7K{95dfXV4l7MZrAP?GR*7D@Rg#LQ_1?aor)JFg zxFx?!)68U>GzIIq>1=OFS5p#eBGjzy7iter!P_rJbFdFCUBpNHPuLus5uaGSM~{nt zCzWt>Bu@9z+obI1dZVM@rObmveX>gp9Zy`?xMhx5EsW^QD~zshX(258-oPCJTwz-I zV8^0$_ACQSr3iYX?^g++YF&CAO-x_6C9Iqft7nuTLuAdWu9E~Si@kqV12ngW@64gO z8UGXCF|Oe)@e^sc>;w#neQWK%Dfo_)i^{p@)3OA7N4`HeR|+h58KXc3q;>8kC>k5p z?(}%d6~A|0UyubPrSLQ(0><**SB+w9OYHlG3fA2neW+J6E{vc0kp9JSwti8@lj-^( zSNG^sgZ;p$V@(9I*T8QFL?Bevujb4cb~|o7FVt3YNF4ca*n&spHP(P%&x?8L+LKti zPA!@?fRDkK-!{J`y!f9zyds=Mqy95u*P304s8Yd=VsuV;&w5rtaE$$sAU`zFusO(cFGV7BCBf{-sv8cKGg{#e*SxMm4g z{0s&>?92Y!!&eygm9YRP;^ic6A$23KtubCJ=Fb42Rsb_VPZ3HSwza5{`ZsaqVouM>VVvwOxn**!cBpJ?3H;_i# z`X%wKKPE&PSz?x-wSGl@GQK!u*JZdp_;S4Ozhd3u?;Q61@8Ypy6_%BdAQiJ^9s2yC z#Jt4c&xXLOFfNtHI`B<_doLIVum2X+7InpD~PeoKJJ_O8ff~dL$6Y3sgPc@ZjNj^) zC{;z`rb)n^9(A3mcqCmFt1;MuTc8_{$*L4{97g{1H5}}ty8NzU1yy+u>%4u~LvuqOheb@?VegPu5ZIfvL-p*E5jYL5A&J}dAmv#KeoB``9bX`cc^5;ewY)VfW=;2>8d8Y>T{3&N+9c|$sA}X zo4Urj$Ddswx z@sQGLoT;(KGv@~8Bs?nPbZ`$wLi{u5b{p^xTU5P&ObhuL{DZ~bO=CbER)ji+Dt5$= zT>)*2p$3d;Yj0D@=#jThLkV@h=%pan!UF8J^#(KBB#?zjyxwgq-K=xTcCaFe9{TO{ntAQ`PdIZA0U<1PzDbch3#8YV z8Ree=%>v*;WmHG9DX4i&lK^5PL7JlxIel}tjvg6N0h{_Tq0TBaevwU zfJGa`Vs322JlgZd1!sT;(>@HDb~II8XeTDJ&fk{P9K&9}7KS&+=<&IOZxe(!jW1F< zY8VI2T>Vl1)4&O$KLIbfG}f>22QRr>)k}6rxEW?$MsqGD&+xsrC9I{lH3wcHc;K#Z z*nOMrE%}Qu%jUnEHLB=Gd!G#C_~MioP&A5X*4R0MF@h!-!XDyw_Twp0_mk zRzO2-grVk@LlpG^KpRQjI`g!!d>~u=GQ*tpZV=vtzzW(xrbbx~ zuxz?Nu6~o3K^rnI{3@P!J3zD7sCDZWd~-QCAZ@b;H@bDI<{TE+x$zJX(FA(d5tx6f z7AwK{SHN~}*S)e8x)hwF&(Q+_G<{*)&t`MmPRy9}C2FZ1!CC4fJa}niaMP}ZM-day zw&2Pvul#KJA}8Dat1d(2&_0a|5_#VL&nhGJV;U4LLhNQfJ?I!P(@(z=ps6kBx9ikm zJhhw59^}jJ3}vrrac>Y^AbusJ*WQ#pDNw}KmFj-E3vIFDU$zUV|tn8 z{!1}dnC+|Q;R zzPsyDloA82ju8c$syQ$FX>>dAO@6w6TX{v~bI1R2_>y&Mnp(1l-?jq23ll>L8tk%U z3eWlq0HGk0b=o!o?LWD*LNg1>Y|(8o2)kob7$6$kfOqRpL~_!ZYTVJ(sru%C1r}E5HU%fd`i3&aZ@&i24Oi^)wQ;=esn~5pVRRjo32e zzD-~Tu`h>>FCi9uqWih`s5XuBpiwP^yJIA8RTw*&dCzHF)evKicqL`t6URU6QmbHr z_g+*cve$CyZWWk0`3JZ8cU>I}WJNH0MC~3f4uQ0#h*1eE`H*rRs0?&e}*f9 zOnV+P%`in+it3_vExeSip1ln?2tdp$&bn1LmGWPlsk1DZqi6pW7xT^r6;V5X@1;N_ zo(QuZh9{jV z-SdA0FU#20k*@gZGTHbdlk}OVTDA4E2A)s;Bi@+p1+W)Kz1Lu`*VKsVgn2f)MZ$JE zAY&`dj=dB$PuEHiYMyQeiBNI|bFvO)yHNN-&b)2A{ymq9woMx!$yxC`FJ;;PP2dgL z{5x#wZ@$Dyq{Tetwre8_9s}ufu>ffs>G&T2P-5cs4p`eV!fSek;L{!+z~x~D+Sy#@4DKZ|te2f29UI!1M23uL#l5<9BYKNgW8Pcxnx zZ)z)pDQoF$k4@h+@Cry_U73b;l|?)0y^#vhLiJrRYj;xs06+jqL_t))jlYsXkS=wKXP(U+q0I;UHa zsbj>QmnEES3}nWTQ`mB2Bm?dkM-M(Q@=DSq5~|pN0`zipFye!L*BHE&|+wqe9|IIILj#I>r$BLr~&j*6ZL}bZJvm>C!@*9IxmO-haAQ+R#hb7;T9A^^EyTU#SNRCH6U4 zd&i8jMaC`*Yrq^GVZxlDBcD15aN34toBdqtiVf_&k7Hc>r=YfJszec3N2G56)TyaP4_i#L|KN;+E0$p1<{Y={FV%SyzF!R>4vp!>(C|Q)c zMY>fHEj}nmN~5FKA3$Ip^u$KdO|7RKtTeu^1m->$9t!z?w(&&UZ#gcJcbVc}u{bqs z`O$QCd-{`+Fb#z+)CO&M~dt-D2dUr4V#Jr3(n0rh&otP|meC9Xmt#uC={>+7Yy z{!|k45SW?)b(sj*o0eg}vJgw*N^cx-5r!whGbWcTRiUu6P51lxOSuxCRR1P{OD^zb zkp~>q=sq6!a&^3aDXr){HFse2D01^rhk1cOt>zS}#}>P8SM==vDtB-#0I#uMM)iW1 zLc*{7`G>ya%=<%Lm15gCw{0c>zv4SCYFO>3dd7~e{MT#=%sbi`oAx1Y5c1p@*S|l;ul~#^uj<1PWoCaKw*ZNgm!K3( zp>G$_BbcDl%A!Rcf*}5h^qh5VGYM=lO{73)3lGZDoeridzVdHXyU>LBsd(pyk&%hz zG(2WD)d9QH@KV$8pKZ6T-{NB0z}FUurd-*f?)ddU70Ih#f1mz+bz6jKtt=t6*5ozo zN;l$wN60pega;@YA>PLJD!brUi-mouUza3Wqbq{S&JRjWC`aNmWzM}N9K$^a%>Wac^-u4~;KB|3%}TSAU)t;BbDqP_m^Av9wwojg7qZwxM29 z6MJCk%k9MG0#W#-!z0mcZ5_jF@}u?JS^u(u=a}^~Jt?4bYrEv-9nSD+j%mrFy5h)+-4deyITCD&cOWV_`KT~d=N^M@| zwqFiFmG=X89ga7==rI50x47KtV4ec9#}4%K8vRS)Z~N*o{^YMn{#W!RLVRcvGwgjw zU;^d^HkS?xs={<2W!CqfQ)YQ9MUi3HxYJLozNekAl*e7aeCA-&_9m(L=$622f~jt{ zU<~kBye#(cralf2hkmza;8DDt#;4C;TnpqYP36xVs_YO3nQ2sVMrqgdtpCnCFO0YU z`WKHcf5!{Q0iR-3>-E`?ViR%Z9INKGt{5an;|Bl?s`(mJSc`oi%CKZq(Mp#&T8(Pb z@!+7BgPftlB(>O(zINi+N;`z`Xp<@|3~nc0eCPJB@Rm>$IyoRzUpiMx+}tl+_D*zK zO2Y<8Cz%$a@W{58?KcY(mT8=5;tLE;7qIccB^sAqp)GdiISDVz)#ifBm@YNB{nK;{X0j~rC<$5;73Gd_7be&JJ}_OH43 z0D-^_yMyvLhnC2%%@W5mx=-g-n9qCp;rK0|dpO>z2LSvlV7?l6)(TVc`lsTBf)4@y znm3N|L+@@6c#nS&Y01^&EU<=&h4XYPXK*XJ$3+y%63+Z9vYZ3$zjG}l7}uxfgr+>6 z(Sw+`J#si6dA_#2zd1z;1(bb{N#;g*%`S{<)>31OId;oV>mO8vtm5~k9HTIISl8;7mtGSh{J4}@Vn;kIS1WTm^EiVc+~?l z{>jtJUvl@lhe!Ha zckq^|&nRa8yiKi*Uvb;fR!zV-tabl{KP((=pxzED%68i7PZYjmrT&DdBLn5_p$_@! z=yQFNK?(rI8Hs0+^q#gl2N~Eybvof(mXcX2nH!#uH1Lu8XuL+#l<^*Z>WXaTJq_Qa zw;fL$iP6-1{F_D!y)1V4^hd|R)hkI`_4fNwg`edyNVe)3hGXk(#~Wlaxc@WXIv)Po zZyNW$;mehw9$;KwUt3=BtWB7jkEzGyi1EG+7tw5^EwSKpB$gHDxdp{Ei&A)X8&cMj zR#NMxAbyegge|#k@KSA>ulNWZH}-|M-xbf^u_+pBO-ebox$@w|DLv+7mInhix2a|3 z3MCX*_0Mmf(FO7idItY3zw}`I`CrAIn(nq__e|aSZ(fBfd|XMRU+zG^=5=HIf|q0* z6Eef2+5{zHr&?jz*6SC6pS4N|&RCM?{NhH^0Ict9!Qlr*{PoB+Vp46bhs8SZq6H6h zzV0*i0l-U|(1<4m_Ovg;1XLE5GvS{H-K&3^^bKzw<1hW1F}~_kWut9RO??3aP@t-Y z{{c(ZyV5EX*NZ%BUa*>pX34*8=xHf?>zG{HB64Rzjj-=B5g&Mohcb*RN?W>zei@|K3C6H+{n^edmAms<;!N zEZ2P$mKz9S)j6TyRA7$n7DI-yPi$sg&KqNAR+@Er@M+Fi z^!g<#DME@;O`x`YHu3gU4vzEhP<9lRj_M+DU&)+)neiaG{t7?_a2G#avWl$szojvX zyaei8`oafoJZ3)WOSZ<>W+r(S@lL8DZU6LV^}iY#Uz>9WU)ds4v2wb^XY$wog4c%t z51)Dh11r|D#4;iAWGNQu`}%~9>4Vn2%++z}frrO~Z~M>3gJ1JI#+@&GWE|+rhIpGG zANgI*%l zo!}MSso7;EksU8q%~Rv@AR_h;ccRbNf5`i7UzkVf%xTqWAQY1l_!+gvp2D%CGt`H~ z--d`HvC^O|-!=cXo7V7qLi`(sT%J*`zfiAwe8I~O{9q_i$++zCHS=dQFFt6b(WJgHrdngRb5&aSQHK_2F*9s#b)jV zUy`!4A{FV>R*v8ZFg8UIdJHA*I+R7$tpeD`&;1YZjQClba-RAm${Z6x{6{j&q^a?w zAUxNyt9n`M#Xs+!@pZrb72~V*vj4sJU)H4vZEUj;m4Id2m~8RDZRWeo?MsS}KB3ow zwEi^Pa@cFsrt9IHH0MD;Uq8sI&#cbS{T>&Q=LZMEw;ujEPPE&THqEUI8f4qvI=-E5 zoSoFE{t05Xt-6j7N{NC;S9-lXsmJMQ*igtk+S4q*wngXGGD-$VE4s(1$MiVmV3`h< zv5`*0S8)6It}GYK^Wt#~AMG~ay-P?-o0K}3y5eQA$Y67qO|Os0j%$zq^tk+@*Sap$ znhPBpM_o0&bX1cTxi6dW=4i9}48T3F`P^~WOI|yk_~GvzAN{9)L$5JEska666sk#J zcl{&?Ts@>#RIE~z$ZHD(wHiHl29bv}G8CH~nq+UWa9b^W2PHk4lh-dbu~|E}J573i zi};R7G`#V=t)C-H-0iH_WxAFPV@jD?M8k)mc*g$n2M)*AeO7KSzCWL6fBLE%`5)Ko zZ1Yt@7=AT&b!uPZi;!T<%avM2aemcn_5SLoACB+-(L?`_09(n>c0L5eGir94UkZf- z@xn>ak#St`J)w_^k($^XZ)`alA7wd^OhQs16dL0@FCC2E@_C2jZf!ww$Qh6q@Y}NY ze`+GBc+Bs<*?88^1E9n4wQszrw*?Nzx4my6!z8_(qGzFe<_s)|_{ou39$3^| zf!PKpYW63Awdz-VnOJ7qAau-r#=7wy14ic>w*!L^%ftq8Vu6H~mkngJxhFI($nkh7 zU3f6q9*+-2bd`O%tr-ULX*-WKreCgXC8qazD<#Fwq z!U|%J0#`JaP46z44SZPLA@E!|U3u#Ic<;NOQhGr;6pi;e{R)ymF_V_x4nkv>ym2;? zvg=e~VDASFo@c+QZXesbQ}KjGPHt=BA;22MRi(yT}^ zMy6@LZ%l(cQzi5=Gvl_vXdrGM&1HEVpl9Jg%|cixMU*(Q&B=I7Z#SM~6o8Yy8UK5D zYSeVZO8z>Kq9?s!TBrU%j~1>!_MX%StZlb1&nPs~>{G~Wly25NUS!k;>aSfL7w*1) zJn*HzZruIqH;s?{gFid2y!%J>GM)am>f&Yj#5Q~r)q_^JZ=0&W{1Za&0z*1+tthO|=e#sI42@D^dw?ixd zQddPC&&s)j`;>dfc*h$K#((%Z2ji9c`+Xh^@E`EDM!xdn^aRo%nTD#D2m4j7`#%2- z{qO&>F@E%C$M}iIcu5_rG}p-pVxlFw9?v}@(&kN8JtNy%4@A(EYA<_J+KcoqMV!oW zN5Cr`|M8m+$Cte-p97eg3gjiJjchmN3%{vN+|Mv9PfkzkS>{9cjqwNHdN{uN(=LoZ z^!;P}qkpH^MaqXNw+j=2A+L1W2V%F%nBq$3nCu6D1jxW=kbq)pxvbE{oq8H`FmnV= zaiMo|Q(Xf(wHAj2AYmjg%P^uiZAkHLRGp^M=FssM-Ziy-sb`cRvK~M;ZjJ3~^Ko5| zZn1vNXWT!2@jE_cy!v(b`5&8d=ie=C%ov5vgBnxIdB5No=B}_=Oo@PNhL;|MMI{^#1~ZaUgWFq|4IENfc_lNXQq(SHBXNW_u;7PMJ#2I)4x6-$OC~p zU;4W7f_MC$@!Yrk27h4C|AU||0=>LAHm(V+pOZMQ<0{20$j!u2w2{S$%R|dGuRgY$ zK4Oj@ZKR2Aqgd5_@-)g{?|pv_{zWhf=*N`&ocI~EVOo2vh5wLZDd%hy{AkBPPg__aAsG&#d`W z{07OW&tBrIvG9x%aa)CUmExwdiV;U+W4j3>-{uvd1om1}{(9kc4J(@yFh#51~Dmwcr6Z9QfqsUz7TY4Z8KlL{1P* z+u9dxw|O;9?V;j{$fiD(HBZzqYGmTr5>6a-pX@Yq%Y*a9o9$iI#C959y5sPhf57b5 z&1ZDT)1uktT|Yj}e~kxSFT8X7vj6BM<2U{{uN<%X^!qG3?DwNYQIVP~cc0B0PW&+< zL;ITR+jd)d_$NR=^!GkEKKkKndh!x|@0Zkh%fng`TdpEUuRd;_burj~kLko57nYkEKVs_s0V(cddwoj1vlKXX-!er;UQ`1&=S;Y&;L#kR0}6KM5XqhjkNvd2 zJK%!OFr$jo_QC?@=THt@<5j;3Y${6}(y+7h#)-oMYpw3lya1Rx4(5^I#ltn&GWQ;3 zkKl$F+iysh{Uh5QJlS+3@*R%dH zUT|;T>&CJ#7^LJ<*q<1x$JK1M(V=DPkKkpj`?vAhhc1lg-807D`w3ODFQV8BTp8Gh zsmj?p#;4~T8Hf`zKM~eo=K+5VEB@pkOvW>p(3p=0Jvw?e6dK>dBmYa zvjgl{!)CZlF@KpY?-(@8u)<+>)>fjtyY8fmRjV~UrdHr*AS6dhpp^ zfQFwDEqTmQC}&htyZs8od;lP4JL^^oVsKsQ6~ANZVxei7 z?T9nhJm-zEI&!U`vQsKEc;djNDHC-`C{`I`Sl&yE!{*tB?GvtDd>D{7m$ln8FR<)2Le1O zs0RY-ul3)Z6HEtGRrCh+hU#(EGd# zO`1c|VUsL!52YdhXPzDxF5NNidgK@AZDD^MP?b@-&YyZpI@8k(9W9!QH6kBlT^M+f zivQBR4~)BC`vv397rlC1|H%8twGTfkomlihVDe)x(ey99nIy|T#xj$}XcikskaL=fCW5eAAa7jQ{crdG@J0AIoJ^4yYM7?#K~!n|rPT^SqT9as#9OIJ};ajW@lN zJJ}242i}!6vTb2_fCNG90u!1CN$n{KH*VX)KBsT!OxV~kl~Kz zaVEKb)^4_$_=LlR8?B<;fw#~$D=(-Wp&n>zlU>sO`qHm?X#Dcu{L=Bd&v{_np}+C( zzwO5dkf!OmX_%-no;Dh^ZteH+JfMC?Zz=pA|I53_PwPRzrOUD|BWFCp$v=K1^si*r zXC8+wlcjiE)~Y|)H7FRf{+Kde8WTSv4|nTNT)$m3;38{$xwezYY|!g}EZ)Wj!q!la zO6C1&y5xOP*Z0f1acAE*?))!u=g)(J<-x$Ew|u!?0nnX3cl_Mx`&9tF8jxrI$o3xq zP*K7z@2-X%uU7?URR_#ifr>uRnTq6+NWZ;oVvCJ|=^lQ)pq&Q~4S}RDKTLExOZ*eB z+5f{2IRBi6f zdpPcR!OO-ypZbO4lD<6js--4zV26!QJUJ$k@Vm+yCbn3&$M!V)Sx3I*Odm|r zz1z=!0e5f*qO3Q6Uv_^%uD7DVhz?D7}HWA0+j*A4AY_Z+9IG1eCq!{ z{rto6+rLPkbAf=H8=wup62QfL<{5xx=fUHOw?$s5?;H449p_4*NcY3-l!?w+)kLz(3|2Gi2o2oBs@ zwfT=_=h7?Igr)8LnW74nhkkpcxOut%!H4hk7y5j$p80df&-?#t-eC^GE^X&lKGW&A z${Evk@%^CZ`~J*Nk01X24~|Rv`pDQ-zU9a=jhlm4fLaz-9uT#RzATOJaolg(Mphp) zCQEBlp-SJqU0AKdbpHQy_a4yRW>KkN&&tvj8~*(AHO;^a^t~i#AJWGId}ra4P(YPxXxW zwJb)|Uh6*vKK#aY3AFL}ROyWP)nuNd(LhS3Uv?5gm43%T8(dwhKYoqgZlX&7`>)U% zOQ-91R+j_pmHGkN5NaZ>yq%W<>~%3*FBjHvHd{8gv;7A>_5BE2 z+7W=@1*UW@brIsk655qBh+Eb|D3LIHQWdVQ>dgu%XpGPR;DNMvFS-)H*a;Zp@Nu2?)`reWLdYeR9f6k9sSDRmlst2-99k<_>1v&;QdnZd zb^mYs!tL<`x(5R7(A+oO{~Qw-l_JxvQ{hX$SZh3ELL8p=1igSr?+xIL z%?EE)e7G!7@oB%%nrUn$HUTWnOPk{yD;wHHs&>vz z#k!TuES$*oc(o_7viLjk9aj_LnRh z8W%EG%d+&XRhuWmI==Bi9>#3NU=z>0`o^Cl$Ju>u#or~Rx`1j6aB-c86+){p~@q0P?_fdW}_&(}i z?+8$5XF%H?odNjEKiEhA+y~&Z09E>Ofa<xQy#Ra`hSF{8@uAJO|CkL8|I%<M(iz~XCYbWEeX$7d&#TFxX_Nq9z88^Q1=ELe8Mxw_Mtn+ zi92u7T3b5^tOX2htEiFRQXJjIE}67ev^5<-hj#@=^Lih_5M>cJ7l{JHz`i1{c_qwi5+;(b(`mRIjo98+sGp|N52N<7=M5v;27^%_~qV zUvy!l=LGIcjWW^fcj`cBV*s}0rv205Emj$r_{T=}i*-5ROLPtV-5S0d?#@bl_Fe{J zL-JLpggPSv-9#xX9uld$<|;1EWPhFcsGIJ5$Md(xKhjwdR*u@{rtbx4+itdf2hfd8 zwOHeS&6@S_5XksVhIPcF$Z%QUGA;`|tuG7gjE~(xe6_K$a@AC#VexO#*Yr%Bh2GAF zVkwbSwn&_a-V*K|@mO1pMM*8XdQ>7Ao$(VNdxO~iW(FxQ+Z3&f5?7pxVP1i;1fOFL z-rV=tCmtMMtvC6-{2L!LE`G>fZTvlorEf#cqBrDe!i+c|TyG3ZNc3`J1Mf3e^6AyT zbi;V{FW#t)k^0VWfvJB5E=%S?s_}CGAX?1a;3t2HO9{>8AC*CLi4yE5?unum7qq2` zUdc@jp-eh{cTlKW&FS&2@qxi>zG#nkpMHJ)-`D)L(TA3uft(TW8Gx774!{Yn`PXFt zPWyA?-z;?_AeRPCa1Vexr%ug4&8|XpXPv26nRDshjMW2%$5w(`7HmFtL_e$j1rM-? z=UniS?R;5y@nb52t(Bc=kgJUdLTqsFzxkSR-}Ubw`!0X-*r%8JaNRyy5$Rg>&Uiyn zu;`^O9`6rWAH85B@oznb1*yAy_FeYqaq%->H1>YhV{}>I2JH;!88g}B&;A)kR-3kv zONpd+R{{ww1YBpGV|x{SL$U&{Ga9|8oMI2@Oq zi}h;WAA0$=b^s9c)HS~*T^Hs#!=K$cGeO;VbUPKTiXy5wM?5<`BITtaKYY-6U4V|`qh2hBwN_f-gqti@RoKfV>~oN2*fH) zyvXcJb!vRKXStHWQJOr$chMz#$4kEYa^K;9<>y?YRgZX@Q}mcV#O$1*QytN@Om!N& z{*k$UW;{OZ)k1c^Ch%|m>?d^Oe~ZroyIt9MGOhn6nqD)GDet2I3@DYFA z@W;kqmjveNf6flfGXO9DD%}I1)6&}b`(6Ou2zbAa`twA;TY9B|FFj^S9s2*g4_T3-vdFNcWWc$flSSW-q=#>anNphSo;gcYksm z{n$HoU%+K!|K(2-Y=!Byi2-1`((ztMi6`y!BI8k**+|<>E$v_qJoc&MqNhJ!FAlnB z+<)6A#=N!CNaT+weC!wxWAMYz3u9#aav8ZsU2^kxoyjk)p>m#RWN% zskXl$%VHrUw6Iq7){w8!v625G-M#*gwNd-77w?S6bAz9*ZHt_tT`6@{ealWzdC`2l zt_8xS=r-RmQu~7N-J8O*Vc#_*X#s8qc@G=k__rTFzUZZ&HTLQ5 zdmq;sQCX?;$V(@Fp_&w*X-9}0SJJY`Y@7efgI&0BrDkqhC7$+!xTN|HX5iGXUQ3uWt4`?$iFOrvbb}P&)t}E=8q6w#&KV+Ov1SOE|J{PC=ar!P#^j6~E?U!0pRm|XTxi#P5x__CM1TQPE~xu6dY>*h<*; zlTBIF%Fdqs7mbUa{G4&{sxKbf$B&E?cibqSj%g;|37)2v(I_40;vz@fN-ZFOReDIP*{ce1AP~TSYl-8)v{H&W4{eIbT_q1+KkoE0+ZXCO#Ro zDE54 zl}hV6&1f;pT+YtuhEeVGT=C?K##jHBj~lQ2=0}f*Jz~FJ9j=1_VlIuR>K~dgjP2c4 zVRa|ZhDVaF@YTSNy!W2*vp@E+@!|JqU8kLoOqfldp{>UuJFh@!a4JJCpe)+u-bJ1FGg*Ws;$H(?O1JFnMl)eOzYyW;6 zkTU@647}_WIs>33+^7HR5`a(tYoqU*0Ch$nI|Q4L0XneVSK>f|Nax)qTlLt)YOA1T z30D^S>G1+|`gGxEU)u1x%*4R+nu0FrSmuK!6?px3c$TTO+5fG&8~^?rKQxZtpi2Ue ze4{-Kq)E0Lut&vf}=&!rC=7eDp+ zx;gQ4#)(6B`2GMMSJW=L21%_@HoLlMXc3vU7R2AKTh-D)Tl3abdJ#(<|9F)= zlH`r?Sm5VONa{MjR)`PLMu8jHINkphPYs=og>{vJ#@iQYF=QQN(7kbL`4;JR)TS?I z!FzYBaBbk6?5nr<%~37y&i@AO2ylM@`){`$=0-v7=;&rR&k@PQ1bJd?7s>Qvx=EGR z2ib65q?a9Wzro+rXNKB%$m z3{DGK$~pv3*>k*GtrzR^p@Kk*L?0U81lrKea6?%ODZt#_|FDPeA20j5%k@nE72`=y z&FOv?>qW2uqLh(dZ+P7xg;uS;_qc%GjR(41fr=vV`*d?3J0WlQ&0GAa-(9!eH#ifp zD2sipVohw5InlnZks6YI+3w0JQdlIQq49+17>bU-P{Reyy-3koDlFz}D?dgo>M~rdf1m zO*$$5NOT{nL^l0GTcQ(d2qbm<7mDbu2a$E1MvXs5t!yY?p$-1uf8q9cj=opVhJn-R zc`1#p7d+POJNhcQDx&F46yiehTybIJc(+cv;LD|YhyDR=FuB&A3pFxw9`^B?ukdZ_ z%}zJpyEERS`vcx_{nmKfC&su&H^dz}w&gP)+X^y1b0&nL<$!Fz>~ggH1y}5h=juy@ zU;Ox;@%j3yA(tBXlA*U7lE)p-pH=^}a1j;shR>^u*_rsg5Az|Pp?em%!7@8w6Y2^| zg{?{1_-3_i&!2O(e=0o75AnVBj;-+%Zyn>`zl%p1dDEg8)v5Gind7vb!kBVRrkpaa zRRCbvSt?0Wg_^rqyCl*?hO`@JqM6Dzm|Hq{+a3ol+B3fJ#h2;1{>%MFKP~|<);+7+ zUsSlRisP%cMsQlpQn)q&w_;=2;uR#WNJ0k=e3Ik_z1#n{|NRZ)eebwaJEeQPW7^sU zcZx4~CSC0qHdK$k*qc1*F6rPI)OOw!6zRVwjJ1TZ=!+NbjfrGQp>%Ijvmt*ikPhu%?^ag4#b+;fDI{$MrM($+9~m;!eVVr|4iW92W%(J zn%z-Wgr;Z1rpd9eB$Ea*OdM_oTG{|lcH*g2uKXSnKh76#-y1P&X`s!;GU zHkJ$DS}21-#U=Pov$ASSvG<&{^qx3;_c;9C*N;Q*{B7N@aErE72cl=GV zHzlHX3R`d9I#+a9*rPyInoC=}#H_XS>MQ*~ixa^BtVER~5y#S$Y*=|-olo?B*Nab# zS6;ej19z$a`*-b(SAS&38_BEm z>fcvAOQ-aoxiv1*o&h^8*`l7i{dSSnWWFD;Gw#)y0KQRhvp!0By`CI6q_YBC!$&`M z9(Ac+{i^R8T&|Kk={aiWJqSK4vb+Btv;^EU%Ld!3ZuAn1r@G#*osJ)U)7E(XNAo7R zFVs%O-~Q4uzUJw=5luGP@NO#@)->ZMheY#yAajy#CRY35GQ5-R2cMxlHJ&-RA19Um z=wtEm&DXJWm~RWfY13Yjuk3*_QnKA+Xr#8b)D{WrETLI9O45jVBNjrVHcQ#-{v!s{ zMK9ahnbjU7Cl0UrJiWXB8!jK8t=IPg;Rrk_8rPnCV=X3h;S5SMXyr0+iM zaJ=m`x9Ty!8^>L@-=|dv9b6(4g^7e`z!E%pvu>pBTLqdf64XBXHm6SUS7;ovsit+m zAa>-YfP)aK!YFN<(w3XTiB0Q`Loh#6`1rbC8}1l|$Q%jiVk zr~1|p{K${*9Pt@|qdo(`(f*P3PQVeJ0XUSMf$RV{LJ4YBnZ3(O)cvnap&>dgr)rW2 zUYM)d_>QFI$yWH?de-eT;mgEHemo%f@=+bM%WaFYR~Xfo=G&|qY#a@8(cIwN5`J47 z{e2I8)Og4X{<`kie~G%F>8NY=Rc4! z7ye>-B_4JHSh3+<@mu3D+Nk~4&)pv1rmyv}q2pct(=SjCm?*mqsy$;;Y-BdD7l7xz z{(Rc@=l*ni{L8oG$lPZ|rHc*jJ{`fo=*fG=55Al?0PgYo?j0j+?XquQ&fUH!YAty!WWG3vZrVsOAj|(W-EwNB`LLDkKX7d-UK*2D6QB0RFo@1#?#vA8ma?{`=B8|f60cVM2BshMnPwvu zw(p$ofAr%Ij+egbQR6u;yv%0+PKcHb8OTI3wWUw3>LeQygmyl7y2r-<;~zdWe*c$l z93OZGFCEjr<~zD}C)3CrWMmd^AbFoiWusjhw9s0phQW5MWyXJHRg4^&BVof3GPm1} zV!2S(Pgmu@#m+<_0{Hvsz$+N6#n=5$s5b4>C3XNf(%-L*yw3vosGoW^{Lncga8PFg z_P+GxUy*wNc=V5Z0C*Ze^}g=Eej30}0l4cm0ttii9v)Xi?a_#rVNBSpM7Hs3@@_os zHNTK$EUYzu17FzYQ+n`PN%`M=$mfVh4KOsU;l|rW3^ms>%2+Y931gwzE}4>;yrgIQ zxX!#>{SIG`-~X7a^m^aR*qyIAFGM>~rFBHZB2&KEhqhDlE&#Qj!Y+j-o$T?o!Hb{r z#pB?UK6h;En+7LtyFm+$KH5?D2ee%;#}x_sh+2{ty0YD-nrD7T4;c%nQUb)OWy7<| zC2M9BDGz}SDe0R(cYFMp?pps^-L=k9pO2_3CPaO1*ks3PWe`m?&7!0MEfm+z2akP@ zj9-8C&iKyX+8ICdr#s_r9hviXKW~_I>H-<;Tz%Wl`0Wp9f!5agxlhOubw4N?`*Kiicq&a^U3pQ^Dff2{b63v;TOtM{yv=dduRI#`ub-<>pDgzR1mwjEQ?#`dtvvK!t}}JL1?T zxwD%tx$}UFcT#C!vJEi+d_aT0$+tPU8}nZc)NyM6picLH+1EaDeBHNSF|N{=`$#&8 z=wzR5*ENT##}6{8Z7vRm-n{sG2E17Nbd%qaLnpN1ziIs1zq@YSaLr-eV65lSbLhS( zEPEJDY@^psm}f>cwOrI3+Z>0;v<_nAG|3qkTbMK}Z!;F}T_VFvM-@}9?am#CIUo*d zo1H=Y)bQ<5)S>*m>`R^(0r{rC)y;o?43HcD`bhxa51@MkUiz25>IdiZ|8=+j(q?BM zuLr(=z6gjZBA2?C?*2Mkg5n777F2sR7uUd(>)3ce@IB3=Z?3RUwzx@|_RkI9Au$Y1 zs(A29EA**p-Eci|Vdd3-R^bh-PL_XYMn`bs@5aI?NKpa-mt^O~}hXoi4+ZeHsO ztz*#aDMF>!`0dnWma0`7tzIFj2Q3bb4H+AvXFZx1`JC{Z{4T#Fr<-kCSKXdiZM%Me4SyM|CByb1@!tQ#y7Ked zYj%7@{T$ukclo8>|Er@iNtOF&^(9IsnpPN|EbiEBGeVWD1CiZ>lL5!f8$5T z_^#jC8b7Ba>3ejw@PN)@tk?Zpj&&4s-vg(r->VHRI|8@p$%SX=RTz)dII-X6Zb|g) z_9ZMK``v!Ugz4vs$0j=hkJKd)9vOVjW4Cm_#Ll>0PYe*ZEN7{+{$t|J%R|E2Q90pd zH%6h(6jCuL__fnWt?FyG<=~SPKlHoG#$OwL&fGlnxep!R__rQEzW5~%*O8xgXhiQ6 zU8OwGW^JgR#In$$=Yrp-In2<$>yPgkzw|G!9e?)bJG}G3JN;V^`n{|cftc=&Uu>-e z@THo@qs{**9kW^iW;ulofFG&kQd@`E^+lxQ8B_n6lguo24o4hTbXI$%Ke|3Mc-*p^ z72v!Hupaa4$Ng421A9c9ZvuSDU;4_N0jMVcd~b^Hj$sIeepQXWR&^s}j!PKMEhhX*9-Ko) z$t#0(EUVs<_Y1bSL^x@UosgPSy?H-({BW6tstrVuUU ziS*t5T)+Mf-L?Kt^!i>_%d?n603f0p|65Z#o=jt(nc zP(~tKuDhUdlK&BI`4;y)3#(!Z7H*VgJZafk+u_DRE@ga3uiX9NH*Ad`(eI;o_J%*6 zSVik4?zNJ#W{L1B*kjts;rcuMt#Nd>vTVF@%xHze$2S+kq2`9U%cJPGphpRoiN5>CA6-u$g_Gn{2q-Rcldw&Lx;w% z{PcBxo$oz&+^-w|bfe#?l!^v9tTb?UH?0Q~mz(GH;ylJE|JnF69!Qlel?|OJP^zNJ z;1}9bLw0U|CQy7t{44EU*gk@!=s7E%WwOM3`JDt+J|(?x7J!YtejM@Z*JlQJ z3czmyeCd~eh0g%+@*f}h&&vS339#P|n9Bq6TL9(1*DdP>I=xUF2yhRBh?ZAISt}$& z&l!&};0FyK{it`^?SF`;w%@#TQmv`Q9A|_=bT}JaHJIdPTQJ#L&O8OmXoQvSyZIyI z=r!*gd-YMF1A2K7r$Mt}MwcWbwqeT)kSXy4Pdq}a@r!lk!k3Ck3RKj9WKL^m?k3eM zg%3XMd0H{*LolDr_XX;_sUf>pkk(7qPL_qm9<`3hLbaHErMA%1i)`RI<^M|E-T%-3 z%J%riXXo|3oZeoE%WUf}9gC`xTN7+`;>|e^Jg53Oh5VY2?2Nzn8$06{{)|u7#;;{O z6d@^IMrEnDVeE1?;7)CXUVF7ptzW~{@qx_#jupx5v*PU$J0BV+b>_uS9^<8-J;qJAvi19yPxH+aEWc zqMQ7P4~ye^o!j;JVR-o5W zHJ}LDp~Y2ncfzkT;1|JCr=7af;9KJ?v42{8Z1SYVeopsq9Q|`ffE|JC46q}>4#C#< z|Im-^aC0Ab{`bv*-2H##u$~Oi4S@Yr05<|2JHG2F032CG$W>)4QUvU+I*-I4?=m|cbGWc|HOxFkN^G!e2#Y8ch=|5`7*TXn88HSH`TKN~tP4Q;1n$=O_UCSCr$>+OU7RE4+_5hk=*0g{r?KIicfGPI zK`^I~g_JWEV_dDv7{C19t?{39gWolJl#YJQjiT^T5#yQb=q^TT&OI+yPC6Fi@JeQE zaXtRKU$Qm6;BmPg&l!(Su|fQ#LebiOnwkgnUxT$=9+3o0g3(F*yv%1?clAGHeC4-1dVKb?ba%f3;urGvDYc=Cx_eD_`=KAz zV}RNL(DVP?{eQ$|9{+=O$U6gi4}f+M<_v zz5~30x018?U-r+0&&YN^Gr`=NAho8R^)5ikO3srQ8B(nPQf%s*EirjKaPPw&qbCLa z+PH)#1=u~;&H;VwtbcaHII-ll8FI!eB1pW<8{ZI=?i zXvPAy=B1rH)S@7;N<7xcyZ@iAGXY<#M+U#)Sz}zK8|r$40R;B>3v%QEDOw`Qzh6(b+pSp zv*2%n002M$Nkl3 z{`HrS=f7On`Sl)uXr#ubwY1?uYyP_3ve25}v~I8E5#p7>M-Od}KmFs|$D8y*pBt_{ z>YMvm-JFy>A)+z*l&=*FFe9-+CzjDhv2j#f3>WU$)G$@A)@CauHf9;aRLh(LAByJ& zh+eRRj?XnuQQ&n#iOpr-D#(hFTIEFtyuwp&(&#{JaYwj{~O8bPYLSQ?qSPz~eW3{@_A>X+zjz+cxl1)i)Mgg6_J)e`zGhYsoWM79IY!mR}iStqkV zwakhx`&sG1R^5G)od4C<1ib(7UE|2RUo#H>>Fr z|IP=;__06Q9`C+UZ$Q(=fsJQrq#|3487m)>ExAUPu?eqSvD}m@Uwe*48+Lh_(bjmh zPMg2@O8q{Ya%(){VR?ZMx;av0!`V9pwy&(?!g3{d?Jp&L;kx&`Z`vAf`q<8R%eDFP zAUgtF_h*BMj`nkQWfHKehC0Pg0KQJ?YEID=-+ikAg3m1{oDq1+BeurhdH&GO03RaC zSkoW0I!$FwP&wDqs+Ud5Srzzv@$B?)CgQg>&j0icTjRsJ|ACu3*}?1iWe=)>EsWp_ zBg-78rtq0=zN>hW<+*(#3~cDH`rJ#$U-{O@jwe3tVqXGaaYy}vjk4rYV@=6zvna6; z;JM*B)vxzJ=(5#&-+t$K<8R#J>-~%o_iij6*g$2_-8J`yxY)09u6=0xEp56oFD_QF za5`p_%=)K|P%0HAjSyU4=pCIbe-RN)j@b6XUUYO#0-llTQMBTB_0x>! zML_HT^v1t8_`BQtIRo&$|M;Kz3_yU{}db~eLWUF_&}kE@&kb9gF1 z6}3+pzqWND_D_Z1rRR+P@5W~mbnoEyirT$jsZI=gVb3PP+Iq!jKutPnF;p34TCTWl z95w#6(cklshmVIm@2`$aKmV0ldJp=DJTmKCUfNMKMsFXX;xh}OSFY>MSQ1zk=xnSZ zHU(jMR|}M1Z>%!{CvLxf-1P_lb{zZYpLxe12*WyqBrTO#GjzheRgrT4ex>e58#|guVlj^zPxgO5C@SWFd!~dooU+-sQ%boFy z>mBE1b+i~mDtxaLS-FV>#l9oBC~~7`%+ywVt^*&(w%XhX$&GB!d;A!mqw-0grOPBb zf`-n{iuFq|^NDH4DefEZ8RO%3=%-WMJO)RfxX#b3gxM+Jw0sW_Cd=!kCPL4fn#$I{ z$VzmbqQI2Idd}`e3K=QroxA5hag4wJWn;YjDfrGyiX^bsgLoTUm!g-dMYjWc{&>`K zW9M~x#Qk5qS?>?f6)$!QI2%AeSbl6v^=vpmWEk6rUQW#Dte8maRxF*a-SScYi~jN> z$H9wpcmKpUrplh@M6j30T_WAvS+4oJ@!Y{r;+_4k`<0u=hxHEsZB1;R@!w3y;nk{t z8h{@E$yimaIqHq-c5Cvb0X4dvb(0miZ)T)f_*GP7yK#tgeW8YuD7BK{nNd7uJLgZc zT}lQ{NigWQd;rWU;cU&L%IAJ)8}= z=k{^?|NVU`Z_9PlvThUB8L+k4Ci*ksTP-E;?|Y-fD^Gqp0(x`-VDk~ii= ztMI0&k+Tyb<5!3gL9V)HG8^90;U(MRErLF81a#N?Prh|${5;R|>lPVK6C;fLnNsVs zUv^CPO$2Phgh#ggGZmS|{qSK>gD$-OIZI4@xM2^!xG#a1AU*sdbOnz*GMv)q(LHtq zj_SveH}50ZBVVGmw5x%46Tfa0u{Y*)2)5Ido0Ls@i3L#0#uA*V;v5rc=`sri* z54u0#ncBI*=WX2=u{&-J%1Sjlv!QE8C84V4GL>C%KO5fLNWuO5_F8t_9Vc^ZLx_xZ?2= z_#E(yhvm>|>|0msUHQJo1Kp<$I~)1_EpG*^w*zu^fcpU?xA(;_%ToX+e8+#D1n92; zE>8jEX#l?n$Q`nW)w!PHOgIL)A|*#0ux=M*H4A2Nx&xmnJh6;>=ixs9ew8MEnSMmW zEsK^cF>$I%j1u!9nzz|DFKeh`PwBLy%=N@kd|jA3p*Qy(`N&(wjvmk3|JbYaeE~h- z%+V5NY{#{!!@feV;bT8PV(Nn`xqc5uiMIbFta|L$_=jzbWwk@H_o7S3@lSqy+<((G zJohyh@=|0m>}Bs+E3l}Q4tpiH^UeF0T)8uT;%m3Z%dgt;%Y1lb%s$$`%r|@14wWw$ zpwGQ>0R*mBlx~ZVv5`*jq>}3rI(pcUveEgOckGOR@H;!>_dgVIAN8YHiDKo3X`Q)O zmZMgGg#!qVO^5$HSYi4|sM-|KUpy-Z0Tn;F{J;%*qDh3I=bikwAKB8g?RpjPJv-yZ zySK&-I_kek8-L!@&kh6HIHSSa@xak0QJ)P3YRzkYkDGZ02!c-Z@N+$iiXBF&7CR=y z#D7axX&cJ8tU_PjebX4f^?|(3nD;$!X2Xwqda`zGK%sT9Kl>1>4cZqOv;D@aVfq>H zTy`OG4+ft`#y8$;z!?)_pPt4(hAbUO;?X{+WZanV+}QV|&$(oL>vuj;H~d{Pc$1&~ zvTSsfritztn^1Nl$qXko;`DfK;^bAmx7~bf{N69zG=Agft{>OxZGNPU=lKbW$G`iN zGJUJM8nkJd-g$(q)8iX=He(Thz>RfvVtgt}I4=uj17=h!H!tl)gW;=89D-JU!EpSQ zXZazIBbfsc4WuMa!q@z%(K;VImiXBt^eVom!k54z*FLWBkoIc*zfY&@xa;3{`|BXA zUj*b5x}Oq|47>Um*Kwmg@Ive=?j)sF?V9v)F!^*I@#0hMfKj*Ct|YTI86)JMX?*t- zKhElZhanxX_iH?L>q$3f->R9SJ3M6>@YVuRZDJ#msVod?Pu<2Vn*yj!9HDt*s#o>$ zN#A?k{_ErDN8dFb`uuOwbNerpl-?(xLkd*z!vaHwc8^!-S-gpDe45G3;Go$Jd{n)C zT%@^!`Tnu3`v9=R>x(0(hJdyytPVIuUixS~lI7GYLf`Rxy~AHO`dy;yzehL`Wj{A{ zK}~<~C37ntg@axDh0ZhJ-B;pofQ0RXR*)RsEB(RMJL7-T>Ha^tmKWXVj&S)@BC|x! zwy12Ra)Mwaa3zSe9m_gS)pf|b?w;uaa-Z?A4VcKIL3Nk3_4DG`y2RKIO*=4Vw15HS zr12St*%>g!b}@0pNJ$xd+$if7TjMQQc96q<$^uFO^ETIe17GrJoo(6YK7d>GrNe*v z`knEc+7b8%FVaT%nc48NBf$9Eu?BU#X}dExtBS?SF<7GUl*YN>eIJbQ$MmY{M`-{0 z2VSnPN(dD>Ul z3DEBdP)zkfDv{C`U1=O~ue`h8YQoEcgnzhw;;oXF-lH7v}#OpPnz#KyOEb zg@uOOWQ>5zo~Y*3B-5leyJRG2?vjo?Ty}l$BpBjKlx?tW$F+VpGq1l zBv95#d>o@_<0$*#dc2L-`2OwZ=~}y1JRGG4E*br&Swvu}8a;W@Jz)}=0#oM9crJT# zy8nZE>EZYO{?7Pc-nip8^Ko?DH~Dp+Y#SSu(%Vowr?39uh~t4v(cnBxYe<`F_%4f| z6(~B&n5B{-0)uT(CrER>Rs0EF>9BmYDVpW7GmS0PzUJB9XGE+)Kv5YF1Xtr?jiOmq zYfqzq@F3K$c`7qfp|fq}+4GxqpTh6xEX<$jtib2!DG2U$Kv2^saR#R!D5r`a_2|R7 z2rV+j0~gjA@kE0ik0EYt>BgwPw$&cz~0ji0%byopC=p5E2{9(rH@Fa6}T;~j6jeH_=_wOr@#xi#Sc zW(w6g*`^`c7BQW+A60dI(nXB-!cRqs5i(Y*%=5QodoGt$ys=>GSo*y-Z1qzlt;~ld zeks}B->@rsaegC?&6&QbpQeE>e{U!M)o1ket^EA%3u6W-8s z%HKN!^<4n(6o|%-0K9$^U`A&>?iCh#**$fr;t+Y#O3s1pSQ`}VUnD#uzLCzsf6E6) z9t2aiHt6)b8LivmmYCsd4HhNSFN?6`REI=b>fq5$8Lk%?9H@u1@4NM5V1S zWB;R{GWH(0L@OMQy%&9Mpux%ncBS~D(F8FUMw=qjPiwD;)8-KfBt&eeXDmy z=zOURMk32X)^<7Nue+bMGXGbv+8$q}qbgtLr7t8*rLe9(>Ma(9W$*%7gs05{o(XTB zaBN_>!~2su6Z*fud1w4XZT#PItyY|(`(7xOi(VQSRBGj__E@k&oqo0){8HetrSAU- ztlxodvEpMQ5|J-Zbd^5%*6m6GS{wyV#G5e_Lq5kwaSBJ_`MPRTP0|jACIY^9PJi!@5ikDNhb zquMwNDuYIXp4iifJy>WYHm;p3Ueer%$>ozTf65pa>urW_`dEDPI|EXUZspT%8x)@V z2kyM}_;`fw0l4yMmsp?3l9s&vC?ycBDP>dJ<%JvN6Awx;KfvjJJ;VPSKl2H{%;&D# zj{7=)&qwg2sn;IV=!uxPWf`#)^QaJ%{#ma2X=UJx*RqU%BO6qtJ)U^5gIh_eTKxi} zl<}=bwTT6kNH$R=)y`chsaZ!rsG9hYo8_|GP@933Sw9&siuvb`m;B29IpY-wE&+JM z@6-Hsx?gop|Mv@kC^k~(m>b1bZ6SR zM7pRd9C${CU{(TpGQNTrKqODXi=Y%dHBAagR(%S5v9c1hVnFAKFB|s%6!xvrT0OWM z{l}L1rDIjMrl_kvsL?S}r(gxE3M>i}SeVkzLJ?UgSy_o`>EvD{OEr>yo$&of$MI|5 zGmc*SZoNtHp=19epWulw*NBD31IK!{(Vb-f>{r_t-A*OX zYn}$HGFPy`YDIuXHug``#{XY`eZEQ0m-}WC-YakHqf5z!0%UI>>OXO+cp=aMg;zm5 z9i9z8NBn$6@Mm>%-*@Rc|F6HFM-Tf$J+0s7?Ll-2nE&#r+A2u#ul%Jo9pGlW$duHS zwW6uh8cagYA+uifed1dKJ|d5u*bF-LNae`Ut7s{kA)2}XF8K6e@pIFDgSrG7d?qh- zSwNpGu`>kT(iU^gZE&8uWe_!~#zVKGsu}JhH|24o=$o${5uv9w@_a8K$fhXS=!jmTyGl?ILiKK92+P&i{GjuZ=z%{&`=3 z&J^r@@k?K!9e{lFCm#XQ24638>6-#`X@DJq>;Uw}dm~VZQi6oT84git5Gs;;QZ(8L zVRC~ab4vWe?Ie$nt7;JX;?(_C4;ho$+t~>W<#y zzvJtxHW+Bb+$(3eY%Nx1{VUNWE-NB#lq-NI9{+g8{e)uh+y7bDm9^n#2jF%cQEFM5 zN179l&XbaQRLXsHjinkZ`pRFA3aljpstIVU=+O~B!8E~GG1;JaeT5EiHGjM!wKy4u zNeiBO>`yNuf)rxNI!6u}k{PB_-#}U*7z=l`I)Dq)r_!)-CIr>|GHKF~#cVLuv~>j9 z4?NW0CTXFG!DX4-^;%(e0^Xt1@K3yKYdrZ8sFv?+osG3)C{2IbKFsbRax=&xV|0$? z8jqZe0<|ZKoN#PtU!b=&-l{W5@6bz>*g;8rk*m}+`DGVm12gyDb^o~P*$?&80Di)u z<;wv^p$w|55w(4&%Lri)KR5%iU*9#j>AIuiSAY5wezcD-_wCg)p};IRZKO@pDv6sa zkqdF@N25!iF!14!*5mKaEuoTL$?>B*9(3Au_R#2L#Kay{+07OKA0O#`#UqHyL0}}Q zy@Qgv_*M!(_QOja)L(SG{8OOvEr9*Cq33Ks&H~J%e|8FViNHGtOb$Ang21_1p(2NeFh$uS1NX71U$jTKH^mO=bWnx6<#XK7P!yo+ParC}s;fYX0_ z7x$t0R#f*zr`lh#GrsVOo!sol*h;pOnjX63NtF`YX#9KN))-IiayIB+sXd7U=xu;Sabk#IBOZG zU5l*8*Zy13^3f()RkoEe7v~Ob%eHEqG?b&t$nv5h=F}T>!{*zr+ZliJIb;0Y7mRVG z4yrjzuq~h6YmXJyP(WJMUCsQndIii~MauXRpV-1nXXLd^?A;mv=;e7jfO`UXOt8i6 zK@YA0&dfi0_{8|gd+!}rJxg~N+NbD_W++{Q?w-V^rO~sby?UR(eMh&)n}6?CeX!@2 zai>rB>w`Ur$Ufa%^-?Y2{jW?+^N5rFlTxw&NEdz6BjGwm9uwMyUg>I;A*p3TsL?0u zG?h&s!;Z4b8{aaNb`1ZqufK#^;Kn0Ta^_i9G;B>7>VE<7?mzyX$^Y>1pMG`x)h(rT z2u|x@{JEbvD*_^*@A*K0E+;shEbSyGwRplH2}T zaN0jT-b%>M3*X_LXyaoJkKz?xPXDGTldH^$2|qY;k4E^F<5v%?U5v2E%fN^q>Z3?3f$y!BVcZU6E6$Gz`)wJx0M4kpo^G=6wJeX0)hu+nUwkzz-{ z6zSeReD^qdgI<}YjemM#=9KSN@OrdQr~be2iZNcLXS|Qf1rl}^`y#kA(5mBbt-ylD zw9H9(AiMCK`s8%~`)}D9f9qHEErI`dLPw73iR9KBf1F+{s&1PxM{a+tzi1_l7(h+Y zm@fK;ymc?*6hkE_cU_|LdG%9o*Sz}qo$;^rdS>nm;N1u$Ja=t&9%3n?N*9Qt{!365swE?1=CAQMP>K7d zA9iqO{O~Jx<~<3p(7WtpML#<)m?7~|ovZZ{p8ND>Cu=jqmdtPaEsspQQpYIK*2?|C<6VFCuvzy8>|bJ|%XRu&%P<{_>>==yhA zP`8b@J_{Bf$>5B_w(T!e3#zYHLK%3(aYQNOEepoOiXY~+L*h|2O<9{U2_7^Xp$z|G zjp=oIY12Ray)nM!KkWES4^MIIuOsp@Z)^>K!O^|e7)j4RSCz>~s9lBz9Xu~D`Vw6V z_`7&OU)H^O|$5VGm-<$@~{7mMB6JKaeA-EODcGD z#;Rpbk4Nu=k3Y$IT(tk^X8&CA^U{X;U(v)$jHz^A+qO!QV5=Y9Ryf5qoWep`1W>u^SC znpK@6ez##LxsM_+jkh_Iz-`f$e8f5%U6HV2!^>SB_pq(;l~3F8>uj5Ahcs`>ZE3~P zUPwZn{@CtBrh>={ueTtK13D_YMK8bk`9Iqp|Lz@QT&oQOueoI-fq2HmTCJmN6*9}1 zA%b}&Kr0@ZTY(AHtClGTzqLj-x`l_VAIk?vge?czJjAt@Y!-`^x1|!WZ3Ic+Rj|lq zwHAEh7yQ)MW<;=#)^A1CtJ2@<&BB5la1>OX{YS`(B86Bl?=Gv2L(aPFo%QL`r_#>&!;k7U$Di04-}(h(e8&s6#+7<>?-)BnWphHQ z!~rVqQX*73*S=QWE(H}p;g9RG!+-N7W4uAO|L|jVDL}lol~QO`cqa?j><{02|G4E7 zN5^BIcu+TB#{(bL&G`?l;#P_{;^$3*?|8%QU$uJ*sQ zMtc*Z!gAKpwW3$RXJHxjW3mHsKG#3Ard}#|REfy|iAk(fE<@0tS|T?ssFtfaX%yn2 zTUR3r*kf+dntXl9so^$6!)h9s_66a4lHE=CFG)F)9W<4?R=i`!Ryl7ndMPD=aJ@ScKJ84Z+j}9WsDWuF7T9vG) zl{InQgQihRPJuhFBkwPL!uEK)b^`n<-zidhkfZ93xDtt#-=`)7PwaW5kJsJ)+`D$h zzj^zPPWx*C&_;-_^+~beOTN&exAPt=Nk+JE)u0d*H|J_d4R55y^4Ks@N`1ta@r@Sc zuB3&5UM72N1CKAROO!Ie)M(9`Dsv9Veves}UnG;TXr5$nbNT@uZ78w-@y$AsQ*se< z2vH{SH8GN`grH`bpj^w8!u9OJG|)0=7oe3;e-H zc64t*zBtI4AHJ}do?uY*T0bsvDx2{Jle^NX@x03SQr&j*x3m-RC)Zi6eYZ5-^`W#Y zrFq96;kohSN5|)VX2&q=mzg`-PMQ3Ykv9W@&32pCD(Oti#Gi9pB(KQ zsk#VbBm5RxNmI4)P22HhB?nG&_K9-EGEE%HWK@=_=}mD%;FIQ!1(d}h=a~qtxddVj z?Fzx#oEnRz^cy>vl5Z#^W%8)9!Z+_+@ii}}{WZSb6V2)*bdvqTyQ}tzObNhg@fhj; zl|hqw+*Gdohq@03Nq#Ymthre!4gBSoLtQytrt^^!dt8IEEPcm2bn8`%b1D+(X)<9*Na5c#K?K$EpQ;> zxE=|#@8NBN$B&MC-}QUrh@RuW_*pL<5BY+x8v7ppIPC*uN1***o3sgK{xq>xY*<(g zGaUI5B-Y?_X7V|YV}q=fvsAlJVcO~0wsHwi9(_@RHc5_{VkhoDxHtAGyM2}7h_@6kaYI*3VO13H? zI~sWfGf3po8=uo^{}-CI)=|B+Fc|o+Vq^Z`2Xq6Jr{Y$|uLv}hVi)_gdqm;XtdK5? z*5s((;;|Uz0QIQDw5t_i>nVa6>s}j%emh1bwtDfvi`HxP#Wz`XZUMMhmw>Llb7y?d z@9y}u!r$|ft?_~{22G4s+=;}=g55>+(xuX>iYaZwaL{ZA~Ypf9m%Vq{|zZuBz#IcO0d9PNmv z+z5Cq!L}Zk(d6+rZfdqa^o8U(*SeT<(A}x7mz^=aC-OS|mjQGD94 zUw9+V316{AiBd-ssN0k=Ly?~jvs2Xc9Tx)t2jn1hE2!3n!M5N%FoIpc$N_jm#h=zKv>c8 z4_&{k>|vxGnGzG3)B3Cg-}JE^eWG_~{Lx4AVi@QsqPsOTR)AVkmuYnygZzhU-&%GB zFrRkmUJz&t+N&x#pZ*tkjS+cf2WyoAl1^xEhW$979H@?v= zEfyDFRr*^CHi9T9-NhG)xq$6AT%$Ml>9W9o^~JhYucrkb_fU2k#egYPpQ%8BNzNAg zNSR^#tNJcHFav=Om01$ZHT|Y%d15RiL1tG~NEdn0DN!lfGA`63 zucCO>R>!6XrE|6os&O;k(Q=JW+7Fde9^KurV-S)oEuQ^PCo)guY|Nw&7lOw^Z$Bo! z{h0QVK~TS4_7VBi@ENlj2Ai->^!k^+IX59~pZxTipa-FxX0oxswWcCV6^vG0rF1PF zgSJYs6PSeDN%Xd2%85sJ14_rLnSsOBh2b3>VeM<%?}=-bXSRP~_@x6Ics0D&uTEJ4 z`wlEEHyi*kcCFRSK)1Zbtb++YL9U2Wc$&Si5aTRHD&aex;;Ug>;?G6OD#`R5zt)!9 zhwm8oyych2;rG3MT=L8pk4yB~;r)+zymjXr10d0>n*fj9tB;%L#r-QE%B_`OHsB+& z%eeVZ4s7-pMCj8M2?SNLR$3WgCEm|}oo?{^u{VwJi|^Lsj=CM;fOdCt*DL6b!Ae)p zPits;M=C^+9cN#Yp0bi-Y|1`yZ4Ef9U=-%sIStKx}^{NXufDiX?}7T z3~(h^m01mhqR$c<4e57TW}(KSY}?t=KqotuER;ifM?bFye&l0x>VTbX>D#C4RwuMm z@SeBc?G69OKXk}Cxx0UDt6hq-V$oOGtQkzX(fA8!|mY`dzv+3_<9N^48a+T5>FYcN!$m7*DH(X#xNi0vqAwHJa{ zXWLXN(LMW#dhE9QD;va#zCT!a=2|D$D(kxM`m%8{yi_W8rvDYm;x!jpshQxeTWrZD zf2Gb&oeFQa7A&=s@W`y>CLjANdTW{dChU@#eDE!^Dkr~b4-npZGdx)&+kBkBN>*!& zQwweJC6j8ASvV+Qti;=Jxu%3@Avben7hX@w@*>jGwxw4{>TW8&FL2M>etjH%{~wNv zuX^6N_}MQR`yZ#91^4T-Y}?w}Y6svx-AFj}K_bo|WY$PAW~zuzNb0FNk|T3baY=Fv zrx#YrkX)KiTLRV_*F{m1AbS2lkMe#0t9Qox^mrfFcKJD;U|8WvbbXo={ay*7qf%Cs z@okf)mVGiRK6INB2dkeh5hhtCrAd-Ow#UdTXSI>;AFw3A@d)Maix`fDSL#h!Orv9W zvi4%Q-m!zGx??WucHg|xYeRM+&PhC;Vj&6{tKdUf+mGj+TXAp_$__nxlGeDUbdTHr zXprPel^ZKR`}A;Q&=n6<8n^TSzd12P*Zz2S01(u- ze?g1dKA^w(r9U8mF!gh)%5011;7LT=a96EJJ0*G_z+JcBHy-_Xb^x?Y>FaXAyG)4Mdj`Y))8BGAabEd9@iqU=n&C~QbC;51edpC8mez{p$3j_aQoVzf zVM317;YC>LV`))ZPFXarM=k`{gFGMn1fLOajinT5TD8R*7nnl#@^z=|ea%Mrk2Ou9`0ly#p9rKTMLy-jFrAGv27 z`tw(hL+^j%IQaNyjEkT8CF8(TzEF?<9U6z;`#Pa?D3m zSd=>Nj!#b+#>Q9?%q!awCmtb0 z2htU53#g@g8k%O==}2&mhV1A4sYF>eCTcr=2*Rk9gqy3(mci+=OZ)C^2zZfKYG)l< zY?VR!2u+C+J@MWoD}mm+j4zgP;5}F&F7_2e1A|^i$+)(vM%oyW_K2&9rJ90ef3>t& zE=V5(I{?H18DYy&_XWL57NJt?sEGf(4U*IJzw*8@-lod}-}}<7@z*{-myfKg^tX@c zr!>gHc!2?wCwXq-{G`b%f#L)Hh*8Djk7OipOfT@c>$dyGah30V``zOmue*I*t>^mh z*Ny2gh=-zz?n$nb+s97(tZ)$WObNWrb~LC^@B?J(epMs ztVo&Bwv!AxRiUsPQs!QFU}M%3z$2x$_~usI z*fvhX_^3-&9l+kF8Nax49`lY9L5F~o@PWeD#)mbKE@e8TersyB~BaEU<7u*5YbKm?+f5D!DD)2fTsqw-g24v zd&ddA|9^{fsGX+GRG4dh)QuE70GYb6*|1qc7PJb>_6EoPh|M?JU!zmFhjbEx$NG?t z&h!_`x<(6q-f$#1@|})FYTBxbdLAByXg*V-Ix$0}rml2Uy#gInD^1Je1V%t^g2c}m zS7KZ?C6eU!if)5qNfB|_27_vTh40?SV$?Y1?r<4k93-F<%z>(0jaoqPO81s;kON!t zt%e?y48gFSnuzX;0TQr$m8Ar}Z;0zoThU?wwRVoeF+~ZDw26PevC{fm7(XOtla`mH zq4HH_=#em4(v<9sU91bFpWrgmAL$E!&#E(2b|jJ>FG-suWu_8$)u^Wnk;ODAJmuvS zG8v1`}XkYAx&o4*tPLTpFOEbZk+~% z!!>%m?IWg4R2%=;5C)NnM+1tYsr4a}u}!Z+hZym7Ke~?_{z)vU@l!*{w%?-`4e5VI z7NLp25qHa(@!6<}&OdWL)a(Q@ZX!TK$G+^DWqd`otTWkf!6>qp1V}tD;Ap5s2d6D; zU>y76_xOtjc}beb+5xyxPXZw8NBuIfK`0ZSdGkWk9pa@BR4i#!6=7xPhR zl!<{9#bnD{$XhEPv8MyETS^e?lzC7T7I<2H8i;@5ZanW##ECHjr zViCkB6y5a}SP223iQP`c-o$%4O9EyISYCCS4>FzwIVR4*zWtI*?sHJ5#j|ki_8+`x zXT}4PnDFfxpc(J-7VFJ-eP*DU2oSVkrm1AMRjXzP!Veb#+LgMBXeppOR-&x^w^wQ) z9@cE3WE)X+(DF2GA;-zNLNVl>i@uNs<6y0W!x|Kv8pt zb7(W4dV~?N;8tgu2wLOBz*VEiBL0D=$6_Gpy455ra^ly>X}knGV&L^FwyUaBo;_hm zKRVNhStl;=$x*)83ngukBwD7=z@RqNI2Q-kDBpBhrmY8aD677>HS23SLd;z;1z4F( z!=mlKMV+DB`sJ4~YMWp`o15Ok!vFATRVp#uqUwiP7KcSFjCgUKV>cS=IfUB!dd?xL zUv7{?$PI*4%UO%L{#DxtTTyD=sNyUDU+kOH8a2izUzW@G+dHFf$($XKHT-agibNBF zyVFdRnP67LWf*S_4oC}6=_AO+RmD;cfpi#CeSzoH_-+>h>DaJGH7-3)yKGCR%?d%v z&K5OWhC;(d@8A)~CL?yCcw4*xyj_!94+h@z%^hC#v2BTjP0x|4I}REjXdYV8CB@`( z&Go=UfL`PoK;j!#1+^rg^K+W0s9Mt+56$ugqNwT$w5qP`VE@6!d!dk#*_HFPU!6H` zd~h0~3P%T~7ZEz%ZlSyulvFd=8r@n1&7YcPe9@q!cJtDXEsN2A`_8IIbrmaaNFqQZ zw;sn#HR#0)rx#|a1R%Z4x0Yd}%?Di8$$CrHx?z@xXC-)(ENLh;-%8-gyyyd;Gg*n@ z#Ff8*?N_xayn|3GY+poh{5l~A)ig5~Zr3Ki5C6$fo%6}@J0B%5$zl&^4 zX*Z47X6GJi#=G&x1SwX_ExM*(Rv4|4DjU?IuW4qSlr=ZnS|?&`xHFGir>W5(QbI_@ zo`+yj6C|gOXMyfs1Y7xq;%!1YPQqjF4EEdjx#NXc`F|#S47dH33>AC%Rjz_LON-?- zPelAqbd#PAVXt|LceHP9FY|})h0%_ z^}xXHoWIoJ!)P1S-KvrX==96IMYS;&+{D`vpt0{}swTmKm81%KN>?`Otypw$G$|)$ zMF(0cVE0eeSvPF$e>vWl8sW!cB4l|KRGRjiAnCT_(ttu?hpH4-VHEw!#xqJhcT2{C zCPxRp@J8zy-#9n>Z~gcHz3i1p`q73(jBNVnaT6`FjX+2JRJdnqn@gr&{8+{xf|tKi zVH!)J>B)oh&UH?zzf8(nw=^VKj@KQ^)2A7>+ zo?J)(REhs+h?X9pG^54WuBg)4)6W+#HTM5Bc(IejKc#(f9|-)63x33xj17GZg*iU!&>|MUX3RshtCHz7wXjA| z0vj4ivtqOErmM85iO3UIfX<@Bid>y!%SkitO#kdPr~h^2j=oB%V!Mn$FTN?=366uKk%DKhskn;Rq+gs+^#{9K|%a|fv>PkuQy(0wCb|kd+n+Eh?i!=R7pM3Vpa_FRj zT$Qd%yPEvWQN?w~#8H_(B^JP|2A~oYOfLzhC{kuIRlQmewI~~YgFO{~o_*U`f1)?D zqFn%Mz1NjVL08 zC02$Y$(nK0ok|(?o_JwY4nDe_8?RbOfb=VkCAaWUf$S7ky?mXd6~2L!_y2YLI?~kB zv8Gb?FLA0+A?9Be!v!f~R9GO@A`oN$U}-@&D6?Y0i>KrxMJbB-f@dWQk-wfL#a)}# zQF}~TraMsfn4A9Dkg{siq>hOt=`Lw@Z5@TOYd-dA8&X-JCSH8iX=0k1RoOs<$X#2} zAawtW>ArG|6_hZNPyewYYBOwS$-3*NsMGe?vW<^tLF`^aqqO^pkv2ow$fm`H@+OqP z+P&^3nmh)QF)a=(xplOnRvG`n8E+4eS>zV4L`G0Dkwt7b-fS59tx`7|uM$$wE4fq9 zh$@n~Mju5+TY+lwfqCy80A$Nn##>O}wyV-fgl@y@b)#_$4-weTC6g58@g558@-0=V zjttz)E@4H=Oz<9zQRt5zR}i<{)LncPrl)W#^AiGR1?a#1E8Zer`enJ5Oy6R~BPm{d z!N+w!sUsI!@@`=>IAm;}Ha@9sgDTPzwRx(73uawk$(#qi`*orAA5gq{b@u*OPzV7D z2O#zKk!lFeHCs3XK-5%ok$N>3n%J93S`q4`sJH1!?#bY-Mp0V`=_x2B=Zy!`#?OLZ z3r_o|$4{;8|2g3k=ZU5AfZ^=Wwk= zVRI%S>Uxu_mj0&>DcU?TgP{MySxyZ~^kCnOFs5KPC6cbVVt~XKbh+&QBhtxu%dPNY zLeH;9Hwbj%&pLG*-eNHlNP8vhW^3&}En3V`HvJTf6)AL*%WkNhn3z@E*bZlntN6E* z#^O;C+Mu<>K#S7q8@N`ctsMM9tC|7$-M&Cr`X4FfCD&5j>A14+5e&v^^lbo@PN7b& z?aAx85tq=aU#$MzUpiI_Ejj}%Vt0C}#FYJ4Uy(gYMp~_pEZ)pZ8m5;D)!|yg^u(^) ziI;^WlZ5+OR%KNGEejtv_%)4MwNzFTDZbVCn~Yqrom1k?)R2nhFw!B-va0qfu6Dv1 z#^Qw)1sxiWDqSc(Hg@AnsSC1Q_KR(7)i>=I(FNIV{EA;y<0Y2V1jJWwsME3uGK`izI5`BIdQIA$%{wv+Z$~U7LY9Wa)n4vGOJv&HjR$+d z_`;q8KF-On4f|)qS7*TRBNcuQ+8O;n4PI(8=hyZ#n2ZgHB4(4XhI_*m%a%_D0o1RG z$kM2kshx4{tMMy(x)&c8CB%PeO@$TJ z-u~FI?J9F=No8llFLJ?M2p)sP6I~AmK5=VLV<*u{7*4id-1s$tyDIj#Xw=>293_d3 zQ3i|2=r^tZ-;eN)484ONLnwVM{Khgyc}hWLao?8lu7*4P>TX z^+EdF58x<^VDy*)kpwOa<_;U?mJiE(WIP4Y3B7Vx>5MhF3#vyba%NhrrwsZzQ4tO~ z_Cqh#`Kb8=f|o`+l1A!VkMF>y_li_iAS;Iwz5ScHRz?pJz?X>N<_r6qQZ-vl<>#AIl-N(PAM(f znMgq{W~b;Jrv-;>$G?HC9h~bDLJr&Q7rf%85Nn1JVSGix^|Z;O2|a01Qsu_Mw(Ic$ z-!fA)1mq^GD_z1LkpdJb39_s z5;GuJh{C{NNWvLY&Hw;F07*naR1_Y6?TR}WA8ldUQpNQyH|?K< z7yDDiqw|#Un?AuWKe}4YUieVa3tEqx2fXF13#m#i6z@fhU>|X<#eFm(`<7sKbsbfu zzqGoIWZV^V&PM7}N_8ycEnb<5FxOVQuF}Hye zg$t5a^faesykZu&eQlhhLtmTFeVJ{8DwDM7pca81KZ0lfXTLGG$hq3h8Q*wpze+Y6 z+bL+Dvq?Rb{q{sgZI`ZqUH@RD-DVplhFI`|FBKuvSot3nCPv*9Uhn|V&Av@ox@)tP zI_t1s=w8xnRR#C5!@J0^6P|kjM6>_XQ3#8mYpqdqSFufnV5fi9RT|J=>yHN&kGb=;U+dMmd0peXul7I6Px8Ol%itmsAL##S z@e*!%Rj?gVjb33I>QdRByyQZ-DXo=G>4`41q*ks>BUXavRP>vju(-Km&_G93RkV|q z_zQuTC;Go|{{er7@eU@zo#Cx8C;sFXS+cY%x9~~_)!O`^a!HL}DfEtkCB*ERR)|e; z_%O)4O0l!xJ?G5J#5KHas6?&VW~c^_)bl4T2xA}ms7YyGlA7Xh%15SkR=&}U47Ids zp)mnW=$<3Wz_uLv!0t}rFI2Z@mi}WO?0Pd1&85AUJ(>iGRD~t%kZPj28VRWgelELe zno?PDrSeqvrKAMn7kPPF_~~!kZ-qed&-RHSjsKUuw|A0lTeiFQ+2=}tWI&*hfg>3h zfI)zPL*U~H1wkM~Eg?(T-86%2K>J_BIWVIpRNF5G(~PqYz^I(vgTwX@E0Gi8c*qKKvDPDWy~6k7X* ziP#deSL4z&>R9%H3@*P52Bx*NSsZ?4D<7eoi5Fp`UvT@Vr6V$q_-X4jViHm-$HIvr zp6n4!N=E>`X8#GMm@w0)XntKhd3zB*`;zb+zayTF9(#EWZ(?B0A9F)5@nm{(h7Bzk2ByUAw&CLr)GNl&zZwG}HH%zTC>+CZ_?I{+97Bd7gN9jZKB@u3`< z2CsdwVwB~CK1dCACzhceJ?Acs^u-TF^ii49c!8<4*@Z_(WH-pShRmRhIkjx1X;TMPyAsx(JM+Y7(4R;yZU&G-0Hu2)T zg8^#M|P0=Xp=A)7G2LE*Np6kt2P8gt=kv6 zrAL8P@*h8Y{?JYQGF|5{jA7bCeJ?|t&^mf5>)#+g=egBhV`l8UQ`XtEN2VWxUne~- z;}~h(Q7fK11ZML=ZH|;zx!gaP4}(U{WygVqP8jPq8w^xT`G5)fixxi?dZWzZXbgA! z;boNe-+2qtH{4}}{js)fyS{&@KvUH6!4KpKyxYMKb8#PhS(nC<$3=qT22p|mnFCls zGot2C5Tw>#YT?^6=Ijh(mSEd8Z@zQDtv}fNy4ZuffD)cYOE)Zg8%j2IIYm z#YEE2^f>?7EczWEgHdX@3m@~uR7@!n8)12G8a*@b*jQ$91iKE&=o{)S{Q6A5-S|3= z+f}P_h=xaeZg!qpYKv+rNiIjKff)}zpt?Q-fUzFPdwFOYXC1L|8$*f}*_==Jy3A0m z1)a4TzVAP07)!%G1RqyDCj2so znwBBG-vzRex=~~V=Ull%GXmK=@I_$Mtj3rDBiamEOuzJ7K{%WZv+xt`PH@84!DhGg z_}}E^Sb9$+#b&cxdhi8p6 zFBcg%gZ#_Wv89$xMz{RgZq_cvv9lAX^>88LjCr?*3cc2bFOFGP5602NHpVFR2V6{m z+)-=NCPZ}>;pnnq6IpM#zJE6;9JnzK|3!?oh+T3WOAMnm1WqP{Ckc^*+*#OZ4R`rq zuj1iodlFxlKL0w|{4f3ZImIv8rceCXeIQ<32V3Hs42~bPkuS?0E}?+dx*U01oLseO z7I=q3GS+fzK=~H52oAhWUF0&_p8?AuQ^TYy+~aVsC~YU9$0a@DgI@n&=?e|wqQPg* zSz)(d54lcdQ$u{${{UI$ER8l(x)?hDi{Jnq=f7E(fAZ3I7YNd9q4eT4ynlR6TwDDW zYHwP6Dqhjz?`i*o->?5`@lQ6pr6fs)c(;A)%NFceZHO3xpYQsqdkOP<00v;1CK05; zNJ*dm%{u0LI8Cn&;tBOET~VtjmTJcHlhui)(s-!J@M!;g&EC;oTgMe`J%Fz~OI z8_NCh4=msl9kQ*?8RH|1yTR{DZ5_C3e@{ihsAcg?A+{FT}{( z^H|4oDrCwRLbpccQF+c-tyuc5Rz-F{sHvsYxn%h|6Kmzq2_P+OCRr**`5mfUUSr3( z_Zsp}D{weCM)+o{Vc7VX*PS)P^aSG?Y0C|!EBW#rLoEq1j&`!|b>Q@d(UaXLN7)Cx%=8 zZ{kn6xPh17r}5+kyc5Y{9?jn^|FuVdf%kCTw7rn5f?-Poby^EK}d4)hI8DPtIT;>@3&^vN+V%ssu`9~B3&7Z+T3pc#4 z;jzQWUy1V+=E6&gVpB3jeIH(CAC8ZAhcMmo0XYN-mRj{Z%dxx|L=|;x2N5GH)=n+6 zNQX=P`pI7EqZF`>eT-Xop`)iR{6|^Ftk|Ca@~;Ud_QwS_^XR3qVwWG+z*2et1B~eb z&}_dhxd-5H!dhee;V#b$iD|RaG`ZM963Exes=wOTeeXX8e+)j_2B3)6o|fmh_b|s$d!Ti)j@Txy#@XEOd%b-1(9`_#gDg?VS(t^*g4W z(FEdy(l-)0Fg@L>Igv`qe*;8hy@BmU0)f6TXcfD@83ffDU{1Sg?8LJ?YoYx?vEI_WfnUM>Ch)Bm;!nbQ zwyfA|wn0A|!j7p9q~`~?<+Mu={a~oS;tPO`+K?h4&}U{+s};x853bvOHrYfb2)aG~ z#Ur`#6by4Z;$J>bmX47K96vrn49bRtvbWeuB6%}b86%+7eCF=)FM0K@A1#oYe)pj{ zVTc51nx?;hywj=uuyO5%;i3Hxp1eGb=g{z)Fmi(8bK`vGj4Yz##{mYAehv$Qjt6iU z;9D&l92*UpVXzsQZz+Qv^%;+U+OLD>yT_~kxjK9x34QPP_#eiL_F??w%`x1KC#94B z6JCX&0Ql#fpZ1T3W+MfYm86TKlEW5>)%bI3`G*6MH8zrL{MQ%gAN3*tk||+LS~PcIDKp7`1*v+8sN7f(KdW zU^GWuy919AN{rH0&L6=Stnn5eAIpDV{X0k;9RctnfVR8$LMA;QznWQAui#5NCZCIs zvpw#$U-nl8X4+$FE*9=}K$IgbC0&37IlSoH_t{uT%*dHtWW;@NZ; zeYnIxVEz)qJY~)P&7%M+-SPX}-oWb-&)_4-I@bPxmHiaGEj0BCfbWJ{6>J6T3O*Tc z$Mr9tC;y4TeUg?qZ6j$EY~q;T!iV^q;yFvsHM>}qGBH#hZBMaViBzUKpIYW5a$lt0 zIHIynQDv7+2Y}8?7!undGQMP+C)dx|GLTl6gh0i0j5fxO78~2CGcY=OmT6c{-)-bPS%_f%V?IjntuIKd$Q_)0@P>_xgj_`$u3S3r={%Rt=oRn|Oj4|1a?H z5u=H2_`iW~953+LTdB_6Xa8I1p1zHj*%tq6_&BbAaAQ5el3!DmWJb)s{w!@Xv5&1Zf2w?9eC;9#Dfs0?ZUMR(HDhcN8s3DE%J4G&5&!1#>_M6GlcVR!A6s`h_%6c!`0DKf!>q6akDkWhVr#`A@cG*d zChLy`RSujw{P8EWc7(|DjG7V*3#k)V=IY~GKI}^I{(&C>NM0=Rv~aTy)mVt|*ncdo z(H{1|g&eqY+xf8hRS7$*U!sbahWopf;;o8M!Kb`{%S5yLe-w|e55+5hN8+!4Z-vDiyNb~?vqfuCsFu%1 zNpu8bkfZ71V$_mX!+VQ`WR_Pasn&K4v5nA4vhYEs2M_BleB~GTfP=fl+dI5cET50! zMg1C{kln7tpWXk4@r|8v;^)q#F9qG`HBSCqAQ$o&yQiiM4codo`drDs405AUU&A6; zOZdZ~7>zKN4PYBw!wFSKB*peS`*{a|XdF9JwS&4*MDE`HHPh%Ru`*%wzGKS{Y>;A| zIey3(_U%|{;o6z}p`x+WKbuCP9$P(@@cnp4b=5!K5C3?&=KnfgQgKdnM!t@hiDT%- zJ_>(t{JZ}Z>BOIXcoRXoNrf&*7^(p+G#l-;IQ0iDD;>U^q?v| zo0~rPae5{LAA$p~Swu2rGK^z)=wQNj8EcMzWawy28qo-sZuEa;@Z|ED{gVgUhL1pf z^T*i4^#;?tVocVf?@g)Nj#is4`1P|;;A-GU{pBb9!gX5#?&CYXHy{H)03e?=OXlk+ zr33F50KRh$w*j_RH^gvQq=}^&Ev+-gMINi=FkmA)&F5*bD;MMBP1E}GTe~$uS{?q} z_VGDWgOo)$Mp>wvolJ zg!lG|@Jat4idU|j<5%-HNp*5_UC$9VnW+c3WXg*){~iGUoL{d5;sEW;I1o#RxcoR+ z#$l^!iL?9R8flH*jbGW&g!ysNyzsvVy8MGNGTnw>(#F3V-o&qZUhtLacjFIApKF&Z zeg&m@Lp#Kk6rgbz9fmjYyE#~%xPUFF=UMp#CTF{Tc^|x=mkDKzd~wbCho3NFL6_zq zL&@WkjP5vb#YDZ%MG66L0Qg-2M$_bCV7hoT%Un9(;{*HJc(>Le%fEGPnD^+cEfDcG z?{sYoCp_GwRs6PLx`~fzq@RbMa2qI&nNKiF+zIkMP|dBX{t{o?>WeRE+doh@bc0*( z8on2A%F`W9l92Ayoin=r9LFvNHESJ;>!bxO%(eRUUJAhmPOsI?KG#I+@K3C@9eiEe z&$=EUrEN}xE3|UfmX0EoH@g8^KE@d9`UvOgGYO+J?~U_oN^avD#8LkaZ$i8uKf9Z) zn?uy^#b4k5Y}`ZR-~5l-*qNXAKSB?5$+JVJ<6cH%n5ps7CI6e=1{Zk2pqXRzs_Pu7 zSF+KlFTYu8U+O5ge&{cyXJO-5!8rtYuC(=*DMt2HL%8(N@+Ka&mBKRac(7072YUy8 zZT95Kf5F)su9{$RHimf8I{?OQe#e5^7F4SP;TfG}GtQd( z-f!lE*}8sN7#h4C z&3gCg7ZYJH_@u)g!5W9F_7e*}cbt!YK*@k877u$~ga@wFCeniSI)5$dz+)F%{_esH zcMC6fZq^Uk3;)H}c=KP;314C3e+CcXXW|`j1D*VI|A=4uA8q0qiyqLSTWT}diog@i}5NXmX!XHD;-ER5G7iMqZHbX*YKx4?TpyK~JG|9$@N z#rr!^@B6&}Yj}sV@1OaN{N2Q}k0$pTUb;C3ySvuCg-;EN+>`b&A)7qTDv}Z6cwNL} zputVa|4}ahlB$IovfQFla_XgyMI_+6Wh7tq_XjoxNp!mg)^h+bja$YgSDfZ%(s1KR zJar^IG9HJoxqWXo0^m5_7}2o|VdSf?-KKmL?||;dZ2OUC!=c}RBOw2vI#PyITs!ck0nL3>eY+s!l6Es zO@)B_DlBp465H%DwZY*@OUq~6uOiFQI;^aE{-^vAMG}{>j==%nw>9WBQd_qzY=1WP-WX&{Eqpx_@Bfl8FHGh_~jUgWA~5jivQTWhKEQA&sW^R<+dG! zYQm?EdE1uTh;}8C;wATVzpqwzY=g@obvWA-L!wi^QRki2qt4>{;5+Uag9ujk_j{9D0mE6y`XrLoY1rRB$H3!mQ}|C9K-8~V7bLkT0$gghO_{u!&2 zFL@5&cp?TqI3Nc~vr;>L)236Q=B6;fsuoxmhA@j-6H}?<9fD;B&PC72S8kuoY=yn$ zR$ISZN#1DJf7Nn0Rs>KB?^#N?#`%7JPvPx8WcT8|m)*b5NIP{f3eLJc{?1Xz?lS%d z@h|rO9(?z&&|btpd-Qn{Gq!3Y_PTTA)z3vWhN&ONe69WfmXR3XF)3`CFi@u%6r(0? znOM$RllnLQRF6T#U?E1BVWQN6-QrJdabcOQOg!foSWF0tuN33pCK?Z&L-@gXQ@+Fh zH^yuC>s~+#eV(oh<@}VtN$@Fu&fZP@x$a)W&mC&^p6VKVV)8%PB&}9(ztdk%*FO~& z|M+UjMS{+@=^&@siAHq3@?)L7)@bZ7#_J^yX7}RB=!Tz~eHdSg6CUE(|IPTv|EqX` zuj9!>;{SYnJ;*1G9MkUh{{S9do2zU6AXAH5N=~hmm?2;-`y(_94EmW@qte(6aqXD^ zp0yFxCFx5C10QTbeYBnplJF!YiK910UjqtoVKD*`h(gdraX2)l*3uPoNUQ>Gqds! zPj;A72HI?U?)}OlrYj931if6W=BYYEE)^KlYR{+`D&`3xAstW8yYYI$D55-Fn_S%% z=+1{w?}#;{BGpayY3w z$KHK(ORR0EE?>&0gzv^rosORs%bMUWi=H26?7u-l#4LVR$LJ3NYUB_$yaY5Gc*t57 zD#m_NF|w_PU`V`CRCZFE9gowCHdv$yTy#(3xn>Cbgh#mIf8GCc_+tZ);TwzaGkqI> z_*x*6|KWJ0v91V8kDPyFPM+!4&)qRYK>in)Wr?W2=ozwCCOo)lcN1D`$~8lqA&ZM1 zU47M#n`N=~e7GO<+)gbI>cC=hmK`20iDYL}$!B_;-?*ZVoj>*?yS3@@^Cn()H}MVi zHUHr8HU62{CzENTNBkmwOn!Ix20ejm1ILy%*8)vt?Aaw+a};CKy~DTwqqnSv6ddva z?EJQ~ZV=n`fOuU$3at4zErCwUtO3fEf$;{umfG(Vf12XHRGpL z8$JP|sPYmIa9T}%4ZK5a0L0@UX0&pGtZMS2Ja}g4XX3{%QLOxAzMiPPB!e(LU@+ zs3DIGqq@${9fp->i+Dl1%Qa6R=Hbr$7=D}^#C*qxa)@V_m;T?tH#YGeS=!=X`tfz? zf7Ab#@WjHuZ6`jK+&Brk`yr)TcOQraatSb&VTVAvh&8FsG8REC6Rm3kz1s-p_Sw5r&#yALnEP#(T#k2`+xkMZH( z@WeU(eMS<$z{k{nJ{7NM2<2)2gWs>;N$J`w@%LB|uKZ|{YDPG5)RN~z$*7QJU!7F& z&0hl)a9PCIOFWHZbIsaAiM(if2h~VR;$lU}V+lj^G=77NH>@xHTXNO^HT=l7_}_&W z-Bb82G{2^KApVA4if@aj)V2t82V?&}b#>0g^o{Q@*W1uCSm-qoZb;0-JVdfx6U`1l z?~Se5l><8!W=uW!0tuyYGPXU`^Q{U~@5B?jy~(qQviBnj*=ce3M#JM04_8rp_I`_a zVkQ2|J-ih^xY}G|cipZ1?>6tpw^m?UHKYYks*TcP7ua=f_p``NGiMAkUj%z>SJQsB z#pJ>aEM~4T0f*Pj=8*s~0t+!=5;RiShC< zSbG|GEC%bBwQbgl__3Y9e90;xUq3dgQWEpb8XX|V z$T$QuSbY^Q1LHcnA|Auz;~xLm&F08s-C8`V#4j@V9B;IxzYjmy55?>J9g2E?-H3m= zj`Ltf$U|g!F$lA?AP{mqA{mI5p_EMylK!nX$rXn0Bi%F!cyqWbFe5f@EokaPg0H{i2d{JZn8b81rtqmpHFw`VK*W50%gElHSzif6 zVmDOltsBjMO+2yO?SJ+}ej5KxymxxhVXQ>GiI<)8S$G$3;fumB&d=9D=izi99{ z_{zB$=bw#{$IUXyYW;!Ri-V%k0mq(xkYfXv zMYFcsk{gTfX;x}(%86lQzEq?F+UQJEEt@9)nJ{n!s-E*_D83|rgP*e? zkI5D(N&Y-!@l^f>5AV}>9TaCZpI8z^J~B(vNGGjN@L5>k>AV(Ay&;}jV6SDiVdJxnI{m)&lfmf0?Eb-;XOT&Z zLGPwxUv=M7HJyc?83K`^^iw~*dSU>XF0))<=lH+^tKnt+#m(TwLu*hoe-&?lI{Tl+ z1>RxT|JpxBJXQdTKfoPclb+9!zc=uu9T&eIK7shY#$G2LCTP}PM|I?5a+&0N5nEoq zsp+g;F!wyTp78-5 zL)TAi?0>^2j&Fm<%X|EPB;Gq#_sIT>NlmbskHsI?U(Z$JOjnK1dKG~Sm0z2#%sRPr zM5>2%FsO}4Go5}5fDv<)mNA)mZH$aK(}T$v@WqrE>`gqzo1brjpJ2xA2$`|gZF&iF zLBxaWcj3ii?jpxlGQ^SEpl&?+ztQM!&=_oIv)IN{`%R{)R{(rB(WrV_c%}olJ0GHTt!RD|Z+Ahy2M_jPd=h8m3p~=sCgs)mZ{Qopqjs^0N>EcFX0VuKd>kUCbglUWv+h6@d8`k8k2;8WD3I1Yr4uxI0X=Cc2In z@FBb%Wxq^`^%6f}Ib$#U--*YJ?cBmk|JMpXxtJoPxN>2Uq&6kfxlCfFQY-_; zZ}9V>YMc|AQF3xT`E+U8HoQ#X^{74}gu$wVWoFd+-27$cCxPWNob<~N^AYwf7D06$1gKptMo?$sDOTZeA4!e|7^?= z`^?CL_nwV-4zJ}lX2YHw!cq39T5mpDEm#-7_?hUzP&(I)4cv{B7_^$5ZvdE#8Gihl zaYXAy40?ReBTxIpQ$_T~Yw8A9iA!1?WcW5-46=aXQMwL~{@LW(n`y?fFm_j?lx@kq^-hak-);Tfp>~%HA$k2OILd3sHdDlCZ zaVY!Fva8wK_+qdh6JsmunIFg)BW?+YGfq9v6bl$NXguXFs^mxW)v(p$1M$xPRsVSJ z(@P>vtY`n%@sf&jcIW85Z}0UQUM8pge-!@S_+R>G$B93YuT8A{uS2k^b?On-Y`$`g z%(T@XlCqrYSJF}d0%zYo+pPK!>Jh>$QkM6&@+VB;bi~N(cN!-fc$kzHgJ{56bndONyc-Y;T%!0q-my2d($oYHf z$aw&;ENhky6-wF|9Hrq3mRJV0v5^gfk%HBF{c9=CBz3?6(g!s}i(*X#0SAFbo6*fv zMO9k+Ms7W}0#s*z$Rx0y?m2v@-p0dDz8tnd#d&lh5C24#*aU#utJm;jkuYrk96mV; z0lpvge}SLiz2}6O{bcjW#YBrQ#Ms)Ny)bufn0SF`ngqjR9rcUGI4W@nG-M|2h?p>4 z^3La8n0IAI+xw%*$HDkLIHvw>JLd@dMg9<(MqMao&vwN;F~-$jAAFAZ`Tc(=UPt_P z{(WE+LuzP_s`U#)jx^`X+{-^%|>|G3HHco{IKJ_(va zgvv2x@Q(m28=>ZXtA0u5#(PwpikU*4n^Y)cO`k9~e;Ck)#}>d5>EV}B2FU}QqeE+- z)r+1!-W3Trlr?}7ZbwEPx5V9~l3ykv&K#<>oPqaFRIxfz>bO|(LX zP#iXMC!9vByk4$tdzlk+LWS+%nC$pt53xxg0TnOJYTZ(Oy};Y@J$OgwpkMfx>TUnU zCw1(NTr`Yiqv! zN7MY>j|?fEyvnTe+?W>WOgs$NK^f}xiBgPE`eI-r0S>gjiAQZ^%uo0P_at7V@4+{d zH{+iyT#4U@_AGv-@2&W6_`il%Qk~*~WOxMclhiqg9R96$A(}iIst0{VK3fS^Ay$En zql$fNa1D9mpTk|CYZ81T2_ZF7Swi72ZEUi3f^waww1xbHc!-p0b3?B zPb{XYa~o+v?eJ(ru9jgI;A_&+cp2V{H!JotxeI@QCXx%h$Tt6`9>ZmCiY-4U|2Oaw z2Va)Y$Jd{a+5RU`4_p45J^`?$Wr%&w8>vZFx~sLZ0C_EdG}j%yZG2A%e&|CL0^76{ zo0VQaC>_(-f)A@Km(Q@emvQS8kB!+*Y!F-Iomq!z2n;#uSB`7wv5QCX!rj8-n`V8J zG9$qi=P{9ow6Axr#{Sf>XxHdasc#E4Sr-%H$@b9FbSE9--&lXJD$0(bWQAo@kab(g4v4y8eX}*y8lnW=fg)w4SOq-IOl!y$&?=f zq^-$HD)u=m^-{+ob1-|!xIRNPy>5S)dgF%zK4s(JTB>TKXR0>Ck=v0WKcdZLb_(Y5 z{0J1l1#d`(Y2VDFcn37(a-)Ec2%VT${A0W0SDeE!c&Bk(EKj!m82nMcVz-0G{2%z{ zdBacQNpZJ}D0{+gT+XcLPa!yz;?dh&9eCTHjy6Oq|5TbeY{_t(`8SD64;PFj+)_>3&9@xeA~bA?tUxy zc|tq_o21VT$?{Yj)Ab{OBwzlL>>()*e)F7}82Z-B=I zzW2x4{~i863NM}&!@d49MQVtTEdnJwU%$fgz->0nRi{2A;gBu7^wctG^>Dv+~$IFg79Eg{S zN*Jc}_!{ww!@P98`;1N9I9kcLM!@DlpO$MU)_oVmF?M5PY6};QW|Da-ig)7)qd5*4 zo0Wrce8s=_l91!yc+Li6JrXR;UZ#_L;(ssx#s2GmvU}Y>u@IOZ4JE7WU*eqfMf~1E z?o-kj>+NM4SIE_R-{ZGb+Ge`qe3LEMfUzr!bf|N-pi=9ch2?~{@T0R|n|k+}ZTKkd zAB7q}V_rYHjVN;WSe~v#mX<}0bNQ95oDPSe`11MNWW#_Q>;3!@tNnGub80X0=j7>( zPx(uJ&iQxtZ{n?3Nqr5^89Vc11TSZ#hhj+mRYko>tTWaNfD{M4i%1G!ZZ0g%DkwiA z59Hpt(GzQp#s)*Y@4T4sxED_`ZuqIWkHMSxjrd>lU%c{=vu0z{I{jvN61ugA{Xc-m zjmR%L;>Q`IGoP_|0#5uKD-Y zbap>;e#GR?A&q|tR{chq_?hRdDE#;0kGH7_LT$zWihoqt%Kufoc`or>>%lS7ygdt* z1DRKEojkDKe@T^b>SE_r77+l;y5rO|OW15CM}s^Ydqc6LKa3_Y3)K-QgZrLr1f@tg zwZpIG60Y;p(%R;ag$1%{aNGDUyr|#AdoR;%ek=a1;;Fq=e@C#+^>Kb#dYz;@*GxYK z-?MB0)Yly7s=r>ZvYA3(|6Owh%E|jh0Vg1eDTo;?Th(EqIvM$sj)zgBNK}<8QEsiS z7xph7aPi7wu{Hk8s8Ry8q|!6SOw)7{0LxKhwAIhpz=9fgg@%Gks{X z@>l;j%!8Q6y<{}yy$(uoxQ)N+Yq`=+^>0#fm%(R(a{!IPhF% zha%e6gcPg(l=R-iFb_mL6H7T}IeMur;QAY9V8`h4{EIcI7C_#G7eTl3(m(r=lf&r| zAVU1Vg69gniuXRh0p8~kKU?5rERT!$*MUguZGRG;d=o)BCqu3YMj{mI=2rnrq70Md zm}O+%^{SL^s>U`Nt7TlLLx62uYorl`WD#eMm~6ClYMbI2Y2Y=i$H?En2LSOm!k^;n z;tu~dnHbsbvC+hSGyYhjUVCKv;rI(mpKoMy5;)ayIuOsf=(D0{YyUtFhBM+We!h*z?{0rc+$U)8vLP_Ll!m|69Tn3;(vA z_*n9!+Rb$TvXm%)sZuh5T7T4)+YUigVv4akPvdnr0bdhyjldLA9B=Jo#X}m^=y7eW zC?tkICJder=Gd*7QOBUPT3+IZz;>7CXYOL-=uW&nhkD^du=}@UcriZwzr;63FYqzF zi2oDt3Xo8r_CNUj`tQ~q?d*R$Is0=b9o}tEp%RDtqf3RTN1?~u!ffXk0LTN~`yoIi z1HVmSb!^UVdOV|pkhV<6tMATB7#sJ`;5WDe4C_n(matc62iQT^W^J2(0L;4kWk2;4+R&To9udn3v5=!TbM;-3NSv< zm`M}9lUQZa7Xvny1xEF08J&EYn&|k~CSxtkWrHs4DMo8r)HlXA)D`tx{sA}%3z^AV z@ngmQ8P}#+O#8O@)(VkO4{jR#>rwZJ2zkQxf0gDOZ9ef%E%=PtU%tYC$ugUXMdPo2 zTw~G?FP5=T&jJ-=7ihiS>`+U-$8S*zv*uH}VYhyDAtWzDZ9W#MUkvBko9GU^=;%KZ z?{j&F|8=fpy@xkkZ`ihtNDx7g=v{&&dheo>C`pJOf+*2O2}T{gL<=H15kf@o-RPo@ zMDM+~8D-2cGy9w0^R8#D?_KY|aPPJ5z4vh**Le{iygyA)Li;^PiaP>4Fv(J9fL{BW zwN`!yY^iiD?7-6IkeTsN{Ewagw|f0z@k zmXyjn#fO4sIV6tRk2&MM)mLjW`R&}UxCkJTJd46G{*aT)$6Pvh7f&gRC|zXiPfVvY{>{mx1bYZ`7(7S1cEW(<*V@6SbMm zzs(-P{&^eXD~`LO7g_dwf6zd^b0{#zjA|fcw8aY@;bXwyhPi;J=d)mvU*+ZJFZ&cj z=Qj~WgMKfBWE?iB2xnN#_bnh|QqfYpp$|lUvQJn(kFlp{=V2RUK@3xUH8ZgbF%-*k zA}zN9-%Gr%^NZ&_v2z5fHGkw`L>?%0x_tLTVx_?O)VXhzKc`UBTT|JT$iI~(c(BwxPnp6Qt0jyQ7NraOVEdJMHQkn z4o8nkM19`@JkKkX|M}l|GJMl%>Iyx-BD$0Em!)PI%Pr!y*TD2+MVE@Kc%k)TTa*WR z@(f=KLsIK~+&3D1#7mv}SNGPl?6k;k-d1&a)GdQ%TYm~GRhf_Db%+G#L7~UlTO!QD zdEP~NpE&W*v;f<&RtKHRloB;Rkr~$$i7T}t7@gXE<5%1Jl33zk;mIq9g?Pb2nHWzv zSA+~US#zwkziYJS=(tNzyv)#fp6Pv1^_rhB%Qs1_rUyFJLkxXyUUUclSQJcl&qgh- zA&l)W9a1 zlmQHeI!}@}^4JCsNYSwr&+BZ6UdmOqRxfFAV!|OD-gDV@@w2JhU*?;3UYD`U2`{;i zg!#EO@S#L$!o`PXDo~_CD!0fZxx?KDS5y z1=nnxZ>^FkGo;ggRn6wDdB{tbv=%@wH6H@G9k}def5Uis^PA!|?#J#G7D|}HocC)! zF@K3X2P5sJn@`50JK8iLMDJN43%p^d3#h!O`C85r3XTb%l4Vf1Ba5HxyoqoQV`{U( zBr?~SS5nq3P?o;ErDUP~Sq4AZwYc)9T0S6Xnm;jKUXzYG^1|*|~ z)K9eT#z8iCA!Ri_T`4Y+2_{KU^|8Hf`BG=bksKDy49_&(mdqa)(%_drzOcME)~Hk z1g`9Z&wqFB4y&&j*YkCFbz4jS>+5mt_$lL@t=#$ap*p;?zqjdAN;wz#SywpsV!bnX z3$L{b=>K9?ocR$}cBYBo@}m&)X1Z}OQX(5ITjdW{xe`X~>hWlA^7_iR3Y|4=$|`Ld zSiT=<&Tt(XJ9W%DJiIxjGL`osr!@i7s11S_^>+wH~dK0!FQkiG{`@;#2Ht$`FJ|d-gkxI zd=Xq~IR(>PJ52z7LVR*iv@(CqtIwdhX@)^Hy&$4bES@*~ z*o&}DUE)d8b-|T?-kC9WNIWXNc+1&vr~UQ4WL?sAqGqHJvvyTJG~=|d%1YQv7FeZM zR7&LB5iqAZ`cGnYR=vzb@-xCH>Z~qq5n!dBKM+inu`u%cnt;7w5%HE|na@8NC@y8% z?NF`aP5U`T+@2ge3l?r@3A2)QnE-{&!XGb>0#55gkI}rm#%IRs|0Ey{%l{Ep+S}q? zk?iwkR)Zy6l>BuTn%%u8#bgcJ#)Zg84pI7t5dC-el?b$=O`Aoneuh-uX-?)0_p)Ub z!th zN!0zmAun5_iBa3i_@a6|?To6?VrYa=;ssWM)ud}^mp**OOJy{;7A;c}m7RlfaW1P_ z4IKohSjRlIlK-|Aa?P4kMYj9E&jN{|Nc*yAKPQS{DaguyWy1#~vvv=AZjjI>mO>WC zWfp4cMJDbm*&EP*K9Z3fmCA-{pjf8QZ-7_wyQg)#M{c=Rl+zuu<0*Fuc3;4=)Oim4 zNS;UKRI!cjo0PmB-SbSo#ZV@p_ElxEK5IbsgR0}-(R3<4_I~m}po_hMTgF6*G=2o8IT z{~6_H@4K;&S#t^ryf;iG$B10TKsot^!bWZTa!9CmSDs=m9@O+&*4^(3cA8mvMFPX! zQE87OnK(M-Q5^7Hr$42(bR(=n!&Z0+N!**68ZRBK`hYu~B5A+CRr41$0JjiIoA2;l zFIAW7d|*V-AzA;m>dt+=d_t}Jm60M|xkZjT)rV%#?R|WeLTyA-Pc52udm?dwg*u0Rz5ZB~Gatr+@A&5bvyHZF4 zxaz_BXW;cJ5}@lOroS-`OU0u|T>^XCgF1W_vv)y&Ab?$VeW9PB>{Olms(s;diPiJb zZXDPDb^-h#t1MF8q$gK(%qC8F7~!9Bc!%v0RjoQ2I6FyvG>Pg~jJrxhWkHbX0+tDY zX**vXwrK;pjt77wS7#WuZm*PDcC9E@C9fOKCvzn-Qbz2^nLi-_;TrT#j7U@lO4(t( zd1}cj`891r2ze>4Z(Ey=>usY;xa|GWsEka~M~nro5)L}-mO_K~3@+^ROv77O z4EDNqWrc%IJEn@b@A!D~Dn^j~o&s%%6n%skBQ^szeCY-%cl6iQnFCGPE&yUS{k~IM zOE7t1@=-14M&X-8&+X?#4`^i#vhttlUpki_oz=eY_=6uQxFJvBrd@YxuO_Hb`u>`O zje2-X$ialC4@?k2p=*nfEUVD>$pqUxGcW;bT0Q1zr+g%8ju4csmYEu^vL_d`O=ye$Fj`k5u0$arn5Zu59zznlz8eI#!!5< zwjM;MUoIEiKcq%=#(R=|d9I8~vqi4UE9?MWQZVM=@#!g=Y|D4Zh-J$T&5BCkws1?o zXD%an#>x5*%h@F(!ATu=Wp4UyHs$INnhjKwXGiaO>%^~j+4M;ctcb@s7 zSCq$xToB)Dsg>ob*i+i4X`=cun(tFDS~yvmSMc`L9DQ*%{f@fZx7T-vM^J<3>;1fP z1OL2K`HexOt$Z_M?$gcgw-kQJ+VA}saBzt5oJ08^(8atz@YOwrNTCSYgCfq~;Q~O8 z;COS)%8oNaDOTTTJ04G1E%Py{eg8vPgL4yN&bN~*ey&&RdP!eMuMj?mnB?!SeNIm( zX(`k&SPs3L?H|;=K;j9a_|A0oG2YA}PI-fcj8tN@(deuCOad!W#d%^Mwe3-La*B|! zydxWwlP&#nRYcocy6@Zx!yY-fScuz&vjC4fpM1i+R)I2+Ec8~{T;b2NaACxLJMnku z8_Ii^@>8`(tGh^Vq9;U5nFA$~ex0Ao@?{Kl}Q&RpOQ8(Z~xO%={w$ zw$^HYbBwXq*G8J7SFup`{LP>KJKtrzdiGPy7?M*f8&(P38C0edJ=|}J2=-*UU4}>S z2CEWFTL#CFhOKYEOM5j)?-h7P*&WKr`3)@!3XF)8KXhgr{fES`gV14&*^Dt_>hzsc zNgLHGX8nenByhN1&q;rPkOw0$;I-KWWt-9EXVWR^*1gS1RJ20}ff3IZ5M0T& zR?1UeeN&}v5KZ7PduazAUc<)Tp8-sr4uNx{kNLVyXPwiyr}Zu0h6P$n7Cw2jc3jqe zdu-|7Ck{Ujv1~Y#?dA)aBjKVyAKLhY*FA(*SV)4MkhXBjqyIQ7z>{Z~a|QVfu*vhb zY@bR7+cA_3)eP!)^*Z|!H||!sJvm$$btK&Bc~m5?{}H>4|D&U2%lPo)??8$fboUJOtr(t9*e!ot#IzuwE@Av2Z#S^ES7V@nWZ(bF{K{;{$3>yr7dX7{a@>yvFw^Y zSD9d$t~B<8${it`F`{DP50sA9vhXNtB6+*~AUuoZC0N|`$+rEY`8c{8I!vYFkY1vV z-J?aO{Bn=%jtD6Qq+PEKsJ1%U#Gc96E7$rn5vP^Qhkl!FR`C3CUoRER8D}SIz3VXD zACk?ZAo;2z#;SIeJuj#R&rs3ITi+}SOl#-mG`9zSMgRSjr`B-D&4{m1$cew%n0m>a z5KfR7;gm4e8eH#$)AkR3bU)iY*1_guIYmY1=PH);rt#D2*Lw9@{2EgfalG(nqZF{< ztu1$_cdai0hq^AewGM<8^(jTi1=MvMZEzul)K|&tI&GOMxH%gA%2Jh;^4XUFb3&&f zz>*ly!OT%`F5NMC`uWS$cM1kovMK+J##n3hQobQBMV8*hnSC;t${3FEW^QZmqcNON z3sC_tLA5sbD%E&3j5jtW*xO2NvXg>o;2*(%edX8&lcS8tskchq^58{YCMQzQY^xJj zbQriCth0t|lvSeEHTqTdI~kv^(XZ`)YoZRNmNuDdDgJ>+SVTLx^wY zl=F*SOAK&3{c*tM$b!aZ2D)4b5uF3Rdv~SG=Cr#CwRsv()qMilw;Mk!$w{CSuSm~B zyW{QC>+H4IT?JfS{wAiqGX}aFh|j^9ZF;9}8^HXl`nq~fFQ7j=Z<1GU!FOpE6?E(u z$sW-tpSf&TcWF5L#h-AnG!R=zbjm8;Wk2xv@}=bJ&g(yE9qTud_yEmeq}gu@qUt=% z)~t*lTqgPlT8eoXD4QKu3D`9cPA`=_WT?pl zN!ZMhux80In+0>6$c=QMbEKC4E?4GsE zh%!631&X46k~1Byt|g98l|GIC?KL={P2i;ozSS;NErp>S|4%=S4GIWr{ya#W?TlOP zdB!7XlHbb>=Cxci+>#nd)eh4=TpWH`%TpmZ|709X>$Pq~qPQ3WKGl3yc(zKFQJ-lXmoWR-Na1Pkx*bjMD8>9yxn-qcs&n4*9L`XQ z1ia|FL4RZ6HXqgnl?!Z=`q(BE9Qq+Yo}&95s%Yqc@aiq8T#NIh>p-lzjTT}j#so_| z?w_;8`fG{Xy9ct7M2I!77hD}%QHx7(k9y?WVi3k>g5xN5)c~DGI(WOStnK~(7;9#B zr;xPkArB5;0@gLMil?kH`P+LN0)ej+C*LtBQbUFzo6Cby>kMC;Hpd@4vs8Fp{;iCr zBpUog;0+xlN)K9oljnHAZ{ipl6A!zloViD5&9mhCqpXHn z>8bWh*3AW~`jQ~WN57QFYvpLZH|AXg=B=w;PCg}w2kT(RENCLeSxH#zuMr|(ATdy_ z?v5pGaf!X%qp9*tjhTR?Qb`aAeUxUdkW$tw$R)_9!dgm6p_4%}@VH(5-c_I@Rtm+o zS%+qp_X~Oo$Ot74?2?b=IF65JY5l&r#zNOM34puNt^)isiFOa7)rp_n*K#-}EL(na zo=cqlIv-)MWTcpQrHf_75B&^{*kO>VkEFV(Hr3ls0YQwq*-7tVAQQliVtb}{(&hCl z^hj^+?bgJEQD$tNpyyUc&{|Rtg+9oNlKa6v{oD@G-hN#r>%fxz(MQnJ>+2Pu79M2RnJx{XJZVQ43!&7Ca3^g>zUA~+M1nOFKZ&q99 zrE1=z%|w(_#Wmb--t}^FK0cxZ8$L|AhlluG}fkotO7 zFBBX`SZsXEBdPBeR&4T5iSkTZMwM+7F|D( zm}%mWotB7B3O1pe^M8dne8R$77VrV+*EwJtUo{8Qs&r-@ymBBB+|6&j$PrWjodlEt zvw^3VLb^^sgpqsp**0&P2aenI-TI<+7u2)C%7rKf|$yZMpb3FY)<;1|r(_$mLa8 z?{xooL^4HXkW{A3&gwmV6+!Gv4qz}N;y;D+z8s3&PE$;k9JsZo**IRfO zmu~fz7Wgp|Kg5jo=*ZBG(~bdc7$shg9w+;$eywZJsporGRump8>qYhyO3qFR8n!To zZz$Wf(&JA1RM)WCWR0;9I335-wP-K~B5T>bzWEWz54kG1PY3kr*>QJLBC*xv+53ZB-*6mXZ=WemFuKIwGZMTOInQc#{~IMJ6{Yq2+}Dk495rlQ zR0o{RIpUYFhr{uv^_yJQyO;Z@d02BF)YlSt2G8UGVdk8U*(n&R`nkcca}lH{(ahb= zO9mf+Txc>>{xg-w_=0x`0Xyee&drV(jSMsgQp_bM6 z+^GY&&40A;rPR=kt{io-yg|{u_hz{h?sq593L zWP*N2Jm6~Lai0x=P%=x${RA3rGpe@{eKxpvM<3JJlj!ZA~MgoW6aV50luc}S$nNA?7r%5qKPsT43+6VkoBDGO` z%Nf=Hoal&39GyW49%(*=lfme&uH&d3l>?F6pA6TN$A!(u!di3&`#majU6$%&C;eML z%DfhE7Xuq6k4%W%>)Q1lxAJ_<0d8su4)p0Se9tzM)#Fcb3X{c*BXFmYE4_`2BuL;G zAw!|(^faN=@)mxn>+SJA&x&_1tuBb3^IpTGO>k%%3AM?V-dae(dq#@zh`I|7^U*|} zkEav776M(-Yk1E!4=qdw{WSM|l^B_HbhoqT=S^7@Z~7MS7b|7V+{xvY3`voUHAgf5 zFNPhw&8_fnRKPtwV9Bw0$hs>WT0+?f9;ualb@uk|z%SMBLb7)P)OPK;54nf&5Z1%V zL5xxp%)xMS+l02CKR4ah_H^BWX`}^Jua{ac3wL8u_!&US{<{fLT~$Z@OFBvKXdQ^D zKs;_;1mEx7$9@RPfpws^_WXc;FQOqbi}IzX!#h+mFI*`-aE?sQ+>Z|XG^ksRx5?jE zERRtcJ^L~m+&~#_lu0VEWM*$Oy+n?U5Y6+4D2AnN_fheDH2?-+GCw$x4307Emz4Yu zZZbtyU2sh6UVX4rKoudAmvc0BzG>kF*_M`ZFb?UHM|(B01boQCo^1z7N=2b%tj=H&wo5@3;I) zW~Vz-Nf^_;>+n-0!s^;0KAKYf$VNO3bn^%Cij}4OCmCm$K^-zmHqd4-0!&Z!eSTFp zF#fbhXoXw;RCQz#HFO(sjLMX9X*@-8;iTZ(?R^0iZi{$3+s}xJw~tRnI=^f8r{}F< zA7t=fN`*?)_o-`hf>h$!9s(@g%~Qvo0}ZmYG%d;Wnc9-93ct$qxw}%;Z-fHA)60mY z$!=80VQTpmS1)xZjD)Fvq5j%;X;gGtt`#;+;>Df5VBC&j^notWA3#4z(Ot66%SUC5 zNxJsIfYx8S*FYXiqam!PAQde_WQJ&Q;cO4l3T}2I9g6xrTLQ4iG(ON@-B6X3PI69M zZWJy}m<;tT^OCEr^LTE`LwckKzM)zov^J7&r-Uukz$Rt2Jk6mDq9{e0fdDQLbI z{Yn8ZF3r{_JTw5{;waO|Kd1YklKwOMFbka9bYPlf-E^REJN3n(Ja=GXa*e49sikcd zdxge_h~>WNfv1}@yht8~yjN1c{6EL)R`hU+%4Q9y$onApESt?y(o9%X&^i>w1j0QN zg&-bE;_#toFwY7h?`p&i7cL#=;48~^Y~_?Ec3zY(;;VQ0M-#SnQ?&~88wZiDS$#1+ z5OLKV7mdAXOxGSbs?N*!X#vuYov6}kClere>Q}Xi@Tv~J7fdvVY5UHa(E1Vibdnxt zeq6QQ-F;5k-aCgF_0rUi0HKop(g70fo^s-nR+-;i7Z(5nu$x3&L#CG}*RtRn)b>|! z@C11Xru8k+dh)k7uXKm1!BaI~KIl*pH`@vG$MVtl!1)y`?A+owhj6qGr!uHU|1#Y_ z=}UP##clKL(n_E16Us-WXrkEKZ!vkIgbsHl0PP4HM$G5bST>fgpQH|V!{M6PCzR1= z8NjVo;&2C&FWVOA%Eomwm(;m=JDp9djeN8fLH*E}y<0X1LWI-yS>h#Q2wh69tHx~` z@~D~ETd}0p8wmxyU2ZO3Jf_6o^0Ii@XGYPC5oSFP>F%U{F~GTl{vR}3Fjj<<(-ufP}0$g1lrso6Rn+1|3h95Gri^FVK4>$FbZa4tUiom*;iV6$xRyL__cjQ+dFa)b(z`7FIx4}!O)uR_uURYb4U zhV6s+ZtfuV`5n(#I!*ge8z07K3gZ|nQC8o{12?kfqQa(I)Ki)+X~_ghC`uJjTvPSxoC_xq$VN6F#tllGGG`CURzQekQ^Q`_gKrEkj z$pz8N8%KSG#$q2p>wIaU<4br)mg-}|gQPRq@aaNToqN$=?NX&~oMsT++F{ZZ<>QU! zc-dd1-w{2V1JXXR7Lv6imd@gm3~xRlshew(*2b*w(&~(9gc!K4y~V%uSmzuz$k6S8 z0S0tU5-haByUo(VJy;Lx>Rs%S-d6gl47#F-_1GASM(&{aaoZzQ|A4I~(-L=Qko?W; zt@fFi9M!`mfm}n;Y-ZO{>Yqd65={3xgkEj!uvtve3I@N{OC3LWZ1WaEDEN?8O-!)N zj=%w4y1JI!+Cc(E2aQ2hU%v^S;XX%nz_l(Xu2~>k-R?A*>;Lx^M`soN`O_!T*WgI6b0J6y{F?Q4aDr{WkUX7exQD$VA( z)^>85^@T&tsuwGV`EnsM4`Y@qC{4Ft7%s#M!KZ~jRg<&(ag$Yj9l?K)dZvmlVYo4d z@)+7HRa_f=DAP$c%HxA?er)Gv0>`E&8GT!x)!5Sph~4dJYqTN>UL~FYFK#4WP5vx%G{PM z2F&x#Q@q}2DefBI`H{YB#b1<~m412iAUJXeIRHF^u?yk#POr*RhyhzJtrsI8)pzsU z@>+>#6bBjrID&Jd?!b!yQiHqq zvbBh2SY9tyGO4S}TsoudJcz$3dBRh{&W$qX?-7T=)r$zPo#z{W z?Gr0~Q28y#PiMhB>}T0HktgZ9ZGfupnnyEwwWeyL;vUkt%fUF7v&4%s5OTvp(WYZt zm9iK2kN@{&)9f2+3!eeor5oxnYFt;`Qe4zWnTnJy=LGcloA=Busc+;`LZ3`u1%hA0 z#m@MMWG<_z=neK7?d1d4{w632H4a{_bua}zS?L3X<|5XE>0s#EDtZ)|OFyI+&|E8h z7F=uvCWc{I1+D za`21~K+OW20R}Sro>rs$CyuT28m5`h8^Id;kzhdE3 zJ?|NvWqnXjOBU1|9FIu5rK?=iISaJGw|*q@-42_}+EmfVb@8P8hc#t?sc>LB3zH`^ zwfm^QnJB-RNac(ThX5n#z|raMZFSQlJrtH_-(N4e@$18Z`*;8Fm&p!gjZ6hP4)QsF zV^&#WnPmB(@)y0x_4&_KxG$fht$UZrY&X8yN*CiLAk>sN_#z+HI?g;9L0=aDC-`tx zfD$wJlZ(VssYmGXWgmC@9xd;{U&=RHiIlj6H z%~xhr%${8mYbErE)5`ff&+_cBV(K?tvA2VF{LlP_xSeXHX;^5a(5p*aiW;}IX+i8R zlsB+xaNs0S>E>};*V0K3uWkc`Sl`lbZdIppeJtoP&|kRAmLk!yz~>kIqY`zJ53z#Y zZ0oN=fL$o&8Y^T4pq7P{fYNN%j2JFctB`f)2x)EjODnpNU zk>}}3#lNq;{O(>()vKlK>V53^^1iGk{}UesI1Rqq2CmsVgV7+|db$ws?W#%A_sQXy zA85%(?E!-9u^4|Qy~x5}hAqKsv)ciVa;cV9eaGijCWVKCaPV{QrLR)G0dQ3WQ=abp zI~G5-4FBy2nN>oe>?mQJP-@t6Hu#<*1;lWK`dsla$76?#NT}9G5ZJB&p%g|xicU?vT+cFw z=gbdZZAEilredmja_g}>Y51xu>^`q?@%hI#zTC29tTZ`&2hQ@j&b-j+Bh1-0`@y>q z;0A)Z-pMb*Paqi%;r4ML5oyzN5Am*jtT47ngXu7fjY&eI`q_FqxpG>w;M3KRgJp;)EI zfkwo*e$Oj;na$uk-ydf%Fxxqe3mO?O(`S+jWA@b}MGYc(+fMJAQaLWSBs|0f+V z979ncPqOv~APLrdXguE={vW{>&V!%U>-hvJQf)yM=L2^GaGD288Ak73)X&x!e*0T6 z8H8*Tf?)PRKmh(YnjqJymIQ%l+owimOqP5$Sh=9*_ETRbEFR>^@uwO$ku>}mf8?{q zDH2S|Xn#$UgxD!5V@7T681_2AX-Aub{>LJoYePbA33;6FRV{8hbSH93d^eTXu6#_;eHFDY=#H*)G4L*r@xh>=7nYALgWGnH|1rpR+69 z*fU0)E- zhZstumag&k@9U>CHIwdZrtuiTK$i|FT~^p*OZi`wH~*s{cg8^Aa9dTyN;L4PJuDy{ zfb|;0Bqm@giX**-CYjZ>;Z7M&*DxFf5D-Zu@F0#8u1IAbrqfH3&!b!CuZXMU0Km z3bsMv(^2%TKJOdj_!V6MNfkx;IX6)SaItIEi5Y~P;-A?uI~KDI;5*Wk0zgC#?~KxX z^ZlcP+syAgR`Ymd!xDRoOI58-^oR(%R>7J8Ke5^<+6r=c9B-S2fa}gKop=Bs8 z!lCw@`{~oQ5ar}QMK;_5-#JKCR8{ps%cp21nAuHEz@gD}g@0LVcHcX1*h)afW%vEkuk*8#_w<`C^ zA816et}1*^x8-f9(n2Av8u|J6g>e%q#&)g0PQeq$twiv4UZq$P0+5w`M8ucxb~fc9 zx5b=a|9d!=up?9E5u!txH%ci_XT}Ql*Ie(l>J1n9K)%Ai=ZfDQX`R?p_-|YI#%9GC zv3>myV*mN&01xx8-ZSGLl}~X!VxS4}s1mh0)*2(k;8E=(2TQ4r($^g=ZxnVC`-T;M z*XZ^rd@$-PfBVfI^MZu1>2SSA3H_yGpM>4l`r4EA-X3;#l69ntWkWeK7KY5eEg9gm)X9;kyP4L*o1t$2h{@NZWI_Wak#I$GaO0us|ijXWQlIt7zzjo zePm}We+U|=IA%{sce_fIV%ihaIHq)A@a;TZtg30BBV6c#FyybR+{tK#H5vPw9m|1gatlvh(?oJ*UL9j4(u)%~`<7ioY#!ch_Nc9?^N- zAqml^0~Df9X9+$m1r5Ma|XpyUtZXR zYTTZ-Sfl@0F|O0l_v|`8-`fn$(|M#$QLD~?#Md!src>r{vNa?EUy)Ue`hr7%_OY)b z9g4>^o%W@Bfsur4A(SzSK>a7CG`&l>u|%)CHq(2(oTx^#4hummcktf z9pCvh1c_*nibZ<@3H~y<@eeUHCi*m!^drWB=lwtCi_eQNhVM`8%f-ldNa{Mk{)+uv zkpMdT@F_u1?3`@``U@XmYY`;$6sRX;c$9_y^C?uAcKHCoeV;m{m9Rr?vD42?4YZ#` z^A{fn$_2fc`naiN(5`WULX3Q$sScGm^ZsD_i>5?V}&w>-3ezv;1@HoUFf&Fl@XQ4a(k@n&dd!+v7j->-= z%p1Q6GlOxaq)s~=<-(w+;s{!G>4zM~uf#z}0wQRYQ*3q9(Xsy%T6SfyM>_p!$iY^2 zBmfki$64Sv%u<$M_(#k)cD61gSaJ;(1Yf!M3T>9cE+=IdGy6$Chp`oX&HI}Rn^AdM zW$3|k^aFX{_!%|q;3%tAfELgIO&~HJ`nsDzt1YEUN7{)jNr`@AicAM~55V%0!rx); z@7=Oz0}pN?le(M6jiykNt#C*g_9$(X3(5-1`7#&nW{{g#DHXVT4YHU%9z=Zwx=UY%&nww2)(oh7@Hr_FLoLSC_vOd^@m{uFvfx!rS_F7+5@!3F_k7RYXaO^ zdmW#iIbhXE>PifL1Y+Oirb&h73H~FSc;;tzMs;_fr#>h01s(dSZLdjZ|9%f`4oiKf zD|l{=FB@E4(qDLCfp{1{>T(H~+(fUXMaA!W;PMHoYUDG3)HOz?A^Jztbb<3j8u50@ zkFt2{qwi`g=K4AoVz$zS-`NqS;i^fqzAY9NN;p}V|7h;f?lO5@?#K#hJ93v;%g5}K zPo}arNd@(&dcJq3FC+f(U@=C>REXn2YH@<#wQ`yeX+#Lx;+0^!y;fYa8?&ivH;;qS zRO5o8(RWiP%Z>cr$ogvb5_oA037mkB1Ti4E3o4R4Vh;3dU(#lHI4XHVya5R`_Ibd; zeS)dutx|bL^ZWH|ZpgH8RR5aydTH_H7IpfEhFTGC* z2ZhMGwgWc0=jrn7+8T-{WWRu({WhQQ_N^6sA=+9x)+1T3+ny1<-u;G2|K^pv&TvmK zDKm-h4}Ir9x*}HE1L$tr z*2u;r^^%g3$lE6)PvuZnTzd@Y#VBJp?cPunj8I9bpnP;|)!x-96P#nzQeIcY?uTBv za0bm~3tlf6!e}MmAJ;Oyx$ir9XYs_BA|a*p6MoPzyoyBeEaY-d?!E`Na>Xp4CF@Q2pC@FK}pXnO0ozlI)3~Sl@%qF{%T`H}RpD+fZUx@5; zs|5|uM_Z^! zsveVQHB6l7PSshoT(0co>C6&@&}6pvZQS&8AV~iJ-J+hnh=+>nCP7fcRyP{~YtQTE zOV-D~n?55yWr*o}Fqmre?QhLRc;j?)rDF<-%dby*FMjG~JF(xnTEj>%rJFtTDXOy& zx%q_v1!}I(skz8s5`jdhUXZI1&I|7qq27o|K3PsGFk)NYZ#k}?Xo85-$^0A7t-JAU z3(o39(q5IYqr%E2O9Cf4t&T@%(RGicU%<4Vh>3}Hu^d*-@wd6wBtqBEoUUhfD~eBp zyT#v?z63N(ea(e*{$8huP)aYC%ROY~dTgJvSYX0~^@c7K#&4>G-FL>kQhEVnryg>3 zf47A2oWKca~VVEkGHJBWi7n$ zTNVr-(K<_-`Kw-ZGM^lDS6Dy~HhHe1ki%hMvfK&?L* z(Np-E23Wwf_`6kym)pUr^kzi{YXuKFT%{xz#MfbVf2r99yixi{PV4_0d4n#l+2F)-g3zE)%Sv>q26g^E0rxvtf>bSLz(lL?aj zG2g-Wd>9f~M~sGDS5IGT4X#K8Z4aL4Uv>Pb*(nQp+~yNWZMOSM;@ipHx_b{TUo>v0 z?~Vd@-u=Bs?p75;5Jzb+Oh--sK#$evyszBW42zC8BDSo`mXh0Cx^3~=FuEb8im%1r znVVXaRe>Sdt>!Z`M0fyt&Ym9~aoc=$Ieze{VNQvpz1CM4pX}@$nc;@7B!FD3D#D)h zo3aeiY0(_*ow58Sq&~A5jJ@cBxeKIHv0K#n7;Pod{*Hg{WSbC6B9IB9XZ&Vu=6?pF|aJnuAp$A|!Ns45@nOG$CJ z)^Ca~+~UmbC}fwBz;f!WMCpANZqc@6-|DcjEBv%d%6@MxB)YdfajpJSVOFzgcgI~r zb{=fS&%Mg>=Wkvcmc>+m$#QtSU+vOx7##C7+!Qdw8@7ht^)K}e#}^`3X9u@-3WlZW zu75!jsd679tH^}LT8IGs|Oq7CluI9c~J@=4lHFo0b_j4A~w zX7VuYQh5CT1K2<(zx3_78Om@8R292XYxNLpmpWRafw@?&z?t!B!84WGBrWoxnI!zp7L zM0C#cDBEGvOjk>L{k@A9eox&T09;*Nb!Xvgltdqz-3LG!D-Bv}HujT>7FaIYGBjqP zOVtPP%`Y*kHGJrY+dmqgq%e&Z_92oq$8jEb^q1eRceUTX2-NN#i!Vbqcb@pgxUA)G zX&)!>A$|;w8lye9(855POY+Zq^@Zu5KSxx^7rcoSM+LBidMagOU``g|p#z)?H7jWO zaXdcvg?VcGuYSxlJ?$^8rZ0cgYP#{d>{RMYUEV-qhciIxj*|^%teLyuM8bXymW3^| zT=d4bLx2awIjUC6^OO#x%-77c}``|qc-{J-~ctLaIPy{h;4@B4tjui!03%$>&14YaB(jX1HQ z0f1ikCL_LyzpRbxt+!9pSO3Ur`Zqt5+0r}zSv87k-e{uwnW}}d_?D%&7HQhn(hWn# zLi$Rs#arcR#&6aUy|!!OZsUJAem!OJSvjCFgGN-&ljyVkb+Nz>!2=@C_Y~d%9kjm) z&b~3jx5rOHPJp*Gi2C!!Q+=s{!dub0t!e6gzBY3@3fS9wqb>WC<{ZLN19v|<;uG#x0^b8@k$VD<3ry_HCr`j-;C4w=!twYiGotknaKH3Fzu?03 zzW3kPoBVV+UUBG(yk`s;3Y#LW9yI1sye7M=1vO&SyWm+L-k}c<2LAIuGfkiK(AD&B ze{Pz7;-*JY9_cw0)Up-F*KLt zQT!MgjMfo?m{FPTTD$Z%zIZbp#sa^@qRnHyus`r-25WpV6hAGr;#8>f4ko;kwM;EU z8r1TYU+m*@=BH|h|MwoVnm+tJR=S##`~NmjZui)uY2>hj;o=xCrK+Zvc=ffN6vd&Cbude(+0PPZ+n{vt}=#j%U zIjN4+QdX$y8iW&Gp$0K}OZmz13-}TCt=9?Iw0}3?F^QRz+Hcp|_BKvioy!+jz7_EQJZsMna&cwA(=n69E4-1!xzJ*LEZite5l@Qu z%VKnE;G^GL2PB^}P2c%htLY>4N@2c1;P=C8lbI;6x7fJbF_FZ~*|oBvcDY`;8OTU8 z&KqTxNG{QkSgDs$)8?;>km`7qv)=Bs2Q5e4sN?X+&K}WAIS!9h;&1<>Wz(0~hiZ+u ztafjL(9)g8U)7G^m-}^z|3Bz*|F`QEz7N%5E)`= zY{d)A>!xqGyf;1P=4txu@7vGLU#C{2y#wHRBnGZT=r-zvUSw>~|j> zlpfIY#xoa~KQ`LNdyX+riYJ-D6^(YL6_Z(g5x(_#d(&Te>fUsdE?V(aH6b8poENB* zZqtityXyU|FB7~6kh4AaaTE~hE%djovCZ#3L70|X)U?%I``7xe^FE$gVJ|KeCOsw z{tMLcp9r6sV#o>cEL7kV-xj#f zFv7r-(U5cH3oy3o>y)P zZ?hIGI}K9p*yW3H0>nk-3POpy(R~xqd_(~!`7wSiYI}>AWds>!NZYsQAK;J3UxvlY zQ{}Jlo@Xb|KjXs*Q+E2&#aO9ihhOdL@9X~Ng^QQ8CF=u#)rGff<8(()fvl4JL@N^j zYG#?wl80g(t`3UPX1V2*QG2=Kw210Vu*S#YY4P~CX@B&0uzx6?wQUnm3@S_iPmGt^ z6XQ41x*J|uX#Y=w7tHySk@-G#;`VaGf5vU(n>mnC1jd59jG>z^}Y+71=1U}Wl*NbtLAsOicOtD+0^%Z|5_2B0frpwgKZr;ElJ4#EgHlg^$!hw{C$6R+{`Gwy zq(WvETv9dr#fBS6UC>>+TPnqi3OxU-~PFJ@$HPDFIL@g`L4HKyo=`m_8w>@V`7kb#G;5M>yb&Y)WBdy2g_( z@n$%)lgPmKS7lnA=MR3#|K6D-9uwn!?VHhXNzVlEaNaY1ZJK`Wx2EYYKU^>F`RHkS zAAMCXzvJFEN8~8Ce$SIqi(}aH&cbb07DU(aka})!!~50268gyZ()YbTbEO9ar|DaC zyW;t;mLAc0P%tY=3=?;r2S^5drizFhQsv^I6x)4V*WcRsF1oOCWv=rFO2jHnowEV2 zEtOqE3fFCHSPuj~we-rben_UfJ)9N;6LujQf&~ypx9EDT)v$O3Sw>X0pktEVGr!*W zK>bk9-+tKs^j9CQAMLqO2Vwr&CgQbyk}&cV?=bAA2=XuED@M`Gr>p+BVgNY*u3NV8 zKySFTH~p%NXf^S{tkMDTrG4_y%Oj+7@&O?Rc5A!7-7-{<& z0Y|BO(_1fIzN*Jn>j2>59s6$)RiD)Z6Cg`61Q4-IV!L9Ncuc+)vj{Xq4X|;anYdd# zvAq*ulC&t8j_gQ$Fu@zWurDC&1wKA&`Vaf3z@zpke7U~Of7?HIyqqKEE&1Ec{`um) zRbyakWn%thlO&HJkNnZ7;xPomMv(+YE*tFV;%dMxx9{m|R=OYm;??v;51Xbh{K(bx z-uL4`K=G2}d{R@=IuRY|ipl^XDPiKtp)ntud7&j+lgPx-*T>0{q-(rt>> z^dJA1UTLgn7I>Kv8+rSqh2y7gJ7$z4v}3K@H32UMy>n@?p;ub*v+@;dfDAg=UawmKYy1ATx zzj)Xcor5aFEymne>G?w2loIwJTViLt*Cq#p6BxOh@v_$kn5VLTkK>g=PT4(($LEg` zV>?64T|0h%^^cj%?q44<^{u}*U){S-Gq?@_?tk&Nx4il44Yy>xYQW%*8B`Ml0}E=8 zt5-Z=qr_pG^+o|y3X?A-GR%wMVYJ*~cxg1AMP%ZTaBFtpV||l;Qaom&OD&ZRJo;TW z?X-O{@3r`Hed&L;J~*up*;7q(5$BwL=v^xQ4LscFAWv3QTGMXy%!?QYd78;)=jwj& zMUf`Gu2-FlIuLk`u3P=HpPr`w`YU_W7k$)f`uq>y^QC!q${Yw}r+_MST4gF+h+1)o zRh=<8L-CH$6Lbqcsuuat56$ROGzTY-|7Z>drs=!%`q%IMwPa@`FAR~|DS@*=t;l)z#Ig# zX?6T+A_C8gmYa#4zlcad#Sn3pHLeJ#*n}7Kmib4n@UYx2`7$1ubT*z^9cGFTzz5@G z_&mUivR3@ghvydfa-KOBg_DRf8l&A|QcHsP?^Zl!ZNR0Qps_#AVkN^(_G67aRaHBpoU%4@@gT(;qwBlvT41#Iq z;=zF;1w~)O4^cI|GE*0E@KCm(yIb~$4E%Poh=cck8lGG-<+RF<7}Yp7e)2#$KYZo{ zPW4!%h1I32=@i9PVYK1%K``QVx3!Lk{8J$Zex`T z`Y!N_@4iQ+I0$9b$r?&RNz1ejbimY*zFLDdR=KqQhjqFCtMz^Uum7a|=_B5QH#F*i zPM?lHS5Rzj*s-zUff|$=KX7#nU~*r9$;61COFU;$9L&Ax?W^gVettFmL%q@OMX$>f z{_r{sBJ0x8x-N1y$jV9Q%ycc(Z=_?&!to&+F`uoKiAYBe__kWLNpl{Z&(i6urfSD$ z1ZTXdgQvJkkM*mKq5oU)PTw`ef2Mf+@Ms)9ewTDcbosi=({0Kc_s(rwXPMJ zR1&kGXI)9Rq_iG|7kF3vQgGNmYy9wbVeMc<2?@tH?H`3t#=YF?zlc(I&{|W@8jrrE z{|D{I@;oOBp{hAh)(adX)bOzjJvQE?tIBf2h^)0CuRq?v#s>RUI^@0q5r z|EX#E?OS*!d#)H5khRj7)|*=mmBdo&N&-1M^dUgp-x1GK>U?A110Sfbi0PN-e&7pN z(^I4E z>uKWBo(;{68jaE)AlBM`TJoTE0L?&GKzX+U{KtOyYI>?3tmKmaeRLqjZGfSuf{wki zgPw&hU-c>1`fy}BK0?04-guF&^O@2#JzckQKI8jV(>FeQHN90^N9I=-hcRNA=OQ^? z7RSFFYcYutsnlSX_@LWw(rnpQ>X5Z?-NeYuJ^Dh`7^sJr{f_b+yHQvF&@c*Yj6IS1ici!vE!ZRiegAEaO*1 zS1e}yJfGOH&$j|NN%FR{ZwKgNW#?%*rQgI#noDD-#bWe#P1kKLe55G*(8?vag%`Da zLr-E7!L;;omi`*P`c`CF_=WGp2uSlpcnqPBaxQqHP{FUXD%SG1}^&_jb_#ZT5|4LWx=NZsP4~`HNV-on1Qv=f9ZfS2Op6)se#VX;We+mm<~G zz+2Xs$l47p*inP$K!DF{b!*^X>bu!L@Se%R)(Mt|B_*D9*5^@0Qg7iXNSN0b63;<)D?<<{|ovS!)x=agZPT;p3_on zoj@qI@3qqF72PC$uu6!2;%Gc73|~m7se*(!Eg*{ZHr{z0#90mpDIPz8iN9&Wwyky@ zV5qG>s-grv`V@#Oi=5#<;=OgbUvGW??USR;9|hjGV=4 zvA`$MTk$-z$-VxU{I1^msJZiWJ>_a?=WJ#$)F>=^ystKa24oEdL$^zf=17El(JR`hxS}hC8 z!hQ&|{|I`%8Bq4su5QGS!?#ieHxh5N#n=UZt@d}sZ|2|e{NDJQp6qzC+M-?Xwg+EqKTa%{7AoJyW!u0#o@^7m!7n_qQ!Z)Wa7i0;zB>4g z&*4B|<#+pkkq!nPpeM+AMj&VY61EP*>_%EzN~hH^r;)*ig`L4_&lOyY(4g2S>O3F7 z4(4C!XQSfSw0g5hm`pfwPf)cH1vz&F#w6Z*Oa#(e{UZnJ1_ghVW^HKXc^WUHD zub=JpPcZ`%z_zSRG2xOeRsL(NEmw}TU3a(PGobd5`0$B`@2}{dKDUv+`vt4%Km5XK z`dvLE&HE=V`z9&Q#O*Q@0?RTO-{KcKA$vQ6OciA22mRI2zh&)&gd~6rWjQ`bSii{*W&1QaIZiW#mZs(T3X{)o!A{+XFp|VZR|}&mC5&+qA>G@0Hc`w{)iav@c#w zU-B_|aFF*3c$EWVh!%_$?fNv?YH>rQyvcz|8@8aBjkV;ws9m_(UazHPnYU6MykSt5 z9~9TNL9O&!JoM~_49-GAKHySJ@Q9a#w8uZ}>hwd8yKDNgN9<2GYA4JA!2q~9Yw}Qg z{$lZvB7QVTW(WLr@_{+>OkJ7z>?iI|Pk7c!_x&|zY0vTUw$9*a#{3j7#(eix8+F8xIv|Q1rSbD*rI~P+TvN>gQ_LoMXg%@M-WpjK}5n zzw3%0KXLI$|IZ3vwoa74+AgiF)5L)PJp}eY%FUvwG7kRfG=tjh?Rb=C=dW7x+4INS z$pu|~NUPQU&8Vh~D*!r4dv$Mb$hy}vdm4jnJM@4Z2Lu`jxYp*yLgp3&p88g@AgO6X zji)c6cUrtdKE3}*<+b9K>K?4hr>hTV0wP2nb9tqI%6IT&X_XH zpT4I}JZNLC^c4b~wpoqoMo4|09UQ+YT~-zk60G(GBlFX+KD zUFy{p0ZQ<3#l{Oy`WDVu)(a<%m_j-hFFibz$WILak$0V@Z~U|Rp&?xr__sfshZs@Q zw*|a$E4^NS#B*2v+AVYuYtd5|&s(16NTA0bQaNj`6wbKpyp!D+X4lYKTw6~lJ(RNt zs4j(VCX>MyLGhzKjM>LMcwbNV?@u59;CM66`pdT(0axJc1hq^2v=`Eqoj~*A_W(#} z8=eRGcx&IwUaw~~eohC4FU{`<^lN<4(%C?B`qat?^Q?2i_}kDsYxyHP#ulcFX8&joO42IG? z`le6g3cxr3knuOq8!ueqZ&}jQ!G(VNn|6Dg+H=gwU7#$c1(5|2oh<_0TM>zfw!Y(s z2dISGT#-yY3w*_KYWv6H{Jq$I4YAr-uc#(Fgy`mrv8r{?;^o{zvRj zfBTQ`O%K+$26)+wZ`lJEtfx8XZ1`bBH43wSMt?if_IJVOMMA6TQSYNm&w4)K8M^2E z%|E~AozfLuweXweP(Omq?f@seX&FAI0oB5i$3Ajii_@uf3=v6oeh`Z`Ee)E@AzHoJ zg<)l^n)atmTRbYQH$vFcclULW^??u2Ym^^#b^7cN;}yz0lYy{GOefavw^5YVc7mow zwMYmB+!4?CaOLOCdK3D8eBnyJGqLh7_;E16$7;%){nA2R)8Td7dD$Xo0m<>i!Voqt z{eh>^!qw^!n$z~iq*lN^M##)V7$iKaHB*Z=R(;O~i5gd6re4u#nH-}HZ1JcF~m?C-Wn(tnXL ztAl|H+4*Dl&8>PI09>5*-=>FcbzU;*=T@qe$M#Fgx{Nb1XfXLNSvq;8z~T3A^L zAHX+%p5PA_)O?tNrE#NZRdus0Hpt9_U%yOq)7`^S~H_@oB!~U zq?{+dZDXgrX>&)~mn{A(5N}}Q;}D-!En-0XywNjm#O2M=Je{CRug4L+aVxga?E)r_ za;A5izPJCKx)0BHyT4TL_Wz=f+ME86-YL&7$yHcY3)haK7gJH#)318r*+L7rJ_0WY z_IN(v3qE3+KH>dWem3BHU#PY89r{UGUU=Xlt@gp%hXWkU#6)7IO>QZTOi%pbP+*6q&RqPvvGHlu3W*ifIdd+zQ36}`dluRn5sdY}7+M%YgzoI%$cmTrn+IYD5vg z>9tw%{2N5M71hy9+Xx0m0J~~h{I^s@=lIQPE08m8(G-nA_fr0scv2BWbH{qp4#z>e z9GNr1OIhsW>0Dx8F|_Mtf0iiwN8p{qZFuXt2k{l@$niXEBfO+tjBWn!i1%tDSVk|VP`bT zj*TuB8}{ux{P9sGTz1 z+cLgo)$0urm&mx+`?|OCe84n4MQ;`Ss*l%i%70M4R>=4F$A+nVLznUHOBaUPmS}Ov zOq1gujEEhEM+LV9{*WF}{JK9iO`rCm`+9hBZ~CcM=m9|)WJiT=oYMSV{q6J=2 zSS{wu;~KLuW>WBhC%S_U%&bc)ouN5igouB33l_p5JMP5mGi{hk1AQuhECqIv|e+b_DDg55V55H*0#yR4d591A) zoxc;<&w80d=aK&nd`^H8%6k43TJ8L~7l0gBpyq=CwMD;p@gm!VH(t4Pm)=pD!e+(g z&ih_{y_|TxL7K(<`M)KWY-e+=tOcZMtKFP;_I9N83W^Fr$P*)asr5vykYenB=jr~p>%i(;bgBO{o;Xe4ugm@% zm~8I+qmhlcO?qy4?l4IfHrq0FO)YyC@4&aF78vXR*c(e^NV%OJ3UhD;n2&E!`a zT^1v$K022Cfb5Rd*W9g~MME!RpLH!Q=ttvcIb=_Um*$0?bHul5yEn&ww0*dgs=@An zMIeyMN`9CdQSe^0blE2#8;rA5*KMSC_b%Cn_7pB+We*2Aj@+D;)1Hbm=FTeA> zAN;{zDDs2*Er9+tKyPSR;p-y--U^ueus9o+*>E@z&tPXP8-zt)A`%bJ3GT#-d_H*0 z$;VnL53>(_yZs~Zy@J+M-invrL+zgz-V;cPCASLw#P-h$Pf}I3*~his)THj7A?1Oj z+W(SgrZM9f&z?q&tZ*GSsf_?slbjA?vIx;)nZGPqVG!iOupibB4!u>skNKhc<+*p$ z`$gs+p`5=`ed5PBRd(x=G%^BPJqXr4%qeG_{nF`x8J4T7LZ@JYbVO>f-%0; z$bpXNRS?0S*w1qC$e$)G*=(HUEl^Ij@Mdkng+4WV!^h(me0QI(S@N~MZ}{Z>=@IY4 zfeXLSAVqu@(C+t;*i<<^i_#Lzc4@eqMG0-g^A%9?^ekQO|H@~qrtkaTD_>#ZfS|`= z*2FA|VwM@p^?rI`T6QKF$@)(NtXXynV)~uu>Lu^3Lvci0nxSQ3Y%d@s-1y3Twdh!S zG}Vh#xTUJ|gfb~|H!Df2H?GG~LZ$tD@NuJ@Di5%@tNruETlvfvG8=X z4s07gG}lB?HRlh=W!>N6t$){D(cAy(4S??Z4S;zQ;0-tEEr1s;{rW%o+OPNy>(avW zwmYiFrGdDUC8j8;wZ!7+$0rW#O=bnIVjsJ+Q4^rgB1C6$Uke_?*Mi68o$-|n&Pv+< zL-89iy9-|SPK+03CwxYs2CJL}c#inB{0~DIJ=LVhm-*Wpj{p;s&*0`Gfo4&Kp&W(4% zQ|yWc9a%fU1Q>;Q(zl0$rAD=P#WP2^8u0%5w!k-i>NNeA&z+`+>r9$A<6UKsiarj^ ziJ~TByW&_`@X3OPi*NBs-tIKcT40OXG}YA%5IsYm8$hur) z#QyZIH}Gu--ia3>P|4=+D+9p2XuB}8T#!Kxo{`12t3!ACI|Ksd4VH|qb!Bpr6@DMyV zY)n$e;vr#vAn1`qTL7*J=9dkK5B3t-i{popLT^mp6XVk!;%^Z0TdyqBm})O$6}b z_ilJy{g)v3(se~Z_MiB|Y5G>ZP4Er3>LEd$=Jt!05X-&+139Q=2jv*qDL^E?uq$=+ z;T5qQOI{3MVQP;L3X*@mKA9gqd6eGb$GZ(a=^;9lmMR|nV=Re1_>K5OF1>a5E#ER~ zk>!1W;89^+g)w0Zo?N{3_SN)Vzqmhri{9VQ4@F(Cmn_W>QU*kx5)pN@mzy1E(c!OI zjyM?pr6``VY~K?B0!g)mGzgKkI(34N_R1xlE}nzZT{f^qsVWTh@eFD#!cAmDQg*m6 zPM@mBqF@rA@g0YREuZRee0;lm@b+!P|C881OS~i2;-vN&e+KZZ@x*pPTK9Z;U*pA? z>%;adPyMI%GXkQCH}>(2ah=n6xC!c|b~Ii5oeLc?LrWwM20~4w0U$v*)o27AI<=_9 znDIquz*cvR7IG*aWMT*`^V!AJ!^b9 zg<4I?*?)OW2;Nv(hB&G?Hud!1VY=08mc)9~+n6;u)Nq5BeT_u;H%_ zN}eAXdfuz_)5Cg`;8*YEE_jsj+XDBw zyr-`%uBJcz0eX`Cxq5-kZ|G`(ZV&jSM$+d{@I#6*Y4iAk9mkb5(>&Ah79YSY>;4~$Cmyd19x;NQ?W>t^rR6aDhv3_n^T)Tp>;7-r&k!?@ z*y-oH{|BxFKsS%8qx&x<62Po+~g#8)WxMcrjqhq0vpY zU}{WCPL-Xv5S^k&>oNGq9)-s{tH#L#_IJdi;3&KUs>O!?wtwz;Ip-j?IF?U$q{sC=5Rch^zq|& z^xEF9`jOT2xF6V`e)i_vsu>S&N>3MuUY&z;OAL(a6T6Mlaid)*s@n0B6MJ>QP~;2q zt3*RHPc(?0n-R8*?P%fu(1$M6>VvkL(jmk-lZSg7xLybdBEslpx!$MO@H2uG=F5Y za7v&}dZfXp%(0O9n&2dRO)k8Hcu{PJMPy{edJf=ieN*pA@#w}@`@ex-(AVXHG3s86 zS6HJ|p1h@k*#47a`rG1%-eo)9;0=8Anb=^}*#t0w2OpCR_CnNSuSuOR3js&Sn+iIM zjb=8FhI-+dWN|jqD_se&YTx|N*97|^5X3Xb(5#;EXlEtU4o4>*>5wcyIcu z$4t{7e?RS5_b*I$wY(Hy5quwXSP|}8Q)(}50%^%xa=)e*eZRgWJtt?3FoUlAxu0DQT8R9Q4xdnQ~$iQ2b-V#N43NK*t@2W z(F2NH3AjyHCbYTH0xgu*wuqng05xH$t_IT5zZpNmYxy%C|M88d_*c{0^pNIv{gQ5n zJa2#ctvBZdKYZP9)@*02J0~6jx{zO$rQm4GE`CO0ERpy86vbC6Tw9rCd={$|i~>M9 ziK6q@I&I1W6lv3k{h>j~@>5!@2TQ0Mba%~#?&MONFNAZvRBUiW(PhbswZ+Z|&%x2P z*uOX6c?f>wy|a}RCg(@w5C88rJnOYS-sx)vrOo|*`lg$wH~s8iz4h|t>kfYg;Od3z zUcGnqj#o?7hv|Zlp0VuXp$M3NyJifRr^EZ>W z=KlnEwnq$umuuq@8{zlnO~Q37Qul+XyvRf)}{@HPEys_!K){m+9~nK#a#4+=n3 zKBdffn-L9;Sv*jd_K)lG`!BpoFYx(rJ!$@!J-^zQ2lV!JnjHi%tg~~pB3CTfw6raI z3xH1{kHgy^$+Gi(*X#GDfAopd^cOxz&2#ss=iaRQnCjXsND{2s4lKqeMu%hVU*OV5e5lpJ zO|^Sogc^P+PiNu#j#lWCZEjI!vqC zW_bik{{g(y^auFPBWb#Z{5j2Mg-4Iv@!Z=OKkomJOZLif_`;qW9@k=HyZ^`8KMGHNRPcSP|0W(`-{>>Mqi;mn zPOaJZiO?9o+5Svg;=?C@@WaV`BC=Vs;!L$*w5&Ba&UKtfC?R=;wI5zFp@nEPP5MOx zHNzya!MdcCjGwXn#n&YMcw!R+U+Y8fSAX1U z`e&cCKRsM${e*T^5C647r)!}+u}Mf}+-fNs&0EI53tp-AOPg-etIGb_Pp_tb`je~a zrZ?sL{Mx=9Uz`I8%8yD%`7cjIXf}%Q&1X&vpD}?<7i1d5*&e0YgIB`PO=}qly`fzC z1G!`(pPt2+HgKc`P0tR#nvo1h+RC>2RKe9 z+w3vb2hrfL3(sbp@6@3j*Ujfut0k80N zK-%>cK%MnZH(sx=0A9TKvak6Ef8*PtHOsYI04C{|g5<)-&#~pmqm!GpAV->}m6NS> zT-t-~c_UfNXkl9VUYXRdoCRL}__2YH5+{FbFn7gcSpP0EeD?Sn^27W;*8U-QQXp0i zypHn!1bAhfRIKO!qfl9`{_XMb;|4Ew05H9yWG+CkDO(Ql*am*|}b?ciO+^mc8j8|M+Tp>PuGB z-}`v|*pM!hv(viMH{ID~`dnOfaJh^unv^C6Y$d*aW&zP`v=?|gAvxLi`TYXV!3c#n z?{Qn=hh8>K-~N0(*{k;l@Iy$KaR?(?7>~U4cweN2bF6qU!P)(Nu1wS89=e+Ty6*9R z&>z~Hcr)T{cj8pp4-kd8YSr1V(OVWUzNjl=c+BbkVH+e5!{aiS`(Jp{`Qve!a=`y}`;2$a^tClmn`Z&~YQT6N zfORj=2>e!*&dUP_0JW9LrgftD1)c$>hgJKCmfnOE@ccsNUGNFpAh}2I_jeon?wX+fkO_gk1*GQr|EaseL)Keq*ktKH_AZUi0 zwQm&Bck?1=8MLV(S^RQOZU1h(>KFXZYI^(+uBJc#p?mtZJI=4FXxKIsFd>F+#dH9b;i{HW$lgc!}iN!hniF=53adxkD|4FQCV zsBWU|D17VzVF%B91ioMXf9o&o>rIWT#pQkps6<=W+4c;23=Ut?DB0p6i!CoiBM$eq zOx;ZBR=h3i&~yBTK&0E5K_LM`KrddKrHis6yN=}^349TE03>YVt*G$on#=-OSMsxQ z5ZZ@p#@h%AhvQj)LOS053Gw(&8I$W;@hCe%{t$P;u8ONOz}GlAjYo}NthV9Ve&g*^ z?ew|yuZNU!??3nd^KF2OI`fZ=M1FCotj2)@fD0G)f0YNCNEE98;WDsZF{sPooS7h@ zP36)d=cfkBbZaPcR7oaO*tXF4f@Q!Z(fBnLXM@L+**-lxBO=Xmla? zY1}{D|I^~FmBkVHJIa3Jy}`o&B6u9=W=_&73#mP3l2r}eww_l)AT;~*BLa=2RIht z7kRMVQfW=LX{r`5s#vBiQEw}v3y&z@7T~LSU-9T^`rL<3)01AJovD6g=r?pAfWT$> zs`cINJLS*5?icV1;xB*nz78DnLLGh~vC^M|3?lX3?-2Xa>(vJXHI8aIKZYHP=PQlz zpRe_Oi+-w?nk^C!H?EiXg8t#8^bh;(xM}n3u`_}&s*c49;-mGO9C?d0;J}z+tH1!k zsY<*>PbWkxZ~kTtl7d%&^eGiS&5yUdUfmwB~e1&-%CFbMl4#dl*k9 zh%r%RxkLQJ|FguCNXoAEnHS`*{a@m1crt#{DWT=~^~s6nbmO|le&Ip!V6xBdIrHZr zK$pz=>3{D1=RrUY4CKqj%X*v1dO2_aFx`3KclP)8ZxP^r*vv{&AQ5~yw35K|$Qio$ z5q2;cfF8E;985L4wnVQ~%@gyT7N3Al?SE2n`uIDQV?*m<+dcnhf|t2#vfp?ntX2%> z7=@+NTPqe6`Yb&iS&2NyB5$IbkwOQhF|E*AMD#5J;bRX1(yU@tipPA9j?ittq$LfJa-W~9y7w=8Ksx#_0yj}5VBl5uyTup!VW2Wizbjkk# z{zXI`uxRIxDReDNx`P$FL_QYwM<5M20iKQ7b-McSqSx_tOFhh}pGW3B{#*$d_V8s{ z%&;et$=H}}zZN*gZz1cL5Ufe>zLOl~CeK0}x=U|B$q~9`e_^6>W=gfGkjcDaJBJ+# zlz1Qca?2dC1eBoWmK9Njs45DGt+>*ISka-jvK{fj@3r_&SVy}h{v-WA2fQ=A$iM9~ z3L2E~Xp71K@o}LcqAHKO>Y@}M3>1|yezZ+-1C^Zd=dwRLdkz5RPu~u>r1xT9-M@Ov z#XI-bz578Qj&+vqvq(aUGefBG1$a+Lk! z@C(1OF;r=wvau}l?j=RuKuXZE!aHrH$I~neIVXJ*Y7?{=fAFa-Vg)8g(m@Sei-bDx z9X_Tw`o2N$p1=9ctLbZgY&HFWUMc*gkD8`W*X@D(>Hd1ZEw5DAA@oz&R=bUp9dn!+ zKGMxD2ZTyvXm*=gf4n2$HnrdN`qlKsx;5~*dS&mg=`DvZ(NBO~mZ3lK{;TP|^)tQP z`{%*G5wb97==GGQNm`JrVc*1vf;b62_xY#kHE+?^8DF5=6?~oXZM@|$JAc#>D<-;z z*2M>J>U8c*M^MsLE$SX)aY|Xs1W|E09&yU3Wzblpp<6WXR}HQWeyl+$Wy2H%lTFbi ziHD)}yhece)Bd@kzNM+4QY7yhKKyF@I194GHRd0&f?Nv5#Y2{=2pN=*8#%COI#JWdAj4u%^NE1 z$|i04h(~|Q)Ab#IPrG`@oqD=>Ur+pA)#X9e`s`Pme%gwFaqH-)yFl+!fo9^iu$bL+ zZJ|a)Z}*Co6{A5X!^cly?bp(|)^oJ|yBCk2@{v%x;Ih|j2;2OJ507%5_zl}-F8Q(X zW9(O4OEvgS{}BJPacqGAd$R|qH>3l;MIHKcRpB6B;wN##qxYsy)~kJagCF!#g_zrI%Y;EpZ%hGXrLSFWgXlUA z&rY|0FbA#6*BjG!$;#%YZDOcnr&)$wE$9ZYSl|;BpuzQXk?iE(a+{u0&@Gey^uP4# zjq6 z-}~Nox_s&4GrsO?{`RMDq~_oifC%hqRa|{qCSImEbS7$6f*K6>v;p)MQEA*9JV2&} zL84uHM)wE|{E%n^TkzOf$f0mYe2jxnYhFUw(Ay>!{+}2>?2Ja)nJuTaVc)iwe(s7- zXxUJ_6W~W!9X~r$%`oC;j2C=J6`kv_#wK||%hZ8y85RMnL361|ZMu@Nn4kPZr~suP zy)3=`mGqc`V=i-_T5E{Jun{?QO9}c^ac`T~4n6PSgFJvv|e!Ewe!Z2u-1$-19-ktg?-<>U3`1r350v)8Bs1QbK5Fgn`w#s36 z0_IG@=@{IL+J+xsVuJ5AUl$@B{<4*{)^apUAH!A zFZ!qp@8?m_zjQ#nxPG>HYimDtwO_f%?{&O;@-yqlq5dC&Cu`2-CVu!uLo(-xXJ%fw z2K%1b!q3~ka$Z%BpYP*WD9HI0*t+DOvwofVbNOH2_rJhZ0O*?3V4#Vhefq(2;1&QP zSNB%Ggi+>^mr^p?zN<(&MS;jiYkh_w%Mup7`$1c%BwITcXrCNkx{t(r*qsE60U7r1 z2E4*11->`jrgyP#XSD$DYFqxc``;sF74LNTrT0$UTKtZlz-wGstzBtDa~^rJ-a8w(Dd zRM^)C`_55!%#A(E9fLPpi%Yu4&yJpVCw$A#?@zo;i31=1mO;$MuG${6C@)8d5Fabn zBt?>xc%Ef-tJAqd;jDr2F)&aMx-Uws*=_R{QU_hoLSHJtUuVcXYep7KcT~51G|W0? zJ>9Ye>5B{oQHG+XbPX-2WQIOP{0)43XK*Zjt?S(#A6&*^&g*tOR$88i|1Q?${@m|p$IlL*1A*KI-~~Vun=Y*;y)*M**?s_U z@xm)F-f`!fG=U!A`0+)Vbel=8k2e;oa0ZuT!)G^ns??ITLI^z8G}IWRhUkcihx(J_ z(G}f?<1rB#Nv90^>J}cxcKb)*9pbEeD@>h*SCnD9^#?}j6zP=i4rx%jQE6$A79@up z8YKk;MCon>1e6*&rKCX^ItQ2`hnSg<_q^X(>--D%dY(J>-q&w4Q4rEE(jxMyySDt^ z>)T>#;Qdt>477@F4)2V1@~!sXV7ag7itaKCXS^vhAA24lCFT7`cbj$RAoFqbUm$h+ zy2X!_mW{-~%?5t*U2=jB+j(wc@^sQyRqpfma136Ctjq;Z(C0vNZl6n|98;k#F z?Iw;lmNP^!B=>e1ymR`X2w=`{)grr=haN_i>xNCZ4I>;%ss+Vtmo?}UYz35KUk^WN zQcHzD_vd*^U-cX~+(EKx^?cVx>%|lk1v@XzO8$q{(R((kk-+cV z0y~(XSL_WXS&^1-?`izs$g4PC&6spp~S90Nj_etF!aulK+a zR|&EA|6)_1PgqC<1YMmbmlS0&At16Jw{i>>QQ-+~ldWxSm@?UG!LBE>@0Nl9@B(d5 z%(&FQumj3vJOvwomriMw?>~!0Ro^eZwb3vHrj7a zxA{=XVh_X2)(O94GSVp?AUlg&@LaFE1687YwlD#V2h=#A2`m8mjzEf0t%WQDB|DcS z*x@l;_7lmKt|28+^e+Bw@}CTg)2gLw1yq>2MD!fM6j;hFjYiHl;V+1Tw*<(=MO50Y zAn<_iS4e0*GfmL0Cp@Eb?qb1Lb^RsNS5KmU1DRM(^iFeUt+(2Fltqh2R9_cOM;{p@ z|IW1q77#7%o%r=5lnmM(AY_DaVG@NOm^=sC;{m<@CX_Gqe5Kx%8 zFq`?1@av>S=D&+vdz{WZTPH3=!BkR&rF~(1NZ@@Z3s`=>oDtHy5ad6LbXsg`nq2B) z0ysF;H=(*%y9EGsWN+Ji&CVT9DQ6f-QR8`nW8WwifICZ*VON$fI`OjPu*AeT)Y+I% z0&rJcTq*XrA{|&5{1Hjd>&%Z*6tQ}r zM`In>L?OGC5tEEz2c_snGB|0guahQXq zYiVk!j)T7>48_kjnd;gHzpM+*9qVYk{B!zEir_FV)|Ul7zfyj%l2`9Z5Hjg{8@s17 zbK1$+b`e}oDNj=IjYJb7^*K<0gX}rdOAKr4{a&x|WxGlw8xiGheBr15o2M>(UB2#{ zW{w8fD<;oNZtpPHuD6N*&C8-M%u(LZ%QgljIm2n~@X}d<=3J*htn518_$FhNotfk@ z2XN$>$X0OfN7197wP{{N-ETDRUPXmQ7~V_AmvX$~!3s^wr}89|YkYdbubQtvf`3}A zU|^BDEZ|*>Ux9UHZqBJ%suW}C;cR9wwa9tA?Vrat}qJ5jJT*1k*@ z=1yt-p}g1XBAV-7vuifE;Ll14ux3tw$zWQZqsd=rfpT(ACp4x7aIr1kQGCL0YNo5W z+-c1CNj;r%K<|2j65@LyelCh1A|x3!lT+#rAsrU?6uHNnZVG!$rl`$L(7 zC?i_@n(YbgF58NyQz0O!iO!UF-d1@D$VO*r{yzAV1GoLxSkY}ZTJYlZp3-{KG6Iv} zR9~i#u|mP>*PuJ6eMd?Kg-py5`@vk>YX0iAV~sFrEfW1raieJtho_dc&_R~6Fs%{4 zRyTZ>sJo;_z02SE^~VzzFq4`x2oh>C0}WYr4O%+g^~P{`ekkhrpn?@sDz?X-sk1}b zG?HK9z$WXWX@c%H&j;?`KNv?b`HdcdV+A6hk|gzdkG>Hu6W>2%wpWWJSwv~cs}+Bb z9&yH+(aUATgf53l2>art(E`bAg|ZIK4YxEu#<1ilu9XRY{LMs0@$5_JotxcTA8WZ( z97=>eeApb#4$9%a!-enjF~zqoD?aj6)Qh0*N5hg+hK;0>EcY>}lXHj4V zB4n5%E_NW<4}bKZyZqk!md&{j^e>@T!3}H9{?+-(j7$|G%P)S97wzZ1;WkfIlUi!Y ze#`nM-6q`pW3s|~i-Z5#jOB$V;V4D~w-;#sCmaGd`19AU54;i=PzU0HaNg}Dw0hDb zxb(fheM!w>yH_MQ&7I`TL%>T+4>OZQ(2~2)KB-8q#9|TCXWrW>r)I4Z6>b+C0o4fS zDf$`G={mOnE1>Ga6s8~J1_drrEjWyL`%*Z*W%mT30w<@K$+?Rq{kOW4Q^6hK$O!2# zriLcXK8`q^f_ zFW`p@SE90OUymTVdv9MehPV<~LeCti{O!j8Zz$|H6hHSpI5|w#Bu&gslHdwdFvDaH z3(oJ~Ulk|vsX|9EfAjp23S;$qfU5D@2<_X{f;lw0HVvd1DgR6E02OcP8e^$Q%}u?HK;&*W4bW1c?-s)TiIER^tm>@kFzt$silLb##-JFLQilI!0Su=&Q6uvp#mx#A zk474QR*~c;;osiPe4rtHqR_}e(UT_B=8`#Qw`jU=BnL_!5d5j#WU)RNOK$63&^Gjs zryY_;r^|5|JD0j4VfY@&fhEG7TFafP#&+faU z<78VAbJ<-|Og(XZwvPt-t6bLeyFDFidb~qz>WfBZf3)9~eyG_srdgrme!{{UbN0;? zm$yC-w}SOw$oY7HJiL?XY})*QX<{r~?gJiE`J2JNp`1pPds>9`0<)art*)BX@|)Rz zIb*!YAZ2Q~rB+LJ8B6h}M#mUax!(?QdURmYk<~b-WCt1=NNK2K`ge4~DX}$vl?)T} zQeicG(8c=?vPHhV;osmlHzRZ5N@wlvCijyGEt@R}h6T7!0BGnD_~vKKT!of?eGMgh zAt^r35jF+v$vPMh)nCX6U+DDs#&pXR95x^X5&FTjQe=IEBT43ZiI5VnD67`)>v$$x zZ&7pj>piUms4*Y+-pXf8JhW+T36m1${w?oLYec(l5*cR|G1V`WX%=zo;H94<9a%5@(S(9aMBLjw{7ft`>!9g3~spZ-eF0Vgq8NavY#AHAvP6 z6eS9F>UT?Pqu^q__fSc=7hY(YSGO=0A!ywOPpn4`Vc>D1Do5CTYrVxvD<4$JGN|^08g_n~L zG7I75rE0BxSkW5tv9a#N$)|6qR7N+;laJ2l4?x?6kc=98N<&P9Gm!lc@$wx+(|YR; z4EFzq?!B%l1Ea*M53ZpNqre2@^rlftS4gwsRr8}-8s$XaROr#FdoWeoT|xZv4fEkF zSuLWjl+eGrWOZ{Y$Af$~n`Q$})%)1nF%S`XHQ_Tzx|=iEyPQyJw^!o+GpeH2KSiCG zF$W$?;h2F=MQ(I&fcWYMut*F$>gxT{plH zKSJxU=RUu?D^Bg~v1W6!)4p8TFA}!{h#4ytyOE!`8db)h=Jg2X*y|7uT*5o#*b>he z+)y}p7ew{cPSnb;Qsi69U0IVC(2*6)SdJ>Z4?%li9J zRQIIVe^?ie5}gK$=RHf$Idl8DlLY8_BNw9LvsQ5S-&9s@n)?*}S{kteODj&DTS9); zd-86NpiLk#)+9NnJ;kIDp9kb*@^9a7Yh9*Ox3Z^8!;kgtbfoh9Z)@B8Mor`6@wt>D zTOMkO=KQe|cCa@+R=97=%pSAvah|i?W?l){(7sN`;237*HlTRSW_I*P$(HdwQ^Lcg zE{G62(_hJ&T$kM9s6YMt31;o+j@z)%UnvK7hizFbTC|*$SoKL&qZEmmV)i}>#mUaO zq4^YaC(v!or^tu?fGyf^1;Ett^DcC`$t7lua#bEy(K@Hj1duzS&i89l+gA-KpJJQi z%W|z}Hv*TUD_w)UAFJ!RdD2~1DIN_YDCx%x4do( zN=_O=>>1Gf9N+41A6l{_gpC+?GtPJ?uW#s6`ijXeaV?7s=8$O^JOJsCvf@_N=ldRH zevsjsZ8|~u-Sp4#{&3@8XF2~I&yR#H3*48%>JEt}iOV0VELZ*H3X9a0^00o@%pjOi zeyDgT*isjxC$xCbdbngVHXz)3;+_|y;8ILvIVYuk6=6`YqHO6sOTr{0Byd}Ex{}{@ zt8U!22Uaz~1|@yS8hqtM)95&y@iD$K#&N~_0x=R{sLrC%q@z(6t&|BFEH0rS@TY+O zRL;Vqp>!&}dFEkBlDdp9!DM@Gx?XT0xL2Ri^O7L$v2Va)tI8MH$5vqw58a*0mpneE zUhHh};7sN{+;FFI;(=94yN_+Fyx$P%8$xCQ-HM{m9L)9*gH=Nbz@igetw zHo-ouf#L%HVIU!9lelk@85W+QTb|7~9+!4=^21?~Cs^D$PVXGgUn!ic3pUS&Ul6|Z z;%B&E>G`I#LP%${9;3xH_ziFR2VDV2nC`&Rx`@<@5RmH!xPD-3@f|wr#%GFZnF-Up zUVL?N)wpEu>=B^586sou29R;s7Ox=YRp z_`yY-1{?mav{Wb)d|IaEdjz){>d4FRX#UMGxpe&i1<|#>rl@}STLRA}57t=Bwes7m zxa4(@<|EqNvjtZ>I#Ym2`M)3h;v!7fX*DsVCXOudIk^l|i+M<5d0_y37|7M3l(6)^ z-qOwv#u0w|IZnK~G?`}`TaCK)CEVX-#KQR_M0mQ$3fD%9uec?nAu)elrl?Nv&iqjP{I5BH%wJ8uYMR5%* zkZ(TkHrWl4*afTB7m5Q`nsn12FPvo2+#G-2>UgdFgSV0V)|O0-xWt8-Y3RxsKf{QztX zp3-XG1G~KaK7R(e>x?LwOaTV68Hm_r`yD!|XF%9Xt8qXU(kKM@iVC+J{7z?ni1S%!#@Gpk( zMi9~>4Up$_w*>Lf{7UU%;!DMC)^+ukrO4ZEW~_X~E;*}ao%zbcoyVa06PLB9xFpA8 z?)tw8%xOS*u8{B|M({G>z5A(?>#i+rKlYY>PZw`c*&@#IJC5NtI&7pm_!s4r3BcFO%j^ObdfX&*iu#FA=TGjy2ApiJFd^*%;jd76KTH_v z<&e8y8%2K~cL6|410Di+1=!+*GR*1>I9a++gc5n*XFeSMB655o(*FOM1N@{q!L*CX z-qhSLdj5dMY6fG=xeDZUr$KzWEq16d3otj}@lDeJnoa>9agTKx8LsfoXvNofY`Cxd z@dACnDzu2-ykLd%k@X#Rg1JuDJn!_1*+y|U9@TrASKm~oAOZfnsy5S4El4*G((dV@ zsZPK=c+LHvQ_4PV43CEH3iGsI>}2rczv{8qq}yCUkPYd;C@95c!G`5+50j!j zS=K0Y!eA3Yz|d+wipy2ZMtb9ecH>Z!lcwaNr@TBWcoB+zRb|}#5C;}KG^f&3NHlqv z^EOdy7$X0qn(B2C+cNu@c4`gSZanyOZLv1`~kQ?O!e^qURx3&pbCU7+1_&&CVyX zMqz3A&%}Z~@&kVGbSzKK4cjeyubbC7(4|4b^2q^lEZy`243`_Vg0Sk*C|MewsaPYq z(vM3Cvy-On@-YO-l?Ikz;Flky^*b17-=^K#aQh6iCZ>ovSF~P$B?}HQ0RWI6Z6yoAFifZiOWn3cE3Qs6 z1HDf^?TJ8yl3v)t!JDsGrUl$8d)#r+?NlPZpR#n`B?%k(_p8%|0NdBb(W|imbeUm- zj8=c8P!GP)l&L2EKW#)`?F2>>1s#r=HKi!5A5XQ_NPHZtB4Fkkob@YWaw6`HdHYfK zU#Hvxnt9^arXQ*OAAL*yLH+;)Js1!pmOG-?!g+n1)McXLm6k?hLQrS2bs+Tp0lPNm zZ=)8N(NI%#q$fSv1Jn(xoD?kZ{X!hycJ=5?l&P7ml5uU>^rN74C%t&tQxg*DhGAPG z@6EY3`Gl%cOhsZ+i<|D?)QjP#5^PeYx|!V%Kg|d3FZ@ygNVgyh@Il|&@Z+RS^>pcJ zi;G>UdxMUhl%e$AK(rt%AGo$=dJ2DtFR~p6D{U=2piN(I(W(yaDBbUvmt{JTG=Ql< z?}#Dv4OAF>STGa8sm51f@wSTb9%-jLx%(ky04czmuV4}_bddoNJg+qlfLV53^bspo zy|a{U`4>3mh)P~K~n^&l>m>gRK0ic*}mdn74yg?O)4;zDAoCT!(_De{dG0x3Aaco| zOJD|?_-_vTx=ze_`q;o@PIfj=Nd$nqm1TidPjZ7(H{iA-wI%higy z1ohI$%rAr0PMbGdh<)xm=?OPT``}7}UgT*u)@=!LQMwbAi#Rslfov(#LBouQ{c+`3 zkAeb*n!1*wbv+t{WUg}N3= z%JH0^qf59tgWJzhAz%n}*)6~F`amJn6B-=sm)|*mTMNCGs%>6ao>>~ojJuIAl%eL~ z$3fK5JF3@Zg${<#2$?uq5YzK9CBIw~ zA}9SkYi3^1QB|OcjI0nJ+CRA-+ox#kvroTt_cl$l0OIREv;)(LB%!Hog=cE(lAn2T zeK$ub#(Ca*l|4DrX~kyd%(23>!2N#@uwe@iVE!u7<~R6tKhBG#uDJDN3z5>1?6;@R zmlO<=Q<1p+3${Y1+@a-&XzH=+RA~{I-RQ=1D zFJ)NIA^XSt@(!t9!kNEMJJi#quw>QmtB`x2t!g0*X&z&n5aJN(h`+mtBP4a{#rHtG zSz(?}A6Tm2rpseL63ru*7rtaDEt5#_Sd@)km=>=B*4CQH%o3gP_ZcC)YekkqSPH$@ zpAGiZG%7Q#vx5*9$wu?6ZtE@oA{ZTpc{+HSm2q0s?LQT&vDQnP=uq^kued%2q>N>OwR z;|>~o9);Gv7f8kkuYF~<8-D*6{K@I<_y%o{!rj7B*eZ5~7#hT+Wb*jIYnsZ!q$r4d zKkj^{b~v&!f(tkW-BPTTsVAV9>WqU0sW%Hfu|VpdKPjhGn!zJpoH(;Ke+ho`sDjS! z+sDp!=*}B|B{~_?H^&Hx$Ct>@A!>3II~{0o$27DN=+i2VkdAgbBL2k^1m8+{NM9|8 zyr>aJzxZZ6`a=M1UU$m9Q-|1Jw{2DXhN)KCh>zNj;!thFnkg~$B|irvDTZjcd-8oR za6Gqp^5!|EycU-#mZ&a&G{Y~fFKsDaJ;o#orj1!2wPJ>Q)fAp31pRU;s(;#M>ARbd z>FocQ{$&6{_2u9@A|91n4$FDIqyg&WY#|t4lK9H|s=THj>5AsqPiOqNlp0a+cUyp( zFOhCRT>h!U)iri0r^D%Rc)nPdyQM1z|CTL!V>WPW`W2Tp?=npH!jr-?rP-|B+MZw# z2I(z1pn#pipS-!gGrKq2KQdO5r5WY}#>JV?Y(dcVp*`tqv2{EyXIR}6`j`vd(3dx- z!(1Hx%VejY$kdODn`ki{`M_y)mUXN;?~~6|-@NVjUd6N_fc-zK+T@jKG6sTy_1!g> z*2><&kNM6MQ-Ld6wtDDq|NcqvZ7G&xus6r@f8#k^I@~2$lTb-e>ptc|dn0#169$sv z4$gZ0PcOF(mcT``R|4i5?>_{?iCz#9lAMB{a&W8?xPLw@kcZV+fT{{-ugd(l3df{U zJASMvCJ@g}l|~ILAb*f4@231#lB1b=Xw^w^efM<y6{XNf)17| zu#Ccu1p3$ZBZO75 zdx9imu()q@EOq)9g-OM>$w@R6I~nvHyCN)e=0^`u0h}42Z*DF~Z{f%uLdE z;<*YKtz@P=<8S(l+v*ui?L5AT==wB=t42Bo)G7mV^=@i#ux${2b|J+uwI5_fIz^SHbT!@7>TT#P}A$#{o=O8UQ! zMi}I7TOPQB)NI!7_8KA7;EDS!7!>!>R8yF07UohQPpV^Aq8JFZwMetRoaMs?wtIjHk8p zn}a$S-b2)YFS*G6twxTJ%!gcxs*xbXCh_jtR+fD`ZCZmVp-t<(m~_L`nY|bRmnd2s zpF=%bOFY)Mef_IJoPz(z%Tm?^_A9(|!xmP;rtKe4Ri9p`5AJ`ca5Z24c8DMc%I&fx zv{*#6CX4Mu`U6nvhAx(vz?|+>pv0!r=Z3xbEU&ID@Ng-{e-~W9hZVA!hEWzo|8#o< zcJ(|RO_A#3q>@wsAUlOZdcR9tVW!;&Ene6;RRANt^8dV3o{tS>Z*d`xUYs-ErQ*zU za8VW{P`8PZChqz%tSA){&%`g_$TsSVI(mRoyHuiBc~#y&fxfsW(C(rPA#jhUx{MQW zG;~tZr`vElB)JQ2A(4NM{{a{>lE5g_Fb21C-_}D^!llvLIwKtQ-syaFJE@_7J(^Ci zGFP*tzU>;6e<0FE<6!jjk-ScDu))$GZqVIUc<%Neyy{An%wq}m%QS3pD(4;^i_a~* zeOvwRF9*aWZ!{YNai|zsSX7xG4S~}i`)W9<>y!6`&Kv}F;)!ip<0p09ovXj>)NZAw zz+TB1Vutq~mUNgE+XpSQFSYPI?EA*drwL4K`GE>5hB?Oj2kI@HXLiZuqJHQuo|K8Z z22ldZJ8_y`V4dV5!P!(Q$OHcJ-{Ix@huJ^C9BwV3FFYT;>sUns!sDKl6Ib@k)G^b&9sujdN|g-d0jk$0I2t@n6;lkQEm8d?T)c}jo8&=t$e%$OD6T{6 z2rdP24+JEnWPIzU*glk($(8`yFy%=6i_y_$ zT%}80pVps7X&=1Jbv6R7hfyviv0|hlK%ryG)f;UZB3ZFodlW+3QSP~dSkI>p%|$G5 zV200)!%r~GRUR!;vh$OH_lumQn2d<;%mBPV(AGM2KuQYQv4cjVy`yMXv1m`#T4zdB zW36%;PdV4Q1(w*Q&#Tb2jScy`k3T-M`EphRe7v51q2IGb7qXq_0(7|J+8m$XVife? z^+O9SLK_}1x$s6}5o!u%J@@wzR!`@3`_lB3D#3nmC58_kU1`j4%Yu7icR#=0Cp;Bt zpRfL@@h4?aSW$@<=OX=gLRR6HoQU|@Ecc>e=ZKSmoJjnhPuz-y#T_Fi*~VaRd$VN& zN61x@uF>1LlE?wOC%&FV?s#&qY`R?I)QX=-gI@KQnX`QTCmEXI9a;nKALudCP(A(p zrXkdAP_c*XCwv@dZ0U&=0ly&QBtOHqB1P7`2oqy$vY?phxmm zYYCiw$rUo2!bDGTEEKY{_~D5azsLR4y0cy{5b3*o^uVho&9Ew9cx%@sbJ!*lbXAOSwW)kP^aFS|skbYO{hY=?o)d=> z#!qC}KaE$R$vXph4SxhV9OTe%QI;WOaset(x))%2H$~hn?_oc)Gw;AuAs^*C(HtP? z*zp~>5=FfKLa%{I%Bfd-c^)A$+!W`XvvSCL9hfnrIP}cLVQmjqwv+v(@tuMJ-kLwz zXAfAq$d&yE62q8xSgMkFduG0ewu%nSlesb%eQw9L>QuQg3=-8g3^mzA76n?bpbG>4 zcA^;QU0ypg?N^zK1X5{p1~yk}Y(CQvYs>t;iA6f{{ZF-knbe@HD88{jX9rA%G~_K7 z0T>r!(IR_Dtn|NQP*yoVGhoF2hG@0a{v$*x^0$gEodkYAE zNWh{0;Z%46KA#?0u5NeSJGDUWib>@!rns~QId3XS00uw6m+PmD%+Pz(s%7Z)RJB}` zVS6DLVc@B8{T+JHuSp*fQt6Rx&+2+$b ztYJFT+j!OH-TvJyCi-KPpwYDo$49A|`lOx#KdX(;bV; zDV*M^I-W~f+c1IJ#QBBs;@9OU(&_h>2D<|VD0J%f=u1o>V%Ate*77e&uGS+M+k4isyiBe7BSp7UTjk3^tAwK!sKHl z@r7-K!JX4MKc+@(v-Y0oR=J?1m<2o%a+zeOgtj^pbbjQr!(27khaupG;?S7CQ7RRSA?sj$! z>8bO0>imiIMe|-Tf;3e=fk%lz@eA&fxUt+@*DH<;H`|0Q5!yAe_rg4%8$Q#T&LUQ8~YSF@F8%(xvWeqZMzB|(LVMkGa zaJVa#L?ED7|%cWm%^ z4=&`Gt@BWKv|It8G%`K0q0hj`3~}4lM)9MO{hXtzPVxt~Z!hayFK{puvO&UaN&e-3 z+#-cNfE@wCq+j&(X>xC0>*p6XUC21mypN>be}nv+YV+s0A*Ne4aXq3%{+=uyc994z zaO*@1b{8W(<4qDLBAxc$#syGE>pqP`mZB&SHd&hjoYxt2>^yA)lUki7zX!b6#|;8S zDfGP@1k2*Lr(TICSx4L}>)f6iZ#&3utKAvsDNe;E_FBkhyz5AKGeGIipF%Cp;OmPzKPSl62Fi=Np^Z@e?*u5@?iK*z_e*w)75D?+#I4=Pc<-$s_#onnR0w_h0H(nEIEF#U0d_iw z3-04jP)7v!?e9$LFe*ZxGmT74a-p}wchH*=F2zfiyC9`~xBI`qPgRH&MkGJ4Fva&n z1g}Y_o2X35;60Z9(8BWGK3irtu6wd)bO48BD}^UTFtBXpRD&)k4=JeUgZN$s)&}9I z#Fh>AtKCXy|S=x2R(yILF_?m)R zT##rsnqcM+B?--|9A}Rrwb)nh3`abs7SBGUs1Qmn)j5c(dtFCH_GaqmSa6u682r}n zvGo8p(N_G$eW?@lHsdrzjwxs0;X!Iy{|+E8%DGQ^C8FRub78F`7yR65hHD6%fs(aa zuYcRw=wp;1OBganT7SY|CI9btQ7bCD?tVFR;nHWV33C|C6fzHD~w_xfG^ zLdv5~`^-t~{#LX&O^91~sGukAb}jbl%-TYSW_4$9l@9WY`Rh4Vn@yV+ym^_pEYA~| z&DmdfuaU@c+7Fi9&iHTIWJz^X6lR`04_UZWIbpwRY7d@W$7CYLzrL#Ki0=zO*7CXK z+VF{}CAlb7?dap1V8=PN!N2UI_26Fv%D*9ay~V{5gH$%=tDIUR`xqkSY~MNBSNfB) z#2`X|e?bzb25(2Pb~v6vl*jc;q=7>6{y0V{x}3)b53R9Gldtf#BB?Myh-q^EhMCK; z8U=l1EhZ`d+Pr)-svh=SJ>=5_S_rdnB-Ad7D~m-sW_se=LCSRDzxr}@2GUy^W{Cwa z4HG=~nXh-ky2oZ&_QhaE=c-{=r@zoN+E8+oJ_{44- zA%GQw(}s@S!)7pCVpO)HSJ$Ui!@C9jwHX|4V;uj)J}Rzq?k!jKps?DDcKM6wsQQg|0GxuN| z64}p(U#h0{YZKQO3%gG0RuguUj6@TAxZ4$#I4XGrwX1=^GF^hex}dEo0!>sziZ?Vu}+c!$y|vf-m9lBQ{3 zQX%cf{0}Wfu5q+$J~gJVecwY2{xf)Jr z%!LJ&8u%ZL)c!TrlQRayuoV@gFwSIOC~krrs#@@KV37^2%7fx0ilE~xZ9pY1pbyS> zF@fubv5`Ie8Ey@|SjYIAE>95xtCbD44&3#s|CGHL-->=+n0V^APR+seHd-pep|Qt# zCBc%-Puba`Mpq7p$j)8Q_BbPkQ+Uj{M~|A5Q{j@0A5B?Cl|d$)A{5N;if=`r6=OCT zi5vVWMfeHsZGBpNVqAeUJ!Z5GIYUF#koop`NOl}TqOE+9SrOTna^rP1xoO2*_XsWk zI7F;sLRYDN#TP;476bq28zU#ugmU>LDTjlxu9A~6RbJ{kY9Y5xp`&5S21jO~Go|j) zW#5uz=PU|rcPB$h3kOMI1Ds5oirZ}X$*?raWt1IN4Hx}jAHtj&OKNX?E5tGWuw(3; zsf56~=G1AjEd5*8KX~Zg>s?^@k$)cst16QDfG0}~Hxe5T!G5Y2VZJ!J!vvYbc4Y5> z;~cnYG%f)Imc%egiK(~zJv1_n|7JN-{Nr?<32}lvd)LBFC_Z@0 z)>F`*_jlTxw3i>uF!2*-ftC6UcB|`fXUs--9e8!&K?p%#j?fdH7PlJ$wLp_|b zNK%SB!BMqky(pnYUOCa=yg*dwis*y-HMU?iG-@d4037SE^hopEm@mAY_-`M`dg_lBL<7+j_>#uSd*mVsm=ERP;rUuYiq1=nEZ>9-*Q=9q*mDs>rq=4p&z*dc4aa_bv(5S`q4M z8a@fCBxlu*`^`TfB~c%qEa{)B`xq8iiWM#qfrlJT@r^j*9i1eeHt*x%S&RtO<6Dw5 zpFb;q1`DmueFD96+(=t?KG2;i6g>3o;5sBt**k_lVxIP3TEQfI^qfpj+>G0s*$g;A z%DFNgCs<+%71i9`i!pB1hz~e&GB*v(;L?fiZKs)Ay!rmGX;a{i=+={7VQcEhvm~Bb*@6->2+6*fEUxEq5u|w-9msK~Aa83*jM|WpW)(^^l6rHfpZ!5r2w_Khw@R~V^m9>| zF}d!Dr~29ADpkQ0A#I>j58J6;_ljC#^Gp=x^)aNMqAAfjdb02>C1knY^?ubaD#S;g>|ytoQf=eaGQ_35!3oR2RZCqK@oJ8r`~y^+^63+rY59cq z0})OBoDCzVOi=Yu<@s?|yZ+iL0aJvY>d?Z7-g_a#7deIjm&9zSBgA8S2AK%USd(Bj zEzM{?=V!kf$xRf3jvjnMw;}?Pk^XL_zTEXlq5ZhHydxNtC_ncXkv;`;>D(=$BAphN zj8q8S4ov*^vdua)3jkxRMeG+>9 z=UdEiw?(;qTEhspKNjO=Yd_i#dFUO$l}KFgeP!J@vwIccBG%zm4L5#u*3?)4fe+Lm zOv|2D)(^oGsP=`gkG*dlLa>cDv^{q?m{)IMH|ik|gkRU3%R62rCOog*Q_n}pKlz@I z9zt$R_cPyaZYM+T`xLENTeI`W9=yPbK6NQi1~6s(P3q{95X@U3ZQDQ zHp1VACGVF5&3h94k5zi7&SanG%v7P}f_<-&A`|m|9K$8LTVvIQIP;AmUV8F*-fu0& zB`IK-NK_29(>a*ds^J;Y|55T*)(!lgg=wQ6gjJn$1QdI%Ww(3G{Wps5qJDr)cnET5 z_9rz#CqmMRoUe)SNu{%`5d&}Xwff`!!`Cr!sfL-l_@SRjKg?5WsTzDg#?PdS1*Yu3 z#Bil20fVvgy684$YMVAW{L@g?7uO)#{Xs1{=kHj^3UFJgFSPC9(kW2@C`V(!%ZE@ZGC7hMN00m~yzS^;maO|W#K z(BJ;Lp7$$DH&Id5>d<;z3}|k2eny%R0E2a$*LnukCxSIX%Pg=~9l^i1f!GotMAqXj ziS<1!kff6D^)H#xsP?lnc{QMJ;`KM!Kdn_ZR?z&$1~c6FDezcts8wmbp!3f^;sf6= zS+}QU5(qKp#|lO&EJjOjFi$!r`J00Ob-V!saT117;(K%PJ;|v=xffM14k4#3l1}&f z2}1Px7x|&WZxce38}U?inyLiO8U>K?%@rEXS8mpgAD2I8c?ds%dcMUMNSBHuzJ*dU ztvMq9KKrMMd~TXO1KpZ#P{Rx&>pVTsnpcxYr-;TQom-RjqcqvDtRunSe=jcrx7w$I zt)Oon;u0r79;gbK*!BneF?Y^}^^PAT2XXXF5wc>P0G1~tgW^>10Zl-tdO_5w{Dmc{ z9DI$e5q12V5nyw;0=?%`EN13MPX|ebPo9N7W}y!HIV6ug5I4fjMDR2fM}?c*FZ8R+ zKP=5x?@0XT?I@GBLwVzu^?Fhs=MY%82<#7iPKRZMHGKKlfR@Gk|7x7?-8M4!<0PIF zRngMn%X^be+lW1q9*V{@j`MU_oX0lg!}2e&omSaMh7ESR!W8A@0G@AopZi-MSHU0W z_F2qgGx=3I@i0*sl;~$aY5wtgyJ<^AtG9eV&WOh{pl64Pv?t>1ojYWDFJh?Tjhr%M zJY1hyv^*h_%blxV2sY=RjoJ&pj%e6k=I5JCx=g6b3Aj1`0)bvnQUa*L81cLYttYX( zMxdks-n|}0fegjl)%uWw$t%`YON9j>fHt@zSolt1l>m9%dG*bPDsX^(5-H7HF@|9P z2pjxnRbs+2%Et4@staA~8P1Ly6U?iQefGUU1}i^uk~D?d4W?*_;Y5BkmC0L@-uV7x zWDojaSYY0SSf=7jsLj2gWObg(-sMHH$=PFB0BJ4Uts>&;EiR7!TqSpJ%|E(hBp5jP zh$JWTgv)Ndk)^++8%h$X!~e0RJIEG=AG-}C4*Ztqf+=~BDiB}9elc`q`z0(=B&XWyGY7+TXhze-S8!?5$AGn^ir zsW3uBqUANTBMkRLfRpuPZy-W3u_;Ul*@jIf-3s)bua84*CWYh5F4S8OML^d&yUs(+ zDRxF~O3xJli=UVYzjf-o9#Fq=Whs`MxH{(r_%RcySk>c^aK<9-pg7) z;S-MWnGiliE*>HEr3njh>~lo-zHgEApsn0MGkzb+qWimK~tCuD#7X_HJbT_qlv)Y(qy9$gGSDdD+bjJ+0TqYzN*j(_LeJb9{biLaoDeb}p%3laN|nwVf`aUt=sm zmj4bD!gpg#P%lrx*TMP7-}=ESPFL1r!4M1U)*gk65S_-DKMaYle)h=1+n<${i-h*4 z#p_tak-Ds{>2>JBh`+v9%z2qJn(wit{eEZua8w)>Q+@vh#Gt$2s^eY)26hD7FGg=r zAihP~^}lBn5;MNFZr~8*yCCJ~U3#97fDjYUV`P@}Ri=q<{VRjI7Phk8VEC-?oF`1h ziv~lx=+kSVeJD@cXz3K?**I_~%4 zmqV0T=q}wB>JR)Nvh|^>)mG?hj?I5Fzpb&jNfoXe)D>%;fH2VKmRqD(>QowUIc(LwKqO5x`^bO8aj5bl3$c!H1m4Lm{6DVVIMRFiY!$3q(K?La<1|_L$1Oyo%p`bJ(5~EW}N^*pBZRCh;zxnw*zwh^X zJ^SO1>wV(7Ski&B3B>wSw4Q03~r{w?4U78@3$KUcp`oDyQkmK z{j8IoOwpiY7rcaGuWv)?TJ`31;WHWMcX3rGp<5e)I8Ov>f4TzDl@X@pPT@&FnE`&# z=BHEutf%Mjr@oGrgaHoK%UD^QX_1vL0DT>2+V)9@_=wn=?JHZkKSw7$#7lYxJ`X#* zp;g|E8lm#;oK1YHecdC4$)7j=hnDj1B6;Xv%l^uZFxWN4%twp3 z<)f~u+vg~nspVz4-!-KW_?I5F>HIM8AbuK>EvL^WO1mnL4SI46b9Rx=*d<3P=LK~d z*Z^7tx!>DS*^LvY3zohZwwcxnA6T{5pbDI<+`j~aTh{Or3ZRR!%8RmZEj#e4mjUrU z2k(phTGu$#6>}D_gS2~>{x@Xyk2W*`j#o7?Wa0kQGOeIK&GrhIh$={SKYv@`w$!EC zg?orCy1JK07ro)QaiE9QcrF&I>B3T!@@Y8<-E#Q^ovcrx8#uz8vTKiTP-AS!+#2yD zhHOdHaITd~h8qrq$}z^=q_}mZaVonR-BbE)XV-D`wAGLy>pP}$b#9oDz#c49GoBtM zc}H4ijUrekmo?AXPYbu+``Fqdf}`GAa%?J0@T&3_1!K@1%PVONb9j?r=#N6fqT#jO zR_SxtSP&i;3LicV=||*>5{?8k)X3T@ueNetAIu@Y6Eea6OW}-DRX^CzrPKgz1t=T` z0V}1W(o{J*jCLm2YDi!0wYORC?u57hV9yWH2|o$f+<&`!w^Mp>-%59B&{0$eCjcBE>|!| zB<6>26S}zJuui0BgvskHv%K9Lryyay7GGHv6?NWIKycjhA9?zYovr?mCDdcNNlT1^ z|Jm3I43ooX$bqCw8mUcJw!rwmg}l0Y(mJd%eL?`Db)kuPx0Ssw@`?D~6_^3G_YAjc z1Z5;SY=MslpTej}{+gWtmhhz~&2194mu-WKE7--3A*ldr&qV|y@?e4JMdt}}(@^RW zLE5dF%s-{?Eo)r9@JFu1yX&@|Qad&|iQPrb3H|%OR9Vr#YKm;ZCv?%7vOe+=Hs6zy z-sHW2$3jq&2c%1{uG_TNz0Wu4=sg5~IHx1#>4qtJ|7HvJOl~MguRkbeC&awq7eU`y zvX9c2dM;BpFi9|kl-X=a9AW0DA)0;Lmj^5dOpKQv2aKb9LQt?X9P+HbGV~nv;K1G46hCiNd?Tor zLk&|o;+sMUYQ4^!c^0qJx}G*<%XDeO+x07)!NXC$8txUmBij27UG^h|-}iz~N0^T)M>$2KfTkTMsf=gAhwSG`42+eJxp z2!v`jg76$Sj_I)HI6bZGDW%s(>RCp^JV|y-uzwpi;{B#*%=o;3y9$G0XSeSUP0By5 z!C7^wj7l62BG;K)ALlf{DHi`KsqUCc;;+6|N}q2$17}_-@y89~LbstP3IHSOY&sGR zJv@f^|AzVXd33ISw_!_zgk5tduQ`^DDf$YM~N^Tr&w0}yv>|y6l z1Kmx0$7t5S}g3_eDPbv%1}Ly_HTm%Rv?b zLG+7qL+0>hHFe1)UX0S=1ING1XAf{fIqRz&tuo7!y*yv_&%FbK`(QCCYbD1iFDHwK zS_4!+=j(T_GG2*bpREjLIyfA`KM?Q9-Dm%XnL>Ge@ma||M$rMqxV4e<)wyrAh6ICY zq6>E7>u7?}g1?y$z2bhxCR+Gt!2Bv?1W|dom4`$Qn>k(#A1Q^Y%H-qlm-~*5*ld>| zMCevS$Xr86i7;yW>bng|+t?ZYq7uH{gZTs*8&5&Xj~fUpe@=LiySDR-*bOZk_9C$+ zeVkLt(w1gM!z&}jhO_aEIrE&l={<4d$Ghdfcr`MRfa4f^4t=UFFR>?juY9FJUsdJV zcC~rNm)AdRj$66%S}R_s_+_7V1r2;$g(WCFr&WOFk7_`s%s3>_r zFQ=KH9QDo@ZkaNZRZB?j`FpuFpD$hqdmb-1b@lk)r&=xQc#r9`@*o7_8fZOu4COZn z#<)y>%Evtr$~3J;@zCnKRgk*`ovSfE?leT}@-j zQ_NqeX0kRS8bL)Ct9t&2EB$67UjT(jRt=ApM}mdi#0=VT5=m?-&z=iy>~Xwp&vK2l z(w>nIwH^Ead6cT)=LD7)VHYv$pW}XlEc6G_lk(3jV|0u^Ogs8P)t@JS3IWsv*APUP z9y-tz4)^-Fl@UI3R3@0XLmzoHEDbi$<5DPSs(y>DH25^rXD`C(E(YW6aj@rimCFcb ztFZ;f&wB!ri}zMUj0s;Ksvn&dj;tUu314>f5S3?`Q84UewXF?`|D>FVTx3Sehp^(U zY|q+YKZ^~nnwr+-8xDXPj(t@4O&j=C*9fiqK>t*SkG=I3c=9HSze)v@wqC<&9z*ChXUGxCVVOyFZQ9@xOz) z@CN$=#fE*+H{yipS-9iUbGsM8A5A7oXOKV`S&;q}5YzoD+3Y);{&_qGvPh4q;`yK) zQgXW#acXkW5XLw-z3H*8oBgDLz$Vs$HtDs;$W>%TbEM29)Cnx^QUg3Ln9Of9Bi8~liA>BjnEcu^xqfW{)k!s%>zsTU- zS@n^`LrN|0(D<_3>dOrB8U*$J0xp1l+O>WvaTrs=IteG5FnRnlVWQm(Si0>0oK$Cj zS~-dYrnDUrzWTdv)4y1fOad#PJRRSGiiBpDUiVz{%sU#`-856#is-a7B^5~nR zE5Ga41-eX5&n|@8xE$?8mgX^0Z4U&2_JkL>(l)x47X*_5Y!jqp)4-pcR}~y4?i%6o z`q}>9npVUqvS$V4h!0&wa0Kt4^;$q1QHP~O8e?n(k6#S(X}aVA1#Yf+NWE=PLCR18 z$XEQ}J7D}#%j&9!F%*f23|m;h3`R7MmLFZ=0kUKJk$^mAPaD3S_7#2Knm}b0m57gS zW&Um_VY-wbwr{XHq#ekp`sy&fpF{CImOLRy`ad7ZhtuSh%H6{?OyDWK1xn3Vhods< ztRhD+neMkPMRyRLXR;sIkV?Tk(9=-WWaSx$oijwhWj(~=wOgO)QY>b0rY4dpCqVV$ z{icU<7o4RPXDwSJo{_XvFd5T4`_AuqaJMgyKhZZiaYDqWznT8yB4H7K)ZLCz@l3;Xmjd>xT=y-j>!X^|(;p zyAv2`0J{Aq-85?3IPKy3?p$#9{ka$XDiZ4Uxt4?yf9ytDaMo8i=pjyiWkJDl6xuPK zX@mOdhE}+Me{M2X711#U5H;m`TpxISsZ})v&F_90U177y9oFN;Kz{qj zqK}NC6Xi=Qtsa#?RyJd4o}RbQU36=Q6CmG8Cy_Luw2eKeXz-KC-b!Y%7nTJG)1065 z!O(!pBj~-zOL!5S0%W*QX!dE#y+g&4`*NQG7%LrI&3}h_rI5gEkj(AQs4k^aj~By+ zUP&i|bsWAC*Leu6!p?tUKQb^59GWE)J*PG#Xa2-sEees~;N8HgbX)_)$cMJdi@nQs zqTgGWT+ES=`u^UA8Ghv#boipOUXJi%7ybiDXvZzAdR*+AwX9@rzDs=1HkFu@cVZ92 zZ6rJNLcbKC({mJ*<~BZkEJm^{1&*$6Yt(i2W<)-n%tZJPhSf}aRmiO@sB@$|bJ=U4 zh0&@6xuT458}XI--rqBnUzZ9R+XU3YqR-dMJfaRX>cu@GdZ~eGhpgzSTONeF!P#tO zMy2r<>Y9X?!9Ct$p>daAFxc{2^0(b$vi1g773yFsLUD9B;-3U9NQ)Q+kf(=Gxa6WJ zLp0BSdKCpvswjJMI0I+qtq}3AJvojt^L^P&zVo|fy#!ZXB z_s=%k!}G3?!)k;`93$`ULCCmY$i_p$S}Co)So z$!!qjc9!zdSw1?OPG_T{zT7&Xd2z^2H%1iuS-WiPiO-r4a5mAG4sANdBV&V9lRZ|& zFeg7%>GJr1C*dl7va;ou|7iK(e~o6qBT0jOnz|n(JIF81Rz(~{)Qzib;=$&>w0+`G zqyE0Zf2x)U`FD!rc3%INc92Z}FYO=@x)Ifo*NC?&g9iB$O@q{5a!{tgZmutBKqsC! zUM$SuJt@M-!myqrh{FPD+)*9$?8?tE2!)-cf?dGhba=OmcU^UqI)FFW z0-NiTyz|$uh2ZtE2Z@*!T|OO)0!Av8ZAfmSQGxcFCxC zG|hOjnHQ=$%HfFhK@pjSSwG^8AL6uy@DoUUfM>gVyu=5Hyimbo-fi06_#NF!`uOed zj4rhfF6~AxD3iMK~g0@bA4Ctg0=PSD%%=awR4qGM@ zi}IoW(o3d7!#KFt@jOQlT92hkH@n9{-ZDUc4`*2JU%~(Ws1E^Ty^~u zGkbjD*8dJq7Z|4mZ$8eiDz5V!Moga4DY8SR4iO;&gv_OSoq{U9nR{%!nY+jnY?M2D zWn?gy>Ja{B3&q$Eir~f{H$(k^>R(DXM%2dbYyplOzGB4N!F{oa(6e&e3zt6uW8XTLT=PQ2{V z2HPM05Pd_eI^<36T)|YFa`%oT!v;d{@#oRy@7BV7AZB!SamoxE(gti3b+2LxE3FZ#}3F5jk!56@q2jY(Nqd@;$ z+K<+3med6!<=Sj}ZM$V(?ZIR_o*`bWv-z3!JYD(Q?I!5)#?fY;ZKTWa%W`B@KEn4y z9EFH@&JycQ_7u;ZTBU;dllY4f)&mKxf0qikwy*>vy}HeiCXe3GygD)L31)+jiQ{WK zO!BbYz?c!nWDvqlZC+U7#>+L4=5aXV(rT`<;MTAO5P8nzgJ~MYD*hfJ!yg;AdfKUC zl@F|^307@FYTZ#JJln9?GtH_ga_K$TxWUmOYfC3PU~ymPV=Vq~4ce;QmI2_q7S|IQ zeg<7vpUQy;9{C^a>=$(->=v0D0EN@fFW;WET&6$?Ug`%M9=pHt3OGpA%4f0k;hd?K zhtE!rgf|NxG_ob=u#MymxOo1&{lO`Dd9W(njH_EcTa?D#fHXVt`n}?WjToY3E|1n( z&xMMr{46n`=q#LSWzb-QbvM>Somr6O`Ii+iTik`yXqSfT1g9=dGm}5p(PsBz!QGfR?#0dVW5MV&2#ou#jr~$S~Pfgv#5wo$> z2HmZ#y_Bn!m~K4}0$-h;l|=jL`S$Vwm}bt91j6~>`0T%}X?oQFbO%EPjn z<{4P?kLQKY(@A4piwQZav8i)aqs#r$iTjcRVsoyMxabrYxnkI!^h-Gk$ks*-q^Wv^l$`nBR#(YSLR=ecBwi1h=GA$AZ7uNk1DuS`A<-Hd z`$p9)o)MQ0|A^_G3C_ha+P6-lfN(IAXMTR>m1q6Zg-L}np)aX-AGv#Ji`fH9p$>|! zl2rlxZD2U+K<%R7EM$iVft`R}rQ0%JIo3}c1ZAyr{;h9+G_1sw4?>8`wh1u0kz}LP z$cQ$;QlGG?6CzPhyXN;pTCt%U^LODht;AvCUjxi3p2JNp7$PCqKnau6FGZrYpt(Zo z%3gm7@fUl>Gj|`AnQI5A5(6!cnAVN23aJmGoq7waoQ+)^dJgj<8|AJU_vOa)qDJqD z)!C{BpWpO;a-K3IItS%5AP4?4XACjQ8Z)=tL2A{@oak;6AVTz@ zLyP%m8m(J3hbA36l$-1e#vk*O-QV@??2{cNwZDEM*KdJP8_D=b&CjS!J86 zeP`99PkB@-6VsOrjEuevhvDiKq-am@tqm$wY-#LeLInkik)X-J2*J+e3}L^0IPl*q zw>?G5L>&D6i#vSeo9_yrI)WXmN<|PpU7S<&o?MdDx4Hc7J)o(2{BmO~HdwFRgLQN` zhdh1Br;O_wH@SSsW{qtchvc{UdQB83qwbf9k72zpYUObx$P9mI(kn`wV>im3aG;7? z;KX1DFsAk&_R{SXkf!a>fr zFv0n>Kyer;>!NoY;HaYsty$)`mcq;P1`5P_t$!o|&p_yb75IRb~&7#&W?(*)jK+?p=6@ zEJijftD-wQb`1GfK482+{=YoGKKeo+R~?f2R)Z?b-0?7{eS$fp%6!&anCdLpx+P{U zm(=kNpYv~QpI&@bL;S)zb~VUqpnoUVUvz(JA33|Q_{&%q=VfXTnjgKG`14SaKQ1yt zBKD^;fZmn?nEqsg3jo58yRCtdHBE#vGvtK`SbWkiaQ~Hmsfuh3VFwv{kbQt(g3Ty> zz;SR_rKqhakYmfE^TauUXO?KM(Ip9zf#vdQ#uPJy*~=nb27O)`naABr z^LJPpxM9jw+Y|of){)@!VDzr;t`2rtX*YTNIj9ET+Ro-%~aip$Q0~V zZYtVEd?nh1ANLQTIgsUxYY%Z$pBSC#uurd;&y-ZAwsaJ(-w5r*3*9;BU7-yLt)&g;e4DS~k}HxIl7|Cl zLL2#ZP!6mj=Z!$AtBKW6!s6n7@2RgJlE4K+rxW(OA)(d7;s<$MRgDs96_i&qGnifE zWa8tzUMZ3a09q1|Np@BGTIz65C(3EMl!2ja;l*Ra$IZ`}dgjUR3G=xrlU3gI!YVf2 z*1c;p8PLo#^2VT%Xdg)#yj=$?9Yc~cicxMoF6(y}2+hQD-jQ+uIgGDTS<3QWq^K2x zn62KxsVT!cavyw80M8i-6DLcI1FWY%P4PBNVplwrR<0^ z&*CO_B1-9ors|OE^DQl09;=Dnd1Qd$3yZ6dPf~);HOtAO@+UJQw3d}tk-mFBhc8l4 zU%|%#OSdb7XDUxa7o^r`Hx^b#`WW45c0qgiFk8;!y`LggaPOi>z&(aUR}eLJFRYao zkWFI%|9c)jo%Qo&>Ry~Pt07XWK4y_k7BbgPn;8%%*3 zD4UD|LwO?U z|KeJrK5d<{_hVQII8{9xh%P~}LjrOmaw)v~aA8%Q} zF{Zq4TGg-u9r6)qW+Sz%UKOn0@lliQUz>GFR3agCeKnF~7(Le>UP*aZ1w!^a<$Qj0 zFeLQ2XCHqC4d$>p9LaOBfd1mfxJ#%W4Z^U9P0dtf$=kzgts+cNR#jD=CGEVoMSQ|} z?D?Bo;lBB8ty(-PU#)@xnnmwQbT4XF@1Rxh>VJDDTDGE9Md{PzYH|FYW1#FgLffo9 z1{eaSQ^Bh_$S@1 zcvy`d@lHXQVQZGW0uY1v*5(7U@Xyo4#r~B34EYQUvn!C<@O^?83Q>u@zpvthB-B?1 zok-x-pEl>D-SPJ*g5ZC1;3R@BRTy0qL&~MecY_Md+7lb^IoL3NmV;BeNMWrN>`r&) zIEP-P=3_C|;k{ydUIO3B=9VX8Tio5NsMO{%L_R%qi~Ks5oJq19aP-Am&`Z zzGoq~!3OK@TXVLTh#*YD6y}uhklVBfuQU&uO})htN`K}JPmTNK0csqN?YV>H+ImSF zv7Nud!+6q62QI?(RQkyRE&7}fHccdJQlv|k>8n9(;*F{{1iomGP}BU^w$8__S02G< zHx|jFhQx4)HwJvk3OVQA??SQNUh!s}roAaZeS^KM_n)Z7$%ie1Gl6G~^C zzrvq4M|ow#4IE!lQ3cslKXikl3i^TP)C!xCh9!p#1` zrYYvEWq%Svn5n_q_HES$5iP+ZdYdXIqKnL&{;2QkQjuaF0q7qRyzY%eRFo<3ijoh} zwFb=JP+m^#hE|!FK1!4)pApsVSJ}l-HXScropii4ePzY!`rGDpY*?^^;1O#^V18@&gTgy&sT zKfVPA65Qy(9B9!^v*2?>h1P-Ixy$B15*x8g4Bq^Y6I+fdhBHX=D3;#AdHJi*Ugi7@ zEZaFGs(%|AnvM+JLjP_Lw=*v2!w#%|mp{BOaSv^@*p$o(VVpe&(RWvlH>)=V@E*`} z+H9M3R=cyO2AhOY@K=)7MTRRHF{OFyGoEk*P(f2R#V$7&^v0y@ zd{?jYrM^0JBY$hU%>0z(58L5A(qSIhz|_n^ew3T*2CgB_ZCL^&)b!c=!o>QAd5w(t-m2hN1T#?H2pAZ+@8Ik>L7J`_XJ=Zw zYl7{ONRoCLcbegx#2=H*w$-|Ek-T|9Rq=-;Hj1JtGfYy%pk=5qYxT5dsSt^fw*cUWL>YRSa!gm z@rb=Oba~@7lEa7S)*cw@PV&qA*9k_G#PLEBKe4)ciI?7(K~_+DHX?%XMrS;=GmEhC zpey+Pax8fL$4Q?4?XUYYfb>;jGy=K<qFmBUoJIAUcB9y0+im?OUIdz5La7s zqOSM(lAp_yC{f@1{^g}iJ+*lx^*{pZd0EM~l$;M-*&f0J(J_ao#+49#g~%Cd9c@BIQBVIYnRHFq|no`?i` zWH?H0m%J(&$q38$g2GF*7cvRU7*bfHzal@ANA9`TT39*B#WGmxit0iWTDYn!)JRA)vWU$LY{DtK*3dVm!?vSkjdiDrAPZ=SotspYR>LOfj?pDHol>&uowlU^e`VIebzUm?q|AqxJ zY(jhRRmlaC;lR#ubc@F*5q?T@tM>Ea8L2ovMcTE#D`^V{FjC*_n8n znJb1(zYReN5{K+k)mbS9iEs{R3Kf;K0#ARlVwiz&+TxFZs=RPEZKHzcTEETeC-$^;n)=hdQP!?xEV$+@Xih_6Hdit%$ZzHQJ&Rrs{Ymse zb;~5S{m1wgBp5pRCpI3B;6h+vUyu~W(d#QrgrAlg9Q6(|#uuRy+>O2WUY8av<4U(Q#5$QGH6{6RO=y4*dEFM-8^bM~RD`jZwABNw`1O_E;`Njffg z0KWG34WgXv0aA1l`aQ`1NVIiB1$jiMeVdtMNd9O(_TK!NU9 z7XdSs7yb2cR{Ln|9wxPvPv5kDK`{726MdnRWwM9%fp-LDdf`?eVkdl-YmZi*OZ!PzpYFInkJb z{qDdECT*4ntF(djU)%nwube0x?pnWX!Gpg7lP8SbOFV#Djmptw1~ zEsz*c;v}%pWmF}=@p!L#m2pD(iCg;HYcgR@duTNSSd5!7qSs~MzR}V1E+iMIR;KdB z(DYu;M_|gH0nS)rp&WadlUuap#)kYiaA(jI?pY@ehq^Ze15#F7QY4cQ7kzYor|haq z6$|hL1;&n^uZDEZ*_Nn?O2l&VnoYZdtfS8FUih=6U+TbMsqN90zD|Wvi{k(bgWNrd zSVsk55CT^_dg%)DmfG|&$p-}OthR}o`1|FC1Q z?p^5f*$rC^r$(|o$YOKVNi7uQe(^z|wz^uHydXhe=1q}tkuU#kW_o2NT1AUQ=#Bfv zK`TT3>**H|`8@NtuJ&vaAia+t#hRO=mwE%;jU()-m*K zUzrX{*W@((sk!pCHGLT9N`0Kl%<+;}X7e4?8`*Bacw%UF(TT&&@Fe?s;3v-1v27k2 zKlH|h+ERb$mA+|{Ltc%j`FNaRU6PYMuC!b3EukiskRJX{sg3$7C8vJ^WvYgkTBIB4 zyF0&;<`mrX-Ei_1+v$5Y@`8mr5HlLDT?nvZU3tbrnYHF$VAjOyMsHT6teWK#w?3gM zLcy^Rkq=bod7y(~ca8S1t^ZE`q*C}@&PG6)jgr@gNkxsaHY;bMAA--mYo#3uL4m=v zAM;VlxgjqKFML}OT%C<;N%c7z6 zZ~5^e1~=%G^wuXx5xLc97ulGx#AZwLQQS0`y2{^b@v4wfdKhof7b4TP!T@!=czM*W z0b;5`PZJmIj8_ce?6&ie{vnT39WR@g4OaiM1~t{f(mdd12j1{izmRFzxsY|MUXBj` zMX1-j$TMluk>Eu$sF?~H{+Xjc_@i$pWO8!^#beh#)g>$lA;fOs>QL3`}6QpZ606$zUy%dM^t~3r@)eb^FYtqg&J0iSAK4`zHnmIb5{N(S4qe9 zK#xsqtUi5Reoi7cq<+2%yjAg?e)rXqhL-g#Z_%B|+w{dn#zuue(x#e(uIs=LMSj^P zou3Q>=PbWH%&CFfQM*gJIojo4Gp}-LQ|M2;xUTuf zd*G|x4BSUV(54CuKb0_OA9_LUpOp&=jn7SKt3}{WVs*^$*Z`d-9YU+aP^HNwVr;#wBQ$M$B zl)Y~oYKx6<8g}b~h`+12vtl!Gy}R!H1nk7sy@u+Nxp?ZCZpe%0EUGLo8_oGuSgBx^ zX<2zJ5v1W0?|3LJ?}mS}xE5`o_Rcb$MMKS1V8qm34VM1~9rIlgWRe(+`O%M$ELePP zvHojSDvCbBk|on7K6F*wXG!1H+T_ONKsWVM>R)*f)3wOLj`|+K8{m{A0m;Ea!`37X zYAKUvcHu8j*CEdC!%6+}cgYEkMe`v4MAtVVO#^nncqkGKrCR&6h`gx-?5CxTerTKl zy+B%S3ee?lt<#P{Hb+ogHTqzCcmA3SBVgMuteFAOhoc8nP}Y%=jQQJChJKDcINIsj z8V~%8CZty=?DLM`+c}_n_dP-}iLfiKXRourvy!A_?#2B~zX=ZCfD)ikY!~JLYL+?J zy6wPwP1USvEG?VAW%JS{TK4JG7u7Ve`1`-QXJ6zE$!>L!X|`}uG0)0show8+rN2)f zZ9tMCwdUx_25l7GyjKn^iK*#~;q2^^6~+X<;<_Q75%FtIP`(4mO6{#g*ZHneQQS}C zh3o6cD*fuuaWC)9yl7Tf|MD*6wssD)L4Q;h_U4B&@^SFc*$X-@0r3~5*Bf-M5=7bG zpBmnN9G`R}hcQH`G5!&zte7EVAhHS?#>`mjqg&wg2!01|o^rWRqa!0rV;(7z(-C8< z^IlE*L7+_L!te%v``h4~Oqb@7eZ8_><8_&&w=wy{tNFa2#L{Mr8PcBR`Xk@vy^PFw zEwvl@-nK<2gls|`)#v30FXv{cXwU&4O3CCY(!<;t)|Ss`94j+;yPW$b)9QMc@>l`KvJ*e zX^kqj7t12bLR`g#hmzk*-nB$A#5-KT(ax#5pKP8rn?IudvX?I;Q%~QxNDJ+%^t4U? z)cBQ7ZQ@<>*ChiZvoBVrd@jjyhORq(@2=krHnh5U7*aHPk}UXY?OdZ9tONa9^57@6 z&_$NN-ix3U6BjcQ>M(g}>pgqGI@FmYY~ljcc-76c{1y7*C68*E*CP+L6(1F9;GuME z@&1 zi$CCXgt^Lqp@(>Y6=eKeN24V$+g*qJhl%IvfKKZRzq3uHz%aCSlTPo*WY?khUX;OS ziZlD?o)nd>0J)ylV47~#JoQG3AVYNoTydG9A zZo{DO_Dzgdc0u78y6!DUjpby`Q)c+1JpKjHSK0V@pxE10$(*d=j$GG${xOF;F1t>* z;uwmLd!xhyfidq_^qI2Xb>DpDz?}ee-R`^7SNzqI>cULtKBA+m_yv-?S+0*6QNIz94WXHt>_%h?|_72`f*+|3FEVX!DsOzbz zs3?UgPtu>lz^r&rZk5!8AAD>I@&P5+)jgwiD8C5u*3TBo9{aE*4*w8V>ae+WmZen>h0YE#^fS>@)` zfJB#rs3_lF#)lwgded;|oofW4j;rtrK(op7?My#khDG0FZ38S4)Y@DJi~Re3T{gk} z%fLhXK|wUSlW_#UPdGKmtM*#mbe{cYo4;_38tu3|UoiJ@r1&{OuD*Jt=sHVJ;3fR<1Pr#DCoFr8{@8hNLgVe9HcTJ2!yu z!sW!Y>h()zs*D%b7^!->+dzXatBs76Ix~;t*SAiZOmZgjHKvWsr2Yc!-Y=EQzpV4I z)#(5EdGfK$bfmdHQU())?q{KSqC4iRdi6!+ehuE3GsSkFRR?#8cfu=BZ2#1jqoz+x$S_XTgsi(Q zR=fve8F+ZfTrRR+PR0LB4sj}R5R6HLTSDtzXS@56&*K{A;vV7#h0p=8^NeYbpEu4~ zN2kePvXCJ1Qwz=hGXxzyD}wl%y?#_*y0F18QMTKEO;)^@hdQx?B^q%@G1Jluo$!O<{_^SudZ_wi*;XI7C`0b^_iriNgifL(FpoBZb7V#$WcC*s-D+p!X6}jC`;oO^n~usFMoLAQ)CPr=Wc7l} z(}S6rnQ@|*UV_ycYEgrf=mwX1x|A2GTU)%^0r~xc8Bu+aKM( zEyZ6Hm6u8bTrMt{eaGt%L)!0RdMk973u9@0m?YP~?Qb|6RuJjh2Z3IfTcoS3QRN&S-IhN z5_q!GN$IrMoT=-z+Q&b{ThLO1?`Azb>C(RbN~;B^I(VC_rN+8!5EW(RmHw3NcZQ~E zU!1c2+#WsY_%-&O#XbJ=@n|10L16kv1v%&1v?W0AG z-v+&;QSZutIyi+?+}VJt7S#xpnb0Xslp*bQdtE%E0N7@*u5N;lR>mOwVQg>59a79S z^@hN=CEc%lc|tzP`=maUoR`7ssa6RHp(mk9*Kb}ZEstSuG24g)SEeJaPR^Y2u$znc-BpET_h6@u@o6aWQvo>_7Ke;4Fo$!B`NcvqZC#nd z9aUFRO|NkmI^eU--PYc{-G$&c$rqKVKT7JOYnSCgIy%ZSe?kgN`bF;xBSbe{H>ztt zuDU1>PH}iQj{60FrZI#pFE*C=h9sZNw3J<#JY{?-cmx=v&*lKGJreA?Ghfz-_P5kq z{J@qbN-mccaFecVKs$D{KH!kGKTsB6ypGN$g-cUwa{}967)5@Im@Z0Pr4lJ9&L8;n z@~(WuC!hRA>COkBJ0BRxAAcIVBSgnFIkiz0yBkhr6fybB0(FPCM(x|n?_p)B*W5bh za#Q>7KTj)-DS1G#x~I>lON@2;;iYY2__UGJ%TvocpJ@Vbk;=Dj_%x!jMBT_z#dhiD zB6!^v8C*G+9ljotx-@gXD|P)eE6KQA{3Sj%_PVx!^MFYy?CRJ5>}?pd|`u z)tf4daPJMzgR~$->p3RJj1hVfC6N+(98LwodUM0G7qpm1&421;GXGH}{ebmFoOW>7 z2KBDKl zFll;i{ey@j**|MbY1Hi3zPJsct7}9g*97mta|I&A<|8B($SH?EzvLlI#h!%0_qcsF!~`cC__*F;!?=6P5{jfB`>v*3K;E!wC@y4q;R3XUGlCQ*1hmEQy#i~xrdk)iOZx|i6mW+6e->S`)K55M3#7YuBaW-li)BvMol2h3UznP-xeGPiD$@@Ov+s0LKcxz5HqECIyd zeeFkgEAH4uI6s%U4FJ%rX&UL=i2zX0%9^@GY{e2Nw!+;^WvQb9WK^!duTltPSHE2; zA^;>z)fohmYNjv%2~|xdfxLzi0C34BkhuV8rii;KYFS)1ffOfemO~&hb0uzEBZ!-b z?HmGNn?U?E68A*G_J5@R!HFqJ&Hm*g!^u+rw~T)!lDhx^l*AfHYAA_y{hwMR0Av*Z zt4%b3g8F~7jrgZ+1Rw&yPAG`*c^w%M;{V#!0cLLa;Eo(bTwEg>Kt+f!R+JDC;0ogm z=LiRebCL22$Pup?+&ZAMFz!b^Gz{(@c&BDsY#>}MVro_k`$wtm894^5U&c?#ZAuPr( zE&^m>6?KoYigXdCXANf~=iv7iVF_bnW9JtGGtsjMN`d&oo^n!g+s2!466NF^0;o;><)Xsc1CZ$tlBBsl(Xl7{RfifBDs2If%(s1^C%mnd$X< zn`9uZgZJr}8Lz+gVm}bP^51@x}7C=U#9QXhRB<81L zWoBo3-yuO6Mn`>(TK3mFs00mD7#jsE@Uc0NHG-%&O<6F>zXS4^5;8{Or4u0&Lm=_N zkkJ)KQ4x2v2}RVA|HPIL{wpqt{$DXUE6`RG7)4B67D-7=OcPa1Oia$o36tZBVk4(3 zEvBI--c|~I%xBt68*o@`OU<*SfkkJ=y@U*b3}yS zqoRPcQAG8GpNex4UnLr5YH7sOWQh#Lzn6ts(qDroj*XI$R!fum8fy$OzXl2*z!}d* zN>9%k%SOd43IhNnKpg38WXzz)lVJc-84zazTO=z53-R?aL_`26z(Et(+;V=OvQK_4X>e>$ zP*c2p>pu-4-dgiEL_#=BFhU@VpHfIzSV&arKTW|?k&lNriZ2dC1{S)Z@vkj-O7WzF zs044A0041{JnumiLJ|Oi6<-vHl$(<~5=6?y$rS~n0AJTA)#Ql)G4gWX^}fr=0|N1I z8zt#;@Fa%Rfz230b=HmDi`MkfxtK81&KvVgp2YLF?M&Ce;BV!sn|bEA@Uz44!^-0 z4x-?_85SQA3wKpKnRff;_3ONoo|Xo2{7>r+eAMR7k?CO z!_P&n&M)VtEE+Aq$j>S58Xopc`Wjypb#!lqYKc?liSxW%HH7=?vJ zB&Fq4j6JCQe@zQ0D=nj_s-bOYZe{26*v-xPp=ap-;eTqtoQRC{#D5at`~2xcdlP+K z-T(MM?U}ibrn*vuLb!aG@;Mdtr~m#2Usu`)u0K(VA3r?wd{#d z1+cD+I6%izTaH>lMo~RN9Uuo#C@<3&k&=@Zvlxa+NXh^J(uyV~vH&?b1@&|#fSinW zuZkETOpabCHARGaz9Iv>2cR|!)Jj*NQnkA7NQcYOiKZqAh0D0K6CZ9~q@CP9@8VNlM?4 zrjl>V%3H|E$^n4Z2r3z%_@Piog4#JLN$GzdfSjz7i7E9206GN8Qy*SN`ORREl(eLT zgrwAKNmeNtkfpZtzwwiQ=qFEYj!x!=mG5f_8mZSZS7c?RBqcQzC1j}e0P?QS<^K(@ zq=b}&)PLhF^>0+D{Q$^&Je3DT$k73$C1j{CN?JlX;@@5GhroaD?f<^%Yxn;ss^Dv) z{69shHUBm9Ujr&02LJBT%Scjx=d~O?wLcOv|5{e_(D_GT21rXvO3BDlJ45X#l^}b^ zS62}b^^ZxYeWRCT2rR z2FCZS9Ui)Rc>DT!cm>8#rNRA)f;`Qo$?tLZ%nevB@m!+ne=J5+uN4gqJ@t~F<|0*% zqe1Y?L{Lw(epF46rgnmFi~2>^)z0XtnHh~V_4*p8H=aJxw9q|9}0j;Mc`%{{PKJ|B80ED`Y%yK46|el-uW3Z(eicVV}9xbXD?_ zl2BQ(5flIYva9;i{L*1s;oQA%xES@B5iB!>+)ov+84BUuQZ6@KzRROMt*WF~TFa~c za#x&Ir6PZ-Ob!rrkH?s-66l5=*GFD<>z`l^nJ7`+Wphh7 z|JN0w@uhP#oD5TZ=1%ZDEDX7c=e-e0EWSP705npgCJLCucdj9KNM4N}*- zu{te}w5qX**V_4u@?i-|{xen_o~Qi_-i%3GgUPQI?K@?&^D-SY&Zpm5pX`FAqaVIc zm%xSWko=o?+2fOI69ytt7Z(~sha?bR&n^+~;8U$gadSr~3EL6y+t=CaY*zYN6Gg>K za|m6-;B|wf(sTYqEC7f-FX#v3HY0GDxF3oJupPhldW;t>{uPKR=^h4YUn#;!lOjY@ zD~M*ZN2u?q2BkV*ec!HF-C=Ad`%5a{{jm%V!+oB96-RE%U*CA_7WP6m6_OvX7r!i* zy}Zw|2Jf?t4&8d*$6!rJP37w`YV>b9(_aAA|@@)=gcYY zUFY)|0gP>$67OV_m45Xrmr5T)oiTN=u>>65y{2T`*YdZbIOM9}4&u{>G^MLO%XY$v zjT8*rPlSA}35Td96KPXg`XCnM5G-en0MBz$V@8O5>VxB(glymVJY)AlTvftq6dZV? z)8w=dJwwh6N{D8Z)t>j;iJ|X_>o)QupRk{y89}1p* z|1)hMxOms^e_30V<@;IElV=a9$8zaR&uXfHfPLr+6Qs3!!OI&WxBm(dy`A6sEs+1D zqa(1Re@EflA7?q6z$e39wCP93XN`M1^~;c$wjj>GfopHjad!w0s!>1XJ)lE{9Z8Q` z22Mro+=?8l6>C4Sbq)30=yaG?P`WAdsWLE@$HbEJbx8k{$df;p@3XvE!|zR8Ec#-T zxW(pv*!-&Y3rE#Lr)ols30`bI?j6=>Uw8qllNaMsTI5qL%!0s)WS3cs2QeakjiG1c zCq{CQlwe=qCF`Ka5jPbq!akefVxrO@eu8~B5NWtc^zx3)a7^o_Ly#yc=t~*-N`?|+ zNk*f&SobJ1l53U3cvu!uG=qo_oB=WJs5E%2<+iN1$hMP1oE>dqseV#Ef5H(91qh^;76C8Ak)3^tfEfOR9N zka#n2&1AFqB%F~az$08!`#L(8U1loM$p99j>1}Y-YpGu%20MbZ`I&zI&lvIJ4*;UOTXj#X~Kb$ z52KmC@S5jjp=dX+`7SAF1!bm$r~1dta;e zRt_(R@Dvm*0_s35!6(?k!$a^du5_l&;Qu%tm~)|WC}d=qt?$2y{XWYtzsWoEOQ+vj zmR`PmdFI4b8~7xn%ctc>mwTH7oNnoFuENXiM=c8|ZuQMXE;Z;tbjY2oYgM~v>hms*-8ssc7JwXbTL_P4dJIZXvDivtr!4H?E-hlpOz9#>`qNh)+k?5r4flBHefZ zBM(G1x0~I<*=uH5Tl^l6ns7V<5e-E7LdS-)Q0lFNukyNbA5`op&Po*`B{PTzU0`~2;T1gnew zR-JoK#-!3`B~MfxjmtL7*Rm@i3}W5JlzRq7AakguYr<>9imDXDr5|@*Q$3uLXEDQq z(27IJfj@42zW?oN>PI7Zp8bp+`5P!e9JC5u0k@4i_wiY9$y*Wi zz-GE+vm0DEmjk=wpwo5=(Vh}@FLuUyzOUXwzaX0yk~1k+A?693q5w}s<|k}%Xt)Meb!5RR`<|dJ$6BQ$EXHuy`!*+w}D2 zQw4g@PcgbYx9p}BE~O746e8}b%S4x5=@)$VOz_jN;}G{YKF-ViV!v4AOVh9G4D$MC z>^sKlQ&*$dzzs^6Y&O=zTf|`r^0c~98ut1F9v?;zoXVoEl02AWo@y5_t2$cLXlqHubNJ?+*HnqrsS zH7l1m6{NWo7V25lE2X9P^f(>iTV0mVW*fJql8FPa zZ7JKro%M1Tb<|30?KYOxIxJi3y=F(m5UNqv35%r<-J5Ru)>afvWigiz1QI;|8VyOX z9sHggY5!lVvpIJD|OK9y<4Sa*cs8P>$fb ze`zT%Hbn*8u#ptY5BkP_NZou*=!*Cjk8`8D>(B0{s_Onm33hD9lX88QiH3)qB7Z>4 z-A3*~3`q2XOMRU7>!Si9_>*h*M@2Om-`MISER&Rov!Xq*Rqb=wM`QgWmw*Eh55&0R zcS`21r+alPwuy{$++Se8wp2FJBQ^0Fl^u*#LE-8OwFXCu%a;AiVM4HpB0qlm9dv* zdq{uLly~JSxhjjz?R)b;)}0omDTK`Dy%xnE2&UfyDhgAm^MR3jM`u6fYn6+AUFNRt zXhrCVE{2$0VY!mOER~<7C(HFUqvHMaBSnrN`wLz3mO{|R&yVviqq3uIgrx4ycmB%K z9?%=gMm`-`cVU%Zd-bfxr^bR$#Q5&}W!`PTUweLY)h$M*jJUodsqT87JcYuWhP~PI z!-bd(uU{M+@$YP27Ch={&XmYhH79`dpTE?r= z-;T0?vTEFaDwa-Unu8neng*+7SbL8m{D|^Wgys3R_3T7(5Pn*5>+y*wRiCyzWz%fk z)Dd-pwVX&-o!W&XaV@4@5}mIae`P=fIJh)_;}`k>aR0l$Gk~LNKyev`-``JUV5h+P2{;*ZI7U@99M^1Y|-Bk$84#l7hhz7#~|ZaH5r7M zsCf=gw}uZlj9?@%p+sEehY^$oPl2!(ZOvpO-7CiM{O)36JHq(6h_G>Pp7rHC)#*ph zBkMoNG3%p(L((6%(RooTCs;YeiiyrCdxK;lEx}Y>2&K-Hgl`s~ahTYimYw;7|NR{I zckkDrn_+qsWBT$WMuKvmY_6uteXp}tNEXr{4z~H31pZJdY7Sp6J#hUo3~qh2nw#WM z3Gat|!LHni99(H=L5#`WyjUR0k(!0-T!;>5{L)4|j@4hOqxDY{udVZX3&2@Yd}B%s%UB-^-~u-IzvdlXQMgEysrVdaMeYr-DNes^9FU2_XH{<#|h-}}@EaahFf zZoIm`l90IO!$UPFzdG+;7y|Kn)=x0sBOXf8w zdM^;IUmVJNYcTi4#oD1tpF%hJ$(}v?wedMqYWADmF(Hu@2>Bl5%{j%{o0OZ*^$f~f zqYp*RW`8kDc&90S%kq~GlsEJ*8xA{on?SQwZDQ1~08~G0etlQeU#C0(G&5l`Fq+aQ za_NhrOOJ>>pP*m*HGRAsrA}hyF3V%UZ!w?|Wk5=my2n8q$jzaujCbopize=!Ny z5Ab0&D*cV`?jWmH{#eRu;BpIgr4T;qnyu~-Ckn1Q44A^*3i^1S`}#E9N}8CQL`6(e zg&EVL`~#fr!sVrPAj~fi)~HMhgso~^66{@cr-4JM;37i$MfendfLUm{MlKmsJ_dy2 zqcVYWx_$Q9gRG)nlk24jXmi9hq^&=6Cfi7yV z21{Ri^d)B;R1;B6oTH>5n@ZU} zvDO&DCCBJ*Ga;*zkf&~%hxbX1lmM0FW8m}YRT@>_cnOAH=OBO2E$L z`H$1xTu<#@JthNZYhJh`N)m~YGw9%11n@^O%P8ZWpODYUS&*fa9Ab1QC<)?qjH@HN zbpEA=WUXNq9nNPb_YwkQ)@Y)bBl8kq?j5P{> z+H_uxGM*U5+^w&>GIq#^{AtGm0U^>t%$oT>Uy{K~1&AWt58KyX&bHNC>pU z`VpsA2*0`V(%2#Gne`(QouA#}o;IxONH~!PY%5FB?SnjBTBX+JM$)cDKbjr+^mD>? zIe;|Z{QPL$xn_N$P zvMbtBHPl%KO9MUsV+`ZZQ!^$f)oG?`;G3C_t%zgKj}Rgh3raJ>7OLKTtUZMK@uqFA zBF5EDrmc;x+9tFs9hgT`Yg$EI<*iL$_gll5s@6|q3_$YI@NLMb;ML6s^JVbSyPgKy ziY*^g{kLmcP{DccAKfBM_uQw1VOSZS_r*lVE3zDaKg|vl6+*Q)HMq9ur8{4jMeJm> zTYwD+(+Zt-loGdY=Vn|Uzsy~q`wsVC_a&2SC{ufTK)l#Ta)oe3rGb0MyY-euGLi5b$w6kggdHmI=G(RG?JP@)9^ZW& zr>0Tw!GlcQrekq!5YW(Z^ywu(v8fR?5 zkv+1#L{TH#CuO1Vz8dK$EU&zeHAQBzz<;Ll^UJtdH6k+fG$0TUb^ znV+JQAeamv6HOh4&N51g@2WOQ6!ms=HHSv?ay{Z{K=Ud6JZjkGY*Kh==z8uT2;$v> z#81V*R}YQV{!QGg_yvVvT4aqgyJ=W5k@c5U>TBYD+I z?e|!v7{|HoCV?U?xT5QvnWhK`1GdB7;H&PNe`{S(vR=|zA0hK$MP<-cW2eO6fmk=ysjC z>wmG5e3RhtBvt?A?Ua*PU?_RHYCXnK&$m)Bk!-X~Z#)9QK)W}u65GgM5CalX;kk-9 z9noWSN)8cs{oziyPv)fBjqb2*%Lmq!*c7Narn7=lIa&6l#34@}_x6%NDQ{MSqxZe@ z7Mq}>1pQ+~R6qrBFh**}4k*fK4Q5i}`|Rq_%DL?|gQ%jse)?0*J><-m;)%~FdlJTA zmtb*pNgV7+)Ap*n2H_9s$~XYSwCy_3P0_F={kzA6>!m=4Y8CbiHN9Imr!h!$|tF-kDPlz$E6 zz|ISw(Y|4tt8Z6dVv>X%xA+PBCIM7dZYSc5 z@=!#hZ@kBU4vSoueOQW2VLf5c_vU>rRjL3|cVB6`BRP_XvA6HFoc+fw!^^OIo-wn2 zyZfaP%C@7xZkz+yF_US3;Ci>R%Uh04BfmZg)AsA$L-SKAhOC#6s)W2XzeP-PZ7%V* zXK7W%%WxocTmPMugPk!~4$d%|S^6uV;KQ56JbhOKv#e@M-Kuf@Z$#doD_|_x5-hbN zyV7Ml_Chg;E07tVf}$EnE5hNAlj@lfkkB;ZdsNvTE#W-s0X$AhhSHk1qad?rMt)Fn z|5ls4$=2xU&{(svy@CpumCwEm9U!$9yQ5qeTCk3IV~3NDTztA>^5tdCOKJ)S4Q*yTe_F4#aU zZgu~SXvl1caK7Vw{}?rEgU9T0f~A@&g|I@AmRaNtjG$&*J!vGI^?gM{8cX-F7UNuf z0M3{YM-2k?ep~xbrb%ffgORbp=%8nFi3~!oU=&E6rKGT}%+-VZV8^L+oz4_G_YUJ; z$<*7o)0+KLhVJhoo*qx)XV2SNrcuN21Y$EF?5ofPDI4{Sb-)0xCXB|NB;(2sK}FTI z_J$c_ty52hQ>(Ani^50IFCK?OaPwVgTUyCFC&YsVbkwXuq#vz;CP#WB!!{>E>f~M zc>^z13V=90@am@T!NqNbmJZ59Z~53f6DEM-9W4t8S2v6@#jtR z=g8(PK) zQtPWv&uk=EfQ>~gadNre;f>I<3>Mz#!ueNw_;s1Q)gcx4jxTewqMDxw|WbH3=Ob&Pn9z|`{&ZDZoT1n1mW+HJCK$r6&SMb)90clu?3BhyM zn1NAsth|#`@6);cUs7Xy=+oq`f|o9gW6|n{eMywI32l1~8(>2$vyDFK9LhY|vaPY5!%Os`0c9iF(6jVO*XsH9|4s;m213tZP$ zcaaY@N)aJ<62DTM`jGP|4;e+Nj%JF-+{de3SGzR?*8G}MU^OL; z5_M3eQO!v_SQEXbC=0($7_8GMBj*^0@dW->aswhf3#RiaK?K{bJ2Q>1(mL{W%140V zr+`l@n70i=C zL=}Qeg7VZ26)DQHElDZxvvS<4NWLzcZUc8C$=V+o5+bhQXEV^pQdMIZwy;gqy|mkZ z?XF22gFB@~XVza|e|7^Ee65xmU#cAE;P;L^VvjTVfbB|iAn507sP)vwvWu?_T#epv zOxTO^uPQwv&qofO)M;iW3CTFnbp-xZ6J5N^4toKvl^Q9iI41vqj@2nv`$cBm)lv*XEk>t@Z%)zFZA{75wyFy z;SsJYxs@y_T=xUChK`7hVF^G4>lcNr6+nbvpCJ?6i@Wm~^4h#zN@?|7m3P9u5C4o> ziOW1bpHqMN&h4IgS_F+`j1CHD82@M}psCQiDUqkU8_Y$`$ehNjwIq&e5Z}e~`S7^~ ziB9Y;YAbK}gs)viTbr_sRWI3Gz)7L>&l3u>=c=Ox4W5XjK99$%R2hjTJ+aDb_gasP zu?cAwRI42MQac(v!0>4V7@f|^v%(}74!M8P3eJd=0Q}VW4!)rdNaI5T(|_ zz5Cb;=~)|g<)=W@_ENF3!~AL$Wtk(LGcqh-0F;Fof;tZx5!|ks5^m!JZ;K+nTCLb( zK9XY@(o+%6D6XF>BhOA^a#TI>+i3C-u8{=B z)Dcs5_CMZ>ccz%!J>N*G=N1Sp`_&8XPy$X@h=_aQ=g6K!B}M9HbPt3z*?7g!XP?0h7*@#ZNE7 zff}%r6Qn`^d+v1WGgJxUCmrhQ)sFiQGkCwQAAZ_GypbjHAb@KzZHm3h%S}=4Iurn`fzW{*=$`Da*eyYT8 zm_IMRa0ezn$_McmcHiB-OAGw7CJ=h1+-$w4t|+z9{pMS)Syr!7<@_N2`8V@~@z>93 z=*p2|BGK5FzvZH7kEE0RnW`?BvGBc>ABW{d&;nS-9X%!E*jNyLCk2N5QE!vP{g-P? z^61WCf{Rkw2U8T;W*eS!uJr>#yVIl>t_%`K7y)(4^o~xPpk<%tjNXv7Cvm>wUD>g# zZb^@So^M>yN&awd`RYP=a#&P&o(eX_l&qLq$eO{S!MuXihIMsyVM7_6$J4mscHtP+ z4JAURh{ho#KlSx_fusF~C|_wMoZgSPqBPW6j3AS8p9sgp-w8^W2}WS&h1C8{RMEsi zejcM47AHx+W$nK8>6L`TpRx1Owua4(=U4(10^BXnnUOzUSJUg?&P!so6(v;^TxSEhw`Hmru?k&?PbR6WAG17rt6_c`hw!pbh;MKIb6* zS^0NwW`<(y^bRtp90&G}iu`Lsjsi;`@&Z#hSCvUrgXn0vkk|*@M!d3*IDH&(2F$uG zxKTzKwMtJ{E9yla0r{=QvAq@9yjhmlx?VoK+Ks9E?gtB>*_il=3aaLzP3e}*9u@o% z&Wk1_Dgws)TB2UdiT5c| zF5bZ;AZ(`T#4Yt&_Z|x82tXX8tVlXb%Lx__^OA6)8j@|?JL zpC}xJ#C;MQV-;y6c~5ZBC@c6L%pW$P*X&<;(d^+6`U%0L>~(?y*N!UBuK99>Lid7+3pa&Cc_mU zzd`&1cQn28p^E2wo`+NR8bmAu>X@*1g6g?V0k%;?)P_Uz`9k$qd^dew_>A+H_{--p z&R2ldWV?wk1UEu_as0oy2Jt&G*d^Qt8l87;jG5_o<^6XaFv(ZNl!$8Aej4TDx-))V z2jVQo1=q;7T3NrFXPPzwonEE~Ae>l6RS-(kLJAFPzR`jc!&%ub?qQNS7tTK-Eeuv? zsjO-KOo@82e532L$L)o=8hVh=``Of*!)4dN$Roy=Fa9oNY9HKe_n6UIy!}zfo@ux# zKJ460@2kSq_+%nK$~3{4SG3Q6-CD#J>UeF7Lsk*AQm!sbG}shYqwFS43|3 zat+VRs+iSC-k33xx}ABcpm%8MNuvQXAA7L2^=qTmOzXApjMtOb2QOdJbQ!RH_FQ!* zQ~Bm*yAqTd=!P`aW&yrlf0T*PD;)eni9C;NQdnJ6&2AoN&wmLUV|sM>{?2MR8_4JT zNL?17<(Y9#Nzi%tJc9eX*fV#)XYZr@Q8u$<@Qf89?CSG0lxl78eSD?Kw{g!OK?HF0 zNBlHmrONte*@NNPzD{CMQ73M6Ov8cTM|*Lm85T}3c&klr?3vBP&^d3T9+l-{9S9CZ zmbWZFe0)VyWQX&0&qQJyL+%RqtGMCp)0wx^VT`$>=+@N{W6QlsuNC<=y-9kfYzS_2 z3X|R4P{I5*ZYg6@d31IZqKS#1ANWCeh~u!s=yTz>K^T3KOnK`zs3PMi9#_ud)CYA> z--v}0Bn&Gu1fQzGMTWCNRvSeU$RqsGgV|sS8`;btQb%N6%2Zv(hycz2_Cg#MAacQA zqkOI9rOW*ltF#)5QIsW`_$^ZQZG~KkJ2i!b$x#ED5kM>^_tWCLDAU||JD{4JkE+q} z1`8)6`LnpI@2?5H#C3RRJLvrbf2(lgd?AciFN94Qq{=Tr);z8#(#WE|;zB0iTf zBe#*~w)jxlDEAt~wi$oznujm4Of<w9^p(3G5^3 zU$zCJn!)5x7~cahTg+a_+m=`B8wIb>Lnb@~UaAgTQyQi`=3ufeya%Wb8>C|+uD5ud zbnN$=k|JKsp+Z`IqNX2xrj;^pomV@1WytD?dAoDfmW!7A72o|cV@>XhelIXFw02MK zuF?GXaoH$4P=G^oy5ut7(XY>S(~VDFk9|A6^*v~>sP}1^DZ`6BrS{JQmjfke=edak zEjJU`%An54_gJan9^(=gpQ*VH$2z(z3pKEtwO9MAem9QPxjovJq1q{}^SDs-y1$xc z!j(*L!}8FFeSDmfz!L)=u2A{0fpZ8YnCrc43{6_|S_}je^RgfM%lZMv1OG9~su$UQ z11ZDhO^xt;56-o|^yE?RlY6b~X@I>*PcM^PJ8}jjsI#BXlCn~|J}=E!M+FmXt#pha z;(>R_;)F;2zTS8mi3jB-?-Vw9;6R{jY9o8kksoZ!VdFPmuWB9jrf$45gE#9cpEgDv z@91YIAVnFj?v;WUi%P7P*GeP$4G^pLlf-XL4PLF2wyf`n3wJMt9yk$pkAYtIUVZY^ z4$f!W=6;ohh?lrfaI;99|2Ujjte>p?-G$zdoW*RyF>+4@`B%nIssLKR;hVf=D6)Z1*N{Vl4p- zMP7&siW%HB(KOF&BcD=!DnW4v?s*Mr!*>i{YJWhi-=}1i9xHG#vw$3WN`s4thunIZ zZjRRQ32Sn+QI%?1Rl+gatE~5SV`0g2f*r+vaoxmgz2=nDS=fTamhpR!4Tg~<+)gzy z<<}0KmS);)!px{vU1-*vt4?dAILx%Zsf%*@G%5(oU!6RvQ!BbzN0~dZy4qg1QB{P?)CYPCnGE=NPC)&J3@BX3pQ zhkDI22eK3VzzQKZ0%mQfl|;nZoYmo4?fce5)fB?7


Uf;$lg?+{J7^tv_clRgUL`PUY)kpu(RPR{9vO6dGo<|ZB(^@kHq7q zw{kL;y)otkmr>IhE{fOTdc{_&Ul=N|?-;Xnm&q|F&us>(#)IYt#>;*TZTvY8cL`^)Lp)Jv8q754-=ICS# z2(t;FtsoSNRz%m;yLV?G^rFh#=e36Cdr!-WxT$qpm8G=mk?Dhkx))E+C6!H!U5Csq zn6EOuSQEX-58@u59#su?PZn~?Y+BP1)vr<<;RTVCb-q~7p_1x`eLWt0zek}_=16Ta zAZ0HZ(t$f8rD3iyZ@5P3fP=h$v2xyX#hfV+*U|V+U$s%lF>rrXUb|i<_n{rdm=Yqt zv&cs;1ls*3t+I9FxwD`9I*DlBX0C(;w@j_E3eot&9?q_l}@9AB93Y|c1Zmy|MRHMnehXe3P?U}0O+ff zc1$&UeF&T`R&F;>$dG+8iwKZ|J2x72ozSq$Ws{g z=E<|=xnkN2(Q~0}o%`zYG>DY_MM{r%2kH6gr&=2~SHU{<$#ISkSGoq7T3J1v)0(2(ef#|Ni~r^q`CdEF84mSzlREK#sdE`mPd_Mewi@-US^Bc zybqJ(?>=Vq789+J^H!*a>5iqG1Ty4;JPW;ntl{O6g)C+TD9OO^!kvD3u<6wt$KI{U zH@V7(%nB2&(NrsrLbg161HeMWGX)ygbm05>-A)frGwrtK=kINI!E;Z(!1YLTY zrJGGNO5?<3+wofp_N$Rqq12-nWuz2?Y4H;}R{iMZi+ZECKfx+KMB z;TP?dbb2lfXwYEhs&_i*k~Hja*ad$d{>qj-e4(>SezaKD>4`NttA00=F6yxbtyK7A zz-YgvP}T9|HH$oAFfH;JOnhHNOebF{!(z0kxq@H+k`SvZ90k98CWv8Em7nOquc_~ENm#Sj_|@nD*YL^h??je%$5h&b29Ke(#?zGPu{(noT-K6Ml7sA=65`!#uK zRRt&HWiR0=eSQUfqesugd;6%_QCG(Dn*a$(NNYK45h z$z|tNIwTt4nk*&Rz(4jw*$F;fW9@lH2_j_&UNn*k8~S8a4cY->itQxxwFDbTp}|;7IiO9JxoU3 zr2OLd9gx6^!2g(#nYm6tHDuSv4;GKqmEpaci0LKQQ@p#hbL>N&aj7;!MWDZw?`rGY=xfXlTo8bN4{^DYCi2 zVxs5$evnIqy9q>3Qu1l?AwPF)xU+!SvUAPk5ONlAAY2z&j{kOZ#Ij6cPf)rEm4?#K zyq`A={i$1(PJQ6>GN_xsrC~BU+w5+ft}ucJ6k)-9?JK!C8T7fr0b@H(wVHd5)HOZo z7@?wt5zUC>MT~?Aw)_-IqKhaCwga+(Eo=6lq+tx;LoLMi97C%2D$`R z_32y$MHEC#5u-wv(iJY4E`6xB7^zSEyWR7Lg~F|xX8T}0u72R*@Zr-UCQCk=1AZ+d zOl&soxH^lSl;1n-!}v~RtDrfpW!dM=Rbl%ntl}$bD79ZBGEUDT%cKfdgrst~)INvp zZ%P3ecDXQ)>9Xc=GP=$&#@M1S%W~c3o!9BMSH&Q2`Dlh#CMCBEP2m?+htm}2Klb$` zd`&0%N)Y;zb+j)8RP^Tpu(;X+UtqU>&bW?SAF!L6+f;sduJ?92M{o9p-cg{LR)b|v z7cOw{Xs>3a!?iV*?Lof*>!XxK?HCn+P_m?KJY#o&`wVD)b!WRw zv(Vq;$tb#}W_7+&ackL0@-Y4%5-ww>!rm@cvIYKo3?K0i2*D#Pi z1}mFzU`Z?SM!wImVilt8R=^RO`4x7JhS8M}0l}pU!p4+kK5e<&y>qM_V1uRVTZ*>` zRul)_Z4~heB<%zTRkY~MfZ(i12GJVkGuToVW@Y?Ps=9V38&k%kc@*QE!(oqqQV40X z`H#&@cLe+Wrx!lHrJ4Am3c z=vhh_N(Y#QI2FV|eYK-K0|LD$TRTx+7{n|n;GHHc4J9>xeP6mN;H$aH9@<39i}E6u zj6RjV|I*{iQ|=(UH1nkZ?)3iE%V^!1SmJMs>>6T`TS(n?TN3ybF@~5y!S3hi!HIhS!O#Fe)@x!Znc% z_yy3ST32on)>1jLiw8ixDx;~UHpRNuGe`S)=-ECMlZnRGxLJ`R5NGIF5DueMe)-s< znKKK-K21(}>Y95QL`i&`i1Kwe0gcw(KcawBiA6hSBueN{U(%99!K+PozyHL$l6L3# zpS=6<;OhlL@VspEoQPOwLNb85a(?W({J`dr`ly?et*_F*;{-r3dwTNGt0-_Oe7qO-1a~BY11%sM>XS(w0)O^lg%4$!mk-5 z=TT0K#X!vg>kqXhXV2JoEzKYNz#>=pg!olU%RjBZcEtheS%2HtrztVqWl$pXHFX^! zZPgaNE3!G=zLd(`W^rb4{;IaDfAyo{_mSL-k)FErkQe?rP0pUzwL~KtHSQ`AwK?Q^ z(=C4ub;9o5nVT|Z-K;hGZ3-XyE0S<$J?(9DrhXV-PB*WtzGtk*ul6UsBPmAk^z)EA z*Sdq_lLl?G^ufGSFr&{mr{nJ%_;VOCI`_2z&%u|k?w;#*uemM254udu#U>hXLvD2k==4eV zipD?3WC-m*R;Yf7X?@E^syWEu#&Bsrhx(@xD8{#{#o*<1isJF4kbPFlsX}_TvqOd9 zhIiJc;Danwp%jJY?f0X+xQ*_2k(RZvWa?um_2QAPK4}ij;!N zlr3+xugrVAJEFp2l^ z?m?pk-4dIcd2gpy?>@Mf^BoH>Ls(u%Musf@L~@%@=uKXqc_3`J1n)3hG{vm7ZzJ{* z!*v3H?Pb5;??)la_Gda-PYBs$CXj3-=Uk91qEY4c90Kb=Dt4?QrFO3ARA(dV5LqZv zUHYZby5CpJTTr**Hu4h0%3{ugObZgP9MY$9whadft8*(jMPrk3V=ex}pN$Gi{y(0+ zJD%$J`~O~BW)!lnkgLp)%~dLtRf^1uh>*QqE-KP6LNYH=lyS{$*UDZIviF|Xyw@G? z-|h4H{yzWRKknmkANTb->-9X(^E_84J^~l!&H^5id#E&3Eb#ZE>))*a7Z=R{5#(2N zA@&{V4@|=Sqr{sAWAS40>B;yOs{8~CrQ&4Ae+S;~eQ(sU^-8D`$vu18>E6d5vK zUK>7RJ5GWHG?J#iewV}kdars}u^Sbm6j_Wc27K&QcToDn>dA1)m>H|E+!6A2gL0Ay zQU6=_t+qiN6Yvw0wDoFGqrt@|{3CMJ2(R@eP$o&oK=@7DuG!F= zL0}SO=AR|T0_A6MEzb1lHgs~={OS}=pp@VPcn#$wCnN9P$UGWq`@Kd2`x1*5wPg-l z*$;Ji7rDP(UsZw|NIHDgLp)S5{*<_5YRDhR;UZKg-_im_=zZ`s^T9LQIp6O!qK%Qf zOkbCFLy1lM(&=lFbGYk~&1UkKF0Ldf@KW2~y3LvIP$)|kvxaJaGmcxsGMX4{a1|~7 z>ABJ^bhS^A$n)qoTjlvYQ(Im3rneqfM|=3O@(6@g@Nu{Y+76~V9TJuc_f^!cX0TpHt=MgJhiB*?Bs#WoU*L5#Nif7GLBbwt zeoAM*9-S?Q`i)ueK|m$j=?5!SI0ub1UsCX>hxaZ!YaEZF$DaOwEdUdPA!f~Ikk^(! z*&6PK9qY1|v}HF$qKXMt+)W+EDVSk3KcObK!pWXN4ZG`)MdHqs(70u4ZK%~)IiIL- zrFW7Sr*8lLAIlZ)RWV%83)WE&Q+#c>$BdtZOE;2MQ~CGYD_9Ef25p}?))SroF!f%T zaW}Gke7)~SJ|fX(HW%5;*|-{X*kyf&NIt{qfnRQYiH1srge75l&qYq&x-R#tIls4YUDfkpgUr5%i%I6HKSuE^HtHj zK9FdH7WAME`aFbWRI|cG+ImocETv#K3O+xOo+BmdiJj$?AKjqvbm$0g&*D@UoJxRJ zvu`H&@9*AxJfpwcJ$H=EA?r9m#exB+@U-vG({qW9WHW+MeJLr`szVHapWB3BL@ErR ze1+53#A8$f)<`l#KH@R!_8^#<4O7}wO&gfyeD^E5HnGPTM>-PYJ-_=q09CE2W zDDQ5O`w!EOATGMrJ7}qicfOY(_Mf6uwvnbkwR>fKV`302@WwoHVonwC9k??qEUICd zN}4Vr`N%XaoPSc;WfUxXyZTp2>6^}{vjq`-MWXg!A`-cP(m3n&mZSK0 zNL}? z#>g6gvnfe1l_x)Nxf!hUUh#VNf^J5G%TOB3_xAGz-ge>vy}^jG?bQkzMkDvu55H9y z_f~JDsZSX8HFkt(EP1dR+b@XoG2Y0cS+KBi=!vjNV?1q-t3!il9x=aqwnQ)dH^hGU zG>U$v&Z>!zo%fo}le_*Q>+$+)k*~A+6~~XmOc=AFVS#r!%aacF4mj7i9v&IVu@2u> z=lC|ya8AZxl_Db{QPzt6k@u5k;_~nc6dm^9y=(73Xz$+nriWy8YBcd`vH0R=MOg#j zJJJAfdC>PG^tJTsbB}q@e<(b2q_5-z$Q=I0q?5wz!T0x?^ZWALpfmYa%)KhPOh*0y z+O0ZZpD@>SNw>g3`XabZOb_fJUnqOHXa52`EcPR6KAo+u_=@3y(=T6BK)M%r-0I;N z)*k)Z6h)G*KZaMC-b_Dd<8)v~fZjZcBVJWL&K4hoNe}Z#p`?R07R8UT*J41GfMp{C z@m3%f_v;B(_y>Qt!6@=+n=*gpiBjSmSycwEO?E-9i{z;p3 z`yrzy-Vrm7w0v+jdW3xKK|-C)QL->5s1SJEGu*&yR9Jf}>@Q`13z7g_?6XL=rN(dY zwXE;JMh8Ay3GvB^BbJpot6MNanC@+)fY0)39+0TC7y^hCuk(>k$xboE6HM#fu(Mos zRk~HL@p#qflxxj(s~C#n!M!gVb7UJQ6}ujW1sCL%-jr4u{O^}_siT1u?^a#0~(0suRcTc!wdA2w%y!80v8Xdl*`>~0_uUN(weoF zyp22Jha4?c)c3@c`uKv}vL15vx{mPBXxj0rWc5C${LSI0=eMKSqZ>-PuQo-U`=i?# z|LuJ{^zp0WC)E72_B@e7l^vfsFHJ&IwJyW=W0;!gm}})8v`*YC-wz^&hhRfBE78l( z9-G-vNwe(twZ&QVG)C#|-*_ZP!*^q$)Ak&YwE1^#kVQ@3{h6kzG`LVWYtVH<>C4k z@Oq-U5Xy;_?LB5j^)($8_M+`r%*sFKJ&PgQVVEzEg2S77Pq@*I5eh-MaM{pK;966Erf+|F8f# zJP9CENfeICdJJE|tLh&>G3or|u?K+MMy^}Fz3H7=b_7d?-5Uef7a*A?@&pS$db3~5 z^fV!7kYH!9g#QpQ9|3JOep7)F!>l2|BkHtJnrF9ffbl6GyUmS|=2 zC8-KGrjPx)hfKrT7wHUff_PDVOhiO?BACh-nD!|C%o zj7JmcZsXUE_io{}4?YsRMyF5*276M@E92OZnSR`TU~eF|mUz{HMs2ZB!b0*$`vqZrq`R<}Z|*^e>g%4H9MMq*=ygJJJn%!&(OYkphrj?H@ha!p_RTgsH`aUAIKOQfO` z`CF>ag8u5qMtd(}Gso&mdG50EH#iBgz901FHAc-o)d4S5InH@jbcs+K9UND_S|Zh0 zYCSE;2ys?@BCe;ty;x{EGf&4%Ur8>|%J2xBQXT3>&nhh^_ukJGB>!R;ru8!9vb~UC zO0U>QkABZ|xN5}8UuOU0s@5fqO=y(ogKn+u%~ISVe%ppw%QqwBGGofxyv|m9vKc>5 zCbsFGHiN1&_4lY+RkpbGVNZr}Lokcn*Ei2aotNJ?1VYRmbq3tyE&Vw)@0Cy1aJ<~R z;I{Jk&u2C(C!sZXXLVn@S?MrxLF94=RTaZaeGMI(1|aXw`n)U8^U@zW(oZD=>5TEo z)(vt`8f96YIE?XpFaEF?B4sr1d|Us_%&7;huNC7#<|K;2?giQ*7{v20d_jITyo7%M z?Tr-Qgqt$An1w+-r5Bx!KkQ3m&f?A=eZejWoyjy#aQQJ2Su}kW-Y{XdDAnz;(aY+i z&ExYBmYcVa6-oJ;+KLfZ-!xy)3=YS}qEsD%rEi~JF}co_PA(2;x?QwC`c>=IRak?i z-19tpbG()JCnFC|Xp?s3jIWMkfz7MhIgr>iKhmL?Cs`UmoR<|Z|VTt4sU>w%Si?1JnuBycMwwVzT{Un_CVf4{?G)jDQE zfL?u7NL(?un0`4$p>w*lh=eBXU`AnniEGu}wm)ou9}5bI=LW}Yg}@2WlPZ~a9Vi1-evNy* zcH2bZ#Mip=|H1L4qGwbTX5~S{6LLOIyn-T)qHu;3YK~s(LKzo`SE$M>!79$2@NjqJ zCgu#u(5MB3T*Dk&T+VE-u>#_7hi9-(^nuyjJiGvj{}{P~mNZL(U1|3i#e4@Sab-(T zwW}Ajw!-!p83M=zFVjPJ=GOlp2e_WPj$e9e0yyu@6S|V3&*F&dt-P^{?jxt-DAudjXrna9BPzWP%F_4YPSZ9EHLqj0~L6W3@c zQdaX@Kftc56u_*>owo+aiJmQ+lLQo^$dI)UM33)MWZ&OYlVA3Fh|5DuNe&?}Lv&$n z;GEMMHi{A2Yz?L#_INWgkNq0Xt7|?3l}z6ar3sJFRQMngH}DNM+{H?zD-&3V8BmRQ z|5~7W{aHPRq>lgTdt{zq*DN<36ZwJqe9$zDkTqpohxKsrTK>ZISZ@wa!J2-pK?6G# zPvwOct&b_3_g?xA&qFY()y$8q#-U%CDITwUrbrzU-;T!-Os0@Lj@5$x zCc``BUs3^EZh%qe>=`mtW7WZ1neK1n7J1k6(J`K%{0$pz_Qz@QS6LLcv+VKdaGO`= z)O+N>c+k?PPEGRYt4}{8)x?+E%Z&4r3YjII{Sb*GRAK2AnNVK86XX+5R5xA_KZrj| z^tf{)RQEbd(TCq1bG*QMMWqA>e7t)&>c*8*WlD^Rl*hAZMd6v2P(gJ>LrI(|G_|$> zDS0`pWC*a(|9*jtAdd1gw22GL*uS#l78Qo^3@ca~XnA%^NqXL#FecM4SF00n=!*%N zSFR!hppWp;j*MPO#Lk1gz2hg6f2rSuPmGpNhjOIB8YX3c-9$(zZY|M^$j6IQb`L=%t-0ywdGIJ+N4XM6f^LRp2)q zGiVw_r-#}ZE9vWzp%`-Pc$FWR=R8>_;@zx;dbO zzaVWnDgb&{7R`@%`R-2hrSzzZILyZ1caZw*rNNFlY2+rv*J>l658laMfW<6Bt=dEn z-l3bbyCE&B4`g}H?>!^BcKxYTWoN(5u0k6}o zsSsIlyGaV>#~vGmYnpJnH;Fs9Zy9i0kV1GR@QC{IX7XfZLy7?7b^t3cZ4n*F^VK~_e*KM><5D)-+1^=H`UIcf2oy|70K7!{z>yll-jYWQ`%!8y&^Sxh3SA_VWkr+ z$$6n&C4JVO(#CTXd^&XNdI#}D=#ps6(;;8EUzdF4JPq?0aaZ~_0^<4UtPN!UdN|R~ zRjyuE?pC3NoAYQ@+!In6RoNdM7y=5Arqq*60Pa6wCl?S{8dM<52~KJJ30H+61&joc zscyCsBrd2alG{YQO`+|D8V?}Qt1>*QdY3aLljfmVssHWIkzN|2Ro`pIK7~8?TEDsk zNW4;h+7~ytgM;t64GDfUwdL4*3X*ooi=!UyoTF@7jP`%xLYn)ybN+_;&B$(Y={r%* z*czrQRDC;f(nx>Pcu8Cjo9U6ZRu|`|6yVZ$pn{$tr-*)SFi`J#S-UHh%uQc?t<-{( z_z_-a4;XWG0p{EN5F2YaX$J~Z@Tbjg^g^&G*b4lUTDbo$B4oFAZBhw2<$(|5!UO7t z8>jny>hJoLkCe*^8YSwX-n-^2;~V``L@(pRD5UVxo257Iz5_AidI2|PtU>-mSxN)( zBMSuermU(5qRT}--$e}h@#T&%!Mx|$$qFZZ6<&YyG1plF7J{ zo=(rD_FEly2AoSe3ZwQa(pbGyZ?mJ`9|uxd{a$>j>)9AT7?HrYu4-F*wiliv_4Yu| z#;G*98!RoS_U5LNOz={MHU0iXc8!o=R^wXAgclulok^32kH8upfsTzL|6hLj&qa?T ziK7>WY?_B-GUMercf%T6&^$HN#_7%4658oqSd1FSXNJGG^u<5xSO~@f(+>2l7nhJ3 zyS1d7yikV9>j&z{{Txojq8MT%25n%X^MyCe4H`If`SkjLN?0R%dB>belVaL&Y42VN z3r|jA$Xk+p8yk56W zxYnk)i)$XD)^@$V_`R)Y9dHOYd|@*my;ckTfJda0FW1xR_kKc%u?zLyi2bp_lcC5e zI$i%#D_T0&l@ z^(lj{na%R=PMQqmuDGMTo8{`9Y%D>iS0aOM#y2D=R!p;MCPd4^<({gpxA0Oko%v+b z77jq&<5#Do1z!dKaow`PqS! z5_qDVT9{6l_|cFci)wx~=Z?I>K9fZHDhPfQmc==beHZ6*T%C%;g<$pmGY8wx2UN`}O|M-CnPI$= z4w;dy4CB`aeyEdjSZkmAZpZ9R9r~>kPKd>Y`*{KU`y}wUe#O9GYqPyyVhR!)4vT^a zda?D%g#$k3woOg&vR$dJ`jI+;8tp%w8YtAr8rqt3hubERd!Cx3acqs@rc=D_KzKyQ zQCBZK%Ok+S)7TiA_kC?!pg=$Qy!_Jb4?+>K+OgO8ALy=ugry$JhyURVx>TRN)hvQB zPkl_1DUbH$BOc(&Fzs9)UpYcAHf1kl5*Od)95JC@3+2Gw4i103h4wbRIiI+D$nyi> z<`h95qJWB1;N$i`f?Ht@_{Rjr1<8QxyapQvfGv%LBEe30dh=1Z6RoDix-!YD!^^#P zu675-s#3VEyj_x%A~Hx5!P*!L!)l&FI@2o#8V&0$Ni!F112yBuN7j|6x;eABu^R>H zVs>E{n_DK7_cIwhJ!RRrcR9j&29$RLaj%sEf9OShNqn^2?V?Tq{CW?eu)O|u5LOmc zLQK9M-%X?H=h!!13Oz#rm!(x?YdX)w?A~&?fPaG@RIXj=e5R7j>6EH! z6vn$WMPC6|0;0bZ^fRY+6r)trN9I`58m3pf?%EZ}M#oq~Ur+bhEn5EiNDnLXa8FBf zse^HE^>U1<&0Y3k_EpgBu#u91U}N>I&yH0u}FA^N6I5Fb)+=gJ{OQo-VoVt^B>PlP2}_Wv&L;MoGY-H4+;95{x90y;Vl)T z%;(Sd4udl17CQyQjtD7Jzu*pE$pIUpgcDM5*<6syQdnKwz>_tYp{8MJY{L}R#|RLxv+{ zOa-rISDdJXU0?tC(tL1&JI?UJ-y9UdC^{{K=PKeB;yx*f`z*$XBQkbIgQ{*JOF+E6 z5A;>rsPHiB&0DCX_6A|iStx~|5=f$eu3yvQY*59>@9rxBxS+E zOrF5Brhx)WUNc_YGO$7wyFAc+AFL2=oiudl)6;*ME$oCs)_2@rkO=g=SVK{t8M!r* zQ_P|Pl8Lx9+S7j@rR$oodn$Yj~X&$IO)Ir%E^cJ$&=g{PGuy3CW~y<4TN?0ZA01R zUr67~dUaLfMAni6r+`}-&z`p$dGafLuKmEdH)Lm2s6CiU9N>JjB^2q+^) zeje$zGybW~;mMM&tIu;J{`38VY=x1P2h>uE&Qeb?dTl%ze%t8ndqN)DY6pv*@|Wg0 zJ|wd0%jr%{P}{6m|Gj6FkJ*L|QgxC=9$EUtvRyg2-;vd)$4HQW{&Fu>8Oof^LDnTM zP%vb(ECexuz~EhCOSuC0L+UZqKl9gPA>ydxh%F?0JZ684xHtU*QGzn;Wd!lBNey5Z zJgK4SB}Pz~Kfwb86Vxw3x9Uy2iZP`GMl1c zt9yI%yI=wP)~_o!Q1n7^nfBOR#`Pu8grDu&RqMDWc)T+)uBUTPWSmjt14cWA(Sf>XxmmXC1H44CTjY8*U4QC9S zV(+c>Nk13*9deMINYlrf?my2)VW;N% zB{b|$+n(=rn>BAj_AWg6MNYKh>#R{Q_{xdV@6x|5lqe%MU4po5-{yqW5@VM$ZxNx_ z95h2+AYauC!kL9_h{UO$m!-7Px&JgbSTxzTo)2<$nTHA@=1$#NdjS@D+^Iu4X6k4o z)89NMz)^r+V9+vpw4xBJHcK5JGW~P$er)oqc8cl<66mx8%zqgm3ZUXfa~kv~UWD_&h8Ir(-?T zHWL)!IBH$_PWMvr&Cvbc@g5E9`M@2?GETZ@-TouYm*!O;-_PH1E0Z9pWdzRgmF6w^ zQ#BL)H>VRySZsgZ6JyIT5X5Oynjjxel+GZ*dIYn$-#{$Z={=^69QgYr<Lc2shrUYP z2TLehp)~n0&*Z3xpI<*?N125F7*ZlXm2lC%S3ZF(gR;E;&{eyDt|uqCD=2aeW~RN3__HV9P{DBqI~sMPq2dSsI{NXloK1U{)-?qPO6 zu2`OuAHNrE1ly%)iA*(}o7{|*g%{=Xm;70qosRFiUDO2Q>{y)WR$G_{tnxdf#hjq- z0+|^?pwx8AgThE7w_N$#|G=UDGwh{8XQbo3Y_4Z@q_2M8luGJL4A!a!Fav&}QsG)V zFz!&E>`+8=V5iI8)^95Jn*9U=DBF_{Ypr^qIXxi*ljlq&J!Btn!36Sl#yp>NC;_l8 zZ{fz3QF>9{R2hF!dB>UHNkdL@aD;h%4R98QFF_I3Lm+Gq!9L>%`pUtijLTj@I0$!X3IA%RY4mON zWq`J4q7a)fmCfbRx+5$Yi8z@H0rvKfY) zEF3N&q_=;WA}mNcw#On7+xd{QK!$%4+|F9Au9R@?bUJeyp;S}?AycsuQJou@+>Ee{ z$ENevzvr+9^-?mYy}d-wq6*5y3{`tY&#oGnHKYkNzu6dzncDZ-_d7_{wf#1%_tJZ8 z#s;NB?TNE~eVPESRvCTOELP7l{Rwp^1j>w42{Ho(A^b73EZN#d7OL~q#L@dSwNQ$1 zLpU@0j{xxBt0sTH^;Z@*`uCTwj!4hW$3FX+Qixcj&3EhcFQcVAMMElsuJ_sMJ{%UYh0_U($b2tx*T^p8?v`Kpww`TS?VVMYKA9D zo3HkiN*1>sEm>_%KP@2K(ty$;PG(&N$Ugk;)w^3o^}ptnw(7qO%3$^BhFb6qjfP>S zTb60TmxLsay%za)8rqHWXOn}MnxUwAR(+$}{A6{45x?ZVI?U+k<;p;K5s_0+2bFSu z_g8?$m=1W|YNtzMvRk6A)0}?BW^qx;e8+bqawB7>E5}2J4~ime4m0MDTrr|!e7M&x z9A{l7^YXHpAg$*+;6LZ=Q3+Fh{Tq06!*Nl1o|DerK5}{fTT;G( z*$K*W*ZS=DHR3j6|$e@-0t8HV#njt46o)) z=J~zpOb~H~0$HWuGGY!@WkCAmoe34Z^{7z|ez3ojkCuV+X~i!Uw#>r{zV=ZKiJi5m zL!C4qEZ@!yeswzvUxQh2pgCO|`kQ(9u%%yRVK{1S=z#N;zP@sTtxgXc$$|f9^T&pk z*VxX5Lk+XD`)YS##kV{%ly`9}V$o68LhGt&);^T)s1DkzXoDINXBOt1A;gU=n-^Jf~Nzzb+;;P$d&CrqGe2iP-Mw zT3Y`E^ zZWPel(7uOhnSeVaqplnm9n^=y*QQ~u1EEcGQfEQAFbR^?xFM)|VJT@Vo^!RQUS|2w zD| zXh0#xZe#C?L$Fb-jSbYDQn;C1otBf^gzP;1S2w@^Z%7zD8?vETYGD`oUPPUG9!s~2 zrhoPxwdXtJwvN#xic9q*=js;iu+>(vtJ+7UIR19uKV)Ckh``0Z)mJZlgHV(s&M{DA z-MA@!;*3@1?s^O$*G^)4XPay~4}21plECA-a)H(V0@@;Y1_#BZ+PW@{AmB zfrWSPn-Eu~;6aTzcnG0d{dDbT^bYXW2k7WdefDeiF;d`Qn`+3bv-@NsEYrf}>V{rb@DRgJJa87#FqmucNOJgZ? z>lw|m=s3oj#Af#%_2XJiC>MiM`bgToRHltz-Sp7!U%(gnqk*;;7VP%D7iR2!K0NOme1Z@2;!c+>K$V9@fX^UO>pl8Ksz^)h&$hs_AD9!smx9yTXIoklURey?d*Mj(^} zpZ{DfZVI6kS;Sc6F`G20RN8b+3QEDA0DL#L=o)DB-?YfM0;0&!OCh>#95sdS*AX4M!fcMCxXq zmY=Gj22UsUz6)Ret7SH-k{?FMIGqWBRfi5#pw>=_O_-@%WYat{Gk;zPgvqR8e*)US zc=WBrWOcwaDC|DsH4RHqManf8b}#yikm9^(w&RNEe9!#6fFIc z@gaJht@43b^}2_p<`cv9I18i;Ns63{Lq`Cw)*KXGHBQe8vMaNOoRhiQ==}6b1XWIc zT}D)t@!bmK@q-1}if!%OypG_Q_qD=@Y-zc2cPR@rQyG@|mX(I)PY$bu_dODnI(S=n z872XdvH*?%=qkQwPajJ6yJ%doyh-KVmf|sRO2c=9tPF02mmrq*Saq&*zC| z*E&RsY<99VD_DbQ0GhG;N61hTy%0tidD-|hLzOCYcl2+C#(c&OP_8j=VXRe~^#l}i zCHosB;%4;4a58z~X7kUekZP9gVkg0eMz29rQw%@wW>lMmh=QENwLi`3qRcMQ?-O_M zpFV3okCa$QvVHhgT}IU3N+<1yxK>Up=-_Mfa=r2Q-zf!#LT?`s6Gv%Ei7$?cn*j57 zUgQnnE%^ee_*lpL$(9Ee@(Zb9LFUxFAS8{tbfd}XnQ?{a9W}@We>#8>!h7;5kqEs` zS{kbxGf@E^zItn-52zJcwE;cVQRuJ7&+dT+T`f@r#F7=B_~~_Ggnrr81B}((g86;H zIC4^;ISk)2hdEU;$!5!uCP2A8bFtM6%-hH@`1^=wl)Fp^l42{B7z1G(Kt_xKFb$5mS8sSMaxDg zf`LPIl*xO>V|WDmWR>7eVqeW3Vm@L_wJW{ zKjsVU4w5gl=s16DZV~ntIHMxwn;+y{t1Tx%h)Kk+2(fbTgap%V5s!EmS~s%j%wH;E z5Ayp^Iil!^HnR3p=*r}nFRSy4^JVoC^8-%@?3EO^=4P9%2vLIZp>o4*Wv!T`VB(Mi*)o2MYW>E!2 z8hSC`KDRH88w@M5iRQJ)63)B7q7ZqY`RaOmoaBS|Tr}*ro}w$QM!r9!cxr&I!~38T ztQo~wjef(;m;O1aHJas1`M>iEJ|gC?TkpTna#1lcFnt=ac_Ul{QK;`JX8!pB?!nub zGrdQ)wx-RRm-;nEL#cW9rhLu!C7ysB%!(p_9jcQRhsnbgq)Eye#nINL6jy>H>3Raz zE}35X(8QI~{!V%hxrEhGjB7*@R8Mr-aNb*gsWm*;GWTkK@CBf)ecwS8K8DE`ayPS0 z27+qRg1}8&pmWq?VQ1Jq$N^_F+X&&3;|)gUy z;)O+L>2Y?$m*fY^;D@4~9FO~Rr{8|1)xg?)y#FTi&%jUpgZeBuX;3$t(}g%nlsMx& z`&;?o4$_tM{g_)5944%;jfH@8YQ=&I7couzc&@2$NW}l z9cx{3_q2QTBkY{IlXu6A-#Hiy#4YQbw5wrvBJg;Mk2d|S%yyk`_`hj3+E@B4pqA?>D!q?7;Fxhu1 z+5aA`>Gc;YbUwb~oc8cR1ntC)Ac5PCYPN3;?)d(AG@?v(?!3@@g|(&v&3lU$6w5QK z*&ViALa)MqL!5JcE7m=VVdf&P|IH9SEy!!OiR-V(9JR1VPZANhIYuHngt5H{0`e%` z{NPzu-t1Ws?*Ed?<$LwmoKl1UURL?KP&Sb+xc-Iflc_T4!74*5yPz<8Du=0?lglch zy!O323wRoK^*Rsr;1vQy`M{F+%Wr#8P@Fs5ns^Y)uX51NjagnnUl9fd?e8H|vk^Oc zF#14xVrL~p3vw7T4BEn0$@t}F3syjJ4nf_d# zlkt(3M&9*dqqKt|^=nkL4CeAtUy6d*s|OjIgooY@Wm7C}Z@+-zq(j%h7>Y3CgTmRtsb`4YKEJ;I3qW_D& zz$F__`gD3c`u*%-vSOESH6CtH?~RN7e$$+(axMMKjhi8WYpkki=JmJx!pX+ZURnJY43gv?XTch;mZY9x`HYO&M3F~v3nyEi^=v(GBq zX*A~pss-_nghUXT!)K|7{LbqlKw!=1t5x$zP)IQy&4Ke-zr1WV7fmEtYV!II3>FlO ziZO-V1V7KmA4<yEnsbfh4K_%rYtGDGg_Rr_ulJlnc9z(0Em>Cqa9%=}3#^xWQ!S za@P_0XR(u}-`_1#=4&cP9Ztbq{llR?FSAPF+SI#IVB^)lgv!Hk2l(zMM$)KhkMe-Demduwsg;iqjo%eu; z&UXNT_J@Bv_0dlQC<5Lf|8au-M|8*B{`MN?Z7uPx@Y-BFC=5Jlz=w{S%SK9-lRa6U z7&U9OguMc>^y&D>*wX*e(UPrUW?1hZQEhHU%FocfA3(=z^@3l6&s|)Ve+5eFzd;4= zagB(#jXcL&kgpa#{W$L}dkRkYb(dD_vVxGh_d-_3OAn4n{oRPYEpOxR*Tsy_6pLf* zse#HKhJi6CyL^AL+x^9htz33ssnNrY^MukfOb4pomeNw9L^zWpB_^X{*hZ8El5fwL zsDp*8MFJOMwmu-m09Ovgi=#8~N@m;QdASm>!woM`L-|Uc>p_!M=MRt&WR7e{+VhhS zcZ~JB`Bq{-5;l~qMV?w~gJ$3<$`idxl+ST&%}6AWOz=3{?(WaUxXSx&X9-**k~FYiz9N`Qr__ z5^V>pB&sZSfB{Yjazqu{<*!E3`obYdMLIh-j9Yx zliDtFes0b6!BEc)CYl+lTW@H#hFGq=zOTtQePW#UJYHoy+lO&Pv2RB&(3mEI`f%r5O)q75ky+aat`2P(Se8Cw34MNpDT_i3Zfi6~Rsu5kP&MqiMit z#H%0znqhgGWPH$j(_C6%XPj92i$V4S|M=Abu8~LM;st3+Wea+FAL+_mn@B&CI|>F9 zxA3FD`!Z(P4x?p*8)O&qMbgzXCddDkual!hDA8LM$>T8hRhM7Wyx%gcD)nM(;&`Q( zQxU*2t#r|HDY2;9;&5(%$o(|>r*ui=&&z9qWf7yz$lk&L2F8xu-Y#-e zAuGRC#S+iij;o!FzQ3yztM2)0l%BOgFcB~VZRYo%3d%wfLv9?fOc(CN z?O~cT)kBY|XD?o0=l4{h{+l~9_cj$d@`rC4UCYee8h%-ZH#D45naNwxO|xX1^Q>$>!61jjzfL1sp*uDIEGjnS z$_|^V@1Pp0w(2wK+1&Bqh&p5ha3-mRhxmX&;nb6(XFBQVpIPet#~+UNYISna-t@Fd$31WUJ&ANu7oLa|2%wON_Ai4HK+=N1{>RsvzpZ~la(aZxH0@u$n zC5vrR4l4GIB8A;@J^#Okv{h%aWmJs$g;bDzLgZGz1=^imgylA-^hR-yQ7P`0@6VOq zGT>oX{aipYu;Vh+>%c1jQcAm*kvor*JoqYguGe_HqN6(y#Ce?SLb_g`mk$zxpBpML zvU%6`>r4b9XE76XyjuVb+oEd;2(1UkjI@uU#fEy|$ zJA_iK;i_KX6|ig6r5=zQC*g;nK>dSaYGWgO()pv)>3TISY9f;))dew0vpP_-__|p3 zN;nsF9{T^0^(Br_wQbyIHv3MN(2zvgv#&E+kR?h*$S7H|gebcigtAN7DpX3MD0`L} zvQ=aa*=Fp@z7I3ze50P{ec$i<{)BVReP7payRI|J6hb@Ei0h}to-nzz%#{om_(Gj! zb$d?iW{JbO4(BmE=SrJ?Dc#dyEGg~wtFDsi`sr=ugwFaqk090~QfxjDo-ch{p_lWr zzr35B-?iB5bSU_T?GXPJBos2*SRa8+9LPflRfRzOt@1<6-VZt#+=d!liiH+#S{wc# z8|ccD*Qx2eglZ#p zf0ae)9`vG;8OQuPg*`tdKI?@!K}vkbn&-k94-IZNE{A>Tl--@~1PBV;Bkm6sfTSJN zc7ElMgy_54A&QVQsI)VH#IjF);BbwAschkB>UDIHvJhXW-R-^`!6 zlFP-=>%{iGzzR=KIWef&e6e}`J+Y>HzIoq_MI{BllbK*`Knull1Dwmt6**oc%=|D{ znh9rQZK!7(5T?;5q zbcKh?OWPau$JE_<3mz!jLfzX6D+8VCv(|>wHH6HhoR0kZs+Yy9@rV zI|&JEG60UaAg&6b#tH($qOR%X=U(?YHeVV@m}1B z_~8`klkgXw4sf%~m4u5b%R>w+;({rHv15{47q}lV+&g;`zS>=j=Vo4dd}zoR&E6Dg zAf|qEU`%MH1K;l`AE&R?Bd0=$;#YN z>=GM$*o&3I0>+Tm8(3gjZVm~BtjS6wZx^BPdLU~EZS!YN!3QJ`Tf|h=4@I-%oq9QP z@d(I8E?|&O*{xyo){viTocd_Ta^p5X49a;% z!s04D%-`N)3Ae>L?=~LE?097~SiF-`4;Fr~H`)yORJ#u-=jDCh?6W-v{qFx9L^u|Hode7%F9_e7Bq`Z0pI91dxMm5y#)yd6q zv5sD|I2Lh9wvYvZM=Kbs)OfqSmWO>6=_3%k!r`gfI!>f}r0 z%RFCo{5)d0FOf<(LJW*aR#dCioHgQoMr-uNw>N{`p)YTE(kBmeSF^ca7ULa{>U?U~ zh=@FPP|trPOZM1v6NR^q?9jfod45vbh*_7V4)D4y6;{fE_W&l5?M&cipzl;yUa5 zA+KQ*+LhD1BdrH>uQ2(!Qim%-%S^7!za8}&-o3WwRRsKYr@ISL%)U^@-)>!w>ytO` z^0z{959*I{JQsgm7`=g3ROIe6(J|$`?LQ%-d*s1J6N5vGt)rPpyhaxCtMx5iF2;xF z|CF8Ckn3qxUH#OT%5!lqP=4W)FXoC1=>(*l#t)v~ela`>nF!Xkd6Ug z90SVA5oUV7)G}2B{dPF9)N(dfi?x=S^H;vvU!u9wFs8U!fbkbMm-NLFBbx@}0BV3o zFrM-ihS~X*`h=5qE4F_?a~Xnh5}mDLq-y~mKm72dvXLm*E2LC~m1Xw6`~p4OTN}VC z5DK9U9RwEfxO%I?&cK!{CE2-Qkaal*LeJKPnB36Qy92F64G6bbm%(+WDSHT%o0hob!M@#U+*rZ@LFeHJrZ+-rR!2>zQ`A)U;cb&p5?IKf>XWu-&oY#yh}eI z&wlrIO1kjTGJS0*FF$sc*W5WH)Ud8f$8uQmZcB}AWZ}wI|A!C9YJieft04=$67G8B z#V#DW$J1lPoYu_yI%k)0IhaV{*ZY|0I{FL}qmy<2(XjR|? zrr$U6?T>_2^hUt%-A_If$ST2yGcw}jLM0z3Z%z%YX!QQYiP6mG|LBZcwF0mU_{pa8NrpP*oCl)gn0v516Q?)A*Y!n*&-JoE+v(Qa*Ds`j^+M47k4h;~cd7CM zorNI>Oj}`W*!{!PW`1D*=%lw{V+4@6z_RVN@ik(RTF}~WhFpGy6Od$_643bh6n1Jy z?iW8U0nF#Sxx~fgl*m=dX!jhpS8UbqE)Ab?IWf@q}N9?rw)%x1wbft?RJ7*S^~ zh|cCR8Ux-OT0ad%wEUI_6x)d(=h88ir-g}hO_BzL5<*{WFpl^lE%zAa(wX2Jsuqam67rUK&ho4@k!o>lo@A^{tDEorP zUX+-J>4<2%qtpy$&l@zO(X%c?juVqjXpMJ_UEq3 zK-Q->AMhHCS?dF3K^@?HW1;qnn!LqlgfSjxwFuaHg& zr1sY8Ck*OqNk?R;R>0A8pobUkQZ4-!nkXN94|pj4l_{y|o<>L?M~ zzWt~}4ePo!sYc3FaRfZXb-3C)%Xv!bhp|%^)^j(?vsqL7SN_KA*S z7&4~C-NW(KoGwna-K-;R?t8UsxR2WR4nC?-iuD<-aI-WH_+T2gGkMZeuF{_7|;hDH?}rxlVrecQ3DQ;g4ata|S)v#2qF3O78e zBSKRmGEgn`Bb#>jK!5lXqt~l8)^i1CY87x1RpQ~mv0}-RE$Dg0+j1vKJLWUY3blUV zCX(7T69cB2{qVW_=Y8a3dVi18f5SU|W&qED1MkT@({Ojn*Sj}hYlt-_=#W~d8~6n6 z@Y)+a04%+$7n26_0=1dMBu^ePb!nu?elga? zZ^rTS?KhqbzQ3MiN9>jPq&TN{c(&*X)Lg^_J{Hv3rW5KgJHKw~mofG6TK>HC zqA|(ElDJ_CV#D!kjuD8XdTbhw4F%;6w4+|r`t-RR(D=-Q*x_*9>mTBs;Z0Mb zhiMYZZAbjwQS5%vmRCyh`h z!HQh8QIH^+Fzyt@9t+(0gIE_HBLj(oGI5nbyDBjz z&>Yxc(og)IXtj)_m&beyVY%8rbRP8y#Y^b#v&799f;exXINo(X^g+Ba(a; zu;E6qj95rzfp;!_-6^`vrg`_@d-H(7usdg;F81x(QezHY8kG7eCns4gPjl}${Z%)J z4-Bl|@qz_lIl!FC#tctYolYrdOe4 z;3Bf*mIbOoj}VfmNtauc){y{s8L0aJbPZV=5J4smwyD-oFU@s6xT}7yJ9=n3$kpl^ znw7uJ*IN~B&}w(_ZU0f^x)N#BQ~Tbm@fOc&uQFPXg0pE8YLA$D6`vKYYbkZ?VQqOx zuGu+ZQ^ZmEStgiK@3H&U^5bvm`sV;$AfBC2c;&sQKv%5((Lkl?^}}3$`THzhO6gk) zh@4AvuO=aBm^aw~$^JtdV+|{${pdAjt}a67T}6Z<%=^5J@X9b*A=R!r`KcDyp=fGv?nQ-+Z%s`$N1X=038= zG^l2no;w{@@~z=WD>m)s^o_f(og=h5s{EF;GI_gUsYqv^Rw>@}PYkfK27{7!qlZHb zYRq+`7&AvR%VzfRhp57TVJlsYD&gLDTrN?i)*aN>h!OW%hQERHzhrWgazFwo%nIxs zevq);yQg6r5re0Sn7Wm_ko-6%sG*Hq`gq4V5{0!W|xiR2Td82FHO> zZ_=8!8a?N7p*6jmek#Z(v^w7|V?l~S5D`ly;D3FZ{-)9)&|cG=GXR;^l;Pqc)#xGt z6gO2k*-9*Vky=z3O{4&nv>f+dE_i#_O7R=_i`XcrawpTl>&FPX>)*>CnQL_5{5B~O zn^VW0eVe)%B$ezEVQ|mo%xlr!vjy3WI+B5wa?m$8=5xP~$z}{POkXyJ^9?wyX>~t) zU-p;dr3a4J{xwhjc$vmLaiBCU&IhDgG^GTbU+TtOZ@seEmLic({h7~SEVVLb@?uqB!95l!r;A2*V0+m67|C8Xp=+C?Ni$)3 zL&iG5J=pHX{9zmynjQQ7k&hMbQW4N5u+ZDj|4VeXEU6#ct&r8^Ntlvh@;L4MT~WU} zHSx==AIsPPyjAGTCvHmf5_FIGs7BVz{l&?7FFkh2?|7%DAFnj{F_99_>O8N9Fbu51 z@|gdsN0~u?`|F)|Z~o1$JVepo#lSid9l&>W0-+jKfAL&6qrUKBR`9B!BFyO>?;y5? zvTSvFFaHtwvj%P=scgQ^`V{rr`YBsEkKBU20aN4vajhv|G=!2Psy%aP_D%@%ew|c! z-dl8gW3Joekk(G7`ip6>9`G;Ua!*cbu`kJfx7#o@N#B%GaSu={uacPj( zzbNKcuQD2yKHK5(#fH~+qN}*np-~WPU_-Q2!q-AKwY2H%%+o31)hkCOe`U+v*9gaj znIfeGdDV9ghb5WTXP-D{=~Bj#IJVDl=b z`z#o+)?#Mf!+i05LoG=9=xg;DOLIaLBz88+6fG`P~k z#m)31(g2@hC2Wfag&oSSvq(odstLJDJS=TjAynIu6~CQWtm1T(C%fDd8pRy(x@gX~ zBeKIo?6rUG)pNp&{x%)& zpZnRJ%~y#%+Qd@unGH>O4#RivGnnImdj!opee)Qttv{W_IhvfXRm{~822JsP*7ytc z17ub)dJ#I;yI{4-xHxjR+rw|((rW~)NDA9{>BQ_n4B<9p2I}vB|M-RkcADSuYI+I= z?`BXPhd6NqQYeBbfP&@vGeJz_BmuM@H+Yt_OK zKD|z24^$B@4g2Vca_Y6`Wwe%(hiy_fI7hR?is<>lzk#Ix>V&z~6R00=eHNT(!bZT+ z6wsYUV}?m40~fgx?KZeVQWRDgpHL9__Z75OW8#jsK2qb+uuyCiZ^uj~9ko;Kj(KO$ z5eO8{oW%|o)sXv5Zq?3s=E#eqcNe?E9s{KAExzfE9dM!lcS6Pn)+=s^Shfqjv$yIv z!)de(r{Z?1Z9p<8!`79PbK+-3ry!8VOHFmwe1AaDBhcPq4Zl!%6*9qt9=iTo?Amus z<0FS?p(7GURoWlBVxD@KCK`=Dm5A-mkgl7qT597Zxfd;6yE6MsLk|)poi6g#IaaGX zAW?6x(8us9^C!vwm3qF}q^RByWZlP7GQ>Zpq8V#%P4$SN^wbM=fQC8JwG7NF6GC8nQ2GsUUGqV-sbRZ+vn~WL z{g{C*9N>|LlWfM(_n2IFwSTuu_rjK*umYY(8u3s#4u29dY&gF>b!{kKO>i%ZCs0ty z(lRVur#BpFoRNQ{LuXzC2HVioP6=3NVLA~*o$)`ID%bNRhhZ)b49(uoQ+E90i~h-N z><1y8JpWS^kJC!Y%h9MQ&gqAHC+?B8R25J4$g z>|~T&?+}jL`HxtKm|?%*Jx>s;rnA0fulDmw(W>q;=6caSzJvqVE1W4H0mivNSqNGC z=DLG{zC= z&@JKjZJ)SRIG0K?$gp_sc5(gj`dQiju21xg<4uIvq3&2s`u}Y1$v74<@_2Zw(%yEr zxOnLVkUmz@T^5eRK`ec%fx!;Apd9sLo?noVQ7I{!$5wII1m2IsAu0M$^4PT(UW$15 ziirbikA|SQ%`=+Sqmko;Av_U>vvu9wT*X}P!5+U1x0~nBjl%UqSomH2Uq6Pd0u?HI z`PsZ@uVpl-ym;<1Sow}J)O009e8vB^Mj&5?&q0paaNbrq3S53f+_X!TQ1LXJo1Ikp z@(udz(^REsowU;D|4QT!SzTMo_M?fJ3K=Q`vHx0jbXh`pGW7X6@j+D6SFtYjHEbfJ z%0%k4$OI_87p~62$urlfitun^j{tj5qHJPa?(Zxox=iFaO9L15A?_KF0pvO#Ykm@L^*p)n0&9uq9&+B5+=<)hwAtPb?ur2h0{Ek{oX=0Ds`hV*{ z%Ax(f*m})kUz=JnYsRYTeI$2I;6YX@#LuCr*;=H7r{pp&H!qF>}gNh71*FxaDhTdCbj&Vo^H)T$|UF5O*y?gA%8+Qv%emR z-=uPamDsgjy49qL2{i+|`wdMLaQ?w4{g9f=Xa_so>&5)1jnI3*gEez|PJ;RncEC}T z3j#cpivpMh-_S4GwM%HtO2(%?%O!UlglmiUiZVO51X>hwbYk!i2h_@Mm}bb2*b>(t zb~02lOl26HAgHDqqMmp<E|x&{6n9xmaW6vAIU|4(ZxJp%!g^Uvt2YN}a8qT&b~V&jpW_ z??i04&Z%xPwo7&8q)@7@o_OVf{I%w0^(TQ|rOAO93<~>Q=~sS{542(wdi?-e^D3)W z&#Z0P8PVS#)uT0Z&~|4B;JhKPxuX?5PY5;@?`&Dh^EPTW9X|bv;kSgYYZ`Fk7z?b; zXX2(fL4nb!+MAN7)DJ0a+K-ONG3_6M_=o?Eg#Rf9q$E;lEVy3~yzZ=HHECQ%D%5Vi zq*bCo7<{D{x_;A?i@AeZ>Qo(Mv|@gpEnL3}w&Pl`kcKTfNjfl#0lsE-N?n}B>XSfR$T>978gNDAreOh)n<3fxNd(BmBC^t+!C~>;!V7zi zK@FBwx~6;vW8J|e{rUVD4i%-mlKIec&6W4_y$5riT}!OgXBBB|f?$#*X#gXK&%Mg7D~8Y9;q(E@I4nLVwTx|O9tGX@Hg|Haqyb^O>)Vf%$rzx1+SMF_ zE@E}=C`Sw6EOovq)r1qlp-V(hm5&D)U?aJq^@@>T!H4u?36mz#A;K#y5UzINKCiE* zS7m#L%4p{l3w>r@hM<+7wDeu~b9f^1w+FN<&lvtyWv}(Q(Idux&OV7V4wR))Oj?lo zf{K?LkYd~!va2!o^9EQlpGqSyd8}!(cQH0+v>x<32wDhKef+ILZGE4qBgfoiRPkc? zy&A#>Hb}eOgPngoFh=b*Ohi&RcX)rx=%NSuJ}iZ6a}dF+SBc>7>-Dt(p0A7P-H_7V z1KZ*qF?R>_@|?b*2(>tSJh;>TW-n3^=NrcikaISf7|;0>qahH;^gH~Kql5xESq3hi zBekytpI#xI7UT@uF>cPvWP7l3z3zoVbm-RC4ffcJWWgJb<&77AWTseTeklX+d1fk( zo-<0uU8aX7+kS;*oy!f<6TPrUjE<8iYC%@DM&<9j$8&{KWq%W}pS1YE=dnt%{Fr9! z0q_cS`(-PV;QM$lmA&rS`O=cAAYuiTHSkMcRvVW2QU=Cyci@B!EGvp;fr>lvYvN!^ z{c-ck*K~71MbUP=(X}jzGVM{T6u64rtqaDc-qV_cjGq(TAUr>{9qLOgwvTy0Yi4cV z8W_ShfEUcLgxVRJ9p}v60|=08RfAe)TT>S{r4@Xx;|I6_vD1S#x5RbC8u2G1`zp<3 z;e!Xz=|H37np(1zrngXuag9jbt>6@;L&5yTqU~%RQYNPz+}5has|=7U<`se0E~v!Z za%-i5`ivN1j2l#5``s~z}o7;TLkCR|2I96}=@;im$f@=Q7*o98$zGhI)T z^-mQaF|7%edLG!lC9%+B+H(8s%lpkwz~11mH*GBh^1c%;aB77aVQ1{FAKc2q>QIxLh!{@Sq(eb zc{QWuk-G*YECcPzhdP2mo=O5H;ajOroXKNy405<_x8ui+kDqS5%&8~+hN%Y4a`hF*T@i$o}ug&o5HV znZW;wY8Ao0c{=ryCw1nI7l+n|&oDb9#=Jc6l5@0~m6(^Fq$caG#M2o2`4bM*@Axm!7 zZQg*#OF=jmK~JLZ#4CwW8rc+ZE2`ZvS7W%GO3nqic!8@(hoV*2v`=iscRa zh{^mmxp7PNXq5t{{I{Sug z{=vx!e5W1_$cVfI{oNpMi4GFuOtr{{i%Q454K3fbi@=^n3!hlN@z5LWC+&MdIRZWqx|`VueUI3DAPkVKjFPWHip(>^x-IY0OWgAa zC$7UxTDBH(EgsGmS#4bl@R^9aOCn^N(LF0No}3zt4g+-VnCc%%yU=ew+*eK;3d~*P z*x!Af$;4HZq>D>^u|Hfh_-3_LjV{JRt_xLt z{WRooph;%>V>}dQ_%^bl_gJ)AyB|d_)NW+y1>-OC$6QQXnTnz9*Wc)0;N`IX-eOC8 zyFbfP_0?kH+w&CU_xRNR2in>liTeX=mwls9c7dBW#_nn-qo(UywZsG&X7c=p0gex* zhC9djp~sC7;PF$Xg_&gf`1mP-Ur(D+1*v@b<*(str*@}y(nU4MhD;E>A9;e6RE+ZnsDw&@uRJ_SQLwE{l=kg`F#q^jdi-{(1pco5K)sDG5&mT4vIb%rY z-VZ!gwN;9XXPYm$$#$#5?y1T}H}>1-E`mmlL!{z=Oria$fj`3cS1tjtd+^mhpOK|$ z6C#*DoLXVDEj@-ye2cPftC@LUl=c=0qcos8%yOFn*LCaDXV@SeIn8IRtxe`@pUi#2 zab0V_Y<2$r!@CT$lXY654X*~qZf{E^qR3oV1e$yrn1Da|NnLsth1Vf$@+2+?7v@HW z?BPN>C?WA;B*; zW}mXkA<81g+eZriJi72bM|x0_^$hkT@2ku+*u_75{_&YZiTl%rv1<*2bJ(Bo=K?dYu@hcju-F+nINL=aoL$gVqS7 zIcsPA*4O;{Uw?9uMPJ74^)Ose+^`pZ??vm?wMUpMvXt4k2?BYB!N^6t9xd`qn94R2 z?8UfO1EicKgBP$U1s8x^0zr)|JIK?eQi<@J$G;*W-GR>1=kZmJCjmU02ID)6b`=JH zn1s%e}vfaRibKb+wM)BZTb0NF93 z>VDs!k(&QC16zO)|5c*4FjfUaV<1hFnp7vUFWEi)Jftdn;816!COb)8EZ6p(dMCtP zkbhLPHxDGq67U(u1HjwcO}|NQEB%=2ae@>6Lv{5rV7RvxAr1um1UF*AmrpvwG`M%W zzZQPL$gBPo=z|SGws$F=jtE?5JucfkVh^%l$ytb-Sw;b2Uk!S_gl*ubGrCM^yc)@6 zM(Jg$K7uz}CJ1*(fz!FEyz6|&(kI&+5;WuT;)mu`40#_BL5$pd-E_Rv6>RAgJTI;o%;NS(XJv%T?Q76JH=?JXgj zrobHcL?i}Fz^-q$nxpi<{Ej`unk^H9$|?p*<`oc|wnY`VA@+`w|vYIFKz3462ir{!E$lhtBhTrb?x=%x>9{+I<@-h7X}@f$cHinKI#$}E1TqS94ZZqUC+7?Y@qhJ6r)%^< zy8lR&yzAfu-k+1^u*fpH)^6zWa>z38rJ|J{%Gh$1b35&9GFn~>UfUjUA^L<1Nn!MP zGSHj2S@vSfxb!#8_Pw6>dJ6B8Ry~8pY@MwlfYg@4_}=<`n%CjCAiFY9A5M*5A;KnH zls3H_^lky&q{2-@L9sVU7C85%a{i2zesQMzxj^!A=sg5(56+s`QLZSaML9j?sHk+~ zgi(sICiw(GF#gu?>`EV7$9<5a>hx~XG5lowLuk-@k(GlLuD^NKe?X?R5$!HbyQ2)A z_aGyE>%DXVX5YcSDSGj5(SHAkrSqSulL=HDI2KBFw7o7d!wqYGWpfv$tQEj?x3zuF z!VCk2zjlyO>dm4RQq;L@KV#lAuNn10;+j(kcddHkl#Y_4zilI_cPbdEvOj~D22-H` zVS^0A?vm!aTd;AE-A}Hx?p@(>jB;oXKQ0&ny)`fph+L$v69|J~;fPZnxawi*dGi&o zD{@SVdzFilH*FtClsJ&M9!EgZa}Tg7e)u#g|1iHnQtXuK`KmA8Y|eAHzm!J?N(Q)a z9V9fiJ$^uRKEhgi(ZgHU;SQ67dYtpsWPkRLo*A^RvB6G0w5Bp9 z=aP$83YxL}V4d(PW0Ou*0pm8jD>5B!Bd3OA;at+33XMpysA9>U;E_84T$I#%LN+OS z+z6w6d?s$@B!3rTb$+|WPz^M#CwT0|p3D)W&`74Oj6@9`K{T^Q!_PWt z-sB|6s~caa{J9DOk1nyy-;o($$j%C75NC_~JXo{fpQ)6sJq=@XVaOK{k-LnG9AcrL zWGutUzftUib#l8VsJ{K|{{FR%I_oFKx34O^Z$^qTy*Yz|$*`lkv9U4tF7Al`#xM29 z-;sk{%+*?WHy$*&lFt0-vO)Va*8v9tW}<{tJp5kAd$J()N$Z%z*pNwUHZLIZiPFZJ zwl|U9yZwBYKb5(DPe7Cw9V0L+zOMkHa_? z{YvPPL`+h&MX9PQ2jnrlNmfAWqc4F8m=r55D%7mEN#$HPh_*|AJA>oa(kA!89MI#`u>;2nF?QS9Uz zeIddkT~N~g+L5ifMGrf+r4VbJE39h+>#eT}VMA56-R5}rFeUW;8wnuSoWgmU4`xu%w@cykkE?RF!@t2NaQzryNu;Uof00+Q z&iTI*B6t6vd?Wo5eJT1D7miDJr)}g!b-{ZMK;CE^`2OTDnT0k{*s6f8JtMio z=LyI9FeEuK%DFA`7T)aAJ&2;bg$?YreCbFEX>s0a{NMrycK1LmlG-Kw>DHc6XR5ZF1Mlra|<*SA<$hccu8-^YFA zfFx>X2P}sR&KRu0iacJ97at0F-Gz32{5eBh&qe2xN7;}@0G&2@ecVW{DKrl@09J}- zL*`{Dw|0&<;JLxsX9t7PdIY@Z>}+`s18wxXLOqzVE}@bun+7n!{e&~-52Hunv^XNl z0d<*fsec2g2Y8y$_s)xxvr0%u4?7v~X>z>1_DD0MwzE-|?631+VkiFm&)l}zwsdm# zmaFn-V|`rAqLQmncO*CK&6#eC|8`%x5X9=XC)96puACMPlmF*gW8MkhS|tXvVvS~h ztj9&2K118E0i<~xblLV`MhLT2+8t3Q8Z_Vmo~=r6>OxY)+J(FuO#$DY$^T@>CS-?A zhdVmtNPV-y&7Ydwd%_nr1AQ~ z6icVvhvQW*?U4lH(&+m}H>G)VIYw`m9<*>;Aiw9${{2NA#j67|=l@OU{;LEZ*jIvu z=e)&9No{r4?%gTAyfi$6+AfJc|2?8m$ENGf!cIqu&&ABPt-cHdqU2q`Lpn@ zJzXVNTVaBGN9hr=y}?gow{(|-AcPbN!|W=%b777@#aWM|G+JqB^JJ~ zbIvQJE2+dc@3TWen7kcb@Du#IWaA(AhYljWCOPFGfThcX!XCN#{KwPTQWM1_nQ6y~ z;xqxLSeZz# zrIw#w!d^SPBjtw2WhW8r6KM2b-*BP^+ywxC$o)7p9KpiOAWkraM9@WU+RwwuI^Tcl zqZ@#Th*uMm(Jc&-XDttNh8n0ya<{q1H2tA7F2Ns0f@^7T?W6M0PF5RJ)=B^s(4{&Hi6GgrVQ zWo$)&WbeSqU{Zq87qIp?zFWz){W=(qP01q>Y6aPoTR9*UE6SEGEv4gS%mwfCuthfr zLDYW~^oJ~<;)tLiD~`M*1>~Yduc2%Dy@(_%3!>KGn|Zw$z7@piqm>s07M{>yUC0Pf zdsz@&ilL&TACI4(-I8g==vSQ*j;7y31?C5xB> zS9p1*KPd6!9+`fV2vg??4@qUbD1l$5tTw0q05^YN_A1{GMF-U^oE-o4UZ);huGZFNQ6Vdvn*%55nIE>p zb9Zq!KYz?q4n2VuVaXcOWVy^H*kRg!A*`%_aNcp^J9nDz8%@#)*GET$5`SnN$_B{x zH%!o9C5g2+d$*qCTM)b$|Be&n^ybq2nm3xBR_oD@M8xewCUGf|i1fycJl+SS3tQ7~Z=1KB)yYynPJdS}^n_wr^A5>&ihWu^g&U zLn`})trIiO%@~~g%s}FPuEuslGdrfRT8eqdE@94B%S?^?2GPe&uy#Jql5cE$h zpZ%X{wJv%}Ucr?Lsht2@e;?#4hja}*+*P4vMPoVMN5q_y1@>I|;NHdAcSV@>QNK(0 zRt)k4``LTN&hs^)7zfP`+{u zZgf!7hD+t(<$ta-XV7^%DN>L*y^p6FtIG#ZHe-umcMpJw*(+2jkqul=ELcxkHDoKw zk5n{@XGrrFP`kiTgrGs&g&eN>fwcqIghB(~UQVt*IYXcZ*7`?nGb%T* z;Q^{|x9|0ndY3r>ZU!-(uAtmzI4K@*FnJyhg;u~uPHGU|0QY%sb<72Sj;r|0MoVu? z7P9bs1YglMl6Fx%EWY;$GL!j1({+zg9JmSD$dmCoL44V3808q*UBPkSe`>X@Yuw*q z=6yocAoEq7;YXWUqa{C`7Wvcvr@=tu`NmFee*jyW@E68DXxmj@NjJV4C?Dzh4cj`z zlFLsJp|-}CHk^xt-ea8j{Ns0_0?KI7BkopI*3I{Hx2%DPDdJ&o zfdwg7OavJ+qq->-s`dmj!AxrneE$ForKG5RF2)AN2KPEo*)qCA;IRA(KA>xc{}&5F z!@quNGtSDg_@XpCU7ub|1O+YZdM_?M=>)F4<6_r5!6)e6hKSn=Tc%NeGUwXwq* zxBa6vN-xp>T=8gA{bF}t8XjaHLz0>@kk2`Q$87vr-rMR$b zu#J>Mq76TnsGj|I7r?Lf^ z_+3sF*VmFq|AJ$EBj?cW;Xc0)T@2J357LEKi=M6R8)~?v>?ZYm~0~x!Ws*_R} z2)Y6eZ?DlNKrLxPXuM-9&Ur2AHKrE}gH9an8h(8XTGlJh*CjwCxzz_&?yWy;+DO%- zKvtjflyOcJn&ZE#g%a>iU*eL{FH?@b!~BYGL{C2X{M<=s?X06+N-HTZ(H6-1ySH)w zXeasc?^#Vr4EPX04#t(}p0t@f=}dMZrsu#{Zcz;LCb zW_?6rV#1DrGn>0>{KcUuLN9b2vXu_ z!|dKWqxkE#_y-3=Di>_!gXp`(Ld|H9)!i-kA^a-`pbKU7QlZUIu%yoh=iYmm3r#`I z15_3`Kyw3Kn7DXOb3H#fCSQ9gbscD7WUn(0HZ&Oi*qIxOyBp+fY>;UEr=R=I|Jms#=56G{Wti9$`KmL84$Kn~HP9`N9YKq7$3E9n8aj_c@kO>&{?3*6}4>FP2r3!%w(g5O)A&<`*husk8q12S zN81yMf8w{HA$#Oq%T`KV(6KO8_T%@?I6Q_wo|JeMpS0OOlYj;I6)s zU5_lxh%bXUb%`3L_aGU=B@7*kPv2KcW(#MDc%7E7hU(rE6)AiCsZS_O(8{jd@uBIf zv;Tt5e<3Hv?D91!GT+}B>uaU^^{iX5Umy;DF?U57QhLYQE)Gw1h+$83Zv=jM_C#zS ztP+@Sej}_OUM84~oPO{5ljSE>w*_iZ<=~h)O#A(gk?6fJsH9q}y*0QB#UX>6iImm% zPwMQFQ3DsTOuI3vfLQ&_ttVW#S_s*NqNf7h;(cR52zs{N1j*o?#z4Yr5PtNvq+Yi| z09okiEl5snI~zOZxM5Pon7}jFq;A5_)?S9mxg#fy!-mk_x3uniAN;@%JrZeXVQm6A zfuN-v)>IKWn^&A{^wUn4NZU^pw~Be6^!^_OJ`>T5B_ONRiUwl-WXf!h(`r^)Uw+1{ zJrC){EtOHH2DY^Yxv-I61Osn}=9)~7GIiX>~ty*3>(IEY@mgVlQy z@(_o^JMwC8GMyVOz>e%~gJYY8(^TZ049YegB@wZvo59p+#D)nF7UMvW1|vXc(cE9y zQZAzsbQE9%B%_os1Jl}OGz6`RbMCO>vH&?oMc*uMF=eVt<};9?h!%u}80F$Jbe(}j zj&;GKHi&?llWu$~M^|PI=YglE4vU{~kvscaL^s6aYpy|xywBCnO7~~pehf%T+28q2 zHO{|ZJLb%_I#NG*S@rgoQ%$Uma@*(Icx}MZ)gz^$=Mw4A=S=5_Cu-()1`z@opEvLwbpK>0n8T zN?5|NU$t4G$nR?$LQSnWRYvyr)!13+ydca-3ULP}BI2ZZkQN2|8RP@cJi-o$Nl3lf zQSSMvgw-5kfIW=;HDuP*)2@+++v#r!KBIb4WIW!F-%NVge&Alx?PStF&_VPZ9c_Q* z)AJ1>zt9I4U34&qqtzwVTT6xxk=3h;kL_@W^faoN*KF;XA(@*Mu?_u`mMdK zPt4ldsFKwa0!h6nLq$@`^&}cRr>)y_|vFazb3W zmv7u2E1MM?>`RR1R5=k_%gx(vJi>8zA}p#rEsFoSo5Dn0!GGtB^k?%`Y+P<{r`r6t zOK-u|^lv~jpD5b6Nj^#N{Q1Hi)XQRn?27$2UYk-yHmwqOwpx9(RCt#M)^Q;G!lfp} zrmRkgq8Y}IszrupHpAZiJ>cD%a1=HYN?Pe%s1*lY%B^hr5oG5NRP`0@+HhD{?HqEI z4zfnav1_fPE3c|9Fz&*4LagYhLu5grl+uk9{F?-KlAyMh2Kt*}z|F(CTH1f! zH0ous^wa<5-ka@qY5(M9F9}7o_k7Iv8wZ$*=`-@f&0F24I6uPX+4|s;Km2f5*iG8D zd~$|IEF?hO)09V?ptrqSw?Qm=*ydBax&x3~fswj*EUQV4kW;I$VU-({m^A^ICh}l# zkIiB8mT+u8fN#VA3HDmL>e!A7*jrhikI#D{%*QYrIDC%I{+F^t9n&X(3_8ADkkJyt zw%mFD$_&}0wtZSaA_lgm>@WJ(WwU-f=}OI!=iH=gmzlUFii+^o&hD&>QdceX!jB@H zj>=t?hW+#tO!;ZtncDpEf0olaV;_mK{M4I;-`b~gF5$gSx z!UBhf$NVHmiLO{sToy(wJ+Fl-&V&JJ`>qE?x6uu7c#Q+aoT=o1V`U(5!IC#0q|m^c3r1)s~vrkvG?5I-e0 z9h`9SsvcYbRc#-+VmaP@@pGr3qpyg)!0KOVhmNF6egAWEN*xw61K1ZGJk%v=*^O-H zbTDXjU2=>q6_mzCNclASrK-4qFX38!2%*NEtSiOAfF-?IZ%)@DmRnFk)WAyJi~esD z6EWz|N?Gl~-b3C9Y$`}-v-!4M<;g`59PoS;jkW~g(=20oouT^BpM%nqSwkTq6qe~c z9CXABcZP-wg>}V-=ADE!!0#}{KNvE8Z~Jy1+4ASx*Yd@&shTRe@s$;c6NH&=y=#$8 zd(@rwA%VFJ5fZ8)Sv#HKi5m&{_apt=*FM_sKfLk zHmeZ*|M68nrFf~{YHFDvdlwuoN1WwI!`fKQEs9cZRjzr!Q=G%Nl~@V7=2AOk~L?BSu}%`zP(3Nk<{xJ_%s6c16)u7HZFZc1sFqF8Vl+d(An$7M5 z*;xhz?7(I9TmNq$fetGJPmw=YcmI5xGrk@+SH;9fOx&g`fmH>??XK+t-t_Cg9yMu% zOKuy z59%+vnKk(@1f=2w4~2WX@8H=CSI@t)*MF1E#L_tYv^wW2mgQ3&&t!2TL0dP>JipXw z1ZjH*dI@d-&9_HGnc^TXW?uRazqezxw9@mkL=cgy{G_7b#UhP|)OEPhn3`mm&B!Q9(q8$sbj~lcIO>5{H0G>)GC5+kKLH~& zHLc}nHCnIHB?y%r=BSNNgHF*7G_cq{D$Y_!im(+HeE3WCD3aLorhaayX7}^-S#>cf z2Jf0&E8K$>3xI7e^*1Q`6h|e1f5~^^MzSpk+v{)r1v>nf+gXr&=!~Y z+OhqClBq^!%_4CqRoGiPZ_12o*>mX3BPu^DAhdy0ocs^JHpU~M35u0D3?V!fgxNM!Wr-vK1 z0&bp1M?W%|ZVqdLvB%QX^IO)i*u;D41to}RJbp;tGGqMJ$(&m-!-em3VrvM(yotav z)ov#El#vd0l)Vjy{?K4kq{rTBJsCljtcL2JW0LCG93%J8!#2;Hdau1)M8_&Zsgsucx=Lb~b-abE7Ll_lHVR3^X2u zwjtA?$;h%@dZls0E;JUPp=ACUkz%h~9%tKYp&97e#+Bl*6d1)+HWZ>xjTp_Vq_8_B z>;&tJkEcGeJa+6mc_XLi)Y%vf!JtPq`ZiTXN!Q@zZxFz zu=2`$vr}#@bYb6scMlWermj@CCFM1`jfY3bx@q0ysZPVRG{}a9+RU)y$l66; zfQN-jRVSe2Xtt|Ial=TDUk)`!JcbXf-8=}$kbSzDGYz6^Sl7|S=RNP+%_bFQ+;7Xi zOZ)8uKSzi_!llOV`5YMxt+yiH*(b6aT#ztKbG-5Y0TIuuxqmm|@LVN1>#5<6^m&aY z@5RB_tbCWr}85usPDfu@G_BC-ali0X8^?6yV18@;j6tlZ5qmNJ(tQ zY9n}?=tXuX2iT9$PHtVAMATJJ6S%{OApskmT4f5CA5R4vN^@=nh4tz4cd*niu-EA+ ziO}w_tmiRf?avx*@6Gj3hRWakhY1t$f5HVZK~#q9Umna_14@kpV4QfM6}*mFPlsiq zyo6a{1iZt{s6UJW)DNBHn>-aGgjWQ+`QlKps<@q3)JR^#^3%Px8*H_KRLp33(b zHo0nN<}<;Q=5r~B#Y(jK{}zKYSt_d0{SRy?;AJEAU`GI@RH+SXll4Mx;RhJ@jGCI5 z{mF0dq)mVDhQW!Q<)=g9ny}2DXr#Y=(3^P!b71s0~of+ku1&@ zI{n10H^3bRhR;K;az!FA>^K>s+c%Kt3WxG1JhfrGj7Q%uX)$xYdg#PH=pgxtx$F5yP6uP0#!ie+?mBH5ym`0QnOe}MMb$TFGEhj2Wb#19|C6~@rKq&~>f~?Csh8^f)g`6Mmqp6|E;-!LU@rRQo$r;%)=jHJUAM!m z)hI$Ha#ux}sCPk3LsbJhk(Zo2C+kG)%$TULoI>ZDd2R@F zn*Czv{jDD{37N`L*sW8rz>e{UV0q_U8_o%&oaw?KU7F7=OGty_qE|PATjPE_?FBV$!4M(W!Js0V4Kd8{r4iDl4HszYK^u zQ1X?Y&+IfS*C{SG-HYO#cfI8Gr>8=0Q8e+Bg^S zKsjkXP=Z|2yWTIbE6GUk6fCx>`}Wev5mv7mgwP%pjDW&L=|>ocelykeT;aN5%DZWf zjBn|;@h1>ya4Lo+u#QxiE%^;EetU;@zk1A_q)1Z!44u%1ev@gy)DT68`Rgthxzn4* zOASv)t+E*2Q_MsNgM_duxb)y+Cn0Pp1Ky?9`{NpB{-J8^)XDSpihZ5c3`uh#>!F+? zN%wzrD|YfO=`}kC(P1s0RA1cb9KQ8Xt4jMsL2^J?y$;4AU}q3b$;ijNs*i=?Sc29*Fhld417MQUPPi$q zTtCZ}NyWIS&NWqPcErI5?lB29SxaVU?(vYaeS?pQ>@Y7JAB>6a$Y!1rtd@eHR)XvZ z-<($nc%d1Lat4dw{I$}aU;%bMaT z(%WZfKZpBHO12Kts)2W1h?4R{S;7XD8b^+1OUjDJU=5lN{&#>!{YCVha4P!Cx_S)x zUN!2Ttyji312ht1iBV{OA&|2|d=o!_@^3jqP)n+rG9$-K;&kd{=7VlXOH=F1|WN&#y`3Iof{w&DG-=^7Ec>h~kOm!Yj@J-0V6 z^;NyU$?8i!(Hax&uRYdt;R6G5UTZxsr{RI8u9`P#rnjT1CGhfJ+{ClTXGISUHCg(v zp<)>BY@qaMZ_@^yJopDI@=v%h*+|t26$r3dx0SPLd?C20*d@Qf>xD*OyUMISP8pWL z^j_&(*Gg7rBlz>Ne&Q4&ObtP1lAPO4B4_qab!n_UbQt#=A1a+0f0$bts=Qd8snEUG z{bmUomtvon%aF@Bj2AF+!d8tZA}o`9k%(~yi>k3Jwj5X^+bEYz&^-$cWoWF#dADhX zsRdwz40=PHYr|rZUf|vff#2DW*rczV?`D>P2{8Eb3PIr7PiYo5V6t$yOqx~y=n}N0|3Y3s09O#1qh(aqQ z@Kh&KYor|q4EKk$DU=_dI$xzShrl-1K#cVv^iFH=E#Yw37l?`Wfi`$Q>JqjARz$b` zX4T&Yu{KQa_;z`lppWmQoMC&gkW7oILN`#;dR9ZW((@>_5qMYIF8HoA19gxPMhK554C= z2vIM+=$yHhEXZ|!5vlcDSwR4#Ve;p(O1hX20+d^;da$qPp97bE&7p~=o(|UNvPwRk6>vdk$P=8X2>^G;GA4gqf-G8Ee=~%ObMlJV|ClM*k9qaC72T2lpPKhy2;RTLhA!EHiPdJz<`)*& zR{}H^LGGHRfxotj*}AEqY%KanIAunVfn|uCCv$s%b)5z%I0?6JDZ9E}muDTcvxE2F z%w_|^3w-XUn=oUY(Ffkel;~R0FDq0&Bi4Eg2&Dm^fQJC@=RS_GUk4;}+HD5p6^t#I z$d}uTz#fDk7*8;~lnjQ)Ze94Taf%hj`C8H$>BycHa1mo{;u)i>mZzu-XT44ixu{_E zw0D};xmkZK`HS2{t~(}>nV~yV;n+o0rl9{jF=LZ*JCtCo<342cQ2BdQUxEfXXQs{; z?$@HS$mT4X1U66KRB|+1ePqcITZ)2{$Pi_E=T57Y@)E2|dLZQ~!BB3c#pQl?VsFEF zwT@SGb+5-C?#<+crJm6-u$wEEBlz{VYY$lj126W zhsCwW;Mof3yKXwO+d8V8XdyQB7zo zK|$DwFj$>dn6RIj1&tG(Eg2>zyUIj`*0nGjeeS7ux@MkJr2E7WXjRw2FmtF2w;yMY zR_qwtyR^C4&b7YOkDnO7+o>X%+%9qCJK^ZOWya@PuMeEA*edc9=izhzxyGyZhkbNE ze!J0s+N$de&A=7@g~xw+98|v|(}eMW=o4k{pmKH+!*!zMuf|EJBFT)i`ts31c~{Tl zBVpKGZ3ve5;UitzZO*19+iSo34f#92hDMrp{z!Jjt%wVszkhG4H18Df`HQ;Wme41P z+d08s1BITNjj1SiF#pqR8(J;O0fPg2Orr0nj5i3_#+6mpLeI}%%6L9_7Wdh*g%+FM z;KXlqeCU*RW!=~B7qXuFY(Dtr zO&zHg_V2?cAL{b{TkWD^o&IVzySHDYN)YJ&g^QNMa;Pq}6;pc&IAwcXJL|*5qdtP| zYLJv&0|iGaJ1QKAN|A2U19B7!~lZfYaKOoK`{tR=0Q)OeY)O|0HV zU-!$wD`3ueoNIv2c0=98bMXtBAlU*o&y#f-uQTjvg{3?4);=E2?vC%KRN6Su!?dWv zhw1@2{2OrJp*0$CKcI)|TSwtZJr_$+(=wrRu=fWB8Qh#NYjlQoSSskUDhEF%r#=;? zd)OKtvP5*qXi7iI%0MQ?{_`}$G0`!1MKAnAFa2lo7i+bYI7Ah}Y`k<7Ixc(bKj~?b znLk z-+L`{bj{}k^)w&ND%`_Qk&(M?rhpU-pduzihsopDts;VZez48Awqq3HE`2>x#$o_g zVv40;?$?!avUwR5=H}?i+pESk8%zY9BaX>O2~q=Z8>Npe;TZhuIddRPYspJ z-<)XiL{RWrn0CP%B-vT|JWVbV_z-z4U`~vWaGMQ5w2WE(_5|8+q}pW7viy|eM|`d& z(e5)27U~41(h`?O5J|4(WCaxhCvVtE7?8kS_q2?z5H`5WwuGJCLetVKYQjQ(sIh0z zzh81ZZlR3uE;B?t02w}Y2}F!BJd>4Ji=C`hr-QqY!?s`#a+Ghx@WGrr%oZ#S1k*2) zHAQcTV66T*8ZP|v{|Fo`Ou2_64px7sfktX+SS<(`T->Gsxip!`c~$YG%pg1m(@Vn? zfjho!!$gz#!7;oohFr7;{tO$k*^Yjf?3R;^4_lqB$6@vL zuK%`*J9%~OlslU?O-J0-M^3sA_g8^;b+-PA2mk)dJW4IuQw$wg#R zEcCXy6Ehy7f1sxIEgW$M@!e?_dTwne+$AbK&vA6#vE;0w6x@pbXpV@_kGQO*@1D~m;m*hWV^^7U+~{4`-yoe6P6#rIb@JLfP|r1{8%272aM%46rSD8$1kcs*S^(5qEQFxjlD(|hsf`Gq;5 zsItd%w!lyRD^_NHifyvBD_`d{lHZp4r{99tx$F?vT4JEH<(rmws_+)a8ThEXfL6o_ z$^;BPWR$Bb@%o#HSp=||EaYVnQstSwhTdcTDJW*N0`!@QN)OrX@^k%iEjRB{9>1vM zLu=~fKzeI_Y6vI{9=oDXlJqpd#7p32gU&PYy0I{_cuH8Fza7(VPTysufumyVJ0ex<=BP(e1cpoy0U^^0?D^7PDe|gG-TE_HW=$cmR%8N zi+?~RBNMA{EJ%lBP)~GcgkoNHKz`-|DvkEnpp7Y&%I|SBjhRMTSzg!>xaiUK2Vw7k zuzesgSSxV>kcM@UU6qP2@MYmbzb@u%jrJv`%#S)a*r5x{m$n|b)h2${KPIW4tYWBZ zqJ{n>?%6Otv-H_WUtMvn?ww~E*Jy4X7MU08@i*v2{wq=UYv{%j+mh(gg~JS{so=AG z^IVTq=PsIX(~n;`#E}$q-%i z)lOhY+oGW?$^&hP8PBvoz(rn=ww1Kn#7WHY1Z8`m-ko)e72O+mM+3x|$lam0-A zp!2~b;MEM-l`Cbfx&W92Lmk%^YJ!V#mNch)mjl*^?al)!I|}S__F1+uIxvbDAz?!J zC;?k{hV1{gq;UeP=BrwKmOPR+Zah*PlgYt1R(f-s)2l4%LYK9jz*xYfO6l5~%4T?C z5#!t(Mfz8`%d^ZI^#u5a?S~idp4kx;Pgu75+B{d` zd5=kTX^2;_6X@{4kT;4nxA%);e#=9pnBZH5U-p0C?1CT*&6zoUd?~3AX3G}|0x6qn zZEN+wzM@FNd7`WWB(oFnZrqrooKX&2_cM%+hR#FyyMn^jQbN|n=Snn>R21ThrZr;4 zqq=fxM{Z!tw=lG<`Y@H90J zRKI-jvz^tYvgAN6ke{EKsjdm@)uT=Q)ENp$j5ICS!Afx=RHcH3rSB~Jm zk&Y2sMe5WY;lHm!q3}BGu!0A+&VVY3D-zrL+$$86rJ?V7#c3+wW6FH96=f%?q-(NV zSgnX!u;2bx%W4$fr&1bRWEPSZ>np~}$}srq;jEnZ#AkLQPsB%sUi0M!L z6GQs}`+EodJ4I85t>a_h_Ac*K)-Y-myt7+0j58ldjtEKf0QSJvol)poVh`)vX!eYU zJ3z)kQMDt@a-ic;G0XM^EmP&*-8;FEGv;~VLq%DxKOP)joav?Wnh)2$?PX#&OE6~k z%yo%1YY}Mmj9-vT3Z*&#tp^Tvj;HLeb>;7^qswXZH+=S?$h{x;1eMDX#b<0kH&zcL zx2I~qJ#(j3pf)+@v51+J!pcTI^&)0PehoPG%#r5ywJKd{&imK%j-evc&oR|cen?tb zPVdFFvzpTK)3d=N$Y_(HC+?|2byf*%u#tDNDrOjq()4?r!TYmmB-B2c$UZ zs{hkyhr!fudL-PKJ2-DU)H>3o>3`wX)!ESlLo}CYJso`Tng^~2jsW@=je=ts`vM(y z_CF0b8bF(`*))iGk*a;J0cXhaPwjD(&W?=yIV~Et{nrl+=kRC79s9;U!4o|6Uk&1V zyD@>MVAZsXBq#R%xYug}R`$jO?AHRmtNX(x&pNe3JGO%fxKdE9W3%*x?Qj4a z?A}bBSPac|uPt^hByHBrPxt{OFSnJIbo6|9shWfG7|p@Wk|2lGAl>;@)>wHLj3#H9 zc2Bnod0Hp_AxqsY#PeIi^I9WD_w`%RvXg$)qbCU6=6FDf1OL6}!w0+a_qpb0jI4N) zIKDyNIy?Az9_eMSw<9Yj2uWbxH~nhz?yWxwbRGWqkB~(OBgOorE%a>6f#s#C(7}g2 z^|@wQ2vvK~j2`{W`@qU<$2l=hz?a80Z@jHOG%sCp&nHBtA5#&JtH(x_g3D6@SHyxv zg+z*d*0izrhB|3vX4NVk*RdV7!l5bb_Xu?>FrVF9634{SyE)hxeG@c=eVqa;3(y(C zYKxJhUUU~O;$FHdwji?k(!0y=NyHv>I>oQCO3dr3o53rd9{0?^H%yebjdxcbUa=o} zfjB&j(oY!!T`u^Na)vRZpzr-p!{a3{f}ttoB9M!|syseO{tX;l-9|4|zLTk72#Khj zvFHP*(n6-U&sd+w&PC%g41wpzJ~~cqq&6vU?1`%t~7(@aHP{xbBi7*}gLL zNugp>N#`olZ{LL%x#M?z&qrgY->#%*UuC07uU^K`BXUJH`4)yBPZdCyKQW02UC+SV zb8z_m>y;91yEe)#SOnOM4xLjf)5P=eoi~RLYH`=G98W#r!5YwvD5lJbTkEOnML}O_ ztGd_HZ$Z7XJ^Q%~Qxz9C~Tf8uX`ZPu`f^B(Awb{&5Gy z819pC^yJFOaT>DK>{?i;+N+Hs9g4%j*4#O)x{q8Ibx~L`84zDplcqTSz)yTFXKW+D zeMbUT2yYrDiZ5z@(xPb-!P1|;I7zIasq45sov(nt)_?M9ZDrmG1BIvki6Z=;x?f@{ zG-;4B_+rBSP~&US-!CrxH@y54Lm!ZaR}v#uWLa!kEPqL=;Vtgk1LyO@SvWqLiT0x! zHfvo0=kQw(pE$WI>(8A{@-C9xfNWfo^ALaivG1z(jcW8VEzHJ`ec=>xRrRev2L;3@b)jKHC zqZhB21~AnBd3%8fmyE%}&-k7ft?{7dU4x2l)pj^Vu9EM!Ox}_rj(+L;0Si&WfchXlOi=qn*y2C- z`Dk6+bbr zR=sb^<)2YjhW{+yx8}HC@QF`T;QN42?ORGEEjS9s)l^gT=$3YYHOT4@i1Axo_%dW% zcfF8t)t1MoyoCpr+)f>imTq{#h)sBlAP=awBY$oGsf}D0xONZ{ss2@p=54F?3JUBs z9Mv%eqU~60wsbQf9f77Hr zWHH(Zq}c|VP)~lJ1hE4CXEP!>3dzcohRbqxy5wY${t>RypdVpvdgN|9Uf`lk5djlq zJI0YUF>buCr|3U^oY=pDZ-6|YcaJTmhzo}wI*T{#E$l^|ZzL#g9&us=U;Mb^;WrKq z%dUKzaE=J$D1ZvHpj8vrXK}EAgv3rdw3mOL$lPjo#Luq*lnMIUGpB48lqazRLuJmQIgzjNGneCnV{9;*lF`*8qif=d!UrNE$K%8^KW8 zES4jd*|Ijb?^5=vo8$6z7t>763CWzck&Sve9Vh*{r5w)0pX$wUrauI8bwy+XFJIRg zW}c3A-X{xXJYyPJ^; zk5xGd#R0FbM_imh*);V8?L-be#PvCGD-r2GHZ;er%aUK9k~3x$DksJ_$`51sH`A3w zS2`d;5UQfkuLh9HhoP@?-yokO6!gmR0u|Ml3)fDV;X}(E5>dmSke5S5%wHLee3`dU zZ@d%#%Q}r!qWaIzj??evO5ABwzQVCz_7CVsm2nzSL23XqwvDnfFT4DGI6Lpz+La>G z!6<^j3)i6S>ZpyN2|a0h?Xob#OZz3*zLI9?kx;O6W`CiW%j|AH$BTAfj=>0r<(C!x z`pzA%;2$U8YGl5==h%sz0IfT44MSq;MTgQSj+OVesWIxJQ1C>!|J?Y@_!6ccKh=by zYAk|sqC8~p{nXegoJt>$Q<&f2ePdhN-N8`e3DBEMJxGE~!<(J#uJ3HWo^8y*<{s6A zj)((90ZQUC{6fI36ttK1WKsSqH3PtnfhnNI;BM=C$SqdglmdL-n7g*0*z%y9`o$~_ zJpS=;JtXuH+MlojxUe}FHG|pcHSMsDRacR2%O@|U<9t+x0;-1A+M{y(vo$PY*yja+ zV)a5YRN@9F?ihw{25l`&ng#efxMm)#iBpybssqMl;RD$LKY%j}bE6v2ZLsqO&=9nU z4>f7HK8k=nS^2Sg4(?cfg1!G#kmM1%k1%drN7aU{E(VUQQoJA3A#ToaBj%6D#rb=T zufk8+q!jRX1u_gf4Vq%hx4HTd3uMvczt&`Z9E9BnLv6IhM5A|mnZJIBTa(LMKegTe zlX3#mT#~y4SeGm6?o9Em?ZJmPQrha zlwO@ld5R}Ji9th7i&Na>h{YF}xQs8TnJnHL*7OwTZigTEwhOOzaK&GLM%bEv?~K=! zf?2JuDZ)&QZy!(cDipB21@mAP8kobaU%wLSBx8yGZbwhIZD(6zqv(^NcT{BZ8 zhYZFPK||ZX_nlZxx#4@{7{eX13n0l2G+(A?ZK@^U&Y@PLEoXpqqGQ?zinzTL@wIOo z-p>56Mj0iczClX6=s|W=O`3CKSlBK)==)+|bxFO%>YY@G=d}`_E#@}4tpL5@Pr?xr zr6zB)R+;0#mnDVUswvzs)WLi!_;F!(+aq;sgM)bnOc+WQVpi-cm-k&-iq@C2fcv=IA?h7-VRd5 zW|e#r5jNhfguSk2p;}vo?k+eN(0Jv+)LJM|v|L?RvZX6y4Soaj^{gS*W*k9ZPV5dM zI6dz)^DS}!ty$Y2Pt#T`_gz}y=_;9ZaRC`ZVrPdY<0V!rRhlUm@i;Bf*P>>d%bV&O zvI>gPQ_Aa6yJ~)4w6T#Xfj0GcsbetW z$~d^aQo2xyH<$};ObAXn7%ri@RKOn`L=e8h)V4F%@lz;03h!{md66z8VuUFR7XgbN zo%8^?FSbv_e>J^JIA)gG#I)_uuu^vW+V|kgDctAov?akVB=YIf2%?40mAzxRV?MS* zoI3&=t=LQtKTMlHi6!jr9puqgfh)}@@3-;S!)(@hOo_bHZy2-2_(WuaXq)JAqtTPb zzuaDAOM@zR9Rkt1E=CI$kjs^@s`uLQx=2a0{kGoNcUV;^*33>o0*n--=brX#YKmI@ zK7P_QW&^dcr?TlOps`d3Mw+!^+Qv8MR}4LY-@o+S0b2OUfFuyZ3dWOjnRvpO>roZ& zOY7Nu&B+YWZ&!~+qG@49;Xt4JqzhnAe6}}_Un5u^nL7yz@j};@ya{VIWYLwk)x$W3 zdR5yT+kAi0@Z$AcJ(fyl*w@2N;G6_r@v@$vmR zJy@M};Vm+kQ5$&I3l>)Lc(GD8uulUTZDd1N+{%_+1Md0-B|lMmg+92>x~i6(OVz1=x?>Z;qGpoCq?o)_wDF zu<6s*+UD9$(b9M*8UDpO!D22pTvRD&c%7ci01{Y{_PNGKEK~is!3rzicXs!*&TRyj z=X`sNzU@a#7og{Ss@?HUEI)Ru;#vSJLEEp&KVO1)If_zdrKHksQ!rW4vZvjDOAJ+s%W3!8Ti8GBf|?c ziEPl9WxMH;If|MJw>DatvM2#oID3?%ah2HMQiIjjl zpU;znIo7zz)st{oN;Y^gTvIlCWqW`DF&8hg7bmD{Eh3G*ptRab~-{X zTDBe6u(t(|toH&kvOa-gqdu$QdLvev%tTeodpSleGBs%;M>%&96CXuUl3bb_`>S^* zodQkx{MWxZ_H{fSiubCyVCXKvvNnzrdN~TJcUlQ$fguV$tgn{oU!@_kGm*}VY5_880lL$KRr)U-N zYlS`m%;7W~tLHy%v(MZiH#$zEW}ER7MGNOGz+ZgHS#!1*XE5cr$ev}Y;NEUgIV45Q z@lYn|zA$!`HGvYCfjf8UZo{N>+3AG5rHCfco*67gM6O^xk`yrlFGzaQP#y8+_Bp+W zx{Y2Z#5U?m3*06v*Ham+QX_#oSsV3KKvoKo`Ap@U6r&#bq>$+rC(w-E2%>|o?%x34 zoeWyr6+ipN=AYK{Z~hm2XR0_3FeN~fmd`Tp%6GgM-%&20DS7}?y^9MpuQ-m_x7x*d zh=K+@OQ@uuFRaWIVe9#ZAui9F@S-I0FBG7()v1MLUjRcmYjRLB&z9%%o+W0_iNjva z2H2J(kyc7_ExIDNjcs+183(i%G#rC2UiBP!E5H6zS|CSH=83@x;#v>WQtB}6yMtsC zdXaN|VF8h^eQ2^wSmNw*n@6LwJ{`HD(?jh{4tu-!mGt8!gdp>VAesdXe_DstE$~v@ zFM>c<@?D}J2%ERjBWI5dWPcrF*cM!h$A+Vs_o5k<;Qq0v1j6LR!ldlv{W_qj58}t< z-(1WW7*MPQ1^!&Vf9v-^)&rXumc;k@+Dq}46R7yuKtJMZ6@@!3fxA4Q?ss54KpD#B z6b;ik!flut=VrI_1s03YCdr+fl>WZc zWV=~r(#Lgr<>%^xX$;F--_gle6C^jG_mkD1@HN8oH?y`wfBYN4-~Fk{P?6C8`plRYH>eeh;_@i&DMG==IoWWp?I`a8B`(SsLgwU!n? zTW-*c$SX2Tirk%e6p@th!l}5U`P5aUYxwNO>(Z3p4)y#+FH0}}aoT;l_Fx*LU=uyT zYdUfqdHO!Rjy)%ve2+Gg{kns*Q4@aBvzRC@ZN=r@gunKTC=Nt8@T`h}cZ$siiEFdt zen0MlGqU5OWL^DBwLU804AwR~|1&XEsPpH5}`7#M_3CRir zDF?h1UC*vxQq3rd$m1X}rPq6KY=91$7&MSXaPh+@EA}-uH0K^LybP^cDKB>o)@Z z6nP)mg4w}@eB~NnPlQ{Q-&K__WTgFkk1kmX-Hac&s7HFOGH=v~Qv>J2V%C(t&)A&U zvB$iQdxF|}X8IC$uLZHwaUYOQrmJ&w%*+Aj*AC8Kxv-(L zb%QWkdAkmB@RJvpyqzp`RhgKMIWwrJ)blGlc0A8o=wkQcPkZLGX;Sdh(jv21%0AWo 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%0DUD&bqn@38Sk=AS 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 literal 0 HcmV?d00001 diff --git a/OPUS-tauri-app/src-tauri/tauri.conf.json b/OPUS-tauri-app/src-tauri/tauri.conf.json index 4d1cebcf..8236dd1c 100644 --- a/OPUS-tauri-app/src-tauri/tauri.conf.json +++ b/OPUS-tauri-app/src-tauri/tauri.conf.json @@ -29,8 +29,9 @@ }, "bundle": { "active": true, - "targets": "all", + "targets": ["app", "dmg"], "icon": [ + "icons/icon.icns", "icons/32x32.png", "icons/128x128.png", "icons/128x128@2x.png" diff --git a/OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.tsx b/OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.tsx index 92426471..507f2d34 100644 --- a/OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.tsx +++ b/OPUS-tauri-app/src/components/pages/CommandCenter/CommandCenterPage.tsx @@ -17,7 +17,7 @@ import { import type { EnvSnapshot, SessiondStatus, CliStatus } from '@/types/diagnostics'; import type { GitHubRepo, GitHubAccount } from '@/types/github'; import type { RepoInstance } from '@/types/repo'; -import { LayoutGrid, FolderGit2, Plus, Trash2, Lock, Search, ChevronDown, Check } from 'lucide-react'; +import { LayoutGrid, FolderGit2, Trash2, Lock, Search, ChevronDown, Check } from 'lucide-react'; import './CommandCenterPage.css'; export function CommandCenterPage() { @@ -448,7 +448,7 @@ function DiagnosticsSection({ activeWorkspaceName }: { activeWorkspaceName: stri action={

>enz3i(cM&^NTl2(GcKah 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 z z=jYp5)rrOt~JnyC0l%%E(OBiqaoU-Fx>XtuWUaROPDfR~qxU#%y<=*^T8cSF; zghQ{f{>Sys=kWd{G1oR;T_u0?b2Yy9?7Q+vSI-W+8+v1dS|P0`f*qlh{%EtuKOI2eXpEexr0Mxt?GFu`*`e-jQG& zGm~P2bY{{s$3(&lN^F@=sbm@+;HF8geHu$0DYTXDVPFrOf6^iTbzYXeWa>M4%_ug5 z(7l;Z2q_SaS>Oi}Cy*`oa8eAo^@GGkfg47bd)*Kvm8y6M5#)N*z>IqeH|j@XH$^dj z*)0tVf1EG*EHfrR;^^i|P*!kT6kwsZxQvhZZB!V2OX|H_j%GraCKl~s3*n!gbA!0# zN=rd}HoP!7c6?oQ95eDMUhU>|GdY^nX!;Z-L<}mK4`Ml+VD{%oHmY_enI1-I07HY1 z{~!WDJ=8$O>LS3Puc4n2oT#UW0Cb54*ZA`;Jnx;YA$dpHTmM$e;^Jo68%Bsr=i$Q1 zkx}Vh?>5*wKn_L3(Hr)gZk}6(-wneW_P2kKW}AhjVA0W(=q&rCIj&j$l7!mE*B&~D<3t`Z;+?AiYW%iDwO%X$b5xuqe5%ky))M$ zKXbRm4UI!gxvRX3U|a#YfNPp$oe{+$*cn_sK@^Z0u&(QgZP-X9SjJkUd%ZQ<^Bqo1 z_FJ3{+|3`Lfrmwuop#Aa+R|sDI*VVLSLct5;H2AdcXJoF20fyg8*a5<9}=S+{zAW1 zWc=o0$xBmCPYN|S`kvw4lieN`f`%i{?b2K7Gv4YjbDW}~YA)jY=io6Pk;2}{+>_4@ zYzH4c#%>CnI2;4fX;&+czfvY}}$KtV;ICkiQ&a}-|S6qkJ z+Xui1`LVQ+^$UkIo)~(+Lq($SA!S$H0Z>QQi~m?!=JaYh9E*rTDW)|$+LAJ8_V?%l ze2+=-kIas?{Ng`&-37s;u2(#THw8hQ7V3QNEFP8LmN!et6f zbQ+r{)XJQA&fBsg43}waioKW0aYL?8x55%&J_W^FFHPW4!fm=|MFDdia65}*y}94w zFnH5Yf|{X^PJWR^UftV(Np(4k>H$)J=H<4Ri$l{;;R~7T=OJaZjyxLLXOYUlFM?!f z>enV2>w+G?bB+sd%becHS7KeUM`DZV$I{}oQMZ}#o2b&4JVY4X!K?6DyT@6wWBG(Z z!t3uC#qd||?c0T4cS>H-l6Bwy`Q08Q-uc;8#pMs#?nk7z{0Kf~->Y&oU9wSkPW*rw zafNW(R{Bct)-;|}DlH(^?8c4p%OCkSbQLZ$C&4dlJDj;mxbVPIc9Raa<^E-8Mf2D% zD}8%CH3iD~{{8#6QKanPg*q#s*T#O3={{+90xpgg%U->7&*_yS)AW+tis^jmR_-d@ z)Q3)jLnKt=oWrFyPlN3@hqq;THAW{cRanma8{gE<&g`nGJp4rXao1~;$G;>ZYq8ru zEGg^1cox%~DTJi+xAO4wgsvF+cC+5u7gW-98$`{0`WJsJ)k=LIq>-vbDLM5~ zp=lJbzL0j9;tiP>qpZ30fVZ}_gKYPE!wXZkT?D}aUzlinDSf>wR0**kt>GWinv^Puls;qjJwvJJ#41arye%g2(eg!Or5OO@Yc3_7xwSYUW1vt1B{{1M=> z*bZ@exh>6sG0a!sMY_4KWU=QT&24(1WBWkm!izhPbhrmCSndoly_J23f8sJ z6Bb&WtM@tW3LB9qhw6M2asdW_;G$HIsT4+l%Z5mGEFFj zR8b=6O(ls#o8)9$r_WdMbNKpDl9^JyvgE)_KZ4!M;=XwK)W|l3!^m~qiF6?lPKHtj zSeb3u3H;d+NwY|3ljxv0Ym5{rr7{pUsXYWdI<~IidercK-`ZZGJy-K@@6<>d^0uVh z>e)&hjqUT@;&gd`Sk$$fe7oCSl!f^&zs@|dM=dSFEWm5QDgCXQbJpc?I=;#x*mdHh zZrnC?UmHfX^3Gid&j&iu1<8G_w{O?!6yMcdrCedyjkN3kzSg(rq;hw0Kwybw%ESBP zg!2n>Xb%CndB)E!KtmgMBP=7)D(dw;Gz-YZ7|LyW%_U9S@CWOx#*@cRS ztftH=JsOyn4VhKdpzwPh=uwKIpEs9S^V^rn3O};{paHCaEapRnj7@s zYpuwx`dc3<&W|jsg>r`o?pczNGAj!2&ZFYc`2HY^xrl;BKc9>E@-9)c>x(;gZsxsLR$ZrX)bU*)i%U0XY22+iw4W`pIjSz4-xPzH5 zuy*Wenq}7m(+j^8!)C>*i>p_-vk71uz*uA*LQX$TSwbecDS@At$b+lU_NvAV_<)`0DQdAy7)G83kBtjF>Tu_ckdy^cirsei+~tO?8Cz4g$~LcCj7Xx^U%alWmdRXU zYIYM0@_tc)Rf#xF4+PJcA~JmhQ5|3Nbjz;kh~U?b4Rhu8pR&9aju+ne_5Wx(^M9!R zKkOGG@u3p3PKza>NrjN6U9wfOB_<*JmKgg{+ri!k8o``xb-2*vDAL zm^pLKJ>UCr-+#dTFf-@8-sfDe>v~>|JU!c!DeeOYWp)@gG#s^9c5Uk`DS1*(P`OW8 zn%2$hImr7o*k>>vWpiRg&ZKEUnw6{nHW!XC1U6nwVuP2DjWuxH*Wp@Ove@>SFp>LW zq~V|-_aWP;U4tDuHjNAq?k2Uq*)-t#k$|&)Wrsz{y_)!yWcFEa=#x9E*(F>qD3`d@ z5cy2t(EBCWT7y*RUCPy4%pR1PUOnl?*(tyTS=q^m=?c^#|9yR5j)$cx1P#UIEh*E} zifzH=SmBP?1P^8iQ<2nrXJX5ExYGHC7>H&9%`@QBQ?haKwuG&Gq{+l!=Vwf!a?b@3UXo$2%g~o=zrUce<8U<`?u7*m^Ro34-#Vo%;6Sm{6h<}-t{yl~tW z%s%LTXmua(<1i3zNV8C`Iib~qef(zzhbdiQ?+x#V!L8g%KpSEo0@afO#V4&V=?d6& zB){bk`zjLdB>pU)!V(0?$bs37wuP1I-|RH^KGN*Si3>oQo^Z>|NzG=C?m0(32>c3L{l?sSa|VTc^WMm{;w?MIa(%g zx@=lXjA*=?;Kji-2Sb~GIFcnIz%l$J%t}n>YKZ}H}v|>zA|64DZY@^z~%&yXb-rM4@iX+SLcFn+(DFzBal?D8UWAk=#EeG8s z={3|%RewoaWu%y!eSlbWEQ&^=&6sSQQplYSCGgIL$B#aly#=h^iTE5DrTm{FR7lcj zHnZ&;q(v_nxcMH%Kw{xiuK?)F_4n?H(~Th!7$jLHZ(?S|7n`fZTA#?*!j#@}NDmvHwv19|UR zg1=qC(h9Kf^ZuNL6~Z}N<2lB)>DeG^D4>QipJINZj(0E@cy`YWUEg_JBx}xm+(0Wit=ZV4nl|xb(+4 z&{L{^2kGTLHh~1u05NEB1~!oZ49^*ZHe{*?yi!Tqk=oKc;H7qM8Pou^*fb@WxPtZK z1k^aOixuS03>epn12z~au#^6TcAgF3;U2Sl41%dIvjIw;iULq;PmquZCI8grYFZi3hLwQxtE`s#@2i6Z^y?d%KxyoF_(bvS%fA1 z8);?L#fcrAY2)f=w(WmPLRpjiKnh=hI7_cIGVM@N2pfBMJ@E_`32mTPjS>H7iNJPY zEOgVczU1@)_4`iXIOSwY@IWP3c^PwH$@W22(&0@&p(JJ}#K;P++nWww5A)DLVx z7b=Ss@Gr&-k6>0P3K2ngD>Hq%iMVSK=1%~^c8FO(4r8<1ipyjrHd7D$NoQJ1|Aa*{ z72(SCTO0BHAP-xzyq+l{aOCJxLv6S>7; zu3KP}xNj^$1TMAwM{`O}1gv_NB!8h!{T*6}{j^DrdN}^ZKYMmvPY2>%~XfQUj zFtT0eBheDpJj=f-XUH35XF^Ut&e~`zLONbjybKE|26z9X(To835?S$$wMt(DM}4UY zW}w$I-TUmeG-tL;4I7eqAN|(sUKv^x9RKu6NN3VxgC7rRJUS=|ss40Dlcva*asuSg zu<TF?Lt zt}b9hE8sw0_5u-|2E6FbUV(q%{db!?!ivL+sCrY{Ja;@cKStuaiFo~0>atY9ZR0s8(EXNoP zk&!)3X@5T-vcU+x)@1~blj=0dq;3>Ai0&$|klK>>qW2Cn#u=n|9Iy5~N3!;?5xwM> ztGTZbEdi?q6(Zq8Q^)AbeI4*Fn&LBt1xBNI9xmYK#Q162u=C@|kz%e)&Z3S5yT4Vz zrNRM-n{o5q_T3oNPwa!7cnwH_07yZXwqXh#UR(GDOn0ntq6I(kF}Np7t?-=|LaX?5 z_2eS0I1y{>Qv#$Y(a1XW4w3ygMTvY;<9#T4N|C?5dKg@MBQ`O? zq#jZ_;ZnzQ{=R3*PQNG2-bD$N$nvQLWX-G$k%bhM96lMquZ1jnWs|y~G${C_R$(u* zXIQlw{to;%IRdn!8C0o9338i*qX-)&y-0!0e?E4K*xajyF(FiNUqwwV%vas({n)}8g1C|E7IJ=H1`{)PrhX0%P&EikjuyT<>6e)6+t>? zrfkE(+utH{_f?DwP53;i?MLW7KTB8h3Az)Rq;}^aC*~j-4<4YE-tTXfkLK2LvR9{#@Xd5#HFC+# z7oC<#=SDUQ*goe4FLj_iF#lk>X5W1;xgI&2Od6G=6tjZBo413*&Xo`1w)6jd%K^E0 zu{7#Bz(9~#?Qq;dm3er0BhiNEHC)Dmhc~fai8u;K=IoH&@x3T#C~$)#eD8RKG)LZO zloa`r>~!_WlEqm0#k_AfublEG;~1l zb(B&S;nMAim=f*D4;`fA81K)Y+EJXxY_*cU zY};?BROKq~UZeqsmtLJcrn5q&XweML{kmrBD3p-bG3-p?4rkky69 z9B#jG!Fy#ur6WiasM$HG!_M_BUH$@a5j$eaBlpA&CE!<5a#QF?h>4i+)%ixyZFR`G$!0|FT~juWg@u;ko|U}tx0>gi z?uUK<6Y&8WYeis?G6D*2{=fTD26@nRgyM=5=`L^_u&2ASmJ!JFB4~#p08Hd#?RcQ!*!RDI!1d!ZGVc>YBn0+Xx!3M=ffljvt_cunGG71D4QOcQ!bX{YNa!7 zu+DDunSlSXkNK`ndxfqqL&V{s{}xlKCD=o728>`~IRW#S$%|5nT2N>r$5=d!a)Sb! z`KepWKj%Tz9 zvXy?aBRJoCs>jlWNR2Jvozd;AWgY$@3gh$Ro^Ih+VsPoU;LSkCo*J#gLk<=3u=n-Q zSM2tch�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%0D`LiK8v zH6*pqQiwVNu#@Vd0C8D^F#>7HMP@tYYN?4p{VGp61M#;n;e$%h+HZB+EJp#Rm(jmE z=yj0GcMVVeuvdUMwEX0Q-Z}%tW(EHwNx_QdT#c=yi`jKQKS&8ZVV;9h?CtsAU#8(E z2EUR#S(LL5YE`B2G>faEvSgyo5u43KO)`8QCI%>0Q!+<;=~*yHA;Pjg;!UNi*Ny|P*8LX&$8e#gL#2VMfgos+AuL^XKB{+N1-8E zl|?@ufU)ki#EcZqWr=uiRSx0;1RJ&O75y_G9lLN}9GLye1sQMYUF9B2)_!drnSHW2 zrRRq)A_!XQ1k6Ln;6(tPh`Ra!?7V5Xf2Z!P4h?zeP~}SwpGvogu2AA6vyDp!pIPBj){ZA zU2R2Aa%CKRp(dtz>e@>q_d}DTRs3z2ZPR~L6dcB?Cz|R+17{ye*tXT3&irot{&4+b zf@grj;v+4op^nvXe($mB;94y4tB+bCG?XrRuIPbWZ;xs8PLoZ=~)uL zdGc?xD7gWaN7t}LHBUU^Uy&SyJC#tYzFO{FSs46)xb?xmPXJ^RD(7nQUP0&a7k&9{?fk+`X0hx; za~w(&zP=U*tnWOrEpN2WjQ8s(Hg1xIWfT1#?5rp1fkcxa4TV*qy`1!$myaFBrJb2VEg;9l1Ly7bqs{-r%vq zu}E*4J?7}z5hcZ`@{3ngl%4xKON6*+&N8*_@ZX`AXH1}1DgSqtZZkxbFrcU*iYp2a zl#|MjCSQ>JA_mWR&@ArX2kSJpHZcwD<&3gj4XwnjJD)4YkA3t8v9dsD{$E z!}YC=)SeE(|BLP%@c+T@Kg)cOmK*X&<)bJLds>$V7!Q@XBX&Og+L8J(-Znb)wlle`}Ft_Hus$&9^a z0QGO8UxvM3*V=g0l=hlh#M3(jACka+C@+?4ub#at!^*$KzuC*7IpTsB(A^8=Ngiyp z&MIym;N9Kyi|s8L6@hCe%TCHdJJK)|+yM_WFzb4^V~C%31Q^OglkEt>`Wd(bhetb} z2*z;#!il{50)k2q_$l4E3@p{^r7+J0Cw9;Q#vTU8xf?P5^= ztRq*HclX^=YCmoFloN$*n9%ru2zkXdHVTg5_RR`eIVbi;7Ifvy4|tsU(+wq!GtLLM z;uv~Yh)D*WZY-=`^_GVdf=sdoU#&W{psg7|2Z906%D6z%U;CBa6VSZbqCH44F#KNj ztYmeWhPB1b0t~E9TLr}twV}HS_ltAh`isExi9ip0qbZ$R>Fu5mvS1yB)bP>t;I5D6 z@HnI27DTKF?TIpVouCaD%$UqF=ilxRY}28EuyXdH zkzM(``RplQ2ab-VZt%%nXHhz8Qu2kOx#f9YmL}A6ccD?NVdMnNQDwbl&+);h^ zj*1vR0;xr^ZK?9P-rwkd6|~pw1SG`MRK;sQ*j%HBNnR;63N(3=+SANG_3!lW!#o`m z9S7;5+R@6QmaS?_XA3LBez|&KOk`rl5U%Dz)`_}j9C+-Ca6`Q<{UqU2-7R|XW;g#* zwIfa?R9_4?i?CoHg${MBqA^^k@z1}Z(wF$n#vbJ24j0e00ia>vCh-;S@R+ZTE6GTA zb%COSzDVCXaYZ+g5|sI;$kdt~!7hp$;M5)Nd{+2cQoJ10P9GuG!(G`lJAjH@@YIp; zRWPo2nzb)i6#!&=Ybw zijE(;$w&x#a1q%j~$Z7rmb-6xWHDSigz}kw->1E}r!;AfA3UJKypG>&1`5rRR6dSS)3bZ3+F5>_-M~SyaQ#Y$UyA7_CJ7$k{b-=T#)b4A`u# z9}eUs*L_#8aH>x`pF*Do_gbJy^BC{IMss83)?EiVmrc^>1(p*qssbyq=13cAn!%cx zWFe?Q-FEtiluzi+!&dIocSw2e$oNC$M|4(BWQW~$KKj__$}IVo)a2mx;oHByi^s3* zV*TdZJXtv+dATP|-L;i?+uK{CnxUF(p@Zj7$G$3boJ$tMTz&1kws%A*5W;7gkn*u2 zzgNE?D=b_Vi{B&y2B-R2~eFp3w zr^&8${Mc2{vMjS#}E41qRjLRv`P^W^Uug{(jhg|f6N7R z=n;kg*phNxW!V5#u2zTBQm(Sr1}~Kb1&`r4n;2n8n1$PIXy~fMm1cBtAey-1_p2Sp zzh=tVw@wqe{8xN26>RsG?MS$MZ!Cj@4@S4)P#tKnp&)n+F=yF%z`q?53m?RfA>8RT z--qdZ7AWDUv7{xP)F$|@Zn3fCooQg>FG@kHX%l6Q_5aEa`&fKmXhgsD;z8=5JiDAN=Gej z(oaypN^f;2L!H`tCNU)J?0WU`8N2h&G8n$fq4R?|DMM*}6}^R02aTV)9zjH&eUl z;dU}hb(aj1N*cPdOZ$#)RT%nezGf4#8PM*cE&i&myGwtgY=TJ;}d$n(8K*5Kv)8?~v{^RCD-PuyTWa?$najhT-;XpcPn^T8N&&U0KI`;TJ7yu+AsMY^S{Ct)qrk~RQC>HOX+&H>!gpx%U)m; z?~MZsobZlO>ssOBwA2Qdyuf9pMZQSDU>cz&OtB!HHr|_xHnHQ`O&%fc-58YD7^ZxpQmq zOd?bxaqZ*!?gT*-R2^J3O+ZnC&M#;IMe64#-Q}g*PFGLhbj9|p-I5!2e*PHK$1%hF zF~NS=kW<AnO1kIXBAhBOc=AFadq&mx*1BoD9xR~TOwMx?9Gs*Z z)tu{2d6SD4mC-uk;e9oXMZ1)&I=H<6EWvfq(O+15AmojSUj#<6H4mRa8bKWRlh5^~ z3;J`ke%q@mx$VAo$_XPaNgc2f&5XlNKV@^ueeQvK@Q_i`*0p9~{BeKqkc_n_%PW(e z@(aQcYB#t$C*L%l4BaT$mdI84I(i^2EOGyTrO*Cq(EDItj4AKk`Wv2g+eo5|uHC7K z*e=VY1B5fN;4f>tJ-AcXco}owfj;@%i%9T?s>fckGn4e*X&b4$jO|D5Uibz)Gue$7 zG+{PsDov{6w?0~FG;Vc18%9Bs+t^m#+sT#^j81frT+6NnMp@5|TPYfjR6J0pUo1xf zHWDCTnLC=0&S{VZgoG5)q7AoSkXkr3mDE0DXqTfywiqjl` zz(wL-J$f3zLa$JjVF5k?wTny%c>GmCe<$z*wfL_j@BPQ-uCueA$*)F+{70eL1-q-~v0e9uwyPe{OXM&$#V*ZEVWbc*SV{tW-n zq}2_{lPPu2+z`x|fr90a`zP{5D9zS-G=`!_7lnI$Zu(If#|!qt-Zp3eNAJtuM`b!K z%2-N`!MQuiY<^@JxVuQ zVRUsVFmVlT{jCgJqQu(evm~5qbXX{?#~H8!_*c)y)rIYvQSv^HHuY+)H)D7Bt^)d! zg7fw_@1$_&gX`}CF+KUMvbZA(l~?_~4TwEDdrsXsS??>i z>As2;wTSr}9xbVm1J$ZjC}q=y+2vHRfC@seO*nIwgth~22~Z2jRuo70QlSN_Z6AbR zY#f_HJJeLdb?1B~^D;8~CF4>_Gd{ONx@=poUU<4JCiROUZMLUavnP+h`$1Et_~x=jFTmm)`-72{|1^s{zjxMy#t(%vGCd~_W>Z2qMPXfIkAYbi7F zaQrQfQ`F|ueQUrE5((Q9H->wFYo$RU44{;68>#|^w};iYs^Fz#4fqckQ;vYw3hYZq z1!or&HdwI6r@jTPP|k8D;0k~Qx;)G6c{13Fq$4}2e#QNZhwip$8G3&q1Bc-&z7V>v zMsBBOLmYm${Kq0$NQCqbZ7dQTweNX{a_sGXE4@d7t7%U`Yq20X`b=5XoB9lo=jtzt zPyZ500F(@k3w$bU_y#y_N~KLJFG7MyvE(sS0#sm5D5clr-g%XnY7LK`vfZoA!e3J_V-x1Fkd9xWYx9Xql$e*Vp;m`=Y7 zFYC4@#P1-S`g~oaw`?A0l_;Y2@V~plYuK4o7GCyU4>pB~+dKJVB=h(zy7oI$#sPSDcWPQM+6FHimL zXnk>O%w|`{`UXKVdbOoi&inl=BMDcv_&NGr-RD?S=$Wk6yM&iJ1z-_~f7i;g{MVTx zj47dyHg9FzJl;{O3n|$AL_%R|U2eH}9f{#CxUUTA`mosid&WRzjZpw+?>^{!Uw`55 z-?PuGdp?C&@hhW!AK;VCo5xz8&gI;3eD++&H(<4&8Z_QjI~K-3+ce1L(7lFJmov=j zQ*-FB8}y&lN}^3D9-T(?fGOqqWZ-=>LlZvtuM4U~bv!acKvj8@vC3dI9BS@KPkcoC zI*9E=F>z_Qvzz_mE4rZGZE*bT;#oP|ueo1Ea3`f5d;V-tt+s^*%X+uSR@hXAZcZd4 zqa?y~LG{`(0n;A8J8(DYn(Y`CBsEpuwCuaAiq$^~4C3fN+%*G2^adue`qjkN4$e_cP*W<2U%H&(Y_ zQVEl&d@Ni1!g3`~@TZi1u$FbZu)DHZXF~ben#Jkz_AL}}?JW?qri3RbS0!jbAs}++pM2`+I=t4FvRCIw zc=&>}$n&k`FWI;DASgV@z3iDPTl29QY1_cm-jvc^;Y;RS=YZLuPV5I;k8jOFxTPaG za=Z)V`8E%enl^+ zAZ5#^zC7DMe9mSY#d7nW8W^=^Q^2xMDyy7_@%;Ee29E?=nSj#YdSYUk-?5GT13Bs{ZRLF6~Yp5rlV%BD%9quK?XpwV>;m^@_>c+NO^%lKbh0xWGrt=%w5*%&C3;VgO8WyPW*hrnhQ~M zM{ndK+%%o|o`g61*t_7IusO*}>ugrEq(D;%HSA%wEFk!sxfE=j^zdvpfNzq@S%MkVS0)Rb=eP$wN3s!E79CZSxq6wS~Z1zo?wtYe} ziUQU-jhRy}G<@y%5mU}$+XcF`hD33h3?)I`*^@KfMGk+oQg3`I-SWP5m2bQ<>tsAF ziv(9ueXF_Vla^Pf`$c~i?{AQ7^B{wJ37)1zOhM*#Ai zJz8Q_M(-+i9MZG%smNMhj=dO&^T9VU%kIy9%uqc7@D3+v?w(KH(Y;(nQuqQ|DW!^a zBoD=(c3bS3pfIfWQelAGdXvV3(OYp^5bJ~R!JVC{!x0{HyF{LQu-*ptx`L8(@OR+Slu}C}`fM{0q{i#Z7cW0^gaSP{SvPS zbqPzn(}4n)zNQ7dNqkG3r@!cw_ZfBDwY8MT<62PbL}pj_iw-q?#35T>_qcM~!La#5=~QLf{<}Q! z?$J+Zg+xZV0B^kK61KX|4Rd3%5o*2B=GMfL&~!Ig9CeBr*4bGY@=nuxn}Cc1Ls)-A4R#F<2K$@#$y(gZ7A-H>72QNS-U>7R~+KC_`%2SX+?iep94^TE*+tRXueZF*0Oasjd#LCw@XcYlFp%XTS#^SOEA)&r!y);-b`>H~6^LlLZ{O0iEca5a5$Odo8o9 zQnZY}4K=b;hwSAAU9UZ4j;cEn_}Izy?%k)N;dkB zpz8VUt%%^OxqRn8ci^6yyiiTV9ZSg2n~8DJ`MbY9taMc8OW4kRawQgak9>;VeSg-w zjUnN_gHmzt6@RD1N%=iHQN~ZIc}0)si%x#Ua9 zRg}L-wrbq?UiHnk$yW&1CzY0-cRl|KFD638AX|VF44z5I&&+Jp89}65x&08FN!?OT zZYZXBl0~6;=L^PA0j1a6^B)v(IeW|YjI>7Izf*_$EP9@+?r(CF(dO&}m39JK^}RlO zB3rZ^Erd=?g1MzkY(jjDZbrId$#n%{#bdCSSo)GCG!z@S({8Mh$Hu+GAkxrQ%*ET~ zWrc`zyS>JQV0sxe@y~@VqN1V~91y;Jbo_PnpFT&>9qA~AqwW}%opZV)DEgOtR6=9z z@7PB#t0^BT=G>?#RML&s9ebkyOLK$HW(=BQ0``A@iRkh4nwjm11@4YtTU$F{sC6r3 zzO=nFsrE+E9uN@e6#L>|T~q7?uNTGKu*38x#(q=Y-gIH1OdOG&}P5nb|l> zp+#ZnF?OV6_3W=0Ih}a8^wjeSu>qQR?@MlU{<&dO?@!tBj{HX>>V9z0c5#p3#+;@& zsQ<_z#5|fyorLj9LvurHLam+JsWj-0GT{S#JF$PoDVl9IO+tK5ZADVYZuhZZa{S-DO$%{H#{!`ya=mp^L}z z=96es*Yq#?2gQCGJkn_1Mc zUbY7a*UQ@xcH~D7H2?KUe6`uLgo>jOeaVYAF*SRI{8L^v$Mj9R2u1dQbp&@(H!=Ne z;Se-J)Q$8$+Jzh;+C%P`2v2)>N$)5#fAe&Ky;BP0I|a-35M~3SFd_KkJ(S5xAIvN= zV5g}XXt@Fn&!ZxN9D1qHo3nF9QxHGUdoRmKL3qODwy-E>CGTfK5CyB+Xz(6Dl5;|K z(J#y1Kp!)*3j6FHZq2&^M$Kk{z8_Gh%)rASLtoVoM+HqDAs8~9E){#R(yu`0_&aXN z-Z2JzsvNqR6oOgmRSpb!{vUy1N^_#CG!q~dg$;u}&({jm(GaaGTWP|7gvQ4!Z0%rw zL#^SdzOAh%@zvE; z@^h@do#bZj-io#|xW=RWT;*I}%Sq)YA7y;bH#bu99-IkO;{0)`TW;TQg}!TAyd$+r z=e9L-YRKLsqr_!=%VFahlL2XX|2x$5clUqCM|;aXM)SqwzFd0Y*)NL7wq;wnkO>qu z6;4*qzJH61JkBrs1yHzoWfi&?Pm}{2cnAGvn|i8(2+~!5Hz|a&-*($mDS+`>{kuNc zLFra`zK*9EQh2R`)!HJmw zdE{Rk$EC5~wSPDt7rOXP){ve>Had$Qzibrp>B+JoJ3jEjAOAzeiTl0Nel%}@3%)li z8tl||=}oYco-E0fnsR`vU#g<+cTE_BxDM?t5SRNT*+l5tCmvF_5Mxm7zL)v_uj~9@A*r!m@C(86c+Mj!zY5<4GTfff`%#V}lepi8UsZu`U4d{h&Zv3kiiE<4>;)iH>?! zESgnFWew1B8}sh?JlPyTK~b@!zv^>poZrz_XHJ<4%8FfNW_P|P$8mEddpJ>s^Ym_3 zS02lIk2oQ%rv17%T9&CUTdWDc`sS08Ln7>yvc7mXIP?yQu?bm_*5r2hPvCAC%jFaf zqbScG3P4f%&_NC>{o53jFn7(#yG=}#@e z#S{>c2}RJJShS;o#X)72zwT>R{=42UJOP=LZJSS_z z+ytt5&gRK}M`c@Y&T%maZ$s@Yx$Bv>_`inAwCeU_;>xOPWiM&?tVjvfrqFgaeSthPsD)2k^r8C1{!+v zLN-wpyW!j07_iYF?S5PFYIP`T0^0JdX_S1VFC9-XVWGR>HgT?CUxiy)_KxWCM2V5WDsB=kha+_|S5XbzZ%*rTr=-7hcm%HA`oC_cH!bVq%7V<0%7 zOc-1cmG)}zh@Q65i(1Z#_c&SVqp795L{NiFka%7G<~=c`33sA^;3xH!*;5{}sRV+l zZZIY9kp_te&~4t_zrU`K%5ko{;3|^|Up_*lPvaV*dGy1dbLer|-LT_y8`(M{q60sH zqbH!y_ab+VP=0D3o}0ZNd3w0}e^(B?w{8>R@Og%!3$mSh38DRBsr{DZF3^uG9o6W% zH$Eo>OvszJFs;&)+MmnOhX#l%T&P0+!J&U4P|Z4X9hBjlEmY9O9_`Irjke2Sn^XJfk5E^kCyiYG)v1P9;dy%IERqX~pSsp3QZTdCkb|(#Tc4cS~wy z1jpcWuF6$x_(pYl3cX*hhk&;1S$mHl0f7m0>;H_ASbL!Er00smZ9b+l>wG2hipT4Z z)A_l$M@N9Nq2v*Q3Hu^1aI{DFjPOFNJbdFrEmd$iz|=Nmug)&>()*9Vfz6rD2noJd z&=pDLf>}~xP5CR8+{OhgdzWssGq*~VL~5SJ=;FrHm6*7aN=f&_(gZ6)cWO#&_HrlO z^W$a~4%TI)liTVP8Q&u*P}B9!pvm;KUDq&cy6PI%Ju*2T_tGCNr(v)av;3c*$yhkP z3aUie%owVxOGrz)&(230xY3|?SOM*rn9j;V;NiP6pC#M-_$j`f;Mq# z`p^Py$K}BV!omto4QyprOUAZid!UxRZH914JHdM&26!-e8h7>JI?JVja|+(s)e?-_ zwN-1Cc~A+csInUno5&nBH~CqHti#mWBaj{Vd!tZUpQv85;69}sL{F8cjHPh2?5lC z4o7`ik?LU6*wf?St?yKD96;e0dr_e73cG_24UXMNm+#EOapJJLig$}FpIAZJ;S%XV z_k2E{Ub_4`e^~P7$s4nxi8I#m+hm0VOEdDA;xCY){?bY0bI!IA*O) zY*q|^fiK0h@6Q80zb2bk3vM4ew!d?6wWg?Cb7GwgNC+11LUFD7d&+ur-cbSv1L=BS z2VEa){ptU9@wpXm!8a7$*hBG7&C#~fG9%jz$u*ZTPp_7dQiD$!>grRyUGoT2-MvoK zlH$Ww6N>k7>DM|!;Iz5iNDL`H{2ziA&0j1Qc>8`GCqF4Yo_^}&6zeNP6M59Qve%#(E z+8pKHhp@Vllt%xnnik}t&))74%){=exYX&l$uvT%jkIM@vypy4|Evwn1Bp9jx-Bw{iZ(c*rYv`$z(}CK* z^xC$!eJe^!^xE<7GAci5b8*^7a%)Z)Gsac}86?DEw1_<@X7 zJu7rcwdo{wmC42B@{@I{J!lOFKgF_|=Vri9kFV7t%))rl-Z!Jt$zK|c2vhU)%@QK5 zug~c;jYQ@`28Sy;lRu%PC(Nu+luEazQVGde-%b`ohJm;``3UBX+IM^GkZ$pvAChfm zDd0S0SZdfm3@Xyv?)CstG8%sNcb5AWTa?lq?9o;ow@NM5E_&h`k84zamn(P0K25?Xq-!O_-YXJAUwZUkh^1tYN<<+52vJg$(RQrsTRsdZ$jSB}AxIxUFi` z3D!{CdvWH7bpITf!L6oVh=3h=B49>7K7d>Bgf!-7f@38SL^x0h7Nl8NuOYH#4q`82 zk5E7Z1#Zt~ShkeG@uMBBdSi@akBX+LZ|FSkw$X>*?{xag-poGy3zI!j`Ng~AOw92+ z=KF*41myCa2mh3n1H@-+pG`8!8+b)Hd0qYvzjt#*q4e^#sCMFE zyr^8LpBS1B8^e9eRPgHmdGszv5!LXcPhzz7b@&7Q2|^qPJ;r=nKBV%_3ocqkZ`su7 z=?Aha+uctjm0PAxXndA;x=)eK67@TqP479g>omr$^DWlRdn!CuH-1WOmA}x2-;{|p zDE86x@4bdQ)cx7`1XEAZWsZ9Vs(++O$Xc|gzHHQzM&_8~Rp^h!_in}ezJ>Cyem)!a zKmVd(y(jDJM4aHT#geMeCUtS(GO19{VRN zd5GM%@V7{)T3QYyOy&F#;yiK{(lDe0v+HBBPjpxv;eRjyqp#_6Yrz6J z0(Yuh$-qELG5fQ?g|1rDwzrThm`O#a6dRju3U;kHMCpKVmKAXcoKauS`VgkC-^yu~_ z9>B*84U1-W;uS|S_;|qSc?Y;i^O&{qhV4cEqX{murkO z3V0N6NxX^!xlZp{=!Jb-+T$e62papTunC?!Ii4~LRX!2ZO=~lYTM0>_@d8h68cOy= zEkos?m5G0hri_&1ky8QMd@j_yHR}4SbR8%l@>kbmG(zWRdNNp>lU~5_$HX~a$4(0= zlI(rh9YU8jgI9z4fmj6v3hhoQpgJ&Ncc3}gQQ6KEL>dKUVjq7!hl8aZ+4M@RyZDEF zsdPTVI0WK=&JX>WD%bD5y6$x{%7Lm*RNu7K5niSkfnINu)H0Xa`Fsq%<6{55D`~<% z`9m^a;?)w=p8K(Dy#K2!{Y;q}U!<06t7bF5ZxW22*GO0qH?=M8^ zFz0+3=2G#}N@aSIFYs7;I#Q-na^i@1y7z(q+_uhB#&2(KMmWC<$_c!bRI+QX>$x)P z)wRYJ=WQ!SZQM_83Fm&OJuB$%sYxz`&a(fY@k#&TDpGs_eSF)@k#Jmm_1V+tv~uTJSYG&N z?_@j2wQ;O?px~zey!!U#07}9G?Ry#C4{K>^E&o$D5!rirCh4x1TlQdJ2A^ypqw!qL z5)j76AXeG7C{GIwDmS{Rlt5kzt}c_YdT15f^OH*p!}?CD!8|2jNb_)7CjQf&c*|b z7Un|qAYp^4s0($?p{}(&ta1vvY;@emc;;7EWY8GOV9!m=K+)HZ-g@QDv;rYR zVx-oBml_zt36zo$fn^CkjJI}ooKY_v4Lyk48H`k;@U{eeNF|R$@on$dzIRva>d_s|edOM8?RfCwe8~^o(es9H!`SOY=r2dXY5KcYyUQfI* zzJPh+_0WaVjhBPn{D|Do|M~y30N~AeR_QYr?=J98@k^S@)#tfG27l#!=3iY_GW?)Q zE5Qn=RmP8gd2yK<0mr?V&)pnQQm^#ckrEHERaw#)?z)st!P=SV$u=K0dfOftJ-Q{Z z{a0vmb9~VK5zXAbe{vO|HfE;!3h>O_Qe>+59DNmrlW(64iLYC{ zriEXB&*DC5FbY5J;LXV9uRJ+TK_Xp9&3E+p3TWl51=a=yH-!Qpr(QZN1ZjePxB*Q% z8?&o$UUGzhA_#Xqdq%M52Nt!lbX%^B231y~wqmKA)?>Vy9oVQKd_hKU7vg~Df)<*B zdg(@23r__Gw((Sff#=Ww+u1<0TE*Thj z?Xjm;!#gK34&TCoSB<#*HOOKK`seeOh+;RK$a0R;IVX16PGr4Yyl24IhaxntWR)P$ z*FursdrU=;c8*r?fbmDMEzB^q`Zb7zfcrofoe2guIy7sPia>3&?*l~rFcoQ!k{AGg zi0U5@KivZlhh$PzK^wF{yjk#Ag$$!iGbZ&Oo%`I z;s2x&Oc`pzhflpS&JVd>0Z^=0(oDEdjaqjU^nRWsGBscOkRL26 znZ(f{t-_c<_J1g8Q=vw|U+TbT&Bm0sB4g_s_Aw!%+q|#JgQRGB_GZFt3*E;YgrFvJ z4PmrqLEit5Jkk&;Mn=I|f=cpAuBKSPX-z=YP`e{9G;ZpPHbYgzPthVUUpj9ZSzg`1 z)s_cc$NiB@=j(^sw4STAVmw11L$p$nV=_S~>#DgPo2#+#^$6hH*+d(PY-P*jGeQ*n zY0mWaU$GG`SdkS4;XA@}VPU5SK44^H8Er4kt@w>o8jW?lZ4mXXrttUopR^vEGW<>< z;Lyr{a)pIuZx#=dMC4z_?~OvUq2WSk9F68PexwVvAEHBOmrU$9H2sNx^98|}d~6Cy z^8lEXo`w4?MILvrbynFxAKp&MQ793QH{f29KbU`_KhD&uveY=FRyJ?7v6tQC)gIt_ z6|kSJmOc1hTkK1FfVf0-f4SCQh4xb-tZP=2#=EKCRfh+6PBK(+nv8mw=6*IMJ)ld& z#$EB4Qa(ZbU3Nd3qr5|BGzS>=%_6}ESf&DK58FYot5O@!cE1uL+HhUszt_6|$={3d zlxpOqFC(-RW}d&)x`gOEwLAeIhVZ-(W`GPJD_UIsguI2AhqstP^NC14?}rQ--ANIT zekQzMSTyMrr{NFVI1DXguhz0;>0n(iVhAg%m;ix5(;B zS-;ydi3ly~Co1<`$LZwln4wLGYt4mfa##=UstbGt@nSF!$NhUNRvgozL-V>q3SV70 z?|wv4`45FrAA!f8&QrxQF3+PvQG^0YRXtrS5HFS+RF}VKuI~A^x3)M9xO^?k=Rswi zlA=r&4^T9$#&lN~NP@PbW3z+BH})fJkL%wI*YMh31v4vzVU%S@gN9+SX%vX$^gD=} zPskQ(bn=KPgx1`>?b^mdu0pkwCXeL;M+5jhu$nNhCExh&qlsKl*(#^T=2v z!+F_c)w+`woQg}I2C>DkcQomh)(s0o>twYwq047-yCIb-91tEgP#(O3N>eBemo)5Q zz_(o2`26ipUaKRop4@g@+1!BKbpM@%3;JfR4Rmc1^~it^*+t$hoX>nIKN1*zD5NS3 zUul?=`flyCF{nGB`ziWrn238VxOl>9sYo>bVL29TGI{#@e~%n^J9wmVcf2j#zipHa zSO|+D@n*gKHq5fmElC;Fp{Zd5Hg6#|3)XAsU@L%&dh?p z)wxL%z}90ea~3yU2lw=)Fi{0gT+<)3;&QMDqgiP+ch3TF;&dOc0R<(;L|bc4z2(Vg z{HzCC+CZ&q^3)&M{0aO5pPQGF+{p@!qk}ct2*c+w6X+g?Zzz?j!~fZUu_QPe%sEHK z{PIv2fQqT*^F(0cCMayh7)XI{-nB-v$`)5z*7dAbi@)lcn5x}|Zh#^z{O^9{?$qu{ zm((@J-ho}O6@g1fyo-gq*$dh%A<#<1_fk@ai1jESvVqQ+a;OFP7EtaH_B#==+Re_{ zRoUmx&t)~p#~NJ6EkPx>W5MC8m#MB)6dqU;uu*Cp4#i~L*$I;&$wy4aw$U<#NdO6^ zwYLV?NyA@5-c6m$0|EkjXJ!1{c0l*v6hxR*KAA5g!1LBccJI3C0p2(t_Yo}Xm0h%tYo*HbgKG_Yw(Tl#4Ej# zU207YF_nK&a;-(^^!wqgvvMp89bO_#vqME3IT^FjcLs8x|Bfvy<1h!8EXD4s35r}f zC(H6_Mpa}nK7t<&23Qd!VC7r;B?;Smr@5xh7_MgcWEdUS^m{Rxu^gm3Rg5QHY?~E+%QZy#*!X{6I^O5tTYywjf73WZ ztqrXBhh2usP=D{YlSjb{OX=6+aF(m?`dy%+?pMdFR(Y__68^Q6+l3u0S zI;w6DGiQbWECrP$d6d7lquZ^~Rq%b3X5b{hZxk@H(hp~)#HIF)9yqV?j)JZ=ms^aX zf$N|SjaDh`|5aERyKbC@w1i6XMgYiSiV>RyqRSzgpEH5QmO*P~O6TFiGzzL2aE2`Z ziFto5*#M+}TR=bF^K`D^sSjWiYB@5(SO>;s8>U5fBVFzf;ER?hnnAm7_;8l`;$w(N0OzX^SihGNv8V_ zq^0URu_1>C{{UnCu{IiCuzDm-f5_&!&6(o199N{^R(4#kf5T@jt8vb~1o~XC@#fh7 z;Y-TT1cd@&Fz6`m(%dZ@j9G2@Y80YE~+^SaR`Y4Ei#mDgRY%skgE3yRX8 z%4lfj)CQWZ5=##ako%k&(z|iFu`fy}?gS)nu$Mcv*!u|?8-HzG6!ePJHeeVT zW`1JSBUPs7Vt5yEr2E-!dlZm6h1)RGJ;GsE6UEOkML zHcw_HDpE>op4V=u^c$)Vd>9!9%i9a6SmY+e1ECot)jDa#P4a&lLuSXZd z`lMtnlPX)gUU-~z12-p#7a)VN zAjGu`Mnv~z{`4g`2fr~uBQ|{kfrfWl<)8^XFO5OOu9*9jOQ?iJSoG3Kph#~ELr6=X zf|TsMT~U`RgEDwCOdCf)!;nfAD+<<@E7zZb5Fk}kiG$Rv2uNbOJs%R7LRs6jaJ`>{ zf!EsbfG)(DRsXrbIYxZ^5^`5&^k=8%%|F(vEh$gZU#ZX)Jb2UB&eh+)!F%&jFP$;; za5X_EaIiTzZm~=LSmkGEbue<9La?e8WQj6YMMl}jC43F>Y|gJd9a#R5TpMC~fZ7ZMirfP+LE>5x?C7nWT||MOoXhB+1e|?!x|qS!Pz&eXQwl`gsXh+G;v@; zJd)6u!!a;L|pr@Gni;GXp+PAl?Tq zizU^Vd?CJswx~RS`H|O<>tX2!Knl{k6dd=;)=UjJ1tcK~D?S4G{Xk)mG~lttE3;%w zN50a>1O6UnfnL^H)Xn?W!ae$-8Lba5U-AX#%=e>gcO8hRTs}}IFxDc2bS%CtVoZ&V zeQddZ)0N3MWM$V0`iEM5&)!FRP1#xhNg~uxOBV(X5meeDfH!qZ?zyopv|(bz>$63f zA!X_4PBi@RB%@}kklLrTnbO*y&$66m9N6~!-Y|-HpSxHvS3)C16{J+OAIz-iMV?mo zrkp*wIOm#J*>Q0du_yTK;k76CBL*v(-bm_+!aKV^Teb5W@SPfI?kw{;u+)8WOVTv^ z3nlzkFN=NC%$3o_V4_wgZ`MVhyT6q?%&EHpnU${(;D?X}0MV1>?fx8ml76YlRmVg( zE-$5g5p>B`PLH~-DX()mM@Qh@YT!=P$&Gg@_n75&wv|?fE@bi>tIqjEBf|qOB{33d z@jo^9sgEoiSAymZxo0kc3-!I;;+AGp`qj68mrm>Ysc^jim3_oQ<$R=h^LE6=Ry*e< zv19Ll2B9%03tUr++;)vS*rQQ{ zlboS%(f}f26V6>3IGnBY;4$-A7M3e6*H^3N8TbP?UOj!oz~wky=x-bLd7{!v%BCK{ z{=h8Wtf8>H>IH{w?}x+uKz$>6e)hzK%4|)zyMsacqGJwA8B;1lHi88`bel?0`^Wn2 z@IRA?Xc!H#_1xMio8NT^ZgatUC+s_SMVWX_z;E<}O!+pD9$hm00eqOR%=6b_L_k>U zTfnnqb(XytP4tY3AAIraTQ2n2PRo_UYt214{l3;k>t~z}*UTq#0LNho*<#r*#se%l zCgT@&*+Df_5O?#TM1;HGAEokhqfc1}(ncF7m%dw2$xUx*{Z3TFke#Q5I;PzyGoS9| zzf(UhOuX_GmlS5*>@;w^wJppEhy_PL>niWWhx6ZSyv3tb3MD9TBrm+_UdT?IM$C~q zHw>f+qQfAJhr|zJ2*wzn+Zm=I&VY@}fehtgqD|QL)eM`|8wplyqj;OyA9gk8XVX*8 z)x=)EVWIGXG&qj;n*fl1jV*F*L?GVi1C*aFR;L16>J0B!I!5c4hK^=u*rHX=j zf<_@BTY~l!R~!K~^4QmBkrxc^{>cXwLbY3%fN4QfPyA82J2-O)2LpoUhEVq3BU{xD zJsD5AQzIZ6kWbyQwK~ME=g z5$Kk`Oda-ZbC_Td)0<(V|Hs?l6-H#u-~10{`qk3eRioCmXvtO;I<6RnVn&{)Pj%mM z=I}mKGxqj)<`k2OyD@U9>Z`Z$&ky3)uJx&uK8#pf&7NC}n-Fvl-awY!8*e-e1eq1& zcmGd;2L+E(irtg-`(8jR+hq^l&-Gb{b0%D=``21sy)Sn5E(OiFou>PeZt=;5AgNt0 zn>{AYBqsIDFp-aw1EW;_Kx9OuV04qGj$}hFZdK>Cyd3GV1wrx6y$^iG`h+~Ejf7qy zkcWCrRCJb)%5*dgXv7`Kl=4niQhOE+?yMnZ36{c?nT*DoF^@znEh#G@w6TjxQaICd zrq0Q%#)6`FKjH8_ z*$v5o5?rm%=e+dBPQqf$>><3n9EZ;YTq^PrB%D-TW0~2N#lobl@C=}XY+)X>HAqBZ zVNh@J%NYusB1`ED8G=4F!{6Xj&=-VnS6) zqW6^zCGFGf(ed#P5CfM6Dvz759dI5YxN&UaFBVNKzBcM^#=zT5XF$XbZ@1;9YeagN zw!mUyb?__+wc0H^XMQUF!&JAMM4Yuv|NCzmNi6mY2fz;Fk4b59-Y?r2gP&vxl7`X! z-UAKa7DLUVYeZR5FXZap-(x|hipzU)p^sBTKE+`fYVrT~`RlGgC&;~jeD!BO(xuSw ztMfo&nY2vK6`g)r_Ny#sx$dAa*>6yo1&v1^q?I`HP_-1iiXy9J({FYl>Xefl9=#@) z5kykwi^mPjWBXy?{MQtz0ZIRX6%F08wbWs;muD}frQ>iDT{y&;SWWz$871dxdFUXE z(5C2A-FP*<`);R4hgzWg?NLYNp-0Gp#rmnkVH8+oYE-L9R^oQ~lOaJn9wrs|<0o1B zH1JRWI4mvfFa;MEOMtM3r_=Zw{Nna^u~S4fpp( zGd>gP^MxhX#{jZZ-{J8tG!7%Hrv-EPD3I8Wj5DY%dXj-CYN_H_iP{8YhcfvdqN|-S z9lTZK-8dlYIuI^1j68r$Ddc8K=lK97#ECeu3`e40w~wlI%2Ye7{o2BYMONtNb$loE zOPDYgt`;MQpKf6%EkT98H$0zbV`}%xG!&~x?_aKZ9v-038a~x_UtN)Qc8v=al>!k^ z-V8s-!f^pu&_v1HfOe1TLE17ijXD19YrDJQvf zpfDYpqUurt@PNGK{#Zyq*tmE7^>O^y6T@Ba*)^T$tR?7j-tG!ii9_KIGn_cdAdz`v1_a&<4q;GVkF7`!`?3w>C_>K0K zQM83v+$5IHXl1to3J$(GHE_Vft+miv4vcSDX$r3<(wMXuT%tNtohILA{M@DY-J=ok zP|vKEC|Jj`N4*c_Gs^eU67nnOyYx0_{D^q9Cq+vy@tU6p?C)U}PjZy5NscPw&gm zp3QY9NKE`PT^x;gf`;TrL)xIT;HR)&9*$mGnKSeCgK_l^cS0}F+!MR{au;6Brj(K7 zt_a>)xk|?`FX{+0nK|Lt{9zL8Jsh*HP~G1fj@Ok_3;g->>mnrTuwL*%jKm_nzZUk} zV4f3-u>pOl!@%O5Epzbd`gSkF8r*b_w&oKu0_J7;-I^pK7ST`$2}YY-)mMSn<)@AC zNgh2i=dP?q#D*i3syZ9W?>EM9+w<}P=U+Y@!76$PKDe@}_LnrxenVL2LYnX}t74X9 zJ(b6%x8v(+Wx-bK-F?Ls3A0J%w>G@;ymx0PI*IfZtGLvP%h!TqxLqd?W?yO^UAz;| z9G_TI^CiS-vg9o(=pXO*wbCyEA70Y%du_%4VnuMHecTj`!*m?gC{j!HUXUr5tK5W1 zD6hQ3y?<^@Oo@~*a^fSi9yiKUztiP$N?C8}`bN_E=-5R@_nPvJ_Y=@(md zBlhleO{5{b`^B)}b-yq9x~WNUutx%P@@KEN8}2IPk;9MqjN(yMJE8>%Rp&%6E$hr2 zq-272QQ++Is+;N%8?*!!hq(EEt`?xxm|xc=*KW{qmL#HR^?vs6H{ChVAOV4x!ZL0b zE=_?`ukk2WV8WfFS32s%CR`|!io+1(g}Sh)_W%KJNogh&bX>UQEw1b_qUQ1y`Us~I zsAIaYGiep9vq!X8lo#7VhTViqoNN$^vazxN9y}bI)h80Oj$}p;2FnM4#$r4|J|}rq z$zPFV+{t6)UknJ}TuDN4LSrBoyB@8ch;|4lPzn4!189QTlP)UYWLLa9tqXYN= zHsI_Y(e`i(+`$7jT}#ls^i7!bNoW@s34QpjkP8tsq^jC_SLITrL~yar60^{d_(Uv=ge-Q3qap9O}d z4W~`#h5YZ;B24bBs0=tl{YxwGFkcj?H@r(=I4Xbey?~VVZq{^ykMPgyFxQZ$P^~8@*e%yFFFwLi=KC$ zEZ36yYueVGuGeo@bfdBke)-CXcf8ph=~W;Z49r-@!weep!MiAqx421wIIf90Gi=}D z9jN8c&$#X4+TkDLF=b5c-B_{8t^T*30^Zty1#g|lP0Pkwb@@9D;A`%tC}{3|M^V>k z7mpLov7>EE#1i19$(()ooZTJHBV_Q9+np1!o0#u8uah@xWY9*M*lU@lU+fwBN*gyJ znbbTg3*mT%(phoFdJ^)ls`*|~%)xqU5K6535Y(FnS9>ZllD4-qBf-T9xI_Cw;CH{n zir)s32H4PF_)x0vu0pME?h!Usxy7A8)`vPdg)(+lcdp2s>MkY4LM88d#@6wuqJl!} zPjild+^rQk+B{MQ#i*}35|l|gFA>`{W&?~O$PoXqi=!Z*Lg_#bB< z|8FtEW;50i_lJiJYnce}ixtZ}Y=`NLwSw>AS9RDU_)lCTRLVYjI9TJjRVS`9k}5Uh zge>k($zPhrmw&$MQ86L)`g8dQx#Mv=K}1`MXm`{NTUM#&PW~c)o+o^Zf1+Ov<@@tC z9t_uS>fTjc9QNozQ5Tzqb`oZ1UT@sBWpn74#g;tpDQwYEN&=Ruu+zZixHqJIp%vj8 z@$mg8i4F@pqiZ+Em}MTA#qIrQ3|YjrfC{2&kdMU@oTN)c0|7#z?vAC@pYs6(s0z>} zV+JM|(_k(3KqVQw3e|D{QBT|H7_8JC@1zCg990fS2OVWJ#8Tk+m!I6q69uGep^=cL z3@RtEV@Zr695+*vY|`6Gh;?}N2|TPj(UoE>XiU66ZAp$LX5Hdx^zbow#nit3-76N8 z$0-R_%J2wl56HuI{H}H45PN?X^oAQrS;E!LW|<1evK`X#=@JE-70VDlkPi(^xgVqj z-viG8?bvGP$jF&kh-wCnYz;&H&0yh|0_aeB6A<6%|J64-ftpgybkC3CVwr2JcSmMjze8v zNBs{h1U-*dZW)PDeiz`G9xR;x*O4@MQ~AU!!QeEw`S?vay%@n_Wjmm%o^UEV?Fxsy z-uk1=uVpuycHJmz;~f0uYZJ4H2L8FR8Up&(5$0jlNKN!3ld2D#zerh$wqLGXsh-NA z#P6x01}EPOS`CHN_aKr}V)xxbZ7pRSOLV zkK_MHUIAy8YH|vw5G%A&0f=qz8deA$L8G8lnX!U(-3x0JZ~qh|;f`(zpTUBh<|1o# z-VLL_utO01Gl1$um3cen3tFW z)tjY4vcT(WK}%TfryB5*JY(&JQr1^>2%W{%_Jdk@$k89e3oBUBPkg@SZerk$Mf}g} zcc$yVC@>hlM?)oi0sk2lSSH31w-cK;ykGfi)J`sQybuT*i&JH zCVb0|7Y+K=NENe25;e!ivc#ixwFOSr$&H6EW8SJwu_6ZttA*g>yxpMno%zq(ymJqi3al$pw3_ z%XxmiRLZtrI2)u;x-3XzB`_s`f^*NXNGq-ZxZ zSyHGAqABuV-v49jJ;Ry^*Jy39fGC2BND+*kCSBAiP?AcT&9l+XeM2t9-nLdwjEd+&3;?`Qrc*EMuGLo+hoylK#vQ5*XE!iteR@~^Tvt_jMa?00sOl~V#P7%%9~hw=Sb zJ61ugeLYTOpBeO+1o9&S$H}Y*VOraaaP?Y*ST+IK@Z69UMe8Bt&&|g)Z1HBBh_#Rn zlbvQRz38lesoj*`Ft^=S`dB0}uNVv*Hg>UEb-l>8FeMue2V(j<2=LSmb=Re)sXpJ{eg5ESvCdpSkj7rmrJz!Lxa8#cbgImQ=-|qsw-Z z5`};Nmmc;bqsI{+TY@q0oY;GvUxu3&1>@{g?(SAjKe}03$Hwz zFBa-=cSsZcY8aHWNu)4+K)s2)W3xkuo88~3xnc06&c11T^6R7?7;iyqPrZBc*zOgG zftz@E=?i~MZGNZ$e8kXd5nV6sS&tQzw#rwHc^SKh$z;kBw3$@O!!7ss%t6*bynEe{ zoPs2|W*iNvE&_`sH|@?Zc-(S2mg)A)82>~KB;-N=+5}I4(y4Hh5!s0!{ltLNCMoY8JSx^o=@_#1#RvpjxH}be! zCROCjuZyHS@7EjRQ_KT1o2}ea zwqIesNCXDkhr}R!$EVHpd=2&!8HvAWp~OfsZukdH(tyB~aV2xzVa<7aU>>{A;Dwbw z38$}f4Y{xbx*X}#qlPRy-wMYr5o+VCFKtX>#kTdYuPFKN)O>X7&AN4W?SNYGQxe)Q zt$dl+ch?!r+oR0~Qi}ek+aS$A{*$Bc@}n3#|^TgQ`AfI z>I8q+4{T0|o%+o74g058F6+%xCYke1v%8Lu9WlwEy5el$h~(2lH|}%e8IvqZbCH3~ z;Ul4Q>T_rV{T2H=tqq5jcKMjSA1CSkOo#3cOjks}8m_(f;{iVHyEGXS-A=6VU7Y*~ z%+!C1ZJ8igA`~QUoTPd%{qXXJzBUKkxV&#B_ckI^^Sqbxk$K4zs)Bm?HH?unW~r@S z32k|Hr#40dR`r7M->fX6sdVCc<$7LGx)NjT7v@XO8cWp-TG8l9(E&?U%jel8-hCBi z3=)+yks)7CByt&DjEXIq`|@3}Nq>tjXSXN1S%e7uG9483&$Ig91>Fu%IvWZYB^t$I zCyKB+dr=_afr#?AU0@CX#$RjwQ2DK#FQ2 z>jld%YdwFUweu^UH)D_R<7?^aUwXGd_rVry+cjC8V>K{#@{5luZ(Nl5# z*xSXhW;(CJXIpI}xMb73W`@y`n&;?_y2X#n@!z5}0kKOzhf&HdmWG@s3_nLZd$$w! zU1Sz?Fe7)q_+|rPn(tB0byw-iG*zFMZBN^a%cP3dA7{&X^y6D3bZP>x72aI53Hg;* zzXs4s{BcmXQQD9w>vTb;CeR?xU%&f5OFLu%>d0+obAWw@-L@&neTKuMw$9DGP5Oy% z8Bm=RDeYP9L$07|*U)Qb`qByyByrdmVuw*NsEl^j)R;RgkbF|X`z{>Ryv12_;=JMT z9Zt~uf%jqz!0lG5L}RUe-QLg_d`QNXOZZk*QbTRmV5NVr`TlZ>_s|Tj?XQc;;>NNa z{V<^b(n83j#}v>jX08~JlYgTjgOC`A!H$3m!GVAnmQ+r_dTY`Gx-|DW1a?Bw<+w7Ai|M|);l&_m)@(brK!&#(Pi zc<7tDk}-U3=FPo1eDpwYx`6YxfNZ^(Tj~W-)2u}XfaGcaU4w6v=1Uj&^-WV2RTML2 zZO#S$FKr3$1|=Fk2zdaMrHn-8PcBONciyI31*tfN zM48_C`&U$_;;Za@`~@K4ZJerW*%nP{$QpX1+VjSQNzzHfIQ^JOZ&0H1N^#nR_+GSD zSX0T~d4+hxuYPUaWQ|M?C2ei3XP!0KW{cqxwab1qRey0<$ePR7&e|S=>fuV?%DW0t z5AI2gsJ0@v-*#nTQ_r#UD}TV@C2(Cem9eQ{+j9RX8BkCYSt0+u<8_+I2*q5+)?E&E zqi!J_(*H4;3nc1aGEi7yknBJdpDN=b_MIF;*AzP9%%NYDF)dH zXMJ4Km~0D7ta=^(xp2V}Ebw}TF0bu??Pm;SR}L{}&%PAsj`o_LXz7VpFmFpGeg zf-bE8;_f81k_VioXo@(k!0~FA+Ig@}MrKN%q|J6f}2T z1>vF85n-K1CjO~;ytxb2`@=~>O4rpJ>~YPdMJHH)9zM?&)Cc?aw{g3}UI^>={rOaO zQW+FA^e^ezw3Eu0gk)jC&WcEleBd^X!km^J3eomJjKYKB`&AbCzkt?12YI zh6=Y8)4KP3H-gd~7B{q+oU`IM(01y72xg=eaB-ZIs?i+vac2G0h4YReFMZ+XhN1_J zuPNGZw_SXjj8hbr&HY>yl)xtLO=9=}`UY(L8Ypb!O}Jwwh{mdpn`_rutmD zIBM~!iC%H%T}15N_&Xu)3snK(W-t9|4^TftC1UxRLuvxw%$-e`{mHy7XBa3_%*Z%Y z8y}37F$zuZotdQ&d6rg9eXxLcuC@R~QDSSQg+0%ZV-4k81kK`X@!3Mp4`Q+rx<@)<17^NyYDXANh{K@m_>04-e5( zlde(Z_n>@~tO9+QVdTMQ-;~6oaEuLXfTuWP8_$q6Vpah&PjFt7g@smTxwjL(1dT$f z6;0kgp**(DuX}Nte8PXuZLwmL4a5#!nem4CT>91b@Q~(9;N`1H{@81_biJ9K2Xb7j z&&Zr{Na0f`CTGzTL|3if56r(f${znpJm@u4jnY*sdwSf9)O$`L`VyVVcs2|6P4&e3 z0qd1Xx6R@6)X^574&46)ufrQLRW{IOJ=0O}#gFzCfsWvS(1m$UgDA!h$dz7I5@O=} z*S80zC%@(a}pp(#rCzbtxANz%WT z2kq|wB?<4Me|SHiJ&~OsX|Vd(xOBiN{^hVNw6Bi(SOZqSg_Ewp4e9$uo5R0!a(RmL zx65t{Pi z*N$BDa#sxG@y0PB^Jh(pPXodeC-cXH4G?Ki1pK6c*>BEg=Z_pK4rMR55qtPRJZS3d z=&z5o_c?u??=&Osv8sKmCx#ZQ=zZ(f*uE|Ct;#cu?Nb+5wFqBWuwO^qKiWt4*n`(u z1-}lpY0VukwW*X%xm*S+_ukS}7$RW&` z>@6?c8+0s$i!9EwzqwNQJL%_=_-Y2qOL@uc_2pHLcsIvHS9ayHjhOq!lgh-HnKpRv zwuVxeQ`y8B6=(6NU%{>~#=qyaO-eM^tP_&;!^9Q?3{CL5$xh(G**G+BoJ&NjL*fbl zZeTv4Vs}0IDY}XcL9D3_l}niljx%a1*)KW$9m&4kfg8n3B5G*{YNy69=H?!_i@?u z1dA$t^-rPj;X|JKGv;q&I*tz~EC2$1c<2OlTs7VARtS2yS2z?T0S(VqFx*{Mp6TvJY9FfqM%y3j~d=~y|Fwyy9Bo(=?xR5 z_Y^u9NtLg|i2jnPR}de2?)|QL0k4})cnTLJ4(;>uehI}=0$i5$CxFli9%PWiVD6HTMtT^TPLBm*vN+a3W;>d=%8yW z%g7!SycMDH6+x5t03`cUOKPXg0KA0rM14on)4@2gZQ4=#R+5$P26#>33KQg zB4xzPN0*>~0`l@On;2Q&ewM-mrc-R73r44+=N<*xLO+L}H145@hQ`}u)Js&!By4Z5 zn*JZHGr|ZwM%N*sc{$!Ss1>P?=waf$Ol*m?9(KIurq{cfp zk~lu8_)=n7?cE#4y5q;6kL|1oyR4Md$~gF8HoT8Yonl&I(|texF*VH+b{P17uD-V8 z$0p9~Dx{gcu3}7SrFl9bm`x_{XaVs{x(9<6UiR~yVdU~??;G2JT)GiOxPDUh>#v1GFn;s2R%D{>_$Cm#4X*gj3qa0?Myh@_d|#YokDxo5r!mET00H6G5F_ z(&rGFs51p_#n*CL6m*|?ap2|G{9F+KK7+?_&U(>sb6cEF)f&uqd@LX5nPxB|om18F zsA(05c9E8&J)NARiw&hz12H!lRyoN)gx3?Ex|J*kX6P50d~Nb!B(e3?_6Xsc%g>%aTXDsJtW0T?Nbc1 z;3AE_W}{{X2aZCepHjq8A*guK3%B0?(ufl8o|B;alxQAGHl&JKEFS0zPSZSa5r>P? zG2cWM9elGPtV7ass*m2=(7FdMH^D_T#ag~_8XVi+PymOdl5^-~PQNg1fa_V3K5C7z zMCCVOJhnMt8NUV$@)Fu1LSEu#AS2|K0@WD(D084$03)X@DAE+*1f%aB;2iNnwj!7kPhTMxjFsD-S*L~ zlMxv{Ju67U4daz0@{r5x97M={(*NEY30QG`IREUTd}WXk67QSj`-*oWTo0%S+oP^Wjmf9X!*c8anQZW z4(j}WfQ~8Uy!p3q?5g}x`Xjt7h2nM^l;54t9) zOQtJ96CoUbpe;m`%0JoCMvPr8_M3+AG0Xy^u`B_%iRr}J;$_VNaa}Ehs)4=<`o_T};s}8c_a%4By_|R0UWpRaj`C?62T3zJ;k%N}bVHcZxMaSpbvpgl z3k>RRxqUM7slHdT^D`&2dqYpZ97>C<)c#!M?FV+v1nyA+zTqW&O%bjn_P+u4Te+oYbU--62;*uVeTUNlxhB658ng9;WsqnVRsWIhZvG zH*TqHmdy#>*8a!hfB{0yjS1Ud>&gQG{;kd-o8vHN?Nb+iA?l`$EVcJyq3; zU(rL=6UsqfSogPVIWC+l1AwHzsET&3R^;J+T(bF5 z@S}xo&f*kZG$Yz2=*e@wwX2+jpNx~v_tfkes^ zmX`)J={&wl)q*Ga5xe=u;Bin~9{UR+-qFqF$6*!woO_ltVfomx+xEmI@tRg-l_Yjc zLy#8vr0VqQdZUr*>G)~QGb2nNra@M5^qy9XKrU9U>8kV1#BTxRWXw?WD6lHGHe?zj^C{=?d&|`;}Y~UH3PLpO}Da@hvsto3p9w zE0W;vXHAR$yM1!4a{@0aw2S)f1BN9wa-Y5mTW9*6R*%4Omd|nKjKn=zzu33)iW~-q z9qKpB{#$*zT{_>PP(UT;Xv5ZrdAHg2749-CmqZa)N_$t4PJP?Z@y~j8TP=l561l(r zxc;ejFQIIRDw~JJ#RJ<}hQ~FWsmpe55%@s88AO`HwJ3C!T8FXKq{Zo?fr`A7GD%wc zCl6L{Cr>IL@>g0?A&9X9`)4=A0L>rTD~S&jb*4YXY_7OuEX%b#OAjaqR%)8}u(bWo zkZm~4kn_JpK|JK_T^1I=c&*ovY=THvj#~d;768+g7m}c$=7VqRNI~m1`{y^&{Q+6) zWD@H2(T16evxwjD*DE!hD^80g#i}Vku7l@awdWIca$OZK#9SUC!V4mZIdo!9oWQzt z!;9{c!Iiu`nb@0)V;s31GWoGOOGX@!0TgOr)zd{obPbp60IP8NP|rZ?^0h@fP$Eb0 z4;b!O1E3-CfO*e}tKtM1lFl0l2BCH)x&kP0|1f!)G}+UoKNN~-04snk#fr#iaWRO7 zNXzZ*=F~uM8^N8P$xNP>YA!<#>!5}2r-kr+J9O^TdelIO`lN_%tVz@K!R4k>t+sn< z8`oXlzJu=ON``EtDO<{Tb&a+>f7j&yi|?ylf8JT`3yN%B!5VX#@V};%ETI!7!zd%R zkA*>9b$en9nJA@Pv%jnV$Q$yL;M_(`UIp;Gb{!B1=QLeobw?lkDk~|5e4Ywi^XKz9 z=4Z|W_Nm^O-ds((aGSKL(0*-g)v3_9eu(8SxM$N|rP6cfd}1tJydtqRS_oe-YD*LI zStAbIzHKX4x)lZXJzieEl&s@^$c#K}z}&8*&1aghtW9`bM9=GIz%349 z)mPe}{)c;|+Ec~Q+x36GETpQm?}rp|x)6jXyYO8#^9Q#INb*30md(I_m>WDUl98=H zuh#BZDxR(1K&{DAvk*21CI8l1H6{{RvX`|jo9!=T1n}Y(Xl3)^gh0bV&8g65%oXt7 zPpGcRmT-PC23c3TtD))1-aI0{-0k-5;p3kD(Neb(3dza=s6wa>zOwje_jOG+01~$K z&4zWHSSbNC0vaN?uB3R|0(O$4fhzP83xM@m#g5Svk3FwVAVr+tabAN(4PnbMI;Z2q zT7ZF0eM6dB5~($O<&tewIa!YIzi8HUIX==INn3 zw`|7$zUQj&cC6^KV^dQ)hkC-i7vLbtaWjkSEax}~kT%tSxf&~0RIa+#V`3rQhG-Wrdp=(5}tigV>6{pZ>-M|F`SgYZyVsdAffEhPxf1c+FU!@mjtKj~$OOpf z6GCf5BFVmc5(yUBrephJUkGTX}Av_Bu9C%H3#lu2|4z-`-kqa3inR1h`?9dIS9 z*vMB(WT2V(?IfZFK9=r@OlfgilniW?gl|`eYu|9?+*{(zi=EE-4~oO?8{(n{WfRE% zd?BoUXGoQvNZJ2{A@8aAIj~9s#oPNE!ZbuUBY85GXI}LH^)3(H{SeZJa7a6$bM!8* zr59kjA~w+N0BZ>CkWo3>1Q5>${JoAOj(MqqmK$CWqubrWhQ!HBL#fEpMA;vwq1PmF zPBf|0?qpferAonCU`W-_UC~t7Q`z_9vg2tR7uk$SqrFY!=;`M$?q|#MNVj-aP^Kkv;n*9&BwD&RAcd59aSi}i;r9&J` zuM=R3|GCIkqF`O%jghJ8ydH4iO!teY!gx;-JWx>M?FQ@!jun9!>Iv90q287S$&u#; zTFuLn^>)1x>{pc`N|MDQJBH4e#bQ{z@cosm^J(O{91Gh7*l|V2&1>cslMH0f%GTJC zU~)ANd{;mlwM(vPAnGk%HK06h(&O-TKcW|e3UzxI2Q3l!o+gd%=)s> zroWDIwEJ1iYNP1lWsj}d)hH2#B>&HKGW?dyvc(ihlVY`YfZ~KV^+jL58XdUz+c74P zvG5IpMi^D2s&v4>ok(CT%WLQj<{?1ut}#{ik~6Jj-D&ET2b$s>vUsBGHw@@#ZhYE% z-zxATL>Rus*HR4GgAB6EN0k4hs}CiZB$n_w6?*&ue!gBzhHOS#dDy~$Z*Z%jr9k|x z^SZk;A5Y=qpuhT1$XxT8Qf1Fn-bXB8awOmN5gqfhbJ-Labo@Nj{ca#OeaMW?37@!f zxcm=o7sY5PdzmKE~U|W^htGHKO6JN%^As z%o}_;<~K4!P*IJx7w_LK2S%ZYFEO8V`i-(RrPBkVQI}ArUc|bTu*`=>N&Q*wc#c3t z;rY@gfk8Je3d667zS1e0=1JY4XmI?p|lQ}fn$zSk<-i7ehcyL^&j%U%I%e$@f$_|vdQX^C5t~ac zW+LE2fZ7~w&Bbc4R zq^04UUDT-j`8{CpR7>@@w&OQ`h0PsSe;lTKdeM`{v2#2eet~cN9N<|Kxnv9oNm(DF zDsXYAxo`l>i=V$EYt!xEQDPxM(|Z~fJ(#ltqD-&S)r=~dh6t7R-?uF1C54=3a?hZf zE>C-H?k5ZMJcvkor<>RIkg)kX7Fdy&g6gaaSa!+OvTLUbu=B-gL&>u%@=t%Tc+Hr? zXRkGsa<=cN*gbu7+QiHvAmG<3DnN-{hQzlVF;QpMt*>F7iIlj@NHEf|!%)n1%p`0F zU?d>!q`^JAKvWg#Q2F4x%;axmyV%L7b(q`ju<1#gDhAYNKg@w?OE$w2Vklq@l_(v)+>&@WR4 zSHt1QS?J0CkE?N^YZ#zp{y-H&hM*+904lgLl?pcK8lVK}VbDI6_X331*apTY>p=by zS@0=rqz#BAV!b2!yj>AM|Ewz5Os+^ZAtoYwIL`xbOf)MRQPzy6Z;>yM&!!6|Iufa!8N=2?e;k}Pb6b-4uj2JRO-08%9zZi zC4|!%^N9Wy>_vhksQAt~&cHdH=J8@^^PxtR*P+|JjBeWkmZHrF0&$n*kddy`V;KRT ziIV9OEyi&v(AN@9OqnMAm$D&vhKRX$6#djB=tckZ=jNf#@Td^52rMfb{+OeSL);xz zd=56XQ}hqS_pfn$ZCVR0o*Mai*a=YUz^*Au$FM3FtnZz5A~{Hn)Pys)f2~&Xn{&D} zgr#VmYiPJ7Qs%$^S1B%QzsWzcH4_!IEzYP}zE(5SavxnB7TvWM-+r0lzM!D^v*c*I zkbkiuDe+61ej=vFi3p6t8l@YZHY9tdl+~0>^=*Ks;#SwWr_JYeqYaER>X1r#+_1oIvnv4un=a!QVy@1y3Lq&f3=}#6KB?6g=YTpwJ zra}D2DMKOuGoGhL4LP<)2UZJGL;6>MDVM3Sv>DnOxfnVU6K3H}2^cCt4xifvC~^d5 zMrj8c0y^OAJU!*rFh^R*BMiMAb|Zz3Yj4L&*KZrAd#F^r&^K+gTNpX9hI~dijCbMfN3P z*XcsxE3=D_+1`b?%_Vbk=aaw6pLW8tgG@ z8%NmfIq$PDL+Ke11G`Zr8?A`g%L#d(02byED+Waao@LtX+30`ZwFVDirZx4H9J_?# zMXW-ZhNnj_6{y-QqqlXGuFv1lYu;6^Q~tsbyTFp_@6!Vkm1z^ls5``6NMRR2g^O;f z!~itO!=s3Q^o%U)#sZu^WiclYNVUAz&sKX-VS~320#kD1b5QR9A+BRTrncR-iHMzj z2QLsV*HS_o5_xzi&W*H&&10kf*5ZG0_W99LSL0`^Bg0n=Zc^7VXrG$dIg|wj& zBT;X;Y9M0G1)w9soSXBu_eb8y69gsz!Fz$j^RXEELoFB25+GqJ@Q4?57oAn~5=YUl zTG=X;G;rO&Z=(0ejd<*h(<$6d9(n+j5Z1DOP5OL`4w4?7V&d#oIITEoU10NBPz$r$ zxL zFR+GNuzp;}zRxBN3|3ffdQc^ooz-8qj2D2luN`oR)~%9;F(@dzU9mU0;)T-7$4#nU zvm$D@J1(xbmL2taV1jNp`gA{m^f}G!JKnnoYX9}@t80>npY+iz?^g;0<6j+^e+u9~D%g^crot@TiH>7E@WDtQzvGcmO zz-IU!DxN8wk6Hi`%W~1GjE~z5AB+W^SFwvS@eU(n6wy6M3rZ|?qYp!5Y!2up_;;jP zw@E30F@ZuhH2us@kO4qorNRjsqQ)gOL@`#CQN%sRY5it;U6A|9+j;0kJMXRG4+uT1KHTBj6kC!Qy{puwgKeovO_4 z(~dMG4a}4==UGDvEuiFw8ygDxk#BgucGNXJ<=(2+*CBRJJJH&Z&Em?Jgnw{s*yx;% z|6s8;%f8t@zM^Jvre&TRFMc7s=27sSg36CtPmov1@zgGfxz^j~|27W}bWMqhuS9gs znT%ikyiHVC&AW{Tqr!ylm7NB-6%}!WxC=&*0+Zw;Au&MTV;gzTebsp+5xmmyQoHTA zQu5m2yCrQSEb(po^Y<_tT*j5S40Z{3e^EyQTv$Do{+B-Rb$7f z%dLu8*QNSVAnYb2_4Y*>eFz*cM;uwTA=&6_lNcBDHuXW?rAIuIYKKYNCk3DiTh#&mQ|8;PLPrnz}>?OR6j3dqOgx z?ys2U%>Y&UX5=xP_G*_w_W`P4%-!)!!@#6a^BUp_d%E_BaQ%@`00tDF)LV7t>HAJz+zOH?>3*#I8G#_T~A3a>$Q1y~qzp9pS?JMZufY z>U6k(OkOjqjUArX$*D??e6qqnnY9WM^e;`Y&xRIM2Rw ztyA??N*IfEJWCG^JaFCrRH^8%Ik)_9u28Sw3ho%k&%4ipQPfYxXNB=YCbYf6sW8YWLFfar=^y z`>pbPxz`OI@Q~-AytW*u;8NYw!5C7_(q2BDagp8o@zNUTC5*!$JDQzkceM>f{J>~= z!txdvF#mj5;k1`VPj~xLSb4Z@6-hJN7tn0P^pHO3bco{z7O?O(1a0zm<5#2dlJ`&x zL=*z^ZdwU3WwN(>Y-#v(}2g) ziKH{yhiU-P@EFdiF)g`*V>CmU6(JsMgQ(YvN=hI`0n5lHh~D$+%OHkzRDAIFFSMcU zc?kkDB!UqnF~LJck*{E9m|x=_&lAVZl;L8*&6UtF?5qZy`T1>*@sRNMjC#(J3hA@a zLJCLI=lkVnrjyz8+>A$!7Rp2}*{sB2Mg&aaUTWNvxMmGo(}>H3w@Y6t^{*^BHuF|V zFx`Z-{MpDoU{ELFcYXC$M3`A5Q-6#&aq&|oi{nCzfWz@TJI?P zxwDZaK<{9Y=j51^Q#G7yMAeBa>RWtdi%7-8`?jD4@{d*916Jxf3~&Bll17#6;PO|A zR~I-uUVTIS4iyV&vd{+e~q3w6N6I!-I)pdt>Y72yg+hG8yobdni+V= zed3gCB2sSw)2F%Y1T_v+LwxciK>Xh!E03`in@*<&vLA<%e>-+;kC3unb|U`s4`cWy z!HzfJx@A@}7_IZy1)2l)%ottA2z}jK{?g>a{*U_aXSYed3TvQNH&iMg_L@nn14C_3Gn`G+txTyReo`(Ic9v3w)DOk<# z3Y6l27j>=j&f>qj5E*IkkEVgPPJOdAFTus>XJkQKg3dkod)=~_f;#XTgC`rX3M+$; zXQ#|QPt@%J!|DLs5Rp?E1NBJemIoez@NWVBrHKb)J|{O<0YaM%t?hXI68r@f22?Jt zQBdQ6{kVl`{EIF;AOhM71a#EVMD*V|@q(dH`1z~FS>S7Wp@({1^NRav#p#5Td_N=X zG8a?|Ztn8<)}L%Gb8`7=6&@F9Z(VuL*Q_@_VLlC`Q=Qz9(zsZ9v!yWZT>_@{F{WHp z39%+=_U><&i($;2$fm5>Bk=#~pPa7%9$+fGtB_&XI=lJYFJwocc>W($gQK)(Z~p<{ zyt|%#^Sw7tb~W;>B(1KwLu95g!YfUJNECXQh2O%nZ=am$QpHaXvSg;hl`QcmpI5V2 zBwZJ+zBazyn`Js6PIKNQdy_QjMS(TgNrm#qKisJ=3#Jcppanw(YeKP(zaXIOW9|27 z*`zneBmEu~?>Lr<1e^33U=6!g=6lnMZP@8>p$5w1w{XhQ14UXQ-tG*g8<{q>=k&}l zeAujt+>yv_igzCaD7$dii%z>pk*|!Z7058PVVyvR-MZ{KjUI+li+ifaQEzSW#t?o9 zJ2wct0!BH{Y1{JEZB(#zz*Zm06Z7fAd^0YVAZAIZP(l1rE_UfOj%+{Skg*AE8BZwv zl>o}rB-eS)kU}RHhS~fD?)6uj48bvMrG=k{lksVdu{M~v0sZ%l*9a;Vp2zcD|Eq^d zDj!5|IC;@+hR|TZ^ciDx0jYy2HldXfJ!?OT=AjZAe-&%6&dRtNTuW<}!Z3cukqJZW zVxh|$VrDMbiN$}jfTUO;&lIrw3jGFV;q~j6;XNrjya|0z-O$|+Ha(WknwKrZ>z(K< zzdfGDD%!}IcmEjQ?L3{s1<%m}*^JWqQBQWWbpq33P*Cm#Rn+6|hEvVK1}kc5pG0@J zyfnM>e~DX)J9PP477pA`7yIr`E&=1qEPTwE)z1u-&8m%*lsKL(zLE{8#*pSwBaUMF zhc1A2SBf$JhE|BM1C;05Z*HTutVv@;JL;sajBgUVz@ug|g0YoD+J3mFim|mDQ=R#Xe1~kp<(GPqH@E3|__>Q0VVF;KLJ0Buw!t-|*jn z9J3t07R(vaRR2!P^E}T8j0uc!>r!9zTY;K!AcOcu8{57BLS7qCtZuA%v$Ju>g%Uf^ z;BH*#Aj$It72Q6j(RVSoZa3m+gW1h?qk!FlsvHnWGL$7pZw%ZX?f|D9>Na5K70OsD z$g;dmOPrfi8$h0J@n6LfM!EO;Lu+IbK2$69j)N{OkSn%5+d|q6f2gVn3?>R>=vXnYs5{E<4P@@Ay9S~@c$O#qXtv;?&p(DgsD^WSn0C^k{ z*#al++JOVTpXuT(R2&fC0NBhsjwjJ$7rw+wNAneUn9QfDGm!>1F;MnZVj{_rmu^MV zq{HS3?eJ^G_lW~nC-l#k*)n(sySV)v0sDZ~psXOAPHz<8r|B=F)(=IwbR8&aH?1rh zX?}`c?fcRns;0CG2vz9N#s+qkr%#}EOFqdLZDoOpoJt7ta!dVkN*QkP7E?`H%!zB zCQ}U>W~hq`EF_4SHf~(A5Te>yMxPDQsQwW1E78 zfUH-Fx~NA=BL*)iN*6n-+-7=svz`+!=kxevKjOAAm`khYoo)#$NAYXT8-*@#4Abfv+a}{|Vu=5#dNt?> z_+?*%93d)fg<0FKXue#1Hu{d*AZjY3??|vSZSLCS>x};ow6R3^Zs<~w*u=2lbNIb$ zG@&-WYN*VZ^u=gj2>gW=lMe&(D}1xzVDw7KE|QzcQWOExp+Z(vFL5LhZL17p?B5&$ z*Qc+&(K#F)ya2b+0+Q8k>91SF3J4ZGa+66$%1@AqOio7*&aXlye5 zfsKXhnA57tbE<$5UUU3zp_TimmvUCg@izqN$2}H4R{o-!?k=Q@Fj15rb?pxQZ)}CX zr%O8s_*g+fZaX%PwgQKRwIyCRRs)H&)y)xOxAo#S{7iICJ^yWYKgD zwUaL%OPHo(3LSgA@a}R zXeE`9pcNjx=z!991{k__oUB9C2Q#5KfJR88kg|-(GdT9?A7MTUfl*Z-g! za5rwLgD{<>tJC}rBA^0vJ?F-SV=zHfDC%3V-nfT=MF_nOxY}?aAMSM^b{N{fcl3-J zs2?rTmp>Ft~ zAII4x)Monq#Jd$*QefhTOtm&fU5iJ3SjHsJ>>o`RK!H#-f;bLs908!5S}xY>CGO}wXPq_)8Q zXzyGN;@p3r95wF_@xWBs z4@7$NN1jv@-Zb9_t)imnFA;yeUu_K33!>#b0V*Q>eOa5}MkVgvdk_kzr9xhdQB&A% z?9R4fof6lNe~6CT=YLD2D*TPvUc2VJDz%@o+n7|x)1wa?3h*WZ#HWI9QoBB)Xe&h` z-|Q~C>Jl?O>PxoKs6&fKTh2>yrCAq3b8D5UOc!V|DyiSyX&?M)dK(2L$F z3wn1TR4$Mb*{o!fXCk0|FBs6@+*9Fn#C&r6H)xo#=8bdefP*Hq+(?=ti2XlAy=PQY z+uQXmqM(APAOeRHEPx7vfJ&9v>7Z1pL8>4SdZccOib@mdQbG|C0Ru#ulmOCO5TuvT zd*~%~?_?b* z5@xqNHFNgA)_eCD90@NSb}IF<1dUzqJnr@TRx1Cv{m4IWDmmLI!jjo0I;RDU`r!^w zDC?Rcgf*9nu!T%~zAlszV_4i%bTK&yTh?)h>1}7{U#H<{%;4S++(sYRqq*E8$jAJo zKwH7YZ7=%bv9J*`f6P%AuSgyqAT7ehrg27HpZ8Xzvx+I(^@U5P`z4sXKmBTZ*Z3=T zK|Vbk*?xMy7nxRq5BY5F7dcw~w#OT0sghS+-+qqXh8SgZd=!5rEFC-^vaI|tgc)BCDk4bVUeOF(w_@gK72@v2DbrB3Xb^v7q94Le z6PBS$ZS-DuOKCw>L+d7D4G9hnrzEuUjs0bG^iM|0>Aonh4Ej+ysRi7_PLQgoYqnGM z3}?s@zKTV}%xmqD(aQ!c?n^H~C)vb}jjZ7rqNP9CoH3)$;Gc;>J8JfxLj0RDMFrV@ zg>XR%dLZG->-(#+Z(9laQl)!7J$@&)0iIK11sR?W-!}`Ss>%L4nC~w03|b;YyHv63 znY*!yF5CmY+s%)b&g~j!2Nk?iqA~ix#9|=hYQ_;F%#*mv+!`wQk_%rFUJjMrh%IUF zctNX9NTW%qy*-+I3X=B`LUiQ)Bd%mT?BDs%9h!}f(9bzVmL}l}M}lHl{5%Z*WcT*x z& zW)Wg3DD5>hWXCjv&+!4*-TQf|pQ_igTPts*@_xq@s_V|$R5u*l-H^14eRcKgDt!}L zhB83-YGX~%8^JbG6o_|$G;jM{vSS#A14jsFI=*AKJJk?l@YTI=?)>hdFm8{>&k`+$ zt6eYL3Z!zeor!9De()phXZbhvclS*9UwtxXV znGzoZ_x ztVJMtOVwrV2E~Eq&3=7{TGxU;^r~8NE+r;vfrz@XGNn$q;<1l@!N+%!wta1WM$ z4ZPXknE5e~uyy79l&9O%@ifc@wVILrp4KYaohfWw!Tl|HXT#5OxO>q_Y3%WK&RF(l zR&8cK4#gwXocmvN!VNBkEW@Ey({o#Wh@T4Jw#gCXGmBSVYm!!!UtWG;b25V?GPETO zCz^sV^BpA|Fx~~OkNGwoUh!dTo;%Xo!Sl?*;hfI*URBc(*B=PL9n{Y{T=Q|;=RE%A zLB&+fB6Laz2@*xT(>B0!>Y?RD_bxCSqH1F7LcxeP$N86i^fDejMvX`lH8im`$b>s+ z4JsS`HDFF|Zkiw4Ql5uPrD(8#I&eWjV|P(C>5p$Fj&B7xDOMIOrXN|}*sV4?BVjt7 z*RpE8sictQLz_5JB-t_9N3c3?j2c}s#&z=7VNAbmAXlJ4jLWq$`xRh?RP3mk2;QGF%lz|?>;+%N-Ia0qlq>Y|ZNDW<6 z7QS?zx(Jl`$-QxFY(O;P;BAQJW*L!vtZG{6#d%c)FCQ}mUt!p`!gHS>iRv{ZdkqCP zJxbssrE*juwuf}UyhZ%RN%$$vf`q>0V^ipi;~|u*9Q(}>$_U-ga8D;8hwwKqza-py zJesh$!nhq>n3pk#G~gpvoFW}ck?E__ZU4e8iW?CBzRH?y4| zvJ7gh=_N^9PB}OtXi_TY7m=YM0?&GoTO5+L?q@$abuq=1Osy24Akr~?IFhY?mLt@l<`8ZyXwUkT-A!<_z)#F5ZiAJXZQf% zE+yr;RT(~JVfli!u7K&#KgEndGfdwVS}X^ATEN0jv_Y`OxySdo!#8LBlUSU}BE(=t zmb^5kqbvTvz_qFaol<|u9IZKLOUwj-cmQGtUfjKbp_5M3-qtub4QWALx@;S~#1^V)N|&N1hPjTUF>zCn9H zdnLI#S)b|+se-n>zsXbz9Mttbh=dO+d;P|fBIt|Zwh*C{$fNumME?0zX*`4 z$c^Ae>voKi59uO@sFH)@+7+nMCnMnSrCT#6KhN+sG5-_ZFL<4Bs92Th4X@jQM>42- zF=a&Vh#G;9a5b~c{cMA(IY-63!PNFLZvAq8xEj~1Kww5J;8 zhbXA?cGC(sAOhLRJ!J`x}R`(RlRqc8c1EKynrm-Yy@Y)T)%Z`O$&9 z;o3lzyQ{*5?HBY)iC4P`2xV@)+Y)KxjXf1L^1uBpz97JO3&FGPvz9tZ$AD=M!y()j z?xL?A>Huq#m>>kcFNhy%a+7JH*-AiqiRf#(ngbRL?PI$IO2EqJ8gl$(GZkHe^S3JB z{_76dScV`4NQ@ul=@8>t+HDmch!}zK+d?B*p6ThtQuqPw;G{%4zk_0{>q)DlT_AN% z3#fk=Dn*HUh9&M&$qppd>slW`D#@(j>RPx=D3sb|*f__>TeqoO$EGi&NV@`WMa`c| z6$d<`LH(ebv41WLUz7{cTa5|&u5(UKp?5zk0kMKmZcK|~*Kc)CsK6ptU@!OBh6ISi z-w2gdIGTnG^|^Lk#Wx1p2_wNzF;I7qQViq@MrKvM;vKmie?3sQJN#AbtPsG~s_ZV8 z!6S8xwOb;TN`Nh)JPwtYjLM>`q%lAQSbp6HOg?PCS=R3*$;MD1{GAI$jLD47(;_KO+ksF zbbZq-kU(?4e(u0)q6QnD0x zci&^@8(1qoKc_bFy`p17C8oBo!jNw}5%i>U_PuL`iUvJS3^QIeUni7jF{2H31+taD zer!CWIToG_thok12UbMy{BTij2eT4&t5&hAc&^0B$TwJLon+21KI-?X3IvA7sMt-VPxWf}uA*eP{T2Rgb7EW_y!#c^#wO&d zQ~}*X%jHn2U~zf05c7;G`^cq+ZnTe3b@}A3*Xxm1qkH}Bln8*IxqqqlB#5<2BzoIHlUhyX> zhQ`=hnpVDjxLyI5Js+5+&e@f~MJ`4E?0|#k4lKOOJmL>Q@c5p>5>?p#?ZIv1>{>dU zk7d=tZE{f@^mNlqIBWN@Kp(6Xv!W%5?G396a?w|QeQrrfp8inX5)Pqn$Gzxw`KX5l z|016t$H_IuKnheto|AEnqA_%{3*;jDbbASI?GwEenoWy3WvDPKX#{-_8-qM9kKaiu z0u5>Wh~i~NOoAPTF5gb7t-W*#Xn{KX4$j+UKvnM+{$f1dK#sB|ZU=A}8C|MBa?lmH z_yccQWI@jW9qzoyezu{ZM)A&Qjex^!e#6+|4!z z+7kjj5?4AzhViY?U@ZHA(eRwcX}0w#V=MWmpN0&1!CHBb~;AsW)PGoUaBcdMK zRzCJt@J?ElbAYDD!DJEvP>MBXkt(E*#SD2YIB#t-L?n;!&(~K_; zz4251CYVuI_crkm?ql}S(KgQ)&RN-Mu(nkBROI{X`)*WYZ_<~qL`z__VuA+t{y+>H zqCa)kyoWXdz}E;CJYi3mb@^FJpkJj@w2>1ci~BZrqW!~fn^zCfO1!urQ1ybobbe%8 z-CZK-eq40f4=Ma|1rV%?<4}zj`G^TLch|%oTCVD7mnnLo+oI%4n6{|N1+(F!#2$Xu zC)zI!rn|Q67yFIhafSh21!xbSWV7HKKdwM^oL_Fh;Mp!!f z4*vUV@dCM~~NS!C;3T-=Ly1te>;W7Ser^;*w4WW(qKppe^)Cvi`cRTr; z4CVTjkGtBpUOvA!^dHnCXfNpdpH&I~r*A*Jr|=vlaZMiuRcIR4y#;8<4WfxR13EeS zzK*nu!;{481CwU){h4H3z*QO$2Cq(Oq8?rc4@z1uTO9P3a>u_Wx`*_wKMWyVv2OJ| z^Dy$VNc`LP!UmVFUs(=j`;c8CfsJDQ^g!*ZXDgW<-Yo7KUwULEEmrT`>YWq8GYU1Y zoz+`%34$V&1Lu^+UDU1|z(3tXJ*E-$!)}!QN3;W0h&d>fq*f1i#0S(Hl zrImpA$qI=H_r+lxRgwX-4L)N#=M=+?QoKLq;Tp$88>36rwJ!R3wb zzjv8g7`}Zu`FLWze3@`wCSx0Bq+u4+wds?gOW_70%%1Bwi|H-QTI4{oc5W-sl9c;a zk40$?3^Ha_$`NX#WCP*%baHiYv_3+vGQIJ_GON)4Jj#$KsN0elE2|k6!YC>ZGuTJ% z9r5{gYB|>~AAfmd`Mm z-K1%^qBGrgfLZS$H=6s&oV$xLy6s?f%hQm%tWM3#6l)_il``+yP6nPc`+aIPAO@hB5=L+r7 zL6kseq~EqE;H~|hoDjYTQ~Rzj5#8Q;V9TjI?EtUghKbP~&8+@NVzl0T6oxy<=$V%^ zaYuA+=09Xi7g1d(6n%RGTNZ-yk z@xh2SlRr;@Zf{mgnx_3q&y&_dZ*yh!QJ(cKbTfRLMh^mKVrVnC5GA-LEw-UCMxXuB zYXnV+-QyGHy|JwT_zg;c4GluHKBx&k*7w=QukA{5&490?F?QCcD`1+C572hnLfzOA z7J4HYUaQ$g45oc!!ZRB52{$9Y*v%0A89A3v^9!26&Y;qcvYG?k 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

- + + ); } diff --git a/OPUS-tauri-app/src/components/pages/Spaces/CreateTabModal.tsx b/OPUS-tauri-app/src/components/pages/Spaces/CreateTabModal.tsx index 11e2134b..bb39a039 100644 --- a/OPUS-tauri-app/src/components/pages/Spaces/CreateTabModal.tsx +++ b/OPUS-tauri-app/src/components/pages/Spaces/CreateTabModal.tsx @@ -7,17 +7,15 @@ import './CreateTabModal.css'; export function CreateTabModal() { const activeModal = useAppStore((s) => s.activeModal); const closeModal = useAppStore((s) => s.closeModal); - const createPtySession = useAppStore((s) => s.createPtySession); + const allocatePtySession = useAppStore((s) => s.allocatePtySession); const addTab = useAppStore((s) => s.addTab); const paneId = (activeModal?.props?.paneId as string) ?? 'main'; const workspaceName = (activeModal?.props?.workspaceName as string) ?? ''; - async function handleCreate(kind: 'terminal' | 'agent') { + function handleCreate(kind: 'terminal' | 'agent') { if (!workspaceName) return; - // TODO: resolve actual workspace cwd from repos - const cwd = '/'; - const terminalId = await createPtySession(workspaceName, kind, cwd); + const terminalId = allocatePtySession(workspaceName, kind); const tabId = `tab-${Date.now()}`; addTab(paneId, { id: tabId, diff --git a/OPUS-tauri-app/src/components/pages/Spaces/CreateWorkspaceModal.tsx b/OPUS-tauri-app/src/components/pages/Spaces/CreateWorkspaceModal.tsx index 4ffd3906..07e3dc28 100644 --- a/OPUS-tauri-app/src/components/pages/Spaces/CreateWorkspaceModal.tsx +++ b/OPUS-tauri-app/src/components/pages/Spaces/CreateWorkspaceModal.tsx @@ -31,7 +31,7 @@ export function CreateWorkspaceModal() { // Open an initial terminal tab try { - const terminalId = await allocatePtySession(wsName, 'terminal'); + const terminalId = allocatePtySession(wsName, 'terminal'); addTab('main', { id: `tab-${Date.now()}`, terminal_id: terminalId, diff --git a/OPUS-tauri-app/src/components/pages/Spaces/TabStrip.css b/OPUS-tauri-app/src/components/pages/Spaces/TabStrip.css index 7da7157b..9808a01a 100644 --- a/OPUS-tauri-app/src/components/pages/Spaces/TabStrip.css +++ b/OPUS-tauri-app/src/components/pages/Spaces/TabStrip.css @@ -32,9 +32,10 @@ font-size: 12px; color: var(--muted); white-space: nowrap; - cursor: pointer; + cursor: grab; transition: background var(--transition-fast), color var(--transition-fast); flex-shrink: 0; + position: relative; } .tab-strip__tab:hover { @@ -69,6 +70,7 @@ line-height: 1; color: var(--muted); opacity: 0; + cursor: pointer; transition: opacity var(--transition-fast), background var(--transition-fast); } @@ -98,3 +100,105 @@ background: var(--surface); color: var(--text); } + +/* Drop indicator line shown during tab drag */ +.tab-strip__drop-line { + position: absolute; + left: -1px; + top: 4px; + bottom: 4px; + width: 2px; + background: var(--accent); + border-radius: 1px; + z-index: 1; + pointer-events: none; +} + +.tab-strip__drop-line--end { + position: relative; + left: auto; + height: 20px; + flex-shrink: 0; +} + +/* Floating ghost that follows the cursor during tab drag */ +.tab-strip__ghost { + position: fixed; + display: flex; + align-items: center; + gap: 6px; + height: 28px; + padding: 0 10px; + border-radius: 3px; + font-size: 12px; + color: var(--text); + background: var(--surface); + border: 1px solid var(--border-active); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); + white-space: nowrap; + pointer-events: none; + z-index: 10000; + opacity: 0.9; +} + +.tab-strip__ghost .tab-strip__icon { + opacity: 0.8; +} + +/* Inline rename input */ +.tab-strip__rename-input { + width: 90px; + height: 20px; + padding: 0 4px; + border: 1px solid var(--accent); + border-radius: 2px; + background: var(--bg); + color: var(--text); + font-size: 12px; + font-family: inherit; + outline: none; +} + +/* Context menu */ +.tab-context-menu { + position: fixed; + z-index: 10000; + min-width: 160px; + padding: 4px 0; + background: var(--panel); + border: 1px solid var(--border); + border-radius: 3px; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3); +} + +.tab-context-menu button { + display: block; + width: 100%; + padding: 6px 12px; + text-align: left; + font-size: 12px; + color: var(--text); + background: none; + border: none; + cursor: pointer; +} + +.tab-context-menu button:hover { + background: var(--surface); +} + +.tab-context-menu__separator { + height: 1px; + margin: 4px 0; + background: var(--border); +} + +/* Body state during tab drag */ +body.tab-dragging { + cursor: grabbing !important; + user-select: none; +} + +body.tab-dragging * { + cursor: grabbing !important; +} diff --git a/OPUS-tauri-app/src/components/pages/Spaces/TabStrip.tsx b/OPUS-tauri-app/src/components/pages/Spaces/TabStrip.tsx index 136c231e..697f5f0d 100644 --- a/OPUS-tauri-app/src/components/pages/Spaces/TabStrip.tsx +++ b/OPUS-tauri-app/src/components/pages/Spaces/TabStrip.tsx @@ -1,3 +1,4 @@ +import { useState, useEffect, useRef, useCallback } from 'react'; import type { LayoutTab } from '@/types/layout'; import { useAppStore } from '@/state/store'; import { Terminal, Bot, GitCompare, Plus } from 'lucide-react'; @@ -16,56 +17,270 @@ const tabIcons: Record = { diff: GitCompare, }; +// ── Module-level drag state shared across all TabStrip instances ── + +type DragInfo = { tabId: string; fromPaneId: string }; +type DropTarget = { paneId: string; index: number }; + +let activeDrag: DragInfo | null = null; +let activeDropTarget: DropTarget | null = null; + +type StripEntry = { + element: HTMLDivElement; + tabsContainer: HTMLDivElement; + setDropIdx: (n: number | null) => void; +}; +const stripRegistry = new Map(); + +function getTabDropIndex(tabsEl: HTMLDivElement, x: number): number { + const tabEls = Array.from(tabsEl.querySelectorAll('[role="tab"]')) as HTMLElement[]; + for (let i = 0; i < tabEls.length; i++) { + const rect = tabEls[i].getBoundingClientRect(); + if (x < rect.left + rect.width / 2) return i; + } + return tabEls.length; +} + +function findStripAtPoint(x: number, y: number): { paneId: string; entry: StripEntry } | null { + for (const [paneId, entry] of stripRegistry) { + const rect = entry.element.getBoundingClientRect(); + if (x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom) { + return { paneId, entry }; + } + } + return null; +} + +function clearAllDropIndicators() { + stripRegistry.forEach(({ setDropIdx }) => setDropIdx(null)); +} + +// Floating ghost element that follows the cursor during drag +let ghostEl: HTMLDivElement | null = null; + +function createGhost(sourceTab: HTMLElement) { + const ghost = document.createElement('div'); + ghost.className = 'tab-strip__ghost'; + + // Clone the tab content (icon + label) but not the close button + const icon = sourceTab.querySelector('.tab-strip__icon'); + const label = sourceTab.querySelector('.tab-strip__label'); + if (icon) ghost.appendChild(icon.cloneNode(true)); + if (label) ghost.appendChild(label.cloneNode(true)); + + document.body.appendChild(ghost); + ghostEl = ghost; +} + +function moveGhost(x: number, y: number) { + if (!ghostEl) return; + ghostEl.style.left = `${x + 12}px`; + ghostEl.style.top = `${y - 14}px`; +} + +function removeGhost() { + if (ghostEl) { + ghostEl.remove(); + ghostEl = null; + } +} + +// ── Component ── + export function TabStrip({ paneId, tabs, activeTabId, workspaceName }: Props) { const setActiveTab = useAppStore((s) => s.setActiveTab); const removeTab = useAppStore((s) => s.removeTab); const closePtySession = useAppStore((s) => s.closePtySession); const allocatePtySession = useAppStore((s) => s.allocatePtySession); const addTab = useAppStore((s) => s.addTab); + const moveTab = useAppStore((s) => s.moveTab); + const reorderTab = useAppStore((s) => s.reorderTab); + const renameTab = useAppStore((s) => s.renameTab); + const splitPane = useAppStore((s) => s.splitPane); + + const [dropIdx, setDropIdx] = useState(null); + const [contextMenu, setContextMenu] = useState<{ x: number; y: number; tab: LayoutTab } | null>(null); + const [renamingTabId, setRenamingTabId] = useState(null); + const [renameValue, setRenameValue] = useState(''); + const renameInputRef = useRef(null); + const stripRef = useRef(null); + const tabsRef = useRef(null); + + // Register this TabStrip so other instances can find it during drag + useEffect(() => { + if (!stripRef.current || !tabsRef.current) return; + stripRegistry.set(paneId, { + element: stripRef.current, + tabsContainer: tabsRef.current, + setDropIdx, + }); + return () => { stripRegistry.delete(paneId); }; + }, [paneId]); + + // Close context menu on outside click + useEffect(() => { + if (!contextMenu) return; + const handler = () => setContextMenu(null); + document.addEventListener('mousedown', handler); + return () => document.removeEventListener('mousedown', handler); + }, [contextMenu]); + + // Focus rename input when entering rename mode + useEffect(() => { + if (renamingTabId) renameInputRef.current?.focus(); + }, [renamingTabId]); + + function handleContextMenu(e: React.MouseEvent, tab: LayoutTab) { + e.preventDefault(); + setContextMenu({ x: e.clientX, y: e.clientY, tab }); + } + + function startRename(tab: LayoutTab) { + setRenamingTabId(tab.id); + setRenameValue(tab.title); + setContextMenu(null); + } + + function commitRename() { + if (renamingTabId && renameValue.trim()) { + renameTab(paneId, renamingTabId, renameValue.trim()); + } + setRenamingTabId(null); + } + + function cancelRename() { + setRenamingTabId(null); + } + + const handleTabClick = useCallback((tab: LayoutTab) => { + setActiveTab(paneId, tab.id); + }, [paneId, setActiveTab]); function handleClose(e: React.MouseEvent, tab: LayoutTab) { e.stopPropagation(); removeTab(paneId, tab.id); if (tab.kind !== 'diff') { - closePtySession(workspaceName, tab.terminal_id); + closePtySession(tab.terminal_id); } } - async function handleAddTerminal() { + function handleAddTerminal() { if (!workspaceName) return; - try { - const terminalId = await allocatePtySession(workspaceName, 'terminal'); - const tabId = `tab-${Date.now()}`; - addTab(paneId, { - id: tabId, - terminal_id: terminalId, - title: 'Terminal', - kind: 'terminal', - }); - // TerminalSurface handles starting the PTY session after it mounts - } catch (err: unknown) { - const msg = typeof err === 'object' && err !== null && 'message' in err - ? String((err as { message: string }).message) - : 'Failed to create terminal session'; - console.error('Terminal creation failed:', msg); - } + const terminalId = allocatePtySession(workspaceName, 'terminal'); + const tabId = `tab-${Date.now()}`; + addTab(paneId, { + id: tabId, + terminal_id: terminalId, + title: 'Terminal', + kind: 'terminal', + }); + } + + function handleTabMouseDown(e: React.MouseEvent, tab: LayoutTab) { + // Only left-click + if (e.button !== 0) return; + // Don't start drag from close button + if ((e.target as HTMLElement).closest('.tab-strip__close')) return; + + e.preventDefault(); + const startX = e.clientX; + const startY = e.clientY; + const sourceEl = (e.target as HTMLElement).closest('.tab-strip__tab') as HTMLElement | null; + let dragStarted = false; + + const onMouseMove = (ev: MouseEvent) => { + if (!dragStarted) { + const dx = Math.abs(ev.clientX - startX); + const dy = Math.abs(ev.clientY - startY); + if (dx + dy < 5) return; + dragStarted = true; + activeDrag = { tabId: tab.id, fromPaneId: paneId }; + document.body.classList.add('tab-dragging'); + if (sourceEl) createGhost(sourceEl); + } + + moveGhost(ev.clientX, ev.clientY); + + // Clear all indicators, then set the one we're hovering + clearAllDropIndicators(); + const hit = findStripAtPoint(ev.clientX, ev.clientY); + if (hit) { + const idx = getTabDropIndex(hit.entry.tabsContainer, ev.clientX); + hit.entry.setDropIdx(idx); + activeDropTarget = { paneId: hit.paneId, index: idx }; + } else { + activeDropTarget = null; + } + }; + + const onMouseUp = () => { + document.removeEventListener('mousemove', onMouseMove); + document.removeEventListener('mouseup', onMouseUp); + + if (dragStarted && activeDrag && activeDropTarget) { + const { tabId: dragTabId, fromPaneId: dragFromPane } = activeDrag; + const { paneId: targetPane, index: targetIdx } = activeDropTarget; + + if (dragFromPane === targetPane) { + reorderTab(targetPane, dragTabId, targetIdx); + } else { + moveTab(dragFromPane, targetPane, dragTabId); + reorderTab(targetPane, dragTabId, targetIdx); + } + } else if (!dragStarted) { + // No drag occurred — treat as a click + handleTabClick(tab); + } + + activeDrag = null; + activeDropTarget = null; + document.body.classList.remove('tab-dragging'); + clearAllDropIndicators(); + removeGhost(); + }; + + document.addEventListener('mousemove', onMouseMove); + document.addEventListener('mouseup', onMouseUp); } return ( -
-
- {tabs.map((tab) => { +
+
+ {tabs.map((tab, i) => { const Icon = tabIcons[tab.kind] ?? Terminal; const isActive = tab.id === activeTabId; + const isRenaming = renamingTabId === tab.id; return (
setActiveTab(paneId, tab.id)} + onMouseDown={(e) => handleTabMouseDown(e, tab)} + onContextMenu={(e) => handleContextMenu(e, tab)} > + {dropIdx === i &&
} - {tab.title} + {isRenaming ? ( + setRenameValue(e.target.value)} + onKeyDown={(e) => { + if (e.key === 'Enter') commitRename(); + if (e.key === 'Escape') cancelRename(); + }} + onBlur={commitRename} + onMouseDown={(e) => e.stopPropagation()} + /> + ) : ( + startRename(tab)} + > + {tab.title} + + )}
); })} + {dropIdx === tabs.length &&
}
+ + {contextMenu && ( +
e.stopPropagation()} + > + + + +
+ + +
+ )}
); } diff --git a/OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.css b/OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.css index b5a81dad..366efa70 100644 --- a/OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.css +++ b/OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.css @@ -18,9 +18,32 @@ min-width: 0; min-height: 0; overflow: hidden; + position: relative; } .layout-split__divider { - background: var(--border); flex-shrink: 0; + background: var(--border); + position: relative; + z-index: 1; +} + +.layout-split__divider--row { + width: 5px; + cursor: col-resize; +} + +.layout-split__divider--col { + height: 5px; + cursor: row-resize; +} + +.layout-split__divider:hover { + background: var(--accent-soft); +} + +.layout-split__drag-overlay { + position: fixed; + inset: 0; + z-index: 9999; } diff --git a/OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.tsx b/OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.tsx index 26fc41b7..92371e1b 100644 --- a/OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.tsx +++ b/OPUS-tauri-app/src/components/pages/Spaces/TerminalLayoutNode.tsx @@ -1,4 +1,5 @@ -import type { LayoutNode } from '@/types/layout'; +import { useRef, useCallback, useState } from 'react'; +import type { LayoutNode, SplitNode } from '@/types/layout'; import { TabStrip } from './TabStrip'; import { TabContent } from './TabContent'; import { useAppStore } from '@/state/store'; @@ -9,6 +10,57 @@ type Props = { workspaceName: string; }; +function SplitDivider({ split }: { split: SplitNode }) { + const setSplitRatio = useAppStore((s) => s.setSplitRatio); + const containerRef = useRef(null); + const [dragging, setDragging] = useState(false); + const isRow = split.direction === 'row'; + + const handleMouseDown = useCallback( + (e: React.MouseEvent) => { + e.preventDefault(); + setDragging(true); + + const parent = containerRef.current?.parentElement; + if (!parent) return; + + const onMouseMove = (ev: MouseEvent) => { + const rect = parent.getBoundingClientRect(); + const pos = isRow ? ev.clientX - rect.left : ev.clientY - rect.top; + const total = isRow ? rect.width : rect.height; + if (total <= 0) return; + const ratio = pos / total; + setSplitRatio(split.id, ratio); + }; + + const onMouseUp = () => { + setDragging(false); + document.removeEventListener('mousemove', onMouseMove); + document.removeEventListener('mouseup', onMouseUp); + document.body.style.cursor = ''; + document.body.style.userSelect = ''; + }; + + document.body.style.cursor = isRow ? 'col-resize' : 'row-resize'; + document.body.style.userSelect = 'none'; + document.addEventListener('mousemove', onMouseMove); + document.addEventListener('mouseup', onMouseUp); + }, + [split.id, isRow, setSplitRatio], + ); + + return ( + <> + {dragging &&
} +
+ + ); +} + export function TerminalLayoutNodeView({ node, workspaceName }: Props) { const focusedPaneId = useAppStore((s) => s.focusedPaneId); const setFocusedPane = useAppStore((s) => s.setFocusedPane); @@ -20,6 +72,7 @@ export function TerminalLayoutNodeView({ node, workspaceName }: Props) { return (
setFocusedPane(node.id)} >
-
+
diff --git a/OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.tsx b/OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.tsx index 202375ec..0f729b1e 100644 --- a/OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.tsx +++ b/OPUS-tauri-app/src/components/pages/Spaces/TerminalSurface.tsx @@ -1,4 +1,4 @@ -import { useEffect, useRef, useCallback } from 'react'; +import { useEffect, useRef } from 'react'; import { Terminal } from '@xterm/xterm'; import { FitAddon } from '@xterm/addon-fit'; import { WebglAddon } from '@xterm/addon-webgl'; @@ -7,14 +7,17 @@ import { ClipboardAddon } from '@xterm/addon-clipboard'; import { Unicode11Addon } from '@xterm/addon-unicode11'; import { useAppStore } from '@/state/store'; import { useTerminalTheme } from '@/styles/ThemeProvider'; -import { ptyBootstrap } from '@/api/pty'; -import { onEvent } from '@/api/events'; +import { + terminalSpawn, + terminalAttach, + terminalDetach, + terminalWrite, + terminalResize, +} from '@/api/pty'; +import type { PtyEvent } from '@/api/pty'; import '@xterm/xterm/css/xterm.css'; import './TerminalSurface.css'; -const ACK_BATCH_BYTES = 32 * 1024; -const ACK_FLUSH_DELAY_MS = 25; - type Props = { workspaceName: string; terminalId: string; @@ -22,65 +25,51 @@ type Props = { export function TerminalSurface({ workspaceName, terminalId }: Props) { const termTheme = useTerminalTheme(); + const terminalStyle = useAppStore((s) => s.terminalStyle); const containerRef = useRef(null); const terminalRef = useRef(null); const fitAddonRef = useRef(null); const openedRef = useRef(false); - const startedRef = useRef(false); - const bootstrappedRef = useRef(false); - const pendingAckRef = useRef(0); - const ackTimerRef = useRef | null>(null); - const outputQueueRef = useRef([]); - const flushScheduledRef = useRef(false); - - const writePty = useAppStore((s) => s.writePty); - const resizePty = useAppStore((s) => s.resizePty); - const ackPty = useAppStore((s) => s.ackPty); - const startPtySession = useAppStore((s) => s.startPtySession); - const updatePtyStatus = useAppStore((s) => s.updatePtyStatus); - const updatePtyModes = useAppStore((s) => s.updatePtyModes); - const updateTabTitle = useAppStore((s) => s.updateTabTitle); - - const flushAck = useCallback(() => { - if (pendingAckRef.current > 0) { - const bytes = pendingAckRef.current; - pendingAckRef.current = 0; - ackPty(workspaceName, terminalId, bytes); - } - }, [workspaceName, terminalId, ackPty]); - - // Queue output and flush via requestAnimationFrame (like the Wails app) - const enqueueOutput = useCallback((data: string, bytes: number) => { - outputQueueRef.current.push(data); - pendingAckRef.current += bytes; - if (pendingAckRef.current >= ACK_BATCH_BYTES) { - flushAck(); - } - if (!flushScheduledRef.current) { - flushScheduledRef.current = true; - requestAnimationFrame(() => { - flushScheduledRef.current = false; - const term = terminalRef.current; - if (!term || !openedRef.current) return; - const chunks = outputQueueRef.current.splice(0); - if (chunks.length > 0) { - term.write(chunks.join('')); - } - }); + + // Use a ref for the PTY event handler so the main effect never re-runs + // due to callback identity changes (e.g. during HMR). + const ptyEventRef = useRef<(event: PtyEvent) => void>(() => {}); + ptyEventRef.current = (event: PtyEvent) => { + const term = terminalRef.current; + if (!term || !openedRef.current) return; + + switch (event.type) { + case 'Data': + term.write(event.data); + break; + case 'Closed': + useAppStore.getState().closePtySession(terminalId); + useAppStore.getState().closeTabByTerminalId(terminalId); + break; + case 'Error': + console.error('[TerminalSurface] PTY error:', event.message); + useAppStore.getState().updatePtyStatus(terminalId, 'error'); + break; } - }, [flushAck]); + }; + + // Stable handler that delegates to the ref — identity never changes. + const stableHandler = useRef((event: PtyEvent) => { + ptyEventRef.current(event); + }).current; - // Main initialization effect — sets up xterm, event listeners, starts PTY + // Main terminal lifecycle — only re-runs when identity changes. useEffect(() => { if (!containerRef.current) return; const container = containerRef.current; - const unlisteners: (() => void)[] = []; let disposed = false; + const style = useAppStore.getState().terminalStyle; const term = new Terminal({ - fontSize: 13, - fontFamily: "'JetBrains Mono', monospace", - cursorBlink: true, + fontSize: style.fontSize, + fontFamily: style.fontFamily, + lineHeight: style.lineHeight, + cursorBlink: style.cursorBlink, scrollback: 10000, allowProposedApi: true, theme: termTheme, @@ -95,51 +84,14 @@ export function TerminalSurface({ workspaceName, terminalId }: Props) { terminalRef.current = term; fitAddonRef.current = fitAddon; openedRef.current = false; - startedRef.current = false; - outputQueueRef.current = []; - - // Step 1: Register event listeners FIRST (before starting PTY) - const tid = terminalId; - - onEvent<{ terminal_id: string; data: string; bytes: number }>('pty:data', (payload) => { - if (disposed || payload.terminal_id !== tid) return; - enqueueOutput(payload.data, payload.bytes); - }).then((fn) => unlisteners.push(fn)); - - onEvent<{ terminal_id: string; snapshot?: string }>('pty:bootstrap', (payload) => { - if (disposed || payload.terminal_id !== tid) return; - if (payload.snapshot && !bootstrappedRef.current) { - bootstrappedRef.current = true; - enqueueOutput(payload.snapshot, payload.snapshot.length); - } - updatePtyStatus(tid, 'connected'); - }).then((fn) => unlisteners.push(fn)); - - onEvent<{ terminal_id: string; alt_screen: boolean; mouse: boolean }>('pty:modes', (payload) => { - if (disposed || payload.terminal_id !== tid) return; - updatePtyModes(tid, payload.alt_screen, payload.mouse); - }).then((fn) => unlisteners.push(fn)); - - onEvent<{ terminal_id: string; status: string }>('pty:lifecycle', (payload) => { - if (disposed || payload.terminal_id !== tid) return; - if (payload.status === 'started') updatePtyStatus(tid, 'connected'); - else if (payload.status === 'closed') updatePtyStatus(tid, 'disconnected'); - else if (payload.status === 'error') updatePtyStatus(tid, 'error'); - }).then((fn) => unlisteners.push(fn)); - - // Step 2: Open xterm when container has dimensions + const tryOpen = () => { if (disposed || openedRef.current) return; - if (container.clientWidth <= 0 || container.clientHeight <= 0) { - console.debug('[TerminalSurface] container has no dimensions yet:', container.clientWidth, container.clientHeight); - return; - } + if (container.clientWidth <= 0 || container.clientHeight <= 0) return; - console.debug('[TerminalSurface] opening xterm in', container.clientWidth, 'x', container.clientHeight); term.open(container); term.unicode.activeVersion = '11'; - // Load WebGL renderer after open (like the Wails app) try { term.loadAddon(new WebglAddon()); } catch (e) { @@ -148,63 +100,61 @@ export function TerminalSurface({ workspaceName, terminalId }: Props) { openedRef.current = true; - // Fit after fonts are ready, then auto-focus const safeFit = () => { - try { fitAddon.fit(); } catch (_) { /* renderer not ready */ } - }; - const focusAfterSettle = () => { - requestAnimationFrame(() => { - if (!disposed && openedRef.current) term.focus(); - }); + try { fitAddon.fit(); } catch { /* renderer not ready */ } }; if (document.fonts?.ready) { document.fonts.ready.then(() => { if (!disposed && openedRef.current) safeFit(); - focusAfterSettle(); + requestAnimationFrame(() => { + if (!disposed && openedRef.current) term.focus(); + }); }); } else { safeFit(); - focusAfterSettle(); + requestAnimationFrame(() => { + if (!disposed && openedRef.current) term.focus(); + }); } + // Wire up input, resize, and title change term.onData((data) => { - writePty(workspaceName, tid, data); + terminalWrite(terminalId, data); }); term.onResize(({ cols, rows }) => { - resizePty(workspaceName, tid, cols, rows); + terminalResize(terminalId, cols, rows); }); term.onTitleChange((title) => { - updateTabTitle(tid, title); + useAppStore.getState().updateTabTitle(terminalId, title); }); - // Step 3: Start PTY session AFTER xterm is open and listeners are registered - if (!startedRef.current) { - startedRef.current = true; - const ws = useAppStore.getState().workspaces.find((w) => w.name === workspaceName); - const cwd = ws?.path ?? '/'; - console.debug('[TerminalSurface] starting PTY session', tid, 'cwd:', cwd); + // Spawn or reattach the PTY + const isSpawned = useAppStore.getState().ptySessions[terminalId]?.spawned; - startPtySession(workspaceName, tid, 'terminal', cwd) + if (isSpawned) { + // Reattach — ring buffer replay restores screen content + terminalAttach(terminalId, stableHandler) .then(() => { - console.debug('[TerminalSurface] PTY session started, fetching bootstrap in 200ms'); - // Give the streaming thread a moment, then fetch bootstrap as fallback - setTimeout(() => { - if (disposed || bootstrappedRef.current) return; - ptyBootstrap(workspaceName, tid) - .then((payload) => { - if (disposed || bootstrappedRef.current) return; - bootstrappedRef.current = true; - if (payload.snapshot) { - enqueueOutput(payload.snapshot, payload.snapshot.length); - } - updatePtyStatus(tid, 'connected'); - }) - .catch(() => {}); - }, 200); + if (!disposed) useAppStore.getState().updatePtyStatus(terminalId, 'connected'); }) .catch((err) => { - console.error('PTY start failed:', err); - updatePtyStatus(tid, 'error'); + console.error('[TerminalSurface] attach failed, trying spawn:', err); + spawnFallback(); + }); + } else { + spawnFallback(); + } + + function spawnFallback() { + const ws = useAppStore.getState().workspaces.find((w) => w.name === workspaceName); + const cwd = ws?.path ?? '/'; + terminalSpawn(terminalId, cwd, stableHandler) + .then(() => { + if (!disposed) useAppStore.getState().markPtySpawned(terminalId); + }) + .catch((e) => { + console.error('[TerminalSurface] spawn failed:', e); + if (!disposed) useAppStore.getState().updatePtyStatus(terminalId, 'error'); }); } }; @@ -213,29 +163,24 @@ export function TerminalSurface({ workspaceName, terminalId }: Props) { if (!openedRef.current) { tryOpen(); } else if (!disposed) { - try { fitAddon.fit(); } catch (_) { /* renderer not ready */ } + try { fitAddon.fit(); } catch { /* renderer not ready */ } } }); observer.observe(container); requestAnimationFrame(tryOpen); - // ACK flush timer - ackTimerRef.current = setInterval(flushAck, ACK_FLUSH_DELAY_MS); - return () => { disposed = true; observer.disconnect(); - if (ackTimerRef.current) clearInterval(ackTimerRef.current); - for (const fn of unlisteners) fn(); + // Detach only — PTY keeps running in the backend + terminalDetach(terminalId).catch(() => {}); term.dispose(); terminalRef.current = null; fitAddonRef.current = null; openedRef.current = false; - startedRef.current = false; - bootstrappedRef.current = false; }; - }, [workspaceName, terminalId, writePty, resizePty, startPtySession, - updatePtyStatus, updatePtyModes, updateTabTitle, enqueueOutput, flushAck]); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [workspaceName, terminalId]); // Live-update terminal theme without recreating the PTY session useEffect(() => { @@ -245,5 +190,17 @@ export function TerminalSurface({ workspaceName, terminalId }: Props) { } }, [termTheme]); + // Live-update terminal font/style + useEffect(() => { + const term = terminalRef.current; + if (term && openedRef.current) { + term.options.fontSize = terminalStyle.fontSize; + term.options.fontFamily = terminalStyle.fontFamily; + term.options.lineHeight = terminalStyle.lineHeight; + term.options.cursorBlink = terminalStyle.cursorBlink; + try { fitAddonRef.current?.fit(); } catch { /* renderer not ready */ } + } + }, [terminalStyle]); + return
; } diff --git a/OPUS-tauri-app/src/main.tsx b/OPUS-tauri-app/src/main.tsx index dc3f4b53..47718102 100644 --- a/OPUS-tauri-app/src/main.tsx +++ b/OPUS-tauri-app/src/main.tsx @@ -1,10 +1,5 @@ -import React from 'react'; import ReactDOM from 'react-dom/client'; import App from './App'; import './styles/global.css'; -ReactDOM.createRoot(document.getElementById('root')!).render( - - - -); +ReactDOM.createRoot(document.getElementById('root')!).render(); diff --git a/OPUS-tauri-app/src/state/slices/layoutSlice.ts b/OPUS-tauri-app/src/state/slices/layoutSlice.ts index 1e7fcdf3..44c19d7b 100644 --- a/OPUS-tauri-app/src/state/slices/layoutSlice.ts +++ b/OPUS-tauri-app/src/state/slices/layoutSlice.ts @@ -1,6 +1,7 @@ import type { StateCreator } from 'zustand'; -import type { TerminalLayout, LayoutNode, LayoutTab, PaneNode } from '@/types/layout'; +import type { TerminalLayout, LayoutNode, LayoutTab, PaneNode, SplitNode } from '@/types/layout'; import { layoutGet, layoutSave } from '@/api/pty'; +import { findPane, findParentSplit, replaceNodeInTree } from '@/commands/layoutUtils'; export type LayoutSlice = { layout: TerminalLayout | null; @@ -13,6 +14,13 @@ export type LayoutSlice = { setActiveTab: (paneId: string, tabId: string) => void; setFocusedPane: (paneId: string) => void; updateTabTitle: (terminalId: string, title: string) => void; + closeTabByTerminalId: (terminalId: string) => void; + splitPane: (paneId: string, direction: 'row' | 'column') => string; + closePane: (paneId: string) => void; + setSplitRatio: (splitId: string, ratio: number) => void; + moveTab: (fromPaneId: string, toPaneId: string, tabId: string) => void; + reorderTab: (paneId: string, tabId: string, newIndex: number) => void; + renameTab: (paneId: string, tabId: string, title: string) => void; }; function findAndUpdatePane( @@ -52,6 +60,17 @@ function updateTabInNode( }; } +function findTabLocation( + node: LayoutNode, + terminalId: string, +): { paneId: string; tabId: string } | null { + if (node.kind === 'pane') { + const tab = node.tabs.find((t) => t.terminal_id === terminalId); + return tab ? { paneId: node.id, tabId: tab.id } : null; + } + return findTabLocation(node.first, terminalId) ?? findTabLocation(node.second, terminalId); +} + function defaultLayout(): TerminalLayout { return { version: 1, @@ -111,6 +130,12 @@ export const createLayoutSlice: StateCreator = return { ...pane, tabs, active_tab_id: activeId }; }); set({ layout: { ...layout, root: newRoot } }); + + // Auto-collapse empty panes (unless it's the root) + const updatedPane = findPane(newRoot, paneId); + if (updatedPane && updatedPane.tabs.length === 0 && newRoot.id !== paneId) { + get().closePane(paneId); + } }, setActiveTab: (paneId, tabId) => { @@ -141,4 +166,120 @@ export const createLayoutSlice: StateCreator = })); set({ layout: { ...layout, root: newRoot } }); }, + + closeTabByTerminalId: (terminalId) => { + const { layout } = get(); + if (!layout) return; + const loc = findTabLocation(layout.root, terminalId); + if (!loc) return; + get().removeTab(loc.paneId, loc.tabId); + }, + + splitPane: (paneId, direction) => { + const { layout } = get(); + if (!layout) return paneId; + const pane = findPane(layout.root, paneId); + if (!pane) return paneId; + const newPaneId = `pane-${crypto.randomUUID().slice(0, 8)}`; + const newPane: PaneNode = { kind: 'pane', id: newPaneId, tabs: [], active_tab_id: undefined }; + const split: SplitNode = { + kind: 'split', + id: `split-${crypto.randomUUID().slice(0, 8)}`, + direction, + ratio: 0.5, + first: pane, + second: newPane, + }; + const newRoot = replaceNodeInTree(layout.root, paneId, split); + set({ layout: { ...layout, root: newRoot }, focusedPaneId: newPaneId }); + return newPaneId; + }, + + closePane: (paneId) => { + const { layout, focusedPaneId } = get(); + if (!layout) return; + // Can't close root pane + if (layout.root.id === paneId) return; + const result = findParentSplit(layout.root, paneId); + if (!result) return; + const sibling = result.side === 'first' ? result.parent.second : result.parent.first; + const newRoot = replaceNodeInTree(layout.root, result.parent.id, sibling); + // If focused pane was the closed one, focus the first pane in the sibling + const newFocused = focusedPaneId === paneId + ? (sibling.kind === 'pane' ? sibling.id : findFirstPaneId(sibling)) + : focusedPaneId; + set({ + layout: { ...layout, root: newRoot, focused_pane_id: newFocused ?? undefined }, + focusedPaneId: newFocused, + }); + }, + + setSplitRatio: (splitId, ratio) => { + const { layout } = get(); + if (!layout) return; + const clamped = Math.min(0.85, Math.max(0.15, ratio)); + const newRoot = updateSplitRatio(layout.root, splitId, clamped); + set({ layout: { ...layout, root: newRoot } }); + }, + + moveTab: (fromPaneId, toPaneId, tabId) => { + const { layout } = get(); + if (!layout) return; + if (fromPaneId === toPaneId) return; + const srcPane = findPane(layout.root, fromPaneId); + if (!srcPane) return; + const tab = srcPane.tabs.find((t) => t.id === tabId); + if (!tab) return; + let newRoot = findAndUpdatePane(layout.root, fromPaneId, (pane) => { + const tabs = pane.tabs.filter((t) => t.id !== tabId); + const activeId = pane.active_tab_id === tabId ? tabs[tabs.length - 1]?.id : pane.active_tab_id; + return { ...pane, tabs, active_tab_id: activeId }; + }); + newRoot = findAndUpdatePane(newRoot, toPaneId, (pane) => ({ + ...pane, + tabs: [...pane.tabs, tab], + active_tab_id: tab.id, + })); + set({ layout: { ...layout, root: newRoot }, focusedPaneId: toPaneId }); + }, + + reorderTab: (paneId, tabId, newIndex) => { + const { layout } = get(); + if (!layout) return; + const newRoot = findAndUpdatePane(layout.root, paneId, (pane) => { + const tabs = [...pane.tabs]; + const oldIndex = tabs.findIndex((t) => t.id === tabId); + if (oldIndex === -1 || oldIndex === newIndex) return pane; + const [tab] = tabs.splice(oldIndex, 1); + tabs.splice(newIndex, 0, tab); + return { ...pane, tabs }; + }); + set({ layout: { ...layout, root: newRoot } }); + }, + + renameTab: (paneId, tabId, title) => { + const { layout } = get(); + if (!layout) return; + const newRoot = findAndUpdatePane(layout.root, paneId, (pane) => ({ + ...pane, + tabs: pane.tabs.map((t) => (t.id === tabId ? { ...t, title } : t)), + })); + set({ layout: { ...layout, root: newRoot } }); + }, + }); + +function findFirstPaneId(node: LayoutNode): string { + if (node.kind === 'pane') return node.id; + return findFirstPaneId(node.first); +} + +function updateSplitRatio(node: LayoutNode, splitId: string, ratio: number): LayoutNode { + if (node.kind === 'pane') return node; + if (node.id === splitId) return { ...node, ratio }; + return { + ...node, + first: updateSplitRatio(node.first, splitId, ratio), + second: updateSplitRatio(node.second, splitId, ratio), + }; +} diff --git a/OPUS-tauri-app/src/state/slices/ptySlice.ts b/OPUS-tauri-app/src/state/slices/ptySlice.ts index ff95303b..c9523fe4 100644 --- a/OPUS-tauri-app/src/state/slices/ptySlice.ts +++ b/OPUS-tauri-app/src/state/slices/ptySlice.ts @@ -1,90 +1,71 @@ import type { StateCreator } from 'zustand'; -import { ptyCreate, ptyStart, ptyWrite, ptyResize, ptyAck, ptyStop } from '@/api/pty'; +import { terminalWrite, terminalResize, terminalKill } from '@/api/pty'; export type PtySessionState = { terminalId: string; workspaceName: string; kind: 'terminal' | 'agent'; status: 'starting' | 'connected' | 'disconnected' | 'error'; - altScreen: boolean; - mouse: boolean; + spawned: boolean; }; export type PtySlice = { ptySessions: Record; - allocatePtySession: (workspaceName: string, kind: 'terminal' | 'agent') => Promise; - startPtySession: (workspaceName: string, terminalId: string, kind: 'terminal' | 'agent', cwd: string) => Promise; - createPtySession: (workspaceName: string, kind: 'terminal' | 'agent', cwd: string) => Promise; - closePtySession: (workspaceName: string, terminalId: string) => Promise; - writePty: (workspaceName: string, terminalId: string, data: string) => Promise; - resizePty: (workspaceName: string, terminalId: string, cols: number, rows: number) => Promise; - ackPty: (workspaceName: string, terminalId: string, bytes: number) => Promise; + allocatePtySession: (workspaceName: string, kind: 'terminal' | 'agent') => string; + markPtySpawned: (terminalId: string) => void; + closePtySession: (terminalId: string) => Promise; + writePty: (terminalId: string, data: string) => Promise; + resizePty: (terminalId: string, cols: number, rows: number) => Promise; updatePtyStatus: (terminalId: string, status: PtySessionState['status']) => void; - updatePtyModes: (terminalId: string, altScreen: boolean, mouse: boolean) => void; }; -export const createPtySlice: StateCreator = (set, _get) => ({ +export const createPtySlice: StateCreator = (set) => ({ ptySessions: {}, - allocatePtySession: async (workspaceName, kind) => { - const { terminal_id } = await ptyCreate(); + allocatePtySession: (workspaceName, kind) => { + const terminalId = crypto.randomUUID(); set((state) => ({ ptySessions: { ...state.ptySessions, - [terminal_id]: { - terminalId: terminal_id, + [terminalId]: { + terminalId, workspaceName, kind, status: 'starting', - altScreen: false, - mouse: false, + spawned: false, }, }, })); - return terminal_id; + return terminalId; }, - startPtySession: async (workspaceName, terminalId, kind, cwd) => { - await ptyStart(workspaceName, terminalId, kind, cwd); - }, - - createPtySession: async (workspaceName, kind, cwd) => { - const { terminal_id } = await ptyCreate(); - set((state) => ({ - ptySessions: { - ...state.ptySessions, - [terminal_id]: { - terminalId: terminal_id, - workspaceName, - kind, - status: 'starting', - altScreen: false, - mouse: false, + markPtySpawned: (terminalId) => { + set((state) => { + const session = state.ptySessions[terminalId]; + if (!session) return state; + return { + ptySessions: { + ...state.ptySessions, + [terminalId]: { ...session, spawned: true, status: 'connected' }, }, - }, - })); - await ptyStart(workspaceName, terminal_id, kind, cwd); - return terminal_id; + }; + }); }, - closePtySession: async (workspaceName, terminalId) => { - await ptyStop(workspaceName, terminalId).catch(() => {}); + closePtySession: async (terminalId) => { + await terminalKill(terminalId).catch(() => {}); set((state) => { const { [terminalId]: _, ...rest } = state.ptySessions; return { ptySessions: rest }; }); }, - writePty: async (workspaceName, terminalId, data) => { - await ptyWrite(workspaceName, terminalId, data); - }, - - resizePty: async (workspaceName, terminalId, cols, rows) => { - await ptyResize(workspaceName, terminalId, cols, rows); + writePty: async (terminalId, data) => { + await terminalWrite(terminalId, data); }, - ackPty: async (workspaceName, terminalId, bytes) => { - await ptyAck(workspaceName, terminalId, bytes); + resizePty: async (terminalId, cols, rows) => { + await terminalResize(terminalId, cols, rows); }, updatePtyStatus: (terminalId, status) => { @@ -99,17 +80,4 @@ export const createPtySlice: StateCreator = (set, _g }; }); }, - - updatePtyModes: (terminalId, altScreen, mouse) => { - set((state) => { - const session = state.ptySessions[terminalId]; - if (!session) return state; - return { - ptySessions: { - ...state.ptySessions, - [terminalId]: { ...session, altScreen, mouse }, - }, - }; - }); - }, }); diff --git a/OPUS-tauri-app/src/state/slices/uiSlice.ts b/OPUS-tauri-app/src/state/slices/uiSlice.ts index cc182206..da47309a 100644 --- a/OPUS-tauri-app/src/state/slices/uiSlice.ts +++ b/OPUS-tauri-app/src/state/slices/uiSlice.ts @@ -9,6 +9,13 @@ export type ModalState = { props?: Record; } | null; +export type TerminalStyle = { + fontFamily: string; + fontSize: number; + lineHeight: number; + cursorBlink: boolean; +}; + export type UiSlice = { activePage: NavPage; commandCenterSection: CommandCenterSection; @@ -16,6 +23,7 @@ export type UiSlice = { rightPanelCollapsed: boolean; activeModal: ModalState; activeThemeId: string; + terminalStyle: TerminalStyle; setActivePage: (page: NavPage) => void; setCommandCenterSection: (section: CommandCenterSection) => void; setSettingsSection: (section: SettingsSection) => void; @@ -23,6 +31,7 @@ export type UiSlice = { openModal: (type: string, props?: Record) => void; closeModal: () => void; setTheme: (id: string) => void; + setTerminalStyle: (style: Partial) => void; }; export const createUiSlice: StateCreator = (set) => ({ @@ -32,6 +41,12 @@ export const createUiSlice: StateCreator = (set) => ({ rightPanelCollapsed: false, activeModal: null, activeThemeId: 'dark', + terminalStyle: { + fontFamily: "'JetBrains Mono', monospace", + fontSize: 13, + lineHeight: 1.2, + cursorBlink: true, + }, setActivePage: (page) => set({ activePage: page }), setCommandCenterSection: (section) => set({ commandCenterSection: section }), @@ -40,4 +55,7 @@ export const createUiSlice: StateCreator = (set) => ({ openModal: (type, props) => set({ activeModal: { type, props } }), closeModal: () => set({ activeModal: null }), setTheme: (id) => set({ activeThemeId: id }), + setTerminalStyle: (patch) => set((s) => ({ + terminalStyle: { ...s.terminalStyle, ...patch }, + })), });