From 2533f75f2ce81116b17b6e1c0c724db65d34edcf Mon Sep 17 00:00:00 2001 From: VIliam Date: Thu, 26 Mar 2026 15:27:31 +0100 Subject: [PATCH] Add backend, frontend, and project files Co-Authored-By: Claude Opus 4.6 --- .claude/settings.local.json | 15 + .gitignore | 8 + README.md | 90 + backend/test_app.py | 563 +++++ backend/view_db.py | 123 ++ frontend/.gitignore | 24 + frontend/README.md | 16 + frontend/eslint.config.js | 29 + frontend/index.html | 13 + frontend/package-lock.json | 3156 ++++++++++++++++++++++++++++ frontend/package.json | 29 + frontend/public/KEMT_logo.jpg | Bin 0 -> 61949 bytes frontend/public/vite.svg | 1 + frontend/src/App.css | 903 ++++++++ frontend/src/App.jsx | 21 + frontend/src/assets/react.svg | 1 + frontend/src/components/Layout.jsx | 60 + frontend/src/index.css | 10 + frontend/src/main.jsx | 10 + frontend/src/pages/About.jsx | 227 ++ frontend/src/pages/Home.jsx | 274 +++ frontend/vite.config.js | 15 + 22 files changed, 5588 insertions(+) create mode 100755 .claude/settings.local.json create mode 100755 .gitignore create mode 100755 backend/test_app.py create mode 100755 backend/view_db.py create mode 100755 frontend/.gitignore create mode 100755 frontend/README.md create mode 100755 frontend/eslint.config.js create mode 100755 frontend/index.html create mode 100755 frontend/package-lock.json create mode 100755 frontend/package.json create mode 100755 frontend/public/KEMT_logo.jpg create mode 100755 frontend/public/vite.svg create mode 100755 frontend/src/App.css create mode 100755 frontend/src/App.jsx create mode 100755 frontend/src/assets/react.svg create mode 100755 frontend/src/components/Layout.jsx create mode 100755 frontend/src/index.css create mode 100755 frontend/src/main.jsx create mode 100755 frontend/src/pages/About.jsx create mode 100755 frontend/src/pages/Home.jsx create mode 100755 frontend/vite.config.js diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100755 index 0000000..7a05817 --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,15 @@ +{ + "permissions": { + "allow": [ + "Bash(dir C:UsersviliaOneDrivePočítač*thesis*)", + "Bash(dir:*)", + "Bash(source venv/Scripts/activate)", + "Bash(python -m pytest test_app.py -v)", + "Bash(python -c \"import flask; import transformers; import torch; print\\(''Dependencies OK''\\)\")", + "Bash(curl -s http://localhost:5000/api/stats)", + "Bash(curl:*)", + "Bash(python -c \":*)", + "Bash(python view_db.py)" + ] + } +} diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..6c5346c --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +venv/ +.venv/ +__pycache__/ +*.pyc +.env +factchecker.db +node_modules/ +dist/ \ No newline at end of file diff --git a/README.md b/README.md index e69de29..9456eb5 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,90 @@ +# README.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +AI Fact Checker - a full-stack web application that verifies claims using Natural Language Inference (NLI) models. The system searches the web via SerpAPI, analyzes snippets against claims, and returns verdicts (True/False/Ambiguous) with evidence. + +## Tech Stack + +**Backend (Python/Flask):** +- Flask REST API with CORS +- ML: HuggingFace Transformers (RoBERTa, mDeBERTa-v3) +- Translation: deep_translator (Google Translate) +- Database: SQLite with caching layer +- Search: SerpAPI for Google search results + +**Frontend (React/Vite):** +- React 19 with Vite 7 +- React Router for navigation +- Axios for HTTP requests +- CSS custom properties for theming + +## Architecture + +``` +factchecker/ +├── backend/ +│ ├── app.py # Flask API, NLI logic, model switching +│ ├── database.py # SQLite cache, verified facts, stats +│ ├── .env # SERPAPI_API_KEY (required) +│ └── venv/ # Python virtual environment +├── frontend/ +│ ├── src/ +│ │ ├── App.jsx # Router setup +│ │ ├── main.jsx # React entry point +│ │ ├── components/ +│ │ │ └── Layout.jsx +│ │ └── pages/ +│ │ ├── Home.jsx # Main fact-check UI +│ │ └── About.jsx +│ └── package.json +└── factchecker.db # SQLite database (auto-created) +``` + +## Key Commands + +### Backend +```bash +cd backend +source venv/bin/activate # or: venv\Scripts\activate on Windows +python app.py # Start Flask on port 5000 +python clear_cache.py # Clear cache +python view_db.py # View database contents +``` + +### Frontend +```bash +cd frontend +npm install +npm run dev # Vite dev server +npm run build # Production build +npm run lint # ESLint +``` + +## API Endpoints + +- `POST /api/check` - Verify a claim (body: claim, language, dateFrom, dateTo, selectedSource, model) +- `GET /api/history` - Get check history (query: limit) +- `GET /api/stats` - Get database statistics +- `POST /api/admin/add-fact` - Add manually verified fact (admin) + +## Models + +Dva NLI modely dostupné s rôznymi компромismi: +1. **RoBERTa** (`ynie/roberta-large-snli_mnli_fever_anli_R1_R2_R3-nli`) - Rýchly, vyžaduje preklad do angličtiny +2. **mDeBERTa** (`MoritzLaurer/mDeBERTa-v3-base-xnli-multilingual-nli-2mil7`) - Najlepší pre slovenčinu, multilingválny + +## Database Schema + +- `fact_checks` - Cached results with claim hash, verdict, NLI votes, evidence, sources +- `verified_facts` - Manually verified facts (admin-added) + +## Important Notes + +- The `.env` file contains the SerpAPI key - do not commit +- Models are loaded on-demand; switching triggers reload with cache clearing +- Slovak claims are auto-translated for RoBERTa; mDeBERTa handles Slovak natively +- Domain whitelist/blacklist filters search results for quality +- Results are cached by claim hash to avoid redundant API calls diff --git a/backend/test_app.py b/backend/test_app.py new file mode 100755 index 0000000..7f83127 --- /dev/null +++ b/backend/test_app.py @@ -0,0 +1,563 @@ +""" +Testy pre AI Fact Checker aplikáciu +Spustenie: python -m pytest test_app.py -v +Alebo: python test_app.py +""" + +import pytest +import json +import os +import sys +from datetime import datetime, timedelta + +# Nastavíme prostredie pre testovanie +os.environ['TESTING'] = 'True' + +# Importujeme aplikáciu +from app import app, load_model, MODELS +from database import ( + get_db_connection, + get_cached_result, + save_to_cache, + get_history, + get_stats, + add_verified_fact, + hash_claim, + init_db +) + + +# ============================================================================= +# FIXTURES - Pomocné funkcie pre testy +# ============================================================================= + +@pytest.fixture +def client(): + """Vytvorí testovacieho klienta pre Flask aplikáciu""" + app.config['TESTING'] = True + with app.test_client() as client: + yield client + + +@pytest.fixture +def init_test_db(): + """Inicializuje čistú databázu pre testy""" + init_db() + yield + # Cleanup - vymažeme testovacie dáta + conn = get_db_connection() + cursor = conn.cursor() + cursor.execute("DELETE FROM fact_checks") + cursor.execute("DELETE FROM verified_facts") + conn.commit() + conn.close() + + +# ============================================================================= +# TESTY DATABÁZY +# ============================================================================= + +class TestDatabase: + """Testy pre databázové operácie""" + + def test_hash_claim_consistency(self): + """Test: Hash toho istého výroku je vždy rovnaký""" + claim = "Bratislava je hlavné mesto Slovenska" + hash1 = hash_claim(claim) + hash2 = hash_claim(claim) + assert hash1 == hash2, "Hash by mal byť konzistentný" + + def test_hash_claim_case_insensitive(self): + """Test: Hash je case-insensitive""" + claim1 = "Bratislava je hlavné mesto Slovenska" + claim2 = "bratislava je hlavné mesto slovenska" + hash1 = hash_claim(claim1) + hash2 = hash_claim(claim2) + assert hash1 == hash2, "Hash by mal byť case-insensitive" + + def test_hash_claim_different_claims(self): + """Test: Rôzne výroky majú rôzny hash""" + claim1 = "Bratislava je hlavné mesto Slovenska" + claim2 = "Košice sú druhé najväčšie mesto" + hash1 = hash_claim(claim1) + hash2 = hash_claim(claim2) + assert hash1 != hash2, "Rôzne výroky by mali mať rôzny hash" + + def test_save_and_get_cached_result(self, init_test_db): + """Test: Uloženie a získanie cachovaného výsledku""" + claim = "Testovací výrok pre cache" + result = { + "verdict": "✅ Pravda", + "confidence": 0.85, + "nli_votes": {"entailment": 3, "contradiction": 1}, + "evidence_for": ["Dôkaz 1"], + "evidence_against": [], + "sources": ["https://example.com"] + } + + # Uložíme do cache + saved = save_to_cache(claim, result, model_name="roberta") + assert saved == True, "Uloženie do cache zlyhalo" + + # Získame z cache + cached = get_cached_result(claim) + assert cached is not None, "Cache by nemala byť prázdna" + assert cached["verdict"] == "✅ Pravda" + assert cached["cached"] == True + assert cached["model_name"] == "roberta" + + def test_cache_miss(self, init_test_db): + """Test: Získanie neexistujúceho cachovaného výsledku""" + claim = "Tento výrok ešte nebol overený" + cached = get_cached_result(claim) + assert cached is None, "Cache by mala byť prázdna pre nový výrok" + + def test_get_history(self, init_test_db): + """Test: Získanie histórie overení""" + # Pridáme niekoľko záznamov + for i in range(5): + claim = f"Testovací výrok {i}" + result = { + "verdict": "✅ Pravda" if i % 2 == 0 else "❌ Nepravda", + "sources": [f"https://example{i}.com"] + } + save_to_cache(claim, result, model_name="roberta") + + history = get_history(limit=10) + assert len(history) == 5, "História by mala obsahovať 5 záznamov" + + def test_get_stats(self, init_test_db): + """Test: Získanie štatistík""" + # Pridáme testovacie dáta + for i in range(3): + claim = f"Štatistický výrok {i}" + result = {"verdict": "✅ Pravda", "sources": []} + save_to_cache(claim, result, model_name="roberta") + + # Pridáme manuálne overený fakt + add_verified_fact("Manuálne overený fakt", "TRUE", "Vysvetlenie") + + stats = get_stats() + assert stats["unique_claims"] == 3 + assert stats["verified_facts"] == 1 + assert stats["total_checks"] >= 3 + + def test_add_verified_fact_duplicate(self, init_test_db): + """Test: Pridanie duplicitného manuálne overeného faktu""" + claim = "Duplicitný fakt" + result1 = add_verified_fact(claim, "TRUE", "Prvé vysvetlenie") + result2 = add_verified_fact(claim, "FALSE", "Druhé vysvetlenie") + + assert result1 == True, "Prvý fakt by sa mal pridať" + assert result2 == False, "Duplicitný fakt by sa nemal pridať" + + +# ============================================================================= +# TESTY API ENDPOINTOV +# ============================================================================= + +class TestAPIEndpoints: + """Testy pre REST API endpointy""" + + def test_empty_claim_validation(self, client): + """Test: Validácia prázdneho výroku""" + response = client.post('/api/check', + data=json.dumps({"claim": ""}), + content_type='application/json') + assert response.status_code == 400 + data = json.loads(response.data) + assert "error" in data + + def test_whitespace_only_claim(self, client): + """Test: Validácia výroku s iba medzerami""" + response = client.post('/api/check', + data=json.dumps({"claim": " "}), + content_type='application/json') + assert response.status_code == 400 + + def test_missing_claim_field(self, client): + """Test: Chýbajúce pole claim""" + response = client.post('/api/check', + data=json.dumps({"language": "sk"}), + content_type='application/json') + assert response.status_code == 400 + + def test_history_endpoint_empty(self, client, init_test_db): + """Test: História keď je prázdna""" + response = client.get('/api/history') + assert response.status_code == 200 + data = json.loads(response.data) + assert "history" in data + assert "count" in data + assert data["count"] == 0 + + def test_history_endpoint_with_data(self, client, init_test_db): + """Test: História s dátami""" + # Pridáme dáta cez cache + for i in range(3): + claim = f"História test {i}" + result = {"verdict": "✅ Pravda", "sources": []} + save_to_cache(claim, result, model_name="roberta") + + response = client.get('/api/history?limit=10') + assert response.status_code == 200 + data = json.loads(response.data) + assert data["count"] == 3 + + def test_stats_endpoint(self, client): + """Test: Štatistiky endpoint""" + response = client.get('/api/stats') + assert response.status_code == 200 + data = json.loads(response.data) + assert "unique_claims" in data + assert "total_checks" in data + assert "verified_facts" in data + + def test_admin_add_fact_success(self, client, init_test_db): + """Test: Pridanie manuálne overeného faktu (admin)""" + response = client.post('/api/admin/add-fact', + data=json.dumps({ + "claim": "Manuálne pridaný fakt", + "verdict": "TRUE", + "explanation": "Toto je vysvetlenie", + "source_url": "https://overenie.sk" + }), + content_type='application/json') + assert response.status_code == 200 + data = json.loads(response.data) + assert "message" in data + assert data["message"] == "Overený fakt pridaný" + + def test_admin_add_fact_missing_fields(self, client): + """Test: Chýbajúce povinné polia pre admin endpoint""" + response = client.post('/api/admin/add-fact', + data=json.dumps({ + "claim": "Neúplný fakt" + # Chýba verdict + }), + content_type='application/json') + assert response.status_code == 400 + + def test_admin_add_fact_duplicate(self, client, init_test_db): + """Test: Pridanie duplicitného faktu""" + # Prvýkrát úspech + response1 = client.post('/api/admin/add-fact', + data=json.dumps({ + "claim": "Duplicitný admin fakt", + "verdict": "TRUE" + }), + content_type='application/json') + assert response1.status_code == 200 + + # Druhýkrát chyba (duplicate) + response2 = client.post('/api/admin/add-fact', + data=json.dumps({ + "claim": "Duplicitný admin fakt", + "verdict": "FALSE" + }), + content_type='application/json') + assert response2.status_code == 409 + + +# ============================================================================= +# TESTY VALIDÁCIE VSTUPU +# ============================================================================= + +class TestInputValidation: + """Testy pre validáciu vstupov a filtre""" + + def test_forbidden_word_politician(self, client): + """Test: Zakázané slová - politici""" + response = client.post('/api/check', + data=json.dumps({ + "claim": "Fico je politik" + }), + content_type='application/json') + assert response.status_code == 400 + data = json.loads(response.data) + assert "forbidden_words" in data + + def test_forbidden_word_vulgar(self, client): + """Test: Zakázané slová - vulgárnosti""" + response = client.post('/api/check', + data=json.dumps({ + "claim": "Toto je kokotina" + }), + content_type='application/json') + assert response.status_code == 400 + + def test_forbidden_word_covid(self, client): + """Test: Zakázané slová - citlivé témy""" + response = client.post('/api/check', + data=json.dumps({ + "claim": "Vakcína spôsobuje neplodnosť" + }), + content_type='application/json') + assert response.status_code == 400 + + def test_forbidden_word_english(self, client): + """Test: Zakázané slová - anglické výrazy""" + response = client.post('/api/check', + data=json.dumps({ + "claim": "This is bullshit" + }), + content_type='application/json') + assert response.status_code == 400 + + def test_clean_claim_passes(self, client): + """Test: Čistý výrok prejde""" + # Tento test vyžaduje funkčný SerpAPI kľúč + # Ak nie je nastavený, vráti 500 + if not os.getenv('SERPAPI_API_KEY'): + pytest.skip("SERPAPI_API_KEY nie je nastavený") + + response = client.post('/api/check', + data=json.dumps({ + "claim": "Bratislava je hlavné mesto Slovenska" + }), + content_type='application/json') + # Môže byť 200 (úspech) alebo 429 (limit API) + assert response.status_code in [200, 429] + + +# ============================================================================= +# TESTY MODELOV +# ============================================================================= + +class TestModels: + """Testy pre AI modely""" + + def test_model_config_exists(self): + """Test: Konfigurácia modelov existuje""" + assert "roberta" in MODELS + assert "mdeberta" in MODELS + + def test_roberta_config(self): + """Test: RoBERTa konfigurácia""" + config = MODELS["roberta"] + assert config["needs_translation"] == True + assert "roberta" in config["name"].lower() + + def test_mdeberta_config(self): + """Test: mDeBERTa konfigurácia""" + config = MODELS["mdeberta"] + assert config["needs_translation"] == False + assert "mdeberta" in config["name"].lower() or "DeBERTa" in config["name"] + + def test_model_loading(self): + """Test: Načítanie modelu""" + # Testujeme že funkcia load_model existuje a nespôsobí chybu + try: + load_model("roberta") + assert True + except Exception as e: + pytest.fail(f"Načítanie modelu zlyhalo: {e}") + + +# ============================================================================= +# TESTY CACHE LOGIKY +# ============================================================================= + +class TestCacheLogic: + """Testy pre cachovaciu logiku""" + + def test_cache_increments_count(self, init_test_db): + """Test: Cache inkrementuje počet overení""" + claim = "Inkrementácia test" + result = {"verdict": "✅ Pravda", "sources": []} + + # Prvé uloženie + save_to_cache(claim, result, model_name="roberta") + cached1 = get_cached_result(claim) + count1 = cached1["check_count"] + + # Druhé získanie (inkrementuje) + cached2 = get_cached_result(claim) + count2 = cached2["check_count"] + + assert count2 == count1 + 1, "Počet overení by sa mal inkrementovať" + + def test_cache_updates_timestamp(self, init_test_db): + """Test: Cache aktualizuje časovú pečiatku""" + claim = "Timestamp test" + result = {"verdict": "✅ Pravda", "sources": []} + + save_to_cache(claim, result, model_name="roberta") + cached1 = get_cached_result(claim) + timestamp1 = cached1["checked_at"] + + import time + time.sleep(1) # Počkáme sekundu + + cached2 = get_cached_result(claim) + timestamp2 = cached2["checked_at"] + + # Timestamp by mal byť novší + assert timestamp2 >= timestamp1 + + def test_cache_serialization(self, init_test_db): + """Test: Serializácia JSON polí v cache""" + claim = "JSON serializácia test" + result = { + "verdict": "✅ Pravda", + "nli_votes": {"entailment": 0.8, "contradiction": 0.2}, + "evidence_for": [{"text": "Dôkaz 1", "confidence": 0.9}], + "evidence_against": [], + "sources": [{"url": "https://example.com", "label": "entailment"}] + } + + save_to_cache(claim, result, model_name="mdeberta") + cached = get_cached_result(claim) + + assert isinstance(cached["nli_votes"], dict) + assert isinstance(cached["evidence_for"], list) + assert isinstance(cached["evidence_against"], list) + + +# ============================================================================= +# INTEGRÁCNE TESTY +# ============================================================================= + +class TestIntegration: + """Integračné testy celého systému""" + + def test_full_request_cycle(self, client, init_test_db): + """Test: Celý cyklus požiadavky (bez SerpAPI)""" + # Testujeme validáciu a štruktúru odpovede + # Bez SerpAPI kľúča očakávame chybu 500 + + response = client.post('/api/check', + data=json.dumps({ + "claim": "Testovací výrok", + "language": "sk", + "model": "roberta" + }), + content_type='application/json') + + # Bez SerpAPI: 500, so SerpAPI: 200 alebo 429 + if os.getenv('SERPAPI_API_KEY'): + assert response.status_code in [200, 429] + else: + assert response.status_code == 500 + + def test_model_switching(self, client): + """Test: Prepínanie medzi modelmi""" + # Overíme že endpoint akceptuje parameter model + response = client.post('/api/check', + data=json.dumps({ + "claim": "", # Prázdne pre rýchly test + "model": "mdeberta" + }), + content_type='application/json') + + # Očakávame 400 (validation error) nie 500 (model error) + assert response.status_code == 400 + + def test_verified_fact_overrides_cache(self, client, init_test_db): + """Test: Manuálne overený fakt má prioritu pred cache""" + claim = "Prioritný fakt" + + # Najprv pridáme manuálne overený fakt + add_verified_fact(claim, "TRUE", "Oficiálne overené", "https://overenie.sk") + + # Potom pridáme do cache iný výsledok + cache_result = { + "verdict": "❌ Nepravda", + "sources": ["https://ine-zdroj.sk"] + } + save_to_cache(claim, cache_result, model_name="roberta") + + # Získanie by malo vrátiť manuálne overený fakt + cached = get_cached_result(claim) + assert cached is not None + assert cached["verified"] == True + assert "Overené" in cached["verdict"] + + +# ============================================================================= +# HRANIČNÉ PRÍPADY +# ============================================================================= + +class TestEdgeCases: + """Testy hraničných prípadov""" + + def test_very_long_claim(self, client): + """Test: Veľmi dlhý výrok""" + long_claim = "A" * 10000 # 10k znakov + response = client.post('/api/check', + data=json.dumps({"claim": long_claim}), + content_type='application/json') + # Aplikácia by mala zvládnuť dlhý vstup (vráti "nedostatok zdrojov" alebo spracuje) + assert response.status_code == 200 # Očakávame úspešné spracovanie + data = json.loads(response.data) + assert "verdict" in data # Mala by vrátiť verdikt + + def test_unicode_claim(self, client): + """Test: Výrok s Unicode znakmi""" + unicode_claim = "🌍 je guľatá 🌍" + response = client.post('/api/check', + data=json.dumps({"claim": unicode_claim}), + content_type='application/json') + # Aplikácia by mala správne spracovať Unicode (emoji, diakritika) + assert response.status_code == 200 + data = json.loads(response.data) + assert "verdict" in data # Mala by vrátiť verdikt + + def test_sql_injection_attempt(self, client): + """Test: Pokus o SQL injection""" + malicious_claim = "'; DROP TABLE fact_checks; --" + response = client.post('/api/check', + data=json.dumps({"claim": malicious_claim}), + content_type='application/json') + # Aplikácia by mala bezpečne spracovať vstup (parametrované dotazy) + assert response.status_code == 200 # Nemalo by to zhodiť server + # Overíme že databáza stále existuje + from database import get_stats + stats = get_stats() # Ak toto prejde, SQL injection zlyhal + assert stats is not None + + def test_special_characters_claim(self, client): + """Test: Výrok so špeciálnymi znakmi""" + special_claim = "Cena je 100€ (zľava 50%!) " + response = client.post('/api/check', + data=json.dumps({"claim": special_claim}), + content_type='application/json') + assert response.status_code in [400, 500, 429] + + def test_empty_json_body(self, client): + """Test: Prázdne JSON telo""" + response = client.post('/api/check', + data=json.dumps({}), + content_type='application/json') + assert response.status_code == 400 + + def test_invalid_json(self, client): + """Test: Neplatné JSON""" + response = client.post('/api/check', + data="nie je json", + content_type='application/json') + assert response.status_code == 400 + + def test_history_limit_zero(self, client, init_test_db): + """Test: História s limitom 0""" + # Pridáme dáta + save_to_cache("Test", {"verdict": "✅", "sources": []}, "roberta") + + response = client.get('/api/history?limit=0') + data = json.loads(response.data) + assert data["count"] == 0 + assert len(data["history"]) == 0 + + def test_history_large_limit(self, client, init_test_db): + """Test: História s veľkým limitom""" + response = client.get('/api/history?limit=999999') + assert response.status_code == 200 + + +# ============================================================================= +# SPUSTENIE TESTOV +# ============================================================================= + +if __name__ == '__main__': + # Spustenie priamym zavolaním: python test_app.py + pytest.main([__file__, '-v', '--tb=short']) diff --git a/backend/view_db.py b/backend/view_db.py new file mode 100755 index 0000000..8ca789c --- /dev/null +++ b/backend/view_db.py @@ -0,0 +1,123 @@ +""" +Jednoduchý skript na prezeranie databázy factchecker.db +""" +import sqlite3 +import json +from datetime import datetime + +DB_NAME = "factchecker.db" + +def print_separator(): + print("=" * 80) + +def view_fact_checks(): + """Zobrazí všetky fact-checky""" + conn = sqlite3.connect(DB_NAME) + conn.row_factory = sqlite3.Row + cursor = conn.cursor() + + cursor.execute('SELECT * FROM fact_checks ORDER BY checked_at DESC') + rows = cursor.fetchall() + + print_separator() + print(f"📊 FACT CHECKS (celkom: {len(rows)})") + print_separator() + + for row in rows: + print(f"\n🔍 ID: {row['id']}") + print(f" Tvrdenie: {row['claim']}") + print(f" Verdikt: {row['verdict']}") + + # Zobraziť model (ak existuje stĺpec model_name) + try: + model = row['model_name'] + if model: + print(f" Model: {model}") + else: + print(f" Model: neznámy (starý záznam)") + except IndexError: + pass # Stĺpec neexistuje v starej databáze + + print(f" Počet kontrol: {row['check_count']}") + print(f" Posledná kontrola: {row['checked_at']}") + + if row['nli_votes']: + votes = json.loads(row['nli_votes']) + print(f" NLI hlasy: {votes}") + + if row['sources']: + sources = json.loads(row['sources']) + if sources: + print(f" Zdroje: {sources[0] if sources else 'žiadne'}") + + print() + + conn.close() + +def view_verified_facts(): + """Zobrazí manuálne overené fakty""" + conn = sqlite3.connect(DB_NAME) + conn.row_factory = sqlite3.Row + cursor = conn.cursor() + + cursor.execute('SELECT * FROM verified_facts ORDER BY added_at DESC') + rows = cursor.fetchall() + + print_separator() + print(f"✅ OVERENÉ FAKTY (celkom: {len(rows)})") + print_separator() + + if not rows: + print("\n⚠️ Žiadne manuálne overené fakty\n") + else: + for row in rows: + print(f"\n✓ ID: {row['id']}") + print(f" Tvrdenie: {row['claim']}") + print(f" Verdikt: {row['verdict']}") + if row['explanation']: + print(f" Vysvetlenie: {row['explanation']}") + if row['source_url']: + print(f" Zdroj: {row['source_url']}") + print(f" Pridané: {row['added_at']} ({row['added_by']})") + print() + + conn.close() + +def view_stats(): + """Zobrazí štatistiky""" + conn = sqlite3.connect(DB_NAME) + cursor = conn.cursor() + + cursor.execute('SELECT COUNT(*) as total FROM fact_checks') + total_claims = cursor.fetchone()[0] + + cursor.execute('SELECT SUM(check_count) as total FROM fact_checks') + total_checks = cursor.fetchone()[0] or 0 + + cursor.execute('SELECT COUNT(*) as total FROM verified_facts') + verified = cursor.fetchone()[0] + + print_separator() + print("📈 ŠTATISTIKY") + print_separator() + print(f" Unikátne tvrdenia: {total_claims}") + print(f" Celkový počet kontrol: {total_checks}") + print(f" Overené fakty: {verified}") + print_separator() + print() + + conn.close() + +def main(): + print("\n" + "🔎 DATABÁZA FACT-CHECKERA".center(80)) + + try: + view_stats() + view_fact_checks() + view_verified_facts() + except sqlite3.OperationalError as e: + print(f"❌ Chyba: {e}") + print(" Skontroluj či existuje factchecker.db") + +if __name__ == "__main__": + main() diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100755 index 0000000..a547bf3 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/frontend/README.md b/frontend/README.md new file mode 100755 index 0000000..18bc70e --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,16 @@ +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js new file mode 100755 index 0000000..cee1e2c --- /dev/null +++ b/frontend/eslint.config.js @@ -0,0 +1,29 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{js,jsx}'], + extends: [ + js.configs.recommended, + reactHooks.configs['recommended-latest'], + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + rules: { + 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }], + }, + }, +]) diff --git a/frontend/index.html b/frontend/index.html new file mode 100755 index 0000000..c20fbd3 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,13 @@ + + + + + + + frontend + + +
+ + + diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100755 index 0000000..29e5cc0 --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,3156 @@ +{ + "name": "frontend", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "frontend", + "version": "0.0.0", + "dependencies": { + "axios": "^1.13.2", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-router-dom": "^6.30.3" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@types/react": "^19.2.2", + "@types/react-dom": "^19.2.2", + "@vitejs/plugin-react": "^5.1.0", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "vite": "^7.2.2" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "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-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@remix-run/router": { + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.2.tgz", + "integrity": "sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.43", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.43.tgz", + "integrity": "sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz", + "integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz", + "integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz", + "integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz", + "integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz", + "integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz", + "integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz", + "integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz", + "integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz", + "integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz", + "integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz", + "integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz", + "integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz", + "integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz", + "integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz", + "integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz", + "integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz", + "integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz", + "integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz", + "integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz", + "integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz", + "integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz", + "integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.3.tgz", + "integrity": "sha512-k5dJVszUiNr1DSe8Cs+knKR6IrqhqdhpUwzqhkS8ecQTSf3THNtbfIp/umqHMpX2bv+9dkx3fwDv/86LcSfvSg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.2.tgz", + "integrity": "sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.0.tgz", + "integrity": "sha512-4LuWrg7EKWgQaMJfnN+wcmbAW+VSsCmqGohftWjuct47bv8uE4n/nPpq4XjJPsxgq00GGG5J8dvBczp8uxScew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.4", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.43", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.26", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.26.tgz", + "integrity": "sha512-73lC1ugzwoaWCLJ1LvOgrR5xsMLTqSKIEoMHVtL9E/HNk0PXtTM76ZIm84856/SF7Nv8mPZxKoBsgpm0tR1u1Q==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001754", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", + "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "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==", + "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/electron-to-chromium": { + "version": "1.5.250", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.250.tgz", + "integrity": "sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==", + "dev": true, + "license": "ISC" + }, + "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==", + "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==", + "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==", + "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==", + "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/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.24.tgz", + "integrity": "sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "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/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "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-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "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==", + "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", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "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==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.0" + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.30.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.3.tgz", + "integrity": "sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.30.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.3.tgz", + "integrity": "sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.2", + "react-router": "6.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz", + "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.53.2", + "@rollup/rollup-android-arm64": "4.53.2", + "@rollup/rollup-darwin-arm64": "4.53.2", + "@rollup/rollup-darwin-x64": "4.53.2", + "@rollup/rollup-freebsd-arm64": "4.53.2", + "@rollup/rollup-freebsd-x64": "4.53.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.2", + "@rollup/rollup-linux-arm-musleabihf": "4.53.2", + "@rollup/rollup-linux-arm64-gnu": "4.53.2", + "@rollup/rollup-linux-arm64-musl": "4.53.2", + "@rollup/rollup-linux-loong64-gnu": "4.53.2", + "@rollup/rollup-linux-ppc64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-musl": "4.53.2", + "@rollup/rollup-linux-s390x-gnu": "4.53.2", + "@rollup/rollup-linux-x64-gnu": "4.53.2", + "@rollup/rollup-linux-x64-musl": "4.53.2", + "@rollup/rollup-openharmony-arm64": "4.53.2", + "@rollup/rollup-win32-arm64-msvc": "4.53.2", + "@rollup/rollup-win32-ia32-msvc": "4.53.2", + "@rollup/rollup-win32-x64-gnu": "4.53.2", + "@rollup/rollup-win32-x64-msvc": "4.53.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "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", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", + "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100755 index 0000000..36979c5 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,29 @@ +{ + "name": "frontend", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "axios": "^1.13.2", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-router-dom": "^6.30.3" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@types/react": "^19.2.2", + "@types/react-dom": "^19.2.2", + "@vitejs/plugin-react": "^5.1.0", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "vite": "^7.2.2" + } +} diff --git a/frontend/public/KEMT_logo.jpg b/frontend/public/KEMT_logo.jpg new file mode 100755 index 0000000000000000000000000000000000000000..5c90277409a412644299eb08de8ea7690a20b82f GIT binary patch literal 61949 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