diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
deleted file mode 100644
index d08ef0d..0000000
--- a/.github/FUNDING.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-custom: ["https://afdian.com/a/filecodebox"]
-
diff --git a/apps/admin/dependencies.py b/apps/admin/dependencies.py
index b935ce5..e9aa9b3 100644
--- a/apps/admin/dependencies.py
+++ b/apps/admin/dependencies.py
@@ -18,16 +18,15 @@ def create_token(data: dict, expires_in: int = 3600 * 24) -> str:
:param data: 数据负载
:param expires_in: 过期时间(秒)
"""
- header = base64.b64encode(json.dumps({"alg": "HS256", "typ": "JWT"}).encode()).decode()
- payload = base64.b64encode(json.dumps({
- **data,
- "exp": int(time.time()) + expires_in
- }).encode()).decode()
+ header = base64.b64encode(
+ json.dumps({"alg": "HS256", "typ": "JWT"}).encode()
+ ).decode()
+ payload = base64.b64encode(
+ json.dumps({**data, "exp": int(time.time()) + expires_in}).encode()
+ ).decode()
signature = hmac.new(
- settings.admin_token.encode(),
- f"{header}.{payload}".encode(),
- 'sha256'
+ settings.admin_token.encode(), f"{header}.{payload}".encode(), "sha256"
).digest()
signature = base64.b64encode(signature).decode()
@@ -41,13 +40,13 @@ def verify_token(token: str) -> dict:
:return: 解码后的数据
"""
try:
- header_b64, payload_b64, signature_b64 = token.split('.')
+ header_b64, payload_b64, signature_b64 = token.split(".")
# 验证签名
expected_signature = hmac.new(
settings.admin_token.encode(),
f"{header_b64}.{payload_b64}".encode(),
- 'sha256'
+ "sha256",
).digest()
expected_signature_b64 = base64.b64encode(expected_signature).decode()
@@ -66,7 +65,9 @@ def verify_token(token: str) -> dict:
raise ValueError(f"token验证失败: {str(e)}")
-async def admin_required(authorization: str = Header(default=None), request: Request = None):
+async def admin_required(
+ authorization: str = Header(default=None), request: Request = None
+):
"""
验证管理员权限
"""
@@ -81,12 +82,14 @@ async def admin_required(authorization: str = Header(default=None), request: Req
except ValueError as e:
is_admin = False
- if request.url.path.startswith('/share/'):
+ if request.url.path.startswith("/share/"):
if not settings.openUpload and not is_admin:
- raise HTTPException(status_code=403, detail='本站未开启游客上传,如需上传请先登录后台')
+ raise HTTPException(
+ status_code=403, detail="本站未开启游客上传,如需上传请先登录后台"
+ )
else:
if not is_admin:
- raise HTTPException(status_code=401, detail='未授权或授权校验失败')
+ raise HTTPException(status_code=401, detail="未授权或授权校验失败")
return is_admin
except ValueError as e:
raise HTTPException(status_code=401, detail=str(e))
diff --git a/apps/admin/schemas.py b/apps/admin/schemas.py
index 5cc0802..5ef4f85 100644
--- a/apps/admin/schemas.py
+++ b/apps/admin/schemas.py
@@ -7,7 +7,7 @@ class IDData(BaseModel):
class ShareItem(BaseModel):
expire_value: int
- expire_style: str = 'day'
+ expire_style: str = "day"
filename: str
diff --git a/apps/admin/services.py b/apps/admin/services.py
index 133c54c..c012772 100644
--- a/apps/admin/services.py
+++ b/apps/admin/services.py
@@ -19,16 +19,18 @@ class FileService:
await self.file_storage.delete_file(file_code)
await file_code.delete()
- async def list_files(self, page: int, size: int, keyword: str = ''):
+ async def list_files(self, page: int, size: int, keyword: str = ""):
offset = (page - 1) * size
- files = await FileCodes.filter(prefix__icontains=keyword).limit(size).offset(offset)
+ files = (
+ await FileCodes.filter(prefix__icontains=keyword).limit(size).offset(offset)
+ )
total = await FileCodes.filter(prefix__icontains=keyword).count()
return files, total
async def download_file(self, file_id: int):
file_code = await FileCodes.filter(id=file_id).first()
if not file_code:
- raise HTTPException(status_code=404, detail='文件不存在')
+ raise HTTPException(status_code=404, detail="文件不存在")
if file_code.text:
return APIResponse(detail=file_code.text)
else:
@@ -37,10 +39,12 @@ class FileService:
async def share_local_file(self, item):
local_file = LocalFileClass(item.filename)
if not await local_file.exists():
- raise HTTPException(status_code=404, detail='文件不存在')
+ raise HTTPException(status_code=404, detail="文件不存在")
text = await local_file.read()
- expired_at, expired_count, used_count, code = await get_expire_info(item.expire_value, item.expire_style)
+ expired_at, expired_count, used_count, code = await get_expire_info(
+ item.expire_value, item.expire_style
+ )
path, suffix, prefix, uuid_file_name, save_path = await get_file_path_name(item)
await self.file_storage.save_file(text, save_path)
@@ -58,8 +62,8 @@ class FileService:
)
return {
- 'code': code,
- 'name': local_file.file,
+ "code": code,
+ "name": local_file.file,
}
@@ -68,21 +72,32 @@ class ConfigService:
return settings.items()
async def update_config(self, data: dict):
- admin_token = data.get('admin_token')
- if admin_token is None or admin_token == '':
- raise HTTPException(status_code=400, detail='管理员密码不能为空')
+ admin_token = data.get("admin_token")
+ if admin_token is None or admin_token == "":
+ raise HTTPException(status_code=400, detail="管理员密码不能为空")
for key, value in data.items():
if key not in settings.default_config:
continue
- if key in ['errorCount', 'errorMinute', 'max_save_seconds', 'onedrive_proxy', 'openUpload', 'port', 's3_proxy', 'uploadCount', 'uploadMinute', 'uploadSize']:
+ if key in [
+ "errorCount",
+ "errorMinute",
+ "max_save_seconds",
+ "onedrive_proxy",
+ "openUpload",
+ "port",
+ "s3_proxy",
+ "uploadCount",
+ "uploadMinute",
+ "uploadSize",
+ ]:
data[key] = int(value)
- elif key in ['opacity']:
+ elif key in ["opacity"]:
data[key] = float(value)
else:
data[key] = value
- await KeyValue.filter(key='settings').update(value=data)
+ await KeyValue.filter(key="settings").update(value=data)
for k, v in data.items():
settings.__setattr__(k, v)
@@ -90,9 +105,9 @@ class ConfigService:
class LocalFileService:
async def list_files(self):
files = []
- if not os.path.exists(data_root / 'local'):
- os.makedirs(data_root / 'local')
- for file in os.listdir(data_root / 'local'):
+ if not os.path.exists(data_root / "local"):
+ os.makedirs(data_root / "local")
+ for file in os.listdir(data_root / "local"):
files.append(LocalFileClass(file))
return files
@@ -100,22 +115,24 @@ class LocalFileService:
file = LocalFileClass(filename)
if await file.exists():
await file.delete()
- return '删除成功'
- raise HTTPException(status_code=404, detail='文件不存在')
+ return "删除成功"
+ raise HTTPException(status_code=404, detail="文件不存在")
class LocalFileClass:
def __init__(self, file):
self.file = file
- self.path = data_root / 'local' / file
- self.ctime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.path.getctime(self.path)))
+ self.path = data_root / "local" / file
+ self.ctime = time.strftime(
+ "%Y-%m-%d %H:%M:%S", time.localtime(os.path.getctime(self.path))
+ )
self.size = os.path.getsize(self.path)
async def read(self):
- return open(self.path, 'rb')
+ return open(self.path, "rb")
async def write(self, data):
- with open(self.path, 'w') as f:
+ with open(self.path, "w") as f:
f.write(data)
async def delete(self):
diff --git a/apps/admin/views.py b/apps/admin/views.py
index 515f0c1..838749b 100644
--- a/apps/admin/views.py
+++ b/apps/admin/views.py
@@ -6,35 +6,37 @@ import datetime
from fastapi import APIRouter, Depends, HTTPException
from apps.admin.services import FileService, ConfigService, LocalFileService
-from apps.admin.dependencies import admin_required, get_file_service, get_config_service, get_local_file_service
+from apps.admin.dependencies import (
+ admin_required,
+ get_file_service,
+ get_config_service,
+ get_local_file_service,
+)
from apps.admin.schemas import IDData, ShareItem, DeleteItem, LoginData
from core.response import APIResponse
from apps.base.models import FileCodes, KeyValue
from apps.admin.dependencies import create_token
from core.settings import settings
-admin_api = APIRouter(prefix='/admin', tags=['管理'])
+admin_api = APIRouter(prefix="/admin", tags=["管理"])
-@admin_api.post('/login')
+@admin_api.post("/login")
async def login(data: LoginData):
# 验证管理员密码
if data.password != settings.admin_token:
raise HTTPException(status_code=401, detail="密码错误")
-
+
# 生成包含管理员身份的token
token = create_token({"is_admin": True})
- return APIResponse(detail={
- "token": token,
- "token_type": "Bearer"
- })
+ return APIResponse(detail={"token": token, "token_type": "Bearer"})
-@admin_api.get('/dashboard')
+@admin_api.get("/dashboard")
async def dashboard(admin: bool = Depends(admin_required)):
all_codes = await FileCodes.all()
all_size = str(sum([code.size for code in all_codes]))
- sys_start = await KeyValue.filter(key='sys_start').first()
+ sys_start = await KeyValue.filter(key="sys_start").first()
# 获取当前日期时间
now = datetime.datetime.now()
today_start = now.replace(hour=0, minute=0, second=0, microsecond=0)
@@ -42,104 +44,105 @@ async def dashboard(admin: bool = Depends(admin_required)):
yesterday_end = today_start - datetime.timedelta(microseconds=1)
# 统计昨天一整天的记录数(从昨天0点到23:59:59)
yesterday_codes = FileCodes.filter(
- created_at__gte=yesterday_start,
- created_at__lte=yesterday_end
+ created_at__gte=yesterday_start, created_at__lte=yesterday_end
)
# 统计今天到现在的记录数(从今天0点到现在)
- today_codes = FileCodes.filter(
- created_at__gte=today_start
+ today_codes = FileCodes.filter(created_at__gte=today_start)
+ return APIResponse(
+ detail={
+ "totalFiles": len(all_codes),
+ "storageUsed": all_size,
+ "sysUptime": sys_start.value,
+ "yesterdayCount": await yesterday_codes.count(),
+ "yesterdaySize": str(sum([code.size for code in await yesterday_codes])),
+ "todayCount": await today_codes.count(),
+ "todaySize": str(sum([code.size for code in await today_codes])),
+ }
)
- return APIResponse(detail={
- 'totalFiles': len(all_codes),
- 'storageUsed': all_size,
- 'sysUptime': sys_start.value,
- 'yesterdayCount': await yesterday_codes.count(),
- 'yesterdaySize': str(sum([code.size for code in await yesterday_codes])),
- 'todayCount': await today_codes.count(),
- 'todaySize': str(sum([code.size for code in await today_codes])),
- })
-@admin_api.delete('/file/delete')
+@admin_api.delete("/file/delete")
async def file_delete(
data: IDData,
file_service: FileService = Depends(get_file_service),
- admin: bool = Depends(admin_required)
+ admin: bool = Depends(admin_required),
):
await file_service.delete_file(data.id)
return APIResponse()
-@admin_api.get('/file/list')
+@admin_api.get("/file/list")
async def file_list(
page: int = 1,
size: int = 10,
- keyword: str = '',
+ keyword: str = "",
file_service: FileService = Depends(get_file_service),
- admin: bool = Depends(admin_required)
+ admin: bool = Depends(admin_required),
):
files, total = await file_service.list_files(page, size, keyword)
- return APIResponse(detail={
- 'page': page,
- 'size': size,
- 'data': files,
- 'total': total,
- })
+ return APIResponse(
+ detail={
+ "page": page,
+ "size": size,
+ "data": files,
+ "total": total,
+ }
+ )
-@admin_api.get('/config/get')
+@admin_api.get("/config/get")
async def get_config(
config_service: ConfigService = Depends(get_config_service),
- admin: bool = Depends(admin_required)
+ admin: bool = Depends(admin_required),
):
return APIResponse(detail=config_service.get_config())
-@admin_api.patch('/config/update')
+@admin_api.patch("/config/update")
async def update_config(
data: dict,
config_service: ConfigService = Depends(get_config_service),
- admin: bool = Depends(admin_required)
+ admin: bool = Depends(admin_required),
):
- data.pop('themesChoices')
+ data.pop("themesChoices")
await config_service.update_config(data)
return APIResponse()
-@admin_api.get('/file/download')
+@admin_api.get("/file/download")
async def file_download(
id: int,
file_service: FileService = Depends(get_file_service),
- admin: bool = Depends(admin_required)
+ admin: bool = Depends(admin_required),
):
file_content = await file_service.download_file(id)
return file_content
-@admin_api.get('/local/lists')
+@admin_api.get("/local/lists")
async def get_local_lists(
local_file_service: LocalFileService = Depends(get_local_file_service),
- admin: bool = Depends(admin_required)
+ admin: bool = Depends(admin_required),
):
files = await local_file_service.list_files()
return APIResponse(detail=files)
-@admin_api.delete('/local/delete')
+@admin_api.delete("/local/delete")
async def delete_local_file(
item: DeleteItem,
local_file_service: LocalFileService = Depends(get_local_file_service),
- admin: bool = Depends(admin_required)
+ admin: bool = Depends(admin_required),
):
result = await local_file_service.delete_file(item.filename)
return APIResponse(detail=result)
-@admin_api.post('/local/share')
+@admin_api.post("/local/share")
async def share_local_file(
item: ShareItem,
file_service: FileService = Depends(get_file_service),
- admin: bool = Depends(admin_required)
+ admin: bool = Depends(admin_required),
):
share_info = await file_service.share_local_file(item)
return APIResponse(detail=share_info)
diff --git a/apps/base/dependencies.py b/apps/base/dependencies.py
index 614eb5e..577a2dc 100644
--- a/apps/base/dependencies.py
+++ b/apps/base/dependencies.py
@@ -12,26 +12,34 @@ class IPRateLimit:
def check_ip(self, ip: str) -> bool:
if ip in self.ips:
ip_info = self.ips[ip]
- if ip_info['count'] >= self.count:
- if ip_info['time'] + timedelta(minutes=self.minutes) > datetime.now():
+ if ip_info["count"] >= self.count:
+ if ip_info["time"] + timedelta(minutes=self.minutes) > datetime.now():
return False
self.ips.pop(ip)
return True
def add_ip(self, ip: str) -> int:
- ip_info = self.ips.get(ip, {'count': 0, 'time': datetime.now()})
- ip_info['count'] += 1
- ip_info['time'] = datetime.now()
+ ip_info = self.ips.get(ip, {"count": 0, "time": datetime.now()})
+ ip_info["count"] += 1
+ ip_info["time"] = datetime.now()
self.ips[ip] = ip_info
- return ip_info['count']
+ return ip_info["count"]
async def remove_expired_ip(self) -> None:
now = datetime.now()
expiration = timedelta(minutes=self.minutes)
- self.ips = {ip: info for ip, info in self.ips.items() if info['time'] + expiration >= now}
+ self.ips = {
+ ip: info
+ for ip, info in self.ips.items()
+ if info["time"] + expiration >= now
+ }
def __call__(self, request: Request) -> str:
- ip = request.headers.get('X-Real-IP') or request.headers.get('X-Forwarded-For') or request.client.host
+ ip = (
+ request.headers.get("X-Real-IP")
+ or request.headers.get("X-Forwarded-For")
+ or request.client.host
+ )
if not self.check_ip(ip):
raise HTTPException(status_code=423, detail="请求次数过多,请稍后再试")
return ip
diff --git a/apps/base/migrations/migrations_001.py b/apps/base/migrations/migrations_001.py
new file mode 100644
index 0000000..2a11960
--- /dev/null
+++ b/apps/base/migrations/migrations_001.py
@@ -0,0 +1,52 @@
+from tortoise import connections
+
+
+async def create_file_codes_table():
+ conn = connections.get("default")
+ await conn.execute_script(
+ """
+ CREATE TABLE IF NOT EXISTS filecodes
+ (
+ id INTEGER not null
+ primary key autoincrement,
+ code VARCHAR(255) not null
+ unique,
+ prefix VARCHAR(255) default '' not null,
+ suffix VARCHAR(255) default '' not null,
+ uuid_file_name VARCHAR(255),
+ file_path VARCHAR(255),
+ size INT default 0 not null,
+ text TEXT,
+ expired_at TIMESTAMP,
+ expired_count INT default 0 not null,
+ used_count INT default 0 not null,
+ created_at TIMESTAMP default CURRENT_TIMESTAMP not null
+ );
+ CREATE INDEX IF NOT EXISTS idx_filecodes_code_1c7ee7
+ on filecodes (code);
+ """
+ )
+
+
+async def create_key_value_table():
+ conn = connections.get("default")
+ await conn.execute_script(
+ """
+ CREATE TABLE IF NOT EXISTS keyvalue
+ (
+ id INTEGER not null
+ primary key autoincrement,
+ key VARCHAR(255) not null
+ unique,
+ value JSON,
+ created_at TIMESTAMP default CURRENT_TIMESTAMP not null
+ );
+ CREATE INDEX IF NOT EXISTS idx_keyvalue_key_eab890
+ on keyvalue (key);
+ """
+ )
+
+
+async def migrate():
+ await create_file_codes_table()
+ await create_key_value_table()
diff --git a/apps/base/models.py b/apps/base/models.py
index a56dfc3..ecbdd86 100644
--- a/apps/base/models.py
+++ b/apps/base/models.py
@@ -14,17 +14,68 @@ from core.utils import get_now
class FileCodes(Model):
id: Optional[int] = fields.IntField(pk=True)
- code: Optional[int] = fields.CharField(description='分享码', max_length=255, index=True, unique=True)
- prefix: Optional[str] = fields.CharField(max_length=255, description='前缀', default='')
- suffix: Optional[str] = fields.CharField(max_length=255, description='后缀', default='')
- uuid_file_name: Optional[str] = fields.CharField(max_length=255, description='uuid文件名', null=True)
- file_path: Optional[str] = fields.CharField(max_length=255, description='文件路径', null=True)
- size: Optional[int] = fields.IntField(description='文件大小', default=0)
- text: Optional[str] = fields.TextField(description='文本内容', null=True)
- expired_at: Optional[datetime] = fields.DatetimeField(null=True, description='过期时间')
- expired_count: Optional[int] = fields.IntField(description='可用次数', default=0)
- used_count: Optional[int] = fields.IntField(description='已用次数', default=0)
- created_at: Optional[datetime] = fields.DatetimeField(auto_now_add=True, description='创建时间')
+ code: Optional[int] = fields.CharField(
+ description="分享码", max_length=255, index=True, unique=True
+ )
+ prefix: Optional[str] = fields.CharField(
+ max_length=255, description="前缀", default=""
+ )
+ suffix: Optional[str] = fields.CharField(
+ max_length=255, description="后缀", default=""
+ )
+ uuid_file_name: Optional[str] = fields.CharField(
+ max_length=255, description="uuid文件名", null=True
+ )
+ file_path: Optional[str] = fields.CharField(
+ max_length=255, description="文件路径", null=True
+ )
+ size: Optional[int] = fields.IntField(description="文件大小", default=0)
+ text: Optional[str] = fields.TextField(description="文本内容", null=True)
+ expired_at: Optional[datetime] = fields.DatetimeField(
+ null=True, description="过期时间"
+ )
+ expired_count: Optional[int] = fields.IntField(description="可用次数", default=0)
+ used_count: Optional[int] = fields.IntField(description="已用次数", default=0)
+ created_at: Optional[datetime] = fields.DatetimeField(
+ auto_now_add=True, description="创建时间"
+ )
+ #
+ # file_hash = fields.CharField(
+ # max_length=128, # SHA-256需要64字符,这里预留扩展空间
+ # description="文件哈希值",
+ # unique=True,
+ # null=True # 允许旧数据为空
+ # )
+ # hash_algorithm = fields.CharField(
+ # max_length=20,
+ # description="哈希算法类型",
+ # null=True,
+ # default="sha256"
+ # )
+
+ # # 新增分片字段
+ # chunk_size = fields.IntField(
+ # description="分片大小(字节)",
+ # default=0
+ # )
+ # total_chunks = fields.IntField(
+ # description="总分片数",
+ # default=0
+ # )
+ # uploaded_chunks = fields.IntField(
+ # description="已上传分片数",
+ # default=0
+ # )
+ # upload_status = fields.CharField(
+ # max_length=20,
+ # description="上传状态",
+ # default="pending", # pending/in_progress/completed
+ # choices=["pending", "in_progress", "completed"]
+ # )
+ # is_chunked = fields.BooleanField(
+ # description="是否分片上传",
+ # default=False
+ # )
async def is_expired(self):
# 按时间
@@ -40,11 +91,41 @@ class FileCodes(Model):
return f"{self.file_path}/{self.uuid_file_name}"
+#
+# class FileChunks(Model):
+# id = fields.IntField(pk=True)
+# file_code = fields.ForeignKeyField(
+# "models.FileCodes",
+# related_name="chunks",
+# on_delete=fields.CASCADE
+# )
+# chunk_number = fields.IntField(description="分片序号")
+# chunk_hash = fields.CharField(
+# max_length=128,
+# description="分片哈希校验值"
+# )
+# chunk_path = fields.CharField(
+# max_length=255,
+# description="分片存储路径"
+# )
+# created_at = fields.DatetimeField(
+# auto_now_add=True,
+# description="上传时间"
+# )
+#
+# class Meta:
+# unique_together = [("file_code", "chunk_number")]
+
+
class KeyValue(Model):
id: Optional[int] = fields.IntField(pk=True)
- key: Optional[str] = fields.CharField(max_length=255, description='键', index=True, unique=True)
- value: Optional[str] = fields.JSONField(description='值', null=True)
- created_at: Optional[datetime] = fields.DatetimeField(auto_now_add=True, description='创建时间')
+ key: Optional[str] = fields.CharField(
+ max_length=255, description="键", index=True, unique=True
+ )
+ value: Optional[str] = fields.JSONField(description="值", null=True)
+ created_at: Optional[datetime] = fields.DatetimeField(
+ auto_now_add=True, description="创建时间"
+ )
-file_codes_pydantic = pydantic_model_creator(FileCodes, name='FileCodes')
+file_codes_pydantic = pydantic_model_creator(FileCodes, name="FileCodes")
diff --git a/apps/base/utils.py b/apps/base/utils.py
index 7cf2839..c375f97 100644
--- a/apps/base/utils.py
+++ b/apps/base/utils.py
@@ -14,47 +14,57 @@ from core.utils import get_random_num, get_random_string, max_save_times_desc
async def get_file_path_name(file: UploadFile) -> Tuple[str, str, str, str, str]:
"""获取文件路径和文件名"""
today = datetime.datetime.now()
- storage_path = settings.storage_path.strip('/') # 移除开头和结尾的斜杠
+ storage_path = settings.storage_path.strip("/") # 移除开头和结尾的斜杠
file_uuid = uuid.uuid4().hex
-
+
# 使用 UUID 作为子目录名
base_path = f"share/data/{today.strftime('%Y/%m/%d')}/{file_uuid}"
-
+
# 如果设置了存储路径,将其添加到基础路径中
path = f"{storage_path}/{base_path}" if storage_path else base_path
-
+
prefix, suffix = os.path.splitext(file.filename)
# 保持原始文件名
save_path = f"{path}/{file.filename}"
return path, suffix, prefix, file.filename, save_path
-async def get_expire_info(expire_value: int, expire_style: str) -> Tuple[Optional[datetime.datetime], int, int, str]:
+async def get_expire_info(
+ expire_value: int, expire_style: str
+) -> Tuple[Optional[datetime.datetime], int, int, str]:
"""获取过期信息"""
expired_count, used_count = -1, 0
now = datetime.datetime.now()
code = None
- max_timedelta = datetime.timedelta(seconds=settings.max_save_seconds) if settings.max_save_seconds > 0 else datetime.timedelta(days=7)
- detail = await max_save_times_desc(settings.max_save_seconds) if settings.max_save_seconds > 0 else '7天'
- detail = f'限制最长时间为 {detail[0]},可换用其他方式'
+ max_timedelta = (
+ datetime.timedelta(seconds=settings.max_save_seconds)
+ if settings.max_save_seconds > 0
+ else datetime.timedelta(days=7)
+ )
+ detail = (
+ await max_save_times_desc(settings.max_save_seconds)
+ if settings.max_save_seconds > 0
+ else "7天"
+ )
+ detail = f"限制最长时间为 {detail[0]},可换用其他方式"
expire_styles = {
- 'day': lambda: now + datetime.timedelta(days=expire_value),
- 'hour': lambda: now + datetime.timedelta(hours=expire_value),
- 'minute': lambda: now + datetime.timedelta(minutes=expire_value),
- 'count': lambda: (now + datetime.timedelta(days=1), expire_value),
- 'forever': lambda: (None, None), # 修改这里
+ "day": lambda: now + datetime.timedelta(days=expire_value),
+ "hour": lambda: now + datetime.timedelta(hours=expire_value),
+ "minute": lambda: now + datetime.timedelta(minutes=expire_value),
+ "count": lambda: (now + datetime.timedelta(days=1), expire_value),
+ "forever": lambda: (None, None), # 修改这里
}
if expire_style in expire_styles:
result = expire_styles[expire_style]()
if isinstance(result, tuple):
expired_at, extra = result
- if expire_style == 'count':
+ if expire_style == "count":
expired_count = extra
- elif expire_style == 'forever':
- code = await get_random_code(style='string') # 移动到这里
+ elif expire_style == "forever":
+ code = await get_random_code(style="string") # 移动到这里
else:
expired_at = result
if expired_at and expired_at - now > max_timedelta:
@@ -68,15 +78,15 @@ async def get_expire_info(expire_value: int, expire_style: str) -> Tuple[Optiona
return expired_at, expired_count, used_count, code
-async def get_random_code(style='num') -> str:
+async def get_random_code(style="num") -> str:
"""获取随机字符串"""
while True:
- code = await get_random_num() if style == 'num' else await get_random_string()
+ code = await get_random_num() if style == "num" else await get_random_string()
if not await FileCodes.filter(code=code).exists():
return code
ip_limit = {
- 'error': IPRateLimit(count=settings.uploadCount, minutes=settings.errorMinute),
- 'upload': IPRateLimit(count=settings.errorCount, minutes=settings.errorMinute)
+ "error": IPRateLimit(count=settings.uploadCount, minutes=settings.errorMinute),
+ "upload": IPRateLimit(count=settings.errorCount, minutes=settings.errorMinute),
}
diff --git a/apps/base/views.py b/apps/base/views.py
index 6b0aaed..863ecb6 100644
--- a/apps/base/views.py
+++ b/apps/base/views.py
@@ -8,32 +8,36 @@ from core.settings import settings
from core.storage import storages, FileStorageInterface
from core.utils import get_select_token
-share_api = APIRouter(prefix='/share', tags=['分享'])
+share_api = APIRouter(prefix="/share", tags=["分享"])
async def validate_file_size(file: UploadFile, max_size: int):
if file.size > max_size:
max_size_mb = max_size / (1024 * 1024)
- raise HTTPException(status_code=403, detail=f'大小超过限制,最大为{max_size_mb:.2f} MB')
+ raise HTTPException(
+ status_code=403, detail=f"大小超过限制,最大为{max_size_mb:.2f} MB"
+ )
async def create_file_code(code, **kwargs):
return await FileCodes.create(code=code, **kwargs)
-@share_api.post('/text/', dependencies=[Depends(admin_required)])
+@share_api.post("/text/", dependencies=[Depends(admin_required)])
async def share_text(
- text: str = Form(...),
- expire_value: int = Form(default=1, gt=0),
- expire_style: str = Form(default='day'),
- ip: str = Depends(ip_limit['upload'])
+ text: str = Form(...),
+ expire_value: int = Form(default=1, gt=0),
+ expire_style: str = Form(default="day"),
+ ip: str = Depends(ip_limit["upload"]),
):
- text_size = len(text.encode('utf-8'))
+ text_size = len(text.encode("utf-8"))
max_txt_size = 222 * 1024
if text_size > max_txt_size:
- raise HTTPException(status_code=403, detail='内容过多,建议采用文件形式')
+ raise HTTPException(status_code=403, detail="内容过多,建议采用文件形式")
- expired_at, expired_count, used_count, code = await get_expire_info(expire_value, expire_style)
+ expired_at, expired_count, used_count, code = await get_expire_info(
+ expire_value, expire_style
+ )
await create_file_code(
code=code,
text=text,
@@ -41,25 +45,27 @@ async def share_text(
expired_count=expired_count,
used_count=used_count,
size=len(text),
- prefix='Text'
+ prefix="Text",
)
- ip_limit['upload'].add_ip(ip)
- return APIResponse(detail={'code': code})
+ ip_limit["upload"].add_ip(ip)
+ return APIResponse(detail={"code": code})
-@share_api.post('/file/', dependencies=[Depends(admin_required)])
+@share_api.post("/file/", dependencies=[Depends(admin_required)])
async def share_file(
- expire_value: int = Form(default=1, gt=0),
- expire_style: str = Form(default='day'),
- file: UploadFile = File(...),
- ip: str = Depends(ip_limit['upload'])
+ expire_value: int = Form(default=1, gt=0),
+ expire_style: str = Form(default="day"),
+ file: UploadFile = File(...),
+ ip: str = Depends(ip_limit["upload"]),
):
await validate_file_size(file, settings.uploadSize)
if expire_style not in settings.expireStyle:
- raise HTTPException(status_code=400, detail='过期时间类型错误')
+ raise HTTPException(status_code=400, detail="过期时间类型错误")
- expired_at, expired_count, used_count, code = await get_expire_info(expire_value, expire_style)
+ expired_at, expired_count, used_count, code = await get_expire_info(
+ expire_value, expire_style
+ )
path, suffix, prefix, uuid_file_name, save_path = await get_file_path_name(file)
file_storage: FileStorageInterface = storages[settings.file_storage]()
@@ -76,16 +82,16 @@ async def share_file(
expired_count=expired_count,
used_count=used_count,
)
- ip_limit['upload'].add_ip(ip)
- return APIResponse(detail={'code': code, 'name': file.filename})
+ ip_limit["upload"].add_ip(ip)
+ return APIResponse(detail={"code": code, "name": file.filename})
async def get_code_file_by_code(code, check=True):
file_code = await FileCodes.filter(code=code).first()
if not file_code:
- return False, '文件不存在'
+ return False, "文件不存在"
if await file_code.is_expired() and check:
- return False, '文件已过期'
+ return False, "文件已过期"
return True, file_code
@@ -96,44 +102,50 @@ async def update_file_usage(file_code):
await file_code.save()
-@share_api.get('/select/')
-async def get_code_file(code: str, ip: str = Depends(ip_limit['error'])):
+@share_api.get("/select/")
+async def get_code_file(code: str, ip: str = Depends(ip_limit["error"])):
file_storage: FileStorageInterface = storages[settings.file_storage]()
has, file_code = await get_code_file_by_code(code)
if not has:
- ip_limit['error'].add_ip(ip)
+ ip_limit["error"].add_ip(ip)
return APIResponse(code=404, detail=file_code)
await update_file_usage(file_code)
return await file_storage.get_file_response(file_code)
-@share_api.post('/select/')
-async def select_file(data: SelectFileModel, ip: str = Depends(ip_limit['error'])):
+@share_api.post("/select/")
+async def select_file(data: SelectFileModel, ip: str = Depends(ip_limit["error"])):
file_storage: FileStorageInterface = storages[settings.file_storage]()
has, file_code = await get_code_file_by_code(data.code)
if not has:
- ip_limit['error'].add_ip(ip)
+ ip_limit["error"].add_ip(ip)
return APIResponse(code=404, detail=file_code)
await update_file_usage(file_code)
- return APIResponse(detail={
- 'code': file_code.code,
- 'name': file_code.prefix + file_code.suffix,
- 'size': file_code.size,
- 'text': file_code.text if file_code.text is not None else await file_storage.get_file_url(file_code),
- })
+ return APIResponse(
+ detail={
+ "code": file_code.code,
+ "name": file_code.prefix + file_code.suffix,
+ "size": file_code.size,
+ "text": (
+ file_code.text
+ if file_code.text is not None
+ else await file_storage.get_file_url(file_code)
+ ),
+ }
+ )
-@share_api.get('/download')
-async def download_file(key: str, code: str, ip: str = Depends(ip_limit['error'])):
+@share_api.get("/download")
+async def download_file(key: str, code: str, ip: str = Depends(ip_limit["error"])):
file_storage: FileStorageInterface = storages[settings.file_storage]()
if await get_select_token(code) != key:
- ip_limit['error'].add_ip(ip)
+ ip_limit["error"].add_ip(ip)
has, file_code = await get_code_file_by_code(code, False)
if not has:
- return APIResponse(code=404, detail='文件不存在')
+ return APIResponse(code=404, detail="文件不存在")
return (
APIResponse(detail=file_code.text)
diff --git a/core/database.py b/core/database.py
new file mode 100644
index 0000000..d574359
--- /dev/null
+++ b/core/database.py
@@ -0,0 +1,80 @@
+import glob
+import importlib
+import os
+
+from tortoise import Tortoise
+
+from core.settings import data_root
+
+
+async def init_db():
+ try:
+ # 使用正确的Tortoise初始化配置格式
+ db_config = {
+ "db_url": f"sqlite://{data_root}/filecodebox.db",
+ "modules": {"models": ["apps.base.models"]},
+ "use_tz": False,
+ "timezone": "Asia/Shanghai"
+ }
+
+ await Tortoise.init(**db_config)
+
+ # 创建migrations表
+ await Tortoise.get_connection("default").execute_script("""
+ CREATE TABLE IF NOT EXISTS migrates (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ migration_file VARCHAR(255) NOT NULL UNIQUE,
+ executed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+ )
+ """)
+
+ # 执行迁移
+ await execute_migrations()
+
+ except Exception as e:
+ print(f"数据库初始化失败: {str(e)}")
+ raise
+
+
+async def execute_migrations():
+ """执行数据库迁移"""
+ try:
+ # 收集迁移文件
+ migration_files = []
+ for root, dirs, files in os.walk("apps"):
+ if "migrations" in dirs:
+ migration_path = os.path.join(root, "migrations")
+ migration_files.extend(glob.glob(os.path.join(migration_path, "migrations_*.py")))
+
+ # 按文件名排序
+ migration_files.sort()
+
+ for migration_file in migration_files:
+ file_name = os.path.basename(migration_file)
+
+ # 检查是否已执行
+ executed = await Tortoise.get_connection("default").execute_query(
+ "SELECT id FROM migrates WHERE migration_file = ?", [file_name]
+ )
+
+ if not executed[1]:
+ print(f"执行迁移: {file_name}")
+ # 导入并执行migration
+ module_path = migration_file.replace("/", ".").replace("\\", ".").replace(".py", "")
+ try:
+ migration_module = importlib.import_module(module_path)
+ if hasattr(migration_module, "migrate"):
+ await migration_module.migrate()
+ # 记录执行
+ await Tortoise.get_connection("default").execute_query(
+ "INSERT INTO migrates (migration_file) VALUES (?)",
+ [file_name]
+ )
+ print(f"迁移完成: {file_name}")
+ except Exception as e:
+ print(f"迁移 {file_name} 执行失败: {str(e)}")
+ raise
+
+ except Exception as e:
+ print(f"迁移过程发生错误: {str(e)}")
+ raise
diff --git a/core/response.py b/core/response.py
index f6b8a38..5769111 100644
--- a/core/response.py
+++ b/core/response.py
@@ -6,10 +6,10 @@ from typing import Generic, TypeVar
from pydantic.v1.generics import GenericModel
-T = TypeVar('T')
+T = TypeVar("T")
class APIResponse(GenericModel, Generic[T]):
code: int = 200
- message: str = 'ok'
+ message: str = "ok"
detail: T
diff --git a/core/settings.py b/core/settings.py
index 20709db..f05eaf5 100644
--- a/core/settings.py
+++ b/core/settings.py
@@ -5,70 +5,70 @@
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
-data_root = BASE_DIR / 'data'
+data_root = BASE_DIR / "data"
if not data_root.exists():
data_root.mkdir(parents=True, exist_ok=True)
DEFAULT_CONFIG = {
- 'file_storage': 'local',
- 'storage_path': '',
- 'name': '文件快递柜 - FileCodeBox',
- 'description': '开箱即用的文件快传系统',
- 'notify_title': '系统通知',
- 'notify_content': '欢迎使用 FileCodeBox,本程序开源于 Github ,欢迎Star和Fork。',
- 'page_explain': '请勿上传或分享违法内容。根据《中华人民共和国网络安全法》、《中华人民共和国刑法》、《中华人民共和国治安管理处罚法》等相关规定。 传播或存储违法、违规内容,会受到相关处罚,严重者将承担刑事责任。本站坚决配合相关部门,确保网络内容的安全,和谐,打造绿色网络环境。',
- 'keywords': 'FileCodeBox, 文件快递柜, 口令传送箱, 匿名口令分享文本, 文件',
- 's3_access_key_id': '',
- 's3_secret_access_key': '',
- 's3_bucket_name': '',
- 's3_endpoint_url': '',
- 's3_region_name': 'auto',
- 's3_signature_version': 's3v2',
- 's3_hostname': '',
- 's3_proxy': 0,
- 'max_save_seconds': 0,
- 'aws_session_token': '',
- 'onedrive_domain': '',
- 'onedrive_client_id': '',
- 'onedrive_username': '',
- 'onedrive_password': '',
- 'onedrive_root_path': 'filebox_storage',
- 'onedrive_proxy': 0,
- 'webdav_hostname': '',
- 'webdav_root_path': 'filebox_storage',
- 'webdav_proxy': 0,
- 'admin_token': 'FileCodeBox2023',
- 'openUpload': 1,
- 'uploadSize': 1024 * 1024 * 10,
- 'expireStyle': ['day', 'hour', 'minute', 'forever', 'count'],
- 'uploadMinute': 1,
- 'webdav_url': '',
- 'webdav_password': '',
- 'webdav_username': '',
- 'opacity': 0.9,
- 'background': '',
- 'uploadCount': 10,
- 'themesChoices': [
+ "file_storage": "local",
+ "storage_path": "",
+ "name": "文件快递柜 - FileCodeBox",
+ "description": "开箱即用的文件快传系统",
+ "notify_title": "系统通知",
+ "notify_content": '欢迎使用 FileCodeBox,本程序开源于 Github ,欢迎Star和Fork。',
+ "page_explain": "请勿上传或分享违法内容。根据《中华人民共和国网络安全法》、《中华人民共和国刑法》、《中华人民共和国治安管理处罚法》等相关规定。 传播或存储违法、违规内容,会受到相关处罚,严重者将承担刑事责任。本站坚决配合相关部门,确保网络内容的安全,和谐,打造绿色网络环境。",
+ "keywords": "FileCodeBox, 文件快递柜, 口令传送箱, 匿名口令分享文本, 文件",
+ "s3_access_key_id": "",
+ "s3_secret_access_key": "",
+ "s3_bucket_name": "",
+ "s3_endpoint_url": "",
+ "s3_region_name": "auto",
+ "s3_signature_version": "s3v2",
+ "s3_hostname": "",
+ "s3_proxy": 0,
+ "max_save_seconds": 0,
+ "aws_session_token": "",
+ "onedrive_domain": "",
+ "onedrive_client_id": "",
+ "onedrive_username": "",
+ "onedrive_password": "",
+ "onedrive_root_path": "filebox_storage",
+ "onedrive_proxy": 0,
+ "webdav_hostname": "",
+ "webdav_root_path": "filebox_storage",
+ "webdav_proxy": 0,
+ "admin_token": "FileCodeBox2023",
+ "openUpload": 1,
+ "uploadSize": 1024 * 1024 * 10,
+ "expireStyle": ["day", "hour", "minute", "forever", "count"],
+ "uploadMinute": 1,
+ "webdav_url": "",
+ "webdav_password": "",
+ "webdav_username": "",
+ "opacity": 0.9,
+ "background": "",
+ "uploadCount": 10,
+ "themesChoices": [
{
- 'name': '2023',
- 'key': 'themes/2023',
- 'author': 'Lan',
- 'version': '1.0',
+ "name": "2023",
+ "key": "themes/2023",
+ "author": "Lan",
+ "version": "1.0",
},
{
- 'name': '2024',
- 'key': 'themes/2024',
- 'author': 'Lan',
- 'version': '1.0',
- }
+ "name": "2024",
+ "key": "themes/2024",
+ "author": "Lan",
+ "version": "1.0",
+ },
],
- 'themesSelect': 'themes/2024',
- 'errorMinute': 1,
- 'errorCount': 1,
- 'port': 12345,
- 'showAdminAddr': 0,
- 'robotsText': 'User-agent: *\nDisallow: /',
+ "themesSelect": "themes/2024",
+ "errorMinute": 1,
+ "errorCount": 1,
+ "port": 12345,
+ "showAdminAddr": 0,
+ "robotsText": "User-agent: *\nDisallow: /",
}
@@ -82,10 +82,12 @@ class Settings:
return self.user_config[attr]
if attr in self.default_config:
return self.default_config[attr]
- raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{attr}'")
+ raise AttributeError(
+ f"'{self.__class__.__name__}' object has no attribute '{attr}'"
+ )
def __setattr__(self, key, value):
- if key in ['default_config', 'user_config']:
+ if key in ["default_config", "user_config"]:
super().__setattr__(key, value)
else:
self.user_config[key] = value
diff --git a/core/storage.py b/core/storage.py
index 960a100..b7eea14 100644
--- a/core/storage.py
+++ b/core/storage.py
@@ -92,7 +92,14 @@ class SystemFileStorage(FileStorageInterface):
file_path = self.root_path / await file_code.get_file_path()
if not file_path.exists():
return APIResponse(code=404, detail="文件已过期删除")
- return FileResponse(file_path, filename=file_code.prefix + file_code.suffix)
+ filename = f"{file_code.prefix}{file_code.suffix}"
+ encoded_filename = quote(filename, safe='')
+ content_disposition = f"attachment; filename*=UTF-8''{encoded_filename}"
+ return FileResponse(
+ file_path,
+ headers={"Content-Disposition": content_disposition},
+ filename=filename # 保留原始文件名以备某些场景使用
+ )
class S3FileStorage(FileStorageInterface):
@@ -118,11 +125,11 @@ class S3FileStorage(FileStorageInterface):
async def save_file(self, file: UploadFile, save_path: str):
async with self.session.client(
- "s3",
- endpoint_url=self.endpoint_url,
- aws_session_token=self.aws_session_token,
- region_name=self.region_name,
- config=Config(signature_version=self.signature_version),
+ "s3",
+ endpoint_url=self.endpoint_url,
+ aws_session_token=self.aws_session_token,
+ region_name=self.region_name,
+ config=Config(signature_version=self.signature_version),
) as s3:
await s3.put_object(
Bucket=self.bucket_name,
@@ -133,10 +140,10 @@ class S3FileStorage(FileStorageInterface):
async def delete_file(self, file_code: FileCodes):
async with self.session.client(
- "s3",
- endpoint_url=self.endpoint_url,
- region_name=self.region_name,
- config=Config(signature_version=self.signature_version),
+ "s3",
+ endpoint_url=self.endpoint_url,
+ region_name=self.region_name,
+ config=Config(signature_version=self.signature_version),
) as s3:
await s3.delete_object(
Bucket=self.bucket_name, Key=await file_code.get_file_path()
@@ -146,10 +153,10 @@ class S3FileStorage(FileStorageInterface):
try:
filename = file_code.prefix + file_code.suffix
async with self.session.client(
- "s3",
- endpoint_url=self.endpoint_url,
- region_name=self.region_name,
- config=Config(signature_version=self.signature_version),
+ "s3",
+ endpoint_url=self.endpoint_url,
+ region_name=self.region_name,
+ config=Config(signature_version=self.signature_version),
) as s3:
link = await s3.generate_presigned_url(
"get_object",
@@ -183,10 +190,10 @@ class S3FileStorage(FileStorageInterface):
return await get_file_url(file_code.code)
else:
async with self.session.client(
- "s3",
- endpoint_url=self.endpoint_url,
- region_name=self.region_name,
- config=Config(signature_version=self.signature_version),
+ "s3",
+ endpoint_url=self.endpoint_url,
+ region_name=self.region_name,
+ config=Config(signature_version=self.signature_version),
) as s3:
result = await s3.generate_presigned_url(
"get_object",
@@ -412,7 +419,7 @@ class WebDAVFileStorage(FileStorageInterface):
async def _is_dir_empty(self, dir_path: str) -> bool:
"""检查目录是否为空"""
url = self._build_url(dir_path)
-
+
async with aiohttp.ClientSession(auth=self.auth) as session:
async with session.request("PROPFIND", url, headers={"Depth": "1"}) as resp:
if resp.status != 207: # 207 是 Multi-Status 响应
@@ -425,16 +432,16 @@ class WebDAVFileStorage(FileStorageInterface):
"""递归删除空目录"""
path_obj = Path(file_path)
current_path = path_obj.parent
-
+
while str(current_path) != ".":
if not await self._is_dir_empty(str(current_path)):
break
-
+
url = self._build_url(str(current_path))
async with session.delete(url) as resp:
if resp.status not in (200, 204, 404):
break
-
+
current_path = current_path.parent
async def save_file(self, file: UploadFile, save_path: str):
@@ -452,7 +459,7 @@ class WebDAVFileStorage(FileStorageInterface):
async with aiohttp.ClientSession(auth=self.auth) as session:
content = await file.read() # 注意:大文件需要分块读取
async with session.put(
- url, data=content, headers={"Content-Type": file.content_type}
+ url, data=content, headers={"Content-Type": file.content_type}
) as resp:
if resp.status not in (200, 201, 204):
content = await resp.text()
@@ -478,10 +485,10 @@ class WebDAVFileStorage(FileStorageInterface):
status_code=resp.status,
detail=f"WebDAV删除失败: {content[:200]}",
)
-
+
# 使用同一个 session 删除空目录
await self._delete_empty_dirs(file_path, session)
-
+
except aiohttp.ClientError as e:
raise HTTPException(status_code=503, detail=f"WebDAV连接异常: {str(e)}")
diff --git a/core/tasks.py b/core/tasks.py
index d3e17ad..726723a 100644
--- a/core/tasks.py
+++ b/core/tasks.py
@@ -19,13 +19,15 @@ async def delete_expire_files():
while True:
try:
# 遍历 share目录下的所有文件夹,删除空的文件夹,并判断父目录是否为空,如果为空也删除
- if settings.file_storage == 'local':
+ if settings.file_storage == "local":
for root, dirs, files in os.walk(f"{data_root}/share/data"):
if not dirs and not files:
os.rmdir(root)
- await ip_limit['error'].remove_expired_ip()
- await ip_limit['upload'].remove_expired_ip()
- expire_data = await FileCodes.filter(Q(expired_at__lt=await get_now()) | Q(expired_count=0)).all()
+ await ip_limit["error"].remove_expired_ip()
+ await ip_limit["upload"].remove_expired_ip()
+ expire_data = await FileCodes.filter(
+ Q(expired_at__lt=await get_now()) | Q(expired_count=0)
+ ).all()
for exp in expire_data:
await file_storage.delete_file(exp)
await exp.delete()
diff --git a/core/utils.py b/core/utils.py
index 0a9672d..36661a5 100644
--- a/core/utils.py
+++ b/core/utils.py
@@ -9,6 +9,7 @@ import string
import time
from core.settings import settings
+
async def get_random_num():
"""
获取随机数
@@ -25,7 +26,7 @@ async def get_random_string():
获取随机字符串
:return:
"""
- return ''.join(random.choice(r_s) for _ in range(5))
+ return "".join(random.choice(r_s) for _ in range(5))
async def get_now():
@@ -33,9 +34,7 @@ async def get_now():
获取当前时间
:return:
"""
- return datetime.datetime.now(
- datetime.timezone(datetime.timedelta(hours=8))
- )
+ return datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=8)))
async def get_select_token(code: str):
@@ -45,7 +44,9 @@ async def get_select_token(code: str):
:return:
"""
token = settings.admin_token
- return hashlib.sha256(f"{code}{int(time.time() / 1000)}000{token}".encode()).hexdigest()
+ return hashlib.sha256(
+ f"{code}{int(time.time() / 1000)}000{token}".encode()
+ ).hexdigest()
async def get_file_url(code: str):
@@ -54,7 +55,7 @@ async def get_file_url(code: str):
:param code:
:return:
"""
- return f'/share/download?key={await get_select_token(code)}&code={code}'
+ return f"/share/download?key={await get_select_token(code)}&code={code}"
async def max_save_times_desc(max_save_seconds: int):
@@ -66,28 +67,28 @@ async def max_save_times_desc(max_save_seconds: int):
def gen_desc_zh(value: int, desc: str):
if value > 0:
- return f'{value}{desc}'
+ return f"{value}{desc}"
else:
- return ''
+ return ""
def gen_desc_en(value: int, desc: str):
if value > 0:
- ret = f'{value} {desc}'
+ ret = f"{value} {desc}"
if value > 1:
- ret += 's'
- ret += ' '
+ ret += "s"
+ ret += " "
return ret
else:
- return ''
+ return ""
max_timedelta = datetime.timedelta(seconds=max_save_seconds)
- desc_zh, desc_en = '最长保存时间:', 'Max save time: '
- desc_zh += gen_desc_zh(max_timedelta.days, '天')
- desc_en += gen_desc_en(max_timedelta.days, 'day')
- desc_zh += gen_desc_zh(max_timedelta.seconds // 3600, '小时')
- desc_en += gen_desc_en(max_timedelta.seconds // 3600, 'hour')
- desc_zh += gen_desc_zh(max_timedelta.seconds % 3600 // 60, '分钟')
- desc_en += gen_desc_en(max_timedelta.seconds % 3600 // 60, 'minute')
- desc_zh += gen_desc_zh(max_timedelta.seconds % 60, '秒')
- desc_en += gen_desc_en(max_timedelta.seconds % 60, 'second')
+ desc_zh, desc_en = "最长保存时间:", "Max save time: "
+ desc_zh += gen_desc_zh(max_timedelta.days, "天")
+ desc_en += gen_desc_en(max_timedelta.days, "day")
+ desc_zh += gen_desc_zh(max_timedelta.seconds // 3600, "小时")
+ desc_en += gen_desc_en(max_timedelta.seconds // 3600, "hour")
+ desc_zh += gen_desc_zh(max_timedelta.seconds % 3600 // 60, "分钟")
+ desc_en += gen_desc_en(max_timedelta.seconds % 3600 // 60, "minute")
+ desc_zh += gen_desc_zh(max_timedelta.seconds % 60, "秒")
+ desc_en += gen_desc_en(max_timedelta.seconds % 60, "second")
return desc_zh, desc_en
diff --git a/fcb-fronted/.eslintrc.cjs b/fcb-fronted/.eslintrc.cjs
deleted file mode 100644
index 6f40582..0000000
--- a/fcb-fronted/.eslintrc.cjs
+++ /dev/null
@@ -1,15 +0,0 @@
-/* eslint-env node */
-require('@rushstack/eslint-patch/modern-module-resolution')
-
-module.exports = {
- root: true,
- 'extends': [
- 'plugin:vue/vue3-essential',
- 'eslint:recommended',
- '@vue/eslint-config-typescript',
- '@vue/eslint-config-prettier/skip-formatting'
- ],
- parserOptions: {
- ecmaVersion: 'latest'
- }
-}
diff --git a/fcb-fronted/.gitignore b/fcb-fronted/.gitignore
deleted file mode 100644
index 5ea12ae..0000000
--- a/fcb-fronted/.gitignore
+++ /dev/null
@@ -1,27 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-.vite/
-node_modules
-.DS_Store
-dist-ssr
-coverage
-*.local
-.git
-/cypress/videos/
-/cypress/screenshots/
-
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
diff --git a/fcb-fronted/.prettierrc.json b/fcb-fronted/.prettierrc.json
deleted file mode 100644
index 66e2335..0000000
--- a/fcb-fronted/.prettierrc.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "$schema": "https://json.schemastore.org/prettierrc",
- "semi": false,
- "tabWidth": 2,
- "singleQuote": true,
- "printWidth": 100,
- "trailingComma": "none"
-}
\ No newline at end of file
diff --git a/fcb-fronted/auto-imports.d.ts b/fcb-fronted/auto-imports.d.ts
deleted file mode 100644
index 1d89ee8..0000000
--- a/fcb-fronted/auto-imports.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-/* eslint-disable */
-/* prettier-ignore */
-// @ts-nocheck
-// noinspection JSUnusedGlobalSymbols
-// Generated by unplugin-auto-import
-export {}
-declare global {
-
-}
diff --git a/fcb-fronted/components.d.ts b/fcb-fronted/components.d.ts
deleted file mode 100644
index df83c8a..0000000
--- a/fcb-fronted/components.d.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-/* eslint-disable */
-// @ts-nocheck
-// Generated by unplugin-vue-components
-// Read more: https://github.com/vuejs/core/pull/3399
-export {}
-
-/* prettier-ignore */
-declare module 'vue' {
- export interface GlobalComponents {
- CardTools: typeof import('./src/components/CardTools.vue')['default']
- ElButton: typeof import('element-plus/es')['ElButton']
- ElCard: typeof import('element-plus/es')['ElCard']
- ElCol: typeof import('element-plus/es')['ElCol']
- ElContainer: typeof import('element-plus/es')['ElContainer']
- ElDialog: typeof import('element-plus/es')['ElDialog']
- ElDrawer: typeof import('element-plus/es')['ElDrawer']
- ElEmpty: typeof import('element-plus/es')['ElEmpty']
- ElForm: typeof import('element-plus/es')['ElForm']
- ElFormItem: typeof import('element-plus/es')['ElFormItem']
- ElHeader: typeof import('element-plus/es')['ElHeader']
- ElIcon: typeof import('element-plus/es')['ElIcon']
- ElInput: typeof import('element-plus/es')['ElInput']
- ElMain: typeof import('element-plus/es')['ElMain']
- ElMenu: typeof import('element-plus/es')['ElMenu']
- ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
- ElOption: typeof import('element-plus/es')['ElOption']
- ElPagination: typeof import('element-plus/es')['ElPagination']
- ElProgress: typeof import('element-plus/es')['ElProgress']
- ElRadio: typeof import('element-plus/es')['ElRadio']
- ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
- ElRow: typeof import('element-plus/es')['ElRow']
- ElSelect: typeof import('element-plus/es')['ElSelect']
- ElTable: typeof import('element-plus/es')['ElTable']
- ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
- ElTag: typeof import('element-plus/es')['ElTag']
- ElUpload: typeof import('element-plus/es')['ElUpload']
- FileBox: typeof import('./src/components/FileBox.vue')['default']
- RouterLink: typeof import('vue-router')['RouterLink']
- RouterView: typeof import('vue-router')['RouterView']
- UploadFile: typeof import('./src/components/UploadFile.vue')['default']
- UploadText: typeof import('./src/components/UploadText.vue')['default']
- }
- export interface ComponentCustomProperties {
- vLoading: typeof import('element-plus/es')['ElLoadingDirective']
- }
-}
diff --git a/fcb-fronted/env.d.ts b/fcb-fronted/env.d.ts
deleted file mode 100644
index 11f02fe..0000000
--- a/fcb-fronted/env.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-///
diff --git a/fcb-fronted/index.html b/fcb-fronted/index.html
deleted file mode 100644
index 4f240a5..0000000
--- a/fcb-fronted/index.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
- {{title}}
-
-
-
-
-
-
diff --git a/fcb-fronted/package.json b/fcb-fronted/package.json
deleted file mode 100644
index 11817d7..0000000
--- a/fcb-fronted/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "name": "fcb-fronted",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "dev": "vite",
- "build": "run-p type-check build-only",
- "preview": "vite preview",
- "build-only": "vite build",
- "type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false",
- "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
- "format": "prettier --write src/"
- },
- "dependencies": {
- "@traptitech/markdown-it-katex": "^3.6.0",
- "@types/markdown-it": "^14.1.2",
- "@types/markdown-it-link-attributes": "^3.0.5",
- "axios": "^1.7.2",
- "element-plus": "^2.7.8",
- "github-markdown-css": "^5.6.1",
- "highlight.js": "^11.10.0",
- "markdown-it": "^14.1.0",
- "markdown-it-link-attributes": "^4.0.1",
- "pinia": "^2.2.0",
- "qrcode.vue": "^3.4.1",
- "sass": "^1.77.8",
- "unplugin-auto-import": "^0.18.2",
- "unplugin-vue-components": "^0.27.3",
- "vue": "^3.4.34",
- "vue-i18n": "^9.13.1",
- "vue-router": "^4.4.0"
- },
- "devDependencies": {
- "@rushstack/eslint-patch": "^1.10.4",
- "@tsconfig/node18": "^18.2.4",
- "@types/node": "^22.0.0",
- "@vitejs/plugin-vue": "^5.1.1",
- "@vue/eslint-config-prettier": "^9.0.0",
- "@vue/eslint-config-typescript": "^13.0.0",
- "@vue/tsconfig": "^0.5.1",
- "eslint": "^9.11.1",
- "eslint-plugin-vue": "^9.28.0",
- "npm-run-all": "^4.1.5",
- "prettier": "^3.3.3",
- "typescript": "~5.5.4",
- "vite": "^5.3.5",
- "vue-tsc": "^2.0.29"
- }
-}
diff --git a/fcb-fronted/public/assets/logo_small.png b/fcb-fronted/public/assets/logo_small.png
deleted file mode 100644
index 04bf257..0000000
Binary files a/fcb-fronted/public/assets/logo_small.png and /dev/null differ
diff --git a/fcb-fronted/src/App.vue b/fcb-fronted/src/App.vue
deleted file mode 100644
index b8c4ecc..0000000
--- a/fcb-fronted/src/App.vue
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/fcb-fronted/src/assets/base.css b/fcb-fronted/src/assets/base.css
deleted file mode 100644
index 745a75f..0000000
--- a/fcb-fronted/src/assets/base.css
+++ /dev/null
@@ -1,86 +0,0 @@
-/* color palette from */
-:root {
- --vt-c-white: #ffffff;
- --vt-c-white-soft: #f5f5f5;
- --vt-c-white-mute: #f2f2f2;
- --vt-c-black: #181818;
- --vt-c-black-soft: #212121;
- --vt-c-black-mute: #282828;
-
- --vt-c-indigo: #2c3e50;
-
- --vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
- --vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
- --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
- --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
-
- --vt-c-text-light-1: var(--vt-c-indigo);
- --vt-c-text-light-2: rgba(60, 60, 60, 0.66);
- --vt-c-text-dark-1: var(--vt-c-white);
- --vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
-}
-
-/* semantic color variables for this project */
-:root {
- --color-background: var(--vt-c-white);
- --color-background-soft: var(--vt-c-white-soft);
- --color-background-mute: var(--vt-c-white-mute);
-
- --color-border: var(--vt-c-divider-light-2);
- --color-border-hover: var(--vt-c-divider-light-1);
-
- --color-heading: var(--vt-c-text-light-1);
- --color-text: var(--vt-c-text-light-1);
-
- --section-gap: 160px;
-}
-
-@media (prefers-color-scheme: dark) {
- :root {
- --color-background: var(--vt-c-black);
- --color-background-soft: var(--vt-c-black-soft);
- --color-background-mute: var(--vt-c-black-mute);
-
- --color-border: var(--vt-c-divider-dark-2);
- --color-border-hover: var(--vt-c-divider-dark-1);
-
- --color-heading: var(--vt-c-text-dark-1);
- --color-text: var(--vt-c-text-dark-2);
- }
-}
-
-*,
-*::before,
-*::after {
- box-sizing: border-box;
- margin: 0;
-}
-html{
- background: var(--vt-c-white-soft);
-}
-html.dark{
- background: var(--vt-c-black-soft);
-}
-body {
- color: var(--color-text);
- display: flex;
- justify-content: center;
- align-items: center;
- line-height: 1.6;
- font-family: Inter,
- -apple-system,
- BlinkMacSystemFont,
- 'Segoe UI',
- Roboto,
- Oxygen,
- Ubuntu,
- Cantarell,
- 'Fira Sans',
- 'Droid Sans',
- 'Helvetica Neue',
- sans-serif;
- font-size: 15px;
- text-rendering: optimizeLegibility;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
diff --git a/fcb-fronted/src/assets/code/github-markdown.scss b/fcb-fronted/src/assets/code/github-markdown.scss
deleted file mode 100644
index c928577..0000000
--- a/fcb-fronted/src/assets/code/github-markdown.scss
+++ /dev/null
@@ -1,1102 +0,0 @@
-html.dark {
- .markdown-body {
- color-scheme: dark;
- --color-prettylights-syntax-comment: #8b949e;
- --color-prettylights-syntax-constant: #79c0ff;
- --color-prettylights-syntax-entity: #d2a8ff;
- --color-prettylights-syntax-storage-modifier-import: #c9d1d9;
- --color-prettylights-syntax-entity-tag: #7ee787;
- --color-prettylights-syntax-keyword: #ff7b72;
- --color-prettylights-syntax-string: #a5d6ff;
- --color-prettylights-syntax-variable: #ffa657;
- --color-prettylights-syntax-brackethighlighter-unmatched: #f85149;
- --color-prettylights-syntax-invalid-illegal-text: #f0f6fc;
- --color-prettylights-syntax-invalid-illegal-bg: #8e1519;
- --color-prettylights-syntax-carriage-return-text: #f0f6fc;
- --color-prettylights-syntax-carriage-return-bg: #b62324;
- --color-prettylights-syntax-string-regexp: #7ee787;
- --color-prettylights-syntax-markup-list: #f2cc60;
- --color-prettylights-syntax-markup-heading: #1f6feb;
- --color-prettylights-syntax-markup-italic: #c9d1d9;
- --color-prettylights-syntax-markup-bold: #c9d1d9;
- --color-prettylights-syntax-markup-deleted-text: #ffdcd7;
- --color-prettylights-syntax-markup-deleted-bg: #67060c;
- --color-prettylights-syntax-markup-inserted-text: #aff5b4;
- --color-prettylights-syntax-markup-inserted-bg: #033a16;
- --color-prettylights-syntax-markup-changed-text: #ffdfb6;
- --color-prettylights-syntax-markup-changed-bg: #5a1e02;
- --color-prettylights-syntax-markup-ignored-text: #c9d1d9;
- --color-prettylights-syntax-markup-ignored-bg: #1158c7;
- --color-prettylights-syntax-meta-diff-range: #d2a8ff;
- --color-prettylights-syntax-brackethighlighter-angle: #8b949e;
- --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;
- --color-prettylights-syntax-constant-other-reference-link: #a5d6ff;
- --color-fg-default: #c9d1d9;
- --color-fg-muted: #8b949e;
- --color-fg-subtle: #6e7681;
- --color-canvas-default: #0d1117;
- --color-canvas-subtle: #161b22;
- --color-border-default: #30363d;
- --color-border-muted: #21262d;
- --color-neutral-muted: rgba(110,118,129,0.4);
- --color-accent-fg: #58a6ff;
- --color-accent-emphasis: #1f6feb;
- --color-attention-subtle: rgba(187,128,9,0.15);
- --color-danger-fg: #f85149;
- }
-}
-
-html {
- .markdown-body {
- color-scheme: light;
- --color-prettylights-syntax-comment: #6e7781;
- --color-prettylights-syntax-constant: #0550ae;
- --color-prettylights-syntax-entity: #8250df;
- --color-prettylights-syntax-storage-modifier-import: #24292f;
- --color-prettylights-syntax-entity-tag: #116329;
- --color-prettylights-syntax-keyword: #cf222e;
- --color-prettylights-syntax-string: #0a3069;
- --color-prettylights-syntax-variable: #953800;
- --color-prettylights-syntax-brackethighlighter-unmatched: #82071e;
- --color-prettylights-syntax-invalid-illegal-text: #f6f8fa;
- --color-prettylights-syntax-invalid-illegal-bg: #82071e;
- --color-prettylights-syntax-carriage-return-text: #f6f8fa;
- --color-prettylights-syntax-carriage-return-bg: #cf222e;
- --color-prettylights-syntax-string-regexp: #116329;
- --color-prettylights-syntax-markup-list: #3b2300;
- --color-prettylights-syntax-markup-heading: #0550ae;
- --color-prettylights-syntax-markup-italic: #24292f;
- --color-prettylights-syntax-markup-bold: #24292f;
- --color-prettylights-syntax-markup-deleted-text: #82071e;
- --color-prettylights-syntax-markup-deleted-bg: #ffebe9;
- --color-prettylights-syntax-markup-inserted-text: #116329;
- --color-prettylights-syntax-markup-inserted-bg: #dafbe1;
- --color-prettylights-syntax-markup-changed-text: #953800;
- --color-prettylights-syntax-markup-changed-bg: #ffd8b5;
- --color-prettylights-syntax-markup-ignored-text: #eaeef2;
- --color-prettylights-syntax-markup-ignored-bg: #0550ae;
- --color-prettylights-syntax-meta-diff-range: #8250df;
- --color-prettylights-syntax-brackethighlighter-angle: #57606a;
- --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;
- --color-prettylights-syntax-constant-other-reference-link: #0a3069;
- --color-fg-default: #24292f;
- --color-fg-muted: #57606a;
- --color-fg-subtle: #6e7781;
- --color-canvas-default: #ffffff;
- --color-canvas-subtle: #f6f8fa;
- --color-border-default: #d0d7de;
- --color-border-muted: hsla(210,18%,87%,1);
- --color-neutral-muted: rgba(175,184,193,0.2);
- --color-accent-fg: #0969da;
- --color-accent-emphasis: #0969da;
- --color-attention-subtle: #fff8c5;
- --color-danger-fg: #cf222e;
- }
-}
-
-.markdown-body {
- -ms-text-size-adjust: 100%;
- -webkit-text-size-adjust: 100%;
- margin: 0;
- color: var(--color-fg-default);
- background-color: var(--color-canvas-default);
- font-family: -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";
- font-size: 16px;
- line-height: 1.5;
- word-wrap: break-word;
-}
-
-.markdown-body .octicon {
- display: inline-block;
- fill: currentColor;
- vertical-align: text-bottom;
-}
-
-.markdown-body h1:hover .anchor .octicon-link:before,
-.markdown-body h2:hover .anchor .octicon-link:before,
-.markdown-body h3:hover .anchor .octicon-link:before,
-.markdown-body h4:hover .anchor .octicon-link:before,
-.markdown-body h5:hover .anchor .octicon-link:before,
-.markdown-body h6:hover .anchor .octicon-link:before {
- width: 16px;
- height: 16px;
- content: ' ';
- display: inline-block;
- background-color: currentColor;
- -webkit-mask-image: url("data:image/svg+xml,");
- mask-image: url("data:image/svg+xml,");
-}
-
-.markdown-body details,
-.markdown-body figcaption,
-.markdown-body figure {
- display: block;
-}
-
-.markdown-body summary {
- display: list-item;
-}
-
-.markdown-body [hidden] {
- display: none !important;
-}
-
-.markdown-body a {
- background-color: transparent;
- color: var(--color-accent-fg);
- text-decoration: none;
-}
-
-.markdown-body abbr[title] {
- border-bottom: none;
- text-decoration: underline dotted;
-}
-
-.markdown-body b,
-.markdown-body strong {
- font-weight: var(--base-text-weight-semibold, 600);
-}
-
-.markdown-body dfn {
- font-style: italic;
-}
-
-.markdown-body h1 {
- margin: .67em 0;
- font-weight: var(--base-text-weight-semibold, 600);
- padding-bottom: .3em;
- font-size: 2em;
- border-bottom: 1px solid var(--color-border-muted);
-}
-
-.markdown-body mark {
- background-color: var(--color-attention-subtle);
- color: var(--color-fg-default);
-}
-
-.markdown-body small {
- font-size: 90%;
-}
-
-.markdown-body sub,
-.markdown-body sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-
-.markdown-body sub {
- bottom: -0.25em;
-}
-
-.markdown-body sup {
- top: -0.5em;
-}
-
-.markdown-body img {
- border-style: none;
- max-width: 100%;
- box-sizing: content-box;
- background-color: var(--color-canvas-default);
-}
-
-.markdown-body code,
-.markdown-body kbd,
-.markdown-body pre,
-.markdown-body samp {
- font-family: monospace;
- font-size: 1em;
-}
-
-.markdown-body figure {
- margin: 1em 40px;
-}
-
-.markdown-body hr {
- box-sizing: content-box;
- overflow: hidden;
- background: transparent;
- border-bottom: 1px solid var(--color-border-muted);
- height: .25em;
- padding: 0;
- margin: 24px 0;
- background-color: var(--color-border-default);
- border: 0;
-}
-
-.markdown-body input {
- font: inherit;
- margin: 0;
- overflow: visible;
- font-family: inherit;
- font-size: inherit;
- line-height: inherit;
-}
-
-.markdown-body [type=button],
-.markdown-body [type=reset],
-.markdown-body [type=submit] {
- -webkit-appearance: button;
-}
-
-.markdown-body [type=checkbox],
-.markdown-body [type=radio] {
- box-sizing: border-box;
- padding: 0;
-}
-
-.markdown-body [type=number]::-webkit-inner-spin-button,
-.markdown-body [type=number]::-webkit-outer-spin-button {
- height: auto;
-}
-
-.markdown-body [type=search]::-webkit-search-cancel-button,
-.markdown-body [type=search]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-.markdown-body ::-webkit-input-placeholder {
- color: inherit;
- opacity: .54;
-}
-
-.markdown-body ::-webkit-file-upload-button {
- -webkit-appearance: button;
- font: inherit;
-}
-
-.markdown-body a:hover {
- text-decoration: underline;
-}
-
-.markdown-body ::placeholder {
- color: var(--color-fg-subtle);
- opacity: 1;
-}
-
-.markdown-body hr::before {
- display: table;
- content: "";
-}
-
-.markdown-body hr::after {
- display: table;
- clear: both;
- content: "";
-}
-
-.markdown-body table {
- border-spacing: 0;
- border-collapse: collapse;
- display: block;
- width: max-content;
- max-width: 100%;
- overflow: auto;
-}
-
-.markdown-body td,
-.markdown-body th {
- padding: 0;
-}
-
-.markdown-body details summary {
- cursor: pointer;
-}
-
-.markdown-body details:not([open])>*:not(summary) {
- display: none !important;
-}
-
-.markdown-body a:focus,
-.markdown-body [role=button]:focus,
-.markdown-body input[type=radio]:focus,
-.markdown-body input[type=checkbox]:focus {
- outline: 2px solid var(--color-accent-fg);
- outline-offset: -2px;
- box-shadow: none;
-}
-
-.markdown-body a:focus:not(:focus-visible),
-.markdown-body [role=button]:focus:not(:focus-visible),
-.markdown-body input[type=radio]:focus:not(:focus-visible),
-.markdown-body input[type=checkbox]:focus:not(:focus-visible) {
- outline: solid 1px transparent;
-}
-
-.markdown-body a:focus-visible,
-.markdown-body [role=button]:focus-visible,
-.markdown-body input[type=radio]:focus-visible,
-.markdown-body input[type=checkbox]:focus-visible {
- outline: 2px solid var(--color-accent-fg);
- outline-offset: -2px;
- box-shadow: none;
-}
-
-.markdown-body a:not([class]):focus,
-.markdown-body a:not([class]):focus-visible,
-.markdown-body input[type=radio]:focus,
-.markdown-body input[type=radio]:focus-visible,
-.markdown-body input[type=checkbox]:focus,
-.markdown-body input[type=checkbox]:focus-visible {
- outline-offset: 0;
-}
-
-.markdown-body kbd {
- display: inline-block;
- padding: 3px 5px;
- font: 11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
- line-height: 10px;
- color: var(--color-fg-default);
- vertical-align: middle;
- background-color: var(--color-canvas-subtle);
- border: solid 1px var(--color-neutral-muted);
- border-bottom-color: var(--color-neutral-muted);
- border-radius: 6px;
- box-shadow: inset 0 -1px 0 var(--color-neutral-muted);
-}
-
-.markdown-body h1,
-.markdown-body h2,
-.markdown-body h3,
-.markdown-body h4,
-.markdown-body h5,
-.markdown-body h6 {
- margin-top: 24px;
- margin-bottom: 16px;
- font-weight: var(--base-text-weight-semibold, 600);
- line-height: 1.25;
-}
-
-.markdown-body h2 {
- font-weight: var(--base-text-weight-semibold, 600);
- padding-bottom: .3em;
- font-size: 1.5em;
- border-bottom: 1px solid var(--color-border-muted);
-}
-
-.markdown-body h3 {
- font-weight: var(--base-text-weight-semibold, 600);
- font-size: 1.25em;
-}
-
-.markdown-body h4 {
- font-weight: var(--base-text-weight-semibold, 600);
- font-size: 1em;
-}
-
-.markdown-body h5 {
- font-weight: var(--base-text-weight-semibold, 600);
- font-size: .875em;
-}
-
-.markdown-body h6 {
- font-weight: var(--base-text-weight-semibold, 600);
- font-size: .85em;
- color: var(--color-fg-muted);
-}
-
-.markdown-body p {
- margin-top: 0;
- margin-bottom: 10px;
-}
-
-.markdown-body blockquote {
- margin: 0;
- padding: 0 1em;
- color: var(--color-fg-muted);
- border-left: .25em solid var(--color-border-default);
-}
-
-.markdown-body ul,
-.markdown-body ol {
- margin-top: 0;
- margin-bottom: 0;
- padding-left: 2em;
-}
-
-.markdown-body ol ol,
-.markdown-body ul ol {
- list-style-type: lower-roman;
-}
-
-.markdown-body ul ul ol,
-.markdown-body ul ol ol,
-.markdown-body ol ul ol,
-.markdown-body ol ol ol {
- list-style-type: lower-alpha;
-}
-
-.markdown-body dd {
- margin-left: 0;
-}
-
-.markdown-body tt,
-.markdown-body code,
-.markdown-body samp {
- font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
- font-size: 12px;
-}
-
-.markdown-body pre {
- margin-top: 0;
- margin-bottom: 0;
- font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
- font-size: 12px;
- word-wrap: normal;
-}
-
-.markdown-body .octicon {
- display: inline-block;
- overflow: visible !important;
- vertical-align: text-bottom;
- fill: currentColor;
-}
-
-.markdown-body input::-webkit-outer-spin-button,
-.markdown-body input::-webkit-inner-spin-button {
- margin: 0;
- -webkit-appearance: none;
- appearance: none;
-}
-
-.markdown-body::before {
- display: table;
- content: "";
-}
-
-.markdown-body::after {
- display: table;
- clear: both;
- content: "";
-}
-
-.markdown-body>*:first-child {
- margin-top: 0 !important;
-}
-
-.markdown-body>*:last-child {
- margin-bottom: 0 !important;
-}
-
-.markdown-body a:not([href]) {
- color: inherit;
- text-decoration: none;
-}
-
-.markdown-body .absent {
- color: var(--color-danger-fg);
-}
-
-.markdown-body .anchor {
- float: left;
- padding-right: 4px;
- margin-left: -20px;
- line-height: 1;
-}
-
-.markdown-body .anchor:focus {
- outline: none;
-}
-
-.markdown-body p,
-.markdown-body blockquote,
-.markdown-body ul,
-.markdown-body ol,
-.markdown-body dl,
-.markdown-body table,
-.markdown-body pre,
-.markdown-body details {
- margin-top: 0;
- margin-bottom: 16px;
-}
-
-.markdown-body blockquote>:first-child {
- margin-top: 0;
-}
-
-.markdown-body blockquote>:last-child {
- margin-bottom: 0;
-}
-
-.markdown-body h1 .octicon-link,
-.markdown-body h2 .octicon-link,
-.markdown-body h3 .octicon-link,
-.markdown-body h4 .octicon-link,
-.markdown-body h5 .octicon-link,
-.markdown-body h6 .octicon-link {
- color: var(--color-fg-default);
- vertical-align: middle;
- visibility: hidden;
-}
-
-.markdown-body h1:hover .anchor,
-.markdown-body h2:hover .anchor,
-.markdown-body h3:hover .anchor,
-.markdown-body h4:hover .anchor,
-.markdown-body h5:hover .anchor,
-.markdown-body h6:hover .anchor {
- text-decoration: none;
-}
-
-.markdown-body h1:hover .anchor .octicon-link,
-.markdown-body h2:hover .anchor .octicon-link,
-.markdown-body h3:hover .anchor .octicon-link,
-.markdown-body h4:hover .anchor .octicon-link,
-.markdown-body h5:hover .anchor .octicon-link,
-.markdown-body h6:hover .anchor .octicon-link {
- visibility: visible;
-}
-
-.markdown-body h1 tt,
-.markdown-body h1 code,
-.markdown-body h2 tt,
-.markdown-body h2 code,
-.markdown-body h3 tt,
-.markdown-body h3 code,
-.markdown-body h4 tt,
-.markdown-body h4 code,
-.markdown-body h5 tt,
-.markdown-body h5 code,
-.markdown-body h6 tt,
-.markdown-body h6 code {
- padding: 0 .2em;
- font-size: inherit;
-}
-
-.markdown-body summary h1,
-.markdown-body summary h2,
-.markdown-body summary h3,
-.markdown-body summary h4,
-.markdown-body summary h5,
-.markdown-body summary h6 {
- display: inline-block;
-}
-
-.markdown-body summary h1 .anchor,
-.markdown-body summary h2 .anchor,
-.markdown-body summary h3 .anchor,
-.markdown-body summary h4 .anchor,
-.markdown-body summary h5 .anchor,
-.markdown-body summary h6 .anchor {
- margin-left: -40px;
-}
-
-.markdown-body summary h1,
-.markdown-body summary h2 {
- padding-bottom: 0;
- border-bottom: 0;
-}
-
-.markdown-body ul.no-list,
-.markdown-body ol.no-list {
- padding: 0;
- list-style-type: none;
-}
-
-.markdown-body ol[type=a] {
- list-style-type: lower-alpha;
-}
-
-.markdown-body ol[type=A] {
- list-style-type: upper-alpha;
-}
-
-.markdown-body ol[type=i] {
- list-style-type: lower-roman;
-}
-
-.markdown-body ol[type=I] {
- list-style-type: upper-roman;
-}
-
-.markdown-body ol[type="1"] {
- list-style-type: decimal;
-}
-
-.markdown-body div>ol:not([type]) {
- list-style-type: decimal;
-}
-
-.markdown-body ul ul,
-.markdown-body ul ol,
-.markdown-body ol ol,
-.markdown-body ol ul {
- margin-top: 0;
- margin-bottom: 0;
-}
-
-.markdown-body li>p {
- margin-top: 16px;
-}
-
-.markdown-body li+li {
- margin-top: .25em;
-}
-
-.markdown-body dl {
- padding: 0;
-}
-
-.markdown-body dl dt {
- padding: 0;
- margin-top: 16px;
- font-size: 1em;
- font-style: italic;
- font-weight: var(--base-text-weight-semibold, 600);
-}
-
-.markdown-body dl dd {
- padding: 0 16px;
- margin-bottom: 16px;
-}
-
-.markdown-body table th {
- font-weight: var(--base-text-weight-semibold, 600);
-}
-
-.markdown-body table th,
-.markdown-body table td {
- padding: 6px 13px;
- border: 1px solid var(--color-border-default);
-}
-
-.markdown-body table tr {
- background-color: var(--color-canvas-default);
- border-top: 1px solid var(--color-border-muted);
-}
-
-.markdown-body table tr:nth-child(2n) {
- background-color: var(--color-canvas-subtle);
-}
-
-.markdown-body table img {
- background-color: transparent;
-}
-
-.markdown-body img[align=right] {
- padding-left: 20px;
-}
-
-.markdown-body img[align=left] {
- padding-right: 20px;
-}
-
-.markdown-body .emoji {
- max-width: none;
- vertical-align: text-top;
- background-color: transparent;
-}
-
-.markdown-body span.frame {
- display: block;
- overflow: hidden;
-}
-
-.markdown-body span.frame>span {
- display: block;
- float: left;
- width: auto;
- padding: 7px;
- margin: 13px 0 0;
- overflow: hidden;
- border: 1px solid var(--color-border-default);
-}
-
-.markdown-body span.frame span img {
- display: block;
- float: left;
-}
-
-.markdown-body span.frame span span {
- display: block;
- padding: 5px 0 0;
- clear: both;
- color: var(--color-fg-default);
-}
-
-.markdown-body span.align-center {
- display: block;
- overflow: hidden;
- clear: both;
-}
-
-.markdown-body span.align-center>span {
- display: block;
- margin: 13px auto 0;
- overflow: hidden;
- text-align: center;
-}
-
-.markdown-body span.align-center span img {
- margin: 0 auto;
- text-align: center;
-}
-
-.markdown-body span.align-right {
- display: block;
- overflow: hidden;
- clear: both;
-}
-
-.markdown-body span.align-right>span {
- display: block;
- margin: 13px 0 0;
- overflow: hidden;
- text-align: right;
-}
-
-.markdown-body span.align-right span img {
- margin: 0;
- text-align: right;
-}
-
-.markdown-body span.float-left {
- display: block;
- float: left;
- margin-right: 13px;
- overflow: hidden;
-}
-
-.markdown-body span.float-left span {
- margin: 13px 0 0;
-}
-
-.markdown-body span.float-right {
- display: block;
- float: right;
- margin-left: 13px;
- overflow: hidden;
-}
-
-.markdown-body span.float-right>span {
- display: block;
- margin: 13px auto 0;
- overflow: hidden;
- text-align: right;
-}
-
-.markdown-body code,
-.markdown-body tt {
- padding: .2em .4em;
- margin: 0;
- font-size: 85%;
- white-space: break-spaces;
- background-color: var(--color-neutral-muted);
- border-radius: 6px;
-}
-
-.markdown-body code br,
-.markdown-body tt br {
- display: none;
-}
-
-.markdown-body del code {
- text-decoration: inherit;
-}
-
-.markdown-body samp {
- font-size: 85%;
-}
-
-.markdown-body pre code {
- font-size: 100%;
-}
-
-.markdown-body pre>code {
- padding: 0;
- margin: 0;
- word-break: normal;
- white-space: pre;
- background: transparent;
- border: 0;
-}
-
-.markdown-body .highlight {
- margin-bottom: 16px;
-}
-
-.markdown-body .highlight pre {
- margin-bottom: 0;
- word-break: normal;
-}
-
-.markdown-body .highlight pre,
-.markdown-body pre {
- padding: 16px;
- overflow: auto;
- font-size: 85%;
- line-height: 1.45;
- background-color: var(--color-canvas-subtle);
- border-radius: 6px;
-}
-
-.markdown-body pre code,
-.markdown-body pre tt {
- display: inline;
- max-width: auto;
- padding: 0;
- margin: 0;
- overflow: visible;
- line-height: inherit;
- word-wrap: normal;
- background-color: transparent;
- border: 0;
-}
-
-.markdown-body .csv-data td,
-.markdown-body .csv-data th {
- padding: 5px;
- overflow: hidden;
- font-size: 12px;
- line-height: 1;
- text-align: left;
- white-space: nowrap;
-}
-
-.markdown-body .csv-data .blob-num {
- padding: 10px 8px 9px;
- text-align: right;
- background: var(--color-canvas-default);
- border: 0;
-}
-
-.markdown-body .csv-data tr {
- border-top: 0;
-}
-
-.markdown-body .csv-data th {
- font-weight: var(--base-text-weight-semibold, 600);
- background: var(--color-canvas-subtle);
- border-top: 0;
-}
-
-.markdown-body [data-footnote-ref]::before {
- content: "[";
-}
-
-.markdown-body [data-footnote-ref]::after {
- content: "]";
-}
-
-.markdown-body .footnotes {
- font-size: 12px;
- color: var(--color-fg-muted);
- border-top: 1px solid var(--color-border-default);
-}
-
-.markdown-body .footnotes ol {
- padding-left: 16px;
-}
-
-.markdown-body .footnotes ol ul {
- display: inline-block;
- padding-left: 16px;
- margin-top: 16px;
-}
-
-.markdown-body .footnotes li {
- position: relative;
-}
-
-.markdown-body .footnotes li:target::before {
- position: absolute;
- top: -8px;
- right: -8px;
- bottom: -8px;
- left: -24px;
- pointer-events: none;
- content: "";
- border: 2px solid var(--color-accent-emphasis);
- border-radius: 6px;
-}
-
-.markdown-body .footnotes li:target {
- color: var(--color-fg-default);
-}
-
-.markdown-body .footnotes .data-footnote-backref g-emoji {
- font-family: monospace;
-}
-
-.markdown-body .pl-c {
- color: var(--color-prettylights-syntax-comment);
-}
-
-.markdown-body .pl-c1,
-.markdown-body .pl-s .pl-v {
- color: var(--color-prettylights-syntax-constant);
-}
-
-.markdown-body .pl-e,
-.markdown-body .pl-en {
- color: var(--color-prettylights-syntax-entity);
-}
-
-.markdown-body .pl-smi,
-.markdown-body .pl-s .pl-s1 {
- color: var(--color-prettylights-syntax-storage-modifier-import);
-}
-
-.markdown-body .pl-ent {
- color: var(--color-prettylights-syntax-entity-tag);
-}
-
-.markdown-body .pl-k {
- color: var(--color-prettylights-syntax-keyword);
-}
-
-.markdown-body .pl-s,
-.markdown-body .pl-pds,
-.markdown-body .pl-s .pl-pse .pl-s1,
-.markdown-body .pl-sr,
-.markdown-body .pl-sr .pl-cce,
-.markdown-body .pl-sr .pl-sre,
-.markdown-body .pl-sr .pl-sra {
- color: var(--color-prettylights-syntax-string);
-}
-
-.markdown-body .pl-v,
-.markdown-body .pl-smw {
- color: var(--color-prettylights-syntax-variable);
-}
-
-.markdown-body .pl-bu {
- color: var(--color-prettylights-syntax-brackethighlighter-unmatched);
-}
-
-.markdown-body .pl-ii {
- color: var(--color-prettylights-syntax-invalid-illegal-text);
- background-color: var(--color-prettylights-syntax-invalid-illegal-bg);
-}
-
-.markdown-body .pl-c2 {
- color: var(--color-prettylights-syntax-carriage-return-text);
- background-color: var(--color-prettylights-syntax-carriage-return-bg);
-}
-
-.markdown-body .pl-sr .pl-cce {
- font-weight: bold;
- color: var(--color-prettylights-syntax-string-regexp);
-}
-
-.markdown-body .pl-ml {
- color: var(--color-prettylights-syntax-markup-list);
-}
-
-.markdown-body .pl-mh,
-.markdown-body .pl-mh .pl-en,
-.markdown-body .pl-ms {
- font-weight: bold;
- color: var(--color-prettylights-syntax-markup-heading);
-}
-
-.markdown-body .pl-mi {
- font-style: italic;
- color: var(--color-prettylights-syntax-markup-italic);
-}
-
-.markdown-body .pl-mb {
- font-weight: bold;
- color: var(--color-prettylights-syntax-markup-bold);
-}
-
-.markdown-body .pl-md {
- color: var(--color-prettylights-syntax-markup-deleted-text);
- background-color: var(--color-prettylights-syntax-markup-deleted-bg);
-}
-
-.markdown-body .pl-mi1 {
- color: var(--color-prettylights-syntax-markup-inserted-text);
- background-color: var(--color-prettylights-syntax-markup-inserted-bg);
-}
-
-.markdown-body .pl-mc {
- color: var(--color-prettylights-syntax-markup-changed-text);
- background-color: var(--color-prettylights-syntax-markup-changed-bg);
-}
-
-.markdown-body .pl-mi2 {
- color: var(--color-prettylights-syntax-markup-ignored-text);
- background-color: var(--color-prettylights-syntax-markup-ignored-bg);
-}
-
-.markdown-body .pl-mdr {
- font-weight: bold;
- color: var(--color-prettylights-syntax-meta-diff-range);
-}
-
-.markdown-body .pl-ba {
- color: var(--color-prettylights-syntax-brackethighlighter-angle);
-}
-
-.markdown-body .pl-sg {
- color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);
-}
-
-.markdown-body .pl-corl {
- text-decoration: underline;
- color: var(--color-prettylights-syntax-constant-other-reference-link);
-}
-
-.markdown-body g-emoji {
- display: inline-block;
- min-width: 1ch;
- font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";
- font-size: 1em;
- font-style: normal !important;
- font-weight: var(--base-text-weight-normal, 400);
- line-height: 1;
- vertical-align: -0.075em;
-}
-
-.markdown-body g-emoji img {
- width: 1em;
- height: 1em;
-}
-
-.markdown-body .task-list-item {
- list-style-type: none;
-}
-
-.markdown-body .task-list-item label {
- font-weight: var(--base-text-weight-normal, 400);
-}
-
-.markdown-body .task-list-item.enabled label {
- cursor: pointer;
-}
-
-.markdown-body .task-list-item+.task-list-item {
- margin-top: 4px;
-}
-
-.markdown-body .task-list-item .handle {
- display: none;
-}
-
-.markdown-body .task-list-item-checkbox {
- margin: 0 .2em .25em -1.4em;
- vertical-align: middle;
-}
-
-.markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox {
- margin: 0 -1.6em .25em .2em;
-}
-
-.markdown-body .contains-task-list {
- position: relative;
-}
-
-.markdown-body .contains-task-list:hover .task-list-item-convert-container,
-.markdown-body .contains-task-list:focus-within .task-list-item-convert-container {
- display: block;
- width: auto;
- height: 24px;
- overflow: visible;
- clip: auto;
-}
-
-.markdown-body ::-webkit-calendar-picker-indicator {
- filter: invert(50%);
-}
diff --git a/fcb-fronted/src/assets/code/highlight.scss b/fcb-fronted/src/assets/code/highlight.scss
deleted file mode 100644
index 446a1e2..0000000
--- a/fcb-fronted/src/assets/code/highlight.scss
+++ /dev/null
@@ -1,206 +0,0 @@
-html.dark {
- pre code.hljs {
- display: block;
- overflow-x: auto;
- padding: 1em
- }
-
- code.hljs {
- padding: 3px 5px
- }
-
- .hljs {
- color: #abb2bf;
- background: #282c34
- }
-
- .hljs-keyword,
- .hljs-operator,
- .hljs-pattern-match {
- color: #f92672
- }
-
- .hljs-function,
- .hljs-pattern-match .hljs-constructor {
- color: #61aeee
- }
-
- .hljs-function .hljs-params {
- color: #a6e22e
- }
-
- .hljs-function .hljs-params .hljs-typing {
- color: #fd971f
- }
-
- .hljs-module-access .hljs-module {
- color: #7e57c2
- }
-
- .hljs-constructor {
- color: #e2b93d
- }
-
- .hljs-constructor .hljs-string {
- color: #9ccc65
- }
-
- .hljs-comment,
- .hljs-quote {
- color: #b18eb1;
- font-style: italic
- }
-
- .hljs-doctag,
- .hljs-formula {
- color: #c678dd
- }
-
- .hljs-deletion,
- .hljs-name,
- .hljs-section,
- .hljs-selector-tag,
- .hljs-subst {
- color: #e06c75
- }
-
- .hljs-literal {
- color: #56b6c2
- }
-
- .hljs-addition,
- .hljs-attribute,
- .hljs-meta .hljs-string,
- .hljs-regexp,
- .hljs-string {
- color: #98c379
- }
-
- .hljs-built_in,
- .hljs-class .hljs-title,
- .hljs-title.class_ {
- color: #e6c07b
- }
-
- .hljs-attr,
- .hljs-number,
- .hljs-selector-attr,
- .hljs-selector-class,
- .hljs-selector-pseudo,
- .hljs-template-variable,
- .hljs-type,
- .hljs-variable {
- color: #d19a66
- }
-
- .hljs-bullet,
- .hljs-link,
- .hljs-meta,
- .hljs-selector-id,
- .hljs-symbol,
- .hljs-title {
- color: #61aeee
- }
-
- .hljs-emphasis {
- font-style: italic
- }
-
- .hljs-strong {
- font-weight: 700
- }
-
- .hljs-link {
- text-decoration: underline
- }
-}
-
-html {
- pre code.hljs {
- display: block;
- overflow-x: auto;
- padding: 1em
- }
-
- code.hljs {
- padding: 3px 5px;
- &::-webkit-scrollbar {
- height: 4px;
- }
- }
-
- .hljs {
- color: #383a42;
- background: #fafafa
- }
-
- .hljs-comment,
- .hljs-quote {
- color: #a0a1a7;
- font-style: italic
- }
-
- .hljs-doctag,
- .hljs-formula,
- .hljs-keyword {
- color: #a626a4
- }
-
- .hljs-deletion,
- .hljs-name,
- .hljs-section,
- .hljs-selector-tag,
- .hljs-subst {
- color: #e45649
- }
-
- .hljs-literal {
- color: #0184bb
- }
-
- .hljs-addition,
- .hljs-attribute,
- .hljs-meta .hljs-string,
- .hljs-regexp,
- .hljs-string {
- color: #50a14f
- }
-
- .hljs-attr,
- .hljs-number,
- .hljs-selector-attr,
- .hljs-selector-class,
- .hljs-selector-pseudo,
- .hljs-template-variable,
- .hljs-type,
- .hljs-variable {
- color: #986801
- }
-
- .hljs-bullet,
- .hljs-link,
- .hljs-meta,
- .hljs-selector-id,
- .hljs-symbol,
- .hljs-title {
- color: #4078f2
- }
-
- .hljs-built_in,
- .hljs-class .hljs-title,
- .hljs-title.class_ {
- color: #c18401
- }
-
- .hljs-emphasis {
- font-style: italic
- }
-
- .hljs-strong {
- font-weight: 700
- }
-
- .hljs-link {
- text-decoration: underline
- }
-}
diff --git a/fcb-fronted/src/assets/code/main.scss b/fcb-fronted/src/assets/code/main.scss
deleted file mode 100644
index 6f7d129..0000000
--- a/fcb-fronted/src/assets/code/main.scss
+++ /dev/null
@@ -1,100 +0,0 @@
-@import 'katex/dist/katex.min.css';
-@import '@/assets/code/highlight.scss';
-@import '@/assets/code/github-markdown.scss';
-@import '@/assets/code/markdown-add.scss';
-.markdown-body {
- box-sizing: border-box;
- background:none ;
- *{
- font-size: 0.9rem;
- }
-}
-
-@media (max-width: 767px) {
- .markdown-body {
- padding: 15px;
- }
-}
-
-.chat-container {
- display: flex;
- flex-direction: column;
- margin: auto;
- max-width: 1080px;
- padding: 0 5px;
- height: 100%;
-}
-
-.chat-messages {
- flex-grow: 1;
- overflow-y: auto;
- border-radius: 10px 10px 0 0;
- padding: 8px;
-}
-
-.chat-message {
- display: flex;
- flex-direction: column;
- margin-bottom: 30px;
-}
-
-.chat-message-bubble {
- padding: 8px;
- align-self: flex-start;
- color: #2f4f4f;
- border-radius: 8px 8px 8px 0;
- background: linear-gradient(to right, #c9d6ff, #e2e2e2); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
- box-shadow: 0 16px 20px 0 rgba(174, 167, 223, .06);
- max-width: 80%;
-}
-
-.chat-toolbar-icon{
- margin-left: 5px;
- cursor: pointer;
-}
-
-.chat-message-meta {
- display: flex;
- position: relative;
- margin-top: 4px;
-}
-
-.n-input-wrapper {
- padding-right: 0;
-}
-
-.chat-message-nickname-and-time {
- color: #999;
- font-size: 12px;
-}
-
-.is-me {
- justify-content: flex-end;
-
-}
-
-.n-input .n-input__suffix, .n-input .n-input__prefix {
- display: block;
-}
-
-.n-input .n-input-wrapper {
- padding-right: 0;
-}
-
-.n-input .n-input__suffix .n-button {
- border-radius: 8px !important;
- width: 80px;
- height: 30px;
- position: absolute; right: 10px; bottom: 10px;
- box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.3);
- background-image: linear-gradient(-56deg, #0773ff 5%, #797eff);
- --n-border: none !important;
-}
-
-.chat-message.is-me .chat-message-bubble {
- background: linear-gradient(to right, #56ccf2, #2f80ed); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
- border-radius: 8px 8px 0 !important;
- box-shadow: 0 16px 20px 0 rgba(174, 167, 223, .06);
- align-self: flex-end;
-}
-
diff --git a/fcb-fronted/src/assets/code/markdown-add.scss b/fcb-fronted/src/assets/code/markdown-add.scss
deleted file mode 100644
index 844e2bc..0000000
--- a/fcb-fronted/src/assets/code/markdown-add.scss
+++ /dev/null
@@ -1,75 +0,0 @@
-.markdown-body {
- background-color: transparent;
- font-size: 14px;
-
- p {
- white-space: pre-wrap;
- }
-
- ol {
- list-style-type: decimal;
- }
-
- ul {
- list-style-type: disc;
- }
-
- pre code,
- pre tt {
- line-height: 1.65;
- }
-
- // .highlight pre,
- // pre {
- // background-color: #fff;
- // }
-
- code.hljs {
- padding: 0;
- }
-
- .code-block {
- &-wrapper {
- position: relative;
- padding-top: 24px;
- }
-
- &-header {
- position: absolute;
- top: 5px;
- right: 0;
- width: 100%;
- padding: 0 1rem;
- display: flex;
- justify-content: flex-end;
- align-items: center;
- color: #b3b3b3;
-
- &__copy {
- cursor: pointer;
- margin-left: 0.5rem;
- user-select: none;
-
- &:hover {
- color: #65a665;
- }
- }
- }
- }
-
-}
-
-html.dark {
-
- .message-reply {
- .whitespace-pre-wrap {
- white-space: pre-wrap;
- color: var(--n-text-color);
- }
- }
-
- .highlight pre,
- pre {
- background-color: #282c34;
- }
-}
diff --git a/fcb-fronted/src/assets/main.css b/fcb-fronted/src/assets/main.css
deleted file mode 100644
index efbe675..0000000
--- a/fcb-fronted/src/assets/main.css
+++ /dev/null
@@ -1,54 +0,0 @@
-@import './base.css';
-
-#app {
- display: flex;
- flex-direction: column;
- justify-content: center;
- min-height: 100vh;
-}
-
-.card {
- max-width: 400px;
- min-width: 398px;
- height: 100%;
- background-color: #F8FBFE;
- box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
- border-radius: 20px !important;
- position: relative;
-}
-
-.tools {
- display: flex;
- z-index: 999;
- align-items: center;
-}
-
-
-.box {
- display: inline-block;
- align-items: center;
- width: 1.5rem;
- height: 1.5rem;
- user-select: none;
- cursor: pointer;
- padding: 1px;
- border-radius: 50%;
-}
-.circle {
- padding: 0 4px;
-}
-
-.red {
- padding: 3px;
- background-color: #ff605c;
-}
-
-.yellow {
- padding: 3px;
- background-color: #ffbd44;
-}
-
-.green {
- background-color: #00ca4e;
- padding: 3px;
-}
diff --git a/fcb-fronted/src/components/CardTools.vue b/fcb-fronted/src/components/CardTools.vue
deleted file mode 100644
index 8f23f35..0000000
--- a/fcb-fronted/src/components/CardTools.vue
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/fcb-fronted/src/components/FileBox.vue b/fcb-fronted/src/components/FileBox.vue
deleted file mode 100644
index 3c98a98..0000000
--- a/fcb-fronted/src/components/FileBox.vue
+++ /dev/null
@@ -1,151 +0,0 @@
-
-
-
-
-
- {{t('fileBox.receiveFileBox')}}
- {{t('fileBox.sendFileBox')}}
-
-
-
-
-
-
- {{t('fileBox.copy')}}
- {{ t('fileBox.close') }}
-
-
-
-
-
-
{{ value.name }}
- {{ t('fileBox.delete') }}
-
-
-
-
-
-
-
-
-
{{value.text}}
-
- {{ value.code }}
-
- {{ t('fileBox.download') }}
-
- {{ t('fileBox.detail') }}
-
-
-
-
-
-
-
-
-
-
{{ value.name }}
- {{ t('fileBox.delete') }}
-
-
-
-
-
-
-
-
-
-
- {{ value.code }}
- {{ t('fileBox.copyLink') }}
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/fcb-fronted/src/components/UploadFile.vue b/fcb-fronted/src/components/UploadFile.vue
deleted file mode 100644
index 3d7a893..0000000
--- a/fcb-fronted/src/components/UploadFile.vue
+++ /dev/null
@@ -1,183 +0,0 @@
-
-
-
-
-
-
-
-
-
- {{t('send.prompt1')}}{{t('send.clickUpload')}}
-
- {{t('send.prompt2')}}
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/fcb-fronted/src/components/UploadText.vue b/fcb-fronted/src/components/UploadText.vue
deleted file mode 100644
index 0e9a915..0000000
--- a/fcb-fronted/src/components/UploadText.vue
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
-
-
-
- {{t('send.share')}}
-
-
-
-
\ No newline at end of file
diff --git a/fcb-fronted/src/locals/en.ts b/fcb-fronted/src/locals/en.ts
deleted file mode 100644
index 51ff76b..0000000
--- a/fcb-fronted/src/locals/en.ts
+++ /dev/null
@@ -1,140 +0,0 @@
-export default {
- send: {
- disclaimers: 'Terms and Conditions',
- prompt1: 'Drag and drop text or files here, or ',
- prompt2: 'Days <7 or limited number of times (deleted after 24h)',
- prompt3: 'Please enter the text you want to send, supports MarkDown format',
- share: 'Share',
- textShare: 'Text Share',
- clickUpload: 'Click to Upload',
- pleaseInputExpireValue: 'Please enter the validity period',
- expireStyle: 'Expiration Method',
- expireData: {
- day: 'Days',
- hour: 'Hours',
- forever: 'Permanent',
- minute: 'Minutes',
- count: 'Times'
- },
- expireValue: {
- day: 'Days',
- hour: 'Hours',
- minute: 'Minutes',
- count: 'Times'
- },
- fileType: {
- file: 'File',
- text: 'Text'
- }
- },
- fileBox: {
- copySuccess: 'Copy Successful',
- inputNotEmpty: 'Please enter a five-digit retrieval code',
- sendFileBox: 'Outgoing Box',
- ok: 'OK',
- receiveFileBox: 'Incoming Box',
- textDetail: 'Text Details',
- copy: 'Copy',
- close: 'Close',
- delete: 'Delete',
- download: 'Click to Download',
- detail: 'View Details',
- copyLink: 'Copy Link',
- },
- admin: {
- about: {
- source1: 'This project is open-source on Github: ',
- source2: 'FileCodeBox'
- },
- settings: {
- name: 'Website Name',
- description: 'Website Description',
- uploadlimit: 'Upload Limit',
- explain: 'Interface Instructions',
- errorlimit: 'Error Limit',
- keywords: 'Keywords',
- themeSelect: 'Theme Selection',
- notify_title: 'Notification Title',
- notify_content: 'Notification Content',
- background: 'Background Image',
- max_save_seconds: 'Maximum Save Time',
- maxSaveSecondsNote: 'Maximum save time, unit: (seconds), default is 0 which means 7 days',
- admin_token: 'Admin Password',
- uploadSize: 'File Size',
- expireStyle: 'Expiration Method',
- uploadSizeNote: 'Maximum file size, unit: (Bytes), 1mb = 1 * 1024 * 1024',
- showAdmin: {
- open: 'Open',
- close: 'Close',
- note: 'Is the backend entrance displayed at the bottom of the page?',
- },
- openUpload: {
- title: 'Enable Upload',
- open: 'Enable Guest Upload',
- close: 'Disable Guest Upload',
- note: 'After disabling, you need to log in to the backend to upload',
- },
- file_storage: {
- title: 'Storage Engine',
- local: 'Local Storage',
- s3: 'S3 Storage',
- note: 'After updating, you need to restart FileCodeBox',
- },
- mei: 'Every',
- minute: 'Minutes',
- upload: 'Upload',
- files: 'Files',
- allow: 'Allow',
- errors: 'Errors',
- save: 'Save',
- saveSuccess: 'Save Successful',
- },
- fileView: {
- code: 'Retrieval Code',
- prefix: 'File Prefix',
- suffix: 'File Suffix',
- text: 'Text',
- used_count: 'Times Used',
- expired_count: 'Available Times',
- size: 'File Size',
- expired_at: 'Expiration Time',
- file_path: 'File Path',
- action: 'Action',
- delete: 'Delete',
- delete_success: 'Delete Successful',
- forever: 'Permanent',
- unlimited_count: 'Unlimited Times',
- download: 'Download',
- download_fail: 'File save failed, please try again later~',
- },
- menu: {
- fileManage: 'File Management',
- systemSetting: 'System Settings',
- about: 'About Us',
- color: 'Color Mode',
- send: 'Send',
- local:'Local File',
- receive: 'Receive',
- signout: 'Sign Out',
- },
- login: {
- managePassword: 'Admin Password',
- passwordNotEmpty: 'Password cannot be empty',
- login: 'Login',
- loginSuccess: 'Login Successful',
- loginError: 'Login Failed',
- },
- local: {
- Name: '文件',
- Expire: '过期',
- Cancel: '取消',
- Confirm: '确定',
- }
- },
- msg: {
- fileOverSize: 'File Too Large',
- fileUploadFail: 'Upload Failed',
- fileUploadSuccess: 'Upload Successful',
- uploadClose: 'Guest upload is closed on this site',
- }
-};
\ No newline at end of file
diff --git a/fcb-fronted/src/locals/es.ts b/fcb-fronted/src/locals/es.ts
deleted file mode 100644
index f492946..0000000
--- a/fcb-fronted/src/locals/es.ts
+++ /dev/null
@@ -1,140 +0,0 @@
-export default {
- send: {
- disclaimers: 'Términos y condiciones',
- prompt1: 'Arrastre, pegue el texto, archivos aquí, o ',
- prompt2: 'Días<7 o límite de veces (elimina después de 24h)',
- prompt3: 'Ingrese el texto que desea enviar, admite formato MarkDown',
- share: 'Compartir',
- textShare: 'Compartir texto',
- clickUpload: 'Hacer clic para subir',
- pleaseInputExpireValue: 'Ingrese el período de validez',
- expireStyle: 'Método de caducidad',
- expireData: {
- day: 'Días',
- hour: 'Horas',
- forever: 'Para siempre',
- minute: 'Minutos',
- count: 'Veces'
- },
- expireValue: {
- day: 'Días',
- hour: 'Horas',
- minute: 'Minutos',
- count: 'Veces'
- },
- fileType: {
- file: 'Archivo',
- text: 'Texto'
- }
- },
- fileBox: {
- copySuccess: 'Copiado exitosamente',
- inputNotEmpty: 'Ingrese un código de recogida de cinco dígitos',
- sendFileBox: 'Buzón de envíos',
- ok: 'Aceptar',
- receiveFileBox: 'Buzón de recepción',
- textDetail: 'Detalles del texto',
- copy: 'Copiar',
- close: 'Cerrar',
- delete: 'Eliminar',
- download: 'Hacer clic para descargar',
- detail: 'Ver detalles',
- copyLink: 'Copiar enlace',
- },
- admin: {
- about: {
- source1: 'Proyecto de código abierto en Github:',
- source2: 'FileCodeBox'
- },
- settings: {
- name: 'Nombre del sitio web',
- description: 'Descripción del sitio web',
- uploadlimit: 'Límite de subida',
- explain: 'Descripción de la interfaz',
- errorlimit: 'Límite de errores',
- keywords: 'Palabras clave',
- themeSelect: 'Selección de tema',
- notify_title: 'Título de notificación',
- notify_content: 'Contenido de notificación',
- background: 'Imagen de fondo',
- max_save_seconds: 'Tiempo máximo de almacenamiento',
- maxSaveSecondsNote: 'Tiempo máximo de almacenamiento, en segundos. El valor predeterminado es 0, que equivale a 7 días',
- admin_token: 'Contraseña de administración',
- uploadSize: 'Tamaño de archivo',
- expireStyle: 'Método de caducidad',
- uploadSizeNote: 'Tamaño máximo de archivo, en bytes. 1mb=1 * 1024 * 1024',
- openUpload: {
- title: 'Habilitar subida',
- open: 'Habilitar subida para visitantes',
- close: 'Deshabilitar subida para visitantes',
- note: 'Después de deshabilitar, es necesario iniciar sesión en el backend para poder subir archivos',
- },
- showAdmin: {
- open: 'abierto',
- close: 'cierre',
- note: 'si mostrar la entrada de fondo en la parte inferior de la página',
- },
- file_storage: {
- title: 'Motor de almacenamiento',
- local: 'Almacenamiento local',
- s3: 'Almacenamiento S3',
- note: 'Es necesario reiniciar FileCodeBox después de actualizar',
- },
- mei: 'Cada',
- minute: 'Minuto',
- upload: 'Subir',
- files: 'Archivos',
- allow: 'Permitir',
- errors: 'Errores',
- save: 'Guardar',
- saveSuccess: 'Guardado exitosamente',
- },
- fileView: {
- code: 'Código de recogida',
- prefix: 'Prefijo de archivo',
- suffix: 'Sufijo de archivo',
- text: 'Texto',
- used_count: 'Número de veces utilizado',
- expired_count: 'Número de veces disponible',
- size: 'Tamaño de archivo',
- expired_at: 'Fecha de caducidad',
- file_path: 'Ruta del archivo',
- action: 'Acción',
- delete: 'Eliminar',
- delete_success: 'Eliminado exitosamente',
- forever: 'Válido para siempre',
- unlimited_count: 'Número de veces ilimitado',
- download: 'Descargar',
- download_fail: 'Error al guardar el archivo, intente nuevamente más tarde~',
- },
- menu: {
- fileManage: 'Gestión de archivos',
- systemSetting: 'Configuración del sistema',
- about: 'Sobre nosotros',
- color: 'Modo de color',
- send: 'Enviar',
- local:'Archivo Local',
- receive: 'Recibir',
- signout: 'Cerrar sesión',
- },
- login: {
- managePassword: 'Contraseña de administración',
- passwordNotEmpty: 'La contraseña no puede estar vacía',
- login: 'Iniciar sesión',
- loginSuccess: 'Inicio de sesión exitoso',
- loginError: 'Error de inicio de sesión',
- },
- local: {
- Name: '文件',
- Expire: '过期',
- Cancel: '取消',
- Confirm: '确定',
- }
- },
- msg: {
- fileOverSize: 'Archivo demasiado grande',
- fileUploadFail: 'Error al subir',
- fileUploadSuccess: 'Subida exitosa',
- uploadClose: 'El sitio ha deshabilitado la subida para visitantes',
- }
-};
\ No newline at end of file
diff --git a/fcb-fronted/src/locals/i18n.ts b/fcb-fronted/src/locals/i18n.ts
deleted file mode 100644
index 995d2bb..0000000
--- a/fcb-fronted/src/locals/i18n.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { createI18n } from 'vue-i18n' //引入vue-i18n组件
-import messages from './index'
-let language = (
- navigator.language || 'zh_cn'
-).toLowerCase().replace(/-/, '_');
-if (['zh','zh_cn','en','es','zh_tw'].indexOf(language) === -1) {
- language = 'zh_cn'
-}
-const lang = (localStorage.getItem('language') || language);
-const i18n = createI18n({
- silentTranslationWarn: true,
- globalInjection: true,
- legacy: false,
- locale: lang,
- messages,
-});
-
-export default i18n
diff --git a/fcb-fronted/src/locals/index.ts b/fcb-fronted/src/locals/index.ts
deleted file mode 100644
index 84353f1..0000000
--- a/fcb-fronted/src/locals/index.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import zh_cn from './zh_cn';
-import zh from './zh';
-import es from './es';
-import en from './en';
-import zh_tw from './zh_tw'
-
-export default {
- zh_cn,
- en,
- zh_tw,
- zh,
- es
-}
\ No newline at end of file
diff --git a/fcb-fronted/src/locals/zh.ts b/fcb-fronted/src/locals/zh.ts
deleted file mode 100644
index 1fc0474..0000000
--- a/fcb-fronted/src/locals/zh.ts
+++ /dev/null
@@ -1,140 +0,0 @@
-export default {
- send: {
- disclaimers:'使用须知',
- prompt1: '将文字、文件拖、粘贴到此处,或 ',
- prompt2: '天数<7或限制次数(24h后删除)',
- prompt3: '请输入您要寄出的文本,支持MarkDown格式',
- share: '分享',
- textShare: '文本分享',
- clickUpload: '点击上传',
- pleaseInputExpireValue: '请输入有效期',
- expireStyle: '过期方式',
- expireData: {
- day: '天数',
- hour: '小时',
- forever: '永久',
- minute: '分钟',
- count: '次数'
- },
- expireValue: {
- day: '天',
- hour: '时',
- minute: '分',
- count: '次'
- },
- fileType: {
- file: '文件',
- text: '文本'
- }
- },
- fileBox: {
- copySuccess: '复制成功',
- inputNotEmpty: '请输入五位取件码',
- sendFileBox: '寄件箱',
- ok:'确定',
- receiveFileBox: '收件箱',
- textDetail: '文本详情',
- copy: '复 制',
- close: '关 闭',
- delete: '删 除',
- download: '点 击 下 载',
- detail: '查 看 详 情',
- copyLink: '复制链接',
- },
- admin: {
- about: {
- source1: '本项目开源于Github:',
- source2: 'FileCodeBox'
- },
- settings: {
- name: '网站名称',
- description: '网站描述',
- uploadlimit: '上传限制',
- explain:'界面说明',
- errorlimit: '错误限制',
- keywords: '关键词',
- themeSelect: '主题选择',
- notify_title: '通知标题',
- notify_content: '通知内容',
- background: '背景图片',
- max_save_seconds: '最长保存',
- maxSaveSecondsNote: '最长保存时间,单位:(秒),默认为0则为7天',
- admin_token: '管理密码',
- uploadSize: '文件大小',
- expireStyle: '过期方式',
- uploadSizeNote: '最大文件大小,单位:(Bytes),1mb=1 * 1024 * 1024',
- openUpload: {
- title: '开启上传',
- open: '开启游客上传',
- close: '关闭游客上传',
- note: '关闭之后需要登录后台方可上传',
- },
- showAdmin:{
- open: '开启',
- close: '关闭',
- note: '是否在页面底部显示后台入口',
- },
- file_storage: {
- title: '存储引擎',
- local: '本地存储',
- s3: 'S3存储',
- note: '更新后需要重启FileCodeBox',
- },
- mei: '每',
- minute: '分钟',
- upload: '上传',
- files: '个文件',
- allow: '允许',
- errors: '次错误',
- save: '保存',
- saveSuccess: '保存成功',
- },
- fileView: {
- code: '取件码',
- prefix: '文件前缀',
- suffix: '文件后缀',
- text: '文本',
- used_count: '已使用次数',
- expired_count: '可用次数',
- size: '文件大小',
- expired_at: '过期时间',
- file_path: '文件路径',
- action: '操作',
- delete: '删除',
- delete_success: '删除成功',
- forever: '永久有效',
- unlimited_count: '不限次数',
- download: '下载',
- download_fail: '文件保存失败,请稍后再试~',
- },
- menu: {
- fileManage: '文件管理',
- systemSetting: '系统设置',
- about: '关于我们',
- color: '颜色模式',
- local:'本地文件',
- send: '寄件',
- receive: '收件',
- signout: '退出登录',
- },
- login: {
- managePassword: '管理密码',
- passwordNotEmpty: '密码不能为空',
- login: '登 录',
- loginSuccess: '登录成功',
- loginError: '登录失败',
- },
- local: {
- Name: '文件',
- Expire: '过期',
- Cancel: '取消',
- Confirm: '确定',
- }
- },
- msg:{
- fileOverSize: '文件过大',
- fileUploadFail: '上传失败',
- fileUploadSuccess: '上传成功',
- uploadClose: '本站已关闭游客上传',
- }
-};
\ No newline at end of file
diff --git a/fcb-fronted/src/locals/zh_cn.ts b/fcb-fronted/src/locals/zh_cn.ts
deleted file mode 100644
index d3e39cb..0000000
--- a/fcb-fronted/src/locals/zh_cn.ts
+++ /dev/null
@@ -1,142 +0,0 @@
-export default {
- send: {
- disclaimers:'使用须知',
- prompt1: '将文字、文件拖、粘贴到此处,或 ',
- prompt2: '天数<7或限制次数(24h后删除)',
- prompt3: '请输入您要寄出的文本,支持MarkDown格式',
- share: '分享',
- textShare: '文本分享',
- clickUpload: '点击上传',
- pleaseInputExpireValue: '请输入有效期',
- expireStyle: '过期方式',
- expireData: {
- day: '天数',
- hour: '小时',
- forever: '永久',
- minute: '分钟',
- count: '次数'
- },
- expireValue: {
- day: '天',
- hour: '时',
- minute: '分',
- count: '次'
- },
- fileType: {
- file: '文件',
- text: '文本'
- }
- },
- fileBox: {
- copySuccess: '复制成功',
- inputNotEmpty: '请输入五位取件码',
- sendFileBox: '寄件箱',
- ok:'确定',
- receiveFileBox: '收件箱',
- textDetail: '文本详情',
- copy: '复 制',
- close: '关 闭',
- delete: '删 除',
- download: '点 击 下 载',
- detail: '查 看 详 情',
- copyLink: '复制链接',
- },
- admin: {
- about: {
- source1: '本项目开源于Github:',
- source2: 'FileCodeBox'
- },
- settings: {
- name: '网站名称',
- description: '网站描述',
- uploadlimit: '上传限制',
- explain:'界面说明',
- errorlimit: '错误限制',
- keywords: '关键词',
- themeSelect: '主题选择',
- notify_title: '通知标题',
- notify_content: '通知内容',
- background: '背景图片',
- max_save_seconds: '最长保存',
- maxSaveSecondsNote: '最长保存时间,单位:(秒),默认为0则为7天',
- admin_token: '管理密码',
- uploadSize: '文件大小',
- expireStyle: '过期方式',
- showAdminAddr: '显示后台',
- showAdmin:{
- open: '开启',
- close: '关闭',
- note: '是否在页面底部显示后台入口',
- },
- robotsText: 'robots.txt',
- uploadSizeNote: '最大文件大小,单位:(Bytes),1mb=1 * 1024 * 1024',
- openUpload: {
- title: '开启上传',
- open: '开启游客上传',
- close: '关闭游客上传',
- note: '关闭之后需要登录后台方可上传',
- },
- file_storage: {
- title: '存储引擎',
- local: '本地存储',
- s3: 'S3存储',
- note: '更新后需要重启FileCodeBox',
- },
- mei: '每',
- minute: '分钟',
- upload: '上传',
- files: '个文件',
- allow: '允许',
- errors: '次错误',
- save: '保存',
- saveSuccess: '保存成功',
- },
- fileView: {
- code: '取件码',
- prefix: '文件前缀',
- suffix: '文件后缀',
- text: '文本',
- used_count: '已使用次数',
- expired_count: '可用次数',
- size: '文件大小',
- expired_at: '过期时间',
- file_path: '文件路径',
- action: '操作',
- delete: '删除',
- delete_success: '删除成功',
- forever: '永久有效',
- unlimited_count: '不限次数',
- download: '下载',
- download_fail: '文件保存失败,请稍后再试~',
- },
- menu: {
- fileManage: '文件管理',
- systemSetting: '系统设置',
- about: '关于我们',
- local:'本地文件',
- color: '颜色模式',
- send: '寄件',
- receive: '收件',
- signout: '退出登录',
- },
- login: {
- managePassword: '管理密码',
- passwordNotEmpty: '密码不能为空',
- login: '登 录',
- loginSuccess: '登录成功',
- loginError: '登录失败',
- },
- local: {
- Name: '文件',
- Expire: '过期',
- Cancel: '取消',
- Confirm: '确定',
- }
- },
- msg:{
- fileOverSize: '文件过大',
- fileUploadFail: '上传失败',
- fileUploadSuccess: '上传成功',
- uploadClose: '本站已关闭游客上传',
- }
-};
\ No newline at end of file
diff --git a/fcb-fronted/src/locals/zh_tw.ts b/fcb-fronted/src/locals/zh_tw.ts
deleted file mode 100644
index bb2cf4d..0000000
--- a/fcb-fronted/src/locals/zh_tw.ts
+++ /dev/null
@@ -1,139 +0,0 @@
-export default {
- send: {
- disclaimers:'使用須知',
- prompt1: '將文字、文件拖、貼到此處,或 ',
- prompt2: '天數<7或限制次數(24h後刪除)',
- prompt3: '請輸入您要寄出的文本,支持MarkDown格式',
- share: '分享',
- textShare: '文本分享',
- clickUpload: '點擊上傳',
- pleaseInputExpireValue: '請輸入有效期',
- expireStyle: '過期方式',
- expireData: {
- day: '天數',
- hour: '小時',
- forever: '永久',
- minute: '分鐘',
- count: '次數'
- },
- expireValue: {
- day: '天',
- hour: '時',
- minute: '分',
- count: '次'
- },
- fileType: {
- file: '文件',
- text: '文本'
- }
- },
- fileBox: {
- copySuccess: '複製成功',
- inputNotEmpty: '請輸入五位取件碼',
- sendFileBox: '寄件箱',
- ok:'確定',
- receiveFileBox: '收件箱',
- textDetail: '文本詳情',
- copy: '複 製',
- close: '關 閉',
- delete: '刪 除',
- download: '點 擊 下 載',
- detail: '查 看 詳 情',
- copyLink: '複製連結',
- },
- admin: {
- about: {
- source1: '本項目開源於Github:',
- source2: 'FileCodeBox'
- },
- settings: {
- name: '網站名稱',
- description: '網站描述',
- uploadlimit: '上傳限制',
- explain: '界面說明',
- errorlimit: '錯誤限制',
- keywords: '關鍵詞',
- themeSelect: 'Theme選擇',
- notify_title: '通知標題',
- notify_content: '通知內容',
- background: '背景圖片',
- max_save_seconds: '最長保存',
- maxSaveSecondsNote: '最長保存時間,單位:(秒),默認為0則為7天',
- admin_token: '管理密碼',
- uploadSize: '文件大小',
- expireStyle: '過期方式',
- uploadSizeNote: '最大文件大小,單位:(Bytes),1mb=1 * 1024 * 1024',
- showAdmin: {
- open: '開啟',
- close: '關閉',
- note: '是否在頁面底部顯示後臺入口',
- },
- openUpload: {
- title: '開啟上傳',
- open: '開啟遊客上傳',
- close: '關閉遊客上傳',
- note: '關閉之後需要登錄後臺方可上傳',
- },
- file_storage: {
- title: '存儲引擎',
- local: '本地存儲',
- s3: 'S3存儲',
- note: '更新後需要重啟FileCodeBox',
- },
- mei: '每',
- minute: '分鐘',
- upload: '上傳',
- files: '個文件',
- allow: '允許',
- errors: '次錯誤',
- save: '保存',
- saveSuccess: '保存成功',
- },
- fileView: {
- code: '取件碼',
- prefix: '文件前綴',
- suffix: '文件後綴',
- text: '文本',
- used_count: '已使用次數',
- expired_count: '可用次數',
- size: '文件大小',
- expired_at: '過期時間',
- file_path: '文件路徑',
- action: '操作',
- delete: '刪除',
- delete_success: '刪除成功',
- forever: '永久有效',
- unlimited_count: '不限次數',
- download: '下載',
- download_fail: '文件保存失敗,請稍後再試~',
- },
- menu: {
- fileManage: '文件管理',
- systemSetting: '系統設置',
- about: '關於我們',
- color: '顏色模式',
- send: '寄件',
- local:'本地文件',
- receive: '收件',
- signout: '退出登錄',
- },
- login: {
- managePassword: '管理密碼',
- passwordNotEmpty: '密碼不能為空',
- login: '登 錄',
- loginSuccess: '登錄成功',
- loginError: '登錄失敗',
- },local: {
- Name: '文件',
- Expire: '過期',
- Cancel: '取消',
- Confirm: '確定',
- },
- },
- msg:{
- fileOverSize: '文件過大',
- fileUploadFail: '上傳失敗',
- fileUploadSuccess: '上傳成功',
- uploadClose: '本站已關閉遊客上傳',
- }
-};
\ No newline at end of file
diff --git a/fcb-fronted/src/main.ts b/fcb-fronted/src/main.ts
deleted file mode 100644
index 45e4695..0000000
--- a/fcb-fronted/src/main.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import './assets/main.css'
-import 'element-plus/dist/index.css'
-import 'element-plus/theme-chalk/dark/css-vars.css'
-import { createApp } from 'vue'
-import { createPinia } from 'pinia'
-import App from './App.vue'
-import router from './router'
-import i18n from "./locals/i18n";
-
-const app = createApp(App)
-
-app.use(createPinia())
-app.use(i18n)
-app.use(router)
-app.mount('#app')
diff --git a/fcb-fronted/src/router/index.ts b/fcb-fronted/src/router/index.ts
deleted file mode 100644
index d442575..0000000
--- a/fcb-fronted/src/router/index.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import { createRouter, createWebHashHistory } from 'vue-router';
-
-const router = createRouter({
- history: createWebHashHistory(import.meta.env.BASE_URL),
- routes: [
- {
- path: '/',
- name: 'home',
- component: () => import('@/views/Share/HomeView.vue'),
- },
- {
- path: '/send',
- name: 'send',
- component: () => import('@/views/Share/SendView.vue'),
- },
- {
- path: '/admin',
- name: 'admin',
- component: () => import('@/views/Admin/AdminView.vue'),
- children:[
- {
- path: '',
- name: 'file',
- component: () => import('@/views/Admin/FileView.vue'),
- },
- {
- path: 'setting',
- name: 'setting',
- component: () => import('@/views/Admin/SettingView.vue'),
- },
- {
- path: 'local',
- name: 'local',
- component: () => import('@/views/Admin/LocalView.vue'),
- },
- {
- path: 'about',
- name: 'about',
- component: () => import('@/views/Admin/AboutView.vue'),
- },
- ]
- }
- ],
-});
-
-export default router;
diff --git a/fcb-fronted/src/stores/adminData.ts b/fcb-fronted/src/stores/adminData.ts
deleted file mode 100644
index aeb9b47..0000000
--- a/fcb-fronted/src/stores/adminData.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineStore } from 'pinia';
-import {ref} from "vue";
-
-export const useAdminData = defineStore('adminData', () => {
- const adminPassword = ref(localStorage.getItem('adminPassword') || '');
- const isAdmin = ref(!!localStorage.getItem('adminPassword'));
- function updateAdminPwd(pwd: string) {
- adminPassword.value = pwd;
- isAdmin.value = true;
- localStorage.setItem('adminPassword', pwd);
- }
- return { adminPassword,updateAdminPwd,isAdmin };
-});
diff --git a/fcb-fronted/src/stores/config.ts b/fcb-fronted/src/stores/config.ts
deleted file mode 100644
index 94c2b6e..0000000
--- a/fcb-fronted/src/stores/config.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { defineStore } from 'pinia';
-import {ref} from "vue";
-
-export const useConfigStore = defineStore('config', () => {
- const config:any = ref(JSON.parse(localStorage.getItem('config') || '{}') || {}); // 配置
- return { config };
-});
diff --git a/fcb-fronted/src/stores/fileBox.ts b/fcb-fronted/src/stores/fileBox.ts
deleted file mode 100644
index 736299d..0000000
--- a/fcb-fronted/src/stores/fileBox.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { defineStore } from 'pinia';
-import {ref} from "vue";
-
-export const useFileBoxStore = defineStore('fileBox', () => {
- const showFileBox = ref(false);
- return { showFileBox };
-});
diff --git a/fcb-fronted/src/stores/fileData.ts b/fcb-fronted/src/stores/fileData.ts
deleted file mode 100644
index ba672e4..0000000
--- a/fcb-fronted/src/stores/fileData.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { defineStore } from 'pinia';
-import {reactive} from "vue";
-
-export const useFileDataStore = defineStore('fileData', () => {
- const receiveData = reactive(JSON.parse(localStorage.getItem('receiveData')||'[]') || []); // 接收的数据
- const shareData = reactive(JSON.parse(localStorage.getItem('shareData')||'[]') || []); // 接收的数据
- function save() {
- localStorage.setItem('receiveData', JSON.stringify(receiveData));
- localStorage.setItem('shareData', JSON.stringify(shareData));
- }
- function addReceiveData(data:any) {
- receiveData.unshift(data);
- save();
- }
-
- function addShareData(data:any) {
- shareData.unshift(data);
- save();
- }
-
- function deleteReceiveData(index: number) {
- receiveData.splice(index, 1);
- save();
- }
-
- function deleteShareData(index: number) {
- shareData.splice(index, 1);
- save();
- }
- return { receiveData, shareData, save, addShareData, addReceiveData, deleteReceiveData, deleteShareData };
-});
\ No newline at end of file
diff --git a/fcb-fronted/src/utils/request.ts b/fcb-fronted/src/utils/request.ts
deleted file mode 100644
index 91d8274..0000000
--- a/fcb-fronted/src/utils/request.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-// @ts-ignore
-import axios from "axios";
-import { ElMessage } from "element-plus";
-const instance = axios.create({
- baseURL: import.meta.env.DEV ? "http://localhost:12345" : "/",
- timeout: 6000000,
-});
-instance.interceptors.request.use(
- (config: any) => {
- config.headers= {
- 'Authorization': 'Bearer '+ localStorage.getItem('adminPassword') || '',
- }
- return config;
- });
-instance.interceptors.response.use(
- (response:any) => {
- if (response.status === 200 && response.config.url === '/admin/file/download') {
- return response;
- }
- if (response.data.code === 200) {
- return response.data;
- } else {
- ElMessage.error(response.data.detail);
- return Promise.reject(response.data);
- }
- }, (error:any) => {
- localStorage.clear()
- ElMessage.error(error.response.data.detail);
- return Promise.reject(error);
- });
-
-export const request = instance;
diff --git a/fcb-fronted/src/utils/timestamp-format.ts b/fcb-fronted/src/utils/timestamp-format.ts
deleted file mode 100644
index 24758e0..0000000
--- a/fcb-fronted/src/utils/timestamp-format.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-export function formatTimestamp(timestamp: string): string {
- const date = new Date(timestamp);
- const year = date.getFullYear();
- const month = (date.getMonth() + 1).toString().padStart(2, '0');
- const day = date.getDate().toString().padStart(2, '0');
- const hours = date.getHours().toString().padStart(2, '0');
- const minutes = date.getMinutes().toString().padStart(2, '0');
- const seconds = date.getSeconds().toString().padStart(2, '0');
- return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
-}
diff --git a/fcb-fronted/src/views/Admin/AboutView.vue b/fcb-fronted/src/views/Admin/AboutView.vue
deleted file mode 100644
index bc7ad57..0000000
--- a/fcb-fronted/src/views/Admin/AboutView.vue
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
- {{ t('admin.about.source1') }}
-
- {{ t('admin.about.source2') }}
-
-
-
-
-
\ No newline at end of file
diff --git a/fcb-fronted/src/views/Admin/AdminView.vue b/fcb-fronted/src/views/Admin/AdminView.vue
deleted file mode 100644
index 35051fa..0000000
--- a/fcb-fronted/src/views/Admin/AdminView.vue
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
- {{menu.name}}
- {{ t('admin.menu.color') }}
- {{ t('admin.menu.signout') }}
-
-
-
-
-
-
-
-
-
-
- {{ t('admin.login.login') }}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/fcb-fronted/src/views/Admin/FileView.vue b/fcb-fronted/src/views/Admin/FileView.vue
deleted file mode 100644
index d8ff238..0000000
--- a/fcb-fronted/src/views/Admin/FileView.vue
+++ /dev/null
@@ -1,147 +0,0 @@
-
-
-
-
-
-
-
-
- {{ scope.row.text }}
-
-
-
-
-
- {{ scope.row.expired_count > -1 ? scope.row.expired_count : t('admin.fileView.unlimited_count') }}
-
-
-
-
- {{ Math.round(scope.row.size/1024/1024*100)/100 }}MB
-
-
-
-
- {{ scope.row.expired_at ? formatTimestamp(scope.row.expired_at) : t('admin.fileView.forever') }}
-
-
-
-
-
- {{ t('admin.fileView.action')}}
-
-
- {{ t('admin.fileView.delete') }}
- {{ t('admin.fileView.download') }}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/fcb-fronted/src/views/Admin/LocalView.vue b/fcb-fronted/src/views/Admin/LocalView.vue
deleted file mode 100644
index 799e402..0000000
--- a/fcb-fronted/src/views/Admin/LocalView.vue
+++ /dev/null
@@ -1,155 +0,0 @@
-
-
-
-
-
-
{{ file.file }}
-
{{ file.ctime }}
-
- 分享
- 删除
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{t('send.expireValue.day')}}
- {{t('send.expireValue.hour')}}
- {{t('send.expireValue.minute')}}
- 👌
- {{t('send.expireValue.count')}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/fcb-fronted/src/views/Admin/SettingView.vue b/fcb-fronted/src/views/Admin/SettingView.vue
deleted file mode 100644
index d9c4d08..0000000
--- a/fcb-fronted/src/views/Admin/SettingView.vue
+++ /dev/null
@@ -1,219 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Opacity:
-
-
-
-
-
-
-
- {{ t('admin.settings.showAdmin.note') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bytes:{{ t('admin.settings.uploadSizeNote') }}
-
-
-
- Seconds:{{t('admin.settings.maxSaveSecondsNote')}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ t('admin.settings.openUpload.note') }}
-
-
-
-
-
-
- {{ t('admin.settings.file_storage.note') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ t('admin.settings.mei') }}
-
- {{ t('admin.settings.minute') }}
-
-
- {{ t('admin.settings.upload') }}
-
- {{ t('admin.settings.files') }}
-
-
-
-
- {{ t('admin.settings.mei') }}
-
- {{ t('admin.settings.minute') }}
-
-
- {{ t('admin.settings.allow') }}
-
- {{ t('admin.settings.errors') }}
-
-
-
- {{ t('admin.settings.save') }}
-
-
-
-
-
\ No newline at end of file
diff --git a/fcb-fronted/src/views/Share/HomeView.vue b/fcb-fronted/src/views/Share/HomeView.vue
deleted file mode 100644
index d5dfbab..0000000
--- a/fcb-fronted/src/views/Share/HomeView.vue
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- {{ i }}
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/fcb-fronted/src/views/Share/SendView.vue b/fcb-fronted/src/views/Share/SendView.vue
deleted file mode 100644
index e0e0dea..0000000
--- a/fcb-fronted/src/views/Share/SendView.vue
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{t('send.expireValue.day')}}
- {{t('send.expireValue.hour')}}
- {{t('send.expireValue.minute')}}
- 👌
- {{t('send.expireValue.count')}}
-
-
-
-
-
- {{t('send.fileType.file')}}
-
-
- {{t('send.fileType.text')}}
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/fcb-fronted/tsconfig.app.json b/fcb-fronted/tsconfig.app.json
deleted file mode 100644
index 3e5b621..0000000
--- a/fcb-fronted/tsconfig.app.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "extends": "@vue/tsconfig/tsconfig.dom.json",
- "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
- "exclude": ["src/**/__tests__/*"],
- "compilerOptions": {
- "composite": true,
- "baseUrl": ".",
- "paths": {
- "@/*": ["./src/*"]
- }
- }
-}
diff --git a/fcb-fronted/tsconfig.json b/fcb-fronted/tsconfig.json
deleted file mode 100644
index 66b5e57..0000000
--- a/fcb-fronted/tsconfig.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "files": [],
- "references": [
- {
- "path": "./tsconfig.node.json"
- },
- {
- "path": "./tsconfig.app.json"
- }
- ]
-}
diff --git a/fcb-fronted/tsconfig.node.json b/fcb-fronted/tsconfig.node.json
deleted file mode 100644
index dee96be..0000000
--- a/fcb-fronted/tsconfig.node.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "extends": "@tsconfig/node18/tsconfig.json",
- "include": [
- "vite.config.*",
- "vitest.config.*",
- "cypress.config.*",
- "nightwatch.conf.*",
- "playwright.config.*"
- ],
- "compilerOptions": {
- "composite": true,
- "module": "ESNext",
- "moduleResolution": "Bundler",
- "types": ["node"]
- }
-}
diff --git a/fcb-fronted/vite.config.ts b/fcb-fronted/vite.config.ts
deleted file mode 100644
index a464a84..0000000
--- a/fcb-fronted/vite.config.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { fileURLToPath, URL } from 'node:url'
-
-import { defineConfig } from 'vite'
-import vue from '@vitejs/plugin-vue'
-import AutoImport from 'unplugin-auto-import/vite'
-import Components from 'unplugin-vue-components/vite'
-import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
-
-export default defineConfig({
- plugins: [
- vue(),
- AutoImport({
- resolvers: [ElementPlusResolver()],
- }),
- Components({
- resolvers: [ElementPlusResolver()],
- }),
- ],
- resolve: {
- alias: {
- '@': fileURLToPath(new URL('./src', import.meta.url))
- }
- }
-})
diff --git a/fcb-fronted/yarn.lock b/fcb-fronted/yarn.lock
deleted file mode 100644
index 0f0f0fa..0000000
--- a/fcb-fronted/yarn.lock
+++ /dev/null
@@ -1,2919 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@antfu/utils@^0.7.10":
- version "0.7.10"
- resolved "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.10.tgz#ae829f170158e297a9b6a28f161a8e487d00814d"
- integrity sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==
-
-"@babel/parser@^7.24.7":
- version "7.25.0"
- resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.0.tgz#9fdc9237504d797b6e7b8f66e78ea7f570d256ad"
- integrity sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==
-
-"@ctrl/tinycolor@^3.4.1":
- version "3.6.1"
- resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz#b6c75a56a1947cc916ea058772d666a2c8932f31"
- integrity sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==
-
-"@element-plus/icons-vue@^2.3.1":
- version "2.3.1"
- resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz#1f635ad5fdd5c85ed936481525570e82b5a8307a"
- integrity sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==
-
-"@esbuild/aix-ppc64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f"
- integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
-
-"@esbuild/android-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052"
- integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
-
-"@esbuild/android-arm@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28"
- integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
-
-"@esbuild/android-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e"
- integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
-
-"@esbuild/darwin-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a"
- integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
-
-"@esbuild/darwin-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22"
- integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
-
-"@esbuild/freebsd-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e"
- integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
-
-"@esbuild/freebsd-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261"
- integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
-
-"@esbuild/linux-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b"
- integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
-
-"@esbuild/linux-arm@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9"
- integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
-
-"@esbuild/linux-ia32@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2"
- integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
-
-"@esbuild/linux-loong64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df"
- integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
-
-"@esbuild/linux-mips64el@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe"
- integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
-
-"@esbuild/linux-ppc64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4"
- integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
-
-"@esbuild/linux-riscv64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc"
- integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
-
-"@esbuild/linux-s390x@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de"
- integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
-
-"@esbuild/linux-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0"
- integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
-
-"@esbuild/netbsd-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047"
- integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
-
-"@esbuild/openbsd-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70"
- integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
-
-"@esbuild/sunos-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b"
- integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
-
-"@esbuild/win32-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d"
- integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
-
-"@esbuild/win32-ia32@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b"
- integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
-
-"@esbuild/win32-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c"
- integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
-
-"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
- version "4.4.0"
- resolved "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
- integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
- dependencies:
- eslint-visitor-keys "^3.3.0"
-
-"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae"
- integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==
-
-"@eslint/config-array@^0.18.0":
- version "0.18.0"
- resolved "https://registry.npmmirror.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d"
- integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==
- dependencies:
- "@eslint/object-schema" "^2.1.4"
- debug "^4.3.1"
- minimatch "^3.1.2"
-
-"@eslint/core@^0.6.0":
- version "0.6.0"
- resolved "https://registry.npmmirror.com/@eslint/core/-/core-0.6.0.tgz#9930b5ba24c406d67a1760e94cdbac616a6eb674"
- integrity sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==
-
-"@eslint/eslintrc@^3.1.0":
- version "3.1.0"
- resolved "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6"
- integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==
- dependencies:
- ajv "^6.12.4"
- debug "^4.3.2"
- espree "^10.0.1"
- globals "^14.0.0"
- ignore "^5.2.0"
- import-fresh "^3.2.1"
- js-yaml "^4.1.0"
- minimatch "^3.1.2"
- strip-json-comments "^3.1.1"
-
-"@eslint/js@9.11.1":
- version "9.11.1"
- resolved "https://registry.npmmirror.com/@eslint/js/-/js-9.11.1.tgz#8bcb37436f9854b3d9a561440daf916acd940986"
- integrity sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==
-
-"@eslint/object-schema@^2.1.4":
- version "2.1.4"
- resolved "https://registry.npmmirror.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843"
- integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==
-
-"@eslint/plugin-kit@^0.2.0":
- version "0.2.0"
- resolved "https://registry.npmmirror.com/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz#8712dccae365d24e9eeecb7b346f85e750ba343d"
- integrity sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==
- dependencies:
- levn "^0.4.1"
-
-"@floating-ui/core@^1.6.0":
- version "1.6.8"
- resolved "https://registry.npmmirror.com/@floating-ui/core/-/core-1.6.8.tgz#aa43561be075815879305965020f492cdb43da12"
- integrity sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==
- dependencies:
- "@floating-ui/utils" "^0.2.8"
-
-"@floating-ui/dom@^1.0.1":
- version "1.6.11"
- resolved "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.6.11.tgz#8631857838d34ee5712339eb7cbdfb8ad34da723"
- integrity sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==
- dependencies:
- "@floating-ui/core" "^1.6.0"
- "@floating-ui/utils" "^0.2.8"
-
-"@floating-ui/utils@^0.2.8":
- version "0.2.8"
- resolved "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62"
- integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==
-
-"@humanwhocodes/module-importer@^1.0.1":
- version "1.0.1"
- resolved "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
- integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
-
-"@humanwhocodes/retry@^0.3.0":
- version "0.3.0"
- resolved "https://registry.npmmirror.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570"
- integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==
-
-"@intlify/core-base@9.13.1":
- version "9.13.1"
- resolved "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.13.1.tgz#bd1f38e665095993ef9b67aeeb794f3cabcb515d"
- integrity sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==
- dependencies:
- "@intlify/message-compiler" "9.13.1"
- "@intlify/shared" "9.13.1"
-
-"@intlify/message-compiler@9.13.1":
- version "9.13.1"
- resolved "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz#ff8129badf77db3fb648b8d3cceee87c8033ed0a"
- integrity sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==
- dependencies:
- "@intlify/shared" "9.13.1"
- source-map-js "^1.0.2"
-
-"@intlify/shared@9.13.1":
- version "9.13.1"
- resolved "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz#202741d11ece1a9c7480bfd3f27afcf9cb8f72e4"
- integrity sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==
-
-"@jridgewell/sourcemap-codec@^1.4.15":
- version "1.5.0"
- resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
- integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
-
-"@nodelib/fs.scandir@2.1.5":
- version "2.1.5"
- resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
- integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
- dependencies:
- "@nodelib/fs.stat" "2.0.5"
- run-parallel "^1.1.9"
-
-"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
- version "2.0.5"
- resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
- integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
-
-"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
- version "1.2.8"
- resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
- integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
- dependencies:
- "@nodelib/fs.scandir" "2.1.5"
- fastq "^1.6.0"
-
-"@pkgr/core@^0.1.0":
- version "0.1.1"
- resolved "https://registry.npmmirror.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31"
- integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==
-
-"@popperjs/core@npm:@sxzz/popperjs-es@^2.11.7":
- version "2.11.7"
- resolved "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz#a7f69e3665d3da9b115f9e71671dae1b97e13671"
- integrity sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==
-
-"@rollup/pluginutils@^5.1.0":
- version "5.1.0"
- resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0"
- integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==
- dependencies:
- "@types/estree" "^1.0.0"
- estree-walker "^2.0.2"
- picomatch "^2.3.1"
-
-"@rollup/rollup-android-arm-eabi@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.1.tgz#7746deb85e4a8fb54fbfda8ac5c102692f102476"
- integrity sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww==
-
-"@rollup/rollup-android-arm64@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.1.tgz#93de4d867709d3313794723b5afd91e1e174f906"
- integrity sha512-thFUbkHteM20BGShD6P08aungq4irbIZKUNbG70LN8RkO7YztcGPiKTTGZS7Kw+x5h8hOXs0i4OaHwFxlpQN6A==
-
-"@rollup/rollup-darwin-arm64@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.1.tgz#e41e6a81673260ab196e0f59462b9940a6ac03cd"
- integrity sha512-8o6eqeFZzVLia2hKPUZk4jdE3zW7LCcZr+MD18tXkgBBid3lssGVAYuox8x6YHoEPDdDa9ixTaStcmx88lio5Q==
-
-"@rollup/rollup-darwin-x64@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.1.tgz#2b0a0aef6e8c5317d494cfc9076d7a16b099bdcb"
- integrity sha512-4T42heKsnbjkn7ovYiAdDVRRWZLU9Kmhdt6HafZxFcUdpjlBlxj4wDrt1yFWLk7G4+E+8p2C9tcmSu0KA6auGA==
-
-"@rollup/rollup-linux-arm-gnueabihf@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.1.tgz#e22319deb5367384ef315e66bc6de80d2bf2b3ae"
- integrity sha512-MXg1xp+e5GhZ3Vit1gGEyoC+dyQUBy2JgVQ+3hUrD9wZMkUw/ywgkpK7oZgnB6kPpGrxJ41clkPPnsknuD6M2Q==
-
-"@rollup/rollup-linux-arm-musleabihf@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.1.tgz#d5dd68f5d7ae21b345a5c87208c94e5c813f54b8"
- integrity sha512-DZNLwIY4ftPSRVkJEaxYkq7u2zel7aah57HESuNkUnz+3bZHxwkCUkrfS2IWC1sxK6F2QNIR0Qr/YXw7nkF3Pw==
-
-"@rollup/rollup-linux-arm64-gnu@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.1.tgz#1703d3a418d33f8f025acaf93f39ca1efcd5b645"
- integrity sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw==
-
-"@rollup/rollup-linux-arm64-musl@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.1.tgz#3f59c2c6e60f75ce8b1090bd841c555e3bb01f0e"
- integrity sha512-89tFWqxfxLLHkAthAcrTs9etAoBFRduNfWdl2xUs/yLV+7XDrJ5yuXMHptNqf1Zw0UCA3cAutkAiAokYCkaPtw==
-
-"@rollup/rollup-linux-powerpc64le-gnu@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.1.tgz#3f99a0921596a6f539121a312df29af52a205f15"
- integrity sha512-PromGeV50sq+YfaisG8W3fd+Cl6mnOOiNv2qKKqKCpiiEke2KiKVyDqG/Mb9GWKbYMHj5a01fq/qlUR28PFhCQ==
-
-"@rollup/rollup-linux-riscv64-gnu@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.1.tgz#c08fb3e629d50d2eac31329347cfc559a1cf81d1"
- integrity sha512-/1BmHYh+iz0cNCP0oHCuF8CSiNj0JOGf0jRlSo3L/FAyZyG2rGBuKpkZVH9YF+x58r1jgWxvm1aRg3DHrLDt6A==
-
-"@rollup/rollup-linux-s390x-gnu@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.1.tgz#173722cd745779d730d4b24d21386185e0e12de8"
- integrity sha512-0cYP5rGkQWRZKy9/HtsWVStLXzCF3cCBTRI+qRL8Z+wkYlqN7zrSYm6FuY5Kd5ysS5aH0q5lVgb/WbG4jqXN1Q==
-
-"@rollup/rollup-linux-x64-gnu@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.1.tgz#0af2b6541ab0f4954d2c4f96bcdc7947420dd28c"
- integrity sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q==
-
-"@rollup/rollup-linux-x64-musl@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.1.tgz#f973f9552744764b221128f7c3629222216ace69"
- integrity sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q==
-
-"@rollup/rollup-win32-arm64-msvc@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.1.tgz#21ac5ed84d914bc31821fec3dd909f7257cfb17b"
- integrity sha512-88brja2vldW/76jWATlBqHEoGjJLRnP0WOEKAUbMcXaAZnemNhlAHSyj4jIwMoP2T750LE9lblvD4e2jXleZsA==
-
-"@rollup/rollup-win32-ia32-msvc@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.1.tgz#0cfe740063b35dcd5a62c4e243226631a846ce11"
- integrity sha512-LdxxcqRVSXi6k6JUrTah1rHuaupoeuiv38du8Mt4r4IPer3kwlTo+RuvfE8KzZ/tL6BhaPlzJ3835i6CxrFIRQ==
-
-"@rollup/rollup-win32-x64-msvc@4.19.1":
- version "4.19.1"
- resolved "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.1.tgz#5f2c40d3f1b53ede80fb4e6964f840c0f8936832"
- integrity sha512-2bIrL28PcK3YCqD9anGxDxamxdiJAxA+l7fWIwM5o8UqNy1t3d1NdAweO2XhA0KTDJ5aH1FsuiT5+7VhtHliXg==
-
-"@rushstack/eslint-patch@^1.10.4":
- version "1.10.4"
- resolved "https://registry.npmmirror.com/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz#427d5549943a9c6fce808e39ea64dbe60d4047f1"
- integrity sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==
-
-"@traptitech/markdown-it-katex@^3.6.0":
- version "3.6.0"
- resolved "https://registry.npmmirror.com/@traptitech/markdown-it-katex/-/markdown-it-katex-3.6.0.tgz#6f2605668ecf56a50aa2fadce1fc76f90dc82529"
- integrity sha512-CnJzTWxsgLGXFdSrWRaGz7GZ1kUUi8g3E9HzJmeveX1YwVJavrKYqysktfHZQsujdnRqV5O7g8FPKEA/aeTkOQ==
- dependencies:
- katex "^0.16.0"
-
-"@tsconfig/node18@^18.2.4":
- version "18.2.4"
- resolved "https://registry.npmmirror.com/@tsconfig/node18/-/node18-18.2.4.tgz#094efbdd70f697d37c09f34067bf41bc4a828ae3"
- integrity sha512-5xxU8vVs9/FNcvm3gE07fPbn9tl6tqGGWA9tSlwsUEkBxtRnTsNmwrV8gasZ9F/EobaSv9+nu8AxUKccw77JpQ==
-
-"@types/estree@1.0.5", "@types/estree@^1.0.0":
- version "1.0.5"
- resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
- integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
-
-"@types/estree@^1.0.6":
- version "1.0.6"
- resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
- integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
-
-"@types/json-schema@^7.0.15":
- version "7.0.15"
- resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
- integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
-
-"@types/linkify-it@^5":
- version "5.0.0"
- resolved "https://registry.npmmirror.com/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76"
- integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==
-
-"@types/lodash-es@^4.17.6":
- version "4.17.12"
- resolved "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz#65f6d1e5f80539aa7cfbfc962de5def0cf4f341b"
- integrity sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==
- dependencies:
- "@types/lodash" "*"
-
-"@types/lodash@*", "@types/lodash@^4.14.182":
- version "4.17.9"
- resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.9.tgz#0dc4902c229f6b8e2ac5456522104d7b1a230290"
- integrity sha512-w9iWudx1XWOHW5lQRS9iKpK/XuRhnN+0T7HvdCCd802FYkT1AMTnxndJHGrNJwRoRHkslGr4S29tjm1cT7x/7w==
-
-"@types/markdown-it-link-attributes@^3.0.5":
- version "3.0.5"
- resolved "https://registry.npmmirror.com/@types/markdown-it-link-attributes/-/markdown-it-link-attributes-3.0.5.tgz#521179990cd2ced55761d9b8c93e502b679df329"
- integrity sha512-VZ2BGN3ywUg7mBD8W6PwR8ChpOxaQSBDbLqPgvNI+uIra3zY2af1eG/3XzWTKjEraTWskMKnZqZd6m1fDF67Bg==
- dependencies:
- "@types/markdown-it" "*"
-
-"@types/markdown-it@*", "@types/markdown-it@^14.1.2":
- version "14.1.2"
- resolved "https://registry.npmmirror.com/@types/markdown-it/-/markdown-it-14.1.2.tgz#57f2532a0800067d9b934f3521429a2e8bfb4c61"
- integrity sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==
- dependencies:
- "@types/linkify-it" "^5"
- "@types/mdurl" "^2"
-
-"@types/mdurl@^2":
- version "2.0.0"
- resolved "https://registry.npmmirror.com/@types/mdurl/-/mdurl-2.0.0.tgz#d43878b5b20222682163ae6f897b20447233bdfd"
- integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==
-
-"@types/node@^22.0.0":
- version "22.0.0"
- resolved "https://registry.npmmirror.com/@types/node/-/node-22.0.0.tgz#04862a2a71e62264426083abe1e27e87cac05a30"
- integrity sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==
- dependencies:
- undici-types "~6.11.1"
-
-"@types/web-bluetooth@^0.0.16":
- version "0.0.16"
- resolved "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz#1d12873a8e49567371f2a75fe3e7f7edca6662d8"
- integrity sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==
-
-"@typescript-eslint/eslint-plugin@^7.1.1":
- version "7.17.0"
- resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.17.0.tgz#c8ed1af1ad2928ede5cdd207f7e3090499e1f77b"
- integrity sha512-pyiDhEuLM3PuANxH7uNYan1AaFs5XE0zw1hq69JBvGvE7gSuEoQl1ydtEe/XQeoC3GQxLXyOVa5kNOATgM638A==
- dependencies:
- "@eslint-community/regexpp" "^4.10.0"
- "@typescript-eslint/scope-manager" "7.17.0"
- "@typescript-eslint/type-utils" "7.17.0"
- "@typescript-eslint/utils" "7.17.0"
- "@typescript-eslint/visitor-keys" "7.17.0"
- graphemer "^1.4.0"
- ignore "^5.3.1"
- natural-compare "^1.4.0"
- ts-api-utils "^1.3.0"
-
-"@typescript-eslint/parser@^7.1.1":
- version "7.17.0"
- resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-7.17.0.tgz#be8e32c159190cd40a305a2121220eadea5a88e7"
- integrity sha512-puiYfGeg5Ydop8eusb/Hy1k7QmOU6X3nvsqCgzrB2K4qMavK//21+PzNE8qeECgNOIoertJPUC1SpegHDI515A==
- dependencies:
- "@typescript-eslint/scope-manager" "7.17.0"
- "@typescript-eslint/types" "7.17.0"
- "@typescript-eslint/typescript-estree" "7.17.0"
- "@typescript-eslint/visitor-keys" "7.17.0"
- debug "^4.3.4"
-
-"@typescript-eslint/scope-manager@7.17.0":
- version "7.17.0"
- resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-7.17.0.tgz#e072d0f914662a7bfd6c058165e3c2b35ea26b9d"
- integrity sha512-0P2jTTqyxWp9HiKLu/Vemr2Rg1Xb5B7uHItdVZ6iAenXmPo4SZ86yOPCJwMqpCyaMiEHTNqizHfsbmCFT1x9SA==
- dependencies:
- "@typescript-eslint/types" "7.17.0"
- "@typescript-eslint/visitor-keys" "7.17.0"
-
-"@typescript-eslint/type-utils@7.17.0":
- version "7.17.0"
- resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-7.17.0.tgz#c5da78feb134c9c9978cbe89e2b1a589ed22091a"
- integrity sha512-XD3aaBt+orgkM/7Cei0XNEm1vwUxQ958AOLALzPlbPqb8C1G8PZK85tND7Jpe69Wualri81PLU+Zc48GVKIMMA==
- dependencies:
- "@typescript-eslint/typescript-estree" "7.17.0"
- "@typescript-eslint/utils" "7.17.0"
- debug "^4.3.4"
- ts-api-utils "^1.3.0"
-
-"@typescript-eslint/types@7.17.0":
- version "7.17.0"
- resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-7.17.0.tgz#7ce8185bdf06bc3494e73d143dbf3293111b9cff"
- integrity sha512-a29Ir0EbyKTKHnZWbNsrc/gqfIBqYPwj3F2M+jWE/9bqfEHg0AMtXzkbUkOG6QgEScxh2+Pz9OXe11jHDnHR7A==
-
-"@typescript-eslint/typescript-estree@7.17.0":
- version "7.17.0"
- resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.17.0.tgz#dcab3fea4c07482329dd6107d3c6480e228e4130"
- integrity sha512-72I3TGq93t2GoSBWI093wmKo0n6/b7O4j9o8U+f65TVD0FS6bI2180X5eGEr8MA8PhKMvYe9myZJquUT2JkCZw==
- dependencies:
- "@typescript-eslint/types" "7.17.0"
- "@typescript-eslint/visitor-keys" "7.17.0"
- debug "^4.3.4"
- globby "^11.1.0"
- is-glob "^4.0.3"
- minimatch "^9.0.4"
- semver "^7.6.0"
- ts-api-utils "^1.3.0"
-
-"@typescript-eslint/utils@7.17.0":
- version "7.17.0"
- resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-7.17.0.tgz#815cd85b9001845d41b699b0ce4f92d6dfb84902"
- integrity sha512-r+JFlm5NdB+JXc7aWWZ3fKSm1gn0pkswEwIYsrGPdsT2GjsRATAKXiNtp3vgAAO1xZhX8alIOEQnNMl3kbTgJw==
- dependencies:
- "@eslint-community/eslint-utils" "^4.4.0"
- "@typescript-eslint/scope-manager" "7.17.0"
- "@typescript-eslint/types" "7.17.0"
- "@typescript-eslint/typescript-estree" "7.17.0"
-
-"@typescript-eslint/visitor-keys@7.17.0":
- version "7.17.0"
- resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.17.0.tgz#680465c734be30969e564b4647f38d6cdf49bfb0"
- integrity sha512-RVGC9UhPOCsfCdI9pU++K4nD7to+jTcMIbXTSOcrLqUEW6gF2pU1UUbYJKc9cvcRSK1UDeMJ7pdMxf4bhMpV/A==
- dependencies:
- "@typescript-eslint/types" "7.17.0"
- eslint-visitor-keys "^3.4.3"
-
-"@vitejs/plugin-vue@^5.1.1":
- version "5.1.1"
- resolved "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.1.1.tgz#bb9ddb0af012450edef4f5d65d5b3a3c7630864f"
- integrity sha512-sDckXxlHpMsjRQbAH9WanangrfrblsOd3pNifePs+FOHjJg1jfWq5L/P0PsBRndEt3nmdUnmvieP8ULDeX5AvA==
-
-"@volar/language-core@2.4.0-alpha.18", "@volar/language-core@~2.4.0-alpha.18":
- version "2.4.0-alpha.18"
- resolved "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.0-alpha.18.tgz#dafffd68ac07c26d69de16741187fd4c06bfa345"
- integrity sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==
- dependencies:
- "@volar/source-map" "2.4.0-alpha.18"
-
-"@volar/source-map@2.4.0-alpha.18":
- version "2.4.0-alpha.18"
- resolved "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.0-alpha.18.tgz#a2413932ff6b1821ae8efcbd9249d4da3f99f223"
- integrity sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==
-
-"@volar/typescript@~2.4.0-alpha.18":
- version "2.4.0-alpha.18"
- resolved "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.0-alpha.18.tgz#806aca9ce1bd7c48dc5fcd0fcf7f33bdd04e5b35"
- integrity sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==
- dependencies:
- "@volar/language-core" "2.4.0-alpha.18"
- path-browserify "^1.0.1"
- vscode-uri "^3.0.8"
-
-"@vue/compiler-core@3.4.34":
- version "3.4.34"
- resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.34.tgz#4e6af7a00927284f1f67571e2e1a8a6e93ee2d1f"
- integrity sha512-Z0izUf32+wAnQewjHu+pQf1yw00EGOmevl1kE+ljjjMe7oEfpQ+BI3/JNK7yMB4IrUsqLDmPecUrpj3mCP+yJQ==
- dependencies:
- "@babel/parser" "^7.24.7"
- "@vue/shared" "3.4.34"
- entities "^4.5.0"
- estree-walker "^2.0.2"
- source-map-js "^1.2.0"
-
-"@vue/compiler-dom@3.4.34", "@vue/compiler-dom@^3.4.0":
- version "3.4.34"
- resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.34.tgz#fd3b8df142b063c2cc0ec3e168b76b0d7774b78c"
- integrity sha512-3PUOTS1h5cskdOJMExCu2TInXuM0j60DRPpSCJDqOCupCfUZCJoyQmKtRmA8EgDNZ5kcEE7vketamRZfrEuVDw==
- dependencies:
- "@vue/compiler-core" "3.4.34"
- "@vue/shared" "3.4.34"
-
-"@vue/compiler-sfc@3.4.34":
- version "3.4.34"
- resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.34.tgz#9a892747f8f707183a592f2dbd359b0272749dc1"
- integrity sha512-x6lm0UrM03jjDXTPZgD9Ad8bIVD1ifWNit2EaWQIZB5CULr46+FbLQ5RpK7AXtDHGjx9rmvC7QRCTjsiGkAwRw==
- dependencies:
- "@babel/parser" "^7.24.7"
- "@vue/compiler-core" "3.4.34"
- "@vue/compiler-dom" "3.4.34"
- "@vue/compiler-ssr" "3.4.34"
- "@vue/shared" "3.4.34"
- estree-walker "^2.0.2"
- magic-string "^0.30.10"
- postcss "^8.4.39"
- source-map-js "^1.2.0"
-
-"@vue/compiler-ssr@3.4.34":
- version "3.4.34"
- resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.34.tgz#4fac491550ddc2d8733ebb58a9c3bfbe85aa7bce"
- integrity sha512-8TDBcLaTrFm5rnF+Qm4BlliaopJgqJ28Nsrc80qazynm5aJO+Emu7y0RWw34L8dNnTRdcVBpWzJxhGYzsoVu4g==
- dependencies:
- "@vue/compiler-dom" "3.4.34"
- "@vue/shared" "3.4.34"
-
-"@vue/compiler-vue2@^2.7.16":
- version "2.7.16"
- resolved "https://registry.npmmirror.com/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz#2ba837cbd3f1b33c2bc865fbe1a3b53fb611e249"
- integrity sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==
- dependencies:
- de-indent "^1.0.2"
- he "^1.2.0"
-
-"@vue/devtools-api@^6.5.0", "@vue/devtools-api@^6.5.1", "@vue/devtools-api@^6.6.3":
- version "6.6.3"
- resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.3.tgz#b23a588154cba8986bba82b6e1d0248bde3fd1a0"
- integrity sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==
-
-"@vue/eslint-config-prettier@^9.0.0":
- version "9.0.0"
- resolved "https://registry.npmmirror.com/@vue/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#f63394f8f7759d92b6ef3f3e1d30ff6b0c0b97c1"
- integrity sha512-z1ZIAAUS9pKzo/ANEfd2sO+v2IUalz7cM/cTLOZ7vRFOPk5/xuRKQteOu1DErFLAh/lYGXMVZ0IfYKlyInuDVg==
- dependencies:
- eslint-config-prettier "^9.0.0"
- eslint-plugin-prettier "^5.0.0"
-
-"@vue/eslint-config-typescript@^13.0.0":
- version "13.0.0"
- resolved "https://registry.npmmirror.com/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz#f5f3d986ace34a10f403921d5044831b89a1b679"
- integrity sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==
- dependencies:
- "@typescript-eslint/eslint-plugin" "^7.1.1"
- "@typescript-eslint/parser" "^7.1.1"
- vue-eslint-parser "^9.3.1"
-
-"@vue/language-core@2.0.29":
- version "2.0.29"
- resolved "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.0.29.tgz#19462d786cd7a1c21dbe575b46970a57094e0357"
- integrity sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==
- dependencies:
- "@volar/language-core" "~2.4.0-alpha.18"
- "@vue/compiler-dom" "^3.4.0"
- "@vue/compiler-vue2" "^2.7.16"
- "@vue/shared" "^3.4.0"
- computeds "^0.0.1"
- minimatch "^9.0.3"
- muggle-string "^0.4.1"
- path-browserify "^1.0.1"
-
-"@vue/reactivity@3.4.34":
- version "3.4.34"
- resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.4.34.tgz#388ec52f55a3fbe6f9332d5d993567a1886fdc76"
- integrity sha512-ua+Lo+wBRlBEX9TtgPOShE2JwIO7p6BTZ7t1KZVPoaBRfqbC7N3c8Mpzicx173fXxx5VXeU6ykiHo7WgLzJQDA==
- dependencies:
- "@vue/shared" "3.4.34"
-
-"@vue/runtime-core@3.4.34":
- version "3.4.34"
- resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.4.34.tgz#47d2ab89c796d7012be17e2bbec40cff001317d7"
- integrity sha512-PXhkiRPwcPGJ1BnyBZFI96GfInCVskd0HPNIAZn7i3YOmLbtbTZpB7/kDTwC1W7IqdGPkTVC63IS7J2nZs4Ebg==
- dependencies:
- "@vue/reactivity" "3.4.34"
- "@vue/shared" "3.4.34"
-
-"@vue/runtime-dom@3.4.34":
- version "3.4.34"
- resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.4.34.tgz#8a7f25647c3ac8d9fc2208fd5e06f70ba2dd6638"
- integrity sha512-dXqIe+RqFAK2Euak4UsvbIupalrhc67OuQKpD7HJ3W2fv8jlqvI7szfBCsAEcE8o/wyNpkloxB6J8viuF/E3gw==
- dependencies:
- "@vue/reactivity" "3.4.34"
- "@vue/runtime-core" "3.4.34"
- "@vue/shared" "3.4.34"
- csstype "^3.1.3"
-
-"@vue/server-renderer@3.4.34":
- version "3.4.34"
- resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.4.34.tgz#4b3a5bc6fb818aef9713e41fb78dece256dd933c"
- integrity sha512-GeyEUfMVRZMD/mZcNONEqg7MiU10QQ1DB3O/Qr6+8uXpbwdlmVgQ5Qs1/ZUAFX1X2UUtqMoGrDRbxdWfOJFT7Q==
- dependencies:
- "@vue/compiler-ssr" "3.4.34"
- "@vue/shared" "3.4.34"
-
-"@vue/shared@3.4.34", "@vue/shared@^3.4.0":
- version "3.4.34"
- resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.34.tgz#130858419e634a427ca82c36e1da75c66a39ba8e"
- integrity sha512-x5LmiRLpRsd9KTjAB8MPKf0CDPMcuItjP0gbNqFCIgL1I8iYp4zglhj9w9FPCdIbHG2M91RVeIbArFfFTz9I3A==
-
-"@vue/tsconfig@^0.5.1":
- version "0.5.1"
- resolved "https://registry.npmmirror.com/@vue/tsconfig/-/tsconfig-0.5.1.tgz#3124ec16cc0c7e04165b88dc091e6b97782fffa9"
- integrity sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==
-
-"@vueuse/core@^9.1.0":
- version "9.13.0"
- resolved "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz#2f69e66d1905c1e4eebc249a01759cf88ea00cf4"
- integrity sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==
- dependencies:
- "@types/web-bluetooth" "^0.0.16"
- "@vueuse/metadata" "9.13.0"
- "@vueuse/shared" "9.13.0"
- vue-demi "*"
-
-"@vueuse/metadata@9.13.0":
- version "9.13.0"
- resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz#bc25a6cdad1b1a93c36ce30191124da6520539ff"
- integrity sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==
-
-"@vueuse/shared@9.13.0":
- version "9.13.0"
- resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz#089ff4cc4e2e7a4015e57a8f32e4b39d096353b9"
- integrity sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==
- dependencies:
- vue-demi "*"
-
-acorn-jsx@^5.3.2:
- version "5.3.2"
- resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
- integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
-
-acorn@^8.11.3, acorn@^8.12.0, acorn@^8.12.1, acorn@^8.9.0:
- version "8.12.1"
- resolved "https://registry.npmmirror.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
- integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
-
-ajv@^6.12.4:
- version "6.12.6"
- resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
- integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
- dependencies:
- fast-deep-equal "^3.1.1"
- fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.4.1"
- uri-js "^4.2.2"
-
-ansi-regex@^5.0.1:
- version "5.0.1"
- resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
- integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
-
-ansi-styles@^3.2.1:
- version "3.2.1"
- resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
- integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
- dependencies:
- color-convert "^1.9.0"
-
-ansi-styles@^4.1.0:
- version "4.3.0"
- resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
- integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
- dependencies:
- color-convert "^2.0.1"
-
-anymatch@~3.1.2:
- version "3.1.3"
- resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
- integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
- dependencies:
- normalize-path "^3.0.0"
- picomatch "^2.0.4"
-
-argparse@^2.0.1:
- version "2.0.1"
- resolved "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
- integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
-
-array-buffer-byte-length@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f"
- integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==
- dependencies:
- call-bind "^1.0.5"
- is-array-buffer "^3.0.4"
-
-array-union@^2.1.0:
- version "2.1.0"
- resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
- integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
-
-arraybuffer.prototype.slice@^1.0.3:
- version "1.0.3"
- resolved "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6"
- integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==
- dependencies:
- array-buffer-byte-length "^1.0.1"
- call-bind "^1.0.5"
- define-properties "^1.2.1"
- es-abstract "^1.22.3"
- es-errors "^1.2.1"
- get-intrinsic "^1.2.3"
- is-array-buffer "^3.0.4"
- is-shared-array-buffer "^1.0.2"
-
-async-validator@^4.2.5:
- version "4.2.5"
- resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz#c96ea3332a521699d0afaaceed510a54656c6339"
- integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==
-
-asynckit@^0.4.0:
- version "0.4.0"
- resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
- integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
-
-available-typed-arrays@^1.0.7:
- version "1.0.7"
- resolved "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
- integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
- dependencies:
- possible-typed-array-names "^1.0.0"
-
-axios@^1.7.2:
- version "1.7.2"
- resolved "https://registry.npmmirror.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621"
- integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==
- dependencies:
- follow-redirects "^1.15.6"
- form-data "^4.0.0"
- proxy-from-env "^1.1.0"
-
-balanced-match@^1.0.0:
- version "1.0.2"
- resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
- integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-
-binary-extensions@^2.0.0:
- version "2.3.0"
- resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
- integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
-
-boolbase@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
- integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
-
-brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-brace-expansion@^2.0.1:
- version "2.0.1"
- resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
- integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
- dependencies:
- balanced-match "^1.0.0"
-
-braces@^3.0.3, braces@~3.0.2:
- version "3.0.3"
- resolved "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
- integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
- dependencies:
- fill-range "^7.1.1"
-
-call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
- version "1.0.7"
- resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
- integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
- dependencies:
- es-define-property "^1.0.0"
- es-errors "^1.3.0"
- function-bind "^1.1.2"
- get-intrinsic "^1.2.4"
- set-function-length "^1.2.1"
-
-callsites@^3.0.0:
- version "3.1.0"
- resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
- integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-
-chalk@^2.4.1:
- version "2.4.2"
- resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
- integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
- dependencies:
- ansi-styles "^3.2.1"
- escape-string-regexp "^1.0.5"
- supports-color "^5.3.0"
-
-chalk@^4.0.0:
- version "4.1.2"
- resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
- integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
- dependencies:
- ansi-styles "^4.1.0"
- supports-color "^7.1.0"
-
-"chokidar@>=3.0.0 <4.0.0", chokidar@^3.6.0:
- version "3.6.0"
- resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
- integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
- dependencies:
- anymatch "~3.1.2"
- braces "~3.0.2"
- glob-parent "~5.1.2"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.6.0"
- optionalDependencies:
- fsevents "~2.3.2"
-
-color-convert@^1.9.0:
- version "1.9.3"
- resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
- integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
- dependencies:
- color-name "1.1.3"
-
-color-convert@^2.0.1:
- version "2.0.1"
- resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
- integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
- dependencies:
- color-name "~1.1.4"
-
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
-
-color-name@~1.1.4:
- version "1.1.4"
- resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
-combined-stream@^1.0.8:
- version "1.0.8"
- resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
- integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
- dependencies:
- delayed-stream "~1.0.0"
-
-commander@^8.3.0:
- version "8.3.0"
- resolved "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
- integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
-
-computeds@^0.0.1:
- version "0.0.1"
- resolved "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz#215b08a4ba3e08a11ff6eee5d6d8d7166a97ce2e"
- integrity sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
- integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
-
-confbox@^0.1.7:
- version "0.1.7"
- resolved "https://registry.npmmirror.com/confbox/-/confbox-0.1.7.tgz#ccfc0a2bcae36a84838e83a3b7f770fb17d6c579"
- integrity sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==
-
-cross-spawn@^6.0.5:
- version "6.0.5"
- resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
- integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
- dependencies:
- nice-try "^1.0.4"
- path-key "^2.0.1"
- semver "^5.5.0"
- shebang-command "^1.2.0"
- which "^1.2.9"
-
-cross-spawn@^7.0.2:
- version "7.0.3"
- resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
- integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
- dependencies:
- path-key "^3.1.0"
- shebang-command "^2.0.0"
- which "^2.0.1"
-
-cssesc@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
- integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
-
-csstype@^3.1.3:
- version "3.1.3"
- resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
- integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
-
-data-view-buffer@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmmirror.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2"
- integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==
- dependencies:
- call-bind "^1.0.6"
- es-errors "^1.3.0"
- is-data-view "^1.0.1"
-
-data-view-byte-length@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmmirror.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2"
- integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==
- dependencies:
- call-bind "^1.0.7"
- es-errors "^1.3.0"
- is-data-view "^1.0.1"
-
-data-view-byte-offset@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmmirror.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a"
- integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==
- dependencies:
- call-bind "^1.0.6"
- es-errors "^1.3.0"
- is-data-view "^1.0.1"
-
-dayjs@^1.11.3:
- version "1.11.13"
- resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c"
- integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
-
-de-indent@^1.0.2:
- version "1.0.2"
- resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
- integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
-
-debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5:
- version "4.3.6"
- resolved "https://registry.npmmirror.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b"
- integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==
- dependencies:
- ms "2.1.2"
-
-deep-is@^0.1.3:
- version "0.1.4"
- resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
- integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
-
-define-data-property@^1.0.1, define-data-property@^1.1.4:
- version "1.1.4"
- resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
- integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
- dependencies:
- es-define-property "^1.0.0"
- es-errors "^1.3.0"
- gopd "^1.0.1"
-
-define-properties@^1.2.0, define-properties@^1.2.1:
- version "1.2.1"
- resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
- integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
- dependencies:
- define-data-property "^1.0.1"
- has-property-descriptors "^1.0.0"
- object-keys "^1.1.1"
-
-delayed-stream@~1.0.0:
- version "1.0.0"
- resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
- integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
-
-dir-glob@^3.0.1:
- version "3.0.1"
- resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
- integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
- dependencies:
- path-type "^4.0.0"
-
-element-plus@^2.7.8:
- version "2.8.3"
- resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.8.3.tgz#8697027f8b4a4b39d445eba0b87d6935a1481fe0"
- integrity sha512-BXQOyDf0s7JHyNEV8iaO+iaOzTZPsBXVKMzMI967vLCodUBDLrtiY5vglAn1YEebQcUOEUMhGcttTpIvEkcBjQ==
- dependencies:
- "@ctrl/tinycolor" "^3.4.1"
- "@element-plus/icons-vue" "^2.3.1"
- "@floating-ui/dom" "^1.0.1"
- "@popperjs/core" "npm:@sxzz/popperjs-es@^2.11.7"
- "@types/lodash" "^4.14.182"
- "@types/lodash-es" "^4.17.6"
- "@vueuse/core" "^9.1.0"
- async-validator "^4.2.5"
- dayjs "^1.11.3"
- escape-html "^1.0.3"
- lodash "^4.17.21"
- lodash-es "^4.17.21"
- lodash-unified "^1.0.2"
- memoize-one "^6.0.0"
- normalize-wheel-es "^1.2.0"
-
-entities@^4.4.0, entities@^4.5.0:
- version "4.5.0"
- resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
- integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
-
-error-ex@^1.3.1:
- version "1.3.2"
- resolved "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
- integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
- dependencies:
- is-arrayish "^0.2.1"
-
-es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2:
- version "1.23.3"
- resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0"
- integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==
- dependencies:
- array-buffer-byte-length "^1.0.1"
- arraybuffer.prototype.slice "^1.0.3"
- available-typed-arrays "^1.0.7"
- call-bind "^1.0.7"
- data-view-buffer "^1.0.1"
- data-view-byte-length "^1.0.1"
- data-view-byte-offset "^1.0.0"
- es-define-property "^1.0.0"
- es-errors "^1.3.0"
- es-object-atoms "^1.0.0"
- es-set-tostringtag "^2.0.3"
- es-to-primitive "^1.2.1"
- function.prototype.name "^1.1.6"
- get-intrinsic "^1.2.4"
- get-symbol-description "^1.0.2"
- globalthis "^1.0.3"
- gopd "^1.0.1"
- has-property-descriptors "^1.0.2"
- has-proto "^1.0.3"
- has-symbols "^1.0.3"
- hasown "^2.0.2"
- internal-slot "^1.0.7"
- is-array-buffer "^3.0.4"
- is-callable "^1.2.7"
- is-data-view "^1.0.1"
- is-negative-zero "^2.0.3"
- is-regex "^1.1.4"
- is-shared-array-buffer "^1.0.3"
- is-string "^1.0.7"
- is-typed-array "^1.1.13"
- is-weakref "^1.0.2"
- object-inspect "^1.13.1"
- object-keys "^1.1.1"
- object.assign "^4.1.5"
- regexp.prototype.flags "^1.5.2"
- safe-array-concat "^1.1.2"
- safe-regex-test "^1.0.3"
- string.prototype.trim "^1.2.9"
- string.prototype.trimend "^1.0.8"
- string.prototype.trimstart "^1.0.8"
- typed-array-buffer "^1.0.2"
- typed-array-byte-length "^1.0.1"
- typed-array-byte-offset "^1.0.2"
- typed-array-length "^1.0.6"
- unbox-primitive "^1.0.2"
- which-typed-array "^1.1.15"
-
-es-define-property@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
- integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
- dependencies:
- get-intrinsic "^1.2.4"
-
-es-errors@^1.2.1, es-errors@^1.3.0:
- version "1.3.0"
- resolved "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
- integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
-
-es-object-atoms@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941"
- integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==
- dependencies:
- es-errors "^1.3.0"
-
-es-set-tostringtag@^2.0.3:
- version "2.0.3"
- resolved "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777"
- integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==
- dependencies:
- get-intrinsic "^1.2.4"
- has-tostringtag "^1.0.2"
- hasown "^2.0.1"
-
-es-to-primitive@^1.2.1:
- version "1.2.1"
- resolved "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
- integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
- dependencies:
- is-callable "^1.1.4"
- is-date-object "^1.0.1"
- is-symbol "^1.0.2"
-
-esbuild@^0.21.3:
- version "0.21.5"
- resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d"
- integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==
- optionalDependencies:
- "@esbuild/aix-ppc64" "0.21.5"
- "@esbuild/android-arm" "0.21.5"
- "@esbuild/android-arm64" "0.21.5"
- "@esbuild/android-x64" "0.21.5"
- "@esbuild/darwin-arm64" "0.21.5"
- "@esbuild/darwin-x64" "0.21.5"
- "@esbuild/freebsd-arm64" "0.21.5"
- "@esbuild/freebsd-x64" "0.21.5"
- "@esbuild/linux-arm" "0.21.5"
- "@esbuild/linux-arm64" "0.21.5"
- "@esbuild/linux-ia32" "0.21.5"
- "@esbuild/linux-loong64" "0.21.5"
- "@esbuild/linux-mips64el" "0.21.5"
- "@esbuild/linux-ppc64" "0.21.5"
- "@esbuild/linux-riscv64" "0.21.5"
- "@esbuild/linux-s390x" "0.21.5"
- "@esbuild/linux-x64" "0.21.5"
- "@esbuild/netbsd-x64" "0.21.5"
- "@esbuild/openbsd-x64" "0.21.5"
- "@esbuild/sunos-x64" "0.21.5"
- "@esbuild/win32-arm64" "0.21.5"
- "@esbuild/win32-ia32" "0.21.5"
- "@esbuild/win32-x64" "0.21.5"
-
-escape-html@^1.0.3:
- version "1.0.3"
- resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
- integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
-
-escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
-
-escape-string-regexp@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
- integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-
-escape-string-regexp@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
- integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
-
-eslint-config-prettier@^9.0.0:
- version "9.1.0"
- resolved "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f"
- integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==
-
-eslint-plugin-prettier@^5.0.0:
- version "5.2.1"
- resolved "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz#d1c8f972d8f60e414c25465c163d16f209411f95"
- integrity sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==
- dependencies:
- prettier-linter-helpers "^1.0.0"
- synckit "^0.9.1"
-
-eslint-plugin-vue@^9.28.0:
- version "9.28.0"
- resolved "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.28.0.tgz#e4412f0c1024bafd15ffeaa6f76f4c99152e2765"
- integrity sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==
- dependencies:
- "@eslint-community/eslint-utils" "^4.4.0"
- globals "^13.24.0"
- natural-compare "^1.4.0"
- nth-check "^2.1.1"
- postcss-selector-parser "^6.0.15"
- semver "^7.6.3"
- vue-eslint-parser "^9.4.3"
- xml-name-validator "^4.0.0"
-
-eslint-scope@^7.1.1:
- version "7.2.2"
- resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
- integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
- dependencies:
- esrecurse "^4.3.0"
- estraverse "^5.2.0"
-
-eslint-scope@^8.0.2:
- version "8.0.2"
- resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94"
- integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==
- dependencies:
- esrecurse "^4.3.0"
- estraverse "^5.2.0"
-
-eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
- version "3.4.3"
- resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
- integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
-
-eslint-visitor-keys@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb"
- integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==
-
-eslint@^9.11.1:
- version "9.11.1"
- resolved "https://registry.npmmirror.com/eslint/-/eslint-9.11.1.tgz#701e5fc528990153f9cef696d8427003b5206567"
- integrity sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==
- dependencies:
- "@eslint-community/eslint-utils" "^4.2.0"
- "@eslint-community/regexpp" "^4.11.0"
- "@eslint/config-array" "^0.18.0"
- "@eslint/core" "^0.6.0"
- "@eslint/eslintrc" "^3.1.0"
- "@eslint/js" "9.11.1"
- "@eslint/plugin-kit" "^0.2.0"
- "@humanwhocodes/module-importer" "^1.0.1"
- "@humanwhocodes/retry" "^0.3.0"
- "@nodelib/fs.walk" "^1.2.8"
- "@types/estree" "^1.0.6"
- "@types/json-schema" "^7.0.15"
- ajv "^6.12.4"
- chalk "^4.0.0"
- cross-spawn "^7.0.2"
- debug "^4.3.2"
- escape-string-regexp "^4.0.0"
- eslint-scope "^8.0.2"
- eslint-visitor-keys "^4.0.0"
- espree "^10.1.0"
- esquery "^1.5.0"
- esutils "^2.0.2"
- fast-deep-equal "^3.1.3"
- file-entry-cache "^8.0.0"
- find-up "^5.0.0"
- glob-parent "^6.0.2"
- ignore "^5.2.0"
- imurmurhash "^0.1.4"
- is-glob "^4.0.0"
- is-path-inside "^3.0.3"
- json-stable-stringify-without-jsonify "^1.0.1"
- lodash.merge "^4.6.2"
- minimatch "^3.1.2"
- natural-compare "^1.4.0"
- optionator "^0.9.3"
- strip-ansi "^6.0.1"
- text-table "^0.2.0"
-
-espree@^10.0.1, espree@^10.1.0:
- version "10.1.0"
- resolved "https://registry.npmmirror.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56"
- integrity sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==
- dependencies:
- acorn "^8.12.0"
- acorn-jsx "^5.3.2"
- eslint-visitor-keys "^4.0.0"
-
-espree@^9.3.1:
- version "9.6.1"
- resolved "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
- integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
- dependencies:
- acorn "^8.9.0"
- acorn-jsx "^5.3.2"
- eslint-visitor-keys "^3.4.1"
-
-esquery@^1.4.0, esquery@^1.5.0:
- version "1.6.0"
- resolved "https://registry.npmmirror.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
- integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
- dependencies:
- estraverse "^5.1.0"
-
-esrecurse@^4.3.0:
- version "4.3.0"
- resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
- integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
- dependencies:
- estraverse "^5.2.0"
-
-estraverse@^5.1.0, estraverse@^5.2.0:
- version "5.3.0"
- resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
- integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
-
-estree-walker@^2.0.2:
- version "2.0.2"
- resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
- integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
-
-estree-walker@^3.0.3:
- version "3.0.3"
- resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d"
- integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==
- dependencies:
- "@types/estree" "^1.0.0"
-
-esutils@^2.0.2:
- version "2.0.3"
- resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
- integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-
-fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
- version "3.1.3"
- resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
- integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-
-fast-diff@^1.1.2:
- version "1.3.0"
- resolved "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
- integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
-
-fast-glob@^3.2.9, fast-glob@^3.3.2:
- version "3.3.2"
- resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
- integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
- dependencies:
- "@nodelib/fs.stat" "^2.0.2"
- "@nodelib/fs.walk" "^1.2.3"
- glob-parent "^5.1.2"
- merge2 "^1.3.0"
- micromatch "^4.0.4"
-
-fast-json-stable-stringify@^2.0.0:
- version "2.1.0"
- resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
- integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-
-fast-levenshtein@^2.0.6:
- version "2.0.6"
- resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
- integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
-
-fastq@^1.6.0:
- version "1.17.1"
- resolved "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
- integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
- dependencies:
- reusify "^1.0.4"
-
-file-entry-cache@^8.0.0:
- version "8.0.0"
- resolved "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
- integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
- dependencies:
- flat-cache "^4.0.0"
-
-fill-range@^7.1.1:
- version "7.1.1"
- resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
- integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
- dependencies:
- to-regex-range "^5.0.1"
-
-find-up@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
- integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
- dependencies:
- locate-path "^6.0.0"
- path-exists "^4.0.0"
-
-flat-cache@^4.0.0:
- version "4.0.1"
- resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
- integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
- dependencies:
- flatted "^3.2.9"
- keyv "^4.5.4"
-
-flatted@^3.2.9:
- version "3.3.1"
- resolved "https://registry.npmmirror.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
- integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
-
-follow-redirects@^1.15.6:
- version "1.15.6"
- resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
- integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
-
-for-each@^0.3.3:
- version "0.3.3"
- resolved "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
- integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
- dependencies:
- is-callable "^1.1.3"
-
-form-data@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
- integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.8"
- mime-types "^2.1.12"
-
-fsevents@~2.3.2, fsevents@~2.3.3:
- version "2.3.3"
- resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
- integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
-
-function-bind@^1.1.2:
- version "1.1.2"
- resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
- integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
-
-function.prototype.name@^1.1.6:
- version "1.1.6"
- resolved "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd"
- integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.2.0"
- es-abstract "^1.22.1"
- functions-have-names "^1.2.3"
-
-functions-have-names@^1.2.3:
- version "1.2.3"
- resolved "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
- integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
-
-get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
- version "1.2.4"
- resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
- integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
- dependencies:
- es-errors "^1.3.0"
- function-bind "^1.1.2"
- has-proto "^1.0.1"
- has-symbols "^1.0.3"
- hasown "^2.0.0"
-
-get-symbol-description@^1.0.2:
- version "1.0.2"
- resolved "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5"
- integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==
- dependencies:
- call-bind "^1.0.5"
- es-errors "^1.3.0"
- get-intrinsic "^1.2.4"
-
-github-markdown-css@^5.6.1:
- version "5.6.1"
- resolved "https://registry.npmmirror.com/github-markdown-css/-/github-markdown-css-5.6.1.tgz#8ca3d5c3d93d79ea429fddafea091347ab374f78"
- integrity sha512-DItLFgHd+s7HQmk63YN4/TdvLeRqk1QP7pPKTTPrDTYoI5x7f/luJWSOZxesmuxBI2srHp8RDyoZd+9WF+WK8Q==
-
-glob-parent@^5.1.2, glob-parent@~5.1.2:
- version "5.1.2"
- resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
- integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
- dependencies:
- is-glob "^4.0.1"
-
-glob-parent@^6.0.2:
- version "6.0.2"
- resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
- integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
- dependencies:
- is-glob "^4.0.3"
-
-globals@^13.24.0:
- version "13.24.0"
- resolved "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
- integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
- dependencies:
- type-fest "^0.20.2"
-
-globals@^14.0.0:
- version "14.0.0"
- resolved "https://registry.npmmirror.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
- integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
-
-globalthis@^1.0.3:
- version "1.0.4"
- resolved "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
- integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==
- dependencies:
- define-properties "^1.2.1"
- gopd "^1.0.1"
-
-globby@^11.1.0:
- version "11.1.0"
- resolved "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
- integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
- dependencies:
- array-union "^2.1.0"
- dir-glob "^3.0.1"
- fast-glob "^3.2.9"
- ignore "^5.2.0"
- merge2 "^1.4.1"
- slash "^3.0.0"
-
-gopd@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
- integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
- dependencies:
- get-intrinsic "^1.1.3"
-
-graceful-fs@^4.1.2:
- version "4.2.11"
- resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
- integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
-
-graphemer@^1.4.0:
- version "1.4.0"
- resolved "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
- integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
-
-has-bigints@^1.0.1, has-bigints@^1.0.2:
- version "1.0.2"
- resolved "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
- integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
-
-has-flag@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
-
-has-flag@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
- integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-
-has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
- version "1.0.2"
- resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
- integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
- dependencies:
- es-define-property "^1.0.0"
-
-has-proto@^1.0.1, has-proto@^1.0.3:
- version "1.0.3"
- resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd"
- integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
-
-has-symbols@^1.0.2, has-symbols@^1.0.3:
- version "1.0.3"
- resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
- integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
-
-has-tostringtag@^1.0.0, has-tostringtag@^1.0.2:
- version "1.0.2"
- resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
- integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
- dependencies:
- has-symbols "^1.0.3"
-
-hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2:
- version "2.0.2"
- resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
- integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
- dependencies:
- function-bind "^1.1.2"
-
-he@^1.2.0:
- version "1.2.0"
- resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
- integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
-
-highlight.js@^11.10.0:
- version "11.10.0"
- resolved "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.10.0.tgz#6e3600dc4b33d6dc23d5bd94fbf72405f5892b92"
- integrity sha512-SYVnVFswQER+zu1laSya563s+F8VDGt7o35d4utbamowvUNLLMovFqwCLSocpZTz3MgaSRA1IbqRWZv97dtErQ==
-
-hosted-git-info@^2.1.4:
- version "2.8.9"
- resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
- integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
-
-ignore@^5.2.0, ignore@^5.3.1:
- version "5.3.1"
- resolved "https://registry.npmmirror.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
- integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
-
-immutable@^4.0.0:
- version "4.3.7"
- resolved "https://registry.npmmirror.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381"
- integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==
-
-import-fresh@^3.2.1:
- version "3.3.0"
- resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
- integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
- dependencies:
- parent-module "^1.0.0"
- resolve-from "^4.0.0"
-
-imurmurhash@^0.1.4:
- version "0.1.4"
- resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
- integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
-
-internal-slot@^1.0.7:
- version "1.0.7"
- resolved "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802"
- integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==
- dependencies:
- es-errors "^1.3.0"
- hasown "^2.0.0"
- side-channel "^1.0.4"
-
-is-array-buffer@^3.0.4:
- version "3.0.4"
- resolved "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98"
- integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==
- dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.2.1"
-
-is-arrayish@^0.2.1:
- version "0.2.1"
- resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
- integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
-
-is-bigint@^1.0.1:
- version "1.0.4"
- resolved "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
- integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
- dependencies:
- has-bigints "^1.0.1"
-
-is-binary-path@~2.1.0:
- version "2.1.0"
- resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
- integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
- dependencies:
- binary-extensions "^2.0.0"
-
-is-boolean-object@^1.1.0:
- version "1.1.2"
- resolved "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
- integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
- dependencies:
- call-bind "^1.0.2"
- has-tostringtag "^1.0.0"
-
-is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
- version "1.2.7"
- resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
- integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
-
-is-core-module@^2.13.0:
- version "2.15.0"
- resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea"
- integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==
- dependencies:
- hasown "^2.0.2"
-
-is-data-view@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmmirror.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f"
- integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==
- dependencies:
- is-typed-array "^1.1.13"
-
-is-date-object@^1.0.1:
- version "1.0.5"
- resolved "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
- integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
- dependencies:
- has-tostringtag "^1.0.0"
-
-is-extglob@^2.1.1:
- version "2.1.1"
- resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
-
-is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
- version "4.0.3"
- resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
- integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
- dependencies:
- is-extglob "^2.1.1"
-
-is-negative-zero@^2.0.3:
- version "2.0.3"
- resolved "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747"
- integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==
-
-is-number-object@^1.0.4:
- version "1.0.7"
- resolved "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc"
- integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==
- dependencies:
- has-tostringtag "^1.0.0"
-
-is-number@^7.0.0:
- version "7.0.0"
- resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
- integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-
-is-path-inside@^3.0.3:
- version "3.0.3"
- resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
- integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
-
-is-regex@^1.1.4:
- version "1.1.4"
- resolved "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
- integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
- dependencies:
- call-bind "^1.0.2"
- has-tostringtag "^1.0.0"
-
-is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3:
- version "1.0.3"
- resolved "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688"
- integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==
- dependencies:
- call-bind "^1.0.7"
-
-is-string@^1.0.5, is-string@^1.0.7:
- version "1.0.7"
- resolved "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
- integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
- dependencies:
- has-tostringtag "^1.0.0"
-
-is-symbol@^1.0.2, is-symbol@^1.0.3:
- version "1.0.4"
- resolved "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
- integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
- dependencies:
- has-symbols "^1.0.2"
-
-is-typed-array@^1.1.13:
- version "1.1.13"
- resolved "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229"
- integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==
- dependencies:
- which-typed-array "^1.1.14"
-
-is-weakref@^1.0.2:
- version "1.0.2"
- resolved "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
- integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
- dependencies:
- call-bind "^1.0.2"
-
-isarray@^2.0.5:
- version "2.0.5"
- resolved "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
- integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
-
-isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
- integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
-
-js-tokens@^9.0.0:
- version "9.0.0"
- resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-9.0.0.tgz#0f893996d6f3ed46df7f0a3b12a03f5fd84223c1"
- integrity sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==
-
-js-yaml@^4.1.0:
- version "4.1.0"
- resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
- integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
- dependencies:
- argparse "^2.0.1"
-
-json-buffer@3.0.1:
- version "3.0.1"
- resolved "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
- integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
-
-json-parse-better-errors@^1.0.1:
- version "1.0.2"
- resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
- integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
-
-json-schema-traverse@^0.4.1:
- version "0.4.1"
- resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
- integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
-
-json-stable-stringify-without-jsonify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
- integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
-
-katex@^0.16.0:
- version "0.16.11"
- resolved "https://registry.npmmirror.com/katex/-/katex-0.16.11.tgz#4bc84d5584f996abece5f01c6ad11304276a33f5"
- integrity sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==
- dependencies:
- commander "^8.3.0"
-
-keyv@^4.5.4:
- version "4.5.4"
- resolved "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
- integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
- dependencies:
- json-buffer "3.0.1"
-
-levn@^0.4.1:
- version "0.4.1"
- resolved "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
- integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
- dependencies:
- prelude-ls "^1.2.1"
- type-check "~0.4.0"
-
-linkify-it@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmmirror.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421"
- integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==
- dependencies:
- uc.micro "^2.0.0"
-
-load-json-file@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
- integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^4.0.0"
- pify "^3.0.0"
- strip-bom "^3.0.0"
-
-local-pkg@^0.5.0:
- version "0.5.0"
- resolved "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c"
- integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==
- dependencies:
- mlly "^1.4.2"
- pkg-types "^1.0.3"
-
-locate-path@^6.0.0:
- version "6.0.0"
- resolved "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
- integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
- dependencies:
- p-locate "^5.0.0"
-
-lodash-es@^4.17.21:
- version "4.17.21"
- resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
- integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
-
-lodash-unified@^1.0.2:
- version "1.0.3"
- resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz#80b1eac10ed2eb02ed189f08614a29c27d07c894"
- integrity sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==
-
-lodash.merge@^4.6.2:
- version "4.6.2"
- resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
- integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
-
-lodash@^4.17.21:
- version "4.17.21"
- resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
- integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-
-magic-string@^0.30.10:
- version "0.30.10"
- resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e"
- integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==
- dependencies:
- "@jridgewell/sourcemap-codec" "^1.4.15"
-
-markdown-it-link-attributes@^4.0.1:
- version "4.0.1"
- resolved "https://registry.npmmirror.com/markdown-it-link-attributes/-/markdown-it-link-attributes-4.0.1.tgz#25751f2cf74fd91f0a35ba7b3247fa45f2056d88"
- integrity sha512-pg5OK0jPLg62H4k7M9mRJLT61gUp9nvG0XveKYHMOOluASo9OEF13WlXrpAp2aj35LbedAy3QOCgQCw0tkLKAQ==
-
-markdown-it@^14.1.0:
- version "14.1.0"
- resolved "https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45"
- integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==
- dependencies:
- argparse "^2.0.1"
- entities "^4.4.0"
- linkify-it "^5.0.0"
- mdurl "^2.0.0"
- punycode.js "^2.3.1"
- uc.micro "^2.1.0"
-
-mdurl@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmmirror.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0"
- integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==
-
-memoize-one@^6.0.0:
- version "6.0.0"
- resolved "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045"
- integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==
-
-memorystream@^0.3.1:
- version "0.3.1"
- resolved "https://registry.npmmirror.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
- integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==
-
-merge2@^1.3.0, merge2@^1.4.1:
- version "1.4.1"
- resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
- integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-
-micromatch@^4.0.4:
- version "4.0.7"
- resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
- integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==
- dependencies:
- braces "^3.0.3"
- picomatch "^2.3.1"
-
-mime-db@1.52.0:
- version "1.52.0"
- resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
- integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-
-mime-types@^2.1.12:
- version "2.1.35"
- resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
- integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
- dependencies:
- mime-db "1.52.0"
-
-minimatch@^3.0.4, minimatch@^3.1.2:
- version "3.1.2"
- resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
- integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
- dependencies:
- brace-expansion "^1.1.7"
-
-minimatch@^9.0.3, minimatch@^9.0.4, minimatch@^9.0.5:
- version "9.0.5"
- resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
- integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
- dependencies:
- brace-expansion "^2.0.1"
-
-mlly@^1.4.2, mlly@^1.7.1:
- version "1.7.1"
- resolved "https://registry.npmmirror.com/mlly/-/mlly-1.7.1.tgz#e0336429bb0731b6a8e887b438cbdae522c8f32f"
- integrity sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==
- dependencies:
- acorn "^8.11.3"
- pathe "^1.1.2"
- pkg-types "^1.1.1"
- ufo "^1.5.3"
-
-ms@2.1.2:
- version "2.1.2"
- resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
- integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
-muggle-string@^0.4.1:
- version "0.4.1"
- resolved "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.4.1.tgz#3b366bd43b32f809dc20659534dd30e7c8a0d328"
- integrity sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==
-
-nanoid@^3.3.7:
- version "3.3.7"
- resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
- integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
-
-natural-compare@^1.4.0:
- version "1.4.0"
- resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
- integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
-
-nice-try@^1.0.4:
- version "1.0.5"
- resolved "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
- integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
-
-normalize-package-data@^2.3.2:
- version "2.5.0"
- resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
- integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
- dependencies:
- hosted-git-info "^2.1.4"
- resolve "^1.10.0"
- semver "2 || 3 || 4 || 5"
- validate-npm-package-license "^3.0.1"
-
-normalize-path@^3.0.0, normalize-path@~3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
- integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-
-normalize-wheel-es@^1.2.0:
- version "1.2.0"
- resolved "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz#0fa2593d619f7245a541652619105ab076acf09e"
- integrity sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==
-
-npm-run-all@^4.1.5:
- version "4.1.5"
- resolved "https://registry.npmmirror.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
- integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
- dependencies:
- ansi-styles "^3.2.1"
- chalk "^2.4.1"
- cross-spawn "^6.0.5"
- memorystream "^0.3.1"
- minimatch "^3.0.4"
- pidtree "^0.3.0"
- read-pkg "^3.0.0"
- shell-quote "^1.6.1"
- string.prototype.padend "^3.0.0"
-
-nth-check@^2.1.1:
- version "2.1.1"
- resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
- integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
- dependencies:
- boolbase "^1.0.0"
-
-object-inspect@^1.13.1:
- version "1.13.2"
- resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff"
- integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==
-
-object-keys@^1.1.1:
- version "1.1.1"
- resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
- integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
-object.assign@^4.1.5:
- version "4.1.5"
- resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0"
- integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==
- dependencies:
- call-bind "^1.0.5"
- define-properties "^1.2.1"
- has-symbols "^1.0.3"
- object-keys "^1.1.1"
-
-optionator@^0.9.3:
- version "0.9.4"
- resolved "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
- integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
- dependencies:
- deep-is "^0.1.3"
- fast-levenshtein "^2.0.6"
- levn "^0.4.1"
- prelude-ls "^1.2.1"
- type-check "^0.4.0"
- word-wrap "^1.2.5"
-
-p-limit@^3.0.2:
- version "3.1.0"
- resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
- integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
- dependencies:
- yocto-queue "^0.1.0"
-
-p-locate@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
- integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
- dependencies:
- p-limit "^3.0.2"
-
-parent-module@^1.0.0:
- version "1.0.1"
- resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
- integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
- dependencies:
- callsites "^3.0.0"
-
-parse-json@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
- integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==
- dependencies:
- error-ex "^1.3.1"
- json-parse-better-errors "^1.0.1"
-
-path-browserify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
- integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
-
-path-exists@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
- integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
-
-path-key@^2.0.1:
- version "2.0.1"
- resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
- integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
-
-path-key@^3.1.0:
- version "3.1.1"
- resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
- integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-
-path-parse@^1.0.7:
- version "1.0.7"
- resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
- integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
-
-path-type@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
- integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
- dependencies:
- pify "^3.0.0"
-
-path-type@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
- integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-
-pathe@^1.1.2:
- version "1.1.2"
- resolved "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec"
- integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==
-
-picocolors@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1"
- integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==
-
-picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
- version "2.3.1"
- resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
- integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-
-pidtree@^0.3.0:
- version "0.3.1"
- resolved "https://registry.npmmirror.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a"
- integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==
-
-pify@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
- integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==
-
-pinia@^2.2.0:
- version "2.2.0"
- resolved "https://registry.npmmirror.com/pinia/-/pinia-2.2.0.tgz#cd006f7c1365ae326b9f95f622b7ad1078c398a4"
- integrity sha512-iPrIh26GMqfpUlMOGyxuDowGmYousTecbTHFwT0xZ1zJvh23oQ+Cj99ZoPQA1TnUPhU6AuRPv6/drkTCJ0VHQA==
- dependencies:
- "@vue/devtools-api" "^6.6.3"
- vue-demi "^0.14.8"
-
-pkg-types@^1.0.3, pkg-types@^1.1.1, pkg-types@^1.1.3:
- version "1.1.3"
- resolved "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.1.3.tgz#161bb1242b21daf7795036803f28e30222e476e3"
- integrity sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==
- dependencies:
- confbox "^0.1.7"
- mlly "^1.7.1"
- pathe "^1.1.2"
-
-possible-typed-array-names@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f"
- integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==
-
-postcss-selector-parser@^6.0.15:
- version "6.1.1"
- resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38"
- integrity sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==
- dependencies:
- cssesc "^3.0.0"
- util-deprecate "^1.0.2"
-
-postcss@^8.4.39:
- version "8.4.40"
- resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.40.tgz#eb81f2a4dd7668ed869a6db25999e02e9ad909d8"
- integrity sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==
- dependencies:
- nanoid "^3.3.7"
- picocolors "^1.0.1"
- source-map-js "^1.2.0"
-
-prelude-ls@^1.2.1:
- version "1.2.1"
- resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
- integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
-
-prettier-linter-helpers@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
- integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
- dependencies:
- fast-diff "^1.1.2"
-
-prettier@^3.3.3:
- version "3.3.3"
- resolved "https://registry.npmmirror.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105"
- integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==
-
-proxy-from-env@^1.1.0:
- version "1.1.0"
- resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
- integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
-
-punycode.js@^2.3.1:
- version "2.3.1"
- resolved "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7"
- integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==
-
-punycode@^2.1.0:
- version "2.3.1"
- resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
- integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
-
-qrcode.vue@^3.4.1:
- version "3.4.1"
- resolved "https://registry.npmmirror.com/qrcode.vue/-/qrcode.vue-3.4.1.tgz#dd8141da9c4ea07ee56b111cd13eadf123af822a"
- integrity sha512-wq/zHsifH4FJ1GXQi8/wNxD1KfQkckIpjK1KPTc/qwYU5/Bkd4me0w4xZSg6EXk6xLBkVDE0zxVagewv5EMAVA==
-
-queue-microtask@^1.2.2:
- version "1.2.3"
- resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
- integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-
-read-pkg@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
- integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==
- dependencies:
- load-json-file "^4.0.0"
- normalize-package-data "^2.3.2"
- path-type "^3.0.0"
-
-readdirp@~3.6.0:
- version "3.6.0"
- resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
- integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
- dependencies:
- picomatch "^2.2.1"
-
-regexp.prototype.flags@^1.5.2:
- version "1.5.2"
- resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334"
- integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
- dependencies:
- call-bind "^1.0.6"
- define-properties "^1.2.1"
- es-errors "^1.3.0"
- set-function-name "^2.0.1"
-
-resolve-from@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
- integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
-
-resolve@^1.10.0:
- version "1.22.8"
- resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
- integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
- dependencies:
- is-core-module "^2.13.0"
- path-parse "^1.0.7"
- supports-preserve-symlinks-flag "^1.0.0"
-
-reusify@^1.0.4:
- version "1.0.4"
- resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
- integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-
-rollup@^4.13.0:
- version "4.19.1"
- resolved "https://registry.npmmirror.com/rollup/-/rollup-4.19.1.tgz#21d865cd60d4a325172ce8b082e60caccd97b309"
- integrity sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw==
- dependencies:
- "@types/estree" "1.0.5"
- optionalDependencies:
- "@rollup/rollup-android-arm-eabi" "4.19.1"
- "@rollup/rollup-android-arm64" "4.19.1"
- "@rollup/rollup-darwin-arm64" "4.19.1"
- "@rollup/rollup-darwin-x64" "4.19.1"
- "@rollup/rollup-linux-arm-gnueabihf" "4.19.1"
- "@rollup/rollup-linux-arm-musleabihf" "4.19.1"
- "@rollup/rollup-linux-arm64-gnu" "4.19.1"
- "@rollup/rollup-linux-arm64-musl" "4.19.1"
- "@rollup/rollup-linux-powerpc64le-gnu" "4.19.1"
- "@rollup/rollup-linux-riscv64-gnu" "4.19.1"
- "@rollup/rollup-linux-s390x-gnu" "4.19.1"
- "@rollup/rollup-linux-x64-gnu" "4.19.1"
- "@rollup/rollup-linux-x64-musl" "4.19.1"
- "@rollup/rollup-win32-arm64-msvc" "4.19.1"
- "@rollup/rollup-win32-ia32-msvc" "4.19.1"
- "@rollup/rollup-win32-x64-msvc" "4.19.1"
- fsevents "~2.3.2"
-
-run-parallel@^1.1.9:
- version "1.2.0"
- resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
- integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
- dependencies:
- queue-microtask "^1.2.2"
-
-safe-array-concat@^1.1.2:
- version "1.1.2"
- resolved "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb"
- integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==
- dependencies:
- call-bind "^1.0.7"
- get-intrinsic "^1.2.4"
- has-symbols "^1.0.3"
- isarray "^2.0.5"
-
-safe-regex-test@^1.0.3:
- version "1.0.3"
- resolved "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377"
- integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==
- dependencies:
- call-bind "^1.0.6"
- es-errors "^1.3.0"
- is-regex "^1.1.4"
-
-sass@^1.77.8:
- version "1.77.8"
- resolved "https://registry.npmmirror.com/sass/-/sass-1.77.8.tgz#9f18b449ea401759ef7ec1752a16373e296b52bd"
- integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==
- dependencies:
- chokidar ">=3.0.0 <4.0.0"
- immutable "^4.0.0"
- source-map-js ">=0.6.2 <2.0.0"
-
-scule@^1.3.0:
- version "1.3.0"
- resolved "https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz#6efbd22fd0bb801bdcc585c89266a7d2daa8fbd3"
- integrity sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==
-
-"semver@2 || 3 || 4 || 5", semver@^5.5.0:
- version "5.7.2"
- resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
- integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
-
-semver@^7.3.6, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3:
- version "7.6.3"
- resolved "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
- integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
-
-set-function-length@^1.2.1:
- version "1.2.2"
- resolved "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
- integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
- dependencies:
- define-data-property "^1.1.4"
- es-errors "^1.3.0"
- function-bind "^1.1.2"
- get-intrinsic "^1.2.4"
- gopd "^1.0.1"
- has-property-descriptors "^1.0.2"
-
-set-function-name@^2.0.1:
- version "2.0.2"
- resolved "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985"
- integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
- dependencies:
- define-data-property "^1.1.4"
- es-errors "^1.3.0"
- functions-have-names "^1.2.3"
- has-property-descriptors "^1.0.2"
-
-shebang-command@^1.2.0:
- version "1.2.0"
- resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
- integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
- dependencies:
- shebang-regex "^1.0.0"
-
-shebang-command@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
- integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
- dependencies:
- shebang-regex "^3.0.0"
-
-shebang-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
- integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
-
-shebang-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
- integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-
-shell-quote@^1.6.1:
- version "1.8.1"
- resolved "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680"
- integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
-
-side-channel@^1.0.4:
- version "1.0.6"
- resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
- integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
- dependencies:
- call-bind "^1.0.7"
- es-errors "^1.3.0"
- get-intrinsic "^1.2.4"
- object-inspect "^1.13.1"
-
-slash@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
- integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-
-"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0:
- version "1.2.0"
- resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
- integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
-
-spdx-correct@^3.0.0:
- version "3.2.0"
- resolved "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c"
- integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==
- dependencies:
- spdx-expression-parse "^3.0.0"
- spdx-license-ids "^3.0.0"
-
-spdx-exceptions@^2.1.0:
- version "2.5.0"
- resolved "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66"
- integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==
-
-spdx-expression-parse@^3.0.0:
- version "3.0.1"
- resolved "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
- integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
- dependencies:
- spdx-exceptions "^2.1.0"
- spdx-license-ids "^3.0.0"
-
-spdx-license-ids@^3.0.0:
- version "3.0.18"
- resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326"
- integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==
-
-string.prototype.padend@^3.0.0:
- version "3.1.6"
- resolved "https://registry.npmmirror.com/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz#ba79cf8992609a91c872daa47c6bb144ee7f62a5"
- integrity sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==
- dependencies:
- call-bind "^1.0.7"
- define-properties "^1.2.1"
- es-abstract "^1.23.2"
- es-object-atoms "^1.0.0"
-
-string.prototype.trim@^1.2.9:
- version "1.2.9"
- resolved "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4"
- integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==
- dependencies:
- call-bind "^1.0.7"
- define-properties "^1.2.1"
- es-abstract "^1.23.0"
- es-object-atoms "^1.0.0"
-
-string.prototype.trimend@^1.0.8:
- version "1.0.8"
- resolved "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229"
- integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==
- dependencies:
- call-bind "^1.0.7"
- define-properties "^1.2.1"
- es-object-atoms "^1.0.0"
-
-string.prototype.trimstart@^1.0.8:
- version "1.0.8"
- resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde"
- integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==
- dependencies:
- call-bind "^1.0.7"
- define-properties "^1.2.1"
- es-object-atoms "^1.0.0"
-
-strip-ansi@^6.0.1:
- version "6.0.1"
- resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
- dependencies:
- ansi-regex "^5.0.1"
-
-strip-bom@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
- integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
-
-strip-json-comments@^3.1.1:
- version "3.1.1"
- resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
- integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
-
-strip-literal@^2.1.0:
- version "2.1.0"
- resolved "https://registry.npmmirror.com/strip-literal/-/strip-literal-2.1.0.tgz#6d82ade5e2e74f5c7e8739b6c84692bd65f0bd2a"
- integrity sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==
- dependencies:
- js-tokens "^9.0.0"
-
-supports-color@^5.3.0:
- version "5.5.0"
- resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
- integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
- dependencies:
- has-flag "^3.0.0"
-
-supports-color@^7.1.0:
- version "7.2.0"
- resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
- integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
- dependencies:
- has-flag "^4.0.0"
-
-supports-preserve-symlinks-flag@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
- integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-
-synckit@^0.9.1:
- version "0.9.1"
- resolved "https://registry.npmmirror.com/synckit/-/synckit-0.9.1.tgz#febbfbb6649979450131f64735aa3f6c14575c88"
- integrity sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==
- dependencies:
- "@pkgr/core" "^0.1.0"
- tslib "^2.6.2"
-
-text-table@^0.2.0:
- version "0.2.0"
- resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
- integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
-
-to-regex-range@^5.0.1:
- version "5.0.1"
- resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
- integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
- dependencies:
- is-number "^7.0.0"
-
-ts-api-utils@^1.3.0:
- version "1.3.0"
- resolved "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1"
- integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==
-
-tslib@^2.6.2:
- version "2.6.3"
- resolved "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0"
- integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
-
-type-check@^0.4.0, type-check@~0.4.0:
- version "0.4.0"
- resolved "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
- integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
- dependencies:
- prelude-ls "^1.2.1"
-
-type-fest@^0.20.2:
- version "0.20.2"
- resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
- integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
-
-typed-array-buffer@^1.0.2:
- version "1.0.2"
- resolved "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3"
- integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==
- dependencies:
- call-bind "^1.0.7"
- es-errors "^1.3.0"
- is-typed-array "^1.1.13"
-
-typed-array-byte-length@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67"
- integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==
- dependencies:
- call-bind "^1.0.7"
- for-each "^0.3.3"
- gopd "^1.0.1"
- has-proto "^1.0.3"
- is-typed-array "^1.1.13"
-
-typed-array-byte-offset@^1.0.2:
- version "1.0.2"
- resolved "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063"
- integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==
- dependencies:
- available-typed-arrays "^1.0.7"
- call-bind "^1.0.7"
- for-each "^0.3.3"
- gopd "^1.0.1"
- has-proto "^1.0.3"
- is-typed-array "^1.1.13"
-
-typed-array-length@^1.0.6:
- version "1.0.6"
- resolved "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3"
- integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==
- dependencies:
- call-bind "^1.0.7"
- for-each "^0.3.3"
- gopd "^1.0.1"
- has-proto "^1.0.3"
- is-typed-array "^1.1.13"
- possible-typed-array-names "^1.0.0"
-
-typescript@~5.5.4:
- version "5.5.4"
- resolved "https://registry.npmmirror.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba"
- integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==
-
-uc.micro@^2.0.0, uc.micro@^2.1.0:
- version "2.1.0"
- resolved "https://registry.npmmirror.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee"
- integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==
-
-ufo@^1.5.3:
- version "1.5.4"
- resolved "https://registry.npmmirror.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754"
- integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==
-
-unbox-primitive@^1.0.2:
- version "1.0.2"
- resolved "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
- integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
- dependencies:
- call-bind "^1.0.2"
- has-bigints "^1.0.2"
- has-symbols "^1.0.3"
- which-boxed-primitive "^1.0.2"
-
-undici-types@~6.11.1:
- version "6.11.1"
- resolved "https://registry.npmmirror.com/undici-types/-/undici-types-6.11.1.tgz#432ea6e8efd54a48569705a699e62d8f4981b197"
- integrity sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==
-
-unimport@^3.9.0:
- version "3.9.1"
- resolved "https://registry.npmmirror.com/unimport/-/unimport-3.9.1.tgz#0a895f91d33d858c6626e91869fd894a6b9c94dc"
- integrity sha512-4gtacoNH6YPx2Aa5Xfyrf8pU2RdXjWUACb/eF7bH1AcZtqs+6ijbNB0M3BPENbtVjnCcg8tw9UJ1jQGbCzKA6g==
- dependencies:
- "@rollup/pluginutils" "^5.1.0"
- acorn "^8.12.1"
- escape-string-regexp "^5.0.0"
- estree-walker "^3.0.3"
- fast-glob "^3.3.2"
- local-pkg "^0.5.0"
- magic-string "^0.30.10"
- mlly "^1.7.1"
- pathe "^1.1.2"
- pkg-types "^1.1.3"
- scule "^1.3.0"
- strip-literal "^2.1.0"
- unplugin "^1.12.0"
-
-unplugin-auto-import@^0.18.2:
- version "0.18.2"
- resolved "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.18.2.tgz#6e2d94847124a5941ea0ab8e6f516569de4c9eb7"
- integrity sha512-Dwb3rAic75harVBrVjwiq6H24PT+nBq2dpxV5BH8NNI6sDFaTytvP+iyo4xy7prQbR3r5K6nMs4f5Wp9PE4g8A==
- dependencies:
- "@antfu/utils" "^0.7.10"
- "@rollup/pluginutils" "^5.1.0"
- fast-glob "^3.3.2"
- local-pkg "^0.5.0"
- magic-string "^0.30.10"
- minimatch "^9.0.5"
- unimport "^3.9.0"
- unplugin "^1.11.0"
-
-unplugin-vue-components@^0.27.3:
- version "0.27.3"
- resolved "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.27.3.tgz#e7a9980f7feb649306aa92afd61b760385479d42"
- integrity sha512-5wg7lbdg5ZcrAQNzyYK+6gcg/DG8K6rO+f5YeuvqGHs/PhpapBvpA4O/0ex/pFthE5WgRk43iWuRZEMLVsdz4Q==
- dependencies:
- "@antfu/utils" "^0.7.10"
- "@rollup/pluginutils" "^5.1.0"
- chokidar "^3.6.0"
- debug "^4.3.5"
- fast-glob "^3.3.2"
- local-pkg "^0.5.0"
- magic-string "^0.30.10"
- minimatch "^9.0.5"
- mlly "^1.7.1"
- unplugin "^1.11.0"
-
-unplugin@^1.11.0, unplugin@^1.12.0:
- version "1.12.0"
- resolved "https://registry.npmmirror.com/unplugin/-/unplugin-1.12.0.tgz#a11d3eb565602190748b1f95ecc8590b0f7dcbb4"
- integrity sha512-KeczzHl2sATPQUx1gzo+EnUkmN4VmGBYRRVOZSGvGITE9rGHRDGqft6ONceP3vgXcyJ2XjX5axG5jMWUwNCYLw==
- dependencies:
- acorn "^8.12.1"
- chokidar "^3.6.0"
- webpack-sources "^3.2.3"
- webpack-virtual-modules "^0.6.2"
-
-uri-js@^4.2.2:
- version "4.4.1"
- resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
- integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
- dependencies:
- punycode "^2.1.0"
-
-util-deprecate@^1.0.2:
- version "1.0.2"
- resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-
-validate-npm-package-license@^3.0.1:
- version "3.0.4"
- resolved "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
- integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
- dependencies:
- spdx-correct "^3.0.0"
- spdx-expression-parse "^3.0.0"
-
-vite@^5.3.5:
- version "5.3.5"
- resolved "https://registry.npmmirror.com/vite/-/vite-5.3.5.tgz#b847f846fb2b6cb6f6f4ed50a830186138cb83d8"
- integrity sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==
- dependencies:
- esbuild "^0.21.3"
- postcss "^8.4.39"
- rollup "^4.13.0"
- optionalDependencies:
- fsevents "~2.3.3"
-
-vscode-uri@^3.0.8:
- version "3.0.8"
- resolved "https://registry.npmmirror.com/vscode-uri/-/vscode-uri-3.0.8.tgz#1770938d3e72588659a172d0fd4642780083ff9f"
- integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==
-
-vue-demi@*, vue-demi@^0.14.8:
- version "0.14.10"
- resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04"
- integrity sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==
-
-vue-eslint-parser@^9.3.1, vue-eslint-parser@^9.4.3:
- version "9.4.3"
- resolved "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz#9b04b22c71401f1e8bca9be7c3e3416a4bde76a8"
- integrity sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==
- dependencies:
- debug "^4.3.4"
- eslint-scope "^7.1.1"
- eslint-visitor-keys "^3.3.0"
- espree "^9.3.1"
- esquery "^1.4.0"
- lodash "^4.17.21"
- semver "^7.3.6"
-
-vue-i18n@^9.13.1:
- version "9.13.1"
- resolved "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz#a292c8021b7be604ebfca5609ae1f8fafe5c36d7"
- integrity sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==
- dependencies:
- "@intlify/core-base" "9.13.1"
- "@intlify/shared" "9.13.1"
- "@vue/devtools-api" "^6.5.0"
-
-vue-router@^4.4.0:
- version "4.4.0"
- resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.4.0.tgz#128e3fc0c84421035a9bd26027245e6bd68f69ab"
- integrity sha512-HB+t2p611aIZraV2aPSRNXf0Z/oLZFrlygJm+sZbdJaW6lcFqEDQwnzUBXn+DApw+/QzDU/I9TeWx9izEjTmsA==
- dependencies:
- "@vue/devtools-api" "^6.5.1"
-
-vue-tsc@^2.0.29:
- version "2.0.29"
- resolved "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-2.0.29.tgz#bf7e9605af9fadec7fd6037d242217f5c6ad2c3b"
- integrity sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==
- dependencies:
- "@volar/typescript" "~2.4.0-alpha.18"
- "@vue/language-core" "2.0.29"
- semver "^7.5.4"
-
-vue@^3.4.34:
- version "3.4.34"
- resolved "https://registry.npmmirror.com/vue/-/vue-3.4.34.tgz#19d9a82854d54c4506d1e2854c9c038ee430484a"
- integrity sha512-VZze05HWlA3ItreQ/ka7Sx7PoD0/3St8FEiSlSTVgb6l4hL+RjtP2/8g5WQBzZgyf8WG2f+g1bXzC7zggLhAJA==
- dependencies:
- "@vue/compiler-dom" "3.4.34"
- "@vue/compiler-sfc" "3.4.34"
- "@vue/runtime-dom" "3.4.34"
- "@vue/server-renderer" "3.4.34"
- "@vue/shared" "3.4.34"
-
-webpack-sources@^3.2.3:
- version "3.2.3"
- resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
- integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
-
-webpack-virtual-modules@^0.6.2:
- version "0.6.2"
- resolved "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8"
- integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==
-
-which-boxed-primitive@^1.0.2:
- version "1.0.2"
- resolved "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
- integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
- dependencies:
- is-bigint "^1.0.1"
- is-boolean-object "^1.1.0"
- is-number-object "^1.0.4"
- is-string "^1.0.5"
- is-symbol "^1.0.3"
-
-which-typed-array@^1.1.14, which-typed-array@^1.1.15:
- version "1.1.15"
- resolved "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d"
- integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==
- dependencies:
- available-typed-arrays "^1.0.7"
- call-bind "^1.0.7"
- for-each "^0.3.3"
- gopd "^1.0.1"
- has-tostringtag "^1.0.2"
-
-which@^1.2.9:
- version "1.3.1"
- resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
- integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
- dependencies:
- isexe "^2.0.0"
-
-which@^2.0.1:
- version "2.0.2"
- resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
- integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
- dependencies:
- isexe "^2.0.0"
-
-word-wrap@^1.2.5:
- version "1.2.5"
- resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
- integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
-
-xml-name-validator@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835"
- integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
-
-yocto-queue@^0.1.0:
- version "0.1.0"
- resolved "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
- integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
diff --git a/main.py b/main.py
index bca8d2c..5de22da 100644
--- a/main.py
+++ b/main.py
@@ -16,6 +16,7 @@ from apps.base.models import KeyValue
from apps.base.utils import ip_limit
from apps.base.views import share_api
from apps.admin.views import admin_api
+from core.database import init_db
from core.response import APIResponse
from core.settings import data_root, settings, BASE_DIR, DEFAULT_CONFIG
from core.tasks import delete_expire_files
@@ -24,16 +25,6 @@ from contextlib import asynccontextmanager
from tortoise import Tortoise
-async def init_db():
- await Tortoise.init(
- db_url=f'sqlite://{data_root}/filecodebox.db',
- modules={'models': ['apps.base.models']},
- use_tz=False,
- timezone="Asia/Shanghai"
- )
- await Tortoise.generate_schemas()
-
-
@asynccontextmanager
async def lifespan(app: FastAPI):
# 初始化数据库
@@ -41,7 +32,11 @@ async def lifespan(app: FastAPI):
# 加载配置
await load_config()
- app.mount('/assets', StaticFiles(directory=f'./{settings.themesSelect}/assets'), name="assets")
+ app.mount(
+ "/assets",
+ StaticFiles(directory=f"./{settings.themesSelect}/assets"),
+ name="assets",
+ )
# 启动后台任务
task = asyncio.create_task(delete_expire_files())
@@ -56,14 +51,18 @@ async def lifespan(app: FastAPI):
async def load_config():
- user_config, _ = await KeyValue.get_or_create(key='settings', defaults={'value': DEFAULT_CONFIG})
- await KeyValue.update_or_create(key='sys_start', defaults={'value': int(time.time() * 1000)})
+ user_config, _ = await KeyValue.get_or_create(
+ key="settings", defaults={"value": DEFAULT_CONFIG}
+ )
+ await KeyValue.update_or_create(
+ key="sys_start", defaults={"value": int(time.time() * 1000)}
+ )
settings.user_config = user_config.value
# 更新 ip_limit 配置
- ip_limit['error'].minutes = settings.errorMinute
- ip_limit['error'].count = settings.errorCount
- ip_limit['upload'].minutes = settings.uploadMinute
- ip_limit['upload'].count = settings.uploadCount
+ ip_limit["error"].minutes = settings.errorMinute
+ ip_limit["error"].count = settings.errorCount
+ ip_limit["upload"].minutes = settings.uploadMinute
+ ip_limit["upload"].count = settings.uploadCount
app = FastAPI(lifespan=lifespan)
@@ -80,11 +79,11 @@ app.add_middleware(
register_tortoise(
app,
config={
- 'connections': {'default': f'sqlite://{data_root}/filecodebox.db'},
- 'apps': {
- 'models': {
- 'models': ['apps.base.models'],
- 'default_connection': 'default',
+ "connections": {"default": f"sqlite://{data_root}/filecodebox.db"},
+ "apps": {
+ "models": {
+ "models": ["apps.base.models"],
+ "default_connection": "default",
},
},
},
@@ -96,39 +95,50 @@ app.include_router(share_api)
app.include_router(admin_api)
-@app.get('/')
-async def index():
+@app.exception_handler(404)
+@app.get("/")
+async def index(request=None, exc=None):
return HTMLResponse(
- content=open(BASE_DIR / f'{settings.themesSelect}/index.html', 'r', encoding='utf-8').read()
- .replace('{{title}}', str(settings.name))
- .replace('{{description}}', str(settings.description))
- .replace('{{keywords}}', str(settings.keywords))
- .replace('{{opacity}}', str(settings.opacity))
- .replace('{{background}}', str(settings.background))
- , media_type='text/html', headers={'Cache-Control': 'no-cache'})
+ content=open(
+ BASE_DIR / f"{settings.themesSelect}/index.html", "r", encoding="utf-8"
+ )
+ .read()
+ .replace("{{title}}", str(settings.name))
+ .replace("{{description}}", str(settings.description))
+ .replace("{{keywords}}", str(settings.keywords))
+ .replace("{{opacity}}", str(settings.opacity))
+ .replace('"/assets/', '"assets/')
+ .replace("{{background}}", str(settings.background)),
+ media_type="text/html",
+ headers={"Cache-Control": "no-cache"},
+ )
-@app.get('/robots.txt')
+@app.get("/robots.txt")
async def robots():
- return HTMLResponse(content=settings.robotsText, media_type='text/plain')
+ return HTMLResponse(content=settings.robotsText, media_type="text/plain")
-@app.post('/')
+@app.post("/")
async def get_config():
- return APIResponse(detail={
- 'name': settings.name,
- 'description': settings.description,
- 'explain': settings.page_explain,
- 'uploadSize': settings.uploadSize,
- 'expireStyle': settings.expireStyle,
- 'openUpload': settings.openUpload,
- 'notify_title': settings.notify_title,
- 'notify_content': settings.notify_content,
- 'show_admin_address': settings.showAdminAddr,
- })
+ return APIResponse(
+ detail={
+ "name": settings.name,
+ "description": settings.description,
+ "explain": settings.page_explain,
+ "uploadSize": settings.uploadSize,
+ "expireStyle": settings.expireStyle,
+ "openUpload": settings.openUpload,
+ "notify_title": settings.notify_title,
+ "notify_content": settings.notify_content,
+ "show_admin_address": settings.showAdminAddr,
+ }
+ )
-if __name__ == '__main__':
+if __name__ == "__main__":
import uvicorn
- uvicorn.run(app='main:app', host="0.0.0.0", port=settings.port, reload=False, workers=1)
+ uvicorn.run(
+ app="main:app", host="0.0.0.0", port=settings.port, reload=False, workers=1
+ )
diff --git a/path/to/frontend/file b/path/to/frontend/file
new file mode 100644
index 0000000..0ecd6e1
--- /dev/null
+++ b/path/to/frontend/file
@@ -0,0 +1,54 @@
+import { request } from '@/utils/request'; // 假设这是你的请求函数
+import { ElMessage } from 'element-plus'; // Element Plus 的消息组件
+import { t } from '@/locales'; // 国际化函数
+import { saveFileByWebApi, saveFileByElementA } from '@/utils/file'; // 文件保存工具函数
+
+const downloadFile = (id: number) => {
+ request({
+ url: '/admin/file/download',
+ method: 'get',
+ params: {
+ id,
+ },
+ responseType: 'blob'
+ }).then((response: any) => {
+ const contentDisposition = response.headers?.['content-disposition'] || '';
+ let filename = 'file';
+
+ try {
+ // 先尝试获取 filename* 参数
+ const filenameStarMatch = contentDisposition.match(/filename\*=UTF-8''([^;]*)/);
+ if (filenameStarMatch) {
+ filename = decodeURIComponent(filenameStarMatch[1]);
+ } else {
+ // 如果没有 filename*,则尝试获取普通 filename
+ const filenameMatch = contentDisposition.match(/filename="([^"]*)"/) || contentDisposition.match(/filename=([^;]*)/);
+ if (filenameMatch) {
+ filename = filenameMatch[1];
+ }
+ }
+ } catch (error) {
+ console.warn('解析文件名失败:', error);
+ // 如果解析失败,使用默认文件名
+ filename = `download_${id}`;
+ }
+
+ // @ts-ignore
+ if (window.showSaveFilePicker) {
+ saveFileByWebApi(response.data, filename).catch(() => {
+ saveFileByElementA(response.data, filename).catch(() => {
+ ElMessage.error(t('admin.fileView.download_fail'));
+ });
+ });
+ } else {
+ saveFileByElementA(response.data, filename).catch(() => {
+ ElMessage.error(t('admin.fileView.download_fail'));
+ });
+ }
+ }).catch(error => {
+ console.error('下载文件失败:', error);
+ ElMessage.error(t('admin.fileView.download_fail'));
+ });
+};
+
+export default downloadFile;
\ No newline at end of file
diff --git a/readme.md b/readme.md
index e17d824..edf54a9 100644
--- a/readme.md
+++ b/readme.md
@@ -22,6 +22,7 @@
## 🚀 更新计划
- [ ] 切片上传,同文件秒传,断点续传
+- [x] 适配子目录
- [x] 用户登录重构
- [x] webdav存储
- [x] 存储支持自定义路径
@@ -36,9 +37,12 @@ FileCodeBox 是一个基于 FastAPI + Vue3 开发的轻量级文件分享工具
-
+
-
+
+
+
+
diff --git a/readme_en.md b/readme_en.md
index eff700b..cde515d 100644
--- a/readme_en.md
+++ b/readme_en.md
@@ -28,11 +28,14 @@ FileCodeBox is a lightweight file sharing tool developed with FastAPI + Vue3. It
diff --git a/requirements.txt b/requirements.txt
index 15da0b1..c397aca 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,49 +1,8 @@
aioboto3==11.2.0
-aiobotocore==2.5.0
-aiohttp==3.9.2
-aioitertools==0.11.0
-aiosignal==1.3.1
-aiosqlite==0.17.0
-annotated-types==0.5.0
-anyio==3.7.1
-async-timeout==4.0.3
-atlastk==0.13.2
-attrs==23.1.0
-boto3==1.26.76
+aiohttp==3.10.11
botocore==1.29.76
-certifi==2024.8.30
-cffi==1.17.1
-charset-normalizer==3.2.0
-click==8.1.6
-cryptography==43.0.1
-exceptiongroup==1.1.2
fastapi==0.115.0
-frozenlist==1.4.0
-greenlet==2.0.2
-h11==0.14.0
-idna==3.7
-iso8601==1.1.0
-jmespath==1.0.1
-msal==1.31.0
-multidict==6.0.4
-Office365-REST-Python-Client==2.5.2
-pycparser==2.22
-pydantic==2.1.1
-pydantic_core==2.4.0
-PyJWT==2.9.0
-pypika-tortoise==0.1.6
-python-dateutil==2.8.2
-python-multipart==0.0.7
-pytz==2023.3
-requests==2.32.3
-s3transfer==0.6.1
-six==1.16.0
-sniffio==1.3.0
-SQLAlchemy==2.0.19
-starlette==0.38.6
-tortoise-orm==0.20.0
-typing_extensions==4.8.0
-urllib3==1.26.20
+pydantic==2.4.0
uvicorn==0.23.2
-wrapt==1.15.0
-yarl==1.9.2
+tortoise-orm==0.20.0
+python-multipart==0.0.20
\ No newline at end of file
diff --git a/themes/2023/assets/AboutView-C7hzxtgM.js b/themes/2023/assets/AboutView-C7hzxtgM.js
deleted file mode 100644
index d4d44a6..0000000
--- a/themes/2023/assets/AboutView-C7hzxtgM.js
+++ /dev/null
@@ -1 +0,0 @@
-import{d as s,a8 as n,Y as c,W as e,a1 as r,$ as a,g as o,o as i}from"./index-CVeK0dPI.js";const l={style:{"text-align":"center"}},u={style:{color:"#333"},href:"https://github.com/vastsa/FileCodeBox"},f=s({__name:"AboutView",setup(_){const{t}=n();return(m,d)=>(i(),c("main",l,[e("span",null,[r(a(o(t)("admin.about.source1"))+" ",1),e("em",null,[e("a",u,a(o(t)("admin.about.source2")),1)])])]))}});export{f as default};
diff --git a/themes/2023/assets/AboutView-D5nNg17N.js b/themes/2023/assets/AboutView-D5nNg17N.js
new file mode 100644
index 0000000..ecc29f7
--- /dev/null
+++ b/themes/2023/assets/AboutView-D5nNg17N.js
@@ -0,0 +1 @@
+import{a as s,a8 as n,P as c,N as e,U as r,R as a,j as o,o as i}from"./index-5orz1M6_.js";const l={style:{"text-align":"center"}},u={style:{color:"#333"},href:"https://github.com/vastsa/FileCodeBox"},f=s({__name:"AboutView",setup(_){const{t}=n();return(m,p)=>(i(),c("main",l,[e("span",null,[r(a(o(t)("admin.about.source1"))+" ",1),e("em",null,[e("a",u,a(o(t)("admin.about.source2")),1)])])]))}});export{f as default};
diff --git a/themes/2023/assets/AdminView-B-o88PWR.js b/themes/2023/assets/AdminView-B-o88PWR.js
deleted file mode 100644
index baaa88a..0000000
--- a/themes/2023/assets/AdminView-B-o88PWR.js
+++ /dev/null
@@ -1 +0,0 @@
-import{T as Ue,t as ce,E as Ye,b as Ze}from"./el-button-CIFg-IwZ.js";import{E as Je,a as Ke}from"./el-form-item-_5R7KEC5.js";/* empty css */import"./el-tooltip-l0sNRNKZ.js";import{E as Pe,C as Xe}from"./el-popper-CwdMC8HJ.js";import{d as y,u as $,o as S,e as J,w,r as k,aC as Oe,aR as Qe,g as h,T as Ne,_ as V,j as ye,aG as et,a as f,Y as A,f as L,h as Ie,ak as q,E as B,J as ie,F as ve,aS as tt,b as Ce,aT as ne,l as de,t as x,aU as nt,aV as at,v as Ee,R as ue,p as _e,S as Se,U as Be,A as I,H as K,M as Ae,B as ze,D as ot,ab as pe,aW as we,aX as $e,k as me,m as st,aY as lt,aZ as it,a_ as ut,s as rt,am as ke,n as ct,aA as dt,V as He,W as Me,a1 as ae,$ as oe,aK as mt,aM as pt,aN as ft,a8 as vt,aa as ht,C as D,ac as gt,af as bt,aF as Te}from"./index-CVeK0dPI.js";import{t as re}from"./aria-nkjrUMQ-.js";import{f as _t}from"./vnode-D5ByjH_G.js";import"./_baseClone-DRpC8OZL.js";const Mt=y({name:"ElCollapseTransition"}),yt=y({...Mt,setup(e){const a=$("collapse-transition"),n=t=>{t.style.maxHeight="",t.style.overflow=t.dataset.oldOverflow,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom},o={beforeEnter(t){t.dataset||(t.dataset={}),t.dataset.oldPaddingTop=t.style.paddingTop,t.dataset.oldPaddingBottom=t.style.paddingBottom,t.style.height&&(t.dataset.elExistsHeight=t.style.height),t.style.maxHeight=0,t.style.paddingTop=0,t.style.paddingBottom=0},enter(t){requestAnimationFrame(()=>{t.dataset.oldOverflow=t.style.overflow,t.dataset.elExistsHeight?t.style.maxHeight=t.dataset.elExistsHeight:t.scrollHeight!==0?t.style.maxHeight=`${t.scrollHeight}px`:t.style.maxHeight=0,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom,t.style.overflow="hidden"})},afterEnter(t){t.style.maxHeight="",t.style.overflow=t.dataset.oldOverflow},enterCancelled(t){n(t)},beforeLeave(t){t.dataset||(t.dataset={}),t.dataset.oldPaddingTop=t.style.paddingTop,t.dataset.oldPaddingBottom=t.style.paddingBottom,t.dataset.oldOverflow=t.style.overflow,t.style.maxHeight=`${t.scrollHeight}px`,t.style.overflow="hidden"},leave(t){t.scrollHeight!==0&&(t.style.maxHeight=0,t.style.paddingTop=0,t.style.paddingBottom=0)},afterLeave(t){n(t)},leaveCancelled(t){n(t)}};return(t,v)=>(S(),J(Ne,Oe({name:h(a).b()},Qe(o)),{default:w(()=>[k(t.$slots,"default")]),_:3},16,["name"]))}});var It=V(yt,[["__file","collapse-transition.vue"]]);const Ct=ye(It),Et=y({name:"ElContainer"}),St=y({...Et,props:{direction:{type:String}},setup(e){const a=e,n=et(),o=$("container"),t=f(()=>a.direction==="vertical"?!0:a.direction==="horizontal"?!1:n&&n.default?n.default().some(d=>{const g=d.type.name;return g==="ElHeader"||g==="ElFooter"}):!1);return(v,d)=>(S(),A("section",{class:L([h(o).b(),h(o).is("vertical",h(t))])},[k(v.$slots,"default")],2))}});var wt=V(St,[["__file","container.vue"]]);const xt=y({name:"ElAside"}),$t=y({...xt,props:{width:{type:String,default:null}},setup(e){const a=e,n=$("aside"),o=f(()=>a.width?n.cssVarBlock({width:a.width}):{});return(t,v)=>(S(),A("aside",{class:L(h(n).b()),style:Ie(h(o))},[k(t.$slots,"default")],6))}});var De=V($t,[["__file","aside.vue"]]);const kt=y({name:"ElFooter"}),Tt=y({...kt,props:{height:{type:String,default:null}},setup(e){const a=e,n=$("footer"),o=f(()=>a.height?n.cssVarBlock({height:a.height}):{});return(t,v)=>(S(),A("footer",{class:L(h(n).b()),style:Ie(h(o))},[k(t.$slots,"default")],6))}});var Le=V(Tt,[["__file","footer.vue"]]);const Pt=y({name:"ElHeader"}),Ot=y({...Pt,props:{height:{type:String,default:null}},setup(e){const a=e,n=$("header"),o=f(()=>a.height?n.cssVarBlock({height:a.height}):{});return(t,v)=>(S(),A("header",{class:L(h(n).b()),style:Ie(h(o))},[k(t.$slots,"default")],6))}});var Ve=V(Ot,[["__file","header.vue"]]);const Nt=y({name:"ElMain"}),Bt=y({...Nt,setup(e){const a=$("main");return(n,o)=>(S(),A("main",{class:L(h(a).b())},[k(n.$slots,"default")],2))}});var Fe=V(Bt,[["__file","main.vue"]]);const At=ye(wt,{Aside:De,Footer:Le,Header:Ve,Main:Fe});q(De);q(Le);const zt=q(Ve),Ht=q(Fe);let Dt=class{constructor(a,n){this.parent=a,this.domNode=n,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(a){a===this.subMenuItems.length?a=0:a<0&&(a=this.subMenuItems.length-1),this.subMenuItems[a].focus(),this.subIndex=a}addListeners(){const a=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,n=>{n.addEventListener("keydown",o=>{let t=!1;switch(o.code){case B.down:{this.gotoSubIndex(this.subIndex+1),t=!0;break}case B.up:{this.gotoSubIndex(this.subIndex-1),t=!0;break}case B.tab:{re(a,"mouseleave");break}case B.enter:case B.space:{t=!0,o.currentTarget.click();break}}return t&&(o.preventDefault(),o.stopPropagation()),!1})})}},Lt=class{constructor(a,n){this.domNode=a,this.submenu=null,this.submenu=null,this.init(n)}init(a){this.domNode.setAttribute("tabindex","0");const n=this.domNode.querySelector(`.${a}-menu`);n&&(this.submenu=new Dt(this,n)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",a=>{let n=!1;switch(a.code){case B.down:{re(a.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),n=!0;break}case B.up:{re(a.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),n=!0;break}case B.tab:{re(a.currentTarget,"mouseleave");break}case B.enter:case B.space:{n=!0,a.currentTarget.click();break}}n&&a.preventDefault()})}},Vt=class{constructor(a,n){this.domNode=a,this.init(n)}init(a){const n=this.domNode.childNodes;Array.from(n).forEach(o=>{o.nodeType===1&&new Lt(o,a)})}};const Ft=y({name:"ElMenuCollapseTransition",setup(){const e=$("menu");return{listeners:{onBeforeEnter:n=>n.style.opacity="0.2",onEnter(n,o){ie(n,`${e.namespace.value}-opacity-transition`),n.style.opacity="1",o()},onAfterEnter(n){ve(n,`${e.namespace.value}-opacity-transition`),n.style.opacity=""},onBeforeLeave(n){n.dataset||(n.dataset={}),tt(n,e.m("collapse"))?(ve(n,e.m("collapse")),n.dataset.oldOverflow=n.style.overflow,n.dataset.scrollWidth=n.clientWidth.toString(),ie(n,e.m("collapse"))):(ie(n,e.m("collapse")),n.dataset.oldOverflow=n.style.overflow,n.dataset.scrollWidth=n.clientWidth.toString(),ve(n,e.m("collapse"))),n.style.width=`${n.scrollWidth}px`,n.style.overflow="hidden"},onLeave(n){ie(n,"horizontal-collapse-transition"),n.style.width=`${n.dataset.scrollWidth}px`}}}}});function Rt(e,a,n,o,t,v){return S(),J(Ne,Oe({mode:"out-in"},e.listeners),{default:w(()=>[k(e.$slots,"default")]),_:3},16)}var Wt=V(Ft,[["render",Rt],["__file","menu-collapse-transition.vue"]]);function Re(e,a){const n=f(()=>{let t=e.parent;const v=[a.value];for(;t.type.name!=="ElMenu";)t.props.index&&v.unshift(t.props.index),t=t.parent;return v});return{parentMenu:f(()=>{let t=e.parent;for(;t&&!["ElMenu","ElSubMenu"].includes(t.type.name);)t=t.parent;return t}),indexPath:n}}function jt(e){return f(()=>{const n=e.backgroundColor;return n?new Ue(n).shade(20).toString():""})}const We=(e,a)=>{const n=$("menu");return f(()=>n.cssVarBlock({"text-color":e.textColor||"","hover-text-color":e.textColor||"","bg-color":e.backgroundColor||"","hover-bg-color":jt(e).value||"","active-color":e.activeTextColor||"",level:`${a}`}))},qt=Ce({index:{type:String,required:!0},showTimeout:Number,hideTimeout:Number,popperClass:String,disabled:Boolean,teleported:{type:Boolean,default:void 0},popperOffset:Number,expandCloseIcon:{type:ne},expandOpenIcon:{type:ne},collapseCloseIcon:{type:ne},collapseOpenIcon:{type:ne}}),he="ElSubMenu";var xe=y({name:he,props:qt,setup(e,{slots:a,expose:n}){const o=we(),{indexPath:t,parentMenu:v}=Re(o,f(()=>e.index)),d=$("menu"),g=$("sub-menu"),u=de("rootMenu");u||ce(he,"can not inject root menu");const m=de(`subMenu:${v.value.uid}`);m||ce(he,"can not inject sub menu");const c=x({}),b=x({});let C;const P=x(!1),X=x(),G=x(null),z=f(()=>W.value==="horizontal"&&H.value?"bottom-start":"right-start"),F=f(()=>W.value==="horizontal"&&H.value||W.value==="vertical"&&!u.props.collapse?e.expandCloseIcon&&e.expandOpenIcon?N.value?e.expandOpenIcon:e.expandCloseIcon:nt:e.collapseCloseIcon&&e.collapseOpenIcon?N.value?e.collapseOpenIcon:e.collapseCloseIcon:at),H=f(()=>m.level===0),R=f(()=>{const i=e.teleported;return i===void 0?H.value:i}),Q=f(()=>u.props.collapse?`${d.namespace.value}-zoom-in-left`:`${d.namespace.value}-zoom-in-top`),O=f(()=>W.value==="horizontal"&&H.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","right","right-end","left-start","bottom-start","bottom-end","top-start","top-end"]),N=f(()=>u.openedMenus.includes(e.index)),U=f(()=>{let i=!1;return Object.values(c.value).forEach(p=>{p.active&&(i=!0)}),Object.values(b.value).forEach(p=>{p.active&&(i=!0)}),i}),W=f(()=>u.props.mode),Y=Ee({index:e.index,indexPath:t,active:U}),ee=We(u.props,m.level+1),se=f(()=>{var i;return(i=e.popperOffset)!=null?i:u.props.popperOffset}),Z=f(()=>{var i;return(i=e.popperClass)!=null?i:u.props.popperClass}),le=f(()=>{var i;return(i=e.showTimeout)!=null?i:u.props.showTimeout}),fe=f(()=>{var i;return(i=e.hideTimeout)!=null?i:u.props.hideTimeout}),s=()=>{var i,p,E;return(E=(p=(i=G.value)==null?void 0:i.popperRef)==null?void 0:p.popperInstanceRef)==null?void 0:E.destroy()},l=i=>{i||s()},r=()=>{u.props.menuTrigger==="hover"&&u.props.mode==="horizontal"||u.props.collapse&&u.props.mode==="vertical"||e.disabled||u.handleSubMenuClick({index:e.index,indexPath:t.value,active:U.value})},_=(i,p=le.value)=>{var E;if(i.type!=="focus"){if(u.props.menuTrigger==="click"&&u.props.mode==="horizontal"||!u.props.collapse&&u.props.mode==="vertical"||e.disabled){m.mouseInChild.value=!0;return}m.mouseInChild.value=!0,C==null||C(),{stop:C}=$e(()=>{u.openMenu(e.index,t.value)},p),R.value&&((E=v.value.vnode.el)==null||E.dispatchEvent(new MouseEvent("mouseenter")))}},M=(i=!1)=>{var p;if(u.props.menuTrigger==="click"&&u.props.mode==="horizontal"||!u.props.collapse&&u.props.mode==="vertical"){m.mouseInChild.value=!1;return}C==null||C(),m.mouseInChild.value=!1,{stop:C}=$e(()=>!P.value&&u.closeMenu(e.index,t.value),fe.value),R.value&&i&&((p=m.handleMouseleave)==null||p.call(m,!0))};ue(()=>u.props.collapse,i=>l(!!i));{const i=E=>{b.value[E.index]=E},p=E=>{delete b.value[E.index]};_e(`subMenu:${o.uid}`,{addSubMenu:i,removeSubMenu:p,handleMouseleave:M,mouseInChild:P,level:m.level+1})}return n({opened:N}),Se(()=>{u.addSubMenu(Y),m.addSubMenu(Y)}),Be(()=>{m.removeSubMenu(Y),u.removeSubMenu(Y)}),()=>{var i;const p=[(i=a.title)==null?void 0:i.call(a),I(Ae,{class:g.e("icon-arrow"),style:{transform:N.value?e.expandCloseIcon&&e.expandOpenIcon||e.collapseCloseIcon&&e.collapseOpenIcon&&u.props.collapse?"none":"rotateZ(180deg)":"none"}},{default:()=>K(F.value)?I(o.appContext.components[F.value]):I(F.value)})],E=u.isMenuPopup?I(Pe,{ref:G,visible:N.value,effect:"light",pure:!0,offset:se.value,showArrow:!1,persistent:!0,popperClass:Z.value,placement:z.value,teleported:R.value,fallbackPlacements:O.value,transition:Q.value,gpuAcceleration:!1},{content:()=>{var T;return I("div",{class:[d.m(W.value),d.m("popup-container"),Z.value],onMouseenter:j=>_(j,100),onMouseleave:()=>M(!0),onFocus:j=>_(j,100)},[I("ul",{class:[d.b(),d.m("popup"),d.m(`popup-${z.value}`)],style:ee.value},[(T=a.default)==null?void 0:T.call(a)])])},default:()=>I("div",{class:g.e("title"),onClick:r},p)}):I(pe,{},[I("div",{class:g.e("title"),ref:X,onClick:r},p),I(Ct,{},{default:()=>{var T;return ze(I("ul",{role:"menu",class:[d.b(),d.m("inline")],style:ee.value},[(T=a.default)==null?void 0:T.call(a)]),[[ot,N.value]])}})]);return I("li",{class:[g.b(),g.is("active",U.value),g.is("opened",N.value),g.is("disabled",e.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:N.value,onMouseenter:_,onMouseleave:()=>M(),onFocus:_},[E])}}});const Gt=Ce({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:me(Array),default:()=>st([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,closeOnClickOutside:Boolean,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0},popperOffset:{type:Number,default:6},ellipsisIcon:{type:ne,default:()=>lt},popperEffect:{type:me(String),default:"dark"},popperClass:String,showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300}}),ge=e=>Array.isArray(e)&&e.every(a=>K(a)),Ut={close:(e,a)=>K(e)&&ge(a),open:(e,a)=>K(e)&&ge(a),select:(e,a,n,o)=>K(e)&&ge(a)&&rt(n)&&(o===void 0||o instanceof Promise)};var Yt=y({name:"ElMenu",props:Gt,emits:Ut,setup(e,{emit:a,slots:n,expose:o}){const t=we(),v=t.appContext.config.globalProperties.$router,d=x(),g=$("menu"),u=$("sub-menu"),m=x(-1),c=x(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),b=x(e.defaultActive),C=x({}),P=x({}),X=f(()=>e.mode==="horizontal"||e.mode==="vertical"&&e.collapse),G=()=>{const s=b.value&&C.value[b.value];if(!s||e.mode==="horizontal"||e.collapse)return;s.indexPath.forEach(r=>{const _=P.value[r];_&&z(r,_.indexPath)})},z=(s,l)=>{c.value.includes(s)||(e.uniqueOpened&&(c.value=c.value.filter(r=>l.includes(r))),c.value.push(s),a("open",s,l))},F=s=>{const l=c.value.indexOf(s);l!==-1&&c.value.splice(l,1)},H=(s,l)=>{F(s),a("close",s,l)},R=({index:s,indexPath:l})=>{c.value.includes(s)?H(s,l):z(s,l)},Q=s=>{(e.mode==="horizontal"||e.collapse)&&(c.value=[]);const{index:l,indexPath:r}=s;if(!(ke(l)||ke(r)))if(e.router&&v){const _=s.route||l,M=v.push(_).then(i=>(i||(b.value=l),i));a("select",l,r,{index:l,indexPath:r,route:_},M)}else b.value=l,a("select",l,r,{index:l,indexPath:r})},O=s=>{const l=C.value,r=l[s]||b.value&&l[b.value]||l[e.defaultActive];r?b.value=r.index:b.value=s},N=s=>{const l=getComputedStyle(s),r=Number.parseInt(l.marginLeft,10),_=Number.parseInt(l.marginRight,10);return s.offsetWidth+r+_||0},U=()=>{var s,l;if(!d.value)return-1;const r=Array.from((l=(s=d.value)==null?void 0:s.childNodes)!=null?l:[]).filter(te=>te.nodeName!=="#comment"&&(te.nodeName!=="#text"||te.nodeValue)),_=64,M=getComputedStyle(d.value),i=Number.parseInt(M.paddingLeft,10),p=Number.parseInt(M.paddingRight,10),E=d.value.clientWidth-i-p;let T=0,j=0;return r.forEach((te,Ge)=>{T+=N(te),T<=E-_&&(j=Ge+1)}),j===r.length?-1:j},W=s=>P.value[s].indexPath,Y=(s,l=33.34)=>{let r;return()=>{r&&clearTimeout(r),r=setTimeout(()=>{s()},l)}};let ee=!0;const se=()=>{if(m.value===U())return;const s=()=>{m.value=-1,ct(()=>{m.value=U()})};ee?s():Y(s)(),ee=!1};ue(()=>e.defaultActive,s=>{C.value[s]||(b.value=""),O(s)}),ue(()=>e.collapse,s=>{s&&(c.value=[])}),ue(C.value,G);let Z;it(()=>{e.mode==="horizontal"&&e.ellipsis?Z=ut(d,se).stop:Z==null||Z()});const le=x(!1);{const s=M=>{P.value[M.index]=M},l=M=>{delete P.value[M.index]};_e("rootMenu",Ee({props:e,openedMenus:c,items:C,subMenus:P,activeIndex:b,isMenuPopup:X,addMenuItem:M=>{C.value[M.index]=M},removeMenuItem:M=>{delete C.value[M.index]},addSubMenu:s,removeSubMenu:l,openMenu:z,closeMenu:H,handleMenuItemClick:Q,handleSubMenuClick:R})),_e(`subMenu:${t.uid}`,{addSubMenu:s,removeSubMenu:l,mouseInChild:le,level:0})}Se(()=>{e.mode==="horizontal"&&new Vt(t.vnode.el,g.namespace.value)}),o({open:l=>{const{indexPath:r}=P.value[l];r.forEach(_=>z(_,r))},close:F,handleResize:se});const fe=We(e,0);return()=>{var s,l;let r=(l=(s=n.default)==null?void 0:s.call(n))!=null?l:[];const _=[];if(e.mode==="horizontal"&&d.value){const p=_t(r),E=m.value===-1?p:p.slice(0,m.value),T=m.value===-1?[]:p.slice(m.value);T!=null&&T.length&&e.ellipsis&&(r=E,_.push(I(xe,{index:"sub-menu-more",class:u.e("hide-arrow"),popperOffset:e.popperOffset},{title:()=>I(Ae,{class:u.e("icon-more")},{default:()=>I(e.ellipsisIcon)}),default:()=>T})))}const M=e.closeOnClickOutside?[[Xe,()=>{c.value.length&&(le.value||(c.value.forEach(p=>a("close",p,W(p))),c.value=[]))}]]:[],i=ze(I("ul",{key:String(e.collapse),role:"menubar",ref:d,style:fe.value,class:{[g.b()]:!0,[g.m(e.mode)]:!0,[g.m("collapse")]:e.collapse}},[...r,..._]),M);return e.collapseTransition&&e.mode==="vertical"?I(Wt,()=>i):i}}});const Zt=Ce({index:{type:me([String,null]),default:null},route:{type:me([String,Object])},disabled:Boolean}),Jt={click:e=>K(e.index)&&Array.isArray(e.indexPath)},be="ElMenuItem",Kt=y({name:be,components:{ElTooltip:Pe},props:Zt,emits:Jt,setup(e,{emit:a}){const n=we(),o=de("rootMenu"),t=$("menu"),v=$("menu-item");o||ce(be,"can not inject root menu");const{parentMenu:d,indexPath:g}=Re(n,dt(e,"index")),u=de(`subMenu:${d.value.uid}`);u||ce(be,"can not inject sub menu");const m=f(()=>e.index===o.activeIndex),c=Ee({index:e.index,indexPath:g,active:m}),b=()=>{e.disabled||(o.handleMenuItemClick({index:e.index,indexPath:g.value,route:e.route}),a("click",c))};return Se(()=>{u.addSubMenu(c),o.addMenuItem(c)}),Be(()=>{u.removeSubMenu(c),o.removeMenuItem(c)}),{parentMenu:d,rootMenu:o,active:m,nsMenu:t,nsMenuItem:v,handleClick:b}}});function Xt(e,a,n,o,t,v){const d=He("el-tooltip");return S(),A("li",{class:L([e.nsMenuItem.b(),e.nsMenuItem.is("active",e.active),e.nsMenuItem.is("disabled",e.disabled)]),role:"menuitem",tabindex:"-1",onClick:e.handleClick},[e.parentMenu.type.name==="ElMenu"&&e.rootMenu.props.collapse&&e.$slots.title?(S(),J(d,{key:0,effect:e.rootMenu.props.popperEffect,placement:"right","fallback-placements":["left"],persistent:""},{content:w(()=>[k(e.$slots,"title")]),default:w(()=>[Me("div",{class:L(e.nsMenu.be("tooltip","trigger"))},[k(e.$slots,"default")],2)]),_:3},8,["effect"])):(S(),A(pe,{key:1},[k(e.$slots,"default"),k(e.$slots,"title")],64))],10,["onClick"])}var je=V(Kt,[["render",Xt],["__file","menu-item.vue"]]);const Qt={title:String},en="ElMenuItemGroup",tn=y({name:en,props:Qt,setup(){return{ns:$("menu-item-group")}}});function nn(e,a,n,o,t,v){return S(),A("li",{class:L(e.ns.b())},[Me("div",{class:L(e.ns.e("title"))},[e.$slots.title?k(e.$slots,"title",{key:1}):(S(),A(pe,{key:0},[ae(oe(e.title),1)],64))],2),Me("ul",null,[k(e.$slots,"default")])],2)}var qe=V(tn,[["render",nn],["__file","menu-item-group.vue"]]);const an=ye(Yt,{MenuItem:je,MenuItemGroup:qe,SubMenu:xe}),on=q(je);q(qe);q(xe);const sn=mt("adminData",()=>{const e=x(localStorage.getItem("adminPassword")||""),a=x(!!localStorage.getItem("adminPassword"));function n(o){e.value=o,a.value=!0,localStorage.setItem("adminPassword",o)}return{adminPassword:e,updateAdminPwd:n,isAdmin:a}}),_n=y({__name:"AdminView",setup(e){const a=pt(),n=ft(a),{t:o}=vt(),t=sn(),v=ht(),d=x([{name:o("admin.menu.fileManage"),path:"/admin"},{name:o("admin.menu.systemSetting"),path:"/admin/setting"},{name:o("admin.menu.local"),path:"/admin/local"},{name:o("admin.menu.about"),path:"/admin/about"},{name:o("admin.menu.send"),path:"/#/send"},{name:o("admin.menu.receive"),path:"/#/"}]),g=()=>{bt({url:"/admin/login",method:"post",data:{password:t.adminPassword}}).then(m=>{m.code===200?(t.updateAdminPwd(m.detail.token),Te.success(o("admin.login.loginSuccess"))):(localStorage.clear(),Te.error(o("admin.login.loginError")))})},u=()=>{localStorage.clear()};return(m,c)=>{const b=on,C=an,P=zt,X=He("router-view"),G=Ht,z=At,F=Ye,H=Ze,R=Ke,Q=Je;return h(t).isAdmin?(S(),J(z,{key:0,style:{height:"100vh",width:"100vw",position:"relative","user-select":"none"}},{default:w(()=>[D(P,null,{default:w(()=>[D(C,{mode:"horizontal",router:"","default-active":h(v).path},{default:w(()=>[(S(!0),A(pe,null,gt(d.value,O=>(S(),J(b,{index:O.path,key:O.path},{default:w(()=>[ae(oe(O.name),1)]),_:2},1032,["index"]))),128)),D(b,{style:{float:"right"},onClick:c[0]||(c[0]=O=>h(n)(!h(a)))},{default:w(()=>[ae(oe(h(o)("admin.menu.color")),1)]),_:1}),D(b,{style:{float:"right"},onClick:c[1]||(c[1]=O=>u())},{default:w(()=>[ae(oe(h(o)("admin.menu.signout")),1)]),_:1})]),_:1},8,["default-active"])]),_:1}),D(G,null,{default:w(()=>[D(X)]),_:1})]),_:1})):(S(),J(Q,{key:1,size:"large"},{default:w(()=>[D(R,{label:h(o)("admin.login.managePassword")},{default:w(()=>[D(H,{modelValue:h(t).adminPassword,"onUpdate:modelValue":c[2]||(c[2]=O=>h(t).adminPassword=O),placeholder:h(o)("admin.login.passwordNotEmpty"),type:"password"},{append:w(()=>[D(F,{onClick:g},{default:w(()=>[ae(oe(h(o)("admin.login.login")),1)]),_:1})]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1}))}}});export{_n as default};
diff --git a/themes/2023/assets/AdminView-CwYMxgxP.css b/themes/2023/assets/AdminView-BC_-34Xk.css
similarity index 100%
rename from themes/2023/assets/AdminView-CwYMxgxP.css
rename to themes/2023/assets/AdminView-BC_-34Xk.css
diff --git a/themes/2023/assets/AdminView-CBxY_FuP.js b/themes/2023/assets/AdminView-CBxY_FuP.js
new file mode 100644
index 0000000..9f233f8
--- /dev/null
+++ b/themes/2023/assets/AdminView-CBxY_FuP.js
@@ -0,0 +1 @@
+import{k as ie,T as Ke,t as ce,E as Qe,b as Xe}from"./el-input-D_xPEeA2.js";import{E as Ye,a as Ze}from"./el-form-item-CzDqJHnU.js";import"./el-tooltip-l0sNRNKZ.js";import{E as Pe,C as Je}from"./el-popper-DxfKqvb2.js";import{u as et,a as tt}from"./index-CX7K5KgQ.js";import{_ as V,a as y,u as $,g as X,o as S,w,r as k,aC as Oe,aP as nt,j as h,T as Ne,l as ye,aG as at,c as f,P as A,h as D,n as Ie,ak as q,L as P,I as ue,aQ as ot,D as ve,b as Ce,i as de,s as x,aR as st,aS as lt,t as Ee,$ as re,p as _e,aT as Se,a0 as we,a1 as Be,z as I,W as Ae,G as Y,A as ze,C as ut,ab as pe,aU as $e,aV as ne,al as He,f as it,aW as rt,am as ke,d as me,aX as ct,m as dt,F as mt,aY as pt,M as Le,N as Me,aA as ft,U as ae,R as oe,aK as vt,a8 as ht,B as L,a9 as gt,ac as bt,af as _t,aF as Te}from"./index-5orz1M6_.js";import{f as Mt}from"./vnode-DkiIqzI4.js";import"./_baseClone-IT_4yc7W.js";const yt=y({name:"ElCollapseTransition"}),It=y({...yt,setup(e){const a=$("collapse-transition"),n=t=>{t.style.maxHeight="",t.style.overflow=t.dataset.oldOverflow,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom},o={beforeEnter(t){t.dataset||(t.dataset={}),t.dataset.oldPaddingTop=t.style.paddingTop,t.dataset.oldPaddingBottom=t.style.paddingBottom,t.style.height&&(t.dataset.elExistsHeight=t.style.height),t.style.maxHeight=0,t.style.paddingTop=0,t.style.paddingBottom=0},enter(t){requestAnimationFrame(()=>{t.dataset.oldOverflow=t.style.overflow,t.dataset.elExistsHeight?t.style.maxHeight=t.dataset.elExistsHeight:t.scrollHeight!==0?t.style.maxHeight=`${t.scrollHeight}px`:t.style.maxHeight=0,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom,t.style.overflow="hidden"})},afterEnter(t){t.style.maxHeight="",t.style.overflow=t.dataset.oldOverflow},enterCancelled(t){n(t)},beforeLeave(t){t.dataset||(t.dataset={}),t.dataset.oldPaddingTop=t.style.paddingTop,t.dataset.oldPaddingBottom=t.style.paddingBottom,t.dataset.oldOverflow=t.style.overflow,t.style.maxHeight=`${t.scrollHeight}px`,t.style.overflow="hidden"},leave(t){t.scrollHeight!==0&&(t.style.maxHeight=0,t.style.paddingTop=0,t.style.paddingBottom=0)},afterLeave(t){n(t)},leaveCancelled(t){n(t)}};return(t,v)=>(S(),X(Ne,Oe({name:h(a).b()},nt(o)),{default:w(()=>[k(t.$slots,"default")]),_:3},16,["name"]))}});var Ct=V(It,[["__file","collapse-transition.vue"]]);const Et=ye(Ct),St=y({name:"ElContainer"}),wt=y({...St,props:{direction:{type:String}},setup(e){const a=e,n=at(),o=$("container"),t=f(()=>a.direction==="vertical"?!0:a.direction==="horizontal"?!1:n&&n.default?n.default().some(d=>{const g=d.type.name;return g==="ElHeader"||g==="ElFooter"}):!1);return(v,d)=>(S(),A("section",{class:D([h(o).b(),h(o).is("vertical",h(t))])},[k(v.$slots,"default")],2))}});var xt=V(wt,[["__file","container.vue"]]);const $t=y({name:"ElAside"}),kt=y({...$t,props:{width:{type:String,default:null}},setup(e){const a=e,n=$("aside"),o=f(()=>a.width?n.cssVarBlock({width:a.width}):{});return(t,v)=>(S(),A("aside",{class:D(h(n).b()),style:Ie(h(o))},[k(t.$slots,"default")],6))}});var De=V(kt,[["__file","aside.vue"]]);const Tt=y({name:"ElFooter"}),Pt=y({...Tt,props:{height:{type:String,default:null}},setup(e){const a=e,n=$("footer"),o=f(()=>a.height?n.cssVarBlock({height:a.height}):{});return(t,v)=>(S(),A("footer",{class:D(h(n).b()),style:Ie(h(o))},[k(t.$slots,"default")],6))}});var Ve=V(Pt,[["__file","footer.vue"]]);const Ot=y({name:"ElHeader"}),Nt=y({...Ot,props:{height:{type:String,default:null}},setup(e){const a=e,n=$("header"),o=f(()=>a.height?n.cssVarBlock({height:a.height}):{});return(t,v)=>(S(),A("header",{class:D(h(n).b()),style:Ie(h(o))},[k(t.$slots,"default")],6))}});var Fe=V(Nt,[["__file","header.vue"]]);const Bt=y({name:"ElMain"}),At=y({...Bt,setup(e){const a=$("main");return(n,o)=>(S(),A("main",{class:D(h(a).b())},[k(n.$slots,"default")],2))}});var Re=V(At,[["__file","main.vue"]]);const zt=ye(xt,{Aside:De,Footer:Ve,Header:Fe,Main:Re});q(De);q(Ve);const Ht=q(Fe),Lt=q(Re);let Dt=class{constructor(a,n){this.parent=a,this.domNode=n,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(a){a===this.subMenuItems.length?a=0:a<0&&(a=this.subMenuItems.length-1),this.subMenuItems[a].focus(),this.subIndex=a}addListeners(){const a=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,n=>{n.addEventListener("keydown",o=>{let t=!1;switch(o.code){case P.down:{this.gotoSubIndex(this.subIndex+1),t=!0;break}case P.up:{this.gotoSubIndex(this.subIndex-1),t=!0;break}case P.tab:{ie(a,"mouseleave");break}case P.enter:case P.numpadEnter:case P.space:{t=!0,o.currentTarget.click();break}}return t&&(o.preventDefault(),o.stopPropagation()),!1})})}},Vt=class{constructor(a,n){this.domNode=a,this.submenu=null,this.submenu=null,this.init(n)}init(a){this.domNode.setAttribute("tabindex","0");const n=this.domNode.querySelector(`.${a}-menu`);n&&(this.submenu=new Dt(this,n)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",a=>{let n=!1;switch(a.code){case P.down:{ie(a.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),n=!0;break}case P.up:{ie(a.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),n=!0;break}case P.tab:{ie(a.currentTarget,"mouseleave");break}case P.enter:case P.numpadEnter:case P.space:{n=!0,a.currentTarget.click();break}}n&&a.preventDefault()})}},Ft=class{constructor(a,n){this.domNode=a,this.init(n)}init(a){const n=this.domNode.childNodes;Array.from(n).forEach(o=>{o.nodeType===1&&new Vt(o,a)})}};const Rt=y({name:"ElMenuCollapseTransition",setup(){const e=$("menu");return{listeners:{onBeforeEnter:n=>n.style.opacity="0.2",onEnter(n,o){ue(n,`${e.namespace.value}-opacity-transition`),n.style.opacity="1",o()},onAfterEnter(n){ve(n,`${e.namespace.value}-opacity-transition`),n.style.opacity=""},onBeforeLeave(n){n.dataset||(n.dataset={}),ot(n,e.m("collapse"))?(ve(n,e.m("collapse")),n.dataset.oldOverflow=n.style.overflow,n.dataset.scrollWidth=n.clientWidth.toString(),ue(n,e.m("collapse"))):(ue(n,e.m("collapse")),n.dataset.oldOverflow=n.style.overflow,n.dataset.scrollWidth=n.clientWidth.toString(),ve(n,e.m("collapse"))),n.style.width=`${n.scrollWidth}px`,n.style.overflow="hidden"},onLeave(n){ue(n,"horizontal-collapse-transition"),n.style.width=`${n.dataset.scrollWidth}px`}}}}});function Wt(e,a,n,o,t,v){return S(),X(Ne,Oe({mode:"out-in"},e.listeners),{default:w(()=>[k(e.$slots,"default")]),_:3},16)}var jt=V(Rt,[["render",Wt],["__file","menu-collapse-transition.vue"]]);function We(e,a){const n=f(()=>{let t=e.parent;const v=[a.value];for(;t.type.name!=="ElMenu";)t.props.index&&v.unshift(t.props.index),t=t.parent;return v});return{parentMenu:f(()=>{let t=e.parent;for(;t&&!["ElMenu","ElSubMenu"].includes(t.type.name);)t=t.parent;return t}),indexPath:n}}function qt(e){return f(()=>{const n=e.backgroundColor;return n?new Ke(n).shade(20).toString():""})}const je=(e,a)=>{const n=$("menu");return f(()=>n.cssVarBlock({"text-color":e.textColor||"","hover-text-color":e.textColor||"","bg-color":e.backgroundColor||"","hover-bg-color":qt(e).value||"","active-color":e.activeTextColor||"",level:`${a}`}))},Gt=Ce({index:{type:String,required:!0},showTimeout:Number,hideTimeout:Number,popperClass:String,disabled:Boolean,teleported:{type:Boolean,default:void 0},popperOffset:Number,expandCloseIcon:{type:ne},expandOpenIcon:{type:ne},collapseCloseIcon:{type:ne},collapseOpenIcon:{type:ne}}),he="ElSubMenu";var xe=y({name:he,props:Gt,setup(e,{slots:a,expose:n}){const o=Se(),{indexPath:t,parentMenu:v}=We(o,f(()=>e.index)),d=$("menu"),g=$("sub-menu"),i=de("rootMenu");i||ce(he,"can not inject root menu");const m=de(`subMenu:${v.value.uid}`);m||ce(he,"can not inject sub menu");const c=x({}),b=x({});let C;const O=x(!1),Z=x(),G=x(null),z=f(()=>W.value==="horizontal"&&H.value?"bottom-start":"right-start"),F=f(()=>W.value==="horizontal"&&H.value||W.value==="vertical"&&!i.props.collapse?e.expandCloseIcon&&e.expandOpenIcon?B.value?e.expandOpenIcon:e.expandCloseIcon:st:e.collapseCloseIcon&&e.collapseOpenIcon?B.value?e.collapseOpenIcon:e.collapseCloseIcon:lt),H=f(()=>m.level===0),R=f(()=>{const u=e.teleported;return u===void 0?H.value:u}),J=f(()=>i.props.collapse?`${d.namespace.value}-zoom-in-left`:`${d.namespace.value}-zoom-in-top`),N=f(()=>W.value==="horizontal"&&H.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","right","right-end","left-start","bottom-start","bottom-end","top-start","top-end"]),B=f(()=>i.openedMenus.includes(e.index)),U=f(()=>{let u=!1;return Object.values(c.value).forEach(p=>{p.active&&(u=!0)}),Object.values(b.value).forEach(p=>{p.active&&(u=!0)}),u}),W=f(()=>i.props.mode),K=Ee({index:e.index,indexPath:t,active:U}),ee=je(i.props,m.level+1),se=f(()=>{var u;return(u=e.popperOffset)!=null?u:i.props.popperOffset}),Q=f(()=>{var u;return(u=e.popperClass)!=null?u:i.props.popperClass}),le=f(()=>{var u;return(u=e.showTimeout)!=null?u:i.props.showTimeout}),fe=f(()=>{var u;return(u=e.hideTimeout)!=null?u:i.props.hideTimeout}),s=()=>{var u,p,E;return(E=(p=(u=G.value)==null?void 0:u.popperRef)==null?void 0:p.popperInstanceRef)==null?void 0:E.destroy()},l=u=>{u||s()},r=()=>{i.props.menuTrigger==="hover"&&i.props.mode==="horizontal"||i.props.collapse&&i.props.mode==="vertical"||e.disabled||i.handleSubMenuClick({index:e.index,indexPath:t.value,active:U.value})},_=(u,p=le.value)=>{var E;if(u.type!=="focus"){if(i.props.menuTrigger==="click"&&i.props.mode==="horizontal"||!i.props.collapse&&i.props.mode==="vertical"||e.disabled){m.mouseInChild.value=!0;return}m.mouseInChild.value=!0,C==null||C(),{stop:C}=$e(()=>{i.openMenu(e.index,t.value)},p),R.value&&((E=v.value.vnode.el)==null||E.dispatchEvent(new MouseEvent("mouseenter")))}},M=(u=!1)=>{var p;if(i.props.menuTrigger==="click"&&i.props.mode==="horizontal"||!i.props.collapse&&i.props.mode==="vertical"){m.mouseInChild.value=!1;return}C==null||C(),m.mouseInChild.value=!1,{stop:C}=$e(()=>!O.value&&i.closeMenu(e.index,t.value),fe.value),R.value&&u&&((p=m.handleMouseleave)==null||p.call(m,!0))};re(()=>i.props.collapse,u=>l(!!u));{const u=E=>{b.value[E.index]=E},p=E=>{delete b.value[E.index]};_e(`subMenu:${o.uid}`,{addSubMenu:u,removeSubMenu:p,handleMouseleave:M,mouseInChild:O,level:m.level+1})}return n({opened:B}),we(()=>{i.addSubMenu(K),m.addSubMenu(K)}),Be(()=>{m.removeSubMenu(K),i.removeSubMenu(K)}),()=>{var u;const p=[(u=a.title)==null?void 0:u.call(a),I(Ae,{class:g.e("icon-arrow"),style:{transform:B.value?e.expandCloseIcon&&e.expandOpenIcon||e.collapseCloseIcon&&e.collapseOpenIcon&&i.props.collapse?"none":"rotateZ(180deg)":"none"}},{default:()=>Y(F.value)?I(o.appContext.components[F.value]):I(F.value)})],E=i.isMenuPopup?I(Pe,{ref:G,visible:B.value,effect:"light",pure:!0,offset:se.value,showArrow:!1,persistent:!0,popperClass:Q.value,placement:z.value,teleported:R.value,fallbackPlacements:N.value,transition:J.value,gpuAcceleration:!1},{content:()=>{var T;return I("div",{class:[d.m(W.value),d.m("popup-container"),Q.value],onMouseenter:j=>_(j,100),onMouseleave:()=>M(!0),onFocus:j=>_(j,100)},[I("ul",{class:[d.b(),d.m("popup"),d.m(`popup-${z.value}`)],style:ee.value},[(T=a.default)==null?void 0:T.call(a)])])},default:()=>I("div",{class:g.e("title"),onClick:r},p)}):I(pe,{},[I("div",{class:g.e("title"),ref:Z,onClick:r},p),I(Et,{},{default:()=>{var T;return ze(I("ul",{role:"menu",class:[d.b(),d.m("inline")],style:ee.value},[(T=a.default)==null?void 0:T.call(a)]),[[ut,B.value]])}})]);return I("li",{class:[g.b(),g.is("active",U.value),g.is("opened",B.value),g.is("disabled",e.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:B.value,onMouseenter:_,onMouseleave:()=>M(),onFocus:_},[E])}}});const Ut=Ce({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:me(Array),default:()=>dt([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,closeOnClickOutside:Boolean,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0},popperOffset:{type:Number,default:6},ellipsisIcon:{type:ne,default:()=>ct},popperEffect:{type:me(String),default:"dark"},popperClass:String,showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300}}),ge=e=>He(e)&&e.every(a=>Y(a)),Kt={close:(e,a)=>Y(e)&&ge(a),open:(e,a)=>Y(e)&&ge(a),select:(e,a,n,o)=>Y(e)&&ge(a)&&it(n)&&(o===void 0||o instanceof Promise)};var Qt=y({name:"ElMenu",props:Ut,emits:Kt,setup(e,{emit:a,slots:n,expose:o}){const t=Se(),v=t.appContext.config.globalProperties.$router,d=x(),g=$("menu"),i=$("sub-menu"),m=x(-1),c=x(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),b=x(e.defaultActive),C=x({}),O=x({}),Z=f(()=>e.mode==="horizontal"||e.mode==="vertical"&&e.collapse),G=()=>{const s=b.value&&C.value[b.value];if(!s||e.mode==="horizontal"||e.collapse)return;s.indexPath.forEach(r=>{const _=O.value[r];_&&z(r,_.indexPath)})},z=(s,l)=>{c.value.includes(s)||(e.uniqueOpened&&(c.value=c.value.filter(r=>l.includes(r))),c.value.push(s),a("open",s,l))},F=s=>{const l=c.value.indexOf(s);l!==-1&&c.value.splice(l,1)},H=(s,l)=>{F(s),a("close",s,l)},R=({index:s,indexPath:l})=>{c.value.includes(s)?H(s,l):z(s,l)},J=s=>{(e.mode==="horizontal"||e.collapse)&&(c.value=[]);const{index:l,indexPath:r}=s;if(!(ke(l)||ke(r)))if(e.router&&v){const _=s.route||l,M=v.push(_).then(u=>(u||(b.value=l),u));a("select",l,r,{index:l,indexPath:r,route:_},M)}else b.value=l,a("select",l,r,{index:l,indexPath:r})},N=s=>{const l=C.value,r=l[s]||b.value&&l[b.value]||l[e.defaultActive];r?b.value=r.index:b.value=s},B=s=>{const l=getComputedStyle(s),r=Number.parseInt(l.marginLeft,10),_=Number.parseInt(l.marginRight,10);return s.offsetWidth+r+_||0},U=()=>{var s,l;if(!d.value)return-1;const r=Array.from((l=(s=d.value)==null?void 0:s.childNodes)!=null?l:[]).filter(te=>te.nodeName!=="#text"||te.nodeValue),_=64,M=getComputedStyle(d.value),u=Number.parseInt(M.paddingLeft,10),p=Number.parseInt(M.paddingRight,10),E=d.value.clientWidth-u-p;let T=0,j=0;return r.forEach((te,Ue)=>{te.nodeName!=="#comment"&&(T+=B(te),T<=E-_&&(j=Ue+1))}),j===r.length?-1:j},W=s=>O.value[s].indexPath,K=(s,l=33.34)=>{let r;return()=>{r&&clearTimeout(r),r=setTimeout(()=>{s()},l)}};let ee=!0;const se=()=>{if(m.value===U())return;const s=()=>{m.value=-1,mt(()=>{m.value=U()})};ee?s():K(s)(),ee=!1};re(()=>e.defaultActive,s=>{C.value[s]||(b.value=""),N(s)}),re(()=>e.collapse,s=>{s&&(c.value=[])}),re(C.value,G);let Q;rt(()=>{e.mode==="horizontal"&&e.ellipsis?Q=pt(d,se).stop:Q==null||Q()});const le=x(!1);{const s=M=>{O.value[M.index]=M},l=M=>{delete O.value[M.index]};_e("rootMenu",Ee({props:e,openedMenus:c,items:C,subMenus:O,activeIndex:b,isMenuPopup:Z,addMenuItem:M=>{C.value[M.index]=M},removeMenuItem:M=>{delete C.value[M.index]},addSubMenu:s,removeSubMenu:l,openMenu:z,closeMenu:H,handleMenuItemClick:J,handleSubMenuClick:R})),_e(`subMenu:${t.uid}`,{addSubMenu:s,removeSubMenu:l,mouseInChild:le,level:0})}we(()=>{e.mode==="horizontal"&&new Ft(t.vnode.el,g.namespace.value)}),o({open:l=>{const{indexPath:r}=O.value[l];r.forEach(_=>z(_,r))},close:F,handleResize:se});const fe=je(e,0);return()=>{var s,l;let r=(l=(s=n.default)==null?void 0:s.call(n))!=null?l:[];const _=[];if(e.mode==="horizontal"&&d.value){const p=Mt(r),E=m.value===-1?p:p.slice(0,m.value),T=m.value===-1?[]:p.slice(m.value);T!=null&&T.length&&e.ellipsis&&(r=E,_.push(I(xe,{index:"sub-menu-more",class:i.e("hide-arrow"),popperOffset:e.popperOffset},{title:()=>I(Ae,{class:i.e("icon-more")},{default:()=>I(e.ellipsisIcon)}),default:()=>T})))}const M=e.closeOnClickOutside?[[Je,()=>{c.value.length&&(le.value||(c.value.forEach(p=>a("close",p,W(p))),c.value=[]))}]]:[],u=ze(I("ul",{key:String(e.collapse),role:"menubar",ref:d,style:fe.value,class:{[g.b()]:!0,[g.m(e.mode)]:!0,[g.m("collapse")]:e.collapse}},[...r,..._]),M);return e.collapseTransition&&e.mode==="vertical"?I(jt,()=>u):u}}});const Xt=Ce({index:{type:me([String,null]),default:null},route:{type:me([String,Object])},disabled:Boolean}),Yt={click:e=>Y(e.index)&&He(e.indexPath)},be="ElMenuItem",Zt=y({name:be,components:{ElTooltip:Pe},props:Xt,emits:Yt,setup(e,{emit:a}){const n=Se(),o=de("rootMenu"),t=$("menu"),v=$("menu-item");o||ce(be,"can not inject root menu");const{parentMenu:d,indexPath:g}=We(n,ft(e,"index")),i=de(`subMenu:${d.value.uid}`);i||ce(be,"can not inject sub menu");const m=f(()=>e.index===o.activeIndex),c=Ee({index:e.index,indexPath:g,active:m}),b=()=>{e.disabled||(o.handleMenuItemClick({index:e.index,indexPath:g.value,route:e.route}),a("click",c))};return we(()=>{i.addSubMenu(c),o.addMenuItem(c)}),Be(()=>{i.removeSubMenu(c),o.removeMenuItem(c)}),{parentMenu:d,rootMenu:o,active:m,nsMenu:t,nsMenuItem:v,handleClick:b}}});function Jt(e,a,n,o,t,v){const d=Le("el-tooltip");return S(),A("li",{class:D([e.nsMenuItem.b(),e.nsMenuItem.is("active",e.active),e.nsMenuItem.is("disabled",e.disabled)]),role:"menuitem",tabindex:"-1",onClick:e.handleClick},[e.parentMenu.type.name==="ElMenu"&&e.rootMenu.props.collapse&&e.$slots.title?(S(),X(d,{key:0,effect:e.rootMenu.props.popperEffect,placement:"right","fallback-placements":["left"],persistent:""},{content:w(()=>[k(e.$slots,"title")]),default:w(()=>[Me("div",{class:D(e.nsMenu.be("tooltip","trigger"))},[k(e.$slots,"default")],2)]),_:3},8,["effect"])):(S(),A(pe,{key:1},[k(e.$slots,"default"),k(e.$slots,"title")],64))],10,["onClick"])}var qe=V(Zt,[["render",Jt],["__file","menu-item.vue"]]);const en={title:String},tn="ElMenuItemGroup",nn=y({name:tn,props:en,setup(){return{ns:$("menu-item-group")}}});function an(e,a,n,o,t,v){return S(),A("li",{class:D(e.ns.b())},[Me("div",{class:D(e.ns.e("title"))},[e.$slots.title?k(e.$slots,"title",{key:1}):(S(),A(pe,{key:0},[ae(oe(e.title),1)],64))],2),Me("ul",null,[k(e.$slots,"default")])],2)}var Ge=V(nn,[["render",an],["__file","menu-item-group.vue"]]);const on=ye(Qt,{MenuItem:qe,MenuItemGroup:Ge,SubMenu:xe}),sn=q(qe);q(Ge);q(xe);const ln=vt("adminData",()=>{const e=x(localStorage.getItem("adminPassword")||""),a=x(!!localStorage.getItem("adminPassword"));function n(o){e.value=o,a.value=!0,localStorage.setItem("adminPassword",o)}return{adminPassword:e,updateAdminPwd:n,isAdmin:a}}),_n=y({__name:"AdminView",setup(e){const a=et(),n=tt(a),{t:o}=ht(),t=ln(),v=gt(),d=x([{name:o("admin.menu.fileManage"),path:"/admin"},{name:o("admin.menu.systemSetting"),path:"/admin/setting"},{name:o("admin.menu.local"),path:"/admin/local"},{name:o("admin.menu.about"),path:"/admin/about"},{name:o("admin.menu.send"),path:"/#/send"},{name:o("admin.menu.receive"),path:"/#/"}]),g=()=>{_t({url:"/admin/login",method:"post",data:{password:t.adminPassword}}).then(m=>{m.code===200?(t.updateAdminPwd(m.detail.token),Te.success(o("admin.login.loginSuccess"))):(localStorage.clear(),Te.error(o("admin.login.loginError")))})},i=()=>{localStorage.clear()};return(m,c)=>{const b=sn,C=on,O=Ht,Z=Le("router-view"),G=Lt,z=zt,F=Xe,H=Qe,R=Ze,J=Ye;return h(t).isAdmin?(S(),X(z,{key:0,style:{height:"100vh",width:"100vw",position:"relative","user-select":"none"}},{default:w(()=>[L(O,null,{default:w(()=>[L(C,{mode:"horizontal",router:"","default-active":h(v).path},{default:w(()=>[(S(!0),A(pe,null,bt(d.value,N=>(S(),X(b,{index:N.path,key:N.path},{default:w(()=>[ae(oe(N.name),1)]),_:2},1032,["index"]))),128)),L(b,{style:{float:"right"},onClick:c[0]||(c[0]=N=>h(n)(!h(a)))},{default:w(()=>[ae(oe(h(o)("admin.menu.color")),1)]),_:1}),L(b,{style:{float:"right"},onClick:c[1]||(c[1]=N=>i())},{default:w(()=>[ae(oe(h(o)("admin.menu.signout")),1)]),_:1})]),_:1},8,["default-active"])]),_:1}),L(G,null,{default:w(()=>[L(Z)]),_:1})]),_:1})):(S(),X(J,{key:1,size:"large"},{default:w(()=>[L(R,{label:h(o)("admin.login.managePassword")},{default:w(()=>[L(H,{modelValue:h(t).adminPassword,"onUpdate:modelValue":c[2]||(c[2]=N=>h(t).adminPassword=N),placeholder:h(o)("admin.login.passwordNotEmpty"),type:"password"},{append:w(()=>[L(F,{onClick:g},{default:w(()=>[ae(oe(h(o)("admin.login.login")),1)]),_:1})]),_:1},8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1}))}}});export{_n as default};
diff --git a/themes/2023/assets/CardTools-4F6WeaAR.css b/themes/2023/assets/CardTools-4F6WeaAR.css
deleted file mode 100644
index d147d06..0000000
--- a/themes/2023/assets/CardTools-4F6WeaAR.css
+++ /dev/null
@@ -1 +0,0 @@
-.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;position:absolute;transition:all var(--el-transition-duration)}.el-drawer .btt,.el-drawer .ltr,.el-drawer .rtl,.el-drawer .ttb{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.ltr{left:0}.el-drawer.rtl{right:0}.el-drawer.ttb{top:0}.el-drawer.btt{bottom:0}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:transparent!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.11"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}html.dark pre code.hljs{display:block;overflow-x:auto;padding:1em}html.dark code.hljs{padding:3px 5px}html.dark .hljs{color:#abb2bf;background:#282c34}html.dark .hljs-keyword,html.dark .hljs-operator,html.dark .hljs-pattern-match{color:#f92672}html.dark .hljs-function,html.dark .hljs-pattern-match .hljs-constructor{color:#61aeee}html.dark .hljs-function .hljs-params{color:#a6e22e}html.dark .hljs-function .hljs-params .hljs-typing{color:#fd971f}html.dark .hljs-module-access .hljs-module{color:#7e57c2}html.dark .hljs-constructor{color:#e2b93d}html.dark .hljs-constructor .hljs-string{color:#9ccc65}html.dark .hljs-comment,html.dark .hljs-quote{color:#b18eb1;font-style:italic}html.dark .hljs-doctag,html.dark .hljs-formula{color:#c678dd}html.dark .hljs-deletion,html.dark .hljs-name,html.dark .hljs-section,html.dark .hljs-selector-tag,html.dark .hljs-subst{color:#e06c75}html.dark .hljs-literal{color:#56b6c2}html.dark .hljs-addition,html.dark .hljs-attribute,html.dark .hljs-meta .hljs-string,html.dark .hljs-regexp,html.dark .hljs-string{color:#98c379}html.dark .hljs-built_in,html.dark .hljs-class .hljs-title,html.dark .hljs-title.class_{color:#e6c07b}html.dark .hljs-attr,html.dark .hljs-number,html.dark .hljs-selector-attr,html.dark .hljs-selector-class,html.dark .hljs-selector-pseudo,html.dark .hljs-template-variable,html.dark .hljs-type,html.dark .hljs-variable{color:#d19a66}html.dark .hljs-bullet,html.dark .hljs-link,html.dark .hljs-meta,html.dark .hljs-selector-id,html.dark .hljs-symbol,html.dark .hljs-title{color:#61aeee}html.dark .hljs-emphasis{font-style:italic}html.dark .hljs-strong{font-weight:700}html.dark .hljs-link{text-decoration:underline}html pre code.hljs{display:block;overflow-x:auto;padding:1em}html code.hljs{padding:3px 5px}html code.hljs::-webkit-scrollbar{height:4px}html .hljs{color:#383a42;background:#fafafa}html .hljs-comment,html .hljs-quote{color:#a0a1a7;font-style:italic}html .hljs-doctag,html .hljs-formula,html .hljs-keyword{color:#a626a4}html .hljs-deletion,html .hljs-name,html .hljs-section,html .hljs-selector-tag,html .hljs-subst{color:#e45649}html .hljs-literal{color:#0184bb}html .hljs-addition,html .hljs-attribute,html .hljs-meta .hljs-string,html .hljs-regexp,html .hljs-string{color:#50a14f}html .hljs-attr,html .hljs-number,html .hljs-selector-attr,html .hljs-selector-class,html .hljs-selector-pseudo,html .hljs-template-variable,html .hljs-type,html .hljs-variable{color:#986801}html .hljs-bullet,html .hljs-link,html .hljs-meta,html .hljs-selector-id,html .hljs-symbol,html .hljs-title{color:#4078f2}html .hljs-built_in,html .hljs-class .hljs-title,html .hljs-title.class_{color:#c18401}html .hljs-emphasis{font-style:italic}html .hljs-strong{font-weight:700}html .hljs-link{text-decoration:underline}html.dark .markdown-body{color-scheme:dark;--color-prettylights-syntax-comment: #8b949e;--color-prettylights-syntax-constant: #79c0ff;--color-prettylights-syntax-entity: #d2a8ff;--color-prettylights-syntax-storage-modifier-import: #c9d1d9;--color-prettylights-syntax-entity-tag: #7ee787;--color-prettylights-syntax-keyword: #ff7b72;--color-prettylights-syntax-string: #a5d6ff;--color-prettylights-syntax-variable: #ffa657;--color-prettylights-syntax-brackethighlighter-unmatched: #f85149;--color-prettylights-syntax-invalid-illegal-text: #f0f6fc;--color-prettylights-syntax-invalid-illegal-bg: #8e1519;--color-prettylights-syntax-carriage-return-text: #f0f6fc;--color-prettylights-syntax-carriage-return-bg: #b62324;--color-prettylights-syntax-string-regexp: #7ee787;--color-prettylights-syntax-markup-list: #f2cc60;--color-prettylights-syntax-markup-heading: #1f6feb;--color-prettylights-syntax-markup-italic: #c9d1d9;--color-prettylights-syntax-markup-bold: #c9d1d9;--color-prettylights-syntax-markup-deleted-text: #ffdcd7;--color-prettylights-syntax-markup-deleted-bg: #67060c;--color-prettylights-syntax-markup-inserted-text: #aff5b4;--color-prettylights-syntax-markup-inserted-bg: #033a16;--color-prettylights-syntax-markup-changed-text: #ffdfb6;--color-prettylights-syntax-markup-changed-bg: #5a1e02;--color-prettylights-syntax-markup-ignored-text: #c9d1d9;--color-prettylights-syntax-markup-ignored-bg: #1158c7;--color-prettylights-syntax-meta-diff-range: #d2a8ff;--color-prettylights-syntax-brackethighlighter-angle: #8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;--color-prettylights-syntax-constant-other-reference-link: #a5d6ff;--color-fg-default: #c9d1d9;--color-fg-muted: #8b949e;--color-fg-subtle: #6e7681;--color-canvas-default: #0d1117;--color-canvas-subtle: #161b22;--color-border-default: #30363d;--color-border-muted: #21262d;--color-neutral-muted: rgba(110,118,129,.4);--color-accent-fg: #58a6ff;--color-accent-emphasis: #1f6feb;--color-attention-subtle: rgba(187,128,9,.15);--color-danger-fg: #f85149}html .markdown-body{color-scheme:light;--color-prettylights-syntax-comment: #6e7781;--color-prettylights-syntax-constant: #0550ae;--color-prettylights-syntax-entity: #8250df;--color-prettylights-syntax-storage-modifier-import: #24292f;--color-prettylights-syntax-entity-tag: #116329;--color-prettylights-syntax-keyword: #cf222e;--color-prettylights-syntax-string: #0a3069;--color-prettylights-syntax-variable: #953800;--color-prettylights-syntax-brackethighlighter-unmatched: #82071e;--color-prettylights-syntax-invalid-illegal-text: #f6f8fa;--color-prettylights-syntax-invalid-illegal-bg: #82071e;--color-prettylights-syntax-carriage-return-text: #f6f8fa;--color-prettylights-syntax-carriage-return-bg: #cf222e;--color-prettylights-syntax-string-regexp: #116329;--color-prettylights-syntax-markup-list: #3b2300;--color-prettylights-syntax-markup-heading: #0550ae;--color-prettylights-syntax-markup-italic: #24292f;--color-prettylights-syntax-markup-bold: #24292f;--color-prettylights-syntax-markup-deleted-text: #82071e;--color-prettylights-syntax-markup-deleted-bg: #ffebe9;--color-prettylights-syntax-markup-inserted-text: #116329;--color-prettylights-syntax-markup-inserted-bg: #dafbe1;--color-prettylights-syntax-markup-changed-text: #953800;--color-prettylights-syntax-markup-changed-bg: #ffd8b5;--color-prettylights-syntax-markup-ignored-text: #eaeef2;--color-prettylights-syntax-markup-ignored-bg: #0550ae;--color-prettylights-syntax-meta-diff-range: #8250df;--color-prettylights-syntax-brackethighlighter-angle: #57606a;--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;--color-prettylights-syntax-constant-other-reference-link: #0a3069;--color-fg-default: #24292f;--color-fg-muted: #57606a;--color-fg-subtle: #6e7781;--color-canvas-default: #ffffff;--color-canvas-subtle: #f6f8fa;--color-border-default: #d0d7de;--color-border-muted: hsla(210,18%,87%,1);--color-neutral-muted: rgba(175,184,193,.2);--color-accent-fg: #0969da;--color-accent-emphasis: #0969da;--color-attention-subtle: #fff8c5;--color-danger-fg: #cf222e}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0;color:var(--color-fg-default);background-color:var(--color-canvas-default);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .octicon{display:inline-block;fill:currentColor;vertical-align:text-bottom}.markdown-body h1:hover .anchor .octicon-link:before,.markdown-body h2:hover .anchor .octicon-link:before,.markdown-body h3:hover .anchor .octicon-link:before,.markdown-body h4:hover .anchor .octicon-link:before,.markdown-body h5:hover .anchor .octicon-link:before,.markdown-body h6:hover .anchor .octicon-link:before{width:16px;height:16px;content:" ";display:inline-block;background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,")}.markdown-body details,.markdown-body figcaption,.markdown-body figure{display:block}.markdown-body summary{display:list-item}.markdown-body [hidden]{display:none!important}.markdown-body a{background-color:transparent;color:var(--color-accent-fg);text-decoration:none}.markdown-body abbr[title]{border-bottom:none;text-decoration:underline dotted}.markdown-body b,.markdown-body strong{font-weight:var(--base-text-weight-semibold, 600)}.markdown-body dfn{font-style:italic}.markdown-body h1{margin:.67em 0;font-weight:var(--base-text-weight-semibold, 600);padding-bottom:.3em;font-size:2em;border-bottom:1px solid var(--color-border-muted)}.markdown-body mark{background-color:var(--color-attention-subtle);color:var(--color-fg-default)}.markdown-body small{font-size:90%}.markdown-body sub,.markdown-body sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.markdown-body sub{bottom:-.25em}.markdown-body sup{top:-.5em}.markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:var(--color-canvas-default)}.markdown-body code,.markdown-body kbd,.markdown-body pre,.markdown-body samp{font-family:monospace;font-size:1em}.markdown-body figure{margin:1em 40px}.markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-border-muted);height:.25em;padding:0;margin:24px 0;background-color:var(--color-border-default);border:0}.markdown-body input{font:inherit;margin:0;overflow:visible;font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body [type=button],.markdown-body [type=reset],.markdown-body [type=submit]{-webkit-appearance:button}.markdown-body [type=checkbox],.markdown-body [type=radio]{box-sizing:border-box;padding:0}.markdown-body [type=number]::-webkit-inner-spin-button,.markdown-body [type=number]::-webkit-outer-spin-button{height:auto}.markdown-body [type=search]::-webkit-search-cancel-button,.markdown-body [type=search]::-webkit-search-decoration{-webkit-appearance:none}.markdown-body ::-webkit-input-placeholder{color:inherit;opacity:.54}.markdown-body ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.markdown-body a:hover{text-decoration:underline}.markdown-body ::placeholder{color:var(--color-fg-subtle);opacity:1}.markdown-body hr:before{display:table;content:""}.markdown-body hr:after{display:table;clear:both;content:""}.markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body details:not([open])>*:not(summary){display:none!important}.markdown-body a:focus,.markdown-body [role=button]:focus,.markdown-body input[type=radio]:focus,.markdown-body input[type=checkbox]:focus{outline:2px solid var(--color-accent-fg);outline-offset:-2px;box-shadow:none}.markdown-body a:focus:not(:focus-visible),.markdown-body [role=button]:focus:not(:focus-visible),.markdown-body input[type=radio]:focus:not(:focus-visible),.markdown-body input[type=checkbox]:focus:not(:focus-visible){outline:solid 1px transparent}.markdown-body a:focus-visible,.markdown-body [role=button]:focus-visible,.markdown-body input[type=radio]:focus-visible,.markdown-body input[type=checkbox]:focus-visible{outline:2px solid var(--color-accent-fg);outline-offset:-2px;box-shadow:none}.markdown-body a:not([class]):focus,.markdown-body a:not([class]):focus-visible,.markdown-body input[type=radio]:focus,.markdown-body input[type=radio]:focus-visible,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=checkbox]:focus-visible{outline-offset:0}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height:10px;color:var(--color-fg-default);vertical-align:middle;background-color:var(--color-canvas-subtle);border:solid 1px var(--color-neutral-muted);border-bottom-color:var(--color-neutral-muted);border-radius:6px;box-shadow:inset 0 -1px 0 var(--color-neutral-muted)}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:var(--base-text-weight-semibold, 600);line-height:1.25}.markdown-body h2{font-weight:var(--base-text-weight-semibold, 600);padding-bottom:.3em;font-size:1.5em;border-bottom:1px solid var(--color-border-muted)}.markdown-body h3{font-weight:var(--base-text-weight-semibold, 600);font-size:1.25em}.markdown-body h4{font-weight:var(--base-text-weight-semibold, 600);font-size:1em}.markdown-body h5{font-weight:var(--base-text-weight-semibold, 600);font-size:.875em}.markdown-body h6{font-weight:var(--base-text-weight-semibold, 600);font-size:.85em;color:var(--color-fg-muted)}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-fg-muted);border-left:.25em solid var(--color-border-default)}.markdown-body ul,.markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ul ul ol,.markdown-body ul ol ol,.markdown-body ol ul ol,.markdown-body ol ol ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body tt,.markdown-body code,.markdown-body samp{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.markdown-body pre{margin-top:0;margin-bottom:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px;word-wrap:normal}.markdown-body .octicon{display:inline-block;overflow:visible!important;vertical-align:text-bottom;fill:currentColor}.markdown-body input::-webkit-outer-spin-button,.markdown-body input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.markdown-body:before{display:table;content:""}.markdown-body:after{display:table;clear:both;content:""}.markdown-body>*:first-child{margin-top:0!important}.markdown-body>*:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:var(--color-danger-fg)}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre,.markdown-body details{margin-top:0;margin-bottom:16px}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:var(--color-fg-default);vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 tt,.markdown-body h1 code,.markdown-body h2 tt,.markdown-body h2 code,.markdown-body h3 tt,.markdown-body h3 code,.markdown-body h4 tt,.markdown-body h4 code,.markdown-body h5 tt,.markdown-body h5 code,.markdown-body h6 tt,.markdown-body h6 code{padding:0 .2em;font-size:inherit}.markdown-body summary h1,.markdown-body summary h2,.markdown-body summary h3,.markdown-body summary h4,.markdown-body summary h5,.markdown-body summary h6{display:inline-block}.markdown-body summary h1 .anchor,.markdown-body summary h2 .anchor,.markdown-body summary h3 .anchor,.markdown-body summary h4 .anchor,.markdown-body summary h5 .anchor,.markdown-body summary h6 .anchor{margin-left:-40px}.markdown-body summary h1,.markdown-body summary h2{padding-bottom:0;border-bottom:0}.markdown-body ul.no-list,.markdown-body ol.no-list{padding:0;list-style-type:none}.markdown-body ol[type=a]{list-style-type:lower-alpha}.markdown-body ol[type=A]{list-style-type:upper-alpha}.markdown-body ol[type=i]{list-style-type:lower-roman}.markdown-body ol[type=I]{list-style-type:upper-roman}.markdown-body ol[type="1"]{list-style-type:decimal}.markdown-body div>ol:not([type]){list-style-type:decimal}.markdown-body ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:var(--base-text-weight-semibold, 600)}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table th{font-weight:var(--base-text-weight-semibold, 600)}.markdown-body table th,.markdown-body table td{padding:6px 13px;border:1px solid var(--color-border-default)}.markdown-body table tr{background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-muted)}.markdown-body table tr:nth-child(2n){background-color:var(--color-canvas-subtle)}.markdown-body table img{background-color:transparent}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{max-width:none;vertical-align:text-top;background-color:transparent}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{display:block;float:left;width:auto;padding:7px;margin:13px 0 0;overflow:hidden;border:1px solid var(--color-border-default)}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{display:block;padding:5px 0 0;clear:both;color:var(--color-fg-default)}.markdown-body span.align-center{display:block;overflow:hidden;clear:both}.markdown-body span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{display:block;overflow:hidden;clear:both}.markdown-body span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.markdown-body span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.markdown-body code,.markdown-body tt{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;background-color:var(--color-neutral-muted);border-radius:6px}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{text-decoration:inherit}.markdown-body samp{font-size:85%}.markdown-body pre code{font-size:100%}.markdown-body pre>code{padding:0;margin:0;word-break:normal;white-space:pre;background:transparent;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:var(--color-canvas-subtle);border-radius:6px}.markdown-body pre code,.markdown-body pre tt{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body .csv-data td,.markdown-body .csv-data th{padding:5px;overflow:hidden;font-size:12px;line-height:1;text-align:left;white-space:nowrap}.markdown-body .csv-data .blob-num{padding:10px 8px 9px;text-align:right;background:var(--color-canvas-default);border:0}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{font-weight:var(--base-text-weight-semibold, 600);background:var(--color-canvas-subtle);border-top:0}.markdown-body [data-footnote-ref]:before{content:"["}.markdown-body [data-footnote-ref]:after{content:"]"}.markdown-body .footnotes{font-size:12px;color:var(--color-fg-muted);border-top:1px solid var(--color-border-default)}.markdown-body .footnotes ol{padding-left:16px}.markdown-body .footnotes ol ul{display:inline-block;padding-left:16px;margin-top:16px}.markdown-body .footnotes li{position:relative}.markdown-body .footnotes li:target:before{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-24px;pointer-events:none;content:"";border:2px solid var(--color-accent-emphasis);border-radius:6px}.markdown-body .footnotes li:target{color:var(--color-fg-default)}.markdown-body .footnotes .data-footnote-backref g-emoji{font-family:monospace}.markdown-body .pl-c{color:var(--color-prettylights-syntax-comment)}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:var(--color-prettylights-syntax-constant)}.markdown-body .pl-e,.markdown-body .pl-en{color:var(--color-prettylights-syntax-entity)}.markdown-body .pl-smi,.markdown-body .pl-s .pl-s1{color:var(--color-prettylights-syntax-storage-modifier-import)}.markdown-body .pl-ent{color:var(--color-prettylights-syntax-entity-tag)}.markdown-body .pl-k{color:var(--color-prettylights-syntax-keyword)}.markdown-body .pl-s,.markdown-body .pl-pds,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sre,.markdown-body .pl-sr .pl-sra{color:var(--color-prettylights-syntax-string)}.markdown-body .pl-v,.markdown-body .pl-smw{color:var(--color-prettylights-syntax-variable)}.markdown-body .pl-bu{color:var(--color-prettylights-syntax-brackethighlighter-unmatched)}.markdown-body .pl-ii{color:var(--color-prettylights-syntax-invalid-illegal-text);background-color:var(--color-prettylights-syntax-invalid-illegal-bg)}.markdown-body .pl-c2{color:var(--color-prettylights-syntax-carriage-return-text);background-color:var(--color-prettylights-syntax-carriage-return-bg)}.markdown-body .pl-sr .pl-cce{font-weight:700;color:var(--color-prettylights-syntax-string-regexp)}.markdown-body .pl-ml{color:var(--color-prettylights-syntax-markup-list)}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:var(--color-prettylights-syntax-markup-heading)}.markdown-body .pl-mi{font-style:italic;color:var(--color-prettylights-syntax-markup-italic)}.markdown-body .pl-mb{font-weight:700;color:var(--color-prettylights-syntax-markup-bold)}.markdown-body .pl-md{color:var(--color-prettylights-syntax-markup-deleted-text);background-color:var(--color-prettylights-syntax-markup-deleted-bg)}.markdown-body .pl-mi1{color:var(--color-prettylights-syntax-markup-inserted-text);background-color:var(--color-prettylights-syntax-markup-inserted-bg)}.markdown-body .pl-mc{color:var(--color-prettylights-syntax-markup-changed-text);background-color:var(--color-prettylights-syntax-markup-changed-bg)}.markdown-body .pl-mi2{color:var(--color-prettylights-syntax-markup-ignored-text);background-color:var(--color-prettylights-syntax-markup-ignored-bg)}.markdown-body .pl-mdr{font-weight:700;color:var(--color-prettylights-syntax-meta-diff-range)}.markdown-body .pl-ba{color:var(--color-prettylights-syntax-brackethighlighter-angle)}.markdown-body .pl-sg{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.markdown-body .pl-corl{text-decoration:underline;color:var(--color-prettylights-syntax-constant-other-reference-link)}.markdown-body g-emoji{display:inline-block;min-width:1ch;font-family:"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;font-size:1em;font-style:normal!important;font-weight:var(--base-text-weight-normal, 400);line-height:1;vertical-align:-.075em}.markdown-body g-emoji img{width:1em;height:1em}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item label{font-weight:var(--base-text-weight-normal, 400)}.markdown-body .task-list-item.enabled label{cursor:pointer}.markdown-body .task-list-item+.task-list-item{margin-top:4px}.markdown-body .task-list-item .handle{display:none}.markdown-body .task-list-item-checkbox{margin:0 .2em .25em -1.4em;vertical-align:middle}.markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}.markdown-body .contains-task-list{position:relative}.markdown-body .contains-task-list:hover .task-list-item-convert-container,.markdown-body .contains-task-list:focus-within .task-list-item-convert-container{display:block;width:auto;height:24px;overflow:visible;clip:auto}.markdown-body ::-webkit-calendar-picker-indicator{filter:invert(50%)}.markdown-body{background-color:transparent;font-size:14px}.markdown-body p{white-space:pre-wrap}.markdown-body ol{list-style-type:decimal}.markdown-body ul{list-style-type:disc}.markdown-body pre code,.markdown-body pre tt{line-height:1.65}.markdown-body code.hljs{padding:0}.markdown-body .code-block-wrapper{position:relative;padding-top:24px}.markdown-body .code-block-header{position:absolute;top:5px;right:0;width:100%;padding:0 1rem;display:flex;justify-content:flex-end;align-items:center;color:#b3b3b3}.markdown-body .code-block-header__copy{cursor:pointer;margin-left:.5rem;-webkit-user-select:none;user-select:none}.markdown-body .code-block-header__copy:hover{color:#65a665}html.dark .message-reply .whitespace-pre-wrap{white-space:pre-wrap;color:var(--n-text-color)}html.dark .highlight pre,html.dark pre{background-color:#282c34}.markdown-body{box-sizing:border-box;background:none}.markdown-body *{font-size:.9rem}@media (max-width: 767px){.markdown-body{padding:15px}}.chat-container{display:flex;flex-direction:column;margin:auto;max-width:1080px;padding:0 5px;height:100%}.chat-messages{flex-grow:1;overflow-y:auto;border-radius:10px 10px 0 0;padding:8px}.chat-message{display:flex;flex-direction:column;margin-bottom:30px}.chat-message-bubble{padding:8px;align-self:flex-start;color:#2f4f4f;border-radius:8px 8px 8px 0;background:linear-gradient(to right,#c9d6ff,#e2e2e2);box-shadow:0 16px 20px #aea7df0f;max-width:80%}.chat-toolbar-icon{margin-left:5px;cursor:pointer}.chat-message-meta{display:flex;position:relative;margin-top:4px}.n-input-wrapper{padding-right:0}.chat-message-nickname-and-time{color:#999;font-size:12px}.is-me{justify-content:flex-end}.n-input .n-input__suffix,.n-input .n-input__prefix{display:block}.n-input .n-input-wrapper{padding-right:0}.n-input .n-input__suffix .n-button{border-radius:8px!important;width:80px;height:30px;position:absolute;right:10px;bottom:10px;box-shadow:inset 0 1px 3px #0000004d;background-image:linear-gradient(-56deg,#0773ff 5%,#797eff);--n-border: none !important}.chat-message.is-me .chat-message-bubble{background:linear-gradient(to right,#56ccf2,#2f80ed);border-radius:8px 8px 0!important;box-shadow:0 16px 20px #aea7df0f;align-self:flex-end}
diff --git a/themes/2023/assets/CardTools-BeU-pM3r.css b/themes/2023/assets/CardTools-BeU-pM3r.css
new file mode 100644
index 0000000..98912a2
--- /dev/null
+++ b/themes/2023/assets/CardTools-BeU-pM3r.css
@@ -0,0 +1 @@
+.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;position:absolute;transition:all var(--el-transition-duration)}.el-drawer .btt,.el-drawer .ltr,.el-drawer .rtl,.el-drawer .ttb{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.ltr{left:0}.el-drawer.rtl{right:0}.el-drawer.ttb{top:0}.el-drawer.btt{bottom:0}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:transparent!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.21"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}html.dark pre code.hljs{display:block;overflow-x:auto;padding:1em}html.dark code.hljs{padding:3px 5px}html.dark .hljs{color:#abb2bf;background:#282c34}html.dark .hljs-keyword,html.dark .hljs-operator,html.dark .hljs-pattern-match{color:#f92672}html.dark .hljs-function,html.dark .hljs-pattern-match .hljs-constructor{color:#61aeee}html.dark .hljs-function .hljs-params{color:#a6e22e}html.dark .hljs-function .hljs-params .hljs-typing{color:#fd971f}html.dark .hljs-module-access .hljs-module{color:#7e57c2}html.dark .hljs-constructor{color:#e2b93d}html.dark .hljs-constructor .hljs-string{color:#9ccc65}html.dark .hljs-comment,html.dark .hljs-quote{color:#b18eb1;font-style:italic}html.dark .hljs-doctag,html.dark .hljs-formula{color:#c678dd}html.dark .hljs-deletion,html.dark .hljs-name,html.dark .hljs-section,html.dark .hljs-selector-tag,html.dark .hljs-subst{color:#e06c75}html.dark .hljs-literal{color:#56b6c2}html.dark .hljs-addition,html.dark .hljs-attribute,html.dark .hljs-meta .hljs-string,html.dark .hljs-regexp,html.dark .hljs-string{color:#98c379}html.dark .hljs-built_in,html.dark .hljs-class .hljs-title,html.dark .hljs-title.class_{color:#e6c07b}html.dark .hljs-attr,html.dark .hljs-number,html.dark .hljs-selector-attr,html.dark .hljs-selector-class,html.dark .hljs-selector-pseudo,html.dark .hljs-template-variable,html.dark .hljs-type,html.dark .hljs-variable{color:#d19a66}html.dark .hljs-bullet,html.dark .hljs-link,html.dark .hljs-meta,html.dark .hljs-selector-id,html.dark .hljs-symbol,html.dark .hljs-title{color:#61aeee}html.dark .hljs-emphasis{font-style:italic}html.dark .hljs-strong{font-weight:700}html.dark .hljs-link{text-decoration:underline}html pre code.hljs{display:block;overflow-x:auto;padding:1em}html code.hljs{padding:3px 5px}html code.hljs::-webkit-scrollbar{height:4px}html .hljs{color:#383a42;background:#fafafa}html .hljs-comment,html .hljs-quote{color:#a0a1a7;font-style:italic}html .hljs-doctag,html .hljs-formula,html .hljs-keyword{color:#a626a4}html .hljs-deletion,html .hljs-name,html .hljs-section,html .hljs-selector-tag,html .hljs-subst{color:#e45649}html .hljs-literal{color:#0184bb}html .hljs-addition,html .hljs-attribute,html .hljs-meta .hljs-string,html .hljs-regexp,html .hljs-string{color:#50a14f}html .hljs-attr,html .hljs-number,html .hljs-selector-attr,html .hljs-selector-class,html .hljs-selector-pseudo,html .hljs-template-variable,html .hljs-type,html .hljs-variable{color:#986801}html .hljs-bullet,html .hljs-link,html .hljs-meta,html .hljs-selector-id,html .hljs-symbol,html .hljs-title{color:#4078f2}html .hljs-built_in,html .hljs-class .hljs-title,html .hljs-title.class_{color:#c18401}html .hljs-emphasis{font-style:italic}html .hljs-strong{font-weight:700}html .hljs-link{text-decoration:underline}html.dark .markdown-body{color-scheme:dark;--color-prettylights-syntax-comment: #8b949e;--color-prettylights-syntax-constant: #79c0ff;--color-prettylights-syntax-entity: #d2a8ff;--color-prettylights-syntax-storage-modifier-import: #c9d1d9;--color-prettylights-syntax-entity-tag: #7ee787;--color-prettylights-syntax-keyword: #ff7b72;--color-prettylights-syntax-string: #a5d6ff;--color-prettylights-syntax-variable: #ffa657;--color-prettylights-syntax-brackethighlighter-unmatched: #f85149;--color-prettylights-syntax-invalid-illegal-text: #f0f6fc;--color-prettylights-syntax-invalid-illegal-bg: #8e1519;--color-prettylights-syntax-carriage-return-text: #f0f6fc;--color-prettylights-syntax-carriage-return-bg: #b62324;--color-prettylights-syntax-string-regexp: #7ee787;--color-prettylights-syntax-markup-list: #f2cc60;--color-prettylights-syntax-markup-heading: #1f6feb;--color-prettylights-syntax-markup-italic: #c9d1d9;--color-prettylights-syntax-markup-bold: #c9d1d9;--color-prettylights-syntax-markup-deleted-text: #ffdcd7;--color-prettylights-syntax-markup-deleted-bg: #67060c;--color-prettylights-syntax-markup-inserted-text: #aff5b4;--color-prettylights-syntax-markup-inserted-bg: #033a16;--color-prettylights-syntax-markup-changed-text: #ffdfb6;--color-prettylights-syntax-markup-changed-bg: #5a1e02;--color-prettylights-syntax-markup-ignored-text: #c9d1d9;--color-prettylights-syntax-markup-ignored-bg: #1158c7;--color-prettylights-syntax-meta-diff-range: #d2a8ff;--color-prettylights-syntax-brackethighlighter-angle: #8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;--color-prettylights-syntax-constant-other-reference-link: #a5d6ff;--color-fg-default: #c9d1d9;--color-fg-muted: #8b949e;--color-fg-subtle: #6e7681;--color-canvas-default: #0d1117;--color-canvas-subtle: #161b22;--color-border-default: #30363d;--color-border-muted: #21262d;--color-neutral-muted: rgba(110,118,129,.4);--color-accent-fg: #58a6ff;--color-accent-emphasis: #1f6feb;--color-attention-subtle: rgba(187,128,9,.15);--color-danger-fg: #f85149}html .markdown-body{color-scheme:light;--color-prettylights-syntax-comment: #6e7781;--color-prettylights-syntax-constant: #0550ae;--color-prettylights-syntax-entity: #8250df;--color-prettylights-syntax-storage-modifier-import: #24292f;--color-prettylights-syntax-entity-tag: #116329;--color-prettylights-syntax-keyword: #cf222e;--color-prettylights-syntax-string: #0a3069;--color-prettylights-syntax-variable: #953800;--color-prettylights-syntax-brackethighlighter-unmatched: #82071e;--color-prettylights-syntax-invalid-illegal-text: #f6f8fa;--color-prettylights-syntax-invalid-illegal-bg: #82071e;--color-prettylights-syntax-carriage-return-text: #f6f8fa;--color-prettylights-syntax-carriage-return-bg: #cf222e;--color-prettylights-syntax-string-regexp: #116329;--color-prettylights-syntax-markup-list: #3b2300;--color-prettylights-syntax-markup-heading: #0550ae;--color-prettylights-syntax-markup-italic: #24292f;--color-prettylights-syntax-markup-bold: #24292f;--color-prettylights-syntax-markup-deleted-text: #82071e;--color-prettylights-syntax-markup-deleted-bg: #ffebe9;--color-prettylights-syntax-markup-inserted-text: #116329;--color-prettylights-syntax-markup-inserted-bg: #dafbe1;--color-prettylights-syntax-markup-changed-text: #953800;--color-prettylights-syntax-markup-changed-bg: #ffd8b5;--color-prettylights-syntax-markup-ignored-text: #eaeef2;--color-prettylights-syntax-markup-ignored-bg: #0550ae;--color-prettylights-syntax-meta-diff-range: #8250df;--color-prettylights-syntax-brackethighlighter-angle: #57606a;--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;--color-prettylights-syntax-constant-other-reference-link: #0a3069;--color-fg-default: #24292f;--color-fg-muted: #57606a;--color-fg-subtle: #6e7781;--color-canvas-default: #ffffff;--color-canvas-subtle: #f6f8fa;--color-border-default: #d0d7de;--color-border-muted: hsla(210,18%,87%,1);--color-neutral-muted: rgba(175,184,193,.2);--color-accent-fg: #0969da;--color-accent-emphasis: #0969da;--color-attention-subtle: #fff8c5;--color-danger-fg: #cf222e}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0;color:var(--color-fg-default);background-color:var(--color-canvas-default);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .octicon{display:inline-block;fill:currentColor;vertical-align:text-bottom}.markdown-body h1:hover .anchor .octicon-link:before,.markdown-body h2:hover .anchor .octicon-link:before,.markdown-body h3:hover .anchor .octicon-link:before,.markdown-body h4:hover .anchor .octicon-link:before,.markdown-body h5:hover .anchor .octicon-link:before,.markdown-body h6:hover .anchor .octicon-link:before{width:16px;height:16px;content:" ";display:inline-block;background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,")}.markdown-body details,.markdown-body figcaption,.markdown-body figure{display:block}.markdown-body summary{display:list-item}.markdown-body [hidden]{display:none!important}.markdown-body a{background-color:transparent;color:var(--color-accent-fg);text-decoration:none}.markdown-body abbr[title]{border-bottom:none;text-decoration:underline dotted}.markdown-body b,.markdown-body strong{font-weight:var(--base-text-weight-semibold, 600)}.markdown-body dfn{font-style:italic}.markdown-body h1{margin:.67em 0;font-weight:var(--base-text-weight-semibold, 600);padding-bottom:.3em;font-size:2em;border-bottom:1px solid var(--color-border-muted)}.markdown-body mark{background-color:var(--color-attention-subtle);color:var(--color-fg-default)}.markdown-body small{font-size:90%}.markdown-body sub,.markdown-body sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.markdown-body sub{bottom:-.25em}.markdown-body sup{top:-.5em}.markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:var(--color-canvas-default)}.markdown-body code,.markdown-body kbd,.markdown-body pre,.markdown-body samp{font-family:monospace;font-size:1em}.markdown-body figure{margin:1em 40px}.markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-border-muted);height:.25em;padding:0;margin:24px 0;background-color:var(--color-border-default);border:0}.markdown-body input{font:inherit;margin:0;overflow:visible;font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body [type=button],.markdown-body [type=reset],.markdown-body [type=submit]{-webkit-appearance:button}.markdown-body [type=checkbox],.markdown-body [type=radio]{box-sizing:border-box;padding:0}.markdown-body [type=number]::-webkit-inner-spin-button,.markdown-body [type=number]::-webkit-outer-spin-button{height:auto}.markdown-body [type=search]::-webkit-search-cancel-button,.markdown-body [type=search]::-webkit-search-decoration{-webkit-appearance:none}.markdown-body ::-webkit-input-placeholder{color:inherit;opacity:.54}.markdown-body ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.markdown-body a:hover{text-decoration:underline}.markdown-body ::placeholder{color:var(--color-fg-subtle);opacity:1}.markdown-body hr:before{display:table;content:""}.markdown-body hr:after{display:table;clear:both;content:""}.markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body details:not([open])>*:not(summary){display:none!important}.markdown-body a:focus,.markdown-body [role=button]:focus,.markdown-body input[type=radio]:focus,.markdown-body input[type=checkbox]:focus{outline:2px solid var(--color-accent-fg);outline-offset:-2px;box-shadow:none}.markdown-body a:focus:not(:focus-visible),.markdown-body [role=button]:focus:not(:focus-visible),.markdown-body input[type=radio]:focus:not(:focus-visible),.markdown-body input[type=checkbox]:focus:not(:focus-visible){outline:solid 1px transparent}.markdown-body a:focus-visible,.markdown-body [role=button]:focus-visible,.markdown-body input[type=radio]:focus-visible,.markdown-body input[type=checkbox]:focus-visible{outline:2px solid var(--color-accent-fg);outline-offset:-2px;box-shadow:none}.markdown-body a:not([class]):focus,.markdown-body a:not([class]):focus-visible,.markdown-body input[type=radio]:focus,.markdown-body input[type=radio]:focus-visible,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=checkbox]:focus-visible{outline-offset:0}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height:10px;color:var(--color-fg-default);vertical-align:middle;background-color:var(--color-canvas-subtle);border:solid 1px var(--color-neutral-muted);border-bottom-color:var(--color-neutral-muted);border-radius:6px;box-shadow:inset 0 -1px 0 var(--color-neutral-muted)}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:var(--base-text-weight-semibold, 600);line-height:1.25}.markdown-body h2{font-weight:var(--base-text-weight-semibold, 600);padding-bottom:.3em;font-size:1.5em;border-bottom:1px solid var(--color-border-muted)}.markdown-body h3{font-weight:var(--base-text-weight-semibold, 600);font-size:1.25em}.markdown-body h4{font-weight:var(--base-text-weight-semibold, 600);font-size:1em}.markdown-body h5{font-weight:var(--base-text-weight-semibold, 600);font-size:.875em}.markdown-body h6{font-weight:var(--base-text-weight-semibold, 600);font-size:.85em;color:var(--color-fg-muted)}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-fg-muted);border-left:.25em solid var(--color-border-default)}.markdown-body ul,.markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ul ul ol,.markdown-body ul ol ol,.markdown-body ol ul ol,.markdown-body ol ol ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body tt,.markdown-body code,.markdown-body samp{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.markdown-body pre{margin-top:0;margin-bottom:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px;word-wrap:normal}.markdown-body .octicon{display:inline-block;overflow:visible!important;vertical-align:text-bottom;fill:currentColor}.markdown-body input::-webkit-outer-spin-button,.markdown-body input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.markdown-body:before{display:table;content:""}.markdown-body:after{display:table;clear:both;content:""}.markdown-body>*:first-child{margin-top:0!important}.markdown-body>*:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:var(--color-danger-fg)}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre,.markdown-body details{margin-top:0;margin-bottom:16px}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:var(--color-fg-default);vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 tt,.markdown-body h1 code,.markdown-body h2 tt,.markdown-body h2 code,.markdown-body h3 tt,.markdown-body h3 code,.markdown-body h4 tt,.markdown-body h4 code,.markdown-body h5 tt,.markdown-body h5 code,.markdown-body h6 tt,.markdown-body h6 code{padding:0 .2em;font-size:inherit}.markdown-body summary h1,.markdown-body summary h2,.markdown-body summary h3,.markdown-body summary h4,.markdown-body summary h5,.markdown-body summary h6{display:inline-block}.markdown-body summary h1 .anchor,.markdown-body summary h2 .anchor,.markdown-body summary h3 .anchor,.markdown-body summary h4 .anchor,.markdown-body summary h5 .anchor,.markdown-body summary h6 .anchor{margin-left:-40px}.markdown-body summary h1,.markdown-body summary h2{padding-bottom:0;border-bottom:0}.markdown-body ul.no-list,.markdown-body ol.no-list{padding:0;list-style-type:none}.markdown-body ol[type=a]{list-style-type:lower-alpha}.markdown-body ol[type=A]{list-style-type:upper-alpha}.markdown-body ol[type=i]{list-style-type:lower-roman}.markdown-body ol[type=I]{list-style-type:upper-roman}.markdown-body ol[type="1"]{list-style-type:decimal}.markdown-body div>ol:not([type]){list-style-type:decimal}.markdown-body ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:var(--base-text-weight-semibold, 600)}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table th{font-weight:var(--base-text-weight-semibold, 600)}.markdown-body table th,.markdown-body table td{padding:6px 13px;border:1px solid var(--color-border-default)}.markdown-body table tr{background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-muted)}.markdown-body table tr:nth-child(2n){background-color:var(--color-canvas-subtle)}.markdown-body table img{background-color:transparent}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{max-width:none;vertical-align:text-top;background-color:transparent}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{display:block;float:left;width:auto;padding:7px;margin:13px 0 0;overflow:hidden;border:1px solid var(--color-border-default)}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{display:block;padding:5px 0 0;clear:both;color:var(--color-fg-default)}.markdown-body span.align-center{display:block;overflow:hidden;clear:both}.markdown-body span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{display:block;overflow:hidden;clear:both}.markdown-body span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.markdown-body span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.markdown-body code,.markdown-body tt{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;background-color:var(--color-neutral-muted);border-radius:6px}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{text-decoration:inherit}.markdown-body samp{font-size:85%}.markdown-body pre code{font-size:100%}.markdown-body pre>code{padding:0;margin:0;word-break:normal;white-space:pre;background:transparent;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:var(--color-canvas-subtle);border-radius:6px}.markdown-body pre code,.markdown-body pre tt{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body .csv-data td,.markdown-body .csv-data th{padding:5px;overflow:hidden;font-size:12px;line-height:1;text-align:left;white-space:nowrap}.markdown-body .csv-data .blob-num{padding:10px 8px 9px;text-align:right;background:var(--color-canvas-default);border:0}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{font-weight:var(--base-text-weight-semibold, 600);background:var(--color-canvas-subtle);border-top:0}.markdown-body [data-footnote-ref]:before{content:"["}.markdown-body [data-footnote-ref]:after{content:"]"}.markdown-body .footnotes{font-size:12px;color:var(--color-fg-muted);border-top:1px solid var(--color-border-default)}.markdown-body .footnotes ol{padding-left:16px}.markdown-body .footnotes ol ul{display:inline-block;padding-left:16px;margin-top:16px}.markdown-body .footnotes li{position:relative}.markdown-body .footnotes li:target:before{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-24px;pointer-events:none;content:"";border:2px solid var(--color-accent-emphasis);border-radius:6px}.markdown-body .footnotes li:target{color:var(--color-fg-default)}.markdown-body .footnotes .data-footnote-backref g-emoji{font-family:monospace}.markdown-body .pl-c{color:var(--color-prettylights-syntax-comment)}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:var(--color-prettylights-syntax-constant)}.markdown-body .pl-e,.markdown-body .pl-en{color:var(--color-prettylights-syntax-entity)}.markdown-body .pl-smi,.markdown-body .pl-s .pl-s1{color:var(--color-prettylights-syntax-storage-modifier-import)}.markdown-body .pl-ent{color:var(--color-prettylights-syntax-entity-tag)}.markdown-body .pl-k{color:var(--color-prettylights-syntax-keyword)}.markdown-body .pl-s,.markdown-body .pl-pds,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sre,.markdown-body .pl-sr .pl-sra{color:var(--color-prettylights-syntax-string)}.markdown-body .pl-v,.markdown-body .pl-smw{color:var(--color-prettylights-syntax-variable)}.markdown-body .pl-bu{color:var(--color-prettylights-syntax-brackethighlighter-unmatched)}.markdown-body .pl-ii{color:var(--color-prettylights-syntax-invalid-illegal-text);background-color:var(--color-prettylights-syntax-invalid-illegal-bg)}.markdown-body .pl-c2{color:var(--color-prettylights-syntax-carriage-return-text);background-color:var(--color-prettylights-syntax-carriage-return-bg)}.markdown-body .pl-sr .pl-cce{font-weight:700;color:var(--color-prettylights-syntax-string-regexp)}.markdown-body .pl-ml{color:var(--color-prettylights-syntax-markup-list)}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:var(--color-prettylights-syntax-markup-heading)}.markdown-body .pl-mi{font-style:italic;color:var(--color-prettylights-syntax-markup-italic)}.markdown-body .pl-mb{font-weight:700;color:var(--color-prettylights-syntax-markup-bold)}.markdown-body .pl-md{color:var(--color-prettylights-syntax-markup-deleted-text);background-color:var(--color-prettylights-syntax-markup-deleted-bg)}.markdown-body .pl-mi1{color:var(--color-prettylights-syntax-markup-inserted-text);background-color:var(--color-prettylights-syntax-markup-inserted-bg)}.markdown-body .pl-mc{color:var(--color-prettylights-syntax-markup-changed-text);background-color:var(--color-prettylights-syntax-markup-changed-bg)}.markdown-body .pl-mi2{color:var(--color-prettylights-syntax-markup-ignored-text);background-color:var(--color-prettylights-syntax-markup-ignored-bg)}.markdown-body .pl-mdr{font-weight:700;color:var(--color-prettylights-syntax-meta-diff-range)}.markdown-body .pl-ba{color:var(--color-prettylights-syntax-brackethighlighter-angle)}.markdown-body .pl-sg{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.markdown-body .pl-corl{text-decoration:underline;color:var(--color-prettylights-syntax-constant-other-reference-link)}.markdown-body g-emoji{display:inline-block;min-width:1ch;font-family:"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;font-size:1em;font-style:normal!important;font-weight:var(--base-text-weight-normal, 400);line-height:1;vertical-align:-.075em}.markdown-body g-emoji img{width:1em;height:1em}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item label{font-weight:var(--base-text-weight-normal, 400)}.markdown-body .task-list-item.enabled label{cursor:pointer}.markdown-body .task-list-item+.task-list-item{margin-top:4px}.markdown-body .task-list-item .handle{display:none}.markdown-body .task-list-item-checkbox{margin:0 .2em .25em -1.4em;vertical-align:middle}.markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}.markdown-body .contains-task-list{position:relative}.markdown-body .contains-task-list:hover .task-list-item-convert-container,.markdown-body .contains-task-list:focus-within .task-list-item-convert-container{display:block;width:auto;height:24px;overflow:visible;clip:auto}.markdown-body ::-webkit-calendar-picker-indicator{filter:invert(50%)}.markdown-body{background-color:transparent;font-size:14px}.markdown-body p{white-space:pre-wrap}.markdown-body ol{list-style-type:decimal}.markdown-body ul{list-style-type:disc}.markdown-body pre code,.markdown-body pre tt{line-height:1.65}.markdown-body code.hljs{padding:0}.markdown-body .code-block-wrapper{position:relative;padding-top:24px}.markdown-body .code-block-header{position:absolute;top:5px;right:0;width:100%;padding:0 1rem;display:flex;justify-content:flex-end;align-items:center;color:#b3b3b3}.markdown-body .code-block-header__copy{cursor:pointer;margin-left:.5rem;-webkit-user-select:none;user-select:none}.markdown-body .code-block-header__copy:hover{color:#65a665}html.dark .message-reply .whitespace-pre-wrap{white-space:pre-wrap;color:var(--n-text-color)}html.dark .highlight pre,html.dark pre{background-color:#282c34}.markdown-body{box-sizing:border-box;background:none}.markdown-body *{font-size:.9rem}@media (max-width: 767px){.markdown-body{padding:15px}}.chat-container{display:flex;flex-direction:column;margin:auto;max-width:1080px;padding:0 5px;height:100%}.chat-messages{flex-grow:1;overflow-y:auto;border-radius:10px 10px 0 0;padding:8px}.chat-message{display:flex;flex-direction:column;margin-bottom:30px}.chat-message-bubble{padding:8px;align-self:flex-start;color:#2f4f4f;border-radius:8px 8px 8px 0;background:linear-gradient(to right,#c9d6ff,#e2e2e2);box-shadow:0 16px 20px #aea7df0f;max-width:80%}.chat-toolbar-icon{margin-left:5px;cursor:pointer}.chat-message-meta{display:flex;position:relative;margin-top:4px}.n-input-wrapper{padding-right:0}.chat-message-nickname-and-time{color:#999;font-size:12px}.is-me{justify-content:flex-end}.n-input .n-input__suffix,.n-input .n-input__prefix{display:block}.n-input .n-input-wrapper{padding-right:0}.n-input .n-input__suffix .n-button{border-radius:8px!important;width:80px;height:30px;position:absolute;right:10px;bottom:10px;box-shadow:inset 0 1px 3px #0000004d;background-image:linear-gradient(-56deg,#0773ff 5%,#797eff);--n-border: none !important}.chat-message.is-me .chat-message-bubble{background:linear-gradient(to right,#56ccf2,#2f80ed);border-radius:8px 8px 0!important;box-shadow:0 16px 20px #aea7df0f;align-self:flex-end}
diff --git a/themes/2023/assets/CardTools.vue_vue_type_script_setup_true_lang-CMcmqUZX.js b/themes/2023/assets/CardTools.vue_vue_type_script_setup_true_lang-CMcmqUZX.js
new file mode 100644
index 0000000..cb6e3a3
--- /dev/null
+++ b/themes/2023/assets/CardTools.vue_vue_type_script_setup_true_lang-CMcmqUZX.js
@@ -0,0 +1,297 @@
+import{e as lg,a as cg,j as ug,b as dg}from"./el-input-D_xPEeA2.js";import{u as _g,a as mg}from"./index-CX7K5KgQ.js";import{b as bm,_ as hm,a as gn,aG as pg,c as St,s as pn,u as Tm,ao as gg,aH as Eg,g as Dt,o as Ne,w as ze,B as ot,T as fg,j as X,A as Sg,N as it,aC as bg,O as hg,P as rt,Q as Tn,h as bt,r as Yn,R as pt,W as Ol,as as Cm,C as Tg,l as Rm,d as ka,aI as Cg,aq as Rg,aJ as Ng,ar as yg,a2 as Og,G as _u,n as Bn,k as Ag,aK as Nm,t as mu,z as Ft,aL as ym,a0 as vg,ab as Cl,a8 as Ig,a9 as Om,U as mn,ac as pu,aF as Dg,aa as xg,aM as Mg,ad as wg,aN as Lg,aO as kg,ae as Pg}from"./index-5orz1M6_.js";import{e as Fg,f as Bg,g as Ug,E as Gg,h as Yg,d as qg}from"./config-C0oXmCul.js";import{E as zg}from"./el-tag-DsWzxe9q.js";var Hg=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Al(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}const Vg=bm({...Bg,direction:{type:String,default:"rtl",values:["ltr","rtl","ttb","btt"]},size:{type:[String,Number],default:"30%"},withHeader:{type:Boolean,default:!0},modalFade:{type:Boolean,default:!0},headerAriaLevel:{type:String,default:"2"}}),Wg=Fg,$g=gn({name:"ElDrawer",inheritAttrs:!1}),Kg=gn({...$g,props:Vg,emits:Wg,setup(t,{expose:e}){const a=t,o=pg();lg({scope:"el-drawer",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/drawer.html#slots"},St(()=>!!o.title));const c=pn(),s=pn(),d=Tm("drawer"),{t:u}=gg(),{afterEnter:_,afterLeave:p,beforeLeave:S,visible:h,rendered:y,titleId:O,bodyId:N,zIndex:w,onModalClick:L,onOpenAutoFocus:D,onCloseAutoFocus:U,onFocusoutPrevented:x,onCloseRequested:G,handleClose:F}=Ug(a,c),z=St(()=>a.direction==="rtl"||a.direction==="ltr"),$=St(()=>Eg(a.size));return e({handleClose:F,afterEnter:_,afterLeave:p}),(V,ee)=>(Ne(),Dt(X(ug),{to:V.appendTo,disabled:V.appendTo!=="body"?!1:!V.appendToBody},{default:ze(()=>[ot(fg,{name:X(d).b("fade"),onAfterEnter:X(_),onAfterLeave:X(p),onBeforeLeave:X(S),persisted:""},{default:ze(()=>[Sg(ot(X(Gg),{mask:V.modal,"overlay-class":V.modalClass,"z-index":X(w),onClick:X(L)},{default:ze(()=>[ot(X(cg),{loop:"",trapped:X(h),"focus-trap-el":c.value,"focus-start-el":s.value,onFocusAfterTrapped:X(D),onFocusAfterReleased:X(U),onFocusoutPrevented:X(x),onReleaseRequested:X(G)},{default:ze(()=>[it("div",bg({ref_key:"drawerRef",ref:c,"aria-modal":"true","aria-label":V.title||void 0,"aria-labelledby":V.title?void 0:X(O),"aria-describedby":X(N)},V.$attrs,{class:[X(d).b(),V.direction,X(h)&&"open"],style:X(z)?"width: "+X($):"height: "+X($),role:"dialog",onClick:hg(()=>{},["stop"])}),[it("span",{ref_key:"focusStartRef",ref:s,class:bt(X(d).e("sr-focus")),tabindex:"-1"},null,2),V.withHeader?(Ne(),rt("header",{key:0,class:bt([X(d).e("header"),V.headerClass])},[V.$slots.title?Yn(V.$slots,"title",{key:1},()=>[Tn(" DEPRECATED SLOT ")]):Yn(V.$slots,"header",{key:0,close:X(F),titleId:X(O),titleClass:X(d).e("title")},()=>[V.$slots.title?Tn("v-if",!0):(Ne(),rt("span",{key:0,id:X(O),role:"heading","aria-level":V.headerAriaLevel,class:bt(X(d).e("title"))},pt(V.title),11,["id","aria-level"]))]),V.showClose?(Ne(),rt("button",{key:2,"aria-label":X(u)("el.drawer.close"),class:bt(X(d).e("close-btn")),type:"button",onClick:X(F)},[ot(X(Ol),{class:bt(X(d).e("close"))},{default:ze(()=>[ot(X(Cm))]),_:1},8,["class"])],10,["aria-label","onClick"])):Tn("v-if",!0)],2)):Tn("v-if",!0),X(y)?(Ne(),rt("div",{key:1,id:X(N),class:bt([X(d).e("body"),V.bodyClass])},[Yn(V.$slots,"default")],10,["id"])):Tn("v-if",!0),V.$slots.footer?(Ne(),rt("div",{key:2,class:bt([X(d).e("footer"),V.footerClass])},[Yn(V.$slots,"footer")],2)):Tn("v-if",!0)],16,["aria-label","aria-labelledby","aria-describedby","onClick"])]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])]),_:3},8,["mask","overlay-class","z-index","onClick"]),[[Tg,X(h)]])]),_:3},8,["name","onAfterEnter","onAfterLeave","onBeforeLeave"])]),_:3},8,["to","disabled"]))}});var Qg=hm(Kg,[["__file","drawer.vue"]]);const Xg=Rm(Qg),Zg=bm({type:{type:String,default:"line",values:["line","circle","dashboard"]},percentage:{type:Number,default:0,validator:t=>t>=0&&t<=100},status:{type:String,default:"",values:["","success","exception","warning"]},indeterminate:Boolean,duration:{type:Number,default:3},strokeWidth:{type:Number,default:6},strokeLinecap:{type:ka(String),default:"round"},textInside:Boolean,width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:ka([String,Array,Function]),default:""},striped:Boolean,stripedFlow:Boolean,format:{type:ka(Function),default:t=>`${t}%`}}),Jg=gn({name:"ElProgress"}),jg=gn({...Jg,props:Zg,setup(t){const e=t,a={success:"#13ce66",exception:"#ff4949",warning:"#e6a23c",default:"#20a0ff"},o=Tm("progress"),c=St(()=>{const x={width:`${e.percentage}%`,animationDuration:`${e.duration}s`},G=U(e.percentage);return G.includes("gradient")?x.background=G:x.backgroundColor=G,x}),s=St(()=>(e.strokeWidth/e.width*100).toFixed(1)),d=St(()=>["circle","dashboard"].includes(e.type)?Number.parseInt(`${50-Number.parseFloat(s.value)/2}`,10):0),u=St(()=>{const x=d.value,G=e.type==="dashboard";return`
+ M 50 50
+ m 0 ${G?"":"-"}${x}
+ a ${x} ${x} 0 1 1 0 ${G?"-":""}${x*2}
+ a ${x} ${x} 0 1 1 0 ${G?"":"-"}${x*2}
+ `}),_=St(()=>2*Math.PI*d.value),p=St(()=>e.type==="dashboard"?.75:1),S=St(()=>`${-1*_.value*(1-p.value)/2}px`),h=St(()=>({strokeDasharray:`${_.value*p.value}px, ${_.value}px`,strokeDashoffset:S.value})),y=St(()=>({strokeDasharray:`${_.value*p.value*(e.percentage/100)}px, ${_.value}px`,strokeDashoffset:S.value,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s"})),O=St(()=>{let x;return e.color?x=U(e.percentage):x=a[e.status]||a.default,x}),N=St(()=>e.status==="warning"?Cg:e.type==="line"?e.status==="success"?Rg:Ng:e.status==="success"?yg:Cm),w=St(()=>e.type==="line"?12+e.strokeWidth*.4:e.width*.111111+2),L=St(()=>e.format(e.percentage));function D(x){const G=100/x.length;return x.map((z,$)=>_u(z)?{color:z,percentage:($+1)*G}:z).sort((z,$)=>z.percentage-$.percentage)}const U=x=>{var G;const{color:F}=e;if(Og(F))return F(x);if(_u(F))return F;{const z=D(F);for(const $ of z)if($.percentage>x)return $.color;return(G=z[z.length-1])==null?void 0:G.color}};return(x,G)=>(Ne(),rt("div",{class:bt([X(o).b(),X(o).m(x.type),X(o).is(x.status),{[X(o).m("without-text")]:!x.showText,[X(o).m("text-inside")]:x.textInside}]),role:"progressbar","aria-valuenow":x.percentage,"aria-valuemin":"0","aria-valuemax":"100"},[x.type==="line"?(Ne(),rt("div",{key:0,class:bt(X(o).b("bar"))},[it("div",{class:bt(X(o).be("bar","outer")),style:Bn({height:`${x.strokeWidth}px`})},[it("div",{class:bt([X(o).be("bar","inner"),{[X(o).bem("bar","inner","indeterminate")]:x.indeterminate},{[X(o).bem("bar","inner","striped")]:x.striped},{[X(o).bem("bar","inner","striped-flow")]:x.stripedFlow}]),style:Bn(X(c))},[(x.showText||x.$slots.default)&&x.textInside?(Ne(),rt("div",{key:0,class:bt(X(o).be("bar","innerText"))},[Yn(x.$slots,"default",{percentage:x.percentage},()=>[it("span",null,pt(X(L)),1)])],2)):Tn("v-if",!0)],6)],6)],2)):(Ne(),rt("div",{key:1,class:bt(X(o).b("circle")),style:Bn({height:`${x.width}px`,width:`${x.width}px`})},[(Ne(),rt("svg",{viewBox:"0 0 100 100"},[it("path",{class:bt(X(o).be("circle","track")),d:X(u),stroke:`var(${X(o).cssVarName("fill-color-light")}, #e5e9f2)`,"stroke-linecap":x.strokeLinecap,"stroke-width":X(s),fill:"none",style:Bn(X(h))},null,14,["d","stroke","stroke-linecap","stroke-width"]),it("path",{class:bt(X(o).be("circle","path")),d:X(u),stroke:X(O),fill:"none",opacity:x.percentage?1:0,"stroke-linecap":x.strokeLinecap,"stroke-width":X(s),style:Bn(X(y))},null,14,["d","stroke","opacity","stroke-linecap","stroke-width"])]))],6)),(x.showText||x.$slots.default)&&!x.textInside?(Ne(),rt("div",{key:2,class:bt(X(o).e("text")),style:Bn({fontSize:`${X(w)}px`})},[Yn(x.$slots,"default",{percentage:x.percentage},()=>[x.status?(Ne(),Dt(X(Ol),{key:1},{default:ze(()=>[(Ne(),Dt(Ag(X(N))))]),_:1})):(Ne(),rt("span",{key:0},pt(X(L)),1))])],6)):Tn("v-if",!0)],10,["aria-valuenow"]))}});var eE=hm(jg,[["__file","progress.vue"]]);const tE=Rm(eE),nE=Nm("fileData",()=>{const t=mu(JSON.parse(localStorage.getItem("receiveData")||"[]")||[]),e=mu(JSON.parse(localStorage.getItem("shareData")||"[]")||[]);function a(){localStorage.setItem("receiveData",JSON.stringify(t)),localStorage.setItem("shareData",JSON.stringify(e))}function o(u){t.unshift(u),a()}function c(u){e.unshift(u),a()}function s(u){t.splice(u,1),a()}function d(u){e.splice(u,1),a()}return{receiveData:t,shareData:e,save:a,addShareData:c,addReceiveData:o,deleteReceiveData:s,deleteShareData:d}}),Am=Nm("fileBox",()=>({showFileBox:pn(!1)}));function vm(t){return t instanceof Map?t.clear=t.delete=t.set=function(){throw new Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=function(){throw new Error("set is read-only")}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach(e=>{const a=t[e],o=typeof a;(o==="object"||o==="function")&&!Object.isFrozen(a)&&vm(a)}),t}class gu{constructor(e){e.data===void 0&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function Im(t){return t.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function Nn(t,...e){const a=Object.create(null);for(const o in t)a[o]=t[o];return e.forEach(function(o){for(const c in o)a[c]=o[c]}),a}const rE="",Eu=t=>!!t.scope,aE=(t,{prefix:e})=>{if(t.startsWith("language:"))return t.replace("language:","language-");if(t.includes(".")){const a=t.split(".");return[`${e}${a.shift()}`,...a.map((o,c)=>`${o}${"_".repeat(c+1)}`)].join(" ")}return`${e}${t}`};class iE{constructor(e,a){this.buffer="",this.classPrefix=a.classPrefix,e.walk(this)}addText(e){this.buffer+=Im(e)}openNode(e){if(!Eu(e))return;const a=aE(e.scope,{prefix:this.classPrefix});this.span(a)}closeNode(e){Eu(e)&&(this.buffer+=rE)}value(){return this.buffer}span(e){this.buffer+=``}}const fu=(t={})=>{const e={children:[]};return Object.assign(e,t),e};class vl{constructor(){this.rootNode=fu(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const a=fu({scope:e});this.add(a),this.stack.push(a)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,a){return typeof a=="string"?e.addText(a):a.children&&(e.openNode(a),a.children.forEach(o=>this._walk(e,o)),e.closeNode(a)),e}static _collapse(e){typeof e!="string"&&e.children&&(e.children.every(a=>typeof a=="string")?e.children=[e.children.join("")]:e.children.forEach(a=>{vl._collapse(a)}))}}class oE extends vl{constructor(e){super(),this.options=e}addText(e){e!==""&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,a){const o=e.root;a&&(o.scope=`language:${a}`),this.add(o)}toHTML(){return new iE(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function or(t){return t?typeof t=="string"?t:t.source:null}function Dm(t){return Ln("(?=",t,")")}function sE(t){return Ln("(?:",t,")*")}function lE(t){return Ln("(?:",t,")?")}function Ln(...t){return t.map(a=>or(a)).join("")}function cE(t){const e=t[t.length-1];return typeof e=="object"&&e.constructor===Object?(t.splice(t.length-1,1),e):{}}function Il(...t){return"("+(cE(t).capture?"":"?:")+t.map(o=>or(o)).join("|")+")"}function xm(t){return new RegExp(t.toString()+"|").exec("").length-1}function uE(t,e){const a=t&&t.exec(e);return a&&a.index===0}const dE=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Dl(t,{joinWith:e}){let a=0;return t.map(o=>{a+=1;const c=a;let s=or(o),d="";for(;s.length>0;){const u=dE.exec(s);if(!u){d+=s;break}d+=s.substring(0,u.index),s=s.substring(u.index+u[0].length),u[0][0]==="\\"&&u[1]?d+="\\"+String(Number(u[1])+c):(d+=u[0],u[0]==="("&&a++)}return d}).map(o=>`(${o})`).join(e)}const _E=/\b\B/,Mm="[a-zA-Z]\\w*",xl="[a-zA-Z_]\\w*",wm="\\b\\d+(\\.\\d+)?",Lm="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",km="\\b(0b[01]+)",mE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",pE=(t={})=>{const e=/^#![ ]*\//;return t.binary&&(t.begin=Ln(e,/.*\b/,t.binary,/\b.*/)),Nn({scope:"meta",begin:e,end:/$/,relevance:0,"on:begin":(a,o)=>{a.index!==0&&o.ignoreMatch()}},t)},sr={begin:"\\\\[\\s\\S]",relevance:0},gE={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[sr]},EE={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[sr]},fE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Yr=function(t,e,a={}){const o=Nn({scope:"comment",begin:t,end:e,contains:[]},a);o.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const c=Il("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return o.contains.push({begin:Ln(/[ ]+/,"(",c,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),o},SE=Yr("//","$"),bE=Yr("/\\*","\\*/"),hE=Yr("#","$"),TE={scope:"number",begin:wm,relevance:0},CE={scope:"number",begin:Lm,relevance:0},RE={scope:"number",begin:km,relevance:0},NE={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[sr,{begin:/\[/,end:/\]/,relevance:0,contains:[sr]}]},yE={scope:"title",begin:Mm,relevance:0},OE={scope:"title",begin:xl,relevance:0},AE={begin:"\\.\\s*"+xl,relevance:0},vE=function(t){return Object.assign(t,{"on:begin":(e,a)=>{a.data._beginMatch=e[1]},"on:end":(e,a)=>{a.data._beginMatch!==e[1]&&a.ignoreMatch()}})};var wr=Object.freeze({__proto__:null,APOS_STRING_MODE:gE,BACKSLASH_ESCAPE:sr,BINARY_NUMBER_MODE:RE,BINARY_NUMBER_RE:km,COMMENT:Yr,C_BLOCK_COMMENT_MODE:bE,C_LINE_COMMENT_MODE:SE,C_NUMBER_MODE:CE,C_NUMBER_RE:Lm,END_SAME_AS_BEGIN:vE,HASH_COMMENT_MODE:hE,IDENT_RE:Mm,MATCH_NOTHING_RE:_E,METHOD_GUARD:AE,NUMBER_MODE:TE,NUMBER_RE:wm,PHRASAL_WORDS_MODE:fE,QUOTE_STRING_MODE:EE,REGEXP_MODE:NE,RE_STARTERS_RE:mE,SHEBANG:pE,TITLE_MODE:yE,UNDERSCORE_IDENT_RE:xl,UNDERSCORE_TITLE_MODE:OE});function IE(t,e){t.input[t.index-1]==="."&&e.ignoreMatch()}function DE(t,e){t.className!==void 0&&(t.scope=t.className,delete t.className)}function xE(t,e){e&&t.beginKeywords&&(t.begin="\\b("+t.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",t.__beforeBegin=IE,t.keywords=t.keywords||t.beginKeywords,delete t.beginKeywords,t.relevance===void 0&&(t.relevance=0))}function ME(t,e){Array.isArray(t.illegal)&&(t.illegal=Il(...t.illegal))}function wE(t,e){if(t.match){if(t.begin||t.end)throw new Error("begin & end are not supported with match");t.begin=t.match,delete t.match}}function LE(t,e){t.relevance===void 0&&(t.relevance=1)}const kE=(t,e)=>{if(!t.beforeMatch)return;if(t.starts)throw new Error("beforeMatch cannot be used with starts");const a=Object.assign({},t);Object.keys(t).forEach(o=>{delete t[o]}),t.keywords=a.keywords,t.begin=Ln(a.beforeMatch,Dm(a.begin)),t.starts={relevance:0,contains:[Object.assign(a,{endsParent:!0})]},t.relevance=0,delete a.beforeMatch},PE=["of","and","for","in","not","or","if","then","parent","list","value"],FE="keyword";function Pm(t,e,a=FE){const o=Object.create(null);return typeof t=="string"?c(a,t.split(" ")):Array.isArray(t)?c(a,t):Object.keys(t).forEach(function(s){Object.assign(o,Pm(t[s],e,s))}),o;function c(s,d){e&&(d=d.map(u=>u.toLowerCase())),d.forEach(function(u){const _=u.split("|");o[_[0]]=[s,BE(_[0],_[1])]})}}function BE(t,e){return e?Number(e):UE(t)?0:1}function UE(t){return PE.includes(t.toLowerCase())}const Su={},Mn=t=>{console.error(t)},bu=(t,...e)=>{console.log(`WARN: ${t}`,...e)},Un=(t,e)=>{Su[`${t}/${e}`]||(console.log(`Deprecated as of ${t}. ${e}`),Su[`${t}/${e}`]=!0)},Fr=new Error;function Fm(t,e,{key:a}){let o=0;const c=t[a],s={},d={};for(let u=1;u<=e.length;u++)d[u+o]=c[u],s[u+o]=!0,o+=xm(e[u-1]);t[a]=d,t[a]._emit=s,t[a]._multi=!0}function GE(t){if(Array.isArray(t.begin)){if(t.skip||t.excludeBegin||t.returnBegin)throw Mn("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Fr;if(typeof t.beginScope!="object"||t.beginScope===null)throw Mn("beginScope must be object"),Fr;Fm(t,t.begin,{key:"beginScope"}),t.begin=Dl(t.begin,{joinWith:""})}}function YE(t){if(Array.isArray(t.end)){if(t.skip||t.excludeEnd||t.returnEnd)throw Mn("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Fr;if(typeof t.endScope!="object"||t.endScope===null)throw Mn("endScope must be object"),Fr;Fm(t,t.end,{key:"endScope"}),t.end=Dl(t.end,{joinWith:""})}}function qE(t){t.scope&&typeof t.scope=="object"&&t.scope!==null&&(t.beginScope=t.scope,delete t.scope)}function zE(t){qE(t),typeof t.beginScope=="string"&&(t.beginScope={_wrap:t.beginScope}),typeof t.endScope=="string"&&(t.endScope={_wrap:t.endScope}),GE(t),YE(t)}function HE(t){function e(d,u){return new RegExp(or(d),"m"+(t.case_insensitive?"i":"")+(t.unicodeRegex?"u":"")+(u?"g":""))}class a{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(u,_){_.position=this.position++,this.matchIndexes[this.matchAt]=_,this.regexes.push([_,u]),this.matchAt+=xm(u)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const u=this.regexes.map(_=>_[1]);this.matcherRe=e(Dl(u,{joinWith:"|"}),!0),this.lastIndex=0}exec(u){this.matcherRe.lastIndex=this.lastIndex;const _=this.matcherRe.exec(u);if(!_)return null;const p=_.findIndex((h,y)=>y>0&&h!==void 0),S=this.matchIndexes[p];return _.splice(0,p),Object.assign(_,S)}}class o{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(u){if(this.multiRegexes[u])return this.multiRegexes[u];const _=new a;return this.rules.slice(u).forEach(([p,S])=>_.addRule(p,S)),_.compile(),this.multiRegexes[u]=_,_}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(u,_){this.rules.push([u,_]),_.type==="begin"&&this.count++}exec(u){const _=this.getMatcher(this.regexIndex);_.lastIndex=this.lastIndex;let p=_.exec(u);if(this.resumingScanAtSamePosition()&&!(p&&p.index===this.lastIndex)){const S=this.getMatcher(0);S.lastIndex=this.lastIndex+1,p=S.exec(u)}return p&&(this.regexIndex+=p.position+1,this.regexIndex===this.count&&this.considerAll()),p}}function c(d){const u=new o;return d.contains.forEach(_=>u.addRule(_.begin,{rule:_,type:"begin"})),d.terminatorEnd&&u.addRule(d.terminatorEnd,{type:"end"}),d.illegal&&u.addRule(d.illegal,{type:"illegal"}),u}function s(d,u){const _=d;if(d.isCompiled)return _;[DE,wE,zE,kE].forEach(S=>S(d,u)),t.compilerExtensions.forEach(S=>S(d,u)),d.__beforeBegin=null,[xE,ME,LE].forEach(S=>S(d,u)),d.isCompiled=!0;let p=null;return typeof d.keywords=="object"&&d.keywords.$pattern&&(d.keywords=Object.assign({},d.keywords),p=d.keywords.$pattern,delete d.keywords.$pattern),p=p||/\w+/,d.keywords&&(d.keywords=Pm(d.keywords,t.case_insensitive)),_.keywordPatternRe=e(p,!0),u&&(d.begin||(d.begin=/\B|\b/),_.beginRe=e(_.begin),!d.end&&!d.endsWithParent&&(d.end=/\B|\b/),d.end&&(_.endRe=e(_.end)),_.terminatorEnd=or(_.end)||"",d.endsWithParent&&u.terminatorEnd&&(_.terminatorEnd+=(d.end?"|":"")+u.terminatorEnd)),d.illegal&&(_.illegalRe=e(d.illegal)),d.contains||(d.contains=[]),d.contains=[].concat(...d.contains.map(function(S){return VE(S==="self"?d:S)})),d.contains.forEach(function(S){s(S,_)}),d.starts&&s(d.starts,u),_.matcher=c(_),_}if(t.compilerExtensions||(t.compilerExtensions=[]),t.contains&&t.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return t.classNameAliases=Nn(t.classNameAliases||{}),s(t)}function Bm(t){return t?t.endsWithParent||Bm(t.starts):!1}function VE(t){return t.variants&&!t.cachedVariants&&(t.cachedVariants=t.variants.map(function(e){return Nn(t,{variants:null},e)})),t.cachedVariants?t.cachedVariants:Bm(t)?Nn(t,{starts:t.starts?Nn(t.starts):null}):Object.isFrozen(t)?Nn(t):t}var WE="11.11.1";class $E extends Error{constructor(e,a){super(e),this.name="HTMLInjectionError",this.html=a}}const Pa=Im,hu=Nn,Tu=Symbol("nomatch"),KE=7,Um=function(t){const e=Object.create(null),a=Object.create(null),o=[];let c=!0;const s="Could not find the language '{}', did you forget to load/include a language module?",d={disableAutodetect:!0,name:"Plain text",contains:[]};let u={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:oE};function _(W){return u.noHighlightRe.test(W)}function p(W){let te=W.className+" ";te+=W.parentNode?W.parentNode.className:"";const ue=u.languageDetectRe.exec(te);if(ue){const he=V(ue[1]);return he||(bu(s.replace("{}",ue[1])),bu("Falling back to no-highlight mode for this block.",W)),he?ue[1]:"no-highlight"}return te.split(/\s+/).find(he=>_(he)||V(he))}function S(W,te,ue){let he="",Ae="";typeof te=="object"?(he=W,ue=te.ignoreIllegals,Ae=te.language):(Un("10.7.0","highlight(lang, code, ...args) has been deprecated."),Un("10.7.0",`Please use highlight(code, options) instead.
+https://github.com/highlightjs/highlight.js/issues/2277`),Ae=W,he=te),ue===void 0&&(ue=!0);const re={code:he,language:Ae};be("before:highlight",re);const Xe=re.result?re.result:h(re.language,re.code,ue);return Xe.code=re.code,be("after:highlight",Xe),Xe}function h(W,te,ue,he){const Ae=Object.create(null);function re(j,se){return j.keywords[se]}function Xe(){if(!de.keywords){Ve.addText(ye);return}let j=0;de.keywordPatternRe.lastIndex=0;let se=de.keywordPatternRe.exec(ye),Ee="";for(;se;){Ee+=ye.substring(j,se.index);const Se=ht.case_insensitive?se[0].toLowerCase():se[0],Ze=re(de,Se);if(Ze){const[Et,An]=Ze;if(Ve.addText(Ee),Ee="",Ae[Se]=(Ae[Se]||0)+1,Ae[Se]<=KE&&(ln+=An),Et.startsWith("_"))Ee+=se[0];else{const vn=ht.classNameAliases[Et]||Et;Me(se[0],vn)}}else Ee+=se[0];j=de.keywordPatternRe.lastIndex,se=de.keywordPatternRe.exec(ye)}Ee+=ye.substring(j),Ve.addText(Ee)}function st(){if(ye==="")return;let j=null;if(typeof de.subLanguage=="string"){if(!e[de.subLanguage]){Ve.addText(ye);return}j=h(de.subLanguage,ye,!0,gt[de.subLanguage]),gt[de.subLanguage]=j._top}else j=O(ye,de.subLanguage.length?de.subLanguage:null);de.relevance>0&&(ln+=j.relevance),Ve.__addSublanguage(j._emitter,j.language)}function ve(){de.subLanguage!=null?st():Xe(),ye=""}function Me(j,se){j!==""&&(Ve.startScope(se),Ve.addText(j),Ve.endScope())}function Fe(j,se){let Ee=1;const Se=se.length-1;for(;Ee<=Se;){if(!j._emit[Ee]){Ee++;continue}const Ze=ht.classNameAliases[j[Ee]]||j[Ee],Et=se[Ee];Ze?Me(Et,Ze):(ye=Et,Xe(),ye=""),Ee++}}function we(j,se){return j.scope&&typeof j.scope=="string"&&Ve.openNode(ht.classNameAliases[j.scope]||j.scope),j.beginScope&&(j.beginScope._wrap?(Me(ye,ht.classNameAliases[j.beginScope._wrap]||j.beginScope._wrap),ye=""):j.beginScope._multi&&(Fe(j.beginScope,se),ye="")),de=Object.create(j,{parent:{value:de}}),de}function Ie(j,se,Ee){let Se=uE(j.endRe,Ee);if(Se){if(j["on:end"]){const Ze=new gu(j);j["on:end"](se,Ze),Ze.isMatchIgnored&&(Se=!1)}if(Se){for(;j.endsParent&&j.parent;)j=j.parent;return j}}if(j.endsWithParent)return Ie(j.parent,se,Ee)}function Be(j){return de.matcher.regexIndex===0?(ye+=j[0],1):(Ut=!0,0)}function je(j){const se=j[0],Ee=j.rule,Se=new gu(Ee),Ze=[Ee.__beforeBegin,Ee["on:begin"]];for(const Et of Ze)if(Et&&(Et(j,Se),Se.isMatchIgnored))return Be(se);return Ee.skip?ye+=se:(Ee.excludeBegin&&(ye+=se),ve(),!Ee.returnBegin&&!Ee.excludeBegin&&(ye=se)),we(Ee,j),Ee.returnBegin?0:se.length}function et(j){const se=j[0],Ee=te.substring(j.index),Se=Ie(de,j,Ee);if(!Se)return Tu;const Ze=de;de.endScope&&de.endScope._wrap?(ve(),Me(se,de.endScope._wrap)):de.endScope&&de.endScope._multi?(ve(),Fe(de.endScope,j)):Ze.skip?ye+=se:(Ze.returnEnd||Ze.excludeEnd||(ye+=se),ve(),Ze.excludeEnd&&(ye=se));do de.scope&&Ve.closeNode(),!de.skip&&!de.subLanguage&&(ln+=de.relevance),de=de.parent;while(de!==Se.parent);return Se.starts&&we(Se.starts,j),Ze.returnEnd?0:se.length}function ut(){const j=[];for(let se=de;se!==ht;se=se.parent)se.scope&&j.unshift(se.scope);j.forEach(se=>Ve.openNode(se))}let mt={};function En(j,se){const Ee=se&&se[0];if(ye+=j,Ee==null)return ve(),0;if(mt.type==="begin"&&se.type==="end"&&mt.index===se.index&&Ee===""){if(ye+=te.slice(se.index,se.index+1),!c){const Se=new Error(`0 width match regex (${W})`);throw Se.languageName=W,Se.badRule=mt.rule,Se}return 1}if(mt=se,se.type==="begin")return je(se);if(se.type==="illegal"&&!ue){const Se=new Error('Illegal lexeme "'+Ee+'" for mode "'+(de.scope||"")+'"');throw Se.mode=de,Se}else if(se.type==="end"){const Se=et(se);if(Se!==Tu)return Se}if(se.type==="illegal"&&Ee==="")return ye+=`
+`,1;if(Ht>1e5&&Ht>se.index*3)throw new Error("potential infinite loop, way more iterations than matches");return ye+=Ee,Ee.length}const ht=V(W);if(!ht)throw Mn(s.replace("{}",W)),new Error('Unknown language: "'+W+'"');const on=HE(ht);let sn="",de=he||on;const gt={},Ve=new u.__emitter(u);ut();let ye="",ln=0,Rt=0,Ht=0,Ut=!1;try{if(ht.__emitTokens)ht.__emitTokens(te,Ve);else{for(de.matcher.considerAll();;){Ht++,Ut?Ut=!1:de.matcher.considerAll(),de.matcher.lastIndex=Rt;const j=de.matcher.exec(te);if(!j)break;const se=te.substring(Rt,j.index),Ee=En(se,j);Rt=j.index+Ee}En(te.substring(Rt))}return Ve.finalize(),sn=Ve.toHTML(),{language:W,value:sn,relevance:ln,illegal:!1,_emitter:Ve,_top:de}}catch(j){if(j.message&&j.message.includes("Illegal"))return{language:W,value:Pa(te),illegal:!0,relevance:0,_illegalBy:{message:j.message,index:Rt,context:te.slice(Rt-100,Rt+100),mode:j.mode,resultSoFar:sn},_emitter:Ve};if(c)return{language:W,value:Pa(te),illegal:!1,relevance:0,errorRaised:j,_emitter:Ve,_top:de};throw j}}function y(W){const te={value:Pa(W),illegal:!1,relevance:0,_top:d,_emitter:new u.__emitter(u)};return te._emitter.addText(W),te}function O(W,te){te=te||u.languages||Object.keys(e);const ue=y(W),he=te.filter(V).filter(ce).map(ve=>h(ve,W,!1));he.unshift(ue);const Ae=he.sort((ve,Me)=>{if(ve.relevance!==Me.relevance)return Me.relevance-ve.relevance;if(ve.language&&Me.language){if(V(ve.language).supersetOf===Me.language)return 1;if(V(Me.language).supersetOf===ve.language)return-1}return 0}),[re,Xe]=Ae,st=re;return st.secondBest=Xe,st}function N(W,te,ue){const he=te&&a[te]||ue;W.classList.add("hljs"),W.classList.add(`language-${he}`)}function w(W){let te=null;const ue=p(W);if(_(ue))return;if(be("before:highlightElement",{el:W,language:ue}),W.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",W);return}if(W.children.length>0&&(u.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(W)),u.throwUnescapedHTML))throw new $E("One of your code blocks includes unescaped HTML.",W.innerHTML);te=W;const he=te.textContent,Ae=ue?S(he,{language:ue,ignoreIllegals:!0}):O(he);W.innerHTML=Ae.value,W.dataset.highlighted="yes",N(W,ue,Ae.language),W.result={language:Ae.language,re:Ae.relevance,relevance:Ae.relevance},Ae.secondBest&&(W.secondBest={language:Ae.secondBest.language,relevance:Ae.secondBest.relevance}),be("after:highlightElement",{el:W,result:Ae,text:he})}function L(W){u=hu(u,W)}const D=()=>{G(),Un("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function U(){G(),Un("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let x=!1;function G(){function W(){G()}if(document.readyState==="loading"){x||window.addEventListener("DOMContentLoaded",W,!1),x=!0;return}document.querySelectorAll(u.cssSelector).forEach(w)}function F(W,te){let ue=null;try{ue=te(t)}catch(he){if(Mn("Language definition for '{}' could not be registered.".replace("{}",W)),c)Mn(he);else throw he;ue=d}ue.name||(ue.name=W),e[W]=ue,ue.rawDefinition=te.bind(null,t),ue.aliases&&ee(ue.aliases,{languageName:W})}function z(W){delete e[W];for(const te of Object.keys(a))a[te]===W&&delete a[te]}function $(){return Object.keys(e)}function V(W){return W=(W||"").toLowerCase(),e[W]||e[a[W]]}function ee(W,{languageName:te}){typeof W=="string"&&(W=[W]),W.forEach(ue=>{a[ue.toLowerCase()]=te})}function ce(W){const te=V(W);return te&&!te.disableAutodetect}function ne(W){W["before:highlightBlock"]&&!W["before:highlightElement"]&&(W["before:highlightElement"]=te=>{W["before:highlightBlock"](Object.assign({block:te.el},te))}),W["after:highlightBlock"]&&!W["after:highlightElement"]&&(W["after:highlightElement"]=te=>{W["after:highlightBlock"](Object.assign({block:te.el},te))})}function me(W){ne(W),o.push(W)}function pe(W){const te=o.indexOf(W);te!==-1&&o.splice(te,1)}function be(W,te){const ue=W;o.forEach(function(he){he[ue]&&he[ue](te)})}function fe(W){return Un("10.7.0","highlightBlock will be removed entirely in v12.0"),Un("10.7.0","Please use highlightElement now."),w(W)}Object.assign(t,{highlight:S,highlightAuto:O,highlightAll:G,highlightElement:w,highlightBlock:fe,configure:L,initHighlighting:D,initHighlightingOnLoad:U,registerLanguage:F,unregisterLanguage:z,listLanguages:$,getLanguage:V,registerAliases:ee,autoDetection:ce,inherit:hu,addPlugin:me,removePlugin:pe}),t.debugMode=function(){c=!1},t.safeMode=function(){c=!0},t.versionString=WE,t.regex={concat:Ln,lookahead:Dm,either:Il,optional:lE,anyNumberOfTimes:sE};for(const W in wr)typeof wr[W]=="object"&&vm(wr[W]);return Object.assign(t,wr),t},Hn=Um({});Hn.newInstance=()=>Um({});var QE=Hn;Hn.HighlightJS=Hn;Hn.default=Hn;var Fa,Cu;function XE(){if(Cu)return Fa;Cu=1;function t(e){const a="[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+",s="далее "+"возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ",_="загрузитьизфайла "+"вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент ",O="разделительстраниц разделительстрок символтабуляции "+"ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон "+"acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища "+"wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ",Ae="webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля "+"автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени форматкартинки ширинаподчиненныхэлементовформы "+"виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента "+"авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных "+"использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц "+"отображениевремениэлементовпланировщика "+"типфайлаформатированногодокумента "+"обходрезультатазапроса типзаписизапроса "+"видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов "+"доступкфайлу режимдиалогавыборафайла режимоткрытияфайла "+"типизмеренияпостроителязапроса "+"видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений "+"wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs форматдатыjson экранированиесимволовjson "+"видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных использованиеусловногооформлениякомпоновкиданных "+"важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты статусразборапочтовогосообщения "+"режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации "+"расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии типхранилищасертификатовкриптографии "+"кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip режимсохраненияпутейzip уровеньсжатияzip "+"звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp "+"направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса "+"httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса типномерадокумента типномеразадачи типформы удалениедвижений "+"важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты",st="comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных "+"comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура фиксированноесоответствие фиксированныймассив ",ve="null истина ложь неопределено",Me=e.inherit(e.NUMBER_MODE),Fe={className:"string",begin:'"|\\|',end:'"|$',contains:[{begin:'""'}]},we={begin:"'",end:"'",excludeBegin:!0,excludeEnd:!0,contains:[{className:"number",begin:"\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}"}]},Ie={match:/[;()+\-:=,]/,className:"punctuation",relevance:0},Be=e.inherit(e.C_LINE_COMMENT_MODE),je={className:"meta",begin:"#|&",end:"$",keywords:{$pattern:a,keyword:s+_},contains:[Be]},et={className:"symbol",begin:"~",end:";|:",excludeEnd:!0},ut={className:"function",variants:[{begin:"процедура|функция",end:"\\)",keywords:"процедура функция"},{begin:"конецпроцедуры|конецфункции",keywords:"конецпроцедуры конецфункции"}],contains:[{begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"params",begin:a,end:",",excludeEnd:!0,endsWithParent:!0,keywords:{$pattern:a,keyword:"знач",literal:ve},contains:[Me,Fe,we]},Be]},e.inherit(e.TITLE_MODE,{begin:a})]};return{name:"1C:Enterprise",case_insensitive:!0,keywords:{$pattern:a,keyword:s,built_in:O,class:Ae,type:st,literal:ve},contains:[je,ut,Be,et,Me,Fe,we,Ie]}}return Fa=t,Fa}var Ba,Ru;function ZE(){if(Ru)return Ba;Ru=1;function t(e){const a=e.regex,o=/^[a-zA-Z][a-zA-Z0-9-]*/,c=["ALPHA","BIT","CHAR","CR","CRLF","CTL","DIGIT","DQUOTE","HEXDIG","HTAB","LF","LWSP","OCTET","SP","VCHAR","WSP"],s=e.COMMENT(/;/,/$/),d={scope:"symbol",match:/%b[0-1]+(-[0-1]+|(\.[0-1]+)+)?/},u={scope:"symbol",match:/%d[0-9]+(-[0-9]+|(\.[0-9]+)+)?/},_={scope:"symbol",match:/%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+)?/},p={scope:"symbol",match:/%[si](?=".*")/},S={scope:"attribute",match:a.concat(o,/(?=\s*=)/)};return{name:"Augmented Backus-Naur Form",illegal:/[!@#$^&',?+~`|:]/,keywords:c,contains:[{scope:"operator",match:/=\/?/},S,s,d,u,_,p,e.QUOTE_STRING_MODE,e.NUMBER_MODE]}}return Ba=t,Ba}var Ua,Nu;function JE(){if(Nu)return Ua;Nu=1;function t(e){const a=e.regex,o=["GET","POST","HEAD","PUT","DELETE","CONNECT","OPTIONS","PATCH","TRACE"];return{name:"Apache Access Log",contains:[{className:"number",begin:/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?\b/,relevance:5},{className:"number",begin:/\b\d+\b/,relevance:0},{className:"string",begin:a.concat(/"/,a.either(...o)),end:/"/,keywords:o,illegal:/\n/,relevance:5,contains:[{begin:/HTTP\/[12]\.\d'/,relevance:5}]},{className:"string",begin:/\[\d[^\]\n]{8,}\]/,illegal:/\n/,relevance:1},{className:"string",begin:/\[/,end:/\]/,illegal:/\n/,relevance:0},{className:"string",begin:/"Mozilla\/\d\.\d \(/,end:/"/,illegal:/\n/,relevance:3},{className:"string",begin:/"/,end:/"/,illegal:/\n/,relevance:0}]}}return Ua=t,Ua}var Ga,yu;function jE(){if(yu)return Ga;yu=1;function t(e){const a=e.regex,o=/[a-zA-Z_$][a-zA-Z0-9_$]*/,c=a.concat(o,a.concat("(\\.",o,")*")),s=/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/,d={className:"rest_arg",begin:/[.]{3}/,end:o,relevance:10};return{name:"ActionScript",aliases:["as"],keywords:{keyword:["as","break","case","catch","class","const","continue","default","delete","do","dynamic","each","else","extends","final","finally","for","function","get","if","implements","import","in","include","instanceof","interface","internal","is","namespace","native","new","override","package","private","protected","public","return","set","static","super","switch","this","throw","try","typeof","use","var","void","while","with"],literal:["true","false","null","undefined"]},contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{match:[/\bpackage/,/\s+/,c],className:{1:"keyword",3:"title.class"}},{match:[/\b(?:class|interface|extends|implements)/,/\s+/,o],className:{1:"keyword",3:"title.class"}},{className:"meta",beginKeywords:"import include",end:/;/,keywords:{keyword:"import include"}},{beginKeywords:"function",end:/[{;]/,excludeEnd:!0,illegal:/\S/,contains:[e.inherit(e.TITLE_MODE,{className:"title.function"}),{className:"params",begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,d]},{begin:a.concat(/:\s*/,s)}]},e.METHOD_GUARD],illegal:/#/}}return Ga=t,Ga}var Ya,Ou;function ef(){if(Ou)return Ya;Ou=1;function t(e){const a="\\d(_|\\d)*",o="[eE][-+]?"+a,c=a+"(\\."+a+")?("+o+")?",s="\\w+",u="\\b("+(a+"#"+s+"(\\."+s+")?#("+o+")?")+"|"+c+")",_="[A-Za-z](_?[A-Za-z0-9.])*",p=`[]\\{\\}%#'"`,S=e.COMMENT("--","$"),h={begin:"\\s+:\\s+",end:"\\s*(:=|;|\\)|=>|$)",illegal:p,contains:[{beginKeywords:"loop for declare others",endsParent:!0},{className:"keyword",beginKeywords:"not null constant access function procedure in out aliased exception"},{className:"type",begin:_,endsParent:!0,relevance:0}]};return{name:"Ada",case_insensitive:!0,keywords:{keyword:["abort","else","new","return","abs","elsif","not","reverse","abstract","end","accept","entry","select","access","exception","of","separate","aliased","exit","or","some","all","others","subtype","and","for","out","synchronized","array","function","overriding","at","tagged","generic","package","task","begin","goto","pragma","terminate","body","private","then","if","procedure","type","case","in","protected","constant","interface","is","raise","use","declare","range","delay","limited","record","when","delta","loop","rem","while","digits","renames","with","do","mod","requeue","xor"],literal:["True","False"]},contains:[S,{className:"string",begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{className:"string",begin:/'.'/},{className:"number",begin:u,relevance:0},{className:"symbol",begin:"'"+_},{className:"title",begin:"(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?",end:"(is|$)",keywords:"package body",excludeBegin:!0,excludeEnd:!0,illegal:p},{begin:"(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+",end:"(\\bis|\\bwith|\\brenames|\\)\\s*;)",keywords:"overriding function procedure with is renames return",returnBegin:!0,contains:[S,{className:"title",begin:"(\\bwith\\s+)?\\b(function|procedure)\\s+",end:"(\\(|\\s+|$)",excludeBegin:!0,excludeEnd:!0,illegal:p},h,{className:"type",begin:"\\breturn\\s+",end:"(\\s+|;|$)",keywords:"return",excludeBegin:!0,excludeEnd:!0,endsParent:!0,illegal:p}]},{className:"type",begin:"\\b(sub)?type\\s+",end:"\\s+",keywords:"type",excludeBegin:!0,illegal:p},h]}}return Ya=t,Ya}var qa,Au;function tf(){if(Au)return qa;Au=1;function t(e){const a={className:"built_in",begin:"\\b(void|bool|int8|int16|int32|int64|int|uint8|uint16|uint32|uint64|uint|string|ref|array|double|float|auto|dictionary)"},o={className:"symbol",begin:"[a-zA-Z0-9_]+@"},c={className:"keyword",begin:"<",end:">",contains:[a,o]};return a.contains=[c],o.contains=[c],{name:"AngelScript",aliases:["asc"],keywords:["for","in|0","break","continue","while","do|0","return","if","else","case","switch","namespace","is","cast","or","and","xor","not","get|0","in","inout|10","out","override","set|0","private","public","const","default|0","final","shared","external","mixin|10","enum","typedef","funcdef","this","super","import","from","interface","abstract|0","try","catch","protected","explicit","property"],illegal:"(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunction\\s*[^\\(])",contains:[{className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"""',end:'"""'},{className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE],relevance:0},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:"^\\s*\\[",end:"\\]"},{beginKeywords:"interface namespace",end:/\{/,illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]},{beginKeywords:"class",end:/\{/,illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+",contains:[{begin:"[:,]\\s*",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]}]}]},a,o,{className:"literal",begin:"\\b(null|true|false)"},{className:"number",relevance:0,begin:"(-?)(\\b0[xXbBoOdD][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)"}]}}return qa=t,qa}var za,vu;function nf(){if(vu)return za;vu=1;function t(e){const a={className:"number",begin:/[$%]\d+/},o={className:"number",begin:/\b\d+/},c={className:"number",begin:/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?/},s={className:"number",begin:/:\d{1,5}/};return{name:"Apache config",aliases:["apacheconf"],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"section",begin:/<\/?/,end:/>/,contains:[c,s,e.inherit(e.QUOTE_STRING_MODE,{relevance:0})]},{className:"attribute",begin:/\w+/,relevance:0,keywords:{_:["order","deny","allow","setenv","rewriterule","rewriteengine","rewritecond","documentroot","sethandler","errordocument","loadmodule","options","header","listen","serverroot","servername"]},starts:{end:/$/,relevance:0,keywords:{literal:"on off all deny allow"},contains:[{scope:"punctuation",match:/\\\n/},{className:"meta",begin:/\s\[/,end:/\]$/},{className:"variable",begin:/[\$%]\{/,end:/\}/,contains:["self",a]},c,o,e.QUOTE_STRING_MODE]}}],illegal:/\S/}}return za=t,za}var Ha,Iu;function rf(){if(Iu)return Ha;Iu=1;function t(e){const a=e.regex,o=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),c={className:"params",begin:/\(/,end:/\)/,contains:["self",e.C_NUMBER_MODE,o]},s=e.COMMENT(/--/,/$/),d=e.COMMENT(/\(\*/,/\*\)/,{contains:["self",s]}),u=[s,d,e.HASH_COMMENT_MODE],_=[/apart from/,/aside from/,/instead of/,/out of/,/greater than/,/isn't|(doesn't|does not) (equal|come before|come after|contain)/,/(greater|less) than( or equal)?/,/(starts?|ends|begins?) with/,/contained by/,/comes (before|after)/,/a (ref|reference)/,/POSIX (file|path)/,/(date|time) string/,/quoted form/],p=[/clipboard info/,/the clipboard/,/info for/,/list (disks|folder)/,/mount volume/,/path to/,/(close|open for) access/,/(get|set) eof/,/current date/,/do shell script/,/get volume settings/,/random number/,/set volume/,/system attribute/,/system info/,/time to GMT/,/(load|run|store) script/,/scripting components/,/ASCII (character|number)/,/localized string/,/choose (application|color|file|file name|folder|from list|remote application|URL)/,/display (alert|dialog)/];return{name:"AppleScript",aliases:["osascript"],keywords:{keyword:"about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without",literal:"AppleScript false linefeed return pi quote result space tab true",built_in:"alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name|0 paragraph paragraphs rest reverse running time version weekday word words year"},contains:[o,e.C_NUMBER_MODE,{className:"built_in",begin:a.concat(/\b/,a.either(...p),/\b/)},{className:"built_in",begin:/^\s*return\b/},{className:"literal",begin:/\b(text item delimiters|current application|missing value)\b/},{className:"keyword",begin:a.concat(/\b/,a.either(..._),/\b/)},{beginKeywords:"on",illegal:/[${=;\n]/,contains:[e.UNDERSCORE_TITLE_MODE,c]},...u],illegal:/\/\/|->|=>|\[\[/}}return Ha=t,Ha}var Va,Du;function af(){if(Du)return Va;Du=1;function t(e){const a=e.regex,o="[A-Za-z_][0-9A-Za-z_]*",c={keyword:["break","case","catch","continue","debugger","do","else","export","for","function","if","import","in","new","of","return","switch","try","var","void","while"],literal:["BackSlash","DoubleQuote","ForwardSlash","Infinity","NaN","NewLine","PI","SingleQuote","Tab","TextFormatting","false","null","true","undefined"],built_in:["Abs","Acos","All","Angle","Any","Area","AreaGeodetic","Array","Asin","Atan","Atan2","Attachments","Average","Back","Bearing","Boolean","Buffer","BufferGeodetic","Ceil","Centroid","ChangeTimeZone","Clip","Concatenate","Console","Constrain","Contains","ConvertDirection","ConvexHull","Cos","Count","Crosses","Cut","Date|0","DateAdd","DateDiff","DateOnly","Day","Decode","DefaultValue","Densify","DensifyGeodetic","Dictionary","Difference","Disjoint","Distance","DistanceGeodetic","DistanceToCoordinate","Distinct","Domain","DomainCode","DomainName","EnvelopeIntersects","Equals","Erase","Exp","Expects","Extent","Feature","FeatureInFilter","FeatureSet","FeatureSetByAssociation","FeatureSetById","FeatureSetByName","FeatureSetByPortalItem","FeatureSetByRelationshipClass","FeatureSetByRelationshipName","Filter","FilterBySubtypeCode","Find","First|0","Floor","FromCharCode","FromCodePoint","FromJSON","Front","GdbVersion","Generalize","Geometry","GetEnvironment","GetFeatureSet","GetFeatureSetInfo","GetUser","GroupBy","Guid","HasKey","HasValue","Hash","Hour","IIf","ISOMonth","ISOWeek","ISOWeekday","ISOYear","Includes","IndexOf","Insert","Intersection","Intersects","IsEmpty","IsNan","IsSelfIntersecting","IsSimple","KnowledgeGraphByPortalItem","Left|0","Length","Length3D","LengthGeodetic","Log","Lower","Map","Max","Mean","MeasureToCoordinate","Mid","Millisecond","Min","Minute","Month","MultiPartToSinglePart","Multipoint","NearestCoordinate","NearestVertex","NextSequenceValue","None","Now","Number","Offset","OrderBy","Overlaps","Point","PointToCoordinate","Polygon","Polyline","Pop","Portal","Pow","Proper","Push","QueryGraph","Random","Reduce","Relate","Replace","Resize","Reverse","Right|0","RingIsClockwise","Rotate","Round","Schema","Second","SetGeometry","Simplify","Sin","Slice","Sort","Splice","Split","Sqrt","StandardizeFilename","StandardizeGuid","Stdev","SubtypeCode","SubtypeName","Subtypes","Sum","SymmetricDifference","Tan","Text","Time","TimeZone","TimeZoneOffset","Timestamp","ToCharCode","ToCodePoint","ToHex","ToLocal","ToUTC","Today","Top|0","Touches","TrackAccelerationAt","TrackAccelerationWindow","TrackCurrentAcceleration","TrackCurrentDistance","TrackCurrentSpeed","TrackCurrentTime","TrackDistanceAt","TrackDistanceWindow","TrackDuration","TrackFieldWindow","TrackGeometryWindow","TrackIndex","TrackSpeedAt","TrackSpeedWindow","TrackStartTime","TrackWindow","Trim","TypeOf","Union","Upper","UrlEncode","Variance","Week","Weekday","When|0","Within","Year|0"]},s=["aggregatedFeatures","analytic","config","datapoint","datastore","editcontext","feature","featureSet","feedfeature","fencefeature","fencenotificationtype","graph","join","layer","locationupdate","map","measure","measure","originalFeature","record","reference","rowindex","sourcedatastore","sourcefeature","sourcelayer","target","targetdatastore","targetfeature","targetlayer","userInput","value","variables","view"],d={className:"symbol",begin:"\\$"+a.either(...s)},u={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},_={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},p={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,_]};_.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,u,e.REGEXP_MODE];const S=_.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{name:"ArcGIS Arcade",case_insensitive:!0,keywords:c,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,d,u,{begin:/[{,]\s*/,relevance:0,contains:[{begin:o+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:o,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(return)\\b)\\s*",keywords:"return",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+o+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:o},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:S}]}]}],relevance:0},{beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{className:"title.function",begin:o}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:S}],illegal:/\[|%/},{begin:/\$[(.]/}],illegal:/#(?!!)/}}return Va=t,Va}var Wa,xu;function of(){if(xu)return Wa;xu=1;function t(a){const o=a.regex,c=a.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",d="[a-zA-Z_]\\w*::",_="(?!struct)("+s+"|"+o.optional(d)+"[a-zA-Z_]\\w*"+o.optional("<[^<>]+>")+")",p={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},h={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[a.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},a.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},y={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},O={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},a.inherit(h,{className:"string"}),{className:"string",begin:/<.*?>/},c,a.C_BLOCK_COMMENT_MODE]},N={className:"title",begin:o.optional(d)+a.IDENT_RE,relevance:0},w=o.optional(d)+a.IDENT_RE+"\\s*\\(",L=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],D=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],U=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],x=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],z={type:D,keyword:L,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:U},$={className:"function.dispatch",relevance:0,keywords:{_hint:x},begin:o.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,a.IDENT_RE,o.lookahead(/(<[^<>]+>|)\s*\(/))},V=[$,O,p,c,a.C_BLOCK_COMMENT_MODE,y,h],ee={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:z,contains:V.concat([{begin:/\(/,end:/\)/,keywords:z,contains:V.concat(["self"]),relevance:0}]),relevance:0},ce={className:"function",begin:"("+_+"[\\*&\\s]+)+"+w,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:z,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:z,relevance:0},{begin:w,returnBegin:!0,contains:[N],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[h,y]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:z,relevance:0,contains:[c,a.C_BLOCK_COMMENT_MODE,h,y,p,{begin:/\(/,end:/\)/,keywords:z,relevance:0,contains:["self",c,a.C_BLOCK_COMMENT_MODE,h,y,p]}]},p,c,a.C_BLOCK_COMMENT_MODE,O]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:z,illegal:"",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(ee,ce,$,V,[O,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:z,contains:["self",p]},{begin:a.IDENT_RE+"::",keywords:z},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}function e(a){const o={type:["boolean","byte","word","String"],built_in:["KeyboardController","MouseController","SoftwareSerial","EthernetServer","EthernetClient","LiquidCrystal","RobotControl","GSMVoiceCall","EthernetUDP","EsploraTFT","HttpClient","RobotMotor","WiFiClient","GSMScanner","FileSystem","Scheduler","GSMServer","YunClient","YunServer","IPAddress","GSMClient","GSMModem","Keyboard","Ethernet","Console","GSMBand","Esplora","Stepper","Process","WiFiUDP","GSM_SMS","Mailbox","USBHost","Firmata","PImage","Client","Server","GSMPIN","FileIO","Bridge","Serial","EEPROM","Stream","Mouse","Audio","Servo","File","Task","GPRS","WiFi","Wire","TFT","GSM","SPI","SD"],_hints:["setup","loop","runShellCommandAsynchronously","analogWriteResolution","retrieveCallingNumber","printFirmwareVersion","analogReadResolution","sendDigitalPortPair","noListenOnLocalhost","readJoystickButton","setFirmwareVersion","readJoystickSwitch","scrollDisplayRight","getVoiceCallStatus","scrollDisplayLeft","writeMicroseconds","delayMicroseconds","beginTransmission","getSignalStrength","runAsynchronously","getAsynchronously","listenOnLocalhost","getCurrentCarrier","readAccelerometer","messageAvailable","sendDigitalPorts","lineFollowConfig","countryNameWrite","runShellCommand","readStringUntil","rewindDirectory","readTemperature","setClockDivider","readLightSensor","endTransmission","analogReference","detachInterrupt","countryNameRead","attachInterrupt","encryptionType","readBytesUntil","robotNameWrite","readMicrophone","robotNameRead","cityNameWrite","userNameWrite","readJoystickY","readJoystickX","mouseReleased","openNextFile","scanNetworks","noInterrupts","digitalWrite","beginSpeaker","mousePressed","isActionDone","mouseDragged","displayLogos","noAutoscroll","addParameter","remoteNumber","getModifiers","keyboardRead","userNameRead","waitContinue","processInput","parseCommand","printVersion","readNetworks","writeMessage","blinkVersion","cityNameRead","readMessage","setDataMode","parsePacket","isListening","setBitOrder","beginPacket","isDirectory","motorsWrite","drawCompass","digitalRead","clearScreen","serialEvent","rightToLeft","setTextSize","leftToRight","requestFrom","keyReleased","compassRead","analogWrite","interrupts","WiFiServer","disconnect","playMelody","parseFloat","autoscroll","getPINUsed","setPINUsed","setTimeout","sendAnalog","readSlider","analogRead","beginWrite","createChar","motorsStop","keyPressed","tempoWrite","readButton","subnetMask","debugPrint","macAddress","writeGreen","randomSeed","attachGPRS","readString","sendString","remotePort","releaseAll","mouseMoved","background","getXChange","getYChange","answerCall","getResult","voiceCall","endPacket","constrain","getSocket","writeJSON","getButton","available","connected","findUntil","readBytes","exitValue","readGreen","writeBlue","startLoop","IPAddress","isPressed","sendSysex","pauseMode","gatewayIP","setCursor","getOemKey","tuneWrite","noDisplay","loadImage","switchPIN","onRequest","onReceive","changePIN","playFile","noBuffer","parseInt","overflow","checkPIN","knobRead","beginTFT","bitClear","updateIR","bitWrite","position","writeRGB","highByte","writeRed","setSpeed","readBlue","noStroke","remoteIP","transfer","shutdown","hangCall","beginSMS","endWrite","attached","maintain","noCursor","checkReg","checkPUK","shiftOut","isValid","shiftIn","pulseIn","connect","println","localIP","pinMode","getIMEI","display","noBlink","process","getBand","running","beginSD","drawBMP","lowByte","setBand","release","bitRead","prepare","pointTo","readRed","setMode","noFill","remove","listen","stroke","detach","attach","noTone","exists","buffer","height","bitSet","circle","config","cursor","random","IRread","setDNS","endSMS","getKey","micros","millis","begin","print","write","ready","flush","width","isPIN","blink","clear","press","mkdir","rmdir","close","point","yield","image","BSSID","click","delay","read","text","move","peek","beep","rect","line","open","seek","fill","size","turn","stop","home","find","step","tone","sqrt","RSSI","SSID","end","bit","tan","cos","sin","pow","map","abs","max","min","get","run","put"],literal:["DIGITAL_MESSAGE","FIRMATA_STRING","ANALOG_MESSAGE","REPORT_DIGITAL","REPORT_ANALOG","INPUT_PULLUP","SET_PIN_MODE","INTERNAL2V56","SYSTEM_RESET","LED_BUILTIN","INTERNAL1V1","SYSEX_START","INTERNAL","EXTERNAL","DEFAULT","OUTPUT","INPUT","HIGH","LOW"]},c=t(a),s=c.keywords;return s.type=[...s.type,...o.type],s.literal=[...s.literal,...o.literal],s.built_in=[...s.built_in,...o.built_in],s._hints=o._hints,c.name="Arduino",c.aliases=["ino"],c.supersetOf="cpp",c}return Wa=e,Wa}var $a,Mu;function sf(){if(Mu)return $a;Mu=1;function t(e){const a={variants:[e.COMMENT("^[ \\t]*(?=#)","$",{relevance:0,excludeBegin:!0}),e.COMMENT("[;@]","$",{relevance:0}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]};return{name:"ARM Assembly",case_insensitive:!0,aliases:["arm"],keywords:{$pattern:"\\.?"+e.IDENT_RE,meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 w0 w1 w2 w3 w4 w5 w6 w7 w8 w9 w10 w11 w12 w13 w14 w15 w16 w17 w18 w19 w20 w21 w22 w23 w24 w25 w26 w27 w28 w29 w30 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @"},contains:[{className:"keyword",begin:"\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?(?=\\s)"},a,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"[#$=]?0x[0-9a-f]+"},{begin:"[#$=]?0b[01]+"},{begin:"[#$=]\\d+"},{begin:"\\b\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^[ \\t]*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^[a-z_\\.\\$][a-z0-9_\\.\\$]+"},{begin:"[=#]\\w+"}],relevance:0}]}}return $a=t,$a}var Ka,wu;function lf(){if(wu)return Ka;wu=1;function t(e){const a=e.regex,o=a.concat(/[\p{L}_]/u,a.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),c=/[\p{L}0-9._:-]+/u,s={className:"symbol",begin:/&[a-z]+;|[0-9]+;|[a-f0-9]+;/},d={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},u=e.inherit(d,{begin:/\(/,end:/\)/}),_=e.inherit(e.APOS_STRING_MODE,{className:"string"}),p=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),S={endsWithParent:!0,illegal:/,relevance:0,contains:[{className:"attr",begin:c,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[s]},{begin:/'/,end:/'/,contains:[s]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[d,p,_,u,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[d,u,p,_]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},s,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[p]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/