Spaces:
Build error
Build error
Commit ·
9f6d021
1
Parent(s): 33b5408
graph is ready, debugging
Browse files- .cursor/rules/python-rules.mdc +110 -0
- .vscode/launch.json +16 -0
- .windsurfrules +107 -0
- Pipfile +7 -1
- Pipfile.lock +877 -235
- claer +82 -0
- instructions/diagrams/AppFlow.excalidraw +2820 -0
- instructions/diagrams/AppFlow.png +0 -0
- instructions/diagrams/AppFlow_Simplified.excalidraw +2140 -0
- instructions/diagrams/AppFlow_Simplified.png +0 -0
- instructions/instructions.MD +1 -2
- streamlit_app/__init__.py +0 -0
- streamlit_app/config.py +25 -0
- streamlit_app/env/.env.example +3 -0
- streamlit_app/graph/chains.py +186 -0
- streamlit_app/graph/configSchema.py +4 -2
- streamlit_app/graph/state.py +10 -9
- streamlit_app/graph/workflow.py +147 -86
- streamlit_app/main.py +87 -50
- streamlit_app/stt_tts/__init__.py +0 -0
- streamlit_app/stt_tts/models.py +18 -6
.cursor/rules/python-rules.mdc
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
description: Rules for python development
|
| 3 |
+
globs: streamlit_app/**/*.py
|
| 4 |
+
---
|
| 5 |
+
# Role Definition
|
| 6 |
+
|
| 7 |
+
- You are a **Python master**, a highly experienced **tutor**, a **world-renowned ML engineer**, and a **talented data scientist**.
|
| 8 |
+
- You possess exceptional coding skills and a deep understanding of Python's best practices, design patterns, and idioms.
|
| 9 |
+
- You are adept at identifying and preventing potential errors, and you prioritize writing efficient and maintainable code.
|
| 10 |
+
- You are skilled in explaining complex concepts in a clear and concise manner, making you an effective mentor and educator.
|
| 11 |
+
- You are recognized for your contributions to the field of machine learning and have a strong track record of developing and deploying successful ML models.
|
| 12 |
+
- As a talented data scientist, you excel at data analysis, visualization, and deriving actionable insights from complex datasets.
|
| 13 |
+
|
| 14 |
+
# Technology Stack
|
| 15 |
+
|
| 16 |
+
- **Python Version:** Python 3.11+
|
| 17 |
+
- **Dependency Management:** Pipenv
|
| 18 |
+
- **Code Formatting:** Ruff (replaces `black`, `isort`, `flake8`)
|
| 19 |
+
- **Type Hinting:** Strictly use the `typing` module. All functions, methods, and class members must have type annotations.
|
| 20 |
+
- **Testing Framework:** `pytest`
|
| 21 |
+
- **Documentation:** Google style docstring
|
| 22 |
+
- **Environment Management:** 'Pipenv'
|
| 23 |
+
- **Containerization:** `docker`, `docker-compose`
|
| 24 |
+
- **Asynchronous Programming:** Prefer `async` and `await`
|
| 25 |
+
<!-- - **Web Framework:** `fastapi` -->
|
| 26 |
+
- **Demo Framework:** `streamlit`
|
| 27 |
+
- **LLM Framework:** `langchain`, `transformers`, `langgraph`
|
| 28 |
+
- **Vector Database:** `faiss`, `chroma` (optional)
|
| 29 |
+
<!-- - **Experiment Tracking:** `mlflow`, `tensorboard` (optional)
|
| 30 |
+
- **Hyperparameter Optimization:** `optuna`, `hyperopt` (optional) -->
|
| 31 |
+
- **Data Processing:** `pandas`, `numpy`, `dask` (optional), `pyspark` (optional)
|
| 32 |
+
- **Version Control:** `git`
|
| 33 |
+
<!-- - **Server:** `gunicorn`, `uvicorn` (with `nginx` or `caddy`) -->
|
| 34 |
+
- **Process Management:** `systemd`, `supervisor`
|
| 35 |
+
|
| 36 |
+
# Coding Guidelines
|
| 37 |
+
|
| 38 |
+
## 1. Pythonic Practices
|
| 39 |
+
|
| 40 |
+
- **Elegance and Readability:** Strive for elegant and Pythonic code that is easy to understand and maintain.
|
| 41 |
+
- **PEP 8 Compliance:** Adhere to PEP 8 guidelines for code style, with Ruff as the primary linter and formatter.
|
| 42 |
+
- **Explicit over Implicit:** Favor explicit code that clearly communicates its intent over implicit, overly concise code.
|
| 43 |
+
- **Zen of Python:** Keep the Zen of Python in mind when making design decisions.
|
| 44 |
+
|
| 45 |
+
## 2. Modular Design
|
| 46 |
+
|
| 47 |
+
- **Single Responsibility Principle:** Each module/file should have a well-defined, single responsibility.
|
| 48 |
+
- **Reusable Components:** Develop reusable functions and classes, favoring composition over inheritance.
|
| 49 |
+
- **Package Structure:** Organize code into logical packages and modules.
|
| 50 |
+
|
| 51 |
+
## 3. Code Quality
|
| 52 |
+
|
| 53 |
+
- **Comprehensive Type Annotations:** All functions, methods, and class members must have type annotations, using the most specific types possible.
|
| 54 |
+
- **Detailed Docstrings:** All functions, methods, and classes must have Google-style docstrings, thoroughly explaining their purpose, parameters, return values, and any exceptions raised. Include usage examples where helpful.
|
| 55 |
+
- **Thorough Unit Testing:** Aim for high test coverage (90% or higher) using `pytest`. Test both common cases and edge cases.
|
| 56 |
+
- **Robust Exception Handling:** Use specific exception types, provide informative error messages, and handle exceptions gracefully. Implement custom exception classes when needed. Avoid bare `except` clauses.
|
| 57 |
+
- **Logging:** Employ the `logging` module judiciously to log important events, warnings, and errors.
|
| 58 |
+
|
| 59 |
+
<!-- ## 4. ML/AI Specific Guidelines
|
| 60 |
+
|
| 61 |
+
- **Experiment Configuration:** Use `hydra` or `yaml` for clear and reproducible experiment configurations.
|
| 62 |
+
- **Data Pipeline Management:** Employ scripts or tools like `dvc` to manage data preprocessing and ensure reproducibility.
|
| 63 |
+
- **Model Versioning:** Utilize `git-lfs` or cloud storage to track and manage model checkpoints effectively.
|
| 64 |
+
- **Experiment Logging:** Maintain comprehensive logs of experiments, including parameters, results, and environmental details.
|
| 65 |
+
- **LLM Prompt Engineering:** Dedicate a module or files for managing Prompt templates with version control.
|
| 66 |
+
- **Context Handling:** Implement efficient context management for conversations, using suitable data structures like deques. -->
|
| 67 |
+
|
| 68 |
+
## 5. Performance Optimization
|
| 69 |
+
|
| 70 |
+
- **Asynchronous Programming:** Leverage `async` and `await` for I/O-bound operations to maximize concurrency.
|
| 71 |
+
- **Caching:** Apply `functools.lru_cache`, `@cache` (Python 3.9+), or `fastapi.Depends` caching where appropriate.
|
| 72 |
+
- **Resource Monitoring:** Use `psutil` or similar to monitor resource usage and identify bottlenecks.
|
| 73 |
+
- **Memory Efficiency:** Ensure proper release of unused resources to prevent memory leaks.
|
| 74 |
+
- **Concurrency:** Employ `concurrent.futures` or `asyncio` to manage concurrent tasks effectively.
|
| 75 |
+
- **Database Best Practices:** Design database schemas efficiently, optimize queries, and use indexes wisely.
|
| 76 |
+
|
| 77 |
+
<!-- ## 6. API Development with FastAPI
|
| 78 |
+
|
| 79 |
+
- **Data Validation:** Use Pydantic models for rigorous request and response data validation.
|
| 80 |
+
- **Dependency Injection:** Effectively use FastAPI's dependency injection for managing dependencies.
|
| 81 |
+
- **Routing:** Define clear and RESTful API routes using FastAPI's `APIRouter`.
|
| 82 |
+
- **Background Tasks:** Utilize FastAPI's `BackgroundTasks` or integrate with Celery for background processing.
|
| 83 |
+
- **Security:** Implement robust authentication and authorization (e.g., OAuth 2.0, JWT).
|
| 84 |
+
- **Documentation:** Auto-generate API documentation using FastAPI's OpenAPI support.
|
| 85 |
+
- **Versioning:** Plan for API versioning from the start (e.g., using URL prefixes or headers).
|
| 86 |
+
- **CORS:** Configure Cross-Origin Resource Sharing (CORS) settings correctly.
|
| 87 |
+
-->
|
| 88 |
+
# Code Example Requirements
|
| 89 |
+
|
| 90 |
+
- All functions must include type annotations.
|
| 91 |
+
- Must provide clear, Google-style docstrings.
|
| 92 |
+
- Key logic should be annotated with comments.
|
| 93 |
+
- Provide usage examples (e.g., in the `tests/` directory or as a `__main__` section).
|
| 94 |
+
- Include error handling.
|
| 95 |
+
- Use `ruff` for code formatting.
|
| 96 |
+
|
| 97 |
+
# Others
|
| 98 |
+
|
| 99 |
+
- **Prioritize new features in Python 3.11+.**
|
| 100 |
+
- **When explaining code, provide clear logical explanations and code comments.**
|
| 101 |
+
- **When making suggestions, explain the rationale and potential trade-offs.**
|
| 102 |
+
- **If code examples span multiple files, clearly indicate the file name.**
|
| 103 |
+
- **Do not over-engineer solutions. Strive for simplicity and maintainability while still being efficient.**
|
| 104 |
+
- **Favor modularity, but avoid over-modularization.**
|
| 105 |
+
- **Use the most modern and efficient libraries when appropriate, but justify their use and ensure they don't add unnecessary complexity.**
|
| 106 |
+
- **When providing solutions or examples, ensure they are self-contained and executable without requiring extensive modifications.**
|
| 107 |
+
- **If a request is unclear or lacks sufficient information, ask clarifying questions before proceeding.**
|
| 108 |
+
- **Always consider the security implications of your code, especially when dealing with user inputs and external data.**
|
| 109 |
+
- **Actively use and promote best practices for the specific tasks at hand (LLM app development, data cleaning, demo creation, etc.).**
|
| 110 |
+
|
.vscode/launch.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
// Use IntelliSense to learn about possible attributes.
|
| 3 |
+
// Hover to view descriptions of existing attributes.
|
| 4 |
+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
| 5 |
+
"version": "0.2.0",
|
| 6 |
+
"configurations": [
|
| 7 |
+
|
| 8 |
+
{
|
| 9 |
+
"name": "Python Debugger: Current File",
|
| 10 |
+
"type": "debugpy",
|
| 11 |
+
"request": "launch",
|
| 12 |
+
"program": "${file}",
|
| 13 |
+
"console": "integratedTerminal"
|
| 14 |
+
}
|
| 15 |
+
]
|
| 16 |
+
}
|
.windsurfrules
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
# Role Definition
|
| 3 |
+
|
| 4 |
+
- You are a **Python master**, a highly experienced **tutor**, a **world-renowned ML engineer**, and a **talented data scientist**.
|
| 5 |
+
- You possess exceptional coding skills and a deep understanding of Python's best practices, design patterns, and idioms.
|
| 6 |
+
- You are adept at identifying and preventing potential errors, and you prioritize writing efficient and maintainable code.
|
| 7 |
+
- You are skilled in explaining complex concepts in a clear and concise manner, making you an effective mentor and educator.
|
| 8 |
+
- You are recognized for your contributions to the field of machine learning and have a strong track record of developing and deploying successful ML models.
|
| 9 |
+
- As a talented data scientist, you excel at data analysis, visualization, and deriving actionable insights from complex datasets.
|
| 10 |
+
|
| 11 |
+
# Technology Stack
|
| 12 |
+
|
| 13 |
+
- **Python Version:** Python 3.11+
|
| 14 |
+
- **Dependency Management:** Pipenv
|
| 15 |
+
- **Code Formatting:** Ruff (replaces `black`, `isort`, `flake8`)
|
| 16 |
+
- **Type Hinting:** Strictly use the `typing` module. All functions, methods, and class members must have type annotations.
|
| 17 |
+
- **Testing Framework:** `pytest`
|
| 18 |
+
- **Documentation:** Google style docstring
|
| 19 |
+
- **Environment Management:** 'Pipenv'
|
| 20 |
+
- **Containerization:** `docker`, `docker-compose`
|
| 21 |
+
- **Asynchronous Programming:** Prefer `async` and `await`
|
| 22 |
+
<!-- - **Web Framework:** `fastapi` -->
|
| 23 |
+
- **Demo Framework:** `streamlit`
|
| 24 |
+
- **LLM Framework:** `langchain`, `transformers`, `langgraph`
|
| 25 |
+
- **Vector Database:** `faiss`, `chroma` (optional)
|
| 26 |
+
<!-- - **Experiment Tracking:** `mlflow`, `tensorboard` (optional)
|
| 27 |
+
- **Hyperparameter Optimization:** `optuna`, `hyperopt` (optional) -->
|
| 28 |
+
- **Data Processing:** `pandas`, `numpy`, `dask` (optional), `pyspark` (optional)
|
| 29 |
+
- **Version Control:** `git`
|
| 30 |
+
<!-- - **Server:** `gunicorn`, `uvicorn` (with `nginx` or `caddy`) -->
|
| 31 |
+
- **Process Management:** `systemd`, `supervisor`
|
| 32 |
+
|
| 33 |
+
# Coding Guidelines
|
| 34 |
+
|
| 35 |
+
## 1. Pythonic Practices
|
| 36 |
+
|
| 37 |
+
- **Elegance and Readability:** Strive for elegant and Pythonic code that is easy to understand and maintain.
|
| 38 |
+
- **PEP 8 Compliance:** Adhere to PEP 8 guidelines for code style, with Ruff as the primary linter and formatter.
|
| 39 |
+
- **Explicit over Implicit:** Favor explicit code that clearly communicates its intent over implicit, overly concise code.
|
| 40 |
+
- **Zen of Python:** Keep the Zen of Python in mind when making design decisions.
|
| 41 |
+
|
| 42 |
+
## 2. Modular Design
|
| 43 |
+
|
| 44 |
+
- **Single Responsibility Principle:** Each module/file should have a well-defined, single responsibility.
|
| 45 |
+
- **Reusable Components:** Develop reusable functions and classes, favoring composition over inheritance.
|
| 46 |
+
- **Package Structure:** Organize code into logical packages and modules.
|
| 47 |
+
|
| 48 |
+
## 3. Code Quality
|
| 49 |
+
|
| 50 |
+
- **Comprehensive Type Annotations:** All functions, methods, and class members must have type annotations, using the most specific types possible.
|
| 51 |
+
- **Detailed Docstrings:** All functions, methods, and classes must have Google-style docstrings, thoroughly explaining their purpose, parameters, return values, and any exceptions raised. Include usage examples where helpful.
|
| 52 |
+
- **Thorough Unit Testing:** Aim for high test coverage (90% or higher) using `pytest`. Test both common cases and edge cases.
|
| 53 |
+
- **Robust Exception Handling:** Use specific exception types, provide informative error messages, and handle exceptions gracefully. Implement custom exception classes when needed. Avoid bare `except` clauses.
|
| 54 |
+
- **Logging:** Employ the `logging` module judiciously to log important events, warnings, and errors.
|
| 55 |
+
|
| 56 |
+
<!-- ## 4. ML/AI Specific Guidelines
|
| 57 |
+
|
| 58 |
+
- **Experiment Configuration:** Use `hydra` or `yaml` for clear and reproducible experiment configurations.
|
| 59 |
+
- **Data Pipeline Management:** Employ scripts or tools like `dvc` to manage data preprocessing and ensure reproducibility.
|
| 60 |
+
- **Model Versioning:** Utilize `git-lfs` or cloud storage to track and manage model checkpoints effectively.
|
| 61 |
+
- **Experiment Logging:** Maintain comprehensive logs of experiments, including parameters, results, and environmental details.
|
| 62 |
+
- **LLM Prompt Engineering:** Dedicate a module or files for managing Prompt templates with version control.
|
| 63 |
+
- **Context Handling:** Implement efficient context management for conversations, using suitable data structures like deques. -->
|
| 64 |
+
|
| 65 |
+
## 5. Performance Optimization
|
| 66 |
+
|
| 67 |
+
- **Asynchronous Programming:** Leverage `async` and `await` for I/O-bound operations to maximize concurrency.
|
| 68 |
+
- **Caching:** Apply `functools.lru_cache`, `@cache` (Python 3.9+), or `fastapi.Depends` caching where appropriate.
|
| 69 |
+
- **Resource Monitoring:** Use `psutil` or similar to monitor resource usage and identify bottlenecks.
|
| 70 |
+
- **Memory Efficiency:** Ensure proper release of unused resources to prevent memory leaks.
|
| 71 |
+
- **Concurrency:** Employ `concurrent.futures` or `asyncio` to manage concurrent tasks effectively.
|
| 72 |
+
- **Database Best Practices:** Design database schemas efficiently, optimize queries, and use indexes wisely.
|
| 73 |
+
|
| 74 |
+
<!-- ## 6. API Development with FastAPI
|
| 75 |
+
|
| 76 |
+
- **Data Validation:** Use Pydantic models for rigorous request and response data validation.
|
| 77 |
+
- **Dependency Injection:** Effectively use FastAPI's dependency injection for managing dependencies.
|
| 78 |
+
- **Routing:** Define clear and RESTful API routes using FastAPI's `APIRouter`.
|
| 79 |
+
- **Background Tasks:** Utilize FastAPI's `BackgroundTasks` or integrate with Celery for background processing.
|
| 80 |
+
- **Security:** Implement robust authentication and authorization (e.g., OAuth 2.0, JWT).
|
| 81 |
+
- **Documentation:** Auto-generate API documentation using FastAPI's OpenAPI support.
|
| 82 |
+
- **Versioning:** Plan for API versioning from the start (e.g., using URL prefixes or headers).
|
| 83 |
+
- **CORS:** Configure Cross-Origin Resource Sharing (CORS) settings correctly.
|
| 84 |
+
-->
|
| 85 |
+
# Code Example Requirements
|
| 86 |
+
|
| 87 |
+
- All functions must include type annotations.
|
| 88 |
+
- Must provide clear, Google-style docstrings.
|
| 89 |
+
- Key logic should be annotated with comments.
|
| 90 |
+
- Provide usage examples (e.g., in the `tests/` directory or as a `__main__` section).
|
| 91 |
+
- Include error handling.
|
| 92 |
+
- Use `ruff` for code formatting.
|
| 93 |
+
|
| 94 |
+
# Others
|
| 95 |
+
|
| 96 |
+
- **Prioritize new features in Python 3.11+.**
|
| 97 |
+
- **When explaining code, provide clear logical explanations and code comments.**
|
| 98 |
+
- **When making suggestions, explain the rationale and potential trade-offs.**
|
| 99 |
+
- **If code examples span multiple files, clearly indicate the file name.**
|
| 100 |
+
- **Do not over-engineer solutions. Strive for simplicity and maintainability while still being efficient.**
|
| 101 |
+
- **Favor modularity, but avoid over-modularization.**
|
| 102 |
+
- **Use the most modern and efficient libraries when appropriate, but justify their use and ensure they don't add unnecessary complexity.**
|
| 103 |
+
- **When providing solutions or examples, ensure they are self-contained and executable without requiring extensive modifications.**
|
| 104 |
+
- **If a request is unclear or lacks sufficient information, ask clarifying questions before proceeding.**
|
| 105 |
+
- **Always consider the security implications of your code, especially when dealing with user inputs and external data.**
|
| 106 |
+
- **Actively use and promote best practices for the specific tasks at hand (LLM app development, data cleaning, demo creation, etc.).**
|
| 107 |
+
|
Pipfile
CHANGED
|
@@ -10,8 +10,14 @@ torch = "*"
|
|
| 10 |
torchaudio = "*"
|
| 11 |
tts = "*"
|
| 12 |
python-dotenv = "*"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
[dev-packages]
|
| 15 |
|
| 16 |
[requires]
|
| 17 |
-
python_version = "3.
|
|
|
|
| 10 |
torchaudio = "*"
|
| 11 |
tts = "*"
|
| 12 |
python-dotenv = "*"
|
| 13 |
+
langgraph = "*"
|
| 14 |
+
langchain-google-genai = "*"
|
| 15 |
+
langchain = "*"
|
| 16 |
+
langchain-core = "*"
|
| 17 |
+
pydantic = "*"
|
| 18 |
+
sox = "*"
|
| 19 |
|
| 20 |
[dev-packages]
|
| 21 |
|
| 22 |
[requires]
|
| 23 |
+
python_version = "3.11"
|
Pipfile.lock
CHANGED
|
@@ -1,11 +1,11 @@
|
|
| 1 |
{
|
| 2 |
"_meta": {
|
| 3 |
"hash": {
|
| 4 |
-
"sha256": "
|
| 5 |
},
|
| 6 |
"pipfile-spec": 6,
|
| 7 |
"requires": {
|
| 8 |
-
"python_version": "3.
|
| 9 |
},
|
| 10 |
"sources": [
|
| 11 |
{
|
|
@@ -151,13 +151,13 @@
|
|
| 151 |
"markers": "python_version >= '3.3'",
|
| 152 |
"version": "==0.3.2"
|
| 153 |
},
|
| 154 |
-
"
|
| 155 |
"hashes": [
|
| 156 |
-
"sha256:
|
| 157 |
-
"sha256:
|
| 158 |
],
|
| 159 |
-
"markers": "python_version
|
| 160 |
-
"version": "==
|
| 161 |
},
|
| 162 |
"attrs": {
|
| 163 |
"hashes": [
|
|
@@ -467,53 +467,63 @@
|
|
| 467 |
},
|
| 468 |
"contourpy": {
|
| 469 |
"hashes": [
|
| 470 |
-
"sha256:
|
| 471 |
-
"sha256:
|
| 472 |
-
"sha256:
|
| 473 |
-
"sha256:
|
| 474 |
-
"sha256:
|
| 475 |
-
"sha256:
|
| 476 |
-
"sha256:
|
| 477 |
-
"sha256:
|
| 478 |
-
"sha256:
|
| 479 |
-
"sha256:
|
| 480 |
-
"sha256:
|
| 481 |
-
"sha256:
|
| 482 |
-
"sha256:
|
| 483 |
-
"sha256:
|
| 484 |
-
"sha256:
|
| 485 |
-
"sha256:
|
| 486 |
-
"sha256:
|
| 487 |
-
"sha256:
|
| 488 |
-
"sha256:
|
| 489 |
-
"sha256:
|
| 490 |
-
"sha256:
|
| 491 |
-
"sha256:
|
| 492 |
-
"sha256:
|
| 493 |
-
"sha256:
|
| 494 |
-
"sha256:
|
| 495 |
-
"sha256:
|
| 496 |
-
"sha256:
|
| 497 |
-
"sha256:
|
| 498 |
-
"sha256:
|
| 499 |
-
"sha256:
|
| 500 |
-
"sha256:
|
| 501 |
-
"sha256:
|
| 502 |
-
"sha256:
|
| 503 |
-
"sha256:
|
| 504 |
-
"sha256:
|
| 505 |
-
"sha256:
|
| 506 |
-
"sha256:
|
| 507 |
-
"sha256:
|
| 508 |
-
"sha256:
|
| 509 |
-
"sha256:
|
| 510 |
-
"sha256:
|
| 511 |
-
"sha256:
|
| 512 |
-
"sha256:
|
| 513 |
-
"sha256:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 514 |
],
|
| 515 |
-
"markers": "python_version >= '3.
|
| 516 |
-
"version": "==1.
|
| 517 |
},
|
| 518 |
"coqpit": {
|
| 519 |
"hashes": [
|
|
@@ -687,6 +697,13 @@
|
|
| 687 |
"markers": "python_version >= '3.9'",
|
| 688 |
"version": "==3.17.0"
|
| 689 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 690 |
"flask": {
|
| 691 |
"hashes": [
|
| 692 |
"sha256:5f873c5184c897c8d9d1b05df1e3d01b14910ce69607a117bd3277098a5836ac",
|
|
@@ -881,6 +898,142 @@
|
|
| 881 |
"markers": "python_version >= '3.7'",
|
| 882 |
"version": "==3.1.44"
|
| 883 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 884 |
"grpcio": {
|
| 885 |
"hashes": [
|
| 886 |
"sha256:0495c86a55a04a874c7627fd33e5beaee771917d92c0e6d9d797628ac40e7655",
|
|
@@ -942,6 +1095,13 @@
|
|
| 942 |
"markers": "python_version >= '3.8'",
|
| 943 |
"version": "==1.70.0"
|
| 944 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 945 |
"gruut": {
|
| 946 |
"extras": [
|
| 947 |
"de",
|
|
@@ -985,6 +1145,14 @@
|
|
| 985 |
],
|
| 986 |
"version": "==2.0.2"
|
| 987 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 988 |
"hangul-romanize": {
|
| 989 |
"hashes": [
|
| 990 |
"sha256:7b8ba54b624ca3b17b2c9394b971cd595c4240a31cc0fc6bc1c3e971eca8c4d5",
|
|
@@ -992,6 +1160,30 @@
|
|
| 992 |
],
|
| 993 |
"version": "==0.1.0"
|
| 994 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 995 |
"huggingface-hub": {
|
| 996 |
"hashes": [
|
| 997 |
"sha256:893471090c98e3b6efbdfdacafe4052b20b84d59866fb6f54c33d9af18c303ae",
|
|
@@ -1061,6 +1253,22 @@
|
|
| 1061 |
],
|
| 1062 |
"version": "==1.2.0"
|
| 1063 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1064 |
"jsonschema": {
|
| 1065 |
"hashes": [
|
| 1066 |
"sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4",
|
|
@@ -1163,6 +1371,41 @@
|
|
| 1163 |
"markers": "python_version >= '3.10'",
|
| 1164 |
"version": "==1.4.8"
|
| 1165 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1166 |
"langcodes": {
|
| 1167 |
"hashes": [
|
| 1168 |
"sha256:1eef8168d07e51e131a2497ffecad4b663f6208e7c3ae3b8dc15c51734a6f801",
|
|
@@ -1171,6 +1414,39 @@
|
|
| 1171 |
"markers": "python_version >= '3.9'",
|
| 1172 |
"version": "==3.5.0"
|
| 1173 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1174 |
"language-data": {
|
| 1175 |
"hashes": [
|
| 1176 |
"sha256:7600ef8aa39555145d06c89f0c324bf7dab834ea0b0a439d8243762e3ebad7ec",
|
|
@@ -1188,38 +1464,38 @@
|
|
| 1188 |
},
|
| 1189 |
"librosa": {
|
| 1190 |
"hashes": [
|
| 1191 |
-
"sha256:
|
| 1192 |
-
"sha256:
|
| 1193 |
],
|
| 1194 |
"markers": "python_version >= '3.7'",
|
| 1195 |
-
"version": "==0.10.
|
| 1196 |
},
|
| 1197 |
"llvmlite": {
|
| 1198 |
"hashes": [
|
| 1199 |
-
"sha256:
|
| 1200 |
-
"sha256:
|
| 1201 |
-
"sha256:
|
| 1202 |
-
"sha256:
|
| 1203 |
-
"sha256:
|
| 1204 |
-
"sha256:
|
| 1205 |
-
"sha256:
|
| 1206 |
-
"sha256:
|
| 1207 |
-
"sha256:
|
| 1208 |
-
"sha256:
|
| 1209 |
-
"sha256:
|
| 1210 |
-
"sha256:
|
| 1211 |
-
"sha256:
|
| 1212 |
-
"sha256:
|
| 1213 |
-
"sha256:
|
| 1214 |
-
"sha256:
|
| 1215 |
-
"sha256:
|
| 1216 |
-
"sha256:
|
| 1217 |
-
"sha256:
|
| 1218 |
-
"sha256:
|
| 1219 |
-
"sha256:
|
| 1220 |
],
|
| 1221 |
-
"markers": "python_version >= '3.
|
| 1222 |
-
"version": "==0.
|
| 1223 |
},
|
| 1224 |
"marisa-trie": {
|
| 1225 |
"hashes": [
|
|
@@ -1388,37 +1664,43 @@
|
|
| 1388 |
},
|
| 1389 |
"matplotlib": {
|
| 1390 |
"hashes": [
|
| 1391 |
-
"sha256:
|
| 1392 |
-
"sha256:
|
| 1393 |
-
"sha256:
|
| 1394 |
-
"sha256:
|
| 1395 |
-
"sha256:
|
| 1396 |
-
"sha256:
|
| 1397 |
-
"sha256:
|
| 1398 |
-
"sha256:
|
| 1399 |
-
"sha256:
|
| 1400 |
-
"sha256:
|
| 1401 |
-
"sha256:
|
| 1402 |
-
"sha256:
|
| 1403 |
-
"sha256:
|
| 1404 |
-
"sha256:
|
| 1405 |
-
"sha256:
|
| 1406 |
-
"sha256:
|
| 1407 |
-
"sha256:
|
| 1408 |
-
"sha256:
|
| 1409 |
-
"sha256:
|
| 1410 |
-
"sha256:
|
| 1411 |
-
"sha256:
|
| 1412 |
-
"sha256:
|
| 1413 |
-
"sha256:
|
| 1414 |
-
"sha256:
|
| 1415 |
-
"sha256:
|
| 1416 |
-
"sha256:
|
| 1417 |
-
"sha256:
|
| 1418 |
-
"sha256:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1419 |
],
|
| 1420 |
-
"markers": "python_version >= '3.
|
| 1421 |
-
"version": "==3.
|
| 1422 |
},
|
| 1423 |
"mdurl": {
|
| 1424 |
"hashes": [
|
|
@@ -1686,58 +1968,72 @@
|
|
| 1686 |
},
|
| 1687 |
"numba": {
|
| 1688 |
"hashes": [
|
| 1689 |
-
"sha256:
|
| 1690 |
-
"sha256:
|
| 1691 |
-
"sha256:
|
| 1692 |
-
"sha256:
|
| 1693 |
-
"sha256:
|
| 1694 |
-
"sha256:
|
| 1695 |
-
"sha256:
|
| 1696 |
-
"sha256:
|
| 1697 |
-
"sha256:
|
| 1698 |
-
"sha256:
|
| 1699 |
-
"sha256:
|
| 1700 |
-
"sha256:
|
| 1701 |
-
"sha256:
|
| 1702 |
-
"sha256:
|
| 1703 |
-
"sha256:
|
| 1704 |
-
"sha256:
|
| 1705 |
-
"sha256:
|
| 1706 |
-
"sha256:
|
| 1707 |
-
"sha256:
|
| 1708 |
-
"sha256:
|
| 1709 |
-
"sha256:
|
| 1710 |
],
|
| 1711 |
"markers": "python_version >= '3.9'",
|
| 1712 |
-
"version": "==0.
|
| 1713 |
},
|
| 1714 |
"numpy": {
|
| 1715 |
"hashes": [
|
| 1716 |
-
"sha256:
|
| 1717 |
-
"sha256:
|
| 1718 |
-
"sha256:
|
| 1719 |
-
"sha256:
|
| 1720 |
-
"sha256:
|
| 1721 |
-
"sha256:
|
| 1722 |
-
"sha256:
|
| 1723 |
-
"sha256:
|
| 1724 |
-
"sha256:
|
| 1725 |
-
"sha256:
|
| 1726 |
-
"sha256:
|
| 1727 |
-
"sha256:
|
| 1728 |
-
"sha256:
|
| 1729 |
-
"sha256:
|
| 1730 |
-
"sha256:
|
| 1731 |
-
"sha256:
|
| 1732 |
-
"sha256:
|
| 1733 |
-
"sha256:
|
| 1734 |
-
"sha256:
|
| 1735 |
-
"sha256:
|
| 1736 |
-
"sha256:
|
| 1737 |
-
"sha256:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1738 |
],
|
| 1739 |
-
"markers": "python_version >= '3.
|
| 1740 |
-
"version": "==1.
|
| 1741 |
},
|
| 1742 |
"nvidia-cublas-cu12": {
|
| 1743 |
"hashes": [
|
|
@@ -1819,6 +2115,15 @@
|
|
| 1819 |
"markers": "platform_system == 'Linux' and platform_machine == 'x86_64'",
|
| 1820 |
"version": "==12.3.1.170"
|
| 1821 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1822 |
"nvidia-nccl-cu12": {
|
| 1823 |
"hashes": [
|
| 1824 |
"sha256:8579076d30a8c24988834445f8d633c697d42397e92ffc3f63fa26766d25e0a0"
|
|
@@ -1852,6 +2157,91 @@
|
|
| 1852 |
"markers": "python_version >= '3.8'",
|
| 1853 |
"version": "==20240930"
|
| 1854 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1855 |
"packaging": {
|
| 1856 |
"hashes": [
|
| 1857 |
"sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759",
|
|
@@ -2113,6 +2503,14 @@
|
|
| 2113 |
"markers": "python_version >= '3.9'",
|
| 2114 |
"version": "==0.2.1"
|
| 2115 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2116 |
"protobuf": {
|
| 2117 |
"hashes": [
|
| 2118 |
"sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f",
|
|
@@ -2201,6 +2599,22 @@
|
|
| 2201 |
"markers": "python_version >= '3.9'",
|
| 2202 |
"version": "==19.0.0"
|
| 2203 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2204 |
"pycparser": {
|
| 2205 |
"hashes": [
|
| 2206 |
"sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6",
|
|
@@ -2214,6 +2628,7 @@
|
|
| 2214 |
"sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584",
|
| 2215 |
"sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"
|
| 2216 |
],
|
|
|
|
| 2217 |
"markers": "python_version >= '3.8'",
|
| 2218 |
"version": "==2.10.6"
|
| 2219 |
},
|
|
@@ -2629,6 +3044,14 @@
|
|
| 2629 |
"markers": "python_version >= '3.8'",
|
| 2630 |
"version": "==2.32.3"
|
| 2631 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2632 |
"rich": {
|
| 2633 |
"hashes": [
|
| 2634 |
"sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098",
|
|
@@ -2746,6 +3169,14 @@
|
|
| 2746 |
"markers": "python_version >= '3.9'",
|
| 2747 |
"version": "==0.22.3"
|
| 2748 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2749 |
"safetensors": {
|
| 2750 |
"hashes": [
|
| 2751 |
"sha256:03c937100f38c9ff4c1507abea9928a6a9b02c9c1c9c3609ed4fb2bf413d4975",
|
|
@@ -2805,34 +3236,49 @@
|
|
| 2805 |
},
|
| 2806 |
"scipy": {
|
| 2807 |
"hashes": [
|
| 2808 |
-
"sha256:
|
| 2809 |
-
"sha256:
|
| 2810 |
-
"sha256:
|
| 2811 |
-
"sha256:
|
| 2812 |
-
"sha256:
|
| 2813 |
-
"sha256:
|
| 2814 |
-
"sha256:
|
| 2815 |
-
"sha256:
|
| 2816 |
-
"sha256:
|
| 2817 |
-
"sha256:
|
| 2818 |
-
"sha256:
|
| 2819 |
-
"sha256:
|
| 2820 |
-
"sha256:
|
| 2821 |
-
"sha256:
|
| 2822 |
-
"sha256:
|
| 2823 |
-
"sha256:
|
| 2824 |
-
"sha256:
|
| 2825 |
-
"sha256:
|
| 2826 |
-
"sha256:
|
| 2827 |
-
"sha256:
|
| 2828 |
-
"sha256:
|
| 2829 |
-
"sha256:
|
| 2830 |
-
"sha256:
|
| 2831 |
-
"sha256:
|
| 2832 |
-
"sha256:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2833 |
],
|
| 2834 |
-
"markers": "python_version >= '3.
|
| 2835 |
-
"version": "==1.
|
| 2836 |
},
|
| 2837 |
"setuptools": {
|
| 2838 |
"hashes": [
|
|
@@ -2874,6 +3320,14 @@
|
|
| 2874 |
"markers": "python_version >= '3.7'",
|
| 2875 |
"version": "==5.0.2"
|
| 2876 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2877 |
"soundfile": {
|
| 2878 |
"hashes": [
|
| 2879 |
"sha256:03267c4e493315294834a0870f31dbb3b28a95561b80b134f0bd3cf2d5f0e618",
|
|
@@ -2887,6 +3341,13 @@
|
|
| 2887 |
],
|
| 2888 |
"version": "==0.13.1"
|
| 2889 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2890 |
"soxr": {
|
| 2891 |
"hashes": [
|
| 2892 |
"sha256:39e0f791ba178d69cd676485dbee37e75a34f20daa478d90341ecb7f6d9d690f",
|
|
@@ -2954,6 +3415,69 @@
|
|
| 2954 |
"markers": "python_version >= '3.6'",
|
| 2955 |
"version": "==1.0.5"
|
| 2956 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2957 |
"srsly": {
|
| 2958 |
"hashes": [
|
| 2959 |
"sha256:00c2a3e4856e63b7efd47591d049aaee8e5a250e098917f50d93ea68853fab78",
|
|
@@ -2998,12 +3522,12 @@
|
|
| 2998 |
},
|
| 2999 |
"streamlit": {
|
| 3000 |
"hashes": [
|
| 3001 |
-
"sha256:
|
| 3002 |
-
"sha256:
|
| 3003 |
],
|
| 3004 |
"index": "pypi",
|
| 3005 |
-
"markers": "python_version >= '3.
|
| 3006 |
-
"version": "==1.
|
| 3007 |
},
|
| 3008 |
"sudachidict-core": {
|
| 3009 |
"hashes": [
|
|
@@ -3053,10 +3577,10 @@
|
|
| 3053 |
},
|
| 3054 |
"tensorboard": {
|
| 3055 |
"hashes": [
|
| 3056 |
-
"sha256:
|
| 3057 |
],
|
| 3058 |
"markers": "python_version >= '3.9'",
|
| 3059 |
-
"version": "==2.
|
| 3060 |
},
|
| 3061 |
"tensorboard-data-server": {
|
| 3062 |
"hashes": [
|
|
@@ -3170,49 +3694,56 @@
|
|
| 3170 |
},
|
| 3171 |
"torch": {
|
| 3172 |
"hashes": [
|
| 3173 |
-
"sha256:
|
| 3174 |
-
"sha256:
|
| 3175 |
-
"sha256:
|
| 3176 |
-
"sha256:
|
| 3177 |
-
"sha256:
|
| 3178 |
-
"sha256:
|
| 3179 |
-
"sha256:
|
| 3180 |
-
"sha256:
|
| 3181 |
-
"sha256:
|
| 3182 |
-
"sha256:
|
| 3183 |
-
"sha256:
|
| 3184 |
-
"sha256:
|
| 3185 |
-
"sha256:
|
| 3186 |
-
"sha256:
|
| 3187 |
-
"sha256:
|
| 3188 |
-
"sha256:
|
| 3189 |
-
"sha256:
|
|
|
|
|
|
|
|
|
|
| 3190 |
],
|
| 3191 |
"index": "pypi",
|
| 3192 |
-
"markers": "python_full_version >= '3.
|
| 3193 |
-
"version": "==2.
|
| 3194 |
},
|
| 3195 |
"torchaudio": {
|
| 3196 |
"hashes": [
|
| 3197 |
-
"sha256:
|
| 3198 |
-
"sha256:
|
| 3199 |
-
"sha256:
|
| 3200 |
-
"sha256:
|
| 3201 |
-
"sha256:
|
| 3202 |
-
"sha256:
|
| 3203 |
-
"sha256:
|
| 3204 |
-
"sha256:
|
| 3205 |
-
"sha256:
|
| 3206 |
-
"sha256:
|
| 3207 |
-
"sha256:
|
| 3208 |
-
"sha256:
|
| 3209 |
-
"sha256:
|
| 3210 |
-
"sha256:
|
| 3211 |
-
"sha256:
|
| 3212 |
-
"sha256:
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3213 |
],
|
| 3214 |
"index": "pypi",
|
| 3215 |
-
"version": "==2.
|
| 3216 |
},
|
| 3217 |
"tornado": {
|
| 3218 |
"hashes": [
|
|
@@ -3257,14 +3788,14 @@
|
|
| 3257 |
},
|
| 3258 |
"triton": {
|
| 3259 |
"hashes": [
|
| 3260 |
-
"sha256:
|
| 3261 |
-
"sha256:
|
| 3262 |
-
"sha256:
|
| 3263 |
-
"sha256:
|
| 3264 |
-
"sha256:
|
| 3265 |
],
|
| 3266 |
-
"markers": "
|
| 3267 |
-
"version": "==3.
|
| 3268 |
},
|
| 3269 |
"tts": {
|
| 3270 |
"hashes": [
|
|
@@ -3303,11 +3834,11 @@
|
|
| 3303 |
},
|
| 3304 |
"tzlocal": {
|
| 3305 |
"hashes": [
|
| 3306 |
-
"sha256:
|
| 3307 |
-
"sha256:
|
| 3308 |
],
|
| 3309 |
-
"markers": "python_version >= '3.
|
| 3310 |
-
"version": "==5.
|
| 3311 |
},
|
| 3312 |
"umap-learn": {
|
| 3313 |
"hashes": [
|
|
@@ -3324,6 +3855,14 @@
|
|
| 3324 |
"markers": "python_version >= '3.5'",
|
| 3325 |
"version": "==1.3.8"
|
| 3326 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3327 |
"urllib3": {
|
| 3328 |
"hashes": [
|
| 3329 |
"sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df",
|
|
@@ -3564,6 +4103,109 @@
|
|
| 3564 |
],
|
| 3565 |
"markers": "python_version >= '3.9'",
|
| 3566 |
"version": "==1.18.3"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3567 |
}
|
| 3568 |
},
|
| 3569 |
"develop": {}
|
|
|
|
| 1 |
{
|
| 2 |
"_meta": {
|
| 3 |
"hash": {
|
| 4 |
+
"sha256": "4a7b41a97a228d1c5a6f7666ec49f031aad9b57aff5a418b221ad899870f2656"
|
| 5 |
},
|
| 6 |
"pipfile-spec": 6,
|
| 7 |
"requires": {
|
| 8 |
+
"python_version": "3.11"
|
| 9 |
},
|
| 10 |
"sources": [
|
| 11 |
{
|
|
|
|
| 151 |
"markers": "python_version >= '3.3'",
|
| 152 |
"version": "==0.3.2"
|
| 153 |
},
|
| 154 |
+
"anyio": {
|
| 155 |
"hashes": [
|
| 156 |
+
"sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a",
|
| 157 |
+
"sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"
|
| 158 |
],
|
| 159 |
+
"markers": "python_version >= '3.9'",
|
| 160 |
+
"version": "==4.8.0"
|
| 161 |
},
|
| 162 |
"attrs": {
|
| 163 |
"hashes": [
|
|
|
|
| 467 |
},
|
| 468 |
"contourpy": {
|
| 469 |
"hashes": [
|
| 470 |
+
"sha256:041b640d4ec01922083645a94bb3b2e777e6b626788f4095cf21abbe266413c1",
|
| 471 |
+
"sha256:05e806338bfeaa006acbdeba0ad681a10be63b26e1b17317bfac3c5d98f36cda",
|
| 472 |
+
"sha256:08d9d449a61cf53033612cb368f3a1b26cd7835d9b8cd326647efe43bca7568d",
|
| 473 |
+
"sha256:0ffa84be8e0bd33410b17189f7164c3589c229ce5db85798076a3fa136d0e509",
|
| 474 |
+
"sha256:113231fe3825ebf6f15eaa8bc1f5b0ddc19d42b733345eae0934cb291beb88b6",
|
| 475 |
+
"sha256:14c102b0eab282427b662cb590f2e9340a9d91a1c297f48729431f2dcd16e14f",
|
| 476 |
+
"sha256:174e758c66bbc1c8576992cec9599ce8b6672b741b5d336b5c74e35ac382b18e",
|
| 477 |
+
"sha256:19c1555a6801c2f084c7ddc1c6e11f02eb6a6016ca1318dd5452ba3f613a1751",
|
| 478 |
+
"sha256:19d40d37c1c3a4961b4619dd9d77b12124a453cc3d02bb31a07d58ef684d3d86",
|
| 479 |
+
"sha256:1bf98051f1045b15c87868dbaea84f92408337d4f81d0e449ee41920ea121d3b",
|
| 480 |
+
"sha256:20914c8c973f41456337652a6eeca26d2148aa96dd7ac323b74516988bea89fc",
|
| 481 |
+
"sha256:287ccc248c9e0d0566934e7d606201abd74761b5703d804ff3df8935f523d546",
|
| 482 |
+
"sha256:2ba94a401342fc0f8b948e57d977557fbf4d515f03c67682dd5c6191cb2d16ec",
|
| 483 |
+
"sha256:31c1b55c1f34f80557d3830d3dd93ba722ce7e33a0b472cba0ec3b6535684d8f",
|
| 484 |
+
"sha256:36987a15e8ace5f58d4d5da9dca82d498c2bbb28dff6e5d04fbfcc35a9cb3a82",
|
| 485 |
+
"sha256:3a04ecd68acbd77fa2d39723ceca4c3197cb2969633836ced1bea14e219d077c",
|
| 486 |
+
"sha256:3e8b974d8db2c5610fb4e76307e265de0edb655ae8169e8b21f41807ccbeec4b",
|
| 487 |
+
"sha256:3ea9924d28fc5586bf0b42d15f590b10c224117e74409dd7a0be3b62b74a501c",
|
| 488 |
+
"sha256:4318af1c925fb9a4fb190559ef3eec206845f63e80fb603d47f2d6d67683901c",
|
| 489 |
+
"sha256:44a29502ca9c7b5ba389e620d44f2fbe792b1fb5734e8b931ad307071ec58c53",
|
| 490 |
+
"sha256:47734d7073fb4590b4a40122b35917cd77be5722d80683b249dac1de266aac80",
|
| 491 |
+
"sha256:4d76d5993a34ef3df5181ba3c92fabb93f1eaa5729504fb03423fcd9f3177242",
|
| 492 |
+
"sha256:4dbbc03a40f916a8420e420d63e96a1258d3d1b58cbdfd8d1f07b49fcbd38e85",
|
| 493 |
+
"sha256:500360b77259914f7805af7462e41f9cb7ca92ad38e9f94d6c8641b089338124",
|
| 494 |
+
"sha256:523a8ee12edfa36f6d2a49407f705a6ef4c5098de4f498619787e272de93f2d5",
|
| 495 |
+
"sha256:573abb30e0e05bf31ed067d2f82500ecfdaec15627a59d63ea2d95714790f5c2",
|
| 496 |
+
"sha256:5b75aa69cb4d6f137b36f7eb2ace9280cfb60c55dc5f61c731fdf6f037f958a3",
|
| 497 |
+
"sha256:61332c87493b00091423e747ea78200659dc09bdf7fd69edd5e98cef5d3e9a8d",
|
| 498 |
+
"sha256:805617228ba7e2cbbfb6c503858e626ab528ac2a32a04a2fe88ffaf6b02c32bc",
|
| 499 |
+
"sha256:841ad858cff65c2c04bf93875e384ccb82b654574a6d7f30453a04f04af71342",
|
| 500 |
+
"sha256:89785bb2a1980c1bd87f0cb1517a71cde374776a5f150936b82580ae6ead44a1",
|
| 501 |
+
"sha256:8eb96e79b9f3dcadbad2a3891672f81cdcab7f95b27f28f1c67d75f045b6b4f1",
|
| 502 |
+
"sha256:974d8145f8ca354498005b5b981165b74a195abfae9a8129df3e56771961d595",
|
| 503 |
+
"sha256:9ddeb796389dadcd884c7eb07bd14ef12408aaae358f0e2ae24114d797eede30",
|
| 504 |
+
"sha256:a045f341a77b77e1c5de31e74e966537bba9f3c4099b35bf4c2e3939dd54cdab",
|
| 505 |
+
"sha256:a0cffcbede75c059f535725c1680dfb17b6ba8753f0c74b14e6a9c68c29d7ea3",
|
| 506 |
+
"sha256:a761d9ccfc5e2ecd1bf05534eda382aa14c3e4f9205ba5b1684ecfe400716ef2",
|
| 507 |
+
"sha256:a7895f46d47671fa7ceec40f31fae721da51ad34bdca0bee83e38870b1f47ffd",
|
| 508 |
+
"sha256:a9fa36448e6a3a1a9a2ba23c02012c43ed88905ec80163f2ffe2421c7192a5d7",
|
| 509 |
+
"sha256:ab29962927945d89d9b293eabd0d59aea28d887d4f3be6c22deaefbb938a7277",
|
| 510 |
+
"sha256:abbb49fb7dac584e5abc6636b7b2a7227111c4f771005853e7d25176daaf8453",
|
| 511 |
+
"sha256:ac4578ac281983f63b400f7fe6c101bedc10651650eef012be1ccffcbacf3697",
|
| 512 |
+
"sha256:adce39d67c0edf383647a3a007de0a45fd1b08dedaa5318404f1a73059c2512b",
|
| 513 |
+
"sha256:ade08d343436a94e633db932e7e8407fe7de8083967962b46bdfc1b0ced39454",
|
| 514 |
+
"sha256:b2bdca22a27e35f16794cf585832e542123296b4687f9fd96822db6bae17bfc9",
|
| 515 |
+
"sha256:b2f926efda994cdf3c8d3fdb40b9962f86edbc4457e739277b961eced3d0b4c1",
|
| 516 |
+
"sha256:b457d6430833cee8e4b8e9b6f07aa1c161e5e0d52e118dc102c8f9bd7dd060d6",
|
| 517 |
+
"sha256:c414fc1ed8ee1dbd5da626cf3710c6013d3d27456651d156711fa24f24bd1291",
|
| 518 |
+
"sha256:cb76c1a154b83991a3cbbf0dfeb26ec2833ad56f95540b442c73950af2013750",
|
| 519 |
+
"sha256:dfd97abd83335045a913e3bcc4a09c0ceadbe66580cf573fe961f4a825efa699",
|
| 520 |
+
"sha256:e914a8cb05ce5c809dd0fe350cfbb4e881bde5e2a38dc04e3afe1b3e58bd158e",
|
| 521 |
+
"sha256:ece6df05e2c41bd46776fbc712e0996f7c94e0d0543af1656956d150c4ca7c81",
|
| 522 |
+
"sha256:efa874e87e4a647fd2e4f514d5e91c7d493697127beb95e77d2f7561f6905bd9",
|
| 523 |
+
"sha256:f611e628ef06670df83fce17805c344710ca5cde01edfdc72751311da8585375"
|
| 524 |
],
|
| 525 |
+
"markers": "python_version >= '3.10'",
|
| 526 |
+
"version": "==1.3.1"
|
| 527 |
},
|
| 528 |
"coqpit": {
|
| 529 |
"hashes": [
|
|
|
|
| 697 |
"markers": "python_version >= '3.9'",
|
| 698 |
"version": "==3.17.0"
|
| 699 |
},
|
| 700 |
+
"filetype": {
|
| 701 |
+
"hashes": [
|
| 702 |
+
"sha256:66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb",
|
| 703 |
+
"sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25"
|
| 704 |
+
],
|
| 705 |
+
"version": "==1.2.0"
|
| 706 |
+
},
|
| 707 |
"flask": {
|
| 708 |
"hashes": [
|
| 709 |
"sha256:5f873c5184c897c8d9d1b05df1e3d01b14910ce69607a117bd3277098a5836ac",
|
|
|
|
| 898 |
"markers": "python_version >= '3.7'",
|
| 899 |
"version": "==3.1.44"
|
| 900 |
},
|
| 901 |
+
"google-ai-generativelanguage": {
|
| 902 |
+
"hashes": [
|
| 903 |
+
"sha256:5a03ef86377aa184ffef3662ca28f19eeee158733e45d7947982eb953c6ebb6c",
|
| 904 |
+
"sha256:8f6d9dc4c12b065fe2d0289026171acea5183ebf2d0b11cefe12f3821e159ec3"
|
| 905 |
+
],
|
| 906 |
+
"markers": "python_version >= '3.7'",
|
| 907 |
+
"version": "==0.6.15"
|
| 908 |
+
},
|
| 909 |
+
"google-api-core": {
|
| 910 |
+
"extras": [
|
| 911 |
+
"grpc"
|
| 912 |
+
],
|
| 913 |
+
"hashes": [
|
| 914 |
+
"sha256:bc78d608f5a5bf853b80bd70a795f703294de656c096c0968320830a4bc280f1",
|
| 915 |
+
"sha256:f8b36f5456ab0dd99a1b693a40a31d1e7757beea380ad1b38faaf8941eae9d8a"
|
| 916 |
+
],
|
| 917 |
+
"markers": "python_version >= '3.7'",
|
| 918 |
+
"version": "==2.24.1"
|
| 919 |
+
},
|
| 920 |
+
"google-api-python-client": {
|
| 921 |
+
"hashes": [
|
| 922 |
+
"sha256:63d61fb3e4cf3fb31a70a87f45567c22f6dfe87bbfa27252317e3e2c42900db4",
|
| 923 |
+
"sha256:a8ccafaecfa42d15d5b5c3134ced8de08380019717fc9fb1ed510ca58eca3b7e"
|
| 924 |
+
],
|
| 925 |
+
"markers": "python_version >= '3.7'",
|
| 926 |
+
"version": "==2.160.0"
|
| 927 |
+
},
|
| 928 |
+
"google-auth": {
|
| 929 |
+
"hashes": [
|
| 930 |
+
"sha256:8285113607d3b80a3f1543b75962447ba8a09fe85783432a784fdeef6ac094c4",
|
| 931 |
+
"sha256:e7dae6694313f434a2727bf2906f27ad259bae090d7aa896590d86feec3d9d4a"
|
| 932 |
+
],
|
| 933 |
+
"markers": "python_version >= '3.7'",
|
| 934 |
+
"version": "==2.38.0"
|
| 935 |
+
},
|
| 936 |
+
"google-auth-httplib2": {
|
| 937 |
+
"hashes": [
|
| 938 |
+
"sha256:38aa7badf48f974f1eb9861794e9c0cb2a0511a4ec0679b1f886d108f5640e05",
|
| 939 |
+
"sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d"
|
| 940 |
+
],
|
| 941 |
+
"version": "==0.2.0"
|
| 942 |
+
},
|
| 943 |
+
"google-generativeai": {
|
| 944 |
+
"hashes": [
|
| 945 |
+
"sha256:e987b33ea6decde1e69191ddcaec6ef974458864d243de7191db50c21a7c5b82"
|
| 946 |
+
],
|
| 947 |
+
"markers": "python_version >= '3.9'",
|
| 948 |
+
"version": "==0.8.4"
|
| 949 |
+
},
|
| 950 |
+
"googleapis-common-protos": {
|
| 951 |
+
"hashes": [
|
| 952 |
+
"sha256:21398025365f138be356d5923e9168737d94d46a72aefee4a6110a1f23463c86",
|
| 953 |
+
"sha256:579de760800d13616f51cf8be00c876f00a9f146d3e6510e19d1f4111758b741"
|
| 954 |
+
],
|
| 955 |
+
"markers": "python_version >= '3.7'",
|
| 956 |
+
"version": "==1.67.0"
|
| 957 |
+
},
|
| 958 |
+
"greenlet": {
|
| 959 |
+
"hashes": [
|
| 960 |
+
"sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e",
|
| 961 |
+
"sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7",
|
| 962 |
+
"sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01",
|
| 963 |
+
"sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1",
|
| 964 |
+
"sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159",
|
| 965 |
+
"sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563",
|
| 966 |
+
"sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83",
|
| 967 |
+
"sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9",
|
| 968 |
+
"sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395",
|
| 969 |
+
"sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa",
|
| 970 |
+
"sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942",
|
| 971 |
+
"sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1",
|
| 972 |
+
"sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441",
|
| 973 |
+
"sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22",
|
| 974 |
+
"sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9",
|
| 975 |
+
"sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0",
|
| 976 |
+
"sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba",
|
| 977 |
+
"sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3",
|
| 978 |
+
"sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1",
|
| 979 |
+
"sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6",
|
| 980 |
+
"sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291",
|
| 981 |
+
"sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39",
|
| 982 |
+
"sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d",
|
| 983 |
+
"sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467",
|
| 984 |
+
"sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475",
|
| 985 |
+
"sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef",
|
| 986 |
+
"sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c",
|
| 987 |
+
"sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511",
|
| 988 |
+
"sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c",
|
| 989 |
+
"sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822",
|
| 990 |
+
"sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a",
|
| 991 |
+
"sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8",
|
| 992 |
+
"sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d",
|
| 993 |
+
"sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01",
|
| 994 |
+
"sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145",
|
| 995 |
+
"sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80",
|
| 996 |
+
"sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13",
|
| 997 |
+
"sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e",
|
| 998 |
+
"sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b",
|
| 999 |
+
"sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1",
|
| 1000 |
+
"sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef",
|
| 1001 |
+
"sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc",
|
| 1002 |
+
"sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff",
|
| 1003 |
+
"sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120",
|
| 1004 |
+
"sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437",
|
| 1005 |
+
"sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd",
|
| 1006 |
+
"sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981",
|
| 1007 |
+
"sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36",
|
| 1008 |
+
"sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a",
|
| 1009 |
+
"sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798",
|
| 1010 |
+
"sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7",
|
| 1011 |
+
"sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761",
|
| 1012 |
+
"sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0",
|
| 1013 |
+
"sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e",
|
| 1014 |
+
"sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af",
|
| 1015 |
+
"sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa",
|
| 1016 |
+
"sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c",
|
| 1017 |
+
"sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42",
|
| 1018 |
+
"sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e",
|
| 1019 |
+
"sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81",
|
| 1020 |
+
"sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e",
|
| 1021 |
+
"sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617",
|
| 1022 |
+
"sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc",
|
| 1023 |
+
"sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de",
|
| 1024 |
+
"sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111",
|
| 1025 |
+
"sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383",
|
| 1026 |
+
"sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70",
|
| 1027 |
+
"sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6",
|
| 1028 |
+
"sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4",
|
| 1029 |
+
"sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011",
|
| 1030 |
+
"sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803",
|
| 1031 |
+
"sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79",
|
| 1032 |
+
"sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"
|
| 1033 |
+
],
|
| 1034 |
+
"markers": "python_version < '3.14' and platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))",
|
| 1035 |
+
"version": "==3.1.1"
|
| 1036 |
+
},
|
| 1037 |
"grpcio": {
|
| 1038 |
"hashes": [
|
| 1039 |
"sha256:0495c86a55a04a874c7627fd33e5beaee771917d92c0e6d9d797628ac40e7655",
|
|
|
|
| 1095 |
"markers": "python_version >= '3.8'",
|
| 1096 |
"version": "==1.70.0"
|
| 1097 |
},
|
| 1098 |
+
"grpcio-status": {
|
| 1099 |
+
"hashes": [
|
| 1100 |
+
"sha256:0e7b42816512433b18b9d764285ff029bde059e9d41f8fe10a60631bd8348101",
|
| 1101 |
+
"sha256:fc5a2ae2b9b1c1969cc49f3262676e6854aa2398ec69cb5bd6c47cd501904a85"
|
| 1102 |
+
],
|
| 1103 |
+
"version": "==1.70.0"
|
| 1104 |
+
},
|
| 1105 |
"gruut": {
|
| 1106 |
"extras": [
|
| 1107 |
"de",
|
|
|
|
| 1145 |
],
|
| 1146 |
"version": "==2.0.2"
|
| 1147 |
},
|
| 1148 |
+
"h11": {
|
| 1149 |
+
"hashes": [
|
| 1150 |
+
"sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d",
|
| 1151 |
+
"sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"
|
| 1152 |
+
],
|
| 1153 |
+
"markers": "python_version >= '3.7'",
|
| 1154 |
+
"version": "==0.14.0"
|
| 1155 |
+
},
|
| 1156 |
"hangul-romanize": {
|
| 1157 |
"hashes": [
|
| 1158 |
"sha256:7b8ba54b624ca3b17b2c9394b971cd595c4240a31cc0fc6bc1c3e971eca8c4d5",
|
|
|
|
| 1160 |
],
|
| 1161 |
"version": "==0.1.0"
|
| 1162 |
},
|
| 1163 |
+
"httpcore": {
|
| 1164 |
+
"hashes": [
|
| 1165 |
+
"sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c",
|
| 1166 |
+
"sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"
|
| 1167 |
+
],
|
| 1168 |
+
"markers": "python_version >= '3.8'",
|
| 1169 |
+
"version": "==1.0.7"
|
| 1170 |
+
},
|
| 1171 |
+
"httplib2": {
|
| 1172 |
+
"hashes": [
|
| 1173 |
+
"sha256:14ae0a53c1ba8f3d37e9e27cf37eabb0fb9980f435ba405d546948b009dd64dc",
|
| 1174 |
+
"sha256:d7a10bc5ef5ab08322488bde8c726eeee5c8618723fdb399597ec58f3d82df81"
|
| 1175 |
+
],
|
| 1176 |
+
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
| 1177 |
+
"version": "==0.22.0"
|
| 1178 |
+
},
|
| 1179 |
+
"httpx": {
|
| 1180 |
+
"hashes": [
|
| 1181 |
+
"sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc",
|
| 1182 |
+
"sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"
|
| 1183 |
+
],
|
| 1184 |
+
"markers": "python_version >= '3.8'",
|
| 1185 |
+
"version": "==0.28.1"
|
| 1186 |
+
},
|
| 1187 |
"huggingface-hub": {
|
| 1188 |
"hashes": [
|
| 1189 |
"sha256:893471090c98e3b6efbdfdacafe4052b20b84d59866fb6f54c33d9af18c303ae",
|
|
|
|
| 1253 |
],
|
| 1254 |
"version": "==1.2.0"
|
| 1255 |
},
|
| 1256 |
+
"jsonpatch": {
|
| 1257 |
+
"hashes": [
|
| 1258 |
+
"sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade",
|
| 1259 |
+
"sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"
|
| 1260 |
+
],
|
| 1261 |
+
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'",
|
| 1262 |
+
"version": "==1.33"
|
| 1263 |
+
},
|
| 1264 |
+
"jsonpointer": {
|
| 1265 |
+
"hashes": [
|
| 1266 |
+
"sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942",
|
| 1267 |
+
"sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"
|
| 1268 |
+
],
|
| 1269 |
+
"markers": "python_version >= '3.7'",
|
| 1270 |
+
"version": "==3.0.0"
|
| 1271 |
+
},
|
| 1272 |
"jsonschema": {
|
| 1273 |
"hashes": [
|
| 1274 |
"sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4",
|
|
|
|
| 1371 |
"markers": "python_version >= '3.10'",
|
| 1372 |
"version": "==1.4.8"
|
| 1373 |
},
|
| 1374 |
+
"langchain": {
|
| 1375 |
+
"hashes": [
|
| 1376 |
+
"sha256:1a6e629f02a25962aa5b16932e8f073248104a66804ed5af1f78618ad7c1d38d",
|
| 1377 |
+
"sha256:311ac227a995545ff7c3f74c7767930c5349edef0b39f19d3105b86d39316b69"
|
| 1378 |
+
],
|
| 1379 |
+
"index": "pypi",
|
| 1380 |
+
"markers": "python_version >= '3.9' and python_version < '4.0'",
|
| 1381 |
+
"version": "==0.3.18"
|
| 1382 |
+
},
|
| 1383 |
+
"langchain-core": {
|
| 1384 |
+
"hashes": [
|
| 1385 |
+
"sha256:328688228ece259da734417d477994a69cf8202dea9ed4271f2d792e3575c6fc",
|
| 1386 |
+
"sha256:81a4097226e180fa6c64e2d2ab38dcacbbc23b64fc109fb15622910fe8951670"
|
| 1387 |
+
],
|
| 1388 |
+
"index": "pypi",
|
| 1389 |
+
"markers": "python_version >= '3.9' and python_version < '4.0'",
|
| 1390 |
+
"version": "==0.3.35"
|
| 1391 |
+
},
|
| 1392 |
+
"langchain-google-genai": {
|
| 1393 |
+
"hashes": [
|
| 1394 |
+
"sha256:48d8c78c42048d54f40dff333db9d359746644e0feb0e08b5eabdf34ad7149ca",
|
| 1395 |
+
"sha256:65205089da1f72688a0ed6e7c6914af308b6514ab8038fd8126ecb20f1df234c"
|
| 1396 |
+
],
|
| 1397 |
+
"index": "pypi",
|
| 1398 |
+
"markers": "python_version >= '3.9' and python_version < '4.0'",
|
| 1399 |
+
"version": "==2.0.9"
|
| 1400 |
+
},
|
| 1401 |
+
"langchain-text-splitters": {
|
| 1402 |
+
"hashes": [
|
| 1403 |
+
"sha256:c537972f4b7c07451df431353a538019ad9dadff7a1073ea363946cea97e1bee",
|
| 1404 |
+
"sha256:e5d7b850f6c14259ea930be4a964a65fa95d9df7e1dbdd8bad8416db72292f4e"
|
| 1405 |
+
],
|
| 1406 |
+
"markers": "python_version >= '3.9' and python_version < '4.0'",
|
| 1407 |
+
"version": "==0.3.6"
|
| 1408 |
+
},
|
| 1409 |
"langcodes": {
|
| 1410 |
"hashes": [
|
| 1411 |
"sha256:1eef8168d07e51e131a2497ffecad4b663f6208e7c3ae3b8dc15c51734a6f801",
|
|
|
|
| 1414 |
"markers": "python_version >= '3.9'",
|
| 1415 |
"version": "==3.5.0"
|
| 1416 |
},
|
| 1417 |
+
"langgraph": {
|
| 1418 |
+
"hashes": [
|
| 1419 |
+
"sha256:5b725c02a6eb55257479a0ea0db40926f766c8ff12c2730690f62c614d7e6ee5",
|
| 1420 |
+
"sha256:879cfda4d0a9e9795066f6e448282792d6290f6584f527a7588a64e972e73bad"
|
| 1421 |
+
],
|
| 1422 |
+
"index": "pypi",
|
| 1423 |
+
"markers": "python_version < '4.0' and python_full_version >= '3.9.0'",
|
| 1424 |
+
"version": "==0.2.72"
|
| 1425 |
+
},
|
| 1426 |
+
"langgraph-checkpoint": {
|
| 1427 |
+
"hashes": [
|
| 1428 |
+
"sha256:5e62d9290b1a74edd19f90624e4a2cfda848be015b484818b650bc7cb307040c",
|
| 1429 |
+
"sha256:ae022c9f04401d7583442cbf4d649cd48b9767fe6397c8036e4f2a6256309f5c"
|
| 1430 |
+
],
|
| 1431 |
+
"markers": "python_full_version >= '3.9.0' and python_full_version < '4.0.0'",
|
| 1432 |
+
"version": "==2.0.13"
|
| 1433 |
+
},
|
| 1434 |
+
"langgraph-sdk": {
|
| 1435 |
+
"hashes": [
|
| 1436 |
+
"sha256:ce2b58466d1700d06149782ed113157a8694a6d7932c801f316cd13fab315fe4",
|
| 1437 |
+
"sha256:dea1363e72562cb1e82a2d156be8d5b1a69ff3fe8815eee0e1e7a2f423242ec1"
|
| 1438 |
+
],
|
| 1439 |
+
"markers": "python_full_version >= '3.9.0' and python_full_version < '4.0.0'",
|
| 1440 |
+
"version": "==0.1.51"
|
| 1441 |
+
},
|
| 1442 |
+
"langsmith": {
|
| 1443 |
+
"hashes": [
|
| 1444 |
+
"sha256:97f9bebe0b7cb0a4f278e6ff30ae7d5ededff3883b014442ec6d7d575b02a0f1",
|
| 1445 |
+
"sha256:fbb9dd97b0f090219447fca9362698d07abaeda1da85aa7cc6ec6517b36581b1"
|
| 1446 |
+
],
|
| 1447 |
+
"markers": "python_version >= '3.9' and python_version < '4.0'",
|
| 1448 |
+
"version": "==0.3.8"
|
| 1449 |
+
},
|
| 1450 |
"language-data": {
|
| 1451 |
"hashes": [
|
| 1452 |
"sha256:7600ef8aa39555145d06c89f0c324bf7dab834ea0b0a439d8243762e3ebad7ec",
|
|
|
|
| 1464 |
},
|
| 1465 |
"librosa": {
|
| 1466 |
"hashes": [
|
| 1467 |
+
"sha256:cd99f16717cbcd1e0983e37308d1db46a6f7dfc2e396e5a9e61e6821e44bd2e7",
|
| 1468 |
+
"sha256:dc882750e8b577a63039f25661b7e39ec4cfbacc99c1cffba666cd664fb0a7a0"
|
| 1469 |
],
|
| 1470 |
"markers": "python_version >= '3.7'",
|
| 1471 |
+
"version": "==0.10.2.post1"
|
| 1472 |
},
|
| 1473 |
"llvmlite": {
|
| 1474 |
"hashes": [
|
| 1475 |
+
"sha256:07667d66a5d150abed9157ab6c0b9393c9356f229784a4385c02f99e94fc94d4",
|
| 1476 |
+
"sha256:1d671a56acf725bf1b531d5ef76b86660a5ab8ef19bb6a46064a705c6ca80aad",
|
| 1477 |
+
"sha256:2fb7c4f2fb86cbae6dca3db9ab203eeea0e22d73b99bc2341cdf9de93612e930",
|
| 1478 |
+
"sha256:319bddd44e5f71ae2689859b7203080716448a3cd1128fb144fe5c055219d516",
|
| 1479 |
+
"sha256:40526fb5e313d7b96bda4cbb2c85cd5374e04d80732dd36a282d72a560bb6408",
|
| 1480 |
+
"sha256:41e3839150db4330e1b2716c0be3b5c4672525b4c9005e17c7597f835f351ce2",
|
| 1481 |
+
"sha256:46224058b13c96af1365290bdfebe9a6264ae62fb79b2b55693deed11657a8bf",
|
| 1482 |
+
"sha256:5f79a728e0435493611c9f405168682bb75ffd1fbe6fc360733b850c80a026db",
|
| 1483 |
+
"sha256:7202b678cdf904823c764ee0fe2dfe38a76981f4c1e51715b4cb5abb6cf1d9e8",
|
| 1484 |
+
"sha256:9c58867118bad04a0bb22a2e0068c693719658105e40009ffe95c7000fcde88e",
|
| 1485 |
+
"sha256:9fbadbfba8422123bab5535b293da1cf72f9f478a65645ecd73e781f962ca614",
|
| 1486 |
+
"sha256:aa0097052c32bf721a4efc03bd109d335dfa57d9bffb3d4c24cc680711b8b4fc",
|
| 1487 |
+
"sha256:ace564d9fa44bb91eb6e6d8e7754977783c68e90a471ea7ce913bff30bd62427",
|
| 1488 |
+
"sha256:c0143a5ef336da14deaa8ec26c5449ad5b6a2b564df82fcef4be040b9cacfea9",
|
| 1489 |
+
"sha256:c5d22c3bfc842668168a786af4205ec8e3ad29fb1bc03fd11fd48460d0df64c1",
|
| 1490 |
+
"sha256:cccf8eb28f24840f2689fb1a45f9c0f7e582dd24e088dcf96e424834af11f791",
|
| 1491 |
+
"sha256:d752f89e31b66db6f8da06df8b39f9b91e78c5feea1bf9e8c1fba1d1c24c065d",
|
| 1492 |
+
"sha256:d8489634d43c20cd0ad71330dde1d5bc7b9966937a263ff1ec1cebb90dc50955",
|
| 1493 |
+
"sha256:eae7e2d4ca8f88f89d315b48c6b741dcb925d6a1042da694aa16ab3dd4cbd3a1",
|
| 1494 |
+
"sha256:eed7d5f29136bda63b6d7804c279e2b72e08c952b7c5df61f45db408e0ee52f3",
|
| 1495 |
+
"sha256:f01a394e9c9b7b1d4e63c327b096d10f6f0ed149ef53d38a09b3749dcf8c9610"
|
| 1496 |
],
|
| 1497 |
+
"markers": "python_version >= '3.10'",
|
| 1498 |
+
"version": "==0.44.0"
|
| 1499 |
},
|
| 1500 |
"marisa-trie": {
|
| 1501 |
"hashes": [
|
|
|
|
| 1664 |
},
|
| 1665 |
"matplotlib": {
|
| 1666 |
"hashes": [
|
| 1667 |
+
"sha256:01d2b19f13aeec2e759414d3bfe19ddfb16b13a1250add08d46d5ff6f9be83c6",
|
| 1668 |
+
"sha256:12eaf48463b472c3c0f8dbacdbf906e573013df81a0ab82f0616ea4b11281908",
|
| 1669 |
+
"sha256:2c5829a5a1dd5a71f0e31e6e8bb449bc0ee9dbfb05ad28fc0c6b55101b3a4be6",
|
| 1670 |
+
"sha256:2fbbabc82fde51391c4da5006f965e36d86d95f6ee83fb594b279564a4c5d0d2",
|
| 1671 |
+
"sha256:3547d153d70233a8496859097ef0312212e2689cdf8d7ed764441c77604095ae",
|
| 1672 |
+
"sha256:359f87baedb1f836ce307f0e850d12bb5f1936f70d035561f90d41d305fdacea",
|
| 1673 |
+
"sha256:3b427392354d10975c1d0f4ee18aa5844640b512d5311ef32efd4dd7db106ede",
|
| 1674 |
+
"sha256:4659665bc7c9b58f8c00317c3c2a299f7f258eeae5a5d56b4c64226fca2f7c59",
|
| 1675 |
+
"sha256:4673ff67a36152c48ddeaf1135e74ce0d4bce1bbf836ae40ed39c29edf7e2765",
|
| 1676 |
+
"sha256:503feb23bd8c8acc75541548a1d709c059b7184cde26314896e10a9f14df5f12",
|
| 1677 |
+
"sha256:5439f4c5a3e2e8eab18e2f8c3ef929772fd5641876db71f08127eed95ab64683",
|
| 1678 |
+
"sha256:5cdbaf909887373c3e094b0318d7ff230b2ad9dcb64da7ade654182872ab2593",
|
| 1679 |
+
"sha256:5e6c6461e1fc63df30bf6f80f0b93f5b6784299f721bc28530477acd51bfc3d1",
|
| 1680 |
+
"sha256:5fd41b0ec7ee45cd960a8e71aea7c946a28a0b8a4dcee47d2856b2af051f334c",
|
| 1681 |
+
"sha256:607b16c8a73943df110f99ee2e940b8a1cbf9714b65307c040d422558397dac5",
|
| 1682 |
+
"sha256:7e8632baebb058555ac0cde75db885c61f1212e47723d63921879806b40bec6a",
|
| 1683 |
+
"sha256:81713dd0d103b379de4516b861d964b1d789a144103277769238c732229d7f03",
|
| 1684 |
+
"sha256:845d96568ec873be63f25fa80e9e7fae4be854a66a7e2f0c8ccc99e94a8bd4ef",
|
| 1685 |
+
"sha256:95b710fea129c76d30be72c3b38f330269363fbc6e570a5dd43580487380b5ff",
|
| 1686 |
+
"sha256:96f2886f5c1e466f21cc41b70c5a0cd47bfa0015eb2d5793c88ebce658600e25",
|
| 1687 |
+
"sha256:994c07b9d9fe8d25951e3202a68c17900679274dadfc1248738dcfa1bd40d7f3",
|
| 1688 |
+
"sha256:9ade1003376731a971e398cc4ef38bb83ee8caf0aee46ac6daa4b0506db1fd06",
|
| 1689 |
+
"sha256:9b0558bae37f154fffda54d779a592bc97ca8b4701f1c710055b609a3bac44c8",
|
| 1690 |
+
"sha256:a2a43cbefe22d653ab34bb55d42384ed30f611bcbdea1f8d7f431011a2e1c62e",
|
| 1691 |
+
"sha256:a994f29e968ca002b50982b27168addfd65f0105610b6be7fa515ca4b5307c95",
|
| 1692 |
+
"sha256:ad2e15300530c1a94c63cfa546e3b7864bd18ea2901317bae8bbf06a5ade6dcf",
|
| 1693 |
+
"sha256:ae80dc3a4add4665cf2faa90138384a7ffe2a4e37c58d83e115b54287c4f06ef",
|
| 1694 |
+
"sha256:b886d02a581b96704c9d1ffe55709e49b4d2d52709ccebc4be42db856e511278",
|
| 1695 |
+
"sha256:c40ba2eb08b3f5de88152c2333c58cee7edcead0a2a0d60fcafa116b17117adc",
|
| 1696 |
+
"sha256:c55b20591ced744aa04e8c3e4b7543ea4d650b6c3c4b208c08a05b4010e8b442",
|
| 1697 |
+
"sha256:c58a9622d5dbeb668f407f35f4e6bfac34bb9ecdcc81680c04d0258169747997",
|
| 1698 |
+
"sha256:d44cb942af1693cced2604c33a9abcef6205601c445f6d0dc531d813af8a2f5a",
|
| 1699 |
+
"sha256:d907fddb39f923d011875452ff1eca29a9e7f21722b873e90db32e5d8ddff12e",
|
| 1700 |
+
"sha256:fd44fc75522f58612ec4a33958a7e5552562b7705b42ef1b4f8c0818e304a363"
|
| 1701 |
],
|
| 1702 |
+
"markers": "python_version >= '3.10'",
|
| 1703 |
+
"version": "==3.10.0"
|
| 1704 |
},
|
| 1705 |
"mdurl": {
|
| 1706 |
"hashes": [
|
|
|
|
| 1968 |
},
|
| 1969 |
"numba": {
|
| 1970 |
"hashes": [
|
| 1971 |
+
"sha256:074cd38c5b1f9c65a4319d1f3928165f48975ef0537ad43385b2bd908e6e2e35",
|
| 1972 |
+
"sha256:0ebbd4827091384ab8c4615ba1b3ca8bc639a3a000157d9c37ba85d34cd0da1b",
|
| 1973 |
+
"sha256:152146ecdbb8d8176f294e9f755411e6f270103a11c3ff50cecc413f794e52c8",
|
| 1974 |
+
"sha256:21c2fe25019267a608e2710a6a947f557486b4b0478b02e45a81cf606a05a7d4",
|
| 1975 |
+
"sha256:43aa4d7d10c542d3c78106b8481e0cbaaec788c39ee8e3d7901682748ffdf0b4",
|
| 1976 |
+
"sha256:44240e694d4aa321430c97b21453e46014fe6c7b8b7d932afa7f6a88cc5d7e5e",
|
| 1977 |
+
"sha256:46c5ae094fb3706f5adf9021bfb7fc11e44818d61afee695cdee4eadfed45e98",
|
| 1978 |
+
"sha256:550d389573bc3b895e1ccb18289feea11d937011de4d278b09dc7ed585d1cdcb",
|
| 1979 |
+
"sha256:5cafa6095716fcb081618c28a8d27bf7c001e09696f595b41836dec114be2905",
|
| 1980 |
+
"sha256:5f6c452dca1de8e60e593f7066df052dd8da09b243566ecd26d2b796e5d3087d",
|
| 1981 |
+
"sha256:6fb74e81aa78a2303e30593d8331327dfc0d2522b5db05ac967556a26db3ef87",
|
| 1982 |
+
"sha256:74250b26ed6a1428763e774dc5b2d4e70d93f73795635b5412b8346a4d054574",
|
| 1983 |
+
"sha256:764f0e47004f126f58c3b28e0a02374c420a9d15157b90806d68590f5c20cc89",
|
| 1984 |
+
"sha256:888d2e89b8160899e19591467e8fdd4970e07606e1fbc248f239c89818d5f925",
|
| 1985 |
+
"sha256:9cab9783a700fa428b1a54d65295122bc03b3de1d01fb819a6b9dbbddfdb8c43",
|
| 1986 |
+
"sha256:9f25f7fef0206d55c1cfb796ad833cbbc044e2884751e56e798351280038484c",
|
| 1987 |
+
"sha256:b72bbc8708e98b3741ad0c63f9929c47b623cc4ee86e17030a4f3e301e8401ac",
|
| 1988 |
+
"sha256:b96fafbdcf6f69b69855273e988696aae4974115a815f6818fef4af7afa1f6b8",
|
| 1989 |
+
"sha256:bf64c2d0f3d161af603de3825172fb83c2600bcb1d53ae8ea568d4c53ba6ac08",
|
| 1990 |
+
"sha256:de5aa7904741425f28e1028b85850b31f0a245e9eb4f7c38507fb893283a066c",
|
| 1991 |
+
"sha256:ffe9fe373ed30638d6e20a0269f817b2c75d447141f55a675bfcf2d1fe2e87fb"
|
| 1992 |
],
|
| 1993 |
"markers": "python_version >= '3.9'",
|
| 1994 |
+
"version": "==0.61.0"
|
| 1995 |
},
|
| 1996 |
"numpy": {
|
| 1997 |
"hashes": [
|
| 1998 |
+
"sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b",
|
| 1999 |
+
"sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818",
|
| 2000 |
+
"sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20",
|
| 2001 |
+
"sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0",
|
| 2002 |
+
"sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010",
|
| 2003 |
+
"sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a",
|
| 2004 |
+
"sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea",
|
| 2005 |
+
"sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c",
|
| 2006 |
+
"sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71",
|
| 2007 |
+
"sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110",
|
| 2008 |
+
"sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be",
|
| 2009 |
+
"sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a",
|
| 2010 |
+
"sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a",
|
| 2011 |
+
"sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5",
|
| 2012 |
+
"sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed",
|
| 2013 |
+
"sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd",
|
| 2014 |
+
"sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c",
|
| 2015 |
+
"sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e",
|
| 2016 |
+
"sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0",
|
| 2017 |
+
"sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c",
|
| 2018 |
+
"sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a",
|
| 2019 |
+
"sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b",
|
| 2020 |
+
"sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0",
|
| 2021 |
+
"sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6",
|
| 2022 |
+
"sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2",
|
| 2023 |
+
"sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a",
|
| 2024 |
+
"sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30",
|
| 2025 |
+
"sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218",
|
| 2026 |
+
"sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5",
|
| 2027 |
+
"sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07",
|
| 2028 |
+
"sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2",
|
| 2029 |
+
"sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4",
|
| 2030 |
+
"sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764",
|
| 2031 |
+
"sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef",
|
| 2032 |
+
"sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3",
|
| 2033 |
+
"sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"
|
| 2034 |
],
|
| 2035 |
+
"markers": "python_version >= '3.9'",
|
| 2036 |
+
"version": "==1.26.4"
|
| 2037 |
},
|
| 2038 |
"nvidia-cublas-cu12": {
|
| 2039 |
"hashes": [
|
|
|
|
| 2115 |
"markers": "platform_system == 'Linux' and platform_machine == 'x86_64'",
|
| 2116 |
"version": "==12.3.1.170"
|
| 2117 |
},
|
| 2118 |
+
"nvidia-cusparselt-cu12": {
|
| 2119 |
+
"hashes": [
|
| 2120 |
+
"sha256:0057c91d230703924c0422feabe4ce768841f9b4b44d28586b6f6d2eb86fbe70",
|
| 2121 |
+
"sha256:067a7f6d03ea0d4841c85f0c6f1991c5dda98211f6302cb83a4ab234ee95bef8",
|
| 2122 |
+
"sha256:df2c24502fd76ebafe7457dbc4716b2fec071aabaed4fb7691a201cde03704d9"
|
| 2123 |
+
],
|
| 2124 |
+
"markers": "platform_system == 'Linux' and platform_machine == 'x86_64'",
|
| 2125 |
+
"version": "==0.6.2"
|
| 2126 |
+
},
|
| 2127 |
"nvidia-nccl-cu12": {
|
| 2128 |
"hashes": [
|
| 2129 |
"sha256:8579076d30a8c24988834445f8d633c697d42397e92ffc3f63fa26766d25e0a0"
|
|
|
|
| 2157 |
"markers": "python_version >= '3.8'",
|
| 2158 |
"version": "==20240930"
|
| 2159 |
},
|
| 2160 |
+
"orjson": {
|
| 2161 |
+
"hashes": [
|
| 2162 |
+
"sha256:035fb83585e0f15e076759b6fedaf0abb460d1765b6a36f48018a52858443514",
|
| 2163 |
+
"sha256:05ca7fe452a2e9d8d9d706a2984c95b9c2ebc5db417ce0b7a49b91d50642a23e",
|
| 2164 |
+
"sha256:0a4f27ea5617828e6b58922fdbec67b0aa4bb844e2d363b9244c47fa2180e665",
|
| 2165 |
+
"sha256:13242f12d295e83c2955756a574ddd6741c81e5b99f2bef8ed8d53e47a01e4b7",
|
| 2166 |
+
"sha256:17085a6aa91e1cd70ca8533989a18b5433e15d29c574582f76f821737c8d5806",
|
| 2167 |
+
"sha256:1e6d33efab6b71d67f22bf2962895d3dc6f82a6273a965fab762e64fa90dc399",
|
| 2168 |
+
"sha256:208beedfa807c922da4e81061dafa9c8489c6328934ca2a562efa707e049e561",
|
| 2169 |
+
"sha256:295c70f9dc154307777ba30fe29ff15c1bcc9dfc5c48632f37d20a607e9ba85a",
|
| 2170 |
+
"sha256:305b38b2b8f8083cc3d618927d7f424349afce5975b316d33075ef0f73576b60",
|
| 2171 |
+
"sha256:33aedc3d903378e257047fee506f11e0833146ca3e57a1a1fb0ddb789876c1e1",
|
| 2172 |
+
"sha256:3614ea508d522a621384c1d6639016a5a2e4f027f3e4a1c93a51867615d28829",
|
| 2173 |
+
"sha256:3766ac4702f8f795ff3fa067968e806b4344af257011858cc3d6d8721588b53f",
|
| 2174 |
+
"sha256:3a63bb41559b05360ded9132032239e47983a39b151af1201f07ec9370715c82",
|
| 2175 |
+
"sha256:43e17289ffdbbac8f39243916c893d2ae41a2ea1a9cbb060a56a4d75286351ae",
|
| 2176 |
+
"sha256:552c883d03ad185f720d0c09583ebde257e41b9521b74ff40e08b7dec4559c04",
|
| 2177 |
+
"sha256:5dd9ef1639878cc3efffed349543cbf9372bdbd79f478615a1c633fe4e4180d1",
|
| 2178 |
+
"sha256:5e8afd6200e12771467a1a44e5ad780614b86abb4b11862ec54861a82d677746",
|
| 2179 |
+
"sha256:616e3e8d438d02e4854f70bfdc03a6bcdb697358dbaa6bcd19cbe24d24ece1f8",
|
| 2180 |
+
"sha256:63309e3ff924c62404923c80b9e2048c1f74ba4b615e7584584389ada50ed428",
|
| 2181 |
+
"sha256:6875210307d36c94873f553786a808af2788e362bd0cf4c8e66d976791e7b528",
|
| 2182 |
+
"sha256:6fd9bc64421e9fe9bd88039e7ce8e58d4fead67ca88e3a4014b143cec7684fd4",
|
| 2183 |
+
"sha256:7066b74f9f259849629e0d04db6609db4cf5b973248f455ba5d3bd58a4daaa5b",
|
| 2184 |
+
"sha256:73cb85490aa6bf98abd20607ab5c8324c0acb48d6da7863a51be48505646c814",
|
| 2185 |
+
"sha256:763dadac05e4e9d2bc14938a45a2d0560549561287d41c465d3c58aec818b164",
|
| 2186 |
+
"sha256:7723ad949a0ea502df656948ddd8b392780a5beaa4c3b5f97e525191b102fff0",
|
| 2187 |
+
"sha256:781d54657063f361e89714293c095f506c533582ee40a426cb6489c48a637b81",
|
| 2188 |
+
"sha256:7946922ada8f3e0b7b958cc3eb22cfcf6c0df83d1fe5521b4a100103e3fa84c8",
|
| 2189 |
+
"sha256:7a1c73dcc8fadbd7c55802d9aa093b36878d34a3b3222c41052ce6b0fc65f8e8",
|
| 2190 |
+
"sha256:7c203f6f969210128af3acae0ef9ea6aab9782939f45f6fe02d05958fe761ef9",
|
| 2191 |
+
"sha256:7c2c79fa308e6edb0ffab0a31fd75a7841bf2a79a20ef08a3c6e3b26814c8ca8",
|
| 2192 |
+
"sha256:7c864a80a2d467d7786274fce0e4f93ef2a7ca4ff31f7fc5634225aaa4e9e98c",
|
| 2193 |
+
"sha256:88dc3f65a026bd3175eb157fea994fca6ac7c4c8579fc5a86fc2114ad05705b7",
|
| 2194 |
+
"sha256:8918719572d662e18b8af66aef699d8c21072e54b6c82a3f8f6404c1f5ccd5e0",
|
| 2195 |
+
"sha256:9d11c0714fc85bfcf36ada1179400862da3288fc785c30e8297844c867d7505a",
|
| 2196 |
+
"sha256:9e590a0477b23ecd5b0ac865b1b907b01b3c5535f5e8a8f6ab0e503efb896334",
|
| 2197 |
+
"sha256:9e992fd5cfb8b9f00bfad2fd7a05a4299db2bbe92e6440d9dd2fab27655b3182",
|
| 2198 |
+
"sha256:a2f708c62d026fb5340788ba94a55c23df4e1869fec74be455e0b2f5363b8507",
|
| 2199 |
+
"sha256:a330b9b4734f09a623f74a7490db713695e13b67c959713b78369f26b3dee6bf",
|
| 2200 |
+
"sha256:a61a4622b7ff861f019974f73d8165be1bd9a0855e1cad18ee167acacabeb061",
|
| 2201 |
+
"sha256:a6be38bd103d2fd9bdfa31c2720b23b5d47c6796bcb1d1b598e3924441b4298d",
|
| 2202 |
+
"sha256:abc7abecdbf67a173ef1316036ebbf54ce400ef2300b4e26a7b843bd446c2480",
|
| 2203 |
+
"sha256:acd271247691574416b3228db667b84775c497b245fa275c6ab90dc1ffbbd2b3",
|
| 2204 |
+
"sha256:b0482b21d0462eddd67e7fce10b89e0b6ac56570424662b685a0d6fccf581e13",
|
| 2205 |
+
"sha256:b299383825eafe642cbab34be762ccff9fd3408d72726a6b2a4506d410a71ab3",
|
| 2206 |
+
"sha256:b342567e5465bd99faa559507fe45e33fc76b9fb868a63f1642c6bc0735ad02a",
|
| 2207 |
+
"sha256:b48f59114fe318f33bbaee8ebeda696d8ccc94c9e90bc27dbe72153094e26f41",
|
| 2208 |
+
"sha256:b7155eb1623347f0f22c38c9abdd738b287e39b9982e1da227503387b81b34ca",
|
| 2209 |
+
"sha256:bae0e6ec2b7ba6895198cd981b7cca95d1487d0147c8ed751e5632ad16f031a6",
|
| 2210 |
+
"sha256:bb00b7bfbdf5d34a13180e4805d76b4567025da19a197645ca746fc2fb536586",
|
| 2211 |
+
"sha256:bb5cc3527036ae3d98b65e37b7986a918955f85332c1ee07f9d3f82f3a6899b5",
|
| 2212 |
+
"sha256:c03cd6eea1bd3b949d0d007c8d57049aa2b39bd49f58b4b2af571a5d3833d890",
|
| 2213 |
+
"sha256:c25774c9e88a3e0013d7d1a6c8056926b607a61edd423b50eb5c88fd7f2823ae",
|
| 2214 |
+
"sha256:c33be3795e299f565681d69852ac8c1bc5c84863c0b0030b2b3468843be90388",
|
| 2215 |
+
"sha256:c4cc83960ab79a4031f3119cc4b1a1c627a3dc09df125b27c4201dff2af7eaa6",
|
| 2216 |
+
"sha256:cf45e0214c593660339ef63e875f32ddd5aa3b4adc15e662cdb80dc49e194f8e",
|
| 2217 |
+
"sha256:d13b7fe322d75bf84464b075eafd8e7dd9eae05649aa2a5354cfa32f43c59f17",
|
| 2218 |
+
"sha256:d433bf32a363823863a96561a555227c18a522a8217a6f9400f00ddc70139ae2",
|
| 2219 |
+
"sha256:d569c1c462912acdd119ccbf719cf7102ea2c67dd03b99edcb1a3048651ac96b",
|
| 2220 |
+
"sha256:d5ac11b659fd798228a7adba3e37c010e0152b78b1982897020a8e019a94882e",
|
| 2221 |
+
"sha256:da03392674f59a95d03fa5fb9fe3a160b0511ad84b7a3914699ea5a1b3a38da2",
|
| 2222 |
+
"sha256:da9a18c500f19273e9e104cca8c1f0b40a6470bcccfc33afcc088045d0bf5ea6",
|
| 2223 |
+
"sha256:dadba0e7b6594216c214ef7894c4bd5f08d7c0135f4dd0145600be4fbcc16767",
|
| 2224 |
+
"sha256:dba5a1e85d554e3897fa9fe6fbcff2ed32d55008973ec9a2b992bd9a65d2352d",
|
| 2225 |
+
"sha256:dd0099ae6aed5eb1fc84c9eb72b95505a3df4267e6962eb93cdd5af03be71c98",
|
| 2226 |
+
"sha256:ddbeef2481d895ab8be5185f2432c334d6dec1f5d1933a9c83014d188e102cef",
|
| 2227 |
+
"sha256:e117eb299a35f2634e25ed120c37c641398826c2f5a3d3cc39f5993b96171b9e",
|
| 2228 |
+
"sha256:e4759b109c37f635aa5c5cc93a1b26927bfde24b254bcc0e1149a9fada253d2d",
|
| 2229 |
+
"sha256:e78c211d0074e783d824ce7bb85bf459f93a233eb67a5b5003498232ddfb0e8a",
|
| 2230 |
+
"sha256:eca81f83b1b8c07449e1d6ff7074e82e3fd6777e588f1a6632127f286a968825",
|
| 2231 |
+
"sha256:eea80037b9fae5339b214f59308ef0589fc06dc870578b7cce6d71eb2096764c",
|
| 2232 |
+
"sha256:ef5b87e7aa9545ddadd2309efe6824bd3dd64ac101c15dae0f2f597911d46eaa",
|
| 2233 |
+
"sha256:efcf6c735c3d22ef60c4aa27a5238f1a477df85e9b15f2142f9d669beb2d13fd",
|
| 2234 |
+
"sha256:f71eae9651465dff70aa80db92586ad5b92df46a9373ee55252109bb6b703307",
|
| 2235 |
+
"sha256:f93ce145b2db1252dd86af37d4165b6faa83072b46e3995ecc95d4b2301b725a",
|
| 2236 |
+
"sha256:f95fb363d79366af56c3f26b71df40b9a583b07bbaaf5b317407c4d58497852e",
|
| 2237 |
+
"sha256:f9875f5fea7492da8ec2444839dcc439b0ef298978f311103d0b7dfd775898ab",
|
| 2238 |
+
"sha256:fd56a26a04f6ba5fb2045b0acc487a63162a958ed837648c5781e1fe3316cfbf",
|
| 2239 |
+
"sha256:ff4f6edb1578960ed628a3b998fa54d78d9bb3e2eb2cfc5c2a09732431c678d0",
|
| 2240 |
+
"sha256:ffe19f3e8d68111e8644d4f4e267a069ca427926855582ff01fc012496d19969"
|
| 2241 |
+
],
|
| 2242 |
+
"markers": "python_version >= '3.8'",
|
| 2243 |
+
"version": "==3.10.15"
|
| 2244 |
+
},
|
| 2245 |
"packaging": {
|
| 2246 |
"hashes": [
|
| 2247 |
"sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759",
|
|
|
|
| 2503 |
"markers": "python_version >= '3.9'",
|
| 2504 |
"version": "==0.2.1"
|
| 2505 |
},
|
| 2506 |
+
"proto-plus": {
|
| 2507 |
+
"hashes": [
|
| 2508 |
+
"sha256:6e93d5f5ca267b54300880fff156b6a3386b3fa3f43b1da62e680fc0c586ef22",
|
| 2509 |
+
"sha256:bf2dfaa3da281fc3187d12d224c707cb57214fb2c22ba854eb0c105a3fb2d4d7"
|
| 2510 |
+
],
|
| 2511 |
+
"markers": "python_version >= '3.7'",
|
| 2512 |
+
"version": "==1.26.0"
|
| 2513 |
+
},
|
| 2514 |
"protobuf": {
|
| 2515 |
"hashes": [
|
| 2516 |
"sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f",
|
|
|
|
| 2599 |
"markers": "python_version >= '3.9'",
|
| 2600 |
"version": "==19.0.0"
|
| 2601 |
},
|
| 2602 |
+
"pyasn1": {
|
| 2603 |
+
"hashes": [
|
| 2604 |
+
"sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629",
|
| 2605 |
+
"sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034"
|
| 2606 |
+
],
|
| 2607 |
+
"markers": "python_version >= '3.8'",
|
| 2608 |
+
"version": "==0.6.1"
|
| 2609 |
+
},
|
| 2610 |
+
"pyasn1-modules": {
|
| 2611 |
+
"hashes": [
|
| 2612 |
+
"sha256:49bfa96b45a292b711e986f222502c1c9a5e1f4e568fc30e2574a6c7d07838fd",
|
| 2613 |
+
"sha256:c28e2dbf9c06ad61c71a075c7e0f9fd0f1b0bb2d2ad4377f240d33ac2ab60a7c"
|
| 2614 |
+
],
|
| 2615 |
+
"markers": "python_version >= '3.8'",
|
| 2616 |
+
"version": "==0.4.1"
|
| 2617 |
+
},
|
| 2618 |
"pycparser": {
|
| 2619 |
"hashes": [
|
| 2620 |
"sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6",
|
|
|
|
| 2628 |
"sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584",
|
| 2629 |
"sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"
|
| 2630 |
],
|
| 2631 |
+
"index": "pypi",
|
| 2632 |
"markers": "python_version >= '3.8'",
|
| 2633 |
"version": "==2.10.6"
|
| 2634 |
},
|
|
|
|
| 3044 |
"markers": "python_version >= '3.8'",
|
| 3045 |
"version": "==2.32.3"
|
| 3046 |
},
|
| 3047 |
+
"requests-toolbelt": {
|
| 3048 |
+
"hashes": [
|
| 3049 |
+
"sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6",
|
| 3050 |
+
"sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"
|
| 3051 |
+
],
|
| 3052 |
+
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
| 3053 |
+
"version": "==1.0.0"
|
| 3054 |
+
},
|
| 3055 |
"rich": {
|
| 3056 |
"hashes": [
|
| 3057 |
"sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098",
|
|
|
|
| 3169 |
"markers": "python_version >= '3.9'",
|
| 3170 |
"version": "==0.22.3"
|
| 3171 |
},
|
| 3172 |
+
"rsa": {
|
| 3173 |
+
"hashes": [
|
| 3174 |
+
"sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7",
|
| 3175 |
+
"sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21"
|
| 3176 |
+
],
|
| 3177 |
+
"markers": "python_version >= '3.6' and python_version < '4'",
|
| 3178 |
+
"version": "==4.9"
|
| 3179 |
+
},
|
| 3180 |
"safetensors": {
|
| 3181 |
"hashes": [
|
| 3182 |
"sha256:03c937100f38c9ff4c1507abea9928a6a9b02c9c1c9c3609ed4fb2bf413d4975",
|
|
|
|
| 3236 |
},
|
| 3237 |
"scipy": {
|
| 3238 |
"hashes": [
|
| 3239 |
+
"sha256:033a75ddad1463970c96a88063a1df87ccfddd526437136b6ee81ff0312ebdf6",
|
| 3240 |
+
"sha256:0458839c9f873062db69a03de9a9765ae2e694352c76a16be44f93ea45c28d2b",
|
| 3241 |
+
"sha256:070d10654f0cb6abd295bc96c12656f948e623ec5f9a4eab0ddb1466c000716e",
|
| 3242 |
+
"sha256:09c52320c42d7f5c7748b69e9f0389266fd4f82cf34c38485c14ee976cb8cb04",
|
| 3243 |
+
"sha256:0ac102ce99934b162914b1e4a6b94ca7da0f4058b6d6fd65b0cef330c0f3346f",
|
| 3244 |
+
"sha256:0fb57b30f0017d4afa5fe5f5b150b8f807618819287c21cbe51130de7ccdaed2",
|
| 3245 |
+
"sha256:100193bb72fbff37dbd0bf14322314fc7cbe08b7ff3137f11a34d06dc0ee6b85",
|
| 3246 |
+
"sha256:14eaa373c89eaf553be73c3affb11ec6c37493b7eaaf31cf9ac5dffae700c2e0",
|
| 3247 |
+
"sha256:2114a08daec64980e4b4cbdf5bee90935af66d750146b1d2feb0d3ac30613692",
|
| 3248 |
+
"sha256:21e10b1dd56ce92fba3e786007322542361984f8463c6d37f6f25935a5a6ef52",
|
| 3249 |
+
"sha256:2722a021a7929d21168830790202a75dbb20b468a8133c74a2c0230c72626b6c",
|
| 3250 |
+
"sha256:395be70220d1189756068b3173853029a013d8c8dd5fd3d1361d505b2aa58fa7",
|
| 3251 |
+
"sha256:3fe1d95944f9cf6ba77aa28b82dd6bb2a5b52f2026beb39ecf05304b8392864b",
|
| 3252 |
+
"sha256:491d57fe89927fa1aafbe260f4cfa5ffa20ab9f1435025045a5315006a91b8f5",
|
| 3253 |
+
"sha256:4b17d4220df99bacb63065c76b0d1126d82bbf00167d1730019d2a30d6ae01ea",
|
| 3254 |
+
"sha256:4c9d8fc81d6a3b6844235e6fd175ee1d4c060163905a2becce8e74cb0d7554ce",
|
| 3255 |
+
"sha256:55cc79ce4085c702ac31e49b1e69b27ef41111f22beafb9b49fea67142b696c4",
|
| 3256 |
+
"sha256:5b190b935e7db569960b48840e5bef71dc513314cc4e79a1b7d14664f57fd4ff",
|
| 3257 |
+
"sha256:5bd8d27d44e2c13d0c1124e6a556454f52cd3f704742985f6b09e75e163d20d2",
|
| 3258 |
+
"sha256:5dff14e75cdbcf07cdaa1c7707db6017d130f0af9ac41f6ce443a93318d6c6e0",
|
| 3259 |
+
"sha256:5eb0ca35d4b08e95da99a9f9c400dc9f6c21c424298a0ba876fdc69c7afacedf",
|
| 3260 |
+
"sha256:63b9b6cd0333d0eb1a49de6f834e8aeaefe438df8f6372352084535ad095219e",
|
| 3261 |
+
"sha256:667f950bf8b7c3a23b4199db24cb9bf7512e27e86d0e3813f015b74ec2c6e3df",
|
| 3262 |
+
"sha256:6b3e71893c6687fc5e29208d518900c24ea372a862854c9888368c0b267387ab",
|
| 3263 |
+
"sha256:71ba9a76c2390eca6e359be81a3e879614af3a71dfdabb96d1d7ab33da6f2364",
|
| 3264 |
+
"sha256:74bb864ff7640dea310a1377d8567dc2cb7599c26a79ca852fc184cc851954ac",
|
| 3265 |
+
"sha256:82add84e8a9fb12af5c2c1a3a3f1cb51849d27a580cb9e6bd66226195142be6e",
|
| 3266 |
+
"sha256:837299eec3d19b7e042923448d17d95a86e43941104d33f00da7e31a0f715d3c",
|
| 3267 |
+
"sha256:900f3fa3db87257510f011c292a5779eb627043dd89731b9c461cd16ef76ab3d",
|
| 3268 |
+
"sha256:9f151e9fb60fbf8e52426132f473221a49362091ce7a5e72f8aa41f8e0da4f25",
|
| 3269 |
+
"sha256:af0b61c1de46d0565b4b39c6417373304c1d4f5220004058bdad3061c9fa8a95",
|
| 3270 |
+
"sha256:bc7136626261ac1ed988dca56cfc4ab5180f75e0ee52e58f1e6aa74b5f3eacd5",
|
| 3271 |
+
"sha256:be3deeb32844c27599347faa077b359584ba96664c5c79d71a354b80a0ad0ce0",
|
| 3272 |
+
"sha256:c09aa9d90f3500ea4c9b393ee96f96b0ccb27f2f350d09a47f533293c78ea776",
|
| 3273 |
+
"sha256:c352c1b6d7cac452534517e022f8f7b8d139cd9f27e6fbd9f3cbd0bfd39f5bef",
|
| 3274 |
+
"sha256:c64ded12dcab08afff9e805a67ff4480f5e69993310e093434b10e85dc9d43e1",
|
| 3275 |
+
"sha256:cdde8414154054763b42b74fe8ce89d7f3d17a7ac5dd77204f0e142cdc9239e9",
|
| 3276 |
+
"sha256:ce3a000cd28b4430426db2ca44d96636f701ed12e2b3ca1f2b1dd7abdd84b39a",
|
| 3277 |
+
"sha256:f735bc41bd1c792c96bc426dece66c8723283695f02df61dcc4d0a707a42fc54",
|
| 3278 |
+
"sha256:f82fcf4e5b377f819542fbc8541f7b5fbcf1c0017d0df0bc22c781bf60abc4d8"
|
| 3279 |
],
|
| 3280 |
+
"markers": "python_version >= '3.10'",
|
| 3281 |
+
"version": "==1.15.1"
|
| 3282 |
},
|
| 3283 |
"setuptools": {
|
| 3284 |
"hashes": [
|
|
|
|
| 3320 |
"markers": "python_version >= '3.7'",
|
| 3321 |
"version": "==5.0.2"
|
| 3322 |
},
|
| 3323 |
+
"sniffio": {
|
| 3324 |
+
"hashes": [
|
| 3325 |
+
"sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2",
|
| 3326 |
+
"sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"
|
| 3327 |
+
],
|
| 3328 |
+
"markers": "python_version >= '3.7'",
|
| 3329 |
+
"version": "==1.3.1"
|
| 3330 |
+
},
|
| 3331 |
"soundfile": {
|
| 3332 |
"hashes": [
|
| 3333 |
"sha256:03267c4e493315294834a0870f31dbb3b28a95561b80b134f0bd3cf2d5f0e618",
|
|
|
|
| 3341 |
],
|
| 3342 |
"version": "==0.13.1"
|
| 3343 |
},
|
| 3344 |
+
"sox": {
|
| 3345 |
+
"hashes": [
|
| 3346 |
+
"sha256:12c7be5bb1f548d891fe11e82c08cf5f1a1d74e225298f60082e5aeb2469ada0"
|
| 3347 |
+
],
|
| 3348 |
+
"index": "pypi",
|
| 3349 |
+
"version": "==1.5.0"
|
| 3350 |
+
},
|
| 3351 |
"soxr": {
|
| 3352 |
"hashes": [
|
| 3353 |
"sha256:39e0f791ba178d69cd676485dbee37e75a34f20daa478d90341ecb7f6d9d690f",
|
|
|
|
| 3415 |
"markers": "python_version >= '3.6'",
|
| 3416 |
"version": "==1.0.5"
|
| 3417 |
},
|
| 3418 |
+
"sqlalchemy": {
|
| 3419 |
+
"hashes": [
|
| 3420 |
+
"sha256:0398361acebb42975deb747a824b5188817d32b5c8f8aba767d51ad0cc7bb08d",
|
| 3421 |
+
"sha256:0561832b04c6071bac3aad45b0d3bb6d2c4f46a8409f0a7a9c9fa6673b41bc03",
|
| 3422 |
+
"sha256:07258341402a718f166618470cde0c34e4cec85a39767dce4e24f61ba5e667ea",
|
| 3423 |
+
"sha256:0a826f21848632add58bef4f755a33d45105d25656a0c849f2dc2df1c71f6f50",
|
| 3424 |
+
"sha256:1052723e6cd95312f6a6eff9a279fd41bbae67633415373fdac3c430eca3425d",
|
| 3425 |
+
"sha256:12d5b06a1f3aeccf295a5843c86835033797fea292c60e72b07bcb5d820e6dd3",
|
| 3426 |
+
"sha256:12f5c9ed53334c3ce719155424dc5407aaa4f6cadeb09c5b627e06abb93933a1",
|
| 3427 |
+
"sha256:2a0ef3f98175d77180ffdc623d38e9f1736e8d86b6ba70bff182a7e68bed7727",
|
| 3428 |
+
"sha256:2f2951dc4b4f990a4b394d6b382accb33141d4d3bd3ef4e2b27287135d6bdd68",
|
| 3429 |
+
"sha256:3868acb639c136d98107c9096303d2d8e5da2880f7706f9f8c06a7f961961149",
|
| 3430 |
+
"sha256:386b7d136919bb66ced64d2228b92d66140de5fefb3c7df6bd79069a269a7b06",
|
| 3431 |
+
"sha256:3d3043375dd5bbcb2282894cbb12e6c559654c67b5fffb462fda815a55bf93f7",
|
| 3432 |
+
"sha256:3e35d5565b35b66905b79ca4ae85840a8d40d31e0b3e2990f2e7692071b179ca",
|
| 3433 |
+
"sha256:402c2316d95ed90d3d3c25ad0390afa52f4d2c56b348f212aa9c8d072a40eee5",
|
| 3434 |
+
"sha256:40310db77a55512a18827488e592965d3dec6a3f1e3d8af3f8243134029daca3",
|
| 3435 |
+
"sha256:40e9cdbd18c1f84631312b64993f7d755d85a3930252f6276a77432a2b25a2f3",
|
| 3436 |
+
"sha256:49aa2cdd1e88adb1617c672a09bf4ebf2f05c9448c6dbeba096a3aeeb9d4d443",
|
| 3437 |
+
"sha256:57dd41ba32430cbcc812041d4de8d2ca4651aeefad2626921ae2a23deb8cd6ff",
|
| 3438 |
+
"sha256:5dba1cdb8f319084f5b00d41207b2079822aa8d6a4667c0f369fce85e34b0c86",
|
| 3439 |
+
"sha256:5e1d9e429028ce04f187a9f522818386c8b076723cdbe9345708384f49ebcec6",
|
| 3440 |
+
"sha256:63178c675d4c80def39f1febd625a6333f44c0ba269edd8a468b156394b27753",
|
| 3441 |
+
"sha256:6493bc0eacdbb2c0f0d260d8988e943fee06089cd239bd7f3d0c45d1657a70e2",
|
| 3442 |
+
"sha256:64aa8934200e222f72fcfd82ee71c0130a9c07d5725af6fe6e919017d095b297",
|
| 3443 |
+
"sha256:665255e7aae5f38237b3a6eae49d2358d83a59f39ac21036413fab5d1e810578",
|
| 3444 |
+
"sha256:6db316d6e340f862ec059dc12e395d71f39746a20503b124edc255973977b728",
|
| 3445 |
+
"sha256:70065dfabf023b155a9c2a18f573e47e6ca709b9e8619b2e04c54d5bcf193178",
|
| 3446 |
+
"sha256:8455aa60da49cb112df62b4721bd8ad3654a3a02b9452c783e651637a1f21fa2",
|
| 3447 |
+
"sha256:8b0ac78898c50e2574e9f938d2e5caa8fe187d7a5b69b65faa1ea4648925b096",
|
| 3448 |
+
"sha256:8bf312ed8ac096d674c6aa9131b249093c1b37c35db6a967daa4c84746bc1bc9",
|
| 3449 |
+
"sha256:92f99f2623ff16bd4aaf786ccde759c1f676d39c7bf2855eb0b540e1ac4530c8",
|
| 3450 |
+
"sha256:9c8bcad7fc12f0cc5896d8e10fdf703c45bd487294a986903fe032c72201596b",
|
| 3451 |
+
"sha256:9cd136184dd5f58892f24001cdce986f5d7e96059d004118d5410671579834a4",
|
| 3452 |
+
"sha256:9eb4fa13c8c7a2404b6a8e3772c17a55b1ba18bc711e25e4d6c0c9f5f541b02a",
|
| 3453 |
+
"sha256:a2bc4e49e8329f3283d99840c136ff2cd1a29e49b5624a46a290f04dff48e079",
|
| 3454 |
+
"sha256:a5645cd45f56895cfe3ca3459aed9ff2d3f9aaa29ff7edf557fa7a23515a3725",
|
| 3455 |
+
"sha256:a9afbc3909d0274d6ac8ec891e30210563b2c8bdd52ebbda14146354e7a69373",
|
| 3456 |
+
"sha256:aa498d1392216fae47eaf10c593e06c34476ced9549657fca713d0d1ba5f7248",
|
| 3457 |
+
"sha256:afd776cf1ebfc7f9aa42a09cf19feadb40a26366802d86c1fba080d8e5e74bdd",
|
| 3458 |
+
"sha256:b335a7c958bc945e10c522c069cd6e5804f4ff20f9a744dd38e748eb602cbbda",
|
| 3459 |
+
"sha256:b3c4817dff8cef5697f5afe5fec6bc1783994d55a68391be24cb7d80d2dbc3a6",
|
| 3460 |
+
"sha256:b79ee64d01d05a5476d5cceb3c27b5535e6bb84ee0f872ba60d9a8cd4d0e6579",
|
| 3461 |
+
"sha256:b87a90f14c68c925817423b0424381f0e16d80fc9a1a1046ef202ab25b19a444",
|
| 3462 |
+
"sha256:bf89e0e4a30714b357f5d46b6f20e0099d38b30d45fa68ea48589faf5f12f62d",
|
| 3463 |
+
"sha256:c058b84c3b24812c859300f3b5abf300daa34df20d4d4f42e9652a4d1c48c8a4",
|
| 3464 |
+
"sha256:c09a6ea87658695e527104cf857c70f79f14e9484605e205217aae0ec27b45fc",
|
| 3465 |
+
"sha256:c57b8e0841f3fce7b703530ed70c7c36269c6d180ea2e02e36b34cb7288c50c7",
|
| 3466 |
+
"sha256:c9cea5b756173bb86e2235f2f871b406a9b9d722417ae31e5391ccaef5348f2c",
|
| 3467 |
+
"sha256:cb39ed598aaf102251483f3e4675c5dd6b289c8142210ef76ba24aae0a8f8aba",
|
| 3468 |
+
"sha256:e036549ad14f2b414c725349cce0772ea34a7ab008e9cd67f9084e4f371d1f32",
|
| 3469 |
+
"sha256:e185ea07a99ce8b8edfc788c586c538c4b1351007e614ceb708fd01b095ef33e",
|
| 3470 |
+
"sha256:e5a4d82bdb4bf1ac1285a68eab02d253ab73355d9f0fe725a97e1e0fa689decb",
|
| 3471 |
+
"sha256:eae27ad7580529a427cfdd52c87abb2dfb15ce2b7a3e0fc29fbb63e2ed6f8120",
|
| 3472 |
+
"sha256:ecef029b69843b82048c5b347d8e6049356aa24ed644006c9a9d7098c3bd3bfd",
|
| 3473 |
+
"sha256:ee3bee874cb1fadee2ff2b79fc9fc808aa638670f28b2145074538d4a6a5028e",
|
| 3474 |
+
"sha256:f0d3de936b192980209d7b5149e3c98977c3810d401482d05fb6d668d53c1c63",
|
| 3475 |
+
"sha256:f53c0d6a859b2db58332e0e6a921582a02c1677cc93d4cbb36fdf49709b327b2",
|
| 3476 |
+
"sha256:f9d57f1b3061b3e21476b0ad5f0397b112b94ace21d1f439f2db472e568178ae"
|
| 3477 |
+
],
|
| 3478 |
+
"markers": "python_version >= '3.7'",
|
| 3479 |
+
"version": "==2.0.38"
|
| 3480 |
+
},
|
| 3481 |
"srsly": {
|
| 3482 |
"hashes": [
|
| 3483 |
"sha256:00c2a3e4856e63b7efd47591d049aaee8e5a250e098917f50d93ea68853fab78",
|
|
|
|
| 3522 |
},
|
| 3523 |
"streamlit": {
|
| 3524 |
"hashes": [
|
| 3525 |
+
"sha256:8c48494ccfad33e7d0bc5873151800b203cb71203bfd42bc7418940710ca4970",
|
| 3526 |
+
"sha256:edf333fd3525b7c64b19e1156b483a1a93cbdb09a3a06f26478388d68f971090"
|
| 3527 |
],
|
| 3528 |
"index": "pypi",
|
| 3529 |
+
"markers": "python_version >= '3.9' and python_full_version != '3.9.7'",
|
| 3530 |
+
"version": "==1.42.0"
|
| 3531 |
},
|
| 3532 |
"sudachidict-core": {
|
| 3533 |
"hashes": [
|
|
|
|
| 3577 |
},
|
| 3578 |
"tensorboard": {
|
| 3579 |
"hashes": [
|
| 3580 |
+
"sha256:5e71b98663a641a7ce8a6e70b0be8e1a4c0c45d48760b076383ac4755c35b9a0"
|
| 3581 |
],
|
| 3582 |
"markers": "python_version >= '3.9'",
|
| 3583 |
+
"version": "==2.19.0"
|
| 3584 |
},
|
| 3585 |
"tensorboard-data-server": {
|
| 3586 |
"hashes": [
|
|
|
|
| 3694 |
},
|
| 3695 |
"torch": {
|
| 3696 |
"hashes": [
|
| 3697 |
+
"sha256:09e06f9949e1a0518c5b09fe95295bc9661f219d9ecb6f9893e5123e10696628",
|
| 3698 |
+
"sha256:265f70de5fd45b864d924b64be1797f86e76c8e48a02c2a3a6fc7ec247d2226c",
|
| 3699 |
+
"sha256:2bb8987f3bb1ef2675897034402373ddfc8f5ef0e156e2d8cfc47cacafdda4a9",
|
| 3700 |
+
"sha256:46763dcb051180ce1ed23d1891d9b1598e07d051ce4c9d14307029809c4d64f7",
|
| 3701 |
+
"sha256:4874a73507a300a5d089ceaff616a569e7bb7c613c56f37f63ec3ffac65259cf",
|
| 3702 |
+
"sha256:510c73251bee9ba02ae1cb6c9d4ee0907b3ce6020e62784e2d7598e0cfa4d6cc",
|
| 3703 |
+
"sha256:56eeaf2ecac90da5d9e35f7f35eb286da82673ec3c582e310a8d1631a1c02341",
|
| 3704 |
+
"sha256:683410f97984103148e31b38a8631acf31c3034c020c0f4d26171e7626d8317a",
|
| 3705 |
+
"sha256:6860df13d9911ac158f4c44031609700e1eba07916fff62e21e6ffa0a9e01961",
|
| 3706 |
+
"sha256:7979834102cd5b7a43cc64e87f2f3b14bd0e1458f06e9f88ffa386d07c7446e1",
|
| 3707 |
+
"sha256:7e1448426d0ba3620408218b50aa6ada88aeae34f7a239ba5431f6c8774b1239",
|
| 3708 |
+
"sha256:94fc63b3b4bedd327af588696559f68c264440e2503cc9e6954019473d74ae21",
|
| 3709 |
+
"sha256:9a610afe216a85a8b9bc9f8365ed561535c93e804c2a317ef7fabcc5deda0989",
|
| 3710 |
+
"sha256:9ea955317cfcd3852b1402b62af258ce735c2edeee42ca9419b6bc889e5ae053",
|
| 3711 |
+
"sha256:a0d5e1b9874c1a6c25556840ab8920569a7a4137afa8a63a32cee0bc7d89bd4b",
|
| 3712 |
+
"sha256:b789069020c5588c70d5c2158ac0aa23fd24a028f34a8b4fcb8fcb4d7efcf5fb",
|
| 3713 |
+
"sha256:bb2c6c3e65049f081940f5ab15c9136c7de40d3f01192541c920a07c7c585b7e",
|
| 3714 |
+
"sha256:c4f103a49830ce4c7561ef4434cc7926e5a5fe4e5eb100c19ab36ea1e2b634ab",
|
| 3715 |
+
"sha256:ccbd0320411fe1a3b3fec7b4d3185aa7d0c52adac94480ab024b5c8f74a0bf1d",
|
| 3716 |
+
"sha256:ff96f4038f8af9f7ec4231710ed4549da1bdebad95923953a25045dcf6fd87e2"
|
| 3717 |
],
|
| 3718 |
"index": "pypi",
|
| 3719 |
+
"markers": "python_full_version >= '3.9.0'",
|
| 3720 |
+
"version": "==2.6.0"
|
| 3721 |
},
|
| 3722 |
"torchaudio": {
|
| 3723 |
"hashes": [
|
| 3724 |
+
"sha256:04803a969710bdb77a4ddfdb85a32fa9b9e0310dc91f7eb7e54d6083dd69bfab",
|
| 3725 |
+
"sha256:0eda1cd876f44fc014dc04aa680db2fa355a83df5d834398db6dd5f5cd911f4c",
|
| 3726 |
+
"sha256:0f0db5c997d031c34066d8be1c0ce7d2a1f2b6c016a92885b20b00bfeb17b753",
|
| 3727 |
+
"sha256:22798d5d8e37869bd5875d37f42270efbeb8ae94bda97fed40c1c5e0e1c62fa3",
|
| 3728 |
+
"sha256:377b177a3d683a9163e4cab5a06f0346dac9ff96fa527477338fd90fc6a2a4b6",
|
| 3729 |
+
"sha256:393fa74ec40d167f0170728ea21c9b5e0f830648fd02df7db2bf7e62f64245ec",
|
| 3730 |
+
"sha256:52182f6de4e7b342d139e54b703185d428de9cce3c4cf914a9b2ab2359d192a3",
|
| 3731 |
+
"sha256:52f15185349c370fc1faa84e8b8b2782c007472db9d586a16bba314130b322f2",
|
| 3732 |
+
"sha256:6291d9507dc1d6b4ffe8843fbfb201e6c8270dd8c42ad70bb76226c0ebdcad56",
|
| 3733 |
+
"sha256:66f2e0bd5ab56fd81419d2f5afb74a9a70141688594646441756c8c24f424a73",
|
| 3734 |
+
"sha256:715aa21f6bdbd085454c313ae3a2c7cc07bf2e8cf05752f819afb5b4c57f4e6f",
|
| 3735 |
+
"sha256:72e77055d8e742475c6dfacf59fab09b1fc94d4423e14897e188b67cad3851c6",
|
| 3736 |
+
"sha256:7d0e4b08c42325bf4b887de9a25c44ed882997001740e1bd7d901f65581cf1ab",
|
| 3737 |
+
"sha256:86d6239792bf94741a41acd6fe3d549faaf0d50e7275d17d076a190bd007e2f9",
|
| 3738 |
+
"sha256:8c1a4d08e35a9ceaadadbff6e60bcb3442482f800369be350103dfd08b4ddf52",
|
| 3739 |
+
"sha256:9d8e07789452efdb8132d62afe21f2293a72805f26c2891c6c53e4e4df38ddf6",
|
| 3740 |
+
"sha256:b521ea9618fb4c29a6f8071628170c222291f46a48a3bf424cfeb488f54af714",
|
| 3741 |
+
"sha256:c12fc41241b8dfce3ccc1917f1c81a0f92f532d9917706600046f1eb21d2d765",
|
| 3742 |
+
"sha256:c6386bfa478afae2137715bb60f35520e3b05f5fc6d3bcc6969cf9cdfb11c09c",
|
| 3743 |
+
"sha256:d855da878a28c2e5e6fb3d76fcddd544f4d957a320b29602cea5af2fe0ad1f3a"
|
| 3744 |
],
|
| 3745 |
"index": "pypi",
|
| 3746 |
+
"version": "==2.6.0"
|
| 3747 |
},
|
| 3748 |
"tornado": {
|
| 3749 |
"hashes": [
|
|
|
|
| 3788 |
},
|
| 3789 |
"triton": {
|
| 3790 |
"hashes": [
|
| 3791 |
+
"sha256:30ceed0eff2c4a73b14eb63e052992f44bbdf175f3fad21e1ac8097a772de7ee",
|
| 3792 |
+
"sha256:8009a1fb093ee8546495e96731336a33fb8856a38e45bb4ab6affd6dbc3ba220",
|
| 3793 |
+
"sha256:8d9b215efc1c26fa7eefb9a157915c92d52e000d2bf83e5f69704047e63f125c",
|
| 3794 |
+
"sha256:b3e54983cd51875855da7c68ec05c05cf8bb08df361b1d5b69e05e40b0c9bd62",
|
| 3795 |
+
"sha256:e5dfa23ba84541d7c0a531dfce76d8bcd19159d50a4a8b14ad01e91734a5c1b0"
|
| 3796 |
],
|
| 3797 |
+
"markers": "platform_system == 'Linux' and platform_machine == 'x86_64'",
|
| 3798 |
+
"version": "==3.2.0"
|
| 3799 |
},
|
| 3800 |
"tts": {
|
| 3801 |
"hashes": [
|
|
|
|
| 3834 |
},
|
| 3835 |
"tzlocal": {
|
| 3836 |
"hashes": [
|
| 3837 |
+
"sha256:2fafbfc07e9d8b49ade18f898d6bcd37ae88ce3ad6486842a2e4f03af68323d2",
|
| 3838 |
+
"sha256:3814135a1bb29763c6e4f08fd6e41dbb435c7a60bfbb03270211bcc537187d8c"
|
| 3839 |
],
|
| 3840 |
+
"markers": "python_version >= '3.9'",
|
| 3841 |
+
"version": "==5.3"
|
| 3842 |
},
|
| 3843 |
"umap-learn": {
|
| 3844 |
"hashes": [
|
|
|
|
| 3855 |
"markers": "python_version >= '3.5'",
|
| 3856 |
"version": "==1.3.8"
|
| 3857 |
},
|
| 3858 |
+
"uritemplate": {
|
| 3859 |
+
"hashes": [
|
| 3860 |
+
"sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0",
|
| 3861 |
+
"sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e"
|
| 3862 |
+
],
|
| 3863 |
+
"markers": "python_version >= '3.6'",
|
| 3864 |
+
"version": "==4.1.1"
|
| 3865 |
+
},
|
| 3866 |
"urllib3": {
|
| 3867 |
"hashes": [
|
| 3868 |
"sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df",
|
|
|
|
| 4103 |
],
|
| 4104 |
"markers": "python_version >= '3.9'",
|
| 4105 |
"version": "==1.18.3"
|
| 4106 |
+
},
|
| 4107 |
+
"zstandard": {
|
| 4108 |
+
"hashes": [
|
| 4109 |
+
"sha256:034b88913ecc1b097f528e42b539453fa82c3557e414b3de9d5632c80439a473",
|
| 4110 |
+
"sha256:0a7f0804bb3799414af278e9ad51be25edf67f78f916e08afdb983e74161b916",
|
| 4111 |
+
"sha256:11e3bf3c924853a2d5835b24f03eeba7fc9b07d8ca499e247e06ff5676461a15",
|
| 4112 |
+
"sha256:12a289832e520c6bd4dcaad68e944b86da3bad0d339ef7989fb7e88f92e96072",
|
| 4113 |
+
"sha256:1516c8c37d3a053b01c1c15b182f3b5f5eef19ced9b930b684a73bad121addf4",
|
| 4114 |
+
"sha256:157e89ceb4054029a289fb504c98c6a9fe8010f1680de0201b3eb5dc20aa6d9e",
|
| 4115 |
+
"sha256:1bfe8de1da6d104f15a60d4a8a768288f66aa953bbe00d027398b93fb9680b26",
|
| 4116 |
+
"sha256:1e172f57cd78c20f13a3415cc8dfe24bf388614324d25539146594c16d78fcc8",
|
| 4117 |
+
"sha256:1fd7e0f1cfb70eb2f95a19b472ee7ad6d9a0a992ec0ae53286870c104ca939e5",
|
| 4118 |
+
"sha256:203d236f4c94cd8379d1ea61db2fce20730b4c38d7f1c34506a31b34edc87bdd",
|
| 4119 |
+
"sha256:27d3ef2252d2e62476389ca8f9b0cf2bbafb082a3b6bfe9d90cbcbb5529ecf7c",
|
| 4120 |
+
"sha256:29a2bc7c1b09b0af938b7a8343174b987ae021705acabcbae560166567f5a8db",
|
| 4121 |
+
"sha256:2ef230a8fd217a2015bc91b74f6b3b7d6522ba48be29ad4ea0ca3a3775bf7dd5",
|
| 4122 |
+
"sha256:2ef3775758346d9ac6214123887d25c7061c92afe1f2b354f9388e9e4d48acfc",
|
| 4123 |
+
"sha256:2f146f50723defec2975fb7e388ae3a024eb7151542d1599527ec2aa9cacb152",
|
| 4124 |
+
"sha256:2fb4535137de7e244c230e24f9d1ec194f61721c86ebea04e1581d9d06ea1269",
|
| 4125 |
+
"sha256:32ba3b5ccde2d581b1e6aa952c836a6291e8435d788f656fe5976445865ae045",
|
| 4126 |
+
"sha256:34895a41273ad33347b2fc70e1bff4240556de3c46c6ea430a7ed91f9042aa4e",
|
| 4127 |
+
"sha256:379b378ae694ba78cef921581ebd420c938936a153ded602c4fea612b7eaa90d",
|
| 4128 |
+
"sha256:38302b78a850ff82656beaddeb0bb989a0322a8bbb1bf1ab10c17506681d772a",
|
| 4129 |
+
"sha256:3aa014d55c3af933c1315eb4bb06dd0459661cc0b15cd61077afa6489bec63bb",
|
| 4130 |
+
"sha256:4051e406288b8cdbb993798b9a45c59a4896b6ecee2f875424ec10276a895740",
|
| 4131 |
+
"sha256:40b33d93c6eddf02d2c19f5773196068d875c41ca25730e8288e9b672897c105",
|
| 4132 |
+
"sha256:43da0f0092281bf501f9c5f6f3b4c975a8a0ea82de49ba3f7100e64d422a1274",
|
| 4133 |
+
"sha256:445e4cb5048b04e90ce96a79b4b63140e3f4ab5f662321975679b5f6360b90e2",
|
| 4134 |
+
"sha256:48ef6a43b1846f6025dde6ed9fee0c24e1149c1c25f7fb0a0585572b2f3adc58",
|
| 4135 |
+
"sha256:50a80baba0285386f97ea36239855f6020ce452456605f262b2d33ac35c7770b",
|
| 4136 |
+
"sha256:519fbf169dfac1222a76ba8861ef4ac7f0530c35dd79ba5727014613f91613d4",
|
| 4137 |
+
"sha256:53dd9d5e3d29f95acd5de6802e909ada8d8d8cfa37a3ac64836f3bc4bc5512db",
|
| 4138 |
+
"sha256:53ea7cdc96c6eb56e76bb06894bcfb5dfa93b7adcf59d61c6b92674e24e2dd5e",
|
| 4139 |
+
"sha256:576856e8594e6649aee06ddbfc738fec6a834f7c85bf7cadd1c53d4a58186ef9",
|
| 4140 |
+
"sha256:59556bf80a7094d0cfb9f5e50bb2db27fefb75d5138bb16fb052b61b0e0eeeb0",
|
| 4141 |
+
"sha256:5d41d5e025f1e0bccae4928981e71b2334c60f580bdc8345f824e7c0a4c2a813",
|
| 4142 |
+
"sha256:61062387ad820c654b6a6b5f0b94484fa19515e0c5116faf29f41a6bc91ded6e",
|
| 4143 |
+
"sha256:61f89436cbfede4bc4e91b4397eaa3e2108ebe96d05e93d6ccc95ab5714be512",
|
| 4144 |
+
"sha256:62136da96a973bd2557f06ddd4e8e807f9e13cbb0bfb9cc06cfe6d98ea90dfe0",
|
| 4145 |
+
"sha256:64585e1dba664dc67c7cdabd56c1e5685233fbb1fc1966cfba2a340ec0dfff7b",
|
| 4146 |
+
"sha256:65308f4b4890aa12d9b6ad9f2844b7ee42c7f7a4fd3390425b242ffc57498f48",
|
| 4147 |
+
"sha256:66b689c107857eceabf2cf3d3fc699c3c0fe8ccd18df2219d978c0283e4c508a",
|
| 4148 |
+
"sha256:6a41c120c3dbc0d81a8e8adc73312d668cd34acd7725f036992b1b72d22c1772",
|
| 4149 |
+
"sha256:6f77fa49079891a4aab203d0b1744acc85577ed16d767b52fc089d83faf8d8ed",
|
| 4150 |
+
"sha256:72c68dda124a1a138340fb62fa21b9bf4848437d9ca60bd35db36f2d3345f373",
|
| 4151 |
+
"sha256:752bf8a74412b9892f4e5b58f2f890a039f57037f52c89a740757ebd807f33ea",
|
| 4152 |
+
"sha256:76e79bc28a65f467e0409098fa2c4376931fd3207fbeb6b956c7c476d53746dd",
|
| 4153 |
+
"sha256:774d45b1fac1461f48698a9d4b5fa19a69d47ece02fa469825b442263f04021f",
|
| 4154 |
+
"sha256:77da4c6bfa20dd5ea25cbf12c76f181a8e8cd7ea231c673828d0386b1740b8dc",
|
| 4155 |
+
"sha256:77ea385f7dd5b5676d7fd943292ffa18fbf5c72ba98f7d09fc1fb9e819b34c23",
|
| 4156 |
+
"sha256:80080816b4f52a9d886e67f1f96912891074903238fe54f2de8b786f86baded2",
|
| 4157 |
+
"sha256:80a539906390591dd39ebb8d773771dc4db82ace6372c4d41e2d293f8e32b8db",
|
| 4158 |
+
"sha256:82d17e94d735c99621bf8ebf9995f870a6b3e6d14543b99e201ae046dfe7de70",
|
| 4159 |
+
"sha256:837bb6764be6919963ef41235fd56a6486b132ea64afe5fafb4cb279ac44f259",
|
| 4160 |
+
"sha256:84433dddea68571a6d6bd4fbf8ff398236031149116a7fff6f777ff95cad3df9",
|
| 4161 |
+
"sha256:8c24f21fa2af4bb9f2c492a86fe0c34e6d2c63812a839590edaf177b7398f700",
|
| 4162 |
+
"sha256:8ed7d27cb56b3e058d3cf684d7200703bcae623e1dcc06ed1e18ecda39fee003",
|
| 4163 |
+
"sha256:9206649ec587e6b02bd124fb7799b86cddec350f6f6c14bc82a2b70183e708ba",
|
| 4164 |
+
"sha256:983b6efd649723474f29ed42e1467f90a35a74793437d0bc64a5bf482bedfa0a",
|
| 4165 |
+
"sha256:98da17ce9cbf3bfe4617e836d561e433f871129e3a7ac16d6ef4c680f13a839c",
|
| 4166 |
+
"sha256:9c236e635582742fee16603042553d276cca506e824fa2e6489db04039521e90",
|
| 4167 |
+
"sha256:9da6bc32faac9a293ddfdcb9108d4b20416219461e4ec64dfea8383cac186690",
|
| 4168 |
+
"sha256:a05e6d6218461eb1b4771d973728f0133b2a4613a6779995df557f70794fd60f",
|
| 4169 |
+
"sha256:a0817825b900fcd43ac5d05b8b3079937073d2b1ff9cf89427590718b70dd840",
|
| 4170 |
+
"sha256:a4ae99c57668ca1e78597d8b06d5af837f377f340f4cce993b551b2d7731778d",
|
| 4171 |
+
"sha256:a8c86881813a78a6f4508ef9daf9d4995b8ac2d147dcb1a450448941398091c9",
|
| 4172 |
+
"sha256:a8fffdbd9d1408006baaf02f1068d7dd1f016c6bcb7538682622c556e7b68e35",
|
| 4173 |
+
"sha256:a9b07268d0c3ca5c170a385a0ab9fb7fdd9f5fd866be004c4ea39e44edce47dd",
|
| 4174 |
+
"sha256:ab19a2d91963ed9e42b4e8d77cd847ae8381576585bad79dbd0a8837a9f6620a",
|
| 4175 |
+
"sha256:ac184f87ff521f4840e6ea0b10c0ec90c6b1dcd0bad2f1e4a9a1b4fa177982ea",
|
| 4176 |
+
"sha256:b0e166f698c5a3e914947388c162be2583e0c638a4703fc6a543e23a88dea3c1",
|
| 4177 |
+
"sha256:b2170c7e0367dde86a2647ed5b6f57394ea7f53545746104c6b09fc1f4223573",
|
| 4178 |
+
"sha256:b2d8c62d08e7255f68f7a740bae85b3c9b8e5466baa9cbf7f57f1cde0ac6bc09",
|
| 4179 |
+
"sha256:b4567955a6bc1b20e9c31612e615af6b53733491aeaa19a6b3b37f3b65477094",
|
| 4180 |
+
"sha256:b69bb4f51daf461b15e7b3db033160937d3ff88303a7bc808c67bbc1eaf98c78",
|
| 4181 |
+
"sha256:b8c0bd73aeac689beacd4e7667d48c299f61b959475cdbb91e7d3d88d27c56b9",
|
| 4182 |
+
"sha256:be9b5b8659dff1f913039c2feee1aca499cfbc19e98fa12bc85e037c17ec6ca5",
|
| 4183 |
+
"sha256:bf0a05b6059c0528477fba9054d09179beb63744355cab9f38059548fedd46a9",
|
| 4184 |
+
"sha256:c16842b846a8d2a145223f520b7e18b57c8f476924bda92aeee3a88d11cfc391",
|
| 4185 |
+
"sha256:c363b53e257246a954ebc7c488304b5592b9c53fbe74d03bc1c64dda153fb847",
|
| 4186 |
+
"sha256:c7c517d74bea1a6afd39aa612fa025e6b8011982a0897768a2f7c8ab4ebb78a2",
|
| 4187 |
+
"sha256:d20fd853fbb5807c8e84c136c278827b6167ded66c72ec6f9a14b863d809211c",
|
| 4188 |
+
"sha256:d2240ddc86b74966c34554c49d00eaafa8200a18d3a5b6ffbf7da63b11d74ee2",
|
| 4189 |
+
"sha256:d477ed829077cd945b01fc3115edd132c47e6540ddcd96ca169facff28173057",
|
| 4190 |
+
"sha256:d50d31bfedd53a928fed6707b15a8dbeef011bb6366297cc435accc888b27c20",
|
| 4191 |
+
"sha256:dc1d33abb8a0d754ea4763bad944fd965d3d95b5baef6b121c0c9013eaf1907d",
|
| 4192 |
+
"sha256:dc5d1a49d3f8262be192589a4b72f0d03b72dcf46c51ad5852a4fdc67be7b9e4",
|
| 4193 |
+
"sha256:e2d1a054f8f0a191004675755448d12be47fa9bebbcffa3cdf01db19f2d30a54",
|
| 4194 |
+
"sha256:e7792606d606c8df5277c32ccb58f29b9b8603bf83b48639b7aedf6df4fe8171",
|
| 4195 |
+
"sha256:ed1708dbf4d2e3a1c5c69110ba2b4eb6678262028afd6c6fbcc5a8dac9cda68e",
|
| 4196 |
+
"sha256:f2d4380bf5f62daabd7b751ea2339c1a21d1c9463f1feb7fc2bdcea2c29c3160",
|
| 4197 |
+
"sha256:f3513916e8c645d0610815c257cbfd3242adfd5c4cfa78be514e5a3ebb42a41b",
|
| 4198 |
+
"sha256:f8346bfa098532bc1fb6c7ef06783e969d87a99dd1d2a5a18a892c1d7a643c58",
|
| 4199 |
+
"sha256:f83fa6cae3fff8e98691248c9320356971b59678a17f20656a9e59cd32cee6d8",
|
| 4200 |
+
"sha256:fa6ce8b52c5987b3e34d5674b0ab529a4602b632ebab0a93b07bfb4dfc8f8a33",
|
| 4201 |
+
"sha256:fb2b1ecfef1e67897d336de3a0e3f52478182d6a47eda86cbd42504c5cbd009a",
|
| 4202 |
+
"sha256:fc9ca1c9718cb3b06634c7c8dec57d24e9438b2aa9a0f02b8bb36bf478538880",
|
| 4203 |
+
"sha256:fd30d9c67d13d891f2360b2a120186729c111238ac63b43dbd37a5a40670b8ca",
|
| 4204 |
+
"sha256:fd7699e8fd9969f455ef2926221e0233f81a2542921471382e77a9e2f2b57f4b",
|
| 4205 |
+
"sha256:fe3b385d996ee0822fd46528d9f0443b880d4d05528fd26a9119a54ec3f91c69"
|
| 4206 |
+
],
|
| 4207 |
+
"markers": "python_version >= '3.8'",
|
| 4208 |
+
"version": "==0.23.0"
|
| 4209 |
}
|
| 4210 |
},
|
| 4211 |
"develop": {}
|
claer
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
SHELL=/bin/bash
|
| 2 |
+
SESSION_MANAGER=local/perpetuum-mobile:@/tmp/.ICE-unix/2571,unix/perpetuum-mobile:/tmp/.ICE-unix/2571
|
| 3 |
+
QT_ACCESSIBILITY=1
|
| 4 |
+
PIPENV_VENV_IN_PROJECT=1
|
| 5 |
+
COLORTERM=truecolor
|
| 6 |
+
PYENV_SHELL=bash
|
| 7 |
+
XDG_CONFIG_DIRS=/etc/xdg/xdg-cinnamon:/etc/xdg
|
| 8 |
+
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
|
| 9 |
+
NVM_INC=/home/yoda/.nvm/versions/node/v20.14.0/include/node
|
| 10 |
+
TERM_PROGRAM_VERSION=0.45.11
|
| 11 |
+
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
|
| 12 |
+
LANGUAGE=en_US
|
| 13 |
+
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
|
| 14 |
+
ARGV0=/home/yoda/Programs/cursor-0.45.11-build-250207y6nbaw5qc-x86_64.AppImage
|
| 15 |
+
CINNAMON_VERSION=5.8.4
|
| 16 |
+
HOMEBREW_PREFIX=/home/linuxbrew/.linuxbrew
|
| 17 |
+
DESKTOP_SESSION=cinnamon
|
| 18 |
+
GTK_MODULES=gail:atk-bridge
|
| 19 |
+
XDG_SEAT=seat0
|
| 20 |
+
PWD=/home/yoda/Library/Projects/Portfolio/Polyglot
|
| 21 |
+
PYENV_VIRTUALENV_INIT=1
|
| 22 |
+
GSETTINGS_SCHEMA_DIR=/tmp/.mount_cursorppXwst/usr/share/glib-2.0/schemas:
|
| 23 |
+
LOGNAME=yoda
|
| 24 |
+
XDG_SESSION_DESKTOP=cinnamon
|
| 25 |
+
QT_QPA_PLATFORMTHEME=qt5ct
|
| 26 |
+
XDG_SESSION_TYPE=x11
|
| 27 |
+
MANPATH=/home/linuxbrew/.linuxbrew/share/man:/home/yoda/.nvm/versions/node/v20.14.0/share/man:/home/linuxbrew/.linuxbrew/share/man::
|
| 28 |
+
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
|
| 29 |
+
XAUTHORITY=/home/yoda/.Xauthority
|
| 30 |
+
VSCODE_GIT_ASKPASS_NODE=/tmp/.mount_cursorppXwst/cursor
|
| 31 |
+
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/yoda
|
| 32 |
+
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
|
| 33 |
+
INSIDE_NEMO_PYTHON=
|
| 34 |
+
GDM_LANG=en_US
|
| 35 |
+
HOME=/home/yoda
|
| 36 |
+
LANG=en_US.UTF-8
|
| 37 |
+
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
|
| 38 |
+
XDG_CURRENT_DESKTOP=X-Cinnamon
|
| 39 |
+
VIRTUAL_ENV=/mnt/3b92ea25-2e45-41c8-97d3-58aa8141755e/Videos/Projects/Portfolio/Polyglot/.venv
|
| 40 |
+
GIT_ASKPASS=/tmp/.mount_cursorppXwst/resources/app/extensions/git/dist/askpass.sh
|
| 41 |
+
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
|
| 42 |
+
CHROME_DESKTOP=cursor-url-handler.desktop
|
| 43 |
+
APPDIR=/tmp/.mount_cursorppXwst
|
| 44 |
+
INFOPATH=/home/linuxbrew/.linuxbrew/share/info:/home/linuxbrew/.linuxbrew/share/info:
|
| 45 |
+
GJS_DEBUG_OUTPUT=stderr
|
| 46 |
+
NVM_DIR=/home/yoda/.nvm
|
| 47 |
+
VSCODE_GIT_ASKPASS_EXTRA_ARGS=
|
| 48 |
+
WORKON_HOME=/mnt/3b92ea25-2e45-41c8-97d3-58aa8141755e/Pipenv/virtualenvs
|
| 49 |
+
LESSCLOSE=/usr/bin/lesspipe %s %s
|
| 50 |
+
XDG_SESSION_CLASS=user
|
| 51 |
+
TERM=xterm-256color
|
| 52 |
+
LESSOPEN=| /usr/bin/lesspipe %s
|
| 53 |
+
USER=yoda
|
| 54 |
+
VSCODE_GIT_IPC_HANDLE=/run/user/1000/vscode-git-1303080d47.sock
|
| 55 |
+
HOMEBREW_CELLAR=/home/linuxbrew/.linuxbrew/Cellar
|
| 56 |
+
OWD=/mnt/3b92ea25-2e45-41c8-97d3-58aa8141755e/Programs
|
| 57 |
+
DISPLAY=:0
|
| 58 |
+
SHLVL=1
|
| 59 |
+
NVM_CD_FLAGS=
|
| 60 |
+
HOMEBREW_REPOSITORY=/home/linuxbrew/.linuxbrew/Homebrew
|
| 61 |
+
XDG_VTNR=7
|
| 62 |
+
XDG_SESSION_ID=c2
|
| 63 |
+
VIRTUAL_ENV_PROMPT=Polyglot
|
| 64 |
+
LD_LIBRARY_PATH=/tmp/.mount_cursorppXwst/usr/lib:
|
| 65 |
+
APPIMAGE=/mnt/3b92ea25-2e45-41c8-97d3-58aa8141755e/Programs/cursor-0.45.11-build-250207y6nbaw5qc-x86_64.AppImage
|
| 66 |
+
XDG_RUNTIME_DIR=/run/user/1000
|
| 67 |
+
PS1=\[]633;A\]Polyglot\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ \[]633;B\]
|
| 68 |
+
PYENV_ROOT=/home/yoda/.pyenv
|
| 69 |
+
VSCODE_GIT_ASKPASS_MAIN=/tmp/.mount_cursorppXwst/resources/app/extensions/git/dist/askpass-main.js
|
| 70 |
+
GTK3_MODULES=xapp-gtk3-module
|
| 71 |
+
XDG_DATA_DIRS=/tmp/.mount_cursorppXwst/usr/share/:./share/:/usr/share/gnome:/usr/local/share/:/usr/share/:/usr/share/cinnamon:/usr/share/gnome:/home/yoda/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share:/usr/share/gnome/:/usr/local/share/:/usr/share/
|
| 72 |
+
GDK_BACKEND=x11
|
| 73 |
+
PATH=/home/yoda/.cursor/extensions/ms-python.python-2024.12.3-linux-x64/python_files/deactivate/bash:/mnt/3b92ea25-2e45-41c8-97d3-58aa8141755e/Videos/Projects/Portfolio/Polyglot/.venv/bin:/home/yoda/.pyenv/plugins/pyenv-virtualenv/shims:/home/yoda/.pyenv/shims:/home/yoda/.pyenv/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/yoda/.cursor/extensions/ms-python.python-2024.12.3-linux-x64/python_files/deactivate/bash:/mnt/3b92ea25-2e45-41c8-97d3-58aa8141755e/Videos/Projects/Portfolio/Polyglot/.venv/bin:/home/yoda/.local/bin:/home/yoda/.nvm/versions/node/v20.14.0/bin:/home/yoda/.pyenv/plugins/pyenv-virtualenv/shims:/home/yoda/.pyenv/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/tmp/.mount_cursorppXwst:/tmp/.mount_cursorppXwst/usr/sbin:/home/yoda/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
|
| 74 |
+
GDMSESSION=cinnamon
|
| 75 |
+
ORIGINAL_XDG_CURRENT_DESKTOP=X-Cinnamon
|
| 76 |
+
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
|
| 77 |
+
NVM_BIN=/home/yoda/.nvm/versions/node/v20.14.0/bin
|
| 78 |
+
GIO_LAUNCHED_DESKTOP_FILE_PID=17493
|
| 79 |
+
GIO_LAUNCHED_DESKTOP_FILE=/usr/share/applications/nemo.desktop
|
| 80 |
+
TERM_PROGRAM=vscode
|
| 81 |
+
CURSOR_TRACE_ID=e0d3073a403b4ea3a55c0b6407972554
|
| 82 |
+
_=/bin/python3
|
instructions/diagrams/AppFlow.excalidraw
ADDED
|
@@ -0,0 +1,2820 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"type": "excalidraw",
|
| 3 |
+
"version": 2,
|
| 4 |
+
"source": "https://excalidraw.com",
|
| 5 |
+
"elements": [
|
| 6 |
+
{
|
| 7 |
+
"id": "wEufgc20D-l-mdtgWLXnT",
|
| 8 |
+
"type": "rectangle",
|
| 9 |
+
"x": 1049.5999755859375,
|
| 10 |
+
"y": 328.9332275390625,
|
| 11 |
+
"width": 226.8443603515625,
|
| 12 |
+
"height": 66.13334655761719,
|
| 13 |
+
"angle": 0,
|
| 14 |
+
"strokeColor": "#1e1e1e",
|
| 15 |
+
"backgroundColor": "transparent",
|
| 16 |
+
"fillStyle": "solid",
|
| 17 |
+
"strokeWidth": 2,
|
| 18 |
+
"strokeStyle": "solid",
|
| 19 |
+
"roughness": 1,
|
| 20 |
+
"opacity": 100,
|
| 21 |
+
"groupIds": [],
|
| 22 |
+
"frameId": null,
|
| 23 |
+
"index": "a0",
|
| 24 |
+
"roundness": {
|
| 25 |
+
"type": 3
|
| 26 |
+
},
|
| 27 |
+
"seed": 673334670,
|
| 28 |
+
"version": 193,
|
| 29 |
+
"versionNonce": 1990761870,
|
| 30 |
+
"isDeleted": false,
|
| 31 |
+
"boundElements": [
|
| 32 |
+
{
|
| 33 |
+
"type": "text",
|
| 34 |
+
"id": "4iRT9IIgWzQp78bB1HJtR"
|
| 35 |
+
},
|
| 36 |
+
{
|
| 37 |
+
"id": "DZEp77gEfCN0TqfeYrqOD",
|
| 38 |
+
"type": "arrow"
|
| 39 |
+
},
|
| 40 |
+
{
|
| 41 |
+
"id": "3X5XGRrrxXRErQWuuf1J7",
|
| 42 |
+
"type": "arrow"
|
| 43 |
+
}
|
| 44 |
+
],
|
| 45 |
+
"updated": 1739436555417,
|
| 46 |
+
"link": null,
|
| 47 |
+
"locked": false
|
| 48 |
+
},
|
| 49 |
+
{
|
| 50 |
+
"id": "4iRT9IIgWzQp78bB1HJtR",
|
| 51 |
+
"type": "text",
|
| 52 |
+
"x": 1112.6022109985352,
|
| 53 |
+
"y": 349.4999008178711,
|
| 54 |
+
"width": 100.83988952636719,
|
| 55 |
+
"height": 25,
|
| 56 |
+
"angle": 0,
|
| 57 |
+
"strokeColor": "#1e1e1e",
|
| 58 |
+
"backgroundColor": "transparent",
|
| 59 |
+
"fillStyle": "solid",
|
| 60 |
+
"strokeWidth": 2,
|
| 61 |
+
"strokeStyle": "solid",
|
| 62 |
+
"roughness": 1,
|
| 63 |
+
"opacity": 100,
|
| 64 |
+
"groupIds": [],
|
| 65 |
+
"frameId": null,
|
| 66 |
+
"index": "a0V",
|
| 67 |
+
"roundness": null,
|
| 68 |
+
"seed": 1610706638,
|
| 69 |
+
"version": 129,
|
| 70 |
+
"versionNonce": 991542222,
|
| 71 |
+
"isDeleted": false,
|
| 72 |
+
"boundElements": [],
|
| 73 |
+
"updated": 1739436555417,
|
| 74 |
+
"link": null,
|
| 75 |
+
"locked": false,
|
| 76 |
+
"text": "text input",
|
| 77 |
+
"fontSize": 20,
|
| 78 |
+
"fontFamily": 5,
|
| 79 |
+
"textAlign": "center",
|
| 80 |
+
"verticalAlign": "middle",
|
| 81 |
+
"containerId": "wEufgc20D-l-mdtgWLXnT",
|
| 82 |
+
"originalText": "text input",
|
| 83 |
+
"autoResize": true,
|
| 84 |
+
"lineHeight": 1.25
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"id": "N3a4gTaFwF4wJwxYBngYJ",
|
| 88 |
+
"type": "text",
|
| 89 |
+
"x": 1291.3778076171875,
|
| 90 |
+
"y": 109.9111328125,
|
| 91 |
+
"width": 79.11991882324219,
|
| 92 |
+
"height": 25,
|
| 93 |
+
"angle": 0,
|
| 94 |
+
"strokeColor": "#1e1e1e",
|
| 95 |
+
"backgroundColor": "transparent",
|
| 96 |
+
"fillStyle": "solid",
|
| 97 |
+
"strokeWidth": 2,
|
| 98 |
+
"strokeStyle": "solid",
|
| 99 |
+
"roughness": 1,
|
| 100 |
+
"opacity": 100,
|
| 101 |
+
"groupIds": [],
|
| 102 |
+
"frameId": null,
|
| 103 |
+
"index": "a2",
|
| 104 |
+
"roundness": null,
|
| 105 |
+
"seed": 1917973650,
|
| 106 |
+
"version": 150,
|
| 107 |
+
"versionNonce": 300251214,
|
| 108 |
+
"isDeleted": false,
|
| 109 |
+
"boundElements": [],
|
| 110 |
+
"updated": 1739435856511,
|
| 111 |
+
"link": null,
|
| 112 |
+
"locked": false,
|
| 113 |
+
"text": "Polyglot",
|
| 114 |
+
"fontSize": 20,
|
| 115 |
+
"fontFamily": 5,
|
| 116 |
+
"textAlign": "left",
|
| 117 |
+
"verticalAlign": "top",
|
| 118 |
+
"containerId": null,
|
| 119 |
+
"originalText": "Polyglot",
|
| 120 |
+
"autoResize": true,
|
| 121 |
+
"lineHeight": 1.25
|
| 122 |
+
},
|
| 123 |
+
{
|
| 124 |
+
"id": "1LwWmxwxo3oOtd8zyJsR2",
|
| 125 |
+
"type": "rectangle",
|
| 126 |
+
"x": 1409.0664672851562,
|
| 127 |
+
"y": 321.46659088134766,
|
| 128 |
+
"width": 226.8443603515625,
|
| 129 |
+
"height": 66.13334655761719,
|
| 130 |
+
"angle": 0,
|
| 131 |
+
"strokeColor": "#1e1e1e",
|
| 132 |
+
"backgroundColor": "transparent",
|
| 133 |
+
"fillStyle": "solid",
|
| 134 |
+
"strokeWidth": 2,
|
| 135 |
+
"strokeStyle": "solid",
|
| 136 |
+
"roughness": 1,
|
| 137 |
+
"opacity": 100,
|
| 138 |
+
"groupIds": [],
|
| 139 |
+
"frameId": null,
|
| 140 |
+
"index": "a3",
|
| 141 |
+
"roundness": {
|
| 142 |
+
"type": 3
|
| 143 |
+
},
|
| 144 |
+
"seed": 223842830,
|
| 145 |
+
"version": 242,
|
| 146 |
+
"versionNonce": 1639868046,
|
| 147 |
+
"isDeleted": false,
|
| 148 |
+
"boundElements": [
|
| 149 |
+
{
|
| 150 |
+
"type": "text",
|
| 151 |
+
"id": "UUEuTFXnWuviUmx9OMvH2"
|
| 152 |
+
},
|
| 153 |
+
{
|
| 154 |
+
"id": "KKYXAU7nTKYpdZPmLHxqe",
|
| 155 |
+
"type": "arrow"
|
| 156 |
+
},
|
| 157 |
+
{
|
| 158 |
+
"id": "u3Jvq2udAipXeegyZU1Ai",
|
| 159 |
+
"type": "arrow"
|
| 160 |
+
}
|
| 161 |
+
],
|
| 162 |
+
"updated": 1739436555417,
|
| 163 |
+
"link": null,
|
| 164 |
+
"locked": false
|
| 165 |
+
},
|
| 166 |
+
{
|
| 167 |
+
"id": "UUEuTFXnWuviUmx9OMvH2",
|
| 168 |
+
"type": "text",
|
| 169 |
+
"x": 1468.6787033081055,
|
| 170 |
+
"y": 342.03326416015625,
|
| 171 |
+
"width": 107.61988830566406,
|
| 172 |
+
"height": 25,
|
| 173 |
+
"angle": 0,
|
| 174 |
+
"strokeColor": "#1e1e1e",
|
| 175 |
+
"backgroundColor": "transparent",
|
| 176 |
+
"fillStyle": "solid",
|
| 177 |
+
"strokeWidth": 2,
|
| 178 |
+
"strokeStyle": "solid",
|
| 179 |
+
"roughness": 1,
|
| 180 |
+
"opacity": 100,
|
| 181 |
+
"groupIds": [],
|
| 182 |
+
"frameId": null,
|
| 183 |
+
"index": "a4",
|
| 184 |
+
"roundness": null,
|
| 185 |
+
"seed": 2029396046,
|
| 186 |
+
"version": 183,
|
| 187 |
+
"versionNonce": 848192718,
|
| 188 |
+
"isDeleted": false,
|
| 189 |
+
"boundElements": [],
|
| 190 |
+
"updated": 1739436555417,
|
| 191 |
+
"link": null,
|
| 192 |
+
"locked": false,
|
| 193 |
+
"text": "audio input",
|
| 194 |
+
"fontSize": 20,
|
| 195 |
+
"fontFamily": 5,
|
| 196 |
+
"textAlign": "center",
|
| 197 |
+
"verticalAlign": "middle",
|
| 198 |
+
"containerId": "1LwWmxwxo3oOtd8zyJsR2",
|
| 199 |
+
"originalText": "audio input",
|
| 200 |
+
"autoResize": true,
|
| 201 |
+
"lineHeight": 1.25
|
| 202 |
+
},
|
| 203 |
+
{
|
| 204 |
+
"id": "qWnNFvspSJfngiQK7c6tU",
|
| 205 |
+
"type": "rectangle",
|
| 206 |
+
"x": 1396.2664184570312,
|
| 207 |
+
"y": 413.19986724853516,
|
| 208 |
+
"width": 226.8443603515625,
|
| 209 |
+
"height": 66.13334655761719,
|
| 210 |
+
"angle": 0,
|
| 211 |
+
"strokeColor": "#1e1e1e",
|
| 212 |
+
"backgroundColor": "transparent",
|
| 213 |
+
"fillStyle": "solid",
|
| 214 |
+
"strokeWidth": 2,
|
| 215 |
+
"strokeStyle": "solid",
|
| 216 |
+
"roughness": 1,
|
| 217 |
+
"opacity": 100,
|
| 218 |
+
"groupIds": [],
|
| 219 |
+
"frameId": null,
|
| 220 |
+
"index": "a5",
|
| 221 |
+
"roundness": {
|
| 222 |
+
"type": 3
|
| 223 |
+
},
|
| 224 |
+
"seed": 86937294,
|
| 225 |
+
"version": 369,
|
| 226 |
+
"versionNonce": 978941330,
|
| 227 |
+
"isDeleted": false,
|
| 228 |
+
"boundElements": [
|
| 229 |
+
{
|
| 230 |
+
"type": "text",
|
| 231 |
+
"id": "d1seOKVVllobMcoTVAF7q"
|
| 232 |
+
},
|
| 233 |
+
{
|
| 234 |
+
"id": "KKYXAU7nTKYpdZPmLHxqe",
|
| 235 |
+
"type": "arrow"
|
| 236 |
+
},
|
| 237 |
+
{
|
| 238 |
+
"id": "obGZKTevXg4XAoWm_IZ9Z",
|
| 239 |
+
"type": "arrow"
|
| 240 |
+
}
|
| 241 |
+
],
|
| 242 |
+
"updated": 1739437644714,
|
| 243 |
+
"link": null,
|
| 244 |
+
"locked": false
|
| 245 |
+
},
|
| 246 |
+
{
|
| 247 |
+
"id": "d1seOKVVllobMcoTVAF7q",
|
| 248 |
+
"type": "text",
|
| 249 |
+
"x": 1461.2686614990234,
|
| 250 |
+
"y": 433.76654052734375,
|
| 251 |
+
"width": 96.83987426757812,
|
| 252 |
+
"height": 25,
|
| 253 |
+
"angle": 0,
|
| 254 |
+
"strokeColor": "#1e1e1e",
|
| 255 |
+
"backgroundColor": "transparent",
|
| 256 |
+
"fillStyle": "solid",
|
| 257 |
+
"strokeWidth": 2,
|
| 258 |
+
"strokeStyle": "solid",
|
| 259 |
+
"roughness": 1,
|
| 260 |
+
"opacity": 100,
|
| 261 |
+
"groupIds": [],
|
| 262 |
+
"frameId": null,
|
| 263 |
+
"index": "a6",
|
| 264 |
+
"roundness": null,
|
| 265 |
+
"seed": 2119140622,
|
| 266 |
+
"version": 315,
|
| 267 |
+
"versionNonce": 1307934030,
|
| 268 |
+
"isDeleted": false,
|
| 269 |
+
"boundElements": [],
|
| 270 |
+
"updated": 1739436570416,
|
| 271 |
+
"link": null,
|
| 272 |
+
"locked": false,
|
| 273 |
+
"text": "transcribe",
|
| 274 |
+
"fontSize": 20,
|
| 275 |
+
"fontFamily": 5,
|
| 276 |
+
"textAlign": "center",
|
| 277 |
+
"verticalAlign": "middle",
|
| 278 |
+
"containerId": "qWnNFvspSJfngiQK7c6tU",
|
| 279 |
+
"originalText": "transcribe",
|
| 280 |
+
"autoResize": true,
|
| 281 |
+
"lineHeight": 1.25
|
| 282 |
+
},
|
| 283 |
+
{
|
| 284 |
+
"id": "KKYXAU7nTKYpdZPmLHxqe",
|
| 285 |
+
"type": "arrow",
|
| 286 |
+
"x": 1521.066650390625,
|
| 287 |
+
"y": 386.5333251953125,
|
| 288 |
+
"width": 9.530270104567307,
|
| 289 |
+
"height": 24.8887939453125,
|
| 290 |
+
"angle": 0,
|
| 291 |
+
"strokeColor": "#1e1e1e",
|
| 292 |
+
"backgroundColor": "transparent",
|
| 293 |
+
"fillStyle": "solid",
|
| 294 |
+
"strokeWidth": 2,
|
| 295 |
+
"strokeStyle": "solid",
|
| 296 |
+
"roughness": 1,
|
| 297 |
+
"opacity": 100,
|
| 298 |
+
"groupIds": [],
|
| 299 |
+
"frameId": null,
|
| 300 |
+
"index": "a7",
|
| 301 |
+
"roundness": {
|
| 302 |
+
"type": 2
|
| 303 |
+
},
|
| 304 |
+
"seed": 1789217422,
|
| 305 |
+
"version": 416,
|
| 306 |
+
"versionNonce": 336566286,
|
| 307 |
+
"isDeleted": false,
|
| 308 |
+
"boundElements": [],
|
| 309 |
+
"updated": 1739436570450,
|
| 310 |
+
"link": null,
|
| 311 |
+
"locked": false,
|
| 312 |
+
"points": [
|
| 313 |
+
[
|
| 314 |
+
0,
|
| 315 |
+
0
|
| 316 |
+
],
|
| 317 |
+
[
|
| 318 |
+
-9.530270104567307,
|
| 319 |
+
24.8887939453125
|
| 320 |
+
]
|
| 321 |
+
],
|
| 322 |
+
"lastCommittedPoint": null,
|
| 323 |
+
"startBinding": {
|
| 324 |
+
"elementId": "1LwWmxwxo3oOtd8zyJsR2",
|
| 325 |
+
"focus": 0.020106376849068606,
|
| 326 |
+
"gap": 1,
|
| 327 |
+
"fixedPoint": null
|
| 328 |
+
},
|
| 329 |
+
"endBinding": {
|
| 330 |
+
"elementId": "qWnNFvspSJfngiQK7c6tU",
|
| 331 |
+
"focus": -0.0911666024609831,
|
| 332 |
+
"gap": 1.7777481079101562,
|
| 333 |
+
"fixedPoint": null
|
| 334 |
+
},
|
| 335 |
+
"startArrowhead": null,
|
| 336 |
+
"endArrowhead": "arrow",
|
| 337 |
+
"elbowed": false
|
| 338 |
+
},
|
| 339 |
+
{
|
| 340 |
+
"id": "HXIKjJvzQzR2zEsPTWBHk",
|
| 341 |
+
"type": "ellipse",
|
| 342 |
+
"x": 1284.977783203125,
|
| 343 |
+
"y": 175.33323669433594,
|
| 344 |
+
"width": 135.822265625,
|
| 345 |
+
"height": 85,
|
| 346 |
+
"angle": 0,
|
| 347 |
+
"strokeColor": "#1e1e1e",
|
| 348 |
+
"backgroundColor": "transparent",
|
| 349 |
+
"fillStyle": "solid",
|
| 350 |
+
"strokeWidth": 2,
|
| 351 |
+
"strokeStyle": "solid",
|
| 352 |
+
"roughness": 1,
|
| 353 |
+
"opacity": 100,
|
| 354 |
+
"groupIds": [],
|
| 355 |
+
"frameId": null,
|
| 356 |
+
"index": "a8",
|
| 357 |
+
"roundness": {
|
| 358 |
+
"type": 2
|
| 359 |
+
},
|
| 360 |
+
"seed": 619080910,
|
| 361 |
+
"version": 153,
|
| 362 |
+
"versionNonce": 1398945486,
|
| 363 |
+
"isDeleted": false,
|
| 364 |
+
"boundElements": [
|
| 365 |
+
{
|
| 366 |
+
"type": "text",
|
| 367 |
+
"id": "ddGhaBHov4FaBkfD3gxud"
|
| 368 |
+
},
|
| 369 |
+
{
|
| 370 |
+
"id": "u3Jvq2udAipXeegyZU1Ai",
|
| 371 |
+
"type": "arrow"
|
| 372 |
+
},
|
| 373 |
+
{
|
| 374 |
+
"id": "DZEp77gEfCN0TqfeYrqOD",
|
| 375 |
+
"type": "arrow"
|
| 376 |
+
}
|
| 377 |
+
],
|
| 378 |
+
"updated": 1739436555417,
|
| 379 |
+
"link": null,
|
| 380 |
+
"locked": false
|
| 381 |
+
},
|
| 382 |
+
{
|
| 383 |
+
"id": "ddGhaBHov4FaBkfD3gxud",
|
| 384 |
+
"type": "text",
|
| 385 |
+
"x": 1314.8285307172914,
|
| 386 |
+
"y": 192.78119849390765,
|
| 387 |
+
"width": 76.07992553710938,
|
| 388 |
+
"height": 50,
|
| 389 |
+
"angle": 0,
|
| 390 |
+
"strokeColor": "#1e1e1e",
|
| 391 |
+
"backgroundColor": "transparent",
|
| 392 |
+
"fillStyle": "solid",
|
| 393 |
+
"strokeWidth": 2,
|
| 394 |
+
"strokeStyle": "solid",
|
| 395 |
+
"roughness": 1,
|
| 396 |
+
"opacity": 100,
|
| 397 |
+
"groupIds": [],
|
| 398 |
+
"frameId": null,
|
| 399 |
+
"index": "a9",
|
| 400 |
+
"roundness": null,
|
| 401 |
+
"seed": 2049036302,
|
| 402 |
+
"version": 125,
|
| 403 |
+
"versionNonce": 399387918,
|
| 404 |
+
"isDeleted": false,
|
| 405 |
+
"boundElements": [],
|
| 406 |
+
"updated": 1739436555417,
|
| 407 |
+
"link": null,
|
| 408 |
+
"locked": false,
|
| 409 |
+
"text": "User/ch\nat",
|
| 410 |
+
"fontSize": 20,
|
| 411 |
+
"fontFamily": 5,
|
| 412 |
+
"textAlign": "center",
|
| 413 |
+
"verticalAlign": "middle",
|
| 414 |
+
"containerId": "HXIKjJvzQzR2zEsPTWBHk",
|
| 415 |
+
"originalText": "User/chat",
|
| 416 |
+
"autoResize": true,
|
| 417 |
+
"lineHeight": 1.25
|
| 418 |
+
},
|
| 419 |
+
{
|
| 420 |
+
"id": "u3Jvq2udAipXeegyZU1Ai",
|
| 421 |
+
"type": "arrow",
|
| 422 |
+
"x": 1409.42236328125,
|
| 423 |
+
"y": 237.19989013671875,
|
| 424 |
+
"width": 95.2886962890625,
|
| 425 |
+
"height": 80.35556030273438,
|
| 426 |
+
"angle": 0,
|
| 427 |
+
"strokeColor": "#1e1e1e",
|
| 428 |
+
"backgroundColor": "transparent",
|
| 429 |
+
"fillStyle": "solid",
|
| 430 |
+
"strokeWidth": 2,
|
| 431 |
+
"strokeStyle": "solid",
|
| 432 |
+
"roughness": 1,
|
| 433 |
+
"opacity": 100,
|
| 434 |
+
"groupIds": [],
|
| 435 |
+
"frameId": null,
|
| 436 |
+
"index": "aA",
|
| 437 |
+
"roundness": {
|
| 438 |
+
"type": 2
|
| 439 |
+
},
|
| 440 |
+
"seed": 720733074,
|
| 441 |
+
"version": 389,
|
| 442 |
+
"versionNonce": 1688510034,
|
| 443 |
+
"isDeleted": false,
|
| 444 |
+
"boundElements": [],
|
| 445 |
+
"updated": 1739436556162,
|
| 446 |
+
"link": null,
|
| 447 |
+
"locked": false,
|
| 448 |
+
"points": [
|
| 449 |
+
[
|
| 450 |
+
0,
|
| 451 |
+
0
|
| 452 |
+
],
|
| 453 |
+
[
|
| 454 |
+
95.2886962890625,
|
| 455 |
+
80.35556030273438
|
| 456 |
+
]
|
| 457 |
+
],
|
| 458 |
+
"lastCommittedPoint": null,
|
| 459 |
+
"startBinding": {
|
| 460 |
+
"elementId": "HXIKjJvzQzR2zEsPTWBHk",
|
| 461 |
+
"focus": -0.3969277448589378,
|
| 462 |
+
"gap": 1,
|
| 463 |
+
"fixedPoint": null
|
| 464 |
+
},
|
| 465 |
+
"endBinding": {
|
| 466 |
+
"elementId": "1LwWmxwxo3oOtd8zyJsR2",
|
| 467 |
+
"focus": 0.17081471868479614,
|
| 468 |
+
"gap": 3.9111404418945312,
|
| 469 |
+
"fixedPoint": null
|
| 470 |
+
},
|
| 471 |
+
"startArrowhead": null,
|
| 472 |
+
"endArrowhead": "arrow",
|
| 473 |
+
"elbowed": false
|
| 474 |
+
},
|
| 475 |
+
{
|
| 476 |
+
"id": "DZEp77gEfCN0TqfeYrqOD",
|
| 477 |
+
"type": "arrow",
|
| 478 |
+
"x": 1300.6221923828125,
|
| 479 |
+
"y": 238.62213134765625,
|
| 480 |
+
"width": 153.5999755859375,
|
| 481 |
+
"height": 91.022216796875,
|
| 482 |
+
"angle": 0,
|
| 483 |
+
"strokeColor": "#1e1e1e",
|
| 484 |
+
"backgroundColor": "transparent",
|
| 485 |
+
"fillStyle": "solid",
|
| 486 |
+
"strokeWidth": 2,
|
| 487 |
+
"strokeStyle": "solid",
|
| 488 |
+
"roughness": 1,
|
| 489 |
+
"opacity": 100,
|
| 490 |
+
"groupIds": [],
|
| 491 |
+
"frameId": null,
|
| 492 |
+
"index": "aB",
|
| 493 |
+
"roundness": {
|
| 494 |
+
"type": 2
|
| 495 |
+
},
|
| 496 |
+
"seed": 831034514,
|
| 497 |
+
"version": 393,
|
| 498 |
+
"versionNonce": 671789522,
|
| 499 |
+
"isDeleted": false,
|
| 500 |
+
"boundElements": [],
|
| 501 |
+
"updated": 1739436556162,
|
| 502 |
+
"link": null,
|
| 503 |
+
"locked": false,
|
| 504 |
+
"points": [
|
| 505 |
+
[
|
| 506 |
+
0,
|
| 507 |
+
0
|
| 508 |
+
],
|
| 509 |
+
[
|
| 510 |
+
-153.5999755859375,
|
| 511 |
+
91.022216796875
|
| 512 |
+
]
|
| 513 |
+
],
|
| 514 |
+
"lastCommittedPoint": null,
|
| 515 |
+
"startBinding": {
|
| 516 |
+
"elementId": "HXIKjJvzQzR2zEsPTWBHk",
|
| 517 |
+
"focus": 0.17399492475432984,
|
| 518 |
+
"gap": 1,
|
| 519 |
+
"fixedPoint": null
|
| 520 |
+
},
|
| 521 |
+
"endBinding": {
|
| 522 |
+
"elementId": "wEufgc20D-l-mdtgWLXnT",
|
| 523 |
+
"focus": -0.41720255737903406,
|
| 524 |
+
"gap": 1,
|
| 525 |
+
"fixedPoint": null
|
| 526 |
+
},
|
| 527 |
+
"startArrowhead": null,
|
| 528 |
+
"endArrowhead": "arrow",
|
| 529 |
+
"elbowed": false
|
| 530 |
+
},
|
| 531 |
+
{
|
| 532 |
+
"id": "GBp2vkKDN_rJ-0THbSebW",
|
| 533 |
+
"type": "rectangle",
|
| 534 |
+
"x": 1293.1953667534722,
|
| 535 |
+
"y": 539.5010630289715,
|
| 536 |
+
"width": 204.800048828125,
|
| 537 |
+
"height": 54.044464111328125,
|
| 538 |
+
"angle": 0,
|
| 539 |
+
"strokeColor": "#1e1e1e",
|
| 540 |
+
"backgroundColor": "transparent",
|
| 541 |
+
"fillStyle": "solid",
|
| 542 |
+
"strokeWidth": 2,
|
| 543 |
+
"strokeStyle": "solid",
|
| 544 |
+
"roughness": 1,
|
| 545 |
+
"opacity": 100,
|
| 546 |
+
"groupIds": [],
|
| 547 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 548 |
+
"index": "aC",
|
| 549 |
+
"roundness": {
|
| 550 |
+
"type": 3
|
| 551 |
+
},
|
| 552 |
+
"seed": 1307090450,
|
| 553 |
+
"version": 906,
|
| 554 |
+
"versionNonce": 768994898,
|
| 555 |
+
"isDeleted": false,
|
| 556 |
+
"boundElements": [
|
| 557 |
+
{
|
| 558 |
+
"type": "text",
|
| 559 |
+
"id": "1JLqUklMHKwR58YKcxPg5"
|
| 560 |
+
},
|
| 561 |
+
{
|
| 562 |
+
"id": "3X5XGRrrxXRErQWuuf1J7",
|
| 563 |
+
"type": "arrow"
|
| 564 |
+
},
|
| 565 |
+
{
|
| 566 |
+
"id": "CX9int0DOUrljdTbAdw0y",
|
| 567 |
+
"type": "arrow"
|
| 568 |
+
},
|
| 569 |
+
{
|
| 570 |
+
"id": "obGZKTevXg4XAoWm_IZ9Z",
|
| 571 |
+
"type": "arrow"
|
| 572 |
+
}
|
| 573 |
+
],
|
| 574 |
+
"updated": 1739437653572,
|
| 575 |
+
"link": null,
|
| 576 |
+
"locked": false
|
| 577 |
+
},
|
| 578 |
+
{
|
| 579 |
+
"id": "1JLqUklMHKwR58YKcxPg5",
|
| 580 |
+
"type": "text",
|
| 581 |
+
"x": 1329.315468682183,
|
| 582 |
+
"y": 554.0232950846356,
|
| 583 |
+
"width": 132.55984497070312,
|
| 584 |
+
"height": 25,
|
| 585 |
+
"angle": 0,
|
| 586 |
+
"strokeColor": "#1e1e1e",
|
| 587 |
+
"backgroundColor": "transparent",
|
| 588 |
+
"fillStyle": "solid",
|
| 589 |
+
"strokeWidth": 2,
|
| 590 |
+
"strokeStyle": "solid",
|
| 591 |
+
"roughness": 1,
|
| 592 |
+
"opacity": 100,
|
| 593 |
+
"groupIds": [],
|
| 594 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 595 |
+
"index": "aCV",
|
| 596 |
+
"roundness": null,
|
| 597 |
+
"seed": 1615368402,
|
| 598 |
+
"version": 837,
|
| 599 |
+
"versionNonce": 359158802,
|
| 600 |
+
"isDeleted": false,
|
| 601 |
+
"boundElements": [],
|
| 602 |
+
"updated": 1739437653572,
|
| 603 |
+
"link": null,
|
| 604 |
+
"locked": false,
|
| 605 |
+
"text": "detect intent",
|
| 606 |
+
"fontSize": 20,
|
| 607 |
+
"fontFamily": 5,
|
| 608 |
+
"textAlign": "center",
|
| 609 |
+
"verticalAlign": "middle",
|
| 610 |
+
"containerId": "GBp2vkKDN_rJ-0THbSebW",
|
| 611 |
+
"originalText": "detect intent",
|
| 612 |
+
"autoResize": true,
|
| 613 |
+
"lineHeight": 1.25
|
| 614 |
+
},
|
| 615 |
+
{
|
| 616 |
+
"id": "3X5XGRrrxXRErQWuuf1J7",
|
| 617 |
+
"type": "arrow",
|
| 618 |
+
"x": 1150.5777587890625,
|
| 619 |
+
"y": 396.4888000488281,
|
| 620 |
+
"width": 228.60844359074213,
|
| 621 |
+
"height": 142.01226298014342,
|
| 622 |
+
"angle": 0,
|
| 623 |
+
"strokeColor": "#1e1e1e",
|
| 624 |
+
"backgroundColor": "transparent",
|
| 625 |
+
"fillStyle": "solid",
|
| 626 |
+
"strokeWidth": 2,
|
| 627 |
+
"strokeStyle": "solid",
|
| 628 |
+
"roughness": 1,
|
| 629 |
+
"opacity": 100,
|
| 630 |
+
"groupIds": [],
|
| 631 |
+
"frameId": null,
|
| 632 |
+
"index": "aE",
|
| 633 |
+
"roundness": {
|
| 634 |
+
"type": 2
|
| 635 |
+
},
|
| 636 |
+
"seed": 2079968658,
|
| 637 |
+
"version": 1218,
|
| 638 |
+
"versionNonce": 824705490,
|
| 639 |
+
"isDeleted": false,
|
| 640 |
+
"boundElements": [],
|
| 641 |
+
"updated": 1739437653572,
|
| 642 |
+
"link": null,
|
| 643 |
+
"locked": false,
|
| 644 |
+
"points": [
|
| 645 |
+
[
|
| 646 |
+
0,
|
| 647 |
+
0
|
| 648 |
+
],
|
| 649 |
+
[
|
| 650 |
+
228.60844359074213,
|
| 651 |
+
142.01226298014342
|
| 652 |
+
]
|
| 653 |
+
],
|
| 654 |
+
"lastCommittedPoint": null,
|
| 655 |
+
"startBinding": {
|
| 656 |
+
"elementId": "wEufgc20D-l-mdtgWLXnT",
|
| 657 |
+
"focus": 0.34251598117639953,
|
| 658 |
+
"gap": 1.4222259521484375,
|
| 659 |
+
"fixedPoint": null
|
| 660 |
+
},
|
| 661 |
+
"endBinding": {
|
| 662 |
+
"elementId": "GBp2vkKDN_rJ-0THbSebW",
|
| 663 |
+
"focus": 0.19671319915003915,
|
| 664 |
+
"gap": 1,
|
| 665 |
+
"fixedPoint": null
|
| 666 |
+
},
|
| 667 |
+
"startArrowhead": null,
|
| 668 |
+
"endArrowhead": "arrow",
|
| 669 |
+
"elbowed": false
|
| 670 |
+
},
|
| 671 |
+
{
|
| 672 |
+
"id": "eWx-OAj8tmJ7UJucCFqT0",
|
| 673 |
+
"type": "diamond",
|
| 674 |
+
"x": 1291.7728814019097,
|
| 675 |
+
"y": 608.4788462320965,
|
| 676 |
+
"width": 155.02221679687491,
|
| 677 |
+
"height": 170,
|
| 678 |
+
"angle": 0,
|
| 679 |
+
"strokeColor": "#1e1e1e",
|
| 680 |
+
"backgroundColor": "transparent",
|
| 681 |
+
"fillStyle": "solid",
|
| 682 |
+
"strokeWidth": 2,
|
| 683 |
+
"strokeStyle": "solid",
|
| 684 |
+
"roughness": 1,
|
| 685 |
+
"opacity": 100,
|
| 686 |
+
"groupIds": [],
|
| 687 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 688 |
+
"index": "aG",
|
| 689 |
+
"roundness": {
|
| 690 |
+
"type": 2
|
| 691 |
+
},
|
| 692 |
+
"seed": 572105550,
|
| 693 |
+
"version": 1013,
|
| 694 |
+
"versionNonce": 1107082002,
|
| 695 |
+
"isDeleted": false,
|
| 696 |
+
"boundElements": [
|
| 697 |
+
{
|
| 698 |
+
"id": "CX9int0DOUrljdTbAdw0y",
|
| 699 |
+
"type": "arrow"
|
| 700 |
+
},
|
| 701 |
+
{
|
| 702 |
+
"id": "C0aHbsHvOP5sqfizC2uBO",
|
| 703 |
+
"type": "arrow"
|
| 704 |
+
},
|
| 705 |
+
{
|
| 706 |
+
"id": "k7_aznX7yugCPo8_9_dDT",
|
| 707 |
+
"type": "arrow"
|
| 708 |
+
},
|
| 709 |
+
{
|
| 710 |
+
"type": "text",
|
| 711 |
+
"id": "SWuSEEV_yRxsN1pYh-zOB"
|
| 712 |
+
}
|
| 713 |
+
],
|
| 714 |
+
"updated": 1739437653572,
|
| 715 |
+
"link": null,
|
| 716 |
+
"locked": false
|
| 717 |
+
},
|
| 718 |
+
{
|
| 719 |
+
"id": "SWuSEEV_yRxsN1pYh-zOB",
|
| 720 |
+
"type": "text",
|
| 721 |
+
"x": 1339.3384713066948,
|
| 722 |
+
"y": 655.9788462320965,
|
| 723 |
+
"width": 60.37992858886719,
|
| 724 |
+
"height": 75,
|
| 725 |
+
"angle": 0,
|
| 726 |
+
"strokeColor": "#1e1e1e",
|
| 727 |
+
"backgroundColor": "transparent",
|
| 728 |
+
"fillStyle": "solid",
|
| 729 |
+
"strokeWidth": 2,
|
| 730 |
+
"strokeStyle": "solid",
|
| 731 |
+
"roughness": 1,
|
| 732 |
+
"opacity": 100,
|
| 733 |
+
"groupIds": [],
|
| 734 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 735 |
+
"index": "aGV",
|
| 736 |
+
"roundness": null,
|
| 737 |
+
"seed": 937179666,
|
| 738 |
+
"version": 550,
|
| 739 |
+
"versionNonce": 1016563922,
|
| 740 |
+
"isDeleted": false,
|
| 741 |
+
"boundElements": [],
|
| 742 |
+
"updated": 1739437653572,
|
| 743 |
+
"link": null,
|
| 744 |
+
"locked": false,
|
| 745 |
+
"text": "Transl\nate/C\nhat",
|
| 746 |
+
"fontSize": 20,
|
| 747 |
+
"fontFamily": 5,
|
| 748 |
+
"textAlign": "center",
|
| 749 |
+
"verticalAlign": "middle",
|
| 750 |
+
"containerId": "eWx-OAj8tmJ7UJucCFqT0",
|
| 751 |
+
"originalText": "Translate/Chat",
|
| 752 |
+
"autoResize": true,
|
| 753 |
+
"lineHeight": 1.25
|
| 754 |
+
},
|
| 755 |
+
{
|
| 756 |
+
"id": "CX9int0DOUrljdTbAdw0y",
|
| 757 |
+
"type": "arrow",
|
| 758 |
+
"x": 1385.3055152999598,
|
| 759 |
+
"y": 598.9742559507864,
|
| 760 |
+
"width": 1.7001984432224617,
|
| 761 |
+
"height": 22.418549735869078,
|
| 762 |
+
"angle": 0,
|
| 763 |
+
"strokeColor": "#1e1e1e",
|
| 764 |
+
"backgroundColor": "transparent",
|
| 765 |
+
"fillStyle": "solid",
|
| 766 |
+
"strokeWidth": 2,
|
| 767 |
+
"strokeStyle": "solid",
|
| 768 |
+
"roughness": 1,
|
| 769 |
+
"opacity": 100,
|
| 770 |
+
"groupIds": [],
|
| 771 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 772 |
+
"index": "aI",
|
| 773 |
+
"roundness": {
|
| 774 |
+
"type": 2
|
| 775 |
+
},
|
| 776 |
+
"seed": 842515470,
|
| 777 |
+
"version": 2739,
|
| 778 |
+
"versionNonce": 1552650194,
|
| 779 |
+
"isDeleted": false,
|
| 780 |
+
"boundElements": [],
|
| 781 |
+
"updated": 1739437653572,
|
| 782 |
+
"link": null,
|
| 783 |
+
"locked": false,
|
| 784 |
+
"points": [
|
| 785 |
+
[
|
| 786 |
+
0,
|
| 787 |
+
0
|
| 788 |
+
],
|
| 789 |
+
[
|
| 790 |
+
-1.7001984432224617,
|
| 791 |
+
22.418549735869078
|
| 792 |
+
]
|
| 793 |
+
],
|
| 794 |
+
"lastCommittedPoint": null,
|
| 795 |
+
"startBinding": {
|
| 796 |
+
"elementId": "GBp2vkKDN_rJ-0THbSebW",
|
| 797 |
+
"focus": 0.07495335716176672,
|
| 798 |
+
"gap": 5.428728810486746,
|
| 799 |
+
"fixedPoint": null
|
| 800 |
+
},
|
| 801 |
+
"endBinding": {
|
| 802 |
+
"elementId": "eWx-OAj8tmJ7UJucCFqT0",
|
| 803 |
+
"focus": 0.33837106049009497,
|
| 804 |
+
"gap": 1.88062882486512,
|
| 805 |
+
"fixedPoint": null
|
| 806 |
+
},
|
| 807 |
+
"startArrowhead": null,
|
| 808 |
+
"endArrowhead": "arrow",
|
| 809 |
+
"elbowed": false
|
| 810 |
+
},
|
| 811 |
+
{
|
| 812 |
+
"id": "s2V3iEzd4ip1tbVzaKq4p",
|
| 813 |
+
"type": "rectangle",
|
| 814 |
+
"x": 1055.3284844292534,
|
| 815 |
+
"y": 731.145815531413,
|
| 816 |
+
"width": 226.8443603515625,
|
| 817 |
+
"height": 66.13334655761719,
|
| 818 |
+
"angle": 0,
|
| 819 |
+
"strokeColor": "#1e1e1e",
|
| 820 |
+
"backgroundColor": "transparent",
|
| 821 |
+
"fillStyle": "solid",
|
| 822 |
+
"strokeWidth": 2,
|
| 823 |
+
"strokeStyle": "solid",
|
| 824 |
+
"roughness": 1,
|
| 825 |
+
"opacity": 100,
|
| 826 |
+
"groupIds": [],
|
| 827 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 828 |
+
"index": "aJ",
|
| 829 |
+
"roundness": {
|
| 830 |
+
"type": 3
|
| 831 |
+
},
|
| 832 |
+
"seed": 1090413138,
|
| 833 |
+
"version": 886,
|
| 834 |
+
"versionNonce": 1877853586,
|
| 835 |
+
"isDeleted": false,
|
| 836 |
+
"boundElements": [
|
| 837 |
+
{
|
| 838 |
+
"type": "text",
|
| 839 |
+
"id": "8z-XnbnnzUInYL8CURb3n"
|
| 840 |
+
},
|
| 841 |
+
{
|
| 842 |
+
"id": "C0aHbsHvOP5sqfizC2uBO",
|
| 843 |
+
"type": "arrow"
|
| 844 |
+
},
|
| 845 |
+
{
|
| 846 |
+
"id": "Jsb8q4I42iAB20vbbPrFw",
|
| 847 |
+
"type": "arrow"
|
| 848 |
+
},
|
| 849 |
+
{
|
| 850 |
+
"id": "q6COVL8ZMzxTwWg3gcbk_",
|
| 851 |
+
"type": "arrow"
|
| 852 |
+
}
|
| 853 |
+
],
|
| 854 |
+
"updated": 1739437653572,
|
| 855 |
+
"link": null,
|
| 856 |
+
"locked": false
|
| 857 |
+
},
|
| 858 |
+
{
|
| 859 |
+
"id": "8z-XnbnnzUInYL8CURb3n",
|
| 860 |
+
"type": "text",
|
| 861 |
+
"x": 1064.4707802666558,
|
| 862 |
+
"y": 739.2124888102215,
|
| 863 |
+
"width": 208.5597686767578,
|
| 864 |
+
"height": 50,
|
| 865 |
+
"angle": 0,
|
| 866 |
+
"strokeColor": "#1e1e1e",
|
| 867 |
+
"backgroundColor": "transparent",
|
| 868 |
+
"fillStyle": "solid",
|
| 869 |
+
"strokeWidth": 2,
|
| 870 |
+
"strokeStyle": "solid",
|
| 871 |
+
"roughness": 1,
|
| 872 |
+
"opacity": 100,
|
| 873 |
+
"groupIds": [],
|
| 874 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 875 |
+
"index": "aK",
|
| 876 |
+
"roundness": null,
|
| 877 |
+
"seed": 325208082,
|
| 878 |
+
"version": 856,
|
| 879 |
+
"versionNonce": 1292059474,
|
| 880 |
+
"isDeleted": false,
|
| 881 |
+
"boundElements": [],
|
| 882 |
+
"updated": 1739437653572,
|
| 883 |
+
"link": null,
|
| 884 |
+
"locked": false,
|
| 885 |
+
"text": "Extract sentence for\ntranslation",
|
| 886 |
+
"fontSize": 20,
|
| 887 |
+
"fontFamily": 5,
|
| 888 |
+
"textAlign": "center",
|
| 889 |
+
"verticalAlign": "middle",
|
| 890 |
+
"containerId": "s2V3iEzd4ip1tbVzaKq4p",
|
| 891 |
+
"originalText": "Extract sentence for translation",
|
| 892 |
+
"autoResize": true,
|
| 893 |
+
"lineHeight": 1.25
|
| 894 |
+
},
|
| 895 |
+
{
|
| 896 |
+
"id": "K7JKG04XiRPCsQ3h4_Dax",
|
| 897 |
+
"type": "rectangle",
|
| 898 |
+
"x": 1526.0840996636284,
|
| 899 |
+
"y": 740.3903223673504,
|
| 900 |
+
"width": 226.8443603515625,
|
| 901 |
+
"height": 66.13334655761719,
|
| 902 |
+
"angle": 0,
|
| 903 |
+
"strokeColor": "#1e1e1e",
|
| 904 |
+
"backgroundColor": "transparent",
|
| 905 |
+
"fillStyle": "solid",
|
| 906 |
+
"strokeWidth": 2,
|
| 907 |
+
"strokeStyle": "solid",
|
| 908 |
+
"roughness": 1,
|
| 909 |
+
"opacity": 100,
|
| 910 |
+
"groupIds": [],
|
| 911 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 912 |
+
"index": "aL",
|
| 913 |
+
"roundness": {
|
| 914 |
+
"type": 3
|
| 915 |
+
},
|
| 916 |
+
"seed": 1288555726,
|
| 917 |
+
"version": 899,
|
| 918 |
+
"versionNonce": 235276882,
|
| 919 |
+
"isDeleted": false,
|
| 920 |
+
"boundElements": [
|
| 921 |
+
{
|
| 922 |
+
"type": "text",
|
| 923 |
+
"id": "byE6AHVYQ1PeMM3oRZ3OS"
|
| 924 |
+
},
|
| 925 |
+
{
|
| 926 |
+
"id": "k7_aznX7yugCPo8_9_dDT",
|
| 927 |
+
"type": "arrow"
|
| 928 |
+
},
|
| 929 |
+
{
|
| 930 |
+
"id": "xx3Qb-dEk_gwNzn15L2Js",
|
| 931 |
+
"type": "arrow"
|
| 932 |
+
}
|
| 933 |
+
],
|
| 934 |
+
"updated": 1739437653572,
|
| 935 |
+
"link": null,
|
| 936 |
+
"locked": false
|
| 937 |
+
},
|
| 938 |
+
{
|
| 939 |
+
"id": "byE6AHVYQ1PeMM3oRZ3OS",
|
| 940 |
+
"type": "text",
|
| 941 |
+
"x": 1617.5063027275933,
|
| 942 |
+
"y": 760.956995646159,
|
| 943 |
+
"width": 43.99995422363281,
|
| 944 |
+
"height": 25,
|
| 945 |
+
"angle": 0,
|
| 946 |
+
"strokeColor": "#1e1e1e",
|
| 947 |
+
"backgroundColor": "transparent",
|
| 948 |
+
"fillStyle": "solid",
|
| 949 |
+
"strokeWidth": 2,
|
| 950 |
+
"strokeStyle": "solid",
|
| 951 |
+
"roughness": 1,
|
| 952 |
+
"opacity": 100,
|
| 953 |
+
"groupIds": [],
|
| 954 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 955 |
+
"index": "aM",
|
| 956 |
+
"roundness": null,
|
| 957 |
+
"seed": 1263993614,
|
| 958 |
+
"version": 833,
|
| 959 |
+
"versionNonce": 825552914,
|
| 960 |
+
"isDeleted": false,
|
| 961 |
+
"boundElements": [],
|
| 962 |
+
"updated": 1739437653572,
|
| 963 |
+
"link": null,
|
| 964 |
+
"locked": false,
|
| 965 |
+
"text": "chat",
|
| 966 |
+
"fontSize": 20,
|
| 967 |
+
"fontFamily": 5,
|
| 968 |
+
"textAlign": "center",
|
| 969 |
+
"verticalAlign": "middle",
|
| 970 |
+
"containerId": "K7JKG04XiRPCsQ3h4_Dax",
|
| 971 |
+
"originalText": "chat",
|
| 972 |
+
"autoResize": true,
|
| 973 |
+
"lineHeight": 1.25
|
| 974 |
+
},
|
| 975 |
+
{
|
| 976 |
+
"id": "C0aHbsHvOP5sqfizC2uBO",
|
| 977 |
+
"type": "arrow",
|
| 978 |
+
"x": 1295.9995378240656,
|
| 979 |
+
"y": 684.9493632675895,
|
| 980 |
+
"width": 120.7530982752337,
|
| 981 |
+
"height": 57.60015869140625,
|
| 982 |
+
"angle": 0,
|
| 983 |
+
"strokeColor": "#1e1e1e",
|
| 984 |
+
"backgroundColor": "transparent",
|
| 985 |
+
"fillStyle": "solid",
|
| 986 |
+
"strokeWidth": 2,
|
| 987 |
+
"strokeStyle": "solid",
|
| 988 |
+
"roughness": 1,
|
| 989 |
+
"opacity": 100,
|
| 990 |
+
"groupIds": [],
|
| 991 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 992 |
+
"index": "aN",
|
| 993 |
+
"roundness": {
|
| 994 |
+
"type": 2
|
| 995 |
+
},
|
| 996 |
+
"seed": 960346898,
|
| 997 |
+
"version": 2745,
|
| 998 |
+
"versionNonce": 1609388370,
|
| 999 |
+
"isDeleted": false,
|
| 1000 |
+
"boundElements": [
|
| 1001 |
+
{
|
| 1002 |
+
"type": "text",
|
| 1003 |
+
"id": "WEyrlpHlup6Ivp43FxuGR"
|
| 1004 |
+
}
|
| 1005 |
+
],
|
| 1006 |
+
"updated": 1739437653572,
|
| 1007 |
+
"link": null,
|
| 1008 |
+
"locked": false,
|
| 1009 |
+
"points": [
|
| 1010 |
+
[
|
| 1011 |
+
0,
|
| 1012 |
+
0
|
| 1013 |
+
],
|
| 1014 |
+
[
|
| 1015 |
+
-112.31540153934338,
|
| 1016 |
+
-22.425961371430503
|
| 1017 |
+
],
|
| 1018 |
+
[
|
| 1019 |
+
-120.7530982752337,
|
| 1020 |
+
35.17419731997575
|
| 1021 |
+
]
|
| 1022 |
+
],
|
| 1023 |
+
"lastCommittedPoint": null,
|
| 1024 |
+
"startBinding": {
|
| 1025 |
+
"elementId": "eWx-OAj8tmJ7UJucCFqT0",
|
| 1026 |
+
"focus": -0.07180220905959642,
|
| 1027 |
+
"gap": 2.624112550388773,
|
| 1028 |
+
"fixedPoint": null
|
| 1029 |
+
},
|
| 1030 |
+
"endBinding": {
|
| 1031 |
+
"elementId": "s2V3iEzd4ip1tbVzaKq4p",
|
| 1032 |
+
"focus": 0.0003154164709863474,
|
| 1033 |
+
"gap": 11.022254943847656,
|
| 1034 |
+
"fixedPoint": null
|
| 1035 |
+
},
|
| 1036 |
+
"startArrowhead": null,
|
| 1037 |
+
"endArrowhead": "arrow",
|
| 1038 |
+
"elbowed": false
|
| 1039 |
+
},
|
| 1040 |
+
{
|
| 1041 |
+
"id": "WEyrlpHlup6Ivp43FxuGR",
|
| 1042 |
+
"type": "text",
|
| 1043 |
+
"x": 1202.9674919976128,
|
| 1044 |
+
"y": 778.7347056070965,
|
| 1045 |
+
"width": 93.69989013671875,
|
| 1046 |
+
"height": 25,
|
| 1047 |
+
"angle": 0,
|
| 1048 |
+
"strokeColor": "#1e1e1e",
|
| 1049 |
+
"backgroundColor": "transparent",
|
| 1050 |
+
"fillStyle": "solid",
|
| 1051 |
+
"strokeWidth": 2,
|
| 1052 |
+
"strokeStyle": "solid",
|
| 1053 |
+
"roughness": 1,
|
| 1054 |
+
"opacity": 100,
|
| 1055 |
+
"groupIds": [],
|
| 1056 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1057 |
+
"index": "aNV",
|
| 1058 |
+
"roundness": null,
|
| 1059 |
+
"seed": 1828813522,
|
| 1060 |
+
"version": 458,
|
| 1061 |
+
"versionNonce": 1956337426,
|
| 1062 |
+
"isDeleted": false,
|
| 1063 |
+
"boundElements": [],
|
| 1064 |
+
"updated": 1739437653572,
|
| 1065 |
+
"link": null,
|
| 1066 |
+
"locked": false,
|
| 1067 |
+
"text": "Translate",
|
| 1068 |
+
"fontSize": 20,
|
| 1069 |
+
"fontFamily": 5,
|
| 1070 |
+
"textAlign": "center",
|
| 1071 |
+
"verticalAlign": "middle",
|
| 1072 |
+
"containerId": "C0aHbsHvOP5sqfizC2uBO",
|
| 1073 |
+
"originalText": "Translate",
|
| 1074 |
+
"autoResize": true,
|
| 1075 |
+
"lineHeight": 1.25
|
| 1076 |
+
},
|
| 1077 |
+
{
|
| 1078 |
+
"id": "k7_aznX7yugCPo8_9_dDT",
|
| 1079 |
+
"type": "arrow",
|
| 1080 |
+
"x": 1438.6781327565973,
|
| 1081 |
+
"y": 681.9720610503717,
|
| 1082 |
+
"width": 209.69976955783181,
|
| 1083 |
+
"height": 77.51116943359375,
|
| 1084 |
+
"angle": 0,
|
| 1085 |
+
"strokeColor": "#1e1e1e",
|
| 1086 |
+
"backgroundColor": "transparent",
|
| 1087 |
+
"fillStyle": "solid",
|
| 1088 |
+
"strokeWidth": 2,
|
| 1089 |
+
"strokeStyle": "solid",
|
| 1090 |
+
"roughness": 1,
|
| 1091 |
+
"opacity": 100,
|
| 1092 |
+
"groupIds": [],
|
| 1093 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1094 |
+
"index": "aO",
|
| 1095 |
+
"roundness": {
|
| 1096 |
+
"type": 2
|
| 1097 |
+
},
|
| 1098 |
+
"seed": 1186407950,
|
| 1099 |
+
"version": 2843,
|
| 1100 |
+
"versionNonce": 1493345490,
|
| 1101 |
+
"isDeleted": false,
|
| 1102 |
+
"boundElements": [
|
| 1103 |
+
{
|
| 1104 |
+
"type": "text",
|
| 1105 |
+
"id": "mBuVXhrQjpx3Rew6QXVpk"
|
| 1106 |
+
}
|
| 1107 |
+
],
|
| 1108 |
+
"updated": 1739437653572,
|
| 1109 |
+
"link": null,
|
| 1110 |
+
"locked": false,
|
| 1111 |
+
"points": [
|
| 1112 |
+
[
|
| 1113 |
+
0,
|
| 1114 |
+
0
|
| 1115 |
+
],
|
| 1116 |
+
[
|
| 1117 |
+
178.38513213450074,
|
| 1118 |
+
-27.237677130466977
|
| 1119 |
+
],
|
| 1120 |
+
[
|
| 1121 |
+
209.69976955783181,
|
| 1122 |
+
50.27349230312677
|
| 1123 |
+
]
|
| 1124 |
+
],
|
| 1125 |
+
"lastCommittedPoint": null,
|
| 1126 |
+
"startBinding": {
|
| 1127 |
+
"elementId": "eWx-OAj8tmJ7UJucCFqT0",
|
| 1128 |
+
"focus": -0.010717335711518705,
|
| 1129 |
+
"gap": 1.7556588524229966,
|
| 1130 |
+
"fixedPoint": null
|
| 1131 |
+
},
|
| 1132 |
+
"endBinding": {
|
| 1133 |
+
"elementId": "K7JKG04XiRPCsQ3h4_Dax",
|
| 1134 |
+
"focus": 0.2013004905125822,
|
| 1135 |
+
"gap": 8.144769013851942,
|
| 1136 |
+
"fixedPoint": null
|
| 1137 |
+
},
|
| 1138 |
+
"startArrowhead": null,
|
| 1139 |
+
"endArrowhead": "arrow",
|
| 1140 |
+
"elbowed": false
|
| 1141 |
+
},
|
| 1142 |
+
{
|
| 1143 |
+
"id": "mBuVXhrQjpx3Rew6QXVpk",
|
| 1144 |
+
"type": "text",
|
| 1145 |
+
"x": 1659.9465885605316,
|
| 1146 |
+
"y": 770.9456876308421,
|
| 1147 |
+
"width": 46.49995422363281,
|
| 1148 |
+
"height": 25,
|
| 1149 |
+
"angle": 0,
|
| 1150 |
+
"strokeColor": "#1e1e1e",
|
| 1151 |
+
"backgroundColor": "transparent",
|
| 1152 |
+
"fillStyle": "solid",
|
| 1153 |
+
"strokeWidth": 2,
|
| 1154 |
+
"strokeStyle": "solid",
|
| 1155 |
+
"roughness": 1,
|
| 1156 |
+
"opacity": 100,
|
| 1157 |
+
"groupIds": [],
|
| 1158 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1159 |
+
"index": "aP",
|
| 1160 |
+
"roundness": null,
|
| 1161 |
+
"seed": 943163666,
|
| 1162 |
+
"version": 455,
|
| 1163 |
+
"versionNonce": 1455045266,
|
| 1164 |
+
"isDeleted": false,
|
| 1165 |
+
"boundElements": [],
|
| 1166 |
+
"updated": 1739437653572,
|
| 1167 |
+
"link": null,
|
| 1168 |
+
"locked": false,
|
| 1169 |
+
"text": "Chat",
|
| 1170 |
+
"fontSize": 20,
|
| 1171 |
+
"fontFamily": 5,
|
| 1172 |
+
"textAlign": "center",
|
| 1173 |
+
"verticalAlign": "middle",
|
| 1174 |
+
"containerId": "k7_aznX7yugCPo8_9_dDT",
|
| 1175 |
+
"originalText": "Chat",
|
| 1176 |
+
"autoResize": true,
|
| 1177 |
+
"lineHeight": 1.25
|
| 1178 |
+
},
|
| 1179 |
+
{
|
| 1180 |
+
"id": "gBtT2H2gfCOioSXaQjgn3",
|
| 1181 |
+
"type": "rectangle",
|
| 1182 |
+
"x": 1060.3062676323784,
|
| 1183 |
+
"y": 857.2125269571942,
|
| 1184 |
+
"width": 226.8443603515625,
|
| 1185 |
+
"height": 85,
|
| 1186 |
+
"angle": 0,
|
| 1187 |
+
"strokeColor": "#1e1e1e",
|
| 1188 |
+
"backgroundColor": "transparent",
|
| 1189 |
+
"fillStyle": "solid",
|
| 1190 |
+
"strokeWidth": 2,
|
| 1191 |
+
"strokeStyle": "solid",
|
| 1192 |
+
"roughness": 1,
|
| 1193 |
+
"opacity": 100,
|
| 1194 |
+
"groupIds": [],
|
| 1195 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1196 |
+
"index": "aQ",
|
| 1197 |
+
"roundness": {
|
| 1198 |
+
"type": 3
|
| 1199 |
+
},
|
| 1200 |
+
"seed": 1193112334,
|
| 1201 |
+
"version": 929,
|
| 1202 |
+
"versionNonce": 1819875410,
|
| 1203 |
+
"isDeleted": false,
|
| 1204 |
+
"boundElements": [
|
| 1205 |
+
{
|
| 1206 |
+
"type": "text",
|
| 1207 |
+
"id": "J4USxhJBuFgd1ddkcz7YR"
|
| 1208 |
+
},
|
| 1209 |
+
{
|
| 1210 |
+
"id": "Jsb8q4I42iAB20vbbPrFw",
|
| 1211 |
+
"type": "arrow"
|
| 1212 |
+
},
|
| 1213 |
+
{
|
| 1214 |
+
"id": "dRuRJC031Lx5Irftqyzvc",
|
| 1215 |
+
"type": "arrow"
|
| 1216 |
+
},
|
| 1217 |
+
{
|
| 1218 |
+
"id": "Y2ub__u8TgOIwogbcOSyJ",
|
| 1219 |
+
"type": "arrow"
|
| 1220 |
+
}
|
| 1221 |
+
],
|
| 1222 |
+
"updated": 1739437653572,
|
| 1223 |
+
"link": null,
|
| 1224 |
+
"locked": false
|
| 1225 |
+
},
|
| 1226 |
+
{
|
| 1227 |
+
"id": "J4USxhJBuFgd1ddkcz7YR",
|
| 1228 |
+
"type": "text",
|
| 1229 |
+
"x": 1076.8385399712456,
|
| 1230 |
+
"y": 862.2125269571942,
|
| 1231 |
+
"width": 193.77981567382812,
|
| 1232 |
+
"height": 75,
|
| 1233 |
+
"angle": 0,
|
| 1234 |
+
"strokeColor": "#1e1e1e",
|
| 1235 |
+
"backgroundColor": "transparent",
|
| 1236 |
+
"fillStyle": "solid",
|
| 1237 |
+
"strokeWidth": 2,
|
| 1238 |
+
"strokeStyle": "solid",
|
| 1239 |
+
"roughness": 1,
|
| 1240 |
+
"opacity": 100,
|
| 1241 |
+
"groupIds": [],
|
| 1242 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1243 |
+
"index": "aR",
|
| 1244 |
+
"roundness": null,
|
| 1245 |
+
"seed": 559407438,
|
| 1246 |
+
"version": 937,
|
| 1247 |
+
"versionNonce": 1237507346,
|
| 1248 |
+
"isDeleted": false,
|
| 1249 |
+
"boundElements": [],
|
| 1250 |
+
"updated": 1739437986648,
|
| 1251 |
+
"link": null,
|
| 1252 |
+
"locked": false,
|
| 1253 |
+
"text": "Translate\ncan result in several\noptions",
|
| 1254 |
+
"fontSize": 20,
|
| 1255 |
+
"fontFamily": 5,
|
| 1256 |
+
"textAlign": "center",
|
| 1257 |
+
"verticalAlign": "middle",
|
| 1258 |
+
"containerId": "gBtT2H2gfCOioSXaQjgn3",
|
| 1259 |
+
"originalText": "Translate\ncan result in several options",
|
| 1260 |
+
"autoResize": true,
|
| 1261 |
+
"lineHeight": 1.25
|
| 1262 |
+
},
|
| 1263 |
+
{
|
| 1264 |
+
"id": "Jsb8q4I42iAB20vbbPrFw",
|
| 1265 |
+
"type": "arrow",
|
| 1266 |
+
"x": 1169.892220616474,
|
| 1267 |
+
"y": 798.2791620890301,
|
| 1268 |
+
"width": 3.8649818929643516,
|
| 1269 |
+
"height": 57.93336486816406,
|
| 1270 |
+
"angle": 0,
|
| 1271 |
+
"strokeColor": "#1e1e1e",
|
| 1272 |
+
"backgroundColor": "transparent",
|
| 1273 |
+
"fillStyle": "solid",
|
| 1274 |
+
"strokeWidth": 2,
|
| 1275 |
+
"strokeStyle": "solid",
|
| 1276 |
+
"roughness": 1,
|
| 1277 |
+
"opacity": 100,
|
| 1278 |
+
"groupIds": [],
|
| 1279 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1280 |
+
"index": "aS",
|
| 1281 |
+
"roundness": {
|
| 1282 |
+
"type": 2
|
| 1283 |
+
},
|
| 1284 |
+
"seed": 1760649362,
|
| 1285 |
+
"version": 2259,
|
| 1286 |
+
"versionNonce": 1667605778,
|
| 1287 |
+
"isDeleted": false,
|
| 1288 |
+
"boundElements": [],
|
| 1289 |
+
"updated": 1739437653572,
|
| 1290 |
+
"link": null,
|
| 1291 |
+
"locked": false,
|
| 1292 |
+
"points": [
|
| 1293 |
+
[
|
| 1294 |
+
0,
|
| 1295 |
+
0
|
| 1296 |
+
],
|
| 1297 |
+
[
|
| 1298 |
+
3.8649818929643516,
|
| 1299 |
+
57.93336486816406
|
| 1300 |
+
]
|
| 1301 |
+
],
|
| 1302 |
+
"lastCommittedPoint": null,
|
| 1303 |
+
"startBinding": {
|
| 1304 |
+
"elementId": "s2V3iEzd4ip1tbVzaKq4p",
|
| 1305 |
+
"focus": 0.008587306860425607,
|
| 1306 |
+
"gap": 1,
|
| 1307 |
+
"fixedPoint": null
|
| 1308 |
+
},
|
| 1309 |
+
"endBinding": {
|
| 1310 |
+
"elementId": "gBtT2H2gfCOioSXaQjgn3",
|
| 1311 |
+
"focus": 0.02520976571090038,
|
| 1312 |
+
"gap": 1,
|
| 1313 |
+
"fixedPoint": null
|
| 1314 |
+
},
|
| 1315 |
+
"startArrowhead": null,
|
| 1316 |
+
"endArrowhead": "arrow",
|
| 1317 |
+
"elbowed": false
|
| 1318 |
+
},
|
| 1319 |
+
{
|
| 1320 |
+
"id": "WsxPr8Q8Ki3MX02D1zoTP",
|
| 1321 |
+
"type": "rectangle",
|
| 1322 |
+
"x": 1049.6395195855034,
|
| 1323 |
+
"y": 1159.4349390665693,
|
| 1324 |
+
"width": 226.8443603515625,
|
| 1325 |
+
"height": 135,
|
| 1326 |
+
"angle": 0,
|
| 1327 |
+
"strokeColor": "#1e1e1e",
|
| 1328 |
+
"backgroundColor": "transparent",
|
| 1329 |
+
"fillStyle": "solid",
|
| 1330 |
+
"strokeWidth": 2,
|
| 1331 |
+
"strokeStyle": "solid",
|
| 1332 |
+
"roughness": 1,
|
| 1333 |
+
"opacity": 100,
|
| 1334 |
+
"groupIds": [],
|
| 1335 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1336 |
+
"index": "aT",
|
| 1337 |
+
"roundness": {
|
| 1338 |
+
"type": 3
|
| 1339 |
+
},
|
| 1340 |
+
"seed": 537673166,
|
| 1341 |
+
"version": 790,
|
| 1342 |
+
"versionNonce": 1431515858,
|
| 1343 |
+
"isDeleted": false,
|
| 1344 |
+
"boundElements": [
|
| 1345 |
+
{
|
| 1346 |
+
"type": "text",
|
| 1347 |
+
"id": "f2o9j0XWQqkXo9FMAv5BZ"
|
| 1348 |
+
},
|
| 1349 |
+
{
|
| 1350 |
+
"id": "97_z7GhT9RO-2AJqQ_uq7",
|
| 1351 |
+
"type": "arrow"
|
| 1352 |
+
},
|
| 1353 |
+
{
|
| 1354 |
+
"id": "yNsW2h8Pss9Gb_S8sI9g1",
|
| 1355 |
+
"type": "arrow"
|
| 1356 |
+
},
|
| 1357 |
+
{
|
| 1358 |
+
"id": "3MGuF2J5NwQCyzMW7bBY0",
|
| 1359 |
+
"type": "arrow"
|
| 1360 |
+
}
|
| 1361 |
+
],
|
| 1362 |
+
"updated": 1739437653572,
|
| 1363 |
+
"link": null,
|
| 1364 |
+
"locked": false
|
| 1365 |
+
},
|
| 1366 |
+
{
|
| 1367 |
+
"id": "f2o9j0XWQqkXo9FMAv5BZ",
|
| 1368 |
+
"type": "text",
|
| 1369 |
+
"x": 1067.6117943657769,
|
| 1370 |
+
"y": 1164.4349390665693,
|
| 1371 |
+
"width": 190.89981079101562,
|
| 1372 |
+
"height": 125,
|
| 1373 |
+
"angle": 0,
|
| 1374 |
+
"strokeColor": "#1e1e1e",
|
| 1375 |
+
"backgroundColor": "transparent",
|
| 1376 |
+
"fillStyle": "solid",
|
| 1377 |
+
"strokeWidth": 2,
|
| 1378 |
+
"strokeStyle": "solid",
|
| 1379 |
+
"roughness": 1,
|
| 1380 |
+
"opacity": 100,
|
| 1381 |
+
"groupIds": [],
|
| 1382 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1383 |
+
"index": "aU",
|
| 1384 |
+
"roundness": null,
|
| 1385 |
+
"seed": 1872712718,
|
| 1386 |
+
"version": 880,
|
| 1387 |
+
"versionNonce": 1439238290,
|
| 1388 |
+
"isDeleted": false,
|
| 1389 |
+
"boundElements": [],
|
| 1390 |
+
"updated": 1739437653572,
|
| 1391 |
+
"link": null,
|
| 1392 |
+
"locked": false,
|
| 1393 |
+
"text": "Text to speech for\nall translations:\nCreates temporary\nfiles and stores in\ngraph's state",
|
| 1394 |
+
"fontSize": 20,
|
| 1395 |
+
"fontFamily": 5,
|
| 1396 |
+
"textAlign": "center",
|
| 1397 |
+
"verticalAlign": "middle",
|
| 1398 |
+
"containerId": "WsxPr8Q8Ki3MX02D1zoTP",
|
| 1399 |
+
"originalText": "Text to speech for all translations:\nCreates temporary files and stores in graph's state",
|
| 1400 |
+
"autoResize": true,
|
| 1401 |
+
"lineHeight": 1.25
|
| 1402 |
+
},
|
| 1403 |
+
{
|
| 1404 |
+
"id": "97_z7GhT9RO-2AJqQ_uq7",
|
| 1405 |
+
"type": "arrow",
|
| 1406 |
+
"x": 1160.9953498007794,
|
| 1407 |
+
"y": 1122.1013437906904,
|
| 1408 |
+
"width": 2.2386264643675986,
|
| 1409 |
+
"height": 36.2667236328125,
|
| 1410 |
+
"angle": 0,
|
| 1411 |
+
"strokeColor": "#1e1e1e",
|
| 1412 |
+
"backgroundColor": "transparent",
|
| 1413 |
+
"fillStyle": "solid",
|
| 1414 |
+
"strokeWidth": 2,
|
| 1415 |
+
"strokeStyle": "solid",
|
| 1416 |
+
"roughness": 1,
|
| 1417 |
+
"opacity": 100,
|
| 1418 |
+
"groupIds": [],
|
| 1419 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1420 |
+
"index": "aV",
|
| 1421 |
+
"roundness": {
|
| 1422 |
+
"type": 2
|
| 1423 |
+
},
|
| 1424 |
+
"seed": 557425294,
|
| 1425 |
+
"version": 1601,
|
| 1426 |
+
"versionNonce": 1588188818,
|
| 1427 |
+
"isDeleted": false,
|
| 1428 |
+
"boundElements": [],
|
| 1429 |
+
"updated": 1739437653572,
|
| 1430 |
+
"link": null,
|
| 1431 |
+
"locked": false,
|
| 1432 |
+
"points": [
|
| 1433 |
+
[
|
| 1434 |
+
0,
|
| 1435 |
+
0
|
| 1436 |
+
],
|
| 1437 |
+
[
|
| 1438 |
+
-2.2386264643675986,
|
| 1439 |
+
36.2667236328125
|
| 1440 |
+
]
|
| 1441 |
+
],
|
| 1442 |
+
"lastCommittedPoint": null,
|
| 1443 |
+
"startBinding": {
|
| 1444 |
+
"elementId": "prqJbpWmSVDGYCnNO5-Se",
|
| 1445 |
+
"focus": -0.09441150381938627,
|
| 1446 |
+
"gap": 7.5889892578125,
|
| 1447 |
+
"fixedPoint": null
|
| 1448 |
+
},
|
| 1449 |
+
"endBinding": {
|
| 1450 |
+
"elementId": "WsxPr8Q8Ki3MX02D1zoTP",
|
| 1451 |
+
"focus": -0.07260377110499779,
|
| 1452 |
+
"gap": 1.0668716430664062,
|
| 1453 |
+
"fixedPoint": null
|
| 1454 |
+
},
|
| 1455 |
+
"startArrowhead": null,
|
| 1456 |
+
"endArrowhead": "arrow",
|
| 1457 |
+
"elbowed": false
|
| 1458 |
+
},
|
| 1459 |
+
{
|
| 1460 |
+
"id": "cplZOVqKChIIlK1clqQyw",
|
| 1461 |
+
"type": "rectangle",
|
| 1462 |
+
"x": 1030.0839301215278,
|
| 1463 |
+
"y": 1585.21257019043,
|
| 1464 |
+
"width": 297.95556640625,
|
| 1465 |
+
"height": 93.86651611328125,
|
| 1466 |
+
"angle": 0,
|
| 1467 |
+
"strokeColor": "#1e1e1e",
|
| 1468 |
+
"backgroundColor": "transparent",
|
| 1469 |
+
"fillStyle": "solid",
|
| 1470 |
+
"strokeWidth": 2,
|
| 1471 |
+
"strokeStyle": "solid",
|
| 1472 |
+
"roughness": 1,
|
| 1473 |
+
"opacity": 100,
|
| 1474 |
+
"groupIds": [],
|
| 1475 |
+
"frameId": null,
|
| 1476 |
+
"index": "aW",
|
| 1477 |
+
"roundness": {
|
| 1478 |
+
"type": 3
|
| 1479 |
+
},
|
| 1480 |
+
"seed": 1093859470,
|
| 1481 |
+
"version": 497,
|
| 1482 |
+
"versionNonce": 654704654,
|
| 1483 |
+
"isDeleted": false,
|
| 1484 |
+
"boundElements": [
|
| 1485 |
+
{
|
| 1486 |
+
"type": "text",
|
| 1487 |
+
"id": "mPg0xKp-HoFN8npOB1WPG"
|
| 1488 |
+
},
|
| 1489 |
+
{
|
| 1490 |
+
"id": "TTwCIuNoNqJyJMCv6W3aQ",
|
| 1491 |
+
"type": "arrow"
|
| 1492 |
+
},
|
| 1493 |
+
{
|
| 1494 |
+
"id": "qnVIwuImMX7lY7cpTgiEM",
|
| 1495 |
+
"type": "arrow"
|
| 1496 |
+
}
|
| 1497 |
+
],
|
| 1498 |
+
"updated": 1739438107332,
|
| 1499 |
+
"link": null,
|
| 1500 |
+
"locked": false
|
| 1501 |
+
},
|
| 1502 |
+
{
|
| 1503 |
+
"id": "mPg0xKp-HoFN8npOB1WPG",
|
| 1504 |
+
"type": "text",
|
| 1505 |
+
"x": 1041.1118384467231,
|
| 1506 |
+
"y": 1607.1458282470705,
|
| 1507 |
+
"width": 275.8997497558594,
|
| 1508 |
+
"height": 50,
|
| 1509 |
+
"angle": 0,
|
| 1510 |
+
"strokeColor": "#1e1e1e",
|
| 1511 |
+
"backgroundColor": "transparent",
|
| 1512 |
+
"fillStyle": "solid",
|
| 1513 |
+
"strokeWidth": 2,
|
| 1514 |
+
"strokeStyle": "solid",
|
| 1515 |
+
"roughness": 1,
|
| 1516 |
+
"opacity": 100,
|
| 1517 |
+
"groupIds": [],
|
| 1518 |
+
"frameId": null,
|
| 1519 |
+
"index": "aWV",
|
| 1520 |
+
"roundness": null,
|
| 1521 |
+
"seed": 2044616974,
|
| 1522 |
+
"version": 459,
|
| 1523 |
+
"versionNonce": 2020155854,
|
| 1524 |
+
"isDeleted": false,
|
| 1525 |
+
"boundElements": [],
|
| 1526 |
+
"updated": 1739438090222,
|
| 1527 |
+
"link": null,
|
| 1528 |
+
"locked": false,
|
| 1529 |
+
"text": "Displays translations and\nloads audio files in the chat",
|
| 1530 |
+
"fontSize": 20,
|
| 1531 |
+
"fontFamily": 5,
|
| 1532 |
+
"textAlign": "center",
|
| 1533 |
+
"verticalAlign": "middle",
|
| 1534 |
+
"containerId": "cplZOVqKChIIlK1clqQyw",
|
| 1535 |
+
"originalText": "Displays translations and loads audio files in the chat",
|
| 1536 |
+
"autoResize": true,
|
| 1537 |
+
"lineHeight": 1.25
|
| 1538 |
+
},
|
| 1539 |
+
{
|
| 1540 |
+
"id": "JgxMPeI9m-WxMJBe8p2iu",
|
| 1541 |
+
"type": "rectangle",
|
| 1542 |
+
"x": 1244.0496826171875,
|
| 1543 |
+
"y": 1765.9926740858289,
|
| 1544 |
+
"width": 283.0220947265625,
|
| 1545 |
+
"height": 96.7110595703125,
|
| 1546 |
+
"angle": 0,
|
| 1547 |
+
"strokeColor": "#1e1e1e",
|
| 1548 |
+
"backgroundColor": "transparent",
|
| 1549 |
+
"fillStyle": "solid",
|
| 1550 |
+
"strokeWidth": 2,
|
| 1551 |
+
"strokeStyle": "solid",
|
| 1552 |
+
"roughness": 1,
|
| 1553 |
+
"opacity": 100,
|
| 1554 |
+
"groupIds": [],
|
| 1555 |
+
"frameId": null,
|
| 1556 |
+
"index": "aZ",
|
| 1557 |
+
"roundness": {
|
| 1558 |
+
"type": 3
|
| 1559 |
+
},
|
| 1560 |
+
"seed": 383392782,
|
| 1561 |
+
"version": 246,
|
| 1562 |
+
"versionNonce": 1784923022,
|
| 1563 |
+
"isDeleted": false,
|
| 1564 |
+
"boundElements": [
|
| 1565 |
+
{
|
| 1566 |
+
"id": "TTwCIuNoNqJyJMCv6W3aQ",
|
| 1567 |
+
"type": "arrow"
|
| 1568 |
+
},
|
| 1569 |
+
{
|
| 1570 |
+
"type": "text",
|
| 1571 |
+
"id": "mpuGc6AQTGvoxqfktEp3b"
|
| 1572 |
+
},
|
| 1573 |
+
{
|
| 1574 |
+
"id": "FyQYDCMA748f6_svuDGi-",
|
| 1575 |
+
"type": "arrow"
|
| 1576 |
+
}
|
| 1577 |
+
],
|
| 1578 |
+
"updated": 1739438047640,
|
| 1579 |
+
"link": null,
|
| 1580 |
+
"locked": false
|
| 1581 |
+
},
|
| 1582 |
+
{
|
| 1583 |
+
"id": "mpuGc6AQTGvoxqfktEp3b",
|
| 1584 |
+
"type": "text",
|
| 1585 |
+
"x": 1367.1807479858398,
|
| 1586 |
+
"y": 1801.8482038709851,
|
| 1587 |
+
"width": 36.75996398925781,
|
| 1588 |
+
"height": 25,
|
| 1589 |
+
"angle": 0,
|
| 1590 |
+
"strokeColor": "#1e1e1e",
|
| 1591 |
+
"backgroundColor": "transparent",
|
| 1592 |
+
"fillStyle": "solid",
|
| 1593 |
+
"strokeWidth": 2,
|
| 1594 |
+
"strokeStyle": "solid",
|
| 1595 |
+
"roughness": 1,
|
| 1596 |
+
"opacity": 100,
|
| 1597 |
+
"groupIds": [],
|
| 1598 |
+
"frameId": null,
|
| 1599 |
+
"index": "aZV",
|
| 1600 |
+
"roundness": null,
|
| 1601 |
+
"seed": 1699299790,
|
| 1602 |
+
"version": 147,
|
| 1603 |
+
"versionNonce": 411050446,
|
| 1604 |
+
"isDeleted": false,
|
| 1605 |
+
"boundElements": [],
|
| 1606 |
+
"updated": 1739438047640,
|
| 1607 |
+
"link": null,
|
| 1608 |
+
"locked": false,
|
| 1609 |
+
"text": "End",
|
| 1610 |
+
"fontSize": 20,
|
| 1611 |
+
"fontFamily": 5,
|
| 1612 |
+
"textAlign": "center",
|
| 1613 |
+
"verticalAlign": "middle",
|
| 1614 |
+
"containerId": "JgxMPeI9m-WxMJBe8p2iu",
|
| 1615 |
+
"originalText": "End",
|
| 1616 |
+
"autoResize": true,
|
| 1617 |
+
"lineHeight": 1.25
|
| 1618 |
+
},
|
| 1619 |
+
{
|
| 1620 |
+
"id": "TTwCIuNoNqJyJMCv6W3aQ",
|
| 1621 |
+
"type": "arrow",
|
| 1622 |
+
"x": 1145.6919319120068,
|
| 1623 |
+
"y": 1683.3459320068362,
|
| 1624 |
+
"width": 296.2791787291037,
|
| 1625 |
+
"height": 81.6467420789927,
|
| 1626 |
+
"angle": 0,
|
| 1627 |
+
"strokeColor": "#1e1e1e",
|
| 1628 |
+
"backgroundColor": "transparent",
|
| 1629 |
+
"fillStyle": "solid",
|
| 1630 |
+
"strokeWidth": 2,
|
| 1631 |
+
"strokeStyle": "solid",
|
| 1632 |
+
"roughness": 1,
|
| 1633 |
+
"opacity": 100,
|
| 1634 |
+
"groupIds": [],
|
| 1635 |
+
"frameId": null,
|
| 1636 |
+
"index": "ab",
|
| 1637 |
+
"roundness": {
|
| 1638 |
+
"type": 2
|
| 1639 |
+
},
|
| 1640 |
+
"seed": 1340985870,
|
| 1641 |
+
"version": 817,
|
| 1642 |
+
"versionNonce": 1925167118,
|
| 1643 |
+
"isDeleted": false,
|
| 1644 |
+
"boundElements": [],
|
| 1645 |
+
"updated": 1739438090222,
|
| 1646 |
+
"link": null,
|
| 1647 |
+
"locked": false,
|
| 1648 |
+
"points": [
|
| 1649 |
+
[
|
| 1650 |
+
0,
|
| 1651 |
+
0
|
| 1652 |
+
],
|
| 1653 |
+
[
|
| 1654 |
+
296.2791787291037,
|
| 1655 |
+
81.6467420789927
|
| 1656 |
+
]
|
| 1657 |
+
],
|
| 1658 |
+
"lastCommittedPoint": null,
|
| 1659 |
+
"startBinding": {
|
| 1660 |
+
"elementId": "cplZOVqKChIIlK1clqQyw",
|
| 1661 |
+
"focus": 0.6864140851390049,
|
| 1662 |
+
"gap": 4.266845703125,
|
| 1663 |
+
"fixedPoint": null
|
| 1664 |
+
},
|
| 1665 |
+
"endBinding": {
|
| 1666 |
+
"elementId": "JgxMPeI9m-WxMJBe8p2iu",
|
| 1667 |
+
"focus": 0.5873026439947175,
|
| 1668 |
+
"gap": 1,
|
| 1669 |
+
"fixedPoint": null
|
| 1670 |
+
},
|
| 1671 |
+
"startArrowhead": null,
|
| 1672 |
+
"endArrowhead": "arrow",
|
| 1673 |
+
"elbowed": false
|
| 1674 |
+
},
|
| 1675 |
+
{
|
| 1676 |
+
"id": "prqJbpWmSVDGYCnNO5-Se",
|
| 1677 |
+
"type": "rectangle",
|
| 1678 |
+
"x": 1041.106438530816,
|
| 1679 |
+
"y": 979.5123545328778,
|
| 1680 |
+
"width": 226.8443603515625,
|
| 1681 |
+
"height": 135,
|
| 1682 |
+
"angle": 0,
|
| 1683 |
+
"strokeColor": "#1e1e1e",
|
| 1684 |
+
"backgroundColor": "transparent",
|
| 1685 |
+
"fillStyle": "solid",
|
| 1686 |
+
"strokeWidth": 2,
|
| 1687 |
+
"strokeStyle": "solid",
|
| 1688 |
+
"roughness": 1,
|
| 1689 |
+
"opacity": 100,
|
| 1690 |
+
"groupIds": [],
|
| 1691 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1692 |
+
"index": "ae",
|
| 1693 |
+
"roundness": {
|
| 1694 |
+
"type": 3
|
| 1695 |
+
},
|
| 1696 |
+
"seed": 680492946,
|
| 1697 |
+
"version": 744,
|
| 1698 |
+
"versionNonce": 1937206610,
|
| 1699 |
+
"isDeleted": false,
|
| 1700 |
+
"boundElements": [
|
| 1701 |
+
{
|
| 1702 |
+
"type": "text",
|
| 1703 |
+
"id": "EvY3jmmRrdnjvxwnM1xYZ"
|
| 1704 |
+
},
|
| 1705 |
+
{
|
| 1706 |
+
"id": "dRuRJC031Lx5Irftqyzvc",
|
| 1707 |
+
"type": "arrow"
|
| 1708 |
+
},
|
| 1709 |
+
{
|
| 1710 |
+
"id": "97_z7GhT9RO-2AJqQ_uq7",
|
| 1711 |
+
"type": "arrow"
|
| 1712 |
+
},
|
| 1713 |
+
{
|
| 1714 |
+
"id": "N6duZb4_dVSJBF4x-vezS",
|
| 1715 |
+
"type": "arrow"
|
| 1716 |
+
}
|
| 1717 |
+
],
|
| 1718 |
+
"updated": 1739437653572,
|
| 1719 |
+
"link": null,
|
| 1720 |
+
"locked": false
|
| 1721 |
+
},
|
| 1722 |
+
{
|
| 1723 |
+
"id": "EvY3jmmRrdnjvxwnM1xYZ",
|
| 1724 |
+
"type": "text",
|
| 1725 |
+
"x": 1057.2387246025933,
|
| 1726 |
+
"y": 984.5123545328778,
|
| 1727 |
+
"width": 194.5797882080078,
|
| 1728 |
+
"height": 125,
|
| 1729 |
+
"angle": 0,
|
| 1730 |
+
"strokeColor": "#1e1e1e",
|
| 1731 |
+
"backgroundColor": "transparent",
|
| 1732 |
+
"fillStyle": "solid",
|
| 1733 |
+
"strokeWidth": 2,
|
| 1734 |
+
"strokeStyle": "solid",
|
| 1735 |
+
"roughness": 1,
|
| 1736 |
+
"opacity": 100,
|
| 1737 |
+
"groupIds": [],
|
| 1738 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1739 |
+
"index": "af",
|
| 1740 |
+
"roundness": null,
|
| 1741 |
+
"seed": 1029553490,
|
| 1742 |
+
"version": 825,
|
| 1743 |
+
"versionNonce": 1216475922,
|
| 1744 |
+
"isDeleted": false,
|
| 1745 |
+
"boundElements": [],
|
| 1746 |
+
"updated": 1739437653572,
|
| 1747 |
+
"link": null,
|
| 1748 |
+
"locked": false,
|
| 1749 |
+
"text": "Breaks down\ntranslated sentence\ninto words and\nstores them in the\nstate",
|
| 1750 |
+
"fontSize": 20,
|
| 1751 |
+
"fontFamily": 5,
|
| 1752 |
+
"textAlign": "center",
|
| 1753 |
+
"verticalAlign": "middle",
|
| 1754 |
+
"containerId": "prqJbpWmSVDGYCnNO5-Se",
|
| 1755 |
+
"originalText": "Breaks down translated sentence into words and stores them in the state",
|
| 1756 |
+
"autoResize": true,
|
| 1757 |
+
"lineHeight": 1.25
|
| 1758 |
+
},
|
| 1759 |
+
{
|
| 1760 |
+
"id": "dRuRJC031Lx5Irftqyzvc",
|
| 1761 |
+
"type": "arrow",
|
| 1762 |
+
"x": 1175.8618706597222,
|
| 1763 |
+
"y": 948.412562052409,
|
| 1764 |
+
"width": 9.31304243062641,
|
| 1765 |
+
"height": 30.09979248046875,
|
| 1766 |
+
"angle": 0,
|
| 1767 |
+
"strokeColor": "#1e1e1e",
|
| 1768 |
+
"backgroundColor": "transparent",
|
| 1769 |
+
"fillStyle": "solid",
|
| 1770 |
+
"strokeWidth": 2,
|
| 1771 |
+
"strokeStyle": "solid",
|
| 1772 |
+
"roughness": 1,
|
| 1773 |
+
"opacity": 100,
|
| 1774 |
+
"groupIds": [],
|
| 1775 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1776 |
+
"index": "ag",
|
| 1777 |
+
"roundness": {
|
| 1778 |
+
"type": 2
|
| 1779 |
+
},
|
| 1780 |
+
"seed": 1760723790,
|
| 1781 |
+
"version": 1185,
|
| 1782 |
+
"versionNonce": 936303122,
|
| 1783 |
+
"isDeleted": false,
|
| 1784 |
+
"boundElements": [],
|
| 1785 |
+
"updated": 1739437653572,
|
| 1786 |
+
"link": null,
|
| 1787 |
+
"locked": false,
|
| 1788 |
+
"points": [
|
| 1789 |
+
[
|
| 1790 |
+
0,
|
| 1791 |
+
0
|
| 1792 |
+
],
|
| 1793 |
+
[
|
| 1794 |
+
-9.31304243062641,
|
| 1795 |
+
30.09979248046875
|
| 1796 |
+
]
|
| 1797 |
+
],
|
| 1798 |
+
"lastCommittedPoint": null,
|
| 1799 |
+
"startBinding": {
|
| 1800 |
+
"elementId": "gBtT2H2gfCOioSXaQjgn3",
|
| 1801 |
+
"focus": -0.010633650837373472,
|
| 1802 |
+
"gap": 6.200035095214844,
|
| 1803 |
+
"fixedPoint": null
|
| 1804 |
+
},
|
| 1805 |
+
"endBinding": {
|
| 1806 |
+
"elementId": "prqJbpWmSVDGYCnNO5-Se",
|
| 1807 |
+
"focus": -0.06830668561434806,
|
| 1808 |
+
"gap": 1,
|
| 1809 |
+
"fixedPoint": null
|
| 1810 |
+
},
|
| 1811 |
+
"startArrowhead": null,
|
| 1812 |
+
"endArrowhead": "arrow",
|
| 1813 |
+
"elbowed": false
|
| 1814 |
+
},
|
| 1815 |
+
{
|
| 1816 |
+
"id": "MIUALTrbU6IWmrNItyuc8",
|
| 1817 |
+
"type": "ellipse",
|
| 1818 |
+
"x": 622.5383572048611,
|
| 1819 |
+
"y": 650.9902598063153,
|
| 1820 |
+
"width": 214.83456081814234,
|
| 1821 |
+
"height": 131.63459947374133,
|
| 1822 |
+
"angle": 0,
|
| 1823 |
+
"strokeColor": "#1e1e1e",
|
| 1824 |
+
"backgroundColor": "transparent",
|
| 1825 |
+
"fillStyle": "solid",
|
| 1826 |
+
"strokeWidth": 2,
|
| 1827 |
+
"strokeStyle": "solid",
|
| 1828 |
+
"roughness": 1,
|
| 1829 |
+
"opacity": 100,
|
| 1830 |
+
"groupIds": [],
|
| 1831 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1832 |
+
"index": "ah",
|
| 1833 |
+
"roundness": {
|
| 1834 |
+
"type": 2
|
| 1835 |
+
},
|
| 1836 |
+
"seed": 100665170,
|
| 1837 |
+
"version": 537,
|
| 1838 |
+
"versionNonce": 281921490,
|
| 1839 |
+
"isDeleted": false,
|
| 1840 |
+
"boundElements": [
|
| 1841 |
+
{
|
| 1842 |
+
"type": "text",
|
| 1843 |
+
"id": "TIKTZBve-6HnLB1NlIOLA"
|
| 1844 |
+
},
|
| 1845 |
+
{
|
| 1846 |
+
"id": "q6COVL8ZMzxTwWg3gcbk_",
|
| 1847 |
+
"type": "arrow"
|
| 1848 |
+
}
|
| 1849 |
+
],
|
| 1850 |
+
"updated": 1739437653572,
|
| 1851 |
+
"link": null,
|
| 1852 |
+
"locked": false
|
| 1853 |
+
},
|
| 1854 |
+
{
|
| 1855 |
+
"id": "TIKTZBve-6HnLB1NlIOLA",
|
| 1856 |
+
"type": "text",
|
| 1857 |
+
"x": 663.230214612151,
|
| 1858 |
+
"y": 691.767700579857,
|
| 1859 |
+
"width": 133.5398712158203,
|
| 1860 |
+
"height": 50,
|
| 1861 |
+
"angle": 0,
|
| 1862 |
+
"strokeColor": "#1e1e1e",
|
| 1863 |
+
"backgroundColor": "transparent",
|
| 1864 |
+
"fillStyle": "solid",
|
| 1865 |
+
"strokeWidth": 2,
|
| 1866 |
+
"strokeStyle": "solid",
|
| 1867 |
+
"roughness": 1,
|
| 1868 |
+
"opacity": 100,
|
| 1869 |
+
"groupIds": [],
|
| 1870 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1871 |
+
"index": "ahV",
|
| 1872 |
+
"roundness": null,
|
| 1873 |
+
"seed": 1697150802,
|
| 1874 |
+
"version": 472,
|
| 1875 |
+
"versionNonce": 1328086418,
|
| 1876 |
+
"isDeleted": false,
|
| 1877 |
+
"boundElements": [],
|
| 1878 |
+
"updated": 1739437653572,
|
| 1879 |
+
"link": null,
|
| 1880 |
+
"locked": false,
|
| 1881 |
+
"text": "Dependencies:\n1. LLM",
|
| 1882 |
+
"fontSize": 20,
|
| 1883 |
+
"fontFamily": 5,
|
| 1884 |
+
"textAlign": "center",
|
| 1885 |
+
"verticalAlign": "middle",
|
| 1886 |
+
"containerId": "MIUALTrbU6IWmrNItyuc8",
|
| 1887 |
+
"originalText": "Dependencies:\n1. LLM",
|
| 1888 |
+
"autoResize": true,
|
| 1889 |
+
"lineHeight": 1.25
|
| 1890 |
+
},
|
| 1891 |
+
{
|
| 1892 |
+
"id": "q6COVL8ZMzxTwWg3gcbk_",
|
| 1893 |
+
"type": "arrow",
|
| 1894 |
+
"x": 1051.4174126519097,
|
| 1895 |
+
"y": 767.6124521891278,
|
| 1896 |
+
"width": 210.14963666066274,
|
| 1897 |
+
"height": 38.947360510596354,
|
| 1898 |
+
"angle": 0,
|
| 1899 |
+
"strokeColor": "#1e1e1e",
|
| 1900 |
+
"backgroundColor": "transparent",
|
| 1901 |
+
"fillStyle": "solid",
|
| 1902 |
+
"strokeWidth": 2,
|
| 1903 |
+
"strokeStyle": "dashed",
|
| 1904 |
+
"roughness": 1,
|
| 1905 |
+
"opacity": 100,
|
| 1906 |
+
"groupIds": [],
|
| 1907 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1908 |
+
"index": "aj",
|
| 1909 |
+
"roundness": {
|
| 1910 |
+
"type": 2
|
| 1911 |
+
},
|
| 1912 |
+
"seed": 599973842,
|
| 1913 |
+
"version": 1271,
|
| 1914 |
+
"versionNonce": 837828882,
|
| 1915 |
+
"isDeleted": false,
|
| 1916 |
+
"boundElements": [],
|
| 1917 |
+
"updated": 1739437653572,
|
| 1918 |
+
"link": null,
|
| 1919 |
+
"locked": false,
|
| 1920 |
+
"points": [
|
| 1921 |
+
[
|
| 1922 |
+
0,
|
| 1923 |
+
0
|
| 1924 |
+
],
|
| 1925 |
+
[
|
| 1926 |
+
-210.14963666066274,
|
| 1927 |
+
-38.947360510596354
|
| 1928 |
+
]
|
| 1929 |
+
],
|
| 1930 |
+
"lastCommittedPoint": null,
|
| 1931 |
+
"startBinding": {
|
| 1932 |
+
"elementId": "s2V3iEzd4ip1tbVzaKq4p",
|
| 1933 |
+
"focus": -0.7211590589604303,
|
| 1934 |
+
"gap": 3.91107177734375,
|
| 1935 |
+
"fixedPoint": null
|
| 1936 |
+
},
|
| 1937 |
+
"endBinding": {
|
| 1938 |
+
"elementId": "MIUALTrbU6IWmrNItyuc8",
|
| 1939 |
+
"focus": -0.1275718699958542,
|
| 1940 |
+
"gap": 5.467521301687285,
|
| 1941 |
+
"fixedPoint": null
|
| 1942 |
+
},
|
| 1943 |
+
"startArrowhead": null,
|
| 1944 |
+
"endArrowhead": "arrow",
|
| 1945 |
+
"elbowed": false
|
| 1946 |
+
},
|
| 1947 |
+
{
|
| 1948 |
+
"id": "w8cjE_ZmAWalkyMBdUsGJ",
|
| 1949 |
+
"type": "ellipse",
|
| 1950 |
+
"x": 610.9019722880026,
|
| 1951 |
+
"y": 813.8347269694012,
|
| 1952 |
+
"width": 214.3006328052213,
|
| 1953 |
+
"height": 137.52029631030177,
|
| 1954 |
+
"angle": 0,
|
| 1955 |
+
"strokeColor": "#1e1e1e",
|
| 1956 |
+
"backgroundColor": "transparent",
|
| 1957 |
+
"fillStyle": "solid",
|
| 1958 |
+
"strokeWidth": 2,
|
| 1959 |
+
"strokeStyle": "solid",
|
| 1960 |
+
"roughness": 1,
|
| 1961 |
+
"opacity": 100,
|
| 1962 |
+
"groupIds": [],
|
| 1963 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1964 |
+
"index": "ak",
|
| 1965 |
+
"roundness": {
|
| 1966 |
+
"type": 2
|
| 1967 |
+
},
|
| 1968 |
+
"seed": 499944590,
|
| 1969 |
+
"version": 638,
|
| 1970 |
+
"versionNonce": 808079058,
|
| 1971 |
+
"isDeleted": false,
|
| 1972 |
+
"boundElements": [
|
| 1973 |
+
{
|
| 1974 |
+
"type": "text",
|
| 1975 |
+
"id": "GIizGzKGnOF0-oXa9jiZb"
|
| 1976 |
+
},
|
| 1977 |
+
{
|
| 1978 |
+
"id": "Y2ub__u8TgOIwogbcOSyJ",
|
| 1979 |
+
"type": "arrow"
|
| 1980 |
+
}
|
| 1981 |
+
],
|
| 1982 |
+
"updated": 1739437653572,
|
| 1983 |
+
"link": null,
|
| 1984 |
+
"locked": false
|
| 1985 |
+
},
|
| 1986 |
+
{
|
| 1987 |
+
"id": "GIizGzKGnOF0-oXa9jiZb",
|
| 1988 |
+
"type": "text",
|
| 1989 |
+
"x": 651.515637748133,
|
| 1990 |
+
"y": 857.4741080886532,
|
| 1991 |
+
"width": 133.5398712158203,
|
| 1992 |
+
"height": 50,
|
| 1993 |
+
"angle": 0,
|
| 1994 |
+
"strokeColor": "#1e1e1e",
|
| 1995 |
+
"backgroundColor": "transparent",
|
| 1996 |
+
"fillStyle": "solid",
|
| 1997 |
+
"strokeWidth": 2,
|
| 1998 |
+
"strokeStyle": "solid",
|
| 1999 |
+
"roughness": 1,
|
| 2000 |
+
"opacity": 100,
|
| 2001 |
+
"groupIds": [],
|
| 2002 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 2003 |
+
"index": "al",
|
| 2004 |
+
"roundness": null,
|
| 2005 |
+
"seed": 1441254094,
|
| 2006 |
+
"version": 573,
|
| 2007 |
+
"versionNonce": 2136777874,
|
| 2008 |
+
"isDeleted": false,
|
| 2009 |
+
"boundElements": [],
|
| 2010 |
+
"updated": 1739437653572,
|
| 2011 |
+
"link": null,
|
| 2012 |
+
"locked": false,
|
| 2013 |
+
"text": "Dependencies:\n1. LLM",
|
| 2014 |
+
"fontSize": 20,
|
| 2015 |
+
"fontFamily": 5,
|
| 2016 |
+
"textAlign": "center",
|
| 2017 |
+
"verticalAlign": "middle",
|
| 2018 |
+
"containerId": "w8cjE_ZmAWalkyMBdUsGJ",
|
| 2019 |
+
"originalText": "Dependencies:\n1. LLM",
|
| 2020 |
+
"autoResize": true,
|
| 2021 |
+
"lineHeight": 1.25
|
| 2022 |
+
},
|
| 2023 |
+
{
|
| 2024 |
+
"id": "fzHHgaAJ7hL8OgFlYJdbi",
|
| 2025 |
+
"type": "ellipse",
|
| 2026 |
+
"x": 608.1187303331162,
|
| 2027 |
+
"y": 972.6210312331376,
|
| 2028 |
+
"width": 214.3006328052213,
|
| 2029 |
+
"height": 137.52029631030177,
|
| 2030 |
+
"angle": 0,
|
| 2031 |
+
"strokeColor": "#1e1e1e",
|
| 2032 |
+
"backgroundColor": "transparent",
|
| 2033 |
+
"fillStyle": "solid",
|
| 2034 |
+
"strokeWidth": 2,
|
| 2035 |
+
"strokeStyle": "solid",
|
| 2036 |
+
"roughness": 1,
|
| 2037 |
+
"opacity": 100,
|
| 2038 |
+
"groupIds": [],
|
| 2039 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 2040 |
+
"index": "am",
|
| 2041 |
+
"roundness": {
|
| 2042 |
+
"type": 2
|
| 2043 |
+
},
|
| 2044 |
+
"seed": 1297637710,
|
| 2045 |
+
"version": 620,
|
| 2046 |
+
"versionNonce": 1755719698,
|
| 2047 |
+
"isDeleted": false,
|
| 2048 |
+
"boundElements": [
|
| 2049 |
+
{
|
| 2050 |
+
"type": "text",
|
| 2051 |
+
"id": "6OrphHT5XXeFhst7BQAEf"
|
| 2052 |
+
},
|
| 2053 |
+
{
|
| 2054 |
+
"id": "N6duZb4_dVSJBF4x-vezS",
|
| 2055 |
+
"type": "arrow"
|
| 2056 |
+
}
|
| 2057 |
+
],
|
| 2058 |
+
"updated": 1739437653572,
|
| 2059 |
+
"link": null,
|
| 2060 |
+
"locked": false
|
| 2061 |
+
},
|
| 2062 |
+
{
|
| 2063 |
+
"id": "6OrphHT5XXeFhst7BQAEf",
|
| 2064 |
+
"type": "text",
|
| 2065 |
+
"x": 648.7323957932466,
|
| 2066 |
+
"y": 1016.2604123523896,
|
| 2067 |
+
"width": 133.5398712158203,
|
| 2068 |
+
"height": 50,
|
| 2069 |
+
"angle": 0,
|
| 2070 |
+
"strokeColor": "#1e1e1e",
|
| 2071 |
+
"backgroundColor": "transparent",
|
| 2072 |
+
"fillStyle": "solid",
|
| 2073 |
+
"strokeWidth": 2,
|
| 2074 |
+
"strokeStyle": "solid",
|
| 2075 |
+
"roughness": 1,
|
| 2076 |
+
"opacity": 100,
|
| 2077 |
+
"groupIds": [],
|
| 2078 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 2079 |
+
"index": "an",
|
| 2080 |
+
"roundness": null,
|
| 2081 |
+
"seed": 1989871502,
|
| 2082 |
+
"version": 555,
|
| 2083 |
+
"versionNonce": 93017554,
|
| 2084 |
+
"isDeleted": false,
|
| 2085 |
+
"boundElements": [],
|
| 2086 |
+
"updated": 1739437653572,
|
| 2087 |
+
"link": null,
|
| 2088 |
+
"locked": false,
|
| 2089 |
+
"text": "Dependencies:\n1. LLM",
|
| 2090 |
+
"fontSize": 20,
|
| 2091 |
+
"fontFamily": 5,
|
| 2092 |
+
"textAlign": "center",
|
| 2093 |
+
"verticalAlign": "middle",
|
| 2094 |
+
"containerId": "fzHHgaAJ7hL8OgFlYJdbi",
|
| 2095 |
+
"originalText": "Dependencies:\n1. LLM",
|
| 2096 |
+
"autoResize": true,
|
| 2097 |
+
"lineHeight": 1.25
|
| 2098 |
+
},
|
| 2099 |
+
{
|
| 2100 |
+
"id": "I7sHCIcRd544zlJb-k7MC",
|
| 2101 |
+
"type": "ellipse",
|
| 2102 |
+
"x": 634.0945935673915,
|
| 2103 |
+
"y": 1157.6356350622914,
|
| 2104 |
+
"width": 214.3006328052213,
|
| 2105 |
+
"height": 155.50783146331636,
|
| 2106 |
+
"angle": 0,
|
| 2107 |
+
"strokeColor": "#1e1e1e",
|
| 2108 |
+
"backgroundColor": "transparent",
|
| 2109 |
+
"fillStyle": "solid",
|
| 2110 |
+
"strokeWidth": 2,
|
| 2111 |
+
"strokeStyle": "solid",
|
| 2112 |
+
"roughness": 1,
|
| 2113 |
+
"opacity": 100,
|
| 2114 |
+
"groupIds": [],
|
| 2115 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 2116 |
+
"index": "ao",
|
| 2117 |
+
"roundness": {
|
| 2118 |
+
"type": 2
|
| 2119 |
+
},
|
| 2120 |
+
"seed": 189647374,
|
| 2121 |
+
"version": 644,
|
| 2122 |
+
"versionNonce": 558467410,
|
| 2123 |
+
"isDeleted": false,
|
| 2124 |
+
"boundElements": [
|
| 2125 |
+
{
|
| 2126 |
+
"type": "text",
|
| 2127 |
+
"id": "RdFDycnbkhVJiSB5iP26q"
|
| 2128 |
+
},
|
| 2129 |
+
{
|
| 2130 |
+
"id": "yNsW2h8Pss9Gb_S8sI9g1",
|
| 2131 |
+
"type": "arrow"
|
| 2132 |
+
}
|
| 2133 |
+
],
|
| 2134 |
+
"updated": 1739437653572,
|
| 2135 |
+
"link": null,
|
| 2136 |
+
"locked": false
|
| 2137 |
+
},
|
| 2138 |
+
{
|
| 2139 |
+
"id": "RdFDycnbkhVJiSB5iP26q",
|
| 2140 |
+
"type": "text",
|
| 2141 |
+
"x": 674.7082590275219,
|
| 2142 |
+
"y": 1210.409229716287,
|
| 2143 |
+
"width": 133.5398712158203,
|
| 2144 |
+
"height": 50,
|
| 2145 |
+
"angle": 0,
|
| 2146 |
+
"strokeColor": "#1e1e1e",
|
| 2147 |
+
"backgroundColor": "transparent",
|
| 2148 |
+
"fillStyle": "solid",
|
| 2149 |
+
"strokeWidth": 2,
|
| 2150 |
+
"strokeStyle": "solid",
|
| 2151 |
+
"roughness": 1,
|
| 2152 |
+
"opacity": 100,
|
| 2153 |
+
"groupIds": [],
|
| 2154 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 2155 |
+
"index": "ap",
|
| 2156 |
+
"roundness": null,
|
| 2157 |
+
"seed": 1264932942,
|
| 2158 |
+
"version": 590,
|
| 2159 |
+
"versionNonce": 766545682,
|
| 2160 |
+
"isDeleted": false,
|
| 2161 |
+
"boundElements": [],
|
| 2162 |
+
"updated": 1739437653572,
|
| 2163 |
+
"link": null,
|
| 2164 |
+
"locked": false,
|
| 2165 |
+
"text": "Dependencies:\n1. TTS Model",
|
| 2166 |
+
"fontSize": 20,
|
| 2167 |
+
"fontFamily": 5,
|
| 2168 |
+
"textAlign": "center",
|
| 2169 |
+
"verticalAlign": "middle",
|
| 2170 |
+
"containerId": "I7sHCIcRd544zlJb-k7MC",
|
| 2171 |
+
"originalText": "Dependencies:\n1. TTS Model",
|
| 2172 |
+
"autoResize": true,
|
| 2173 |
+
"lineHeight": 1.25
|
| 2174 |
+
},
|
| 2175 |
+
{
|
| 2176 |
+
"id": "Y2ub__u8TgOIwogbcOSyJ",
|
| 2177 |
+
"type": "arrow",
|
| 2178 |
+
"x": 1053.5508355034722,
|
| 2179 |
+
"y": 901.8347574869794,
|
| 2180 |
+
"width": 222.5718893216865,
|
| 2181 |
+
"height": 10.765825358585857,
|
| 2182 |
+
"angle": 0,
|
| 2183 |
+
"strokeColor": "#1e1e1e",
|
| 2184 |
+
"backgroundColor": "transparent",
|
| 2185 |
+
"fillStyle": "solid",
|
| 2186 |
+
"strokeWidth": 2,
|
| 2187 |
+
"strokeStyle": "dashed",
|
| 2188 |
+
"roughness": 1,
|
| 2189 |
+
"opacity": 100,
|
| 2190 |
+
"groupIds": [],
|
| 2191 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 2192 |
+
"index": "apV",
|
| 2193 |
+
"roundness": {
|
| 2194 |
+
"type": 2
|
| 2195 |
+
},
|
| 2196 |
+
"seed": 1013898254,
|
| 2197 |
+
"version": 1156,
|
| 2198 |
+
"versionNonce": 1172402834,
|
| 2199 |
+
"isDeleted": false,
|
| 2200 |
+
"boundElements": [],
|
| 2201 |
+
"updated": 1739437653572,
|
| 2202 |
+
"link": null,
|
| 2203 |
+
"locked": false,
|
| 2204 |
+
"points": [
|
| 2205 |
+
[
|
| 2206 |
+
0,
|
| 2207 |
+
0
|
| 2208 |
+
],
|
| 2209 |
+
[
|
| 2210 |
+
-222.5718893216865,
|
| 2211 |
+
-10.765825358585857
|
| 2212 |
+
]
|
| 2213 |
+
],
|
| 2214 |
+
"lastCommittedPoint": null,
|
| 2215 |
+
"startBinding": {
|
| 2216 |
+
"elementId": "gBtT2H2gfCOioSXaQjgn3",
|
| 2217 |
+
"focus": -0.17392504661039274,
|
| 2218 |
+
"gap": 6.75543212890625,
|
| 2219 |
+
"fixedPoint": null
|
| 2220 |
+
},
|
| 2221 |
+
"endBinding": {
|
| 2222 |
+
"elementId": "w8cjE_ZmAWalkyMBdUsGJ",
|
| 2223 |
+
"focus": 0.043677383394965984,
|
| 2224 |
+
"gap": 6.4990834007956835,
|
| 2225 |
+
"fixedPoint": null
|
| 2226 |
+
},
|
| 2227 |
+
"startArrowhead": null,
|
| 2228 |
+
"endArrowhead": "arrow",
|
| 2229 |
+
"elbowed": false
|
| 2230 |
+
},
|
| 2231 |
+
{
|
| 2232 |
+
"id": "N6duZb4_dVSJBF4x-vezS",
|
| 2233 |
+
"type": "arrow",
|
| 2234 |
+
"x": 1032.2174614800347,
|
| 2235 |
+
"y": 1055.4346720377607,
|
| 2236 |
+
"width": 207.620284271507,
|
| 2237 |
+
"height": 4.4558098534184865,
|
| 2238 |
+
"angle": 0,
|
| 2239 |
+
"strokeColor": "#1e1e1e",
|
| 2240 |
+
"backgroundColor": "transparent",
|
| 2241 |
+
"fillStyle": "solid",
|
| 2242 |
+
"strokeWidth": 2,
|
| 2243 |
+
"strokeStyle": "dashed",
|
| 2244 |
+
"roughness": 1,
|
| 2245 |
+
"opacity": 100,
|
| 2246 |
+
"groupIds": [],
|
| 2247 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 2248 |
+
"index": "apl",
|
| 2249 |
+
"roundness": {
|
| 2250 |
+
"type": 2
|
| 2251 |
+
},
|
| 2252 |
+
"seed": 385992850,
|
| 2253 |
+
"version": 1144,
|
| 2254 |
+
"versionNonce": 1643728978,
|
| 2255 |
+
"isDeleted": false,
|
| 2256 |
+
"boundElements": [],
|
| 2257 |
+
"updated": 1739437653572,
|
| 2258 |
+
"link": null,
|
| 2259 |
+
"locked": false,
|
| 2260 |
+
"points": [
|
| 2261 |
+
[
|
| 2262 |
+
0,
|
| 2263 |
+
0
|
| 2264 |
+
],
|
| 2265 |
+
[
|
| 2266 |
+
-207.620284271507,
|
| 2267 |
+
-4.4558098534184865
|
| 2268 |
+
]
|
| 2269 |
+
],
|
| 2270 |
+
"lastCommittedPoint": null,
|
| 2271 |
+
"startBinding": {
|
| 2272 |
+
"elementId": "prqJbpWmSVDGYCnNO5-Se",
|
| 2273 |
+
"focus": -0.15757857668462358,
|
| 2274 |
+
"gap": 8.88897705078125,
|
| 2275 |
+
"fixedPoint": null
|
| 2276 |
+
},
|
| 2277 |
+
"endBinding": {
|
| 2278 |
+
"elementId": "fzHHgaAJ7hL8OgFlYJdbi",
|
| 2279 |
+
"focus": 0.1053997525170596,
|
| 2280 |
+
"gap": 3.164385268990415,
|
| 2281 |
+
"fixedPoint": null
|
| 2282 |
+
},
|
| 2283 |
+
"startArrowhead": null,
|
| 2284 |
+
"endArrowhead": "arrow",
|
| 2285 |
+
"elbowed": false
|
| 2286 |
+
},
|
| 2287 |
+
{
|
| 2288 |
+
"id": "yNsW2h8Pss9Gb_S8sI9g1",
|
| 2289 |
+
"type": "arrow",
|
| 2290 |
+
"x": 1041.4619683159722,
|
| 2291 |
+
"y": 1234.6347452799482,
|
| 2292 |
+
"width": 187.95914620974406,
|
| 2293 |
+
"height": 4.350599282177882,
|
| 2294 |
+
"angle": 0,
|
| 2295 |
+
"strokeColor": "#1e1e1e",
|
| 2296 |
+
"backgroundColor": "transparent",
|
| 2297 |
+
"fillStyle": "solid",
|
| 2298 |
+
"strokeWidth": 2,
|
| 2299 |
+
"strokeStyle": "dashed",
|
| 2300 |
+
"roughness": 1,
|
| 2301 |
+
"opacity": 100,
|
| 2302 |
+
"groupIds": [],
|
| 2303 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 2304 |
+
"index": "apt",
|
| 2305 |
+
"roundness": {
|
| 2306 |
+
"type": 2
|
| 2307 |
+
},
|
| 2308 |
+
"seed": 235643858,
|
| 2309 |
+
"version": 1180,
|
| 2310 |
+
"versionNonce": 1926198802,
|
| 2311 |
+
"isDeleted": false,
|
| 2312 |
+
"boundElements": [],
|
| 2313 |
+
"updated": 1739437653572,
|
| 2314 |
+
"link": null,
|
| 2315 |
+
"locked": false,
|
| 2316 |
+
"points": [
|
| 2317 |
+
[
|
| 2318 |
+
0,
|
| 2319 |
+
0
|
| 2320 |
+
],
|
| 2321 |
+
[
|
| 2322 |
+
-187.95914620974406,
|
| 2323 |
+
-4.350599282177882
|
| 2324 |
+
]
|
| 2325 |
+
],
|
| 2326 |
+
"lastCommittedPoint": null,
|
| 2327 |
+
"startBinding": {
|
| 2328 |
+
"elementId": "WsxPr8Q8Ki3MX02D1zoTP",
|
| 2329 |
+
"focus": -0.14993749818034682,
|
| 2330 |
+
"gap": 8.17755126953125,
|
| 2331 |
+
"fixedPoint": null
|
| 2332 |
+
},
|
| 2333 |
+
"endBinding": {
|
| 2334 |
+
"elementId": "I7sHCIcRd544zlJb-k7MC",
|
| 2335 |
+
"focus": -0.09902868681529854,
|
| 2336 |
+
"gap": 5.318884744809665,
|
| 2337 |
+
"fixedPoint": null
|
| 2338 |
+
},
|
| 2339 |
+
"startArrowhead": null,
|
| 2340 |
+
"endArrowhead": "arrow",
|
| 2341 |
+
"elbowed": false
|
| 2342 |
+
},
|
| 2343 |
+
{
|
| 2344 |
+
"id": "4EpXJpZS9VYbSmYOdGndE",
|
| 2345 |
+
"type": "frame",
|
| 2346 |
+
"x": 556.4840630425347,
|
| 2347 |
+
"y": 469.65690104166686,
|
| 2348 |
+
"width": 1466.3111572265625,
|
| 2349 |
+
"height": 923.022201538086,
|
| 2350 |
+
"angle": 0,
|
| 2351 |
+
"strokeColor": "#bbb",
|
| 2352 |
+
"backgroundColor": "transparent",
|
| 2353 |
+
"fillStyle": "solid",
|
| 2354 |
+
"strokeWidth": 2,
|
| 2355 |
+
"strokeStyle": "solid",
|
| 2356 |
+
"roughness": 0,
|
| 2357 |
+
"opacity": 100,
|
| 2358 |
+
"groupIds": [],
|
| 2359 |
+
"frameId": null,
|
| 2360 |
+
"index": "aq",
|
| 2361 |
+
"roundness": null,
|
| 2362 |
+
"seed": 2051690766,
|
| 2363 |
+
"version": 870,
|
| 2364 |
+
"versionNonce": 142200978,
|
| 2365 |
+
"isDeleted": false,
|
| 2366 |
+
"boundElements": [],
|
| 2367 |
+
"updated": 1739437653572,
|
| 2368 |
+
"link": null,
|
| 2369 |
+
"locked": false,
|
| 2370 |
+
"name": "Langgraph"
|
| 2371 |
+
},
|
| 2372 |
+
{
|
| 2373 |
+
"id": "NrAZkP8Ng_B8lM3f45B0d",
|
| 2374 |
+
"type": "rectangle",
|
| 2375 |
+
"x": 1478.4393988715276,
|
| 2376 |
+
"y": 1547.2471211751301,
|
| 2377 |
+
"width": 297.95556640625,
|
| 2378 |
+
"height": 93.86651611328125,
|
| 2379 |
+
"angle": 0,
|
| 2380 |
+
"strokeColor": "#1e1e1e",
|
| 2381 |
+
"backgroundColor": "transparent",
|
| 2382 |
+
"fillStyle": "solid",
|
| 2383 |
+
"strokeWidth": 2,
|
| 2384 |
+
"strokeStyle": "solid",
|
| 2385 |
+
"roughness": 1,
|
| 2386 |
+
"opacity": 100,
|
| 2387 |
+
"groupIds": [],
|
| 2388 |
+
"frameId": null,
|
| 2389 |
+
"index": "at",
|
| 2390 |
+
"roundness": {
|
| 2391 |
+
"type": 3
|
| 2392 |
+
},
|
| 2393 |
+
"seed": 531617870,
|
| 2394 |
+
"version": 466,
|
| 2395 |
+
"versionNonce": 422448398,
|
| 2396 |
+
"isDeleted": false,
|
| 2397 |
+
"boundElements": [
|
| 2398 |
+
{
|
| 2399 |
+
"type": "text",
|
| 2400 |
+
"id": "bX-7TNY4PBleds7wTHIUv"
|
| 2401 |
+
},
|
| 2402 |
+
{
|
| 2403 |
+
"id": "xx3Qb-dEk_gwNzn15L2Js",
|
| 2404 |
+
"type": "arrow"
|
| 2405 |
+
},
|
| 2406 |
+
{
|
| 2407 |
+
"id": "FyQYDCMA748f6_svuDGi-",
|
| 2408 |
+
"type": "arrow"
|
| 2409 |
+
}
|
| 2410 |
+
],
|
| 2411 |
+
"updated": 1739438051890,
|
| 2412 |
+
"link": null,
|
| 2413 |
+
"locked": false
|
| 2414 |
+
},
|
| 2415 |
+
{
|
| 2416 |
+
"id": "bX-7TNY4PBleds7wTHIUv",
|
| 2417 |
+
"type": "text",
|
| 2418 |
+
"x": 1541.4872656928167,
|
| 2419 |
+
"y": 1581.6803792317708,
|
| 2420 |
+
"width": 171.85983276367188,
|
| 2421 |
+
"height": 25,
|
| 2422 |
+
"angle": 0,
|
| 2423 |
+
"strokeColor": "#1e1e1e",
|
| 2424 |
+
"backgroundColor": "transparent",
|
| 2425 |
+
"fillStyle": "solid",
|
| 2426 |
+
"strokeWidth": 2,
|
| 2427 |
+
"strokeStyle": "solid",
|
| 2428 |
+
"roughness": 1,
|
| 2429 |
+
"opacity": 100,
|
| 2430 |
+
"groupIds": [],
|
| 2431 |
+
"frameId": null,
|
| 2432 |
+
"index": "au",
|
| 2433 |
+
"roundness": null,
|
| 2434 |
+
"seed": 485203598,
|
| 2435 |
+
"version": 436,
|
| 2436 |
+
"versionNonce": 1514486606,
|
| 2437 |
+
"isDeleted": false,
|
| 2438 |
+
"boundElements": [],
|
| 2439 |
+
"updated": 1739438051890,
|
| 2440 |
+
"link": null,
|
| 2441 |
+
"locked": false,
|
| 2442 |
+
"text": "Displays response",
|
| 2443 |
+
"fontSize": 20,
|
| 2444 |
+
"fontFamily": 5,
|
| 2445 |
+
"textAlign": "center",
|
| 2446 |
+
"verticalAlign": "middle",
|
| 2447 |
+
"containerId": "NrAZkP8Ng_B8lM3f45B0d",
|
| 2448 |
+
"originalText": "Displays response",
|
| 2449 |
+
"autoResize": true,
|
| 2450 |
+
"lineHeight": 1.25
|
| 2451 |
+
},
|
| 2452 |
+
{
|
| 2453 |
+
"id": "3MGuF2J5NwQCyzMW7bBY0",
|
| 2454 |
+
"type": "arrow",
|
| 2455 |
+
"x": 1171.9127836979494,
|
| 2456 |
+
"y": 1416.1651475694446,
|
| 2457 |
+
"width": 5.720658810559826,
|
| 2458 |
+
"height": 117.8860541449651,
|
| 2459 |
+
"angle": 0,
|
| 2460 |
+
"strokeColor": "#1e1e1e",
|
| 2461 |
+
"backgroundColor": "transparent",
|
| 2462 |
+
"fillStyle": "solid",
|
| 2463 |
+
"strokeWidth": 2,
|
| 2464 |
+
"strokeStyle": "solid",
|
| 2465 |
+
"roughness": 1,
|
| 2466 |
+
"opacity": 100,
|
| 2467 |
+
"groupIds": [],
|
| 2468 |
+
"frameId": null,
|
| 2469 |
+
"index": "av",
|
| 2470 |
+
"roundness": {
|
| 2471 |
+
"type": 2
|
| 2472 |
+
},
|
| 2473 |
+
"seed": 461199890,
|
| 2474 |
+
"version": 534,
|
| 2475 |
+
"versionNonce": 1856847694,
|
| 2476 |
+
"isDeleted": false,
|
| 2477 |
+
"boundElements": [],
|
| 2478 |
+
"updated": 1739438087356,
|
| 2479 |
+
"link": null,
|
| 2480 |
+
"locked": false,
|
| 2481 |
+
"points": [
|
| 2482 |
+
[
|
| 2483 |
+
0,
|
| 2484 |
+
0
|
| 2485 |
+
],
|
| 2486 |
+
[
|
| 2487 |
+
-5.720658810559826,
|
| 2488 |
+
-117.8860541449651
|
| 2489 |
+
]
|
| 2490 |
+
],
|
| 2491 |
+
"lastCommittedPoint": null,
|
| 2492 |
+
"startBinding": {
|
| 2493 |
+
"elementId": "O-dqdUHJECPv0GcXIRmR6",
|
| 2494 |
+
"focus": -0.1479394222512134,
|
| 2495 |
+
"gap": 1.5411003960502967,
|
| 2496 |
+
"fixedPoint": null
|
| 2497 |
+
},
|
| 2498 |
+
"endBinding": {
|
| 2499 |
+
"elementId": "WsxPr8Q8Ki3MX02D1zoTP",
|
| 2500 |
+
"focus": -0.14206739760083398,
|
| 2501 |
+
"gap": 3.8441543579101562,
|
| 2502 |
+
"fixedPoint": null
|
| 2503 |
+
},
|
| 2504 |
+
"startArrowhead": "arrow",
|
| 2505 |
+
"endArrowhead": null,
|
| 2506 |
+
"elbowed": false
|
| 2507 |
+
},
|
| 2508 |
+
{
|
| 2509 |
+
"id": "xx3Qb-dEk_gwNzn15L2Js",
|
| 2510 |
+
"type": "arrow",
|
| 2511 |
+
"x": 1627.0986560652223,
|
| 2512 |
+
"y": 1543.6914265950522,
|
| 2513 |
+
"width": 10.854823739222184,
|
| 2514 |
+
"height": 734.6567789713541,
|
| 2515 |
+
"angle": 0,
|
| 2516 |
+
"strokeColor": "#1e1e1e",
|
| 2517 |
+
"backgroundColor": "transparent",
|
| 2518 |
+
"fillStyle": "solid",
|
| 2519 |
+
"strokeWidth": 2,
|
| 2520 |
+
"strokeStyle": "solid",
|
| 2521 |
+
"roughness": 1,
|
| 2522 |
+
"opacity": 100,
|
| 2523 |
+
"groupIds": [],
|
| 2524 |
+
"frameId": null,
|
| 2525 |
+
"index": "aw",
|
| 2526 |
+
"roundness": {
|
| 2527 |
+
"type": 2
|
| 2528 |
+
},
|
| 2529 |
+
"seed": 1422299666,
|
| 2530 |
+
"version": 441,
|
| 2531 |
+
"versionNonce": 1155309966,
|
| 2532 |
+
"isDeleted": false,
|
| 2533 |
+
"boundElements": [],
|
| 2534 |
+
"updated": 1739438051890,
|
| 2535 |
+
"link": null,
|
| 2536 |
+
"locked": false,
|
| 2537 |
+
"points": [
|
| 2538 |
+
[
|
| 2539 |
+
0,
|
| 2540 |
+
0
|
| 2541 |
+
],
|
| 2542 |
+
[
|
| 2543 |
+
10.854823739222184,
|
| 2544 |
+
-734.6567789713541
|
| 2545 |
+
]
|
| 2546 |
+
],
|
| 2547 |
+
"lastCommittedPoint": null,
|
| 2548 |
+
"startBinding": {
|
| 2549 |
+
"elementId": "NrAZkP8Ng_B8lM3f45B0d",
|
| 2550 |
+
"focus": -0.007112380664110637,
|
| 2551 |
+
"gap": 3.555694580078125,
|
| 2552 |
+
"fixedPoint": null
|
| 2553 |
+
},
|
| 2554 |
+
"endBinding": {
|
| 2555 |
+
"elementId": "K7JKG04XiRPCsQ3h4_Dax",
|
| 2556 |
+
"focus": -0.005877344681196516,
|
| 2557 |
+
"gap": 2.5109786987304688,
|
| 2558 |
+
"fixedPoint": null
|
| 2559 |
+
},
|
| 2560 |
+
"startArrowhead": "arrow",
|
| 2561 |
+
"endArrowhead": null,
|
| 2562 |
+
"elbowed": false
|
| 2563 |
+
},
|
| 2564 |
+
{
|
| 2565 |
+
"id": "FyQYDCMA748f6_svuDGi-",
|
| 2566 |
+
"type": "arrow",
|
| 2567 |
+
"x": 1612.1797493077215,
|
| 2568 |
+
"y": 1644.669209798177,
|
| 2569 |
+
"width": 264.6393435517118,
|
| 2570 |
+
"height": 120.25670708550342,
|
| 2571 |
+
"angle": 0,
|
| 2572 |
+
"strokeColor": "#1e1e1e",
|
| 2573 |
+
"backgroundColor": "transparent",
|
| 2574 |
+
"fillStyle": "solid",
|
| 2575 |
+
"strokeWidth": 2,
|
| 2576 |
+
"strokeStyle": "solid",
|
| 2577 |
+
"roughness": 1,
|
| 2578 |
+
"opacity": 100,
|
| 2579 |
+
"groupIds": [],
|
| 2580 |
+
"frameId": null,
|
| 2581 |
+
"index": "ax",
|
| 2582 |
+
"roundness": {
|
| 2583 |
+
"type": 2
|
| 2584 |
+
},
|
| 2585 |
+
"seed": 1157217170,
|
| 2586 |
+
"version": 181,
|
| 2587 |
+
"versionNonce": 741162958,
|
| 2588 |
+
"isDeleted": false,
|
| 2589 |
+
"boundElements": [],
|
| 2590 |
+
"updated": 1739438051890,
|
| 2591 |
+
"link": null,
|
| 2592 |
+
"locked": false,
|
| 2593 |
+
"points": [
|
| 2594 |
+
[
|
| 2595 |
+
0,
|
| 2596 |
+
0
|
| 2597 |
+
],
|
| 2598 |
+
[
|
| 2599 |
+
-264.6393435517118,
|
| 2600 |
+
120.25670708550342
|
| 2601 |
+
]
|
| 2602 |
+
],
|
| 2603 |
+
"lastCommittedPoint": null,
|
| 2604 |
+
"startBinding": {
|
| 2605 |
+
"elementId": "NrAZkP8Ng_B8lM3f45B0d",
|
| 2606 |
+
"focus": -0.380041570384292,
|
| 2607 |
+
"gap": 3.555572509765625,
|
| 2608 |
+
"fixedPoint": null
|
| 2609 |
+
},
|
| 2610 |
+
"endBinding": {
|
| 2611 |
+
"elementId": "JgxMPeI9m-WxMJBe8p2iu",
|
| 2612 |
+
"focus": -0.4517367543467092,
|
| 2613 |
+
"gap": 1.0667572021484375,
|
| 2614 |
+
"fixedPoint": null
|
| 2615 |
+
},
|
| 2616 |
+
"startArrowhead": null,
|
| 2617 |
+
"endArrowhead": "arrow",
|
| 2618 |
+
"elbowed": false
|
| 2619 |
+
},
|
| 2620 |
+
{
|
| 2621 |
+
"id": "obGZKTevXg4XAoWm_IZ9Z",
|
| 2622 |
+
"type": "arrow",
|
| 2623 |
+
"x": 1506.3704562717016,
|
| 2624 |
+
"y": 487.0592447916665,
|
| 2625 |
+
"width": 94.45550712564273,
|
| 2626 |
+
"height": 51.44181823730503,
|
| 2627 |
+
"angle": 0,
|
| 2628 |
+
"strokeColor": "#1e1e1e",
|
| 2629 |
+
"backgroundColor": "transparent",
|
| 2630 |
+
"fillStyle": "solid",
|
| 2631 |
+
"strokeWidth": 2,
|
| 2632 |
+
"strokeStyle": "solid",
|
| 2633 |
+
"roughness": 1,
|
| 2634 |
+
"opacity": 100,
|
| 2635 |
+
"groupIds": [],
|
| 2636 |
+
"frameId": null,
|
| 2637 |
+
"index": "az",
|
| 2638 |
+
"roundness": {
|
| 2639 |
+
"type": 2
|
| 2640 |
+
},
|
| 2641 |
+
"seed": 912393166,
|
| 2642 |
+
"version": 179,
|
| 2643 |
+
"versionNonce": 1990931794,
|
| 2644 |
+
"isDeleted": false,
|
| 2645 |
+
"boundElements": [],
|
| 2646 |
+
"updated": 1739437653572,
|
| 2647 |
+
"link": null,
|
| 2648 |
+
"locked": false,
|
| 2649 |
+
"points": [
|
| 2650 |
+
[
|
| 2651 |
+
0,
|
| 2652 |
+
0
|
| 2653 |
+
],
|
| 2654 |
+
[
|
| 2655 |
+
-94.45550712564273,
|
| 2656 |
+
51.44181823730503
|
| 2657 |
+
]
|
| 2658 |
+
],
|
| 2659 |
+
"lastCommittedPoint": null,
|
| 2660 |
+
"startBinding": {
|
| 2661 |
+
"elementId": "qWnNFvspSJfngiQK7c6tU",
|
| 2662 |
+
"focus": -0.32134278675123384,
|
| 2663 |
+
"gap": 7.726030985514171,
|
| 2664 |
+
"fixedPoint": null
|
| 2665 |
+
},
|
| 2666 |
+
"endBinding": {
|
| 2667 |
+
"elementId": "GBp2vkKDN_rJ-0THbSebW",
|
| 2668 |
+
"focus": -0.23111722249403238,
|
| 2669 |
+
"gap": 1,
|
| 2670 |
+
"fixedPoint": null
|
| 2671 |
+
},
|
| 2672 |
+
"startArrowhead": null,
|
| 2673 |
+
"endArrowhead": "arrow",
|
| 2674 |
+
"elbowed": false
|
| 2675 |
+
},
|
| 2676 |
+
{
|
| 2677 |
+
"id": "O-dqdUHJECPv0GcXIRmR6",
|
| 2678 |
+
"type": "rectangle",
|
| 2679 |
+
"x": 1047.6639404296877,
|
| 2680 |
+
"y": 1417.7062479654949,
|
| 2681 |
+
"width": 297.95556640625,
|
| 2682 |
+
"height": 93.86651611328125,
|
| 2683 |
+
"angle": 0,
|
| 2684 |
+
"strokeColor": "#1e1e1e",
|
| 2685 |
+
"backgroundColor": "transparent",
|
| 2686 |
+
"fillStyle": "solid",
|
| 2687 |
+
"strokeWidth": 2,
|
| 2688 |
+
"strokeStyle": "solid",
|
| 2689 |
+
"roughness": 1,
|
| 2690 |
+
"opacity": 100,
|
| 2691 |
+
"groupIds": [],
|
| 2692 |
+
"frameId": null,
|
| 2693 |
+
"index": "b00",
|
| 2694 |
+
"roundness": {
|
| 2695 |
+
"type": 3
|
| 2696 |
+
},
|
| 2697 |
+
"seed": 1972365070,
|
| 2698 |
+
"version": 547,
|
| 2699 |
+
"versionNonce": 1931807630,
|
| 2700 |
+
"isDeleted": false,
|
| 2701 |
+
"boundElements": [
|
| 2702 |
+
{
|
| 2703 |
+
"type": "text",
|
| 2704 |
+
"id": "mtCw8uOJGy6w_hTgvboMI"
|
| 2705 |
+
},
|
| 2706 |
+
{
|
| 2707 |
+
"id": "3MGuF2J5NwQCyzMW7bBY0",
|
| 2708 |
+
"type": "arrow"
|
| 2709 |
+
},
|
| 2710 |
+
{
|
| 2711 |
+
"id": "qnVIwuImMX7lY7cpTgiEM",
|
| 2712 |
+
"type": "arrow"
|
| 2713 |
+
}
|
| 2714 |
+
],
|
| 2715 |
+
"updated": 1739438107331,
|
| 2716 |
+
"link": null,
|
| 2717 |
+
"locked": false
|
| 2718 |
+
},
|
| 2719 |
+
{
|
| 2720 |
+
"id": "mtCw8uOJGy6w_hTgvboMI",
|
| 2721 |
+
"type": "text",
|
| 2722 |
+
"x": 1090.4618301391604,
|
| 2723 |
+
"y": 1439.6395060221355,
|
| 2724 |
+
"width": 212.3597869873047,
|
| 2725 |
+
"height": 50,
|
| 2726 |
+
"angle": 0,
|
| 2727 |
+
"strokeColor": "#1e1e1e",
|
| 2728 |
+
"backgroundColor": "transparent",
|
| 2729 |
+
"fillStyle": "solid",
|
| 2730 |
+
"strokeWidth": 2,
|
| 2731 |
+
"strokeStyle": "solid",
|
| 2732 |
+
"roughness": 1,
|
| 2733 |
+
"opacity": 100,
|
| 2734 |
+
"groupIds": [],
|
| 2735 |
+
"frameId": null,
|
| 2736 |
+
"index": "b01",
|
| 2737 |
+
"roundness": null,
|
| 2738 |
+
"seed": 1096537422,
|
| 2739 |
+
"version": 562,
|
| 2740 |
+
"versionNonce": 783083406,
|
| 2741 |
+
"isDeleted": false,
|
| 2742 |
+
"boundElements": [],
|
| 2743 |
+
"updated": 1739438100323,
|
| 2744 |
+
"link": null,
|
| 2745 |
+
"locked": false,
|
| 2746 |
+
"text": "Update dictionary per\nlanguage and phrases",
|
| 2747 |
+
"fontSize": 20,
|
| 2748 |
+
"fontFamily": 5,
|
| 2749 |
+
"textAlign": "center",
|
| 2750 |
+
"verticalAlign": "middle",
|
| 2751 |
+
"containerId": "O-dqdUHJECPv0GcXIRmR6",
|
| 2752 |
+
"originalText": "Update dictionary per language and phrases",
|
| 2753 |
+
"autoResize": true,
|
| 2754 |
+
"lineHeight": 1.25
|
| 2755 |
+
},
|
| 2756 |
+
{
|
| 2757 |
+
"id": "qnVIwuImMX7lY7cpTgiEM",
|
| 2758 |
+
"type": "arrow",
|
| 2759 |
+
"x": 1168.1975775824656,
|
| 2760 |
+
"y": 1516.7876722547742,
|
| 2761 |
+
"width": 6.320936414930429,
|
| 2762 |
+
"height": 67.95064290364576,
|
| 2763 |
+
"angle": 0,
|
| 2764 |
+
"strokeColor": "#1e1e1e",
|
| 2765 |
+
"backgroundColor": "transparent",
|
| 2766 |
+
"fillStyle": "solid",
|
| 2767 |
+
"strokeWidth": 2,
|
| 2768 |
+
"strokeStyle": "solid",
|
| 2769 |
+
"roughness": 1,
|
| 2770 |
+
"opacity": 100,
|
| 2771 |
+
"groupIds": [],
|
| 2772 |
+
"frameId": null,
|
| 2773 |
+
"index": "b02",
|
| 2774 |
+
"roundness": {
|
| 2775 |
+
"type": 2
|
| 2776 |
+
},
|
| 2777 |
+
"seed": 256302094,
|
| 2778 |
+
"version": 27,
|
| 2779 |
+
"versionNonce": 165177806,
|
| 2780 |
+
"isDeleted": false,
|
| 2781 |
+
"boundElements": [],
|
| 2782 |
+
"updated": 1739438107332,
|
| 2783 |
+
"link": null,
|
| 2784 |
+
"locked": false,
|
| 2785 |
+
"points": [
|
| 2786 |
+
[
|
| 2787 |
+
0,
|
| 2788 |
+
0
|
| 2789 |
+
],
|
| 2790 |
+
[
|
| 2791 |
+
6.320936414930429,
|
| 2792 |
+
67.95064290364576
|
| 2793 |
+
]
|
| 2794 |
+
],
|
| 2795 |
+
"lastCommittedPoint": null,
|
| 2796 |
+
"startBinding": {
|
| 2797 |
+
"elementId": "O-dqdUHJECPv0GcXIRmR6",
|
| 2798 |
+
"focus": 0.2171273561710918,
|
| 2799 |
+
"gap": 5.214908175998062,
|
| 2800 |
+
"fixedPoint": null
|
| 2801 |
+
},
|
| 2802 |
+
"endBinding": {
|
| 2803 |
+
"elementId": "cplZOVqKChIIlK1clqQyw",
|
| 2804 |
+
"focus": -0.0008688689602104533,
|
| 2805 |
+
"gap": 1,
|
| 2806 |
+
"fixedPoint": null
|
| 2807 |
+
},
|
| 2808 |
+
"startArrowhead": null,
|
| 2809 |
+
"endArrowhead": "arrow",
|
| 2810 |
+
"elbowed": false
|
| 2811 |
+
}
|
| 2812 |
+
],
|
| 2813 |
+
"appState": {
|
| 2814 |
+
"gridSize": 20,
|
| 2815 |
+
"gridStep": 5,
|
| 2816 |
+
"gridModeEnabled": false,
|
| 2817 |
+
"viewBackgroundColor": "#fffce8"
|
| 2818 |
+
},
|
| 2819 |
+
"files": {}
|
| 2820 |
+
}
|
instructions/diagrams/AppFlow.png
ADDED
|
instructions/diagrams/AppFlow_Simplified.excalidraw
ADDED
|
@@ -0,0 +1,2140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"type": "excalidraw",
|
| 3 |
+
"version": 2,
|
| 4 |
+
"source": "https://excalidraw.com",
|
| 5 |
+
"elements": [
|
| 6 |
+
{
|
| 7 |
+
"id": "wEufgc20D-l-mdtgWLXnT",
|
| 8 |
+
"type": "rectangle",
|
| 9 |
+
"x": 1049.5999755859375,
|
| 10 |
+
"y": 328.9332275390625,
|
| 11 |
+
"width": 226.8443603515625,
|
| 12 |
+
"height": 66.13334655761719,
|
| 13 |
+
"angle": 0,
|
| 14 |
+
"strokeColor": "#1e1e1e",
|
| 15 |
+
"backgroundColor": "transparent",
|
| 16 |
+
"fillStyle": "solid",
|
| 17 |
+
"strokeWidth": 2,
|
| 18 |
+
"strokeStyle": "solid",
|
| 19 |
+
"roughness": 1,
|
| 20 |
+
"opacity": 100,
|
| 21 |
+
"groupIds": [],
|
| 22 |
+
"frameId": null,
|
| 23 |
+
"index": "a0",
|
| 24 |
+
"roundness": {
|
| 25 |
+
"type": 3
|
| 26 |
+
},
|
| 27 |
+
"seed": 673334670,
|
| 28 |
+
"version": 193,
|
| 29 |
+
"versionNonce": 1990761870,
|
| 30 |
+
"isDeleted": false,
|
| 31 |
+
"boundElements": [
|
| 32 |
+
{
|
| 33 |
+
"type": "text",
|
| 34 |
+
"id": "4iRT9IIgWzQp78bB1HJtR"
|
| 35 |
+
},
|
| 36 |
+
{
|
| 37 |
+
"id": "DZEp77gEfCN0TqfeYrqOD",
|
| 38 |
+
"type": "arrow"
|
| 39 |
+
},
|
| 40 |
+
{
|
| 41 |
+
"id": "3X5XGRrrxXRErQWuuf1J7",
|
| 42 |
+
"type": "arrow"
|
| 43 |
+
}
|
| 44 |
+
],
|
| 45 |
+
"updated": 1739436555417,
|
| 46 |
+
"link": null,
|
| 47 |
+
"locked": false
|
| 48 |
+
},
|
| 49 |
+
{
|
| 50 |
+
"id": "4iRT9IIgWzQp78bB1HJtR",
|
| 51 |
+
"type": "text",
|
| 52 |
+
"x": 1112.6022109985352,
|
| 53 |
+
"y": 349.4999008178711,
|
| 54 |
+
"width": 100.83988952636719,
|
| 55 |
+
"height": 25,
|
| 56 |
+
"angle": 0,
|
| 57 |
+
"strokeColor": "#1e1e1e",
|
| 58 |
+
"backgroundColor": "transparent",
|
| 59 |
+
"fillStyle": "solid",
|
| 60 |
+
"strokeWidth": 2,
|
| 61 |
+
"strokeStyle": "solid",
|
| 62 |
+
"roughness": 1,
|
| 63 |
+
"opacity": 100,
|
| 64 |
+
"groupIds": [],
|
| 65 |
+
"frameId": null,
|
| 66 |
+
"index": "a0V",
|
| 67 |
+
"roundness": null,
|
| 68 |
+
"seed": 1610706638,
|
| 69 |
+
"version": 129,
|
| 70 |
+
"versionNonce": 991542222,
|
| 71 |
+
"isDeleted": false,
|
| 72 |
+
"boundElements": [],
|
| 73 |
+
"updated": 1739436555417,
|
| 74 |
+
"link": null,
|
| 75 |
+
"locked": false,
|
| 76 |
+
"text": "text input",
|
| 77 |
+
"fontSize": 20,
|
| 78 |
+
"fontFamily": 5,
|
| 79 |
+
"textAlign": "center",
|
| 80 |
+
"verticalAlign": "middle",
|
| 81 |
+
"containerId": "wEufgc20D-l-mdtgWLXnT",
|
| 82 |
+
"originalText": "text input",
|
| 83 |
+
"autoResize": true,
|
| 84 |
+
"lineHeight": 1.25
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"id": "N3a4gTaFwF4wJwxYBngYJ",
|
| 88 |
+
"type": "text",
|
| 89 |
+
"x": 1291.3778076171875,
|
| 90 |
+
"y": 109.9111328125,
|
| 91 |
+
"width": 79.11991882324219,
|
| 92 |
+
"height": 25,
|
| 93 |
+
"angle": 0,
|
| 94 |
+
"strokeColor": "#1e1e1e",
|
| 95 |
+
"backgroundColor": "transparent",
|
| 96 |
+
"fillStyle": "solid",
|
| 97 |
+
"strokeWidth": 2,
|
| 98 |
+
"strokeStyle": "solid",
|
| 99 |
+
"roughness": 1,
|
| 100 |
+
"opacity": 100,
|
| 101 |
+
"groupIds": [],
|
| 102 |
+
"frameId": null,
|
| 103 |
+
"index": "a2",
|
| 104 |
+
"roundness": null,
|
| 105 |
+
"seed": 1917973650,
|
| 106 |
+
"version": 150,
|
| 107 |
+
"versionNonce": 300251214,
|
| 108 |
+
"isDeleted": false,
|
| 109 |
+
"boundElements": [],
|
| 110 |
+
"updated": 1739435856511,
|
| 111 |
+
"link": null,
|
| 112 |
+
"locked": false,
|
| 113 |
+
"text": "Polyglot",
|
| 114 |
+
"fontSize": 20,
|
| 115 |
+
"fontFamily": 5,
|
| 116 |
+
"textAlign": "left",
|
| 117 |
+
"verticalAlign": "top",
|
| 118 |
+
"containerId": null,
|
| 119 |
+
"originalText": "Polyglot",
|
| 120 |
+
"autoResize": true,
|
| 121 |
+
"lineHeight": 1.25
|
| 122 |
+
},
|
| 123 |
+
{
|
| 124 |
+
"id": "1LwWmxwxo3oOtd8zyJsR2",
|
| 125 |
+
"type": "rectangle",
|
| 126 |
+
"x": 1409.0664672851562,
|
| 127 |
+
"y": 321.46659088134766,
|
| 128 |
+
"width": 226.8443603515625,
|
| 129 |
+
"height": 66.13334655761719,
|
| 130 |
+
"angle": 0,
|
| 131 |
+
"strokeColor": "#1e1e1e",
|
| 132 |
+
"backgroundColor": "transparent",
|
| 133 |
+
"fillStyle": "solid",
|
| 134 |
+
"strokeWidth": 2,
|
| 135 |
+
"strokeStyle": "solid",
|
| 136 |
+
"roughness": 1,
|
| 137 |
+
"opacity": 100,
|
| 138 |
+
"groupIds": [],
|
| 139 |
+
"frameId": null,
|
| 140 |
+
"index": "a3",
|
| 141 |
+
"roundness": {
|
| 142 |
+
"type": 3
|
| 143 |
+
},
|
| 144 |
+
"seed": 223842830,
|
| 145 |
+
"version": 242,
|
| 146 |
+
"versionNonce": 1639868046,
|
| 147 |
+
"isDeleted": false,
|
| 148 |
+
"boundElements": [
|
| 149 |
+
{
|
| 150 |
+
"type": "text",
|
| 151 |
+
"id": "UUEuTFXnWuviUmx9OMvH2"
|
| 152 |
+
},
|
| 153 |
+
{
|
| 154 |
+
"id": "KKYXAU7nTKYpdZPmLHxqe",
|
| 155 |
+
"type": "arrow"
|
| 156 |
+
},
|
| 157 |
+
{
|
| 158 |
+
"id": "u3Jvq2udAipXeegyZU1Ai",
|
| 159 |
+
"type": "arrow"
|
| 160 |
+
}
|
| 161 |
+
],
|
| 162 |
+
"updated": 1739436555417,
|
| 163 |
+
"link": null,
|
| 164 |
+
"locked": false
|
| 165 |
+
},
|
| 166 |
+
{
|
| 167 |
+
"id": "UUEuTFXnWuviUmx9OMvH2",
|
| 168 |
+
"type": "text",
|
| 169 |
+
"x": 1468.6787033081055,
|
| 170 |
+
"y": 342.03326416015625,
|
| 171 |
+
"width": 107.61988830566406,
|
| 172 |
+
"height": 25,
|
| 173 |
+
"angle": 0,
|
| 174 |
+
"strokeColor": "#1e1e1e",
|
| 175 |
+
"backgroundColor": "transparent",
|
| 176 |
+
"fillStyle": "solid",
|
| 177 |
+
"strokeWidth": 2,
|
| 178 |
+
"strokeStyle": "solid",
|
| 179 |
+
"roughness": 1,
|
| 180 |
+
"opacity": 100,
|
| 181 |
+
"groupIds": [],
|
| 182 |
+
"frameId": null,
|
| 183 |
+
"index": "a4",
|
| 184 |
+
"roundness": null,
|
| 185 |
+
"seed": 2029396046,
|
| 186 |
+
"version": 183,
|
| 187 |
+
"versionNonce": 848192718,
|
| 188 |
+
"isDeleted": false,
|
| 189 |
+
"boundElements": [],
|
| 190 |
+
"updated": 1739436555417,
|
| 191 |
+
"link": null,
|
| 192 |
+
"locked": false,
|
| 193 |
+
"text": "audio input",
|
| 194 |
+
"fontSize": 20,
|
| 195 |
+
"fontFamily": 5,
|
| 196 |
+
"textAlign": "center",
|
| 197 |
+
"verticalAlign": "middle",
|
| 198 |
+
"containerId": "1LwWmxwxo3oOtd8zyJsR2",
|
| 199 |
+
"originalText": "audio input",
|
| 200 |
+
"autoResize": true,
|
| 201 |
+
"lineHeight": 1.25
|
| 202 |
+
},
|
| 203 |
+
{
|
| 204 |
+
"id": "qWnNFvspSJfngiQK7c6tU",
|
| 205 |
+
"type": "rectangle",
|
| 206 |
+
"x": 1396.2664184570312,
|
| 207 |
+
"y": 413.19986724853516,
|
| 208 |
+
"width": 226.8443603515625,
|
| 209 |
+
"height": 66.13334655761719,
|
| 210 |
+
"angle": 0,
|
| 211 |
+
"strokeColor": "#1e1e1e",
|
| 212 |
+
"backgroundColor": "transparent",
|
| 213 |
+
"fillStyle": "solid",
|
| 214 |
+
"strokeWidth": 2,
|
| 215 |
+
"strokeStyle": "solid",
|
| 216 |
+
"roughness": 1,
|
| 217 |
+
"opacity": 100,
|
| 218 |
+
"groupIds": [],
|
| 219 |
+
"frameId": null,
|
| 220 |
+
"index": "a5",
|
| 221 |
+
"roundness": {
|
| 222 |
+
"type": 3
|
| 223 |
+
},
|
| 224 |
+
"seed": 86937294,
|
| 225 |
+
"version": 369,
|
| 226 |
+
"versionNonce": 978941330,
|
| 227 |
+
"isDeleted": false,
|
| 228 |
+
"boundElements": [
|
| 229 |
+
{
|
| 230 |
+
"type": "text",
|
| 231 |
+
"id": "d1seOKVVllobMcoTVAF7q"
|
| 232 |
+
},
|
| 233 |
+
{
|
| 234 |
+
"id": "KKYXAU7nTKYpdZPmLHxqe",
|
| 235 |
+
"type": "arrow"
|
| 236 |
+
},
|
| 237 |
+
{
|
| 238 |
+
"id": "obGZKTevXg4XAoWm_IZ9Z",
|
| 239 |
+
"type": "arrow"
|
| 240 |
+
}
|
| 241 |
+
],
|
| 242 |
+
"updated": 1739437644714,
|
| 243 |
+
"link": null,
|
| 244 |
+
"locked": false
|
| 245 |
+
},
|
| 246 |
+
{
|
| 247 |
+
"id": "d1seOKVVllobMcoTVAF7q",
|
| 248 |
+
"type": "text",
|
| 249 |
+
"x": 1461.2686614990234,
|
| 250 |
+
"y": 433.76654052734375,
|
| 251 |
+
"width": 96.83987426757812,
|
| 252 |
+
"height": 25,
|
| 253 |
+
"angle": 0,
|
| 254 |
+
"strokeColor": "#1e1e1e",
|
| 255 |
+
"backgroundColor": "transparent",
|
| 256 |
+
"fillStyle": "solid",
|
| 257 |
+
"strokeWidth": 2,
|
| 258 |
+
"strokeStyle": "solid",
|
| 259 |
+
"roughness": 1,
|
| 260 |
+
"opacity": 100,
|
| 261 |
+
"groupIds": [],
|
| 262 |
+
"frameId": null,
|
| 263 |
+
"index": "a6",
|
| 264 |
+
"roundness": null,
|
| 265 |
+
"seed": 2119140622,
|
| 266 |
+
"version": 315,
|
| 267 |
+
"versionNonce": 1307934030,
|
| 268 |
+
"isDeleted": false,
|
| 269 |
+
"boundElements": [],
|
| 270 |
+
"updated": 1739436570416,
|
| 271 |
+
"link": null,
|
| 272 |
+
"locked": false,
|
| 273 |
+
"text": "transcribe",
|
| 274 |
+
"fontSize": 20,
|
| 275 |
+
"fontFamily": 5,
|
| 276 |
+
"textAlign": "center",
|
| 277 |
+
"verticalAlign": "middle",
|
| 278 |
+
"containerId": "qWnNFvspSJfngiQK7c6tU",
|
| 279 |
+
"originalText": "transcribe",
|
| 280 |
+
"autoResize": true,
|
| 281 |
+
"lineHeight": 1.25
|
| 282 |
+
},
|
| 283 |
+
{
|
| 284 |
+
"id": "KKYXAU7nTKYpdZPmLHxqe",
|
| 285 |
+
"type": "arrow",
|
| 286 |
+
"x": 1521.066650390625,
|
| 287 |
+
"y": 386.5333251953125,
|
| 288 |
+
"width": 9.530270104567307,
|
| 289 |
+
"height": 24.8887939453125,
|
| 290 |
+
"angle": 0,
|
| 291 |
+
"strokeColor": "#1e1e1e",
|
| 292 |
+
"backgroundColor": "transparent",
|
| 293 |
+
"fillStyle": "solid",
|
| 294 |
+
"strokeWidth": 2,
|
| 295 |
+
"strokeStyle": "solid",
|
| 296 |
+
"roughness": 1,
|
| 297 |
+
"opacity": 100,
|
| 298 |
+
"groupIds": [],
|
| 299 |
+
"frameId": null,
|
| 300 |
+
"index": "a7",
|
| 301 |
+
"roundness": {
|
| 302 |
+
"type": 2
|
| 303 |
+
},
|
| 304 |
+
"seed": 1789217422,
|
| 305 |
+
"version": 416,
|
| 306 |
+
"versionNonce": 336566286,
|
| 307 |
+
"isDeleted": false,
|
| 308 |
+
"boundElements": [],
|
| 309 |
+
"updated": 1739436570450,
|
| 310 |
+
"link": null,
|
| 311 |
+
"locked": false,
|
| 312 |
+
"points": [
|
| 313 |
+
[
|
| 314 |
+
0,
|
| 315 |
+
0
|
| 316 |
+
],
|
| 317 |
+
[
|
| 318 |
+
-9.530270104567307,
|
| 319 |
+
24.8887939453125
|
| 320 |
+
]
|
| 321 |
+
],
|
| 322 |
+
"lastCommittedPoint": null,
|
| 323 |
+
"startBinding": {
|
| 324 |
+
"elementId": "1LwWmxwxo3oOtd8zyJsR2",
|
| 325 |
+
"focus": 0.020106376849068606,
|
| 326 |
+
"gap": 1,
|
| 327 |
+
"fixedPoint": null
|
| 328 |
+
},
|
| 329 |
+
"endBinding": {
|
| 330 |
+
"elementId": "qWnNFvspSJfngiQK7c6tU",
|
| 331 |
+
"focus": -0.0911666024609831,
|
| 332 |
+
"gap": 1.7777481079101562,
|
| 333 |
+
"fixedPoint": null
|
| 334 |
+
},
|
| 335 |
+
"startArrowhead": null,
|
| 336 |
+
"endArrowhead": "arrow",
|
| 337 |
+
"elbowed": false
|
| 338 |
+
},
|
| 339 |
+
{
|
| 340 |
+
"id": "HXIKjJvzQzR2zEsPTWBHk",
|
| 341 |
+
"type": "ellipse",
|
| 342 |
+
"x": 1284.977783203125,
|
| 343 |
+
"y": 175.33323669433594,
|
| 344 |
+
"width": 135.822265625,
|
| 345 |
+
"height": 85,
|
| 346 |
+
"angle": 0,
|
| 347 |
+
"strokeColor": "#1e1e1e",
|
| 348 |
+
"backgroundColor": "transparent",
|
| 349 |
+
"fillStyle": "solid",
|
| 350 |
+
"strokeWidth": 2,
|
| 351 |
+
"strokeStyle": "solid",
|
| 352 |
+
"roughness": 1,
|
| 353 |
+
"opacity": 100,
|
| 354 |
+
"groupIds": [],
|
| 355 |
+
"frameId": null,
|
| 356 |
+
"index": "a8",
|
| 357 |
+
"roundness": {
|
| 358 |
+
"type": 2
|
| 359 |
+
},
|
| 360 |
+
"seed": 619080910,
|
| 361 |
+
"version": 153,
|
| 362 |
+
"versionNonce": 1398945486,
|
| 363 |
+
"isDeleted": false,
|
| 364 |
+
"boundElements": [
|
| 365 |
+
{
|
| 366 |
+
"type": "text",
|
| 367 |
+
"id": "ddGhaBHov4FaBkfD3gxud"
|
| 368 |
+
},
|
| 369 |
+
{
|
| 370 |
+
"id": "u3Jvq2udAipXeegyZU1Ai",
|
| 371 |
+
"type": "arrow"
|
| 372 |
+
},
|
| 373 |
+
{
|
| 374 |
+
"id": "DZEp77gEfCN0TqfeYrqOD",
|
| 375 |
+
"type": "arrow"
|
| 376 |
+
}
|
| 377 |
+
],
|
| 378 |
+
"updated": 1739436555417,
|
| 379 |
+
"link": null,
|
| 380 |
+
"locked": false
|
| 381 |
+
},
|
| 382 |
+
{
|
| 383 |
+
"id": "ddGhaBHov4FaBkfD3gxud",
|
| 384 |
+
"type": "text",
|
| 385 |
+
"x": 1314.8285307172914,
|
| 386 |
+
"y": 192.78119849390765,
|
| 387 |
+
"width": 76.07992553710938,
|
| 388 |
+
"height": 50,
|
| 389 |
+
"angle": 0,
|
| 390 |
+
"strokeColor": "#1e1e1e",
|
| 391 |
+
"backgroundColor": "transparent",
|
| 392 |
+
"fillStyle": "solid",
|
| 393 |
+
"strokeWidth": 2,
|
| 394 |
+
"strokeStyle": "solid",
|
| 395 |
+
"roughness": 1,
|
| 396 |
+
"opacity": 100,
|
| 397 |
+
"groupIds": [],
|
| 398 |
+
"frameId": null,
|
| 399 |
+
"index": "a9",
|
| 400 |
+
"roundness": null,
|
| 401 |
+
"seed": 2049036302,
|
| 402 |
+
"version": 125,
|
| 403 |
+
"versionNonce": 399387918,
|
| 404 |
+
"isDeleted": false,
|
| 405 |
+
"boundElements": [],
|
| 406 |
+
"updated": 1739436555417,
|
| 407 |
+
"link": null,
|
| 408 |
+
"locked": false,
|
| 409 |
+
"text": "User/ch\nat",
|
| 410 |
+
"fontSize": 20,
|
| 411 |
+
"fontFamily": 5,
|
| 412 |
+
"textAlign": "center",
|
| 413 |
+
"verticalAlign": "middle",
|
| 414 |
+
"containerId": "HXIKjJvzQzR2zEsPTWBHk",
|
| 415 |
+
"originalText": "User/chat",
|
| 416 |
+
"autoResize": true,
|
| 417 |
+
"lineHeight": 1.25
|
| 418 |
+
},
|
| 419 |
+
{
|
| 420 |
+
"id": "u3Jvq2udAipXeegyZU1Ai",
|
| 421 |
+
"type": "arrow",
|
| 422 |
+
"x": 1409.42236328125,
|
| 423 |
+
"y": 237.19989013671875,
|
| 424 |
+
"width": 95.2886962890625,
|
| 425 |
+
"height": 80.35556030273438,
|
| 426 |
+
"angle": 0,
|
| 427 |
+
"strokeColor": "#1e1e1e",
|
| 428 |
+
"backgroundColor": "transparent",
|
| 429 |
+
"fillStyle": "solid",
|
| 430 |
+
"strokeWidth": 2,
|
| 431 |
+
"strokeStyle": "solid",
|
| 432 |
+
"roughness": 1,
|
| 433 |
+
"opacity": 100,
|
| 434 |
+
"groupIds": [],
|
| 435 |
+
"frameId": null,
|
| 436 |
+
"index": "aA",
|
| 437 |
+
"roundness": {
|
| 438 |
+
"type": 2
|
| 439 |
+
},
|
| 440 |
+
"seed": 720733074,
|
| 441 |
+
"version": 389,
|
| 442 |
+
"versionNonce": 1688510034,
|
| 443 |
+
"isDeleted": false,
|
| 444 |
+
"boundElements": [],
|
| 445 |
+
"updated": 1739436556162,
|
| 446 |
+
"link": null,
|
| 447 |
+
"locked": false,
|
| 448 |
+
"points": [
|
| 449 |
+
[
|
| 450 |
+
0,
|
| 451 |
+
0
|
| 452 |
+
],
|
| 453 |
+
[
|
| 454 |
+
95.2886962890625,
|
| 455 |
+
80.35556030273438
|
| 456 |
+
]
|
| 457 |
+
],
|
| 458 |
+
"lastCommittedPoint": null,
|
| 459 |
+
"startBinding": {
|
| 460 |
+
"elementId": "HXIKjJvzQzR2zEsPTWBHk",
|
| 461 |
+
"focus": -0.3969277448589378,
|
| 462 |
+
"gap": 1,
|
| 463 |
+
"fixedPoint": null
|
| 464 |
+
},
|
| 465 |
+
"endBinding": {
|
| 466 |
+
"elementId": "1LwWmxwxo3oOtd8zyJsR2",
|
| 467 |
+
"focus": 0.17081471868479614,
|
| 468 |
+
"gap": 3.9111404418945312,
|
| 469 |
+
"fixedPoint": null
|
| 470 |
+
},
|
| 471 |
+
"startArrowhead": null,
|
| 472 |
+
"endArrowhead": "arrow",
|
| 473 |
+
"elbowed": false
|
| 474 |
+
},
|
| 475 |
+
{
|
| 476 |
+
"id": "DZEp77gEfCN0TqfeYrqOD",
|
| 477 |
+
"type": "arrow",
|
| 478 |
+
"x": 1300.6221923828125,
|
| 479 |
+
"y": 238.62213134765625,
|
| 480 |
+
"width": 153.5999755859375,
|
| 481 |
+
"height": 91.022216796875,
|
| 482 |
+
"angle": 0,
|
| 483 |
+
"strokeColor": "#1e1e1e",
|
| 484 |
+
"backgroundColor": "transparent",
|
| 485 |
+
"fillStyle": "solid",
|
| 486 |
+
"strokeWidth": 2,
|
| 487 |
+
"strokeStyle": "solid",
|
| 488 |
+
"roughness": 1,
|
| 489 |
+
"opacity": 100,
|
| 490 |
+
"groupIds": [],
|
| 491 |
+
"frameId": null,
|
| 492 |
+
"index": "aB",
|
| 493 |
+
"roundness": {
|
| 494 |
+
"type": 2
|
| 495 |
+
},
|
| 496 |
+
"seed": 831034514,
|
| 497 |
+
"version": 393,
|
| 498 |
+
"versionNonce": 671789522,
|
| 499 |
+
"isDeleted": false,
|
| 500 |
+
"boundElements": [],
|
| 501 |
+
"updated": 1739436556162,
|
| 502 |
+
"link": null,
|
| 503 |
+
"locked": false,
|
| 504 |
+
"points": [
|
| 505 |
+
[
|
| 506 |
+
0,
|
| 507 |
+
0
|
| 508 |
+
],
|
| 509 |
+
[
|
| 510 |
+
-153.5999755859375,
|
| 511 |
+
91.022216796875
|
| 512 |
+
]
|
| 513 |
+
],
|
| 514 |
+
"lastCommittedPoint": null,
|
| 515 |
+
"startBinding": {
|
| 516 |
+
"elementId": "HXIKjJvzQzR2zEsPTWBHk",
|
| 517 |
+
"focus": 0.17399492475432984,
|
| 518 |
+
"gap": 1,
|
| 519 |
+
"fixedPoint": null
|
| 520 |
+
},
|
| 521 |
+
"endBinding": {
|
| 522 |
+
"elementId": "wEufgc20D-l-mdtgWLXnT",
|
| 523 |
+
"focus": -0.41720255737903406,
|
| 524 |
+
"gap": 1,
|
| 525 |
+
"fixedPoint": null
|
| 526 |
+
},
|
| 527 |
+
"startArrowhead": null,
|
| 528 |
+
"endArrowhead": "arrow",
|
| 529 |
+
"elbowed": false
|
| 530 |
+
},
|
| 531 |
+
{
|
| 532 |
+
"id": "GBp2vkKDN_rJ-0THbSebW",
|
| 533 |
+
"type": "rectangle",
|
| 534 |
+
"x": 1293.1953667534722,
|
| 535 |
+
"y": 539.5010630289715,
|
| 536 |
+
"width": 204.800048828125,
|
| 537 |
+
"height": 54.044464111328125,
|
| 538 |
+
"angle": 0,
|
| 539 |
+
"strokeColor": "#1e1e1e",
|
| 540 |
+
"backgroundColor": "transparent",
|
| 541 |
+
"fillStyle": "solid",
|
| 542 |
+
"strokeWidth": 2,
|
| 543 |
+
"strokeStyle": "solid",
|
| 544 |
+
"roughness": 1,
|
| 545 |
+
"opacity": 100,
|
| 546 |
+
"groupIds": [],
|
| 547 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 548 |
+
"index": "aC",
|
| 549 |
+
"roundness": {
|
| 550 |
+
"type": 3
|
| 551 |
+
},
|
| 552 |
+
"seed": 1307090450,
|
| 553 |
+
"version": 908,
|
| 554 |
+
"versionNonce": 2119229454,
|
| 555 |
+
"isDeleted": false,
|
| 556 |
+
"boundElements": [
|
| 557 |
+
{
|
| 558 |
+
"type": "text",
|
| 559 |
+
"id": "1JLqUklMHKwR58YKcxPg5"
|
| 560 |
+
},
|
| 561 |
+
{
|
| 562 |
+
"id": "3X5XGRrrxXRErQWuuf1J7",
|
| 563 |
+
"type": "arrow"
|
| 564 |
+
},
|
| 565 |
+
{
|
| 566 |
+
"id": "CX9int0DOUrljdTbAdw0y",
|
| 567 |
+
"type": "arrow"
|
| 568 |
+
},
|
| 569 |
+
{
|
| 570 |
+
"id": "obGZKTevXg4XAoWm_IZ9Z",
|
| 571 |
+
"type": "arrow"
|
| 572 |
+
}
|
| 573 |
+
],
|
| 574 |
+
"updated": 1739443216784,
|
| 575 |
+
"link": null,
|
| 576 |
+
"locked": false
|
| 577 |
+
},
|
| 578 |
+
{
|
| 579 |
+
"id": "1JLqUklMHKwR58YKcxPg5",
|
| 580 |
+
"type": "text",
|
| 581 |
+
"x": 1329.315468682183,
|
| 582 |
+
"y": 554.0232950846356,
|
| 583 |
+
"width": 132.55984497070312,
|
| 584 |
+
"height": 25,
|
| 585 |
+
"angle": 0,
|
| 586 |
+
"strokeColor": "#1e1e1e",
|
| 587 |
+
"backgroundColor": "transparent",
|
| 588 |
+
"fillStyle": "solid",
|
| 589 |
+
"strokeWidth": 2,
|
| 590 |
+
"strokeStyle": "solid",
|
| 591 |
+
"roughness": 1,
|
| 592 |
+
"opacity": 100,
|
| 593 |
+
"groupIds": [],
|
| 594 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 595 |
+
"index": "aCV",
|
| 596 |
+
"roundness": null,
|
| 597 |
+
"seed": 1615368402,
|
| 598 |
+
"version": 839,
|
| 599 |
+
"versionNonce": 1941401554,
|
| 600 |
+
"isDeleted": false,
|
| 601 |
+
"boundElements": [],
|
| 602 |
+
"updated": 1739443216784,
|
| 603 |
+
"link": null,
|
| 604 |
+
"locked": false,
|
| 605 |
+
"text": "detect intent",
|
| 606 |
+
"fontSize": 20,
|
| 607 |
+
"fontFamily": 5,
|
| 608 |
+
"textAlign": "center",
|
| 609 |
+
"verticalAlign": "middle",
|
| 610 |
+
"containerId": "GBp2vkKDN_rJ-0THbSebW",
|
| 611 |
+
"originalText": "detect intent",
|
| 612 |
+
"autoResize": true,
|
| 613 |
+
"lineHeight": 1.25
|
| 614 |
+
},
|
| 615 |
+
{
|
| 616 |
+
"id": "3X5XGRrrxXRErQWuuf1J7",
|
| 617 |
+
"type": "arrow",
|
| 618 |
+
"x": 1150.5777587890625,
|
| 619 |
+
"y": 396.4888000488281,
|
| 620 |
+
"width": 228.60844359074213,
|
| 621 |
+
"height": 142.01226298014342,
|
| 622 |
+
"angle": 0,
|
| 623 |
+
"strokeColor": "#1e1e1e",
|
| 624 |
+
"backgroundColor": "transparent",
|
| 625 |
+
"fillStyle": "solid",
|
| 626 |
+
"strokeWidth": 2,
|
| 627 |
+
"strokeStyle": "solid",
|
| 628 |
+
"roughness": 1,
|
| 629 |
+
"opacity": 100,
|
| 630 |
+
"groupIds": [],
|
| 631 |
+
"frameId": null,
|
| 632 |
+
"index": "aE",
|
| 633 |
+
"roundness": {
|
| 634 |
+
"type": 2
|
| 635 |
+
},
|
| 636 |
+
"seed": 2079968658,
|
| 637 |
+
"version": 1218,
|
| 638 |
+
"versionNonce": 824705490,
|
| 639 |
+
"isDeleted": false,
|
| 640 |
+
"boundElements": [],
|
| 641 |
+
"updated": 1739437653572,
|
| 642 |
+
"link": null,
|
| 643 |
+
"locked": false,
|
| 644 |
+
"points": [
|
| 645 |
+
[
|
| 646 |
+
0,
|
| 647 |
+
0
|
| 648 |
+
],
|
| 649 |
+
[
|
| 650 |
+
228.60844359074213,
|
| 651 |
+
142.01226298014342
|
| 652 |
+
]
|
| 653 |
+
],
|
| 654 |
+
"lastCommittedPoint": null,
|
| 655 |
+
"startBinding": {
|
| 656 |
+
"elementId": "wEufgc20D-l-mdtgWLXnT",
|
| 657 |
+
"focus": 0.34251598117639953,
|
| 658 |
+
"gap": 1.4222259521484375,
|
| 659 |
+
"fixedPoint": null
|
| 660 |
+
},
|
| 661 |
+
"endBinding": {
|
| 662 |
+
"elementId": "GBp2vkKDN_rJ-0THbSebW",
|
| 663 |
+
"focus": 0.19671319915003915,
|
| 664 |
+
"gap": 1,
|
| 665 |
+
"fixedPoint": null
|
| 666 |
+
},
|
| 667 |
+
"startArrowhead": null,
|
| 668 |
+
"endArrowhead": "arrow",
|
| 669 |
+
"elbowed": false
|
| 670 |
+
},
|
| 671 |
+
{
|
| 672 |
+
"id": "eWx-OAj8tmJ7UJucCFqT0",
|
| 673 |
+
"type": "diamond",
|
| 674 |
+
"x": 1291.7728814019097,
|
| 675 |
+
"y": 608.4788462320965,
|
| 676 |
+
"width": 155.02221679687491,
|
| 677 |
+
"height": 170,
|
| 678 |
+
"angle": 0,
|
| 679 |
+
"strokeColor": "#1e1e1e",
|
| 680 |
+
"backgroundColor": "transparent",
|
| 681 |
+
"fillStyle": "solid",
|
| 682 |
+
"strokeWidth": 2,
|
| 683 |
+
"strokeStyle": "solid",
|
| 684 |
+
"roughness": 1,
|
| 685 |
+
"opacity": 100,
|
| 686 |
+
"groupIds": [],
|
| 687 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 688 |
+
"index": "aG",
|
| 689 |
+
"roundness": {
|
| 690 |
+
"type": 2
|
| 691 |
+
},
|
| 692 |
+
"seed": 572105550,
|
| 693 |
+
"version": 1015,
|
| 694 |
+
"versionNonce": 1502981710,
|
| 695 |
+
"isDeleted": false,
|
| 696 |
+
"boundElements": [
|
| 697 |
+
{
|
| 698 |
+
"id": "CX9int0DOUrljdTbAdw0y",
|
| 699 |
+
"type": "arrow"
|
| 700 |
+
},
|
| 701 |
+
{
|
| 702 |
+
"id": "C0aHbsHvOP5sqfizC2uBO",
|
| 703 |
+
"type": "arrow"
|
| 704 |
+
},
|
| 705 |
+
{
|
| 706 |
+
"id": "k7_aznX7yugCPo8_9_dDT",
|
| 707 |
+
"type": "arrow"
|
| 708 |
+
},
|
| 709 |
+
{
|
| 710 |
+
"type": "text",
|
| 711 |
+
"id": "SWuSEEV_yRxsN1pYh-zOB"
|
| 712 |
+
}
|
| 713 |
+
],
|
| 714 |
+
"updated": 1739443216784,
|
| 715 |
+
"link": null,
|
| 716 |
+
"locked": false
|
| 717 |
+
},
|
| 718 |
+
{
|
| 719 |
+
"id": "SWuSEEV_yRxsN1pYh-zOB",
|
| 720 |
+
"type": "text",
|
| 721 |
+
"x": 1339.3384713066948,
|
| 722 |
+
"y": 655.9788462320965,
|
| 723 |
+
"width": 60.37992858886719,
|
| 724 |
+
"height": 75,
|
| 725 |
+
"angle": 0,
|
| 726 |
+
"strokeColor": "#1e1e1e",
|
| 727 |
+
"backgroundColor": "transparent",
|
| 728 |
+
"fillStyle": "solid",
|
| 729 |
+
"strokeWidth": 2,
|
| 730 |
+
"strokeStyle": "solid",
|
| 731 |
+
"roughness": 1,
|
| 732 |
+
"opacity": 100,
|
| 733 |
+
"groupIds": [],
|
| 734 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 735 |
+
"index": "aGV",
|
| 736 |
+
"roundness": null,
|
| 737 |
+
"seed": 937179666,
|
| 738 |
+
"version": 552,
|
| 739 |
+
"versionNonce": 1990043026,
|
| 740 |
+
"isDeleted": false,
|
| 741 |
+
"boundElements": [],
|
| 742 |
+
"updated": 1739443216784,
|
| 743 |
+
"link": null,
|
| 744 |
+
"locked": false,
|
| 745 |
+
"text": "Transl\nate/C\nhat",
|
| 746 |
+
"fontSize": 20,
|
| 747 |
+
"fontFamily": 5,
|
| 748 |
+
"textAlign": "center",
|
| 749 |
+
"verticalAlign": "middle",
|
| 750 |
+
"containerId": "eWx-OAj8tmJ7UJucCFqT0",
|
| 751 |
+
"originalText": "Translate/Chat",
|
| 752 |
+
"autoResize": true,
|
| 753 |
+
"lineHeight": 1.25
|
| 754 |
+
},
|
| 755 |
+
{
|
| 756 |
+
"id": "CX9int0DOUrljdTbAdw0y",
|
| 757 |
+
"type": "arrow",
|
| 758 |
+
"x": 1385.3055152999598,
|
| 759 |
+
"y": 598.9742559507864,
|
| 760 |
+
"width": 1.7001984432224617,
|
| 761 |
+
"height": 22.418549735869078,
|
| 762 |
+
"angle": 0,
|
| 763 |
+
"strokeColor": "#1e1e1e",
|
| 764 |
+
"backgroundColor": "transparent",
|
| 765 |
+
"fillStyle": "solid",
|
| 766 |
+
"strokeWidth": 2,
|
| 767 |
+
"strokeStyle": "solid",
|
| 768 |
+
"roughness": 1,
|
| 769 |
+
"opacity": 100,
|
| 770 |
+
"groupIds": [],
|
| 771 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 772 |
+
"index": "aI",
|
| 773 |
+
"roundness": {
|
| 774 |
+
"type": 2
|
| 775 |
+
},
|
| 776 |
+
"seed": 842515470,
|
| 777 |
+
"version": 2741,
|
| 778 |
+
"versionNonce": 128365710,
|
| 779 |
+
"isDeleted": false,
|
| 780 |
+
"boundElements": [],
|
| 781 |
+
"updated": 1739443216784,
|
| 782 |
+
"link": null,
|
| 783 |
+
"locked": false,
|
| 784 |
+
"points": [
|
| 785 |
+
[
|
| 786 |
+
0,
|
| 787 |
+
0
|
| 788 |
+
],
|
| 789 |
+
[
|
| 790 |
+
-1.7001984432224617,
|
| 791 |
+
22.418549735869078
|
| 792 |
+
]
|
| 793 |
+
],
|
| 794 |
+
"lastCommittedPoint": null,
|
| 795 |
+
"startBinding": {
|
| 796 |
+
"elementId": "GBp2vkKDN_rJ-0THbSebW",
|
| 797 |
+
"focus": 0.07495335716176672,
|
| 798 |
+
"gap": 5.428728810486746,
|
| 799 |
+
"fixedPoint": null
|
| 800 |
+
},
|
| 801 |
+
"endBinding": {
|
| 802 |
+
"elementId": "eWx-OAj8tmJ7UJucCFqT0",
|
| 803 |
+
"focus": 0.33837106049009497,
|
| 804 |
+
"gap": 1.88062882486512,
|
| 805 |
+
"fixedPoint": null
|
| 806 |
+
},
|
| 807 |
+
"startArrowhead": null,
|
| 808 |
+
"endArrowhead": "arrow",
|
| 809 |
+
"elbowed": false
|
| 810 |
+
},
|
| 811 |
+
{
|
| 812 |
+
"id": "K7JKG04XiRPCsQ3h4_Dax",
|
| 813 |
+
"type": "rectangle",
|
| 814 |
+
"x": 1526.0840996636284,
|
| 815 |
+
"y": 740.3903223673504,
|
| 816 |
+
"width": 226.8443603515625,
|
| 817 |
+
"height": 66.13334655761719,
|
| 818 |
+
"angle": 0,
|
| 819 |
+
"strokeColor": "#1e1e1e",
|
| 820 |
+
"backgroundColor": "transparent",
|
| 821 |
+
"fillStyle": "solid",
|
| 822 |
+
"strokeWidth": 2,
|
| 823 |
+
"strokeStyle": "solid",
|
| 824 |
+
"roughness": 1,
|
| 825 |
+
"opacity": 100,
|
| 826 |
+
"groupIds": [],
|
| 827 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 828 |
+
"index": "aL",
|
| 829 |
+
"roundness": {
|
| 830 |
+
"type": 3
|
| 831 |
+
},
|
| 832 |
+
"seed": 1288555726,
|
| 833 |
+
"version": 901,
|
| 834 |
+
"versionNonce": 844818706,
|
| 835 |
+
"isDeleted": false,
|
| 836 |
+
"boundElements": [
|
| 837 |
+
{
|
| 838 |
+
"type": "text",
|
| 839 |
+
"id": "byE6AHVYQ1PeMM3oRZ3OS"
|
| 840 |
+
},
|
| 841 |
+
{
|
| 842 |
+
"id": "k7_aznX7yugCPo8_9_dDT",
|
| 843 |
+
"type": "arrow"
|
| 844 |
+
},
|
| 845 |
+
{
|
| 846 |
+
"id": "xx3Qb-dEk_gwNzn15L2Js",
|
| 847 |
+
"type": "arrow"
|
| 848 |
+
}
|
| 849 |
+
],
|
| 850 |
+
"updated": 1739443216784,
|
| 851 |
+
"link": null,
|
| 852 |
+
"locked": false
|
| 853 |
+
},
|
| 854 |
+
{
|
| 855 |
+
"id": "byE6AHVYQ1PeMM3oRZ3OS",
|
| 856 |
+
"type": "text",
|
| 857 |
+
"x": 1617.5063027275933,
|
| 858 |
+
"y": 760.956995646159,
|
| 859 |
+
"width": 43.99995422363281,
|
| 860 |
+
"height": 25,
|
| 861 |
+
"angle": 0,
|
| 862 |
+
"strokeColor": "#1e1e1e",
|
| 863 |
+
"backgroundColor": "transparent",
|
| 864 |
+
"fillStyle": "solid",
|
| 865 |
+
"strokeWidth": 2,
|
| 866 |
+
"strokeStyle": "solid",
|
| 867 |
+
"roughness": 1,
|
| 868 |
+
"opacity": 100,
|
| 869 |
+
"groupIds": [],
|
| 870 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 871 |
+
"index": "aM",
|
| 872 |
+
"roundness": null,
|
| 873 |
+
"seed": 1263993614,
|
| 874 |
+
"version": 835,
|
| 875 |
+
"versionNonce": 1676765454,
|
| 876 |
+
"isDeleted": false,
|
| 877 |
+
"boundElements": [],
|
| 878 |
+
"updated": 1739443216784,
|
| 879 |
+
"link": null,
|
| 880 |
+
"locked": false,
|
| 881 |
+
"text": "chat",
|
| 882 |
+
"fontSize": 20,
|
| 883 |
+
"fontFamily": 5,
|
| 884 |
+
"textAlign": "center",
|
| 885 |
+
"verticalAlign": "middle",
|
| 886 |
+
"containerId": "K7JKG04XiRPCsQ3h4_Dax",
|
| 887 |
+
"originalText": "chat",
|
| 888 |
+
"autoResize": true,
|
| 889 |
+
"lineHeight": 1.25
|
| 890 |
+
},
|
| 891 |
+
{
|
| 892 |
+
"id": "C0aHbsHvOP5sqfizC2uBO",
|
| 893 |
+
"type": "arrow",
|
| 894 |
+
"x": 1295.9995378240656,
|
| 895 |
+
"y": 684.9493632675895,
|
| 896 |
+
"width": 129.1846373604535,
|
| 897 |
+
"height": 88.25984029893266,
|
| 898 |
+
"angle": 0,
|
| 899 |
+
"strokeColor": "#1e1e1e",
|
| 900 |
+
"backgroundColor": "transparent",
|
| 901 |
+
"fillStyle": "solid",
|
| 902 |
+
"strokeWidth": 2,
|
| 903 |
+
"strokeStyle": "solid",
|
| 904 |
+
"roughness": 1,
|
| 905 |
+
"opacity": 100,
|
| 906 |
+
"groupIds": [],
|
| 907 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 908 |
+
"index": "aN",
|
| 909 |
+
"roundness": {
|
| 910 |
+
"type": 2
|
| 911 |
+
},
|
| 912 |
+
"seed": 960346898,
|
| 913 |
+
"version": 2796,
|
| 914 |
+
"versionNonce": 486536914,
|
| 915 |
+
"isDeleted": false,
|
| 916 |
+
"boundElements": [
|
| 917 |
+
{
|
| 918 |
+
"type": "text",
|
| 919 |
+
"id": "WEyrlpHlup6Ivp43FxuGR"
|
| 920 |
+
}
|
| 921 |
+
],
|
| 922 |
+
"updated": 1739443216784,
|
| 923 |
+
"link": null,
|
| 924 |
+
"locked": false,
|
| 925 |
+
"points": [
|
| 926 |
+
[
|
| 927 |
+
0,
|
| 928 |
+
0
|
| 929 |
+
],
|
| 930 |
+
[
|
| 931 |
+
-112.31540153934338,
|
| 932 |
+
-22.425961371430503
|
| 933 |
+
],
|
| 934 |
+
[
|
| 935 |
+
-129.1846373604535,
|
| 936 |
+
65.83387892750216
|
| 937 |
+
]
|
| 938 |
+
],
|
| 939 |
+
"lastCommittedPoint": null,
|
| 940 |
+
"startBinding": {
|
| 941 |
+
"elementId": "eWx-OAj8tmJ7UJucCFqT0",
|
| 942 |
+
"focus": -0.07180220905959793,
|
| 943 |
+
"gap": 2.6241125503887375,
|
| 944 |
+
"fixedPoint": null
|
| 945 |
+
},
|
| 946 |
+
"endBinding": {
|
| 947 |
+
"elementId": "gBtT2H2gfCOioSXaQjgn3",
|
| 948 |
+
"focus": -0.07669935409861259,
|
| 949 |
+
"gap": 2.1861172996451614,
|
| 950 |
+
"fixedPoint": null
|
| 951 |
+
},
|
| 952 |
+
"startArrowhead": null,
|
| 953 |
+
"endArrowhead": "arrow",
|
| 954 |
+
"elbowed": false
|
| 955 |
+
},
|
| 956 |
+
{
|
| 957 |
+
"id": "WEyrlpHlup6Ivp43FxuGR",
|
| 958 |
+
"type": "text",
|
| 959 |
+
"x": 1202.9674919976128,
|
| 960 |
+
"y": 778.7347056070965,
|
| 961 |
+
"width": 93.69989013671875,
|
| 962 |
+
"height": 25,
|
| 963 |
+
"angle": 0,
|
| 964 |
+
"strokeColor": "#1e1e1e",
|
| 965 |
+
"backgroundColor": "transparent",
|
| 966 |
+
"fillStyle": "solid",
|
| 967 |
+
"strokeWidth": 2,
|
| 968 |
+
"strokeStyle": "solid",
|
| 969 |
+
"roughness": 1,
|
| 970 |
+
"opacity": 100,
|
| 971 |
+
"groupIds": [],
|
| 972 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 973 |
+
"index": "aNV",
|
| 974 |
+
"roundness": null,
|
| 975 |
+
"seed": 1828813522,
|
| 976 |
+
"version": 460,
|
| 977 |
+
"versionNonce": 742201166,
|
| 978 |
+
"isDeleted": false,
|
| 979 |
+
"boundElements": [],
|
| 980 |
+
"updated": 1739443216784,
|
| 981 |
+
"link": null,
|
| 982 |
+
"locked": false,
|
| 983 |
+
"text": "Translate",
|
| 984 |
+
"fontSize": 20,
|
| 985 |
+
"fontFamily": 5,
|
| 986 |
+
"textAlign": "center",
|
| 987 |
+
"verticalAlign": "middle",
|
| 988 |
+
"containerId": "C0aHbsHvOP5sqfizC2uBO",
|
| 989 |
+
"originalText": "Translate",
|
| 990 |
+
"autoResize": true,
|
| 991 |
+
"lineHeight": 1.25
|
| 992 |
+
},
|
| 993 |
+
{
|
| 994 |
+
"id": "k7_aznX7yugCPo8_9_dDT",
|
| 995 |
+
"type": "arrow",
|
| 996 |
+
"x": 1438.6781327565973,
|
| 997 |
+
"y": 681.9720610503717,
|
| 998 |
+
"width": 209.69976955783181,
|
| 999 |
+
"height": 77.51116943359375,
|
| 1000 |
+
"angle": 0,
|
| 1001 |
+
"strokeColor": "#1e1e1e",
|
| 1002 |
+
"backgroundColor": "transparent",
|
| 1003 |
+
"fillStyle": "solid",
|
| 1004 |
+
"strokeWidth": 2,
|
| 1005 |
+
"strokeStyle": "solid",
|
| 1006 |
+
"roughness": 1,
|
| 1007 |
+
"opacity": 100,
|
| 1008 |
+
"groupIds": [],
|
| 1009 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1010 |
+
"index": "aO",
|
| 1011 |
+
"roundness": {
|
| 1012 |
+
"type": 2
|
| 1013 |
+
},
|
| 1014 |
+
"seed": 1186407950,
|
| 1015 |
+
"version": 2845,
|
| 1016 |
+
"versionNonce": 322784402,
|
| 1017 |
+
"isDeleted": false,
|
| 1018 |
+
"boundElements": [
|
| 1019 |
+
{
|
| 1020 |
+
"type": "text",
|
| 1021 |
+
"id": "mBuVXhrQjpx3Rew6QXVpk"
|
| 1022 |
+
}
|
| 1023 |
+
],
|
| 1024 |
+
"updated": 1739443216784,
|
| 1025 |
+
"link": null,
|
| 1026 |
+
"locked": false,
|
| 1027 |
+
"points": [
|
| 1028 |
+
[
|
| 1029 |
+
0,
|
| 1030 |
+
0
|
| 1031 |
+
],
|
| 1032 |
+
[
|
| 1033 |
+
178.38513213450074,
|
| 1034 |
+
-27.237677130466977
|
| 1035 |
+
],
|
| 1036 |
+
[
|
| 1037 |
+
209.69976955783181,
|
| 1038 |
+
50.27349230312677
|
| 1039 |
+
]
|
| 1040 |
+
],
|
| 1041 |
+
"lastCommittedPoint": null,
|
| 1042 |
+
"startBinding": {
|
| 1043 |
+
"elementId": "eWx-OAj8tmJ7UJucCFqT0",
|
| 1044 |
+
"focus": -0.010717335711518705,
|
| 1045 |
+
"gap": 1.7556588524229966,
|
| 1046 |
+
"fixedPoint": null
|
| 1047 |
+
},
|
| 1048 |
+
"endBinding": {
|
| 1049 |
+
"elementId": "K7JKG04XiRPCsQ3h4_Dax",
|
| 1050 |
+
"focus": 0.2013004905125822,
|
| 1051 |
+
"gap": 8.144769013851942,
|
| 1052 |
+
"fixedPoint": null
|
| 1053 |
+
},
|
| 1054 |
+
"startArrowhead": null,
|
| 1055 |
+
"endArrowhead": "arrow",
|
| 1056 |
+
"elbowed": false
|
| 1057 |
+
},
|
| 1058 |
+
{
|
| 1059 |
+
"id": "mBuVXhrQjpx3Rew6QXVpk",
|
| 1060 |
+
"type": "text",
|
| 1061 |
+
"x": 1659.9465885605316,
|
| 1062 |
+
"y": 770.9456876308421,
|
| 1063 |
+
"width": 46.49995422363281,
|
| 1064 |
+
"height": 25,
|
| 1065 |
+
"angle": 0,
|
| 1066 |
+
"strokeColor": "#1e1e1e",
|
| 1067 |
+
"backgroundColor": "transparent",
|
| 1068 |
+
"fillStyle": "solid",
|
| 1069 |
+
"strokeWidth": 2,
|
| 1070 |
+
"strokeStyle": "solid",
|
| 1071 |
+
"roughness": 1,
|
| 1072 |
+
"opacity": 100,
|
| 1073 |
+
"groupIds": [],
|
| 1074 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1075 |
+
"index": "aP",
|
| 1076 |
+
"roundness": null,
|
| 1077 |
+
"seed": 943163666,
|
| 1078 |
+
"version": 457,
|
| 1079 |
+
"versionNonce": 1132002702,
|
| 1080 |
+
"isDeleted": false,
|
| 1081 |
+
"boundElements": [],
|
| 1082 |
+
"updated": 1739443216784,
|
| 1083 |
+
"link": null,
|
| 1084 |
+
"locked": false,
|
| 1085 |
+
"text": "Chat",
|
| 1086 |
+
"fontSize": 20,
|
| 1087 |
+
"fontFamily": 5,
|
| 1088 |
+
"textAlign": "center",
|
| 1089 |
+
"verticalAlign": "middle",
|
| 1090 |
+
"containerId": "k7_aznX7yugCPo8_9_dDT",
|
| 1091 |
+
"originalText": "Chat",
|
| 1092 |
+
"autoResize": true,
|
| 1093 |
+
"lineHeight": 1.25
|
| 1094 |
+
},
|
| 1095 |
+
{
|
| 1096 |
+
"id": "gBtT2H2gfCOioSXaQjgn3",
|
| 1097 |
+
"type": "rectangle",
|
| 1098 |
+
"x": 1054.1742392067642,
|
| 1099 |
+
"y": 752.9693594947369,
|
| 1100 |
+
"width": 226.8443603515625,
|
| 1101 |
+
"height": 85,
|
| 1102 |
+
"angle": 0,
|
| 1103 |
+
"strokeColor": "#1e1e1e",
|
| 1104 |
+
"backgroundColor": "transparent",
|
| 1105 |
+
"fillStyle": "solid",
|
| 1106 |
+
"strokeWidth": 2,
|
| 1107 |
+
"strokeStyle": "solid",
|
| 1108 |
+
"roughness": 1,
|
| 1109 |
+
"opacity": 100,
|
| 1110 |
+
"groupIds": [],
|
| 1111 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1112 |
+
"index": "aQ",
|
| 1113 |
+
"roundness": {
|
| 1114 |
+
"type": 3
|
| 1115 |
+
},
|
| 1116 |
+
"seed": 1193112334,
|
| 1117 |
+
"version": 1034,
|
| 1118 |
+
"versionNonce": 181004882,
|
| 1119 |
+
"isDeleted": false,
|
| 1120 |
+
"boundElements": [
|
| 1121 |
+
{
|
| 1122 |
+
"type": "text",
|
| 1123 |
+
"id": "J4USxhJBuFgd1ddkcz7YR"
|
| 1124 |
+
},
|
| 1125 |
+
{
|
| 1126 |
+
"id": "dRuRJC031Lx5Irftqyzvc",
|
| 1127 |
+
"type": "arrow"
|
| 1128 |
+
},
|
| 1129 |
+
{
|
| 1130 |
+
"id": "Y2ub__u8TgOIwogbcOSyJ",
|
| 1131 |
+
"type": "arrow"
|
| 1132 |
+
},
|
| 1133 |
+
{
|
| 1134 |
+
"id": "C0aHbsHvOP5sqfizC2uBO",
|
| 1135 |
+
"type": "arrow"
|
| 1136 |
+
}
|
| 1137 |
+
],
|
| 1138 |
+
"updated": 1739443216784,
|
| 1139 |
+
"link": null,
|
| 1140 |
+
"locked": false
|
| 1141 |
+
},
|
| 1142 |
+
{
|
| 1143 |
+
"id": "J4USxhJBuFgd1ddkcz7YR",
|
| 1144 |
+
"type": "text",
|
| 1145 |
+
"x": 1070.7065115456314,
|
| 1146 |
+
"y": 757.9693594947369,
|
| 1147 |
+
"width": 193.77981567382812,
|
| 1148 |
+
"height": 75,
|
| 1149 |
+
"angle": 0,
|
| 1150 |
+
"strokeColor": "#1e1e1e",
|
| 1151 |
+
"backgroundColor": "transparent",
|
| 1152 |
+
"fillStyle": "solid",
|
| 1153 |
+
"strokeWidth": 2,
|
| 1154 |
+
"strokeStyle": "solid",
|
| 1155 |
+
"roughness": 1,
|
| 1156 |
+
"opacity": 100,
|
| 1157 |
+
"groupIds": [],
|
| 1158 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1159 |
+
"index": "aR",
|
| 1160 |
+
"roundness": null,
|
| 1161 |
+
"seed": 559407438,
|
| 1162 |
+
"version": 1040,
|
| 1163 |
+
"versionNonce": 1323178958,
|
| 1164 |
+
"isDeleted": false,
|
| 1165 |
+
"boundElements": [],
|
| 1166 |
+
"updated": 1739443216784,
|
| 1167 |
+
"link": null,
|
| 1168 |
+
"locked": false,
|
| 1169 |
+
"text": "Translate\ncan result in several\noptions",
|
| 1170 |
+
"fontSize": 20,
|
| 1171 |
+
"fontFamily": 5,
|
| 1172 |
+
"textAlign": "center",
|
| 1173 |
+
"verticalAlign": "middle",
|
| 1174 |
+
"containerId": "gBtT2H2gfCOioSXaQjgn3",
|
| 1175 |
+
"originalText": "Translate\ncan result in several options",
|
| 1176 |
+
"autoResize": true,
|
| 1177 |
+
"lineHeight": 1.25
|
| 1178 |
+
},
|
| 1179 |
+
{
|
| 1180 |
+
"id": "WsxPr8Q8Ki3MX02D1zoTP",
|
| 1181 |
+
"type": "rectangle",
|
| 1182 |
+
"x": 1038.1419004988272,
|
| 1183 |
+
"y": 908.0249972601982,
|
| 1184 |
+
"width": 226.8443603515625,
|
| 1185 |
+
"height": 135,
|
| 1186 |
+
"angle": 0,
|
| 1187 |
+
"strokeColor": "#1e1e1e",
|
| 1188 |
+
"backgroundColor": "transparent",
|
| 1189 |
+
"fillStyle": "solid",
|
| 1190 |
+
"strokeWidth": 2,
|
| 1191 |
+
"strokeStyle": "solid",
|
| 1192 |
+
"roughness": 1,
|
| 1193 |
+
"opacity": 100,
|
| 1194 |
+
"groupIds": [],
|
| 1195 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1196 |
+
"index": "aT",
|
| 1197 |
+
"roundness": {
|
| 1198 |
+
"type": 3
|
| 1199 |
+
},
|
| 1200 |
+
"seed": 537673166,
|
| 1201 |
+
"version": 958,
|
| 1202 |
+
"versionNonce": 789765906,
|
| 1203 |
+
"isDeleted": false,
|
| 1204 |
+
"boundElements": [
|
| 1205 |
+
{
|
| 1206 |
+
"type": "text",
|
| 1207 |
+
"id": "f2o9j0XWQqkXo9FMAv5BZ"
|
| 1208 |
+
},
|
| 1209 |
+
{
|
| 1210 |
+
"id": "yNsW2h8Pss9Gb_S8sI9g1",
|
| 1211 |
+
"type": "arrow"
|
| 1212 |
+
},
|
| 1213 |
+
{
|
| 1214 |
+
"id": "dRuRJC031Lx5Irftqyzvc",
|
| 1215 |
+
"type": "arrow"
|
| 1216 |
+
},
|
| 1217 |
+
{
|
| 1218 |
+
"id": "qnVIwuImMX7lY7cpTgiEM",
|
| 1219 |
+
"type": "arrow"
|
| 1220 |
+
}
|
| 1221 |
+
],
|
| 1222 |
+
"updated": 1739443231002,
|
| 1223 |
+
"link": null,
|
| 1224 |
+
"locked": false
|
| 1225 |
+
},
|
| 1226 |
+
{
|
| 1227 |
+
"id": "f2o9j0XWQqkXo9FMAv5BZ",
|
| 1228 |
+
"type": "text",
|
| 1229 |
+
"x": 1056.1141752791007,
|
| 1230 |
+
"y": 913.0249972601982,
|
| 1231 |
+
"width": 190.89981079101562,
|
| 1232 |
+
"height": 125,
|
| 1233 |
+
"angle": 0,
|
| 1234 |
+
"strokeColor": "#1e1e1e",
|
| 1235 |
+
"backgroundColor": "transparent",
|
| 1236 |
+
"fillStyle": "solid",
|
| 1237 |
+
"strokeWidth": 2,
|
| 1238 |
+
"strokeStyle": "solid",
|
| 1239 |
+
"roughness": 1,
|
| 1240 |
+
"opacity": 100,
|
| 1241 |
+
"groupIds": [],
|
| 1242 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1243 |
+
"index": "aU",
|
| 1244 |
+
"roundness": null,
|
| 1245 |
+
"seed": 1872712718,
|
| 1246 |
+
"version": 1044,
|
| 1247 |
+
"versionNonce": 642579922,
|
| 1248 |
+
"isDeleted": false,
|
| 1249 |
+
"boundElements": [],
|
| 1250 |
+
"updated": 1739443216784,
|
| 1251 |
+
"link": null,
|
| 1252 |
+
"locked": false,
|
| 1253 |
+
"text": "Text to speech for\nall translations:\nCreates temporary\nfiles and stores in\ngraph's state",
|
| 1254 |
+
"fontSize": 20,
|
| 1255 |
+
"fontFamily": 5,
|
| 1256 |
+
"textAlign": "center",
|
| 1257 |
+
"verticalAlign": "middle",
|
| 1258 |
+
"containerId": "WsxPr8Q8Ki3MX02D1zoTP",
|
| 1259 |
+
"originalText": "Text to speech for all translations:\nCreates temporary files and stores in graph's state",
|
| 1260 |
+
"autoResize": true,
|
| 1261 |
+
"lineHeight": 1.25
|
| 1262 |
+
},
|
| 1263 |
+
{
|
| 1264 |
+
"id": "cplZOVqKChIIlK1clqQyw",
|
| 1265 |
+
"type": "rectangle",
|
| 1266 |
+
"x": 1017.8200048475978,
|
| 1267 |
+
"y": 1169.0067328370485,
|
| 1268 |
+
"width": 297.95556640625,
|
| 1269 |
+
"height": 93.86651611328125,
|
| 1270 |
+
"angle": 0,
|
| 1271 |
+
"strokeColor": "#1e1e1e",
|
| 1272 |
+
"backgroundColor": "transparent",
|
| 1273 |
+
"fillStyle": "solid",
|
| 1274 |
+
"strokeWidth": 2,
|
| 1275 |
+
"strokeStyle": "solid",
|
| 1276 |
+
"roughness": 1,
|
| 1277 |
+
"opacity": 100,
|
| 1278 |
+
"groupIds": [],
|
| 1279 |
+
"frameId": null,
|
| 1280 |
+
"index": "aW",
|
| 1281 |
+
"roundness": {
|
| 1282 |
+
"type": 3
|
| 1283 |
+
},
|
| 1284 |
+
"seed": 1093859470,
|
| 1285 |
+
"version": 598,
|
| 1286 |
+
"versionNonce": 855286610,
|
| 1287 |
+
"isDeleted": false,
|
| 1288 |
+
"boundElements": [
|
| 1289 |
+
{
|
| 1290 |
+
"type": "text",
|
| 1291 |
+
"id": "mPg0xKp-HoFN8npOB1WPG"
|
| 1292 |
+
},
|
| 1293 |
+
{
|
| 1294 |
+
"id": "TTwCIuNoNqJyJMCv6W3aQ",
|
| 1295 |
+
"type": "arrow"
|
| 1296 |
+
},
|
| 1297 |
+
{
|
| 1298 |
+
"id": "qnVIwuImMX7lY7cpTgiEM",
|
| 1299 |
+
"type": "arrow"
|
| 1300 |
+
}
|
| 1301 |
+
],
|
| 1302 |
+
"updated": 1739443240075,
|
| 1303 |
+
"link": null,
|
| 1304 |
+
"locked": false
|
| 1305 |
+
},
|
| 1306 |
+
{
|
| 1307 |
+
"id": "mPg0xKp-HoFN8npOB1WPG",
|
| 1308 |
+
"type": "text",
|
| 1309 |
+
"x": 1028.8479131727931,
|
| 1310 |
+
"y": 1190.9399908936891,
|
| 1311 |
+
"width": 275.8997497558594,
|
| 1312 |
+
"height": 50,
|
| 1313 |
+
"angle": 0,
|
| 1314 |
+
"strokeColor": "#1e1e1e",
|
| 1315 |
+
"backgroundColor": "transparent",
|
| 1316 |
+
"fillStyle": "solid",
|
| 1317 |
+
"strokeWidth": 2,
|
| 1318 |
+
"strokeStyle": "solid",
|
| 1319 |
+
"roughness": 1,
|
| 1320 |
+
"opacity": 100,
|
| 1321 |
+
"groupIds": [],
|
| 1322 |
+
"frameId": null,
|
| 1323 |
+
"index": "aWV",
|
| 1324 |
+
"roundness": null,
|
| 1325 |
+
"seed": 2044616974,
|
| 1326 |
+
"version": 560,
|
| 1327 |
+
"versionNonce": 1580099858,
|
| 1328 |
+
"isDeleted": false,
|
| 1329 |
+
"boundElements": [],
|
| 1330 |
+
"updated": 1739443240075,
|
| 1331 |
+
"link": null,
|
| 1332 |
+
"locked": false,
|
| 1333 |
+
"text": "Displays translations and\nloads audio files in the chat",
|
| 1334 |
+
"fontSize": 20,
|
| 1335 |
+
"fontFamily": 5,
|
| 1336 |
+
"textAlign": "center",
|
| 1337 |
+
"verticalAlign": "middle",
|
| 1338 |
+
"containerId": "cplZOVqKChIIlK1clqQyw",
|
| 1339 |
+
"originalText": "Displays translations and loads audio files in the chat",
|
| 1340 |
+
"autoResize": true,
|
| 1341 |
+
"lineHeight": 1.25
|
| 1342 |
+
},
|
| 1343 |
+
{
|
| 1344 |
+
"id": "JgxMPeI9m-WxMJBe8p2iu",
|
| 1345 |
+
"type": "rectangle",
|
| 1346 |
+
"x": 1273.1765544842583,
|
| 1347 |
+
"y": 1433.334474047106,
|
| 1348 |
+
"width": 283.0220947265625,
|
| 1349 |
+
"height": 96.7110595703125,
|
| 1350 |
+
"angle": 0,
|
| 1351 |
+
"strokeColor": "#1e1e1e",
|
| 1352 |
+
"backgroundColor": "transparent",
|
| 1353 |
+
"fillStyle": "solid",
|
| 1354 |
+
"strokeWidth": 2,
|
| 1355 |
+
"strokeStyle": "solid",
|
| 1356 |
+
"roughness": 1,
|
| 1357 |
+
"opacity": 100,
|
| 1358 |
+
"groupIds": [],
|
| 1359 |
+
"frameId": null,
|
| 1360 |
+
"index": "aZ",
|
| 1361 |
+
"roundness": {
|
| 1362 |
+
"type": 3
|
| 1363 |
+
},
|
| 1364 |
+
"seed": 383392782,
|
| 1365 |
+
"version": 308,
|
| 1366 |
+
"versionNonce": 663471310,
|
| 1367 |
+
"isDeleted": false,
|
| 1368 |
+
"boundElements": [
|
| 1369 |
+
{
|
| 1370 |
+
"id": "TTwCIuNoNqJyJMCv6W3aQ",
|
| 1371 |
+
"type": "arrow"
|
| 1372 |
+
},
|
| 1373 |
+
{
|
| 1374 |
+
"type": "text",
|
| 1375 |
+
"id": "mpuGc6AQTGvoxqfktEp3b"
|
| 1376 |
+
},
|
| 1377 |
+
{
|
| 1378 |
+
"id": "FyQYDCMA748f6_svuDGi-",
|
| 1379 |
+
"type": "arrow"
|
| 1380 |
+
}
|
| 1381 |
+
],
|
| 1382 |
+
"updated": 1739443245082,
|
| 1383 |
+
"link": null,
|
| 1384 |
+
"locked": false
|
| 1385 |
+
},
|
| 1386 |
+
{
|
| 1387 |
+
"id": "mpuGc6AQTGvoxqfktEp3b",
|
| 1388 |
+
"type": "text",
|
| 1389 |
+
"x": 1396.3076198529106,
|
| 1390 |
+
"y": 1469.1900038322622,
|
| 1391 |
+
"width": 36.75996398925781,
|
| 1392 |
+
"height": 25,
|
| 1393 |
+
"angle": 0,
|
| 1394 |
+
"strokeColor": "#1e1e1e",
|
| 1395 |
+
"backgroundColor": "transparent",
|
| 1396 |
+
"fillStyle": "solid",
|
| 1397 |
+
"strokeWidth": 2,
|
| 1398 |
+
"strokeStyle": "solid",
|
| 1399 |
+
"roughness": 1,
|
| 1400 |
+
"opacity": 100,
|
| 1401 |
+
"groupIds": [],
|
| 1402 |
+
"frameId": null,
|
| 1403 |
+
"index": "aZV",
|
| 1404 |
+
"roundness": null,
|
| 1405 |
+
"seed": 1699299790,
|
| 1406 |
+
"version": 209,
|
| 1407 |
+
"versionNonce": 194378510,
|
| 1408 |
+
"isDeleted": false,
|
| 1409 |
+
"boundElements": [],
|
| 1410 |
+
"updated": 1739443245082,
|
| 1411 |
+
"link": null,
|
| 1412 |
+
"locked": false,
|
| 1413 |
+
"text": "End",
|
| 1414 |
+
"fontSize": 20,
|
| 1415 |
+
"fontFamily": 5,
|
| 1416 |
+
"textAlign": "center",
|
| 1417 |
+
"verticalAlign": "middle",
|
| 1418 |
+
"containerId": "JgxMPeI9m-WxMJBe8p2iu",
|
| 1419 |
+
"originalText": "End",
|
| 1420 |
+
"autoResize": true,
|
| 1421 |
+
"lineHeight": 1.25
|
| 1422 |
+
},
|
| 1423 |
+
{
|
| 1424 |
+
"id": "TTwCIuNoNqJyJMCv6W3aQ",
|
| 1425 |
+
"type": "arrow",
|
| 1426 |
+
"x": 1078.40123397884,
|
| 1427 |
+
"y": 1267.1400946534548,
|
| 1428 |
+
"width": 372.1819840042483,
|
| 1429 |
+
"height": 165.19437939365116,
|
| 1430 |
+
"angle": 0,
|
| 1431 |
+
"strokeColor": "#1e1e1e",
|
| 1432 |
+
"backgroundColor": "transparent",
|
| 1433 |
+
"fillStyle": "solid",
|
| 1434 |
+
"strokeWidth": 2,
|
| 1435 |
+
"strokeStyle": "solid",
|
| 1436 |
+
"roughness": 1,
|
| 1437 |
+
"opacity": 100,
|
| 1438 |
+
"groupIds": [],
|
| 1439 |
+
"frameId": null,
|
| 1440 |
+
"index": "ab",
|
| 1441 |
+
"roundness": {
|
| 1442 |
+
"type": 2
|
| 1443 |
+
},
|
| 1444 |
+
"seed": 1340985870,
|
| 1445 |
+
"version": 984,
|
| 1446 |
+
"versionNonce": 1434413390,
|
| 1447 |
+
"isDeleted": false,
|
| 1448 |
+
"boundElements": [],
|
| 1449 |
+
"updated": 1739443245082,
|
| 1450 |
+
"link": null,
|
| 1451 |
+
"locked": false,
|
| 1452 |
+
"points": [
|
| 1453 |
+
[
|
| 1454 |
+
0,
|
| 1455 |
+
0
|
| 1456 |
+
],
|
| 1457 |
+
[
|
| 1458 |
+
372.1819840042483,
|
| 1459 |
+
165.19437939365116
|
| 1460 |
+
]
|
| 1461 |
+
],
|
| 1462 |
+
"lastCommittedPoint": null,
|
| 1463 |
+
"startBinding": {
|
| 1464 |
+
"elementId": "cplZOVqKChIIlK1clqQyw",
|
| 1465 |
+
"focus": 0.6864140851390049,
|
| 1466 |
+
"gap": 4.266845703125,
|
| 1467 |
+
"fixedPoint": null
|
| 1468 |
+
},
|
| 1469 |
+
"endBinding": {
|
| 1470 |
+
"elementId": "JgxMPeI9m-WxMJBe8p2iu",
|
| 1471 |
+
"focus": 0.5873026439947175,
|
| 1472 |
+
"gap": 1,
|
| 1473 |
+
"fixedPoint": null
|
| 1474 |
+
},
|
| 1475 |
+
"startArrowhead": null,
|
| 1476 |
+
"endArrowhead": "arrow",
|
| 1477 |
+
"elbowed": false
|
| 1478 |
+
},
|
| 1479 |
+
{
|
| 1480 |
+
"id": "dRuRJC031Lx5Irftqyzvc",
|
| 1481 |
+
"type": "arrow",
|
| 1482 |
+
"x": 1161.2985005148364,
|
| 1483 |
+
"y": 845.7023688020306,
|
| 1484 |
+
"width": 2.3760668060756416,
|
| 1485 |
+
"height": 56.926923427661904,
|
| 1486 |
+
"angle": 0,
|
| 1487 |
+
"strokeColor": "#1e1e1e",
|
| 1488 |
+
"backgroundColor": "transparent",
|
| 1489 |
+
"fillStyle": "solid",
|
| 1490 |
+
"strokeWidth": 2,
|
| 1491 |
+
"strokeStyle": "solid",
|
| 1492 |
+
"roughness": 1,
|
| 1493 |
+
"opacity": 100,
|
| 1494 |
+
"groupIds": [],
|
| 1495 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1496 |
+
"index": "ag",
|
| 1497 |
+
"roundness": {
|
| 1498 |
+
"type": 2
|
| 1499 |
+
},
|
| 1500 |
+
"seed": 1760723790,
|
| 1501 |
+
"version": 1751,
|
| 1502 |
+
"versionNonce": 1807823186,
|
| 1503 |
+
"isDeleted": false,
|
| 1504 |
+
"boundElements": [],
|
| 1505 |
+
"updated": 1739443216784,
|
| 1506 |
+
"link": null,
|
| 1507 |
+
"locked": false,
|
| 1508 |
+
"points": [
|
| 1509 |
+
[
|
| 1510 |
+
0,
|
| 1511 |
+
0
|
| 1512 |
+
],
|
| 1513 |
+
[
|
| 1514 |
+
-2.3760668060756416,
|
| 1515 |
+
56.926923427661904
|
| 1516 |
+
]
|
| 1517 |
+
],
|
| 1518 |
+
"lastCommittedPoint": null,
|
| 1519 |
+
"startBinding": {
|
| 1520 |
+
"elementId": "gBtT2H2gfCOioSXaQjgn3",
|
| 1521 |
+
"focus": 0.05526482509785807,
|
| 1522 |
+
"gap": 7.733009307293742,
|
| 1523 |
+
"fixedPoint": null
|
| 1524 |
+
},
|
| 1525 |
+
"endBinding": {
|
| 1526 |
+
"elementId": "WsxPr8Q8Ki3MX02D1zoTP",
|
| 1527 |
+
"focus": 0.037128212780096655,
|
| 1528 |
+
"gap": 5.395705030505724,
|
| 1529 |
+
"fixedPoint": null
|
| 1530 |
+
},
|
| 1531 |
+
"startArrowhead": null,
|
| 1532 |
+
"endArrowhead": "arrow",
|
| 1533 |
+
"elbowed": false
|
| 1534 |
+
},
|
| 1535 |
+
{
|
| 1536 |
+
"id": "w8cjE_ZmAWalkyMBdUsGJ",
|
| 1537 |
+
"type": "ellipse",
|
| 1538 |
+
"x": 604.7699438623885,
|
| 1539 |
+
"y": 709.5915595069439,
|
| 1540 |
+
"width": 214.3006328052213,
|
| 1541 |
+
"height": 137.52029631030177,
|
| 1542 |
+
"angle": 0,
|
| 1543 |
+
"strokeColor": "#1e1e1e",
|
| 1544 |
+
"backgroundColor": "transparent",
|
| 1545 |
+
"fillStyle": "solid",
|
| 1546 |
+
"strokeWidth": 2,
|
| 1547 |
+
"strokeStyle": "solid",
|
| 1548 |
+
"roughness": 1,
|
| 1549 |
+
"opacity": 100,
|
| 1550 |
+
"groupIds": [],
|
| 1551 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1552 |
+
"index": "ak",
|
| 1553 |
+
"roundness": {
|
| 1554 |
+
"type": 2
|
| 1555 |
+
},
|
| 1556 |
+
"seed": 499944590,
|
| 1557 |
+
"version": 741,
|
| 1558 |
+
"versionNonce": 694060242,
|
| 1559 |
+
"isDeleted": false,
|
| 1560 |
+
"boundElements": [
|
| 1561 |
+
{
|
| 1562 |
+
"type": "text",
|
| 1563 |
+
"id": "GIizGzKGnOF0-oXa9jiZb"
|
| 1564 |
+
},
|
| 1565 |
+
{
|
| 1566 |
+
"id": "Y2ub__u8TgOIwogbcOSyJ",
|
| 1567 |
+
"type": "arrow"
|
| 1568 |
+
}
|
| 1569 |
+
],
|
| 1570 |
+
"updated": 1739443216784,
|
| 1571 |
+
"link": null,
|
| 1572 |
+
"locked": false
|
| 1573 |
+
},
|
| 1574 |
+
{
|
| 1575 |
+
"id": "GIizGzKGnOF0-oXa9jiZb",
|
| 1576 |
+
"type": "text",
|
| 1577 |
+
"x": 645.3836093225189,
|
| 1578 |
+
"y": 753.2309406261959,
|
| 1579 |
+
"width": 133.5398712158203,
|
| 1580 |
+
"height": 50,
|
| 1581 |
+
"angle": 0,
|
| 1582 |
+
"strokeColor": "#1e1e1e",
|
| 1583 |
+
"backgroundColor": "transparent",
|
| 1584 |
+
"fillStyle": "solid",
|
| 1585 |
+
"strokeWidth": 2,
|
| 1586 |
+
"strokeStyle": "solid",
|
| 1587 |
+
"roughness": 1,
|
| 1588 |
+
"opacity": 100,
|
| 1589 |
+
"groupIds": [],
|
| 1590 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1591 |
+
"index": "al",
|
| 1592 |
+
"roundness": null,
|
| 1593 |
+
"seed": 1441254094,
|
| 1594 |
+
"version": 676,
|
| 1595 |
+
"versionNonce": 89549134,
|
| 1596 |
+
"isDeleted": false,
|
| 1597 |
+
"boundElements": [],
|
| 1598 |
+
"updated": 1739443216784,
|
| 1599 |
+
"link": null,
|
| 1600 |
+
"locked": false,
|
| 1601 |
+
"text": "Dependencies:\n1. LLM",
|
| 1602 |
+
"fontSize": 20,
|
| 1603 |
+
"fontFamily": 5,
|
| 1604 |
+
"textAlign": "center",
|
| 1605 |
+
"verticalAlign": "middle",
|
| 1606 |
+
"containerId": "w8cjE_ZmAWalkyMBdUsGJ",
|
| 1607 |
+
"originalText": "Dependencies:\n1. LLM",
|
| 1608 |
+
"autoResize": true,
|
| 1609 |
+
"lineHeight": 1.25
|
| 1610 |
+
},
|
| 1611 |
+
{
|
| 1612 |
+
"id": "I7sHCIcRd544zlJb-k7MC",
|
| 1613 |
+
"type": "ellipse",
|
| 1614 |
+
"x": 622.5969744807153,
|
| 1615 |
+
"y": 906.2256932559203,
|
| 1616 |
+
"width": 214.3006328052213,
|
| 1617 |
+
"height": 155.50783146331636,
|
| 1618 |
+
"angle": 0,
|
| 1619 |
+
"strokeColor": "#1e1e1e",
|
| 1620 |
+
"backgroundColor": "transparent",
|
| 1621 |
+
"fillStyle": "solid",
|
| 1622 |
+
"strokeWidth": 2,
|
| 1623 |
+
"strokeStyle": "solid",
|
| 1624 |
+
"roughness": 1,
|
| 1625 |
+
"opacity": 100,
|
| 1626 |
+
"groupIds": [],
|
| 1627 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1628 |
+
"index": "ao",
|
| 1629 |
+
"roundness": {
|
| 1630 |
+
"type": 2
|
| 1631 |
+
},
|
| 1632 |
+
"seed": 189647374,
|
| 1633 |
+
"version": 808,
|
| 1634 |
+
"versionNonce": 2136799314,
|
| 1635 |
+
"isDeleted": false,
|
| 1636 |
+
"boundElements": [
|
| 1637 |
+
{
|
| 1638 |
+
"type": "text",
|
| 1639 |
+
"id": "RdFDycnbkhVJiSB5iP26q"
|
| 1640 |
+
},
|
| 1641 |
+
{
|
| 1642 |
+
"id": "yNsW2h8Pss9Gb_S8sI9g1",
|
| 1643 |
+
"type": "arrow"
|
| 1644 |
+
}
|
| 1645 |
+
],
|
| 1646 |
+
"updated": 1739443216784,
|
| 1647 |
+
"link": null,
|
| 1648 |
+
"locked": false
|
| 1649 |
+
},
|
| 1650 |
+
{
|
| 1651 |
+
"id": "RdFDycnbkhVJiSB5iP26q",
|
| 1652 |
+
"type": "text",
|
| 1653 |
+
"x": 663.2106399408457,
|
| 1654 |
+
"y": 958.9992879099159,
|
| 1655 |
+
"width": 133.5398712158203,
|
| 1656 |
+
"height": 50,
|
| 1657 |
+
"angle": 0,
|
| 1658 |
+
"strokeColor": "#1e1e1e",
|
| 1659 |
+
"backgroundColor": "transparent",
|
| 1660 |
+
"fillStyle": "solid",
|
| 1661 |
+
"strokeWidth": 2,
|
| 1662 |
+
"strokeStyle": "solid",
|
| 1663 |
+
"roughness": 1,
|
| 1664 |
+
"opacity": 100,
|
| 1665 |
+
"groupIds": [],
|
| 1666 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1667 |
+
"index": "ap",
|
| 1668 |
+
"roundness": null,
|
| 1669 |
+
"seed": 1264932942,
|
| 1670 |
+
"version": 754,
|
| 1671 |
+
"versionNonce": 1800072654,
|
| 1672 |
+
"isDeleted": false,
|
| 1673 |
+
"boundElements": [],
|
| 1674 |
+
"updated": 1739443216784,
|
| 1675 |
+
"link": null,
|
| 1676 |
+
"locked": false,
|
| 1677 |
+
"text": "Dependencies:\n1. TTS Model",
|
| 1678 |
+
"fontSize": 20,
|
| 1679 |
+
"fontFamily": 5,
|
| 1680 |
+
"textAlign": "center",
|
| 1681 |
+
"verticalAlign": "middle",
|
| 1682 |
+
"containerId": "I7sHCIcRd544zlJb-k7MC",
|
| 1683 |
+
"originalText": "Dependencies:\n1. TTS Model",
|
| 1684 |
+
"autoResize": true,
|
| 1685 |
+
"lineHeight": 1.25
|
| 1686 |
+
},
|
| 1687 |
+
{
|
| 1688 |
+
"id": "Y2ub__u8TgOIwogbcOSyJ",
|
| 1689 |
+
"type": "arrow",
|
| 1690 |
+
"x": 1047.418807077858,
|
| 1691 |
+
"y": 797.591590024522,
|
| 1692 |
+
"width": 222.5718893216865,
|
| 1693 |
+
"height": 10.765825358585857,
|
| 1694 |
+
"angle": 0,
|
| 1695 |
+
"strokeColor": "#1e1e1e",
|
| 1696 |
+
"backgroundColor": "transparent",
|
| 1697 |
+
"fillStyle": "solid",
|
| 1698 |
+
"strokeWidth": 2,
|
| 1699 |
+
"strokeStyle": "dashed",
|
| 1700 |
+
"roughness": 1,
|
| 1701 |
+
"opacity": 100,
|
| 1702 |
+
"groupIds": [],
|
| 1703 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1704 |
+
"index": "apV",
|
| 1705 |
+
"roundness": {
|
| 1706 |
+
"type": 2
|
| 1707 |
+
},
|
| 1708 |
+
"seed": 1013898254,
|
| 1709 |
+
"version": 1483,
|
| 1710 |
+
"versionNonce": 1971199506,
|
| 1711 |
+
"isDeleted": false,
|
| 1712 |
+
"boundElements": [],
|
| 1713 |
+
"updated": 1739443216784,
|
| 1714 |
+
"link": null,
|
| 1715 |
+
"locked": false,
|
| 1716 |
+
"points": [
|
| 1717 |
+
[
|
| 1718 |
+
0,
|
| 1719 |
+
0
|
| 1720 |
+
],
|
| 1721 |
+
[
|
| 1722 |
+
-222.5718893216865,
|
| 1723 |
+
-10.765825358585857
|
| 1724 |
+
]
|
| 1725 |
+
],
|
| 1726 |
+
"lastCommittedPoint": null,
|
| 1727 |
+
"startBinding": {
|
| 1728 |
+
"elementId": "gBtT2H2gfCOioSXaQjgn3",
|
| 1729 |
+
"focus": -0.16536477254107806,
|
| 1730 |
+
"gap": 6.75543212890625,
|
| 1731 |
+
"fixedPoint": null
|
| 1732 |
+
},
|
| 1733 |
+
"endBinding": {
|
| 1734 |
+
"elementId": "w8cjE_ZmAWalkyMBdUsGJ",
|
| 1735 |
+
"focus": 0.04367738339496544,
|
| 1736 |
+
"gap": 6.48818040260042,
|
| 1737 |
+
"fixedPoint": null
|
| 1738 |
+
},
|
| 1739 |
+
"startArrowhead": null,
|
| 1740 |
+
"endArrowhead": "arrow",
|
| 1741 |
+
"elbowed": false
|
| 1742 |
+
},
|
| 1743 |
+
{
|
| 1744 |
+
"id": "yNsW2h8Pss9Gb_S8sI9g1",
|
| 1745 |
+
"type": "arrow",
|
| 1746 |
+
"x": 1029.964349229296,
|
| 1747 |
+
"y": 983.2248034735771,
|
| 1748 |
+
"width": 187.95914620974406,
|
| 1749 |
+
"height": 4.350599282177882,
|
| 1750 |
+
"angle": 0,
|
| 1751 |
+
"strokeColor": "#1e1e1e",
|
| 1752 |
+
"backgroundColor": "transparent",
|
| 1753 |
+
"fillStyle": "solid",
|
| 1754 |
+
"strokeWidth": 2,
|
| 1755 |
+
"strokeStyle": "dashed",
|
| 1756 |
+
"roughness": 1,
|
| 1757 |
+
"opacity": 100,
|
| 1758 |
+
"groupIds": [],
|
| 1759 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 1760 |
+
"index": "apt",
|
| 1761 |
+
"roundness": {
|
| 1762 |
+
"type": 2
|
| 1763 |
+
},
|
| 1764 |
+
"seed": 235643858,
|
| 1765 |
+
"version": 1696,
|
| 1766 |
+
"versionNonce": 1609862098,
|
| 1767 |
+
"isDeleted": false,
|
| 1768 |
+
"boundElements": [],
|
| 1769 |
+
"updated": 1739443216784,
|
| 1770 |
+
"link": null,
|
| 1771 |
+
"locked": false,
|
| 1772 |
+
"points": [
|
| 1773 |
+
[
|
| 1774 |
+
0,
|
| 1775 |
+
0
|
| 1776 |
+
],
|
| 1777 |
+
[
|
| 1778 |
+
-187.95914620974406,
|
| 1779 |
+
-4.350599282177882
|
| 1780 |
+
]
|
| 1781 |
+
],
|
| 1782 |
+
"lastCommittedPoint": null,
|
| 1783 |
+
"startBinding": {
|
| 1784 |
+
"elementId": "WsxPr8Q8Ki3MX02D1zoTP",
|
| 1785 |
+
"focus": -0.14993749818034682,
|
| 1786 |
+
"gap": 8.17755126953125,
|
| 1787 |
+
"fixedPoint": null
|
| 1788 |
+
},
|
| 1789 |
+
"endBinding": {
|
| 1790 |
+
"elementId": "I7sHCIcRd544zlJb-k7MC",
|
| 1791 |
+
"focus": -0.0990286868152971,
|
| 1792 |
+
"gap": 5.318884744809651,
|
| 1793 |
+
"fixedPoint": null
|
| 1794 |
+
},
|
| 1795 |
+
"startArrowhead": null,
|
| 1796 |
+
"endArrowhead": "arrow",
|
| 1797 |
+
"elbowed": false
|
| 1798 |
+
},
|
| 1799 |
+
{
|
| 1800 |
+
"id": "4EpXJpZS9VYbSmYOdGndE",
|
| 1801 |
+
"type": "frame",
|
| 1802 |
+
"x": 556.4840630425347,
|
| 1803 |
+
"y": 469.65690104166686,
|
| 1804 |
+
"width": 1466.3111572265625,
|
| 1805 |
+
"height": 624.8562666615479,
|
| 1806 |
+
"angle": 0,
|
| 1807 |
+
"strokeColor": "#bbb",
|
| 1808 |
+
"backgroundColor": "transparent",
|
| 1809 |
+
"fillStyle": "solid",
|
| 1810 |
+
"strokeWidth": 2,
|
| 1811 |
+
"strokeStyle": "solid",
|
| 1812 |
+
"roughness": 0,
|
| 1813 |
+
"opacity": 100,
|
| 1814 |
+
"groupIds": [],
|
| 1815 |
+
"frameId": null,
|
| 1816 |
+
"index": "aq",
|
| 1817 |
+
"roundness": null,
|
| 1818 |
+
"seed": 2051690766,
|
| 1819 |
+
"version": 957,
|
| 1820 |
+
"versionNonce": 854574990,
|
| 1821 |
+
"isDeleted": false,
|
| 1822 |
+
"boundElements": [],
|
| 1823 |
+
"updated": 1739443216684,
|
| 1824 |
+
"link": null,
|
| 1825 |
+
"locked": false,
|
| 1826 |
+
"name": "Langgraph"
|
| 1827 |
+
},
|
| 1828 |
+
{
|
| 1829 |
+
"id": "NrAZkP8Ng_B8lM3f45B0d",
|
| 1830 |
+
"type": "rectangle",
|
| 1831 |
+
"x": 1478.4393988715276,
|
| 1832 |
+
"y": 1160.9345276647227,
|
| 1833 |
+
"width": 297.95556640625,
|
| 1834 |
+
"height": 93.86651611328125,
|
| 1835 |
+
"angle": 0,
|
| 1836 |
+
"strokeColor": "#1e1e1e",
|
| 1837 |
+
"backgroundColor": "transparent",
|
| 1838 |
+
"fillStyle": "solid",
|
| 1839 |
+
"strokeWidth": 2,
|
| 1840 |
+
"strokeStyle": "solid",
|
| 1841 |
+
"roughness": 1,
|
| 1842 |
+
"opacity": 100,
|
| 1843 |
+
"groupIds": [],
|
| 1844 |
+
"frameId": null,
|
| 1845 |
+
"index": "at",
|
| 1846 |
+
"roundness": {
|
| 1847 |
+
"type": 3
|
| 1848 |
+
},
|
| 1849 |
+
"seed": 531617870,
|
| 1850 |
+
"version": 532,
|
| 1851 |
+
"versionNonce": 2135145230,
|
| 1852 |
+
"isDeleted": false,
|
| 1853 |
+
"boundElements": [
|
| 1854 |
+
{
|
| 1855 |
+
"type": "text",
|
| 1856 |
+
"id": "bX-7TNY4PBleds7wTHIUv"
|
| 1857 |
+
},
|
| 1858 |
+
{
|
| 1859 |
+
"id": "xx3Qb-dEk_gwNzn15L2Js",
|
| 1860 |
+
"type": "arrow"
|
| 1861 |
+
},
|
| 1862 |
+
{
|
| 1863 |
+
"id": "FyQYDCMA748f6_svuDGi-",
|
| 1864 |
+
"type": "arrow"
|
| 1865 |
+
}
|
| 1866 |
+
],
|
| 1867 |
+
"updated": 1739443242434,
|
| 1868 |
+
"link": null,
|
| 1869 |
+
"locked": false
|
| 1870 |
+
},
|
| 1871 |
+
{
|
| 1872 |
+
"id": "bX-7TNY4PBleds7wTHIUv",
|
| 1873 |
+
"type": "text",
|
| 1874 |
+
"x": 1541.4872656928167,
|
| 1875 |
+
"y": 1195.3677857213634,
|
| 1876 |
+
"width": 171.85983276367188,
|
| 1877 |
+
"height": 25,
|
| 1878 |
+
"angle": 0,
|
| 1879 |
+
"strokeColor": "#1e1e1e",
|
| 1880 |
+
"backgroundColor": "transparent",
|
| 1881 |
+
"fillStyle": "solid",
|
| 1882 |
+
"strokeWidth": 2,
|
| 1883 |
+
"strokeStyle": "solid",
|
| 1884 |
+
"roughness": 1,
|
| 1885 |
+
"opacity": 100,
|
| 1886 |
+
"groupIds": [],
|
| 1887 |
+
"frameId": null,
|
| 1888 |
+
"index": "au",
|
| 1889 |
+
"roundness": null,
|
| 1890 |
+
"seed": 485203598,
|
| 1891 |
+
"version": 502,
|
| 1892 |
+
"versionNonce": 225782094,
|
| 1893 |
+
"isDeleted": false,
|
| 1894 |
+
"boundElements": [],
|
| 1895 |
+
"updated": 1739443242434,
|
| 1896 |
+
"link": null,
|
| 1897 |
+
"locked": false,
|
| 1898 |
+
"text": "Displays response",
|
| 1899 |
+
"fontSize": 20,
|
| 1900 |
+
"fontFamily": 5,
|
| 1901 |
+
"textAlign": "center",
|
| 1902 |
+
"verticalAlign": "middle",
|
| 1903 |
+
"containerId": "NrAZkP8Ng_B8lM3f45B0d",
|
| 1904 |
+
"originalText": "Displays response",
|
| 1905 |
+
"autoResize": true,
|
| 1906 |
+
"lineHeight": 1.25
|
| 1907 |
+
},
|
| 1908 |
+
{
|
| 1909 |
+
"id": "xx3Qb-dEk_gwNzn15L2Js",
|
| 1910 |
+
"type": "arrow",
|
| 1911 |
+
"x": 1627.8170539567984,
|
| 1912 |
+
"y": 1157.3788330846446,
|
| 1913 |
+
"width": 10.136425847646024,
|
| 1914 |
+
"height": 348.3441854609465,
|
| 1915 |
+
"angle": 0,
|
| 1916 |
+
"strokeColor": "#1e1e1e",
|
| 1917 |
+
"backgroundColor": "transparent",
|
| 1918 |
+
"fillStyle": "solid",
|
| 1919 |
+
"strokeWidth": 2,
|
| 1920 |
+
"strokeStyle": "solid",
|
| 1921 |
+
"roughness": 1,
|
| 1922 |
+
"opacity": 100,
|
| 1923 |
+
"groupIds": [],
|
| 1924 |
+
"frameId": null,
|
| 1925 |
+
"index": "aw",
|
| 1926 |
+
"roundness": {
|
| 1927 |
+
"type": 2
|
| 1928 |
+
},
|
| 1929 |
+
"seed": 1422299666,
|
| 1930 |
+
"version": 507,
|
| 1931 |
+
"versionNonce": 668913550,
|
| 1932 |
+
"isDeleted": false,
|
| 1933 |
+
"boundElements": [],
|
| 1934 |
+
"updated": 1739443242434,
|
| 1935 |
+
"link": null,
|
| 1936 |
+
"locked": false,
|
| 1937 |
+
"points": [
|
| 1938 |
+
[
|
| 1939 |
+
0,
|
| 1940 |
+
0
|
| 1941 |
+
],
|
| 1942 |
+
[
|
| 1943 |
+
10.136425847646024,
|
| 1944 |
+
-348.3441854609465
|
| 1945 |
+
]
|
| 1946 |
+
],
|
| 1947 |
+
"lastCommittedPoint": null,
|
| 1948 |
+
"startBinding": {
|
| 1949 |
+
"elementId": "NrAZkP8Ng_B8lM3f45B0d",
|
| 1950 |
+
"focus": -0.007112380664110637,
|
| 1951 |
+
"gap": 3.555694580078125,
|
| 1952 |
+
"fixedPoint": null
|
| 1953 |
+
},
|
| 1954 |
+
"endBinding": {
|
| 1955 |
+
"elementId": "K7JKG04XiRPCsQ3h4_Dax",
|
| 1956 |
+
"focus": -0.005877344681196516,
|
| 1957 |
+
"gap": 2.5109786987304688,
|
| 1958 |
+
"fixedPoint": null
|
| 1959 |
+
},
|
| 1960 |
+
"startArrowhead": "arrow",
|
| 1961 |
+
"endArrowhead": null,
|
| 1962 |
+
"elbowed": false
|
| 1963 |
+
},
|
| 1964 |
+
{
|
| 1965 |
+
"id": "FyQYDCMA748f6_svuDGi-",
|
| 1966 |
+
"type": "arrow",
|
| 1967 |
+
"x": 1663.6587057464315,
|
| 1968 |
+
"y": 1258.3566162877696,
|
| 1969 |
+
"width": 270.0699390753109,
|
| 1970 |
+
"height": 173.91110055718786,
|
| 1971 |
+
"angle": 0,
|
| 1972 |
+
"strokeColor": "#1e1e1e",
|
| 1973 |
+
"backgroundColor": "transparent",
|
| 1974 |
+
"fillStyle": "solid",
|
| 1975 |
+
"strokeWidth": 2,
|
| 1976 |
+
"strokeStyle": "solid",
|
| 1977 |
+
"roughness": 1,
|
| 1978 |
+
"opacity": 100,
|
| 1979 |
+
"groupIds": [],
|
| 1980 |
+
"frameId": null,
|
| 1981 |
+
"index": "ax",
|
| 1982 |
+
"roundness": {
|
| 1983 |
+
"type": 2
|
| 1984 |
+
},
|
| 1985 |
+
"seed": 1157217170,
|
| 1986 |
+
"version": 312,
|
| 1987 |
+
"versionNonce": 1956712334,
|
| 1988 |
+
"isDeleted": false,
|
| 1989 |
+
"boundElements": [],
|
| 1990 |
+
"updated": 1739443245083,
|
| 1991 |
+
"link": null,
|
| 1992 |
+
"locked": false,
|
| 1993 |
+
"points": [
|
| 1994 |
+
[
|
| 1995 |
+
0,
|
| 1996 |
+
0
|
| 1997 |
+
],
|
| 1998 |
+
[
|
| 1999 |
+
-270.0699390753109,
|
| 2000 |
+
173.91110055718786
|
| 2001 |
+
]
|
| 2002 |
+
],
|
| 2003 |
+
"lastCommittedPoint": null,
|
| 2004 |
+
"startBinding": {
|
| 2005 |
+
"elementId": "NrAZkP8Ng_B8lM3f45B0d",
|
| 2006 |
+
"focus": -0.380041570384292,
|
| 2007 |
+
"gap": 3.555572509765625,
|
| 2008 |
+
"fixedPoint": null
|
| 2009 |
+
},
|
| 2010 |
+
"endBinding": {
|
| 2011 |
+
"elementId": "JgxMPeI9m-WxMJBe8p2iu",
|
| 2012 |
+
"focus": -0.4517367543467092,
|
| 2013 |
+
"gap": 1.0667572021484375,
|
| 2014 |
+
"fixedPoint": null
|
| 2015 |
+
},
|
| 2016 |
+
"startArrowhead": null,
|
| 2017 |
+
"endArrowhead": "arrow",
|
| 2018 |
+
"elbowed": false
|
| 2019 |
+
},
|
| 2020 |
+
{
|
| 2021 |
+
"id": "obGZKTevXg4XAoWm_IZ9Z",
|
| 2022 |
+
"type": "arrow",
|
| 2023 |
+
"x": 1506.3704562717016,
|
| 2024 |
+
"y": 487.0592447916665,
|
| 2025 |
+
"width": 94.45550712564273,
|
| 2026 |
+
"height": 51.44181823730503,
|
| 2027 |
+
"angle": 0,
|
| 2028 |
+
"strokeColor": "#1e1e1e",
|
| 2029 |
+
"backgroundColor": "transparent",
|
| 2030 |
+
"fillStyle": "solid",
|
| 2031 |
+
"strokeWidth": 2,
|
| 2032 |
+
"strokeStyle": "solid",
|
| 2033 |
+
"roughness": 1,
|
| 2034 |
+
"opacity": 100,
|
| 2035 |
+
"groupIds": [],
|
| 2036 |
+
"frameId": "4EpXJpZS9VYbSmYOdGndE",
|
| 2037 |
+
"index": "az",
|
| 2038 |
+
"roundness": {
|
| 2039 |
+
"type": 2
|
| 2040 |
+
},
|
| 2041 |
+
"seed": 912393166,
|
| 2042 |
+
"version": 180,
|
| 2043 |
+
"versionNonce": 810046030,
|
| 2044 |
+
"isDeleted": false,
|
| 2045 |
+
"boundElements": [],
|
| 2046 |
+
"updated": 1739443216784,
|
| 2047 |
+
"link": null,
|
| 2048 |
+
"locked": false,
|
| 2049 |
+
"points": [
|
| 2050 |
+
[
|
| 2051 |
+
0,
|
| 2052 |
+
0
|
| 2053 |
+
],
|
| 2054 |
+
[
|
| 2055 |
+
-94.45550712564273,
|
| 2056 |
+
51.44181823730503
|
| 2057 |
+
]
|
| 2058 |
+
],
|
| 2059 |
+
"lastCommittedPoint": null,
|
| 2060 |
+
"startBinding": {
|
| 2061 |
+
"elementId": "qWnNFvspSJfngiQK7c6tU",
|
| 2062 |
+
"focus": -0.32134278675123384,
|
| 2063 |
+
"gap": 7.726030985514171,
|
| 2064 |
+
"fixedPoint": null
|
| 2065 |
+
},
|
| 2066 |
+
"endBinding": {
|
| 2067 |
+
"elementId": "GBp2vkKDN_rJ-0THbSebW",
|
| 2068 |
+
"focus": -0.23111722249403238,
|
| 2069 |
+
"gap": 1,
|
| 2070 |
+
"fixedPoint": null
|
| 2071 |
+
},
|
| 2072 |
+
"startArrowhead": null,
|
| 2073 |
+
"endArrowhead": "arrow",
|
| 2074 |
+
"elbowed": false
|
| 2075 |
+
},
|
| 2076 |
+
{
|
| 2077 |
+
"id": "qnVIwuImMX7lY7cpTgiEM",
|
| 2078 |
+
"type": "arrow",
|
| 2079 |
+
"x": 1157.4667909922377,
|
| 2080 |
+
"y": 1048.4602511701644,
|
| 2081 |
+
"width": 4.489591209323862,
|
| 2082 |
+
"height": 119.54648166688412,
|
| 2083 |
+
"angle": 0,
|
| 2084 |
+
"strokeColor": "#1e1e1e",
|
| 2085 |
+
"backgroundColor": "transparent",
|
| 2086 |
+
"fillStyle": "solid",
|
| 2087 |
+
"strokeWidth": 2,
|
| 2088 |
+
"strokeStyle": "solid",
|
| 2089 |
+
"roughness": 1,
|
| 2090 |
+
"opacity": 100,
|
| 2091 |
+
"groupIds": [],
|
| 2092 |
+
"frameId": null,
|
| 2093 |
+
"index": "b02",
|
| 2094 |
+
"roundness": {
|
| 2095 |
+
"type": 2
|
| 2096 |
+
},
|
| 2097 |
+
"seed": 256302094,
|
| 2098 |
+
"version": 215,
|
| 2099 |
+
"versionNonce": 3198098,
|
| 2100 |
+
"isDeleted": false,
|
| 2101 |
+
"boundElements": [],
|
| 2102 |
+
"updated": 1739443240075,
|
| 2103 |
+
"link": null,
|
| 2104 |
+
"locked": false,
|
| 2105 |
+
"points": [
|
| 2106 |
+
[
|
| 2107 |
+
0,
|
| 2108 |
+
0
|
| 2109 |
+
],
|
| 2110 |
+
[
|
| 2111 |
+
4.489591209323862,
|
| 2112 |
+
119.54648166688412
|
| 2113 |
+
]
|
| 2114 |
+
],
|
| 2115 |
+
"lastCommittedPoint": null,
|
| 2116 |
+
"startBinding": {
|
| 2117 |
+
"elementId": "WsxPr8Q8Ki3MX02D1zoTP",
|
| 2118 |
+
"focus": -0.03100872811681922,
|
| 2119 |
+
"gap": 5.43525390996615,
|
| 2120 |
+
"fixedPoint": null
|
| 2121 |
+
},
|
| 2122 |
+
"endBinding": {
|
| 2123 |
+
"elementId": "cplZOVqKChIIlK1clqQyw",
|
| 2124 |
+
"focus": -0.020175504869330726,
|
| 2125 |
+
"gap": 1,
|
| 2126 |
+
"fixedPoint": null
|
| 2127 |
+
},
|
| 2128 |
+
"startArrowhead": null,
|
| 2129 |
+
"endArrowhead": "arrow",
|
| 2130 |
+
"elbowed": false
|
| 2131 |
+
}
|
| 2132 |
+
],
|
| 2133 |
+
"appState": {
|
| 2134 |
+
"gridSize": 20,
|
| 2135 |
+
"gridStep": 5,
|
| 2136 |
+
"gridModeEnabled": false,
|
| 2137 |
+
"viewBackgroundColor": "#fffce8"
|
| 2138 |
+
},
|
| 2139 |
+
"files": {}
|
| 2140 |
+
}
|
instructions/diagrams/AppFlow_Simplified.png
ADDED
|
instructions/instructions.MD
CHANGED
|
@@ -122,12 +122,11 @@ streamlit_app/
|
|
| 122 |
|
| 123 |
- **Langgraph**
|
| 124 |
- [How to add cross-thread persistence to your graph](https://langchain-ai.github.io/langgraph/how-tos/cross-thread-persistence/)
|
| 125 |
-
- [How to add cross-thread persistence to your graph](https://langchain-ai.github.io/langgraph/how-tos/cross-thread-persistence/)
|
| 126 |
|
| 127 |
|
| 128 |
- **LLM Processing:**
|
| 129 |
|
| 130 |
-
- [
|
| 131 |
|
| 132 |
---
|
| 133 |
|
|
|
|
| 122 |
|
| 123 |
- **Langgraph**
|
| 124 |
- [How to add cross-thread persistence to your graph](https://langchain-ai.github.io/langgraph/how-tos/cross-thread-persistence/)
|
|
|
|
| 125 |
|
| 126 |
|
| 127 |
- **LLM Processing:**
|
| 128 |
|
| 129 |
+
- [LiteLLM's Documentation](https://docs.litellm.ai/docs/)
|
| 130 |
|
| 131 |
---
|
| 132 |
|
streamlit_app/__init__.py
ADDED
|
File without changes
|
streamlit_app/config.py
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import TypedDict
|
| 2 |
+
from pathlib import Path
|
| 3 |
+
import os
|
| 4 |
+
from dotenv import load_dotenv
|
| 5 |
+
|
| 6 |
+
class Config(TypedDict):
|
| 7 |
+
WHISPER_MODEL: str
|
| 8 |
+
TTS_MODEL: str
|
| 9 |
+
GOOGLE_API_KEY: str
|
| 10 |
+
AUDIO_BACKEND: str
|
| 11 |
+
DEVICE: str
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
def load_config() -> Config:
|
| 15 |
+
env_path = os.path.join( os.getcwd(), "env", ".env")
|
| 16 |
+
print(f"env_path: {env_path}")
|
| 17 |
+
load_dotenv(env_path)
|
| 18 |
+
|
| 19 |
+
return {
|
| 20 |
+
"WHISPER_MODEL": os.getenv("WHISPER_MODEL","small"),
|
| 21 |
+
"TTS_MODEL": os.getenv("TTS_MODEL","tts_models/en/jenny/jenny"),
|
| 22 |
+
"GOOGLE_API_KEY": os.getenv("GOOGLE_API_KEY", ""),
|
| 23 |
+
"AUDIO_BACKEND": os.getenv("AUDIO_BACKEND","sox_io"),
|
| 24 |
+
"DEVICE": "cpu"
|
| 25 |
+
}
|
streamlit_app/env/.env.example
CHANGED
|
@@ -1,5 +1,8 @@
|
|
| 1 |
# Google API Key for Gemini
|
| 2 |
GOOGLE_API_KEY=your_google_api_key
|
|
|
|
|
|
|
|
|
|
| 3 |
|
| 4 |
# Optional: Coqui TTS model settings
|
| 5 |
COQUI_MODEL_NAME=tts_models/en/ljspeech/tacotron2-DDC
|
|
|
|
| 1 |
# Google API Key for Gemini
|
| 2 |
GOOGLE_API_KEY=your_google_api_key
|
| 3 |
+
AUDIO_BACKEND=sox_io
|
| 4 |
+
WHISPER_MODEL=small
|
| 5 |
+
TTS_MODEL=tts_models/en/jenny/jenny
|
| 6 |
|
| 7 |
# Optional: Coqui TTS model settings
|
| 8 |
COQUI_MODEL_NAME=tts_models/en/ljspeech/tacotron2-DDC
|
streamlit_app/graph/chains.py
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from langchain_core.runnables.config import RunnableConfig
|
| 2 |
+
from pydantic import BaseModel, Field
|
| 3 |
+
from langchain.prompts import PromptTemplate
|
| 4 |
+
from typing import List, Optional
|
| 5 |
+
from langchain_core.output_parsers import StrOutputParser
|
| 6 |
+
# Models for structured outputs
|
| 7 |
+
class Intent(BaseModel):
|
| 8 |
+
Intent: str = Field(description="The intent of the user's message")
|
| 9 |
+
|
| 10 |
+
def create_detect_intent_chain(llm):
|
| 11 |
+
prompt_template = PromptTemplate.from_template(
|
| 12 |
+
"""You are a helpful assistant that determines if a user's message is a request for translation or a general chat message.
|
| 13 |
+
If the user is asking for translation (either explicitly or implicitly), respond with exactly 'translation'.
|
| 14 |
+
If the user is having a general conversation or asking questions, respond with exactly 'chat'.
|
| 15 |
+
Only respond with one of these two words: 'translation' or 'chat'.
|
| 16 |
+
|
| 17 |
+
Examples:
|
| 18 |
+
- "Translate 'hello' to Spanish" -> 'translation'
|
| 19 |
+
- "How do you say 'hello' in Spanish" -> 'translation'
|
| 20 |
+
- "What's the weather like?" -> 'chat'
|
| 21 |
+
- "Can you help me learn Spanish?" -> 'chat'
|
| 22 |
+
|
| 23 |
+
User: {input}
|
| 24 |
+
"""
|
| 25 |
+
)
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
llm_structured = llm.with_structured_output(Intent)
|
| 29 |
+
return prompt_template | llm_structured
|
| 30 |
+
|
| 31 |
+
# class ExtractedSentence(BaseModel):
|
| 32 |
+
# sentence: str = Field(description="The cleaned sentence to be translated")
|
| 33 |
+
# source_language: str = Field(description="Detected source language")
|
| 34 |
+
# target_language: Optional[str] = Field(description="Requested target language if specified")
|
| 35 |
+
|
| 36 |
+
# def create_extract_sentence_chain(llm, user_message: str):
|
| 37 |
+
# prompt_template = PromptTemplate.from_template(
|
| 38 |
+
# """
|
| 39 |
+
# You are a helpful language assistant that extracts the core sentence to be translated from the user's message.
|
| 40 |
+
# Detect the source language and identify target language if specified.
|
| 41 |
+
# Remove any extra context like 'translate this:' or 'how do you say'.
|
| 42 |
+
|
| 43 |
+
# Examples:
|
| 44 |
+
# Input: "Can you translate 'hello my friend' to Spanish?"
|
| 45 |
+
# Output: Core sentence: "hello my friend"
|
| 46 |
+
# Source: English
|
| 47 |
+
# Target: Spanish
|
| 48 |
+
|
| 49 |
+
# Input: "How do you say 'I love programming' in Japanese?"
|
| 50 |
+
# Output: Core sentence: "I love programming"
|
| 51 |
+
# Source: English
|
| 52 |
+
# Target: Japanese
|
| 53 |
+
|
| 54 |
+
# User message: {user_message}
|
| 55 |
+
# """
|
| 56 |
+
# )
|
| 57 |
+
|
| 58 |
+
# prompt = prompt_template.format(user_message=user_message)
|
| 59 |
+
# llm_structured = llm.with_structured_output(ExtractedSentence)
|
| 60 |
+
# return prompt | llm_structured
|
| 61 |
+
|
| 62 |
+
class TranslationOption(BaseModel):
|
| 63 |
+
translation: str = Field(description="The translated text")
|
| 64 |
+
description: str = Field(description="Description of this translation variant")
|
| 65 |
+
# formality_level: str = Field(description="Formality level (formal, informal, neutral)")
|
| 66 |
+
|
| 67 |
+
class TranslationResponse(BaseModel):
|
| 68 |
+
# source_text: str = Field(description="Original text")
|
| 69 |
+
target_language: str = Field(description="Target language")
|
| 70 |
+
options: List[TranslationOption] = Field(description="List of translation options")
|
| 71 |
+
|
| 72 |
+
def create_translate_chain(llm):
|
| 73 |
+
# prompt_template = PromptTemplate.from_template(
|
| 74 |
+
# """Translate the following text from {source_language} to {target_language}.
|
| 75 |
+
# Provide multiple translation options with different formality levels and explanations.
|
| 76 |
+
|
| 77 |
+
# Text to translate: {sentence}
|
| 78 |
+
|
| 79 |
+
# For each translation, provide:
|
| 80 |
+
# 1. The translated text
|
| 81 |
+
# 2. A description of when to use this variant
|
| 82 |
+
# 3. The formality level (formal, informal, neutral)
|
| 83 |
+
|
| 84 |
+
# Format your response as a structured list of translations with these components.
|
| 85 |
+
# """
|
| 86 |
+
# )
|
| 87 |
+
|
| 88 |
+
prompt_template = PromptTemplate.from_template(
|
| 89 |
+
"""You are a helpful language assistant that translates text
|
| 90 |
+
Translate the provided user's request.
|
| 91 |
+
Provide possible translations and their respecitve explanations.
|
| 92 |
+
|
| 93 |
+
<user_request> {user_request} </user_request>
|
| 94 |
+
In your response, provide:
|
| 95 |
+
- the target language.
|
| 96 |
+
- For each translation, provide:
|
| 97 |
+
1. The translated text
|
| 98 |
+
2. A description of when to use this variant
|
| 99 |
+
|
| 100 |
+
Respond in JSON format
|
| 101 |
+
Example of JSON response:
|
| 102 |
+
response:{
|
| 103 |
+
"target_language": "here goes the target language",
|
| 104 |
+
"translations":[
|
| 105 |
+
{
|
| 106 |
+
"translation": "Here goes the translation",
|
| 107 |
+
"description": "Here goes the description/explanation of the translation",
|
| 108 |
+
}
|
| 109 |
+
]
|
| 110 |
+
}
|
| 111 |
+
"""
|
| 112 |
+
)
|
| 113 |
+
|
| 114 |
+
llm_structured = llm.with_structured_output(TranslationResponse)
|
| 115 |
+
return prompt_template | llm_structured
|
| 116 |
+
|
| 117 |
+
# class WordBreakdown(BaseModel):
|
| 118 |
+
# word: str = Field(description="Individual word")
|
| 119 |
+
# part_of_speech: str = Field(description="Part of speech (noun, verb, etc.)")
|
| 120 |
+
# base_form: str = Field(description="Base/dictionary form")
|
| 121 |
+
# explanation: str = Field(description="Meaning and usage explanation")
|
| 122 |
+
|
| 123 |
+
# class SentenceBreakdown(BaseModel):
|
| 124 |
+
# words: List[WordBreakdown] = Field(description="List of word breakdowns")
|
| 125 |
+
# # grammar_notes: Optional[str] = Field(description="Additional grammar explanations")
|
| 126 |
+
|
| 127 |
+
|
| 128 |
+
# def create_sentence_breakdown_chain(llm, translation: Translation):
|
| 129 |
+
# prompt_template = PromptTemplate.from_template(
|
| 130 |
+
# """Break down this translated sentence into individual words and provide detailed explanations.
|
| 131 |
+
|
| 132 |
+
# Original text: {source_text}
|
| 133 |
+
# Translated text: {translation}
|
| 134 |
+
|
| 135 |
+
# For each word, provide:
|
| 136 |
+
# 1. The word itself
|
| 137 |
+
# 2. Part of speech
|
| 138 |
+
# 3. Base/dictionary form
|
| 139 |
+
# 4. Detailed explanation of meaning and usage
|
| 140 |
+
|
| 141 |
+
|
| 142 |
+
# """
|
| 143 |
+
# )
|
| 144 |
+
|
| 145 |
+
# # Use the first translation option for breakdown
|
| 146 |
+
# prompt = prompt_template.format(
|
| 147 |
+
# source_text=translation.source_text,
|
| 148 |
+
# translation=translation.options[0].translation
|
| 149 |
+
# )
|
| 150 |
+
# llm_structured = llm.with_structured_output(SentenceBreakdown)
|
| 151 |
+
# return prompt | llm_structured
|
| 152 |
+
|
| 153 |
+
def create_chat_response_chain(llm):
|
| 154 |
+
prompt_template = PromptTemplate.from_template(
|
| 155 |
+
"""You are a helpful language learning assistant. Engage in conversation with the user,
|
| 156 |
+
helping them practice and learn languages.
|
| 157 |
+
|
| 158 |
+
Previous conversation:
|
| 159 |
+
{chat_history}
|
| 160 |
+
|
| 161 |
+
User: {input}
|
| 162 |
+
|
| 163 |
+
Respond naturally and engagingly, encouraging language practice when appropriate.
|
| 164 |
+
"""
|
| 165 |
+
)
|
| 166 |
+
# llm_structured = llm.with_structured_output(ChatResponse)
|
| 167 |
+
return prompt_template | llm | StrOutputParser()
|
| 168 |
+
|
| 169 |
+
|
| 170 |
+
|
| 171 |
+
if __name__ == "__main__":
|
| 172 |
+
from langchain_google_genai import ChatGoogleGenerativeAI
|
| 173 |
+
from ..config import load_config
|
| 174 |
+
|
| 175 |
+
|
| 176 |
+
def test_detect_intent_chain():
|
| 177 |
+
config = load_config()
|
| 178 |
+
llm = ChatGoogleGenerativeAI(
|
| 179 |
+
model="gemini-2.0-flash",
|
| 180 |
+
temperature=0.7,
|
| 181 |
+
)
|
| 182 |
+
detect_intent_chain = create_detect_intent_chain(llm)
|
| 183 |
+
result = detect_intent_chain.invoke({"input": "Translate 'hello' to Spanish"})
|
| 184 |
+
print(f"result: {result}")
|
| 185 |
+
|
| 186 |
+
test_detect_intent_chain()
|
streamlit_app/graph/configSchema.py
CHANGED
|
@@ -1,7 +1,9 @@
|
|
| 1 |
from typing import TypedDict, Any
|
|
|
|
| 2 |
|
| 3 |
class ConfigSchema(TypedDict):
|
| 4 |
-
tts_model:
|
| 5 |
-
stt_model:
|
|
|
|
| 6 |
|
| 7 |
|
|
|
|
| 1 |
from typing import TypedDict, Any
|
| 2 |
+
from stt_tts.models import TTSModel, STTModel
|
| 3 |
|
| 4 |
class ConfigSchema(TypedDict):
|
| 5 |
+
tts_model: TTSModel
|
| 6 |
+
stt_model: STTModel
|
| 7 |
+
llm_config: dict[str, Any]
|
| 8 |
|
| 9 |
|
streamlit_app/graph/state.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
-
from
|
| 2 |
-
from
|
| 3 |
|
| 4 |
class TranslationOptions(TypedDict):
|
| 5 |
description: str
|
|
@@ -7,15 +7,16 @@ class TranslationOptions(TypedDict):
|
|
| 7 |
|
| 8 |
class Translation(TypedDict):
|
| 9 |
language: str
|
| 10 |
-
options:
|
| 11 |
-
|
| 12 |
class PolyglotState(TypedDict):
|
| 13 |
input: str
|
| 14 |
-
# input_type:
|
| 15 |
-
intent:
|
| 16 |
-
# transcription: str
|
| 17 |
translation: Translation
|
| 18 |
-
|
| 19 |
-
|
|
|
|
| 20 |
|
| 21 |
# class PolyglotStateInternal(TypedDict):
|
|
|
|
| 1 |
+
from typing import Literal, TypedDict, Annotated, Optional
|
| 2 |
+
from operator import add
|
| 3 |
|
| 4 |
class TranslationOptions(TypedDict):
|
| 5 |
description: str
|
|
|
|
| 7 |
|
| 8 |
class Translation(TypedDict):
|
| 9 |
language: str
|
| 10 |
+
options: Annotated[list[TranslationOptions], add]
|
| 11 |
+
|
| 12 |
class PolyglotState(TypedDict):
|
| 13 |
input: str
|
| 14 |
+
# input_type: Literal["text", "audio"]
|
| 15 |
+
intent: Literal["chat", "translation"]
|
| 16 |
+
# transcription: Optional[str]
|
| 17 |
translation: Translation
|
| 18 |
+
chat_resp: str
|
| 19 |
+
chat_history: Annotated[list[str], add]
|
| 20 |
+
audio_response_file: Annotated[list[str], add]
|
| 21 |
|
| 22 |
# class PolyglotStateInternal(TypedDict):
|
streamlit_app/graph/workflow.py
CHANGED
|
@@ -1,11 +1,14 @@
|
|
| 1 |
-
from typing import Annotated
|
| 2 |
from langgraph.graph import StateGraph, END
|
| 3 |
-
from
|
| 4 |
-
from dotenv import load_dotenv
|
| 5 |
import os
|
| 6 |
-
from .state import PolyglotState
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
# Load environment variables
|
| 8 |
-
load_dotenv()
|
| 9 |
|
| 10 |
# Define nodes (placeholder implementations)
|
| 11 |
|
|
@@ -14,108 +17,166 @@ load_dotenv()
|
|
| 14 |
# if state["input_type"] == "audio":
|
| 15 |
# state["transcription"] = state["input"] # Placeholder
|
| 16 |
# return state
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
|
| 25 |
-
|
| 26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
Only respond with one of these two words: 'translation' or 'chat'.
|
| 36 |
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
"""
|
| 43 |
-
),
|
| 44 |
-
("human", text)
|
| 45 |
-
]
|
| 46 |
-
|
| 47 |
-
try:
|
| 48 |
-
# Get intent from LLM
|
| 49 |
-
ai_msg = llm.invoke(messages)
|
| 50 |
-
intent = ai_msg.content.strip().lower()
|
| 51 |
-
|
| 52 |
-
# Validate intent
|
| 53 |
-
if intent not in ["translation", "chat"]:
|
| 54 |
-
# Default to chat if response is invalid
|
| 55 |
-
intent = "chat"
|
| 56 |
|
| 57 |
-
|
| 58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
# Default to chat on error
|
| 64 |
-
state["intent"] = "chat"
|
| 65 |
-
return state, "chat"
|
| 66 |
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
state["translation"] = f"Translation placeholder: {text}"
|
| 72 |
-
return state
|
| 73 |
|
| 74 |
-
def
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
|
|
|
|
|
|
| 79 |
|
| 80 |
-
def
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
state["audio_response"] = b"" # Placeholder
|
| 87 |
-
return state
|
| 88 |
-
|
| 89 |
|
| 90 |
-
def create_workflow() -> StateGraph:
|
|
|
|
|
|
|
| 91 |
# Initialize workflow graph
|
| 92 |
workflow = StateGraph(PolyglotState)
|
| 93 |
|
| 94 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 95 |
# Add nodes to graph
|
| 96 |
-
|
| 97 |
-
workflow.add_node("
|
| 98 |
-
workflow.add_node("
|
| 99 |
-
workflow.add_node("
|
| 100 |
-
workflow.add_node("
|
|
|
|
| 101 |
|
| 102 |
-
# Define edges
|
| 103 |
-
workflow.add_edge("transcribe", "detect_intent")
|
| 104 |
workflow.add_conditional_edges(
|
| 105 |
"detect_intent",
|
|
|
|
| 106 |
{
|
| 107 |
-
"
|
| 108 |
-
"
|
| 109 |
}
|
| 110 |
)
|
| 111 |
-
|
| 112 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 113 |
workflow.add_edge("chat_response", END)
|
| 114 |
|
| 115 |
# Set entry point
|
| 116 |
-
workflow.set_entry_point("
|
| 117 |
|
| 118 |
-
return workflow
|
| 119 |
-
|
| 120 |
-
# Create singleton instance
|
| 121 |
-
workflow = create_workflow()
|
|
|
|
| 1 |
+
from typing import Annotated, Dict, Any, Callable
|
| 2 |
from langgraph.graph import StateGraph, END
|
| 3 |
+
# from dotenv import load_dotenv
|
|
|
|
| 4 |
import os
|
| 5 |
+
from .state import PolyglotState, Translation, TranslationOptions
|
| 6 |
+
from langchain_core.runnables.config import RunnableConfig
|
| 7 |
+
from .configSchema import ConfigSchema
|
| 8 |
+
from .chains import create_detect_intent_chain, Intent, create_translate_chain, TranslationResponse, create_chat_response_chain
|
| 9 |
+
from stt_tts.models import TTSModel
|
| 10 |
# Load environment variables
|
| 11 |
+
# load_dotenv()
|
| 12 |
|
| 13 |
# Define nodes (placeholder implementations)
|
| 14 |
|
|
|
|
| 17 |
# if state["input_type"] == "audio":
|
| 18 |
# state["transcription"] = state["input"] # Placeholder
|
| 19 |
# return state
|
| 20 |
+
def create_detect_intent_node(llm)-> Callable[[PolyglotState, RunnableConfig], PolyglotState]:
|
| 21 |
+
detect_intent_chain = create_detect_intent_chain(llm)
|
| 22 |
+
def detect_intent(state: PolyglotState, config: RunnableConfig) -> PolyglotState:
|
| 23 |
+
print(f"detect_intent")
|
| 24 |
+
print(f"input: {state['input']}")
|
| 25 |
+
try:
|
| 26 |
+
# Get intent from LLM
|
| 27 |
+
intent: Intent = detect_intent_chain.invoke({"input": state["input"]})
|
| 28 |
+
result = intent.Intent
|
| 29 |
+
# Validate intent
|
| 30 |
+
if intent.Intent not in ["translation", "chat"]:
|
| 31 |
+
# Default to chat if response is invalid
|
| 32 |
+
result = "chat"
|
| 33 |
+
except Exception as e:
|
| 34 |
+
# Log the error (you might want to add proper logging)
|
| 35 |
+
print(f"Error in intent detection: {str(e)}")
|
| 36 |
+
# Default to chat on error
|
| 37 |
+
result = "chat"
|
| 38 |
|
| 39 |
+
print(f"intent: {result}")
|
| 40 |
+
return {"intent": result}
|
| 41 |
+
return detect_intent
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
# def create_extract_sentence(llm):
|
| 46 |
+
# def extract_sentence_for_translation(state: PolyglotState, config: RunnableConfig) -> PolyglotState:
|
| 47 |
+
# """Extract sentences for translation using LLM."""
|
| 48 |
+
# text = state["transcription"] if state["input_type"] == "audio" else state["input"]
|
| 49 |
+
|
| 50 |
+
# messages = [
|
| 51 |
+
# ("system", """Extract the sentence to be translated. Remove any extra context like 'translate this:'
|
| 52 |
+
# or 'how do you say'. Just return the core sentence to translate."""),
|
| 53 |
+
# ("human", text)
|
| 54 |
+
# ]
|
| 55 |
+
|
| 56 |
+
# response = llm.invoke(messages)
|
| 57 |
+
# state["sentence_to_translate"] = response.content.strip()
|
| 58 |
+
# return state
|
| 59 |
|
| 60 |
+
# return extract_sentence_for_translation
|
| 61 |
+
|
| 62 |
+
def create_translate_node(llm)-> Callable[[PolyglotState, RunnableConfig], PolyglotState]:
|
| 63 |
+
translate_chain = create_translate_chain(llm)
|
| 64 |
+
def translate_text(state: PolyglotState, config: RunnableConfig) -> PolyglotState:
|
| 65 |
+
"""Translate text and provide multiple options."""
|
| 66 |
+
print(f"translate_text")
|
| 67 |
+
print(f"input: {state['input']}")
|
| 68 |
+
try:
|
| 69 |
+
response:TranslationResponse = translate_chain.invoke({"user_request": state["input"]})
|
| 70 |
+
print(f"response: {response}")
|
| 71 |
+
translation = Translation()
|
| 72 |
+
translation["language"] = response.target_language
|
| 73 |
+
for option in response.translations:
|
| 74 |
+
translation_option = TranslationOptions()
|
| 75 |
+
translation_option["translation"] = option.translation
|
| 76 |
+
translation_option["description"] = option.description
|
| 77 |
+
translation["options"].append(translation_option)
|
| 78 |
+
return {"translation": translation}
|
| 79 |
+
except Exception as e:
|
| 80 |
+
print(f"Error in translate_text: {str(e)}")
|
| 81 |
+
return state
|
| 82 |
|
| 83 |
+
return translate_text
|
| 84 |
+
|
| 85 |
+
# def create_sentence_breakdown(llm):
|
| 86 |
+
# def break_down_sentence(state: PolyglotState, config: RunnableConfig) -> PolyglotState:
|
| 87 |
+
# """Break down translated sentence into words and store in state."""
|
| 88 |
+
# if not state.get("translation"):
|
| 89 |
+
# return state
|
|
|
|
| 90 |
|
| 91 |
+
# messages = [
|
| 92 |
+
# ("system", """Break down this translation into individual words and provide explanations.
|
| 93 |
+
# Format as a list of word objects with 'word' and 'explanation' fields."""),
|
| 94 |
+
# ("human", state["translation"]["options"][0]["translation"])
|
| 95 |
+
# ]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 96 |
|
| 97 |
+
# response = llm.invoke(messages)
|
| 98 |
+
# state["word_breakdown"] = response.content # You'll want to parse this properly
|
| 99 |
+
# return state
|
| 100 |
+
|
| 101 |
+
# return break_down_sentence
|
| 102 |
+
|
| 103 |
+
def create_tts_node(tts_model:TTSModel) -> Callable[[PolyglotState, RunnableConfig], PolyglotState]:
|
| 104 |
+
"""Convert translations to speech."""
|
| 105 |
+
def text_to_speech(state: PolyglotState, config: RunnableConfig) -> PolyglotState:
|
| 106 |
+
print(f"text_to_speech")
|
| 107 |
+
print(f"translation: {state['translation']}")
|
| 108 |
+
if not state.get("translation"):
|
| 109 |
+
return state
|
| 110 |
+
|
| 111 |
+
translations = state["translation"]["options"]
|
| 112 |
+
audio_files = []
|
| 113 |
|
| 114 |
+
for option in translations:
|
| 115 |
+
audio_path = tts_model.tts_to_file(option["translation"])
|
| 116 |
+
audio_files.append(audio_path)
|
|
|
|
|
|
|
|
|
|
| 117 |
|
| 118 |
+
print(f"audio_files: {audio_files}")
|
| 119 |
+
return {"audio_response_files": audio_files}
|
| 120 |
+
|
| 121 |
+
return text_to_speech
|
|
|
|
|
|
|
| 122 |
|
| 123 |
+
def create_chat_response_node(llm)-> Callable[[PolyglotState, RunnableConfig], PolyglotState]:
|
| 124 |
+
chat_response_chain = create_chat_response_chain(llm)
|
| 125 |
+
def chat_response(state: PolyglotState, config: RunnableConfig) -> PolyglotState:
|
| 126 |
+
"""Generate a chat response using LLM."""
|
| 127 |
+
response = chat_response_chain.invoke({"chat_history": state["chat_history"], "input": state["input"]})
|
| 128 |
+
return {"chat_resp": response}
|
| 129 |
+
return chat_response
|
| 130 |
|
| 131 |
+
def where_to_go(state: PolyglotState, config: RunnableConfig) -> PolyglotState:
|
| 132 |
+
"""Determine where to go based on intent."""
|
| 133 |
+
if state["intent"] == "translation":
|
| 134 |
+
return "translate"
|
| 135 |
+
else:
|
| 136 |
+
return "chat_response"
|
|
|
|
|
|
|
|
|
|
| 137 |
|
| 138 |
+
def create_workflow(llm, tts_model:TTSModel) -> StateGraph:
|
| 139 |
+
"""Create the workflow graph with dependencies injected."""
|
| 140 |
+
|
| 141 |
# Initialize workflow graph
|
| 142 |
workflow = StateGraph(PolyglotState)
|
| 143 |
|
| 144 |
+
# Create nodes with dependencies
|
| 145 |
+
detect_intent_node = create_detect_intent_node(llm)
|
| 146 |
+
# extract_sentence_node = create_extract_sentence(llm)
|
| 147 |
+
translate_node = create_translate_node(llm)
|
| 148 |
+
# breakdown_node = create_sentence_breakdown(llm)
|
| 149 |
+
tts_node = create_tts_node(tts_model=tts_model)
|
| 150 |
+
chat_response_node = create_chat_response_node(llm)
|
| 151 |
# Add nodes to graph
|
| 152 |
+
workflow.add_node("detect_intent", detect_intent_node)
|
| 153 |
+
workflow.add_node("chat_response", chat_response_node)
|
| 154 |
+
# workflow.add_node("extract_sentence", extract_sentence_node)
|
| 155 |
+
workflow.add_node("translate", translate_node)
|
| 156 |
+
# workflow.add_node("break_down_sentence", breakdown_node)
|
| 157 |
+
workflow.add_node("text_to_speech", tts_node)
|
| 158 |
|
| 159 |
+
# Define edges based on flow chart
|
|
|
|
| 160 |
workflow.add_conditional_edges(
|
| 161 |
"detect_intent",
|
| 162 |
+
where_to_go,
|
| 163 |
{
|
| 164 |
+
"translate": "translate",
|
| 165 |
+
"chat_response": "chat_response",
|
| 166 |
}
|
| 167 |
)
|
| 168 |
+
|
| 169 |
+
# Translation flow
|
| 170 |
+
workflow.add_edge("translate", "text_to_speech")
|
| 171 |
+
# workflow.add_edge("extract_sentence", "translate")
|
| 172 |
+
# workflow.add_edge("translate", "break_down_sentence")
|
| 173 |
+
# workflow.add_edge("break_down_sentence", "text_to_speech")
|
| 174 |
+
workflow.add_edge("text_to_speech", END)
|
| 175 |
+
|
| 176 |
+
# Chat flow
|
| 177 |
workflow.add_edge("chat_response", END)
|
| 178 |
|
| 179 |
# Set entry point
|
| 180 |
+
workflow.set_entry_point("detect_intent")
|
| 181 |
|
| 182 |
+
return workflow
|
|
|
|
|
|
|
|
|
streamlit_app/main.py
CHANGED
|
@@ -3,21 +3,39 @@ from pathlib import Path
|
|
| 3 |
import json
|
| 4 |
import os
|
| 5 |
from dotenv import load_dotenv
|
| 6 |
-
from streamlit_app.graph import workflow
|
| 7 |
-
from
|
| 8 |
-
|
|
|
|
|
|
|
| 9 |
# Load environment variables
|
| 10 |
-
load_dotenv()
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
|
|
|
|
|
|
|
| 12 |
# Initialize session state
|
|
|
|
| 13 |
if "messages" not in st.session_state:
|
| 14 |
st.session_state.messages = []
|
| 15 |
if "dictionary" not in st.session_state:
|
| 16 |
st.session_state.dictionary = {}
|
| 17 |
if "stt" not in st.session_state:
|
| 18 |
-
st.session_state.stt = STTModel()
|
| 19 |
if "tts" not in st.session_state:
|
| 20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
|
| 22 |
def initialize_app():
|
| 23 |
st.set_page_config(
|
|
@@ -44,8 +62,54 @@ def create_sidebar():
|
|
| 44 |
# TODO: Implement download functionality
|
| 45 |
st.text_input("Enter your email:", key="download_email")
|
| 46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
def display_chat_interface():
|
| 48 |
-
workflow = create_workflow()
|
| 49 |
# Display chat messages
|
| 50 |
for message in st.session_state.messages:
|
| 51 |
with st.chat_message(message["role"]):
|
|
@@ -55,56 +119,29 @@ def display_chat_interface():
|
|
| 55 |
col1, col2 = st.columns([4, 1])
|
| 56 |
|
| 57 |
with col1:
|
| 58 |
-
# Text input
|
| 59 |
prompt = st.chat_input("Type your message here...")
|
| 60 |
|
| 61 |
with col2:
|
| 62 |
-
# Audio input
|
| 63 |
audio = st.audio_input("🎤")
|
| 64 |
|
| 65 |
# Process text input
|
| 66 |
if prompt:
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
st.markdown("🎤 *Audio message*")
|
| 84 |
-
st.audio(audio)
|
| 85 |
-
st.markdown("Transcribing audio...")
|
| 86 |
-
try:
|
| 87 |
-
transcription = st.session_state.stt.transcribe(audio)
|
| 88 |
-
st.markdown(transcription)
|
| 89 |
-
st.session_state.messages.append({"role": "user", "content": transcription})
|
| 90 |
-
# Transcribe audio
|
| 91 |
-
transcription = st.session_state.stt.transcribe(audio)
|
| 92 |
-
transcribed = True
|
| 93 |
-
except Exception as e:
|
| 94 |
-
st.error(f"Error transcribing audio: {str(e)}")
|
| 95 |
-
st.markdown("Failed to transcribe audio, try again")
|
| 96 |
-
# TODO: Process audio through LangGraph workflow
|
| 97 |
-
|
| 98 |
-
if transcribed:
|
| 99 |
-
st.session_state.messages.append({"role": "user", "content": transcription})
|
| 100 |
-
st.markdown(transcription)
|
| 101 |
-
|
| 102 |
-
# TODO: Process audio through LangGraph workflow
|
| 103 |
-
# For now, just acknowledge receipt
|
| 104 |
-
with st.chat_message("assistant"):
|
| 105 |
-
response = "I received your audio message. Audio processing will be implemented soon!"
|
| 106 |
-
st.markdown(response)
|
| 107 |
-
st.session_state.messages.append({"role": "assistant", "content": response})
|
| 108 |
|
| 109 |
def main():
|
| 110 |
initialize_app()
|
|
|
|
| 3 |
import json
|
| 4 |
import os
|
| 5 |
from dotenv import load_dotenv
|
| 6 |
+
# from streamlit_app.graph import workflow
|
| 7 |
+
from stt_tts.models import STTModel, TTSModel
|
| 8 |
+
from graph.workflow import create_workflow
|
| 9 |
+
from config import load_config
|
| 10 |
+
from langchain_google_genai import ChatGoogleGenerativeAI
|
| 11 |
# Load environment variables
|
| 12 |
+
# load_dotenv()
|
| 13 |
+
config = load_config()
|
| 14 |
+
# print(f"config: {config}")
|
| 15 |
+
def print_available_tts_models():
|
| 16 |
+
from TTS.api import TTS
|
| 17 |
|
| 18 |
+
available_models = TTS.list_models(language="en")
|
| 19 |
+
print(available_models)
|
| 20 |
# Initialize session state
|
| 21 |
+
|
| 22 |
if "messages" not in st.session_state:
|
| 23 |
st.session_state.messages = []
|
| 24 |
if "dictionary" not in st.session_state:
|
| 25 |
st.session_state.dictionary = {}
|
| 26 |
if "stt" not in st.session_state:
|
| 27 |
+
st.session_state.stt = STTModel(config["WHISPER_MODEL"])
|
| 28 |
if "tts" not in st.session_state:
|
| 29 |
+
# print_available_tts_models()
|
| 30 |
+
st.session_state.tts = TTSModel(config["TTS_MODEL"], audio_backend=config["AUDIO_BACKEND"])
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
if "llm" not in st.session_state:
|
| 34 |
+
# Initialize LLM
|
| 35 |
+
st.session_state.llm = ChatGoogleGenerativeAI(
|
| 36 |
+
model="gemini-2.0-flash",
|
| 37 |
+
temperature=0.7,
|
| 38 |
+
)
|
| 39 |
|
| 40 |
def initialize_app():
|
| 41 |
st.set_page_config(
|
|
|
|
| 62 |
# TODO: Implement download functionality
|
| 63 |
st.text_input("Enter your email:", key="download_email")
|
| 64 |
|
| 65 |
+
def display_translation_options(translation_options, audio_files):
|
| 66 |
+
for idx, option in enumerate(translation_options):
|
| 67 |
+
translation_text = option['translation']
|
| 68 |
+
context_text = option['description']
|
| 69 |
+
translation_number = idx + 1
|
| 70 |
+
translation_message = f"**Translation {translation_number}:** {translation_text}\n*Context:* {context_text}"
|
| 71 |
+
st.session_state.messages.append({"role": "assistant", "content": translation_message})
|
| 72 |
+
st.markdown(f"**Translation {translation_number}:** {translation_text}")
|
| 73 |
+
st.markdown(f"*Context:* {context_text}")
|
| 74 |
+
if audio_files and idx < len(audio_files):
|
| 75 |
+
st.audio(audio_files[idx])
|
| 76 |
+
else:
|
| 77 |
+
st.markdown("An error occurred while processing your message. Please try again.")
|
| 78 |
+
|
| 79 |
+
def process_chat_message(input_text: str, is_audio: bool = False) -> None:
|
| 80 |
+
"""
|
| 81 |
+
Process a chat message and update the chat interface with the response.
|
| 82 |
+
|
| 83 |
+
Args:
|
| 84 |
+
input_text: The text to process (either direct input or transcribed audio)
|
| 85 |
+
is_audio: Boolean indicating if the input was from audio
|
| 86 |
+
"""
|
| 87 |
+
# Add user message to chat history
|
| 88 |
+
display_text = f"🎤 *Audio message*:\n{input_text}" if is_audio else input_text
|
| 89 |
+
st.session_state.messages.append({"role": "user", "content": display_text})
|
| 90 |
+
|
| 91 |
+
with st.chat_message("user"):
|
| 92 |
+
st.markdown(display_text)
|
| 93 |
+
if is_audio:
|
| 94 |
+
st.markdown(input_text) # Show transcription below audio message
|
| 95 |
+
|
| 96 |
+
# Process through workflow
|
| 97 |
+
workflow = create_workflow(llm=st.session_state.llm,tts_model=st.session_state.tts)
|
| 98 |
+
app_workflow = workflow.compile()
|
| 99 |
+
result = app_workflow.invoke({"input": input_text})
|
| 100 |
+
|
| 101 |
+
# Display assistant response
|
| 102 |
+
with st.chat_message("assistant"):
|
| 103 |
+
if (result["chat_resp"] is not None):
|
| 104 |
+
st.markdown(result["chat_resp"])
|
| 105 |
+
st.session_state.messages.append({"role": "assistant", "content": result["chat_resp"]})
|
| 106 |
+
elif (result["translation"] is not None):
|
| 107 |
+
# Display each translation option with its audio
|
| 108 |
+
display_translation_options(result["translation"]["options"], result.get("audio_response_files", []))
|
| 109 |
+
|
| 110 |
+
|
| 111 |
+
|
| 112 |
def display_chat_interface():
|
|
|
|
| 113 |
# Display chat messages
|
| 114 |
for message in st.session_state.messages:
|
| 115 |
with st.chat_message(message["role"]):
|
|
|
|
| 119 |
col1, col2 = st.columns([4, 1])
|
| 120 |
|
| 121 |
with col1:
|
|
|
|
| 122 |
prompt = st.chat_input("Type your message here...")
|
| 123 |
|
| 124 |
with col2:
|
|
|
|
| 125 |
audio = st.audio_input("🎤")
|
| 126 |
|
| 127 |
# Process text input
|
| 128 |
if prompt:
|
| 129 |
+
process_chat_message(prompt)
|
| 130 |
+
elif audio: # Process audio input
|
| 131 |
+
chat_message_user= st.chat_message("user")
|
| 132 |
+
chat_message_user.markdown("🎤 *Audio message*")
|
| 133 |
+
chat_message_user.audio(audio)
|
| 134 |
+
chat_message_user.markdown("Transcribing audio...")
|
| 135 |
+
try:
|
| 136 |
+
transcription = st.session_state.stt.transcribe(audio)
|
| 137 |
+
print(f"transcription: {transcription}")
|
| 138 |
+
if transcription and transcription["text"] and len(transcription["text"]) > 0:
|
| 139 |
+
process_chat_message(transcription["text"], is_audio=True)
|
| 140 |
+
else:
|
| 141 |
+
chat_message_user.markdown("Transcribing resulted in an empty text, try again")
|
| 142 |
+
except Exception as e:
|
| 143 |
+
chat_message_user.error(f"Error transcribing audio: {str(e)}")
|
| 144 |
+
chat_message_user.markdown("Failed to transcribe audio, try again")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 145 |
|
| 146 |
def main():
|
| 147 |
initialize_app()
|
streamlit_app/stt_tts/__init__.py
ADDED
|
File without changes
|
streamlit_app/stt_tts/models.py
CHANGED
|
@@ -1,22 +1,33 @@
|
|
|
|
|
| 1 |
import whisper
|
| 2 |
import torch
|
| 3 |
from TTS.api import TTS
|
| 4 |
import torchaudio
|
| 5 |
import tempfile
|
| 6 |
import os
|
|
|
|
| 7 |
|
| 8 |
torch.classes.__path__ = [] # to silence warning
|
| 9 |
|
| 10 |
class STTModel:
|
| 11 |
-
def __init__(self,
|
| 12 |
-
self.model = whisper.load_model(model_name)
|
| 13 |
-
torchaudio.set_audio_backend(audio_backend) # or "soundfile" or "ffmpeg"
|
| 14 |
|
| 15 |
-
def transcribe(self, audio_file:BytesIO):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
with tempfile.NamedTemporaryFile(delete=False) as temp_audio:
|
| 17 |
temp_audio.write(audio_file.read())
|
| 18 |
# Get the absolute path of the temporary audio file
|
| 19 |
audio_file_path = os.path.abspath(temp_audio.name)
|
|
|
|
| 20 |
try:
|
| 21 |
transcription = self.model.transcribe(audio_file_path)
|
| 22 |
return transcription
|
|
@@ -28,13 +39,14 @@ class STTModel:
|
|
| 28 |
|
| 29 |
class TTSModel:
|
| 30 |
def __init__(self, model_name = 'tts_models/en/jenny/jenny', device = 'cpu', audio_backend = 'sox_io'):
|
|
|
|
| 31 |
self.model = TTS(model_name).to(device)
|
| 32 |
-
|
| 33 |
|
| 34 |
def tts_to_file(self, text:str):
|
| 35 |
with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as temp_audio:
|
| 36 |
temp_audio_path = temp_audio.name
|
| 37 |
-
self.model.tts_to_file(text=text, file_path=temp_audio_path)
|
| 38 |
return temp_audio_path
|
| 39 |
|
| 40 |
|
|
|
|
| 1 |
+
from io import BytesIO
|
| 2 |
import whisper
|
| 3 |
import torch
|
| 4 |
from TTS.api import TTS
|
| 5 |
import torchaudio
|
| 6 |
import tempfile
|
| 7 |
import os
|
| 8 |
+
from typing import Optional, Dict, Any
|
| 9 |
|
| 10 |
torch.classes.__path__ = [] # to silence warning
|
| 11 |
|
| 12 |
class STTModel:
|
| 13 |
+
def __init__(self, model_name: str = 'small', device = 'cpu') -> None:
|
| 14 |
+
self.model = whisper.load_model(model_name, device=device)
|
|
|
|
| 15 |
|
| 16 |
+
def transcribe(self, audio_file: BytesIO) -> Optional[Dict[str, Any]]:
|
| 17 |
+
"""
|
| 18 |
+
Transcribe audio file to text using Whisper model.
|
| 19 |
+
|
| 20 |
+
Args:
|
| 21 |
+
audio_file: BytesIO object containing audio data
|
| 22 |
+
|
| 23 |
+
Returns:
|
| 24 |
+
Dict containing transcription result or None if error occurs
|
| 25 |
+
"""
|
| 26 |
with tempfile.NamedTemporaryFile(delete=False) as temp_audio:
|
| 27 |
temp_audio.write(audio_file.read())
|
| 28 |
# Get the absolute path of the temporary audio file
|
| 29 |
audio_file_path = os.path.abspath(temp_audio.name)
|
| 30 |
+
print(f"Transcribing audio from: {audio_file_path}")
|
| 31 |
try:
|
| 32 |
transcription = self.model.transcribe(audio_file_path)
|
| 33 |
return transcription
|
|
|
|
| 39 |
|
| 40 |
class TTSModel:
|
| 41 |
def __init__(self, model_name = 'tts_models/en/jenny/jenny', device = 'cpu', audio_backend = 'sox_io'):
|
| 42 |
+
# print(f"Initializing TTS model with model_name: {model_name}, device: {device}, audio_backend: {audio_backend}")
|
| 43 |
self.model = TTS(model_name).to(device)
|
| 44 |
+
self.audio_backend = audio_backend
|
| 45 |
|
| 46 |
def tts_to_file(self, text:str):
|
| 47 |
with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as temp_audio:
|
| 48 |
temp_audio_path = temp_audio.name
|
| 49 |
+
self.model.tts_to_file(text=text, file_path=temp_audio_path,audio_backend=self.audio_backend)
|
| 50 |
return temp_audio_path
|
| 51 |
|
| 52 |
|