mwalker22 commited on
Commit
d9e502e
·
unverified ·
2 Parent(s): 6a0d7d6 cae2f3a

Merge pull request #2 from mwalker-tmd/feature/frontend-template

Browse files
.gitignore CHANGED
@@ -177,3 +177,29 @@ cython_debug/
177
 
178
  # VS Code
179
  .vscode/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
 
178
  # VS Code
179
  .vscode/
180
+
181
+ # Added by the Vite Server installer:
182
+ # Logs
183
+ logs
184
+ *.log
185
+ npm-debug.log*
186
+ yarn-debug.log*
187
+ yarn-error.log*
188
+ pnpm-debug.log*
189
+ lerna-debug.log*
190
+
191
+ node_modules
192
+ dist
193
+ dist-ssr
194
+ *.local
195
+
196
+ # Editor directories and files
197
+ .vscode/*
198
+ !.vscode/extensions.json
199
+ .idea
200
+ .DS_Store
201
+ *.suo
202
+ *.ntvs*
203
+ *.njsproj
204
+ *.sln
205
+ *.sw?
backend/api/agent.py CHANGED
@@ -1,4 +1,4 @@
1
- from fastapi import APIRouter
2
  from backend.agents.agent_loader import load_agent
3
 
4
  router = APIRouter()
@@ -6,7 +6,7 @@ router = APIRouter()
6
  agent = load_agent()
7
 
8
  @router.post("/agent", tags=["Agent"])
9
- async def run_agent(query: str):
10
  """
11
  Executes the agent with the given query input.
12
 
@@ -18,7 +18,15 @@ async def run_agent(query: str):
18
  Returns
19
  -------
20
  dict
21
- The agent's response.
 
 
 
 
22
  """
23
  result = await agent.ainvoke({"input": query})
24
- return {"response": result}
 
 
 
 
 
1
+ from fastapi import APIRouter, Form
2
  from backend.agents.agent_loader import load_agent
3
 
4
  router = APIRouter()
 
6
  agent = load_agent()
7
 
8
  @router.post("/agent", tags=["Agent"])
9
+ async def run_agent(query: str = Form(...)):
10
  """
11
  Executes the agent with the given query input.
12
 
 
18
  Returns
19
  -------
20
  dict
21
+ The final string response from the agent.
22
+ Example:
23
+ {
24
+ "response": "You said: Hello world"
25
+ }
26
  """
27
  result = await agent.ainvoke({"input": query})
28
+
29
+ # Extract the useful part
30
+ output = result.get("output") if isinstance(result, dict) else result
31
+
32
+ return {"response": output}
backend/api/query.py CHANGED
@@ -13,12 +13,12 @@ llm = ChatOpenAI(model_name="gpt-4o-mini") # Using LangChain's ChatOpenAI
13
  vector_store = VectorStore()
14
  prompt_manager = PromptManager()
15
 
16
- @router.post("/query")
17
  async def query(question: str = Form(...)):
18
  if not vector_store.is_initialized:
19
  return JSONResponse(
20
  status_code=400,
21
- content={"error": "No file uploaded yet."}
22
  )
23
 
24
  context_list = vector_store.search(question)
@@ -27,6 +27,11 @@ async def query(question: str = Form(...)):
27
 
28
  async def response_stream():
29
  async for chunk in llm.astream(messages):
30
- yield chunk
 
 
 
 
 
31
 
32
  return StreamingResponse(response_stream(), media_type="text/plain")
 
13
  vector_store = VectorStore()
14
  prompt_manager = PromptManager()
15
 
16
+ @router.post("/ask")
17
  async def query(question: str = Form(...)):
18
  if not vector_store.is_initialized:
19
  return JSONResponse(
20
  status_code=400,
21
+ content={"error": "No file uploaded yet. Please upload a file before asking questions."}
22
  )
23
 
24
  context_list = vector_store.search(question)
 
27
 
28
  async def response_stream():
29
  async for chunk in llm.astream(messages):
30
+ # Extract the text content from the AIMessageChunk
31
+ if hasattr(chunk, 'content'):
32
+ yield chunk.content
33
+ else:
34
+ # Fallback if the chunk doesn't have a content attribute
35
+ yield str(chunk)
36
 
37
  return StreamingResponse(response_stream(), media_type="text/plain")
backend/core/vector_store.py CHANGED
@@ -2,9 +2,20 @@ from backend.core.vectordatabase import VectorDatabase
2
  from backend.core.text_utils import PDFLoader, TextFileLoader, CharacterTextSplitter
3
 
4
  class VectorStore:
 
 
 
 
 
 
 
 
 
5
  def __init__(self):
6
- self.vector_db = None
7
- self.splitter = CharacterTextSplitter()
 
 
8
 
9
  async def process_file(self, file_path: str, is_pdf: bool) -> int:
10
  """Process a file and store its chunks in the vector database"""
@@ -20,7 +31,26 @@ class VectorStore:
20
  """Search the vector database for relevant context"""
21
  if self.vector_db is None:
22
  return []
23
- return self.vector_db.search_by_text(query, k=k)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
  @property
26
  def is_initialized(self) -> bool:
 
2
  from backend.core.text_utils import PDFLoader, TextFileLoader, CharacterTextSplitter
3
 
4
  class VectorStore:
5
+ _instance = None
6
+
7
+ def __new__(cls):
8
+ if cls._instance is None:
9
+ cls._instance = super(VectorStore, cls).__new__(cls)
10
+ cls._instance.vector_db = None
11
+ cls._instance.splitter = CharacterTextSplitter()
12
+ return cls._instance
13
+
14
  def __init__(self):
15
+ # This will only run once due to the singleton pattern
16
+ if not hasattr(self, 'vector_db'):
17
+ self.vector_db = None
18
+ self.splitter = CharacterTextSplitter()
19
 
20
  async def process_file(self, file_path: str, is_pdf: bool) -> int:
21
  """Process a file and store its chunks in the vector database"""
 
31
  """Search the vector database for relevant context"""
32
  if self.vector_db is None:
33
  return []
34
+
35
+ try:
36
+ # Get search results from the vector database
37
+ results = self.vector_db.search_by_text(query, k=k)
38
+
39
+ # Ensure we're returning a list of tuples with (text, score)
40
+ processed_results = []
41
+ for result in results:
42
+ if isinstance(result, tuple) and len(result) == 2:
43
+ # If it's already a tuple with (document, score)
44
+ doc, score = result
45
+ processed_results.append((str(doc.page_content), score))
46
+ else:
47
+ # If it's just a document or something else
48
+ processed_results.append((str(result), 1.0))
49
+
50
+ return processed_results
51
+ except Exception as e:
52
+ print(f"Error in vector store search: {e}")
53
+ return []
54
 
55
  @property
56
  def is_initialized(self) -> bool:
frontend/.env.template ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ # API Configuration
2
+ # Development: Typically http://localhost:7860
3
+ # Production: Your production API URL
4
+ VITE_API_URL=http://localhost:7860
frontend/eslint.config.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import js from '@eslint/js'
2
+ import globals from 'globals'
3
+ import reactHooks from 'eslint-plugin-react-hooks'
4
+ import reactRefresh from 'eslint-plugin-react-refresh'
5
+
6
+ export default [
7
+ { ignores: ['dist'] },
8
+ {
9
+ files: ['**/*.{js,jsx}'],
10
+ languageOptions: {
11
+ ecmaVersion: 2020,
12
+ globals: globals.browser,
13
+ parserOptions: {
14
+ ecmaVersion: 'latest',
15
+ ecmaFeatures: { jsx: true },
16
+ sourceType: 'module',
17
+ },
18
+ },
19
+ plugins: {
20
+ 'react-hooks': reactHooks,
21
+ 'react-refresh': reactRefresh,
22
+ },
23
+ rules: {
24
+ ...js.configs.recommended.rules,
25
+ ...reactHooks.configs.recommended.rules,
26
+ 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }],
27
+ 'react-refresh/only-export-components': [
28
+ 'warn',
29
+ { allowConstantExport: true },
30
+ ],
31
+ },
32
+ },
33
+ ]
frontend/index.html ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>TMD - Pythonic RAG Chat</title>
7
+ </head>
8
+ <body>
9
+ <div id="root"></div>
10
+ <script type="module" src="/src/main.jsx"></script>
11
+ </body>
12
+ </html>
frontend/package-lock.json ADDED
@@ -0,0 +1,2781 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "frontend",
3
+ "version": "0.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "frontend",
9
+ "version": "0.0.0",
10
+ "dependencies": {
11
+ "react": "^19.0.0",
12
+ "react-dom": "^19.0.0"
13
+ },
14
+ "devDependencies": {
15
+ "@eslint/js": "^9.22.0",
16
+ "@types/react": "^19.0.10",
17
+ "@types/react-dom": "^19.0.4",
18
+ "@vitejs/plugin-react": "^4.3.4",
19
+ "eslint": "^9.22.0",
20
+ "eslint-plugin-react-hooks": "^5.2.0",
21
+ "eslint-plugin-react-refresh": "^0.4.19",
22
+ "globals": "^16.0.0",
23
+ "vite": "^6.3.1"
24
+ }
25
+ },
26
+ "node_modules/@ampproject/remapping": {
27
+ "version": "2.3.0",
28
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
29
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
30
+ "dev": true,
31
+ "license": "Apache-2.0",
32
+ "dependencies": {
33
+ "@jridgewell/gen-mapping": "^0.3.5",
34
+ "@jridgewell/trace-mapping": "^0.3.24"
35
+ },
36
+ "engines": {
37
+ "node": ">=6.0.0"
38
+ }
39
+ },
40
+ "node_modules/@babel/code-frame": {
41
+ "version": "7.26.2",
42
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
43
+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
44
+ "dev": true,
45
+ "license": "MIT",
46
+ "dependencies": {
47
+ "@babel/helper-validator-identifier": "^7.25.9",
48
+ "js-tokens": "^4.0.0",
49
+ "picocolors": "^1.0.0"
50
+ },
51
+ "engines": {
52
+ "node": ">=6.9.0"
53
+ }
54
+ },
55
+ "node_modules/@babel/compat-data": {
56
+ "version": "7.26.8",
57
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
58
+ "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
59
+ "dev": true,
60
+ "license": "MIT",
61
+ "engines": {
62
+ "node": ">=6.9.0"
63
+ }
64
+ },
65
+ "node_modules/@babel/core": {
66
+ "version": "7.26.10",
67
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
68
+ "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
69
+ "dev": true,
70
+ "license": "MIT",
71
+ "dependencies": {
72
+ "@ampproject/remapping": "^2.2.0",
73
+ "@babel/code-frame": "^7.26.2",
74
+ "@babel/generator": "^7.26.10",
75
+ "@babel/helper-compilation-targets": "^7.26.5",
76
+ "@babel/helper-module-transforms": "^7.26.0",
77
+ "@babel/helpers": "^7.26.10",
78
+ "@babel/parser": "^7.26.10",
79
+ "@babel/template": "^7.26.9",
80
+ "@babel/traverse": "^7.26.10",
81
+ "@babel/types": "^7.26.10",
82
+ "convert-source-map": "^2.0.0",
83
+ "debug": "^4.1.0",
84
+ "gensync": "^1.0.0-beta.2",
85
+ "json5": "^2.2.3",
86
+ "semver": "^6.3.1"
87
+ },
88
+ "engines": {
89
+ "node": ">=6.9.0"
90
+ },
91
+ "funding": {
92
+ "type": "opencollective",
93
+ "url": "https://opencollective.com/babel"
94
+ }
95
+ },
96
+ "node_modules/@babel/generator": {
97
+ "version": "7.27.0",
98
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
99
+ "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
100
+ "dev": true,
101
+ "license": "MIT",
102
+ "dependencies": {
103
+ "@babel/parser": "^7.27.0",
104
+ "@babel/types": "^7.27.0",
105
+ "@jridgewell/gen-mapping": "^0.3.5",
106
+ "@jridgewell/trace-mapping": "^0.3.25",
107
+ "jsesc": "^3.0.2"
108
+ },
109
+ "engines": {
110
+ "node": ">=6.9.0"
111
+ }
112
+ },
113
+ "node_modules/@babel/helper-compilation-targets": {
114
+ "version": "7.27.0",
115
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz",
116
+ "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==",
117
+ "dev": true,
118
+ "license": "MIT",
119
+ "dependencies": {
120
+ "@babel/compat-data": "^7.26.8",
121
+ "@babel/helper-validator-option": "^7.25.9",
122
+ "browserslist": "^4.24.0",
123
+ "lru-cache": "^5.1.1",
124
+ "semver": "^6.3.1"
125
+ },
126
+ "engines": {
127
+ "node": ">=6.9.0"
128
+ }
129
+ },
130
+ "node_modules/@babel/helper-module-imports": {
131
+ "version": "7.25.9",
132
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
133
+ "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
134
+ "dev": true,
135
+ "license": "MIT",
136
+ "dependencies": {
137
+ "@babel/traverse": "^7.25.9",
138
+ "@babel/types": "^7.25.9"
139
+ },
140
+ "engines": {
141
+ "node": ">=6.9.0"
142
+ }
143
+ },
144
+ "node_modules/@babel/helper-module-transforms": {
145
+ "version": "7.26.0",
146
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
147
+ "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
148
+ "dev": true,
149
+ "license": "MIT",
150
+ "dependencies": {
151
+ "@babel/helper-module-imports": "^7.25.9",
152
+ "@babel/helper-validator-identifier": "^7.25.9",
153
+ "@babel/traverse": "^7.25.9"
154
+ },
155
+ "engines": {
156
+ "node": ">=6.9.0"
157
+ },
158
+ "peerDependencies": {
159
+ "@babel/core": "^7.0.0"
160
+ }
161
+ },
162
+ "node_modules/@babel/helper-plugin-utils": {
163
+ "version": "7.26.5",
164
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
165
+ "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
166
+ "dev": true,
167
+ "license": "MIT",
168
+ "engines": {
169
+ "node": ">=6.9.0"
170
+ }
171
+ },
172
+ "node_modules/@babel/helper-string-parser": {
173
+ "version": "7.25.9",
174
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
175
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
176
+ "dev": true,
177
+ "license": "MIT",
178
+ "engines": {
179
+ "node": ">=6.9.0"
180
+ }
181
+ },
182
+ "node_modules/@babel/helper-validator-identifier": {
183
+ "version": "7.25.9",
184
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
185
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
186
+ "dev": true,
187
+ "license": "MIT",
188
+ "engines": {
189
+ "node": ">=6.9.0"
190
+ }
191
+ },
192
+ "node_modules/@babel/helper-validator-option": {
193
+ "version": "7.25.9",
194
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
195
+ "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
196
+ "dev": true,
197
+ "license": "MIT",
198
+ "engines": {
199
+ "node": ">=6.9.0"
200
+ }
201
+ },
202
+ "node_modules/@babel/helpers": {
203
+ "version": "7.27.0",
204
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz",
205
+ "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
206
+ "dev": true,
207
+ "license": "MIT",
208
+ "dependencies": {
209
+ "@babel/template": "^7.27.0",
210
+ "@babel/types": "^7.27.0"
211
+ },
212
+ "engines": {
213
+ "node": ">=6.9.0"
214
+ }
215
+ },
216
+ "node_modules/@babel/parser": {
217
+ "version": "7.27.0",
218
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
219
+ "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
220
+ "dev": true,
221
+ "license": "MIT",
222
+ "dependencies": {
223
+ "@babel/types": "^7.27.0"
224
+ },
225
+ "bin": {
226
+ "parser": "bin/babel-parser.js"
227
+ },
228
+ "engines": {
229
+ "node": ">=6.0.0"
230
+ }
231
+ },
232
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
233
+ "version": "7.25.9",
234
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz",
235
+ "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==",
236
+ "dev": true,
237
+ "license": "MIT",
238
+ "dependencies": {
239
+ "@babel/helper-plugin-utils": "^7.25.9"
240
+ },
241
+ "engines": {
242
+ "node": ">=6.9.0"
243
+ },
244
+ "peerDependencies": {
245
+ "@babel/core": "^7.0.0-0"
246
+ }
247
+ },
248
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
249
+ "version": "7.25.9",
250
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz",
251
+ "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==",
252
+ "dev": true,
253
+ "license": "MIT",
254
+ "dependencies": {
255
+ "@babel/helper-plugin-utils": "^7.25.9"
256
+ },
257
+ "engines": {
258
+ "node": ">=6.9.0"
259
+ },
260
+ "peerDependencies": {
261
+ "@babel/core": "^7.0.0-0"
262
+ }
263
+ },
264
+ "node_modules/@babel/template": {
265
+ "version": "7.27.0",
266
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
267
+ "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
268
+ "dev": true,
269
+ "license": "MIT",
270
+ "dependencies": {
271
+ "@babel/code-frame": "^7.26.2",
272
+ "@babel/parser": "^7.27.0",
273
+ "@babel/types": "^7.27.0"
274
+ },
275
+ "engines": {
276
+ "node": ">=6.9.0"
277
+ }
278
+ },
279
+ "node_modules/@babel/traverse": {
280
+ "version": "7.27.0",
281
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
282
+ "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
283
+ "dev": true,
284
+ "license": "MIT",
285
+ "dependencies": {
286
+ "@babel/code-frame": "^7.26.2",
287
+ "@babel/generator": "^7.27.0",
288
+ "@babel/parser": "^7.27.0",
289
+ "@babel/template": "^7.27.0",
290
+ "@babel/types": "^7.27.0",
291
+ "debug": "^4.3.1",
292
+ "globals": "^11.1.0"
293
+ },
294
+ "engines": {
295
+ "node": ">=6.9.0"
296
+ }
297
+ },
298
+ "node_modules/@babel/traverse/node_modules/globals": {
299
+ "version": "11.12.0",
300
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
301
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
302
+ "dev": true,
303
+ "license": "MIT",
304
+ "engines": {
305
+ "node": ">=4"
306
+ }
307
+ },
308
+ "node_modules/@babel/types": {
309
+ "version": "7.27.0",
310
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
311
+ "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
312
+ "dev": true,
313
+ "license": "MIT",
314
+ "dependencies": {
315
+ "@babel/helper-string-parser": "^7.25.9",
316
+ "@babel/helper-validator-identifier": "^7.25.9"
317
+ },
318
+ "engines": {
319
+ "node": ">=6.9.0"
320
+ }
321
+ },
322
+ "node_modules/@esbuild/aix-ppc64": {
323
+ "version": "0.25.2",
324
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
325
+ "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
326
+ "cpu": [
327
+ "ppc64"
328
+ ],
329
+ "dev": true,
330
+ "license": "MIT",
331
+ "optional": true,
332
+ "os": [
333
+ "aix"
334
+ ],
335
+ "engines": {
336
+ "node": ">=18"
337
+ }
338
+ },
339
+ "node_modules/@esbuild/android-arm": {
340
+ "version": "0.25.2",
341
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
342
+ "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
343
+ "cpu": [
344
+ "arm"
345
+ ],
346
+ "dev": true,
347
+ "license": "MIT",
348
+ "optional": true,
349
+ "os": [
350
+ "android"
351
+ ],
352
+ "engines": {
353
+ "node": ">=18"
354
+ }
355
+ },
356
+ "node_modules/@esbuild/android-arm64": {
357
+ "version": "0.25.2",
358
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
359
+ "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
360
+ "cpu": [
361
+ "arm64"
362
+ ],
363
+ "dev": true,
364
+ "license": "MIT",
365
+ "optional": true,
366
+ "os": [
367
+ "android"
368
+ ],
369
+ "engines": {
370
+ "node": ">=18"
371
+ }
372
+ },
373
+ "node_modules/@esbuild/android-x64": {
374
+ "version": "0.25.2",
375
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
376
+ "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
377
+ "cpu": [
378
+ "x64"
379
+ ],
380
+ "dev": true,
381
+ "license": "MIT",
382
+ "optional": true,
383
+ "os": [
384
+ "android"
385
+ ],
386
+ "engines": {
387
+ "node": ">=18"
388
+ }
389
+ },
390
+ "node_modules/@esbuild/darwin-arm64": {
391
+ "version": "0.25.2",
392
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
393
+ "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
394
+ "cpu": [
395
+ "arm64"
396
+ ],
397
+ "dev": true,
398
+ "license": "MIT",
399
+ "optional": true,
400
+ "os": [
401
+ "darwin"
402
+ ],
403
+ "engines": {
404
+ "node": ">=18"
405
+ }
406
+ },
407
+ "node_modules/@esbuild/darwin-x64": {
408
+ "version": "0.25.2",
409
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
410
+ "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
411
+ "cpu": [
412
+ "x64"
413
+ ],
414
+ "dev": true,
415
+ "license": "MIT",
416
+ "optional": true,
417
+ "os": [
418
+ "darwin"
419
+ ],
420
+ "engines": {
421
+ "node": ">=18"
422
+ }
423
+ },
424
+ "node_modules/@esbuild/freebsd-arm64": {
425
+ "version": "0.25.2",
426
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
427
+ "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
428
+ "cpu": [
429
+ "arm64"
430
+ ],
431
+ "dev": true,
432
+ "license": "MIT",
433
+ "optional": true,
434
+ "os": [
435
+ "freebsd"
436
+ ],
437
+ "engines": {
438
+ "node": ">=18"
439
+ }
440
+ },
441
+ "node_modules/@esbuild/freebsd-x64": {
442
+ "version": "0.25.2",
443
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
444
+ "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
445
+ "cpu": [
446
+ "x64"
447
+ ],
448
+ "dev": true,
449
+ "license": "MIT",
450
+ "optional": true,
451
+ "os": [
452
+ "freebsd"
453
+ ],
454
+ "engines": {
455
+ "node": ">=18"
456
+ }
457
+ },
458
+ "node_modules/@esbuild/linux-arm": {
459
+ "version": "0.25.2",
460
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
461
+ "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
462
+ "cpu": [
463
+ "arm"
464
+ ],
465
+ "dev": true,
466
+ "license": "MIT",
467
+ "optional": true,
468
+ "os": [
469
+ "linux"
470
+ ],
471
+ "engines": {
472
+ "node": ">=18"
473
+ }
474
+ },
475
+ "node_modules/@esbuild/linux-arm64": {
476
+ "version": "0.25.2",
477
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
478
+ "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
479
+ "cpu": [
480
+ "arm64"
481
+ ],
482
+ "dev": true,
483
+ "license": "MIT",
484
+ "optional": true,
485
+ "os": [
486
+ "linux"
487
+ ],
488
+ "engines": {
489
+ "node": ">=18"
490
+ }
491
+ },
492
+ "node_modules/@esbuild/linux-ia32": {
493
+ "version": "0.25.2",
494
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
495
+ "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
496
+ "cpu": [
497
+ "ia32"
498
+ ],
499
+ "dev": true,
500
+ "license": "MIT",
501
+ "optional": true,
502
+ "os": [
503
+ "linux"
504
+ ],
505
+ "engines": {
506
+ "node": ">=18"
507
+ }
508
+ },
509
+ "node_modules/@esbuild/linux-loong64": {
510
+ "version": "0.25.2",
511
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
512
+ "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
513
+ "cpu": [
514
+ "loong64"
515
+ ],
516
+ "dev": true,
517
+ "license": "MIT",
518
+ "optional": true,
519
+ "os": [
520
+ "linux"
521
+ ],
522
+ "engines": {
523
+ "node": ">=18"
524
+ }
525
+ },
526
+ "node_modules/@esbuild/linux-mips64el": {
527
+ "version": "0.25.2",
528
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
529
+ "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
530
+ "cpu": [
531
+ "mips64el"
532
+ ],
533
+ "dev": true,
534
+ "license": "MIT",
535
+ "optional": true,
536
+ "os": [
537
+ "linux"
538
+ ],
539
+ "engines": {
540
+ "node": ">=18"
541
+ }
542
+ },
543
+ "node_modules/@esbuild/linux-ppc64": {
544
+ "version": "0.25.2",
545
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
546
+ "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
547
+ "cpu": [
548
+ "ppc64"
549
+ ],
550
+ "dev": true,
551
+ "license": "MIT",
552
+ "optional": true,
553
+ "os": [
554
+ "linux"
555
+ ],
556
+ "engines": {
557
+ "node": ">=18"
558
+ }
559
+ },
560
+ "node_modules/@esbuild/linux-riscv64": {
561
+ "version": "0.25.2",
562
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
563
+ "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
564
+ "cpu": [
565
+ "riscv64"
566
+ ],
567
+ "dev": true,
568
+ "license": "MIT",
569
+ "optional": true,
570
+ "os": [
571
+ "linux"
572
+ ],
573
+ "engines": {
574
+ "node": ">=18"
575
+ }
576
+ },
577
+ "node_modules/@esbuild/linux-s390x": {
578
+ "version": "0.25.2",
579
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
580
+ "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
581
+ "cpu": [
582
+ "s390x"
583
+ ],
584
+ "dev": true,
585
+ "license": "MIT",
586
+ "optional": true,
587
+ "os": [
588
+ "linux"
589
+ ],
590
+ "engines": {
591
+ "node": ">=18"
592
+ }
593
+ },
594
+ "node_modules/@esbuild/linux-x64": {
595
+ "version": "0.25.2",
596
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
597
+ "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
598
+ "cpu": [
599
+ "x64"
600
+ ],
601
+ "dev": true,
602
+ "license": "MIT",
603
+ "optional": true,
604
+ "os": [
605
+ "linux"
606
+ ],
607
+ "engines": {
608
+ "node": ">=18"
609
+ }
610
+ },
611
+ "node_modules/@esbuild/netbsd-arm64": {
612
+ "version": "0.25.2",
613
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
614
+ "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
615
+ "cpu": [
616
+ "arm64"
617
+ ],
618
+ "dev": true,
619
+ "license": "MIT",
620
+ "optional": true,
621
+ "os": [
622
+ "netbsd"
623
+ ],
624
+ "engines": {
625
+ "node": ">=18"
626
+ }
627
+ },
628
+ "node_modules/@esbuild/netbsd-x64": {
629
+ "version": "0.25.2",
630
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
631
+ "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
632
+ "cpu": [
633
+ "x64"
634
+ ],
635
+ "dev": true,
636
+ "license": "MIT",
637
+ "optional": true,
638
+ "os": [
639
+ "netbsd"
640
+ ],
641
+ "engines": {
642
+ "node": ">=18"
643
+ }
644
+ },
645
+ "node_modules/@esbuild/openbsd-arm64": {
646
+ "version": "0.25.2",
647
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
648
+ "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
649
+ "cpu": [
650
+ "arm64"
651
+ ],
652
+ "dev": true,
653
+ "license": "MIT",
654
+ "optional": true,
655
+ "os": [
656
+ "openbsd"
657
+ ],
658
+ "engines": {
659
+ "node": ">=18"
660
+ }
661
+ },
662
+ "node_modules/@esbuild/openbsd-x64": {
663
+ "version": "0.25.2",
664
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
665
+ "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
666
+ "cpu": [
667
+ "x64"
668
+ ],
669
+ "dev": true,
670
+ "license": "MIT",
671
+ "optional": true,
672
+ "os": [
673
+ "openbsd"
674
+ ],
675
+ "engines": {
676
+ "node": ">=18"
677
+ }
678
+ },
679
+ "node_modules/@esbuild/sunos-x64": {
680
+ "version": "0.25.2",
681
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
682
+ "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
683
+ "cpu": [
684
+ "x64"
685
+ ],
686
+ "dev": true,
687
+ "license": "MIT",
688
+ "optional": true,
689
+ "os": [
690
+ "sunos"
691
+ ],
692
+ "engines": {
693
+ "node": ">=18"
694
+ }
695
+ },
696
+ "node_modules/@esbuild/win32-arm64": {
697
+ "version": "0.25.2",
698
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
699
+ "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
700
+ "cpu": [
701
+ "arm64"
702
+ ],
703
+ "dev": true,
704
+ "license": "MIT",
705
+ "optional": true,
706
+ "os": [
707
+ "win32"
708
+ ],
709
+ "engines": {
710
+ "node": ">=18"
711
+ }
712
+ },
713
+ "node_modules/@esbuild/win32-ia32": {
714
+ "version": "0.25.2",
715
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
716
+ "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
717
+ "cpu": [
718
+ "ia32"
719
+ ],
720
+ "dev": true,
721
+ "license": "MIT",
722
+ "optional": true,
723
+ "os": [
724
+ "win32"
725
+ ],
726
+ "engines": {
727
+ "node": ">=18"
728
+ }
729
+ },
730
+ "node_modules/@esbuild/win32-x64": {
731
+ "version": "0.25.2",
732
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
733
+ "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
734
+ "cpu": [
735
+ "x64"
736
+ ],
737
+ "dev": true,
738
+ "license": "MIT",
739
+ "optional": true,
740
+ "os": [
741
+ "win32"
742
+ ],
743
+ "engines": {
744
+ "node": ">=18"
745
+ }
746
+ },
747
+ "node_modules/@eslint-community/eslint-utils": {
748
+ "version": "4.6.1",
749
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz",
750
+ "integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==",
751
+ "dev": true,
752
+ "license": "MIT",
753
+ "dependencies": {
754
+ "eslint-visitor-keys": "^3.4.3"
755
+ },
756
+ "engines": {
757
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
758
+ },
759
+ "funding": {
760
+ "url": "https://opencollective.com/eslint"
761
+ },
762
+ "peerDependencies": {
763
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
764
+ }
765
+ },
766
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
767
+ "version": "3.4.3",
768
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
769
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
770
+ "dev": true,
771
+ "license": "Apache-2.0",
772
+ "engines": {
773
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
774
+ },
775
+ "funding": {
776
+ "url": "https://opencollective.com/eslint"
777
+ }
778
+ },
779
+ "node_modules/@eslint-community/regexpp": {
780
+ "version": "4.12.1",
781
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
782
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
783
+ "dev": true,
784
+ "license": "MIT",
785
+ "engines": {
786
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
787
+ }
788
+ },
789
+ "node_modules/@eslint/config-array": {
790
+ "version": "0.20.0",
791
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
792
+ "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
793
+ "dev": true,
794
+ "license": "Apache-2.0",
795
+ "dependencies": {
796
+ "@eslint/object-schema": "^2.1.6",
797
+ "debug": "^4.3.1",
798
+ "minimatch": "^3.1.2"
799
+ },
800
+ "engines": {
801
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
802
+ }
803
+ },
804
+ "node_modules/@eslint/config-helpers": {
805
+ "version": "0.2.1",
806
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz",
807
+ "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==",
808
+ "dev": true,
809
+ "license": "Apache-2.0",
810
+ "engines": {
811
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
812
+ }
813
+ },
814
+ "node_modules/@eslint/core": {
815
+ "version": "0.13.0",
816
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
817
+ "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
818
+ "dev": true,
819
+ "license": "Apache-2.0",
820
+ "dependencies": {
821
+ "@types/json-schema": "^7.0.15"
822
+ },
823
+ "engines": {
824
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
825
+ }
826
+ },
827
+ "node_modules/@eslint/eslintrc": {
828
+ "version": "3.3.1",
829
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
830
+ "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
831
+ "dev": true,
832
+ "license": "MIT",
833
+ "dependencies": {
834
+ "ajv": "^6.12.4",
835
+ "debug": "^4.3.2",
836
+ "espree": "^10.0.1",
837
+ "globals": "^14.0.0",
838
+ "ignore": "^5.2.0",
839
+ "import-fresh": "^3.2.1",
840
+ "js-yaml": "^4.1.0",
841
+ "minimatch": "^3.1.2",
842
+ "strip-json-comments": "^3.1.1"
843
+ },
844
+ "engines": {
845
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
846
+ },
847
+ "funding": {
848
+ "url": "https://opencollective.com/eslint"
849
+ }
850
+ },
851
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
852
+ "version": "14.0.0",
853
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
854
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
855
+ "dev": true,
856
+ "license": "MIT",
857
+ "engines": {
858
+ "node": ">=18"
859
+ },
860
+ "funding": {
861
+ "url": "https://github.com/sponsors/sindresorhus"
862
+ }
863
+ },
864
+ "node_modules/@eslint/js": {
865
+ "version": "9.25.0",
866
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
867
+ "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
868
+ "dev": true,
869
+ "license": "MIT",
870
+ "engines": {
871
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
872
+ }
873
+ },
874
+ "node_modules/@eslint/object-schema": {
875
+ "version": "2.1.6",
876
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
877
+ "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
878
+ "dev": true,
879
+ "license": "Apache-2.0",
880
+ "engines": {
881
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
882
+ }
883
+ },
884
+ "node_modules/@eslint/plugin-kit": {
885
+ "version": "0.2.8",
886
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz",
887
+ "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==",
888
+ "dev": true,
889
+ "license": "Apache-2.0",
890
+ "dependencies": {
891
+ "@eslint/core": "^0.13.0",
892
+ "levn": "^0.4.1"
893
+ },
894
+ "engines": {
895
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
896
+ }
897
+ },
898
+ "node_modules/@humanfs/core": {
899
+ "version": "0.19.1",
900
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
901
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
902
+ "dev": true,
903
+ "license": "Apache-2.0",
904
+ "engines": {
905
+ "node": ">=18.18.0"
906
+ }
907
+ },
908
+ "node_modules/@humanfs/node": {
909
+ "version": "0.16.6",
910
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
911
+ "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
912
+ "dev": true,
913
+ "license": "Apache-2.0",
914
+ "dependencies": {
915
+ "@humanfs/core": "^0.19.1",
916
+ "@humanwhocodes/retry": "^0.3.0"
917
+ },
918
+ "engines": {
919
+ "node": ">=18.18.0"
920
+ }
921
+ },
922
+ "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
923
+ "version": "0.3.1",
924
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
925
+ "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
926
+ "dev": true,
927
+ "license": "Apache-2.0",
928
+ "engines": {
929
+ "node": ">=18.18"
930
+ },
931
+ "funding": {
932
+ "type": "github",
933
+ "url": "https://github.com/sponsors/nzakas"
934
+ }
935
+ },
936
+ "node_modules/@humanwhocodes/module-importer": {
937
+ "version": "1.0.1",
938
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
939
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
940
+ "dev": true,
941
+ "license": "Apache-2.0",
942
+ "engines": {
943
+ "node": ">=12.22"
944
+ },
945
+ "funding": {
946
+ "type": "github",
947
+ "url": "https://github.com/sponsors/nzakas"
948
+ }
949
+ },
950
+ "node_modules/@humanwhocodes/retry": {
951
+ "version": "0.4.2",
952
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz",
953
+ "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==",
954
+ "dev": true,
955
+ "license": "Apache-2.0",
956
+ "engines": {
957
+ "node": ">=18.18"
958
+ },
959
+ "funding": {
960
+ "type": "github",
961
+ "url": "https://github.com/sponsors/nzakas"
962
+ }
963
+ },
964
+ "node_modules/@jridgewell/gen-mapping": {
965
+ "version": "0.3.8",
966
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
967
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
968
+ "dev": true,
969
+ "license": "MIT",
970
+ "dependencies": {
971
+ "@jridgewell/set-array": "^1.2.1",
972
+ "@jridgewell/sourcemap-codec": "^1.4.10",
973
+ "@jridgewell/trace-mapping": "^0.3.24"
974
+ },
975
+ "engines": {
976
+ "node": ">=6.0.0"
977
+ }
978
+ },
979
+ "node_modules/@jridgewell/resolve-uri": {
980
+ "version": "3.1.2",
981
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
982
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
983
+ "dev": true,
984
+ "license": "MIT",
985
+ "engines": {
986
+ "node": ">=6.0.0"
987
+ }
988
+ },
989
+ "node_modules/@jridgewell/set-array": {
990
+ "version": "1.2.1",
991
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
992
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
993
+ "dev": true,
994
+ "license": "MIT",
995
+ "engines": {
996
+ "node": ">=6.0.0"
997
+ }
998
+ },
999
+ "node_modules/@jridgewell/sourcemap-codec": {
1000
+ "version": "1.5.0",
1001
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
1002
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
1003
+ "dev": true,
1004
+ "license": "MIT"
1005
+ },
1006
+ "node_modules/@jridgewell/trace-mapping": {
1007
+ "version": "0.3.25",
1008
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
1009
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
1010
+ "dev": true,
1011
+ "license": "MIT",
1012
+ "dependencies": {
1013
+ "@jridgewell/resolve-uri": "^3.1.0",
1014
+ "@jridgewell/sourcemap-codec": "^1.4.14"
1015
+ }
1016
+ },
1017
+ "node_modules/@rollup/rollup-android-arm-eabi": {
1018
+ "version": "4.40.0",
1019
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz",
1020
+ "integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==",
1021
+ "cpu": [
1022
+ "arm"
1023
+ ],
1024
+ "dev": true,
1025
+ "license": "MIT",
1026
+ "optional": true,
1027
+ "os": [
1028
+ "android"
1029
+ ]
1030
+ },
1031
+ "node_modules/@rollup/rollup-android-arm64": {
1032
+ "version": "4.40.0",
1033
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz",
1034
+ "integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==",
1035
+ "cpu": [
1036
+ "arm64"
1037
+ ],
1038
+ "dev": true,
1039
+ "license": "MIT",
1040
+ "optional": true,
1041
+ "os": [
1042
+ "android"
1043
+ ]
1044
+ },
1045
+ "node_modules/@rollup/rollup-darwin-arm64": {
1046
+ "version": "4.40.0",
1047
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz",
1048
+ "integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==",
1049
+ "cpu": [
1050
+ "arm64"
1051
+ ],
1052
+ "dev": true,
1053
+ "license": "MIT",
1054
+ "optional": true,
1055
+ "os": [
1056
+ "darwin"
1057
+ ]
1058
+ },
1059
+ "node_modules/@rollup/rollup-darwin-x64": {
1060
+ "version": "4.40.0",
1061
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz",
1062
+ "integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==",
1063
+ "cpu": [
1064
+ "x64"
1065
+ ],
1066
+ "dev": true,
1067
+ "license": "MIT",
1068
+ "optional": true,
1069
+ "os": [
1070
+ "darwin"
1071
+ ]
1072
+ },
1073
+ "node_modules/@rollup/rollup-freebsd-arm64": {
1074
+ "version": "4.40.0",
1075
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz",
1076
+ "integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==",
1077
+ "cpu": [
1078
+ "arm64"
1079
+ ],
1080
+ "dev": true,
1081
+ "license": "MIT",
1082
+ "optional": true,
1083
+ "os": [
1084
+ "freebsd"
1085
+ ]
1086
+ },
1087
+ "node_modules/@rollup/rollup-freebsd-x64": {
1088
+ "version": "4.40.0",
1089
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz",
1090
+ "integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==",
1091
+ "cpu": [
1092
+ "x64"
1093
+ ],
1094
+ "dev": true,
1095
+ "license": "MIT",
1096
+ "optional": true,
1097
+ "os": [
1098
+ "freebsd"
1099
+ ]
1100
+ },
1101
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
1102
+ "version": "4.40.0",
1103
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz",
1104
+ "integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==",
1105
+ "cpu": [
1106
+ "arm"
1107
+ ],
1108
+ "dev": true,
1109
+ "license": "MIT",
1110
+ "optional": true,
1111
+ "os": [
1112
+ "linux"
1113
+ ]
1114
+ },
1115
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
1116
+ "version": "4.40.0",
1117
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz",
1118
+ "integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==",
1119
+ "cpu": [
1120
+ "arm"
1121
+ ],
1122
+ "dev": true,
1123
+ "license": "MIT",
1124
+ "optional": true,
1125
+ "os": [
1126
+ "linux"
1127
+ ]
1128
+ },
1129
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
1130
+ "version": "4.40.0",
1131
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz",
1132
+ "integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==",
1133
+ "cpu": [
1134
+ "arm64"
1135
+ ],
1136
+ "dev": true,
1137
+ "license": "MIT",
1138
+ "optional": true,
1139
+ "os": [
1140
+ "linux"
1141
+ ]
1142
+ },
1143
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
1144
+ "version": "4.40.0",
1145
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz",
1146
+ "integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==",
1147
+ "cpu": [
1148
+ "arm64"
1149
+ ],
1150
+ "dev": true,
1151
+ "license": "MIT",
1152
+ "optional": true,
1153
+ "os": [
1154
+ "linux"
1155
+ ]
1156
+ },
1157
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
1158
+ "version": "4.40.0",
1159
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz",
1160
+ "integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==",
1161
+ "cpu": [
1162
+ "loong64"
1163
+ ],
1164
+ "dev": true,
1165
+ "license": "MIT",
1166
+ "optional": true,
1167
+ "os": [
1168
+ "linux"
1169
+ ]
1170
+ },
1171
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
1172
+ "version": "4.40.0",
1173
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz",
1174
+ "integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==",
1175
+ "cpu": [
1176
+ "ppc64"
1177
+ ],
1178
+ "dev": true,
1179
+ "license": "MIT",
1180
+ "optional": true,
1181
+ "os": [
1182
+ "linux"
1183
+ ]
1184
+ },
1185
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
1186
+ "version": "4.40.0",
1187
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz",
1188
+ "integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==",
1189
+ "cpu": [
1190
+ "riscv64"
1191
+ ],
1192
+ "dev": true,
1193
+ "license": "MIT",
1194
+ "optional": true,
1195
+ "os": [
1196
+ "linux"
1197
+ ]
1198
+ },
1199
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
1200
+ "version": "4.40.0",
1201
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz",
1202
+ "integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==",
1203
+ "cpu": [
1204
+ "riscv64"
1205
+ ],
1206
+ "dev": true,
1207
+ "license": "MIT",
1208
+ "optional": true,
1209
+ "os": [
1210
+ "linux"
1211
+ ]
1212
+ },
1213
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
1214
+ "version": "4.40.0",
1215
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz",
1216
+ "integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==",
1217
+ "cpu": [
1218
+ "s390x"
1219
+ ],
1220
+ "dev": true,
1221
+ "license": "MIT",
1222
+ "optional": true,
1223
+ "os": [
1224
+ "linux"
1225
+ ]
1226
+ },
1227
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
1228
+ "version": "4.40.0",
1229
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz",
1230
+ "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==",
1231
+ "cpu": [
1232
+ "x64"
1233
+ ],
1234
+ "dev": true,
1235
+ "license": "MIT",
1236
+ "optional": true,
1237
+ "os": [
1238
+ "linux"
1239
+ ]
1240
+ },
1241
+ "node_modules/@rollup/rollup-linux-x64-musl": {
1242
+ "version": "4.40.0",
1243
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz",
1244
+ "integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==",
1245
+ "cpu": [
1246
+ "x64"
1247
+ ],
1248
+ "dev": true,
1249
+ "license": "MIT",
1250
+ "optional": true,
1251
+ "os": [
1252
+ "linux"
1253
+ ]
1254
+ },
1255
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
1256
+ "version": "4.40.0",
1257
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz",
1258
+ "integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==",
1259
+ "cpu": [
1260
+ "arm64"
1261
+ ],
1262
+ "dev": true,
1263
+ "license": "MIT",
1264
+ "optional": true,
1265
+ "os": [
1266
+ "win32"
1267
+ ]
1268
+ },
1269
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
1270
+ "version": "4.40.0",
1271
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz",
1272
+ "integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==",
1273
+ "cpu": [
1274
+ "ia32"
1275
+ ],
1276
+ "dev": true,
1277
+ "license": "MIT",
1278
+ "optional": true,
1279
+ "os": [
1280
+ "win32"
1281
+ ]
1282
+ },
1283
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
1284
+ "version": "4.40.0",
1285
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz",
1286
+ "integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==",
1287
+ "cpu": [
1288
+ "x64"
1289
+ ],
1290
+ "dev": true,
1291
+ "license": "MIT",
1292
+ "optional": true,
1293
+ "os": [
1294
+ "win32"
1295
+ ]
1296
+ },
1297
+ "node_modules/@types/babel__core": {
1298
+ "version": "7.20.5",
1299
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
1300
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
1301
+ "dev": true,
1302
+ "license": "MIT",
1303
+ "dependencies": {
1304
+ "@babel/parser": "^7.20.7",
1305
+ "@babel/types": "^7.20.7",
1306
+ "@types/babel__generator": "*",
1307
+ "@types/babel__template": "*",
1308
+ "@types/babel__traverse": "*"
1309
+ }
1310
+ },
1311
+ "node_modules/@types/babel__generator": {
1312
+ "version": "7.27.0",
1313
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
1314
+ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
1315
+ "dev": true,
1316
+ "license": "MIT",
1317
+ "dependencies": {
1318
+ "@babel/types": "^7.0.0"
1319
+ }
1320
+ },
1321
+ "node_modules/@types/babel__template": {
1322
+ "version": "7.4.4",
1323
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
1324
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
1325
+ "dev": true,
1326
+ "license": "MIT",
1327
+ "dependencies": {
1328
+ "@babel/parser": "^7.1.0",
1329
+ "@babel/types": "^7.0.0"
1330
+ }
1331
+ },
1332
+ "node_modules/@types/babel__traverse": {
1333
+ "version": "7.20.7",
1334
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
1335
+ "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
1336
+ "dev": true,
1337
+ "license": "MIT",
1338
+ "dependencies": {
1339
+ "@babel/types": "^7.20.7"
1340
+ }
1341
+ },
1342
+ "node_modules/@types/estree": {
1343
+ "version": "1.0.7",
1344
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
1345
+ "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
1346
+ "dev": true,
1347
+ "license": "MIT"
1348
+ },
1349
+ "node_modules/@types/json-schema": {
1350
+ "version": "7.0.15",
1351
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
1352
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
1353
+ "dev": true,
1354
+ "license": "MIT"
1355
+ },
1356
+ "node_modules/@types/react": {
1357
+ "version": "19.1.2",
1358
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.2.tgz",
1359
+ "integrity": "sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==",
1360
+ "dev": true,
1361
+ "license": "MIT",
1362
+ "dependencies": {
1363
+ "csstype": "^3.0.2"
1364
+ }
1365
+ },
1366
+ "node_modules/@types/react-dom": {
1367
+ "version": "19.1.2",
1368
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.2.tgz",
1369
+ "integrity": "sha512-XGJkWF41Qq305SKWEILa1O8vzhb3aOo3ogBlSmiqNko/WmRb6QIaweuZCXjKygVDXpzXb5wyxKTSOsmkuqj+Qw==",
1370
+ "dev": true,
1371
+ "license": "MIT",
1372
+ "peerDependencies": {
1373
+ "@types/react": "^19.0.0"
1374
+ }
1375
+ },
1376
+ "node_modules/@vitejs/plugin-react": {
1377
+ "version": "4.4.0",
1378
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.4.0.tgz",
1379
+ "integrity": "sha512-x/EztcTKVj+TDeANY1WjNeYsvZjZdfWRMP/KXi5Yn8BoTzpa13ZltaQqKfvWYbX8CE10GOHHdC5v86jY9x8i/g==",
1380
+ "dev": true,
1381
+ "license": "MIT",
1382
+ "dependencies": {
1383
+ "@babel/core": "^7.26.10",
1384
+ "@babel/plugin-transform-react-jsx-self": "^7.25.9",
1385
+ "@babel/plugin-transform-react-jsx-source": "^7.25.9",
1386
+ "@types/babel__core": "^7.20.5",
1387
+ "react-refresh": "^0.17.0"
1388
+ },
1389
+ "engines": {
1390
+ "node": "^14.18.0 || >=16.0.0"
1391
+ },
1392
+ "peerDependencies": {
1393
+ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0"
1394
+ }
1395
+ },
1396
+ "node_modules/acorn": {
1397
+ "version": "8.14.1",
1398
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
1399
+ "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
1400
+ "dev": true,
1401
+ "license": "MIT",
1402
+ "bin": {
1403
+ "acorn": "bin/acorn"
1404
+ },
1405
+ "engines": {
1406
+ "node": ">=0.4.0"
1407
+ }
1408
+ },
1409
+ "node_modules/acorn-jsx": {
1410
+ "version": "5.3.2",
1411
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
1412
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
1413
+ "dev": true,
1414
+ "license": "MIT",
1415
+ "peerDependencies": {
1416
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
1417
+ }
1418
+ },
1419
+ "node_modules/ajv": {
1420
+ "version": "6.12.6",
1421
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
1422
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
1423
+ "dev": true,
1424
+ "license": "MIT",
1425
+ "dependencies": {
1426
+ "fast-deep-equal": "^3.1.1",
1427
+ "fast-json-stable-stringify": "^2.0.0",
1428
+ "json-schema-traverse": "^0.4.1",
1429
+ "uri-js": "^4.2.2"
1430
+ },
1431
+ "funding": {
1432
+ "type": "github",
1433
+ "url": "https://github.com/sponsors/epoberezkin"
1434
+ }
1435
+ },
1436
+ "node_modules/ansi-styles": {
1437
+ "version": "4.3.0",
1438
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1439
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1440
+ "dev": true,
1441
+ "license": "MIT",
1442
+ "dependencies": {
1443
+ "color-convert": "^2.0.1"
1444
+ },
1445
+ "engines": {
1446
+ "node": ">=8"
1447
+ },
1448
+ "funding": {
1449
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
1450
+ }
1451
+ },
1452
+ "node_modules/argparse": {
1453
+ "version": "2.0.1",
1454
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
1455
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
1456
+ "dev": true,
1457
+ "license": "Python-2.0"
1458
+ },
1459
+ "node_modules/balanced-match": {
1460
+ "version": "1.0.2",
1461
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1462
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1463
+ "dev": true,
1464
+ "license": "MIT"
1465
+ },
1466
+ "node_modules/brace-expansion": {
1467
+ "version": "1.1.11",
1468
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1469
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1470
+ "dev": true,
1471
+ "license": "MIT",
1472
+ "dependencies": {
1473
+ "balanced-match": "^1.0.0",
1474
+ "concat-map": "0.0.1"
1475
+ }
1476
+ },
1477
+ "node_modules/browserslist": {
1478
+ "version": "4.24.4",
1479
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
1480
+ "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
1481
+ "dev": true,
1482
+ "funding": [
1483
+ {
1484
+ "type": "opencollective",
1485
+ "url": "https://opencollective.com/browserslist"
1486
+ },
1487
+ {
1488
+ "type": "tidelift",
1489
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
1490
+ },
1491
+ {
1492
+ "type": "github",
1493
+ "url": "https://github.com/sponsors/ai"
1494
+ }
1495
+ ],
1496
+ "license": "MIT",
1497
+ "dependencies": {
1498
+ "caniuse-lite": "^1.0.30001688",
1499
+ "electron-to-chromium": "^1.5.73",
1500
+ "node-releases": "^2.0.19",
1501
+ "update-browserslist-db": "^1.1.1"
1502
+ },
1503
+ "bin": {
1504
+ "browserslist": "cli.js"
1505
+ },
1506
+ "engines": {
1507
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1508
+ }
1509
+ },
1510
+ "node_modules/callsites": {
1511
+ "version": "3.1.0",
1512
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
1513
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
1514
+ "dev": true,
1515
+ "license": "MIT",
1516
+ "engines": {
1517
+ "node": ">=6"
1518
+ }
1519
+ },
1520
+ "node_modules/caniuse-lite": {
1521
+ "version": "1.0.30001714",
1522
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001714.tgz",
1523
+ "integrity": "sha512-mtgapdwDLSSBnCI3JokHM7oEQBLxiJKVRtg10AxM1AyeiKcM96f0Mkbqeq+1AbiCtvMcHRulAAEMu693JrSWqg==",
1524
+ "dev": true,
1525
+ "funding": [
1526
+ {
1527
+ "type": "opencollective",
1528
+ "url": "https://opencollective.com/browserslist"
1529
+ },
1530
+ {
1531
+ "type": "tidelift",
1532
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
1533
+ },
1534
+ {
1535
+ "type": "github",
1536
+ "url": "https://github.com/sponsors/ai"
1537
+ }
1538
+ ],
1539
+ "license": "CC-BY-4.0"
1540
+ },
1541
+ "node_modules/chalk": {
1542
+ "version": "4.1.2",
1543
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1544
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1545
+ "dev": true,
1546
+ "license": "MIT",
1547
+ "dependencies": {
1548
+ "ansi-styles": "^4.1.0",
1549
+ "supports-color": "^7.1.0"
1550
+ },
1551
+ "engines": {
1552
+ "node": ">=10"
1553
+ },
1554
+ "funding": {
1555
+ "url": "https://github.com/chalk/chalk?sponsor=1"
1556
+ }
1557
+ },
1558
+ "node_modules/color-convert": {
1559
+ "version": "2.0.1",
1560
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1561
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1562
+ "dev": true,
1563
+ "license": "MIT",
1564
+ "dependencies": {
1565
+ "color-name": "~1.1.4"
1566
+ },
1567
+ "engines": {
1568
+ "node": ">=7.0.0"
1569
+ }
1570
+ },
1571
+ "node_modules/color-name": {
1572
+ "version": "1.1.4",
1573
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1574
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1575
+ "dev": true,
1576
+ "license": "MIT"
1577
+ },
1578
+ "node_modules/concat-map": {
1579
+ "version": "0.0.1",
1580
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1581
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
1582
+ "dev": true,
1583
+ "license": "MIT"
1584
+ },
1585
+ "node_modules/convert-source-map": {
1586
+ "version": "2.0.0",
1587
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
1588
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
1589
+ "dev": true,
1590
+ "license": "MIT"
1591
+ },
1592
+ "node_modules/cross-spawn": {
1593
+ "version": "7.0.6",
1594
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
1595
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
1596
+ "dev": true,
1597
+ "license": "MIT",
1598
+ "dependencies": {
1599
+ "path-key": "^3.1.0",
1600
+ "shebang-command": "^2.0.0",
1601
+ "which": "^2.0.1"
1602
+ },
1603
+ "engines": {
1604
+ "node": ">= 8"
1605
+ }
1606
+ },
1607
+ "node_modules/csstype": {
1608
+ "version": "3.1.3",
1609
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
1610
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
1611
+ "dev": true,
1612
+ "license": "MIT"
1613
+ },
1614
+ "node_modules/debug": {
1615
+ "version": "4.4.0",
1616
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
1617
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
1618
+ "dev": true,
1619
+ "license": "MIT",
1620
+ "dependencies": {
1621
+ "ms": "^2.1.3"
1622
+ },
1623
+ "engines": {
1624
+ "node": ">=6.0"
1625
+ },
1626
+ "peerDependenciesMeta": {
1627
+ "supports-color": {
1628
+ "optional": true
1629
+ }
1630
+ }
1631
+ },
1632
+ "node_modules/deep-is": {
1633
+ "version": "0.1.4",
1634
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
1635
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
1636
+ "dev": true,
1637
+ "license": "MIT"
1638
+ },
1639
+ "node_modules/electron-to-chromium": {
1640
+ "version": "1.5.139",
1641
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.139.tgz",
1642
+ "integrity": "sha512-GGnRYOTdN5LYpwbIr0rwP/ZHOQSvAF6TG0LSzp28uCBb9JiXHJGmaaKw29qjNJc5bGnnp6kXJqRnGMQoELwi5w==",
1643
+ "dev": true,
1644
+ "license": "ISC"
1645
+ },
1646
+ "node_modules/esbuild": {
1647
+ "version": "0.25.2",
1648
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz",
1649
+ "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
1650
+ "dev": true,
1651
+ "hasInstallScript": true,
1652
+ "license": "MIT",
1653
+ "bin": {
1654
+ "esbuild": "bin/esbuild"
1655
+ },
1656
+ "engines": {
1657
+ "node": ">=18"
1658
+ },
1659
+ "optionalDependencies": {
1660
+ "@esbuild/aix-ppc64": "0.25.2",
1661
+ "@esbuild/android-arm": "0.25.2",
1662
+ "@esbuild/android-arm64": "0.25.2",
1663
+ "@esbuild/android-x64": "0.25.2",
1664
+ "@esbuild/darwin-arm64": "0.25.2",
1665
+ "@esbuild/darwin-x64": "0.25.2",
1666
+ "@esbuild/freebsd-arm64": "0.25.2",
1667
+ "@esbuild/freebsd-x64": "0.25.2",
1668
+ "@esbuild/linux-arm": "0.25.2",
1669
+ "@esbuild/linux-arm64": "0.25.2",
1670
+ "@esbuild/linux-ia32": "0.25.2",
1671
+ "@esbuild/linux-loong64": "0.25.2",
1672
+ "@esbuild/linux-mips64el": "0.25.2",
1673
+ "@esbuild/linux-ppc64": "0.25.2",
1674
+ "@esbuild/linux-riscv64": "0.25.2",
1675
+ "@esbuild/linux-s390x": "0.25.2",
1676
+ "@esbuild/linux-x64": "0.25.2",
1677
+ "@esbuild/netbsd-arm64": "0.25.2",
1678
+ "@esbuild/netbsd-x64": "0.25.2",
1679
+ "@esbuild/openbsd-arm64": "0.25.2",
1680
+ "@esbuild/openbsd-x64": "0.25.2",
1681
+ "@esbuild/sunos-x64": "0.25.2",
1682
+ "@esbuild/win32-arm64": "0.25.2",
1683
+ "@esbuild/win32-ia32": "0.25.2",
1684
+ "@esbuild/win32-x64": "0.25.2"
1685
+ }
1686
+ },
1687
+ "node_modules/escalade": {
1688
+ "version": "3.2.0",
1689
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
1690
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
1691
+ "dev": true,
1692
+ "license": "MIT",
1693
+ "engines": {
1694
+ "node": ">=6"
1695
+ }
1696
+ },
1697
+ "node_modules/escape-string-regexp": {
1698
+ "version": "4.0.0",
1699
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
1700
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
1701
+ "dev": true,
1702
+ "license": "MIT",
1703
+ "engines": {
1704
+ "node": ">=10"
1705
+ },
1706
+ "funding": {
1707
+ "url": "https://github.com/sponsors/sindresorhus"
1708
+ }
1709
+ },
1710
+ "node_modules/eslint": {
1711
+ "version": "9.25.0",
1712
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
1713
+ "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
1714
+ "dev": true,
1715
+ "license": "MIT",
1716
+ "dependencies": {
1717
+ "@eslint-community/eslint-utils": "^4.2.0",
1718
+ "@eslint-community/regexpp": "^4.12.1",
1719
+ "@eslint/config-array": "^0.20.0",
1720
+ "@eslint/config-helpers": "^0.2.1",
1721
+ "@eslint/core": "^0.13.0",
1722
+ "@eslint/eslintrc": "^3.3.1",
1723
+ "@eslint/js": "9.25.0",
1724
+ "@eslint/plugin-kit": "^0.2.8",
1725
+ "@humanfs/node": "^0.16.6",
1726
+ "@humanwhocodes/module-importer": "^1.0.1",
1727
+ "@humanwhocodes/retry": "^0.4.2",
1728
+ "@types/estree": "^1.0.6",
1729
+ "@types/json-schema": "^7.0.15",
1730
+ "ajv": "^6.12.4",
1731
+ "chalk": "^4.0.0",
1732
+ "cross-spawn": "^7.0.6",
1733
+ "debug": "^4.3.2",
1734
+ "escape-string-regexp": "^4.0.0",
1735
+ "eslint-scope": "^8.3.0",
1736
+ "eslint-visitor-keys": "^4.2.0",
1737
+ "espree": "^10.3.0",
1738
+ "esquery": "^1.5.0",
1739
+ "esutils": "^2.0.2",
1740
+ "fast-deep-equal": "^3.1.3",
1741
+ "file-entry-cache": "^8.0.0",
1742
+ "find-up": "^5.0.0",
1743
+ "glob-parent": "^6.0.2",
1744
+ "ignore": "^5.2.0",
1745
+ "imurmurhash": "^0.1.4",
1746
+ "is-glob": "^4.0.0",
1747
+ "json-stable-stringify-without-jsonify": "^1.0.1",
1748
+ "lodash.merge": "^4.6.2",
1749
+ "minimatch": "^3.1.2",
1750
+ "natural-compare": "^1.4.0",
1751
+ "optionator": "^0.9.3"
1752
+ },
1753
+ "bin": {
1754
+ "eslint": "bin/eslint.js"
1755
+ },
1756
+ "engines": {
1757
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1758
+ },
1759
+ "funding": {
1760
+ "url": "https://eslint.org/donate"
1761
+ },
1762
+ "peerDependencies": {
1763
+ "jiti": "*"
1764
+ },
1765
+ "peerDependenciesMeta": {
1766
+ "jiti": {
1767
+ "optional": true
1768
+ }
1769
+ }
1770
+ },
1771
+ "node_modules/eslint-plugin-react-hooks": {
1772
+ "version": "5.2.0",
1773
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz",
1774
+ "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==",
1775
+ "dev": true,
1776
+ "license": "MIT",
1777
+ "engines": {
1778
+ "node": ">=10"
1779
+ },
1780
+ "peerDependencies": {
1781
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
1782
+ }
1783
+ },
1784
+ "node_modules/eslint-plugin-react-refresh": {
1785
+ "version": "0.4.19",
1786
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.19.tgz",
1787
+ "integrity": "sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ==",
1788
+ "dev": true,
1789
+ "license": "MIT",
1790
+ "peerDependencies": {
1791
+ "eslint": ">=8.40"
1792
+ }
1793
+ },
1794
+ "node_modules/eslint-scope": {
1795
+ "version": "8.3.0",
1796
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz",
1797
+ "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==",
1798
+ "dev": true,
1799
+ "license": "BSD-2-Clause",
1800
+ "dependencies": {
1801
+ "esrecurse": "^4.3.0",
1802
+ "estraverse": "^5.2.0"
1803
+ },
1804
+ "engines": {
1805
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1806
+ },
1807
+ "funding": {
1808
+ "url": "https://opencollective.com/eslint"
1809
+ }
1810
+ },
1811
+ "node_modules/eslint-visitor-keys": {
1812
+ "version": "4.2.0",
1813
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
1814
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
1815
+ "dev": true,
1816
+ "license": "Apache-2.0",
1817
+ "engines": {
1818
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1819
+ },
1820
+ "funding": {
1821
+ "url": "https://opencollective.com/eslint"
1822
+ }
1823
+ },
1824
+ "node_modules/espree": {
1825
+ "version": "10.3.0",
1826
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
1827
+ "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
1828
+ "dev": true,
1829
+ "license": "BSD-2-Clause",
1830
+ "dependencies": {
1831
+ "acorn": "^8.14.0",
1832
+ "acorn-jsx": "^5.3.2",
1833
+ "eslint-visitor-keys": "^4.2.0"
1834
+ },
1835
+ "engines": {
1836
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1837
+ },
1838
+ "funding": {
1839
+ "url": "https://opencollective.com/eslint"
1840
+ }
1841
+ },
1842
+ "node_modules/esquery": {
1843
+ "version": "1.6.0",
1844
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
1845
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
1846
+ "dev": true,
1847
+ "license": "BSD-3-Clause",
1848
+ "dependencies": {
1849
+ "estraverse": "^5.1.0"
1850
+ },
1851
+ "engines": {
1852
+ "node": ">=0.10"
1853
+ }
1854
+ },
1855
+ "node_modules/esrecurse": {
1856
+ "version": "4.3.0",
1857
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
1858
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
1859
+ "dev": true,
1860
+ "license": "BSD-2-Clause",
1861
+ "dependencies": {
1862
+ "estraverse": "^5.2.0"
1863
+ },
1864
+ "engines": {
1865
+ "node": ">=4.0"
1866
+ }
1867
+ },
1868
+ "node_modules/estraverse": {
1869
+ "version": "5.3.0",
1870
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
1871
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
1872
+ "dev": true,
1873
+ "license": "BSD-2-Clause",
1874
+ "engines": {
1875
+ "node": ">=4.0"
1876
+ }
1877
+ },
1878
+ "node_modules/esutils": {
1879
+ "version": "2.0.3",
1880
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
1881
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
1882
+ "dev": true,
1883
+ "license": "BSD-2-Clause",
1884
+ "engines": {
1885
+ "node": ">=0.10.0"
1886
+ }
1887
+ },
1888
+ "node_modules/fast-deep-equal": {
1889
+ "version": "3.1.3",
1890
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1891
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
1892
+ "dev": true,
1893
+ "license": "MIT"
1894
+ },
1895
+ "node_modules/fast-json-stable-stringify": {
1896
+ "version": "2.1.0",
1897
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1898
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
1899
+ "dev": true,
1900
+ "license": "MIT"
1901
+ },
1902
+ "node_modules/fast-levenshtein": {
1903
+ "version": "2.0.6",
1904
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1905
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
1906
+ "dev": true,
1907
+ "license": "MIT"
1908
+ },
1909
+ "node_modules/fdir": {
1910
+ "version": "6.4.4",
1911
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
1912
+ "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
1913
+ "dev": true,
1914
+ "license": "MIT",
1915
+ "peerDependencies": {
1916
+ "picomatch": "^3 || ^4"
1917
+ },
1918
+ "peerDependenciesMeta": {
1919
+ "picomatch": {
1920
+ "optional": true
1921
+ }
1922
+ }
1923
+ },
1924
+ "node_modules/file-entry-cache": {
1925
+ "version": "8.0.0",
1926
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
1927
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
1928
+ "dev": true,
1929
+ "license": "MIT",
1930
+ "dependencies": {
1931
+ "flat-cache": "^4.0.0"
1932
+ },
1933
+ "engines": {
1934
+ "node": ">=16.0.0"
1935
+ }
1936
+ },
1937
+ "node_modules/find-up": {
1938
+ "version": "5.0.0",
1939
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
1940
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
1941
+ "dev": true,
1942
+ "license": "MIT",
1943
+ "dependencies": {
1944
+ "locate-path": "^6.0.0",
1945
+ "path-exists": "^4.0.0"
1946
+ },
1947
+ "engines": {
1948
+ "node": ">=10"
1949
+ },
1950
+ "funding": {
1951
+ "url": "https://github.com/sponsors/sindresorhus"
1952
+ }
1953
+ },
1954
+ "node_modules/flat-cache": {
1955
+ "version": "4.0.1",
1956
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
1957
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
1958
+ "dev": true,
1959
+ "license": "MIT",
1960
+ "dependencies": {
1961
+ "flatted": "^3.2.9",
1962
+ "keyv": "^4.5.4"
1963
+ },
1964
+ "engines": {
1965
+ "node": ">=16"
1966
+ }
1967
+ },
1968
+ "node_modules/flatted": {
1969
+ "version": "3.3.3",
1970
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
1971
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
1972
+ "dev": true,
1973
+ "license": "ISC"
1974
+ },
1975
+ "node_modules/fsevents": {
1976
+ "version": "2.3.3",
1977
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1978
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1979
+ "dev": true,
1980
+ "hasInstallScript": true,
1981
+ "license": "MIT",
1982
+ "optional": true,
1983
+ "os": [
1984
+ "darwin"
1985
+ ],
1986
+ "engines": {
1987
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1988
+ }
1989
+ },
1990
+ "node_modules/gensync": {
1991
+ "version": "1.0.0-beta.2",
1992
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
1993
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
1994
+ "dev": true,
1995
+ "license": "MIT",
1996
+ "engines": {
1997
+ "node": ">=6.9.0"
1998
+ }
1999
+ },
2000
+ "node_modules/glob-parent": {
2001
+ "version": "6.0.2",
2002
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
2003
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
2004
+ "dev": true,
2005
+ "license": "ISC",
2006
+ "dependencies": {
2007
+ "is-glob": "^4.0.3"
2008
+ },
2009
+ "engines": {
2010
+ "node": ">=10.13.0"
2011
+ }
2012
+ },
2013
+ "node_modules/globals": {
2014
+ "version": "16.0.0",
2015
+ "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz",
2016
+ "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==",
2017
+ "dev": true,
2018
+ "license": "MIT",
2019
+ "engines": {
2020
+ "node": ">=18"
2021
+ },
2022
+ "funding": {
2023
+ "url": "https://github.com/sponsors/sindresorhus"
2024
+ }
2025
+ },
2026
+ "node_modules/has-flag": {
2027
+ "version": "4.0.0",
2028
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
2029
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
2030
+ "dev": true,
2031
+ "license": "MIT",
2032
+ "engines": {
2033
+ "node": ">=8"
2034
+ }
2035
+ },
2036
+ "node_modules/ignore": {
2037
+ "version": "5.3.2",
2038
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
2039
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
2040
+ "dev": true,
2041
+ "license": "MIT",
2042
+ "engines": {
2043
+ "node": ">= 4"
2044
+ }
2045
+ },
2046
+ "node_modules/import-fresh": {
2047
+ "version": "3.3.1",
2048
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
2049
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
2050
+ "dev": true,
2051
+ "license": "MIT",
2052
+ "dependencies": {
2053
+ "parent-module": "^1.0.0",
2054
+ "resolve-from": "^4.0.0"
2055
+ },
2056
+ "engines": {
2057
+ "node": ">=6"
2058
+ },
2059
+ "funding": {
2060
+ "url": "https://github.com/sponsors/sindresorhus"
2061
+ }
2062
+ },
2063
+ "node_modules/imurmurhash": {
2064
+ "version": "0.1.4",
2065
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
2066
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
2067
+ "dev": true,
2068
+ "license": "MIT",
2069
+ "engines": {
2070
+ "node": ">=0.8.19"
2071
+ }
2072
+ },
2073
+ "node_modules/is-extglob": {
2074
+ "version": "2.1.1",
2075
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2076
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
2077
+ "dev": true,
2078
+ "license": "MIT",
2079
+ "engines": {
2080
+ "node": ">=0.10.0"
2081
+ }
2082
+ },
2083
+ "node_modules/is-glob": {
2084
+ "version": "4.0.3",
2085
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
2086
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
2087
+ "dev": true,
2088
+ "license": "MIT",
2089
+ "dependencies": {
2090
+ "is-extglob": "^2.1.1"
2091
+ },
2092
+ "engines": {
2093
+ "node": ">=0.10.0"
2094
+ }
2095
+ },
2096
+ "node_modules/isexe": {
2097
+ "version": "2.0.0",
2098
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2099
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
2100
+ "dev": true,
2101
+ "license": "ISC"
2102
+ },
2103
+ "node_modules/js-tokens": {
2104
+ "version": "4.0.0",
2105
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
2106
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
2107
+ "dev": true,
2108
+ "license": "MIT"
2109
+ },
2110
+ "node_modules/js-yaml": {
2111
+ "version": "4.1.0",
2112
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
2113
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
2114
+ "dev": true,
2115
+ "license": "MIT",
2116
+ "dependencies": {
2117
+ "argparse": "^2.0.1"
2118
+ },
2119
+ "bin": {
2120
+ "js-yaml": "bin/js-yaml.js"
2121
+ }
2122
+ },
2123
+ "node_modules/jsesc": {
2124
+ "version": "3.1.0",
2125
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
2126
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
2127
+ "dev": true,
2128
+ "license": "MIT",
2129
+ "bin": {
2130
+ "jsesc": "bin/jsesc"
2131
+ },
2132
+ "engines": {
2133
+ "node": ">=6"
2134
+ }
2135
+ },
2136
+ "node_modules/json-buffer": {
2137
+ "version": "3.0.1",
2138
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
2139
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
2140
+ "dev": true,
2141
+ "license": "MIT"
2142
+ },
2143
+ "node_modules/json-schema-traverse": {
2144
+ "version": "0.4.1",
2145
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
2146
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
2147
+ "dev": true,
2148
+ "license": "MIT"
2149
+ },
2150
+ "node_modules/json-stable-stringify-without-jsonify": {
2151
+ "version": "1.0.1",
2152
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
2153
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
2154
+ "dev": true,
2155
+ "license": "MIT"
2156
+ },
2157
+ "node_modules/json5": {
2158
+ "version": "2.2.3",
2159
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
2160
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
2161
+ "dev": true,
2162
+ "license": "MIT",
2163
+ "bin": {
2164
+ "json5": "lib/cli.js"
2165
+ },
2166
+ "engines": {
2167
+ "node": ">=6"
2168
+ }
2169
+ },
2170
+ "node_modules/keyv": {
2171
+ "version": "4.5.4",
2172
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
2173
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
2174
+ "dev": true,
2175
+ "license": "MIT",
2176
+ "dependencies": {
2177
+ "json-buffer": "3.0.1"
2178
+ }
2179
+ },
2180
+ "node_modules/levn": {
2181
+ "version": "0.4.1",
2182
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
2183
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
2184
+ "dev": true,
2185
+ "license": "MIT",
2186
+ "dependencies": {
2187
+ "prelude-ls": "^1.2.1",
2188
+ "type-check": "~0.4.0"
2189
+ },
2190
+ "engines": {
2191
+ "node": ">= 0.8.0"
2192
+ }
2193
+ },
2194
+ "node_modules/locate-path": {
2195
+ "version": "6.0.0",
2196
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
2197
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
2198
+ "dev": true,
2199
+ "license": "MIT",
2200
+ "dependencies": {
2201
+ "p-locate": "^5.0.0"
2202
+ },
2203
+ "engines": {
2204
+ "node": ">=10"
2205
+ },
2206
+ "funding": {
2207
+ "url": "https://github.com/sponsors/sindresorhus"
2208
+ }
2209
+ },
2210
+ "node_modules/lodash.merge": {
2211
+ "version": "4.6.2",
2212
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
2213
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
2214
+ "dev": true,
2215
+ "license": "MIT"
2216
+ },
2217
+ "node_modules/lru-cache": {
2218
+ "version": "5.1.1",
2219
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
2220
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
2221
+ "dev": true,
2222
+ "license": "ISC",
2223
+ "dependencies": {
2224
+ "yallist": "^3.0.2"
2225
+ }
2226
+ },
2227
+ "node_modules/minimatch": {
2228
+ "version": "3.1.2",
2229
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
2230
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
2231
+ "dev": true,
2232
+ "license": "ISC",
2233
+ "dependencies": {
2234
+ "brace-expansion": "^1.1.7"
2235
+ },
2236
+ "engines": {
2237
+ "node": "*"
2238
+ }
2239
+ },
2240
+ "node_modules/ms": {
2241
+ "version": "2.1.3",
2242
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
2243
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
2244
+ "dev": true,
2245
+ "license": "MIT"
2246
+ },
2247
+ "node_modules/nanoid": {
2248
+ "version": "3.3.11",
2249
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
2250
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
2251
+ "dev": true,
2252
+ "funding": [
2253
+ {
2254
+ "type": "github",
2255
+ "url": "https://github.com/sponsors/ai"
2256
+ }
2257
+ ],
2258
+ "license": "MIT",
2259
+ "bin": {
2260
+ "nanoid": "bin/nanoid.cjs"
2261
+ },
2262
+ "engines": {
2263
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
2264
+ }
2265
+ },
2266
+ "node_modules/natural-compare": {
2267
+ "version": "1.4.0",
2268
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
2269
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
2270
+ "dev": true,
2271
+ "license": "MIT"
2272
+ },
2273
+ "node_modules/node-releases": {
2274
+ "version": "2.0.19",
2275
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
2276
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
2277
+ "dev": true,
2278
+ "license": "MIT"
2279
+ },
2280
+ "node_modules/optionator": {
2281
+ "version": "0.9.4",
2282
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
2283
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
2284
+ "dev": true,
2285
+ "license": "MIT",
2286
+ "dependencies": {
2287
+ "deep-is": "^0.1.3",
2288
+ "fast-levenshtein": "^2.0.6",
2289
+ "levn": "^0.4.1",
2290
+ "prelude-ls": "^1.2.1",
2291
+ "type-check": "^0.4.0",
2292
+ "word-wrap": "^1.2.5"
2293
+ },
2294
+ "engines": {
2295
+ "node": ">= 0.8.0"
2296
+ }
2297
+ },
2298
+ "node_modules/p-limit": {
2299
+ "version": "3.1.0",
2300
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
2301
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
2302
+ "dev": true,
2303
+ "license": "MIT",
2304
+ "dependencies": {
2305
+ "yocto-queue": "^0.1.0"
2306
+ },
2307
+ "engines": {
2308
+ "node": ">=10"
2309
+ },
2310
+ "funding": {
2311
+ "url": "https://github.com/sponsors/sindresorhus"
2312
+ }
2313
+ },
2314
+ "node_modules/p-locate": {
2315
+ "version": "5.0.0",
2316
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
2317
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
2318
+ "dev": true,
2319
+ "license": "MIT",
2320
+ "dependencies": {
2321
+ "p-limit": "^3.0.2"
2322
+ },
2323
+ "engines": {
2324
+ "node": ">=10"
2325
+ },
2326
+ "funding": {
2327
+ "url": "https://github.com/sponsors/sindresorhus"
2328
+ }
2329
+ },
2330
+ "node_modules/parent-module": {
2331
+ "version": "1.0.1",
2332
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
2333
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
2334
+ "dev": true,
2335
+ "license": "MIT",
2336
+ "dependencies": {
2337
+ "callsites": "^3.0.0"
2338
+ },
2339
+ "engines": {
2340
+ "node": ">=6"
2341
+ }
2342
+ },
2343
+ "node_modules/path-exists": {
2344
+ "version": "4.0.0",
2345
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
2346
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
2347
+ "dev": true,
2348
+ "license": "MIT",
2349
+ "engines": {
2350
+ "node": ">=8"
2351
+ }
2352
+ },
2353
+ "node_modules/path-key": {
2354
+ "version": "3.1.1",
2355
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
2356
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
2357
+ "dev": true,
2358
+ "license": "MIT",
2359
+ "engines": {
2360
+ "node": ">=8"
2361
+ }
2362
+ },
2363
+ "node_modules/picocolors": {
2364
+ "version": "1.1.1",
2365
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
2366
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
2367
+ "dev": true,
2368
+ "license": "ISC"
2369
+ },
2370
+ "node_modules/picomatch": {
2371
+ "version": "4.0.2",
2372
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
2373
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
2374
+ "dev": true,
2375
+ "license": "MIT",
2376
+ "engines": {
2377
+ "node": ">=12"
2378
+ },
2379
+ "funding": {
2380
+ "url": "https://github.com/sponsors/jonschlinkert"
2381
+ }
2382
+ },
2383
+ "node_modules/postcss": {
2384
+ "version": "8.5.3",
2385
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
2386
+ "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
2387
+ "dev": true,
2388
+ "funding": [
2389
+ {
2390
+ "type": "opencollective",
2391
+ "url": "https://opencollective.com/postcss/"
2392
+ },
2393
+ {
2394
+ "type": "tidelift",
2395
+ "url": "https://tidelift.com/funding/github/npm/postcss"
2396
+ },
2397
+ {
2398
+ "type": "github",
2399
+ "url": "https://github.com/sponsors/ai"
2400
+ }
2401
+ ],
2402
+ "license": "MIT",
2403
+ "dependencies": {
2404
+ "nanoid": "^3.3.8",
2405
+ "picocolors": "^1.1.1",
2406
+ "source-map-js": "^1.2.1"
2407
+ },
2408
+ "engines": {
2409
+ "node": "^10 || ^12 || >=14"
2410
+ }
2411
+ },
2412
+ "node_modules/prelude-ls": {
2413
+ "version": "1.2.1",
2414
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
2415
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
2416
+ "dev": true,
2417
+ "license": "MIT",
2418
+ "engines": {
2419
+ "node": ">= 0.8.0"
2420
+ }
2421
+ },
2422
+ "node_modules/punycode": {
2423
+ "version": "2.3.1",
2424
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
2425
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
2426
+ "dev": true,
2427
+ "license": "MIT",
2428
+ "engines": {
2429
+ "node": ">=6"
2430
+ }
2431
+ },
2432
+ "node_modules/react": {
2433
+ "version": "19.1.0",
2434
+ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
2435
+ "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
2436
+ "license": "MIT",
2437
+ "engines": {
2438
+ "node": ">=0.10.0"
2439
+ }
2440
+ },
2441
+ "node_modules/react-dom": {
2442
+ "version": "19.1.0",
2443
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
2444
+ "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
2445
+ "license": "MIT",
2446
+ "dependencies": {
2447
+ "scheduler": "^0.26.0"
2448
+ },
2449
+ "peerDependencies": {
2450
+ "react": "^19.1.0"
2451
+ }
2452
+ },
2453
+ "node_modules/react-refresh": {
2454
+ "version": "0.17.0",
2455
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
2456
+ "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
2457
+ "dev": true,
2458
+ "license": "MIT",
2459
+ "engines": {
2460
+ "node": ">=0.10.0"
2461
+ }
2462
+ },
2463
+ "node_modules/resolve-from": {
2464
+ "version": "4.0.0",
2465
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
2466
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
2467
+ "dev": true,
2468
+ "license": "MIT",
2469
+ "engines": {
2470
+ "node": ">=4"
2471
+ }
2472
+ },
2473
+ "node_modules/rollup": {
2474
+ "version": "4.40.0",
2475
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz",
2476
+ "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==",
2477
+ "dev": true,
2478
+ "license": "MIT",
2479
+ "dependencies": {
2480
+ "@types/estree": "1.0.7"
2481
+ },
2482
+ "bin": {
2483
+ "rollup": "dist/bin/rollup"
2484
+ },
2485
+ "engines": {
2486
+ "node": ">=18.0.0",
2487
+ "npm": ">=8.0.0"
2488
+ },
2489
+ "optionalDependencies": {
2490
+ "@rollup/rollup-android-arm-eabi": "4.40.0",
2491
+ "@rollup/rollup-android-arm64": "4.40.0",
2492
+ "@rollup/rollup-darwin-arm64": "4.40.0",
2493
+ "@rollup/rollup-darwin-x64": "4.40.0",
2494
+ "@rollup/rollup-freebsd-arm64": "4.40.0",
2495
+ "@rollup/rollup-freebsd-x64": "4.40.0",
2496
+ "@rollup/rollup-linux-arm-gnueabihf": "4.40.0",
2497
+ "@rollup/rollup-linux-arm-musleabihf": "4.40.0",
2498
+ "@rollup/rollup-linux-arm64-gnu": "4.40.0",
2499
+ "@rollup/rollup-linux-arm64-musl": "4.40.0",
2500
+ "@rollup/rollup-linux-loongarch64-gnu": "4.40.0",
2501
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0",
2502
+ "@rollup/rollup-linux-riscv64-gnu": "4.40.0",
2503
+ "@rollup/rollup-linux-riscv64-musl": "4.40.0",
2504
+ "@rollup/rollup-linux-s390x-gnu": "4.40.0",
2505
+ "@rollup/rollup-linux-x64-gnu": "4.40.0",
2506
+ "@rollup/rollup-linux-x64-musl": "4.40.0",
2507
+ "@rollup/rollup-win32-arm64-msvc": "4.40.0",
2508
+ "@rollup/rollup-win32-ia32-msvc": "4.40.0",
2509
+ "@rollup/rollup-win32-x64-msvc": "4.40.0",
2510
+ "fsevents": "~2.3.2"
2511
+ }
2512
+ },
2513
+ "node_modules/scheduler": {
2514
+ "version": "0.26.0",
2515
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
2516
+ "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
2517
+ "license": "MIT"
2518
+ },
2519
+ "node_modules/semver": {
2520
+ "version": "6.3.1",
2521
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
2522
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
2523
+ "dev": true,
2524
+ "license": "ISC",
2525
+ "bin": {
2526
+ "semver": "bin/semver.js"
2527
+ }
2528
+ },
2529
+ "node_modules/shebang-command": {
2530
+ "version": "2.0.0",
2531
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2532
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2533
+ "dev": true,
2534
+ "license": "MIT",
2535
+ "dependencies": {
2536
+ "shebang-regex": "^3.0.0"
2537
+ },
2538
+ "engines": {
2539
+ "node": ">=8"
2540
+ }
2541
+ },
2542
+ "node_modules/shebang-regex": {
2543
+ "version": "3.0.0",
2544
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2545
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2546
+ "dev": true,
2547
+ "license": "MIT",
2548
+ "engines": {
2549
+ "node": ">=8"
2550
+ }
2551
+ },
2552
+ "node_modules/source-map-js": {
2553
+ "version": "1.2.1",
2554
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
2555
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
2556
+ "dev": true,
2557
+ "license": "BSD-3-Clause",
2558
+ "engines": {
2559
+ "node": ">=0.10.0"
2560
+ }
2561
+ },
2562
+ "node_modules/strip-json-comments": {
2563
+ "version": "3.1.1",
2564
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
2565
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
2566
+ "dev": true,
2567
+ "license": "MIT",
2568
+ "engines": {
2569
+ "node": ">=8"
2570
+ },
2571
+ "funding": {
2572
+ "url": "https://github.com/sponsors/sindresorhus"
2573
+ }
2574
+ },
2575
+ "node_modules/supports-color": {
2576
+ "version": "7.2.0",
2577
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
2578
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2579
+ "dev": true,
2580
+ "license": "MIT",
2581
+ "dependencies": {
2582
+ "has-flag": "^4.0.0"
2583
+ },
2584
+ "engines": {
2585
+ "node": ">=8"
2586
+ }
2587
+ },
2588
+ "node_modules/tinyglobby": {
2589
+ "version": "0.2.12",
2590
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz",
2591
+ "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==",
2592
+ "dev": true,
2593
+ "license": "MIT",
2594
+ "dependencies": {
2595
+ "fdir": "^6.4.3",
2596
+ "picomatch": "^4.0.2"
2597
+ },
2598
+ "engines": {
2599
+ "node": ">=12.0.0"
2600
+ },
2601
+ "funding": {
2602
+ "url": "https://github.com/sponsors/SuperchupuDev"
2603
+ }
2604
+ },
2605
+ "node_modules/type-check": {
2606
+ "version": "0.4.0",
2607
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
2608
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
2609
+ "dev": true,
2610
+ "license": "MIT",
2611
+ "dependencies": {
2612
+ "prelude-ls": "^1.2.1"
2613
+ },
2614
+ "engines": {
2615
+ "node": ">= 0.8.0"
2616
+ }
2617
+ },
2618
+ "node_modules/update-browserslist-db": {
2619
+ "version": "1.1.3",
2620
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
2621
+ "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
2622
+ "dev": true,
2623
+ "funding": [
2624
+ {
2625
+ "type": "opencollective",
2626
+ "url": "https://opencollective.com/browserslist"
2627
+ },
2628
+ {
2629
+ "type": "tidelift",
2630
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
2631
+ },
2632
+ {
2633
+ "type": "github",
2634
+ "url": "https://github.com/sponsors/ai"
2635
+ }
2636
+ ],
2637
+ "license": "MIT",
2638
+ "dependencies": {
2639
+ "escalade": "^3.2.0",
2640
+ "picocolors": "^1.1.1"
2641
+ },
2642
+ "bin": {
2643
+ "update-browserslist-db": "cli.js"
2644
+ },
2645
+ "peerDependencies": {
2646
+ "browserslist": ">= 4.21.0"
2647
+ }
2648
+ },
2649
+ "node_modules/uri-js": {
2650
+ "version": "4.4.1",
2651
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
2652
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
2653
+ "dev": true,
2654
+ "license": "BSD-2-Clause",
2655
+ "dependencies": {
2656
+ "punycode": "^2.1.0"
2657
+ }
2658
+ },
2659
+ "node_modules/vite": {
2660
+ "version": "6.3.2",
2661
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.2.tgz",
2662
+ "integrity": "sha512-ZSvGOXKGceizRQIZSz7TGJ0pS3QLlVY/9hwxVh17W3re67je1RKYzFHivZ/t0tubU78Vkyb9WnHPENSBCzbckg==",
2663
+ "dev": true,
2664
+ "license": "MIT",
2665
+ "dependencies": {
2666
+ "esbuild": "^0.25.0",
2667
+ "fdir": "^6.4.3",
2668
+ "picomatch": "^4.0.2",
2669
+ "postcss": "^8.5.3",
2670
+ "rollup": "^4.34.9",
2671
+ "tinyglobby": "^0.2.12"
2672
+ },
2673
+ "bin": {
2674
+ "vite": "bin/vite.js"
2675
+ },
2676
+ "engines": {
2677
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
2678
+ },
2679
+ "funding": {
2680
+ "url": "https://github.com/vitejs/vite?sponsor=1"
2681
+ },
2682
+ "optionalDependencies": {
2683
+ "fsevents": "~2.3.3"
2684
+ },
2685
+ "peerDependencies": {
2686
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
2687
+ "jiti": ">=1.21.0",
2688
+ "less": "*",
2689
+ "lightningcss": "^1.21.0",
2690
+ "sass": "*",
2691
+ "sass-embedded": "*",
2692
+ "stylus": "*",
2693
+ "sugarss": "*",
2694
+ "terser": "^5.16.0",
2695
+ "tsx": "^4.8.1",
2696
+ "yaml": "^2.4.2"
2697
+ },
2698
+ "peerDependenciesMeta": {
2699
+ "@types/node": {
2700
+ "optional": true
2701
+ },
2702
+ "jiti": {
2703
+ "optional": true
2704
+ },
2705
+ "less": {
2706
+ "optional": true
2707
+ },
2708
+ "lightningcss": {
2709
+ "optional": true
2710
+ },
2711
+ "sass": {
2712
+ "optional": true
2713
+ },
2714
+ "sass-embedded": {
2715
+ "optional": true
2716
+ },
2717
+ "stylus": {
2718
+ "optional": true
2719
+ },
2720
+ "sugarss": {
2721
+ "optional": true
2722
+ },
2723
+ "terser": {
2724
+ "optional": true
2725
+ },
2726
+ "tsx": {
2727
+ "optional": true
2728
+ },
2729
+ "yaml": {
2730
+ "optional": true
2731
+ }
2732
+ }
2733
+ },
2734
+ "node_modules/which": {
2735
+ "version": "2.0.2",
2736
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2737
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2738
+ "dev": true,
2739
+ "license": "ISC",
2740
+ "dependencies": {
2741
+ "isexe": "^2.0.0"
2742
+ },
2743
+ "bin": {
2744
+ "node-which": "bin/node-which"
2745
+ },
2746
+ "engines": {
2747
+ "node": ">= 8"
2748
+ }
2749
+ },
2750
+ "node_modules/word-wrap": {
2751
+ "version": "1.2.5",
2752
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
2753
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
2754
+ "dev": true,
2755
+ "license": "MIT",
2756
+ "engines": {
2757
+ "node": ">=0.10.0"
2758
+ }
2759
+ },
2760
+ "node_modules/yallist": {
2761
+ "version": "3.1.1",
2762
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
2763
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
2764
+ "dev": true,
2765
+ "license": "ISC"
2766
+ },
2767
+ "node_modules/yocto-queue": {
2768
+ "version": "0.1.0",
2769
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
2770
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
2771
+ "dev": true,
2772
+ "license": "MIT",
2773
+ "engines": {
2774
+ "node": ">=10"
2775
+ },
2776
+ "funding": {
2777
+ "url": "https://github.com/sponsors/sindresorhus"
2778
+ }
2779
+ }
2780
+ }
2781
+ }
frontend/package.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "frontend",
3
+ "private": true,
4
+ "version": "0.0.0",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "vite build",
9
+ "lint": "eslint .",
10
+ "preview": "vite preview"
11
+ },
12
+ "dependencies": {
13
+ "react": "^19.0.0",
14
+ "react-dom": "^19.0.0"
15
+ },
16
+ "devDependencies": {
17
+ "@eslint/js": "^9.22.0",
18
+ "@types/react": "^19.0.10",
19
+ "@types/react-dom": "^19.0.4",
20
+ "@vitejs/plugin-react": "^4.3.4",
21
+ "eslint": "^9.22.0",
22
+ "eslint-plugin-react-hooks": "^5.2.0",
23
+ "eslint-plugin-react-refresh": "^0.4.19",
24
+ "globals": "^16.0.0",
25
+ "vite": "^6.3.1"
26
+ }
27
+ }
frontend/src/App.css ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .file-uploader {
2
+ margin-bottom: 2rem;
3
+ padding: 1rem;
4
+ border: 1px solid #ccc;
5
+ border-radius: 4px;
6
+ }
7
+
8
+ .file-uploader form {
9
+ display: flex;
10
+ gap: 1rem;
11
+ }
12
+
13
+ .file-uploader label {
14
+ font-weight: bold;
15
+ }
16
+
17
+ .file-uploader button {
18
+ padding: 0.5rem 1rem;
19
+ color: white;
20
+ border: none;
21
+ border-radius: 4px;
22
+ cursor: pointer;
23
+ }
24
+
25
+ .file-uploader button:disabled {
26
+ background-color: #cccccc;
27
+ cursor: not-allowed;
28
+ }
29
+
30
+ .file-uploader .message {
31
+ margin-top: 1rem;
32
+ padding: 0.5rem;
33
+ border-radius: 4px;
34
+ }
35
+
36
+ /* Additional css for the layout changes */
37
+ .app-root {
38
+ display: flex;
39
+ flex-direction: column;
40
+ height: 100vh;
41
+ overflow: hidden; /* prevents the page from scrolling */
42
+ }
43
+
44
+ .branding {
45
+ text-align: center;
46
+ margin-top: 1rem;
47
+ }
48
+
49
+ .logo {
50
+ max-width: 250px;
51
+ margin-bottom: 1rem;
52
+ }
53
+
54
+ .chat-section {
55
+ flex: 1;
56
+ display: flex;
57
+ flex-direction: column;
58
+ overflow-y: auto;
59
+ padding: 1rem 20px;
60
+ }
61
+
62
+ .chat-mode .content {
63
+ justify-content: flex-start;
64
+ }
65
+
66
+ .initial-mode .content {
67
+ display: flex;
68
+ align-items: center;
69
+ justify-content: center;
70
+ }
71
+
72
+ .footer-uploader {
73
+ padding: 1rem 20px;
74
+ background: var(--background);
75
+ border-top: 1px solid var(--primary-light);
76
+ display: flex;
77
+ justify-content: center;
78
+ flex-shrink: 0;
79
+ }
80
+
81
+ .footer-uploader.bottom {
82
+ margin-top: auto;
83
+ }
84
+
85
+ .question-input-row {
86
+ display: flex;
87
+ gap: 1rem;
88
+ padding: 0 20px;
89
+ align-items: flex-end;
90
+ }
91
+
92
+ .question-input-row textarea {
93
+ flex: 1;
94
+ resize: vertical;
95
+ min-height: 40px; /* optional: keep it from growing unnecessarily */
96
+ padding: 0.5rem;
97
+ font-family: inherit;
98
+ border: 1px solid var(--primary);
99
+ border-radius: 4px;
100
+ }
101
+
102
+ .question-input-row button {
103
+ padding: 0.5rem 1rem;
104
+ height: 40px; /* matches min-height of textarea */
105
+ margin: 0; /* reset accidental spacing */
106
+ border-radius: 4px;
107
+ background-color: var(--primary);
108
+ color: white;
109
+ border: none;
110
+ cursor: pointer;
111
+ }
112
+
113
+ .question-input-row button:disabled {
114
+ background-color: var(--primary-light);
115
+ cursor: not-allowed;
116
+ }
117
+
118
+ .question-input-row textarea:focus {
119
+ outline: 2px solid var(--primary);
120
+ outline-offset: 2px;
121
+ }
122
+
123
+ .question-input-row button:hover:not(:disabled) {
124
+ background-color: var(--primary-dark);
125
+ }
frontend/src/App.jsx ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import FileUploader from './components/FileUploader'
2
+ import ChatBox from './components/ChatBox'
3
+ import { useState } from 'react'
4
+ import './App.css' // Layout styles
5
+
6
+ function App() {
7
+ const [fileUploaded, setFileUploaded] = useState(false)
8
+
9
+ return (
10
+ <div className={`app-root ${fileUploaded ? 'chat-mode' : 'initial-mode'}`}>
11
+ <div className="branding">
12
+ {/* TODO: Replace branding logo and app title with your own */}
13
+ <img
14
+ src="/logo_light_transparent.png"
15
+ alt="Your Logo"
16
+ className="logo"
17
+ />
18
+ <h1>AI Agent Chat Template</h1>
19
+ </div>
20
+
21
+ {fileUploaded && (
22
+ <div className="chat-section">
23
+ {/* TODO: Customize ChatBox behavior, styling, or replace it entirely */}
24
+ <ChatBox />
25
+ </div>
26
+ )}
27
+
28
+ <div className="footer-uploader">
29
+ {/* TODO: Replace FileUploader or bypass if not needed */}
30
+ <FileUploader onUploadSuccess={() => setFileUploaded(true)} />
31
+ </div>
32
+ </div>
33
+ )
34
+ }
35
+
36
+ export default App
frontend/src/components/ChatBox.jsx ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useState } from 'react'
2
+ import { getApiUrl } from '../utils/env'
3
+
4
+ export default function ChatBox() {
5
+ const [question, setQuestion] = useState('')
6
+ const [response, setResponse] = useState('')
7
+ const [isStreaming, setIsStreaming] = useState(false)
8
+ const [endpoint, setEndpoint] = useState('/ask') // or '/agent'
9
+
10
+ const askQuestion = async (e) => {
11
+ e.preventDefault()
12
+ if (!question.trim()) return
13
+
14
+ setIsStreaming(true)
15
+ setResponse('')
16
+
17
+ try {
18
+ const formData = new FormData()
19
+ formData.append(endpoint === '/ask' ? 'question' : 'query', question) // flexible
20
+
21
+ const res = await fetch(`${getApiUrl()}${endpoint}`, {
22
+ method: 'POST',
23
+ body: formData,
24
+ })
25
+
26
+ if (!res.ok) {
27
+ // Try to parse the error response
28
+ try {
29
+ const errorData = await res.json()
30
+ throw new Error(errorData.error || `HTTP error! status: ${res.status}`)
31
+ } catch (e) {
32
+ // If parsing fails, use the status text
33
+ throw new Error(`HTTP error! status: ${res.status}`)
34
+ }
35
+ }
36
+
37
+ if (res.body) {
38
+ const reader = res.body.getReader()
39
+ const decoder = new TextDecoder('utf-8')
40
+ while (true) {
41
+ const { done, value } = await reader.read()
42
+ if (done) break
43
+ const text = decoder.decode(value)
44
+ try {
45
+ const parsed = JSON.parse(text);
46
+ setResponse(prev => prev + (parsed.response || text));
47
+ } catch {
48
+ setResponse(prev => prev + text);
49
+ }
50
+ }
51
+ } else {
52
+ const data = await res.json()
53
+ setResponse(data.response || 'No response received')
54
+ }
55
+ } catch (error) {
56
+ console.error('Error:', error)
57
+ setResponse('Error: ' + error.message)
58
+ } finally {
59
+ setIsStreaming(false)
60
+ }
61
+ }
62
+
63
+ return (
64
+ <>
65
+ {/* TODO: Customize this UI based on your agent or query-based backend */}
66
+ <div className="response-panel" data-testid="response-panel">
67
+ {response || 'Response will appear here...'}
68
+ </div>
69
+
70
+ <div className="question-input-row">
71
+ <textarea
72
+ data-testid="question-input"
73
+ rows={3}
74
+ value={question}
75
+ onChange={(e) => setQuestion(e.target.value)}
76
+ placeholder="Ask a question..."
77
+ />
78
+
79
+ <select
80
+ value={endpoint}
81
+ onChange={(e) => setEndpoint(e.target.value)}
82
+ disabled={isStreaming}
83
+ >
84
+ <option value="/ask">RAG (/ask)</option>
85
+ <option value="/agent">Agent (/agent)</option>
86
+ </select>
87
+
88
+ <button onClick={askQuestion} disabled={isStreaming}>
89
+ {isStreaming ? 'Thinking…' : 'Ask'}
90
+ </button>
91
+ </div>
92
+ </>
93
+ )
94
+ }
frontend/src/components/FileUploader.jsx ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useState } from 'react'
2
+ import { getApiUrl } from '../utils/env'
3
+
4
+ function FileUploader({ onUploadSuccess }) {
5
+ const [file, setFile] = useState(null)
6
+ const [uploading, setUploading] = useState(false)
7
+ const [message, setMessage] = useState('')
8
+
9
+ const handleFileChange = (e) => {
10
+ setFile(e.target.files[0])
11
+ setMessage('')
12
+ }
13
+
14
+ const uploadFile = async (e) => {
15
+ e.preventDefault()
16
+ if (!file) {
17
+ setMessage('Please select a file first')
18
+ return
19
+ }
20
+
21
+ setUploading(true)
22
+ setMessage('')
23
+
24
+ const formData = new FormData()
25
+ formData.append('file', file)
26
+
27
+ try {
28
+ // TODO: This endpoint expects a backend route POST /upload
29
+ const response = await fetch(`${getApiUrl()}/upload`, {
30
+ method: 'POST',
31
+ body: formData,
32
+ })
33
+
34
+ if (!response.ok) {
35
+ throw new Error(`Upload failed with status: ${response.status}`)
36
+ }
37
+
38
+ const data = await response.json()
39
+ setMessage(data.message || 'Upload successful!')
40
+ setFile(null)
41
+ if (onUploadSuccess) onUploadSuccess()
42
+ } catch (error) {
43
+ console.error('Upload error:', error)
44
+ setMessage('Upload error: ' + error.message)
45
+ } finally {
46
+ setUploading(false)
47
+ }
48
+ }
49
+
50
+ return (
51
+ <div className="file-uploader">
52
+ {/* TODO: Replace or style this component for your use case */}
53
+ <form onSubmit={uploadFile} role="form">
54
+ <label htmlFor="file-input">File:</label>
55
+ <input
56
+ id="file-input"
57
+ type="file"
58
+ onChange={handleFileChange}
59
+ disabled={uploading}
60
+ />
61
+ <button type="submit" disabled={!file || uploading}>
62
+ {uploading ? 'Uploading...' : 'Upload'}
63
+ </button>
64
+ </form>
65
+
66
+ {message && (
67
+ <p className="message" data-testid="upload-message">
68
+ {message}
69
+ </p>
70
+ )}
71
+ </div>
72
+ )
73
+ }
74
+
75
+ export default FileUploader
frontend/src/index.css ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ :root {
2
+ --background: hsl(34, 78%, 91%);
3
+ --paper: hsl(0, 0%, 100%);
4
+ --primary: hsl(150, 8%, 67%);
5
+ --primary-dark: hsl(150, 8%, 47%);
6
+ --primary-light: hsl(150, 8%, 87%);
7
+ }
8
+
9
+ #root {
10
+ flex: 1;
11
+ display: flex;
12
+ flex-direction: column;
13
+ padding: 0;
14
+ text-align: left;
15
+ }
16
+
17
+ body {
18
+ margin: 0;
19
+ padding: 0;
20
+ font-family: sans-serif;
21
+ height: 100vh;
22
+ display: flex;
23
+ flex-direction: column;
24
+ background: var(--background);
25
+ }
26
+
27
+ .response-panel {
28
+ flex: 1;
29
+ border: 1px solid var(--primary);
30
+ padding: 1rem;
31
+ overflow-y: auto;
32
+ background: var(--paper);
33
+ border-radius: 8px;
34
+ white-space: pre-wrap;
35
+ margin: 0px 10px 10px 10px;
36
+ }
37
+
38
+ button {
39
+ padding: 0.5rem 1rem;
40
+ font-weight: bold;
41
+ cursor: pointer;
42
+ background: var(--primary);
43
+ color: white;
44
+ border: none;
45
+ border-radius: 4px;
46
+ margin: 0px 10px 0px 10px;
47
+ }
48
+
49
+ button:hover {
50
+ background: var(--primary-dark);
51
+ }
frontend/src/main.jsx ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Entry point for the frontend app
2
+ // TODO: Add app-wide context providers here (e.g., theme, analytics)
3
+
4
+ import { StrictMode } from 'react'
5
+ import { createRoot } from 'react-dom/client'
6
+ import './index.css'
7
+ import App from './App.jsx'
8
+
9
+ // TODO: Remove this log after verifying API setup
10
+ console.log("🌐 VITE_API_URL is:", import.meta.env.VITE_API_URL)
11
+
12
+ createRoot(document.getElementById('root')).render(
13
+ <StrictMode>
14
+ <App />
15
+ </StrictMode>
16
+ )
frontend/src/utils/env.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ export const getApiUrl = () => {
2
+ const url = import.meta.env.VITE_API_URL || 'http://localhost:7860'
3
+ console.log("📦 VITE_API_URL (in env.js):", url)
4
+ return url
5
+ }
frontend/vite.config.js ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ import { defineConfig } from 'vite'
2
+ import react from '@vitejs/plugin-react'
3
+
4
+ // https://vite.dev/config/
5
+ export default defineConfig({
6
+ plugins: [react()],
7
+ // TODO: Add custom config here if needed (e.g., base, envDir, aliases)
8
+ })