From 096478bcecfc6b3f6acceb3064ef6d9d28856719 Mon Sep 17 00:00:00 2001 From: Gigi Date: Sat, 11 Oct 2025 08:55:37 +0100 Subject: [PATCH 01/12] feat: add author info card for nostr-native articles - Create AuthorCard component showing profile picture and bio - Display author card after mark as read button - Only shown for nostr-native articles (not external URLs) - Fetch author profile data using applesauce ProfileModel - Card displays author name, avatar, and bio (truncated to 3 lines) - Responsive design with smaller avatar on mobile - Elegant card styling matching app design system Author information helps readers learn more about article authors directly within the reading experience. --- src/components/AuthorCard.tsx | 43 +++++++++++++++ src/components/ContentPanel.tsx | 8 +++ src/index.css | 93 +++++++++++++++++++++++++++++++++ 3 files changed, 144 insertions(+) create mode 100644 src/components/AuthorCard.tsx diff --git a/src/components/AuthorCard.tsx b/src/components/AuthorCard.tsx new file mode 100644 index 00000000..a706b851 --- /dev/null +++ b/src/components/AuthorCard.tsx @@ -0,0 +1,43 @@ +import React from 'react' +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { faUserCircle } from '@fortawesome/free-solid-svg-icons' +import { useEventModel } from 'applesauce-react/hooks' +import { Models } from 'applesauce-core' + +interface AuthorCardProps { + authorPubkey: string +} + +const AuthorCard: React.FC = ({ authorPubkey }) => { + const profile = useEventModel(Models.ProfileModel, [authorPubkey]) + + const getAuthorName = () => { + if (profile?.name) return profile.name + if (profile?.display_name) return profile.display_name + return `${authorPubkey.slice(0, 8)}...${authorPubkey.slice(-8)}` + } + + const authorImage = profile?.picture || profile?.image + const authorBio = profile?.about + + return ( +
+
+ {authorImage ? ( + {getAuthorName()} + ) : ( + + )} +
+
+
{getAuthorName()}
+ {authorBio && ( +

{authorBio}

+ )} +
+
+ ) +} + +export default AuthorCard + diff --git a/src/components/ContentPanel.tsx b/src/components/ContentPanel.tsx index 39375c67..4ce70871 100644 --- a/src/components/ContentPanel.tsx +++ b/src/components/ContentPanel.tsx @@ -16,6 +16,7 @@ import { useHighlightedContent } from '../hooks/useHighlightedContent' import { useHighlightInteractions } from '../hooks/useHighlightInteractions' import { UserSettings } from '../services/settingsService' import { createEventReaction, createWebsiteReaction } from '../services/reactionService' +import AuthorCard from './AuthorCard' interface ContentPanelProps { loading: boolean @@ -222,6 +223,13 @@ const ContentPanel: React.FC = ({ )} + + {/* Author info card for nostr-native articles */} + {isNostrArticle && currentArticle && ( +
+ +
+ )} ) : (
diff --git a/src/index.css b/src/index.css index c3c9a534..0c8bcfef 100644 --- a/src/index.css +++ b/src/index.css @@ -1018,6 +1018,99 @@ body.mobile-sidebar-open { } } +/* Author Card */ +.author-card-container { + display: flex; + justify-content: center; + padding: 2rem 1rem; +} + +.author-card { + display: flex; + gap: 1rem; + padding: 1.5rem; + background: #1a1a1a; + border: 1px solid #333; + border-radius: 12px; + max-width: 600px; + width: 100%; +} + +.author-card-avatar { + flex-shrink: 0; + width: 60px; + height: 60px; + border-radius: 50%; + overflow: hidden; + background: #2a2a2a; + display: flex; + align-items: center; + justify-content: center; + color: #666; +} + +.author-card-avatar img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.author-card-avatar svg { + font-size: 2.5rem; +} + +.author-card-content { + flex: 1; + min-width: 0; +} + +.author-card-name { + font-size: 1rem; + font-weight: 600; + color: #ddd; + margin-bottom: 0.5rem; +} + +.author-card-bio { + font-size: 0.9rem; + color: #999; + line-height: 1.5; + margin: 0; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; +} + +@media (max-width: 768px) { + .author-card-container { + padding: 1.5rem 1rem; + } + + .author-card { + padding: 1rem; + } + + .author-card-avatar { + width: 48px; + height: 48px; + } + + .author-card-avatar svg { + font-size: 2rem; + } + + .author-card-name { + font-size: 0.95rem; + } + + .author-card-bio { + font-size: 0.85rem; + -webkit-line-clamp: 2; + } +} + .bookmark-item { background: #1a1a1a; padding: 1.5rem; From c85092a644432693751cc3fecbe84ccf193fff6c Mon Sep 17 00:00:00 2001 From: Gigi Date: Sat, 11 Oct 2025 09:04:48 +0100 Subject: [PATCH 02/12] fix: color /me highlights with 'my highlights' color setting - Set level: 'mine' on all highlights in /me page - Highlights now use the customizable --highlight-color-mine CSS variable - Quote icons and borders automatically match user's color preference - Consistent styling with highlights shown elsewhere in the app --- src/components/Me.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Me.tsx b/src/components/Me.tsx index b6f0f1b4..9328498f 100644 --- a/src/components/Me.tsx +++ b/src/components/Me.tsx @@ -105,7 +105,7 @@ const Me: React.FC = ({ relayPool }) => { {highlights.map((highlight) => ( From 88f01554e74ea4c5704a4f030d0225d7b53ba1f7 Mon Sep 17 00:00:00 2001 From: Gigi Date: Sat, 11 Oct 2025 09:06:17 +0100 Subject: [PATCH 03/12] fix: improve mobile touch targets for highlight icons - Increase touch target size to 44x44px on mobile (relay & delete icons) - Add proper padding to both icons for larger tap area - Increase spacing between relay and delete icons - Expand quote icon container width on mobile to accommodate both targets - Increase icon font size on mobile (0.85rem) for better visibility - Move icons slightly outward (-8px) to prevent overlap Icons are now much easier to tap on mobile devices without accidentally hitting the wrong button. --- src/index.css | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/src/index.css b/src/index.css index 0c8bcfef..2b03544a 100644 --- a/src/index.css +++ b/src/index.css @@ -2084,13 +2084,19 @@ body.mobile-sidebar-open { .highlight-relay-indicator { position: absolute; - bottom: -2px; - left: 0; + bottom: -4px; + left: -6px; font-size: 0.7rem; color: #888; opacity: 0.7; transition: all 0.2s ease; cursor: pointer; + padding: 4px; + min-width: 20px; + min-height: 20px; + display: flex; + align-items: center; + justify-content: center; } .highlight-relay-indicator:hover { @@ -2105,13 +2111,19 @@ body.mobile-sidebar-open { .highlight-delete-btn { position: absolute; - bottom: -2px; - right: 0; + bottom: -4px; + right: -6px; font-size: 0.7rem; color: #888; opacity: 0.7; transition: all 0.2s ease; cursor: pointer; + padding: 4px; + min-width: 20px; + min-height: 20px; + display: flex; + align-items: center; + justify-content: center; } .highlight-delete-btn:hover { @@ -2124,6 +2136,31 @@ body.mobile-sidebar-open { transform: scale(0.95); } +/* Mobile: Larger touch targets and better spacing */ +@media (max-width: 768px) { + .highlight-quote-icon { + min-width: 100px; /* Ensure enough space for both touch targets */ + } + + .highlight-relay-indicator { + bottom: -8px; + left: -8px; + padding: 8px; + min-width: var(--min-touch-target); + min-height: var(--min-touch-target); + font-size: 0.85rem; + } + + .highlight-delete-btn { + bottom: -8px; + right: -8px; + padding: 8px; + min-width: var(--min-touch-target); + min-height: var(--min-touch-target); + font-size: 0.85rem; + } +} + /* Level-colored quote icon */ .highlight-item.level-mine .highlight-quote-icon { color: var(--highlight-color-mine, #ffff00); From 418bcb02959c25dfff8350acc3d4db83ed72246b Mon Sep 17 00:00:00 2001 From: Gigi Date: Sat, 11 Oct 2025 20:41:49 +0100 Subject: [PATCH 04/12] feat(pwa): upgrade to full PWA with vite-plugin-pwa - Add web app manifest with proper metadata and icon support - Configure vite-plugin-pwa with injectManifest strategy - Migrate service worker to Workbox with precaching and runtime caching - Add runtime caching for cross-origin images (preserves existing behavior) - Add runtime caching for cross-origin article HTML for offline reading - Create PWA install hook and UI component in settings - Add online/offline status monitoring and toast notifications - Add service worker update notifications - Add placeholder PWA icons (192x192, 512x512, maskable variants) - Update HTML with manifest link and theme-color meta tag - Preserve existing relay/airplane mode functionality (WebSockets not intercepted) The app now passes PWA installability criteria while maintaining all existing offline functionality. Icons should be replaced with proper branded designs. --- index.html | 2 + package-lock.json | 4181 ++++++++++++++++++++++- package.json | 4 +- public/icon-192.png | Bin 0 -> 70 bytes public/icon-512.png | Bin 0 -> 70 bytes public/icon-maskable-192.png | Bin 0 -> 70 bytes public/icon-maskable-512.png | Bin 0 -> 70 bytes public/manifest.webmanifest | 37 + public/sw.js | 56 - src/App.tsx | 21 + src/components/Settings.tsx | 2 + src/components/Settings/PWASettings.tsx | 84 + src/hooks/useOnlineStatus.ts | 28 + src/hooks/usePWAInstall.ts | 74 + src/main.tsx | 20 +- src/sw.ts | 108 + vite.config.ts | 37 +- 17 files changed, 4588 insertions(+), 66 deletions(-) create mode 100644 public/icon-192.png create mode 100644 public/icon-512.png create mode 100644 public/icon-maskable-192.png create mode 100644 public/icon-maskable-512.png create mode 100644 public/manifest.webmanifest delete mode 100644 public/sw.js create mode 100644 src/components/Settings/PWASettings.tsx create mode 100644 src/hooks/useOnlineStatus.ts create mode 100644 src/hooks/usePWAInstall.ts create mode 100644 src/sw.ts diff --git a/index.html b/index.html index 72296006..0cc87c04 100644 --- a/index.html +++ b/index.html @@ -4,6 +4,8 @@ + + Boris - Nostr Bookmarks diff --git a/package-lock.json b/package-lock.json index fa928b20..0b0b4b66 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "boris", - "version": "0.2.6", + "version": "0.4.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "boris", - "version": "0.2.6", + "version": "0.4.3", "dependencies": { "@fortawesome/fontawesome-svg-core": "^7.1.0", "@fortawesome/free-solid-svg-icons": "^7.1.0", @@ -37,7 +37,9 @@ "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", "typescript": "^5.2.2", - "vite": "^5.0.8" + "vite": "^5.0.8", + "vite-plugin-pwa": "^1.0.3", + "workbox-window": "^7.3.0" } }, "node_modules/@babel/code-frame": { @@ -123,6 +125,19 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-compilation-targets": { "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", @@ -150,6 +165,83 @@ "semver": "bin/semver.js" } }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz", + "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/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/@babel/helper-create-regexp-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/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/@babel/helper-define-polyfill-provider": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.10" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", @@ -160,6 +252,20 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", @@ -192,6 +298,19 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-plugin-utils": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", @@ -202,6 +321,56 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "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", @@ -232,6 +401,21 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz", + "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helpers": { "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", @@ -262,6 +446,811 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", + "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", + "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "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-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "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-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "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-async-generator-functions": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "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-block-scoping": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.4.tgz", + "integrity": "sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==", + "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-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", + "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", + "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", + "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "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-duplicate-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "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-explicit-resource-management": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", + "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", + "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-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "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-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "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-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "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-logical-assignment-operators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "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-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "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-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", + "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "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-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "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-numeric-separator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "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-object-rest-spread": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", + "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "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-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "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-private-methods": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "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-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", @@ -294,6 +1283,323 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz", + "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==", + "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-regexp-modifiers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "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-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "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-spread": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "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-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "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-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "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-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "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-unicode-property-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.3.tgz", + "integrity": "sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.0", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.28.3", + "@babel/plugin-transform-classes": "^7.28.3", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.28.0", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.3", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/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/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", @@ -974,6 +2280,17 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", @@ -1085,6 +2402,90 @@ "dev": true, "license": "MIT" }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", + "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-terser": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", + "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "serialize-javascript": "^6.0.1", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/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/@rollup/rollup-android-arm-eabi": { "version": "4.52.4", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz", @@ -1450,6 +2851,19 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -1576,6 +2990,13 @@ "@types/react": "^18.0.0" } }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/semver": { "version": "7.7.1", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", @@ -1583,6 +3004,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", @@ -2056,6 +3484,23 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -2066,6 +3511,123 @@ "node": ">=8" } }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/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/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -2150,6 +3712,63 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -2278,6 +3897,23 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2301,6 +3937,20 @@ "node": ">=18" } }, + "node_modules/core-js-compat": { + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz", + "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.26.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2316,12 +3966,76 @@ "node": ">= 8" } }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/date-fns": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", @@ -2378,6 +4092,42 @@ "node": ">=0.10.0" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -2481,6 +4231,37 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.232", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.232.tgz", @@ -2500,6 +4281,142 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", @@ -2759,6 +4676,13 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -2825,6 +4749,23 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", @@ -2848,6 +4789,29 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -2900,6 +4864,38 @@ "dev": true, "license": "ISC" }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2922,6 +4918,57 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -2932,6 +4979,70 @@ "node": ">=6.9.0" } }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true, + "license": "ISC" + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -3007,6 +5118,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -3028,6 +5156,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -3035,6 +5183,19 @@ "dev": true, "license": "MIT" }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3045,12 +5206,83 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hash-sum": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", "license": "MIT" }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hast-util-to-jsx-runtime": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", @@ -3120,6 +5352,13 @@ "entities": "^4.4.0" } }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "dev": true, + "license": "ISC" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -3182,6 +5421,21 @@ "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", "license": "MIT" }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/is-alphabetical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", @@ -3206,6 +5460,141 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-decimal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", @@ -3226,6 +5615,42 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3249,6 +5674,39 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3259,6 +5717,33 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -3290,6 +5775,181 @@ "node": ">=0.10.0" } }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3297,6 +5957,24 @@ "dev": true, "license": "ISC" }, + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -3336,6 +6014,13 @@ "dev": true, "license": "MIT" }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3363,6 +6048,29 @@ "node": ">=6" } }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -3373,6 +6081,16 @@ "json-buffer": "3.0.1" } }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -3424,6 +6142,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -3431,6 +6163,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true, + "license": "MIT" + }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -3463,6 +6202,16 @@ "yallist": "^3.0.2" } }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, "node_modules/markdown-table": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", @@ -3473,6 +6222,16 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mdast-util-find-and-replace": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", @@ -4499,6 +7258,50 @@ "integrity": "sha512-78BTryCLcLYv96ONU8Ws3Q1JzjlAt+43pWQhIl86xZmWeegYCNLPml7yQ+gG3vR6V5h4XGj+TxO+SS5dsThQIA==", "license": "MIT" }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/observable-hooks": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/observable-hooks/-/observable-hooks-4.2.4.tgz", @@ -4538,6 +7341,24 @@ "node": ">= 0.8.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -4644,6 +7465,13 @@ "node": ">=8" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -4673,6 +7501,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -4729,6 +7567,19 @@ "node": ">= 0.8.0" } }, + "node_modules/pretty-bytes": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", + "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/property-information": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", @@ -4770,6 +7621,16 @@ ], "license": "MIT" }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", @@ -4879,6 +7740,108 @@ "sanitize-html": "^2.15.0" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, "node_modules/remark": { "version": "15.0.1", "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", @@ -4961,6 +7924,37 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -5074,6 +8068,82 @@ "tslib": "^2.1.0" } }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/sanitize-html": { "version": "2.17.0", "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.0.tgz", @@ -5110,12 +8180,71 @@ "node": ">=10" } }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/set-cookie-parser": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", "license": "MIT" }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5139,6 +8268,82 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -5149,6 +8354,27 @@ "node": ">=8" } }, + "node_modules/smob": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", + "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", + "dev": true, + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "deprecated": "The work that was done in this beta branch won't be included in future versions", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -5158,6 +8384,35 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true, + "license": "MIT" + }, "node_modules/space-separated-tokens": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", @@ -5168,6 +8423,107 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/stringify-entities": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", @@ -5182,6 +8538,21 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -5195,6 +8566,16 @@ "node": ">=8" } }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -5239,6 +8620,80 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", + "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -5246,6 +8701,54 @@ "dev": true, "license": "MIT" }, + "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/tinyglobby/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/tinyglobby/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/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5259,6 +8762,16 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -5324,6 +8837,84 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", @@ -5338,6 +8929,69 @@ "node": ">=14.17" } }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/unified": { "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", @@ -5357,6 +9011,19 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/unist-util-is": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", @@ -5425,6 +9092,27 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", @@ -5554,6 +9242,56 @@ } } }, + "node_modules/vite-plugin-pwa": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-1.0.3.tgz", + "integrity": "sha512-/OpqIpUldALGxcsEnv/ekQiQ5xHkQ53wcoN5ewX4jiIDNGs3W+eNcI1WYZeyOLmzoEjg09D7aX0O89YGjen1aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.6", + "pretty-bytes": "^6.1.1", + "tinyglobby": "^0.2.10", + "workbox-build": "^7.3.0", + "workbox-window": "^7.3.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vite-pwa/assets-generator": "^1.0.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "workbox-build": "^7.3.0", + "workbox-window": "^7.3.0" + }, + "peerDependenciesMeta": { + "@vite-pwa/assets-generator": { + "optional": true + } + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5570,6 +9308,95 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -5580,6 +9407,354 @@ "node": ">=0.10.0" } }, + "node_modules/workbox-background-sync": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.3.0.tgz", + "integrity": "sha512-PCSk3eK7Mxeuyatb22pcSx9dlgWNv3+M8PqPaYDokks8Y5/FX4soaOqj3yhAZr5k6Q5JWTOMYgaJBpbw11G9Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.3.0.tgz", + "integrity": "sha512-T9/F5VEdJVhwmrIAE+E/kq5at2OY6+OXXgOWQevnubal6sO92Gjo24v6dCVwQiclAF5NS3hlmsifRrpQzZCdUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-build": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.3.0.tgz", + "integrity": "sha512-JGL6vZTPlxnlqZRhR/K/msqg3wKP+m0wfEUVosK7gsYzSgeIxvZLi1ViJJzVL7CEeI8r7rGFV973RiEqkP3lWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.24.4", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-replace": "^2.4.1", + "@rollup/plugin-terser": "^0.4.3", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "7.3.0", + "workbox-broadcast-update": "7.3.0", + "workbox-cacheable-response": "7.3.0", + "workbox-core": "7.3.0", + "workbox-expiration": "7.3.0", + "workbox-google-analytics": "7.3.0", + "workbox-navigation-preload": "7.3.0", + "workbox-precaching": "7.3.0", + "workbox-range-requests": "7.3.0", + "workbox-recipes": "7.3.0", + "workbox-routing": "7.3.0", + "workbox-strategies": "7.3.0", + "workbox-streams": "7.3.0", + "workbox-sw": "7.3.0", + "workbox-window": "7.3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/workbox-build/node_modules/rollup": { + "version": "2.79.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", + "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.3.0.tgz", + "integrity": "sha512-eAFERIg6J2LuyELhLlmeRcJFa5e16Mj8kL2yCDbhWE+HUun9skRQrGIFVUagqWj4DMaaPSMWfAolM7XZZxNmxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-core": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.3.0.tgz", + "integrity": "sha512-Z+mYrErfh4t3zi7NVTvOuACB0A/jA3bgxUN3PwtAVHvfEsZxV9Iju580VEETug3zYJRc0Dmii/aixI/Uxj8fmw==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-expiration": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.3.0.tgz", + "integrity": "sha512-lpnSSLp2BM+K6bgFCWc5bS1LR5pAwDWbcKt1iL87/eTSJRdLdAwGQznZE+1czLgn/X05YChsrEegTNxjM067vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.3.0.tgz", + "integrity": "sha512-ii/tSfFdhjLHZ2BrYgFNTrb/yk04pw2hasgbM70jpZfLk0vdJAXgaiMAWsoE+wfJDNWoZmBYY0hMVI0v5wWDbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-background-sync": "7.3.0", + "workbox-core": "7.3.0", + "workbox-routing": "7.3.0", + "workbox-strategies": "7.3.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.3.0.tgz", + "integrity": "sha512-fTJzogmFaTv4bShZ6aA7Bfj4Cewaq5rp30qcxl2iYM45YD79rKIhvzNHiFj1P+u5ZZldroqhASXwwoyusnr2cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-precaching": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.3.0.tgz", + "integrity": "sha512-ckp/3t0msgXclVAYaNndAGeAoWQUv7Rwc4fdhWL69CCAb2UHo3Cef0KIUctqfQj1p8h6aGyz3w8Cy3Ihq9OmIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0", + "workbox-routing": "7.3.0", + "workbox-strategies": "7.3.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.3.0.tgz", + "integrity": "sha512-EyFmM1KpDzzAouNF3+EWa15yDEenwxoeXu9bgxOEYnFfCxns7eAxA9WSSaVd8kujFFt3eIbShNqa4hLQNFvmVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-recipes": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.3.0.tgz", + "integrity": "sha512-BJro/MpuW35I/zjZQBcoxsctgeB+kyb2JAP5EB3EYzePg8wDGoQuUdyYQS+CheTb+GhqJeWmVs3QxLI8EBP1sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-cacheable-response": "7.3.0", + "workbox-core": "7.3.0", + "workbox-expiration": "7.3.0", + "workbox-precaching": "7.3.0", + "workbox-routing": "7.3.0", + "workbox-strategies": "7.3.0" + } + }, + "node_modules/workbox-routing": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.3.0.tgz", + "integrity": "sha512-ZUlysUVn5ZUzMOmQN3bqu+gK98vNfgX/gSTZ127izJg/pMMy4LryAthnYtjuqcjkN4HEAx1mdgxNiKJMZQM76A==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-strategies": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.3.0.tgz", + "integrity": "sha512-tmZydug+qzDFATwX7QiEL5Hdf7FrkhjaF9db1CbB39sDmEZJg3l9ayDvPxy8Y18C3Y66Nrr9kkN1f/RlkDgllg==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0" + } + }, + "node_modules/workbox-streams": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.3.0.tgz", + "integrity": "sha512-SZnXucyg8x2Y61VGtDjKPO5EgPUG5NDn/v86WYHX+9ZqvAsGOytP0Jxp1bl663YUuMoXSAtsGLL+byHzEuMRpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.3.0", + "workbox-routing": "7.3.0" + } + }, + "node_modules/workbox-sw": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.3.0.tgz", + "integrity": "sha512-aCUyoAZU9IZtH05mn0ACUpyHzPs0lMeJimAYkQkBsOWiqaJLgusfDCR+yllkPkFRxWpZKF8vSvgHYeG7LwhlmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-window": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.3.0.tgz", + "integrity": "sha512-qW8PDy16OV1UBaUNGlTVcepzrlzyzNW/ZJvFQQs2j2TzGsg6IKjcpZC1RSquqQnTOafl5pCj5bGfAHlCjOOjdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "7.3.0" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 4f7cf580..47b3e287 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,9 @@ "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", "typescript": "^5.2.2", - "vite": "^5.0.8" + "vite": "^5.0.8", + "vite-plugin-pwa": "^1.0.3", + "workbox-window": "^7.3.0" }, "eslintConfig": { "root": true, diff --git a/public/icon-192.png b/public/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..08cd6f2bfd1b53ec5a4db72bed55f40907e8bdfa GIT binary patch literal 70 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}1TpU9xZY8JuI3K{zz}&{z5M@%E Q4U}N;boFyt=akR{0J { - console.log('[SW] Installing service worker...') - self.skipWaiting() -}) - -// Activate event - take control immediately -self.addEventListener('activate', (event) => { - console.log('[SW] Activating service worker...') - event.waitUntil(self.clients.claim()) -}) - -// Fetch event - intercept image requests -self.addEventListener('fetch', (event) => { - const url = new URL(event.request.url) - - // Only intercept image requests - const isImage = event.request.destination === 'image' || - /\.(jpg|jpeg|png|gif|webp|svg)$/i.test(url.pathname) - - if (!isImage) { - return // Let other requests pass through - } - - event.respondWith( - caches.open(CACHE_NAME).then(cache => { - return cache.match(event.request).then(cachedResponse => { - if (cachedResponse) { - console.log('[SW] Serving cached image:', url.pathname) - return cachedResponse - } - - // Not in cache, try to fetch - return fetch(event.request) - .then(response => { - // Only cache successful responses - if (response && response.status === 200) { - // Clone the response before caching - cache.put(event.request, response.clone()) - console.log('[SW] Cached new image:', url.pathname) - } - return response - }) - .catch(error => { - console.error('[SW] Fetch failed for:', url.pathname, error) - // Return a fallback or let it fail - throw error - }) - }) - }) - ) -}) - diff --git a/src/App.tsx b/src/App.tsx index 685fc0df..0b63ce61 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -11,6 +11,7 @@ import { createAddressLoader } from 'applesauce-loaders/loaders' import Bookmarks from './components/Bookmarks' import Toast from './components/Toast' import { useToast } from './hooks/useToast' +import { useOnlineStatus } from './hooks/useOnlineStatus' import { RELAYS } from './config/relays' const DEFAULT_ARTICLE = import.meta.env.VITE_DEFAULT_ARTICLE_NADDR || @@ -88,6 +89,7 @@ function App() { const [accountManager, setAccountManager] = useState(null) const [relayPool, setRelayPool] = useState(null) const { toastMessage, toastType, showToast, clearToast } = useToast() + const isOnline = useOnlineStatus() useEffect(() => { const initializeApp = async () => { @@ -183,6 +185,25 @@ function App() { } }, []) + // Monitor online/offline status + useEffect(() => { + if (!isOnline) { + showToast('You are offline. Some features may be limited.') + } + }, [isOnline, showToast]) + + // Listen for service worker updates + useEffect(() => { + const handleSWUpdate = () => { + showToast('New version available! Refresh to update.') + } + + window.addEventListener('sw-update-available', handleSWUpdate) + return () => { + window.removeEventListener('sw-update-available', handleSWUpdate) + } + }, [showToast]) + if (!eventStore || !accountManager || !relayPool) { return (
diff --git a/src/components/Settings.tsx b/src/components/Settings.tsx index 3aa3750d..04d73e3c 100644 --- a/src/components/Settings.tsx +++ b/src/components/Settings.tsx @@ -10,6 +10,7 @@ import StartupPreferencesSettings from './Settings/StartupPreferencesSettings' import ZapSettings from './Settings/ZapSettings' import OfflineModeSettings from './Settings/OfflineModeSettings' import RelaySettings from './Settings/RelaySettings' +import PWASettings from './Settings/PWASettings' import { useRelayStatus } from '../hooks/useRelayStatus' const DEFAULT_SETTINGS: UserSettings = { @@ -164,6 +165,7 @@ const Settings: React.FC = ({ settings, onSave, onClose, relayPoo +
) diff --git a/src/components/Settings/PWASettings.tsx b/src/components/Settings/PWASettings.tsx new file mode 100644 index 00000000..20baeb5b --- /dev/null +++ b/src/components/Settings/PWASettings.tsx @@ -0,0 +1,84 @@ +import React from 'react' +import { faDownload, faCheckCircle, faMobileAlt } from '@fortawesome/free-solid-svg-icons' +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { usePWAInstall } from '../../hooks/usePWAInstall' + +const PWASettings: React.FC = () => { + const { isInstallable, isInstalled, installApp } = usePWAInstall() + + const handleInstall = async () => { + const success = await installApp() + if (success) { + console.log('App installed successfully') + } + } + + if (isInstalled) { + return ( +
+

Progressive Web App

+
+
+ + Boris is installed as an app +
+

+ You can launch Boris from your home screen or app drawer. +

+
+
+ ) + } + + if (!isInstallable) { + return null + } + + return ( +
+

Progressive Web App

+
+
+ + Install Boris as an app +
+

+ Install Boris on your device for a native app experience with offline support. +

+ +
+
+ ) +} + +export default PWASettings + diff --git a/src/hooks/useOnlineStatus.ts b/src/hooks/useOnlineStatus.ts new file mode 100644 index 00000000..3466502f --- /dev/null +++ b/src/hooks/useOnlineStatus.ts @@ -0,0 +1,28 @@ +import { useState, useEffect } from 'react' + +export function useOnlineStatus() { + const [isOnline, setIsOnline] = useState(navigator.onLine) + + useEffect(() => { + const handleOnline = () => { + console.log('🌐 Back online') + setIsOnline(true) + } + + const handleOffline = () => { + console.log('📴 Gone offline') + setIsOnline(false) + } + + window.addEventListener('online', handleOnline) + window.addEventListener('offline', handleOffline) + + return () => { + window.removeEventListener('online', handleOnline) + window.removeEventListener('offline', handleOffline) + } + }, []) + + return isOnline +} + diff --git a/src/hooks/usePWAInstall.ts b/src/hooks/usePWAInstall.ts new file mode 100644 index 00000000..ee101fb5 --- /dev/null +++ b/src/hooks/usePWAInstall.ts @@ -0,0 +1,74 @@ +import { useState, useEffect } from 'react' + +interface BeforeInstallPromptEvent extends Event { + prompt: () => Promise + userChoice: Promise<{ outcome: 'accepted' | 'dismissed' }> +} + +export function usePWAInstall() { + const [deferredPrompt, setDeferredPrompt] = useState(null) + const [isInstallable, setIsInstallable] = useState(false) + const [isInstalled, setIsInstalled] = useState(false) + + useEffect(() => { + // Check if app is already installed + if (window.matchMedia('(display-mode: standalone)').matches) { + setIsInstalled(true) + return + } + + // Listen for the beforeinstallprompt event + const handleBeforeInstallPrompt = (e: Event) => { + e.preventDefault() + const installPromptEvent = e as BeforeInstallPromptEvent + setDeferredPrompt(installPromptEvent) + setIsInstallable(true) + } + + // Listen for successful installation + const handleAppInstalled = () => { + setIsInstalled(true) + setIsInstallable(false) + setDeferredPrompt(null) + } + + window.addEventListener('beforeinstallprompt', handleBeforeInstallPrompt) + window.addEventListener('appinstalled', handleAppInstalled) + + return () => { + window.removeEventListener('beforeinstallprompt', handleBeforeInstallPrompt) + window.removeEventListener('appinstalled', handleAppInstalled) + } + }, []) + + const installApp = async () => { + if (!deferredPrompt) { + return false + } + + try { + await deferredPrompt.prompt() + const choiceResult = await deferredPrompt.userChoice + + if (choiceResult.outcome === 'accepted') { + console.log('✅ PWA installed') + setIsInstallable(false) + setDeferredPrompt(null) + return true + } else { + console.log('❌ PWA installation dismissed') + return false + } + } catch (error) { + console.error('Error installing PWA:', error) + return false + } + } + + return { + isInstallable, + isInstalled, + installApp, + } +} + diff --git a/src/main.tsx b/src/main.tsx index 525b7d80..b459225a 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -3,21 +3,31 @@ import ReactDOM from 'react-dom/client' import App from './App.tsx' import './index.css' -// Register Service Worker for offline image caching +// Register Service Worker for PWA functionality if ('serviceWorker' in navigator) { window.addEventListener('load', () => { navigator.serviceWorker - .register('/sw.js') + .register('/sw.js', { type: 'module' }) .then(registration => { console.log('✅ Service Worker registered:', registration.scope) - // Update service worker when a new version is available + // Check for updates periodically + setInterval(() => { + registration.update() + }, 60 * 60 * 1000) // Check every hour + + // Handle service worker updates registration.addEventListener('updatefound', () => { const newWorker = registration.installing if (newWorker) { newWorker.addEventListener('statechange', () => { - if (newWorker.state === 'activated') { - console.log('🔄 Service Worker updated, page may need reload') + if (newWorker.state === 'installed' && navigator.serviceWorker.controller) { + // New service worker available + console.log('🔄 New version available! Reload to update.') + + // Optionally show a toast notification + const updateAvailable = new CustomEvent('sw-update-available') + window.dispatchEvent(updateAvailable) } }) } diff --git a/src/sw.ts b/src/sw.ts new file mode 100644 index 00000000..86a9021e --- /dev/null +++ b/src/sw.ts @@ -0,0 +1,108 @@ +/// +import { clientsClaim } from 'workbox-core' +import { precacheAndRoute, cleanupOutdatedCaches } from 'workbox-precaching' +import { registerRoute, NavigationRoute } from 'workbox-routing' +import { StaleWhileRevalidate } from 'workbox-strategies' +import { ExpirationPlugin } from 'workbox-expiration' +import { CacheableResponsePlugin } from 'workbox-cacheable-response' + +declare let self: ServiceWorkerGlobalScope + +// Precache all build assets (app shell) +// @ts-ignore - __WB_MANIFEST is injected by vite-plugin-pwa +precacheAndRoute(self.__WB_MANIFEST) + +// Clean up old caches +cleanupOutdatedCaches() + +// Take control immediately +self.skipWaiting() +clientsClaim() + +console.log('[SW] Boris service worker loaded') + +// Runtime cache: Cross-origin images +// This preserves the existing image caching behavior +registerRoute( + ({ request, url }) => { + const isImage = request.destination === 'image' || + /\.(jpg|jpeg|png|gif|webp|svg)$/i.test(url.pathname) + return isImage && url.origin !== self.location.origin + }, + new StaleWhileRevalidate({ + cacheName: 'boris-images', + plugins: [ + new ExpirationPlugin({ + maxEntries: 300, + maxAgeSeconds: 60 * 60 * 24 * 30, // 30 days + }), + new CacheableResponsePlugin({ + statuses: [0, 200], + }), + ], + }) +) + +// Runtime cache: Cross-origin article HTML +// Cache fetched articles for offline reading +registerRoute( + ({ request, url }) => { + const accept = request.headers.get('accept') || '' + const isHTML = accept.includes('text/html') + const isCrossOrigin = url.origin !== self.location.origin + // Exclude relay connections and local URLs + const isNotRelay = !url.protocol.includes('ws') + return isHTML && isCrossOrigin && isNotRelay + }, + new StaleWhileRevalidate({ + cacheName: 'boris-articles', + plugins: [ + new ExpirationPlugin({ + maxEntries: 100, + maxAgeSeconds: 60 * 60 * 24 * 14, // 14 days + }), + new CacheableResponsePlugin({ + statuses: [0, 200], + }), + ], + }) +) + +// SPA navigation fallback - serve app shell for navigation requests +// This ensures the app loads offline +const navigationRoute = new NavigationRoute( + async ({ request }) => { + try { + // Try to fetch from network first + const response = await fetch(request) + return response + } catch (error) { + // If offline, serve the cached app shell + const cache = await caches.match('/index.html') + if (cache) { + return cache + } + throw error + } + } +) + +registerRoute(navigationRoute) + +// Listen for messages from the app +self.addEventListener('message', (event) => { + if (event.data && event.data.type === 'SKIP_WAITING') { + self.skipWaiting() + } +}) + +// Log fetch errors for debugging (doesn't affect functionality) +self.addEventListener('fetch', (event) => { + const url = new URL(event.request.url) + + // Don't interfere with WebSocket connections (relay traffic) + if (url.protocol === 'ws:' || url.protocol === 'wss:') { + return + } +}) + diff --git a/vite.config.ts b/vite.config.ts index d5eeac76..8ab83bea 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,8 +1,43 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' +import { VitePWA } from 'vite-plugin-pwa' export default defineConfig({ - plugins: [react()], + plugins: [ + react(), + VitePWA({ + strategies: 'injectManifest', + srcDir: 'src', + filename: 'sw.ts', + injectRegister: null, + manifest: { + name: 'Boris - Nostr Bookmarks', + short_name: 'Boris', + description: 'Your reading list for the Nostr world. A minimal nostr client for bookmark management with highlights.', + start_url: '/', + scope: '/', + display: 'standalone', + theme_color: '#0f172a', + background_color: '#0b1220', + orientation: 'any', + categories: ['productivity', 'social', 'utilities'], + icons: [ + { src: '/icon-192.png', sizes: '192x192', type: 'image/png' }, + { src: '/icon-512.png', sizes: '512x512', type: 'image/png' }, + { src: '/icon-maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' }, + { src: '/icon-maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' } + ] + }, + injectManifest: { + globPatterns: ['**/*.{js,css,html,ico,png,svg,webp}'], + globIgnores: ['**/_headers', '**/_redirects', '**/robots.txt'] + }, + devOptions: { + enabled: true, + type: 'module' + } + }) + ], server: { port: 9802 }, From 489e4803948ceebd2e68e9e3fdf577fe6266a454 Mon Sep 17 00:00:00 2001 From: Gigi Date: Sat, 11 Oct 2025 20:42:29 +0100 Subject: [PATCH 05/12] docs: add PWA implementation summary and guide --- PWA_IMPLEMENTATION.md | 152 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 PWA_IMPLEMENTATION.md diff --git a/PWA_IMPLEMENTATION.md b/PWA_IMPLEMENTATION.md new file mode 100644 index 00000000..a4be1037 --- /dev/null +++ b/PWA_IMPLEMENTATION.md @@ -0,0 +1,152 @@ +# PWA Implementation Summary + +Boris has been successfully upgraded to a full Progressive Web App (PWA)! + +## What Was Implemented + +### 1. Web App Manifest +- **File**: `public/manifest.webmanifest` +- Includes app name, description, theme colors, and icon references +- Configured for standalone display mode +- Linked in `index.html` with theme-color meta tag + +### 2. Service Worker with Workbox +- **File**: `src/sw.ts` +- **Plugin**: `vite-plugin-pwa` with injectManifest strategy +- **Features**: + - Precaching of app shell (HTML, CSS, JS assets) + - Runtime caching for cross-origin images (30-day cache, max 300 entries) + - Runtime caching for cross-origin article HTML (14-day cache, max 100 entries) + - SPA navigation fallback for offline app loading + - Automatic cleanup of old caches + - **WebSocket traffic is NOT intercepted** - relay functionality preserved + +### 3. PWA Install Experience +- **Hook**: `src/hooks/usePWAInstall.ts` +- **Component**: `src/components/Settings/PWASettings.tsx` +- Captures `beforeinstallprompt` event +- Shows install button in Settings when app is installable +- Displays confirmation when app is already installed + +### 4. Online/Offline Status +- **Hook**: `src/hooks/useOnlineStatus.ts` +- Monitors `navigator.onLine` status +- Shows toast notification when going offline +- Integrated into main App component + +### 5. Service Worker Updates +- Checks for updates hourly +- Shows toast notification when new version is available +- User can refresh to get latest version + +## Files Created/Modified + +### New Files +- `src/sw.ts` - Workbox service worker +- `src/hooks/usePWAInstall.ts` - Install prompt hook +- `src/hooks/useOnlineStatus.ts` - Online status monitoring +- `src/components/Settings/PWASettings.tsx` - Install UI +- `public/manifest.webmanifest` - Web app manifest +- `public/icon-*.png` - PWA icons (placeholders) + +### Modified Files +- `vite.config.ts` - Added VitePWA plugin configuration +- `index.html` - Added manifest link and theme-color +- `src/main.tsx` - Enhanced SW registration +- `src/App.tsx` - Added online/offline monitoring +- `src/components/Settings.tsx` - Added PWA settings section +- `package.json` - Added PWA dependencies + +## Icon Placeholders + +⚠️ **IMPORTANT**: Replace placeholder icons with proper branded designs! + +Current placeholders are minimal 1x1 pixel images. You need: +- `public/icon-192.png` - 192x192px app icon +- `public/icon-512.png` - 512x512px app icon +- `public/icon-maskable-192.png` - 192x192px with safe area padding +- `public/icon-maskable-512.png` - 512x512px with safe area padding + +**Maskable icons** should have ~20% padding on all sides to ensure they look good on all devices. + +## Testing PWA Functionality + +### Local Development +```bash +npm run build +npm run preview # or serve the dist/ folder +``` + +### What to Test +1. **Install prompt**: Visit in Chrome/Edge, check for install button in Settings +2. **Offline mode**: Disconnect network, verify app shell loads +3. **Cached images**: View articles with images, go offline, images still load +4. **Cached articles**: View external articles, go offline, articles still available +5. **Relay connectivity**: Verify local relay and WebSocket connections work +6. **Updates**: Deploy new version, verify update notification appears + +### Lighthouse PWA Audit +Run in Chrome DevTools: +1. Open DevTools (F12) +2. Go to Lighthouse tab +3. Select "Progressive Web App" category +4. Run audit + +Expected scores: +- ✅ Installable +- ✅ PWA Optimized +- ✅ Works offline +- ⚠️ Icons (will pass after replacing placeholders) + +## Build Output + +The build process now: +1. Compiles TypeScript and bundles assets +2. Generates Workbox service worker from `src/sw.ts` +3. Injects precache manifest with all app assets +4. Outputs `dist/sw.js` and `dist/manifest.webmanifest` + +Build command: +```bash +npm run build +``` + +## Deployment Notes + +### Vercel/Cloudflare/Netlify +- No special configuration needed +- `_headers`, `_redirects`, `_routes.json` already excluded from precache +- Service worker will be served at `/sw.js` +- Manifest will be served at `/manifest.webmanifest` + +### CDN Considerations +- Set proper cache headers for `sw.js` (short cache, must-revalidate) +- App assets can have long cache (they're versioned) +- Icons and manifest can have moderate cache (1 hour - 1 day) + +## Existing Functionality Preserved + +✅ **Local Relay**: WebSocket connections not intercepted by SW +✅ **Airplane Mode**: Existing offline sync functionality intact +✅ **Image Caching**: Behavior preserved, now using Workbox +✅ **Nostr Events**: All relay operations work as before + +## Next Steps + +1. **Replace icon placeholders** with branded designs +2. **Test install flow** on mobile devices (iOS Safari, Android Chrome) +3. **Test offline experience** thoroughly +4. **Monitor service worker** updates in production +5. **Consider adding**: + - Web Share Target (share to Boris from system share sheet) + - Background Sync (queue writes when offline) + - Badging API (unread counts on app icon) + - Push notifications (optional, requires push service) + +## Resources + +- [PWA Documentation](https://web.dev/progressive-web-apps/) +- [vite-plugin-pwa Docs](https://vite-pwa-org.netlify.app/) +- [Workbox Documentation](https://developers.google.com/web/tools/workbox) +- [Maskable Icons](https://maskable.app/) + From 747811fa946e4bb688e8d0ab2820251f5fa8a710 Mon Sep 17 00:00:00 2001 From: Gigi Date: Sat, 11 Oct 2025 20:43:13 +0100 Subject: [PATCH 06/12] docs: add PWA launch checklist --- PWA_CHECKLIST.md | 95 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 PWA_CHECKLIST.md diff --git a/PWA_CHECKLIST.md b/PWA_CHECKLIST.md new file mode 100644 index 00000000..d49c629b --- /dev/null +++ b/PWA_CHECKLIST.md @@ -0,0 +1,95 @@ +# PWA Launch Checklist + +## Pre-Production + +- [ ] **Replace placeholder icons** with branded designs + - Create 192x192px and 512x512px icons + - Create maskable variants with safe area padding + - Use [Maskable.app](https://maskable.app/) to test maskable icons + +- [ ] **Test install flow** + - [ ] Chrome/Edge on desktop + - [ ] Chrome on Android + - [ ] Safari on iOS (limited PWA support) + +- [ ] **Test offline functionality** + - [ ] App shell loads when offline + - [ ] Cached images display + - [ ] Cached articles accessible + - [ ] Local relay still works + - [ ] Online/offline toast notifications work + +- [ ] **Run Lighthouse audit** + - [ ] PWA score >90 + - [ ] All installability criteria met + - [ ] No console errors + +- [ ] **Test service worker updates** + - [ ] Deploy new version + - [ ] Verify update notification appears + - [ ] Verify refresh loads new version + +## Production + +- [ ] **Verify manifest serving** + - Check `/manifest.webmanifest` is accessible + - Verify correct MIME type (`application/manifest+json`) + +- [ ] **Verify service worker serving** + - Check `/sw.js` is accessible + - Verify correct cache headers (short cache, must-revalidate) + +- [ ] **Verify icons serving** + - All icon sizes load correctly + - Proper MIME types for PNG files + +- [ ] **Test on real devices** + - [ ] iOS Safari (add to home screen) + - [ ] Android Chrome (install prompt) + - [ ] Desktop Chrome (install button) + - [ ] Desktop Edge (install button) + +## Post-Launch + +- [ ] Monitor service worker registration errors (analytics/logs) +- [ ] Monitor cache hit rates (optional) +- [ ] Gather user feedback on install experience +- [ ] Consider adding advanced PWA features: + - [ ] Web Share Target + - [ ] Background Sync + - [ ] Badging API + - [ ] Push Notifications + +## Known Limitations + +- **iOS Safari**: Limited PWA support, no install prompt (users must "Add to Home Screen" manually) +- **Firefox**: No install prompt, but PWA features work +- **Private/Incognito**: Service workers may be disabled +- **WebSocket**: Not affected by service worker (by design) + +## Troubleshooting + +### Service Worker Not Registering +1. Check browser console for errors +2. Verify `/sw.js` is accessible +3. Check HTTPS is enabled (required for SW) +4. Clear browser cache and reload + +### Install Prompt Not Showing +1. Verify manifest is valid (Chrome DevTools > Application > Manifest) +2. Check all installability criteria (Lighthouse PWA audit) +3. Try in Chrome/Edge (best PWA support) +4. Some browsers require user engagement before showing prompt + +### Offline Not Working +1. Check service worker is active (DevTools > Application > Service Workers) +2. Verify precache manifest was generated (check `dist/sw.js`) +3. Test after first visit (SW needs initial registration) +4. Check network tab shows "(from ServiceWorker)" for cached resources + +### Icons Not Showing +1. Verify icon files exist in `public/` directory +2. Check manifest references correct paths +3. Verify icon files are valid PNG format +4. Clear browser cache and reinstall app + From d9403a73c66198a379b1d3b20c2a363a2ff68842 Mon Sep 17 00:00:00 2001 From: Gigi Date: Sat, 11 Oct 2025 20:58:26 +0100 Subject: [PATCH 07/12] feat(icons): replace placeholder icons with branded favicons - Replace placeholder PWA icons with proper Boris-branded icons - Add favicon.ico, favicon-16x16.png, favicon-32x32.png - Add apple-touch-icon.png for iOS devices - Update index.html with proper favicon links - All icons extracted from boris-favicon.zip - PWA icons now use android-chrome-192x192 and android-chrome-512x512 --- boris-favicon.zip | Bin 0 -> 74941 bytes index.html | 5 ++++- public/apple-touch-icon.png | Bin 0 -> 9472 bytes public/favicon-16x16.png | Bin 0 -> 465 bytes public/favicon-32x32.png | Bin 0 -> 1036 bytes public/favicon.ico | Bin 0 -> 15406 bytes public/icon-192.png | Bin 70 -> 10537 bytes public/icon-512.png | Bin 70 -> 36942 bytes public/icon-maskable-192.png | Bin 70 -> 10537 bytes public/icon-maskable-512.png | Bin 70 -> 36942 bytes 10 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 boris-favicon.zip create mode 100644 public/apple-touch-icon.png create mode 100644 public/favicon-16x16.png create mode 100644 public/favicon-32x32.png create mode 100644 public/favicon.ico diff --git a/boris-favicon.zip b/boris-favicon.zip new file mode 100644 index 0000000000000000000000000000000000000000..038a8c5b2d2f33aaff7c14c9c91f79d8f89d265a GIT binary patch literal 74941 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

;oxlh9j+$OX5S( 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 - + + + + diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7630eb5277027b2807eb390a5b2cc3753c78fd59 GIT binary patch literal 9472 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 Hu0mjfWQN5$ literal 0 HcmV?d00001 diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..f202f0088af577fe47f9d8990eab63d7d075f5b4 GIT binary patch literal 1036 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 eb&RFyZ1Ly+!}lJ4%5mhSHE960;GIM2B{7c;YC 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 literal 70 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}1TpU9xZY8JuI3K{zz}&{z5M@%E Q4U}N;boFyt=akR{0JFyZ1Ly+!}lJ4%5mhSHE960;GIM2B{7c;YC z)vUet`ri1$)l}rrQHW4LAP~BOytF#-+x6cEj0k+IuUI32Kv*CJY01y-Femy*M)>`6 zuXN5oa@}A)#Zk$Bl2E%q!iFD#Tf?P+K%^+*;H4A}e$Y?`8^8svNk<^alzx7+3A?!Q z&l5uh%j3dh4~eh;-R*QcUz^dr+fy+*Kl_y_>g3w7$ZbBJajB@~7Xc?W3L{=D-VZ~* z2Z4oPc6w{NNWe(c!)E_?s@mzR=|PSN@qCPc`v|XY(={lV(*Y7&19`VUp@2HpV7=R3 zQU33I0rqp|xq}4E1{w2AFuS7!Oc%j=OX;;J1_NltB)H{51~_=w($#Y57=%H9c$KLU zbacV^km7@GNIn^7Z~fO{yRD|SC=%ZPe+3h!t7z>{sr5U-98jE$Y>Bl;0vrm+E&mt1#HE z`uX;};1ET|i!xtn$gfn7qDq!P_(3s)Uc3%B} zDeD}|{2J`mV_dA}0|G6M-Q5hBK}`wE1}|mjozGY8Je6?IDK97&dY~?-(rC&-caVNSSYxg-^Prkm~OskT? z_``zM1BB27F9yl|jJjVC!oZk=Q~7e}*EjN0EwS zG@h?CFox#g55jGl^jtnCuG{=u!R9EOBUSw}!NH2Oz_3U?s2u)bYo?^helviw{P)Mi zo-ThlYyy6SL?$h+QIl{Q4k6c*Fl=Mvkiacfu~$N7tqSMo7YQ;%Nbv1Z1}TPpfaUpG zJ0THX5dKIq@fuT*M6WFR&ykz0O8*+1Gi0FujAqvxKZ+sZ{fO&9SX9&@9gaiD^&PCPq2cfby%+v< ze|xVT8jMw}+sKB4gQHd;k9|yYnkMValh*3}So6;HHa7bYdCp&cek6+urDY#W4?er4 zow$WiGEeXnCnuPcEW-Qo>b);1$y%8rmej^DpDLvQ4}35xL4yK5*2BZa+qcaC1dQk- zYuh1H2^flGw41%<#RuMHAHg`$sy9e4j0I}RRzXLHQ}Q?igJyHM6X>ZG^9kmmz$RFOYJacOR%d5^y$7guRl_) zUPrThpZ{<2v_Qn?-cZazILx^k=B=e!s}y1L3jMZPYCKTJ*r$YKxy9F^pVT>PK2trP zCo>kqc0Ot{Q8UpI85>i7stR9s$_1?O5@FD}3gYnF=Xz-7lv3 z6vk=>YYv6NqV@O22q1I&DQVM!_2xkGjyJMTKR>1LIOKh3B}$_S3JS91uHmtC(!v** zPLIzBxZWRM6s>X1Tp|=VZqtQWcr?L6f^j`IM%QkK2n=&n&&3vMJh*LNJ*F$ZNP$Hd zkWxz28`u3L{L~2Sl80rmXQUj?Hm6m^s=Z(j59T|?k3?Ro^wXGu<)AmL&!42c4CVbZ zZ$UK?EBJiW3z;ZP;1C41#X+UB|lhe z_lh}*EF1ZIRu3!TDri>oa&r6Du$mnZ^x&>`XP%Lz!^0?;>xc+tlhjU_6tCBo(?FcQK(B}kyym@LMuH?MPyG7u@SU7Wb{lgp0*4wF44 zcqF8J>%|(j`E%WA38KSS8bL;60(OHsm46j~Rt?cNu{Sqr6j*!4#8E)DW=*wZZqQiq zDzAB4Gz^lm#k1pnlp%38dAomg$nV$<0_d~cd&;R|z1!}xLu?e23pbqtgU|aT@IP2s zFp#;{u2f>X-pj#kuu-?|_L1G*uy<0>ni2(spmnEC7omII#M3Hn)z2IDiU>X{o5(U^!C; zBQ)MJ5&Wg_$y^A986>b36}~0dlqu@fK*#>(xfdmB$`#V^ENbY1F!F^(uKnqDBYDE9 zGO7Kot=Z{vGfOm{Yx(WhGZF$~-p53yki2vo+xbwDLE8EGvFGf#tQhXj4B4S7BbHx| zH{|mb@8?P+x?#hTs3s1k@_F%#jOqAg3fC0|^JZkewwjga{;kz-b$u8Vf8Cs0T#G8L z0L5XuiKNJ$4!=T?Cd+mCC(W{KKiup*JU-_720krRZ7P?4s&<>*cQ8-c#~!IrGr9p$hgV6ZNDpUE&#&i^a;C zF8Df>Zyx?*THXF`MO$&E-Kkusp2Oja29L%1nD5d65mTQ5Nck52Tw>lm-;bJN`wqS1X?y~OWWV(_4Xui@e-6#ME zTF3^l3L9NNty~V>%+Eu~iAn`hV?(Tmhljxjq#$mKPx82@-VL^^5iaWc6IKJ-7)%na z&W8a8Fzp!~#aR`bV9OsFV<&CUp;X*4 zLA{!p*zIZK0V!6_X`1`?6T0xn;@y(3B~*pV*&$us{ulT6jU(H`;5p;n2>djyQ0J1G z`oiEGbQBb+Kt%Mid}X(C(8iutPe{*L-ug-v4D|VSu-ar0jd92@2ec$QO;)1*8vwMV zk{pC)H)=G4Ea`kU|L$P8sWyN6wFT`9x$*UXPsa915Yr4)pZ}q${Et zvyT^0lR}^G;Yf!p({P_zZ1d(WO^Q!b=`^ckzZ7SrgE29Y(6306jbiZF5g~$vDVj_R zCceKheXiT!J|akBd6|hU00MSn4})690Uj zJ771+3lbat1#H*+ZSVMA8yl>GoF3@WV%bS5+J-3*Y;q zi4=dcv9#0ym4O(w_uV#82cOb%k|fjLY?j5M{a%j^$?B!*DH%`!;=#hfNUyyxk}c$d z!ejom!TEg!QJ4rzqxGX>TDXM0MHt;H*jVgmsB=v>`QwSxXsYO-eSC~b;;&!dCz%o- z+jrGK_TA}Q)&~vujg&kzc;_}g6O+iS--YdFTkyBGx2K9!$zxfxMpb4HRWbt&sGnbt zcuP$jztf=Lv7}^DDgV@h=^C!wykGYle0jX)%Xa z|3c#BH+Q&^8|aGbGINhf$N`E@=Lx~WnN7tvt8qpE(YIqoi0J)MoTrHqp}6?;`uj!l zp2p$QVZ-RBgPBmQ19>aiy+nK?5|qs5@97%l^kVIVB7#Jdk4-50n+p1LI^p zwmT5XWcIHn2hl-IvR{Gm2O3&hY8IB!8>-mfF@_|9uozp>Pj__6X+|#(mxcA$)iad& zwXhPhE5kI=?P6X-{A=!Tl--m-1ea^9vsr%UR1k6fW6=b~cqW5n^|1K?m4MBtf#l|2 zWo%Xi3O@6=8Ys+#Xq*>?M-4h#j7U9{-iezs5H509o@EdG=^ zf)7rJY+rJ{;wLB7c1E%>FXCh3(O*{^*I_iXCZWibU8_`v-j@im5N$b?ia-?5;&)1O zDJ>S=m>fz;0rw3^t{2X`#ZpZx7M(W2l@tGlm#FKcz&j`-BctoFC-TdZ%aPGZlLN!y z`8n(CaGVMP1Z~kIT|QNS(wJ#$Yiq-znab^RfsTE5z+>@IK)H+!qoZ%w(<^{z12Eif ze@~a3p$Y0L59&Vg*r5YZXmhN3Kff{Xg43i*{_ho!IbTb;hE7Kz5Z7V z2+99?xrNoE_&uvNG56qu%YK%A>-oUTTR3-{UV_@Sf7%;)DpCa=h|42<=4vu7y2GQv zuWHr(i&oN9sf*R9VG~Hd)h)1SH9_9d@#d|Z)y_B^Z@GA`o()3UrD3z2BR7#{kl#^X zD4uTx{G+B`?bT+d{lD6))fT>O7T5Qtn!n6GGMgPR1&2c&7&e zKON?f8d;P-esnwxS)7}2+OH>o>GH9z<_U9ftdi3ruRE9#*9ZFpFF_z`M-d%ukA{lH zt+OfrXp2FMJ2H3C1mtHXX1`F32Lr5WqqW^oB`C*B(HiUd{;W4_vsY3x2kTC>1q&8) zrZl)<=lkS3I`rZ=;xdimIK71d|3+-k%Blw#U{ptC$5Fkj*qn=lb2-R9ncMp@ncZ+8 zjn`_j)y*zL!~ur{Z%w(wE$?!^mNdJ+a4el?8S4F5;QMA!>ZWh+UF-Agsy4a}>n3_z zu3I1928Qs%=^4`ddXN$-zc5Wyua!M$`Mg;385gM;(z0qAVUFN%{peYw$LxuJf4@!1W$&Ga_P0pqO<5# zVF8dQu(8Z7QPb(+?dtbP3cp=Nbw{VShqR1bzWVQv21S2ez8WJTcc4OUobBxuW36G@ zVJ}7|Itfb!n(Hl=0gP!26%tu{ad7|sWxji4%D0Ui|C~%r z)~`-aXm-sL^e|l$;^smo`6e8^VlY~MZ>zSsNQOp07{L;7=QxP0l?q1j$m9PWxX)Cd zy3!JsI7526R4;dbw%Webr>*rHEl>;z#OFJHgoudv4Y;#$#w<%xs#8w1HzWu#?(S7< zQ92ZvdeBz=3x%(nvUWWcs>jC1N3QkApFUSZ*FV_1yw7{Wl++(4f(lw{9L?k=pq7p5O64}M8N#qwqQJnJ{+IM0 z!PM@UD0|Ot&;${zH78zr{9N`G8(E_$;Hp#m(2ZB$0|SKT(KPWcnetyKEvry;ioB2S zM3!jxZTXY)IHrB}vgt_D`*HMx>vUcvgEHM#3}M%kD&mXUHJ|4@1UFkAX6RWCvnmYa zigh)?`FswY-1i}OHC~KshTTw%$GZ-DZKVzymtMKAD$WRx^-GijAChF;uavMrPXHTr8RVFZA>d7E}Vp04+lw{M_CT=#pKI8U%$O%O^!bJ48>jjN`+$2V<$}=mzXx zw{kkL}u9OqvjybuM&>&@(LD4t+*}k$HITEAswdv-5P|XIYb8C9ZVt914jJveJ zLAfM295FT0_3UQsJw7P{o5`NGB$y&^ zFV}?Fe6X}1lXh5vsp$&dS{aH-P=L==M#M!Z9@c3!V_ow+wkcSzJ_Q4js*2xsWkDLx zD+#X>q3gF|a+UX^qy1JywwEy9U$QJX(K8KRzi!w%zr9p6=)&Y)X5iMReA(QBPEqi} z!Qow;FqJ{Gw{~gdN!Gz7_}@c!gG~yrQ(?hG!(~EK=Pk6|+u)3zoh4KY7V_ld$*d9< z8Je%X`h3P5klWqMVfq(Ook|;Z!XW19|ezeWUcc@O5(?S#)%Gf98$w z{nnVH!ZwxuUC>wggUs23Y(_^wYjK^Mu)A{V&v*uyD!kS|nEh@rUrFJSVb^q=qZQf!@-#lE=Hd<+b{tnJ zos)Ez`Ab!6;MSzBU3+lY1$c#TL3Zd2kzQKuWU0m!wV|VRcHAI*OJ%*IGSB0BPsLq* zjZF%MBJw;LwQn&8kfn2M%u73?Dcs-M@3DBC8Q2V43RGP^A2zxJQ$#$tY+rAal^02H z?T_;e+6^v0`gAIru3)Kwh7c1TX>&ULY|*6?V4>ww;FG0h+^MOlji_p|Rqf5nj;Et@ zpVl3{WZ$}8?enG}_lIPr-Lk>mLq|MN&7cd1OUG% z5$-T(gZ(ia2L!m7P+oAr#>?9^)s|aopLv>?B8}xtO=+|4&sVBH)VlB1kBMGQ!GG`6 zdiKXPo@+D=ykHX->P?$)KrG3PzvzUTSpr$silLM_{*?PVCpuHC%oLSy4 zAk(TeKsfalIQ-q2-8$9RCrvD-o2?am3fLJ&6A9LXU`h$NmZ4(#&&6M-&U`81UC-B| zhlYP{q;#=;pu;|%D~B7)xXr`7g+h_gx&V2sV&_%K{eVFmrVHD=<~@55yyRfaf5Q8L zrna9jeMLjZGn;G-IB<$j`soF&w%hM&m_E(!pLhkdn<0JML2zoe)6Wl&O}&rK0HJ0a zAV+1_Ow$=s;Bx*fn)(mUg?~EzO<;YI5iwEv9-a1Yhg~-{id2l<MHUc&6dWwL#xq5&QpShYD_>$BulKg={8a&j zqZpX(%-|y~nArLOhQjTIyG5R>8%oS9E9myS*~Te*s1&Ui|ch@3VhT!T9^)=SSu znUI38a>5-yf5tnA*7hTp1O$=~2Xpnra~1j~cKZq9;s$4zTxmQur9_=s9?fW8_#g%@ zwd@Y3K@|$oWL~%HQz`JIL1@L$@k|NaV!SbQuq9L6Z>`E8t;0~oeOE@9+=|S7Yv~wN z<$UDRMy6RY_fjQx`Kx z;&KBJ$K^AG@MYHsB9a;WtA0{T;=)r(k2h}?3I}7Q8NQahzd4z?chYC?B($X(p(o$Q z2MIWA!3Q8>!c06hN;kW2bosmQCTbOYwRs(|%gx@x8szr8Hd6#1T=d0L*Ze2x#mBE- zx8iF{V7juhj}4J-$c>u%F*CKG$A)jPFcK6^K_A$dZU8d}zR`}0D=I%rTue+w!>8ro zvUH)9z zm;DxcV|y=Au0vNLxkfow2g<=+3cIie>=y6~&Vlw?g^zF)2``RJH2& zBD3Z{`gAd+=U2e1Tey9p$tYD(iGN>CZPX&9*9)To3rUL&KtLg!dw8+izwE_a_ga?b zIB0YIp+giyCTgiw2|QRz$x?Sgc8Z{Ti<%Rrtzhgzc+maj(UmuWnx@5=Mg*1~0~ePy z4Thid!noOhQ04my1@=L%PUszRgUxct?4S9K@l#<4zQfG-skY`tld+Q{t3+k}mM}P= zo#Us2{Akjrh8+yfPd|SOTs`iGz}m)l%=BIA$#0BfJr3od9~ z^Wv~;RzLF1Xi`GAMamB<~Y0Qi;;o?vi?f`c0NeR?@H2iZ)bM0!KVQCbc@v8<;6XcJ?m`SEqzbB zKc3kOSgxpNQq7LLAA=O@tvh|8lQ{-HGk=^G+;yb5I{w|f#SwyF|}!yM0-!*!~( z(ep#L9c5eC?-92}tqgYitu#Q8Xuypw2fUGg?Z5r!M$JsDmdf5|c^)wyTb!o-2*o5v zL>fqD*B_tjO3^L*=YN_b8Hh!~(w}r-F`6OK8kKHpL6+_m5d-n8Woe^@Tc2JD*=$V zriY9<=L<$Bw+WIAg!}m`J}Nj;J@>`kEW5IzsW%_g;6BM5=;EDJN&EWxN;qVQ42<&c zcJ(0n;9K1@d7GF$g=|o;|1PkSi1oU9D~TJqQIbu-XCew3`z+#$rp}B=B8Z?;G_6YQ zX!u1e_7~Ugig+M+Sk0?&dsLmVo_D_aj?IGS2aoJpZs%FsuE&?v19`|!c5e^Soa|fd zH>Ipsntpa$lS+YSinZZ*dXB|&#Q!C+^*3NPY(}FKbGWVPVP%-~3{qHF#1&#&F4oW< z&6I4bWu}*h{uyQ4gvf!qWSd-1b!h06cvn7#iGCkc$>i`lBl*Rm{jXw+*J`fsfHVJ7 zyR1uVU8n79@co(>W-euJ&g^djOZM&jf6{zwPK#>ONpSUrDD*$CFe($8~!Npxdr zmWXb6?P3eBFe*N7D6OvNh;D`%0uEGJNqO1;;g?iPN@P<0_wnc0Q|i&u3W>cis0kD_ zLR8eJ!uc8BQ7Vi(|33wirG)x!iefzXSyGU_D^)9k0s!OF5gP=?*L!1Os`6c@x{dV$ z$K;+aX8Bp1PIO=7ZLmZeZQ_jHOQ6RON_t2g+Iv3jXN%0XkxsK7MO&9sHbZn_YC;o#P^ z*nVvfq6?C^-rL#vu9i;SYA762(;W*Y_V0ii1RHjo{Gpt1G~R+o4&Z7qRis6a zo+wlpn~HsdR@$VYO&#$tSTJNAPD+OJ#*=qEh z52}MaURj(bh%F*--W6q(?D{Q1#vejAfi#oxf6Ln&X<{!4@$qf83Z_X+#ayPTaBN6j zHFdu)xDWgljPvD)b3I1hHOIG?94RTNbf4+B#^G}#__A6AeqhD(mk`qPEk;U70_uR! zJ4t4v}o{i@jVjs$8*$XgVf z4H)%(dFp$d@Ouqh!-3}^%`v6dOp*1tb;!8bIt#BW+V4vf%iM+$O580VnhwgA=>M2l zW%TN8fAtaEZQ=4DfTV{3Au#mB25d~7e5XDuzK#BpNDgOtEWWmCm|usayQU)i>C0^% zxZm>fD1&@Hm~F>KMfANOTywg<2;7|9q96ihkxV4P=BB5Mc90Mr5)Vcb35e%geu%ll z5>DIQlU2?+@#%02`Q3|L49V0Ntza}%L{SC~m1JehPt%v1XQDX<*;k!nnFh1*8u5}E z5rBA?Yq#E!!t(=1Hijhp>Gt@z_D@x;Q`att!cTCaOsBr|1xMQGtj(kN`l7cgj83Uh zOu)Fo?c6}QycsaB>?J*(NJ}P@Q!VaZ0I%xX!^LLKVr^8-qiXx>r16KTt8jYj4m9U< zc_M4BKM-93qr1>11kgJ=`@(tvZ-1rgMC=U+{Pf!rUon0)wYDFKylI~Rx$rzNIy-Ws zS1xu+iRr{P4jazE3w`zNQMGu0Ej9PmJRHsz0mKN{DX!2!SR~`D7oxf!%kQwN-V{}l zkXnE|3OHq&CJ~3LonZ`_{Eav)G-M*!an=Qb!f$v;QGy$;pszzYo^{>Su|}8i{b?Eu zXApVPcG}e^@7*hWd))%|SYKpl6Qo^KnE{yZlt05f$NME#>zj~4kiAmP?g=xC5@Msyphh~*2soj!j5ZI6ceUHRo<*w(ACgSah|NSHFZyg|UhDZR+%{V_K zh1ZMk@2@Fsh$U?adB1;|L)T{z#jq3@faxRtb^`BM^dS3&?l8g5ws6P%#j)}wlY9%ovx?6f>6Z$fa3Wqy!U)+UuNiFzia#VAq97K0Y^h>dJL3=`;b=Gm zI8f2-0x3d?xjQ;QNZa-_8Kv~Q0fMY$ubFtrOQHt4NYnZac0mAc>UC>s7S7uP*>+Y2 ziEda&HlLY5?#sj)H$sU(W}J#?5!2{0z>hX;?3AXCKLaUv0*RTW9Cq74x?N*Cr%a`W z;D$7CjZHIU3s^}&!FPOrLR0>$Yv#ip!PfX+%dFO4Fgcll&PJci@bqmrfx6raWq&Vp zfacs!|7ZjW2Lk2CH}aTztpGx_QD3QoeTMd5UxAUOXqCG_`S}hZC#an%UF-et`IilV1b2L#t2v)ql^G z%E-X!g0QZxYtDh)`ftM;z+{_gmVcXiE8Y+j(dzD~iFzvd!Hovn?vt-Y zCja*XhIJS)qoFY~D z->cbA0bO<^YAjX5Bawtu8Lr$blPd9-2Y~J-OGdCBre?kUuY6}*MSgW zu*rKyMe#307{F?Y{L<$C?MK?}NVLc-vMj6r;!Y|RQ4F>nyFcyy!&V8}-DnW%%%LaY@_RJ$P9{xm|x^@WXP9z@+12^YC|t=8J<|FQMd# zS*lNHL@A${QEwJuid{^m%wnLb>Mb2gZoE-Y*)eI;80I3f?QxJS1Mwcb)ii@2NNbO6 z;JQTiigGte@&KH-!AqwM+Q0w&4^al6034b05U>9IQOn7U=ZvZN4F-kY?Djx%%d)LZ zYu5`-{JYWrg^0>HYxC;!M$Y-%t3OrPWUj?Otm1S7-Pqjv4MQj4l;en!5f5Z(%(=1uRU8N$=A%6h#XZYT1w2$u5&PvSRP(?UIo z)fCFcg0wkbuN;4g=l<}7qm6SJbFW>*mmy}~EdXZrOJgj|M@`q+6#UcElPyOtGwh`X!{aWqVX-q#bM?I^CdG)<5)_Ivc)Hp2$ zjp&|IH>wnPi!iHbX!x~c({QnEO>*}b*A%|Rn#F?7&{JMi z3f_`b5~5(mSNZ3?-R;Sp47V}sSxM2Q?`A>GDFf-DC#L8`BW!H!GL;22HDUgxZ@o;v zew_P8Tp07bYMxo?zr$;YZ7X)&jCIG)Btmqwydhb5Mj?)~d9RbcNWxnu7n=&A11&K9 zyDDw$!IOTB4;2&UG#{xS_ORVVM@Of0{khm_jClI#UiAZPJzs|Ve6dW4*upg6z1?GX z{d*V}VCMZPYcgjeJIXhng{JY>p6_nxZJW>%#687Mg|+v!g3dtV3o6g$L)DWeKBz`E ze#)4kzK%alQ6pOIPEGQ`-oa(*q`N1}Ejj<5b@sswqZcWnv)UHz(cj0f2`8%`;2e0I z64U0*YHQ84;WaXYhrePE{`+usm|%H0)7HhwPK4V|J%#zQo2ci{17qr}bdSfGiiz_z zJH9{u=$6012*(nf4`R|2Tf)u8dfzm{2Z2I0{tHuSs79BSzr)0IQNuaz*6;Gx0r4Ar z>otWXq@~2Z(%DC49jm>@%l%%#i_J3qO3@FeIhLEmvv!ZYUHReer*nbUFJ6X{b4@ih zX(X+6vB$W;%!x1{&KS-r zFxKmYd4D*_VmP0D--(|-G-0DOw7aGlJ?}dMV9`1S7AT8_s{0HWA_bsSD z!!nuJe_xLf|S)9PMkN+1<>fx!cGV4ZHJ^OyzwZ9 z#=XV7aoV5?k^d`_`6Nb`;)!xTAyGYz>RHbyh2Q0?Ut77}{}gPyZ)(eR3XTB%$&?%6 zI66WAq3(bG)6>oBv9#5pvcOLxKV3LxR$?0N=UI*w%7tNMY{u?z)XgMvM1f3L5^MT5 z6HLp{kqEb8B+K-SunOB@$MQ<5CxfW&yO5RUJHiX zY0yXTZzHKT=EcwPBgFUoXhbabDBVAZm~?*f)8cyZ^5(;dgG|#G=}`AzwQrB1VwPXH zORxW{to(#%6&?d32a2?wQ+63G1aOK6%Es#VI&a%P6W6^|j93{_>O`jGH6eLj_ZOR7 zmmrRcTd=S2;+NG#6%wP(o)mIjGY4o_-J>Mu2Ueg%dX7Cf& zICNyQrMn5`X;?KUj){*KX4w|FLrst(G+5(gnN@X`yms2ny^u&%Shp`Pix6bl_`#7ZzVFfL4;=0h2<{>TJjIbxte%r^E8DGWx5%G!-U?~< z#j2&lpeFUkSpMdPG?&Ljn4ii2MTs!RCe>?F6?M(9#+$~Q*4fl|m=P1w%Kkl;66mpP zOK*qYsUy!#ANA$Hm*R zF9f>RJ+9x~!?}zmEZpkuld^ zR+Da5&UkEOo~pWLvK9WBOe9#cYi}5NCfpacohA9G?EQkDo%aP+OkCVN$k&8*VqS@J zp9AUa^XN)Nj2C&>`Ai{F-!nCzfwEF}7qO&l)=}W*JYhy5FeXltXlPS^#Oro!<+w50 zcWb{_iuzXf=0w?j0)NZmaBipq*{Y6mRM4k{3tZ*&dzZr`eYPF}n7ate% zaz#RTu2g{=W99I^<&zgb@0-txTz*5lpywt1+UXwjCHiHPFg-_z09%CdpSC{%ps@E- z33ArbPi#Krg$ocE&4!~Fn-0Cy(A4sliJ^B@4PioOkS{MN1!20#j|Ok8b3GW$F_FCl zIpFhv!z*X;TOTP5T+rCsCsPoD3m`r}oI8HQ6vpfxn5uTLYsR1u^!2H|iy8H6%C0P` z0pH6?MT;6W<6>M?20tsMN$#B#J3zuId5yddjshoqzH_qcZsQBS>Zi38(ywUHj{2UT zCcos3FY}R-*aGq;QAhxDj5~qPwG_@OSQYj0^8hg1r{U6VajuajPHQVeIMXnV%S(p}_jl5VHC^;}(?B}sXP zO=HK!b*H}bd;`|DGneTxjB`LPoR&EnC#IaWlj>D!@ci&?fnQODxZ*vNNIjv--)}es zTD|Hy24BU(T3m;<*k0WKA9$8-Lh31ap6<@|&nTO{D%PB)UZo{l?WFg_uehEVF*4^Z zL-4_gUEAyIYK<$V)O{~5zs0XF32s*{MB2koqek@XN@EMb9>2F)8v4ftL}@)n?e{FP z99vc>cMWzYtpk4cW!;GPjVd>pSR-4$cF`Z}5W|wO`ZON-NY3X0b_*RP*xoYxV?RfI zFh|ErOj3mz+S_qP>17d^UacA8e`|y*R6|m)x)9{u*?D0$e+rqNnD*@t>~7(^p6faH z^|b{D4rrfHu9>P~hLK^0>j(nCrJ|-bFI;WPIH!jrOKax`XBO;lsVvTyK^nXSTiyAB z4ImAv6bROw-O!zPcIrd^!M-7B_Oju$!B@wV1HtB&Nh?zkBIm8!Hzdyln{VMCCch=% zRBYcG{QTrujhNb*WuXng$P=#xi3=W5yq#JOe*@i=+@LR*7JHIIf4d$U!G5K zWjdaI4y?ALNK7z`vi?I|Bc42F3NiguF$@4=5UsZ>9pbV;MB;m-eXYes))dKQB3_DJ^=mKzHG{Wf4Y1 z_o(t2a(z7AX;jBr1QG`AIbh-_vn%D$$3(ny<#-4V2J}ASJ5uW`OyEz@pL(~i->Sw7 zmoeGPA`!dXz& z(1V3i&HoX=JtR5Nqurc#aUUmfGC`}`zZZF^`Fnqu@27^QNmrU%b*Wn*7{uED*PajR!Lk!p4_5B+Pg>U&^kUW~^&#(IojnmcbmP$} zg>4d~i@H5}f3&`|+^LR}grUqNcU?*qZwdYJdIXbD^pJ?0>jf$6YrgvP+&pMEwz&N< zOAn+=%;7sLXoL{3<$?4FbV3oLS1EQfM)XHL&&PYR<|jd8F`etdVHh#LgNBZ2w36yf zpy9~(y_sB24oxZ!O$8F0%?NUgX#_;}1YS(m9d|}B`8Hy0L`-JtWp-gcE(_D)kpoHk zb5&aB8MlbZu1+N5uO&lzxnsX6fSoh!G-gD@Qk8${o1B;(ym$DaDM*$S*2t)zAv&AqrRIZe$}mX|0_=#E{hx{r8pUDmj1=NS#FPl z7v=T=5Z!ta`lTi+@|4%j5?=9!9@Qp0@mRO2-d0R>*c{@wS<*%EL6QP%)yP1X35Qyp zB~$$_w+tLJaN|0hO8(`vH{&oMn&FuwpWY$8inEl{^s_~l7S_GM(9WRC%}pvLbGI!P zO$EC=n-8^JevnwP_nBhSDM@6YO+=*bK zp>@NkiQ+*Ig>JUy8|P{z^eP*xyxLla!Z_ zmnu*IAa`SD*_G`7l^?mjs4|rPem%zp1WU>=k5r~{OmM>ud_aVRKf$L94*y8`pyh3n zR4aE-{_gyvbY_tCIt|!B-?>PMmUT#iQ~B-&Fc1;_skMUb%I&R2T3J=T=EAWA0{e64 zXy%#ZYwQ`(Bv~))uRPAL`mD&DA9{q?TUc$CbkdF6w%#f^U(fq$)*BZl%egBI=rI?J zJQr}@mF_puK>~!gtI%m#43e{*xE$CcGZkK6K4Z^Fgui-O)+gXBw$@=Hbwa>h+D1hw zfj#K5@GMwh#vMMMOeCc>ZkMc{hVQlft>_1+b@o1xtb}UrIjP%v<0}=q)&(@PD_5Bk zL=m0nOYpUadQ?R4O#w&GkLiMF?cZ5~+D%xwIBqf55-~Zn(h(fG&3O(ilqrk(zhXJ# zzPAw}pN`I1?aL@YzR#84#MlF2EymTf1Kq~(eFVn9(Pgd6^|ejo)gzPXy#dh^+QNqO zH^s8eJBW%yg?P^gNc_$7##tXcqEHNN^`ge>$MOpD_C!(#=4^r!%YBV%f0?iuShinv zF%mT6nCzbK9+tIt&FZd}2E~|}XXg|+36J+BJV2kWaeDIlbq)--1P7wPvN0#t99k{yC;(sZ&QbUEp`!Ct70Og*k7PHxKmNIiZ&E* z0T6w>um0xh&h>ywbJB zrF^d(m#7<-`y;?M7ovUV0hHTAsK%+{$DTRR$D!zk`GuSjBHwB+BC)Bq!0Qjzs}37m zm2=mgVqTBl{`P8kRrVNzLXr=I&F5$zfXtV}-=01@E5k^)mgvjxe>?k`?)n(}hmMI; zTXlsGMaF;)cALk6f;ftW$ne5R_*Kp>8$q`vb5?dSgB&5f8<(g*Kd`tsz)uJaB>_D4`3w~|f|N0fbiuUECOnR!j3k`0T&#Ea0EPz_8gEE|@sclrTz z>I*?k;kF~qk%MD1jh;6(qizeTTCRbK z)emVcT#i;JNOB(QEcHEJJ9>}vmwE+6JG%#a;`Vf{@8qfZm#Ub764=ef%+1ezMH1fH z>j;s3xmPh!CP_o_GyQhtv~G5Nm*1qNWw1la7?h`}Lx^43eSTiXyL&vfALh?8iWK zef1#ArM=wf@m{xvOZCX0a0h*)Wl{a3Oy%_Oqfy;~s{k>jdrgn$V|t$uivB!G;uo4{ zw>IS=%yKB4S0hO43FGXBbcMZF;YQ7$5%ImH`NQ59Mk^4DF1yWG#>?fy^+YnaK{YMk zUNaQi$S>nHM^Xy-N21@j5S;VNdv#EvcPcur|Loo~wLyF(*0y_+r&WN^x!9_tfB)X& zMswV|YIWqml-~E-I=~-~A|Utjsh@mW!Kk+32eSKVE{w`-rwl59 zZT+MyHlY;752wGq{-t0I^|mlwxtp&LcD1i`;w z#OoWF*owPf&)pNlCx>r(HmQ81744xSU#^B$wWKJQM1^-e7MiPCAg-j$WoQ3T64buH z%E8l0(i-56cV&C%`Me{o2>+pw+V&JHI)n4Nq!18eb|o0L*`Vw{Mar^^kSo|kF)CFG3 z+j8?!opkN%c}3grZ|~!oTQ6y0BCLM}+5_!q5Zn9pNah@&=c%vTnR*nzz1xfUiQz2W zIRGi8;<@#kM$KP99S?SJm_IR$hNrZ$65O)mOl~`b!~(5u9ht87hmXi*mFJUi9qob->?%BEgz~)*iv z7;BLh&3d*q%>8ybj=Rtb-r-K=Lm;RK-aHW4V+*Ii=z)`wU>&xHiV8hwby0qL$9?s# zHJ+jMf@NHq=VKLfTz)>P5tT`R!t`-+s-`8VJ(0-j_u~$>GapVqgM?*WF5dI(iDLLv zlG_9jf!v(F&;}zGaS~i{$MGl(9f{wK8)MmaR`GsTp|YbpqqfXP3uk-&D%C0FB@R3+ zyO$4sxII1TGllv)qxO2nnkItGFX24L@EC=V%+b9MNn zuPmh1Zg&*=I@^V$7dWw78W2*mhQ2Ns&3tH%ObULtHTn5R9cT9Qc0+H7?4<*ZdH9T= z?J63AF}SLI*0N3px$%9kn4C@ zReK#Y64H|XcgP{{?v8}njvEJ718fg9?v6__#7Rih{gl3OKk~uG@mSv4onNCrYs%>` zZ&Ak>NKJ!OOxg7r{T~-V1$jL;+y~H{F;Rw3Rx~fXQcf}JS?cc5m|<<4C*?kyuL%ya zF7DgO0-&xs$+Y$6WMW1bcAu>o%E2s}zQ&PrYW7X85YBC3NP?x22|o13?reshWC zVfrmfZ`8W)mmla5-}JE>GO9Ge1fl7e5a;m)YikV#bElri`SD`9SNMmrBTX4Y67iDH z_wlOU53^HK!CTsbN%lav3o?c0_pPsg8XLwj510VCWgsw7oNDbG#gdyDM5_8&^Bu7T zCX{W7*R+c$#jb;@a8i(DVs)lbyeibt?rAWM1b2HnP7fqZNIo-^#R)mH=C@dy{5oSA zU=E9+((jg6BfNU=*diM31vW~i`jYH{?yX`0%Vwxb9LS`x@nQRPuNLiP`LBm_q;T`> zr$2p?+eMC$BQB>yvMPEnd|Xs%$s_JAe+c{(`Ry{mE33Y8dycSK{XXaNFXg%_ z?E3S=j&O7=!KDEFAr9h0JGY~%Y8oJxrS<+f zL+68W*-&Y9RH8|L0^-6@<1mRz5A?| z$v3-%D13$09bj8Hy>mMiWHsziNGv?-$Sz|BH2t-D4+2@z?WGQG6q&X9hWA z@!{F8&G8bZ0D?QX$5Z?sR!dHX#M0uMOTB@3kP3?KE-AzI{U9G&G;lYm{{V&X zfz>!~{6Vq%mDOuChDH?gj%ur%XhvQkn?36?BZZ)PBk4|O6R*e>6!;S(8d zs|9nd&F2S9Pwaev0{lPy*abG8dI4%mhQmt#^I{`!-Qh9eJHN$y4C`DT2tMBgG@}z< zzY3dwoEPk&oRjpb~OS^f08$+zQ1S4R@Qh0T5k$1k^E>0u(a$D-_6p+ZUw zs_GldUNaw7^vBIsnz@VIo6BNXJYc6!sLYpT0*e}!sZW<{ZAt*4ReN@2C85S9k)BUv zH1KSu;lngCBqsU(v|k@mdTl80{xNMSMTmSz^V!Yzw`Aj9S}Y5Op$Jcng(ViC{= zfwC`pI7+K~Wp&p+k}@mBZu+d{OT75^vkk+Wkh6motRCJCKDvm7oUAnVQz{y7gc(~Y zz89yr79XPuD@;v3k>>!2p#*x4D_|t2Ya;`^ycBcH^OW=t$2xireGe^$zF?pin`bH|V;*nXLX7GK)+Mz-bavsIvoJ#apLof8aqR)b z2o>He_C071%sG7;QXmx|50ltNhhW1@KbTl1jymoDdPS@*KZ2l zbJ&*DVM*SQScvYa;(Ndoj{~)(DPCyh;y~}Y_u3#NLCE3W`O(IT*3nlyua#E$C-&6$ z5l=oMsTxk_@k9;>pBUBeIxm!Xx?wFOP_5FP0~UW;k>F4B!KIdk2T)Iv8VO?1iMw>5 z=F2ZUQGN$Chn*Z|d3kxsUihsLZv7fB^u8)qe9z=WI6v~|3n_B(d|f#DhBNRBI4=mh zgm*lznaG&4Ft6G^-$<2^ebRztH(#v`k7ZjIalS>Z6?`pM=l}u z72X5I@3seh0t;s=>4bGviV0^Sxt#15EDCW(KyS4Vsp&YFzA%$u`r^C7{djTKH@@=v zsz2kf{_=3vrPxnpA`W`(28Z>K2`!s@=`6jg7riKbogq(Vvmn4z$#KUF*@q{k$TtPV?n;L4BPw z7f-Pzp*ZD4O#{${@hLF;YH8do?JXVH*y+^;_~26Zm*hXK|N!malQ@mGNMPgtznASKXCp1#Yx3 z;ZdGjU6G}USTFZELVm_gh=b91};9m$LZaE;T!k( zfENMAL$|mCoyq{KUYmO6Q}c4XwhXXvLMA*e{mge!o*mQZLeo%0ILY%;iwAL>20psh zHB@ff4OlOED@zDP42xONFi$UwvApjBwj8v`Ep1QfjeWx&N!77#SL`h@JV^gS#>EV! z9Z>}mpThOd&Z+Ak<$hihn=r#Yt1Xl&|J<^m9PzcKD8)T2-sUWPNjD(Y5Kxx8*tVj_ zsdd(d+;vX`5H8VknR_K}H-LHTK-mN`ExK`oA+c8!h91Fz^d5r6Esx-JSN+2MRVK&C zkA}EHD0>ruc6jMMs4+=K^s6ypiv2lBo;$+tU;>B6kM~?s4875HkFBmsj&4@JM$8v^ zUgT}O$Sfg#UIp`$@fwhHQo40K{=s>W2%8Ux^xz#^Wq}S>BIq zo4lHI*m!t4Yc>i)0gt3*DFn+*)JH4XyqEP8bmXN(CcXg&%qaWXjTfizc7V{zu(MVxqy(YuzZg^{@+(k323<`CkfLX=U!s z`V!8M>e_%xhi0Y}Q6OCQ)Tr49W40=S;dN4??!EJ`5n}e-ehj6gm98K?ThMLGYr^=R zd2xB1n@{{+P-{R@>I$E(U7d+`3CYCVC@5VnLE$v^8vBln%U=MPo(QlQ6_dgYLHU;v$>}WMRHq+h>V+b{!UQQJWSWL#>BE@91zVi8 zZ9d=(MH*30am)hNz|I8E0{SvNL_6qV*!=`E#!QgysUG)$ZE$q`YYvF@8+s&w0Xf zz9-}z21%3F^|wMPxFki$9WI2MIFn4p$%LNQ%bzG?q(e`7#@x9y&gqCz+T8xOL z0rk!OEW-+uK!Vwz%Y>|iPr=NyR|`iOz_Hf`XZ>?C`=Qbh;t5wNOw6Kk$%s^kom#mA zeW+?{R996`V{^^M;o40+(RA9A|Ml%vN#23TT>vrcQHH6hY^)_om^;aAuP9k!C-6MY z>~)G?53RX{qZw7&tiO-6DSN#12T1rxz(QU=$`huLDx5cugSh#g>fzIgP`ZJ8L z55TXzd~)Lz<}uyisfqhB`>rlp*DFkr+p3RaPUJ|kpTF?_y-q##uD4+P^(=#}NqklN z6sDNOqrJNt?{-St4U^@n+VxT0*U_jUp)^Z-Ax+}f8`pHn?b~v|jn(Qrv+z5w$Zh~r zkbrr5^F7xkP-bl(WL3)Gceb>LHl@*v(X53GUscO8#JTCHg@bdMB-w;)Dx3zqcPrQ0 zWQ?FveV~5(=Dg^B7t@2+!_2!0TnM<+*`ruvhndb?YJLkMHUrXW$95ab`4!gE2}CdAm*!25$_*N!Dg@vId45cO*=-HJmF`91qc5F)hsq-IZH z)Qr1}pOn7*@j(s4rfD{X&dULyc+%>+LQrLqwBqUVjPbr3$Jq`lYu=d!q?XCgOVR zv%E?M>~z>{1Er>~4u20lSlOpF+`lAHvtoCrCdXGa0es;&Xbb_5TsUe#RNO}tUoWM% z7v+0|G6Jj*>>M;Vr+rjlI`{}5@Z-{5Qh~^nXilL=gDn+z)hu)q zI4rHdlAWKgr4xR&h>;eev8gMW>MNdxQ$`o0gE8j2opk3vt}a{UV|oKn zvt<7Ttqe~8<-5CWB+9cuH}TRbuKCtN|L{!=ho26w&NDgh8@8DFZU}2kl7Z0V?#yNfymow_Ym!SVN(~rpe%w$dx@fhzI(dL zd&w~AUW@l72i}}i-UP1avKJ-QhXgb#zx_g9RCmtKxojBF7(my zu&AP{J_RrR8}k5<4;Mm9^bzgNE1k-Pf~<$dt%RK&$yOh~%)b<8WTecp4dF!3uw7SU z>1KkuPuPErOSZ1T(fDa>p1LoXu$y2K-i$JDSil{au0AXOA;~}!u$Z_fF41Xc%h|OQ zZ@8U#u~*&gCdiI>0WjY;e+7Y11TR!C-z;s+X|h3I*!D-Gj=q9u!cRk!GRp*RNI1(W z3f8iRYD7RHJnPkE&tw=hD-SOYCW1Q`GCr?l(Ynh}+5o(pp(jS;{>R?3#QDy#lRS);5`X1+@z57fK#r-6R>x>NH%c_QPTV>InCX_VQbVc>}oy#fYBX+DY91#Kyh*32{4+_8n`5 z#SDSf*}>T!6GxIAZr;z57WQy?CTR5&Fa13H0}7-w-i2+V)^#Qg15$6;`2zIvbAQ}+ zZmH*+E>U`4oy^Q^{UT!4)zf}iP(Ip%>f!)Zib4Fn3IhQW8=A(KkVsuvRTZJ^n=-s> z;J!c%q=`zfq~aQvSFuL0-0Zdz4%Ir_&@pbtqNl1{y?zAEHxZL{ywjH=G$JZ1!PiQD z1F$bv4aum1+ZMwYMykp|TrTvC!8aO9-8fKlOzTC5<-}LOQb6F%)!b4mUhs$2Z;D+8)JhuVApCcI9$22o{kL+J#|luD;O0xN z5Q@)FYL8tu!URyjJ%mM}_32&n*}ARgs#9+l;hQ=4hwRI>f+#3HXG=L$wR)$}sI9K7 zydc&i%>_PfxzT$~X%M*Qg3SD$Ac62EZ)E|$8=C#sn6tRhmfj+Kua-RZ*z81X(4zu` zQ{%Y3`C`$y(V`Ejbn%iJa8tz!zVe?FL-I`Fa!pA1@ok*V#u*RmN*U@niRgv(h$4h+&~(P)LK#OoPi}l&l_J>Pic)yUqc|HPG&VFXf(@14=eIN%qO?<-ve6?xamf%FMv4PjIPK=-{V?c+%jRIFeHsoahU?o1fth`O}=rEj`<)VgBvB$M7L(ux^ zj47@FpS@IDo5tk{e**Z6566=f`nAsJox!^ThkH*mc)$7|RIn>PVvohnj|Q*TN=M&q zt9%@|QM6r^2R{LE<6Rk+U=ONr5Z1rCYjI5~?f^RmfsGisI&~k8WaVN*OCO3+xa%Mk zx9E<#7Gh}m?5rR3tUX3`9J!Ck3Y<87C2l5AR(zdsA%YPcDE#FW#z{^kFK6@2M^ICVjmG&L;YG zMW3#ps&wQrA!*(nW^W$K(zOorDBgZb@fs+avVq}u>PJ1JE(*jYa7eA)fg?t@l3fQI z_9oXdGCQaJneV$6a3f{z(f%A>5_$nqODAB>Ul3z%^JA0T{{SNxWe4tUyQd{5(1=>g zyUa|)Lh@efmsR&}hGgmdOQTUjG5XWKKn#^+xr{n9yvu``8_Bm{MoD73hSWH8t0h6^ zDE#TSAN2_qr^V?+bB0WWciw9In*M0>qdjNy9p@=DIG*m0#U(WF2PPdTiedJ}ZHZEv zh|am?3%7x&L=0+KB4&Dj^2*3wCiIL*OKmfSWC)pvu9?-6148S>db(*;Y~Wy$la@t^ zLK4WhQ=y(HpL_DD>6-zsA9q&OI$zKRiQ8gMoTu{|`{=Up74zbp-tm?c zC+0YW=DITu5}`F9s0yo>sRt<(%#;j0pV%e64-+%!S-3*oPWYLlUIKXP$DZO8uRa&W zjgfwN;xzyhi1-r9Mi+s_F1R4R*G97KI&a5d976jP@I;I{TkMV@kSrs+=_3@`!BoHs zZ*^Ts4+H}G!^1Rx4XVRbahQdkb^X!kw$9gHHo5+4{G&&cRwPn>^N-{*c6opg=JK%? zjy6LR1+T7=)sg4XFYVRoGKyS|Jfg~k3xheWnLr%o)W&o%4^Tw**|MsHuFTBL8qC;V zUf(w2QBl%-NEt4)Zo#Ry8|r|D@w(iBym{Jr=8g-*_*zY~zm)-OA$~}7ls2rY;kuym z4{qVg0Jjb`hA}wo7*jJr-Cn_=nxN5t)Zh&xC%59}A^cF*wCe85#2ljF?^ zYa{mbaulWD0adMHL}$P)r`_W##poaxZ_L@mx<&2hdAUHJ@p5^;R^r7=sov8ZiU*B^ zk5?H^zGS7Re=VhQNtgVAy?gdjz|%?T;Tsa1ly|>hTPxwD9Vqw={04@p1wCx@WqiC< zCa4%N3Gd=O8`=+qkck`CfRZQ+95{Ob1_dO!_Lx&^T-!99-Q%u5RNGD9*-#;gF0Ny2 zI$v>UYEG+ve~b?l*BC%A<5j)$a;;bN1{WpKVPEWkEXcnu6#adX_WF0yi=U%Ejm8(0 zGdvp$RMj-_nWKxD^$<;jZltRRMcKJ+Ksp|LchEPLZFS5EBQ02UeFn_FILE&&d2EZ> z(#f0|!^GKIqX$UFqNjH6_fb8oh2+FgSN9}!T=iVQvQK= zyc(!fk+zCKXjlUQBQ_}u`fq=-g2+R)EvDc?lXR+U17>oHp>g6CA+5z@M3hvm_ z#5oW%(&>NdLB`0oVBm{{)-QfmmLQ(Zjdmxf&Sky@PB2}z zJIYKoBlcm+p<{(Rl2_Uq>b*Jz;^VQC{w_-xkFL(!o2!#f)NLE5_6|klquSJ|0pRlWBN_vnO5t62d`Vv0wavB@aT&$G( z*t?W7k&K|?w>>KWvMn$ppf08Lu%k6FPpm%%HewV5`Pj3OYVxYNteJw_a9OYEyVJ(# z>1Nr$l#Eyo9md&9UpO}@j=R=#a*q+i0UOM+!*pq}k&lzL+B~)c0M*Zyb-eacd~$aL z_JsvpT>Y_Ln<3vD&tzByu2hMjM4LAgt8NeBDX6Xs)W+#tZ^Z%5tN8cXRG*4dn403m z;ZDGd`?yg&;tCUvPIhe)A-=73wg6wzj++lgn803!O=oN{MsmQ^c%HmF8vu7Cli&U( z*CdOzW}@fbB#{?02>>(s9n|tUCr2QDoe#w{a{Kkv{ zjc0LgS>VDSUrj>rs+6{Ow!&^;f!+G`K3fmCH4{P8+w!VkQB+AOfZ})95D7Cn!+WPRZI(>6 zXKbF@UR!;SRAFrAZ;b>YY#t;2yswL^*{b}X@xIQ?&a^FuU(GUUKyD;P^^Fc+)c+_SsXL=wcP&2 zd8#N>RgsOnT`~_@t?b2=H*qe$+k|en_C3Ca&BJ&(X`jsoh_cpYaiyhv*BV6LGB`0Y zagY5yn+897>#MkT2xadmdt)wRqga`td!4F&gix0_c;j2x6$WY=>C#aD6c_}$YjrVX1In6Iw znkh0A7s!YmNSC=3Sb>xD{Qz!(vOf+LKQ%6=y0QR&Va;IhJVad6h}|>1YFS2X(yI3D z`i}WZ{Qt4HDYBc5u6mu8QKbx2YrG)BsY*kPxX!cnv-D<_nX0 z+v0SPe!McWy8<-b0**97>eU5h#$ebJK5ucW6D)TTlbQ`2YR#Y2n&l3nZ)rmT+hY%jyO=?ACw}9Y zI0Cjjr`aZN7m#F{ygiTptS&%nb=F=~oz91%@Wg%Z#xp)=@k3b{fQ?dHiQb3TSd0z1Tt%ujls%AZA0 z!7%|r=d)qHBveuNbD!{*12e27o?TTpG!<)WF-^VlG-lvc?1E}x;~r){5Z{6KHy9>P z#&?3_Vly)}@Xh|YAZ)v4gBx{w0ws8_Mi7>nI^He*e$#@-V-)sq%&%RG7K6xKK3a1X z+yGxW=sr4oEr_`#y8gSI1J!#iE$HE<8eYfn{1%EuBicG2uvj}AHqF?HnW2?(0xqoT zcm_|nUm{vVF`ErgTsu$g7N#_~wtsdg>ADz5z^IuJ?aEBi9gBuH=h~clRbA3gMRm7j zNp5WGa27N*wHMa1(%*f(dVN|dn;XpNn2c>2gW&u+%px)jLn6;kfEh~mhs_L~_~owe zLUVkcaMvI`_l6rVhnk$~wocDVHaNm#V%o?l(WoIBg8(Bm14#(Cf9yn8iuyLceU|bK zrK7~&coAoNFTQuS0$9NjxP`q`l#`1opqNuoXqWtbli!wT_UzfGa-7P~%Bq}c-Wr}{ ziF~}zM3+eG&dzDLc@&df&yTq81UIo`y9}(g7?Qt?PsQ>bc#XeS8^uZY1Xyg!yJ6h5 z^Y$@r+uWHN1_u2+7{pyv(2|tyU_Lco*m%gxla9XvjCc0f};B4B)1#~Q-Og%EejlWY^XaoC8#YgUU6cwk?Lc+FQabi z2#o*YyfW}(SmP+f=8r`j)B!?3csgDiHom^1P^3Fnm@(hSBJH+ay;AcKYn*Q(RII3p zy^QL9)2kzJ$)ytzs2d$&31`~BH}}p#fiYe-lVH=N7FE?3Y9aL} z)bpcZyOU-%=KU^J;KE}uu>AYhL(Zh1REJT6W2c(87unl8%1?H^oNNghdkskG+!>#nCw(e%SwAVj97Nyoj94cz4yaZD zSYQ1Aing@GO~`MLRMB*$S&DL=1E3G5g|LXvXzyLBzt5lD|=<{ zas2OZ@B9A#*X6ygSI&9P_dN4{?)x*wDx15=Bt|AuglbPE_Nv?6W~D(~Fg) zXERjP{po{bipTHs6K%9nZMT1iYSpU8<*D$P+6K~?;bMy$=z}cLtf!cZxD{Yln@n;h5yX zr=&#&V#P5iqbbrBMcgmm+h1L~n~>jh0KZFufxlIpXX+QD=CONP<(<~O3mMq-5F|N!1$f&cr8ap zQnn@ZW%;&!#gFU2E8eHdlH};-2ace(gz7-7Z5hd0R?9ozhY}A@3%`!qd~vOC;44K%|os?aR* zEdksJstWAEQhlQ@goVRH`F5r`A`YWfpO!W>1V-D&g5z_RwZG2eR{RvjMKXXz+pn*% zPA3YTBs$hGjAU~2Cn#)WR1C8_wF#6@z#e%z=4`4#B$FpxOzUkfLzqvGv4&e^8bjLL zwdm!amU8<~rf}sEXcB}0*qPBR^Dk?VT+E%WywjDdl~Jc)Ak*|wdtAnP!i?{3Eg+NY zqXwQgeIoMga1{RVpyWqICG5sx+}%RWGS6;g9XFmat*{x+D_A+UPVSm}NxJLM$SsE`B`fuJD||5TVZp%vk5j6IDeQg3gKmUIS}gN@|*{oR78CxV)(W_c#Cn z(Oq?p#7(vizDDsoJJA7` zNKzys*5OB&45w50-0lg$Mn{uQ*pwzjHvrFB!SbOfL zsvB1@ZC<9&ehzbDw34$qz<4O^mV|#*trtmA=N*6R;MLj_7Ffus-gl1@qDZ5DS~Wf_Rj8XsJLj!U zSIUagEvv*Tu4ajuB-c(U$%V{Ub#70ZRT^h*J%u7QL%t~S1ZEx`Q-o&y5S zNhOnO^63N+g>3nR23Av3UCFE;g5A6~s+OHSgIy6m>eAa?l2co?PYoSPt@6*WhWlX` zL~YVK79S>cjkS-U^Mt7_RiEdd^kQAEND8toWZ5{c{@CeR<4e6x(D14u1%H_TZbfs% z>4_m!tq7gaXCxmfe3FxT$ulQe%fw*j!I28JGHu-J0Kbz@gC;~=$u1%gAJ6fA&eFPH zPjd5XD}HtPbZgF*vi zvjaX8^+Owo9G41fS0117Y}YgUd6hQZfY{T64ZGjvKM9L_Jy|Yw7+4-v3+XTdHI7nY z+_;sn|Dy#5R0uZ}3BJcMepYIF&Jc*C|N7ebKRP%7dnHq+Zt8mkuw%{<3T|A>dQR#$ zBw{hah_hTJAv$-TxW_O<6;pj3=)b)h@}m((X`i1SiQJ)mMve|}|Gw53XF3U#?rSfd z`IXi=5P~LB!cJUboi;e7c|nN`6QFpM0{8oIQJ#5G>sg<4sCuwt0k>LZfuyM3oN~>G z5dX@R>hpw5d{gH89oMyK1Q~Zrl zOhbO3)_$1wk?04Z`>#5i!X|SI@||mXfQmmC;{PXN5EG9XytlqAXYKRbm2&(?6HDNS z!Y_onm-_{Ug^1Ul0TK|d-Oh_GIROtibp-QKO`7;h;~Ea_kPVj*`( zx^VGYM${K&F-r~E?LN1RC2Z39G}8Pqw8wb+hgM9dRZ>8L0IO4Z<7{HcK!0khB;EN~ zK{8U0*dB_m2lmf4KUd=R&W#Zu7v~Cp9MeVf>7eU%P*TC)!QImmG@n)w@zV%!uV2AJ z+(HByv_~tc5VNR&s@azHx$3yFlJ+(qu4vI;i8(%$X-Atrt{BXXgiN#y8{MM+DzrUTZ%lB5El=0N>91%DCqiOjb z5p#2GBa@3Y0ayA2LF;GvHE`=$xznkrsILE*R)$mxul~VM!^>o42A|5+FI{q;vz0cW zD|5A@WFUE5j7Ny&g+=Rh%aH4?EQsE4hSML?<#@`GIPEVYGAYS@qFw*x0#g04m7*%g zq2{tZX;XFmKP==F`B?&)#1u>ntHv*2&VQy6!ymz5EuW$y${|eurM7$eK*ptR+`uL|Hp)lE)|FcGCm9S?H|05# zYY#av>Lyn}>j#v4D!M65t4a5thvfV5MhF@`e8vSxe}1DpZkF7e_7NrhCv8UrL*}3V zP`zjztq53rzle6B+b_p&PWayMyE_v8B1auhqEtoT{`N0vrjtg3Jjv{t9yl$1(6I+u4yoshv;|a`X6a3~XgsZWP}AQfKAY@pWM*>w_hL`p$|uu?+=M zzgX}u75*^Xj$pHXBQgS`nhKV^#LV)3)im{0E<^{~!uUEbgGuH)`h-)PO)rZ&8JJX| zPEiFXNX31(PJ9>)x8;!tj-1=Vn~tR2banKLfT_4-R);!*!Y9M9D-P9h_pU~P&Jc6; z91-4B@tLKkH0r1`g>TuLAMc)5byj3Eh3rK0;2Z6lYn*io-bN0UoOgYC_4-8 zGvWk#FivNi-8K(mmsk{$?Cxo=#a#CT9;Mkt_MP`HkpvjMTGCQAeoYN-&6j0dDb(gKF(?PTzv>5L<-E5&!C~8lhlhJQ~4df zs%=u#N+>1H4z8wxli`r`YV{P)a^?e0!ao;h%`UGr*6}<^;?XoPSQx>jy1Mis*RnAd zE17){smxi3`H&dWKih5&$^+8;oH43ReMuFcLm9sOg%2h{4$o0^T|jCG`H^u0WAcqO zqS3B(8$p@LdhfWo4tC62*sA2&j$h0A0y;HPfzPIRpL7qI1(G=ddl(;biCzlm1p8Ak zgVfS9y*X|K@HG@mn0?tEY--lZK#w~EJ?Y-M*#iR2i$)-(HF9dL`ZT0(;rO{8>1aVP z%k9f(zFguDXvWbiCo3NbG8}Km0WF+95eWv8NQ@&sA4`XzFT^T6qhipC?I>e%1d3&coTquAa<_ zuP0~aaAu0^ph>ZaS1V!MIAvF)E}9|G3*ZFT>+!^DYjWPRzEfgJ@_1|hceBX3RuB2D zCg)lHQw5uj)-|smT-1JhVNf2s{$jqTQWOYo)JW#!tvYmMUn(lLRsnQPboNN0YAyc# zIRnklD>yM7dMg*19G5p<-oCSPa`e+J?rHHC`h+Y)O~vG_{Qab5eZ?RbLC@EIns3 zxU3tz(q@X=>eUO0tD@}jJZS*8PZ*wzu$uSfY84nskzTZR_gmTd^GiBG$IQIBLxQ3B z4r%fg_YM2B%%z&$-urW;WozY41opox?9*ZF5kNj!t4c;1v1UDB)XZRV zxvii?@r()-PAMzd=nWmDvW-1{RHBfx-CFmm|9pB#RZ!eLmeVPsA1tEP zrMN>1Vm}mCGUjnHK3MoR_+|eV+Dik8DBNrp?o!>s1SDXvhalF+(LPFDDO6vzls^~a z->Ot}wS>T{0(35_*S?;P7dF2-QA}yS?wUjx@&3uvtgFw^H(^|!;@`ga_C`SdtukRM z(OY}A92Iw7{z7x3PVoxx9`_rSJ6qs}-E)R03;obt4fU>)DK_7oyx_SJX-@KijRfJ_ z?Ds$QgDW+)ag~o&gXXjV?KrQ##(6Vp<8^>Y3Ja{Dh4r3Mjx}lAWdgGgz9SXR7^6bI zQ#rUxJz1wGm6RN?2VsM!79?3-Wat;(onUKYn|aIb+^s-_nc}up{1HT{2vVEqbVSQ_ z{&L<160u1Us7atc7Y*~FXU-|&6kD}F*Csqu^zL0gfkb0^^wj=Uk`Y?F7qUA};hUMQ zNe;t953Wjyu^|D-=S%oW`R3LLqSZ?couCnibm6lFKPuY*ls9hnt>iF(4PAE9e;k)P zAwFh%elV+JYU|$I&L~m}y{M4_P({nDwemJr-Fv4l+=^0SyNayj+!EcscIq_hdu_Fl zbr7n3b2^eJO{41l_f(C0GN+T4 zR&&_aCpntpmo8Nw96XrdP!mBNz2tu`$*Xh#&1ZJqx}=x}tMI27A)-)djCV9@_VnW2 zO!jWTg%*95{-o$YlQBE;(9LS=&#yE5L~S!%fiVhYfkYJ7n2ha z$Jq)iIxe9hBEpxo7-^z{}QY34@eB}zr>vZ>p4t^s3OH_m`Japq|E>vWXiDR%RK~}{wWkrOQ>L!SBIqz?|o36Adi#*hyYc1W1XvC z&&)?v(FQ0}tW57krAr1Wp|ha)HI&$F`Ua$Xqd3q(9hEDv{aGg9Vz)z16cuuxOcEs+ND|S_RgZUJ~pA_ zOJ+FwH$u@y097+=IK0;missrA@EGyUEu*fZ$ijiuZI&`ePJGQeUL?L2GB)4Uo{@6I zS^3P@o+tqrREjVvt0L$cnsXh1$N~NyVLZ5YG&duNZn8aFr{PM=Q<4IJvt66PC0w#o ztr7LzrQQ_nht4e2pPp6KWBA5~NSl@m<~}N2h&B^m4QEfz(;QA@AS7iB1=zsbijVjL z`VV3wiAO=k8U)XZb(4B|fagLA%7w47PU;~UxD@B5TBqLN0mk6l?zk@zZ>R9|L2SK< z%ePtxvO-v;V(J<2lGL1`4-Tl(B?;8fL8lRP5ar`AKEN~-HFkCc?sZ(k0X!FZUJ+0D z=%1}uu8+RJ0{&S(xoyCICPF3A4+~L&#kWwZiA%8+pW|m)TPG_p#Z%v<;*{?=yb>!- z|D}}11_RCAd|x+xBM6F(=(?zk>zM24v-{RsxCkgdEy7r)S^CBRj^2f4(VOd=! z&#NES5&c?;TSvRZJLy!YuGN~U9ci;M3i-EXRfPSqy7f=RsT1?vchF}^eZ6-T?hSue zIvTy%H*OM1*El*vd~oc&yKTw7|JmE^DySZug=Jp9$5Tf9^lHGVM1<3iPiH5BA7o?g zkW~$lKcT#}xd+M!3**(q!W6cIu{gg{bLcP_j@~8QqQZ<*cE3o2>4?vnyT?I^i{s($ znj&3W3q-k?xY&mFB;1fLirC@=DF)+9Yaa@0JyuX2UFYHM=np)Li6nnUQNL)j{ddb9 zq!vw)?tcEFg%tIt|K5;7(Z|qiU)ObgMYbjUT*VGjnv3dnh7a-yYQx-g8OH6p*_@>A z@eb*lP&|$tJpr2CO}0zcvwC}w6Fmf#olbk=3z|`cKPq@&SLid^Y`AYq3G^eW1A-1D^+r#PpbS-vUNPbu|=_Zw?`G1%o zc3gHE;IU2k_#J%XQcoi0z0QbpbnXI=sH??kk8$5e2rA{_EyZgMFK#i?gr5=m4%Nps zDB2z9VQ(e&(hvVkz2eRbDdvTZ=1oN2Fab&PyV`Ra0QE}vgZ6;Vb0l#D%9g8!Etsc| zqdG`+4z2~0;@F&X+NybU<&XdKrlK~%&rot3xG9Ydqq4o(y{eI6)3|ws9-~XuUFn2C zYC`-<8}Y#uJemY9 z&(w$IqXU)PLrfFLw+>m`l)QWocNzn5@OmN(5$#kgETgq9^-D@@Q~0^L?=EzZ&Iq)w zPpS&t%ZQM;{*Ytno`OzQd-Y%ws`D4Cv^D?x4{vHTDUGmDqk6r0SQ^5?`9h?Zgr6zm zSx(C1R)NqMb>mScU0mKrcVI$2Rl4nhDC0=_r-tq57ILL!4AM|ucd@V3UNH|jH#@s3 zp_H9axsE4Py>`_st7D@*UaB{OHBIYB%$7SyO`s)_HX5{UE5gIIwzj_3hyX%(Dloxahm1I+*B0uXT=#&b4x>v-_eGego*VHykz_+>{7NWn{DJawV% zB$d2=e(XbZ2#5osJ^4A6@k@X)lQhXHZhy9--SOd7U|4+Tq#@xT>(7A%48I-qf9; zudyb1vr1>rzN1MX*dp=@V`1&Vn_p;RzUQYid$KWgYJL@!FTDoO_Nc|#>GtbP$y3ON z4tywAaJG|tz?_*#F`D`UKW0uCMu_-Tw&gQ4J;}Ez=Rp&o7g8XUne@zCsWN2G;eJHs zMx<$wgYQ~%0#X=rk6GLK-LK?3wpwT)w8~LNd^@E9L_#4Q!Q$|$lh9z6sQ@-`hteC5 z#sA2;+{d9C<0gi>gUg5myEY3;#fe`#l*btujU@uUpmZjzv81ThF950za(gM&$B3}u)`OaeD2kt@L4Ku*#+!Wjv??E;*(LvcH_ud1PcLV7l%a2m z7#t7C3Xe+zxjx&;dkQI`rYBy*6K4q=b~eAN3O#A6z1tTBMazJd(}}SA6g^W(Ar_;- z@hB{nn1GD`*MiS0VRS@mm$hFnMyq{|V466K8;Jv}-F0N4 zxUv#z@nbgENcxUh8EcG{+i`HkQ0=6npC3I63y>RSZhl?z(j3>`s<7&yhce0VR>2m8hfH(2ICR4vS^m zszv*g#bdS=CXYtlCHE!*@d|&XIw;$QLgkUr+9#|hBL5H}7(*TtolRn+C1<)rsx#oT zpphao{At9FGBc5^)jVn7Zd=3@k!RjZQ~W(<(3h?Hv?EkGP0jpxKAlW(ok?%uc2_6l z23Kbf552HoTf?Vm32|aML}6lC20tjhX;m&ybUX_2DT1VsnMrla7b?R)whTRG2^vtY zT2}ayq+Yur?zYwrv{J=a#3YLul(5WI;1KY$He@v*%R@1@;Xv=FWzY@ln`1ezu@ z4UO0DFvGDW=uoq7?KEAUaB{}+*`Q12$cKWe)=J6>T;oVOqhaMhR7BmzhD(y)!Ga`! zvXbwqpMPvv-gCzXAVeZ>t{XD+ba<(whr4LuNKfEMRI1eJ^jYY9BSmAA>P3J5{d+BD zp{wm7ICb?#q*+#3Lk=N-qPDP8(fK+o2K>>{rxH*mIJ5>jx1ZN0c@YX$?{PT&W=lEE z*KL+L?tieg&}l2S=@<|k%hdw%OS#CLI2fMppetKJq8f>raKQj!kp4smJZ4Pu(YxX{ z9{`Gx-7OY{Q3;PxUkeqKX@LX{JJbuS0ZuIgeI1=NxF)7|6kGE-WY4L!*aGLi9Yq2wW&q$+N2u}Og z-+0A^3CDtxEd_@PV%JiF)OG01LlR;V%oDN4$tC31Rv;h{e!OLyvu0-u6x?eCmeUt; z7=7SM=23tec=Xcvu5%-uL-Glm2(3Q8o)UUa1S)W#1|2LY+kdb+SjY+{1(cp?baXgI zM@eO$phj>d@QDNJ!0lRBHNLnsPL+qGrdwSAj@h|V?EW7v3+rGIk79=8qmQj1xBNcb z_$YDwVV3Vr4e%G|9x)8LWUPumzg4u|^aDF0d@~;_96DP@%J>M8Em?zGQ`La~%aNX! zp731*Lp6=zIvgNqg}7(jq9NDv(^cYBm%-wqPFM-#VQs}> zINp%?9+0^Do=A*&o<9!#5L)jr{#X0#mtmt-GA|phby@Xi0O5N$Ik4dG73IvsRxd3+ z=4oN0NJyEL%b_WRW6~^xtPUGyZh{(nsdKBvO)PkWdlIGSjmh;2ZItw%k2HdC^v`{^ zDtBT_N3xE4q|Ptr024m7m?DeoC(>>cV*W}^ydDH|M^~Oe9@S3~@fSgpBZ(Wl*zP;@ z7jMM}0RCkBOEuHy^5Ugs!r3PRusJaCXD>QF*Jn4jaqNN}EC>+<;U!N!7s=oSl_@-p zbEGj;N|7iWx=T#>nK&g1!#5Z~2-c`K6^m`4kY?T*+?ZLq*0;fJ|0VxZ=TFb&XHE4| zznr^PYmeTNpNd4KrUTb#eQH;JqQ-j_B5C=c=`l*uORHWC66V#eT-~{ANU|7IBas}? z$h+|I>CE>f)W&&1Cfk?$``3OwR84=bI+fnHRNxEe%>mRI$ce|nMno_dW+O^qoTw~8|vxm~+lGq>+{I$5#j(;fih9+qP$$y(g3 z=KbJ`H-az>nihkE?08rHl>h4dbg<7cCnc|vDDM5o^_MlG%JJMp_zW+V)nJH zjsfgQ;cV4wCjEs6_xg0l^cE_q!9C%LCqH2%&Yc;xD+Zb{1B%BSE4TILR(=1v~|&eHp5$}e+0dX+wT_?L+q1Bq@Hu&+hdaCpG!Ay{D7ix88mq@?Q8{sh-r?>M4`6m_fb4 zOaWCYmsC`fw=i%JKN-n{F)3ZzYmqv0BsG;MT0HRc0VWX}^E!5)DnpWEB0PY@3Q5*2 zZ#alu_84`o>nCJ#K-Ki^fBtckYy=&652?6;re|bY3FFP{ac`nfOP(RHb&O(tJf2uu z1(J!^0q&hU)t@pH(ga>e!XQ$Y*64U^Ci3ihSzCg^fh?STBr0B)bO1@ zm;WeQ6I?P)p`MVW^5_@3TRo&kH*@6#K%Mz~5ec<(L0#t}hze*8fa0}}J#KMM=w_u_ zQ$k0TAW=)%Gl@&Gf__2;Xgqd1}e7GtjEoIc3 zjU~JxpRDi_j$%(9CYZr!^IhFKlTICTp_Ykm1Y=<&h~0ts)U4k+C(A)spyZ;)jVIef z#lA$OjKY+c&I0kpC-yw%!da}(f!&a2uUZmQ{jGd|Q(-zDN*tw5In14%S2|&8?3xC; zLA6ISLY{!m8&OSAN#|K-{2X#B8>AgNn~aPy6fhC%t>4`TNS5Npmj`UR0Hih+@Fj#) zVGalgO1`k)iaPn7oE-X}P_X)};lSaBVkBGll+mPLa4_`U?sx7{cHcb4Bhdz%2~0Jj z57zWP9J>#CHxotICR+P%vs?LaachMD?u+ORLac z?_6VArrhvSMZag|txq*sK;`7BrUl2S4D4Eau>p~95XFhvv@!G>>tNa45t?4Pl-ZTH zUpw-WXzUOkr2i}iHti zm#RyZ2EBgA?-KBP;CS(QfF%b`C4PWTxU{Yi-^QGj{+X7{%?@BuS3RD5e0sI^kOlkr zM{oO&Z9%x9k`I7oayTdh~k^>ln|^Gsv741==M7&ff_ zGw1me$*xq4_qFcT+J)@ICmC4L==i5$P;;3tn`NhbkYX9T*ovR)S++3Fn(DtJb#Ldv zr}*L4^5BhM?MawRt4*xM4^JK@T~)mpo!;E}h#l-TUKKGLYd$kMSguNyek7RUv!R^i zHmN+{U&=LqeK_x-k=sHK0m9}=@th=S-}i~knWuTa*q`CW9-L`oTulF}ZSRc@KHK*C z^JjER((YG!$4B@kpNn>)y!qStds~#jC<{$ay{FqdZ8rP%B_~jE3a|io8o#U>HP?|y zBuM{lKrq&{)RN=cvjXE3I{(7O_%9p?P!~oLPd#zD@7=4-j`D3QKln%s zu=_yF=k&a2r-w)T;$vJn?4AWPsDL=6v+)uK+s|<>Z{4;^duySZGJY#?g1WzeLa7~{Wt}Z!ZkxtE9;rNe!fd5$0duZWMWkTa@Hz!B5ta83Om`aM z=ya3n7+W@@IlH2EK-=mYa?i$*UJg|g|9RHPzD!E|*GB=5aquv4Z;VBRe-SNHm9Q|J zt}|UYk0L)mN;)`Ke)gWGLtpz7S1LnGQ$y63-XRB5})U@ZXudC#_><9G)6p zv!>KOt`MCQEh@Tu+aE+WN6+H!2;)b!$Y>Fo;2^+Ah-4g2P`qPoE`i^yq!`qt|A@^M z0%G$}A;o$&Mt1a!rMZ%)%TNoG(F`95m_iY zljIwR$pJrIiqHr!Nt~L*503V)lApILo6bFZvcz)&@&V?peeXKqk|A#8^zHBvGz|#} zT}*LP+C0(}t`cTxZGz&?4C$Hd7MHaoA&lMi_wRGvrYQG(C%XR{r*zAA71M0*Lo$IQ$8qkS>~;{o z{K~Kh$nI4ys-dHuIcTg{;<@EuiO3_w-7BF-|`&X>51XfqOW>&wlGr##zhL1BV z>rS;Tl_2B3Z-9Xk18!oj86lLA>1?tUb zE58Pxl{d9ptqQ*>HI?5WSs&6qR4m=+*?qN{Pq1lA%U>}aP>2@&pj{Kww&F(~VB{?L zsC8mOB4^9Fl=YxqznW`wt5Qe6YHP8-ZGTiM7&BvbQ(sSeB_}FMWh&^*-8xV$GR>J5 ziM^}65!2!grcV#@&hM0D8Z$!;NXF}>d}zJt|OUQf}}e}&4RPT5j&m)f>a}x~ONsNz zd!JRl6xXD<_1R1Nn^$TLD7G3A&d<i<={nu(Ke!n0( zrZNtW-)=sze2@~1YqWVZ>zLAY-77X2)|)wXD4lijn;ac$_tDCv8~!`PHX+d@j3^%{ zVp+GxN9jE(NHB*f@`!2ZvVP zMybU(6OV)kU*7cZFN0K^nd*ymZvWXl14Mnk*;S3invk4wY4o#%L&a}G8&u}TaLnHJ zXv2}Fa%oc_p^EQrmaAN>&`REoKra5ug=x(0n|`vQ42~RXjhUcvYxnJz>UGA|Ip4fj zK%A#KIT)-34=qa{?EakD;4yz;XYO8?)Eu*Y#qZ!wTM<$H7h>e|yE&u;kW`?uC5M~) z)wE892RgyV=_{{|9Gt@j^3)CX=rn?^DXDU=Xw2XjpQ({%ia9v zr1-{Evzk6_+TF>d-3=Q&W-hH3;~jduLnEIjsk734Izou0^lnG{vvKfYgm{qaH(cf$ zDx9a198<#lpkRzhvMZbqun;;su5@Rosoi)~;BY@tNc6D7@t6|BO{vM?iUew?ZM2mV z0mv;*9GzaPJKoJGdCL*-ttwYXhAx(_U|Y^>I7Tj8`%(Y6sXB!W@baD7i<{n-yg#+J zrB1E9xBo3~rP$!36MNZVgNMUIui4=jc{-II;6=rMr>O2l=;J9!CV!vs1rEcSG@Wrv z+@+fr;-c34;>vA*59n5`y*<7DJ<-vu^Nj1r&BI}U(v}C;5)@>C6u*BSmLpFR*$gV9r}Z6DiFiRI`RVSu82}P|#LxIIDW>V98>7UMuuW zqn4pw*xN}C{Ntiu2S945XYpS7ty9~0r0Xvdg)R|?Vk7mDm?O*Mojj(q^IZOs<0M=Y zy~C+&mxo@C*H|*t)qA`%TaRZ#DR1A^F(wUXxKHzGVpaS@d3^u~SESl}?1-1bOZCMv zWOv15-t}frM%`d-ROU*3F7Wfy=A`HIYR@&xrb*{I=}51Up=;o~BpTOW@u(wjWhfag zJ(QTo#PeuNxh`3F+k1;deJtCK8-L}-ofjrzlnf5hIs(^pzuQA`<(R$t8T;bdb-%vxA zpw_1LI;x$KPx(q-r*q=lzdqCzDYXBByb1w9KB#}QuNwFOw`fEs4QlUA?{ZQW=}#Np z%_St4tih-xeCYqtoX%d~jgEONR4jLPx6uEXFBtC7dJR(}UI%k_H<)qgo7Vb~Lo3y_ z8SnLh>%ID4A5=@IGu+Hrl-fv62lbh~g(k01qxSv$Udr{)M(;v9NTo@Ks3>HQOrfF& z;EMR+)fKW$d~aq+ripy21}($8gk2vfvj1?A0eEFRMTW(9kE-YqM#Wb*n7{~&r~{0T z`GP|o*>|4EL#A;}UF`_)xLg+Vv|)A~DUM7?V4vNee|Myfd7h5ME##D%^e)fP{Ba_$ zmb}t8R)1uK7!8i|GZQ?t9s;a5$c#Oz7;q|M(A07@XJo`zFlv3S!FmAV1ChXk@QPJ3 zf9xik_i4bev$41}@r`G6SV|&0#Pz-}qa8WKM*rF~w;_ie;oBOagSdrNn>Kf_+9Nm~ zleuA~Z<>^yl=D_h6bW}7G+A;ME{SnE#P15Li8cT#H|eVSOq&LyPP27zbTqXS=Qp5p z1ze}GDv=0So}WeZ+0iL}3~v~?Uj=ejULrR-xYetXLWfl1yzyghJ5Ytr=y|vZN!T0Q zu6LX7X7Bddja9vF)gm)fIoacjlSvLZz1)wL?qN$LJi#R7^GbkUuxQ z;2y!@$`=Z`!)fiN;*S*<1iacDBN^g_f&szoR)bB`W{7JWK)fV^NpAWec`r?kh|H>e ziC;dVgMV1{RA0F`e*Pow1YKG;_{yg=*;-$Au36MkOm9e=>VjxYQ_z!(YHy}z4~Sxw z265uXOn@d67<$_n+1f&p#4MjIKv_W7{!vGS-O$&})TA)`ETdj*i^C3L%V6vi92V=+ zOCSB4nBOr`{NaeG%bPxa;^P+@R;Ya2OjKwmah5h1s_dQdvx@fkp0;8sHM| z4RL>-4wsJM=4=O^L{<9aRgq)CwOGX~jW>d}f#!b?h~@_SF6vkSVit7Y2;|lmX&xp> z3X0;}*OG&a_CGM5J9^$aZlD4JQOZ16*g-X*a(m^0Z0$*jQ4jX*C39;aoK?CXdv7h0 z92_#doMJ5-ky?w&SeBAwd(QIGE$o)Od>~VZ8DtfXL4Dl$>8}8;b5d1M@q+>_HwD7> zs4Fo{?>dB_t)T#{A&RPIr`p6r_a}~b6*yZ3x2;-cj?U1@k;Mb0kJz{(giyiN@(roP zuqBO{dr5nq}sl#j}+58i#Qe!baS1T-#GeiE@$hO2b6zLkR8FJVA}$WJyH-< zM^n4JLQjLITA5Jo5jET$E3}8+y>@)LILQVQkY_A5rdw?LOE`1e!DNhpm_vfexucyy zfw{CB^mOYc{9c_d*-NKV!h@=@oYQIAOLn3{qB8&b+QY_2h~~h6PC#b|kHqO4^_m8L zJNt8;v1lbdLOFlYADd+xpXnx|oXKI&E)po#!MS40=Vd{Xo|b-xgpwM^R= zWE(oIpwYN?_nwLue`>FQ!PuO7^Gx|v9*BvF?0)Nk7E8Jq^PGj*6j~33jr>{xp zx;2uo(AnpgoK9}#7yHdXPy3>&{>TOM7RWr-lAjJ5U!9vfCbevvVtP!t); ziV8X>+vE9su#79!(fe&C$isr<7~k9!c}Cd$A(+>F9=(IhG8edU??Wmkko|?+fo*$= z>}Lay0Sms=))Rp4HvxQn*6>8^t*6}cs;GZ#&@toGq18Aq7Z0!k^!~L&VF0sEtf#{t z4(sHaX^eOV{AgK!0t$Beh?mF_0eBB*RiVvC#P>J>3j}3n?semfFn7%0aKafx5obgX zh0W^7M{>>gXK?NOvN0`>*A$6TR8ms1l_fKuzRa2N{w?+HsH;$l?*T(yo6Vw6SHIu%J@(VTB{{3n`|V36+!V!B}znZoKEaK3ifZT5rG{uJ?os zU0D~SL_ly}K=-fX^ho4WHD?Uje#-MR*nwt{aHT(oG!SsmPXSR~FaWm8LL{$oVpNrAr z%zrfGPZ0EYjKB7j_(h{ZBpg8FGjhS#Ps^=1>woxboRN!eg1ibPIe-)p9h8m8DM{G` zV{(nhcGCjMT}=KcH1TFWmZ^vlX&a6q?P=0DZwa*5lsWdjU{y6`?OnuT?NvZet2;8b zlSvo4?#Rw5eskd@%y|P?$0I`jQb$qdMYT$x03QJk*EKQ(;r6GN|b0#1oR9od7P1>v%O+9y%*N zy73F{l}C$D_3!!(|2b2);#&5d;r8y+^$xLjc?<_zD}Q4A-?#fsYqQ`@m5}Nz@_4;l z1)>?Xsn0sWo^LBp&IF=b3T)}c0fq`FosXRIXU0P_{Pl5V!yN|Bycy>#STl{lm3R;M zkRub4qDBi~teFBy-udqIz$J#Xtr(XX=d+j%$(x1VyDOdD#Js)jNl7F$T;dg~tVGf~ z^FQ#Q&Mb&fR-J4V7}=RoXT>PO5KFK&{FrhdxP6&r8S?T9x;)s6E4Rlv$VC89plidu zeblGyG31SX_;fGb#X4MGD-k^?Q2y1xCh1vg79DsS;8gHX6dtNY22wnD|6s%r|JRAR zG(t+OlpN}vxN$L7V(N#ZJm`<+RSvwdtu*9IF|-1KJ@+qU*6!D7N6F!`RIAUR{IB6@ z2~wJnjqg~D>4R+beA%`M2!l`T;~5vCu3|M?L@$drKsgee?EWcHD|Ay6r0ZljiU%fO@P-k`Um38OEgZwQ8=$_tJaXDvO!N))X8CSr z&&+OC+}*Hq9z*pET(w_RYmt)`oVlLCHH`3nTYJ)5QPIKJFEg)=0HL}t1O$SSVEHvU zYi!K>GoOC=Gl!sSWgj(7{lu{j&UPEu*6Q^|Y9NzP$#%0cyC>7N>h{E7l%GVj0g%W+ zaJUR9*=PhvBexCkg(Jf`ZaxE7(VkqMvUUcC&&M8f^k#9M+O#f=%KWvlr(SC>dOiu9 zuLz}#z0x~Z8I0?@Eyjr5OeGp!3{-f1Mf}4O&M?qJ5If$zyP|37M~iO|@1aoi4iZHN zN)Z)l;WSNN$^+|~i)snanH+0K;D~XGViLUY?PYNDW5=1d3N1hJU*6=<(hi4W?T?2a z3MwY5H?{t_{{erX)~FABAL=}5zDG16y5*K%!&gV48)uHUcMIQFomz6Nz`^dX`lkb! zR`P65>V-zcGZhyn_L4sYwZxkGz%Bq5nmodW$X+L)?9a@#A9lU#d+6~;_~Bxo?)L<+ zU%k*2AA46+mf9*md@n#N$+zq4ru_hul1!6)_pWws0Z( z8DJw9DoXlzcjb>q{{wD^D}xu+ljg12Gih$@{^Rux(#Q-b_CA`puUWUP)9%$wzURBN zJ!R(*l>~Z^w6U}yFIx*aY@LK@8z;H>c)%>)I1KE^pUj>0`_kK_)ee`DKi?&U#~UI1 zdHT07N=uU4zOMxHop3R{X18LF5$=t+pbV$y)R07aq15;S(LRCRQCp@Kx%VZ*kG8*! znf}s;kQw|J0NRWWDu4^S?QlsJljI{vqD_=)$h(_tFSFka5`L9+i}9R-rAsiLw@AeV zRSxUzi@qmE32HAz!PJjA#j!+-cV|nHE2l0?9QWzkdzMETrMn%F81Vy4lB~qTuY*`Dh9d8_ODU^^l%;8rFKM{FLd?6dvz~ z_uVDBs-&!!zVi6f%P)&@Yb*To-OAz3%~1!xWsdqb>cMrH9PZRh1JpN@PxB=*KW!!m zlOzm~B{gq}1=I{Cms+!OGZuC*=66yc>e6W+;fj;e7#Q#Ds!AOL9#UU$z_4En#&6|`JsE-|)@MwsJR;|SjItH} zRxASgpSB&PgN*uJ^z@*={(_+0M{6)O^@}Bb@i;m0P z?{)dWqh5khUjo^w0*GnFF?Y<*6c(wJcV1bNEUyFk)(FT3OBh!C{K+Ws$qA@SE7+eu ze_o%OCqyQg?G>ESgf8Thwf;EUql{KTHvJSVMPf#LV>I{5r!A@AwCwEf5zBKDpZEFr z_z(lC06y{!36oP^I>uJI|8!>{G+;^TkgcfwJCOl=g9J!f<(PpA<-)YrO*~q|4;h-r=7mBrd!Eg;CtGoB+|0^T9SUw_~?x z{-$c76oAM&80HVO3P`mdZWhJ2mi)6h6Cy*&Hew$pE;_dwR}vxz5w`(*n&JlH-{VuL zAatU0U_E=TUTrfF`4jTfO$<{z0@Y*n&k`G_=}tI;fP(F0Ns|*PM=$)Z5k$czNH2r; zue~0;ObmlGg6Ebt3SN*O>0VeT?)Ns{qo3?l^D$zfDNO@63e9e=A1Fz-1te;lBIE zGvI3ZcS*c}R3*g|EHW4VcGnMtZSdH=fEvj&!Vk(4HP8Nc);_ x+akUW)|O`P1cgGKoVa%ms>A;fBG+|1REWB{4b9M!H2e!nSxH^7;Hue^{{uiA@?!u1 literal 70 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}1TpU9xZY8JuI3K{zz}&{z5M@%E Q4U}N;boFyt=akR{0J Date: Sat, 11 Oct 2025 20:58:56 +0100 Subject: [PATCH 08/12] docs: update PWA docs to reflect branded icons are now in place --- PWA_CHECKLIST.md | 8 ++++---- PWA_IMPLEMENTATION.md | 20 ++++++++++++-------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/PWA_CHECKLIST.md b/PWA_CHECKLIST.md index d49c629b..9e3564f5 100644 --- a/PWA_CHECKLIST.md +++ b/PWA_CHECKLIST.md @@ -2,10 +2,10 @@ ## Pre-Production -- [ ] **Replace placeholder icons** with branded designs - - Create 192x192px and 512x512px icons - - Create maskable variants with safe area padding - - Use [Maskable.app](https://maskable.app/) to test maskable icons +- [x] **Replace placeholder icons** with branded designs + - ✅ 192x192px and 512x512px icons from boris-favicon.zip + - ✅ Maskable variants (currently same as standard - can add padding if desired) + - Optional: Use [Maskable.app](https://maskable.app/) to test and refine maskable icons - [ ] **Test install flow** - [ ] Chrome/Edge on desktop diff --git a/PWA_IMPLEMENTATION.md b/PWA_IMPLEMENTATION.md index a4be1037..b272047f 100644 --- a/PWA_IMPLEMENTATION.md +++ b/PWA_IMPLEMENTATION.md @@ -57,17 +57,21 @@ Boris has been successfully upgraded to a full Progressive Web App (PWA)! - `src/components/Settings.tsx` - Added PWA settings section - `package.json` - Added PWA dependencies -## Icon Placeholders +## Icons -⚠️ **IMPORTANT**: Replace placeholder icons with proper branded designs! +✅ **Branded icons now in place!** -Current placeholders are minimal 1x1 pixel images. You need: -- `public/icon-192.png` - 192x192px app icon -- `public/icon-512.png` - 512x512px app icon -- `public/icon-maskable-192.png` - 192x192px with safe area padding -- `public/icon-maskable-512.png` - 512x512px with safe area padding +The following icons have been extracted from `boris-favicon.zip` and are ready: +- `public/icon-192.png` - 192x192px PWA icon (from android-chrome-192x192.png) +- `public/icon-512.png` - 512x512px PWA icon (from android-chrome-512x512.png) +- `public/icon-maskable-192.png` - 192x192px maskable variant +- `public/icon-maskable-512.png` - 512x512px maskable variant +- `public/favicon.ico` - Standard favicon +- `public/favicon-16x16.png` - 16x16 favicon +- `public/favicon-32x32.png` - 32x32 favicon +- `public/apple-touch-icon.png` - iOS home screen icon -**Maskable icons** should have ~20% padding on all sides to ensure they look good on all devices. +**Note**: The maskable icons currently use the same images as standard icons. If you want optimal maskable appearance with safe area padding, consider creating dedicated maskable variants with ~20% padding on all sides. ## Testing PWA Functionality From b71d188fd846a7c303bb227e5747f6a973de2be9 Mon Sep 17 00:00:00 2001 From: Gigi Date: Sat, 11 Oct 2025 21:01:27 +0100 Subject: [PATCH 09/12] chore: remove favicon zip file after extraction --- boris-favicon.zip | Bin 74941 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 boris-favicon.zip diff --git a/boris-favicon.zip b/boris-favicon.zip deleted file mode 100644 index 038a8c5b2d2f33aaff7c14c9c91f79d8f89d265a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74941 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

;oxlh9j+$OX5S( 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 Date: Sun, 12 Oct 2025 07:15:52 +0100 Subject: [PATCH 10/12] chore(lint): fix service worker typings and satisfy ESLint for worker globals --- src/sw.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/sw.ts b/src/sw.ts index 86a9021e..f9a04042 100644 --- a/src/sw.ts +++ b/src/sw.ts @@ -1,4 +1,6 @@ /// +/* eslint-env worker */ +/* global ServiceWorkerGlobalScope, ExtendableMessageEvent, FetchEvent */ import { clientsClaim } from 'workbox-core' import { precacheAndRoute, cleanupOutdatedCaches } from 'workbox-precaching' import { registerRoute, NavigationRoute } from 'workbox-routing' @@ -6,7 +8,8 @@ import { StaleWhileRevalidate } from 'workbox-strategies' import { ExpirationPlugin } from 'workbox-expiration' import { CacheableResponsePlugin } from 'workbox-cacheable-response' -declare let self: ServiceWorkerGlobalScope +// Narrow the global service worker scope for proper typings +const sw = self as unknown as ServiceWorkerGlobalScope // Precache all build assets (app shell) // @ts-ignore - __WB_MANIFEST is injected by vite-plugin-pwa @@ -16,7 +19,7 @@ precacheAndRoute(self.__WB_MANIFEST) cleanupOutdatedCaches() // Take control immediately -self.skipWaiting() +sw.skipWaiting() clientsClaim() console.log('[SW] Boris service worker loaded') @@ -27,7 +30,7 @@ registerRoute( ({ request, url }) => { const isImage = request.destination === 'image' || /\.(jpg|jpeg|png|gif|webp|svg)$/i.test(url.pathname) - return isImage && url.origin !== self.location.origin + return isImage && url.origin !== sw.location.origin }, new StaleWhileRevalidate({ cacheName: 'boris-images', @@ -49,7 +52,7 @@ registerRoute( ({ request, url }) => { const accept = request.headers.get('accept') || '' const isHTML = accept.includes('text/html') - const isCrossOrigin = url.origin !== self.location.origin + const isCrossOrigin = url.origin !== sw.location.origin // Exclude relay connections and local URLs const isNotRelay = !url.protocol.includes('ws') return isHTML && isCrossOrigin && isNotRelay @@ -90,14 +93,14 @@ const navigationRoute = new NavigationRoute( registerRoute(navigationRoute) // Listen for messages from the app -self.addEventListener('message', (event) => { +sw.addEventListener('message', (event: ExtendableMessageEvent) => { if (event.data && event.data.type === 'SKIP_WAITING') { - self.skipWaiting() + sw.skipWaiting() } }) // Log fetch errors for debugging (doesn't affect functionality) -self.addEventListener('fetch', (event) => { +sw.addEventListener('fetch', (event: FetchEvent) => { const url = new URL(event.request.url) // Don't interfere with WebSocket connections (relay traffic) From 20b4658bef6ad614cd1fa82e0ffe5de044b4cec6 Mon Sep 17 00:00:00 2001 From: Gigi Date: Sun, 12 Oct 2025 07:18:02 +0100 Subject: [PATCH 11/12] docs(pwa): update implementation summary to reflect final icons and next steps --- PWA_IMPLEMENTATION.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/PWA_IMPLEMENTATION.md b/PWA_IMPLEMENTATION.md index b272047f..6c3f5b4c 100644 --- a/PWA_IMPLEMENTATION.md +++ b/PWA_IMPLEMENTATION.md @@ -47,7 +47,14 @@ Boris has been successfully upgraded to a full Progressive Web App (PWA)! - `src/hooks/useOnlineStatus.ts` - Online status monitoring - `src/components/Settings/PWASettings.tsx` - Install UI - `public/manifest.webmanifest` - Web app manifest -- `public/icon-*.png` - PWA icons (placeholders) +- `public/icon-192.png` - PWA icon (192x192) +- `public/icon-512.png` - PWA icon (512x512) +- `public/icon-maskable-192.png` - Maskable PWA icon (192x192) +- `public/icon-maskable-512.png` - Maskable PWA icon (512x512) +- `public/favicon-16x16.png` - Favicon (16x16) +- `public/favicon-32x32.png` - Favicon (32x32) +- `public/favicon.ico` - Multi-size favicon +- `public/apple-touch-icon.png` - iOS home screen icon ### Modified Files - `vite.config.ts` - Added VitePWA plugin configuration @@ -100,7 +107,6 @@ Expected scores: - ✅ Installable - ✅ PWA Optimized - ✅ Works offline -- ⚠️ Icons (will pass after replacing placeholders) ## Build Output @@ -137,11 +143,10 @@ npm run build ## Next Steps -1. **Replace icon placeholders** with branded designs -2. **Test install flow** on mobile devices (iOS Safari, Android Chrome) -3. **Test offline experience** thoroughly -4. **Monitor service worker** updates in production -5. **Consider adding**: +1. **Test install flow** on mobile devices (iOS Safari, Android Chrome) +2. **Test offline experience** thoroughly +3. **Monitor service worker** updates in production +4. **Consider adding**: - Web Share Target (share to Boris from system share sheet) - Background Sync (queue writes when offline) - Badging API (unread counts on app icon) From fd374cd70521b79eb0cec96e50518daacff1941e Mon Sep 17 00:00:00 2001 From: Gigi Date: Sun, 12 Oct 2025 07:18:20 +0100 Subject: [PATCH 12/12] docs: remove temporary PWA launch checklist and implementation summary --- PWA_CHECKLIST.md | 95 ------------------------- PWA_IMPLEMENTATION.md | 161 ------------------------------------------ 2 files changed, 256 deletions(-) delete mode 100644 PWA_CHECKLIST.md delete mode 100644 PWA_IMPLEMENTATION.md diff --git a/PWA_CHECKLIST.md b/PWA_CHECKLIST.md deleted file mode 100644 index 9e3564f5..00000000 --- a/PWA_CHECKLIST.md +++ /dev/null @@ -1,95 +0,0 @@ -# PWA Launch Checklist - -## Pre-Production - -- [x] **Replace placeholder icons** with branded designs - - ✅ 192x192px and 512x512px icons from boris-favicon.zip - - ✅ Maskable variants (currently same as standard - can add padding if desired) - - Optional: Use [Maskable.app](https://maskable.app/) to test and refine maskable icons - -- [ ] **Test install flow** - - [ ] Chrome/Edge on desktop - - [ ] Chrome on Android - - [ ] Safari on iOS (limited PWA support) - -- [ ] **Test offline functionality** - - [ ] App shell loads when offline - - [ ] Cached images display - - [ ] Cached articles accessible - - [ ] Local relay still works - - [ ] Online/offline toast notifications work - -- [ ] **Run Lighthouse audit** - - [ ] PWA score >90 - - [ ] All installability criteria met - - [ ] No console errors - -- [ ] **Test service worker updates** - - [ ] Deploy new version - - [ ] Verify update notification appears - - [ ] Verify refresh loads new version - -## Production - -- [ ] **Verify manifest serving** - - Check `/manifest.webmanifest` is accessible - - Verify correct MIME type (`application/manifest+json`) - -- [ ] **Verify service worker serving** - - Check `/sw.js` is accessible - - Verify correct cache headers (short cache, must-revalidate) - -- [ ] **Verify icons serving** - - All icon sizes load correctly - - Proper MIME types for PNG files - -- [ ] **Test on real devices** - - [ ] iOS Safari (add to home screen) - - [ ] Android Chrome (install prompt) - - [ ] Desktop Chrome (install button) - - [ ] Desktop Edge (install button) - -## Post-Launch - -- [ ] Monitor service worker registration errors (analytics/logs) -- [ ] Monitor cache hit rates (optional) -- [ ] Gather user feedback on install experience -- [ ] Consider adding advanced PWA features: - - [ ] Web Share Target - - [ ] Background Sync - - [ ] Badging API - - [ ] Push Notifications - -## Known Limitations - -- **iOS Safari**: Limited PWA support, no install prompt (users must "Add to Home Screen" manually) -- **Firefox**: No install prompt, but PWA features work -- **Private/Incognito**: Service workers may be disabled -- **WebSocket**: Not affected by service worker (by design) - -## Troubleshooting - -### Service Worker Not Registering -1. Check browser console for errors -2. Verify `/sw.js` is accessible -3. Check HTTPS is enabled (required for SW) -4. Clear browser cache and reload - -### Install Prompt Not Showing -1. Verify manifest is valid (Chrome DevTools > Application > Manifest) -2. Check all installability criteria (Lighthouse PWA audit) -3. Try in Chrome/Edge (best PWA support) -4. Some browsers require user engagement before showing prompt - -### Offline Not Working -1. Check service worker is active (DevTools > Application > Service Workers) -2. Verify precache manifest was generated (check `dist/sw.js`) -3. Test after first visit (SW needs initial registration) -4. Check network tab shows "(from ServiceWorker)" for cached resources - -### Icons Not Showing -1. Verify icon files exist in `public/` directory -2. Check manifest references correct paths -3. Verify icon files are valid PNG format -4. Clear browser cache and reinstall app - diff --git a/PWA_IMPLEMENTATION.md b/PWA_IMPLEMENTATION.md deleted file mode 100644 index 6c3f5b4c..00000000 --- a/PWA_IMPLEMENTATION.md +++ /dev/null @@ -1,161 +0,0 @@ -# PWA Implementation Summary - -Boris has been successfully upgraded to a full Progressive Web App (PWA)! - -## What Was Implemented - -### 1. Web App Manifest -- **File**: `public/manifest.webmanifest` -- Includes app name, description, theme colors, and icon references -- Configured for standalone display mode -- Linked in `index.html` with theme-color meta tag - -### 2. Service Worker with Workbox -- **File**: `src/sw.ts` -- **Plugin**: `vite-plugin-pwa` with injectManifest strategy -- **Features**: - - Precaching of app shell (HTML, CSS, JS assets) - - Runtime caching for cross-origin images (30-day cache, max 300 entries) - - Runtime caching for cross-origin article HTML (14-day cache, max 100 entries) - - SPA navigation fallback for offline app loading - - Automatic cleanup of old caches - - **WebSocket traffic is NOT intercepted** - relay functionality preserved - -### 3. PWA Install Experience -- **Hook**: `src/hooks/usePWAInstall.ts` -- **Component**: `src/components/Settings/PWASettings.tsx` -- Captures `beforeinstallprompt` event -- Shows install button in Settings when app is installable -- Displays confirmation when app is already installed - -### 4. Online/Offline Status -- **Hook**: `src/hooks/useOnlineStatus.ts` -- Monitors `navigator.onLine` status -- Shows toast notification when going offline -- Integrated into main App component - -### 5. Service Worker Updates -- Checks for updates hourly -- Shows toast notification when new version is available -- User can refresh to get latest version - -## Files Created/Modified - -### New Files -- `src/sw.ts` - Workbox service worker -- `src/hooks/usePWAInstall.ts` - Install prompt hook -- `src/hooks/useOnlineStatus.ts` - Online status monitoring -- `src/components/Settings/PWASettings.tsx` - Install UI -- `public/manifest.webmanifest` - Web app manifest -- `public/icon-192.png` - PWA icon (192x192) -- `public/icon-512.png` - PWA icon (512x512) -- `public/icon-maskable-192.png` - Maskable PWA icon (192x192) -- `public/icon-maskable-512.png` - Maskable PWA icon (512x512) -- `public/favicon-16x16.png` - Favicon (16x16) -- `public/favicon-32x32.png` - Favicon (32x32) -- `public/favicon.ico` - Multi-size favicon -- `public/apple-touch-icon.png` - iOS home screen icon - -### Modified Files -- `vite.config.ts` - Added VitePWA plugin configuration -- `index.html` - Added manifest link and theme-color -- `src/main.tsx` - Enhanced SW registration -- `src/App.tsx` - Added online/offline monitoring -- `src/components/Settings.tsx` - Added PWA settings section -- `package.json` - Added PWA dependencies - -## Icons - -✅ **Branded icons now in place!** - -The following icons have been extracted from `boris-favicon.zip` and are ready: -- `public/icon-192.png` - 192x192px PWA icon (from android-chrome-192x192.png) -- `public/icon-512.png` - 512x512px PWA icon (from android-chrome-512x512.png) -- `public/icon-maskable-192.png` - 192x192px maskable variant -- `public/icon-maskable-512.png` - 512x512px maskable variant -- `public/favicon.ico` - Standard favicon -- `public/favicon-16x16.png` - 16x16 favicon -- `public/favicon-32x32.png` - 32x32 favicon -- `public/apple-touch-icon.png` - iOS home screen icon - -**Note**: The maskable icons currently use the same images as standard icons. If you want optimal maskable appearance with safe area padding, consider creating dedicated maskable variants with ~20% padding on all sides. - -## Testing PWA Functionality - -### Local Development -```bash -npm run build -npm run preview # or serve the dist/ folder -``` - -### What to Test -1. **Install prompt**: Visit in Chrome/Edge, check for install button in Settings -2. **Offline mode**: Disconnect network, verify app shell loads -3. **Cached images**: View articles with images, go offline, images still load -4. **Cached articles**: View external articles, go offline, articles still available -5. **Relay connectivity**: Verify local relay and WebSocket connections work -6. **Updates**: Deploy new version, verify update notification appears - -### Lighthouse PWA Audit -Run in Chrome DevTools: -1. Open DevTools (F12) -2. Go to Lighthouse tab -3. Select "Progressive Web App" category -4. Run audit - -Expected scores: -- ✅ Installable -- ✅ PWA Optimized -- ✅ Works offline - -## Build Output - -The build process now: -1. Compiles TypeScript and bundles assets -2. Generates Workbox service worker from `src/sw.ts` -3. Injects precache manifest with all app assets -4. Outputs `dist/sw.js` and `dist/manifest.webmanifest` - -Build command: -```bash -npm run build -``` - -## Deployment Notes - -### Vercel/Cloudflare/Netlify -- No special configuration needed -- `_headers`, `_redirects`, `_routes.json` already excluded from precache -- Service worker will be served at `/sw.js` -- Manifest will be served at `/manifest.webmanifest` - -### CDN Considerations -- Set proper cache headers for `sw.js` (short cache, must-revalidate) -- App assets can have long cache (they're versioned) -- Icons and manifest can have moderate cache (1 hour - 1 day) - -## Existing Functionality Preserved - -✅ **Local Relay**: WebSocket connections not intercepted by SW -✅ **Airplane Mode**: Existing offline sync functionality intact -✅ **Image Caching**: Behavior preserved, now using Workbox -✅ **Nostr Events**: All relay operations work as before - -## Next Steps - -1. **Test install flow** on mobile devices (iOS Safari, Android Chrome) -2. **Test offline experience** thoroughly -3. **Monitor service worker** updates in production -4. **Consider adding**: - - Web Share Target (share to Boris from system share sheet) - - Background Sync (queue writes when offline) - - Badging API (unread counts on app icon) - - Push notifications (optional, requires push service) - -## Resources - -- [PWA Documentation](https://web.dev/progressive-web-apps/) -- [vite-plugin-pwa Docs](https://vite-pwa-org.netlify.app/) -- [Workbox Documentation](https://developers.google.com/web/tools/workbox) -- [Maskable Icons](https://maskable.app/) -