@cryptotaxi247 / CoPilot / commits / 2f64d8b4

Connector update (#118)

* Add connector_extra_data field to UpdateConnector class * Add Event Shipper Service to Connector Services for healthchecking * Add Alert Creation Provisioning service to connectors Verify connection to Alert Creation Provisioning service * add logos for connectors * Update logos * add scheduler router * Add job control endpoints to scheduler * Add time_interval update functionality to update_job endpoint * Commented out invoke_mimecast_integration job * get more data for scheduled jobs * updated dependencies * Add new fields to Connectors model and update connector data * Add new connector properties * Update InfluxDB organization and Mimecast checkpoint * updated connectors page * updated connector type * updated connector form * updated connectors types * fixed type-check and lint * updated connector form * Update issue templates * improved markdown performance * readme update --------- Co-authored-by: Davide Di Modica <webmaster.ddm@gmail.com>

taylor_socfortress committed Jan 27, 2024 at 10:09 UTC 2f64d8b486ae77b1a3289bd19afd3fb45230db38
55 files changed +1462 -1033
README.md
+8 -108
@@ -1,116 +1,16 @@
1 -# CoPilot
1 +<h1 align="center">
2
3 -SOCFortress CoPilot is developed using python 3.11. It'll likely work in earlier versions, but we're targeting
4 -3.11 for the extra error reporting featurest that dropped in 3.10 and later.
3 +<a href="https://www.socfortress.co"><img src="src/assets/images/socfortress_logo.svg" width="300" height="200"></a>
4
6 -# Development
5 +SOCFortress CoPilot
6
8 -SOCFortress CoPilot is developed using python 3.11. It'll likely work in earlier versions, but we're targeting
9 -3.11 for the extra error reporting featurest that dropped in 3.10 and later.
7
11 -## Local development of backend
8 +[![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://socfortress.medium.com/)
9 +[![YouTube](https://img.shields.io/badge/YouTube-%23FF0000.svg?style=for-the-badge&logo=YouTube&logoColor=white)](https://www.youtube.com/@taylorwalton_socfortress/videos)
10 +[![Discord Shield](https://discordapp.com/api/guilds/871419379999469568/widget.png?style=shield)](https://discord.gg/UN3pNBzaEQ)
11
13 -Setup the env vars, adjust if required, such as the `UPLOAD_FOLDER` environment variable.
12
15 -```
16 -cd backend
17 -cp .env.example .env
18 -```
13
20 -Create and activate python.
14 +</h1><h4 align="center">
15
22 -### macOS/Linux
23 -
24 -```
25 -python3.11 -m venv .venv --copies
26 -source .venv/bin/activate
27 -```
28 -
29 -### Windows
30 -
31 -```
32 -python.exe -m venv .venv --copies
33 -.venv\Scripts\activate
34 -```
35 -
36 -Installing dependencies
37 -
38 -```
39 -pip install -U pip setuptools wheel
40 -pip install -r requirements.in
41 -```
42 -
43 -Create a DB and apply any pending DB migrations
44 -
45 -```
46 -FLASK_APP=copilot.py flask db upgrade
47 -```
48 -
49 -If requiring to connect to the
50 -
51 -```
52 -sqlite3 copilot.db < insert_data.sql
53 -```
54 -
55 -Start local dev server
56 -
57 -```
58 -python app.py
59 -```
60 -
61 -## Test local backend
62 -
63 -Show configured connectors
64 -
65 -```
66 -curl http://localhost:5000/connectors
67 -```
68 -
69 -## Database changes
70 -
71 -If there any changes made to the model first ensure that it is added to the list of imports in
72 -`backend/app/__init_.py` before the following line
73 -
74 -```
75 -migrate = Migrate(app, db)
76 -```
77 -
78 -This allows alembic and flask migrate to see all the models in use so the migrations can be
79 -generated correctly.
80 -
81 -Once that is done, then you need to run the migrate command (example commment)
82 -and if any changes were detected, update your local DB instance.
83 -
84 -```
85 -FLASK_APP=copilot.py flask db migrate -m "Add User model."
86 -FLASK_APP=copilot.py flask db upgrade
87 -```
88 -
89 -Review the generated migration file to make sure the changes to the databse make sense in terms
90 -of what is needed to upgrade from the previous state, and then to downgrade to remove this migration.
91 -
92 -Don't forget to commit the new migration file into git.
93 -
94 -See https://flask-migrate.readthedocs.io/en/latest/ for further information
95 -
96 -## Running Pytest
97 -
98 -To run pytest, ensure pytest is installed:
99 -
100 -```
101 -pip install pytest
102 -```
103 -
104 -Then run pytest:
105 -
106 -```
107 -pytest .\backend\tests\routes\test_connectors.py
108 -```
109 -
110 -# Deployment
111 -
112 -## Production Deployment Notes
113 -
114 -```
115 -pip install -r requirements.txt
116 -```
16 +[SOCFortress CoPilot](https://www.socfortress.co) focuses on providing a single pane of glass for all your security operations needs. Simplify your open source security stack with a single platform focused on making open source security tools easier to use and more accessible.
backend/app/connectors/influxdb/utils/universal.py
+1 -1
@@ -71,7 +71,7 @@ async def create_influxdb_client(connector_name: str) -> InfluxDBClientAsync:
71 return InfluxDBClientAsync(
72 url=attributes["connector_url"],
73 token=attributes["connector_api_key"],
74 - org="SOCFORTRESS",
74 + org= await get_influxdb_organization(),
75 )
76 except Exception as e:
77 raise HTTPException(status_code=500, detail=f"Failed to create Elasticsearch client: {e}")
backend/app/connectors/models.py
+2
@@ -63,9 +63,11 @@ class Connectors(SQLModel, table=True):
63 connector_supports: Optional[str] = Field(default=None)
64 connector_configured: bool = Field(default=False)
65 connector_verified: bool = Field(default=False)
66 + connector_accepts_host_only: bool = Field(default=False)
67 connector_accepts_api_key: bool = Field(default=False)
68 connector_accepts_username_password: bool = Field(default=False)
69 connector_accepts_file: bool = Field(default=False)
70 + connector_accepts_extra_data: bool = Field(default=False)
71 connector_extra_data: Optional[str] = Field(default=None)
72
73 # Relationship
backend/app/connectors/schema.py
+3
@@ -28,9 +28,11 @@ class ConnectorResponse(BaseModel):
28 connector_supports: Optional[str]
29 connector_configured: bool
30 connector_verified: bool
31 + connector_accepts_host_only: bool
32 connector_accepts_api_key: bool
33 connector_accepts_username_password: bool
34 connector_accepts_file: bool
35 + connector_accepts_extra_data: bool
36 connector_extra_data: Optional[str]
37 history_logs: Optional[List[ConnectorHistoryResponse]]
38
@@ -61,3 +63,4 @@ class UpdateConnector(BaseModel):
63 connector_username: Optional[str]
64 connector_password: Optional[str]
65 connector_api_key: Optional[str]
66 + connector_extra_data: Optional[str]
backend/app/connectors/services.py
+14 -1
@@ -31,7 +31,8 @@ from app.integrations.ask_socfortress.services.ask_socfortress import verify_ask
31
32 # from app.db.db_session import engine # Import the shared engine
33 from app.db.db_session import get_session
34 -from app.utils import verify_wazuh_worker_provisioning_connection
34 +from app.utils import verify_wazuh_worker_provisioning_connection, verify_alert_creation_provisioning_connection
35 +from app.integrations.utils.event_shipper import verify_event_shipper_connection
36
37 UPLOAD_FOLDER = "file-store"
38 UPLOAD_FOLDER = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), UPLOAD_FOLDER)
@@ -119,6 +120,15 @@ class AskSocfortressService(ConnectorServiceInterface):
120 async def verify_authentication(self, connector: ConnectorResponse) -> Optional[ConnectorResponse]:
121 return await verify_ask_socfortress_connector(connector.connector_name)
122
123 +# Event Shipper Service
124 +class EventShipperService(ConnectorServiceInterface):
125 + async def verify_authentication(self, connector: ConnectorResponse) -> Optional[ConnectorResponse]:
126 + return await verify_event_shipper_connection(connector.connector_name)
127 +
128 +# Alert Creation Service
129 +class AlertCreationService(ConnectorServiceInterface):
130 + async def verify_authentication(self, connector: ConnectorResponse) -> Optional[ConnectorResponse]:
131 + return await verify_alert_creation_provisioning_connection(connector.connector_name)
132
133 # Factory function to create a service instance based on connector name
134 def get_connector_service(connector_name: str) -> Type[ConnectorServiceInterface]:
@@ -145,6 +155,8 @@ def get_connector_service(connector_name: str) -> Type[ConnectorServiceInterface
155 "Wazuh Worker Provisioning": WazuhWorkerProvisioningService,
156 "SocfortressThreatIntel": SocfortressThreatIntelService,
157 "AskSocfortress": AskSocfortressService,
158 + "Event Shipper": EventShipperService,
159 + "Alert Creation Provisioning": AlertCreationService,
160 }
161 return service_map.get(connector_name, None)
162
@@ -280,6 +292,7 @@ class ConnectorServices:
292 connector_record.connector_username = connector.connector_username
293 connector_record.connector_password = connector.connector_password
294 connector_record.connector_api_key = connector.connector_api_key
295 + connector_record.connector_extra_data = connector.connector_extra_data
296 connector_record.connector_last_updated = datetime.now()
297
298 # Commit the changes to the database
backend/app/db/db_populate.py
+5 -3
@@ -41,9 +41,11 @@ def load_connector_data(connector_name, connector_type, accepts_key, description
41 "connector_supports": os.getenv(f"{env_prefix}_SUPPORTS", "Not specified."),
42 "connector_configured": True,
43 "connector_verified": bool(os.getenv(f"{env_prefix}_VERIFIED", False)),
44 + "connector_accepts_host_only": accepts_key == "host_only",
45 "connector_accepts_api_key": accepts_key == "api_key",
46 "connector_accepts_username_password": accepts_key == "username_password",
47 "connector_accepts_file": accepts_key == "file",
48 + "connector_accepts_extra_data": True if extra_data_key else False,
49 "connector_extra_data": os.getenv(extra_data_key) if extra_data_key else None,
50 }
51
@@ -68,9 +70,9 @@ def get_connectors_list():
70 ("SocfortressThreatIntel", "3", "api_key", "Connection to Socfortress Threat Intel. Make sure you have requested an API key."),
71 ("Cortex", "3", "api_key", "Connection to Cortex. Make sure you have created an API key."),
72 ("Grafana", "3", "username_password", "Connection to Grafana. Make sure to use the an admin role user."),
71 - ("Wazuh Worker Provisioning", "3", "api_key", "Connection to Wazuh Worker Provisioning. Make sure you have deployed the Wazuh Worker Provisioning Application provided by SOCFortress: https://github.com/socfortress/Customer-Provisioning-Worker"),
72 - ("Event Shipper", "3", "api_key", "Connection to Graylog GELF Input to receive events from integrations. Make sure you have created a GELF Input in Graylog.", "GELF_INPUT_PORT"),
73 - ("Alert Creation Provisioning", "3", "api_key", "Connection to Alert Creation Provisioning. Make sure you have deployed the Alert Creation Provisioning Application provided by SOCFortress: https://github.com/socfortress/Customer-Provisioning-Alert"),
73 + ("Wazuh Worker Provisioning", "3", "host_only", "Connection to Wazuh Worker Provisioning. Make sure you have deployed the Wazuh Worker Provisioning Application provided by SOCFortress: https://github.com/socfortress/Customer-Provisioning-Worker"),
74 + ("Event Shipper", "3", "host_only", "Connection to Graylog GELF Input to receive events from integrations. Make sure you have created a GELF Input in Graylog.", "GELF_INPUT_PORT"),
75 + ("Alert Creation Provisioning", "3", "host_only", "Connection to Alert Creation Provisioning. Make sure you have deployed the Alert Creation Provisioning Application provided by SOCFortress: https://github.com/socfortress/Customer-Provisioning-Alert"),
76 # ... Add more connectors as needed ...
77 ]
78
backend/app/integrations/mimecast/checkpoint/mimecast_00002.checkpoint
+1 -1
@@ -1 +1 @@
1 -eNo9jl1vgjAYRv_Le02yVoFSk13oVIwfbA6WZctusL4tRbSGVhTM_vvYLnb9nHPy3MGiuNSo9zCCW6wHtDywaJ5ytXBx-fpskhfTvedu06qlFGSbNKvV9evBdaz8cJ-5vrVTNinkshF0suEizbSoqp3aDc5r5MM17_aFTKLZXB_iWahst8DpNet0sX0ED4yUFh2MqAdW47Ey6vcG9zmjLOBDD0SNucNMH7GHGAl8nzAWhn70L7j23G_EgwZrq83pL5YLYS6nPgxPb-mYUjYOCHz_ADEZS48
\ No newline at end of file
1 +eNo9js1SgzAURt_lbmUBmJDaGReBVgacjrVQge4wXGj4CTRQa3V8d9FF19_5zpxvGFGcNcoClhCHW4Wmv_WS1YZw3qU8O-Vl5NzF7lE0nNmLz01Tr8Jsty7SRrf76Fq1dTAE9Did3gqmeHpZuOo5jHd-fgj892ztvHgX4iVCvn4Nk4ta8SqonxLyCAb0ZTniBEvLgFFi1_bVX8UDtYlFmW0aIDTmE8aywxliJnUYJeye2fR2mK7DvM3oB-pR9upflgvRn9UsBm8fcctinJrw8wvUhUmz
\ No newline at end of file
backend/app/integrations/utils/event_shipper.py
+33
@@ -3,6 +3,10 @@ from app.integrations.utils.schema import EventShipperPayload, EventShipperPaylo
3
4 from app.connectors.event_shipper.utils.universal import create_gelf_logger
5 from fastapi import HTTPException
6 +from app.db.db_session import get_db_session
7 +from app.connectors.utils import get_connector_info_from_db
8 +from typing import Any, Dict
9 +import asyncio
10
11
12 async def get_gelf_logger():
@@ -27,3 +31,32 @@ async def event_shipper(message: EventShipperPayload) -> EventShipperPayloadResp
31
32 return EventShipperPayloadResponse(success=True, message="Successfully sent test message to log shipper.")
33
34 +async def verify_event_shipper_healtcheck(attributes: Dict[str, Any]) -> Dict[str, Any]:
35 + """
36 + Verifies the connection to Graylog Input via a telnet connection.
37 +
38 + Returns:
39 + dict: A dictionary containing 'connectionSuccessful' status.
40 + """
41 + logger.info(f"Verifying the event shipper connection to {attributes['connector_url']}")
42 +
43 + # MAke a TCP connection to the Graylog Input
44 + try:
45 + reader, writer = await asyncio.open_connection(attributes["connector_url"], attributes["connector_extra_data"])
46 + writer.close()
47 + await writer.wait_closed()
48 + return {"connectionSuccessful": True, "message": "Event shipper healthcheck successful"}
49 + except Exception as e:
50 + logger.error(f"Connection to {attributes['connector_url']} failed with error: {e}")
51 + return {"connectionSuccessful": False, "message": f"Connection to {attributes['connector_url']} failed"}
52 +
53 +async def verify_event_shipper_connection(connector_name: str) -> str:
54 + """
55 + Returns the status of the connection to Graylog Input.
56 + """
57 + async with get_db_session() as session: # This will correctly enter the context manager
58 + attributes = await get_connector_info_from_db(connector_name, session)
59 + if attributes is None:
60 + logger.error("No attributes found for event shipper connector")
61 + return None
62 + return await verify_event_shipper_healtcheck(attributes)
backend/app/routers/scheduler.py new
+10
@@ -0,0 +1,10 @@
1 +from fastapi import APIRouter
2 +
3 +from app.schedulers.routes.scheduler import scheduler_router
4 +
5 +
6 +# Instantiate the APIRouter
7 +router = APIRouter()
8 +
9 +# Include the Office365 related routes
10 +router.include_router(scheduler_router, prefix="/scheduler", tags=["Scheduler"])
backend/app/schedulers/routes/scheduler.py new
+147
@@ -0,0 +1,147 @@
1 +from app.schedulers.scheduler import init_scheduler
2 +from fastapi import APIRouter
3 +from fastapi import Depends
4 +from fastapi import Security
5 +from loguru import logger
6 +from sqlalchemy.ext.asyncio import AsyncSession
7 +from fastapi import HTTPException
8 +from sqlalchemy.future import select
9 +from sqlmodel import select
10 +from app.schedulers.schema.scheduler import JobsResponse
11 +from app.schedulers.models.scheduler import JobMetadata, CreateSchedulerRequest
12 +from app.db.db_session import get_db
13 +
14 +
15 +scheduler_router = APIRouter()
16 +
17 +@scheduler_router.get(
18 + "",
19 + response_model=JobsResponse,
20 + description="Get all jobs",
21 +)
22 +async def get_all_jobs(session: AsyncSession = Depends(get_db)) -> JobsResponse:
23 + """
24 + Provisions Office365 integration for a customer.
25 +
26 + Args:
27 + provision_office365_request (ProvisionOffice365Request): The request object containing the necessary information for provisioning.
28 + session (AsyncSession, optional): The database session. Defaults to Depends(get_db).
29 +
30 + Returns:
31 + ProvisionOffice365Response: The response object containing the result of the provisioning.
32 + """
33 + scheduler = init_scheduler()
34 + jobs = scheduler.get_jobs()
35 + test = scheduler.print_jobs()
36 + logger.info(f"test: {test}")
37 + apscheduler_jobs = []
38 + for job in jobs:
39 + job_metadata = await session.execute(select(JobMetadata).filter_by(job_id=job.id))
40 + job_metadata = job_metadata.scalars().first()
41 + apscheduler_jobs.append({"id": job.id, "name": job.name, "time_interval": job_metadata.time_interval, "enabled": job_metadata.enabled})
42 + logger.info(f"apscheduler_jobs: {apscheduler_jobs}")
43 + return JobsResponse(
44 + jobs=[{"id": job.id, "name": job.name} for job in jobs],
45 + success=True,
46 + message="Jobs successfully retrieved."
47 + )
48 +
49 +@scheduler_router.post(
50 + "/start/{job_id}",
51 + description="Start a job",
52 +)
53 +async def start_job(job_id: str):
54 + """
55 + Provisions Office365 integration for a customer.
56 +
57 + Args:
58 + provision_office365_request (ProvisionOffice365Request): The request object containing the necessary information for provisioning.
59 + session (AsyncSession, optional): The database session. Defaults to Depends(get_db).
60 +
61 + Returns:
62 + ProvisionOffice365Response: The response object containing the result of the provisioning.
63 + """
64 + scheduler = init_scheduler()
65 + jobs = scheduler.get_jobs()
66 + logger.info(f"jobs: {jobs}")
67 + for job in jobs:
68 + if job.id == job_id:
69 + job.resume()
70 + return {"success": True, "message": "Job started successfully"}
71 + return {"success": False, "message": "Job not found"}
72 +
73 +@scheduler_router.post(
74 + "/pause/{job_id}",
75 + description="Pause a job",
76 +)
77 +async def pause_job(job_id: str):
78 + """
79 + Provisions Office365 integration for a customer.
80 +
81 + Args:
82 + provision_office365_request (ProvisionOffice365Request): The request object containing the necessary information for provisioning.
83 + session (AsyncSession, optional): The database session. Defaults to Depends(get_db).
84 +
85 + Returns:
86 + ProvisionOffice365Response: The response object containing the result of the provisioning.
87 + """
88 + scheduler = init_scheduler()
89 + jobs = scheduler.get_jobs()
90 + logger.info(f"jobs: {jobs}")
91 + for job in jobs:
92 + if job.id == job_id:
93 + job.pause()
94 + return {"success": True, "message": "Job paused successfully"}
95 + return {"success": False, "message": "Job not found"}
96 +
97 +@scheduler_router.put(
98 + "/update/{job_id}",
99 + description="Update a job",
100 +)
101 +async def update_job(job_id: str, time_interval: int, session: AsyncSession = Depends(get_db)):
102 + """
103 + Provisions Office365 integration for a customer.
104 +
105 + Args:
106 + provision_office365_request (ProvisionOffice365Request): The request object containing the necessary information for provisioning.
107 + session (AsyncSession, optional): The database session. Defaults to Depends(get_db).
108 +
109 + Returns:
110 + ProvisionOffice365Response: The response object containing the result of the provisioning.
111 + """
112 + scheduler = init_scheduler()
113 + jobs = scheduler.get_jobs()
114 + logger.info(f"jobs: {jobs}")
115 + for job in jobs:
116 + if job.id == job_id:
117 + job.reschedule(trigger="interval", minutes=time_interval)
118 + job_metadata = await session.execute(select(JobMetadata).filter_by(job_id=job_id))
119 + job_metadata = job_metadata.scalars().first()
120 + job_metadata.time_interval = time_interval
121 + await session.commit()
122 + return {"success": True, "message": "Job updated successfully"}
123 + return {"success": False, "message": "Job not found"}
124 +
125 +@scheduler_router.delete(
126 + "/{job_id}",
127 + description="Delete a job",
128 +)
129 +async def delete_job(job_id: str):
130 + """
131 + Provisions Office365 integration for a customer.
132 +
133 + Args:
134 + provision_office365_request (ProvisionOffice365Request): The request object containing the necessary information for provisioning.
135 + session (AsyncSession, optional): The database session. Defaults to Depends(get_db).
136 +
137 + Returns:
138 + ProvisionOffice365Response: The response object containing the result of the provisioning.
139 + """
140 + scheduler = init_scheduler()
141 + jobs = scheduler.get_jobs()
142 + logger.info(f"jobs: {jobs}")
143 + for job in jobs:
144 + if job.id == job_id:
145 + job.remove()
146 + return {"success": True, "message": "Job deleted successfully"}
147 + return {"success": False, "message": "Job not found"}
backend/app/schedulers/scheduler.py
+1
@@ -192,3 +192,4 @@ async def add_job_metadata(create_scheduler_request: CreateSchedulerRequest):
192 job_metadata.time_interval = create_scheduler_request.time_interval
193 job_metadata.enabled = True
194 session.commit()
195 +
backend/app/schedulers/schema/scheduler.py new
+11
@@ -0,0 +1,11 @@
1 +from typing import List
2 +from pydantic import BaseModel
3 +
4 +class Job(BaseModel):
5 + id: str
6 + name: str
7 +
8 +class JobsResponse(BaseModel):
9 + jobs: List[Job]
10 + success: bool
11 + message: str
backend/app/utils.py
+41
@@ -662,3 +662,44 @@ async def verify_wazuh_worker_provisioning_connection(connector_name: str) -> st
662 logger.error("No Wazuh Worker Provisioning connector found in the database")
663 return None
664 return await verify_wazuh_worker_provisioning_healtcheck(attributes)
665 +
666 +
667 +################## ! Alert Creation Provisioning App ! ##################
668 +################## ! https://github.com/socfortress/Customer-Provisioning-Alert ! ##################
669 +async def verify_alert_creation_provisioning_healtcheck(attributes: Dict[str, Any]) -> Dict[str, Any]:
670 + """
671 + Verifies the connection to Alert Creation Provisioning service.
672 +
673 + Returns:
674 + dict: A dictionary containing 'connectionSuccessful' status.
675 + """
676 + logger.info(f"Verifying the Alert Creation provisioning connection to {attributes['connector_url']}")
677 +
678 + try:
679 + wazuh_worker_provisioning_healthcheck = requests.get(
680 + f"{attributes['connector_url']}/provision_alert/healthcheck",
681 + verify=False,
682 + )
683 +
684 + if wazuh_worker_provisioning_healthcheck.status_code == 200:
685 + return {"connectionSuccessful": True, "message": "Alert Creation Provisioning healthcheck successful"}
686 + else:
687 + logger.error(f"Connection to {attributes['connector_url']} failed with error: {wazuh_worker_provisioning_healthcheck.text}")
688 +
689 + return {"connectionSuccessful": False, "message": f"Connection to {attributes['connector_url']} failed"}
690 + except Exception as e:
691 + logger.error(f"Connection to {attributes['connector_url']} failed with error: {e}")
692 +
693 + return {"connectionSuccessful": False, "message": f"Connection to {attributes['connector_url']} failed with error."}
694 +
695 +
696 +async def verify_alert_creation_provisioning_connection(connector_name: str) -> str:
697 + """
698 + Returns the status of the connection to Alert Creation Provisioning service.
699 + """
700 + async with get_db_session() as session: # This will correctly enter the context manager
701 + attributes = await get_connector_info_from_db(connector_name, session)
702 + if attributes is None:
703 + logger.error("No Alert Creation Provisioning connector found in the database")
704 + return None
705 + return await verify_alert_creation_provisioning_healtcheck(attributes)
backend/copilot.py
+2
@@ -46,6 +46,7 @@ from app.routers import log_shipper_test
46 from app.routers import integrations
47 from app.routers import mimecast
48 from app.routers import office365
49 +from app.routers import scheduler
50 from app.schedulers.scheduler import init_scheduler
51
52 auth_handler = AuthHandler()
@@ -104,6 +105,7 @@ app.include_router(log_shipper_test.router)
105 app.include_router(integrations.router)
106 app.include_router(office365.router)
107 app.include_router(mimecast.router)
108 +app.include_router(scheduler.router)
109
110 @app.on_event("startup")
111 async def init_db():
package-lock.json
+498 -380
@@ -46,19 +46,23 @@
46 "devDependencies": {
47 "@clack/prompts": "^0.7.0",
48 "@iconify/vue": "^4.1.1",
49 + "@rushstack/eslint-patch": "^1.7.2",
50 "@tsconfig/node18": "^18.2.2",
51 "@types/bytes": "^3.1.4",
52 "@types/fs-extra": "^11.0.4",
53 + "@types/highlight.js": "^10.1.0",
54 "@types/inquirer": "^9.0.7",
55 "@types/jsdom": "^21.1.6",
56 "@types/lodash": "^4.14.202",
55 - "@types/node": "^20.11.6",
57 + "@types/markdown-it": "^13.0.7",
58 + "@types/markdown-it-highlightjs": "^3.3.4",
59 + "@types/node": "^20.11.7",
60 "@types/validator": "^13.11.8",
61 "@vitejs/plugin-vue": "^5.0.3",
62 "@vitejs/plugin-vue-jsx": "^3.1.0",
63 "@vue/eslint-config-prettier": "^9.0.0",
64 "@vue/eslint-config-typescript": "^12.0.0",
61 - "@vue/test-utils": "^2.4.3",
65 + "@vue/test-utils": "^2.4.4",
66 "@vue/tsconfig": "^0.5.1",
67 "autoprefixer": "^10.4.17",
68 "cypress": "^13.6.3",
@@ -78,13 +82,13 @@
82 "tailwindcss": "^3.4.1",
83 "taze": "^0.13.1",
84 "ts-node": "^10.9.2",
81 - "typescript": "~5.2.2",
85 + "typescript": "~5.3.3",
86 "unplugin-vue-components": "^0.26.0",
87 "vite": "^5.0.12",
88 "vite-bundle-analyzer": "^0.7.0",
89 "vite-bundle-visualizer": "^1.0.0",
90 "vite-svg-loader": "^5.1.0",
87 - "vitest": "^1.2.1",
91 + "vitest": "^1.2.2",
92 "vue-tsc": "^1.8.27"
93 },
94 "engines": {
@@ -178,9 +182,9 @@
182 }
183 },
184 "node_modules/@babel/core": {
181 - "version": "7.23.7",
182 - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz",
183 - "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==",
185 + "version": "7.23.9",
186 + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz",
187 + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==",
188 "dev": true,
189 "dependencies": {
190 "@ampproject/remapping": "^2.2.0",
@@ -188,11 +192,11 @@
192 "@babel/generator": "^7.23.6",
193 "@babel/helper-compilation-targets": "^7.23.6",
194 "@babel/helper-module-transforms": "^7.23.3",
191 - "@babel/helpers": "^7.23.7",
192 - "@babel/parser": "^7.23.6",
193 - "@babel/template": "^7.22.15",
194 - "@babel/traverse": "^7.23.7",
195 - "@babel/types": "^7.23.6",
195 + "@babel/helpers": "^7.23.9",
196 + "@babel/parser": "^7.23.9",
197 + "@babel/template": "^7.23.9",
198 + "@babel/traverse": "^7.23.9",
199 + "@babel/types": "^7.23.9",
200 "convert-source-map": "^2.0.0",
201 "debug": "^4.1.0",
202 "gensync": "^1.0.0-beta.2",
@@ -269,9 +273,9 @@
273 }
274 },
275 "node_modules/@babel/helper-create-class-features-plugin": {
272 - "version": "7.23.7",
273 - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz",
274 - "integrity": "sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==",
276 + "version": "7.23.9",
277 + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.9.tgz",
278 + "integrity": "sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw==",
279 "dev": true,
280 "dependencies": {
281 "@babel/helper-annotate-as-pure": "^7.22.5",
@@ -479,14 +483,14 @@
483 }
484 },
485 "node_modules/@babel/helpers": {
482 - "version": "7.23.8",
483 - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz",
484 - "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==",
486 + "version": "7.23.9",
487 + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz",
488 + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==",
489 "dev": true,
490 "dependencies": {
487 - "@babel/template": "^7.22.15",
488 - "@babel/traverse": "^7.23.7",
489 - "@babel/types": "^7.23.6"
491 + "@babel/template": "^7.23.9",
492 + "@babel/traverse": "^7.23.9",
493 + "@babel/types": "^7.23.9"
494 },
495 "engines": {
496 "node": ">=6.9.0"
@@ -507,9 +511,9 @@
511 }
512 },
513 "node_modules/@babel/parser": {
510 - "version": "7.23.6",
511 - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
512 - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
514 + "version": "7.23.9",
515 + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz",
516 + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==",
517 "bin": {
518 "parser": "bin/babel-parser.js"
519 },
@@ -566,9 +570,9 @@
570 }
571 },
572 "node_modules/@babel/runtime": {
569 - "version": "7.23.8",
570 - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz",
571 - "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==",
573 + "version": "7.23.9",
574 + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz",
575 + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==",
576 "dependencies": {
577 "regenerator-runtime": "^0.14.0"
578 },
@@ -577,23 +581,23 @@
581 }
582 },
583 "node_modules/@babel/template": {
580 - "version": "7.22.15",
581 - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
582 - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
584 + "version": "7.23.9",
585 + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz",
586 + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==",
587 "dev": true,
588 "dependencies": {
585 - "@babel/code-frame": "^7.22.13",
586 - "@babel/parser": "^7.22.15",
587 - "@babel/types": "^7.22.15"
589 + "@babel/code-frame": "^7.23.5",
590 + "@babel/parser": "^7.23.9",
591 + "@babel/types": "^7.23.9"
592 },
593 "engines": {
594 "node": ">=6.9.0"
595 }
596 },
597 "node_modules/@babel/traverse": {
594 - "version": "7.23.7",
595 - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz",
596 - "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==",
598 + "version": "7.23.9",
599 + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz",
600 + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==",
601 "dev": true,
602 "dependencies": {
603 "@babel/code-frame": "^7.23.5",
@@ -602,8 +606,8 @@
606 "@babel/helper-function-name": "^7.23.0",
607 "@babel/helper-hoist-variables": "^7.22.5",
608 "@babel/helper-split-export-declaration": "^7.22.6",
605 - "@babel/parser": "^7.23.6",
606 - "@babel/types": "^7.23.6",
609 + "@babel/parser": "^7.23.9",
610 + "@babel/types": "^7.23.9",
611 "debug": "^4.3.1",
612 "globals": "^11.1.0"
613 },
@@ -621,9 +625,9 @@
625 }
626 },
627 "node_modules/@babel/types": {
624 - "version": "7.23.6",
625 - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
626 - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
628 + "version": "7.23.9",
629 + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz",
630 + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==",
631 "dev": true,
632 "dependencies": {
633 "@babel/helper-string-parser": "^7.23.4",
@@ -661,6 +665,7 @@
665 },
666 "node_modules/@clack/prompts/node_modules/is-unicode-supported": {
667 "version": "1.3.0",
668 + "dev": true,
669 "inBundle": true,
670 "license": "MIT",
671 "engines": {
@@ -772,9 +777,9 @@
777 "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
778 },
779 "node_modules/@esbuild/aix-ppc64": {
775 - "version": "0.19.11",
776 - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz",
777 - "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==",
780 + "version": "0.19.12",
781 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz",
782 + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==",
783 "cpu": [
784 "ppc64"
785 ],
@@ -788,9 +793,9 @@
793 }
794 },
795 "node_modules/@esbuild/android-arm": {
791 - "version": "0.19.11",
792 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz",
793 - "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==",
796 + "version": "0.19.12",
797 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz",
798 + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==",
799 "cpu": [
800 "arm"
801 ],
@@ -804,9 +809,9 @@
809 }
810 },
811 "node_modules/@esbuild/android-arm64": {
807 - "version": "0.19.11",
808 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz",
809 - "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==",
812 + "version": "0.19.12",
813 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz",
814 + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==",
815 "cpu": [
816 "arm64"
817 ],
@@ -820,9 +825,9 @@
825 }
826 },
827 "node_modules/@esbuild/android-x64": {
823 - "version": "0.19.11",
824 - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz",
825 - "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==",
828 + "version": "0.19.12",
829 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz",
830 + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==",
831 "cpu": [
832 "x64"
833 ],
@@ -836,9 +841,9 @@
841 }
842 },
843 "node_modules/@esbuild/darwin-arm64": {
839 - "version": "0.19.11",
840 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz",
841 - "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==",
844 + "version": "0.19.12",
845 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz",
846 + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==",
847 "cpu": [
848 "arm64"
849 ],
@@ -852,9 +857,9 @@
857 }
858 },
859 "node_modules/@esbuild/darwin-x64": {
855 - "version": "0.19.11",
856 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz",
857 - "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==",
860 + "version": "0.19.12",
861 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz",
862 + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==",
863 "cpu": [
864 "x64"
865 ],
@@ -868,9 +873,9 @@
873 }
874 },
875 "node_modules/@esbuild/freebsd-arm64": {
871 - "version": "0.19.11",
872 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz",
873 - "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==",
876 + "version": "0.19.12",
877 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz",
878 + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==",
879 "cpu": [
880 "arm64"
881 ],
@@ -884,9 +889,9 @@
889 }
890 },
891 "node_modules/@esbuild/freebsd-x64": {
887 - "version": "0.19.11",
888 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz",
889 - "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==",
892 + "version": "0.19.12",
893 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz",
894 + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==",
895 "cpu": [
896 "x64"
897 ],
@@ -900,9 +905,9 @@
905 }
906 },
907 "node_modules/@esbuild/linux-arm": {
903 - "version": "0.19.11",
904 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz",
905 - "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==",
908 + "version": "0.19.12",
909 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz",
910 + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==",
911 "cpu": [
912 "arm"
913 ],
@@ -916,9 +921,9 @@
921 }
922 },
923 "node_modules/@esbuild/linux-arm64": {
919 - "version": "0.19.11",
920 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz",
921 - "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==",
924 + "version": "0.19.12",
925 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz",
926 + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==",
927 "cpu": [
928 "arm64"
929 ],
@@ -932,9 +937,9 @@
937 }
938 },
939 "node_modules/@esbuild/linux-ia32": {
935 - "version": "0.19.11",
936 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz",
937 - "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==",
940 + "version": "0.19.12",
941 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz",
942 + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==",
943 "cpu": [
944 "ia32"
945 ],
@@ -948,9 +953,9 @@
953 }
954 },
955 "node_modules/@esbuild/linux-loong64": {
951 - "version": "0.19.11",
952 - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz",
953 - "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==",
956 + "version": "0.19.12",
957 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz",
958 + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==",
959 "cpu": [
960 "loong64"
961 ],
@@ -964,9 +969,9 @@
969 }
970 },
971 "node_modules/@esbuild/linux-mips64el": {
967 - "version": "0.19.11",
968 - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz",
969 - "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==",
972 + "version": "0.19.12",
973 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz",
974 + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==",
975 "cpu": [
976 "mips64el"
977 ],
@@ -980,9 +985,9 @@
985 }
986 },
987 "node_modules/@esbuild/linux-ppc64": {
983 - "version": "0.19.11",
984 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz",
985 - "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==",
988 + "version": "0.19.12",
989 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz",
990 + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==",
991 "cpu": [
992 "ppc64"
993 ],
@@ -996,9 +1001,9 @@
1001 }
1002 },
1003 "node_modules/@esbuild/linux-riscv64": {
999 - "version": "0.19.11",
1000 - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz",
1001 - "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==",
1004 + "version": "0.19.12",
1005 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz",
1006 + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==",
1007 "cpu": [
1008 "riscv64"
1009 ],
@@ -1012,9 +1017,9 @@
1017 }
1018 },
1019 "node_modules/@esbuild/linux-s390x": {
1015 - "version": "0.19.11",
1016 - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz",
1017 - "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==",
1020 + "version": "0.19.12",
1021 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz",
1022 + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==",
1023 "cpu": [
1024 "s390x"
1025 ],
@@ -1028,9 +1033,9 @@
1033 }
1034 },
1035 "node_modules/@esbuild/linux-x64": {
1031 - "version": "0.19.11",
1032 - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz",
1033 - "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==",
1036 + "version": "0.19.12",
1037 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz",
1038 + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==",
1039 "cpu": [
1040 "x64"
1041 ],
@@ -1044,9 +1049,9 @@
1049 }
1050 },
1051 "node_modules/@esbuild/netbsd-x64": {
1047 - "version": "0.19.11",
1048 - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz",
1049 - "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==",
1052 + "version": "0.19.12",
1053 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz",
1054 + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==",
1055 "cpu": [
1056 "x64"
1057 ],
@@ -1060,9 +1065,9 @@
1065 }
1066 },
1067 "node_modules/@esbuild/openbsd-x64": {
1063 - "version": "0.19.11",
1064 - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz",
1065 - "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==",
1068 + "version": "0.19.12",
1069 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz",
1070 + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==",
1071 "cpu": [
1072 "x64"
1073 ],
@@ -1076,9 +1081,9 @@
1081 }
1082 },
1083 "node_modules/@esbuild/sunos-x64": {
1079 - "version": "0.19.11",
1080 - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz",
1081 - "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==",
1084 + "version": "0.19.12",
1085 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz",
1086 + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==",
1087 "cpu": [
1088 "x64"
1089 ],
@@ -1092,9 +1097,9 @@
1097 }
1098 },
1099 "node_modules/@esbuild/win32-arm64": {
1095 - "version": "0.19.11",
1096 - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz",
1097 - "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==",
1100 + "version": "0.19.12",
1101 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz",
1102 + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==",
1103 "cpu": [
1104 "arm64"
1105 ],
@@ -1108,9 +1113,9 @@
1113 }
1114 },
1115 "node_modules/@esbuild/win32-ia32": {
1111 - "version": "0.19.11",
1112 - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz",
1113 - "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==",
1116 + "version": "0.19.12",
1117 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz",
1118 + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==",
1119 "cpu": [
1120 "ia32"
1121 ],
@@ -1124,9 +1129,9 @@
1129 }
1130 },
1131 "node_modules/@esbuild/win32-x64": {
1127 - "version": "0.19.11",
1128 - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz",
1129 - "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==",
1132 + "version": "0.19.12",
1133 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz",
1134 + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==",
1135 "cpu": [
1136 "x64"
1137 ],
@@ -1512,9 +1517,9 @@
1517 "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
1518 },
1519 "node_modules/@jridgewell/trace-mapping": {
1515 - "version": "0.3.21",
1516 - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.21.tgz",
1517 - "integrity": "sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g==",
1520 + "version": "0.3.22",
1521 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
1522 + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
1523 "dev": true,
1524 "dependencies": {
1525 "@jridgewell/resolve-uri": "^3.1.0",
@@ -1591,9 +1596,9 @@
1596 }
1597 },
1598 "node_modules/@npmcli/agent/node_modules/lru-cache": {
1594 - "version": "10.1.0",
1595 - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
1596 - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
1599 + "version": "10.2.0",
1600 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
1601 + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
1602 "dev": true,
1603 "engines": {
1604 "node": "14 || >=16.14"
@@ -1683,9 +1688,9 @@
1688 }
1689 },
1690 "node_modules/@npmcli/git/node_modules/lru-cache": {
1686 - "version": "10.1.0",
1687 - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
1688 - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
1691 + "version": "10.2.0",
1692 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
1693 + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
1694 "dev": true,
1695 "engines": {
1696 "node": "14 || >=16.14"
@@ -1755,6 +1760,60 @@
1760 "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
1761 }
1762 },
1763 + "node_modules/@npmcli/package-json": {
1764 + "version": "5.0.0",
1765 + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.0.0.tgz",
1766 + "integrity": "sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g==",
1767 + "dev": true,
1768 + "dependencies": {
1769 + "@npmcli/git": "^5.0.0",
1770 + "glob": "^10.2.2",
1771 + "hosted-git-info": "^7.0.0",
1772 + "json-parse-even-better-errors": "^3.0.0",
1773 + "normalize-package-data": "^6.0.0",
1774 + "proc-log": "^3.0.0",
1775 + "semver": "^7.5.3"
1776 + },
1777 + "engines": {
1778 + "node": "^16.14.0 || >=18.0.0"
1779 + }
1780 + },
1781 + "node_modules/@npmcli/package-json/node_modules/hosted-git-info": {
1782 + "version": "7.0.1",
1783 + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz",
1784 + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==",
1785 + "dev": true,
1786 + "dependencies": {
1787 + "lru-cache": "^10.0.1"
1788 + },
1789 + "engines": {
1790 + "node": "^16.14.0 || >=18.0.0"
1791 + }
1792 + },
1793 + "node_modules/@npmcli/package-json/node_modules/lru-cache": {
1794 + "version": "10.2.0",
1795 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
1796 + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
1797 + "dev": true,
1798 + "engines": {
1799 + "node": "14 || >=16.14"
1800 + }
1801 + },
1802 + "node_modules/@npmcli/package-json/node_modules/normalize-package-data": {
1803 + "version": "6.0.0",
1804 + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz",
1805 + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==",
1806 + "dev": true,
1807 + "dependencies": {
1808 + "hosted-git-info": "^7.0.0",
1809 + "is-core-module": "^2.8.1",
1810 + "semver": "^7.3.5",
1811 + "validate-npm-package-license": "^3.0.4"
1812 + },
1813 + "engines": {
1814 + "node": "^16.14.0 || >=18.0.0"
1815 + }
1816 + },
1817 "node_modules/@npmcli/promise-spawn": {
1818 "version": "7.0.1",
1819 "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.1.tgz",
@@ -1792,15 +1851,15 @@
1851 }
1852 },
1853 "node_modules/@npmcli/run-script": {
1795 - "version": "7.0.3",
1796 - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.3.tgz",
1797 - "integrity": "sha512-ZMWGLHpzMq3rBGIwPyeaoaleaLMvrBrH8nugHxTi5ACkJZXTxXPtVuEH91ifgtss5hUwJQ2VDnzDBWPmz78rvg==",
1854 + "version": "7.0.4",
1855 + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.4.tgz",
1856 + "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==",
1857 "dev": true,
1858 "dependencies": {
1859 "@npmcli/node-gyp": "^3.0.0",
1860 + "@npmcli/package-json": "^5.0.0",
1861 "@npmcli/promise-spawn": "^7.0.0",
1862 "node-gyp": "^10.0.0",
1803 - "read-package-json-fast": "^3.0.0",
1863 "which": "^4.0.0"
1864 },
1865 "engines": {
@@ -1896,9 +1955,9 @@
1955 }
1956 },
1957 "node_modules/@rollup/rollup-android-arm-eabi": {
1899 - "version": "4.9.5",
1900 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.5.tgz",
1901 - "integrity": "sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA==",
1958 + "version": "4.9.6",
1959 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz",
1960 + "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==",
1961 "cpu": [
1962 "arm"
1963 ],
@@ -1909,9 +1968,9 @@
1968 ]
1969 },
1970 "node_modules/@rollup/rollup-android-arm64": {
1912 - "version": "4.9.5",
1913 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.5.tgz",
1914 - "integrity": "sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg==",
1971 + "version": "4.9.6",
1972 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz",
1973 + "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==",
1974 "cpu": [
1975 "arm64"
1976 ],
@@ -1922,9 +1981,9 @@
1981 ]
1982 },
1983 "node_modules/@rollup/rollup-darwin-arm64": {
1925 - "version": "4.9.5",
1926 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.5.tgz",
1927 - "integrity": "sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w==",
1984 + "version": "4.9.6",
1985 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz",
1986 + "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==",
1987 "cpu": [
1988 "arm64"
1989 ],
@@ -1935,9 +1994,9 @@
1994 ]
1995 },
1996 "node_modules/@rollup/rollup-darwin-x64": {
1938 - "version": "4.9.5",
1939 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.5.tgz",
1940 - "integrity": "sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA==",
1997 + "version": "4.9.6",
1998 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz",
1999 + "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==",
2000 "cpu": [
2001 "x64"
2002 ],
@@ -1948,9 +2007,9 @@
2007 ]
2008 },
2009 "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
1951 - "version": "4.9.5",
1952 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.5.tgz",
1953 - "integrity": "sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g==",
2010 + "version": "4.9.6",
2011 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz",
2012 + "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==",
2013 "cpu": [
2014 "arm"
2015 ],
@@ -1961,9 +2020,9 @@
2020 ]
2021 },
2022 "node_modules/@rollup/rollup-linux-arm64-gnu": {
1964 - "version": "4.9.5",
1965 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.5.tgz",
1966 - "integrity": "sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA==",
2023 + "version": "4.9.6",
2024 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz",
2025 + "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==",
2026 "cpu": [
2027 "arm64"
2028 ],
@@ -1974,9 +2033,9 @@
2033 ]
2034 },
2035 "node_modules/@rollup/rollup-linux-arm64-musl": {
1977 - "version": "4.9.5",
1978 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.5.tgz",
1979 - "integrity": "sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ==",
2036 + "version": "4.9.6",
2037 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz",
2038 + "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==",
2039 "cpu": [
2040 "arm64"
2041 ],
@@ -1987,9 +2046,9 @@
2046 ]
2047 },
2048 "node_modules/@rollup/rollup-linux-riscv64-gnu": {
1990 - "version": "4.9.5",
1991 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.5.tgz",
1992 - "integrity": "sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA==",
2049 + "version": "4.9.6",
2050 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz",
2051 + "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==",
2052 "cpu": [
2053 "riscv64"
2054 ],
@@ -2000,9 +2059,9 @@
2059 ]
2060 },
2061 "node_modules/@rollup/rollup-linux-x64-gnu": {
2003 - "version": "4.9.5",
2004 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.5.tgz",
2005 - "integrity": "sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==",
2062 + "version": "4.9.6",
2063 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz",
2064 + "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==",
2065 "cpu": [
2066 "x64"
2067 ],
@@ -2013,9 +2072,9 @@
2072 ]
2073 },
2074 "node_modules/@rollup/rollup-linux-x64-musl": {
2016 - "version": "4.9.5",
2017 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.5.tgz",
2018 - "integrity": "sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg==",
2075 + "version": "4.9.6",
2076 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz",
2077 + "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==",
2078 "cpu": [
2079 "x64"
2080 ],
@@ -2026,9 +2085,9 @@
2085 ]
2086 },
2087 "node_modules/@rollup/rollup-win32-arm64-msvc": {
2029 - "version": "4.9.5",
2030 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.5.tgz",
2031 - "integrity": "sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ==",
2088 + "version": "4.9.6",
2089 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz",
2090 + "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==",
2091 "cpu": [
2092 "arm64"
2093 ],
@@ -2039,9 +2098,9 @@
2098 ]
2099 },
2100 "node_modules/@rollup/rollup-win32-ia32-msvc": {
2042 - "version": "4.9.5",
2043 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.5.tgz",
2044 - "integrity": "sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA==",
2101 + "version": "4.9.6",
2102 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz",
2103 + "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==",
2104 "cpu": [
2105 "ia32"
2106 ],
@@ -2052,9 +2111,9 @@
2111 ]
2112 },
2113 "node_modules/@rollup/rollup-win32-x64-msvc": {
2055 - "version": "4.9.5",
2056 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.5.tgz",
2057 - "integrity": "sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ==",
2114 + "version": "4.9.6",
2115 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz",
2116 + "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==",
2117 "cpu": [
2118 "x64"
2119 ],
@@ -2064,6 +2123,12 @@
2123 "win32"
2124 ]
2125 },
2126 + "node_modules/@rushstack/eslint-patch": {
2127 + "version": "1.7.2",
2128 + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz",
2129 + "integrity": "sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==",
2130 + "dev": true
2131 + },
2132 "node_modules/@sideway/address": {
2133 "version": "4.1.4",
2134 "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
@@ -2246,6 +2311,16 @@
2311 "@types/node": "*"
2312 }
2313 },
2314 + "node_modules/@types/highlight.js": {
2315 + "version": "10.1.0",
2316 + "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-10.1.0.tgz",
2317 + "integrity": "sha512-77hF2dGBsOgnvZll1vymYiNUtqJ8cJfXPD6GG/2M0aLRc29PkvB7Au6sIDjIEFcSICBhCh2+Pyq6WSRS7LUm6A==",
2318 + "deprecated": "This is a stub types definition. highlight.js provides its own type definitions, so you do not need this installed.",
2319 + "dev": true,
2320 + "dependencies": {
2321 + "highlight.js": "*"
2322 + }
2323 + },
2324 "node_modules/@types/inquirer": {
2325 "version": "9.0.7",
2326 "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-9.0.7.tgz",
@@ -2286,6 +2361,12 @@
2361 "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz",
2362 "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ=="
2363 },
2364 + "node_modules/@types/linkify-it": {
2365 + "version": "3.0.5",
2366 + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz",
2367 + "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==",
2368 + "dev": true
2369 + },
2370 "node_modules/@types/lodash": {
2371 "version": "4.14.202",
2372 "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz",
@@ -2299,10 +2380,36 @@
2380 "@types/lodash": "*"
2381 }
2382 },
2383 + "node_modules/@types/markdown-it": {
2384 + "version": "13.0.7",
2385 + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz",
2386 + "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==",
2387 + "dev": true,
2388 + "dependencies": {
2389 + "@types/linkify-it": "*",
2390 + "@types/mdurl": "*"
2391 + }
2392 + },
2393 + "node_modules/@types/markdown-it-highlightjs": {
2394 + "version": "3.3.4",
2395 + "resolved": "https://registry.npmjs.org/@types/markdown-it-highlightjs/-/markdown-it-highlightjs-3.3.4.tgz",
2396 + "integrity": "sha512-hERRPIvWifT0006DIjg1IvuoBzlksk97kPmWjynejzTW9AISS92b/mpu3PFkAWlXYNFC52RqdhNKjdJZ6GC4wg==",
2397 + "dev": true,
2398 + "dependencies": {
2399 + "@types/markdown-it": "*",
2400 + "highlight.js": "^10.1.0"
2401 + }
2402 + },
2403 + "node_modules/@types/mdurl": {
2404 + "version": "1.0.5",
2405 + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz",
2406 + "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==",
2407 + "dev": true
2408 + },
2409 "node_modules/@types/node": {
2303 - "version": "20.11.6",
2304 - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.6.tgz",
2305 - "integrity": "sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q==",
2410 + "version": "20.11.7",
2411 + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.7.tgz",
2412 + "integrity": "sha512-GPmeN1C3XAyV5uybAf4cMLWT9fDWcmQhZVtMFu7OR32WjrqGG+Wnk2V1d0bmtUyE/Zy1QJ9BxyiTih9z8Oks8A==",
2413 "dev": true,
2414 "dependencies": {
2415 "undici-types": "~5.26.4"
@@ -2362,15 +2469,15 @@
2469 }
2470 },
2471 "node_modules/@typescript-eslint/eslint-plugin": {
2365 - "version": "6.19.0",
2366 - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.0.tgz",
2367 - "integrity": "sha512-DUCUkQNklCQYnrBSSikjVChdc84/vMPDQSgJTHBZ64G9bA9w0Crc0rd2diujKbTdp6w2J47qkeHQLoi0rpLCdg==",
2472 + "version": "6.19.1",
2473 + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.1.tgz",
2474 + "integrity": "sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==",
2475 "dependencies": {
2476 "@eslint-community/regexpp": "^4.5.1",
2370 - "@typescript-eslint/scope-manager": "6.19.0",
2371 - "@typescript-eslint/type-utils": "6.19.0",
2372 - "@typescript-eslint/utils": "6.19.0",
2373 - "@typescript-eslint/visitor-keys": "6.19.0",
2477 + "@typescript-eslint/scope-manager": "6.19.1",
2478 + "@typescript-eslint/type-utils": "6.19.1",
2479 + "@typescript-eslint/utils": "6.19.1",
2480 + "@typescript-eslint/visitor-keys": "6.19.1",
2481 "debug": "^4.3.4",
2482 "graphemer": "^1.4.0",
2483 "ignore": "^5.2.4",
@@ -2396,14 +2503,14 @@
2503 }
2504 },
2505 "node_modules/@typescript-eslint/parser": {
2399 - "version": "6.19.0",
2400 - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.0.tgz",
2401 - "integrity": "sha512-1DyBLG5SH7PYCd00QlroiW60YJ4rWMuUGa/JBV0iZuqi4l4IK3twKPq5ZkEebmGqRjXWVgsUzfd3+nZveewgow==",
2402 - "dependencies": {
2403 - "@typescript-eslint/scope-manager": "6.19.0",
2404 - "@typescript-eslint/types": "6.19.0",
2405 - "@typescript-eslint/typescript-estree": "6.19.0",
2406 - "@typescript-eslint/visitor-keys": "6.19.0",
2506 + "version": "6.19.1",
2507 + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.1.tgz",
2508 + "integrity": "sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ==",
2509 + "dependencies": {
2510 + "@typescript-eslint/scope-manager": "6.19.1",
2511 + "@typescript-eslint/types": "6.19.1",
2512 + "@typescript-eslint/typescript-estree": "6.19.1",
2513 + "@typescript-eslint/visitor-keys": "6.19.1",
2514 "debug": "^4.3.4"
2515 },
2516 "engines": {
@@ -2423,12 +2530,12 @@
2530 }
2531 },
2532 "node_modules/@typescript-eslint/scope-manager": {
2426 - "version": "6.19.0",
2427 - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.0.tgz",
2428 - "integrity": "sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==",
2533 + "version": "6.19.1",
2534 + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz",
2535 + "integrity": "sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==",
2536 "dependencies": {
2430 - "@typescript-eslint/types": "6.19.0",
2431 - "@typescript-eslint/visitor-keys": "6.19.0"
2537 + "@typescript-eslint/types": "6.19.1",
2538 + "@typescript-eslint/visitor-keys": "6.19.1"
2539 },
2540 "engines": {
2541 "node": "^16.0.0 || >=18.0.0"
@@ -2439,12 +2546,12 @@
2546 }
2547 },
2548 "node_modules/@typescript-eslint/type-utils": {
2442 - "version": "6.19.0",
2443 - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.0.tgz",
2444 - "integrity": "sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w==",
2549 + "version": "6.19.1",
2550 + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.1.tgz",
2551 + "integrity": "sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==",
2552 "dependencies": {
2446 - "@typescript-eslint/typescript-estree": "6.19.0",
2447 - "@typescript-eslint/utils": "6.19.0",
2553 + "@typescript-eslint/typescript-estree": "6.19.1",
2554 + "@typescript-eslint/utils": "6.19.1",
2555 "debug": "^4.3.4",
2556 "ts-api-utils": "^1.0.1"
2557 },
@@ -2465,9 +2572,9 @@
2572 }
2573 },
2574 "node_modules/@typescript-eslint/types": {
2468 - "version": "6.19.0",
2469 - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.0.tgz",
2470 - "integrity": "sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==",
2575 + "version": "6.19.1",
2576 + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz",
2577 + "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==",
2578 "engines": {
2579 "node": "^16.0.0 || >=18.0.0"
2580 },
@@ -2477,12 +2584,12 @@
2584 }
2585 },
2586 "node_modules/@typescript-eslint/typescript-estree": {
2480 - "version": "6.19.0",
2481 - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.0.tgz",
2482 - "integrity": "sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==",
2587 + "version": "6.19.1",
2588 + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz",
2589 + "integrity": "sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==",
2590 "dependencies": {
2484 - "@typescript-eslint/types": "6.19.0",
2485 - "@typescript-eslint/visitor-keys": "6.19.0",
2591 + "@typescript-eslint/types": "6.19.1",
2592 + "@typescript-eslint/visitor-keys": "6.19.1",
2593 "debug": "^4.3.4",
2594 "globby": "^11.1.0",
2595 "is-glob": "^4.0.3",
@@ -2504,16 +2611,16 @@
2611 }
2612 },
2613 "node_modules/@typescript-eslint/utils": {
2507 - "version": "6.19.0",
2508 - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.0.tgz",
2509 - "integrity": "sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw==",
2614 + "version": "6.19.1",
2615 + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.1.tgz",
2616 + "integrity": "sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==",
2617 "dependencies": {
2618 "@eslint-community/eslint-utils": "^4.4.0",
2619 "@types/json-schema": "^7.0.12",
2620 "@types/semver": "^7.5.0",
2514 - "@typescript-eslint/scope-manager": "6.19.0",
2515 - "@typescript-eslint/types": "6.19.0",
2516 - "@typescript-eslint/typescript-estree": "6.19.0",
2621 + "@typescript-eslint/scope-manager": "6.19.1",
2622 + "@typescript-eslint/types": "6.19.1",
2623 + "@typescript-eslint/typescript-estree": "6.19.1",
2624 "semver": "^7.5.4"
2625 },
2626 "engines": {
@@ -2528,11 +2635,11 @@
2635 }
2636 },
2637 "node_modules/@typescript-eslint/visitor-keys": {
2531 - "version": "6.19.0",
2532 - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.0.tgz",
2533 - "integrity": "sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==",
2638 + "version": "6.19.1",
2639 + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz",
2640 + "integrity": "sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==",
2641 "dependencies": {
2535 - "@typescript-eslint/types": "6.19.0",
2642 + "@typescript-eslint/types": "6.19.1",
2643 "eslint-visitor-keys": "^3.4.1"
2644 },
2645 "engines": {
@@ -2635,13 +2742,13 @@
2742 }
2743 },
2744 "node_modules/@vitest/expect": {
2638 - "version": "1.2.1",
2639 - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.2.1.tgz",
2640 - "integrity": "sha512-/bqGXcHfyKgFWYwIgFr1QYDaR9e64pRKxgBNWNXPefPFRhgm+K3+a/dS0cUGEreWngets3dlr8w8SBRw2fCfFQ==",
2745 + "version": "1.2.2",
2746 + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.2.2.tgz",
2747 + "integrity": "sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==",
2748 "dev": true,
2749 "dependencies": {
2643 - "@vitest/spy": "1.2.1",
2644 - "@vitest/utils": "1.2.1",
2750 + "@vitest/spy": "1.2.2",
2751 + "@vitest/utils": "1.2.2",
2752 "chai": "^4.3.10"
2753 },
2754 "funding": {
@@ -2649,12 +2756,12 @@
2756 }
2757 },
2758 "node_modules/@vitest/runner": {
2652 - "version": "1.2.1",
2653 - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.2.1.tgz",
2654 - "integrity": "sha512-zc2dP5LQpzNzbpaBt7OeYAvmIsRS1KpZQw4G3WM/yqSV1cQKNKwLGmnm79GyZZjMhQGlRcSFMImLjZaUQvNVZQ==",
2759 + "version": "1.2.2",
2760 + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.2.2.tgz",
2761 + "integrity": "sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==",
2762 "dev": true,
2763 "dependencies": {
2657 - "@vitest/utils": "1.2.1",
2764 + "@vitest/utils": "1.2.2",
2765 "p-limit": "^5.0.0",
2766 "pathe": "^1.1.1"
2767 },
@@ -2690,9 +2797,9 @@
2797 }
2798 },
2799 "node_modules/@vitest/snapshot": {
2693 - "version": "1.2.1",
2694 - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.2.1.tgz",
2695 - "integrity": "sha512-Tmp/IcYEemKaqAYCS08sh0vORLJkMr0NRV76Gl8sHGxXT5151cITJCET20063wk0Yr/1koQ6dnmP6eEqezmd/Q==",
2800 + "version": "1.2.2",
2801 + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.2.2.tgz",
2802 + "integrity": "sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==",
2803 "dev": true,
2804 "dependencies": {
2805 "magic-string": "^0.30.5",
@@ -2704,9 +2811,9 @@
2811 }
2812 },
2813 "node_modules/@vitest/spy": {
2707 - "version": "1.2.1",
2708 - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.2.1.tgz",
2709 - "integrity": "sha512-vG3a/b7INKH7L49Lbp0IWrG6sw9j4waWAucwnksPB1r1FTJgV7nkBByd9ufzu6VWya/QTvQW4V9FShZbZIB2UQ==",
2814 + "version": "1.2.2",
2815 + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.2.2.tgz",
2816 + "integrity": "sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==",
2817 "dev": true,
2818 "dependencies": {
2819 "tinyspy": "^2.2.0"
@@ -2716,9 +2823,9 @@
2823 }
2824 },
2825 "node_modules/@vitest/utils": {
2719 - "version": "1.2.1",
2720 - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.2.1.tgz",
2721 - "integrity": "sha512-bsH6WVZYe/J2v3+81M5LDU8kW76xWObKIURpPrOXm2pjBniBu2MERI/XP60GpS4PHU3jyK50LUutOwrx4CyHUg==",
2826 + "version": "1.2.2",
2827 + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.2.2.tgz",
2828 + "integrity": "sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==",
2829 "dev": true,
2830 "dependencies": {
2831 "diff-sequences": "^29.6.3",
@@ -2768,23 +2875,25 @@
2875 }
2876 },
2877 "node_modules/@vue/babel-helper-vue-transform-on": {
2771 - "version": "1.1.6",
2772 - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.6.tgz",
2773 - "integrity": "sha512-XxM2tZHjYHTd9yiKHHt7fKCN0e2BK2z78UxU5rpjH3YCstEV/tcrW29CaOdrxIdeD0c/9mHHebvXWwDxlphjKA==",
2878 + "version": "1.2.1",
2879 + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.1.tgz",
2880 + "integrity": "sha512-jtEXim+pfyHWwvheYwUwSXm43KwQo8nhOBDyjrUITV6X2tB7lJm6n/+4sqR8137UVZZul5hBzWHdZ2uStYpyRQ==",
2881 "dev": true
2882 },
2883 "node_modules/@vue/babel-plugin-jsx": {
2777 - "version": "1.1.6",
2778 - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.6.tgz",
2779 - "integrity": "sha512-s2pK8Wwg0LiR25lyCKWGJePt8aXF0DsXOmTHYJnlKNdT3yTKfdvkKmsWjaHBctFvwWmetedObrAoINc9BeYZlA==",
2884 + "version": "1.2.1",
2885 + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.1.tgz",
2886 + "integrity": "sha512-Yy9qGktktXhB39QE99So/BO2Uwm/ZG+gpL9vMg51ijRRbINvgbuhyJEi4WYmGRMx/MSTfK0xjgZ3/MyY+iLCEg==",
2887 "dev": true,
2888 "dependencies": {
2889 "@babel/helper-module-imports": "^7.22.15",
2890 + "@babel/helper-plugin-utils": "^7.22.5",
2891 "@babel/plugin-syntax-jsx": "^7.23.3",
2892 "@babel/template": "^7.22.15",
2893 "@babel/traverse": "^7.23.7",
2894 "@babel/types": "^7.23.6",
2787 - "@vue/babel-helper-vue-transform-on": "^1.1.6",
2895 + "@vue/babel-helper-vue-transform-on": "1.2.1",
2896 + "@vue/babel-plugin-resolve-type": "1.2.1",
2897 "camelcase": "^6.3.0",
2898 "html-tags": "^3.3.1",
2899 "svg-tags": "^1.0.0"
@@ -2798,6 +2907,22 @@
2907 }
2908 }
2909 },
2910 + "node_modules/@vue/babel-plugin-resolve-type": {
2911 + "version": "1.2.1",
2912 + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.1.tgz",
2913 + "integrity": "sha512-IOtnI7pHunUzHS/y+EG/yPABIAp0VN8QhQ0UCS09jeMVxgAnI9qdOzO85RXdQGxq+aWCdv8/+k3W0aYO6j/8fQ==",
2914 + "dev": true,
2915 + "dependencies": {
2916 + "@babel/code-frame": "^7.23.5",
2917 + "@babel/helper-module-imports": "^7.22.15",
2918 + "@babel/helper-plugin-utils": "^7.22.5",
2919 + "@babel/parser": "^7.23.6",
2920 + "@vue/compiler-sfc": "^3.4.15"
2921 + },
2922 + "peerDependencies": {
2923 + "@babel/core": "^7.0.0-0"
2924 + }
2925 + },
2926 "node_modules/@vue/compiler-core": {
2927 "version": "3.4.15",
2928 "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.15.tgz",
@@ -2810,17 +2935,6 @@
2935 "source-map-js": "^1.0.2"
2936 }
2937 },
2813 - "node_modules/@vue/compiler-core/node_modules/entities": {
2814 - "version": "4.5.0",
2815 - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
2816 - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
2817 - "engines": {
2818 - "node": ">=0.12"
2819 - },
2820 - "funding": {
2821 - "url": "https://github.com/fb55/entities?sponsor=1"
2822 - }
2823 - },
2938 "node_modules/@vue/compiler-dom": {
2939 "version": "3.4.15",
2940 "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz",
@@ -2968,9 +3082,9 @@
3082 "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g=="
3083 },
3084 "node_modules/@vue/test-utils": {
2971 - "version": "2.4.3",
2972 - "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.3.tgz",
2973 - "integrity": "sha512-F4K7mF+ad++VlTrxMJVRnenKSJmO6fkQt2wpRDiKDesQMkfpniGWsqEi/JevxGBo2qEkwwjvTUAoiGJLNx++CA==",
3085 + "version": "2.4.4",
3086 + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.4.tgz",
3087 + "integrity": "sha512-8jkRxz8pNhClAf4Co4ZrpAoFISdvT3nuSkUlY6Ys6rmTpw3DMWG/X3mw3gQ7QJzgCZO9f+zuE2kW57fi09MW7Q==",
3088 "dev": true,
3089 "dependencies": {
3090 "js-beautify": "^1.14.9",
@@ -3494,9 +3608,9 @@
3608 "dev": true
3609 },
3610 "node_modules/axios": {
3497 - "version": "1.6.5",
3498 - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz",
3499 - "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==",
3611 + "version": "1.6.7",
3612 + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz",
3613 + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==",
3614 "dev": true,
3615 "dependencies": {
3616 "follow-redirects": "^1.15.4",
@@ -3625,9 +3739,9 @@
3739 }
3740 },
3741 "node_modules/browserslist": {
3628 - "version": "4.22.2",
3629 - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
3630 - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
3742 + "version": "4.22.3",
3743 + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz",
3744 + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==",
3745 "dev": true,
3746 "funding": [
3747 {
@@ -3644,8 +3758,8 @@
3758 }
3759 ],
3760 "dependencies": {
3647 - "caniuse-lite": "^1.0.30001565",
3648 - "electron-to-chromium": "^1.4.601",
3761 + "caniuse-lite": "^1.0.30001580",
3762 + "electron-to-chromium": "^1.4.648",
3763 "node-releases": "^2.0.14",
3764 "update-browserslist-db": "^1.0.13"
3765 },
@@ -3754,9 +3868,9 @@
3868 }
3869 },
3870 "node_modules/cacache/node_modules/lru-cache": {
3757 - "version": "10.1.0",
3758 - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
3759 - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
3871 + "version": "10.2.0",
3872 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
3873 + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
3874 "dev": true,
3875 "engines": {
3876 "node": "14 || >=16.14"
@@ -3828,9 +3942,9 @@
3942 }
3943 },
3944 "node_modules/caniuse-lite": {
3831 - "version": "1.0.30001579",
3832 - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz",
3833 - "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==",
3945 + "version": "1.0.30001580",
3946 + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001580.tgz",
3947 + "integrity": "sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA==",
3948 "dev": true,
3949 "funding": [
3950 {
@@ -4971,18 +5085,6 @@
5085 "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
5086 }
5087 },
4974 - "node_modules/dom-serializer/node_modules/entities": {
4975 - "version": "4.5.0",
4976 - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
4977 - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
4978 - "dev": true,
4979 - "engines": {
4980 - "node": ">=0.12"
4981 - },
4982 - "funding": {
4983 - "url": "https://github.com/fb55/entities?sponsor=1"
4984 - }
4985 - },
5088 "node_modules/domelementtype": {
5089 "version": "2.3.0",
5090 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
@@ -5109,9 +5211,9 @@
5211 "dev": true
5212 },
5213 "node_modules/electron-to-chromium": {
5112 - "version": "1.4.637",
5113 - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.637.tgz",
5114 - "integrity": "sha512-G7j3UCOukFtxVO1vWrPQUoDk3kL70mtvjc/DC/k2o7lE0wAdq+Vwp1ipagOow+BH0uVztFysLWbkM/RTIrbK3w==",
5214 + "version": "1.4.648",
5215 + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.648.tgz",
5216 + "integrity": "sha512-EmFMarXeqJp9cUKu/QEciEApn0S/xRcpZWuAm32U7NgoZCimjsilKXHRO9saeEW55eHZagIDg6XTUOv32w9pjg==",
5217 "dev": true
5218 },
5219 "node_modules/emoji-regex": {
@@ -5162,9 +5264,9 @@
5264 }
5265 },
5266 "node_modules/entities": {
5165 - "version": "3.0.1",
5166 - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
5167 - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
5267 + "version": "4.5.0",
5268 + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
5269 + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
5270 "engines": {
5271 "node": ">=0.12"
5272 },
@@ -5281,9 +5383,9 @@
5383 }
5384 },
5385 "node_modules/esbuild": {
5284 - "version": "0.19.11",
5285 - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz",
5286 - "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==",
5386 + "version": "0.19.12",
5387 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
5388 + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
5389 "dev": true,
5390 "hasInstallScript": true,
5391 "bin": {
@@ -5293,29 +5395,29 @@
5395 "node": ">=12"
5396 },
5397 "optionalDependencies": {
5296 - "@esbuild/aix-ppc64": "0.19.11",
5297 - "@esbuild/android-arm": "0.19.11",
5298 - "@esbuild/android-arm64": "0.19.11",
5299 - "@esbuild/android-x64": "0.19.11",
5300 - "@esbuild/darwin-arm64": "0.19.11",
5301 - "@esbuild/darwin-x64": "0.19.11",
5302 - "@esbuild/freebsd-arm64": "0.19.11",
5303 - "@esbuild/freebsd-x64": "0.19.11",
5304 - "@esbuild/linux-arm": "0.19.11",
5305 - "@esbuild/linux-arm64": "0.19.11",
5306 - "@esbuild/linux-ia32": "0.19.11",
5307 - "@esbuild/linux-loong64": "0.19.11",
5308 - "@esbuild/linux-mips64el": "0.19.11",
5309 - "@esbuild/linux-ppc64": "0.19.11",
5310 - "@esbuild/linux-riscv64": "0.19.11",
5311 - "@esbuild/linux-s390x": "0.19.11",
5312 - "@esbuild/linux-x64": "0.19.11",
5313 - "@esbuild/netbsd-x64": "0.19.11",
5314 - "@esbuild/openbsd-x64": "0.19.11",
5315 - "@esbuild/sunos-x64": "0.19.11",
5316 - "@esbuild/win32-arm64": "0.19.11",
5317 - "@esbuild/win32-ia32": "0.19.11",
5318 - "@esbuild/win32-x64": "0.19.11"
5398 + "@esbuild/aix-ppc64": "0.19.12",
5399 + "@esbuild/android-arm": "0.19.12",
5400 + "@esbuild/android-arm64": "0.19.12",
5401 + "@esbuild/android-x64": "0.19.12",
5402 + "@esbuild/darwin-arm64": "0.19.12",
5403 + "@esbuild/darwin-x64": "0.19.12",
5404 + "@esbuild/freebsd-arm64": "0.19.12",
5405 + "@esbuild/freebsd-x64": "0.19.12",
5406 + "@esbuild/linux-arm": "0.19.12",
5407 + "@esbuild/linux-arm64": "0.19.12",
5408 + "@esbuild/linux-ia32": "0.19.12",
5409 + "@esbuild/linux-loong64": "0.19.12",
5410 + "@esbuild/linux-mips64el": "0.19.12",
5411 + "@esbuild/linux-ppc64": "0.19.12",
5412 + "@esbuild/linux-riscv64": "0.19.12",
5413 + "@esbuild/linux-s390x": "0.19.12",
5414 + "@esbuild/linux-x64": "0.19.12",
5415 + "@esbuild/netbsd-x64": "0.19.12",
5416 + "@esbuild/openbsd-x64": "0.19.12",
5417 + "@esbuild/sunos-x64": "0.19.12",
5418 + "@esbuild/win32-arm64": "0.19.12",
5419 + "@esbuild/win32-ia32": "0.19.12",
5420 + "@esbuild/win32-x64": "0.19.12"
5421 }
5422 },
5423 "node_modules/escalade": {
@@ -5817,9 +5919,9 @@
5919 "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
5920 },
5921 "node_modules/fastq": {
5820 - "version": "1.16.0",
5821 - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz",
5822 - "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==",
5922 + "version": "1.17.0",
5923 + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz",
5924 + "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==",
5925 "dependencies": {
5926 "reusify": "^1.0.4"
5927 }
@@ -6398,11 +6500,12 @@
6500 "integrity": "sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg=="
6501 },
6502 "node_modules/highlight.js": {
6401 - "version": "11.9.0",
6402 - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz",
6403 - "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==",
6503 + "version": "10.7.3",
6504 + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
6505 + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
6506 + "dev": true,
6507 "engines": {
6405 - "node": ">=12.0.0"
6508 + "node": "*"
6509 }
6510 },
6511 "node_modules/hosted-git-info": {
@@ -6606,9 +6709,9 @@
6709 }
6710 },
6711 "node_modules/immutable": {
6609 - "version": "4.3.4",
6610 - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz",
6611 - "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==",
6712 + "version": "4.3.5",
6713 + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz",
6714 + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==",
6715 "dev": true
6716 },
6717 "node_modules/import-fresh": {
@@ -7351,9 +7454,9 @@
7454 }
7455 },
7456 "node_modules/jsonc-parser": {
7354 - "version": "3.2.0",
7355 - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
7356 - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
7457 + "version": "3.2.1",
7458 + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz",
7459 + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA=="
7460 },
7461 "node_modules/jsonfile": {
7462 "version": "6.1.0",
@@ -8031,6 +8134,25 @@
8134 "highlight.js": "^11.5.1"
8135 }
8136 },
8137 + "node_modules/markdown-it-highlightjs/node_modules/highlight.js": {
8138 + "version": "11.9.0",
8139 + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz",
8140 + "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==",
8141 + "engines": {
8142 + "node": ">=12.0.0"
8143 + }
8144 + },
8145 + "node_modules/markdown-it/node_modules/entities": {
8146 + "version": "3.0.1",
8147 + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
8148 + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
8149 + "engines": {
8150 + "node": ">=0.12"
8151 + },
8152 + "funding": {
8153 + "url": "https://github.com/fb55/entities?sponsor=1"
8154 + }
8155 + },
8156 "node_modules/mdn-data": {
8157 "version": "2.0.30",
8158 "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
@@ -8423,6 +8545,14 @@
8545 "vue": "^3.0.0"
8546 }
8547 },
8548 + "node_modules/naive-ui/node_modules/highlight.js": {
8549 + "version": "11.9.0",
8550 + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz",
8551 + "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==",
8552 + "engines": {
8553 + "node": ">=12.0.0"
8554 + }
8555 + },
8556 "node_modules/nanoid": {
8557 "version": "3.3.7",
8558 "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
@@ -8629,9 +8759,9 @@
8759 }
8760 },
8761 "node_modules/npm-package-arg/node_modules/lru-cache": {
8632 - "version": "10.1.0",
8633 - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
8634 - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
8762 + "version": "10.2.0",
8763 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
8764 + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
8765 "dev": true,
8766 "engines": {
8767 "node": "14 || >=16.14"
@@ -9069,18 +9199,6 @@
9199 "url": "https://github.com/inikulin/parse5?sponsor=1"
9200 }
9201 },
9072 - "node_modules/parse5/node_modules/entities": {
9073 - "version": "4.5.0",
9074 - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
9075 - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
9076 - "dev": true,
9077 - "engines": {
9078 - "node": ">=0.12"
9079 - },
9080 - "funding": {
9081 - "url": "https://github.com/fb55/entities?sponsor=1"
9082 - }
9083 - },
9202 "node_modules/parseurl": {
9203 "version": "1.3.3",
9204 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -9151,9 +9269,9 @@
9269 }
9270 },
9271 "node_modules/path-scurry/node_modules/lru-cache": {
9154 - "version": "10.1.0",
9155 - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
9156 - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
9272 + "version": "10.2.0",
9273 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
9274 + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
9275 "dev": true,
9276 "engines": {
9277 "node": "14 || >=16.14"
@@ -9766,9 +9884,9 @@
9884 }
9885 },
9886 "node_modules/read-package-json/node_modules/lru-cache": {
9769 - "version": "10.1.0",
9770 - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
9771 - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
9887 + "version": "10.2.0",
9888 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
9889 + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
9890 "dev": true,
9891 "engines": {
9892 "node": "14 || >=16.14"
@@ -10126,9 +10244,9 @@
10244 }
10245 },
10246 "node_modules/rfdc": {
10129 - "version": "1.3.0",
10130 - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
10131 - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
10247 + "version": "1.3.1",
10248 + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz",
10249 + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==",
10250 "dev": true
10251 },
10252 "node_modules/rimraf": {
@@ -10185,9 +10303,9 @@
10303 }
10304 },
10305 "node_modules/rollup": {
10188 - "version": "4.9.5",
10189 - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.5.tgz",
10190 - "integrity": "sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ==",
10306 + "version": "4.9.6",
10307 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz",
10308 + "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==",
10309 "dev": true,
10310 "dependencies": {
10311 "@types/estree": "1.0.5"
@@ -10200,19 +10318,19 @@
10318 "npm": ">=8.0.0"
10319 },
10320 "optionalDependencies": {
10203 - "@rollup/rollup-android-arm-eabi": "4.9.5",
10204 - "@rollup/rollup-android-arm64": "4.9.5",
10205 - "@rollup/rollup-darwin-arm64": "4.9.5",
10206 - "@rollup/rollup-darwin-x64": "4.9.5",
10207 - "@rollup/rollup-linux-arm-gnueabihf": "4.9.5",
10208 - "@rollup/rollup-linux-arm64-gnu": "4.9.5",
10209 - "@rollup/rollup-linux-arm64-musl": "4.9.5",
10210 - "@rollup/rollup-linux-riscv64-gnu": "4.9.5",
10211 - "@rollup/rollup-linux-x64-gnu": "4.9.5",
10212 - "@rollup/rollup-linux-x64-musl": "4.9.5",
10213 - "@rollup/rollup-win32-arm64-msvc": "4.9.5",
10214 - "@rollup/rollup-win32-ia32-msvc": "4.9.5",
10215 - "@rollup/rollup-win32-x64-msvc": "4.9.5",
10321 + "@rollup/rollup-android-arm-eabi": "4.9.6",
10322 + "@rollup/rollup-android-arm64": "4.9.6",
10323 + "@rollup/rollup-darwin-arm64": "4.9.6",
10324 + "@rollup/rollup-darwin-x64": "4.9.6",
10325 + "@rollup/rollup-linux-arm-gnueabihf": "4.9.6",
10326 + "@rollup/rollup-linux-arm64-gnu": "4.9.6",
10327 + "@rollup/rollup-linux-arm64-musl": "4.9.6",
10328 + "@rollup/rollup-linux-riscv64-gnu": "4.9.6",
10329 + "@rollup/rollup-linux-x64-gnu": "4.9.6",
10330 + "@rollup/rollup-linux-x64-musl": "4.9.6",
10331 + "@rollup/rollup-win32-arm64-msvc": "4.9.6",
10332 + "@rollup/rollup-win32-ia32-msvc": "4.9.6",
10333 + "@rollup/rollup-win32-x64-msvc": "4.9.6",
10334 "fsevents": "~2.3.2"
10335 }
10336 },
@@ -10737,9 +10855,9 @@
10855 }
10856 },
10857 "node_modules/spdx-exceptions": {
10740 - "version": "2.3.0",
10741 - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
10742 - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
10858 + "version": "2.4.0",
10859 + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz",
10860 + "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==",
10861 "dev": true
10862 },
10863 "node_modules/spdx-expression-parse": {
@@ -11961,9 +12079,9 @@
12079 }
12080 },
12081 "node_modules/typescript": {
11964 - "version": "5.2.2",
11965 - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
11966 - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
12082 + "version": "5.3.3",
12083 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
12084 + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
12085 "bin": {
12086 "tsc": "bin/tsc",
12087 "tsserver": "bin/tsserver"
@@ -12354,9 +12472,9 @@
12472 }
12473 },
12474 "node_modules/vite-node": {
12357 - "version": "1.2.1",
12358 - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.2.1.tgz",
12359 - "integrity": "sha512-fNzHmQUSOY+y30naohBvSW7pPn/xn3Ib/uqm+5wAJQJiqQsU0NBR78XdRJb04l4bOFKjpTWld0XAfkKlrDbySg==",
12475 + "version": "1.2.2",
12476 + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.2.2.tgz",
12477 + "integrity": "sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==",
12478 "dev": true,
12479 "dependencies": {
12480 "cac": "^6.7.14",
@@ -12388,16 +12506,16 @@
12506 }
12507 },
12508 "node_modules/vitest": {
12391 - "version": "1.2.1",
12392 - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.2.1.tgz",
12393 - "integrity": "sha512-TRph8N8rnSDa5M2wKWJCMnztCZS9cDcgVTQ6tsTFTG/odHJ4l5yNVqvbeDJYJRZ6is3uxaEpFs8LL6QM+YFSdA==",
12509 + "version": "1.2.2",
12510 + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.2.2.tgz",
12511 + "integrity": "sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==",
12512 "dev": true,
12513 "dependencies": {
12396 - "@vitest/expect": "1.2.1",
12397 - "@vitest/runner": "1.2.1",
12398 - "@vitest/snapshot": "1.2.1",
12399 - "@vitest/spy": "1.2.1",
12400 - "@vitest/utils": "1.2.1",
12514 + "@vitest/expect": "1.2.2",
12515 + "@vitest/runner": "1.2.2",
12516 + "@vitest/snapshot": "1.2.2",
12517 + "@vitest/spy": "1.2.2",
12518 + "@vitest/utils": "1.2.2",
12519 "acorn-walk": "^8.3.2",
12520 "cac": "^6.7.14",
12521 "chai": "^4.3.10",
@@ -12410,9 +12528,9 @@
12528 "std-env": "^3.5.0",
12529 "strip-literal": "^1.3.0",
12530 "tinybench": "^2.5.1",
12413 - "tinypool": "^0.8.1",
12531 + "tinypool": "^0.8.2",
12532 "vite": "^5.0.0",
12415 - "vite-node": "1.2.1",
12533 + "vite-node": "1.2.2",
12534 "why-is-node-running": "^2.2.2"
12535 },
12536 "bin": {
@@ -12658,9 +12776,9 @@
12776 "dev": true
12777 },
12778 "node_modules/vue-eslint-parser": {
12661 - "version": "9.4.0",
12662 - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.0.tgz",
12663 - "integrity": "sha512-7KsNBb6gHFA75BtneJsoK/dbZ281whUIwFYdQxA68QrCrGMXYzUMbPDHGcOQ0OocIVKrWSKWXZ4mL7tonCXoUw==",
12779 + "version": "9.4.2",
12780 + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz",
12781 + "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==",
12782 "dependencies": {
12783 "debug": "^4.3.4",
12784 "eslint-scope": "^7.1.1",
package.json
+10 -5
@@ -27,6 +27,7 @@
27 "start-vue": "vite --host 0.0.0.0",
28 "start": "concurrently \"npm run start-server\" \"npm run start-vue\"",
29 "libs-check": "taze",
30 + "libs-reload": "rm -rf node_modules package-lock.json && npm install",
31 "open:swagger": "open http://127.0.0.1:5000/docs#/",
32 "open:redoc": "open http://127.0.0.1:5000/redoc"
33 },
@@ -69,19 +70,23 @@
70 "devDependencies": {
71 "@clack/prompts": "^0.7.0",
72 "@iconify/vue": "^4.1.1",
73 + "@rushstack/eslint-patch": "^1.7.2",
74 "@tsconfig/node18": "^18.2.2",
75 "@types/bytes": "^3.1.4",
76 "@types/fs-extra": "^11.0.4",
77 + "@types/highlight.js": "^10.1.0",
78 "@types/inquirer": "^9.0.7",
79 "@types/jsdom": "^21.1.6",
80 "@types/lodash": "^4.14.202",
78 - "@types/node": "^20.11.6",
81 + "@types/markdown-it": "^13.0.7",
82 + "@types/markdown-it-highlightjs": "^3.3.4",
83 + "@types/node": "^20.11.7",
84 "@types/validator": "^13.11.8",
85 "@vitejs/plugin-vue": "^5.0.3",
86 "@vitejs/plugin-vue-jsx": "^3.1.0",
87 "@vue/eslint-config-prettier": "^9.0.0",
88 "@vue/eslint-config-typescript": "^12.0.0",
84 - "@vue/test-utils": "^2.4.3",
89 + "@vue/test-utils": "^2.4.4",
90 "@vue/tsconfig": "^0.5.1",
91 "autoprefixer": "^10.4.17",
92 "cypress": "^13.6.3",
@@ -101,16 +106,16 @@
106 "tailwindcss": "^3.4.1",
107 "taze": "^0.13.1",
108 "ts-node": "^10.9.2",
104 - "typescript": "~5.2.2",
109 + "typescript": "~5.3.3",
110 "unplugin-vue-components": "^0.26.0",
111 "vite": "^5.0.12",
112 "vite-bundle-analyzer": "^0.7.0",
113 "vite-bundle-visualizer": "^1.0.0",
114 "vite-svg-loader": "^5.1.0",
110 - "vitest": "^1.2.1",
115 + "vitest": "^1.2.2",
116 "vue-tsc": "^1.8.27"
117 },
118 "engines": {
119 "node": ">=18.0.0"
120 }
116 -}
\ No newline at end of file
121 +}
src/api/logs.ts
-1
@@ -1,6 +1,5 @@
1 import { type FlaskBaseResponse } from "@/types/flask.d"
2 import { HttpClient } from "./httpClient"
3 -import type { Customer } from "@/types/customers.d"
3 import type { Log, LogEventType } from "@/types/logs.d"
4
5 export type LogsQueryTimeRange = `${number}${"h" | "d" | "w"}`
src/assets/images/alert creation provisioning.svg new
+3
@@ -0,0 +1,3 @@
1 +<?xml version="1.0" standalone="no"?>
2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg" version="1.1" width="400" height="497.1875" viewBox="0, 0, 400,497.1875"><g id="svgg"><path id="path0" d="M163.187 283.504 C 163.117 320.247,163.007 318.404,165.423 320.832 C 165.964 321.375,166.881 322.392,167.461 323.091 C 168.041 323.791,168.642 324.285,168.797 324.190 C 168.952 324.094,169.045 324.132,169.004 324.274 C 168.877 324.716,169.816 325.938,170.284 325.938 C 170.529 325.938,170.635 326.032,170.520 326.147 C 170.405 326.261,170.544 326.613,170.829 326.928 C 171.324 327.474,172.623 327.500,199.952 327.500 L 228.557 327.500 229.669 326.299 C 237.848 317.465,236.850 323.401,236.796 283.906 C 236.771 265.688,236.702 251.801,236.643 253.047 L 236.535 255.313 200.000 255.313 L 163.465 255.313 163.357 253.047 C 163.298 251.801,163.221 265.506,163.187 283.504 M0.313 265.477 C 0.313 275.210,0.341 275.707,0.973 276.966 C 2.064 279.137,3.126 280.334,4.489 280.930 C 5.200 281.240,7.750 282.439,10.156 283.594 C 12.563 284.749,16.289 286.538,18.438 287.569 C 20.586 288.600,23.328 289.905,24.531 290.469 C 25.734 291.033,29.180 292.679,32.188 294.128 C 35.195 295.576,38.254 297.025,38.984 297.347 L 40.313 297.933 40.382 317.326 C 40.420 327.992,40.494 334.645,40.546 332.109 L 40.642 327.500 86.406 327.500 L 132.171 327.500 132.278 332.109 C 132.337 334.645,132.364 323.500,132.338 307.344 C 132.296 281.827,132.223 277.579,131.783 275.000 C 130.884 269.738,130.032 267.327,127.695 263.438 C 126.365 261.225,123.870 258.438,123.220 258.438 C 122.996 258.438,122.813 258.313,122.813 258.161 C 122.812 258.008,122.355 257.653,121.797 257.371 C 120.339 256.634,119.564 256.139,119.308 255.781 C 119.161 255.575,98.839 255.441,59.699 255.387 L 0.313 255.305 0.313 265.477 M280.703 255.737 C 280.316 255.929,280.000 256.193,280.000 256.324 C 280.000 256.455,279.812 256.563,279.582 256.563 C 278.920 256.563,275.625 259.049,275.625 259.548 C 275.625 259.797,275.438 260.000,275.209 260.000 C 274.444 260.000,272.173 263.141,270.916 265.938 C 270.568 266.711,270.166 267.562,270.021 267.829 C 269.668 268.483,268.526 273.110,268.097 275.625 C 267.864 276.992,267.728 287.319,267.682 307.188 C 267.644 323.430,267.661 334.645,267.721 332.109 L 267.829 327.500 313.594 327.500 L 359.358 327.500 359.454 332.109 C 359.506 334.645,359.582 328.000,359.622 317.344 L 359.695 297.969 360.863 297.423 C 363.848 296.030,370.955 292.650,375.739 290.348 C 378.638 288.954,381.044 287.813,381.087 287.813 C 381.131 287.813,384.103 286.390,387.692 284.652 C 391.282 282.914,394.922 281.178,395.781 280.794 C 399.749 279.022,399.869 278.559,399.757 265.445 L 399.671 255.313 340.539 255.351 C 297.771 255.379,281.212 255.486,280.703 255.737 M172.721 329.024 C 173.441 329.716,173.926 329.912,173.595 329.377 C 173.489 329.206,173.094 328.907,172.717 328.713 L 172.031 328.360 172.721 329.024 " stroke="none" fill="#fbab44" fill-rule="evenodd"/><path id="path1" d="M0.207 176.484 C 0.094 180.223,0.034 204.094,0.074 229.531 C 0.115 254.969,0.186 271.175,0.234 265.545 L 0.321 255.309 59.223 255.389 C 91.619 255.433,118.125 255.435,118.125 255.395 C 118.125 255.251,115.844 254.370,115.142 254.243 C 114.750 254.172,114.142 253.960,113.790 253.771 C 113.438 253.583,113.039 253.448,112.903 253.470 C 112.767 253.493,112.586 253.484,112.500 253.451 C 111.792 253.175,104.237 251.869,103.433 251.884 C 103.006 251.892,101.953 251.817,101.094 251.717 C 99.332 251.512,96.400 251.225,94.531 251.076 C 93.844 251.021,92.508 250.892,91.563 250.789 C 90.617 250.686,89.281 250.542,88.594 250.469 C 68.487 248.333,56.970 240.804,48.921 224.531 C 42.866 212.290,38.598 191.192,38.317 172.109 L 38.281 169.688 19.347 169.688 L 0.412 169.688 0.207 176.484 M39.844 170.000 C 39.950 170.172,40.240 170.313,40.487 170.313 C 40.735 170.313,40.938 170.418,40.939 170.547 C 40.942 170.889,42.824 171.905,43.117 171.724 C 43.254 171.639,43.540 171.779,43.753 172.035 C 43.965 172.291,44.262 172.500,44.413 172.500 C 44.564 172.500,44.969 172.781,45.313 173.125 C 45.656 173.469,46.212 173.750,46.547 173.750 C 46.882 173.750,47.269 173.940,47.406 174.173 C 47.544 174.405,48.310 174.957,49.110 175.399 C 49.909 175.841,51.136 176.565,51.838 177.008 C 52.539 177.450,53.189 177.813,53.282 177.813 C 53.375 177.813,53.975 178.147,54.616 178.556 C 55.257 178.964,58.172 180.669,61.094 182.345 C 64.016 184.020,68.023 186.338,70.000 187.495 C 74.085 189.886,97.436 203.374,124.375 218.902 C 147.524 232.246,148.698 232.924,151.719 234.704 C 153.094 235.514,154.790 236.464,155.489 236.815 C 160.132 239.149,162.895 244.302,163.298 251.380 L 163.522 255.313 199.996 255.313 L 236.471 255.313 236.688 251.641 C 237.236 242.355,238.811 240.161,249.253 234.146 C 264.241 225.511,277.317 217.958,288.906 211.239 C 290.994 210.029,296.178 207.048,303.281 202.973 C 307.406 200.607,312.398 197.720,314.375 196.559 C 316.352 195.398,318.461 194.168,319.063 193.826 C 319.664 193.484,322.898 191.618,326.250 189.679 C 329.602 187.741,332.766 185.916,333.281 185.625 C 334.295 185.052,341.339 180.967,343.125 179.916 C 343.727 179.563,345.977 178.235,348.125 176.967 C 350.273 175.698,352.313 174.495,352.656 174.292 C 353.000 174.090,353.809 173.602,354.453 173.208 C 355.098 172.814,355.625 172.590,355.625 172.710 C 355.625 172.831,356.030 172.542,356.525 172.068 C 357.311 171.314,357.854 171.055,358.847 170.961 C 358.986 170.948,359.013 170.798,358.908 170.629 C 358.799 170.451,358.924 170.399,359.203 170.506 C 359.469 170.608,359.688 170.547,359.688 170.369 C 359.688 170.191,359.934 169.982,360.234 169.903 C 360.535 169.824,288.527 169.744,200.216 169.724 C 93.243 169.700,39.715 169.792,39.844 170.000 M361.724 171.954 C 361.726 173.200,361.637 175.063,361.525 176.094 C 361.413 177.125,361.234 179.336,361.127 181.006 C 358.825 217.064,347.461 239.582,327.963 246.718 C 325.065 247.779,324.284 248.053,323.910 248.143 C 323.830 248.162,323.023 248.383,322.116 248.633 C 321.210 248.884,320.117 249.142,319.688 249.208 C 319.258 249.273,317.641 249.538,316.094 249.797 C 313.333 250.258,311.392 250.513,308.281 250.822 C 306.745 250.975,306.251 251.017,302.188 251.334 C 300.248 251.485,299.357 251.578,295.577 252.021 C 293.281 252.291,288.384 253.131,287.813 253.354 C 287.555 253.454,287.168 253.508,286.953 253.473 C 286.738 253.438,286.563 253.572,286.563 253.770 C 286.563 253.968,286.365 254.054,286.124 253.961 C 285.883 253.869,285.598 253.881,285.490 253.989 C 285.383 254.097,285.123 254.216,284.913 254.254 C 279.486 255.244,280.800 255.268,340.855 255.290 L 399.679 255.313 399.766 265.391 C 399.814 270.934,399.886 254.727,399.926 229.375 C 399.966 204.023,399.906 180.223,399.793 176.484 L 399.588 169.688 380.653 169.688 L 361.719 169.689 361.724 171.954 " stroke="none" fill="#fb9b3c" fill-rule="evenodd"/><path id="path2" d="M43.051 418.013 C 42.581 418.263,41.808 418.977,41.333 419.600 L 40.469 420.732 40.387 456.698 L 40.305 492.664 41.012 494.048 C 41.401 494.809,42.116 495.722,42.601 496.075 L 43.483 496.719 199.724 496.798 C 338.186 496.868,356.068 496.823,356.873 496.408 C 357.372 496.149,358.174 495.422,358.656 494.790 L 359.531 493.642 359.531 457.212 L 359.531 420.781 358.631 419.605 C 356.922 417.371,358.257 417.478,333.366 417.572 C 308.066 417.667,309.971 417.467,308.594 420.176 C 307.992 421.360,307.965 422.117,307.881 440.391 L 307.794 459.375 289.060 459.375 L 270.326 459.375 270.241 439.914 L 270.156 420.453 269.428 419.523 C 267.785 417.426,269.037 417.528,244.756 417.513 C 220.973 417.499,221.546 417.460,220.063 419.198 C 218.773 420.710,218.750 421.077,218.750 440.489 L 218.750 459.375 200.000 459.375 L 181.250 459.375 181.250 440.507 C 181.250 418.749,181.296 419.072,178.027 417.833 C 176.227 417.152,133.830 417.407,132.284 418.108 C 129.592 419.331,129.688 418.513,129.688 440.300 L 129.688 459.375 110.938 459.375 L 92.188 459.375 92.188 440.973 C 92.188 420.244,92.175 420.112,90.046 418.489 L 88.955 417.656 66.431 417.608 C 47.275 417.567,43.778 417.628,43.051 418.013 " stroke="none" fill="#fccf5b" fill-rule="evenodd"/><path id="path3" d="M2.859 0.840 C 2.283 1.125,1.439 1.922,0.984 2.610 L 0.156 3.861 0.146 91.383 C 0.140 139.521,0.179 176.834,0.232 174.302 L 0.329 169.697 19.461 169.614 C 29.984 169.569,38.760 169.602,38.962 169.688 C 39.165 169.773,111.798 169.773,200.368 169.688 C 288.939 169.602,370.016 169.569,380.539 169.614 L 399.671 169.697 399.768 174.302 C 399.821 176.834,399.860 139.521,399.854 91.383 L 399.844 3.861 399.012 2.604 C 397.377 0.133,399.990 0.294,363.069 0.386 L 330.156 0.469 329.104 1.219 C 326.750 2.898,326.890 0.648,326.882 37.109 L 326.875 69.688 308.906 69.688 L 290.938 69.688 290.938 44.441 L 290.937 19.195 290.234 17.802 C 289.772 16.886,289.103 16.169,288.281 15.707 L 287.031 15.006 254.163 15.081 C 217.137 15.166,220.575 14.931,218.828 17.497 L 218.125 18.530 218.125 44.109 L 218.125 69.688 200.000 69.688 L 181.875 69.688 181.875 44.109 L 181.875 18.530 181.172 17.497 C 179.425 14.931,182.863 15.166,145.837 15.081 L 112.969 15.006 111.719 15.707 C 110.897 16.169,110.228 16.886,109.766 17.802 L 109.062 19.195 109.063 44.441 L 109.063 69.688 91.094 69.688 L 73.125 69.688 73.118 37.109 C 73.110 0.648,73.250 2.898,70.896 1.219 L 69.844 0.469 36.875 0.395 C 6.708 0.328,3.817 0.366,2.859 0.840 M361.648 171.250 C 361.648 172.023,361.709 172.340,361.783 171.953 C 361.858 171.566,361.858 170.934,361.783 170.547 C 361.709 170.160,361.648 170.477,361.648 171.250 M357.144 171.568 L 356.406 172.198 357.266 171.830 C 357.738 171.628,358.125 171.344,358.125 171.200 C 358.125 170.810,357.958 170.873,357.144 171.568 M43.125 171.759 C 43.125 171.921,43.547 172.302,44.063 172.607 C 44.580 172.912,45.000 173.012,45.000 172.830 C 45.000 172.649,44.835 172.500,44.634 172.500 C 44.433 172.500,44.011 172.267,43.696 171.983 C 43.382 171.698,43.125 171.598,43.125 171.759 " stroke="none" fill="#fc862e" fill-rule="evenodd"/><path id="path4" d="M40.519 334.297 C 40.406 338.035,40.317 349.602,40.320 360.000 C 40.327 381.137,40.273 380.601,42.542 382.218 L 43.594 382.969 86.025 383.050 C 123.482 383.122,128.563 383.076,129.374 382.657 C 130.775 381.932,131.789 380.671,132.162 379.189 C 132.542 377.680,132.636 345.641,132.293 334.297 L 132.088 327.500 86.406 327.500 L 40.725 327.500 40.519 334.297 M172.522 328.457 C 173.111 328.983,173.594 329.525,173.594 329.661 C 173.594 329.965,174.624 331.148,183.281 340.783 C 185.000 342.696,187.250 345.224,188.281 346.401 C 189.313 347.577,190.302 348.692,190.481 348.879 C 190.660 349.066,191.920 350.484,193.281 352.031 C 196.329 355.495,196.773 355.907,198.037 356.446 C 200.772 357.613,202.678 356.646,206.742 352.031 C 208.407 350.141,210.278 348.028,210.900 347.335 C 211.522 346.643,212.664 345.373,213.438 344.512 C 214.211 343.651,215.941 341.731,217.282 340.245 C 218.623 338.758,220.029 337.148,220.407 336.665 C 221.032 335.867,223.081 333.572,224.453 332.135 C 224.754 331.820,224.941 331.563,224.868 331.563 C 224.751 331.563,225.925 330.264,227.905 328.203 L 228.581 327.500 200.015 327.500 L 171.450 327.500 172.522 328.457 M267.707 334.297 C 267.364 345.641,267.458 377.680,267.838 379.189 C 268.211 380.671,269.225 381.932,270.626 382.657 C 271.437 383.076,276.518 383.122,313.975 383.050 L 356.406 382.969 357.458 382.218 C 359.727 380.601,359.673 381.137,359.680 360.000 C 359.683 349.602,359.594 338.035,359.481 334.297 L 359.275 327.500 313.594 327.500 L 267.912 327.500 267.707 334.297 " stroke="none" fill="#fcbc4c" fill-rule="evenodd"/></g></svg>
src/assets/images/asksocfortress.svg
+2 -34
@@ -1,35 +1,3 @@
1 <?xml version="1.0" standalone="no"?>
2 -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3 - "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4 -<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5 - width="1280.000000pt" height="1280.000000pt" viewBox="0 0 1280.000000 1280.000000"
6 - preserveAspectRatio="xMidYMid meet">
7 -
8 -<g transform="translate(0.000000,1280.000000) scale(0.100000,-0.100000)"
9 -fill="#000000" stroke="none">
10 -<path d="M0 6400 l0 -6400 6400 0 6400 0 0 6400 0 6400 -6400 0 -6400 0 0
11 --6400z m4077 4257 l28 -27 3 -600 2 -600 325 0 325 0 0 464 0 465 24 28 24 28
12 -602 3 601 2 30 -29 29 -29 0 -466 0 -466 328 2 327 3 0 440 c0 242 1 450 3
13 -463 1 13 15 37 31 53 l29 29 587 0 c627 0 628 0 655 -49 6 -13 10 -184 10
14 --480 l0 -461 325 0 325 0 2 600 3 600 28 27 27 28 601 0 601 0 29 -33 29 -32
15 -0 -2460 c0 -1894 -3 -2465 -12 -2485 -13 -30 -45 -47 -460 -245 l-258 -123 0
16 --739 0 -740 -29 -29 -29 -29 -762 0 c-832 0 -804 -2 -829 58 -9 21 -11 259 -9
17 -963 l4 934 22 75 c42 135 108 218 217 270 87 42 162 57 390 80 252 26 348 43
18 -455 83 329 124 513 447 584 1022 18 144 32 375 22 375 -3 0 -268 -151 -589
19 --336 -320 -185 -656 -379 -747 -432 -91 -52 -309 -178 -485 -279 -176 -102
20 --334 -198 -352 -215 -17 -17 -42 -54 -55 -82 l-23 -51 -5 -652 -5 -652 -31
21 --33 c-17 -18 -147 -163 -288 -323 -142 -159 -267 -298 -278 -307 -12 -11 -36
22 --18 -58 -18 -22 0 -46 7 -58 17 -35 31 -564 627 -583 658 -18 28 -19 62 -19
23 -642 0 403 -4 629 -11 663 -14 63 -62 136 -114 171 -52 35 -2123 1229 -2131
24 -1229 -10 0 4 -241 22 -384 21 -170 49 -302 94 -437 104 -314 256 -491 499
25 --579 102 -37 201 -55 446 -80 300 -30 392 -58 490 -151 58 -55 97 -126 122
26 --226 17 -62 18 -145 18 -1006 l0 -939 -33 -29 -32 -29 -765 0 -764 0 -28 24
27 --28 24 -5 746 -5 746 -338 162 c-325 155 -339 163 -363 203 l-24 42 0 2450 0
28 -2450 21 27 c12 15 31 32 43 36 11 5 285 8 608 7 l588 -2 27 -28z m340 -7531
29 -l28 -24 3 -356 3 -356 339 0 340 0 0 351 0 351 29 29 29 29 406 0 405 0 28
30 --24 28 -24 3 -356 3 -356 339 0 340 0 0 351 0 351 29 29 29 29 407 0 407 0 29
31 --29 29 -29 0 -351 0 -351 340 0 340 0 0 351 0 351 29 29 29 29 407 0 407 0 29
32 --29 29 -29 0 -655 0 -655 -26 -31 -26 -31 -2828 0 -2827 0 -27 26 -26 27 0
33 -659 0 660 29 29 29 29 406 0 405 0 28 -24z"/>
34 -</g>
35 -</svg>
2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg" version="1.1" width="400" height="497.1875" viewBox="0, 0, 400,497.1875"><g id="svgg"><path id="path0" d="M163.187 283.504 C 163.117 320.247,163.007 318.404,165.423 320.832 C 165.964 321.375,166.881 322.392,167.461 323.091 C 168.041 323.791,168.642 324.285,168.797 324.190 C 168.952 324.094,169.045 324.132,169.004 324.274 C 168.877 324.716,169.816 325.938,170.284 325.938 C 170.529 325.938,170.635 326.032,170.520 326.147 C 170.405 326.261,170.544 326.613,170.829 326.928 C 171.324 327.474,172.623 327.500,199.952 327.500 L 228.557 327.500 229.669 326.299 C 237.848 317.465,236.850 323.401,236.796 283.906 C 236.771 265.688,236.702 251.801,236.643 253.047 L 236.535 255.313 200.000 255.313 L 163.465 255.313 163.357 253.047 C 163.298 251.801,163.221 265.506,163.187 283.504 M0.313 265.477 C 0.313 275.210,0.341 275.707,0.973 276.966 C 2.064 279.137,3.126 280.334,4.489 280.930 C 5.200 281.240,7.750 282.439,10.156 283.594 C 12.563 284.749,16.289 286.538,18.438 287.569 C 20.586 288.600,23.328 289.905,24.531 290.469 C 25.734 291.033,29.180 292.679,32.188 294.128 C 35.195 295.576,38.254 297.025,38.984 297.347 L 40.313 297.933 40.382 317.326 C 40.420 327.992,40.494 334.645,40.546 332.109 L 40.642 327.500 86.406 327.500 L 132.171 327.500 132.278 332.109 C 132.337 334.645,132.364 323.500,132.338 307.344 C 132.296 281.827,132.223 277.579,131.783 275.000 C 130.884 269.738,130.032 267.327,127.695 263.438 C 126.365 261.225,123.870 258.438,123.220 258.438 C 122.996 258.438,122.813 258.313,122.813 258.161 C 122.812 258.008,122.355 257.653,121.797 257.371 C 120.339 256.634,119.564 256.139,119.308 255.781 C 119.161 255.575,98.839 255.441,59.699 255.387 L 0.313 255.305 0.313 265.477 M280.703 255.737 C 280.316 255.929,280.000 256.193,280.000 256.324 C 280.000 256.455,279.812 256.563,279.582 256.563 C 278.920 256.563,275.625 259.049,275.625 259.548 C 275.625 259.797,275.438 260.000,275.209 260.000 C 274.444 260.000,272.173 263.141,270.916 265.938 C 270.568 266.711,270.166 267.562,270.021 267.829 C 269.668 268.483,268.526 273.110,268.097 275.625 C 267.864 276.992,267.728 287.319,267.682 307.188 C 267.644 323.430,267.661 334.645,267.721 332.109 L 267.829 327.500 313.594 327.500 L 359.358 327.500 359.454 332.109 C 359.506 334.645,359.582 328.000,359.622 317.344 L 359.695 297.969 360.863 297.423 C 363.848 296.030,370.955 292.650,375.739 290.348 C 378.638 288.954,381.044 287.813,381.087 287.813 C 381.131 287.813,384.103 286.390,387.692 284.652 C 391.282 282.914,394.922 281.178,395.781 280.794 C 399.749 279.022,399.869 278.559,399.757 265.445 L 399.671 255.313 340.539 255.351 C 297.771 255.379,281.212 255.486,280.703 255.737 M172.721 329.024 C 173.441 329.716,173.926 329.912,173.595 329.377 C 173.489 329.206,173.094 328.907,172.717 328.713 L 172.031 328.360 172.721 329.024 " stroke="none" fill="#fbab44" fill-rule="evenodd"/><path id="path1" d="M0.207 176.484 C 0.094 180.223,0.034 204.094,0.074 229.531 C 0.115 254.969,0.186 271.175,0.234 265.545 L 0.321 255.309 59.223 255.389 C 91.619 255.433,118.125 255.435,118.125 255.395 C 118.125 255.251,115.844 254.370,115.142 254.243 C 114.750 254.172,114.142 253.960,113.790 253.771 C 113.438 253.583,113.039 253.448,112.903 253.470 C 112.767 253.493,112.586 253.484,112.500 253.451 C 111.792 253.175,104.237 251.869,103.433 251.884 C 103.006 251.892,101.953 251.817,101.094 251.717 C 99.332 251.512,96.400 251.225,94.531 251.076 C 93.844 251.021,92.508 250.892,91.563 250.789 C 90.617 250.686,89.281 250.542,88.594 250.469 C 68.487 248.333,56.970 240.804,48.921 224.531 C 42.866 212.290,38.598 191.192,38.317 172.109 L 38.281 169.688 19.347 169.688 L 0.412 169.688 0.207 176.484 M39.844 170.000 C 39.950 170.172,40.240 170.313,40.487 170.313 C 40.735 170.313,40.938 170.418,40.939 170.547 C 40.942 170.889,42.824 171.905,43.117 171.724 C 43.254 171.639,43.540 171.779,43.753 172.035 C 43.965 172.291,44.262 172.500,44.413 172.500 C 44.564 172.500,44.969 172.781,45.313 173.125 C 45.656 173.469,46.212 173.750,46.547 173.750 C 46.882 173.750,47.269 173.940,47.406 174.173 C 47.544 174.405,48.310 174.957,49.110 175.399 C 49.909 175.841,51.136 176.565,51.838 177.008 C 52.539 177.450,53.189 177.813,53.282 177.813 C 53.375 177.813,53.975 178.147,54.616 178.556 C 55.257 178.964,58.172 180.669,61.094 182.345 C 64.016 184.020,68.023 186.338,70.000 187.495 C 74.085 189.886,97.436 203.374,124.375 218.902 C 147.524 232.246,148.698 232.924,151.719 234.704 C 153.094 235.514,154.790 236.464,155.489 236.815 C 160.132 239.149,162.895 244.302,163.298 251.380 L 163.522 255.313 199.996 255.313 L 236.471 255.313 236.688 251.641 C 237.236 242.355,238.811 240.161,249.253 234.146 C 264.241 225.511,277.317 217.958,288.906 211.239 C 290.994 210.029,296.178 207.048,303.281 202.973 C 307.406 200.607,312.398 197.720,314.375 196.559 C 316.352 195.398,318.461 194.168,319.063 193.826 C 319.664 193.484,322.898 191.618,326.250 189.679 C 329.602 187.741,332.766 185.916,333.281 185.625 C 334.295 185.052,341.339 180.967,343.125 179.916 C 343.727 179.563,345.977 178.235,348.125 176.967 C 350.273 175.698,352.313 174.495,352.656 174.292 C 353.000 174.090,353.809 173.602,354.453 173.208 C 355.098 172.814,355.625 172.590,355.625 172.710 C 355.625 172.831,356.030 172.542,356.525 172.068 C 357.311 171.314,357.854 171.055,358.847 170.961 C 358.986 170.948,359.013 170.798,358.908 170.629 C 358.799 170.451,358.924 170.399,359.203 170.506 C 359.469 170.608,359.688 170.547,359.688 170.369 C 359.688 170.191,359.934 169.982,360.234 169.903 C 360.535 169.824,288.527 169.744,200.216 169.724 C 93.243 169.700,39.715 169.792,39.844 170.000 M361.724 171.954 C 361.726 173.200,361.637 175.063,361.525 176.094 C 361.413 177.125,361.234 179.336,361.127 181.006 C 358.825 217.064,347.461 239.582,327.963 246.718 C 325.065 247.779,324.284 248.053,323.910 248.143 C 323.830 248.162,323.023 248.383,322.116 248.633 C 321.210 248.884,320.117 249.142,319.688 249.208 C 319.258 249.273,317.641 249.538,316.094 249.797 C 313.333 250.258,311.392 250.513,308.281 250.822 C 306.745 250.975,306.251 251.017,302.188 251.334 C 300.248 251.485,299.357 251.578,295.577 252.021 C 293.281 252.291,288.384 253.131,287.813 253.354 C 287.555 253.454,287.168 253.508,286.953 253.473 C 286.738 253.438,286.563 253.572,286.563 253.770 C 286.563 253.968,286.365 254.054,286.124 253.961 C 285.883 253.869,285.598 253.881,285.490 253.989 C 285.383 254.097,285.123 254.216,284.913 254.254 C 279.486 255.244,280.800 255.268,340.855 255.290 L 399.679 255.313 399.766 265.391 C 399.814 270.934,399.886 254.727,399.926 229.375 C 399.966 204.023,399.906 180.223,399.793 176.484 L 399.588 169.688 380.653 169.688 L 361.719 169.689 361.724 171.954 " stroke="none" fill="#fb9b3c" fill-rule="evenodd"/><path id="path2" d="M43.051 418.013 C 42.581 418.263,41.808 418.977,41.333 419.600 L 40.469 420.732 40.387 456.698 L 40.305 492.664 41.012 494.048 C 41.401 494.809,42.116 495.722,42.601 496.075 L 43.483 496.719 199.724 496.798 C 338.186 496.868,356.068 496.823,356.873 496.408 C 357.372 496.149,358.174 495.422,358.656 494.790 L 359.531 493.642 359.531 457.212 L 359.531 420.781 358.631 419.605 C 356.922 417.371,358.257 417.478,333.366 417.572 C 308.066 417.667,309.971 417.467,308.594 420.176 C 307.992 421.360,307.965 422.117,307.881 440.391 L 307.794 459.375 289.060 459.375 L 270.326 459.375 270.241 439.914 L 270.156 420.453 269.428 419.523 C 267.785 417.426,269.037 417.528,244.756 417.513 C 220.973 417.499,221.546 417.460,220.063 419.198 C 218.773 420.710,218.750 421.077,218.750 440.489 L 218.750 459.375 200.000 459.375 L 181.250 459.375 181.250 440.507 C 181.250 418.749,181.296 419.072,178.027 417.833 C 176.227 417.152,133.830 417.407,132.284 418.108 C 129.592 419.331,129.688 418.513,129.688 440.300 L 129.688 459.375 110.938 459.375 L 92.188 459.375 92.188 440.973 C 92.188 420.244,92.175 420.112,90.046 418.489 L 88.955 417.656 66.431 417.608 C 47.275 417.567,43.778 417.628,43.051 418.013 " stroke="none" fill="#fccf5b" fill-rule="evenodd"/><path id="path3" d="M2.859 0.840 C 2.283 1.125,1.439 1.922,0.984 2.610 L 0.156 3.861 0.146 91.383 C 0.140 139.521,0.179 176.834,0.232 174.302 L 0.329 169.697 19.461 169.614 C 29.984 169.569,38.760 169.602,38.962 169.688 C 39.165 169.773,111.798 169.773,200.368 169.688 C 288.939 169.602,370.016 169.569,380.539 169.614 L 399.671 169.697 399.768 174.302 C 399.821 176.834,399.860 139.521,399.854 91.383 L 399.844 3.861 399.012 2.604 C 397.377 0.133,399.990 0.294,363.069 0.386 L 330.156 0.469 329.104 1.219 C 326.750 2.898,326.890 0.648,326.882 37.109 L 326.875 69.688 308.906 69.688 L 290.938 69.688 290.938 44.441 L 290.937 19.195 290.234 17.802 C 289.772 16.886,289.103 16.169,288.281 15.707 L 287.031 15.006 254.163 15.081 C 217.137 15.166,220.575 14.931,218.828 17.497 L 218.125 18.530 218.125 44.109 L 218.125 69.688 200.000 69.688 L 181.875 69.688 181.875 44.109 L 181.875 18.530 181.172 17.497 C 179.425 14.931,182.863 15.166,145.837 15.081 L 112.969 15.006 111.719 15.707 C 110.897 16.169,110.228 16.886,109.766 17.802 L 109.062 19.195 109.063 44.441 L 109.063 69.688 91.094 69.688 L 73.125 69.688 73.118 37.109 C 73.110 0.648,73.250 2.898,70.896 1.219 L 69.844 0.469 36.875 0.395 C 6.708 0.328,3.817 0.366,2.859 0.840 M361.648 171.250 C 361.648 172.023,361.709 172.340,361.783 171.953 C 361.858 171.566,361.858 170.934,361.783 170.547 C 361.709 170.160,361.648 170.477,361.648 171.250 M357.144 171.568 L 356.406 172.198 357.266 171.830 C 357.738 171.628,358.125 171.344,358.125 171.200 C 358.125 170.810,357.958 170.873,357.144 171.568 M43.125 171.759 C 43.125 171.921,43.547 172.302,44.063 172.607 C 44.580 172.912,45.000 173.012,45.000 172.830 C 45.000 172.649,44.835 172.500,44.634 172.500 C 44.433 172.500,44.011 172.267,43.696 171.983 C 43.382 171.698,43.125 171.598,43.125 171.759 " stroke="none" fill="#fc862e" fill-rule="evenodd"/><path id="path4" d="M40.519 334.297 C 40.406 338.035,40.317 349.602,40.320 360.000 C 40.327 381.137,40.273 380.601,42.542 382.218 L 43.594 382.969 86.025 383.050 C 123.482 383.122,128.563 383.076,129.374 382.657 C 130.775 381.932,131.789 380.671,132.162 379.189 C 132.542 377.680,132.636 345.641,132.293 334.297 L 132.088 327.500 86.406 327.500 L 40.725 327.500 40.519 334.297 M172.522 328.457 C 173.111 328.983,173.594 329.525,173.594 329.661 C 173.594 329.965,174.624 331.148,183.281 340.783 C 185.000 342.696,187.250 345.224,188.281 346.401 C 189.313 347.577,190.302 348.692,190.481 348.879 C 190.660 349.066,191.920 350.484,193.281 352.031 C 196.329 355.495,196.773 355.907,198.037 356.446 C 200.772 357.613,202.678 356.646,206.742 352.031 C 208.407 350.141,210.278 348.028,210.900 347.335 C 211.522 346.643,212.664 345.373,213.438 344.512 C 214.211 343.651,215.941 341.731,217.282 340.245 C 218.623 338.758,220.029 337.148,220.407 336.665 C 221.032 335.867,223.081 333.572,224.453 332.135 C 224.754 331.820,224.941 331.563,224.868 331.563 C 224.751 331.563,225.925 330.264,227.905 328.203 L 228.581 327.500 200.015 327.500 L 171.450 327.500 172.522 328.457 M267.707 334.297 C 267.364 345.641,267.458 377.680,267.838 379.189 C 268.211 380.671,269.225 381.932,270.626 382.657 C 271.437 383.076,276.518 383.122,313.975 383.050 L 356.406 382.969 357.458 382.218 C 359.727 380.601,359.673 381.137,359.680 360.000 C 359.683 349.602,359.594 338.035,359.481 334.297 L 359.275 327.500 313.594 327.500 L 267.912 327.500 267.707 334.297 " stroke="none" fill="#fcbc4c" fill-rule="evenodd"/></g></svg>
src/assets/images/copilot_logo.PNG
Binary files /dev/null and b/src/assets/images/copilot_logo.PNG differ
src/assets/images/cortex.svg
+16 -39
@@ -1,40 +1,17 @@
1 -<?xml version="1.0" standalone="no"?>
2 -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3 - "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4 -<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5 - width="184.000000pt" height="158.000000pt" viewBox="0 0 184.000000 158.000000"
6 - preserveAspectRatio="xMidYMid meet">
7 -
8 -<g transform="translate(0.000000,158.000000) scale(0.100000,-0.100000)"
9 -fill="#000000" stroke="none">
10 -<path d="M0 790 l0 -790 920 0 920 0 0 790 0 790 -920 0 -920 0 0 -790z m797
11 -649 c50 -24 113 -92 155 -166 27 -48 58 -70 58 -41 0 14 -44 91 -77 134 -30
12 -41 -29 50 10 71 46 24 147 21 222 -7 89 -34 118 -68 151 -178 31 -104 69 -157
13 -122 -172 26 -7 34 -6 39 6 3 8 4 16 2 17 -2 2 -21 10 -42 20 -40 18 -59 50
14 --95 162 -10 33 -23 69 -27 79 -8 17 -5 19 25 12 83 -16 189 -114 241 -223 43
15 --90 75 -253 50 -253 -5 0 -21 4 -36 10 -14 5 -68 16 -120 24 -110 16 -152 37
16 --182 92 -25 44 -49 52 -45 15 7 -70 106 -135 221 -146 135 -14 166 -31 182
17 --104 7 -30 5 -50 -5 -75 -19 -45 -33 -52 -59 -28 -12 11 -41 29 -64 41 -24 12
18 --49 34 -58 51 -18 34 -35 31 -35 -5 0 -24 60 -85 84 -85 8 0 24 -9 37 -19 l24
19 --20 -40 -18 c-50 -22 -278 -26 -337 -5 -59 21 -88 54 -88 102 0 46 -16 53 -31
20 -14 -14 -39 5 -87 47 -119 39 -30 37 -37 -16 -54 -20 -6 -83 -38 -140 -71 -110
21 --63 -142 -71 -172 -43 -31 28 -22 72 28 138 63 83 91 134 99 177 8 44 -1 78
22 --21 78 -10 0 -14 -13 -14 -47 0 -53 -12 -77 -93 -187 -42 -57 -52 -77 -51
23 --110 0 -23 3 -49 8 -59 18 -38 -148 -13 -197 31 -52 45 -72 157 -42 229 19 45
24 -19 53 -1 53 -9 0 -23 -17 -32 -40 -22 -51 -75 -75 -156 -68 -93 8 -153 72
25 --171 185 -7 44 17 153 34 153 5 0 16 -20 25 -44 10 -25 35 -61 57 -81 l40 -36
26 -133 3 133 3 77 -39 c42 -21 79 -36 82 -33 15 15 -9 37 -73 69 -67 33 -70 33
27 --205 33 l-137 0 -30 29 c-88 84 -78 225 22 333 36 38 47 35 47 -15 0 -48 39
28 --129 81 -169 63 -59 94 -66 270 -58 188 9 197 6 326 -81 52 -35 119 -72 150
29 --84 65 -24 138 -24 138 0 0 11 -17 17 -63 22 -64 7 -151 48 -217 101 -30 25
30 --30 25 -13 59 9 19 35 56 58 83 68 78 74 91 72 159 -1 70 -24 140 -44 133 -15
31 --5 -14 -10 3 -87 15 -69 9 -97 -36 -152 -38 -47 -92 -125 -97 -140 -2 -5 -27
32 -0 -56 11 -60 24 -117 26 -252 10 -90 -11 -98 -11 -148 11 -66 29 -107 75 -128
33 -146 -32 110 8 199 94 211 54 7 73 -9 102 -88 13 -34 35 -70 52 -84 32 -27 102
34 --50 125 -41 24 10 9 31 -28 37 -60 10 -80 28 -116 106 -38 82 -37 89 22 125
35 -39 24 89 23 142 -3z m583 -881 c0 -13 -9 -41 -19 -63 -17 -37 -31 -52 -116
36 --120 -29 -22 -30 -26 -28 -94 l3 -71 -55 0 -55 0 -6 41 c-11 66 -42 102 -99
37 -115 -61 13 -95 30 -95 47 1 18 183 116 265 143 44 15 95 23 138 24 63 0 67 -1
38 -67 -22z"/>
39 -</g>
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 +<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="314px" height="160px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
4 +<g><path style="opacity:1" fill="#fefefe" d="M -0.5,-0.5 C 104.167,-0.5 208.833,-0.5 313.5,-0.5C 313.5,52.8333 313.5,106.167 313.5,159.5C 208.833,159.5 104.167,159.5 -0.5,159.5C -0.5,106.167 -0.5,52.8333 -0.5,-0.5 Z"/></g>
5 +<g><path style="opacity:1" fill="#94949d" d="M 180.5,63.5 C 178.833,63.5 177.167,63.5 175.5,63.5C 175.5,65.8333 175.5,68.1667 175.5,70.5C 174.5,70.5 173.5,70.5 172.5,70.5C 174.202,68.1998 174.868,65.5331 174.5,62.5C 176.735,62.2053 178.735,62.5386 180.5,63.5 Z"/></g>
6 +<g><path style="opacity:1" fill="#141730" d="M 180.5,63.5 C 180.5,65.8333 180.5,68.1667 180.5,70.5C 182.167,70.5 183.833,70.5 185.5,70.5C 185.5,71.8333 185.5,73.1667 185.5,74.5C 183.833,74.5 182.167,74.5 180.5,74.5C 180.336,77.1873 180.503,79.854 181,82.5C 182.011,83.3366 183.178,83.67 184.5,83.5C 184.5,85.1667 184.5,86.8333 184.5,88.5C 181.315,88.9804 178.481,88.3137 176,86.5C 175.501,82.5138 175.334,78.5138 175.5,74.5C 174.5,74.5 173.5,74.5 172.5,74.5C 172.5,73.1667 172.5,71.8333 172.5,70.5C 173.5,70.5 174.5,70.5 175.5,70.5C 175.5,68.1667 175.5,65.8333 175.5,63.5C 177.167,63.5 178.833,63.5 180.5,63.5 Z"/></g>
7 +<g><path style="opacity:1" fill="#12152e" d="M 123.5,64.5 C 128.52,64.1174 132.853,65.6174 136.5,69C 135.541,70.4638 134.208,71.2972 132.5,71.5C 124.162,67.7495 119.995,70.4161 120,79.5C 123.568,83.9382 127.735,84.6049 132.5,81.5C 137.34,83.6768 137.007,85.8435 131.5,88C 116.964,89.4251 112.13,83.2585 117,69.5C 118.965,67.4497 121.132,65.783 123.5,64.5 Z"/></g>
8 +<g><path style="opacity:1" fill="#59c5c4" d="M 143.5,69.5 C 149.739,68.5356 154.239,70.8689 157,76.5C 157.485,85.3479 153.319,89.5145 144.5,89C 138.743,86.3175 136.576,81.8175 138,75.5C 139.36,72.9774 141.193,70.9774 143.5,69.5 Z"/></g>
9 +<g><path style="opacity:1" fill="#11142d" d="M 206.5,80.5 C 201.786,80.1734 197.12,80.5067 192.5,81.5C 192.624,82.1067 192.957,82.44 193.5,82.5C 196.01,85.0869 198.677,85.0869 201.5,82.5C 206.694,84.1718 206.694,86.0051 201.5,88C 191.516,89.6816 187.016,85.515 188,75.5C 192.357,68.9967 197.691,67.9967 204,72.5C 205.341,75.022 206.174,77.6887 206.5,80.5 Z"/></g>
10 +<g><path style="opacity:1" fill="#0f1129" d="M 167.5,69.5 C 168.5,69.5 169.5,69.5 170.5,69.5C 170.5,71.1667 170.5,72.8333 170.5,74.5C 167.762,73.9648 165.928,74.9648 165,77.5C 164.501,81.1516 164.335,84.8183 164.5,88.5C 162.833,88.5 161.167,88.5 159.5,88.5C 159.5,82.5 159.5,76.5 159.5,70.5C 161.467,70.2606 163.301,70.5939 165,71.5C 165.995,70.9341 166.828,70.2674 167.5,69.5 Z"/></g>
11 +<g><path style="opacity:1" fill="#15172f" d="M 209.5,69.5 C 212.394,70.8823 214.894,72.8823 217,75.5C 219,73.5 221,71.5 223,69.5C 224.167,70.6667 225.333,71.8333 226.5,73C 224.5,75 222.5,77 220.5,79C 222.53,80.8962 224.197,83.0629 225.5,85.5C 224.855,86.646 224.022,87.646 223,88.5C 221,86.5 219,84.5 217,82.5C 214.984,84.684 212.817,86.684 210.5,88.5C 208.525,87.7248 207.691,86.3914 208,84.5C 209.833,82.6667 211.667,80.8333 213.5,79C 211.316,76.9835 209.316,74.8169 207.5,72.5C 208.193,71.4822 208.859,70.4822 209.5,69.5 Z"/></g>
12 +<g><path style="opacity:1" fill="#f7fbfb" d="M 144.5,74.5 C 149.835,74.005 152.335,76.3384 152,81.5C 147.447,85.9034 144.28,85.0701 142.5,79C 142.519,77.167 143.185,75.667 144.5,74.5 Z"/></g>
13 +<g><path style="opacity:1" fill="#e5e5e7" d="M 195.5,73.5 C 198.061,73.4469 200.061,74.4469 201.5,76.5C 198.5,77.8333 195.5,77.8333 192.5,76.5C 193.34,75.265 194.34,74.265 195.5,73.5 Z"/></g>
14 +<g><path style="opacity:1" fill="#797a84" d="M 206.5,80.5 C 202.167,81.1667 197.833,81.8333 193.5,82.5C 192.957,82.44 192.624,82.1067 192.5,81.5C 197.12,80.5067 201.786,80.1734 206.5,80.5 Z"/></g>
15 +<g><path style="opacity:1" fill="#67c9c8" d="M 86.5,70.5 C 86.1159,68.3352 86.7826,66.6685 88.5,65.5C 89.086,65.7093 89.586,66.0426 90,66.5C 91.916,63.967 93.916,63.967 96,66.5C 103.826,63.2034 108.659,65.87 110.5,74.5C 107.495,74.747 104.995,73.747 103,71.5C 102.383,72.4491 102.549,73.2825 103.5,74C 105.392,74.9734 107.392,75.6401 109.5,76C 110.022,76.5613 110.355,77.228 110.5,78C 109.218,79.911 107.385,80.7444 105,80.5C 102.425,80.9096 100.758,79.9096 100,77.5C 99.7266,79.1012 99.2266,80.6012 98.5,82C 100.425,81.8651 102.425,81.6984 104.5,81.5C 103.551,83.7373 102.884,86.0706 102.5,88.5C 101.5,88.5 100.5,88.5 99.5,88.5C 99.5,87.5 99.5,86.5 99.5,85.5C 97.8002,85.3739 96.3002,84.7073 95,83.5C 90.5545,85.076 88.2212,83.4093 88,78.5C 85.7328,79.9348 83.7328,79.6015 82,77.5C 82.5994,75.4058 83.2661,72.7392 84,69.5C 84.3333,69.1667 84.6667,68.8333 85,68.5C 85.2784,69.4158 85.7784,70.0825 86.5,70.5 Z"/></g>
16 +<g><path style="opacity:1" fill="#d1eded" d="M 86.5,70.5 C 90.2522,72.025 94.2522,73.025 98.5,73.5C 98.3333,73.8333 98.1667,74.1667 98,74.5C 94.5894,73.7069 91.0894,73.2069 87.5,73C 86.7476,72.3292 86.4142,71.4959 86.5,70.5 Z"/></g>
17 </svg>
src/assets/images/event shipper.svg new
+3
@@ -0,0 +1,3 @@
1 +<?xml version="1.0" standalone="no"?>
2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg" version="1.1" width="400" height="497.1875" viewBox="0, 0, 400,497.1875"><g id="svgg"><path id="path0" d="M163.187 283.504 C 163.117 320.247,163.007 318.404,165.423 320.832 C 165.964 321.375,166.881 322.392,167.461 323.091 C 168.041 323.791,168.642 324.285,168.797 324.190 C 168.952 324.094,169.045 324.132,169.004 324.274 C 168.877 324.716,169.816 325.938,170.284 325.938 C 170.529 325.938,170.635 326.032,170.520 326.147 C 170.405 326.261,170.544 326.613,170.829 326.928 C 171.324 327.474,172.623 327.500,199.952 327.500 L 228.557 327.500 229.669 326.299 C 237.848 317.465,236.850 323.401,236.796 283.906 C 236.771 265.688,236.702 251.801,236.643 253.047 L 236.535 255.313 200.000 255.313 L 163.465 255.313 163.357 253.047 C 163.298 251.801,163.221 265.506,163.187 283.504 M0.313 265.477 C 0.313 275.210,0.341 275.707,0.973 276.966 C 2.064 279.137,3.126 280.334,4.489 280.930 C 5.200 281.240,7.750 282.439,10.156 283.594 C 12.563 284.749,16.289 286.538,18.438 287.569 C 20.586 288.600,23.328 289.905,24.531 290.469 C 25.734 291.033,29.180 292.679,32.188 294.128 C 35.195 295.576,38.254 297.025,38.984 297.347 L 40.313 297.933 40.382 317.326 C 40.420 327.992,40.494 334.645,40.546 332.109 L 40.642 327.500 86.406 327.500 L 132.171 327.500 132.278 332.109 C 132.337 334.645,132.364 323.500,132.338 307.344 C 132.296 281.827,132.223 277.579,131.783 275.000 C 130.884 269.738,130.032 267.327,127.695 263.438 C 126.365 261.225,123.870 258.438,123.220 258.438 C 122.996 258.438,122.813 258.313,122.813 258.161 C 122.812 258.008,122.355 257.653,121.797 257.371 C 120.339 256.634,119.564 256.139,119.308 255.781 C 119.161 255.575,98.839 255.441,59.699 255.387 L 0.313 255.305 0.313 265.477 M280.703 255.737 C 280.316 255.929,280.000 256.193,280.000 256.324 C 280.000 256.455,279.812 256.563,279.582 256.563 C 278.920 256.563,275.625 259.049,275.625 259.548 C 275.625 259.797,275.438 260.000,275.209 260.000 C 274.444 260.000,272.173 263.141,270.916 265.938 C 270.568 266.711,270.166 267.562,270.021 267.829 C 269.668 268.483,268.526 273.110,268.097 275.625 C 267.864 276.992,267.728 287.319,267.682 307.188 C 267.644 323.430,267.661 334.645,267.721 332.109 L 267.829 327.500 313.594 327.500 L 359.358 327.500 359.454 332.109 C 359.506 334.645,359.582 328.000,359.622 317.344 L 359.695 297.969 360.863 297.423 C 363.848 296.030,370.955 292.650,375.739 290.348 C 378.638 288.954,381.044 287.813,381.087 287.813 C 381.131 287.813,384.103 286.390,387.692 284.652 C 391.282 282.914,394.922 281.178,395.781 280.794 C 399.749 279.022,399.869 278.559,399.757 265.445 L 399.671 255.313 340.539 255.351 C 297.771 255.379,281.212 255.486,280.703 255.737 M172.721 329.024 C 173.441 329.716,173.926 329.912,173.595 329.377 C 173.489 329.206,173.094 328.907,172.717 328.713 L 172.031 328.360 172.721 329.024 " stroke="none" fill="#fbab44" fill-rule="evenodd"/><path id="path1" d="M0.207 176.484 C 0.094 180.223,0.034 204.094,0.074 229.531 C 0.115 254.969,0.186 271.175,0.234 265.545 L 0.321 255.309 59.223 255.389 C 91.619 255.433,118.125 255.435,118.125 255.395 C 118.125 255.251,115.844 254.370,115.142 254.243 C 114.750 254.172,114.142 253.960,113.790 253.771 C 113.438 253.583,113.039 253.448,112.903 253.470 C 112.767 253.493,112.586 253.484,112.500 253.451 C 111.792 253.175,104.237 251.869,103.433 251.884 C 103.006 251.892,101.953 251.817,101.094 251.717 C 99.332 251.512,96.400 251.225,94.531 251.076 C 93.844 251.021,92.508 250.892,91.563 250.789 C 90.617 250.686,89.281 250.542,88.594 250.469 C 68.487 248.333,56.970 240.804,48.921 224.531 C 42.866 212.290,38.598 191.192,38.317 172.109 L 38.281 169.688 19.347 169.688 L 0.412 169.688 0.207 176.484 M39.844 170.000 C 39.950 170.172,40.240 170.313,40.487 170.313 C 40.735 170.313,40.938 170.418,40.939 170.547 C 40.942 170.889,42.824 171.905,43.117 171.724 C 43.254 171.639,43.540 171.779,43.753 172.035 C 43.965 172.291,44.262 172.500,44.413 172.500 C 44.564 172.500,44.969 172.781,45.313 173.125 C 45.656 173.469,46.212 173.750,46.547 173.750 C 46.882 173.750,47.269 173.940,47.406 174.173 C 47.544 174.405,48.310 174.957,49.110 175.399 C 49.909 175.841,51.136 176.565,51.838 177.008 C 52.539 177.450,53.189 177.813,53.282 177.813 C 53.375 177.813,53.975 178.147,54.616 178.556 C 55.257 178.964,58.172 180.669,61.094 182.345 C 64.016 184.020,68.023 186.338,70.000 187.495 C 74.085 189.886,97.436 203.374,124.375 218.902 C 147.524 232.246,148.698 232.924,151.719 234.704 C 153.094 235.514,154.790 236.464,155.489 236.815 C 160.132 239.149,162.895 244.302,163.298 251.380 L 163.522 255.313 199.996 255.313 L 236.471 255.313 236.688 251.641 C 237.236 242.355,238.811 240.161,249.253 234.146 C 264.241 225.511,277.317 217.958,288.906 211.239 C 290.994 210.029,296.178 207.048,303.281 202.973 C 307.406 200.607,312.398 197.720,314.375 196.559 C 316.352 195.398,318.461 194.168,319.063 193.826 C 319.664 193.484,322.898 191.618,326.250 189.679 C 329.602 187.741,332.766 185.916,333.281 185.625 C 334.295 185.052,341.339 180.967,343.125 179.916 C 343.727 179.563,345.977 178.235,348.125 176.967 C 350.273 175.698,352.313 174.495,352.656 174.292 C 353.000 174.090,353.809 173.602,354.453 173.208 C 355.098 172.814,355.625 172.590,355.625 172.710 C 355.625 172.831,356.030 172.542,356.525 172.068 C 357.311 171.314,357.854 171.055,358.847 170.961 C 358.986 170.948,359.013 170.798,358.908 170.629 C 358.799 170.451,358.924 170.399,359.203 170.506 C 359.469 170.608,359.688 170.547,359.688 170.369 C 359.688 170.191,359.934 169.982,360.234 169.903 C 360.535 169.824,288.527 169.744,200.216 169.724 C 93.243 169.700,39.715 169.792,39.844 170.000 M361.724 171.954 C 361.726 173.200,361.637 175.063,361.525 176.094 C 361.413 177.125,361.234 179.336,361.127 181.006 C 358.825 217.064,347.461 239.582,327.963 246.718 C 325.065 247.779,324.284 248.053,323.910 248.143 C 323.830 248.162,323.023 248.383,322.116 248.633 C 321.210 248.884,320.117 249.142,319.688 249.208 C 319.258 249.273,317.641 249.538,316.094 249.797 C 313.333 250.258,311.392 250.513,308.281 250.822 C 306.745 250.975,306.251 251.017,302.188 251.334 C 300.248 251.485,299.357 251.578,295.577 252.021 C 293.281 252.291,288.384 253.131,287.813 253.354 C 287.555 253.454,287.168 253.508,286.953 253.473 C 286.738 253.438,286.563 253.572,286.563 253.770 C 286.563 253.968,286.365 254.054,286.124 253.961 C 285.883 253.869,285.598 253.881,285.490 253.989 C 285.383 254.097,285.123 254.216,284.913 254.254 C 279.486 255.244,280.800 255.268,340.855 255.290 L 399.679 255.313 399.766 265.391 C 399.814 270.934,399.886 254.727,399.926 229.375 C 399.966 204.023,399.906 180.223,399.793 176.484 L 399.588 169.688 380.653 169.688 L 361.719 169.689 361.724 171.954 " stroke="none" fill="#fb9b3c" fill-rule="evenodd"/><path id="path2" d="M43.051 418.013 C 42.581 418.263,41.808 418.977,41.333 419.600 L 40.469 420.732 40.387 456.698 L 40.305 492.664 41.012 494.048 C 41.401 494.809,42.116 495.722,42.601 496.075 L 43.483 496.719 199.724 496.798 C 338.186 496.868,356.068 496.823,356.873 496.408 C 357.372 496.149,358.174 495.422,358.656 494.790 L 359.531 493.642 359.531 457.212 L 359.531 420.781 358.631 419.605 C 356.922 417.371,358.257 417.478,333.366 417.572 C 308.066 417.667,309.971 417.467,308.594 420.176 C 307.992 421.360,307.965 422.117,307.881 440.391 L 307.794 459.375 289.060 459.375 L 270.326 459.375 270.241 439.914 L 270.156 420.453 269.428 419.523 C 267.785 417.426,269.037 417.528,244.756 417.513 C 220.973 417.499,221.546 417.460,220.063 419.198 C 218.773 420.710,218.750 421.077,218.750 440.489 L 218.750 459.375 200.000 459.375 L 181.250 459.375 181.250 440.507 C 181.250 418.749,181.296 419.072,178.027 417.833 C 176.227 417.152,133.830 417.407,132.284 418.108 C 129.592 419.331,129.688 418.513,129.688 440.300 L 129.688 459.375 110.938 459.375 L 92.188 459.375 92.188 440.973 C 92.188 420.244,92.175 420.112,90.046 418.489 L 88.955 417.656 66.431 417.608 C 47.275 417.567,43.778 417.628,43.051 418.013 " stroke="none" fill="#fccf5b" fill-rule="evenodd"/><path id="path3" d="M2.859 0.840 C 2.283 1.125,1.439 1.922,0.984 2.610 L 0.156 3.861 0.146 91.383 C 0.140 139.521,0.179 176.834,0.232 174.302 L 0.329 169.697 19.461 169.614 C 29.984 169.569,38.760 169.602,38.962 169.688 C 39.165 169.773,111.798 169.773,200.368 169.688 C 288.939 169.602,370.016 169.569,380.539 169.614 L 399.671 169.697 399.768 174.302 C 399.821 176.834,399.860 139.521,399.854 91.383 L 399.844 3.861 399.012 2.604 C 397.377 0.133,399.990 0.294,363.069 0.386 L 330.156 0.469 329.104 1.219 C 326.750 2.898,326.890 0.648,326.882 37.109 L 326.875 69.688 308.906 69.688 L 290.938 69.688 290.938 44.441 L 290.937 19.195 290.234 17.802 C 289.772 16.886,289.103 16.169,288.281 15.707 L 287.031 15.006 254.163 15.081 C 217.137 15.166,220.575 14.931,218.828 17.497 L 218.125 18.530 218.125 44.109 L 218.125 69.688 200.000 69.688 L 181.875 69.688 181.875 44.109 L 181.875 18.530 181.172 17.497 C 179.425 14.931,182.863 15.166,145.837 15.081 L 112.969 15.006 111.719 15.707 C 110.897 16.169,110.228 16.886,109.766 17.802 L 109.062 19.195 109.063 44.441 L 109.063 69.688 91.094 69.688 L 73.125 69.688 73.118 37.109 C 73.110 0.648,73.250 2.898,70.896 1.219 L 69.844 0.469 36.875 0.395 C 6.708 0.328,3.817 0.366,2.859 0.840 M361.648 171.250 C 361.648 172.023,361.709 172.340,361.783 171.953 C 361.858 171.566,361.858 170.934,361.783 170.547 C 361.709 170.160,361.648 170.477,361.648 171.250 M357.144 171.568 L 356.406 172.198 357.266 171.830 C 357.738 171.628,358.125 171.344,358.125 171.200 C 358.125 170.810,357.958 170.873,357.144 171.568 M43.125 171.759 C 43.125 171.921,43.547 172.302,44.063 172.607 C 44.580 172.912,45.000 173.012,45.000 172.830 C 45.000 172.649,44.835 172.500,44.634 172.500 C 44.433 172.500,44.011 172.267,43.696 171.983 C 43.382 171.698,43.125 171.598,43.125 171.759 " stroke="none" fill="#fc862e" fill-rule="evenodd"/><path id="path4" d="M40.519 334.297 C 40.406 338.035,40.317 349.602,40.320 360.000 C 40.327 381.137,40.273 380.601,42.542 382.218 L 43.594 382.969 86.025 383.050 C 123.482 383.122,128.563 383.076,129.374 382.657 C 130.775 381.932,131.789 380.671,132.162 379.189 C 132.542 377.680,132.636 345.641,132.293 334.297 L 132.088 327.500 86.406 327.500 L 40.725 327.500 40.519 334.297 M172.522 328.457 C 173.111 328.983,173.594 329.525,173.594 329.661 C 173.594 329.965,174.624 331.148,183.281 340.783 C 185.000 342.696,187.250 345.224,188.281 346.401 C 189.313 347.577,190.302 348.692,190.481 348.879 C 190.660 349.066,191.920 350.484,193.281 352.031 C 196.329 355.495,196.773 355.907,198.037 356.446 C 200.772 357.613,202.678 356.646,206.742 352.031 C 208.407 350.141,210.278 348.028,210.900 347.335 C 211.522 346.643,212.664 345.373,213.438 344.512 C 214.211 343.651,215.941 341.731,217.282 340.245 C 218.623 338.758,220.029 337.148,220.407 336.665 C 221.032 335.867,223.081 333.572,224.453 332.135 C 224.754 331.820,224.941 331.563,224.868 331.563 C 224.751 331.563,225.925 330.264,227.905 328.203 L 228.581 327.500 200.015 327.500 L 171.450 327.500 172.522 328.457 M267.707 334.297 C 267.364 345.641,267.458 377.680,267.838 379.189 C 268.211 380.671,269.225 381.932,270.626 382.657 C 271.437 383.076,276.518 383.122,313.975 383.050 L 356.406 382.969 357.458 382.218 C 359.727 380.601,359.673 381.137,359.680 360.000 C 359.683 349.602,359.594 338.035,359.481 334.297 L 359.275 327.500 313.594 327.500 L 267.912 327.500 267.707 334.297 " stroke="none" fill="#fcbc4c" fill-rule="evenodd"/></g></svg>
src/assets/images/grafana.svg new
+41
@@ -0,0 +1,41 @@
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 +<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="220px" height="229px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
4 +<g><path style="opacity:1" fill="#fdfdfc" d="M -0.5,-0.5 C 33.8333,-0.5 68.1667,-0.5 102.5,-0.5C 102.771,1.31166 103.438,2.97832 104.5,4.5C 106.483,4.81483 107.816,5.81483 108.5,7.5C 103.625,13.0631 99.9588,19.3964 97.5,26.5C 89.3804,29.4808 81.7138,33.3141 74.5,38C 67.4983,36.4463 60.3316,35.613 53,35.5C 49.5,35.6667 46,35.8333 42.5,36C 37.4935,37.1718 32.4935,38.3385 27.5,39.5C 26.7899,49.7361 27.9565,59.7361 31,69.5C 32.5327,74.4995 35.0327,78.8328 38.5,82.5C 38.1313,86.8941 37.4646,91.2274 36.5,95.5C 34.5991,99.8367 33.4324,104.503 33,109.5C 32.2904,110.973 31.1238,111.64 29.5,111.5C 24.8333,115.167 20.1667,118.833 15.5,122.5C 10.2585,119.079 8.25849,120.412 9.5,126.5C 8.5126,129.872 7.34594,133.539 6,137.5C 4.84683,134.289 4.18016,130.956 4,127.5C 1.4952,129.279 -0.00480187,131.612 -0.5,134.5C -0.5,89.5 -0.5,44.5 -0.5,-0.5 Z"/></g>
5 +<g><path style="opacity:1" fill="#fdfdfc" d="M 102.5,-0.5 C 141.5,-0.5 180.5,-0.5 219.5,-0.5C 219.5,26.1667 219.5,52.8333 219.5,79.5C 217.228,79.9114 216.895,81.078 218.5,83C 218.049,86.3379 217.049,86.8379 215.5,84.5C 214.914,84.7093 214.414,85.0426 214,85.5C 212.306,83.7604 211.139,81.7604 210.5,79.5C 212.716,79.7254 214.383,78.8921 215.5,77C 214.134,75.4002 213.134,73.5668 212.5,71.5C 211.808,72.0253 211.308,72.6919 211,73.5C 210.333,72.1667 209.667,72.1667 209,73.5C 208.658,71.3808 207.825,71.0474 206.5,72.5C 201.679,63.6701 195.679,55.6701 188.5,48.5C 189.112,46.0571 189.445,43.5571 189.5,41C 189.672,37.5226 189.006,34.356 187.5,31.5C 187.171,29.0092 186.171,26.8425 184.5,25C 181.304,24.1955 178.304,24.3622 175.5,25.5C 170.497,26.2499 165.83,27.9166 161.5,30.5C 154.341,27.7676 147.008,25.6009 139.5,24C 135.115,13.9537 128.282,6.12037 119,0.5C 115.339,2.67376 111.839,5.00709 108.5,7.5C 107.816,5.81483 106.483,4.81483 104.5,4.5C 103.438,2.97832 102.771,1.31166 102.5,-0.5 Z"/></g>
6 +<g><path style="opacity:1" fill="#f15b2a" d="M 175.5,25.5 C 177.857,25.3367 180.19,25.5034 182.5,26C 183.833,28.1906 185.5,30.024 187.5,31.5C 189.006,34.356 189.672,37.5226 189.5,41C 189.445,43.5571 189.112,46.0571 188.5,48.5C 195.679,55.6701 201.679,63.6701 206.5,72.5C 207.388,76.2157 208.388,79.8823 209.5,83.5C 209.59,85.6963 209.923,87.863 210.5,90C 210.391,93.3722 209.391,96.2056 207.5,98.5C 197.275,73.7797 179.275,57.6131 153.5,50C 128.9,44.3517 106.566,48.8517 86.5,63.5C 84.1152,66.2117 81.7819,68.8784 79.5,71.5C 77.4176,71.472 75.5843,72.1387 74,73.5C 73.6667,73.1667 73.3333,72.8333 73,72.5C 72.5814,73.6721 71.9147,74.6721 71,75.5C 71.2068,73.2487 71.3735,70.9154 71.5,68.5C 69.8561,68.2865 68.3561,68.6198 67,69.5C 67.0068,73.8138 66.0068,77.8138 64,81.5C 58.4642,79.5745 52.6309,78.9078 46.5,79.5C 46.5,80.5 46.5,81.5 46.5,82.5C 45.5,82.5 44.5,82.5 43.5,82.5C 43.5,81.5 43.5,80.5 43.5,79.5C 42.5,79.5 41.5,79.5 40.5,79.5C 40.7148,81.1788 40.0481,82.1788 38.5,82.5C 35.0327,78.8328 32.5327,74.4995 31,69.5C 27.9565,59.7361 26.7899,49.7361 27.5,39.5C 32.4935,38.3385 37.4935,37.1718 42.5,36C 46,35.8333 49.5,35.6667 53,35.5C 60.3316,35.613 67.4983,36.4463 74.5,38C 81.7138,33.3141 89.3804,29.4808 97.5,26.5C 99.9588,19.3964 103.625,13.0631 108.5,7.5C 111.839,5.00709 115.339,2.67376 119,0.5C 128.282,6.12037 135.115,13.9537 139.5,24C 147.008,25.6009 154.341,27.7676 161.5,30.5C 165.83,27.9166 170.497,26.2499 175.5,25.5 Z"/></g>
7 +<g><path style="opacity:1" fill="#d67752" d="M 175.5,25.5 C 178.304,24.3622 181.304,24.1955 184.5,25C 186.171,26.8425 187.171,29.0092 187.5,31.5C 185.5,30.024 183.833,28.1906 182.5,26C 180.19,25.5034 177.857,25.3367 175.5,25.5 Z"/></g>
8 +<g><path style="opacity:1" fill="#fcfcfa" d="M 207.5,98.5 C 207.935,101.157 208.935,103.491 210.5,105.5C 210.5,105.833 210.5,106.167 210.5,106.5C 209.756,109.95 211.09,111.616 214.5,111.5C 214.817,107.298 214.483,103.298 213.5,99.5C 213.562,93.7098 212.229,88.3764 209.5,83.5C 208.388,79.8823 207.388,76.2157 206.5,72.5C 207.825,71.0474 208.658,71.3808 209,73.5C 209.667,72.1667 210.333,72.1667 211,73.5C 211.308,72.6919 211.808,72.0253 212.5,71.5C 213.134,73.5668 214.134,75.4002 215.5,77C 214.383,78.8921 212.716,79.7254 210.5,79.5C 211.139,81.7604 212.306,83.7604 214,85.5C 214.414,85.0426 214.914,84.7093 215.5,84.5C 217.049,86.8379 218.049,86.3379 218.5,83C 216.895,81.078 217.228,79.9114 219.5,79.5C 219.5,105.167 219.5,130.833 219.5,156.5C 218.153,155.829 216.986,155.829 216,156.5C 215.692,155.692 215.192,155.025 214.5,154.5C 214.245,156.343 214.078,158.343 214,160.5C 213.667,160.833 213.333,161.167 213,161.5C 212.29,160.027 211.124,159.36 209.5,159.5C 207.782,157.636 206.615,155.303 206,152.5C 204,150.5 202,148.5 200,146.5C 199.828,139.987 199.328,133.653 198.5,127.5C 198.277,123.838 197.277,120.505 195.5,117.5C 192.872,108.872 188.206,101.538 181.5,95.5C 179.445,93.4453 177.112,91.7787 174.5,90.5C 166.514,84.7377 157.514,81.2377 147.5,80C 141.126,79.392 134.793,79.7253 128.5,81C 125.826,81.6701 123.493,82.8368 121.5,84.5C 115.556,86.4569 111.223,90.1236 108.5,95.5C 105.137,96.5376 103.137,98.871 102.5,102.5C 97.1366,110.988 95.3032,120.322 97,130.5C 97.84,133.202 98.6733,135.868 99.5,138.5C 103.204,147.203 109.538,153.203 118.5,156.5C 121.718,157.954 125.218,158.621 129,158.5C 131.361,158.496 133.527,158.163 135.5,157.5C 139.339,156.555 143.005,155.221 146.5,153.5C 146.768,151.901 146.434,150.568 145.5,149.5C 144.909,148.849 144.243,148.182 143.5,147.5C 145.006,146.253 146.506,146.253 148,147.5C 148.498,150.482 148.665,153.482 148.5,156.5C 146.135,157.051 143.801,157.884 141.5,159C 143.256,159.202 144.922,159.702 146.5,160.5C 147.244,163.443 147.744,166.443 148,169.5C 149.154,168.257 150.488,167.257 152,166.5C 152.684,164.521 152.184,162.854 150.5,161.5C 150.833,161.167 151.167,160.833 151.5,160.5C 154.174,161.517 156.84,161.684 159.5,161C 158.5,162 157.5,163 156.5,164C 157.025,164.692 157.692,165.192 158.5,165.5C 160.086,161.284 162.419,160.618 165.5,163.5C 165.167,164.167 164.833,164.833 164.5,165.5C 162.188,167.146 160.188,169.146 158.5,171.5C 154.449,174.364 150.449,177.03 146.5,179.5C 136.873,183.206 126.873,184.373 116.5,183C 109.396,180.799 102.396,178.299 95.5,175.5C 95.9111,172.724 95.0777,172.057 93,173.5C 91.6136,172.271 90.1136,171.271 88.5,170.5C 84.4448,167.112 80.7781,163.445 77.5,159.5C 76.1667,157.5 74.8333,155.5 73.5,153.5C 71.4854,150.131 69.4854,146.798 67.5,143.5C 66.7779,139.494 65.9445,135.494 65,131.5C 64.6174,130.944 64.1174,130.611 63.5,130.5C 63.5,129.5 63.5,128.5 63.5,127.5C 63.5,122.167 63.5,116.833 63.5,111.5C 65.9466,106.562 66.9466,101.228 66.5,95.5C 69.7713,86.9597 74.1046,78.9597 79.5,71.5C 81.7819,68.8784 84.1152,66.2117 86.5,63.5C 106.566,48.8517 128.9,44.3517 153.5,50C 179.275,57.6131 197.275,73.7797 207.5,98.5 Z"/></g>
9 +<g><path style="opacity:1" fill="#f5672b" d="M 174.5,90.5 C 168.85,92.4662 163.184,94.4662 157.5,96.5C 155.693,96.0275 153.86,95.6942 152,95.5C 149.23,96.5454 146.397,97.212 143.5,97.5C 142.5,97.5 141.5,97.5 140.5,97.5C 139.048,96.6981 137.382,96.1981 135.5,96C 138.167,95.6667 140.833,95.3333 143.5,95C 141.19,94.5034 138.857,94.3367 136.5,94.5C 136.5,93.5 136.5,92.5 136.5,91.5C 144.769,93.0463 153.102,93.5463 161.5,93C 162.623,91.9563 163.956,91.2896 165.5,91C 162.689,88.5127 159.523,86.6793 156,85.5C 154.272,85.4537 152.772,85.9537 151.5,87C 154.976,87.4764 157.976,88.8098 160.5,91C 156.695,92.0786 153.362,91.4119 150.5,89C 148,88.8333 145.5,88.6667 143,88.5C 136.408,89.2281 129.908,89.5614 123.5,89.5C 119.762,88.4691 119.095,86.8024 121.5,84.5C 123.493,82.8368 125.826,81.6701 128.5,81C 134.793,79.7253 141.126,79.392 147.5,80C 157.514,81.2377 166.514,84.7377 174.5,90.5 Z"/></g>
10 +<g><path style="opacity:1" fill="#f26826" d="M 79.5,71.5 C 74.1046,78.9597 69.7713,86.9597 66.5,95.5C 65.5489,96.9187 65.2155,98.5853 65.5,100.5C 64.7784,100.918 64.2784,101.584 64,102.5C 63.5034,100.19 63.3367,97.8568 63.5,95.5C 58.1667,95.5 52.8333,95.5 47.5,95.5C 47.6292,91.4325 46.4625,90.4325 44,92.5C 42.779,91.7282 41.779,90.7282 41,89.5C 39.4316,91.5751 37.9316,93.5751 36.5,95.5C 37.4646,91.2274 38.1313,86.8941 38.5,82.5C 40.0481,82.1788 40.7148,81.1788 40.5,79.5C 41.5,79.5 42.5,79.5 43.5,79.5C 43.5,80.5 43.5,81.5 43.5,82.5C 44.5,82.5 45.5,82.5 46.5,82.5C 46.5,81.5 46.5,80.5 46.5,79.5C 52.6309,78.9078 58.4642,79.5745 64,81.5C 66.0068,77.8138 67.0068,73.8138 67,69.5C 68.3561,68.6198 69.8561,68.2865 71.5,68.5C 71.3735,70.9154 71.2068,73.2487 71,75.5C 71.9147,74.6721 72.5814,73.6721 73,72.5C 73.3333,72.8333 73.6667,73.1667 74,73.5C 75.5843,72.1387 77.4176,71.472 79.5,71.5 Z"/></g>
11 +<g><path style="opacity:1" fill="#f16f26" d="M 121.5,84.5 C 119.095,86.8024 119.762,88.4691 123.5,89.5C 129.908,89.5614 136.408,89.2281 143,88.5C 145.5,88.6667 148,88.8333 150.5,89C 153.362,91.4119 156.695,92.0786 160.5,91C 157.976,88.8098 154.976,87.4764 151.5,87C 152.772,85.9537 154.272,85.4537 156,85.5C 159.523,86.6793 162.689,88.5127 165.5,91C 163.956,91.2896 162.623,91.9563 161.5,93C 153.102,93.5463 144.769,93.0463 136.5,91.5C 136.5,92.5 136.5,93.5 136.5,94.5C 138.857,94.3367 141.19,94.5034 143.5,95C 140.833,95.3333 138.167,95.6667 135.5,96C 137.382,96.1981 139.048,96.6981 140.5,97.5C 131.08,97.5467 123.08,100.88 116.5,107.5C 114.5,108.167 112.5,108.833 110.5,109.5C 110.688,107.897 110.188,106.563 109,105.5C 108.667,105.833 108.333,106.167 108,106.5C 107.125,103.785 105.292,102.452 102.5,102.5C 103.137,98.871 105.137,96.5376 108.5,95.5C 111.223,90.1236 115.556,86.4569 121.5,84.5 Z"/></g>
12 +<g><path style="opacity:1" fill="#eb7739" d="M 209.5,83.5 C 212.229,88.3764 213.562,93.7098 213.5,99.5C 212.849,98.9094 212.182,98.2427 211.5,97.5C 210.52,100.086 210.187,102.753 210.5,105.5C 208.935,103.491 207.935,101.157 207.5,98.5C 209.391,96.2056 210.391,93.3722 210.5,90C 209.923,87.863 209.59,85.6963 209.5,83.5 Z"/></g>
13 +<g><path style="opacity:1" fill="#f47224" d="M 174.5,90.5 C 177.112,91.7787 179.445,93.4453 181.5,95.5C 181.762,96.9778 181.429,98.3112 180.5,99.5C 179.391,98.4104 178.391,98.4104 177.5,99.5C 179.922,101.286 179.922,102.952 177.5,104.5C 178.002,105.521 178.668,105.688 179.5,105C 181.243,103.89 182.576,102.39 183.5,100.5C 184.429,101.689 184.762,103.022 184.5,104.5C 185.5,104.5 186.5,104.5 187.5,104.5C 187.814,108.193 186.148,110.527 182.5,111.5C 182.788,109.952 182.788,108.285 182.5,106.5C 180.817,108.514 178.817,110.18 176.5,111.5C 175.065,109.599 173.398,109.266 171.5,110.5C 172.428,111.768 172.595,113.101 172,114.5C 170.871,112.859 169.371,111.859 167.5,111.5C 160.561,105.088 152.561,100.421 143.5,97.5C 146.397,97.212 149.23,96.5454 152,95.5C 153.86,95.6942 155.693,96.0275 157.5,96.5C 163.184,94.4662 168.85,92.4662 174.5,90.5 Z"/></g>
14 +<g><path style="opacity:1" fill="#f47422" d="M 65.5,100.5 C 64.0825,104.002 63.4158,107.669 63.5,111.5C 61.8333,111.5 60.1667,111.5 58.5,111.5C 58.1667,115.5 57.8333,115.5 57.5,111.5C 54.8333,111.5 52.1667,111.5 49.5,111.5C 49.8134,114.247 49.48,116.914 48.5,119.5C 47.5713,118.311 47.238,116.978 47.5,115.5C 42.1563,115.666 36.8229,115.499 31.5,115C 30.1772,114.184 29.5106,113.017 29.5,111.5C 31.1238,111.64 32.2904,110.973 33,109.5C 33.4324,104.503 34.5991,99.8367 36.5,95.5C 37.9316,93.5751 39.4316,91.5751 41,89.5C 41.779,90.7282 42.779,91.7282 44,92.5C 46.4625,90.4325 47.6292,91.4325 47.5,95.5C 52.8333,95.5 58.1667,95.5 63.5,95.5C 63.3367,97.8568 63.5034,100.19 64,102.5C 64.2784,101.584 64.7784,100.918 65.5,100.5 Z"/></g>
15 +<g><path style="opacity:1" fill="#f3c19e" d="M 66.5,95.5 C 66.9466,101.228 65.9466,106.562 63.5,111.5C 63.4158,107.669 64.0825,104.002 65.5,100.5C 65.2155,98.5853 65.5489,96.9187 66.5,95.5 Z"/></g>
16 +<g><path style="opacity:1" fill="#fcfcf9" d="M 140.5,97.5 C 141.5,97.5 142.5,97.5 143.5,97.5C 152.561,100.421 160.561,105.088 167.5,111.5C 170.742,116.65 173.408,121.983 175.5,127.5C 176.397,136.564 175.063,145.231 171.5,153.5C 169.472,156.902 167.472,160.235 165.5,163.5C 162.419,160.618 160.086,161.284 158.5,165.5C 157.692,165.192 157.025,164.692 156.5,164C 157.5,163 158.5,162 159.5,161C 156.84,161.684 154.174,161.517 151.5,160.5C 151.167,160.833 150.833,161.167 150.5,161.5C 152.184,162.854 152.684,164.521 152,166.5C 150.488,167.257 149.154,168.257 148,169.5C 147.744,166.443 147.244,163.443 146.5,160.5C 144.922,159.702 143.256,159.202 141.5,159C 143.801,157.884 146.135,157.051 148.5,156.5C 148.665,153.482 148.498,150.482 148,147.5C 146.506,146.253 145.006,146.253 143.5,147.5C 144.243,148.182 144.909,148.849 145.5,149.5C 132.086,154.357 120.919,151.357 112,140.5C 111.342,137.715 110.509,135.049 109.5,132.5C 108.101,123.007 110.434,114.674 116.5,107.5C 123.08,100.88 131.08,97.5467 140.5,97.5 Z"/></g>
17 +<g><path style="opacity:1" fill="#f87211" d="M 213.5,99.5 C 213.82,102.898 213.487,106.232 212.5,109.5C 211.824,108.398 211.158,107.398 210.5,106.5C 210.5,106.167 210.5,105.833 210.5,105.5C 210.187,102.753 210.52,100.086 211.5,97.5C 212.182,98.2427 212.849,98.9094 213.5,99.5 Z"/></g>
18 +<g><path style="opacity:1" fill="#f7caa0" d="M 213.5,99.5 C 214.483,103.298 214.817,107.298 214.5,111.5C 211.09,111.616 209.756,109.95 210.5,106.5C 211.158,107.398 211.824,108.398 212.5,109.5C 213.487,106.232 213.82,102.898 213.5,99.5 Z"/></g>
19 +<g><path style="opacity:1" fill="#f47f1f" d="M 29.5,111.5 C 29.5106,113.017 30.1772,114.184 31.5,115C 36.8229,115.499 42.1563,115.666 47.5,115.5C 47.238,116.978 47.5713,118.311 48.5,119.5C 49.48,116.914 49.8134,114.247 49.5,111.5C 52.1667,111.5 54.8333,111.5 57.5,111.5C 57.8333,115.5 58.1667,115.5 58.5,111.5C 60.1667,111.5 61.8333,111.5 63.5,111.5C 63.5,116.833 63.5,122.167 63.5,127.5C 60.8333,127.5 58.1667,127.5 55.5,127.5C 55.8034,124.412 54.4701,122.746 51.5,122.5C 51.5792,123.93 51.2458,125.264 50.5,126.5C 44.2015,127.496 37.8682,127.83 31.5,127.5C 31.5,126.5 31.5,125.5 31.5,124.5C 30.5,124.5 29.5,124.5 28.5,124.5C 28.5,125.5 28.5,126.5 28.5,127.5C 26.0072,127.671 24.1739,126.671 23,124.5C 21.2658,126.451 19.0991,127.451 16.5,127.5C 15.6993,125.958 15.366,124.292 15.5,122.5C 20.1667,118.833 24.8333,115.167 29.5,111.5 Z"/></g>
20 +<g><path style="opacity:1" fill="#f37e27" d="M 102.5,102.5 C 105.292,102.452 107.125,103.785 108,106.5C 108.333,106.167 108.667,105.833 109,105.5C 110.188,106.563 110.688,107.897 110.5,109.5C 112.5,108.833 114.5,108.167 116.5,107.5C 110.434,114.674 108.101,123.007 109.5,132.5C 106.132,130.133 102.966,127.466 100,124.5C 99.5604,126.076 98.727,127.41 97.5,128.5C 98.727,129.59 99.5604,130.924 100,132.5C 101.232,129.77 102.065,129.937 102.5,133C 102.508,135.551 101.508,137.384 99.5,138.5C 98.6733,135.868 97.84,133.202 97,130.5C 95.3032,120.322 97.1366,110.988 102.5,102.5 Z"/></g>
21 +<g><path style="opacity:1" fill="#f37f21" d="M 181.5,95.5 C 188.206,101.538 192.872,108.872 195.5,117.5C 195.813,120.572 195.146,123.405 193.5,126C 194.536,129.121 194.703,132.287 194,135.5C 192.62,132.656 191.12,129.99 189.5,127.5C 187.5,127.5 185.5,127.5 183.5,127.5C 183.702,129.989 183.202,132.323 182,134.5C 180.989,135.337 179.822,135.67 178.5,135.5C 178.5,132.833 178.5,130.167 178.5,127.5C 177.5,127.5 176.5,127.5 175.5,127.5C 173.408,121.983 170.742,116.65 167.5,111.5C 169.371,111.859 170.871,112.859 172,114.5C 172.595,113.101 172.428,111.768 171.5,110.5C 173.398,109.266 175.065,109.599 176.5,111.5C 178.817,110.18 180.817,108.514 182.5,106.5C 182.788,108.285 182.788,109.952 182.5,111.5C 186.148,110.527 187.814,108.193 187.5,104.5C 186.5,104.5 185.5,104.5 184.5,104.5C 184.762,103.022 184.429,101.689 183.5,100.5C 182.576,102.39 181.243,103.89 179.5,105C 178.668,105.688 178.002,105.521 177.5,104.5C 179.922,102.952 179.922,101.286 177.5,99.5C 178.391,98.4104 179.391,98.4104 180.5,99.5C 181.429,98.3112 181.762,96.9778 181.5,95.5 Z"/></g>
22 +<g><path style="opacity:1" fill="#f4861b" d="M 63.5,127.5 C 63.5,128.5 63.5,129.5 63.5,130.5C 63.5,131.167 63.5,131.833 63.5,132.5C 63.5,133.5 63.5,134.5 63.5,135.5C 47.0932,136.143 30.9266,135.476 15,133.5C 14.6924,134.308 14.1924,134.975 13.5,135.5C 12.52,132.914 12.1866,130.247 12.5,127.5C 13.8333,127.5 15.1667,127.5 16.5,127.5C 19.0991,127.451 21.2658,126.451 23,124.5C 24.1739,126.671 26.0072,127.671 28.5,127.5C 28.5,126.5 28.5,125.5 28.5,124.5C 29.5,124.5 30.5,124.5 31.5,124.5C 31.5,125.5 31.5,126.5 31.5,127.5C 37.8682,127.83 44.2015,127.496 50.5,126.5C 51.2458,125.264 51.5792,123.93 51.5,122.5C 54.4701,122.746 55.8034,124.412 55.5,127.5C 58.1667,127.5 60.8333,127.5 63.5,127.5 Z"/></g>
23 +<g><path style="opacity:1" fill="#f58e1b" d="M 12.5,127.5 C 12.1866,130.247 12.52,132.914 13.5,135.5C 14.1924,134.975 14.6924,134.308 15,133.5C 30.9266,135.476 47.0932,136.143 63.5,135.5C 63.5,134.5 63.5,133.5 63.5,132.5C 64.4314,136.293 65.7648,139.959 67.5,143.5C 69.4854,146.798 71.4854,150.131 73.5,153.5C 71.5891,153.426 70.4224,152.426 70,150.5C 69.3892,152.75 68.0559,154.417 66,155.5C 65.7837,153.616 65.117,151.949 64,150.5C 58.7459,151.807 53.2459,152.474 47.5,152.5C 42.1667,152.167 36.8333,151.833 31.5,151.5C 30.0471,149.533 29.0471,147.367 28.5,145C 25.7146,142.489 24.5479,142.989 25,146.5C 26.0113,147.337 27.1779,147.67 28.5,147.5C 28.5,148.5 28.5,149.5 28.5,150.5C 24.1719,148.925 20.1719,146.592 16.5,143.5C 15.5853,144.328 14.9186,145.328 14.5,146.5C 13.635,147.583 12.635,147.749 11.5,147C 14.0443,145.225 14.0443,143.392 11.5,141.5C 10.4305,142.91 9.09719,143.91 7.5,144.5C 5.62313,143.341 5.12313,141.674 6,139.5C 7.52422,135.041 9.69089,131.041 12.5,127.5 Z"/></g>
24 +<g><path style="opacity:1" fill="#e6a05a" d="M 63.5,130.5 C 64.1174,130.611 64.6174,130.944 65,131.5C 65.9445,135.494 66.7779,139.494 67.5,143.5C 65.7648,139.959 64.4314,136.293 63.5,132.5C 63.5,131.833 63.5,131.167 63.5,130.5 Z"/></g>
25 +<g><path style="opacity:1" fill="#f58e1e" d="M 195.5,117.5 C 197.277,120.505 198.277,123.838 198.5,127.5C 198.666,133.842 198.5,140.175 198,146.5C 195.57,149.592 193.57,152.925 192,156.5C 191.51,155.207 191.343,153.873 191.5,152.5C 184.533,152.355 177.866,152.689 171.5,153.5C 175.063,145.231 176.397,136.564 175.5,127.5C 176.5,127.5 177.5,127.5 178.5,127.5C 178.5,130.167 178.5,132.833 178.5,135.5C 179.822,135.67 180.989,135.337 182,134.5C 183.202,132.323 183.702,129.989 183.5,127.5C 185.5,127.5 187.5,127.5 189.5,127.5C 191.12,129.99 192.62,132.656 194,135.5C 194.703,132.287 194.536,129.121 193.5,126C 195.146,123.405 195.813,120.572 195.5,117.5 Z"/></g>
26 +<g><path style="opacity:1" fill="#f59320" d="M 109.5,132.5 C 110.509,135.049 111.342,137.715 112,140.5C 120.919,151.357 132.086,154.357 145.5,149.5C 146.434,150.568 146.768,151.901 146.5,153.5C 143.005,155.221 139.339,156.555 135.5,157.5C 129.804,157.553 124.138,157.22 118.5,156.5C 109.538,153.203 103.204,147.203 99.5,138.5C 101.508,137.384 102.508,135.551 102.5,133C 102.065,129.937 101.232,129.77 100,132.5C 99.5604,130.924 98.727,129.59 97.5,128.5C 98.727,127.41 99.5604,126.076 100,124.5C 102.966,127.466 106.132,130.133 109.5,132.5 Z"/></g>
27 +<g><path style="opacity:1" fill="#f6991b" d="M 73.5,153.5 C 74.8333,155.5 76.1667,157.5 77.5,159.5C 76.5,159.5 75.5,159.5 74.5,159.5C 74.3491,162.718 73.5158,163.051 72,160.5C 70.5998,161.116 69.0998,161.449 67.5,161.5C 65.0759,160.979 62.7426,160.312 60.5,159.5C 60.5,160.5 60.5,161.5 60.5,162.5C 61.5,162.5 62.5,162.5 63.5,162.5C 63.5,164.167 63.5,165.833 63.5,167.5C 60.2521,167.099 57.0854,166.432 54,165.5C 52.4912,167.919 50.3245,168.919 47.5,168.5C 46.0639,167.571 44.7305,166.405 43.5,165C 37.4429,162.561 31.1095,160.561 24.5,159C 17.9834,154.97 12.3167,150.136 7.5,144.5C 9.09719,143.91 10.4305,142.91 11.5,141.5C 14.0443,143.392 14.0443,145.225 11.5,147C 12.635,147.749 13.635,147.583 14.5,146.5C 14.9186,145.328 15.5853,144.328 16.5,143.5C 20.1719,146.592 24.1719,148.925 28.5,150.5C 28.5,149.5 28.5,148.5 28.5,147.5C 27.1779,147.67 26.0113,147.337 25,146.5C 24.5479,142.989 25.7146,142.489 28.5,145C 29.0471,147.367 30.0471,149.533 31.5,151.5C 36.8333,151.833 42.1667,152.167 47.5,152.5C 53.2459,152.474 58.7459,151.807 64,150.5C 65.117,151.949 65.7837,153.616 66,155.5C 68.0559,154.417 69.3892,152.75 70,150.5C 70.4224,152.426 71.5891,153.426 73.5,153.5 Z"/></g>
28 +<g><path style="opacity:1" fill="#fdfdfb" d="M 15.5,122.5 C 15.366,124.292 15.6993,125.958 16.5,127.5C 15.1667,127.5 13.8333,127.5 12.5,127.5C 9.69089,131.041 7.52422,135.041 6,139.5C 5.12313,141.674 5.62313,143.341 7.5,144.5C 12.3167,150.136 17.9834,154.97 24.5,159C 31.1095,160.561 37.4429,162.561 43.5,165C 44.7305,166.405 46.0639,167.571 47.5,168.5C 50.0561,173.723 53.3895,178.389 57.5,182.5C 58.1239,182.917 58.4573,183.584 58.5,184.5C 56.138,189.167 55.138,194.167 55.5,199.5C 55.5217,202.59 56.1883,205.257 57.5,207.5C 57.3424,210.902 57.6758,214.236 58.5,217.5C 58.9623,218.88 59.9623,219.547 61.5,219.5C 65.0018,218.989 68.3351,218.322 71.5,217.5C 77.1227,216.845 82.456,215.345 87.5,213C 90.3886,210.388 93.7219,208.555 97.5,207.5C 100.727,208.851 104.06,210.018 107.5,211C 114.5,211.333 121.5,211.667 128.5,212C 132.408,216.413 136.741,220.247 141.5,223.5C 146.155,225.915 151.155,227.248 156.5,227.5C 156.5,227.833 156.5,228.167 156.5,228.5C 104.167,228.5 51.8333,228.5 -0.5,228.5C -0.5,197.167 -0.5,165.833 -0.5,134.5C -0.00480187,131.612 1.4952,129.279 4,127.5C 4.18016,130.956 4.84683,134.289 6,137.5C 7.34594,133.539 8.5126,129.872 9.5,126.5C 8.25849,120.412 10.2585,119.079 15.5,122.5 Z"/></g>
29 +<g><path style="opacity:1" fill="#f1b165" d="M 118.5,156.5 C 124.138,157.22 129.804,157.553 135.5,157.5C 133.527,158.163 131.361,158.496 129,158.5C 125.218,158.621 121.718,157.954 118.5,156.5 Z"/></g>
30 +<g><path style="opacity:1" fill="#f8a219" d="M 77.5,159.5 C 80.7781,163.445 84.4448,167.112 88.5,170.5C 88.5,171.5 88.5,172.5 88.5,173.5C 87.0695,173.579 85.7362,173.246 84.5,172.5C 83.646,173.522 82.646,174.355 81.5,175C 75.1406,175.169 68.8072,175.669 62.5,176.5C 74.4861,177.333 86.4861,177.833 98.5,178C 99.9023,179.342 99.5689,180.176 97.5,180.5C 86.2911,178.591 74.9577,177.925 63.5,178.5C 63.762,179.978 63.4287,181.311 62.5,182.5C 61.8933,182.376 61.56,182.043 61.5,181.5C 61.7778,179.654 61.1112,178.32 59.5,177.5C 58.6781,179.139 58.0114,180.805 57.5,182.5C 53.3895,178.389 50.0561,173.723 47.5,168.5C 50.3245,168.919 52.4912,167.919 54,165.5C 57.0854,166.432 60.2521,167.099 63.5,167.5C 63.5,165.833 63.5,164.167 63.5,162.5C 62.5,162.5 61.5,162.5 60.5,162.5C 60.5,161.5 60.5,160.5 60.5,159.5C 62.7426,160.312 65.0759,160.979 67.5,161.5C 69.0998,161.449 70.5998,161.116 72,160.5C 73.5158,163.051 74.3491,162.718 74.5,159.5C 75.5,159.5 76.5,159.5 77.5,159.5 Z"/></g>
31 +<g><path style="opacity:1" fill="#f49c1f" d="M 198.5,127.5 C 199.328,133.653 199.828,139.987 200,146.5C 202,148.5 204,150.5 206,152.5C 206.615,155.303 207.782,157.636 209.5,159.5C 211.097,162.319 211.597,165.319 211,168.5C 210.184,169.823 209.017,170.489 207.5,170.5C 208.323,168.545 208.49,166.545 208,164.5C 205.319,165.372 202.653,166.372 200,167.5C 191.957,165.663 183.79,164.996 175.5,165.5C 175.688,167.103 175.188,168.437 174,169.5C 173.833,169 173.667,168.5 173.5,168C 174.791,164.203 175.291,160.036 175,155.5C 173.218,161.71 170.384,167.376 166.5,172.5C 165.126,173.711 163.626,174.711 162,175.5C 160.72,175.387 159.887,174.72 159.5,173.5C 160.687,173.446 162.02,173.113 163.5,172.5C 163.976,170.079 164.309,167.746 164.5,165.5C 164.833,164.833 165.167,164.167 165.5,163.5C 167.472,160.235 169.472,156.902 171.5,153.5C 177.866,152.689 184.533,152.355 191.5,152.5C 191.343,153.873 191.51,155.207 192,156.5C 193.57,152.925 195.57,149.592 198,146.5C 198.5,140.175 198.666,133.842 198.5,127.5 Z"/></g>
32 +<g><path style="opacity:1" fill="#fdfdfc" d="M 219.5,156.5 C 219.5,180.5 219.5,204.5 219.5,228.5C 198.5,228.5 177.5,228.5 156.5,228.5C 156.5,228.167 156.5,227.833 156.5,227.5C 160.131,221.672 163.631,215.672 167,209.5C 167.333,206.167 167.667,202.833 168,199.5C 170.039,197.126 172.372,195.126 175,193.5C 175.464,192.906 175.631,192.239 175.5,191.5C 176.239,191.631 176.906,191.464 177.5,191C 180.365,187.308 183.365,183.808 186.5,180.5C 187.735,180.279 188.735,179.612 189.5,178.5C 190.086,178.709 190.586,179.043 191,179.5C 192.923,178.684 194.923,178.017 197,177.5C 198.03,177.164 198.53,176.497 198.5,175.5C 202.338,175.087 205.338,173.42 207.5,170.5C 209.017,170.489 210.184,169.823 211,168.5C 211.597,165.319 211.097,162.319 209.5,159.5C 211.124,159.36 212.29,160.027 213,161.5C 213.333,161.167 213.667,160.833 214,160.5C 214.078,158.343 214.245,156.343 214.5,154.5C 215.192,155.025 215.692,155.692 216,156.5C 216.986,155.829 218.153,155.829 219.5,156.5 Z"/></g>
33 +<g><path style="opacity:1" fill="#f8a619" d="M 207.5,170.5 C 205.338,173.42 202.338,175.087 198.5,175.5C 195.482,175.335 192.482,175.502 189.5,176C 188.364,177.145 187.364,178.312 186.5,179.5C 184.956,179.297 183.622,178.63 182.5,177.5C 181.106,179.984 179.606,179.984 178,177.5C 175.548,179.021 175.048,181.021 176.5,183.5C 170.872,184.495 165.206,184.829 159.5,184.5C 159.5,185.5 159.5,186.5 159.5,187.5C 158.5,187.5 157.5,187.5 156.5,187.5C 157.783,184.99 158.783,182.323 159.5,179.5C 155.559,181.471 151.559,183.471 147.5,185.5C 146.833,185.333 146.167,185.167 145.5,185C 148.492,183.685 150.825,181.685 152.5,179C 152.167,178.5 151.833,178 151.5,177.5C 149.805,178.174 148.138,178.841 146.5,179.5C 150.449,177.03 154.449,174.364 158.5,171.5C 160.188,169.146 162.188,167.146 164.5,165.5C 164.309,167.746 163.976,170.079 163.5,172.5C 162.02,173.113 160.687,173.446 159.5,173.5C 159.887,174.72 160.72,175.387 162,175.5C 163.626,174.711 165.126,173.711 166.5,172.5C 170.384,167.376 173.218,161.71 175,155.5C 175.291,160.036 174.791,164.203 173.5,168C 173.667,168.5 173.833,169 174,169.5C 175.188,168.437 175.688,167.103 175.5,165.5C 183.79,164.996 191.957,165.663 200,167.5C 202.653,166.372 205.319,165.372 208,164.5C 208.49,166.545 208.323,168.545 207.5,170.5 Z"/></g>
34 +<g><path style="opacity:1" fill="#f2e7ba" d="M 198.5,175.5 C 198.53,176.497 198.03,177.164 197,177.5C 194.923,178.017 192.923,178.684 191,179.5C 190.586,179.043 190.086,178.709 189.5,178.5C 188.735,179.612 187.735,180.279 186.5,180.5C 186.5,180.167 186.5,179.833 186.5,179.5C 187.364,178.312 188.364,177.145 189.5,176C 192.482,175.502 195.482,175.335 198.5,175.5 Z"/></g>
35 +<g><path style="opacity:1" fill="#f8ad14" d="M 88.5,170.5 C 90.1136,171.271 91.6136,172.271 93,173.5C 95.0777,172.057 95.9111,172.724 95.5,175.5C 102.396,178.299 109.396,180.799 116.5,183C 126.873,184.373 136.873,183.206 146.5,179.5C 148.138,178.841 149.805,178.174 151.5,177.5C 151.833,178 152.167,178.5 152.5,179C 150.825,181.685 148.492,183.685 145.5,185C 146.167,185.167 146.833,185.333 147.5,185.5C 151.559,183.471 155.559,181.471 159.5,179.5C 158.783,182.323 157.783,184.99 156.5,187.5C 157.5,187.5 158.5,187.5 159.5,187.5C 159.5,186.5 159.5,185.5 159.5,184.5C 165.206,184.829 170.872,184.495 176.5,183.5C 175.048,181.021 175.548,179.021 178,177.5C 179.606,179.984 181.106,179.984 182.5,177.5C 183.622,178.63 184.956,179.297 186.5,179.5C 186.5,179.833 186.5,180.167 186.5,180.5C 183.365,183.808 180.365,187.308 177.5,191C 176.906,191.464 176.239,191.631 175.5,191.5C 172.218,193.14 169.218,195.14 166.5,197.5C 165.305,197.866 164.639,198.699 164.5,200C 166.125,202.271 165.791,204.104 163.5,205.5C 162.702,205.043 162.369,204.376 162.5,203.5C 163.795,199.733 164.461,195.733 164.5,191.5C 163.5,191.5 162.5,191.5 161.5,191.5C 161.813,194.247 161.48,196.914 160.5,199.5C 159.893,199.376 159.56,199.043 159.5,198.5C 159.5,196.167 159.5,193.833 159.5,191.5C 157.876,191.64 156.71,190.973 156,189.5C 155.261,190.574 154.261,191.241 153,191.5C 151.454,189.759 149.454,188.759 147,188.5C 142.553,188.801 142.719,189.301 147.5,190C 147.833,190.333 148.167,190.667 148.5,191C 147.667,191.167 146.833,191.333 146,191.5C 134.547,191.477 123.047,191.311 111.5,191C 114.371,190.882 117.038,190.216 119.5,189C 116.131,188.337 112.797,188.504 109.5,189.5C 105.089,187.294 100.422,186.294 95.5,186.5C 95.5,187.5 95.5,188.5 95.5,189.5C 97.7505,189.181 99.7505,189.681 101.5,191C 88.8202,191.833 76.1535,191.666 63.5,190.5C 61.7389,188.747 60.4056,186.747 59.5,184.5C 59.4534,182.962 60.1201,181.962 61.5,181.5C 61.56,182.043 61.8933,182.376 62.5,182.5C 63.4287,181.311 63.762,179.978 63.5,178.5C 74.9577,177.925 86.2911,178.591 97.5,180.5C 99.5689,180.176 99.9023,179.342 98.5,178C 86.4861,177.833 74.4861,177.333 62.5,176.5C 68.8072,175.669 75.1406,175.169 81.5,175C 82.646,174.355 83.646,173.522 84.5,172.5C 85.7362,173.246 87.0695,173.579 88.5,173.5C 88.5,172.5 88.5,171.5 88.5,170.5 Z"/></g>
36 +<g><path style="opacity:1" fill="#f8b416" d="M 61.5,181.5 C 60.1201,181.962 59.4534,182.962 59.5,184.5C 60.4056,186.747 61.7389,188.747 63.5,190.5C 76.1535,191.666 88.8202,191.833 101.5,191C 99.7505,189.681 97.7505,189.181 95.5,189.5C 95.5,188.5 95.5,187.5 95.5,186.5C 100.422,186.294 105.089,187.294 109.5,189.5C 112.797,188.504 116.131,188.337 119.5,189C 117.038,190.216 114.371,190.882 111.5,191C 123.047,191.311 134.547,191.477 146,191.5C 146.833,191.333 147.667,191.167 148.5,191C 148.167,190.667 147.833,190.333 147.5,190C 142.719,189.301 142.553,188.801 147,188.5C 149.454,188.759 151.454,189.759 153,191.5C 154.261,191.241 155.261,190.574 156,189.5C 156.71,190.973 157.876,191.64 159.5,191.5C 159.5,193.833 159.5,196.167 159.5,198.5C 151.5,198.5 143.5,198.5 135.5,198.5C 135.5,197.5 135.5,196.5 135.5,195.5C 126.234,196.107 117.068,197.441 108,199.5C 93.187,198.557 78.3537,198.224 63.5,198.5C 63.5,201.167 63.5,203.833 63.5,206.5C 62.9612,208.505 62.2945,210.505 61.5,212.5C 61.1667,211.667 60.8333,210.833 60.5,210C 61.7293,203.833 61.7293,197.666 60.5,191.5C 60.1342,197.229 59.1342,202.563 57.5,207.5C 56.1883,205.257 55.5217,202.59 55.5,199.5C 55.138,194.167 56.138,189.167 58.5,184.5C 58.4573,183.584 58.1239,182.917 57.5,182.5C 58.0114,180.805 58.6781,179.139 59.5,177.5C 61.1112,178.32 61.7778,179.654 61.5,181.5 Z"/></g>
37 +<g><path style="opacity:1" fill="#f8b910" d="M 162.5,203.5 C 162.607,201.621 162.107,201.288 161,202.5C 160.667,204.167 160.333,205.833 160,207.5C 143.907,206.342 127.741,206.176 111.5,207C 116.833,207.333 122.167,207.667 127.5,208C 120.475,208.544 113.475,208.877 106.5,209C 106.833,208.667 107.167,208.333 107.5,208C 104.521,204.152 100.521,202.319 95.5,202.5C 95.5,203.833 95.5,205.167 95.5,206.5C 84.8333,206.5 74.1667,206.5 63.5,206.5C 63.5,203.833 63.5,201.167 63.5,198.5C 78.3537,198.224 93.187,198.557 108,199.5C 117.068,197.441 126.234,196.107 135.5,195.5C 135.5,196.5 135.5,197.5 135.5,198.5C 143.5,198.5 151.5,198.5 159.5,198.5C 159.56,199.043 159.893,199.376 160.5,199.5C 161.48,196.914 161.813,194.247 161.5,191.5C 162.5,191.5 163.5,191.5 164.5,191.5C 164.461,195.733 163.795,199.733 162.5,203.5 Z"/></g>
38 +<g><path style="opacity:1" fill="#fac013" d="M 63.5,206.5 C 74.1667,206.5 84.8333,206.5 95.5,206.5C 95.5,205.167 95.5,203.833 95.5,202.5C 100.521,202.319 104.521,204.152 107.5,208C 107.167,208.333 106.833,208.667 106.5,209C 113.475,208.877 120.475,208.544 127.5,208C 122.167,207.667 116.833,207.333 111.5,207C 127.741,206.176 143.907,206.342 160,207.5C 160.333,205.833 160.667,204.167 161,202.5C 162.107,201.288 162.607,201.621 162.5,203.5C 162.369,204.376 162.702,205.043 163.5,205.5C 165.791,204.104 166.125,202.271 164.5,200C 164.639,198.699 165.305,197.866 166.5,197.5C 166.665,200.85 166.498,204.183 166,207.5C 165.29,208.973 164.124,209.64 162.5,209.5C 162.26,214.993 159.76,218.993 155,221.5C 154.517,222.448 154.351,223.448 154.5,224.5C 152.94,224.481 151.44,224.148 150,223.5C 147.623,221.389 145.123,219.389 142.5,217.5C 141.354,218.145 140.354,218.978 139.5,220C 140.973,220.71 141.64,221.876 141.5,223.5C 136.741,220.247 132.408,216.413 128.5,212C 121.5,211.667 114.5,211.333 107.5,211C 104.06,210.018 100.727,208.851 97.5,207.5C 93.7219,208.555 90.3886,210.388 87.5,213C 82.456,215.345 77.1227,216.845 71.5,217.5C 67.1667,217.5 62.8333,217.5 58.5,217.5C 57.6758,214.236 57.3424,210.902 57.5,207.5C 59.1342,202.563 60.1342,197.229 60.5,191.5C 61.7293,197.666 61.7293,203.833 60.5,210C 60.8333,210.833 61.1667,211.667 61.5,212.5C 62.2945,210.505 62.9612,208.505 63.5,206.5 Z"/></g>
39 +<g><path style="opacity:1" fill="#f4d484" d="M 58.5,217.5 C 62.8333,217.5 67.1667,217.5 71.5,217.5C 68.3351,218.322 65.0018,218.989 61.5,219.5C 59.9623,219.547 58.9623,218.88 58.5,217.5 Z"/></g>
40 +<g><path style="opacity:1" fill="#f4cb22" d="M 175.5,191.5 C 175.631,192.239 175.464,192.906 175,193.5C 172.372,195.126 170.039,197.126 168,199.5C 167.667,202.833 167.333,206.167 167,209.5C 163.631,215.672 160.131,221.672 156.5,227.5C 151.155,227.248 146.155,225.915 141.5,223.5C 141.64,221.876 140.973,220.71 139.5,220C 140.354,218.978 141.354,218.145 142.5,217.5C 145.123,219.389 147.623,221.389 150,223.5C 151.44,224.148 152.94,224.481 154.5,224.5C 154.351,223.448 154.517,222.448 155,221.5C 159.76,218.993 162.26,214.993 162.5,209.5C 164.124,209.64 165.29,208.973 166,207.5C 166.498,204.183 166.665,200.85 166.5,197.5C 169.218,195.14 172.218,193.14 175.5,191.5 Z"/></g>
41 +</svg>
src/assets/images/socfortressthreatintel.svg
+2 -34
@@ -1,35 +1,3 @@
1 <?xml version="1.0" standalone="no"?>
2 -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3 - "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4 -<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5 - width="1280.000000pt" height="1280.000000pt" viewBox="0 0 1280.000000 1280.000000"
6 - preserveAspectRatio="xMidYMid meet">
7 -
8 -<g transform="translate(0.000000,1280.000000) scale(0.100000,-0.100000)"
9 -fill="#000000" stroke="none">
10 -<path d="M0 6400 l0 -6400 6400 0 6400 0 0 6400 0 6400 -6400 0 -6400 0 0
11 --6400z m4077 4257 l28 -27 3 -600 2 -600 325 0 325 0 0 464 0 465 24 28 24 28
12 -602 3 601 2 30 -29 29 -29 0 -466 0 -466 328 2 327 3 0 440 c0 242 1 450 3
13 -463 1 13 15 37 31 53 l29 29 587 0 c627 0 628 0 655 -49 6 -13 10 -184 10
14 --480 l0 -461 325 0 325 0 2 600 3 600 28 27 27 28 601 0 601 0 29 -33 29 -32
15 -0 -2460 c0 -1894 -3 -2465 -12 -2485 -13 -30 -45 -47 -460 -245 l-258 -123 0
16 --739 0 -740 -29 -29 -29 -29 -762 0 c-832 0 -804 -2 -829 58 -9 21 -11 259 -9
17 -963 l4 934 22 75 c42 135 108 218 217 270 87 42 162 57 390 80 252 26 348 43
18 -455 83 329 124 513 447 584 1022 18 144 32 375 22 375 -3 0 -268 -151 -589
19 --336 -320 -185 -656 -379 -747 -432 -91 -52 -309 -178 -485 -279 -176 -102
20 --334 -198 -352 -215 -17 -17 -42 -54 -55 -82 l-23 -51 -5 -652 -5 -652 -31
21 --33 c-17 -18 -147 -163 -288 -323 -142 -159 -267 -298 -278 -307 -12 -11 -36
22 --18 -58 -18 -22 0 -46 7 -58 17 -35 31 -564 627 -583 658 -18 28 -19 62 -19
23 -642 0 403 -4 629 -11 663 -14 63 -62 136 -114 171 -52 35 -2123 1229 -2131
24 -1229 -10 0 4 -241 22 -384 21 -170 49 -302 94 -437 104 -314 256 -491 499
25 --579 102 -37 201 -55 446 -80 300 -30 392 -58 490 -151 58 -55 97 -126 122
26 --226 17 -62 18 -145 18 -1006 l0 -939 -33 -29 -32 -29 -765 0 -764 0 -28 24
27 --28 24 -5 746 -5 746 -338 162 c-325 155 -339 163 -363 203 l-24 42 0 2450 0
28 -2450 21 27 c12 15 31 32 43 36 11 5 285 8 608 7 l588 -2 27 -28z m340 -7531
29 -l28 -24 3 -356 3 -356 339 0 340 0 0 351 0 351 29 29 29 29 406 0 405 0 28
30 --24 28 -24 3 -356 3 -356 339 0 340 0 0 351 0 351 29 29 29 29 407 0 407 0 29
31 --29 29 -29 0 -351 0 -351 340 0 340 0 0 351 0 351 29 29 29 29 407 0 407 0 29
32 --29 29 -29 0 -655 0 -655 -26 -31 -26 -31 -2828 0 -2827 0 -27 26 -26 27 0
33 -659 0 660 29 29 29 29 406 0 405 0 28 -24z"/>
34 -</g>
35 -</svg>
2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg" version="1.1" width="400" height="497.1875" viewBox="0, 0, 400,497.1875"><g id="svgg"><path id="path0" d="M163.187 283.504 C 163.117 320.247,163.007 318.404,165.423 320.832 C 165.964 321.375,166.881 322.392,167.461 323.091 C 168.041 323.791,168.642 324.285,168.797 324.190 C 168.952 324.094,169.045 324.132,169.004 324.274 C 168.877 324.716,169.816 325.938,170.284 325.938 C 170.529 325.938,170.635 326.032,170.520 326.147 C 170.405 326.261,170.544 326.613,170.829 326.928 C 171.324 327.474,172.623 327.500,199.952 327.500 L 228.557 327.500 229.669 326.299 C 237.848 317.465,236.850 323.401,236.796 283.906 C 236.771 265.688,236.702 251.801,236.643 253.047 L 236.535 255.313 200.000 255.313 L 163.465 255.313 163.357 253.047 C 163.298 251.801,163.221 265.506,163.187 283.504 M0.313 265.477 C 0.313 275.210,0.341 275.707,0.973 276.966 C 2.064 279.137,3.126 280.334,4.489 280.930 C 5.200 281.240,7.750 282.439,10.156 283.594 C 12.563 284.749,16.289 286.538,18.438 287.569 C 20.586 288.600,23.328 289.905,24.531 290.469 C 25.734 291.033,29.180 292.679,32.188 294.128 C 35.195 295.576,38.254 297.025,38.984 297.347 L 40.313 297.933 40.382 317.326 C 40.420 327.992,40.494 334.645,40.546 332.109 L 40.642 327.500 86.406 327.500 L 132.171 327.500 132.278 332.109 C 132.337 334.645,132.364 323.500,132.338 307.344 C 132.296 281.827,132.223 277.579,131.783 275.000 C 130.884 269.738,130.032 267.327,127.695 263.438 C 126.365 261.225,123.870 258.438,123.220 258.438 C 122.996 258.438,122.813 258.313,122.813 258.161 C 122.812 258.008,122.355 257.653,121.797 257.371 C 120.339 256.634,119.564 256.139,119.308 255.781 C 119.161 255.575,98.839 255.441,59.699 255.387 L 0.313 255.305 0.313 265.477 M280.703 255.737 C 280.316 255.929,280.000 256.193,280.000 256.324 C 280.000 256.455,279.812 256.563,279.582 256.563 C 278.920 256.563,275.625 259.049,275.625 259.548 C 275.625 259.797,275.438 260.000,275.209 260.000 C 274.444 260.000,272.173 263.141,270.916 265.938 C 270.568 266.711,270.166 267.562,270.021 267.829 C 269.668 268.483,268.526 273.110,268.097 275.625 C 267.864 276.992,267.728 287.319,267.682 307.188 C 267.644 323.430,267.661 334.645,267.721 332.109 L 267.829 327.500 313.594 327.500 L 359.358 327.500 359.454 332.109 C 359.506 334.645,359.582 328.000,359.622 317.344 L 359.695 297.969 360.863 297.423 C 363.848 296.030,370.955 292.650,375.739 290.348 C 378.638 288.954,381.044 287.813,381.087 287.813 C 381.131 287.813,384.103 286.390,387.692 284.652 C 391.282 282.914,394.922 281.178,395.781 280.794 C 399.749 279.022,399.869 278.559,399.757 265.445 L 399.671 255.313 340.539 255.351 C 297.771 255.379,281.212 255.486,280.703 255.737 M172.721 329.024 C 173.441 329.716,173.926 329.912,173.595 329.377 C 173.489 329.206,173.094 328.907,172.717 328.713 L 172.031 328.360 172.721 329.024 " stroke="none" fill="#fbab44" fill-rule="evenodd"/><path id="path1" d="M0.207 176.484 C 0.094 180.223,0.034 204.094,0.074 229.531 C 0.115 254.969,0.186 271.175,0.234 265.545 L 0.321 255.309 59.223 255.389 C 91.619 255.433,118.125 255.435,118.125 255.395 C 118.125 255.251,115.844 254.370,115.142 254.243 C 114.750 254.172,114.142 253.960,113.790 253.771 C 113.438 253.583,113.039 253.448,112.903 253.470 C 112.767 253.493,112.586 253.484,112.500 253.451 C 111.792 253.175,104.237 251.869,103.433 251.884 C 103.006 251.892,101.953 251.817,101.094 251.717 C 99.332 251.512,96.400 251.225,94.531 251.076 C 93.844 251.021,92.508 250.892,91.563 250.789 C 90.617 250.686,89.281 250.542,88.594 250.469 C 68.487 248.333,56.970 240.804,48.921 224.531 C 42.866 212.290,38.598 191.192,38.317 172.109 L 38.281 169.688 19.347 169.688 L 0.412 169.688 0.207 176.484 M39.844 170.000 C 39.950 170.172,40.240 170.313,40.487 170.313 C 40.735 170.313,40.938 170.418,40.939 170.547 C 40.942 170.889,42.824 171.905,43.117 171.724 C 43.254 171.639,43.540 171.779,43.753 172.035 C 43.965 172.291,44.262 172.500,44.413 172.500 C 44.564 172.500,44.969 172.781,45.313 173.125 C 45.656 173.469,46.212 173.750,46.547 173.750 C 46.882 173.750,47.269 173.940,47.406 174.173 C 47.544 174.405,48.310 174.957,49.110 175.399 C 49.909 175.841,51.136 176.565,51.838 177.008 C 52.539 177.450,53.189 177.813,53.282 177.813 C 53.375 177.813,53.975 178.147,54.616 178.556 C 55.257 178.964,58.172 180.669,61.094 182.345 C 64.016 184.020,68.023 186.338,70.000 187.495 C 74.085 189.886,97.436 203.374,124.375 218.902 C 147.524 232.246,148.698 232.924,151.719 234.704 C 153.094 235.514,154.790 236.464,155.489 236.815 C 160.132 239.149,162.895 244.302,163.298 251.380 L 163.522 255.313 199.996 255.313 L 236.471 255.313 236.688 251.641 C 237.236 242.355,238.811 240.161,249.253 234.146 C 264.241 225.511,277.317 217.958,288.906 211.239 C 290.994 210.029,296.178 207.048,303.281 202.973 C 307.406 200.607,312.398 197.720,314.375 196.559 C 316.352 195.398,318.461 194.168,319.063 193.826 C 319.664 193.484,322.898 191.618,326.250 189.679 C 329.602 187.741,332.766 185.916,333.281 185.625 C 334.295 185.052,341.339 180.967,343.125 179.916 C 343.727 179.563,345.977 178.235,348.125 176.967 C 350.273 175.698,352.313 174.495,352.656 174.292 C 353.000 174.090,353.809 173.602,354.453 173.208 C 355.098 172.814,355.625 172.590,355.625 172.710 C 355.625 172.831,356.030 172.542,356.525 172.068 C 357.311 171.314,357.854 171.055,358.847 170.961 C 358.986 170.948,359.013 170.798,358.908 170.629 C 358.799 170.451,358.924 170.399,359.203 170.506 C 359.469 170.608,359.688 170.547,359.688 170.369 C 359.688 170.191,359.934 169.982,360.234 169.903 C 360.535 169.824,288.527 169.744,200.216 169.724 C 93.243 169.700,39.715 169.792,39.844 170.000 M361.724 171.954 C 361.726 173.200,361.637 175.063,361.525 176.094 C 361.413 177.125,361.234 179.336,361.127 181.006 C 358.825 217.064,347.461 239.582,327.963 246.718 C 325.065 247.779,324.284 248.053,323.910 248.143 C 323.830 248.162,323.023 248.383,322.116 248.633 C 321.210 248.884,320.117 249.142,319.688 249.208 C 319.258 249.273,317.641 249.538,316.094 249.797 C 313.333 250.258,311.392 250.513,308.281 250.822 C 306.745 250.975,306.251 251.017,302.188 251.334 C 300.248 251.485,299.357 251.578,295.577 252.021 C 293.281 252.291,288.384 253.131,287.813 253.354 C 287.555 253.454,287.168 253.508,286.953 253.473 C 286.738 253.438,286.563 253.572,286.563 253.770 C 286.563 253.968,286.365 254.054,286.124 253.961 C 285.883 253.869,285.598 253.881,285.490 253.989 C 285.383 254.097,285.123 254.216,284.913 254.254 C 279.486 255.244,280.800 255.268,340.855 255.290 L 399.679 255.313 399.766 265.391 C 399.814 270.934,399.886 254.727,399.926 229.375 C 399.966 204.023,399.906 180.223,399.793 176.484 L 399.588 169.688 380.653 169.688 L 361.719 169.689 361.724 171.954 " stroke="none" fill="#fb9b3c" fill-rule="evenodd"/><path id="path2" d="M43.051 418.013 C 42.581 418.263,41.808 418.977,41.333 419.600 L 40.469 420.732 40.387 456.698 L 40.305 492.664 41.012 494.048 C 41.401 494.809,42.116 495.722,42.601 496.075 L 43.483 496.719 199.724 496.798 C 338.186 496.868,356.068 496.823,356.873 496.408 C 357.372 496.149,358.174 495.422,358.656 494.790 L 359.531 493.642 359.531 457.212 L 359.531 420.781 358.631 419.605 C 356.922 417.371,358.257 417.478,333.366 417.572 C 308.066 417.667,309.971 417.467,308.594 420.176 C 307.992 421.360,307.965 422.117,307.881 440.391 L 307.794 459.375 289.060 459.375 L 270.326 459.375 270.241 439.914 L 270.156 420.453 269.428 419.523 C 267.785 417.426,269.037 417.528,244.756 417.513 C 220.973 417.499,221.546 417.460,220.063 419.198 C 218.773 420.710,218.750 421.077,218.750 440.489 L 218.750 459.375 200.000 459.375 L 181.250 459.375 181.250 440.507 C 181.250 418.749,181.296 419.072,178.027 417.833 C 176.227 417.152,133.830 417.407,132.284 418.108 C 129.592 419.331,129.688 418.513,129.688 440.300 L 129.688 459.375 110.938 459.375 L 92.188 459.375 92.188 440.973 C 92.188 420.244,92.175 420.112,90.046 418.489 L 88.955 417.656 66.431 417.608 C 47.275 417.567,43.778 417.628,43.051 418.013 " stroke="none" fill="#fccf5b" fill-rule="evenodd"/><path id="path3" d="M2.859 0.840 C 2.283 1.125,1.439 1.922,0.984 2.610 L 0.156 3.861 0.146 91.383 C 0.140 139.521,0.179 176.834,0.232 174.302 L 0.329 169.697 19.461 169.614 C 29.984 169.569,38.760 169.602,38.962 169.688 C 39.165 169.773,111.798 169.773,200.368 169.688 C 288.939 169.602,370.016 169.569,380.539 169.614 L 399.671 169.697 399.768 174.302 C 399.821 176.834,399.860 139.521,399.854 91.383 L 399.844 3.861 399.012 2.604 C 397.377 0.133,399.990 0.294,363.069 0.386 L 330.156 0.469 329.104 1.219 C 326.750 2.898,326.890 0.648,326.882 37.109 L 326.875 69.688 308.906 69.688 L 290.938 69.688 290.938 44.441 L 290.937 19.195 290.234 17.802 C 289.772 16.886,289.103 16.169,288.281 15.707 L 287.031 15.006 254.163 15.081 C 217.137 15.166,220.575 14.931,218.828 17.497 L 218.125 18.530 218.125 44.109 L 218.125 69.688 200.000 69.688 L 181.875 69.688 181.875 44.109 L 181.875 18.530 181.172 17.497 C 179.425 14.931,182.863 15.166,145.837 15.081 L 112.969 15.006 111.719 15.707 C 110.897 16.169,110.228 16.886,109.766 17.802 L 109.062 19.195 109.063 44.441 L 109.063 69.688 91.094 69.688 L 73.125 69.688 73.118 37.109 C 73.110 0.648,73.250 2.898,70.896 1.219 L 69.844 0.469 36.875 0.395 C 6.708 0.328,3.817 0.366,2.859 0.840 M361.648 171.250 C 361.648 172.023,361.709 172.340,361.783 171.953 C 361.858 171.566,361.858 170.934,361.783 170.547 C 361.709 170.160,361.648 170.477,361.648 171.250 M357.144 171.568 L 356.406 172.198 357.266 171.830 C 357.738 171.628,358.125 171.344,358.125 171.200 C 358.125 170.810,357.958 170.873,357.144 171.568 M43.125 171.759 C 43.125 171.921,43.547 172.302,44.063 172.607 C 44.580 172.912,45.000 173.012,45.000 172.830 C 45.000 172.649,44.835 172.500,44.634 172.500 C 44.433 172.500,44.011 172.267,43.696 171.983 C 43.382 171.698,43.125 171.598,43.125 171.759 " stroke="none" fill="#fc862e" fill-rule="evenodd"/><path id="path4" d="M40.519 334.297 C 40.406 338.035,40.317 349.602,40.320 360.000 C 40.327 381.137,40.273 380.601,42.542 382.218 L 43.594 382.969 86.025 383.050 C 123.482 383.122,128.563 383.076,129.374 382.657 C 130.775 381.932,131.789 380.671,132.162 379.189 C 132.542 377.680,132.636 345.641,132.293 334.297 L 132.088 327.500 86.406 327.500 L 40.725 327.500 40.519 334.297 M172.522 328.457 C 173.111 328.983,173.594 329.525,173.594 329.661 C 173.594 329.965,174.624 331.148,183.281 340.783 C 185.000 342.696,187.250 345.224,188.281 346.401 C 189.313 347.577,190.302 348.692,190.481 348.879 C 190.660 349.066,191.920 350.484,193.281 352.031 C 196.329 355.495,196.773 355.907,198.037 356.446 C 200.772 357.613,202.678 356.646,206.742 352.031 C 208.407 350.141,210.278 348.028,210.900 347.335 C 211.522 346.643,212.664 345.373,213.438 344.512 C 214.211 343.651,215.941 341.731,217.282 340.245 C 218.623 338.758,220.029 337.148,220.407 336.665 C 221.032 335.867,223.081 333.572,224.453 332.135 C 224.754 331.820,224.941 331.563,224.868 331.563 C 224.751 331.563,225.925 330.264,227.905 328.203 L 228.581 327.500 200.015 327.500 L 171.450 327.500 172.522 328.457 M267.707 334.297 C 267.364 345.641,267.458 377.680,267.838 379.189 C 268.211 380.671,269.225 381.932,270.626 382.657 C 271.437 383.076,276.518 383.122,313.975 383.050 L 356.406 382.969 357.458 382.218 C 359.727 380.601,359.673 381.137,359.680 360.000 C 359.683 349.602,359.594 338.035,359.481 334.297 L 359.275 327.500 313.594 327.500 L 267.912 327.500 267.707 334.297 " stroke="none" fill="#fcbc4c" fill-rule="evenodd"/></g></svg>
src/assets/images/wazuh worker provisioning.svg new
+3
@@ -0,0 +1,3 @@
1 +<?xml version="1.0" standalone="no"?>
2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg" version="1.1" width="400" height="497.1875" viewBox="0, 0, 400,497.1875"><g id="svgg"><path id="path0" d="M163.187 283.504 C 163.117 320.247,163.007 318.404,165.423 320.832 C 165.964 321.375,166.881 322.392,167.461 323.091 C 168.041 323.791,168.642 324.285,168.797 324.190 C 168.952 324.094,169.045 324.132,169.004 324.274 C 168.877 324.716,169.816 325.938,170.284 325.938 C 170.529 325.938,170.635 326.032,170.520 326.147 C 170.405 326.261,170.544 326.613,170.829 326.928 C 171.324 327.474,172.623 327.500,199.952 327.500 L 228.557 327.500 229.669 326.299 C 237.848 317.465,236.850 323.401,236.796 283.906 C 236.771 265.688,236.702 251.801,236.643 253.047 L 236.535 255.313 200.000 255.313 L 163.465 255.313 163.357 253.047 C 163.298 251.801,163.221 265.506,163.187 283.504 M0.313 265.477 C 0.313 275.210,0.341 275.707,0.973 276.966 C 2.064 279.137,3.126 280.334,4.489 280.930 C 5.200 281.240,7.750 282.439,10.156 283.594 C 12.563 284.749,16.289 286.538,18.438 287.569 C 20.586 288.600,23.328 289.905,24.531 290.469 C 25.734 291.033,29.180 292.679,32.188 294.128 C 35.195 295.576,38.254 297.025,38.984 297.347 L 40.313 297.933 40.382 317.326 C 40.420 327.992,40.494 334.645,40.546 332.109 L 40.642 327.500 86.406 327.500 L 132.171 327.500 132.278 332.109 C 132.337 334.645,132.364 323.500,132.338 307.344 C 132.296 281.827,132.223 277.579,131.783 275.000 C 130.884 269.738,130.032 267.327,127.695 263.438 C 126.365 261.225,123.870 258.438,123.220 258.438 C 122.996 258.438,122.813 258.313,122.813 258.161 C 122.812 258.008,122.355 257.653,121.797 257.371 C 120.339 256.634,119.564 256.139,119.308 255.781 C 119.161 255.575,98.839 255.441,59.699 255.387 L 0.313 255.305 0.313 265.477 M280.703 255.737 C 280.316 255.929,280.000 256.193,280.000 256.324 C 280.000 256.455,279.812 256.563,279.582 256.563 C 278.920 256.563,275.625 259.049,275.625 259.548 C 275.625 259.797,275.438 260.000,275.209 260.000 C 274.444 260.000,272.173 263.141,270.916 265.938 C 270.568 266.711,270.166 267.562,270.021 267.829 C 269.668 268.483,268.526 273.110,268.097 275.625 C 267.864 276.992,267.728 287.319,267.682 307.188 C 267.644 323.430,267.661 334.645,267.721 332.109 L 267.829 327.500 313.594 327.500 L 359.358 327.500 359.454 332.109 C 359.506 334.645,359.582 328.000,359.622 317.344 L 359.695 297.969 360.863 297.423 C 363.848 296.030,370.955 292.650,375.739 290.348 C 378.638 288.954,381.044 287.813,381.087 287.813 C 381.131 287.813,384.103 286.390,387.692 284.652 C 391.282 282.914,394.922 281.178,395.781 280.794 C 399.749 279.022,399.869 278.559,399.757 265.445 L 399.671 255.313 340.539 255.351 C 297.771 255.379,281.212 255.486,280.703 255.737 M172.721 329.024 C 173.441 329.716,173.926 329.912,173.595 329.377 C 173.489 329.206,173.094 328.907,172.717 328.713 L 172.031 328.360 172.721 329.024 " stroke="none" fill="#fbab44" fill-rule="evenodd"/><path id="path1" d="M0.207 176.484 C 0.094 180.223,0.034 204.094,0.074 229.531 C 0.115 254.969,0.186 271.175,0.234 265.545 L 0.321 255.309 59.223 255.389 C 91.619 255.433,118.125 255.435,118.125 255.395 C 118.125 255.251,115.844 254.370,115.142 254.243 C 114.750 254.172,114.142 253.960,113.790 253.771 C 113.438 253.583,113.039 253.448,112.903 253.470 C 112.767 253.493,112.586 253.484,112.500 253.451 C 111.792 253.175,104.237 251.869,103.433 251.884 C 103.006 251.892,101.953 251.817,101.094 251.717 C 99.332 251.512,96.400 251.225,94.531 251.076 C 93.844 251.021,92.508 250.892,91.563 250.789 C 90.617 250.686,89.281 250.542,88.594 250.469 C 68.487 248.333,56.970 240.804,48.921 224.531 C 42.866 212.290,38.598 191.192,38.317 172.109 L 38.281 169.688 19.347 169.688 L 0.412 169.688 0.207 176.484 M39.844 170.000 C 39.950 170.172,40.240 170.313,40.487 170.313 C 40.735 170.313,40.938 170.418,40.939 170.547 C 40.942 170.889,42.824 171.905,43.117 171.724 C 43.254 171.639,43.540 171.779,43.753 172.035 C 43.965 172.291,44.262 172.500,44.413 172.500 C 44.564 172.500,44.969 172.781,45.313 173.125 C 45.656 173.469,46.212 173.750,46.547 173.750 C 46.882 173.750,47.269 173.940,47.406 174.173 C 47.544 174.405,48.310 174.957,49.110 175.399 C 49.909 175.841,51.136 176.565,51.838 177.008 C 52.539 177.450,53.189 177.813,53.282 177.813 C 53.375 177.813,53.975 178.147,54.616 178.556 C 55.257 178.964,58.172 180.669,61.094 182.345 C 64.016 184.020,68.023 186.338,70.000 187.495 C 74.085 189.886,97.436 203.374,124.375 218.902 C 147.524 232.246,148.698 232.924,151.719 234.704 C 153.094 235.514,154.790 236.464,155.489 236.815 C 160.132 239.149,162.895 244.302,163.298 251.380 L 163.522 255.313 199.996 255.313 L 236.471 255.313 236.688 251.641 C 237.236 242.355,238.811 240.161,249.253 234.146 C 264.241 225.511,277.317 217.958,288.906 211.239 C 290.994 210.029,296.178 207.048,303.281 202.973 C 307.406 200.607,312.398 197.720,314.375 196.559 C 316.352 195.398,318.461 194.168,319.063 193.826 C 319.664 193.484,322.898 191.618,326.250 189.679 C 329.602 187.741,332.766 185.916,333.281 185.625 C 334.295 185.052,341.339 180.967,343.125 179.916 C 343.727 179.563,345.977 178.235,348.125 176.967 C 350.273 175.698,352.313 174.495,352.656 174.292 C 353.000 174.090,353.809 173.602,354.453 173.208 C 355.098 172.814,355.625 172.590,355.625 172.710 C 355.625 172.831,356.030 172.542,356.525 172.068 C 357.311 171.314,357.854 171.055,358.847 170.961 C 358.986 170.948,359.013 170.798,358.908 170.629 C 358.799 170.451,358.924 170.399,359.203 170.506 C 359.469 170.608,359.688 170.547,359.688 170.369 C 359.688 170.191,359.934 169.982,360.234 169.903 C 360.535 169.824,288.527 169.744,200.216 169.724 C 93.243 169.700,39.715 169.792,39.844 170.000 M361.724 171.954 C 361.726 173.200,361.637 175.063,361.525 176.094 C 361.413 177.125,361.234 179.336,361.127 181.006 C 358.825 217.064,347.461 239.582,327.963 246.718 C 325.065 247.779,324.284 248.053,323.910 248.143 C 323.830 248.162,323.023 248.383,322.116 248.633 C 321.210 248.884,320.117 249.142,319.688 249.208 C 319.258 249.273,317.641 249.538,316.094 249.797 C 313.333 250.258,311.392 250.513,308.281 250.822 C 306.745 250.975,306.251 251.017,302.188 251.334 C 300.248 251.485,299.357 251.578,295.577 252.021 C 293.281 252.291,288.384 253.131,287.813 253.354 C 287.555 253.454,287.168 253.508,286.953 253.473 C 286.738 253.438,286.563 253.572,286.563 253.770 C 286.563 253.968,286.365 254.054,286.124 253.961 C 285.883 253.869,285.598 253.881,285.490 253.989 C 285.383 254.097,285.123 254.216,284.913 254.254 C 279.486 255.244,280.800 255.268,340.855 255.290 L 399.679 255.313 399.766 265.391 C 399.814 270.934,399.886 254.727,399.926 229.375 C 399.966 204.023,399.906 180.223,399.793 176.484 L 399.588 169.688 380.653 169.688 L 361.719 169.689 361.724 171.954 " stroke="none" fill="#fb9b3c" fill-rule="evenodd"/><path id="path2" d="M43.051 418.013 C 42.581 418.263,41.808 418.977,41.333 419.600 L 40.469 420.732 40.387 456.698 L 40.305 492.664 41.012 494.048 C 41.401 494.809,42.116 495.722,42.601 496.075 L 43.483 496.719 199.724 496.798 C 338.186 496.868,356.068 496.823,356.873 496.408 C 357.372 496.149,358.174 495.422,358.656 494.790 L 359.531 493.642 359.531 457.212 L 359.531 420.781 358.631 419.605 C 356.922 417.371,358.257 417.478,333.366 417.572 C 308.066 417.667,309.971 417.467,308.594 420.176 C 307.992 421.360,307.965 422.117,307.881 440.391 L 307.794 459.375 289.060 459.375 L 270.326 459.375 270.241 439.914 L 270.156 420.453 269.428 419.523 C 267.785 417.426,269.037 417.528,244.756 417.513 C 220.973 417.499,221.546 417.460,220.063 419.198 C 218.773 420.710,218.750 421.077,218.750 440.489 L 218.750 459.375 200.000 459.375 L 181.250 459.375 181.250 440.507 C 181.250 418.749,181.296 419.072,178.027 417.833 C 176.227 417.152,133.830 417.407,132.284 418.108 C 129.592 419.331,129.688 418.513,129.688 440.300 L 129.688 459.375 110.938 459.375 L 92.188 459.375 92.188 440.973 C 92.188 420.244,92.175 420.112,90.046 418.489 L 88.955 417.656 66.431 417.608 C 47.275 417.567,43.778 417.628,43.051 418.013 " stroke="none" fill="#fccf5b" fill-rule="evenodd"/><path id="path3" d="M2.859 0.840 C 2.283 1.125,1.439 1.922,0.984 2.610 L 0.156 3.861 0.146 91.383 C 0.140 139.521,0.179 176.834,0.232 174.302 L 0.329 169.697 19.461 169.614 C 29.984 169.569,38.760 169.602,38.962 169.688 C 39.165 169.773,111.798 169.773,200.368 169.688 C 288.939 169.602,370.016 169.569,380.539 169.614 L 399.671 169.697 399.768 174.302 C 399.821 176.834,399.860 139.521,399.854 91.383 L 399.844 3.861 399.012 2.604 C 397.377 0.133,399.990 0.294,363.069 0.386 L 330.156 0.469 329.104 1.219 C 326.750 2.898,326.890 0.648,326.882 37.109 L 326.875 69.688 308.906 69.688 L 290.938 69.688 290.938 44.441 L 290.937 19.195 290.234 17.802 C 289.772 16.886,289.103 16.169,288.281 15.707 L 287.031 15.006 254.163 15.081 C 217.137 15.166,220.575 14.931,218.828 17.497 L 218.125 18.530 218.125 44.109 L 218.125 69.688 200.000 69.688 L 181.875 69.688 181.875 44.109 L 181.875 18.530 181.172 17.497 C 179.425 14.931,182.863 15.166,145.837 15.081 L 112.969 15.006 111.719 15.707 C 110.897 16.169,110.228 16.886,109.766 17.802 L 109.062 19.195 109.063 44.441 L 109.063 69.688 91.094 69.688 L 73.125 69.688 73.118 37.109 C 73.110 0.648,73.250 2.898,70.896 1.219 L 69.844 0.469 36.875 0.395 C 6.708 0.328,3.817 0.366,2.859 0.840 M361.648 171.250 C 361.648 172.023,361.709 172.340,361.783 171.953 C 361.858 171.566,361.858 170.934,361.783 170.547 C 361.709 170.160,361.648 170.477,361.648 171.250 M357.144 171.568 L 356.406 172.198 357.266 171.830 C 357.738 171.628,358.125 171.344,358.125 171.200 C 358.125 170.810,357.958 170.873,357.144 171.568 M43.125 171.759 C 43.125 171.921,43.547 172.302,44.063 172.607 C 44.580 172.912,45.000 173.012,45.000 172.830 C 45.000 172.649,44.835 172.500,44.634 172.500 C 44.433 172.500,44.011 172.267,43.696 171.983 C 43.382 171.698,43.125 171.598,43.125 171.759 " stroke="none" fill="#fc862e" fill-rule="evenodd"/><path id="path4" d="M40.519 334.297 C 40.406 338.035,40.317 349.602,40.320 360.000 C 40.327 381.137,40.273 380.601,42.542 382.218 L 43.594 382.969 86.025 383.050 C 123.482 383.122,128.563 383.076,129.374 382.657 C 130.775 381.932,131.789 380.671,132.162 379.189 C 132.542 377.680,132.636 345.641,132.293 334.297 L 132.088 327.500 86.406 327.500 L 40.725 327.500 40.519 334.297 M172.522 328.457 C 173.111 328.983,173.594 329.525,173.594 329.661 C 173.594 329.965,174.624 331.148,183.281 340.783 C 185.000 342.696,187.250 345.224,188.281 346.401 C 189.313 347.577,190.302 348.692,190.481 348.879 C 190.660 349.066,191.920 350.484,193.281 352.031 C 196.329 355.495,196.773 355.907,198.037 356.446 C 200.772 357.613,202.678 356.646,206.742 352.031 C 208.407 350.141,210.278 348.028,210.900 347.335 C 211.522 346.643,212.664 345.373,213.438 344.512 C 214.211 343.651,215.941 341.731,217.282 340.245 C 218.623 338.758,220.029 337.148,220.407 336.665 C 221.032 335.867,223.081 333.572,224.453 332.135 C 224.754 331.820,224.941 331.563,224.868 331.563 C 224.751 331.563,225.925 330.264,227.905 328.203 L 228.581 327.500 200.015 327.500 L 171.450 327.500 172.522 328.457 M267.707 334.297 C 267.364 345.641,267.458 377.680,267.838 379.189 C 268.211 380.671,269.225 381.932,270.626 382.657 C 271.437 383.076,276.518 383.122,313.975 383.050 L 356.406 382.969 357.458 382.218 C 359.727 380.601,359.673 381.137,359.680 360.000 C 359.683 349.602,359.594 338.035,359.481 334.297 L 359.275 327.500 313.594 327.500 L 267.912 327.500 267.707 334.297 " stroke="none" fill="#fcbc4c" fill-rule="evenodd"/></g></svg>
src/assets/images/wazuh-indexer.svg
+12 -34
@@ -1,35 +1,13 @@
1 -<?xml version="1.0" standalone="no"?>
2 -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3 - "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4 -<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5 - width="389.000000pt" height="130.000000pt" viewBox="0 0 389.000000 130.000000"
6 - preserveAspectRatio="xMidYMid meet">
7 -
8 -<g transform="translate(0.000000,130.000000) scale(0.100000,-0.100000)"
9 -fill="#000000" stroke="none">
10 -<path d="M2870 655 l0 -335 50 0 50 0 0 153 c0 171 9 218 50 259 24 24 37 28
11 -82 28 65 0 93 -18 119 -74 16 -35 19 -66 19 -203 l0 -163 50 0 50 0 0 188 c0
12 -176 -2 190 -24 238 -40 86 -105 121 -209 111 -45 -4 -71 -13 -104 -36 l-43
13 --31 0 100 0 100 -45 0 -45 0 0 -335z"/>
14 -<path d="M1200 839 c-98 -44 -150 -123 -158 -235 -6 -99 16 -163 78 -225 36
15 --36 62 -52 106 -65 88 -25 188 -8 247 44 16 14 17 13 17 -16 0 -32 1 -32 50
16 --32 l50 0 0 270 0 270 -50 0 c-47 0 -50 -2 -50 -25 0 -29 -7 -31 -31 -9 -51
17 -46 -183 58 -259 23z m162 -79 c48 -14 97 -55 114 -97 20 -47 17 -127 -6 -173
18 --65 -127 -251 -119 -311 15 -55 120 23 251 156 264 6 0 27 -4 47 -9z"/>
19 -<path d="M275 823 c3 -16 38 -134 78 -263 l73 -235 41 -3 42 -3 57 178 c32 98
20 -61 182 64 186 6 7 120 -327 120 -352 0 -6 18 -11 45 -11 l44 0 30 98 c17 53
21 -51 165 76 247 25 83 48 158 51 168 5 15 -2 17 -45 17 l-50 0 -26 -87 c-15 -49
22 --38 -126 -52 -173 -14 -47 -29 -88 -32 -92 -3 -4 -30 74 -60 173 l-54 179 -43
23 -0 c-48 0 -35 27 -114 -228 -23 -74 -43 -132 -44 -130 -2 1 -27 83 -57 181
24 -l-53 177 -49 0 c-48 0 -48 0 -42 -27z"/>
25 -<path d="M1720 805 l0 -45 135 0 c74 0 135 -2 135 -5 0 -2 -67 -99 -150 -214
26 --82 -115 -150 -212 -150 -215 0 -3 101 -6 225 -6 l225 0 0 45 0 44 -141 3
27 --140 3 145 204 c80 112 146 210 146 218 0 10 -42 13 -215 13 l-215 0 0 -45z"/>
28 -<path d="M2250 661 c0 -186 0 -189 28 -241 70 -135 285 -160 398 -47 25 25 46
29 -59 53 82 6 22 11 118 11 218 l0 177 -50 0 -50 0 0 -167 c0 -191 -13 -238 -69
30 --267 -43 -23 -119 -20 -159 4 -54 33 -62 67 -62 260 l0 170 -50 0 -50 0 0
31 --189z"/>
32 -<path d="M3499 460 c-9 -5 -22 -23 -29 -40 -33 -79 65 -146 125 -85 35 34 34
33 -86 -1 114 -28 22 -68 27 -95 11z"/>
34 -</g>
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 +<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="354px" height="142px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
4 +<g><path style="opacity:1" fill="#3585f8" d="M -0.5,-0.5 C 117.5,-0.5 235.5,-0.5 353.5,-0.5C 353.5,46.8333 353.5,94.1667 353.5,141.5C 235.5,141.5 117.5,141.5 -0.5,141.5C -0.5,94.1667 -0.5,46.8333 -0.5,-0.5 Z"/></g>
5 +<g><path style="opacity:1" fill="#fafbfe" d="M 245.5,41.5 C 247.833,41.5 250.167,41.5 252.5,41.5C 252.334,46.1785 252.501,50.8452 253,55.5C 256.311,52.1815 260.311,50.8482 265,51.5C 273.195,51.3503 278.195,55.3503 280,63.5C 280.5,72.8274 280.666,82.1607 280.5,91.5C 277.833,91.5 275.167,91.5 272.5,91.5C 272.666,82.8269 272.5,74.1603 272,65.5C 268.643,58.3466 263.476,56.68 256.5,60.5C 255.081,62.3359 253.914,64.3359 253,66.5C 252.5,74.8267 252.334,83.16 252.5,91.5C 250.167,91.5 247.833,91.5 245.5,91.5C 245.5,74.8333 245.5,58.1667 245.5,41.5 Z"/></g>
6 +<g><path style="opacity:1" fill="#f9fbfe" d="M 125.5,50.5 C 131.676,50.0836 137.176,51.7503 142,55.5C 142.49,54.2068 142.657,52.8734 142.5,51.5C 145.167,51.5 147.833,51.5 150.5,51.5C 150.5,64.8333 150.5,78.1667 150.5,91.5C 147.833,91.5 145.167,91.5 142.5,91.5C 142.719,90.325 142.386,89.325 141.5,88.5C 127.53,96.2709 117.03,92.9375 110,78.5C 107.162,64.493 112.329,55.1597 125.5,50.5 Z"/></g>
7 +<g><path style="opacity:1" fill="#96b9fb" d="M 192.5,52.5 C 181.833,52.5 171.167,52.5 160.5,52.5C 160.5,54.5 160.5,56.5 160.5,58.5C 167.022,58.1765 173.355,58.5098 179.5,59.5C 172.833,59.5 166.167,59.5 159.5,59.5C 159.5,56.8333 159.5,54.1667 159.5,51.5C 170.679,51.1721 181.679,51.5054 192.5,52.5 Z"/></g>
8 +<g><path style="opacity:1" fill="#f9fbfe" d="M 52.5,52.5 C 55.1667,52.5 57.8333,52.5 60.5,52.5C 62.6891,61.2364 65.1891,69.9031 68,78.5C 70.5041,69.8141 73.0041,61.1475 75.5,52.5C 78.1667,52.5 80.8333,52.5 83.5,52.5C 85.6891,61.2364 88.1891,69.9031 91,78.5C 93.8109,69.9031 96.3109,61.2364 98.5,52.5C 101.247,52.1866 103.914,52.52 106.5,53.5C 102.366,65.7367 98.5323,78.07 95,90.5C 92.8615,91.7691 90.6948,91.7691 88.5,90.5C 85.8047,81.7138 82.8047,73.0471 79.5,64.5C 75.8986,73.3043 72.8986,82.3043 70.5,91.5C 68.1667,91.5 65.8333,91.5 63.5,91.5C 60.0388,78.4487 56.3721,65.4487 52.5,52.5 Z"/></g>
9 +<g><path style="opacity:1" fill="#fbfcfe" d="M 192.5,52.5 C 185.3,63.0584 177.966,73.5584 170.5,84C 177.492,84.4996 184.492,84.6663 191.5,84.5C 191.5,86.8333 191.5,89.1667 191.5,91.5C 180.147,91.8322 168.814,91.4988 157.5,90.5C 164.858,80.1485 172.192,69.8152 179.5,59.5C 173.355,58.5098 167.022,58.1765 160.5,58.5C 160.5,56.5 160.5,54.5 160.5,52.5C 171.167,52.5 181.833,52.5 192.5,52.5 Z"/></g>
10 +<g><path style="opacity:1" fill="#f7f9fe" d="M 198.5,51.5 C 201.167,51.5 203.833,51.5 206.5,51.5C 206.334,60.1731 206.5,68.8397 207,77.5C 210.161,85.3239 215.661,87.4906 223.5,84C 225.049,82.786 226.215,81.286 227,79.5C 227.5,70.1726 227.666,60.8393 227.5,51.5C 230.167,51.5 232.833,51.5 235.5,51.5C 235.666,61.5056 235.5,71.5056 235,81.5C 228.964,92.0892 220.13,95.2559 208.5,91C 203.419,88.257 200.253,84.0904 199,78.5C 198.5,69.5062 198.334,60.5062 198.5,51.5 Z"/></g>
11 +<g><path style="opacity:1" fill="#3584f9" d="M 125.5,58.5 C 140.348,58.1663 145.515,65.1663 141,79.5C 131.976,88.2723 124.31,87.2723 118,76.5C 115.877,68.4271 118.377,62.4271 125.5,58.5 Z"/></g>
12 +<g><path style="opacity:1" fill="#020307" d="M 291.5,80.5 C 297.831,79.0291 300.998,81.3624 301,87.5C 298.947,91.2916 295.781,92.4582 291.5,91C 288.88,87.5019 288.88,84.0019 291.5,80.5 Z"/></g>
13 </svg>
src/assets/images/wazuh-manager.svg
+12 -34
@@ -1,35 +1,13 @@
1 -<?xml version="1.0" standalone="no"?>
2 -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3 - "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4 -<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5 - width="389.000000pt" height="130.000000pt" viewBox="0 0 389.000000 130.000000"
6 - preserveAspectRatio="xMidYMid meet">
7 -
8 -<g transform="translate(0.000000,130.000000) scale(0.100000,-0.100000)"
9 -fill="#000000" stroke="none">
10 -<path d="M2870 655 l0 -335 50 0 50 0 0 153 c0 171 9 218 50 259 24 24 37 28
11 -82 28 65 0 93 -18 119 -74 16 -35 19 -66 19 -203 l0 -163 50 0 50 0 0 188 c0
12 -176 -2 190 -24 238 -40 86 -105 121 -209 111 -45 -4 -71 -13 -104 -36 l-43
13 --31 0 100 0 100 -45 0 -45 0 0 -335z"/>
14 -<path d="M1200 839 c-98 -44 -150 -123 -158 -235 -6 -99 16 -163 78 -225 36
15 --36 62 -52 106 -65 88 -25 188 -8 247 44 16 14 17 13 17 -16 0 -32 1 -32 50
16 --32 l50 0 0 270 0 270 -50 0 c-47 0 -50 -2 -50 -25 0 -29 -7 -31 -31 -9 -51
17 -46 -183 58 -259 23z m162 -79 c48 -14 97 -55 114 -97 20 -47 17 -127 -6 -173
18 --65 -127 -251 -119 -311 15 -55 120 23 251 156 264 6 0 27 -4 47 -9z"/>
19 -<path d="M275 823 c3 -16 38 -134 78 -263 l73 -235 41 -3 42 -3 57 178 c32 98
20 -61 182 64 186 6 7 120 -327 120 -352 0 -6 18 -11 45 -11 l44 0 30 98 c17 53
21 -51 165 76 247 25 83 48 158 51 168 5 15 -2 17 -45 17 l-50 0 -26 -87 c-15 -49
22 --38 -126 -52 -173 -14 -47 -29 -88 -32 -92 -3 -4 -30 74 -60 173 l-54 179 -43
23 -0 c-48 0 -35 27 -114 -228 -23 -74 -43 -132 -44 -130 -2 1 -27 83 -57 181
24 -l-53 177 -49 0 c-48 0 -48 0 -42 -27z"/>
25 -<path d="M1720 805 l0 -45 135 0 c74 0 135 -2 135 -5 0 -2 -67 -99 -150 -214
26 --82 -115 -150 -212 -150 -215 0 -3 101 -6 225 -6 l225 0 0 45 0 44 -141 3
27 --140 3 145 204 c80 112 146 210 146 218 0 10 -42 13 -215 13 l-215 0 0 -45z"/>
28 -<path d="M2250 661 c0 -186 0 -189 28 -241 70 -135 285 -160 398 -47 25 25 46
29 -59 53 82 6 22 11 118 11 218 l0 177 -50 0 -50 0 0 -167 c0 -191 -13 -238 -69
30 --267 -43 -23 -119 -20 -159 4 -54 33 -62 67 -62 260 l0 170 -50 0 -50 0 0
31 --189z"/>
32 -<path d="M3499 460 c-9 -5 -22 -23 -29 -40 -33 -79 65 -146 125 -85 35 34 34
33 -86 -1 114 -28 22 -68 27 -95 11z"/>
34 -</g>
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 +<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="354px" height="142px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
4 +<g><path style="opacity:1" fill="#3585f8" d="M -0.5,-0.5 C 117.5,-0.5 235.5,-0.5 353.5,-0.5C 353.5,46.8333 353.5,94.1667 353.5,141.5C 235.5,141.5 117.5,141.5 -0.5,141.5C -0.5,94.1667 -0.5,46.8333 -0.5,-0.5 Z"/></g>
5 +<g><path style="opacity:1" fill="#fafbfe" d="M 245.5,41.5 C 247.833,41.5 250.167,41.5 252.5,41.5C 252.334,46.1785 252.501,50.8452 253,55.5C 256.311,52.1815 260.311,50.8482 265,51.5C 273.195,51.3503 278.195,55.3503 280,63.5C 280.5,72.8274 280.666,82.1607 280.5,91.5C 277.833,91.5 275.167,91.5 272.5,91.5C 272.666,82.8269 272.5,74.1603 272,65.5C 268.643,58.3466 263.476,56.68 256.5,60.5C 255.081,62.3359 253.914,64.3359 253,66.5C 252.5,74.8267 252.334,83.16 252.5,91.5C 250.167,91.5 247.833,91.5 245.5,91.5C 245.5,74.8333 245.5,58.1667 245.5,41.5 Z"/></g>
6 +<g><path style="opacity:1" fill="#f9fbfe" d="M 125.5,50.5 C 131.676,50.0836 137.176,51.7503 142,55.5C 142.49,54.2068 142.657,52.8734 142.5,51.5C 145.167,51.5 147.833,51.5 150.5,51.5C 150.5,64.8333 150.5,78.1667 150.5,91.5C 147.833,91.5 145.167,91.5 142.5,91.5C 142.719,90.325 142.386,89.325 141.5,88.5C 127.53,96.2709 117.03,92.9375 110,78.5C 107.162,64.493 112.329,55.1597 125.5,50.5 Z"/></g>
7 +<g><path style="opacity:1" fill="#96b9fb" d="M 192.5,52.5 C 181.833,52.5 171.167,52.5 160.5,52.5C 160.5,54.5 160.5,56.5 160.5,58.5C 167.022,58.1765 173.355,58.5098 179.5,59.5C 172.833,59.5 166.167,59.5 159.5,59.5C 159.5,56.8333 159.5,54.1667 159.5,51.5C 170.679,51.1721 181.679,51.5054 192.5,52.5 Z"/></g>
8 +<g><path style="opacity:1" fill="#f9fbfe" d="M 52.5,52.5 C 55.1667,52.5 57.8333,52.5 60.5,52.5C 62.6891,61.2364 65.1891,69.9031 68,78.5C 70.5041,69.8141 73.0041,61.1475 75.5,52.5C 78.1667,52.5 80.8333,52.5 83.5,52.5C 85.6891,61.2364 88.1891,69.9031 91,78.5C 93.8109,69.9031 96.3109,61.2364 98.5,52.5C 101.247,52.1866 103.914,52.52 106.5,53.5C 102.366,65.7367 98.5323,78.07 95,90.5C 92.8615,91.7691 90.6948,91.7691 88.5,90.5C 85.8047,81.7138 82.8047,73.0471 79.5,64.5C 75.8986,73.3043 72.8986,82.3043 70.5,91.5C 68.1667,91.5 65.8333,91.5 63.5,91.5C 60.0388,78.4487 56.3721,65.4487 52.5,52.5 Z"/></g>
9 +<g><path style="opacity:1" fill="#fbfcfe" d="M 192.5,52.5 C 185.3,63.0584 177.966,73.5584 170.5,84C 177.492,84.4996 184.492,84.6663 191.5,84.5C 191.5,86.8333 191.5,89.1667 191.5,91.5C 180.147,91.8322 168.814,91.4988 157.5,90.5C 164.858,80.1485 172.192,69.8152 179.5,59.5C 173.355,58.5098 167.022,58.1765 160.5,58.5C 160.5,56.5 160.5,54.5 160.5,52.5C 171.167,52.5 181.833,52.5 192.5,52.5 Z"/></g>
10 +<g><path style="opacity:1" fill="#f7f9fe" d="M 198.5,51.5 C 201.167,51.5 203.833,51.5 206.5,51.5C 206.334,60.1731 206.5,68.8397 207,77.5C 210.161,85.3239 215.661,87.4906 223.5,84C 225.049,82.786 226.215,81.286 227,79.5C 227.5,70.1726 227.666,60.8393 227.5,51.5C 230.167,51.5 232.833,51.5 235.5,51.5C 235.666,61.5056 235.5,71.5056 235,81.5C 228.964,92.0892 220.13,95.2559 208.5,91C 203.419,88.257 200.253,84.0904 199,78.5C 198.5,69.5062 198.334,60.5062 198.5,51.5 Z"/></g>
11 +<g><path style="opacity:1" fill="#3584f9" d="M 125.5,58.5 C 140.348,58.1663 145.515,65.1663 141,79.5C 131.976,88.2723 124.31,87.2723 118,76.5C 115.877,68.4271 118.377,62.4271 125.5,58.5 Z"/></g>
12 +<g><path style="opacity:1" fill="#020307" d="M 291.5,80.5 C 297.831,79.0291 300.998,81.3624 301,87.5C 298.947,91.2916 295.781,92.4582 291.5,91C 288.88,87.5019 288.88,84.0019 291.5,80.5 Z"/></g>
13 </svg>
src/components/AuthForm/SignIn.vue
+2
@@ -55,9 +55,11 @@ interface ModelType {
55 password: string
56 }
57
58 +/*
59 const emit = defineEmits<{
60 (e: "goto-forgot-password"): void
61 }>()
62 +*/
63
64 const loading = ref(false)
65 const router = useRouter()
src/components/AuthForm/SignUp.vue
+5 -5
@@ -153,12 +153,11 @@ import {
153 NButton,
154 NSteps,
155 NStep,
156 - NAvatar,
156 NSpin,
157 type FormItemRule
158 } from "naive-ui"
159 import isEmail from "validator/es/lib/isEmail"
161 -import ImageCropper, { type ImageCropperResult } from "@/components/common/ImageCropper.vue"
160 +// import ImageCropper, { type ImageCropperResult } from "@/components/common/ImageCropper.vue"
161 import passwordValidator from "password-validator"
162 import Api from "@/api"
163 import type { RegisterPayload } from "@/types/auth.d"
@@ -179,8 +178,8 @@ interface ModelType {
178
179 const ArrowRightIcon = "carbon:arrow-right"
180 const ArrowLeftIcon = "carbon:arrow-left"
182 -const ImageIcon = "carbon:image"
183 -const RemoveImageIcon = "carbon:no-image"
181 +// const ImageIcon = "carbon:image"
182 +// const RemoveImageIcon = "carbon:no-image"
183 const UserAddIcon = "carbon:user-admin"
184
185 const emit = defineEmits<{
@@ -344,9 +343,10 @@ function signUp(e: Event) {
343 }
344 })
345 }
347 -
346 +/*
347 function setCroppedImage(result: ImageCropperResult) {
348 const canvas = result.canvas as HTMLCanvasElement
349 // model.value.propic = canvas.toDataURL()
350 }
351 +*/
352 </script>
src/components/agents/agentFlow/AgentFlowItem.vue
+1 -1
@@ -169,7 +169,7 @@ const { flow, embedded } = defineProps<{ flow: FlowResult; embedded?: boolean }>
169 const TimeIcon = "carbon:time"
170 const InfoIcon = "carbon:information"
171 const DisabledIcon = "carbon:subtract"
172 -const EnabledIcon = "carbon:checkmark"
172 +const EnabledIcon = "ri:check-line"
173
174 const showDetails = ref(false)
175 const dFormats = useSettingsStore().dateFormat
src/components/common/Markdown.vue new
+39
@@ -0,0 +1,39 @@
1 +<template>
2 + <vue-markdown-it
3 + :source="source"
4 + preset="commonmark"
5 + :plugins="[[markdownItHighlightjs, { hljs, auto: true, code: true, inline: false, ignoreIllegals: true }]]"
6 + class="markdown-style scrollbar-styled"
7 + />
8 +</template>
9 +
10 +<script setup lang="ts">
11 +import { toRefs } from "vue"
12 +import markdownItHighlightjs from "markdown-it-highlightjs/core"
13 +import "@/assets/scss/hljs.scss"
14 +import { VueMarkdownIt } from "@f3ve/vue-markdown-it"
15 +
16 +import hljs from "highlight.js/lib/core"
17 +import powershell from "highlight.js/lib/languages/powershell"
18 +import json from "highlight.js/lib/languages/json"
19 +import xml from "highlight.js/lib/languages/xml"
20 +
21 +hljs.registerLanguage("powershell", powershell)
22 +hljs.registerLanguage("json", json)
23 +hljs.registerLanguage("xml", xml)
24 +
25 +const props = defineProps<{
26 + source: string
27 +}>()
28 +const { source } = toRefs(props)
29 +</script>
30 +
31 +<style lang="scss" scoped>
32 +.markdown-style {
33 + :deep() {
34 + & > * {
35 + margin-bottom: 15px;
36 + }
37 + }
38 +}
39 +</style>
src/components/common/PaginationIndeterminate.vue
-1
@@ -39,7 +39,6 @@
39 <script setup lang="ts">
40 import { computed, toRefs } from "vue"
41 import { NSelect, NInputNumber } from "naive-ui"
42 -import _uniqBy from "lodash/uniqBy"
42 import Icon from "@/components/common/Icon.vue"
43 import { watch } from "vue"
44
src/components/connectors/ConfigForm/ConfigForm.vue
+123 -14
@@ -33,6 +33,24 @@
33 v-if="connectorFormType === ConnectorFormType.TOKEN"
34 @mounted="formRef = $event"
35 />
36 + <HostType
37 + :form="connectorForm"
38 + v-if="connectorFormType === ConnectorFormType.HOST"
39 + @mounted="formRef = $event"
40 + />
41 + </div>
42 + <div class="connector-form-options">
43 + <n-form
44 + :model="connectorForm"
45 + :rules="optionsRules"
46 + label-width="120px"
47 + ref="formOptionsRef"
48 + label-placement="top"
49 + >
50 + <n-form-item label="Extra data" path="connector_extra_data" v-if="connectorFormOptions.extraData">
51 + <n-input v-model:value="connectorForm.connector_extra_data" type="text" />
52 + </n-form-item>
53 + </n-form>
54 </div>
55
56 <div class="connector-footer mt-4">
@@ -48,14 +66,32 @@
66 </template>
67
68 <script setup lang="ts">
51 -import { computed, onMounted, ref, toRefs } from "vue"
52 -import { type Connector, type ConnectorForm, ConnectorFormType } from "@/types/connectors.d"
69 +import { computed, onMounted, ref, toRefs, watch } from "vue"
70 +import {
71 + ConnectorFormType,
72 + type Connector,
73 + type ConnectorForm,
74 + type ConnectorRequestPayload,
75 + type ConnectorFormOptions,
76 + type ConnectorFormOptionKeys
77 +} from "@/types/connectors.d"
78 import CredentialsType from "./FormTypes/CredentialsType.vue"
79 import FileType from "./FormTypes/FileType.vue"
80 import TokenType from "./FormTypes/TokenType.vue"
81 +import HostType from "./FormTypes/HostType.vue"
82 import _pick from "lodash/pick"
57 -import { useMessage, NFormItem, NAvatar, NSpin, NButton, type FormInst, type FormValidationError } from "naive-ui"
58 -
83 +import {
84 + useMessage,
85 + NFormItem,
86 + NAvatar,
87 + NSpin,
88 + NForm,
89 + NInput,
90 + NButton,
91 + type FormInst,
92 + type FormValidationError,
93 + type FormRules
94 +} from "naive-ui"
95 import Api from "@/api"
96
97 const props = defineProps<{
@@ -65,27 +101,52 @@ const { connector } = toRefs(props)
101
102 const emit = defineEmits<{
103 (e: "close", value: boolean): void
104 + (e: "loading", value: boolean): void
105 }>()
106
70 -const message = useMessage()
107 const connectorForm = ref<ConnectorForm>({
108 connector_url: "",
109 connector_username: "",
110 connector_password: "",
111 connector_api_key: "",
112 + connector_extra_data: "",
113 connector_file: null
114 })
115 +
116 +const optionsRules: FormRules = {
117 + connector_extra_data: [{ required: true, trigger: "blur", message: "Please input a valid Extra Data" }]
118 +}
119 +
120 +const message = useMessage()
121 +const formOptionsRef = ref<FormInst>()
122 const connectorFormType = computed<ConnectorFormType>(() => getConnectorFormType(connector.value))
123 +const connectorFormOptions = computed<ConnectorFormOptions>(() => getConnectorFormOptions(connector.value))
124 const isConnectorConfigured = computed<boolean>(() => connector.value.connector_configured)
125 const formRef = ref<FormInst | null>(null)
126 const loading = ref<boolean>(false)
127
128 +const formOptionsCheckRequired = computed<boolean>(() => {
129 + let checkRequired = false
130 + for (const key in connectorFormOptions.value) {
131 + const required = connectorFormOptions.value[key as ConnectorFormOptionKeys]
132 + if (required === true) {
133 + checkRequired = true
134 + }
135 + }
136 + return checkRequired
137 +})
138 +
139 +watch(loading, val => {
140 + emit("loading", val)
141 +})
142 +
143 function setUpForm() {
144 connectorForm.value = _pick(connector.value, [
145 "connector_url",
146 "connector_username",
147 "connector_password",
148 "connector_api_key",
149 + "connector_extra_data",
150 "connector_file"
151 ]) as unknown as ConnectorForm
152 }
@@ -100,17 +161,46 @@ function getConnectorFormType(connector: Connector): ConnectorFormType {
161 if (connector.connector_accepts_username_password) {
162 return ConnectorFormType.CREDENTIALS
163 }
164 + if (connector.connector_accepts_host_only) {
165 + return ConnectorFormType.HOST
166 + }
167 return ConnectorFormType.UNKNOWN
168 }
169
170 +function getConnectorFormOptions(connector: Connector): ConnectorFormOptions {
171 + const options: ConnectorFormOptions = {}
172 +
173 + if (connector.connector_accepts_extra_data) {
174 + options.extraData = true
175 + }
176 +
177 + return options
178 +}
179 +
180 function saveConnector() {
181 if (!formRef.value) return
182
183 + let messageSent = false
184 +
185 formRef.value.validate((errors?: Array<FormValidationError>) => {
186 if (!errors) {
111 - configureConnector()
187 + if (formOptionsRef.value && formOptionsCheckRequired.value) {
188 + formOptionsRef.value.validate((errors?: Array<FormValidationError>) => {
189 + if (!errors) {
190 + configureConnector()
191 + } else {
192 + if (!messageSent) {
193 + message.warning("You must fill in the required fields correctly.")
194 + }
195 + return false
196 + }
197 + })
198 + } else {
199 + configureConnector()
200 + }
201 } else {
202 message.warning("You must fill in the required fields correctly.")
203 + messageSent = true
204 return false
205 }
206 })
@@ -131,30 +221,49 @@ function getRequestMethod() {
221 function configureConnector() {
222 loading.value = true
223
134 - const { connector_url, connector_username, connector_password, connector_api_key, connector_file } =
135 - connectorForm.value
224 + const {
225 + connector_url,
226 + connector_username,
227 + connector_password,
228 + connector_api_key,
229 + connector_file,
230 + connector_extra_data
231 + } = connectorForm.value
232
233 const requestMethod = getRequestMethod()
234
139 - let requestPayload: any = { connector_url }
235 + let requestPayload: ConnectorRequestPayload = {}
236
237 + if (connectorFormType.value === ConnectorFormType.HOST) {
238 + requestPayload = {
239 + connector_url
240 + }
241 + }
242 if (connectorFormType.value === ConnectorFormType.TOKEN) {
142 - requestPayload = Object.assign(requestPayload, {
243 + requestPayload = {
244 + connector_url,
245 connector_api_key
144 - })
246 + }
247 }
248 if (connectorFormType.value === ConnectorFormType.CREDENTIALS) {
147 - requestPayload = Object.assign(requestPayload, {
249 + requestPayload = {
250 + connector_url,
251 connector_username,
252 connector_password
150 - })
253 + }
254 }
255 if (connectorFormType.value === ConnectorFormType.FILE && connector_file) {
256 const form = new FormData()
257 form.append("file", new Blob([connector_file], { type: connector_file.type }), connector_file.name)
155 -
258 requestPayload = form
259 }
260 + if (connectorFormOptions.value.extraData) {
261 + if (requestPayload instanceof FormData) {
262 + requestPayload.append("connector_extra_data", connector_extra_data)
263 + } else {
264 + requestPayload.connector_extra_data = connector_extra_data
265 + }
266 + }
267
268 requestMethod(connector.value.id, requestPayload)
269 .then(() => {
src/components/connectors/ConfigForm/FormTypes/HostType.vue new
+49
@@ -0,0 +1,49 @@
1 +<template>
2 + <n-form :model="form" :rules="rules" label-width="120px" ref="formRef" label-placement="top">
3 + <n-form-item label="Connector URL" path="connector_url">
4 + <n-input v-model:value="form.connector_url" required type="text" />
5 + </n-form-item>
6 + </n-form>
7 +</template>
8 +
9 +<script setup lang="ts">
10 +import { onMounted, ref, toRefs } from "vue"
11 +import isURL from "validator/es/lib/isURL"
12 +import { NForm, NFormItem, NInput, type FormRules, type FormInst, type FormItemRule } from "naive-ui"
13 +
14 +export interface IHostForm {
15 + connector_url: string
16 +}
17 +
18 +const emit = defineEmits<{
19 + (e: "mounted", value: FormInst): void
20 +}>()
21 +
22 +const props = defineProps<{
23 + form: IHostForm
24 +}>()
25 +const { form } = toRefs(props)
26 +
27 +const formRef = ref<FormInst>()
28 +
29 +const validateUrl = (rule: FormItemRule, value: string) => {
30 + if (!value) {
31 + return new Error("Please input a valid URL")
32 + }
33 + if (!isURL(value)) {
34 + return new Error("Please input a valid URL")
35 + }
36 +
37 + return true
38 +}
39 +
40 +const rules: FormRules = {
41 + connector_url: [{ required: true, validator: validateUrl, trigger: "blur" }]
42 +}
43 +
44 +onMounted(() => {
45 + if (formRef.value) {
46 + emit("mounted", formRef.value)
47 + }
48 +})
49 +</script>
src/components/connectors/ConfigForm/index.ts
+1 -2
@@ -1,2 +1 @@
1 -import ConfigForm from "./ConfigForm.vue"
2 -export default ConfigForm
1 +export { default } from "./ConfigForm.vue"
src/components/connectors/ConnectorItem.vue new
+198
@@ -0,0 +1,198 @@
1 +<template>
2 + <n-spin :show="loading" class="connector-item">
3 + <div class="px-4 py-3 flex flex-col gap-2">
4 + <div class="main-box flex gap-6">
5 + <div class="content flex flex-col gap-2 grow">
6 + <div class="flex gap-4">
7 + <div class="avatar">
8 + <n-avatar
9 + class="connector-image"
10 + object-fit="contain"
11 + round
12 + :size="40"
13 + :src="`/src/assets/images/${
14 + connector ? connector.connector_name.toLowerCase() + '.svg' : 'default-logo.svg'
15 + }`"
16 + :alt="`${connector.connector_name} Logo`"
17 + fallback-src="/images/img-not-found.svg"
18 + />
19 + </div>
20 +
21 + <div class="info flex flex-col gap-2">
22 + <div class="name">{{ connector.connector_name }}</div>
23 + <div class="description" v-if="connector.connector_description">
24 + {{ connector.connector_description }}
25 + </div>
26 + <div class="extra-data" v-if="connector.connector_extra_data">
27 + {{ connector.connector_extra_data }}
28 + </div>
29 + </div>
30 + </div>
31 +
32 + <div class="badges-box flex flex-wrap items-center gap-3 mt-2">
33 + <Badge :type="connector.connector_configured ? 'active' : 'muted'">
34 + <template #iconRight>
35 + <Icon
36 + :name="connector.connector_configured ? EnabledIcon : DisabledIcon"
37 + :size="14"
38 + ></Icon>
39 + </template>
40 + <template #label>Configured</template>
41 + </Badge>
42 +
43 + <Badge :type="connector.connector_verified ? 'active' : 'muted'">
44 + <template #iconRight>
45 + <Icon
46 + :name="connector.connector_verified ? EnabledIcon : DisabledIcon"
47 + :size="14"
48 + ></Icon>
49 + </template>
50 + <template #label>Verified</template>
51 + </Badge>
52 + </div>
53 + </div>
54 +
55 + <div class="actions-box flex flex-col gap-2 justify-center">
56 + <n-button
57 + type="primary"
58 + v-if="!connector.connector_verified"
59 + @click="verify(connector)"
60 + :loading="loadingVerify"
61 + size="small"
62 + >
63 + <template #icon>
64 + <Icon :name="VerifyIcon"></Icon>
65 + </template>
66 + Verify
67 + </n-button>
68 +
69 + <n-button
70 + :type="!connector.connector_configured ? 'primary' : undefined"
71 + :loading="loadingConfiguration"
72 + @click="openConfigDialog()"
73 + size="small"
74 + >
75 + <template #icon>
76 + <Icon :name="DetailsIcon"></Icon>
77 + </template>
78 +
79 + {{ !connector.connector_configured ? "Configure" : "Update" }}
80 + </n-button>
81 + </div>
82 + </div>
83 + </div>
84 +
85 + <n-modal
86 + title="Connector configuration"
87 + v-model:show="showConfigDialog"
88 + :mask-closable="false"
89 + :close-on-esc="false"
90 + width="600px"
91 + >
92 + <n-card style="width: 90vw; max-width: 500px">
93 + <ConfigForm
94 + v-if="showConfigDialog"
95 + @loading="loadingConfiguration = $event"
96 + :connector="connector"
97 + @close="closeConfigDialog"
98 + />
99 + </n-card>
100 + </n-modal>
101 + </n-spin>
102 +</template>
103 +
104 +<script setup lang="ts">
105 +import Icon from "@/components/common/Icon.vue"
106 +import Badge from "@/components/common/Badge.vue"
107 +import { computed, ref, toRefs } from "vue"
108 +import Api from "@/api"
109 +import { NAvatar, useMessage, NModal, NSpin, NButton, NCard } from "naive-ui"
110 +import type { Connector } from "@/types/connectors"
111 +import ConfigForm from "./ConfigForm"
112 +
113 +const emit = defineEmits<{
114 + (e: "verified"): void
115 + (e: "updated"): void
116 +}>()
117 +
118 +const props = defineProps<{
119 + connector: Connector
120 +}>()
121 +const { connector } = toRefs(props)
122 +
123 +const DetailsIcon = "carbon:settings-adjust"
124 +const VerifyIcon = "carbon:settings-check"
125 +const DisabledIcon = "carbon:subtract"
126 +const EnabledIcon = "ri:check-line"
127 +
128 +const showConfigDialog = ref(false)
129 +const loadingConfiguration = ref(false)
130 +const loadingVerify = ref(false)
131 +const message = useMessage()
132 +
133 +const loading = computed(() => loadingVerify.value || loadingConfiguration.value)
134 +
135 +function openConfigDialog() {
136 + showConfigDialog.value = true
137 +}
138 +function closeConfigDialog(update: boolean) {
139 + showConfigDialog.value = false
140 + loadingConfiguration.value = false
141 +
142 + if (update) {
143 + emit("updated")
144 + }
145 +}
146 +
147 +function verify(connector: Connector) {
148 + loadingVerify.value = true
149 +
150 + Api.connectors
151 + .verify(connector.id)
152 + .then(res => {
153 + message.success(res.data?.message || "Connector was successfully verified.")
154 + emit("verified")
155 + })
156 + .catch(err => {
157 + message.error(err.response?.data?.message || "An error occurred. Please try again later.")
158 + })
159 + .finally(() => {
160 + loadingVerify.value = false
161 + })
162 +}
163 +</script>
164 +
165 +<style lang="scss" scoped>
166 +.connector-item {
167 + border-radius: var(--border-radius);
168 + background-color: var(--bg-color);
169 + transition: all 0.2s var(--bezier-ease);
170 + border: var(--border-small-050);
171 +
172 + .main-box {
173 + .connector-image {
174 + border: 2px solid var(--bg-body);
175 + min-width: 40px;
176 + min-height: 40px;
177 + }
178 + .content {
179 + word-break: break-word;
180 +
181 + .name {
182 + font-weight: bold;
183 + }
184 + .description {
185 + font-size: 13px;
186 + }
187 + .extra-data {
188 + color: var(--fg-secondary-color);
189 + font-size: 13px;
190 + }
191 + }
192 + }
193 +
194 + &:hover {
195 + box-shadow: 0px 0px 0px 1px inset var(--primary-color);
196 + }
197 +}
198 +</style>
src/components/connectors/ConnectorsList.vue new
+77
@@ -0,0 +1,77 @@
1 +<template>
2 + <div class="connectors-list">
3 + <div class="header mb-4 flex gap-5 justify-between items-center">
4 + <div>
5 + Total:
6 + <strong class="font-mono">{{ totalCustomers }}</strong>
7 + </div>
8 + <div class="text-secondary-color text-right">Configure connections to your toolset</div>
9 + </div>
10 + <n-spin :show="loadingConnectors">
11 + <div class="list">
12 + <template v-if="connectorsList.length">
13 + <ConnectorItem
14 + v-for="connector of connectorsList"
15 + :key="connector.id"
16 + :connector="connector"
17 + @verified="getConnectors()"
18 + @updated="getConnectors()"
19 + class="item-appear item-appear-bottom item-appear-005 mb-2"
20 + />
21 + </template>
22 + <template v-else>
23 + <n-empty description="No items found" class="justify-center h-48" v-if="!loadingConnectors" />
24 + </template>
25 + </div>
26 + </n-spin>
27 + </div>
28 +</template>
29 +
30 +<script setup lang="ts">
31 +import { ref, onBeforeMount, computed } from "vue"
32 +import { useMessage, NSpin, NEmpty } from "naive-ui"
33 +import Api from "@/api"
34 +import ConnectorItem from "./ConnectorItem.vue"
35 +import type { Connector } from "@/types/connectors"
36 +
37 +const message = useMessage()
38 +const loadingConnectors = ref(false)
39 +const connectorsList = ref<Connector[]>([])
40 +
41 +const totalCustomers = computed<number>(() => {
42 + return connectorsList.value.length || 0
43 +})
44 +
45 +function getConnectors() {
46 + loadingConnectors.value = true
47 +
48 + Api.connectors
49 + .getAll()
50 + .then(res => {
51 + if (res.data.success) {
52 + connectorsList.value = res.data?.connectors || []
53 + } else {
54 + message.warning(res.data?.message || "An error occurred. Please try again later.")
55 + }
56 + })
57 + .catch(err => {
58 + message.error(err.response?.data?.message || "An error occurred. Please try again later.")
59 + })
60 + .finally(() => {
61 + loadingConnectors.value = false
62 + })
63 +}
64 +
65 +onBeforeMount(() => {
66 + getConnectors()
67 +})
68 +</script>
69 +
70 +<style lang="scss" scoped>
71 +.connectors-list {
72 + .list {
73 + container-type: inline-size;
74 + min-height: 200px;
75 + }
76 +}
77 +</style>
src/components/customers/CustomerCreationButton.vue
+1 -1
@@ -20,7 +20,7 @@
20 </template>
21
22 <script setup lang="ts">
23 -import { ref, watch, toRefs } from "vue"
23 +import { ref, watch } from "vue"
24 import { NButton, NDrawer, NDrawerContent } from "naive-ui"
25 import Icon from "@/components/common/Icon.vue"
26 import CustomerForm from "./CustomerForm.vue"
src/components/customers/CustomersList.vue
+3 -3
@@ -73,7 +73,7 @@ function getCustomers() {
73 })
74 }
75
76 -function scrollToAlert(id: string) {
76 +function scrollToItem(id: string) {
77 const element = document.getElementById(`customer-${id}`)
78 const scrollContent = document.querySelector("#main > .n-scrollbar > .n-scrollbar-container") as HTMLElement
79
@@ -95,7 +95,7 @@ watch(loadingCustomers, val => {
95 nextTick(() => {
96 setTimeout(() => {
97 if (highlight.value) {
98 - scrollToAlert(highlight.value)
98 + scrollToItem(highlight.value)
99 }
100 }, 300)
101 })
@@ -106,7 +106,7 @@ watch(highlight, val => {
106 if (val) {
107 nextTick(() => {
108 setTimeout(() => {
109 - scrollToAlert(val)
109 + scrollToItem(val)
110 })
111 })
112 }
src/components/graylog/Events/List.vue
+3 -3
@@ -82,7 +82,7 @@ const itemsPaginated = computed(() => {
82 })
83 })
84
85 -function scrollToEvent(id: string) {
85 +function scrollToItem(id: string) {
86 const element = document.getElementById(`event-${id}`)
87 const scrollContent = document.querySelector("#main > .n-scrollbar > .n-scrollbar-container") as HTMLElement
88
@@ -106,7 +106,7 @@ function getData() {
106 nextTick(() => {
107 setTimeout(() => {
108 if (highlight.value) {
109 - scrollToEvent(highlight.value)
109 + scrollToItem(highlight.value)
110 }
111 }, 300)
112 })
@@ -126,7 +126,7 @@ watch(highlight, val => {
126 if (val) {
127 nextTick(() => {
128 setTimeout(() => {
129 - scrollToEvent(val)
129 + scrollToItem(val)
130 })
131 })
132 }
src/components/graylog/Pipelines/RulesList.vue
+3 -3
@@ -27,7 +27,7 @@ const loading = ref(false)
27 const rules = ref<PipelineRule[]>([])
28 const scrollContent = ref<(ScrollbarInst & { $el: any }) | null>(null)
29
30 -function scrollToRule(id: string) {
30 +function scrollToItem(id: string) {
31 const element = document.getElementById(`rule-${id}`)
32 if (element && scrollContent.value) {
33 const wrap: HTMLElement = scrollContent.value.$el.nextSibling || scrollContent.value.$el.nextElementSibling
@@ -48,7 +48,7 @@ function getRules() {
48 nextTick(() => {
49 setTimeout(() => {
50 if (highlight.value) {
51 - scrollToRule(highlight.value)
51 + scrollToItem(highlight.value)
52 }
53 }, 300)
54 })
@@ -68,7 +68,7 @@ watch(highlight, val => {
68 if (val) {
69 nextTick(() => {
70 setTimeout(() => {
71 - scrollToRule(val)
71 + scrollToItem(val)
72 })
73 })
74 }
src/components/integrations/IntegrationItem.vue
+3 -18
@@ -42,12 +42,7 @@
42 :bordered="false"
43 segmented
44 >
45 - <vue-markdown-it
46 - :source="integration.integration_details"
47 - preset="commonmark"
48 - :plugins="[markdownItHighlightjs]"
49 - class="integration-details scrollbar-styled"
50 - />
45 + <Markdown :source="integration.integration_details" />
46 </n-modal>
47 </div>
48 </template>
@@ -55,12 +50,10 @@
50 <script setup lang="ts">
51 import Icon from "@/components/common/Icon.vue"
52 import Badge from "@/components/common/Badge.vue"
58 -import { ref, toRefs } from "vue"
53 +import { defineAsyncComponent, ref, toRefs } from "vue"
54 import { NModal, NRadio } from "naive-ui"
55 import type { AvailableIntegration } from "@/types/integrations"
61 -import markdownItHighlightjs from "markdown-it-highlightjs"
62 -import "@/assets/scss/hljs.scss"
63 -import { VueMarkdownIt } from "@f3ve/vue-markdown-it"
56 +const Markdown = defineAsyncComponent(() => import("@/components/common/Markdown.vue"))
57
58 const props = defineProps<{
59 integration: AvailableIntegration
@@ -126,12 +119,4 @@ const showDetails = ref(false)
119 }
120 }
121 }
129 -
130 -.integration-details {
131 - :deep() {
132 - & > * {
133 - margin-bottom: 15px;
134 - }
135 - }
136 -}
122 </style>
src/components/profile/ProfileSettings.vue
-1
@@ -32,7 +32,6 @@ import {
32 NCard,
33 NForm,
34 NFormItem,
35 - NInput,
35 NButton,
36 NSelect,
37 NRadio,
src/components/soc/SocAlerts/SocAlertsList.vue
+3 -3
@@ -197,7 +197,7 @@ function getAlerts() {
197 })
198 }
199
200 -function scrollToAlert(id: string) {
200 +function scrollToItem(id: string) {
201 const element = document.getElementById(`alert-${id}`)
202 const scrollContent = document.querySelector("#main > .n-scrollbar > .n-scrollbar-container") as HTMLElement
203
@@ -336,7 +336,7 @@ watch(loadingAlerts, val => {
336 nextTick(() => {
337 setTimeout(() => {
338 if (highlight.value) {
339 - scrollToAlert(highlight.value)
339 + scrollToItem(highlight.value)
340 }
341 }, 300)
342 })
@@ -347,7 +347,7 @@ watch(highlight, val => {
347 if (val) {
348 nextTick(() => {
349 setTimeout(() => {
350 - scrollToAlert(val)
350 + scrollToItem(val)
351 })
352 })
353 }
src/components/soc/SocCases/SocCaseItem.vue
+16 -16
@@ -297,41 +297,41 @@ const extendedInfo = ref<SocCaseExt | null>(null)
297 const dFormats = useSettingsStore().dateFormat
298
299 const caseOpenDate = computed<string | null>(() => {
300 - if ("case_open_date" in baseInfo) {
301 - return baseInfo.case_open_date as string
300 + if (baseInfo.value && "case_open_date" in baseInfo.value) {
301 + return baseInfo.value.case_open_date as string
302 }
303 - if ("open_date" in baseInfo) {
304 - return baseInfo.open_date as string
303 + if (baseInfo.value && "open_date" in baseInfo.value) {
304 + return baseInfo.value.open_date as string
305 }
306 - if ("open_date" in extendedInfo) {
307 - return extendedInfo.open_date as string
306 + if (extendedInfo.value && "open_date" in extendedInfo.value) {
307 + return extendedInfo.value.open_date as string
308 }
309 return null
310 })
311
312 const caseCloseDate = computed<string | null>(() => {
313 - if ("case_close_date" in baseInfo) {
314 - return baseInfo.case_close_date as string
313 + if (baseInfo.value && "case_close_date" in baseInfo.value) {
314 + return baseInfo.value.case_close_date as string
315 }
316 - if ("close_date" in baseInfo) {
317 - return baseInfo.close_date as string
316 + if (baseInfo.value && "close_date" in baseInfo.value) {
317 + return baseInfo.value.close_date as string
318 }
319 - if ("close_date" in extendedInfo) {
320 - return extendedInfo.close_date as string
319 + if (extendedInfo.value && "close_date" in extendedInfo.value) {
320 + return extendedInfo.value.close_date as string
321 }
322 return null
323 })
324
325 const clientName = computed<string | null>(() => {
326 - if ("client_name" in baseInfo) {
327 - return baseInfo.client_name as string
326 + if (baseInfo.value && "client_name" in baseInfo.value) {
327 + return baseInfo.value.client_name as string
328 }
329 return null
330 })
331
332 const openedBy = computed<string | null>(() => {
333 - if ("opened_by" in baseInfo) {
334 - return baseInfo.opened_by as string
333 + if (baseInfo.value && "opened_by" in baseInfo.value) {
334 + return baseInfo.value.opened_by as string
335 }
336 return null
337 })
src/components/users/ChangePassword.vue
+4 -6
@@ -55,22 +55,20 @@
55 <script setup lang="ts">
56 import { ref, watch, computed } from "vue"
57 import {
58 + useMessage,
59 NDrawer,
60 NDrawerContent,
60 - type FormInst,
61 - type FormValidationError,
62 - useMessage,
63 - type FormRules,
61 NForm,
62 NFormItem,
63 NInput,
64 NButton,
65 NSpin,
66 + type FormInst,
67 + type FormValidationError,
68 + type FormRules,
69 type FormItemRule
70 } from "naive-ui"
71 import Api from "@/api"
72 -import _trim from "lodash/trim"
73 -import _toNumber from "lodash/toNumber"
72 import { useAuthStore } from "@/stores/auth"
73 import passwordValidator from "password-validator"
74 import Icon from "@/components/common/Icon.vue"
src/lang/config.ts
+1 -1
@@ -1,4 +1,4 @@
1 -import locales from "."
1 +import * as locales from "."
2
3 export type MessageSchema = typeof locales.en
4 export type Locales = keyof typeof locales
src/lang/index.ts
+6 -15
@@ -1,15 +1,6 @@
1 -import it from "./it"
2 -import en from "./en"
3 -import es from "./es"
4 -import fr from "./fr"
5 -import de from "./de"
6 -import jp from "./jp"
7 -
8 -export default {
9 - en,
10 - it,
11 - fr,
12 - de,
13 - es,
14 - jp
15 -}
1 +export * as it from "./it"
2 +export * as en from "./en"
3 +export * as es from "./es"
4 +export * as fr from "./fr"
5 +export * as de from "./de"
6 +export * as jp from "./jp"
src/layouts/common/Navbar/items.tsx
+1
@@ -17,6 +17,7 @@ const LogsIcon = "carbon:cloud-logging"
17 const UsersIcon = "carbon:group-security"
18 const IntegrationsIcon = "carbon:ibm-cloud-direct-link-2-dedicated"
19
20 +/*eslint @typescript-eslint/no-unused-vars: "off"*/
21 export default function getItems(mode: "vertical" | "horizontal", collapsed: boolean): MenuMixedOption[] {
22 return [
23 {
src/stores/auth.ts
+1 -1
@@ -107,7 +107,7 @@ export const useAuthStore = defineStore("auth", {
107 userRoleName(state): string {
108 return UserRole[(state.user?.role || 0) as number]
109 },
110 - userPic(state): string {
110 + userPic(): string {
111 let text = this.userName.slice(0, 2).toUpperCase()
112
113 if (this.userName.indexOf(" ") !== -1) {
src/types/connectors.d.ts
+31 -12
@@ -2,46 +2,65 @@ export interface Connector {
2 clusterHealth?: null
3 connectionSuccessful: boolean
4 connector_accepts_api_key: boolean
5 + connector_accepts_host_only: boolean
6 connector_accepts_file: boolean
7 connector_accepts_username_password: boolean
7 - connector_api_key: string
8 + connector_accepts_extra_data: boolean
9 + connector_api_key?: string
10 connector_configured: boolean
9 - connector_description: string
11 + connector_description?: string
12 + connector_extra_data?: string
13 connector_last_updated: string
14 connector_name: string
12 - connector_password: string
13 - connector_supports: string
15 + connector_password?: string
16 + connector_supports?: string
17 connector_type: string
18 connector_url: string
16 - connector_username: string
19 + connector_username?: string
20 connector_verified: boolean
18 - // TODO: to verify connector_file prop
19 - connector_file: string
21 + connector_supports: ConnectorSupports | string
22 id: number
23 name: string
24 authToken?: null
25 roles?: null
26 response?: null
27 + history_logs: any[]
28 }
29
30 export enum ConnectorFormType {
31 + HOST = "host",
32 TOKEN = "token",
33 FILE = "file",
34 CREDENTIALS = "credentials",
35 UNKNOWN = "unknown"
36 }
37
38 +export interface ConnectorFormOptions {
39 + extraData?: boolean
40 +}
41 +
42 +export type ConnectorFormOptionKeys = keyof ConnectorFormOptions
43 +
44 export interface ConnectorForm {
45 connector_url: string
46 connector_username: string
47 connector_password: string
48 connector_api_key: string
49 + connector_extra_data: string
50 connector_file: File | null
51 }
52
42 -export interface ConnectorRequestPayload {
43 - connector_url: string
44 - connector_username?: string
45 - connector_password?: string
46 - connector_api_key?: string
53 +export type ConnectorRequestPayload =
54 + | FormData
55 + | {
56 + connector_url?: string
57 + connector_username?: string
58 + connector_password?: string
59 + connector_api_key?: string
60 + connector_extra_data?: string
61 + /*eslint no-mixed-spaces-and-tabs: "off"*/
62 + }
63 +
64 +export enum ConnectorSupports {
65 + NotSpecified = "Not specified."
66 }
src/views/Auth/Login.vue
-62
@@ -1,54 +1,5 @@
1 <template>
2 <div class="page">
3 - <!--
4 - <div class="settings flex items-center justify-between" v-if="!isLogged">
5 - <div class="layout">
6 - <n-button quaternary circle @click="align = 'left'">
7 - <template #icon>
8 - <Icon>
9 - <Iconify :icon="AlignLeftActive" v-if="align === 'left'" />
10 - <Iconify :icon="AlignLeft" v-else />
11 - </Icon>
12 - </template>
13 - </n-button>
14 - <n-button quaternary circle @click="align = 'center'">
15 - <template #icon>
16 - <Icon>
17 - <Iconify :icon="AlignCenterActive" v-if="align === 'center'" />
18 - <Iconify :icon="AlignCenter" v-else />
19 - </Icon>
20 - </template>
21 - </n-button>
22 - <n-button quaternary circle @click="align = 'right'">
23 - <template #icon>
24 - <Icon>
25 - <Iconify :icon="AlignRightActive" v-if="align === 'right'" />
26 - <Iconify :icon="AlignRight" v-else />
27 - </Icon>
28 - </template>
29 - </n-button>
30 - </div>
31 - <div class="colors">
32 - <n-button quaternary circle v-for="color of colors" :key="color" @click="activeColor = color">
33 - <template #icon>
34 - <Icon :color="color">
35 - <Iconify :icon="SquareActive" v-if="activeColor === color" />
36 - <Iconify :icon="Square" v-else />
37 - </Icon>
38 - </template>
39 - </n-button>
40 - <n-button quaternary circle @click="activeColor = primaryColor">
41 - <template #icon>
42 - <Icon :color="primaryColor">
43 - <Iconify :icon="SquareActive" v-if="activeColor === primaryColor" />
44 - <Iconify :icon="Square" v-else />
45 - </Icon>
46 - </template>
47 - </n-button>
48 - </div>
49 - </div>
50 - -->
51 -
3 <div class="flex wrapper justify-center" v-if="!isLogged">
4 <div class="image-box basis-2/3" v-if="align === 'right'"></div>
5 <div class="form-box basis-1/3 flex items-center justify-center" :class="{ centered: align === 'center' }">
@@ -65,9 +16,6 @@
16 </template>
17
18 <script lang="ts" setup>
68 -import { NButton } from "naive-ui"
69 -import Icon from "@/components/common/Icon.vue"
70 -import { Icon as Iconify } from "@iconify/vue"
19 import AuthForm from "@/components/AuthForm/index.vue"
20 import { ref, computed, onBeforeMount, toRefs } from "vue"
21 import { useRoute } from "vue-router"
@@ -82,21 +30,11 @@ const props = defineProps<{
30 }>()
31 const { formType } = toRefs(props)
32
85 -const AlignLeft = "fluent:textbox-align-bottom-rotate-90-24-regular"
86 -const AlignCenter = "fluent:textbox-align-middle-rotate-90-24-regular"
87 -const AlignRight = "fluent:textbox-align-top-rotate-90-24-regular"
88 -const AlignLeftActive = "fluent:textbox-align-bottom-rotate-90-24-filled"
89 -const AlignCenterActive = "fluent:textbox-align-middle-rotate-90-24-filled"
90 -const AlignRightActive = "fluent:textbox-align-top-rotate-90-24-filled"
91 -const Square = "fluent:square-24-filled"
92 -const SquareActive = "fluent:checkbox-indeterminate-24-regular"
93 -
33 const route = useRoute()
34 const align = ref<Align>("left")
35 const activeColor = ref("")
36 const type = ref<FormType | undefined>(formType.value || undefined)
37
99 -const colors = computed(() => useThemeStore().secondaryColors)
38 const primaryColor = computed(() => useThemeStore().primaryColor)
39 const isLogged = computed(() => useAuthStore().isLogged)
40
src/views/Connectors.vue
+2 -175
@@ -1,182 +1,9 @@
1 <template>
2 <div class="page">
3 - <div class="page-header">
4 - <div class="title">Connectors</div>
5 - <p>Configure connections to your toolset.</p>
6 - </div>
7 -
8 - <n-card class="table-box" content-style="padding:0">
9 - <n-spin :show="loading">
10 - <n-scrollbar x-scrollable style="width: 100%">
11 - <n-table :bordered="false">
12 - <thead>
13 - <tr>
14 - <th scope="col">Connector Name</th>
15 - <th scope="col">Connector Description</th>
16 - <th scope="col" style="width: 190px" class="!text-center">Connector Configured</th>
17 - <th scope="col" style="width: 170px" class="!text-center">Connector Verified</th>
18 - <th scope="col" style="width: 170px" class="!text-right">Connector Options</th>
19 - </tr>
20 - </thead>
21 - <tbody>
22 - <tr v-for="connector in connectors" :key="connector.id">
23 - <!-- Display the connector details in the table -->
24 - <td>{{ connector.connector_name }}</td>
25 - <td>{{ connector.connector_description || "-" }}</td>
26 - <td style="width: 190px" class="text-center">
27 - <strong
28 - class="flag-field"
29 - :class="{
30 - success: connector.connector_configured,
31 - warning: !connector.connector_configured
32 - }"
33 - >
34 - {{ connector.connector_configured ? "Yes" : "No" }}
35 - </strong>
36 - </td>
37 - <!-- Show the connector verified which is in the `connector` table -->
38 - <td style="width: 170px" class="text-center">
39 - <strong v-if="connector.connector_verified" class="flag-field success">Yes</strong>
40 - <n-button
41 - type="primary"
42 - v-else
43 - @click="verify(connector)"
44 - :loading="connector.loading"
45 - >
46 - Verify
47 - </n-button>
48 - </td>
49 - <td style="width: 170px">
50 - <div class="flex justify-end items-center gap-3">
51 - <!--If the connector is not already configured then display the configure button -->
52 - <n-button
53 - type="primary"
54 - :disabled="connector.loading"
55 - v-if="!connector.connector_configured"
56 - @click="openConfigDialog(connector)"
57 - >
58 - Configure
59 - </n-button>
60 -
61 - <n-button
62 - v-else
63 - @click="openConfigDialog(connector)"
64 - :disabled="connector.loading"
65 - >
66 - Update
67 - </n-button>
68 - <!--<button type="button" class="btn btn-info btn-sm" @click="deleteConnector(connector)">Delete</button>-->
69 - </div>
70 - </td>
71 - </tr>
72 - </tbody>
73 - </n-table>
74 - </n-scrollbar>
75 - </n-spin>
76 - </n-card>
77 -
78 - <n-modal
79 - title="Connector configuration"
80 - v-model:show="showConfigDialog"
81 - :mask-closable="false"
82 - :close-on-esc="false"
83 - width="600px"
84 - >
85 - <n-card style="width: 90vw; max-width: 500px">
86 - <ConfigForm v-if="currentConnector" :connector="currentConnector" @close="closeConfigDialog" />
87 - </n-card>
88 - </n-modal>
3 + <ConnectorsList />
4 </div>
5 </template>
6
7 <script setup lang="ts">
93 -import Api from "@/api"
94 -import { onBeforeMount, ref } from "vue"
95 -import ConfigForm from "@/components/connectors/ConfigForm"
96 -import { type Connector } from "@/types/connectors.d"
97 -import { NScrollbar, NSpin, NModal, NTable, NButton, NCard, useMessage } from "naive-ui"
98 -
99 -interface ConnectorExt extends Connector {
100 - loading?: boolean
101 -}
102 -
103 -const connectors = ref<ConnectorExt[]>([])
104 -const currentConnector = ref<Connector | null>(null)
105 -
106 -const loading = ref(false)
107 -const showConfigDialog = ref(false)
108 -const message = useMessage()
109 -
110 -function openConfigDialog(connector: Connector) {
111 - currentConnector.value = connector
112 - showConfigDialog.value = true
113 -}
114 -function closeConfigDialog(update: boolean) {
115 - currentConnector.value = null
116 - showConfigDialog.value = false
117 -
118 - if (update) {
119 - getConnectors()
120 - }
121 -}
122 -
123 -function getConnectors() {
124 - loading.value = true
125 -
126 - Api.connectors
127 - .getAll()
128 - .then(res => {
129 - if (res.data.success) {
130 - connectors.value = res.data.connectors
131 - } else {
132 - message.warning(res.data?.message || "An error occurred. Please try again later.")
133 - }
134 - })
135 - .catch(err => {
136 - message.error(err.response?.data?.message || "An error occurred. Please try again later.")
137 - })
138 - .finally(() => {
139 - loading.value = false
140 - })
141 -}
142 -
143 -function verify(connector: ConnectorExt) {
144 - connector.loading = true
145 -
146 - Api.connectors
147 - .verify(connector.id)
148 - .then(res => {
149 - message.success(res.data?.message || "Connector was successfully verified.")
150 - getConnectors()
151 - })
152 - .catch(err => {
153 - message.error(err.response?.data?.message || "An error occurred. Please try again later.")
154 - })
155 - .finally(() => {
156 - connector.loading = false
157 - })
158 -}
159 -
160 -onBeforeMount(() => {
161 - getConnectors()
162 -})
8 +import ConnectorsList from "@/components/connectors/ConnectorsList.vue"
9 </script>
164 -
165 -<style scoped lang="scss">
166 -.table-box {
167 - .flag-field {
168 - &.success {
169 - color: var(--success-color);
170 - }
171 - &.warning {
172 - color: var(--warning-color);
173 - }
174 - }
175 -
176 - tr:hover {
177 - td {
178 - background-color: var(--primary-005-color);
179 - }
180 - }
181 -}
182 -</style>
src/vite-env.d.ts
+8
@@ -13,3 +13,11 @@ declare module "*.svg" {
13 }
14
15 declare module "v-calendar"
16 +
17 +declare module "markdown-it-highlightjs/core" {
18 + export { default } from "markdown-it-highlightjs/types/core.d.ts"
19 +}
20 +
21 +declare module "highlight.js/lib/core" {
22 + export { default } from "highlight.js/types/index.d.ts"
23 +}
unplugin.components.d.ts deleted
-15
@@ -1,15 +0,0 @@
1 -/* eslint-disable */
2 -/* prettier-ignore */
3 -// @ts-nocheck
4 -// Generated by unplugin-vue-components
5 -// Read more: https://github.com/vuejs/core/pull/3399
6 -export {}
7 -
8 -declare module 'vue' {
9 - export interface GlobalComponents {
10 - CardActions: typeof import('./src/components/cards/CardActions.vue')['default']
11 - CardWrapper: typeof import('./src/components/cards/CardWrapper.vue')['default']
12 - RouterLink: typeof import('vue-router')['RouterLink']
13 - RouterView: typeof import('vue-router')['RouterView']
14 - }
15 -}